aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew McDermott <andrew.mcdermott@linaro.org>2013-07-15 17:14:18 +0100
committerAndrew McDermott <andrew.mcdermott@linaro.org>2013-07-15 17:15:10 +0100
commit2ba389a02482c5c81ce31f60ed7a49ab340f5b0c (patch)
treee0385dfbea7784f0cfc306375d818033aca4bd75
initial import
-rw-r--r--.classpath7
-rw-r--r--.cvsignore23
-rw-r--r--.externalToolBuilders/CVS/Entries5
-rw-r--r--.externalToolBuilders/CVS/Repository1
-rw-r--r--.externalToolBuilders/CVS/Root1
-rw-r--r--.externalToolBuilders/ConfigureMauve.launch12
-rw-r--r--.externalToolBuilders/Mauve Harness.launch24
-rw-r--r--.externalToolBuilders/MauveBatchRun.launch18
-rw-r--r--.externalToolBuilders/MauveTestlet.launch2
-rw-r--r--.project27
-rw-r--r--.settings/CVS/Entries3
-rw-r--r--.settings/CVS/Repository1
-rw-r--r--.settings/CVS/Root1
-rw-r--r--.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--.settings/org.eclipse.jdt.ui.prefs4
-rw-r--r--COPYING340
-rw-r--r--CVS/Entries22
-rw-r--r--CVS/Entries.Log5
-rw-r--r--CVS/Repository1
-rw-r--r--CVS/Root1
-rw-r--r--ChangeLog20803
-rw-r--r--Compat2.tmpbin0 -> 205 bytes
-rw-r--r--Harness.java1881
-rw-r--r--LibraryPath.java6
-rw-r--r--Makefile562
-rw-r--r--Makefile.am44
-rw-r--r--Makefile.in562
-rw-r--r--README313
-rw-r--r--README.PKITS21
-rw-r--r--RunnerProcess.java1042
-rw-r--r--THANKS21
-rw-r--r--acinclude.m431
-rw-r--r--aclocal.m4991
-rw-r--r--autom4te.cache/output.04879
-rw-r--r--autom4te.cache/output.14879
-rw-r--r--autom4te.cache/requests148
-rw-r--r--autom4te.cache/traces.0406
-rw-r--r--autom4te.cache/traces.1826
-rwxr-xr-xconfig.guess1313
-rw-r--r--config.log338
-rwxr-xr-xconfig.status1068
-rwxr-xr-xconfig.sub1434
-rwxr-xr-xconfigure4879
-rw-r--r--configure.in90
-rw-r--r--dataoutput.outbin0 -> 113 bytes
-rw-r--r--dataoutput2.outbin0 -> 61 bytes
-rw-r--r--frozen_serialbin0 -> 93 bytes
-rw-r--r--gnu/CVS/Entries1
-rw-r--r--gnu/CVS/Entries.Log2
-rw-r--r--gnu/CVS/Repository1
-rw-r--r--gnu/CVS/Root1
-rw-r--r--gnu/anttask/CVS/Entries3
-rw-r--r--gnu/anttask/CVS/Repository1
-rw-r--r--gnu/anttask/CVS/Root1
-rw-r--r--gnu/anttask/RunTests.java221
-rw-r--r--gnu/anttask/Tags.java72
-rw-r--r--gnu/testlet/.cvsignore2
-rw-r--r--gnu/testlet/BinaryCompatibility/.cvsignore4
-rw-r--r--gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java83
-rw-r--r--gnu/testlet/BinaryCompatibility/CVS/Entries51
-rw-r--r--gnu/testlet/BinaryCompatibility/CVS/Entries.Log1
-rw-r--r--gnu/testlet/BinaryCompatibility/CVS/Repository1
-rw-r--r--gnu/testlet/BinaryCompatibility/CVS/Root1
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/CVS/Entries24
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/CVS/Repository1
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/CVS/Root1
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_01_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_02_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_03_sub.java36
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_04_interface.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_04_sub.java33
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_05_interface.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_06_interface.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_06_sub.java32
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_07_sub.java34
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_08_sub.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_09_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_10_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_11_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_12_sub.java42
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_13_sub.java34
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_13_sub1.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_14_sub.java38
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_15_interface3.java25
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_16_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_16_sub1.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_17_interface.java27
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_17_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/altered/bin_18_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_01.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_01.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_01.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_01_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_02.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_02.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_02.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_02_sub.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_03.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_03.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_03.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_03_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_04.java34
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_04.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_04.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_04_interface.java28
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_04_sub.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_05.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_05.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_05.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_05_interface.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_05_sub.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_06.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_06.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_06.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_06_interface.java28
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_06_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_07.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_07.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_07.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_07_sub.java39
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_08.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_08.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_08.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_08_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_09.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_09.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_09.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_09_sub.java32
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_10.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_10.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_10.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_10_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_11.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_11.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_11.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_11_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_12.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_12.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_12.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_12_sub.java42
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_13.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_13.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_13.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_13_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_13_sub1.java26
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14_interface1.java26
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14_interface2.java26
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_14_sub.java38
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15_interface1.java26
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15_interface2.java26
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15_interface3.java25
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_15_sub.java38
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_16.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_16.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_16.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_16_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_17.java29
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_17.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_17.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_17_sub.java30
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_18.java31
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_18.out10
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_18.out20
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_18_sub.java35
-rw-r--r--gnu/testlet/BinaryCompatibility/bin_18_sub1.java31
-rwxr-xr-xgnu/testlet/BinaryCompatibility/foo69
-rw-r--r--gnu/testlet/BinaryCompatibility/tests18
-rw-r--r--gnu/testlet/CVS/Entries11
-rw-r--r--gnu/testlet/CVS/Entries.Log7
-rw-r--r--gnu/testlet/CVS/Repository1
-rw-r--r--gnu/testlet/CVS/Root1
-rw-r--r--gnu/testlet/ResourceNotFoundException.java36
-rw-r--r--gnu/testlet/SingleTestHarness.java164
-rw-r--r--gnu/testlet/TestHarness.java339
-rw-r--r--gnu/testlet/TestReport.java153
-rw-r--r--gnu/testlet/TestResult.java170
-rw-r--r--gnu/testlet/TestSecurityManager.java386
-rw-r--r--gnu/testlet/Testlet.java27
-rw-r--r--gnu/testlet/VisualTestlet.java131
-rw-r--r--gnu/testlet/config.java48
-rw-r--r--gnu/testlet/config.java.in48
-rw-r--r--gnu/testlet/gnu/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/java/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/java/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/java/security/CVS/Entries.Log5
-rw-r--r--gnu/testlet/gnu/java/security/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/TestOfPR28678.java798
-rw-r--r--gnu/testlet/gnu/java/security/hash/CVS/Entries14
-rw-r--r--gnu/testlet/gnu/java/security/hash/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/hash/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfHashFactory.java59
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfHaval.java183
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfMD2.java163
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfMD4.java163
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfMD5.java163
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfRipeMD128.java129
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfRipeMD160.java129
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfSha160.java69
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfSha256.java70
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfSha384.java71
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfSha512.java72
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfTiger.java891
-rw-r--r--gnu/testlet/gnu/java/security/hash/TestOfWhirlpool.java179
-rw-r--r--gnu/testlet/gnu/java/security/jce/CVS/Entries10
-rw-r--r--gnu/testlet/gnu/java/security/jce/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/jce/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java104
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java242
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfFormat.java203
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfHttps.java68
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java306
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java190
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfMessageDigest.java158
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfProvider.java162
-rw-r--r--gnu/testlet/gnu/java/security/jce/TestOfSignature.java163
-rw-r--r--gnu/testlet/gnu/java/security/key/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/java/security/key/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/java/security/key/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/key/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/key/TestOfKeyPairCodecFactory.java87
-rw-r--r--gnu/testlet/gnu/java/security/key/TestOfKeyPairGeneratorFactory.java60
-rw-r--r--gnu/testlet/gnu/java/security/key/dss/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/java/security/key/dss/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/key/dss/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java185
-rw-r--r--gnu/testlet/gnu/java/security/key/dss/TestOfDSSKeyGeneration.java78
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java100
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/TestOfRSACodec.java182
-rw-r--r--gnu/testlet/gnu/java/security/key/rsa/TestOfRSAKeyGeneration.java201
-rw-r--r--gnu/testlet/gnu/java/security/sig/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/java/security/sig/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/java/security/sig/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/sig/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/sig/TestOfSignatureCodecFactory.java124
-rw-r--r--gnu/testlet/gnu/java/security/sig/TestOfSignatureFactory.java60
-rw-r--r--gnu/testlet/gnu/java/security/sig/dss/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/java/security/sig/dss/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/sig/dss/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignature.java103
-rw-r--r--gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java144
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPKCS1V1_5Signature.java102
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPSSSignature.java161
-rw-r--r--gnu/testlet/gnu/java/security/sig/rsa/TestOfRSASignatureCodec.java121
-rw-r--r--gnu/testlet/gnu/java/security/util/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/java/security/util/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/java/security/util/CVS/Root1
-rw-r--r--gnu/testlet/gnu/java/security/util/TestOfIntegerUtil.java102
-rw-r--r--gnu/testlet/gnu/javax/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/javax/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/crypto/CVS/Entries.Log11
-rw-r--r--gnu/testlet/gnu/javax/crypto/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/assembly/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/javax/crypto/assembly/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/assembly/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/assembly/TestOfAssembly.java183
-rw-r--r--gnu/testlet/gnu/javax/crypto/assembly/TestOfCascade.java188
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/BaseCipherTestCase.java477
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/CVS/Entries14
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfAnubis.java236
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfBlowfish.java148
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfCast5.java121
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfCipherFactory.java60
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfDES.java375
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfKhazad.java108
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfNullCipher.java57
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfRijndael.java236
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfSerpent.java243
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfSquare.java120
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfTripleDES.java240
-rw-r--r--gnu/testlet/gnu/javax/crypto/cipher/TestOfTwofish.java237
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/CVS/Entries15
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfCipher.java360
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java367
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfCipherOutputStream.java135
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfCipherWrapUnwrap.java397
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement.java136
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement2.java218
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyFactory.java102
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfMac.java266
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfOtherProviders.java97
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfPR25981.java62
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfPR27228.java70
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfPR27849.java82
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java117
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/TestOfTripleDESParityAdjustment.java46
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/jce/keyring/TestOfKeystore.java226
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHCodec.java179
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyAgreements.java286
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyGeneration.java77
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRP6KeyAgreements.java455
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPCodec.java124
-rw-r--r--gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java77
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/TestOfGnuPrivateKeyring.java180
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/TestOfPrivateKeyring.java834
-rw-r--r--gnu/testlet/gnu/javax/crypto/keyring/TestOfPublicKeyring.java440
-rw-r--r--gnu/testlet/gnu/javax/crypto/kwa/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/javax/crypto/kwa/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/kwa/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/kwa/TestOfAESKeyWrap.java240
-rw-r--r--gnu/testlet/gnu/javax/crypto/kwa/TestOfTripleDESKeyWrap.java134
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/CVS/Entries9
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfHMac.java132
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfHMacCloneability.java147
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfHMacFactory.java60
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfHMacMD5.java134
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfHMacSha1.java131
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfMacFactory.java60
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfOMAC.java176
-rw-r--r--gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java179
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/CVS/Entries7
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfCBC.java259
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfCFB.java850
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfEAX.java163
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfECB.java254
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfModeFactory.java78
-rw-r--r--gnu/testlet/gnu/javax/crypto/mode/TestOfOFB.java262
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/CVS/Entries5
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/TestOfISO10126.java88
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/TestOfPKCS7.java50
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/TestOfPadFactory.java59
-rw-r--r--gnu/testlet/gnu/javax/crypto/pad/TestOfTBC.java50
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/CVS/Entries5
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/TestOfARCFour.java208
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/TestOfICMGenerator.java186
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/TestOfPBKDF2.java209
-rw-r--r--gnu/testlet/gnu/javax/crypto/prng/TestOfPRNGFactory.java59
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries3
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/TestOfClientFactory.java155
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/TestOfServerFactory.java156
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Entries4
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPAuthInfoProvider.java273
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPasswordFile.java194
-rw-r--r--gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPrimitives.java233
-rw-r--r--gnu/testlet/gnu/javax/swing/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/swing/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries.Log1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries.Log2
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Entries13
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java120
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java127
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java283
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java158
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java101
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java131
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java142
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java112
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java126
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java85
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java87
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java144
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/Buffer_Test.java60
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries.Log3
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/Constants_Test.java82
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Entries2
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Repository1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Root1
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/ReaderTokenizer_Test.java160
-rw-r--r--gnu/testlet/java/.cvsignore1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/CVS/Entries1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/CVS/Repository1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/CVS/Root1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/altered/CVS/Entries1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/altered/CVS/Repository1
-rw-r--r--gnu/testlet/java/BinaryCompatibility/altered/CVS/Root1
-rw-r--r--gnu/testlet/java/CVS/Entries2
-rw-r--r--gnu/testlet/java/CVS/Entries.Log13
-rw-r--r--gnu/testlet/java/CVS/Repository1
-rw-r--r--gnu/testlet/java/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTError/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/AWTError/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AWTError/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTError/constructor.java66
-rw-r--r--gnu/testlet/java/awt/AWTEvent/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/AWTEvent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AWTEvent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTEvent/constants.java61
-rw-r--r--gnu/testlet/java/awt/AWTException/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/AWTException/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AWTException/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTException/constructor.java66
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/equals.java70
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java158
-rw-r--r--gnu/testlet/java/awt/AWTKeyStroke/serialization.java71
-rw-r--r--gnu/testlet/java/awt/AWTPermission/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/AWTPermission/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AWTPermission/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AWTPermission/constructor.java89
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/equals.java51
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/getInstance.java164
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/getInstance14.java59
-rw-r--r--gnu/testlet/java/awt/AlphaComposite/getRule.java46
-rw-r--r--gnu/testlet/java/awt/BasicStroke/CVS/Entries17
-rw-r--r--gnu/testlet/java/awt/BasicStroke/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/BasicStroke/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/BasicStroke/constants.java47
-rw-r--r--gnu/testlet/java/awt/BasicStroke/constructors.java290
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DDouble.java69
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DFloat.java69
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapePolygon.java74
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle.java70
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DDouble.java71
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DFloat.java71
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DDouble.java75
-rw-r--r--gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DFloat.java75
-rw-r--r--gnu/testlet/java/awt/BasicStroke/equals.java74
-rw-r--r--gnu/testlet/java/awt/BasicStroke/getEndCap.java203
-rw-r--r--gnu/testlet/java/awt/BasicStroke/getLineJoin.java204
-rw-r--r--gnu/testlet/java/awt/BasicStroke/getLineWidth.java125
-rw-r--r--gnu/testlet/java/awt/BasicStroke/getMiterLimit.java298
-rw-r--r--gnu/testlet/java/awt/BasicStroke/hashCode.java76
-rw-r--r--gnu/testlet/java/awt/BorderLayout/CVS/Entries22
-rw-r--r--gnu/testlet/java/awt/BorderLayout/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/BorderLayout/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java326
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java307
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java327
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java240
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java248
-rw-r--r--gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java306
-rw-r--r--gnu/testlet/java/awt/BorderLayout/Test15.java112
-rw-r--r--gnu/testlet/java/awt/BorderLayout/addLayoutComponent.java79
-rw-r--r--gnu/testlet/java/awt/BorderLayout/constants.java57
-rw-r--r--gnu/testlet/java/awt/BorderLayout/constructors.java70
-rw-r--r--gnu/testlet/java/awt/BorderLayout/getHgap.java49
-rw-r--r--gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java51
-rw-r--r--gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java51
-rw-r--r--gnu/testlet/java/awt/BorderLayout/getVgap.java49
-rw-r--r--gnu/testlet/java/awt/BorderLayout/layoutContainer.java296
-rw-r--r--gnu/testlet/java/awt/BorderLayout/maxLayoutSize.java74
-rw-r--r--gnu/testlet/java/awt/BorderLayout/preferredLayoutSize.java393
-rw-r--r--gnu/testlet/java/awt/BorderLayout/removeLayoutComponent.java125
-rw-r--r--gnu/testlet/java/awt/BorderLayout/setHgap.java49
-rw-r--r--gnu/testlet/java/awt/BorderLayout/setVgap.java49
-rw-r--r--gnu/testlet/java/awt/BorderLayout/toString.java57
-rw-r--r--gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java121
-rw-r--r--gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java121
-rw-r--r--gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java123
-rw-r--r--gnu/testlet/java/awt/Button/CVS/Entries26
-rw-r--r--gnu/testlet/java/awt/Button/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Button/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Button/KeyboardListenerAsciiKeys.java181
-rw-r--r--gnu/testlet/java/awt/Button/KeyboardListenerCursorKeys.java176
-rw-r--r--gnu/testlet/java/awt/Button/KeyboardListenerFunctionKeys.java180
-rw-r--r--gnu/testlet/java/awt/Button/KeyboardListenerTest.java145
-rw-r--r--gnu/testlet/java/awt/Button/MouseListenerTest.java206
-rw-r--r--gnu/testlet/java/awt/Button/MouseMotionListenerTest.java175
-rw-r--r--gnu/testlet/java/awt/Button/MouseWheelListenerTest.java135
-rw-r--r--gnu/testlet/java/awt/Button/PaintTest.java112
-rw-r--r--gnu/testlet/java/awt/Button/addActionListener.java82
-rw-r--r--gnu/testlet/java/awt/Button/addComponentListener.java97
-rw-r--r--gnu/testlet/java/awt/Button/addFocusListener.java88
-rw-r--r--gnu/testlet/java/awt/Button/addHierarchyBoundsListener.java88
-rw-r--r--gnu/testlet/java/awt/Button/addHierarchyListener.java83
-rw-r--r--gnu/testlet/java/awt/Button/addInputMethodListener.java88
-rw-r--r--gnu/testlet/java/awt/Button/addKeyListener.java93
-rw-r--r--gnu/testlet/java/awt/Button/addMouseListener.java103
-rw-r--r--gnu/testlet/java/awt/Button/addMouseMotionListener.java88
-rw-r--r--gnu/testlet/java/awt/Button/addMouseWheelListener.java83
-rw-r--r--gnu/testlet/java/awt/Button/addPropertyChangeListener.java80
-rw-r--r--gnu/testlet/java/awt/Button/addPropertyChangeListenerString.java80
-rw-r--r--gnu/testlet/java/awt/Button/constructors.java64
-rw-r--r--gnu/testlet/java/awt/Button/list.java56
-rw-r--r--gnu/testlet/java/awt/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/CVS/Entries.Log66
-rw-r--r--gnu/testlet/java/awt/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Canvas/CVS/Entries18
-rw-r--r--gnu/testlet/java/awt/Canvas/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Canvas/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Canvas/MouseListenerTest.java207
-rw-r--r--gnu/testlet/java/awt/Canvas/MouseMotionListenerTest.java176
-rw-r--r--gnu/testlet/java/awt/Canvas/MouseWheelListenerTest.java136
-rw-r--r--gnu/testlet/java/awt/Canvas/PaintTest.java116
-rw-r--r--gnu/testlet/java/awt/Canvas/addComponentListener.java97
-rw-r--r--gnu/testlet/java/awt/Canvas/addFocusListener.java88
-rw-r--r--gnu/testlet/java/awt/Canvas/addHierarchyBoundsListener.java88
-rw-r--r--gnu/testlet/java/awt/Canvas/addHierarchyListener.java83
-rw-r--r--gnu/testlet/java/awt/Canvas/addInputMethodListener.java88
-rw-r--r--gnu/testlet/java/awt/Canvas/addKeyListener.java93
-rw-r--r--gnu/testlet/java/awt/Canvas/addMouseListener.java103
-rw-r--r--gnu/testlet/java/awt/Canvas/addMouseMotionListener.java88
-rw-r--r--gnu/testlet/java/awt/Canvas/addMouseWheelListener.java83
-rw-r--r--gnu/testlet/java/awt/Canvas/addPropertyChangeListener.java80
-rw-r--r--gnu/testlet/java/awt/Canvas/addPropertyChangeListenerString.java80
-rw-r--r--gnu/testlet/java/awt/Canvas/constructors.java46
-rw-r--r--gnu/testlet/java/awt/Canvas/list.java49
-rw-r--r--gnu/testlet/java/awt/CardLayout/CVS/Entries20
-rw-r--r--gnu/testlet/java/awt/CardLayout/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/CardLayout/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTest.java379
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTestBiggerGaps.java389
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTestBiggerHGap.java389
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTestBiggerVGap.java389
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTestFirstNextComb.java411
-rw-r--r--gnu/testlet/java/awt/CardLayout/PaintTestZeroGaps.java389
-rw-r--r--gnu/testlet/java/awt/CardLayout/addLayoutComponent.java115
-rw-r--r--gnu/testlet/java/awt/CardLayout/first.java96
-rw-r--r--gnu/testlet/java/awt/CardLayout/getHgap.java51
-rw-r--r--gnu/testlet/java/awt/CardLayout/getLayoutAlignmentX.java61
-rw-r--r--gnu/testlet/java/awt/CardLayout/getLayoutAlignmentY.java61
-rw-r--r--gnu/testlet/java/awt/CardLayout/getVgap.java51
-rw-r--r--gnu/testlet/java/awt/CardLayout/removeLayoutComponent.java115
-rw-r--r--gnu/testlet/java/awt/CardLayout/setHgap.java51
-rw-r--r--gnu/testlet/java/awt/CardLayout/setVgap.java51
-rw-r--r--gnu/testlet/java/awt/CardLayout/show.java132
-rw-r--r--gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java48
-rw-r--r--gnu/testlet/java/awt/CardLayout/testMinimumLayoutSize.java49
-rw-r--r--gnu/testlet/java/awt/CardLayout/toString.java54
-rw-r--r--gnu/testlet/java/awt/Checkbox/CVS/Entries26
-rw-r--r--gnu/testlet/java/awt/Checkbox/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Checkbox/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest1.java121
-rw-r--r--gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest2.java121
-rw-r--r--gnu/testlet/java/awt/Checkbox/ItemListenerPositiveTest.java121
-rw-r--r--gnu/testlet/java/awt/Checkbox/KeyboardListenerAsciiKeys.java181
-rw-r--r--gnu/testlet/java/awt/Checkbox/KeyboardListenerCursorKeys.java176
-rw-r--r--gnu/testlet/java/awt/Checkbox/KeyboardListenerFunctionKeys.java180
-rw-r--r--gnu/testlet/java/awt/Checkbox/KeyboardListenerTest.java145
-rw-r--r--gnu/testlet/java/awt/Checkbox/MouseListenerTest.java206
-rw-r--r--gnu/testlet/java/awt/Checkbox/MouseMotionListenerTest.java175
-rw-r--r--gnu/testlet/java/awt/Checkbox/MouseWheelListenerTest.java135
-rw-r--r--gnu/testlet/java/awt/Checkbox/PaintTest.java115
-rw-r--r--gnu/testlet/java/awt/Checkbox/addComponentListener.java97
-rw-r--r--gnu/testlet/java/awt/Checkbox/addFocusListener.java88
-rw-r--r--gnu/testlet/java/awt/Checkbox/addHierarchyBoundsListener.java88
-rw-r--r--gnu/testlet/java/awt/Checkbox/addHierarchyListener.java83
-rw-r--r--gnu/testlet/java/awt/Checkbox/addInputMethodListener.java88
-rw-r--r--gnu/testlet/java/awt/Checkbox/addItemListener.java82
-rw-r--r--gnu/testlet/java/awt/Checkbox/addKeyListener.java93
-rw-r--r--gnu/testlet/java/awt/Checkbox/addMouseListener.java103
-rw-r--r--gnu/testlet/java/awt/Checkbox/addMouseMotionListener.java88
-rw-r--r--gnu/testlet/java/awt/Checkbox/addMouseWheelListener.java83
-rw-r--r--gnu/testlet/java/awt/Checkbox/addPropertyChangeListener.java80
-rw-r--r--gnu/testlet/java/awt/Checkbox/addPropertyChangeListenerString.java80
-rw-r--r--gnu/testlet/java/awt/Checkbox/constructors.java88
-rw-r--r--gnu/testlet/java/awt/Checkbox/list.java56
-rw-r--r--gnu/testlet/java/awt/CheckboxGroup/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/CheckboxGroup/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/CheckboxGroup/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/CheckboxGroup/testGroup.java69
-rw-r--r--gnu/testlet/java/awt/Choice/CVS/Entries21
-rw-r--r--gnu/testlet/java/awt/Choice/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Choice/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Choice/ItemListenerNegativeTest1.java126
-rw-r--r--gnu/testlet/java/awt/Choice/ItemListenerNegativeTest2.java126
-rw-r--r--gnu/testlet/java/awt/Choice/ItemListenerPositiveTest.java133
-rw-r--r--gnu/testlet/java/awt/Choice/PaintTest.java114
-rw-r--r--gnu/testlet/java/awt/Choice/addComponentListener.java97
-rw-r--r--gnu/testlet/java/awt/Choice/addFocusListener.java88
-rw-r--r--gnu/testlet/java/awt/Choice/addHierarchyBoundsListener.java88
-rw-r--r--gnu/testlet/java/awt/Choice/addHierarchyListener.java83
-rw-r--r--gnu/testlet/java/awt/Choice/addInputMethodListener.java88
-rw-r--r--gnu/testlet/java/awt/Choice/addItemListener.java82
-rw-r--r--gnu/testlet/java/awt/Choice/addKeyListener.java93
-rw-r--r--gnu/testlet/java/awt/Choice/addMouseListener.java103
-rw-r--r--gnu/testlet/java/awt/Choice/addMouseMotionListener.java88
-rw-r--r--gnu/testlet/java/awt/Choice/addMouseWheelListener.java83
-rw-r--r--gnu/testlet/java/awt/Choice/addPropertyChangeListener.java80
-rw-r--r--gnu/testlet/java/awt/Choice/addPropertyChangeListenerString.java80
-rw-r--r--gnu/testlet/java/awt/Choice/constructors.java49
-rw-r--r--gnu/testlet/java/awt/Choice/getSelected.java173
-rw-r--r--gnu/testlet/java/awt/Choice/list.java49
-rw-r--r--gnu/testlet/java/awt/Choice/remove.java116
-rw-r--r--gnu/testlet/java/awt/Color/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/Color/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Color/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/ColorClass/CVS/Entries11
-rw-r--r--gnu/testlet/java/awt/ColorClass/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/ColorClass/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/ColorClass/brighter.java80
-rw-r--r--gnu/testlet/java/awt/ColorClass/constants.java75
-rw-r--r--gnu/testlet/java/awt/ColorClass/constructors.java480
-rw-r--r--gnu/testlet/java/awt/ColorClass/decode.java130
-rw-r--r--gnu/testlet/java/awt/ColorClass/equals.java80
-rw-r--r--gnu/testlet/java/awt/ColorClass/getBlue.java69
-rw-r--r--gnu/testlet/java/awt/ColorClass/getGreen.java69
-rw-r--r--gnu/testlet/java/awt/ColorClass/getRed.java69
-rw-r--r--gnu/testlet/java/awt/ColorClass/hashCode.java71
-rw-r--r--gnu/testlet/java/awt/ColorClass/serialization.java68
-rw-r--r--gnu/testlet/java/awt/Component/CVS/Entries21
-rw-r--r--gnu/testlet/java/awt/Component/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Component/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Component/clickModifiers.java91
-rw-r--r--gnu/testlet/java/awt/Component/getFont.java52
-rw-r--r--gnu/testlet/java/awt/Component/getForeground.java49
-rw-r--r--gnu/testlet/java/awt/Component/getListeners.java106
-rw-r--r--gnu/testlet/java/awt/Component/getLocationOnScreen.java91
-rw-r--r--gnu/testlet/java/awt/Component/getMaximumSize.java50
-rw-r--r--gnu/testlet/java/awt/Component/invalidate.java167
-rw-r--r--gnu/testlet/java/awt/Component/isValid.java67
-rw-r--r--gnu/testlet/java/awt/Component/keyPressTest.java160
-rw-r--r--gnu/testlet/java/awt/Component/properties.java145
-rw-r--r--gnu/testlet/java/awt/Component/properties14.java84
-rw-r--r--gnu/testlet/java/awt/Component/repaint.java136
-rw-r--r--gnu/testlet/java/awt/Component/requestFocus.java51
-rw-r--r--gnu/testlet/java/awt/Component/setComponentOrientation.java76
-rw-r--r--gnu/testlet/java/awt/Component/setFont.java92
-rw-r--r--gnu/testlet/java/awt/Component/setMaximumSize.java87
-rw-r--r--gnu/testlet/java/awt/Component/setMinimumSize.java86
-rw-r--r--gnu/testlet/java/awt/Component/setName.java67
-rw-r--r--gnu/testlet/java/awt/Component/setPreferredSize.java86
-rw-r--r--gnu/testlet/java/awt/Component/update.java176
-rw-r--r--gnu/testlet/java/awt/Container/CVS/Entries13
-rw-r--r--gnu/testlet/java/awt/Container/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Container/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Container/DisabledEventQueue.java49
-rw-r--r--gnu/testlet/java/awt/Container/LightweightContainer.java224
-rw-r--r--gnu/testlet/java/awt/Container/PR34078.java42
-rw-r--r--gnu/testlet/java/awt/Container/TestLayout.java78
-rw-r--r--gnu/testlet/java/awt/Container/addImpl.java249
-rw-r--r--gnu/testlet/java/awt/Container/applyComponentOrientation.java138
-rw-r--r--gnu/testlet/java/awt/Container/getAlignmentX.java62
-rw-r--r--gnu/testlet/java/awt/Container/getAlignmentY.java62
-rw-r--r--gnu/testlet/java/awt/Container/getComponentAt.java69
-rw-r--r--gnu/testlet/java/awt/Container/getListeners.java98
-rw-r--r--gnu/testlet/java/awt/Container/getPreferredSize.java139
-rw-r--r--gnu/testlet/java/awt/Container/setLayout.java94
-rw-r--r--gnu/testlet/java/awt/Desktop/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/Desktop/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Desktop/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Desktop/PR34580.java67
-rw-r--r--gnu/testlet/java/awt/Dialog/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/Dialog/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Dialog/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Dialog/defaultProperties.java105
-rw-r--r--gnu/testlet/java/awt/Dialog/size.java51
-rw-r--r--gnu/testlet/java/awt/Dimension/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/Dimension/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Dimension/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Dimension/clone.java50
-rw-r--r--gnu/testlet/java/awt/Dimension/constructors.java76
-rw-r--r--gnu/testlet/java/awt/Dimension/equals.java58
-rw-r--r--gnu/testlet/java/awt/Dimension/getSize.java52
-rw-r--r--gnu/testlet/java/awt/Dimension/setSize.java70
-rw-r--r--gnu/testlet/java/awt/Event/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/Event/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Event/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/EventClass/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/EventClass/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/EventClass/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/EventClass/constants.java104
-rw-r--r--gnu/testlet/java/awt/FileDialog/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/FileDialog/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/FileDialog/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FileDialog/TestGraphics.java95
-rw-r--r--gnu/testlet/java/awt/FileDialog/defaultProperties.java105
-rw-r--r--gnu/testlet/java/awt/FileDialog/setFile.java63
-rw-r--r--gnu/testlet/java/awt/FlowLayout/CVS/Entries22
-rw-r--r--gnu/testlet/java/awt/FlowLayout/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/FlowLayout/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup1.java186
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup2.java188
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup3.java188
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBiggerGaps.java192
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBiggerHgap.java191
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestBiggerVgap.java191
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestCenterAlign.java188
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestLeftAlign.java188
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestRightAlign.java188
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestZeroGaps.java192
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestZeroHgap.java191
-rw-r--r--gnu/testlet/java/awt/FlowLayout/PaintTestZeroVgap.java191
-rw-r--r--gnu/testlet/java/awt/FlowLayout/constructors.java116
-rw-r--r--gnu/testlet/java/awt/FlowLayout/getAlignment.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/getHgap.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/getVgap.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/minimumLayoutSize.java58
-rw-r--r--gnu/testlet/java/awt/FlowLayout/setAlignment.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/setHgap.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/setVgap.java51
-rw-r--r--gnu/testlet/java/awt/FlowLayout/toString.java98
-rw-r--r--gnu/testlet/java/awt/Font/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/Font/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Font/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FontClass/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/FontClass/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/FontClass/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FontClass/decode.java90
-rw-r--r--gnu/testlet/java/awt/FontClass/serialization.java69
-rw-r--r--gnu/testlet/java/awt/FontFormatException/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/FontFormatException/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/FontFormatException/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FontFormatException/constructor.java66
-rw-r--r--gnu/testlet/java/awt/FontMetrics/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/FontMetrics/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/FontMetrics/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/FontMetrics/TestLogicalFontMetrics.java1845
-rw-r--r--gnu/testlet/java/awt/Frame/CVS/Entries10
-rw-r--r--gnu/testlet/java/awt/Frame/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Frame/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable1.java79
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable2.java77
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable3.java77
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable4.java74
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable5.java63
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable6.java81
-rw-r--r--gnu/testlet/java/awt/Frame/isDisplayable7.java90
-rw-r--r--gnu/testlet/java/awt/Frame/menubar.java54
-rw-r--r--gnu/testlet/java/awt/Frame/size1.java103
-rw-r--r--gnu/testlet/java/awt/GradientPaint/CVS/Entries9
-rw-r--r--gnu/testlet/java/awt/GradientPaint/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/GradientPaint/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/GradientPaint/constructors.java244
-rw-r--r--gnu/testlet/java/awt/GradientPaint/equals.java50
-rw-r--r--gnu/testlet/java/awt/GradientPaint/getColor1.java47
-rw-r--r--gnu/testlet/java/awt/GradientPaint/getColor2.java47
-rw-r--r--gnu/testlet/java/awt/GradientPaint/getPoint1.java56
-rw-r--r--gnu/testlet/java/awt/GradientPaint/getPoint2.java56
-rw-r--r--gnu/testlet/java/awt/GradientPaint/getTransparency.java53
-rw-r--r--gnu/testlet/java/awt/GradientPaint/isCyclic.java50
-rw-r--r--gnu/testlet/java/awt/Graphics/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/Graphics/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Graphics/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Graphics/TestPaintGraphics.java68
-rw-r--r--gnu/testlet/java/awt/Graphics/clearRect.java87
-rw-r--r--gnu/testlet/java/awt/Graphics2D/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/Graphics2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Graphics2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Graphics2D/clip.java72
-rw-r--r--gnu/testlet/java/awt/Graphics2D/getClip.java61
-rw-r--r--gnu/testlet/java/awt/Graphics2D/getClipBounds.java61
-rw-r--r--gnu/testlet/java/awt/Graphics2D/security.java96
-rw-r--r--gnu/testlet/java/awt/Graphics2D/setClip.java64
-rw-r--r--gnu/testlet/java/awt/Graphics2D/setTransform.java68
-rw-r--r--gnu/testlet/java/awt/Graphics2D/transform.java75
-rw-r--r--gnu/testlet/java/awt/GridBagLayout/AdjustForGravity.java309
-rw-r--r--gnu/testlet/java/awt/GridBagLayout/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/GridBagLayout/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/GridBagLayout/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/GridBagLayout/toString.java44
-rw-r--r--gnu/testlet/java/awt/GridLayout/CVS/Entries24
-rw-r--r--gnu/testlet/java/awt/GridLayout/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/GridLayout/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java367
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java362
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java366
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java292
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java287
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java290
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java287
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java321
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java360
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java359
-rw-r--r--gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java359
-rw-r--r--gnu/testlet/java/awt/GridLayout/addLayoutComponent.java115
-rw-r--r--gnu/testlet/java/awt/GridLayout/getColumns.java55
-rw-r--r--gnu/testlet/java/awt/GridLayout/getHgap.java51
-rw-r--r--gnu/testlet/java/awt/GridLayout/getRows.java67
-rw-r--r--gnu/testlet/java/awt/GridLayout/getVgap.java51
-rw-r--r--gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java53
-rw-r--r--gnu/testlet/java/awt/GridLayout/removeLayoutComponent.java115
-rw-r--r--gnu/testlet/java/awt/GridLayout/setColumns.java55
-rw-r--r--gnu/testlet/java/awt/GridLayout/setHgap.java51
-rw-r--r--gnu/testlet/java/awt/GridLayout/setRows.java67
-rw-r--r--gnu/testlet/java/awt/GridLayout/setVgap.java51
-rw-r--r--gnu/testlet/java/awt/GridLayout/toString.java58
-rw-r--r--gnu/testlet/java/awt/HeadlessException/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/HeadlessException/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/HeadlessException/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/HeadlessException/constructor.java66
-rw-r--r--gnu/testlet/java/awt/IllegalComponentStateException/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/IllegalComponentStateException/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/IllegalComponentStateException/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/IllegalComponentStateException/constructor.java66
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/TestKeyboardFocusManager.java133
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java69
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java72
-rw-r--r--gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java73
-rw-r--r--gnu/testlet/java/awt/Label/CVS/Entries20
-rw-r--r--gnu/testlet/java/awt/Label/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Label/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Label/MouseListenerTest.java367
-rw-r--r--gnu/testlet/java/awt/Label/MouseMotionListenerTest.java271
-rw-r--r--gnu/testlet/java/awt/Label/MouseWheelListenerTest.java169
-rw-r--r--gnu/testlet/java/awt/Label/PaintTest.java118
-rw-r--r--gnu/testlet/java/awt/Label/addComponentListener.java96
-rw-r--r--gnu/testlet/java/awt/Label/addFocusListener.java87
-rw-r--r--gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java87
-rw-r--r--gnu/testlet/java/awt/Label/addHierarchyListener.java82
-rw-r--r--gnu/testlet/java/awt/Label/addInputMethodListener.java87
-rw-r--r--gnu/testlet/java/awt/Label/addKeyListener.java92
-rw-r--r--gnu/testlet/java/awt/Label/addMouseListener.java102
-rw-r--r--gnu/testlet/java/awt/Label/addMouseMotionListener.java87
-rw-r--r--gnu/testlet/java/awt/Label/addMouseWheelListener.java82
-rw-r--r--gnu/testlet/java/awt/Label/addPropertyChangeListener.java80
-rw-r--r--gnu/testlet/java/awt/Label/addPropertyChangeListenerString.java80
-rw-r--r--gnu/testlet/java/awt/Label/constructors.java93
-rw-r--r--gnu/testlet/java/awt/Label/getAlignment.java67
-rw-r--r--gnu/testlet/java/awt/Label/list.java77
-rw-r--r--gnu/testlet/java/awt/Label/setAlignment.java75
-rw-r--r--gnu/testlet/java/awt/List/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/List/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/List/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/List/PaintTestEmptyList.java118
-rw-r--r--gnu/testlet/java/awt/List/PaintTestFilledList.java121
-rw-r--r--gnu/testlet/java/awt/List/ScrollbarPaintTest.java112
-rw-r--r--gnu/testlet/java/awt/List/addActionListener.java82
-rw-r--r--gnu/testlet/java/awt/List/addItemListener.java82
-rw-r--r--gnu/testlet/java/awt/List/testSelected.java453
-rw-r--r--gnu/testlet/java/awt/List/testSetMultipleMode.java106
-rw-r--r--gnu/testlet/java/awt/LocationTests.java147
-rw-r--r--gnu/testlet/java/awt/Menu/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/Menu/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Menu/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Menu/addItem.java105
-rw-r--r--gnu/testlet/java/awt/Menu/insert.java155
-rw-r--r--gnu/testlet/java/awt/MenuBar/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/MenuBar/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/MenuBar/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/MenuBar/addMenu.java69
-rw-r--r--gnu/testlet/java/awt/MenuItem/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/MenuItem/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/MenuItem/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/MenuItem/label1.java49
-rw-r--r--gnu/testlet/java/awt/MenuShortcut/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/MenuShortcut/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/MenuShortcut/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/MenuShortcut/testToString.java361
-rw-r--r--gnu/testlet/java/awt/Panel/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/Panel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Panel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Panel/TestPanelRepaint.java106
-rw-r--r--gnu/testlet/java/awt/Point/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/Point/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Point/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Point/clone.java46
-rw-r--r--gnu/testlet/java/awt/Point/constructors.java75
-rw-r--r--gnu/testlet/java/awt/Point/equals.java60
-rw-r--r--gnu/testlet/java/awt/Point/getLocation.java51
-rw-r--r--gnu/testlet/java/awt/Point/move.java46
-rw-r--r--gnu/testlet/java/awt/Point/setLocation.java98
-rw-r--r--gnu/testlet/java/awt/Point/translate.java46
-rw-r--r--gnu/testlet/java/awt/Polygon/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/Polygon/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Polygon/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Polygon/contains.java160
-rw-r--r--gnu/testlet/java/awt/Polygon/getPathIterator.java194
-rw-r--r--gnu/testlet/java/awt/Rectangle/CVS/Entries17
-rw-r--r--gnu/testlet/java/awt/Rectangle/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Rectangle/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Rectangle/add.java66
-rw-r--r--gnu/testlet/java/awt/Rectangle/clone.java50
-rw-r--r--gnu/testlet/java/awt/Rectangle/constructors.java240
-rw-r--r--gnu/testlet/java/awt/Rectangle/contains.java78
-rw-r--r--gnu/testlet/java/awt/Rectangle/equals.java65
-rw-r--r--gnu/testlet/java/awt/Rectangle/grow.java47
-rw-r--r--gnu/testlet/java/awt/Rectangle/intersection.java64
-rw-r--r--gnu/testlet/java/awt/Rectangle/intersects.java65
-rw-r--r--gnu/testlet/java/awt/Rectangle/isEmpty.java51
-rw-r--r--gnu/testlet/java/awt/Rectangle/outcode.java85
-rw-r--r--gnu/testlet/java/awt/Rectangle/setBounds.java66
-rw-r--r--gnu/testlet/java/awt/Rectangle/setLocation.java67
-rw-r--r--gnu/testlet/java/awt/Rectangle/setRect.java71
-rw-r--r--gnu/testlet/java/awt/Rectangle/setSize.java67
-rw-r--r--gnu/testlet/java/awt/Rectangle/translate.java47
-rw-r--r--gnu/testlet/java/awt/Rectangle/union.java69
-rw-r--r--gnu/testlet/java/awt/RenderingHints/CVS/Entries17
-rw-r--r--gnu/testlet/java/awt/RenderingHints/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/awt/RenderingHints/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/RenderingHints/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/RenderingHints/Key/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/RenderingHints/Key/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/RenderingHints/Key/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/RenderingHints/Key/isCompatibleValue.java322
-rw-r--r--gnu/testlet/java/awt/RenderingHints/add.java64
-rw-r--r--gnu/testlet/java/awt/RenderingHints/clear.java49
-rw-r--r--gnu/testlet/java/awt/RenderingHints/clone.java55
-rw-r--r--gnu/testlet/java/awt/RenderingHints/constructors.java91
-rw-r--r--gnu/testlet/java/awt/RenderingHints/containsKey.java75
-rw-r--r--gnu/testlet/java/awt/RenderingHints/containsValue.java52
-rw-r--r--gnu/testlet/java/awt/RenderingHints/entrySet.java56
-rw-r--r--gnu/testlet/java/awt/RenderingHints/equals.java60
-rw-r--r--gnu/testlet/java/awt/RenderingHints/get.java61
-rw-r--r--gnu/testlet/java/awt/RenderingHints/isEmpty.java50
-rw-r--r--gnu/testlet/java/awt/RenderingHints/keySet.java54
-rw-r--r--gnu/testlet/java/awt/RenderingHints/put.java112
-rw-r--r--gnu/testlet/java/awt/RenderingHints/putAll.java130
-rw-r--r--gnu/testlet/java/awt/RenderingHints/remove.java65
-rw-r--r--gnu/testlet/java/awt/RenderingHints/size.java52
-rw-r--r--gnu/testlet/java/awt/RenderingHints/values.java54
-rw-r--r--gnu/testlet/java/awt/Robot/CVS/Entries11
-rw-r--r--gnu/testlet/java/awt/Robot/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Robot/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Robot/constructors.java57
-rw-r--r--gnu/testlet/java/awt/Robot/createScreenCapture.java88
-rw-r--r--gnu/testlet/java/awt/Robot/getPixelColor.java78
-rw-r--r--gnu/testlet/java/awt/Robot/keyPress.java101
-rw-r--r--gnu/testlet/java/awt/Robot/keyRelease.java93
-rw-r--r--gnu/testlet/java/awt/Robot/mouseMove.java93
-rw-r--r--gnu/testlet/java/awt/Robot/mousePress.java86
-rw-r--r--gnu/testlet/java/awt/Robot/mouseRelease.java86
-rw-r--r--gnu/testlet/java/awt/Robot/mouseWheel.java96
-rw-r--r--gnu/testlet/java/awt/Robot/security.java88
-rw-r--r--gnu/testlet/java/awt/ScrollPane/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/ScrollPane/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/ScrollPane/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java104
-rw-r--r--gnu/testlet/java/awt/ScrollPane/add.java100
-rw-r--r--gnu/testlet/java/awt/ScrollPane/doLayout.java57
-rw-r--r--gnu/testlet/java/awt/ScrollPane/getScrollPosition.java51
-rw-r--r--gnu/testlet/java/awt/ScrollPane/setScrollPosition.java130
-rw-r--r--gnu/testlet/java/awt/ScrollPane/testSetLayout.java63
-rw-r--r--gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/ScrollPaneAdjustable/paramString.java46
-rw-r--r--gnu/testlet/java/awt/Scrollbar/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/Scrollbar/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Scrollbar/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java108
-rw-r--r--gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement.java79
-rw-r--r--gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement.java79
-rw-r--r--gnu/testlet/java/awt/Scrollbar/testSetValues.java199
-rw-r--r--gnu/testlet/java/awt/TextArea/CVS/Entries12
-rw-r--r--gnu/testlet/java/awt/TextArea/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/TextArea/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/TextArea/MouseListenerTest.java367
-rw-r--r--gnu/testlet/java/awt/TextArea/MouseMotionListenerTest.java271
-rw-r--r--gnu/testlet/java/awt/TextArea/MouseWheelListenerTest.java169
-rw-r--r--gnu/testlet/java/awt/TextArea/ScrollbarPaintTest.java88
-rw-r--r--gnu/testlet/java/awt/TextArea/constructors.java177
-rw-r--r--gnu/testlet/java/awt/TextArea/getMinimumSize.java146
-rw-r--r--gnu/testlet/java/awt/TextArea/getPreferredSize.java147
-rw-r--r--gnu/testlet/java/awt/TextArea/testAppendText.java45
-rw-r--r--gnu/testlet/java/awt/TextArea/testInsertText.java54
-rw-r--r--gnu/testlet/java/awt/TextArea/testInvalidConstructorValues.java77
-rw-r--r--gnu/testlet/java/awt/TextArea/testReplaceText.java60
-rw-r--r--gnu/testlet/java/awt/TextComponent/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/TextComponent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/TextComponent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/TextComponent/ignoreOldMouseEvents.java142
-rw-r--r--gnu/testlet/java/awt/TextComponent/setSelectionStart.java70
-rw-r--r--gnu/testlet/java/awt/TextField/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/TextField/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/TextField/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/TextField/PaintTest.java110
-rw-r--r--gnu/testlet/java/awt/TextField/constructors.java109
-rw-r--r--gnu/testlet/java/awt/TextField/getMinimumSize.java145
-rw-r--r--gnu/testlet/java/awt/TextField/getPreferredSize.java146
-rw-r--r--gnu/testlet/java/awt/Toolkit/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/Toolkit/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Toolkit/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Toolkit/security.java164
-rw-r--r--gnu/testlet/java/awt/Window/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/Window/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/Window/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/Window/focusCycleRootTest.java50
-rw-r--r--gnu/testlet/java/awt/Window/pack1.java137
-rw-r--r--gnu/testlet/java/awt/Window/security.java96
-rw-r--r--gnu/testlet/java/awt/color/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/color/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/awt/color/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/color/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/color/ColorSpace/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/color/ColorSpace/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/color/ColorSpace/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/color/ColorSpace/getInstance.java154
-rw-r--r--gnu/testlet/java/awt/color/ColorSpace/isCS_sRGB.java38
-rw-r--r--gnu/testlet/java/awt/datatransfer/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/datatransfer/CVS/Entries.Log3
-rw-r--r--gnu/testlet/java/awt/datatransfer/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/datatransfer/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/datatransfer/Clipboard/clipboard.java114
-rw-r--r--gnu/testlet/java/awt/datatransfer/Clipboard/clipboardFlavors.java326
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/flavor.java234
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/readExternal.java75
-rw-r--r--gnu/testlet/java/awt/datatransfer/DataFlavor/writeExternal.java211
-rw-r--r--gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/datatransfer/StringSelection/selection.java76
-rw-r--r--gnu/testlet/java/awt/dnd/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/CVS/Entries.Log7
-rw-r--r--gnu/testlet/java/awt/dnd/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DnDTest.java335
-rw-r--r--gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DragGestureRecognizer/resetRecognizer.java123
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/Constructors.java48
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/CreateDragGestureRecognizerTest.java44
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/FlavourMapTest.java38
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/getDragThresholdTest.java38
-rw-r--r--gnu/testlet/java/awt/dnd/DragSource/isDragImageSupportedTest.java36
-rw-r--r--gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DragSourceContext/Constructor.java186
-rw-r--r--gnu/testlet/java/awt/dnd/DropTarget/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DropTarget/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTarget/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTarget/Constructors.java232
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetContext/DropTargetContextTest.java43
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDragEvent/Constructors.java113
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/dnd/DropTargetDropEvent/Constructors.java116
-rw-r--r--gnu/testlet/java/awt/event/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/event/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/event/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/event/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/event/ComponentEvent/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/event/ComponentEvent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/event/ComponentEvent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/event/ComponentEvent/paramString.java55
-rw-r--r--gnu/testlet/java/awt/event/MouseEvent/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/event/MouseEvent/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/event/MouseEvent/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/event/MouseEvent/modifiers.java280
-rw-r--r--gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java290
-rw-r--r--gnu/testlet/java/awt/font/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/font/CVS/Entries.Log6
-rw-r--r--gnu/testlet/java/awt/font/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java74
-rw-r--r--gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmpbin0 -> 32578 bytes
-rw-r--r--gnu/testlet/java/awt/font/NumericShaper/Basic.java110
-rw-r--r--gnu/testlet/java/awt/font/NumericShaper/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/font/NumericShaper/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/NumericShaper/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/ShapeGraphicAttribute/ShapeGraphicAttributeTest.java72
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/constants.java82
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/constants13.java47
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/serialization.java88
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/toString.java57
-rw-r--r--gnu/testlet/java/awt/font/TextAttribute/toString13.java43
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/CVS/Entries13
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/afterOffset.java44
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/beforeOffset.java44
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/equals.java61
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/getCharIndex.java55
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/getInsertionIndex.java58
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/getOffsetHit.java61
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/getOtherHit.java43
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/hashCode.java58
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/isLeadingEdge.java58
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/leading.java44
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/toString.java43
-rw-r--r--gnu/testlet/java/awt/font/TextHitInfo/trailing.java44
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/constructor.java68
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/getTransform.java56
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/isIdentity.java53
-rw-r--r--gnu/testlet/java/awt/font/TransformAttribute/serialization.java77
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/CVS/Entries20
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/clone.java52
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/concatenate.java62
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/constants.java52
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/constructors.java148
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/createInverse.java83
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/createTransformedShape.java79
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/deltaTransform.java70
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/equals.java75
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getDeterminant.java44
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getMatrix.java81
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getRotateInstance.java60
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getScaleInstance.java51
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getShearInstance.java50
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/getTranslateInstance.java50
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/inverseTransform.java88
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/isIdentity.java46
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/preConcatenate.java62
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/setTransform.java69
-rw-r--r--gnu/testlet/java/awt/geom/AffineTransform/transform.java90
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/CVS/Entries20
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Double/clone.java54
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/Float/clone.java54
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/constants.java44
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/constructors.java104
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/contains.java106
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/containsAngle.java54
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/equals.java46
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/getBounds2D.java57
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/getEndPoint.java47
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/getPathIterator.java70
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/getStartPoint.java47
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/intersects.java64
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/isEmpty.java50
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setAngleExtent.java45
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setAngleStart.java61
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setAngles.java75
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setArc.java141
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setArcByCenter.java63
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setArcByTangent.java107
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setArcType.java58
-rw-r--r--gnu/testlet/java/awt/geom/Arc2D/setFrame.java48
-rw-r--r--gnu/testlet/java/awt/geom/Area/CVS/Entries19
-rw-r--r--gnu/testlet/java/awt/geom/Area/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Area/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Area/add.java56
-rw-r--r--gnu/testlet/java/awt/geom/Area/clone.java59
-rw-r--r--gnu/testlet/java/awt/geom/Area/constructors.java68
-rw-r--r--gnu/testlet/java/awt/geom/Area/contains.java77
-rw-r--r--gnu/testlet/java/awt/geom/Area/createTransformedArea.java76
-rw-r--r--gnu/testlet/java/awt/geom/Area/equals.java57
-rw-r--r--gnu/testlet/java/awt/geom/Area/exclusiveOr.java73
-rw-r--r--gnu/testlet/java/awt/geom/Area/getBounds.java52
-rw-r--r--gnu/testlet/java/awt/geom/Area/getBounds2D.java51
-rw-r--r--gnu/testlet/java/awt/geom/Area/intersect.java73
-rw-r--r--gnu/testlet/java/awt/geom/Area/intersects.java68
-rw-r--r--gnu/testlet/java/awt/geom/Area/isEmpty.java51
-rw-r--r--gnu/testlet/java/awt/geom/Area/isPolygonal.java55
-rw-r--r--gnu/testlet/java/awt/geom/Area/isRectangular.java57
-rw-r--r--gnu/testlet/java/awt/geom/Area/isSingular.java48
-rw-r--r--gnu/testlet/java/awt/geom/Area/reset.java47
-rw-r--r--gnu/testlet/java/awt/geom/Area/subtract.java73
-rw-r--r--gnu/testlet/java/awt/geom/Area/transform.java61
-rw-r--r--gnu/testlet/java/awt/geom/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/geom/CVS/Entries.Log12
-rw-r--r--gnu/testlet/java/awt/geom/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/Double.java97
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/getBounds2D.java52
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Double/setCurve.java53
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/Float.java97
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/getBounds2D.java52
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/Float/setCurve.java53
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/clone.java67
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java79
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java78
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/getPathIterator.java112
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/setCurve.java149
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java148
-rw-r--r--gnu/testlet/java/awt/geom/CubicCurve2D/subdivide.java159
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Entries10
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/clone.java51
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/constructors.java56
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/getBounds2D.java55
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/getHeight.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/getWidth.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/getX.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/getY.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/isEmpty.java52
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Double/setFrame.java57
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Entries10
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/clone.java51
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/constructors.java56
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/getBounds2D.java55
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/getHeight.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/getWidth.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/getX.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/getY.java46
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/isEmpty.java52
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/Float/setFrame.java57
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/contains.java77
-rw-r--r--gnu/testlet/java/awt/geom/Ellipse2D/intersects.java49
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/FlatteningPathIterator.java82
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/currentSegment.java482
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/getFlatness.java49
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/getRecursionLimit.java54
-rw-r--r--gnu/testlet/java/awt/geom/FlatteningPathIterator/getWindingRule.java90
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/GeneralPath.java205
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java288
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/contains.java135
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/getCurrentPoint.java101
-rw-r--r--gnu/testlet/java/awt/geom/GeneralPath/getPathIterator.java215
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/CVS/Entries17
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/clone.java49
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/contains.java52
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/equals.java45
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/getBounds.java50
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/getP1.java44
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/getP2.java44
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/getPathIterator.java57
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/intersects.java82
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/intersectsLine.java59
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/linesIntersect.java68
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/ptLineDist.java74
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/ptLineDistSq.java74
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/ptSegDist.java74
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/ptSegDistSq.java74
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/relativeCCW.java79
-rw-r--r--gnu/testlet/java/awt/geom/Line2D/setLine.java105
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/Double.java88
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/getBounds2D.java52
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/getCtrlPt.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Double/setCurve.java51
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/Float.java88
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/getBounds2D.java52
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/getCtrlPt.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP1.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP2.java46
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/Float/setCurve.java51
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/clone.java62
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java76
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java68
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/getPathIterator.java109
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/setCurve.java137
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java204
-rw-r--r--gnu/testlet/java/awt/geom/QuadCurve2D/subdivide.java149
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries13
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/clone.java51
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/createIntersection.java75
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/createUnion.java68
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/isEmpty.java54
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/outcode.java84
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Double/setRect.java68
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/clone.java51
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/createIntersection.java75
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/createUnion.java68
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/isEmpty.java54
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/outcode.java84
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/Float/setRect.java67
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/add.java89
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/constants.java46
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/contains.java59
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/equals.java68
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/getBounds.java64
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/getBounds2D.java58
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/getPathIterator.java156
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/intersect.java86
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/intersects.java50
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/intersectsLine.java73
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/setFrame.java52
-rw-r--r--gnu/testlet/java/awt/geom/Rectangle2D/union.java86
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/CVS/Entries15
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/contains.java109
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getBounds.java91
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getCenterX.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getCenterY.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getFrame.java91
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getMaxX.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getMaxY.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getMinX.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/getMinY.java87
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/intersects.java95
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/isEmpty.java90
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/setFrame.java140
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/setFrameFromCenter.java123
-rw-r--r--gnu/testlet/java/awt/geom/RectangularShape/setFrameFromDiagonal.java123
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java131
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/contains-1.pngbin0 -> 916 bytes
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/intersects-1.pngbin0 -> 3431 bytes
-rw-r--r--gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java146
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/constructors.java120
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java164
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestRaster.java102
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java122
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java128
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java123
-rw-r--r--gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java128
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/CVS/Entries6
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/constructors.java184
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java301
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/filter.java181
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/getBounds2D.java76
-rw-r--r--gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java58
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/CVS/Entries18
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/constructors.java201
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/createCompatibleSampleModel.java84
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/createDataBuffer.java58
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/createSubsetSampleModel.java66
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getDataElements.java99
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getPixel.java119
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getPixels.java125
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getSample.java120
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getSampleDouble.java119
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getSampleFloat.java120
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/getSamples.java127
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/hashCode.java48
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/setDataElements.java126
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/setPixel.java125
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/setPixels.java121
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/setSample.java293
-rw-r--r--gnu/testlet/java/awt/image/BandedSampleModel/setSamples.java136
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/constants.java249
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/constructors.java115
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/getSetRgb1Pixel.java104
-rw-r--r--gnu/testlet/java/awt/image/BufferedImage/getSubimage.java90
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/constructors.java115
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/getTable.java66
-rw-r--r--gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java272
-rw-r--r--gnu/testlet/java/awt/image/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/image/CVS/Entries.Log31
-rw-r--r--gnu/testlet/java/awt/image/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/constructors.java225
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java372
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java256
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java248
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/filterRaster.java144
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/getBounds2D.java61
-rw-r--r--gnu/testlet/java/awt/image/ColorConvertOp/getPoint2D.java59
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/MyColorModel.java67
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/constructors.java168
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/getComponentSize.java86
-rw-r--r--gnu/testlet/java/awt/image/ColorModel/getRGBdefault.java59
-rw-r--r--gnu/testlet/java/awt/image/ComponentColorModel/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/image/ComponentColorModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ComponentColorModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ComponentColorModel/coerceData.java167
-rw-r--r--gnu/testlet/java/awt/image/ComponentColorModel/createCompatibleSampleModel.java210
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Entries26
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/MyComponentSampleModel.java51
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java320
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/createCompatibleSampleModel.java50
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java83
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/createSubsetSampleModel.java47
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/equals.java78
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getBandOffsets.java48
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getDataElements.java72
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getNumDataElements.java41
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getOffset.java78
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java277
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getPixelStride.java41
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getPixels.java71
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getSample.java96
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getSampleDouble.java96
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getSampleFloat.java96
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getSampleSize.java71
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getSamples.java68
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/getScanlineStride.java41
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/hashCode.java46
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/setDataElements.java83
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/setPixel.java71
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/setPixels.java73
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/setSample.java140
-rw-r--r--gnu/testlet/java/awt/image/ComponentSampleModel/setSamples.java58
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/CVS/Entries12
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/constants.java43
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/constructors.java112
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestImage.java124
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestRaster.java102
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/filterImage.java386
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/filterRaster.java285
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/getBounds2D.java93
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/getEdgeCondition.java45
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/getKernel.java54
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/getPoint2D.java66
-rw-r--r--gnu/testlet/java/awt/image/ConvolveOp/getRenderingHints.java48
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/constants.java48
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/getDataTypeSize.java70
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/getOffset.java49
-rw-r--r--gnu/testlet/java/awt/image/DataBuffer/getOffsets.java47
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/constructors.java256
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/getElem.java198
-rw-r--r--gnu/testlet/java/awt/image/DataBufferByte/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/constructors.java255
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/getElem.java198
-rw-r--r--gnu/testlet/java/awt/image/DataBufferDouble/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/constructors.java255
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/getElem.java197
-rw-r--r--gnu/testlet/java/awt/image/DataBufferFloat/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/constructors.java250
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/getElem.java197
-rw-r--r--gnu/testlet/java/awt/image/DataBufferInt/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/constructors.java250
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/getElem.java198
-rw-r--r--gnu/testlet/java/awt/image/DataBufferShort/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/CVS/Entries7
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/constructors.java248
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/getBankData.java78
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/getData.java138
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/getDataType.java42
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/getElem.java197
-rw-r--r--gnu/testlet/java/awt/image/DataBufferUShort/setElem.java120
-rw-r--r--gnu/testlet/java/awt/image/DirectColorModel/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/image/DirectColorModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/DirectColorModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/DirectColorModel/coerceData.java169
-rw-r--r--gnu/testlet/java/awt/image/DirectColorModel/constructors.java201
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/CVS/Entries16
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/constructors.java587
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getAlpha.java79
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getAlphas.java80
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getBlue.java68
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getBlues.java79
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getColorSpace.java68
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getComponentSize.java119
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getGreen.java68
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getGreens.java79
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getPixelSize.java87
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getRed.java68
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getReds.java79
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getTransparency.java97
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/getTransparentPixel.java96
-rw-r--r--gnu/testlet/java/awt/image/IndexColorModel/isValid.java90
-rw-r--r--gnu/testlet/java/awt/image/Kernel/CVS/Entries8
-rw-r--r--gnu/testlet/java/awt/image/Kernel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/Kernel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/Kernel/check.java126
-rw-r--r--gnu/testlet/java/awt/image/Kernel/constructor.java106
-rw-r--r--gnu/testlet/java/awt/image/Kernel/getHeight.java46
-rw-r--r--gnu/testlet/java/awt/image/Kernel/getKernelData.java64
-rw-r--r--gnu/testlet/java/awt/image/Kernel/getWidth.java46
-rw-r--r--gnu/testlet/java/awt/image/Kernel/getXOrigin.java52
-rw-r--r--gnu/testlet/java/awt/image/Kernel/getYOrigin.java53
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/CVS/Entries10
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/constructor.java49
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/createCompatibleDestImage.java135
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java83
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/filterImage.java696
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/filterRaster.java293
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/getBounds2D.java96
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/getPoint2D.java58
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/getRenderingHints.java47
-rw-r--r--gnu/testlet/java/awt/image/LookupOp/getTable.java41
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/CVS/Entries5
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java40
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/constructor.java65
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/getNumComponents.java40
-rw-r--r--gnu/testlet/java/awt/image/LookupTable/getOffset.java40
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Entries20
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/constructors.java82
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createCompatibleSampleModel.java70
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createDataBuffer.java79
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createSubsetSampleModel.java68
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/equals.java77
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java79
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataBitOffset.java45
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataElements.java95
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getOffset.java64
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixel.java78
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixelBitStride.java51
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSample.java79
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSampleSize.java90
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getScanlineStride.java45
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getTransferType.java90
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/hashCode.java45
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java213
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setPixel.java77
-rw-r--r--gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java110
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/SimpleGrabber.java243
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/lena1.jpgbin0 -> 2582 bytes
-rw-r--r--gnu/testlet/java/awt/image/PixelGrabber/testNullProducer.java49
-rw-r--r--gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Entries2
-rw-r--r--gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/PixelInterleavedSampleModel/createSubsetSampleModel.java88
-rw-r--r--gnu/testlet/java/awt/image/Raster/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/image/Raster/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/Raster/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/Raster/MyRaster.java34
-rw-r--r--gnu/testlet/java/awt/image/Raster/createChild.java179
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/CVS/Entries12
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/constructors.java163
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestImage.java120
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestRaster.java90
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/filterImage.java320
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/filterRaster.java226
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getBounds2D.java91
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getNumFactors.java75
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getOffsets.java83
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getPoint2D.java55
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getRenderingHints.java44
-rw-r--r--gnu/testlet/java/awt/image/RescaleOp/getScaleFactors.java83
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/CVS/Entries13
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/createDataBuffer.java48
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getPixel.java157
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getPixels.java180
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getSample.java86
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getSampleDouble.java86
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getSampleFloat.java86
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getSampleSize.java85
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/getSamples.java184
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/setPixel.java157
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/setPixels.java166
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/setSample.java180
-rw-r--r--gnu/testlet/java/awt/image/SampleModel/setSamples.java211
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/CVS/Entries4
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/constructors.java115
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/getTable.java66
-rw-r--r--gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java271
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Entries21
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/constructors.java201
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createCompatibleSampleModel.java77
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createDataBuffer.java162
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createSubsetSampleModel.java77
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java106
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitMasks.java49
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitOffsets.java49
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getDataElements.java226
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getNumDataElements.java48
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getOffset.java51
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixel.java107
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixels.java151
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSample.java86
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java126
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSamples.java147
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getScanlineStride.java52
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/hashCode.java54
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setDataElements.java327
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setPixel.java295
-rw-r--r--gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setSample.java319
-rw-r--r--gnu/testlet/java/awt/image/WritableRaster/CVS/Entries3
-rw-r--r--gnu/testlet/java/awt/image/WritableRaster/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/image/WritableRaster/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/image/WritableRaster/createChild.java173
-rw-r--r--gnu/testlet/java/awt/image/WritableRaster/createWritableChild.java172
-rw-r--r--gnu/testlet/java/awt/print/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/print/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/awt/print/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/print/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/print/PrinterJob/CVS/Entries1
-rw-r--r--gnu/testlet/java/awt/print/PrinterJob/CVS/Repository1
-rw-r--r--gnu/testlet/java/awt/print/PrinterJob/CVS/Root1
-rw-r--r--gnu/testlet/java/awt/testName.java183
-rw-r--r--gnu/testlet/java/beans/.cvsignore1
-rw-r--r--gnu/testlet/java/beans/Beans/CVS/Entries6
-rw-r--r--gnu/testlet/java/beans/Beans/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Beans/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Beans/TestBean1.java35
-rw-r--r--gnu/testlet/java/beans/Beans/TestBean2.java42
-rw-r--r--gnu/testlet/java/beans/Beans/TestBean3.java34
-rw-r--r--gnu/testlet/java/beans/Beans/TestBean4.java38
-rw-r--r--gnu/testlet/java/beans/Beans/instantiate_1.java123
-rw-r--r--gnu/testlet/java/beans/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/CVS/Entries.Log16
-rw-r--r--gnu/testlet/java/beans/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/DesignMode/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/DesignMode/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/DesignMode/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/DesignMode/constants.java38
-rw-r--r--gnu/testlet/java/beans/EventHandler/CVS/Entries5
-rw-r--r--gnu/testlet/java/beans/EventHandler/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/EventHandler/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/EventHandler/check.java243
-rw-r--r--gnu/testlet/java/beans/EventHandler/check14.java232
-rw-r--r--gnu/testlet/java/beans/EventHandler/check14b.java405
-rw-r--r--gnu/testlet/java/beans/EventHandler/check14c.java237
-rw-r--r--gnu/testlet/java/beans/EventSetDescriptor/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/EventSetDescriptor/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/EventSetDescriptor/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/EventSetDescriptor/constructorTest1.java57
-rw-r--r--gnu/testlet/java/beans/Expression/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Expression/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Expression/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Expression/check.java217
-rw-r--r--gnu/testlet/java/beans/FeatureDescriptor/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/FeatureDescriptor/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/FeatureDescriptor/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/FeatureDescriptor/check.java71
-rw-r--r--gnu/testlet/java/beans/Introspector/A.java9
-rw-r--r--gnu/testlet/java/beans/Introspector/B.java8
-rw-r--r--gnu/testlet/java/beans/Introspector/C.java8
-rw-r--r--gnu/testlet/java/beans/Introspector/CVS/Entries12
-rw-r--r--gnu/testlet/java/beans/Introspector/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/beans/Introspector/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Introspector/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/TestSubject.java39
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/info/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/info/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/info/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Introspector/bar/info/TestSubjectBeanInfo.java44
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/TestSubject.java39
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/info/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/info/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/info/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Introspector/foo/info/TestSubjectBeanInfo.java44
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfo.java184
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfo2.java176
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java147
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java76
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfo4.java82
-rw-r--r--gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java114
-rw-r--r--gnu/testlet/java/beans/Introspector/jdk11.java79
-rw-r--r--gnu/testlet/java/beans/Introspector/jdk12.java56
-rw-r--r--gnu/testlet/java/beans/MethodDescriptor/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/MethodDescriptor/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/MethodDescriptor/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/MethodDescriptor/constructorTest1.java53
-rw-r--r--gnu/testlet/java/beans/PropertyChangeSupport/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/PropertyChangeSupport/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/PropertyChangeSupport/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/PropertyChangeSupport/firePropertyChange.java73
-rw-r--r--gnu/testlet/java/beans/PropertyDescriptor/CVS/Entries3
-rw-r--r--gnu/testlet/java/beans/PropertyDescriptor/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/PropertyDescriptor/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/PropertyDescriptor/constructorTest1.java93
-rw-r--r--gnu/testlet/java/beans/PropertyDescriptor/constructorTest2.java704
-rw-r--r--gnu/testlet/java/beans/PropertyEditorSupport/CVS/Entries3
-rw-r--r--gnu/testlet/java/beans/PropertyEditorSupport/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/PropertyEditorSupport/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/PropertyEditorSupport/getSource.java54
-rw-r--r--gnu/testlet/java/beans/PropertyEditorSupport/setValue.java145
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/CVS/Entries10
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/MySimpleBeanInfo.java36
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getAdditionalBeanInfo.java39
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getBeanDescriptor.java39
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getDefaultEventIndex.java39
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getDefaultPropertyIndex.java39
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getEventSetDescriptors.java39
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/getIcon.java43
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java64
-rw-r--r--gnu/testlet/java/beans/SimpleBeanInfo/testImage1.gifbin0 -> 67 bytes
-rw-r--r--gnu/testlet/java/beans/Statement/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/Statement/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/Statement/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/Statement/check.java160
-rw-r--r--gnu/testlet/java/beans/VetoableChangeSupport/CVS/Entries2
-rw-r--r--gnu/testlet/java/beans/VetoableChangeSupport/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/VetoableChangeSupport/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/VetoableChangeSupport/addVetoableChangeListener.java81
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/CVS/Entries7
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java195
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/DoubleArrayChecker.java60
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/EqualityChecker.java41
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/IntArrayChecker.java60
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java68
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/CVS/Entries16
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/boolean.xml10
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/byte.xml17
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/double.xml32
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/float.xml28
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/growableDoubleArray.xml22
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml23
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/growableIntArray2.xml17
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml42
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/int.xml17
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/intArray.xml22
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/list.xml47
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/long.xml17
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml30
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/short.xml16
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml39
-rw-r--r--gnu/testlet/java/beans/XMLDecoder/jdk14.java281
-rw-r--r--gnu/testlet/java/beans/beancontext/Add.java93
-rw-r--r--gnu/testlet/java/beans/beancontext/Array.java68
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Entries3
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/MyBeanContextServicesSupport.java41
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java48
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Entries13
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java90
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/constructors.java160
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getBeanContextPeer.java56
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java90
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java74
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java63
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java63
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java63
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java63
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java239
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/setDesignTime.java60
-rw-r--r--gnu/testlet/java/beans/beancontext/BeanContextSupport/toArray.java135
-rw-r--r--gnu/testlet/java/beans/beancontext/CVS/Entries5
-rw-r--r--gnu/testlet/java/beans/beancontext/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/beans/beancontext/CVS/Repository1
-rw-r--r--gnu/testlet/java/beans/beancontext/CVS/Root1
-rw-r--r--gnu/testlet/java/beans/beancontext/InstantiateChild.java56
-rw-r--r--gnu/testlet/java/beans/beancontext/Remove.java128
-rw-r--r--gnu/testlet/java/io/BufferedByteOutputStream/CVS/Entries1
-rw-r--r--gnu/testlet/java/io/BufferedByteOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedByteOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedCharWriter/CVS/Entries1
-rw-r--r--gnu/testlet/java/io/BufferedCharWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedCharWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/BigMark.java82
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/CVS/Entries7
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/MarkReset.java195
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/ProtectedVars.java73
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/SimpleRead.java82
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/Skip.java55
-rw-r--r--gnu/testlet/java/io/BufferedInputStream/ZeroRead.java59
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/Test.java71
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/helper.java49
-rw-r--r--gnu/testlet/java/io/BufferedOutputStream/interrupt.java96
-rw-r--r--gnu/testlet/java/io/BufferedReader/CVS/Entries5
-rw-r--r--gnu/testlet/java/io/BufferedReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedReader/MarkReset.java176
-rw-r--r--gnu/testlet/java/io/BufferedReader/SimpleRead.java69
-rw-r--r--gnu/testlet/java/io/BufferedReader/boundary.java66
-rw-r--r--gnu/testlet/java/io/BufferedReader/mark.java79
-rw-r--r--gnu/testlet/java/io/BufferedWriter/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/BufferedWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/BufferedWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/BufferedWriter/Test.java71
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java71
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/ProtectedVars.java80
-rw-r--r--gnu/testlet/java/io/ByteArrayInputStream/SimpleRead.java65
-rw-r--r--gnu/testlet/java/io/ByteArrayOutputStream/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/ByteArrayOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ByteArrayOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ByteArrayOutputStream/subclass.java48
-rw-r--r--gnu/testlet/java/io/ByteArrayOutputStream/write.java76
-rw-r--r--gnu/testlet/java/io/CVS/Entries1
-rw-r--r--gnu/testlet/java/io/CVS/Entries.Log65
-rw-r--r--gnu/testlet/java/io/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/CVS/Root1
-rw-r--r--gnu/testlet/java/io/CharArrayReader/CVS/Entries5
-rw-r--r--gnu/testlet/java/io/CharArrayReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/CharArrayReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/CharArrayReader/MarkReset.java81
-rw-r--r--gnu/testlet/java/io/CharArrayReader/OutOfBounds.java79
-rw-r--r--gnu/testlet/java/io/CharArrayReader/ProtectedVars.java80
-rw-r--r--gnu/testlet/java/io/CharArrayReader/SimpleRead.java66
-rw-r--r--gnu/testlet/java/io/CharArrayWriter/BasicTests.java111
-rw-r--r--gnu/testlet/java/io/CharArrayWriter/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/CharArrayWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/CharArrayWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java73
-rw-r--r--gnu/testlet/java/io/CharConversionException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/CharConversionException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/CharConversionException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/CharConversionException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/CharConversionException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/CharConversionException/constructor.java59
-rw-r--r--gnu/testlet/java/io/DataInputOutput/CVS/Entries1
-rw-r--r--gnu/testlet/java/io/DataInputOutput/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/DataInputOutput/CVS/Root1
-rw-r--r--gnu/testlet/java/io/DataInputStream/CVS/Entries8
-rw-r--r--gnu/testlet/java/io/DataInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/DataInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/DataInputStream/ReadReference.java57
-rw-r--r--gnu/testlet/java/io/DataInputStream/ReadReference2.java58
-rw-r--r--gnu/testlet/java/io/DataInputStream/ReadStream.java66
-rw-r--r--gnu/testlet/java/io/DataInputStream/ReadStream2.java70
-rw-r--r--gnu/testlet/java/io/DataInputStream/readLine.java71
-rw-r--r--gnu/testlet/java/io/DataInputStream/reference.databin0 -> 113 bytes
-rw-r--r--gnu/testlet/java/io/DataInputStream/reference2.databin0 -> 61 bytes
-rw-r--r--gnu/testlet/java/io/DataOutputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/DataOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/DataOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/DataOutputStream/WriteRead.java115
-rw-r--r--gnu/testlet/java/io/DataOutputStream/WriteRead2.java116
-rw-r--r--gnu/testlet/java/io/DataOutputStream/writeUTF.java92
-rw-r--r--gnu/testlet/java/io/EOFException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/EOFException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/EOFException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/EOFException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/EOFException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/EOFException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/EOFException/constructor.java59
-rw-r--r--gnu/testlet/java/io/File/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/File/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/File/CVS/Root1
-rw-r--r--gnu/testlet/java/io/File/ExecuteMethods.java68
-rw-r--r--gnu/testlet/java/io/File/ReadMethods.java73
-rw-r--r--gnu/testlet/java/io/File/URI.java63
-rw-r--r--gnu/testlet/java/io/File/UnicodeURI.java75
-rw-r--r--gnu/testlet/java/io/File/WriteMethods.java72
-rw-r--r--gnu/testlet/java/io/File/canWrite.java156
-rw-r--r--gnu/testlet/java/io/File/createFile.java140
-rw-r--r--gnu/testlet/java/io/File/emptyFile.java117
-rw-r--r--gnu/testlet/java/io/File/jdk11.java345
-rw-r--r--gnu/testlet/java/io/File/list.java128
-rw-r--r--gnu/testlet/java/io/File/listFiles.java127
-rw-r--r--gnu/testlet/java/io/File/newFile.java101
-rw-r--r--gnu/testlet/java/io/File/newFileURI.java98
-rw-r--r--gnu/testlet/java/io/File/security.java534
-rw-r--r--gnu/testlet/java/io/FileDescriptor/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/FileDescriptor/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileDescriptor/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileDescriptor/jdk11.java62
-rw-r--r--gnu/testlet/java/io/FileInputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/FileInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileInputStream/fileinputstream.java74
-rw-r--r--gnu/testlet/java/io/FileInputStream/read.java57
-rw-r--r--gnu/testlet/java/io/FileInputStream/security.java95
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/FileNotFoundException/constructor.java59
-rw-r--r--gnu/testlet/java/io/FileOutputStream/CVS/Entries6
-rw-r--r--gnu/testlet/java/io/FileOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileOutputStream/append.java114
-rw-r--r--gnu/testlet/java/io/FileOutputStream/fileoutputstream.java74
-rw-r--r--gnu/testlet/java/io/FileOutputStream/jdk12.java60
-rw-r--r--gnu/testlet/java/io/FileOutputStream/security.java128
-rw-r--r--gnu/testlet/java/io/FileOutputStream/write.java54
-rw-r--r--gnu/testlet/java/io/FilePermission/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/FilePermission/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FilePermission/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FilePermission/simple.java175
-rw-r--r--gnu/testlet/java/io/FilePermission/traversal.java137
-rw-r--r--gnu/testlet/java/io/FilePermission/traversal2.java127
-rw-r--r--gnu/testlet/java/io/FileReader/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/FileReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileReader/jdk11.java82
-rw-r--r--gnu/testlet/java/io/FileWriter/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/FileWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FileWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FileWriter/jdk11.java53
-rw-r--r--gnu/testlet/java/io/FilterInputStream/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/FilterInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FilterInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FilterInputStream/MarkReset.java85
-rw-r--r--gnu/testlet/java/io/FilterInputStream/SimpleRead.java79
-rw-r--r--gnu/testlet/java/io/FilterOutputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/FilterOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FilterOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FilterOutputStream/write.java68
-rw-r--r--gnu/testlet/java/io/FilterReader/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/FilterReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FilterReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FilterReader/MarkReset.java84
-rw-r--r--gnu/testlet/java/io/FilterReader/SimpleRead.java82
-rw-r--r--gnu/testlet/java/io/FilterWriter/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/FilterWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/FilterWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/FilterWriter/MyFilterWriter.java35
-rw-r--r--gnu/testlet/java/io/FilterWriter/write.java68
-rw-r--r--gnu/testlet/java/io/IOError/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/IOError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/IOError/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/IOError/CVS/Root1
-rw-r--r--gnu/testlet/java/io/IOError/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/IOError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/IOError/constructor.java56
-rw-r--r--gnu/testlet/java/io/IOException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/IOException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/IOException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/IOException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/IOException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/IOException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/IOException/constructor.java54
-rw-r--r--gnu/testlet/java/io/InputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/InputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InputStream/Test.java69
-rw-r--r--gnu/testlet/java/io/InputStreamReader/CVS/Entries6
-rw-r--r--gnu/testlet/java/io/InputStreamReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InputStreamReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InputStreamReader/except.java58
-rw-r--r--gnu/testlet/java/io/InputStreamReader/getEncoding.java179
-rw-r--r--gnu/testlet/java/io/InputStreamReader/hang.java65
-rw-r--r--gnu/testlet/java/io/InputStreamReader/jdk11.java58
-rw-r--r--gnu/testlet/java/io/InputStreamReader/utf8.java85
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/InterruptedIOException/constructor.java59
-rw-r--r--gnu/testlet/java/io/InvalidClassException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/InvalidClassException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/InvalidClassException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InvalidClassException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InvalidClassException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/InvalidClassException/constructor.java54
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/InvalidObjectException/constructor.java55
-rw-r--r--gnu/testlet/java/io/LineNumberInputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/LineNumberInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/LineNumberInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/LineNumberInputStream/Test.java96
-rw-r--r--gnu/testlet/java/io/LineNumberReader/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/LineNumberReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/LineNumberReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/LineNumberReader/Test.java147
-rw-r--r--gnu/testlet/java/io/LineNumberReader/Test2.java283
-rw-r--r--gnu/testlet/java/io/LineNumberReader/mark.java70
-rw-r--r--gnu/testlet/java/io/NotActiveException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/NotActiveException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/NotActiveException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/NotActiveException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/NotActiveException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/NotActiveException/constructor.java59
-rw-r--r--gnu/testlet/java/io/NotSerializableException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/NotSerializableException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/NotSerializableException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/NotSerializableException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/NotSerializableException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/NotSerializableException/constructor.java59
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/CVS/Entries26
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Compat1.java99
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Compat1.serial.binbin0 -> 198 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Compat2.java148
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Compat2.serial.binbin0 -> 205 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Deserializable.java123
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/ExtTest.java58
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java113
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/InputTest.java75
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java88
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/OutputTest.java120
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java132
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/SerBase.java39
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/SerTest.java65
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/SerializableLoopA.java46
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/SerializableLoopB.java72
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$BadField.databin0 -> 437 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$CallDefault.databin0 -> 128 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$Extern.databin0 -> 187 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$FinalField.databin0 -> 111 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$GetPutField.databin0 -> 147 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$HairyGraph.databin0 -> 406 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$NoCallDefault.databin0 -> 138 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test$NotSerial.databin0 -> 292 bytes
-rw-r--r--gnu/testlet/java/io/ObjectInputOutput/Test.java449
-rwxr-xr-xgnu/testlet/java/io/ObjectInputOutput/write-ref-data.sh3
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/CVS/Entries7
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java141
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/ReadResolveHelper.java59
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java93
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/readResolve.java138
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/registerValidation.java89
-rw-r--r--gnu/testlet/java/io/ObjectInputStream/security.java108
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/StreamDataTest.java137
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/security.java177
-rw-r--r--gnu/testlet/java/io/ObjectOutputStream/useProtocolVersion.java106
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/A.java16
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/B.java19
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/C.java14
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/CVS/Entries11
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/CVS/Root1
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/Defined.java11
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/DefinedNotFinal.java10
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/DefinedNotStatic.java10
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/NotSerial.java5
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java50
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/Serial.java7
-rw-r--r--gnu/testlet/java/io/ObjectStreamClass/Test.java104
-rw-r--r--gnu/testlet/java/io/OutputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/OutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/OutputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/OutputStream/Test.java80
-rw-r--r--gnu/testlet/java/io/OutputStreamWriter/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/OutputStreamWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/OutputStreamWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/OutputStreamWriter/jdk11.java79
-rw-r--r--gnu/testlet/java/io/PipedReaderWriter/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/PipedReaderWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PipedReaderWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java71
-rw-r--r--gnu/testlet/java/io/PipedReaderWriter/Test.java84
-rw-r--r--gnu/testlet/java/io/PipedStream/CVS/Entries5
-rw-r--r--gnu/testlet/java/io/PipedStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PipedStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java89
-rw-r--r--gnu/testlet/java/io/PipedStream/Test.java96
-rw-r--r--gnu/testlet/java/io/PipedStream/close.java51
-rw-r--r--gnu/testlet/java/io/PipedStream/receive.java69
-rw-r--r--gnu/testlet/java/io/PrintStream/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/PrintStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PrintStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PrintStream/encodings.java95
-rw-r--r--gnu/testlet/java/io/PrintStream/subclass.java64
-rw-r--r--gnu/testlet/java/io/PrintWriter/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/PrintWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PrintWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PrintWriter/checkError.java66
-rw-r--r--gnu/testlet/java/io/PrintWriter/jdk11.java131
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/BufferOverflow.java61
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/ProtectedVars.java61
-rw-r--r--gnu/testlet/java/io/PushbackInputStream/Unread.java83
-rw-r--r--gnu/testlet/java/io/PushbackReader/BufferOverflow.java66
-rw-r--r--gnu/testlet/java/io/PushbackReader/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/PushbackReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/PushbackReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/PushbackReader/Unread.java94
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/CVS/Entries5
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/CVS/Root1
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/jdk11.java290
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/randomaccessfile.java74
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/security.java186
-rw-r--r--gnu/testlet/java/io/RandomAccessFile/setLength.java88
-rw-r--r--gnu/testlet/java/io/Reader/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/Reader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/Reader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/Reader/Test.java123
-rw-r--r--gnu/testlet/java/io/SequenceInputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/SequenceInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/SequenceInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/SequenceInputStream/Test.java87
-rw-r--r--gnu/testlet/java/io/Serializable/BreakMe.java75
-rw-r--r--gnu/testlet/java/io/Serializable/BreakMeTestSer.java60
-rw-r--r--gnu/testlet/java/io/Serializable/CVS/Entries9
-rw-r--r--gnu/testlet/java/io/Serializable/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/Serializable/CVS/Root1
-rw-r--r--gnu/testlet/java/io/Serializable/MyBreakMe.java39
-rw-r--r--gnu/testlet/java/io/Serializable/MyBreakMe.serbin0 -> 63 bytes
-rw-r--r--gnu/testlet/java/io/Serializable/MySerializable.java67
-rw-r--r--gnu/testlet/java/io/Serializable/ParentReadResolve.java111
-rw-r--r--gnu/testlet/java/io/Serializable/ParentWriteReplace.java101
-rw-r--r--gnu/testlet/java/io/Serializable/readResolve.java69
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/StreamCorruptedException/constructor.java59
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/CVS/Entries8
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/Test.java71
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/WordWhiteChars.java56
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/commentchar.java96
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/misc.java73
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/newline.java82
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/slashslash.java71
-rw-r--r--gnu/testlet/java/io/StreamTokenizer/slashstar.java71
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/MarkReset.java65
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java74
-rw-r--r--gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java66
-rw-r--r--gnu/testlet/java/io/StringReader/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/StringReader/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StringReader/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StringReader/Test.java94
-rw-r--r--gnu/testlet/java/io/StringWriter/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/StringWriter/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/StringWriter/CVS/Root1
-rw-r--r--gnu/testlet/java/io/StringWriter/Test.java76
-rw-r--r--gnu/testlet/java/io/SyncFailedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/SyncFailedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/SyncFailedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/SyncFailedException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/SyncFailedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/SyncFailedException/constructor.java55
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/UTFDataFormatException/constructor.java59
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/UnsupportedEncodingException/constructor.java59
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/CVS/Entries5
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/CVS/Root1
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/ReadReference.java65
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/WriteRead.java83
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/mojo.java401
-rw-r--r--gnu/testlet/java/io/Utf8Encoding/utf8test.bin2
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/CVS/Root1
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/io/WriteAbortedException/constructor.java65
-rw-r--r--gnu/testlet/java/io/Writer/CVS/Entries2
-rw-r--r--gnu/testlet/java/io/Writer/CVS/Repository1
-rw-r--r--gnu/testlet/java/io/Writer/CVS/Root1
-rw-r--r--gnu/testlet/java/io/Writer/Test.java107
-rw-r--r--gnu/testlet/java/lang/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/AbstractMethodError/constructor.java59
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ArithmeticException/constructor.java61
-rw-r--r--gnu/testlet/java/lang/Array/CVS/Entries1
-rw-r--r--gnu/testlet/java/lang/Array/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Array/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java92
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java108
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructor.java92
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java108
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredField.java89
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethod.java108
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java73
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ArrayStoreException/constructor.java61
-rw-r--r--gnu/testlet/java/lang/AssertionError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/AssertionError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/AssertionError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/AssertionError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/AssertionError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getConstructor.java106
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java119
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructor.java108
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java121
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/AssertionError/constructor.java83
-rw-r--r--gnu/testlet/java/lang/Boolean/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Boolean/BooleanTest.java129
-rw-r--r--gnu/testlet/java/lang/Boolean/CVS/Entries14
-rw-r--r--gnu/testlet/java/lang/Boolean/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Boolean/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Boolean/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getInterfaces.java58
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Boolean/compareToBoolean.java70
-rw-r--r--gnu/testlet/java/lang/Boolean/compareToObject.java111
-rw-r--r--gnu/testlet/java/lang/Boolean/equals_Boolean.java41
-rw-r--r--gnu/testlet/java/lang/Boolean/get.java42
-rw-r--r--gnu/testlet/java/lang/Boolean/hashcode_Boolean.java36
-rw-r--r--gnu/testlet/java/lang/Boolean/new_Boolean.java48
-rw-r--r--gnu/testlet/java/lang/Boolean/parseBoolean.java50
-rw-r--r--gnu/testlet/java/lang/Boolean/toString.java47
-rw-r--r--gnu/testlet/java/lang/Boolean/value.java38
-rw-r--r--gnu/testlet/java/lang/Boolean/valueOfBoolean.java38
-rw-r--r--gnu/testlet/java/lang/Boolean/valueOfString.java44
-rw-r--r--gnu/testlet/java/lang/Byte/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Byte/ByteTest.java148
-rw-r--r--gnu/testlet/java/lang/Byte/CVS/Entries12
-rw-r--r--gnu/testlet/java/lang/Byte/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Byte/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Byte/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Byte/byteDivide.java252
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Byte/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Byte/compareToObject.java163
-rw-r--r--gnu/testlet/java/lang/Byte/new_Byte.java42
-rw-r--r--gnu/testlet/java/lang/Byte/parseByte.java182
-rw-r--r--gnu/testlet/java/lang/Byte/parseByteRadix.java204
-rw-r--r--gnu/testlet/java/lang/Byte/toString.java49
-rw-r--r--gnu/testlet/java/lang/Byte/valueOfByte.java41
-rw-r--r--gnu/testlet/java/lang/Byte/valueOfString.java139
-rw-r--r--gnu/testlet/java/lang/Byte/valueOfStringRadix.java146
-rw-r--r--gnu/testlet/java/lang/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/CVS/Entries.Log80
-rw-r--r--gnu/testlet/java/lang/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Character/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Character/Blocks.java38
-rw-r--r--gnu/testlet/java/lang/Character/Blocks15.java78
-rw-r--r--gnu/testlet/java/lang/Character/CVS/Entries22
-rw-r--r--gnu/testlet/java/lang/Character/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Character/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Character/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Character/CharInfo.java39
-rw-r--r--gnu/testlet/java/lang/Character/CharacterTest.java182
-rw-r--r--gnu/testlet/java/lang/Character/UnicodeBase.java654
-rw-r--r--gnu/testlet/java/lang/Character/UnicodeData-3.0.0.txt10617
-rw-r--r--gnu/testlet/java/lang/Character/UnicodeData-4.0.0.txt15100
-rw-r--r--gnu/testlet/java/lang/Character/UnicodeData.txt6890
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getInterfaces.java58
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Character/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Character/classify.java78
-rw-r--r--gnu/testlet/java/lang/Character/classify12.java32
-rw-r--r--gnu/testlet/java/lang/Character/consts.java59
-rw-r--r--gnu/testlet/java/lang/Character/digit.java46
-rw-r--r--gnu/testlet/java/lang/Character/equals_Character.java41
-rw-r--r--gnu/testlet/java/lang/Character/forDigit.java38
-rw-r--r--gnu/testlet/java/lang/Character/getNumericValue.java39
-rw-r--r--gnu/testlet/java/lang/Character/getType.java192
-rw-r--r--gnu/testlet/java/lang/Character/getType12.java129
-rw-r--r--gnu/testlet/java/lang/Character/hash.java36
-rw-r--r--gnu/testlet/java/lang/Character/to.java49
-rw-r--r--gnu/testlet/java/lang/Character/unicode.java71
-rw-r--r--gnu/testlet/java/lang/Class/CVS/Entries16
-rw-r--r--gnu/testlet/java/lang/Class/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/lang/Class/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Class/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Class/ClassTest.java606
-rw-r--r--gnu/testlet/java/lang/Class/GetSimpleName.java59
-rw-r--r--gnu/testlet/java/lang/Class/IsAnonymousClass.java58
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getInterfaces.java63
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Class/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Class/init.java184
-rw-r--r--gnu/testlet/java/lang/Class/isAnnotation.java69
-rw-r--r--gnu/testlet/java/lang/Class/isAnnotationPresent.java56
-rw-r--r--gnu/testlet/java/lang/Class/isArray.java103
-rw-r--r--gnu/testlet/java/lang/Class/isPrimitive.java116
-rw-r--r--gnu/testlet/java/lang/Class/newInstance.java332
-rw-r--r--gnu/testlet/java/lang/Class/pkg/CVS/Entries5
-rw-r--r--gnu/testlet/java/lang/Class/pkg/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Class/pkg/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Class/pkg/test1.java28
-rw-r--r--gnu/testlet/java/lang/Class/pkg/test2.java28
-rw-r--r--gnu/testlet/java/lang/Class/pkg/test3.java28
-rw-r--r--gnu/testlet/java/lang/Class/pkg/test4.java28
-rw-r--r--gnu/testlet/java/lang/Class/reflect.java364
-rw-r--r--gnu/testlet/java/lang/Class/reflect2.java124
-rw-r--r--gnu/testlet/java/lang/Class/rf2_help.java66
-rw-r--r--gnu/testlet/java/lang/Class/rf_help.java50
-rw-r--r--gnu/testlet/java/lang/Class/security.java459
-rw-r--r--gnu/testlet/java/lang/Class/serialization.java134
-rw-r--r--gnu/testlet/java/lang/ClassCastException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ClassCastException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ClassCastException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassCastException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassCastException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ClassCastException/constructor.java61
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ClassCircularityError/constructor.java61
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructor.java93
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredField.java90
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethod.java89
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getMethod.java129
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ClassFormatError/constructor.java61
-rw-r--r--gnu/testlet/java/lang/ClassLoader/BootDefinedPackages.java170
-rw-r--r--gnu/testlet/java/lang/ClassLoader/CVS/Entries8
-rw-r--r--gnu/testlet/java/lang/ClassLoader/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassLoader/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassLoader/Resources.java80
-rw-r--r--gnu/testlet/java/lang/ClassLoader/findLoadedClass.java248
-rw-r--r--gnu/testlet/java/lang/ClassLoader/initialize.java228
-rw-r--r--gnu/testlet/java/lang/ClassLoader/loadClass.java211
-rw-r--r--gnu/testlet/java/lang/ClassLoader/redefine.java62
-rw-r--r--gnu/testlet/java/lang/ClassLoader/security.java152
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries5
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Entries43
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotation.java71
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getCanonicalName.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getComponentType.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructor.java95
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructors.java88
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredAnnotations.java91
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredClasses.java57
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructor.java95
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructors.java88
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredField.java93
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredFields.java81
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethod.java93
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethods.java81
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaringClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingClass.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingConstructor.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingMethod.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getField.java89
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getFields.java63
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethod.java131
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethods.java207
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java73
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/constructor.java64
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/getCause.java57
-rw-r--r--gnu/testlet/java/lang/ClassNotFoundException/getException.java57
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Entries21
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getConstructors.java81
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredConstructors.java81
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredFields.java63
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredMethods.java63
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getFields.java63
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getMethods.java200
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/CloneNotSupportedException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/Cloneable/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/Cloneable/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Cloneable/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Cloneable/CloneableTest.java97
-rw-r--r--gnu/testlet/java/lang/Double/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Double/CVS/Entries16
-rw-r--r--gnu/testlet/java/lang/Double/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Double/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Double/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Double/DoubleSetterTest.java94
-rw-r--r--gnu/testlet/java/lang/Double/DoubleTest.java641
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Double/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Double/compare.java60
-rw-r--r--gnu/testlet/java/lang/Double/compareTo.java123
-rw-r--r--gnu/testlet/java/lang/Double/compareToObject.java105
-rw-r--r--gnu/testlet/java/lang/Double/doubleToInt.java93
-rw-r--r--gnu/testlet/java/lang/Double/doubleToLong.java93
-rw-r--r--gnu/testlet/java/lang/Double/doubleToLongBits.java51
-rw-r--r--gnu/testlet/java/lang/Double/doubleToRawLongBits.java51
-rw-r--r--gnu/testlet/java/lang/Double/new_Double.java54
-rw-r--r--gnu/testlet/java/lang/Double/parseDouble.java172
-rw-r--r--gnu/testlet/java/lang/Double/toHexString.java72
-rw-r--r--gnu/testlet/java/lang/Double/valueOf.java172
-rw-r--r--gnu/testlet/java/lang/Double/valueOfDouble.java87
-rw-r--r--gnu/testlet/java/lang/Enum/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/Enum/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Enum/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Enum/PR33183.java44
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/TryCatch.java57
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/InstanceOf.java62
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getModifiers.java67
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getName.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getPackage.java55
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSimpleName.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSuperclass.java55
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isAssignableFrom.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInstance.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInterface.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isLocalClass.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isMemberClass.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isPrimitive.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isSynthetic.java54
-rw-r--r--gnu/testlet/java/lang/EnumConstantNotPresentException/constructor.java56
-rw-r--r--gnu/testlet/java/lang/Error/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/Error/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Error/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Error/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Error/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Error/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Error/constructor.java61
-rw-r--r--gnu/testlet/java/lang/Exception/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/Exception/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Exception/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Exception/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Exception/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Exception/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Exception/constructor.java67
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/ExceptionInInitializerError/constructor.java57
-rw-r--r--gnu/testlet/java/lang/Float/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Float/CVS/Entries11
-rw-r--r--gnu/testlet/java/lang/Float/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Float/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Float/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Float/FloatTest.java527
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Float/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Float/compare.java59
-rw-r--r--gnu/testlet/java/lang/Float/compareTo.java122
-rw-r--r--gnu/testlet/java/lang/Float/floatToInt.java93
-rw-r--r--gnu/testlet/java/lang/Float/floatToLong.java93
-rw-r--r--gnu/testlet/java/lang/Float/new_Float.java48
-rw-r--r--gnu/testlet/java/lang/Float/parseFloat.java172
-rw-r--r--gnu/testlet/java/lang/Float/toHexString.java66
-rw-r--r--gnu/testlet/java/lang/Float/valueOf.java172
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalAccessException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalArgumentException/constructor.java71
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalMonitorStateException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalStateException/constructor.java71
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IllegalThreadStateException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IncompatibleClassChangeError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IncompatibleClassChangeError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/IndexOutOfBoundsException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/InheritableThreadLocal/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/InheritableThreadLocal/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InheritableThreadLocal/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InheritableThreadLocal/simple.java76
-rw-r--r--gnu/testlet/java/lang/InstantiationError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/InstantiationError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InstantiationError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InstantiationError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/InstantiationError/constructor.java57
-rw-r--r--gnu/testlet/java/lang/InstantiationException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/InstantiationException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/InstantiationException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InstantiationException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InstantiationException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/InstantiationException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/Integer/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Integer/CVS/Entries14
-rw-r--r--gnu/testlet/java/lang/Integer/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Integer/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Integer/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Integer/IntegerTest.java353
-rw-r--r--gnu/testlet/java/lang/Integer/Tests15.java89
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Integer/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Integer/compareTo.java133
-rw-r--r--gnu/testlet/java/lang/Integer/compareToObject.java163
-rw-r--r--gnu/testlet/java/lang/Integer/decode.java122
-rw-r--r--gnu/testlet/java/lang/Integer/getInteger.java141
-rw-r--r--gnu/testlet/java/lang/Integer/integerDivide.java252
-rw-r--r--gnu/testlet/java/lang/Integer/integerModulo.java252
-rw-r--r--gnu/testlet/java/lang/Integer/new_Integer.java419
-rw-r--r--gnu/testlet/java/lang/Integer/parseInt.java178
-rw-r--r--gnu/testlet/java/lang/Integer/parseIntRadix.java204
-rw-r--r--gnu/testlet/java/lang/Integer/toString.java53
-rw-r--r--gnu/testlet/java/lang/InternalError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/InternalError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InternalError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InternalError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/InternalError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/InterruptedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/InterruptedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InterruptedException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InterruptedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/InterruptedException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/LinkageError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/LinkageError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/LinkageError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/LinkageError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/LinkageError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/Long/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Long/CVS/Entries13
-rw-r--r--gnu/testlet/java/lang/Long/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Long/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Long/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Long/LongTest.java434
-rw-r--r--gnu/testlet/java/lang/Long/Tests15.java97
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Long/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Long/compareTo.java153
-rw-r--r--gnu/testlet/java/lang/Long/compareToObject.java163
-rw-r--r--gnu/testlet/java/lang/Long/decode.java125
-rw-r--r--gnu/testlet/java/lang/Long/getLong.java97
-rw-r--r--gnu/testlet/java/lang/Long/longDivide.java252
-rw-r--r--gnu/testlet/java/lang/Long/longModulo.java252
-rw-r--r--gnu/testlet/java/lang/Long/new_Long.java349
-rw-r--r--gnu/testlet/java/lang/Long/parseLongRadix.java204
-rw-r--r--gnu/testlet/java/lang/Long/toString.java57
-rw-r--r--gnu/testlet/java/lang/Math/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Math/CVS/Entries18
-rw-r--r--gnu/testlet/java/lang/Math/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Math/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Math/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Math/MathTest.java580
-rw-r--r--gnu/testlet/java/lang/Math/acos.java177
-rw-r--r--gnu/testlet/java/lang/Math/asin.java177
-rw-r--r--gnu/testlet/java/lang/Math/atan.java177
-rw-r--r--gnu/testlet/java/lang/Math/cbrt.java152
-rw-r--r--gnu/testlet/java/lang/Math/cos.java162
-rw-r--r--gnu/testlet/java/lang/Math/cosh.java158
-rw-r--r--gnu/testlet/java/lang/Math/expm1.java177
-rw-r--r--gnu/testlet/java/lang/Math/max.java79
-rw-r--r--gnu/testlet/java/lang/Math/min.java115
-rw-r--r--gnu/testlet/java/lang/Math/rint.java35
-rw-r--r--gnu/testlet/java/lang/Math/sin.java161
-rw-r--r--gnu/testlet/java/lang/Math/sinh.java158
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Entries12
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/acos.java178
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/asin.java178
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/atan.java178
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/cbrt.java152
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/cos.java175
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/cosh.java160
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/expm1.java177
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/sin.java175
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/sinh.java160
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/tan.java176
-rw-r--r--gnu/testlet/java/lang/Math/strictfp_modifier/tanh.java156
-rw-r--r--gnu/testlet/java/lang/Math/tan.java175
-rw-r--r--gnu/testlet/java/lang/Math/tanh.java154
-rw-r--r--gnu/testlet/java/lang/Math/ulp.java44
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NegativeArraySizeException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/NoClassDefFoundError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NoClassDefFoundError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoClassDefFoundError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoClassDefFoundError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NoClassDefFoundError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchFieldException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/InstanceOf.java59
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NoSuchMethodException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/NullPointerException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NullPointerException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NullPointerException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NullPointerException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NullPointerException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NullPointerException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/Number/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/Number/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Number/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Number/NewNumber.java39
-rw-r--r--gnu/testlet/java/lang/Number/NumberTest.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/NumberFormatException/constructor.java59
-rw-r--r--gnu/testlet/java/lang/Object/CVS/Entries6
-rw-r--r--gnu/testlet/java/lang/Object/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Object/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Object/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Object/ObjectTest.java141
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java95
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java126
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getMethods.java120
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/getSuperclass.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/Object/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/Object/clone.java89
-rw-r--r--gnu/testlet/java/lang/Object/constructor.java53
-rw-r--r--gnu/testlet/java/lang/Object/oom.java67
-rw-r--r--gnu/testlet/java/lang/Object/wait.java147
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/TryCatch.java56
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/OutOfMemoryError/constructor.java53
-rw-r--r--gnu/testlet/java/lang/Package/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/Package/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Package/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Package/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Package/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Package/getPackage.java42
-rw-r--r--gnu/testlet/java/lang/Process/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/Process/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Process/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Process/destroy.java71
-rw-r--r--gnu/testlet/java/lang/Process/destroy_child.java47
-rw-r--r--gnu/testlet/java/lang/ProcessBuilder/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/ProcessBuilder/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ProcessBuilder/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ProcessBuilder/simple.java45
-rw-r--r--gnu/testlet/java/lang/Runtime/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/Runtime/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Runtime/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Runtime/security.java234
-rw-r--r--gnu/testlet/java/lang/RuntimeException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/RuntimeException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/RuntimeException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/RuntimeException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/RuntimeException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getConstructors.java110
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredConstructors.java111
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredFields.java103
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/RuntimeException/constructor.java73
-rw-r--r--gnu/testlet/java/lang/SecurityException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/SecurityException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/SecurityException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/SecurityException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/SecurityException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getConstructors.java110
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredConstructors.java110
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/SecurityException/constructor.java74
-rw-r--r--gnu/testlet/java/lang/SecurityManager/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/SecurityManager/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/SecurityManager/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/SecurityManager/thread.java76
-rw-r--r--gnu/testlet/java/lang/Short/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/Short/CVS/Entries5
-rw-r--r--gnu/testlet/java/lang/Short/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/Short/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Short/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Short/ShortTest.java237
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/CVS/Entries20
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/InstanceOf.java57
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getInterfaces.java56
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isAnnotation.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isAnnotationPresent.java60
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isAnonymousClass.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isArray.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isEnum.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/Short/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/Short/hash.java42
-rw-r--r--gnu/testlet/java/lang/Short/toString.java53
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/StackOverflowError/constructor.java55
-rw-r--r--gnu/testlet/java/lang/StrictMath/API_coverage.txt47
-rw-r--r--gnu/testlet/java/lang/StrictMath/CVS/Entries24
-rw-r--r--gnu/testlet/java/lang/StrictMath/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StrictMath/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StrictMath/acos.java176
-rw-r--r--gnu/testlet/java/lang/StrictMath/acos_strictfp.java177
-rw-r--r--gnu/testlet/java/lang/StrictMath/asin.java176
-rw-r--r--gnu/testlet/java/lang/StrictMath/asin_strictfp.java177
-rw-r--r--gnu/testlet/java/lang/StrictMath/atan.java176
-rw-r--r--gnu/testlet/java/lang/StrictMath/atan_strictfp.java177
-rw-r--r--gnu/testlet/java/lang/StrictMath/cbrt.java151
-rw-r--r--gnu/testlet/java/lang/StrictMath/cbrt_strictfp.java150
-rw-r--r--gnu/testlet/java/lang/StrictMath/cos.java173
-rw-r--r--gnu/testlet/java/lang/StrictMath/cos_strictfp.java174
-rw-r--r--gnu/testlet/java/lang/StrictMath/cosh.java157
-rw-r--r--gnu/testlet/java/lang/StrictMath/cosh_strictfp.java159
-rw-r--r--gnu/testlet/java/lang/StrictMath/expm1.java176
-rw-r--r--gnu/testlet/java/lang/StrictMath/expm1_strictfp.java175
-rw-r--r--gnu/testlet/java/lang/StrictMath/sin.java173
-rw-r--r--gnu/testlet/java/lang/StrictMath/sin_strictfp.java174
-rw-r--r--gnu/testlet/java/lang/StrictMath/sinh.java157
-rw-r--r--gnu/testlet/java/lang/StrictMath/sinh_strictfp.java158
-rw-r--r--gnu/testlet/java/lang/StrictMath/tan.java174
-rw-r--r--gnu/testlet/java/lang/StrictMath/tan_strictfp.java175
-rw-r--r--gnu/testlet/java/lang/StrictMath/tanh.java153
-rw-r--r--gnu/testlet/java/lang/StrictMath/tanh_strictfp.java155
-rw-r--r--gnu/testlet/java/lang/String/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java107
-rw-r--r--gnu/testlet/java/lang/String/CVS/Entries22
-rw-r--r--gnu/testlet/java/lang/String/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/String/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/String/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/String/ConsCharset.java72
-rw-r--r--gnu/testlet/java/lang/String/PR35482.java33
-rw-r--r--gnu/testlet/java/lang/String/StringTest.java957
-rw-r--r--gnu/testlet/java/lang/String/charAt.java56
-rw-r--r--gnu/testlet/java/lang/String/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/String/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/String/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/String/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getInterfaces.java59
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/String/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/String/compareTo.java52
-rw-r--r--gnu/testlet/java/lang/String/decode.java155
-rw-r--r--gnu/testlet/java/lang/String/equals.java45
-rw-r--r--gnu/testlet/java/lang/String/getBytes.java57
-rw-r--r--gnu/testlet/java/lang/String/getBytes13.java97
-rw-r--r--gnu/testlet/java/lang/String/getBytes14.java44
-rw-r--r--gnu/testlet/java/lang/String/hash.java42
-rw-r--r--gnu/testlet/java/lang/String/indexOf.java61
-rw-r--r--gnu/testlet/java/lang/String/new_String.java44
-rw-r--r--gnu/testlet/java/lang/String/replaceAll.java36
-rw-r--r--gnu/testlet/java/lang/String/split.java102
-rw-r--r--gnu/testlet/java/lang/String/startsWith.java44
-rw-r--r--gnu/testlet/java/lang/String/substring.java81
-rw-r--r--gnu/testlet/java/lang/String/surrogate.java59
-rw-r--r--gnu/testlet/java/lang/String/to.java35
-rw-r--r--gnu/testlet/java/lang/StringBuffer/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/StringBuffer/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/StringBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringBuffer/PR34840.java41
-rw-r--r--gnu/testlet/java/lang/StringBuffer/StringBufferTest.java461
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getInterfaces.java58
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/StringBuffer/plus.java50
-rw-r--r--gnu/testlet/java/lang/StringBuilder/CVS/Entries1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/InstanceOf.java55
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getInterfaces.java58
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/lang/StringBuilder/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getConstructors.java108
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java108
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java73
-rw-r--r--gnu/testlet/java/lang/System/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/System/CVS/Entries6
-rw-r--r--gnu/testlet/java/lang/System/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/System/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/System/arraycopy.java178
-rw-r--r--gnu/testlet/java/lang/System/getProperty.java67
-rw-r--r--gnu/testlet/java/lang/System/identityHashCode.java57
-rw-r--r--gnu/testlet/java/lang/System/security.java319
-rw-r--r--gnu/testlet/java/lang/Thread/CVS/Entries14
-rw-r--r--gnu/testlet/java/lang/Thread/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/Thread/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/Thread/contextClassLoader.java101
-rw-r--r--gnu/testlet/java/lang/Thread/daemon.java141
-rw-r--r--gnu/testlet/java/lang/Thread/getThreadGroup.java58
-rw-r--r--gnu/testlet/java/lang/Thread/insecurity.java309
-rw-r--r--gnu/testlet/java/lang/Thread/interrupt.java106
-rw-r--r--gnu/testlet/java/lang/Thread/isAlive.java71
-rw-r--r--gnu/testlet/java/lang/Thread/join.java168
-rw-r--r--gnu/testlet/java/lang/Thread/name.java81
-rw-r--r--gnu/testlet/java/lang/Thread/priority.java136
-rw-r--r--gnu/testlet/java/lang/Thread/security.java414
-rw-r--r--gnu/testlet/java/lang/Thread/security10.java322
-rw-r--r--gnu/testlet/java/lang/Thread/sleep.java447
-rw-r--r--gnu/testlet/java/lang/Thread/stop.java123
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/enumerate.java53
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/insecurity.java273
-rw-r--r--gnu/testlet/java/lang/ThreadGroup/security.java324
-rw-r--r--gnu/testlet/java/lang/ThreadLocal/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/ThreadLocal/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ThreadLocal/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ThreadLocal/simple.java79
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredFields.java103
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredMethods.java104
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getMethods.java144
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/UnknownError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/UnknownError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnknownError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnknownError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/UnknownError/constructor.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getConstructors.java110
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredConstructors.java110
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/UnsupportedOperationException/constructor.java73
-rw-r--r--gnu/testlet/java/lang/VerifyError/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/VerifyError/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/lang/VerifyError/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/VerifyError/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/VerifyError/TryCatch.java58
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getConstructors.java106
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredConstructors.java106
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredFields.java102
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredMethods.java95
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getMethods.java142
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/lang/VerifyError/constructor.java61
-rw-r--r--gnu/testlet/java/lang/management/BadGuy.java87
-rw-r--r--gnu/testlet/java/lang/management/CVS/Entries5
-rw-r--r--gnu/testlet/java/lang/management/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/management/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java73
-rw-r--r--gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java97
-rw-r--r--gnu/testlet/java/lang/management/RuntimeMXBeanTest.java196
-rw-r--r--gnu/testlet/java/lang/ref/CVS/Entries1
-rw-r--r--gnu/testlet/java/lang/ref/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/lang/ref/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ref/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ref/PhantomReference/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/ref/PhantomReference/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ref/PhantomReference/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ref/PhantomReference/phantom.java118
-rw-r--r--gnu/testlet/java/lang/ref/WeakReference/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/ref/WeakReference/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/ref/WeakReference/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/ref/WeakReference/weakref.java96
-rw-r--r--gnu/testlet/java/lang/reflect/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/AccessibleObject/accessible.java85
-rw-r--r--gnu/testlet/java/lang/reflect/AccessibleObject/security.java138
-rw-r--r--gnu/testlet/java/lang/reflect/Array/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/reflect/Array/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Array/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Array/newInstance.java418
-rw-r--r--gnu/testlet/java/lang/reflect/Array/set.java80
-rw-r--r--gnu/testlet/java/lang/reflect/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/reflect/CVS/Entries.Log9
-rw-r--r--gnu/testlet/java/lang/reflect/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Constructor/CVS/Entries3
-rw-r--r--gnu/testlet/java/lang/reflect/Constructor/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Constructor/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Constructor/newInstance.java160
-rw-r--r--gnu/testlet/java/lang/reflect/Constructor/toString.java62
-rw-r--r--gnu/testlet/java/lang/reflect/Field/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/reflect/Field/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Field/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Field/access.java45
-rw-r--r--gnu/testlet/java/lang/reflect/Field/promotion.java757
-rw-r--r--gnu/testlet/java/lang/reflect/Field/toString.java58
-rw-r--r--gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Entries2
-rw-r--r--gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/InvocationTargetException/Chain.java58
-rw-r--r--gnu/testlet/java/lang/reflect/Method/CVS/Entries5
-rw-r--r--gnu/testlet/java/lang/reflect/Method/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Method/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Method/equals.java80
-rw-r--r--gnu/testlet/java/lang/reflect/Method/iface.java28
-rw-r--r--gnu/testlet/java/lang/reflect/Method/invoke.java230
-rw-r--r--gnu/testlet/java/lang/reflect/Method/toString.java128
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/.cvsignore1
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/toString.java60
-rw-r--r--gnu/testlet/java/lang/reflect/Modifier/toString12.java53
-rw-r--r--gnu/testlet/java/lang/reflect/Other.java24
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/CVS/Entries6
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/DeclaringClass.java168
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/ExceptionRaising.java176
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/ProxyUtils.java133
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/ToString.java89
-rw-r--r--gnu/testlet/java/lang/reflect/Proxy/check13.java105
-rw-r--r--gnu/testlet/java/lang/reflect/ReflectAccess.java255
-rw-r--r--gnu/testlet/java/lang/reflect/sub/CVS/Entries4
-rw-r--r--gnu/testlet/java/lang/reflect/sub/CVS/Repository1
-rw-r--r--gnu/testlet/java/lang/reflect/sub/CVS/Root1
-rw-r--r--gnu/testlet/java/lang/reflect/sub/InvokeHelper.java33
-rw-r--r--gnu/testlet/java/lang/reflect/sub/OtherPkg.java20
-rw-r--r--gnu/testlet/java/lang/reflect/sub/Super.java25
-rw-r--r--gnu/testlet/java/math/BigDecimal/CVS/Entries39
-rw-r--r--gnu/testlet/java/math/BigDecimal/CVS/Repository1
-rw-r--r--gnu/testlet/java/math/BigDecimal/CVS/Root1
-rw-r--r--gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java2443
-rw-r--r--gnu/testlet/java/math/BigDecimal/abs.java90
-rw-r--r--gnu/testlet/java/math/BigDecimal/add.java111
-rw-r--r--gnu/testlet/java/math/BigDecimal/byteValue.java60
-rw-r--r--gnu/testlet/java/math/BigDecimal/byteValueExact.java83
-rw-r--r--gnu/testlet/java/math/BigDecimal/compareTo.java139
-rw-r--r--gnu/testlet/java/math/BigDecimal/compareToObject.java200
-rw-r--r--gnu/testlet/java/math/BigDecimal/construct.java47
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorBigInteger.java131
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorCharacterSequence.java169
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorDouble.java112
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorInt.java93
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorLong.java93
-rw-r--r--gnu/testlet/java/math/BigDecimal/constructorString.java231
-rw-r--r--gnu/testlet/java/math/BigDecimal/divide.java387
-rw-r--r--gnu/testlet/java/math/BigDecimal/divideMathContext.java116
-rw-r--r--gnu/testlet/java/math/BigDecimal/divideRoundingMode.java120
-rw-r--r--gnu/testlet/java/math/BigDecimal/divideRoundingModeScale.java201
-rw-r--r--gnu/testlet/java/math/BigDecimal/divideToIntegralValue.java170
-rw-r--r--gnu/testlet/java/math/BigDecimal/hashCode.java104
-rw-r--r--gnu/testlet/java/math/BigDecimal/intValue.java66
-rw-r--r--gnu/testlet/java/math/BigDecimal/intValueExact.java78
-rw-r--r--gnu/testlet/java/math/BigDecimal/longValue.java62
-rw-r--r--gnu/testlet/java/math/BigDecimal/longValueExact.java73
-rw-r--r--gnu/testlet/java/math/BigDecimal/multiply.java111
-rw-r--r--gnu/testlet/java/math/BigDecimal/negate.java95
-rw-r--r--gnu/testlet/java/math/BigDecimal/plus.java95
-rw-r--r--gnu/testlet/java/math/BigDecimal/pow.java166
-rw-r--r--gnu/testlet/java/math/BigDecimal/precision.java61
-rw-r--r--gnu/testlet/java/math/BigDecimal/setScale.java123
-rw-r--r--gnu/testlet/java/math/BigDecimal/shortValue.java62
-rw-r--r--gnu/testlet/java/math/BigDecimal/shortValueExact.java74
-rw-r--r--gnu/testlet/java/math/BigDecimal/subtract.java111
-rw-r--r--gnu/testlet/java/math/BigDecimal/toEngineeringString.java96
-rw-r--r--gnu/testlet/java/math/BigDecimal/toPlainString.java96
-rw-r--r--gnu/testlet/java/math/BigDecimal/valueOfDouble.java57
-rw-r--r--gnu/testlet/java/math/BigDecimal/valueOfLong.java44
-rw-r--r--gnu/testlet/java/math/BigDecimal/valueOfLongInt.java56
-rw-r--r--gnu/testlet/java/math/BigInteger/CVS/Entries18
-rw-r--r--gnu/testlet/java/math/BigInteger/CVS/Repository1
-rw-r--r--gnu/testlet/java/math/BigInteger/CVS/Root1
-rw-r--r--gnu/testlet/java/math/BigInteger/TestOfPR27372.java176
-rw-r--r--gnu/testlet/java/math/BigInteger/TestOfToByteArray.java56
-rw-r--r--gnu/testlet/java/math/BigInteger/abs.java53
-rw-r--r--gnu/testlet/java/math/BigInteger/add.java69
-rw-r--r--gnu/testlet/java/math/BigInteger/compareTo.java100
-rw-r--r--gnu/testlet/java/math/BigInteger/ctor.java192
-rw-r--r--gnu/testlet/java/math/BigInteger/divide.java102
-rw-r--r--gnu/testlet/java/math/BigInteger/equals.java92
-rw-r--r--gnu/testlet/java/math/BigInteger/modInverse.java106
-rw-r--r--gnu/testlet/java/math/BigInteger/modPow.java45
-rw-r--r--gnu/testlet/java/math/BigInteger/multiply.java76
-rw-r--r--gnu/testlet/java/math/BigInteger/serialization.java75
-rw-r--r--gnu/testlet/java/math/BigInteger/setBit.java57
-rw-r--r--gnu/testlet/java/math/BigInteger/shift.java52
-rw-r--r--gnu/testlet/java/math/BigInteger/signum.java54
-rw-r--r--gnu/testlet/java/math/BigInteger/toString.java44
-rw-r--r--gnu/testlet/java/math/BigInteger/valueOf.java47
-rw-r--r--gnu/testlet/java/math/CVS/Entries1
-rw-r--r--gnu/testlet/java/math/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/math/CVS/Repository1
-rw-r--r--gnu/testlet/java/math/CVS/Root1
-rw-r--r--gnu/testlet/java/net/Authenticator/CVS/Entries1
-rw-r--r--gnu/testlet/java/net/Authenticator/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/Authenticator/CVS/Root1
-rw-r--r--gnu/testlet/java/net/CVS/Entries1
-rw-r--r--gnu/testlet/java/net/CVS/Entries.Log19
-rw-r--r--gnu/testlet/java/net/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/CVS/Root1
-rw-r--r--gnu/testlet/java/net/DatagramPacket/CVS/Entries6
-rw-r--r--gnu/testlet/java/net/DatagramPacket/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/DatagramPacket/CVS/Root1
-rw-r--r--gnu/testlet/java/net/DatagramPacket/DatagramPacketOffset.java236
-rw-r--r--gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive.java174
-rw-r--r--gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive2.java205
-rw-r--r--gnu/testlet/java/net/DatagramPacket/DatagramPacketTest.java170
-rw-r--r--gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java300
-rw-r--r--gnu/testlet/java/net/DatagramSocket/CVS/Entries7
-rw-r--r--gnu/testlet/java/net/DatagramSocket/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/DatagramSocket/CVS/Root1
-rw-r--r--gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java322
-rw-r--r--gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java383
-rw-r--r--gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java71
-rw-r--r--gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java67
-rw-r--r--gnu/testlet/java/net/DatagramSocket/bind.java50
-rw-r--r--gnu/testlet/java/net/DatagramSocket/security.java283
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/CVS/Entries13
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/CVS/Root1
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java276
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/fileNotFound.java86
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/getOutputStream.java89
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/getRequestProperty.java55
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/illegalStateException.java181
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/nullPointerException.java76
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/postHeaders.java145
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/requestPropertiesTest.java178
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java165
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java319
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/reuseConnection.java547
-rw-r--r--gnu/testlet/java/net/HttpURLConnection/timeout.java260
-rw-r--r--gnu/testlet/java/net/InetAddress/CVS/Entries10
-rw-r--r--gnu/testlet/java/net/InetAddress/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/InetAddress/CVS/Root1
-rw-r--r--gnu/testlet/java/net/InetAddress/IPv6.java49
-rw-r--r--gnu/testlet/java/net/InetAddress/InetAddressTest.java220
-rw-r--r--gnu/testlet/java/net/InetAddress/getAllByName.java60
-rw-r--r--gnu/testlet/java/net/InetAddress/getByAddress.java97
-rw-r--r--gnu/testlet/java/net/InetAddress/getByName.java45
-rw-r--r--gnu/testlet/java/net/InetAddress/getCanonicalHostName.java48
-rw-r--r--gnu/testlet/java/net/InetAddress/getLocalHost.java45
-rw-r--r--gnu/testlet/java/net/InetAddress/isSiteLocalAddress.java62
-rw-r--r--gnu/testlet/java/net/InetAddress/security.java121
-rw-r--r--gnu/testlet/java/net/InetSocketAddress/CVS/Entries3
-rw-r--r--gnu/testlet/java/net/InetSocketAddress/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/InetSocketAddress/CVS/Root1
-rw-r--r--gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java252
-rw-r--r--gnu/testlet/java/net/InetSocketAddress/createUnresolved.java78
-rw-r--r--gnu/testlet/java/net/MulticastSocket/CVS/Entries4
-rw-r--r--gnu/testlet/java/net/MulticastSocket/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/MulticastSocket/CVS/Root1
-rw-r--r--gnu/testlet/java/net/MulticastSocket/MulticastClient.java75
-rw-r--r--gnu/testlet/java/net/MulticastSocket/MulticastServer.java77
-rw-r--r--gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java250
-rw-r--r--gnu/testlet/java/net/NetworkInterface/CVS/Entries4
-rw-r--r--gnu/testlet/java/net/NetworkInterface/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/NetworkInterface/CVS/Root1
-rw-r--r--gnu/testlet/java/net/NetworkInterface/Consistency.java101
-rw-r--r--gnu/testlet/java/net/NetworkInterface/getByName.java58
-rw-r--r--gnu/testlet/java/net/NetworkInterface/security.java88
-rw-r--r--gnu/testlet/java/net/Proxy/CVS/Entries1
-rw-r--r--gnu/testlet/java/net/Proxy/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/Proxy/CVS/Root1
-rw-r--r--gnu/testlet/java/net/ProxySelector/CVS/Entries1
-rw-r--r--gnu/testlet/java/net/ProxySelector/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/ProxySelector/CVS/Root1
-rw-r--r--gnu/testlet/java/net/ServerSocket/AcceptGetLocalPort.java78
-rw-r--r--gnu/testlet/java/net/ServerSocket/AcceptTimeout.java79
-rw-r--r--gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java78
-rw-r--r--gnu/testlet/java/net/ServerSocket/BasicSocketServer.java85
-rw-r--r--gnu/testlet/java/net/ServerSocket/CORBA.java116
-rw-r--r--gnu/testlet/java/net/ServerSocket/CVS/Entries11
-rw-r--r--gnu/testlet/java/net/ServerSocket/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/ServerSocket/CVS/Root1
-rw-r--r--gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java70
-rw-r--r--gnu/testlet/java/net/ServerSocket/MyServerSocket.java47
-rw-r--r--gnu/testlet/java/net/ServerSocket/ReturnOnClose.java118
-rw-r--r--gnu/testlet/java/net/ServerSocket/ServerSocketTest.java290
-rw-r--r--gnu/testlet/java/net/ServerSocket/security.java183
-rw-r--r--gnu/testlet/java/net/Socket/CVS/Entries11
-rw-r--r--gnu/testlet/java/net/Socket/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/Socket/CVS/Root1
-rw-r--r--gnu/testlet/java/net/Socket/ServerThread.java90
-rw-r--r--gnu/testlet/java/net/Socket/SocketBServer.java73
-rw-r--r--gnu/testlet/java/net/Socket/SocketServer.java84
-rw-r--r--gnu/testlet/java/net/Socket/SocketTest.java520
-rw-r--r--gnu/testlet/java/net/Socket/TestSocketImplFactory.java117
-rw-r--r--gnu/testlet/java/net/Socket/jdk12.java65
-rw-r--r--gnu/testlet/java/net/Socket/jdk13.java68
-rw-r--r--gnu/testlet/java/net/Socket/jdk14.java106
-rw-r--r--gnu/testlet/java/net/Socket/security.java216
-rw-r--r--gnu/testlet/java/net/Socket/setSocketImplFactory.java81
-rw-r--r--gnu/testlet/java/net/SocketPermission/CVS/Entries4
-rw-r--r--gnu/testlet/java/net/SocketPermission/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/SocketPermission/CVS/Root1
-rw-r--r--gnu/testlet/java/net/SocketPermission/argument.java130
-rw-r--r--gnu/testlet/java/net/SocketPermission/implies.java290
-rw-r--r--gnu/testlet/java/net/SocketPermission/serialization.java104
-rw-r--r--gnu/testlet/java/net/URI/CVS/Entries9
-rw-r--r--gnu/testlet/java/net/URI/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URI/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URI/ComparisonTest.java80
-rw-r--r--gnu/testlet/java/net/URI/EqualityTest.java66
-rw-r--r--gnu/testlet/java/net/URI/NormalizationTest.java56
-rw-r--r--gnu/testlet/java/net/URI/RelativizationTest.java66
-rw-r--r--gnu/testlet/java/net/URI/ToASCIIStringTest.java51
-rw-r--r--gnu/testlet/java/net/URI/ToStringTest.java80
-rw-r--r--gnu/testlet/java/net/URI/URITest.java533
-rw-r--r--gnu/testlet/java/net/URI/UnicodeURI.java52
-rw-r--r--gnu/testlet/java/net/URL/CVS/Entries5
-rw-r--r--gnu/testlet/java/net/URL/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URL/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URL/MyURLStreamHandler.java39
-rw-r--r--gnu/testlet/java/net/URL/URLTest.java709
-rw-r--r--gnu/testlet/java/net/URL/newURL.java142
-rw-r--r--gnu/testlet/java/net/URL/security.java111
-rw-r--r--gnu/testlet/java/net/URLClassLoader/CVS/Entries5
-rw-r--r--gnu/testlet/java/net/URLClassLoader/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URLClassLoader/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URLClassLoader/getResource.java187
-rw-r--r--gnu/testlet/java/net/URLClassLoader/getResourceBase.java156
-rw-r--r--gnu/testlet/java/net/URLClassLoader/getResourceRemote.java63
-rw-r--r--gnu/testlet/java/net/URLClassLoader/security.java111
-rw-r--r--gnu/testlet/java/net/URLConnection/CVS/Entries11
-rw-r--r--gnu/testlet/java/net/URLConnection/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URLConnection/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URLConnection/Http.java51
-rw-r--r--gnu/testlet/java/net/URLConnection/Jar.java84
-rw-r--r--gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java37
-rw-r--r--gnu/testlet/java/net/URLConnection/MyURLConnection.java40
-rw-r--r--gnu/testlet/java/net/URLConnection/URLConnectionTest.java481
-rw-r--r--gnu/testlet/java/net/URLConnection/getFileNameMap.java43
-rw-r--r--gnu/testlet/java/net/URLConnection/getHeaderFields.java94
-rw-r--r--gnu/testlet/java/net/URLConnection/getPermission.java122
-rw-r--r--gnu/testlet/java/net/URLConnection/getRequestProperties.java72
-rw-r--r--gnu/testlet/java/net/URLConnection/post.java52
-rw-r--r--gnu/testlet/java/net/URLEncoder/CVS/Entries2
-rw-r--r--gnu/testlet/java/net/URLEncoder/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URLEncoder/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URLEncoder/URLEncoderTest.java72
-rw-r--r--gnu/testlet/java/net/URLStreamHandler/CVS/Entries2
-rw-r--r--gnu/testlet/java/net/URLStreamHandler/CVS/Repository1
-rw-r--r--gnu/testlet/java/net/URLStreamHandler/CVS/Root1
-rw-r--r--gnu/testlet/java/net/URLStreamHandler/Except.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/BufferFactory.java29
-rw-r--r--gnu/testlet/java/nio/Buffer/ByteBufferTest.java71
-rw-r--r--gnu/testlet/java/nio/Buffer/CVS/Entries11
-rw-r--r--gnu/testlet/java/nio/Buffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/Buffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/Buffer/CharBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/DoubleBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/FloatBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/IntBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/LongBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/PlainBufferTest.java265
-rw-r--r--gnu/testlet/java/nio/Buffer/ShortBufferTest.java62
-rw-r--r--gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java265
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/Allocating.java418
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/ByteBufferFactory.java29
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/CVS/Entries9
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/GetPut.java484
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/Order.java43
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/TestAllocateDirect.java71
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/compact.java50
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/direct.java49
-rw-r--r--gnu/testlet/java/nio/ByteBuffer/putDouble.java52
-rw-r--r--gnu/testlet/java/nio/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/CVS/Entries.Log10
-rw-r--r--gnu/testlet/java/nio/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/CharBuffer/CVS/Entries3
-rw-r--r--gnu/testlet/java/nio/CharBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/CharBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/CharBuffer/CharSequenceWrapper.java186
-rw-r--r--gnu/testlet/java/nio/CharBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/DoubleBuffer/CVS/Entries3
-rw-r--r--gnu/testlet/java/nio/DoubleBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/DoubleBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/DoubleBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/DoubleBuffer/compareTo.java43
-rw-r--r--gnu/testlet/java/nio/FloatBuffer/CVS/Entries3
-rw-r--r--gnu/testlet/java/nio/FloatBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/FloatBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/FloatBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/FloatBuffer/compareTo.java43
-rw-r--r--gnu/testlet/java/nio/IntBuffer/CVS/Entries3
-rw-r--r--gnu/testlet/java/nio/IntBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/IntBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/IntBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/IntBuffer/compareTo.java72
-rw-r--r--gnu/testlet/java/nio/LongBuffer/CVS/Entries2
-rw-r--r--gnu/testlet/java/nio/LongBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/LongBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/LongBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/ShortBuffer/CVS/Entries2
-rw-r--r--gnu/testlet/java/nio/ShortBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/ShortBuffer/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/ShortBuffer/compact.java51
-rw-r--r--gnu/testlet/java/nio/channels/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/channels/CVS/Entries.Log7
-rw-r--r--gnu/testlet/java/nio/channels/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/Channels/CVS/Entries2
-rw-r--r--gnu/testlet/java/nio/channels/Channels/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/Channels/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/Channels/ChannelsTest.java104
-rw-r--r--gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/CVS/Entries11
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/copyIO.java128
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/lock.java540
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/manyopen.java81
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/map.java101
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/multibufferIO.java46
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java136
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/offsetSingleBuffer.java110
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/offsetSingleDirectBuffer.java110
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java86
-rw-r--r--gnu/testlet/java/nio/channels/FileChannel/truncate.java98
-rw-r--r--gnu/testlet/java/nio/channels/Pipe/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/channels/Pipe/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/Pipe/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/Selector/CVS/Entries2
-rw-r--r--gnu/testlet/java/nio/channels/Selector/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/Selector/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/Selector/testEmptySelect.java72
-rw-r--r--gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/SocketChannel/CVS/Entries2
-rw-r--r--gnu/testlet/java/nio/channels/SocketChannel/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/channels/SocketChannel/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/channels/SocketChannel/select.java167
-rw-r--r--gnu/testlet/java/nio/charset/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/charset/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/nio/charset/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/charset/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/charset/Charset/CVS/Entries7
-rw-r--r--gnu/testlet/java/nio/charset/Charset/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/charset/Charset/CVS/Root1
-rw-r--r--gnu/testlet/java/nio/charset/Charset/UTF8Charset.java77
-rw-r--r--gnu/testlet/java/nio/charset/Charset/canEncode.java42
-rw-r--r--gnu/testlet/java/nio/charset/Charset/encode.java64
-rw-r--r--gnu/testlet/java/nio/charset/Charset/forName.java87
-rw-r--r--gnu/testlet/java/nio/charset/Charset/forName2.java93
-rw-r--r--gnu/testlet/java/nio/charset/Charset/utf16.java56
-rw-r--r--gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Entries1
-rw-r--r--gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Repository1
-rw-r--r--gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Root1
-rw-r--r--gnu/testlet/java/rmi/CVS/Entries1
-rw-r--r--gnu/testlet/java/rmi/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/rmi/CVS/Repository1
-rw-r--r--gnu/testlet/java/rmi/CVS/Root1
-rw-r--r--gnu/testlet/java/rmi/server/CVS/Entries2
-rw-r--r--gnu/testlet/java/rmi/server/CVS/Repository1
-rw-r--r--gnu/testlet/java/rmi/server/CVS/Root1
-rw-r--r--gnu/testlet/java/rmi/server/Uniqueness.java91
-rw-r--r--gnu/testlet/java/security/AccessController/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/AccessController/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/AccessController/CVS/Root1
-rw-r--r--gnu/testlet/java/security/AccessController/contexts.java348
-rw-r--r--gnu/testlet/java/security/AccessController/doPrivileged.java98
-rw-r--r--gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Root1
-rw-r--r--gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java47
-rw-r--r--gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java105
-rw-r--r--gnu/testlet/java/security/AlgorithmParameters/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/AlgorithmParameters/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/AlgorithmParameters/CVS/Root1
-rw-r--r--gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java66
-rw-r--r--gnu/testlet/java/security/AlgorithmParameters/getInstance14.java105
-rw-r--r--gnu/testlet/java/security/BasicPermission/CVS/Entries2
-rw-r--r--gnu/testlet/java/security/BasicPermission/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/BasicPermission/CVS/Root1
-rw-r--r--gnu/testlet/java/security/BasicPermission/newPermission.java108
-rw-r--r--gnu/testlet/java/security/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/CVS/Entries.Log20
-rw-r--r--gnu/testlet/java/security/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/CVS/Root1
-rw-r--r--gnu/testlet/java/security/DigestInputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/security/DigestInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/DigestInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/security/DigestInputStream/readMD5.java63
-rw-r--r--gnu/testlet/java/security/Engine/CVS/Entries2
-rw-r--r--gnu/testlet/java/security/Engine/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/Engine/CVS/Root1
-rw-r--r--gnu/testlet/java/security/Engine/getInstance.java330
-rw-r--r--gnu/testlet/java/security/KeyFactory/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/KeyFactory/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/KeyFactory/CVS/Root1
-rw-r--r--gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java58
-rw-r--r--gnu/testlet/java/security/KeyFactory/getInstance14.java105
-rw-r--r--gnu/testlet/java/security/KeyPairGenerator/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/KeyPairGenerator/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/KeyPairGenerator/CVS/Root1
-rw-r--r--gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java39
-rw-r--r--gnu/testlet/java/security/KeyPairGenerator/getInstance14.java105
-rw-r--r--gnu/testlet/java/security/MessageDigest/CVS/Entries4
-rw-r--r--gnu/testlet/java/security/MessageDigest/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/MessageDigest/CVS/Root1
-rw-r--r--gnu/testlet/java/security/MessageDigest/Instance.java111
-rw-r--r--gnu/testlet/java/security/MessageDigest/MauveDigest.java54
-rw-r--r--gnu/testlet/java/security/MessageDigest/getInstance14.java133
-rw-r--r--gnu/testlet/java/security/Policy/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/Policy/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/Policy/CVS/Root1
-rw-r--r--gnu/testlet/java/security/Policy/Security.java110
-rw-r--r--gnu/testlet/java/security/Policy/setPolicy.java73
-rw-r--r--gnu/testlet/java/security/ProtectionDomain/CVS/Entries3
-rw-r--r--gnu/testlet/java/security/ProtectionDomain/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/ProtectionDomain/CVS/Root1
-rw-r--r--gnu/testlet/java/security/ProtectionDomain/Implies.java73
-rw-r--r--gnu/testlet/java/security/ProtectionDomain/Security.java79
-rw-r--r--gnu/testlet/java/security/Provider/CVS/Entries2
-rw-r--r--gnu/testlet/java/security/Provider/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/Provider/CVS/Root1
-rw-r--r--gnu/testlet/java/security/Provider/NameVersionInfo.java48
-rw-r--r--gnu/testlet/java/security/SecureRandom/CVS/Entries5
-rw-r--r--gnu/testlet/java/security/SecureRandom/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/SecureRandom/CVS/Root1
-rw-r--r--gnu/testlet/java/security/SecureRandom/Instance.java119
-rw-r--r--gnu/testlet/java/security/SecureRandom/MauveSecureRandom.java47
-rw-r--r--gnu/testlet/java/security/SecureRandom/SHA1PRNG.java111
-rw-r--r--gnu/testlet/java/security/SecureRandom/TestOfPR23899.java68
-rw-r--r--gnu/testlet/java/security/Security/CVS/Entries5
-rw-r--r--gnu/testlet/java/security/Security/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/Security/CVS/Root1
-rw-r--r--gnu/testlet/java/security/Security/getAlgorithms.java99
-rw-r--r--gnu/testlet/java/security/Security/getProviders.java342
-rw-r--r--gnu/testlet/java/security/Security/property.java46
-rw-r--r--gnu/testlet/java/security/Security/provider.java126
-rw-r--r--gnu/testlet/java/security/Signature/CVS/Entries4
-rw-r--r--gnu/testlet/java/security/Signature/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/Signature/CVS/Root1
-rw-r--r--gnu/testlet/java/security/Signature/Instance.java118
-rw-r--r--gnu/testlet/java/security/Signature/MauveSignature.java79
-rw-r--r--gnu/testlet/java/security/Signature/getInstance14.java104
-rw-r--r--gnu/testlet/java/security/cert/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/cert/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/security/cert/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/cert/pkix/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/security/cert/pkix/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/pkix/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_1.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_2.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_1.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_2.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_3.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_1.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_2.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_3.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_1.java27
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_2.java29
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_3.java29
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_4.java32
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_1.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_2.java27
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/BaseInvalidTest.java115
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/BaseValidTest.java125
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries104
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest12.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_1.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_2.java29
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_3.java34
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest4.java31
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest5.java31
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest7.java33
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest8.java33
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest9.java35
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLIssuerNameTest5.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLSignatureTest4.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest7.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest8.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedNewWithOldTest5.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedOldWithNewTest2.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidCASignatureTest2.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotAfterDateTest5.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotBeforeDateTest1.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidDSASignatureTest6.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidEESignatureTest3.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotAfterDateTest6.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotBeforeDateTest2.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidLongSerialNumberTest18.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidMissingbasicConstraintsTest1.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingEETest1.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingOrderTest2.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidNegativeSerialNumberTest15.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidOldCRLnextUpdateTest11.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedCATest2.java22
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedEETest3.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidSelfIssuedpathLenConstraintTest16.java23
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLEntryExtensionTest8.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest10.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest9.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidWrongCRLTest6.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest2.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest3.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalcRLSignFalseTest4.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest10.java24
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest11.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest12.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest5.java22
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest6.java22
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest9.java24
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000CRLnextUpdateTest12.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000UTCEEnotAfterDateTest7.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/MissingCRLTest1.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_1.java28
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_2.java31
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_3.java33
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/PKITS.java43
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedCRLSigningKeyTest6.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest3.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest4.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedOldWithNewTest1.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidDSAParameterInheritenceTest5.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidDSASignaturesTest4.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimeCRLnextUpdateTest13.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotAfterDateTest8.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotBeforeDateTest4.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest16.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest17.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingCapitalizationTest5.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingUIDsTest6.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest3.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest4.java19
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidNegativeSerialNumberTest14.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280MandatoryAttributeTypesTest7.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280OptionalAttributeTypesTest8.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidRolloverfromPrintableStringtoUTF8StringTest10.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest15.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest17.java24
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidSignaturesTest1.java18
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidTwoCRLsTest7.java21
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringCaseInsensitiveMatchTest11.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringEncodedNamesTest9.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidbasicConstraintsNotCriticalTest4.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidkeyUsageNotCriticalTest3.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest13.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest14.java26
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest7.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest8.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/Validpre2000UTCnotBeforeDateTest3.java20
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesNoPoliciesTest2EE.crtbin0 -> 627 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest10EE.crtbin0 -> 670 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest13EE.crtbin0 -> 687 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesanyPolicyTest11EE.crtbin0 -> 643 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/AnyPolicyTest14EE.crtbin0 -> 632 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLIssuerNameCACert.crtbin0 -> 640 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLSignatureCACert.crtbin0 -> 638 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadSignedCACert.crtbin0 -> 631 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotAfterDateCACert.crtbin0 -> 638 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotBeforeDateCACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCACert.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crtbin0 -> 661 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyCACert.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyCACert.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/CPSPointerQualifierTest20EE.crtbin0 -> 701 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Entries399
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSACACert.crtbin0 -> 906 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSAParametersInheritedCACert.crtbin0 -> 536 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest12EE.crtbin0 -> 643 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest3EE.crtbin0 -> 645 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest4EE.crtbin0 -> 638 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest5EE.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest7EE.crtbin0 -> 672 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest8EE.crtbin0 -> 670 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest9EE.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/GeneralizedTimeCRLnextUpdateCACert.crtbin0 -> 649 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodCACert.crtbin0 -> 625 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCAPanyPolicyMapping1to2CACert.crtbin0 -> 697 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLIssuerNameTest5EE.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLSignatureTest4EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crtbin0 -> 687 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crtbin0 -> 687 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCASignatureTest2EE.crtbin0 -> 628 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotAfterDateTest5EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotBeforeDateTest1EE.crtbin0 -> 656 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest31EE.crtbin0 -> 710 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest33EE.crtbin0 -> 699 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest38EE.crtbin0 -> 698 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest28EE.crtbin0 -> 778 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest29EE.crtbin0 -> 780 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest10EE.crtbin0 -> 715 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest12EE.crtbin0 -> 720 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest13EE.crtbin0 -> 720 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest15EE.crtbin0 -> 690 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest16EE.crtbin0 -> 690 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest17EE.crtbin0 -> 690 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest20EE.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest2EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest3EE.crtbin0 -> 833 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest7EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest8EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest9EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDSASignatureTest6EE.crtbin0 -> 827 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEESignatureTest3EE.crtbin0 -> 622 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotAfterDateTest6EE.crtbin0 -> 641 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotBeforeDateTest2EE.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest23EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest26EE.crtbin0 -> 743 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidLongSerialNumberTest18EE.crtbin0 -> 677 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingFromanyPolicyTest7EE.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingToanyPolicyTest8EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingCRLTest1EE.crtbin0 -> 638 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingbasicConstraintsTest1EE.crtbin0 -> 669 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingOrderTest2EE.crtbin0 -> 728 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingTest1EE.crtbin0 -> 643 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNegativeSerialNumberTest15EE.crtbin0 -> 666 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidOldCRLnextUpdateTest11EE.crtbin0 -> 658 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest10EE.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest2EE.crtbin0 -> 647 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest4EE.crtbin0 -> 657 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest22EE.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest24EE.crtbin0 -> 722 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest26EE.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedCATest2EE.crtbin0 -> 638 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedEETest3EE.crtbin0 -> 632 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crtbin0 -> 673 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crtbin0 -> 681 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crtbin0 -> 681 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crtbin0 -> 683 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crtbin0 -> 683 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crtbin0 -> 673 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest35EE.crtbin0 -> 716 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest37EE.crtbin0 -> 716 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crtbin0 -> 675 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest10EE.crtbin0 -> 664 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest9EE.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crtbin0 -> 690 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidWrongCRLTest6EE.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest2EE.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest3EE.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest27EE.crtbin0 -> 723 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest31EE.crtbin0 -> 855 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest32EE.crtbin0 -> 855 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest34EE.crtbin0 -> 768 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest35EE.crtbin0 -> 847 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest10EE.crtbin0 -> 813 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest3EE.crtbin0 -> 812 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest4EE.crtbin0 -> 812 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest6EE.crtbin0 -> 812 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest9EE.crtbin0 -> 812 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest2EE.crtbin0 -> 793 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest3EE.crtbin0 -> 793 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest6EE.crtbin0 -> 713 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest8EE.crtbin0 -> 752 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest9EE.crtbin0 -> 656 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest1EE.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest4EE.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest5EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest6EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest1EE.crtbin0 -> 679 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest3EE.crtbin0 -> 672 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest5EE.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest6EE.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crtbin0 -> 683 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crtbin0 -> 691 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crtbin0 -> 691 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crtbin0 -> 699 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsAttributeCertsTest14EE.crtbin0 -> 674 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsCACertsTest12EE.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsUserCertsTest11EE.crtbin0 -> 681 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest15EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest16EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest17EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest20EE.crtbin0 -> 872 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest21EE.crtbin0 -> 872 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest10EE.crtbin0 -> 682 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest11EE.crtbin0 -> 669 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest12EE.crtbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest5EE.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest6EE.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest9EE.crtbin0 -> 664 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000CRLnextUpdateTest12EE.crtbin0 -> 666 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest3EE.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest5EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/LongSerialNumberCACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/Mapping1to2CACert.crtbin0 -> 689 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingFromanyPolicyCACert.crtbin0 -> 690 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingToanyPolicyCACert.crtbin0 -> 694 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/MissingbasicConstraintsCACert.crtbin0 -> 628 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/NameOrderingCACert.crtbin0 -> 709 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/NegativeSerialNumberCACert.crtbin0 -> 643 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoCRLCACert.crtbin0 -> 627 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoPoliciesCACert.crtbin0 -> 607 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoissuingDistributionPointCACert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/OldCRLnextUpdateCACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/OverlappingPoliciesTest6EE.crtbin0 -> 677 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3CACert.crtbin0 -> 707 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subCACert.crtbin0 -> 729 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subsubCACert.crtbin0 -> 709 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234CACert.crtbin0 -> 746 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234subCACert.crtbin0 -> 731 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1anyPolicyMapping1to2CACert.crtbin0 -> 1058 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PanyPolicyMapping1to2CACert.crtbin0 -> 694 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234CACert.crtbin0 -> 693 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subCAP123Cert.crtbin0 -> 677 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subsubCAP123P12Cert.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123CACert.crtbin0 -> 678 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subCAP12Cert.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P1Cert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P2Cert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12CACert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subCAP1Cert.crtbin0 -> 641 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subsubCAP1P2Cert.crtbin0 -> 651 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCA2Cert.crtbin0 -> 647 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCACert.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP3CACert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280MandatoryAttributeTypesCACert.crtbin0 -> 709 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280OptionalAttributeTypesCACert.crtbin0 -> 721 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/RevokedsubCACert.crtbin0 -> 626 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crtbin0 -> 664 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/TrustAnchorRootCertificate.crtbin0 -> 572 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/TwoCRLsCACert.crtbin0 -> 629 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UIDCACert.crtbin0 -> 629 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringCaseInsensitiveMatchCACert.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringEncodedNamesCACert.crtbin0 -> 631 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLEntryExtensionCACert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLExtensionCACert.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest15EE.crtbin0 -> 755 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest16EE.crtbin0 -> 874 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest17EE.crtbin0 -> 743 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest18EE.crtbin0 -> 969 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest19EE.crtbin0 -> 992 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crtbin0 -> 674 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crtbin0 -> 674 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crtbin0 -> 674 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidCertificatePathTest1EE.crtbin0 -> 622 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest30EE.crtbin0 -> 705 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest32EE.crtbin0 -> 705 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNandRFC822nameConstraintsTest27EE.crtbin0 -> 773 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest11EE.crtbin0 -> 714 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest14EE.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest18EE.crtbin0 -> 661 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest19EE.crtbin0 -> 685 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest1EE.crtbin0 -> 684 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest4EE.crtbin0 -> 744 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest5EE.crtbin0 -> 829 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest6EE.crtbin0 -> 684 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSAParameterInheritanceTest5EE.crtbin0 -> 566 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSASignaturesTest4EE.crtbin0 -> 826 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crtbin0 -> 678 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest22EE.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest24EE.crtbin0 -> 740 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest25EE.crtbin0 -> 740 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest16EE.crtbin0 -> 675 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest17EE.crtbin0 -> 675 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingCapitalizationTest5EE.crtbin0 -> 651 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest3EE.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest4EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameUIDsTest6EE.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNegativeSerialNumberTest14EE.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNoissuingDistributionPointTest10EE.crtbin0 -> 793 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest11EE.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest12EE.crtbin0 -> 1068 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest13EE.crtbin0 -> 658 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest14EE.crtbin0 -> 658 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest1EE.crtbin0 -> 645 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest3EE.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest5EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest6EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest9EE.crtbin0 -> 656 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crtbin0 -> 740 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crtbin0 -> 751 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest21EE.crtbin0 -> 720 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest23EE.crtbin0 -> 709 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest25EE.crtbin0 -> 720 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crtbin0 -> 706 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crtbin0 -> 668 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crtbin0 -> 668 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crtbin0 -> 678 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crtbin0 -> 670 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crtbin0 -> 649 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidTwoCRLsTest7EE.crtbin0 -> 635 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest34EE.crtbin0 -> 723 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest36EE.crtbin0 -> 726 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crtbin0 -> 691 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringEncodedNamesTest9EE.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crtbin0 -> 688 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidbasicConstraintsNotCriticalTest4EE.crtbin0 -> 677 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest28EE.crtbin0 -> 873 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest29EE.crtbin0 -> 788 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest30EE.crtbin0 -> 873 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest33EE.crtbin0 -> 853 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest2EE.crtbin0 -> 810 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest5EE.crtbin0 -> 810 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest7EE.crtbin0 -> 810 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest8EE.crtbin0 -> 810 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest1EE.crtbin0 -> 791 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest4EE.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest5EE.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest7EE.crtbin0 -> 791 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitAnyPolicyTest2EE.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest2EE.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest4EE.crtbin0 -> 670 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidkeyUsageNotCriticalTest3EE.crtbin0 -> 661 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlyContainsCACertsTest13EE.crtbin0 -> 675 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest18EE.crtbin0 -> 759 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest19EE.crtbin0 -> 870 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest13EE.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest14EE.crtbin0 -> 684 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest7EE.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest8EE.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/Validpre2000UTCnotBeforeDateTest3EE.crtbin0 -> 649 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest1EE.crtbin0 -> 647 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest2EE.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest4EE.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/WrongCRLCACert.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/anyPolicyCACert.crtbin0 -> 640 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsCriticalcAFalseCACert.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalCACert.crtbin0 -> 647 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalcAFalseCACert.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA1Cert.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA2Cert.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA3Cert.crtbin0 -> 630 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLIndicatorNoBaseCACert.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint1CACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint2CACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA1Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA2Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3cRLIssuerCert.crtbin0 -> 734 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4cRLIssuerCert.crtbin0 -> 861 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA5Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA6Cert.crtbin0 -> 633 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy0CACert.crtbin0 -> 669 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1CACert.crtbin0 -> 669 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedCACert.crtbin0 -> 646 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA1Cert.crtbin0 -> 644 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA2Cert.crtbin0 -> 644 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCAIAP5Cert.crtbin0 -> 670 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subsubCA2Cert.crtbin0 -> 651 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5CACert.crtbin0 -> 669 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subCACert.crtbin0 -> 666 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subsubCACert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicyTest3EE.crtbin0 -> 650 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0CACert.crtbin0 -> 664 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0subCACert.crtbin0 -> 699 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12CACert.crtbin0 -> 682 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCACert.crtbin0 -> 747 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crtbin0 -> 702 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCACert.crtbin0 -> 727 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crtbin0 -> 735 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1CACert.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crtbin0 -> 660 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crtbin0 -> 708 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subCACert.crtbin0 -> 705 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subsubCACert.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5CACert.crtbin0 -> 664 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subCACert.crtbin0 -> 676 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubCACert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubsubCACert.crtbin0 -> 711 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalcRLSignFalseCACert.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalkeyCertSignFalseCACert.crtbin0 -> 656 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalCACert.crtbin0 -> 639 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalcRLSignFalseCACert.crtbin0 -> 653 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crtbin0 -> 657 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1CACert.crtbin0 -> 733 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1SelfIssuedCACert.crtbin0 -> 650 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA1Cert.crtbin0 -> 803 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA2Cert.crtbin0 -> 775 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA3Cert.crtbin0 -> 724 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN2CACert.crtbin0 -> 814 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3CACert.crtbin0 -> 732 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA1Cert.crtbin0 -> 746 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA2Cert.crtbin0 -> 719 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN4CACert.crtbin0 -> 812 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN5CACert.crtbin0 -> 842 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS1CACert.crtbin0 -> 683 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS2CACert.crtbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA1Cert.crtbin0 -> 687 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA2Cert.crtbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA3Cert.crtbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI1CACert.crtbin0 -> 684 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI2CACert.crtbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsAttributeCertsCACert.crtbin0 -> 647 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsCACertsCACert.crtbin0 -> 640 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsUserCertsCACert.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA1Cert.crtbin0 -> 637 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA2Cert.crtbin0 -> 637 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA3Cert.crtbin0 -> 637 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA4Cert.crtbin0 -> 637 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0CACert.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0SelfIssuedCACert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCA2Cert.crtbin0 -> 652 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCACert.crtbin0 -> 651 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1CACert.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedCACert.crtbin0 -> 648 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedsubCACert.crtbin0 -> 654 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1subCACert.crtbin0 -> 651 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6CACert.crtbin0 -> 642 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA0Cert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA1Cert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA4Cert.crtbin0 -> 655 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA00Cert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA11Cert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA41Cert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA11XCert.crtbin0 -> 668 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA41XCert.crtbin0 -> 668 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/pre2000CRLnextUpdateCACert.crtbin0 -> 643 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0CACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subCACert.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubCACert.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubsubCACert.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10CACert.crtbin0 -> 663 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subCACert.crtbin0 -> 661 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubCACert.crtbin0 -> 667 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubsubCACert.crtbin0 -> 673 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2CACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedCACert.crtbin0 -> 656 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedsubCACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2subCACert.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4CACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subCACert.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubCACert.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubsubCACert.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5CACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subCACert.crtbin0 -> 659 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubCACert.crtbin0 -> 665 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubsubCACert.crtbin0 -> 671 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7CACert.crtbin0 -> 662 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subCARE2Cert.crtbin0 -> 681 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crtbin0 -> 693 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crtbin0 -> 683 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLIssuerNameCACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLSignatureCACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadSignedCACRL.crlbin0 -> 318 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotAfterDateCACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotBeforeDateCACRL.crlbin0 -> 326 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crlbin0 -> 377 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedNewKeyCACRL.crlbin0 -> 369 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedOldKeyCACRL.crlbin0 -> 369 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Entries170
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Root1
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSACACRL.crlbin0 -> 219 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSAParametersInheritedCACRL.crlbin0 -> 241 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/GeneralizedTimeCRLnextUpdateCACRL.crlbin0 -> 338 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodCACRL.crlbin0 -> 382 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCACRL.crlbin0 -> 315 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/LongSerialNumberCACRL.crlbin0 -> 381 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/Mapping1to2CACRL.crlbin0 -> 320 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingFromanyPolicyCACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingToanyPolicyCACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/MissingbasicConstraintsCACRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/NameOrderCACRL.crlbin0 -> 396 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/NegativeSerialNumberCACRL.crlbin0 -> 366 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoPoliciesCACRL.crlbin0 -> 319 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoissuingDistributionPointCACRL.crlbin0 -> 335 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/OldCRLnextUpdateCACRL.crlbin0 -> 326 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3CACRL.crlbin0 -> 324 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subCACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subsubCACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234CACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234subCACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1anyPolicyMapping1to2CACRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PanyPolicyMapping1to2CACRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234CACRL.crlbin0 -> 322 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subCAP123CRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subsubCAP123P12CRL.crlbin0 -> 335 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123CACRL.crlbin0 -> 321 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subCAP12CRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP12P1CRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP2P2CRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crlbin0 -> 337 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12CACRL.crlbin0 -> 320 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subCAP1CRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subsubCAP1P2CRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCA2CRL.crlbin0 -> 323 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCACRL.crlbin0 -> 322 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP3CACRL.crlbin0 -> 319 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280MandatoryAttributeTypesCACRL.crlbin0 -> 396 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280OptionalAttributeTypesCACRL.crlbin0 -> 408 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/RevokedsubCACRL.crlbin0 -> 318 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crlbin0 -> 351 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/TrustAnchorRootCRL.crlbin0 -> 317 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCABadCRL.crlbin0 -> 364 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCAGoodCRL.crlbin0 -> 316 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/UIDCACRL.crlbin0 -> 311 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringCaseInsensitiveMatchCACRL.crlbin0 -> 341 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringEncodedNamesCACRL.crlbin0 -> 318 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLEntryExtensionCACRL.crlbin0 -> 392 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLExtensionCACRL.crlbin0 -> 386 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/WrongCRLCACRL.crlbin0 -> 317 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/anyPolicyCACRL.crlbin0 -> 317 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsCriticalcAFalseCACRL.crlbin0 -> 342 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalCACRL.crlbin0 -> 337 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalcAFalseCACRL.crlbin0 -> 346 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1CRL.crlbin0 -> 509 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1deltaCRL.crlbin0 -> 472 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2CRL.crlbin0 -> 441 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2deltaCRL.crlbin0 -> 368 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3CRL.crlbin0 -> 404 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3deltaCRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLIndicatorNoBaseCACRL.crlbin0 -> 348 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint1CACRL.crlbin0 -> 501 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint2CACRL.crlbin0 -> 419 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA1CRL.crlbin0 -> 373 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3CRL.crlbin0 -> 427 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3cRLIssuerCRL.crlbin0 -> 481 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA4cRLIssuerCRL.crlbin0 -> 481 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA5CRL.crlbin0 -> 1408 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy0CACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1CACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA1CRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA2CRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCAIAP5CRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subsubCA2CRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5CACRL.crlbin0 -> 325 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subCACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subsubCACRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0CACRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0subCACRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12CACRL.crlbin0 -> 333 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCACRL.crlbin0 -> 336 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crlbin0 -> 340 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crlbin0 -> 343 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1CACRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subCACRL.crlbin0 -> 335 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subsubCACRL.crlbin0 -> 338 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5CACRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subCACRL.crlbin0 -> 332 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubCACRL.crlbin0 -> 335 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubsubCACRL.crlbin0 -> 338 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalcRLSignFalseCACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crlbin0 -> 343 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalCACRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crlbin0 -> 343 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crlbin0 -> 347 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1CACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA1CRL.crlbin0 -> 359 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA2CRL.crlbin0 -> 359 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA3CRL.crlbin0 -> 359 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN2CACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3CACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA1CRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA2CRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN4CACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN5CACRL.crlbin0 -> 327 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS1CACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS2CACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA1CRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA2CRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA3CRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI1CACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI2CACRL.crlbin0 -> 328 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsAttributeCertsCACRL.crlbin0 -> 351 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsCACertsCACRL.crlbin0 -> 344 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsUserCertsCACRL.crlbin0 -> 346 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1compromiseCRL.crlbin0 -> 378 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1otherreasonsCRL.crlbin0 -> 379 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL1.crlbin0 -> 342 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL2.crlbin0 -> 342 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3compromiseCRL.crlbin0 -> 438 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3otherreasonsCRL.crlbin0 -> 439 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4compromiseCRL.crlbin0 -> 475 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4otherreasonsCRL.crlbin0 -> 476 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0CACRL.crlbin0 -> 326 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCA2CRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCACRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1CACRL.crlbin0 -> 326 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1subCACRL.crlbin0 -> 329 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6CACRL.crlbin0 -> 326 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA0CRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA1CRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA4CRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA00CRL.crlbin0 -> 334 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA11CRL.crlbin0 -> 334 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA41CRL.crlbin0 -> 334 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA11XCRL.crlbin0 -> 338 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA41XCRL.crlbin0 -> 338 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/pre2000CRLnextUpdateCACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0CACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subCACRL.crlbin0 -> 333 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubCACRL.crlbin0 -> 336 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubsubCACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10CACRL.crlbin0 -> 331 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subCACRL.crlbin0 -> 334 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubCACRL.crlbin0 -> 337 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubsubCACRL.crlbin0 -> 340 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2CACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2subCACRL.crlbin0 -> 333 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4CACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subCACRL.crlbin0 -> 333 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubCACRL.crlbin0 -> 336 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubsubCACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5CACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subCACRL.crlbin0 -> 333 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubCACRL.crlbin0 -> 336 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubsubCACRL.crlbin0 -> 339 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7CACRL.crlbin0 -> 330 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subCARE2CRL.crlbin0 -> 336 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crlbin0 -> 342 bytes
-rw-r--r--gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crlbin0 -> 345 bytes
-rw-r--r--gnu/testlet/java/security/hash/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/hash/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/hash/CVS/Root1
-rw-r--r--gnu/testlet/java/security/jce/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/jce/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/jce/CVS/Root1
-rw-r--r--gnu/testlet/java/security/key/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/key/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/security/key/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/key/CVS/Root1
-rw-r--r--gnu/testlet/java/security/key/dss/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/key/dss/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/key/dss/CVS/Root1
-rw-r--r--gnu/testlet/java/security/key/rsa/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/key/rsa/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/key/rsa/CVS/Root1
-rw-r--r--gnu/testlet/java/security/sig/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/sig/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/security/sig/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/sig/CVS/Root1
-rw-r--r--gnu/testlet/java/security/sig/dss/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/sig/dss/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/sig/dss/CVS/Root1
-rw-r--r--gnu/testlet/java/security/sig/rsa/CVS/Entries1
-rw-r--r--gnu/testlet/java/security/sig/rsa/CVS/Repository1
-rw-r--r--gnu/testlet/java/security/sig/rsa/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Array/ArrayTest.java105
-rw-r--r--gnu/testlet/java/sql/Array/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Array/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Array/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Blob/BlobTest.java106
-rw-r--r--gnu/testlet/java/sql/Blob/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Blob/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Blob/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/CVS/Entries1
-rw-r--r--gnu/testlet/java/sql/CVS/Entries.Log10
-rw-r--r--gnu/testlet/java/sql/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Clob/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Clob/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Clob/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Clob/ClobTest.java119
-rw-r--r--gnu/testlet/java/sql/Connection/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Connection/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Connection/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Connection/TestJdbc.java38
-rw-r--r--gnu/testlet/java/sql/DatabaseMetaData/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/DatabaseMetaData/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/DatabaseMetaData/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java81
-rw-r--r--gnu/testlet/java/sql/Date/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Date/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Date/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Date/DateTest.java95
-rw-r--r--gnu/testlet/java/sql/DriverManager/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/DriverManager/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/DriverManager/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/DriverManager/DriverManagerTest.java44
-rw-r--r--gnu/testlet/java/sql/Time/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Time/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Time/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Time/TimeTest.java103
-rw-r--r--gnu/testlet/java/sql/Timestamp/CVS/Entries2
-rw-r--r--gnu/testlet/java/sql/Timestamp/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Timestamp/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Timestamp/TimestampTest.java81
-rw-r--r--gnu/testlet/java/sql/Types/CVS/Entries3
-rw-r--r--gnu/testlet/java/sql/Types/CVS/Repository1
-rw-r--r--gnu/testlet/java/sql/Types/CVS/Root1
-rw-r--r--gnu/testlet/java/sql/Types/TestJdbc10.java60
-rw-r--r--gnu/testlet/java/sql/Types/TestJdbc20.java46
-rw-r--r--gnu/testlet/java/text/ACIAttribute/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/ACIAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/ACIAttribute/CVS/Root1
-rw-r--r--gnu/testlet/java/text/ACIAttribute/Test.java65
-rw-r--r--gnu/testlet/java/text/Annotation/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/Annotation/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/Annotation/CVS/Root1
-rw-r--r--gnu/testlet/java/text/Annotation/Test.java42
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Root1
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/Attribute/toString.java42
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries6
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/CharItImpl.java84
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/getAttribute.java58
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java163
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/getRunStart.java90
-rw-r--r--gnu/testlet/java/text/AttributedCharacterIterator/implement.java90
-rw-r--r--gnu/testlet/java/text/AttributedString/CVS/Entries6
-rw-r--r--gnu/testlet/java/text/AttributedString/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/AttributedString/CVS/Root1
-rw-r--r--gnu/testlet/java/text/AttributedString/Test.java78
-rw-r--r--gnu/testlet/java/text/AttributedString/addAttribute.java146
-rw-r--r--gnu/testlet/java/text/AttributedString/addAttributes.java116
-rw-r--r--gnu/testlet/java/text/AttributedString/constructors.java272
-rw-r--r--gnu/testlet/java/text/AttributedString/getIterator.java155
-rw-r--r--gnu/testlet/java/text/Bidi/Basic.java68
-rw-r--r--gnu/testlet/java/text/Bidi/CVS/Entries3
-rw-r--r--gnu/testlet/java/text/Bidi/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/Bidi/CVS/Root1
-rw-r--r--gnu/testlet/java/text/Bidi/reorderVisually.java69
-rw-r--r--gnu/testlet/java/text/BreakIterator/CVS/Entries6
-rw-r--r--gnu/testlet/java/text/BreakIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/BreakIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/BreakIterator/chariter.java56
-rw-r--r--gnu/testlet/java/text/BreakIterator/lineiter.java90
-rw-r--r--gnu/testlet/java/text/BreakIterator/patho.java51
-rw-r--r--gnu/testlet/java/text/BreakIterator/sentiter.java96
-rw-r--r--gnu/testlet/java/text/BreakIterator/worditer.java97
-rw-r--r--gnu/testlet/java/text/CVS/Entries1
-rw-r--r--gnu/testlet/java/text/CVS/Entries.Log22
-rw-r--r--gnu/testlet/java/text/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/CVS/Root1
-rw-r--r--gnu/testlet/java/text/CharacterIterator/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/CharacterIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/CharacterIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/CharacterIterator/implement.java91
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/Bad.java75
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/CVS/Entries5
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/format.java76
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/next.java40
-rw-r--r--gnu/testlet/java/text/ChoiceFormat/parse.java59
-rw-r--r--gnu/testlet/java/text/CollationElementIterator/CVS/Entries3
-rw-r--r--gnu/testlet/java/text/CollationElementIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/CollationElementIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/CollationElementIterator/jdk11.java285
-rw-r--r--gnu/testlet/java/text/CollationElementIterator/offset.java61
-rw-r--r--gnu/testlet/java/text/Collator/CVS/Entries3
-rw-r--r--gnu/testlet/java/text/Collator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/Collator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/Collator/Constants.java46
-rw-r--r--gnu/testlet/java/text/Collator/GetSet.java77
-rw-r--r--gnu/testlet/java/text/DateFormat/CVS/Entries4
-rw-r--r--gnu/testlet/java/text/DateFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/DateFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/DateFormat/Test.java109
-rw-r--r--gnu/testlet/java/text/DateFormat/equals.java116
-rw-r--r--gnu/testlet/java/text/DateFormat/hashCode.java49
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/CVS/Entries11
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/CVS/Root1
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/PR22851.java74
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java88
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/Test.java150
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setAmPmStrings.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setEras.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setMonths.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setShortMonths.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setShortWeekdays.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setWeekdays.java61
-rw-r--r--gnu/testlet/java/text/DateFormatSymbols/setZoneStrings.java61
-rw-r--r--gnu/testlet/java/text/DecimalFormat/CVS/Entries37
-rw-r--r--gnu/testlet/java/text/DecimalFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/DecimalFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java137
-rw-r--r--gnu/testlet/java/text/DecimalFormat/PR23996.java61
-rw-r--r--gnu/testlet/java/text/DecimalFormat/PR27311.java53
-rw-r--r--gnu/testlet/java/text/DecimalFormat/applyLocalizedPattern.java71
-rw-r--r--gnu/testlet/java/text/DecimalFormat/applyPattern.java117
-rw-r--r--gnu/testlet/java/text/DecimalFormat/clone.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/constructors.java146
-rw-r--r--gnu/testlet/java/text/DecimalFormat/digits.java73
-rw-r--r--gnu/testlet/java/text/DecimalFormat/equals.java127
-rw-r--r--gnu/testlet/java/text/DecimalFormat/format.java400
-rw-r--r--gnu/testlet/java/text/DecimalFormat/formatExp.java100
-rw-r--r--gnu/testlet/java/text/DecimalFormat/formatToCharacterIterator.java105
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getCurrency.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getDecimalFormatSymbols.java53
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getGroupingSize.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getMultiplier.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getNegativePrefix.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getNegativeSuffix.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java55
-rw-r--r--gnu/testlet/java/text/DecimalFormat/getPositiveSuffix.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/hashCode.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/isDecimalSeparatorAlwaysShown.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/parse.java197
-rw-r--r--gnu/testlet/java/text/DecimalFormat/position.java63
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setCurrency.java64
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setDecimalFormatSymbols.java69
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setDecimalSeparatorAlwaysShown.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setGroupingSize.java56
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setMultiplier.java48
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setNegativePrefix.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setNegativeSuffix.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setPositivePrefix.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/setPositiveSuffix.java50
-rw-r--r--gnu/testlet/java/text/DecimalFormat/toLocalizedPattern.java51
-rw-r--r--gnu/testlet/java/text/DecimalFormat/toPattern.java112
-rw-r--r--gnu/testlet/java/text/DecimalFormat/toPattern14.java141
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/CVS/Entries7
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/CVS/Root1
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault11.java51
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault12.java44
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/GetSet11.java84
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/GetSet12.java55
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/getCurrency.java44
-rw-r--r--gnu/testlet/java/text/DecimalFormatSymbols/serial.java74
-rw-r--r--gnu/testlet/java/text/FieldPosition/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/FieldPosition/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/FieldPosition/CVS/Root1
-rw-r--r--gnu/testlet/java/text/FieldPosition/Test.java74
-rw-r--r--gnu/testlet/java/text/MessageFormat/CVS/Entries5
-rw-r--r--gnu/testlet/java/text/MessageFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/MessageFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/MessageFormat/attribute.java234
-rw-r--r--gnu/testlet/java/text/MessageFormat/format.java144
-rw-r--r--gnu/testlet/java/text/MessageFormat/format14.java218
-rw-r--r--gnu/testlet/java/text/MessageFormat/parse.java87
-rw-r--r--gnu/testlet/java/text/NumberFormat/CVS/Entries3
-rw-r--r--gnu/testlet/java/text/NumberFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/NumberFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/NumberFormat/PR31895.java55
-rw-r--r--gnu/testlet/java/text/NumberFormat/UK.java227
-rw-r--r--gnu/testlet/java/text/ParseException/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/ParseException/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/ParseException/CVS/Root1
-rw-r--r--gnu/testlet/java/text/ParseException/Test.java44
-rw-r--r--gnu/testlet/java/text/ParsePosition/CVS/Entries2
-rw-r--r--gnu/testlet/java/text/ParsePosition/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/ParsePosition/CVS/Root1
-rw-r--r--gnu/testlet/java/text/ParsePosition/Test.java54
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/CVS/Entries4
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/CollatorTests.java119
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java50
-rw-r--r--gnu/testlet/java/text/RuleBasedCollator/jdk11.java539
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/CVS/Entries16
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/CVS/Root1
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/Cloning.java55
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/Localization.java144
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/Test.java127
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java80
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/applyPattern.java76
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/attribute.java209
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/constructors.java179
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/equals.java72
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java32
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java59
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/parse.java141
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/regress.java137
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java73
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/toLocalizedPattern.java50
-rw-r--r--gnu/testlet/java/text/SimpleDateFormat/toPattern.java50
-rw-r--r--gnu/testlet/java/text/StringCharacterIterator/CVS/Entries3
-rw-r--r--gnu/testlet/java/text/StringCharacterIterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/text/StringCharacterIterator/CVS/Root1
-rw-r--r--gnu/testlet/java/text/StringCharacterIterator/constructor.java185
-rw-r--r--gnu/testlet/java/text/StringCharacterIterator/iter.java72
-rw-r--r--gnu/testlet/java/util/.cvsignore1
-rw-r--r--gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java332
-rw-r--r--gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java79
-rw-r--r--gnu/testlet/java/util/AbstractCollection/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/AbstractCollection/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/AbstractCollection/CVS/Root1
-rw-r--r--gnu/testlet/java/util/AbstractCollection/toString.java67
-rw-r--r--gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java571
-rw-r--r--gnu/testlet/java/util/AbstractList/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/AbstractList/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/AbstractList/CVS/Root1
-rw-r--r--gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java408
-rw-r--r--gnu/testlet/java/util/AbstractMap/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/AbstractMap/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/AbstractMap/CVS/Root1
-rw-r--r--gnu/testlet/java/util/AbstractMap/EIterator.java35
-rw-r--r--gnu/testlet/java/util/AbstractMap/ESet.java23
-rw-r--r--gnu/testlet/java/util/AbstractMap/Entry.java39
-rw-r--r--gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java579
-rw-r--r--gnu/testlet/java/util/AbstractSequentialList/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/AbstractSequentialList/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/AbstractSequentialList/CVS/Root1
-rw-r--r--gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java112
-rw-r--r--gnu/testlet/java/util/AbstractSet/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/AbstractSet/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/AbstractSet/CVS/Root1
-rw-r--r--gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java690
-rw-r--r--gnu/testlet/java/util/ArrayList/ArrayList.serbin0 -> 686 bytes
-rw-r--r--gnu/testlet/java/util/ArrayList/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/ArrayList/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/ArrayList/CVS/Root1
-rw-r--r--gnu/testlet/java/util/ArrayList/serial.java118
-rw-r--r--gnu/testlet/java/util/ArrayList/subList.java46
-rw-r--r--gnu/testlet/java/util/Arrays/CVS/Entries6
-rw-r--r--gnu/testlet/java/util/Arrays/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Arrays/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Arrays/asList.java120
-rw-r--r--gnu/testlet/java/util/Arrays/binarySearch.java286
-rw-r--r--gnu/testlet/java/util/Arrays/equals.java206
-rw-r--r--gnu/testlet/java/util/Arrays/fill.java728
-rw-r--r--gnu/testlet/java/util/Arrays/sort.java741
-rw-r--r--gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java428
-rw-r--r--gnu/testlet/java/util/BitSet/CVS/Entries6
-rw-r--r--gnu/testlet/java/util/BitSet/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/BitSet/CVS/Root1
-rw-r--r--gnu/testlet/java/util/BitSet/clear.java109
-rw-r--r--gnu/testlet/java/util/BitSet/flip.java93
-rw-r--r--gnu/testlet/java/util/BitSet/get.java126
-rw-r--r--gnu/testlet/java/util/BitSet/jdk10.java163
-rw-r--r--gnu/testlet/java/util/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/CVS/Entries.Log53
-rw-r--r--gnu/testlet/java/util/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Calendar/CVS/Entries12
-rw-r--r--gnu/testlet/java/util/Calendar/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Calendar/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Calendar/TimeZone.java52
-rw-r--r--gnu/testlet/java/util/Calendar/add.java125
-rw-r--r--gnu/testlet/java/util/Calendar/ampm.java78
-rw-r--r--gnu/testlet/java/util/Calendar/dstOffset.java103
-rw-r--r--gnu/testlet/java/util/Calendar/getInstance.java137
-rw-r--r--gnu/testlet/java/util/Calendar/minmax.java61
-rw-r--r--gnu/testlet/java/util/Calendar/roll.java65
-rw-r--r--gnu/testlet/java/util/Calendar/set.java311
-rw-r--r--gnu/testlet/java/util/Calendar/setTime.java52
-rw-r--r--gnu/testlet/java/util/Calendar/setTimeZone.java45
-rw-r--r--gnu/testlet/java/util/Calendar/simple.java57
-rw-r--r--gnu/testlet/java/util/Collection/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/Collection/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Collection/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Collection/Test.java155
-rw-r--r--gnu/testlet/java/util/Collections/CVS/Entries13
-rw-r--r--gnu/testlet/java/util/Collections/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Collections/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Collections/binarySearch.java226
-rw-r--r--gnu/testlet/java/util/Collections/copy.java115
-rw-r--r--gnu/testlet/java/util/Collections/fill.java90
-rw-r--r--gnu/testlet/java/util/Collections/max.java84
-rw-r--r--gnu/testlet/java/util/Collections/min.java84
-rw-r--r--gnu/testlet/java/util/Collections/nCopies.java109
-rw-r--r--gnu/testlet/java/util/Collections/reverse.java74
-rw-r--r--gnu/testlet/java/util/Collections/reverseOrder.java41
-rw-r--r--gnu/testlet/java/util/Collections/rotate.java74
-rw-r--r--gnu/testlet/java/util/Collections/sort.java248
-rw-r--r--gnu/testlet/java/util/Collections/unmodifiableList.java184
-rw-r--r--gnu/testlet/java/util/Collections/unmodifiableMap.java156
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/TryCatch.java56
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/util/ConcurrentModificationException/constructor.java59
-rw-r--r--gnu/testlet/java/util/Currency/CVS/Entries18
-rw-r--r--gnu/testlet/java/util/Currency/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Currency/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Currency/Canada.java63
-rw-r--r--gnu/testlet/java/util/Currency/CanadaFrench.java63
-rw-r--r--gnu/testlet/java/util/Currency/China.java63
-rw-r--r--gnu/testlet/java/util/Currency/Constructors.java81
-rw-r--r--gnu/testlet/java/util/Currency/Czech.java63
-rw-r--r--gnu/testlet/java/util/Currency/France.java97
-rw-r--r--gnu/testlet/java/util/Currency/Germany.java97
-rw-r--r--gnu/testlet/java/util/Currency/Italy.java97
-rw-r--r--gnu/testlet/java/util/Currency/Japan.java63
-rw-r--r--gnu/testlet/java/util/Currency/Korea.java63
-rw-r--r--gnu/testlet/java/util/Currency/PRC.java63
-rw-r--r--gnu/testlet/java/util/Currency/ReferenceEquality.java59
-rw-r--r--gnu/testlet/java/util/Currency/Slovak.java63
-rw-r--r--gnu/testlet/java/util/Currency/Taiwan.java63
-rw-r--r--gnu/testlet/java/util/Currency/UK.java63
-rw-r--r--gnu/testlet/java/util/Currency/US.java66
-rw-r--r--gnu/testlet/java/util/Currency/getInstance.java119
-rw-r--r--gnu/testlet/java/util/Date/CVS/Entries10
-rw-r--r--gnu/testlet/java/util/Date/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Date/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Date/after.java65
-rw-r--r--gnu/testlet/java/util/Date/before.java66
-rw-r--r--gnu/testlet/java/util/Date/clone.java49
-rw-r--r--gnu/testlet/java/util/Date/compareTo.java123
-rw-r--r--gnu/testlet/java/util/Date/equals.java53
-rw-r--r--gnu/testlet/java/util/Date/getTimezoneOffset.java56
-rw-r--r--gnu/testlet/java/util/Date/parse.java85
-rw-r--r--gnu/testlet/java/util/Date/range.java62
-rw-r--r--gnu/testlet/java/util/Date/serialization.java68
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/TryCatch.java56
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/constructor.java51
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/getFlags.java56
-rw-r--r--gnu/testlet/java/util/DuplicateFormatFlagsException/getMessage.java57
-rw-r--r--gnu/testlet/java/util/EmptyStackException/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/EmptyStackException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/EmptyStackException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/EmptyStackException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/EmptyStackException/TryCatch.java56
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/InstanceOf.java61
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/util/EmptyStackException/constructor.java50
-rw-r--r--gnu/testlet/java/util/EnumSet/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/EnumSet/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/EnumSet/CVS/Root1
-rw-r--r--gnu/testlet/java/util/EnumSet/Colour.java38
-rw-r--r--gnu/testlet/java/util/EnumSet/ComplementOf.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries6
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/TryCatch.java56
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/InstanceOf.java65
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/constructor.java51
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/getConversion.java62
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/getFlags.java56
-rw-r--r--gnu/testlet/java/util/FormatFlagsConversionMismatchException/getMessage.java68
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/TryCatch.java56
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Entries15
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/InstanceOf.java63
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getInterfaces.java55
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getModifiers.java66
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getName.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getPackage.java54
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getSimpleName.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/getSuperclass.java54
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isAssignableFrom.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isInstance.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isInterface.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isLocalClass.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isMemberClass.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isPrimitive.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/classInfo/isSynthetic.java53
-rw-r--r--gnu/testlet/java/util/FormatterClosedException/constructor.java50
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/CVS/Entries11
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/CVS/Root1
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/conversion.java159
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java124
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/equals.java83
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/first.java57
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/getMinimalDaysInFirstWeek.java70
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/getMinimum.java55
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/internal.java434
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/setFirstDayOfWeek.java75
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/setWeekOfMonth.java77
-rw-r--r--gnu/testlet/java/util/GregorianCalendar/weekOfYear.java154
-rw-r--r--gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java602
-rw-r--r--gnu/testlet/java/util/HashMap/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/HashMap/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/HashMap/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Hashtable/.cvsignore1
-rw-r--r--gnu/testlet/java/util/Hashtable/AcuniaHashtableTest.java632
-rw-r--r--gnu/testlet/java/util/Hashtable/CVS/Entries8
-rw-r--r--gnu/testlet/java/util/Hashtable/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Hashtable/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Hashtable/ContainsHash.java53
-rw-r--r--gnu/testlet/java/util/Hashtable/EnumerateAndModify.java159
-rw-r--r--gnu/testlet/java/util/Hashtable/HashContains.java59
-rw-r--r--gnu/testlet/java/util/Hashtable/NullValue.java63
-rw-r--r--gnu/testlet/java/util/Hashtable/basic.java85
-rw-r--r--gnu/testlet/java/util/IdentityHashMap/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/IdentityHashMap/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IdentityHashMap/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IdentityHashMap/simple.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java58
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredFields.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredMethods.java106
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getMethods.java144
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java53
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/getCodePoint.java61
-rw-r--r--gnu/testlet/java/util/IllegalFormatCodePointException/getMessage.java70
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries7
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java58
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/TryCatchNPE.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredFields.java106
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredMethods.java108
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getMethods.java146
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/constructor.java53
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/getArgumentClass.java65
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/getConversion.java61
-rw-r--r--gnu/testlet/java/util/IllegalFormatConversionException/getMessage.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatException/classInfo/InstanceOf.java70
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java58
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredFields.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredMethods.java106
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getMethods.java144
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java53
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/getFlags.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatFlagsException/getMessage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/TryCatch.java58
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/InstanceOf.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredFields.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredMethods.java106
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getMethods.java144
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatPrecisionException/constructor.java53
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/TryCatch.java58
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Entries26
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Root1
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/InstanceOf.java67
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredConstructors.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredFields.java104
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredMethods.java106
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getFields.java95
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getInterfaces.java57
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getMethods.java144
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getModifiers.java68
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getPackage.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSimpleName.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSuperclass.java56
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotation.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotationPresent.java62
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnonymousClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isArray.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAssignableFrom.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isEnum.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInstance.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInterface.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isLocalClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isMemberClass.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isPrimitive.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isSynthetic.java55
-rw-r--r--gnu/testlet/java/util/IllegalFormatWidthException/constructor.java53
-rw-r--r--gnu/testlet/java/util/Iterator/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/Iterator/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Iterator/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Iterator/ConcurrentModification.java169
-rw-r--r--gnu/testlet/java/util/LinkedHashMap/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/LinkedHashMap/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/LinkedHashMap/CVS/Root1
-rw-r--r--gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java588
-rw-r--r--gnu/testlet/java/util/LinkedHashMap/Regress.java54
-rw-r--r--gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java775
-rw-r--r--gnu/testlet/java/util/LinkedList/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/LinkedList/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/LinkedList/CVS/Root1
-rw-r--r--gnu/testlet/java/util/LinkedList/SubListTest.java60
-rw-r--r--gnu/testlet/java/util/LinkedList/subList.java46
-rw-r--r--gnu/testlet/java/util/List/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/List/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/List/CVS/Root1
-rw-r--r--gnu/testlet/java/util/List/subList.java254
-rw-r--r--gnu/testlet/java/util/Observable/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/Observable/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Observable/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Observable/observable.java48
-rw-r--r--gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java545
-rw-r--r--gnu/testlet/java/util/Properties/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/Properties/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Properties/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Properties/getProperty.java106
-rw-r--r--gnu/testlet/java/util/Properties/load.java162
-rw-r--r--gnu/testlet/java/util/Random/.cvsignore1
-rw-r--r--gnu/testlet/java/util/Random/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/Random/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Random/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Random/basic.java97
-rw-r--r--gnu/testlet/java/util/ResourceBundle/.cvsignore1
-rw-r--r--gnu/testlet/java/util/ResourceBundle/CVS/Entries36
-rw-r--r--gnu/testlet/java/util/ResourceBundle/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/ResourceBundle/CVS/Root1
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource1.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource10_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource11.java27
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource11.properties1
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource2_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource3_bo.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_jp.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN_95.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5_jp.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA_WIN.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource6.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource6_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource6_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource6_jp.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource6_jp_JA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource7.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource7_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource7_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource7_jp.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource8.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource8_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource8_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource9_en.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/Resource9_en_CA.java43
-rw-r--r--gnu/testlet/java/util/ResourceBundle/getBundle.java233
-rw-r--r--gnu/testlet/java/util/Scanner/Base.java82
-rw-r--r--gnu/testlet/java/util/Scanner/BigDecimalInteger.java111
-rw-r--r--gnu/testlet/java/util/Scanner/Booleans.java83
-rw-r--r--gnu/testlet/java/util/Scanner/CVS/Entries17
-rw-r--r--gnu/testlet/java/util/Scanner/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Scanner/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Scanner/DoubleFloat.java117
-rw-r--r--gnu/testlet/java/util/Scanner/FileInput.class.hidebin0 -> 2024 bytes
-rw-r--r--gnu/testlet/java/util/Scanner/FileInput.java100
-rw-r--r--gnu/testlet/java/util/Scanner/FindPattern.java70
-rw-r--r--gnu/testlet/java/util/Scanner/FindWithinHorizon.java59
-rw-r--r--gnu/testlet/java/util/Scanner/FishString.java89
-rw-r--r--gnu/testlet/java/util/Scanner/Inputs.java227
-rw-r--r--gnu/testlet/java/util/Scanner/LotsOfInts.java96
-rw-r--r--gnu/testlet/java/util/Scanner/LotsOfPMInts.java98
-rw-r--r--gnu/testlet/java/util/Scanner/LotsOfPMLong.java97
-rw-r--r--gnu/testlet/java/util/Scanner/LotsOfPMShort.java99
-rw-r--r--gnu/testlet/java/util/Scanner/MultiLine.java74
-rw-r--r--gnu/testlet/java/util/Scanner/Radix.java75
-rw-r--r--gnu/testlet/java/util/Scanner/SkipPattern.java55
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/CVS/Entries16
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/CVS/Root1
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/check12.java155
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/check14.java107
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/clone.java49
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/constants.java44
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/constructors.java444
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/equals.java144
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/getDSTSavings.java53
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/getOffset.java79
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/getRawOffset.java44
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java138
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/hashCode.java86
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java229
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/setDSTSavings.java48
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/setRawOffset.java45
-rw-r--r--gnu/testlet/java/util/SimpleTimeZone/setStartYear.java66
-rw-r--r--gnu/testlet/java/util/Stack/AcuniaStackTest.java150
-rw-r--r--gnu/testlet/java/util/Stack/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/Stack/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Stack/CVS/Root1
-rw-r--r--gnu/testlet/java/util/StringTokenizer/CVS/Entries7
-rw-r--r--gnu/testlet/java/util/StringTokenizer/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/StringTokenizer/CVS/Root1
-rw-r--r--gnu/testlet/java/util/StringTokenizer/constructors.java182
-rw-r--r--gnu/testlet/java/util/StringTokenizer/countTokens.java53
-rw-r--r--gnu/testlet/java/util/StringTokenizer/hasMoreElements.java53
-rw-r--r--gnu/testlet/java/util/StringTokenizer/hasMoreTokens.java53
-rw-r--r--gnu/testlet/java/util/StringTokenizer/nextElement.java76
-rw-r--r--gnu/testlet/java/util/StringTokenizer/nextToken.java103
-rw-r--r--gnu/testlet/java/util/TimeZone/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/TimeZone/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/TimeZone/CVS/Root1
-rw-r--r--gnu/testlet/java/util/TimeZone/GetDisplayName.java53
-rw-r--r--gnu/testlet/java/util/TimeZone/setDefault.java44
-rw-r--r--gnu/testlet/java/util/TimeZone/setID.java54
-rw-r--r--gnu/testlet/java/util/TimeZone/zdump.java153
-rw-r--r--gnu/testlet/java/util/Timer/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/Timer/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Timer/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Timer/taskException.java69
-rw-r--r--gnu/testlet/java/util/TreeMap/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/TreeMap/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/TreeMap/CVS/Root1
-rw-r--r--gnu/testlet/java/util/TreeMap/serialization.java69
-rw-r--r--gnu/testlet/java/util/TreeSet/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/TreeSet/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/TreeSet/CVS/Root1
-rw-r--r--gnu/testlet/java/util/TreeSet/basic.java174
-rw-r--r--gnu/testlet/java/util/UUID/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/UUID/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/UUID/CVS/Root1
-rw-r--r--gnu/testlet/java/util/UUID/TestAll.java253
-rw-r--r--gnu/testlet/java/util/Vector/AcuniaVectorTest.java1634
-rw-r--r--gnu/testlet/java/util/Vector/CVS/Entries8
-rw-r--r--gnu/testlet/java/util/Vector/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/Vector/CVS/Root1
-rw-r--r--gnu/testlet/java/util/Vector/TestVector.serbin0 -> 287 bytes
-rw-r--r--gnu/testlet/java/util/Vector/VectorSerialization.java75
-rw-r--r--gnu/testlet/java/util/Vector/copyInto.java89
-rw-r--r--gnu/testlet/java/util/Vector/removeAll.java63
-rw-r--r--gnu/testlet/java/util/Vector/retainAll.java63
-rw-r--r--gnu/testlet/java/util/Vector/subList.java46
-rw-r--r--gnu/testlet/java/util/concurrent/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/concurrent/CVS/Entries.Log1
-rw-r--r--gnu/testlet/java/util/concurrent/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/concurrent/CVS/Root1
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllAbsentTest.java64
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllTest.java142
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Entries10
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Root1
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Clone.java59
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Equals.java81
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveAllTest.java66
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveTest.java72
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RetainAllTest.java65
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java122
-rw-r--r--gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/TestIterators.java153
-rw-r--r--gnu/testlet/java/util/jar/Attributes/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/jar/Attributes/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/jar/Attributes/CVS/Root1
-rw-r--r--gnu/testlet/java/util/jar/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/jar/CVS/Entries.Log4
-rw-r--r--gnu/testlet/java/util/jar/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/jar/CVS/Root1
-rw-r--r--gnu/testlet/java/util/jar/JarFile/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/jar/JarFile/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/jar/JarFile/CVS/Root1
-rw-r--r--gnu/testlet/java/util/jar/JarFile/TestOfManifest.java169
-rw-r--r--gnu/testlet/java/util/jar/JarFile/basic.java98
-rw-r--r--gnu/testlet/java/util/jar/JarFile/jartest.jarbin0 -> 1504 bytes
-rw-r--r--gnu/testlet/java/util/jar/JarFile/jfaceSmall.jarbin0 -> 41767 bytes
-rw-r--r--gnu/testlet/java/util/jar/JarInputStream/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/jar/JarInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/jar/JarInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java63
-rw-r--r--gnu/testlet/java/util/jar/Manifest/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/jar/Manifest/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/jar/Manifest/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/logging/CVS/Entries.Log8
-rw-r--r--gnu/testlet/java/util/logging/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/Handler/CVS/Entries11
-rw-r--r--gnu/testlet/java/util/logging/Handler/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/Handler/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/Handler/TestErrorManager.java61
-rw-r--r--gnu/testlet/java/util/logging/Handler/TestHandler.java59
-rw-r--r--gnu/testlet/java/util/logging/Handler/TestSecurityManager.java77
-rw-r--r--gnu/testlet/java/util/logging/Handler/getErrorManager.java80
-rw-r--r--gnu/testlet/java/util/logging/Handler/isLoggable.java63
-rw-r--r--gnu/testlet/java/util/logging/Handler/reportError.java83
-rw-r--r--gnu/testlet/java/util/logging/Handler/setEncoding.java135
-rw-r--r--gnu/testlet/java/util/logging/Handler/setErrorManager.java105
-rw-r--r--gnu/testlet/java/util/logging/Handler/setFilter.java115
-rw-r--r--gnu/testlet/java/util/logging/Handler/setLevel.java87
-rw-r--r--gnu/testlet/java/util/logging/Level/CVS/Entries8
-rw-r--r--gnu/testlet/java/util/logging/Level/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/Level/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/Level/TestUtils.java77
-rw-r--r--gnu/testlet/java/util/logging/Level/equals.java66
-rw-r--r--gnu/testlet/java/util/logging/Level/getName.java39
-rw-r--r--gnu/testlet/java/util/logging/Level/hashCode.java51
-rw-r--r--gnu/testlet/java/util/logging/Level/intValue.java42
-rw-r--r--gnu/testlet/java/util/logging/Level/parse.java85
-rw-r--r--gnu/testlet/java/util/logging/Level/toString.java39
-rw-r--r--gnu/testlet/java/util/logging/LogManager/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/logging/LogManager/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/LogManager/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/LogManager/Security.java95
-rw-r--r--gnu/testlet/java/util/logging/LogManager/TestHandler.java58
-rw-r--r--gnu/testlet/java/util/logging/LogManager/logging.properties1
-rw-r--r--gnu/testlet/java/util/logging/LogManager/readConfiguration.java75
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/CVS/Entries14
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/getMillis.java54
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/getThreadID.java81
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setLevel.java47
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setLoggerName.java55
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setMessage.java55
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setMillis.java48
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setParameters.java52
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setResourceBundle.java71
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setSequenceNumber.java73
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setSourceClassName.java48
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setSourceMethodName.java48
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setThreadID.java48
-rw-r--r--gnu/testlet/java/util/logging/LogRecord/setThrown.java52
-rw-r--r--gnu/testlet/java/util/logging/Logger/CVS/Entries13
-rw-r--r--gnu/testlet/java/util/logging/Logger/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/Logger/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/Logger/PR35974.java183
-rw-r--r--gnu/testlet/java/util/logging/Logger/TestFilter.java42
-rw-r--r--gnu/testlet/java/util/logging/Logger/TestLogger.java39
-rw-r--r--gnu/testlet/java/util/logging/Logger/TestResourceBundle.java44
-rw-r--r--gnu/testlet/java/util/logging/Logger/TestSecurityManager.java77
-rw-r--r--gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java118
-rw-r--r--gnu/testlet/java/util/logging/Logger/getLogger.java135
-rw-r--r--gnu/testlet/java/util/logging/Logger/getName.java60
-rw-r--r--gnu/testlet/java/util/logging/Logger/getParent.java56
-rw-r--r--gnu/testlet/java/util/logging/Logger/global.java43
-rw-r--r--gnu/testlet/java/util/logging/Logger/hierarchyChecks.java117
-rw-r--r--gnu/testlet/java/util/logging/Logger/securityChecks.java181
-rw-r--r--gnu/testlet/java/util/logging/LoggingMXBean/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/logging/LoggingMXBean/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/LoggingMXBean/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/LoggingMXBean/Test.java91
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/CVS/Entries6
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java129
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/SocketHandler.java58
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/getFilter.java54
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/getFormatter.java55
-rw-r--r--gnu/testlet/java/util/logging/SocketHandler/publish.java74
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/CVS/Root1
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java195
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/getHead.java109
-rw-r--r--gnu/testlet/java/util/logging/XMLFormatter/getTail.java61
-rw-r--r--gnu/testlet/java/util/prefs/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/prefs/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/prefs/CVS/Root1
-rw-r--r--gnu/testlet/java/util/prefs/PreferenceTest.java496
-rw-r--r--gnu/testlet/java/util/regex/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/regex/CVS/Entries.Log2
-rw-r--r--gnu/testlet/java/util/regex/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/regex/CVS/Root1
-rw-r--r--gnu/testlet/java/util/regex/CharacterClasses.java108
-rw-r--r--gnu/testlet/java/util/regex/Matcher/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/regex/Matcher/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/regex/Matcher/CVS/Root1
-rw-r--r--gnu/testlet/java/util/regex/Matcher/Regions.java53
-rw-r--r--gnu/testlet/java/util/regex/Matcher/hitEnd.java154
-rw-r--r--gnu/testlet/java/util/regex/Matcher/quoteReplacement.java46
-rw-r--r--gnu/testlet/java/util/regex/Matcher/usePattern.java54
-rw-r--r--gnu/testlet/java/util/regex/Pattern/CVS/Entries7
-rw-r--r--gnu/testlet/java/util/regex/Pattern/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/regex/Pattern/CVS/Root1
-rw-r--r--gnu/testlet/java/util/regex/Pattern/UnicodeSimpleCategory.java143
-rw-r--r--gnu/testlet/java/util/regex/Pattern/matches.java81
-rw-r--r--gnu/testlet/java/util/regex/Pattern/pcrematches.java213
-rw-r--r--gnu/testlet/java/util/regex/Pattern/testdata13673
-rw-r--r--gnu/testlet/java/util/regex/Pattern/testdata24
-rw-r--r--gnu/testlet/java/util/regex/Pattern/testdata3144
-rw-r--r--gnu/testlet/java/util/regex/PatternSplit.java142
-rw-r--r--gnu/testlet/java/util/regex/TestHelper.java246
-rw-r--r--gnu/testlet/java/util/zip/Adler32/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/zip/Adler32/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/Adler32/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/Adler32/checksum.java94
-rw-r--r--gnu/testlet/java/util/zip/CVS/Entries1
-rw-r--r--gnu/testlet/java/util/zip/CVS/Entries.Log7
-rw-r--r--gnu/testlet/java/util/zip/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/Deflater/CVS/Entries2
-rw-r--r--gnu/testlet/java/util/zip/Deflater/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/Deflater/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/Deflater/PR27435.java61
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/PR24461.java66
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/basic.java101
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/reference.data6
-rw-r--r--gnu/testlet/java/util/zip/GZIPInputStream/reference.gzbin0 -> 253 bytes
-rw-r--r--gnu/testlet/java/util/zip/InflaterInputStream/CVS/Entries3
-rw-r--r--gnu/testlet/java/util/zip/InflaterInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/InflaterInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/InflaterInputStream/basic.java167
-rw-r--r--gnu/testlet/java/util/zip/InflaterInputStream/messages.properties123
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/CVS/Entries5
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/Size.java77
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/newZipEntry.java58
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/setComment.java79
-rw-r--r--gnu/testlet/java/util/zip/ZipEntry/time.java43
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/DirEntryTest.java55
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java60
-rw-r--r--gnu/testlet/java/util/zip/ZipFile/newZipFile.java136
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/CVS/Entries4
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/CVS/Root1
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/basic.java126
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/close.java88
-rw-r--r--gnu/testlet/java/util/zip/ZipInputStream/reference.zipbin0 -> 288 bytes
-rw-r--r--gnu/testlet/javax/CVS/Entries1
-rw-r--r--gnu/testlet/javax/CVS/Entries.Log12
-rw-r--r--gnu/testlet/javax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/CVS/Root1
-rw-r--r--gnu/testlet/javax/accessibility/AccessibleContext/CVS/Entries3
-rw-r--r--gnu/testlet/javax/accessibility/AccessibleContext/CVS/Repository1
-rw-r--r--gnu/testlet/javax/accessibility/AccessibleContext/CVS/Root1
-rw-r--r--gnu/testlet/javax/accessibility/AccessibleContext/TestAccessibleContext.java71
-rw-r--r--gnu/testlet/javax/accessibility/AccessibleContext/getAccessibleRelationSet.java52
-rw-r--r--gnu/testlet/javax/accessibility/CVS/Entries1
-rw-r--r--gnu/testlet/javax/accessibility/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/accessibility/CVS/Repository1
-rw-r--r--gnu/testlet/javax/accessibility/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/CVS/Entries.Log11
-rw-r--r--gnu/testlet/javax/crypto/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/assembly/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/assembly/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/assembly/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/cipher/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/cipher/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/cipher/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/jce/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/jce/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/jce/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/key/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/key/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/crypto/key/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/key/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/key/dh/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/key/dh/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/key/dh/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/key/srp6/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/key/srp6/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/key/srp6/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/keyring/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/keyring/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/keyring/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/mac/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/mac/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/mac/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/mode/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/mode/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/mode/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/pad/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/pad/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/pad/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/prng/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/prng/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/prng/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/sasl/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/sasl/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/crypto/sasl/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/sasl/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/sasl/srp/CVS/Entries1
-rw-r--r--gnu/testlet/javax/crypto/sasl/srp/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/sasl/srp/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/spec/CVS/Entries3
-rw-r--r--gnu/testlet/javax/crypto/spec/CVS/Repository1
-rw-r--r--gnu/testlet/javax/crypto/spec/CVS/Root1
-rw-r--r--gnu/testlet/javax/crypto/spec/TestOfPBEKeySpec.java414
-rw-r--r--gnu/testlet/javax/crypto/spec/TestOfSecretKeySpec.java125
-rw-r--r--gnu/testlet/javax/imageio/CVS/Entries1
-rw-r--r--gnu/testlet/javax/imageio/CVS/Entries.Log4
-rw-r--r--gnu/testlet/javax/imageio/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmpbin0 -> 16450 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmpbin0 -> 3898 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.pngbin0 -> 2142 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmpbin0 -> 82254 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.pngbin0 -> 44285 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmpbin0 -> 32578 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.pngbin0 -> 365 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmpbin0 -> 13818 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.pngbin0 -> 7932 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmpbin0 -> 28478 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.pngbin0 -> 20627 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmpbin0 -> 14300 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmpbin0 -> 29024 bytes
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/CVS/Entries16
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java130
-rw-r--r--gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmpbin0 -> 82254 bytes
-rw-r--r--gnu/testlet/javax/imageio/plugins/CVS/Entries1
-rw-r--r--gnu/testlet/javax/imageio/plugins/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/imageio/plugins/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/plugins/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/CVS/Entries5
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java254
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageReadParam.java162
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java240
-rw-r--r--gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java265
-rw-r--r--gnu/testlet/javax/imageio/spi/CVS/Entries1
-rw-r--r--gnu/testlet/javax/imageio/spi/CVS/Entries.Log7
-rw-r--r--gnu/testlet/javax/imageio/spi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Entries2
-rw-r--r--gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/IIORegistry/getDefaultInstance.java43
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Entries4
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/TestProvider.java43
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVendorName.java49
-rw-r--r--gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVersion.java49
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Entries5
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/ImageInputStreamSpi.java92
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/TestProvider.java53
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/canUseCacheFile.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/needsCacheFile.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Entries5
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/ImageOutputStreamSpi.java92
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/TestProvider.java53
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/canUseCacheFile.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/needsCacheFile.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Entries12
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/TestProvider.java100
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraImageMetadataFormatNames.java46
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraStreamMetadataFormatNames.java46
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFileSuffixes.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFormatNames.java58
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getMIMETypes.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeImageMetadataFormatName.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeStreamMetadataFormatName.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getPluginClassName.java44
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardImageMetadataFormatSupported.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardStreamMetadataFormatSupported.java45
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Entries3
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/ImageTranscoderSpi.java76
-rw-r--r--gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/TestProvider.java59
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Entries12
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplicationService.java49
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierOne.java58
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierThree.java55
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierTwo.java55
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/TestService.java54
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/deregisterAll.java90
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/getCategories.java61
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/getServiceProviderByClass.java72
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/lookupProviders.java264
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/registerServiceProvider.java87
-rw-r--r--gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java102
-rw-r--r--gnu/testlet/javax/imageio/stream/CVS/Entries1
-rw-r--r--gnu/testlet/javax/imageio/stream/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/imageio/stream/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/stream/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Entries4
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/setData.java51
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/setLength.java54
-rw-r--r--gnu/testlet/javax/imageio/stream/IIOByteBuffer/setOffset.java54
-rw-r--r--gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Entries2
-rw-r--r--gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Repository1
-rw-r--r--gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Root1
-rw-r--r--gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java702
-rw-r--r--gnu/testlet/javax/management/CVS/Entries1
-rw-r--r--gnu/testlet/javax/management/CVS/Entries.Log5
-rw-r--r--gnu/testlet/javax/management/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Entries10
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/ChildMXBean.java35
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/Colour.java27
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java167
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/Test.java55
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java172
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java83
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/TestMBean.java40
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/TestX.java69
-rw-r--r--gnu/testlet/javax/management/MBeanServerInvocationHandler/TestXMBean.java43
-rw-r--r--gnu/testlet/javax/management/MBeanServerPermission/CVS/Entries2
-rw-r--r--gnu/testlet/javax/management/MBeanServerPermission/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/MBeanServerPermission/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/MBeanServerPermission/Constructor.java177
-rw-r--r--gnu/testlet/javax/management/ObjectName/CVS/Entries5
-rw-r--r--gnu/testlet/javax/management/ObjectName/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/ObjectName/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/ObjectName/Parsing.java333
-rw-r--r--gnu/testlet/javax/management/ObjectName/ParsingJDK6.java52
-rw-r--r--gnu/testlet/javax/management/ObjectName/apply.java100
-rw-r--r--gnu/testlet/javax/management/ObjectName/applyJDK6.java106
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/CVS/Entries9
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/Constructor1.java155
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/Constructor2.java82
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/Equals.java63
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/GetArrayType.java87
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/GetPrimitiveArrayType.java84
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/HashCode.java61
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/IsPrimitiveArray.java80
-rw-r--r--gnu/testlet/javax/management/openmbean/ArrayType/IsValue.java83
-rw-r--r--gnu/testlet/javax/management/openmbean/CVS/Entries1
-rw-r--r--gnu/testlet/javax/management/openmbean/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/management/openmbean/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/openmbean/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Entries3
-rw-r--r--gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Person.java36
-rw-r--r--gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java104
-rw-r--r--gnu/testlet/javax/management/remote/CVS/Entries3
-rw-r--r--gnu/testlet/javax/management/remote/CVS/Repository1
-rw-r--r--gnu/testlet/javax/management/remote/CVS/Root1
-rw-r--r--gnu/testlet/javax/management/remote/NotificationResultTest.java107
-rw-r--r--gnu/testlet/javax/management/remote/TargetedNotificationTest.java92
-rw-r--r--gnu/testlet/javax/naming/CVS/Entries1
-rw-r--r--gnu/testlet/javax/naming/CVS/Entries.Log3
-rw-r--r--gnu/testlet/javax/naming/CVS/Repository1
-rw-r--r--gnu/testlet/javax/naming/CVS/Root1
-rw-r--r--gnu/testlet/javax/naming/CompositeName/CVS/Entries2
-rw-r--r--gnu/testlet/javax/naming/CompositeName/CVS/Repository1
-rw-r--r--gnu/testlet/javax/naming/CompositeName/CVS/Root1
-rw-r--r--gnu/testlet/javax/naming/CompositeName/composite.java133
-rw-r--r--gnu/testlet/javax/naming/CompoundName/CVS/Entries2
-rw-r--r--gnu/testlet/javax/naming/CompoundName/CVS/Repository1
-rw-r--r--gnu/testlet/javax/naming/CompoundName/CVS/Root1
-rw-r--r--gnu/testlet/javax/naming/CompoundName/simple.java133
-rw-r--r--gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Entries2
-rw-r--r--gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Repository1
-rw-r--r--gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Root1
-rw-r--r--gnu/testlet/javax/naming/directory/BasicAttribute/Enumerate.java55
-rw-r--r--gnu/testlet/javax/naming/directory/CVS/Entries1
-rw-r--r--gnu/testlet/javax/naming/directory/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/naming/directory/CVS/Repository1
-rw-r--r--gnu/testlet/javax/naming/directory/CVS/Root1
-rw-r--r--gnu/testlet/javax/net/CVS/Entries1
-rw-r--r--gnu/testlet/javax/net/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/net/CVS/Repository1
-rw-r--r--gnu/testlet/javax/net/CVS/Root1
-rw-r--r--gnu/testlet/javax/net/ssl/CVS/Entries1
-rw-r--r--gnu/testlet/javax/net/ssl/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/net/ssl/CVS/Repository1
-rw-r--r--gnu/testlet/javax/net/ssl/CVS/Root1
-rw-r--r--gnu/testlet/javax/net/ssl/SSLContext/CVS/Entries3
-rw-r--r--gnu/testlet/javax/net/ssl/SSLContext/CVS/Repository1
-rw-r--r--gnu/testlet/javax/net/ssl/SSLContext/CVS/Root1
-rw-r--r--gnu/testlet/javax/net/ssl/SSLContext/TestDefaultInit.java71
-rw-r--r--gnu/testlet/javax/net/ssl/SSLContext/TestGetInstance.java58
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/AbstractEngineTest.java233
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/CVS/Entries9
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/CVS/Repository1
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/CVS/Root1
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/SimplePSKKeyManager.java61
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509KeyManager.java204
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509TrustManager.java183
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java104
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java86
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java95
-rw-r--r--gnu/testlet/javax/net/ssl/SSLEngine/TestNoProtocols.java59
-rw-r--r--gnu/testlet/javax/print/CVS/Entries1
-rw-r--r--gnu/testlet/javax/print/CVS/Entries.Log3
-rw-r--r--gnu/testlet/javax/print/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/DocFlavor/CVS/Entries3
-rw-r--r--gnu/testlet/javax/print/DocFlavor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/DocFlavor/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/DocFlavor/hostEncoding.java50
-rw-r--r--gnu/testlet/javax/print/DocFlavor/parseMimeType.java199
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/CVS/Entries5
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/constructor.java96
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/getAttributes.java70
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/getReaderForText.java102
-rw-r--r--gnu/testlet/javax/print/SimpleDoc/getStreamForBytes.java74
-rw-r--r--gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/AttributeSetUtilities/simple.java166
-rw-r--r--gnu/testlet/javax/print/attribute/CVS/Entries1
-rw-r--r--gnu/testlet/javax/print/attribute/CVS/Entries.Log8
-rw-r--r--gnu/testlet/javax/print/attribute/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Entries5
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/CorrectEnumSyntax.java62
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/WrongEnumSyntax.java39
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/equals.java58
-rw-r--r--gnu/testlet/javax/print/attribute/EnumSyntax/serialize.java104
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/AnotherSimpleAttribute.java64
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Entries6
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/SimpleAttribute.java64
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/emptySet.java52
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/nullTests.java121
-rw-r--r--gnu/testlet/javax/print/attribute/HashAttributeSet/populatedSet.java93
-rw-r--r--gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java83
-rw-r--r--gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java194
-rw-r--r--gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/Size2DSyntax/simple.java79
-rw-r--r--gnu/testlet/javax/print/attribute/TextSyntax/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/TextSyntax/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/TextSyntax/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/TextSyntax/constructors.java65
-rw-r--r--gnu/testlet/javax/print/attribute/standard/CVS/Entries1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Entries2
-rw-r--r--gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Repository1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Root1
-rw-r--r--gnu/testlet/javax/print/attribute/standard/MediaSize/userClass.java66
-rw-r--r--gnu/testlet/javax/rmi/CORBA/CVS/Entries1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/CVS/Repository1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/CVS/Root1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/CVS/Entries9
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/CVS/Repository1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/CVS/Root1
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/Externa.java68
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/NodeObject.java171
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java285
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/RMI_test.java91
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/RMI_testImpl.java329
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/_RMI_testImpl_Tie.java297
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/_RMI_test_Stub.java1095
-rw-r--r--gnu/testlet/javax/rmi/CORBA/Tie/myStructure.java41
-rw-r--r--gnu/testlet/javax/rmi/CVS/Entries1
-rw-r--r--gnu/testlet/javax/rmi/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/rmi/CVS/Repository1
-rw-r--r--gnu/testlet/javax/rmi/CVS/Root1
-rw-r--r--gnu/testlet/javax/rmi/ssl/CVS/Entries1
-rw-r--r--gnu/testlet/javax/rmi/ssl/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/rmi/ssl/CVS/Repository1
-rw-r--r--gnu/testlet/javax/rmi/ssl/CVS/Root1
-rw-r--r--gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Entries2
-rw-r--r--gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Repository1
-rw-r--r--gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Root1
-rw-r--r--gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/PR34582.java54
-rw-r--r--gnu/testlet/javax/security/CVS/Entries1
-rw-r--r--gnu/testlet/javax/security/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/security/CVS/Repository1
-rw-r--r--gnu/testlet/javax/security/CVS/Root1
-rw-r--r--gnu/testlet/javax/security/auth/CVS/Entries1
-rw-r--r--gnu/testlet/javax/security/auth/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/security/auth/CVS/Repository1
-rw-r--r--gnu/testlet/javax/security/auth/CVS/Root1
-rw-r--r--gnu/testlet/javax/security/auth/login/CVS/Entries5
-rw-r--r--gnu/testlet/javax/security/auth/login/CVS/Repository1
-rw-r--r--gnu/testlet/javax/security/auth/login/CVS/Root1
-rw-r--r--gnu/testlet/javax/security/auth/login/DBLoginModule.java62
-rw-r--r--gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java131
-rw-r--r--gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java233
-rw-r--r--gnu/testlet/javax/security/auth/login/TestOfPR25202.java114
-rw-r--r--gnu/testlet/javax/sound/CVS/Entries1
-rw-r--r--gnu/testlet/javax/sound/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/sound/CVS/Repository1
-rw-r--r--gnu/testlet/javax/sound/CVS/Root1
-rw-r--r--gnu/testlet/javax/sound/sampled/AudioProperties.java174
-rw-r--r--gnu/testlet/javax/sound/sampled/CVS/Entries2
-rw-r--r--gnu/testlet/javax/sound/sampled/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/sound/sampled/CVS/Repository1
-rw-r--r--gnu/testlet/javax/sound/sampled/CVS/Root1
-rw-r--r--gnu/testlet/javax/sound/sampled/data/CVS/Entries3
-rw-r--r--gnu/testlet/javax/sound/sampled/data/CVS/Repository1
-rw-r--r--gnu/testlet/javax/sound/sampled/data/CVS/Root1
-rw-r--r--gnu/testlet/javax/sound/sampled/data/k3b_success1.aubin0 -> 93250 bytes
-rw-r--r--gnu/testlet/javax/sound/sampled/data/k3b_success1.wavbin0 -> 46657 bytes
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/MyAction.java58
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/MyPropertyChangeListener.java55
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/clone.java55
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/constructors.java111
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/getValue.java58
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/putValue.java70
-rw-r--r--gnu/testlet/javax/swing/AbstractAction/setEnabled.java54
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/TestButton.java76
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/constructor.java48
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/createChangeListener.java56
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/getActionCommand.java70
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/init.java53
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setHorizontalAlignment.java78
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setHorizontalTextPosition.java79
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setRolloverEnabled.java77
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setRolloverIcon.java96
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setRolloverSelectedIcon.java96
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setVerticalAlignment.java78
-rw-r--r--gnu/testlet/javax/swing/AbstractButton/setVerticalTextPosition.java79
-rw-r--r--gnu/testlet/javax/swing/ActionMap/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/ActionMap/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/ActionMap/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/ActionMap/newMapKeysNull.java41
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/CVS/Entries16
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/addLayoutComponent.java76
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/constants.java50
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/constructor.java65
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentX.java64
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentY.java64
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/horizontal2.java72
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/invalidateLayout.java64
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/layoutContainer.java206
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize.java157
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize2.java59
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/minimumLayoutSize.java69
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/preferredLayoutSize.java175
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/removeLayoutComponent.java63
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/simplehorizontal.java67
-rw-r--r--gnu/testlet/javax/swing/BoxLayout/simplevertical.java67
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/add.java69
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/constructor.java39
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/getButtonCount.java50
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/getElements.java56
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/getSelection.java47
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/isSelected.java56
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/remove.java61
-rw-r--r--gnu/testlet/javax/swing/ButtonGroup/setSelected.java102
-rw-r--r--gnu/testlet/javax/swing/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/CVS/Entries.Log78
-rw-r--r--gnu/testlet/javax/swing/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Entries16
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/general.java62
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getChangeListeners.java60
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getExtent.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMaximum.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMinimum.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValue.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValueIsAdjusting.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/serialization.java77
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setExtent.java61
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMaximum.java57
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMinimum.java67
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setRangeProperties.java112
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValue.java62
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValueIsAdjusting.java80
-rw-r--r--gnu/testlet/javax/swing/DefaultBoundedRangeModel/toString.java54
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/CVS/Entries14
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/MyDefaultButtonModel.java40
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/addActionListener.java51
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/constants.java43
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/constructor.java46
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/getSelectedObjects.java40
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setActionCommand.java43
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java82
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java81
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setGroup.java75
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setMnemonic.java73
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java108
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setRollover.java75
-rw-r--r--gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java92
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java104
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/constructors.java103
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/getElementAt.java50
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/getIndexOf.java52
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/getSelectedItem.java49
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/getSize.java47
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/insertElementAt.java128
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/removeAllElements.java93
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java101
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/removeElementAt.java116
-rw-r--r--gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java110
-rw-r--r--gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultListCellRenderer/getListCellRendererComponent.java57
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/CVS/Entries32
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java63
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/add.java116
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/addElement.java82
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/capacity.java48
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/clear.java63
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/constructor.java47
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/contains.java55
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/copyInto.java82
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/elementAt.java74
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/elements.java60
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/ensureCapacity.java48
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/firstElement.java67
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/get.java75
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/getElementAt.java75
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/getSize.java53
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/indexOf.java97
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java113
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/isEmpty.java51
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/lastElement.java67
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/lastIndexOf.java98
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/remove.java95
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/removeAllElements.java63
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/removeElement.java74
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java95
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/removeRange.java87
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/set.java112
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/setElementAt.java116
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/setSize.java73
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/size.java53
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/toArray.java56
-rw-r--r--gnu/testlet/javax/swing/DefaultListModel/trimToSize.java54
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Entries29
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/addListSelectionListener.java55
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/addSelectionInterval.java204
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/clearSelection.java133
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/clone.java78
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/constructor.java48
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getAnchorSelectionIndex.java46
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getLeadSelectionIndex.java48
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getListSelectionListeners.java54
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java68
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getMaxSelectionIndex.java43
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getMinSelectionIndex.java43
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getSelectionMode.java44
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/getValueIsAdjusting.java41
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/insertIndexInterval.java230
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/isLeadAnchorNotificationEnabled.java42
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectedIndex.java47
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectionEmpty.java43
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/leadSelectionIndex.java51
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/moveLeadSelectionIndex.java57
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/removeIndexInterval.java153
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/removeListSelectionListener.java56
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/removeSelectionInterval.java126
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/setAnchorSelectionIndex.java80
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java234
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionInterval.java281
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionMode.java88
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/setValueIsAdjusting.java58
-rw-r--r--gnu/testlet/javax/swing/DefaultListSelectionModel/toString.java43
-rw-r--r--gnu/testlet/javax/swing/InputMap/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/InputMap/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/InputMap/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/InputMap/allKeys.java67
-rw-r--r--gnu/testlet/javax/swing/InputMap/clear.java52
-rw-r--r--gnu/testlet/javax/swing/InputMap/constructor.java41
-rw-r--r--gnu/testlet/javax/swing/InputMap/get.java51
-rw-r--r--gnu/testlet/javax/swing/InputMap/getParent.java44
-rw-r--r--gnu/testlet/javax/swing/InputMap/keys.java62
-rw-r--r--gnu/testlet/javax/swing/InputMap/newMapKeysNull.java41
-rw-r--r--gnu/testlet/javax/swing/InputMap/put.java50
-rw-r--r--gnu/testlet/javax/swing/InputMap/remove.java64
-rw-r--r--gnu/testlet/javax/swing/InputMap/setParent.java44
-rw-r--r--gnu/testlet/javax/swing/InputMap/size.java49
-rw-r--r--gnu/testlet/javax/swing/JApplet/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JApplet/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JApplet/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JApplet/isRootPaneCheckingEnabled.java107
-rw-r--r--gnu/testlet/javax/swing/JButton/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JButton/constructors.java244
-rw-r--r--gnu/testlet/javax/swing/JButton/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JButton/model.java126
-rw-r--r--gnu/testlet/javax/swing/JButton/uidelegate.java134
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/constructor.java48
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/isFocusable.java46
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/model.java164
-rw-r--r--gnu/testlet/javax/swing/JCheckBox/uidelegate.java170
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java276
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/model.java151
-rw-r--r--gnu/testlet/javax/swing/JCheckBoxMenuItem/uidelegate.java159
-rw-r--r--gnu/testlet/javax/swing/JComboBox/CVS/Entries20
-rw-r--r--gnu/testlet/javax/swing/JComboBox/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JComboBox/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JComboBox/ComboRobot.java215
-rw-r--r--gnu/testlet/javax/swing/JComboBox/MutableTest1.java91
-rw-r--r--gnu/testlet/javax/swing/JComboBox/MutableTest2.java58
-rw-r--r--gnu/testlet/javax/swing/JComboBox/MyJComboBox.java38
-rw-r--r--gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java120
-rw-r--r--gnu/testlet/javax/swing/JComboBox/TestModel1.java72
-rw-r--r--gnu/testlet/javax/swing/JComboBox/TestModel2.java120
-rw-r--r--gnu/testlet/javax/swing/JComboBox/addItem.java71
-rw-r--r--gnu/testlet/javax/swing/JComboBox/basic.java229
-rw-r--r--gnu/testlet/javax/swing/JComboBox/getEditor.java138
-rw-r--r--gnu/testlet/javax/swing/JComboBox/getPrototypeDisplayValue.java58
-rw-r--r--gnu/testlet/javax/swing/JComboBox/listenerList.java93
-rw-r--r--gnu/testlet/javax/swing/JComboBox/model.java68
-rw-r--r--gnu/testlet/javax/swing/JComboBox/removeItem.java87
-rw-r--r--gnu/testlet/javax/swing/JComboBox/setEditable.java80
-rw-r--r--gnu/testlet/javax/swing/JComboBox/setEditor.java109
-rw-r--r--gnu/testlet/javax/swing/JComboBox/setModel.java81
-rw-r--r--gnu/testlet/javax/swing/JComboBox/setPrototypeDisplayValue.java85
-rw-r--r--gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java90
-rw-r--r--gnu/testlet/javax/swing/JComponent/CVS/Entries38
-rw-r--r--gnu/testlet/javax/swing/JComponent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JComponent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JComponent/MyJLabel.java41
-rw-r--r--gnu/testlet/javax/swing/JComponent/TestComponent.java71
-rw-r--r--gnu/testlet/javax/swing/JComponent/TestLayout.java78
-rw-r--r--gnu/testlet/javax/swing/JComponent/addVetoableChangeListener.java54
-rw-r--r--gnu/testlet/javax/swing/JComponent/constructor.java48
-rw-r--r--gnu/testlet/javax/swing/JComponent/getActionForKeyStroke.java81
-rw-r--r--gnu/testlet/javax/swing/JComponent/getAlignmentX.java51
-rw-r--r--gnu/testlet/javax/swing/JComponent/getAlignmentY.java51
-rw-r--r--gnu/testlet/javax/swing/JComponent/getComponentPopupMenu.java57
-rw-r--r--gnu/testlet/javax/swing/JComponent/getFont.java46
-rw-r--r--gnu/testlet/javax/swing/JComponent/getInputMap.java90
-rw-r--r--gnu/testlet/javax/swing/JComponent/getListeners.java145
-rw-r--r--gnu/testlet/javax/swing/JComponent/getPreferredSize.java282
-rw-r--r--gnu/testlet/javax/swing/JComponent/getRegisteredKeyStrokes.java59
-rw-r--r--gnu/testlet/javax/swing/JComponent/getVerifyInputWhenFocusTarget.java42
-rw-r--r--gnu/testlet/javax/swing/JComponent/getVetoableChangeListeners.java55
-rw-r--r--gnu/testlet/javax/swing/JComponent/paint.java72
-rw-r--r--gnu/testlet/javax/swing/JComponent/putClientProperty.java105
-rw-r--r--gnu/testlet/javax/swing/JComponent/registerKeyboardAction.java92
-rw-r--r--gnu/testlet/javax/swing/JComponent/removeVetoableChangeListener.java58
-rw-r--r--gnu/testlet/javax/swing/JComponent/setAlignmentX.java99
-rw-r--r--gnu/testlet/javax/swing/JComponent/setAlignmentY.java99
-rw-r--r--gnu/testlet/javax/swing/JComponent/setBackground.java102
-rw-r--r--gnu/testlet/javax/swing/JComponent/setBorder.java107
-rw-r--r--gnu/testlet/javax/swing/JComponent/setComponentPopupMenu.java68
-rw-r--r--gnu/testlet/javax/swing/JComponent/setDefaultLocale.java45
-rw-r--r--gnu/testlet/javax/swing/JComponent/setEnabled.java101
-rw-r--r--gnu/testlet/javax/swing/JComponent/setFont.java110
-rw-r--r--gnu/testlet/javax/swing/JComponent/setForeground.java101
-rw-r--r--gnu/testlet/javax/swing/JComponent/setInheritsPopupMenu.java80
-rw-r--r--gnu/testlet/javax/swing/JComponent/setMaximumSize.java151
-rw-r--r--gnu/testlet/javax/swing/JComponent/setMinimumSize.java159
-rw-r--r--gnu/testlet/javax/swing/JComponent/setOpaque.java100
-rw-r--r--gnu/testlet/javax/swing/JComponent/setPreferredSize.java158
-rw-r--r--gnu/testlet/javax/swing/JComponent/setUI.java106
-rw-r--r--gnu/testlet/javax/swing/JComponent/setVerifyInputWhenFocusTarget.java67
-rw-r--r--gnu/testlet/javax/swing/JComponent/setVisible.java138
-rw-r--r--gnu/testlet/javax/swing/JDesktopPane/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JDesktopPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JDesktopPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JDesktopPane/constructor.java52
-rw-r--r--gnu/testlet/javax/swing/JDialog/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JDialog/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JDialog/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JDialog/isRootPaneCheckingEnabled.java107
-rw-r--r--gnu/testlet/javax/swing/JDialog/setDefaultCloseOperation.java70
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/ConstructorsAndTypes.java63
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/ContentType.java92
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/ViewType.java40
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/getScrollableTracks.java61
-rw-r--r--gnu/testlet/javax/swing/JEditorPane/setText.java49
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/CVS/Entries40
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/MyFileChooser.java36
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/MyFileFilter.java55
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/MyFileSystemView.java20
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/accept.java57
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/addChoosableFileFilter.java124
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/changeToParentDirectory.java70
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/constructors.java150
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getAccessory.java52
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getApproveButtonMnemonic.java50
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getApproveButtonText.java47
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getApproveButtonToolTipText.java47
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getChoosableFileFilters.java49
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getControlButtonsAreShown.java51
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getDialogTitle.java50
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getDialogType.java50
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getFileFilter.java53
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getFileSelectionMode.java47
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getFileSystemView.java52
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getFileView.java51
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/getSelectedFiles.java64
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/isAcceptAllFileFilterUsed.java50
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/isFileHidingEnabled.java50
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/removeChoosableFileFilter.java333
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setAcceptAllFileFilterUsed.java112
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setAccessory.java71
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setApproveButtonMnemonic.java69
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setApproveButtonText.java69
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setApproveButtonToolTipText.java70
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setControlButtonsAreShown.java70
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setCurrentDirectory.java69
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setDialogTitle.java69
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setDialogType.java69
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setFileFilter.java101
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setFileHidingEnabled.java70
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setFileSelectionMode.java76
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setFileSystemView.java71
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setFileView.java71
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setSelectedFile.java117
-rw-r--r--gnu/testlet/javax/swing/JFileChooser/setSelectedFiles.java142
-rw-r--r--gnu/testlet/javax/swing/JFormattedTextField/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JFormattedTextField/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JFormattedTextField/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java87
-rw-r--r--gnu/testlet/javax/swing/JFrame/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/JFrame/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JFrame/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java92
-rw-r--r--gnu/testlet/javax/swing/JFrame/PR34577.java66
-rw-r--r--gnu/testlet/javax/swing/JFrame/SetSize.java93
-rw-r--r--gnu/testlet/javax/swing/JFrame/constructors.java169
-rw-r--r--gnu/testlet/javax/swing/JFrame/glassPaneLayout.java37
-rw-r--r--gnu/testlet/javax/swing/JFrame/isRootPaneCheckingEnabled.java107
-rw-r--r--gnu/testlet/javax/swing/JFrame/paint5.java191
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleName.java43
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleRole.java42
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleValue.java42
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getCurrentAccessibleValue.java47
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMaximumAccessibleValue.java45
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMinimumAccessibleValue.java45
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/setCurrentAccessibleValue.java67
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/CVS/Entries23
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java40
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/constructors.java155
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/dispose.java81
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/getDesktopIcon.java45
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/getInputMap.java70
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/getNormalBounds.java45
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/isIconifiable.java42
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/isResizable.java42
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/isRootPaneCheckingEnabled.java90
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/paramString.java42
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setClosable.java56
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setClosed.java89
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setDefaultCloseOperation.java59
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setDesktopIcon.java70
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setFrameIcon.java68
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java56
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setMaximizable.java81
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setNormalBounds.java66
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setResizable.java56
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setSelected.java176
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setSelected2.java151
-rw-r--r--gnu/testlet/javax/swing/JInternalFrame/setTitle.java78
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getAccessibleName.java51
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getCharacterBounds.java115
-rw-r--r--gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getIndexAtPoint.java107
-rw-r--r--gnu/testlet/javax/swing/JLabel/CVS/Entries18
-rw-r--r--gnu/testlet/javax/swing/JLabel/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JLabel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JLabel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JLabel/Icon.java74
-rw-r--r--gnu/testlet/javax/swing/JLabel/Mnemonic.java60
-rw-r--r--gnu/testlet/javax/swing/JLabel/MyJLabel.java40
-rw-r--r--gnu/testlet/javax/swing/JLabel/TestLabel.java60
-rw-r--r--gnu/testlet/javax/swing/JLabel/constructor.java356
-rw-r--r--gnu/testlet/javax/swing/JLabel/getAccessibleContext.java44
-rw-r--r--gnu/testlet/javax/swing/JLabel/getActionMap.java61
-rw-r--r--gnu/testlet/javax/swing/JLabel/getInputMap.java93
-rw-r--r--gnu/testlet/javax/swing/JLabel/paramString.java38
-rw-r--r--gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java157
-rw-r--r--gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java139
-rw-r--r--gnu/testlet/javax/swing/JLabel/setFont.java70
-rw-r--r--gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java72
-rw-r--r--gnu/testlet/javax/swing/JLabel/setIconTextGap.java64
-rw-r--r--gnu/testlet/javax/swing/JLabel/setLabelFor.java81
-rw-r--r--gnu/testlet/javax/swing/JLabel/setText.java199
-rw-r--r--gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java72
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/addImpl.java112
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java45
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/getComponentsInLayer.java74
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/moveToFront.java70
-rw-r--r--gnu/testlet/javax/swing/JLayeredPane/setPosition.java88
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Entries16
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleRole.java45
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleStateSet.java52
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getBackground.java56
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getCursor.java62
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java58
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getForeground.java56
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isEnabled.java58
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isFocusTraversable.java47
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isShowing.java112
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isVisible.java119
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setBackground.java57
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setCursor.java60
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setEnabled.java55
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setFont.java57
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setForeground.java57
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/TestList.java28
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/contentsChanged.java71
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleChild.java53
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleRole.java50
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleStateSet.java61
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/intervalAdded.java70
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/intervalRemoved.java70
-rw-r--r--gnu/testlet/javax/swing/JList/AccessibleJList/valueChanged.java77
-rw-r--r--gnu/testlet/javax/swing/JList/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/JList/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JList/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JList/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JList/constructors.java133
-rw-r--r--gnu/testlet/javax/swing/JList/getBackground.java66
-rw-r--r--gnu/testlet/javax/swing/JList/getInputMap.java186
-rw-r--r--gnu/testlet/javax/swing/JList/getNextMatch.java126
-rw-r--r--gnu/testlet/javax/swing/JList/getSelectionBackground.java66
-rw-r--r--gnu/testlet/javax/swing/JList/setBackground.java83
-rw-r--r--gnu/testlet/javax/swing/JList/setLayoutOrientation.java77
-rw-r--r--gnu/testlet/javax/swing/JList/setModel.java91
-rw-r--r--gnu/testlet/javax/swing/JList/setSelectionBackground.java83
-rw-r--r--gnu/testlet/javax/swing/JList/setValueIsAdjusting.java68
-rw-r--r--gnu/testlet/javax/swing/JList/setVisibleRowCount.java88
-rw-r--r--gnu/testlet/javax/swing/JMenu/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/JMenu/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JMenu/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JMenu/constructors.java193
-rw-r--r--gnu/testlet/javax/swing/JMenu/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JMenu/getInputMap.java70
-rw-r--r--gnu/testlet/javax/swing/JMenu/getPopUpMenu.java274
-rw-r--r--gnu/testlet/javax/swing/JMenu/model.java112
-rw-r--r--gnu/testlet/javax/swing/JMenu/remove.java93
-rw-r--r--gnu/testlet/javax/swing/JMenu/uidelegate.java119
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/CVS/Entries11
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/basic.java122
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/constructors.java91
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getActionMap.java48
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getComponentIndex.java69
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getHelpMenu.java48
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getInputMap.java72
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getMenu.java86
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/getSubElements.java84
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/setHelpMenu.java49
-rw-r--r--gnu/testlet/javax/swing/JMenuBar/setMargin.java79
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/DragSelectTest.java84
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/constructors.java73
-rw-r--r--gnu/testlet/javax/swing/JMenuItem/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JOptionPane/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JOptionPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JOptionPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JOptionPane/MyJOptionPane.java34
-rw-r--r--gnu/testlet/javax/swing/JOptionPane/getInputMap.java73
-rw-r--r--gnu/testlet/javax/swing/JPanel/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JPanel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JPanel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JPanel/Layouter.java42
-rw-r--r--gnu/testlet/javax/swing/JPanel/setBorder.java50
-rw-r--r--gnu/testlet/javax/swing/JPopupMenu/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JPopupMenu/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JPopupMenu/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JPopupMenu/getInputMap.java76
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/CVS/Entries14
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/MyJProgressBar.java40
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/constructors.java145
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/getAccessibleContext.java136
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/getPercentComplete.java49
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/getString.java47
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/isStringPainted.java43
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/paramString.java38
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setBorderPainted.java59
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setModel.java70
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setOrientation.java71
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setString.java63
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setStringPainted.java59
-rw-r--r--gnu/testlet/javax/swing/JProgressBar/setValue.java78
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/isFocusable.java47
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/model.java164
-rw-r--r--gnu/testlet/javax/swing/JRadioButton/uidelegate.java171
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/isFocusable.java46
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/model.java151
-rw-r--r--gnu/testlet/javax/swing/JRadioButtonMenuItem/uidelegate.java157
-rw-r--r--gnu/testlet/javax/swing/JRootPane/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JRootPane/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JRootPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JRootPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentX.java60
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentY.java60
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/layoutContainer.java89
-rw-r--r--gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java74
-rw-r--r--gnu/testlet/javax/swing/JRootPane/setLayeredPane.java53
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/MyJScrollBar.java40
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/constructors.java132
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/getAccessibleContext.java135
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/getActionMap.java50
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/getInputMap.java84
-rw-r--r--gnu/testlet/javax/swing/JScrollBar/paramString.java44
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/resetViewport.java116
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/createHorizontalScrollBar.java51
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/createVerticalScrollBar.java51
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/getActionMap.java57
-rw-r--r--gnu/testlet/javax/swing/JScrollPane/getInputMap.java85
-rw-r--r--gnu/testlet/javax/swing/JSlider/CVS/Entries33
-rw-r--r--gnu/testlet/javax/swing/JSlider/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSlider/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSlider/MyChangeListener.java43
-rw-r--r--gnu/testlet/javax/swing/JSlider/MyPropertyChangeListener.java41
-rw-r--r--gnu/testlet/javax/swing/JSlider/addChangeListener.java59
-rw-r--r--gnu/testlet/javax/swing/JSlider/constructors.java267
-rw-r--r--gnu/testlet/javax/swing/JSlider/createStandardLabels.java158
-rw-r--r--gnu/testlet/javax/swing/JSlider/getExtent.java46
-rw-r--r--gnu/testlet/javax/swing/JSlider/getInverted.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getLabelTable.java53
-rw-r--r--gnu/testlet/javax/swing/JSlider/getMajorTickSpacing.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getMaximum.java48
-rw-r--r--gnu/testlet/javax/swing/JSlider/getMinimum.java46
-rw-r--r--gnu/testlet/javax/swing/JSlider/getMinorTickSpacing.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getModel.java46
-rw-r--r--gnu/testlet/javax/swing/JSlider/getPaintLabels.java46
-rw-r--r--gnu/testlet/javax/swing/JSlider/getPaintTicks.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getPaintTrack.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getSnapToTicks.java45
-rw-r--r--gnu/testlet/javax/swing/JSlider/getUIClassID.java43
-rw-r--r--gnu/testlet/javax/swing/JSlider/setExtent.java66
-rw-r--r--gnu/testlet/javax/swing/JSlider/setInverted.java63
-rw-r--r--gnu/testlet/javax/swing/JSlider/setLabelTable.java93
-rw-r--r--gnu/testlet/javax/swing/JSlider/setMajorTickSpacing.java72
-rw-r--r--gnu/testlet/javax/swing/JSlider/setMaximum.java75
-rw-r--r--gnu/testlet/javax/swing/JSlider/setMinimum.java77
-rw-r--r--gnu/testlet/javax/swing/JSlider/setMinorTickSpacing.java64
-rw-r--r--gnu/testlet/javax/swing/JSlider/setModel.java80
-rw-r--r--gnu/testlet/javax/swing/JSlider/setOrientation.java72
-rw-r--r--gnu/testlet/javax/swing/JSlider/setPaintLabels.java82
-rw-r--r--gnu/testlet/javax/swing/JSlider/setPaintTicks.java63
-rw-r--r--gnu/testlet/javax/swing/JSlider/setPaintTrack.java63
-rw-r--r--gnu/testlet/javax/swing/JSlider/setSnapToTicks.java63
-rw-r--r--gnu/testlet/javax/swing/JSlider/setValue.java66
-rw-r--r--gnu/testlet/javax/swing/JSpinner/CVS/Entries14
-rw-r--r--gnu/testlet/javax/swing/JSpinner/CVS/Entries.Log4
-rw-r--r--gnu/testlet/javax/swing/JSpinner/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/constructors.java117
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/getFormat.java49
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DateEditor/getModel.java48
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/MyDefaultEditor.java56
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/constructor.java56
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/minimumLayoutSize.java49
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/preferredLayoutSize.java49
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java52
-rw-r--r--gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java49
-rw-r--r--gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/ListEditor/constructor.java58
-rw-r--r--gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java42
-rw-r--r--gnu/testlet/javax/swing/JSpinner/MyJSpinner.java47
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/constructors.java112
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/getFormat.java47
-rw-r--r--gnu/testlet/javax/swing/JSpinner/NumberEditor/getModel.java44
-rw-r--r--gnu/testlet/javax/swing/JSpinner/addChangeListener.java67
-rw-r--r--gnu/testlet/javax/swing/JSpinner/constructors.java107
-rw-r--r--gnu/testlet/javax/swing/JSpinner/createEditor.java74
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getChangeListeners.java64
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getEditor.java44
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getModel.java44
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getNextValue.java51
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getPreviousValue.java50
-rw-r--r--gnu/testlet/javax/swing/JSpinner/getUIClassID.java40
-rw-r--r--gnu/testlet/javax/swing/JSpinner/removeChangeListener.java73
-rw-r--r--gnu/testlet/javax/swing/JSpinner/setEditor.java87
-rw-r--r--gnu/testlet/javax/swing/JSpinner/setModel.java85
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/Constructor.java87
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/MyJSplitPane.java39
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/getActionMap.java50
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/getDividerLocation.java70
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/getInputMap.java64
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/paramString.java42
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/setComponent.java63
-rw-r--r--gnu/testlet/javax/swing/JSplitPane/setResizeWeight.java75
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/Mnemonic.java44
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/getInputMap.java97
-rw-r--r--gnu/testlet/javax/swing/JTabbedPane/remove.java98
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java44
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java64
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java65
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTable/AccessibleJTable/getAccessibleColumnHeader.java62
-rw-r--r--gnu/testlet/javax/swing/JTable/CVS/Entries28
-rw-r--r--gnu/testlet/javax/swing/JTable/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/JTable/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTable/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTable/MyJTable.java46
-rw-r--r--gnu/testlet/javax/swing/JTable/TableRobot.java447
-rw-r--r--gnu/testlet/javax/swing/JTable/addColumn.java59
-rw-r--r--gnu/testlet/javax/swing/JTable/constructors.java253
-rw-r--r--gnu/testlet/javax/swing/JTable/convertColumnIndexToModel.java82
-rw-r--r--gnu/testlet/javax/swing/JTable/convertColumnIndexToView.java59
-rw-r--r--gnu/testlet/javax/swing/JTable/createDefaultColumnsFromModel.java85
-rw-r--r--gnu/testlet/javax/swing/JTable/createDefaultDataModel.java52
-rw-r--r--gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java53
-rw-r--r--gnu/testlet/javax/swing/JTable/getAccessibleContext.java51
-rw-r--r--gnu/testlet/javax/swing/JTable/getAutoCreateColumnsFromModel.java47
-rw-r--r--gnu/testlet/javax/swing/JTable/getCellEditor.java39
-rw-r--r--gnu/testlet/javax/swing/JTable/getCellRect.java132
-rw-r--r--gnu/testlet/javax/swing/JTable/getColumn.java75
-rw-r--r--gnu/testlet/javax/swing/JTable/getColumnName.java82
-rw-r--r--gnu/testlet/javax/swing/JTable/getInputMap.java200
-rw-r--r--gnu/testlet/javax/swing/JTable/getModel.java50
-rw-r--r--gnu/testlet/javax/swing/JTable/getRowHeight.java65
-rw-r--r--gnu/testlet/javax/swing/JTable/initializeLocalVars.java76
-rw-r--r--gnu/testlet/javax/swing/JTable/isCellEditable.java74
-rw-r--r--gnu/testlet/javax/swing/JTable/isColumnSelected.java91
-rw-r--r--gnu/testlet/javax/swing/JTable/isRowSelected.java91
-rw-r--r--gnu/testlet/javax/swing/JTable/setAutoCreateColumnsFromModel.java85
-rw-r--r--gnu/testlet/javax/swing/JTable/setColumnSelectionAllowed.java65
-rw-r--r--gnu/testlet/javax/swing/JTable/setModel.java236
-rw-r--r--gnu/testlet/javax/swing/JTable/setRowHeight.java76
-rw-r--r--gnu/testlet/javax/swing/JTable/setRowSelectionAllowed.java64
-rw-r--r--gnu/testlet/javax/swing/JTableHeader/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JTableHeader/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTableHeader/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTableHeader/getInputMap.java69
-rw-r--r--gnu/testlet/javax/swing/JTextArea/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JTextArea/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTextArea/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTextArea/gettingText.java118
-rw-r--r--gnu/testlet/javax/swing/JTextArea/isValidChecks.java83
-rw-r--r--gnu/testlet/javax/swing/JTextArea/preferredSize.java70
-rw-r--r--gnu/testlet/javax/swing/JTextArea/text.java60
-rw-r--r--gnu/testlet/javax/swing/JTextField/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/JTextField/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTextField/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTextField/CopyPaste.java56
-rw-r--r--gnu/testlet/javax/swing/JTextField/createDefaultModel.java71
-rw-r--r--gnu/testlet/javax/swing/JTextField/fireActionPerformed.java175
-rw-r--r--gnu/testlet/javax/swing/JTextField/getActions.java111
-rw-r--r--gnu/testlet/javax/swing/JTextField/setDocument.java81
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/actionEvent.java107
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/click.java146
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/constructor.java43
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/getActionCommand.java47
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/isFocusable.java46
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/model.java164
-rw-r--r--gnu/testlet/javax/swing/JToggleButton/uidelegate.java171
-rw-r--r--gnu/testlet/javax/swing/JToolBar/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JToolBar/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JToolBar/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JToolBar/buttonInsets.java76
-rw-r--r--gnu/testlet/javax/swing/JToolBar/getInputMap.java86
-rw-r--r--gnu/testlet/javax/swing/JToolTip/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/JToolTip/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JToolTip/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JToolTip/MyJToolTip.java40
-rw-r--r--gnu/testlet/javax/swing/JToolTip/getAccessibleContext.java72
-rw-r--r--gnu/testlet/javax/swing/JToolTip/getComponent.java45
-rw-r--r--gnu/testlet/javax/swing/JToolTip/getTipText.java43
-rw-r--r--gnu/testlet/javax/swing/JToolTip/getUIClassID.java39
-rw-r--r--gnu/testlet/javax/swing/JToolTip/paramString.java41
-rw-r--r--gnu/testlet/javax/swing/JToolTip/setComponent.java73
-rw-r--r--gnu/testlet/javax/swing/JToolTip/setTipText.java60
-rw-r--r--gnu/testlet/javax/swing/JTree/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/JTree/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JTree/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JTree/TreeRobot.java337
-rw-r--r--gnu/testlet/javax/swing/JTree/getCellRenderer.java55
-rw-r--r--gnu/testlet/javax/swing/JTree/isRowSelected.java148
-rw-r--r--gnu/testlet/javax/swing/JTree/setModel.java54
-rw-r--r--gnu/testlet/javax/swing/JViewport/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/JViewport/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JViewport/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JViewport/TestViewport.java61
-rw-r--r--gnu/testlet/javax/swing/JViewport/setView.java109
-rw-r--r--gnu/testlet/javax/swing/JWindow/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/JWindow/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/JWindow/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/JWindow/isRootPaneCheckingEnabled.java107
-rw-r--r--gnu/testlet/javax/swing/KeyStroke/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/KeyStroke/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/KeyStroke/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/KeyStroke/getKeyStroke.java49
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentX.java163
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentY.java163
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/layoutContainer.java176
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/maximumLayoutSize.java167
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/minimumLayoutSize.java166
-rw-r--r--gnu/testlet/javax/swing/OverlayLayout/preferredLayoutSize.java167
-rw-r--r--gnu/testlet/javax/swing/RepaintManager/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/RepaintManager/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/RepaintManager/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/RepaintManager/DisabledEventQueue.java49
-rw-r--r--gnu/testlet/javax/swing/RepaintManager/addDirtyRegion.java79
-rw-r--r--gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/ScrollPaneLayout/minimumLayoutSize.java238
-rw-r--r--gnu/testlet/javax/swing/SizeRequirements/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/SizeRequirements/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SizeRequirements/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SizeRequirements/calculateAlignedPositions.java68
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/constructors.java114
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/getIndex.java54
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/getSize.java50
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/getSizes.java48
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/insertEntries.java51
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/removeEntries.java54
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/setSize.java47
-rw-r--r--gnu/testlet/javax/swing/SizeSequence/setSizes.java57
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/constructors.java191
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java65
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java65
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/setEnd.java81
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/setStart.java81
-rw-r--r--gnu/testlet/javax/swing/SpinnerDateModel/setValue.java98
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/ArrayModel.java64
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/Constructors.java76
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/ListModel.java67
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/Ordering.java58
-rw-r--r--gnu/testlet/javax/swing/SpinnerListModel/SetList.java70
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/constructors.java288
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java63
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java62
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/setMaximum.java71
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/setMinimum.java71
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/setStepSize.java68
-rw-r--r--gnu/testlet/javax/swing/SpinnerNumberModel/setValue.java88
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/calculateInnerArea.java60
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java147
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/computeUnion.java155
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/isRectangleContainingRectangle.java83
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java411
-rw-r--r--gnu/testlet/javax/swing/SwingUtilities/replaceUIActionMap.java71
-rw-r--r--gnu/testlet/javax/swing/Timer/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/Timer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/Timer/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/Timer/basic.java122
-rw-r--r--gnu/testlet/javax/swing/Timer/preparatory.java176
-rw-r--r--gnu/testlet/javax/swing/Timer/setDelay.java64
-rw-r--r--gnu/testlet/javax/swing/Timer/setInitialDelay.java65
-rw-r--r--gnu/testlet/javax/swing/Timer/test_23918.java62
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/DynamicToolTipTest.java76
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/setDismissDelay.java56
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/setInitialDelay.java56
-rw-r--r--gnu/testlet/javax/swing/ToolTipManager/setReshowDelay.java58
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/TransferActionConstructor.java42
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/canImport.java166
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/createTransferable.java246
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/exportToClipboard.java238
-rw-r--r--gnu/testlet/javax/swing/TransferHandler/importData.java221
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/getBoolean.java49
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/putDefaults.java50
-rw-r--r--gnu/testlet/javax/swing/UIDefaults/remove.java46
-rw-r--r--gnu/testlet/javax/swing/UIManager/CVS/Entries22
-rw-r--r--gnu/testlet/javax/swing/UIManager/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/UIManager/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/UIManager/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java53
-rw-r--r--gnu/testlet/javax/swing/UIManager/TestLabelUI.java40
-rw-r--r--gnu/testlet/javax/swing/UIManager/addAuxiliaryLookAndFeel.java61
-rw-r--r--gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java63
-rw-r--r--gnu/testlet/javax/swing/UIManager/getAuxiliaryLookAndFeels.java52
-rw-r--r--gnu/testlet/javax/swing/UIManager/getBoolean.java99
-rw-r--r--gnu/testlet/javax/swing/UIManager/getBorder.java98
-rw-r--r--gnu/testlet/javax/swing/UIManager/getColor.java100
-rw-r--r--gnu/testlet/javax/swing/UIManager/getCrossPlatformLookAndFeelClassName.java45
-rw-r--r--gnu/testlet/javax/swing/UIManager/getDefaults.java57
-rw-r--r--gnu/testlet/javax/swing/UIManager/getDimension.java100
-rw-r--r--gnu/testlet/javax/swing/UIManager/getFont.java99
-rw-r--r--gnu/testlet/javax/swing/UIManager/getIcon.java102
-rw-r--r--gnu/testlet/javax/swing/UIManager/getInsets.java100
-rw-r--r--gnu/testlet/javax/swing/UIManager/getInt.java96
-rw-r--r--gnu/testlet/javax/swing/UIManager/getLookAndFeelDefaults.java58
-rw-r--r--gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java60
-rw-r--r--gnu/testlet/javax/swing/UIManager/getString.java99
-rw-r--r--gnu/testlet/javax/swing/UIManager/getUI.java77
-rw-r--r--gnu/testlet/javax/swing/UIManager/removeAuxiliaryLookAndFeel.java112
-rw-r--r--gnu/testlet/javax/swing/UIManager/setLookAndFeel.java84
-rw-r--r--gnu/testlet/javax/swing/ViewportLayout/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/ViewportLayout/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/ViewportLayout/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java133
-rw-r--r--gnu/testlet/javax/swing/ViewportLayout/minimumLayoutSize.java54
-rw-r--r--gnu/testlet/javax/swing/border/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/border/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/swing/border/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/border/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/border/CompoundBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/border/CompoundBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/border/CompoundBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/border/CompoundBorder/isBorderOpaque.java90
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/CVS/Entries16
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/constructors.java211
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getBorder.java55
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java103
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getTitle.java48
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getTitleColor.java53
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getTitleFont.java52
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getTitleJustification.java47
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java47
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/isBorderOpaque.java45
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setBorder.java55
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setTitle.java47
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setTitleColor.java53
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setTitleFont.java52
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setTitleJustification.java57
-rw-r--r--gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java57
-rw-r--r--gnu/testlet/javax/swing/event/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/event/CVS/Entries.Log6
-rw-r--r--gnu/testlet/javax/swing/event/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/add.java141
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java76
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java85
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/getListeners.java122
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/remove.java139
-rw-r--r--gnu/testlet/javax/swing/event/EventListenerList/toString.java65
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/constructor.java59
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/getInternalFrame.java49
-rw-r--r--gnu/testlet/javax/swing/event/InternalFrameEvent/paramString.java56
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/constructor.java74
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/getIndex0.java42
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/getIndex1.java42
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/getSource.java40
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/getType.java40
-rw-r--r--gnu/testlet/javax/swing/event/ListDataEvent/toString.java44
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java86
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java67
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java152
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java91
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java73
-rw-r--r--gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java112
-rw-r--r--gnu/testlet/javax/swing/event/TableModelEvent/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/event/TableModelEvent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/TableModelEvent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/TableModelEvent/constructors.java184
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/cloneWithSource.java67
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/constructors.java178
-rw-r--r--gnu/testlet/javax/swing/event/TreeSelectionEvent/isAddedPath.java103
-rw-r--r--gnu/testlet/javax/swing/filechooser/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/filechooser/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/swing/filechooser/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/filechooser/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileSystemView/getFileSystemView.java46
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/MyFileView.java33
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/getDescription.java52
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/getIcon.java52
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/getName.java52
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java53
-rw-r--r--gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/CVS/Entries.Log4
-rw-r--r--gnu/testlet/javax/swing/plaf/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/constructors.java244
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/equals.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/ColorUIResource/serialization.java70
-rw-r--r--gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/IconUIResource/constructor.java48
-rw-r--r--gnu/testlet/javax/swing/plaf/TestLookAndFeel.java62
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java62
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusTraversable.java48
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusable.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java63
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java69
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/MyBasicCheckBoxMenuItemUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/MyBasicCheckBoxUI.java40
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/addActionListener.java67
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/constructor.java50
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/removeActionListener.java76
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java77
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUILAF.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java102
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java69
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java167
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMaximumSize.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java75
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java110
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java86
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Entries20
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/MyBasicFileChooserUI.java173
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/constructor.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButton.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonMnemonic.java56
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java68
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonToolTipText.java56
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveSelectionAction.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getCancelSelectionAction.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getChangeToParentDirectoryAction.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDialogTitle.java69
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDirectoryName.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileName.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileView.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getGoHomeAction.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getNewFolderAction.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getUpdateAction.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installIcons.java77
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installStrings.java115
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/uninstallStrings.java93
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicHTML/isHTMLString.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxIcon.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxMenuItemIcon.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getMenuArrowIcon.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries.Log6
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/constructor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicListUI/updateLayoutStateNeeded.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/MyBasicLookAndFeel.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java862
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initSystemColorDefaults.java75
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/MyBasicMenuItemUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/MyBasicMenuUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/propertyChange.java118
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/MyBasicRadioButtonMenuItemUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/MyBasicRadioButtonUI.java36
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java45
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/installDefaults.java80
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java141
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java96
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java85
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java78
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java78
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java106
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMaximumSize.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMinimumSize.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getPreferredSize.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/MyBasicSliderUI.java112
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java79
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMaximumSize.java72
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMinimumSize.java73
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getPreferredSize.java72
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java48
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForXPosition.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForYPosition.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/xPositionForValue.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/yPositionForValue.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/layoutContainer.java75
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/getDividerLocation.java65
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/MyBasicTextAreaUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/MyBasicTextFieldUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/MyBasicTextPaneUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/MyBasicToggleButtonUI.java39
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/CVS/Entries.Log29
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/basic/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/CVS/Entries.Log18
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Entries9
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/DefaultMetalThemeTest.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java75
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java74
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getName.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java74
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java74
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java74
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java74
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java83
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries.Log7
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java82
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java81
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java48
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java100
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/MyMenuItemBorder.java31
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/borderInsets.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java81
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java81
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java109
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/getButtonBorder.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextBorder.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextFieldBorder.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalBorders/getToggleButtonBorder.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/MyMetalButtonUI.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java51
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/getPropertyPrefix.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Entries10
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java119
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboBox.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboIcon.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isFocusTraversable.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isIconOnly.java57
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboBox.java62
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboIcon.java63
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setEnabled.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setIconOnly.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/MyMetalComboBoxEditor.java37
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java69
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java62
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconHeight.java45
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconWidth.java45
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java72
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java158
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java239
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java137
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Entries11
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/MyMetalFileChooserUI.java75
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java57
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java59
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java56
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getFileName.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMaximumSize.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java81
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java81
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/setFileName.java56
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries26
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries.Log3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getAdditionalHeight.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getShift.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getAdditionalHeight.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getShift.java46
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java55
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java69
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java72
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemCheckIcon.java64
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java54
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Entries51
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/MyMetalLookAndFeel.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java58
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java910
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDescription.java43
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getID.java41
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getName.java41
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java60
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isNativeLookAndFeel.java42
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isSupportedLookAndFeel.java42
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java63
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/MyMetalRadioButtonUI.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java68
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java70
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java70
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java77
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java85
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java57
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java72
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java156
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/constructor.java56
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getButtonWidth.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMaximumSize.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMinimumSize.java95
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getPreferredSize.java95
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/isFocusable.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalTheme/MetalThemeTest.java100
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/MyMetalToggleButtonUI.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getDisabledTextColor.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getFocusColor.java53
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getSelectColor.java52
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/MyMetalToolTipUI.java36
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/constructor.java47
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/createUI.java49
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/getAcceleratorString.java61
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/OceanTheme/OceanThemeTest.java90
-rw-r--r--gnu/testlet/javax/swing/plaf/metal/OceanTheme/addCustomEntriesToTable.java161
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/MyTableModel.java47
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/findColumn.java61
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java56
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java56
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java55
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java55
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java55
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java55
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java55
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/getColumnClass.java48
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java53
-rw-r--r--gnu/testlet/javax/swing/table/AbstractTableModel/isCellEditable.java52
-rw-r--r--gnu/testlet/javax/swing/table/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/table/CVS/Entries.Log6
-rw-r--r--gnu/testlet/javax/swing/table/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableCellRenderer/getTableCellRendererComponent.java100
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Entries23
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyDefaultTableColumnModel.java40
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyListener.java101
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java75
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumnModelListener.java57
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java105
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java71
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnCount.java49
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndex.java79
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndexAtX.java69
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnMargin.java51
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnModelListeners.java65
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnSelectionAllowed.java47
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumns.java67
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java79
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectedColumnCount.java52
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectionModel.java49
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/getTotalColumnWidth.java53
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java158
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java73
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnMargin.java57
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnSelectionAllowed.java46
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableColumnModel/setSelectionModel.java68
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Entries23
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/MyDefaultTableModel.java43
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/MyTableModelListener.java49
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java213
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java117
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java246
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java92
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/getColumnCount.java46
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java63
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/getDataVector.java67
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/getRowCount.java46
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/getValueAt.java100
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java151
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/isCellEditable.java47
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java80
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/newDataAvailable.java51
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/removeRow.java95
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/rowsRemoved.java51
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java112
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java138
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java213
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java109
-rw-r--r--gnu/testlet/javax/swing/table/DefaultTableModel/setValueAt.java119
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Entries18
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/MyTableCellRenderer.java57
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChild.java52
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChildrenCount.java51
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleComponent.java51
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleContext.java50
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleDescription.java53
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleIndexInParent.java56
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleName.java52
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java58
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java59
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java64
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java64
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java64
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java63
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java58
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java59
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/setAccessibleName.java70
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChild.java49
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChildrenCount.java45
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleRole.java46
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/JTableHeader/getAccessibleContext.java83
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/CVS/Entries23
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/addPropertyChangeListener.java69
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/constants.java46
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/constructors.java116
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/getCellRenderer.java48
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/getHeaderRenderer.java48
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/getHeaderValue.java45
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/getIdentifier.java50
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/getModelIndex.java45
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/properties.java66
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/removePropertyChangeListener.java81
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setCellEditor.java69
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java73
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java72
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java68
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java67
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java86
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java94
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setModelIndex.java45
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java73
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setResizable.java73
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/setWidth.java71
-rw-r--r--gnu/testlet/javax/swing/table/TableColumn/sizeWidthToFit.java101
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java141
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java77
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndex.java73
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java52
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getStartOffset.java107
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java99
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java76
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/getStartOffset.java93
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/TestAbstractDocument.java55
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java378
-rw-r--r--gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java57
-rw-r--r--gnu/testlet/javax/swing/text/AttributeSet/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/AttributeSet/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/AttributeSet/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/AttributeSet/isEqual.java69
-rw-r--r--gnu/testlet/javax/swing/text/BoxView/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/BoxView/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/BoxView/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/BoxView/spans.java75
-rw-r--r--gnu/testlet/javax/swing/text/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/text/CVS/Entries.Log25
-rw-r--r--gnu/testlet/javax/swing/text/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java112
-rw-r--r--gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java55
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries4
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/Create.java116
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Entries16
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java97
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java85
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java154
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java199
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java211
-rwxr-xr-xgnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java189
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java197
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java679
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java156
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java275
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java347
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java164
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java186
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java182
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java1167
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/Insert.java186
-rw-r--r--gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java208
-rw-r--r--gnu/testlet/javax/swing/text/ElementIterator/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/ElementIterator/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/ElementIterator/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java108
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/FlowStrategy/TestView.java102
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java140
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/TestFlowView.java133
-rw-r--r--gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java56
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/CVS/Entries11
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/GapContentTest.java86
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/MyGapContent.java45
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/PositionTest.java150
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/constructors.java122
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/createPosition.java103
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/getChars.java165
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/getString.java132
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/insertString.java308
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/length.java62
-rw-r--r--gnu/testlet/javax/swing/text/GapContent/remove.java170
-rw-r--r--gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java43
-rw-r--r--gnu/testlet/javax/swing/text/MaskFormatter/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/MaskFormatter/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/MaskFormatter/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTest.java104
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java100
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/createPosition.java100
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/getDocumentProperties.java56
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/getLength.java68
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java49
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/getText.java265
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/insertString.java372
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java177
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java137
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/remove.java195
-rw-r--r--gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java54
-rw-r--r--gnu/testlet/javax/swing/text/Segment/CVS/Entries15
-rw-r--r--gnu/testlet/javax/swing/text/Segment/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/Segment/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/Segment/clone.java72
-rw-r--r--gnu/testlet/javax/swing/text/Segment/constructors.java89
-rw-r--r--gnu/testlet/javax/swing/text/Segment/current.java68
-rw-r--r--gnu/testlet/javax/swing/text/Segment/first.java60
-rw-r--r--gnu/testlet/javax/swing/text/Segment/getBeginIndex.java51
-rw-r--r--gnu/testlet/javax/swing/text/Segment/getEndIndex.java51
-rw-r--r--gnu/testlet/javax/swing/text/Segment/getIndex.java68
-rw-r--r--gnu/testlet/javax/swing/text/Segment/isPartialReturn.java49
-rw-r--r--gnu/testlet/javax/swing/text/Segment/last.java52
-rw-r--r--gnu/testlet/javax/swing/text/Segment/next.java64
-rw-r--r--gnu/testlet/javax/swing/text/Segment/previous.java64
-rw-r--r--gnu/testlet/javax/swing/text/Segment/setIndex.java124
-rw-r--r--gnu/testlet/javax/swing/text/Segment/setPartialReturn.java49
-rw-r--r--gnu/testlet/javax/swing/text/Segment/toString.java52
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Entries23
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/EMPTY.java59
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttribute.java108
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttributes.java90
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/clone.java74
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/constructors.java99
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java104
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttributes.java106
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/containsChecksParent.java48
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/copyAttributes.java75
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/equals.java55
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttribute.java72
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeCount.java63
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeNames.java66
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/getResolveParent.java56
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/isDefined.java71
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/isEmpty.java61
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/isEqual.java69
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/nullValue.java49
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttribute.java81
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributes.java160
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch.java51
-rw-r--r--gnu/testlet/javax/swing/text/SimpleAttributeSet/setResolveParent.java62
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java92
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/CVS/Entries13
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/StringContentTest.java97
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/constructors.java82
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/createPosition.java103
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/getChars.java167
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/getString.java132
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/insertString.java120
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/insertUndo.java122
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/length.java62
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/remove.java142
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/removeUndo.java130
-rw-r--r--gnu/testlet/javax/swing/text/StringContent/stickyPosition.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/CVS/Entries44
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/constants.java105
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java79
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getBackground.java79
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getComponent.java80
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getForeground.java79
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getIcon.java79
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java83
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isBold.java75
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isItalic.java75
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java76
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java77
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java76
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java72
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setBackground.java81
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setBold.java66
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setComponent.java81
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java79
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setForeground.java81
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setIcon.java81
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setItalic.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java83
-rw-r--r--gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java67
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/NamedStyleInit.java48
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/NamedStyleSetResolveParent.java49
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/addAttribute.java49
-rw-r--r--gnu/testlet/javax/swing/text/StyleContext/addStyle.java48
-rw-r--r--gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java45
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/CVS/Entries8
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/constructor.java63
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/equals.java58
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/getTab.java71
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/getTabCount.java47
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/getTabIndex.java50
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/getTabIndexAfter.java52
-rw-r--r--gnu/testlet/javax/swing/text/TabSet/toString.java48
-rw-r--r--gnu/testlet/javax/swing/text/TabStop/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/TabStop/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/TabStop/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/TabStop/constructors.java73
-rw-r--r--gnu/testlet/javax/swing/text/TabStop/toString.java48
-rw-r--r--gnu/testlet/javax/swing/text/TextAction/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/TextAction/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/TextAction/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/TextAction/augmentList.java140
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/CVS/Entries5
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/getNextWord.java127
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java128
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java139
-rw-r--r--gnu/testlet/javax/swing/text/Utilities/getWordStart.java123
-rw-r--r--gnu/testlet/javax/swing/text/View/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/text/View/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/View/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/View/TestView.java93
-rw-r--r--gnu/testlet/javax/swing/text/View/getAlignment.java55
-rw-r--r--gnu/testlet/javax/swing/text/View/getMaximumSpan.java109
-rw-r--r--gnu/testlet/javax/swing/text/View/getMinimumSpan.java110
-rw-r--r--gnu/testlet/javax/swing/text/View/getResizeWeight.java55
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/CVS/Entries14
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/TestView.java63
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java109
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/constructor.java68
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/createZone.java81
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/getMaxZonesLoaded.java62
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java49
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java76
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java46
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/loadChildren.java106
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java98
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java48
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/unloadZone.java54
-rw-r--r--gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java91
-rw-r--r--gnu/testlet/javax/swing/text/html/CSS/Attribute.java102
-rw-r--r--gnu/testlet/javax/swing/text/html/CSS/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/html/CSS/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/CSS/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/text/html/CVS/Entries.Log4
-rw-r--r--gnu/testlet/javax/swing/text/html/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/HTML/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/html/HTML/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/HTML/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/HTML/ElementTagAttributeTest.java88
-rw-r--r--gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java121
-rw-r--r--gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/HTMLDocument/FindById.java60
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeListTest2.java64
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java51
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/CVS/Entries.Log6
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java84
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java98
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Element/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Element/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Element/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java109
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java118
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities.java56
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities2.java114
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/SimpleParsing.java362
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java152
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java159
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text3.java96
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text4.java53
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/eolnNorification.java72
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java386
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/randomTables.java147
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java112
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/TagElement/TagElementTest2.java91
-rw-r--r--gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java74
-rw-r--r--gnu/testlet/javax/swing/tree/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/tree/CVS/Entries.Log5
-rw-r--r--gnu/testlet/javax/swing/tree/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Entries40
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java214
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java103
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java74
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/children.java58
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/clone.java51
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java82
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/depthFirstEnumeration.java80
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getAllowsChildren.java59
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java66
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAt.java86
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java66
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildCount.java59
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstChild.java58
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstLeaf.java48
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getIndex.java61
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastChild.java58
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastLeaf.java48
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextLeaf.java53
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextPreviousNode.java50
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextSibling.java45
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getParent.java46
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPath.java48
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousLeaf.java54
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousSibling.java45
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getSiblingCount.java51
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/insert.java119
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isLeaf.java45
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeAncestor.java52
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeChild.java46
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeDescendant.java53
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeRelated.java52
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeSibling.java46
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/pathFromAncestorEnumeration.java76
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java75
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java75
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/remove.java123
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/removeAllChildren.java50
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/setAllowsChildren.java49
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/toString.java42
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Entries17
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/constructor.java40
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundNonSelectionColor.java51
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundSelectionColor.java45
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBorderSelectionColor.java44
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getClosedIcon.java42
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultClosedIcon.java44
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultLeafIcon.java44
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultOpenIcon.java44
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getLeafIcon.java42
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getOpenIcon.java42
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundNonSelectionColor.java63
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundSelectionColor.java63
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBorderSelectionColor.java63
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setClosedIcon.java60
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setLeafIcon.java60
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setOpenIcon.java60
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/constructor.java57
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/CVS/Entries12
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/PR27651.java121
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/constructors.java104
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/equals.java51
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/getLastPathComponent.java45
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/getParentPath.java46
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/getPath.java51
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/getPathComponent.java68
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/getPathCount.java47
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/isDescendant.java65
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/pathByAddingChild.java56
-rw-r--r--gnu/testlet/javax/swing/tree/TreePath/serialization.java69
-rw-r--r--gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Entries2
-rw-r--r--gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/getBounds.java74
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Entries11
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/addEdit.java58
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canRedo.java64
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canUndo.java60
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getPresentationName.java48
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getRedoPresentationName.java63
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getUndoPresentationName.java63
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/isSignificant.java48
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/redo.java93
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/replaceEdit.java58
-rw-r--r--gnu/testlet/javax/swing/undo/AbstractUndoableEdit/undo.java91
-rw-r--r--gnu/testlet/javax/swing/undo/CVS/Entries1
-rw-r--r--gnu/testlet/javax/swing/undo/CVS/Entries.Log5
-rw-r--r--gnu/testlet/javax/swing/undo/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Entries6
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/addEdit.java128
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/canRedo.java62
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/canUndo.java65
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/isInProgress.java51
-rw-r--r--gnu/testlet/javax/swing/undo/CompoundEdit/lastEdit.java68
-rw-r--r--gnu/testlet/javax/swing/undo/StateEdit/CVS/Entries3
-rw-r--r--gnu/testlet/javax/swing/undo/StateEdit/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/StateEdit/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/StateEdit/getPresentationName.java58
-rw-r--r--gnu/testlet/javax/swing/undo/StateEdit/undo.java91
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/CVS/Entries20
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java176
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/addEdit.java73
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/canRedo.java60
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/canUndo.java60
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/canUndoOrRedo.java61
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/discardAllEdits.java59
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java64
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java64
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/end.java57
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/getLimit.java47
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/getRedoPresentationName.java72
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/getUndoOrRedoPresentationName.java76
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/getUndoPresentationName.java72
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/redoTo.java54
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/setLimit.java83
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/toString.java51
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java102
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/undoTo.java53
-rw-r--r--gnu/testlet/javax/swing/undo/UndoManager/undoableEditHappened.java50
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Entries7
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Repository1
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Root1
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/UndoableEditSupport.java81
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java126
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/createCompoundEdit.java64
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/getUndoableEditListeners.java80
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/getUpdateLevel.java70
-rw-r--r--gnu/testlet/javax/swing/undo/UndoableEditSupport/toString.java104
-rw-r--r--gnu/testlet/javax/xml/CVS/Entries1
-rw-r--r--gnu/testlet/javax/xml/CVS/Entries.Log2
-rw-r--r--gnu/testlet/javax/xml/CVS/Repository1
-rw-r--r--gnu/testlet/javax/xml/CVS/Root1
-rw-r--r--gnu/testlet/javax/xml/parsers/CVS/Entries1
-rw-r--r--gnu/testlet/javax/xml/parsers/CVS/Entries.Log1
-rw-r--r--gnu/testlet/javax/xml/parsers/CVS/Repository1
-rw-r--r--gnu/testlet/javax/xml/parsers/CVS/Root1
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Entries4
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Repository1
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Root1
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/PR27864.java100
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/Verifyer.java149
-rw-r--r--gnu/testlet/javax/xml/parsers/DocumentBuilder/parseSimpleXML.java85
-rw-r--r--gnu/testlet/javax/xml/xpath/CVS/Entries2
-rw-r--r--gnu/testlet/javax/xml/xpath/CVS/Repository1
-rw-r--r--gnu/testlet/javax/xml/xpath/CVS/Root1
-rw-r--r--gnu/testlet/javax/xml/xpath/XPath.java70
-rw-r--r--gnu/testlet/locales/CVS/Entries2
-rw-r--r--gnu/testlet/locales/CVS/Repository1
-rw-r--r--gnu/testlet/locales/CVS/Root1
-rwxr-xr-xgnu/testlet/locales/LocaleTest.java481
-rw-r--r--gnu/testlet/org/CVS/Entries1
-rw-r--r--gnu/testlet/org/CVS/Entries.Log2
-rw-r--r--gnu/testlet/org/CVS/Repository1
-rw-r--r--gnu/testlet/org/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/Any/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA/Any/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/Any/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/Any/testAny.java294
-rw-r--r--gnu/testlet/org/omg/CORBA/Asserter.java49
-rw-r--r--gnu/testlet/org/omg/CORBA/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA/CVS/Entries.Log5
-rw-r--r--gnu/testlet/org/omg/CORBA/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Entries6
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java55
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java81
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java41
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServer.java64
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java33
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/CVS/Entries6
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/CVS/Entries.Log3
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/DirectTest.java255
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/NEC_Corporation_RF11.java110
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1.java73
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java165
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Holder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2.java60
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java128
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Holder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/B.java73
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java88
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/BHolder.java70
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/B_except.java55
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java117
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Entries155
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java105
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java105
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java105
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_except.java161
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java484
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java99
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct.java80
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java183
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_union.java326
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java360
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B.java122
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java171
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean.java100
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java140
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char.java106
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java152
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long.java106
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java152
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short.java106
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java153
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong.java106
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java152
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort.java107
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java152
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_except.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java146
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java103
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_except.java60
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java145
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct.java56
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java117
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_union.java106
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java150
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java105
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1.java164
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java246
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Holder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2.java56
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java136
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Holder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3.java56
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java136
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Holder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java99
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct.java123
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java478
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHolder.java70
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_union.java635
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java820
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java105
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_except.java81
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java184
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java98
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct.java62
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java149
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHolder.java69
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_union.java150
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java202
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHolder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java45
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java1382
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11Stub.java2610
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java3714
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java102
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Holder.java68
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java322
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Servant.java3377
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/RequestTest.java232
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/comServer.java125
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Entries15
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java201
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterStub.java427
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/comServant.java200
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java107
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/node.java56
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java162
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/nodeHolder.java99
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java72
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java109
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/passThis.java62
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java104
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/returnThis.java67
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java117
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHolder.java97
-rw-r--r--gnu/testlet/org/omg/CORBA/ORB/parallelRunTest.java204
-rw-r--r--gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/ServiceInformationHelper/basicHelperOperations.java153
-rw-r--r--gnu/testlet/org/omg/CORBA/TypeCode/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA/TypeCode/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/TypeCode/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/TypeCode/orbTypecodes.java204
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/CVS/Entries.Log2
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/InputStream/cdrIO.java610
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/OutputStream/BinaryAlignment.java136
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Entries3
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java67
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Entries18
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java21
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java42
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java31
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java60
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoDefaultFactory.java24
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java106
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java59
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoImpl.java30
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java17
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java54
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java72
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java58
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoDefaultFactory.java26
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java84
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java43
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl.java30
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java17
-rw-r--r--gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java208
-rw-r--r--gnu/testlet/org/omg/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/CVS/Entries.Log6
-rw-r--r--gnu/testlet/org/omg/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java1237
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Entries5
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum.java79
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnumHelper.java86
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStruct.java60
-rw-r--r--gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java167
-rw-r--r--gnu/testlet/org/omg/IOP/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/IOP/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/IOP/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/IOP/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/IOP/IOR/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/IOP/IOR/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/IOP/IOR/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/IOP/IOR/Streams.java105
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Entries6
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java314
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucClientRequestInterceptor.java226
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucInitialiser.java60
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucIorInterceptor.java77
-rw-r--r--gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucServerRequestInterceptor.java194
-rw-r--r--gnu/testlet/org/omg/PortableServer/CVS/Entries1
-rw-r--r--gnu/testlet/org/omg/PortableServer/CVS/Entries.Log2
-rw-r--r--gnu/testlet/org/omg/PortableServer/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableServer/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/BAD_OPERATIONHolder.java92
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/CVS/Entries36
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/Test.java43
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestActivate.java704
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestBase.java88
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestCollocated.java537
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestCreate.java235
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestDSIRef_impl.java193
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestDSI_impl.java179
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestDeactivate.java333
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestDestroy.java357
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestException.java52
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestFind.java192
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestHelper.java72
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForward.java43
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardActivator_impl.java94
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardClient.java212
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardHelper.java79
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardOperations.java45
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardPOA.java113
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServer.java45
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerHelper.java106
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerMain.java207
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerOperations.java48
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerPOA.java127
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestLocationForward_impl.java101
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestMisc.java1568
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestOperations.java44
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestPOA.java107
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/TestUtil.java106
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/Test_impl.java139
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/Util.java349
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardServerStub.java162
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardStub.java105
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/_TestStub.java84
-rw-r--r--gnu/testlet/org/omg/PortableServer/POA/testForwarding.java108
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries2
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Entries17
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Repository1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Root1
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/gnuAdapterActivator.java62
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserException.java41
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserExceptionHelper.java79
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Servant.java106
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Server.java429
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTester.java29
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java62
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterOperations.java55
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java152
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterStub.java203
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_remotePoaControlStub.java126
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl.java29
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlHelper.java63
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlOperations.java44
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlPOA.java118
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java133
-rw-r--r--gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java485
-rw-r--r--gnu/testlet/org/w3c/CVS/Entries1
-rw-r--r--gnu/testlet/org/w3c/CVS/Entries.Log1
-rw-r--r--gnu/testlet/org/w3c/CVS/Repository1
-rw-r--r--gnu/testlet/org/w3c/CVS/Root1
-rw-r--r--gnu/testlet/org/w3c/dom/CVS/Entries3
-rw-r--r--gnu/testlet/org/w3c/dom/CVS/Repository1
-rw-r--r--gnu/testlet/org/w3c/dom/CVS/Root1
-rw-r--r--gnu/testlet/org/w3c/dom/childNodesLength.java131
-rw-r--r--gnu/testlet/org/w3c/dom/test.xml12
-rw-r--r--gnu/testlet/runner/CVS/Entries18
-rw-r--r--gnu/testlet/runner/CVS/Entries.Log1
-rw-r--r--gnu/testlet/runner/CVS/Repository1
-rw-r--r--gnu/testlet/runner/CVS/Root1
-rw-r--r--gnu/testlet/runner/CheckResult.java177
-rw-r--r--gnu/testlet/runner/ClassResult.java131
-rw-r--r--gnu/testlet/runner/CreateTags.java166
-rw-r--r--gnu/testlet/runner/Filter.java155
-rw-r--r--gnu/testlet/runner/HTMLGenerator.java420
-rw-r--r--gnu/testlet/runner/Mauve.java620
-rw-r--r--gnu/testlet/runner/MauveTests.java123
-rw-r--r--gnu/testlet/runner/PackageResult.java162
-rw-r--r--gnu/testlet/runner/Result.java30
-rw-r--r--gnu/testlet/runner/RunResult.java239
-rw-r--r--gnu/testlet/runner/Tags.java76
-rw-r--r--gnu/testlet/runner/TestResult.java144
-rw-r--r--gnu/testlet/runner/TestletToAPI.java583
-rw-r--r--gnu/testlet/runner/XMLGenerator.java32
-rw-r--r--gnu/testlet/runner/XMLReportConstants.java54
-rw-r--r--gnu/testlet/runner/XMLReportParser.java215
-rw-r--r--gnu/testlet/runner/XMLReportWriter.java380
-rw-r--r--gnu/testlet/runner/compare/CVS/Entries13
-rw-r--r--gnu/testlet/runner/compare/CVS/Repository1
-rw-r--r--gnu/testlet/runner/compare/CVS/Root1
-rw-r--r--gnu/testlet/runner/compare/ClassComparison.java39
-rw-r--r--gnu/testlet/runner/compare/Comparison.java100
-rw-r--r--gnu/testlet/runner/compare/ComparisonVisitor.java37
-rw-r--r--gnu/testlet/runner/compare/ComparisonWriter.java231
-rw-r--r--gnu/testlet/runner/compare/EvolutionType.java48
-rw-r--r--gnu/testlet/runner/compare/EvolutionTypeVisitor.java50
-rw-r--r--gnu/testlet/runner/compare/HTMLComparisonWriter.java153
-rw-r--r--gnu/testlet/runner/compare/PackageComparison.java40
-rw-r--r--gnu/testlet/runner/compare/ReportComparator.java205
-rw-r--r--gnu/testlet/runner/compare/RunComparison.java104
-rw-r--r--gnu/testlet/runner/compare/TestComparison.java68
-rw-r--r--gnu/testlet/runner/compare/TextComparisonWriter.java82
-rwxr-xr-xinstall-sh246
-rw-r--r--java-nio.log152
-rw-r--r--javax.swing.test-results2
-rw-r--r--junit/CVS/Entries1
-rw-r--r--junit/CVS/Entries.Log3
-rw-r--r--junit/CVS/Repository1
-rw-r--r--junit/CVS/Root1
-rw-r--r--junit/framework/Assert.java571
-rw-r--r--junit/framework/AssertionFailedError.java52
-rw-r--r--junit/framework/CVS/Entries12
-rw-r--r--junit/framework/CVS/Repository1
-rw-r--r--junit/framework/CVS/Root1
-rw-r--r--junit/framework/ComparisonFailure.java49
-rw-r--r--junit/framework/Protectable.java38
-rw-r--r--junit/framework/Test.java45
-rw-r--r--junit/framework/TestCase.java313
-rw-r--r--junit/framework/TestFailure.java116
-rw-r--r--junit/framework/TestListener.java60
-rw-r--r--junit/framework/TestResult.java300
-rw-r--r--junit/framework/TestSuite.java337
-rw-r--r--junit/framework/package.html36
-rw-r--r--junit/runner/BaseTestRunner.java30
-rw-r--r--junit/runner/CVS/Entries2
-rw-r--r--junit/runner/CVS/Repository1
-rw-r--r--junit/runner/CVS/Root1
-rw-r--r--junit/textui/CVS/Entries2
-rw-r--r--junit/textui/CVS/Repository1
-rw-r--r--junit/textui/CVS/Root1
-rw-r--r--junit/textui/TestRunner.java44
-rw-r--r--lang-tests1614
-rwxr-xr-xmissing336
-rwxr-xr-xmkinstalldirs32
-rw-r--r--net/CVS/Entries1
-rw-r--r--net/CVS/Entries.Log1
-rw-r--r--net/CVS/Repository1
-rw-r--r--net/CVS/Root1
-rw-r--r--net/sourceforge/CVS/Entries1
-rw-r--r--net/sourceforge/CVS/Entries.Log1
-rw-r--r--net/sourceforge/CVS/Repository1
-rw-r--r--net/sourceforge/CVS/Root1
-rw-r--r--net/sourceforge/nanoxml/CVS/Entries3
-rw-r--r--net/sourceforge/nanoxml/CVS/Repository1
-rw-r--r--net/sourceforge/nanoxml/CVS/Root1
-rw-r--r--net/sourceforge/nanoxml/XMLElement.java1318
-rw-r--r--net/sourceforge/nanoxml/XMLParseException.java134
-rw-r--r--num-class1
-rw-r--r--num-java1
-rw-r--r--raftmpfilebin0 -> 12 bytes
-rw-r--r--tmpfile0
-rw-r--r--utf8test.out2
9853 files changed, 647101 insertions, 0 deletions
diff --git a/.classpath b/.classpath
new file mode 100644
index 00000000..3fc4a25c
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry excluding="gnu/anttask/|gnu/testlet/BinaryCompatibility/|gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java" kind="src" path=""/>
+ <classpathentry combineaccessrules="false" kind="src" path="/classpath"/>
+ <classpathentry kind="lib" path="/classpath/install/share/classpath"/>
+ <classpathentry kind="output" path=""/>
+</classpath>
diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 00000000..12f71eea
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,23 @@
+Makefile
+autom4te.cache
+config.log
+.save-keys
+choices
+classes
+classes.stamp
+test_classes
+tmpfile
+raftmpfile
+uses_files
+config.status
+Compat2.tmp
+dataoutput.out
+dataoutput2.out
+utf8test.out
+todos.txt
+testfilename.txt
+build
+doc
+SimpleTestHarness
+mauve-classpath
+mauve.out
diff --git a/.externalToolBuilders/CVS/Entries b/.externalToolBuilders/CVS/Entries
new file mode 100644
index 00000000..a914c598
--- /dev/null
+++ b/.externalToolBuilders/CVS/Entries
@@ -0,0 +1,5 @@
+/ConfigureMauve.launch/1.2/Wed Mar 1 22:37:57 2006/-kk/
+/Mauve Harness.launch/1.1/Fri Jul 28 05:26:24 2006//
+/MauveBatchRun.launch/1.1/Wed Dec 21 15:07:19 2005//
+/MauveTestlet.launch/1.1/Sun Jan 1 20:26:40 2006//
+D
diff --git a/.externalToolBuilders/CVS/Repository b/.externalToolBuilders/CVS/Repository
new file mode 100644
index 00000000..4537c585
--- /dev/null
+++ b/.externalToolBuilders/CVS/Repository
@@ -0,0 +1 @@
+mauve/.externalToolBuilders
diff --git a/.externalToolBuilders/CVS/Root b/.externalToolBuilders/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/.externalToolBuilders/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/.externalToolBuilders/ConfigureMauve.launch b/.externalToolBuilders/ConfigureMauve.launch
new file mode 100644
index 00000000..5b556e18
--- /dev/null
+++ b/.externalToolBuilders/ConfigureMauve.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;launchConfigurationWorkingSet factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; name=&quot;workingSet&quot;&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/mauve/configure&quot; type=&quot;1&quot;/&gt;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/mauve/gnu/testlet/config.java.in&quot; type=&quot;1&quot;/&gt;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="configure"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${build_project}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${system_path:sh}"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+</launchConfiguration>
diff --git a/.externalToolBuilders/Mauve Harness.launch b/.externalToolBuilders/Mauve Harness.launch
new file mode 100644
index 00000000..1e0165b1
--- /dev/null
+++ b/.externalToolBuilders/Mauve Harness.launch
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Harness"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-showpasses -verbose -debug -timeout 300000 ${resource_path}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="mauve"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="classpath"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djava.util.logging.config.file=${project_loc:mauve}/logging.properties"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/classpath"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/mauve"/>
+</listAttribute>
+<mapAttribute key="org.eclipse.debug.core.environmentVariables">
+<mapEntry key="MAUVE_PROJECT_NAME" value="${project_name}"/>
+</mapAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+</launchConfiguration>
diff --git a/.externalToolBuilders/MauveBatchRun.launch b/.externalToolBuilders/MauveBatchRun.launch
new file mode 100644
index 00000000..0755f02a
--- /dev/null
+++ b/.externalToolBuilders/MauveBatchRun.launch
@@ -0,0 +1,18 @@
+<?xml version='1.0'?>
+<launchConfiguration type='org.eclipse.ui.externaltools.ProgramLaunchConfigurationType'>
+ <stringAttribute key='org.eclipse.debug.core.ATTR_REFRESH_SCOPE' value='${container}'/>
+ <listAttribute key='org.eclipse.debug.ui.favoriteGroups'>
+ <listEntry value='org.eclipse.ui.externaltools.launchGroup'/>
+</listAttribute>
+ <stringAttribute key='org.eclipse.ui.externaltools.ATTR_LOCATION' value='${project_loc:mauve}/batch_run'/>
+ <stringAttribute key='org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY' value='${project_loc}'/>
+ <mapAttribute key='org.eclipse.debug.core.environmentVariables'>
+ <mapEntry key='KEYS' value='classpath'/>
+ <mapEntry key='CLASSPATHBCP' value='${project_loc:classpath}/install/share/classpath'/>
+ <mapEntry key='CACAO_BIN' value='${project_loc:classpath}/install/bin/java'/>
+ <mapEntry key='JAMVM_BIN' value='${project_loc:classpath}/install/bin/jamvm'/>
+ <mapEntry key='RUNTIME' value='${project_loc:classpath}/install/bin/java'/>
+</mapAttribute>
+ <booleanAttribute key='org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND' value='false'/>
+ <booleanAttribute key='org.eclipse.debug.core.appendEnvironmentVariables' value='false'/>
+</launchConfiguration> \ No newline at end of file
diff --git a/.externalToolBuilders/MauveTestlet.launch b/.externalToolBuilders/MauveTestlet.launch
new file mode 100644
index 00000000..4333f170
--- /dev/null
+++ b/.externalToolBuilders/MauveTestlet.launch
@@ -0,0 +1,2 @@
+<?xml version='1.0'?>
+<launchConfiguration type='org.eclipse.jdt.launching.localJavaApplication'><stringAttribute key='org.eclipse.jdt.launching.VM_INSTALL_NAME' value='classpath'/><stringAttribute key='org.eclipse.jdt.launching.PROGRAM_ARGUMENTS' value='${java_type_name}'/><stringAttribute key='org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID' value='org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType'/><listAttribute key='org.eclipse.debug.ui.favoriteGroups'><listEntry value='org.eclipse.debug.ui.launchGroup.debug'/><listEntry value='org.eclipse.debug.ui.launchGroup.run'/></listAttribute><booleanAttribute key='org.eclipse.debug.core.appendEnvironmentVariables' value='true'/><stringAttribute key='org.eclipse.jdt.launching.MAIN_TYPE' value='gnu.testlet.SingleTestHarness'/><stringAttribute key='org.eclipse.jdt.launching.PROJECT_ATTR' value='mauve'/></launchConfiguration>
diff --git a/.project b/.project
new file mode 100644
index 00000000..4432fe91
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>mauve</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>auto,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value>&lt;project&gt;/.externalToolBuilders/ConfigureMauve.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/CVS/Entries b/.settings/CVS/Entries
new file mode 100644
index 00000000..e13b9f76
--- /dev/null
+++ b/.settings/CVS/Entries
@@ -0,0 +1,3 @@
+/org.eclipse.jdt.core.prefs/1.2/Tue Jan 2 14:13:04 2007/-kk/
+/org.eclipse.jdt.ui.prefs/1.2/Tue Nov 1 16:36:35 2005/-kk/
+D
diff --git a/.settings/CVS/Repository b/.settings/CVS/Repository
new file mode 100644
index 00000000..3945e17a
--- /dev/null
+++ b/.settings/CVS/Repository
@@ -0,0 +1 @@
+mauve/.settings
diff --git a/.settings/CVS/Root b/.settings/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/.settings/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..d48cef39
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Tue Jan 02 15:06:27 CET 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..8f3c3884
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,4 @@
+#Tue Nov 01 09:25:37 MST 2005
+eclipse.preferences.version=1
+internal.default.compliance=user
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\n<templates><template id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment" description\="Comment for getter method" context\="gettercomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * @return Returns the ${bare_field_name}.\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment" description\="Comment for setter method" context\="settercomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * @param ${param} The ${bare_field_name} to set.\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment" description\="Comment for created constructors" context\="constructorcomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * ${tags}\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment" description\="Comment for created Java files" context\="filecomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * \n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment" description\="Comment for created types" context\="typecomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment" description\="Comment for fields" context\="fieldcomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * \n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment" description\="Comment for non-overriding methods" context\="methodcomment_context" enabled\="true" deleted\="false" autoinsert\="true">/**\n * ${tags}\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment" description\="Comment for overriding methods" context\="overridecomment_context" enabled\="true" deleted\="false" autoinsert\="true">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype" description\="Newly created files" context\="newtype_context" enabled\="true" deleted\="false" autoinsert\="false">/* ${file_name} -- FIXME\: describe\n Copyright (C) ${year} FIXME\: your info here\nThis file is part of Mauve.\n\nMauve is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2, or (at your option)\nany later version.\n\nMauve is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with Mauve; see the file COPYING. If not, write to the\nFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA\n02110-1301 USA.\n\n*/\n\n// Tags\: FIXME\n\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock" description\="Code in new catch blocks" context\="catchblock_context" enabled\="true" deleted\="false" autoinsert\="true">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody" description\="Code in created method stubs" context\="methodbody_context" enabled\="true" deleted\="false" autoinsert\="true">// ${todo} Auto-generated method stub\n${body_statement}</template><template id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody" description\="Code in created constructor stubs" context\="constructorbody_context" enabled\="true" deleted\="false" autoinsert\="true">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody" description\="Code in created getters" context\="getterbody_context" enabled\="true" deleted\="false" autoinsert\="true">return ${field};</template><template id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody" description\="Code in created setters" context\="setterbody_context" enabled\="true" deleted\="false" autoinsert\="true">${field} \= ${param};</template></templates>
diff --git a/COPYING b/COPYING
new file mode 100644
index 00000000..eeb586b3
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program 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 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/CVS/Entries b/CVS/Entries
new file mode 100644
index 00000000..aa218177
--- /dev/null
+++ b/CVS/Entries
@@ -0,0 +1,22 @@
+/.classpath/1.3/Tue Sep 27 20:25:02 2005/-kk/
+/.cvsignore/1.9/Wed Jun 14 19:28:27 2006//
+/.project/1.2/Wed Mar 1 22:37:57 2006/-kk/
+/COPYING/1.1/Fri Dec 11 11:27:53 1998//
+/ChangeLog/1.2417/Wed May 15 07:28:58 2013//
+/Harness.java/1.36/Mon Aug 20 13:50:57 2012//
+/Makefile.am/1.36/Tue Apr 24 00:45:01 2012//
+/Makefile.in/1.46/Mon Nov 15 15:55:51 2010//
+/README/1.30/Wed Feb 22 15:32:12 2012//
+/README.PKITS/1.1/Tue Jul 25 22:44:24 2006//
+/RunnerProcess.java/1.21/Tue Apr 24 00:45:01 2012//
+/THANKS/1.8/Mon Oct 31 08:02:00 2005//
+/acinclude.m4/1.2/Mon Mar 15 19:20:05 2004//
+/aclocal.m4/1.26/Mon Nov 15 15:55:51 2010//
+/config.guess/1.1/Mon Feb 18 01:43:06 2002//
+/config.sub/1.1/Mon Feb 18 01:43:06 2002//
+/configure/1.35/Mon Nov 15 15:55:51 2010//
+/configure.in/1.22/Wed Jun 25 14:51:50 2008//
+/install-sh/1.1.1.1/Fri Nov 6 16:52:31 1998//
+/missing/1.2/Mon Feb 18 01:43:06 2002//
+/mkinstalldirs/1.1.1.1/Fri Nov 6 16:52:31 1998//
+D
diff --git a/CVS/Entries.Log b/CVS/Entries.Log
new file mode 100644
index 00000000..57f47295
--- /dev/null
+++ b/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/.externalToolBuilders////
+A D/.settings////
+A D/gnu////
+A D/junit////
+A D/net////
diff --git a/CVS/Repository b/CVS/Repository
new file mode 100644
index 00000000..82c54033
--- /dev/null
+++ b/CVS/Repository
@@ -0,0 +1 @@
+mauve
diff --git a/CVS/Root b/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 00000000..1045922c
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,20803 @@
+2013-05-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getName.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-05-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/awt/Label/MouseMotionListenerTest.java:
+ Make this test to behave properly on slower machines.
+ * testlet/java/awt/List/ScrollbarPaintTest.java:
+ Small fix to make this test more reliable.
+
+2013-05-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingMethod.java:
+ Three new tests added for the class ClassNotFoundException:
+ getEnclosingClass, getEnclosingConstructor and getEnclosingMethod.
+
+2013-05-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredAnnotations.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredClasses.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredField.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaringClass.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getField.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java:
+ Six new tests added for the class ClassNotFoundException:
+ getDeclaredAnnotations, getDeclaredClasses, getDeclaredField, getDeclaringClass,
+ getField.java and isEnum.
+
+2013-05-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/isAnnotation.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isAnnotationPresent.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isAnonymousClass.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isArray.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java:
+ Five new tests added for the class ClassNotFoundException:
+ isAnnotation, isAnnotationPresent, isAnonymousClass, isArray and isEnum.
+
+2013-05-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-05-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getConstructor.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructor.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethod.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getMethod.java:
+ Four new tests added for the class ClassNotFoundException:
+ getConstructor, getDeclaredConstructor, getDeclaredMethod and getMethod.
+
+2013-05-02 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/classInfo/getAnnotation.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getAnnotations.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getCanonicalName.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getClasses.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/getComponentType.java:
+ Added five new tests for the class ClassNotFoundException:
+ getAnnotation, getAnnotations, getCanonicalName, getClasses.java and
+ getComponentType.
+
+2013-04-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassNotFoundException/TryCatch.java:
+ * testlet/java/lang/ClassNotFoundException/constructor.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java:
+ * testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getConstructors.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredClasses.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getName.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getPackage.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isAnnotationPresent.java:
+ Added new tests for the class ClassFormatError, updated existing test
+ for OpenJDK7.
+
+2013-04-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getMethod.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isAnnotation.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isAnonymousClass.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isArray.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isEnum.java:
+ Added five new tests for the class ClassFormatError.
+
+2013-04-24 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isInstance.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isInterface.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getFields.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getMethods.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getModifiers.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaringClass.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getEnclosingMethod.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getField.java:
+ Added five new tests for ClassFormatError class: getDeclaringClass,
+ getEnclosingClass, getEnclosingConstructor, getEnclosingMethod and
+ getField.
+
+2013-04-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getConstructor.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredAnnotations.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructor.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredField.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethod.java:
+ Added five new tests for ClassFormatError class: getConstructor,
+ getDeclaredAnnotations, getDeclaredConstructor, getDeclaredField and
+ getDeclaredMethod.
+
+2013-04-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/classInfo/getAnnotation.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getAnnotations.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getCanonicalName.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getClasses.java:
+ * testlet/java/lang/ClassFormatError/classInfo/getComponentType.java:
+ Added five new tests for ClassFormatError class: getAnnotation,
+ getAnnotations, getCanonicalName, getClasses and getComponentType..
+
+2013-04-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassFormatError/TryCatch.java:
+ * testlet/java/lang/ClassFormatError/constructor.java:
+ * testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java:
+ * testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassCircularityError/classInfo/getMethods.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getName.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getPackage.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getMethods.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/isInstance.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getFields.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-04-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaringClass.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getEnclosingMethod.java:
+ Added four new tests for ClassCircularityError class: getDeclaringClass,
+ getEnclosingClass, getEnclosingConstructor and getEnclosingMethod.
+
+2013-04-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredAnnotations.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredClasses.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructor.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getField.java:
+ * testlet/java/lang/ClassCircularityError/classInfo/getMethod.java:
+ Added five new tests for ClassCircularityError class: getDeclaredAnnotations
+ getDeclaredClasses, getDeclaredConstructor, getField and getMethod.
+
+2013-04-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getComponentType.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredField.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethod.java:
+ Added four new tests for ClassCircularityError class: getComponentType,
+ getConstructor, getDeclaredField and getDeclaredMethod.
+
+2013-04-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isEnum.java:
+ Added five new tests for ClassCircularityError class: isAnnotation,
+ isAnnotationPresent, isAnonymousClass, isArray and isEnum.
+
+2013-04-02 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getName.java:
+ Updated, make these tests to work correctly with OpenJDK7, added JDK tags etc.
+
+2013-03-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaringClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingConstructor.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingMethod.java:
+ Added four new tests for ClassCastException class: getDeclaringClass,
+ getEnclosingClass, getEnclosingConstructor and getEnclosingMethod.
+
+2013-03-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java:
+ Added new methods to test on OpenJDK7.
+
+2013-03-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotation.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotations.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getCanonicalName.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getClasses.java:
+ Added four new tests for ClassCircularityError class: getAnnotation,
+ getAnnotations, getCanonicalName, getClasses.
+
+2013-03-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCircularityError/TryCatch.java:
+ * gnu/testlet/java/lang/ClassCircularityError/constructor.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java:
+ Updated eight ClassCircularityError tests, added JDK tag etc.
+
+2013-03-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethod.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isArray.java:
+ Added five new tests for ClassCastException class: getDeclaredMethod,
+ isAnnotation, isAnnotationPresent, isAnonymousClass and isArray.
+
+2013-03-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredAnnotations.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredClasses.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructor.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isEnum.java:
+ Added four new tests for ClassCastException class: isEnum,
+ getDeclaredAnnotations, getDeclaredClasses and getDeclaredConstructor.
+
+2013-03-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java:
+ Updated, added JDK tag etc.
+
+2013-03-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredField.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getField.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getMethod.java:
+ Added four new tests for ClassCastException class: getConstructor,
+ getDeclaredField, getField and getMethod.
+
+2013-03-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotation.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotations.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getCanonicalName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getClasses.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getComponentType.java:
+ Added five new tests for ClassCastException class: getAnnotation,
+ getAnnotations, getCanonicalName, getClasses and getComponentType.
+
+2013-03-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/TryCatch.java:
+ * gnu/testlet/java/lang/ClassCastException/constructor.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java:
+ Updated, added JDK tag etc.
+
+2013-03-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java:
+ Updated, modified tests bodies, added JDK tag, removed check for
+ "native" modifier etc.
+
+2013-03-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isArray.java:
+ Updated, added JDK tag etc.
+
+2013-03-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaringClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getMethod.java:
+ Added two new tests for AssertionError class: getDeclaringClass and
+ getMethod.
+
+2013-03-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java:
+ Updated, modified tests bodies, added JDK tag, removed check for
+ "native" modifier etc.
+
+2013-03-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getClasses.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getComponentType.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getField.java:
+ Added three new tests for AssertionError class: getClasses,
+ getComponentType and getField.
+
+2013-03-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AssertionError/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/AssertionError/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/AssertionError/classInfo/getEnclosingMethod.java:
+ Added three new tests for AssertionError class: getEnclosingClass,
+ getEnclosingConstructor and getEnclosingMethod.
+
+2013-03-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getAnnotation.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getAnnotations.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getCanonicalName.java:
+ Added three new tests for AssertionError class: getAnnotation,
+ getAnnotations and getCanonicalName.
+
+2013-03-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java:
+ Updated, modified tests bodies, added JDK tag etc.
+
+2013-03-01 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredField.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethod.java:
+ Added three new tests for AssertionError class.
+
+2013-02-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/TryCatch.java:
+ * gnu/testlet/java/lang/AssertionError/constructor.java:
+ Updated, modified tests bodies, added JDK tag etc.
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredAnnotations.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredClasses.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructor.java:
+ Added three new tests for AssertionError class.
+
+2013-02-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArrayStoreException/classInfo/getMethods.java:
+ Fixed the handling of "native" modifier of methods and constructors.
+
+2013-02-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java:
+ Updated, modified tests bodies, added JDK tag etc.
+
+2013-02-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getField.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethod.java:
+ Two new tests added for a class ArrayStoreException:
+ getField and getMethod.
+
+2013-02-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingConstructor.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingMethod.java:
+ Three new tests added for a class ArrayStoreException:
+ getEnclosingClass, getEnclosingConstructor and getEnclosingMethod.
+
+2013-02-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java:
+ Updated, modified tests bodies, added JDK tag etc.
+
+2013-02-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getComponentType.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredField.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethod.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaringClass.java:
+ Five new tests added for a class ArrayStoreException:
+ getComponentType, getConstructor, getDeclaringClass, getDeclaredField
+ and getDeclaredMethod.
+
+2013-02-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotation.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotations.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getCanonicalName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getClasses.java:
+ Four new tests added for a class ArrayStoreException: getAnnotation,
+ getAnnotations, getCanonicalName and getClasses.
+
+2013-02-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java:
+ Updated, added JDK tag.
+
+2013-02-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredAnnotations.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredClasses.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructor.java:
+ Three new tests added for a class ArrayStoreException.
+
+2013-02-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java:
+ Updated, added JDK tag.
+
+2013-02-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/TryCatch.java:
+ * gnu/testlet/java/lang/ArrayStoreException/constructor.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java:
+ Updated, added JDK tag.
+
+2013-02-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java:
+ Updated, added JDK tag.
+
+2013-02-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingMethod.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getField.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethod.java:
+ Three new tests added for a class ArrayIndexOutOfBoundsException.
+
+2013-01-31 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredField.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethod.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaringClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingConstructor.java:
+ Five new tests added for a class ArrayIndexOutOfBoundsException.
+
+2013-01-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredAnnotations.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredClasses.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructor.java:
+ Three new tests added for a class ArrayIndexOutOfBoundsException.
+
+2013-01-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java:
+ Added new test getConstructor and updated recent ones.
+
+2013-01-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ Updated, added JDK tag.
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getClasses.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getComponentType.java:
+ Two new tests added for ArrayIndexOutOfBoundsException class.
+
+2013-01-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java:
+ * testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java:
+ Updated, added JDK tag.
+ * testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotation.java:
+ * testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotations.java:
+ * testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getCanonicalName.java:
+ Three new tests added for ArrayIndexOutOfBoundsException class.
+
+2013-01-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaredAnnotations.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructor.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaredField.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethod.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getMethod.java:
+ Five additional new tests added for ArithmeticException class.
+
+2013-01-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArithmeticException/classInfo/getClasses.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getComponentType.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaredClasses.java:
+ Three new tests added for ArithmeticException class.
+
+2013-01-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArithmeticException/classInfo/getAnnotation.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getAnnotations.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getCanonicalName.java:
+ Three new tests added for ArithmeticException class.
+
+2013-01-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java:
+ Added new method to test on OpenJDK7.
+ * testlet/java/lang/ArithmeticException/TryCatch.java:
+ * testlet/java/lang/ArithmeticException/constructor.java:
+ Added JDK1.5 tag.
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java:
+ Fixed.
+
+2013-01-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/ArithmeticException/classInfo/getConstructor.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getConstructors.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getDeclaringClass.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getField.java:
+ Added new tests for ArithmeticException classe.
+
+2013-01-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AbstractMethodError/classInfo/getDeclaringClass.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getField.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getMethod.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java:
+ Added new tests for AbstractMethodError and ArithmeticException classes.
+
+2013-01-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AbstractMethodError/classInfo/getEnclosingClass.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getEnclosingConstructor.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getEnclosingMethod.java:
+ Added new tests for AbstractMethodError class.
+
+2013-01-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AbstractMethodError/classInfo/getDeclaredClasses.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethod.java:
+ Added three new tests for AbstractMethodError class.
+
+2013-01-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructor.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredAnnotations.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructor.java:
+ Added new tests for AbstractMethodError class.
+
+2013-01-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/AbstractMethodError/classInfo/getCanonicalName.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getClasses.java:
+ * testlet/java/lang/AbstractMethodError/classInfo/getComponentType.java:
+ Added new tests for AbstractMethodError class.
+
+2013-01-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotation.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotations.java:
+ Added new tests for AbstractMethodError class.
+
+2012-12-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Byte/byteDivide.java:
+ Added new test related to byte divide operation.
+
+2012-12-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Long/longModulo.java:
+ Added new test related to long modulo operation.
+
+2012-12-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Long/longDivide.java:
+ Added new test related to long divide operation.
+
+2012-12-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Integer/integerDivide.java:
+ Fixed.
+ * gnu/testlet/java/lang/Integer/integerModulo.java:
+ Added new test related to integer modulo operation.
+
+2012-12-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Integer/integerDivide.java:
+ Added new test related to integer divide operation.
+
+2012-12-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Float/floatToInt.java:
+ * testlet/java/lang/Float/floatToLong.java:
+ Added two new tests related to float to long conversions.
+
+2012-12-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Double/doubleToLong.java:
+ Added new test related to double to long conversions.
+
+2012-12-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/Double/doubleToInt.java:
+ Added new test related to double to integer conversions.
+
+2012-12-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/RuntimeException/TryCatch.java:
+ * gnu/testlet/java/lang/RuntimeException/constructor.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getName.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java:
+ Added and updated tests for RuntimeException class.
+
+2012-12-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/SecurityException/TryCatch.java:
+ * gnu/testlet/java/lang/SecurityException/constructor.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getName.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java:
+ Added and updated tests for SecurityException class.
+
+2012-12-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * testlet/java/lang/StackOverflowError/TryCatch.java:
+ * testlet/java/lang/StackOverflowError/constructor.java:
+ * testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getConstructors.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getDeclaredConstructors.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getDeclaredFields.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getDeclaredMethods.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getFields.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getMethods.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getModifiers.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getName.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getPackage.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java:
+ * testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isAnnotation.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isAnnotationPresent.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isAnonymousClass.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isArray.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isEnum.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isInstance.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isInterface.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java:
+ * testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java:
+ Added and updated tests for StackOverflowError class.
+
+2012-12-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ Added and updated tests for StringIndexOutOfBoundsException class.
+
+2012-12-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ThreadDeath/TryCatch.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java:
+ Added and updated tests for ThreadDeath class.
+
+2012-12-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java:
+ Added and updated tests for TypeNotPresentException class.
+
+2012-12-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/UnknownError/TryCatch.java:
+ * gnu/testlet/java/lang/UnknownError/constructor.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java:
+ Added and updated tests for UnknownError class.
+
+2012-11-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java:
+ Added and updated tests for UnsatisfiedLinkError class.
+
+2012-11-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java:
+ Added and updated tests for UnsupportedClassVersionError class.
+
+2012-11-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/constructor.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java:
+ Added and updated tests for UnsupportedEncodingException class.
+
+2012-11-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/VerifyError/TryCatch.java:
+ * gnu/testlet/java/lang/VerifyError/constructor.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getName.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java:
+ Added and updated tests for VerifyError class.
+
+2012-11-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatWidthException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getFields.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getMethods.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isArray.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isEnum.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isSynthetic.java:
+ Added 27 new tests for a class IllegalFormatWidthException.
+
+2012-11-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getFields.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getMethods.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isArray.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isEnum.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isSynthetic.java:
+ Added 27 new tests for a class IllegalFormatPrecisionException.
+
+2012-11-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getFields.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getMethods.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isArray.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isEnum.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java:
+ Updated current tests and added new tests for a class IllegalFormatFlagsException.
+
+2012-11-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getFields.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java:
+ Updated.
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isArray.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isEnum.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getMethods.java:
+ Added new tests for a class IllegalFormatConversionException.
+
+2012-11-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java:
+ Updated.
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getFields.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getMethods.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isArray.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isEnum.java:
+ Added new tests for a class IllegalFormatCodePointException.
+
+2012-11-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java:
+ Added missing tag to all tests, fixed the handling of "native"
+ modifier of methods and constructors.
+
+2012-11-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/TryCatch.java:
+ * gnu/testlet/java/lang/AbstractMethodError/constructor.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java:
+ Added missing tag to all tests, fixed the handling of "native"
+ modifier of methods and constructors.
+
+2012-11-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Object/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Object/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/Object/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Object/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/Object/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Object/classInfo/getName.java:
+ * gnu/testlet/java/lang/Object/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Object/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Object/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Object/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Object/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Object/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Object/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Object/classInfo/isSynthetic.java:
+ Added missing tag to all tests, fixed the handling of "native"
+ modifier of methods and constructors.
+
+2012-11-12 Pekka Enberg <penberg@kernel.org>
+
+ * gnu/testlet/java/lang/Object/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/Object/classInfo/getFields.java:
+ * gnu/testlet/java/lang/Object/classInfo/getMethods.java:
+ Fixed to work on GNU Classpath.
+
+2012-11-01 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Object/constructor.java:
+ * gnu/testlet/java/lang/Object/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Object/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/Object/classInfo/getFields.java:
+ * gnu/testlet/java/lang/Object/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Object/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/Object/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Object/classInfo/getName.java:
+ * gnu/testlet/java/lang/Object/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Object/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Object/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Object/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Object/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Object/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Object/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Object/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Object/classInfo/isSynthetic.java:
+ New tests.
+
+2012-10-23 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java:
+ Made these tests compatible with JDK7 API.
+
+2012-10-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/UTFDataFormatException/TryCatch.java:
+ * gnu/testlet/java/io/UTFDataFormatException/constructor.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getName.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/UTFDataFormatException/classInfo/isSynthetic.java:
+ Added 16 new tests for a class java.io.UTFDataFormatException.
+
+2012-10-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/UnsupportedEncodingException/TryCatch.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/constructor.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getName.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isSynthetic.java:
+ Added 16 new tests for a class java.io.UnsupportedEncodingException.
+
+2012-10-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java:
+ Made these tests compatible with JDK7 API.
+
+2012-10-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/SyncFailedException/TryCatch.java:
+ * gnu/testlet/java/io/SyncFailedException/constructor.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getName.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/SyncFailedException/classInfo/isSynthetic.java:
+ Added 16 new tests for a class java.io.SyncFailedException.
+
+2012-10-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/StreamCorruptedException/TryCatch.java:
+ * gnu/testlet/java/io/StreamCorruptedException/constructor.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getName.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/StreamCorruptedException/classInfo/isSynthetic.java:
+ Added 16 new tests for a class java.io.StreamCorruptedException.
+
+2012-10-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ Made these tests compatible with JDK7 API.
+
+2012-10-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/WriteAbortedException/TryCatch.java:
+ * gnu/testlet/java/io/WriteAbortedException/constructor.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getName.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/WriteAbortedException/classInfo/isSynthetic.java:
+ Added new tests for a class java.io.WriteAbortedException.
+
+2012-10-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/NotSerializableException/TryCatch.java:
+ * gnu/testlet/java/io/NotSerializableException/constructor.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getName.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/NotSerializableException/classInfo/isSynthetic.java:
+ Added sixteen new tests for a class java.io.NotSerializableException .
+
+2012-10-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/NotActiveException/TryCatch.java:
+ * gnu/testlet/java/io/NotActiveException/constructor.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getName.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/NotActiveException/classInfo/isSynthetic.java:
+ Added sixteen new tests for a class java.io.NotActiveException.
+
+2012-10-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java:
+ Make these tests compatible with JDK7.
+
+2012-10-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java:
+ Slightly improvements of these tests.
+
+2012-10-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java:
+ Make these tests compatible with JDK7.
+
+2012-10-02 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/IOException/TryCatch.java:
+ * gnu/testlet/java/io/IOException/constructor.java:
+ * gnu/testlet/java/io/IOException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/IOException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/IOException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/IOException/classInfo/getName.java:
+ * gnu/testlet/java/io/IOException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/IOException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/IOException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/IOException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/IOException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/IOException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/IOException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/IOException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/IOException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/IOException/classInfo/isSynthetic.java:
+ Added sixteen new tests for a class java.io.IOException.
+
+2012-10-01 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/IOError/TryCatch.java:
+ * gnu/testlet/java/io/IOError/constructor.java:
+ * gnu/testlet/java/io/IOError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/IOError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/IOError/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/IOError/classInfo/getName.java:
+ * gnu/testlet/java/io/IOError/classInfo/getPackage.java:
+ * gnu/testlet/java/io/IOError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/IOError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/IOError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/IOError/classInfo/isInstance.java:
+ * gnu/testlet/java/io/IOError/classInfo/isInterface.java:
+ * gnu/testlet/java/io/IOError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/IOError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/IOError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/IOError/classInfo/isSynthetic.java:
+ Added sixteen new tests for a class java.io.IOError.
+
+2012-09-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/InvalidObjectException/TryCatch.java:
+ * gnu/testlet/java/io/InvalidObjectException/constructor.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getName.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/InvalidObjectException/classInfo/isSynthetic.java:
+ Added sixteen new tests for a class java.io.InvalidObjectException.
+
+2012-09-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/InterruptedIOException/TryCatch.java:
+ * gnu/testlet/java/io/InterruptedIOException/constructor.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getName.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/InterruptedIOException/classInfo/isSynthetic.java:
+ Sixteen new tests for a class java.io.InterruptedIOException.
+ * gnu/testlet/java/io/InvalidClassException/TryCatch.java:
+ * gnu/testlet/java/io/InvalidClassException/constructor.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getName.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/InvalidClassException/classInfo/isSynthetic.java:
+ Sixteen new tests for a class java.io.InvalidClassException.
+
+2012-09-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/FileNotFoundException/TryCatch.java:
+ * gnu/testlet/java/io/FileNotFoundException/constructor.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getName.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/FileNotFoundException/classInfo/isSynthetic.java:
+ Sixteen new tests for a class java.io.FileNotFoundException.
+
+2012-09-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Byte/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Short/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Short/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Short/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Short/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Short/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Long/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Long/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Long/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Long/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Long/classInfo/isEnum.java:
+ Added 20 new tests for a classes java.lang.(Byte|Short|Integer|Long).
+
+2012-09-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Boolean/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Double/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Double/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Double/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Double/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Double/classInfo/isEnum.java:
+ * gnu/testlet/java/lang/Float/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/Float/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Float/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/Float/classInfo/isArray.java:
+ * gnu/testlet/java/lang/Float/classInfo/isEnum.java:
+ Added new tests for a classes java.lang.(Boolean|Double|Float).
+
+2012-09-18 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java:
+ Added five new tests for a class java.lang.AssertionError.
+
+2012-09-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java:
+ Added five new tests for a class java.lang.ArrayStoreException.
+
+2012-09-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java:
+ Added five new tests for a class java.lang.ArrayIndexOutOfBoundsException.
+
+2012-09-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java:
+ Added five new tests for a class java.lang.ArithmeticException.
+
+2012-09-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java:
+ Added five new tests for a class java.lang.AbstractMethodError.
+
+2012-09-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java:
+ Updated tests for a class AssertionError.
+
+2012-09-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Class/isAnnotation.java:
+ * gnu/testlet/java/lang/Class/isAnnotationPresent.java:
+ * gnu/testlet/java/lang/Class/isArray.java:
+ * gnu/testlet/java/lang/Class/isPrimitive.java:
+ Added new tests for a basic class Class.
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredMethods.java:
+ New tests for a class java.lang.CloneNotSupportedException.
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java:
+ Fixed comments.
+
+2012-09-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java:
+ New tests for a class java.lang.ClassFormatError.
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethods.java:
+ New tests for a class java.lang.ClassNotFoundException.
+ * gnu/testlet/java/lang/ClassFormatError/constructor.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java:
+ Fixed comments.
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java:
+ Fixed comments.
+
+2012-09-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java:
+ New tests for a class java.lang.ClassCastException.
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java:
+ New tests for a class java.lang.CircularityError.
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java:
+ Fixed comments.
+ * gnu/testlet/java/lang/ClassCircularityError/constructor.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java:
+ Fixed comments.
+
+2012-09-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/EOFException/TryCatch.java:
+ * gnu/testlet/java/io/EOFException/constructor.java:
+ * gnu/testlet/java/io/EOFException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getName.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/EOFException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/EOFException/classInfo/isSynthetic.java:
+ Added new tests for the class java.io.EOFException.
+
+2012-08-31 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java:
+ Update this test to reflect changes in OpenJDK 7u8.
+
+2012-08-31 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Math/strictfp_modifier/acos.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/asin.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/atan.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/cbrt.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/cos.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/cosh.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/expm1.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/sin.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/sinh.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/tan.java:
+ * gnu/testlet/java/lang/Math/strictfp_modifier/tanh.java:
+ Added more tests for the package java.lang.Math. These tests
+ use strictfp class modifier.
+
+2012-08-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Math/acos.java:
+ * gnu/testlet/java/lang/Math/asin.java:
+ * gnu/testlet/java/lang/Math/atan.java:
+ * gnu/testlet/java/lang/Math/cbrt.java:
+ * gnu/testlet/java/lang/Math/cosh.java:
+ * gnu/testlet/java/lang/Math/expm1.java:
+ * gnu/testlet/java/lang/Math/sinh.java:
+ * gnu/testlet/java/lang/Math/tan.java:
+ * gnu/testlet/java/lang/Math/tanh.java:
+ Added more tests for the package java.lang.Math.
+
+2012-08-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Math/cos.java:
+ * gnu/testlet/java/lang/Math/sin.java:
+ Added more test cases into these tests.
+
+2012-08-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java:
+ Make these two tests compatible with JDK 1.7.
+
+2012-08-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Double/compareToObject.java:
+ Test of Double method compareTo(Object).
+ * gnu/testlet/java/lang/Double/doubleToLongBits.java:
+ Test of Double method doubleToLongBits(double).
+ * gnu/testlet/java/lang/Double/doubleToRawLongBits.java:
+ Test of Double method doubleToRawLongBits(double).
+ * gnu/testlet/java/lang/Double/valueOfDouble.java:
+ Test of Double method valueOf(double).
+
+2012-08-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java:
+ Make these tests compatible with JDK 1.7.
+
+2012-08-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * Harness.java: fix - tests with specific command line options are
+ now compiled separately, not in one group with other tests.
+ * gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java:
+ Fixed parameters used to call constructor of TypeNotPresent class.
+
+2012-08-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getMethods.java:
+ Added six new tests for a class ArrayStoreExceptionException.
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayStoreExceptionException/classInfo/isSynthetic.java:
+ Fixed typo in comments.
+
+2012-08-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java:
+ Added six new tests for a class ArrayIndexOutOfBoundsException.
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ Fixed typo in comments.
+
+2012-08-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java:
+ Added six new tests for a class ArithmeticException.
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java:
+ Fixed typo in comments.
+
+2012-08-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java:
+ Added six new tests for a class AbstractMethodError.
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java:
+ Fixed typo in comments.
+
+2012-08-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/CharConversionException/TryCatch.java:
+ * gnu/testlet/java/io/CharConversionException/constructor.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getModifiers.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getName.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getPackage.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isInstance.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isInterface.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/io/CharConversionException/classInfo/isSynthetic.java:
+ Added 16 new tests for a class java.io.CharConversionException.
+
+2012-07-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatException/classInfo/InstanceOf.java:
+ Added new test for a class java.util.IllegalFormatException.
+ * gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/getFlags.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/getMessage.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java:
+ Added new tests for a class java.util.IllegalFormatFlagsException.
+
+2012-07-23 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/getConversion.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/getFlags.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/getMessage.java:
+ * gnu/testlet/java/util/FormatterClosedException/TryCatch.java:
+ * gnu/testlet/java/util/FormatterClosedException/constructor.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getName.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/FormatterClosedException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/getCodePoint.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/getMessage.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/TryCatchNPE.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/getArgumentClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/getConversion.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/getMessage.java:
+ Added new tests for classes from java.util package.
+
+2012-07-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/constructor.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java:
+ Added new tests for classes java.util.IllegalFormatCodePointException and
+ java.util.IllegalFormatCodePointException.
+
+2012-07-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/EmptyStackException/TryCatch.java:
+ * gnu/testlet/java/util/EmptyStackException/constructor.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getName.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/EmptyStackException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/TryCatch.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/constructor.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getName.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isSynthetic.java:
+ Added new tests for classes java.util.EmptyStackException and
+ java.util.FormatFlagsConversionMismatchException.
+
+2012-07-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/TryCatch.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/constructor.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/getFlags.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/getMessage.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getName.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isSynthetic.java:
+ Added new tests for a class java.util.DuplicateFormatFlagsException.
+
+2012-07-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/ConcurrentModificationException/TryCatch.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/constructor.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getModifiers.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getName.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getPackage.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInstance.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInterface.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/util/ConcurrentModificationException/classInfo/isSynthetic.java:
+ Added new tests for a class java.util.ConcurrentModificationException.
+
+2012-07-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Class/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Class/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Class/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Class/classInfo/getName.java:
+ * gnu/testlet/java/lang/Class/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Class/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Class/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Class/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Class/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Class/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Class/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Class/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Class/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Class/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-07-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/NegativeArraySizeException/TryCatch.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/constructor.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getName.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/TryCatch.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/constructor.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getName.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NoSuchFieldException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/TryCatch.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/constructor.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getName.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NoSuchMethodException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/NullPointerException/TryCatch.java:
+ * gnu/testlet/java/lang/NullPointerException/constructor.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getName.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NullPointerException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/NumberFormatException/TryCatch.java:
+ * gnu/testlet/java/lang/NumberFormatException/constructor.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getName.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NumberFormatException/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-07-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/TryCatch.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/constructor.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/InstantiationException/TryCatch.java:
+ * gnu/testlet/java/lang/InstantiationException/constructor.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getName.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/InstantiationException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/InterruptedException/TryCatch.java:
+ * gnu/testlet/java/lang/InterruptedException/constructor.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getName.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/InterruptedException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/RuntimeException/TryCatch.java:
+ * gnu/testlet/java/lang/RuntimeException/constructor.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getName.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-07-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCastException/TryCatch.java:
+ * gnu/testlet/java/lang/ClassCastException/constructor.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalAccessException/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalAccessException/constructor.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalAccessException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/constructor.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalArgumentException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/constructor.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalStateException/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalStateException/constructor.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalStateException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/constructor.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-06-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/SecurityException/TryCatch.java:
+ * gnu/testlet/java/lang/SecurityException/constructor.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getName.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/constructor.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-06-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassNotFoundException/TryCatch.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/constructor.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/getCause.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/getException.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/TryCatch.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/constructor.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/TryCatch.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/constructor.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getName.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/Exception/TryCatch.java:
+ * gnu/testlet/java/lang/Exception/constructor.java:
+ * gnu/testlet/java/lang/Exception/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getName.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Exception/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Exception/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-06-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ArithmeticException/TryCatch.java:
+ * gnu/testlet/java/lang/ArithmeticException/constructor.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/ArrayStoreException/TryCatch.java:
+ * gnu/testlet/java/lang/ArrayStoreException/constructor.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java:
+ Added new tests for classes from a package java.lang.
+
+2012-06-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ExceptionInInitializerError/constructor.java:
+ * gnu/testlet/java/lang/IllegalAccessError/constructor.java:
+ * gnu/testlet/java/lang/IncompatibleClassChangeError/constructor.java:
+ * gnu/testlet/java/lang/InternalError/constructor.java:
+ * gnu/testlet/java/lang/LinkageError/constructor.java:
+ * gnu/testlet/java/lang/NoClassDefFoundError/constructor.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/constructor.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/constructor.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/constructor.java:
+ * gnu/testlet/java/lang/StackOverflowError/constructor.java:
+ * gnu/testlet/java/lang/UnknownError/constructor.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java:
+ * gnu/testlet/java/lang/VerifyError/constructor.java:
+ Added new constructor tests for these basic classes.
+
+2012-06-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getName.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-06-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getName.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-06-01 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/StrictMath/cosh_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/sinh_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/tanh_strictfp.java:
+ Added 3 new tests used for checking methods included in StrictMath class.
+
+2012-05-31 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getName.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getName.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getName.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Error/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Error/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Error/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Error/classInfo/getName.java:
+ * gnu/testlet/java/lang/Error/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Error/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Error/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Error/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Error/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Error/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Error/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Error/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Error/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Error/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getName.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getName.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/IllegalAccessError/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/constructor.java:
+ * gnu/testlet/java/lang/AssertionError/constructor.java:
+ * gnu/testlet/java/lang/ClassCircularityError/constructor.java:
+ * gnu/testlet/java/lang/ClassFormatError/constructor.java:
+ * gnu/testlet/java/lang/Error/constructor.java:
+ * gnu/testlet/java/lang/InstantiationError/constructor.java:
+ Added new constructor tests for these classes.
+
+2012-05-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Boolean/compareToBoolean.java:
+ * gnu/testlet/java/lang/Boolean/compareToObject.java:
+ * gnu/testlet/java/lang/Boolean/parseBoolean.java:
+ * gnu/testlet/java/lang/Boolean/toString.java:
+ * gnu/testlet/java/lang/Boolean/valueOfBoolean.java:
+ * gnu/testlet/java/lang/Boolean/valueOfString.java:
+ * gnu/testlet/java/lang/Byte/toString.java:
+ * gnu/testlet/java/lang/Integer/toString.java:
+ * gnu/testlet/java/lang/Long/toString.java:
+ * gnu/testlet/java/lang/Short/toString.java:
+ Added new tests for wrapper classes.
+
+2012-05-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java:
+ Added new tests for java.lang.ClassCircularityError class.
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java:
+ Added new tests for java.lang.ClassFormatError class.
+
+2012-05-24 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java:
+ Added new tests for java.lang.AbstractMethodError class.
+ * gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java:
+ Added new tests for java.lang.AssertionError class.
+
+2012-05-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Package/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Package/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Package/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Package/classInfo/getName.java:
+ * gnu/testlet/java/lang/Package/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Package/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Package/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Package/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Package/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Package/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Package/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Package/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Package/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Package/classInfo/isSynthetic.java:
+ Added new tests for java.lang.Package class.
+
+2012-05-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/String/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/String/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/String/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/String/classInfo/getName.java:
+ * gnu/testlet/java/lang/String/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/String/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/String/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/String/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/String/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/String/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/String/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/String/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/String/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/String/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getName.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/StringBuffer/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getName.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/StringBuilder/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/AbstractMethodError/TryCatch.java:
+ * gnu/testlet/java/lang/AssertionError/TryCatch.java:
+ * gnu/testlet/java/lang/ClassCircularityError/TryCatch.java:
+ * gnu/testlet/java/lang/ClassFormatError/TryCatch.java:
+ * gnu/testlet/java/lang/Error/TryCatch.java:
+ * gnu/testlet/java/lang/ExceptionInInitializerError/TryCatch.java:
+ * gnu/testlet/java/lang/IllegalAccessError/TryCatch.java:
+ * gnu/testlet/java/lang/IncompatibleClassChangeError/TryCatch.java:
+ * gnu/testlet/java/lang/InstantiationError/TryCatch.java:
+ * gnu/testlet/java/lang/InternalError/TryCatch.java:
+ * gnu/testlet/java/lang/LinkageError/TryCatch.java:
+ * gnu/testlet/java/lang/NoClassDefFoundError/TryCatch.java:
+ * gnu/testlet/java/lang/NoSuchFieldError/TryCatch.java:
+ * gnu/testlet/java/lang/NoSuchMethodError/TryCatch.java:
+ * gnu/testlet/java/lang/OutOfMemoryError/TryCatch.java:
+ * gnu/testlet/java/lang/StackOverflowError/TryCatch.java:
+ * gnu/testlet/java/lang/ThreadDeath/TryCatch.java:
+ * gnu/testlet/java/lang/UnknownError/TryCatch.java:
+ * gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java:
+ * gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java:
+ * gnu/testlet/java/lang/VerifyError/TryCatch.java:
+ Added new basic tests for java.lang.*Error classes.
+
+2012-05-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Long/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Long/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Long/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Long/classInfo/getName.java:
+ * gnu/testlet/java/lang/Long/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Long/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Long/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Long/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Long/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Long/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Long/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Long/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Long/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Long/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/Short/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Short/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Short/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Short/classInfo/getName.java:
+ * gnu/testlet/java/lang/Short/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Short/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Short/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Short/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Short/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Short/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Short/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Short/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Short/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Short/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Character/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Character/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Character/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Character/classInfo/getName.java:
+ * gnu/testlet/java/lang/Character/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Character/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Character/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Character/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Character/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Character/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Character/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Character/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Character/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Character/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/Integer/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getName.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Integer/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Integer/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Boolean/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getName.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Boolean/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/Byte/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getName.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Byte/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Byte/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-05-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Double/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Double/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Double/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Double/classInfo/getName.java:
+ * gnu/testlet/java/lang/Double/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Double/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Double/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Double/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Double/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Double/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Double/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Double/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Double/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Double/classInfo/isSynthetic.java:
+ * gnu/testlet/java/lang/Float/classInfo/InstanceOf.java:
+ * gnu/testlet/java/lang/Float/classInfo/getInterfaces.java:
+ * gnu/testlet/java/lang/Float/classInfo/getModifiers.java:
+ * gnu/testlet/java/lang/Float/classInfo/getName.java:
+ * gnu/testlet/java/lang/Float/classInfo/getPackage.java:
+ * gnu/testlet/java/lang/Float/classInfo/getSimpleName.java:
+ * gnu/testlet/java/lang/Float/classInfo/getSuperclass.java:
+ * gnu/testlet/java/lang/Float/classInfo/isAssignableFrom.java:
+ * gnu/testlet/java/lang/Float/classInfo/isInstance.java:
+ * gnu/testlet/java/lang/Float/classInfo/isInterface.java:
+ * gnu/testlet/java/lang/Float/classInfo/isLocalClass.java:
+ * gnu/testlet/java/lang/Float/classInfo/isMemberClass.java:
+ * gnu/testlet/java/lang/Float/classInfo/isPrimitive.java:
+ * gnu/testlet/java/lang/Float/classInfo/isSynthetic.java:
+ Added new tests for check runtime behaviour of a "Class"
+ class retrieved using Object.getClass(). Added test of
+ instanceof operator runtime behaviour.
+
+2012-04-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/zip/ZipEntry/setComment.java:
+ Made this test compatible with JDK7.
+
+2012-04-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Character/getType.java:
+ Made this test compatible with JDK7 and added
+ new Unicode characters to test.
+ * gnu/testlet/java/text/SimpleDateFormat/applyPattern.java:
+ Made this test compatible with JDK7.
+
+2012-04-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/AWTPermission/constructor.java:
+ Made this test compatible with JDK7.
+
+2012-04-24 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DDouble.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DFloat.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapePolygon.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DDouble.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DFloat.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DDouble.java:
+ * gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DFloat.java:
+ Added new tests for BasicStroke class.
+
+2012-04-13 Andrew John Hughes <ahughes@redhat.com>
+
+ * Harness.java:
+ (ecjConstructor): Add wildcard.
+ (commandLineTests): Convert to generified List.
+ (excludeTests): Likewise.
+ (klass): Add wildcard.
+ (setupCompiler()): Use varargs rather than an array
+ when calling getConstructor/getMethod.
+ (runAllTests()): Remove redundant cast.
+ (parseTags(String,LinkedHashSet,LinkedHashSet,LinkedHashSet)):
+ Add types to sets.
+ (processUsesTag(String,String,LinkedHashSet,LinkedHashSet,LinkedHashSet)):
+ Likewise.
+ (processFilesTag(String,String,LinkedHashSet)): Likewise.
+ (copyFiles(LinkedHashSet)): Likewise.
+ (processSingleTest(String)): Likewise.
+ (processFolder(String)): Likewise.
+ (runFolder(LinkedHashSet,boolean)): Likewise.
+ (compileFiles(LinkedHashSet)): Likewise.
+ * Makefile.am:
+ (JAVACFLAGS): Expand to -source/-target and turn on warnings if javac is used.
+ (harness): Actually use JAVACFLAGS.
+ * RunnerProcess.java:
+ (expectedXFails): Add generic type. Use standard
+ naming conventions.
+ (runtest(String)): Add missing wildcard to Class.
+ (setupEMMA(boolean)): Likewise.
+ * gnu/testlet/TestReport.java:
+ (testResults): Add generic type.
+ (TestReport(Properties)): Likewise.
+ (writeXml(File)): Likewise.
+ * gnu/testlet/TestResult.java:
+ (failMessages): Add generic type.
+ (passMessages): Likewise.
+ (getFailMessags()): Likewise.
+ (getPassMessages()): Likewise.
+ (compareTo(TestResult)): Convert to Comparable<TestResult>
+ to avoid explicit cast.
+ * gnu/testlet/TestSecurityManager.java:
+ Remove unused import.
+ * junit/framework/AssertionFailedError.java,
+ * junit/framework/ComparisonFailure.java:
+ Add serialVersionUID.
+ * junit/framework/TestCase.java:
+ (getTest()): Use Class<?>. Use varargs for getMethod.
+ Capture returned value.
+ * junit/framework/TestResult.java:
+ (fErrors): Add generic type.
+ (fFailures): Likewise.
+ (fListeners): Likewise.
+ (TestResult()): Likewsie.
+ (startTest(Test)): Likewise.
+ (endTest(Test)): Likewise.
+ (addFailure(Test,AssertionFailedError)): Likewise.
+ (addError(Test,Throwable)): Likewise.
+ (errors()): Likewise.
+ (failures()): Likewise.
+ (cloneListeners()): Likewise.
+ * junit/framework/TestSuite.java:
+ (fTests): Add generic types.
+ (TestSuite()): Likewise.
+ (TestSuite(Class<?>)): Likewise.
+ (TestSuite(Class<?>,String)): Likewise.
+ (addTestMethod(Method,List,Class<?>)): Likewise.
+ (isTestMethod(Method)): Likewise.
+ (createTest(Class<?>,String)): Likewise.
+ (getTestConstructor(Class<?>)): Likewise.
+ (countTestCases()): Likewise.
+ (run(TestResult)): Likewise.
+ (addTestSuite(Class<?>)): Likewise.
+ (test(TestHarness)): Likewise.
+ * junit/textui/TestRunner.java:
+ (run(Class<?>)): Add generic type.
+
+2012-04-03 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/util/regex/Matcher/usePattern.java:
+ Add testcase for new java.util.regex.Matcher.usePattern(Pattern)
+ method.
+
+2012-01-12 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java:
+ Extend test to also check array content for null/empty values.
+ (checkArray(TestHarness, Locale, String, String[], int)):
+ Helper method for checking locale data. Runs harness checks
+ to ensure the array is the right size and has all non-null
+ non-empty values (except where empty values are allowed
+ for weekday[0] and month[12]).
+
+2012-03-23 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/AWTError/constructor.java:
+ * gnu/testlet/java/awt/AWTException/constructor.java:
+ * gnu/testlet/java/awt/FontFormatException/constructor.java:
+ * gnu/testlet/java/awt/HeadlessException/constructor.java:
+ * gnu/testlet/java/awt/IllegalComponentStateException/constructor.java:
+ Added new tests to improve test coverage of java.awt package.
+ * gnu/testlet/java/awt/BasicStroke/getEndCap.java:
+ Removed unecessary annotations.
+ * gnu/testlet/java/awt/BasicStroke/getMiterLimit.java:
+ Removed unecessary annotations.
+ * gnu/testlet/java/awt/BasicStroke/getLineWidth.java:
+ Added missing import.
+
+2012-03-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/TextArea/MouseListenerTest.java:
+ * gnu/testlet/java/awt/TextArea/MouseMotionListenerTest.java:
+ * gnu/testlet/java/awt/TextArea/MouseWheelListenerTest.java:
+ Added new tests to improve test coverage of java.awt.TextArea class.
+ * gnu/testlet/javax/swing/JComponent/setVisible.java:
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected2.java:
+ Fixed these tests to correctly close its frames.
+
+2012-03-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Byte/valueOfByte.java:
+ * gnu/testlet/java/lang/Byte/valueOfString.java:
+ * gnu/testlet/java/lang/Byte/valueOfStringRadix.java:
+ Added new tests to improve test coverage of java.lang.Byte class.
+ * gnu/testlet/java/awt/BasicStroke/getLineWidth.java:
+ Fixed this test.
+
+2012-03-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BasicStroke/getLineWidth.java:
+ * gnu/testlet/java/lang/Integer/parseIntRadix.java:
+ * gnu/testlet/java/lang/Long/parseLongRadix.java:
+ Added new tests for various classes.
+
+2012-03-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Byte/compareToObject.java:
+ * gnu/testlet/java/lang/Byte/parseByte.java:
+ * gnu/testlet/java/lang/Byte/parseByteRadix.java:
+ Added new tests to improve test coverage of java.lang.Byte class.
+
+2012-03-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Long/compareTo.java:
+ * gnu/testlet/java/lang/Long/compareToObject.java:
+ * gnu/testlet/java/lang/Long/decode.java:
+ Added new tests to improve test coverage of java.lang.Long class.
+
+2012-03-02 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/pow.java:
+ Make this test compatible with 1.4 syntax (counted for loop is used
+ instead of for-each loop)
+ * gnu/testlet/java/lang/Integer/compareToObject.java:
+ Added new test to improve test coverage.
+
+2012-03-01 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/pow.java:
+ * gnu/testlet/java/math/BigDecimal/valueOfDouble.java:
+ * gnu/testlet/java/math/BigDecimal/valueOfLong.java:
+ * gnu/testlet/java/math/BigDecimal/valueOfLongInt.java:
+ Add four new tests for a class BigDecimal.
+
+2012-02-22 Mustapha James Ahmed <crystalera123us@gmail.com>, Pekka Enberg <penberg@kernel.org>
+
+ * Harness.java:
+ * README:
+ * RunnerProcess.java:
+ Added support for -autoxml flag
+
+2012-01-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/compareToObject.java:
+ * gnu/testlet/java/math/BigDecimal/divideMathContext.java:
+ * gnu/testlet/java/math/BigDecimal/divideRoundingMode.java:
+ * gnu/testlet/java/math/BigDecimal/divideRoundingModeScale.java:
+ * gnu/testlet/java/math/BigDecimal/divideToIntegralValue.java:
+ Add new tests for a class BigDecimal.
+
+2012-01-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/abs.java:
+ * gnu/testlet/java/math/BigDecimal/add.java:
+ * gnu/testlet/java/math/BigDecimal/divide.java:
+ * gnu/testlet/java/math/BigDecimal/multiply.java:
+ * gnu/testlet/java/math/BigDecimal/negate.java:
+ * gnu/testlet/java/math/BigDecimal/plus.java:
+ * gnu/testlet/java/math/BigDecimal/subtract.java:
+ Add new tests for a class BigDecimal.
+ * gnu/testlet/java/math/BigDecimal/divide.java:
+ Add new test case.
+
+2012-01-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * Harness.java: Added support for the new tag with name
+ "CompileOptions:" which allows authors of the tests to
+ specify various options which are then passed to a compiler.
+
+2012-01-16 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/byteValue.java:
+ * gnu/testlet/java/math/BigDecimal/byteValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/intValue.java:
+ * gnu/testlet/java/math/BigDecimal/intValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/longValue.java:
+ * gnu/testlet/java/math/BigDecimal/longValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/shortValue.java:
+ * gnu/testlet/java/math/BigDecimal/shortValueExact.java:
+ Fixed bad title comments for these tests.
+ * gnu/testlet/java/math/BigDecimal/hashCode.java:
+ * gnu/testlet/java/math/BigDecimal/precision.java:
+ * gnu/testlet/java/math/BigDecimal/toEngineeringString.java:
+ * gnu/testlet/java/math/BigDecimal/toPlainString.java:
+ Add new tests for a class BigDecimal.
+
+2012-01-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/constructorBigInteger.java:
+ New test for constructor BigDecimal(BigInteter).
+ * gnu/testlet/java/math/BigDecimal/byteValue.java:
+ * gnu/testlet/java/math/BigDecimal/byteValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/intValue.java:
+ * gnu/testlet/java/math/BigDecimal/intValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/longValue.java:
+ * gnu/testlet/java/math/BigDecimal/longValueExact.java:
+ * gnu/testlet/java/math/BigDecimal/shortValue.java:
+ * gnu/testlet/java/math/BigDecimal/shortValueExact.java:
+ Add new tests for a class BigDecimal.
+
+2012-01-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/constructorCharacterSequence.java:
+ * gnu/testlet/java/math/BigDecimal/constructorDouble.java:
+ * gnu/testlet/java/math/BigDecimal/constructorString.java:
+ Three new tests checking constructors introduced in Java 1.5 API.
+
+2012-01-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/constructorInt.java:
+ * gnu/testlet/java/math/BigDecimal/constructorLong.java:
+ New tests checking constructors introduced in Java 1.5 API.
+
+2012-01-03 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java:
+ New test to check the arrays returned by DateFormatSymbols
+ for each locale are the right size. See RH#712013.
+
+2012-01-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/List/addActionListener.java:
+ * gnu/testlet/java/awt/List/addItemListener.java:
+ Added new tests for an AWT List class.
+
+2011-12-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Label/MouseListenerTest.java:
+ * gnu/testlet/java/awt/Label/MouseMotionListenerTest.java:
+ * gnu/testlet/java/awt/Label/MouseWheelListenerTest.java:
+ Added new tests for an AWT Label class.
+ * gnu/testlet/java/awt/Label/PaintTest.java:
+ * gnu/testlet/java/awt/Label/addComponentListener.java:
+ * gnu/testlet/java/awt/Label/addFocusListener.java:
+ * gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java:
+ * gnu/testlet/java/awt/Label/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Label/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Label/addKeyListener.java:
+ * gnu/testlet/java/awt/Label/addMouseListener.java:
+ * gnu/testlet/java/awt/Label/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Label/addMouseWheelListener.java:
+ * gnu/testlet/java/awt/Label/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Label/constructors.java:
+ Minor fixes - javadoc, fixed compiler warnings etc.
+
+2011-12-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/List/PaintTestEmptyList.java
+ * gnu/testlet/java/awt/List/PaintTestFilledList.java
+ Two new test for AWT List class.
+ * gnu/testlet/java/awt/List/ScrollbarPaintTest.java:
+ Fixed
+
+2011-12-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Choice/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Choice/addPropertyChangeListenerString.java:
+ Two new tests for Choice class - addPropertyChangeListener() method.
+ * gnu/testlet/java/awt/Container/addImpl.java:
+ Fixed.
+ * gnu/testlet/java/awt/Label/addComponentListener.java:
+ * gnu/testlet/java/awt/Label/addFocusListener.java:
+ * gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java:
+ * gnu/testlet/java/awt/Label/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Label/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Label/addKeyListener.java:
+ * gnu/testlet/java/awt/Label/addMouseListener.java:
+ * gnu/testlet/java/awt/Label/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Label/addMouseWheelListener.java:
+ * gnu/testlet/java/awt/Label/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Label/addPropertyChangeListenerString.java:
+ Added new tests for Label class - various listeners.
+
+2011-12-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Canvas/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Canvas/addPropertyChangeListenerString.java:
+ Two new tests for Canvas class - addPropertyChangeListener() method.
+ * gnu/testlet/java/awt/Checkbox/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Checkbox/addPropertyChangeListenerString.java:
+ Two new tests for Checkbox class - addPropertyChangeListener() method.
+
+2011-12-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/addPropertyChangeListener.java:
+ * gnu/testlet/java/awt/Button/addPropertyChangeListenerString.java:
+ Two new tests for Button class - addPropertyChangeListener() method.
+ * gnu/testlet/java/awt/GridLayout/getColumns.java:
+ * gnu/testlet/java/awt/GridLayout/getRows.java:
+ * gnu/testlet/java/awt/GridLayout/setColumns.java:
+ * gnu/testlet/java/awt/GridLayout/setRows.java:
+ Four new tests for checking Layout managers API: remaining getters and setters.
+
+2011-12-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BasicStroke/getEndCap.java:
+ * gnu/testlet/java/awt/BasicStroke/getLineJoin.java:
+ * gnu/testlet/java/awt/BasicStroke/getMiterLimit.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java:
+ * gnu/testlet/java/awt/GridLayout/getHgap.java:
+ * gnu/testlet/java/awt/GridLayout/getVgap.java:
+ * gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java:
+ * gnu/testlet/java/awt/GridLayout/setHgap.java:
+ * gnu/testlet/java/awt/GridLayout/setVgap.java:
+ * gnu/testlet/java/awt/GridLayout/toString.java:
+ * gnu/testlet/java/awt/geom/AffineTransform/createInverse.java:
+ Get rid of compiler warnings, improved javadoc, changed version tag.
+ * gnu/testlet/java/awt/geom/Area/clone.java:
+ Added new test case.
+
+2011-12-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BasicStroke/getMiterLimit.java:
+ New test checking method BasicStroke.getMiterLimit();
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java:
+ * gnu/testlet/java/awt/BorderLayout/Test15.java:
+ * gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java:
+ * gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java:
+ * gnu/testlet/java/awt/BorderLayout/setHgap.java:
+ * gnu/testlet/java/awt/BorderLayout/setVgap.java:
+ * gnu/testlet/java/awt/BorderLayout/toString.java:
+ Get rid of compiler warnings, improved javadoc.
+
+2011-12-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/PaintTestBiggerHGap.java:
+ * gnu/testlet/java/awt/CardLayout/PaintTestBiggerVGap.java:
+ * gnu/testlet/java/awt/CardLayout/PaintTestFirstNextComb.java:
+ Three new tests for checking Layout managers API:
+ tests for CardLayout manager.
+
+2011-12-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/PaintTest.java:
+ * gnu/testlet/java/awt/CardLayout/getLayoutAlignmentX.java:
+ * gnu/testlet/java/awt/CardLayout/getLayoutAlignmentY.java:
+ * gnu/testlet/java/awt/CardLayout/toString.java:
+ Four new tests for checking Layout managers API:
+ tests for CardLayout manager.
+
+2011-12-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * LightweightContainer.java:
+ Fixed this test to correctly close its frames.
+
+2011-12-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/PaintTestBiggerGaps.java:
+ * gnu/testlet/java/awt/CardLayout/PaintTestZeroGaps.java:
+ Two new tests for checking Layout managers API: basic
+ paint tests for CardLayout manager.
+
+2011-11-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BasicStroke/getEndCap.java:
+ New test checking method BasicStroke.getEndCap();
+ * gnu/testlet/java/awt/BasicStroke/getLineJoin.java:
+ New test checking method BasicStroke.getLineJoin();
+
+2011-11-28 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/getHgap.java:
+ * gnu/testlet/java/awt/CardLayout/getVgap.java:
+ * gnu/testlet/java/awt/CardLayout/setHgap.java:
+ * gnu/testlet/java/awt/CardLayout/setVgap.java:
+ New tests for checking Layout managers API: basic
+ setters for CardLayout manager.
+
+2011-11-25 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/removeLayoutComponent.java:
+ * gnu/testlet/java/awt/CardLayout/addLayoutComponent.java:
+ * gnu/testlet/java/awt/CardLayout/removeLayoutComponent.java:
+ * gnu/testlet/java/awt/GridLayout/addLayoutComponent.java:
+ * gnu/testlet/java/awt/GridLayout/removeLayoutComponent.java:
+ New tests for checking Layout managers API: methods
+ addLayoutComponent and removeLayoutComponent.
+
+2011-11-23 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/GridLayout/getHgap.java:
+ * gnu/testlet/java/awt/GridLayout/getVgap.java:
+ * gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java:
+ * gnu/testlet/java/awt/GridLayout/setHgap.java:
+ * gnu/testlet/java/awt/GridLayout/setVgap.java:
+ New tests for checking GridLayout manager API.
+
+2011-11-22 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/FlowLayout/getAlignment.java:
+ * gnu/testlet/java/awt/FlowLayout/getHgap.java:
+ * gnu/testlet/java/awt/FlowLayout/getVgap.java:
+ * gnu/testlet/java/awt/FlowLayout/setAlignment.java:
+ * gnu/testlet/java/awt/FlowLayout/setHgap.java:
+ * gnu/testlet/java/awt/FlowLayout/setVgap.java:
+ New tests for checking FlowLayout manager API.
+
+2011-11-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/toString.java:
+ * gnu/testlet/java/awt/FlowLayout/toString.java:
+ * gnu/testlet/java/awt/GridLayout/toString.java:
+ Updated.
+ * gnu/testlet/java/awt/FlowLayout/constructors.java:
+ Added new test for checking constructor behaviour of FlowLayout
+ manager.
+ * gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java:
+ Added new test for checking proper behaviour of GridLayout manager.
+
+2011-11-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java:
+ Added four new tests for checking proper behaviour of GridLayout
+ manager.
+
+2011-11-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java:
+ Added three new tests for checking proper behaviour of GridLayout
+ manager.
+ * gnu/testlet/java/awt/Label/PaintTestZeroGaps.java:
+ * gnu/testlet/java/awt/Label/PaintTestZeroHgap.java:
+ * gnu/testlet/java/awt/Label/PaintTestZeroVgap.java:
+ Added new checks to these test.
+ Changed sources to prevent compilation warning.
+
+2011-11-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Label/getAlignment.java:
+ * gnu/testlet/java/awt/Label/list.java:
+ * gnu/testlet/java/awt/Label/setAlignment.java:
+ Added new tests which check correct behaviour of Label class.
+ * gnu/testlet/java/awt/BorderLayout/toString.java:
+ * gnu/testlet/java/awt/GridLayout/toString.java:
+ Simple test checking overrided method toString().
+
+2011-11-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java:
+ * gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java:
+ Added three new tests for checking proper behaviour of GridLayout
+ manager.
+
+2011-11-02 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBiggerGaps.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBiggerHgap.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBiggerVgap.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestCenterAlign.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestLeftAlign.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestRightAlign.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestZeroGaps.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestZeroHgap.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestZeroVgap.java:
+ Added nine new tests for checking proper behaviour of FlowLayout
+ manager.
+ * gnu/testlet/java/awt/FlowLayout/toString.java:
+ Simple test checking overrided method toString().
+
+2011-10-31 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Choice/addComponentListener.java:
+ * gnu/testlet/java/awt/Choice/addFocusListener.java:
+ * gnu/testlet/java/awt/Choice/addHierarchyBoundsListener.java:
+ * gnu/testlet/java/awt/Choice/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Choice/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Choice/addItemListener.java:
+ * gnu/testlet/java/awt/Choice/addKeyListener.java:
+ * gnu/testlet/java/awt/Choice/addMouseListener.java:
+ * gnu/testlet/java/awt/Choice/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Choice/addMouseWheelListener.java:
+ Added new tests for checking if various listeners could be
+ registered for a given AWT Choice object.
+ * gnu/testlet/java/awt/Choice/list.java:
+ Added simple new test checking the method list() for a Choice object.
+
+2011-10-24 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup1.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup2.java:
+ * gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup3.java:
+ Added three new tests for checking proper behaviour of FlowLayout
+ manager. These tests renders frame containing two widgets and then
+ check widget position.
+
+2011-10-21 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java:
+ * gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java:
+ Added six new tests for checking proper behaviour of BorderLayout.
+ These tests renders frame containing some widgets and then check
+ widget position.
+
+2011-10-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Checkbox/MouseListenerTest.java:
+ * gnu/testlet/java/awt/Checkbox/MouseMotionListenerTest.java:
+ * gnu/testlet/java/awt/Checkbox/MouseWheelListenerTest.java:
+ Added new tests for checking Mouse*Listener functionality for an AWT
+ Checkbox class.
+ * gnu/testlet/java/awt/Choice/ItemListenerNegativeTest1.java:
+ * gnu/testlet/java/awt/Choice/ItemListenerNegativeTest2.java:
+ * gnu/testlet/java/awt/Choice/ItemListenerPositiveTest.java:
+ Added new tests for checking ItemListener functionality for an AWT
+ Choice class.
+
+2011-10-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest1.java:
+ * gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest2.java:
+ * gnu/testlet/java/awt/Checkbox/ItemListenerPositiveTest.java:
+ Added new tests for checking ItemListener functionality for an AWT
+ Checkbox class.
+ * gnu/testlet/java/awt/Checkbox/KeyboardListenerAsciiKeys.java:
+ * gnu/testlet/java/awt/Checkbox/KeyboardListenerCursorKeys.java:
+ * gnu/testlet/java/awt/Checkbox/KeyboardListenerFunctionKeys.java:
+ * gnu/testlet/java/awt/Checkbox/KeyboardListenerTest.java:
+ Added new tests for checking KeyboardListener functionality for an AWT
+ Checkbox class.
+ * gnu/testlet/java/awt/Checkbox/addComponentListener.java:
+ * gnu/testlet/java/awt/Checkbox/addFocusListener.java:
+ * gnu/testlet/java/awt/Checkbox/addHierarchyBoundsListener.java:
+ * gnu/testlet/java/awt/Checkbox/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Checkbox/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Checkbox/addItemListener.java:
+ * gnu/testlet/java/awt/Checkbox/addKeyListener.java:
+ * gnu/testlet/java/awt/Checkbox/addMouseListener.java:
+ * gnu/testlet/java/awt/Checkbox/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Checkbox/addMouseWheelListener.java:
+ Added new tests for checking if various listeners could be
+ registered for a given AWT Checkbox object.
+
+2011-10-11 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/KeyboardListenerAsciiKeys.java:
+ * gnu/testlet/java/awt/Button/KeyboardListenerCursorKeys.java:
+ * gnu/testlet/java/awt/Button/KeyboardListenerFunctionKeys.java:
+ * gnu/testlet/java/awt/Button/KeyboardListenerTest.java:
+ Added new tests for checking KeyboardListener functionality for an AWT
+ Button class.
+ * gnu/testlet/java/awt/Button/list.java:
+ Added new test checking the method list() for a Button object.
+ * gnu/testlet/java/awt/Canvas/addHierarchyBoundsListener.java:
+ Added missing test.
+ * gnu/testlet/java/awt/Checkbox/list.java:
+ Added new test checking the method list() for a Checkbox object.
+
+2011-10-10 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Canvas/MouseListenerTest.java:
+ * gnu/testlet/java/awt/Canvas/MouseMotionListenerTest.java:
+ * gnu/testlet/java/awt/Canvas/MouseWheelListenerTest.java:
+ Added new tests for checking MouseListener, MouseMotionListener and
+ MouseWheelListener registered for a Canvas class.
+ * gnu/testlet/java/awt/Canvas/addComponentListener.java:
+ * gnu/testlet/java/awt/Canvas/addFocusListener.java:
+ * gnu/testlet/java/awt/Canvas/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Canvas/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Canvas/addKeyListener.java:
+ * gnu/testlet/java/awt/Canvas/addMouseListener.java:
+ * gnu/testlet/java/awt/Canvas/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Canvas/addMouseWheelListener.java:
+ Added new tests for checking if various listeners could be
+ registered for a given AWT Canvas object.
+ * gnu/testlet/java/awt/Canvas/list.java:
+ Added new test checking the method list() for a Canvas object.
+
+2011-10-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java:
+ * gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java:
+ * gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java:
+ Increased delay periods of AWT robot to make these tests more reliable.
+ * gnu/testlet/java/awt/Button/MouseListenerTest.java:
+ * gnu/testlet/java/awt/Button/MouseMotionListenerTest.java:
+ * gnu/testlet/java/awt/Button/MouseWheelListenerTest.java:
+ Added new tests for checking MouseListener, MouseMotionListener and
+ MouseWheelListener registered for a Button class.
+
+2011-10-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/addComponentListener.java:
+ * gnu/testlet/java/awt/Button/addFocusListener.java:
+ * gnu/testlet/java/awt/Button/addHierarchyBoundsListener.java:
+ * gnu/testlet/java/awt/Button/addHierarchyListener.java:
+ * gnu/testlet/java/awt/Button/addInputMethodListener.java:
+ * gnu/testlet/java/awt/Button/addKeyListener.java:
+ * gnu/testlet/java/awt/Button/addMouseListener.java:
+ * gnu/testlet/java/awt/Button/addMouseMotionListener.java:
+ * gnu/testlet/java/awt/Button/addMouseWheelListener.java:
+ Added new tests for checking if various listeners could be
+ registered for a given AWT Button object.
+ * gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java:
+ Added new test for checking ActionListener functionality
+ * gnu/testlet/java/awt/Button/addActionListener.java:
+ Added new checks to this test and removed some checks which are
+ part of ActionListenerPositiveTest
+ * gnu/testlet/java/awt/Button/addActionListenerNegativeTestcase1.java:
+ * gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java:
+ Renamed
+ * gnu/testlet/java/awt/Button/addActionListenerNegativeTestcase2.java:
+ * gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java:
+ Renamed
+
+2011-10-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/addActionListener.java:
+ * gnu/testlet/java/awt/Button/addActionListenerNegativeTestcase1.java:
+ * gnu/testlet/java/awt/Button/addActionListenerNegativeTestcase2.java:
+ Added new tests for checking ActionListener functionality for AWT Button
+ widget.
+ * gnu/testlet/java/awt/Choice/constructors.java:
+ Added new test for checking constructor behaviour of various AWT
+ widgets.
+
+2011-10-04 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/constructors.java:
+ * gnu/testlet/java/awt/Canvas/constructors.java:
+ * gnu/testlet/java/awt/Checkbox/constructors.java:
+ * gnu/testlet/java/awt/Label/constructors.java:
+ Added new tests for checking constructors behaviour of various AWT
+ widgets.
+ * gnu/testlet/java/nio/channels/FileChannel/map.java:
+ * gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java:
+ Fixed cleaning phase of these tests, they now delete all its
+ work files and directories.
+ * gnu/testlet/javax/swing/JComboBox/getEditor.java:
+ Fixed these tests: all test frames are disposed in the finish phase.
+
+2011-10-03 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Panel/TestPanelRepaint.java:
+ * gnu/testlet/java/awt/Container/setLayout.java:
+ * gnu/testlet/java/awt/Container/getComponentAt.java:
+ * gnu/testlet/java/awt/ScrollPane/add.java:
+ Fixed these tests: all test frames are disposed in the finish phase.
+ * gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java:
+ * gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java:
+ Fixed these tests: added calling of robot.waitForIdle() method before
+ all checks, added more accurate checking of pixel colors in some cases,
+ comments for a new code.
+
+2011-09-30 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Component/getFont.java:
+ * gnu/testlet/java/awt/Component/requestFocus.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable1.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable2.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable3.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable4.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable5.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable6.java:
+ * gnu/testlet/java/awt/Frame/isDisplayable7.java:
+ Fixed these tests: all test frames are disposed in the finish phase.
+ * gnu/testlet/java/awt/Button/PaintTest.java:
+ * gnu/testlet/java/awt/Canvas/PaintTest.java:
+ * gnu/testlet/java/awt/Checkbox/PaintTest.java:
+ * gnu/testlet/java/awt/Choice/PaintTest.java:
+ * gnu/testlet/java/awt/Label/PaintTest.java:
+ * gnu/testlet/java/awt/TextField/PaintTest.java:
+ Make these tests more robust - tests should not fail or freeze even
+ if they are run sequentially.
+
+2011-09-29 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Button/PaintTest.java:
+ * gnu/testlet/java/awt/Canvas/PaintTest.java:
+ * gnu/testlet/java/awt/Checkbox/PaintTest.java:
+ * gnu/testlet/java/awt/Choice/PaintTest.java:
+ * gnu/testlet/java/awt/Label/PaintTest.java:
+ * gnu/testlet/java/awt/TextField/PaintTest.java:
+ Fixed these tests: added calling of robot.waitForIdle() method before
+ all checks, added more accurate checking of pixel colors in some cases,
+ comments for a new code.
+
+2011-09-27 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/Canvas/PaintTest.java:
+ Fixed this test in a way discussed here:
+ http://www.cygwin.com/ml/mauve-discuss/2011-q3/msg00027.html
+ Added a small delay before computation of canvas size and its
+ absolute position on the screen is done. There's also added a test
+ for a color of a pixel located inside the canvas.
+
+2011-09-26 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/StrictMath/API_coverage.txt:
+ Added text file containing test coverage for StrictMath class.
+ * gnu/testlet/java/lang/StrictMath/cbrt_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/expm1_strictfp.java:
+ Added two new tests
+ * gnu/testlet/java/lang/StrictMath/acos.java:
+ * gnu/testlet/java/lang/StrictMath/acos_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/asin.java:
+ * gnu/testlet/java/lang/StrictMath/asin_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/atan.java:
+ * gnu/testlet/java/lang/StrictMath/atan_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/cos.java:
+ * gnu/testlet/java/lang/StrictMath/cos_strictfp.java
+ * gnu/testlet/java/lang/StrictMath/sin.java:
+ * gnu/testlet/java/lang/StrictMath/sin_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/tan.java:
+ * gnu/testlet/java/lang/StrictMath/tan_strictfp.java:
+ Changed tag value to run these tests when at least Java 1.3 API is used
+ * gnu/testlet/java/lang/StrictMath/cbrt.java:
+ * gnu/testlet/java/lang/StrictMath/expm1.java:
+ Fixed JavaDoc
+
+2011-09-20 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/StrictMath/cos.java:
+ * gnu/testlet/java/lang/StrictMath/cos_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/sin.java:
+ * gnu/testlet/java/lang/StrictMath/sin_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/tan.java:
+ * gnu/testlet/java/lang/StrictMath/tan_strictfp.java:
+ Added 6 new tests used for checking methods included in StrictMath class.
+
+2011-09-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java:
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java:
+ Fixed these tests in a way discussed here:
+ http://sourceware.org/ml/mauve-discuss/2011-q3/msg00014.html
+
+2011-09-15 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/StrictMath/acos.java:
+ * gnu/testlet/java/lang/StrictMath/acos_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/asin.java:
+ * gnu/testlet/java/lang/StrictMath/asin_strictfp.java:
+ * gnu/testlet/java/lang/StrictMath/atan.java:
+ * gnu/testlet/java/lang/StrictMath/atan_strictfp.java:
+ New tests used for checking methods included in StrictMath class.
+
+2011-09-14 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/javax/swing/border/TitledBorder/constructors.java:
+ Fixed this test in a way discussed here:
+ http://sourceware.org/ml/mauve-discuss/2011-q3/msg00014.html
+
+2011-09-13 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/Currency/Taiwan.java:
+ Update number of fraction digits to match the real use.
+
+2011-09-12 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextArea/preferredSize.java:
+ Fixed this test in a way discussed here:
+ http://sourceware.org/ml/mauve-discuss/2011-q3/msg00010.html
+
+2011-09-09 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Float/toHexString.java:
+ Add more tests.
+ * gnu/testlet/java/lang/Double/toHexString.java:
+ Add more tests.
+
+2011-09-08 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.png:
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.png:
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.png:
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.png:
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.png:
+ New bitmaps used in test ImageIOTest.
+ * gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java:
+ Add more tests.
+
+2011-09-07 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/awt/ColorClass/constants.java:
+ Add more tests.
+ * gnu/testlet/java/awt/ColorClass/decode.java:
+ Add more tests.
+ * gnu/testlet/java/awt/ColorClass/getBlue.java:
+ Add more tests.
+ * gnu/testlet/java/awt/ColorClass/getGreen.java:
+ Add more tests.
+ * gnu/testlet/java/awt/ColorClass/getRed.java:
+ Add more tests.
+ * gnu/testlet/java/awt/ColorClass/hashCode.java:
+ Add more tests.
+
+2011-09-06 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Long/new_Long.java (test):
+ Add more tests.
+
+2011-09-05 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Integer/new_Integer.java (test):
+ Add more tests.
+
+2011-08-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/util/Currency/
+ (Czech.java): New class of tests for the Czech currency (CZK).
+ (Slovak.java): New class of tests for the Slovak currency (SKK).
+
+2011-08-19 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/lang/Integer/parseInt.java:
+ Fixed the test to work correctly on OpenJDK6 JRE.
+
+2011-08-17 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java:
+ Fixed cleaning phase of this test, it now deletes all its
+ work files and directories.
+
+2011-04-25 Pekka Enberg <penberg@kernel.org>
+
+ * gnu/testlet/java/util/regex/Matcher/quoteReplacement.java:
+ Add tests for Matcher.quoteReplacement().
+
+2011-03-14 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/net/Socket/security.java:
+ Add test for connect(SocketAddress, int).
+ * gnu/testlet/java/net/Socket/setSocketImplFactory.java:
+ Add tests for when null is specified.
+
+2011-03-02 Pekka Enberg <penberg@kernel.org>
+
+ * gnu/testlet/java/lang/String/split.java:
+ Add test for String.split() that caused infinite loop
+ with GNU Classpath.
+
+2011-02-22 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/42390
+ * gnu/testlet/java/security/Policy/Security.java,
+ Test whether the toString() of a ProtectionDomain
+ object includes the Policy's permissions when
+ getPolicy is denied by the SecurityManager.
+
+2010-12-24 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/security/ProtectionDomain/Implies.java:
+ Check if Policy.implies(Permission) is called if the
+ protection domain is already known to have AllPermission.
+
+2010-12-21 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/lang/Class/IsAnonymousClass.java:
+ Add tests for java.lang.Class#isAnonymousClass().
+
+2010-12-13 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/lang/Class/GetSimpleName.java:
+ Add tests for anonymous classes.
+
+2010-12-12 Pekka Enberg <penberg@kernel.org>
+
+ * gnu/testlet/java/lang/Class/GetSimpleName.java:
+ Add tests for primitive, Object, array and inner
+ classes.
+
+2010-12-01 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/TestSecurityManager.java:
+ Fix whitespace.
+ * gnu/testlet/java/security/Policy/setPolicy.java:
+ Test that the default security manager actually
+ uses the currently established policy. Our
+ TestSecurityManager relies on this.
+
+2010-11-24 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/42390
+ * gnu/testlet/java/security/ProtectionDomain/Security.java
+ New test to ensure toString() does a getPolicy
+ check when not in debugging mode.
+
+2010-11-15 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/42390
+ * gnu/testlet/java/io/File/security.java:
+ Add security manager checks for deleteOnExit,
+ exists, canRead, isFile, isDirectory, isHidden,
+ lastModified, length, canWrite, mkdir, mkdirs,
+ setLastModified.
+
+2010-11-15 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/42390
+ * gnu/testlet/java/util/logging/LogManager/Security.java:
+ Add test for addPropertyChangeListener and
+ removePropertyChangeListener SecurityManager checks.
+
+2010-11-15 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/42390
+ * Makefile.in,
+ * aclocal.m4,
+ * configure: Regenerated.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java:
+ Add tests for ObjectOutputStream(OutputStream)
+ as reported in PR classpath/42390.
+
+2010-05-11 Andrew John Hughes <ahughes@redhat.com>
+
+ PR classpath/43536
+ * gnu/testlet/java/util/Collection/Test.java:
+ New test ensuring all Collection implementations meet
+ the requirements of remove(Object).
+
+2009-09-24 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/util/ResourceBundle/getBundle:
+ Specify the parent classloader instead of using the system
+ classloader by default.
+
+2009-09-24 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors:
+ Remove checks for wontfix bug
+ http://bugs.sun.com/view_bug.do?bug_id=6314176.
+
+2009-09-24 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/org/omg/PortableServer/POA/TestActivate:
+ Remove inappropriate checks.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/locales/LocaleTest:
+ Fixed local variations in the use of the percentage sign.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/beans/EventHandler/check14c.java:
+ Pass incoming event object directly to the target action.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/beans/EventHandler/check14c.java:
+ Update test to follow 1.6 specification behaviour.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/lang/Class/security:
+ Don't call setProperty if getProperty return null.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/lang/SecurityManager/thread.java:
+ make sure SecurityManager is installed.
+ * gnu/testlet/java/lang/System/security.java:
+ clear property that we assume to be non existing
+ (needed if test runs several time without exiting the vm).
+ * gnu/testlet/java/net/URLClassLoader/security.java:
+ * gnu/testlet/java/lang/Thread/security10.java
+ Thread.enumerate does checks on ThreadGroup, but not on Thread
+ create fake URLStreamHandler
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/TestSecurityManager:
+ TestSecurityManager has to delegate some functionality to the
+ Policy to make sure privileged system code works.
+
+2009-07-09 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/equals:
+ Remove obsolete check.
+
+2009-07-08 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/javax/imageio/spi/ServiceRegistry/lookupProviders:
+ Use the classloader of the current context, so that the test works
+ when classloader other than the system classloader was used to load the
+ test.
+
+2009-07-03 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/util/ArrayList/AcuniaArrayListTest:
+ fix ConcurrentModificationException should be thrown when altering the
+ capacity of the array.
+
+2009-05-17 Fabien DUMINY <fduminy@jnode.org>
+ * gnu/testlet/runner/HTMLGenerator.java
+ gnu/testlet/runner/Mauve.java
+ gnu/testlet/runner/RunResult.java
+ gnu/testlet/runner/XMLReportConstants.java
+ gnu/testlet/runner/XMLReportParser.java
+ gnu/testlet/runner/XMLReportWriter.java :
+ Moved getting of system properties from Mauve to RunResult to allow exportation
+ in xml and html format (or any other format ...)
+ + added support for custom system properties (for people using mauve APIs for their specific needs).
+
+ * gnu/testlet/runner/MauveTests.java :
+ Added tests for the above features
+
+ * gnu/testlet/runner/compare/ComparisonWriter.java
+ gnu/testlet/runner/compare/HTMLComparisonWriter.java
+ gnu/testlet/runner/compare/ReportComparator.java
+ gnu/testlet/runner/compare/RunComparison.java
+ gnu/testlet/runner/compare/TextComparisonWriter.java :
+ Added comparison of (default and custom) system properties
+
+ * Added javadoc to some of the above java classes.
+
+2009-05-09 Fabien DUMINY <fduminy@jnode.org>
+ * gnu/testlet/runner/Mauve.java :
+ split of execute(...) method for clarity and better reusability (in jnode).
+ changed visibility of instance variables to 'protected' for reusability.
+ * gnu/testlet/runner/XMLReportParser.java :
+ added another parse method, which take a Reader to allow something else than
+ a File as input
+ * gnu/testlet/runner/CheckResult.java :
+ changed visibility of constructor to 'public' for reusability
+ * gnu/testlet/runner/PackageResult.java & RunResult.java :
+ changed visibility of add method to public for reusability
+
+2009-02-19 Omair Majid <omajid@redhat.com>
+
+ * RunnerProcess (runtest): If a test fails to start, include it in the xml
+ report as a failure.
+
+2009-02-13 Omair Majid <omajid@redhat.com>
+
+ * Harness.java (setupHarness): Check for -xmlout file argument.
+
+2009-01-26 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/lang/String/ConsCharset.java:
+ New test for constructor which takes a
+ java.nio.charset.Charset as an argument.
+
+2009-01-02 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/text/ChoiceFormat/Bad.java:
+ New test for bad ChoiceFormats.
+ * gnu/testlet/java/text/MessageFormat/format14.java:
+ Correct ChoiceFormat used.
+
+2008-12-31 Andrew John Hughes <ahughes@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/ampm.java:
+ Use the localised am/pm strings from DateFormatSymbols
+ rather than hardcoding.
+
+2008-11-17 Fabien DUMINY <fduminy@jnode.org>
+
+ * gnu/testlet/runner/Filter.java :
+ To allow custom filtering outside of Mauve,
+ externalized code reading the test list + added LineProcessor interface
+ Also slightly optimized use of memory by StringBuffer.
+
+2008-11-14 Fabien DUMINY <fduminy@jnode.org>
+
+ * gnu/testlet/runner/CheckResult.java
+ * gnu/testlet/runner/ClassResult.java
+ * gnu/testlet/runner/HTMLGenerator.java
+ * gnu/testlet/runner/Mauve.java
+ * gnu/testlet/runner/MauveTests.java Added
+ * gnu/testlet/runner/PackageResult.java
+ * gnu/testlet/runner/Result.java Added
+ * gnu/testlet/runner/RunResult.java
+ * gnu/testlet/runner/TestResult.java
+ * gnu/testlet/runner/XMLReportConstants.java Added
+ * gnu/testlet/runner/XMLReportParser.java Added
+ * gnu/testlet/runner/XMLReportWriter.java Added
+ * gnu/testlet/runner/compare/ClassComparison.java Added
+ * gnu/testlet/runner/compare/Comparison.java Added
+ * gnu/testlet/runner/compare/ComparisonVisitor.java Added
+ * gnu/testlet/runner/compare/ComparisonWriter.java Added
+ * gnu/testlet/runner/compare/EvolutionType.java Added
+ * gnu/testlet/runner/compare/EvolutionTypeVisitor.java Added
+ * gnu/testlet/runner/compare/HTMLComparisonWriter.java Added
+ * gnu/testlet/runner/compare/PackageComparison.java Added
+ * gnu/testlet/runner/compare/ReportComparator.java Added
+ * gnu/testlet/runner/compare/RunComparison.java Added
+ * gnu/testlet/runner/compare/TestComparison.java Added
+ * gnu/testlet/runner/compare/TextComparisonWriter.java Added
+ * net/sourceforge/nanoxml/XMLElement.java Added, Copied from icedtea6-1.3.1.tar.gz
+ * net/sourceforge/nanoxml/XMLParseException.java Added, Copied from icedtea6-1.3.1.tar.gz
+
+ Added features :
+ - an XML report generator
+ - an XML report parser (using nanoxml version from icedtea 6-1.3.1
+ - a comparator of 2 mauve runs (through their xml report) : result can be in html
+ or in plain text format
+ - In addition to the HTML report, Mauve now generate an xml report
+
+2008-11-14 Fabien DUMINY <fduminy@jnode.org>
+
+ * gnu/testlet/SingleTestHarness.java :
+ Added '-v' option to enabled verbose mode. default is not verbose.
+ Replaced "Class.forName" by use of context classloader
+
+2008-09-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/util/Scanner/Base.java:
+ (test(TestHarness)): Fail if an exception is thrown.
+ * gnu/testlet/java/util/Scanner/BigDecimalInteger.java:
+ Use harness.check.
+
+2008-09-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/util/Scanner/Base.java,
+ * gnu/testlet/java/util/Scanner/BigDecimalInteger.java,
+ * gnu/testlet/java/util/Scanner/Booleans.java,
+ * gnu/testlet/java/util/Scanner/DoubleFloat.java,
+ * gnu/testlet/java/util/Scanner/FileInput.java,
+ * gnu/testlet/java/util/Scanner/FindPattern.java,
+ * gnu/testlet/java/util/Scanner/FindWithinHorizon.java,
+ * gnu/testlet/java/util/Scanner/FishString.java,
+ * gnu/testlet/java/util/Scanner/Inputs.java,
+ * gnu/testlet/java/util/Scanner/LotsOfInts.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMInts.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMLong.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMShort.java,
+ * gnu/testlet/java/util/Scanner/MultiLine.java:
+ Added headers, replaced MyScanner with Scanner,
+ fixed location of temporary files, general formatting
+ and naming cleanup.
+ * gnu/testlet/java/util/Scanner/Radix.java,
+ * gnu/testlet/java/util/Scanner/SkipPattern.java:
+ Likewise, and converted to use harness.check instead
+ of harness.fail.
+
+2007-07-25 Laszlo Andras Hernadi <e0327023@student.tuwien.ac.at>
+
+ * gnu/testlet/java/util/Scanner/Base.java,
+ * gnu/testlet/java/util/Scanner/BigDecimalInteger.java,
+ * gnu/testlet/java/util/Scanner/Booleans.java,
+ * gnu/testlet/java/util/Scanner/DoubleFloat.java,
+ * gnu/testlet/java/util/Scanner/FileInput.java,
+ * gnu/testlet/java/util/Scanner/FindPattern.java,
+ * gnu/testlet/java/util/Scanner/FindWithinHorizon.java,
+ * gnu/testlet/java/util/Scanner/FishString.java,
+ * gnu/testlet/java/util/Scanner/Inputs.java,
+ * gnu/testlet/java/util/Scanner/LotsOfInts.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMInts.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMLong.java,
+ * gnu/testlet/java/util/Scanner/LotsOfPMShort.java,
+ * gnu/testlet/java/util/Scanner/MultiLine.java,
+ * gnu/testlet/java/util/Scanner/Radix.java,
+ * gnu/testlet/java/util/Scanner/SkipPattern.java:
+ New tests for java.util.Scanner.
+
+2008-09-01 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/String/replaceAll.java:
+ New test for PRclasspath/36085.
+
+2008-09-01 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/net/ServerSocket/AcceptTimeout.java (test):
+ Increase timeout from 200 to 2000.
+
+2008-08-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/Enum/PR33183.java:
+ New test.
+
+2008-08-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/NumberFormat/PR31895.java:
+ New test.
+
+2008-08-06 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * Harness.java (parseTags): Close files after parsing.
+
+2008-07-30 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/lang/Process/destroy.java: New test.
+ * gnu/testlet/java/lang/Process/destroy_child.java: New file.
+
+2008-07-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/awt/Desktop/PR34580.java:
+ Assign class to correct package.
+
+2008-07-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/awt/Desktop/PR34580.java:
+ Fix compilation errors.
+ * gnu/testlet/java/util/Currency/Taiwan.java:
+ Update number of fraction digits to match CLDR.
+
+2008-07-06 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/DateFormatSymbols/PR22851.java,
+ * gnu/testlet/java/util/TimeZone/GetDisplayName.java:
+ Add tests raised by issues in PR22851.
+
+2008-07-01 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/lang/Integer/Tests15.java: New file.
+
+2008-06-25 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * Harness.java (compileStringBase): Set target directory to build
+ directory.
+ (stripSourcePath): New method.
+ (testNeedsToBeCompiled): Likewise.
+ (parseTags): Likewise.
+ (processUsesTag): Likewise.
+ (processFilesTag): Likewise.
+ (copyFiles): Likewise.
+ (processSingleTest): Removed a lot of stuff now in the new methods
+ above.
+ (processFolder): Likewise.
+ (compileFolder): Removed.
+ (runFolder): Pass test in a LinkedHashSet.
+ (compileTest): Removed.
+ (compileFiles): New method.
+ * Makefile.am (harness_files): Prefixed with $(srcdir).
+ (harness): Added -d .
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Likewise.
+ * configure: Likewise.
+ * configure.in (BUILDDIR): Added.
+ * gnu/testlet/TestHarness.java (getBuildDirectory): New method.
+ * gnu/testlet/TestReport.java (writeXml): Restart the timer after
+ each write as this could cause problems on faulty NFS.
+ * gnu/testlet/config.java.in (builddir): New variable.
+ (getBuildDirectory): New method.
+ * gnu/testlet/java/io/File/emptyFile.java,
+ gnu/testlet/java/lang/Class/security.java,
+ gnu/testlet/java/lang/Thread/security.java,
+ gnu/testlet/java/security/AccessController/contexts.java: Use
+ getBuildDirectory() instead of getSourceDirectory().
+
+2008-06-25 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java: Addes Uses
+ and Files tags.
+ * gnu/testlet/java/io/Serializable/BreakMe.java: Added Files tag.
+ * gnu/testlet/java/util/logging/LogManager/readConfiguration.java:
+ Likewise.
+ * gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java: Added Uses tag.
+
+2008-06-25 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/org/omg/CORBA/Any/testAny.java,
+ gnu/testlet/org/omg/CORBA/ORB/DirectTest.java,
+ gnu/testlet/org/omg/CORBA/ORB/comServer.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java,
+ gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java,
+ gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java,
+ gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Servant.java,
+ gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Server.java,
+ gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java,
+ gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java:
+ Added Uses tag.
+
+2008-06-25 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/BaseInvalidTest.java,
+ gnu/testlet/java/security/cert/pkix/pkits/BaseValidTest.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest12.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest9.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLIssuerNameTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLSignatureTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedNewWithOldTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedOldWithNewTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidCASignatureTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotAfterDateTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotBeforeDateTest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidDSASignatureTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidEESignatureTest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotAfterDateTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotBeforeDateTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidLongSerialNumberTest18.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidMissingbasicConstraintsTest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingEETest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingOrderTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidNegativeSerialNumberTest15.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidOldCRLnextUpdateTest11.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedCATest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedEETest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidSelfIssuedpathLenConstraintTest16.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLEntryExtensionTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest10.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest9.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidWrongCRLTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalcRLSignFalseTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest10.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest11.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest12.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest9.java,
+ gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000CRLnextUpdateTest12.java,
+ gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000UTCEEnotAfterDateTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/MissingCRLTest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedCRLSigningKeyTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedOldWithNewTest1.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidDSAParameterInheritenceTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidDSASignaturesTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimeCRLnextUpdateTest13.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotAfterDateTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotBeforeDateTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest16.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest17.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingCapitalizationTest5.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingUIDsTest6.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidNegativeSerialNumberTest14.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280MandatoryAttributeTypesTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280OptionalAttributeTypesTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidRolloverfromPrintableStringtoUTF8StringTest10.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest15.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest17.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidTwoCRLsTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringCaseInsensitiveMatchTest11.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringEncodedNamesTest9.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidbasicConstraintsNotCriticalTest4.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidkeyUsageNotCriticalTest3.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest13.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest14.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest7.java,
+ gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest8.java,
+ gnu/testlet/java/security/cert/pkix/pkits/Validpre2000UTCnotBeforeDateTest3.java:
+ Added Uses and Files tags.
+
+2008-06-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * RunnerProcess.java (check(Object, Object)): Changed code so we
+ don't have early returns and miss currentResult.addFail() calls.
+ This fixes a bug in missing failures in the XML output.
+
+2008-06-09 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/security/AccessController/contexts.java (test):
+ Use getCanonicalPath() to fix a problem when the path contains a
+ symbolic link.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/util/EnumSet/ComplementOf.java: Added
+ appropriate Uses tag.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java: Added
+ appropriate Uses tag.
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java,
+ gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java:
+ Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java:
+ Added appropriate Uses tag.
+ * gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java:
+ Added appropriate Uses tag.
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java,
+ gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java:
+ Added appropriate Uses tag.
+ * gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java,
+ gnu/testlet/java/lang/management/RuntimeMXBeanTest.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/awt/Button/PaintTest.java: Added appropriate
+ Uses tag.
+ * gnu/testlet/java/awt/Canvas/PaintTest.java,
+ gnu/testlet/java/awt/Checkbox/PaintTest.java,
+ gnu/testlet/java/awt/Choice/PaintTest.java,
+ gnu/testlet/java/awt/List/testSetMultipleMode.java,
+ gnu/testlet/java/awt/image/ColorModel/constructors.java,
+ gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java,
+ gnu/testlet/java/awt/image/LookupTable/constructor.java,
+ gnu/testlet/java/awt/image/Raster/createChild.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java:
+ Added appropriate Uses tag.
+ * gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java,
+ gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ *
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java:
+ Added appropriate Uses tag.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java: Likewise.
+
+2008-05-21 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java: Added
+ appropriate Uses tag.
+ * gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java,
+ gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java,
+ gnu/testlet/javax/swing/JComboBox/ComboRobot.java,
+ gnu/testlet/javax/swing/JComboBox/setEditor.java,
+ gnu/testlet/javax/swing/JComboBox/setModel.java,
+ gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java,
+ gnu/testlet/javax/swing/JComponent/getFont.java,
+ gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java,
+ gnu/testlet/javax/swing/JInternalFrame/paramString.java,
+ gnu/testlet/javax/swing/JLabel/paramString.java,
+ gnu/testlet/javax/swing/JOptionPane/getInputMap.java,
+ gnu/testlet/javax/swing/JProgressBar/paramString.java,
+ gnu/testlet/javax/swing/JScrollBar/paramString.java,
+ gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java,
+ gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java,
+ gnu/testlet/javax/swing/JSplitPane/paramString.java,
+ gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java,
+ gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java,
+ gnu/testlet/javax/swing/JToolTip/paramString.java,
+ gnu/testlet/javax/swing/JViewport/setView.java,
+ gnu/testlet/javax/swing/UIManager/getUI.java,
+ gnu/testlet/javax/swing/filechooser/FileView/getDescription.java,
+ gnu/testlet/javax/swing/filechooser/FileView/getIcon.java,
+ gnu/testlet/javax/swing/filechooser/FileView/getName.java,
+ gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java,
+ gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java,
+ gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java,
+ gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java,
+ gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java,
+ gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java,
+ gnu/testlet/javax/swing/text/GapContent/constructors.java,
+ gnu/testlet/javax/swing/text/ZoneView/createZone.java,
+ gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java,
+ gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java,
+ gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java,
+ gnu/testlet/javax/swing/text/ZoneView/loadChildren.java,
+ gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java,
+ gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java,
+ gnu/testlet/javax/swing/text/ZoneView/unloadZone.java,
+ gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java,
+ gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeListTest2.java,
+ gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java,
+ gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities2.java,
+ gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java,
+ gnu/testlet/javax/swing/text/html/parser/TagElement/TagElementTest2.java:
+ Likewise
+
+2008-05-19 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * RunnerProcess.java (runAndReport): Moved XML writing from
+ here...
+ (main): ...to here, so the XML file is only written once.
+
+2008-05-19 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/TestReport.java (esc): Filter invalid XML character
+ from java.util.regex.Pattern.pcrematches.
+
+2008-05-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/String/PR35482.java:
+ Test for erroneous lowercasing.
+
+2008-05-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/Integer/parseInt.java:
+ Check that parsing +x returns x.
+
+2008-05-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java:
+ Make output more verbose.
+ * gnu/testlet/java/util/regex/Regions.java:
+ New test.
+
+2008-04-18 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/util/logging/Logger/ConcurrentLogging.java: test for
+ PR35974.
+
+2008-03-26 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java (test):
+ new test implemented.
+
+2008-03-25 Mario Torre <neugens@aicas.com>
+
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Clone.java:
+ New test.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Equals.java:
+ likewise.
+
+2008-03-12 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/Socket/jdk14.java (test): Add 'bind to any
+ local address' test.
+
+2008-03-05 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java:
+ Fixed copyright notice.
+ * gnu/testlet/javax/swing/text/Utilities/getBreakLocation.java:
+ Removed bogus test.
+
+2008-02-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/StringBuffer/PR34840.java:
+ New test for bug PR classpath/34840.
+
+2008-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/remote/TargetedNotificationTest.java:
+ Avoid using null for the event object.
+
+2008-02-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/remote/TargetedNotificationTest.java:
+ New test.
+ * gnu/testlet/javax/management/remote/NotificationResultTest.java:
+ Likewise.
+
+2007-12-31 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/PR34582.java:
+ Check that an instance can be created.
+
+2007-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/awt/Desktop/PR34580.java:
+ Check that isDesktopSupported() is accessible.
+
+2007-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/swing/JFrame/PR34577.java:
+ Check that the root pane can be changed by a
+ subclass.
+
+2007-12-23 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/awt/Container/PR34078.java:
+ Test for this bug.
+
+2007-08-22 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/util/EnumSet/Colour.java:
+ Test enumeration.
+ * gnu/testlet/java/util/EnumSet/ComplementOf.java:
+ New test.
+
+2007-11-24 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList: new package.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveAllTest.java:
+ test.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveTest.java:
+ likewise.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllAbsentTest.java:
+ likewise.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java:
+ likewise.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RetainAllTest.java:
+ likewise.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/TestIterators.java:
+ likewise.
+ * gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllTest.java:
+ likewise.
+
+2007-10-03 Steve McKay <smckay@google.com>
+
+ * gnu/testlet/java/awt/Component/keyPressTest.java: Fixed test so
+ event is not created and dispatched. Completely waits for the frame to
+ receive and respond keypress events.
+
+2007-09-12 Joshua Sumali <jsumali@redhat.com>
+
+ * Makefile.am: Added source files for 'make dist' target.
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Regenerated.
+ * configure.in: Added tar-pax check, needed for long filenames
+ included in the dist tarball.
+ * configure: Regenerated.
+
+2007-07-24 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java:
+ (EXPECTED_PREFIX): Fixed expected string.
+
+2007-07-24 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/net/HttpURLConnection/timeout.java:
+ (testConnectTimeout): Fixed test.
+
+2007-07-18 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/lang/Character/CharInfo.java:
+ Added a new instance variable to store Unicode character code
+ * gnu/testlet/java/lang/Character/unicode.java:
+ (test): Changed the Unicode file to use from version 3 to 4
+ * gnu/testlet/java/lang/Character/UnicodeBase.java:
+ Changed implementation of the test to work with Unicode version 4.
+ * gnu/testlet/java/lang/Character/UnicodeData-4.0.0.txt:
+ Added new Unicode data file (version 4).
+
+2007-07-13 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java
+ (test): Fixed incorrect test.
+ * gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java
+ (test): Fixed incorrect test.
+
+2007-07-13 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/internal.java
+ (test): Fixed incorrect test.
+
+2007-07-10 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/beans/Expression/check.java:
+ (test): Fixed incorrect test.
+
+2007-07-09 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/attribute.java:
+ (test): Added a timezone change to match the test date
+ * gnu/testlet/java/text/SimpleDateFormat/parse.java:
+ (test): Added a timezone change and Locale to match test
+ * gnu/testlet/java/text/SimpleDateFormat/Cloning.java:
+ (test): Changed equality operator from != to .equals
+
+2007-07-07 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/javax/sound/sampled/AudioProperties.java:
+ (test): added test for AU audio files.
+ (testAU): new test.
+ (getAudioStream): new support method to load sound file and return audio
+ streams accordingly.
+ (testWav): refactored.
+ (processAUStream): new helper method, part of the AU test.
+ * gnu/testlet/javax/sound/sampled/data/k3b_success1.au: new audio file.
+ * README: added k3b_success1.au to the "NOTES" section.
+
+2007-07-06 Mario Torre <neugens@limasoftware.net>
+
+ * README: added "NOTES" section.
+
+2007-07-06 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/javax/sound/sampled: new package.
+ * gnu/testlet/javax/sound/sampled/AudioProperties.java:
+ new file.
+ * gnu/testlet/javax/sound/sampled/data/k3b_success1.wav:
+ new file. This is a binary audio file needed by the test.
+ The file is from the k3b-1.0.1-1.fc7.2 package (GPL, fedora 7)
+
+2007-07-03 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/lang/Integer/parseInt.java:
+ (test): Added new test.
+
+2007-06-29 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/lang/Integer/parsetInt.java:
+ (test): Fixed incorrect test.
+
+2007-06-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/ChildMXBean.java:
+ Add missing file.
+
+2007-06-19 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/lang/Character/Blocks15.java
+ (test): Removed checks. SURROGATES_AREA is deprecated and will cause
+ fails in 1.5.
+ * gnu/testlet/java/lang/Character/classify12.java
+ (test): Fixed incorrect test.
+ * gnu/testlet/java/lang/Character/getType.java
+ (test): Removed incorrect checks. Encoding has changed in 1.5.
+
+2007-06-19 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/setScale.java
+ (test): Changed constant used.
+ * gnu/testlet/java/math/BigDecimal/construct.java
+ (test): Added try/catch block.
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java
+ (diagadd): Fixed expected value. toString has changed in JDK 1.5.0
+ (diagmin): Likewise.
+ (diagmax): Likewise.
+ (diagmultiply): Likewise.
+ (diagmovepointleft): Likewise.
+ (diagmovepointright): Likewise.
+ (diagscale): Likewise.
+
+2007-06-19 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/text/Collator/GetSet.java: Fixed failing test.
+ * gnu/testlet/java/text/DateFormatSymbols/Test.java: Likewise.
+ * gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java:
+ Likewise.
+ * gnu/testlet/java/text/DecimalFormat/digits.java: Likewise.
+ * gnu/testlet/java/text/DecimalFormat/setDecimalFormatSymbols.java:
+ Likewise.
+ * gnu/testlet/java/text/DecimalFormat/toPattern.java: Likewise.
+ * gnu/testlet/java/text/DecimalFormat/toPattern14.java: Likewise.
+
+2007-06-19 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/io/FilePermission/simple.java: Removed invalid
+ test. Bug has been fixed in the JDK.
+
+2007-06-18 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/sql/Array/ArrayTest.java: Added missing functions
+ * gnu/testlet/java/sql/Blob/BlobTest.java: Likewise
+ * gnu/testlet/java/sql/Clob/ClobTest.java: Likewise
+
+2007-06-18 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/math/BigInteger/TestOfToByteArray.java: Removed
+ verbose call to prevent compilation error.
+
+2007-06-18 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java: Added
+ casts to prevent compilation errors.
+
+2007-06-18 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/util/Currency/Canada.java:
+ * gnu/testlet/java/util/Currency/CanadaFrench.java:
+ * gnu/testlet/java/util/Currency/China.java:
+ * gnu/testlet/java/util/Currency/France.java:
+ * gnu/testlet/java/util/Currency/Germany.java:
+ * gnu/testlet/java/util/Currency/Italy.java:
+ * gnu/testlet/java/util/Currency/Japan.java:
+ * gnu/testlet/java/util/Currency/Korea.java:
+ * gnu/testlet/java/util/Currency/PRC.java:
+ * gnu/testlet/java/util/Currency/Taiwan.java:
+ * gnu/testlet/java/util/Currency/UK.java: Set default locale.
+
+2007-06-15 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/locales/LocaleTest.java: Fixed TimeZone issue.
+
+2007-06-15 Joshua Sumali <jsumali@redhat.com>
+
+ * gnu/testlet/locales/LocaleTest.java: Fixed language errors. Now
+ passes on openJDK.
+
+2007-05-30 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FileOutputStream/append.java: New test.
+
+2007-04-18 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/internal.java:
+ New test.
+
+2007-04-12 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/nio/CharBuffer/CharSequenceWrapper.java:
+ New testcase for testing wrapped CharSequences.
+
+2007-04-12 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/weekOfYear.java:
+ New test.
+
+2007-04-12 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java:
+ Comment fix.
+
+2007-04-09 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/ObjectName/applyJDK6.java:
+ Application tests for 1.6.
+ * gnu/testlet/javax/management/ObjectName/Parsing.java:
+ More parse tests for 1.5.
+
+2007-04-07 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java (compileStringBase): Add -1.5.
+
+2007-04-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/ObjectName/Parsing.java:
+ Parse tests for 1.5.
+ * gnu/testlet/javax/management/ObjectName/ParsingJDK6.java:
+ Parse tests for 1.6.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java:
+ Add MXBean conversion tests.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java:
+ Likewise.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java:
+ Likewise.
+
+2007-04-05 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java:
+ Test in the opposite direction too.
+
+2007-04-05 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/first.java:
+ Remove "day one is in week one" checks.
+ * gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java:
+ New test.
+
+2007-04-03 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/dstOffset.java: New test.
+
+2007-03-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Person.java:
+ Interface for testing.
+ * gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java:
+ Test javax.management.openmbean.CompositeDataInvocationHandler.
+
+2007-03-11 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/openmbean/ArrayType/Constructor1.java:
+ New test for the first constructor.
+ * gnu/testlet/javax/management/openmbean/ArrayType/Constructor2.java:
+ New test for the second constructor.
+ * gnu/testlet/javax/management/openmbean/ArrayType/Equals.java:
+ New test for equals(Object).
+ * gnu/testlet/javax/management/openmbean/ArrayType/GetArrayType.java:
+ New test for getArrayType(OpenType).
+ * gnu/testlet/javax/management/openmbean/ArrayType/GetPrimitiveArrayType.java:
+ New test for getPrimitiveArrayType(Class).
+ * gnu/testlet/javax/management/openmbean/ArrayType/HashCode.java:
+ New test for hashCode().
+ * gnu/testlet/javax/management/openmbean/ArrayType/IsPrimitiveArray.java:
+ New test for isPrimitiveArray().
+ * gnu/testlet/javax/management/openmbean/ArrayType/IsValue.java:
+ New test for isValue().
+
+2007-03-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/Colour.java:
+ Test enumeration.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java:
+ Test for proxying.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/Test.java:
+ Implementation of TestMBean.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java:
+ Implementation of TestCMXBean.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java:
+ Interface for an MXBean for conversion testing.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestMBean.java:
+ Interface for a test bean.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestX.java:
+ Implementation of TestXMBean.
+ * gnu/testlet/javax/management/MBeanServerInvocationHandler/TestXMBean.java:
+ Interface for a test bean that extends Object's methods.
+ * gnu/testlet/javax/management/MBeanServerPermission/Constructor.java:
+ Test for MBeanServerPermission.
+
+2007-02-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/TimeZone/zdump.java: New test.
+
+2007-02-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/util/SimpleTimeZone/equals.java: New tests.
+ * gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java: Likewise.
+ * gnu/testlet/java/util/SimpleTimeZone/hashCode.java: Likewise.
+ * gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java: Likewise.
+
+2007-02-20 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/javax/management/ObjectName/apply.java: New test.
+
+2007-02-12 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java (init):
+ Print exception.
+ (run): Likewise.
+ * Harness.java (printHelpMessage): Typo fix.
+
+2007-02-09 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/io/File/ReadMethods.java:
+ (test): new test.
+ * gnu/testlet/java/io/File/ExecuteMethods.java:
+ (test): likewise.
+ * gnu/testlet/java/io/File/WriteMethods.java:
+ (test): likewise.
+
+2007-02-06 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileInputStream/security.java: Tagged.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/FilePermission/traversal2.java: Likewise.
+ * gnu/testlet/java/io/FilePermission/traversal.java: Likewise.
+ * gnu/testlet/java/io/ObjectInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/RandomAccessFile/security.java: Likewise.
+ * gnu/testlet/java/lang/ClassLoader/security.java: Likewise.
+ * gnu/testlet/java/lang/Class/security.java: Likewise.
+ * gnu/testlet/java/lang/reflect/AccessibleObject/security.java:
+ Likewise.
+ * gnu/testlet/java/lang/Runtime/security.java: Likewise.
+ * gnu/testlet/java/lang/System/security.java: Likewise.
+ * gnu/testlet/java/lang/ThreadGroup/insecurity.java: Likewise.
+ * gnu/testlet/java/lang/ThreadGroup/security.java: Likewise.
+ * gnu/testlet/java/lang/Thread/insecurity.java: Likewise.
+ * gnu/testlet/java/lang/Thread/security.java: Likewise.
+ * gnu/testlet/java/net/DatagramSocket/security.java: Likewise.
+ * gnu/testlet/java/net/InetAddress/security.java: Likewise.
+ * gnu/testlet/java/net/NetworkInterface/security.java: Likewise.
+ * gnu/testlet/java/net/ServerSocket/security.java: Likewise.
+ * gnu/testlet/java/net/SocketPermission/argument.java: Likewise.
+ * gnu/testlet/java/net/SocketPermission/implies.java: Likewise.
+ * gnu/testlet/java/net/SocketPermission/serialization.java: Likewise.
+ * gnu/testlet/java/net/Socket/security.java: Likewise.
+ * gnu/testlet/java/net/URLClassLoader/security.java: Likewise.
+ * gnu/testlet/java/net/URL/security.java: Likewise.
+ * gnu/testlet/java/security/AccessController/contexts.java: Likewise.
+
+2007-02-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/ProcessBuilder/simple.java: New file.
+
+2007-01-18 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/text/NumberFormat/position.java: New Test
+
+2007-01-09 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/AWTPermission/constructor.java: New test.
+
+2007-01-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComboBox/getEditor.java
+ (TestComboBox): New inner class for testing.
+ (test): Moved code to testDefault() and add testPR30337().
+ (testDefault): Code moved from test() to here.
+ (testPR30337): New test.
+
+2007-01-03 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/util/Arrays/binarySearch.java:
+ (testByte): Added check for empty array.
+ (testChar): Likewise.
+ (testDouble): Likewise.
+ (testFloat): Likewise.
+ (testInt): Likewise.
+ (testLong): Likewise.
+ (testObject): Likewise.
+ (testShort): Likewise.
+
+2007-01-03 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java: Added
+ a new test.
+
+2007-01-02 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * javax/swing/text/html/parser/ParserDelegator/Text3.java: New test.
+ * javax/swing/text/html/parser/ParserDelegator/Text4.java: New test.
+
+2007-01-02 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * .settings/org.eclipse.jdt.core.prefs:
+ Set the compiler compliance level to 1.5
+
+2007-01-02 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/event/EventListenerList/add.java:
+ Cast L.class into Class.
+
+2007-01-02 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/
+ Entity_Test.java: Removed (moved)
+ * javax/swing/text/html/parser/ParserDelegator/Entities2.java: New test.
+
+2007-01-01 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/
+ AttributeList_test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/
+ DTD_test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/
+ TagElement_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/
+ Text.java: Removed (tests moved).
+ gnu/testlet/javax/swing/text/html/parser/AttributeList/
+ AttributeListTest2.java,
+ gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java,
+ gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java,
+ gnu/testlet/javax/swing/text/html/parser/TagElement/
+ TagElementTest2.java: New files.
+
+2007-01-01 Audrius Meskauskas <Audrius.Meskauskas@spectraseis.com>
+
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities.java:
+ New test.
+
+2006-12-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/TestHarness.java
+ (check(double,double,double)): New method. Tests two double values
+ with a certain threshold.
+
+2006-12-27 Mark Wielaard <mark@klomp.org>
+
+ * Makefile.am (JAVACFLAGS): Use -1.5.
+ * Makefile.in: Regenerated.
+ * gnu/testlet/java/awt/Component/getListeners.java: Disable
+ non-compiling test.
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getListeners.java: Likewise.
+ * gnu/testlet/java/awt/Container/getListeners.java: Likewise.
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/
+ getListeners.java: Likewise.
+ * gnu/testlet/javax/swing/JComponent/getListeners.java:
+ Likewise.
+ * gnu/testlet/javax/swing/event/EventListenerList/add.java: Use
+ more specific local variable types.
+ * gnu/testlet/javax/swing/event/EventListenerList/
+ getListenerCount.java: Likewise.
+ * gnu/testlet/javax/swing/event/EventListenerList/
+ getListenerList.java: Likewise.
+ * gnu/testlet/javax/swing/event/EventListenerList/getListeners.java:
+ Likewise. Disable non-compiling test.
+ * gnu/testlet/javax/swing/event/EventListenerList/remove.java:
+ Likewise.
+ * gnu/testlet/java/lang/Double/compareTo.java: Add Comparable cast.
+ * gnu/testlet/java/lang/Float/compareTo.java: Likewise.
+ * gnu/testlet/java/lang/Integer/compareTo.java: Likewise.
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/compareTo.java: Likewise.
+ * gnu/testlet/java/util/Date/compareTo.java: Likewise.
+ * gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java:
+ Use correct class literal.
+
+2006-12-08 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPane/doLayout.java: New test.
+
+2006-12-08 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPane/getScrollPosition.java: New test.
+ * gnu/testlet/java/awt/ScrollPane/setScrollPosition.java: New test.
+
+2006-12-07 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/HttpURLConnection/timeout.java: New test.
+
+2006-12-07 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Add test for jar base with
+ full http spec.
+
+2006-12-07 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/RuleBasedCollator/CollatorTests.java (basicCompare):
+ New class.
+ (orderComparision): New Test
+ (test): Default entry for tests.
+ * gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java (test):
+ Removed debug output.
+ * gnu/testlet/java/text/DecimalFormat/format.java (testLocale):
+ Added tests case for locale other than US.
+
+2006-12-06 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPane/add.java: Expand test.
+
+2006-12-06 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/geom/Rectangle2D/getBounds.java: New test.
+
+2006-12-06 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/border/CompoundBorder/isBorderOpaque.java:
+ Added new tests.
+
+2006-12-06 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/border/CompoundBorder.java:
+ (isBorderOpaque): New test.
+
+2006-12-05 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPane/add.java: New test.
+
+2006-12-01 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (testGeneral):
+ (testLocale): new tests.
+ (test): enable new tests.
+
+2006-11-28 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/lang/Double/DoubleTest.java: Added test for
+ Double.toString(Double.MIN_VALUE).
+
+ * gnu/testlet/java/lang/Float/FloatTest.java: Added test for
+ Float.toString(Float.MIN_VALUE).
+
+2006-11-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java:
+ Fixed test for differentiation between font ascent+descent and
+ height.
+
+2006-11-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/beans/PropertyChangeSupport/firePropertyChange.java:
+ New test.
+ * gnu/testlet/javax/swing/JComponent/putClientProperty.java:
+ Added check for how setting a null property fires an event or
+ not.
+
+2006-11-27 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/Raster/createChild.java
+ (createRaster): Add harness parameter, ensure that returned raster
+ is not writable.
+ (testData): Add check for class of child raster.
+ * gnu/testlet/java/awt/image/Raster/MyRaster.java: New file.
+ * gnu/testlet/java/awt/image/WritableRaster/createChild.java: New file.
+
+2006-11-27 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/Vector/AcuniaVectorTest.java: Don't demand
+ a NullPointerException when doing a removeAll(null) or a
+ retainAll(null) on an empty Vector.
+
+2006-11-26 Mark Wielaard <mark@klomp.org>
+
+ * RunnerProcess.java (getStackTraceString): Use whole exception
+ message, not just the class name.
+
+2006-11-26 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/ResourceNotFoundException.java (serialVersionUID):
+ Added to fix ecj warning.
+
+2006-11-26 Paul Jenner <psj@harker.dyndns.org>
+
+ * Makefile.am (harness_files): Add VisualTestlet.java.
+ * Makefile.in: Regenerated.
+
+2006-11-26 Raif S. Naffah <mauve@naffah-raif.name>
+
+ * gnu/testlet/java/util/jar/JarFile/TestOfManifest.java (ENTRYNAME): New field.
+ (test): Call checkCertificates().
+ (checkCertificates): New method.
+ (readEntries): Re-factored to use read1Entry().
+ (read1Entry): New method.
+
+2006-11-24 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/font/TextHitInfo/afterOffset.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/beforeOffset.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/equals.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/getCharIndex: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/getInsertionIndex: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/getOtherHit: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/getOffsetHit: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/hashCode: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/isLeadingEdge.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/leading.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/toString.java: New file.
+ * gnu/testlet/java/awt/font/TextHitInfo/trailing.java: New file.
+
+2006-11-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java: New file,
+ * gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/MyBeanContextServicesSupport.java: New file.
+
+2006-11-23 Mario Torre <neugens@nirvana.limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/formatToCharacterIterator.java (test):
+ Code reformatted, added test for Format.Field attributes.
+ * gnu/testlet/java/text/DecimalFormat/formatExp.java (test):
+ New tests.
+ * gnu/testlet/java/text/DecimalFormat/applyPattern.java (test):
+ fix broken test, plus explicity set the locale for the test.
+ * gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java:
+ fix test tag, moved to 1.4.
+
+2006-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java
+ (deserializeX): New method,
+ (serializeX): New method,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java:
+ New test.
+
+2006-11-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/toArray.java:
+ New file.
+
+2006-11-22 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JRootPane/setLayeredPane.java: New test.
+
+2006-11-20 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JSlider/setLabelTable.java: Added a new test.
+
+2006-11-20 Marco Trudel <mtrudel@gmx.ch>
+
+ * gnu/testlet/java/util/jar/JarFile/TestOfManifest.java: New test.
+ * gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar: New (data) file.
+
+2006-11-17 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/DatagramSocket/security.java: New test.
+
+2006-11-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java
+ (getChildBeanContextMembershipListenerX): New method,
+ (getChildPropertyChangeListenerX): New method,
+ (getChildSerializableX): New method,
+ (getChildVetoableChangeListenerX): New method,
+ (getChildVisibilityX): New method.
+
+2006-11-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/setDesignTime.java:
+ New test.
+
+2006-11-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/DesignMode/constants.java: New file.
+
+2006-11-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java: New file,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java: New file.
+
+2006-11-10 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/sort.java: New file.
+
+2006-11-10 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/Socket/security.java:
+ Removed more unused imports.
+
+2006-11-10 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/ServerSocket/security.java:
+ Always use localhost regardless of the actual hostname
+ of the address being listened on.
+
+ * gnu/testlet/java/net/Socket/security.java:
+ Removed an unused import.
+
+2006-11-09 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JLabel/constructor.java: Added new tests.
+
+2006-11-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/constructors.java: New test,
+ * gnu/testlet/java/beans/beancontext/BeanContextSupport/getBeanContextPeer.java: New test.
+
+2006-11-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/SimpleBeanInfo/getAdditionalBeanInfo.java:
+ New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/getBeanDescriptor.java:
+ New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/getDefaultEventIndex.java:
+ New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/getDefaultPropertyIndex.java:
+ New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/getEventSetDescriptors.java:
+ New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/getIcon.java: New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java: New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/MySimpleBeanInfo.java: New file,
+ * gnu/testlet/java/beans/SimpleBeanInfo/testImage1.gif: New file.
+
+2006-11-07 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/FlowLayout/minimumLayoutSize.java: New test.
+
+2006-11-06 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/TextComponent/setSelectionStart.java: New test.
+
+2006-11-06 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/TextField/getMinimumSize.java: New test.
+ * gnu/testlet/java/awt/TextField/getPreferredSize.java: New test.
+
+2006-11-03 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/TextArea/getMinimumSize.java: New test.
+ * gnu/testlet/java/awt/TextArea/getPreferredSize.java: New test.
+
+2006-11-03 Audrius Meskauskas <Audrius.Meskauskas@spectraseis.com>
+
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/
+ SimpleParsing.java: New test.
+
+2006-11-03 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/event/ComponentEvent/paramString.java: Changed
+ tag documentation to JDK1.1.
+
+2006-11-03 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/event/ComponentEvent/paramString.java: New test.
+
+2006-11-01 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPaneAdjustable/paramString.java: New test.
+
+2006-11-01 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/GridBagLayout/toString.java: New test.
+
+2006-11-01 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextField/fireActionPerformed.java: Added
+ a new test.
+
+2006-10-31 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextField/fireActionPerformed.java: New test.
+
+2006-10-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/dnd/DragGestureRecognizer/resetRecognizer.java:
+ New test.
+
+2006-10-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/datatransfer/DataFlavor/readExternal.java,
+ * gnu/testlet/java/awt/datatransfer/DataFlavor/writeExternal.java:
+ New tests.
+
+2006-10-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/TransferHandler/importData.java:
+ New test.
+
+2006-10-25 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Dialog/defaultProperties.java: New test.
+ * gnu/testlet/java/awt/FileDialog/defaultProperties.java: New test.
+ * gnu/testlet/java/awt/FileDialog/setFile.java: New test.
+
+2006-10-24 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Scrollbar/testSetValues: Added a new test.
+ * gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement: Added a
+ new test.
+ * gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement: Added a
+ new test.
+
+2006-10-23 Raif S. Naffah <classpath@naffah-raif.name>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherOutputStream.java: New test.
+
+2006-10-21 Audrius Meskauskas <Audrius.Meskauskas@spectraseis.com>
+
+ * gnu/testlet/java/awt/image/BufferedImage/getSetRgb1Pixel.java:
+ New test.
+
+2006-10-20 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement: New test.
+ * gnu/testlet/java/awt/Scrollbar/testSetValues.java: New test.
+ * gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement: New test.
+
+2006-10-20 Robert Schuster <robertschuster@fsfe.org>
+
+ * Harness.java: Added vmExtra field.
+ (setupHarness): Examine -vmprefix argument.
+ (initProcess): Use vmPrefix field if non-null.
+ * README: Added info about -vmprefix switch.
+
+2006-10-19 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/BufferedImage/constants.java: New test.
+
+2006-10-18 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java: New test.
+ * gnu/testlet/java/awt/CardLayout/testMinimumLayoutSize.java: New test.
+
+2006-10-17 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/TransferHandler/exportToClipboard.java:
+ New test.
+
+2006-10-17 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/TransferHandler/createTransferable.java:
+ New test.
+
+2006-10-17 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/BufferedImage/getSubimage.java,
+ * gnu/testlet/java/awt/image/Raster/createChild.java,
+ * gnu/testlet/java/awt/image/WritableRaster/createWritableChild.java:
+ New tests.
+
+2006-10-16 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/TransferHandler/canImport.java: New test.
+
+2006-10-16 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getCharacterBounds.java,
+ * gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getIndexAtPoint.java:
+ New tests.
+
+2006-10-14 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ToolTipManager/DynamicToolTipTest.java:
+ New test. This is a regression test
+ for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27957 .
+
+2006-10-13 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/ScrollPane/testSetLayout.java: New test.
+
+2006-10-12 Roman Kennke <kennke@aicas.com>
+
+ * Harness.java
+ (InputPiperThread): New inner class. Forwards the input from
+ the outside process to the inside (test) process.
+ (initProcess): Set up piping.
+ (printHelpMessage): Added description of -interactive option.
+ * RunnerProcess.java
+ (interactive): New field. This is set to true when we are running
+ interactive tests only.
+ (main): Interpret -interactive option.
+ (runtest): Filter tests based on the -interactive flag.
+ * gnu/testlet/VisualTestlet.java: New class. This is the
+ base class for visual (interactive) tests.
+ * gnu/testlet/javax/swing/JMenuItem/DragSelectTest.java: New
+ interactive test.
+
+2006-10-13 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java
+ (test): Correct "item not in the list" case.
+
+2006-10-11 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/URL/security.java: Add a test I missed.
+
+2006-10-11 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/URL/security.java: New test.
+
+2006-10-11 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/URLClassLoader/security.java: New test.
+
+2006-10-11 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/PR23996.java:
+ Test for PR23996.
+ * gnu/testlet/java/text/DecimalFormat/format.java
+ (testGeneral): new test.
+ * gnu/testlet/java/text/DecimalFormat/applyPattern.java (test):
+ test added.
+
+2006-10-09 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/ServerSocket/security.java: New test.
+
+2006-10-09 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JSplitPane/getDividerLocation.java,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/getDividerLocation.java,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/layoutContainer.java:
+ New tests.
+
+2006-10-09 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTree/isRowSelected.java
+ (TestTree.isPathSelected): New overridden method for testing.
+ (TestTree.getRowForPath): Removed.
+ (TestTree.getPathForRow): New overridden method for testing.
+ (isPathSelectedCalled): New field.
+ (getPathForRowCalled): Renamed old getRowForPathCalled field.
+ (test): Include new isPathSelected() test.
+ (testGetRowForPath): Renamed method and check getPathForRow() instead
+ of getRowForPath().
+ (testCallIsRowSelected): New test method.
+
+2006-10-09 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTree/isRowSelected.java: New test.
+
+2006-10-06 Roman Kennke <kennke@aicas.com>
+
+ * junit/framework/Assert.java
+ * junit/framework/AssertionFailedError.java
+ * junit/framework/ComparisonFailure.java
+ * junit/framework/Protectable.java
+ * junit/framework/Test.java
+ * junit/framework/TestCase.java
+ * junit/framework/TestFailure.java
+ * junit/framework/TestListener.java
+ * junit/framework/TestResult.java
+ * junit/framework/TestSuite.java
+ * junit/runner/BaseTestRunner.java
+ * junit/textui/TestRunner.java:
+ New classes. Implements the core JUnit API for bridging JUnit into
+ Mauve.
+ * junit/framework/package.html: New file.
+
+2006-10-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Calendar/getInstance.java:
+ (testMethod1): Added check for new instance,
+ (testMethod2): Likewise,
+ (testMethod3): Likewise,
+ (testMethod4): Likewise.
+
+2006-10-05 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/Socket/security.java: New test.
+
+2006-10-05 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/InetAddress/security.java: Comment fixes.
+
+2006-10-04 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/getBounds.java:
+ New test.
+
+2006-10-02 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/Graphics/clearRect.java: New file.
+
+2006-09-28 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/IdentityHashMap/simple.java (test): Check
+ results of remove().
+
+2006-09-28 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTable/constructors.java
+ (cellProperties): New test.
+ (selectionProperties): New test.
+ (editingProperties): New test.
+ (columnModelProperties): New test.
+ (selectionModelProperties): New test.
+ (linesNotNeeded): New test.
+
+2006-09-27 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/util/prefs/PreferenceTest.java: code reformat.
+ (testSpecialCharacters): new test.
+ (test): enable use of new test.
+
+2006-09-26 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Rectangle/constructors.java: New test.
+
+2006-09-25 Francis Kung <fkung@redhat.com
+
+ * gnu/testlet/java/awt/image/ColorModel/MyColorModel.java
+ (coerceData): New method.
+ * gnu/testlet/java/awt/image/ComponentColorModel/coerceData.java,
+ * gnu/testlet/java/awt/image/DirectColorModel/coerceData.java:
+ New files.
+
+2006-09-22 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/toPattern14.java:
+ new file; this test is an update of toPattern for 1.4.
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test):
+ small fix to the last test to help debugging: now uses the
+ mauve check(results, expected) method.
+ * gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java:
+ new file.
+ * gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java (test):
+ new tests
+ * gnu/testlet/java/text/DecimalFormat/formatExp.java (test):
+ new test added.
+
+2006-09-22 Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/29178:
+ * gnu/testlet/java/nio/charset/Charset/canEncode.java: New file.
+
+2006-09-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/NetworkInterface/security.java: New test.
+
+2006-09-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/argument.java:
+ Check that unquoted IPv6 addresses with one-digit first
+ components are not incorrectly flagged as errors.
+
+2006-09-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/getCellRect.java
+ (test): Added new checks.
+
+2006-09-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/InetAddress/security.java: New test.
+
+2006-09-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SizeSequence/getSize.java
+ (test): Check indices out of bounds,
+ * gnu/testlet/javax/swing/JTable/getRowHeight.java: New test,
+ * gnu/testlet/javax/swing/JTable/setRowHeight.java: New test.
+
+2006-09-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager.java:
+ Compare permissions using equals() rather than implies().
+ Provide a way for tests to specify that they need implies().
+ * gnu/testlet/java/io/File/security.java:
+ Use implies() comparisons for temp file tests.
+
+2006-09-21 Casey Marshall <csm@gnu.org>
+
+ * gnu/testlet/java/nio/channels/Selector/testEmptySelect.java:
+ new test.
+
+2006-09-21 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTable/getCellRect.java: Changed
+ expected value of one test case.
+
+2006-09-20 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java
+ (ConnectionHandler.getHeaderFromList): New method.
+ * gnu/testlet/java/net/HttpURLConnection/postHeaders.java: New test.
+
+2006-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JButton/model.java: New test,
+ * gnu/testlet/javax/swing/JButton/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JCheckBox/model.java: Likewise,
+ * gnu/testlet/javax/swing/JCheckBox/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JCheckBoxMenuItem/model.java: Likewise,
+ * gnu/testlet/javax/swing/JCheckBoxMenuItem/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JMenu/model.java: Likewise,
+ * gnu/testlet/javax/swing/JMenu/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JMenuItem/model.java: Likewise,
+ * gnu/testlet/javax/swing/JMenuItem/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JRadioButton/model.java: Likewise,
+ * gnu/testlet/javax/swing/JRadioButton/uidelegate.java: Likewise,
+ * gnu/testlet/javax/swing/JRadioButtonMenuItem/model.java: Likewise,
+ * gnu/testlet/javax/swing/JRadioButtonMenuItem/uidelegate.java:
+ Likewise,
+ * gnu/testlet/javax/swing/JToggleButton/model.java: Likewise,
+ * gnu/testlet/javax/swing/JToggleButton/uidelegate.java: Likewise.
+
+2006-09-19 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/logging/Logger/getParent.java: New test.
+
+2006-09-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Menu/insert.java: New test.
+
+2006-09-14 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: Tweak.
+
+2006-09-13 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTable/getCellRect.java: Fixed documentation.
+
+2006-09-13 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JTable/getCellRect.java: New test.
+
+2006-09-13 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/RescaleOp/filterRaster.java
+ (simpleTests): Remove hard-coded max sample value.
+
+2006-09-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java
+ (test): Add checks for 'swing.boldMetal' UI default setting,
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java
+ (test): Likewise.
+
+2006-09-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/OceanTheme/addCustomEntriesToTable.java:
+ New test.
+
+2006-09-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java
+ (test1): Added checks,
+ * gnu/testlet/java/text/AttributedCharacterIterator/Attribute/toString.java:
+ New test.
+
+2006-09-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java:
+ New test,
+ * gnu/testlet/java/text/AttributedString/constructors.java
+ (testConstructor3): Added new checks.
+
+2006-09-09 Casey Marshall <csm@gnu.org>
+
+ * gnu/testlet/java/net/NetworkInterface/Consistency.java: new
+ test.
+ * gnu/testlet/java/net/NetworkInterface/getByName.java (test):
+ don't test for interfaces named "lo".
+
+2006-09-08 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/InetAddress/getAllByName.java: Do not test
+ for whitespace-stripping of hostnames.
+
+2006-09-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java
+ (test): Add a check for the default value of the scrollBarWidth field,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java
+ (MyMetalScrollBarUI): Call super(),
+ (installDefaults): New method,
+ (setScrollbar): Likewise,
+ (getScrollBarWidthField): Likewise.
+
+2006-09-06 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: More tests.
+
+2006-09-06 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/RescaleOp/constructors.java,
+ * gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestImage.java,
+ * gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestRaster.java,
+ * gnu/testlet/java/awt/image/RescaleOp/filterImage.java,
+ * gnu/testlet/java/awt/image/RescaleOp/filterRaster.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getNumFactors.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getOffsets.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getPoint2D.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getRenderingHints.java,
+ * gnu/testlet/java/awt/image/RescaleOp/getScaleFactors.java: New files.
+
+2006-09-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIManager/getBoolean.java: New file,
+ * gnu/testlet/javax/swing/UIManager/getBorder.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getColor.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getDimension.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getFont.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getIcon.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getInsets.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getInt.java: Likewise,
+ * gnu/testlet/javax/swing/UIManager/getString.java: Likewise.
+
+2006-09-06 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: Correctly
+ test cases with empty hostport strings. Also fixed a comment.
+
+2006-09-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
+ (TestTheme.getControlTextFont): New method,
+ (TestTheme.getMenuTextFont): Likewise,
+ (test): Updated checks for font settings.
+
+2006-09-05 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java
+ (test): Test for failures.
+ (testFailure): Test out of bounds failures.
+ * gnu/testlet/java/awt/image/LookupOp/createCompatibleDestImage.java:
+ New test.
+ * gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java
+ (test): Check additional properties.
+ * gnu/testlet/java/awt/image/LookupOp/filterImage.java: New test.
+ * gnu/testlet/java/awt/image/LookupOp/filterRaster.java: New test.
+ * gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java
+ (test): Test for failures.
+ (testFailure): Test out of bounds failures.
+
+2006-09-04 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Rectangle/setRect.java
+ (test): Added new checks for input rounding.
+
+2006-09-03 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/math/BigInteger/ctor.java (testCtorByteArray): New method.
+ (test): Added call to new method.
+ * gnu/testlet/java/math/BigInteger/TestOfPR27372.java (usingNativeImpl):
+ New field.
+ (areEqualJavaBI): New method.
+ (areEqualNativeBI): New method.
+ (areEqual): Call one of the two above methods depending on BI's nature.
+ * gnu/testlet/java/math/BigInteger/TestOfToByteArray.java: New test.
+
+2006-09-01 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java:
+ Check that IPv6-mapped IPv4 addresses imply their counterparts.
+
+2006-08-31 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/argument.java:
+ Fix a pair of broken addresses.
+
+2006-08-31 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/argument.java:
+ More meaningful failure messages.
+
+2006-08-29 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java
+ (getViewIndexAtPosition): Overridden to make public.
+ (loadChildren): Likewise.
+ (getViewFactory): Overridden to provide a ViewFactory.
+ * gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java:
+ New tests.
+ * gnu/testlet/javax/swing/text/ZoneView/loadChildren.java:
+ New tests.
+
+2006-08-29 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/ZoneView/TestView.java,
+ * gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java:
+ New helper classes.
+ * gnu/testlet/javax/swing/text/ZoneView/constructor.java,
+ * gnu/testlet/javax/swing/text/ZoneView/createZone.java,
+ * gnu/testlet/javax/swing/text/ZoneView/getMaxZonesLoaded.java,
+ * gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java,
+ * gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java,
+ * gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java,
+ * gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java,
+ * gnu/testlet/javax/swing/text/ZoneView/unloadZone.java,
+ * gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java:
+ New tests.
+
+2006-08-10 Stephane Mikaty <stephane@mikaty.net>
+
+ * gnu/testlet/javax/xml/xpath/XPath.java: New test.
+
+2006-08-30 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/util/UUID/TestAll.java: new file.
+
+2006-08-29 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/formatExp.java (test):
+ added new tests.
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test):
+ added new tests.
+ * gnu/testlet/java/text/DecimalFormat/format.java (testGeneral):
+ added new tests.
+
+2006-08-25 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java:
+ Add many more host checks, and catch exceptions within checks.
+
+2006-08-25 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/argument.java: Also test
+ unquoted IPv6 addresses.
+
+2006-08-24 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java:
+ (colorModelTest): Add tests for value of transferType.
+ (simpleTest): Add tests for value of transferType.
+ * gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestImage.java,
+ * gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestRaster.java,
+ * gnu/testlet/java/awt/image/ConvolveOp/filterImage.java: New tests.
+ * gnu/testlet/java/awt/image/ConvolveOp/filter.java: Renamed to filterRaster.java.
+ * gnu/testlet/java/awt/image/ConvolveOp/filterRaster.java: Renamed from filter.java.
+
+2006-08-23 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/ColorClass/brighter: New file.
+
+2006-08-22 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/MenuShortcut/testToString: New file.
+
+2006-08-18 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test):
+ added new tests.
+ * gnu/testlet/java/text/DecimalFormat/applyPattern.java (test):
+ fixed checkpoint for "grouping" test.
+
+2006-08-18 Francis Kung <fkung@redhat.com>
+ * gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java:
+ (colorModelTest): Expand tests.
+ (profileTest): Expand tests.
+ (test): Clean up looping.
+ * gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java:
+ (colorModelTest): Expand tests.
+ (profileTest): Expand tests.
+ (test): Clean up looping.
+ * gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java:
+ (test3): Remove test of feature that is not implemented yet.
+
+2006-08-17 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DropTargetDropEvent/Constructors.java:
+ New test.
+
+2006-08-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Calendar/getInstance.java: New test,
+ * gnu/testlet/java/util/Calendar/setTime.java: Likewise.
+
+2006-08-16 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java: Removed debug statement.
+
+2006-08-16 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/security/Engine/getInstance.java: Fixed Uses tag.
+
+2006-08-16 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (processFolder): Look for "Uses" tag and "not-a-test" tag and handle
+ them appropriately.
+ (processSingleTest): Likewise.
+
+2006-08-16 Ito Kazumitsu <kaz@maczuka.gcd.org>
+ * gnu/testlet/java/util/regex/Matcher/hitEnd.java: New test.
+
+2006-08-15 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/ColorConvertOp/constructors.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/filterRaster.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/ColorConvertOp/getPoint2D.java:
+ New tests.
+
+2006-08-13 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DropTargetDragEvent/Constructors.java:
+ New Test.
+
+2006-08-13 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DnDTest.java:
+ (MouseThread.run): Reformatted and set unsuccessful
+ field to true in catch-block.
+
+2006-08-15 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/util/Vector/removeAll.java: New test.
+ * gnu/testlet/java/util/Vector/retainAll.java: New test.
+
+2006-08-13 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DnDTest.java:
+ Added more fields
+ (test): Added more checks.
+ (actionPerformed): Set appropriate field to true;
+ (dragExit): Likewise.
+ (dropActionChanged): Likewise.
+ (dragExit): Likewise.
+ (dropActionChanged): Likewise.
+
+2006-08-13 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/TestOfPR28678.java (FakeProvider): Added
+ a CertStore mapping.
+ (testCertStore): New method.
+ (test): Call method above.
+
+2006-08-13 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/TestOfPR28678.java: New test.
+
+2006-08-11 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java
+ (colorModelTest): New method.
+ (simpleTest): New method.
+ (test): Added more tests and split into two methods.
+ * gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestRaster.java:
+ New file.
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java
+ (test): Removed a bad test.
+ (testDefaults): Added more tests.
+ (testTransform): Removed.
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java
+ (test): Removed a bad test.
+ (testDefaults): Added more tests.
+ (testTransform): Removed.
+ * gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java
+ (testIdentity): Added more tests.
+ * gnu/testlet/java/awt/image/BandCombineOp/constructors.java
+ (basicTest): New method.
+ (emptyMatrix): New method.
+ (invalidMatrix): New method.
+ (test): Added more tests and split into multiple methods.
+ * gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java:
+ (basicTest): New method.
+ (impossibleTets): New method.
+ (test): Added more tests and split into multiple methods.
+ (test2): New method.
+ (test3): New method.
+
+2006-08-11 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/HttpURLConnection/reuseConnection.java: New
+ test.
+
+2006-08-11 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java: Rewrote.
+ * gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java (test):
+ Rewrote to use new TestHttpServer.
+ (Factory): New inner class.
+ (Handler): New inner class.
+ (test_ResponseCode): Use new server.
+ * gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java
+ (test): Rewrote to use new TestHttpServer.
+ (Factory): New inner class.
+ (Handler): New inner class.
+ (test_MultiHeaders): Use new server.
+ (test_LowerUpperCaseHeaders): Use new server.
+
+2006-08-10 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DropTargetContext/DropTargetContextTest.java:
+ New test.
+
+2006-08-10 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DragSourceContext/Constructor.java:
+ New test.
+
+2006-08-09 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/28658:
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test): Added
+ regression test.
+
+2006-08-08 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DnDTest.java
+ (doDnD): Removed FIXME.
+
+2006-08-08 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DnDTest.java: New test.
+
+2006-08-06 C. Scott Marshall <csm@gnu.org>
+
+ * gnu/testlet/java/nio/ByteBuffer/TestAllocateDirect.java: new test.
+
+2006-08-06 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/math/BigInteger/ctor.java (testCtorIntRandom): New method.
+ (test): Call the above method.
+
+2006-08-06 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/math/BigInteger/TestOfPR27372.java: New test.
+
+2006-08-06 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/math/BigInteger/ctor.java: New test.
+
+2006-08-04 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * RunnerProcess.java:
+ (getStackTraceString): Return the first line number in the stack trace
+ that is in the Mauve test file that was run.
+ (exceptionDetails): Likewise.
+
+2006-08-03 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/cbrt.java
+ * gnu/testlet/java/lang/StrictMath/cosh.java
+ * gnu/testlet/java/lang/StrictMath/expm1.java
+ * gnu/testlet/java/lang/StrictMath/sinh.java
+ * gnu/testlet/java/lang/StrictMath/tanh.java
+ (NaNValues): New field.
+ (testInputValues): New method.
+ (testNaNValues): New method.
+ (test): call testInputValues and testNaNValues.
+
+2006-08-03 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/AffineTransformOp/constructors.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/constructors.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/filter.java,
+ * gnu/testlet/java/awt/image/BandComgineOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java:
+ Fixed GPL notice.
+
+2006-08-02 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/dnd/DragSource/Constructors.java,
+ * gnu/testlet/java/awt/dnd/DragSource/CreateDragGestureRecognizerTest.java,
+ * gnu/testlet/java/awt/dnd/DragSource/FlavourMapTest.java,
+ * gnu/testlet/java/awt/dnd/DragSource/getDragThresholdTest.java,
+ * gnu/testlet/java/awt/dnd/DragSource/isDragImageSupportedTest.java,
+ * gnu/testlet/java/awt/dnd/DropTarget/Constructors.java:
+ New tests.
+
+2006-08-02 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/tanh.java: Fixed comment.
+ * gnu/testlet/java/lang/StrictMath/cosh.java: Likewise.
+ * gnu/testlet/java/lang/StrictMath/sinh.java: Likewise.
+ * gnu/testlet/java/lang/StrictMath/expm1.java: Likewise.
+
+2006-08-02 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/java/awt/image/AffineTransformOp/constructors.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/constructors.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/filter.java,
+ * gnu/testlet/java/awt/image/BandComgineOp/getBounds2D.java,
+ * gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java:
+ New tests.
+
+2006-08-02 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/tanh.java: New test.
+
+2006-08-02 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/security/SecureRandom/TestOfPR23899.java: New test.
+
+2006-08-02 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java: Removed unused
+ imports.
+
+2006-08-02 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java: New test.
+
+2006-08-01 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/propertyChange.java:
+ New test.
+
+2006-08-01 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Choice/remove.java: New test.
+
+2006-08-01 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTree/getCellRenderer.java:
+ New test.
+
+2006-07-30 Casey Marshall <csm@gnu.org>
+
+ * gnu/testlet/javax/net/ssl/SSLContext/TestDefaultInit.java,
+ * gnu/testlet/javax/net/ssl/SSLContext/TestGetInstance.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/AbstractEngineTest.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/SimplePSKKeyManager.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509KeyManager.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509TrustManager.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java,
+ * gnu/testlet/javax/net/ssl/SSLEngine/TestNoProtocols.java:
+ New tests.
+
+2006-07-30 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/GregorianCalendar/setWeekOfMonth.java:
+ New test.
+
+2006-07-30 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/security/Engine/getInstance.java (testNameRedundancy):
+ New method.
+ (test): Call new method.
+
+2006-07-29 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/sinh.java: New test.
+
+2006-07-28 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/List/testSelected.java: Added more checks.
+
+2006-07-28 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/security/AccessController/contexts.java
+ (copyClass): Copy inner classes too.
+ (callListJarsOf, callPrivilegedListJarsOf): New methods.
+ (test): Extend to test AccessController.doPrivileged().
+
+2006-07-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java:
+ Removed debug output.
+ * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndex.java:
+ New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java:
+ Changed tests to do check(x, y) rather than check(x == y), so
+ that the wrong value gets recognized by Mauve.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java
+ (testNewlines2): New test.
+ * gnu/testlet/javax/swing/text/FlowView/FlowStrategy/TestView.java:
+ New helper class.
+ * gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java:
+ New test.
+ * gnu/testlet/javax/swing/text/FlowView/TestFlowView.java:
+ Fixed.
+ * gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java:
+ Fixed test.
+ * gnu/testlet/javax/swing/text/Utilities/getBreakLocation.java:
+ New test.
+ * gnu/testlet/javax/swing/text/View/getMaximumSpan.java:
+ Added comment.
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java:
+ Fixed test.
+
+2006-07-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/getLocationOnScreen.java:
+ New test.
+
+2006-07-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/KeyboardFocusManager/TestKeyboardFocusManager.java,
+ * gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java,
+ * gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java,
+ * gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java:
+ New tests.
+
+2006-07-28 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * Harness.java (MAUVE): New constant.
+ (MAUVE_GNU_TESTLET): Likewise.
+ (startingFormat): Handle selection from Eclipse Package Explorer.
+ * .externalToolBuilders/Mauve Harness.launch: New Eclipse launcher.
+
+2006-07-28 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test): Added new
+ test 'testMaximumDigits'.
+ (testMaximumDigits): New test for some configuration of
+ setMaximumIntegerDigits and setMaximumFractionDigits.
+
+2006-07-27 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/28486:
+ * gnu/testlet/java/net/URL/URLTest.java (test_Basics): Added 'equals'
+ test.
+
+2006-07-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * RunnerProcess.java:
+ (exceptionDetails): Line number doesn't need to come from the test()
+ method, removed that "if".
+
+2006-07-26 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java (TimeoutWatcher.run): Keep track of timeout wait
+ time left.
+
+2006-07-25 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/JTabbedPane/remove.java: New test.
+
+2006-07-25 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/List/testSelected.java: New file.
+
+2006-07-25 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java: Remove all trailing chars from FAIL output.
+ * RunnerProcess.java: Likewise.
+
+2006-07-25 Casey Marshall <csm@gnu.org>
+
+ Import free PKITS test and test files.
+ New files in gnu/testlet/java/security/cert/pkix/pkits. Too many
+ files to include here.
+ * README.PKITS: new file.
+
+2006-07-25 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/security/AccessController/contexts.java: New test.
+
+2006-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/TabSet/constructor.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/equals.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/getTab.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/getTabCount.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/getTabIndex.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/getTabIndexAfter.java: New test,
+ * gnu/testlet/javax/swing/text/TabSet/toString.java: New test,
+ * gnu/testlet/javax/swing/text/TabStop/constructor.java: New test,
+ * gnu/testlet/javax/swing/text/TabStop/toString.java: New test.
+
+2006-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/properties.java
+ (test): 'name' property should fire an event.
+
+2006-07-23 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/javax/swing/JSpinner/constructors.java:
+ Remove println.
+ * gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java:
+ Likewise.
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java:
+ Add extra debug output on exception.
+
+2006-07-24 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/cosh.java: New test.
+ * gnu/testlet/java/lang/StrictMath/cbrt.java
+ (main): New method.
+
+2006-07-24 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfPR27228.java: New test.
+
+2006-07-24 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java: class reformatted.
+ (test): added two new tests: testNaN and testInfinity.
+ (testInfinity): new test.
+ (testNaN): new test.
+
+2006-07-23 Casey Marshall <csm@gnu.org>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test): call
+ `testBigInteger' too.
+ (testBigInteger): new method.
+
+2006-07-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/Kernel/constructor.java
+ (test): Allow IllegalArgumentException for null width or height.
+
+2006-07-22 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/expm1.java: New test.
+
+2006-07-22 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/util/TestOfIntegerUtil.java: New test.
+
+2006-07-22 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/cipher/TestOfTripleDES.java (E_TV): Re-wrote
+ to show the individual DES keys dependency.
+ (D_TV): Likewise.
+ (attributes): New field.
+ (des1KeyTest): New method.
+ (des2KeyTest): Likewise.
+ (test): Call above two methods.
+ (encryptTest): Likewise.
+ (decryptTest): Likewise.
+ (vectorsTest): Re-factored to use above new (refactored) methods.
+
+2006-07-21 David Gilbert <david.gilbet@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/Kernel/constructor.java: New test,
+ * gnu/testlet/java/awt/image/Kernel/getHeight.java: New test,
+ * gnu/testlet/java/awt/image/Kernel/getKernelData.java: New test,
+ * gnu/testlet/java/awt/image/Kernel/getWidth.java: New test,
+ * gnu/testlet/java/awt/image/Kernel/getXOrigin.java: New test,
+ * gnu/testlet/java/awt/image/Kernel/getYOrigin.java: New test.
+
+2006-07-20 Carsten Neumann <cn-develop@gmx.net>
+
+ * gnu/testlet/java/lang/StrictMath/cbrt.java: New test.
+
+2006-07-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ConvolveOp/filter.java: New test,
+ * gnu/testlet/java/awt/image/ConvolveOp/getBounds2D.java: New test,
+ * gnu/testlet/java/awt/image/ConvolveOp/getEdgeCondition.java: New test,
+ * gnu/testlet/java/awt/image/ConvolveOp/getPoint2D.java: New test,
+ * gnu/testlet/java/awt/image/ConvolveOp/getRenderingHints.java: New test.
+
+2006-07-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java
+ (testConstructor2): Added checks,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java
+ (testMethod1): Restore IllegalArgumentException checks.
+
+2006-07-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ComponentSampleModel/createCompatibleSampleModel.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/createSubsetSampleModel.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getBandOffsets.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getDataElements.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getNumDataElements.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getPixels.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getPixelStride.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getSamples.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getSampleSize.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getScanlineStride.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/setDataElements.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/setPixel.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/setPixels.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/setSample.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/setSamples.java: New file.
+
+2006-07-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java: Changed
+ tag to 'not-a-test'.
+
+2006-07-18 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/javax/swing/JComboBox/ComboRobot.java
+ (testCombo): Added parameter for editable comboboxes
+ (test): Added iteration for editable comboboxes.
+
+2006-07-18 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/javax/swing/JComboBox/ComboRobot.java: organized
+ imports
+ (combo): Added item to combo box.
+ (testCombo): Added additional tests for key selector.
+
+2006-07-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ByteLookupTable/constructors.java: New test,
+ * gnu/testlet/java/awt/image/ByteLookupTable/getTable.java: New test,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java
+ (testDefensiveCopies): Check m2 not m,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java
+ (test): Call new methods,
+ (testSingleBand): New method,
+ (testMultiBand): New method,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getOffset.java: New test,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java: New test,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getSample.java: New test,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getSampleDouble.java: New test,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/getSampleFloat.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/constructor.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/getBounds2D.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/getPoint2D.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/getRenderingHints.java: New test,
+ * gnu/testlet/java/awt/image/LookupOp/getTable.java: New test,
+ * gnu/testlet/java/awt/image/LookupTable/constructor.java: New test,
+ * gnu/testlet/java/awt/image/LookupTable/getNumComponents.java: New test,
+ * gnu/testlet/java/awt/image/LookupTable/getOffset.java: New test,
+ * gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java: New class,
+ * gnu/testlet/java/awt/image/ShortLookupTable/constructors.java: New test,
+ * gnu/testlet/java/awt/image/ShortLookupTable/getTable.java: New test.
+
+2006-07-18 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java: Fix deleteOnExit test.
+
+2006-07-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java: New file
+ * gnu/testlet/java/awt/image/ComponentSampleModel/equals.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/hashCode.java: New file,
+ * gnu/testlet/java/awt/image/ComponentSampleModel/MyComponentSampleModel.java: New file.
+
+2006-07-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java
+ (test): Added new checks,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java
+ (test): Call new test methods,
+ (testBadTransferArray): New method,
+ (testNullTransferArray): New method,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java
+ (test): Call new test methods,
+ (testTYPE_USHORT): New method,
+ (testTYPE_BYTE): New method,
+ * gnu/testlet/java/awt/image/SampleModel/getPixel.java
+ (testMethod1): Add new checks,
+ * gnu/testlet/java/awt/image/SampleModel/getPixels.java
+ (test): Call new test method,
+ (testMethod1MultiPixelPackedSampleModel): New method,
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel.java
+ (test2): Added new check.
+
+2006-07-16 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java (runTest): Just reset runner_watcher.
+ (TimerWatcher.started): New boolean field.
+ (TimerWatcher.start): Removed method.
+ (TimerWatcher.isAlive): Removed method.
+ (reset): Start Thread if not yet started.
+
+2006-07-16 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherWrapUnwrap.java: New test.
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfTripleDESParityAdjustment.java:
+ Likewise.
+
+2006-07-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataElements.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java: New test.
+
+2006-07-14 Matt Wringe <mwringe@redhat.com>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java
+ (testInitWithIVParameterSpec): Properly fail when expected
+ exception does not occur.
+
+2006-07-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createSubsetSampleModel.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataBitOffset.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getOffset.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixel.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixelBitStride.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSample.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSampleSize.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getScanlineStride.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getTransferType.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/hashCode.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setPixel.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java: New test.
+
+2006-07-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createDataBuffer.java
+ (test): Added new checks.
+
+2006-07-14 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java: Remove dummy mayCheck stuff.
+
+2006-07-14 raif <raif@solomon.tng.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/kwa/TestOfAESKeyWrap.java: New test.
+ * gnu/testlet/gnu/javax/crypto/kwa/TestOfTripleDESKeyWrap.java: Likewise.
+
+2006-07-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/MultiPixelPackedSample/constructors.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSample/createCompatibleSampleModel.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSample/createDataBuffer.java: New test,
+ * gnu/testlet/java/awt/image/MultiPixelPackedSample/equals.java: New test.
+
+2006-07-13 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/Create.java:
+ New test.
+
+2006-07-13 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/Insert.java:
+ New test.
+
+2006-07-13 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/Component/invalidate.java
+ (test2): Added new test.
+
+2006-07-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java
+ (test): Moved existing test code to test1(), now calls test1() and
+ test2();
+ (test1): New method,
+ (test2): New method.
+
+2006-07-13 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/text/html/HTMLDocument/FindById.java:
+ New test.
+
+2006-07-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/SampleModel/createDataBuffer.java:
+ New file,
+ * gnu/testlet/java/awt/image/SampleModel/getPixel.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getPixels.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getSample.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getSampleDouble.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getSampleFloat.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getSamples.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/getSampleSize.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/setPixel.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/setPixels.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/setSample.java: Likewise,
+ * gnu/testlet/java/awt/image/SampleModel/setSamples.java: Likewise.
+
+2006-07-11 Matt Wringe <mwringe@redhat.com>
+
+ * gnu/testlet/javax/crypto/spec/TestOfSecretKeySpec.java: New file.
+
+2006-07-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/setColumnSelectionAllowed.java: New test,
+ * gnu/testlet/javax/swing/JTable/setRowSelectionAllowed.java: Likewise.
+
+2006-07-11 Matt Wringe <mwringe@redhat.com>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java
+ (testInitWithIVParameterSpec): New test.
+
+2006-07-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultBoundedRangeModel/DefaultBoundedRangeModel.java:
+ Renamed general.java,
+ * gnu/testlet/javax/swing/DefaultBoundedRangeModel/general.java:
+ New file,
+ * gnu/testlet/javax/swing/DefaultBoundedRangeModel/serialization.java:
+ New file.
+
+2006-07-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/ButtonGroup/add.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/constructor.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/getButtonCount.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/getElements.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/getSelection.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/isSelected.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/remove.java: New file,
+ * gnu/testlet/javax/swing/ButtonGroup/setSelected.java: New file.
+
+2006-07-11 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager.java: Add new "enabled" flag.
+ (install): Disable self before setting security manager.
+ (uninstall): Likewise.
+ (prepareChecks): Enable self after preparing checks.
+ (checkPermission): Don't check unless enabled, and disable self
+ before throwing exceptions.
+ (checkAllChecked): Disable self before checking.
+
+2006-07-11 Gary Benson <gbenson@redhat.com>
+
+ * configure.in: Reinstated SRCDIR.
+ * configure: Regenerated.
+
+2006-07-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/BufferedImage/constructors.java: New file.
+
+2006-07-10 Matt Wringe <mwringe@redhat.com>
+
+ * gnu/testlet/java/security/Engine/getInstance.java
+ (testAlgorithmCase): New Test. Tests algorithm name case insensitivity.
+
+2006-07-10 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractButton/setHorizontalTextPosition.java: New file,
+ * gnu/testlet/javax/swing/AbstractButton/setVerticalTextPosition.java: New file,
+ * gnu/testlet/javax/swing/Timer/setDelay.java: New file,
+ * gnu/testlet/javax/swing/Timer/setInitialDelay.java: New file,
+ * gnu/testlet/javax/swing/ToolTipManager/setDismissDelay.java: New file,
+ * gnu/testlet/javax/swing/ToolTipManager/setInitialDelay.java: New file,
+ * gnu/testlet/javax/swing/ToolTipManager/setReshowDelay.java: New file.
+
+2006-07-07 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/testName.java: New test.
+
+2006-07-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractButton/setHorizontalAlignment.java: New test,
+ * gnu/testlet/javax/swing/AbstractButton/setVerticalAlignment.java: New test.
+
+2006-07-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractButton/setRolloverIcon.java: New test,
+ * gnu/testlet/javax/swing/AbstractButton/setRolloverSelectedIcon.java: Likewise.
+
+2006-07-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java
+ (test): Check modification of return value,
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java
+ (test): Likewise.
+
+2006-07-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Container/setLayout.java: New file.
+
+2006-07-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/setFont.java: New file.
+ * gnu/testlet/java/awt/Component/isValid.java: New file.
+
+2006-06-23 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected2.java
+ (test): Make sure the internal frame is showing, otherwise
+ setSelected doesn't work on JDK5. Fixed some tests to
+ PASS with JDK5.
+
+2006-07-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java
+ (test): Add check for UIResource,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java
+ (test): Add check for UIResource, change test for cached result,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java
+ (test): Add check for UIResource,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java
+ (test): Add check for UIResource, change test for cached result.
+
+2006-07-07 Matt Wringe <mwringe@redhat.com>
+
+ * gnu/testlet/javax/crypto/spec/TestOfPBEKeySpec.java: New test.
+
+2006-07-06 Audrius Meskauskas <AudriusA@Bioinformatics.or
+
+ * gnu/testlet/java/rmi/server/UID/Uniqueness.java: New test.
+
+2006-07-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (ErrorStreamPrinter.run): If the readLine() returns null restart the
+ error stream printer.
+
+2006-07-05 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/InputMap/allKeys.java: New test,
+ * gnu/testlet/javax/swing/InputMap/clear.java: New test,
+ * gnu/testlet/javax/swing/InputMap/constructor.java: New test,
+ * gnu/testlet/javax/swing/InputMap/get.java: New test,
+ * gnu/testlet/javax/swing/InputMap/getParent.java: New test,
+ * gnu/testlet/javax/swing/InputMap/keys.java: New test,
+ * gnu/testlet/javax/swing/InputMap/put.java: New test,
+ * gnu/testlet/javax/swing/InputMap/remove.java: New test,
+ * gnu/testlet/javax/swing/InputMap/setParent.java: New test,
+ * gnu/testlet/javax/swing/InputMap/size.java: New test.
+
+2006-07-05 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/JTable/TableRobot.java
+ (vTestArrowKeyNavigation): New test case.
+ (testTable): Call vTestArrowKeyNavigation.
+
+2006-07-04 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (runner_in_err): Removed this field.
+ (runner_esp): New field.
+ (restartESP): New field.
+ (finalize): Removed reference to runner_in_err.
+ (initProcess): Removed reference to runner_in_err and created a new
+ ErrorStreamPrinter.
+ (runTest): Restart the ErrorStreamPrinter if an IOException was caught
+ during the last test run.
+ (ErrorStreamPrinter): New class.
+
+2006-07-04 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/JComboBox/ComboRobot.java: New test.
+
+2006-07-04 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/JTable/TableRobot.java: Added GUI tag.
+ * gnu/testlet/javax/swing/JTree/TreeRobot.java: New test.
+
+2006-07-04 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/JTable/TableRobot.java: New test.
+
+2006-06-30 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java (initProcess): Initialize TimeoutWatcher with
+ runnerProcess.
+ (runAllTests): Treat IOException as timeout.
+ (TimeoutWatcher.runnerProcess): New field.
+ (TimeoutWatcher.run): Close streams of runnerProcess.
+
+2006-06-30 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/java/awt/TextArea/testAppendText.java: New test.
+ * gnu/testlet/java/awt/TextArea/testInsertText.java: New test.
+ * gnu/testlet/java/awt/TextArea/testInvalidConstructorValues: New test.
+ * gnu/testlet/java/awt/TextArea/testReplaceText.java : New test.
+
+2006-06-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/TextArea/constructors.java
+ (test): Call testConstructor5().
+
+2006-06-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/TextArea/constructors.java: New test,
+ * gnu/testlet/java/awt/TextField/constructors.java: New test.
+
+2006-06-29 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java,
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java,
+ * gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java,
+ * gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java,
+ * gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnumHelper.java,
+ * gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardPOA.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerPOA.java,
+ * gnu/testlet/org/omg/PortableServer/POA/TestPOA.java,
+ * gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserExceptionHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java,
+ * gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlHelper.java,
+ * gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlPOA.java:
+ Marked as not-a-test.
+
+2006-06-29 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * RunnerProcess.java:
+ (runtest): Check if the class is abstract (and therefore not a test)
+ and mark it as NOT_A_TEST_DESCRIPTION if so.
+
+2006-06-29 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JMenuBar/getActionMap.java: New test,
+ * gnu/testlet/javax/swing/JMenuBar/getHelpMenu.java: New test,
+ * gnu/testlet/javax/swing/JMenuBar/setHelpMenu.java: New test,
+ * gnu/testlet/javax/swing/JMenuBar/setMargin.java: New test.
+
+2006-06-29 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getActionForKeyStroke.java: New test,
+ * gnu/testlet/javax/swing/JComponent/getRegisteredKeyStrokes.java: New test,
+ * gnu/testlet/javax/swing/JComponent/registerKeyboardAction.java: New test,
+ * gnu/testlet/javax/swing/JComponent/setDefaultLocale.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getVerifyInputWhenFocusTarget.java: New test,
+ * gnu/testlet/javax/swing/JComponent/setVerifyInputWhenFocusTarget.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/beans/VetoableChangeSupport/addVetoableChangeListener.java: New test,
+ * gnu/testlet/javax/swing/JComponent/addVetoableChangeListener.java: New test,
+ * gnu/testlet/javax/swing/JComponent/getListeners.java
+ (MyVetoableChangeListener): New inner class,
+ (test): Extended to check for VetoableChangeListeners,
+ * gnu/testlet/javax/swing/JComponent/getVetoableChangeListener.java: New test,
+ * gnu/testlet/javax/swing/JComponent/removeVetoableChangeListener.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getComponentPopupMenu.java: New test,
+ * gnu/testlet/javax/swing/JComponent/setComponentPopupMenu.java: New test,
+ * gnu/testlet/javax/swing/JComponent/setInheritsPopupMenu.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/setMaximumSize.java: New test,
+ * gnu/testlet/java/awt/Component/setMinimumSize.java: New test,
+ * gnu/testlet/java/awt/Component/setPreferredSize.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollBar/getActionMap.java: New test,
+ * gnu/testlet/javax/swing/JSplitPane/getActionMap.java: New test.
+
+2006-06-28 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement2.java: New test.
+
+2006-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java
+ (test): Check that no listeners are added to the column,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java
+ (test): Call new test methods,
+ (testGeneral): Code from original test method,
+ (testChangeEventInitialization): Checks for initialization of
+ changeEvent,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java
+ (test): Add checks for bad arguments,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnSelectionAllowed:
+ Minor reformat,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/getTotalColumnWidth.java:
+ New test,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyDefaultTableColumnModel.java:
+ New support class,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java
+ (test): Add a check for column not in model,
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/setSelectionModel.java
+ (test): Added new listener checks.
+
+2006-06-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (bcp_timeout): Removed this field.
+ (testIsHung): Likewise.
+ (runner_lock): Likewise.
+ (getClasspathInstallString): Return an empty string instead of null
+ when no bootclasspath is detected.
+ (getBootClassPath): Removed the TimeoutWatcher and replaced the busy
+ waiting with a blocking readLine().
+ (finalize): Moved runnerProcess.destroy() to before the closing of the
+ io pipes.
+ (runTest): Redesigned to replace busy waiting with blocking readLine()
+ call.
+ (TimeoutWatcher.run): If the timeout occurs, kill the RunnerProcess and
+ restart it instead of notifying the Harness and letting the Harness do
+ the work.
+ (DetectBootclasspath.main): If the bootclasspath isn't detectable,
+ return a String saying so.
+ * RunnerProcess.java:
+ (FAILED_TO_LOAD_DESCRIPTION): New field.
+ (UNCAUGHT_EXCEPTION_DESCRIPTION): Likewise.
+ (main): If the testname is null, call System.exit.
+ (runtest): Set the description earlier to avoid NPE. Handle loading
+ exceptions and uncaught exceptions better.
+ (runAndReport): Handle loading exceptions and uncaught exceptions.
+
+2006-06-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Makefile.am: Removed reference to
+ gnu/testlet/TestSecurityManager2.java which no longer exists.
+ * Makefile.in: Regenerated.
+
+2006-06-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Point/setLocation.java
+ (test): Added new checks.
+
+2006-06-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/setName.java: New test.
+
+2006-06-27 Gary Benson <gbenson@redhat.com>
+
+ * RunnerProcess.java (removeSecurityManager): Updated.
+
+2006-06-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager.java: Replaced with a
+ refactored, javadocced version of what was TestSecurityManager2.
+ * gnu/testlet/java/awt/Graphics2D/security.java: Use the above.
+ * gnu/testlet/java/awt/Robot/security.java: Likewise.
+ * gnu/testlet/java/awt/Toolkit/security.java: Likewise.
+ * gnu/testlet/java/awt/Window/security.java: Likewise.
+ * gnu/testlet/java/io/File/security.java: Likewise.
+ * gnu/testlet/java/io/FileInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/RandomAccessFile/security.java: Likewise.
+ * gnu/testlet/java/lang/Class/security.java: Likewise.
+ * gnu/testlet/java/lang/ClassLoader/security.java: Likewise.
+ * gnu/testlet/java/lang/Runtime/security.java: Likewise.
+ * gnu/testlet/java/lang/SecurityManager/thread.java: Likewise.
+ * gnu/testlet/java/lang/System/security.java: Likewise.
+ * gnu/testlet/java/lang/Thread/insecurity.java: Likewise.
+ * gnu/testlet/java/lang/Thread/security.java: Likewise.
+ * gnu/testlet/java/lang/ThreadGroup/insecurity.java: Likewise.
+ * gnu/testlet/java/lang/ThreadGroup/security.java: Likewise.
+ * gnu/testlet/java/lang/reflect/AccessibleObject/security.java:
+ Likewise.
+ * gnu/testlet/TestSecurityManager2.java: Removed.
+
+2006-06-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Runtime/security.java: Classpath now
+ also checks modifyThreadGroup on thread creation.
+
+2006-06-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/insecurity.java: Minor fix.
+
+2006-06-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/ThreadGroup/insecurity.java:
+ Removed some unused stuff.
+
+2006-06-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/setComponentOrientation.java:
+ New test,
+ * gnu/testlet/java/awt/Container/applyComponentOrientation.java:
+ New test.
+
+2006-06-26 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/getNextMatch.java: New test.
+
+2006-06-26 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/setValueIsAdjusting.java: New test,
+ * gnu/testlet/javax/swing/JList/setVisibleRowCount.java: New test.
+
+2006-06-26 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicHTML/isHTMLString.java:
+ New test.
+
+2006-06-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/rmi/CORBA/Tie/RMI_test.java: Marked not-a-test.
+ * gnu/testlet/javax/xml/parsers/DocumentBuilder/Verifyer.java:
+ Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java:
+ Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/B.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java: Likewise.
+ * gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java:
+ Likewise.
+ * gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java:
+ Likewise.
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java: Likewise.
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java:
+ Likewise.
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java:
+ Likewise.
+ * gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/Test.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestDSIRef_impl.java:
+ Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestDSI_impl.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForward.java:
+ Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardActivator_impl.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardOperations.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServer.java:Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerMain.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerOperations.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestLocationForward_impl.java:
+ Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestOperations.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/TestUtil.java: Likewise.
+ * gnu/testlet/org/omg/PortableServer/POA/Test_impl.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTester.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterOperations.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl.java: Likewise.
+ *
+gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlOperations.java: Likewise.
+ * gnu/testlet/runner/CheckResult.java: Likewise.
+ * gnu/testlet/runner/ClassResult.java: Likewise.
+ * gnu/testlet/runner/PackageResult.java: Likewise.
+ * gnu/testlet/runner/RunResult.java: Likewise.
+ * gnu/testlet/runner/Tags.java: Likewise.
+ * gnu/testlet/runner/TestResult.java: Likewise.
+ * gnu/testlet/runner/XMLGenerator.java: Likewise.
+
+
+2006-06-26 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/setLayoutOrientation.java: New test.
+
+2006-06-26 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileInputStream/security.java: Minor tweaks.
+
+2006-06-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: Add checks for
+ interface, abstract, primitive and void classes.
+
+2006-06-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java:
+ New test to ensure security of setVerbose is maintained.
+
+2006-06-24 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/management/BadGuy.java:
+ Restrictive security manager used for testing
+ the management beans.
+ * gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java,
+ * gnu/testlet/java/lang/management/RuntimeMxBeanTest.java:
+ New tests for the management beans.
+ * gnu/testlet/java/util/logging/LoggingMXBean.java:
+ Test the logging bean.
+
+2006-06-24 Mark Wielaard <mark@klomp.org>
+
+ * Harness.java (getBootClassPath): Add Thread.sleep().
+ (runTest): Likewise.
+
+2006-06-22 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (runTest): If the RunnerProcess cannot be instantiated, print the
+ message to stderr not stdout.
+ (getBootClassPath): If the bootclasspath cannot be detected, print the
+ message to stderr not stdout.
+
+2006-06-22 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (runner_in_err): New field.
+ (getBootClassPath): Use the vmArgs when forking the detector.
+ (finalize): Close the pipe to the RunnerProcess' error stream.
+ (initProcess): Set up the pipe to the RunnerProcess' error stream.
+ Stop the watcher after confirming startup.
+ (runTest): Collect error stream output from the RunnerProcess in a
+ StringBuffer and print it when there's no new regular output from the
+ test. Also print it after the test has completed.
+
+2006-06-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/getActionMap.java: New file,
+ * gnu/testlet/javax/swing/JLabel/getInputMap.java
+ (testMethod2): Added new checks,
+ * gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java
+ (testKeyMap): New method,
+ * gnu/testlet/javax/swing/JLabel/setFont.java: New file,
+ * gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java: New file,
+ * gnu/testlet/javax/swing/JLabel/setIconTextGap.java: New file,
+ * gnu/testlet/javax/swing/JLabel/setText.java
+ (events): New field,
+ (propertyChange): New method,
+ (testGeneral): New method,
+ (testGeneralWithMnemonic): New method,
+ * gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java: New file.
+
+2006-06-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/CheckboxGroup/testGroup.java: Fixed Tag,
+ removed FIXME.
+
+2006-06-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/CheckboxGroup/testGroup.java: New test.
+
+2006-06-22 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
+ (test02): New test method.
+ (test03): New test method.
+ (test04): New test method.
+
+2006-06-22 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/getDocumentProperties.java:
+ New test class.
+ * gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java:
+ New test class.
+ * gnu/testlet/javax/swing/text/AbstractDocument/TestAbstractDocument.java:
+ New auxiliary class.
+
+2006-06-22 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
+ New test class.
+
+2006-06-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java:
+ (displayedMnemonicWhenEventFired): New field,
+ (propertyChange): Record mnemonic value at time of event,
+ (testMethod1): Check mnemonic at event time,
+ (testMethod2): Added new checks,
+ * gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java:
+ (propertyChange): Only record index for a specific event,
+ (test): Added new checks.
+
+2006-06-22 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java:
+ New test,
+ * gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java:
+ New test.
+
+2006-06-21 neugens <neugens@limasoftware.net>
+
+ * gnu/testlet/java/util/prefs/PreferenceTest.java (testBoolean): new
+ test method.
+ (test): call to enable new test.
+
+2006-06-21 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * README: Added info about new -vmarg option for the Harness.
+ * Harness.java:
+ (vmArgs): New field.
+ (main): Handle new -vmarg option.
+ (initProcess): Concatenate the vmArgs to the vmCommand before running
+ exec.
+
+2006-06-21 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Removed this file.
+
+2006-06-21 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/AccessibleObject/security.java: New test.
+
+2006-06-21 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Graphics2D/security.java: New test.
+
+2006-06-20 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URLStreamHandler/Except.java: New file.
+
+2006-06-20 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JMenu/remove.java: New test.
+
+2006-06-20 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JMenu/getPopUpMenu.java: New test.
+
+2006-06-20 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JMenu/constructors.java: New test.
+
+2006-06-20 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Toolkit/security.java: New test.
+
+2006-06-19 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * RunnerProcess.java:
+ (lastFailureMessage): New field.
+ (runtest): Strip the "gnu.testlet" from the name passed to the
+ TestResult. Also use the new 3 parameter TestResult.addException to
+ pass the stack trace to the TestResult. Properly indent the stack
+ trace when printing exception details.
+ (getStackTraceString): New method.
+ (fail): Get the description from check2 and add the full failure
+ string to the TestResult.
+ (check(Object, Object)): Likewise.
+ (check(boolean, boolean)): Likewise.
+ (check(int, int)): Likewise.
+ (check(long, long)): Likewise.
+ (check(boolean)): Likewise.
+ (check2): Return the description. Do not add the failure description
+ to the TestResult here, do it in the individual check() methods so that
+ a full description can be added. Use the new TestResult.addPass(String)
+ method instead of the old no argument method.
+ * TestReport.java:
+ (writeXML): Do not write the passCount value, write the passes as well
+ as the fails, and write the stack traces for exceptions. Properly
+ indent the xml.
+ * TestResult.java:
+ (passCount): Removed this field.
+ (passMessages): New field.
+ (exceptionReason): New field.
+ (addPass): Now takes in a String argument, acts just like addFail().
+ Descriptions are taken in for passes as well as fails.
+ (addException): Now takes 3 arguments instead of 2, the new argument is
+ the stack trace for the exception.
+ (getPassCount): Returns the size of the passMessages ArrayList.
+ (getPassMessages): New method.
+ (getExceptionReason): Likewise.
+
+2006-06-19 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (total_check_fails): New field.
+ (main): Print a summary even if only one test failed. Include the
+ total number of failing check() calls in the summary.
+ (runTest): When a test fails, increment total_check_fails by the
+ number of checks in that test that failed, which is passed back from
+ the RunnerProcess.
+ * RunnerProcess.java:
+ (main): If a test fails to load, report the failure and count 0 total
+ check() fails.
+ (runAndReport): When a test fails, report the number of calls to
+ check() that failed.
+ (done): If the test failed, return the number of calls to check()
+ that failed.
+
+2006-06-19 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (getBootclasspath): When the auto detector returns, stop the timeout
+ watcher.
+ (printHelpMessage): Replaced reference to old --with-test-java with the
+ correct --with-vm.
+ (initProcess): Replace the runner_watcher after confirming the startup
+ of the RunnerProcess. This way the runner_watcher will not time out
+ before the first real test is run.
+ (runTest): Added code to handle a timer reset request from the
+ RunnerProcess.
+ (TimeoutWatcher.shouldContinue): New field.
+ (TimeoutWatcher.stop): New method.
+ (TimeoutWatcher.run): Added reference to shouldContinue to allow this
+ method to be stopped.
+ * RunnerProcess.java:
+ (check2): Send a message to the Harness requesting a reset of the
+ timer.
+
+2006-06-19 Mario Torre <neugens@limasoftware.net>
+
+ * gnu/testlet/java/util/prefs: New package added.
+ * gnu/testlet/java/util/prefs/PreferenceTest.java: New test.
+
+2006-06-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/IconUIResource/constructor.java:
+ New test.
+
+2006-06-18 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * Makefile.am (harness_files): Add gnu/testlet/config.java.
+ (gnu/testlet/config.class): Remove target.
+ * Makefile.in: Regenerate.
+
+2006-06-18 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/GridBagLayout/AdjustForGravity.java: New
+ test.
+
+2006-06-18 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/util/TestOfPrime2.java: Removed.
+ * gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java:
+ Remove unused imports.
+ Use isProbablePrime() in BigInteger instead of Prime2.
+ * gnu/testlet/gnu/java/security/key/dss/TestOfDSSKeyGeneration.java: Likewise.
+ * gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java: Likewise.
+ * gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyGeneration.java: Likewise.
+ * gnu/testlet/gnu/java/security/key/rsa/TestOfRSAKeyGeneration.java: Likewise.
+
+2006-06-17 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java (input):
+ New field.
+ (testECB): Shortned the messages.
+ Use above field.
+ (testNotECB): Likewise.
+ (testInitWithParameterSpec): Added checks for non-uniformity of IVs.
+
+2006-06-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java
+ (events): New field,
+ (index0): Removed,
+ (index1): Removed,
+ (type): Removed,
+ (contentsChanged): Add event to list,
+ (intervalAdded): Likewise,
+ (intervalRemoved): Likewise,
+ (test): Updated checks to look for event or events in list.
+
+2006-06-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java
+ (lastItemEvent): New field,
+ (itemChanged): New method,
+ (test): Check for required item event.
+
+2006-06-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/ListDataEvent/constructor.java: New file,
+ * gnu/testlet/javax/swing/event/ListDataEvent/getIndex0.java: New file,
+ * gnu/testlet/javax/swing/event/ListDataEvent/getIndex1.java: New file,
+ * gnu/testlet/javax/swing/event/ListDataEvent/getSource.java: New file,
+ * gnu/testlet/javax/swing/event/ListDataEvent/getType.java: New file,
+ * gnu/testlet/javax/swing/event/ListDataEvent/toString.java: New file.
+
+2006-06-15 Vivek Lakshmanan <vivekl@redhat.com>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java
+ (testInitWithParameterSpec): More comments and look for
+ InvalidAlgorithmParameterException instead of InvalidKeyException.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JRadioButton/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JCheckBox/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JToggleButton/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JButton/constructors.java
+ (testConstructor1): Added 'focusable' test.
+ (testConstructor2): Added 'focusable' test.
+ (testConstructor4): Added 'focusable' test.
+ (testConstructor6): Added 'focusable' test.
+ (testConstructor9): Added 'focusable' test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JRadioButtonMenuItem/isFocusable.java: New test.
+
+2006-06-15 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java
+ (testConstructor1): Added 'focusable' check.
+ (testConstructor2): Added 'focusable' check.
+ (testConstructor4): Added 'focusable' check.
+ (testConstructor6): Added 'focusable' check.
+ (testConstructor8): Added 'focusable' check.
+ (testConstructor10): Added 'focusable' check.
+ (testConstructor12): Added 'focusable' check.
+
+2006-06-15 Vivek Lakshmanan <vivekl@redhat.com>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java: Add
+ proper tag information.
+ (testInitWithParameterSpec): New method.
+ (test): Add call to new test for init with null AlgorithmParameterSpec.
+
+2006-06-14 Vivek Lakshmanan <vivekl@redhat.com>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java: New test.
+
+2006-06-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Polygon/getPathIterator.java: New test.
+
+2006-06-14 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * .cvsignore: Removed .ecjOut and .ecjErr from this file.
+ * Harness.java:
+ (lastFailingCompile): New field.
+ (numCompileFailsInFolder): New field.
+ (showCompilationErrors): Removed this field.
+ (main): Removed the handling of showCompilationErrors.
+ (setupCompiler): Changed ecjWriterOut and ecjWriterErr to use custom
+ PrintWriters instead of writing to .ecjOut and .ecjErr.
+ (getClasspathInstallString): Do not look for the property in
+ config.java, the -with-bootclasspath option has been removed from
+ configuration.
+ (printHelpMessage): Changed the "exceptions" message to indicate that
+ full stack traces are now printed by default.
+ (compileFolder): Removed the code that reads the compiler output and
+ parses it, this is now done in the custom PrintWriter used by the
+ compiler.
+ (compileTest): Likewise.
+ (problemsString): Removed this method.
+ (isCompileSummary): New method.
+ (CompilerErrorWriter): New class.
+ * Makefile.am: Removed SimpleTestHarness.java from harness_files
+ target, removed references to the old harness structure, added
+ check_local and clean_local targets.
+ * Makefile.in: Regenerated.
+ * README: Mentioned that exceptions are now printed by default and
+ -noexceptions is the option to turn them off.
+ * README.OldHarness: Removed this file.
+ * README.TestletToAPI: Likewise.
+ * RunnerProcess.java:
+ (exceptions): Changed from false by default to true by default.
+ (main): Changed -exceptions to -noexceptions.
+ * aclocal.m4: Regenerated.
+ * batch_run: Removed this file.
+ * build.xml: Likewise.
+ * choose: Likewise.
+ * choose-classes: Likewise.
+ * configure: Regenerated.
+ * configure.in: Do not export MAUVEVM, removed --with-gcj option,
+ removed --with-bootclasspath option, removed --enable-gcj-classes
+ option, removed --enable-class-files option.
+ * runner: Removed this file.
+ * uses-list: Likewise.
+
+2006-06-14 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/TextComponent/ignoreOldMouseEvents.java: New test.
+
+2006-06-14 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/image/PixelGrabber/testNullProducer.java: New test.
+
+2006-06-13 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java: New test.
+
+2006-06-13 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Robot/security.java: Minor cleanup.
+ * gnu/testlet/java/awt/Window/security.java: Likewise.
+
+2006-06-13 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfPR27849.java: New test.
+
+2006-06-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/Graphics2D/setTransform.java:
+ getClip() returns a Shape.
+ * gnu/testlet/java/awt/Graphics2D/transform.java: Likewise.
+
+2006-06-12 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/javax/swing/JComboBox/basic.java:
+ (test): added new test
+ (testTogglingVisibility): new test for mouse clicks
+
+2006-06-11 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignature.java: Use pre-
+ computed DSA keys.
+ * gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java:
+ Likewise.
+
+2006-06-11 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java: Remove unused import.
+ (setUp): Use the same format for both public and private keys.
+
+2006-06-11 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/TestOfProvider.java (setUp): Remove
+ other other than GNU providers.
+
+2006-06-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ColorModel/MyColorModel.java: New file,
+ * gnu/testlet/java/awt/image/ColorModel/constructors.java: New file.
+
+2006-06-09 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/pad/TestOfISO10126.java: New test.
+
+2006-06-09 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfCipher.java (testPadding):
+ Re-wrote to cater for padding schemes using random data.
+
+2006-06-08 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java:
+ Additional tests for null and empty elements.
+
+2006-06-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Graphics2D/clip.java: New file,
+ * gnu/testlet/java/awt/Graphics2D/getClip.java: New file,
+ * gnu/testlet/java/awt/Graphics2D/getClipBounds.java: New file,
+ * gnu/testlet/java/awt/Graphics2D/setClipBounds.java: New file.
+
+2006-06-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Graphics2D/setTransform.java: New file,
+ * gnu/testlet/java/awt/Graphics2D/transform.java: New file.
+
+2006-06-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollPane/getActionMap.java: New file.
+
+2006-06-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/JTableHeader/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChild.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChildrenCount.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleRole.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChild.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChildrenCount.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleComponent.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleDescription.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleIndexInParent.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleName.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/MyTableCellRenderer.java: New file,
+ * gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/setAccessibleName.java: New file.
+
+2006-06-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/InternalFrameEvent/constructor.java:
+ New file,
+ * gnu/testlet/javax/swing/event/InternalFrameEvent/getInternalFrame.java:
+ New file,
+ * gnu/testlet/javax/swing/event/InternalFrameEvent/paramString.java:
+ New file.
+
+2006-06-07 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JButton/constructors.java: New file.
+
+2006-06-07 Francis Kung <fkung@redhat.com>
+
+ * gnu/testlet/javax/swing/JMenuBar/basic.java: New tests.
+ * gnu/testlet/javax/swing/JMenuBar/constructors.java: New tests.
+ * gnu/testlet/javax/swing/JMenuBar/getComponentIndex.java: New tests.
+ * gnu/testlet/javax/swing/JMenuBar/getMenu.java: New tests.
+ * gnu/testlet/javax/swing/JMenuBar/getSubElements.java: New tests.
+
+2006-06-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JLabel/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JMenu/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JMenuBar/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JOptionPane/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JOptionPane/MyJOptionPane.java: New file,
+ * gnu/testlet/javax/swing/JPopupMenu/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JScrollBar/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JScrollPane/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JSplitPane/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JTabbedPane/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JTable/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JTableHeader/getInputMap.java: New file,
+ * gnu/testlet/javax/swing/JToolBar/getInputMap.java: New file.
+
+2006-06-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/getInputMap.java: New file.
+
+2006-06-06 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/JFrame/constructors.java: Fixed copyright comments.
+
+2006-06-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java:
+ Filled in header details (replacing FIXMEs).
+
+2006-06-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getInputMap.java: New test.
+
+2006-06-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/AccessibleJTable/getAccessibleColumnHeader.java: New file,
+ * gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java: New file,
+ * gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java: New file,
+ * gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java: New file.
+
+2006-06-05 Tania Bento <tbento@redhat.com>
+
+ * gnu/testlet/javax/swing/JFrame/constructors.java: New test.
+
+2006-06-03 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java: New test.
+
+2006-06-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Robot/security.java: Comment fixes.
+ * gnu/testlet/java/awt/Window/security.java: Likewise.
+
+2006-06-01 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/xml/parsers/DocumentBuilder/PR27864.java: New test.
+
+2006-06-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java:
+ Fixed tag,
+ * gnu/testlet/javax/swing/JLabel/MyJLabel.java: Likewise,
+ * gnu/testlet/javax/swing/JToolTip/MyJToolTip.java: Likewise.
+
+2006-05-31 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (getBootclasspath): Accept output to console from the auto detector.
+ (finalize): Dump the coverage data.
+ (initProces): Confirm that the RunnerProcess started properly.
+ (runTest): Use a invalidTest flag to suppress output when -showpasses
+ is used and a file is run that is "not-a-test". If the RunnerProcess
+ startup confirmation fails, print a message and exit. Handle the
+ statup confirmation and coverage dump confirmatino from the
+ RunnerProcess.
+ * Makefile.in: Regenerated.
+ * RunnerProcess.java:
+ (emmaJarLocation): New field.
+ (useEMMA): New field.
+ (emmaMethod): New field.
+ (main): Accept the -emma command line argument to specify the emma.jar
+ location. Setup the EMMA coverage dumping facilities. Handle the
+ messages from the Harness indicating we should confirm startup or force
+ a coverage dump.
+ (setupEMMA): New method.
+ (dumpCoverageData): New method.
+ * configure: Regenerated.
+ * configure.in: Added -with-emma method to allow optional setting of
+ emma.jar location.
+ * gnu/testlet/TestHarness.java:
+ (getEmmaString): New method.
+ * gnu/testlet/config.java.in:
+ (emmaString): New field.
+ (getEmmaString): New method.
+
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/JTable/getCellEditor.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected.java: Removed
+ unnecessary import and fixed API doc warning.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleName.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleRole.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleValue.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getCurrentAccessibleValue.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMaximumAccessibleValue.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMinimumAccessibleValue.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/setMaximumAccessibleValue.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/setClosable.java
+ (TestPropertyChangeHandler): Removed,
+ (lastEvent): New field,
+ (propertyChange): New method,
+ (test): Rewritten,
+ * gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java
+ (TestPropertyChangeHandler): Removed,
+ (lastEvent): New field,
+ (propertyChange): New method,
+ (test): Rewritten,
+ * gnu/testlet/javax/swing/JInternalFrame/setResizable.java
+ (TestPropertyChangeHandler): Removed,
+ (lastEvent): New field,
+ (propertyChange): New method,
+ (test): Rewritten,
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected2.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/constructors.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/dispose.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/getDesktopIcon.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/getNormalBounds.java:
+ New file,
+ * gnu/testlet/javax/swing/JInternalFrame/isIconifiable.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/isResizable.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java:
+ New file,
+ * gnu/testlet/javax/swing/JInternalFrame/paramString.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/setDefaultCloseOperation.java:
+ New file,
+ * gnu/testlet/javax/swing/JInternalFrame/setDesktopIcon.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/setFrameIcon.java: New file,
+ * gnu/testlet/javax/swing/JInternalFrame/setNormalBounds.java:
+ New file,
+ * gnu/testlet/javax/swing/JInternalFrame/setTitle.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getAccessibleName:
+ New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/JLabel/paramString.java: New file,
+ * gnu/testlet/javax/swing/JLabel/setLabelFor.java: New file,
+ * gnu/testlet/javax/swing/JLabel/MyJLabel.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JToolTip/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/getComponent.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/getTipText.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/getUIClassID.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/paramString.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/setComponent.java: New file,
+ * gnu/testlet/javax/swing/JToolTip/setTipText.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JProgressBar/getAccessibleContext.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/getPercentComplete.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/getString.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/isStringPainted.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/MyJProgressBar.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/paramString.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setBorderPainted.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setModel.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setOrientation.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setString.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setStringPainted.java: New file,
+ * gnu/testlet/javax/swing/JProgressBar/setValue.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/addListSelectionListener.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/addSelectionInterval.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/clearSelection.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/clone.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/constructor.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getAnchorSelection.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getLeadSelectionIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getListSelectionListeners.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getMaxSelectionIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getMinSelectionIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getSelectionMode.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/getValueIsAdjusting.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/insertIndexInterval.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/isLeadAnchorNotificationEnabled.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectedIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectionEmpty.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/moveLeadSelectionIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/removeIndexInterval.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/removeListSelectionListener.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/removeSelectionInterval.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setAnchorSelectionIndex.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionInterval.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionMode.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setValueIsAdjusting.java: New file,
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/toString.java: New file.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java
+ (lastEvent): New field,
+ (valueChanged): New method,
+ (test): Call new test methods,
+ (testSingleSelection): New method,
+ (testSingleIntervalSelection): New method,
+ (testMultipleIntervalSelection): New method.
+
+2006-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollBar/MyJScrollBar.java: New file,
+ * gnu/testlet/javax/swing/JScrollBar/getAccessibleContext.java:
+ New file,
+ * gnu/testlet/javax/swing/JScrollBar/paramString.java: New file.
+
+2006-05-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSplitPane/MyJSplitPane.java: New file,
+ * gnu/testlet/javax/swing/JSplitPane/paramString.java: New file,
+ * gnu/testlet/javax/swing/JSplitPane/setResizeWeight.java: New file.
+
+2006-05-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/constructor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundNonSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBorderSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getClosedIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultClosedIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultLeafIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultOpenIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getLeafIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getOpenIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundNonSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBorderSelectionColor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setClosedIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setLeafIcon.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setOpenIcon.java: New file.
+
+2006-05-26 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/math/BigInteger/modPow.java: New file.
+
+2006-05-23 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Window/security.java: New test.
+
+2006-05-23 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/awt/Robot/security.java: New test.
+
+2006-05-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/beans/beancontext/InstantiateChild.java:
+ Fix incorrect test of return value of InstantiateChild.
+
+2006-05-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/beans/beancontext/Array.java:
+ New file. Test the semantics of contains and converting
+ to an array.
+ * gnu/testlet/java/beans/beancontext/InstantiateChild.java:
+ New file. Test instantiation of a child in a context
+ by class name.
+
+2006-05-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/beans/beancontext/Remove.java:
+ New file. Tests the semantics of removing a bean
+ from a context.
+
+2006-05-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/lang/Character/Blocks.java,
+ * gnu/testlet/java/lang/Character/Blocks15.java:
+ New files to test Character blocks.
+ * gnu/testlet/java/beans/beancontext/Add.java:
+ Add more readable checkpoints.
+
+2006-05-21 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/beans/beancontext/Add.java:
+ New file. Tests the semantics of adding a bean
+ to a context.
+
+2006-05-20 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/jce/keyring/TestOfKeystore.java: New test.
+ * gnu/testlet/gnu/javax/crypto/keyring/TestOfGnuPrivateKeyring.java:
+ Likewise.
+
+2006-05-18 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java:
+ Complete test.
+
+2006-05-18 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Regenerated.
+
+2006-05-18 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (getBootClassPath): Changed location of DetectBootclasspath because it
+ is now an inner class of Harness rather than a separate source file
+ in gnu/testlet.
+ (Harness.DetectBootclasspath): New inner class.
+ * gnu/testlet/DetectBootclasspath.java: Removed this file.
+
+2006-05-18 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/font/ShapeGraphicAttribute: New directory.
+ * gnu/testlet/java/awt/font/ShapeGraphicAttribute/ShapeGraphicAttributeTest: New test.
+ * gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java: Added
+ equals test.
+
+2006-05-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/tree/TreePath/PR27651.java: New test.
+
+2006-05-17 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java:
+ New test.
+
+2006-05-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/font/ImageGraphicAttribute: New directory
+ * gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java: New test.
+ * gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmp: New bitmap used in test.
+
+2006-05-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultButtonModel/addActionListener.java:
+ New file,
+ * gnu/testlet/javax/swing/DefaultButtonModel/constants.java: Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/constructor.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/getSelectedObjects.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/MyDefaultButtonModel.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setActionCommand.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java: Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java: Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setGroup.java: Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setMnemonic.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java: Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setRollover.java:
+ Likewise,
+ * gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java:
+ Likewise.
+
+2006-05-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SizeSequence/constructors.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/getIndex.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/getSize.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/getSizes.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/insertEntries.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/removeEntries.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/setSize.java: New test,
+ * gnu/testlet/javax/swing/SizeSequence/setSizes.java: New test.
+
+2006-05-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/ServerSocket/AcceptTimeout.java: New test.
+
+2006-05-13 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/Utilities/getWordStart.java: New test.
+ * gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java: Renamed
+ fields, added second string to check.
+ * gnu/testlet/javax/swing/text/Utilities/getNextWord.java: Dito.
+
+2006-05-12 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java:
+ New test.
+
+2006-05-11 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/logging/Handler/TestSecurityManager.java
+ (install): Initialize LogManager first.
+ * gnu/testlet/java/util/logging/Logger/TestSecurityManager.java
+ (install): Likewise.
+
+2006-05-10 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/insecurity.java: New test.
+ * gnu/testlet/java/lang/ThreadGroup/insecurity.java: Likewise.
+
+2006-05-09 Robert Schuster <robertschuster@fsfe.org>
+ * gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java:
+ New test.
+
+2006-05-09 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/security.java: Removed unused stuff.
+
+2005-04-29 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/util/Calendar/setTimeZone.java:
+ Test that fields are recalculated on setTimeZone.
+
+2006-05-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/util/zip/Deflater/PR27435.java:
+ Test for the bug in PR#27435.
+
+2006-05-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/DecimalFormat/PR27311.java:
+ Test for the bug in PR#27311.
+
+2006-05-06 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/util/Calendar/add.java: (test): Added call to the new
+ test.
+ (testPreviousDate): Regression test for PR27362, which ensures that
+ Calendar.clear(int) doesn't swallow previous calendar changes.
+
+2006-05-05 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/ThreadGroup/security.java: Rearranged to
+ work with class libraries other than Classpath.
+
+2006-05-04 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/security.java: Added some missing
+ constructor tests, and rearranged to work with class libraries
+ other than Classpath.
+
+2006-05-03 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/GapContent/constructors.java:
+ (testConstructor2): Put checks into try-catch block. added a second
+ length check.
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java:
+ (testGeneral): Added note.
+
+2006-05-01 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
+ (test_entrySet): Iterator.hasNext() does not throw
+ ConcurrentModificationException - update test accordingly.
+ * gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java
+ (test_entrySet): Likewise.
+
+2006-05-01 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/util/Calendar/add.java: (test): Fixed compilation error
+ introduced by the addition of the TimeZone test.
+ * gnu/testlet/java/util/Calendar/minmax.java: (test): Fixed compilation error
+ introduced by the addition of the TimeZone test.
+ * gnu/testlet/java/util/Calendar/roll.java: (test): Fixed compilation error
+ introduced by the addition of the TimeZone test.
+
+2006-05-01 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/util/Calendar/TimeZone.java: New test.
+
+2006-04-27 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/Utilities/getNextWord.java: New test.
+ * gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java:
+ (test): Use fixed value to end loop.
+
+2006-04-27 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java: New
+ test.
+
+2006-04-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (getBootClassPath): Changed "/" to "." in exec command so it works with
+ gij.
+ (compileFolder): Count multiple compile errors for the same test as
+ just one total test and one total fail, and print the FAIL header info
+ only once.
+
+2006-04-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java: Changed reference to --disable-auto-compile to
+ --disable-auto-compilation.
+ * configure: Regenerated.
+ * configure.in: Changed --enabled-auto-compile option to
+ --enable-auto-compilation.
+
+2006-04-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (bcp_timeout): New field.
+ (showCompilationErrors): Set to true by default.
+ (setupHarness): Changed -showcompilefails option to -hidecompilefails
+ since fails are shown by default now. Also changed
+ -classpath-install-dir option to -bootclasspath to match the
+ configure option.
+ (getClasspathInstallString): If no bootclasspath was specified on the
+ command line or in configure, then auto-detect it with the new method
+ getBootClassPath.
+ (getBootClassPath): New method.
+ * README: Changed --with-classpath-install-dir to --with-bootclasspath,
+ changed text to reflect the fact that auto-compilation is now enabeld
+ by default. Added the -hidecompilefails option to the text.
+ * configure: Regenerated.
+ * configure.in: Changed --with-classpath-install-dir to
+ --with-bootclasspath, changed auto-compilation to be enabled by
+ default.
+ * gnu/testlet/DetectBootclasspath.java: New file.
+
+
+2006-04-24 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java:
+ (setupCompiler): Changed ecjWriterOut and ecjWriterErr to use 1.4
+ PrintWriter constructors.
+ (getClasspathInstallString): Add "glibj.zip" onto the end of the
+ bootclasspath, if that file is present.
+ (initProcess): Use StringBuffer instead of StringBuilder, so it
+ compiles on older compilers.
+ (compileFolder): Likewise.
+ (runFolder): Likewise.
+ * RunnerProcess.java:
+ (runTest): Replaced String.contains() with String.indexOf() so it
+ compiles on older compilers.
+ (exceptionDetails): Replaced StringBuilder with StringBuffer so it
+ compiles on older compilers.
+
+2006-04-24 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * .cvsignore: Added .ecjOut and .ecjErr.
+ * aclocal.m4: Regenerated.
+ * configure.in: Added --with-vm, --enable-auto-compile,
+ --with-classpath-install-dir, --with-ecj-jar options to support
+ auto-compilation.
+ * configure: Regenerated.
+ * harness: Removed this unneeded wrapper script.
+ * Harness.java: Rewritten to allow auto-compilation and faster test
+ processing.
+ * Makefile.am: Added Harness.java and RunnerProcess.java to
+ harness_files, added new target 'harness' that compiles these files
+ as well as gnu/testlet/config.java, and added target 'all-local' to
+ make these compile by default.
+ * Makefile.in: Regenerated.
+ * README: Rewritten to include the new configure options, compilation
+ options, and the new invocation style.
+ * RunnerProcess.java: Fixed comments, formatting, and:
+ (NOT-A-TEST-DESCRIPTION): Made this field private.
+ (verbose): Made this field static.
+ (debug): Likewise.
+ (exceptions): Likewise.
+ (report): Likewise.
+ (xmlfile): Likewise.
+ (RunnerProcess(boolean, boolean, boolean, TestReport)): Removed this
+ unnecessary constructor.
+ (RunnerProcess()): New constructor.
+ * gnu/testlet/TestHarness.java:
+ (getAutoCompile): New method.
+ (getCpInstallDir): Likewise.
+ (getEcjJar): Likewise.
+ (getTestJava): Likewise.
+ * gnu/testlet/config.java.in:
+ (cpInstallDir): New field.
+ (autoCompile): Likewise.
+ (testJava): Likewise.
+ (ecjJar): Likewise.
+ (getCpInstallDir): New method.
+ (getAutoCompile): Likewise.
+ (getEcjJar): Likewise.
+ (getTestJava): Likewise.
+
+2006-04-23 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/util/Collections/unmodifiableMap.java(testMap):
+ Added regression test on UnmodifiableMap.entrySet().toArray(Object[]).
+
+2006-04-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test): Added
+ regression test for PR classpath/27189.
+
+2006-04-12 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ *gnu/testlet/java/util/regex/Pattern/pcrematches.java(decode):
+ New method. (test): Use the new method decode to input Unicode
+ characters. Added some harness.debug logging.
+ * gnu/testlet/java/util/regex/Pattern/testdata3: Added new tests.
+
+2006-04-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/BitSet/clear.java: New file,
+ * gnu/testlet/java/util/BitSet/flip.java: New file,
+ * gnu/testlet/java/util/BitSet/get.java: New file,
+ * gnu/testlet/java/util/BitSet/Get.java: Merged with get.java.
+
+2006-04-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/unmodifiableMap.java: New test.
+
+2006-04-06 Michael Barker <mike@middlesoft.co.uk>
+
+ * gnu/testlet/java/nio/channels/FileChannel/offsetSingleBugger.java:
+ New test
+ * gnu/testlet/java/nio/channels/FileChannel/offsetSingleDirectBuffer.java:
+ New test
+
+2006-04-06 Michael Barker <mike@middlesoft.co.uk>
+
+ * gnu/testlet/java/nio/channels/FileChannel/multibufferIO.java: Added
+ * gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java: Added
+ * gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java: Added
+ * gnu/testlet/java/nio/channels/SocketChannel/select.java Added flip() to
+ reset buffer.
+
+
+2006-04-08 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/hash/TestOfWhirlpool.java:
+ Updated documentation.
+ (TV1): Use Version 3 test vector.
+ (TV2): Use Version 3 test vector.
+ (test): Use ISO test vectors.
+
+2006-04-06 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/security.java: Add check for no
+ permissions when calling getClassLoader() on bootstrap class.
+
+2006-04-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * README: Added line about compiling the Harness, RunnerProcess, and
+ tests.
+
+2006-04-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * Harness.java: New file.
+ * README: New file (old one moved to README.OldHarness).
+ * README.OldHarness: New file, copied from the old README.
+ * RunnerProcess.java: New file.
+ * harness: New file.
+
+2006-04-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URLConnection/getFileNameMap.java: New file.
+
+2006-04-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/InvocationTargetException/Chain.java:
+ New file.
+
+2006-04-05 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/Iterator/ConcurrentModification.java: New test.
+
+2006-04-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java:
+ New test.
+
+2006-04-03 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/26971:
+ * gnu/testlet/javax/naming/directory/BasicAttribute/Enumerate.java:
+ New file.
+
+2006-04-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java:
+ Reformat. Optimize imports.
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageReadParam.java:
+ New test.
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java:
+ Optimize imports.
+
+2006-03-31 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Component/keyPressTest.java:
+ New test.
+
+2006-03-30 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java: New
+ test.
+
+2006-03-29 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Panel/TestPanelRepaint.java
+ (test): Added check.
+ (myPanel): Added component listener.
+
+2006-03-29 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java:
+ (testGeneral): Let test fail when unexpected exception occurs.
+ (testSpecialInsert): New test.
+
+2006-03-26 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved all remaining cases from testdata2 to testdata1.
+
+2006-03-25 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/locales/LocaleTest.java:
+ Updated to fit new CLDR 1.3 data.
+
+2006-03-25 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/locales/LocaleTest.java:
+ Updated for new fixed locale data.
+
+2006-03-25 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/setFirstDayOfWeek.java:
+ New tests.
+
+2006-03-23 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/awt/Window/focusCycleRootTest.java: New test.
+
+2006-03-23 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/io/ObjectOutputStream/useProtocolVersion.java: New test.
+
+2006-03-23 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-03-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmp:
+ Added bitmap for test.
+ * gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java:
+ (test): Moved tests to testStringData. Added calls to
+ testReadWrite and testStringData.
+ (testStringData): New function.
+ (testReadWrite): Checks reading and writing of bitmap
+ images. Compares images to verify they are the same.
+ (checkPixels): Helper used to compare pixels of two
+ images.
+
+2006-03-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FilePermission/traversal2.java: New test.
+
+2006-03-22 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FilePermission/traversal.java: New test.
+
+2006-03-21 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/Bidi/reorderVisually.java: New file.
+ * gnu/testlet/java/text/Bidi/Basic.java: New file.
+
+2006-03-21 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Reformatted.
+ * gnu/testlet/TestHarness.java: Reformatted, removed unused imports.
+ * gnu/testlet/TestReport.java: Reformatted.
+
+2006-03-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/awt/font/NumericShaper/Basic.java: New file.
+
+2006-03-19 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java:
+ Fixed test to check correct logic, not exact pixels.
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java:
+ Fixed test to check correct logic, not exact pixels.
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java:
+ Fixed test to check correct logic, not exact pixels.
+
+2006-03-18 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-03-17 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/BasicPermission/newPermission.java:
+ New test.
+
+2006-03-16 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/FontMetrics/TestLogicalFontMetrics.java:
+ New test.
+ Remove timer to ensure all tests are run.
+ Make tolerance larger for larger font sizes.
+
+ * gnu/testlet/java/awt/FileDialog/TestGraphics.java: New test.
+
+2006-03-15 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/jar/JarFile/basic.java (test_jar): Log
+ exception when -debug.
+
+2006-03-15 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/getComponentAt.java:
+ New Class
+
+2006-03-15 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/addImpl.java
+ (test1): Removed repaint function. Only need one. Also,
+ added repaint functions to all the components.
+ (test2): Added a lightweight container to the panel to
+ show that repaint is not called on it. Also, added a check
+ to show that repaint is not called on the frame when it is
+ shown.
+
+2006-03-15 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/addImpl.java
+ (test): Changed to call new functions.
+ (test1): Moved old test to new function.
+ (test2): New function to test if repaint is called when a component
+ is added to a showing component.
+
+2006-03-15 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected.java:
+ Added test for bound property.
+ * gnu/testlet/javax/swing/JInternalFrame/setResizable.java:
+ Added test for bound property.
+ * gnu/testlet/javax/swing/JInternalFrame/setMaximizable.java:
+ Added test for bound property.
+ * gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java:
+ Added test for bound property.
+ * gnu/testlet/javax/swing/JInternalFrame/setClosed.java:
+ Added test for bound property.
+ * gnu/testlet/javax/swing/JInternalFrame/setClosable.java:
+ Added test for bound property.
+
+2006-03-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/sizeWidthToFit.java:
+ New file.
+
+2006-03-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/logging/Level/parse.java (test): Add "new"
+ string object to parse.
+
+2006-03-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/addPropertyChangeListener.java:
+ New file,
+ * gnu/testlet/javax/swing/table/TableColumn/removePropertyChangeListener.java:
+ Likewise,
+ * gnu/testlet/javax/swing/table/TableColumn/setCellEditor.java:
+ Likewise,
+ * gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java
+ (test): Extended PropertyChangeEvent tests,
+ * gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java
+ (event): New field,
+ (propertyChange): New method,
+ (test): Added checks for required PropertyChangeEvent.
+
+2006-03-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java
+ (events): New field,
+ (propertyChange): New method,
+ (test): Added checks for PropertyChangeEvents.
+
+2006-03-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java
+ (events): New field,
+ (propertyChange): New method,
+ (test): Added checks for PropertyChangeEvents,
+ * gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java
+ (events): New field,
+ (propertyChange): New method,
+ (test): Added checks for PropertyChangeEvents,
+ * gnu/testlet/javax/swing/table/tableColumn/setWidth.java
+ (event): Removed,
+ (events): New field,
+ (propertyChange): Add event to new events list,
+ (test): Added checks for PropertyChangeEvents.
+
+2006-03-14 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/addImpl.java
+ (test): Formatted function and added repaint functions
+ to override repaint in Container. Added fails to these functions,
+ they should not be called.
+
+2006-03-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/setResizable.java
+ (lastEvent): New field,
+ (propertyChange): New method,
+ (test): Extended to check PropertyChangeEvent.
+
+2006-03-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/calculateInnerArea.java:
+ New test.
+
+2006-03-13 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/teslet/java/lang/ClassLoader/BootDefinedPackages.java: New test.
+
+2006-03-13 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/teslet/java/lang/ClassLoader/initialize.java: Added comments.
+
+2006-03-13 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JInternalFrame/setSelected.java: New test.
+
+2006-03-13 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/accessibility/AccessibleContext/TestAccessibleContext.java:
+ New auxiliary helper class.
+ * gnu/testlet/javax/accessibility/AccessibleContext/getAccessibleRelationSet.java:
+ New test.
+
+2006-03-11 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/zip/GZIPInputStream/PR24461.java: New file.
+
+2006-03-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/TreeSelectionEvent/cloneWithSource.java:
+ New file,
+ * gnu/testlet/javax/swing/event/TreeSelectionEvent/constructors.java:
+ Likewise,
+ * gnu/testlet/javax/swing/event/TreeSelectionEvent/isAddedPath.java:
+ Likewise.
+
+2006-03-10 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Button/PaintTest.java: New Test.
+ * gnu/testlet/java/awt/Canvas/PaintTest.java: New Test.
+ * gnu/testlet/java/awt/Checkbox/PaintTest.java: New Test.
+ * gnu/testlet/java/awt/Label/PaintTest.java: New Test.
+ * gnu/testlet/java/awt/List/ScrollbarPaintTest.java: New Test.
+ * gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java: New Test.
+ * gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java: New Test.
+ * gnu/testlet/java/awt/TextArea/ScrollbarPaintTest.java: New Test.
+ * gnu/testlet/java/awt/TextField/PaintTest.java: New Test.
+ * gnu/testlet/java/awt/Choice/PaintTest.java: New Test.
+
+2006-03-10 Christian Thalinger <twisti@complang.tuwien.ac.at>
+
+ * gnu/testlet/java/beans/Introspector/A.java: Added not-a-test
+ tag.
+ * gnu/testlet/java/beans/Introspector/B.java: Likewise.
+ * gnu/testlet/java/beans/Introspector/C.java: Likewise.
+
+2006-03-10 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Graphics/TestPaintGraphics.java: Fix test.
+
+ * gnu/testlet/java/awt/Graphics/TestPaintGraphics.java: New test.
+
+ * gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java:
+ New test.
+
+2006-03-08 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetSocketAddress/createUnresolved.java:
+ New testcase.
+
+2006-03-07 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/net/URLClassLoader/getResourceBase.java (check): Added
+ canonalization of tested filenames.
+ * gnu/testlet/java/net/URLCLassLoader/getResource.java (test, setup): Added
+ more special situations checks with ".." and invalid directories. Fixed
+ and documented existing checks dealing with directories.
+ Based on Robin Green's patch.
+
+2006-03-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java: Updated header,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java
+ (test): Reworked,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstChild.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstLeaf.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastChild.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastLeaf.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextLeaf.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextSibling.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousLeaf.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousSibling.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getSiblingCount.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isLeaf.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeSibling.java: New file.
+
+2006-03-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java
+ (test): Reworked and added ancestor tests,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/clone.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java
+ (check): Removed,
+ (test): Split into three calls,
+ (testConstructor1): New method,
+ (testConstructor2): Likewise,
+ (testConstructor3): Likewise,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getIndex.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getParent.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/insert.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeAncestor.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeChild.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeDescendant.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/remove.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/removeAllChildren.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/setAllowsChildren.java: New file,
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/toString.java: New file.
+
+2006-03-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Math/ulp.java: New file.
+
+2006-03-06 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/TestPanelRepaint.java:
+ Removed Class.
+ * gnu/testlet/java/awt/Panel: New Directory.
+ * gnu/testlet/java/awt/Panel/TestPanelRepaint:
+ New Class.
+
+2006-03-06 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/TestPanelRepaint.java:
+ New Class.
+
+2006-03-06 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/URLConnection/getHeaderFields.java:
+ (check): Use checkPoint instead of test names. Fix header key = String
+ test to use second header entry to work on http.
+ (test): Extend the basic test to all protocol implementations.
+
+2006-03-06 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/HttpURLConnection/requestPropertiesTest.java:
+ New tests.
+
+2006-03-06 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java: New file.
+ * gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java:
+ New test using TestHttpServer.java.
+ * gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java:
+ Likewise.
+
+2006-03-06 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/insertString.java:
+ (testModifications): Added another test.
+
+2006-03-06 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/net/URI/UnicodeURI.java: New file.
+
+2006-03-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Constructor/toString.java: New file.
+ * gnu/testlet/java/lang/reflect/Field/toString.java: New file.
+
+2006-03-04 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/insertString.java:
+ (testModifications): New test method.
+ (testNewLine): Added checkpoint name.
+ (testFilterNewLine): Added checkpoint name.
+ (testArguments): Changed catch-clause to Exception, added instanceof
+ for previous exception type.
+ (prepare): Added new helper method.
+ (checkElement): Added new helper method.
+ (insert): Added new helper method.
+
+2006-03-04 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/TestOfHttps.java:
+ Fixed the copyright notice.
+ (test): removed System.out.println().
+
+2006-03-04 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/javax/swing/JEditorPane/setText.java: New test.
+
+2006-03-02 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/URLConnection/Jar.java (test):
+ Added one more specialised test.
+
+2006-03-01 Tom Tromey <tromey@redhat.com>
+
+ * .project, .externalToolBuilders/ConfigureMauve.launch: Updated
+ configure builder.
+
+2006-02-28 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/URL/URLTest.java (test_Basics): Added a test.
+
+2006-02-28 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/lang/ClassLoader/Resources.java: New file.
+
+2006-02-28 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/newInstance.java (test6): New class.
+ (test): Updated comment. Run test6 test.
+
+2006-02-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/AbstractDocument/BranchElement/getStartOffset.java:
+ New test.
+ * gnu/testlet/javax/swing/AbstractDocument/LeafElement/getStartOffset.java:
+ New test.
+
+2006-02-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java:
+ (test): Fixed some tests the take font metrics differences into account.
+
+2006-03-01 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/TestOfHttps.java: New file.
+
+2006-02-27 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/URLConnection/getRequestProperties.java: New
+ test.
+
+2006-02-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java
+ (test): Don't set dest to method return value,
+ * gnu/testlet/javax/swing/SwingUtilities/computeUnion.java
+ (test): Likewise.
+
+2006-02-26 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java: Removed.
+ * gnu/testlet/gnu/java/security/jce/FakeDSAParameters.java: Likewise.
+ * gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java
+ (checkInitializeSignatures): Use GNU provider.
+ * gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java (setUp): Do
+ not install fake provider.
+ Use GNU provider instead.
+ * gnu/testlet/gnu/java/security/jce/TestOfFormat.java (setUp): Likewise.
+ * gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java
+ (setUp): Likewise.
+ * gnu/testlet/gnu/java/security/jce/TestOfSignature.java
+ (testDSSSignatures): Use GNU provider.
+ (testRSAPKCS1Signatures): Likewise.
+ (setUp): Do not install fake provider.
+
+2006-02-25 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-02-24 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/LightweightContainer.java
+ (testLoc2): Simplified test.
+
+2006-02-23 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/LightweightContainer.java
+ (testLoc2): Made test more complicated to use GridBagLayout.
+ Fixed to fail without reshape patch.
+
+2006-02-23 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/DocFlavor/hostEncoding.java: New test.
+
+2006-02-24 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java:
+ Updated tag.
+ * gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java:
+ Likewise.
+ * gnu/testlet/javax/security/auth/login/TestOfPR25202.java: Likewise.
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyFactory.java: New file.
+ * gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement.java: Likewise.
+ * gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java: Likewise.
+
+2006-02-23 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/DocFlavor/parseMimeType.java
+ (test): Additional tests for special characters.
+
+2006-02-22 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java: New
+ test.
+
+2006-02-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Container/LightweightContainer.java
+ (testLoc1): Fixed up tests so it fails without pending
+ lightweight patch.
+
+2006-02-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/TestHarness.java
+ (checkColor): Removed.
+ (checkRectangleOuterColors): Removed.
+ (checkRectangleCornerColors): Removed.
+ * gnu/testlet/java/awt/Container/LightweightContainer.java
+ (testLoc): Added comment, changed to use LocationTests.
+ (testWindow): Likewise.
+ (testLoc1): Added new test.
+ (test): Added call to testLoc1.
+ * gnu/testlet/java/awt/Frame/size1.java
+ (test): Added comment, changed to use LocationTests.
+ * gnu/testlet/java/awt/LocationTests.java: New class.
+
+2006-02-22 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/TestHarness.java
+ (checkColor): Fixed API documentation.
+ (checkRectangleOuterColors): Likewise.
+ * gnu/testlet/java/awt/Container/LightweightContainer.java
+ (testWindow): Added documentation.
+ (testLoc): Likewise.
+ * gnu/testlet/java/awt/Frame/size1.java
+ (test): Added documentation.
+
+2006-02-21 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/TestHarness.java
+ (checkColor): New method used to compare colors.
+ (checkRectangleOuterColors): New method used to compare the
+ colors of a rectangle's corners to the colors of the pixels
+ surrounding the corners.
+ (checkRectangleCornerColors): New method used to compare
+ the colors of the pixels at the corners of a rectangle, to
+ a given color.
+ * gnu/testlet/java/awt/Container/LightweightContainer.java:
+ New Test.
+ * gnu/testlet/java/awt/Frame/size1.java
+ (checkColor): Removed.
+ (test): Changed to use new methods in TestHarness.
+
+2006-02-21 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java:
+ (testNewlines): New test.
+
+2006-02-21 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java: Replaced
+ with correct file.
+
+2006-02-20 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/ThreadGroup/security.java: New test.
+
+2006-02-20 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/remove.java:
+ (testBehavior): New method.
+
+2006-02-20 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/text/GapContent/remove.java:
+ (testGeneral): Added test.
+
+2006-02-19 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/lang/reflect/Proxy/DeclaringClass.java: New file.
+ * gnu/testlet/java/lang/reflect/Proxy/ProxyUtils.java: New file.
+
+2006-02-19 Mark Wielaard <mark@klomp.org>
+
+ * batch_run (KEYS): Add GNU and GNU-CRYPTO
+ (COMPILER): Export either GCJ or JAVAC.
+ * choose-classes: Also search gnu and org hierarchies.
+ * runner (RUNTIME): Export RUNTIME as JAVA.
+
+2006-02-19 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/Menu/addItem.java: New test.
+ * gnu/testlet/java/awt/MenuBar/addMenu.java: New test.
+
+2006-02-19 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/sig/TestOfSignatureCodecFactory.java:
+ New file.
+ * gnu/testlet/gnu/java/security/sig/rsa/TestOfRSASignatureCodec.java:
+ Re-wrote to test all RSA signature codecs.
+ * gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java
+ (test): Call new method.
+ (testSignatureASN1Codec): New method.
+ * gnu/testlet/gnu/java/security/key/TestOfKeyPairCodecFactory.java: New
+ file.
+ * gnu/testlet/gnu/java/security/jce/TestOfSignature.java
+ (test): Call new methods.
+ (testDSSRawSignature): Renamed testDSSSignatures.
+ (testDSSSignatures): Add test for SHA160withDSS.
+ (testRSAPKCS1Signatures): New method.
+ (testSignature): New method.
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java
+ (FakeProvider): Added JCE signature mappings.
+
+2006-02-17 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/security.java: One more test.
+
+2006-02-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Thread/security.java: New test.
+
+2006-02-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager2.java: Added the ability to
+ test for multiple permisson checks when in the mode that aborts
+ the test after the permissions have been checked.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/NumberEditor/constructors.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/NumberEditor/getFormat.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/NumberEditor/getModel.java: Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/ListEditor/constructor.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java: Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/DateEditor/constructors.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/DateEditor/getFormat.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/DateEditor/getModel.java: Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/constructor.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/minimumLayoutSize.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/MyDefaultEditor.java: New support class,
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/preferredLayoutSize.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java: Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSpinner/addChangeListener.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/constructors.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/createEditor.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getChangeListeners.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getEditor.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getModel.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getNextValue.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getPreviousValue.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/getUIClassID.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/MyJSpinner.java: New support class,
+ * gnu/testlet/javax/swing/JSpinner/removeChangeListener.java: New test,
+ * gnu/testlet/javax/swing/JSpinner/setEditor.java: Likewise,
+ * gnu/testlet/javax/swing/JSpinner/setModel.java: Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java
+ (test): Add checks for model without bounds,
+ * gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java
+ (test): Likewise.
+
+2006-02-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java
+ (test): Add checks for model without bounds,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java
+ (test): Likewise.
+
+2006-02-14 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java
+ (HierarchyTest.Base): Added explicit constructor to avoid interpretation
+ of its visibility.
+
+2006-02-14 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * batch_run
+ (COMPILER): Added "none" as possible value to skip compilation.
+
+2006-02-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/Frame/menubar.java: New test.
+
+2006-02-14 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/layoutContainer.java
+ (test0): New test.
+
+2006-02-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getListeners.java
+ (MyPropertyChangeListener): New class,
+ (test): Added check for PropertyChangeListener.
+
+2006-02-13 Pedro Izecksohn <izecksohn@yahoo.com>
+
+ * gnu/testlet/java/util/ResourceBundle/getBundle.java (test): Avoid
+ ambiguity with JDK 1.6
+
+2006-02-13 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/repaint.java: New test.
+
+2006-02-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java
+ (test1): Added check for return value,
+ (test2): Set component in test for null Insets argument,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java:
+ Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java:
+ Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java:
+ Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java:
+ Likewise.
+
+2006-02-13 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata3: Added some tests.
+
+2006-02-12 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java:
+ Fixed test tag.
+
+2006-02-12 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/io/File/UnicodeURI.java: New test for
+ Files with Unicode characters above \u007F in names.
+
+2006-02-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/javax/swing/AbstractAction/putValue.java: Don't check
+ unspecified null value case.
+
+2006-02-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/javax/swing/text/TextAction/augmentList.java: Order
+ of elements doesn't matter, as long as all elements are present.
+
+2006-02-12 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/DocFlavor/parseMimeType.java:
+ Added additional tests to check for correct mimetype syntax.
+
+2006-02-12 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHCodec.java: Aligned with
+ gnu.testlet.gnu.java.security.key.dss.TestOfDSSCodec.
+ * gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java
+ (dhKPG): New field.
+ (dhKF): Likewise.
+ (test): Call testDHKeyFactory.
+ (setUp): Add GnuCrypto provider.
+ Initialize dhKPG and dhKF.
+ (testDSSKeyFactory): Removed spec3 field.
+ (testRSAKeyFactory): Likewise.
+ (testDHKeyFactory): New method.
+ * gnu/testlet/gnu/java/security/jce/TestOfFormat.java (dhKPG):
+ New field.
+ (test): Call testDHSymmetry.
+ (setUp): Add GnuCrypto provider.
+ Initialize dhKPG.
+ (testDHSymmetry): New method.
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java
+ (FakeProvider): Added mapping for DH key-factory.
+
+2006-02-11 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/lang/reflect/Proxy/ExceptionRaising.java: New
+ test on exception handling with proxies.
+
+2006-02-11 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/lang/reflect/Proxy/ToString.java: New test on
+ toString method forwarding to the InvocationHandler.
+
+2006-02-11 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/awt/CardLayout: New directory
+ * gnu/testlet/java/awt/CardLayout/first.java: New test.
+ * gnu/testlet/java/awt/CardLayout/show.java: New test.
+
+2006-02-11 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java
+ (FakeProvider): Added mapping for DSS and RSA key-factories.
+ * gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java: New file.
+
+2006-02-10 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java: New test
+ on abstract constructor calls in deserialization.
+ * gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java:
+ New test on proxy serialization.
+
+2006-02-09 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/key/rsa/TestOfRSACodec.java: Aligned
+ with gnu.testlet.gnu.java.security.key.dss.TestOfDSSCodec.
+ * gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java (setUp):
+ Instantiate and setup the key-pair generator once.
+ (testUnknownKeyPairCodec): Moved the key-pair generator setup to setUp().
+ (testKeyPairRawCodec): Likewise.
+ (testKeyPairASN1Codec): Likewise.
+ (testPublicKeyValueOf): Likewise.
+ (testPrivateKeyValueOf): Likewise.
+ * gnu/testlet/gnu/java/security/jce/TestOfFormat.java (testDSSSymmetry):
+ Renamed from testSymmetry.
+ (testRSASymmetry): New method.
+ (test): Added call to new method.
+
+2006-02-09 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/View/TestView.java: New helper class.
+ * gnu/testlet/javax/swing/text/View/getAlignment.java,
+ * gnu/testlet/javax/swing/text/View/getMaximumSpan.java,
+ * gnu/testlet/javax/swing/text/View/getMinimumSpan.java,
+ * gnu/testlet/javax/swing/text/View/getResizeWeight.java:
+ New tests.
+
+2006-02-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java:
+ Added Uses.
+
+2006-02-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SpinnerDateModel/constructors.java: New file,
+ * gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerDateModel/setEnd.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerDateModel/setStart.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerDateModel/setValue.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/constructors.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/setMaximum.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/setMinimum.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/setStepSize.java: Likewise,
+ * gnu/testlet/javax/swing/SpinnerNumberModel/setValue.java: Likewise.
+
+2006-02-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/FlowView/TestFlowView.java: New
+ helper class.
+ * gnu/testlet/javax/swing/text/FlowView/getFlowAxis: New
+ test class.
+
+2006-02-07 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java
+ (testKeyPairASN1Codec): New method.
+ * gnu/testlet/gnu/java/security/jce/TestOfFormat.java: New file.
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java (FakeProvider):
+ Add mapping for "KeyFactory.Encoded".
+
+2006-02-06 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java:
+ Removed strict checks.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java:
+ Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java:
+ Likewise.
+
+2006-02-06 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-02-06 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_Basics): Specialized
+ Exceptions to be thrown to ConnectException if connection fails.
+
+2006-02-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/javax/swing/DefaultListCellRenderer/
+ getListCellRendererComponent.java: New test.
+
+2006-02-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/ClassLoader/loadClass.java: New test.
+
+2006-02-05 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/HttpURLConnection/fileNotFound.java:
+ (test): Added tests for calling getInputStream, getErrorStream.
+
+2006-02-04 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/net/HttpURLConnection: New directory.
+ * gnu/testlet/java/net/HttpURLConnection/fileNotFound.java,
+ * gnu/testlet/java/net/HttpURLConnection/nullPointerException.java,
+ * gnu/testlet/java/net/HttpURLConnection/illegalStateException.java,
+ * gnu/testlet/java/net/HttpURLConnection/getRequestProperty.java,
+ * gnu/testlet/java/net/HttpURLConnection/getOutputStream.java: New tests.
+ * gnu/testlet/java/net/URLConnection/URLConnectionTest.java:
+ (test_getHeaderField): Removed failing wrong test.
+
+2006-02-02 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/setPosition.java,
+ * gnu/testlet/javax/swing/JLayeredPane/moveToFront.java:
+ New tests.
+
+2006-02-04 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java: New
+ file.
+ * gnu/testlet/gnu/java/security/jce/FakeProvider.java: Likewise.
+ * gnu/testlet/gnu/java/security/jce/FakeDSAParameters.java: Likewise.
+
+2006-02-04 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java
+ (checkJCEKeyPairGenerator): New method refactored from old
+ testDSAKeyPairGenerator().
+ Ensure implementation provides defaults for 512- and 1024-bit modulus.
+ (testDSAKeyPairGenerator): Removed.
+ (test): Call checkJCEKeyPairGenerator with DSA and DSS.
+
+2006-02-03 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java:
+ New test on back references in serialization,
+ * gnu/testlet/java/io/ObjectInputOutput/SerializableLoopA.java: New
+ helper file,
+ * gnu/testlet/java/io/ObjectInputOutput/SerializableLoopB.java:
+ Likewise.
+
+2006-02-03 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java: Renamed the marker
+ that tags throwpoint tests from "security" to "throwpoint".
+ * gnu/testlet/java/io/FileInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/RandomAccessFile/security.java: Likewise.
+ * gnu/testlet/java/lang/Class/security.java: Likewise.
+ * gnu/testlet/java/lang/ClassLoader/security.java: Likewise.
+ * gnu/testlet/java/lang/Runtime/security.java: Likewise.
+ * gnu/testlet/java/lang/System/security.java: Likewise.
+
+2006-02-03 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/crypto: Removed.
+ * gnu/testlet/java/security/sig: Likewise.
+ * gnu/testlet/java/security/key.java: Likewise.
+ * gnu/testlet/java/security/jce: Likewise.
+ * gnu/testlet/java/security/hash: Likewise.
+
+2006-02-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/AbstractCollection/toString.java: New test.
+
+2006-02-02 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java
+ (testGeneral): Fixed boundary case to pass with the JDK.
+
+2006-02-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/regex/Pattern/UnicodeSimpleCategory.java:
+ New test.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/StringContent/remove.java: Minor
+ correction to header.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java
+ (test): Added one more check.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java
+ (test): Set theme then check color against theme,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java
+ (test): Likewise.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java
+ (test): Removed check for actual size.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java
+ (testNotEditable): Set theme,
+ (testEditable): Set MetalLookAndFeel at end,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java
+ (test): Set known look and feel,
+ (testEditable): Updated expected values,
+ (testEditableWithCustomFont): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java
+ (testEditable): Updated expected values.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java
+ (test): Set MetalLookAndFeel at end of test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java
+ (test): Likewise.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java
+ (testEditable): Removed System.out.println() and modified expected result for one check.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java
+ (test): Updated expected results and test tag to JDK1.5.
+
+2006-02-01 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableCellRenderer/getTableCellRendererComponent.java: New test.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/border/TitledBorder/constructors.java
+ (test): Set known look and feel and theme.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getActionMap.java:
+ Removed,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java
+ (test): Set theme and removed fixed size test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getActionMap.java
+ (test): Likewise.
+
+2006-02-01 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java:
+ (testIncrButton): Fixed to test the JDK1.5 behaviour, which is
+ to not install any button in the installDefaults method.
+ (testDecrButton): Fixed to test the JDK1.5 behaviour, which is
+ to not install any button in the installDefaults method.
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java:
+ New test. Checks if the ScrollBar buttons are created here.
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java:
+ Added installComponents() method to make protected method visible.
+
+2006-02-01 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/addImpl.java
+ (testAddZeroPosition): New test.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java
+ (test): Set DefaultMetalTheme and use correct insets,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java
+ (test): Likewise,
+ Updated tag to JDK1.5 for both.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java
+ (test1): Use MetalLookAndFeel with DefaultMetalTheme,
+ (test2): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java
+ (test1): Use MetalLookAndFeel with DefaultMetalTheme,
+ (test2): Likewise.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java
+ (test): Change expected result to 7,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java
+ (test): Likewise,
+ Changed tag to JDK1.5 for both.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java
+ (test): Set a known theme at the start of the test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java
+ (test): Likewise.
+
+2006-02-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIManager/getUI.java
+ (test): Set MetalLookAndFeel at end of test.
+
+2006-01-31 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/installDefaults.java: New test.
+
+2006-01-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java
+ (test): Set MetalLookAndFeel at end of test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java
+ (testNotEditable): Likewise,
+ (testEditable): Likewise,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java
+ (test): Likewise.
+
+2006-01-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComboBox/setEditor.java
+ (test): Restore MetalLookAndFeel at the end of the test.
+
+2006-01-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java
+ (test): Set known theme in MetalLookAndFeel,
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java:
+ (test): Likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java:
+ (test): Likewise.
+
+2006-01-31 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager2.java: Added prepareChecks
+ methods with no mayCheck parameter to avoid having to create
+ and pass empty arrays all the time.
+
+ * gnu/testlet/java/io/File/security.java: Use the above.
+ * gnu/testlet/java/io/FileInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectInputStream/security.java: Likewise.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java: Likewise.
+ * gnu/testlet/java/lang/Class/security.java: Likewise.
+ * gnu/testlet/java/lang/ClassLoader/security.java: Likewise.
+ * gnu/testlet/java/lang/Runtime/security.java: Likewise.
+ * gnu/testlet/java/lang/SecurityManager/thread.java: Likewise.
+ * gnu/testlet/java/lang/System/security.java: Likewise.
+
+2006-01-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractButton.java
+ (test): Set the look and feel theme to DefaultMetalTheme.
+
+2006-01-31 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JDesktopPane/constructor.java
+ New test.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Container/getPreferredSize.java:
+ New test.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java:
+ Fixed copyright header and docs.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java:
+ New test
+
+2006-01-30 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/System/security.java: More new tests.
+
+2006-01-30 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/System/security.java: New test.
+
+2006-01-30 Roman Kennkte <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ViewportLayout/minimumLayoutSize.java:
+ New test
+
+2006-01-30 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicListUI/updateLayoutStateNeeded.java:
+ New test
+
+2006-01-31 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/util/TestOfPrime2.java (test): Call new
+ methods.
+ (checkIsPrime65537): Clarified that the number is Fermat's F4 prime.
+ (checkCryptoPrimes): New method.
+ (checkIsPrime): Re-wrote to reduce amount of output.
+ (checkIsNonPrime): New method.
+ (checkSpeed): New method.
+ (eulerTime): New method.
+ (millerRabinTime): New method.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/addImp.java
+ (testAddDifferentLayers): New test.
+
+2006-01-30 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/addImp.java
+ New test.
+
+2005-01-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Double/DoubleSetterTest.java: Cleaned up
+ test name containing "Error".
+
+2005-01-29 Edwin Steiner <edwin.steiner@gmx.net>
+
+ * gnu/testlet/java/lang/Byte/ByteTest.java,
+ gnu/testlet/java/lang/Character/CharacterTest.java,
+ gnu/testlet/java/lang/Double/DoubleTest.java,
+ gnu/testlet/java/lang/Float/FloatTest.java,
+ gnu/testlet/java/lang/Integer/IntegerTest.java,
+ gnu/testlet/java/lang/Long/LongTest.java,
+ gnu/testlet/java/lang/Math/MathTest.java,
+ gnu/testlet/java/lang/Short/ShortTest.java,
+ gnu/testlet/java/lang/String/StringTest.java,
+ gnu/testlet/java/lang/StringBuffer/StringBufferTest.java:
+ Cleaned up test names containing "Error", "failed", or
+ "returned wrong results".
+
+2006-01-29 Olivier Jolly <olivier.jolly@pcedev.com>
+
+ * gnu/testlet/java/lang/Double/DoubleSetterTest.java: New test which
+ makes sure that unwrapping of new Double(Double.MAX_VALUE) in
+ Method.invoke works correctly.
+
+2006-01-29 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ScrollPaneLayout/minimumLayoutSize.java:
+ New test.
+
+2006-01-30 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/gnu/java/security/util/TestOfPrime2.java: New file.
+ Fixed Copyright holder.
+
+2006-01-29 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/crypto: Moved to gnu/testlet/gnu/javax/crypto.
+ * gnu/testlet/java/security/sig:
+ Moved to gnu/testlet/gnu/java/security/sig.
+ * gnu/testlet/java/security/key.java:
+ Moved to gnu/testlet/gnu/java/security/key.
+ * gnu/testlet/java/security/jce:
+ Moved to gnu/testlet/gnu/java/security/jce.
+ * gnu/testlet/java/security/hash:
+ Moved to gnu/testlet/gnu/java/security/hash.
+
+2006-01-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
+ (test): Corrected test for null argument,
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
+ (test2): Likewise.
+
+2006-01-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java
+ (test): Changed getBackground() --> getFont().
+
+2006-01-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java
+ (test): Don't assume there are zero listeners at start of test,
+ * gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java
+ (test): Likewise.
+
+2006-01-29 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/crypto/mac/TestOfHMacCloneability.java: New file.
+ * gnu/testlet/javax/crypto/jce/TestOfMac.java (testEquality): Skip OMAC
+ with null cipher.
+ Use two MDGenerators directly instantiated.
+ (testCloneability): Use a directly instantiaed MDGenerator.
+
+2006-01-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java
+ (testMinimumViewSize): New test.
+
+2006-01-28 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/crypto/sasl/TestOfClientFactory.java: New file.
+ * gnu/testlet/javax/crypto/sasl/TestOfServerFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/sasl/srp/TestOfSRPAuthInfoProvider.java:
+ Likewise.
+ * gnu/testlet/javax/crypto/sasl/srp/TestOfSRPPasswordFile.java: Likewise.
+ * gnu/testlet/javax/crypto/sasl/srp/TestOfSRPPrimitives.java: Likewise.
+ * gnu/testlet/javax/crypto/prng/TestOfARCFour.java: Likewise.
+ * gnu/testlet/javax/crypto/prng/TestOfICMGenerator.java: Likewise.
+ * gnu/testlet/javax/crypto/prng/TestOfPBKDF2.java: Likewise.
+ * gnu/testlet/javax/crypto/prng/TestOfPRNGFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/pad/TestOfPadFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/pad/TestOfPKCS7.java: Likewise.
+ * gnu/testlet/javax/crypto/pad/TestOfTBC.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfCBC.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfCFB.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfEAX.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfECB.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfModeFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/mode/TestOfOFB.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfHMac.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfHMacFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfHMacMD5.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfHMacSha1.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfMacFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfOMAC.java: Likewise.
+ * gnu/testlet/javax/crypto/mac/TestOfTMMH16.java: Likewise.
+ * gnu/testlet/javax/crypto/keyring/TestOfPrivateKeyring.java: Likewise.
+ * gnu/testlet/javax/crypto/keyring/TestOfPublicKeyring.java: Likewise.
+ * gnu/testlet/javax/crypto/key/dh/TestOfDHCodec.java: Likewise.
+ * gnu/testlet/javax/crypto/key/dh/TestOfDHKeyAgreements.java: Likewise.
+ * gnu/testlet/javax/crypto/key/dh/TestOfDHKeyGeneration.java: Likewise.
+ * gnu/testlet/javax/crypto/key/srp6/TestOfSRP6KeyAgreements.java:
+ Likewise.
+ * gnu/testlet/javax/crypto/key/srp6/TestOfSRPCodec.java: Likewise.
+ * gnu/testlet/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java:
+ Likewsie.
+ * gnu/testlet/javax/crypto/jce/TestOfCipher.java: Likewise.
+ * gnu/testlet/javax/crypto/jce/TestOfMac.java: Likewise.
+ * gnu/testlet/javax/crypto/jce/TestOfOtherProviders.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/BaseCipherTestCase.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfAnubis.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfBlowfish.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfCast5.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfCipherFactory.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfDES.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfKhazad.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfNullCipher.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfRijndael.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfSerpent.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfSquare.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfTripleDES.java: Likewise.
+ * gnu/testlet/javax/crypto/cipher/TestOfTwofish.java: Likewise.
+ * gnu/testlet/javax/crypto/assembly/TestOfAssembly.java: Likewise.
+ * gnu/testlet/javax/crypto/assembly/TestOfCascade.java: Likewise.
+ * gnu/testlet/java/security/sig/dss/TestOfDSSSignature.java: Likewise.
+ * gnu/testlet/java/security/sig/dss/TestOfDSSSignatureCodec.java:
+ Likewise.
+ * gnu/testlet/java/security/sig/rsa/TestOfRSAPKCS1V1_5Signature.java:
+ Likewise.
+ * gnu/testlet/java/security/sig/rsa/TestOfRSAPSSSignature.java:
+ Likewise.
+ * gnu/testlet/java/security/sig/rsa/TestOfRSASignatureCodec.java:
+ Likewise.
+ * gnu/testlet/java/security/sig/TestOfSignatureFactory.java: Likewise.
+ * gnu/testlet/java/security/key/dss/TestOfDSSCodec.java: Likewise.
+ * gnu/testlet/java/security/key/dss/TestOfDSSKeyGeneration.java:
+ Likewise.
+ * gnu/testlet/java/security/key/rsa/TestOfRSACodec.java: Likewise.
+ * gnu/testlet/java/security/key/rsa/TestOfRSAKeyGeneration.java:
+ Likewise.
+ * gnu/testlet/java/security/key/TestOfKeyPairGeneratorFactory.java:
+ Likewise.
+ * gnu/testlet/java/security/jce/TestOfKeyPairGenerator.java: Likewise.
+ * gnu/testlet/java/security/jce/TestOfMessageDigest.java: Likewise.
+ * gnu/testlet/java/security/jce/TestOfProvider.java: Likewise.
+ * gnu/testlet/java/security/jce/TestOfSignature.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfHashFactory.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfHaval.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfMD2.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfMD4.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfMD5.java: Likewsie.
+ * gnu/testlet/java/security/hash/TestOfRipeMD128.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfRipeMD160.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfSha160.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfSha256.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfSha384.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfTiger.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfSha512.java: Likewise.
+ * gnu/testlet/java/security/hash/TestOfWhirlpool.java: Likewise.
+
+2006-01-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Runtime/security.java: Ignore the
+ modifyThread check that Classpath's reference VMProcess calls.
+
+2006-01-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Runtime/security.java: New test.
+
+2006-01-27 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager2.java: Added the ability to
+ abort tests when the permission is checked, to allow us to test
+ things that we don't actually want doing.
+
+2006-01-27 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/crypto/jce/TestOfPR25981.java: New test.
+
+2006-01-26 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/ClassLoader/security.java: New test.
+
+2006-01-26 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/math/BigDecimal/compareTo.java: New tests.
+
+2006-01-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/createPosition.java: New tests,
+ * gnu/testlet/javax/swing/text/PlainDocument/getLength.java: Likewise,
+ * gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java: Likewise,
+ * gnu/testlet/javax/swing/text/PlainDocument/getText.java: Likewise,
+ * gnu/testlet/javax/swing/text/PlainDocument/insertString.java
+ (test): Call new test methods,
+ (testArguments): New method,
+ (testPositions): Likewise,
+ * gnu/testlet/javax/swing/text/PlainDocument/remove.java: New tests.
+
+2006-01-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java
+ (testGeneral): Corrected test.
+
+2006-01-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/constructors.java: New tests,
+ * gnu/testlet/javax/swing/text/GapContent/createPosition.java: Likewise,
+ * gnu/testlet/javax/swing/text/GapContent/getChars.java: Likewise,
+ * gnu/testlet/javax/swing/text/GapContent/getString.java: Likewise,
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java
+ (test): Call testGeneral(TestHarness),
+ (testGeneral): New method,
+ * gnu/testlet/javax/swing/text/GapContent/length.java: New tests,
+ * gnu/testlet/javax/swing/text/GapContent/MyGapContent.java: New support class,
+ * gnu/testlet/javax/swing/text/GapContent/remove.java: New tests.
+
+2006-01-24 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/serialization.java: New test.
+
+2006-01-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java: Updated header and imports,
+ * gnu/testlet/javax/swing/text/StringContent/constructors.java: New tests,
+ * gnu/testlet/javax/swing/text/StringContent/createPosition.java: Likewise,
+ * gnu/testlet/javax/swing/text/StringContent/getChars.java: Likewise,
+ * gnu/testlet/javax/swing/text/StringContent/getString.java: Likewise,
+ * gnu/testlet/javax/swing/text/StringContent/insertString.java: Likewise,
+ * gnu/testlet/javax/swing/text/StringContent/insertUndo.java: Updated header and imports,
+ * gnu/testlet/javax/swing/text/StringContent/length.java: New tests,
+ * gnu/testlet/javax/swing/text/StringContent/remove.java: New tests,
+ * gnu/testlet/javax/swing/text/StringContent/removeUndo.java: Updated header and imports,
+ * gnu/testlet/javax/swing/text/StringContent/stickyPosition.java: Likewise,
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java: Likewise.
+
+2006-01-23 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java: Added more detailed tests.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java: Removed this test because it is a duplicate of
+ ElementStructure1.java.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java: Added more detailed tests.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java: Likewise.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java: Likewise.
+
+2006-01-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/Segment/clone.java: New test,
+ * gnu/testlet/javax/swing/text/Segment/constructors.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/current.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/first.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/getBeginIndex.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/getEndIndex.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/getIndex.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/isPartialReturn.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/last.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/next.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/previous.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/setIndex.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/setPartialReturn.java: Likewise,
+ * gnu/testlet/javax/swing/text/Segment/toString.java: Likewise.
+
+2006-01-22 James Damour <James.Damour@corp.request.com>
+
+ * java/awt/Container/addImpl.java
+ (test): Added check for non-null String passed to addLayoutComponent.
+
+2006-01-21 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/CharacterClasses.java:
+ Commented out a case of "[[]" which ceased to be valid.
+
+2006-01-20 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java:
+ New test.
+
+2006-01-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/Buffer_Test.java: Added 'GNU' tag,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/Constants_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/ReaderTokenizer_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/AttributeList_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/DTD_test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Entity_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TagElement_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Text.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java: Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java: Likewise.
+
+2006-01-19 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/argument.java: New test.
+
+2006-01-19 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: Add checks
+ for ports and (minimally) for hosts.
+
+2006-01-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Added more complicated tests and checkpoints.
+
+2006-01-18 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2:
+ Moved some cases from testdata2 to testdata1.
+
+2006-01-17 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: Remove a bit
+ of debugging code that sneaked through.
+
+2006-01-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/StyleConstants/constants.java: New file,
+ * gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getBackground.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getComponent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getForeground.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getIcon.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isBold.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isItalic.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setBackground.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setBold.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setComponent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setForeground.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setIcon.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setItalic.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java: Likewise,
+ * gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java: Likewise.
+
+2006-01-17 Pedro Izecksohn <izecksohn@yahoo.com>
+
+ * gnu/testlet/org/w3c/dom/childNodesLength.java (passed): Removed.
+ (checkNode): Don't check passed variable.
+
+2006-01-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Added more complicated tests and checkpoints.
+
+2006-01-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Fixed Tags, removed FIXME.
+
+2006-01-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ Added new checks.
+
+2006-01-16 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java:
+ New Class.
+
+2006-01-16 Pedro Izecksohn <izecksohn@yahoo.com>
+
+ * gnu/testlet/org/w3c/dom/childNodesLength.java: New test.
+ * gnu/testlet/org/w3c/dom/test.xml: New data file.
+
+2006-01-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager2.java (TestSecurityManager2):
+ Remove a now-unnecessary workaround.
+
+2006-01-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/net/SocketPermission/implies.java: New test.
+
+2006-01-16 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/javax/security/auth/login/TestOfPR25202.java: New file.
+ * gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java:
+ New file.
+ * gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java:
+ New file.
+ * gnu/testlet/javax/security/auth/login/DBLoginModule.java: New file.
+
+2006-01-14 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/SimpleDoc/: New directory.
+ * gnu/testlet/javax/print/SimpleDoc/constructor.java,
+ * gnu/testlet/javax/print/SimpleDoc/getAttributes.java,
+ * gnu/testlet/javax/print/SimpleDoc/getReaderForText.java,
+ * gnu/testlet/javax/print/SimpleDoc/getStreamForBytes.java: New tests.
+
+2006-01-13 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/standard,
+ * gnu/testlet/javax/print/attribute/standard/MediaSize: New directories.
+ * gnu/testlet/javax/print/attribute/standard/MediaSize/userClass.java:
+ New test.
+
+2006-01-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttribute.java: New file,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttributes.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/clone.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/constructors.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttributes.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/copyAttributes.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/EMPTY.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/equals.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttribute.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeCount.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeNames.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/getResolveParent.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/isDefined.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/isEmpty.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/isEqual.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttribute.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributes.java: Likewise,
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/setResolveParent.java: Likewise.
+
+2006-01-12 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/TransferHandler/TransferActionConstructor:
+ New test.
+
+2006-01-12 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextField/setDocument.java: New test.
+
+2006-01-12 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java: Added
+ new checks for ElementSpec data.
+
+2006-01-12 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java: New test.
+
+2006-01-12 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java: New Test.
+
+2006-01-11 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/util/Hashtable/EnumerateAndModify.java: New test.
+
+2006-01-05 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/PositionTest.java
+ (testComplex): Added more test cases.
+
+2006-01-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java: New test.
+
+2006-01-05 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/regex/Pattern/matches.java: Added some
+ test cases.
+
+2006-01-04 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java: New test.
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java: New test.
+
+2006-01-04 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/ObjectInputStream/security.java: New test.
+ * gnu/testlet/java/io/ObjectOutputStream/security.java: Likewise.
+
+2006-01-04 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/TestSecurityManager2.java (TestSecurityManager2):
+ Preload some classes to avoid infinite loops when in force.
+
+2006-01-03 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/String/getBytes13.java (dumpArray): New
+ method.
+ (test1Encoding): Use it.
+
+2006-01-03 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java:
+ (test): Fixed color.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java:i
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java:
+ (test): Fixed to set the current theme, otherwise the color returned is null.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java:
+ (test): Fixed color.
+
+2006-01-03 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java
+ (test): Fixed checks so they pass with the JDK.
+
+2006-01-03 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/UIManager/getUI.java
+ (test): Fixed check.
+
+2006-01-03 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java
+ (testConstructor1): Fixed typo in test. This now passes for us and the JDK.
+
+2006-01-03 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/security/Security/getProviders.java (test1Provider):
+ Ensure provider's name with extra spaces is recognized.
+
+2006-01-03  Raif S. Naffah  <raif@swiftdsl.com.au>
+
+ * gnu/testlet/java/security/MessageDigest/getInstance14.java (test):
+ Corrected string literal used in harness.checkPoint().
+ Added 2 new testcases to test passing Provider and Algorithm names with
+ extra spaces.
+ * gnu/testlet/java/security/Engine/getInstance.java: new file.
+ * gnu/testlet/java/net/InetAddress/getAllByName.java (test):
+ Ensure hostname strings with extra spaces are recognized.
+
+2006-01-01 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * .externalToolBuilders/MauveTestlet.launch: New file.
+
+2005-12-25 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/Collections/binarySearch.java: Added
+ test to check which object compareTo is called on and to check
+ to argument order for Comparable.compare().
+
+2005-12-24 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/InputStreamReader/getEncoding.java (test): Fix
+ call to check. Debug-print exception.
+
+2005-12-20 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Added checks for bindings in Button, CheckBox, EditorPane, List, TabbedPane,
+ ToggleButton and Tree. Fixed several regressions caused by these new checks and
+ Removed TODO comments for icons. There are no icons in the BasicL&F.
+
+2005-12-20 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Added checks for bindings in FormattedTextField's focusInputMap.
+
+2005-12-20 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Fixed a couple of typos.
+
+2005-12-22 Ito Kazumitasu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: Reverted.
+
+2005-12-21 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/SingleTestHarness.java: New file.
+
+2005-12-20 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Added more detailed tests for focusInputMaps.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java: Added another check to this test and also added a
+ harness.debug statement for an exception we're throwing now that we
+ shouldn't be.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java: Added more checks to this test.
+
+2005-12-20 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Added checks for TextArea.focusInputMap, TextField.focusInputMap, TextPane.focusInputMap,
+ and PasswordField.focusInputMap.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/AttributeSet: New directory.
+ * gnu/testlet/javax/swing/text/AttributeSet/isEqual.java: New test.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java: New test.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java: New test.
+
+2005-12-21 Raif S. Naffah <raif@swiftdsl.com.au>
+
+ * .externalToolBuilders/MauveBatchRunLaunch: new Eclipse Builder
+ * batch_run
+ (CLASSPATHBCP): new env variable.
+ (COMPILER): redefined using CLASSPATHBCP.
+
+2005-12-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java: New test.
+
+2005-12-19 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/StyledEditorKit: New Directory.
+ * gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java:
+ New Test.
+
+2005-12-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java:
+ Fixed tag.
+
+2005-12-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java:
+ (test): Add null argument test.
+
+2005-12-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComboBox/model.java: New test.
+
+2005-12-15 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java
+ Made tests more safe from sideeffects by using absolute Dimension
+ values instead of some size properties.
+
+2005-12-15 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComponent/getPreferredSize.java:
+ Added test for changing the value of preferred size.
+
+2005-12-14 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/25389:
+ * gnu/testlet/java/io/File/newFileURI.java (test): Expect
+ non-hierarchical URI to fail.
+
+2005-12-14 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: Changed a criterion.
+
+2005-12-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/newFileURI.java: New test.
+
+2005-12-13 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/security/Security/property.java: Test handling
+ of null values.
+
+2005-12-12 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComponent/getPreferredSize.java:
+ New test.
+
+2005-12-12 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java
+ New test for this layout manager.
+
+2005-12-09 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/Class/security.java: New test.
+
+2005-12-09 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/javax/swing/text/html/HTML/ElementTagAttributeTest.java:
+ New test.
+
+2005-12-08 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JEditorPane/ConstructorsAndTypes.java: New test.
+
+2005-12-08 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JEditorPane/ContentType.java: New test.
+
+2005-12-07 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java:
+ Removed missing import.
+
+2005-12-07 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/BoxView: New directory.
+ * gnu/testlet/javax/swing/text/BoxView/spans.java: New test.
+
+2005-12-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JFileChooser/MyFileChooser.java:
+ New support class.
+
+2005-12-07 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Double/toHexString.java: New file.
+ * gnu/testlet/java/lang/Float/toHexString.java: New file.
+
+2005-12-07 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextArea/preferredSize.java: New test.
+
+2005-12-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComponent/constructor.java: New test.
+ Checks the functionality of the constructor.
+
+2005-12-07 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java: More tests.
+
+2005-12-07 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/net/DatagramSocket/bind.java: New file.
+
+2005-12-06 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize2.java: New file.
+
+2005-12-06 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/maxLayoutSize.java: New file.
+
+2005-12-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createActionMap.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getFileName.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMaximumSize.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/MyMetalFileChooserUI.java:
+ New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/setFileName.java:
+ New file.
+
+2005-12-05 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/nio/DoubleBuffer/compareTo.java: New test.
+ * gnu/testlet/java/nio/FloatBuffer/compareTo.java: New test.
+
+2005-12-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JPanel/setBorder.java: New test.
+
+2005-12-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileInputStream/security.java: Catch
+ exceptions generated by unexpected permission checks..
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+
+2005-12-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/RandomAccessFile/security.java: New tests.
+
+2005-12-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileOutputStream/security.java: Final set of
+ throwpoint tests.
+
+2005-12-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileInputStream/security.java: More tests.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+
+2005-12-04 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Test URL with null context.
+
+2005-12-02 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java:
+ Added 3 new tests to this file.
+
+2005-12-02 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FileInputStream/security.java: New test.
+ * gnu/testlet/java/io/FileOutputStream/security.java: Likewise.
+
+2005-12-01 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java: Annotate
+ SecurityException throwpoint tests.
+
+2005-11-30 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JFormattedTextField: New directory.
+ * gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java: New test.
+
+2005-11-30 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/File/security.java: Reenable listRoots test.
+
+2005-11-29 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URL/URLTest.java (testall): Enable
+ URLStreamHandler test.
+ (test_URLStreamHandler): Added test for classpath PR 25141.
+
+2005-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Number/NewNumber.java: Mark not-a-test.
+ * gnu/testlet/java/lang/reflect/Other.java: Likewise.
+
+2005-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/pkg/test1.java: Mark not-a-test.
+ * gnu/testlet/java/lang/Class/pkg/test2.java: Likewise.
+ * gnu/testlet/java/lang/Class/pkg/test3.java: Likewise.
+ * gnu/testlet/java/lang/Class/pkg/test4.java: Likewise.
+
+2005-11-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollBar/constructors.java
+ (constructor1): Use harness.debug() to log exception,
+ (constructor2): Likewise.
+
+2005-11-24 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/InternationalFormatter: New directory.
+ * gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java: New test.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java:
+ New tests,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java:
+ New tests,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemCheckIcon.java:
+ New tests.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollPane/createHorizontalScrollBar.java:
+ New test,
+ * gnu/testlet/javax/swing/JScrollPane/createVerticalScrollBar.java:
+ New test.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JScrollBar/constructors.java: New test.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getListeners.java: New test.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Container/getListeners.java: New test.
+
+2005-11-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/getListeners.java: New test.
+
+2005-11-23 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java: Fixed some tests.
+
+2005-11-23 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java: Added new tests for this class.
+
+2005-11-22 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/MaskFormatterTest.java: Added more
+ tests.
+
+2005-11-22 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/MaskFormatterTest.java: New test.
+
+2005-11-22 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java: New test.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/Size2DSyntax: New directory.
+ * gnu/testlet/javax/print/attribute/Size2DSyntax/simple.java: New Test.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java (test):
+ Added test for special toString case and bundle them into a checkpoint.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/TextSyntax: New directory.
+ * gnu/testlet/javax/print/attribute/TextSyntax/constructors.java:
+ New tests for constructors.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/ResolutionSyntax: New directory.
+ * gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java:
+ New tests for conversion, lessThanOrEqual and equal methods.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java:
+ Corrected tags to JDK1.4.
+ (test): Added new tests for contains, constructor and normalization.
+
+2005-11-19 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java:
+ Reformatted to match coding style.
+
+2005-11-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/setPreferredSize.java
+ (event): New field,
+ (test): Call new test methods,
+ (testGeneral): New test method,
+ (testPropertyChangeEvent): New test method,
+ (propertyChange): New method.
+
+2005-11-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/setMinimumSize.java
+ (event): New field,
+ (test): Call new test methods,
+ (testGeneral): New test method,
+ (testPropertyChangeEvent): New test method,
+ (propertyChange): New method.
+
+2005-11-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/setMaximumSize.java:
+ (event): New field,
+ (test): Call new test methods,
+ (testGeneral): New test method,
+ (testPropertyChangeEvent): New test method,
+ (propertyChange): New method.
+
+2005-11-17 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JEditorPane/ViewType.java: New test.
+
+2005-11-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/lang/SecurityManager: New directory.
+ * gnu/testlet/java/lang/SecurityManager/thread.java: New test.
+
+2005-11-16 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JSplitPane/Constructor.java: Added several
+ new tests.
+ * gnu/testlet/javax/swing/JSplitPane/setComponent.java: Likewise.
+
+2005-11-16 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JSplitPane: New directory.
+ * gnu/testlet/javax/swing/JSplitPane/Constructor.java: New test.
+ * gnu/testlet/javax/swing/JSplitPane/setComponent.java: New test.
+
+2005-11-16 David Daney <ddaney@avtrex.com)
+
+ * gnu/testlet/java/util/Calendar/set.java (test): Call ...
+ (testModSeconds) New test case.
+
+2005-11-16 Gary Benson <gbenson@redhat.com>
+
+ * gnu/testlet/java/io/FilePermission/simple.java: Added tests
+ for implies() action checking.
+
+2005-11-16 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/io/PrintStream/encodings.java: Removed
+ some tests whose results depend on the environment.
+
+2005-11-14 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/io/PrintStream/encodings.java: Reset the
+ system property after the testing.
+
+2005-11-14 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/AttributeSetUtilities/simple.java
+
+2005-11-14 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/InputMap/newMapKeysNull.java: Added a check
+ for allKeys() in addition to existing check for keys().
+ * gnu/testlet/javax/swing/ActionMap/newMapKeysNull.java: New test.
+
+2005-11-14 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/io/PrintStream/encodings.java: New test.
+
+2005-11-13 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/HashAttributeSet/emptySet.java,
+ * gnu/testlet/javax/print/attribute/HashAttributeSet/nullTests.java,
+ * gnu/testlet/javax/print/attribute/HashAttributeSet/populatedSet.java,
+ New tests.
+ * gnu/testlet/javax/print/attribute/HashAttributeSet/SimpleAttribute.java,
+ * gnu/testlet/javax/print/attribute/HashAttributeSet/AnotherSimpleAttribute.java,
+ New helper classes for emptySet and populatedSet tests.
+
+2005-11-12 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/javax/print/attribute/EnumSyntax/serialize.java: New test
+ * gnu/testlet/javax/print/attribute/EnumSyntax/equals.java: New test.
+ * gnu/testlet/javax/print/attribute/EnumSyntax/WrongEnumSyntax.java,
+ * gnu/testlet/javax/print/attribute/EnumSyntax/CorrectEnumSyntax.java:
+ New helper classes for serialization and equal tests.
+
+2005-11-12 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/io/File/emptyFile.java: New test.
+
+2005-11-12 Wolfgang Baer <WBaer@gmx.de>
+
+ * gnu/testlet/java/io/ObjectInputStream/readResolve.java: New test.
+ * gnu/testlet/java/io/ObjectInputStream/ReadResolveHelper.java:
+ New Helper class for readResolve test.
+
+2005-11-09 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/replaceUIActionMap.java:
+ New test.
+
+2005-11-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JList/constructors.java: New test,
+ * gnu/testlet/javax/swing/JList/getBackground.java: New test,
+ * gnu/testlet/javax/swing/JList/getSelectionBackground.java: New test,
+ * gnu/testlet/javax/swing/JList/setBackground.java: New test,
+ * gnu/testlet/javax/swing/JList/setModel.java: New test,
+ * gnu/testlet/javax/swing/JList/setSelectionBackground: New test.
+
+2005-11-08 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/SimpleTestHarness.java: Don't implement config.
+ (getSourceDirectory): Removed.
+ (getTempDirectory): Removed.
+ (getPathSeparator): Removed.
+ (getSeparator): Removed.
+ (getMailHost): Removed.
+ * gnu/testlet/TestHarness.java: Implements config.
+ (getSourceDirectory): Added.
+ (getTempDirectory): Added.
+ (getPathSeparator): Added.
+ (getSeparator): Added.
+ (getMailHost): Added.
+ * gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java:
+ Don't cast to SimpleTestHarness.
+ * gnu/testlet/java/io/File/jdk11.java: Likewise.
+ * gnu/testlet/java/net/Socket/SocketTest.java: Likewise.
+ * gnu/testlet/java/net/Socket/jdk12.java: Remove SimpleTestHarness
+ import.
+ * gnu/testlet/java/net/Socket/jdk13.java: Likewise.
+ * gnu/testlet/java/net/Socket/jdk13.java: Likewise.
+
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java: New test.
+ * gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java: New test.
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentX.java:
+ New test.
+ * gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentY.java:
+ New test.
+ * gnu/testlet/javax/swing/JRootPane/RootLayout/layoutContainer.java:
+ New test.
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComponent/getAlignmentX.java: New test.
+ * gnu/testlet/javax/swing/JComponent/getAlignmentY.java: New test.
+ * gnu/testlet/javax/swing/JComponent/TestLayout: New auxiliary class.
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Container/getAlignmentX.java: New test.
+ * gnu/testlet/java/awt/Container/getAlignmentY.java: New test.
+ * gnu/testlet/java/awt/Container/TestLayout: New auxiliary class.
+
+2005-11-08 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/JTextField/CopyPaste.java:
+ New test.
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/getComponentsInLayer.java:
+ New test.
+
+2005-11-08 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/invalidate.java
+ (testInvalidateInvalidComponent): New test.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java
+ (testConstructor1): Added new checks.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java:
+ New support class.
+
+2005-11-07 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/lang/String/decode.java: Added new tests
+ for UTF-16 encodings.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java
+ (test): set look and feel and added new checks,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java
+ (test): added new checks,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java
+ (test): Use MyBasicComboBoxUI,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java
+ (test): Move code to new method testNonEditable(), replace with calls
+ to new test methods,
+ (testNonEditable): New method,
+ (testEditable): New method,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java
+ (getArrowButton): new method.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java
+ (test): added new checks,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/MyMetalComboBoxEditor.java:
+ New support class.
+
+2005-11-07 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JApplet/isRootPaneCheckingEnabled.java:
+ New test.
+ * gnu/testlet/javax/swing/JDialog/isRootPaneCheckingEnabled.java:
+ New test.
+ * gnu/testlet/javax/swing/JFrame/isRootPaneCheckingEnabled.java:
+ New test.
+ * gnu/testlet/javax/swing/JInternalFrame/isRootPaneCheckingEnabled.java:
+ New test.
+ * gnu/testlet/javax/swing/JWindow/isRootPaneCheckingEnabled.java:
+ New test.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java:
+ New test.
+
+2005-11-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/addActionListener.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/constructor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/removeActionListener.java:
+ New test.
+
+2005-11-04 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/BoxLayout/layoutContainer.java: Added new
+ test for overflow case.
+
+2005-11-01 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Dialog/size.java: Fixed logic in test case.
+
+2005-11-02 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/getForeground: Modified test
+ to show that the foreground is fetched from the parent component
+ if present.
+
+2005-11-02 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/getMaximumSize.java: New test.
+
+2005-11-01 Lillian Angel <langel@redhat.com>
+
+ * gnu/testlet/java/awt/Dialog/size.java: New Test.
+
+2005-11-02 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Container/addImpl.java: New test.
+ * gnu/testlet/java/awt/Container/DisabledEventQueue: Auxiliary
+ class for the above test.
+
+2005-11-01 Tom Tromey <tromey@redhat.com>
+
+ * .settings/org.eclipse.jdt.core.prefs: Ensure 1.4 settings are used.
+ * .settings/org.eclipse.jdt.ui.prefs: Likewise.
+
+2005-11-01 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/java/net/URL/URLTest.java:
+ (test_cr601a): Added "//" to test values.
+ (test_cr601b): Dito.
+
+2005-10-30 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputStream/registerValidation.java:
+ Check fields and priority order.
+ * gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java:
+ Add self reference, register multiple times with different priorities,
+ add equals().
+
+2005-10-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/runner/Mauve.java
+ (execute): save default locale before running tests and restore it
+ after,
+ (getSourceDirectory): removed inappropriate return value,
+ (main): removed redundant code.
+
+2005-10-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/runner/Mauve.java: reformatted and updated header.
+
+2005-10-28 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/Component/requestFocus.java: Changed from JFrame
+ to Frame, changed Tags from JDK 1.2 to JDK 1.0.
+
+2005-10-28 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/Component/requestFocus.java: New test.
+
+2005-10-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JFileChooser/changeToParentDirectory.java:
+ New test.
+
+2005-10-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java:
+ New test.
+
+2005-10-28 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTable/setModel.java
+ (testPropertyFired): New test method.
+ (testSelectionModel): New test method.
+ (testLeadAnchorSelectionUpdate): New test method.
+
+2005-10-28 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java:
+ Give 500 ms for the server thread to start.
+
+2005-10-27 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTextField/createDefaultModel.java:
+ New test.
+ * gnu/testlet/javax/swing/text/PlainDocument/insertString.java:
+ New test.
+
+2005-10-27 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/java/io/File/security.java (test): Delete tmpdir2
+ in the cleanup.
+
+2005-10-27 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java:
+ New test.
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java:
+ New test.
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java:
+ New test.
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java:
+ Added some more methods to make protected fields/methods
+ publicly accessible.
+
+2005-10-26 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JTable/isRowSelected.java: New test.
+ * gnu/testlet/javax/swing/JTable/isColumnSelected.java: New test.
+
+2005-10-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java: New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java: New file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java: New file.
+
+2005-10-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java: New file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java: New file.
+
+2005-10-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/AttributedCharacterIterator/getAttribute.java:
+ New test,
+ * gnu/testlet/java/text/AttributedCharacterIterator/getRunStart.java:
+ New test,
+ * gnu/testlet/java/text/AttributedString/addAttribute.java: updated
+ FSF address,
+ (test2): use int check rather than '==',
+ * gnu/testlet/java/text/AttributedString/constructors.java: updated
+ FSF address,
+ (testConstructor1): check null argument,
+ (testConstructor2): check illegal arguments.
+
+2005-10-23 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/nio/channels/SocketChannel/select.java: Check that
+ register only authorise non-blocking channel.
+
+2005-10-23 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/java/io/File/createFile.java: Added cleanup.
+
+2005-10-23 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/java/io/File/createFile.java: New test.
+
+2005-10-21 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/TestLookAndFeel.java: New support class,
+ * gnu/testlet/javax/swing/JComboBox/setEditor.java: Updated import for
+ TestLookAndFeel.
+
+2005-10-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/reflect/Proxy.java: Use proper class loader
+ for the proxy, so that the serialization test succeeds.
+
+2005-10-20 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/DefaultListSelectionModel: New directory.
+ * gnu/testlet/javax/swing/DefaultListSelectionModel/leadSelectionIndex.java: New test.
+
+2005-10-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
+ (test): an additional check for 'Button.margin'.
+
+2005-10-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMaximumSize.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java: New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java: New support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUILAF.java: Likewise.
+
+2005-10-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JLabel/constructor.java
+ (test): set MetalLookAndFeel and check default colors.
+
+2005-10-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComboBox/MyJComboBox.java: New support class,
+ * gnu/testlet/javax/swing/JComboBox/setModel.java: New test,
+ * gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java: New test.
+
+2005-10-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComboBox/addItem.java: New test,
+ * gnu/testlet/javax/swing/JComboBox/getEditor.java: New test,
+ * gnu/testlet/javax/swing/JComboBox/removeItem.java: New test,
+ * gnu/testlet/javax/swing/JComboBox/setEditable.java: New test,
+ * gnu/testlet/javax/swing/JComboBox/setEditor.java: New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/UIManager/TestLabelUI.java:
+ New auxiliary helper class.
+ * gnu/testlet/javax/swing/UIManager/getUI.java:
+ New test.
+ * gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java:
+ Added default test UI for JLabel.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JList/AccessibleJList/TestList.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/contentsChanged.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleChild.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleRole.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleStateSet.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/intervalAdded.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/intervalRemoved.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/valueChanged.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleRole.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleStateSet.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getBackground.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getCursor.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getForeground.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isEnabled.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isFocusTraversable.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isShowing.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isVisible.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setBackground.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setCursor.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setEnabled.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setFont.java
+ * gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setForeground.java
+ New tests.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLabel/TestLabel.java:
+ New auxiliary helper class.
+ * gnu/testlet/javax/swing/JLabel/setText.java:
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JCheckBox/constructor.java: New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/SizeRequirements/calculateAlignedPositions.java:
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/RepaintManager/DisabledEventQueue.java:
+ Auxiliary helper class.
+ * gnu/testlet/javax/swing/RepaintManager/addDirtyRegion.java
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JViewport/TestViewport.java:
+ Auxiliary helper class.
+ * gnu/testlet/javax/swing/JViewport/setView.java:
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/resetViewport.java:
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JComponent/TestComponent.java:
+ New auxiliary helper class.
+ * gnu/testlet/javax/swing/JComponent/paint.java:
+ * gnu/testlet/javax/swing/JComponent/setAlignmentX.java:
+ * gnu/testlet/javax/swing/JComponent/setAlignmentY.java:
+ * gnu/testlet/javax/swing/JComponent/setBackground.java:
+ * gnu/testlet/javax/swing/JComponent/setBorder.java:
+ * gnu/testlet/javax/swing/JComponent/setEnabled.java:
+ * gnu/testlet/javax/swing/JComponent/setFont.java:
+ * gnu/testlet/javax/swing/JComponent/setForeground.java:
+ * gnu/testlet/javax/swing/JComponent/setMaximumSize.java:
+ * gnu/testlet/javax/swing/JComponent/setMinimumSize.java:
+ * gnu/testlet/javax/swing/JComponent/setOpaque.java:
+ * gnu/testlet/javax/swing/JComponent/setPreferredSize.java:
+ * gnu/testlet/javax/swing/JComponent/setUI.java:
+ * gnu/testlet/javax/swing/JComponent/setVisible.java:
+ New tests.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/insertString.java:
+ New test.
+
+2005-10-18 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/AbstractButton/createChangeListener.java:
+ New test.
+ * gnu/testlet/javax/swing/AbstractButton/TestButton.java:
+ Test button class.
+
+2005-10-18 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/reflect/Proxy/check13.java: Added
+ (de)serialization test.
+
+2005-10-17 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/InputMap: New directory.
+ * gnu/testlet/javax/swing/InputMap/newMapKeysNull.java: New test.
+
+2005-10-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Component/getForeground.java: New test.
+
+2005-10-16 Fabien DUMINY <fduminy@jnode.org>
+
+ * gnu/testlet/runner/TestletToAPI.java : added
+ * README.TestletToAPI : added
+
+2005-10-13 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+ * gnu/testlet/org/omg/CORBA/ORB/DirectTest.java: Do not set the thread
+ context class loader (test the work of VMStackWalker).
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java:
+ Marked as 'not-a-test',
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java:
+ Likewise,
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java:
+ Likewise,
+ * gnu/testlet/java/util/TreeSet/basic.java:
+ Implemented Testlet,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java:
+ Marked as 'not-a-test'.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
+ (test): Strengthened the test for the 'List.focusCellHighlightBorder'
+ default.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMaximumSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMinimumSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getPreferredSize.java:
+ New test.
+
+2005-10-13 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java,
+ gnu/testlet/org/omg/CORBA/ORB/DirectTest.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java:
+ Set the thread context class loader to the loader that loaded that test.
+ * gnu/testlet/org/omg/PortableServer/POA/testForwarding.java: Give more
+ time to close the socket.
+ * gnu/testlet/java/net/ServerSocket/ReturnOnClose.java: New test.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/MyBasicFileChooserUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButton.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonMnemonic.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonToolTipText.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveSelectionAciton.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getCancelSelectionAction.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getChangeToParentDirectoryAction.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDialogTitle.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDirectoryName.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileName.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileView.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getGoHomeAction.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getNewFolderAction.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getUpdateAction.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installIcons.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installStrings.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/uninstallStrings.java: new test.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java:
+ New test.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/constructor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getButtonWidth.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMaximumSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMinimumSize.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getPreferredSize.java:
+ New test.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getDisabledTextColor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getFocusColor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getSelectColor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/MyMetalToggleButtonUI.java:
+ New support class.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/constructor.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/createUI.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/getAcceleratorString.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/MyMetalToolTipUI.java:
+ New support class.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboBox.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboIcon.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isFocusTraversable.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isIconOnly.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboBox.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboIcon.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setEnabled.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setIconOnly.java:
+ New test.
+
+2005-10-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIDefaults/getBoolean.java:
+ New test.
+
+2005-10-12 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java:
+ New test.
+
+2005-10-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
+ (test): strengthened tests for FileView icons.
+
+2005-10-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JFileChooser/accept.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/addChoosableFileFilter.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/constructors.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getAccessory.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getApproveButtonMnemonic.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getApproveButtonText.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getApproveButtonToolTipText.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getChoosableFileFilters.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getControlButtonsAreShown.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getDialogTitle.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getDialogType.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getFileFilter.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getFileSelectionMode.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getFileSystemView.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getFileView.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/getSelectedFiles.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/isAcceptAllFileFilterUsed.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/isFileHidingEnabled.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/MyFileFilter.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/MyFileSystemView.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/removeChoosableFileFilter.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setAcceptAllFileFilterUsed.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setAccessory.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setApproveButtonMnemonic.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setApproveButtonText.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setApproveButtonToolTipText.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setControlButtonsAreShown.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setCurrentDirectory.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setDialogTitle.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setDialogType.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setFileFilter.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setFileHidingEnabled.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setFileSelectionMode.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setFileSystemView.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setFileView.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setSelectedFile.java: new test,
+ * gnu/testlet/javax/swing/JFileChooser/setSelectedFiles.java: new test.
+
+2005-10-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java: updated header,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java
+ (test): added new check,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java
+ (test): added new check,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java: new test.
+
+2005-10-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/sleep.java: Explicitly wait for helper
+ thread to start sleeping. Add extra debug info.
+
+2005-10-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
+ (test1): added checks for old and new values the same, and old and new
+ values both null.
+
+2005-10-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java
+ (index0): removed,
+ (index1): likewise,
+ (eventType): likewise,
+ (events): new field,
+ (contentsChanged): add event to events list,
+ (intervalAdded): likewise,
+ (intervalRemoved): likewise,
+ (test): revised tests to use new events list, and added several new
+ checks.
+
+2005-10-11 Fabien DUMINY <fduminy@jnode.org>
+
+ * gnu/testlet/runner/CreateTags.java : fixed bug with testlet name extraction under Windows
+
+2005-10-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/filechooser/FileSystemView/getFileSystemView.java:
+ New test.
+
+2005-10-10 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/border/TitledBorder/constructors.java: New test,
+ * gnu/testlet/javax/swing/border/TitledBorder/getBorder.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitle.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitleColor.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitleFont.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitleJustification.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/isBorderOpaque.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setBorder.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitle.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitleColor.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitleFont.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitleJustification.java: Likewise,
+ * gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java: Likewise.
+
+2005-10-07 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Long/Tests15.java: Fixed typo in Tags.
+
+2005-10-06 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/JLabel/constructor.java: New test.
+
+2005-10-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java:
+ New file.
+
+2005-10-06 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java:
+ Adapted to use in value type tests for RMI-IIOP as well.
+ * gnu/testlet/javax/swing/rmi/CORBA/Tie/myStructure.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/NodeObject.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/Externa.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/RMI_test.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/_RMI_test_Stub.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/RMI_testImpl.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/_RMI_testImpl_Tie.java,
+ gnu/testlet/javax/swing/rmi/CORBA/Tie/RMI_IIOP.java: New tests.
+
+2005-10-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/AccessController/doPrivileged.java:
+ New test.
+
+2005-10-05 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java:
+ New test.
+
+2005-10-04 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/java/awt/Component/getFont.java: New test.
+
+2005-10-03 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java:
+ New test.
+
+2005-10-02 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java
+ (getDefaultTextIconGapField): new method,
+ (getDefaultTextShiftOffsetField): new method,
+ (setDefaultTextShiftOffsetField): new method,
+ (getTextShiftOffset): new method,
+ (setTextShiftOffset): new method,
+ (clearTextShiftOffset): new method,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java:
+ New test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java:
+ New test.
+
+2005-10-02 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractButton/setRolloverEnabled.java:
+ New test.
+
+2005-09-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java: new test.
+
+2005-09-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/MyMetalButtonUI.java: support class.
+
+2005-09-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconHeight.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconWidth.java: new test.
+
+2005-09-30 Fabien DUMINY <fduminy@jnode.org>
+
+ * for Windows users: renamed gnu/testlet/java/awt/Color to gnu/testlet/java/awt/ColorClass
+ * for Windows users: renamed gnu/testlet/java/awt/Event to gnu/testlet/java/awt/EventClass
+ * for Windows users: renamed gnu/testlet/java/awt/Font to gnu/testlet/java/awt/FontClass
+
+2005-09-30 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java:
+ Fixed copyright info.
+
+2005-09-30 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java:
+ New test.
+
+2005-09-29 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentX.java
+ * gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentY.java
+ * gnu/testlet/javax/swing/OverlayLayout/layoutContainer.java
+ * gnu/testlet/javax/swing/OverlayLayout/maximumLayoutSize.java
+ * gnu/testlet/javax/swing/OverlayLayout/minimumLayoutSize.java
+ * gnu/testlet/javax/swing/OverlayLayout/preferredLayoutSize.java
+ New tests for the OverlayLayout.
+
+2005-09-29 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/GapContent/PositionTest.java:
+ Added test for Bug #24105.
+
+2005-09-29 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getMenuArrowIcon.java: new test.
+
+2005-09-28 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java: New test.
+
+2005-09-27 Robert Schuster <robertschuster@fsfe.org>
+ Suggested by: Torben.Nielsen@sagemdenmark.dk
+
+ * gnu/testlet/java/io/InputStreamReader/getEncoding.java: Check names
+ of extended (= optional) charset only if it is available.
+
+2005-09-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/containsChecksParent.java: New test.
+
+2005-09-27 Tom Tromey <tromey@redhat.com>
+
+ * .classpath: Changed where Classpath's class files are found.
+
+2005-09-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextArea/isValidChecks.java: Added copyright
+ info.
+ * gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java:
+ Fixed copyright info.
+
+2005-09-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch: Changed copyright info to reflect proper author.
+ * gnu/testlet/javax/swing/JEditorPane/getScrollableTrackvs.java:
+ Likewise.
+ * gnu/testlet/javax/swing/JFrame/glassPaneLayout.java: Likewise.
+
+2005-09-27 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch.java:
+ New test.
+
+2005-09-27 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Import Color.
+
+2005-09-26 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JEditorPane: New directory.
+ * gnu/testlet/javax/swing/JEditorPane/getScrollableTrackvs.java:
+ New test.
+
+2005-09-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java
+ (index0, index1, eventType): removed fields,
+ (events): new field,
+ (contentsChanged): use new events field,
+ (intervalAdded): likewise,
+ (intervalRemoved): likewise,
+ (test): check for multiple events.
+
+2005-09-23 Lillian Angel <langel@redhat.com>
+
+ * mauve/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java: Fixed syntax
+ error.
+
+2005-09-23 Lillian Angel <langel@redhat.com>
+
+ * mauve/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java: Added checks
+ for Tree.textForeground and Tree.textBackground.
+ * mauve/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java:
+ Fixed Tree.rowHeight check.
+
+2005-09-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/constructors.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/getElementAt.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/getIndexOf.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/getSelectedItem.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/getSize.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/insertElementAt.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/removeAllElements.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/removeElementAt.java: new test,
+ * gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java: new test.
+
+2005-09-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/getFont.java: new test,
+ * gnu/testlet/javax/swing/JComponent/MyJLabel.java: new support class.
+
+2005-09-21 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/ServerSocket/AcceptGetLocalPort.java: New test.
+
+2005-09-21 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/awt/BorderLayout/Test15.java: New file.
+
+2005-09-20 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/23974:
+ * gnu/testlet/java/io/File/newFile.java (test): Added tests.
+
+2005-09-20 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java
+ (dumpAttributes): Don't use local named 'enum'.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
+ (dumpAttributes): Don't use local named 'enum'.
+
+2005-09-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java:
+ (test): use more specific test for 'PasswordField.border'.
+
+2005-09-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getButtonBorder.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java
+ (test): added check for UIResource,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextBorder.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextFieldBorder.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getToggleButtonBorder.java: new test.
+
+2005-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/filechooser/FileView/getDescription.java: new test,
+ * gnu/testlet/javax/swing/filechooser/FileView/getIcon.java: new test,
+ * gnu/testlet/javax/swing/filechooser/FileView/getName.java: new test,
+ * gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java: new test,
+ * gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java: new test,
+ * gnu/testlet/javax/swing/filechooser/FileView/MyFileView.java: new support class.
+
+2005-09-19 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JFrame/glassPaneLayout.java: New test.
+
+2005-09-19 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java:
+ New test.
+
+2005-09-18 Tom Tromey <tromey@redhat.com>
+
+ * .settings/org.eclipse.jdt.ui.prefs: Added file template.
+
+2005-09-18 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Long/Tests15.java: New file.
+
+2005-09-16 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/javax/swing/Timer/test_23918: New test.
+
+2005-09-15 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Frame/isDisplayable1.java: Add comments.
+ * gnu/testlet/java/awt/Frame/isDisplayable2.java: Likewise.
+ * gnu/testlet/java/awt/Frame/isDisplayable3.java: Likewise.
+ * gnu/testlet/java/awt/Frame/isDisplayable4.java: Likewise.
+ * gnu/testlet/java/awt/Frame/isDisplayable5.java: Likewise.
+ * gnu/testlet/java/awt/Frame/isDisplayable6.java: New test.
+ * gnu/testlet/java/awt/Frame/isDisplayable7.java: New test.
+
+2005-09-15 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/Frame/isDisplayable4.java: New test.
+ * gnu/testlet/java/awt/Frame/isDisplayable5.java: New test.
+
+2005-09-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/constructor.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/constructor.java: new test.
+
+2005-09-15 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/java/awt/Frame/isDisplayable1.java: Added a check that
+ the JDialog's parent is the JFrame.
+ * gnu/testlet/java/awt/Frame/isDisplayable2.java: Likewise.
+ * gnu/testlet/java/awt/Frame/isDisplayable3.java: Added a check that
+ the JButton's parent is the JFrame.
+
+2005-09-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DecimalFormat/toPattern.java
+ (test): now calls test1() and test2(),
+ (test1): new method, copied code from topattern.java,
+ (test2): new method, code from original test() method,
+ * gnu/testlet/java/text/DecimalFormat/topattern.java.
+
+2005-09-14 Anthony Balkissoon <abalkiss@redhat.com>
+
+ * gnu/testlet/javax/swing/JTextArea/isValidChecks.java: new test.
+
+2005-09-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/MyBasicCheckBoxUI.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java: new test.
+
+2005-09-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java:
+ support class,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/borderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java:
+ new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/MyMenuItemBorder.java:
+ support class,
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java:
+ new test.
+
+2005-09-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java:
+ new test.
+
+2005-09-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/BoxLayout/addLayoutComponent.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/constants.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/constructor.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentX.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentY.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/invalidateLayout.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/layoutContainer.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/minimumLayoutSize.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/preferredLayoutSize.java: new test,
+ * gnu/testlet/javax/swing/BoxLayout/removeLayoutComponent.java: new test.
+
+2005-09-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComboBox/getPrototypeDisplayValue.java:
+ new test,
+ * gnu/testlet/javax/swing/JComboBox/setPrototypeDisplayValue.java:
+ likewise.
+
+2005-09-13 Roman Kennke <kennke@aicas.com>
+
+ * gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java:
+ New test.
+
+2005-09-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JComponent/putClientProperty.java: new test.
+
+2005-09-12 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/JTable/initializeLocalVars.java: New test.
+ * gnu/testlet/javax/swing/plaf/metal/OceanTheme/OceanThemeTest:
+ New test.
+ * gnu/testlet/javax/swing/table/TableColumn/properties.java: New test.
+
+2005-09-11 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Frame/isDisplayable1.java: New test.
+ * gnu/testlet/java/awt/Frame/isDisplayable2.java: New test.
+ * gnu/testlet/java/awt/Frame/isDisplayable3.java: New test.
+
+2005-09-11 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Window/pack1.java: New test.
+ * gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java: Cover
+ all modifiers.
+ * gnu/testlet/java/awt/event/MouseEvent/modifiers.java: New test.
+
+2005-09-09 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/text/html/CSS/Attribute.java:
+ New tests. Check if the CSS attribute constants are correct.
+
+2005-09-09 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/initComponentDefaults.java:
+ Renamed to getDefaults. That's the method we are actually testing
+ here.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java:
+ Added and fixed lots of tests for default colors.
+
+2005-09-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/MyBasicTextAreaUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/MyBasicTextFieldUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/MyBasicTextPaneUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java: new test.
+
+2005-09-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusTraversable.java: new test.
+
+2005-09-08 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/initComponentDefaults.java:
+ Added and improved tests for component color defaults.
+
+2005-09-08 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/text/GapContent/PositionTest.java:
+ New testcase to check for behaviour of positions in GapContent.
+
+2005-09-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/MyMetalRadioButtonUI.java: support file.
+
+2005-09-03 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucClientRequestInterceptor.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucInitialiser.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucIorInterceptor.java,
+ gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucServerRequestInterceptor.java:
+ New test.
+
+2005-09-02 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java
+ (test): commented out broken icon tests.
+
+2005-09-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/zip/Adler32/checksum.java: New test.
+
+2005-08-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java: new test,
+
+2005-08-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java: replaced with correct file.
+
+2005-08-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/MyBasicCheckBoxMenuItemUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/MyBasicMenuItemUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/MyBasicMenuUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/MyBasicRadioButtonMenuItemUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java: new test.
+
+2005-08-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/getPropertyPrefix.java: new test.
+
+2005-08-30 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/MyBasicRadioButtonUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java: new test,
+ * gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/MyBasicToggleButtonUI.java: new support class,
+ * gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java: new test.
+
+2005-08-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxMenuItemIcon.java: new file.
+
+2005-08-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initSystemColorDefaults.java: new tests.
+
+2005-08-24 Tom Tromey <tromey@redhat.com>
+
+ PR classpath/23183:
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test):
+ Added 2 new regression tests.
+
+2005-08-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/constructor.java: new file.
+
+2005-08-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/UIManager/addAuxiliaryLookAndFeel.java: new file,
+ * gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java: new file,
+ * gnu/testlet/javax/swing/UIManager/getAuxiliaryLookAndFeels.java: new file,
+ * gnu/testlet/javax/swing/UIManager/getCrossPlatformLookAndFeelClassName.java: new file,
+ * gnu/testlet/javax/swing/UIManager/getDefaults.java: new file,
+ * gnu/testlet/javax/swing/UIManager/getLookAndFeelDefaults.java: new file,
+ * gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java: new file,
+ * gnu/testlet/javax/swing/UIManager/removeAuxiliaryLookAndFeel.java: new file,
+ * gnu/testlet/javax/swing/UIManager/setLookAndFeel.java: new file,
+ * gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java: new file.
+
+2005-08-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Vector/copyInto.java: new test.
+
+2005-08-23 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java: new test;
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java: new test;
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java: new test;
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java: new test;
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java: new test;
+ * gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java: new test.
+
+2005-08-20 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java: Also
+ check for old-style modifiers.
+
+2005-08-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java
+ (test): Added another test for first() and previous().
+
+2005-08-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java:
+ New file.
+
+2005-08-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/awt/Component/update.java: Use StringBuffer,
+ not StringBuilder (to avoid requiring a 1.5 tag).
+
+2005-08-18 Tom Tromey <tromey@redhat.com>
+
+ * .classpath: Depend on classpath project. Omit getTreeFolderIcon.java.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Text.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TagElement_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Entity_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/DTD_test.java:
+ Removed incorrect import.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/AttributeList_test.java:
+ Removed incorrect import.
+
+2005-08-17 Tom Tromey <tromey@redhat.com>
+
+ * .project, .classpath: New files.
+ * .externalToolBuilders/ConfigureMauve.launch: New file.
+
+2005-08-11 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java:
+ Added Uses.
+ * gnu/testlet/javax/swing/JTable/createDefaultDataModel.java:
+ Added Uses.
+
+2005-08-11 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Observable/observable.java: New file.
+ PR classpath/23279.
+
+2005-08-10 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/java/awt/Component/update.java
+ Added a testcase for the handling of paint() and update.
+
+2005-08-07 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java,
+ gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java,
+ gnu/testlet/org/Iona/omg/DynamicAny/DynAny/TestEnumHelper.java,
+ gnu/testlet/org/Iona/omg/DynamicAny/DynAny/TestEnum.java,
+ gnu/testlet/org/Iona/omg/DynamicAny/DynAny/TestStruct.java: New test.
+
+2005-08-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/datatransfer/Clipboard/clipboard.java:
+ New test.
+ * gnu/testlet/java/awt/datatransfer/Clipboard/clipboardFlavors.java:
+ Likewise.
+ * gnu/testlet/java/awt/datatransfer/DataFlavor/flavor.java:
+ Likewise.
+ * gnu/testlet/java/awt/datatransfer/StringSelection/selection.java:
+ Likewise.
+
+2005-08-01 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/ClassLoader/initialize.java: New test.
+
+2005-08-01 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/nio/channels/FileChannel/lock.java
+ (test): Moved file delete to end.
+
+2005-07-31 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/nio/channels/FileChannel/lock.java: New test.
+ * runner: Add -Dmauve.vmexec=$RUNTIME.
+ * batch_run (COMPILER): Add -nowarn.
+
+2005-07-29 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/ClassLoader/findLoadedClass.java:
+ New test.
+
+2005-07-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java
+ (test): reset default theme after test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java
+ (test): likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java
+ (test): likewise.
+
+2005-07-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTree/setModel.java: new file.
+
+2005-07-26 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/java/util/Properties/getProperty.java:
+ New test that checks if getProperty(String) and
+ getProperty(String,String) call each other.
+
+2005-07-24 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Properties/load.java (test): Added
+ trailing-backslash test. PR classpath/22994.
+
+2005-07-25 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/initComponentDefaults.java:
+ Fixed 'Uses'.
+
+2005-07-25 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java:
+ Fixed 'Uses'.
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java:
+ Fixed 'Uses'.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/initComponentDefaults.java: new file,
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/MyMetalLookAndFeel.java: new file.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/MyBasicLookAndFeel.java: new file.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ConvolveOp/constants.java: new file,
+ * gnu/testlet/java/awt/image/ConvolveOp/constructors.java: new file,
+ * gnu/testlet/java/awt/image/ConvolveOp/getKernel.java: new file.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/AlphaComposite/equals.java: new file,
+ * gnu/testlet/java/awt/AlphaComposite/getInstance.java: new file,
+ * gnu/testlet/java/awt/AlphaComposite/getInstance14.java: new file,
+ * gnu/testlet/java/awt/AlphaComposite/getRule.java: new file.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnMargin.java
+ (test): added check for default value.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMaximumSize.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMinimumSize.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getPreferredSize.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/MyBasicSliderUI.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForXPosition.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForYPosition.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/xPositionForValue.java: new file,
+ * gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/yPositionForValue.java: new file.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/constructors.java
+ (testConstructor2): added check for negative width,
+ (testConstructor3): added check for negative width.
+ * gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java:
+ (test): check null argument.
+ * gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java:
+ (test): check null argument.
+ * gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java:
+ (test): wrap at 80 columns.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JMenuItem/constructors.java: new tests.
+
+2005-07-25 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/RenderingHints/get.java: reformatted
+ (test): added test for key with no value defined.
+
+2005-07-22 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/poa_POA_test.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/gnuAdapterActivator.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/ourUserExceptionHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/remotePoaControl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/remotePoaControlPOA.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/remotePoaControlHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_Servant.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_comTesterOperations.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/remotePoaControlOperations.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/remotePoaControlServant.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_comTesterStub.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_comTesterHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/ourUserException.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_remotePoaControlStub.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_comTester.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_Server.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POAOperations/communication/poa_comTesterPOA.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/Util.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/_TestLocationForwardServerStub.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardPOA.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/_TestStub.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/Test.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardOperations.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardServerOperations.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestOperations.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/_TestLocationForwardStub.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestException.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/BAD_OPERATIONHolder.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardServer.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardServerHelper.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestPOA.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestBase.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/Test_impl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForward.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardServerPOA.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestDSI_impl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForward_impl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardActivator_impl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardServerMain.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestUtil.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestLocationForwardClient.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestDSIRef_impl.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestDestroy.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestFind.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/testForwarding.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestDeactivate.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestMisc.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestCollocated.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestCreate.java,
+ gnu/testlet/org/omg/PortableServer/PortableServer/POA/TestActivate.java: New POA tests.
+ THANKS: Saying thanks to Object Oriented Concepts and IONA Technologies.
+
+2005-07-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/Serializable/BreakMe.java: New test and
+ generator.
+ * gnu/testlet/java/io/Serializable/BreakMeTestSer.java: New test.
+ * gnu/testlet/java/io/Serializable/MyBreakMe.java: New helper clas.
+ * gnu/testlet/java/io/Serializable/MyBreakMe.ser: New binary
+ serialized stream.
+
+2005-07-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java
+ (test_echoWithTimeout): Catch and fail when we get a general
+ IOException instead of a InterruptedIOException.
+
+2005-07-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSlider/addChangeListener.java: new file,
+ * gnu/testlet/javax/swing/JSlider/createStandardLabels.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getExtent.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getInverted.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getLabelTable.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getMajorTickSpacing.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getMaximum.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getMinimum.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getMinorTickSpacing.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getModel.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getPaintLabels.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getPaintTicks.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getPaintTrack.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getSnapToTicks.java: new file,
+ * gnu/testlet/javax/swing/JSlider/getUIClassID.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setExtent.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setInverted.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setLabelTable.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setMajorTickSpacing.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setMaximum.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setMinimum.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setMinorTickSpacing.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setModel.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setOrientation.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setPaintLabels.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setPaintTicks.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setPaintTrack.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setSnapToTicks.java: new file,
+ * gnu/testlet/javax/swing/JSlider/setValue.java: new file,
+ * gnu/testlet/javax/swing/JSlider/MyChangeListener.java: new file,
+ * gnu/testlet/javax/swing/JSlider/MyPropertyChangeListener.java: new file.
+
+2005-07-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JSlider/constructors.java: new tests.
+
+2005-07-18 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/logging/LogRecord/getMillis.java:
+ Made the code more robust against time resolution issues.
+
+2005-07-15 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/AbstractButton/init.java:
+ Checks if the init() method handles the default label correctly.
+ * gnu/testlet/javax/swing/AbstractButton/constructor.java:
+ Checks if the constructor handles the default label correctly.
+ * gnu/testlet/javax/swing/JToggleButton/constructor.java:
+ Checks if the constructor handles the default label correctly.
+
+2005-07-15 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/depthFirstEnumeration.java:
+ New test.
+
+2005-07-15 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java:
+ Removed unused import.
+
+2005-07-15 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/JToggleButton/actionEvent.java:
+ Tests if ActionListeners are correctly notified of changes
+ to the selected property.
+ * gnu/testlet/javax/swing/JToggleButton/click.java:
+ Actually test JToggleButton here, not JCheckBoxes.
+
+2005-07-14 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/util/logging/LogManager/logging.properties,
+ gnu/testlet/java/util/logging/LogManager/readConfiguration.java
+ gnu/testlet/java/util/logging/LogManager/TestHandler.java: New testlet
+ for LogManager.
+
+2005-07-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/jaxax/swing/tree/TreePath/constructors.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/equals.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/getLastPathComponent.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/getParentPath.java
+ (test): added additional checks,
+ * gnu/testlet/jaxax/swing/tree/TreePath/getPath.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/getPathComponent.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/getPathCount.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/isDescendant.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/pathByAddingChild.java: new file,
+ * gnu/testlet/jaxax/swing/tree/TreePath/serialization.java: new file.
+
+2005-07-13 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/AbstractButton/getActionCommand.java: New base class
+ for tests in subclasses.
+ * gnu/testlet/javax/swing/JButton/getActionCommand.java,
+ gnu/testlet/javax/swing/JRadioButton/getActionCommand.java,
+ gnu/testlet/javax/swing/JToggleButton/getActionCommand.java,
+ gnu/testlet/javax/swing/JCheckBox/getActionCommand.java,
+ gnu/testlet/javax/swing/JMenuItem/getActionCommand.java,
+ gnu/testlet/javax/swing/JMenu/getActionCommand.java,
+ gnu/testlet/javax/swing/JRadioButtonMenuItem/getActionCommand.java,
+ gnu/testlet/javax/swing/JCheckBoxMenuItem/getActionCommand.java: New tests
+ based on "gnu.testlet.javax.swing.AbstractButton.getActionCommand".
+
+2005-07-09 Archie Cobbs <archie@dellroad.org>
+
+ * batch_run: use "=" instead of "==" for test(1) equality
+ * uses-list: avoid error from shifting too many parameters
+ * runner: add jc (commented out)
+
+2005-07-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getAdditionalHeight.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getShift.java: likewise.
+
+2005-07-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getAdditionalHeight.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getShift.java: likewise.
+
+2005-07-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java: new test,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java: likewise,
+ * gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java: likewise.
+
+2005-07-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JProgressBar/constructors.java: new tests.
+
+2005-07-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/InputStreamReader/hang.java (test): Fixed
+ UTF-8 encoding bug.
+
+2005-07-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/InputStreamReader/hang.java: New file
+
+2005-07-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/swing/AbstractAction/setEnabled.java: Updated
+ 'Uses'.
+
+2005-07-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/beans/Introspector/getBeanInfo4.java: Updated
+ 'Uses'.
+
+2005-07-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/constructors.java
+ (constructor3): removed whitespace.
+ * gnu/testlet/javax/swing/JTable/getColumnName.java:
+ (test): add test to confirm that identifier and headerValue are not used.
+ * gnu/testlet/javax/swing/JTable/getModel.java: remove unnecessary imports,
+ * gnu/testlet/javax/swing/JTable/isCellEditable.java:
+ (test): fixed indentation,
+ * gnu/testlet/javax/swing/JTable/setModel.java:
+ (test): split into test1() and test2(),
+ (test1): code from previous test(),
+ (test2): check that the autoCreateColumnsFromModel flag is correctly observed.
+
+2005-07-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/AbstractAction/clone.java: new tests,
+ * gnu/testlet/javax/swing/AbstractAction/constructors.java: new tests,
+ * gnu/testlet/javax/swing/AbstractAction/getValue.java: new tests,
+ * gnu/testlet/javax/swing/AbstractAction/putValue.java: new tests,
+ * gnu/testlet/javax/swing/AbstractAction/setEnabled.java: new tests,
+ * gnu/testlet/javax/swing/AbstractAction/MyAction.java: new file,
+ * gnu/testlet/javax/swing/AbstractAction/MyPropertyChangeListener.java: new file.
+
+2005-07-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputStream/registerValidation.java:
+ Remove extra class and use...
+ * gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java:
+ New class.
+
+2005-07-05 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java: new test.
+
+2005-07-05 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/addColumn.java: new test,
+ * gnu/testlet/javax/swing/JTable/constructors.java: new test,
+ * gnu/testlet/javax/swing/JTable/convertColumnIndexToView.java: new test,
+ * gnu/testlet/javax/swing/JTable/createDefaultColumnsFromModel.java: new test,
+ * gnu/testlet/javax/swing/JTable/createDefaultDataModel.java: new test,
+ * gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java: new test,
+ * gnu/testlet/javax/swing/JTable/getAutoCreateColumnsFromModel.java: new test,
+ * gnu/testlet/javax/swing/JTable/getColumn.java: new test,
+ * gnu/testlet/javax/swing/JTable/getColumnName.java: new test,
+ * gnu/testlet/javax/swing/JTable/MyJTable.java: new support file,
+ * gnu/testlet/javax/swing/JTable/setAutoCreateColumnsFromModel.java: new test.
+
+2005-07-01 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/runner/CheckResult.java, gnu/testlet/runner/ClassResult.java,
+ gnu/testlet/runner/CreateTags.java, gnu/testlet/runner/Filter.java,
+ gnu/testlet/runner/HTMLGenerator.java, gnu/testlet/runner/Mauve.java,
+ gnu/testlet/runner/PackageResult.java, gnu/testlet/runner/RunResult.java,
+ gnu/testlet/runner/Tags.java, gnu/testlet/runner/TestResult.java,
+ gnu/testlet/runner/XMLGenerator.java: New testrunner which is much faster then
+ the SimpleTestRunner and creates html output.
+
+2005-07-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java:
+ (test): split into testGeneral() and testSpecial();
+ (testGeneral): old contents of test() modified slightly to catch error where Classpath is swapping columns rather than moving one column,
+ (testSpecial): new special case tests.
+
+2005-07-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/JTable/convertColumnIndexToModel.java: new tests;
+ * gnu/testlet/javax/swing/JTable/getModel.java: new tests;
+ * gnu/testlet/javax/swing/JTable/isCellEditable.java: new tests;
+ * gnu/testlet/javax/swing/JTable/setModel.java: new tests;
+
+2005-07-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDescription.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getID.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getName.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isNativeLookAndFeel.java: new tests;
+ * gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isSupportedLookAndFeel.java: new tests;
+
+2005-07-01 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getName.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java: new test;
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java: new test;
+
+2005-06-29 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/event/TableModelEvent/constructors.java:
+ new tests.
+
+2005-06-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/BorderLayout/addLayoutComponent.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/constants.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/constructors.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/getHgap.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/getVgap.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/layoutContainer.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/preferredLayoutSize.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/setHgap.java: new tests,
+ * gnu/testlet/java/awt/BorderLayout/setVgap.java: new tests.
+
+2005-06-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java:
+ added one more check;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java
+ (testAddColumn1): check more fields in generated event,
+ (testAddColumn2): check generated event,
+ (testAddColumn3): reformatting only;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java
+ (testAddRow1): check more fields in generated event,
+ (testAddRow2): likewise;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java
+ (testInsertRow1): check more fields in generated event,
+ (testInsertRow2): likewise;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java
+ (test): check more fields in generated event;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java
+ (testEvents): check more fields in generated event;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java
+ (testEvents1): check more fields in generated event,
+ (testEvents2): likewise;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java
+ (testEvent): new method;
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java
+ (testEvents): check more fields in generated events.
+
+2005-06-21 Audrius Meskauskas <AudriusA@Bioinformatics.org>
+
+ * gnu/testlet/org/omg/IOP/IOR/Streams.java: New test.
+
+2005-06-20 Robert Schuster <robertschuster@fsfe.org>
+
+ * gnu/testlet/javax/swing/JDialog/setDefaultCloseOperation.java:
+ New test.
+
+2005-06-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java
+ (testConstructor3): changed expected result for null arguments,
+ (testConstructor4): changed expected result for null argument,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java
+ (test) Modified expected value for case where column index is too large,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java
+ (test) Added check for zero columns,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java
+ (testBasics) Renamed testBasics1 and corrected small error,
+ (testBasics2) New method,
+ (testEvents) Renamed testEvents1,
+ (testEvents2) New method.
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java
+ (test) Changed expected results for null arguments.
+
+2005-06-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/AbstractTableModel/findColumn.java: new test;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/getColumnClass.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/isCellEditable.java: new tests;
+ * gnu/testlet/javax/swing/table/AbstractTableModel/MyTableModel.java: support class.
+
+2005-06-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: Added 'Uses'.
+
+2005-06-17 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Introspector/getBeanInfo4.java: New tests.
+ * gnu/testlet/java/beans/Introspector/bar/TestSubject.java,
+ gnu/testlet/java/beans/Introspector/bar/info/TestSubjectBeanInfo.java,
+ gnu/testlet/java/beans/Introspector/foo/TestSubject.java,
+ gnu/testlet/java/beans/Introspector/foo/info/TestSubjectBeanInfo.java:
+ New helper class.
+
+2005-06-17 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/io/InputStreamReader/getEncoding.java: New tests.
+
+2005-06-17 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/FeatureDescriptor/check.java: New tests.
+
+2005-06-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/AttributedString/addAttribute.java: new tests;
+ * gnu/testlet/java/text/AttributedString/addAttributes.java: new tests;
+ * gnu/testlet/java/text/AttributedString/constructors.java: new tests;
+ * gnu/testlet/java/text/AttributedString/getIterator.java: new tests.
+
+2005-06-13 Ziga Mahkovec <ziga.mahkovec@klika.si>
+
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixels.java:
+ Added new test exposing a NPE in SampleModel.getPixels.
+
+2005-06-13 Ziga Mahkovec <ziga.mahkovec@klika.si>
+
+ * gnu/testlet/java/text/AttributedString/Test.java: Added new test
+ exposing a runLimit bug.
+
+2005-05-11 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/java/net/ServerSocket/CORBA.java:
+ Added tests.
+
+2005-06-11 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java: New tests.
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoDefaultFactory.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoImpl.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoDefaultFactory.java,
+ gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java: New test
+ supporting classes.
+ * gnu/testlet/org/omg/CORBA/ORB/comServer.java: Adapted to work with
+ ValueTypeTest.
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/DirectTest.java,
+ * gnu/testlet/org/omg/CORBA_2_3/ORB/RequestTest.java: Adapted to work with
+ the changed comServer.
+
+2005-06-09 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/MenuItem/label1.java: New test.
+
+2005-06-09 Ziga Mahkovec <ziga.mahkovec@klika.si>
+
+ New test for Classpath bug #13353:
+ * gnu/testlet/java/net/URL/newURL.java: New test for jar: URLs with
+ fragments.
+
+2005-06-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/BandedSampleModel/constructors.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/createCompatibleSampleModel.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/createDataBuffer.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/createSubsetSampleModel.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getDataElements.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getPixel.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getPixels.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getSample.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getSampleDouble.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getSampleFloat.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/getSamples.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/hashCode.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/setDataElements.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/setPixel.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/setPixels.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/setSample.java: new test;
+ * gnu/testlet/java/awt/image/BandedSampleModel/setSamples.java: new test;
+
+2005-06-05 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/net/URI/ToStringTest.java:
+ New test for undefined/empty distinction,
+ thus matching input to toString() output.
+
+2005-06-04 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA/ORB/NEC_Corporation_RF11.java:
+ New tests.
+ * gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Holder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/B.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/B_except.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/BHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_except.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_union.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_except.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_except.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_union.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Holder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Holder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Holder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_union.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_except.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_union.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Holder.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Servant.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11Stub.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java,
+ gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Holder.java:
+ New files.
+ * THANKS: Saying thanks for Duncan Grisby and NEC corporation.
+
+2005-06-03 Tom Dunstan <tomdcc@gmail.com>
+
+ * gnu/testlet/java/text/MessageFormat/parse.java (parse): Added
+ regression test.
+
+2005-05-31 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/java/net/ServerSocket/CORBA.java:
+ Added tests.
+
+2005-05-31 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/net/ServerSocket/ServerSocketText.java:
+ Added tests.
+
+2005-05-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/ColorModel/getComponentSize.java: New file.
+ * gnu/testlet/java/awt/image/ColorModel/getRGBdefault.java: New file.
+ * gnu/testlet/java/awt/image/DirectColorModel/constructors.java: New file.
+
+2005-05-29 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/LinkedHashMap/Regress.java: New file.
+ For PR libgcj/20273.
+
+2005-05-28 Ziga Mahkovec <ziga.mahkovec@klika.si>
+
+ * gnu/testlet/java/util/regex/Pattern/testdata3: New regex test cases
+ for possessive quantifiers (PR libgcj/20435).
+
+2005-05-25 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/javax/swing/AbstractButton/constructor.java:
+ Added new test.
+
+2005-05-25 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA/portable/OutputStream/BinaryAlignment.java,
+ gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java: New test.
+
+2005-05-24 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA/ORB/parallelRunTest.java,
+ gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java,
+ gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java,
+ gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java,
+ gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServer.java,
+ gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java:
+ New tests.
+
+2005-05-24 Tom Tromey <tromey@redhat.com>
+
+ * choose: Handle 'org' in keys file.
+
+2005-05-24 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URI/ComparisonTest.java (test): Convert
+ SortedSet to String for debug().
+
+2005-05-23 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * build.xml: Adding gnu/testlet/org/** to the
+ "test" ("run the tests") target.
+
+2005-05-23 Tom Tromey <tromey@redhat.com>
+
+ * choose: Search 'org'.
+
+2005-05-22 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA/ServiceInformationHelper/basicHelperOperations.java:
+ New test.
+
+2005-05-20 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/net/URI/ComparisonTest.java,
+ * gnu/testlet/java/net/URI/EqualityTest.java,
+ * gnu/testlet/java/net/URI/NormalizationTest.java,
+ * gnu/testlet/java/net/URI/RelativizationTest.java,
+ * gnu/testlet/java/net/URI/ToASCIIStringTest.java:
+ New tests for the compareTo(), equals(), normalize(),
+ relativize(URI) and toASCIIString() methods
+ respectively.
+
+2005-05-20 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URLConnection/Jar.java: New file.
+
+2005-05-18 Audrius Meskauskas <AudriusA@bluewin.ch>
+
+ * gnu/testlet/org/omg/CORBA/Any/testAny.java,
+ gnu/testlet/org/omg/CORBA/portable/InputStream/cdrIO.java,
+ gnu/testlet/org/omg/CORBA/TypeCode/orbTypecodes.java,
+ gnu/testlet/org/omg/CORBA/ORB/DirectTest.java,
+ gnu/testlet/org/omg/CORBA/ORB/RequestTest.java: New tests.
+ * gnu/testlet/org/omg/CORBA/Asserter.java: New file.
+ * gnu/testlet/org/omg/CORBA/ORB/comServer.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/node.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/comServant.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/nodeHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHolder.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/returnThis.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/passThis.java,
+ gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterStub.java:
+ New CORBA test server.
+
+2005-05-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/GradientPaint/constructors.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/equals.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/getColor1.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/getColor2.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/getPoint1.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/getPoint2.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/getTransparency.java: new tests;
+ * gnu/testlet/java/awt/GradientPaint/isCyclic.java: new tests.
+
+2005-05-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java: added checks
+ for null and non-Number arguments.
+ * gnu/testlet/java/text/SimpleDateFormat/parse.java: added checks
+ for null arguments, and bug 13058.
+
+2005-05-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Color/constants.java: new tests;
+ * gnu/testlet/java/awt/Color/constructors.java: new tests;
+ * gnu/testlet/java/awt/Color/decode.java: new tests;
+ * gnu/testlet/java/awt/Color/equals.java: new tests;
+ * gnu/testlet/java/awt/Color/getBlue.java: new tests;
+ * gnu/testlet/java/awt/Color/getGreen.java: new tests;
+ * gnu/testlet/java/awt/Color/getRed.java: new tests;
+ * gnu/testlet/java/awt/Color/hashCode.java: new tests;
+ * gnu/testlet/java/awt/Color/serialization.java: new tests;
+
+2005-05-16 Brion Vibber <brion@pobox.com>
+
+ * gnu/testlet/java/net/URI/URITest.java (test): Added regression
+ tests.
+
+2005-05-16 Tom Tromey <tromey@redhat.com>
+
+ * choose: Handle '..' in Uses lines better.
+
+2005-05-16 Ziga Mahkovec <ziga.mahkovec@klika.si>
+
+ * gnu/testlet/java/util/regex/Pattern/pcrematches.java,
+ gnu/testlet/java/util/regex/Pattern/testdata1,
+ gnu/testlet/java/util/regex/Pattern/testdata2,
+ gnu/testlet/java/util/regex/Pattern/testdata3: New files.
+
+2005-05-09 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/util/BitSet/Get.java: New file.
+
+2005-05-05 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Integer/decode.java: new tests;
+
+2005-05-03 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/plaf/ColorUIResource/constructors.java: new tests;
+ * gnu/testlet/javax/swing/plaf/ColorUIResource/equals.java: new tests;
+ * gnu/testlet/javax/swing/plaf/ColorUIResource/serialization.java: new tests;
+
+2005-04-29 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/io/Utf8Encoding/mojo.java (negative): Expect
+ replacement char.
+
+2005-04-29 Thomas Zander <zander@kde.org>
+
+ * build.xml: Don't compile classpath specific tests in the ant target
+ since; well that can't work.
+
+2005-04-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DateFormat/hashCode.java: new test;
+ * gnu/testlet/java/text/DecimalFormat/hashCode.java: new test;
+
+2005-04-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/unmodifiableList.java:
+ new test.
+
+2005-04-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/JComboBox/MutableTest1.java,
+ gnu/testlet/javax/swing/JComboBox/MutableTest2.java,
+ gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java:
+ Cleaned up mauve tags.
+
+2005-04-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/beans/Beans/instantiate_1.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo2.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java,
+ gnu/testlet/java/beans/XMLDecoder/jdk14.java:
+ Cleaned up usage of mauve tags.
+
+2005-04-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/ArrayList/subList.java,
+ gnu/testlet/java/util/LinkedList/subList.java,
+ gnu/testlet/java/util/Vector/subList.java:
+ Added the needed Uses tags.
+
+2005-04-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java,
+ gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java,
+ gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java:
+ Added the needed Uses tags.
+
+2005-04-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumnModelListener.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnModelListeners.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java,
+ gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnMargin.java:
+ Added needed Uses tags.
+
+2005-04-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/BufferedReader/mark.java: New test.
+
+2005-04-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java:
+ new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ addColumnModelListener.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ constructor.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java:
+ new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnCount.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnIndex.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnIndexAt.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnMargin.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnModelListeners.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumns.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getColumnSelectionAllowed.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getListeners.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getSelectedColumnCount.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ getSelectionModel.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ moveColumn.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ MyListener.java: new support file;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ setColumnMargin.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ setColumnSelectionAllowed.java: new tests;
+ * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
+ setSelectionModel.java: new tests;
+
+2005-04-24 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/math/BigInteger/setBit.java: new tests.
+
+2005-04-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/IndexColorModel/constructors.java: new
+ file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getAlpha.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getAlphas.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getBlue.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getBlues.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getColorSpace.java: new
+ file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getComponentSize.java: new
+ file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getGreen.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getGreens.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getPixelSize.java: new
+ file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getRed.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getReds.java: new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getTransparency.java: new
+ file;
+ * gnu/testlet/java/awt/image/IndexColorModel/getTransparentPixel.java:
+ new file;
+ * gnu/testlet/java/awt/image/IndexColorModel/isValid.java: new file;
+
+2005-04-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/List/subList.java: new file;
+ * gnu/testlet/java/util/ArrayList/subList.java: new file;
+ * gnu/testlet/java/util/LinkedList/subList.java: new file;
+ * gnu/testlet/java/util/Vector/subList.java: new file.
+
+2005-04-11 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/nio/channels/FileChannel/map.java:
+ New test.
+
+2005-04-11 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/beans/EventHandler/check.java,
+ gnu/testlet/java/beans/EventHandler/check14b.java,
+ gnu/testlet/java/beans/EventHandler/check14c.java:
+ Added work around to make code compile with Jikes.
+
+2005-04-01 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/javax/xml/parsers/DocumentBuilder/parseSimpleXML.java:
+ Added "Uses".
+
+2005-03-29 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/nio/channels/SocketChannel/select.java: New test
+ for selection sockets.
+
+2005-03-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: Added test.
+
+2005-03-21 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/reflect/Field/promotion.java: New test.
+
+2005-03-21 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/util/Calendar/ampm.java: Remove bad out-of-range
+ checkTime() tests.
+
+2005-03-21 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/util/Calendar/set.java: Explicitly set Calendar
+ locale to Locale.FRANCE.
+
+2005-03-17 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/xml/parsers/DocumentBuilder/
+ parseSimpleXML.java,
+ gnu/testlet/javax/xml/parsers/DocumentBuilder/
+ Verifyer.java: New test.
+
+2005-03-13 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DecimalFormat.applyLocalizedPattern.java:
+ New file;
+ * gnu/testlet/java/text/DecimalFormat/applyPattern.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/clone.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/constructors.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/equals.java (test) added
+ more checks;
+ * gnu/testlet/java/text/DecimalFormat/format.java: moved existing
+ tests into testGeneral() method and added new tests in
+ testRounding() and testMiscellaneous();
+ * gnu/testlet/java/text/DecimalFormat/
+ formatToCharacterIterator.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/getCurrency.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/
+ getDecimalFormatSymbols.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/getGroupingSize.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/getMultiplier.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/getNegativePrefix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/getNegativeSuffix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/getPositiveSuffix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/
+ isDecimalSeparatorAlwaysShown.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/setCurrency.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/
+ setDecimalFormatSymbols.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/
+ setDecimalSeparatorAlwaysShown.java: New file;
+ * gnu/testlet/java/text/DecimalFormat/setGroupingSize.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/setMultiplier.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/setNegativePrefix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/setNegativeSuffix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/setPositivePrefix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/setPositiveSuffix.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/topattern.java (test): pass
+ modified 'dfs' back to 'df';
+ * gnu/testlet/java/text/DecimalFormat/toLocalizedPattern.java: New
+ file;
+ * gnu/testlet/java/text/DecimalFormat/toPattern.java: New file;
+
+2005-03-12 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/supplementaryNotifications.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/Parser_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/TagElement_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/HTML_randomTable.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/parameterDefaulter_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/Text.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/Token_locations.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/textPreProcessor_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/Element_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/ParserTest.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/Entity_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/HTML_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/DTD_test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/ParserEntityResolverTest.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/HTML_parsing.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/AttributeList_test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/low/ReaderTokenizer/ReaderTokenizer_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/low/Constants/Constants_Test.java,
+ gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/low/Buffer/Buffer_Test.java: New tests,
+ test the Classpath specific implementation.
+ * gnu/testlet/gnu/javax/swing/text/html/parser/
+ support/Parser/TestCase.java: New helper class.
+
+2005-03-11 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Class/newInstance.java: New tests.
+ * gnu/testlet/java/lang/Class/pkg/test1.java,
+ gnu/testlet/java/lang/Class/pkg/test2.java,
+ gnu/testlet/java/lang/Class/pkg/test3.java,
+ gnu/testlet/java/lang/Class/pkg/test4.java: New support classes.
+
+2005-03-11 Roman Kennke <roman@kennke.org>
+
+ * gnu/testlet/java/awt/Component/properties.java:
+ Added descriptive messages. Fixed 'font' property check.
+
+2005-03-11 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/io/FileInputStream/fileinputstream.java:
+ Fixed typo.
+
+2005-03-11 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/EventHandler/check14c.java: New
+ tests.
+
+2005-03-10 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/EventHandler/check14.java: Added
+ more subtests and documentation.
+ * gnu/testlet/java/beans/EventHandler/check14b.java: New
+ tests.
+ * gnu/testlet/java/beans/EventHandler/check14c.java: New
+ tests, was check14.java.
+
+2005-03-10 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/EventHandler/check.java: Removed
+ file, will be added as check14c.java again.
+
+2005-03-10 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/io/RandomAccessFile/randomaccessfile.java:
+ New test.
+
+2005-03-10 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/io/FileOutputStream/fileoutputstream.java:
+ New test.
+
+2005-03-10 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/io/FileInputStream/fileinputstream.java:
+ New test.
+
+2005-03-09 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/lang/reflect/Proxy/check13.java: New
+ test.
+
+2005-03-09 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/EventHandler/check.java: Added new
+ tests and try-catch-blocks for known problems.
+ * gnu/testlet/java/beans/EventHandler/check14.java: Added
+ new tests.
+
+2005-03-08 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/io/BufferedInputStream/MarkReset.java (marktest):
+ Two testcases added for PR libgcj/20389.
+
+2005-03-08 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/EventHandler/check.java: New test.
+ * gnu/testlet/java/beans/EventHandler/check14.java: Added
+ new test.
+
+2005-03-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Font/serialization.java: New test.
+
+2005-03-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/StringTokenizer/constructors.java: New tests.
+ * gnu/testlet/java/util/StringTokenizer/countTokens.java: Likewise.
+ * gnu/testlet/java/util/StringTokenizer/hasMoreElements.java: Likewise.
+ * gnu/testlet/java/util/StringTokenizer/hasMoreTokens.java: Likewise.
+ * gnu/testlet/java/util/StringTokenizer/nextElement.java: Likewise.
+ * gnu/testlet/java/util/StringTokenizer/nextToken.java: Additional
+ tests.
+
+2005-03-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Font/decode.java: New tests.
+ * gnu/testlet/java/util/StringTokenizer/nextToken.java: New tests.
+
+2005-03-03 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/io/DataInputStream/readLine.java:
+ Restructured and added more tests.
+
+2005-03-03 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/InheritableThreadLocal/simple.java: New test.
+
+2005-03-02 Daniel Bonniot <bonniot@users.sf.net>
+
+ * gnu/testlet/java/io/Serializable/ParentReadResolve.java: New test.
+ * gnu/testlet/java/io/Serializable/ParentWriteReplace.java: New test.
+
+2005-03-01 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java: New test cases.
+
+2005-02-27 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/java/util/TreeSet/basic.java: New test.
+
+2005-02-24 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/JTextArea/text.java: New test case.
+ * gnu/testlet/javax/swing/JTextArea/gettingText.java: New test.
+
+2005-02-24 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/JFrame/paint5.java: New test.
+
+2005-02-24 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/Timer/preparatory.java: New test.
+ * gnu/testlet/javax/swing/Timer/basic.java: New test.
+
+2005-02-23 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/JComboBox/basic.java: New test.
+ * gnu/testlet/javax/swing/JComboBox/listenerList.java: New test.
+
+2005-02-22 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/JToggleButton/click.java: New test.
+
+2005-02-22 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Component/clickModifiers.java: New test.
+
+2005-02-21 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/JTextArea/text.java: new test
+
+2005-02-21 Bryce McKinlay <mckinlay@redhat.com>
+
+ * batch_run: Remove mention of JLS1.0, JLS1.2, and JAVA2 tags.
+ * choose: Likewise.
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java,
+ gnu/testlet/java/lang/Byte/ByteTest.java,
+ gnu/testlet/java/lang/Character/CharacterTest.java,
+ gnu/testlet/java/lang/Class/ClassTest.java,
+ gnu/testlet/java/lang/Cloneable/CloneableTest.java,
+ gnu/testlet/java/lang/Double/DoubleTest.java,
+ gnu/testlet/java/lang/Float/FloatTest.java,
+ gnu/testlet/java/lang/Integer/IntegerTest.java,
+ gnu/testlet/java/lang/Long/LongTest.java,
+ gnu/testlet/java/lang/Math/MathTest.java,
+ gnu/testlet/java/lang/Number/NumberTest.java,
+ gnu/testlet/java/lang/Object/ObjectTest.java,
+ gnu/testlet/java/lang/Object/clone.java,
+ gnu/testlet/java/lang/Object/oom.java,
+ gnu/testlet/java/lang/Object/wait.java,
+ gnu/testlet/java/lang/Short/ShortTest.java,
+ gnu/testlet/java/lang/String/StringTest.java,
+ gnu/testlet/java/lang/StringBuffer/StringBufferTest.java,
+ gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java,
+ gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java,
+ gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java,
+ gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java,
+ gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java,
+ gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java,
+ gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java,
+ gnu/testlet/java/util/ArrayList/serial.java,
+ gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java,
+ gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java,
+ gnu/testlet/java/util/Hashtable/AcuniaHashtableTest.java,
+ gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java,
+ gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java,
+ gnu/testlet/java/util/Stack/AcuniaStackTest.java,
+ gnu/testlet/java/util/Vector/AcuniaVectorTest.java: Change 'JLS' tags
+ to 'JDK'.
+
+2005-02-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/Frame/size1.java: New test.
+
+ * .cvsignore: Add testfilename.txt.
+ * batch_run (COMPILER_FLAGS): Set to -g -O0 if COMPILER is gcj.
+ (NATIVE): Set to true if COMPILER is gcj.
+ Try to use metacity as window manager. Default to /bin/true if
+ metacity is not found.
+ Add COMPILER_FLAGS to native compilation.
+ * runner: Run with -file option in native case. Elide
+ kill-on-timeout code.
+ * gnu/testlet/TestHarness.java (createRobot): New method.
+ * gnu/testlet/java/awt/Robot/createScreenCapture.java: Use
+ waitForIdle instead of arbitrary delay.
+ * gnu/testlet/java/awt/Robot/getPixelColor.java: Likewise.
+ * gnu/testlet/java/awt/Robot/keyPress.java: Likewise.
+ * gnu/testlet/java/awt/Robot/keyRelease.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseMove.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mousePress.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseRelease.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseWheel.java: Likewise.
+
+2005-02-20 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/font/TextAttribute/constants.java:
+ Fix TextAttribute import.
+
+2005-02-20 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java:
+ Catch IllegalArgumentException when calling f.applyLocalizedPattern().
+
+2005-02-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/font/TextAttribute/constants.java,
+ gnu/testlet/java/awt/font/TextAttribute/constants13.java,
+ gnu/testlet/java/awt/font/TextAttribute/serialization.java,
+ gnu/testlet/java/awt/font/TextAttribute/toString.java,
+ gnu/testlet/java/awt/font/TextAttribute/toString13.java:
+ New tests.
+
+2005-02-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Float/compareTo.java,
+ gnu/testlet/java/lang/Double/compareTo.java: New tests.
+
+2005-02-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Date/after.java,
+ gnu/testlet/java/util/Date/before.java,
+ gnu/testlet/java/util/Date/clone.java,
+ gnu/testlet/java/util/Date/compareTo.java,
+ gnu/testlet/java/util/Date/equals.java,
+ gnu/testlet/java/util/Date/serialization.java: New tests.
+
+2005-02-18 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest: Fix tag typo.
+ 'JLS1.4' -> 'JDK1.4'.
+
+2005-02-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DateFormat.equals: New tests;
+ * gnu/testlet/java/text/SimpleDateFormat.equals: Added new
+ check.
+
+2005-02-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/equals.java: New tests.
+
+2005-02-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/font/TransformAttribute/constructor.java,
+ gnu/testlet/java/awt/font/TransformAttribute/getTransform.java,
+ gnu/testlet/java/awt/font/TransformAttribute/isIdentity.java,
+ gnu/testlet/java/awt/font/TransformAttribute/serialization.java:
+ New tests.
+
+2005-02-18 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/XMLDecoder/jdk14.java: Added
+ new subtest.
+ * gnu/testlet/java/beans/XMLDecoder/DoubleArrayChecker.java: New
+ file.
+ * gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java: Added
+ constructor copying name argument to field.
+ * gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java: Fixed
+ equality check.
+ * gnu/testlet/java/beans/XMLDecoder/data/GrowableDoubleArray.xml,
+ gnu/testlet/java/beans/XMLDecoder/GrowableIntArray2.xml: New
+ testdata.
+
+2005-02-18 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/nio/charset/Charset/forName.java: Added
+ a subtest.
+
+2005-02-17 Thomas Zander <zander@kde.org>
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java:
+ rename variable named 'enum' to avoid conflicting with java 1.5 reserved keyword
+ with the same name
+ * gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java:
+ Fix the way the inner class was located and fix the class to actually compile on javac
+
+2005-02-16 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/io/ObjectOutputStream/StreamDataTest.java: New test.
+ * gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java: New test.
+
+2005-02-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/nio/charset/Charset/UTF8Charset.java: New test.
+
+2005-02-16 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/lang/Class/serialization.java: Remove stray space
+ from 'Tags'.
+
+2005-02-15 Audrius Meskauskas <audriusa@bluewin.ch>
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java:
+ New test on long tandem of subsequent html tags.
+
+2005-02-14 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java: New test.
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/eolnNorification.java:
+ New test.
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/randomTables.java:
+ New test.
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java:
+ New test case on position of SGML insertion.
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java:
+ New test cases with valueless unknown argument and nested tables.
+
+2005-02-13 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/javax/swing/KeyStroke/getKeyStroke.java: new test
+
+2005-02-13 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java
+ Adding test if the positions of the parsed HTML tokens are reported correctly.
+
+2005-02-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/BasicStroke/hashCode.java: New test.
+
+2005-02-10 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java
+ Adding HTML parsing tests for JDK 1.3 and 1.4.
+
+2005-02-10 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/ClassLoader/redefine.java:
+ Corrected INNER_NAME.
+
+2005-02-10 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/javax/swing/JTabbedPane/Mnemonic.java: new test
+
+2005-02-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java:
+ Add 'not-a-test' tag.
+ * gnu/testlet/javax/swing/DefaultListModel/add.java,
+ gnu/testlet/javax/swing/DefaultListModel/addElement.java,
+ gnu/testlet/javax/swing/DefaultListModel/clear.java,
+ gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java,
+ gnu/testlet/javax/swing/DefaultListModel/remove.java,
+ gnu/testlet/javax/swing/DefaultListModel/removeElement.java,
+ gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java,
+ gnu/testlet/javax/swing/DefaultListModel/removeRange.java,
+ gnu/testlet/javax/swing/DefaultListModel/set.java,
+ gnu/testlet/javax/swing/DefaultListModel/setElementAt.java,
+ gnu/testlet/javax/swing/DefaultListModel/setSize.java: Add 'Uses:
+ MyListDataListener' tag.
+
+2005-02-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/net/Socket/ServerThread.java: New file.
+ * gnu/testlet/java/net/Socket/jdk12.java: Use ServerThread instead
+ of trying to connect to external server.
+ * gnu/testlet/java/net/Socket/jdk13.java: Likewise.
+ * gnu/testlet/java/net/Socket/jdk14.java: Likewise.
+
+2005-02-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URI/URITest.java (test): Added Classpath
+ regression test. Use 'testOne' method.
+ (testOne): New method.
+
+2005-02-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/Serializable/MySerializable.java: Added
+ tag.
+ * gnu/testlet/java/io/Serializable/readResolve.java: Added Uses.
+
+2005-02-08 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/applyPattern.java,
+ gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java,
+ gnu/testlet/java/text/SimpleDateFormat/toPattern.java,
+ gnu/testlet/java/text/SimpleDateFormat/toLocalizedPattern.java:
+ New tests.
+
+2005-02-08 Timo Lindfors <timo.lindfors@iki.fi>
+
+ * gnu/testlet/java/util/regex/PatternSplit.java (test): Added
+ Classpath regression test.
+
+2005-02-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/ClassLoader/redefine.java: New file.
+
+2005-02-06 Audrius Meskauskas <audriusa@bluewin.ch>
+ * gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java
+ gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java,
+ gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java:
+ Code optimizations only.
+
+2005-02-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/constructors.java,
+ gnu/testlet/java/text/SimpleDateFormat.java: New tests.
+
+2005-02-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/io/Serializable/readResolve.java,
+ gnu/testlet/java/io/Serializable/MySerializable.java:
+ New test and support class.
+
+2005-02-07 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/text/DecimalFormat/equals.java: New tests.
+
+2005-02-07 Thomas Zander <zander@kde.org>
+ * gnu/testlet/java/io/FileDescriptor/jdk11.java,
+ gnu/testlet/java/io/FileReader/jdk11.java, gnu/testlet/java/io/FileWriter/jdk11.java,
+ gnu/testlet/java/io/RandomAccessFile/jdk11.java:
+ Remove useless upcast to SimpleTestHarness
+
+2005-02-07 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/nio/charset/Charset/forName2.java:
+ New test.
+
+2005-02-06 Mark Wielaard <mark@klomp.org>
+
+ Based on a suggestion from Timo Lindfors <timo.lindfors@iki.fi>
+ * gnu/testlet/java/util/regex/Pattern/matches.java: New test.
+
+2005-02-06 Mark Wielaard <mark@klomp.org>
+
+ Based on a suggestion from Amit Jain (amitrjain@hotmail.com)
+ * gnu/testlet/java/lang/String/split.java: New test.
+
+2005-02-06 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java
+ gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java,
+ gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java:
+ Changed JDK tag to 1.2.
+
+2005-02-06 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java ,
+ gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java,
+ gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java,
+ gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java:
+ New tests.
+
+2005-02-02 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/InetAddress/getByAddress.java:
+ New testcase.
+
+2005-02-02 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/util/GregorianCalendar/getMinimum.java:
+ New testcase.
+
+2005-02-02 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/lang/Thread/security10.java:
+ Allow setSecurityManager.
+
+2005-02-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Localization.java:
+ Check that the class properly translates to and from localized
+ pattern strings, and that the constructor only handles
+ non-localized patterns.
+
+2005-02-01 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/beans/Beans/instantiate_1.java:
+ Fixed to use the correct class loader.
+
+2005-01-31 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Thread/security10.java:
+ Added code to save and restore security manager.
+
+2005-01-28 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/Date/getTimezoneOffset.java: New test.
+ * gnu/testlet/java/util/Date/range.java: Remove DOS CRLF chars.
+ * Makefile.in, aclocal.m4, configure: Rebuilt.
+
+2005-01-27 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/zip/ZipFile/newZipFile.java:
+ Added new testcase for non-zip files.
+
+2005-01-22 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java,
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java:
+ Fixed documentation and mauve tags.
+
+2005-01-22 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Beans.java: Fixed JDK Tag.
+
+2005-01-20 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java:
+ New testcases.
+
+2005-01-20 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/DateFormatSymbols/Test:
+ Removed the invalid locale test.
+
+2005-01-18 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/javax/swing/JFrame/SetSize.java: New (gui) test
+
+2005-01-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/DefaultListModel/addElement.java,
+ * gnu/testlet/javax/swing/DefaultListModel/add.java,
+ * gnu/testlet/javax/swing/DefaultListModel/capacity.java,
+ * gnu/testlet/javax/swing/DefaultListModel/clear.java,
+ * gnu/testlet/javax/swing/DefaultListModel/constructor.java,
+ * gnu/testlet/javax/swing/DefaultListModel/contains.java,
+ * gnu/testlet/javax/swing/DefaultListModel/copyInto.java,
+ * gnu/testlet/javax/swing/DefaultListModel/elementAt.java,
+ * gnu/testlet/javax/swing/DefaultListModel/elements.java,
+ * gnu/testlet/javax/swing/DefaultListModel/ensureCapacity.java,
+ * gnu/testlet/javax/swing/DefaultListModel/firstElement.java,
+ * gnu/testlet/javax/swing/DefaultListModel/getElementAt.java,
+ * gnu/testlet/javax/swing/DefaultListModel/get.java,
+ * gnu/testlet/javax/swing/DefaultListModel/getSize.java,
+ * gnu/testlet/javax/swing/DefaultListModel/indexOf.java,
+ * gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java,
+ * gnu/testlet/javax/swing/DefaultListModel/isEmpty.java,
+ * gnu/testlet/javax/swing/DefaultListModel/lastElement.java,
+ * gnu/testlet/javax/swing/DefaultListModel/lastIndexOf.java,
+ * gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java,
+ * gnu/testlet/javax/swing/DefaultListModel/removeAllElements.java,
+ * gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java,
+ * gnu/testlet/javax/swing/DefaultListModel/removeElement.java,
+ * gnu/testlet/javax/swing/DefaultListModel/remove.java,
+ * gnu/testlet/javax/swing/DefaultListModel/removeRange.java,
+ * gnu/testlet/javax/swing/DefaultListModel/setElementAt.java,
+ * gnu/testlet/javax/swing/DefaultListModel/set.java,
+ * gnu/testlet/javax/swing/DefaultListModel/setSize.java,
+ * gnu/testlet/javax/swing/DefaultListModel/size.java,
+ * gnu/testlet/javax/swing/DefaultListModel/toArray.java,
+ * gnu/testlet/javax/swing/DefaultListModel/trimToSize.java:
+ New tests.
+
+2005-01-18 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/SimpleTimeZone/constructors.java:
+ Simplified checks for boolean values.
+
+2005-01-18 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/URI/URITest.java: New testcases.
+
+2005-01-17 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/MessageFormat/format14.java (test): Added
+ some quoting tests.
+
+2005-01-17 St�phane Meslin-Weber <steph@tangency.co.uk>
+
+ * gnu/testlet/java/reflect/sub/OtherPkg.java,
+ * gnu/testlet/java/reflect/sub/Super.java,
+ * gnu/testlet/java/net/Socket/TestSocketImplFactory.java,
+ * gnu/testlet/java/nio/Buffer/PlainBuffer.java,
+ * gnu/testlet/java/nio/Buffer/WrappedWithOffsetBuffer.java,
+ * gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java:
+ Removed 'Tags:' header line from classes not extending Testlet.
+
+2005-01-17 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/serialization.java: Add tests for
+ Abstact, Interface, primitive and "tricky" classes.
+
+2005-01-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/io/ObjectInputStream/registerValidation.java:
+ New test.
+
+2005-01-16 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Class/serialization.java: New tests.
+
+2005-01-15 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Cloning.java:
+ Added a new class with a pair of testcases to test cloning
+ accuracy.
+
+2005-01-14 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/File/URI.java: New file. Modified version
+ of test case from Robin Green.
+
+2005-01-14 Arnaud Vandyck <avdyk@gnu.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/removeUndo.java:
+ More testcases.
+
+2005-01-14 Arnaud Vandyck <avdyk@gnu.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/insertUndo.java:
+ More testcases.
+
+2005-01-14 Arnaud Vandyck <avdyk@gnu.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/stickyPosition.java:
+ New testcases.
+
+2005-01-13 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/parse.java:
+ added test for bug #11583
+
+2005-01-13 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/Thread/security10.java:
+ New testcases.
+
+2005-01-12 Bryn Cooke <BrynCooke@myrealbox.com>
+
+ * gnu/testlet/java/net/URL/URLTest.java:
+ Added new testcases for URLs with given context.
+
+2005-01-12 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/channels/Channels/ChannelsTest.java:
+ New testcases.
+
+2005-01-11 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Added testcases for
+ URL specs like "/redir?http://domain2.com/index.html".
+
+2005-01-10 Tom Tromey <tromey@redhat.com>
+
+ * choose: Allow '//Uses' as well.
+
+2005-01-10 Arnaud Vandyck <avdyk@gnu.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/stickyPosition.java:
+ New testcases.
+
+2005-01-10 Arnaud Vandyck <avdyk@ressource-toi.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java,
+ gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java:
+ Updated testcases.
+
+2005-01-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/TableColumn/constants.java,
+ * gnu/testlet/javax/swing/table/TableColumn/constructors.java,
+ * gnu/testlet/javax/swing/table/TableColumn/getCellRenderer.java,
+ * gnu/testlet/javax/swing/table/TableColumn/getHeaderRenderer.java,
+ * gnu/testlet/javax/swing/table/TableColumn/getHeaderValue.java,
+ * gnu/testlet/javax/swing/table/TableColumn/getIdentifier.java,
+ * gnu/testlet/javax/swing/table/TableColumn/getModelIndex.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setModelIndex.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setResizable.java,
+ * gnu/testlet/javax/swing/table/TableColumn/setWidth.java:
+ New tests.
+
+2005-01-09 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/javax/swing/UIDefaults/remove.java: New test
+
+2005-01-09 Arnaud Vandyck <avdyk@ressource-toi.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java:
+ New file.
+
+2005-01-09 Arnaud Vandyck <avdyk@ressource-toi.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java,
+ gnu/testlet/javax/swing/text/StringContent/insertUndo.java,
+ gnu/testlet/javax/swing/text/StringContent/removeUndo.java,
+ gnu/testlet/javax/swing/text/StringContent/stickyPosition.java:
+ New testcases.
+
+2005-01-09 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/StringContent/insertUndo.java,
+ gnu/testlet/javax/swing/text/StringContent/removeUndo.java,
+ gnu/testlet/javax/swing/text/StringContent/stickyPosition.java:
+ New files.
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java:
+ Updated.
+
+2005-01-09 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/text/NumberFormat/UK.java:
+ (test): Test numbers, integers, currencies and percentiles
+ in the UK locale.
+ (setOptions): helper method to set up the number format instance
+
+2005-01-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Package/getPackage.java (test): Check
+ whether java.lang has a package.
+
+2005-01-06 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java:
+ New testcases.
+
+2005-01-06 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java:
+ Added more testcases.
+
+2005-01-06 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/SimpleTimeZone/equals.java:
+ Reformatted to become readable.
+
+2005-01-06 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/TimeZone/setID.java: New testcases.
+
+2005-01-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/zip/ZipEntry/Size.java: New file.
+
+ * gnu/testlet/locales/LocaleTest.java: Fixed more Latin-1
+ characters.
+
+2005-01-04 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * batch_run: Allow NATIVE to be set on the command line. Set WM
+ to /bin/true if metacity is not found.
+ * choose: Include GUI tests by default.
+ * choose-classes: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseMove.java: New test.
+ * gnu/testlet/java/awt/Robot/mousePress.java: Likewise.
+ * gnu/testlet/java/awt/Robot/constructors.java: Likewise.
+ * gnu/testlet/java/awt/Robot/createScreenCapture.java: Likewise.
+ * gnu/testlet/java/awt/Robot/getPixelColor.java: Likewise.
+ * gnu/testlet/java/awt/Robot/keyPress.java: Likewise.
+ * gnu/testlet/java/awt/Robot/keyRelease.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseRelease.java: Likewise.
+ * gnu/testlet/java/awt/Robot/mouseWheel.java: Likewise.
+
+2005-01-04 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getColumnCount.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getDataVector.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getRowCount.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/getValueAt.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/isCellEditable.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/MyDefaultTableModel.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/MyTableModelListener.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/newDataAvailable.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/removeRow.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/rowsRemoved.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java,
+ * gnu/testlet/javax/swing/table/DefaultTableModel/setValueAt.java:
+ New tests.
+
+2005-01-03 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * batch_run: Invoke Xvfb and metacity if GUI key is specified.
+ * choose: Handle GUI tag.
+ * README: Add section on GUI tests.
+
+2005-01-03 Arnaud Vandyck <avdyk@ressource-toi.org>
+
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java:
+ Reworked.
+
+2005-01-03 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetAddress/isSiteLocalAddress.java:
+ New testcases.
+
+2005-01-02 Archie Cobbs <archie@dellroad.org>
+
+ * README, gnu/testlet/java/net/Socket/TestSocketImplFactory.java,
+ gnu/testlet/SimpleTestHarness.java: Add new flag "-exceptions"
+ to SimpleTestHarness to make it print exception traces.
+ * gnu/testlet/java/net/Socket/TestSocketImplFactory.java:
+ Use exception chaining when re-throwing exceptions.
+
+2005-01-02 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/GapContent/GapContentTest.java:
+ Fixed testcases.
+
+2004-12-31 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Thread/sleep.java: Minor change to make
+ a JDK 1.5 bug not abort the tests prematurely.
+
+2004-12-31 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/sleep.java: Add tests for (pre)
+ interrupted sleep.
+
+2004-12-31 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/Currency/getInstance.java: New test.
+ * gnu/testlet/java/text/DecimalFormatSymbols/getCurrency.java:
+ New test.
+
+2004-12-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/locales/LocaleTest.java: Fixed some expected data and
+ added test data for et_EE (Estonia).
+
+2004-12-30 Archie Cobbs <archie@dellroad.org>
+
+ * gnu/testlet/java/lang/Class/init.java: made existing tests
+ more strict and added a few more test cases
+ * gnu/testlet/BinaryCompatibility/foo: put -classpath flag
+ before class name(s) when invoking the Java compiler
+ * gnu/testlet/java/lang/ref/WeakReference/weakref.java,
+ gnu/testlet/java/lang/ref/PhantomReference/phantom.java: create
+ referenced objects in a separate thread to help avoid false
+ negatives in vm's that do conservative scanning of the stack.
+
+2004-12-30 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/locales/LocaleTest.java: altered file to all ASCII
+
+2004-12-30 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/sleep.java: New test.
+
+2004-12-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/ByteBuffer/compact.java,
+ gnu/testlet/java/nio/CharBuffer/compact.java,
+ gnu/testlet/java/nio/DoubleBuffer/compact.java,
+ gnu/testlet/java/nio/FloatBuffer/compact.java,
+ gnu/testlet/java/nio/IntBuffer/compact.java,
+ gnu/testlet/java/nio/LongBuffer/compact.java,
+ gnu/testlet/java/nio/ShortBuffer/compact.java:
+ New testcases.
+
+2004-12-27 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/nio/ByteBuffer/Allocating.java
+ (test): Fixed arrayOffset check and Removed println() statements.
+
+2004-12-26 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/charset/Charset/encode.java: New testcases.
+
+2004-12-26 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/ByteBuffer/Allocating.java,
+ gnu/testlet/java/nio/ByteBuffer/ByteBufferFactory.java,
+ gnu/testlet/java/nio/ByteBuffer/GetPut.java,
+ gnu/testlet/java/nio/ByteBuffer/Order.java:
+ New testcases.
+
+2004-12-26 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java: New testcases.
+
+2004-12-26 Michael Koch <konqueror@gmx.de>
+
+ * choose, choose-classes: Support 'locales' package.
+ * gnu/testlet/locales/LocaleTest.java: New locale testcases.
+
+2004-12-25 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/TextAction/augmentList.java,
+ gnu/testlet/javax/swing/JTextField/getActions.java,
+ gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java:
+ New files.
+
+2004-12-25 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/DefaultMetalThemeTest.java,
+ gnu/testlet/javax/swing/plaf/metal/MetalTheme/MetalThemeTest.java:
+ New files.
+
+2004-12-24 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/ResourceBundle/getBundle.java:
+ Add low case locale test.
+
+2004-12-22 Arnaud Vandyck <arnaud.vandyck@ulg.ac.be>
+
+ * gnu/testlet/javax/swing/text/StringContent/StringContentTest.java:
+ New file.
+
+2004-12-20 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java:
+ New tests mainly for GNU Classpath bug #11255.
+ * gnu/testlet/javax/swing/JComboBox/MutableTest1.java,
+ gnu/testlet/javax/swing/JComboBox/MutableTest2.java:
+ New tests for JComboBox.
+ * gnu/testlet/javax/swing/JComboBox/TestModel1.java:
+ Helper class for SimpleSelectionTest and MutableTest1.
+ * gnu/testlet/javax/swing/JComboBox/TestModel2.java:
+ Helper class for MutableTest2.
+
+2004-12-19 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Beans/TestBean1.java
+ * gnu/testlet/java/beans/Beans/TestBean2.java,
+ * gnu/testlet/java/beans/Beans/TestBean3.java,
+ * gnu/testlet/java/beans/Beans/TestBean4.java:
+ Fixed "not-a-test" tag.
+
+2004-12-19 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Beans/instantiate_1.java: New
+ tests
+ * gnu/testlet/java/beans/Beans/TestBean1.java
+ * gnu/testlet/java/beans/Beans/TestBean2.java,
+ * gnu/testlet/java/beans/Beans/TestBean3.java,
+ * gnu/testlet/java/beans/Beans/TestBean4.java:
+ Helper classes for above tests.
+
+2004-12-16 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java: new
+ test_getResourceAsStream test.
+
+2004-12-12 Robin Green <greenrd@greenrd.org>
+
+ * gnu/testlet/java/util/zip/ZipFile/DirEntryTest.java: New test.
+
+2004-12-12 Thomas Zander <zander@kde.org>
+
+ * gnu/testlet/javax/swing/JPanel/Layouter.java: New test.
+
+2004-12-07 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/Timer/taskException.java:
+ Fixed the test.
+
+2004-12-06 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Deserializable.java: New
+ test.
+
+2004-12-06 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/io/BufferedInputStream/ZeroRead.java:
+ New test.
+
+2004-12-06 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/io/ObjectInputOutput/ExtTest.java:
+ New test.
+
+2004-12-03 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java:
+ A couple more Class.forName tests.
+ * gnu/testlet/java/lang/ref/PhantomReference/phantom.java:
+ Made a little more robust.
+
+2004-12-01 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/URLConnection/getHeaderFields.java:
+ New testcases.
+
+2004-11-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextPreviousNode.java:
+ New testcases.
+
+2004-11-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPath.java:
+ New testcases.
+
+2004-11-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/pathFromAncestorEnumeration.java:
+ New testcases.
+
+2004-11-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/children.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getAllowsChildren.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAt.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildCount.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeRelated.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java,
+ gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java:
+ New testcases.
+
+2004-11-26 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/io/File/canWrite.java: Explicitly close
+ files after we're done with them. Open files prevent directory
+ deletion on Windows.
+
+2004-11-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/jdk14.java: Add host name to debug
+ output.
+
+2004-11-22 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/util/Calendar/set.java: New testcases.
+
+2004-11-19 Michael Koch <konqueror@gmx.de>
+
+ * batch_run: Added gnu.testlet.TestResult and gnu.testlet.TestReport
+ to framework classes.
+
+2004-11-19 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/charset/Charset/forName.java:
+ New testcases.
+
+2004-11-19 Casey Marshall <csm@gnu.org>
+
+ * gnu/testlet/java/util/Timer/taskException.java:
+ New testcase.
+
+2004-11-18 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/util/Calendar/set.java:
+ Explicitly set TimeZone.
+
+2004-11-17 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/io/BufferedInputStream/Skip.java: New Testcase.
+
+2004-11-17 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/util/Calendar/set.java:
+ New testcase.
+
+2004-11-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java,
+ gnu/testlet/javax/swing/SwingUtilities/computeUnion.java,
+ gnu/testlet/javax/swing/SwingUtilities/isRectangleContainingRectangle.java:
+ New tests.
+
+2004-11-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java:
+ Fixed logic of testcase.
+
+2004-11-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java:
+ Make testcase work with SUN JDK too.
+
+2004-11-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Rewrote some testcase and add
+ one new for Classpath bug #10157.
+
+2004-11-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetAddress/IPv6.java: New testcases.
+
+2004-11-15 Michael Koch <konqueror@gmx.de>
+
+ * configure.in: Change default mail host from '/tmp' (?) to
+ 'mx10.gnu.org'as stated by configure --help.
+ * configure: Regenerated.
+
+2004-11-14 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java:
+ added check for scanlineStride.
+
+2004-11-14 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/parse.java:
+ New tests.
+
+2004-11-11 David Gilbert <david.gilbert@object-refinery.com>
+
+ *
+ gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java,
+ gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java:
+ New tests;
+ * gnu/testlet/java/text/DateFormatSymbols/setAmPmStrings.java,
+ gnu/testlet/java/text/DateFormatSymbols/setEras.java,
+ gnu/testlet/java/text/DateFormatSymbols/setMonths.java,
+ gnu/testlet/java/text/DateFormatSymbols/setShortMonths.java,
+ gnu/testlet/java/text/DateFormatSymbols/setShortWeekdays.java,
+ gnu/testlet/java/text/DateFormatSymbols/setZoneStrings.java: New
+ tests.
+
+2004-11-10 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/SimpleTestHarness.java : minor tweak to a diagnostic
+
+2004-11-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/AWTKeyStroke/equals.java,
+ gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java,
+ gnu/testlet/java/awt/AWTKeyStroke/serialization.java: New tests.
+
+2004-11-08 Robert Schuster <thebohemian@gmx.net>
+
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java:
+ new test
+ gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java:
+ new helper class for above test
+
+2004-11-07 Robert Schuster <thebohemian@gmx.net>
+
+ Tests for bug #10938:
+ gnu/testlet/java/beans/Introspector/getBeanInfo2.java:
+ new file
+
+ gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java:
+ extended documentation for getBeanInfo2 test
+
+ gnu/testlet/java/beans/Introspector/getBeanInfo.java:
+ unified checkpoint labels
+
+2004-11-07 Robert Schuster <thebohemian@gmx.net>
+
+ Splits tests:
+ * gnu/testlet/java/beans/DescriptorTest.java:
+ removed, replaced by following 3 files
+ * gnu/testlet/java/beans/MethodDescriptor/constructorTest1.java:
+ new file, added documentation, copyright
+ * gnu/testlet/java/beans/EventSetDescriptor/constructorTest1.java:
+ new file, added documentation, copyright
+ * gnu/testlet/java/beans/PropertyDescriptor/constructorTest1.java:
+ new file, added documentation, copyright
+ * gnu/testlet/java/beans/PropertyDescriptorTest.java:
+ removed, replaced by following file
+ * gnu/testlet/java/beans/PropertyDescriptor/constructorTest2.java:
+ added documentation, copyright, fixed indentation
+
+2004-11-07 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/awt/geom/GeneralPath/contains.java:
+ New tests, adapted from java/awt/Polygon/contains.java.
+
+2004-11-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/java/util/Currency/
+ (Canada.java): New class of tests for the Canadian currency.
+ (CanadaFrench.java): New class of tests for the French Canadian currency.
+ (China.java): New class of tests for the Chinese currency.
+ (Constructors.java): New class of tests for the currency constructors (getInstance())
+ (France.java): New class of tests for the French currency.
+ (Germany.java): New class of tests for the German currency.
+ (Italy.java): New class of tests for the Italian currency.
+ (Japan.java): New class of tests for the Japanese currency.
+ (Korea.java): New class of tests for the Korean currency.
+ (PRC.java): New class of tests for the People's Republic of China's currency.
+ (ReferenceEquality.java): New class of tests to check that there is only one instance
+ of the Currency class for each locale.
+ (Taiwan.java): New class of tests for the Taiwanese currency.
+ (UK.java): New class of tests for the UK's currency.
+ (US.java): New class of tests for the American currency.
+
+2004-11-07 Robert Schuster <thebohemian@gmx.net>
+
+ Tests for bug #10908
+ * gnu/testlet/java/beans/Introspector/getBeanInfo.java:
+ New tests
+ * gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java:
+ Helper class for tests above
+
+2004-11-07 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/Introspector/jdk12.java:
+ Added documentation, copyright statements and license
+
+2004-11-06 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/util/Calendar/add.java,
+ gnu/testlet/java/util/Calendar/set.java:
+ Add explicit locale to SimpleDateFormat constructor.
+
+2004-11-06 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/util/Calendar/roll.java:
+ Add explicit locale to SimpleDateFormat constructor.
+
+2004-11-05 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java
+ (invalid_addr): removed tests for invalid address.
+
+2004-11-05 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/lang/Thread/contextClassLoader.java:
+ Wait for threads to finish before continuing.
+
+2004-11-05 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/BinaryCompatibility/foo:
+ Added explicit -classpath to $JAVA invocation.
+
+2004-11-05 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/TestResult.java: New file.
+ * gnu/testlet/TestReport.java: New file.
+ * gnu/testlet/SimpleTestHarness.java:
+ added support for xmloutput with the -xmlout option.
+ * Makefile.in: add new files to harness_file.
+
+2004-11-05 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/beans/PropertyEditorSupport/getSource.java:
+ Removed compatibility workaround for 1.4.
+ Marked as JDK1.5 as the getSource() method came then.
+ Change indentation to follow GNUish coding style.
+
+2004-11-03 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/util/Vector/VectorSerialization.java: remove
+ spurious "// Uses: Test" - there is no such Java class.
+
+2004-11-02 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/util/Vector/VectorSerialization.java,
+ gnu/testlet/java/util/Vector/TestVector.ser:
+ New tests.
+
+2004-10-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/SimpleTimeZone/clone.java,
+ gnu/testlet/java/util/SimpleTimeZone/constants.java,
+ gnu/testlet/java/util/SimpleTimeZone/constructors.java,
+ gnu/testlet/java/util/SimpleTimeZone/equals.java,
+ gnu/testlet/java/util/SimpleTimeZone/getDSTSavings.java,
+ gnu/testlet/java/util/SimpleTimeZone/getOffset.java,
+ gnu/testlet/java/util/SimpleTimeZone/getRawOffset.java,
+ gnu/testlet/java/util/SimpleTimeZone/hashCode.java,
+ gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java,
+ gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java,
+ gnu/testlet/java/util/SimpleTimeZone/setDSTSavings.java,
+ gnu/testlet/java/util/SimpleTimeZone/setRawOffset.java,
+ gnu/testlet/java/util/SimpleTimeZone/setStartYear.java: New tests.
+
+2004-10-31 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/SimpleTimeZone/check12.java,
+ gnu/testlet/java/util/SimpleTimeZone/check14.java: fixed bugs in
+ various checks.
+
+2004-10-31 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/PropertyEditorSupport/getSource.java:
+ new testcases
+ * gnu/testlet/java/beans/PropertyEditorSupport/setValue.java:
+ new testcases for classpath bug #10799
+
+2004-10-31 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/XMLDecoder/data/boolean.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/byte.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/short.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/int.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/long.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/float.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/double.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/intArray.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml: Fixed comment
+ * gnu/testlet/java/beans/XMLDecoder/data/list.xml: Fixed comment
+
+2004-10-29 Noa Resare <noa@resare.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java:
+ New testcase.
+
+2004-10-28 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/ByteBuffer/direct.java:
+ New testcases.
+
+2004-10-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/AWTEvent/constants.java: New test.
+ * gnu/testlet/java/awt/Event/constants.java: Likewise.
+
+2004-10-28 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/net/MessageFormat/format14.java: New test.
+
+2004-10-26 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/URLConnection/post.java:
+ New testcase to test for implicit switch to POST method for http
+ connections.
+
+2004-10-25 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/BreakIterator/patho.java: New file.
+
+2004-10-21 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/testlet/java/util/zip/InflaterInputStream/basic.java,
+ gnu/testlet/java/util/ResourceBundle/getBundle.java:
+ Fixed imports.
+
+2004-10-21 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/zip/InflaterInputStream/basic.java (test):
+ Added test derived from Eclipse.
+ * gnu/testlet/java/util/zip/InflaterInputStream/messages.properties:
+ New file.
+
+2004-10-20 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/ResourceBundle/getBundle.java
+ (loadCheck): New overload.
+ (test): Added new test.
+ * gnu/testlet/java/util/ResourceBundle/Resource11.properties: New
+ file.
+ * gnu/testlet/java/util/ResourceBundle/Resource11.java: New file.
+
+2004-10-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/set.java: Add tests for setting
+ DAY_OF_MONTH effecting other fields.
+
+2004-10-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/getBounds2D.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/getHeight.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/getWidth.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/getX.java: Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/getY.java: Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/isEmpty.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Float/setFrame.java:
+ Likewise.
+
+2004-10-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/getBounds2D.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/getHeight.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/getWidth.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/getX.java: Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/getY.java: Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/isEmpty.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/Ellipse2D/Double/setFrame.java:
+ Likewise.
+
+2004-10-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Ellipse2D/contains.java: New test.
+ * gnu/testlet/java/awt/geom/Ellipse2D/intersects.java: Likewise.
+
+2004-10-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Point/clone.java: New test.
+ * gnu/testlet/java/awt/Point/constructors.java: Likewise.
+ * gnu/testlet/java/awt/Point/equals.java: Likewise.
+ * gnu/testlet/java/awt/Point/getLocation.java: Likewise.
+ * gnu/testlet/java/awt/Point/move.java: Likewise.
+ * gnu/testlet/java/awt/Point/setLocation.java: Likewise.
+ * gnu/testlet/java/awt/Point/translate.java: Likewise.
+
+2004-10-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/BasicStroke/constants.java: New test.
+ * gnu/testlet/java/awt/BasicStroke/constructors.java: Likewise.
+ * gnu/testlet/java/awt/BasicStroke/equals.java: Likewise.
+
+2004-10-19 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/lang/Object/clone.java:
+ Moved OutOfMemoryError test to new file (oom.java)
+ * gnu/testlet/java/lang/Object/oom.java:
+ New file for OutOfMemoryError test.
+
+2004-10-17 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Arc2D/Double/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Arc2D/Float/clone.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/clone.java: Removed.
+
+2004-10-17 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/Date/range.java
+ (test): Corrected two reference values.
+
+2004-10-16 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/testlet/javax/swing/SpinnerListModel/
+ (ArrayModel.java): New class of tests for creating a model from an array
+ (Constructors.java): New class of tests for the model's constructors
+ (ListModel.java): New class of tests for creating a model from a list
+ (Ordering.java): New class of tests for the ordering of elements in a model
+ (SetList.java): New class of tests for setting the list of an existing model
+
+2004-10-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ constructors.java: New test.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ createCompatibleSampleModel.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ createSubsetSampleModel.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getBitMasks.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getBitOffsets.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getDataElements.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getNumDataElements.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getOffset.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getPixel.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getPixels.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getSample.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getSamples.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ getScanlineStride.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ hashCode.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ setDataElements.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ setPixel.java: Likewise.
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ setSample.java: Likewise.
+
+2004-10-15 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Double/parseDouble.java: New tests.
+ * gnu/testlet/java/lang/Double/valueOf.java: Likewise.
+ * gnu/testlet/java/lang/Float/parseFloat.java: Likewise.
+ * gnu/testlet/java/lang/Float/valueOf.java: Likewise.
+
+2004-10-15 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/nio/ByteBuffer/putDouble.java: New test.
+
+2004-10-15 Robert Schuster <thebohemian@gmx.net>
+
+ * gnu/testlet/java/beans/XMLDecoder/jdk14.java: New testcase set
+ * gnu/testlet/java/beans/XMLDecoder/EqualityChecker.java: Support class for test case
+ * gnu/testlet/java/beans/XMLDecoder/IntArrayChecker.java: Dito
+ * gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java: Dito
+ * gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java: Dito
+ * gnu/testlet/java/beans/XMLDecoder/data/boolean.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/byte.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/short.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/int.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/long.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/float.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/double.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/intArray.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml: Data file for test
+ * gnu/testlet/java/beans/XMLDecoder/data/list.xml: Data file for test
+
+2004-10-15 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/imageio/spi/IIORegistry/getDefaultInstance.java:
+ New testcase.
+
+2004-10-15 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/reflect/sub/InvokeHelper.java:
+ Tagged as "not-a-test".
+
+2004-10-15 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/charset/Charset/utf16.java:
+ New testcase.
+
+2004-10-15 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/util/GregorianCalendar/getMinimalDaysInFirstWeek.java:
+ New testcase from David Gilbert.
+
+2004-10-14 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java:
+ Added "Uses: ../sub/InvokeHelper".
+
+2004-10-14 Michael Koch <konqueror@gmx.de>
+
+ * choose, choose-classes: Make it less strict about "Tags:" in
+ testcases.
+
+2004-10-14 Michael Koch <konqueror@gmx.de>
+
+ * .cvsignore: Ignore SImpleTestHarness (generated when compiling to
+ native).
+
+2004-10-14 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java:
+ Made output more nice.
+
+2004-10-13 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java,
+ gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java:
+ Overwrite with David Gilbert's versions.
+
+2004-10-13 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java
+ gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java:
+ Two new testcases.
+
+2004-10-13 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java:
+ Added some more testcases.
+
+2004-10-13 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetAddress/getCanonicalHostName.java:
+ New testcase.
+
+2004-10-12 Jeroen Frijters <jeroen@frijters.net>
+
+ * gnu/testlet/java/util/Date/range.java: New test.
+
+2004-10-10 Andreas Tobler <toa@pop.agri.ch>
+
+ * gnu/testlet/java/sql/Timestamp/TimestampTest.java: Set default
+ TimeZone before the tests.
+
+2004-10-08 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/set.java: New test.
+ * gnu/testlet/java/util/TimeZone/setDefault.java: New test.
+
+2004-09-29 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java
+ (test_loadextra): Handle "ents" case properly. Updated
+ explanation.
+
+2004-09-23 David Daney <ddaney@avtrex.com>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Add tests for getUserInfo().
+
+2004-09-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FileDescriptor/jdk11.java: Add harness.debug()
+ for thrown exception.
+
+2004-09-21 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/binarySearch.java: Add more
+ generic tests for ArrayList, LinkedList and Vector.
+
+2004-09-21 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java
+ (test_loadextra): Leading whitespace doesn't matter.
+
+2004-09-20 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/binarySearch.java: New test.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Collections/copy.java: New test.
+ * gnu/testlet/java/util/Collections/fill.java: Likewise.
+ * gnu/testlet/java/util/Collections/max.java: Likewise.
+ * gnu/testlet/java/util/Collections/min.java: Likewise.
+ * gnu/testlet/java/util/Collections/nCopies.java: Likewise.
+ * gnu/testlet/java/util/Collections/reverse.java: Likewise.
+ * gnu/testlet/java/util/Collections/reverseOrder.java: Likewise.
+ * gnu/testlet/java/util/Collections/rotate.java: Likewise.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/math/BigInteger/abs.java: New test.
+ * gnu/testlet/java/math/BigInteger/add.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/compareTo.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/divide.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/equals.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/multiply.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/serialization.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/signum.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/toString.java: Likewise.
+ * gnu/testlet/java/math/BigInteger/valueOf.java: Likewise.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/TreeMap/serialization.java: New test.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Rectangle2D/Double/clone.java: New test.
+ *
+ gnu/testlet/java/awt/geom/Rectangle2D/Double/createIntersection.java:
+ Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Double/createUnion.java:
+ Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Double/isEmpty.java: Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Double/outcode.java: Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Double/setRect.java: Likwise.
+
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/createIntersection.java:
+ Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/createUnion.java:
+ Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/isEmpty.java: Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/outcode.java: Likwise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/Float/setRect.java: Likwise.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Rectangle2D/add.java: New test.
+ * gnu/testlet/java/awt/geom/Rectangle2D/constants.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/contains.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/equals.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/getBounds2D.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/intersect.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/intersects.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/intersectsLine.java: Likewise.
+ * gnu/testlet/java/awt/geom/Rectangle2D/setFrame.java: Likewise.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/RectangularShape/contains.java: New test.
+ * gnu/testlet/java/awt/geom/RectangularShape/getBounds.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getCenterX.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getCenterY.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getFrame.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getMaxX.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getMaxY.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getMinX.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/getMinY.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/intersects.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/isEmpty.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/setFrame.java: Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/setFrameFromCenter.java:
+ Ditto.
+ * gnu/testlet/java/awt/geom/RectangularShape/setFrameFromDiagonal.java:
+ Ditto.
+
+2004-09-19 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Math/max.java: Test all different signs for 0.
+ * gnu/testlet/java/lang/Math/min.java: Likewise.
+
+2004-09-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/DataBufferByte/getDataType.java:
+ Clean up imports.
+ * gnu/testlet/java/awt/image/DataBufferByte/getElem.java:
+ Likewise. Add testGetElem1() and testGetElem2() tests.
+ * gnu/testlet/java/awt/image/DataBufferDouble/getDataType.java:
+ Clean up imports.
+ * gnu/testlet/java/awt/image/DataBufferDouble/getElem.java:
+ Likewise. Add testGetElem1() and testGetElem2() tests.
+ * gnu/testlet/java/awt/image/DataBufferFloat/getElem.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferInt/getDataType.java
+ Clean up imports.
+ * gnu/testlet/java/awt/image/DataBufferInt/getElem.java:
+ Likewise. Add testGetElem1() and testGetElem2() tests.
+ * gnu/testlet/java/awt/image/DataBufferShort/getDataType.java:
+ Clean up imports.
+ * gnu/testlet/java/awt/image/DataBufferShort/getElem.java:
+ Likewise. Add testGetElem1() and testGetElem2() tests.
+ * gnu/testlet/java/awt/image/DataBufferUShort/getDataType.java:
+ Clean up imports.
+ * gnu/testlet/java/awt/image/DataBufferUShort/getElem.java:
+ Likewise. Add testGetElem1() and testGetElem2() tests.
+
+ * gnu/testlet/java/awt/image/DataBuffer/getOffset.java: New test.
+ * gnu/testlet/java/awt/image/DataBuffer/getOffsets.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferByte/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferByte/getBankData.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferByte/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferByte/setElem.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferDouble/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferDouble/getBankData.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferDouble/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferDouble/setElem.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferFloat/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferFloat/getBankData.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferFloat/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferFloat/setElem.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferInt/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferInt/getBankData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferInt/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferInt/setElem.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferShort/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferShort/getBankData.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferShort/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferShort/setElem.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferUShort/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferUShort/getBankData.java:
+ Likewise.
+ * gnu/testlet/java/awt/image/DataBufferUShort/getData.java: Likewise.
+ * gnu/testlet/java/awt/image/DataBufferUShort/setElem.java: Likewise.
+
+2004-09-18 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Area/add.java: New test.
+ * gnu/testlet/java/awt/geom/Area/clone.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/constructors.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/contains.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/createTransformedArea.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/equals.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/exclusiveOr.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/getBounds.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/getBounds2D.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/intersect.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/intersects.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/isEmpty.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/isPolygonal.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/isRectangular.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/isSingular.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/reset.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/subtract.java: Likewise.
+ * gnu/testlet/java/awt/geom/Area/transform.java: Likewise.
+
+2004-09-01 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/sub/InvokeHelper.java: New file.
+ * gnu/testlet/java/lang/reflect/Method/invoke.java
+ (private_method): New method.
+ (p): New method.
+ (test): Try to invoke new methods.
+ (getDeclaredMethod): New method.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/util/Arrays/asList.java: New tests.
+ * gnu/testlet/java/util/Arrays/binarySearch.java: Likewise.
+ * gnu/testlet/java/util/Arrays/fill.java: Likewise.
+ * gnu/testlet/java/util/Arrays/equals.java (testBoolean): New test.
+ (testByte): Likewise.
+ (testChar): Likewise.
+ (testDouble): Likewise.
+ (testFloat): Likewise.
+ (testInt): Likewise.
+ (testLong): Likewise.
+ (testObject): Likewise.
+ (testShort): Likewise.
+ * gnu/testlet/java/util/Arrays/sort.java (testByte): New test.
+ (testChar): Likewise.
+ (testDouble): likewise.
+ (testFloat): Likewise.
+ (testInt): Likewise.
+ (testLong): Likewise.
+ (testObject): Likewise.
+ (testShort): Likewise.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/lang/Double/compare.java: New test.
+ * gnu/testlet/java/lang/Float/compare.java: New test.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/RenderingHints/add.java: New test.
+ * gnu/testlet/java/awt/RenderingHints/clear.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/clone.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/constructors.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/containsKey.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/containsValue.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/entrySet.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/equals.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/get.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/isEmpty.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/keySet.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/put.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/putAll.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/remove.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/size.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/values.java: Likewise.
+ * gnu/testlet/java/awt/RenderingHints/Key/isCompatibleValue.java:
+ Likewise.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Polygon/contains.java: New test.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/AffineTransform/clone.java: New test.
+ * gnu/testlet/java/awt/geom/AffineTransform/concatenate.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/constants.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/constructors.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/createInverse.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/createTransformedShape.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/deltaTransform.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/equals.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getDeterminant.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getMatrix.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getRotateInstance.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getScaleInstance.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getShearInstance.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/getTranslateInstance.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/inverseTransform.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/isIdentity.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/preConcatenate.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/setTransform.java:
+ Likewise.
+ * gnu/testlet/java/awt/geom/AffineTransform/transform.java:
+ Likewise.
+
+2004-08-27 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/image/DataBuffer/constants.java: New test.
+ * gnu/testlet/java/awt/image/DataBuffer/getDataTypeSize.java:
+ Likewise.
+
+2004-08-27 Mark Wielaard <mark@klomp.org>
+
+ Reported by David Gilbert <david.gilbert@object-refinery.com>
+ * gnu/testlet/java/awt/image/DataBufferFloat/getDataType.java:
+ Tags 1.4.
+ * gnu/testlet/java/awt/image/DataBufferFloat/getElem.java:
+ Likewise.
+
+2004-08-14 Mark Wielaard <mark@klomp.org>
+
+ Reported by David Gilbert <david.gilbert@object-refinery.com>
+ * gnu/testlet/java/awt/image/Kernel/check.java:
+ Set package to gnu.testlet.java.awt.image.Kernel.
+ Make sure data1 is always initialized.
+
+2004-08-13 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/net/InetAddress/getByName.java: New test.
+ * gnu/testlet/java/net/InetAddress/getAllByName.java: New test.
+ * gnu/testlet/java/net/InetAddress/getLocalhost.java: New test.
+
+2004-08-12 Stephen Crawley <crawley@dstc.edu.au>
+
+ * configure.in : added --with-mailhost option
+ * Makefile.in : ditto
+ * aclocal.m4 : regenerated
+ * configure : ditto
+ * README : documented the new configure option
+ * gnu/testlet/config.java.in : added new config attribute & getter
+ for the selected mailhost
+ * gnu/testlet/SimpleTestHarness.java : added new config getter
+ * gnu/testlet/java/net/Socket/SocketTest.java : use selected mailhost
+ * gnu/testlet/java/net/Socket/jdk12.java : ditto
+ * gnu/testlet/java/net/Socket/jdk13.java : ditto
+ * gnu/testlet/java/net/Socket/jdk14.java : ditto
+
+2004-08-12 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Rectangle/add.java: New test.
+ * gnu/testlet/java/awt/Rectangle/clone.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/contains.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/equals.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/grow.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/intersection.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/intersects.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/isEmpty.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/outcode.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/setBounds.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/setLocation.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/setRect.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/setSize.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/translate.java: Likewise.
+ * gnu/testlet/java/awt/Rectangle/union.java: Likewise.
+
+2004-08-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Arc2D/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Arc2D/constants.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/constructors.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/contains.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/containsAngle.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/equals.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/getBounds2D.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/getEndPoint.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/getPathIterator.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/getStartPoint.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/intersects.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/isEmpty.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setAngleExtent.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setAngleStart.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setAngles.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setArc.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setArcByCenter.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setArcByTangent.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setArcType.java: Likewise.
+ * gnu/testlet/java/awt/geom/Arc2D/setFrame.java: Likewise.
+
+2004-08-09 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/Dimension/clone.java: New test.
+ * gnu/testlet/java/awt/Dimension/constructors.java: Likewise.
+ * gnu/testlet/java/awt/Dimension/equals.java: Likewise.
+ * gnu/testlet/java/awt/Dimension/getSize.java: Likewise.
+ * gnu/testlet/java/awt/Dimension/setSize.java: Likewise.
+
+2004-08-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/awt/image/Kernel/check.java (test): Always
+ pass argument to getKernelData. Use "=", not "==".
+
+2004-08-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Line2D/linesIntersect.java: Add
+ tests for zero length lines at same point and segments share
+ end point.
+
+2004-08-06 David Gilbert <david.gilbert@object-refinery.com>
+
+ * gnu/testlet/java/awt/geom/Line2D/clone.java: New test.
+ * gnu/testlet/java/awt/geom/Line2D/contains.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/equals.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/getBounds.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/getP1.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/getP2.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/getPathIterator.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/intersects.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/intersectsLine.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/ptLineDist.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/ptLineDistSq.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/ptSegDist.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/ptSegDistSq.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/relativeCCW.java: Likewise.
+ * gnu/testlet/java/awt/geom/Line2D/setLine.java: Likewise.
+
+2004-08-06 Sven de Marothy <sven@physto.se>
+
+ * gnu/testlet/java/awt/geom/Line2D/linesIntersect.java: New test.
+
+2004-07-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/init.java: Allow early initialization of
+ inner class and interface.
+
+2004-07-18 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/awt/Choice/getSelected.java: Tweaked to avoid
+ uncaught NullPointerExceptions when getSelectedObjects() returns null
+ * gnu/testlet/java/beans/EventHandler/check14.java : removed 'Uses:'
+ marker comment for a non-existent class.
+ * gnu/testlet/java/nio/Buffer/PlainBufferTest.java : ditto
+ * gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest : ditto
+
+2004-07-16 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/channels/FileChannel/manyopen.java:
+ Fixed off-by-one error in cleanup.
+
+2004-07-16 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/beans/EventHandler/check14.java,
+ gnu/testlet/java/nio/Buffer/PlainBufferTest.java,
+ gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java,
+ gnu/testlet/java/util/logging/Logger/getLogger.java:
+ Fixed for native compilation with gcj CVS HEAD.
+
+2004-07-15 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/testlet/java/sql/Timestamp/TimestampTest.java: New toString()
+ and equals() tests.
+
+2004-07-14 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/awt/image/Kernel/check.java (test): New test.
+
+2004-07-13 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/beans/EventHandler/check14.java (test): New test.
+
+2004-07-08 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/nio/channels/FileChannel/manyopen.java :
+ Don't call the GC after each iteration. If the VM under test
+ pays attention, it just makes the test SLOW.
+
+2004-07-04 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/Choice/getSelected.java: New test.
+
+2004-07-04 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/beans/Expression/check.java: Add extra debug.
+
+2004-06-29 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/util/GregorianCalendar/conversion.java: New file
+
+2004-06-28 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java: Fix comment.
+
+2004-06-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/security.java: Allow RuntimePermission
+ shutdownhook check. There must be at least one File root.
+
+2004-06-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FileReader/jdk11.java: Don't depend on the
+ choices file being present.
+
+2004-06-24 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/beans/Expression/check.java: New test.
+
+2004-06-23 Max Gilead <gilead@yellowhedgehog.com>
+
+ * gnu/testlet/java/nio/Buffer/PlainBufferTest.java,
+ gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java:
+ Made sure exception-based tests fail properly.
+
+2004-06-23 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/text/GapContent/GapContentTest.java,
+ gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java,
+ gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java:
+ New files.
+
+2004-06-21 Ito kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/text/MessageFormat/format.java:
+ Add some tests.
+
+2004-06-20 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/beans/Statement/check.java: New test.
+
+2004-06-09 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java: New test.
+
+2004-06-06 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/SimpleTimeZone/check14.java: Fix uses of
+ SimpleTimeZone.getOffset.
+
+2004-06-05 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/zip/ZipEntry/time.java: New test.
+
+2004-06-03 Max Gilead <gilead@yellowhedgehog.com>
+
+ * gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java,
+ gnu/testlet/java/awt/geom/FlatteningPathIterator/getWindingRule.java,
+ gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java,
+ gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java,
+ gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java,
+ gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java,
+ gnu/testlet/java/io/BufferedOutputStream/helper.java,
+ gnu/testlet/java/io/File/newFile.java,
+ gnu/testlet/java/io/File/security.java,
+ gnu/testlet/java/io/FileOutputStream/jdk12.java,
+ gnu/testlet/java/io/FileReader/jdk11.java,
+ gnu/testlet/java/io/FileWriter/jdk11.java,
+ gnu/testlet/java/io/FilterWriter/MyFilterWriter.java,
+ gnu/testlet/java/io/FilterWriter/write.java,
+ gnu/testlet/java/io/ObjectInputOutput/Compat2.java,
+ gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java,
+ gnu/testlet/java/io/ObjectStreamClass/Test.java,
+ gnu/testlet/java/io/RandomAccessFile/jdk11.java,
+ gnu/testlet/java/lang/Class/reflect2.java,
+ gnu/testlet/java/lang/Number/NewNumber.java,
+ gnu/testlet/java/lang/StringBuffer/plus.java,
+ gnu/testlet/java/lang/reflect/Method/toString.java,
+ gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java,
+ gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java,
+ gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java,
+ gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java,
+ gnu/testlet/java/net/MulticastSocket/MulticastClient.java,
+ gnu/testlet/java/net/MulticastSocket/MulticastServer.java,
+ gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java,
+ gnu/testlet/java/net/ServerSocket/BasicSocketServer.java,
+ gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java,
+ gnu/testlet/java/net/ServerSocket/MyServerSocket.java,
+ gnu/testlet/java/net/Socket/SocketBServer.java,
+ gnu/testlet/java/net/Socket/SocketServer.java,
+ gnu/testlet/java/net/URL/MyURLStreamHandler.java,
+ gnu/testlet/java/net/URL/URLTest.java,
+ gnu/testlet/java/net/URLClassLoader/getResource.java,
+ gnu/testlet/java/net/URLClassLoader/getResourceBase.java,
+ gnu/testlet/java/net/URLClassLoader/getResourceRemote.java,
+ gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java,
+ gnu/testlet/java/net/URLEncoder/URLEncoderTest.java,
+ gnu/testlet/java/nio/channels/FileChannel/manyopen.java,
+ gnu/testlet/java/security/DigestInputStream/readMD5.java,
+ gnu/testlet/java/security/Provider/NameVersionInfo.java,
+ gnu/testlet/java/security/Security/property.java,
+ gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java,
+ gnu/testlet/java/text/ChoiceFormat/format.java,
+ gnu/testlet/java/text/CollationElementIterator/jdk11.java,
+ gnu/testlet/java/text/CollationElementIterator/offset.java,
+ gnu/testlet/java/text/MessageFormat/attribute.java,
+ gnu/testlet/java/text/ParsePosition/Test.java,
+ gnu/testlet/java/util/ResourceBundle/Resource1.java,
+ gnu/testlet/java/util/ResourceBundle/Resource10_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource2_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource3_bo.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_en_CA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_jp.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN.java,
+ gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN_95.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5_en_CA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5_jp.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA_WIN.java,
+ gnu/testlet/java/util/ResourceBundle/Resource6.java,
+ gnu/testlet/java/util/ResourceBundle/Resource6_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource6_en_CA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource6_jp.java,
+ gnu/testlet/java/util/ResourceBundle/Resource6_jp_JA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource7.java,
+ gnu/testlet/java/util/ResourceBundle/Resource7_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource7_en_CA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource7_jp.java,
+ gnu/testlet/java/util/ResourceBundle/Resource8.java,
+ gnu/testlet/java/util/ResourceBundle/Resource8_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource8_en_CA.java,
+ gnu/testlet/java/util/ResourceBundle/Resource9_en.java,
+ gnu/testlet/java/util/ResourceBundle/Resource9_en_CA.java,
+ gnu/testlet/java/util/jar/JarFile/basic.java,
+ gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java,
+ gnu/testlet/java/util/logging/Handler/TestHandler.java,
+ gnu/testlet/java/util/logging/Handler/isLoggable.java,
+ gnu/testlet/java/util/logging/Level/getName.java,
+ gnu/testlet/java/util/logging/Level/intValue.java,
+ gnu/testlet/java/util/logging/Level/toString.java,
+ gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java,
+ gnu/testlet/java/util/logging/SocketHandler/getFilter.java,
+ gnu/testlet/java/util/regex/TestHelper.java,
+ gnu/testlet/java/util/zip/GZIPInputStream/basic.java,
+ gnu/testlet/java/util/zip/InflaterInputStream/basic.java,
+ gnu/testlet/java/util/zip/ZipInputStream/basic.java,
+ gnu/testlet/java/util/zip/ZipInputStream/close.java,
+ gnu/testlet/javax/imageio/spi/IIOServiceProvider/TestProvider.java,
+ gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/TestProvider.java,
+ gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/TestProvider.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/TestProvider.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraImageMetadataFormatNames.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraStreamMetadataFormatNames.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFileSuffixes.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFormatNames.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getMIMETypes.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeImageMetadataFormatName.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeStreamMetadataFormatName.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getPluginClassName.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardImageMetadataFormatSupported.java,
+ gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardStreamMetadataFormatSupported.java,
+ gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/TestProvider.java,
+ gnu/testlet/javax/swing/JLabel/Icon.java,
+ gnu/testlet/javax/swing/JLabel/Mnemonic.java,
+ gnu/testlet/javax/swing/undo/CompoundEdit/canRedo.java,
+ gnu/testlet/javax/swing/undo/CompoundEdit/canUndo.java,
+ gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java,
+ gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java,
+ gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java,
+ gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java,
+ gnu/testlet/javax/swing/undo/UndoableEditSupport/createCompoundEdit.java
+ gnu/testlet/javax/swing/undo/UndoableEditSupport/getUpdateLevel.java:
+ Reworked import statements and removed dead code.
+
+2004-05-23 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/net/MulticastSocket/MulticastServer.java:
+ Fixed bad indentation etc.
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java:
+ Add harness.debug calls to diagnose unexpected exceptions.
+
+2004-05-28 Max Gilead <gilead@yellowhedgehog.com>
+
+ * gnu/testlet/java/nio/Buffer/BufferFactory.java,
+ gnu/testlet/java/nio/Buffer/ByteBufferTest.java,
+ gnu/testlet/java/nio/Buffer/CharBufferTest.java,
+ gnu/testlet/java/nio/Buffer/DoubleBufferTest.java,
+ gnu/testlet/java/nio/Buffer/FloatBufferTest.java,
+ gnu/testlet/java/nio/Buffer/IntBufferTest.java,
+ gnu/testlet/java/nio/Buffer/LongBufferTest.java,
+ gnu/testlet/java/nio/Buffer/PlainBufferTest.java,
+ gnu/testlet/java/nio/Buffer/ShortBufferTest.java,
+ gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java:
+ New testcases.
+
+2004-05-28 Max Gilead <gilead@yellowhedgehog.com>
+
+ * gnu/testlet/TestHarness.java
+ (check): New method.
+
+2004-05-28 Michael Koch <konqueror@gmx.de>
+
+ * .cvsignore: Ingore more files.
+
+2004-05-28 Michael Koch <konqueror@gmx.de>
+
+ * runner, batch_run: Fixed shell variable usage.
+
+2004-05-26 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/BinaryCompatibility/.cvsignore:
+ Ignore the right files.
+
+2004-05-26 Michael Koch <konqueror@gmx.de>
+
+ * batch_run: Don't set KEYS and COMPILER if already set.
+ * runner: Don't set RUNTIME if already set.
+
+2004-05-23 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java: Ooops
+ ... a bug in my little app for converting ruleset strings gave me
+ a broken ruleset.
+
+2004-05-23 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java: Use a
+ hardwired "en_us" collation ruleset (from JDK 1.4) rather than
+ the ruleset in the Locale. We are trying to test the collation
+ element iterator not the ruleset. (And the Classpath "en_us"
+ locale's ruleset is thoroughly broken at the moment ...)
+
+2004-05-21 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/SimpleTimeZone/check12.java: Fix test to
+ correctly use getOffset. Add testcase for PR libgcj/8321.
+
+2004-05-19 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/init.java: New test.
+
+2004-05-16 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/CollationElementIterator/offset.java: New test
+ to check the get/setOffset() abilities of CollationElementIterator.
+
+2004-05-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/TestSocketImplFactory.java: Make
+ constructor public.
+
+2004-05-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/Writer/Test.java: Add test for null lock.
+
+2004-05-13 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/RuleBasedCollator/jdk11.java: Fixed
+ the test according to the following bug in the JDK
+ http://developer.java.sun.com/developer/bugParade/bugs/4406815.html
+
+2004-05-12 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Integer/getInteger.java : fixed the
+ security test to work on JDK 1.4, and to always remove the test
+ security manager.
+ * gnu/testlet/java/io/FilePermission/simple.java : fixed existing
+ test to work on JDK 1.4. Added new tests for constructor arg
+ checking (as per the JDK 1.4 javadoc).
+
+2004-05-11 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/io/FilterWriter/MyFilterWriter.java : new file
+ * gnu/testlet/java/io/FilterWriter/write.java : fixed structure,
+ and added test for documented behaviour of new FilterWriter(null).
+
+2004-05-11 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/util/logging/Logger/TestSecurityManager.java
+ (checkPermission): include the permission in the message when
+ throwing AccessControlException
+ * gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java (test):
+ disable the test's security manager. The JDK 1.4.2 implementation
+ of logging requires 'LoggingPermission("control")' during static
+ initialization of the Logger class.
+
+2004-05-09 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/SimpleTimeZone/check12.java (test): Fix
+ silly errors in test parameters.
+
+2004-05-07 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/NetworkInterface/getByName.java:
+ New file.
+
+2004-05-07 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/Calendar/minmax.java: New test.
+
+2004-05-02 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/io/File/jdk11.java
+ (test): access static field in config in a static way
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java
+ (test): access static field harness in a static way
+ * gnu/testlet/java/net/Socket/SocketTest.java
+ (test_BasicBServer): access static field harness in a static way
+ * gnu/testlet/java/net/URLConnection/URLConnectionTest.java
+ (test_URLConnection): access static method in URLConnection in a
+ static way
+ * gnu/testlet/java/net/SocketTest.java
+ (test_BasicServer): access static field harness in SocketServer
+ in a static way
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java
+ (test_params): access static method setSocketFactory in a static way
+ * gnu/testlet/java/net/URL/URLTest.java
+ (test_Basics): access static method setURLStreamHandlerFactory
+ in a static way
+ * gnu/testlet/java/lang/Thread/interrupt.java
+ (test): access static method sleep in a static way
+
+2004-05-02 Thomas Zander <zander@kde.org>
+
+ * gnu/anttask/RunTests: Add javadoc, add setSrcdir, setTestJDK,
+ setTestJDBC.
+ * build.xml: fix typo, use new flags srcdir, testjdk, testjdbc.
+
+ * gnu/testlet/java/beans/Introspector/jdk12.java: Remove duplicate tag.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java
+ gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java
+ gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java
+ gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java
+ gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java: Fix tag.
+
+2004-05-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/nio/channels/FileChannel/manyopen.java: New test.
+
+2004-05-01 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java: Added new testcases.
+
+2004-05-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/nio/channels/FileChannel/truncate.java: New test.
+
+2004-05-01 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java
+ Cosmetic - fix ugly line breaking etc that makes the code
+ hard to read.
+
+2004-04-29 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java:
+ Added new testcase to check if InetAddress.getByName("127.0.0.1")
+ really returns an instance of Inet4Address. Un-commented JDK 1.1
+ testcases.
+
+2004-04-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/RandomAccessFile/setLength.java: New test.
+
+2004-04-29 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/nio/IntBuffer/compareTo.java,
+ gnu/testlet/javax/print/DocFlavor/parseMimeType.java:
+ New testcases.
+
+2004-04-28 Jerry Quinn <jlquinn@optonline.net>
+
+ * gnu/testlet/java/util/SimpleTimeZone: New directory.
+ * gnu/testlet/java/util/SimpleTimeZone/
+ check12.java, check14.java: New tests.
+
+2004-04-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java: Remove
+ RESERVED_PORT (21) test.
+
+2004-04-24 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Integer/getInteger.java
+ (checkPropertyAccess): Fixed bug in the security check that
+ caused the last subtest to fail.
+
+ * gnu/testlet/java/lang/reflect/ReflectAccess.java: Tweak code
+ so that subtests are counted if they succeed, and they have
+ description messages.
+
+2004-04-20 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/net/URL/URLTest.java
+ (test_authority): New test pool to check authority support in
+ java.net.URL.
+
+2004-04-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/setSocketImplFactory.java: Add debug
+ when an unexpected exception occurs.
+ * gnu/testlet/java/net/Socket/TestSocketImplFactory.java: Use
+ reflection to get a class/constructor for the SocketImpl that we
+ need to return in createSocketImpl().
+
+2004-04-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/ref/PhantomReference/phantom.java: Call
+ Thread.yield().
+
+ * gnu/testlet/java/io/File/security.java: Delete all temporary files
+ and directories in the finally block.
+
+ * gnu/testlet/java/net/Socket/SocketTest.java: mail.gnu.org was
+ renamed mx10.gnu.org.
+ * gnu/testlet/java/net/Socket/jdk12.java: Likewise.
+ * gnu/testlet/java/net/Socket/jdk13.java: Likewise.
+ * gnu/testlet/java/net/Socket/jdk14.java: Likewise.
+
+2004-04-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/TestSecurityManager2.java: Add private harness and
+ use it for extra debug output.
+ * gnu/testlet/java/io/File/security.java: Add tmpdir2, write and
+ delete permissions. Use it for setReadOnly() and dir.delete test.
+
+2004-04-16 Mark Wielaard <mark@klomp.org>
+
+ * README: Add documentation for batch_run and runner scripts.
+
+2004-04-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/awt/image/ComponentColorModel/
+ createCompatibleSampleModel.java: Remove unneeded import
+ javax.imageio.ImageTypeSpecifier.
+
+2004-04-15 Archie Cobbs <archie@dellroad.org>
+
+ * gnu/testlet/java/lang/ref/PhantomReference/phantom.java: Give the
+ runtime some more hints (Thread.yield/System.gc) that it should
+ really garbage collect.
+
+2004-04-15 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/Character/unicode.java:
+ Added CharInfo to Uses: tag.
+
+2004-04-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/image/ComponentColorModel/
+ createCompatibleSampleModel.java: New tests.
+
+2004-04-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/image/DataBufferByte/
+ getDataType.java, getElem.java: New tests.
+
+ * gnu/testlet/java/awt/image/DataBufferDouble/
+ getDataType.java, getElem.java: New tests.
+
+ * gnu/testlet/java/awt/image/DataBufferFloat/
+ getDataType.java, getElem.java: New tests.
+
+ * gnu/testlet/java/awt/image/DataBufferInt/
+ getDataType.java, getElem.java: New tests.
+
+ * gnu/testlet/java/awt/image/DataBufferShort/
+ getDataType.java, getElem.java: New tests.
+
+ * gnu/testlet/java/awt/image/DataBufferUShort/
+ getDataType.java, getElem.java: New tests.
+
+2004-04-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/
+ getFormatNames.java: Check for NullPointerException when
+ instance was created with no-argument constructor.
+
+ * gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/
+ getFormatNames.java,
+ getFileSuffixes.java,
+ getMIMETypes.java,
+ getExtraStreamMetadataFormatNames.java,
+ getExtraImageMetadataFormatNames.java:
+ Also accept a clone of the expected value.
+
+2004-04-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/color/ColorSpace/getInstance.java:
+ New file.
+
+2004-04-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/image/PixelInterleavedSampleModel:
+ New directory.
+ * gnu/testlet/java/awt/image/PixelInterleavedSampleModel/
+ createSubsetSampleModel.java: New file.
+
+2004-04-13 Thomas Zander <zander@kde.org>
+
+ * build.xml: New file.
+ * gnu/testlet/javax/swing/JLabel/Icon.java: New file.
+ * gnu/testlet/javax/swing/JLabel/Mnemonic.java: New file.
+
+ * gnu/testlet/java/text/SimpleDateFormat/attribute.java
+ (test_FieldPos): Locals no longer static.
+
+ * gnu/testlet/SimpleTestHarness.java (getFailures): New method.
+ * gnu/anttask/RunTests.java: New file.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/stream/,
+ gnu/testlet/javax/imageio/stream/IIOByteBuffer: New directories.
+
+ * gnu/testlet/javax/imageio/stream/IIOByteBuffer/
+ setData.java,
+ setLength.java,
+ setOffset.java: New tests.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/IIOServiceProvider: New directory.
+
+ * gnu/testlet/javax/imageio/spi/IIOServiceProvider/
+ getVendorName.java,
+ getVersion.java: New tests.
+ TestProvider.java: New helper for use by tests.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/ImageInputStreamSpi: New directory.
+
+ * gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/
+ ImageInputStreamSpi.java,
+ canUseCacheFile.java,
+ needsCacheFile.java: New tests.
+ TestProvider.java: New helper for use by tests.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi: New directory.
+
+ * gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/
+ ImageOutputStreamSpi.java,
+ canUseCacheFile.java,
+ needsCacheFile.java: New tests.
+ TestProvider.java: New helper for use by tests.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi: New directory.
+
+ * gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/
+ getExtraImageMetadataFormatNames.java,
+ getExtraStreamMetadataFormatNames.java,
+ getFileSuffixes.java,
+ getFormatNames.java,
+ getMIMETypes.java,
+ getNativeImageMetadataFormatName.java,
+ getNativeStreamMetadataFormatName.java,
+ getPluginClassName.java,
+ isStandardImageMetadataFormatSupported.java,
+ isStandardStreamMetadataFormatSupported.java: New tests.
+ TestProvider.java: New helper for use by tests.
+
+2004-04-13 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio/spi/ImageTranscoderSpi: New directory.
+
+ * gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/
+ ImageTranscoderSpi.java: New test.
+ TestProvider.java: New helper for use by test.
+
+2004-04-13 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Character/CharInfo.java : Added an extra
+ field used by the unicode testcase. (Sorry folks ...)
+
+2004-04-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/contextClassLoader.java: Use three
+ argument check to set (debug) message.
+
+2004-04-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java: Use check with
+ two argument, not equals(), to show what is actually different.
+
+2004-04-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/RandomAccessFile/jdk11.java: Show IOException in
+ debug mode.
+
+2004-04-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Compat1.java: Use check with
+ two argument, not equals(), to show what is actually different.
+
+2004-04-09 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Character/unicode.java: Numerous fixes.
+ Use Unicode 3.0.0 code tables. Reimplemented various tests to
+ match the javadoc for java.lang.Character in JDK 1.4. Refactored
+ to make it easier for someone to implement JDK 1.3, etc versions
+ of this testcase.
+ * gnu/testlet/java/lang/Character/UnicodeBase.java: new file
+ * gnu/testlet/java/lang/Character/UnicodeData-3.0.0.txt: new file
+
+2004-04-07 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/io/ObjectInput/Test.java: New test (FinalField) to
+ check that ObjectInputStream is able to set final fields.
+
+ * gnu/testlet/java/io/ObjectInput/Test$FinalField.data: New reference
+ data.
+
+2004-04-05 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Character/unicode.java: Fixed up crappy
+ indentation, etc prior to making some real fixes.
+
+2004-03-26 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Compat2.java: Explicitly set
+ serialVersionUID. Make debug messages more clear.
+
+2004-03-25 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Compat2.java: Check the right
+ thing according to classpath policy (this test fails on JDK).
+
+2004-03-24 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/SimpleDateFormat/attribute.java: New tests.
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java: Fixed test to be
+ spec compliant (Long is just a guess, it may change with
+ implementation).
+
+2004-03-24 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/imageio, gnu/testlet/javax/imageio/spi,
+ gnu/testlet/javax/imageio/spi/ServiceRegistry: New directories.
+
+ * gnu/testlet/javax/imageio/spi/ServiceRegistry/
+ MultiplicationService.java, MultiplierOne.java,
+ MultiplierThree.java, MultiplierTwo.java, TestService.java,
+ deregisterAll.java, getCategories.java,
+ getServiceProviderByClass.java, lookupProviders.java,
+ registerServiceProvider.java, setOrdering.java: New tests.
+
+2004-03-22 Ito Kazumitsu <kaz@maczuka.gcd.org>
+ * gnu/testlet/java/util/Properties/load.java: Add tests
+ copied from Kaffe's regression test.
+
+2004-03-21 Michael Koch <konqueror@gmx.de>
+
+ * choose, choose-classes: Added handling for suppression testcases in
+ BinaryCompatibility.* namespace.
+
+2004-03-15 Michael Koch <konqueror@gmx.de>
+
+ * THANKS: Added myself.
+
+2004-03-15 Michael Koch <konqueror@gmx.de>
+
+ * acinclude.m4: Correctly quote in AC_DEFUN.
+
+2004-03-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/System/arraycopy.java: Add tests for copying
+ arrays of different dimensions.
+
+2004-03-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FilePermission/simple.java: Add test for dirs
+ without a file separator.
+
+2004-03-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/PrintWriter/checkError.java: New test.
+
+2004-03-11 Mark Wielaard <mark@klomp.org>
+
+ * batch_run: Add jikes -bootclasspath example. Only show PASS: or
+ FAIL: results (eliminate killed/terminated messages).
+ * runner: Add jamvm example. Only kill when not KILLED (by timeout).
+
+2004-03-11 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/Handler/getErrorManager.java,
+ gnu/testlet/java/util/logging/Handler/isLoggable.java,
+ gnu/testlet/java/util/logging/Handler/reportError.java,
+ gnu/testlet/java/util/logging/Handler/setEncoding.java,
+ gnu/testlet/java/util/logging/Handler/setErrorManager.java,
+ gnu/testlet/java/util/logging/Handler/setFilter.java,
+ gnu/testlet/java/util/logging/Handler/setLevel.java,
+ gnu/testlet/java/util/logging/Handler/TestErrorManager.java,
+ gnu/testlet/java/util/logging/Handler/TestHandler.java,
+ gnu/testlet/java/util/logging/Handler/TestSecurityManager.java:
+ New files.
+
+2004-03-09 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/BufferedInputStream/BigMark.java: New test.
+
+2004-03-08 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/io/File/security.java : revamped testcase to
+ use a test security manager to monitor the permissions checked.
+ * gnu/testlet/TestSecurityManager2.java : new class
+
+ * Makefile.am : Added gnu/testlet/TestSecurityManager2.java to
+ the harness file list. Added a rule to clean up /tmp/mauve-testdir
+ * Makefile.in : regenerated
+ * aclocal.m4 : regenerated
+ * configure : regenerated
+
+2004-02-25 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/DecimalFormat/DecimalFormat.java:
+ Fixed "#.#" testcase.
+
+ * gnu/testlet/java/text/AttributedString/Test.java:
+ Fixed offsets. New subtestcase.
+
+2004-02-27 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/Logger/getName.java,
+ gnu/testlet/java/util/logging/Logger/hierarchyChecks.java:
+ New files.
+
+2004-02-27 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/Logger/getLogger.java
+ (TestResourceBundle): Moved into separate file.
+
+ * gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java,
+ gnu/testlet/java/util/logging/Logger/TestFilter.java,
+ gnu/testlet/java/util/logging/Logger/TestResourceBundle.java:
+ New files.
+
+2004-02-27 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/Logger: New directory.
+
+ * gnu/testlet/java/util/logging/Logger/getLogger.java,
+ gnu/testlet/java/util/logging/Logger/global.java,
+ gnu/testlet/java/util/logging/Logger/securityChecks.java,
+ gnu/testlet/java/util/logging/Logger/TestLogger.java,
+ gnu/testlet/java/util/logging/Logger/TestSecurityManager.java:
+ New file.
+
+2004-02-27 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/LogRecord: New directory.
+
+ * gnu/testlet/java/util/logging/LogRecord/getMillis.java,
+ gnu/testlet/java/util/logging/LogRecord/getThreadID.java,
+ gnu/testlet/java/util/logging/LogRecord/setLevel.java,
+ gnu/testlet/java/util/logging/LogRecord/setLoggerName.java,
+ gnu/testlet/java/util/logging/LogRecord/setMessage.java,
+ gnu/testlet/java/util/logging/LogRecord/setMillis.java,
+ gnu/testlet/java/util/logging/LogRecord/setParameters.java,
+ gnu/testlet/java/util/logging/LogRecord/setResourceBundle.java,
+ gnu/testlet/java/util/logging/LogRecord/setSequenceNumber.java,
+ gnu/testlet/java/util/logging/LogRecord/setSourceClassName.java,
+ gnu/testlet/java/util/logging/LogRecord/setSourceMethodName.java,
+ gnu/testlet/java/util/logging/LogRecord/setThreadID.java,
+ gnu/testlet/java/util/logging/LogRecord/setThrown.java:
+ New file.
+
+2004-02-26 Sascha Brawer <brawer@dandelis.ch>
+
+ * THANKS: Adding myself.
+
+2004-02-26 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/util/logging/Level: New directory.
+
+ * gnu/testlet/java/util/logging/Level/equals.java,
+ gnu/testlet/java/util/logging/Level/getName.java,
+ gnu/testlet/java/util/logging/Level/hashCode.java,
+ gnu/testlet/java/util/logging/Level/intValue.java,
+ gnu/testlet/java/util/logging/Level/parse.java,
+ gnu/testlet/java/util/logging/Level/TestUtils.java,
+ gnu/testlet/java/util/logging/Level/toString.java: New file.
+
+ * gnu/testlet/java/util/logging/SocketHandler: New directory.
+
+ * gnu/testlet/java/util/logging/SocketHandler/getFilter.java,
+ gnu/testlet/java/util/logging/SocketHandler/getFormatter.java,
+ gnu/testlet/java/util/logging/SocketHandler/publish.java,
+ gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java,
+ gnu/testlet/java/util/logging/SocketHandler/SocketHandler.java:
+ New file.
+
+ * gnu/testlet/java/util/logging/XMLFormatter: New directory.
+
+ * gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java,
+ gnu/testlet/java/util/logging/XMLFormatter/getHead.java,
+ gnu/testlet/java/util/logging/XMLFormatter/getTail.java:
+ New files.
+
+2004-02-25 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java:
+ New testcases for java.net.InetSocketAddress.
+
+2004-02-11 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/swing/undo/UndoManager: New directory.
+
+ * gnu/testlet/javax/swing/undo/UndoManager/addEdit.java,
+ gnu/testlet/javax/swing/undo/UndoManager/canRedo.java,
+ gnu/testlet/javax/swing/undo/UndoManager/canUndo.java,
+ gnu/testlet/javax/swing/undo/UndoManager/canUndoOrRedo.java,
+ gnu/testlet/javax/swing/undo/UndoManager/discardAllEdits.java,
+ gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java,
+ gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java,
+ gnu/testlet/javax/swing/undo/UndoManager/end.java,
+ gnu/testlet/javax/swing/undo/UndoManager/getLimit.java,
+ gnu/testlet/javax/swing/undo/UndoManager/getRedoPresentationName.java,
+ gnu/testlet/javax/swing/undo/UndoManager/
+ getUndoOrRedoPresentationName.java,
+ gnu/testlet/javax/swing/undo/UndoManager/getUndoPresentationName.java,
+ gnu/testlet/javax/swing/undo/UndoManager/redoTo.java,
+ gnu/testlet/javax/swing/undo/UndoManager/setLimit.java,
+ gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java,
+ gnu/testlet/javax/swing/undo/UndoManager/toString.java,
+ gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java,
+ gnu/testlet/javax/swing/undo/UndoManager/undoableEditHappened.java,
+ gnu/testlet/javax/swing/undo/UndoManager/undoTo.java:
+ New files.
+
+2004-01-24 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java:
+ Added testcase for PR libgcj/13102.
+
+2004-01-12 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/lang/reflect/Other.java: New file.
+ * gnu/testlet/java/lang/reflect/ReflectAccess.java:
+ Added Uses: tag, moved class "Other" to an extra file.
+
+2004-01-10 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/text/MessageFormat/attribute.java:
+ New testcase for MessageFormat.formatToCharacterIterator.
+
+2004-01-08 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/regex/CharacterClasses.java: New file.
+ * gnu/testlet/java/util/regex/PatternSplit.java: Likewise.
+ * gnu/testlet/java/util/regex/TestHelper.java: Likewise.
+
+2004-01-07 Sascha Brawer <brawer@dandelis.ch>
+
+ Classpath bug #7123.
+ * gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java
+ ((x^2)/10 + 20x + 1000 = 0): Add a comment explaining the situation
+ on various VMs.
+
+2004-01-07 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/javax/swing/DefaultBoundedRangeModel/
+ DefaultBoundedRangeModel.java, setExtent.java, setMaximum.java,
+ setMinimum.java, setValue.java: Added "// Uses: setRangeProperties".
+
+2004-01-07 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java:
+ When debug option is set and the result is not as expected,
+ emit the actual and expected solutions.
+
+2004-01-07 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/swing/undo/CompoundEdit/
+ addEdit.java, canRedo.java, canUndo.java, isInProgress.java,
+ lastEdit.java: New tests.
+
+ * gnu/testlet/javax/swing/undo/UndoableEditSupport/
+ UndoableEditSupport.java, createCompoundEdit.java,
+ getUndoableEditListeners.java, getUpdateLevel.java: New tests.
+
+ Classpath bug #7119.
+ * gnu/testlet/javax/swing/undo/UndoableEditSupport/toString.java:
+ New test.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ Classpath bug #7109.
+ * gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java:
+ New test.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/
+ createDataBuffer, getSampleSize.java: New tests.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ Classpath bug #7107.
+ * gnu/testlet/javax/swing/DefaultBoundedRangeModel/
+ DefaultBoundedRangeModel.java, getChangeListeners.java,
+ getExtent.java, getMaximum.java, getMinimum.java,
+ getValueIsAdjusting.java, getValue.java, setExtent.java,
+ setMaximum.java, setMinimum.java, setRangeProperties.java,
+ setValueIsAdjusting.java, setValue.java, toString.java: New tests.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/swing/event/EventListenerList/getListeners.java,
+ gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java,
+ gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java,
+ gnu/testlet/javax/swing/event/EventListenerList/toString.java:
+ New tests.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ Classpath bug #7105.
+ * gnu/testlet/javax/swing/event/EventListenerList/remove.java: New
+ test, passes with JDK 1.4.1_01 but not with Classpath.
+
+2004-01-06 Sascha Brawer <brawer@dandelis.ch>
+
+ Classpath bug #7104.
+ * gnu/testlet/javax/swing/event/EventListenerList/add.java: New test,
+ passes with JDK 1.4.1_01 but not with Classpath.
+
+2004-01-03 Per Bothner <per@bothner.com>
+
+ * gnu/testlet/java/util/Date/parse.java (parse): New testcases
+ for Date.parse.
+
+2003-12-30 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/net/URL/URLTest.java: Fixed. Now it
+ passes with JDK 1.4.2.
+
+2003-12-28 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/io/LineNumberReader/Test2.java:
+ New testcases for LineNumberReader (stress tests).
+
+2003-12-27 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/net/URLConnection/Http.java:
+ New really slightly improved HTTP connection testcase. We really check
+ the presence of the null header in URLConnection.
+
+2003-12-27 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * gnu/testlet/java/io/CharArrayReader/OutOfBounds.java:
+ New testcase to check exception thrown by CharArrayReader.read(X).
+
+2003-12-22 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/DatagramPacket/DatagramPacketOffset.java,
+ gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive.java,
+ gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive2.java:
+ New files from Norbert Frese to test UDP packet sending/receiving.
+
+2003-12-15 Guilhem Lavaux <guilem@kaffe.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Compat1.java,
+ gnu/testlet/java/io/ObjectInputOutput/Compat2.java:
+ Added copyright advertisement.
+
+2003-12-14 Guilhem Lavaux <guilem@kaffe.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Compat1.java,
+ gnu/testlet/java/io/ObjectInputOutput/Compat2.java,
+ gnu/testlet/java/io/ObjectInputOutput/Compat1.serial.bin,
+ gnu/testlet/java/io/ObjectInputOutput/Compat2.serial.bin:
+ New tests.
+
+2003-12-08 Bryce McKinlay <bryce@mckinlay.net.nz>
+
+ * gnu/testlet/java/util/Hashtable/NullValue.java: New test.
+
+2003-12-01 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/testlet/java/awt/image/PixelGrabber/SimpleGrabber.java,
+ gnu/testlet/java/awt/image/PixelGrabber/lena1.jpg:
+ New test.
+
+2003-11-28 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/DigestInputStream/readMD5.java: New test.
+
+2003-11-27 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * gnu/testlet/java/util/Calendar/ampm.java: New test.
+
+2003-11-27 Mark Wielaard <mark@klomp.org>
+
+ * choose-classes: New script.
+ * uses-list: New script.
+ * runner: New script.
+ * batch_run: New script.
+
+2003-11-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/zip/ZipFile/newZipFile.java: New test.
+
+2003-11-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/Hashtable/ContainsHash.java: New test.
+
+2003-11-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/DecimalFormatSymbols/serial.java: New test.
+
+2003-11-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/Hashtable/HashContains.java: New test.
+
+2003-11-16 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/StreamTokenizer/commentchar.java: Expect
+ EOL, not EOF.
+
+ * gnu/testlet/java/io/StreamTokenizer/commentchar.java
+ (tokenize): New overloaded method.
+ (make_tokenizer): New method.
+ (test): Added new test.
+
+2003-11-14 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/javax/swing/undo/AbstractUndoableEdit/addEdit.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canRedo.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canUndo.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/
+ getPresentationName.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/
+ getRedoPresentationName.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/
+ getUndoPresentationName.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/isSignificant.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/redo.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/replaceEdit.java,
+ gnu/testlet/javax/swing/undo/AbstractUndoableEdit/undo.java,
+ gnu/testlet/javax/swing/undo/StateEdit/getPresentationName.java,
+ gnu/testlet/javax/swing/undo/StateEdit/undo.java: New files.
+
+2003-11-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URL/newURL.java: Test anonymous:anonymous@host.
+
+2003-11-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URL/newURL.java: New test, adapted from kaffe.
+
+2003-11-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLConnection/getPermission.java: New test.
+
+2003-11-12 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/geom/FlatteningPathIterator/
+ FlatteningPathIterator.java: New file.
+ * gnu/testlet/java/awt/geom/FlatteningPathIterator/
+ currentSegment.java: Likewise.
+ * gnu/testlet/java/awt/geom/FlatteningPathIterator/
+ getFlatness.java: Likewise.
+ * gnu/testlet/java/awt/geom/FlatteningPathIterator/
+ getRecursionLimit.java: Likewise.
+ * gnu/testlet/java/awt/geom/FlatteningPathIterator/
+ getWindingRule.java: Likewise.
+
+2003-11-09 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (test): Also
+ test invocation via interface methods.
+ * gnu/testlet/java/lang/reflect/Method/iface.java: New file.
+
+2003-11-04 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java:
+ Add test equations from test code of the GNU Scientific Library.
+ Thanks to Brian Gough <bjg@network-theory.co.uk>.
+
+ * gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java:
+ Likewise.
+
+2003-10-30 Jeff Sturm <jsturm@one-point.com>
+
+ * gnu/testlet/java/io/ByteArrayOutputStream/subclass.java: New test.
+
+2003-10-26 Everton da Silva Marques <everton@lab.ipaccess.diveo.net.br>
+
+ * gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java
+ (test_MultipleBind): New test method.
+ (testall): Call test_MultipleBind.
+
+2003-10-29 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java:
+ DatagramPacket contsructors throw IllegalArgumentException if illegal
+ buffer size is given.
+
+2003-10-29 Michael Koch <konqueror@gmx.de>
+
+ * gnu/testlet/BinaryCompatibility/.cvsignore:
+ Ignore generated files.
+
+2003-10-26 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java: New
+ test.
+
+2003-10-25 Bryce McKinlay <bryce@mckinlay.net.nz>
+
+ * gnu/testlet/java/lang/reflect/ReflectAccess.java,
+ gnu/testlet/java/lang/reflect/sub/OtherPkg.java,
+ gnu/testlet/java/lang/reflect/sub/Super.java: New files.
+
+2003-10-24 Sascha Brawer <brawer@dandelis.ch>
+
+ * gnu/testlet/java/awt/geom/CubicCurve2D/clone.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/Double.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/getBounds2D.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP1.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP2.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP1.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP2.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Double/setCurve.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/Float.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/getBounds2D.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP1.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP2.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP1.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP2.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/Float/setCurve.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/getPathIterator.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/setCurve.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java,
+ gnu/testlet/java/awt/geom/CubicCurve2D/subdivide.java,
+ gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java,
+ gnu/testlet/java/awt/geom/GeneralPath/GeneralPath.java,
+ gnu/testlet/java/awt/geom/GeneralPath/getCurrentPoint.java,
+ gnu/testlet/java/awt/geom/GeneralPath/getPathIterator.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/clone.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/Double.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/getBounds2D.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/getCtrlPt.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP1.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP2.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Double/setCurve.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/Float.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/getBounds2D.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/getCtrlPt.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP1.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP2.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/Float/setCurve.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/getPathIterator.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/setCurve.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java,
+ gnu/testlet/java/awt/geom/QuadCurve2D/subdivide.java,
+ gnu/testlet/java/awt/geom/Rectangle2D/getPathIterator.java,
+ gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java,
+ gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java: New files.
+
+ * gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java
+ /doc-files/contains-1.png,
+ gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java/
+ doc-files/intersects-1.png: New illustrations.
+
+2003-09-25 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Thread/stop.java: avoid hanging forever
+ if java.lang.Thread.stop does nothing.
+ * gnu/testlet/java/lang/Thread/daemon.java: reindented, etc
+
+2003-09-09 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/reflect/Array/set.java: Check IllegalArgument
+ and ArrayIndexOutOfBoundsException.
+
+2003-09-07 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/DecimalFormat/digits.java: New test.
+ * gnu/testlet/java/text/DecimalFormat/formatExp.java: New test.
+
+2003-09-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/GregorianCalendar/first.java: Months are
+ numbered from 0 till 11.
+
+2003-09-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/GregorianCalendar/first.java: New file.
+
+2003-08-31 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/LineNumberReader/mark.java: New file.
+
+2003-08-30 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/SimpleTestHarness.java: reindented, etc
+
+2003-08-26 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Array/set.java: New file.
+
+2003-08-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/InputStreamReader/utf8.java: New test.
+
+2003-08-23 Stephen Crawley <crawley@dstc.edu.au>
+
+ * Makefile.am : put quotes around GCJ, JAVAC and JAVA when passing
+ as environment variables
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+
+2003-08-19 Andrew Haley <aph@redhat.com>
+
+ * choose: Check BinaryCompatibility as well as java and javax.
+ * Makefile.am (check-local): Pass GCJ, JAVAC and JAVA in environment.
+ * gnu/testlet/BinaryCompatibility: New tests.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+
+2003-08-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/decode.java: Add explicit UTF-8 test.
+
+2003-08-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Package/getPackage.java: New file.
+
+2003-08-09 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/PrintWriter/jdk11.java: Add checkError() after
+ close() test.
+
+2003-08-09 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/contextClassLoader.java: New file.
+
+2003-08-07 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/FilePermission/simple.java: New file.
+
+2003-08-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Field/access.java: New file.
+
+2003-08-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/reflect/AccessibleObject/accessible.java:
+ New tests.
+
+2003-08-01 David P Grove <groved@us.ibm.com>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test):
+ Regression test for setGroupingSize.
+
+2003-08-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/math/BigDecimal/divide.java: New tests.
+
+2003-07-28 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/lang/Thread/stop.java: new tests
+
+2003-07-24 H. V�is�nen <hvaisane@joyx.joensuu.fi>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test):
+ Added test for 4-digit year formatting bug.
+
+2003-07-23 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/System/arraycopy.java (test): Added
+ libgcj regression test.
+
+2003-07-22 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/URLEncoder/URLEncoderTest.java
+ (test_basics): Added test for encoding of \n. Require upper case
+ encoding.
+
+2003-07-20 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.am (harness_files): Added TestSecurityManager.java.
+ * gnu/testlet/SimpleTestHarness.java (runtest): Clear security
+ manager after test.
+ * gnu/testlet/TestSecurityManager.java: New file.
+
+2003-07-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java:
+ Changed tag to JDK1.2.
+
+2003-07-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/zip/InflaterInputStream/basic.java: Add
+ illegal argument constructor tests.
+
+2003-07-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/math/BigDecimal/setScale.java: Add tests for all
+ corner cases of ROUND_HALF_EVEN.
+
+2003-07-16 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Thread/interrupt.java : fixed indentation
+
+2003-07-11 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Thread/daemon.java
+ fixed tests to match the behaviour of JDKs when setDaemon()
+ is called on an exitted Thread. Made tests more robust.
+
+2003-07-11 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/RuleBasedCollator/jdk11.java :
+ more tests for compare with expansions and contractions
+
+2003-07-09 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/RuleBasedCollator/jdk11.java :
+ tests for compare with simple rules and contraction rules
+ * gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java :
+ fixed indentation
+
+2003-07-05 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/RuleBasedCollator/jdk11.java :
+ more new rule parsing tests
+
+2003-07-01 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/RuleBasedCollator/jdk11.java : new tests
+
+2003-06-27 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java :
+ added tests that 'a'<'A' at tertiary level, etcetera
+
+2003-06-24 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java :
+ rewrote tests to check the ordering of collation keys rather than
+ actual key values (which are implementation dependent)
+
+2003-06-08 Mark Wielaard <mark@klomp.org>
+
+ * choose: Add all classes first to usesfile to uniqify them later
+ before adding them to choises.
+
+2003-06-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java: Added
+ regression test including "." in format; from Scott Gilbertson.
+
+2003-06-03 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/math/BigDecimal/setScale.java: added new
+ setScale testcase from Jerry Quinn <jlquinn@optonline.net>
+
+2003-05-24 Daniel Bonniot <bonniot@users.sf.net>
+
+ * gnu/testlet/java/util/Arrays/equals.java: New file.
+ * gnu/testlet/java/util/LinkedList/SubListTest.java: New file.
+
+2003-05-23 Daniel Bonniot <bonniot@users.sf.net>
+
+ * gnu/testlet/java/awt/color/ColorSpace/isCS_sRGB.java: New file.
+
+2003-05-06 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java: removed duplicate
+ tests for isPrimitive(), and enhanced getModifiers() tests
+
+2003-04-13 Dalibor Topic <robilad@yahoo.com>
+
+ * gnu/testlet/java/sql/Date/DateTest.java: new file
+ * gnu/testlet/java/sql/DriverManager/DriverManagerTest.java: new file
+ * gnu/testlet/java/sql/Time/TimeTest.java: new file
+ * gnu/testlet/java/sql/Timestamp/TimestampTest.java: new file
+
+2003-04-08 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java :
+ constructor must be public
+ * gnu/testlet/java/security/AlgorithmParameters/getInstance14.java : ditto
+ * gnu/testlet/java/security/KeyFactory/getInstance14.java : ditto
+ * gnu/testlet/java/security/KeyPairGenerator/getInstance14.java : ditto
+ * gnu/testlet/java/security/MessageDigest/getInstance14.java : ditto
+ * gnu/testlet/java/security/Security/getAlgorithms.java : ditto
+ * gnu/testlet/java/security/Signature/getInstance14.java : ditto
+ * gnu/testlet/SimpleTestHarness.java (runtest) : print a debug
+ 'hint' if instantiating a testlet throws InstantiationException
+
+2003-04-01 Raif S. Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/security/Security/getAlgorithms.java: re-implemented
+ the tests differently.
+
+2003-03-20 Raif S. Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/security/AlgorithmParameterGenerator: new directory.
+ * gnu/testlet/java/security/AlgorithmParameters: ditto.
+ * gnu/testlet/java/security/KeyFactory: ditto.
+ * gnu/testlet/java/security/KeyPairGenerator: ditto.
+ * gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java:
+ new test.
+ * gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java:
+ new supporting class.
+ * gnu/testlet/java/security/AlgorithmParameters/getInstance14.java: new test.
+ * gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java: new
+ supporting class.
+ * gnu/testlet/java/security/KeyFactory/getInstance14.java: new test.
+ * gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java: new supporting
+ class.
+ * gnu/testlet/java/security/KeyPairGenerator/getInstance14.java: new test.
+ * gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java: new
+ supporting class.
+ * gnu/testlet/java/security/MessageDigest/getInstance14.java: new test.
+ * gnu/testlet/java/security/Security/getAlgorithms.java: new test.
+ * gnu/testlet/java/security/Signature/getInstance14.java: new test.
+
+2003-03-16 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java
+ (test_params): catch IOException (not Exception) when testing
+ sock.setSoTimeout(int), sock.getSoTimeout(), and new ServerSocket(int).
+ A call to sock.getInetAddress() might return null ...
+
+2003-03-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/OutputStreamWriter/jdk11.java (test):
+ getEncoding() should return the "historical" name.
+
+2003-03-06 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/io/OutputStreamWriter/jdk11.java (test):
+ Changed 8859_3 encoding to a must support encoding of ISO-8859-1
+ and also fixed the test to correctly expect the preferred name
+ when calling getEncoding() as it is not necessarily the same as
+ what the stream is created with. Added a test against 'latin1'
+ which is a valid alias for 'ISO-8859-1'.
+
+2003-03-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java
+ (test_list): Skip -- header line.
+ (test_propertyNames): Enumeration of propertyNames() and keys() are
+ not necessarily in the same order.
+ (test_loadextra): Fix double escaped no\\cat. Add explanations for
+ corner cases.
+
+2003-02-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/surrogate.java: New test.
+
+2003-02-21 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/zip/ZipEntry/setComment.java: New test.
+
+2003-02-21 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/zip/ZipEntry/newZipEntry.java: New test.
+
+2003-02-18 Raif S. Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/math/BigInteger/modInverse.java (testRecursion):
+ New method.
+
+2003-02-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/getBytes13.java: Tags JDK13 only.
+
+2003-02-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/getBytes14.java: Add tests for
+ US-ASCII, windows-1252, ISO-8859-1, ISO-8859-15, ISO8859_15, UTF-16BE
+ and UTF-16LE
+
+2003-02-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/reflect2.java: Guard against NullPointer
+ and ArrayOutOfBoundsExceptions on failures.
+
+2003-02-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java
+ (ready): New field.
+ (waitTillReady): New method.
+ (run): Set ready field.
+ * gnu/testlet/java/io/PipedStream/Test.java (test): Call waitTillReady
+ before testing available().
+
+2003-02-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/InputStreamReader/jdk11.java (test): Just check
+ that encoding is non-null when opened and null when closed. Checking
+ the actual encoding name is as good as impossible pre 1.4.
+ * gnu/testlet/java/io/OutputStreamWriter/jdk11.java (test):Likewise.
+
+2003-02-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/jar/JarFile/basic.java: Don't test order,
+ only test that all entries have the correct content.
+
+2003-02-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/BufferedOutputStream/interrupt.java (test): In
+ theory what happens when a InterruptedIOException is thrown should be
+ in the specification, in practice it is never defined.
+
+2003-02-12 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/String/getBytes14.java: Added `Uses'.
+
+ * gnu/testlet/java/io/InputStreamReader/jdk11.java (test):
+ InputStreamReader should be ready().
+
+2003-02-09 Raif S. Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/lang/String/getBytes13.java: new test
+ * gnu/testlet/java/lang/String/getBytes14.java: new test
+
+2003-02-09 Raif S. Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/security/SecureRandom/SHA1PRNG.java: new test,
+ verifies that two similarly seeded SecureRandom objects produce the
+ same results.
+
+2003-02-07 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java (test):
+ Add index to check() message to make it easier to see which test
+ actually fails. Necessary when using xfails file.
+
+2003-02-05 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/util/jar/JarFile/basic.java: compilation error fixed
+
+2003-02-04 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/beans/PropertyDescriptorTest.java: added
+ more tests for the 2 introspective constructors
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_getName):
+ test behaviour of getName for void and primitive type classes.
+
+2003-02-03 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/util/zip/InflaterInputStream/basic.java: new test
+ * gnu/testlet/java/util/jar/JarFile/jartest.jar: test file
+ * gnu/testlet/java/util/jar/JarFile/basic.java: new tests
+ * gnu/testlet/java/util/zip/ZipInputStream/basic.java:
+ added read_from_end
+ * gnu/testlet/java/util/Arrays/sort.java: added some sort tests
+ * gnu/testlet/java/lang/Class/ClassTest.java: Added new tests for
+ isPrimitive and class modifiers
+ * gnu/testlet/TestHarness.java: Add new getResourceFile method
+ * gnu/testlet/SimpleTestHarness.java: idem
+
+2003-02-01 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/Test.java: change output of
+ '<' and '>' to be '(' and ')' respectively. Avoids having to escape
+ these for HTML output.
+
+2003-01-31 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_params):
+ remove check defaults for getPort(), getLocalPort()
+ * gnu/testlet/java/net/Socket/jdk12.java: prepare for new tests
+ (added checkpoints)
+ * gnu/testlet/java/net/Socket/jdk13.java: prepare for new tests
+ (added checkpoints)
+ * gnu/testlet/java/net/Socket/jdk14.java: new test has default
+ checks for getPort(), getLocalPort(); prepare for new tests
+ (added checkpoints)
+
+2003-01-30 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_params):
+ check defaults for getPort(), getLocalPort(), getTcpNoDelay(),
+ getSoLinger()
+ * gnu/testlet/java/net/Socket/jdk13.java: new test
+
+2003-01-30 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_params):
+ Change error message when failing getSoTimeout(), do not fail
+ harness, just a test.
+
+2003-01-29 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_params):
+ moved test of setSocketImplFactory to separate file since if
+ can affect subsequent attempts to create new Sockets
+ (test_BasicServer): remove invalid test expecting an exception
+ that should never be thrown and dependency on echo server
+ * gnu/testlet/java/net/Socket/TestSocketImplFactory.java: new file
+ * gnu/testlet/java/net/Socket/setSocketImplFactory.java: new test
+
+2003-01-30 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/beans/PropertyDescriptorTest.java: new tests
+
+2003-01-29 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/beans/DescriptorTest.java: fixed test cases to
+ work under JDK1.3/1.4
+
+2003-01-28 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java (diaghashcode):
+ Removed invalid tests for BigDecimal.hashCode()
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java (diaglongvalue):
+ Corrected some tests that accidentally used BigDecimal(double)
+ on (double)(Long.MAX_VALUE)
+
+2003-01-26 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/io/RandomAccessFile/jdk11.java (test): localize
+ use of 'int i' and modify two erroneous test checks for skipBytes()
+ to one correct check.
+
+2003-01-25 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/io/RandomAccessFile/jdk11.java: reformatted only
+
+2003-01-25 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java (test):
+ adjusted results array based on a test run with Sun's JVM
+
+2003-01-25 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/text/CollationElementIterator: new directory
+ * gnu/testlet/java/text/CollationElementIterator/jdk11.java: new tests
+
+2003-01-24 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/OutputTest.java:
+ Explicitly check for ObjectStreamExceptions and only compare
+ contents when no such exceptions are thrown.
+
+2003-01-25 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java: fixed some
+ error case tests to catch the correct exceptions, and only to
+ test the exception messages if CHECK_EXCEPTION_MESSAGES is true.
+
+2003-01-24 Raif Naffah <raif@fl.net.au>
+
+ * gnu/testlet/SimpleTestHarness.java (main): added a -file
+ option as an alternative to stdin for reading selected test
+ classes.
+
+2003-01-21 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/File/jdk11.java (test): Added check for
+ absoluteness of empty string.
+
+2003-01-20 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java (diagrun):
+ Return void.
+ (DiagException): Remove and use RuntimeException if necessary.
+ (summary): Removed.
+ (Test): Removed.
+
+2003-01-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/getBytes.java: Add new UTF8 test.
+
+2003-01-03 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java: New test.
+
+2003-01-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FilterInputStream/SimpleRead.java: Don't use
+ inner classes to help gcj.
+ * gnu/testlet/java/io/FilterReader/SimpleRead.java: Likewise.
+ * gnu/testlet/java/io/OutputStream/Test.java: Likewise.
+
+2003-01-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FilterInputStream/MarkReset.java: Don't use
+ inner classes to help gcj.
+ * gnu/testlet/java/io/FilterWriter/write.java: Likewise.
+ * gnu/testlet/java/io/InputStream/Test.java: Likewise.
+ * gnu/testlet/java/io/PrintWriter/jdk11.java: Likewise.
+ * gnu/testlet/java/io/Reader/Test.java: Likewise.
+ * gnu/testlet/java/io/Writer/Test.java: Likewise.
+
+2003-01-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/BufferedInputStream/SimpleRead.java (test):
+ Removed wrong check(false).
+
+2002-12-27 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/StringWriter/Test.java (test): Catch Throwable
+ when testing close to make it compile against libraries that don't
+ declare IOException for close.
+
+2002-12-27 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StringWriter/Test.java:
+ Modified close() test to catch IOException explicitly
+
+2002-12-27 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FileOutputStream/jdk12.java:
+ Added test for correct Exception thrown from constructor
+
+2002-12-26 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FilterWriter/write.java:
+ Added tests for FilterWriter class
+
+2002-12-26 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedStream/close.java:
+ Modified test of input stream close() method to match reference
+ behavior.
+
+2002-12-26 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FilterReader/SimpleRead.java:
+ * gnu/testlet/java/io/FilterReader/MarkReset.java:
+ Added tests for FilterReader class
+
+2002-12-26 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/OutputStream/Test.java:
+ Added tests for OutputStream class
+
+2002-12-26 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/InputStream/Test.java:
+ Added tests for InputStream class
+
+2002-12-25 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/Reader/Test.java:
+ Added tests for Reader class
+
+2002-12-25 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/Writer/Test.java:
+ Added tests for Writer class
+
+2002-12-25 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedStream/Test.java:
+ Added test of PipedOutputStream's connect() method. See
+ corresponding patch to PipedOutputStream class.
+
+2002-12-25 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StringReader/Test.java:
+ Added tests for StringReader class
+
+2002-12-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PrintWriter/jdk11.java:
+ Added tests for PrintWriter class
+
+2002-12-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedReaderWriter/Test.java:
+ Changed parameters to read() method call to match API
+
+2002-12-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedReaderWriter/Test.java:
+ Added test for connect() method on PipedWriter. See corresponding
+ patch to PipedWriter class.
+
+2002-12-23 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/OutputStreamWriter/jdk11.java: New file.
+ Completes tests of OutputStreamWriter class
+
+2002-12-23 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FilterOutputStream/write.java: New file.
+ These files complete direct tests of FilterOutputStream class
+
+2002-12-23 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FilterInputStream/MarkReset.java: New file.
+ * gnu/testlet/java/io/FilterInputStream/SimpleRead.java: New file.
+ These files complete direct tests of FilterInputStream class
+
+2002-12-22 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java: New file.
+
+2002-12-22 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FileWriter/jdk11.java: complete
+ constructor tests for class (no other methods defined)
+
+2002-12-22 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FileReader/jdk11.java: complete
+ constructor tests for class (no other methods defined)
+
+2002-12-22 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/FileDescriptor/jdk11.java: complete
+ method tests for class
+
+2002-12-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLClassLoader/getResourceBase.java (check):
+ Add base string to give a hint about from which URL source resource
+ should get loaded.
+ * gnu/testlet/java/net/URLClassLoader/getResource.java: Set base.
+ * gnu/testlet/java/net/URLClassLoader/getResourceRemote.java: Likewise.
+
+2002-12-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/StringBuffer/StringBufferTest.java (getChars):
+ Add big offsets test.
+
+2002-12-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java
+ (test_getClassloader): getClassLoader is never required to return
+ null; removed test.
+
+2002-12-15 Raif Naffah <raif@fl.net.au>
+
+ * gnu/testlet/java/math/BigInteger/modInverse.java: New test.
+
+2002-12-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java: Use try
+ catch block for implementations that (wrongly) declare
+ ArrayWriter.write() throws IOException.
+ * gnu/testlet/java/io/CharArrayWriter/BasicTests.java: Likewise.
+
+2002-12-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/SerTest.java: Extend SerBase,
+ not TestSerBase.
+
+2002-12-13 David J. King <david_king@softhome.net>
+
+ * gnu/testlet/java/io/CharArrayWriter/BasicTests.java: New test.
+ * gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java: New test.
+
+2002-12-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/ObjectInputOutput/SerTest.java: New test.
+ * gnu/testlet/java/io/ObjectInputOutput/SerBase.java: New helper.
+
+2002-12-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/DataInputStream/ReadStream.java: Add comment
+ about copied methods in DataOutputStream tests since braindead Uses
+ doesn't handle packages.
+ * gnu/testlet/java/io/DataInputStream/ReadStream2.java: Likewise.
+ * gnu/testlet/java/io/DataOutputStream/WriteRead.java: Copy method
+ from DataInputStream and remove Uses..
+ * gnu/testlet/java/io/DataOutputStream/WriteRead2.java: Likewise.
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java: Don't call
+ System.out.println().
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java: Use
+ harness.debug(e) not e.printStackTrace()
+
+ * gnu/testlet/java/lang/Class/reflect2.java: Use getClass(String) to
+ workaround gcj linker issues with inner classes.
+
+2002-12-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/SecureRandom/Instance.java: New test.
+ * gnu/testlet/java/security/SecureRandom/MauveSecureRandom.java: New
+ file.
+
+2002-12-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/ResourceBundle.java: Remove child variant
+ tests. Fix check for resource with default Locale en_CA.
+
+2002-12-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/LineNumberReader.java (check): Add test for
+ streams containing multiple \r and/or \n following each other.
+
+2002-12-07 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLClassLoader/getResourceBase.java (check):
+ Add noncanonical flag.
+ * gnu/testlet/java/net/URLClassLoader/getResource.java (test): Use
+ noncanonical flag when appropriate.
+ * gnu/testlet/java/net/URLClassLoader/getResourceRemote.java (test):
+ Likewise.
+
+2002-12-06 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java: Only show stack traces
+ with harness.debug(). Make sure non-existing hosts really don't exist.
+ Enable get/setSoTimeOut tests.
+
+2002-12-04 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/reflect.java: Uses rf_help.
+
+2002-12-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java: Make sure server
+ sockets are always closed and different tests use different ports to
+ listen on.
+ * gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java:
+ Likewise.
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java: Likewise.
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java: Likewise.
+ * gnu/testlet/java/net/Socket/SocketBServer.java: Likewise.
+ * gnu/testlet/java/net/Socket/SocketServer.java: Likewise.
+
+2002-12-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java: Make sure sockets
+ always bind to different local ports and are always closed.
+
+2002-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java: Make
+ toString() test less strict, only check that it contains host address.
+
+2002-11-29 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java:
+ added extra test for method with multi-dimensional array in argument
+
+2002-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/DataOutputStream/writeUTF.java: New test.
+
+2002-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/canWrite.java: New test.
+
+2002-11-29 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/list.java: New test.
+ * gnu/testlet/java/io/File/newFile.java: New test.
+
+2002-11-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/ByteArrayOutputStream/write.java: complete
+ method tests for class
+
+2002-11-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/ByteArrayOutputStream: created directory for adding
+ complete method tests for class
+
+2002-11-24 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedStream/Test.java: Added available() to
+ complete method tests for PipedInputStream
+
+2002-11-23 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java: Added flush() to
+ complete method tests for PipedWriter
+
+2002-11-23 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PipedReaderWriter/Test.java: Added close() to
+ complete method tests for PipedReader
+
+2002-11-23 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLClassLoader/getResourceBase.java: New base
+ class to make gcj native code linking happy.
+ * gnu/testlet/java/net/URLClassLoader/getResource.java: extend Base.
+ * gnu/testlet/java/net/URLClassLoader/getResourceRemote.java: Likewise.
+
+2002-11-22 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLClassLoader/getResourceRemote.java: New test.
+ * gnu/testlet/java/net/URLClassLoader/getResource.java: Make reusable.
+
+ * gnu/testlet/java/net/URL/URLTest.java: Add sanity checks and debug.
+
+2002-11-21 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/BufferedCharWriter:
+ Renamed to BufferedWriter to match classname
+ * gnu/testlet/java/io/BufferedWriter/Test.java:
+ Changed package name accordingly.
+
+2002-11-21 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/BufferedOutputStream/interrupt.java:
+ * gnu/testlet/java/io/BufferedOutputStream/helper.java:
+ * gnu/testlet/java/io/BufferedOutputStream/Test.java:
+ Corrected package names in each source file;
+ Fixed date on ChangeLog entry immediately below
+
+2002-11-21 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/BufferedOutputByteStream:
+ Renamed directory to BufferedOutputStream to match classname
+
+2002-11-20 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java:
+ replace e.printStackTrace() with harness.debug(e)
+ * gnu/testlet/java/net/ServerSocket/MulticastSocketTest.java: ditto
+ * gnu/testlet/java/net/ServerSocket/SocketTest.java: ditto +
+ other tidyups
+
+2002-11-17 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/net/Socket/SocketBServer.java: fixed indentation
+ * gnu/testlet/java/net/Socket/SocketServer.java: ditto
+ * gnu/testlet/java/net/Socket/SocketTest.java: ditto
+ * Makefile.in, aclocal.m4, configure: removed from CVS
+
+2002-11-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/BufferedCharWriter/Test.java:
+ Added tests for remaining methods in BufferedWriter
+ This directory will be renamed to match classname
+
+2002-11-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StringWriter/Test.java:
+ Added tests for remaining methods in StringWriter
+
+2002-11-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StreamTokenizer/misc.java: Add file
+ Added tests for remaining methods in StreamTokenizer
+
+2002-11-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StreamTokenizer/slashslash.java: removed extra
+ debug statement
+ * gnu/testlet/java/io/StreamTokenizer/commentchar.java: Add file
+ Added test for commentChar() method, to set new comment char, like '#'
+
+2002-11-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/StreamTokenizer/slashslash.java: Add file
+ Added test for // comments (method slashSlashComments())
+
+2002-11-17 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java:
+ Use harness.check(), pass harness object to threads, and try to
+ kill off the server threads
+ * gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java: ditto
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java: ditto
+ * gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java: ditto
+
+2002-11-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/SimpleTestHarness.java (getResourceStream): More info
+ on a ResourceNotFoundException.
+
+ * gnu/testlet/java/io/ObjectStreamClass/Test.java: Removed non-inner
+ classes and use correct // Uses: idiom.
+ (testToString): Test either class name or suid.
+ * gnu/testlet/java/io/ObjectStreamClass/A.java: New class from Test.
+ * gnu/testlet/java/io/ObjectStreamClass/B.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/C.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/Defined.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/DefinedNotFinal.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/DefinedNotStatic.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/NotSerial.java: Likewise.
+ * gnu/testlet/java/io/ObjectStreamClass/Serial.java: Likewise.
+
+2002-11-14 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/RandomAccessFile/jdk11.java
+ Cleaned up unused code that was offending VMS.
+
+2002-11-13 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/SequenceInputStream.java
+ Added tests to complete testing of all methods
+
+2002-11-13 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/PushbackReader/Unread.java
+ Added tests to complete testing of all methods
+ (above date is my local time)
+
+2002-11-14 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java:
+ cosmetic changes only - reindented, etc
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java: ditto
+ * gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java: ditto
+ * gnu/testlet/java/net/ServerSocket/MyServerSocket.java: ditto
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java: ditto
+
+2002-11-13 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/beans/Introspector/jdk11.java (test): add
+ checks for other 1.1 member functions of Introspector; remove
+ failing checks against classes that change often and use new
+ checks against A, B, and C in this package.
+ * gnu/testlet/java/beans/Introspector/A.java: new file
+ * gnu/testlet/java/beans/Introspector/B.java: new file
+ * gnu/testlet/java/beans/Introspector/C.java: new file
+ * gnu/testlet/java/beans/Introspector/jdk12.java (test): check
+ values of static final fields to match the specification
+
+2002-11-06 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Random/basic.java (test): Added regression
+ test for Classpath bug.
+
+2002-11-06 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/InputStreamReader/jdk11:
+ Added tests to complete testing of all methods
+
+2002-11-03 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/ArrayList/serial.java: New test.
+ * gnu/testlet/java/util/ArrayList/ArrayList.ser: New file.
+
+2002-11-03 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Class/reflect.java: Add array class checks.
+ * mauve/gnu/testlet/java/lang/Class/reflect2.java: Uses rf_help.
+ * gnu/testlet/java/lang/Class/rf_help.java: Prevent creation of
+ synthetic methods.
+
+2002-10-28 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/FileInputStream/read.java: New test.
+ * gnu/testlet/java/io/FileOutputStream/write.java: New test.
+ * gnu/testlet/java/io/InputStreamReader/except.java: Show debug.
+
+2002-10-27 Mark Wielaard <mark@klomp.org>
+
+ * gnu.testlet.java.lang.StringBuffer.StringBufferTest (test_insert):
+ Test for IndexOutOfBoundException not NullPointerException.
+
+2002-10-28 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/reflect.java: Added tests for
+ getField and getDeclaredField with inherited fields.
+
+2002-10-26 Daryl Lee <dol@sources.redhat.com>
+
+ * gnu/testlet/java/io/PushbackInputStream: Added tests for
+ available() and markSupported(), to complete method tests.
+
+2002-10-26 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLClassLoader/getResource.java: New test.
+
+2002-10-26 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java: New
+ test.
+
+2002-10-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/reflect/Method/equals.java: Add null check.
+
+2002-10-25 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/listFiles.java: New test.
+
+2002-10-23 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java: fix subtest #2
+ for Class.getClassLoader() to check for JDK 1.3/1.4 behaviour
+
+2002-10-21 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/reflect2.java: Completed tests for
+ inner class introspection methods. (No testing of security yet)
+ * gnu/testlet/java/lang/Class/reflect.java: ditto
+ * gnu/testlet/java/lang/Class/rf2_help.java: ditto
+ * gnu/testlet/java/lang/Class/rf_help.java: ditto
+
+2002-10-20 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java: Rejigged to use
+ 'harness.check(...)' rather than 'if (!...) { harness.fail(...) }
+ * gnu/testlet/java/lang/Class/reflect.java: Cosmetic tidyups.
+
+2002-10-19 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Class/reflect2.java: New test for the
+ inner class reflection methods.
+ * gnu/testlet/java/lang/Class/rf2_help.java: Helper for above test.
+ * gnu/testlet/java/lang/Class/ClassTest.java: Tidied up some error
+ reporting and indentation
+
+2002-10-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URL/URLTestjava: change "sourceware.cygnus.com"
+ to "sources.redhat.com".
+
+2002-10-16 Daryl Lee <dol@sources.redhat.com>
+
+ * gnu/testlet/java/io/LineNumberReader/Test.java: completed
+ remaining method tests
+
+2002-10-16 Daryl Lee <dol@sources.redhat.com>
+
+ * the following four files complete remaining methods for
+ java.io.DataInputStream and java.io.DataOutputStream (JDK 1.1)
+ * gnu/testlet/java/io/DataOutputStream/WriteRead2.java
+ * gnu/testlet/java/io/DataInputStream/ReadStream2.java
+ * gnu/testlet/java/io/DataInputStream/ReadReference22.java
+ * gnu/testlet/java/io/DataInputStream/reference2.data
+
+2002-10-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/Security/provider.java: Preference
+ positions are 1 based.
+
+2002-10-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/security/Provider/NameVersionInfo.java: New test.
+ * gnu/testlet/java/security/Security/property.java: New test.
+ * gnu/testlet/java/security/Security/provider.java: New test.
+ * gnu/testlet/java/security/MessageDigest/Instance.java: New test.
+ * gnu/testlet/java/security/MessageDigest/MauveDigest.java: New file.
+ * gnu/testlet/java/security/Signature/Instance.java: New test.
+ * gnu/testlet/java/security/Signature/MauveSignature.java: New file.
+
+2002-10-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/SimpleTestHarness.java: Add two argument constructor.
+
+2002-10-13 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/SimpleTestHarness.java: Add -resultsonly flag.
+ * README: Document -resultsonly flag.
+
+2002-10-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/SocketAddress.java: Removed.
+ * gnu/testlet/java/net/Socket/MySocket.java: Removed.
+ * gnu/testlet/java/net/Socket/MySocketImpl.java: Removed.
+ * gnu/testlet/java/net/Socket/SocketTest.java: Don't use above
+ classes.
+
+2002-10-12 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/SocketAddress.java: New not-a-test.
+ * gnu/testlet/java/net/Socket/SocketTest.java: Uses SocketAddress.
+
+2002-10-11 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/sql/Blob/BlobTest.java: Make it compile with
+ JDBC3.0.
+ * gnu/testlet/java/sql/Clob/ClobTest.java: Likewise.
+ * gnu/testlet/java/sql/Connection/TestJdbc10.java: Removed.
+ * gnu/testlet/java/sql/Connection/TestJdbc20.java: Removed.
+ * gnu/testlet/java/sql/Connection/TestJdbc.java: Merge of above two
+ test cases that should now work with any JDBC version.
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc10.java: Removed.
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc20.java: Removed.
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java: Merge of above
+ two test cases that should now work with any JDBC version.
+
+2002-10-09 Daryl Lee <dol@sources.redhat.com>
+
+ * Renamed gnu/testlet/java/io/DataInputOutput to .../DataOutputStream
+ to make directory name align with java.io package class names
+ * Moved read-oriented tests to .../DataInputStream
+ * Fixed associated package and paths
+
+2002-10-09 Daryl Lee <dol@sources.redhat.com>
+
+ * Corrected conflict in this file in 2002-09-20 comments
+ * Added hashcode() test to gnu/testlet/java/io/File/jdk11.java
+ * Added ready() and skip() test to
+ gnu/testlet/java/io/BufferedReader/boundary.java
+
+2002-10-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/isAlive.java: Don't hold lock on Thread
+ while calling join().
+ * gnu/testlet/java/lang/Thread/daemon.java: Split started, running
+ and stopped test cases.
+ * gnu/testlet/java/lang/Thread/priority: Likewise.
+ * gnu/testlet/java/lang/Thread/getThreadGroup.java: Add explicit null
+ check
+
+2002-10-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/join.java: New Test.
+
+2002-10-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Thread/interrupt.java: New Test.
+ * gnu/testlet/java/lang/Thread/name.java: New Test.
+ * gnu/testlet/java/lang/Thread/daemon.java: New Test.
+ * gnu/testlet/java/lang/Thread/priority.java: New Test.
+ * gnu/testlet/java/lang/Thread/isAlive.java: New Test.
+
+2002-10-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/System/identityHashCode.java: New Test.
+ * gnu/testlet/java/lang/Thread/getThreadGroup.java: New test.
+
+2002-09-28 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/lang/Double/DoubleTest.java (test_valueOf):
+ Tidied up test; message strings etcetera.
+ * gnu/testlet/java/lang/Float/FloatTest.java (test_valueOf): ditto
+
+ * gnu/testlet/java/lang/Double/DoubleTest.java (test_parseDouble):
+ Added subtests for Double.parseDouble
+ * gnu/testlet/java/lang/Float/FloatTest.java (test_parseFloat): ditto
+ Added subtests for Float.parseFloat
+
+2002-09-28 Stephen Crawley <crawley@dstc.edu.au>
+ * gnu/testlet/java/lang/Double/DoubleTest.java (test_toString):
+ Added comment to subtest #10 about failure on Sun JDKs.
+ * gnu/testlet/java/lang/Float/FloatTest.java (test_toString): ditto
+
+2002-09-26 Stephen Crawley <crawley@dstc.edu.au>
+
+ * gnu/testlet/java/lang/Double/DoubleTest.java (test_shortbyteValue):
+ Reverted test for truncation in byteValue() to match JDK 1.4 spec
+ and implementation. [This was incorrectly 'fixed' on 2002-06-13.]
+ * gnu/testlet/java/lang/Float/FloatTest.java (test_shortbyteValue):
+ ditto
+
+2002-09-25 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java (test):
+ Updated to behavior specified in JDK 1.4.1.
+
+2002-09-20 Daryl Lee <dol@sources.redhat.com>
+ * Added remaing java.io.BufferedInputStream method tests to SimpleRead.java
+
+2002-09-16 Daryl Lee <dol@sources.redhat.com>
+ * removed gnu/testlet/java/io/RandomAccssFile/raf.java in favor
+ of jdk11.java
+
+2002-09-16 Daryl Lee <dol@sources.redhat.com>
+ * gnu/testlet/java/io/RandomAccessFile/jdk11.java: Full test
+ of all methods and constructors in class. Supersedes raf.java
+
+2002-09-14 Stephen Crawley <crawley@dstc.edu.au>
+ * .cvsignore: New file. Tell CVS to ignore various generated
+ files, log files, temporary files and so on.
+ * gnu/testlet/.cvsignore: Ignore config.java - it is generated
+ * CVSROOT/cvsignore: New File. Ignore all Java bytecode files.
+ * gnu/testlet/java/io/RandomAccessFile/raf.java: Avoid going
+ into an infinite loop if seekBytes seeks beyond the end-of-file.
+
+2002-09-11 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/net/Socket/MySocketImpl.java (connect,
+ sendUrgentData): Add dummy implementations from 1.4.
+
+2002-09-03 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/reflect.java (test) [getMethod with
+ superinterface]: Pass `false' as `declared' argument to
+ getMethod.
+
+2002-09-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/Socket/MySocketImpl.java: Add dummy
+ implementations for shutdownInput() and shutdownOutput() from 1.3.
+
+2002-08-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/getBytes.java: Add two tests for
+ substrings.
+
+2002-08-13 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/RandomAccessFile/raf.java (test): Don't use
+ System.out.
+
+ * gnu/testlet/java/io/RandomAccessFile/raf.java: New file.
+ Derived from test by Jesse Rosenstock <jmr@fulcrummicro.com>.
+
+2002-07-30 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/equals.java: New test.
+
+2002-07-21 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/Integer/parseInt.java: New extra tests.
+
+2002-07-20 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/PrintStream/subclass.java: Use dummy
+ ByteArrayOutputStream, System.out may interfere with test results.
+ * gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java: Use
+ harness.debug() not System.err.println().
+ * gnu/testlet/java/io/StreamTokenizer/newline.java: Use URLEncoder to
+ keep newlines and returns out of the results.
+ * gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java: Remove
+ explicit '\n' in test result output, add th.debug().
+
+2002-07-18 Mark Wielaard <mark@klomp.org>
+
+ * java/text/DecimalFormat/parse.java: rename parse() to parseIt() to
+ get rid of compiler warnings.
+
+2002-07-16 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/StreamTokenizer/WordWhiteChars.java: New test for
+ resetting chars.
+
+2002-07-12 Mark Wielaard <mark@klomp.org>
+
+ * choose: Also check in in/exclusion of javax.* tests, don't look
+ for com.* tests.
+
+2002-07-05 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/reflect.java (test): Check for
+ getMethod with superinterface.
+
+2002-07-02 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/MessageFormat/format.java: Added new test
+ for Classpath bug. From David Hovemeyer <daveho@cs.umd.edu>.
+
+2002-06-18 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_getSuperclass):
+ Fix typos.
+
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_getSuperclass):
+ Test interface, void, and a primitive type.
+
+ * gnu/testlet/java/io/BufferedReader/boundary.java (test): mark()
+ doesn't reset read pointer.
+
+2002-06-13 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (check-local): Set CLASSPATH.
+ From Guillame Audeon.
+
+ From Timothy Stack:
+ * gnu/testlet/java/io/BufferedByteOutputStream/interrupt.java
+ (getCount): New method
+ (test): Use it.
+
+ * gnu/testlet/java/io/PrintStream/subclass.java (subclass): Don't
+ pass `null' to superclass constructor. From Dalibor Topic.
+
+ * gnu/testlet/java/lang/Float/FloatTest.java
+ (test_shortbyteValue): Fixed cast to byte of `400'.
+ * gnu/testlet/java/lang/Double/DoubleTest.java
+ (test_shortbyteValue): Fixed cast to byte of `400'.
+
+2002-06-12 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/File/jdk11.java (test): Added test for File
+ with empty path.
+
+2002-05-13 Tom Tromey <tromey@redhat.com>
+
+ * configure, Makefile.in: Rebuilt.
+ * configure.in: Invoke AC_PROG_CC, AM_PROG_GCJ.
+ * Makefile.am (SimpleTestHarness_LINK): Removed.
+ (JAVACFLAGS): Renamed from JCFLAGS.
+ (JC1FLAGS): Removed.
+ (%.o): Use GCJFLAGS.
+ (AUTOMAKE_OPTIONS): Use subdir-objects, no-dependencies.
+ (SimpleTestHarness_SOURCES): Use harness_files.
+ (SimpleTestHarness_LDADD): Don't mention harnesso_files.
+ (SimpleTestHarness$(EXEEXT)): Removed.
+ (harnesso_files): Removed.
+ (AM_GCJFLAGS): New variable.
+
+2002-05-11 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/BreakIterator/sentiter.java: Add test for
+ dot.return.
+ * gnu/testlet/java/util/AbstractMap/EIterator.java: Mark not-a-test.
+ * gnu/testlet/java/util/AbstractMap/ESet.java: Likewise.
+ * gnu/testlet/java/util/AbstractMap/Entry.java: Likewise.
+
+2002-05-01 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java:
+ deleted broken zero length buffer test. (Dalibor Topic)
+
+2002-04-30 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/BufferedReader/boundary.java: New file.
+
+2002-04-17 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java (test_Basics):
+ If machine has multiple interfaces address array can have multiple
+ entries.
+
+ * gnu/testlet/java/lang/System/getProperty.java: New class.
+
+2002-04-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/text/AttributedCharacterIterator/CharItImpl.java:
+ New package private class.
+ * gnu/testlet/java/text/AttributedCharacterIterator/implement.java:
+ Uses CharItImpl.
+
+2002-04-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java:
+ Remove inner classes.
+ * gnu/testlet/java/util/AbstractMap/EIterator.java: New class.
+ * gnu/testlet/java/util/AbstractMap/ESet.java: New class.
+ * gnu/testlet/java/util/AbstractMap/Entry.java: New class.
+
+2002-04-15 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/PipedStream/close.java: Use harness.debug().
+
+2002-04-14 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/net/URLConnection/URLConnectionTest.java:
+ (test_URLConnection): getInputStream() and getOutputStream() should
+ throw UnknownServiceException. Make toString check less strict.
+ sourceware.cygnus.com -> sources.redhat.com.
+ Don't depend on order of HeaderFields.
+
+2002-04-07 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
+ (test_HashMap(): new HashMap(10,1.5f) has a loadFactor of 1.5f.
+ (test_entrySet): it.hasNext after hm.remove should throw
+ ConcurrentModificationException. setValue through iterator of
+ entrySet on a HashMap should succeed.
+
+2002-04-06 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java
+ (test_iterator): Second hasNext() ConcurrentModificationException
+ check removed.
+ (add): Only update modCount when edit == true.
+ (set): Never update modCount.
+
+2002-04-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java
+ (test_MC_iterator): Remove ConcurrentModificationException check for
+ set(int,Object).
+ * gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java
+ (test_iterator): Likewise.
+ * gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java
+ (test_iterator): Likewise.
+ * gnu/testlet/java/util/Vector/AcuniaVectorTest.java
+ (test_iterator): Likewise and also for setElementAt(Object,int)
+
+2002-04-05 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/io/File/jdk11.java (test): Make sure that file
+ exists before calling getCanonicalPath().
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (test): Expect
+ IllegalArgument exception when argument for a method that takes an
+ int is null.
+
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java
+ (test_params): Make toString() tests less strict, just check if they
+ contain the ip number.
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_BasicServer):
+ Make available() test less strict.
+ (test_params): Use well known hosts. Make toString() tests less
+ strict. Drop comparison with getLocalHost() which is invalid if
+ machine has multiple interfaces.
+
+ * gnu/testlet/java/net/URL/URLTest.java (test_openConnection): Be less
+ strict in server name/version (Apache) and content type (text/html)
+ (test_openStream): Be less strict in actual content (HTML).
+
+2002-04-03 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java:
+ Make self contained, extend AbstractCollection, removed test_add().
+ * gnu/testlet/java/util/AbstractCollection/AcuniaAddCollection.java:
+ Removed, moved into AcuniaAbstractCollectionTest.
+ * gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java:
+ New file, self contained testlet based on AcuniaAddCollection and
+ test_ad().
+ * gnu/testlet/java/util/AbstractCollection/AcuniaExAbstractCollection.java:
+ Removed, moved into AcuniaAddCollectionTest.
+
+ * gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java: Make
+ self contained, extends AbstractList.
+ * gnu/testlet/java/util/AbstractList/AcuniaExAbstractList.java:
+ Removed, moved into AcuniaAbstractListTest.
+
+ * gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java: Make
+ self contained, extends AbstractMap.
+ * gnu/testlet/java/util/AbstractMap/AcuniaExAbstractMap.java: Removed,
+ moved into AcuniaAbstractMapTest.
+
+ * gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java:
+ Make self contained, extends AbstractSequentialList.
+ * gnu/testlet/java/util/AbstractSequentialList/AcuniaExASList.java:
+ Removed, moved into AcuniaAbstractSequentialListTest.
+
+ * gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java: Make
+ self contained, extends AbstractSet.
+ * gnu/testlet/java/util/AbstractSet/AcuniaExAbstractSet.java: Removed,
+ moved into AcuniaAbstractSetTest.
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java: Use
+ savannah.gnu.org since hpjavaux.cup.hp.com does no longer exist.
+
+ * gnu/testlet/java/lang/reflect/Modifier/toString12.java: Check for
+ strictfp not just strict. Add check for full ordering.
+
+2002-04-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java: Make self
+ contained, extend ArrayList.
+ * gnu/testlet/java/util/ArrayList/AcuniaExArrayList.java: Removed,
+ moved into AcuniaArrayListTest.
+ * gnu/testlet/java/util/Vector/AcuniaVectorTest.java: Make self
+ contained, extend Vector.
+ * gnu/testlet/java/util/Vector/AcuniaExVector.java: Removed, moved
+ into AcuniaVectorTest.
+
+2002-04-02 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/beans/Introspector/jdk11.java (tryone): Catch all
+ Throwables.
+ * gnu/testlet/java/lang/Float/FloatTest.java (test_valueOf): Catch
+ more Exceptions.
+ * gnu/testlet/java/lang/Integer/getInteger.java (test): Catch
+ NullPointerException.
+ * gnu/testlet/java/lang/Long/LongTest.java (test_getLong): Likewise.
+ * gnu/testlet/java/lang/Long/getLong.java (test): Likewise.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java
+ (invalid_receive_data): Catch IllegalArgumentException.
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java (test_Basics):
+ Catch NullPointerException.
+ * gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java
+ (test_putAll): Catch NoSuchElementException.
+ * gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
+ (test_entrySet): Catch ConcurrentModificationException.
+ * gnu/testlet/java/util/Vector/AcuniaVectorTest.java
+ (test_removeRange): Catch IllegalArgumentException.
+
+2002-04-01 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/BitSet/jdk10.java: remove size() check.
+ * gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java: remove size()
+ checks, extra bits of other BitSet with or/xor are used.
+
+ * gnu/testlet/java/lang/ThreadLocal/simple.java: Make self contained.
+ * gnu/testlet/java/lang/Integer/getInteger.java: Likewise.
+ * gnu/testlet/java/io/File/jdk11.java: Likewise.
+ * gnu/testlet/java/io/File/DocFilter.java: Removed, moved into jdk11.
+
+2002-02-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/reflect/Method/equals.java: new file.
+
+2002-02-18 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/beans/IntrospectorTest.java: renamed
+ gnu/testlet/java/beans/Introspector/jdk11.java
+ (test): check static method Introspector.decapitalize(String)
+ * gnu/testlet/java/beans/Introspector: new directory
+ * gnu/testlet/java/beans/Introspector/jdk12.java: new file
+
+2002-02-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/util/IdentityHashMap/simple.java: JDK1.3 -> JDK1.4
+
+2002-02-18 Mark Wielaard <mark@klomp.org>
+
+ * gnu/testlet/java/lang/String/indexOf.java: Add checks for empty
+ strings.
+
+2002-02-16 C. Brian Jones <cbj@gnu.org>
+
+ * missing: updated to automake 1.5
+ * gnu/testlet/java/io/File/jdk11.java: new file
+ * gnu/testlet/java/io/File/DocFilter.java: new file
+ * gnu/testlet/java/text/MessageFormat/format.java (format): renamed
+ myformat because a class cannot have a method that has a return
+ type, i.e. is not a constructor, of the same name as the class.
+ (test): method name change handled
+ * gnu/testlet/java/sql/Connection/TestJdbc10.java: import java.util.Map
+ * gnu/testlet/java/sql/Types/TestJdbc10.java: added !JDK1.2 and
+ !JDBC2.0 tags
+ * gnu/testlet/config.java.in (getPathSeparator): new method
+ (getSeparator): new method
+ New field pathSeparator is similar to File pathSeparator, used to
+ test File class.
+ New field separator is similar to File separator, used to test
+ File class.
+ * gnu/testlet/SimpleTestHarness.java (getPathSeparator): new method
+ (getSeparator): new method
+ * acinclude.m4: macro include file for aclocal.m4
+ * config.guess: from automake, now required
+ * config.sub: from automake, now required
+ * aclocal.m4: updated
+ * configure.in: added call to ACX_CHECK_PATHNAME_STYLE_DOS
+ * configure: updated
+ * Makefile.in: updated
+ * choose: search com java javax instead of just java
+
+2002-02-11 C. Brian Jones <cbj@gnu.org>
+
+ * Makefile.am: add user's CLASSPATH to CLASSPATH when attempting to
+ run a javac-type program.
+ Fix rules for SimpleTestHarness to use $(EXEEXT), works with
+ automake 1.5 this way.
+ * aclocal.m4: updated
+ * configure: updated
+ * Makefile.in: updated
+
+2001-11-25 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/construct.java: New file.
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (try_invoke):
+ Pass both classes to check().
+
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java (test):
+ Removed more invalid tests.
+
+2001-10-04 C. Brian Jones <cbj@gnu.org>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_Basics): Removed
+ try/catch for a block that cannot throw a checked exception.
+
+2001-10-01 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java (test):
+ Commented out incorrect test.
+
+2001-09-27 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/IdentityHashMap/simple.java: New file.
+
+ * gnu/testlet/java/lang/ThreadLocal/simple.java: New file.
+
+ * gnu/testlet/javax/naming/CompositeName/composite.java: New file.
+ * gnu/testlet/javax/naming/CompoundName/simple.java: New file.
+
+ * gnu/testlet/java/lang/ref/PhantomReference/phantom.java: New file.
+ * gnu/testlet/java/lang/ref/WeakReference/weakref.java: New file.
+
+2001-09-27 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/BufferedByteOutputStream/interrupt.java:
+ Added `uses' line.
+
+2001-09-04 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java (test):
+ There is no single-argument Locale constructor in JDK 1.2.
+
+2001-09-03 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java: Added
+ new test class.
+
+2001-08-23 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java (test): Added
+ test for method with array argument.
+
+2001-08-19 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/lang/Math/min.java: added some more tests for min that don't
+ use string comparisons
+
+2001-08-11 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/text/ChoiceFormat/format.java (test): changed format to doformat
+ (doformat): changed name from format (conflicted with class name)
+
+2001-08-09 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/StringBuffer/plus.java (test): fix test to
+ match JDK1.4
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (test): fix
+ test to match JDK1.4
+ * gnu/testlet/java/lang/reflect/Constructor/newInstance.java
+ (test): fix test to match JDK1.4
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java (test):
+ added more tests
+
+2001-08-09 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/lang/Math/min.java: added checkpoints
+ * gnu/testlet/java/lang/System/arraycopy.java: Added checkPoint()s for various cases
+ * gnu/testlet/java/lang/Object/clone.java: Added check that arrays have same length, type, component type
+
+2001-08-09 John Leuner <jewel@debian.org>
+
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java: Fixed original test
+ Added test for Integer.TYPE
+ Added test for String.class
+ Added test for NegativeArraySizeException
+
+2001-08-09 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/Integer/getInteger.java (SM): fix
+ ExceptionInInitializerError caused by security hole of last commit
+
+2001-08-09 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/Integer/IntegerTest.java
+ (test_toHexString): make more accurate
+ (test_Basics): test Integer.TYPE
+ * gnu/testlet/java/lang/Integer/new_Integer.java (test):
+ add more tests, make more accurate
+ * gnu/testlet/java/lang/Integer/getInteger.java (test):
+ add more tests
+ * gnu/testlet/java/lang/Integer/compareTo.java: new file
+
+2001-07-31 Eric Blake <ebb9@email.byu.edu>
+
+ * gnu/testlet/java/lang/Object/clone.java: new file
+ * gnu/testlet/java/lang/Object/wait.java: new file
+ * gnu/testlet/TestHarness.java (check): Remove dependence
+ on possibly buggy Double.toString.
+
+2001-06-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/BufferedByteOutputStream/interrupt.java: New
+ file.
+ * gnu/testlet/java/io/BufferedByteOutputStream/helper.java: New
+ file.
+
+2001-06-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (dates):
+ Added EST case again, reverting yesterday's change. It turns out
+ to be correct.
+
+2001-05-14 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (dates):
+ Removed `EST' case as it is simply wrong (and unfixable).
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test):
+ Correctly extract timezone.
+
+2001-05-13 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test):
+ Added regression test for local timezone.
+
+2001-05-11 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (test):
+ Fixed buglet in new tests.
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java (dates): New
+ field.
+ (test): Added timezone tests.
+
+2001-05-10 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/roll.java: New file.
+
+2001-05-09 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/util/Calendar/add.java (test): Added no-op
+ test.
+
+ * gnu/testlet/java/util/Calendar/add.java: New file.
+
+2001-05-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/DateFormatSymbols/Test.java: Added a new
+ checkpoint.
+
+ * gnu/testlet/java/util/Calendar/simple.java: Remove bogus test.
+
+2001-05-01 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/regress.java: New file.
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java (test): Removed
+ libgcj regression test.
+
+2001-04-26 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/DateFormatSymbols/Test.java (test):
+ Removed println.
+
+2001-04-25 Jeff Sturm <jsturm@one-point.com>
+
+ * gnu/testlet/java/util/Calendar/simple.java: New file.
+
+2001-04-25 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java
+ (Test): Removed `get' test.
+
+2001-04-24 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java (test): Added
+ parsing regression test.
+
+2001-04-02 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/PrintStream/subclass.java: New file.
+
+2001-03-23 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_forName): Added
+ test for `[int'.
+
+2001-02-19 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/ThreadGroup/enumerate.java: New file.
+
+2001-02-13 Warren Levy <warrenl@redhat.com>
+
+ * README: Included paragraph on ignoring expected failures with xfails.
+
+2001-02-08 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/io/InputStreamReader/except.java: New file.
+
+2001-02-08 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/SimpleTestHarness.java (SimpleTestHarness): Moved
+ code for reading xfails file from main.
+
+2001-02-08 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Minor formatting fixes.
+ (check): Compare failures against expected failures.
+ (done): Print out totals for unexpected failures and passes.
+ (main): Load expected failures file into Vector.
+
+2001-02-07 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/text/MessageFormat/format.java (test): Added
+ test for JDK compatibility.
+
+ * gnu/testlet/java/util/Arrays/sort.java: New file.
+
+2001-01-16 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/java/math/BigInteger/shift.java: Added more test cases.
+
+2001-01-16 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/java/math/BigInteger/shift.java: New file.
+
+2001-01-10 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/java/math/BigDecimal/setScale.java: New file.
+
+2000-12-20 Tom Tromey <tromey@redhat.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_getInterfaces):
+ Arrays implement two interfaces.
+ (testall): Don't run test_getResource.
+
+ * gnu/testlet/java/lang/StringBuffer/plus.java (test): Fixed
+ null-as-left-operand test to match JDK 1.2.
+
+2000-12-08 Warren Levy <warrenl@redhat.com>
+
+ * gnu/testlet/java/net/Socket/SocketBServer.java (harness): Made
+ package private.
+ * gnu/testlet/java/net/Socket/SocketServer.java: Restored calls
+ to harness.fail.
+ (harness): Made package private.
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_BasicServer):
+ Set srv.harness.
+ (test_BasicBServer): Set srv.harness.
+
+2000-12-01 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/sql/Connection/TestJdbc10.java: Added tag
+ to indicate incompatibility with JDBC2.0.
+ * gnu/testlet/java/sql/Connection/TestJdbc20.java: New test for
+ JDBC 2.0.
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc10.java: Added tag
+ to indicate incompatibility with JDBC2.0.
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc20.java: New test
+ for JDBC 2.0.
+
+2000-11-17 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/zip/ZipInputStream/close.java: New file.
+
+2000-10-07 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/Properties/load.java: New file.
+
+2000-09-06 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java: Correctly
+ return result for method is `java.lang.String'.
+
+ * gnu/testlet/java/lang/reflect/Constructor/newInstance.java:
+ Allow null argument list for constructor with no arguments.
+ * gnu/testlet/java/lang/reflect/Method/invoke.java: Allow null
+ argument list for method with no arguments.
+
+2000-08-09 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/StreamTokenizer/Test.java: New file.
+
+ * gnu/testlet/java/io/StreamTokenizer/slashstar.java: New file.
+
+2000-08-07 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java (test): Fixed
+ bug.
+
+ * gnu/testlet/java/lang/reflect/Method/toString.java: New file.
+
+2000-08-05 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/PipedStream/receive.java (receive()): New
+ constructor.
+
+2000-08-04 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/StreamTokenizer/newline.java: New file.
+
+2000-07-14 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java
+ (test_getClassloader): Use full name of ClassTest class.
+ From sharon wu <lotus_june@yahoo.com>.
+
+2000-07-10 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/PipedStream/receive.java: Fixed tag.
+ Changed code to use `receive' and not `PipeTest'.
+ From Peter Naulls.
+
+2000-04-21 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/PipedStream/receive.java: New file.
+
+2000-04-20 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/PipedStream/close.java: New file.
+
+2000-03-08 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Array/newInstance.java: New file.
+
+2000-03-05 Anthony Green <green@redhat.com>
+
+ * gnu/testlet/java/lang/Math/sin.java: New file.
+
+2000-03-02 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/net/URL/URLTest.java (test_toString):
+ sourceware.cygnus.com has a new IP address.
+ (test_openConnection): Sourceware is running a newer version of
+ Apache.
+
+2000-01-09 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/lang/String/StringTest.java (test_getChars,
+ test_getBytes): Don't check for StringIndexOutOfBoundsException or
+ ArrayIndexOutOfBoundsException. The spec only mentions
+ IndexOutOfBoundsException.
+
+2000-01-07 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Class/ClassTest.java (test_forName): Use
+ `check', not `fail'. Added check to make sure forName("I")
+ fails.
+
+ * gnu/testlet/java/lang/reflect/Constructor/newInstance.java: New
+ file.
+
+2000-01-06 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Class/reflect.java (test): Added tests for
+ int.class.
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (test): Use
+ `na_meth' and not `ti_meth' in null pointer test. Added some
+ comments.
+
+2000-01-05 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java: Create Integer
+ objects, not arrays of Integers.
+
+ * gnu/testlet/java/lang/Class/reflect.java (test): Check for
+ inherited method lookup. Fixed checkpoint name for
+ getDeclaredMethods. Added getDeclaringClass test. Make
+ getMethods test aware of methods in Testlet and Object.
+ Actually call getDeclaredMethods and not getMethods in
+ getDeclaredMethods check.
+
+ * gnu/testlet/java/lang/Class/reflect.java (test): Added tests for
+ getField, getDeclaredFields, getFields, getMethod, getMethods,
+ getDeclaredMethod, getDeclaredMethods.
+ (do_nothing): New method.
+ (getMethod): Likewise.
+
+2000-01-05 Dalibor Topic <robilad@yahoo.com>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java: Pass argument
+ to InvocationTargetException constructor.
+
+2000-01-04 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Class/reflect.java: New file.
+ * gnu/testlet/java/lang/Class/rf_help.java: New file.
+
+1999-12-24 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/SimpleTestHarness.java (debug): Formatting fix.
+
+1999-12-23 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java (try_invoke):
+ Compare result class against expected class, not against
+ `expect'.
+
+1999-12-21 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Method/invoke.java: New file.
+
+ * gnu/testlet/java/lang/reflect/Modifier/toString12.java: New
+ file.
+
+1999-11-09 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/ObjectInputOutput/OutputTest.java: Tag as
+ JDK1.2.
+ * gnu/testlet/java/io/ObjectInputOutput/InputTest.java: Tag as
+ JDK1.2; the `Test' class uses a 1.2-specific feature.
+
+Sun Jul 25 01:26:40 1999 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/io/ObjectStreamClass/Test.java: New file. All
+ of these new files were contributed by Geoff Berry <gcb@gnu.org>.
+ * gnu/testlet/java/io/ObjectInputOutput/InputTest.java: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/OutputTest.java: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test.java: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$BadField.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$CallDefault.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$Extern.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$GetPutField.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$HairyGraph.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$NoCallDefault.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test$NotSerial.data: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/write-ref-data.sh: New file.
+ * gnu/testlet/java/io/ObjectInputOutput/Test.java: New file.
+
+1999-07-12 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java (test_params):
+ Commented out dead code.
+ * gnu/testlet/java/net/Socket/SocketTest.java (test_params): ditto.
+ * gnu/testlet/java/net/URLConnection/MyURLConnection.java (connect):
+ Removed unnecessary imports and unreachable code.
+
+1999-07-07 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/StringBuffer/StringBufferTest.java
+ (test_append): Run null tests.
+ * gnu/testlet/java/lang/String/StringTest.java (test_Basics):
+ Don't disable null String test.
+ * gnu/testlet/java/lang/Class/ClassTest.java: Removed `CYGNUS'
+ comments. Fixed debugging prints to use test harness.
+ (test_ComponentType): Uncommented.
+ (testall): Call test_ComponentType and test_getClassloader.
+ (test_getResource): Uncommented body.
+
+1999-07-05 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.am (harnesso_files): New macro.
+ (SimpleTestHarness_LDADD): Added harnesso_files.
+ (SimpleTestHarness): New target.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am ($(javao_files)): New conditional target.
+ (STAMP): New macro.
+ (SimpleTestHarness_DEPENDENCIES): Use it.
+ (%.o:%.class): Now conditional.
+ (%.o:%.java): New pattern.
+ (check_DATA): Use $(STAMP).
+ * configure: Rebuilt.
+ * configure.in: If --with-gcj given, then default JAVAC to `gcj -C'.
+ Added --enable-classes.
+
+1999-07-05 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/Utf8Encoding/mojo.java: New file. From
+ "Mojo Jojo" <mojojojo@pacbell.net>.
+
+1999-06-21 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java:
+ Set up thread like test_echo().
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java:
+ Revert harness.fail instances to println's per original. Don't sleep.
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java:
+ Revert harness.fail instances to println's per original.
+ * gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java: ditto.
+
+1999-06-11 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/Socket/SocketTest.java: Added harness.check
+ calls.
+ (test_Basics): Changed from unreachable host to mothership.
+
+1999-06-10 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/io/DataInputStream/readLine.java (test):
+ Add casts to byte for instances of '\n', '\r'.
+ * gnu/testlet/java/net/Socket/SocketServer.java (init): Revert
+ harness.fail instances to println's per original.
+ (run): ditto.
+ * gnu/testlet/java/net/URL/MyURLStreamHandler.java (MyURLStreamHandler):
+ Added null constructor.
+ * gnu/testlet/java/net/URL/URLTest.java: Added Uses: tag.
+ * gnu/testlet/java/text/Collator/Constants.java (test): Omit
+ redundant instances of fully qualified class name 'java.text.'.
+
+1999-05-28 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java
+ (test_Basics): Added harness checks for setTTL & getTTL calls.
+
+1999-05-28 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java
+ (test_Basics): Null argument to joinGrp & leaveGrp cause a
+ NullPointerException.
+
+1999-05-19 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/zip/ZipInputStream/reference.zip: New file.
+ * gnu/testlet/java/util/zip/ZipInputStream/basic.java: New file.
+
+ * gnu/testlet/java/util/zip/basic.java: New file.
+ * gnu/testlet/java/util/zip/reference.data: Likewise.
+ * gnu/testlet/java/util/zip/reference.gz: Likewise.
+
+1999-05-18 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java
+ (invalid_port): Catch NullPointerException.
+ (invalid_receive_data): Print stack trace after failure msg.
+ * gnu/testlet/java/net/MulticastSocket/MulticastClient.java:
+ New file.
+ * gnu/testlet/java/net/MulticastSocket/MulticastServer.java:
+ New file.
+ * gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java:
+ New file.
+
+1999-05-12 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/DatagramPacket/DatagramPacketTest.java:
+ New file.
+ * gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java:
+ New file.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java:
+ New file.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java:
+ New file.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java:
+ New file.
+ * gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java:
+ New file.
+
+1999-05-07 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (%.o): Depend on classes.stamp.
+
+ * configure: Rebuilt.
+ * configure.in: Fixed help output for --with-tmpdir.
+
+1999-04-30 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java (test):
+ Use debug, not println.
+
+1999-04-29 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/net/InetAddress/InetAddressTest.java: New file.
+ * gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java:
+ New file.
+ * gnu/testlet/java/net/ServerSocket/BasicSocketServer.java: New file.
+ * gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java: New file.
+ * gnu/testlet/java/net/ServerSocket/MyServerSocket.java: New file.
+ * gnu/testlet/java/net/ServerSocket/ServerSocketTest.java: New file.
+ * gnu/testlet/java/net/Socket/MySocket.java: New file.
+ * gnu/testlet/java/net/Socket/MySocketImpl.java: New file.
+ * gnu/testlet/java/net/Socket/SocketBServer.java: New file.
+ * gnu/testlet/java/net/Socket/SocketServer.java: New file.
+ * gnu/testlet/java/net/Socket/SocketTest.java: New file.
+ * gnu/testlet/java/net/URL/MyURLStreamHandler.java: New file.
+ * gnu/testlet/java/net/URL/URLTest.java: New file.
+ * gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java:
+ New file.
+ * gnu/testlet/java/net/URLConnection/MyURLConnection.java: New file.
+ * gnu/testlet/java/net/URLConnection/URLConnectionTest.java: New file.
+ * gnu/testlet/java/net/URLEncoder/URLEncoderTest.java: New file.
+
+1999-04-21 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/String/getBytes.java: Explicitly use
+ `8859_1' encoding.
+
+ * gnu/testlet/java/lang/String/getBytes.java: New file.
+ From Bryce McKinlay <bryce@albatross.co.nz>.
+
+1999-04-12 Warren Levy <warrenl@cygnus.com>
+
+ * gnu/testlet/java/io/DataInputStream/readLine.java: New file;
+ written by Anthony Green <green@cygnus.com>.
+
+1999-04-08 Tom Tromey <tromey@cygnus.com>
+
+ * choose: Generate multi-line text in choices file. Otherwise sed
+ might break when converting CHOICES into the SimpleTestHarness
+ target.
+
+Thu Apr 8 21:15:50 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/DecimalFormatSymbols/GetSet12.java:
+ Added this test case.
+
+ * gnu/testlet/java/text/DecimalFormatSymbols/GetSet11.java:
+ Added this test case.
+
+ * gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault12.java:
+ Added this test case.
+
+ * gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault11.java:
+ Added this test case.
+
+1999-04-05 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Integer/new_Integer.java: Added another
+ overflow detection test.
+
+ * gnu/testlet/java/lang/Integer/new_Integer.java: Added a new
+ overflow detection test.
+
+Sun Apr 4 17:44:28 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java: Added
+ this test case.
+
+Sat Apr 3 19:28:11 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/Collator/GetSet.java: Added this test case.
+
+ * gnu/testlet/java/text/Collator/Constants.java: Added this test
+ case.
+
+1999-04-01 Andrew Haley <aph@cygnus.com>
+
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java,
+ gnu/testlet/java/lang/Byte/ByteTest.java,
+ gnu/testlet/java/lang/Character/CharacterTest.java,
+ gnu/testlet/java/lang/Double/DoubleTest.java,
+ gnu/testlet/java/lang/Float/FloatTest.java,
+ gnu/testlet/java/lang/Integer/IntegerTest.java,
+ gnu/testlet/java/lang/Long/LongTest.java,
+ gnu/testlet/java/lang/Math/MathTest.java,
+ gnu/testlet/java/lang/Short/ShortTest.java,
+ gnu/testlet/java/lang/String/StringTest.java,
+ gnu/testlet/java/lang/StringBuffer/StringBufferTest.java,
+ All instances of "if (condition) harness.fail (failure)" replaced
+ with "harness.check (!(condition), failure);
+
+
+1999-03-30 Tom Tromey <tromey@cygnus.com>
+
+ Change to make it easier to subclass SimpleTestHarness:
+ * gnu/testlet/SimpleTestHarness.java (getSourceDirectory): Now
+ public.
+ * gnu/testlet/config.java.in (getSourceDirectory,
+ getTempDirectory): New methods.
+
+ Allow srcdir != builddir again:
+ * Makefile.am (harness_files): Removed config.java.
+ (gnu/testlet/config.class): New target.
+ (classes.stamp): Depend on config.class.
+ (class_files): Added config.class.
+
+Tue Mar 30 19:57:19 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/AttributedString/Test.java: Added this
+ test case.
+
+Thu Mar 25 22:27:11 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc10.java: Add
+ !JDK1.2 to keys.
+
+Thu Mar 25 22:26:04 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Connection/TestJdbc10.java: Add !JDK1.2
+ to keys.
+
+Thu Mar 25 22:23:22 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/StringWriter/Test.java: Check for exception
+ in close()
+
+Wed Mar 24 21:11:20 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/Annotation/Test.java: Added this test case.
+
+1999-03-23 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/BreakIterator/sentiter.java: New file.
+
+ * gnu/testlet/java/text/BreakIterator/lineiter.java: New file.
+
+1999-03-22 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/BreakIterator/worditer.java (check): Added
+ `name' argument. Now do checks of previous() method as well.
+
+ * gnu/testlet/java/text/BreakIterator/worditer.java: New file.
+
+1999-03-21 Artur Biesiadowski <abies@pg.gda.pl>
+
+ * gnu/testlet/java/util/BitSet/jdk10.java: Made `and' test more
+ robust.
+
+1999-03-19 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/BreakIterator/chariter.java: New file.
+
+1999-03-18 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/SimpleTestHarness.java (main): Examine all
+ arguments.
+
+1999-03-16 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java (test_equals):
+ Fixed incorrect test.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (harness_files): Added config.java.
+
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java (test): Renamed
+ argument.
+
+1999-03-16 Anthony Green <green@cygnus.com>
+
+ * configure.in: Add --with-tmpdir option
+ * configure: Rebuilt.
+
+ * Makefile.am: Don't pass the source directory to SimpleTestHarness.
+ * Makefile.in: Rebuilt.
+
+ * gnu/testlet/TestHarness.java: Add getTempDirectory.
+ * gnu/testlet/SimpleTestHarness.java: Use config interface
+ to get srcdir and tmpdir. Add getTempDirectory.
+
+1999-03-14 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java: Use TestHarness.
+
+1999-03-14 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/lang/Boolean/BooleanTest.java,
+ gnu/testlet/java/lang/Byte/ByteTest.java,
+ gnu/testlet/java/lang/Character/CharacterTest.java,
+ gnu/testlet/java/lang/Class/ClassTest.java,
+ gnu/testlet/java/lang/Cloneable/CloneableTest.java,
+ gnu/testlet/java/lang/Double/DoubleTest.java,
+ gnu/testlet/java/lang/Float/FloatTest.java,
+ gnu/testlet/java/lang/Integer/IntegerTest.java,
+ gnu/testlet/java/lang/Long/LongTest.java,
+ gnu/testlet/java/lang/Math/MathTest.java,
+ gnu/testlet/java/lang/Number/NewNumber.java,
+ gnu/testlet/java/lang/Number/NumberTest.java,
+ gnu/testlet/java/lang/Object/ObjectTest.java,
+ gnu/testlet/java/lang/Short/ShortTest.java,
+ gnu/testlet/java/lang/String/StringTest.java,
+ gnu/testlet/java/lang/StringBuffer/StringBufferTest.java: New files.
+
+1999-03-12 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/MessageFormat/parse.java: New file.
+
+1999-03-11 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test): Correctly
+ use trailing `-' in edge case. Sigh.
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test): Add test
+ for Long.MIN_VALUE.
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test): Use
+ constant string in edge case.
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test): Added
+ some boundary case checks. Correct bugs in two test cases.
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java (test): Added
+ trailing `-' case.
+
+ * gnu/testlet/java/text/DecimalFormat/parse.java: New file.
+
+ * gnu/testlet/java/lang/Integer/new_Integer.java (test): Added
+ check for overflow case.
+
+ * gnu/testlet/java/text/ChoiceFormat/next.java: New file.
+
+1999-03-10 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/DecimalFormat/topattern.java: New file.
+
+ * gnu/testlet/java/text/ChoiceFormat/parse.java: New file.
+
+ * gnu/testlet/java/text/MessageFormat/format.java (test): Added
+ `choice' test and quoted `#' test.
+
+1999-03-09 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test): Added a
+ new case.
+
+ * gnu/testlet/java/text/DecimalFormat/position.java: New file.
+
+ * gnu/testlet/java/lang/Long/new_Long.java (test): Added some
+ checkPoint calls.
+
+ * gnu/testlet/java/text/ChoiceFormat/format.java: New file.
+
+ * gnu/testlet/java/text/ACIAttribute/Test.java: Mark as JDK1.2;
+ AttributedCharacterIterator is not in 1.1.
+ * gnu/testlet/java/text/AttributedCharacterIterator/implement.java:
+ Mark as JDK1.2.
+
+ * gnu/testlet/java/text/DecimalFormat/format.java (test): Added
+ some exponential tests (commented out for now).
+
+1999-03-08 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java: Catch any
+ throwable, not just ParseException.
+
+ * gnu/testlet/java/text/MessageFormat/format.java: Default percent
+ format includes no fraction part.
+
+ * choose: Remove $usesfile.
+
+ * gnu/testlet/java/text/DecimalFormat/format.java: New file.
+
+1999-03-08 Andrew Haley <aph@cygnus.com>
+
+ * gnu/testlet/java/lang/Long/new_Long.java: Add boundary checks
+ for Long.parseLong.
+
+1999-03-05 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/text/MessageFormat/format.java: New file.
+
+1999-02-27 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in, configure: Rebuilt.
+ * Makefile.am: Added space before `include'; hack to work around
+ weirdness in latest automake.
+ * configure.in: Don't create config/gcj-tool; the `.in' file does
+ not exist.
+
+Fri Feb 26 23:19:50 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/ACIAttribute/Test.java: Added this test.
+
+ * gnu/testlet/java/text/AttributedCharacterIterator/implement.java:
+ Added this test.
+
+ * gnu/testlet/java/text/CharacterIterator/implement.java: Added
+ this test.
+
+Tue Feb 23 23:29:18 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java: Added some test
+ cases for lenient date parsing a la Classpath.
+
+1999-02-23 Tom Tromey <tromey@cygnus.com>
+
+ * choose: Added more verbose output. If a file pattern is an
+ exact match, then it is accepted without examining the tags.
+
+ * gnu/testlet/java/text/StringCharacterIterator/iter.java: New
+ file.
+ * gnu/testlet/java/text/StringCharacterIterator/constructor.java:
+ New file.
+
+1999-02-22 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/TestHarness.java (check): Use Double.toString to
+ compare equality of doubles.
+
+1999-02-16 Tom Tromey <tromey@cygnus.com>
+
+ * choose: Don't use `dirname'. Sort and uniquify the list of used
+ (auxiliary) files.
+
+1999-02-15 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Test for null cname before
+ printing it out.
+
+ * gnu/testlet/java/io/DataInputOutput/ReadStream.java: Tag as
+ not-a-test.
+ * gnu/testlet/java/io/DataInputOutput/ReadReference.java: Tag as
+ using ReadStream.
+
+ * choose: Add JLS1.0 and JLS1.1 tags.
+
+ * gnu/testlet/java/lang/Math/cos.java,
+ gnu/testlet/java/lang/Math/min.java,
+ gnu/testlet/java/lang/Math/max.java,
+ gnu/testlet/java/lang/Math/rint.java: Fixed comments.
+
+Mon Feb 15 21:04:24 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/DataInputOutput/WriteRead.java: Added file.
+
+ * gnu/testlet/java/io/DataInputOutput/ReadStream.java: Added file.
+
+ * gnu/testlet/java/io/DataInputOutput/ReadReference.java: Added file.
+
+Mon Feb 15 20:16:12 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/Utf8Encoding/WriteRead.java: Added this test
+ case.
+
+ * gnu/testlet/java/io/Utf8Encoding/ReadReference.java: Added this
+ test case.
+
+Mon Feb 15 19:57:17 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/TestHarness.java (check(double, double)): New method
+
+ * gnu/testlet/TestHarness.java (check(double, double, String)):
+ New method
+
+ * gnu/testlet/TestHarness.java (getResourceStream): New method
+
+ * gnu/testlet/SimpleTestHarness.java (getResourceStream): New method
+
+ * gnu/testlet/SimpleTestHarness.java (getResourceReader): Use
+ getResourceStream
+
+ * gnu/testlet/SimpleTestHarness.java (runtest): Return if not
+ instanceof Testlet
+
+1999-02-07 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/BitSet/jdk10.java (trulyEquals): Don't
+ pass description to check().
+ (test): Fixed typo.
+
+Thu Feb 4 19:49:42 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/DatabaseMetaData/TestJdbc10.java: Added this
+ test case.
+
+Thu Feb 4 18:45:14 1999 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/TestHarness.java (fail): New method.
+
+ * gnu/testlet/java/lang/Character/CharInfo.java: Add missing
+ copyright notice.
+ * gnu/testlet/java/lang/Character/unicode.java: Ditto.
+
+Thu Feb 4 06:26:53 1999 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/util/BitSet/jdk10.java: New file from
+ Artur Biesiadowski.
+
+Sat Jan 30 18:29:04 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Clob/ClobTest.java: Added this test case.
+
+Sat Jan 30 18:14:15 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Blob/BlobTest.java: Added this test case
+
+Sat Jan 30 18:08:54 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Array/ArrayTest.java: Added this test case.
+
+1999-01-27 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/StringBuffer/plus.java: New file.
+
+Mon Jan 25 18:31:26 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Connection/TestJdbc10.java: Added this test
+ case.
+
+Sun Jan 24 14:03:26 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/sql/Types/TestJdbc20.java: Added this test case.
+
+ * gnu/testlet/java/sql/Types/TestJdbc10.java: Added this test case.
+
+1999-01-14 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Character/getType.java (test): 0x0ad0 is
+ now other-letter. Added 0b70 as other-symbol.
+
+ * gnu/testlet/java/lang/Character/unicode.java (unicode): Ignore
+ full width characters.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Fixed typo in upper-case check.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Fixed test to determine when character is a digit. Now follows
+ JCL volume 1.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Fixed recognition of upper case characters to match Java
+ documentation.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Lower case letters don't necessarily have to be marked `Ll'.
+
+ * gnu/testlet/java/lang/Character/UnicodeData.txt: Updated to
+ version 2.1.8.
+
+ * gnu/testlet/java/lang/Character/unicode.java: (performTests):
+ When testing digit(), make sure the character is actually a
+ digit according to the correct rules.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Handle Ps and Pf character categories.
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests): Use
+ correct rule for determining when character is lower case.
+
+ * gnu/testlet/java/lang/Character/unicode.java (ignorable): New
+ method. Partially reverts previous change (JDK 1.2 says that
+ 7f-95 are ignorable).
+
+ * gnu/testlet/java/lang/Character/unicode.java (performTests):
+ Fixed definition of ignorable control character for
+ isJavaIdentifierPart and isUnicodeIdentifierPart tests.
+ Characters 0x7f to 0x9f are not identifier ignorable.
+
+ * gnu/testlet/java/lang/Character/unicode.java (unicode): Use
+ getResourceReader method from harness.
+
+ * gnu/testlet/java/lang/Character/unicode.java: New version from
+ Artur Biesiadowski.
+
+ * THANKS: New file.
+
+ Variant of patch from Artur Biesiadowski:
+ * gnu/testlet/SimpleTestHarness.java (getDescription): New
+ method.
+ (check): Use it.
+
+ * gnu/testlet/java/lang/Integer/new_Integer.java (test): Added
+ checkpoints.
+
+1999-01-14 Andrew Haley <aph@cygnus.com>
+
+ * gnu/testlet/java/lang/Math/cos.java,
+ gnu/testlet/java/lang/Math/min.java,
+ gnu/testlet/java/lang/Math/max.java: new files.
+
+1999-01-11 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/text/ParsePosition/Test.java: Tag testlet with
+ JDK1.2.
+
+ * gnu/testlet/java/text/FieldPosition/Test.java: Tag testlet with
+ JDK1.2.
+
+ * gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java:
+ New file.
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java: Extracted
+ get2DigitYearStart and set2DigitYearStart tests.
+
+ * gnu/testlet/java/lang/Character/unicode.java (unicode): Use
+ TestHarness.getResourceReader instead of direct File usage.
+
+ * gnu/testlet/java/lang/Character/unicode.java: Removed
+ System.out.println output.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (harness_files): Add ResourceNotFoundException.
+ * gnu/testlet/ResourceNotFoundException.java: New file.
+
+ * gnu/testlet/SimpleTestHarness.java: Add getResourceReader.
+
+ * gnu/testlet/TestHarness.java: Remove getSourceDirectory.
+ Add getResourceReader.
+
+ * gnu/testlet/java/lang/Character/CharInfo.java: Clarified
+ inner-class comment.
+
+Sun Jan 10 21:18:32 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/SimpleDateFormat/Test.java: Added this test
+ case.
+
+Sat Jan 9 16:47:38 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/ParseException/Test.java: Added this test
+ case.
+
+ * gnu/testlet/java/text/FieldPosition/Test.java: Added this test case.
+
+Fri Jan 8 22:39:03 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/ParsePosition/Test.java: Added this test case.
+
+ * gnu/testlet/java/text/DateFormat/Test.java: Added this test case.
+
+ * gnu/testlet/SimpleTestHarness.java: Add array debug method.
+
+ * gnu/testlet/TestHarness.java: Add array debug method.
+
+1999-01-08 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Character/UnicodeData.txt: Updated to
+ version 2.1.5.
+
+ * gnu/testlet/java/lang/Character/unicode.java: Moved CharInfo
+ into its own file.
+ * gnu/testlet/java/lang/Character/CharInfo.java: New file.
+
+Thu Jan 7 21:23:46 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/lang/Character/UnicodeData.txt: Added Unicode
+ 2.1.2 database file needed for character test.
+
+ * gnu/testlet/java/lang/Character/unicode.java: Added Artur
+ Biesiadowski's (abies@pg.dga.pl) Character test to the archives.
+
+Mon Jan 4 18:58:11 1999 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/text/DateFormatSymbols/Test.java: Added this
+ test case.
+
+1999-01-04 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java (test):
+ Commented out print to System.out.
+
+ * gnu/testlet/java/io/PushbackInputStream/Unread.java (test): Use
+ `debug' instead of printing string to System.out.
+
+ * gnu/testlet/java/io/BufferedCharWriter/Test.java (test): Added
+ checkpoint name to exception check.
+
+ * gnu/testlet/SimpleTestHarness.java (main): Removed extraneous
+ `continue' statements. Only print class name and separator if
+ `verbose'.
+
+ * gnu/testlet/SimpleTestHarness.java (main): Removed `~' test of
+ file names.
+
+Wed Dec 30 10:07:55 1998 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/TestHarness.java: getSourceDirectory returns
+ a String, not a File.
+ * gnu/testlet/SimpleTestHarness.java: srcdir is a String, not
+ a File.
+
+ * gnu/testlet/java/io/PipedStream/Test.java: Uses
+ PipedStreamTestWriter.
+ * gnu/testlet/java/io/PipedReaderWriter/Test.java: Uses
+ PipedTestWriter.
+ * gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java,
+ gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java:
+ New files.
+
+Sat Dec 26 20:35:02 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/BufferedReader/MarkReset.java: Added this
+ test case.
+
+ * gnu/testlet/java/io/BufferedReader/SimpleRead.java: Added this
+ test case.
+
+Sat Dec 26 20:02:33 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/BufferedInputStream/MarkReset.java: Added
+ this test case.
+
+ * gnu/testlet/java/io/BufferedInputStream/SimpleRead.java: Added
+ this test case.
+
+ * gnu/testlet/java/io/BufferedInputStream/ProtectedVars.java: Added
+ this test case.
+
+Sat Dec 26 19:33:33 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/BufferedCharWriter/Test.java: Added this
+ test case.
+
+Sat Dec 26 19:23:41 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/BufferedByteOutputStream/Test.java: Added this
+ test case.
+
+Sat Dec 26 19:10:12 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/CharArrayReader/MarkReset.java: Added this
+ test case.
+
+ * gnu/testlet/java/io/CharArrayReader/SimpleRead.java: Added this
+ test case.
+
+ * gnu/testlet/java/io/CharArrayReader/ProtectedVars.java: Added
+ this test case.
+
+Sat Dec 26 00:05:27 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java: Added
+ this test case.
+
+ * gnu/testlet/java/io/ByteArrayInputStream/ProtectedVars.java: Added
+ this test case.
+
+ * gnu/testlet/java/io/ByteArrayInputStream/SimpleRead.java: Added
+ this test case.
+
+Fri Dec 25 23:36:02 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/PushbackReader/Unread.java: Added this
+ test case.
+
+ * gnu/testlet/java/io/PushbackReader/BufferOverflow.java: Added
+ this test case.
+
+Fri Dec 25 23:16:43 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/SequenceInputStream/Test.java: Added
+ this test case.
+
+Fri Dec 25 23:14:18 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Added new debug(String, boolean)
+ method that does not add a newline after printing the string.
+
+ * gnu/testlet/TestHarness.java: Added new debug(String,boolean)
+ method that does not add a newline after printing the string.
+
+1998-12-22 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java:
+ Mark as JDK 1.0, not 1.2.
+ * gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java:
+ Mark as JDK 1.0, not 1.2.
+ * gnu/testlet/java/io/StringBufferInputStream/MarkReset.java: Mark
+ as JDK 1.0, not 1.2.
+
+ * gnu/testlet/java/io/StringBufferInputStream/ChangeLog: Removed.
+
+Thu Dec 17 18:49:12 1998 Aaron M. Renn <arenn@urbanophile.com>
+
+ * gnu/testlet/java/io/StringBufferInputStream/MarkReset.java:
+ Declare read_buf, sbis correctly. Misc syntax error fixes.
+
+ * gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java:
+ Declare read_buf, sbis correctly. Misc syntax error fixes.
+
+ * gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java:
+ Eliminate useless debug message, fix misc syntax errors.
+
+1998-12-16 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java
+ (test): Not static.
+ * gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java
+ (ProtectedVars): New no-arg constructor.
+ (test): Not static.
+ * gnu/testlet/java/io/StringBufferInputStream/MarkReset.java
+ (test): Not static.
+
+ * gnu/testlet/TestHarness.java (check): Added variants with
+ checkpoint string argument.
+
+1998-12-14 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/String/decode.java (test): Changed
+ initialization of bstr.
+
+1998-12-12 Tom Tromey <tromey@cygnus.com>
+
+ * configure: Rebuilt.
+ * configure.in: Added --enable-gcj-classes argument.
+
+1998-12-11 Tom Tromey <tromey@cygnus.com>
+
+ * COPYING: New file.
+ * Many files: Added copyright notice.
+
+1998-12-09 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Character/to.java: Added test to find
+ titlecase of titlecase character.
+
+1998-12-08 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/SimpleTestHarness.java (runtest): Now protected.
+ (done): Likewise.
+ (SimpleTestHarness): Likewise.
+
+1998-12-08 Anthony Green <green@cygnus.com>
+
+ * choose: JAVA2 and JDK1.2 are synonymous.
+
+1998-12-08 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/reflect/Modifier/toString.java: New file.
+
+1998-12-07 Tom Tromey <tromey@cygnus.com>
+
+ Modified version of patch from Godmar Back:
+ * gnu/testlet/java/beans/IntrospectorTest.java (tryone): Split
+ `check' call into 3 calls, and use 2-argument form. Pass caught
+ exception to `debug' method of harness.
+ * gnu/testlet/TestHarness.java (verbose, debug): New methods.
+ (check): Call `debug' with result and expected on failure.
+ * gnu/testlet/SimpleTestHarness.java (debug): New instance
+ variable.
+ (verbose): New methods.
+ (debug): Likewise.
+ (runtest): Call `debug' on exceptions.
+ (main): Accept `-debug' on command line.
+ (SimpleTestHarness): Added verbose and debug arguments.
+
+ From Godmar Back:
+ * Makefile.in: Rebuilt.
+ * Makefile.am (check-local): Pass TESTFLAGS to SimpleTestHarness.
+ (TESTFLAGS): New macro.
+
+1998-12-07 Anthony Green <green@cygnus.com>
+
+ * README, gnu/testlet/java/beans/DescriptorTest.java,
+ gnu/testlet/java/beans/IntrospectorTest.java,
+ gnu/testlet/java/lang/Boolean/equals_Boolean.java,
+ gnu/testlet/java/lang/Boolean/get.java,
+ gnu/testlet/java/lang/Boolean/hashcode_Boolean.java,
+ gnu/testlet/java/lang/Boolean/new_Boolean.java,
+ gnu/testlet/java/lang/Boolean/value.java,
+ gnu/testlet/java/lang/Byte/new_Byte.java,
+ gnu/testlet/java/lang/Character/classify.java,
+ gnu/testlet/java/lang/Character/classify12.java,
+ gnu/testlet/java/lang/Character/consts.java,
+ gnu/testlet/java/lang/Character/digit.java,
+ gnu/testlet/java/lang/Character/equals_Character.java,
+ gnu/testlet/java/lang/Character/forDigit.java,
+ gnu/testlet/java/lang/Character/getNumericValue.java,
+ gnu/testlet/java/lang/Character/getType.java,
+ gnu/testlet/java/lang/Character/getType12.java,
+ gnu/testlet/java/lang/Character/hash.java,
+ gnu/testlet/java/lang/Character/to.java,
+ gnu/testlet/java/lang/Integer/getInteger.java,
+ gnu/testlet/java/lang/Integer/new_Integer.java,
+ gnu/testlet/java/lang/Long/getLong.java,
+ gnu/testlet/java/lang/Long/new_Long.java,
+ gnu/testlet/java/lang/Short/hash.java,
+ gnu/testlet/java/lang/String/charAt.java,
+ gnu/testlet/java/lang/String/compareTo.java,
+ gnu/testlet/java/lang/String/decode.java,
+ gnu/testlet/java/lang/String/hash.java,
+ gnu/testlet/java/lang/String/indexOf.java,
+ gnu/testlet/java/lang/String/new_String.java,
+ gnu/testlet/java/lang/String/startsWith.java,
+ gnu/testlet/java/lang/String/substring.java,
+ gnu/testlet/java/lang/String/to.java,
+ gnu/testlet/java/lang/System/arraycopy.java,
+ gnu/testlet/java/util/Hashtable/basic.java,
+ gnu/testlet/java/util/Random/basic.java: Remove constructors.
+ Update README. These are not necessary.
+
+1998-12-07 Andrew Haley <aph@cygnus.co.uk>
+
+ * gnu/testlet/java/lang/Float/new_Float.java: new file.
+ gnu/testlet/java/lang/Double/new_Double.java: string conversion
+ tests added.
+
+1998-12-06 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/util/ResourceBundle/getBundle.java: Add null
+ pointer tests.
+
+ * gnu/testlet/SimpleTestHarness.java: Add more descriptive
+ uncaught exception message.
+
+1998-12-06 Anthony Green <green@cygnus.com>
+
+ * ResourceBundle/getBundle.java,
+ ResourceBundle/Resource4_en_CA.java,
+ ResourceBundle/Resource4_jp.java, ResourceBundle/Resource1.java,
+ ResourceBundle/Resource2_en.java, ResourceBundle/Resource4.java,
+ ResourceBundle/Resource3_bo.java,
+ ResourceBundle/Resource4_jp_JA_WIN_95.java,
+ ResourceBundle/Resource4_jp_JA_WIN.java,
+ ResourceBundle/Resource4_jp_JA.java,
+ ResourceBundle/Resource5_en.java, ResourceBundle/Resource4_en.java,
+ ResourceBundle/Resource5_en_CA.java, ResourceBundle/Resource5.java,
+ ResourceBundle/Resource5_jp.java,
+ ResourceBundle/Resource5_jp_JA.java,
+ ResourceBundle/Resource5_jp_JA_WIN.java,
+ ResourceBundle/Resource6_en.java,
+ ResourceBundle/Resource6_en_CA.java, ResourceBundle/Resource6.java,
+ ResourceBundle/Resource6_jp.java,
+ ResourceBundle/Resource6_jp_JA.java,
+ ResourceBundle/Resource7_en.java,
+ ResourceBundle/Resource7_en_CA.java, ResourceBundle/Resource7.java,
+ ResourceBundle/Resource7_jp.java, ResourceBundle/Resource8_en.java,
+ ResourceBundle/Resource8_en_CA.java, ResourceBundle/Resource8.java,
+ ResourceBundle/Resource9_en.java,
+ ResourceBundle/Resource9_en_CA.java,
+ ResourceBundle/Resource10_en.java: New files.
+
+1998-12-05 Anthony Green <green@cygnus.com>
+
+ * choose: Add support for "Uses" tag.
+ * README: Updated to mention Uses.
+
+1998-12-04 Tom Tromey <tromey@cygnus.com>
+
+ * choose: Allow tag file to appear in build directory.
+
+ * gnu/testlet/SimpleTestHarness.java: Removed erroneous comment.
+
+ * gnu/testlet/SimpleTestHarness.java (runtest): Only (and always)
+ print exception information if verbose.
+ (main): Allow `-verbose' option to be used to set verbose flag.
+
+1998-12-04 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/SimpleTestHarness.java: Describe uncaught exception.
+
+1998-12-04 Tom Tromey <tromey@cygnus.com>
+
+ * choose: Default tags are `JDK1.0 JDK1.1'.
+
+1998-12-03 Tom Tromey <tromey@cygnus.com>
+
+ * choose: `continue' if file excluded by file tests.
+
+ * gnu/testlet/java/lang/Character/classify.java (test): Call
+ checkPoint where appropriate.
+
+ * gnu/testlet/SimpleTestHarness.java (last_check): New instance
+ variable.
+ (checkPoint): New method.
+ (runtest): Call checkPoint.
+ (check): Use last_check.
+ * gnu/testlet/TestHarness.java (checkPoint): New method.
+
+ * choose: Process all file exclusions and inclusions in order.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (check-local): Pass srcdir to SimpleTestHarness.
+ * gnu/testlet/SimpleTestHarness.java (srcdir): New instance
+ variable.
+ (SimpleTestHarness): Added `srcdir' argument.
+ (main): Assume args[0] is name of source directory.
+ (getSourceDirectory): New method.
+ (runtest): Surround test call in a `try'.
+ * gnu/testlet/TestHarness.java (getSourceDirectory): New method.
+
+1998-12-02 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/beans/IntrospectorTest.java: Don't mention
+ libjava tag.
+ (tryone): Renamed from `try' (duh).
+ (test): Fixed all calls to tryone to pass in test harness.
+ * gnu/testlet/java/beans/DescriptorTest.java: Don't mention
+ libjava tag.
+ (test): Removed test that depends on class from Classpath.
+
+ * choose: Recognize `!java.' as file exclusion. Implement file
+ exclusion. Read file mauve-TAG if it exists. Don't hard-code
+ information about `libjava' tag.
+
+ * choose: Added missing `;;'.
+
+ * gnu/testlet/java/beans/DescriptorTest.java: New file, adapted
+ from Classpath.
+ * gnu/testlet/java/beans/IntrospectorTest.java: New file, adapted
+ from Classpath.
+
+ * choose: Recognize `libjava' tag.
+
+1998-12-01 Anthony Green <green@cygnus.com>
+
+ * gnu/testlet/java/lang/Double/new_Double.java: New file.
+ * gnu/testlet/java/lang/Math/rint.java: New file.
+
+1998-12-01 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/Random/basic.java: Added tag line.
+ * gnu/testlet/java/util/Hashtable/basic.java: Added tag line.
+ * gnu/testlet/java/lang/Long/new_Long.java: Added tag line.
+ * gnu/testlet/java/lang/Long/getLong.java: Added tag line.
+ * gnu/testlet/java/lang/String/to.java: Added tag line.
+ * gnu/testlet/java/lang/String/substring.java: Added tag line.
+ * gnu/testlet/java/lang/String/startsWith.java: Added tag line.
+ * gnu/testlet/java/lang/String/new_String.java: Added tag line.
+ * gnu/testlet/java/lang/String/indexOf.java: Added tag line.
+ * gnu/testlet/java/lang/String/decode.java: Added tag line.
+ * gnu/testlet/java/lang/String/compareTo.java: Added tag line.
+ * gnu/testlet/java/lang/String/charAt.java: Added tag line.
+ * gnu/testlet/java/lang/Short/hash.java: Added tag line.
+ * gnu/testlet/java/lang/Integer/new_Integer.java: Added tag line.
+ * gnu/testlet/java/lang/Integer/getInteger.java: Added tag line.
+ * gnu/testlet/java/lang/System/arraycopy.java: Added tag line.
+ * gnu/testlet/java/lang/Byte/new_Byte.java: Updated tag line.
+ * gnu/testlet/java/lang/Character/to.java: Added tag line.
+ * gnu/testlet/java/lang/Character/hash.java: Added tag line.
+ * gnu/testlet/java/lang/Character/getType.java: Updated tag line.
+ * gnu/testlet/java/lang/Character/getNumericValue.java: Added tag
+ line.
+ * gnu/testlet/java/lang/Character/forDigit.java: Added tag line.
+ * gnu/testlet/java/lang/Character/equals_Character.java: Added tag
+ line.
+ * gnu/testlet/java/lang/Character/digit.java: Added tag line.
+ * gnu/testlet/java/lang/Character/consts.java: Added tag line.
+ * gnu/testlet/java/lang/Character/classify.java: Updated tag
+ line.
+ * gnu/testlet/java/lang/Boolean/value.java: Updated tag line.
+ * gnu/testlet/java/lang/Boolean/new_Boolean.java: Updated tag
+ line.
+ * gnu/testlet/java/lang/Boolean/hashcode_Boolean.java: Updated tag
+ line.
+ * gnu/testlet/java/lang/Boolean/get.java: Updated tag line.
+ * gnu/testlet/java/lang/Boolean/equals_Boolean.java: Added tag
+ line.
+
+ * choose: Changed tag-handling scheme.
+
+ * choose: Explicitly generate dependencies for SimpleTestHarness.
+ * Makefile.in: Rebuilt.
+ * Makefile.am: Use `include', not `-include'.
+ (choices): Only let .save-keys override creation if `choices' file
+ exists.
+ (java_files): Don't define with `:='.
+ (class_files): Likewise.
+ (javao_files): Likewise.
+ ($(javao_files)): New target.
+ (.class.o): Removed.
+
+1998-11-30 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Character/getType12.java: New file.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am: Removed now-incorrect comment.
+ Include `choices' file.
+ (classes.stamp): Depend on and use CHOICES macro.
+ (java_files): Use CHOICES.
+ (check-local): Depend on CHOICES.
+
+ * choose: More output when verbose. Only tags starting with
+ `java.' are considered to be class selectors. Define macro in
+ choices file.
+
+ * gnu/testlet/java/lang/Character/getType.java: Added Tags line
+ * gnu/testlet/java/lang/Character/classify12.java: New file.
+ * gnu/testlet/java/lang/Character/classify.java: Added Tags line;
+ removed JDK1.2-specific test.
+
+ * README: Updated to mention keys.
+ * Makefile.in: Rebuilt.
+ * Makefile.am (recheck): Actually run `check' target.
+ (BUILT_SOURCES): Removed.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (harness_files): New macro.
+ (java_files): Now conditional.
+ (KEYS): New macro.
+ (choices): New target.
+ (classes.stamp): Depend on `choices'.
+ (test_files): Removed.
+ (test_names): Likewise.
+ (check-local): Use `classes' file to determine classes to run.
+ (EXTRA_SimpleTestHarness_SOURCES): Removed.
+ (class_files): Use `choices' file.
+ (FORCE): New target.
+ (recheck): New target.
+ * gnu/testlet/SimpleTestHarness.java (main): Read classes to
+ process from stdin.
+ * choose: New file.
+
+1998-11-25 Tom Tromey <tromey@cygnus.com>
+
+ * README: New file.
+
+1998-11-24 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/util/Random/basic.java: New file.
+ * gnu/testlet/java/util/Hashtable/basic.java: New file.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (CLEANFILES): Added classes.stamp; define in no-gcj
+ case.
+ (check-local): Depend on classes.stamp, not $(check_PROGRAMS).
+
+ * gnu/testlet/java/lang/Long/new_Long.java: New file.
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (check-local): Use correct name for
+ SimpleTestHarness class.
+
+ * configure: Rebuilt.
+ * configure.in: Recognize --with-gcj.
+
+ * gnu/testlet/java/lang/Long/getLong.java: Added import for
+ Properties; fixed typo.
+
+ * gnu/testlet/SimpleTestHarness.java (done): `total', not `count'
+ is total number of tests.
+
+ * gnu/testlet/java/lang/Long/getLong.java: New file.
+
+ * configure, Makefile.in: Rebuilt.
+ * configure.in (CC): Don't set.
+ (GCJ): Subst.
+ * Makefile.am (.class.o): Use $(GCJ), not $(CC).
+ (SimpleTestHarness_LINK): New macro.
+
+ * gnu/testlet/java/lang/System/arraycopy.java: New file.
+ * gnu/testlet/java/lang/String/indexOf.java: New file.
+ * gnu/testlet/java/lang/String/startsWith.java: New file.
+ * gnu/testlet/java/lang/String/charAt.java: New file.
+ * gnu/testlet/java/lang/String/compareTo.java: New file.
+ * gnu/testlet/java/lang/String/substring.java: New file.
+ * gnu/testlet/java/lang/String/to.java: New file.
+ * gnu/testlet/java/lang/String/decode.java: New file.
+ * gnu/testlet/java/lang/String/hash.java: New file.
+ * gnu/testlet/java/lang/Short/hash.java: New file.
+ * gnu/testlet/java/lang/Integer/getInteger.java: New file.
+ * gnu/testlet/java/lang/Integer/new_Integer.java: New file.
+ * gnu/testlet/java/lang/Character/to.java: New file.
+ * gnu/testlet/java/lang/Character/classify.java: New file.
+ * gnu/testlet/java/lang/Character/getType.java: New file.
+ * gnu/testlet/java/lang/Character/getNumericValue.java: New file.
+ * gnu/testlet/java/lang/Character/forDigit.java: New file.
+ * gnu/testlet/java/lang/Character/hash.java: New file.
+ * gnu/testlet/java/lang/Character/equals_Character.java: New file.
+ * gnu/testlet/java/lang/Byte/new_Byte.java: New file.
+ * gnu/testlet/java/lang/Boolean/get.java: New file.
+ * gnu/testlet/java/lang/Boolean/value.java: New file.
+
+ * gnu/testlet/Testlet.java (description): Removed.
+ * gnu/testlet/SimpleTestHarness.java (runtest): Don't call
+ description method on test.
+
+1998-11-23 Tom Tromey <tromey@cygnus.com>
+
+ * gnu/testlet/java/lang/Character/digit.java: New file.
+ * gnu/testlet/java/lang/Boolean/hashcode_Boolean.java: New file.
+ * gnu/testlet/java/lang/Character/consts.java: New file.
+ * gnu/testlet/java/lang/Boolean/equals_Boolean.java: New file.
+
+ * configure, Makefile.in: Rebuilt.
+ * configure.in: Create USE_GCJ conditional.
+ * aclocal.m4: New file.
+ * Makefile.am (check_DATA): New macro.
+ (class_files): New macro.
+ (BUILT_SOURCES): Likewise.
+ (SimpleTestHarness_SOURCES): Likewise.
+ (SimpleTestHarness_DEPENDENCIES): Likewise.
+ (SimpleTestHarness_LDADD): Likewise.
+ (SUFFIXES): Likewise.
+ (.class.o): New target.
+ (SimpleTestHarness_LDFLAGS): New macro.
+ (MOSTLYCLEANFILES): Likewise.
+ (CLEANFILES): Likewise.
+ (EXTRA_SimpleTestHarness_SOURCES): Likewise.
+ (JCFLAGS): Set to -g.
+ (JC1FLAGS): New macro.
+ (test_files): Likewise.
+ (JAVAC): Removed.
+ (check-local): New target.
+
+ * gnu/testlet/java/lang/Boolean/new_Boolean.java: Updated to
+ follow Testlet.
+ * gnu/testlet/SimpleTestHarness.java: New file.
+ * gnu/testlet/TestHarness.java: New file.
+ * gnu/testlet/Testlet.java (Testlet): Now an interface. Removed
+ some methods.
+
+Fri Nov 6 09:06:10 1998 Anthony Green <green@hoser.cygnus.com>
+
+ * Makefile.am, Makefile.in, configure, configure.in,
+ install-sh, missing, mkinstalldirs, gnu/testlet/Testlet.java,
+ gnu/testlet/java/lang/Boolean/new_Boolean.java: Imported.
+
diff --git a/Compat2.tmp b/Compat2.tmp
new file mode 100644
index 00000000..141fdc07
--- /dev/null
+++ b/Compat2.tmp
Binary files differ
diff --git a/Harness.java b/Harness.java
new file mode 100644
index 00000000..3f94a30d
--- /dev/null
+++ b/Harness.java
@@ -0,0 +1,1881 @@
+// Copyright (c) 2006, 2007, 2012 Red Hat, Inc.
+// Written by Anthony Balkissoon <abalkiss@redhat.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+/*
+ * See the README file for information on how to use this
+ * file and what it is designed to do.
+ */
+
+import gnu.testlet.config;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+
+/**
+ * The Mauve Harness. This class parses command line input and standard
+ * input for tests to run and runs them in a separate process. It detects
+ * when that separate process is hung and restarts the process.
+ * @author Anthony Balkissoon abalkiss at redhat dot com
+ *
+ */
+public class Harness
+{
+ // The compile method for the embedded ecj
+ private static Method ecjMethod = null;
+
+ // The string that will be passed to the compiler containing the options
+ // and the file(s) to compile
+ private static String compileString = null;
+
+ // The options to pass to the compiler, needs to be augmented by the
+ // bootclasspath, which should be the classpath installation directory
+ private static String compileStringBase = "-proceedOnError -nowarn -1.5 -d " + config.builddir;
+
+ // Options specified in a test which is passed to a compiler
+ private static String compileOptions = "";
+
+ // The writers for ecj's out and err streams.
+ private static PrintWriter ecjWriterOut = null;
+ private static PrintWriter ecjWriterErr = null;
+
+ // The name of the most recent test that failed to compile.
+ private static String lastFailingCompile = "";
+
+ // The number of compile fails in the current folder.
+ private static int numCompileFailsInFolder = 0;
+
+ // The constructor for the embedded ecj
+ private static Constructor<?> ecjConstructor = null;
+
+ // The classpath installation location, used for the compiler's bootcalsspath
+ private static String classpathInstallDir = null;
+
+ // The location of the eclipse-ecj.jar file
+ private static String ecjJarLocation = null;
+
+ // How long a test may run before it is considered hung
+ private static long runner_timeout = 60000;
+
+ // The command to invoke for the VM on which we will run the tests.
+ private static String vmCommand = null;
+
+ // A command that is prepended to the test commandline (e.g. strace, gdb, time)
+ private static String vmPrefix = null;
+
+ // Arguments to be passed to the VM
+ private static String vmArgs = "";
+
+ // Whether or not we should recurse into directories when a folder is
+ // specified to be tested
+ private static boolean recursion = true;
+
+ // Whether we should run in noisy mode
+ private static boolean verbose = false;
+
+ // Whether we should display one-line summaries for passing tests
+ private static boolean showPasses = false;
+
+ // Whether we should compile tests before running them
+ private static boolean compileTests = true;
+
+ // The total number of tests run
+ private static int total_tests = 0;
+
+ // The total number of failing tests (not harness.check() calls)
+ private static int total_test_fails = 0;
+
+ // The total number of harness.check() calls that fail
+ private static int total_check_fails = 0;
+
+ // All the tests that were specified on the command line rather than
+ // through standard input or an input file
+ private static List<String> commandLineTests = null;
+
+ // The input file (possibly) supplied by the user
+ private static String inputFile = null;
+
+ // All the tests that were explicitly excluded via the -exclude option
+ private static List<String> excludeTests = new ArrayList<String>();
+
+ // A way to speak to the runner process
+ private static PrintWriter runner_out = null;
+
+ // A way to listen to the runner process
+ private static BufferedReader runner_in = null;
+
+ // A thread listening to the error stream of the RunnerProcess
+ private static ErrorStreamPrinter runner_esp = null;
+
+ // A flag indicating whether or not we shoudl restart the error stream
+ // printer when we enter the runTest method
+ private static boolean restartESP = false;
+
+ // The process that will run the tests for us
+ private static Process runnerProcess = null;
+
+ // A watcher to determine if runnerProcess is hung
+ private static TimeoutWatcher runner_watcher = null;
+
+ // The arguments used when this Harness was invoked, we use this to create an
+ // appropriate RunnerProcess
+ private static String[] harnessArgs = null;
+
+ // A convenience String for ensuring tests all have the same name format
+ private static final String gnuTestletHeader1 = "gnu" + File.separatorChar
+ + "testlet";
+
+ // A convenience String for ensuring tests all have the same name format
+ private static final String gnuTestletHeader2 = gnuTestletHeader1
+ + File.separatorChar;
+
+ // The usual name of the CVS project containing this resource surrounded
+ // with file-separator strings
+ private static final String MAUVE = File.separator
+ + System.getenv("MAUVE_PROJECT_NAME")
+ + File.separator;
+ // When a folder is selected from Eclipse this is what usually gets
+ // prepended to the folder name
+ private static final String MAUVE_GNU_TESTLET = MAUVE + gnuTestletHeader2;
+
+ /**
+ * The main method for the Harness. Parses through the compile line
+ * options and sets up the internals, sets up the compiler options,
+ * and then runs all the tests. Finally, prints out a summary
+ * of the test run.
+ *
+ * @param args the compile line options
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception
+ {
+ // Create a new Harness and set it up based on args.
+ Harness harness = new Harness();
+ harness.setupHarness(args);
+
+ // Start the runner process and run all the tests.
+ initProcess(args);
+ runAllTests();
+
+ // If more than one test was run, print a summary.
+ if (total_tests > 0)
+ System.out.println("\nTEST RESULTS:\n" + total_test_fails + " of "
+ + total_tests + " tests failed. " + total_check_fails
+ + " total calls to harness.check() failed.");
+ else
+ {
+ // If no tests were run, try to help the user out by suggesting what
+ // the problem might have been.
+ System.out.println ("No tests were run. Possible reasons " +
+ "may be listed below.");
+ if (compileTests == false)
+ {
+ System.out.println("Autocompilation is not enabled, so the " +
+ "tests need to be compiled manually. You can enable " +
+ "autocompilation via configure, see the README for more " +
+ "info.\n");
+ }
+ else if (recursion == false)
+ {
+ System.out.println ("-norecursion was specified, did you " +
+ "specify a folder that had no tests in it?\n");
+ }
+ else if (excludeTests != null && excludeTests.size() > 0)
+ {
+ System.out.println ("Some tests were excluded.\nDid you use " +
+ "-exclude and exclude all tests (or all specified " +
+ "tests)? \n");
+ }
+ else
+ {
+ System.out.println ("Did you specify a test that " +
+ "doesn't exist or a folder that contains " +
+ "no tests? \n");
+ }
+ }
+ harness.finalize();
+ System.exit(total_test_fails > 0 ? 1 : 0);
+ }
+
+ /**
+ * Sets up the harness internals before the tests are run. Parses through
+ * the compile line options and then sets up the compiler options.
+ * @param args
+ * @throws Exception
+ */
+ private void setupHarness(String[] args) throws Exception
+ {
+ // Save the arguments, we'll pass them to the RunnerProcess so it can
+ // set up its internal properties.
+ harnessArgs = args;
+
+ // Find out from configuration whether auto-compilation is enabled or not.
+ // This can be changed via the options to Harness (-compile true or
+ // -compile false).
+ compileTests = config.autoCompile.equals("yes");
+
+ // Find out from configuration which VM we're testing. This can be changed
+ // via the options to Harness (-vm VM_TO_TEST).
+ vmCommand = config.testJava;
+
+ // Now parse all the options to Harness and set the appropriate internal
+ // properties.
+ for (int i = 0; i < args.length; i++)
+ {
+ if (args[i].equals("-norecursion"))
+ recursion = false;
+ else if (args[i].equals("-verbose"))
+ verbose = true;
+ else if (args[i].equals("-showpasses"))
+ showPasses = true;
+ else if (args[i].equals("-compile"))
+ {
+ // User wants to use an input file to specify which tests to run.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path after '-file'. Exit");
+ if (args[i].equals("yes") || args[i].equals("true"))
+ compileTests = true;
+ else if (args[i].equals("no") || args[i].equals("false"))
+ compileTests = false;
+ }
+ else if (args[i].equals("-help") || args[i].equals("--help")
+ || args[i].equals("-h"))
+ printHelpMessage();
+ else if (args[i].equalsIgnoreCase("-file"))
+ {
+ // User wants to use an input file to specify which tests to run.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path after '-file'. Exit");
+ inputFile = args[i];
+ }
+ else if (args[i].equalsIgnoreCase("-bootclasspath"))
+ {
+ // User is specifying the classpath installation folder to use
+ // as the compiler's bootclasspath.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path " +
+ "after '-bootclasspath'. Exit");
+ classpathInstallDir = args[i];
+ }
+ else if (args[i].equalsIgnoreCase("-vmarg"))
+ {
+ // User is specifying arguments to be passed to the VM of the
+ // RunnerProcess.
+ if (++i >= args.length)
+ throw new RuntimeException("No argument after -vmarg. Exit");
+ {
+ vmArgs += " " + args[i];
+ }
+ }
+ else if (args[i].equalsIgnoreCase("-ecj-jar"))
+ {
+ // User is specifying the location of the eclipse-ecj.jar file
+ // to use for compilation.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path " +
+ "after '-ecj-jar'. Exit");
+ ecjJarLocation = args[i];
+ }
+ else if (args[i].equals("-exclude"))
+ {
+ // User wants to exclude some tests from the run.
+ if (++i >= args.length)
+ throw new RuntimeException ("No test or directory " +
+ "given after '-exclude'. Exit");
+ excludeTests.add(startingFormat(args[i]));
+ }
+ else if (args[i].equals("-vm"))
+ {
+ // User wants to exclude some tests from the run.
+ if (++i >= args.length)
+ throw new RuntimeException ("No VMPATH" +
+ "given after '-vm'. Exit");
+ vmCommand = args[i];
+ }
+ else if (args[i].equals("-vmprefix"))
+ {
+ // User wants to prepend a certain command.
+ if (++i >= args.length)
+ throw new RuntimeException ("No file" +
+ "given after '-vmprefix'. Exit");
+ vmPrefix = args[i] + " ";
+ }
+ else if (args[i].equals("-timeout"))
+ {
+ // User wants to change the timeout value.
+ if (++i >= args.length)
+ throw new RuntimeException ("No timeout value given " +
+ "after '-timeout'. Exit");
+ runner_timeout = Long.parseLong(args[i]);
+ }
+ else if (args[i].equals("-xmlout"))
+ {
+ // User wants output in an xml file
+ if (++i >= args.length)
+ throw new RuntimeException ("No file " +
+ "given after '-xmlout'. Exit");
+ // the filename is used directly from args
+ }
+ else if (args[i].equals("-autoxml"))
+ {
+ // Path to store xml files
+ if (++i >= args.length)
+ throw new RuntimeException ("No path " +
+ "specified after '-autoxml'. Exit");
+ // the dirname is used directly from args
+ }
+ else if (args[i].charAt(0) == '-')
+ {
+ // One of the ignored options (handled by RunnerProcess)
+ // such as -debug. Do nothing here but don't let it fall
+ // through to the next branch which would consider it a
+ // test or folder name
+ }
+ else if (args[i] != null)
+ {
+ // This is a command-line (not standard input) test or directory.
+ if (commandLineTests == null)
+ commandLineTests = new ArrayList<String>();
+ commandLineTests.add(startingFormat(args[i]));
+ }
+ }
+
+ // If ecj-jar wasn't specified, use the configuration value.
+ if (ecjJarLocation == null)
+ ecjJarLocation = config.ecjJar;
+
+ // If auto-compilation is enabled, verify that the ecj-jar location is
+ // valid.
+ if (compileTests)
+ {
+ if (ecjJarLocation == null || ecjJarLocation.equals(""))
+ compileTests = false;
+ else
+ {
+ File testECJ = new File(ecjJarLocation);
+ if (!testECJ.exists())
+ compileTests = false;
+ }
+ }
+
+ // If auto-compilation is enabled and the ecj-jar location was fine,
+ // set up the compiler options and PrintWriters
+ if (compileTests)
+ setupCompiler();
+
+ // If vmCommand is "java" it is likely that it defaulted to this value,
+ // so it wasn't set in configure (--with-vm) and it wasn't set
+ // on the command line (-vm TESTVM), so we should print a warning.
+ if (vmCommand.equals("java"))
+ System.out.println("WARNING: running tests on 'java'. To set the " +
+ "test VM, use --with-vm when\nconfiguring " +
+ "or specify -vm when running the Harness.\n");
+ }
+
+ /**
+ * Sets up the compiler by reflection, sets up the compiler options,
+ * and the PrintWriters to get error messages from the compiler.
+ *
+ * @throws Exception
+ */
+ private void setupCompiler() throws Exception
+ {
+ String classname = "org.eclipse.jdt.internal.compiler.batch.Main";
+ Class<?> klass = null;
+ try
+ {
+ klass = Class.forName(classname);
+ }
+ catch (ClassNotFoundException e)
+ {
+ File jar = new File(ecjJarLocation);
+ if (! jar.exists() || ! jar.canRead())
+ throw e;
+
+ ClassLoader loader = new URLClassLoader(new URL[] { jar.toURL() });
+ try
+ {
+ klass = loader.loadClass(classname);
+ }
+ catch (ClassNotFoundException f)
+ {
+ throw e;
+ }
+ }
+ // Set up the compiler and the PrintWriters for the compile errors.
+ ecjConstructor =
+ klass.getConstructor
+ (PrintWriter.class, PrintWriter.class, Boolean.TYPE);
+ ecjMethod =
+ klass.getMethod
+ ("compile", String.class, PrintWriter.class, PrintWriter.class );
+
+ ecjWriterErr = new CompilerErrorWriter(System.out);
+ ecjWriterOut = new PrintWriter(System.out);
+ // Set up the compiler options now that we know whether or not we are
+ // compiling.
+ compileStringBase += getClasspathInstallString();
+ }
+
+ /**
+ * Removes the config.srcdir + File.separatorChar from the start of
+ * a String.
+ * @param val the String
+ * @return the String with config.srcdir + File.separatorChar
+ * removed
+ */
+ private static String stripSourcePath(String val)
+ {
+ if (val.startsWith(config.srcdir + File.separatorChar)
+ || val.startsWith(config.srcdir.replace('/', '.') + "."))
+ val = val.substring(config.srcdir.length() + ".".length());
+ return val;
+ }
+
+ /**
+ * Removes the "gnu.testlet." from the start of a String.
+ * @param val the String
+ * @return the String with "gnu.testlet." removed
+ */
+ private static String stripPrefix(String val)
+ {
+ if (val.startsWith("gnu" + File.separatorChar + "testlet")
+ || val.startsWith("gnu.testlet."))
+ val = val.substring("gnu.testlet.".length());
+ return val;
+ }
+
+ /**
+ * Get the bootclasspath from the configuration so it can be added
+ * to the string passed to the compiler.
+ * @return the bootclasspath for the compiler, in String format
+ */
+ private static String getClasspathInstallString()
+ {
+ String temp = classpathInstallDir;
+
+ // If classpathInstallDir is null that means no bootclasspath was
+ // specified on the command line using -bootclasspath. In this case
+ // auto-detect the bootclasspath.
+ if (temp == null)
+ {
+ temp = getBootClassPath();
+
+ // If auto-detect returned null we cannot auto-detect the
+ // bootclasspath and we should try invoking the compiler without
+ // specifying the bootclasspath. Otherwise, we should add
+ // " -bootclasspath " followed by the detected path.
+ if (temp != null)
+ return " -bootclasspath " + temp;
+ return "";
+ }
+
+ // This section is for bootclasspath's specified with
+ // -bootclasspath or --with-bootclasspath (in configure), we need
+ // to add "/share/classpath/glibj.zip" onto the end and
+ // " -bootclasspath onto the start".
+ temp = " -bootclasspath " + temp;
+ if (!temp.endsWith(File.separator))
+ temp += File.separator;
+ temp += "share" + File.separator + "classpath";
+
+ // If (for some reason) there is no glibj.zip file in the specified
+ // folder, just use the folder as the bootclasspath, perhaps the folder
+ // contains an expanded view of the resources.
+ File f = new File (temp.substring(16) + File.separator + "glibj.zip");
+ if (f.exists())
+ temp += File.separator + "glibj.zip";
+ return temp;
+ }
+
+ /**
+ * Forks a process to run DetectBootclasspath on the VM that is
+ * being tested. This program detects the bootclasspath so we can use
+ * it for the compiler's bootclasspath.
+ * @return the bootclasspath as found, or null if none could be found.
+ */
+ private static String getBootClassPath()
+ {
+ try
+ {
+ String c = vmCommand + vmArgs + " Harness$DetectBootclasspath";
+ Process p = Runtime.getRuntime().exec(c);
+ BufferedReader br =
+ new BufferedReader
+ (new InputStreamReader(p.getInputStream()));
+ String bcpOutput = null;
+ while (true)
+ {
+ // This readLine() is a blocking call. This will hang if the
+ // bootclasspath finder hangs.
+ bcpOutput = br.readLine();
+ if (bcpOutput.equals("BCP_FINDER:can't_find_bcp_"))
+ {
+ // This means the auto-detection failed.
+ return null;
+ }
+ else if (bcpOutput.startsWith("BCP_FINDER:"))
+ {
+ return bcpOutput.substring(11);
+ }
+ else
+ System.out.println(bcpOutput);
+ }
+ }
+ catch (IOException ioe)
+ {
+ // Couldn't auto-fetch the bootclasspath.
+ return null;
+ }
+ }
+
+ /**
+ * This method takes a String and puts it into a consistent format so we can
+ * deal with all test names in the same way. It ensures that tests start with
+ * "gnu/testlet" and that '.' are replaced by the file separator character.
+ * It also strips the .java or .class extensions if they are present,
+ * and removes single trailing dots.
+ *
+ * @param val the input String
+ * @return the formatted String
+ */
+ private static String startingFormat(String val)
+ {
+ if (val != null)
+ {
+ if (val.endsWith(".class"))
+ val = val.substring(0, val.length() - 6);
+ if (val.endsWith(".java"))
+ val = val.substring(0, val.length() - 5);
+ val = val.replace('.', File.separatorChar);
+ if (val.endsWith("" + File.separatorChar))
+ val = val.substring(0, val.length() - 1);
+ if (val.startsWith(MAUVE_GNU_TESTLET))
+ val = val.substring(MAUVE.length());
+ else if (! val.startsWith(gnuTestletHeader1))
+ val = gnuTestletHeader2 + val;
+ }
+ return val;
+ }
+
+ /**
+ * This method prints a help screen to the console and then exits.
+ */
+ static void printHelpMessage()
+ {
+ String align = "\n ";
+ String message =
+ "This is the Mauve Harness. Usage:\n\n" +
+
+ " JAVA Harness <options> <testcase | folder>\n" +
+ " If no testcase or folder is given, all the tests will be run. \n" +
+
+ // Example invocation.
+ "\nExample: 'jamvm Harness -vm jamvm -showpasses javax.swing'\n" +
+ " will use jamvm (located in your path) to run all the tests in the\n" +
+ " gnu.testlet.javax.swing folder and will display PASSES\n" +
+ " as well as FAILS.\n\nOPTIONS:\n\n" +
+
+ // Test Run Options.
+ "Test Run Options:\n" +
+ " -vm [vmpath]: specify the vm on which to run the tests." +
+ "It is strongly recommended" + align + "that you use this option or " +
+ "use the --with-vm option when running" + align + "configure. " +
+ "See the README file for more details.\n" +
+ " -compile [yes|no]: specify whether or not to compile the " +
+ "tests before running them. This" + align + "overrides the configure" +
+ "option --disable-auto-compilation but requires an ecj jar" + align +
+ "to be in /usr/share/java/eclipse-ecj.jar or specified via the " +
+ "--with-ecj-jar" + align + "option to configure. See the README" +
+ " file for more details.\n" +
+ " -timeout [millis]: specifies a timeout value for the tests " +
+ "(default is 60000 milliseconds)" +
+
+ // Testcase Selection Options.
+ "\n\nTestcase Selection Options:\n" +
+ " -exclude [test|folder]: specifies a test or a folder to exclude " +
+ "from the run\n" +
+ " -norecursion: if a folder is specified to be run, don't " +
+ "run the tests in its subfolders\n" +
+ " -file [filename]: specifies a file that contains the names " +
+ "of tests to be run (one per line)\n" +
+ " -interactive: only run interactive tests, if not set, " +
+ "only run non-interactive tests\n" +
+ // Output Options.
+ "\n\nOutput Options:\n" +
+ " -showpasses: display passing tests as well as failing " +
+ "ones\n" +
+ " -hidecompilefails: hide errors from the compiler when " +
+ "tests fail to compile\n" +
+ " -noexceptions: suppress stack traces for uncaught " +
+ "exceptions\n" +
+ " -verbose: run in noisy mode, displaying extra " +
+ "information\n" +
+ " -debug: displays some extra information for " +
+ "failing tests that " +
+ "use the" + align + "harness.check(Object, Object) method\n" +
+ " -xmlout [filename]: specifies a file to use for xml output\n" +
+ " -autoxml [folder]: generate individual xml output, for each test case \n" +
+ "\nOther Options:\n" +
+ " -help: display this help message\n";
+ System.out.println(message);
+ System.exit(0);
+ }
+
+ protected void finalize()
+ {
+ //Clean up
+ try
+ {
+ runTest("_dump_data_");
+ runnerProcess.destroy();
+ runner_in.close();
+ runner_out.close();
+ }
+ catch (IOException e)
+ {
+ System.err.println("Could not close the interprocess pipes.");
+ System.exit(-1);
+ }
+ }
+
+ /**
+ * This method sets up our runner process - the process that actually
+ * runs the tests. This needs to be done once initially and also
+ * every time a test hangs.
+ * @param args the compile line options for Harness
+ */
+ private static void initProcess(String[] args)
+ {
+ StringBuffer sb = new StringBuffer(" RunnerProcess");
+ for (int i = 0; i < args.length; i++)
+ sb.append(" " + args[i]);
+
+ if (vmPrefix != null)
+ sb.insert(0, vmPrefix + vmCommand + vmArgs);
+ else
+ sb.insert(0, vmCommand + vmArgs);
+
+ try
+ {
+ // Exec the process and set up in/out communications with it.
+ runnerProcess = Runtime.getRuntime().exec(sb.toString());
+ runner_out = new PrintWriter(runnerProcess.getOutputStream(), true);
+ runner_in =
+ new BufferedReader
+ (new InputStreamReader(runnerProcess.getInputStream()));
+ runner_esp = new ErrorStreamPrinter(runnerProcess.getErrorStream());
+ InputPiperThread pipe = new InputPiperThread(System.in,
+ runnerProcess.getOutputStream());
+ pipe.start();
+ runner_esp.start();
+
+ }
+ catch (IOException e)
+ {
+ System.err.println("Problems invoking RunnerProcess: " + e);
+ System.exit(1);
+ }
+
+ // Create a timer to watch this new process. After confirming the
+ // RunnerProcess started properly, we create a new runner_watcher
+ // because it may be a while before we run the next test (due to
+ // preprocessing and compilation) and we don't want the runner_watcher
+ // to time out.
+ if (runner_watcher != null)
+ runner_watcher.stop();
+ runner_watcher = new TimeoutWatcher(runner_timeout, runnerProcess);
+ runTest("_confirm_startup_");
+ runner_watcher.stop();
+ runner_watcher = new TimeoutWatcher(runner_timeout, runnerProcess);
+ }
+
+ /**
+ * This method runs all the tests, both from the command line and from
+ * standard input. This is so the legacy method of running tests by
+ * echoing the classname and piping it to the Harness works, but so does
+ * a more natural "jamvm Harness <TESTNAME>".
+ */
+ private static void runAllTests()
+ {
+ // Run the commandLine tests. These were assembled into
+ // <code>commandLineTests</code> in the setupHarness method.
+ if (commandLineTests != null)
+ {
+ for (int i = 0; i < commandLineTests.size(); i++)
+ {
+ String cname = null;
+ cname = commandLineTests.get(i);
+ if (cname == null)
+ break;
+ processTest(cname);
+ }
+ }
+
+
+ // Now run the standard input tests. First we determine if the input is
+ // coming from a file (if the -file option was used) or from stdin.
+ BufferedReader r = null;
+ if (inputFile != null)
+ // The -file option was used, so set up our BufferedReader to use the
+ // input file.
+ try
+ {
+ r = new BufferedReader(new FileReader(inputFile));
+ }
+ catch (FileNotFoundException x)
+ {
+ throw new
+ RuntimeException("Cannot find \"" + inputFile + "\". Exit");
+ }
+ else
+ {
+ // The -file option was not used, so use stdin instead.
+ r = new BufferedReader(new InputStreamReader(System.in));
+ try
+ {
+ if (! r.ready())
+ {
+ // If no tests were specified to be run, we will run all the
+ // tests (except those explicitly excluded).
+ if (commandLineTests == null || commandLineTests.size() == 0)
+ processTest("gnu/testlet");
+ return;
+ }
+ }
+ catch (IOException ioe)
+ {
+ }
+ }
+
+ // Now process all the tests specified in the file or from stdin.
+ while (true)
+ {
+ String cname = null;
+ try
+ {
+ cname = r.readLine();
+ if (cname == null)
+ break;
+ }
+ catch (IOException x)
+ {
+ // Nothing.
+ }
+ processTest(startingFormat(cname));
+ }
+ }
+
+ /**
+ * This method runs a single test in a new Harness and increments the
+ * total tests run and total failures, if the test fails. Prints
+ * PASS and adds to the report, if the appropriate options are enabled.
+ * @param testName the name of the test
+ */
+ private static void runTest(String testName)
+ {
+ String tn = stripPrefix(testName.replace(File.separatorChar, '.'));
+ String outputFromTest;
+ boolean invalidTest = false;
+ int temp;
+
+ // Restart the error stream printer if necessary
+ if (restartESP)
+ {
+ restartESP = false;
+ runner_esp = new ErrorStreamPrinter(runnerProcess.getErrorStream());
+ }
+
+ // (Re)start the timeout watcher
+ runner_watcher.reset();
+
+ // Tell the RunnerProcess to run test with name testName
+ runner_out.println(testName);
+
+ while (true)
+ {
+ // Continue getting output from the RunnerProcess until it
+ // signals the test completed or was invalid, or until the
+ // TimeoutWatcher stops the RunnerProcess forcefully.
+ try
+ {
+ outputFromTest = runner_in.readLine();
+ if (outputFromTest == null)
+ {
+ // This means the test hung.
+ initProcess(harnessArgs);
+ temp = - 1;
+ break;
+ }
+ else if (outputFromTest.startsWith("RunnerProcess:"))
+ {
+ invalidTest = false;
+ // This means the RunnerProcess has sent us back some
+ // information. This could be telling us that a check() call
+ // was made and we should reset the timer, or that the
+ // test passed, or failed, or that it wasn't a test.
+ if (outputFromTest.endsWith("restart-timer"))
+ runner_watcher.reset();
+ else if (outputFromTest.endsWith("pass"))
+ {
+ temp = 0;
+ break;
+ }
+ else if (outputFromTest.indexOf("fail-loading") != -1)
+ {
+ temp = 1;
+ System.out.println(outputFromTest.substring(27));
+ }
+ else if (outputFromTest.indexOf("fail-") != - 1)
+ {
+ total_check_fails += Integer.parseInt(outputFromTest.substring(19));
+ temp = 1;
+ break;
+ }
+ else if (outputFromTest.endsWith("not-a-test"))
+ {
+ // Temporarily decrease the total number of tests,
+ // because it will be incremented later even
+ // though the test was not a real test.
+ invalidTest = true;
+ total_tests--;
+ temp = 0;
+ break;
+ }
+ }
+ else if (outputFromTest.equals("_startup_okay_")
+ || outputFromTest.equals("_data_dump_okay_"))
+ return;
+ else
+ // This means it was just output from the test, like a
+ // System.out.println within the test itself, we should
+ // pass these on to stdout.
+ System.out.println(outputFromTest);
+ }
+ catch (IOException e)
+ {
+ initProcess(harnessArgs);
+ temp = -1;
+ break;
+ }
+ }
+ if (temp == -1)
+ {
+ // This means the watcher thread had to stop the process
+ // from running. So this is a fail.
+ if (verbose)
+ System.out.println(" FAIL: timed out. \nTEST FAILED: timeout " +
+ tn);
+ else
+ System.out.println("FAIL: " + tn
+ + "\n Test timed out. Use -timeout [millis] " +
+ "option to change the timeout value.");
+
+ total_test_fails++;
+ }
+ else
+ total_test_fails += temp;
+ total_tests ++;
+
+ // If the test passed and the user wants to know about passes, tell them.
+ if (showPasses && temp == 0 && !verbose && !invalidTest)
+ System.out.println ("PASS: "+tn);
+ }
+
+ /**
+ * This method handles the input, whether it is a single test or a folder
+ * and calls runTest on the appropriate .class files. Will also compile
+ * tests that haven't been compiled or that have been changed since last
+ * being compiled.
+ * @param cname the input file name - may be a directory
+ */
+ private static void processTest(String cname)
+ {
+ if (cname.equals("CVS") || cname.endsWith(File.separatorChar + "CVS")
+ || excludeTests.contains(cname)
+ || (cname.lastIndexOf("$") > cname.lastIndexOf(File.separator)))
+ return;
+
+ // If processSingleTest returns -1 then this test was explicitly
+ // excluded with the -exclude option, and if it returns 0 then
+ // the test was successfully run and we should stop here. Only
+ // if it returns 1 should we try to process cname as a directory.
+ if (processSingleTest(cname) == 1)
+ processFolder(cname);
+ }
+
+ /**
+ * Checks if the corresponding classfile for the given test needs to
+ * be compiled, or exists and needs to be updated.
+ *
+ * @param test name or path of the test
+ * @return true if the classfile needs to be compiled
+ */
+ private static boolean testNeedsToBeCompiled(String testname)
+ {
+ String filename = stripSourcePath(testname);
+
+ if (filename.endsWith(".java"))
+ filename =
+ filename.substring(0, filename.length() - ".java".length());
+
+ String sourcefile =
+ config.srcdir + File.separatorChar + filename + ".java";
+ String classfile =
+ config.builddir + File.separatorChar + filename + ".class";
+
+ File sf = new File(sourcefile);
+ File cf = new File(classfile);
+
+ if (!sf.exists())
+ throw new RuntimeException(sourcefile + " does not exists!");
+
+ if (!cf.exists())
+ return true;
+
+ return (sf.lastModified() > cf.lastModified());
+ }
+
+ /**
+ * Parse and process tags in the source file.
+ *
+ * @param sourcefile path of the source file
+ * @param filesToCompile LinkedHashSet of the files to compile
+ *
+ * @return true on success, false on error
+ */
+ private static boolean parseTags(String sourcefile, LinkedHashSet<String> filesToCompile,
+ LinkedHashSet<String> filesToCopy, LinkedHashSet<String> testsToRun)
+ {
+ File f = new File(sourcefile);
+
+ String base = f.getAbsolutePath();
+ base = base.substring(0, base.lastIndexOf(File.separatorChar));
+
+ BufferedReader r = null;
+ try
+ {
+ r = new BufferedReader(new FileReader(f));
+ String line = null;
+ line = r.readLine();
+ while (line != null)
+ {
+ if (line.contains("//"))
+ {
+ if (line.contains("Uses:"))
+ {
+ processUsesTag(line, base, filesToCompile, filesToCopy, testsToRun);
+ }
+ else if (line.contains("Files:"))
+ {
+ processFilesTag(line, base, filesToCopy);
+ }
+ else if (line.contains("CompileOptions:"))
+ {
+ processCompileOptions(line);
+ }
+ else if (line.contains("not-a-test"))
+ {
+ // Don't run this one but parse it's tags.
+ testsToRun.remove(sourcefile);
+ }
+ }
+ else if (line.contains("implements Testlet"))
+ {
+ // Don't read through the entire test once we've hit
+ // real code. Note that this doesn't work for all
+ // files, only ones that implement Testlet, but that
+ // is most files.
+ break;
+ }
+
+ line = r.readLine();
+ }
+ }
+ catch (IOException ioe)
+ {
+ // This shouldn't happen.
+ ioe.printStackTrace();
+ return false;
+ }
+ finally
+ {
+ try
+ {
+ r.close();
+ }
+ catch (IOException ioe)
+ {
+ // This shouldn't happen.
+ ioe.printStackTrace();
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Parse and process compile options tag which can be specified
+ * in the test source file.
+ *
+ * @param sourcefile path of the source file
+ * @return compile options for given source file or null
+ * if none option is specified
+ */
+ private static String parseCompileOptions(String sourcefile)
+ {
+ String compileOptions = null;
+ File f = new File(sourcefile);
+
+ String base = f.getAbsolutePath();
+ base = base.substring(0, base.lastIndexOf(File.separatorChar));
+
+ BufferedReader r = null;
+ try
+ {
+ r = new BufferedReader(new FileReader(f));
+ String line = null;
+ while ( (line = r.readLine()) != null)
+ {
+ if (line.contains("//"))
+ {
+ if (line.contains("CompileOptions:"))
+ {
+ compileOptions = line.substring(line.indexOf("CompileOptions:") + "CompileOptions:".length()) + " ";
+ }
+ }
+ }
+ }
+ catch (IOException ioe)
+ {
+ // This shouldn't happen.
+ ioe.printStackTrace();
+ return null;
+ }
+ finally
+ {
+ try
+ {
+ r.close();
+ }
+ catch (IOException ioe)
+ {
+ // This shouldn't happen.
+ ioe.printStackTrace();
+ return null;
+ }
+ }
+
+ return compileOptions;
+ }
+
+ /**
+ * Processes the // Uses: tag in a testlet's source.
+ *
+ * @param line string of the current source line
+ * @param base base directory of the current test
+ * @param filesToCompile LinkedHashSet of the current files to be compiled
+ */
+ private static void processUsesTag(String line, String base,
+ LinkedHashSet<String> filesToCompile,
+ LinkedHashSet<String> filesToCopy,
+ LinkedHashSet<String> testsToRun)
+ {
+ StringTokenizer st =
+ new StringTokenizer(line.substring(line.indexOf("Uses:") + 5));
+
+ while (st.hasMoreTokens())
+ {
+ String depend = base;
+ String t = st.nextToken();
+ while (t.startsWith(".." + File.separator))
+ {
+ t = t.substring(3);
+ depend =
+ depend.substring(0, depend.lastIndexOf(File.separatorChar));
+ }
+ depend += File.separator + t;
+ if (depend.endsWith(".class"))
+ depend = depend.substring(0, depend.length() - 6);
+ if (!depend.endsWith(".java"))
+ depend += ".java";
+
+ // Check if the current dependency needs to be compiled (NOTE:
+ // This check does not include inner classes).
+ if (testNeedsToBeCompiled(depend))
+ {
+ // Add the current dependency.
+ filesToCompile.add(depend);
+ }
+
+ // Now parse the tags of the dependency.
+ parseTags(depend, filesToCompile, filesToCopy, testsToRun);
+ }
+ }
+
+ /**
+ * Processes the // CompileOptions: tag in a testlet's source.
+ *
+ * @param line string of the current source line
+ */
+ private static void processCompileOptions(String line)
+ {
+ compileOptions = line.substring(line.indexOf("CompileOptions:") + "CompileOptions:".length());
+ compileOptions += " "; // add separator to a command line
+ }
+
+ /**
+ * Processes the // Files: tag in a testlet's source.
+ *
+ * @param base base directory of the current test
+ * @param line string of the current source line
+ */
+ private static void processFilesTag(String line, String base,
+ LinkedHashSet<String> filesToCopy)
+ {
+ StringTokenizer st =
+ new StringTokenizer(line.substring(line.indexOf("Files:") + 6));
+
+ while (st.hasMoreTokens())
+ {
+ String src = base;
+ String t = st.nextToken();
+ while (t.startsWith(".." + File.separator))
+ {
+ t = t.substring(3);
+ src =
+ src.substring(0, src.lastIndexOf(File.separatorChar));
+ }
+ src += File.separator + t;
+
+ filesToCopy.add(src);
+ }
+ }
+
+ /**
+ * Copy the given files from the source directory to the build
+ * directory.
+ *
+ * @param filesToCopy files to copy
+ *
+ * @return true on success, false on error
+ */
+ private static boolean copyFiles(LinkedHashSet<String> filesToCopy)
+ {
+ if (filesToCopy.size() == 0)
+ return true;
+
+ for (Iterator<String> it = filesToCopy.iterator(); it.hasNext(); )
+ {
+ String src = it.next();
+ String dest =
+ config.builddir + File.separatorChar + stripSourcePath(src);
+
+ try
+ {
+ File inputFile = new File(src);
+ File outputFile = new File(dest);
+
+ // Only copy newer files.
+ if (inputFile.lastModified() <= outputFile.lastModified())
+ continue;
+
+ // Create directories up to the new file.
+ outputFile.getParentFile().mkdirs();
+
+ FileInputStream fis = new FileInputStream(inputFile);
+ FileOutputStream fos = new FileOutputStream(outputFile);
+ byte[] buf = new byte[1024];
+ int i = 0;
+
+ while((i = fis.read(buf)) != -1)
+ {
+ fos.write(buf, 0, i);
+ }
+
+ fis.close();
+ fos.close();
+ }
+ catch (IOException ioe)
+ {
+ ioe.printStackTrace();
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * This method is used to potentially run a single test. If runAnyway is
+ * false we've reached here as a result of processing a directory and we
+ * should only run tests if they end in ".java" to avoid running tests
+ * multiple times.
+ *
+ * @param cname the name of the test to run
+ * @return -1 if the test was explicitly excluded via the -exclude option,
+ * 0 if cname represents a single test, 1 if cname does not represent a
+ * single test
+ */
+ private static int processSingleTest(String cname)
+ {
+ LinkedHashSet<String> filesToCompile = new LinkedHashSet<String>();
+ LinkedHashSet<String> filesToCopy = new LinkedHashSet<String>();
+ LinkedHashSet<String> testsToRun = new LinkedHashSet<String>();
+
+ // If the test should be excluded return -1, this is a signal
+ // to processTest that it should quit.
+ if (excludeTests.contains(cname))
+ return -1;
+
+ // If it's not a single test, return 1, processTest will then try
+ // to process it as a directory.
+ String sourcefile = config.srcdir + File.separatorChar + cname + ".java";
+ File jf = new File(sourcefile);
+ if (!jf.exists())
+ return 1;
+
+ if (!compileTests)
+ {
+ if (testNeedsToBeCompiled(cname))
+ {
+ // There is an uncompiled test, but the -nocompile option was given
+ // so we just skip it
+ return -1;
+ }
+ }
+ else
+ {
+ if (testNeedsToBeCompiled(cname))
+ filesToCompile.add(sourcefile);
+ testsToRun.add(sourcefile);
+
+ // Process all tags in the source file.
+ if (!parseTags(sourcefile, filesToCompile, filesToCopy, testsToRun))
+ return -1;
+
+ if (!copyFiles(filesToCopy))
+ return -1;
+
+ // If compilation of the test fails, don't try to run it.
+ if (!compileFiles(filesToCompile, null))
+ return -1;
+ }
+
+ runTest(cname);
+
+ return 0;
+ }
+
+ /**
+ * This method processes all the tests in a folder. It does so in
+ * 3 steps: 1) compile a list of all the .java files in the folder,
+ * 2) compile those files unless compileTests is false,
+ * 3) run those tests.
+ * @param folderName
+ */
+ private static void processFolder(String folderName)
+ {
+ File dir = new File(config.srcdir + File.separatorChar + folderName);
+ String dirPath = dir.getPath();
+ File[] files = dir.listFiles();
+ LinkedHashSet<String> filesToCompile = new LinkedHashSet<String>();
+ LinkedHashSet<String> filesToCopy = new LinkedHashSet<String>();
+ LinkedHashSet<String> testsToRun = new LinkedHashSet<String>();
+ // map containing compile options for given test, but only if
+ // explicit compile options are defined in the test source
+ Map<String, String> compileOptions = new HashMap<String, String>();
+ String fullPath = null;
+ boolean compilepassed = true;
+
+ // If files is null, it is likely that the user input an incorrect
+ // Harness command (like -test-vm TESTVM instead of -vm TESTVM).
+ if (files == null)
+ return;
+
+ // First, compile the list of .java files.
+ for (int i = 0; i < files.length; i++)
+ {
+ // Ignore the CVS folders.
+ String name = files[i].getName();
+ fullPath = dirPath + File.separatorChar + name;
+ String testName = stripSourcePath(fullPath);
+ if (name.equals("CVS") || excludeTests.contains(testName))
+ continue;
+
+ if (name.endsWith(".java") &&
+ !excludeTests.contains(testName.
+ substring(0, testName.length() - 5)))
+ {
+ if (testNeedsToBeCompiled(testName)) {
+ // test needs to be compiled
+ filesToCompile.add(fullPath);
+ // we have to know its compile options (if there are any)
+ String options = parseCompileOptions(fullPath);
+ if (options != null)
+ {
+ compileOptions.put(fullPath, options);
+ }
+ }
+ testsToRun.add(fullPath);
+
+ // Process all tags in the source file.
+ if (!parseTags(fullPath, filesToCompile, filesToCopy, testsToRun))
+ continue;
+ }
+ else
+ {
+ // Check if it's a folder, if so, call this method on it.
+ if (files[i].isDirectory() && recursion
+ && ! excludeTests.contains(testName))
+ processFolder(testName);
+ }
+ }
+
+ if (!copyFiles(filesToCopy))
+ return;
+
+ // Exit if there were no .java files in this folder.
+ if (testsToRun.size() == 0)
+ return;
+
+ // Ignore the .java files in top level gnu/testlet folder.
+ if (dirPath.equals(config.srcdir + File.separatorChar +
+ "gnu" + File.separatorChar + "testlet"))
+ return;
+
+ // Now compile all those tests in a batch compilation, unless the
+ // -nocompile option was used.
+ if (compileTests)
+ compilepassed = compileFiles(filesToCompile, compileOptions);
+
+ // And now run those tests.
+ runFolder(testsToRun, compilepassed);
+ }
+
+ /**
+ * Runs all the tests in a folder. If the tests were compiled by
+ * compileFolder, and the compilation failed, then we must check to
+ * see if each individual test compiled before running it.
+ *
+ * @param testsToRun a list of all the tests to run
+ * @param compilepassed true if the compilation step happened and all
+ * tests passed or if compilation didn't happen (because of -nocompile).
+ */
+ private static void runFolder(LinkedHashSet<String> testsToRun, boolean compilepassed)
+ {
+ String nextTest = null;
+
+ for (Iterator<String> it = testsToRun.iterator(); it.hasNext(); )
+ {
+ nextTest = it.next();
+ nextTest = stripSourcePath(nextTest);
+
+ if (!testNeedsToBeCompiled(nextTest)
+ && (compilepassed || !excludeTests.contains(nextTest)))
+ {
+ nextTest = nextTest.substring(0, nextTest.length() - 5);
+ runTest(nextTest);
+ }
+ }
+ }
+
+ /**
+ * This method invokes the embedded ECJ compiler to compile a single
+ * test, which is stored in compileArgs[2].
+ * @return the return value from the compiler
+ * @throws Exception
+ */
+ public static int compile() throws Exception
+ {
+ /*
+ * This code depends on the patch in Comment #10 in this bug
+ * report:
+ *
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=88364
+ */
+
+ Object ecjInstance = ecjConstructor.newInstance (new Object[] {
+ new PrintWriter (System.out),
+ new PrintWriter (System.err),
+ Boolean.FALSE});
+ return ((Boolean) ecjMethod.invoke (ecjInstance, new Object[] {
+ compileString, ecjWriterOut, ecjWriterErr})).booleanValue() ? 0 : -1;
+ }
+
+ /**
+ * Compile the given files.
+ *
+ * @param filesToCompile LinkedHashSet of the files to compile
+ * @param testCompileOptions map containing compile options from given test(s), may be null
+ * @return true if compilation was successful
+ */
+ private static boolean compileFiles(LinkedHashSet<String> filesToCompile, Map<String, String> testCompileOptions)
+ {
+ if (filesToCompile.size() == 0)
+ return true;
+
+ int result = - 1;
+ // tests without specific compile options can be compiled as a whole group
+ boolean doGroupCompile = false;
+
+ compileString = compileStringBase + compileOptions;
+ for (Iterator<String> it = filesToCompile.iterator(); it.hasNext(); )
+ {
+ String testName = it.next();
+ // only test without specific compile options can be added to a "compile group"
+ if (testCompileOptions == null || !testCompileOptions.containsKey(testName))
+ {
+ compileString += " " + testName;
+ doGroupCompile = true;
+ }
+ }
+ try
+ {
+ if (doGroupCompile)
+ {
+ result = compile();
+ }
+ // try to compile other tests - in this case test by test
+ if (testCompileOptions != null)
+ {
+ for (Map.Entry<String, String> test : testCompileOptions.entrySet())
+ {
+ String oldCompileString = compileStringBase + compileOptions;
+ compileString = compileStringBase + test.getValue() + " " + test.getKey();
+ result = result == -1 ? -1 : compile();
+ compileString = oldCompileString;
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ System.err.println("compilation exception");
+ e.printStackTrace();
+ result = - 1;
+ }
+ return result == 0;
+ }
+
+ /**
+ * Returns true if the String argument passed is in the format of a
+ * compiler summary of errors in a folder.
+ * @param x the String to inspect
+ * @return true if the String is in the correct format
+ */
+ private static boolean isCompileSummary(String x)
+ {
+ if (numCompileFailsInFolder == 1)
+ return x.startsWith("1 problem (1 error)");
+ else
+ {
+ String s = "" + numCompileFailsInFolder + " problems (";
+ s += "" + numCompileFailsInFolder + " errors)";
+ return x.startsWith(s);
+ }
+ }
+
+ /**
+ * A class that implements Runnable and simply reads from an InputStream
+ * and redirects it to System.err.
+ * @author Anthony Balkissoon abalkiss at redhat dot com
+ *
+ */
+ private static class ErrorStreamPrinter
+ implements Runnable
+ {
+ private static BufferedReader in;
+ private Thread printerThread;
+
+ public ErrorStreamPrinter(InputStream input)
+ {
+ in = new BufferedReader
+ (new InputStreamReader(runnerProcess.getErrorStream()));
+ printerThread = new Thread(this);
+ }
+
+ /**
+ * Starts the thread that reads and redirects input.
+ *
+ */
+ public void start()
+ {
+ printerThread.start();
+ }
+
+ /**
+ * Reads from the error stream of the runnerProcess and redirects to
+ * System.err.
+ */
+ public void run()
+ {
+ try
+ {
+ while (true)
+ {
+ String temp = in.readLine();
+ if (temp == null)
+ {
+ // This means the RunnerProcess was restarted (because of a
+ // timeout) and we need to restart the error stream writer.
+ restartESP = true;
+ break;
+ }
+ System.err.println(temp);
+ }
+ }
+ catch (IOException ioe)
+ {
+ // Restart the runner error stream printer upon running
+ // the next test
+ restartESP = true;
+ }
+ }
+ }
+
+ /**
+ * This class is used for our timer to cancel tests that have hung.
+ * @author Anthony Balkissoon abalkiss at redhat dot com
+ *
+ */
+ private static class TimeoutWatcher implements Runnable
+ {
+ private long millisToWait;
+ private Thread watcherThread;
+ private boolean started;
+ private boolean loop = true;
+ private boolean shouldContinue = true;
+
+ private final Process runnerProcess;
+
+ /**
+ * Creates a new TimeoutWatcher that will wait for <code>millis</code>
+ * milliseconds once started.
+ * @param millis the number of milliseconds to wait before declaring the
+ * test as hung
+ */
+ public TimeoutWatcher(long millis, Process runnerProcess)
+ {
+ millisToWait = millis;
+ watcherThread = new Thread(this);
+ started = false;
+ this.runnerProcess = runnerProcess;
+ }
+
+ /**
+ * Stops the run() method.
+ *
+ */
+ public synchronized void stop()
+ {
+ shouldContinue = false;
+ notify();
+ }
+
+ /**
+ * Reset the counter and wait another <code>millisToWait</code>
+ * milliseconds before declaring the test as hung.
+ */
+ public synchronized void reset()
+ {
+ if (!started)
+ {
+ watcherThread.start();
+ started = true;
+ }
+ else
+ {
+ loop = true;
+ notify();
+ }
+ }
+
+ public synchronized void run()
+ {
+ Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
+ while (loop && shouldContinue)
+ {
+ // We set loop to false here, it will get reset to true if
+ // reset() is called from the main Harness thread.
+ loop = false;
+ long start = System.currentTimeMillis();
+ long waited = 0;
+ while (waited < millisToWait)
+ {
+ try
+ {
+ wait(millisToWait - waited);
+ }
+ catch (InterruptedException ie)
+ {
+ // ignored.
+ }
+ waited = System.currentTimeMillis() - start;
+ }
+ }
+ if (shouldContinue)
+ {
+ // The test is hung, destroy and restart the RunnerProcess.
+ try
+ {
+ this.runnerProcess.destroy();
+ this.runnerProcess.getInputStream().close();
+ this.runnerProcess.getErrorStream().close();
+ this.runnerProcess.getOutputStream().close();
+ }
+ catch (IOException e)
+ {
+ System.err.println("Could not close the interprocess pipes.");
+ System.exit(- 1);
+ }
+ }
+ }
+ }
+
+ /**
+ * This tiny class is used for finding the bootclasspath of the VM used
+ * to run the tests.
+ * @author Anthony Balkissoon abalkiss at redhat dot com
+ *
+ */
+ public static class DetectBootclasspath
+ {
+ /**
+ * Look in the system properties for the bootclasspath of the VM and return
+ * it to the process that forked this process via the System.out stream.
+ *
+ * Tries first to get the property "sun.boot.class.path", if there is none,
+ * then it tries "java.boot.class.path", if there is still no match, looks
+ * to see if there is a unique property key that contains "boot.class.path".
+ * If this fails too, prints an error message.
+ */
+ public static void main (String[] args)
+ {
+ String result = "BCP_FINDER:";
+ // Sun's VM stores the bootclasspath as "sun.boot.class.path".
+ String temp = System.getProperty("sun.boot.class.path");
+ if (temp == null)
+ // JamVM stores it as "boot.class.path"
+ temp = System.getProperty("java.boot.class.path");
+ if (temp == null)
+ {
+ String[] s = (String[])(System.getProperties().keySet().toArray());
+ int count = 0;
+ String key = null;
+ for (int i = 0; i < s.length; i++)
+ {
+ if (s[i].indexOf("boot.class.path") != -1)
+ {
+ count ++;
+ key = s[i];
+ }
+ }
+ if (count == 1)
+ temp = System.getProperty(key);
+ else
+ {
+ System.err.println("WARNING: Cannot auto-detect the " +
+ "bootclasspath for your VM, please file a bug report" +
+ " specifying which VM you are testing.");
+ temp = "can't_find_bcp_";
+ }
+ }
+ System.out.println(result + temp);
+ }
+ }
+
+ /**
+ * A class used as a PrintWriter for the compiler to send error output to.
+ * This class formats the output and also affects the test run by parsing
+ * the output.
+ * @author Anthony Balkissoon abalkiss at redhat dot com
+ *
+ */
+ private class CompilerErrorWriter extends PrintWriter
+ {
+ public CompilerErrorWriter(OutputStream out)
+ {
+ super(out);
+ }
+
+ /**
+ * This method is overridden for several reasons. It formats
+ * text to fit into the test report, adds tests that fail to compile
+ * to the list of tests to exclude from the run, prints header
+ * information for the failing tests, and properly increments
+ * the total test number and total failing test number.
+ *
+ * Basically, this method now parses the text its passed and causes
+ * side effects. It (sometimes) prints that text as well, after
+ * formatting and indenting.
+ */
+ public void println(String x)
+ {
+ // Ignore incorrect classpath errors, since we detect this
+ // automatically, a proper classpath should be found in
+ // addition to any incorrect ones.
+ if (x.startsWith("incorrect classpath:") ||
+ x.startsWith("----------"))
+ return;
+
+ // Look for "gnu/testlet" to indicate we might be talking about a
+ // new file.
+ int loc = x.indexOf("gnu/testlet");
+ if (loc != -1)
+ {
+ String temp = x.substring(loc);
+ String shortName =
+ stripPrefix(temp).replace(File.separatorChar, '.');
+ if (shortName.endsWith(".java"))
+ shortName =
+ shortName.substring(0, shortName.length() - 5);
+
+ // Check if the name is different than the last file with
+ // compilation errors, so we're not dealing with multiple errors
+ // in one file.
+ if (!lastFailingCompile.equals(shortName))
+ {
+ // Print out a message saying the test failed.
+ if (verbose)
+ super.println("TEST: " + shortName
+ + "\n FAIL: compilation errors:");
+ else
+ super.println("FAIL: " + shortName
+ + "\n compilation errors:");
+
+ // Increment and set the relevant variables.
+ numCompileFailsInFolder = 1;
+ excludeTests.add(temp);
+ total_test_fails++;
+ total_tests++;
+ lastFailingCompile = shortName;
+ }
+ else
+ numCompileFailsInFolder++;
+ return;
+ }
+
+ // Get the line number from the compiler output and print
+ // it out to look like our other line numbers for failures.
+ loc = x.indexOf("(at line ");
+ if (loc != -1)
+ {
+ int endBracket = x.indexOf(')', loc);
+ String line = x.substring(loc + 4, endBracket) + ":";
+
+ // Print the line numbers with appropriate indentation.
+ if (verbose)
+ super.println(" "+line);
+ else
+ super.println(" "+line);
+
+ // Print the line from the test that caused the problem.
+ super.println(x.substring(endBracket + 2));
+ return;
+ }
+
+ // Print the lines with appropriate indentation.
+ if (verbose)
+ super.println(" " + x);
+ else
+ super.println(" " + x);
+ }
+
+ /**
+ * This method is overridden so that the compiler summary isn't
+ * printed out and also so that if the output is verbose we print
+ * our own summary.
+ */
+ public void print(String x)
+ {
+ if (isCompileSummary(x))
+ {
+ if (verbose)
+ super.println("TEST FAILED: compile failed for "
+ + lastFailingCompile);
+ }
+ else
+ super.print(x);
+ }
+ }
+
+ /**
+ * Reads from one stream and writes this to another. This is used to pipe
+ * the input (System.in) from the outside process to the test process.
+ */
+ private static class InputPiperThread
+ extends Thread
+ {
+ InputStream in;
+ OutputStream out;
+ InputPiperThread(InputStream i, OutputStream o)
+ {
+ in = i;
+ out = o;
+ }
+ public void run()
+ {
+ int ch = 0;
+ do
+ {
+ try
+ {
+ if (in.available() > 0)
+ {
+ ch = in.read();
+ if (ch != '\n') // Skip the trailing newline.
+ out.write(ch);
+ out.flush();
+ }
+ else
+ Thread.sleep(200);
+ }
+ catch (IOException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch (InterruptedException ex)
+ {
+ ch = -1; // Jump outside.
+ }
+ } while (ch != -1);
+ }
+ }
+}
diff --git a/LibraryPath.java b/LibraryPath.java
new file mode 100644
index 00000000..f7402f28
--- /dev/null
+++ b/LibraryPath.java
@@ -0,0 +1,6 @@
+class LibraryPath {
+ public static void main(String[] arguments) {
+ String n = System.getProperty("java.library.path");
+ System.out.println("java.library.path: " + n);
+ }
+}
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..e8a4a3bb
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/mauve
+pkgincludedir = $(includedir)/mauve
+pkglibdir = $(libdir)/mauve
+pkglibexecdir = $(libexecdir)/mauve
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = arm-unknown-none
+host_triplet = arm-unknown-none
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure \
+ $(top_srcdir)/gnu/testlet/config.java.in COPYING ChangeLog \
+ THANKS config.guess config.sub install-sh missing \
+ mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES = gnu/testlet/config.java
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = ${SHELL} /home/root/mauve/missing --run aclocal-1.11
+AMTAR = $${TAR-tar}
+AUTOCONF = ${SHELL} /home/root/mauve/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/root/mauve/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/root/mauve/missing --run automake-1.11
+AUTO_COMPILE = yes
+AWK = awk
+BUILDDIR = /home/root/mauve
+CC = gcc
+CCDEPMODE = depmode=none
+CFLAGS = -g -O2
+CHECK_FILE_SEPARATOR = /
+CHECK_PATH_SEPARATOR = :
+CPPFLAGS =
+CYGPATH_W = echo
+DEFS = -DPACKAGE_NAME=\"mauve\" -DPACKAGE_TARNAME=\"mauve\" -DPACKAGE_VERSION=\"0.0\" -DPACKAGE_STRING=\"mauve\ 0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"mauve\" -DVERSION=\"0.0\"
+DEPDIR = .deps
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+ECJ_JAR = /usr/share/java/eclipse-ecj.jar
+EMMA = _auto_detect_emma_
+EXEEXT =
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+JAVA = java
+JAVAC = javac
+LDFLAGS =
+LIBOBJS =
+LIBS =
+LTLIBOBJS =
+MAIL_HOST = mx10.gnu.org
+MAKEINFO = ${SHELL} /home/root/mauve/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+PACKAGE = mauve
+PACKAGE_BUGREPORT =
+PACKAGE_NAME = mauve
+PACKAGE_STRING = mauve 0.0
+PACKAGE_TARNAME = mauve
+PACKAGE_URL =
+PACKAGE_VERSION = 0.0
+PATH_SEPARATOR = :
+SET_MAKE =
+SHELL = /bin/sh
+SRCDIR = /home/root/mauve
+STRIP =
+TEST_JAVA = java
+TMPDIR = /tmp
+VERSION = ${shell date +%F}
+abs_builddir = /home/root/mauve
+abs_srcdir = /home/root/mauve
+abs_top_builddir = /home/root/mauve
+abs_top_srcdir = /home/root/mauve
+ac_ct_CC = gcc
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = false
+am__untar = false
+bindir = ${exec_prefix}/bin
+build = arm-unknown-none
+build_alias = arm
+build_cpu = arm
+build_os = none
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = arm-unknown-none
+host_alias =
+host_cpu = arm
+host_os = none
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/root/mauve/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix =
+top_builddir = .
+top_srcdir = .
+AUTOMAKE_OPTIONS = foreign subdir-objects no-dependencies
+JAVACFLAGS = -g -source 1.5 -target 1.5 -Xlint:all
+TESTFLAGS =
+check_DATA = $(STAMP)
+EXTRA_DIST = Harness.java RunnerProcess.java gnu junit
+harness_files = \
+ $(srcdir)/Harness.java \
+ $(srcdir)/RunnerProcess.java \
+ $(srcdir)/gnu/testlet/TestHarness.java \
+ $(srcdir)/gnu/testlet/Testlet.java \
+ $(srcdir)/gnu/testlet/TestSecurityManager.java \
+ $(srcdir)/gnu/testlet/ResourceNotFoundException.java \
+ $(srcdir)/gnu/testlet/TestReport.java \
+ $(srcdir)/gnu/testlet/TestResult.java \
+ $(srcdir)/gnu/testlet/VisualTestlet.java \
+ \
+ gnu/testlet/config.java \
+ \
+ $(srcdir)/junit/framework/*.java \
+ $(srcdir)/junit/runner/*.java \
+ $(srcdir)/junit/textui/*.java
+
+SUFFIXES = .class .java
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .class .java
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+gnu/testlet/config.java: $(top_builddir)/config.status $(top_srcdir)/gnu/testlet/config.java.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am all-local am--refresh check check-am check-local \
+ clean clean-generic clean-local dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+
+harness:
+ $(JAVAC) $(JAVACFLAGS) -d . $(harness_files)
+
+all-local: harness
+
+check-local:
+ $(JAVA) Harness
+clean-local:
+ find . -name '*.class' -print | xargs rm -f
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 00000000..e5aad137
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,44 @@
+## Process this file with automake to produce Makefile.in.
+
+## FIXME: dependencies
+AUTOMAKE_OPTIONS = foreign subdir-objects no-dependencies
+
+JAVACFLAGS = -g -source 1.5 -target 1.5 -Xlint:all
+
+TESTFLAGS =
+
+check_DATA = $(STAMP)
+
+EXTRA_DIST = Harness.java RunnerProcess.java gnu junit
+
+VERSION = ${shell date +%F}
+
+harness_files = \
+ $(srcdir)/Harness.java \
+ $(srcdir)/RunnerProcess.java \
+ $(srcdir)/gnu/testlet/TestHarness.java \
+ $(srcdir)/gnu/testlet/Testlet.java \
+ $(srcdir)/gnu/testlet/TestSecurityManager.java \
+ $(srcdir)/gnu/testlet/ResourceNotFoundException.java \
+ $(srcdir)/gnu/testlet/TestReport.java \
+ $(srcdir)/gnu/testlet/TestResult.java \
+ $(srcdir)/gnu/testlet/VisualTestlet.java \
+ \
+ gnu/testlet/config.java \
+ \
+ $(srcdir)/junit/framework/*.java \
+ $(srcdir)/junit/runner/*.java \
+ $(srcdir)/junit/textui/*.java
+
+harness:
+ $(JAVAC) $(JAVACFLAGS) -d . $(harness_files)
+
+all-local: harness
+
+check-local:
+ $(JAVA) Harness
+
+## For now can't define this conditionally.
+SUFFIXES = .class .java
+clean-local:
+ find . -name '*.class' -print | xargs rm -f
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 00000000..e4f75766
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure \
+ $(top_srcdir)/gnu/testlet/config.java.in COPYING ChangeLog \
+ THANKS config.guess config.sub install-sh missing \
+ mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_CLEAN_FILES = gnu/testlet/config.java
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AUTO_COMPILE = @AUTO_COMPILE@
+AWK = @AWK@
+BUILDDIR = @BUILDDIR@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECK_FILE_SEPARATOR = @CHECK_FILE_SEPARATOR@
+CHECK_PATH_SEPARATOR = @CHECK_PATH_SEPARATOR@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ_JAR = @ECJ_JAR@
+EMMA = @EMMA@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAIL_HOST = @MAIL_HOST@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SRCDIR = @SRCDIR@
+STRIP = @STRIP@
+TEST_JAVA = @TEST_JAVA@
+TMPDIR = @TMPDIR@
+VERSION = ${shell date +%F}
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign subdir-objects no-dependencies
+JAVACFLAGS = -g -source 1.5 -target 1.5 -Xlint:all
+TESTFLAGS =
+check_DATA = $(STAMP)
+EXTRA_DIST = Harness.java RunnerProcess.java gnu junit
+harness_files = \
+ $(srcdir)/Harness.java \
+ $(srcdir)/RunnerProcess.java \
+ $(srcdir)/gnu/testlet/TestHarness.java \
+ $(srcdir)/gnu/testlet/Testlet.java \
+ $(srcdir)/gnu/testlet/TestSecurityManager.java \
+ $(srcdir)/gnu/testlet/ResourceNotFoundException.java \
+ $(srcdir)/gnu/testlet/TestReport.java \
+ $(srcdir)/gnu/testlet/TestResult.java \
+ $(srcdir)/gnu/testlet/VisualTestlet.java \
+ \
+ gnu/testlet/config.java \
+ \
+ $(srcdir)/junit/framework/*.java \
+ $(srcdir)/junit/runner/*.java \
+ $(srcdir)/junit/textui/*.java
+
+SUFFIXES = .class .java
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .class .java
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+gnu/testlet/config.java: $(top_builddir)/config.status $(top_srcdir)/gnu/testlet/config.java.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__remove_distdir)
+
+dist-lzma: distdir
+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+ $(am__remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lzma*) \
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_DATA)
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am all-local am--refresh check check-am check-local \
+ clean clean-generic clean-local dist dist-all dist-bzip2 \
+ dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
+ dist-zip distcheck distclean distclean-generic distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+
+harness:
+ $(JAVAC) $(JAVACFLAGS) -d . $(harness_files)
+
+all-local: harness
+
+check-local:
+ $(JAVA) Harness
+clean-local:
+ find . -name '*.class' -print | xargs rm -f
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/README b/README
new file mode 100644
index 00000000..29b47cb3
--- /dev/null
+++ b/README
@@ -0,0 +1,313 @@
+This is Mauve, a free test suite for the Java Class Libraries.
+
+Mauve is intended to test several different varieties of the
+libraries. For instance, it will contain tests that are specific to a
+particular JDK version. Tags in the test files help the test
+framework decide which tests should or should not be run against a
+given runtime.
+
+
+This file has two main sections:
+0) CONFIGURING AND BUILDING THE TESTSUITE
+1) RUNNING THE TESTS
+2) NOTES
+
+
+******CONFIGURING AND BUILDING THE TESTSUITE*******
+To build, first run configure. Below we cover the following:
+ 0. Specifying which VM to test.
+ 1. Configuring the auto-compilation feature.
+ 2. Environment variables for configure.
+ 3. Other options to configure.
+ 4. Building the testsuite.
+
+
+0. Specifying the VM to test.
+ The configure script takes the following option that specifies which java
+ implementation the testsuite will test:
+
+ --with-vm=TESTVM
+
+ For example, specifying --with-vm=jamvm will invoke "jamvm" when
+ running the tests, and will therefore test the java implementation associated
+ with your jamvm installation. If this option is not specified, it defaults
+ to "java".
+
+
+1. Configuring the auto-compilation feature.
+ If you plan to use the auto-compilation feature of the Harness, which
+ compiles tests inline before running them (so new tests, or changed
+ tests are run properly without an additional step), you need to be sure
+ it is properly configured. The following options are associated
+ with auto-compilation:
+
+ --enable-auto-compilation Enable the auto-compilation feature
+ --with-ecj-jar Specify the location of the eclipse-ecj.jar
+ file for the compiler to use. This defaults
+ to /usr/share/java/eclipse-ecj.jar and only
+ needs to be specified if the location on your
+ machine is different from this. If no valid
+ ecj jar is found, auto-compilation will be
+ turned off.
+ --with-bootclasspath Specify the bootclasspath for the compiler.
+
+ Auto-compilation is enabled by default, and the bootclasspath is found
+ automatically. If you wish to disable auto-compilation or change the
+ bootclasspath you should use the appropriate option(s) above.
+
+
+2. Environment variables for configure.
+ You can control the configuration with some environment variables:
+
+ JAVA Name of Java interpreter to use
+ JAVAC Name of Java (to class) compiler to use
+ GCJ Name of Java (to object) compiler to use
+
+ GCJ is only used when the `--with-gcj' option is given to configure.
+
+
+3. Other configure options.
+ The configure script also supports the following `--with' options:
+
+ --with-gcj Indicate you will be using gcj, this will tell
+ make to build the object files and use the
+ appropriate compiler
+ --with-tmpdir=DIR Put temporary files in DIR
+ defaults to `/tmp'
+ --with-mailhost=HOSTNAME Use mail server at HOSTNAME for socket tests
+ defaults to `mx10.gnu.org'
+ (Use this option if your local firewall
+ blocks outgoing connections on port 25.)
+
+
+4. Building the testsuite.
+ If you are using the auto-compilation feature, there is no need to build the
+ tests, it will suffice to compile the files Harness.java and
+ RunnerProcess.java.
+
+ If you are using gcj or are not using the auto-compilation feature, you should
+ now run GNU make to build the testsuite.
+
+
+
+
+*******RUNNING THE TESTS*******
+The Mauve tests are run using the harness script in the top directory. This
+section provides instructions on how to perform the following tasks:
+
+ 0. Running all the tests.
+ 1. Specify the VM on which to run the tests and any VM arguments
+ 2. Select a subset of the tests to run
+ 3. Use an input file to specify the tests to run
+ 4. Change the timeout interval
+ 5. Change the information displayed when tests are run
+ 6. Turn on (or off) test auto-compilation.
+ 7. Test output format
+
+
+0. Running all the tests
+ To run all the tests in the Mauve test suite, type 'HARNESSVM Harness' where
+ HARNESSVM is the VM you wish to use to run the Harness. Note that this is NOT
+ the same as the VM on which you run the tests. Read item 1 to learn how to
+ set the VM on which you run the tests.
+
+ You can also run all the tests by typing 'HARNESSVM Harness gnu.testlet'.
+
+
+1. Specifying the VM on which to run the tests and any VM arguments
+
+ The VM on which to run the tests can be specified by configure as described
+ in the first section, CONFIGURING AND BUILDING THE TESTSUITE. It can also be
+ done via command line options to the Harness (which override the configure
+ options). To set the VM via the command line, use:
+
+ -vm [vmpath]
+
+ If, for example, I wanted to run all the JTable tests using JamVM, and then
+ run them all on Sun's VM for comparison, I would type:
+
+ HARNESSVM Harness javax.swing.JTable -vm jamvm
+
+ and then
+
+ HARNESSVM Harness javax.swing.JTable -vm java
+
+ if "java" was a system command to run Sun's VM. If not, you should specify
+ the path to Sun's "java" executable (ex: /usr/lib/java-1.5.0/bin/java). Note
+ again that HARNESSVM is just the VM used to run the harness, and not the tests.
+ This is done for performance considerations to allow the Harness to be natively
+ compiled and ran while testing a variety of VMs.
+
+ To specify arguments for the VM, use:
+
+ -vmarg ARGUMENT
+
+ For example, the following command will run the JTable tests on JamVM with
+ the -Xnocompact argument:
+
+ HARNESSVM Harness javax.swing.JTable -vm jamvm -vmarg -Xnocompact
+
+ For debugging purposes it may be helpful to run the testprocess with a
+ special program like strace, time or gdb. To prepend such a command before
+ the VM use the -vmprefix argument and specify a path to the program you want
+ to run:
+
+ -vmprefix [prefixpath]
+
+ For example, the following command will run a Socket test with strace on
+ Cacao:
+
+ HARNESSVM Harness java.net.Socket -vm cacao -vmprefix strace
+
+2. Selecting a subset of the tests to run
+
+ This is a common task for developers, you may be working to fix a bug in a
+ certain area and want to run all the related tests, but not the entire
+ testsuite. Simply specify the folder containing the tests, and all the tests
+ in that folder (and its subfolders, although this can be turned off) will be
+ run.
+
+ Example: run all the java.net tests (remember, this uses system default
+ "java" unless you have environment variable MAUVEVM set):
+
+ 1. HARNESSVM Harness java.net
+ 2. HARNESSVM Harness gnu.testlet.java.net
+ 3. HARNESSVM Harness gnu/testlet/java/net
+ 3. HARNESSVM Harness gnu/testlet/java/net/
+ * It makes no difference if you use "." or "/", or if you have the
+ "gnu.testlet" preceeding the test folder or if you have a trailing "/".
+
+ You may want to exclude certain tests from a run, this done using the
+ -exclude option. Extending our previous example, let's run all the java.net
+ tests except for the java.net.Socket tests.
+
+ 1. HARNESSVM Harness java.net -exclude java.net.Socket
+ 2. HARNESSVM Harness -exclude java.net.Socket java.net
+
+ The test or folder you want to exclude must follow the -exclude option, but
+ other than that, the order doesn't matter. In example #2 above java.net is
+ still taken to be tests you want to run, not tests you want to exclude. So
+ if you want to exclude more than one folder, you need to use the -exclude
+ flag multiple times.
+
+ If a folder has several subfolders and you want to exclude them all, you
+ can use the -norecursion option instead of explicitly excluding them
+ all. So to run the AbstractDocument tests but not the BranchElement or
+ LeafElement tests, type:
+
+ HARNESSVM Harness javax.swing.text.AbstractDocument -norecursion
+
+ Again, the order of the arguments/options doesn't matter.
+
+
+3. Using an input file to specify tests to be run
+
+ Simply use the -file [filename] option. The input file should list, one per
+ line, the tests or folders you want to test.
+
+ Example: HARNESSVM Harness -file myInputFile
+
+ The input file specifies only tests to be run, not excluded, to exclude tests
+ you need to explicitly do so as in Section 2 above.
+
+ Example: HARNESSVM Harness -file myInputFile -exclude java.net.Socket
+
+
+4. Changing the timeout interval
+
+ The Harness detects tests that have hung and terminates them. It does so
+ simply by allowing all tests to run for 60 seconds and if they haven't
+ completed, declaring them hung. If a test simply takes a long time you may
+ want to increase this interval. If on the other hand, no passing tests take
+ longer than a few seconds and hanging tests are slowing down your test runs,
+ you may want to decrease the interval. To set the timeout interval use
+ the -timeout [interval] option. The interval is specified in milliseconds.
+
+ Example: HARNESSVM Harness gnu.java.security -timeout 30000
+
+ will set the timeout to be 30 seconds instead of 60.
+
+
+5. Changing the information displayed during test runs
+
+ By default the Harness prints only messages for those tests that fail, and
+ prints full stack traces for uncaught exceptions. The following
+ options affect what is printed:
+
+ -hidecompilefails: hides failures from the compiler. These can still be
+ found in the .ecjErr file.
+
+ -verbose: prints information about each passing harness.check() call
+ within the tests, whether they pass or fail.
+
+ -noexceptions: suppress full stack traces for uncaught exceptions
+
+ -showpasses: prints one-line summaries for passing tests
+
+ -debug: prints toString() information when a
+ harness.check(Object, Object) call fails.
+
+
+6. Turning off (or on) test auto-compilation
+ The auto-compilation feature is enabled by default, but can be turned off by
+ using the --disable-auto-compilation option to configure. You can also turn
+ off the option by using the following Harness option:
+
+ -compile no OR -compile false
+
+ If you have disabled auto-compilation in configure but wish to turn it on
+ for a particular test run, use
+
+ -compile yes OR -compile true
+
+ Note that auto-compilation requires a correct path to eclipse-ecj.jar and
+ a correct bootclasspath. The following options deal with this:
+
+ -bootclasspath BOOTCLASSPATH
+ -ecj-jar ECJ_JAR_LOCATION
+
+ These can also be specified at configure time via
+ --with-bootclasspath and --with-ecj-jar, the latter defaulting
+ to /usr/share/java/eclipse-ecj.jar if no location is specified. The default
+ bootclasspath is found automatically and shouldn't need to be changed unless
+ you specifically want to specify an alternate location.
+
+ So the default setup of:
+ 1. ./configure
+ 2. make
+ 3. HARNESSVM Harness
+
+ will run with auto-compilation enabled with the ecj jar being
+ /usr/share/java/eclipse-ecj.jar and the bootclasspath found automatically.
+
+
+7. Test output format
+ Test results are available in xml format by use of the '-xmlout' and '-autoxml' flags
+
+ '-xmlout' is supplied with the xml file name where the total test run data will be stored:
+
+ HARNESSVM Harness -xmlout XML_FILE
+
+ '-autoxml' is supplied with the directory name, where individual xml files will be generated
+ and stored for each test executed:
+
+ HARNESSVM Harness -autoxml RESULTS_DIRECTORY
+
+
+******NOTES*******
+This section explains some additional notes to take into account when using
+Mauve. It has the following subsections:
+ 0. External Data
+
+0. External Data
+
+ Tests can have additional data included. Usually, data is located either
+ in the same package of the test, or in a subpackage.
+ The following files come from external sources. The list includes the
+ last known license at time the file was added, the source and the location
+ in Mauve. For details on the use see the corresponding tests.
+
+ * gnu/testlet/javax/sound/sampled/data/k3b_success1.wav, GPL,
+ k3b-1.0.1-1.fc7.2 (fedora 7)
+ * gnu/testlet/javax/sound/sampled/data/k3b_success1.au, GPL,
+ converted from k3b_success1.wav.
diff --git a/README.PKITS b/README.PKITS
new file mode 100644
index 00000000..c96a0992
--- /dev/null
+++ b/README.PKITS
@@ -0,0 +1,21 @@
+The PKITS test suite.
+
+In the package gnu.testlet.java.security.cert.pkix.pkits is an implementation of the
+PKITS test suite, created by NIST, as a conformance test for the Internet X.509
+profile (PKIX) path-checking algorithms. In Java, these path-checking algorithms are
+implemented using the CertPathValidator interface.
+
+This version of the test suite was formerly included in the GNU Crypto project;
+these tests are copyright (C) 2003 The Free Software Foundation, and are licensed
+under the GNU General Public License.
+
+The test data files under the data/certs and data/crls directories were originally
+developed by NIST for this test suite. Files developed by NIST are subject to U.S.
+code Title 17, section 105, and are public domain. They additionally contain data
+developed by DigitalNet, under contract for the NSA. This message to the PKITS
+mailing list:
+
+ http://cio.nist.gov/esd/emaildir/lists/pkits/msg00048.html
+
+seems to indicate that these test files are freely redistributable. We believe that
+we can redistribute these files with Mauve. \ No newline at end of file
diff --git a/RunnerProcess.java b/RunnerProcess.java
new file mode 100644
index 00000000..be7097a5
--- /dev/null
+++ b/RunnerProcess.java
@@ -0,0 +1,1042 @@
+// Copyright (c) 2006 Red Hat, Inc.
+// Written by Anthony Balkissoon <abalkiss@redhat.com>
+// Adapted from gnu.testlet.SimpleTestHarness written by Tom Tromey.
+// Copyright (c) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+// This file is used by Harness.java to run the tests in a separate process
+// so that the process can be killed by the Harness if it is hung.
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestReport;
+import gnu.testlet.TestResult;
+import gnu.testlet.TestSecurityManager;
+import gnu.testlet.Testlet;
+import gnu.testlet.VisualTestlet;
+import gnu.testlet.config;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Vector;
+
+public class RunnerProcess
+ extends TestHarness
+{
+ // A description of files that are not tests
+ private static final String NOT_A_TEST_DESCRIPTION = "not-a-test";
+
+ // A description of files that fail to load
+ private static final String FAIL_TO_LOAD_DESCRIPTION = "failed-to-load";
+
+ // A description of a test that throws an uncaught exception
+ private static final String UNCAUGHT_EXCEPTION_DESCRIPTION = "uncaught-exception";
+
+ // Total number of harness.check calls since the last checkpoint
+ private int count = 0;
+
+ // The location of the emma.jar file
+ private static String emmaJarLocation = null;
+
+ // Whether or not to use EMMA
+ private static boolean useEMMA = true;
+
+ // Total number of harness.check fails plus harness.fail calls
+ private int failures = 0;
+
+ // The expected fails
+ private static Vector<String> expectedXfails = new Vector<String>();
+
+ // The number of expected failures that did fail
+ private int xfailures = 0;
+
+ // The number of expected failures that passed (unexpectedly)
+ private int xpasses = 0;
+
+ // The total number of harness.check calls plus harness.fail calls
+ private int total = 0;
+
+ // True if we should run in verbose (noisy) mode
+ private static boolean verbose = false;
+
+ // True if failing calls to harness.check(Object, Object) should print the
+ // toString methods of each Object
+ private static boolean debug = false;
+
+ // True if stack traces should be printed for uncaught exceptions
+ private static boolean exceptions = true;
+
+ // A description of the test
+ private String description;
+
+ // The name of the last checkpoint
+ private String last_check;
+
+ // The TestReport if a report is necessary
+ private static TestReport report = null;
+
+ // The xmlfile for the report
+ private static String xmlfile = null;
+
+ // The result of the current test
+ private TestResult currentResult = null;
+
+ // The EMMA forced data dump method
+ private static Method emmaMethod = null;
+
+ // The failure message for the last failing check()
+ private String lastFailureMessage = null;
+
+ /**
+ * Should we run interactive or non-interactive tests ?
+ */
+ private static boolean interactive;
+
+ /**
+ * To Generate an XML file for individual tests executed
+ */
+ private static boolean isAutoXml;
+
+ /*
+ * Base Directory for XML files
+ */
+ private static String autoXmlDir = null;
+
+ protected RunnerProcess()
+ {
+ try
+ {
+ BufferedReader xfile = new BufferedReader(new FileReader("xfails"));
+ String str;
+ while ((str = xfile.readLine()) != null)
+ {
+ expectedXfails.addElement(str);
+ }
+ }
+ catch (FileNotFoundException ex)
+ {
+ // Nothing.
+ }
+ catch (IOException ex)
+ {
+ // Nothing.
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ // The test that Harness wants us to run.
+ String testname = null;
+
+ // This reader is used to get testnames from Harness
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+
+ // Parse the arguments so we can create an appropriate RunnerProcess
+ // to run the tests.
+ for (int i = 0; i < args.length; i++)
+ {
+ if (args[i].equals("-verbose"))
+ // User wants to run in verbose mode.
+ verbose = true;
+ else if (args[i].equals("-debug"))
+ // User wants extra debug info.
+ debug = true;
+ else if (args[i].equals("-noexceptions"))
+ // User wants stack traces for uncaught exceptions.
+ exceptions = false;
+ else if (args[i].equals("-xmlout"))
+ {
+ // User wants a report.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path after '-xmlout'.");
+ xmlfile = args[i];
+ }
+ else if (args[i].equalsIgnoreCase("-emma"))
+ {
+ // User is specifying the location of the eclipse-ecj.jar file
+ // to use for compilation.
+ if (++i >= args.length)
+ throw new RuntimeException("No file path " +
+ "after '-emma'. Exit");
+ emmaJarLocation = args[i];
+ }
+ else if (args[i].equals("-interactive"))
+ interactive = true;
+
+ else if ( args[ i ].equals("-autoxml") )
+ {
+ // -xmlout flag takes precedence over -autoxml
+ if (xmlfile == null )
+ {
+ isAutoXml = true;
+ if (++i >= args.length)
+ throw new RuntimeException("No file path after '-autoxml'.");
+ autoXmlDir = args[i];
+ }
+ }
+
+ }
+ // If the user wants an xml report, create a new TestReport.
+ if (xmlfile != null)
+ {
+ report = new TestReport(System.getProperties());
+ }
+
+ // Setup the data coverage dumping mechanism. The default configuration
+ // is to auto-detect EMMA, meaning if the emma classes are found on the
+ // classpath then we should force a dump of coverage data. Also, the user
+ // can configure with -with-emma=JARLOCATION or can specify -emma
+ // JARLOCATION on the command line to explicitly specify an emma.jar to use
+ // to dump coverage data.
+ if (emmaJarLocation == null)
+ emmaJarLocation = config.emmaString;
+ try
+ {
+ setupEMMA(!emmaJarLocation.equals("_auto_detect_emma_"));
+ }
+ catch (Exception emmaException)
+ {
+ useEMMA = false;
+ }
+
+ while (true)
+ {
+ // Ask Harness for a test to run, run it, report back to Harness, and
+ // then repeat the cycle.
+ try
+ {
+ testname = in.readLine();
+ if (testname == null)
+ System.exit(0);
+
+ if ( isAutoXml && !(testname.equals("_dump_data_")) && ! (testname.equals("_confirm_startup_")))
+ {
+ report = null;
+ xmlfile = getReportFileReady(testname);
+ report = new TestReport(System.getProperties());
+ }
+
+ if (testname.equals("_dump_data_"))
+ {
+ // Print the report if necessary.
+ if (report != null)
+ {
+ File f = new File(xmlfile);
+ try
+ {
+ report.writeXml(f);
+ }
+ catch (IOException e)
+ {
+ throw new Error("Failed to write data to xml file: "
+ + e.getMessage());
+ }
+ }
+
+ if (useEMMA)
+ dumpCoverageData();
+ else
+ System.out.println("_data_dump_okay_");
+ }
+ else if (testname.equals("_confirm_startup_"))
+ System.out.println("_startup_okay_");
+ else
+ {
+ RunnerProcess harness = new RunnerProcess();
+ runAndReport(harness, testname);
+ }
+ }
+ catch (IOException ioe)
+ {
+ String shortName = stripPrefix(testname);
+ if (verbose)
+ System.out.println ("TEST: " + shortName +
+ "\n FAIL: failed to load\n" +
+ "TEST FAILED: failed to load "+
+ shortName);
+ else
+ System.out.println("FAIL: " + stripPrefix(testname)
+ + "\n failed to load");
+ System.out.println("RunnerProcess:fail-0");
+ }
+ // Print the report if using -autoxml.
+ if (report != null && isAutoXml)
+ {
+ File f = new File(xmlfile);
+ try
+ {
+ report.writeXml(f);
+ }
+ catch (IOException e)
+ {
+ throw new Error("Failed to write data to xml file: "
+ + e.getMessage());
+ }
+ }
+
+ }
+ }
+
+ /**
+ * This method runs a single test. If an exception is caught some
+ * information is printed out so the test can be debugged.
+ * @param name the name of the test to run
+ */
+ protected void runtest(String name)
+ {
+ // Try to ensure we start off with a reasonably clean slate.
+ System.gc();
+ System.runFinalization();
+
+ currentResult = new TestResult(name.substring(12));
+ description = name;
+
+ checkPoint(null);
+
+ Testlet t = null;
+ try
+ {
+ Class<?> k = Class.forName(name);
+ int mods = k.getModifiers();
+ if (Modifier.isAbstract(mods))
+ {
+ description = NOT_A_TEST_DESCRIPTION;
+ return;
+ }
+
+ Object o = k.newInstance();
+ if (! (o instanceof Testlet))
+ {
+ description = NOT_A_TEST_DESCRIPTION;
+ return;
+ }
+ if (o instanceof VisualTestlet)
+ {
+ if (! interactive)
+ {
+ description = NOT_A_TEST_DESCRIPTION;
+ return;
+ }
+ }
+ else
+ {
+ if (interactive)
+ {
+ description = NOT_A_TEST_DESCRIPTION;
+ return;
+ }
+ }
+ t = (Testlet) o;
+ }
+ catch (Throwable ex)
+ {
+ description = FAIL_TO_LOAD_DESCRIPTION;
+ // Maybe the file was marked not-a-test, check that before we report
+ // it as an error
+ try
+ {
+ File f = new File(name.replace('.', File.separatorChar) + ".java");
+ BufferedReader r = new BufferedReader(new FileReader(f));
+ String firstLine = r.readLine();
+ // Since some people mistakenly put not-a-test not as the first line
+ // we have to check through the file.
+ while (firstLine != null)
+ {
+ if (firstLine.indexOf("not-a-test") != -1)
+ {
+ description = NOT_A_TEST_DESCRIPTION;
+ return;
+ }
+ firstLine = r.readLine();
+ }
+ }
+ catch(FileNotFoundException fnfe)
+ {
+ }
+ catch (IOException ioe)
+ {
+ }
+
+ String r = getStackTraceString(ex, " ");
+ currentResult.addException(ex, "failed loading class ", r);
+
+ debug(ex);
+ if (ex instanceof InstantiationException
+ || ex instanceof IllegalAccessException)
+ debug("Hint: is the code we just loaded a public non-abstract "
+ + "class with a public nullary constructor???");
+
+
+ if (!verbose)
+ System.out.println ("FAIL: " + stripPrefix(name)
+ + "\n exception when loading:");
+ else
+ {
+ System.out.println ("TEST: "+stripPrefix(name));
+ System.out.println(" FAIL: exception when loading");
+ }
+ if (exceptions)
+ System.out.println(getStackTraceString(ex, " "));
+
+ if (verbose)
+ System.out.println("TEST FAILED: exception when loading "
+ + stripPrefix(name));
+
+ if (report != null)
+ report.addTestResult(currentResult);
+
+ return;
+ }
+
+ // If the harness started okay, now we run the test.
+ if (t != null)
+ {
+ try
+ {
+ if (verbose)
+ System.out.println("TEST: " + stripPrefix(name));
+ t.test(this);
+ removeSecurityManager();
+ }
+ catch (Throwable ex)
+ {
+
+ String d = exceptionDetails(ex, name, exceptions);
+ String r = getStackTraceString(ex, " ");
+
+ if (failures == 0 && !verbose)
+ System.out.println ("FAIL: " + stripPrefix(name));
+ System.out.println(d);
+ removeSecurityManager();
+ currentResult.addException(ex, d, r);
+
+ if (exceptions)
+ System.out.println(getStackTraceString(ex, " "));
+ debug(ex);
+
+ if (verbose)
+ System.out.println("TEST FAILED: uncaught exception "
+ + stripPrefix(description));
+ description = UNCAUGHT_EXCEPTION_DESCRIPTION;
+ }
+ }
+ if (report != null)
+ report.addTestResult(currentResult);
+ }
+
+ /**
+ * Returns the stack trace associated with the given Throwable as
+ * a String.
+ * @param ex the Throwable
+ * @return a String representing the stack trace for the given Throwable.
+ */
+ private static String getStackTraceString(Throwable ex, String pad)
+ {
+ StackTraceElement[] st = ex.getStackTrace();
+ StringBuffer sb = new StringBuffer(pad + ex.toString() + "\n");
+ for (int i = 0; i < st.length; i++)
+ sb.append(pad + "at " + st[i].toString() + "\n");
+ sb.setLength(sb.length() - 1);
+ return sb.toString();
+ }
+
+ /**
+ * This method runs a single test in a new Harness and increments the
+ * total tests run and total failures, if the test fails. Prints
+ * PASS and adds to the report, if the appropriate options are enabled.
+ * @param harness the TestHarness to use for this test
+ * @param testName the name of the test
+ */
+ static void runAndReport(RunnerProcess harness, String testName)
+ {
+ // If this call to runtest hangs, Harness will terminate this process.
+ harness.runtest(testName.replace(File.separatorChar, '.'));
+
+ // If the test wasn't a real test, return and tell Harness so.
+ if (harness.description.equals(NOT_A_TEST_DESCRIPTION))
+ {
+ System.out.println("RunnerProcess:not-a-test");
+ return;
+ }
+ else if (harness.description.equals(FAIL_TO_LOAD_DESCRIPTION))
+ {
+ System.out.println("RunnerProcess:fail-0");
+ return;
+ }
+ else if (harness.description.equals(UNCAUGHT_EXCEPTION_DESCRIPTION))
+ {
+ System.out.println("RunnerProcess:fail-0");
+ return;
+ }
+
+ // Print out a summary.
+ int temp = harness.done();
+
+ // Report back to Harness that we've finished properly, whether the test
+ // passed or failed. Harness will wait for a message starting with
+ // "RunnerProcess" and if it doesn't receive it after a certain amount of
+ // time (specified in the timeout variable) it will consider the test hung
+ // and will terminate and restart this Process.
+ if (temp == 0)
+ System.out.println ("RunnerProcess:pass");
+ else
+ System.out.println("RunnerProcess:fail-" + temp);
+ }
+
+ private final String getDescription(StackTraceElement[] st)
+ {
+ // Find the line number of the check() call that failed.
+ int line = -1;
+ String fileName = description.substring(description.lastIndexOf('.') + 1);
+ fileName += ".java";
+ for (int i = 0; i < st.length; i++)
+ {
+ if (st[i].getClassName().startsWith((description))
+ && st[i].getFileName().equals(fileName))
+ {
+ line = st[i].getLineNumber();
+ break;
+ }
+ }
+
+ return (" line " + line + ": " + ((last_check == null) ? "" : last_check)
+ + " [" + (count + 1) + "]");
+ }
+
+ protected int getFailures()
+ {
+ return failures;
+ }
+
+ /**
+ * Removes the "gnu.testlet." from the start of a String.
+ * @param val the String
+ * @return the String with "gnu.testlet." removed
+ */
+ private static String stripPrefix(String val)
+ {
+ if (val.startsWith("gnu.testlet."))
+ val = val.substring(12);
+ return val;
+ }
+
+ /**
+ * A convenience method that sets a checkpoint with the specified name
+ * then prints a message about the forced fail.
+ *
+ * @param name the checkpoint name.
+ */
+ public void fail(String name)
+ {
+ checkPoint(name);
+ String desc = check2(false);
+ lastFailureMessage = "forced fail";
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+
+ /**
+ * Checks the two objects for equality and prints a message if they are not
+ * equal.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(Object result, Object expected)
+ {
+ boolean ok = (result == null ? expected == null : result.equals(expected));
+ String desc = check2(ok);
+ // This debug message may be misleading, depending on whether
+ // string conversion produces same results for unequal objects.
+ if (! ok)
+ {
+ String gotString = result == null ? "null"
+ : result.getClass().getName();
+ String expString = expected == null ? "null"
+ : expected.getClass().getName();
+
+ // If the strings are equal but the objects aren't, we have to tell
+ // the user so, otherwise we can just print the strings.
+ if (gotString.equals(expString))
+ {
+ // Since the toString() methods can print long and ugly information
+ // we only use them if the user really wants to see it, ie
+ // if they used the -debug option.
+ if (debug)
+ {
+ gotString = result.toString();
+ expString = expected.toString();
+ lastFailureMessage = "\n got " + gotString
+ + "\n\n but expected " + expString
+ + "\n\n";
+ }
+ else
+ {
+ lastFailureMessage = "Objects were not equal. " +
+ "Use -debug for more information.";
+ }
+ }
+ else
+ {
+ lastFailureMessage =
+ "got " + gotString + " but expected " + expString;
+ }
+ currentResult.addFail(desc + " -- " + lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * Checks two booleans for equality and prints out a message if they are not
+ * equal.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(boolean result, boolean expected)
+ {
+ boolean ok = (result == expected);
+ String desc = check2(ok);
+ if (! ok)
+ {
+ lastFailureMessage = "got " + result + " but expected " + expected;
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * Checks two ints for equality and prints out a message if they are not
+ * equal.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(int result, int expected)
+ {
+ boolean ok = (result == expected);
+ String desc = check2(ok);
+ if (! ok)
+ {
+ lastFailureMessage = "got " + result + " but expected " + expected;
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * Checks two longs for equality and prints out a message if they are not
+ * equal.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(long result, long expected)
+ {
+ boolean ok = (result == expected);
+ String desc = check2(ok);
+ if (! ok)
+ {
+ lastFailureMessage = "got " + result + " but expected " + expected;
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * Checks two doubles for equality and prints out a message if they are not
+ * equal.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(double result, double expected)
+ {
+ // This triple check overcomes the fact that == does not
+ // compare NaNs, and cannot tell between 0.0 and -0.0;
+ // and all without relying on java.lang.Double (which may
+ // itself be buggy - else why would we be testing it? ;)
+ // For 0, we switch to infinities, and for NaN, we rely
+ // on the identity in JLS 15.21.1 that NaN != NaN is true.
+ boolean ok = (result == expected ? (result != 0)
+ || (1 / result == 1 / expected)
+ : (result != result)
+ && (expected != expected));
+ String desc = check2(ok);
+ if (! ok)
+ {
+ lastFailureMessage = "got " + result + " but expected " + expected;
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * Checks if <code>result</code> is true. If not, prints out
+ * a message.
+ * @param result the boolean to check
+ */
+ public void check(boolean result)
+ {
+ String desc = check2(result);
+ if (!result)
+ {
+ lastFailureMessage = "boolean passed to check was false";
+ currentResult.addFail(desc + " -- " +lastFailureMessage);
+ System.out.println(lastFailureMessage);
+ }
+ }
+
+ /**
+ * This method prints out failures and checks the XFAILS file.
+ * @param result true if the test passed, false if it failed
+ */
+ private String check2(boolean result)
+ {
+ // Send a message to the Harness to let it know the current test
+ // isn't hung, to restart the timer.
+ System.out.println("RunnerProcess:restart-timer");
+
+ // If the test failed we have to print out some explanation.
+ StackTraceElement[] st = new Throwable().getStackTrace();
+ String desc = getDescription(st);
+
+ if (! result)
+ {
+ if (! expectedXfails.contains(desc))
+ {
+ // If the failure wasn't expected, we need to print it to the
+ // screen.
+ if (failures == 0 && !verbose)
+ System.out.println ("FAIL: " + stripPrefix(description));
+ if (verbose)
+ System.out.print(" FAIL:");
+ System.out.print(desc + " -- ");
+ ++failures;
+ }
+ else if (verbose)
+ {
+ // If it was expected but verbose is true, we also print it.
+ System.out.println("X" + desc + " -- ");
+ ++xfailures;
+ }
+ }
+ else
+ {
+ // The test passed. Only print info if verbose is true
+ currentResult.addPass(desc);
+ if (verbose)
+ {
+ if (expectedXfails.contains(desc))
+ {
+ System.out.println("XPASS: " + desc);
+ ++xpasses;
+ }
+ else
+ System.out.println(" pass:" + desc);
+ }
+ }
+ ++count;
+ ++total;
+ return desc;
+ }
+
+ public Reader getResourceReader(String name) throws ResourceNotFoundException
+ {
+ return new BufferedReader(new InputStreamReader(getResourceStream(name)));
+ }
+
+ public InputStream getResourceStream(String name)
+ throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length() > 1)
+ throw new Error("File.separator length is greater than 1");
+ String realName = name.replace('#', File.separator.charAt(0));
+ try
+ {
+ return new FileInputStream(getSourceDirectory() + File.separator
+ + realName);
+ }
+ catch (FileNotFoundException ex)
+ {
+ throw new ResourceNotFoundException(ex.getLocalizedMessage() + ": "
+ + getSourceDirectory()
+ + File.separator + realName);
+ }
+ }
+
+ public File getResourceFile(String name) throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length() > 1)
+ throw new Error("File.separator length is greater than 1");
+ String realName = name.replace('#', File.separator.charAt(0));
+ File f = new File(getSourceDirectory() + File.separator + realName);
+ if (! f.exists())
+ {
+ throw new ResourceNotFoundException("cannot find mauve resource file"
+ + ": " + getSourceDirectory()
+ + File.separator + realName);
+ }
+ return f;
+ }
+
+ public void checkPoint(String name)
+ {
+ last_check = name;
+ count = 0;
+ }
+
+ public void verbose(String message)
+ {
+ if (verbose)
+ System.out.println(message);
+ }
+
+ public void debug(String message)
+ {
+ debug(message, true);
+ }
+
+ public void debug(String message, boolean newline)
+ {
+ if (debug)
+ {
+ if (newline)
+ System.out.println(message);
+ else
+ System.out.print(message);
+ }
+ }
+
+ public void debug(Throwable ex)
+ {
+ if (debug)
+ ex.printStackTrace(System.out);
+ }
+
+ public void debug(Object[] o, String desc)
+ {
+ debug("Dumping Object Array: " + desc);
+ if (o == null)
+ {
+ debug("null");
+ return;
+ }
+
+ for (int i = 0; i < o.length; i++)
+ {
+ if (o[i] instanceof Object[])
+ debug((Object[]) o[i], desc + " element " + i);
+ else
+ debug(" Element " + i + ": " + o[i]);
+ }
+ }
+
+ private void removeSecurityManager()
+ {
+ while (true)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (!(sm instanceof TestSecurityManager))
+ break;
+ debug("warning: TestSecurityManager was not uninstalled");
+ ((TestSecurityManager) sm).uninstall();
+ }
+ }
+
+ /**
+ * This method returns some information about uncaught exceptions.
+ * Nothing is printed if the test was run with the -exceptions flag since in
+ * that case a full stack trace will be printed.
+ * @param ex the exception
+ * @param name the name of the test
+ * @param exceptions true if a full stack trace will be printed
+ * @return a String containing some information about the uncaught exception
+ */
+ private String exceptionDetails(Throwable ex, String name,
+ boolean exceptions)
+ {
+ // If we can't get a stack trace, we return no details.
+ StackTraceElement[] st = ex.getStackTrace();
+ if (st == null || st.length == 0)
+ return " uncaught exception:";
+
+ // lineOrigin will store the line number in the test method that caused
+ // the exception.
+ int lineOrigin = -1;
+
+ // fileName is the name of the Mauve test file
+ String fileName = name.substring(name.lastIndexOf('.') + 1);
+ fileName += ".java";
+
+ // This for loop looks for the line within the test method that caused the
+ // exception.
+ for (int i = 0; i < st.length; i++)
+ {
+ if (st[i].getClassName().startsWith(name)
+ && st[i].getFileName().equals(fileName))
+ {
+ lineOrigin = st[i].getLineNumber();
+ break;
+ }
+ }
+
+ // sb holds all the information we wish to return.
+ StringBuffer sb =
+ new StringBuffer(" " + (verbose ? "FAIL: " : "")+ "line " + lineOrigin
+ + ": " + (last_check == null ? "" : last_check) +
+ " [" + (count + 1) + "] -- uncaught exception:");
+
+ // If a full stack trace will be printed, this method returns no details.
+ if (exceptions)
+ return sb.toString();
+
+ // Otherwise, add some details onto the buffer before returning.
+ sb.append("\n " + ex.getClass().getName() + " in ");
+ sb.append(stripPrefix(st[0].getClassName()) + "." + st[0].getMethodName()
+ + " (line " + st[0].getLineNumber() + ")");
+ sb.append("\n Run tests with -exceptions to print exception " +
+ "stack traces.");
+ return sb.toString();
+ }
+
+ /**
+ * This method is called from Harness to tidy up. It prints out appropriate
+ * information and returns 0 if the test passed or 1 if it failed.
+ * @return 0 if the test passed, 1 if it failed
+ */
+ protected int done()
+ {
+ if (failures > 0 && verbose)
+ {
+ System.out.print("TEST FAILED: ");
+ System.out.println(failures + " of " + total + " checks failed "
+ + stripPrefix(description));
+ }
+ else if (verbose)
+ System.out.println("TEST PASSED (" + total + " checks) "
+ + stripPrefix(description));
+ if (xpasses > 0)
+ System.out.println(xpasses + " of " + total
+ + " tests unexpectedly passed");
+ if (xfailures > 0)
+ System.out.println(xfailures + " of " + total
+ + " tests expectedly failed");
+ return failures;
+ }
+
+ /**
+ * Sets up the compiler by reflection, sets up the compiler options,
+ * and the PrintWriters to get error messages from the compiler.
+ *
+ * @throws Exception if the emma jar can't be found and the sources
+ * aren't in the proper place.
+ */
+ private static void setupEMMA(boolean useJar) throws Exception
+ {
+ ClassNotFoundException cnfe = null;
+ Class<?> klass = null;
+ String classname = "com.vladium.emma.rt.RT";
+ if (!useJar)
+ {
+ try
+ {
+ klass = Class.forName(classname);
+ }
+ catch (ClassNotFoundException e)
+ {
+ cnfe = e;
+ useJar = true;
+ }
+ }
+
+ if (useJar)
+ {
+ File jar = new File(emmaJarLocation);
+ if (! jar.exists() || ! jar.canRead())
+ throw cnfe;
+
+ ClassLoader loader = new URLClassLoader(new URL[] { jar.toURL() });
+ try
+ {
+ klass = loader.loadClass(classname);
+ }
+ catch (ClassNotFoundException f)
+ {
+ throw cnfe;
+ }
+ }
+
+ emmaMethod =
+ klass.getMethod
+ ("dumpCoverageData", File.class, boolean.class, boolean.class );
+ }
+
+ /**
+ * This method forces EMMA to dump its coverage data. We do this
+ * when all tests have been completed and only if the user either
+ * configured with --with-emma-jar or specified -emma-jar on the
+ * command line.
+ */
+ private static void dumpCoverageData()
+ {
+ try
+ {
+ emmaMethod.invoke(null, new Object[] {
+ new File("coverage.ec"),
+ Boolean.TRUE,
+ Boolean.TRUE });
+ }
+ catch (Exception e)
+ {
+ // This shouldn't happen.
+ }
+ System.out.println("_data_dump_okay_");
+ }
+
+ /**
+ * Generates the path to store the test XML result file
+ * @param the name of the test
+ * @return String representing the full path to the XML file
+ * @throws exception if unable to make parent Directories for XML file
+ */
+ private static String getReportFileReady(String testcase) {
+ testcase = testcase.replace( "gnu/testlet" , autoXmlDir);
+ try{
+ new File ( testcase.substring( 0 , testcase.lastIndexOf("/") ) ).mkdirs();
+ } catch (Exception ex){
+ System.err.println("Unable to create XML file path: " + ex);
+ System.exit(1);
+ }
+ return testcase + ".xml";
+ }
+}
diff --git a/THANKS b/THANKS
new file mode 100644
index 00000000..b6492947
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,21 @@
+The following people have contributed to the Mauve test suite:
+
+Aaron M. Renn <arenn@urbanophile.com>
+Andrew Haley <aph@cygnus.com>
+Anthony Green <green@cygnus.com>
+Artur Biesiadowski <abies@pg.gda.pl>
+David Gilbert <david.gilbert@object-refinery.com>
+Godmar Back <gback@cs.utah.edu>
+Per Bothner <bothner@cygnus.com>
+Tom Tromey <tromey@cygnus.com>
+Warren Levy <warrenl@cygnus.com>
+Hewlett-Packard Company
+Sascha Brawer <brawer@dandelis.ch>
+Michael Koch <konqueror@gmx.de>
+Audrius Meskauskas <audriusa@Bioinformatics.org>
+Duncan Grisby <dgrisby@users.sourceforge.net>
+NEC corporation.
+Object Oriented Concepts, Inc
+IONA Technologies, Inc.
+
+
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 00000000..45fa8bc5
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,31 @@
+dnl -----------------------------------------------------------
+dnl Original by Mark Elbrecht <snowball3@bigfoot.com>
+dnl Modified by Brian Jones <cbj@gnu.org> for Mauve
+dnl acx_check_pathname_style.m4
+dnl http://research.cys.de/autoconf-archive/
+
+AC_DEFUN([ACX_CHECK_PATHNAME_STYLE_DOS],
+[AC_MSG_CHECKING(for Windows and DOS and OS/2 style pathnames)
+AC_CACHE_VAL(acx_cv_pathname_style_dos,
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ acx_cv_pathname_style_dos="no"
+ case ${host_os} in
+ *djgpp | *mingw32* | *emx*) acx_cv_pathname_style_dos="yes" ;;
+ esac
+ ])
+AC_MSG_RESULT($acx_cv_pathname_style_dos)
+if test "$acx_cv_pathname_style_dos" = "yes"; then
+ AC_DEFINE(HAVE_PATHNAME_STYLE_DOS,,[defined if running on a system with dos style paths])
+ CHECK_PATH_SEPARATOR=';'
+ CHECK_FILE_SEPARATOR='\\'
+else
+ CHECK_PATH_SEPARATOR=':'
+ CHECK_FILE_SEPARATOR='/'
+fi
+
+AC_SUBST(CHECK_PATH_SEPARATOR)
+AC_SUBST(CHECK_FILE_SEPARATOR)
+])
+
+
+dnl -----------------------------------------------------------
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 00000000..6b16d12b
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,991 @@
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.6], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([acinclude.m4])
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
new file mode 100644
index 00000000..2bb6910f
--- /dev/null
+++ b/autom4te.cache/output.0
@@ -0,0 +1,4879 @@
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for mauve 0.0.
+@%:@
+@%:@
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@
+@%:@
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in @%:@(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in @%:@(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} @%:@ as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIB@&t@OBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='mauve'
+PACKAGE_TARNAME='mauve'
+PACKAGE_VERSION='0.0'
+PACKAGE_STRING='mauve 0.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="gnu/testlet/Testlet.java"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIB@&t@OBJS
+MAIL_HOST
+TMPDIR
+BUILDDIR
+SRCDIR
+JAVAC
+JAVA
+AUTO_COMPILE
+ECJ_JAR
+EMMA
+TEST_JAVA
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+CHECK_FILE_SEPARATOR
+CHECK_PATH_SEPARATOR
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+with_vm
+with_emma
+with_ecj_jar
+enable_auto_compilation
+with_tmpdir
+with_mailhost
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures mauve 0.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ @<:@@S|@ac_default_prefix@:>@
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ @<:@PREFIX@:>@
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/mauve@:>@
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of mauve 0.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-auto-compilation Use ecj to compile tests on the fly
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-vm=TESTJVM Run the tests with TESTJVM
+ --with-emma(=JARLOCATION) Use emma, either unpacked in classpath
+folder or at the specified JARLOCATION
+ --with-ecj-jar=JARLOCATION Use the ecj jar found at JARLOCATION for
+auto-compilation
+
+ --with-tmpdir=DIR Put temporary files in DIR /tmp
+
+ --with-mailhost=hostname Server for socket tests mx10.gnu.org
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+mauve configure 0.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in @%:@((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in @%:@((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='mauve'
+ VERSION='0.0'
+
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+@%:@define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+_am_tools=${am_cv_prog_tar_pax-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x pax -w "$$tardir"'
+ am__tar_='pax -L -x pax -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+ am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+ am__untar='cpio -i -H pax -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_pax}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if ${am_cv_prog_tar_pax+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_pax=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Windows and DOS and OS/2 style pathnames" >&5
+$as_echo_n "checking for Windows and DOS and OS/2 style pathnames... " >&6; }
+if ${acx_cv_pathname_style_dos+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ acx_cv_pathname_style_dos="no"
+ case ${host_os} in
+ *djgpp | *mingw32* | *emx*) acx_cv_pathname_style_dos="yes" ;;
+ esac
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_pathname_style_dos" >&5
+$as_echo "$acx_cv_pathname_style_dos" >&6; }
+if test "$acx_cv_pathname_style_dos" = "yes"; then
+
+$as_echo "@%:@define HAVE_PATHNAME_STYLE_DOS /**/" >>confdefs.h
+
+ CHECK_PATH_SEPARATOR=';'
+ CHECK_FILE_SEPARATOR='\\'
+else
+ CHECK_PATH_SEPARATOR=':'
+ CHECK_FILE_SEPARATOR='/'
+fi
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $@%:@ != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+@%:@ Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+
+@%:@ Check whether --with-vm was given.
+if test "${with_vm+set}" = set; then :
+ withval=$with_vm; TEST_JAVA="$with_vm"
+else
+ TEST_JAVA="java"
+fi
+
+
+
+
+
+@%:@ Check whether --with-emma was given.
+if test "${with_emma+set}" = set; then :
+ withval=$with_emma; EMMA="$with_emma"
+else
+ EMMA="yes"
+fi
+
+if test "$EMMA" = "yes"
+then
+EMMA="_auto_detect_emma_"
+fi
+
+
+
+@%:@ Check whether --with-ecj-jar was given.
+if test "${with_ecj_jar+set}" = set; then :
+ withval=$with_ecj_jar; ECJ_JAR="$with_ecj_jar"
+else
+ ECJ_JAR=yes
+fi
+
+if test "$ECJ_JAR" = "yes"
+then
+ECJ_JAR="/usr/share/java/eclipse-ecj.jar"
+fi
+
+
+
+@%:@ Check whether --enable-auto-compilation was given.
+if test "${enable_auto_compilation+set}" = set; then :
+ enableval=$enable_auto_compilation; AUTO_COMPILE="$enable_auto_compilation"
+else
+ AUTO_COMPILE="yes"
+fi
+
+
+
+
+JAVA=${JAVA-java}
+
+JAVAC=${JAVAC-javac}
+
+
+SRCDIR=`(cd $srcdir; pwd)`
+
+BUILDDIR=`pwd`
+
+
+
+@%:@ Check whether --with-tmpdir was given.
+if test "${with_tmpdir+set}" = set; then :
+ withval=$with_tmpdir;
+TMPDIR="$with_tmpdir"
+fi
+
+
+TMPDIR=${TMPDIR-/tmp}
+
+
+
+@%:@ Check whether --with-mailhost was given.
+if test "${with_mailhost+set}" = set; then :
+ withval=$with_mailhost;
+MAIL_HOST="$with_mailhost"
+fi
+
+
+MAIL_HOST=${MAIL_HOST-mx10.gnu.org}
+
+
+if test ! -d gnu; then
+ mkdir gnu
+fi
+if test ! -d gnu/testlet; then
+ mkdir gnu/testlet
+fi
+
+ac_config_files="$ac_config_files Makefile gnu/testlet/config.java"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIB@&t@OBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in @%:@(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+mauve config.status 0.0
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "gnu/testlet/config.java") CONFIG_FILES="$CONFIG_FILES gnu/testlet/config.java" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1
new file mode 100644
index 00000000..2bb6910f
--- /dev/null
+++ b/autom4te.cache/output.1
@@ -0,0 +1,4879 @@
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for mauve 0.0.
+@%:@
+@%:@
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@
+@%:@
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in @%:@(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in @%:@(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in @%:@ ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} @%:@ as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIB@&t@OBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='mauve'
+PACKAGE_TARNAME='mauve'
+PACKAGE_VERSION='0.0'
+PACKAGE_STRING='mauve 0.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="gnu/testlet/Testlet.java"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIB@&t@OBJS
+MAIL_HOST
+TMPDIR
+BUILDDIR
+SRCDIR
+JAVAC
+JAVA
+AUTO_COMPILE
+ECJ_JAR
+EMMA
+TEST_JAVA
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+CHECK_FILE_SEPARATOR
+CHECK_PATH_SEPARATOR
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+with_vm
+with_emma
+with_ecj_jar
+enable_auto_compilation
+with_tmpdir
+with_mailhost
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures mauve 0.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ @<:@@S|@ac_default_prefix@:>@
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ @<:@PREFIX@:>@
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/mauve@:>@
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of mauve 0.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-auto-compilation Use ecj to compile tests on the fly
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-vm=TESTJVM Run the tests with TESTJVM
+ --with-emma(=JARLOCATION) Use emma, either unpacked in classpath
+folder or at the specified JARLOCATION
+ --with-ecj-jar=JARLOCATION Use the ecj jar found at JARLOCATION for
+auto-compilation
+
+ --with-tmpdir=DIR Put temporary files in DIR /tmp
+
+ --with-mailhost=hostname Server for socket tests mx10.gnu.org
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+mauve configure 0.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in @%:@((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in @%:@((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='mauve'
+ VERSION='0.0'
+
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+@%:@define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+_am_tools=${am_cv_prog_tar_pax-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x pax -w "$$tardir"'
+ am__tar_='pax -L -x pax -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+ am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+ am__untar='cpio -i -H pax -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_pax}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if ${am_cv_prog_tar_pax+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_pax=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Windows and DOS and OS/2 style pathnames" >&5
+$as_echo_n "checking for Windows and DOS and OS/2 style pathnames... " >&6; }
+if ${acx_cv_pathname_style_dos+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ acx_cv_pathname_style_dos="no"
+ case ${host_os} in
+ *djgpp | *mingw32* | *emx*) acx_cv_pathname_style_dos="yes" ;;
+ esac
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_pathname_style_dos" >&5
+$as_echo "$acx_cv_pathname_style_dos" >&6; }
+if test "$acx_cv_pathname_style_dos" = "yes"; then
+
+$as_echo "@%:@define HAVE_PATHNAME_STYLE_DOS /**/" >>confdefs.h
+
+ CHECK_PATH_SEPARATOR=';'
+ CHECK_FILE_SEPARATOR='\\'
+else
+ CHECK_PATH_SEPARATOR=':'
+ CHECK_FILE_SEPARATOR='/'
+fi
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $@%:@ != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+@%:@ Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+
+@%:@ Check whether --with-vm was given.
+if test "${with_vm+set}" = set; then :
+ withval=$with_vm; TEST_JAVA="$with_vm"
+else
+ TEST_JAVA="java"
+fi
+
+
+
+
+
+@%:@ Check whether --with-emma was given.
+if test "${with_emma+set}" = set; then :
+ withval=$with_emma; EMMA="$with_emma"
+else
+ EMMA="yes"
+fi
+
+if test "$EMMA" = "yes"
+then
+EMMA="_auto_detect_emma_"
+fi
+
+
+
+@%:@ Check whether --with-ecj-jar was given.
+if test "${with_ecj_jar+set}" = set; then :
+ withval=$with_ecj_jar; ECJ_JAR="$with_ecj_jar"
+else
+ ECJ_JAR=yes
+fi
+
+if test "$ECJ_JAR" = "yes"
+then
+ECJ_JAR="/usr/share/java/eclipse-ecj.jar"
+fi
+
+
+
+@%:@ Check whether --enable-auto-compilation was given.
+if test "${enable_auto_compilation+set}" = set; then :
+ enableval=$enable_auto_compilation; AUTO_COMPILE="$enable_auto_compilation"
+else
+ AUTO_COMPILE="yes"
+fi
+
+
+
+
+JAVA=${JAVA-java}
+
+JAVAC=${JAVAC-javac}
+
+
+SRCDIR=`(cd $srcdir; pwd)`
+
+BUILDDIR=`pwd`
+
+
+
+@%:@ Check whether --with-tmpdir was given.
+if test "${with_tmpdir+set}" = set; then :
+ withval=$with_tmpdir;
+TMPDIR="$with_tmpdir"
+fi
+
+
+TMPDIR=${TMPDIR-/tmp}
+
+
+
+@%:@ Check whether --with-mailhost was given.
+if test "${with_mailhost+set}" = set; then :
+ withval=$with_mailhost;
+MAIL_HOST="$with_mailhost"
+fi
+
+
+MAIL_HOST=${MAIL_HOST-mx10.gnu.org}
+
+
+if test ! -d gnu; then
+ mkdir gnu
+fi
+if test ! -d gnu/testlet; then
+ mkdir gnu/testlet
+fi
+
+ac_config_files="$ac_config_files Makefile gnu/testlet/config.java"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIB@&t@OBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in @%:@(
+ *posix*) :
+ set -o posix ;; @%:@(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in @%:@(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} @%:@ as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+mauve config.status 0.0
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "gnu/testlet/config.java") CONFIG_FILES="$CONFIG_FILES gnu/testlet/config.java" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
new file mode 100644
index 00000000..70742bd2
--- /dev/null
+++ b/autom4te.cache/requests
@@ -0,0 +1,148 @@
+# This file was generated by Autom4te Sat May 26 18:17:46 UTC 2012.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+@request = (
+ bless( [
+ '0',
+ 1,
+ [
+ '/usr/share/autoconf'
+ ],
+ [
+ '/usr/share/autoconf/autoconf/autoconf.m4f',
+ 'aclocal.m4',
+ 'configure.in'
+ ],
+ {
+ '_LT_AC_TAGCONFIG' => 1,
+ 'AM_PROG_F77_C_O' => 1,
+ 'AC_INIT' => 1,
+ 'm4_pattern_forbid' => 1,
+ 'AC_CANONICAL_TARGET' => 1,
+ '_AM_COND_IF' => 1,
+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
+ 'AC_SUBST' => 1,
+ 'AC_CANONICAL_HOST' => 1,
+ 'AC_FC_SRCEXT' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AC_CONFIG_SUBDIRS' => 1,
+ 'AM_PATH_GUILE' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AC_REQUIRE_AUX_FILE' => 1,
+ 'AC_CONFIG_LINKS' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
+ 'm4_sinclude' => 1,
+ 'AM_MAINTAINER_MODE' => 1,
+ 'AM_NLS' => 1,
+ 'AC_FC_PP_DEFINE' => 1,
+ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+ '_m4_warn' => 1,
+ 'AM_MAKEFILE_INCLUDE' => 1,
+ 'AM_PROG_CXX_C_O' => 1,
+ '_AM_COND_ENDIF' => 1,
+ '_AM_MAKEFILE_INCLUDE' => 1,
+ 'AM_ENABLE_MULTILIB' => 1,
+ 'AM_PROG_MOC' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'AC_CONFIG_FILES' => 1,
+ 'include' => 1,
+ 'LT_INIT' => 1,
+ 'AM_PROG_AR' => 1,
+ 'AM_GNU_GETTEXT' => 1,
+ 'AC_LIBSOURCE' => 1,
+ 'AC_CANONICAL_BUILD' => 1,
+ 'AM_PROG_FC_C_O' => 1,
+ 'AC_FC_FREEFORM' => 1,
+ 'AC_FC_PP_SRCEXT' => 1,
+ 'AH_OUTPUT' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_CONFIG_AUX_DIR' => 1,
+ 'AM_PROG_CC_C_O' => 1,
+ 'sinclude' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AC_CANONICAL_SYSTEM' => 1,
+ 'AM_XGETTEXT_OPTION' => 1,
+ 'AC_CONFIG_HEADERS' => 1,
+ 'AC_DEFINE_TRACE_LITERAL' => 1,
+ 'AM_POT_TOOLS' => 1,
+ 'm4_include' => 1,
+ '_AM_COND_ELSE' => 1,
+ 'AC_SUBST_TRACE' => 1
+ }
+ ], 'Autom4te::Request' ),
+ bless( [
+ '1',
+ 1,
+ [
+ '/usr/share/autoconf'
+ ],
+ [
+ '/usr/share/autoconf/autoconf/autoconf.m4f',
+ '/usr/share/aclocal-1.11/amversion.m4',
+ '/usr/share/aclocal-1.11/auxdir.m4',
+ '/usr/share/aclocal-1.11/cond.m4',
+ '/usr/share/aclocal-1.11/depend.m4',
+ '/usr/share/aclocal-1.11/depout.m4',
+ '/usr/share/aclocal-1.11/init.m4',
+ '/usr/share/aclocal-1.11/install-sh.m4',
+ '/usr/share/aclocal-1.11/lead-dot.m4',
+ '/usr/share/aclocal-1.11/make.m4',
+ '/usr/share/aclocal-1.11/missing.m4',
+ '/usr/share/aclocal-1.11/mkdirp.m4',
+ '/usr/share/aclocal-1.11/options.m4',
+ '/usr/share/aclocal-1.11/runlog.m4',
+ '/usr/share/aclocal-1.11/sanity.m4',
+ '/usr/share/aclocal-1.11/silent.m4',
+ '/usr/share/aclocal-1.11/strip.m4',
+ '/usr/share/aclocal-1.11/substnot.m4',
+ '/usr/share/aclocal-1.11/tar.m4',
+ 'acinclude.m4',
+ 'configure.in'
+ ],
+ {
+ 'm4_pattern_forbid' => 1,
+ 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+ '_AM_SET_OPTION' => 1,
+ 'AC_DEFUN' => 1,
+ 'AM_PROG_MKDIR_P' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'ACX_CHECK_PATHNAME_STYLE_DOS' => 1,
+ 'AM_MISSING_HAS_RUN' => 1,
+ 'AM_SUBST_NOTMAKE' => 1,
+ 'AM_MISSING_PROG' => 1,
+ 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'AC_DEFUN_ONCE' => 1,
+ 'AM_PROG_INSTALL_STRIP' => 1,
+ '_m4_warn' => 1,
+ 'AM_SANITY_CHECK' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'include' => 1,
+ '_AM_PROG_TAR' => 1,
+ 'AM_AUX_DIR_EXPAND' => 1,
+ 'AM_DEP_TRACK' => 1,
+ '_AM_SET_OPTIONS' => 1,
+ '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'AM_RUN_LOG' => 1,
+ '_AM_IF_OPTION' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'm4_pattern_allow' => 1,
+ '_AM_AUTOCONF_VERSION' => 1,
+ '_AM_MANGLE_OPTION' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AM_SET_LEADING_DOT' => 1,
+ 'AM_SET_DEPDIR' => 1,
+ '_AM_DEPENDENCIES' => 1,
+ 'm4_include' => 1,
+ 'AM_PROG_INSTALL_SH' => 1,
+ '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+ 'AU_DEFUN' => 1,
+ 'AM_MAKE_INCLUDE' => 1
+ }
+ ], 'Autom4te::Request' )
+ );
+
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
new file mode 100644
index 00000000..4eab0b69
--- /dev/null
+++ b/autom4te.cache/traces.0
@@ -0,0 +1,406 @@
+m4trace:aclocal.m4:991: -1- m4_include([acinclude.m4])
+m4trace:configure.in:2: -1- AC_INIT([mauve], [0.0])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.in:2: -1- AC_SUBST([SHELL])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.in:2: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:2: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.in:2: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.in:2: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.in:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.in:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.in:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.in:2: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.in:2: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.in:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.in:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.in:2: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.in:2: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.in:2: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.in:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+ ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.in:2: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.in:2: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.in:2: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.in:2: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.in:2: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.in:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.in:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.in:2: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.in:2: -1- AC_SUBST([DEFS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.in:2: -1- AC_SUBST([ECHO_C])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.in:2: -1- AC_SUBST([ECHO_N])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.in:2: -1- AC_SUBST([ECHO_T])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.in:2: -1- AC_SUBST([LIBS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:2: -1- AC_SUBST([build_alias])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.in:2: -1- AC_SUBST([host_alias])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.in:2: -1- AC_SUBST([target_alias])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.in:4: -1- AM_INIT_AUTOMAKE([tar-pax])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.in:4: -1- AM_AUTOMAKE_VERSION([1.11.6])
+m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.in:4: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.in:4: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.in:4: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.in:4: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__isrc])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.in:4: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.in:4: -1- AC_SUBST([CYGPATH_W])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([CYGPATH_W])
+m4trace:configure.in:4: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.in:4: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE])
+m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.in:4: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([VERSION])
+m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
+m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
+@%:@undef PACKAGE])
+m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
+m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.in:4: -1- AH_OUTPUT([VERSION], [/* Version number of package */
+@%:@undef VERSION])
+m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([missing])
+m4trace:configure.in:4: -1- AC_SUBST([ACLOCAL])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([ACLOCAL])
+m4trace:configure.in:4: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.in:4: -1- AC_SUBST([AUTOCONF])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOCONF])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.in:4: -1- AC_SUBST([AUTOMAKE])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOMAKE])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.in:4: -1- AC_SUBST([AUTOHEADER])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOHEADER])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.in:4: -1- AC_SUBST([MAKEINFO])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([MAKEINFO])
+m4trace:configure.in:4: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.in:4: -1- AC_SUBST([install_sh])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([install_sh])
+m4trace:configure.in:4: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.in:4: -1- AC_SUBST([STRIP])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.in:4: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.in:4: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.in:4: -1- AC_SUBST([MKDIR_P])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.in:4: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.in:4: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.in:4: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.in:4: -1- AC_SUBST([AWK])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.in:4: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.in:4: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.in:4: -1- AC_SUBST([am__leading_dot])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__leading_dot])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.in:4: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([AMTAR])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.in:4: -1- AC_SUBST([am__tar])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__tar])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.in:4: -1- AC_SUBST([am__untar])
+m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__untar])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.in:7: -1- AC_CANONICAL_HOST
+m4trace:configure.in:7: -1- AC_CANONICAL_BUILD
+m4trace:configure.in:7: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.in:7: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.in:7: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([build])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build$])
+m4trace:configure.in:7: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.in:7: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.in:7: -1- AC_SUBST([build_os])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.in:7: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([host])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host$])
+m4trace:configure.in:7: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.in:7: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.in:7: -1- AC_SUBST([host_os])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.in:7: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PATHNAME_STYLE_DOS])
+m4trace:configure.in:7: -1- m4_pattern_allow([^HAVE_PATHNAME_STYLE_DOS$])
+m4trace:configure.in:7: -1- AH_OUTPUT([HAVE_PATHNAME_STYLE_DOS], [/* defined if running on a system with dos style paths */
+@%:@undef HAVE_PATHNAME_STYLE_DOS])
+m4trace:configure.in:7: -1- AC_SUBST([CHECK_PATH_SEPARATOR])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([CHECK_PATH_SEPARATOR])
+m4trace:configure.in:7: -1- m4_pattern_allow([^CHECK_PATH_SEPARATOR$])
+m4trace:configure.in:7: -1- AC_SUBST([CHECK_FILE_SEPARATOR])
+m4trace:configure.in:7: -1- AC_SUBST_TRACE([CHECK_FILE_SEPARATOR])
+m4trace:configure.in:7: -1- m4_pattern_allow([^CHECK_FILE_SEPARATOR$])
+m4trace:configure.in:10: -1- AC_SUBST([CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.in:10: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.in:10: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.in:10: -1- AC_SUBST([LIBS])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.in:10: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:10: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:10: -1- AC_SUBST([CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- AC_SUBST([CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- AC_SUBST([CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- AC_SUBST([CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.in:10: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.in:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.in:10: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.in:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.in:10: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.in:10: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.in:10: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.in:10: -1- AC_SUBST([am__include])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.in:10: -1- AC_SUBST([am__quote])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([am__quote])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.in:10: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.in:10: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.in:10: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.in:10: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.in:10: -1- AC_SUBST([am__nodep])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([am__nodep])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.in:10: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.in:10: -1- AM_CONDITIONAL([am__fastdepCC], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.in:10: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.in:10: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.in:10: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.in:16: -1- AC_SUBST([TEST_JAVA])
+m4trace:configure.in:16: -1- AC_SUBST_TRACE([TEST_JAVA])
+m4trace:configure.in:16: -1- m4_pattern_allow([^TEST_JAVA$])
+m4trace:configure.in:27: -1- AC_SUBST([EMMA])
+m4trace:configure.in:27: -1- AC_SUBST_TRACE([EMMA])
+m4trace:configure.in:27: -1- m4_pattern_allow([^EMMA$])
+m4trace:configure.in:38: -1- AC_SUBST([ECJ_JAR])
+m4trace:configure.in:38: -1- AC_SUBST_TRACE([ECJ_JAR])
+m4trace:configure.in:38: -1- m4_pattern_allow([^ECJ_JAR$])
+m4trace:configure.in:49: -1- AC_SUBST([AUTO_COMPILE])
+m4trace:configure.in:49: -1- AC_SUBST_TRACE([AUTO_COMPILE])
+m4trace:configure.in:49: -1- m4_pattern_allow([^AUTO_COMPILE$])
+m4trace:configure.in:53: -1- AC_SUBST([JAVA])
+m4trace:configure.in:53: -1- AC_SUBST_TRACE([JAVA])
+m4trace:configure.in:53: -1- m4_pattern_allow([^JAVA$])
+m4trace:configure.in:55: -1- AC_SUBST([JAVAC])
+m4trace:configure.in:55: -1- AC_SUBST_TRACE([JAVAC])
+m4trace:configure.in:55: -1- m4_pattern_allow([^JAVAC$])
+m4trace:configure.in:58: -1- AC_SUBST([SRCDIR])
+m4trace:configure.in:58: -1- AC_SUBST_TRACE([SRCDIR])
+m4trace:configure.in:58: -1- m4_pattern_allow([^SRCDIR$])
+m4trace:configure.in:60: -1- AC_SUBST([BUILDDIR])
+m4trace:configure.in:60: -1- AC_SUBST_TRACE([BUILDDIR])
+m4trace:configure.in:60: -1- m4_pattern_allow([^BUILDDIR$])
+m4trace:configure.in:70: -1- AC_SUBST([TMPDIR])
+m4trace:configure.in:70: -1- AC_SUBST_TRACE([TMPDIR])
+m4trace:configure.in:70: -1- m4_pattern_allow([^TMPDIR$])
+m4trace:configure.in:81: -1- AC_SUBST([MAIL_HOST])
+m4trace:configure.in:81: -1- AC_SUBST_TRACE([MAIL_HOST])
+m4trace:configure.in:81: -1- m4_pattern_allow([^MAIL_HOST$])
+m4trace:configure.in:90: -1- AC_CONFIG_FILES([Makefile gnu/testlet/config.java])
+m4trace:configure.in:90: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+You should run autoupdate.], [])
+m4trace:configure.in:90: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.in:90: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:90: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.in:90: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.in:90: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.in:90: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.in:90: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.in:90: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.in:90: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.in:90: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.in:90: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.in:90: -1- AC_SUBST_TRACE([MKDIR_P])
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
new file mode 100644
index 00000000..dcdda651
--- /dev/null
+++ b/autom4te.cache/traces.1
@@ -0,0 +1,826 @@
+m4trace:/usr/share/aclocal-1.11/amversion.m4:17: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.6], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.11/amversion.m4:36: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.11/auxdir.m4:49: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+m4trace:/usr/share/aclocal-1.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.11/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.11/depend.m4:164: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.11/depend.m4:172: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])
+m4trace:/usr/share/aclocal-1.11/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+m4trace:/usr/share/aclocal-1.11/init.m4:126: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+m4trace:/usr/share/aclocal-1.11/install-sh.m4:14: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+m4trace:/usr/share/aclocal-1.11/lead-dot.m4:12: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+m4trace:/usr/share/aclocal-1.11/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+m4trace:/usr/share/aclocal-1.11/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.11/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.11/mkdirp.m4:14: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+m4trace:/usr/share/aclocal-1.11/options.m4:14: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.11/options.m4:20: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+m4trace:/usr/share/aclocal-1.11/options.m4:26: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.11/options.m4:32: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.11/runlog.m4:14: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+m4trace:/usr/share/aclocal-1.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using `$V' instead of `$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.11/strip.m4:19: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+m4trace:/usr/share/aclocal-1.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:acinclude.m4:7: -1- AC_DEFUN([ACX_CHECK_PATHNAME_STYLE_DOS], [AC_MSG_CHECKING(for Windows and DOS and OS/2 style pathnames)
+AC_CACHE_VAL(acx_cv_pathname_style_dos,
+ [AC_REQUIRE([AC_CANONICAL_HOST])
+ acx_cv_pathname_style_dos="no"
+ case ${host_os} in
+ *djgpp | *mingw32* | *emx*) acx_cv_pathname_style_dos="yes" ;;
+ esac
+ ])
+AC_MSG_RESULT($acx_cv_pathname_style_dos)
+if test "$acx_cv_pathname_style_dos" = "yes"; then
+ AC_DEFINE(HAVE_PATHNAME_STYLE_DOS,,[defined if running on a system with dos style paths])
+ CHECK_PATH_SEPARATOR=';'
+ CHECK_FILE_SEPARATOR='\\'
+else
+ CHECK_PATH_SEPARATOR=':'
+ CHECK_FILE_SEPARATOR='/'
+fi
+
+AC_SUBST(CHECK_PATH_SEPARATOR)
+AC_SUBST(CHECK_FILE_SEPARATOR)
+])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.in:4: -1- AM_INIT_AUTOMAKE([tar-pax])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.in:4: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.in:4: -1- AM_AUTOMAKE_VERSION([1.11.6])
+m4trace:configure.in:4: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.in:4: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.in:4: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.in:4: -1- _AM_SET_OPTIONS([tar-pax])
+m4trace:configure.in:4: -1- _AM_SET_OPTION([tar-pax])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.in:4: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.in:4: -1- AM_SANITY_CHECK
+m4trace:configure.in:4: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.in:4: -1- AM_MISSING_HAS_RUN
+m4trace:configure.in:4: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.in:4: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.in:4: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.in:4: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.in:4: -1- AM_PROG_INSTALL_SH
+m4trace:configure.in:4: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.in:4: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.in:4: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.in:4: -1- AM_PROG_MKDIR_P
+m4trace:configure.in:4: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.in:4: -1- AM_SET_LEADING_DOT
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.in:4: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.in:4: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.in:4: -1- _AM_PROG_TAR([pax])
+m4trace:configure.in:4: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.in:4: -1- AM_RUN_LOG([$_am_tar --version])
+m4trace:configure.in:4: -1- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+m4trace:configure.in:4: -1- AM_RUN_LOG([$am__untar <conftest.tar])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.in:4: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.in:4: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.in:4: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])
+m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([silent-rules])
+m4trace:configure.in:7: -1- ACX_CHECK_PATHNAME_STYLE_DOS
+m4trace:configure.in:7: -1- m4_pattern_allow([^build$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^HAVE_PATHNAME_STYLE_DOS$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^CHECK_PATH_SEPARATOR$])
+m4trace:configure.in:7: -1- m4_pattern_allow([^CHECK_FILE_SEPARATOR$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.in:10: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.in:10: -1- AM_SET_DEPDIR
+m4trace:configure.in:10: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.in:10: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.in:10: -1- AM_MAKE_INCLUDE
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.in:10: -1- AM_DEP_TRACK
+m4trace:configure.in:10: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.in:10: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.in:10: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.in:10: -1- AM_CONDITIONAL([am__fastdepCC], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.in:10: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.in:10: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.in:16: -1- m4_pattern_allow([^TEST_JAVA$])
+m4trace:configure.in:27: -1- m4_pattern_allow([^EMMA$])
+m4trace:configure.in:38: -1- m4_pattern_allow([^ECJ_JAR$])
+m4trace:configure.in:49: -1- m4_pattern_allow([^AUTO_COMPILE$])
+m4trace:configure.in:53: -1- m4_pattern_allow([^JAVA$])
+m4trace:configure.in:55: -1- m4_pattern_allow([^JAVAC$])
+m4trace:configure.in:58: -1- m4_pattern_allow([^SRCDIR$])
+m4trace:configure.in:60: -1- m4_pattern_allow([^BUILDDIR$])
+m4trace:configure.in:70: -1- m4_pattern_allow([^TMPDIR$])
+m4trace:configure.in:81: -1- m4_pattern_allow([^MAIL_HOST$])
+m4trace:configure.in:90: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+You should run autoupdate.], [])
+m4trace:configure.in:90: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.in:90: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.in:90: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.in:90: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.in:90: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.in:90: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.in:90: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.in:90: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
diff --git a/config.guess b/config.guess
new file mode 100755
index 00000000..83e7b840
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1313 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+
+timestamp='2001-12-13'
+
+# This file 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <bothner@cygnus.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int dummy(){}" > $dummy.c ;
+ for c in cc gcc c89 ; do
+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
+ if test $? = 0 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ rm -f $dummy.c $dummy.o $dummy.rel ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \
+ UNAME_MACHINE_ARCH=unknown
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit 0 ;;
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ arc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ pmax:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sgi:OpenBSD:*:*)
+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ wgrisc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ alpha:OSF1:*:*)
+ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ fi
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ cat <<EOF >$dummy.s
+ .data
+\$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+
+ .text
+ .globl main
+ .align 4
+ .ent main
+main:
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
+ .end main
+EOF
+ eval $set_cc_for_build
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ case `./$dummy` in
+ 0-0)
+ UNAME_MACHINE="alpha"
+ ;;
+ 1-0)
+ UNAME_MACHINE="alphaev5"
+ ;;
+ 1-1)
+ UNAME_MACHINE="alphaev56"
+ ;;
+ 1-101)
+ UNAME_MACHINE="alphapca56"
+ ;;
+ 2-303)
+ UNAME_MACHINE="alphaev6"
+ ;;
+ 2-307)
+ UNAME_MACHINE="alphaev67"
+ ;;
+ 2-1307)
+ UNAME_MACHINE="alphaev68"
+ ;;
+ esac
+ fi
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy \
+ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit 0 ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit 0 ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
+ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+ rm -f $dummy.c $dummy
+ fi ;;
+ esac
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ CRAY*X-MP:*:*:*)
+ echo xmp-cray-unicos
+ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3D:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY-2:*:*:*)
+ echo cray2-cray-unicos
+ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ x86:Interix*:3*)
+ echo i386-pc-interix3
+ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i386-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+ rm -f $dummy.c
+ test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit 0 ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ ld_supported_targets=`cd /; ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ LIBC=gnuaout
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ rm -f $dummy.c
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit 0 ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit 0 ;;
+ i*86:*:5:[78]*)
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit 0 ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit 0 ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ if test "${UNAME_MACHINE}" = "x86pc"; then
+ UNAME_MACHINE=pc
+ fi
+ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit 0 ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.log b/config.log
new file mode 100644
index 00000000..895160bc
--- /dev/null
+++ b/config.log
@@ -0,0 +1,338 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by mauve configure 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ ./configure --build=arm --enable-auto-compilation
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = genericarmv8
+uname -m = aarch64
+uname -r = 3.9.0-rc3
+uname -s = Linux
+uname -v = #1 SMP Tue Apr 2 16:12:27 EDT 2013
+
+/usr/bin/uname -p = unknown
+/bin/uname -X = unknown
+
+/bin/arch = unknown
+/usr/bin/arch -k = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo = unknown
+/bin/machine = unknown
+/usr/bin/oslevel = unknown
+/bin/universe = unknown
+
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/local/sbin
+PATH: /usr/sbin
+PATH: /sbin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1865: checking for a BSD-compatible install
+configure:1933: result: /usr/bin/install -c
+configure:1944: checking whether build environment is sane
+configure:1994: result: yes
+configure:2135: checking for a thread-safe mkdir -p
+configure:2174: result: /bin/mkdir -p
+configure:2187: checking for gawk
+configure:2217: result: no
+configure:2187: checking for mawk
+configure:2217: result: no
+configure:2187: checking for nawk
+configure:2217: result: no
+configure:2187: checking for awk
+configure:2203: found /usr/bin/awk
+configure:2214: result: awk
+configure:2225: checking whether make sets $(MAKE)
+configure:2247: result: yes
+configure:2322: checking how to create a pax tar archive
+configure:2335: tar --version
+tar: unrecognized option '--version'
+BusyBox v1.20.2 (2013-05-19 15:04:50 EDT) multi-call binary.
+
+Usage: tar -[cxtZzjahvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]...
+
+configure:2338: $? = 1
+configure:2335: gnutar --version
+./configure: line 2336: gnutar: command not found
+configure:2338: $? = 127
+configure:2335: gtar --version
+./configure: line 2336: gtar: command not found
+configure:2338: $? = 127
+configure:2378: tardir=conftest.dir && eval gtar --format=posix -chf - "$tardir" >conftest.tar
+./configure: line 2379: gtar: command not found
+configure:2381: $? = 127
+configure:2378: tardir=conftest.dir && eval pax -L -x pax -w "$tardir" >conftest.tar
+./configure: line 2379: pax: command not found
+configure:2381: $? = 127
+configure:2378: tardir=conftest.dir && eval find "$tardir" -print | cpio -o -H pax -L >conftest.tar
+cpio: invalid option -- 'o'
+BusyBox v1.20.2 (2013-05-19 15:04:50 EDT) multi-call binary.
+
+Usage: cpio [-dmvu] [-F FILE] [-ti] [EXTR_FILE]...
+
+configure:2381: $? = 1
+configure:2378: tardir=conftest.dir && eval false >conftest.tar
+configure:2381: $? = 1
+configure:2401: result: none
+configure:2413: checking build system type
+configure:2427: result: arm-unknown-none
+configure:2447: checking host system type
+configure:2460: result: arm-unknown-none
+configure:2480: checking for Windows and DOS and OS/2 style pathnames
+configure:2493: result: no
+configure:2558: checking for gcc
+configure:2574: found /usr/bin/gcc
+configure:2585: result: gcc
+configure:2814: checking for C compiler version
+configure:2823: gcc --version >&5
+gcc (Linaro GCC 4.7-2013.04) 4.7.3 20130328 (prerelease)
+Copyright (C) 2012 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2834: $? = 0
+configure:2823: gcc -v >&5
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/gcc/aarch64-oe-linux/4.7.3/lto-wrapper
+Target: aarch64-oe-linux
+Configured with: /home/andyj/openembedded4/jenkins-setup/build/tmp-eglibc/work-shared/gcc-linaro-4.7-r2013.04/gcc-linaro-4.7-2013.04/configure --build=x86_64-linux --host=aarch64-oe-linux --target=aarch64-oe-linux --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib/gcc --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/andyj/openembedded4/jenkins-setup/build/tmp-eglibc/sysroots/genericarmv8 --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=aarch64-oe-linux- --without-local-prefix --enable-target-optspace --enable-lto --enable-libssp --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --with-sysroot=/ --with-build-sysroot=/home/andyj/openembedded4/jenkins-setup/build/tmp-eglibc/sysroots/genericarmv8 --with-native-system-header-dir=/home/andyj/openembedded4/jenkins-setup/build/tmp-eglibc/sysroots/genericarmv8/usr/include --with-gxx-include-dir=/usr/include/c++/ --enable-dependency-tracking --enable-nls --enable-__cxa_atexit
+Thread model: posix
+gcc version 4.7.3 20130328 (prerelease) (Linaro GCC 4.7-2013.04)
+configure:2834: $? = 0
+configure:2823: gcc -V >&5
+gcc: error: unrecognized command line option '-V'
+gcc: fatal error: no input files
+compilation terminated.
+configure:2834: $? = 1
+configure:2823: gcc -qversion >&5
+gcc: error: unrecognized command line option '-qversion'
+gcc: fatal error: no input files
+compilation terminated.
+configure:2834: $? = 1
+configure:2854: checking whether the C compiler works
+configure:2876: gcc conftest.c >&5
+configure:2880: $? = 0
+configure:2928: result: yes
+configure:2931: checking for C compiler default output file name
+configure:2933: result: a.out
+configure:2939: checking for suffix of executables
+configure:2946: gcc -o conftest conftest.c >&5
+configure:2950: $? = 0
+configure:2972: result:
+configure:2994: checking whether we are cross compiling
+configure:3002: gcc -o conftest conftest.c >&5
+configure:3006: $? = 0
+configure:3013: ./conftest
+configure:3017: $? = 0
+configure:3032: result: no
+configure:3037: checking for suffix of object files
+configure:3059: gcc -c conftest.c >&5
+configure:3063: $? = 0
+configure:3084: result: o
+configure:3088: checking whether we are using the GNU C compiler
+configure:3107: gcc -c conftest.c >&5
+configure:3107: $? = 0
+configure:3116: result: yes
+configure:3125: checking whether gcc accepts -g
+configure:3145: gcc -c -g conftest.c >&5
+configure:3145: $? = 0
+configure:3186: result: yes
+configure:3203: checking for gcc option to accept ISO C89
+configure:3266: gcc -c -g -O2 conftest.c >&5
+configure:3266: $? = 0
+configure:3279: result: none needed
+configure:3310: checking for style of include used by make
+configure:3338: result: GNU
+configure:3364: checking dependency style of gcc
+configure:3475: result: none
+configure:3748: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by mauve config.status 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status
+
+on genericarmv8
+
+config.status:789: creating Makefile
+config.status:789: creating gnu/testlet/config.java
+config.status:961: executing depfiles commands
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=arm-unknown-none
+ac_cv_c_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_build_alias_set=set
+ac_cv_env_build_alias_value=arm
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_host=arm-unknown-none
+ac_cv_objext=o
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_path_mkdir=/bin/mkdir
+ac_cv_prog_AWK=awk
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_g=yes
+ac_cv_prog_make_make_set=yes
+acx_cv_pathname_style_dos=no
+am_cv_CC_dependencies_compiler_type=none
+am_cv_prog_tar_pax=none
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ACLOCAL='${SHELL} /home/root/mauve/missing --run aclocal-1.11'
+AMDEPBACKSLASH='\'
+AMDEP_FALSE='#'
+AMDEP_TRUE=''
+AMTAR='$${TAR-tar}'
+AUTOCONF='${SHELL} /home/root/mauve/missing --run autoconf'
+AUTOHEADER='${SHELL} /home/root/mauve/missing --run autoheader'
+AUTOMAKE='${SHELL} /home/root/mauve/missing --run automake-1.11'
+AUTO_COMPILE='yes'
+AWK='awk'
+BUILDDIR='/home/root/mauve'
+CC='gcc'
+CCDEPMODE='depmode=none'
+CFLAGS='-g -O2'
+CHECK_FILE_SEPARATOR='/'
+CHECK_PATH_SEPARATOR=':'
+CPPFLAGS=''
+CYGPATH_W='echo'
+DEFS='-DPACKAGE_NAME=\"mauve\" -DPACKAGE_TARNAME=\"mauve\" -DPACKAGE_VERSION=\"0.0\" -DPACKAGE_STRING=\"mauve\ 0.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"mauve\" -DVERSION=\"0.0\"'
+DEPDIR='.deps'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+ECJ_JAR='/usr/share/java/eclipse-ecj.jar'
+EMMA='_auto_detect_emma_'
+EXEEXT=''
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
+JAVA='java'
+JAVAC='javac'
+LDFLAGS=''
+LIBOBJS=''
+LIBS=''
+LTLIBOBJS=''
+MAIL_HOST='mx10.gnu.org'
+MAKEINFO='${SHELL} /home/root/mauve/missing --run makeinfo'
+MKDIR_P='/bin/mkdir -p'
+OBJEXT='o'
+PACKAGE='mauve'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME='mauve'
+PACKAGE_STRING='mauve 0.0'
+PACKAGE_TARNAME='mauve'
+PACKAGE_URL=''
+PACKAGE_VERSION='0.0'
+PATH_SEPARATOR=':'
+SET_MAKE=''
+SHELL='/bin/sh'
+SRCDIR='/home/root/mauve'
+STRIP=''
+TEST_JAVA='java'
+TMPDIR='/tmp'
+VERSION='0.0'
+ac_ct_CC='gcc'
+am__EXEEXT_FALSE=''
+am__EXEEXT_TRUE='#'
+am__fastdepCC_FALSE=''
+am__fastdepCC_TRUE='#'
+am__include='include'
+am__isrc=''
+am__leading_dot='.'
+am__nodep='_no'
+am__quote=''
+am__tar='false'
+am__untar='false'
+bindir='${exec_prefix}/bin'
+build='arm-unknown-none'
+build_alias='arm'
+build_cpu='arm'
+build_os='none'
+build_vendor='unknown'
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+dvidir='${docdir}'
+exec_prefix='${prefix}'
+host='arm-unknown-none'
+host_alias=''
+host_cpu='arm'
+host_os='none'
+host_vendor='unknown'
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+install_sh='${SHELL} /home/root/mauve/install-sh'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+mkdir_p='/bin/mkdir -p'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+/* confdefs.h */
+#define PACKAGE_NAME "mauve"
+#define PACKAGE_TARNAME "mauve"
+#define PACKAGE_VERSION "0.0"
+#define PACKAGE_STRING "mauve 0.0"
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_URL ""
+#define PACKAGE "mauve"
+#define VERSION "0.0"
+
+configure: exit 0
diff --git a/config.status b/config.status
new file mode 100755
index 00000000..2c1c8c9c
--- /dev/null
+++ b/config.status
@@ -0,0 +1,1068 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+# Files that config.status was made for.
+config_files=" Makefile gnu/testlet/config.java"
+config_commands=" depfiles"
+
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+ac_cs_config="'--build=arm' '--enable-auto-compilation' 'build_alias=arm'"
+ac_cs_version="\
+mauve config.status 0.0
+configured by ./configure, generated by GNU Autoconf 2.69,
+ with options \"$ac_cs_config\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='/home/root/mauve'
+srcdir='.'
+INSTALL='/usr/bin/install -c'
+MKDIR_P='/bin/mkdir -p'
+AWK='awk'
+test -n "$AWK" || AWK=awk
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+ set X /bin/sh './configure' '--build=arm' '--enable-auto-compilation' 'build_alias=arm' $ac_configure_extra_args --no-create --no-recursion
+ shift
+ $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
+ CONFIG_SHELL='/bin/sh'
+ export CONFIG_SHELL
+ exec "$@"
+fi
+
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="" ac_aux_dir="."
+
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "gnu/testlet/config.java") CONFIG_FILES="$CONFIG_FILES gnu/testlet/config.java" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
+S["am__EXEEXT_FALSE"]=""
+S["am__EXEEXT_TRUE"]="#"
+S["LTLIBOBJS"]=""
+S["LIBOBJS"]=""
+S["MAIL_HOST"]="mx10.gnu.org"
+S["TMPDIR"]="/tmp"
+S["BUILDDIR"]="/home/root/mauve"
+S["SRCDIR"]="/home/root/mauve"
+S["JAVAC"]="javac"
+S["JAVA"]="java"
+S["AUTO_COMPILE"]="yes"
+S["ECJ_JAR"]="/usr/share/java/eclipse-ecj.jar"
+S["EMMA"]="_auto_detect_emma_"
+S["TEST_JAVA"]="java"
+S["am__fastdepCC_FALSE"]=""
+S["am__fastdepCC_TRUE"]="#"
+S["CCDEPMODE"]="depmode=none"
+S["am__nodep"]="_no"
+S["AMDEPBACKSLASH"]="\\"
+S["AMDEP_FALSE"]="#"
+S["AMDEP_TRUE"]=""
+S["am__quote"]=""
+S["am__include"]="include"
+S["DEPDIR"]=".deps"
+S["OBJEXT"]="o"
+S["EXEEXT"]=""
+S["ac_ct_CC"]="gcc"
+S["CPPFLAGS"]=""
+S["LDFLAGS"]=""
+S["CFLAGS"]="-g -O2"
+S["CC"]="gcc"
+S["CHECK_FILE_SEPARATOR"]="/"
+S["CHECK_PATH_SEPARATOR"]=":"
+S["host_os"]="none"
+S["host_vendor"]="unknown"
+S["host_cpu"]="arm"
+S["host"]="arm-unknown-none"
+S["build_os"]="none"
+S["build_vendor"]="unknown"
+S["build_cpu"]="arm"
+S["build"]="arm-unknown-none"
+S["am__untar"]="false"
+S["am__tar"]="false"
+S["AMTAR"]="$${TAR-tar}"
+S["am__leading_dot"]="."
+S["SET_MAKE"]=""
+S["AWK"]="awk"
+S["mkdir_p"]="/bin/mkdir -p"
+S["MKDIR_P"]="/bin/mkdir -p"
+S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
+S["STRIP"]=""
+S["install_sh"]="${SHELL} /home/root/mauve/install-sh"
+S["MAKEINFO"]="${SHELL} /home/root/mauve/missing --run makeinfo"
+S["AUTOHEADER"]="${SHELL} /home/root/mauve/missing --run autoheader"
+S["AUTOMAKE"]="${SHELL} /home/root/mauve/missing --run automake-1.11"
+S["AUTOCONF"]="${SHELL} /home/root/mauve/missing --run autoconf"
+S["ACLOCAL"]="${SHELL} /home/root/mauve/missing --run aclocal-1.11"
+S["VERSION"]="0.0"
+S["PACKAGE"]="mauve"
+S["CYGPATH_W"]="echo"
+S["am__isrc"]=""
+S["INSTALL_DATA"]="${INSTALL} -m 644"
+S["INSTALL_SCRIPT"]="${INSTALL}"
+S["INSTALL_PROGRAM"]="${INSTALL}"
+S["target_alias"]=""
+S["host_alias"]=""
+S["build_alias"]="arm"
+S["LIBS"]=""
+S["ECHO_T"]=""
+S["ECHO_N"]="-n"
+S["ECHO_C"]=""
+S["DEFS"]="-DPACKAGE_NAME=\\\"mauve\\\" -DPACKAGE_TARNAME=\\\"mauve\\\" -DPACKAGE_VERSION=\\\"0.0\\\" -DPACKAGE_STRING=\\\"mauve\\ 0.0\\\" -DPACKAGE_BUGREPORT=\\\"\\\" -DPACKAGE_UR"\
+"L=\\\"\\\" -DPACKAGE=\\\"mauve\\\" -DVERSION=\\\"0.0\\\""
+S["mandir"]="${datarootdir}/man"
+S["localedir"]="${datarootdir}/locale"
+S["libdir"]="${exec_prefix}/lib"
+S["psdir"]="${docdir}"
+S["pdfdir"]="${docdir}"
+S["dvidir"]="${docdir}"
+S["htmldir"]="${docdir}"
+S["infodir"]="${datarootdir}/info"
+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
+S["oldincludedir"]="/usr/include"
+S["includedir"]="${prefix}/include"
+S["localstatedir"]="${prefix}/var"
+S["sharedstatedir"]="${prefix}/com"
+S["sysconfdir"]="${prefix}/etc"
+S["datadir"]="${datarootdir}"
+S["datarootdir"]="${prefix}/share"
+S["libexecdir"]="${exec_prefix}/libexec"
+S["sbindir"]="${exec_prefix}/sbin"
+S["bindir"]="${exec_prefix}/bin"
+S["program_transform_name"]="s,x,x,"
+S["prefix"]="/usr/local"
+S["exec_prefix"]="${prefix}"
+S["PACKAGE_URL"]=""
+S["PACKAGE_BUGREPORT"]=""
+S["PACKAGE_STRING"]="mauve 0.0"
+S["PACKAGE_VERSION"]="0.0"
+S["PACKAGE_TARNAME"]="mauve"
+S["PACKAGE_NAME"]="mauve"
+S["PATH_SEPARATOR"]=":"
+S["SHELL"]="/bin/sh"
+_ACAWK
+cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ ac_datarootdir_hack='
+ s&@datadir@&${datarootdir}&g
+ s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
+ s&@infodir@&${datarootdir}/info&g
+ s&@localedir@&${datarootdir}/locale&g
+ s&@mandir@&${datarootdir}/man&g
+ s&\${datarootdir}&${prefix}/share&g' ;;
+esac
+ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
diff --git a/config.sub b/config.sub
new file mode 100755
index 00000000..59148c76
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1434 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+
+timestamp='2001-12-10'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit 0;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dsp16xx \
+ | fr30 \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | m32r | m68000 | m68k | m88k | mcore \
+ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
+ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
+ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
+ | mipsisa32 \
+ | mn10200 | mn10300 \
+ | ns16k | ns32k \
+ | openrisc \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[34] | sh[34]eb | shbe | shle \
+ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alphapca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c54x-* \
+ | clipper-* | cray2-* | cydra-* \
+ | d10v-* | d30v-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | m32r-* \
+ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
+ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
+ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
+ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
+ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ cray2)
+ basic_machine=cray2-cray
+ os=-unicos
+ ;;
+ [cjt]90)
+ basic_machine=${basic_machine}-cray
+ os=-unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mipsel*-linux*)
+ basic_machine=mipsel-unknown
+ os=-linux-gnu
+ ;;
+ mips*-linux*)
+ basic_machine=mips-unknown
+ os=-linux-gnu
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2)
+ basic_machine=i686-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=t3e-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ windows32)
+ basic_machine=i386-pc
+ os=-windows32-msvcrt
+ ;;
+ xmp)
+ basic_machine=xmp-cray
+ os=-unicos
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ mips)
+ if [ x$os = x-linux-gnu ]; then
+ basic_machine=mips-unknown
+ else
+ basic_machine=mips-mips
+ fi
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh3 | sh4 | sh3eb | sh4eb)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ c4x*)
+ basic_machine=c4x-none
+ os=-coff
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto*)
+ os=-nto-qnx
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -vxsim* | -vxworks*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 00000000..0dd3f04d
--- /dev/null
+++ b/configure
@@ -0,0 +1,4879 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for mauve 0.0.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='mauve'
+PACKAGE_TARNAME='mauve'
+PACKAGE_VERSION='0.0'
+PACKAGE_STRING='mauve 0.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="gnu/testlet/Testlet.java"
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+MAIL_HOST
+TMPDIR
+BUILDDIR
+SRCDIR
+JAVAC
+JAVA
+AUTO_COMPILE
+ECJ_JAR
+EMMA
+TEST_JAVA
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+CHECK_FILE_SEPARATOR
+CHECK_PATH_SEPARATOR
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+with_vm
+with_emma
+with_ecj_jar
+enable_auto_compilation
+with_tmpdir
+with_mailhost
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures mauve 0.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/mauve]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of mauve 0.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-auto-compilation Use ecj to compile tests on the fly
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-vm=TESTJVM Run the tests with TESTJVM
+ --with-emma(=JARLOCATION) Use emma, either unpacked in classpath
+folder or at the specified JARLOCATION
+ --with-ecj-jar=JARLOCATION Use the ecj jar found at JARLOCATION for
+auto-compilation
+
+ --with-tmpdir=DIR Put temporary files in DIR /tmp
+
+ --with-mailhost=hostname Server for socket tests mx10.gnu.org
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+mauve configure 0.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='mauve'
+ VERSION='0.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
+$as_echo_n "checking how to create a pax tar archive... " >&6; }
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+_am_tools=${am_cv_prog_tar_pax-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ { echo "$as_me:$LINENO: $_am_tar --version" >&5
+ ($_am_tar --version) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && break
+ done
+ am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x pax -w "$$tardir"'
+ am__tar_='pax -L -x pax -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H pax -L'
+ am__tar_='find "$tardir" -print | cpio -o -H pax -L'
+ am__untar='cpio -i -H pax -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_pax}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+ (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+ ($am__untar <conftest.tar) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+if ${am_cv_prog_tar_pax+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_prog_tar_pax=$_am_tool
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
+$as_echo "$am_cv_prog_tar_pax" >&6; }
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Windows and DOS and OS/2 style pathnames" >&5
+$as_echo_n "checking for Windows and DOS and OS/2 style pathnames... " >&6; }
+if ${acx_cv_pathname_style_dos+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ acx_cv_pathname_style_dos="no"
+ case ${host_os} in
+ *djgpp | *mingw32* | *emx*) acx_cv_pathname_style_dos="yes" ;;
+ esac
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_pathname_style_dos" >&5
+$as_echo "$acx_cv_pathname_style_dos" >&6; }
+if test "$acx_cv_pathname_style_dos" = "yes"; then
+
+$as_echo "#define HAVE_PATHNAME_STYLE_DOS /**/" >>confdefs.h
+
+ CHECK_PATH_SEPARATOR=';'
+ CHECK_FILE_SEPARATOR='\\'
+else
+ CHECK_PATH_SEPARATOR=':'
+ CHECK_FILE_SEPARATOR='/'
+fi
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+
+# Check whether --with-vm was given.
+if test "${with_vm+set}" = set; then :
+ withval=$with_vm; TEST_JAVA="$with_vm"
+else
+ TEST_JAVA="java"
+fi
+
+
+
+
+
+# Check whether --with-emma was given.
+if test "${with_emma+set}" = set; then :
+ withval=$with_emma; EMMA="$with_emma"
+else
+ EMMA="yes"
+fi
+
+if test "$EMMA" = "yes"
+then
+EMMA="_auto_detect_emma_"
+fi
+
+
+
+# Check whether --with-ecj-jar was given.
+if test "${with_ecj_jar+set}" = set; then :
+ withval=$with_ecj_jar; ECJ_JAR="$with_ecj_jar"
+else
+ ECJ_JAR=yes
+fi
+
+if test "$ECJ_JAR" = "yes"
+then
+ECJ_JAR="/usr/share/java/eclipse-ecj.jar"
+fi
+
+
+
+# Check whether --enable-auto-compilation was given.
+if test "${enable_auto_compilation+set}" = set; then :
+ enableval=$enable_auto_compilation; AUTO_COMPILE="$enable_auto_compilation"
+else
+ AUTO_COMPILE="yes"
+fi
+
+
+
+
+JAVA=${JAVA-java}
+
+JAVAC=${JAVAC-javac}
+
+
+SRCDIR=`(cd $srcdir; pwd)`
+
+BUILDDIR=`pwd`
+
+
+
+# Check whether --with-tmpdir was given.
+if test "${with_tmpdir+set}" = set; then :
+ withval=$with_tmpdir;
+TMPDIR="$with_tmpdir"
+fi
+
+
+TMPDIR=${TMPDIR-/tmp}
+
+
+
+# Check whether --with-mailhost was given.
+if test "${with_mailhost+set}" = set; then :
+ withval=$with_mailhost;
+MAIL_HOST="$with_mailhost"
+fi
+
+
+MAIL_HOST=${MAIL_HOST-mx10.gnu.org}
+
+
+if test ! -d gnu; then
+ mkdir gnu
+fi
+if test ! -d gnu/testlet; then
+ mkdir gnu/testlet
+fi
+
+ac_config_files="$ac_config_files Makefile gnu/testlet/config.java"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by mauve $as_me 0.0, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+mauve config.status 0.0
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "gnu/testlet/config.java") CONFIG_FILES="$CONFIG_FILES gnu/testlet/config.java" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.in b/configure.in
new file mode 100644
index 00000000..761d5d8d
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,90 @@
+dnl Process this with autoconf to create configure
+AC_INIT([mauve],[0.0])
+AC_CONFIG_SRCDIR([gnu/testlet/Testlet.java])
+AM_INIT_AUTOMAKE([tar-pax])
+
+dnl Check path and file separator types
+ACX_CHECK_PATHNAME_STYLE_DOS
+
+dnl For EXEEXT.
+AC_PROG_CC
+
+dnl Check for which JVM should be tested, default to "java"
+AC_ARG_WITH(vm,
+[ --with-vm=TESTJVM Run the tests with TESTJVM],
+TEST_JAVA="$with_vm", TEST_JAVA="java")
+AC_SUBST(TEST_JAVA)
+
+
+AC_ARG_WITH(emma,
+[ --with-emma(=JARLOCATION) Use emma, either unpacked in classpath
+folder or at the specified JARLOCATION],
+EMMA="$with_emma", EMMA="yes")
+if test "$EMMA" = "yes"
+then
+EMMA="_auto_detect_emma_"
+fi
+AC_SUBST(EMMA)
+
+AC_ARG_WITH(ecj-jar,
+[ --with-ecj-jar=JARLOCATION Use the ecj jar found at JARLOCATION for
+auto-compilation],
+ECJ_JAR="$with_ecj_jar", ECJ_JAR=yes)
+if test "$ECJ_JAR" = "yes"
+then
+ECJ_JAR="/usr/share/java/eclipse-ecj.jar"
+fi
+
+AC_SUBST(ECJ_JAR)
+
+dnl auto-compilation is disabled by default because it requires the
+dnl --with-classpath-install-dir option to be used as well, and so
+dnl by disabling it, the standard "./configure" setup has a better
+dnl chance of producing meaningful results. If it were enabled
+dnl by default many tests would fail because the compiler wouldn't
+dnl have the correct bootclasspath
+AC_ARG_ENABLE(auto-compilation,
+[ --enable-auto-compilation Use ecj to compile tests on the fly],
+AUTO_COMPILE="$enable_auto_compilation",AUTO_COMPILE="yes")
+AC_SUBST(AUTO_COMPILE)
+
+
+JAVA=${JAVA-java}
+AC_SUBST(JAVA)
+JAVAC=${JAVAC-javac}
+AC_SUBST(JAVAC)
+
+SRCDIR=`(cd $srcdir; pwd)`
+AC_SUBST(SRCDIR)
+BUILDDIR=`pwd`
+AC_SUBST(BUILDDIR)
+
+dnl Specify the tempdir.
+AC_ARG_WITH(tmpdir,
+changequote(<<,>>)
+<< --with-tmpdir=DIR Put temporary files in DIR [/tmp]>>,
+changequote([,])
+TMPDIR="$with_tmpdir")
+
+TMPDIR=${TMPDIR-/tmp}
+AC_SUBST(TMPDIR)
+
+dnl Specify a mail server host for socket testing. This allows you to
+dnl choose a different server if 'mx10.gnu.org' is blocked by your firewall
+AC_ARG_WITH(mailhost,
+changequote(<<,>>)
+<< --with-mailhost=hostname Server for socket tests [mx10.gnu.org]>>,
+changequote([,])
+MAIL_HOST="$with_mailhost")
+
+MAIL_HOST=${MAIL_HOST-mx10.gnu.org}
+AC_SUBST(MAIL_HOST)
+
+if test ! -d gnu; then
+ mkdir gnu
+fi
+if test ! -d gnu/testlet; then
+ mkdir gnu/testlet
+fi
+
+AC_OUTPUT(Makefile gnu/testlet/config.java)
diff --git a/dataoutput.out b/dataoutput.out
new file mode 100644
index 00000000..ba9875ce
--- /dev/null
+++ b/dataoutput.out
Binary files differ
diff --git a/dataoutput2.out b/dataoutput2.out
new file mode 100644
index 00000000..b3dce46f
--- /dev/null
+++ b/dataoutput2.out
Binary files differ
diff --git a/frozen_serial b/frozen_serial
new file mode 100644
index 00000000..e9bab10d
--- /dev/null
+++ b/frozen_serial
Binary files differ
diff --git a/gnu/CVS/Entries b/gnu/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/CVS/Entries.Log b/gnu/CVS/Entries.Log
new file mode 100644
index 00000000..b7144aef
--- /dev/null
+++ b/gnu/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/anttask////
+A D/testlet////
diff --git a/gnu/CVS/Repository b/gnu/CVS/Repository
new file mode 100644
index 00000000..23e4da74
--- /dev/null
+++ b/gnu/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu
diff --git a/gnu/CVS/Root b/gnu/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/anttask/CVS/Entries b/gnu/anttask/CVS/Entries
new file mode 100644
index 00000000..ebada7bf
--- /dev/null
+++ b/gnu/anttask/CVS/Entries
@@ -0,0 +1,3 @@
+/RunTests.java/1.5/Wed Jan 5 21:19:52 2005//
+/Tags.java/1.1/Thu Dec 30 12:57:37 2004//
+D
diff --git a/gnu/anttask/CVS/Repository b/gnu/anttask/CVS/Repository
new file mode 100644
index 00000000..a2269e82
--- /dev/null
+++ b/gnu/anttask/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/anttask
diff --git a/gnu/anttask/CVS/Root b/gnu/anttask/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/anttask/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/anttask/RunTests.java b/gnu/anttask/RunTests.java
new file mode 100644
index 00000000..7865fe06
--- /dev/null
+++ b/gnu/anttask/RunTests.java
@@ -0,0 +1,221 @@
+/*
+Copyright (c) 2004 Thomas Zander <zander@kde.org>
+
+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.anttask;
+
+import gnu.testlet.*;
+import java.io.*;
+import java.util.*;
+
+import org.apache.tools.ant.*;
+import org.apache.tools.ant.taskdefs.*;
+import org.apache.tools.ant.types.*;
+
+/**
+ * Ant task to run Mauve test-suite.
+ * <p>Before asking questions; always refer to the <a href="http://jakarta.apache.org/ant/manual/index.html">ant manual</a> first.</p>
+ <p>Test classes are passed as child fileset tags, typically you simply pass the build
+ dir for the project</p>
+ <h3>Parameters</h3>
+ <table border="1" cellpadding="2" cellspacing="0">
+ <tr>
+ <td valign="top"><b>Attribute</b></td>
+ <td valign="top"><b>Description</b></td>
+ <td align="center" valign="top"><b>Required</b></td>
+ </tr>
+ <tr>
+ <td valign="top">debug</td>
+ <td valign="top">Prints additional debug info for the tests</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">verbose</td>
+ <td valign="top">Lets the test suite be more verbose; also showing passed-tests for example</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">haltonfailure</td>
+ <td valign="top">make the testrun halt as soon as a failure is failed (see also failonerror)</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">srcdir</td>
+ <td valign="top">provide the sources directory allowing the parsing of a "Tags:" comment in the header of the file. If the testJDK or testJDBC are also supplied then tests that have tags specifying that their API comatibility are incompatible with the testJDK/testJDBC version will be skipped.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">testJDK</td>
+ <td valign="top">The version of the JDK you are running/simulating. Only tests that are compatible with this version will be run.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">testJDBC</td>
+ <td valign="top">The version of the JDBC API you are running/simulating. Only tests that are compatible with this version will be run.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ <tr>
+ <td valign="top">failonerror</td>
+ <td valign="top">If a test fails, should that be flagged as an error? Setting this and haltonfailure to true will stop the run as soon as a failure is found.</td>
+ <td align="center" valign="top">No</td>
+ </tr>
+ </table>
+ */
+public class RunTests extends MatchingTask {
+ private boolean verbose=false, debug=false, haltOnFailure=false, failOnError=true;
+ private File sourceDir=null;
+ private Vector filesets=new Vector();
+ private double javaVersion=0d, JDBCVersion=0d;
+
+ public void execute() throws BuildException {
+ if(sourceDir == null)
+ System.err.println("Warning; without 'srcdir' element no Tag checking will be done");
+ MyTestHarness harness = new MyTestHarness (verbose, debug, haltOnFailure);
+
+ Iterator iter = filesets.iterator();
+ while(iter.hasNext()) {
+ FileSet fs = (FileSet) iter.next();
+ try {
+ DirectoryScanner ds = fs.getDirectoryScanner(getProject());
+ Iterator classNames = Arrays.asList(ds.getIncludedFiles()).iterator();
+ while(classNames.hasNext()) {
+ String filename = (String) classNames.next();
+ if(! filename.endsWith(".class"))
+ continue; // only class files
+ if(filename.lastIndexOf("$") > filename.lastIndexOf(File.separator))
+ continue; // no inner classeS
+ filename=filename.substring(0, filename.length()-6);
+ filename=filename.replace(File.separatorChar, '.');
+ if(shouldRunTest(filename)) {
+ if(!verbose)
+ System.out.println("Run: "+ filename);
+ harness.runTest(filename);
+ }
+ }
+ } catch (BuildException be) {
+ // directory doesn't exist or is not readable
+ if (failOnError)
+ throw be;
+ else
+ log(be.getMessage(),Project.MSG_WARN);
+ }
+ }
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ public void setHaltOnFailure(boolean on) {
+ haltOnFailure = on;
+ }
+
+ public void setFailOnError(boolean on) {
+ failOnError = on;
+ }
+
+ public void addFileset(FileSet set) {
+ filesets.add(set);
+ }
+
+ public void setSrcdir(File sourceDir) {
+ this.sourceDir = sourceDir;
+ }
+
+ public void setTestJDK(String jdk) {
+ jdk=jdk.toLowerCase().trim();
+ if(jdk.startsWith("jdk")) {
+ try {
+ javaVersion = Double.parseDouble(jdk.substring(3));
+ return;
+ } catch(NumberFormatException e) {
+ }
+ }
+ System.err.println("Failed to parse the testJDK argument; format is: 'JDK1.4'");
+ }
+
+ public void setTestJDBC(String jdbc) {
+ jdbc=jdbc.toLowerCase().trim();
+ if(jdbc.startsWith("jdbc")) {
+ try {
+ javaVersion = Double.parseDouble(jdbc.substring(4));
+ return;
+ } catch(NumberFormatException e) {
+ }
+ }
+ System.err.println("Failed to parse the testJDBC argument; format is: 'JDBC2.0'");
+ }
+
+ private boolean shouldRunTest(String filename) {
+ if(sourceDir == null)
+ return true;
+ File sourceFile = new File(sourceDir, filename.replace('.', File.separatorChar)+".java");
+ if(! sourceFile.exists())
+ return false;
+ try {
+ Reader reader = new FileReader(sourceFile);
+ StringBuffer buf = new StringBuffer();
+ int maxLines=30;
+ while(maxLines > 0) {
+ int character = reader.read();
+ if(character == -1)
+ break;
+ if(character == '\n') {
+ int index = buf.indexOf("Tags:") + 5; // 5 == length of string
+ if(index > 5 && buf.length() > index) {
+ String tags = buf.substring(index).trim().toLowerCase();
+ if("not-a-test".equals(tags))
+ return false;
+ try {
+ return new Tags(tags).isValid(javaVersion, JDBCVersion);
+ } catch(NumberFormatException e) {
+ System.err.println("Unreadable tags in class: "+ filename);
+ return false;
+ }
+ }
+ buf = new StringBuffer();
+ maxLines--;
+ }
+ else
+ buf.append((char) character);
+ }
+ } catch(IOException e) { }
+ return false;
+ }
+
+
+ private static class MyTestHarness extends SimpleTestHarness {
+ private boolean haltOnFailure;
+ // extend it b/cause someone thought it should not have public constructors.
+ public MyTestHarness(boolean verbose, boolean debug, boolean haltOnFailure) {
+ super(verbose, debug, false, false, null);
+ this.haltOnFailure = haltOnFailure;
+ }
+
+ protected void runTest (String name) throws BuildException {
+ super.runtest(name);
+ if(haltOnFailure && getFailures() > 0)
+ throw new BuildException("Failures");
+ }
+ }
+}
diff --git a/gnu/anttask/Tags.java b/gnu/anttask/Tags.java
new file mode 100644
index 00000000..f4036247
--- /dev/null
+++ b/gnu/anttask/Tags.java
@@ -0,0 +1,72 @@
+/*
+Copyright (c) 2004 Thomas Zander <zander@kde.org>
+
+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.anttask;
+
+class Tags {
+ String fromJDK="1.0", toJDK="99.0";
+ String fromJDBC="1.0", toJDBC="99.0";
+ public Tags(String line) {
+ int start=0;
+ for(int i=0; i <= line.length();i++) {
+ if(i == line.length() || line.charAt(i) == ' ') {
+ if(start < i)
+ process(line.substring(start, i));
+ start = i+1;
+ }
+ }
+
+ }
+ public void process(String token) {
+//System.out.println(" +-- '"+ token +"'");
+ boolean end = token.startsWith("!");
+ if(end)
+ token = token.substring(1);
+ if(token.startsWith("jls") || token.startsWith("jdk")) {
+ String value = token.substring(3);
+ if(end)
+ toJDK = value;
+ else
+ fromJDK = value;
+ }
+ else if(token.startsWith("jdbc")) {
+ String value = token.substring(4);
+ if(end)
+ toJDBC = value;
+ else
+ fromJDBC = value;
+ }
+ }
+ public boolean isValid(double javaVersion, double JDBCVersion) throws NumberFormatException {
+ if(javaVersion != 0d) {
+ double from = Double.parseDouble(fromJDK);
+ if(from > javaVersion) return false;
+ double end = Double.parseDouble(toJDK);
+ if(end < javaVersion) return false;
+ }
+ if(JDBCVersion != 0d) {
+ double from = Double.parseDouble(fromJDBC);
+ if(from < JDBCVersion) return false;
+ double end = Double.parseDouble(toJDBC);
+ if(end > JDBCVersion) return false;
+ }
+ return true;
+ }
+}
diff --git a/gnu/testlet/.cvsignore b/gnu/testlet/.cvsignore
new file mode 100644
index 00000000..c13f1e51
--- /dev/null
+++ b/gnu/testlet/.cvsignore
@@ -0,0 +1,2 @@
+*.class
+config.java
diff --git a/gnu/testlet/BinaryCompatibility/.cvsignore b/gnu/testlet/BinaryCompatibility/.cvsignore
new file mode 100644
index 00000000..182e8933
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/.cvsignore
@@ -0,0 +1,4 @@
+bin_??
+bin_*.o
+bin_*.out1
+bin_*.out2
diff --git a/gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java b/gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java
new file mode 100644
index 00000000..a33fdd3c
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/BinaryCompatibilityTest.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// A set of tests for Chapter 13 of the JLS, "Binary Compatibility".
+// We run a script that compiles every test case twice, the second
+// time with some classes replcaed by versions in the subdirectory
+// called "altered". The outputs of both runs should be the same: if
+// not, we fail the test.
+
+// 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.BinaryCompatibility;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class BinaryCompatibilityTest implements Testlet
+{
+ protected static TestHarness harness;
+
+ public void testall()
+ {
+ try
+ {
+ String command;
+ String path = (harness.getSourceDirectory() +
+ "/gnu/testlet/BinaryCompatibility/tests");
+ char sep = harness.getSeparator().charAt(0);
+ FileReader fr = new FileReader(path);
+ BufferedReader tests = new BufferedReader(fr);
+ while ((command = tests.readLine()) != null)
+ {
+ String srcdir = "/gnu/testlet/BinaryCompatibility";
+ srcdir = srcdir.replace('/', sep);
+ File dir = new File(harness.getSourceDirectory() + srcdir);
+ harness.debug("Execing external command: " + command);
+ Process p = Runtime.getRuntime().exec(command, null, dir);
+ BufferedReader result =
+ new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String s;
+ while ((s = result.readLine()) != null)
+ {
+ harness.verbose(s);
+ if (s.startsWith("PASS "))
+ harness.check(true, s.substring(s.indexOf("// ") + 3));
+ else if (s.startsWith("FAIL "))
+ harness.check(false, s.substring(s.indexOf("// ") + 3));
+ }
+ }
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall();
+ }
+
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/CVS/Entries b/gnu/testlet/BinaryCompatibility/CVS/Entries
new file mode 100644
index 00000000..669aa488
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/CVS/Entries
@@ -0,0 +1,51 @@
+/.cvsignore/1.2/Wed May 26 13:20:20 2004//
+/BinaryCompatibilityTest.java/1.3/Tue Nov 8 21:49:39 2005//
+/bin_01.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_01_sub.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_02.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_02_sub.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_03.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_03_sub.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_04.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_04_interface.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_04_sub.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_05.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_05_interface.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_05_sub.java/1.1/Tue Aug 19 14:48:23 2003//
+/bin_06.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_06_interface.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_06_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_07.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_07_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_08.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_08_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_09.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_09_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_10.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_10_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_11.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_11_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_12.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_12_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_13.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_13_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_13_sub1.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_14.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_14_interface1.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_14_interface2.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_14_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15_interface1.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15_interface2.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15_interface3.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_16.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_16_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_17.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_17_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_18.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_18_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_18_sub1.java/1.1/Tue Aug 19 14:48:24 2003//
+/foo/1.3/Thu Dec 30 18:25:40 2004//
+/tests/1.1/Tue Aug 19 14:58:14 2003//
+D
diff --git a/gnu/testlet/BinaryCompatibility/CVS/Entries.Log b/gnu/testlet/BinaryCompatibility/CVS/Entries.Log
new file mode 100644
index 00000000..dbe41a19
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/altered////
diff --git a/gnu/testlet/BinaryCompatibility/CVS/Repository b/gnu/testlet/BinaryCompatibility/CVS/Repository
new file mode 100644
index 00000000..7c1a7e60
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/BinaryCompatibility
diff --git a/gnu/testlet/BinaryCompatibility/CVS/Root b/gnu/testlet/BinaryCompatibility/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/BinaryCompatibility/altered/CVS/Entries b/gnu/testlet/BinaryCompatibility/altered/CVS/Entries
new file mode 100644
index 00000000..9bb130d8
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/CVS/Entries
@@ -0,0 +1,24 @@
+/bin_01_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_02_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_03_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_04_interface.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_04_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_05_interface.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_06_interface.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_06_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_07_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_08_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_09_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_10_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_11_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_12_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_13_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_13_sub1.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_14_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_15_interface3.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_16_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_16_sub1.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_17_interface.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_17_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+/bin_18_sub.java/1.1/Tue Aug 19 14:48:24 2003//
+D
diff --git a/gnu/testlet/BinaryCompatibility/altered/CVS/Repository b/gnu/testlet/BinaryCompatibility/altered/CVS/Repository
new file mode 100644
index 00000000..1c2d8304
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/BinaryCompatibility/altered
diff --git a/gnu/testlet/BinaryCompatibility/altered/CVS/Root b/gnu/testlet/BinaryCompatibility/altered/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_01_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_01_sub.java
new file mode 100644
index 00000000..d026c433
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_01_sub.java
@@ -0,0 +1,35 @@
+public class bin_01_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_02_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_02_sub.java
new file mode 100644
index 00000000..f0354d31
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_02_sub.java
@@ -0,0 +1,30 @@
+// Section 13, Adding new fields
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_02_sub
+{
+ public int bar = 3;
+ public int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_03_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_03_sub.java
new file mode 100644
index 00000000..59ff0c34
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_03_sub.java
@@ -0,0 +1,36 @@
+public class bin_03_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public bin_03_sub (int i)
+ {}
+
+ public bin_03_sub ()
+ {}
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_04_interface.java b/gnu/testlet/BinaryCompatibility/altered/bin_04_interface.java
new file mode 100644
index 00000000..841ea10e
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_04_interface.java
@@ -0,0 +1,29 @@
+public interface bin_04_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_0 ();
+ void dummy_1 ();
+}
+
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_04_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_04_sub.java
new file mode 100644
index 00000000..add9198e
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_04_sub.java
@@ -0,0 +1,33 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_04_sub implements bin_04_interface
+{
+ public void dummy_0() { }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_05_interface.java b/gnu/testlet/BinaryCompatibility/altered/bin_05_interface.java
new file mode 100644
index 00000000..1c56d6b2
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_05_interface.java
@@ -0,0 +1,30 @@
+// Section 13, Adding a new field
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public interface bin_05_interface
+{
+ public static final int bar = 33;
+ public static final int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_06_interface.java b/gnu/testlet/BinaryCompatibility/altered/bin_06_interface.java
new file mode 100644
index 00000000..b7adcfdb
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_06_interface.java
@@ -0,0 +1,29 @@
+public interface bin_06_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_0 ();
+ void dummy_1 ();
+}
+
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_06_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_06_sub.java
new file mode 100644
index 00000000..42714a8e
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_06_sub.java
@@ -0,0 +1,32 @@
+public class bin_06_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public bin_06_sub (int i) { }
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+ public bin_06_sub () {}
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_07_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_07_sub.java
new file mode 100644
index 00000000..95ad97a7
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_07_sub.java
@@ -0,0 +1,34 @@
+public class bin_07_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+
+ public void dummy_2 ()
+ {
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_08_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_08_sub.java
new file mode 100644
index 00000000..d85ffe28
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_08_sub.java
@@ -0,0 +1,29 @@
+// Section 13 Deleting fields
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_08_sub
+{
+ public int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_09_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_09_sub.java
new file mode 100644
index 00000000..c09c1a34
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_09_sub.java
@@ -0,0 +1,30 @@
+public class bin_09_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_10_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_10_sub.java
new file mode 100644
index 00000000..e9e99c1d
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_10_sub.java
@@ -0,0 +1,30 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_10_sub
+{
+ public int bar = 33;
+ public int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_11_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_11_sub.java
new file mode 100644
index 00000000..8e32c19b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_11_sub.java
@@ -0,0 +1,35 @@
+public class bin_11_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_12_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_12_sub.java
new file mode 100644
index 00000000..943654aa
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_12_sub.java
@@ -0,0 +1,42 @@
+public class bin_12_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ final int arse;
+
+ bin_12_sub()
+ {
+ arse = 0;
+ }
+
+ bin_12_sub(int n)
+ {
+ arse = 1;
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (arse);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_13_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_13_sub.java
new file mode 100644
index 00000000..398c7924
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_13_sub.java
@@ -0,0 +1,34 @@
+public class bin_13_sub extends bin_13_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+ public void dummy_2 ()
+ {
+ System.out.println (2);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_13_sub1.java b/gnu/testlet/BinaryCompatibility/altered/bin_13_sub1.java
new file mode 100644
index 00000000..f7baa3d1
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_13_sub1.java
@@ -0,0 +1,30 @@
+public class bin_13_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_14_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_14_sub.java
new file mode 100644
index 00000000..5148c1f7
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_14_sub.java
@@ -0,0 +1,38 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+
+public class bin_14_sub implements bin_14_interface2, bin_14_interface1
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_15_interface3.java b/gnu/testlet/BinaryCompatibility/altered/bin_15_interface3.java
new file mode 100644
index 00000000..630529ff
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_15_interface3.java
@@ -0,0 +1,25 @@
+interface bin_15_interface3 extends bin_15_interface2, bin_15_interface1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_16_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_16_sub.java
new file mode 100644
index 00000000..38f476cc
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_16_sub.java
@@ -0,0 +1,30 @@
+public class bin_16_sub extends bin_16_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_16_sub1.java b/gnu/testlet/BinaryCompatibility/altered/bin_16_sub1.java
new file mode 100644
index 00000000..fca73a26
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_16_sub1.java
@@ -0,0 +1,30 @@
+public class bin_16_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_17_interface.java b/gnu/testlet/BinaryCompatibility/altered/bin_17_interface.java
new file mode 100644
index 00000000..b4423597
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_17_interface.java
@@ -0,0 +1,27 @@
+public interface bin_17_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ();
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_17_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_17_sub.java
new file mode 100644
index 00000000..6e1dec3b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_17_sub.java
@@ -0,0 +1,30 @@
+public class bin_17_sub implements bin_17_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/altered/bin_18_sub.java b/gnu/testlet/BinaryCompatibility/altered/bin_18_sub.java
new file mode 100644
index 00000000..fe2dcbb0
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/altered/bin_18_sub.java
@@ -0,0 +1,35 @@
+public class bin_18_sub extends bin_18_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_01.java b/gnu/testlet/BinaryCompatibility/bin_01.java
new file mode 100644
index 00000000..c1eacb6c
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_01.java
@@ -0,0 +1,29 @@
+// Adding a method to a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_01
+{
+ public static void main (String argv[])
+ {
+ new bin_01_sub().dummy_1();
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_01.out1 b/gnu/testlet/BinaryCompatibility/bin_01.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_01.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_01.out2 b/gnu/testlet/BinaryCompatibility/bin_01.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_01.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_01_sub.java b/gnu/testlet/BinaryCompatibility/bin_01_sub.java
new file mode 100644
index 00000000..cafabba3
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_01_sub.java
@@ -0,0 +1,30 @@
+public class bin_01_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_02.java b/gnu/testlet/BinaryCompatibility/bin_02.java
new file mode 100644
index 00000000..56a2986d
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_02.java
@@ -0,0 +1,31 @@
+// Adding a field to a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_02
+{
+ public static void main (String argv[])
+ {
+ System.out.println (new bin_02_sub().foo);
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_02.out1 b/gnu/testlet/BinaryCompatibility/bin_02.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_02.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_02.out2 b/gnu/testlet/BinaryCompatibility/bin_02.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_02.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_02_sub.java b/gnu/testlet/BinaryCompatibility/bin_02_sub.java
new file mode 100644
index 00000000..cde18fee
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_02_sub.java
@@ -0,0 +1,29 @@
+// Section 13, Adding a new field
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_02_sub
+{
+ public int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_03.java b/gnu/testlet/BinaryCompatibility/bin_03.java
new file mode 100644
index 00000000..b78583fb
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_03.java
@@ -0,0 +1,31 @@
+// Adding a constructor to a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_03
+{
+ public static void main (String argv[])
+ {
+ new bin_03_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_03.out1 b/gnu/testlet/BinaryCompatibility/bin_03.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_03.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_03.out2 b/gnu/testlet/BinaryCompatibility/bin_03.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_03.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_03_sub.java b/gnu/testlet/BinaryCompatibility/bin_03_sub.java
new file mode 100644
index 00000000..8394fa78
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_03_sub.java
@@ -0,0 +1,30 @@
+public class bin_03_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_04.java b/gnu/testlet/BinaryCompatibility/bin_04.java
new file mode 100644
index 00000000..36819591
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_04.java
@@ -0,0 +1,34 @@
+// Adding a method to an interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+class bin_04
+{
+ static void foo (bin_04_interface bar)
+ {
+ bar.dummy_1();
+ }
+
+ public static void main (String argv[])
+ {
+ foo (new bin_04_sub());
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_04.out1 b/gnu/testlet/BinaryCompatibility/bin_04.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_04.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_04.out2 b/gnu/testlet/BinaryCompatibility/bin_04.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_04.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_04_interface.java b/gnu/testlet/BinaryCompatibility/bin_04_interface.java
new file mode 100644
index 00000000..054e014d
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_04_interface.java
@@ -0,0 +1,28 @@
+public interface bin_04_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_1 ();
+}
+
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_04_sub.java b/gnu/testlet/BinaryCompatibility/bin_04_sub.java
new file mode 100644
index 00000000..3f79b219
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_04_sub.java
@@ -0,0 +1,31 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_04_sub implements bin_04_interface
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_05.java b/gnu/testlet/BinaryCompatibility/bin_05.java
new file mode 100644
index 00000000..27cd3691
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_05.java
@@ -0,0 +1,30 @@
+// Adding a field to an interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_05
+{
+ public static void main (String argv[])
+ {
+ System.out.println (bin_05_interface.foo);
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_05.out1 b/gnu/testlet/BinaryCompatibility/bin_05.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_05.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_05.out2 b/gnu/testlet/BinaryCompatibility/bin_05.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_05.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_05_interface.java b/gnu/testlet/BinaryCompatibility/bin_05_interface.java
new file mode 100644
index 00000000..6170b8f6
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_05_interface.java
@@ -0,0 +1,29 @@
+// Section 13, Adding a new field
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public interface bin_05_interface
+{
+ public static final int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_05_sub.java b/gnu/testlet/BinaryCompatibility/bin_05_sub.java
new file mode 100644
index 00000000..d9ea1413
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_05_sub.java
@@ -0,0 +1,29 @@
+// Section 13, Adding a new field
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_05_sub
+{
+ public static final int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_06.java b/gnu/testlet/BinaryCompatibility/bin_06.java
new file mode 100644
index 00000000..4c511c99
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_06.java
@@ -0,0 +1,35 @@
+// Adding a constructor to an interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_06
+{
+ static void foo (bin_06_interface bar)
+ {
+ bar.dummy_1();
+ }
+
+ public static void main (String argv[])
+ {
+ new bin_06_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_06.out1 b/gnu/testlet/BinaryCompatibility/bin_06.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_06.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_06.out2 b/gnu/testlet/BinaryCompatibility/bin_06.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_06.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_06_interface.java b/gnu/testlet/BinaryCompatibility/bin_06_interface.java
new file mode 100644
index 00000000..c8eefe6b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_06_interface.java
@@ -0,0 +1,28 @@
+public interface bin_06_interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_1 ();
+}
+
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_06_sub.java b/gnu/testlet/BinaryCompatibility/bin_06_sub.java
new file mode 100644
index 00000000..4ad41c40
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_06_sub.java
@@ -0,0 +1,30 @@
+public class bin_06_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_07.java b/gnu/testlet/BinaryCompatibility/bin_07.java
new file mode 100644
index 00000000..8e14cb1b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_07.java
@@ -0,0 +1,29 @@
+// Deleting a method from a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_07
+{
+ public static void main (String argv[])
+ {
+ new bin_07_sub().dummy_1();
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_07.out1 b/gnu/testlet/BinaryCompatibility/bin_07.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_07.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_07.out2 b/gnu/testlet/BinaryCompatibility/bin_07.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_07.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_07_sub.java b/gnu/testlet/BinaryCompatibility/bin_07_sub.java
new file mode 100644
index 00000000..4407e9e0
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_07_sub.java
@@ -0,0 +1,39 @@
+public class bin_07_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+
+ public void dummy_2 ()
+ {
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_08.java b/gnu/testlet/BinaryCompatibility/bin_08.java
new file mode 100644
index 00000000..7bbf1b40
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_08.java
@@ -0,0 +1,30 @@
+// Deleting a field from a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_08
+{
+ public static void main (String argv[])
+ {
+ System.out.println (new bin_08_sub().foo);
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_08.out1 b/gnu/testlet/BinaryCompatibility/bin_08.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_08.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_08.out2 b/gnu/testlet/BinaryCompatibility/bin_08.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_08.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_08_sub.java b/gnu/testlet/BinaryCompatibility/bin_08_sub.java
new file mode 100644
index 00000000..bc637e7e
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_08_sub.java
@@ -0,0 +1,30 @@
+// Section 13 Deleting fields
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_08_sub
+{
+ public int bar = 3;
+ public int foo = 99;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_09.java b/gnu/testlet/BinaryCompatibility/bin_09.java
new file mode 100644
index 00000000..0f1095fe
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_09.java
@@ -0,0 +1,30 @@
+// Deleting a constructor from a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_09
+{
+ public static void main (String argv[])
+ {
+ new bin_09_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_09.out1 b/gnu/testlet/BinaryCompatibility/bin_09.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_09.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_09.out2 b/gnu/testlet/BinaryCompatibility/bin_09.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_09.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_09_sub.java b/gnu/testlet/BinaryCompatibility/bin_09_sub.java
new file mode 100644
index 00000000..962087a2
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_09_sub.java
@@ -0,0 +1,32 @@
+public class bin_09_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public bin_09_sub (int i) { }
+ public bin_09_sub () {}
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_10.java b/gnu/testlet/BinaryCompatibility/bin_10.java
new file mode 100644
index 00000000..d18ecdc9
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_10.java
@@ -0,0 +1,31 @@
+// Reordering fields of a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_10
+{
+ public static void main (String argv[])
+ {
+ System.out.println (new bin_10_sub().foo);
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_10.out1 b/gnu/testlet/BinaryCompatibility/bin_10.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_10.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_10.out2 b/gnu/testlet/BinaryCompatibility/bin_10.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_10.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_10_sub.java b/gnu/testlet/BinaryCompatibility/bin_10_sub.java
new file mode 100644
index 00000000..4b2c2ca2
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_10_sub.java
@@ -0,0 +1,30 @@
+// Reordering fields of a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_10_sub
+{
+ public int foo = 99;
+ public int bar = 33;
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_11.java b/gnu/testlet/BinaryCompatibility/bin_11.java
new file mode 100644
index 00000000..d0e463e7
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_11.java
@@ -0,0 +1,29 @@
+// Reordering methods of a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_11
+{
+ public static void main (String argv[])
+ {
+ new bin_11_sub().dummy_1();
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_11.out1 b/gnu/testlet/BinaryCompatibility/bin_11.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_11.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_11.out2 b/gnu/testlet/BinaryCompatibility/bin_11.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_11.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_11_sub.java b/gnu/testlet/BinaryCompatibility/bin_11_sub.java
new file mode 100644
index 00000000..4b38e29a
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_11_sub.java
@@ -0,0 +1,35 @@
+public class bin_11_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_12.java b/gnu/testlet/BinaryCompatibility/bin_12.java
new file mode 100644
index 00000000..ed724f7b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_12.java
@@ -0,0 +1,31 @@
+// Reordering constructors of a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_12
+{
+ public static void main (String argv[])
+ {
+ new bin_12_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_12.out1 b/gnu/testlet/BinaryCompatibility/bin_12.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_12.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_12.out2 b/gnu/testlet/BinaryCompatibility/bin_12.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_12.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_12_sub.java b/gnu/testlet/BinaryCompatibility/bin_12_sub.java
new file mode 100644
index 00000000..c410a84c
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_12_sub.java
@@ -0,0 +1,42 @@
+public class bin_12_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ final int arse;
+
+ bin_12_sub(int n)
+ {
+ arse = 1;
+ }
+
+ bin_12_sub()
+ {
+ arse = 0;
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (arse);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_13.java b/gnu/testlet/BinaryCompatibility/bin_13.java
new file mode 100644
index 00000000..74f613a2
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_13.java
@@ -0,0 +1,31 @@
+// Moving a method upward in the class hierarchy
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_13
+{
+ public static void main (String argv[])
+ {
+ new bin_13_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_13.out1 b/gnu/testlet/BinaryCompatibility/bin_13.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_13.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_13.out2 b/gnu/testlet/BinaryCompatibility/bin_13.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_13.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_13_sub.java b/gnu/testlet/BinaryCompatibility/bin_13_sub.java
new file mode 100644
index 00000000..eefa850e
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_13_sub.java
@@ -0,0 +1,35 @@
+public class bin_13_sub extends bin_13_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_13_sub1.java b/gnu/testlet/BinaryCompatibility/bin_13_sub1.java
new file mode 100644
index 00000000..6d2a4295
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_13_sub1.java
@@ -0,0 +1,26 @@
+public class bin_13_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_14.java b/gnu/testlet/BinaryCompatibility/bin_14.java
new file mode 100644
index 00000000..705c021b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14.java
@@ -0,0 +1,31 @@
+// Reordering the list of direct superinterfaces of a class
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_14
+{
+ public static void main (String argv[])
+ {
+ new bin_14_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_14.out1 b/gnu/testlet/BinaryCompatibility/bin_14.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_14.out2 b/gnu/testlet/BinaryCompatibility/bin_14.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_14_interface1.java b/gnu/testlet/BinaryCompatibility/bin_14_interface1.java
new file mode 100644
index 00000000..77ba3ad2
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14_interface1.java
@@ -0,0 +1,26 @@
+interface bin_14_interface1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_0 ();
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_14_interface2.java b/gnu/testlet/BinaryCompatibility/bin_14_interface2.java
new file mode 100644
index 00000000..4a3abdf5
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14_interface2.java
@@ -0,0 +1,26 @@
+interface bin_14_interface2
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_1 ();
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_14_sub.java b/gnu/testlet/BinaryCompatibility/bin_14_sub.java
new file mode 100644
index 00000000..55cb0413
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_14_sub.java
@@ -0,0 +1,38 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+
+public class bin_14_sub implements bin_14_interface1, bin_14_interface2
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_15.java b/gnu/testlet/BinaryCompatibility/bin_15.java
new file mode 100644
index 00000000..75a22f4d
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15.java
@@ -0,0 +1,31 @@
+// Reordering the list of direct superinterfaces of an interface
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_15
+{
+ public static void main (String argv[])
+ {
+ new bin_15_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_15.out1 b/gnu/testlet/BinaryCompatibility/bin_15.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_15.out2 b/gnu/testlet/BinaryCompatibility/bin_15.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_15_interface1.java b/gnu/testlet/BinaryCompatibility/bin_15_interface1.java
new file mode 100644
index 00000000..728cdad1
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15_interface1.java
@@ -0,0 +1,26 @@
+interface bin_15_interface1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_0 ();
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_15_interface2.java b/gnu/testlet/BinaryCompatibility/bin_15_interface2.java
new file mode 100644
index 00000000..f12d4890
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15_interface2.java
@@ -0,0 +1,26 @@
+interface bin_15_interface2
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ void dummy_1 ();
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_15_interface3.java b/gnu/testlet/BinaryCompatibility/bin_15_interface3.java
new file mode 100644
index 00000000..09471def
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15_interface3.java
@@ -0,0 +1,25 @@
+interface bin_15_interface3 extends bin_15_interface1, bin_15_interface2
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_15_sub.java b/gnu/testlet/BinaryCompatibility/bin_15_sub.java
new file mode 100644
index 00000000..78b6b0f3
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_15_sub.java
@@ -0,0 +1,38 @@
+
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+
+public class bin_15_sub implements bin_15_interface3
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_16.java b/gnu/testlet/BinaryCompatibility/bin_16.java
new file mode 100644
index 00000000..34eb01a5
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_16.java
@@ -0,0 +1,29 @@
+// Inserting a new class in the type hierarchy
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_16
+{
+ public static void main (String argv[])
+ {
+ new bin_16_sub().dummy_1();
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_16.out1 b/gnu/testlet/BinaryCompatibility/bin_16.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_16.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_16.out2 b/gnu/testlet/BinaryCompatibility/bin_16.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_16.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_16_sub.java b/gnu/testlet/BinaryCompatibility/bin_16_sub.java
new file mode 100644
index 00000000..9953cfd9
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_16_sub.java
@@ -0,0 +1,30 @@
+public class bin_16_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_17.java b/gnu/testlet/BinaryCompatibility/bin_17.java
new file mode 100644
index 00000000..6408e6bc
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_17.java
@@ -0,0 +1,29 @@
+// Inserting a new interface in the type hierarchy
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+public class bin_17
+{
+ public static void main (String argv[])
+ {
+ new bin_17_sub().dummy_1();
+ }
+}
diff --git a/gnu/testlet/BinaryCompatibility/bin_17.out1 b/gnu/testlet/BinaryCompatibility/bin_17.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_17.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_17.out2 b/gnu/testlet/BinaryCompatibility/bin_17.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_17.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_17_sub.java b/gnu/testlet/BinaryCompatibility/bin_17_sub.java
new file mode 100644
index 00000000..14d925ca
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_17_sub.java
@@ -0,0 +1,30 @@
+public class bin_17_sub
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_18.java b/gnu/testlet/BinaryCompatibility/bin_18.java
new file mode 100644
index 00000000..b00c926f
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_18.java
@@ -0,0 +1,31 @@
+// Changing the declared access of a member from public to package private
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+
+public class bin_18
+{
+ public static void main (String argv[])
+ {
+ new bin_18_sub().dummy_1();
+ }
+}
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_18.out1 b/gnu/testlet/BinaryCompatibility/bin_18.out1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_18.out1
diff --git a/gnu/testlet/BinaryCompatibility/bin_18.out2 b/gnu/testlet/BinaryCompatibility/bin_18.out2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_18.out2
diff --git a/gnu/testlet/BinaryCompatibility/bin_18_sub.java b/gnu/testlet/BinaryCompatibility/bin_18_sub.java
new file mode 100644
index 00000000..d3158767
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_18_sub.java
@@ -0,0 +1,35 @@
+public class bin_18_sub extends bin_18_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (0);
+ }
+
+ public void dummy_1 ()
+ {
+ System.out.println (1);
+ }
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/bin_18_sub1.java b/gnu/testlet/BinaryCompatibility/bin_18_sub1.java
new file mode 100644
index 00000000..0af81ccf
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/bin_18_sub1.java
@@ -0,0 +1,31 @@
+public class bin_18_sub1
+// Tags: not-a-test
+// Copyright (C) 2003 Red Hat, Inc.
+// Written by aph@redhat.com
+
+// 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.
+
+{
+ public void dummy_0 ()
+ {
+ System.out.println (99);
+ }
+
+}
+
+
diff --git a/gnu/testlet/BinaryCompatibility/foo b/gnu/testlet/BinaryCompatibility/foo
new file mode 100755
index 00000000..062bdd0f
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/foo
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+verbose=true
+
+rm $1.out2 $1.out1
+for src in $1*.java; do
+ if test "x$JAVA" != "x" ; then
+ if test "$verbose" = "true" ; then
+ echo $JAVAC -classpath . $src
+ fi
+ $JAVAC -classpath . $src 2>&1 || echo FAIL "$JAVAC $1: "
+ else
+ if test "$verbose" = "true" ; then
+ echo $GCJ -c $src
+ fi
+ $GCJ -c $src || echo FAIL "$1: "
+ fi
+done
+objs=`echo $1*.java | sed 's/\.java/.o/g'`
+if test "x$JAVA" != "x" ; then
+ $JAVA -classpath . $1 > $1.out1 || echo FAIL "$1: "
+ echo -classpath . $JAVA $1
+else
+ if test "$verbose" = "true" ; then
+ echo $GCJ $objs -o $1 --main=$1
+ echo "./$1 > $1.out1"
+ fi
+ $GCJ $objs -o $1 --main=$1 || echo FAIL "$1: "
+ ./$1 > $1.out1 || echo FAIL "$1: "
+fi
+for src in altered/$1*.java; do
+ if test "x$JAVA" != "x" ; then
+ if test "$verbose" = "true" ; then
+ echo $JAVAC $src -classpath altered:.
+ fi
+ $JAVAC -classpath altered:. $src || echo FAIL "$JAVAC $1: "
+ else
+ if test "$verbose" = "true" ; then
+ echo $GCJ -c $src -Ialtered/
+ fi
+ $GCJ -c $src -Ialtered/ || echo FAIL "$1: "
+ fi
+done
+if test "x$JAVA" != "x" ; then
+ if test "$verbose" = "true" ; then
+ echo $JAVA -classpath altered:. $1
+ fi
+ $JAVA -classpath altered:. $1 > $1.out2 || echo FAIL "$1: "
+else
+ if test "$verbose" = "true" ; then
+ echo $GCJ $objs $2 -o $1 --main=$1
+ echo "./$1 > $1.out2"
+ fi
+ $GCJ $objs $2 -o $1 --main=$1 || echo FAIL "$1: "
+ ./$1 > $1.out2 || echo FAIL "$1: "
+fi
+if test "$verbose" = "true" ; then
+ echo diff $1.out1 $1.out2
+fi
+if diff $1.out1 $1.out2 > /dev/null; then
+ echo -n PASS "$1: "
+ head -1 $1.java
+else
+ echo -n FAIL "$1: "
+ head -1 $1.java
+ if test "$verbose" = "true" ; then
+ diff $1.out1 $1.out2
+ fi
+fi
diff --git a/gnu/testlet/BinaryCompatibility/tests b/gnu/testlet/BinaryCompatibility/tests
new file mode 100644
index 00000000..45130904
--- /dev/null
+++ b/gnu/testlet/BinaryCompatibility/tests
@@ -0,0 +1,18 @@
+sh ./foo bin_01
+sh ./foo bin_02
+sh ./foo bin_03
+sh ./foo bin_04
+sh ./foo bin_05
+sh ./foo bin_06
+sh ./foo bin_07
+sh ./foo bin_08
+sh ./foo bin_09
+sh ./foo bin_10
+sh ./foo bin_11
+sh ./foo bin_12
+sh ./foo bin_13
+sh ./foo bin_14
+sh ./foo bin_15
+sh ./foo bin_16 bin_16_sub1.o
+sh ./foo bin_17 bin_17_interface.o
+sh ./foo bin_18
diff --git a/gnu/testlet/CVS/Entries b/gnu/testlet/CVS/Entries
new file mode 100644
index 00000000..2328a184
--- /dev/null
+++ b/gnu/testlet/CVS/Entries
@@ -0,0 +1,11 @@
+/.cvsignore/1.2/Fri Sep 13 14:40:24 2002//
+/ResourceNotFoundException.java/1.2/Sun Nov 26 21:24:14 2006//
+/SingleTestHarness.java/1.2/Fri Nov 14 19:33:05 2008//
+/TestHarness.java/1.28/Wed Jun 25 14:51:50 2008//
+/TestReport.java/1.6/Tue Apr 24 00:45:01 2012//
+/TestResult.java/1.3/Tue Apr 24 00:45:01 2012//
+/TestSecurityManager.java/1.7/Tue Apr 24 00:45:01 2012//
+/Testlet.java/1.4/Fri Dec 11 11:27:59 1998//
+/VisualTestlet.java/1.1/Fri Oct 13 11:45:43 2006//
+/config.java.in/1.7/Wed Jun 25 14:51:50 2008//
+D
diff --git a/gnu/testlet/CVS/Entries.Log b/gnu/testlet/CVS/Entries.Log
new file mode 100644
index 00000000..bbbaa1ef
--- /dev/null
+++ b/gnu/testlet/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/BinaryCompatibility////
+A D/gnu////
+A D/java////
+A D/javax////
+A D/locales////
+A D/org////
+A D/runner////
diff --git a/gnu/testlet/CVS/Repository b/gnu/testlet/CVS/Repository
new file mode 100644
index 00000000..be667e40
--- /dev/null
+++ b/gnu/testlet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet
diff --git a/gnu/testlet/CVS/Root b/gnu/testlet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/ResourceNotFoundException.java b/gnu/testlet/ResourceNotFoundException.java
new file mode 100644
index 00000000..049bec41
--- /dev/null
+++ b/gnu/testlet/ResourceNotFoundException.java
@@ -0,0 +1,36 @@
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Anthony Green <green@cygnus.com>
+
+// 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;
+
+public class ResourceNotFoundException extends Exception
+{
+ static final long serialVersionUID = 5458725419573856014L;
+
+ public ResourceNotFoundException ()
+ {
+ super ();
+ }
+
+ public ResourceNotFoundException (String s)
+ {
+ super (s);
+ }
+}
diff --git a/gnu/testlet/SingleTestHarness.java b/gnu/testlet/SingleTestHarness.java
new file mode 100644
index 00000000..f3b998d8
--- /dev/null
+++ b/gnu/testlet/SingleTestHarness.java
@@ -0,0 +1,164 @@
+/* SingleTestHarness.java -- Runs one test given on the command line
+ Copyright (C) 2005 Mark J. Wielaard
+This file is part of Mauve.
+
+ Modified by Ewout Prangsma (epr@jnode.org)
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+package gnu.testlet;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+public class SingleTestHarness extends TestHarness
+{
+ private int count;
+ private String className;
+ private boolean verbose = false;
+
+ private String last_check;
+
+ public SingleTestHarness(Testlet t, boolean verbose)
+ {
+ this.verbose = verbose;
+ className = t.getClass().getName();
+ }
+
+ public void check(boolean result)
+ {
+ String message = (result ? "PASS" : "FAIL") + ": " + className
+ + ((last_check == null) ? "" : (": " + last_check))
+ + " (number " + count++ + ")";
+ System.out.println(message);
+ }
+
+ public Reader getResourceReader(String name) throws ResourceNotFoundException
+ {
+ return new BufferedReader(new InputStreamReader(getResourceStream(name)));
+ }
+
+ public InputStream getResourceStream(String name)
+ throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length() > 1)
+ throw new Error("File.separator length is greater than 1");
+ String realName = name.replace('#', File.separator.charAt(0));
+ try
+ {
+ return new FileInputStream(getSourceDirectory() + File.separator
+ + realName);
+ }
+ catch (FileNotFoundException ex)
+ {
+ throw new ResourceNotFoundException(ex.getLocalizedMessage() + ": "
+ + getSourceDirectory()
+ + File.separator + realName);
+ }
+ }
+
+ public File getResourceFile(String name) throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length() > 1)
+ throw new Error("File.separator length is greater than 1");
+ String realName = name.replace('#', File.separator.charAt(0));
+ File f = new File(getSourceDirectory() + File.separator + realName);
+ if (!f.exists())
+ {
+ throw new ResourceNotFoundException("cannot find mauve resource file"
+ + ": " + getSourceDirectory()
+ + File.separator + realName);
+ }
+ return f;
+ }
+
+ public void checkPoint (String name)
+ {
+ last_check = name;
+ count = 0;
+ }
+
+ public void verbose(String message) {
+ if (verbose) {
+ System.out.println(message);
+ }
+ }
+
+ public void debug (String message)
+ {
+ debug(message, true);
+ }
+
+ public void debug (String message, boolean newline)
+ {
+ if (newline)
+ System.out.println(message);
+ else
+ System.out.print(message);
+ }
+
+ public void debug (Throwable ex)
+ {
+ ex.printStackTrace(System.out);
+ }
+
+ public void debug (Object[] o, String desc)
+ {
+ debug("Dumping Object Array: " + desc);
+ if (o == null)
+ {
+ debug("null");
+ return;
+ }
+
+ for (int i = 0; i < o.length; i++) {
+ if (o[i] instanceof Object[])
+ debug((Object[]) o[i], desc + " element " + i);
+ else
+ debug(" Element " + i + ": " + o[i]);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ if (args.length > 0) {
+ final boolean verbose;
+ final String name;
+ if ((args.length > 1) && "-v".equals(args[0])) {
+ verbose = true;
+ name = args[1];
+ } else {
+ verbose = false;
+ name = args[0];
+ }
+
+ Class k = Thread.currentThread().getContextClassLoader().loadClass(
+ name);
+ Testlet t = (Testlet) k.newInstance();
+ TestHarness h = new SingleTestHarness(t, verbose);
+ t.test(h);
+ } else {
+ System.out.println("Usage: mauve-simple [-v] <test-class>");
+ }
+ }
+}
diff --git a/gnu/testlet/TestHarness.java b/gnu/testlet/TestHarness.java
new file mode 100644
index 00000000..4b21adde
--- /dev/null
+++ b/gnu/testlet/TestHarness.java
@@ -0,0 +1,339 @@
+// Copyright (c) 1998, 1999, 2001 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+// Copyright (c) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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;
+
+import java.awt.AWTException;
+import java.awt.Robot;
+
+import java.io.File;
+import java.io.Reader;
+import java.io.InputStream;
+
+/**
+ * This base class defines the API that test cases can report against. This
+ * code has been lifted from the Mauve project (and reformatted and
+ * commented).
+ */
+public abstract class TestHarness
+ implements config
+{
+ /**
+ * Records the result of a boolean check.
+ *
+ * @param result the result.
+ */
+ public abstract void check (boolean result);
+
+ /**
+ * Checks the two objects for equality and records the result of
+ * the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(Object result, Object expected)
+ {
+ boolean ok = (result == null ? expected == null : result.equals(expected));
+ check(ok);
+ // This debug message may be misleading, depending on whether
+ // string conversion produces same results for unequal objects.
+ if (! ok)
+ debug("got " + result + " but expected " + expected);
+ }
+
+ /**
+ * Checks two booleans for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(boolean result, boolean expected)
+ {
+ boolean ok = (result == expected);
+ check(ok);
+ if (! ok)
+ debug("got " + result + " but expected " + expected);
+ }
+
+ /**
+ * Checks two ints for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(int result, int expected)
+ {
+ boolean ok = (result == expected);
+ check(ok);
+ if (! ok)
+ debug("got " + result + " but expected " + expected);
+ }
+
+ /**
+ * Checks two longs for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(long result, long expected)
+ {
+ boolean ok = (result == expected);
+ check(ok);
+ if (! ok)
+ debug("got " + result + " but expected " + expected);
+ }
+
+ /**
+ * Checks two doubles for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(double result, double expected)
+ {
+ // This triple check overcomes the fact that == does not
+ // compare NaNs, and cannot tell between 0.0 and -0.0;
+ // and all without relying on java.lang.Double (which may
+ // itself be buggy - else why would we be testing it? ;)
+ // For 0, we switch to infinities, and for NaN, we rely
+ // on the identity in JLS 15.21.1 that NaN != NaN is true.
+ boolean ok = (result == expected ? (result != 0)
+ || (1 / result == 1 / expected)
+ : (result != result)
+ && (expected != expected));
+ check(ok);
+ if (! ok)
+ // If Double.toString() is buggy, this debug statement may
+ // accidentally show the same string for two different doubles!
+ debug("got " + result + " but expected " + expected);
+ }
+
+ /**
+ * Checks if <code>result</code> is equal to <code>expected</code> and
+ * take a rounding delta into account.
+ *
+ * @param result the actual result
+ * @param expected the expected value
+ * @param delta the rounding delta
+ */
+ public void check(double result, double expected, double delta)
+ {
+ boolean ok = true;
+ if (Double.isInfinite(expected))
+ {
+ if (result != expected)
+ ok = false;
+ }
+ else if (! (Math.abs(expected - result) <= delta))
+ ok = false;
+
+ check(ok);
+ if (! ok)
+ // If Double.toString() is buggy, this debug statement may
+ // accidentally show the same string for two different doubles!
+ debug("got " + result + " but expected " + expected);
+ }
+
+ // These methods are like the above, but checkpoint first.
+ public void check(boolean result, String name)
+ {
+ checkPoint(name);
+ check(result);
+ }
+
+ public void check(Object result, Object expected, String name)
+ {
+ checkPoint(name);
+ check(result, expected);
+ }
+
+ public void check(boolean result, boolean expected, String name)
+ {
+ checkPoint(name);
+ check(result, expected);
+ }
+
+ public void check(int result, int expected, String name)
+ {
+ checkPoint(name);
+ check(result, expected);
+ }
+
+ public void check(long result, long expected, String name)
+ {
+ checkPoint(name);
+ check(result, expected);
+ }
+
+ public void check(double result, double expected, String name)
+ {
+ checkPoint(name);
+ check(result, expected);
+ }
+
+ public Robot createRobot()
+ {
+ Robot r = null;
+
+ try
+ {
+ r = new Robot();
+ }
+ catch (AWTException e)
+ {
+ fail("TestHarness: couldn't create Robot: " + e.getMessage());
+ }
+
+ return r;
+ }
+
+ /**
+ * A convenience method that sets a checkpoint with the specified name
+ * then records a failed check.
+ *
+ * @param name the checkpoint name.
+ */
+ public void fail(String name)
+ {
+ checkPoint(name);
+ check(false);
+ }
+
+ // Given a resource name, return a Reader on it. Resource names are
+ // just like file names. They are relative to the top level Mauve
+ // directory, but '#' characters are used in place of directory
+ // separators.
+ public abstract Reader getResourceReader (String name)
+ throws ResourceNotFoundException;
+
+ public abstract InputStream getResourceStream (String name)
+ throws ResourceNotFoundException;
+
+ public abstract File getResourceFile (String name)
+ throws ResourceNotFoundException;
+
+ /**
+ * Records a check point. This can be used to mark a known place in a
+ * testlet. It is useful if you have a large number of tests -- it makes
+ * it easier to find a failing test in the source code.
+ *
+ * @param name the check point name.
+ */
+ public abstract void checkPoint (String name);
+
+ /**
+ * This will print a message when in verbose mode.
+ *
+ * @param message the message.
+ */
+ public abstract void verbose (String message);
+
+ /**
+ * Writes a message to the debug log.
+ *
+ * @param message the message.
+ */
+ public abstract void debug (String message);
+
+ /**
+ * Writes a message to the debug log with or without a newline.
+ *
+ * @param message the message.
+ * @param newline a flag to control whether or not a newline is added.
+ */
+ public abstract void debug (String message, boolean newline);
+ /**
+ * Writes a stack trace for the specified exception to a log.
+ *
+ * @param ex the exception.
+ */
+ public abstract void debug (Throwable ex);
+
+ /**
+ * Writes the contents of an array to the log.
+ *
+ * @param o the array of objects.
+ * @param desc the description.
+ */
+ public abstract void debug (Object[] o, String desc);
+
+ // Default config interface methods.
+ public String getSourceDirectory ()
+ {
+ return srcdir;
+ }
+
+ public String getBuildDirectory ()
+ {
+ return builddir;
+ }
+
+ /**
+ * Provide a directory name for writing temporary files.
+ *
+ * @return The temporary directory name.
+ */
+
+ public String getTempDirectory ()
+ {
+ return tmpdir;
+ }
+
+ public String getPathSeparator ()
+ {
+ return pathSeparator;
+ }
+
+ public String getSeparator ()
+ {
+ return separator;
+ }
+
+ public String getMailHost ()
+ {
+ return mailHost;
+ }
+ public String getAutoCompile()
+ {
+ return autoCompile;
+ }
+
+ public String getCpInstallDir()
+ {
+ return cpInstallDir;
+ }
+
+ public String getEcjJar()
+ {
+ return ecjJar;
+ }
+
+ public String getEmmaString()
+ {
+ return emmaString;
+ }
+
+ public String getTestJava()
+ {
+ return testJava;
+ }
+}
diff --git a/gnu/testlet/TestReport.java b/gnu/testlet/TestReport.java
new file mode 100644
index 00000000..705756e7
--- /dev/null
+++ b/gnu/testlet/TestReport.java
@@ -0,0 +1,153 @@
+// Copyright (c) 2004 Noa Resare.
+// Written by Noa Resre <noa@resare.com>
+
+// 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;
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * A TestReport represents all the results of a test run. The TestReport
+ * can be serialized to xml with the writeXml method.
+ */
+public class TestReport
+{
+ private Properties systemProperties;
+ private List<TestResult> testResults;
+
+ private static final String ENCODING = "UTF-8";
+
+
+ /**
+ * Creates a new TestReport object with jvmName and jvmVersion set.
+ *
+ * @param systemProperties the Properties object returned from
+ * System.getProperties() of the jvm that is tested.
+ */
+ public TestReport(Properties systemProperties)
+ {
+ this.systemProperties = systemProperties;
+ this.testResults = new ArrayList<TestResult>();
+ }
+
+ /**
+ * Adds a TestResult object to this TestReport.
+ *
+ * @param result the TestResult object to be added
+ */
+ public void addTestResult(TestResult result)
+ {
+ this.testResults.add(result);
+ }
+
+ /**
+ * Writes a representation of this TestReport object in xml format.
+ *
+ * @param f the file where the xml stream gets written
+ */
+ public void writeXml(File f) throws IOException
+ {
+ Writer out = new OutputStreamWriter(new FileOutputStream(f), ENCODING);
+ out.write("<?xml version='1.0' encoding='" + ENCODING + "'?>\n");
+ out.write("<testreport version='0.1'>\n <jvm name='"
+ + escAttrib(systemProperties.get("java.vm.vendor"))
+ + "'\n version='"
+ + escAttrib(systemProperties.get("java.vm.version")) + "' \n"
+ + " os='" + escAttrib(systemProperties.get("os.name")) + " "
+ + escAttrib(systemProperties.get("os.version")) + " "
+ + escAttrib(systemProperties.get("os.arch")) + "' />\n");
+ Collections.sort(testResults);
+ Iterator<TestResult> results = testResults.iterator();
+ while (results.hasNext())
+ {
+ // Send a message to the Harness to let it know that we are
+ // still writing the XML file.
+ System.out.println("RunnerProcess:restart-timer");
+
+ TestResult tr = results.next();
+ String[] failures = tr.getFailMessags();
+ String[] passes = tr.getPassMessages();
+ out.write(" <testresult testlet='" + escAttrib(tr.getTestletName()));
+ if (failures.length > 0 || passes.length > 0
+ || tr.getException() != null)
+ out.write("'>\n");
+ else
+ out.write("'/>\n");
+
+ for (int i = 0; i < failures.length; i++) {
+ // Restart timer.
+ System.out.println("RunnerProcess:restart-timer");
+ out.write(" <failure>" + esc(failures[i]) + "</failure>\n");
+ }
+
+ if (tr.getException() != null)
+ {
+ Throwable t = tr.getException();
+ out.write(" <failure>\n <exception class='"
+ + escAttrib(t.getClass().getName())
+ + "'>\n <reason>" + esc(tr.getExceptionMessage())
+ + "</reason>\n <message>\n"
+ + esc(tr.getExceptionReason())
+ + "\n </message>\n </exception>"
+ + "\n </failure>\n");
+ }
+
+ for (int i = 0; i < passes.length; i++) {
+ // Restart timer.
+ System.out.println("RunnerProcess:restart-timer");
+ out.write(" <pass>" + esc(passes[i]) + "</pass>\n");
+ }
+
+ if (failures.length > 0 || passes.length > 0
+ || tr.getException() != null)
+ out.write(" </testresult>\n");
+ }
+ out.write("</testreport>\n");
+ out.close();
+ }
+
+ /**
+ * Escapes chars &lt; &gt; and &amp; in str so that the result is
+ * suitable for inclusion in an xml stream.
+ */
+ private String esc(String str)
+ {
+ if (str == null)
+ return null;
+ str = str.replaceAll("&", "&amp;");
+ str = str.replaceAll("<", "&lt;");
+ str = str.replaceAll(">", "&gt;");
+ // This is a workaround for java.util.regex.Pattern.pcrematches.
+ str = str.replace(' ', '?');
+ return str;
+ }
+
+ /**
+ * Escapes single quotes in string by prepending a backslash.
+ */
+ private String escAttrib(Object obj)
+ {
+ if (obj == null)
+ return null;
+ String str = (String)obj;
+ str = str.replaceAll("'", "\\'");
+ return str;
+ }
+}
diff --git a/gnu/testlet/TestResult.java b/gnu/testlet/TestResult.java
new file mode 100644
index 00000000..aff4823d
--- /dev/null
+++ b/gnu/testlet/TestResult.java
@@ -0,0 +1,170 @@
+// Copyright (c) 2004 Noa Resare.
+// Written by Noa Resre <noa@resare.com>
+
+// 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;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * A TestResult object represents the results a run of one Testlet. TestResult
+ * objects are normally agregated in a TestReport. The natural ordering of
+ * TestResult is defined to be the same as the natural order of their
+ * respective testletName field.
+ */
+public class TestResult
+ implements Comparable<TestResult>
+{
+ private String testletName = null;
+ private List<String> failMessages = new ArrayList<String>();
+ private List<String> passMessages = new ArrayList<String>();
+ private Throwable exception = null;
+ private String exceptionReason = null;
+ private String exceptionMessage = null;
+
+ /**
+ * Constructs a TestResult instance with testletName set to the given name.
+ *
+ * @param testletName the name of the testlet that produced this TestResult
+ */
+ public TestResult(String testletName)
+ {
+ if (testletName == null)
+ throw new IllegalArgumentException("testletName can not be null");
+ this.testletName = testletName;
+ }
+
+ /**
+ * Adds a pass message identifying a passing test. Should be called
+ * when a test passes.
+ *
+ * @param message a String that identifies the test that passed
+ */
+ public void addPass(String message)
+ {
+ passMessages.add(message);
+ }
+
+ /**
+ * Adds a failure message identifying a failing test. Should be called when
+ * a test fails.
+ *
+ * @param message a String that identifies the test that failed inside
+ * this servlet
+ */
+ public void addFail(String message)
+ {
+ failMessages.add(message);
+ }
+
+ /**
+ * Adds an Exception and optional identification message to this TestResult
+ * object. Should be called when the instantiation or execution of a Testlet
+ * results in an exception.
+ *
+ * @param exception The exception that was thrown
+ * @param message A message that identifies the test that caused the
+ * @param reason the stack trace for the Exception
+ * exception to be thrown
+ */
+ public void addException(Throwable exception, String message, String reason)
+ {
+ if (this.exception != null)
+ throw new IllegalArgumentException("trying to add more than one " +
+ "exception to TestResult");
+ this.exception = exception;
+ this.exceptionMessage = message;
+ this.exceptionReason = reason;
+ }
+
+ /**
+ * The number of tests that have preformed without failure or exceptions.
+ */
+ public int getPassCount()
+ {
+ return passMessages.size();
+ }
+
+ /**
+ * An array of Strings that holds the identifying messages for all failed
+ * tests.
+ */
+ public String[] getFailMessags()
+ {
+ return failMessages.toArray(new String[failMessages.size()]);
+ }
+
+ /**
+ * An array of Strings that holds the identifying messages for all
+ * passing tests.
+ *
+ * @return an array of Strings holding the messages for passing tests.
+ */
+ public String[] getPassMessages()
+ {
+ return passMessages.toArray(new String[passMessages.size()]);
+ }
+
+ /**
+ * The name of the Testlet that this TestResult holds information about.
+ */
+ public String getTestletName()
+ {
+ return testletName;
+ }
+
+ /**
+ * If an Exception was thrown when the Testlet was instantiated or run it
+ * is returned, else null is returned.
+ */
+ public Throwable getException()
+ {
+ return exception;
+ }
+
+ /**
+ * If an Exception was thrown when the Testlet was instantiated or run,
+ * this String identifies what test (or other contition) caused the test.
+ */
+ public String getExceptionMessage()
+ {
+ return exceptionMessage;
+ }
+
+ /**
+ * If an Exception was thrown when the Testlet was instantiated or run,
+ * this String is the stack trace associated with the Exception.
+ *
+ * @return the stack trace associated with the Exception
+ */
+ public String getExceptionReason()
+ {
+ return exceptionReason;
+ }
+
+ /**
+ * Compares one TestResult object to another. TestResult objects compare
+ * the same as their testletName fields.
+ */
+ public int compareTo(TestResult other)
+ {
+ return testletName.compareTo(other.testletName);
+ }
+}
diff --git a/gnu/testlet/TestSecurityManager.java b/gnu/testlet/TestSecurityManager.java
new file mode 100644
index 00000000..2f02d2c5
--- /dev/null
+++ b/gnu/testlet/TestSecurityManager.java
@@ -0,0 +1,386 @@
+// Copyright (C) 2004 Stephen Crawley.
+// Copyright (C) 2005, 2006 Red Hat, Inc.
+// Written by Stephen Crawley <crawley@dstc.edu.au>
+// Extensively modified by Gary Benson <gbenson@redhat.com>
+
+// 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;
+
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+
+/**
+ * A security manager for testing that security checks are performed.
+ *
+ * Typically a testcase would call <code>prepareChecks()</code> to
+ * specify permissions that are expected to be checked during this
+ * test. Next you call whatever should perform the checks, and
+ * finally you call <code>checkAllChecked()</code> to check that the
+ * permissions you specified were checked. Any unexpected checks
+ * cause a {@link SecurityException} to be thrown.
+ *
+ * As well as the permissions that must be checked it is possible to
+ * supply <code>prepareChecks()</code> with a list of permissions that
+ * may be checked. This allows some cases where proprietary JVMs
+ * check something incidental that Classpath does not to be checked.
+ * There are also halting versions of <code>prepareChecks()</code>
+ * which will cause an exception to be thrown when all permissions
+ * have been checked. This allows throwpoints on things like
+ * <code>System.exit()</code> to be tested.
+ *
+ * @author Stephen Crawley (crawley@dstc.edu.au)
+ * @author Gary Benson (gbenson@redhat.com)
+ */
+public class TestSecurityManager extends SecurityManager
+{
+ /**
+ * The security manager that was in force before we were installed.
+ */
+ private SecurityManager oldManager;
+
+ /**
+ * The policy in force before we were installed
+ */
+ private Policy oldPolicy;
+
+ /**
+ * Permissions that must be checked for this test to pass.
+ */
+ private Permission[] mustCheck;
+
+ /**
+ * Permissions that may be checked during this test.
+ */
+ private Permission[] mayCheck;
+
+ /**
+ * Whether we are enabled or not.
+ */
+ private boolean enabled;
+
+ /**
+ * Must-check permissions are flagged as they are checked.
+ */
+ private boolean[] checked;
+
+ /**
+ * The test harness in use.
+ */
+ private final TestHarness harness;
+
+ /**
+ * Should we halt after all checks have occurred?
+ */
+ private boolean isHalting;
+
+ /**
+ * The exception to throw when halting.
+ */
+ public static class SuccessException extends SecurityException
+ {
+ private static final long serialVersionUID = 23;
+ };
+ private final SuccessException successException = new SuccessException();
+
+ /**
+ * How should permissions be compared?
+ */
+ private int compare;
+
+ /**
+ * Compare permissions using <code>p1.equals(p2)</code>.
+ */
+ public static final int EQUALS = 1;
+
+ /**
+ * Compare permissions using <code>p1.implies(p2)</code>.
+ */
+ public static final int IMPLIES = 2;
+
+ /**
+ * An empty list of checks, for convenience.
+ */
+ private final Permission[] noChecks = new Permission[0];
+
+ /**
+ * Create a new test security manager.
+ *
+ * @param harness <code>TestHarness</code> the tests will be run by
+ */
+ public TestSecurityManager(TestHarness harness)
+ {
+ super();
+ this.harness = harness;
+ }
+
+ /**
+ * Install this test security manager.
+ */
+ public void install()
+ {
+ SecurityManager oldsm = System.getSecurityManager();
+ if (oldsm == this)
+ throw new IllegalStateException("already installed");
+ oldManager = oldsm;
+
+ enabled = false;
+
+ oldPolicy = Policy.getPolicy();
+ Policy.setPolicy(new Policy()
+ {
+ public PermissionCollection getPermissions(CodeSource codesource)
+ {
+ return null;
+ }
+ /**
+ * Check that this permission is one that we should be checking.
+ * This code used to be in TestSecurityManager.checkPermission,
+ * but doing the same here allows us to easily skip doPrivileged
+ * actions like reading some properties in system code.
+ *
+ * @param perm the permission to be checked
+ * @throws SuccessException if all <code>mustCheck</code>
+ * permissions have been checked and <code>isHalting</code>
+ * is true.
+ * @return returns false if and only if none of the <code>mustCheck</code>
+ * or <code>mayCheck</code> permissions matches
+ * <code>perm</code>. else true
+ */
+ public boolean implies(ProtectionDomain domain,
+ Permission perm)
+ {
+ if (!enabled)
+ return true;
+
+ if (harness != null)
+ harness.debug("checkPermission(" + perm + ")");
+
+ boolean matched = false;
+
+ if (!matched) {
+ for (int i = 0; i < mustCheck.length; i++) {
+ if (permissionsMatch(mustCheck[i], perm)) {
+ checked[i] = true;
+ matched = true;
+ }
+ }
+ }
+
+ if (!matched) {
+ for (int i = 0; i < mayCheck.length; i++) {
+ if (permissionsMatch(mayCheck[i], perm)) {
+ matched = true;
+ }
+ }
+ }
+
+ if (!matched) {
+ enabled = false;
+
+ harness.debug("unexpected check: " + perm);
+
+ if (mustCheck.length != 0) {
+ StringBuffer expected = new StringBuffer();
+ for (int i = 0; i < mustCheck.length; i++)
+ expected.append(' ').append(mustCheck[i]);
+ harness.debug("expected: mustCheck:" + expected.toString());
+ }
+
+ if (mayCheck.length != 0) {
+ StringBuffer expected = new StringBuffer();
+ for (int i = 0; i < mayCheck.length; i++)
+ expected.append(' ').append(mayCheck[i]);
+ harness.debug("expected: mayCheck:" + expected.toString());
+ }
+
+ return false;
+ }
+
+ if (isHalting) {
+ boolean allChecked = true;
+ for (int i = 0; i < checked.length; i++) {
+ if (!checked[i])
+ allChecked = false;
+ }
+ if (allChecked) {
+ enabled = false;
+ throw successException;
+ }
+ }
+ return true;
+ }
+ public void refresh()
+ {
+ return;
+ }
+ });
+
+ System.setSecurityManager(this);
+ }
+
+ /**
+ * Uninstall this test security manager, replacing it with whatever
+ * was in force before it was installed.
+ */
+ public void uninstall()
+ {
+ SecurityManager oldsm = System.getSecurityManager();
+ if (oldsm != this)
+ throw new IllegalStateException("not installed");
+
+ enabled = false;
+ System.setSecurityManager(oldManager);
+ Policy.setPolicy(oldPolicy);
+ }
+
+ /**
+ * Prepare this test security manager for a series of checks.
+ * <code>checkAllChecked()</code> should be called after the
+ * test to check that the specified permissions were checked.
+ *
+ * @param mustCheck permissions that must be checked in order for
+ * the test to pass
+ */
+ public void prepareChecks(Permission[] mustCheck)
+ {
+ prepareChecks(mustCheck, noChecks);
+ }
+
+ /**
+ * Prepare this test security manager for a series of checks.
+ * <code>checkAllChecked()</code> should be called after the
+ * test to check that the specified permissions were checked.
+ *
+ * @param mustCheck permissions that must be checked in order for
+ * the test to pass
+ * @param mayCheck permissions that may be checked during the test
+ * but are not required in order for the test to pass
+ */
+ public void prepareChecks(Permission[] mustCheck, Permission[] mayCheck)
+ {
+ prepareChecks(mustCheck, mayCheck, false);
+ }
+
+ /**
+ * Prepare this test security manager for a series of checks.
+ * A <code>SuccessException</code> will be thrown when the
+ * final permission is checked, halting the test.
+ *
+ * @param mustCheck permissions that must be checked in order for
+ * the test to pass
+ */
+ public void prepareHaltingChecks(Permission[] mustCheck)
+ {
+ prepareHaltingChecks(mustCheck, noChecks);
+ }
+
+ /**
+ * Prepare this test security manager for a series of checks.
+ * A <code>SuccessException</code> will be thrown when the
+ * final permission is checked, halting the test.
+ *
+ * @param mustCheck permissions that must be checked in order for
+ * the test to pass
+ * @param mayCheck permissions that may be checked during the test
+ * but are not required in order for the test to pass
+ */
+ public void prepareHaltingChecks(Permission[] mustCheck,
+ Permission[] mayCheck)
+ {
+ prepareChecks(mustCheck, mayCheck, true);
+ }
+
+ /**
+ * Prepare this test security manager for a series of checks.
+ *
+ * @param mustCheck permissions that must be checked in order for
+ * the test to pass
+ * @param mayCheck permissions that may be checked during the test
+ * but are not required in order for the test to pass
+ * @param isHalting whether to throw a <code>SuccessException</code>
+ * when the final permission is checked
+ */
+ protected void prepareChecks(Permission[] mustCheck,
+ Permission[] mayCheck,
+ boolean isHalting)
+ {
+ this.mayCheck = mayCheck;
+ this.mustCheck = mustCheck;
+ this.isHalting = isHalting;
+
+ checked = new boolean[mustCheck.length];
+ enabled = true;
+ compare = EQUALS;
+ }
+
+ /**
+ * Under normal circumstances permissions are compared using
+ * <code>p1.equals(p2)</code> to ensure that the permission being
+ * checked is exactly the permission that is expected. Sometimes it
+ * is not possible to know in advance the exact permission that will
+ * be checked -- the best you can do is some kind of wildcard -- and
+ * in such cases tests can specify that permissions should be
+ * compared using <code>p1.implies(p2)</code> using this method.
+ *
+ * @param style the desired comparison style (<code>EQUALS</code> or
+ * <code>IMPLIES</code>).
+ */
+ public void setComparisonStyle(int style)
+ {
+ compare = style;
+ }
+
+ /**
+ * Compare two permissions.
+ */
+ private boolean permissionsMatch(Permission p1, Permission p2)
+ {
+ switch (compare) {
+ case EQUALS:
+ return p1.equals(p2);
+ case IMPLIES:
+ return p1.implies(p2);
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+ /**
+ * Check that all <code>mustCheck</code> permissions were checked,
+ * calling <code>TestHarness.check()</code> with the result.
+ */
+ public void checkAllChecked()
+ {
+ enabled = false;
+
+ boolean allChecked = true;
+ for (int i = 0; i < checked.length; i++) {
+ if (!checked[i]) {
+ harness.debug("Unchecked permission: " + mustCheck[i]);
+ allChecked = false;
+ }
+ }
+
+ harness.check(allChecked);
+ }
+
+}
diff --git a/gnu/testlet/Testlet.java b/gnu/testlet/Testlet.java
new file mode 100644
index 00000000..29714382
--- /dev/null
+++ b/gnu/testlet/Testlet.java
@@ -0,0 +1,27 @@
+// Copyright (c) 1998 Cygnus Solutions
+// Written by Anthony Green <green@cygnus.com>
+
+// 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;
+
+public interface Testlet
+{
+ // This runs the test.
+ public abstract void test (TestHarness harness);
+}
diff --git a/gnu/testlet/VisualTestlet.java b/gnu/testlet/VisualTestlet.java
new file mode 100644
index 00000000..69d41cd6
--- /dev/null
+++ b/gnu/testlet/VisualTestlet.java
@@ -0,0 +1,131 @@
+/* VisualTestlet.java -- Abstract superclass for visual tests
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet;
+
+import java.awt.Component;
+import java.awt.Frame;
+import java.io.IOException;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+
+/**
+ * Provides an environment for visual tests. Visual tests must provide a
+ * component, instructions and the expected results. The harness provides
+ * all three to the tester and ask if the test passed or not.
+ *
+ * The test component is displayed inside a AWT Frame or a Swing JFrame
+ * (depending on the type of the component). This means that the tested
+ * Java environment needs to have some basic AWT or Swing functionality. This
+ * should be covered by other tests (possibly by java.awt.Robot or so).
+ */
+public abstract class VisualTestlet
+ implements Testlet
+{
+
+ /**
+ * Starts the test.
+ *
+ * @param h the test harness
+ */
+ public void test(TestHarness h)
+ {
+ // Initialize and show test component.
+ Component c = getTestComponent();
+ Frame f;
+ if (c instanceof JComponent)
+ {
+ JFrame jFrame = new JFrame();
+ jFrame.setContentPane((JComponent) c);
+ f = jFrame;
+ }
+ else
+ {
+ f = new Frame();
+ f.add(c);
+ }
+ f.pack();
+ f.setVisible(true);
+
+ // Print instructions and expected results on console.
+ System.out.println("====================================================");
+ System.out.print("This is a test that needs human interaction. Please ");
+ System.out.print("read the instructions carefully and follow them. ");
+ System.out.print("Then check if your results match the expected results. ");
+ System.out.print("Type p <ENTER> if the test showed the expected results,");
+ System.out.println(" f <ENTER> otherwise.");
+ System.out.println("====================================================");
+ System.out.println("INSTRUCTIONS:");
+ System.out.println(getInstructions());
+ System.out.println("====================================================");
+ System.out.println("EXPECTED RESULTS:");
+ System.out.println(getExpectedResults());
+ System.out.println("====================================================");
+
+ // Ask the tester whether the test passes or fails.
+ System.out.println("(P)ASS or (F)AIL ?");
+ while (true)
+ {
+ int ch;
+ try
+ {
+ ch = System.in.read();
+ if (ch == 'P' || ch == 'p')
+ {
+ h.check(true);
+ break;
+ }
+ else if (ch == 'f' || ch == 'F')
+ {
+ h.check(false);
+ break;
+ }
+ }
+ catch (IOException ex)
+ {
+ h.debug(ex);
+ h.fail("Unexpected IO problem on console");
+ }
+ }
+ }
+
+ /**
+ * Provides the instructions for the test.
+ *
+ * @return the instructions for the test
+ */
+ public abstract String getInstructions();
+
+ /**
+ * Describes the expected results.
+ *
+ * @return the expected results
+ */
+ public abstract String getExpectedResults();
+
+ /**
+ * Provides the test component.
+ *
+ * @return the test component
+ */
+ public abstract Component getTestComponent();
+}
diff --git a/gnu/testlet/config.java b/gnu/testlet/config.java
new file mode 100644
index 00000000..6b38c36a
--- /dev/null
+++ b/gnu/testlet/config.java
@@ -0,0 +1,48 @@
+/* Copyright (c) 1999 Cygnus Solutions
+ Written by Anthony Green <green@cygnus.com>
+
+ 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;
+
+public interface config
+{
+ public static final String cpInstallDir = "@CP_INSTALL_DIR@";
+ public static final String autoCompile = "yes";
+ public static final String testJava = "java";
+ public static final String ecjJar = "/usr/share/java/eclipse-ecj.jar";
+ public static final String emmaString = "_auto_detect_emma_";
+ public static final String srcdir = "/home/root/mauve";
+ public static final String builddir = "/home/root/mauve";
+ public static final String tmpdir = "/tmp";
+ public static final String pathSeparator = ":";
+ public static final String separator = "/";
+ public static final String mailHost = "mx10.gnu.org";
+
+ public abstract String getCpInstallDir ();
+ public abstract String getAutoCompile ();
+ public abstract String getTestJava ();
+ public abstract String getEcjJar ();
+ public abstract String getEmmaString ();
+ public abstract String getSourceDirectory ();
+ public abstract String getBuildDirectory ();
+ public abstract String getTempDirectory ();
+ public abstract String getPathSeparator ();
+ public abstract String getSeparator ();
+ public abstract String getMailHost ();
+}
diff --git a/gnu/testlet/config.java.in b/gnu/testlet/config.java.in
new file mode 100644
index 00000000..52a7cc03
--- /dev/null
+++ b/gnu/testlet/config.java.in
@@ -0,0 +1,48 @@
+/* Copyright (c) 1999 Cygnus Solutions
+ Written by Anthony Green <green@cygnus.com>
+
+ 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;
+
+public interface config
+{
+ public static final String cpInstallDir = "@CP_INSTALL_DIR@";
+ public static final String autoCompile = "@AUTO_COMPILE@";
+ public static final String testJava = "@TEST_JAVA@";
+ public static final String ecjJar = "@ECJ_JAR@";
+ public static final String emmaString = "@EMMA@";
+ public static final String srcdir = "@SRCDIR@";
+ public static final String builddir = "@BUILDDIR@";
+ public static final String tmpdir = "@TMPDIR@";
+ public static final String pathSeparator = "@CHECK_PATH_SEPARATOR@";
+ public static final String separator = "@CHECK_FILE_SEPARATOR@";
+ public static final String mailHost = "@MAIL_HOST@";
+
+ public abstract String getCpInstallDir ();
+ public abstract String getAutoCompile ();
+ public abstract String getTestJava ();
+ public abstract String getEcjJar ();
+ public abstract String getEmmaString ();
+ public abstract String getSourceDirectory ();
+ public abstract String getBuildDirectory ();
+ public abstract String getTempDirectory ();
+ public abstract String getPathSeparator ();
+ public abstract String getSeparator ();
+ public abstract String getMailHost ();
+}
diff --git a/gnu/testlet/gnu/CVS/Entries b/gnu/testlet/gnu/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/CVS/Entries.Log b/gnu/testlet/gnu/CVS/Entries.Log
new file mode 100644
index 00000000..d719ea67
--- /dev/null
+++ b/gnu/testlet/gnu/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/java////
+A D/javax////
diff --git a/gnu/testlet/gnu/CVS/Repository b/gnu/testlet/gnu/CVS/Repository
new file mode 100644
index 00000000..13d0d454
--- /dev/null
+++ b/gnu/testlet/gnu/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu
diff --git a/gnu/testlet/gnu/CVS/Root b/gnu/testlet/gnu/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/CVS/Entries b/gnu/testlet/gnu/java/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/java/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/java/CVS/Entries.Log b/gnu/testlet/gnu/java/CVS/Entries.Log
new file mode 100644
index 00000000..7bce76e3
--- /dev/null
+++ b/gnu/testlet/gnu/java/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/security////
diff --git a/gnu/testlet/gnu/java/CVS/Repository b/gnu/testlet/gnu/java/CVS/Repository
new file mode 100644
index 00000000..ef1519aa
--- /dev/null
+++ b/gnu/testlet/gnu/java/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java
diff --git a/gnu/testlet/gnu/java/CVS/Root b/gnu/testlet/gnu/java/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/CVS/Entries b/gnu/testlet/gnu/java/security/CVS/Entries
new file mode 100644
index 00000000..7e470452
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/CVS/Entries
@@ -0,0 +1,2 @@
+/TestOfPR28678.java/1.2/Sat Aug 12 22:54:59 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/CVS/Entries.Log b/gnu/testlet/gnu/java/security/CVS/Entries.Log
new file mode 100644
index 00000000..008250ff
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/hash////
+A D/jce////
+A D/key////
+A D/sig////
+A D/util////
diff --git a/gnu/testlet/gnu/java/security/CVS/Repository b/gnu/testlet/gnu/java/security/CVS/Repository
new file mode 100644
index 00000000..113ec8cd
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security
diff --git a/gnu/testlet/gnu/java/security/CVS/Root b/gnu/testlet/gnu/java/security/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/TestOfPR28678.java b/gnu/testlet/gnu/java/security/TestOfPR28678.java
new file mode 100644
index 00000000..e66b2c10
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/TestOfPR28678.java
@@ -0,0 +1,798 @@
+/* TestOfPR28678.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security;
+
+import gnu.javax.security.auth.callback.ConsoleCallbackHandler;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.AlgorithmParameterGenerator;
+import java.security.AlgorithmParameters;
+import java.security.KeyFactory;
+import java.security.KeyPairGenerator;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.security.Signature;
+import java.security.cert.CertPathBuilder;
+import java.security.cert.CertPathValidator;
+import java.security.cert.CertStore;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+
+import javax.crypto.Cipher;
+import javax.crypto.ExemptionMechanism;
+import javax.crypto.KeyAgreement;
+import javax.crypto.KeyGenerator;
+import javax.crypto.Mac;
+import javax.crypto.SecretKeyFactory;
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+
+/**
+ * Regression test for PR Classpath/28678.
+ */
+public class TestOfPR28678
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR28678");
+ try
+ {
+ Provider p1 = new FakeProvider("P1");
+ Security.addProvider(p1);
+ Provider p2 = new FakeProvider("P2");
+ Security.addProvider(p2);
+ Provider p3 = new FakeProvider("P3");
+ Security.addProvider(p3);
+ Provider p4 = new FakeProvider("P4");
+ Security.addProvider(p4);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPR28678: " + x);
+ }
+
+ try
+ {
+ testCallbackHandler(harness);
+ testCipher(harness);
+ testExemptionMechanism(harness);
+ testKeyAgreement(harness);
+ testKeyGenerator(harness);
+ testMac(harness);
+ testSecretKeyFactory(harness);
+ testKeyManagerFactory(harness);
+ testSSLContext(harness);
+ testTrustManagerFactory(harness);
+ testAlgorithmParameterGenerator(harness);
+ testAlgorithmParameters(harness);
+ testKeyFactory(harness);
+ testKeyPairGenerator(harness);
+ testKeyStore(harness);
+ testMessageDigest(harness);
+ testSecureRandom(harness);
+ testSignature(harness);
+ testCertificateFactory(harness);
+ testCertPathBuilder(harness);
+ testCertPathValidator(harness);
+ testCertStore(harness);
+ }
+ finally
+ {
+ Security.removeProvider("P1");
+ Security.removeProvider("P2");
+ Security.removeProvider("P3");
+ Security.removeProvider("P4");
+ }
+ }
+
+ private void testCallbackHandler(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate CallbackHandler algorithm from designated provider";
+ try
+ {
+ ConsoleCallbackHandler.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate CallbackHandler algorithm from any provider";
+ try
+ {
+ ConsoleCallbackHandler.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testCipher(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate Cipher algorithm from designated provider";
+ try
+ {
+ Cipher.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate Cipher algorithm from any provider";
+ try
+ {
+ Cipher.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testExemptionMechanism(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate ExemptionMechanism algorithm from designated provider";
+ try
+ {
+ ExemptionMechanism.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate ExemptionMechanism algorithm from any provider";
+ try
+ {
+ ExemptionMechanism.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyAgreement(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyAgreement algorithm from designated provider";
+ try
+ {
+ KeyAgreement.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyAgreement algorithm from any provider";
+ try
+ {
+ KeyAgreement.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyGenerator(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyGenerator algorithm from designated provider";
+ try
+ {
+ KeyGenerator.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyGenerator algorithm from any provider";
+ try
+ {
+ KeyGenerator.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testMac(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate Mac algorithm from designated provider";
+ try
+ {
+ Mac.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate Mac algorithm from any provider";
+ try
+ {
+ Mac.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testSecretKeyFactory(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate SecretKeyFactory algorithm from designated provider";
+ try
+ {
+ SecretKeyFactory.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate SecretKeyFactory algorithm from any provider";
+ try
+ {
+ SecretKeyFactory.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyManagerFactory(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyManagerFactory algorithm from designated provider";
+ try
+ {
+ KeyManagerFactory.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyManagerFactory algorithm from any provider";
+ try
+ {
+ KeyManagerFactory.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testSSLContext(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate SSLContext algorithm from designated provider";
+ try
+ {
+ SSLContext.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate SSLContext algorithm from any provider";
+ try
+ {
+ SSLContext.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testTrustManagerFactory(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate TrustManagerFactory algorithm from designated provider";
+ try
+ {
+ TrustManagerFactory.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate TrustManagerFactory algorithm from any provider";
+ try
+ {
+ TrustManagerFactory.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testAlgorithmParameterGenerator(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate AlgorithmParameterGenerator algorithm from designated provider";
+ try
+ {
+ AlgorithmParameterGenerator.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate AlgorithmParameterGenerator algorithm from any provider";
+ try
+ {
+ AlgorithmParameterGenerator.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testAlgorithmParameters(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate AlgorithmParameters algorithm from designated provider";
+ try
+ {
+ AlgorithmParameters.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate AlgorithmParameters algorithm from any provider";
+ try
+ {
+ AlgorithmParameters.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyFactory(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyFactory algorithm from designated provider";
+ try
+ {
+ KeyFactory.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyFactory algorithm from any provider";
+ try
+ {
+ KeyFactory.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyPairGenerator(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyPairGenerator algorithm from designated provider";
+ try
+ {
+ KeyPairGenerator.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyPairGenerator algorithm from any provider";
+ try
+ {
+ KeyPairGenerator.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testKeyStore(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate KeyStore algorithm from designated provider";
+ try
+ {
+ KeyStore.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkKeyStoreException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate KeyStore algorithm from any provider";
+ try
+ {
+ KeyStore.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkKeyStoreException(harness, x);
+ }
+ }
+
+ private void testMessageDigest(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate MessageDigest algorithm from designated provider";
+ try
+ {
+ MessageDigest.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate MessageDigest algorithm from any provider";
+ try
+ {
+ MessageDigest.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testSecureRandom(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate SecureRandom algorithm from designated provider";
+ try
+ {
+ SecureRandom.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate SecureRandom algorithm from any provider";
+ try
+ {
+ SecureRandom.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testSignature(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate Signature algorithm from designated provider";
+ try
+ {
+ Signature.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate Signature algorithm from any provider";
+ try
+ {
+ Signature.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testCertificateFactory(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate CertificateFactory algorithm from designated provider";
+ try
+ {
+ CertificateFactory.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkCertificateException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate CertificateFactory algorithm from any provider";
+ try
+ {
+ CertificateFactory.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkCertificateException(harness, x);
+ }
+ }
+
+ private void testCertPathBuilder(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate CertPathBuilder algorithm from designated provider";
+ try
+ {
+ CertPathBuilder.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate CertPathBuilder algorithm from any provider";
+ try
+ {
+ CertPathBuilder.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testCertPathValidator(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate CertPathValidator algorithm from designated provider";
+ try
+ {
+ CertPathValidator.getInstance("foo", "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate CertPathValidator algorithm from any provider";
+ try
+ {
+ CertPathValidator.getInstance("foo");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void testCertStore(TestHarness harness)
+ {
+ String msg;
+ msg = "MUST NOT be able to instantiate CertStore algorithm from designated provider";
+ try
+ {
+ CertStore.getInstance("foo", null, "P1");
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+
+ msg = "MUST NOT be able to instantiate CertStore algorithm from any provider";
+ try
+ {
+ CertStore.getInstance("foo", null);
+ harness.fail(msg);
+ }
+ catch (Exception x)
+ {
+ harness.check(true, msg);
+ checkClassNotFoundException(harness, x);
+ }
+ }
+
+ private void checkClassNotFoundException(TestHarness harness, Exception x)
+ {
+ Throwable t = x.getCause();
+ harness.check(t != null, "Exception MUST have a Cause");
+ harness.check(t instanceof ClassNotFoundException,
+ "Cause MUST be a ClassNotFoundException");
+ }
+
+ private void checkKeyStoreException(TestHarness harness, Exception x)
+ {
+ harness.check(x instanceof KeyStoreException, "MUST throw a KeyStoreException");
+ Throwable t = x.getCause();
+ harness.check(t != null, "Exception MUST have a Cause");
+ harness.check(t instanceof NoSuchAlgorithmException,
+ "Cause MUST be a NoSuchAlgorithmException");
+ t = t.getCause();
+ harness.check(t != null, "Exception MUST have a Cause");
+ harness.check(t instanceof ClassNotFoundException,
+ "Cause MUST be a ClassNotFoundException");
+ }
+
+ private void checkCertificateException(TestHarness harness, Exception x)
+ {
+ harness.check(x instanceof CertificateException, "MUST throw a CertificateException");
+ Throwable t = x.getCause();
+ harness.check(t != null, "Exception MUST have a Cause");
+ harness.check(t instanceof NoSuchAlgorithmException,
+ "Cause MUST be a NoSuchAlgorithmException");
+ t = t.getCause();
+ harness.check(t != null, "Exception MUST have a Cause");
+ harness.check(t instanceof ClassNotFoundException,
+ "Cause MUST be a ClassNotFoundException");
+ }
+
+ class FakeProvider extends Provider
+ {
+ protected FakeProvider(String providerName)
+ {
+ super(providerName, 1.0, "Mauve testing security provider");
+
+ put("CallbackHandler.foo", "a.b.c");
+ put("Cipher.foo", "a.b.c");
+ put("ExemptionMechanism.foo", "a.b.c");
+ put("KeyAgreement.foo", "a.b.c");
+ put("KeyGenerator.foo", "a.b.c");
+ put("Mac.foo", "a.b.c");
+ put("SecretKeyFactory.foo", "a.b.c");
+ put("KeyManagerFactory.foo", "a.b.c");
+ put("SSLContext.foo", "a.b.c");
+ put("TrustManagerFactory.foo", "a.b.c");
+ put("AlgorithmParameterGenerator.foo", "a.b.c");
+ put("AlgorithmParameters.foo", "a.b.c");
+ put("KeyFactory.foo", "a.b.c");
+ put("KeyPairGenerator.foo", "a.b.c");
+ put("KeyStore.foo", "a.b.c");
+ put("MessageDigest.foo", "a.b.c");
+ put("SecureRandom.foo", "a.b.c");
+ put("Signature.foo", "a.b.c");
+ put("CertificateFactory.foo", "a.b.c");
+ put("CertPathBuilder.foo", "a.b.c");
+ put("CertPathValidator.foo", "a.b.c");
+ put("CertStore.foo", "a.b.c");
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/hash/CVS/Entries b/gnu/testlet/gnu/java/security/hash/CVS/Entries
new file mode 100644
index 00000000..1ac59013
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/CVS/Entries
@@ -0,0 +1,14 @@
+/TestOfHashFactory.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfHaval.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfMD2.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfMD4.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfMD5.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfRipeMD128.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfRipeMD160.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSha160.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSha256.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSha384.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSha512.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfTiger.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfWhirlpool.java/1.2/Fri Apr 7 23:23:07 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/hash/CVS/Repository b/gnu/testlet/gnu/java/security/hash/CVS/Repository
new file mode 100644
index 00000000..50cc0f12
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/hash
diff --git a/gnu/testlet/gnu/java/security/hash/CVS/Root b/gnu/testlet/gnu/java/security/hash/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfHashFactory.java b/gnu/testlet/gnu/java/security/hash/TestOfHashFactory.java
new file mode 100644
index 00000000..873b9032
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfHashFactory.java
@@ -0,0 +1,59 @@
+/* TestOfHashFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.HashFactory;
+import gnu.java.security.hash.IMessageDigest;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the HashFactory implementation.
+ */
+public class TestOfHashFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHashFactory");
+ String hash;
+ IMessageDigest algorithm;
+ for (Iterator it = HashFactory.getNames().iterator(); it.hasNext();)
+ {
+ hash = (String) it.next();
+ try
+ {
+ algorithm = HashFactory.getInstance(hash);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(hash) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHashFactory.getInstance("
+ + String.valueOf(hash) + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfHaval.java b/gnu/testlet/gnu/java/security/hash/TestOfHaval.java
new file mode 100644
index 00000000..07f53fdb
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfHaval.java
@@ -0,0 +1,183 @@
+/* TestOfHaval.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.Haval;
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.util.Util;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Conformance tests for the HAVAL (version 1.1) hash.
+ *
+ * <p>Certification data for this version is as follows:</p>
+ *
+ * <pre>
+ * HAVAL (V.1) CERTIFICATION DATA
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ *
+ * PASS=3, FPTLEN=128:
+ * HAVAL("") = C68F39913F901F3DDF44C707357A7D70
+ *
+ * PASS=3, FPTLEN=160:
+ * HAVAL("a") = 4DA08F514A7275DBC4CECE4A347385983983A830
+ *
+ * PASS=4, FPTLEN=192:
+ * HAVAL("HAVAL") = 0C1396D7772689C46773F3DAACA4EFA982ADBFB2F1467EEA
+ *
+ * PASS=4, FPTLEN=224:
+ * HAVAL("0123456789") = BEBD7816F09BAEECF8903B1B9BC672D9FA428E462BA699F814841529
+ *
+ * PASS=5, FPTLEN=256:
+ * HAVAL("abcdefghijklmnopqrstuvwxyz")
+ * = C9C7D8AFA159FD9E965CB83FF5EE6F58AEDA352C0EFF005548153A61551C38EE
+ * HAVAL("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
+ * = B45CB6E62F2B1320E4F8F1B0B273D45ADD47C321FD23999DCF403AC37636D963
+ * </pre>
+ */
+public class TestOfHaval implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ byte[] md;
+
+ String exp;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHaval");
+ try
+ {
+ algorithm = new Haval(); // 128-bit, 3-round
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_128_BIT, Haval.HAVAL_3_ROUND);
+ algorithm.update("".getBytes(), 0, 0);
+ md = algorithm.digest();
+ exp = "C68F39913F901F3DDF44C707357A7D70";
+ harness.check(exp.equals(Util.toString(md)), "testEmptyString");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testEmptyString");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_160_BIT, Haval.HAVAL_3_ROUND);
+ algorithm.update("a".getBytes(), 0, 1);
+ md = algorithm.digest();
+ exp = "4DA08F514A7275DBC4CECE4A347385983983A830";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testA");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_192_BIT, Haval.HAVAL_4_ROUND);
+ algorithm.update("HAVAL".getBytes(), 0, 5);
+ md = algorithm.digest();
+ exp = "0C1396D7772689C46773F3DAACA4EFA982ADBFB2F1467EEA";
+ harness.check(exp.equals(Util.toString(md)), "testHAVAL");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testHAVAL");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_224_BIT, Haval.HAVAL_4_ROUND);
+ algorithm.update("0123456789".getBytes(), 0, 10);
+ md = algorithm.digest();
+ exp = "BEBD7816F09BAEECF8903B1B9BC672D9FA428E462BA699F814841529";
+ harness.check(exp.equals(Util.toString(md)), "testDecimalDigits");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testDecimalDigits");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_256_BIT, Haval.HAVAL_5_ROUND);
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ md = algorithm.digest();
+ exp = "C9C7D8AFA159FD9E965CB83FF5EE6F58AEDA352C0EFF005548153A61551C38EE";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_256_BIT, Haval.HAVAL_5_ROUND);
+ algorithm.update(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".getBytes(), 0, 62);
+ md = algorithm.digest();
+ exp = "B45CB6E62F2B1320E4F8F1B0B273D45ADD47C321FD23999DCF403AC37636D963";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm = new Haval(Haval.HAVAL_192_BIT, Haval.HAVAL_4_ROUND);
+ algorithm.update("HA".getBytes(), 0, 2);
+ clone = (IMessageDigest) algorithm.clone();
+ clone.update("VAL".getBytes(), 0, 3);
+ md = clone.digest();
+ exp = "0C1396D7772689C46773F3DAACA4EFA982ADBFB2F1467EEA";
+ harness.check(exp.equals(Util.toString(md)), "testCloning");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHaval.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfMD2.java b/gnu/testlet/gnu/java/security/hash/TestOfMD2.java
new file mode 100644
index 00000000..2e8c4065
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfMD2.java
@@ -0,0 +1,163 @@
+/* TestOfMD2.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.MD2;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the MD2 implementation.
+ */
+public class TestOfMD2 implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfMD2");
+ try
+ {
+ algorithm = new MD2();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.selfTest");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "32EC01EC4A6DAC72C0AB96FB34C0B5D1";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testA");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "DA853B0D3F88D99B30283A69E6DED6BB";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testABC");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "AB4F496BFB2A530B219FF33031FE06B0";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "4E8DDFF3650292AB5A4108C3AA47940B";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ .getBytes(),
+ 0, 62);
+ byte[] md = algorithm.digest();
+ String exp = "DA33DEF2A42DF13975352846C30338CD";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update(
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ .getBytes(),
+ 0, 80);
+ byte[] md = algorithm.digest();
+ String exp = "D5976F79D83D3A0DC9806C3C66F3EFD8";
+ harness.check(exp.equals(Util.toString(md)), "testEightyNumerics");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testEightyNumerics");
+ }
+
+ try
+ {
+ algorithm = new MD2();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "32EC01EC4A6DAC72C0AB96FB34C0B5D1";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "DA853B0D3F88D99B30283A69E6DED6BB";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD2.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfMD4.java b/gnu/testlet/gnu/java/security/hash/TestOfMD4.java
new file mode 100644
index 00000000..921200ec
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfMD4.java
@@ -0,0 +1,163 @@
+/* TestOfMD4.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.MD4;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the MD4 implementation.
+ */
+public class TestOfMD4 implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfMD4");
+ try
+ {
+ algorithm = new MD4();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.selfTest");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "BDE52CB31DE33E46245E05FBDBD6FB24";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testA");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "A448017AAF21D8525FC10AE87AA6729D";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testABC");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "D9130A8164549FE818874806E1C7014B";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "D79E1C308AA5BBCDEEA8ED63DF412DA9";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ .getBytes(),
+ 0, 62);
+ byte[] md = algorithm.digest();
+ String exp = "043F8582F241DB351CE627E153E7F0E4";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update(
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ .getBytes(),
+ 0, 80);
+ byte[] md = algorithm.digest();
+ String exp = "E33B4DDC9C38F2199C3E7B164FCC0536";
+ harness.check(exp.equals(Util.toString(md)), "testEightyNumerics");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testEightyNumerics");
+ }
+
+ try
+ {
+ algorithm = new MD4();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "BDE52CB31DE33E46245E05FBDBD6FB24";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "A448017AAF21D8525FC10AE87AA6729D";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD4.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfMD5.java b/gnu/testlet/gnu/java/security/hash/TestOfMD5.java
new file mode 100644
index 00000000..ace03007
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfMD5.java
@@ -0,0 +1,163 @@
+/* TestOfMD5.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.MD5;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the MD5 implementation.
+ */
+public class TestOfMD5 implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfMD5");
+ try
+ {
+ algorithm = new MD5();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.selfTest");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "0CC175B9C0F1B6A831C399E269772661";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testA");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "900150983CD24FB0D6963F7D28E17F72";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testABC");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "F96B697D7CB7938D525A2F31AAF161D0";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "C3FCD3D76192E4007DFB496CCA67E13B";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ .getBytes(),
+ 0, 62);
+ byte[] md = algorithm.digest();
+ String exp = "D174AB98D277D9F5A5611C2C9F419D9F";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update(
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ .getBytes(),
+ 0, 80);
+ byte[] md = algorithm.digest();
+ String exp = "57EDF4A22BE3C955AC49DA2E2107B67A";
+ harness.check(exp.equals(Util.toString(md)), "testEightyNumerics");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testEightyNumerics");
+ }
+
+ try
+ {
+ algorithm = new MD5();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "0CC175B9C0F1B6A831C399E269772661";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "900150983CD24FB0D6963F7D28E17F72";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMD5.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfRipeMD128.java b/gnu/testlet/gnu/java/security/hash/TestOfRipeMD128.java
new file mode 100644
index 00000000..a7548496
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfRipeMD128.java
@@ -0,0 +1,129 @@
+/* TestOfRipeMD128.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.RipeMD128;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the RipeMD128 implementation.
+ */
+public class TestOfRipeMD128 implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRipeMD128");
+ try
+ {
+ algorithm = new RipeMD128();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.selfTest");
+ }
+
+ try
+ {
+ algorithm = new RipeMD128();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "86BE7AFA339D0FC7CFC785E72F578D33";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.testA");
+ }
+
+ try
+ {
+ algorithm = new RipeMD128();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "C14A12199C66E4BA84636B0F69144C77";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.testABC");
+ }
+
+ try
+ {
+ algorithm = new RipeMD128();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "9E327B3D6E523062AFC1132D7DF9D1B8";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new RipeMD128();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "FD2AA607F71DC8F510714922B371834E";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new RipeMD128();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "86BE7AFA339D0FC7CFC785E72F578D33";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "C14A12199C66E4BA84636B0F69144C77";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD128.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfRipeMD160.java b/gnu/testlet/gnu/java/security/hash/TestOfRipeMD160.java
new file mode 100644
index 00000000..0feb620e
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfRipeMD160.java
@@ -0,0 +1,129 @@
+/* TestOfRipeMD160.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.RipeMD160;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the RipeMD160 implementation.
+ */
+public class TestOfRipeMD160 implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRipeMD160");
+ try
+ {
+ algorithm = new RipeMD160();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.selfTest");
+ }
+
+ try
+ {
+ algorithm = new RipeMD160();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "0BDC9D2D256B3EE9DAAE347BE6F4DC835A467FFE";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.testA");
+ }
+
+ try
+ {
+ algorithm = new RipeMD160();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.testABC");
+ }
+
+ try
+ {
+ algorithm = new RipeMD160();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "5D0689EF49D2FAE572B881B123A85FFA21595F36";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new RipeMD160();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "F71C27109C692C1B56BBDCEB5B9D2865B3708DBC";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new RipeMD160();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "0BDC9D2D256B3EE9DAAE347BE6F4DC835A467FFE";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "8EB208F7E05D987A9B044A8E98C6B087F15A0BFC";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRipeMD160.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfSha160.java b/gnu/testlet/gnu/java/security/hash/TestOfSha160.java
new file mode 100644
index 00000000..fa7aabbd
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfSha160.java
@@ -0,0 +1,69 @@
+/* TestOfSha160.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Sha160;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the SHA-1 implementation.
+ */
+public class TestOfSha160 implements Testlet
+{
+ private IMessageDigest algorithm;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSha160");
+ try
+ {
+ algorithm = new Sha160();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha160.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Sha160();
+ algorithm.update(
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".getBytes(),
+ 0, 56);
+ byte[] md = algorithm.digest();
+ String exp = "84983E441C3BD26EBAAE4AA1F95129E5E54670F1";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha160.testAlphabet");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfSha256.java b/gnu/testlet/gnu/java/security/hash/TestOfSha256.java
new file mode 100644
index 00000000..062329ca
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfSha256.java
@@ -0,0 +1,70 @@
+/* TestOfSha256.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Sha256;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the SHA-2-1 implementation.
+ */
+public class TestOfSha256 implements Testlet
+{
+ private IMessageDigest algorithm;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSha256");
+ try
+ {
+ algorithm = new Sha256();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha256.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Sha256();
+ algorithm.update(
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".getBytes(),
+ 0, 56);
+ byte[] md = algorithm.digest();
+ String exp =
+ "248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha256.testAlphabet");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfSha384.java b/gnu/testlet/gnu/java/security/hash/TestOfSha384.java
new file mode 100644
index 00000000..c45af069
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfSha384.java
@@ -0,0 +1,71 @@
+/* TestOfSha384.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Sha384;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the SHA-2-2 implementation.
+ */
+public class TestOfSha384 implements Testlet
+{
+ private IMessageDigest algorithm;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSha384");
+ try
+ {
+ algorithm = new Sha384();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha384.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Sha384();
+ algorithm.update(
+ ("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno"
+ + "ijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu").getBytes(),
+ 0, 112);
+ byte[] md = algorithm.digest();
+ String exp = "09330C33F71147E83D192FC782CD1B4753111B173B3B05D22FA08086E3B0F712"
+ + "FCC7C71A557E2DB966C3E9FA91746039";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha384.testAlphabet");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfSha512.java b/gnu/testlet/gnu/java/security/hash/TestOfSha512.java
new file mode 100644
index 00000000..790b161d
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfSha512.java
@@ -0,0 +1,72 @@
+/* TestOfSha512.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Sha512;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the SHA-2-3 implementation.
+ */
+public class TestOfSha512 implements Testlet
+{
+ private IMessageDigest algorithm;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSha512");
+ try
+ {
+ algorithm = new Sha512();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha512.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Sha512();
+ algorithm.update(
+ ("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno"
+ + "ijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu").getBytes(),
+ 0, 112);
+ byte[] md = algorithm.digest();
+ String exp =
+ "8E959B75DAE313DA8CF4F72814FC143F8F7779C6EB9F7FA17299AEADB6889018"
+ + "501D289E4900F7E4331B99DEC4B5433AC7D329EEB6DD26545E96E55B874BE909";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSha512.testAlphabet");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfTiger.java b/gnu/testlet/gnu/java/security/hash/TestOfTiger.java
new file mode 100644
index 00000000..a4acf774
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfTiger.java
@@ -0,0 +1,891 @@
+/* TestOfTiger.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Tiger;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the Tiger implementation.
+ */
+public class TestOfTiger implements Testlet
+{
+ private IMessageDigest algorithm, clone;
+
+ /** Test of variable-length nil strings (0000... etc) */
+ private static final String[] ZERO_BITS_ANSWERS = {
+ "5D9ED00A030E638BDB753A6A24FB900E5A63B8E73E6C25B6",
+ "AABBCCA084ACECD0511D1F6232A17BFAEFA441B2982E5548",
+ "7F7A8CE9580077EB6FD53BE8BB3E70650E2FDD8DBB44F5C7",
+ "605D1B8C132BF5D16F1A8BC2451733F7F0FF57FD5F49E298",
+ "7F3A0954A5C374566C72370D1D97C2AC8FA9B1E3CB216E31",
+ "B333735AFDAB30B4B597CCD137AC1AD2B30D4A047BAD0127",
+ "1F27BB5926F35CF5D52A24817BF56CD17D79BB65ABE85785",
+ "5229DC51A494B913F8E04C4C729C93CB8B260CA4EE8EA9D7",
+ "5DFE02959A64534E0E679937B712F7DDE2C7B982597D315D",
+ "654D00C774FBE74CFE4C0A6DEA5917823A6B20070CD0CCCB",
+ "C82A6419844FC7028B52CAC8186D63B85121AAACBA622A87",
+ "06F6D65EF081AFE892AC0946F275DBAB9D3B6D9C55E517C9",
+ "42C40537A876D69DF84FF36FBA3127901B112B9E96688012",
+ "6FA00EB82505EBC4707F675B0A72A9F9795F647B550F155D",
+ "239549439CCE539F304CB7A95160A033529B228CA406EFF9",
+ "464B87921CCDAEDBC0D6941610D1EB19E536036096403F32",
+ "F29CF9B53DA4F9955E7BB766EDBAD59EA914E5354DDF9ACF",
+ "E9B6BAA124BA93A4501DB9A92F212A14C538CF82C17E89B4",
+ "03EB6D4703EFCF2E088515D3B902A1CF78711B7E7CE3AF74",
+ "53BFCB1EB5CA9B2E8A4225E6C00584023FF8AA0017AD3A0D",
+ "67F6D2B74B13251432469B9CE6A7C91EAD6E72B9CB51CEF8",
+ "81A68B237DDC60C9C31B34B52A754A8A7B1F51D40781B988",
+ "E99E18449AEB4421CEC31D1521C23445BC2598EA5DA14A09",
+ "CDDDCACFEA7B70B485655BA3DC3F60DEE4F6B8F861069E33",
+ "424CDDE2E5478A29A71352AAE538EAFE9F1B6F07AE05137B",
+ "996B4DD292782A19D742B534916870023F32E72F1C197625",
+ "2C4B719E5E0BFBBA616FB8AB35470D84B676C7D3A6395262",
+ "F178E06FC3319BA18F2EAC3DCC5240D06BAC062BCD5CA1CE",
+ "E899374C34AED37FBC9E0E4A0D37A13045639D5CAF24095A",
+ "3D8E74F26682750FEEDE30A305C9CA162C6BDD9B790BCC5D",
+ "3EFCD915BB46020B8999C9AD56356FB91F93C4907C4012D5",
+ "739414BD4CD6AB967CD46A1D943412757D858B24D1C4ECF7",
+ "3615FE2BB3B94A00245A1B3DF68B9D43BBAD82B16BFCD6A5",
+ "9E9AD6783D3775885E65D05EDA4262E179836ACBB9867CE2",
+ "5D91C8314556534FF3DEE0515334F09E16935538E347C029",
+ "E48325D26CBEA5C14AF5D2BC043242DE2A5DC17EF5798BA0",
+ "0DE25B928CF3E4FE85F46C18334D9C9DAE995E4889068C4E",
+ "1BD4360038C1282E66538B156E9F604AA0262D4608184A5C",
+ "FCC72686AD012FF48D1471CD0EAD606EC21A5E496DB66103",
+ "F11D39950658DBDF786703E3EDAAA3A654B4428AD419DF11",
+ "2AFACE18DA68984D907D1C0F647E9244D6976F4F471064B9",
+ "E2056969720C08B5C9C8F903416668A7F5B2D6F95046C5FF",
+ "D95BC879A68D549A5296BD34344C5ACC4D826E54ECEC346C",
+ "D33A7246729743643BF4B438FBB9BC2374F9E346A0868DC6",
+ "1201A8247225F31B928390B35787C046653249D0441F0AAD",
+ "1E63B6124EF57A92B36C8FF837C38CC9072048ED98EE853F",
+ "F2E4B6637FDFF18F785894EECEA514E7B96B2409E62DF3FB",
+ "10DD94B66BA6AE0498C9C7754844662E5D8B62E27D2C4D26",
+ "8BD37E3CF05E59537389672DF921392A45CB57ACFE9247A1",
+ "41621DF28B038C0032508592F986C7C4832927CD1134B2B4",
+ "978365EDBC762C10187F212BF9115D79FCBD489EC135AC9A",
+ "8C4A9C341016B2D74E1DC75478A20A57EC934C38E6D60DF3",
+ "FD5A1DDED7D38B987B582FD91E95FF8ED84DDF5D486A00EB",
+ "F5845CBBA386319361D4042658606947FB96D72934378AA3",
+ "A4EE394B2A208E9B0A74C6D57568E470F6E658C44689FC63",
+ "19208AEF976EEA1A1296AB46BB8519E4E35CC3D26D2B574F",
+ "A0D74C6090806AE1B4A9A676950B940DC37D28F762AF66DC",
+ "DA1DCA0F6E414B6634ECF34DE132F3320BE35AC8D6AB0BBB",
+ "49D948E0A5149A7B41F73C30B62FEEDBABA7DD9FFA9DB383",
+ "95475FE7F5016A6FBB175EBF3B13EFE41FCFE9249586BB2A",
+ "8AEEF6FEB5BF02F8ACC6430FEC5CC7858EEDF9C1DBBE8F09",
+ "0E425380B928052574D82A3F604162F3021361517560271F",
+ "A857DD168B22B65A6DD2EA8035C4EDC4B890453D14BA6052",
+ "33FF9966DDD692427A9BC4D611F3C74CF629A0544A1A7ED7",
+ "759D79778FA748F8E828A568C45B7E2774A6052E0A4A06A7",
+ "93E4986EC1BAE0334662495E3261769214DFAB96C6567A12",
+ "D50D44D48A7519B21C7ACF59DCD56066C7C328F680F2FB7C",
+ "6C240CDCC41A5DB56F7A88E25A04A2F3D10D33B6908D0F4C",
+ "D8581CF122C23E06A9A8781E6635113F76CBF21ECC520BE7",
+ "1E763325671BEE3E17FD894D7A4E1405315004563BFAA368",
+ "57B581CBF0EF91E38F4A306FFB3791A0BE6E1FA96BDE0703",
+ "0870537F7FD0A5F600E2B02B31878C2244F2E76C8D0AB421",
+ "6F1D28AA4EEF347CAE41FABBC528AE71345BAC83D6572BAF",
+ "704CE7D9895218DAABAF9BDF944F7901571D0C24873984BF",
+ "1574D6AD7CABC7DFAEE1520289E0ED8B26DC6195C5F588BD",
+ "257196F102E891E04ACD046CF099A2191ACE7F878B1C5CE2",
+ "359F480A3475F89093F33289C3EDD28867C0E0F11AF79939",
+ "8CA6EF62DD4E1445C729E3FAFF0B57DF5ADA90D714B906F6",
+ "D917B8C5CF18FBD88482F6754EFC9D308EBCAB912A609D5E",
+ "B3950A9D299A5A732CC0841F1EFAE62F3DB20A707B98F3F5",
+ "4112B496A4BA7C67F040A48A30C3F48496FDD3AD2A4A9E6B",
+ "D663C288232D8512986F0C2F37F20A764AFABF068F44CE62",
+ "4B0292082184E5727B98ABCFD57197EE14AB5893E2CDD370",
+ "9EAF05D45A302F909E6850E28AF8A88E51799E20EF75D0E3",
+ "AB8FBE9C09E9906200201F3AFCEF79AFF29267BA19C63A82",
+ "DB76DF9A0D2E9D21B57EC44C99653F59348981467EC2476D",
+ "0C2CCBAEB70C5C1F85FAFA01B1719F363D902716810F582E",
+ "FCED365E31C7E4F3B06CB6720875A33E1AC45D047D071342",
+ "2FEDFD926783A5C91D51BCC3228F2846243B95E5D858AF07",
+ "C1789746C0E04E42F2CEAA374FBCEDCFCB17AFB816D3D9B5",
+ "C055A3A9EF84BD96AEBAE31C08B74BA22BD2489C70D25672",
+ "AE1AEECA1373D4348E4EDC2B7F393A8F44A351AA952AD7F7",
+ "60CA04458514989969B5D3A1537F226CB54E3FCE9CC9B134",
+ "20E29A4A4C36D7C2BADE368564765EE0353709CE47D0E36A",
+ "8CE7840450B26DE74B798056D30584DCC436AD79B061729D",
+ "05D2A28308C44536C591DF21B02AB542AF982B81A4C5E129",
+ "196ACD3484E2F5FD51AC0CC667596AB0E764936C37A345B7",
+ "C4F29A86A5415A0086FEC47CB3D46A71E8D224880657789A",
+ "C5AD956C7D06EC8651665176733FB2EF0D01BE7E81E0F775",
+ "A5A54E12A9538A158E78AE09896DCB2CE31F14150625E615",
+ "239045220EF064D13637D503A6079EF21B5F2D02CF98FA5A",
+ "AAEA04D2B11931D58016A9B68B3FF543C7BFD87823EA6ABA",
+ "37838610BB3944FB3DFBB14B95A4007705B3773148E58AC3",
+ "3DE1ECB5FEC022C7CF8B4CF4AFFEE41D85648EAEF6B0F5A7",
+ "40224B9C7ECBBB69D1A5E0A3A0F249315AE1E7DE859FD763",
+ "7EF8F229B824EA82F8E8834E799A67A0B946086BD9AA582B",
+ "2543ECA4058C02EFE62E2131E9A7627D6DCAA6C51A13A517",
+ "51E2B3A3D56D88BDB4F77CEAC0D146B08C269EB50D7914D4",
+ "9A3A264F48D2BC4B08671B0D6EE58B4E0E87D19CFC561738",
+ "F8F8F7095F7FF1111811FB2B63F431B529CA740EFA9A3350",
+ "E0BF4F81FB633EBF0092E6AD4EC8B6834A85DF4F639F94D0",
+ "114BD7F8FCA026BA9874DD79174EA1FB7275B8C7F2042871",
+ "BDE5124EBA58CD1929DD63E9A4A987296D93E78378BA7E21",
+ "FAA1FA47DEDC888043BC35BD97288C3E3E8702E3790A5ED4",
+ "4D0016CD63CCB3C917A9CAC0A656ABF1BF1F79A42D9FB4E5",
+ "1D9C9AA4BD15F3B6DDDE9771259AA550F17CE01383DFC3E7",
+ "D70BCAA1810D6213A77935D751F52C8743C809C37DCB02CE",
+ "9759AE86B5CC71DB9406A2ABDD0537940D717E2953E4573F",
+ "A6452EF736D5CFF79BC3C3DBAA7FC7B4B992AE7DBD87650B",
+ "FB7177FFE0E718C91348A8302C57129596149F042FCC99A6",
+ "A6FABD413D9FAF90AC0A8D97F82B1D28761D9B3A7A3A2E2C",
+ "93E56AE559EC7BF41251B6C84700465BF78E0757576679B3",
+ "24F342F67741BFD5CCA5E9C5C0D902CB6F93DF12203E891A",
+ "BE7803AE8A8C84B7567352C2E3A78BE424784406D33F6930",
+ "43A59ECAB48D3784CD83B0887E92D208A0E7CEC6DA3A7146",
+ "7D16DC5E00379CA0F13FA261AD5FDB56449ADF9DAD3810E1",
+ "00A569CCADB17662483CA36230BCC6956BA5C1D5595C044A" };
+
+ /** Tests for 512-bit strings with exactly one '1' bit. */
+ private static final String[] SINGLE_BIT_ANSWERS = {
+ "B99F2BEFF1E64861ECB3D91B04C9BA4BE6FC0FE7CE9653F3",
+ "FBDD470EE15111676B477532D293019EB182CE9EF17C0B59",
+ "D68BC840B64746A212810784CAB2BBDFCC49FDC743AFF5D4",
+ "D6B280F151C286E2B8A78B3C80F181E192BEEC0A339F0453",
+ "02FDBD79A641FDB807DD80699019BC97DA69D692104FBFCB",
+ "E30F39FBB7BB8C191E2CD9A970EC806EA64825E4CCE782D7",
+ "0521BC64D5C188320CB9AE9D2A89BE291352F77C3E44772B",
+ "60224F0B05145D00FB3C09E78522FE17FB7C64AC90AF4BE0",
+ "3104BE53E8A19ED90BB03DA1FC5FBD052EE7D80B4AB31AF2",
+ "ECE34E9D1BBA44EBAAF18254812DA74E1B250D874049471F",
+ "7FBEF692D8F3DB59912960E1C4F255D65CFA93E64CDA00B3",
+ "180C2B906440036CB48ED7DBD670CDD06054734CA9E3E531",
+ "EC1C85F1C4361CCC979FA94565CE47BA766B26C03E0155ED",
+ "0CB103FE2F16046BCF473C0EF5F30510094B327A811303AC",
+ "35E499F9FCCE1B0CFE442FE493333763C8E5F956A255DDBE",
+ "E8CFB0B7651DCF73891553FE1AD3DC0F1BF5CA89E2243771",
+ "9F375EFC406EDB4DC7008C6ADF57CE7BC6072BD39593651A",
+ "C40960EE520A3F6E38938C4D774695FAB9AA99ED98724686",
+ "C925142A228B90DC4EEE8D740480095B72EEF71717AF230D",
+ "49F67D2EE9E5E07754EB3FB587A5DFC9A5A5F1AF952ABB90",
+ "8EA4A53FB597B8612B751B25B4D67A3211BD9B55810830FB",
+ "7F8A9779678C20D7B26126CE54CF40D586D639038E0D898A",
+ "45B2D2247DF2BE8762F7C2BFB1D282DB99686B8C61F12DC2",
+ "5AF3F43A65A123F25318B108322F1422FBDD4E2088B3FCC5",
+ "255BA44E43BB186AC95A8BA873F27C17D4209A7CDA0743E8",
+ "6CC1C5FE50A6A3E1A8C9151E529627B7825E797CA2996763",
+ "4C8E2574514F1908500775D706E66CB5E098A07763CB29A8",
+ "80E15B5D7DD082786B73BFA7C11ABE846CC08992D82082EF",
+ "9AAEDC20A2B5C9B3AC1FEAB011E0BC63C3F14A77716745B4",
+ "20FDDFC28496F4B7C474D1DC0D2556B71A0BBE0008FBCA74",
+ "6C5437A6A7ACD3882300183FBE7B474CB7C0E45DF4BF126E",
+ "3220E4DE2B99FD792057CA379EC8E0FB9277B2B0AFCAF7E1",
+ "5605262344AED0F46F6AA94AAE288A936B3783D7B0C96EBB",
+ "79FE05ED00EA9FBE5C5A411B7BE9D0AB7E95FCAC4944FB5A",
+ "5632B77A86B06F60FB38F6F8D7B8ACB076610CDB17C45F3B",
+ "6F1C90B7CE7D352A1EAF908EAAEB69DE70CFEA924FA1F322",
+ "B0582D1882AC0B5C534293ABB751072EACFCBCCD7760B739",
+ "D56CC1F5522E00EF7F25DA7C524CFBEF639E04ED232FDA74",
+ "FDD3E72BD41951FF6CA729207F9EE320F277C240C5ABA6CE",
+ "25C341EFBF8E0197DD7AA0D098BE9C262EA24A5ABF1956DC",
+ "3D8E11219C1F4A655DE818DD5BAE94724292D1FC1F2C0451",
+ "78D0C2AEAAB13E6957111303BCE092987F38B125654AEB06",
+ "76CE1A38D5408FCF5C60F231F8624D22EBE4F3C2A77833CA",
+ "A1478F92ACD8AFBF1383F566E8074249C576C6C01573C816",
+ "EEF978C6730A5A51E0C67CA0CD591718F48E586924DACAC3",
+ "D244E12581769DF1260AD3B9BADFEAACAEC10F08D0BC20B8",
+ "6C88A229FF9769C257AE208427684E2BD2F2616FB11DC61E",
+ "F9AA7D877F5B192A751D6956225FBB166E70BB5373EA03B5",
+ "8E5FC1110E41E417B771F4860BD7180A8771EC8BE3F51371",
+ "16A04075744A70693EDC2823E6D3F53F8BD7DA82F61C988A",
+ "DAA5DCE2246AA0B16DFCB5A6DE1148A4667CF130CB0FE57A",
+ "7935C3EAC77062032E4DA41CFE266DB7B1CEAD6A92F36531",
+ "12FAFE2DD9FE0F928585DBFFDF2FC940329F4CA2C428FFA2",
+ "B5AF46B22173E04EC7C73D201D230E76AFF7E25E7C64C9A1",
+ "04A39346609CC870A34BFE4BC381391E5096EECC0420CBE0",
+ "8E30346B3CF6A33A5DF960349E79E318A559177A10132AE5",
+ "E010FE9A2A139AF552D7A22D5D04D59ABE9F26099565B139",
+ "7E3A17F0489C5D1CF249BDFD6D839D17797E5F91655061DF",
+ "DB0EDCB6F326FFC5EC6C23A9B23630110BCF3EF1623090C7",
+ "0E878D8D2984F9A638DFF1A309EA4B436D24FA40B3BC5F4D",
+ "AE09F204A5E6EEA22BADD0042D00D48E60643343C951C79D",
+ "5411134E8112EBD21A89CA726D6C3293BAF1522031BFED57",
+ "1CC1D5B8489F213F6A0519811867CA70AAB68B93768B2EAB",
+ "A16D7299661CC6978AE949CF9F607E286913CA0615E12CEB",
+ "9A2A8EE8963BE88DF83D5761D490FFB0450E9C450542CB08",
+ "FAC9C5FB38BF7CE0902DC3E447D3D4D6DD369DBE94A8AB67",
+ "C430CAA3FD05B674624BB549B3A565C9F1A93D8E4AE429E0",
+ "D03C16013ACB204439B0B84C5EC0507C07EAD360114BB6D7",
+ "44F6F5EFA89F2302B9E4B6710EFA1BD79F2589575F57B7A0",
+ "C392AF0E93D619A0FAAC3FC2EE960DE9464DF3F3B87728D6",
+ "BF1C5CF1B59A39C9EFD3D46F9144E7E7CC75F53C83BE87AB",
+ "F4DEAFA84B6859F0B32D04DA3CF8DED931870EB8EBA086B6",
+ "68B3511E9A930CC1E465DDADD3813E79E5235690E279A53A",
+ "D98B1C76BF4216804783DD2A082F5722AE7049717AC6BEE4",
+ "8FE146611B75E5E6527F0E2516F09090FABE1AE0F51D9965",
+ "B6F4518C9B5A082BA4951EEFEE8991D2605395D04FFD9784",
+ "0C4C268E0243354A31C576B053FCECCD320D864892DD4452",
+ "4FCBCA86DAAD5EE31427339F45DB698C56F4EF5977C62346",
+ "D63400C91F46CEB1F73427A1DD61920E5D98250CD7B21D61",
+ "2002BE33AA6783F40109E747E27231C652FC90B304F91218",
+ "A8FEDBD8A393C41857EA09B457FDB42078049B3F269C1431",
+ "D2C06B7D56774863AB6F3A9F8FFD79FB56FF130906B16596",
+ "5D8339715D342E8DDCB7CF18F4878D2221BB05FC4B2563BD",
+ "06DEF00E4151BBFA011D87096B16C09A955B1059EBA03393",
+ "36386BE0645E7577BFF63BAAC50532912EBB7026B120E472",
+ "8E4CAC8FE8C09463A5726B0FD3335A09E8971B498CCFC14E",
+ "45EA2AE4AD4B1E0C6958FABC69939E1A19300E28946638E8",
+ "7C97246A7834ECF7074DCAD08A8B4BF3E8A68157889B97E4",
+ "0F040C8CB0C777EE04086DDEAC53751D037FC41A62DF3D64",
+ "011A9D0417A070DA0D425E835F03C68D0BD8762A7174C0A6",
+ "76B90E3049F98281369B0ACD1D2193EF2F63A25F75D9FEA1",
+ "733DBC18BB0821CD1B33210BD9018F2EAF405E0A281328B4",
+ "4C3B42FEA3DA2B23AE3C723B22522AECC84BB1D5CD2F9E51",
+ "77396616E87FDEEBDB6276B30422B04C2098F85F0085371D",
+ "6BD882666B2089F5A3904F91E26B34263BEF463456486ECA",
+ "1AA8BC49C40EEADA030EE802C336D83D75C3EEECDF365AB2",
+ "6E9615A0291AEB33D37FFF3BDDAF628178009820457F0737",
+ "F78CB6642756E3253A46FC55E5C852B5D209CB886F1953D4",
+ "3D900B55C9CD9E821512415B734B06A28B8EFB0488F9EB4E",
+ "1D534936BE6E2831E83661E0568B170EF52712899E2F8A8C",
+ "68D08DCA280F71F6E33FE81F56BF5D98BB498B720F8294F4",
+ "D4D1339C8797918AEB4000CE0B75EB741EEA852B7E5FEF35",
+ "F6204099D4C1B7F82BF0A1364A6322C3578A46F354A68622",
+ "FC94F4DFB37B4674843E0CD9DAFDE149D89667915DEFAEFA",
+ "F64C25ED176B388E022A3AA4622975F1CEC7A9A359D1D28A",
+ "CE3230D5A7B57E82F92D8A36485B0EF70B3A8430391907F8",
+ "D9AC7B94226A60FC7D99CD796FD5B6EA36AE798047E1B53D",
+ "8A9F12D8D9DF81E43E9DC038FBA927A3A0A0D6FA43749D2D",
+ "CCAE282196A07B02E896FDDBC71616298BBBC436BED3D424",
+ "09503A7A95B31206D16FC3A3A6730CB379F413C255B0916A",
+ "0D799B12AF89A92E0E91237F37236BA484B5192B468F92B4",
+ "04A3597758A82EE3EAA34F5B0FB1198A1177B3B3B8DD583C",
+ "BAC0B8BE5A41BB8186CABAD7A32F17559DB8579D2A32ED35",
+ "96B5AD3931A54DF4C0754FFD17E2ED27EEDBA480D7DEC700",
+ "4A3E600FE13F444B31E03CFA0863F9E316F83F68F16D509D",
+ "B5DA026AE3BFBFAC6D2AB00A16ECFBA40130E1817E26E6FD",
+ "635799A28E0E31EF6DA157BE71327548E1EBBE93D39A40CE",
+ "00A7C94AC7D6DA73AF3537816D7535F6501C81E9D0B70C30",
+ "CEA02CEB43D209ABA6217234278931ECB509813A516C8770",
+ "460F8608C1CE8A7ED701C8D46D800E5097DD421321A595BF",
+ "595B7A837EA74AE2A9C2A4DD9915C684E4003A78C908EB34",
+ "40A34377B74D9C7404E69898DA030F47C7B4F5125379799C",
+ "011A1626ACDE5490D40D6D3B212E4296DBCFAA310C0D0A7D",
+ "0C38A676E739B11BF2B5F305DFC38C1194B67D5BD9ABDD3B",
+ "B2BDB49CBB6A27D90DC43CAEF626531E3794B02A4B557363",
+ "925F73F9BF011425B3C855EB93FF2B3702994957C90A6E71",
+ "C5438E4F6F20FA52579EA70DBE976E8ED0CD0CA79F0FF667",
+ "9C19CE6E144C81EDBEFA42762CCE7687D82D90C80E6E4DD7",
+ "F6F514983734179B56A2DB5810D2FEF9FBAAE792DF757EE6",
+ "47EA4D78437E145E56490DD5C47788BEC899AB249A782AF1",
+ "751FCB36A8B567673E9571B4F359CB7452913DE68458233B",
+ "6B86FAA0426879F9C1A6F4A9F26FF19DADCD0BA2C34273F2",
+ "8ABD32BED2814C6428812B67CB7228BF02AC80EC80C5771C",
+ "026EE4B31888E474E20F1627B30475FFEE90BAFA2E214CE2",
+ "6EA00649517124D6598C2CBB109B8F8AC445771A9550263D",
+ "9029BD1306510D7BFCEF39B7E3E6F3A62993A810141919A4",
+ "802BE35C1D0356AA8D7E7830C1426AA9789CF9B1B75C7145",
+ "78D1FE031819E727172B1FB5A0EC87AC33C494C1E37C222E",
+ "E87A76683F7B6D8CA2B47C8C41F346764053D8841FBE610E",
+ "E3E18819D97CD24E6C82AF5212876375134D9401E1CFB25B",
+ "528D81D4D77B3C9360D1CCB3D8D906FAD4BAEEB8C417AF8E",
+ "940509DDE91065297F51C95D6D61196BCADDFFBFE43A0490",
+ "1F745AD4161EE006A4260D7249E0B68B0453B01819EB2A14",
+ "B1AA443FAA0B47E51A307ECAC7FAF07CA8732E715513C738",
+ "CB30A43A2DE29002ECE22BD0CA7FA5C40E0F1EE3C9784249",
+ "A5B6D8400303E5118489CE082241808027945C143D1200AC",
+ "FFB82281B7B2CDFF2E83440CFEC036D03C26BD5133AA56C8",
+ "08F21816D77A3D5F7DFFFC5477C4EB78AF660D7C32B1B6F0",
+ "286FC4EA0BA3EE25CA28CD635DA1077BA00B7BBE1D319C9C",
+ "ABD221DECE666C1E0ADE89ED127001B1AE8B37A3249BC237",
+ "EFD037EAD7168C5B48E18DBB0BFE94E7A7337ED9F9DC0B60",
+ "17A915BB90D878000A07BBF2F7C29605541CCBB2BA33BA9B",
+ "EDBA011909174DACC7276FB748DA3D72037688E09B471CDB",
+ "18646AB2DFAC64E3D1B8298F9DA48F8ACD3EC8E9B6C091D2",
+ "5BB55C940C48C5F173356ED2F76F135BB33C49C6FF401CE8",
+ "444CCFDECBBCAAC55FD538C84FECE4AD05E1F86CA2183046",
+ "0DD2986EBE58B62051C5F8558B33B2150E2162273A21D2D6",
+ "BBD0BE785D950FEE7272A6A42E20EEF9FCC96DA0862A9D4F",
+ "C6EE3736BED22F09A3082957D5D2D9939E926DE56B23E540",
+ "F272AA5CC30126CA15ACF94904EA44A28068BD3B3ED74BDB",
+ "24713F450026D6D9717475558F33A84CEC5B8EC74367A1F4",
+ "021A9ECFC35A18BC91568F76A06EA7B6F068B1B45E725F2C",
+ "54027E9B61191C3ADE350615D809EC6A4BF7FE926946F93B",
+ "27C362B26734609E760ED30E492273A2EC0786CECE1B62F7",
+ "C56A7C83A9F780DBFC564564D60B110894B3462BF202B31B",
+ "E46DAE97BF1D1433B91E7C4B30A3D11189BD1959F363C8AA",
+ "DFFFD3EE84CE33EDBD6CCBDF9FDBC4C6CD9F6C3663AB3124",
+ "CA9D313C0A9D62198C2528B856627BC9C70DD1C6523AA09D",
+ "DAB676CBA9ABC9799E4416E703CD4C89348F3513D93BCE58",
+ "383C379EE484CB248AF0008F339F2B76C25DB122ABE46C2B",
+ "466C5466009BFF5B4D9639CC2DDFFBEC31663189A11A3F06",
+ "5C2457FB54624D291D0223FDCA7CE3EAFB85B6D492408A9D",
+ "FE593DC31045C782EC6B52216FC64B35FD33EE3904BA9966",
+ "D7174534437E6168C2EF60B0EA9DC61ADD8098C0694539EF",
+ "75FDFFFAF4F1D44DD610CEDDB215E16593340EDE583C875A",
+ "36EAA91B577FB20178B0F06FBF369D07FBCE8445BB36774D",
+ "9068E188528160BC3B2C2036B4B6140BFCBC98A031847132",
+ "42E86596DB6EA0724CE131CC379F5A3F37646C87026DFB87",
+ "733642DD7D4F08A2303B7517974AC6D9E6EC65FBED56CB05",
+ "92ABCE48F750C364C5FC649E3E2168E5BE83F6176A2DC552",
+ "BB841126EBD38F36A63FDA47FD5971DFF6D9CF0432811535",
+ "1A5F8B7F34376121B1BA35FB19DD2DE6A1FFE55D22703940",
+ "A4705AA774708F6D6AEABD6B527C973DD3B955E144812BC5",
+ "ADA04C7993477041403A144C15BBFEE889A6F835B9F968DF",
+ "2F4179071804EC9280CD2EA6E265AD77633F5196CF8EDB32",
+ "4378BD6082B465ADB4007CBDC5F764C402ADCBEE4347C08F",
+ "F75B2A3267B96CA1EE4191B99CE78B079333F10EF184D91A",
+ "C3891913D02202A3DFD2BFE70EDB992275744136452C566F",
+ "07B465A5110B6F1D8CC50B4716A5B5CE9985CD0A7A857EAE",
+ "AA3E818EDB7190F12AD58D9A4A9DAB53209AEE83F5B3C554",
+ "C570CAD73E05B2F8283A26726F07BAA339EE78ED7CA42F62",
+ "B48EC775851C9AE303F05AC8E51E62FF169C175792C2627A",
+ "1E3047A18CCBA9F21D1E58F90FC2F8100D94227E29DF84A0",
+ "5CA88D9C7D388BCF7877FE0F8CDD5EC767DEC73783B60195",
+ "F0AFF7784660E13949EEBC8A817DB227D7DC2248EB0F659B",
+ "9B5D9AB548CE2CB1B4F121B5BCACB724A02A655E56650014",
+ "DA5D70AC87DB9AB9A19D7E79FA3820B9A6855F148A662E9E",
+ "0DA0AA0A4187C2AC05B220AB88498FC244FCEF7FCC59692A",
+ "DEFC6E4E0FF252A652CAD76C06429D7D902F80D0C132EC2C",
+ "FB8EA1191F9272038017D3D10B0F901514490B119C3C086F",
+ "A0F433C8EF9F86EC52989CC77B999EA02827EA0D57F00766",
+ "73C51E27F033BDCF09E29C19740AC05676C7DA219C83F019",
+ "C1A41E1999A6E7ED8D2407005608A44999C0918F009F12BB",
+ "C1DE2FB59A6A6CC45D3E1A9A502F0327E4E0582692882E01",
+ "FA371922F657875B03268090C91EF8A7D968486EFCBE853D",
+ "D7786FFE8F9411E982D591C63A364483A733A005D8DD4F52",
+ "EA71A84A2AE43700E2D6CBF9705809F38EB01E3AA3500981",
+ "AEE84693BEA5105467DFFF30E694772F31148CCECA362D0B",
+ "02C9565A480DFE315479D62BFFFF915768411199596D0067",
+ "0EA5DA49521F8C298EB3A65B157D3B0E42E0BDA0EED10EB3",
+ "A8F8E5533E0025DDF4421EA099D9C553736B86626649BFAC",
+ "76D357BCB224F3B59DD6286A3EA0D4C2D09699E68ED7D4E3",
+ "202794850A8B2A8D611473C84F18835F322D32E04214502F",
+ "1BED2B5DAA818E27EACA9EA5BC6B5D88FF7605CBC529C423",
+ "6FCEF79BBB8B556D597071E6E86815575C36955DB95FF0C9",
+ "5C76AF9054B56A78EE4BAE2F69E54EB4A4DCCA9251EC323F",
+ "8645904A860B9227CC2EBE31269BCB033D12626D4E7B1E07",
+ "5CCAA2D96A4B90DD33CA1A8F63D9A32785FCE91FE9D261FE",
+ "644AEF13CA34442715AF3B71F6F40863B9FE5B68D9AEA69D",
+ "BB8F2FCECA6DBE2233D94CC9617C0C924251503E15ECBEFD",
+ "C0CE5B9858DCAC7C2A7FD41EAD46C1D1F4A55C612EB87095",
+ "C3209B535B1893D292F24AA705A54AC6893F5C34DFC0B89B",
+ "4A9362D913330BE01F8AA9A40621CF2BAE0AEE998182BFD8",
+ "6757B6725238FDF3AA6E92CE05242DC7A138F55A8A2B8CDF",
+ "9C1EFCC39E943DB17478F55C2E8F5AABE665A257A74E7CC7",
+ "9E48EA08AF2BC00367D950D2A0BE14D0F26B71FBF3997B10",
+ "A6BBD6177AF40DDDCCF8CC8B8218833B8A89D6BE122E12AA",
+ "F7BAE51827F6C16F31508A28D362DE9BA4984E47C88DC037",
+ "65DD7FF5BB8CE8D5F84480BF5A0E35127CD736A1CDE7BC12",
+ "E8531E2C7329ED60B7246E6246B1FEE13B1B70F1A119CE54",
+ "7B26F57EF6D56F8966AFB3AF6C9BCE1C1948396CE4FFB1F2",
+ "D6EFC3AD5E62E9055C414D01E11E0EC9374B5F4486AF92D9",
+ "B4000A22B7ECE2B3BC2695A2E98A9F4FC981DE2F44A80CA3",
+ "30F506642345E45D1116318D8F9849A640B13C27291F5B83",
+ "E02C8DBAAA96F301081E0F6F6FF3163D11B0340C5154E06D",
+ "4D176A285408CA3E69FAA2F90B980CD10BED31F3B7C31F15",
+ "8BBECF1AAD25FDC805039E0B0AE53C72B2D598400FAD8A0F",
+ "68213C2CB2C200AE8E130125F0DA1A81AF46DEA7A32564B0",
+ "B65CAE529F4F5640EC8E61D7B18DCABF5C42D09D16638E02",
+ "6D9BDF35483F61B8B41DF2BB3DAB479CE960916A91768BA9",
+ "C7065FCFBD627402B557D08EE245E4B792079CBA32E7E956",
+ "FA7CAC5FC22F2AF0FF1E052D28817A65966B2B0C1C2F8792",
+ "204A233E044B2C07EBBD2C529A8D578A07B21BB674EE4D64",
+ "5D64C8D0554606505D54BDF395D6608AE15D23144284C05F",
+ "C90A9B1D92220CA0F3F4A8E65155FE0E1D152C89213E96D9",
+ "3C8673A6ED62C5FFC880D24A000053ED7042329424181DFF",
+ "732D68C9AAEF89D27676A87AEA0F975BC31E9B7184AABE49",
+ "61D3540EF01107CBEDCA147F615B0DA929474344FA8DAB0D",
+ "FBF56E336FF510ADA9A801F84E4792FD8E9B1C3B44B4D666",
+ "FD5EB3F4BF2E475CA451C856B2F576FCE1CAC3B700348176",
+ "E5D6F6AF3BB3D2D22975AB500DA24B5783E651C1AFADBCC1",
+ "22C7EFD25977630807C1D0FD7DC220FF426D589BEBF3F818",
+ "38C0B8ED87706F4A7C2DC5EADCD01C72193261CF37C196EF",
+ "CAA17EB9893A85EBE650736A0B56FDCC9DDF6916707D1B99",
+ "1FC43409C387A59F2702D1120CA69AE1EB8BCC072AEBCC89",
+ "9D5CAD387705F97F784279C85B5C09D3A8216C3151BB8BB5",
+ "DC1EBB94F3E0E6703DAA5715A7E826554DB9EDE756B2EED2",
+ "5E626E0FBB4CAE926AC717EC009CAEE23B5CD3062359E20A",
+ "F348BF048DB8D98D0BD0666B520AB255B12CA6047B3166AF",
+ "8F929C79DDE5DE2794998170EFCABCE511637A29810ABF47",
+ "FE4661EE9DD9FD928D2AF9B5898EAEAB617E88369457DD67",
+ "6E0C9BCE677EA50439E02731B301300511643AC1FE00125D",
+ "4589434D3BE9D44EF45DF1ED91AA97D812ED55DD869B9067",
+ "0C0DC9DAAD3351B7CE17F8D1F6DBDA62F91FCF6C93019C45",
+ "07FD597941C0A30A137256D65E5D2430EBA2C6EF24979E00",
+ "EEFC74ECC53C334768D59EEB02B49A462A976CAD32FA9F4C",
+ "292EE351E25622EF85A07C0C161FC0FBC09229C176998D35",
+ "7ED81D7B5AD71E60F04E388D2E29E044EE253D701D213ED1",
+ "56A2F7E6F85975BFCE0705A124AE4CBF7C3015690304521D",
+ "B07EA50183596A2430F3DEC13F96845D1070A3D32F5EC066",
+ "526F6BBF1EBE525ECF7EFBE693A06B746307726F2011529C",
+ "89EBE9219A9AC412BEC88BA321030B4AAA257B6410F7719B",
+ "ABD5FE2E6DA870D5B894B35E72E41D590A01E40303524335",
+ "1E3D537D9580A74F2D7FC71EE241923AB3848D11A1A5644C",
+ "F580664AB99A6B50BFA21019261D91B3A1238FB129B0797A",
+ "2DB79D2513802F939D4608E4FFE38D1CD5FFE7B667CE3EEC",
+ "13B1F534DACAC2836C67B4B410151AE550AFF9C977B6A3D5",
+ "86ABFE6988DFE9D6C9A884942946BE74115987EA3C6AF477",
+ "9FB58A6C6822D1F7BF3AC52BD210132FD6DD1E823D3CE95C",
+ "1F5E0C29EBE8A28B934E7932C0D120F2F01CFA87DC089E0C",
+ "BEA84869592DF1FD12127F891CA9DAFEE767226868F878DB",
+ "6FC0DF95D191F492399AFC32C4F536F43C14E189DA93396C",
+ "33E9415EA0EDB2BAC1DD210B9CC2F5D7F46B5B07C5EFCC3F",
+ "CD933BE80058AFBBC9FFD6590CA2F53B3696E7F86CBDE8CD",
+ "15F89B44FF00A4CB930233FADB49A824F0AB540636A0E8A5",
+ "33C345BFFA20C8F0B92AC6F3F063E477F1CDA525C35E68AB",
+ "617EE74C600A5B9D5C591984222DC000642FA97ECAF6948F",
+ "E50FF576A78A5FF73038F307740FFB190F405AAF65909C7B",
+ "10F16B3B9BE9762F603DC156A2626D0A92C49D6788433292",
+ "65C75607C3085EE0DF99AC88FCB71FEEA3E95D1995027B90",
+ "A95A236CEAA6FE6A33DBD6B2FF2CC61DCD06B576D34D8BF9",
+ "94701D90637F543B83AC736D448D915AB56ACF688AA2A9BF",
+ "C005D8C2069CB7F291C7214165383ECC418999FADF197ED3",
+ "F02715BA20879FE16CA382F3F33B35DA09273F524A832CE0",
+ "925F4C6B45F07D01F1033AE426E554FE30AD5664F89EB521",
+ "DA89E876647B2B17B726DABF0620B5791B8D910CB9E7323D",
+ "A3817AEC34558CE5C4554B4BB652D52E0FB834D66173B40A",
+ "EC4599DB388F66C10AF7C24987AAAB6D02CF431602C321D3",
+ "D7BBCCC448440CD6BFF93D8CA1DC309BE47E51C823B85EBB",
+ "2CAB4F11BE0BB64B4F16F707DF30F465A279C6972FBCD7D9",
+ "12E4D1EF75CBCA5369EB440776F117EDA8B536A35C26F139",
+ "17444B27596CBC519FBC8F2B90D68D05BCF51608ACC3D304",
+ "D76A8B2E986EB16CD6121CED58295F0CF5EB02DEB60F98CC",
+ "164E3829B70E59570D2A5B24A0F1C67A974DFFF1EF5BF2EA",
+ "0EE8B5DD7E5A285EBE11965B574517B949C3487937453B2B",
+ "E3639D864D20ECB48D8C2B8F892D97A7FECF83937C48C2DC",
+ "4434C996B25FE43CA24746396E50C157139C57787675CE17",
+ "6D1693269BBA7630B6C083EA6D8AA16F0512F07C214251A9",
+ "A1D5C7ABDDF9FA51FB5C9AE0008FA953EA83063C93E49319",
+ "9BAC4A7FFF14B34F32F10EB2B6A3A61A13C255DB176D6FCB",
+ "C6BD779EE2F9FF6A4ACCDA2E33FD0C62D641733E414D5B36",
+ "F0D656506DE265EC28F1781DACB76D1C7575DC55C15A40DC",
+ "0E95FD14633037441CD9AFE78391FFE73AAFEFE532B8F7D6",
+ "AFA01B52D549FF4C8B6DC71BBA6CFA27E8EA03046B95F6EF",
+ "9E63417D3DF651A3353FB6573FFAED9DF4ABD7F68AAAA051",
+ "CE51254F812107B91727838B619D5C4F17FC2C3C9A95233A",
+ "89F63C422BB85635F432D4A6DC9F940D79E0B5E111A24F4E",
+ "999534C4B3B25F32FFF05B893F4E26CF8F1819FCB5B908C1",
+ "7FAACB92FEFD12045C77B4180EA95EE7E1775703E7BB4C3E",
+ "2BFEAD2B7E1C6BB0F47AEFB9909E3ED961EFB39A29794515",
+ "A52AE6D0221773E42FB042B7830D28A73A590562C38C802B",
+ "5B3007DFB62B78955620A0F17F58B6FE55B360C0F7A9F4C3",
+ "77883951F130BA75FED13621DC61BB766E475DB7751B0D3B",
+ "297DEB90367720058318C994C0382B83D182110797A29A53",
+ "0BA968080D4608C3BFBE43682CBBD63F246F866AB0A0070C",
+ "328F20CDFFD905862A11F70B6FDB4803133CCE8ABB8D2B73",
+ "74AC023139CF3557F49E2F8A674AD0857AEEB9EBA3C1985C",
+ "BD588F19DC358DC37450A6689E4D7DA413206159F3DD2A4D",
+ "DB626F5040AF44803156FF86860A1367B1B644B021C15460",
+ "ADE8785F2F65B67ED1740F8693C5A1CB3BFEE9E3B211B83D",
+ "D08599E7444393A3C5FF2493E1B6647B297708919163E05B",
+ "8AA57D3CCCB899CC92A44ACE801F54A13E60A45BFDFE7D30",
+ "3415A0699A0D14DBBBB2280A9C8E3C91B954B769CE606362",
+ "EAD03B5ACC5C86FC8672AE14330BF93A9489A5017D3B9354",
+ "7ABE3B7FD5804A23B937C0EF5ADD8869188BF842F68D21F5",
+ "739004F8FC7577D0BA954187F300E441F4A99F62E0F3C367",
+ "30D99CB386570F45B8F0EB75868E8EA9EC7DBB04C26D8FEA",
+ "7278F6E780965FB5C02AC4AC24BD2020D2439623EEB901C8",
+ "93E7E84B803152CE17491B9B9DC6502041DA4D56C636B4A7",
+ "32D63F3C642173BDE55C2A7E8BB6C942420C309DB2E7210A",
+ "CECC92727AAEE2FA74B90AA728F0D3F0FC5E8A42DF283713",
+ "51437CED5761BC3FCF29FDE5877675B5DCCABC85BC2279B8",
+ "F6A494D7241543CBFE2BB3C68F2DA9FD9915BF0A14BF82F4",
+ "DD8BE4ED5FFCF836C977352ECD2CF689BD94F9CF0EB66EB4",
+ "1EF1B22652B07E0039DC257B30E88A2FA5D3FC64C79C741C",
+ "775E4B0447AFD1C960320C042EF2AB6C879088956435872E",
+ "A40FB52C188AAC639CF9ECE72B978C812CA7991997CCC3D0",
+ "F6F305D3ACA46CEFDA5FCF420B49C9C13F14C3247E4214AB",
+ "2A5611447591A609BEDB9B99AF030D1548C25C1090FB7252",
+ "6BB8BF7CF510DF644EA1771146EC6E943E26598734BB2022",
+ "8508F80824415D97E468B19EA305B0473A915B996DC83A31",
+ "8814EE7A02164290EB431E70D50490DC2313BD30EB479857",
+ "EFD4A311C5F5093AB23F2C775577EEEE230643A75F7938C6",
+ "6FA980DE170E4708F4F59BA46DE0EA340BC61C540B0D12BD",
+ "C699821C7E342804278CA77879FFB9332F274530C673385F",
+ "FCFA7BA4FE1736CA672914AC98905FCF235CB82F10BE9981",
+ "BB1DC4CAA892B46D15C44125DEDF64C63EC4DE5B807F93DF",
+ "520F25FEEC8D698D31C164D291A54B906564A75B7B693239",
+ "772CB58B4086454862B813AB25EA5E33BE530D3DF48F8BD5",
+ "CBDBBF709ADE1701ABDA7A258528D675B505678E6B643FDD",
+ "A16CEC411677F88C1F751442BCDBC9F013AA1F4E829CFCA8",
+ "9DA04A1EF52DDF86660B9EA7D8AF385BBE6369B10AF2F3B3",
+ "049F7036F40FB51260E4B8CB0696EA03D375B401CED3E2C7",
+ "EEB8208784C4C65DA497729C948063BD9F51FE5C026CBC8B",
+ "F39BA71DFAD235C2E0CC8BBAE4CD8D5D1EEE9247086ECAEE",
+ "8372D7953F7697BE48661E3718196082B06EB448EDF3D839",
+ "D41785ADE9E2FFCAA5B9D44613CD23CD9C3A519CD9C89BED",
+ "620D6396A467CB957740B85D5D51E53279DF78D56D6CE8B6",
+ "89905029EF0112631ED9DFDEB63BA26235B822022B686D59",
+ "51AD7F7D9611ED7C24A84525832A2F8CFAB80F907C02533E",
+ "C645E4CF66DA4B343FC0E9221B4616E8CAE1E65E50195E64",
+ "38EB1AAA6CEBBE8A21EBBB9C0976D29F4089EE47ED1D1F4E",
+ "EDF66F50CD0F54FB3094E3412E28177A53B1CE56D0FDE4E8",
+ "11CD219A1E03532D2D4D61F1563C2AAA8A1586736FEB5CA0",
+ "01D50B226A3517A3DCE79495FE1410E7AB6FEEAF8FA24BB7",
+ "F981D517F259B363A945D2D19447378649E597A37641B911",
+ "B36A8BB7E4018ADB5DC72B4961501F9A5AD5931F5E97A6D6",
+ "D78D1E9D4682A0777A6EC0D8C2F165CAB925966650937F89",
+ "2F6D9783D5BF5976DCC31C7F00B9FCD04B6C16BE92417C9B",
+ "22B9F7C41FCE5A4638D6E6C61265B58D18C2D5FBBE33E9F4",
+ "37B7BA6658F835D817CB114D06C197D23C47708352EAC551",
+ "D8E97C4A5F14A1F595C041D0ED59C4D4631E7AB673484824",
+ "AC782146178A613B3FEA97DBF2018A6C7E1EE3789BBE2A51",
+ "11FD098F69CA3BE809474769C7DC6664A37AA26358A1EF08",
+ "93856CBBE6404B2EF9D4240556810833C73D6D049FCA47BB",
+ "C8466665EA45CE4CFD88F819D5C639777640B84D3D60C4BF",
+ "9B4834F18ED69D519D497AD84204BCB9D749F122A86206F1",
+ "7571A4B267EB04E445803700DB6A72242E1DE16B1677C410",
+ "2A6518AF7D1C26F81852CABD90366371783BE49E94BEA42F",
+ "AEBDEE389CEE275743FD1DFE10716DA734049874700D55C1",
+ "8EF1808D19882CCB413F4B432918984BFE61D3419999642E",
+ "26B8CC222AA5C53969D3DB6DA64743B71063AE978E1F5899",
+ "2B8FA32B543ED0E1A8EED1165806602675D21D4A330AACD5",
+ "7BBD8EB068F2EFB116AC6EF6FE80BFB0E8023702D17EFA6E",
+ "344265DD1FEEE145A37F268EF0877581998CF323CFECECCA",
+ "9B606437205BD1DB249D3566D7AEE9D289C9CFD0D57FD058",
+ "C28D239C59BD76719345840E7C491748FAE7FCBC5EEA6C51",
+ "BD1EFD0CFD6283ACD2A95B1DAE33ACC47A14D21AE3A74DF1",
+ "B0EEE8E5A9256A73A98B641F3D29092D2F1F1B75509F5455",
+ "C46B3EB0F3B3C6D61CF0E5A263D4499A91D68055B1EB4996",
+ "C14215E03D57E2D109D88F48500F0D2332A819F1716D8885",
+ "DD38ABA719EEB2B7B78DD4455AB2DF07A5DA8608BC8250EC",
+ "1175351A36F8F2769BA8A206185C10B241189FA4D6220C83",
+ "208DC327BC1BE3B55EFDEFEF89776DA5EA979CA479CC970C",
+ "AD80043313C929A421495430561C49F0613C195D3578B518",
+ "8384691A0DCADD919AB610D69A4C478A582525D5C48B7F17",
+ "2FF93D872E9E6AE1783C0EF5B1AB9510050F0276563BA02F",
+ "D3C7B2D23986E191D95B19810843B63360578024F3272DA9",
+ "29F56FA57392FF312289DF4A88C718FA56D2C3357FE6D0D8",
+ "175884C528D5584EF0E0AAB61660EB9684242F00F6911A24",
+ "F5D5EE0BFBF2186BD6CE3C63A9E19852EFF62D39E8215068",
+ "6712197F2D9E424139C93292E9B684A11579BAD5546A9F99",
+ "EDAFE550B5634A040E23A008DD3B15C476907B3CD596725B",
+ "230EC8B2DDCE48BB1ED8928509CE6659981DB303813C7031",
+ "02371A2CA23F8781DCCBA0672C979EBF0EA8F17F4CAAB443",
+ "E0EFB4CE4025CD25C760F9E822F954D6B38319E71ABED25E",
+ "2030785CC6D18999182F7B6A9BCA9F72F86829F89B306C37",
+ "3490EBCD433D9FDA74EAAD97469345846E190540C6D82642",
+ "A9C3E5AB60F1666619A899B8F3AC2370A5BF2298B99BADBB",
+ "804320365682196340806665DC55299041D3BD85728BA0F2",
+ "53A2DF8B0C83C7120BE2A9608F1B5A4528BEFEC9D7970487",
+ "2BCD607D529B39E1429F0C54B94ED78F826389086C7739C8",
+ "0C466A6ACFA584D239367547536323A32715D0DBB5867B0E",
+ "2FC3EA605A33AC26E78D8CA19F98CE7B5827E62961D89212",
+ "8761107DC3785DBF710BBBEDE5FEABAB6F175A5ECFA961B3",
+ "F123F30881EC794674403328E3CE7C80BC95DAC12D7B360B",
+ "341C9DADB601F2781F6ABEB933B73AAD103A81E8D96F6730",
+ "38E53597534CCF0E60DA817C62924453E193D61861043244",
+ "3DF84CC5EDC3D732948BE841302B9AB708F5AF33DC537A31",
+ "B546891818224B14E90827757DE18BABD71449E57F8FCFF1",
+ "A7D6E7A48C1C14CD8DC58D7EFCD4FC8D407F15A1D4AA41D5",
+ "0B178B35A97C06D9D4D2A5838AA867BFDBDB36D674AF33D0",
+ "8C22DFD72E5ECBA3D0E0B54985D01223032939E7B7B33697",
+ "A52E67BE70E116BDF6EB61EF225DB94DF06966203DFA2E31",
+ "4AB1B7BAD46AF64C8B6203A8889CF56A079F18F688790896",
+ "65D1A4BF8DBA94C9752913A4C15FCFB7F18CCF257D48DED6",
+ "090CFB92322D482D9D8AAFF716F10FDB491BE0FAF50C784F",
+ "94F1F66FB01D719F04D36CA30287F7E534DC31B0D91CE1FE",
+ "D8689D811424A59B870F84D11BFA1D202BF57896154405B6",
+ "D7F2171F5B7523C54B4D1A81BB6048C99CED1E15087A9C49",
+ "94DC8F6AAAD2A07CA81191B613291EB06EEC66A1B628F9CC",
+ "534D75114EB28DFE082BBA4285ED30E55CBE4864278FF182",
+ "F5971C8523421B68BC3D9FCA5ADC5D2C76CD0C3797232950",
+ "D274B834360952A27265C12C2B70623CDCB69C4815B8AD9E",
+ "D25074898E465F024B7D5AA542575176B885998694BFF162",
+ "100B09B1A2778E07F0DEE2E6DFB28D032FA35D7EBAB2E87A",
+ "96FE586BD7D472FFA884C5724561D517C1126957FB190096",
+ "45EE36AF320341688173D7C41A7615BCCD0A431F834EFD18",
+ "F73847AEB45D714CC5756DBDEE00A9E580EF91101AC8FE64",
+ "30A56E8B8CDAD753A854A1BE4B61DB04F303B6CFD0D76522",
+ "1BADACF65A1F790B448DF08A100E66CDB8B404DDC7865016",
+ "D0DA13AA2AFC006A97C537541B505B96CE798BDDC07B9D6D",
+ "FB4170AA2DBAA3844FD8485D4325BE987E2E589B58AB3B80",
+ "50A0FE8090A0AA2EA503CD40DBE894004852584FDE11E3E2",
+ "F6311445087C56C3CA179EF211FD32762134EDC910D9270B",
+ "A292F008A7BDF88E61FF866269A6D6F6AC9A81F706D57C27",
+ "700C29CF917F3634215C58B9B3B9C147FC0AEA52C05B2841",
+ "2071C5313B0EA39ECC258AC29ED6E6CA8E0511C726A528A9",
+ "AC6F08712123FF72E9C04D1C5C343BC2A356DBEE9223B8E8",
+ "01F46A7935579B7A7F5CDD00B5E7F1D62C37726F4216DC1D",
+ "820320BBB243E30FE35395FBFAF46A5C8C0CA41E4B48A80B",
+ "4B3365B4AF9E0C1AB703F297ECB82F9DB6ED44819DBC72F8",
+ "DF69D9A819C4E27ED1B7D66678FDEBD8BBD1747F892D2B55",
+ "C0F17FAF958767C65EBA2F68EE245205CB1BB73290AACAB6",
+ "D62C3EBC661115CDE4F4BD646D745ADB7225304D2712837D",
+ "37E9A837E07B12281F4740D8353DD6008A077F6EF51978B9",
+ "9826470A5ABEE6EE66BB799C9A9206703174AB77AA6223A4",
+ "506C60EAC24C18D955364759BD8CD522157AD658C7B1652E",
+ "110923F8A4E154057211F273FDAF0F565AAD0A0962C4E08D",
+ "30CE0B97A6578CE2398BF04E63F78B2CAB5DC97A140426CE",
+ "3AE75A6039177B44B18B2C02EE148388F93E6EB96A989D3D",
+ "0DE8D7C180C5FB4E90ECF4165EECEDE97316170B7B00D681",
+ "A1BA31195FF34A411C5D9A72A84C83C7BD7C6C777FC7DA4A",
+ "1D7295FE7B297D4B752159B7DD71483D53C7799FF82054E4",
+ "F0210F4416BE56B157EDC9A76684D1F1653EFA6B7D06079B",
+ "311229D7C5AADF9CAA0DF39E441D4E119D0B3887194B9751",
+ "7E5E875547284EE4952C250DA3BB4E3BBE59086FA638CAAE",
+ "890371D12AF03062698C2F4F5F2D7272DF652EE99C4233B3",
+ "BD3F48F09AB50132242F762A61904E945CD3628A925A8B82",
+ "6401C4DDCDD7441581AFF57D13C1198FC2347D886D319FDA",
+ "2446A367AABBDEBA9EFD1F8CAA9805EC1A9B45200A90E2C1",
+ "37C1C64324D78E1F7549E6169FA66D492184F3A5A524810F",
+ "91A620E120AB9C4949C6D3E27A856F079F76DA00D56C3A22",
+ "575C19C550408D8454650AF1739812870E371BA8F34B6861",
+ "5AB6FF5B263ACFAB2013C3068C03A82979EA6DB287A3ECDD",
+ "BB40E88E5DA7D4B12356124D9ED74BA5283C502FC68B5A1B",
+ "CFEC678B1CD75F4249D536C9399F11C12CE9938EE8CADCFF",
+ "8A26E3715E0471DD3616A9E505F4C73722BB42FB233BF641",
+ "ED38E1AA4B73AF6024471252F8102E77ECBF4BC315DB1C31",
+ "4D5E37A37AFC8C7DBBC25AF2C6670ED2DAFB56B5376E2550",
+ "958603BDA98C29A87AEDB0C1C8F559D161EA4FCBE9EED392",
+ "A7F58251627E2C4C82ED1AFADB2FFF3B3483CDC279117E1E",
+ "4B003F86DA13C24E10041F934DC02EAA9E86C4200550DE8F",
+ "6139AB107BCD192E8419E869F77738D2624BA81FD774828F",
+ "15E286064681AB50343CDFD1E178F6DAD9071E3727997DA1",
+ "95A26E99BFFBB5D0027B380688D3E5C567454F4F2F283C41",
+ "45326511C3070AD878172A7DA38D17ED65D17BFFB0298058",
+ "C127E412181EF4734360466A38245409E44B2B208FFF4D67",
+ "4C9A55B7BC50B8D7343F1FF351F13A89CA53E8AD2F056559",
+ "9B93DF18074112C26FBEB1EA277070EF4D5A1778376DC12C",
+ "79CE5EFD59A9A0ADBC3661F278B3C540A0332A9E8FA30E07",
+ "886F0AD49176EAF30EA422CDA7D1061AF2D62DA67C672407",
+ "54C7674DC49D49E63DD7296241C3F2F0B022BCC0451400F0",
+ "9DFC07C61179B9DEEA1D452D3073C2A12CB0342EC8FA25C1",
+ "E9C6E911956A0D7C3958F4E0252A4DF98FAE33AFC834EA10",
+ "9DB1556485B4C5C67FC532C4C6937AFA3A889FDB09B055A7",
+ "5875A1A391DEDD84155F3805A81EF68AD288A9E77DEB4324",
+ "5DA3FCD577895036D0AB8D6BC654C59E76C0312C81F3A374",
+ "3DB3B9731E66FEF6039A2723C7CD7814F2A5F8ED20807361",
+ "C784C70B8F431D8AEA3F5ADF2BA55AB4BEC9C580558CD0BD",
+ "B256AA37A7DA84F3599B338E2B853B92ECBA5FDE6901B620",
+ "1CDEC1D10BD749090B1F491A4FC8E2F8B150D64F3215CE8F" };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTiger");
+ algorithm = new Tiger();
+ try
+ {
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.selfTest");
+ }
+
+ try
+ {
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ String exp = "77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809";
+ harness.check(exp.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testA");
+ }
+
+ try
+ {
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ String exp = "2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93";
+ harness.check(exp.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testABC");
+ }
+
+ try
+ {
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "D981F8CB78201A950DCF3048751E441C517FCA1AA55A29F6";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "1714A472EEE57D30040412BFCC55032A0B11602FF37BEEE9";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testAlphabet");
+ }
+
+ try
+ {
+ algorithm.update(
+ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".getBytes(),
+ 0, 56);
+ byte[] md = algorithm.digest();
+ String exp = "0F7BF9A19B9C58F2B7610DF7E84F0AC3A71C631E7B53F78E";
+ harness.check(exp.equals(Util.toString(md)), "test56Chars");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.test56Chars");
+ }
+
+ try
+ {
+ algorithm.update(
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ .getBytes(),
+ 0, 62);
+ byte[] md = algorithm.digest();
+ String exp = "8DCEA680A17583EE502BA38A3C368651890FFBCCDC49A8CC";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm.update(
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
+ .getBytes(),
+ 0, 80);
+ byte[] md = algorithm.digest();
+ String exp = "1C14795529FD9F207A958F84C52F11E887FA0CABDFD91BFD";
+ harness.check(exp.equals(Util.toString(md)), "testEightyNumerics");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testEightyNumerics");
+ }
+
+ try
+ {
+ for (int i = 0; i < 1000000; i++)
+ {
+ algorithm.update((byte) 'a');
+ }
+ byte[] md = algorithm.digest();
+ String exp = "6DB0E2729CBEAD93D715C6A7D36302E9B3CEE0D2BC314B41";
+ harness.check(exp.equals(Util.toString(md)), "testOneMillionA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testOneMillionA");
+ }
+
+ try
+ {
+ for (int i = 1; i < 128; i++)
+ {
+ algorithm.update(new byte[i], 0, i);
+ byte[] md = algorithm.digest();
+ harness.check(ZERO_BITS_ANSWERS[i - 1].equals(Util.toString(md)),
+ "test" + (i * 8) + "ZeroBits");
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testZeroBits");
+ }
+
+ try
+ {
+ byte[] input = new byte[64];
+ input[0] = (byte) 0x80;
+ for (int i = 0; i < SINGLE_BIT_ANSWERS.length; i++)
+ {
+ algorithm.update(input, 0, input.length);
+ byte[] md = algorithm.digest();
+ harness.check(SINGLE_BIT_ANSWERS[i].equals(Util.toString(md)),
+ "testSingleBit[" + i + "]");
+ shiftRight1(input);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTiger.testZeroBits");
+ }
+
+ try
+ {
+ algorithm = new Tiger();
+ algorithm.update("a".getBytes(), 0, 1);
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ String exp = "77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update("bc".getBytes(), 0, 2);
+ md = clone.digest();
+ exp = "2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93";
+ harness.check(exp.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ x.printStackTrace();
+ harness.debug(x);
+ harness.fail("TestOfTiger.testCloning");
+ }
+ }
+
+ /**
+ * Shift, in situ, the variable key/text byte array one position to the
+ * right.
+ *
+ * @param kb The bytes to shift.
+ */
+ private static void shiftRight1(byte[] kb)
+ {
+ int i;
+ for (i = 0; kb[i] == 0 && i < kb.length; i++)
+ { // do nothing
+ }
+ kb[i] = (byte) ((kb[i] & 0xff) >>> 1);
+ // handle byte boundary case
+ if (kb[i] == 0)
+ {
+ i++;
+ if (i < kb.length)
+ kb[i] = (byte) 0x80;
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/hash/TestOfWhirlpool.java b/gnu/testlet/gnu/java/security/hash/TestOfWhirlpool.java
new file mode 100644
index 00000000..82ea2071
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/hash/TestOfWhirlpool.java
@@ -0,0 +1,179 @@
+/* TestOfWhirlpool.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.hash;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Whirlpool;
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the {@link Whirlpool} hash implementation.
+ * <p>
+ * The test vectors used are those described in the "iso-test-vectors.txt"
+ * document included in the Whirlpool Version 3 documentation package available
+ * from
+ * <a href="http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html">
+ * The WHIRLPOOL Hashing Function</a> Paulo's page.
+ */
+public class TestOfWhirlpool implements Testlet
+{
+ /** The test vector for the ASCII character 'a'. */
+ private static final String TV1 =
+ "8ACA2602792AEC6F11A67206531FB7D7F0DFF59413145E6973C45001D0087B42"
+ + "D11BC645413AEFF63A42391A39145A591A92200D560195E53B478584FDAE231A";
+
+ /** The test vector for the ASCII characters 'abc'. */
+ private static final String TV2 =
+ "4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C"
+ + "7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5";
+
+ private IMessageDigest algorithm, clone;
+
+ // default 0-arguments constructor
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfWhirlpool");
+ try
+ {
+ algorithm = new Whirlpool();
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.selfTest");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update("a".getBytes(), 0, 1);
+ byte[] md = algorithm.digest();
+ harness.check(TV1.equals(Util.toString(md)), "testA");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testA");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update("abc".getBytes(), 0, 3);
+ byte[] md = algorithm.digest();
+ harness.check(TV2.equals(Util.toString(md)), "testABC");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testABC");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update("message digest".getBytes(), 0, 14);
+ byte[] md = algorithm.digest();
+ String exp = "378C84A4126E2DC6E56DCC7458377AAC838D00032230F53CE1F5700C0FFB4D3B"
+ + "8421557659EF55C106B4B52AC5A4AAA692ED920052838F3362E86DBD37A8903E";
+ harness.check(exp.equals(Util.toString(md)), "testMessageDigest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testMessageDigest");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update("abcdefghijklmnopqrstuvwxyz".getBytes(), 0, 26);
+ byte[] md = algorithm.digest();
+ String exp = "F1D754662636FFE92C82EBB9212A484A8D38631EAD4238F5442EE13B8054E41B"
+ + "08BF2A9251C30B6A0B8AAE86177AB4A6F68F673E7207865D5D9819A3DBA4EB3B";
+ harness.check(exp.equals(Util.toString(md)), "testAlphabet");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testAlphabet");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".getBytes(),
+ 0,
+ 62);
+ byte[] md = algorithm.digest();
+ String exp = "DC37E008CF9EE69BF11F00ED9ABA26901DD7C28CDEC066CC6AF42E40F82F3A1E"
+ + "08EBA26629129D8FB7CB57211B9281A65517CC879D7B962142C65F5A7AF01467";
+ harness.check(exp.equals(Util.toString(md)), "testAsciiSubset");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testAsciiSubset");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ for (int i = 0; i < 8; i++)
+ algorithm.update("1234567890".getBytes(), 0, 10);
+ byte[] md = algorithm.digest();
+ String exp = "466EF18BABB0154D25B9D38A6414F5C08784372BCCB204D6549C4AFADB601429"
+ + "4D5BD8DF2A6C44E538CD047B2681A51A2C60481E88C5A20B2C2A80CF3A9A083B";
+ harness.check(exp.equals(Util.toString(md)), "testEightyNumerics");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testEightyNumerics");
+ }
+
+ try
+ {
+ algorithm = new Whirlpool();
+ algorithm.update((byte) 'a');
+ clone = (IMessageDigest) algorithm.clone();
+ byte[] md = algorithm.digest();
+ harness.check(TV1.equals(Util.toString(md)), "testCloning #1");
+
+ clone.update((byte) 'b');
+ clone.update((byte) 'c');
+ md = clone.digest();
+ harness.check(TV2.equals(Util.toString(md)), "testCloning #2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfWhirlpool.testCloning");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/jce/CVS/Entries b/gnu/testlet/gnu/java/security/jce/CVS/Entries
new file mode 100644
index 00000000..f55a31cd
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/CVS/Entries
@@ -0,0 +1,10 @@
+/TestOfDSSKeyFactory.java/1.2/Sun Feb 26 05:10:42 2006//
+/TestOfDSSKeyPairGenerator.java/1.2/Sun Feb 26 05:10:42 2006//
+/TestOfFormat.java/1.4/Sun Feb 26 05:10:42 2006//
+/TestOfHttps.java/1.2/Sat Mar 4 10:53:36 2006//
+/TestOfKeyFactory.java/1.3/Sun Feb 26 05:10:42 2006//
+/TestOfKeyPairGenerator.java/1.3/Sun Jun 18 02:52:13 2006//
+/TestOfMessageDigest.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfProvider.java/1.2/Sat Jun 10 23:08:44 2006//
+/TestOfSignature.java/1.3/Sun Feb 26 05:10:42 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/jce/CVS/Repository b/gnu/testlet/gnu/java/security/jce/CVS/Repository
new file mode 100644
index 00000000..a57b4562
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/jce
diff --git a/gnu/testlet/gnu/java/security/jce/CVS/Root b/gnu/testlet/gnu/java/security/jce/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java b/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java
new file mode 100644
index 00000000..deb68def
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyFactory.java
@@ -0,0 +1,104 @@
+/* TestOfDSSKeyFactory.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the JCE DSS key-factory
+ */
+public class TestOfDSSKeyFactory
+ implements Testlet
+{
+ private KeyPairGenerator kpg;
+ private PublicKey publicK;
+ private PrivateKey privateK;
+ private KeyFactory keyFactory;
+ private byte[] encoded;
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ testSymmetry(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new Gnu());
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.DSS_KPG,
+ Registry.GNU_SECURITY);
+ kpg.initialize(512);
+ harness.verbose("*** Generating a DSS key-pair");
+ KeyPair kp = kpg.generateKeyPair();
+ publicK = kp.getPublic();
+ privateK = kp.getPrivate();
+ keyFactory = KeyFactory.getInstance(Registry.DSS_KPG,
+ Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void testSymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testSymmetry()");
+
+ try
+ {
+ encoded = publicK.getEncoded();
+ X509EncodedKeySpec spec1 = new X509EncodedKeySpec(encoded);
+ PublicKey k1 = keyFactory.generatePublic(spec1);
+ harness.check(k1.equals(publicK), "Public DSS keys MUST be equal");
+
+ encoded = privateK.getEncoded();
+ PKCS8EncodedKeySpec spec2 = new PKCS8EncodedKeySpec(encoded);
+ PrivateKey k2 = keyFactory.generatePrivate(spec2);
+ harness.check(k2.equals(privateK), "Private DSS keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("testSymmetry(): " + x.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java b/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java
new file mode 100644
index 00000000..7d780a60
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfDSSKeyPairGenerator.java
@@ -0,0 +1,242 @@
+/* TestOfDSSKeyPairGenerator.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import java.math.BigInteger;
+import java.security.AlgorithmParameters;
+import java.security.InvalidParameterException;
+import java.security.KeyPairGenerator;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.security.interfaces.DSAKeyPairGenerator;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.DSAParameterSpec;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * API conformance tests for the DSS key-pair generator.
+ */
+public class TestOfDSSKeyPairGenerator implements Testlet
+{
+ private SecureRandom rnd = new SecureRandom();
+ private KeyPairGenerator kpg;
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ checkInvalidDefaultModuli(harness);
+ checkValidDefaultModuli(harness);
+ checkInitializeSignatures(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new Gnu()); // dynamically adds our provider
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.DSS_KPG, Registry.GNU_SECURITY);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ catch (NoSuchProviderException x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void checkInvalidDefaultModuli(TestHarness harness)
+ {
+ harness.checkPoint("checkInvalidDefaultModuli");
+ for (int i = 512 + 64; i < 1024; i += 64)
+ if (i % 256 == 0)
+ continue;
+ else
+ {
+ if (initModLen(i))
+ harness.fail(i + "-bit IS NOT a valid modulus length");
+ }
+
+ harness.check(true, "Unsupported default values are rejected");
+ }
+
+ private boolean initModLen(int modlen)
+ {
+ boolean result = false;
+ try
+ {
+ kpg.initialize(modlen);
+ result = true;
+ }
+ catch (Exception ignored)
+ {
+ }
+
+ return result;
+ }
+
+ private void checkValidDefaultModuli(TestHarness harness)
+ {
+ harness.checkPoint("checkValidDefaultModuli");
+
+ for (int i = 0, modlen = 512; i < 2; i++, modlen += 256 * i)
+ if (!initModLen(modlen))
+ harness.fail(modlen + "-bit MUST be a valid modulus length");
+
+ harness.check(true, "Supported default values are accepted");
+ }
+
+ private void checkInitializeSignatures(TestHarness harness)
+ {
+ harness.checkPoint("checkInitializeSignatures");
+
+ String msg;
+
+ // KeyPairGenerator init methods ------------------------------------------
+
+ Provider fp = new Gnu();
+
+ msg = "initialize(AlgorithmParameterSpec) MUST succeed";
+ try
+ {
+ AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA", fp);
+ AlgorithmParameterSpec spec =
+ ap.getParameterSpec(DSAParameterSpec.class);
+ kpg.initialize(spec);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg = "initialize(AlgorithmParameterSpec, SecureRandom) MUST succeed";
+ try
+ {
+ AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA", fp);
+ AlgorithmParameterSpec spec =
+ ap.getParameterSpec(DSAParameterSpec.class);
+ kpg.initialize(spec, rnd);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg= "initialize(512) MUST succeed";
+ try
+ {
+ kpg.initialize(512);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg= "initialize(512, SecureRandom) MUST succeed";
+ try
+ {
+ kpg.initialize(512, rnd);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ // DSAKeyPairGenerator init methods ---------------------------------------
+
+ DSAKeyPairGenerator dsakpg = (DSAKeyPairGenerator) kpg;
+ msg = "initialize(DSAParams, SecureRandom) MUST succeed";
+ try
+ {
+ dsakpg.initialize(
+ new DSAParameterSpec(BigInteger.ONE, BigInteger.ONE, BigInteger.ONE),
+ rnd);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg = "initialize(null, SecureRandom) MUST throw InvalidParameterException";
+ try
+ {
+ dsakpg.initialize(null, rnd);
+ harness.fail(msg);
+ }
+ catch (InvalidParameterException x)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg = "initialize(512, false, SecureRandom) MUST succeed";
+ try
+ {
+ dsakpg.initialize(512, false, rnd);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ msg = "initialize(1024, false, SecureRandom) MUST succeed";
+ try
+ {
+ dsakpg.initialize(512, false, rnd);
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfFormat.java b/gnu/testlet/gnu/java/security/jce/TestOfFormat.java
new file mode 100644
index 00000000..fd3016f8
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfFormat.java
@@ -0,0 +1,203 @@
+/* TestOfFormat.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the encoding / decoding of X.509 and PKCS#8 formats
+ * for the DSS and RSA key-pairs generated by the GNU Classpath implementation
+ * of the key-pair generators and the "Encoded" key-factory.
+ */
+public class TestOfFormat
+ implements Testlet
+{
+ private KeyPairGenerator dssKPG;
+
+ private KeyPairGenerator rsaKPG;
+
+ private KeyPairGenerator dhKPG;
+
+ private KeyFactory encodedKF;
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ testDSSSymmetry(harness);
+ testRSASymmetry(harness);
+ testDHSymmetry(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new Gnu());
+ Security.addProvider(new GnuCrypto());
+ try
+ {
+ dssKPG = KeyPairGenerator.getInstance(Registry.DSS_KPG,
+ Registry.GNU_SECURITY);
+ rsaKPG = KeyPairGenerator.getInstance(Registry.RSA_KPG,
+ Registry.GNU_SECURITY);
+ dhKPG = KeyPairGenerator.getInstance(Registry.DH_KPG,
+ Registry.GNU_CRYPTO);
+ encodedKF = KeyFactory.getInstance("Encoded", Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void testDSSSymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testDSSSymmetry");
+
+ try
+ {
+ dssKPG.initialize(512);
+ KeyPair kp = dssKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid DSS keypair");
+
+ PublicKey p1 = kp.getPublic();
+
+ String f1 = p1.getFormat();
+ harness.check("X.509".equalsIgnoreCase(f1),
+ "DSS public key format MUST be X.509");
+ byte[] encoded1 = p1.getEncoded();
+
+ X509EncodedKeySpec spec1 = new X509EncodedKeySpec(encoded1);
+ PublicKey p2 = encodedKF.generatePublic(spec1);
+ harness.check(p1.equals(p2), "Two DSS public keys MUST be equal");
+
+ PrivateKey p3 = kp.getPrivate();
+
+ String f2 = p3.getFormat();
+ harness.check("PKCS#8".equalsIgnoreCase(f2),
+ "DSS private key format MUST be PKCS#8");
+ byte[] encoded2 = p3.getEncoded();
+
+ PKCS8EncodedKeySpec spec2 = new PKCS8EncodedKeySpec(encoded2);
+ PrivateKey p4 = encodedKF.generatePrivate(spec2);
+ harness.check(p3.equals(p4), "Two DSS private keys MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testDSSSymmetry(): " + x.getMessage());
+ }
+ }
+
+ private void testRSASymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testRSASymmetry");
+
+ try
+ {
+ rsaKPG.initialize(1024);
+ KeyPair kp = rsaKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid RSA keypair");
+
+ PublicKey p1 = kp.getPublic();
+
+ String f1 = p1.getFormat();
+ harness.check("X.509".equalsIgnoreCase(f1),
+ "RSA public key format MUST be X.509");
+ byte[] encoded1 = p1.getEncoded();
+
+ X509EncodedKeySpec spec1 = new X509EncodedKeySpec(encoded1);
+ PublicKey p2 = encodedKF.generatePublic(spec1);
+ harness.check(p1.equals(p2), "Two RSA public keys MUST be equal");
+
+ PrivateKey p3 = kp.getPrivate();
+
+ String f2 = p3.getFormat();
+ harness.check("PKCS#8".equalsIgnoreCase(f2),
+ "RSA private key format MUST be PKCS#8");
+ byte[] encoded2 = p3.getEncoded();
+
+ PKCS8EncodedKeySpec spec2 = new PKCS8EncodedKeySpec(encoded2);
+ PrivateKey p4 = encodedKF.generatePrivate(spec2);
+ harness.check(p3.equals(p4), "Two RSA private keys MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testRSASymmetry(): " + x.getMessage());
+ }
+ }
+
+ private void testDHSymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testDHSymmetry");
+
+ try
+ {
+ dhKPG.initialize(512);
+ KeyPair kp = dhKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid DH keypair");
+
+ PublicKey p1 = kp.getPublic();
+
+ String f1 = p1.getFormat();
+ harness.check("X.509".equalsIgnoreCase(f1),
+ "DH public key format MUST be X.509");
+ byte[] encoded1 = p1.getEncoded();
+
+ X509EncodedKeySpec spec1 = new X509EncodedKeySpec(encoded1);
+ PublicKey p2 = encodedKF.generatePublic(spec1);
+ harness.check(p1.equals(p2), "Two DH public keys MUST be equal");
+
+ PrivateKey p3 = kp.getPrivate();
+
+ String f2 = p3.getFormat();
+ harness.check("PKCS#8".equalsIgnoreCase(f2),
+ "DH private key format MUST be PKCS#8");
+ byte[] encoded2 = p3.getEncoded();
+
+ PKCS8EncodedKeySpec spec2 = new PKCS8EncodedKeySpec(encoded2);
+ PrivateKey p4 = encodedKF.generatePrivate(spec2);
+ harness.check(p3.equals(p4), "Two DH private keys MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testDHSymmetry(): " + x.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfHttps.java b/gnu/testlet/gnu/java/security/jce/TestOfHttps.java
new file mode 100644
index 00000000..7f91e90b
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfHttps.java
@@ -0,0 +1,68 @@
+/* TestOfHttps.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.security.Security;
+
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.javax.net.ssl.provider.Jessie;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Regression test for HTTPS functionality with newly integrated GNU Crypto in
+ * Classpath.
+ */
+public class TestOfHttps
+ implements Testlet
+{
+ // default 0-arguments constructor
+
+ public void test(TestHarness harness)
+ {
+ String msg = "MUST be able to verify X.509 certificates";
+ try
+ {
+ Security.addProvider(new Jessie());
+ Security.addProvider(new GnuCrypto());
+ URL u = new URL("https://www.paypal.com/");
+ InputStream in = u.openStream();
+ BufferedReader br = new BufferedReader(new InputStreamReader(in));
+ String line;
+ while ((line = br.readLine()) != null)
+ ; // do nothing
+
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java b/gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java
new file mode 100644
index 00000000..ec91b970
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfKeyFactory.java
@@ -0,0 +1,306 @@
+/* TestOfKeyFactory.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.spec.DSAPrivateKeySpec;
+import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.RSAPrivateCrtKeySpec;
+import java.security.spec.RSAPublicKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import javax.crypto.spec.DHPrivateKeySpec;
+import javax.crypto.spec.DHPublicKeySpec;
+
+/**
+ * Conformance tests for the JCE DSS and RSA key-factories.
+ */
+public class TestOfKeyFactory
+ implements Testlet
+{
+ private KeyPairGenerator dssKPG;
+ private KeyPairGenerator rsaKPG;
+ private KeyPairGenerator dhKPG;
+ private KeyFactory dssKF;
+ private KeyFactory rsaKF;
+ private KeyFactory dhKF;
+ private KeyFactory encKF;
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ testDSSKeyFactory(harness);
+ testRSAKeyFactory(harness);
+ testDHKeyFactory(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new Gnu());
+ Security.addProvider(new GnuCrypto());
+ try
+ {
+ dssKPG = KeyPairGenerator.getInstance(Registry.DSS_KPG,
+ Registry.GNU_SECURITY);
+ rsaKPG = KeyPairGenerator.getInstance(Registry.RSA_KPG,
+ Registry.GNU_SECURITY);
+ dhKPG = KeyPairGenerator.getInstance(Registry.DH_KPG,
+ Registry.GNU_CRYPTO);
+ dssKF = KeyFactory.getInstance(Registry.DSS_KPG, Registry.GNU_SECURITY);
+ rsaKF = KeyFactory.getInstance(Registry.RSA_KPG, Registry.GNU_SECURITY);
+ dhKF = KeyFactory.getInstance(Registry.DH_KPG, Registry.GNU_CRYPTO);
+ encKF = KeyFactory.getInstance("Encoded", Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void testDSSKeyFactory(TestHarness harness)
+ {
+ harness.checkPoint("testDSSKeyFactory");
+
+ dssKPG.initialize(512);
+ KeyPair kp = dssKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid DSS keypair");
+
+ PublicKey p1, p2, p3;
+ KeySpec spec1, spec2;
+ PrivateKey p4, p5, p6;
+ String msg;
+
+ p1 = kp.getPublic();
+ try
+ {
+ spec1 = dssKF.getKeySpec(p1, DSAPublicKeySpec.class);
+ p2 = encKF.generatePublic(spec1);
+ harness.check(p2.equals(p1), "Two DSS public keys MUST be equal");
+
+ spec2 = dssKF.getKeySpec(p1, X509EncodedKeySpec.class);
+ p3 = encKF.generatePublic(spec2);
+ harness.check(p3.equals(p2), "Two decoded DSS public keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded DSS public keys");
+ }
+
+ msg = "MUST NOT emit PKCS#8 encoding for DSS public key";
+ try
+ {
+ dssKF.getKeySpec(p1, PKCS8EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+
+ p4 = kp.getPrivate();
+ try
+ {
+ spec1 = dssKF.getKeySpec(p4, DSAPrivateKeySpec.class);
+ p5 = encKF.generatePrivate(spec1);
+ harness.check(p5.equals(p4), "Two DSS private keys MUST be equal");
+
+ spec2 = dssKF.getKeySpec(p4, PKCS8EncodedKeySpec.class);
+ p6 = encKF.generatePrivate(spec2);
+ harness.check(p6.equals(p5), "Two decoded DSS private keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded DSS private keys");
+ }
+
+ msg = "MUST NOT emit X.509 encoding for DSS private key";
+ try
+ {
+ dssKF.getKeySpec(p4, X509EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+ }
+
+ private void testRSAKeyFactory(TestHarness harness)
+ {
+ harness.checkPoint("testRSAKeyFactory");
+
+ rsaKPG.initialize(1024);
+ KeyPair kp = rsaKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid RSA keypair");
+
+ PublicKey p1, p2, p3;
+ KeySpec spec1, spec2;
+ PrivateKey p4, p5, p6;
+ String msg;
+
+ p1 = kp.getPublic();
+ try
+ {
+ spec1 = rsaKF.getKeySpec(p1, RSAPublicKeySpec.class);
+ p2 = encKF.generatePublic(spec1);
+ harness.check(p2.equals(p1), "Two RSA public keys MUST be equal");
+
+ spec2 = rsaKF.getKeySpec(p1, X509EncodedKeySpec.class);
+ p3 = encKF.generatePublic(spec2);
+ harness.check(p3.equals(p2), "Two decoded RSA public keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded RSA public keys");
+ }
+
+ msg = "MUST NOT emit PKCS#8 encoding for RSA public key";
+ try
+ {
+ rsaKF.getKeySpec(p1, PKCS8EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+
+ p4 = kp.getPrivate();
+ try
+ {
+ spec1 = rsaKF.getKeySpec(p4, RSAPrivateCrtKeySpec.class);
+ p5 = encKF.generatePrivate(spec1);
+ harness.check(p5.equals(p4), "Two RSA private keys MUST be equal");
+
+ spec2 = rsaKF.getKeySpec(p4, PKCS8EncodedKeySpec.class);
+ p6 = encKF.generatePrivate(spec2);
+ harness.check(p6.equals(p5), "Two decoded RSA private keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded RSA private keys");
+ }
+
+ msg = "MUST NOT emit X.509 encoding for RSA private key";
+ try
+ {
+ rsaKF.getKeySpec(p4, X509EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+ }
+
+ private void testDHKeyFactory(TestHarness harness)
+ {
+ harness.checkPoint("testDHKeyFactory");
+
+ dhKPG.initialize(512);
+ KeyPair kp = dhKPG.generateKeyPair();
+ harness.check(kp != null, "MUST generate valid DH keypair");
+
+ PublicKey p1, p2, p3;
+ KeySpec spec1, spec2;
+ PrivateKey p4, p5, p6;
+ String msg;
+
+ p1 = kp.getPublic();
+ try
+ {
+ spec1 = dhKF.getKeySpec(p1, DHPublicKeySpec.class);
+ p2 = encKF.generatePublic(spec1);
+ harness.check(p2.equals(p1), "Two DH public keys MUST be equal");
+
+ spec2 = dhKF.getKeySpec(p1, X509EncodedKeySpec.class);
+ p3 = encKF.generatePublic(spec2);
+ harness.check(p3.equals(p2), "Two decoded DH public keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded DH public keys");
+ }
+
+ msg = "MUST NOT emit PKCS#8 encoding for DH public key";
+ try
+ {
+ dhKF.getKeySpec(p1, PKCS8EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+
+ p4 = kp.getPrivate();
+ try
+ {
+ spec1 = dhKF.getKeySpec(p4, DHPrivateKeySpec.class);
+ p5 = encKF.generatePrivate(spec1);
+ harness.check(p5.equals(p4), "Two DH private keys MUST be equal");
+
+ spec2 = dhKF.getKeySpec(p4, PKCS8EncodedKeySpec.class);
+ p6 = encKF.generatePrivate(spec2);
+ harness.check(p6.equals(p5), "Two decoded DH private keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to generate encoded DH private keys");
+ }
+
+ msg = "MUST NOT emit X.509 encoding for DH private key";
+ try
+ {
+ dhKF.getKeySpec(p4, X509EncodedKeySpec.class);
+ harness.fail(msg);
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.check(true, msg);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java b/gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java
new file mode 100644
index 00000000..a13cba38
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfKeyPairGenerator.java
@@ -0,0 +1,190 @@
+/* TestOfKeyPairGenerator.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.Security;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.RSAPrivateCrtKey;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+
+/**
+ * Conformance tests for the JCE keypair generation implementations.<p>
+ */
+public class TestOfKeyPairGenerator implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownGenerator(harness);
+ checkJCEKeyPairGenerator(harness, "DSA");
+ checkJCEKeyPairGenerator(harness, "DSS");
+ testRSAKeyPairGenerator(harness);
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new Gnu()); // dynamically adds our provider
+ }
+
+ /** Should fail with an unknown algorithm. */
+ private void testUnknownGenerator(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownGenerator");
+ try
+ {
+ KeyPairGenerator.getInstance("ABC", Registry.GNU_SECURITY);
+ harness.fail("testUnknownGenerator()");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void checkJCEKeyPairGenerator(TestHarness harness, String algo)
+ {
+ harness.checkPoint("checkJCEKeyPairGenerator - " + algo);
+ try
+ {
+ KeyPairGenerator kpg =
+ KeyPairGenerator.getInstance(algo, Registry.GNU_SECURITY);
+
+ String msg = "L MUST be <= 1024 and of the form 512 + 64n";
+ try
+ {
+ kpg.initialize(530);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, msg);
+ }
+
+ kpg.initialize(512);
+ KeyPair kp = kpg.generateKeyPair();
+
+ BigInteger p1 = ((DSAPublicKey) kp.getPublic()).getParams().getP();
+ harness.check(p1.isProbablePrime(80), "p is probable prime - 512-bit");
+ BigInteger p2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getP();
+ harness.check(p1.equals(p2), "p1.equals(p2) - 512-bit");
+
+ BigInteger q1 = ((DSAPublicKey) kp.getPublic()).getParams().getQ();
+ harness.check(q1.isProbablePrime(80), "q is probable prime - 512-bit");
+ BigInteger q2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getQ();
+ harness.check(q1.equals(q2), "q1.equals(q2) - 512-bit");
+
+ BigInteger g1 = ((DSAPublicKey) kp.getPublic()).getParams().getG();
+ BigInteger g2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getG();
+ harness.check(g1.equals(g2), "g1.equals(g2) - 512-bit");
+
+ kp = kpg.generateKeyPair();
+ p2 = ((DSAPublicKey) kp.getPublic()).getParams().getP();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 512-bit (p)");
+ q2 = ((DSAPublicKey) kp.getPublic()).getParams().getQ();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 512-bit (q)");
+ g2 = ((DSAPublicKey) kp.getPublic()).getParams().getG();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 512-bit (g)");
+
+
+ kpg.initialize(1024);
+ kp = kpg.generateKeyPair();
+
+ p1 = ((DSAPublicKey) kp.getPublic()).getParams().getP();
+ harness.check(p1.isProbablePrime(80), "p is probable prime - 1024-bit");
+ p2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getP();
+ harness.check(p1.equals(p2), "p1.equals(p2) - 1024-bit");
+
+ q1 = ((DSAPublicKey) kp.getPublic()).getParams().getQ();
+ harness.check(q1.isProbablePrime(80), "q is probable prime - 1024-bit");
+ q2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getQ();
+ harness.check(q1.equals(q2), "q1.equals(q2) - 1024-bit");
+
+ g1 = ((DSAPublicKey) kp.getPublic()).getParams().getG();
+ g2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getG();
+ harness.check(g1.equals(g2), "g1.equals(g2) - 1024-bit");
+
+ kp = kpg.generateKeyPair();
+ p2 = ((DSAPublicKey) kp.getPublic()).getParams().getP();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 1024-bit (p)");
+ q2 = ((DSAPublicKey) kp.getPublic()).getParams().getQ();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 1024-bit (q)");
+ g2 = ((DSAPublicKey) kp.getPublic()).getParams().getG();
+ harness.check(p1.equals(p2), "MUST provide default params for L = 1024-bit (g)");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("checkJCEKeyPairGenerator - " + algo);
+ }
+ }
+
+ private void testRSAKeyPairGenerator(TestHarness harness)
+ {
+ harness.checkPoint("testRSAKeyPairGenerator");
+ try
+ {
+ KeyPairGenerator kpg =
+ KeyPairGenerator.getInstance("RSA", Registry.GNU_SECURITY);
+
+ // modulus length should be at least 1024
+ try
+ {
+ kpg.initialize(1023);
+ harness.fail("L should be >= 1024");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "L should be >= 1024");
+ }
+
+ kpg.initialize(1024);
+ KeyPair kp = kpg.generateKeyPair();
+
+ BigInteger n1 = ((RSAPublicKey) kp.getPublic()).getModulus();
+
+ BigInteger n2 = ((RSAPrivateKey) kp.getPrivate()).getModulus();
+ BigInteger p = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeP();
+ BigInteger q = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeQ();
+
+ harness.check(n1.equals(p.multiply(q)), "n1 == pq");
+ harness.check(n2.equals(p.multiply(q)), "n2 == pq");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testRSAKeyPairGenerator()");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfMessageDigest.java b/gnu/testlet/gnu/java/security/jce/TestOfMessageDigest.java
new file mode 100644
index 00000000..c2149d33
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfMessageDigest.java
@@ -0,0 +1,158 @@
+/* TestOfMessageDigest.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.hash.HashFactory;
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.MessageDigest;
+import java.security.Security;
+import java.util.Arrays;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the JCE Provider implementations of MessageDigest
+ * SPI classes.
+ */
+public class TestOfMessageDigest implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownHash(harness);
+ testEquality(harness);
+ testCloneability(harness);
+ }
+
+ /** Should fail with an unknown algorithm. */
+ public void testUnknownHash(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownHash");
+ try
+ {
+ MessageDigest.getInstance("Gaudot", Registry.GNU_SECURITY);
+ harness.fail("testUnknownHash()");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Tests if the result of using a hash through gnu.crypto Factory classes
+ * yields same value as using instances obtained the JCE way.
+ */
+ public void testEquality(TestHarness harness)
+ {
+ harness.checkPoint("testEquality");
+ String mdName;
+ IMessageDigest gnu = null;
+ MessageDigest jce = null;
+ byte[] in = this.getClass().getName().getBytes();
+ byte[] ba1, ba2;
+ for (Iterator it = HashFactory.getNames().iterator(); it.hasNext();)
+ {
+ mdName = (String) it.next();
+ try
+ {
+ gnu = HashFactory.getInstance(mdName);
+ harness.check(gnu != null, "HashFactory.getInstance(" + mdName
+ + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.fail("HashFactory.getInstance(" + mdName + "): "
+ + String.valueOf(x));
+ }
+
+ try
+ {
+ jce = MessageDigest.getInstance(mdName, Registry.GNU_SECURITY);
+ harness.check(jce != null, "MessageDigest.getInstance()");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("MessageDigest.getInstance(" + mdName + "): "
+ + String.valueOf(x));
+ }
+
+ gnu.update(in, 0, in.length);
+ ba1 = gnu.digest();
+ ba2 = jce.digest(in);
+
+ harness.check(Arrays.equals(ba1, ba2), "testEquality(" + mdName + ")");
+ }
+ }
+
+ /**
+ * Tests if the result of a cloned, partially in-progress hash instance, when
+ * used later to further process data, yields the same result as the original
+ * copy.
+ */
+ public void testCloneability(TestHarness harness)
+ {
+ harness.checkPoint("testCloneability");
+ String mdName;
+ MessageDigest md1, md2;
+ byte[] abc = "abc".getBytes();
+ byte[] in = this.getClass().getName().getBytes();
+ byte[] ba1, ba2;
+// for (Iterator it = Gnu.getMessageDigestNames().iterator(); it.hasNext();)
+ for (Iterator it = Security.getAlgorithms("MessageDigest").iterator(); it.hasNext();)
+ {
+ mdName = (String) it.next();
+ try
+ {
+ md1 = MessageDigest.getInstance(mdName, Registry.GNU_SECURITY);
+
+ md1.update(abc); // start with abc
+ md2 = (MessageDigest) md1.clone(); // now clone it
+
+ ba1 = md1.digest(in); // now finish both with in
+ ba2 = md2.digest(in);
+
+ harness.check(Arrays.equals(ba1, ba2), "testCloneability(" + mdName
+ + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testCloneability(" + mdName + "): "
+ + String.valueOf(x));
+ }
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new Gnu()); // dynamically adds our provider
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfProvider.java b/gnu/testlet/gnu/java/security/jce/TestOfProvider.java
new file mode 100644
index 00000000..3a1e9507
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfProvider.java
@@ -0,0 +1,162 @@
+/* TestOfProvider.java -- FIXME: describe
+ Copyright (C) 2006 FIXME: your info here
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.MessageDigest;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.util.Iterator;
+import java.util.Random;
+
+/**
+ * Conformance tests for the (standard) JCE Provider implementation.
+ */
+public class TestOfProvider implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testProviderName(harness);
+ testSha(harness);
+ testWhirlpool(harness);
+ testShaPRNG(harness);
+ testWhirlpoolPRNG(harness);
+ testGNUSecureRandoms(harness);
+ }
+
+ public void testProviderName(TestHarness harness)
+ {
+ harness.checkPoint("testProviderName");
+ Provider us = Security.getProvider(Registry.GNU_SECURITY);
+ harness.check(Registry.GNU_SECURITY.equals(us.getName()));
+ }
+
+ public void testSha(TestHarness harness)
+ {
+ harness.checkPoint("testSha");
+ try
+ {
+ MessageDigest md =
+ MessageDigest.getInstance("SHA", Registry.GNU_SECURITY);
+ harness.check(md != null);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testSha()");
+ }
+ }
+
+ public void testWhirlpool(TestHarness harness)
+ {
+ harness.checkPoint("testWhirlpool");
+ try
+ {
+ MessageDigest md =
+ MessageDigest.getInstance("Whirlpool", Registry.GNU_SECURITY);
+ harness.check(md != null);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testWhirlpool()");
+ }
+ }
+
+ public void testShaPRNG(TestHarness harness)
+ {
+ harness.checkPoint("testShaPRNG");
+ try
+ {
+ SecureRandom rnd =
+ SecureRandom.getInstance("SHA1PRNG", Registry.GNU_SECURITY);
+ harness.check(rnd != null);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testShaPRNG()");
+ }
+ }
+
+ public void testWhirlpoolPRNG(TestHarness harness)
+ {
+ harness.checkPoint("testWhirlpoolPRNG");
+ try
+ {
+ SecureRandom rnd =
+ SecureRandom.getInstance("WHIRLPOOLPRNG", Registry.GNU_SECURITY);
+ harness.check(rnd != null);
+ }
+ catch (Exception x)
+ {
+ x.printStackTrace(System.err);
+ harness.fail("testWhirlpoolPRNG()");
+ }
+ }
+
+ public void testGNUSecureRandoms(TestHarness harness)
+ {
+ harness.checkPoint("testGNUSecureRandoms");
+ String rand;
+ Random algorithm;
+ for (Iterator it = Security.getAlgorithms("SecureRandom").iterator(); it.hasNext();)
+ {
+ rand = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = SecureRandom.getInstance(rand, Registry.GNU_SECURITY);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(rand) + ")");
+ }
+ catch (NoSuchProviderException x)
+ {
+ harness.fail("getInstance(" + String.valueOf(rand) + "): "
+ + String.valueOf(x));
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail("getInstance(" + String.valueOf(rand) + "): "
+ + String.valueOf(x));
+ }
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new Gnu()); // dynamically adds our provider
+ Security.removeProvider(Registry.GNU_CRYPTO);
+ Security.removeProvider(Registry.GNU_SASL);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/jce/TestOfSignature.java b/gnu/testlet/gnu/java/security/jce/TestOfSignature.java
new file mode 100644
index 00000000..664a13f7
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/jce/TestOfSignature.java
@@ -0,0 +1,163 @@
+/* TestOfSignature.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.provider.Gnu;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.Security;
+import java.security.Signature;
+
+/**
+ * Conformance tests for the JCE signature scheme implementations.<p>
+ */
+public class TestOfSignature implements Testlet
+{
+ private static final byte[] MESSAGE = "Que du magnifique...".getBytes();
+
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownScheme(harness);
+ testDSSSignatures(harness);
+ testRSAPSSRawSignature(harness);
+ testRSAPKCS1Signatures(harness);
+ }
+
+ /** Should fail with an unknown scheme. */
+ public void testUnknownScheme(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownScheme");
+ try
+ {
+ Signature.getInstance("ABC", Registry.GNU_SECURITY);
+ harness.fail("testUnknownScheme()");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+
+ public void testDSSSignatures(TestHarness harness)
+ {
+ KeyPairGenerator kpg = null;
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.DSS_KPG,
+ Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to get a DSS key-pair generator");
+ }
+
+ kpg.initialize(512);
+ KeyPair kp = kpg.generateKeyPair();
+
+ testSignature(harness, "DSS/RAW", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "SHA160withDSS", Registry.GNU_SECURITY, kp);
+ }
+
+ public void testRSAPSSRawSignature(TestHarness harness)
+ {
+ KeyPairGenerator kpg = null;
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.RSA_KPG,
+ Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to get an RSA key-pair generator");
+ }
+
+ kpg.initialize(1024);
+ KeyPair kp = kpg.generateKeyPair();
+
+ testSignature(harness, "RSA-PSS/RAW", Registry.GNU_SECURITY, kp);
+ }
+
+ private void testRSAPKCS1Signatures(TestHarness harness)
+ {
+ KeyPairGenerator kpg = null;
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.RSA_KPG,
+ Registry.GNU_SECURITY);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Unable to get an RSA key-pair generator");
+ }
+
+ kpg.initialize(1024);
+ KeyPair kp = kpg.generateKeyPair();
+
+ testSignature(harness, "MD2withRSA", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "MD5withRSA", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "SHA160withRSA", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "SHA256withRSA", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "SHA384withRSA", Registry.GNU_SECURITY, kp);
+ testSignature(harness, "SHA512withRSA", Registry.GNU_SECURITY, kp);
+ }
+
+ private void testSignature(TestHarness harness, String sigName,
+ String provider, KeyPair kp)
+ {
+ String msg = "Signature " + sigName + " provided by " + provider;
+ try
+ {
+ Signature alice = Signature.getInstance(sigName, provider);
+ Signature bob = Signature.getInstance(sigName, provider);
+
+ alice.initSign(kp.getPrivate());
+ alice.update(MESSAGE);
+ byte[] signature = alice.sign();
+
+ bob.initVerify(kp.getPublic());
+ bob.update(MESSAGE);
+
+ harness.check(bob.verify(signature), msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new Gnu()); // dynamically adds our provider
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/key/CVS/Entries b/gnu/testlet/gnu/java/security/key/CVS/Entries
new file mode 100644
index 00000000..0ee30b0a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfKeyPairCodecFactory.java/1.1/Sun Feb 19 02:02:38 2006//
+/TestOfKeyPairGeneratorFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/key/CVS/Entries.Log b/gnu/testlet/gnu/java/security/key/CVS/Entries.Log
new file mode 100644
index 00000000..f2cc87eb
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dss////
+A D/rsa////
diff --git a/gnu/testlet/gnu/java/security/key/CVS/Repository b/gnu/testlet/gnu/java/security/key/CVS/Repository
new file mode 100644
index 00000000..3d438f23
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/key
diff --git a/gnu/testlet/gnu/java/security/key/CVS/Root b/gnu/testlet/gnu/java/security/key/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/key/TestOfKeyPairCodecFactory.java b/gnu/testlet/gnu/java/security/key/TestOfKeyPairCodecFactory.java
new file mode 100644
index 00000000..8d2d4fcc
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/TestOfKeyPairCodecFactory.java
@@ -0,0 +1,87 @@
+/* TestOfKeyPairCodecFactory.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key;
+
+import java.util.Iterator;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.IKeyPairCodec;
+import gnu.java.security.key.KeyPairCodecFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class TestOfKeyPairCodecFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testGetNames(harness);
+ testSpecificNames(harness);
+ }
+
+ private void testGetNames(TestHarness harness)
+ {
+ harness.checkPoint("testGetNames");
+
+ for (Iterator it = KeyPairCodecFactory.getNames().iterator(); it.hasNext();)
+ getCodec(harness, (String) it.next());
+ }
+
+ private void testSpecificNames(TestHarness harness)
+ {
+ harness.checkPoint("testSpecificNames");
+
+ getCodec(harness, Registry.DSS_KPG + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.DSS_KPG + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.DSS_KPG + "/" + Registry.PKCS8_ENCODING_SHORT_NAME);
+
+ getCodec(harness, Registry.RSA_KPG + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_KPG + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_KPG + "/" + Registry.PKCS8_ENCODING_SHORT_NAME);
+
+ getCodec(harness, Registry.DH_KPG + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.DH_KPG + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.DH_KPG + "/" + Registry.PKCS8_ENCODING_SHORT_NAME);
+
+ getCodec(harness, Registry.SRP_KPG + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ }
+
+ private IKeyPairCodec getCodec(TestHarness harness, String codecName)
+ {
+ String msg = "Key-pair codec \"" + codecName + "\" MUST succeed";
+ IKeyPairCodec result = null;
+ try
+ {
+ result = KeyPairCodecFactory.getInstance(codecName);
+ harness.check(result != null, msg);
+ return result;
+ }
+ catch (RuntimeException x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ return result;
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/key/TestOfKeyPairGeneratorFactory.java b/gnu/testlet/gnu/java/security/key/TestOfKeyPairGeneratorFactory.java
new file mode 100644
index 00000000..8281fd9a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/TestOfKeyPairGeneratorFactory.java
@@ -0,0 +1,60 @@
+/* TestOfKeyPairGeneratorFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key;
+
+import gnu.java.security.key.IKeyPairGenerator;
+import gnu.java.security.key.KeyPairGeneratorFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the KeyPairGeneratorFactory implementation.
+ */
+public class TestOfKeyPairGeneratorFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfKeyPairGeneratorFactory");
+ String kpg;
+ IKeyPairGenerator algorithm;
+ for (Iterator it = KeyPairGeneratorFactory.getNames().iterator(); it.hasNext();)
+ {
+ kpg = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = KeyPairGeneratorFactory.getInstance(kpg);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(kpg) + ")");
+ }
+ catch (RuntimeException x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfKeyPairGeneratorFactory.getInstance("
+ + String.valueOf(kpg) + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/key/dss/CVS/Entries b/gnu/testlet/gnu/java/security/key/dss/CVS/Entries
new file mode 100644
index 00000000..3d37d1f6
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/dss/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfDSSCodec.java/1.3/Thu Feb 9 12:12:27 2006//
+/TestOfDSSKeyGeneration.java/1.2/Sun Jun 18 02:52:13 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/key/dss/CVS/Repository b/gnu/testlet/gnu/java/security/key/dss/CVS/Repository
new file mode 100644
index 00000000..8beb62fe
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/dss/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/key/dss
diff --git a/gnu/testlet/gnu/java/security/key/dss/CVS/Root b/gnu/testlet/gnu/java/security/key/dss/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/dss/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java b/gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java
new file mode 100644
index 00000000..5776157a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/dss/TestOfDSSCodec.java
@@ -0,0 +1,185 @@
+/* TestOfDSSCodec.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key.dss;
+
+import gnu.java.security.key.IKeyPairCodec;
+import gnu.java.security.key.dss.DSSKeyPairGenerator;
+import gnu.java.security.key.dss.DSSKeyPairPKCS8Codec;
+import gnu.java.security.key.dss.DSSKeyPairRawCodec;
+import gnu.java.security.key.dss.DSSKeyPairX509Codec;
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.dss.DSSPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the DSS key format encoding/decoding implementation.
+ */
+public class TestOfDSSCodec implements Testlet
+{
+ private HashMap map;
+ private DSSKeyPairGenerator kpg = new DSSKeyPairGenerator();
+ private KeyPair kp;
+
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownKeyPairCodec(harness);
+ testKeyPairRawCodec(harness);
+ testKeyPairASN1Codec(harness);
+ testPublicKeyValueOf(harness);
+ testPrivateKeyValueOf(harness);
+ }
+
+ private void testUnknownKeyPairCodec(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownKeyPairCodec");
+
+ kp = kpg.generate();
+
+ DSAPublicKey pubK = (DSAPublicKey) kp.getPublic();
+ try
+ {
+ ((DSSPublicKey) pubK).getEncoded(0);
+ harness.fail("Public key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown public key format ID");
+ }
+
+ DSAPrivateKey secK = (DSAPrivateKey) kp.getPrivate();
+ try
+ {
+ ((DSSPrivateKey) secK).getEncoded(0);
+ harness.fail("Private key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown private key format ID");
+ }
+ }
+
+ private void testKeyPairRawCodec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairRawCodec");
+
+ kp = kpg.generate();
+
+ IKeyPairCodec codec = new DSSKeyPairRawCodec();
+ byte[] pk;
+
+ DSAPublicKey pubK = (DSAPublicKey) kp.getPublic();
+ pk = ((DSSPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey newPubK = codec.decodePublicKey(pk);
+ harness.check(pubK.equals(newPubK),
+ "DSS public key Raw encoder/decoder test");
+
+ DSAPrivateKey secK = (DSAPrivateKey) kp.getPrivate();
+ pk = ((DSSPrivateKey) secK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey newSecK = codec.decodePrivateKey(pk);
+ harness.check(secK.equals(newSecK),
+ "DSS private key Raw encoder/decoder test");
+ }
+
+ private void testKeyPairASN1Codec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairASN1Codec");
+
+ kp = kpg.generate();
+
+ byte[] pk;
+
+ DSAPublicKey pubK = (DSAPublicKey) kp.getPublic();
+ DSAPrivateKey secK = (DSAPrivateKey) kp.getPrivate();
+
+ pk = ((DSSPrivateKey) secK).getEncoded(IKeyPairCodec.PKCS8_FORMAT);
+ PrivateKey newSecK = new DSSKeyPairPKCS8Codec().decodePrivateKey(pk);
+ harness.check(secK.equals(newSecK),
+ "DSS private key ASN.1 encoder/decoder test");
+
+ pk = ((DSSPublicKey) pubK).getEncoded(IKeyPairCodec.X509_FORMAT);
+ PublicKey newPubK = new DSSKeyPairX509Codec().decodePublicKey(pk);
+ harness.check(pubK.equals(newPubK),
+ "DSS public key ASN.1 encoder/decoder test");
+ }
+
+ private void testPublicKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPublicKeyValueOf");
+
+ kp = kpg.generate();
+ byte[] pk;
+
+ DSAPublicKey p1 = (DSAPublicKey) kp.getPublic();
+
+ pk = ((DSSPublicKey) p1).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey p2 = DSSPublicKey.valueOf(pk);
+ harness.check(p1.equals(p2),
+ "DSS public key valueOf(<raw-value>) test");
+
+ pk = ((DSSPublicKey) p1).getEncoded(IKeyPairCodec.X509_FORMAT);
+ PublicKey p3 = DSSPublicKey.valueOf(pk);
+ harness.check(p1.equals(p3),
+ "DSS public key valueOf(<x509-value>) test");
+ }
+
+ private void testPrivateKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPrivateKeyValueOf");
+
+ kp = kpg.generate();
+ byte[] pk;
+
+ DSAPrivateKey p1 = (DSAPrivateKey) kp.getPrivate();
+
+ pk = ((DSSPrivateKey) p1).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey p2 = DSSPrivateKey.valueOf(pk);
+ harness.check(p1.equals(p2),
+ "DSS private key valueOf(<raw-value>) test");
+
+ pk = ((DSSPrivateKey) p1).getEncoded(IKeyPairCodec.PKCS8_FORMAT);
+ PrivateKey p3 = DSSPrivateKey.valueOf(pk);
+ harness.check(p1.equals(p3),
+ "DSS private key valueOf(<pkcs8-value>) test");
+ }
+
+ private void setUp()
+ {
+ map = new HashMap();
+ map.put(DSSKeyPairGenerator.MODULUS_LENGTH, new Integer(512));
+ map.put(DSSKeyPairGenerator.USE_DEFAULTS, new Boolean(false));
+
+ kpg = new DSSKeyPairGenerator();
+ kpg.setup(map);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/key/dss/TestOfDSSKeyGeneration.java b/gnu/testlet/gnu/java/security/key/dss/TestOfDSSKeyGeneration.java
new file mode 100644
index 00000000..6073ea9e
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/dss/TestOfDSSKeyGeneration.java
@@ -0,0 +1,78 @@
+/* TestOfDSSKeyGeneration.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key.dss;
+
+import gnu.java.security.key.dss.DSSKeyPairGenerator;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the DSS key-pair generation implementation.
+ */
+public class TestOfDSSKeyGeneration implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDSSKeyGeneration");
+ DSSKeyPairGenerator kpg = new DSSKeyPairGenerator();
+ HashMap map = new HashMap();
+ map.put(DSSKeyPairGenerator.MODULUS_LENGTH, new Integer(530));
+
+ try
+ {
+ kpg.setup(map);
+ harness.fail("L should be <= 1024 and of the form 512 + 64n");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "L should be <= 1024 and of the form 512 + 64n");
+ }
+
+ map.put(DSSKeyPairGenerator.MODULUS_LENGTH, new Integer(512));
+ map.put(DSSKeyPairGenerator.USE_DEFAULTS, new Boolean(false));
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ BigInteger p1 = ((DSAPublicKey) kp.getPublic()).getParams().getP();
+ BigInteger p2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getP();
+ harness.check(p1.equals(p2), "p1.equals(p2)");
+
+ BigInteger q1 = ((DSAPublicKey) kp.getPublic()).getParams().getQ();
+ BigInteger q2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getQ();
+ harness.check(q1.equals(q2), "q1.equals(q2)");
+
+ BigInteger g1 = ((DSAPublicKey) kp.getPublic()).getParams().getG();
+ BigInteger g2 = ((DSAPrivateKey) kp.getPrivate()).getParams().getG();
+ harness.check(g1.equals(g2), "g1.equals(g2)");
+
+ harness.check(q1.isProbablePrime(80), "q is probable prime");
+ harness.check(p1.isProbablePrime(80), "p is probable prime");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/key/rsa/CVS/Entries b/gnu/testlet/gnu/java/security/key/rsa/CVS/Entries
new file mode 100644
index 00000000..5810a1bc
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfPR28556.java/1.2/Wed Aug 2 03:28:04 2006//
+/TestOfRSACodec.java/1.2/Thu Feb 9 12:12:27 2006//
+/TestOfRSAKeyGeneration.java/1.2/Sun Jun 18 02:52:13 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/key/rsa/CVS/Repository b/gnu/testlet/gnu/java/security/key/rsa/CVS/Repository
new file mode 100644
index 00000000..0c467ca5
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/key/rsa
diff --git a/gnu/testlet/gnu/java/security/key/rsa/CVS/Root b/gnu/testlet/gnu/java/security/key/rsa/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java b/gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java
new file mode 100644
index 00000000..6041ae17
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/TestOfPR28556.java
@@ -0,0 +1,100 @@
+/* TestOfPR28556.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key.rsa;
+
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyFactory;
+import java.security.spec.PKCS8EncodedKeySpec;
+
+/**
+ * Regression test for PR Classpath/28556
+ */
+public class TestOfPR28556
+ implements Testlet
+{
+ private static final String RSA_KEY_DER =
+ "\u3082\u0278\u0201\u0030\u0d06\u092a\u8648\u86f7"
+ + "\u0d01\u0101\u0500\u0482\u0262\u3082\u025e\u0201"
+ + "\u0002\u8181\u00b9\u616a\uf64f\uc22e\u1221\uf11b"
+ + "\u34f7\u3198\uc49d\u5e2c\u1298\ue268\u3068\udfeb"
+ + "\u49cd\u08e7\ud0e6\uc079\udca5\uc084\uacb1\u7dc9"
+ + "\ufd7c\u2c13\uf78f\u2083\ua681\uebaf\u59e2\uff43"
+ + "\ud6cc\u63f1\u55b4\u2a1e\u2d90\u2728\uc6b5\ueddb"
+ + "\u9eac\u5bce\u7edf\ude12\ubb79\u11de\u1305\ua474"
+ + "\uf074\ue0c9\u54e8\u216d\u422a\u1e49\u1810\u7b9f"
+ + "\ube8f\u03b1\u4cbb\u868b\uf161\uda93\ue8e2\uca0e"
+ + "\udb2c\ubc0c\u0102\u0301\u0001\u0281\u8100\ua986"
+ + "\ua8e6\u2ef2\u0867\u949a\u84a2\udf1b\u7ff4\ued64"
+ + "\u5d31\u7496\u3769\u6dbe\ub7d0\u79ac\u1732\u3692"
+ + "\uf5de\u0dc6\u0c8e\u5092\u13d1\ub768\u27aa\u503d"
+ + "\u0fa7\u8950\u1abf\u3c92\ueb5a\ud6f6\ude8e\u4e3e"
+ + "\uda86\uc782\uc550\u24d6\ue3be\u87a2\u03d9\u260e"
+ + "\u9b30\u245f\uf458\u02ac\uc824\uf547\u7bee\u73e2"
+ + "\u767c\ude28\ue10b\u479d\ufc39\uc52c\u67d1\u7d19"
+ + "\u22a1\u26de\uf7cd\u5bc7\uc9f5\uf4f0\u2771\u0241"
+ + "\u00e8\u3e09\u11bd\ufd4d\u53f6\u7e86\u42c7\u208c"
+ + "\ufb33\u8cfa\u6ffd\u984a\u2615\u5146\uba79\u7fd5"
+ + "\u95f0\u3fff\u85d0\ue984\u90b7\u544f\u3a74\u2ee7"
+ + "\u7f54\uc2ca\u9d5b\uf626\u7714\u4565\ua303\uff6f"
+ + "\u3702\u4100\ucc58\u2a56\uf26e\ub17d\u54f9\ud8ee"
+ + "\ub386\u9fe6\ub213\u68b5\u01ec\uaa90\u8f0c\uff03"
+ + "\u067b\u9586\u7b8f\u0799\u2a62\u0830\u4f27\u2092"
+ + "\udc75\u38cd\u5d03\ub139\u3108\ub4f2\ubd5b\ue2e4"
+ + "\uf471\uca87\u0241\u00dc\u3aaf\u98fe\u842c\u8719"
+ + "\u7143\uda21\u4051\ud088\u4300\udda0\u2a80\uedfa"
+ + "\u3b17\u8a0f\u5b54\uec19\u6666\ue5bb\u8525\uaba1"
+ + "\uddb6\u3fe5\u1af1\u75c2\ua7f1\u4125\u8a97\u5146"
+ + "\u8cc4\u63c0\u8fc2\u2302\u4045\u0389\ud92f\uabbe"
+ + "\ufa2b\u56ee\ub33f\ua2ba\u227a\u0620\u18f1\ufb72"
+ + "\u67bc\u4891\u5ffe\u3282\uff96\u7f69\ufb8a\udaed"
+ + "\u1513\uc68d\u33cc\u8d32\u8ff9\u5823\ue4c2\uf0c3"
+ + "\udc2f\ua3f6\uef88\ub75d\uc502\u4100\ucef4\udc8e"
+ + "\u88b5\ud482\uf24f\udc2d\u5320\u0705\u5c23\ua799"
+ + "\ua366\uf5d8\ube2a\ub841\uecae\uec7a\u6a7d\uee48"
+ + "\u2e6b\u6d17\u816c\u2945\u53d1\u931b\ue7c6\u2720"
+ + "\u6b8d\ud887\u7d9e\ud38b\ue11f\u49e2";
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR28556");
+ KeyFactory kf;
+ PKCS8EncodedKeySpec spec;
+ try
+ {
+ kf = KeyFactory.getInstance("RSA");
+ spec = new PKCS8EncodedKeySpec(Util.toBytesFromUnicode(RSA_KEY_DER));
+ kf.generatePrivate(spec);
+ harness.check(true,
+ "MUST be able to parse generated OpenSSL RSA private key");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPR28556: " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/key/rsa/TestOfRSACodec.java b/gnu/testlet/gnu/java/security/key/rsa/TestOfRSACodec.java
new file mode 100644
index 00000000..ce17cdfa
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/TestOfRSACodec.java
@@ -0,0 +1,182 @@
+/* TestOfRSACodec.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key.rsa;
+
+import gnu.java.security.key.IKeyPairCodec;
+import gnu.java.security.key.rsa.GnuRSAPrivateKey;
+import gnu.java.security.key.rsa.GnuRSAPublicKey;
+import gnu.java.security.key.rsa.RSAKeyPairGenerator;
+import gnu.java.security.key.rsa.RSAKeyPairPKCS8Codec;
+import gnu.java.security.key.rsa.RSAKeyPairRawCodec;
+import gnu.java.security.key.rsa.RSAKeyPairX509Codec;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the RSA key format encoding/decoding implementations.
+ */
+public class TestOfRSACodec implements Testlet
+{
+ private HashMap map;
+ private RSAKeyPairGenerator kpg;
+ private KeyPair kp;
+
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownKeyPairCodec(harness);
+ testKeyPairRawCodec(harness);
+ testKeyPairASN1Codec(harness);
+ testPrivateKeyValueOf(harness);
+ testPublicKeyValueOf(harness);
+ }
+
+ private void testUnknownKeyPairCodec(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownKeyPairCodec");
+
+ kp = kpg.generate();
+
+ GnuRSAPublicKey pubK = (GnuRSAPublicKey) kp.getPublic();
+ try
+ {
+ ((GnuRSAPublicKey) pubK).getEncoded(0);
+ harness.fail("Public key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown public key format ID");
+ }
+
+ GnuRSAPrivateKey secK = (GnuRSAPrivateKey) kp.getPrivate();
+ try
+ {
+ ((GnuRSAPrivateKey) secK).getEncoded(0);
+ harness.fail("Private key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown private key format ID");
+ }
+ }
+
+ public void testKeyPairRawCodec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairRawCodec");
+
+ byte[] pk;
+ IKeyPairCodec codec = new RSAKeyPairRawCodec();
+ kp = kpg.generate();
+
+ RSAPublicKey pubK = (RSAPublicKey) kp.getPublic();
+ pk = ((GnuRSAPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey newPubK = codec.decodePublicKey(pk);
+ harness.check(pubK.equals(newPubK),
+ "RSA public key Raw encoder/decoder test");
+
+ RSAPrivateKey secK = (RSAPrivateKey) kp.getPrivate();
+ pk = ((GnuRSAPrivateKey) secK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey newSecK = codec.decodePrivateKey(pk);
+ harness.check(secK.equals(newSecK),
+ "RSA private key Raw encoder/decoder test");
+ }
+
+ private void testKeyPairASN1Codec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairASN1Codec");
+
+ kp = kpg.generate();
+
+ byte[] pk;
+
+ RSAPublicKey pubK = (RSAPublicKey) kp.getPublic();
+ pk = ((GnuRSAPublicKey) pubK).getEncoded(IKeyPairCodec.X509_FORMAT);
+ PublicKey newPubK = new RSAKeyPairX509Codec().decodePublicKey(pk);
+ harness.check(pubK.equals(newPubK),
+ "RSA public key ASN.1 encoder/decoder test");
+
+ RSAPrivateKey secK = (RSAPrivateKey) kp.getPrivate();
+ pk = ((GnuRSAPrivateKey) secK).getEncoded(IKeyPairCodec.PKCS8_FORMAT);
+ PrivateKey newSecK = new RSAKeyPairPKCS8Codec().decodePrivateKey(pk);
+ harness.check(secK.equals(newSecK),
+ "RSA private key ASN.1 encoder/decoder test");
+ }
+
+ public void testPublicKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPublicKeyValueOf");
+
+ byte[] pk;
+ kp = kpg.generate();
+
+ RSAPublicKey p1 = (RSAPublicKey) kp.getPublic();
+
+ pk = ((GnuRSAPublicKey) p1).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey p2 = GnuRSAPublicKey.valueOf(pk);
+ harness.check(p1.equals(p2),
+ "RSA public key valueOf(<raw-value>) test");
+
+ pk = ((GnuRSAPublicKey) p1).getEncoded(IKeyPairCodec.X509_FORMAT);
+ PublicKey p3 = GnuRSAPublicKey.valueOf(pk);
+ harness.check(p1.equals(p3),
+ "RSA public key valueOf(<x509-value>) test");
+ }
+
+ public void testPrivateKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPrivateKeyValueOf");
+
+ byte[] pk;
+ kp = kpg.generate();
+
+ RSAPrivateKey p1 = (RSAPrivateKey) kp.getPrivate();
+
+ pk = ((GnuRSAPrivateKey) p1).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey p2 = GnuRSAPrivateKey.valueOf(pk);
+ harness.check(p1.equals(p2),
+ "RSA private key valueOf(<raw-value>) test");
+
+ pk = ((GnuRSAPrivateKey) p1).getEncoded(IKeyPairCodec.PKCS8_FORMAT);
+ PrivateKey p3 = GnuRSAPrivateKey.valueOf(pk);
+ harness.check(p1.equals(p3),
+ "RSA private key valueOf(<pkcs8-value>) test");
+ }
+
+ private void setUp()
+ {
+ map = new HashMap();
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024));
+
+ kpg = new RSAKeyPairGenerator();
+ kpg.setup(map);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/key/rsa/TestOfRSAKeyGeneration.java b/gnu/testlet/gnu/java/security/key/rsa/TestOfRSAKeyGeneration.java
new file mode 100644
index 00000000..7fcc1e15
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/key/rsa/TestOfRSAKeyGeneration.java
@@ -0,0 +1,201 @@
+/* TestOfRSAKeyGeneration.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.key.rsa;
+
+import gnu.java.security.key.rsa.RSAKeyPairGenerator;
+import gnu.java.security.sig.rsa.RSA;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPrivateCrtKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+import java.util.Random;
+
+/**
+ * Conformance tests for the RSA key-pair generation implementation.
+ */
+public class TestOfRSAKeyGeneration implements Testlet
+{
+ private static final BigInteger ZERO = BigInteger.ZERO;
+
+ private static final BigInteger ONE = BigInteger.ONE;
+
+ private RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
+
+ private HashMap map = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ testKeyPairGeneration(harness);
+ testRSAParams(harness);
+ testRSAPrimitives(harness);
+ }
+
+ public void testKeyPairGeneration(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAKeyGeneration.testKeyPairGeneration");
+ try
+ {
+ setUp();
+
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(530));
+ try
+ {
+ kpg.setup(map);
+ harness.fail("L should be >= 1024");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "L should be >= 1024");
+ }
+
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024));
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ BigInteger n1 = ((RSAPublicKey) kp.getPublic()).getModulus();
+
+ BigInteger n2 = ((RSAPrivateKey) kp.getPrivate()).getModulus();
+ BigInteger p = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeP();
+ BigInteger q = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeQ();
+
+ harness.check(n1.equals(p.multiply(q)), "n1 == pq");
+ harness.check(n2.equals(p.multiply(q)), "n2 == pq");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testKeyPairGeneration");
+ }
+ }
+
+ public void testRSAParams(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAKeyGeneration.testRSAParams");
+ try
+ {
+ setUp();
+
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024));
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ BigInteger n1 = ((RSAPublicKey) kp.getPublic()).getModulus();
+ BigInteger e = ((RSAPublicKey) kp.getPublic()).getPublicExponent();
+
+ BigInteger n2 = ((RSAPrivateKey) kp.getPrivate()).getModulus();
+ BigInteger d = ((RSAPrivateKey) kp.getPrivate()).getPrivateExponent();
+
+ BigInteger p = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeP();
+ BigInteger q = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeQ();
+ BigInteger dP = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeExponentP();
+ BigInteger dQ = ((RSAPrivateCrtKey) kp.getPrivate()).getPrimeExponentQ();
+ BigInteger qInv = ((RSAPrivateCrtKey) kp.getPrivate()).getCrtCoefficient();
+
+ harness.check(n1.bitLength() == 1024, "n1 is a 1024-bit MPI");
+ harness.check(n2.bitLength() == 1024, "n2 is a 1024-bit MPI");
+ harness.check(n1.equals(n2), "n1 == n2");
+
+ // In a valid RSA private key with this representation, the two factors p
+ // and q are the prime factors of the modulus n,
+ harness.check(p.isProbablePrime(80), "p is prime");
+ harness.check(q.isProbablePrime(80), "q is prime");
+ harness.check(n1.equals(p.multiply(q)), "n == pq");
+
+ // dP and dQ are positive integers less than p and q respectively
+ BigInteger p_minus_1 = p.subtract(ONE);
+ BigInteger q_minus_1 = q.subtract(ONE);
+ harness.check(ZERO.compareTo(dP) < 0 && dP.compareTo(p_minus_1) < 0,
+ "0 < dP < p-1");
+ harness.check(ZERO.compareTo(dQ) < 0 && dQ.compareTo(q_minus_1) < 0,
+ "0 < dQ < q-1");
+ // satisfying
+ // e . dP = 1 (mod p?1);
+ // e . dQ = 1 (mod q?1),
+ harness.check(e.multiply(dP).mod(p_minus_1).equals(ONE),
+ "e.dP == 1 (mod p-1)");
+ harness.check(e.multiply(dQ).mod(q_minus_1).equals(ONE),
+ "e.dQ == 1 (mod q-1)");
+
+ // and the CRT coefficient qInv is a positive integer less than p
+ // satisfying
+ // q . qInv = 1 (mod p).
+ harness.check(q.multiply(qInv).mod(p).equals(ONE),
+ "q.qInv == 1 (mod p)");
+
+ BigInteger phi = p_minus_1.multiply(q_minus_1);
+ harness.check(e.gcd(phi).equals(ONE), "gcd(e, phi) == 1");
+ harness.check(e.multiply(d).mod(phi).equals(ONE), "e.d == 1 (mod phi)");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testRSAParams");
+ }
+ }
+
+ public void testRSAPrimitives(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAKeyGeneration.testRSAPrimitives");
+ try
+ {
+ setUp();
+
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024));
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ PublicKey pubK = kp.getPublic();
+ PrivateKey privK = kp.getPrivate();
+
+ BigInteger n = ((RSAPublicKey) pubK).getModulus();
+ BigInteger m = ZERO;
+ Random prng = new Random(System.currentTimeMillis());
+ while (m.equals(ZERO) || m.compareTo(n) >= 0)
+ m = new BigInteger(1024, prng);
+
+ BigInteger s = RSA.sign(privK, m);
+ BigInteger cm = RSA.verify(pubK, s);
+
+ harness.check(cm.equals(m));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testRSAPrimitives");
+ }
+ }
+
+ private void setUp()
+ {
+ kpg = new RSAKeyPairGenerator();
+ map.clear();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/CVS/Entries b/gnu/testlet/gnu/java/security/sig/CVS/Entries
new file mode 100644
index 00000000..e3015d1a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfSignatureCodecFactory.java/1.1/Sun Feb 19 02:02:38 2006//
+/TestOfSignatureFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/sig/CVS/Entries.Log b/gnu/testlet/gnu/java/security/sig/CVS/Entries.Log
new file mode 100644
index 00000000..f2cc87eb
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dss////
+A D/rsa////
diff --git a/gnu/testlet/gnu/java/security/sig/CVS/Repository b/gnu/testlet/gnu/java/security/sig/CVS/Repository
new file mode 100644
index 00000000..016d97ca
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/sig
diff --git a/gnu/testlet/gnu/java/security/sig/CVS/Root b/gnu/testlet/gnu/java/security/sig/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/sig/TestOfSignatureCodecFactory.java b/gnu/testlet/gnu/java/security/sig/TestOfSignatureCodecFactory.java
new file mode 100644
index 00000000..45b8c035
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/TestOfSignatureCodecFactory.java
@@ -0,0 +1,124 @@
+/* TestOfSignatureCodecFactory.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig;
+
+import java.util.Iterator;
+
+import gnu.java.security.Registry;
+import gnu.java.security.sig.ISignatureCodec;
+import gnu.java.security.sig.SignatureCodecFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class TestOfSignatureCodecFactory
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testGetNames(harness);
+ testSpecificNames(harness);
+ }
+
+ private void testGetNames(TestHarness harness)
+ {
+ harness.checkPoint("testGetNames");
+
+ for (Iterator it = SignatureCodecFactory.getNames().iterator(); it.hasNext();)
+ getCodec(harness, (String) it.next());
+ }
+
+ private void testSpecificNames(TestHarness harness)
+ {
+ harness.checkPoint("testSpecificNames");
+
+ getCodec(harness, Registry.DSS_SIG + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.DSS_SIG + "/" + Registry.X509_ENCODING_SORT_NAME);
+
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.MD2_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.MD5_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA160_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA256_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA384_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA512_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.RIPEMD128_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.RIPEMD_160_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.MD2_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.MD5_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA160_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA256_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA384_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+ getCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-"
+ + Registry.SHA512_HASH + "/" + Registry.X509_ENCODING_SORT_NAME);
+
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.MD2_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.MD5_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.SHA160_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.SHA256_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.SHA384_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.SHA512_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.RIPEMD128_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ getCodec(harness, Registry.RSA_PSS_SIG + "-"
+ + Registry.RIPEMD_160_HASH + "/" + Registry.RAW_ENCODING_SHORT_NAME);
+ }
+
+ private ISignatureCodec getCodec(TestHarness harness, String codecName)
+ {
+ String msg = "Signature codec \"" + codecName + "\" MUST succeed";
+ ISignatureCodec result = null;
+ try
+ {
+ result = SignatureCodecFactory.getInstance(codecName);
+ harness.check(result != null, msg);
+ return result;
+ }
+ catch (RuntimeException x)
+ {
+ harness.debug(x);
+ harness.fail(msg);
+ }
+
+ return result;
+ }
+}
diff --git a/gnu/testlet/gnu/java/security/sig/TestOfSignatureFactory.java b/gnu/testlet/gnu/java/security/sig/TestOfSignatureFactory.java
new file mode 100644
index 00000000..961db9f7
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/TestOfSignatureFactory.java
@@ -0,0 +1,60 @@
+/* TestOfSignatureFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig;
+
+import gnu.java.security.sig.ISignature;
+import gnu.java.security.sig.SignatureFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the SignatureFactory implementation.
+ */
+public class TestOfSignatureFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSignatureFactory");
+ String scheme;
+ ISignature algorithm;
+ for (Iterator it = SignatureFactory.getNames().iterator(); it.hasNext();)
+ {
+ scheme = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = SignatureFactory.getInstance(scheme);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(scheme) + ")");
+ }
+ catch (RuntimeException x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSignatureFactory.getInstance("
+ + String.valueOf(scheme) + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/dss/CVS/Entries b/gnu/testlet/gnu/java/security/sig/dss/CVS/Entries
new file mode 100644
index 00000000..dad84195
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/dss/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfDSSSignature.java/1.2/Sun Jun 11 08:49:14 2006//
+/TestOfDSSSignatureCodec.java/1.3/Sun Jun 11 08:49:14 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/sig/dss/CVS/Repository b/gnu/testlet/gnu/java/security/sig/dss/CVS/Repository
new file mode 100644
index 00000000..c8562c9a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/dss/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/sig/dss
diff --git a/gnu/testlet/gnu/java/security/sig/dss/CVS/Root b/gnu/testlet/gnu/java/security/sig/dss/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/dss/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignature.java b/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignature.java
new file mode 100644
index 00000000..5189771d
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignature.java
@@ -0,0 +1,103 @@
+/* TestOfDSSSignature.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig.dss;
+
+import gnu.java.security.Registry;
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.hash.Sha160;
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.dss.DSSPublicKey;
+import gnu.java.security.sig.BaseSignature;
+import gnu.java.security.sig.dss.DSSSignature;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the DSS signature generation/verification
+ * implementation.
+ */
+public class TestOfDSSSignature implements Testlet
+{
+ /** Common DSA key material - p. */
+ private static final BigInteger p = new BigInteger(
+ "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d4"
+ + "02251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5"
+ + "a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec"
+ + "3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);
+ /** Common DSA key material - q. */
+ private static final BigInteger q = new BigInteger(
+ "9760508f15230bccb292b982a2eb840bf0581cf5", 16);
+ /** Common DSA key material - g. */
+ private static final BigInteger g = new BigInteger(
+ "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d07826751595"
+ + "78ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b"
+ + "547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea85"
+ + "19089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);
+ /** Public DSA key part. */
+ private static final BigInteger x = new BigInteger(
+ "631305a19984821b95a8c776d38167a4ea2ceb8", 16);
+ /** Private DSA key part. */
+ private static final BigInteger y = new BigInteger(
+ "cc1045a7550205a581ec3a9fed50c6d4aaae9ef2512c066f0d52617e0d462895c00bd"
+ + "f2d329c53a9c0f690e406d49e21beb557d47436df9cdda5ad2f532620a5260704c5"
+ + "91920ff674666e2166066727051f3d515aedf03a4bdb2d69dd13bbd9b5e7941ff37"
+ + "fb35f2d9138b4172e64393b04afdcc630739fbe6993f27f467e17", 16);
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDSSSignature");
+
+ DSAPublicKey publicK = new DSSPublicKey(Registry.ASN1_ENCODING_ID, p, q, g, y);
+ DSAPrivateKey privateK = new DSSPrivateKey(Registry.ASN1_ENCODING_ID, p, q, g, x);
+
+ DSSSignature alice = new DSSSignature();
+ DSSSignature bob = (DSSSignature) alice.clone();
+
+ byte[] message = "1 if by land, 2 if by sea...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(signature), "instance methods");
+
+ IMessageDigest sha = new Sha160();
+ sha.update(message, 0, message.length);
+ byte[] hash = sha.digest();
+ BigInteger[] rs = DSSSignature.sign(privateK, hash);
+
+ harness.check(DSSSignature.verify(publicK, hash, rs), "class methods");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java b/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java
new file mode 100644
index 00000000..2a543fcf
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/dss/TestOfDSSSignatureCodec.java
@@ -0,0 +1,144 @@
+/* TestOfDSSSignatureCodec.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig.dss;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.dss.DSSPublicKey;
+import gnu.java.security.sig.BaseSignature;
+import gnu.java.security.sig.ISignatureCodec;
+import gnu.java.security.sig.dss.DSSSignature;
+import gnu.java.security.sig.dss.DSSSignatureRawCodec;
+import gnu.java.security.sig.dss.DSSSignatureX509Codec;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.interfaces.DSAPrivateKey;
+import java.security.interfaces.DSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the DSS signature format encoding/decoding
+ * implementation.
+ */
+public class TestOfDSSSignatureCodec implements Testlet
+{
+ /** Common DSA key material - p. */
+ private static final BigInteger p = new BigInteger(
+ "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d4"
+ + "02251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5"
+ + "a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec"
+ + "3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);
+ /** Common DSA key material - q. */
+ private static final BigInteger q = new BigInteger(
+ "9760508f15230bccb292b982a2eb840bf0581cf5", 16);
+ /** Common DSA key material - g. */
+ private static final BigInteger g = new BigInteger(
+ "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d07826751595"
+ + "78ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b"
+ + "547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea85"
+ + "19089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);
+ /** Public DSA key part. */
+ private static final BigInteger x = new BigInteger(
+ "631305a19984821b95a8c776d38167a4ea2ceb8", 16);
+ /** Private DSA key part. */
+ private static final BigInteger y = new BigInteger(
+ "cc1045a7550205a581ec3a9fed50c6d4aaae9ef2512c066f0d52617e0d462895c00bd"
+ + "f2d329c53a9c0f690e406d49e21beb557d47436df9cdda5ad2f532620a5260704c5"
+ + "91920ff674666e2166066727051f3d515aedf03a4bdb2d69dd13bbd9b5e7941ff37"
+ + "fb35f2d9138b4172e64393b04afdcc630739fbe6993f27f467e17", 16);
+ /** The DSA public key. */
+ private DSAPublicKey publicK;
+ /** The DSA private key. */
+ private DSAPrivateKey privateK;
+
+ public void test(TestHarness harness)
+ {
+ testSignatureRawCodec(harness);
+ testSignatureASN1Codec(harness);
+ }
+
+ public void testSignatureRawCodec(TestHarness harness)
+ {
+ harness.checkPoint("testSignatureRawCodec");
+ setUp();
+ DSSSignature alice = new DSSSignature();
+ DSSSignature bob = (DSSSignature) alice.clone();
+
+ byte[] message = "1 if by land, 2 if by sea...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ ISignatureCodec codec = new DSSSignatureRawCodec();
+
+ byte[] encodedSignature = codec.encodeSignature(signature);
+ Object decodedSignature = codec.decodeSignature(encodedSignature);
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(decodedSignature),
+ "Signature Raw encoder/decoder test");
+ }
+
+ private void testSignatureASN1Codec(TestHarness harness)
+ {
+ harness.checkPoint("testSignatureASN1Codec");
+ setUp();
+ DSSSignature alice = new DSSSignature();
+ DSSSignature bob = (DSSSignature) alice.clone();
+
+ byte[] message = "1 if by land, 2 if by sea...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ ISignatureCodec codec = new DSSSignatureX509Codec();
+
+ byte[] encodedSignature = codec.encodeSignature(signature);
+ Object decodedSignature = codec.decodeSignature(encodedSignature);
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(decodedSignature),
+ "Signature X.509 encoder/decoder test");
+ }
+
+ private void setUp()
+ {
+ publicK = new DSSPublicKey(Registry.ASN1_ENCODING_ID, p, q, g, y);
+ privateK = new DSSPrivateKey(Registry.ASN1_ENCODING_ID, p, q, g, x);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/CVS/Entries b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Entries
new file mode 100644
index 00000000..8e58c71a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfRSAPKCS1V1_5Signature.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfRSAPSSSignature.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfRSASignatureCodec.java/1.2/Sun Feb 19 02:02:39 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/CVS/Repository b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Repository
new file mode 100644
index 00000000..3458b63b
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/sig/rsa
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/CVS/Root b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPKCS1V1_5Signature.java b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPKCS1V1_5Signature.java
new file mode 100644
index 00000000..3e02f8b6
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPKCS1V1_5Signature.java
@@ -0,0 +1,102 @@
+/* TestOfRSAPKCS1V1_5Signature.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig.rsa;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.rsa.RSAKeyPairGenerator;
+import gnu.java.security.sig.BaseSignature;
+import gnu.java.security.sig.rsa.RSAPKCS1V1_5Signature;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the RSA-PKCS1-V1.5 signature generation/verification
+ * implementation.
+ */
+public class TestOfRSAPKCS1V1_5Signature implements Testlet
+{
+ private RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
+
+ private RSAPublicKey publicK;
+
+ private RSAPrivateKey privateK;
+
+ private RSAPKCS1V1_5Signature alice, bob;
+
+ private byte[] message;
+
+ public void test(TestHarness harness)
+ {
+ testSigWithHash(harness, Registry.MD2_HASH);
+ testSigWithHash(harness, Registry.MD5_HASH);
+ testSigWithHash(harness, Registry.SHA160_HASH);
+ testSigWithHash(harness, Registry.SHA256_HASH);
+ testSigWithHash(harness, Registry.SHA384_HASH);
+ testSigWithHash(harness, Registry.SHA512_HASH);
+ }
+
+ private void testSigWithHash(TestHarness harness, String name)
+ {
+ harness.checkPoint("TestOfRSAPKCS1V1_5Signature.with(" + name + ")");
+ try
+ {
+ setUp();
+
+ alice = new RSAPKCS1V1_5Signature(name);
+ bob = (RSAPKCS1V1_5Signature) alice.clone();
+
+ message = "Que du magnifique...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(signature));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPKCS1V1_5Signature.with(" + name + ")");
+ }
+ }
+
+ private void setUp()
+ {
+ kpg.setup(new HashMap()); // default is to use 1024-bit keys
+ KeyPair kp = kpg.generate();
+ publicK = (RSAPublicKey) kp.getPublic();
+ privateK = (RSAPrivateKey) kp.getPrivate();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPSSSignature.java b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPSSSignature.java
new file mode 100644
index 00000000..0f850d8a
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSAPSSSignature.java
@@ -0,0 +1,161 @@
+/* TestOfRSAPSSSignature.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig.rsa;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.rsa.RSAKeyPairGenerator;
+import gnu.java.security.sig.BaseSignature;
+import gnu.java.security.sig.rsa.RSAPSSSignature;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the RSA-PSS signature generation/verification
+ * implementation.
+ */
+public class TestOfRSAPSSSignature implements Testlet
+{
+ private RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
+
+ private RSAPublicKey publicK;
+
+ private RSAPrivateKey privateK;
+
+ private RSAPSSSignature alice, bob;
+
+ private byte[] message;
+
+ public void test(TestHarness harness)
+ {
+ testSigWithDefaults(harness);
+ testSigWithShaSalt16(harness);
+ testSigWithRipeMD160Salt8(harness);
+ }
+
+ public void testSigWithDefaults(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAPSSSignature.testSigWithDefaults");
+ try
+ {
+ setUp();
+
+ alice = new RSAPSSSignature(); // SHA + 0-octet salt
+ bob = (RSAPSSSignature) alice.clone();
+
+ message = "1 if by land, 2 if by sea...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(signature));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testSigWithDefaults");
+ }
+ }
+
+ public void testSigWithShaSalt16(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAPSSSignature.testSigWithShaSalt16");
+ try
+ {
+ setUp();
+
+ alice = new RSAPSSSignature(Registry.SHA1_HASH, 16);
+ bob = (RSAPSSSignature) alice.clone();
+
+ message = "Que du magnifique...".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(signature));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testSigWithShaSalt16");
+ }
+ }
+
+ public void testSigWithRipeMD160Salt8(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRSAPSSSignature.testSigWithRipeMD160Salt8");
+ try
+ {
+ setUp();
+
+ alice = new RSAPSSSignature(Registry.RIPEMD160_HASH, 8);
+ bob = (RSAPSSSignature) alice.clone();
+
+ message = "abcdefghijklmnopqrstuvwxyz0123456789".getBytes();
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, privateK);
+ alice.setupSign(map);
+ alice.update(message, 0, message.length);
+ Object signature = alice.sign();
+
+ map.put(BaseSignature.VERIFIER_KEY, publicK);
+ bob.setupVerify(map);
+ bob.update(message, 0, message.length);
+
+ harness.check(bob.verify(signature));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRSAPSSSignature.testSigWithRipeMD160Salt8");
+ }
+ }
+
+ private void setUp()
+ {
+ kpg.setup(new HashMap()); // default is to use 1024-bit keys
+ KeyPair kp = kpg.generate();
+ publicK = (RSAPublicKey) kp.getPublic();
+ privateK = (RSAPrivateKey) kp.getPrivate();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSASignatureCodec.java b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSASignatureCodec.java
new file mode 100644
index 00000000..054782b9
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/sig/rsa/TestOfRSASignatureCodec.java
@@ -0,0 +1,121 @@
+/* TestOfRSASignatureCodec.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.sig.rsa;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.rsa.RSAKeyPairGenerator;
+import gnu.java.security.sig.BaseSignature;
+import gnu.java.security.sig.ISignature;
+import gnu.java.security.sig.ISignatureCodec;
+import gnu.java.security.sig.SignatureCodecFactory;
+import gnu.java.security.sig.SignatureFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the RSA signature format encoding/decoding
+ * implementation.
+ */
+public class TestOfRSASignatureCodec implements Testlet
+{
+ private static final String RAW = Registry.RAW_ENCODING_SHORT_NAME;
+ private static final String ASN1 = Registry.X509_ENCODING_SORT_NAME;
+ private static final byte[] MESSAGE = "1 if by land, 2 if by sea...".getBytes();
+ private RSAPublicKey pubK;
+ private RSAPrivateKey secK;
+
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testCodec(harness, Registry.RSA_PSS_SIG, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.MD2_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.MD5_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.SHA160_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.SHA256_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.SHA384_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.SHA512_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.RIPEMD128_HASH, RAW);
+ testCodec(harness, Registry.RSA_PSS_SIG + "-" + Registry.RIPEMD160_HASH, RAW);
+
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.MD2_HASH, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.MD5_HASH, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA160_HASH, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA256_HASH, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA384_HASH, RAW);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA512_HASH, RAW);
+
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.MD2_HASH, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.MD5_HASH, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA160_HASH, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA256_HASH, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA384_HASH, ASN1);
+ testCodec(harness, Registry.RSA_PKCS1_V1_5_SIG + "-" + Registry.SHA512_HASH, ASN1);
+ }
+
+ private void setUp()
+ {
+ HashMap map = new HashMap();
+ map.put(RSAKeyPairGenerator.MODULUS_LENGTH, new Integer(1024));
+
+ RSAKeyPairGenerator kpg = new RSAKeyPairGenerator();
+ kpg.setup(map);
+
+ KeyPair kp = kpg.generate();
+
+ pubK = (RSAPublicKey) kp.getPublic();
+ secK = (RSAPrivateKey) kp.getPrivate();
+ }
+
+ private void testCodec(TestHarness harness, String sigName, String format)
+ {
+ harness.checkPoint("Signature codec " + sigName + "/" + format);
+
+ ISignature alice = SignatureFactory.getInstance(sigName);
+ ISignature bob = (ISignature) alice.clone();
+ ISignatureCodec codec = SignatureCodecFactory.getInstance(sigName, format);
+
+ HashMap map = new HashMap();
+ map.put(BaseSignature.SIGNER_KEY, secK);
+ alice.setupSign(map);
+ alice.update(MESSAGE, 0, MESSAGE.length);
+ Object signature = alice.sign();
+
+ byte[] encodedSignature = codec.encodeSignature(signature);
+ Object decodedSignature = codec.decodeSignature(encodedSignature);
+
+ map.put(BaseSignature.VERIFIER_KEY, pubK);
+ bob.setupVerify(map);
+ bob.update(MESSAGE, 0, MESSAGE.length);
+
+ harness.check(bob.verify(decodedSignature));
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/java/security/util/CVS/Entries b/gnu/testlet/gnu/java/security/util/CVS/Entries
new file mode 100644
index 00000000..08f5b49f
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/util/CVS/Entries
@@ -0,0 +1,2 @@
+/TestOfIntegerUtil.java/1.1/Sat Jul 22 08:47:55 2006//
+D
diff --git a/gnu/testlet/gnu/java/security/util/CVS/Repository b/gnu/testlet/gnu/java/security/util/CVS/Repository
new file mode 100644
index 00000000..0a3de30c
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/util/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/java/security/util
diff --git a/gnu/testlet/gnu/java/security/util/CVS/Root b/gnu/testlet/gnu/java/security/util/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/util/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/java/security/util/TestOfIntegerUtil.java b/gnu/testlet/gnu/java/security/util/TestOfIntegerUtil.java
new file mode 100644
index 00000000..ce42ea31
--- /dev/null
+++ b/gnu/testlet/gnu/java/security/util/TestOfIntegerUtil.java
@@ -0,0 +1,102 @@
+/* TestOfIntegerValueOf.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.java.security.util;
+
+import java.util.Random;
+
+import gnu.java.security.util.IntegerUtil;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Speed test for the Integer RI 5 compatibility utility class.
+ */
+public class TestOfIntegerUtil
+ implements Testlet
+{
+ private static final int INNER_ROUNDS = 1000;
+ private static final int OUTER_ROUNDS = 2000;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ int[] input = new int[100];
+ int i, j;
+ i = 0;
+ for ( ; i < 7; i++)
+ input[i] = i;
+ j = 3;
+ for ( ; i < 99; i++, j++)
+ input[i] = 4 * j;
+
+ Random rnd = new Random();
+ int[] ndx = new int[INNER_ROUNDS];
+ for (i = 0; i < INNER_ROUNDS; i++)
+ ndx[i] = rnd.nextInt(100);
+
+ String _100 = String.valueOf(100);
+ long t1 = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS * INNER_ROUNDS; i++)
+ Integer.valueOf(_100);
+ t1 += System.currentTimeMillis();
+
+ long t2 = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS * INNER_ROUNDS; i++)
+ IntegerUtil.valueOf(_100);
+ t2 += System.currentTimeMillis();
+
+ harness.check(t2 <= t1,
+ "IntegerUtil.valueOf(String) MUST be faster than Integer.valueOf(String)");
+
+ long t = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS; i++)
+ for (j = 0; j < INNER_ROUNDS; j++)
+ Integer.valueOf(String.valueOf(input[ndx[j]]));
+ harness.verbose("*** Integer.valueOf(String) total time in ms. = "
+ + (t + System.currentTimeMillis()));
+
+ t = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS; i++)
+ for (j = 0; j < INNER_ROUNDS; j++)
+ IntegerUtil.valueOf(String.valueOf(input[ndx[j]]));
+ harness.verbose("*** IntegerUtil.valueOf(String) total time in ms. = "
+ + (t + System.currentTimeMillis()));
+
+ t = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS; i++)
+ for (j = 0; j < INNER_ROUNDS; j++)
+ Integer.valueOf(input[ndx[j]]);
+ harness.verbose("*** Integer.valueOf(int) total time in ms. = "
+ + (t + System.currentTimeMillis()));
+
+ t = - System.currentTimeMillis();
+ for (i = 0; i < OUTER_ROUNDS; i++)
+ for (j = 0; j < INNER_ROUNDS; j++)
+ IntegerUtil.valueOf(input[ndx[j]]);
+ harness.verbose("*** IntegerUtil.valueOf(int) total time in ms. = "
+ + (t + System.currentTimeMillis()));
+ }
+}
diff --git a/gnu/testlet/gnu/javax/CVS/Entries b/gnu/testlet/gnu/javax/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/CVS/Entries.Log b/gnu/testlet/gnu/javax/CVS/Entries.Log
new file mode 100644
index 00000000..b9744a27
--- /dev/null
+++ b/gnu/testlet/gnu/javax/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/crypto////
+A D/swing////
diff --git a/gnu/testlet/gnu/javax/CVS/Repository b/gnu/testlet/gnu/javax/CVS/Repository
new file mode 100644
index 00000000..a815b00d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax
diff --git a/gnu/testlet/gnu/javax/CVS/Root b/gnu/testlet/gnu/javax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/CVS/Entries b/gnu/testlet/gnu/javax/crypto/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/crypto/CVS/Entries.Log b/gnu/testlet/gnu/javax/crypto/CVS/Entries.Log
new file mode 100644
index 00000000..89080b47
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/CVS/Entries.Log
@@ -0,0 +1,11 @@
+A D/assembly////
+A D/cipher////
+A D/jce////
+A D/key////
+A D/keyring////
+A D/kwa////
+A D/mac////
+A D/mode////
+A D/pad////
+A D/prng////
+A D/sasl////
diff --git a/gnu/testlet/gnu/javax/crypto/CVS/Repository b/gnu/testlet/gnu/javax/crypto/CVS/Repository
new file mode 100644
index 00000000..061ea094
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto
diff --git a/gnu/testlet/gnu/javax/crypto/CVS/Root b/gnu/testlet/gnu/javax/crypto/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/assembly/CVS/Entries b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Entries
new file mode 100644
index 00000000..0995f8e8
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfAssembly.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfCascade.java/1.1/Sun Jan 29 01:21:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/assembly/CVS/Repository b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Repository
new file mode 100644
index 00000000..e9280e9c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/assembly
diff --git a/gnu/testlet/gnu/javax/crypto/assembly/CVS/Root b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/assembly/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/assembly/TestOfAssembly.java b/gnu/testlet/gnu/javax/crypto/assembly/TestOfAssembly.java
new file mode 100644
index 00000000..88b4993c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/assembly/TestOfAssembly.java
@@ -0,0 +1,183 @@
+/* TestOfAssembly.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.assembly;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.assembly.Assembly;
+import gnu.javax.crypto.assembly.Cascade;
+import gnu.javax.crypto.assembly.Direction;
+import gnu.javax.crypto.assembly.Stage;
+import gnu.javax.crypto.assembly.Transformer;
+import gnu.javax.crypto.assembly.TransformerException;
+import gnu.javax.crypto.cipher.Blowfish;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.javax.crypto.pad.IPad;
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Simple symmetry tests for 3 assembly constructions.
+ */
+public class TestOfAssembly implements Testlet
+{
+ private Assembly asm;
+
+ private HashMap attributes = new HashMap();
+
+ private HashMap modeAttributes = new HashMap();
+
+ public TestOfAssembly()
+ {
+ super();
+ }
+
+ public void test(TestHarness harness)
+ {
+ TestOfAssembly testcase = new TestOfAssembly();
+
+ // build an OFB-Blowfish cascade
+ Cascade ofbBlowfish = new Cascade();
+ Object modeNdx = ofbBlowfish.append(Stage.getInstance(
+ ModeFactory.getInstance(
+ Registry.OFB_MODE, new Blowfish(), 8),
+ Direction.FORWARD));
+
+ testcase.attributes.put(modeNdx, testcase.modeAttributes);
+
+ IPad pkcs7 = PadFactory.getInstance(Registry.PKCS7_PAD);
+
+ testcase.asm = new Assembly();
+ testcase.asm.addPreTransformer(Transformer.getCascadeTransformer(ofbBlowfish));
+ testcase.asm.addPreTransformer(Transformer.getPaddingTransformer(pkcs7));
+
+ testcase.testSymmetry(harness, 1);
+
+ // add a compression transformer.
+ // the resulting assembly encrypts + pad first and compresses later
+ // testcase.asm = new Assembly();
+ // testcase.asm.addPreTransformer(Transformer.getCascadeTransformer(ofbBlowfish));
+ // testcase.asm.addPreTransformer(Transformer.getPaddingTransformer(pkcs7));
+ testcase.asm.addPostTransformer(Transformer.getDeflateTransformer());
+
+ testcase.testSymmetry(harness, 2);
+
+ // now build an assembly that compresses first and encrypts + pads later
+ testcase.asm = new Assembly();
+ testcase.asm.addPreTransformer(Transformer.getCascadeTransformer(ofbBlowfish));
+ testcase.asm.addPreTransformer(Transformer.getPaddingTransformer(pkcs7));
+ testcase.asm.addPreTransformer(Transformer.getDeflateTransformer());
+
+ testcase.testSymmetry(harness, 3);
+ }
+
+ private void testSymmetry(TestHarness harness, int ndx)
+ {
+ harness.checkPoint("TestOfAssembly.testSymmetry#" + ndx);
+
+ byte[] km = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
+ byte[] iv = new byte[] { -1, -2, -3, -4, -5, -6, -7, -8, -9 };
+ byte[] pt = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+ byte[] tpt = new byte[11 * pt.length];
+
+ // forward
+ modeAttributes.put(IBlockCipher.KEY_MATERIAL, km);
+ modeAttributes.put(IMode.IV, iv);
+ attributes.put(Assembly.DIRECTION, Direction.FORWARD);
+ try
+ {
+ asm.init(attributes);
+ }
+ catch (TransformerException x)
+ {
+ harness.debug(x);
+ harness.fail("Forward initialisation");
+ return;
+ }
+
+ byte[] ct = null;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try
+ {
+ for (int i = 0; i < 10; i++)
+ { // transform in parts of 12-byte a time
+ System.arraycopy(pt, 0, tpt, i * pt.length, pt.length);
+ ct = asm.update(pt);
+ baos.write(ct, 0, ct.length);
+ }
+ }
+ catch (TransformerException x)
+ {
+ harness.debug(x);
+ harness.fail("Forward transformation");
+ return;
+ }
+ try
+ {
+ System.arraycopy(pt, 0, tpt, 10 * pt.length, pt.length);
+ ct = asm.lastUpdate(pt);
+ }
+ catch (TransformerException x)
+ {
+ harness.debug(x);
+ harness.fail("Forward last transformation");
+ return;
+ }
+ baos.write(ct, 0, ct.length);
+ ct = baos.toByteArray();
+
+ // reversed
+ attributes.put(Assembly.DIRECTION, Direction.REVERSED);
+ try
+ {
+ asm.init(attributes);
+ }
+ catch (TransformerException x)
+ {
+ harness.debug(x);
+ harness.fail("Reverse initialisation");
+ return;
+ }
+
+ byte[] ot;
+ try
+ {
+ ot = asm.lastUpdate(ct); // transform the lot in one go
+ }
+ catch (TransformerException x)
+ {
+ harness.debug(x);
+ harness.fail("Reverse transformation");
+ return;
+ }
+
+ harness.check(Arrays.equals(ot, tpt), "symmetric test");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/assembly/TestOfCascade.java b/gnu/testlet/gnu/javax/crypto/assembly/TestOfCascade.java
new file mode 100644
index 00000000..4ce62dda
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/assembly/TestOfCascade.java
@@ -0,0 +1,188 @@
+/* TestOfCascade.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.assembly;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.assembly.Cascade;
+import gnu.javax.crypto.assembly.Direction;
+import gnu.javax.crypto.assembly.Stage;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.DES;
+import gnu.javax.crypto.cipher.TripleDES;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.InvalidKeyException;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Simple test of {@link Cascade} that simulates a DES-EDE constructed from
+ * three separate DES instances.
+ */
+public class TestOfCascade implements Testlet
+{
+ /** The ECB encryption monte-carlo tests. */
+ static final String[][] E_TV = {
+ // key bytes
+ // plain bytes cipher bytes
+ { "0123456789abcdef", "0123456789abcdef", "0123456789abcdef",
+ "4e6f772069732074", "6a2a19f41eca854b" },
+ { "0123456789abcdef", "23456789abcdef01", "0123456789abcdef",
+ "4e6f772069732074", "03e69f5bfa58eb42" },
+ { "0123456789abcdef", "23456789abcdef01", "456789abcdef0123",
+ "4e6f772069732074", "dd17e8b8b437d232" },
+ { "6b085d92976149a4", "6b085d92976149a4", "6b085d92976149a4",
+ "6a2a19f41eca854b", "ce5d6c7b63177c18" },
+ { "02c4da3d73f226ad", "1cbce0f2bacd3b15", "02c4da3d73f226ad",
+ "03e69f5bfa58eb42", "262a60f9743e1fd8" },
+ { "dc34addf3d9d1fdc", "976d456702cef4fd", "ad49c2ba0b2f975b",
+ "dd17e8b8b437d232", "3145bcfc1c19382f" } };
+
+ /** The ECB decryption monte-carlo tests. */
+ static final String[][] D_TV = {
+ { "0123456789abcdef", "0123456789abcdef", "0123456789abcdef",
+ "4e6f772069732074", "cdd64f2f9427c15d" },
+ { "0123456789abcdef", "23456789abcdef01", "0123456789abcdef",
+ "4e6f772069732074", "6996c8fa47a2abeb" },
+ { "0123456789abcdef", "23456789abcdef01", "456789abcdef0123",
+ "4e6f772069732074", "8325397644091a0a" },
+ { "cdf40b491c8c0db3", "cdf40b491c8c0db3", "cdf40b491c8c0db3",
+ "cdd64f2f9427c15d", "5bb675e3db3a7f3b" },
+ { "68b58c9dce086704", "529dce3719e9e0da", "68b58c9dce086704",
+ "6996c8fa47a2abeb", "6b177e016e6ae12d" },
+ { "83077c10cda2d6e5", "296240fd8c834fcd", "8fdac4fbe5ae978f",
+ "8325397644091a0a", "c67901abdc008c89" } };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfCascade");
+
+ byte[] pt, ct;
+ byte[] ct1 = new byte[8];
+ byte[] ct2 = new byte[8];
+
+ HashMap map = new HashMap();
+ IBlockCipher desEDE = new TripleDES();
+
+ HashMap map1 = new HashMap();
+ HashMap map2 = new HashMap();
+ HashMap map3 = new HashMap();
+ Cascade new3DES = new Cascade();
+ Object des1 = new3DES.append(Stage.getInstance(
+ ModeFactory.getInstance(
+ Registry.ECB_MODE, new DES(), 8),
+ Direction.FORWARD));
+ Object des2 = new3DES.append(Stage.getInstance(
+ ModeFactory.getInstance(
+ Registry.ECB_MODE, new DES(), 8),
+ Direction.REVERSED));
+ Object des3 = new3DES.append(Stage.getInstance(
+ ModeFactory.getInstance(
+ Registry.ECB_MODE, new DES(), 8),
+ Direction.FORWARD));
+
+ map.put(des1, map1);
+ map.put(des2, map2);
+ map.put(des3, map3);
+
+ for (int i = 0; i < E_TV.length; i++)
+ {
+ map1.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(E_TV[i][0]));
+ map2.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(E_TV[i][1]));
+ map3.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(E_TV[i][2]));
+ map.put(IBlockCipher.KEY_MATERIAL,
+ Util.toBytesFromString(E_TV[i][0] + E_TV[i][1] + E_TV[i][2]));
+ map.put(Cascade.DIRECTION, Direction.FORWARD);
+ pt = Util.toBytesFromString(E_TV[i][3]);
+ ct = Util.toBytesFromString(E_TV[i][4]);
+
+ try
+ {
+ desEDE.reset();
+ new3DES.reset();
+
+ desEDE.init(map);
+ new3DES.init(map);
+
+ desEDE.encryptBlock(pt, 0, ct1, 0);
+ new3DES.update(pt, 0, ct2, 0);
+ harness.check(Arrays.equals(ct1, ct2));
+
+ for (int j = 0; j < 9999; j++)
+ {
+ desEDE.encryptBlock(ct1, 0, ct1, 0);
+ new3DES.update(ct2, 0, ct2, 0);
+ }
+ harness.check(Arrays.equals(ct, ct1));
+ harness.check(Arrays.equals(ct, ct2));
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.fail("init (encryption)");
+ harness.debug(x);
+ }
+ }
+
+ for (int i = 0; i < D_TV.length; i++)
+ {
+ map1.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(D_TV[i][0]));
+ map2.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(D_TV[i][1]));
+ map3.put(IBlockCipher.KEY_MATERIAL, Util.toBytesFromString(D_TV[i][2]));
+ map.put(IBlockCipher.KEY_MATERIAL,
+ Util.toBytesFromString(D_TV[i][0] + D_TV[i][1] + D_TV[i][2]));
+ map.put(Cascade.DIRECTION, Direction.REVERSED);
+ pt = Util.toBytesFromString(D_TV[i][3]);
+ ct = Util.toBytesFromString(D_TV[i][4]);
+
+ try
+ {
+ desEDE.reset();
+ new3DES.reset();
+
+ desEDE.init(map);
+ new3DES.init(map);
+
+ desEDE.decryptBlock(pt, 0, ct1, 0);
+ new3DES.update(pt, 0, ct2, 0);
+ harness.check(Arrays.equals(ct1, ct2));
+
+ for (int j = 0; j < 9999; j++)
+ {
+ desEDE.decryptBlock(ct1, 0, ct1, 0);
+ new3DES.update(ct2, 0, ct2, 0);
+ }
+ harness.check(Arrays.equals(ct, ct1));
+ harness.check(Arrays.equals(ct, ct2));
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.fail("init (decryption)");
+ harness.debug(x);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/BaseCipherTestCase.java b/gnu/testlet/gnu/javax/crypto/cipher/BaseCipherTestCase.java
new file mode 100644
index 00000000..ec4a1dfb
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/BaseCipherTestCase.java
@@ -0,0 +1,477 @@
+/* BaseCipherTestCase.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.Testlet;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * A generic cipher test case that can verify a cipher implementation given
+ * a set of known answers. See {@link gnu.testlet.gnu.javax.crypto.cipher.TestOfAnubis}
+ * for how To implement a test of a particular cipher.
+ *
+ * <p>The tests, as implemented in this class, are the NIST Known-Answer Tests
+ * (KAT) and Monte-Carlo Tests (MCT), which were the test formats used in the
+ * AES Quest. As such, these tests are suited for AES-candidates (or similar)
+ * ciphers; the specific AES style parts of these tests are the 128, 192, and
+ * 256 bit key lengths.</p>
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li><a href="http://csrc.nist.gov/encryption/aes/katmct/katmct.htm">Known
+ * Answer Tests and Monte Carlo Tests for AES Submissions</a> for an
+ * explanation of the tests and the format of the resulting files.</li>
+ * </ol>.
+ */
+public abstract class BaseCipherTestCase implements Testlet
+{
+ /** Big-endian. */
+ protected static final int BIG_ENDIAN = 0;
+
+ /** Little-endian. */
+ protected static final int LITTLE_ENDIAN = 1;
+
+ /** The reference to the cipher implementation to exercise. */
+ protected IBlockCipher cipher;
+
+ /** The byte order to use. */
+ protected int endianness;
+
+ /** Default 0-arguments constructor, using the default endianness. */
+ public BaseCipherTestCase()
+ {
+ this(BIG_ENDIAN);
+ }
+
+ /**
+ * Construct a new test case, with a specified endianness.
+ *
+ * @param endianness The endianness that the underlying cipher
+ * expects its input to be.
+ */
+ public BaseCipherTestCase(int endianness)
+ {
+ this.endianness = endianness;
+ }
+
+ /**
+ * Shift, in situ, the variable key/text byte array one position to the
+ * right.
+ *
+ * @param kb The bytes to shift.
+ */
+ private static void shiftRight1(byte[] kb)
+ {
+ int i;
+ for (i = 0; kb[i] == 0 && i < kb.length; i++)
+ { // do nothing
+ }
+ kb[i] = (byte) ((kb[i] & 0xff) >>> 1);
+ // handle byte boundary case
+ if (kb[i] == 0)
+ {
+ i++;
+ if (i < kb.length)
+ {
+ kb[i] = (byte) 0x80;
+ }
+ }
+ }
+
+ /**
+ * Shift, in situ, the variable key/text byte array one position to the
+ * right, taking the byte order to be little-endian.
+ *
+ * @param kb The bytes to shift.
+ */
+ private static void revShiftRight1(byte[] kb)
+ {
+ int i;
+ for (i = kb.length - 1; kb[i] == 0 && i >= 0; i--)
+ { // do nothing
+ }
+ kb[i] = (byte) ((kb[i] & 0xff) >>> 1);
+ // handle byte boundary case
+ if (kb[i] == 0)
+ {
+ i--;
+ if (i >= 0)
+ {
+ kb[i] = (byte) 0x80;
+ }
+ }
+ }
+
+ /**
+ * Perform a variable-key KAT, comparing the results with the supplied
+ * answers.
+ *
+ * @param answers The expected ciphertexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> If all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean katVK(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] kb = new byte[ks];
+ if (endianness == BIG_ENDIAN)
+ kb[0] = (byte) 0x80;
+ else
+ kb[ks - 1] = (byte) 0x80;
+
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ for (int i = 0; i < answers.length; i++)
+ {
+ cipher.reset();
+ cipher.init(attrib);
+ cipher.encryptBlock(pt, 0, ct, 0);
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(ct)))
+ return false;
+
+ shiftRight1(kb);
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(ct)))
+ return false;
+
+ revShiftRight1(kb);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Perform a variable-text known-answer test, comparing the results with
+ * the supplied answers.
+ *
+ * @param answers The expected ciphertexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> If all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean katVT(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] kb = new byte[ks];
+ if (endianness == BIG_ENDIAN)
+ pt[0] = (byte) 0x80;
+ else
+ pt[pt.length - 1] = (byte) 0x80;
+
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attrib);
+ for (int i = 0; i < answers.length; i++)
+ {
+ cipher.encryptBlock(pt, 0, ct, 0);
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(ct)))
+ return false;
+
+ shiftRight1(pt);
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(ct)))
+ return false;
+
+ revShiftRight1(pt);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Perform a Monte-Carlo encryption Test, using the ECB mode. The
+ * <code>answers</code> array should be the resulting ciphertexts after each
+ * iteration.
+ *
+ * @param answers The expected ciphertexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> if all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean mctEncryptECB(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb = new byte[ks];
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] lct = new byte[cipher.currentBlockSize()];
+ int i, j;
+ int off = ks - cipher.currentBlockSize();
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ for (i = 0; i < answers.length; i++)
+ {
+ cipher.reset();
+ cipher.init(attrib);
+ for (j = 0; j < 10000; j++)
+ {
+ if (j == 9999)
+ System.arraycopy(ct, 0, lct, 0, ct.length);
+
+ cipher.encryptBlock(pt, 0, ct, 0);
+ System.arraycopy(ct, 0, pt, 0, ct.length);
+ }
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(ct)))
+ return false;
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(ct)))
+ return false;
+ }
+ for (j = 0; j + (lct.length - off) < lct.length && j < off; j++)
+ kb[j] ^= lct[j + (lct.length - off)];
+
+ for (j = 0; j + off < kb.length && j < ct.length; j++)
+ kb[j + off] ^= ct[j];
+ }
+ return true;
+ }
+
+ /**
+ * Perform a Monte-Carlo decryption Test, using the ECB mode. The
+ * <code>answers</code> array should be the resulting plaintexts after each
+ * iteration.
+ *
+ * @param answers The expected plaintexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> if all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean mctDecryptECB(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb = new byte[ks];
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] lpt = new byte[cipher.currentBlockSize()];
+ int i, j;
+ int off = ks - cipher.currentBlockSize();
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ for (i = 0; i < answers.length; i++)
+ {
+ cipher.reset();
+ cipher.init(attrib);
+ for (j = 0; j < 10000; j++)
+ {
+ if (j == 9999)
+ System.arraycopy(pt, 0, lpt, 0, ct.length);
+
+ cipher.decryptBlock(ct, 0, pt, 0);
+ System.arraycopy(pt, 0, ct, 0, ct.length);
+ }
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(pt)))
+ return false;
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(pt)))
+ return false;
+ }
+ for (j = 0; j + (lpt.length - off) < lpt.length && j < off; j++)
+ kb[j] ^= lpt[j + (lpt.length - off)];
+
+ for (j = 0; j + off < kb.length && j < pt.length; j++)
+ kb[j + off] ^= pt[j];
+ }
+ return true;
+ }
+
+ /**
+ * Perform a Monte-Carlo encryption Test, using the CBC mode. The
+ * <code>answers</code> array should be the resulting ciphertexts after each
+ * iteration.
+ *
+ * @param answers The expected ciphertexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> if all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean mctEncryptCBC(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb = new byte[ks];
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] lct = new byte[cipher.currentBlockSize()];
+ byte[] iv = new byte[cipher.currentBlockSize()];
+ int i, j, k;
+ int off = ks - cipher.currentBlockSize();
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ for (i = 0; i < answers.length; i++)
+ {
+ cipher.reset();
+ cipher.init(attrib);
+ for (j = 0; j < 10000; j++)
+ {
+ for (k = 0; k < pt.length; k++)
+ pt[k] ^= iv[k];
+
+ System.arraycopy(ct, 0, lct, 0, ct.length);
+ cipher.encryptBlock(pt, 0, ct, 0);
+ System.arraycopy(ct, 0, iv, 0, ct.length);
+ System.arraycopy(lct, 0, pt, 0, lct.length);
+ }
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(ct)))
+ return false;
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(ct)))
+ return false;
+ }
+ for (j = 0; j + (lct.length - off) < lct.length && j < off; j++)
+ kb[j] ^= lct[j + (lct.length - off)];
+
+ for (j = 0; j + off < kb.length && j < ct.length; j++)
+ kb[j + off] ^= ct[j];
+ }
+ return true;
+ }
+
+ /**
+ * Perform a Monte-Carlo decryption Test, using the CBC mode. The
+ * <code>answers</code> array should be the resulting plaintexts after each
+ * iteration.
+ *
+ * @param answers The expected plaintexts.
+ * @param cipher The cipher.
+ * @param ks The length of the key, in bytes.
+ * @return <code>true</code> if all tests succeed, <code>false</code>
+ * otherwise.
+ */
+ protected boolean mctDecryptCBC(String[] answers, IBlockCipher cipher, int ks)
+ throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb = new byte[ks];
+ byte[] pt = new byte[cipher.currentBlockSize()];
+ byte[] ct = new byte[cipher.currentBlockSize()];
+ byte[] lpt = new byte[cipher.currentBlockSize()];
+ byte[] iv = new byte[cipher.currentBlockSize()];
+ int i, j, k;
+ int off = ks - cipher.currentBlockSize();
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ for (i = 0; i < answers.length; i++)
+ {
+ cipher.reset();
+ cipher.init(attrib);
+ for (j = 0; j < 10000; j++)
+ {
+ if (j == 9999)
+ System.arraycopy(pt, 0, lpt, 0, pt.length);
+
+ cipher.decryptBlock(ct, 0, pt, 0);
+ for (k = 0; k < pt.length; k++)
+ pt[k] ^= iv[k];
+
+ System.arraycopy(ct, 0, iv, 0, ct.length);
+ System.arraycopy(pt, 0, ct, 0, pt.length);
+ }
+ if (endianness == BIG_ENDIAN)
+ {
+ if (!answers[i].equals(Util.toString(pt)))
+ return false;
+ }
+ else
+ {
+ if (!answers[i].equals(Util.toReversedString(pt)))
+ return false;
+ }
+ for (j = 0; j + (lpt.length - off) < lpt.length && j < off; j++)
+ kb[j] ^= lpt[j + (lpt.length - off)];
+
+ for (j = 0; j + off < kb.length && j < pt.length; j++)
+ kb[j + off] ^= pt[j];
+ }
+ return true;
+ }
+
+ /** Test symmetry. */
+ protected boolean validityTest()
+ {
+ return cipher.selfTest();
+ }
+
+ /** Test cloneability. */
+ protected boolean cloneabilityTest() throws Exception
+ {
+ int blockSize = cipher.defaultBlockSize();
+ int keySize = cipher.defaultKeySize();
+
+ byte[] pt = new byte[blockSize];
+ byte[] ct1 = new byte[blockSize];
+ byte[] ct2 = new byte[blockSize];
+ byte[] kb = new byte[keySize];
+ HashMap attributes = new HashMap();
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attributes);
+
+ cipher.encryptBlock(pt, 0, pt, 0);
+ IBlockCipher thomas = (IBlockCipher) cipher.clone();
+ thomas.init(attributes);
+ cipher.encryptBlock(pt, 0, ct1, 0);
+ thomas.encryptBlock(pt, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/CVS/Entries b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Entries
new file mode 100644
index 00000000..a149b62a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Entries
@@ -0,0 +1,14 @@
+/BaseCipherTestCase.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfAnubis.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfBlowfish.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfCast5.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfCipherFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfDES.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfKhazad.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfNullCipher.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfRijndael.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfSerpent.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfSquare.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfTripleDES.java/1.2/Fri Jul 21 22:34:17 2006//
+/TestOfTwofish.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/CVS/Repository b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Repository
new file mode 100644
index 00000000..cb90b8f5
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/cipher
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/CVS/Root b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfAnubis.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfAnubis.java
new file mode 100644
index 00000000..9fba7e7d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfAnubis.java
@@ -0,0 +1,236 @@
+/* TestOfAnubis.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.Anubis;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Anubis} implementation.
+ */
+public class TestOfAnubis extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vk_192;
+
+ private static final String[] vk_256;
+
+ private static final String[] vt_128;
+
+ private static final String[] vt_192;
+
+ private static final String[] vt_256;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_e_192;
+
+ private static final String[] mct_ecb_e_256;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_ecb_d_192;
+
+ private static final String[] mct_ecb_d_256;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_e_192;
+
+ private static final String[] mct_cbc_e_256;
+
+ private static final String[] mct_cbc_d_128;
+
+ private static final String[] mct_cbc_d_192;
+
+ private static final String[] mct_cbc_d_256;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "B835BDC334829D8371BFA371E4B3C4FD",
+ "6EEF5FDAC4C6E9914828AE9446A460BB",
+ "3ECACEE372560B9810B5498D5E7791CC",
+ "64F244781EE6DDD181BB5934A7A12F4E",
+ "4F39939A9F45EF5F1F596E7BABA1EC6F" };
+
+ vk_192 = new String[] { "7D623B52C74C64D8EBC72D579785438F",
+ "AC166073FAA7E04A40C88455FF11BAED",
+ "430ECACFD834527AE0E990668AA11B8F",
+ "576566892CB51866C2810FF60A05FEFB",
+ "53554C9CAC6727B76E294BF166F25646" };
+
+ vk_256 = new String[] { "9600F07691692987F5E597DBDBAF1B0A",
+ "1CB51DECD24FDA26926D05AD0F96AA28",
+ "7E1DE6BBC06BB5BE2F6D6A719FE5B807",
+ "99EBAA541999213EEB7AD212B21FA3A2",
+ "2ED5C152EE4D0347F2C2677E0A7A43D5" };
+
+ vt_128 = new String[] { "753843F8182D1A74346EA255242181E0",
+ "741696DC3C9969A64F55DB17F5E4522F",
+ "D7009A0DFDB7EA99BF4B944284C4FFE0",
+ "708EB676B1DAE91CAAC8BFAAF060F1B9",
+ "0BEF93A942AD81430B8E0AE0CC56C30E" };
+
+ vt_192 = new String[] { "CEB51617789006534C2339B90E5CD678",
+ "1EEE27469C93609DE05C1636549E485D",
+ "C242A63345C449ADAEC0CD164E00C22E",
+ "85BD1C84396110F91D4DFB426FA2E95A",
+ "6E50F0079C2F870EB1A8E1A477F8FF2F" };
+
+ vt_256 = new String[] { "570C7199920DE014C1825423CEB62E03",
+ "8C26F898A7ACF62A710C3F64D50A3B63",
+ "47DEEEFEC4CC45211B1E35EE0769A3BF",
+ "4AA854C639F1585B8078B8CA7353C16B",
+ "43C80353A6461328B253769F1FCE205A" };
+
+ mct_ecb_e_128 = new String[] { "2A6C912A488A452F558E18C5E4CFC5BA",
+ "47B9B72583D3E71A9B3553A1E8B58257",
+ "860D8175D8A868D34557B77A0216DE0F",
+ "D95165C080C86E3AD303B214015E0333",
+ "1C4D5F272E10848513C8755BF73D78EA" };
+
+ mct_ecb_e_192 = new String[] { "BDB43001BDBD82824768D56B92403380",
+ "6C1F7A7E54C242A9C453A7223EC7AD3C",
+ "E4A0C4C55605B20C3FD708C526CA5D8A",
+ "D8139FDBF39DA3F9CDB87501D9FCA820",
+ "85935A8D05CB415F4E87B07B57ADDEF8" };
+
+ mct_ecb_e_256 = new String[] { "0150894308014AE25FB2EA3CEEC85210",
+ "11F33B4127A57F2FF84C10AEF5159B94",
+ "C294BD0E643D7AEED6CBAE0CCCB6BEF0",
+ "FF4095A5432EB9CFD4C063176ACCB373",
+ "84C5A38B1380D76BF8D50A346B47F563" };
+
+ mct_ecb_d_128 = new String[] { "16600BC38CD79256652598F58228EFCF",
+ "EBA185F180C7B4DB422DA0C88CD74B26",
+ "C73B84FD1F5ADE0FCD444FCD46F47203",
+ "F55FF70281CB55E99CE9DE51BE142C57",
+ "42E97BDBB4ECF18F18166BC32109BF45" };
+
+ mct_ecb_d_192 = new String[] { "879E3B2EEADFB4EA7B6BD46C4BE5E769",
+ "11E607AB4460F1D50BDF748E3BA9BD57",
+ "F15ACFD9E5267D85D6AC29F33FA1CBCB",
+ "79CC26A4393A55B28738CA3A8A299FE9",
+ "9B769F72D8632B6ADD1427FCF4FDF2DE" };
+
+ mct_ecb_d_256 = new String[] { "0F504BDFAB77735CA40FCEBCAF47EE92",
+ "9A448413BC6D98ABC3CAB39B8A9E6871",
+ "636234AE5C2DDDFA7AE1627244CFCC90",
+ "D3456F8048F7E5482671C7E2DEA9D762",
+ "93562D9EC63F5B797588BD91E34E76A0" };
+
+ mct_cbc_e_128 = new String[] { "3724E80A6C3CB054FF0E518999BBAB88",
+ "F238302711B764856DA5A092C8289F5E",
+ "2B632C0177CCCB6B4DD958924F6730DE",
+ "04252FB295BE5FA6D32E501BABAF67DA",
+ "E2A899340FE1E0302687D43F6D425798" };
+
+ mct_cbc_e_192 = new String[] { "25086B9E6DE422DF5B3A62C4B9C64568",
+ "042A05E5BCE817A9FC45AE7FE3A7D46C",
+ "18F2104559B375818F3010A1C2C80C36",
+ "71AC9391D488EE51A3C8F640A00A2B5D",
+ "780A4737C44FC3F073155DB9C97BB21E" };
+
+ mct_cbc_e_256 = new String[] { "022A01C9EFB90CB3D77D62F176004D85",
+ "965CE7ABB639854D2A7929F0FD1206DF",
+ "59FE9BB4E2272D0F68C7A510738AC7FC",
+ "1F372860A508267A67356531B9596BBA",
+ "E186DA9BD50AA7E30000DEF5C8A448D4" };
+
+ mct_cbc_d_128 = new String[] { "5B237C6AE5BA37765A4E3938E7569F55",
+ "CC7CD5A28DCE22C732F2371D937A726A",
+ "84E078514190370771366EB9CF2D7031",
+ "A6DEC5917B36562FDE3DBCCB76FA35BD",
+ "1BD89437F976ADF10D7BFD9D852427CC" };
+
+ mct_cbc_d_192 = new String[] { "430231B438EB551A8AF015ED00690E14",
+ "62C86D437D35421720FAD2771D1065EE",
+ "DFD175DD25EAC3265BA39B42450B3406",
+ "A7BCD306586A0DC9E7949D828776DC3A",
+ "C56E79EC9080F036A4454BE120540778" };
+
+ mct_cbc_d_256 = new String[] { "39D0043E180C28B46D041AD3E050A1D4",
+ "BA6EE5D10D4626ACDC642E580892B4DA",
+ "01B932102B6BFCE16B7D74F4137A6DDF",
+ "6049E4832730CA8AB3CA946DC1CFC08A",
+ "0464A26509435822A9879EF7521F45AC" };
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfAnubis");
+ cipher = new Anubis();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVK(vk_192, cipher, 24), "KAT VK " + algorithm + "-192");
+ harness.check(katVK(vk_256, cipher, 32), "KAT VK " + algorithm + "-256");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(katVT(vt_192, cipher, 24), "KAT VT " + algorithm + "-192");
+ harness.check(katVT(vt_256, cipher, 32), "KAT VT " + algorithm + "-256");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_192, cipher, 24),
+ "MCT ECB Encryption " + algorithm + "-192");
+ harness.check(mctEncryptECB(mct_ecb_e_256, cipher, 32),
+ "MCT ECB Encryption " + algorithm + "-256");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_192, cipher, 24),
+ "MCT ECB Decryption " + algorithm + "-192");
+ harness.check(mctDecryptECB(mct_ecb_d_256, cipher, 32),
+ "MCT ECB Decryption " + algorithm + "-256");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_192, cipher, 24),
+ "MCT CBC Encryption " + algorithm + "-192");
+ harness.check(mctEncryptCBC(mct_cbc_e_256, cipher, 32),
+ "MCT CBC Encryption " + algorithm + "-256");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_192, cipher, 24),
+ "MCT CBC Decryption " + algorithm + "-192");
+ harness.check(mctDecryptCBC(mct_cbc_d_256, cipher, 32),
+ "MCT CBC Decryption " + algorithm + "-256");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfAnubis");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfBlowfish.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfBlowfish.java
new file mode 100644
index 00000000..1413aea4
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfBlowfish.java
@@ -0,0 +1,148 @@
+/* TestOfBlowfish.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.Blowfish;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.TestHarness;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance test for the Blowfish cipher.
+ */
+public class TestOfBlowfish extends BaseCipherTestCase
+{
+ /**
+ * Eric Young's Blowfish test vectors. See <a
+ * href="http://www.counterpane.com/vectors.txt">http://www.counterpane.com/vectors.txt</a>.
+ */
+ static final String[][] TV = {
+ // key bytes clear bytes cipher bytes
+ { "0000000000000000", "0000000000000000", "4EF997456198DD78" },
+ { "FFFFFFFFFFFFFFFF", "FFFFFFFFFFFFFFFF", "51866FD5B85ECB8A" },
+ { "3000000000000000", "1000000000000001", "7D856F9A613063F2" },
+ { "1111111111111111", "1111111111111111", "2466DD878B963C9D" },
+ { "0123456789ABCDEF", "1111111111111111", "61F9C3802281B096" },
+ { "1111111111111111", "0123456789ABCDEF", "7D0CC630AFDA1EC7" },
+ { "0000000000000000", "0000000000000000", "4EF997456198DD78" },
+ { "FEDCBA9876543210", "0123456789ABCDEF", "0ACEAB0FC6A0A28D" },
+ { "7CA110454A1A6E57", "01A1D6D039776742", "59C68245EB05282B" },
+ { "0131D9619DC1376E", "5CD54CA83DEF57DA", "B1B8CC0B250F09A0" },
+ { "07A1133E4A0B2686", "0248D43806F67172", "1730E5778BEA1DA4" },
+ { "3849674C2602319E", "51454B582DDF440A", "A25E7856CF2651EB" },
+ { "04B915BA43FEB5B6", "42FD443059577FA2", "353882B109CE8F1A" },
+ { "0113B970FD34F2CE", "059B5E0851CF143A", "48F4D0884C379918" },
+ { "0170F175468FB5E6", "0756D8E0774761D2", "432193B78951FC98" },
+ { "43297FAD38E373FE", "762514B829BF486A", "13F04154D69D1AE5" },
+ { "07A7137045DA2A16", "3BDD119049372802", "2EEDDA93FFD39C79" },
+ { "04689104C2FD3B2F", "26955F6835AF609A", "D887E0393C2DA6E3" },
+ { "37D06BB516CB7546", "164D5E404F275232", "5F99D04F5B163969" },
+ { "1F08260D1AC2465E", "6B056E18759F5CCA", "4A057A3B24D3977B" },
+ { "584023641ABA6176", "004BD6EF09176062", "452031C1E4FADA8E" },
+ { "025816164629B007", "480D39006EE762F2", "7555AE39F59B87BD" },
+ { "49793EBC79B3258F", "437540C8698F3CFA", "53C55F9CB49FC019" },
+ { "4FB05E1515AB73A7", "072D43A077075292", "7A8E7BFA937E89A3" },
+ { "49E95D6D4CA229BF", "02FE55778117F12A", "CF9C5D7A4986ADB5" },
+ { "018310DC409B26D6", "1D9D5C5018F728C2", "D1ABB290658BC778" },
+ { "1C587F1C13924FEF", "305532286D6F295A", "55CB3774D13EF201" },
+ { "0101010101010101", "0123456789ABCDEF", "FA34EC4847B268B2" },
+ { "1F1F1F1F0E0E0E0E", "0123456789ABCDEF", "A790795108EA3CAE" },
+ { "E0FEE0FEF1FEF1FE", "0123456789ABCDEF", "C39E072D9FAC631D" },
+ { "0000000000000000", "FFFFFFFFFFFFFFFF", "014933E0CDAFF6E4" },
+ { "FFFFFFFFFFFFFFFF", "0000000000000000", "F21E9A77B71C49BC" },
+ { "0123456789ABCDEF", "0000000000000000", "245946885754369A" },
+ { "FEDCBA9876543210", "FFFFFFFFFFFFFFFF", "6B5C5A9C5D9E0A5A" } };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfBlowfish");
+ cipher = new Blowfish();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ harness.check(validityTest(), "validityTest()");
+ harness.check(cloneabilityTest(), "cloneabilityTest()");
+ harness.check(vectorsTest(), "vectorsTest()");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfBlowfish");
+ }
+ }
+
+ /** Test cloneability. */
+ protected boolean cloneabilityTest() throws Exception
+ {
+ int blockSize = cipher.defaultBlockSize();
+ int keySize = cipher.defaultKeySize();
+
+ byte[] pt = new byte[blockSize];
+ byte[] ct1 = new byte[blockSize];
+ byte[] ct2 = new byte[blockSize];
+ byte[] kb = new byte[keySize];
+ HashMap attributes = new HashMap();
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attributes);
+
+ cipher.encryptBlock(pt, 0, pt, 0);
+ IBlockCipher thomas = (IBlockCipher) cipher.clone();
+ thomas.init(attributes);
+ cipher.encryptBlock(pt, 0, ct1, 0);
+ thomas.encryptBlock(pt, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+
+ protected boolean vectorsTest() throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb, pt, ct1, ct2 = new byte[8], cpt = new byte[8];
+ for (int i = 0; i < TV.length; i++)
+ {
+ kb = Util.toBytesFromString(TV[i][0]);
+ pt = Util.toBytesFromString(TV[i][1]);
+ ct1 = Util.toBytesFromString(TV[i][2]);
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+ cipher.reset();
+ cipher.init(attrib);
+ cipher.encryptBlock(pt, 0, ct2, 0);
+ if (!Arrays.equals(ct1, ct2))
+ {
+ return false;
+ }
+ cipher.decryptBlock(ct2, 0, cpt, 0);
+ if (!Arrays.equals(pt, cpt))
+ return false;
+ }
+ return true;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfCast5.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfCast5.java
new file mode 100644
index 00000000..6e85b055
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfCast5.java
@@ -0,0 +1,121 @@
+/* TestOfCast5.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.Cast5;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.TestHarness;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance test for the <code>CAST5</code> cipher. Test vectors are as
+ * per RFC-2144.
+ */
+public class TestOfCast5 extends BaseCipherTestCase
+{
+ /**
+ * 128-bit key = 01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A
+ * plaintext = 01 23 45 67 89 AB CD EF
+ * ciphertext = 23 8B 4F E5 84 7E 44 B2
+ * 80-bit key = 01 23 45 67 12 34 56 78 23 45
+ * = 01 23 45 67 12 34 56 78 23 45 00 00 00 00 00 00
+ * plaintext = 01 23 45 67 89 AB CD EF
+ * ciphertext = EB 6A 71 1A 2C 02 27 1B
+ */
+ private static final String[][] TV = {
+ // key plaintext ciphertext
+ { "0123456712345678234567893456789A", "0123456789ABCDEF", "238B4FE5847E44B2" },
+ { "01234567123456782345", "0123456789ABCDEF", "EB6A711A2C02271B" } };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfCast5");
+ cipher = new Cast5();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ harness.check(validityTest(), "validityTest()");
+ harness.check(cloneabilityTest(), "cloneabilityTest()");
+ harness.check(vectorsTest(), "vectorsTest()");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCast5");
+ }
+ }
+
+ /** Test cloneability. */
+ protected boolean cloneabilityTest() throws Exception
+ {
+ int blockSize = cipher.defaultBlockSize();
+ int keySize = cipher.defaultKeySize();
+
+ byte[] pt = new byte[blockSize];
+ byte[] ct1 = new byte[blockSize];
+ byte[] ct2 = new byte[blockSize];
+ byte[] kb = new byte[keySize];
+ HashMap attributes = new HashMap();
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attributes);
+
+ cipher.encryptBlock(pt, 0, pt, 0);
+ IBlockCipher thomas = (IBlockCipher) cipher.clone();
+ thomas.init(attributes);
+ cipher.encryptBlock(pt, 0, ct1, 0);
+ thomas.encryptBlock(pt, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+
+ protected boolean vectorsTest() throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb, pt, ct1, ct2 = new byte[8], cpt = new byte[8];
+ for (int i = 0; i < TV.length; i++)
+ {
+ kb = Util.toBytesFromString(TV[i][0]);
+ pt = Util.toBytesFromString(TV[i][1]);
+ ct1 = Util.toBytesFromString(TV[i][2]);
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+ cipher.reset();
+ cipher.init(attrib);
+ cipher.encryptBlock(pt, 0, ct2, 0);
+ if (!Arrays.equals(ct1, ct2))
+ return false;
+
+ cipher.decryptBlock(ct2, 0, cpt, 0);
+ if (!Arrays.equals(pt, cpt))
+ return false;
+ }
+ return true;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfCipherFactory.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfCipherFactory.java
new file mode 100644
index 00000000..db05802b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfCipherFactory.java
@@ -0,0 +1,60 @@
+/* TestOfCipherFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.CipherFactory;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the CipherFactory implementation.
+ */
+public class TestOfCipherFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfCipherFactory");
+ String cipher;
+ IBlockCipher algorithm;
+ for (Iterator it = CipherFactory.getNames().iterator(); it.hasNext();)
+ {
+ cipher = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = CipherFactory.getInstance(cipher);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(cipher) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCipherFactory.getInstance("
+ + String.valueOf(cipher) + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfDES.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfDES.java
new file mode 100644
index 00000000..f3195602
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfDES.java
@@ -0,0 +1,375 @@
+/* TestOfDES.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.java.security.Properties;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.DES;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.WeakKeyException;
+import gnu.testlet.TestHarness;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance test for the DES cipher.
+ */
+public class TestOfDES extends BaseCipherTestCase
+{
+ /**
+ * Test vectors from NBS SP-500, "Validating the Correctness of Hardware
+ * Implementations of the NBS Data Encryption Standard".
+ */
+ static final String[][] TV = {
+ // key bytes clear bytes cipher bytes
+ // IP and E test
+ { "0101010101010101", "95F8A5E5DD31D900", "8000000000000000" },
+ { "0101010101010101", "DD7F121CA5015619", "4000000000000000" },
+ { "0101010101010101", "2E8653104F3834EA", "2000000000000000" },
+ { "0101010101010101", "4BD388FF6CD81D4F", "1000000000000000" },
+ { "0101010101010101", "20B9E767B2FB1456", "0800000000000000" },
+ { "0101010101010101", "55579380D77138EF", "0400000000000000" },
+ { "0101010101010101", "6CC5DEFAAF04512F", "0200000000000000" },
+ { "0101010101010101", "0D9F279BA5D87260", "0100000000000000" },
+ { "0101010101010101", "D9031B0271BD5A0A", "0080000000000000" },
+ { "0101010101010101", "424250B37C3DD951", "0040000000000000" },
+ { "0101010101010101", "B8061B7ECD9A21E5", "0020000000000000" },
+ { "0101010101010101", "F15D0F286B65BD28", "0010000000000000" },
+ { "0101010101010101", "ADD0CC8D6E5DEBA1", "0008000000000000" },
+ { "0101010101010101", "E6D5F82752AD63D1", "0004000000000000" },
+ { "0101010101010101", "ECBFE3BD3F591A5E", "0002000000000000" },
+ { "0101010101010101", "F356834379D165CD", "0001000000000000" },
+ { "0101010101010101", "2B9F982F20037FA9", "0000800000000000" },
+ { "0101010101010101", "889DE068A16F0BE6", "0000400000000000" },
+ { "0101010101010101", "E19E275D846A1298", "0000200000000000" },
+ { "0101010101010101", "329A8ED523D71AEC", "0000100000000000" },
+ { "0101010101010101", "E7FCE22557D23C97", "0000080000000000" },
+ { "0101010101010101", "12A9F5817FF2D65D", "0000040000000000" },
+ { "0101010101010101", "A484C3AD38DC9C19", "0000020000000000" },
+ { "0101010101010101", "FBE00A8A1EF8AD72", "0000010000000000" },
+ { "0101010101010101", "750D079407521363", "0000008000000000" },
+ { "0101010101010101", "64FEED9C724C2FAF", "0000004000000000" },
+ { "0101010101010101", "F02B263B328E2B60", "0000002000000000" },
+ { "0101010101010101", "9D64555A9A10B852", "0000001000000000" },
+ { "0101010101010101", "D106FF0BED5255D7", "0000000800000000" },
+ { "0101010101010101", "E1652C6B138C64A5", "0000000400000000" },
+ { "0101010101010101", "E428581186EC8F46", "0000000200000000" },
+ { "0101010101010101", "AEB5F5EDE22D1A36", "0000000100000000" },
+ { "0101010101010101", "E943D7568AEC0C5C", "0000000080000000" },
+ { "0101010101010101", "DF98C8276F54B04B", "0000000040000000" },
+ { "0101010101010101", "B160E4680F6C696F", "0000000020000000" },
+ { "0101010101010101", "FA0752B07D9C4AB8", "0000000010000000" },
+ { "0101010101010101", "CA3A2B036DBC8502", "0000000008000000" },
+ { "0101010101010101", "5E0905517BB59BCF", "0000000004000000" },
+ { "0101010101010101", "814EEB3B91D90726", "0000000002000000" },
+ { "0101010101010101", "4D49DB1532919C9F", "0000000001000000" },
+ { "0101010101010101", "25EB5FC3F8CF0621", "0000000000800000" },
+ { "0101010101010101", "AB6A20C0620D1C6F", "0000000000400000" },
+ { "0101010101010101", "79E90DBC98F92CCA", "0000000000200000" },
+ { "0101010101010101", "866ECEDD8072BB0E", "0000000000100000" },
+ { "0101010101010101", "8B54536F2F3E64A8", "0000000000080000" },
+ { "0101010101010101", "EA51D3975595B86B", "0000000000040000" },
+ { "0101010101010101", "CAFFC6AC4542DE31", "0000000000020000" },
+ { "0101010101010101", "8DD45A2DDF90796C", "0000000000010000" },
+ { "0101010101010101", "1029D55E880EC2D0", "0000000000008000" },
+ { "0101010101010101", "5D86CB23639DBEA9", "0000000000004000" },
+ { "0101010101010101", "1D1CA853AE7C0C5F", "0000000000002000" },
+ { "0101010101010101", "CE332329248F3228", "0000000000001000" },
+ { "0101010101010101", "8405D1ABE24FB942", "0000000000000800" },
+ { "0101010101010101", "E643D78090CA4207", "0000000000000400" },
+ { "0101010101010101", "48221B9937748A23", "0000000000000200" },
+ { "0101010101010101", "DD7C0BBD61FAFD54", "0000000000000100" },
+ { "0101010101010101", "2FBC291A570DB5C4", "0000000000000080" },
+ { "0101010101010101", "E07C30D7E4E26E12", "0000000000000040" },
+ { "0101010101010101", "0953E2258E8E90A1", "0000000000000020" },
+ { "0101010101010101", "5B711BC4CEEBF2EE", "0000000000000010" },
+ { "0101010101010101", "CC083F1E6D9E85F6", "0000000000000008" },
+ { "0101010101010101", "D2FD8867D50D2DFE", "0000000000000004" },
+ { "0101010101010101", "06E7EA22CE92708F", "0000000000000002" },
+ { "0101010101010101", "166B40B44ABA4BD6", "0000000000000001" },
+
+ // PC1 and PC2 test
+ { "8001010101010101", "0000000000000000", "95A8D72813DAA94D" },
+ { "4001010101010101", "0000000000000000", "0EEC1487DD8C26D5" },
+ { "2001010101010101", "0000000000000000", "7AD16FFB79C45926" },
+ { "1001010101010101", "0000000000000000", "D3746294CA6A6CF3" },
+ { "0801010101010101", "0000000000000000", "809F5F873C1FD761" },
+ { "0401010101010101", "0000000000000000", "C02FAFFEC989D1FC" },
+ { "0201010101010101", "0000000000000000", "4615AA1D33E72F10" },
+ { "0180010101010101", "0000000000000000", "2055123350C00858" },
+ { "0140010101010101", "0000000000000000", "DF3B99D6577397C8" },
+ { "0120010101010101", "0000000000000000", "31FE17369B5288C9" },
+ { "0110010101010101", "0000000000000000", "DFDD3CC64DAE1642" },
+ { "0108010101010101", "0000000000000000", "178C83CE2B399D94" },
+ { "0104010101010101", "0000000000000000", "50F636324A9B7F80" },
+ { "0102010101010101", "0000000000000000", "A8468EE3BC18F06D" },
+ { "0101800101010101", "0000000000000000", "A2DC9E92FD3CDE92" },
+ { "0101400101010101", "0000000000000000", "CAC09F797D031287" },
+ { "0101200101010101", "0000000000000000", "90BA680B22AEB525" },
+ { "0101100101010101", "0000000000000000", "CE7A24F350E280B6" },
+ { "0101080101010101", "0000000000000000", "882BFF0AA01A0B87" },
+ { "0101040101010101", "0000000000000000", "25610288924511C2" },
+ { "0101020101010101", "0000000000000000", "C71516C29C75D170" },
+ { "0101018001010101", "0000000000000000", "5199C29A52C9F059" },
+ { "0101014001010101", "0000000000000000", "C22F0A294A71F29F" },
+ { "0101012001010101", "0000000000000000", "EE371483714C02EA" },
+ { "0101011001010101", "0000000000000000", "A81FBD448F9E522F" },
+ { "0101010801010101", "0000000000000000", "4F644C92E192DFED" },
+ { "0101010401010101", "0000000000000000", "1AFA9A66A6DF92AE" },
+ { "0101010201010101", "0000000000000000", "B3C1CC715CB879D8" },
+ { "0101010180010101", "0000000000000000", "19D032E64AB0BD8B" },
+ { "0101010140010101", "0000000000000000", "3CFAA7A7DC8720DC" },
+ { "0101010120010101", "0000000000000000", "B7265F7F447AC6F3" },
+ { "0101010110010101", "0000000000000000", "9DB73B3C0D163F54" },
+ { "0101010108010101", "0000000000000000", "8181B65BABF4A975" },
+ { "0101010104010101", "0000000000000000", "93C9B64042EAA240" },
+ { "0101010102010101", "0000000000000000", "5570530829705592" },
+ { "0101010101800101", "0000000000000000", "8638809E878787A0" },
+ { "0101010101400101", "0000000000000000", "41B9A79AF79AC208" },
+ { "0101010101200101", "0000000000000000", "7A9BE42F2009A892" },
+ { "0101010101100101", "0000000000000000", "29038D56BA6D2745" },
+ { "0101010101080101", "0000000000000000", "5495C6ABF1E5DF51" },
+ { "0101010101040101", "0000000000000000", "AE13DBD561488933" },
+ { "0101010101020101", "0000000000000000", "024D1FFA8904E389" },
+ { "0101010101018001", "0000000000000000", "D1399712F99BF02E" },
+ { "0101010101014001", "0000000000000000", "14C1D7C1CFFEC79E" },
+ { "0101010101012001", "0000000000000000", "1DE5279DAE3BED6F" },
+ { "0101010101011001", "0000000000000000", "E941A33F85501303" },
+ { "0101010101010801", "0000000000000000", "DA99DBBC9A03F379" },
+ { "0101010101010401", "0000000000000000", "B7FC92F91D8E92E9" },
+ { "0101010101010201", "0000000000000000", "AE8E5CAA3CA04E85" },
+ { "0101010101010180", "0000000000000000", "9CC62DF43B6EED74" },
+ { "0101010101010140", "0000000000000000", "D863DBB5C59A91A0" },
+ { "0101010101010120", "0000000000000000", "A1AB2190545B91D7" },
+ { "0101010101010110", "0000000000000000", "0875041E64C570F7" },
+ { "0101010101010108", "0000000000000000", "5A594528BEBEF1CC" },
+ { "0101010101010104", "0000000000000000", "FCDB3291DE21F0C0" },
+ { "0101010101010102", "0000000000000000", "869EFD7F9F265A09" },
+
+ // P test
+ { "1046913489980131", "0000000000000000", "88D55E54F54C97B4" },
+ { "1007103489988020", "0000000000000000", "0C0CC00C83EA48FD" },
+ { "10071034C8980120", "0000000000000000", "83BC8EF3A6570183" },
+ { "1046103489988020", "0000000000000000", "DF725DCAD94EA2E9" },
+ { "1086911519190101", "0000000000000000", "E652B53B550BE8B0" },
+ { "1086911519580101", "0000000000000000", "AF527120C485CBB0" },
+ { "5107B01519580101", "0000000000000000", "0F04CE393DB926D5" },
+ { "1007B01519190101", "0000000000000000", "C9F00FFC74079067" },
+ { "3107915498080101", "0000000000000000", "7CFD82A593252B4E" },
+ { "3107919498080101", "0000000000000000", "CB49A2F9E91363E3" },
+ { "10079115B9080140", "0000000000000000", "00B588BE70D23F56" },
+ { "3107911598090140", "0000000000000000", "406A9A6AB43399AE" },
+ { "1007D01589980101", "0000000000000000", "6CB773611DCA9ADA" },
+ { "9107911589980101", "0000000000000000", "67FD21C17DBB5D70" },
+ { "9107D01589190101", "0000000000000000", "9592CB4110430787" },
+ { "1007D01598980120", "0000000000000000", "A6B7FF68A318DDD3" },
+ { "1007940498190101", "0000000000000000", "4D102196C914CA16" },
+ { "0107910491190401", "0000000000000000", "2DFA9F4573594965" },
+ { "0107910491190101", "0000000000000000", "B46604816C0E0774" },
+ { "0107940491190401", "0000000000000000", "6E7E6221A4F34E87" },
+ { "19079210981A0101", "0000000000000000", "AA85E74643233199" },
+ { "1007911998190801", "0000000000000000", "2E5A19DB4D1962D6" },
+ { "10079119981A0801", "0000000000000000", "23A866A809D30894" },
+ { "1007921098190101", "0000000000000000", "D812D961F017D320" },
+ { "100791159819010B", "0000000000000000", "055605816E58608F" },
+ { "1004801598190101", "0000000000000000", "ABD88E8B1B7716F1" },
+ { "1004801598190102", "0000000000000000", "537AC95BE69DA1E1" },
+ { "1004801598190108", "0000000000000000", "AED0F6AE3C25CDD8" },
+ { "1002911598100104", "0000000000000000", "B3E35A5EE53E7B8D" },
+ { "1002911598190104", "0000000000000000", "61C79C71921A2EF8" },
+ { "1002911598100201", "0000000000000000", "E2F5728F0995013C" },
+ { "1002911698100101", "0000000000000000", "1AEAC39A61F0A464" },
+
+ // S-Box test.
+ { "7CA110454A1A6E57", "01A1D6D039776742", "690F5B0D9A26939B" },
+ { "0131D9619DC1376E", "5CD54CA83DEF57DA", "7A389D10354BD271" },
+ { "07A1133E4A0B2686", "0248D43806F67172", "868EBB51CAB4599A" },
+ { "3849674C2602319E", "51454B582DDF440A", "7178876E01F19B2A" },
+ { "04B915BA43FEB5B6", "42FD443059577FA2", "AF37FB421F8C4095" },
+ { "0113B970FD34F2CE", "059B5E0851CF143A", "86A560F10EC6D85B" },
+ { "0170F175468FB5E6", "0756D8E0774761D2", "0CD3DA020021DC09" },
+ { "43297FAD38E373FE", "762514B829BF486A", "EA676B2CB7DB2B7A" },
+ { "07A7137045DA2A16", "3BDD119049372802", "DFD64A815CAF1A0F" },
+ { "04689104C2FD3B2F", "26955F6835AF609A", "5C513C9C4886C088" },
+ { "37D06BB516CB7546", "164D5E404F275232", "0A2AEEAE3FF4AB77" },
+ { "1F08260D1AC2465E", "6B056E18759F5CCA", "EF1BF03E5DFA575A" },
+ { "584023641ABA6176", "004BD6EF09176062", "88BF0DB6D70DEE56" },
+ { "025816164629B007", "480D39006EE762F2", "A1F9915541020B56" },
+ { "49793EBC79B3258F", "437540C8698F3CFA", "6FBF1CAFCFFD0556" },
+ { "4FB05E1515AB73A7", "072D43A077075292", "2F22E49BAB7CA1AC" },
+ { "49E95D6D4CA229BF", "02FE55778117F12A", "5A6B612CC26CCE4A" },
+ { "018310DC409B26D6", "1D9D5C5018F728C2", "5F4C038ED12B2E41" },
+ { "1C587F1C13924FEF", "305532286D6F295A", "63FAC0D034D9F793" } };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDES");
+ cipher = new DES();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[8]);
+ boolean oldCheckForWeakKeys = Properties.checkForWeakKeys();
+ try
+ {
+ Properties.setCheckForWeakKeys(false);
+
+ harness.check(validityTest(), "validityTest()");
+ harness.check(cloneabilityTest(), "cloneabilityTest()");
+ harness.check(vectorsTest(), "vectorsTest()");
+
+ Properties.setCheckForWeakKeys(true);
+
+ test4WeakKeys(harness);
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfDES");
+ }
+ finally
+ { // return it to its previous value
+ Properties.setCheckForWeakKeys(oldCheckForWeakKeys);
+ }
+ }
+
+ /** Test cloneability. */
+ protected boolean cloneabilityTest() throws Exception
+ {
+ int blockSize = cipher.defaultBlockSize();
+ int keySize = cipher.defaultKeySize();
+
+ byte[] pt = new byte[blockSize];
+ byte[] ct1 = new byte[blockSize];
+ byte[] ct2 = new byte[blockSize];
+ byte[] kb = new byte[keySize];
+ HashMap attributes = new HashMap();
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attributes);
+
+ cipher.encryptBlock(pt, 0, pt, 0);
+ IBlockCipher thomas = (IBlockCipher) cipher.clone();
+ thomas.init(attributes);
+ cipher.encryptBlock(pt, 0, ct1, 0);
+ thomas.encryptBlock(pt, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+
+ protected boolean vectorsTest() throws Exception
+ {
+ HashMap attrib = new HashMap();
+ byte[] kb, pt, ct1, ct2 = new byte[8], cpt = new byte[8];
+ for (int i = 0; i < TV.length; i++)
+ {
+ kb = Util.toBytesFromString(TV[i][0]);
+ pt = Util.toBytesFromString(TV[i][1]);
+ ct1 = Util.toBytesFromString(TV[i][2]);
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+ cipher.reset();
+ cipher.init(attrib);
+ cipher.encryptBlock(pt, 0, ct2, 0);
+ if (!Arrays.equals(ct1, ct2))
+ {
+ return false;
+ }
+ cipher.decryptBlock(ct2, 0, cpt, 0);
+ if (!Arrays.equals(pt, cpt))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private void test4WeakKeys(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDES.test4WeakKeys");
+
+ DES des = (DES) cipher;
+ String msg;
+ int i;
+ for (i = 0; i < DES.WEAK_KEYS.length; i++)
+ {
+ msg = "detecting weak key 0x" + Util.dumpString(DES.WEAK_KEYS[i]);
+ try
+ {
+ des.makeKey(DES.WEAK_KEYS[i], DES.KEY_SIZE);
+ harness.fail(msg);
+ }
+ catch (WeakKeyException x)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg + ": " + String.valueOf(x));
+ }
+ }
+
+ for (i = 0; i < DES.SEMIWEAK_KEYS.length; i++)
+ {
+ msg = "detecting semi-weak key 0x"
+ + Util.dumpString(DES.SEMIWEAK_KEYS[i]);
+ try
+ {
+ des.makeKey(DES.SEMIWEAK_KEYS[i], DES.KEY_SIZE);
+ harness.fail(msg);
+ }
+ catch (WeakKeyException x)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg + ": " + String.valueOf(x));
+ }
+ }
+
+ for (i = 0; i < DES.POSSIBLE_WEAK_KEYS.length; i++)
+ {
+ msg = "detecting possible weak key 0x"
+ + Util.dumpString(DES.POSSIBLE_WEAK_KEYS[i]);
+ try
+ {
+ des.makeKey(DES.POSSIBLE_WEAK_KEYS[i], DES.KEY_SIZE);
+ harness.fail(msg);
+ }
+ catch (WeakKeyException x)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(msg + ": " + String.valueOf(x));
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfKhazad.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfKhazad.java
new file mode 100644
index 00000000..cef91bdd
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfKhazad.java
@@ -0,0 +1,108 @@
+/* TestOfKhazad.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.Khazad;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Khazad} implementation.
+ */
+public class TestOfKhazad extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vt_128;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_d_128;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "49A4CE32AC190E3F", "BD2226C1128B4AD1",
+ "A3C8D3CAB9D196BC", "2C8146E405C2EA36",
+ "9EC02CFC7065D8F8" };
+
+ vt_128 = new String[] { "9E399864F78ECA02", "3EABB25778098FF7",
+ "A359C027CB02BC47", "36E62B8D8DDF2929",
+ "CB4204ACEDDFE80E" };
+
+ mct_ecb_e_128 = new String[] { "1C8ABEB5F5D8337C", "D29DDD7B07AA2E2E",
+ "2DCA0196F9AF94DA", "100AFC93082BC492",
+ "7C4EB4E12D5310BA" };
+
+ mct_ecb_d_128 = new String[] { "0EF3A83A8A874A5A", "BB83871935B33F01",
+ "ED25D06041BB09CF", "A4091D256FFAC8B6",
+ "DAC274A3D13600F8" };
+
+ mct_cbc_e_128 = new String[] { "AB983C213749B3CA", "9B0C44EF8B2EA836",
+ "748AFB0A891F1556", "C7012DE469A78E5D",
+ "DB95DB1BD214C348" };
+
+ mct_cbc_d_128 = new String[] { "DE93205588933B11", "8651C2BC76A096F6",
+ "4C9494F2BA8C55CF", "44EE0CB0AA12B9EC",
+ "6D759B4000216139" };
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfKhazad");
+ cipher = new Khazad();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfKhazad");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfNullCipher.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfNullCipher.java
new file mode 100644
index 00000000..1f5dc661
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfNullCipher.java
@@ -0,0 +1,57 @@
+/* TestOfNullCipher.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.NullCipher;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link NullCipher} implementation.
+ */
+public class TestOfNullCipher extends BaseCipherTestCase
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfNullCipher");
+ cipher = new NullCipher();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfNullCipher");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfRijndael.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfRijndael.java
new file mode 100644
index 00000000..e3ae791c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfRijndael.java
@@ -0,0 +1,236 @@
+/* TestOfRijndael.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.Rijndael;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Rijndael} implementation.
+ */
+public class TestOfRijndael extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vk_192;
+
+ private static final String[] vk_256;
+
+ private static final String[] vt_128;
+
+ private static final String[] vt_192;
+
+ private static final String[] vt_256;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_e_192;
+
+ private static final String[] mct_ecb_e_256;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_ecb_d_192;
+
+ private static final String[] mct_ecb_d_256;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_e_192;
+
+ private static final String[] mct_cbc_e_256;
+
+ private static final String[] mct_cbc_d_128;
+
+ private static final String[] mct_cbc_d_192;
+
+ private static final String[] mct_cbc_d_256;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "0EDD33D3C621E546455BD8BA1418BEC8",
+ "C0CC0C5DA5BD63ACD44A80774FAD5222",
+ "2F0B4B71BC77851B9CA56D42EB8FF080",
+ "6B1E2FFFE8A114009D8FE22F6DB5F876",
+ "9AA042C315F94CBB97B62202F83358F5" };
+
+ vk_192 = new String[] { "DE885DC87F5A92594082D02CC1E1B42C",
+ "C749194F94673F9DD2AA1932849630C1",
+ "0CEF643313912934D310297B90F56ECC",
+ "C4495D39D4A553B225FBA02A7B1B87E1",
+ "636D10B1A0BCAB541D680A7970ADC830" };
+
+ vk_256 = new String[] { "E35A6DCB19B201A01EBCFA8AA22B5759",
+ "5075C2405B76F22F553488CAE47CE90B",
+ "49DF95D844A0145A7DE01C91793302D3",
+ "E7396D778E940B8418A86120E5F421FE",
+ "05F535C36FCEDE4657BE37F4087DB1EF" };
+
+ vt_128 = new String[] { "3AD78E726C1EC02B7EBFE92B23D9EC34",
+ "45BC707D29E8204D88DFBA2F0B0CAD9B",
+ "161556838018F52805CDBD6202002E3F",
+ "F5569B3AB6A6D11EFDE1BF0A64C6854A",
+ "64E82B50E501FBD7DD4116921159B83E" };
+
+ vt_192 = new String[] { "6CD02513E8D4DC986B4AFE087A60BD0C",
+ "423D2772A0CA56DAABB48D2129062987",
+ "1021F2A8DA70EB2219DC16804445FF98",
+ "C636E35B402577F96974D8804295EBB8",
+ "1566D2E57E8393C19E29F892EA28A9A7" };
+
+ vt_256 = new String[] { "DDC6BF790C15760D8D9AEB6F9A75FD4E",
+ "C7098C217C334D0C9BDF37EA13B0822C",
+ "60F0FB0D4C56A8D4EEFEC5264204042D",
+ "73376FBBF654D0686E0E84001477106B",
+ "2F443B52BA5F0C6EA0602C7C4FD259B6" };
+
+ mct_ecb_e_128 = new String[] { "C34C052CC0DA8D73451AFE5F03BE297F",
+ "0AC15A9AFBB24D54AD99E987208272E2",
+ "A3D43BFFA65D0E80092F67A314857870",
+ "355F697E8B868B65B25A04E18D782AFA",
+ "ACC863637868E3E068D2FD6E3508454A" };
+
+ mct_ecb_e_192 = new String[] { "F3F6752AE8D7831138F041560631B114",
+ "77BA00ED5412DFF27C8ED91F3C376172",
+ "2D92DE893574463412BD7D121A94952F",
+ "96650F835912F5E748422727802C6CE1",
+ "5FCCD4B5F125ADC5B85A56DB32283732" };
+
+ mct_ecb_e_256 = new String[] { "8B79EECC93A0EE5DFF30B4EA21636DA4",
+ "C737317FE0846F132B23C8C2A672CE22",
+ "E58B82BFBA53C0040DC610C642121168",
+ "10B296ABB40504995DB71DDA0B7E26FB",
+ "B7198D8E88BAA25234C18517E99BB70D" };
+
+ mct_ecb_d_128 = new String[] { "44416AC2D1F53C583303917E6BE9EBE0",
+ "E3FD51123B48A2E2AB1DB29894202222",
+ "877B88A77AEF04F05546539E17259F53",
+ "C7A71C1B46261602EB1EE48FDA8155A4",
+ "6B6AC8E00FAF7E045ECCFC426A137221" };
+
+ mct_ecb_d_192 = new String[] { "48E31E9E256718F29229319C19F15BA4",
+ "CC01684BE9B29ED01EA7923E7D2380AA",
+ "8726B4E66D6B8FBAA22D42981A5A40CC",
+ "83B9A21A0710FDB9C603797613772ED6",
+ "F15479A2B2C250F7E5C11D333D867CBD" };
+
+ mct_ecb_d_256 = new String[] { "058CCFFDBBCB382D1F6F56585D8A4ADE",
+ "15173A0EB65F5CC05E704EFE61D9E346",
+ "85F083ACC676D91EDD1ABFB43935237A",
+ "42C8F0ABC58E0BEAC32911D2DD9FA8C8",
+ "5E44123D2CA07981B073BB2749F557D6" };
+
+ mct_cbc_e_128 = new String[] { "8A05FC5E095AF4848A08D328D3688E3D",
+ "192D9B3AA10BB2F7846CCBA0085C657A",
+ "40D8DAF6D1FDA0A073B3BD18B7695D2E",
+ "3EDBE80D69A1D2248CA55FC17C4EF3C5",
+ "D87891CF573C99EAE4349A70CA099415" };
+
+ mct_cbc_e_192 = new String[] { "7BD966D53AD8C1BB85D2ADFAE87BB104",
+ "869C061BE9CFEAB5D285B0724A9A8970",
+ "9E58A52B3840DBE16E8063A18220FEE4",
+ "730A256C202B9D57F3C0D73AD4B6CBED",
+ "E79EF11C5C1FD1AB75280BCFFCFE89D4" };
+
+ mct_cbc_e_256 = new String[] { "FE3C53653E2F45B56FCD88B2CC898FF0",
+ "7CE2ABAF8BEF23C4816DC8CE842048A7",
+ "50CD14A12C6852D39654C816BFAF9AC2",
+ "3F411DAD0E339FE281637133BF46BD13",
+ "5BA2C7663A4061719A7CCC2AF2A3EE8A" };
+
+ mct_cbc_d_128 = new String[] { "FACA37E0B0C85373DF706E73F7C9AF86",
+ "F5372F9735C5685F1DA362AF6ECB2940",
+ "5496A4C29C7670F61B5D5DF6181F5947",
+ "940CC5A2AF4F1F8D1862B47BCF63E4CA",
+ "08832415D97820DE305A58A9AD111A9E" };
+
+ mct_cbc_d_192 = new String[] { "5DF678DD17BA4E75B61768C6ADEF7C7B",
+ "F9604074F8FA45AC71959888DD056F9F",
+ "98A957EA6DBE623B7E08F919812A3898",
+ "AD6D29D6482764BB4BC27A87AE5CD877",
+ "DA5EB591FDC48F0D9E4EBD373E5717A3" };
+
+ mct_cbc_d_256 = new String[] { "4804E1818FE6297519A3E88C57310413",
+ "D36C27EBB8FA0BC9FA368DF850FD45FB",
+ "EBCB4DC84155682856D94B442BC597EE",
+ "23AA6A6B4BE8C04E19707CA330804C4E",
+ "9B1AA0F33416484BA68740E821F95CD3" };
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfRijndael");
+ cipher = new Rijndael();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVK(vk_192, cipher, 24), "KAT VK " + algorithm + "-192");
+ harness.check(katVK(vk_256, cipher, 32), "KAT VK " + algorithm + "-256");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(katVT(vt_192, cipher, 24), "KAT VT " + algorithm + "-192");
+ harness.check(katVT(vt_256, cipher, 32), "KAT VT " + algorithm + "-256");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_192, cipher, 24),
+ "MCT ECB Encryption " + algorithm + "-192");
+ harness.check(mctEncryptECB(mct_ecb_e_256, cipher, 32),
+ "MCT ECB Encryption " + algorithm + "-256");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_192, cipher, 24),
+ "MCT ECB Decryption " + algorithm + "-192");
+ harness.check(mctDecryptECB(mct_ecb_d_256, cipher, 32),
+ "MCT ECB Decryption " + algorithm + "-256");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_192, cipher, 24),
+ "MCT CBC Encryption " + algorithm + "-192");
+ harness.check(mctEncryptCBC(mct_cbc_e_256, cipher, 32),
+ "MCT CBC Encryption " + algorithm + "-256");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_192, cipher, 24),
+ "MCT CBC Decryption " + algorithm + "-192");
+ harness.check(mctDecryptCBC(mct_cbc_d_256, cipher, 32),
+ "MCT CBC Decryption " + algorithm + "-256");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfRijndael");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfSerpent.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfSerpent.java
new file mode 100644
index 00000000..0328c165
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfSerpent.java
@@ -0,0 +1,243 @@
+/* TestOfSerpent.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.Serpent;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Serpent} implementation.
+ */
+public class TestOfSerpent extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vk_192;
+
+ private static final String[] vk_256;
+
+ private static final String[] vt_128;
+
+ private static final String[] vt_192;
+
+ private static final String[] vt_256;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_e_192;
+
+ private static final String[] mct_ecb_e_256;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_ecb_d_192;
+
+ private static final String[] mct_ecb_d_256;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_e_192;
+
+ private static final String[] mct_cbc_e_256;
+
+ private static final String[] mct_cbc_d_128;
+
+ private static final String[] mct_cbc_d_192;
+
+ private static final String[] mct_cbc_d_256;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "49AFBFAD9D5A34052CD8FFA5986BD2DD",
+ "0C1E2E4E79BD02C2501096E79B5E73FA",
+ "D769E71B31F4AE12E14CDC48238D2D7B",
+ "BD0276D6BE072CC00B3D426130BF355F",
+ "C191E2121DAEA18EC30957BBCE199A8C" };
+
+ vk_192 = new String[] { "E78E5402C7195568AC3678F7A3F60C66",
+ "23645A0DDD4B0F8B73B6215EA938A59E",
+ "95D262643C94CAB3E5830FC90A3AD119",
+ "2A66AE878814C427CD1BE1B929D69D1B",
+ "C1F74B3C5DF4B485118B6901A22BEF14" };
+
+ vk_256 = new String[] { "ABED96E766BF28CBC0EBD21A82EF0819",
+ "959658CDFCD80356DDE045BBE7B1888D",
+ "04D49CC0FAE714B46B5B177664DF4C28",
+ "39F1B1A339DED740D80B663A057D4866",
+ "DF15B01E30CF9C81688F989809579A86" };
+
+ vt_128 = new String[] { "10B5FFB720B8CB9002A1142B0BA2E94A",
+ "91A7847EF1CD87551B5B4BF6F8E96E2C",
+ "5D32AECE8383FB2EE22CB4A6061D1429",
+ "B4895CAD26DFA1538E9AD80599E1E62A",
+ "3B275D40F7DAF4A3F59DDFAB28FF8715" };
+
+ vt_192 = new String[] { "B10B271BA25257E1294F2B51F076D0D9",
+ "D522A3B8D6D89D4D2A124FDD88F36896",
+ "6FAEFEE5F5255D5465C1BEFA672AF1D3",
+ "409E1D63BC71EB0D6F7ECEAA03025897",
+ "8A7E9FEB4300A2A265F4A14E52011BE1" };
+
+ vt_256 = new String[] { "DA5A7992B1B4AE6F8C004BC8A7DE5520",
+ "F351351B823E3D7A4F3BF390C4F198CB",
+ "A477A65D9DB75C8ED7218C52B64C65BB",
+ "F8019452CBA4FE618D80A6756183B2E0",
+ "D43B7B981B829342FCE0E3EC6F5F4C82" };
+
+ mct_ecb_e_128 = new String[] { "90E7A5BA9497FA1BFC00F7D1A3A86A1E",
+ "5D0C5DA998AAA940D493738892579447",
+ "B5E6510FBBD63D828ADE0B89AE48EF5F",
+ "8056B61DACB4D3F52976EF5B1D4165E8",
+ "3997C4990223E5C70F3CB015F48EC57A" };
+
+ mct_ecb_e_192 = new String[] { "2D8AF7B79EB7F21FDB394C77C3FB8C3A",
+ "D7585ADA56F93796161C56CDBA61AA3F",
+ "654C5EB1018D6086717B89DB97E91A5A",
+ "8F55D4952903B480CE9AE1B2FDCA07F4",
+ "122E10485449687F99562A5B3CE0C022" };
+
+ mct_ecb_e_256 = new String[] { "92EFA3CA9477794D31F4DF7BCE23E60A",
+ "41133A29B97E3B4231549E8C2D0AF27E",
+ "6EE8EDC74DCFEFD0C7BEAEE4CBCBC9C2",
+ "59DD509F8B303CE5527D20D33BD16697",
+ "E7C035318D676702FB9BE6802459951A" };
+
+ mct_ecb_d_128 = new String[] { "47C6786045BB9D30F4029E7CCCCD1CAE",
+ "003380E19F10065740394F48E2FE80B7",
+ "7A4F7DB38C52A8B711B778A38D203B6B",
+ "FA57C160B1B826EA22F531DC593DB5B4",
+ "08E2EA201AB8E452BB4584A09A4633CE" };
+
+ mct_ecb_d_192 = new String[] { "0FB9B00AE4E6E0F328DDC43CEE462898",
+ "2B088460D9760C2B31F45177036DC67E",
+ "92348D985879F9CAB7A996D46A691BF1",
+ "45877877B396CD8DF70259B89D333802",
+ "5191198DCD3EB19484BD813DC1358697" };
+
+ mct_ecb_d_256 = new String[] { "CFF2F5875D0FB0D3217052FC9D7B94A3",
+ "BFFB4E6FCCD8345DA6A443852C56CB29",
+ "060564434A8BFE5AA08A9AABFD4235C1",
+ "DAA415F8D036A0A8A548A30F072A939F",
+ "0ED586E6CB70CF5DB8E92145039A344B" };
+
+ mct_cbc_e_128 = new String[] { "9EA101ECEBAA41C712BCB0D9BAB3E2E4",
+ "F86B2C265B9C75869F31E2C684C13E9F",
+ "CC1810DDE499DC51461C2B7635288935",
+ "5772284ED8BB79B1AD054FD6481001E2",
+ "19BC42A4D5504F5188ABF768D2710C85" };
+
+ mct_cbc_e_192 = new String[] { "71DA83C1C5FBE855469726F8BE27E9D2",
+ "4613DECB19EC4D226B2A1E894BD7883C",
+ "34ED7BBC7761A44DBD2B2462D3FA1277",
+ "E1FADB014F9BC8FDCF76DC280B51E57C",
+ "97EA261B6F72512A0FD4CE545B698F1E" };
+
+ mct_cbc_e_256 = new String[] { "61558018134F3B22BD2E8F4E5D48FE9A",
+ "86D2905FA3F2FDCDA12A51106BBF1B77",
+ "96FA8DAD842B398799AB04A83747D0A4",
+ "F22567FE517E7345D6ABBDD41FB0FF8B",
+ "BF17C92289EA278FBA70F128BC36CCD1" };
+
+ mct_cbc_d_128 = new String[] { "0C81512847A5C6E7A1B8C7D15EFA1ACB",
+ "E5686F847D5F6A5A6BB501CC8B8456A1",
+ "BD2703C15F749213B83EADD2E3028AE0",
+ "BE7E1BE63AE8EF1B0AE088809CAC87D4",
+ "AE65B7EBB75E6BFF3CF653F9E57A53B2" };
+
+ mct_cbc_d_192 = new String[] { "94463805DCE72D0F0379B44F8B418A93",
+ "722A8B9AAFB559A0C79661CC7AB46629",
+ "CC8C741DCEB88C076B17268D24593D6F",
+ "C513F538F32449EB90257E37DF823A20",
+ "912A0A012B42FE6BE8A9F04AF9D048D2" };
+
+ mct_cbc_d_256 = new String[] { "170E1E83AAC120770660422756C188E6",
+ "432E4B5D7B619BCD6E9C969B270901DD",
+ "6BD145CA6C07751335FAD4B144EA2A71",
+ "8E2F5CE1C20081DA0AE47CA728032EC8",
+ "3F1D62538956298702A6E5F95DEB25A1" };
+ }
+
+ public TestOfSerpent()
+ {
+ super(LITTLE_ENDIAN);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSerpent");
+ cipher = new Serpent();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVK(vk_192, cipher, 24), "KAT VK " + algorithm + "-192");
+ harness.check(katVK(vk_256, cipher, 32), "KAT VK " + algorithm + "-256");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(katVT(vt_192, cipher, 24), "KAT VT " + algorithm + "-192");
+ harness.check(katVT(vt_256, cipher, 32), "KAT VT " + algorithm + "-256");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_192, cipher, 24),
+ "MCT ECB Encryption " + algorithm + "-192");
+ harness.check(mctEncryptECB(mct_ecb_e_256, cipher, 32),
+ "MCT ECB Encryption " + algorithm + "-256");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_192, cipher, 24),
+ "MCT ECB Decryption " + algorithm + "-192");
+ harness.check(mctDecryptECB(mct_ecb_d_256, cipher, 32),
+ "MCT ECB Decryption " + algorithm + "-256");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_192, cipher, 24),
+ "MCT CBC Encryption " + algorithm + "-192");
+ harness.check(mctEncryptCBC(mct_cbc_e_256, cipher, 32),
+ "MCT CBC Encryption " + algorithm + "-256");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_192, cipher, 24),
+ "MCT CBC Decryption " + algorithm + "-192");
+ harness.check(mctDecryptCBC(mct_cbc_d_256, cipher, 32),
+ "MCT CBC Decryption " + algorithm + "-256");
+// new TestOfNistVectors("serpent", TestOfNistVectors.LITTLE_ENDIAN)
+// .test(harness);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSerpent");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfSquare.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfSquare.java
new file mode 100644
index 00000000..9af54e05
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfSquare.java
@@ -0,0 +1,120 @@
+/* TestOfSquare.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.Square;
+import gnu.testlet.TestHarness;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Square} implementation.
+ */
+public class TestOfSquare extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vt_128;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_d_128;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "05F8AAFDEFB4F5F9C751E5B36C8A37D8",
+ "60AFFC9B2312B1397177251CC9296391",
+ "D67B7E07C38F311446E16DDD9EA96EBE",
+ "39207579067031706FAB8C3A5C6E5524",
+ "FC4F2602A3F6AC34F56906C2EEEE40C5" };
+
+ vt_128 = new String[] { "C17B878EAF7D8CA82414E6E4C4A95149",
+ "0A5C0887A1402D3C1A1F00298FD4F65D",
+ "B5CD1003E2234CACB6E0F8124671FC46",
+ "422BC7FBD31D4DBB445065C0B96250FD",
+ "E528EB4AAED24077717DE65E2A934757" };
+
+ mct_ecb_e_128 = new String[] { "04623E016479F2AF395F6BE61CF9E797",
+ "68ABB73D5E60834F47974BE90D412556",
+ "9137BB63EF3F92EB04E189BA95D3DF37",
+ "C0143A7B13DF13BFF3350861EC20D25B",
+ "AF0E869F42E3E14ADF0A5B04110B3AE5" };
+
+ mct_ecb_d_128 = new String[] { "F064F8B9F358306CB8849C8194A468FC",
+ "7DAE38E143FE19A07A23F0E303AB0CE5",
+ "F8DFB20ABE6CFA2D9EC2EB9B7547B44B",
+ "FDCCAF31173676F01F81283B809097D1",
+ "75EB0C8884DE3DB0FC92695047E8AAC8" };
+
+ mct_cbc_e_128 = new String[] { "36987073BCE283781E6E1EF0433DA1DD",
+ "5433C261BEB31FEEDA016F6964BADB30",
+ "7AA8B93ECFAB1A27ACD0A8B74D5D1AE7",
+ "3AF465A0FB987C80879FACA8D26D5FEE",
+ "2100C9742DE65007D3524DEC7A9858BB" };
+
+ mct_cbc_d_128 = new String[] { "8FE89D15BE002BCA733E2A69C7D49AB5",
+ "FCBE647F166FCD6C5C8C6741608E62DB",
+ "B6F3BD29C2D260D5C0E223C54B9D877D",
+ "4179351A962BAC5639D95B46DCB768C8",
+ "71A450A6B86A2D25BB0177E0AEAFBB93" };
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSquare");
+ cipher = new Square();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSquare");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfTripleDES.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfTripleDES.java
new file mode 100644
index 00000000..cc0d0852
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfTripleDES.java
@@ -0,0 +1,240 @@
+/* TestOfTripleDES.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.java.security.Properties;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.TripleDES;
+import gnu.testlet.TestHarness;
+
+import java.security.InvalidKeyException;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance test for the Triple-DES cipher.
+ */
+public class TestOfTripleDES extends BaseCipherTestCase
+{
+ /*
+ * Test vectors from the "Triple DES Monte Carlo (Modes) Test Sample
+ * Results", from <a
+ * href="http://csrc.nist.gov/cryptval/des/tripledes-vectors.zip">http://csrc.nist.gov/cryptval/des/tripledes-vectors.zip</a>.
+ */
+
+ /** The ECB encryption monte-carlo tests. */
+ static final String[][] E_TV = {
+ // key bytes (3 lines)
+ // plain bytes cipher bytes
+ { "0123456789abcdef"
+ + "0123456789abcdef"
+ + "0123456789abcdef", // 1-key
+ "4e6f772069732074", "6a2a19f41eca854b" },
+ { "0123456789abcdef"
+ + "23456789abcdef01"
+ + "0123456789abcdef", // 2-key
+ "4e6f772069732074", "03e69f5bfa58eb42" },
+ { "0123456789abcdef"
+ + "23456789abcdef01"
+ + "456789abcdef0123", // 3-key
+ "4e6f772069732074", "dd17e8b8b437d232" },
+ { "6b085d92976149a4"
+ + "6b085d92976149a4"
+ + "6b085d92976149a4", // 1-key
+ "6a2a19f41eca854b", "ce5d6c7b63177c18" },
+ { "02c4da3d73f226ad"
+ + "1cbce0f2bacd3b15"
+ + "02c4da3d73f226ad", // 2-key
+ "03e69f5bfa58eb42", "262a60f9743e1fd8" },
+ { "dc34addf3d9d1fdc"
+ + "976d456702cef4fd"
+ + "ad49c2ba0b2f975b", // 3-key
+ "dd17e8b8b437d232", "3145bcfc1c19382f" } };
+
+ /** The ECB decryption monte-carlo tests. */
+ static final String[][] D_TV = {
+ { "0123456789abcdef"
+ + "0123456789abcdef"
+ + "0123456789abcdef", // 1-key
+ "4e6f772069732074", "cdd64f2f9427c15d" },
+ { "0123456789abcdef"
+ + "23456789abcdef01"
+ + "0123456789abcdef", // 2-key
+ "4e6f772069732074", "6996c8fa47a2abeb" },
+ { "0123456789abcdef"
+ + "23456789abcdef01"
+ + "456789abcdef0123", // 3-key
+ "4e6f772069732074", "8325397644091a0a" },
+ { "cdf40b491c8c0db3"
+ + "cdf40b491c8c0db3"
+ + "cdf40b491c8c0db3", // 1-key
+ "cdd64f2f9427c15d", "5bb675e3db3a7f3b" },
+ { "68b58c9dce086704"
+ + "529dce3719e9e0da"
+ + "68b58c9dce086704", // 2-key
+ "6996c8fa47a2abeb", "6b177e016e6ae12d" },
+ { "83077c10cda2d6e5"
+ + "296240fd8c834fcd"
+ + "8fdac4fbe5ae978f", // 3-key
+ "8325397644091a0a", "c67901abdc008c89" } };
+
+ /** The attributes map we'll use to setup the cipher. */
+ private HashMap attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTripleDES");
+ cipher = new TripleDES();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(8));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[24]);
+
+ boolean oldCheckForWeakKeys = Properties.checkForWeakKeys();
+ try
+ {
+ Properties.setCheckForWeakKeys(false);
+
+ harness.check(validityTest(), "validityTest()");
+ harness.check(cloneabilityTest(), "cloneabilityTest()");
+ harness.check(vectorsTest(), "vectorsTest()");
+ harness.check(des1KeyTest(), "des1KeyTest()");
+ harness.check(des2KeyTest(), "des2KeyTest()");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTripleDES");
+ }
+ finally
+ { // return it to its previous value
+ Properties.setCheckForWeakKeys(oldCheckForWeakKeys);
+ }
+ }
+
+ /** Test cloneability. */
+ protected boolean cloneabilityTest() throws Exception
+ {
+ int blockSize = cipher.defaultBlockSize();
+ int keySize = cipher.defaultKeySize();
+
+ byte[] pt = new byte[blockSize];
+ byte[] ct1 = new byte[blockSize];
+ byte[] ct2 = new byte[blockSize];
+ byte[] kb = new byte[keySize];
+ HashMap attributes = new HashMap();
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+
+ cipher.reset();
+ cipher.init(attributes);
+
+ cipher.encryptBlock(pt, 0, pt, 0);
+ IBlockCipher thomas = (IBlockCipher) cipher.clone();
+ thomas.init(attributes);
+ cipher.encryptBlock(pt, 0, ct1, 0);
+ thomas.encryptBlock(pt, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+
+ protected boolean vectorsTest() throws Exception
+ {
+ for (int i = 0; i < E_TV.length; i++)
+ if (! encryptTest(E_TV[i][0], E_TV[i][1], E_TV[i][2]))
+ return false;
+
+ for (int i = 0; i < D_TV.length; i++)
+ if (! decryptTest(D_TV[i][0], D_TV[i][1], D_TV[i][2]))
+ return false;
+
+ return true;
+ }
+
+ private boolean des1KeyTest() throws Exception
+ {
+ if (! encryptTest(E_TV[0][0].substring(0, 16), E_TV[0][1], E_TV[0][2]))
+ return false;
+ if (! encryptTest(E_TV[3][0].substring(0, 16), E_TV[3][1], E_TV[3][2]))
+ return false;
+
+ if (! decryptTest(D_TV[0][0].substring(0, 16), D_TV[0][1], D_TV[0][2]))
+ return false;
+ if (! decryptTest(D_TV[3][0].substring(0, 16), D_TV[3][1], D_TV[3][2]))
+ return false;
+
+ return true;
+ }
+
+ private boolean des2KeyTest() throws Exception
+ {
+ if (! encryptTest(E_TV[1][0].substring(0, 32), E_TV[1][1], E_TV[1][2]))
+ return false;
+ if (! encryptTest(E_TV[4][0].substring(0, 32), E_TV[4][1], E_TV[4][2]))
+ return false;
+
+ if (! decryptTest(D_TV[1][0].substring(0, 32), D_TV[1][1], D_TV[1][2]))
+ return false;
+ if (! decryptTest(D_TV[4][0].substring(0, 32), D_TV[4][1], D_TV[4][2]))
+ return false;
+
+ return true;
+ }
+
+ private boolean encryptTest(String key, String plainText, String cipherText)
+ throws InvalidKeyException, IllegalStateException
+ {
+ attributes.clear();
+ byte[] kb = Util.toBytesFromString(key);
+ byte[] pt = Util.toBytesFromString(plainText);
+ byte[] ct1 = Util.toBytesFromString(cipherText);
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+ cipher.reset();
+ cipher.init(attributes);
+ byte[] ct2 = new byte[8]; // 3-DES block size
+ cipher.encryptBlock(pt, 0, ct2, 0);
+ for (int j = 0; j < 9999; j++)
+ cipher.encryptBlock(ct2, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+
+ private boolean decryptTest(String key, String plainText, String cipherText)
+ throws InvalidKeyException, IllegalStateException
+ {
+ attributes.clear();
+ byte[] kb = Util.toBytesFromString(key);
+ byte[] pt = Util.toBytesFromString(plainText);
+ byte[] ct1 = Util.toBytesFromString(cipherText);
+ attributes.put(IBlockCipher.KEY_MATERIAL, kb);
+ cipher.reset();
+ cipher.init(attributes);
+ byte[] ct2 = new byte[8]; // 3-DES block size
+ cipher.decryptBlock(pt, 0, ct2, 0);
+ for (int j = 0; j < 9999; j++)
+ cipher.decryptBlock(ct2, 0, ct2, 0);
+
+ return Arrays.equals(ct1, ct2);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/cipher/TestOfTwofish.java b/gnu/testlet/gnu/javax/crypto/cipher/TestOfTwofish.java
new file mode 100644
index 00000000..490e7195
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/cipher/TestOfTwofish.java
@@ -0,0 +1,237 @@
+/* TestOfTwofish.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: BaseCipherTestCase
+
+package gnu.testlet.gnu.javax.crypto.cipher;
+
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.cipher.Twofish;
+import gnu.testlet.TestHarness;
+
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the {@link Twofish} implementation.
+ */
+public class TestOfTwofish extends BaseCipherTestCase
+{
+ // KAT and MCT vectors used in this test case
+ private static final String[] vk_128;
+
+ private static final String[] vk_192;
+
+ private static final String[] vk_256;
+
+ private static final String[] vt_128;
+
+ private static final String[] vt_192;
+
+ private static final String[] vt_256;
+
+ private static final String[] mct_ecb_e_128;
+
+ private static final String[] mct_ecb_e_192;
+
+ private static final String[] mct_ecb_e_256;
+
+ private static final String[] mct_ecb_d_128;
+
+ private static final String[] mct_ecb_d_192;
+
+ private static final String[] mct_ecb_d_256;
+
+ private static final String[] mct_cbc_e_128;
+
+ private static final String[] mct_cbc_e_192;
+
+ private static final String[] mct_cbc_e_256;
+
+ private static final String[] mct_cbc_d_128;
+
+ private static final String[] mct_cbc_d_192;
+
+ private static final String[] mct_cbc_d_256;
+
+ // static initialiser
+ static
+ {
+ vk_128 = new String[] { "6BFD32804A1C3206C4BF85EB11241F89",
+ "F097147AE851845984DC97D5FAE40CF9",
+ "6117F1977C5ABD9647C56544D9458444",
+ "75A6240AAE357DEDDF99936705618284",
+ "F026BFDF6BFBC7E50C46C533BD271C24" };
+
+ vk_192 = new String[] { "B5AED133641004F4121B66E7DB8F2FF0",
+ "998110F200555A32C6C123E66CF87DE9",
+ "2DBAEEEC682DCC957C2D51B0990E123A",
+ "BAEC0A31F6557D6D13B888A94F63058C",
+ "E51ADC9773E785730586E6812A0F0FA5" };
+
+ vk_256 = new String[] { "785229B51B515F30A1FCC88B969A4E47",
+ "B095E0619E70CDF5F4BC6E88079CF22F",
+ "44F32AEAE82516AC8857C1985B7109EC",
+ "B2BBE93B433C8F0415B90282E788C071",
+ "9E953EBAA3B13F43F90908B53DAA0C09" };
+
+ vt_128 = new String[] { "73B9FF14CF2589901FF52A0D6F4B7EDE",
+ "F5A9150BAB6D6AEBD6B4F97D9E93B28B",
+ "C30F8B221FD6D3996F973CDCDC6E305C",
+ "D6A531FE826CB0454F2D567A20018CB7",
+ "B62324BE427332A6089C7BE40D40292E" };
+
+ vt_192 = new String[] { "62EF193EDB7D399ACA50EC1CBE5398D8",
+ "E7A58D547688BA8B69DA949E38AA6FAD",
+ "71579F70A8EDB2BA5C00C513E2D7DEEB",
+ "C6171EF892F8224DC5FAE230AF629F52",
+ "C6A61053C48D7ECD7DDD12DB0F316AD7" };
+
+ vt_256 = new String[] { "23A385F617F313DAC05BCB7EABD61807",
+ "35BE2B4738602A1DA3DE5C9E7E871923",
+ "03E8BB7A568E95BA792DCE77D5523C2B",
+ "D3ACBE92C482D2E806FD837E41DBB288",
+ "DC3B1C37C69B4059EAADF03FCD016EB4" };
+
+ mct_ecb_e_128 = new String[] { "282BE7E4FA1FBDC29661286F1F310B7E",
+ "C8E1D477621ACC37742BD16032075654",
+ "D5187E7D6B8BE9517DAC4A8AF4A552EA",
+ "211B6F0C6061068D203440ADEFC45BAB",
+ "E94DB85DAE438578A462277AC251F102" };
+
+ mct_ecb_e_192 = new String[] { "9AB71D7F280FF79F0D135BBD5FAB7E37",
+ "A1A3C49FD659216172CDE292CE5F5226",
+ "056E89A3D7BE7634B640B843DA265D9C",
+ "66C7C98F2D871D060303E0841FD7E691",
+ "98661C46398A58AF3C15B0B90F6A82CD" };
+
+ mct_ecb_e_256 = new String[] { "04F2F36CA927AE506931DE8F78B2513C",
+ "04EAD2A58C67FEFCD4485D231C7AE4D7",
+ "01BF7F83A2CF4D8F31B5F913FB372389",
+ "41C1A5A2CEB3F7095E795DBCEE0F90F2",
+ "1E3A44C7BC6EE153874B6A462676B494" };
+
+ mct_ecb_d_128 = new String[] { "21D3F7F6724513946B72CFAE47DA2EED",
+ "DD7D3CBE24EC771704F531ED82CE8AEE",
+ "A24CDF52A32A27AA1700AD46A70C44AB",
+ "C46DA91E739DDB027E8D06CE28E77478",
+ "AAD1229FE482AAB37371C029B42F9D2C" };
+
+ mct_ecb_d_192 = new String[] { "B4582FA55072FCFEF538F39072F234A9",
+ "6F168851543EA0ADAF932CD68A3C2563",
+ "02CE0B206F0560B84AB8CEB08685056B",
+ "9FBE781AC7240292C4B9D2137EF9BB80",
+ "189CCF7178D4FBD43AE162941241157E" };
+
+ mct_ecb_d_256 = new String[] { "BC7D078C4872063869DEAB891FB42761",
+ "AB2F67D3AA11747C96CA942CE40925E1",
+ "2CEF3C1F8FE43F34456007F87DD4D710",
+ "6F1294DE3371D9E33652A7D7C2CC8C8F",
+ "B8C275452476F61F0EEF0651E4949795" };
+
+ mct_cbc_e_128 = new String[] { "3CC3B181E1495D0495D652B66921DA0F",
+ "695250B109C6F71D410AC38B0BBDA3D2",
+ "0338A3EDB1DF10B464D3AF2C01A803BB",
+ "FE5C77C4C15AB0894FEC0A1FE993B90C",
+ "22BAF21C93BD8A04FB57E6753D7A0EB0" };
+
+ mct_cbc_e_192 = new String[] { "A9F5F1AE592B31D73070C930C766FAC4",
+ "B6F6D6B0A73B6A24179795BFBEF14B7B",
+ "EA1BBAC95B06F3E7A08798C03E7DBA59",
+ "154F9F2954E62A88C8DCA50A7EEE6F2E",
+ "2EC290F031CC013653604C80AAD1D378" };
+
+ mct_cbc_e_256 = new String[] { "EA7162E65490B03B1AE4871FB35EF23B",
+ "549FF6C6274F034211C31FADF3F22571",
+ "CF222616B0E4F8E48967D769456B916B",
+ "957108025BFD57125B40057BC2DE4FE2",
+ "6F725C5950133F82EF021A94CADC8508" };
+
+ mct_cbc_d_128 = new String[] { "329B242F4ED7DF3B025472F409508C6E",
+ "39408154CE557E72A4BBE3FCA83372A2",
+ "8AB110F9DB27FA8ADD77C3BAFA171A91",
+ "F54B5DB20DEBB29D09443C284D92E58A",
+ "6E0D8F89398D2525316E07409ACD12C0" };
+
+ mct_cbc_d_192 = new String[] { "26107A7854B5D887B3AAC17909D7D5C9",
+ "C2628E2DB97B62247927A4C9FFEB5BDA",
+ "06B781BC75DD89B63BAB68231097F043",
+ "7699C76E2D7048988D9A89C3C79622EC",
+ "D6F20664C25F122269E798DAC84F7DDF" };
+
+ mct_cbc_d_256 = new String[] { "2CBA6271A1044F90C30BA8FE91E1C163",
+ "05F05148EF495836AB0DA226B2E9D0C2",
+ "A792AC61E7110C434BC2BBCAB6E53CAE",
+ "4C81F5BDC1081170FF96F50B1F76A566",
+ "BD959F5B787037631A37051EA5F369F8" };
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTwofish");
+ cipher = new Twofish();
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ attrib.put(IBlockCipher.KEY_MATERIAL, new byte[16]);
+ try
+ {
+ cipher.init(attrib);
+ String algorithm = cipher.name();
+ harness.check(validityTest(), "validityTest(" + algorithm + ")");
+ harness.check(cloneabilityTest(), "cloneabilityTest(" + algorithm + ")");
+ harness.check(katVK(vk_128, cipher, 16), "KAT VK " + algorithm + "-128");
+ harness.check(katVK(vk_192, cipher, 24), "KAT VK " + algorithm + "-192");
+ harness.check(katVK(vk_256, cipher, 32), "KAT VK " + algorithm + "-256");
+ harness.check(katVT(vt_128, cipher, 16), "KAT VT " + algorithm + "-128");
+ harness.check(katVT(vt_192, cipher, 24), "KAT VT " + algorithm + "-192");
+ harness.check(katVT(vt_256, cipher, 32), "KAT VT " + algorithm + "-256");
+ harness.check(mctEncryptECB(mct_ecb_e_128, cipher, 16),
+ "MCT ECB Encryption " + algorithm + "-128");
+ harness.check(mctEncryptECB(mct_ecb_e_192, cipher, 24),
+ "MCT ECB Encryption " + algorithm + "-192");
+ harness.check(mctEncryptECB(mct_ecb_e_256, cipher, 32),
+ "MCT ECB Encryption " + algorithm + "-256");
+ harness.check(mctDecryptECB(mct_ecb_d_128, cipher, 16),
+ "MCT ECB Decryption " + algorithm + "-128");
+ harness.check(mctDecryptECB(mct_ecb_d_192, cipher, 24),
+ "MCT ECB Decryption " + algorithm + "-192");
+ harness.check(mctDecryptECB(mct_ecb_d_256, cipher, 32),
+ "MCT ECB Decryption " + algorithm + "-256");
+ harness.check(mctEncryptCBC(mct_cbc_e_128, cipher, 16),
+ "MCT CBC Encryption " + algorithm + "-128");
+ harness.check(mctEncryptCBC(mct_cbc_e_192, cipher, 24),
+ "MCT CBC Encryption " + algorithm + "-192");
+ harness.check(mctEncryptCBC(mct_cbc_e_256, cipher, 32),
+ "MCT CBC Encryption " + algorithm + "-256");
+ harness.check(mctDecryptCBC(mct_cbc_d_128, cipher, 16),
+ "MCT CBC Decryption " + algorithm + "-128");
+ harness.check(mctDecryptCBC(mct_cbc_d_192, cipher, 24),
+ "MCT CBC Decryption " + algorithm + "-192");
+ harness.check(mctDecryptCBC(mct_cbc_d_256, cipher, 32),
+ "MCT CBC Decryption " + algorithm + "-256");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTwofish");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries b/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries
new file mode 100644
index 00000000..3b906616
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries
@@ -0,0 +1,15 @@
+/TestOfCipher.java/1.2/Fri Jun 9 11:12:10 2006//
+/TestOfCipherEngineInit.java/1.6/Fri Jul 14 14:16:53 2006//
+/TestOfCipherOutputStream.java/1.1/Sun Oct 22 16:15:00 2006//
+/TestOfCipherWrapUnwrap.java/1.1/Sun Jul 16 02:41:19 2006//
+/TestOfDHKeyAgreement.java/1.1/Thu Feb 23 13:06:49 2006//
+/TestOfDHKeyAgreement2.java/1.1/Wed Jun 28 10:36:17 2006//
+/TestOfDHKeyFactory.java/1.1/Thu Feb 23 13:06:49 2006//
+/TestOfMac.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfOtherProviders.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPR25981.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPR27228.java/1.1/Mon Jul 24 10:55:33 2006//
+/TestOfPR27849.java/1.1/Tue Jun 13 10:54:00 2006//
+/TestOfPR27853.java/1.2/Sun Jun 11 07:26:45 2006//
+/TestOfTripleDESParityAdjustment.java/1.1/Sun Jul 16 02:41:19 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries.Log b/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries.Log
new file mode 100644
index 00000000..89530098
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/keyring////
diff --git a/gnu/testlet/gnu/javax/crypto/jce/CVS/Repository b/gnu/testlet/gnu/javax/crypto/jce/CVS/Repository
new file mode 100644
index 00000000..157a8ae7
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/jce
diff --git a/gnu/testlet/gnu/javax/crypto/jce/CVS/Root b/gnu/testlet/gnu/javax/crypto/jce/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfCipher.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipher.java
new file mode 100644
index 00000000..7ecbb37a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipher.java
@@ -0,0 +1,360 @@
+/* TestOfCipher.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.cipher.CipherFactory;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.javax.crypto.pad.IPad;
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.Security;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Conformance tests for the JCE Provider implementations of the Cipher SPI
+ * classes.
+ */
+public class TestOfCipher implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownCipher(harness);
+ testEquality(harness);
+ testPadding(harness);
+ testPartial(harness);
+ testDoFinal(harness);
+ }
+
+ /** Should fail with an unknown algorithm. */
+ public void testUnknownCipher(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownCipher");
+ try
+ {
+ Cipher.getInstance("Godot", Registry.GNU_CRYPTO);
+ harness.fail("testUnknownCipher()");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Tests if the result of using a cipher through gnu.crypto Factory classes
+ * yields same value as using instances obtained the JCE way.
+ */
+ public void testEquality(TestHarness harness)
+ {
+ harness.checkPoint("testEquality");
+ String cipherName = null, modeName;
+ IMode gnu = null;
+ Cipher jce = null;
+ HashMap attrib = new HashMap();
+ byte[] pt = null;
+ // byte[] iv = null;
+ byte[] ct1 = null, ct2 = null;
+ byte[] cpt1 = null, cpt2 = null;
+ Iterator ci, mi;
+ int bs;
+ try
+ {
+ for (ci = CipherFactory.getNames().iterator(); ci.hasNext();)
+ {
+ cipherName = (String) ci.next();
+ IBlockCipher cipher = CipherFactory.getInstance(cipherName);
+ bs = cipher.defaultBlockSize();
+ for (mi = ModeFactory.getNames().iterator(); mi.hasNext();)
+ {
+ modeName = (String) mi.next();
+ gnu = ModeFactory.getInstance(modeName, cipher, bs);
+ jce = Cipher.getInstance(cipherName + "/" + modeName
+ + "/NoPadding", Registry.GNU_CRYPTO);
+ pt = new byte[bs];
+ for (int i = 0; i < bs; i++)
+ {
+ pt[i] = (byte) i;
+ }
+ attrib.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(bs));
+ attrib.put(IMode.IV, pt);
+ for (Iterator ks = cipher.keySizes(); ks.hasNext();)
+ {
+ byte[] kb = new byte[((Integer) ks.next()).intValue()];
+ for (int i = 0; i < kb.length; i++)
+ {
+ kb[i] = (byte) i;
+ }
+ attrib.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+ gnu.reset();
+ gnu.init(attrib);
+ ct1 = new byte[bs];
+ gnu.update(pt, 0, ct1, 0);
+ jce.init(Cipher.ENCRYPT_MODE,
+ new SecretKeySpec(kb, cipherName),
+ new IvParameterSpec(pt));
+ ct2 = new byte[bs];
+ jce.doFinal(pt, 0, bs, ct2, 0);
+ harness.check(Arrays.equals(ct1, ct2), "testEquality("
+ + cipherName + ")");
+
+ attrib.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ cpt1 = new byte[bs];
+ gnu.reset();
+ gnu.init(attrib);
+ gnu.update(ct1, 0, cpt1, 0);
+ harness.check(Arrays.equals(pt, cpt1), "testEquality("
+ + cipherName + ")");
+
+ jce.init(Cipher.DECRYPT_MODE,
+ new SecretKeySpec(kb, cipherName),
+ new IvParameterSpec(pt));
+ cpt2 = new byte[bs];
+ jce.doFinal(ct2, 0, bs, cpt2, 0);
+ harness.check(Arrays.equals(pt, cpt2), "testEquality("
+ + cipherName + ")");
+
+ harness.check(Arrays.equals(cpt1, cpt2), "testEquality("
+ + cipherName + ")");
+ }
+ }
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testEquality(" + cipherName + "): " + String.valueOf(x));
+ }
+ }
+
+ /**
+ * Test that the padding results in the same cipher/plaintexts for instances
+ * derived from both the GNU Factory and the JCE one.
+ */
+ public void testPadding(TestHarness harness)
+ {
+ harness.checkPoint("testPadding");
+ String padName = null;
+ IMode gnu = ModeFactory.getInstance("ECB", "AES", 16);
+ IPad pad;
+ Cipher jce;
+ byte[] kb = new byte[32];
+ for (int i = 0; i < kb.length; i++)
+ kb[i] = (byte) i;
+ byte[] pt = new byte[42];
+ for (int i = 0; i < pt.length; i++)
+ pt[i] = (byte) i;
+ byte[] ppt = new byte[48]; // padded plaintext.
+ System.arraycopy(pt, 0, ppt, 0, 42);
+ byte[] ct1 = new byte[48], ct2 = new byte[48];
+ byte[] cpt1 = new byte[42], cpt2 = new byte[42];
+ HashMap attrib = new HashMap();
+ attrib.put(IBlockCipher.KEY_MATERIAL, kb);
+ try
+ {
+ for (Iterator it = PadFactory.getNames().iterator(); it.hasNext();)
+ {
+ padName = (String) it.next();
+ // skip EME-PKCS1-V1.5 padding since it's not a true block cipher
+ // padding algorithm
+ if (padName.equalsIgnoreCase(Registry.EME_PKCS1_V1_5_PAD))
+ continue;
+
+ pad = PadFactory.getInstance(padName);
+ pad.reset();
+ pad.init(16);
+
+ byte[] padding = pad.pad(pt, 0, pt.length);
+ System.arraycopy(padding, 0, ppt, 42, padding.length);
+ attrib.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ gnu.reset();
+ gnu.init(attrib);
+ for (int i = 0; i < ppt.length; i += 16)
+ gnu.update(ppt, i, ct1, i);
+
+ jce = Cipher.getInstance("AES/ECB/" + padName, Registry.GNU_CRYPTO);
+ jce.init(Cipher.DECRYPT_MODE, new SecretKeySpec(kb, "AES"));
+ jce.doFinal(ct1, 0, ct1.length, cpt1, 0);
+ harness.check(Arrays.equals(pt, cpt1),
+ "testPadding(" + padName + ")");
+
+ jce.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kb, "AES"));
+ jce.doFinal(pt, 0, pt.length, ct2, 0);
+
+ attrib.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ gnu.reset();
+ gnu.init(attrib);
+ byte[] pcpt = new byte[48];
+ for (int i = 0; i < ct2.length; i += 16)
+ gnu.update(ct2, i, pcpt, i);
+
+ int trim = pad.unpad(pcpt, 0, pcpt.length);
+ System.arraycopy(pcpt, 0, cpt2, 0, pcpt.length - trim);
+
+ harness.check(Arrays.equals(pt, cpt2),
+ "testPadding(" + padName + ")");
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testPadding(" + padName + "): " + String.valueOf(x));
+ }
+ }
+
+ /** Test the update() methods with incomplete blocks. */
+ public void testPartial(TestHarness harness)
+ {
+ harness.checkPoint("testPartial");
+ String cipherName = null;
+ Cipher full, part1, part2;
+ IBlockCipher gnu;
+ byte[] pt;
+ byte[] kb;
+ byte[] ct1, ct2, ct3, ct4;
+ int i, blockSize;
+ try
+ {
+ for (Iterator it = CipherFactory.getNames().iterator(); it.hasNext();)
+ {
+ cipherName = (String) it.next();
+ gnu = CipherFactory.getInstance(cipherName);
+ full = Cipher.getInstance(cipherName, Registry.GNU_CRYPTO);
+ part1 = Cipher.getInstance(cipherName, Registry.GNU_CRYPTO);
+ part2 = Cipher.getInstance(cipherName, Registry.GNU_CRYPTO);
+ // pt = new byte[gnu.defaultBlockSize()];
+ blockSize = gnu.defaultBlockSize();
+ pt = new byte[2 * blockSize];
+ for (i = 0; i < pt.length; i++)
+ {
+ pt[i] = (byte) i;
+ }
+ kb = new byte[gnu.defaultKeySize()];
+ for (i = 0; i < kb.length; i++)
+ {
+ kb[i] = (byte) i;
+ }
+ full.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kb, cipherName));
+ // ct1 = full.doFinal(pt);
+ ct1 = full.doFinal(pt, blockSize, blockSize);
+
+ part1.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kb, cipherName));
+ // for (i = 0; i < pt.length - 1; i++) {
+ for (i = blockSize; i < pt.length - 1; i++)
+ {
+ part1.update(pt, i, 1);
+ }
+ ct2 = part1.doFinal(pt, i, 1);
+
+ harness.check(Arrays.equals(ct1, ct2), "testPartial1(" + cipherName
+ + ")");
+
+ // this is tricky: only the update of the last byte should return
+ // a full block. also, the doFinal() should return an empty byte[]
+ part2.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kb, cipherName));
+ // for (i = 0; i < pt.length - 1; i++) {
+ for (i = blockSize; i < pt.length - 1; i++)
+ {
+ part2.update(pt, i, 1);
+ }
+ ct3 = part2.update(pt, i, 1);
+ harness.check(Arrays.equals(ct3, ct2), "testPartial2(" + cipherName
+ + ")");
+
+ ct4 = part2.doFinal();
+ harness.check(ct4 != null && ct4.length == 0, "testPartial3("
+ + cipherName + ")");
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testPartial(" + cipherName + "): " + String.valueOf(x));
+ }
+ }
+
+ /** doFinal() with a short block and no padding should invariably fail. */
+ public void testDoFinal(TestHarness harness)
+ {
+ harness.checkPoint("testDoFinal");
+ String cipherName = null;
+ Cipher jce;
+ IBlockCipher gnu;
+ byte[] pt;
+ byte[] kb;
+ Iterator it;
+ for (it = CipherFactory.getNames().iterator(); it.hasNext();)
+ {
+ try
+ {
+ cipherName = (String) it.next();
+ gnu = CipherFactory.getInstance(cipherName);
+ jce = Cipher.getInstance(cipherName, Registry.GNU_CRYPTO);
+ pt = new byte[gnu.defaultBlockSize() - 1];
+ for (int i = 0; i < pt.length; i++)
+ {
+ pt[i] = (byte) i;
+ }
+ kb = new byte[gnu.defaultKeySize()];
+ for (int i = 0; i < kb.length; i++)
+ {
+ kb[i] = (byte) i;
+ }
+ jce.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kb, cipherName));
+ jce.doFinal(pt);
+ harness.fail("testDoFinal(" + cipherName + ")");
+ }
+ catch (IllegalBlockSizeException ibse)
+ {
+ harness.check(true, "testDoFinal(" + cipherName + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testDoFinal(" + cipherName + "): "
+ + String.valueOf(x));
+ }
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new GnuCrypto());
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java
new file mode 100644
index 00000000..61c1ccdb
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherEngineInit.java
@@ -0,0 +1,367 @@
+/* TestOfCipherEngineInit.java -- Some more tests for engineInit
+ * related to the tests in TestOfPR27849.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.javax.crypto.jce.spec.BlockCipherParameterSpec;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.spec.IvParameterSpec;
+
+/**
+ * Regression tests for logic around CipherSpi.engineInit()s. If the cipher
+ * being initialized requires parameters not derivable from the key, then
+ * defaults/random parameters must be generated, provided the opmode is ENCRYPT
+ * or WRAP. If the opmode is DECRYPT or UNWRAP then an exception is expected to
+ * be thrown.
+ * <p>
+ * Refer to the class documentation of {@link javax.crypto.CipherSpi} for more
+ * information.
+ */
+public class TestOfCipherEngineInit
+ implements Testlet
+{
+ private static final String input = "Does this work ?";
+ private Key key;
+
+ private Cipher cipher;
+
+ byte[] iv;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+ testECB(harness);
+ testNotECB(harness);
+ testInitWithParameterSpec(harness);
+ testInitWithIVParameterSpec(harness);
+
+ // TODO: Add tests for WRAP and UNWRAP too
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ try
+ {
+ KeyGenerator keyG = KeyGenerator.getInstance("DESede");
+ keyG.init(new SecureRandom());
+ key = keyG.generateKey();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail(String.valueOf(e));
+ }
+ }
+
+ private void testECB(TestHarness harness)
+ {
+ try
+ {
+ cipher = Cipher.getInstance("DESede/ECB/NoPadding");
+
+ cipher.init(Cipher.ENCRYPT_MODE, key);
+ iv = cipher.getIV();
+ harness.check(iv == null, "(ECB Encrypt) getIV() MUST return null");
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ iv = null;
+ cipher.init(Cipher.DECRYPT_MODE, key);
+ iv = cipher.getIV();
+ harness.check(iv == null, "(ECB Decrypt) getIV() MUST return null");
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ public void testNotECB(TestHarness harness)
+ {
+ try
+ {
+ cipher = Cipher.getInstance("DESede/CBC/NoPadding");
+
+ cipher.init(Cipher.ENCRYPT_MODE, key);
+ iv = cipher.getIV();
+ harness.check(iv != null, "(CBC Encrypt) getIV() MUST NOT return null");
+ harness.check(iv.length == 8, "(CBC Encrypt) IV length MUST be 8");
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ iv = null;
+ String msg = "(CBC Decrypt) init(2) MUST throw InvalidKeyException";
+ try
+ {
+ cipher.init(Cipher.DECRYPT_MODE, key);
+ harness.fail(msg);
+ }
+ catch (Exception e)
+ {
+ String type = e.getClass().getName();
+ harness.check(type.equals(InvalidKeyException.class.getName()), msg);
+ }
+ cipher.init(Cipher.DECRYPT_MODE, key, cipher.getParameters());
+ iv = cipher.getIV();
+ harness.check(iv != null, "(CBC Decrypt) getIV() MUST NOT return null");
+ harness.check(iv.length == 8, "(CBC Decrypt) IV length MUST be 8");
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ // Similar test to above but tests the behaviour for:
+ // Cipher.init(int i, Key k, AlgorithmParameterSpec param)
+ // If param is null, and the cipher needs algorithm parameters to function
+ // then init should create random/default parameters provided the cipher is
+ // in ENCRYPT or WRAP mode, if in DECRYPT or UNWRAP mode the function must
+ // throw an InvalidAlgorithmParameterException.
+ //
+ // Extrapolation: If algorithm does not require additional params then none
+ // should be created!
+ private void testInitWithParameterSpec(TestHarness harness)
+ {
+ try
+ {
+ // This cipher does not need extra algorithm parameters like
+ // an IV to be provided so it should not generate one
+ cipher = Cipher.getInstance("DESede/ECB/NoPadding");
+
+ cipher.init(Cipher.ENCRYPT_MODE, key, (AlgorithmParameterSpec) null);
+ iv = cipher.getIV();
+ harness.check(iv == null,
+ "(ECB Encrypt + null AlgorithmParameterSpec) getIV() MUST return null");
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ iv = null;
+ // No need for an IV so none should be generated in decrypt mode either
+ cipher.init(Cipher.DECRYPT_MODE, key, (AlgorithmParameterSpec) null);
+ iv = cipher.getIV();
+ harness.check(iv == null,
+ "(ECB Decrypt + null AlgorithmParameterSpec) getIV() MUST return null");
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+
+ // Encryption and decryption should still work
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ try
+ {
+ cipher = Cipher.getInstance("DESede/CBC/NoPadding");
+
+ // null param for CBC should result in random IV being generated
+ cipher.init(Cipher.ENCRYPT_MODE, key, (AlgorithmParameterSpec) null);
+ iv = cipher.getIV();
+ harness.check(iv != null,
+ "(CBC Encrypt + null AlgorithmParameterSpec) getIV() MUST return non-null IV");
+ harness.check(iv.length == 8,
+ "(CBC Encrypt + null AlgorithmParameterSpec) IV length MUST be 8");
+ // test for non-uniformity of IV; i.e. not all the bytes are the same
+ harness.check(iv[0] != iv[1],
+ "(CBC Encrypt + null AlgorithmParameterSpec) IV MUST be random");
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ iv = null;
+
+ AlgorithmParameters ap = cipher.getParameters();
+ AlgorithmParameterSpec backupAlg = ap.getParameterSpec(IvParameterSpec.class);
+ String msg = "(CBC Decrypt + null AlgorithmParameterSpec) init(3) MUST throw InvalidAlgorithmParameterException";
+ try
+ {
+ // Should not be able to init a CBC cipher in DECRYPT opmode without
+ // params
+ cipher.init(Cipher.DECRYPT_MODE, key, (AlgorithmParameterSpec) null);
+ harness.fail(msg);
+ }
+ catch (Exception e)
+ {
+ String type = e.getClass().getName();
+ harness.check(type.equals(InvalidAlgorithmParameterException.class.getName()),
+ msg);
+ }
+ try
+ {
+ // Now use a proper algorithm parameter and test init.
+ // This should pass!!
+ cipher.init(Cipher.DECRYPT_MODE, key, backupAlg);
+ }
+ catch (Exception e)
+ {
+ harness.fail("(CBC Decrypt + non-null AlgorithmParameterSpec) init(3) MUST NOT throw an exception");
+ }
+
+ iv = cipher.getIV();
+ harness.check(iv != null,
+ "(CBC Decrypt + valid AlgorithmParameterSpec) getIV() MUST NOT return null");
+ harness.check(iv.length == 8,
+ "(CBC Decrypt + valid AlgorithmParameterSpec) IV length MUST be 8");
+ harness.check(iv[0] != iv[1],
+ "(CBC Encrypt + null AlgorithmParameterSpec) IV MUST be random");
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ // Similar test to above but tests the behaviour for:
+ // Cipher.init(int i, Key k, IVParameterSpec param)
+ // If the IV passed to the algorithm is too short or too long
+ // then a InvalidAlgorithmParameterException should be thrown
+ private void testInitWithIVParameterSpec(TestHarness harness)
+ {
+ try
+ {
+ cipher = Cipher.getInstance("DESede/CBC/NoPadding");
+
+ // Blocksize for CBC
+ int blocksize = 8;
+
+ IvParameterSpec IVSpec = new IvParameterSpec(new byte[blocksize -1]);
+
+ // check if short IV are properly throwing exceptions
+ String msg = "(CBC Encrypt + short IV) MUST throw InvalidAlgorithmParameterException";
+ try{
+ cipher.init(Cipher.ENCRYPT_MODE, key, IVSpec);
+ harness.fail(msg);
+ } catch (Exception e) {
+ String type = e.getClass().getName();
+ harness.debug(e);
+ harness.check(type.equals(InvalidAlgorithmParameterException.class.getName()),msg);
+ }
+
+ msg = "(CBC Decrypt + short IV) MUST throw InvalidAlgorithmParameterException";
+ try {
+ cipher.init(Cipher.DECRYPT_MODE, key, IVSpec);
+ harness.fail(msg);
+ } catch (Exception e) {
+ String type = e.getClass().getName();
+ harness.check(type.equals(InvalidAlgorithmParameterException.class.getName()),msg);
+ }
+
+ IVSpec = new IvParameterSpec(new byte[blocksize +1]);
+
+ // check if long IV are properly throwing exceptions
+ msg = "(CBC Encrypt + long IV) MUST throw InvalidAlgorithmParameterException";
+ try{
+ cipher.init(Cipher.ENCRYPT_MODE, key, IVSpec);
+ harness.fail(msg);
+ } catch (Exception e) {
+ String type = e.getClass().getName();
+ harness.check(type.equals(InvalidAlgorithmParameterException.class.getName()), msg);
+ }
+
+ msg = "(CBC Decrypt + long IV) MUST throw InvalidAlgorithmParameterException";
+ try {
+ cipher.init(Cipher.DECRYPT_MODE, key, IVSpec);
+ harness.fail(msg);
+ } catch (Exception e) {
+ String type = e.getClass().getName();
+ harness.check(type.equals(InvalidAlgorithmParameterException.class.getName()), msg);
+ }
+
+ byte[] iv = new byte[] { '0', '1', '1', '2', '3', '5', '8', '9'};
+ IVSpec = new IvParameterSpec(iv);
+
+ // check if no exceptions are being called for a properly sized IV
+ try{
+ cipher.init(Cipher.ENCRYPT_MODE, key, IVSpec);
+ } catch (Exception e){
+ harness.fail("(CBC Encrypt + IV of lenght 8) MUST NOT throw an exception");
+ }
+
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ try{
+ cipher.init(Cipher.DECRYPT_MODE, key, IVSpec);
+ } catch (Exception e){
+ harness.fail("(CBC Decrypt + IV of lenght 8) MUST NOT throw an exception");
+ }
+
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+
+ byte[] cipherIV = cipher.getIV();
+ harness.check(iv != null,
+ "(CBC Decrypt + valid IvParameterSpec) getIV() MUST NOT return null");
+ harness.check(iv.length == 8,
+ "(CBC Decrypt + valid IvParameterSpec) IV length MUST be 8");
+ harness.check(Arrays.equals(cipherIV, iv),
+ "(CBC Decrypt + valid IvParameter) Cipher IV MUST match specified IV");
+
+ } catch (Exception x){
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherOutputStream.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherOutputStream.java
new file mode 100644
index 00000000..aee314f7
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherOutputStream.java
@@ -0,0 +1,135 @@
+/* TestOfCipherOutputStream.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.util.Util;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+import javax.crypto.CipherInputStream;
+import javax.crypto.CipherOutputStream;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Test for problems reported (and fixed) by Marco Trudel (see thread
+ * http://gcc.gnu.org/ml/java/2006-09/msg00105.html).
+ */
+public class TestOfCipherOutputStream
+ implements Testlet
+{
+ private static final byte[] PLAINTEXT;
+ static
+ {
+ PLAINTEXT = new byte[511];
+ for (int i = 0; i < 511; i++)
+ PLAINTEXT[i] = (byte) i;
+ }
+ private static final byte[] CIPHERTEXT = Util.toBytesFromString(
+ "0A940BB5416EF045F1C39458C653EA5A07FEEF74E1D5036E900EEE118E949293"
+ + "5BE87E2E5B447C944B21C9AF7756C0D803F2C3BDCA826BF082D7CFB035CDB8C1"
+ + "D533E59B45A153ED7E5E9C5DFCFD4AAA3EF0B1A5E3059DAB21FCE23A7B61C4CA"
+ + "ADDE68F7AD497268D31A0DDD5C74B08F3D2D90DCEF49D32822298B878F815581"
+ + "AC26591C0F8BD80EE7C7E3A2D14E2B2276F0DFA4F107BD6303879DAC0E2FD795"
+ + "5E18D1FEF61D087EC0A33ED734A7918FE315209ED0E7C94F74A65C99F6EADC1E"
+ + "AD393003D3E6BC5268F0D833E0050B78D2001826302BD313C41809FFDA1713E8"
+ + "D02A48244ECCDC2379224DBC5470361266A7C7E8345231489751DE073316ADAD"
+ + "0A940BB5416EF045F1C39458C653EA5A07FEEF74E1D5036E900EEE118E949293"
+ + "5BE87E2E5B447C944B21C9AF7756C0D803F2C3BDCA826BF082D7CFB035CDB8C1"
+ + "D533E59B45A153ED7E5E9C5DFCFD4AAA3EF0B1A5E3059DAB21FCE23A7B61C4CA"
+ + "ADDE68F7AD497268D31A0DDD5C74B08F3D2D90DCEF49D32822298B878F815581"
+ + "AC26591C0F8BD80EE7C7E3A2D14E2B2276F0DFA4F107BD6303879DAC0E2FD795"
+ + "5E18D1FEF61D087EC0A33ED734A7918FE315209ED0E7C94F74A65C99F6EADC1E"
+ + "AD393003D3E6BC5268F0D833E0050B78D2001826302BD313C41809FFDA1713E8"
+ + "D02A48244ECCDC2379224DBC54703612D59D78BE4A3F7494AC0ECEC7FA122305");
+
+ public void test(TestHarness harness)
+ {
+ byte[] k = new byte[16];
+ for (int i = 0; i < k.length; i++)
+ k[i] = (byte) i;
+ try
+ {
+ SecretKey key = new SecretKeySpec(k, "AES");
+ encryptionTest(harness, key);
+ decryptionTest(harness, key);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test(): " + x);
+ }
+ }
+
+ private void encryptionTest(TestHarness harness, SecretKey key)
+ throws Exception
+ {
+ ByteArrayInputStream in = new ByteArrayInputStream(PLAINTEXT);
+ ByteArrayOutputStream outStream = new ByteArrayOutputStream(1024 + 32);
+
+ Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7");
+
+ cipher.init(Cipher.ENCRYPT_MODE, key);
+ CipherOutputStream out = new CipherOutputStream(outStream, cipher);
+
+ byte[] b = new byte[2048];
+ int n;
+ while ((n = in.read(b)) != -1)
+ if (n > 0)
+ out.write(b, 0, n);
+
+ out.close();
+
+ byte[] ciphertxt = outStream.toByteArray();
+ harness.check(Arrays.equals(ciphertxt, CIPHERTEXT), "Cipher text MUST match");
+ }
+
+ private void decryptionTest(TestHarness harness, SecretKey key)
+ throws Exception
+ {
+ ByteArrayInputStream inStream = new ByteArrayInputStream(CIPHERTEXT);
+ ByteArrayOutputStream out = new ByteArrayOutputStream(1024 + 32);
+
+ Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7");
+
+ cipher.init(Cipher.DECRYPT_MODE, key);
+ CipherInputStream in = new CipherInputStream(inStream, cipher);
+
+ byte[] b = new byte[2048];
+ int n;
+ while ((n = in.read(b)) != -1)
+ if (n > 0)
+ out.write(b, 0, n);
+
+ in.close();
+
+ byte[] plaintxt = out.toByteArray();
+ harness.check(Arrays.equals(plaintxt, PLAINTEXT), "Plain text MUST match");
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherWrapUnwrap.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherWrapUnwrap.java
new file mode 100644
index 00000000..4abc1596
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfCipherWrapUnwrap.java
@@ -0,0 +1,397 @@
+/* TestOfCipherWrapUnwrap.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.javax.crypto.cipher.TripleDES;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Conformance tests for the JCE KeyWrappingAlgorithmAdapter methods and
+ * concrete implementations.
+ */
+public class TestOfCipherWrapUnwrap
+ implements Testlet
+{
+ private static final byte[] KM128 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF };
+ private static final byte[] KM128_WRAPPED128 = new byte[] {
+ (byte) 0x1F, (byte) 0xA6, (byte) 0x8B, (byte) 0x0A,
+ (byte) 0x81, (byte) 0x12, (byte) 0xB4, (byte) 0x47,
+ (byte) 0xAE, (byte) 0xF3, (byte) 0x4B, (byte) 0xD8,
+ (byte) 0xFB, (byte) 0x5A, (byte) 0x7B, (byte) 0x82,
+ (byte) 0x9D, (byte) 0x3E, (byte) 0x86, (byte) 0x23,
+ (byte) 0x71, (byte) 0xD2, (byte) 0xCF, (byte) 0xE5 };
+ private static final byte[] KM192 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03,
+ (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07 };
+ private static final byte[] KM192_WRAPPED192 = new byte[] {
+ (byte) 0x03, (byte) 0x1D, (byte) 0x33, (byte) 0x26,
+ (byte) 0x4E, (byte) 0x15, (byte) 0xD3, (byte) 0x32,
+ (byte) 0x68, (byte) 0xF2, (byte) 0x4E, (byte) 0xC2,
+ (byte) 0x60, (byte) 0x74, (byte) 0x3E, (byte) 0xDC,
+ (byte) 0xE1, (byte) 0xC6, (byte) 0xC7, (byte) 0xDD,
+ (byte) 0xEE, (byte) 0x72, (byte) 0x5A, (byte) 0x93,
+ (byte) 0x6B, (byte) 0xA8, (byte) 0x14, (byte) 0x91,
+ (byte) 0x5C, (byte) 0x67, (byte) 0x62, (byte) 0xD2 };
+ private static final byte[] KM256 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03,
+ (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
+ (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B,
+ (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F };
+ private static final byte[] KM256_WRAPPED256 = new byte[] {
+ (byte) 0x28, (byte) 0xC9, (byte) 0xF4, (byte) 0x04,
+ (byte) 0xC4, (byte) 0xB8, (byte) 0x10, (byte) 0xF4,
+ (byte) 0xCB, (byte) 0xCC, (byte) 0xB3, (byte) 0x5C,
+ (byte) 0xFB, (byte) 0x87, (byte) 0xF8, (byte) 0x26,
+ (byte) 0x3F, (byte) 0x57, (byte) 0x86, (byte) 0xE2,
+ (byte) 0xD8, (byte) 0x0E, (byte) 0xD3, (byte) 0x26,
+ (byte) 0xCB, (byte) 0xC7, (byte) 0xF0, (byte) 0xE7,
+ (byte) 0x1A, (byte) 0x99, (byte) 0xF4, (byte) 0x3B,
+ (byte) 0xFB, (byte) 0x98, (byte) 0x8B, (byte) 0x9B,
+ (byte) 0x7A, (byte) 0x02, (byte) 0xDD, (byte) 0x21 };
+
+ public void test(TestHarness harness)
+ {
+ testNames(harness);
+ testMethods(harness);
+ testAES128Wrap(harness);
+ testAES192Wrap(harness);
+ testAES256Wrap(harness);
+ testTripleDESWrap(harness);
+ }
+
+ private void testNames(TestHarness harness)
+ {
+ harness.checkPoint("testNames()");
+ try
+ {
+ String transform;
+
+ transform = "kw-aes128";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+ transform += "/ecb/nopadding";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+
+ transform = "kw-aes192";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+ transform += "/ecb/nopadding";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+
+ transform = "kw-aes256";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+ transform += "/ecb/nopadding";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+
+ transform = "kw-tripledes";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+ transform += "/cbc/nopadding";
+ harness.check(mustInstantiate(harness, transform),
+ "MUST instantiate " + transform);
+
+ transform = "kw-aes128/cbc/nopadding";
+ harness.check(mustNotInstantiate(harness, transform),
+ "MUST NOT instantiate " + transform);
+ transform = "kw-aes192/cbc/nopadding";
+ harness.check(mustNotInstantiate(harness, transform),
+ "MUST NOT instantiate " + transform);
+ transform = "kw-aes256/cbc/nopadding";
+ harness.check(mustNotInstantiate(harness, transform),
+ "MUST NOT instantiate " + transform);
+ transform = "kw-tripledes/ecb/nopadding";
+ harness.check(mustNotInstantiate(harness, transform),
+ "MUST NOT instantiate " + transform);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testNames(): " + x);
+ }
+ }
+
+ private void testMethods(TestHarness harness)
+ {
+ harness.checkPoint("testMethods()");
+ try
+ {
+ Cipher kwa = Cipher.getInstance("kw-aes128");
+ SecretKeySpec kek128 = new SecretKeySpec(new byte[16], "AES");
+ SecretKeySpec kek192 = new SecretKeySpec(new byte[24], "AES");
+ String msg;
+
+ msg = "MUST NOT be able to call init() with a KEK > algorithm's key-size";
+ try
+ {
+ kwa.init(Cipher.WRAP_MODE, kek192);
+ harness.fail(msg);
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.check(true, msg);
+ }
+
+ msg = "MUST be able to call init() with the right key-size KEK";
+ try
+ {
+ kwa.init(Cipher.WRAP_MODE, kek128);
+ harness.check(true, msg);
+ }
+ catch (RuntimeException x)
+ {
+ harness.fail(msg);
+ }
+ msg = "MUST be able to call getBlockSize()";
+ try
+ {
+ kwa.getBlockSize();
+ harness.check(true, msg);
+ }
+ catch (RuntimeException x)
+ {
+ harness.fail(msg);
+ }
+ msg = "MUST be able to call getIV()";
+ try
+ {
+ kwa.getIV();
+ harness.check(true, msg);
+ }
+ catch (RuntimeException x)
+ {
+ harness.fail(msg);
+ }
+ msg = "MUST NOT be able to call update()";
+ try
+ {
+ kwa.update(KM128);
+ harness.fail(msg);
+ }
+ catch (RuntimeException x)
+ {
+ harness.check(true, msg);
+ }
+ SecretKeySpec km128 = new SecretKeySpec(KM128, "AES");
+ msg = "MUST be able to call wrap()";
+ byte[] cipherText = null;
+ try
+ {
+ cipherText = kwa.wrap(km128);
+ harness.check(true, msg);
+ }
+ catch (RuntimeException x)
+ {
+ harness.fail(msg);
+ }
+ kwa.init(Cipher.UNWRAP_MODE, kek128);
+ msg = "MUST NOT be able to call unwrap() with a different 'wrappedKeyType'";
+ try
+ {
+ kwa.unwrap(cipherText, "AES", Cipher.PRIVATE_KEY);
+ harness.fail(msg);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.check(true, msg);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testMethods(): " + x);
+ }
+ }
+
+ private void testAES128Wrap(TestHarness harness)
+ {
+ harness.checkPoint("testAES128Wrap()");
+ try
+ {
+ Cipher kwa = Cipher.getInstance("kw-aes128");
+ byte[] kekBytes = new byte[16];
+ for (int i = 0; i < kekBytes.length; i++)
+ kekBytes[i] = (byte) i;
+ SecretKeySpec kek = new SecretKeySpec(kekBytes, "AES");
+ kwa.init(Cipher.WRAP_MODE, kek);
+ SecretKeySpec km = new SecretKeySpec(KM128, "AES");
+ byte[] cipherText = kwa.wrap(km);
+ harness.check(Arrays.equals(cipherText, KM128_WRAPPED128),
+ "128-bit key material wrapped w/ 128-bit KEK MUST match "
+ + "expected value");
+
+ kwa.init(Cipher.UNWRAP_MODE, kek);
+ Key k = kwa.unwrap(cipherText, "AES", Cipher.SECRET_KEY);
+ harness.check(km.equals(k),
+ "Unwrapped and original key-material MUST match");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testAES128Wrap(): " + x);
+ }
+ }
+
+ private void testAES192Wrap(TestHarness harness)
+ {
+ harness.checkPoint("testAES192Wrap()");
+ try
+ {
+ Cipher kwa = Cipher.getInstance("kw-aes192");
+ byte[] kekBytes = new byte[24];
+ for (int i = 0; i < kekBytes.length; i++)
+ kekBytes[i] = (byte) i;
+ SecretKeySpec kek = new SecretKeySpec(kekBytes, "AES");
+ kwa.init(Cipher.WRAP_MODE, kek);
+ SecretKeySpec km = new SecretKeySpec(KM192, "AES");
+ byte[] cipherText = kwa.wrap(km);
+ harness.check(Arrays.equals(cipherText, KM192_WRAPPED192),
+ "192-bit key material wrapped w/ 192-bit KEK MUST match "
+ + "expected value");
+
+ kwa.init(Cipher.UNWRAP_MODE, kek);
+ Key k = kwa.unwrap(cipherText, "AES", Cipher.SECRET_KEY);
+ harness.check(km.equals(k),
+ "Unwrapped and original key-material MUST match");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testAES192Wrap(): " + x);
+ }
+ }
+
+ private void testAES256Wrap(TestHarness harness)
+ {
+ harness.checkPoint("testAES256Wrap()");
+ try
+ {
+ Cipher kwa = Cipher.getInstance("kw-aes256");
+ byte[] kekBytes = new byte[32];
+ for (int i = 0; i < kekBytes.length; i++)
+ kekBytes[i] = (byte) i;
+ SecretKeySpec kek = new SecretKeySpec(kekBytes, "AES");
+ kwa.init(Cipher.WRAP_MODE, kek);
+ SecretKeySpec km = new SecretKeySpec(KM256, "AES");
+ byte[] cipherText = kwa.wrap(km);
+ harness.check(Arrays.equals(cipherText, KM256_WRAPPED256),
+ "256-bit key material wrapped w/ 256-bit KEK MUST match "
+ + "expected value");
+
+ kwa.init(Cipher.UNWRAP_MODE, kek);
+ Key k = kwa.unwrap(cipherText, "AES", Cipher.SECRET_KEY);
+ harness.check(km.equals(k),
+ "Unwrapped and original key-material MUST match");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testAES256Wrap(): " + x);
+ }
+ }
+
+ private void testTripleDESWrap(TestHarness harness)
+ {
+ harness.checkPoint("testTripleDESWrap()");
+ try
+ {
+ Cipher kwa = Cipher.getInstance("kw-tripledes");
+ byte[] kekBytes = new byte[24];
+ for (int i = 0; i < kekBytes.length; i++)
+ kekBytes[i] = (byte) i;
+ SecretKeySpec kek = new SecretKeySpec(kekBytes, "TripleDES");
+ kwa.init(Cipher.WRAP_MODE, kek);
+ byte[] kmBytes = new byte[24];
+ for (int i = 0; i < kmBytes.length; i++)
+ kmBytes[i] = (byte)(i + 1);
+ SecretKeySpec km = new SecretKeySpec(kmBytes, "TripleDES");
+ byte[] cipherText = kwa.wrap(km);
+
+ kwa.init(Cipher.UNWRAP_MODE, kek);
+ Key k = kwa.unwrap(cipherText, "TripleDES", Cipher.SECRET_KEY);
+ // key-unwrap ALWAYS returns a parity-adjusted (proper!) key
+ TripleDES.adjustParity(kmBytes, 0);
+ SecretKeySpec kmpa = new SecretKeySpec(kmBytes, "TripleDES");
+ harness.check(kmpa.equals(k),
+ "Unwrapped and original key-material MUST match");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testTripleDESWrap(): " + x);
+ }
+ }
+
+ private boolean mustInstantiate(TestHarness harness, String transform)
+ {
+ Cipher result = null;
+ try
+ {
+ result = Cipher.getInstance(transform);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ }
+ return result != null;
+ }
+
+ private boolean mustNotInstantiate(TestHarness harness, String transform)
+ {
+ Cipher result = null;
+ try
+ {
+ result = Cipher.getInstance(transform);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ }
+ return result == null;
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement.java
new file mode 100644
index 00000000..c9f27faf
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement.java
@@ -0,0 +1,136 @@
+/* TestOfDHKeyAgreement.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.InvalidKeyException;
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Arrays;
+
+import javax.crypto.KeyAgreement;
+
+/**
+ * Conformance tests for the implementation of the JCE Diffie-
+ * Hellman key agreement.
+ */
+public class TestOfDHKeyAgreement
+ implements Testlet
+{
+ private KeyPairGenerator kpg;
+ private PublicKey alicePublicK, bobPublicK;
+ private PrivateKey alicePrivateK, bobPrivateK;
+ private KeyFactory aliceKF, bobKF;
+ private KeyAgreement aliceKA, bobKA;
+
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ testSymmetry(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new GnuCrypto());
+ try
+ {
+ // alice and bob key-pairs
+ kpg = KeyPairGenerator.getInstance(Registry.DH_KPG, Registry.GNU_CRYPTO);
+ kpg.initialize(512);
+ harness.verbose("*** Generating Alice's Diffie-Hellman key-pair");
+ KeyPair aliceKP = kpg.generateKeyPair();
+ alicePublicK = aliceKP.getPublic();
+ alicePrivateK = aliceKP.getPrivate();
+ harness.verbose("*** Generating Bob's Diffie-Hellman key-pair");
+ KeyPair bobKP = kpg.generateKeyPair();
+ bobPublicK = bobKP.getPublic();
+ bobPrivateK = bobKP.getPrivate();
+
+ // alice and bob key-factories
+ aliceKF = KeyFactory.getInstance("DH", Registry.GNU_CRYPTO);
+ bobKF = KeyFactory.getInstance("DH", Registry.GNU_CRYPTO);
+
+ // alice and bob key-agreements
+ aliceKA = KeyAgreement.getInstance(Registry.DH_KA, Registry.GNU_CRYPTO);
+ bobKA = KeyAgreement.getInstance(Registry.DH_KA, Registry.GNU_CRYPTO);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void testSymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testSymmetry()");
+
+ try
+ {
+ aliceKA.init(alicePrivateK);
+ byte[] aliceEncodedK = alicePublicK.getEncoded();
+
+ harness.verbose("*** Alice sends Bob her encoded key...");
+
+ X509EncodedKeySpec aliceKAtBob = new X509EncodedKeySpec(aliceEncodedK);
+ PublicKey aliceK = bobKF.generatePublic(aliceKAtBob);
+ bobKA.init(bobPrivateK);
+ bobKA.doPhase(aliceK, true);
+ byte[] bobSharedSecret = bobKA.generateSecret(); // bob ready
+ byte[] bobEncodedK = bobPublicK.getEncoded();
+
+ harness.verbose("*** Bob sends Alice his encoded key...");
+
+ X509EncodedKeySpec bobKAtAlice = new X509EncodedKeySpec(bobEncodedK);
+ PublicKey bobK = aliceKF.generatePublic(bobKAtAlice);
+ aliceKA.doPhase(bobK, true);
+ byte[] aliceSharedSecret = aliceKA.generateSecret(); // alice ready
+
+ harness.check(Arrays.equals(aliceSharedSecret, bobSharedSecret),
+ "Shared secrets MUST be equal");
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.debug(x);
+ harness.fail("testSymmetry(): " + x.getMessage());
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("testSymmetry(): " + x.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement2.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement2.java
new file mode 100644
index 00000000..edfea5e1
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyAgreement2.java
@@ -0,0 +1,218 @@
+/* TestOfDHKeyAgreement2.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.AlgorithmParameters;
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PublicKey;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyAgreement;
+import javax.crypto.SecretKey;
+import javax.crypto.ShortBufferException;
+import javax.crypto.interfaces.DHPublicKey;
+import javax.crypto.spec.DHParameterSpec;
+
+/**
+ * Conformance test, primarily for the Diffie-Hellman key exchange, but covers
+ * other areas of the GNU JCE adapters classes.
+ */
+public class TestOfDHKeyAgreement2
+ implements Testlet
+{
+ // 1024-bit Diffie-Hellman modulus value used in SKIP
+ private static final byte skip1024ModulusBytes[] = {
+ (byte) 0xF4, (byte) 0x88, (byte) 0xFD, (byte) 0x58,
+ (byte) 0x4E, (byte) 0x49, (byte) 0xDB, (byte) 0xCD,
+ (byte) 0x20, (byte) 0xB4, (byte) 0x9D, (byte) 0xE4,
+ (byte) 0x91, (byte) 0x07, (byte) 0x36, (byte) 0x6B,
+ (byte) 0x33, (byte) 0x6C, (byte) 0x38, (byte) 0x0D,
+ (byte) 0x45, (byte) 0x1D, (byte) 0x0F, (byte) 0x7C,
+ (byte) 0x88, (byte) 0xB3, (byte) 0x1C, (byte) 0x7C,
+ (byte) 0x5B, (byte) 0x2D, (byte) 0x8E, (byte) 0xF6,
+ (byte) 0xF3, (byte) 0xC9, (byte) 0x23, (byte) 0xC0,
+ (byte) 0x43, (byte) 0xF0, (byte) 0xA5, (byte) 0x5B,
+ (byte) 0x18, (byte) 0x8D, (byte) 0x8E, (byte) 0xBB,
+ (byte) 0x55, (byte) 0x8C, (byte) 0xB8, (byte) 0x5D,
+ (byte) 0x38, (byte) 0xD3, (byte) 0x34, (byte) 0xFD,
+ (byte) 0x7C, (byte) 0x17, (byte) 0x57, (byte) 0x43,
+ (byte) 0xA3, (byte) 0x1D, (byte) 0x18, (byte) 0x6C,
+ (byte) 0xDE, (byte) 0x33, (byte) 0x21, (byte) 0x2C,
+ (byte) 0xB5, (byte) 0x2A, (byte) 0xFF, (byte) 0x3C,
+ (byte) 0xE1, (byte) 0xB1, (byte) 0x29, (byte) 0x40,
+ (byte) 0x18, (byte) 0x11, (byte) 0x8D, (byte) 0x7C,
+ (byte) 0x84, (byte) 0xA7, (byte) 0x0A, (byte) 0x72,
+ (byte) 0xD6, (byte) 0x86, (byte) 0xC4, (byte) 0x03,
+ (byte) 0x19, (byte) 0xC8, (byte) 0x07, (byte) 0x29,
+ (byte) 0x7A, (byte) 0xCA, (byte) 0x95, (byte) 0x0C,
+ (byte) 0xD9, (byte) 0x96, (byte) 0x9F, (byte) 0xAB,
+ (byte) 0xD0, (byte) 0x0A, (byte) 0x50, (byte) 0x9B,
+ (byte) 0x02, (byte) 0x46, (byte) 0xD3, (byte) 0x08,
+ (byte) 0x3D, (byte) 0x66, (byte) 0xA4, (byte) 0x5D,
+ (byte) 0x41, (byte) 0x9F, (byte) 0x9C, (byte) 0x7C,
+ (byte) 0xBD, (byte) 0x89, (byte) 0x4B, (byte) 0x22,
+ (byte) 0x19, (byte) 0x26, (byte) 0xBA, (byte) 0xAB,
+ (byte) 0xA2, (byte) 0x5E, (byte) 0xC3, (byte) 0x55,
+ (byte) 0xE9, (byte) 0x2F, (byte) 0x78, (byte) 0xC7 };
+ private static final BigInteger skip1024Modulus =
+ new BigInteger(1, skip1024ModulusBytes);
+ private static final BigInteger skip1024Base = BigInteger.valueOf(2L);
+ private static final String CLEAR_TEXT = "This is just another example";
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ // Alice side
+ DHParameterSpec spec1 = new DHParameterSpec(skip1024Modulus, skip1024Base);
+ harness.verbose("*** Generating Alice's Diffie-Hellman key-pair");
+ KeyPairGenerator aliceKPG = KeyPairGenerator.getInstance("DH");
+ aliceKPG.initialize(spec1);
+ KeyPair aliceKP = aliceKPG.generateKeyPair();
+
+ harness.verbose("*** Initializing Alice's Diffie-Hellman key-agreement");
+ KeyAgreement aliceKA = KeyAgreement.getInstance("DH");
+ aliceKA.init(aliceKP.getPrivate());
+
+ harness.verbose("*** Alice sends Bob her encoded key...");
+ byte[] alicePubKEnc = aliceKP.getPublic().getEncoded();
+
+ // Bob side
+ KeyFactory bobKF = KeyFactory.getInstance("DH");
+ X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(alicePubKEnc);
+ PublicKey alicePubK = bobKF.generatePublic(x509KeySpec);
+
+ // Bob gets the DH parameters associated with Alice's public key.
+ // He MUST use the same parameters when generating his own key-pair
+ DHParameterSpec spec2 = ((DHPublicKey) alicePubK).getParams();
+ harness.verbose("*** Generating Bob's Diffie-Hellman key-pair");
+ KeyPairGenerator bobKPG = KeyPairGenerator.getInstance("DH");
+ bobKPG.initialize(spec2);
+ KeyPair bobKP = bobKPG.generateKeyPair();
+
+ harness.verbose("*** Initializing Bob's Diffie-Hellman key-agreement");
+ KeyAgreement bobKA = KeyAgreement.getInstance("DH");
+ bobKA.init(bobKP.getPrivate());
+
+ harness.verbose("*** Bob sends Alice his encoded key...");
+ byte[] bobPubKEnc = bobKP.getPublic().getEncoded();
+
+ // Alice uses Bob's public key for the one and only phase of her
+ // version of the DH protocol. Before she can do that, she has to
+ // re-generate Bob's DH public key from his encoded key material
+ KeyFactory aliceKF = KeyFactory.getInstance("DH");
+ x509KeySpec = new X509EncodedKeySpec(bobPubKEnc);
+ PublicKey bobPubK = aliceKF.generatePublic(x509KeySpec);
+ harness.verbose("*** Alice does phase #1");
+ aliceKA.doPhase(bobPubK, true);
+
+ // Bob uses Alice's public key for the first and only phase of his
+ // version of the DH protocol
+ harness.verbose("*** Bob does phase #1");
+ bobKA.doPhase(alicePubK, true);
+
+ // Both generate (hopefully) the same shared secret
+ byte[] aliceSS = aliceKA.generateSecret();
+ int len = aliceSS.length;
+
+ byte[] bobSS = new byte[len];
+ String msg = "generateSecret(byte[" + bobSS.length
+ + "], 1) MUST throw ShortBufferException";
+ try // with a shorter buffer first!
+ {
+ bobKA.generateSecret(bobSS, 1);
+ harness.fail(msg);
+ }
+ catch (ShortBufferException e)
+ {
+ harness.check(true, msg);
+ }
+ // now do it properly
+ bobKA.generateSecret(bobSS, 0);
+
+ harness.check(Arrays.equals(aliceSS, bobSS),
+ "Shared secrets MUST be equal");
+
+ harness.verbose("*** Bob generates a new shared secret");
+ // The call to bobKA.generateSecret above resets the key-agreement
+ // object, so we call doPhase() again before calling generateSecret()
+ bobKA.doPhase(alicePubK, true);
+ SecretKey bobSK = bobKA.generateSecret("DES");
+
+ harness.verbose("*** Alice generates a new shared secret");
+ aliceKA.doPhase(bobPubK, true);
+ SecretKey aliceSK = aliceKA.generateSecret("DES");
+
+ harness.verbose("*** Bob sends Alice a DES/ECB encrypted message");
+ Cipher bobCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
+ bobCipher.init(Cipher.ENCRYPT_MODE, bobSK);
+
+ byte[] cleartext = CLEAR_TEXT.getBytes();
+ byte[] ciphertext = bobCipher.doFinal(cleartext);
+
+ // Alice decrypts, using DES in ECB mode
+ Cipher aliceCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
+ aliceCipher.init(Cipher.DECRYPT_MODE, aliceSK);
+ byte[] recovered = aliceCipher.doFinal(ciphertext);
+
+ harness.check(Arrays.equals(cleartext, recovered),
+ "DES/ECB recovered text and cleartext MUST be equal");
+
+ harness.verbose("*** Bob sends Alice a DES/CBC encrypted message");
+ bobCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+ bobCipher.init(Cipher.ENCRYPT_MODE, bobSK);
+
+ cleartext = CLEAR_TEXT.getBytes();
+ ciphertext = bobCipher.doFinal(cleartext);
+ // Retrieve the parameter that was used, and transfer it to Alice
+ byte[] encodedParams = bobCipher.getParameters().getEncoded();
+
+ // Alice decrypts, using DES in CBC mode
+ AlgorithmParameters params = AlgorithmParameters.getInstance("DES");
+ params.init(encodedParams);
+ aliceCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+ aliceCipher.init(Cipher.DECRYPT_MODE, aliceSK, params);
+ recovered = aliceCipher.doFinal(ciphertext);
+
+ harness.check(Arrays.equals(cleartext, recovered),
+ "DES/CBC recovered text and cleartext MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyFactory.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyFactory.java
new file mode 100644
index 00000000..1ba5f7a5
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfDHKeyFactory.java
@@ -0,0 +1,102 @@
+/* TestOfDHKeyFactory.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import java.security.KeyFactory;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Security;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the JCE Diffie-Hellman key-factory
+ */
+public class TestOfDHKeyFactory
+ implements Testlet
+{
+ private KeyPairGenerator kpg;
+ private PublicKey publicK;
+ private PrivateKey privateK;
+ private KeyFactory keyFactory;
+ private byte[] encoded;
+
+ public void test(TestHarness harness)
+ {
+ setUp(harness);
+
+ testSymmetry(harness);
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ Security.addProvider(new GnuCrypto());
+ try
+ {
+ kpg = KeyPairGenerator.getInstance(Registry.DH_KPG, Registry.GNU_CRYPTO);
+ kpg.initialize(512);
+ harness.verbose("*** Generating a Diffie-Hellman key-pair");
+ KeyPair kp = kpg.generateKeyPair();
+ publicK = kp.getPublic();
+ privateK = kp.getPrivate();
+ keyFactory = KeyFactory.getInstance(Registry.DH_KPG, Registry.GNU_CRYPTO);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp(): " + x.getMessage());
+ }
+ }
+
+ private void testSymmetry(TestHarness harness)
+ {
+ harness.checkPoint("testSymmetry()");
+
+ try
+ {
+ encoded = publicK.getEncoded();
+ X509EncodedKeySpec spec1 = new X509EncodedKeySpec(encoded);
+ PublicKey k1 = keyFactory.generatePublic(spec1);
+ harness.check(k1.equals(publicK), "Public DH keys MUST be equal");
+
+ encoded = privateK.getEncoded();
+ PKCS8EncodedKeySpec spec2 = new PKCS8EncodedKeySpec(encoded);
+ PrivateKey k2 = keyFactory.generatePrivate(spec2);
+ harness.check(k2.equals(privateK), "Private DH keys MUST be equal");
+ }
+ catch (InvalidKeySpecException x)
+ {
+ harness.debug(x);
+ harness.fail("testSymmetry(): " + x.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfMac.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfMac.java
new file mode 100644
index 00000000..e667cd85
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfMac.java
@@ -0,0 +1,266 @@
+/* TestOfMac.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.Registry;
+import gnu.java.security.prng.IRandom;
+import gnu.java.security.prng.MDGenerator;
+import gnu.javax.crypto.cipher.CipherFactory;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.MacFactory;
+import gnu.javax.crypto.mac.TMMH16;
+import gnu.javax.crypto.mac.UMac32;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.javax.crypto.jce.spec.TMMHParameterSpec;
+import gnu.javax.crypto.jce.spec.UMac32ParameterSpec;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.Security;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Conformance tests for the JCE Provider implementations of MAC SPI classes.
+ */
+public class TestOfMac implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownMac(harness);
+ testEquality(harness);
+ testCloneability(harness);
+ }
+
+ /** Should fail with an unknown algorithm. */
+ public void testUnknownMac(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownMac");
+ try
+ {
+ Mac.getInstance("Godot", Registry.GNU_CRYPTO);
+ harness.fail("testUnknownMac()");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Tests if the result of using a MAC through gnu.crypto Factory classes
+ * yields same value as using instances obtained the JCE way.
+ */
+ public void testEquality(TestHarness harness)
+ {
+ harness.checkPoint("testEquality");
+ String macName;
+ IMac gnu = null;
+ Mac jce = null;
+ byte[] in = this.getClass().getName().getBytes();
+ byte[] ba1, ba2;
+ HashMap attrib = new HashMap();
+ for (Iterator it = MacFactory.getNames().iterator(); it.hasNext();)
+ {
+ macName = (String) it.next();
+ // we dont provide OMAC based on NullCipher through the JCE. skip
+ if (macName.equals("omac-null"))
+ continue;
+
+ AlgorithmParameterSpec params = null;
+ if (macName.equalsIgnoreCase("UMAC32"))
+ {
+ byte[] nonce = new byte[16];
+ for (int i = 0; i < nonce.length; i++)
+ nonce[i] = (byte) i;
+
+ params = new UMac32ParameterSpec(nonce);
+ attrib.put(UMac32.NONCE_MATERIAL, nonce);
+ }
+ else if (macName.equalsIgnoreCase("TMMH16"))
+ {
+ IRandom rand1 = new MDGenerator();
+ rand1.init(new HashMap());
+ Integer tagLen = new Integer(4);
+ params = new TMMHParameterSpec(rand1, tagLen);
+
+ IRandom rand2 = new MDGenerator();
+ rand2.init(new HashMap());
+ attrib.put(TMMH16.KEYSTREAM, rand2);
+ attrib.put(TMMH16.TAG_LENGTH, tagLen);
+ }
+
+ try
+ {
+ gnu = MacFactory.getInstance(macName);
+ harness.check(gnu != null, "MacFactory.getInstance(" + macName
+ + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.fail("MacFactory.getInstance(" + macName + "): "
+ + String.valueOf(x));
+ }
+
+ try
+ {
+ jce = Mac.getInstance(macName, Registry.GNU_CRYPTO);
+ harness.check(jce != null, "Mac.getInstance()");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Mac.getInstance(" + macName + "): "
+ + String.valueOf(x));
+ }
+
+ byte[] kb = null;
+ if (macName.equalsIgnoreCase("UMAC32")
+ || macName.equalsIgnoreCase("UHASH32"))
+ kb = new byte[16];
+ else if (macName.toLowerCase().startsWith(Registry.OMAC_PREFIX))
+ {
+ IBlockCipher cipher = CipherFactory.getInstance(
+ macName.substring(Registry.OMAC_PREFIX.length()));
+ if (cipher != null)
+ kb = new byte[cipher.defaultKeySize()];
+ else
+ kb = new byte[gnu.macSize()];
+ }
+ else
+ kb = new byte[gnu.macSize()];
+
+ for (int i = 0; i < kb.length; i++)
+ kb[i] = (byte) i;
+
+ attrib.put(IMac.MAC_KEY_MATERIAL, kb);
+ try
+ {
+ gnu.init(attrib);
+ if (macName.equalsIgnoreCase("TMMH16"))
+ jce.init(null, params);
+ else
+ jce.init(new SecretKeySpec(kb, macName), params);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Mac.getInstance(" + macName + "): "
+ + String.valueOf(x));
+ }
+
+ gnu.update(in, 0, in.length);
+ ba1 = gnu.digest();
+ ba2 = jce.doFinal(in);
+
+ harness.check(Arrays.equals(ba1, ba2), "testEquality(" + macName + ")");
+ }
+ }
+
+ /**
+ * Tests if the result of a cloned, partially in-progress hash instance,
+ * when used later to further process data, yields the same result as the
+ * original copy.
+ */
+ public void testCloneability(TestHarness harness)
+ {
+ harness.checkPoint("testCloneability");
+ String macName;
+ Mac mac1, mac2;
+ byte[] abc = "abc".getBytes();
+ byte[] in = this.getClass().getName().getBytes();
+ byte[] ba1, ba2;
+ for (Iterator it = MacFactory.getNames().iterator(); it.hasNext();)
+ {
+ macName = (String) it.next();
+ // no point in testing OMAC-based MACs since they are not Cloneable
+ if (macName.startsWith(Registry.OMAC_PREFIX))
+ continue;
+
+ try
+ {
+ AlgorithmParameterSpec params = null;
+ if (macName.equalsIgnoreCase("UMAC32"))
+ {
+ byte[] nonce = new byte[16];
+ for (int i = 0; i < nonce.length; i++)
+ nonce[i] = (byte) i;
+
+ params = new UMac32ParameterSpec(nonce);
+ }
+ else if (macName.equalsIgnoreCase("TMMH16"))
+ {
+ IRandom rand = new MDGenerator();
+ rand.init(new HashMap());
+ Integer tagLen = new Integer(4);
+ params = new TMMHParameterSpec(rand, tagLen);
+ }
+
+ mac1 = Mac.getInstance(macName, Registry.GNU_CRYPTO);
+ byte[] kb = null;
+ if (macName.equalsIgnoreCase("UMAC32")
+ || macName.equalsIgnoreCase("UHASH32"))
+ kb = new byte[16];
+ else
+ kb = new byte[mac1.getMacLength()];
+
+ for (int i = 0; i < kb.length; i++)
+ kb[i] = (byte) i;
+
+ if (macName.equalsIgnoreCase("TMMH16"))
+ mac1.init(null, params);
+ else
+ mac1.init(new SecretKeySpec(kb, macName), params);
+
+ mac1.update(abc); // start with abc
+ mac2 = (Mac) mac1.clone(); // now clone it
+
+ ba1 = mac1.doFinal(in); // now finish both with in
+ ba2 = mac2.doFinal(in);
+
+ harness.check(Arrays.equals(ba1, ba2), "testCloneability("
+ + macName + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testCloneability(" + macName + "): "
+ + String.valueOf(x));
+ }
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new GnuCrypto()); // dynamically adds our provider
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfOtherProviders.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfOtherProviders.java
new file mode 100644
index 00000000..91ec0312
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfOtherProviders.java
@@ -0,0 +1,97 @@
+/* TestOfOtherProviders.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.javax.crypto.jce.GnuSasl;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.util.Iterator;
+import java.util.Random;
+
+/**
+ * Conformance tests for the JCE Provider implementation.
+ */
+public class TestOfOtherProviders implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testProviderName(harness);
+ testOtherSecureRandoms(harness);
+ }
+
+ public void testProviderName(TestHarness harness)
+ {
+ harness.checkPoint("testProviderName");
+ Provider us = Security.getProvider(Registry.GNU_CRYPTO);
+ harness.check(Registry.GNU_CRYPTO.equals(us.getName()));
+ us = Security.getProvider(Registry.GNU_SASL);
+ harness.check(Registry.GNU_SASL.equals(us.getName()));
+ }
+
+ public void testOtherSecureRandoms(TestHarness harness)
+ {
+ harness.checkPoint("testOtherSecureRandoms");
+ String rand;
+ Random algorithm;
+// for (Iterator it = Gnu.getSecureRandomNames().iterator(); it.hasNext();)
+ for (Iterator it = Security.getAlgorithms("SecureRandom").iterator(); it.hasNext();)
+ {
+ rand = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = SecureRandom.getInstance(rand, Registry.GNU_CRYPTO);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(rand) + ")");
+ }
+ catch (NoSuchProviderException x)
+ {
+ harness.fail("getInstance(" + String.valueOf(rand) + "): "
+ + String.valueOf(x));
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail("getInstance(" + String.valueOf(rand) + "): "
+ + String.valueOf(x));
+ }
+ }
+ }
+
+ private void setUp()
+ {
+ Security.removeProvider(Registry.GNU_SECURITY);
+ Security.addProvider(new GnuCrypto()); // dynamically adds our provider
+ Security.addProvider(new GnuSasl()); // dynamically adds our provider
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfPR25981.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR25981.java
new file mode 100644
index 00000000..722c8589
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR25981.java
@@ -0,0 +1,62 @@
+/* TestOfPR25981.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.javax.crypto.jce.GnuCrypto;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.Security;
+
+import javax.crypto.KeyGenerator;
+
+/**
+ * Regression test for PR Classpath/25981
+ */
+public class TestOfPR25981 implements Testlet
+{
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR25981");
+ setUp();
+ try
+ {
+ KeyGenerator kgen = KeyGenerator.getInstance("AES");
+ harness.check(kgen != null, "AES KeyGenerator MUST be available");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test(): " + String.valueOf(x));
+ }
+ }
+
+ private void setUp()
+ {
+ Security.addProvider(new GnuCrypto());
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27228.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27228.java
new file mode 100644
index 00000000..e946e34b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27228.java
@@ -0,0 +1,70 @@
+/* TestOfPR27228.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPairGenerator;
+
+import javax.crypto.spec.DHParameterSpec;
+
+/**
+ * Regression test for PR Classpath/27228.
+ */
+public class TestOfPR27228
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR27228()");
+ try
+ {
+ KeyPairGenerator myKpairGen = KeyPairGenerator.getInstance("DH");
+ BigInteger p = new BigInteger("17976931348623159077083915679378745319786"
+ + "029604875601170644442368419718021615851"
+ + "936894783379586492554150218056548598050"
+ + "364644054819923910005079287700335581663"
+ + "922955313623907650873575991482257486257"
+ + "500742530207744771258955095793777842444"
+ + "242661733472762929938766870920560605027"
+ + "0810842907692932019128194467627007");
+ BigInteger g = new BigInteger("2");
+ DHParameterSpec dhSkipParamSpec = new DHParameterSpec(p, g);
+
+ myKpairGen.initialize(dhSkipParamSpec);
+ harness.check(true,
+ "MUST be able to initialize a DH key-pair generator from a "
+ + "DHParameterSpec");
+ myKpairGen.generateKeyPair();
+ harness.check(true, "MUST be able to generate a DH key-pair");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPR27228(): " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27849.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27849.java
new file mode 100644
index 00000000..6a14e70f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27849.java
@@ -0,0 +1,82 @@
+/* TestOfCipherAdapter.java -- FIXME: describe
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.Key;
+import java.security.SecureRandom;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+
+/**
+ * Regression test for PR Classpath/27849.
+ */
+public class TestOfPR27849
+ implements Testlet
+{
+ private Key key;
+ private Cipher cipher;
+ byte[] iv;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ KeyGenerator keyG = KeyGenerator.getInstance("DESede");
+ keyG.init(new SecureRandom());
+ key = keyG.generateKey();
+ cipher = Cipher.getInstance("DESede/CBC/NoPadding");
+ String input = "Does this work ?";
+
+ cipher.init(Cipher.ENCRYPT_MODE, key);
+ iv = cipher.getIV();
+ harness.check(iv != null, "(Encrypting) cipher.getIV() MUST NOT return null");
+ harness.check(iv.length == 8, "IV (encryption) length MUST be 8");
+ byte[] plaintext = input.getBytes();
+ byte[] ciphertext = cipher.doFinal(plaintext);
+
+ iv = null;
+ cipher.init(Cipher.DECRYPT_MODE, key, cipher.getParameters());
+ iv = cipher.getIV();
+ harness.check(iv != null, "(Decrypting) cipher.getIV() MUST NOT return null");
+ harness.check(iv.length == 8, "IV (decryption) length MUST be 8");
+ byte[] plaintext2 = cipher.doFinal(ciphertext);
+ String recovered = new String(plaintext2);
+
+ harness.check(input.equals(recovered),
+ "Original and recovered texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java
new file mode 100644
index 00000000..b6a9911e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfPR27853.java
@@ -0,0 +1,117 @@
+/* TestOfPR27853.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.java.security.key.rsa.GnuRSAPrivateKey;
+import gnu.java.security.key.rsa.GnuRSAPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.util.Arrays;
+
+import javax.crypto.Cipher;
+
+/**
+ * Regression test for PR Classpath/27853
+ */
+public class TestOfPR27853
+ implements Testlet
+{
+ private static final BigInteger n = new BigInteger(
+ "89a95ddd60ebb60c605160a1e3c8f3294614bc16e79ded40313074cde36fdc6bd2"
+ + "abcd23de345de1afb97319884836f4d841dc4b8fb20c01be4a7176493ef02c02"
+ + "44ab3e5f59fc0fc175a929a397641e4558847f5f2e02059a383cc5115697e2ac"
+ + "018cda49ba79256e86cb0df8ba6e0bd3d4a07a8de26e5abde6b8fbf4af0be5", 16);
+ private static final BigInteger e = new BigInteger("10001", 16);
+ private static final BigInteger d = new BigInteger(
+ "84220e17a4a4faeb6c341015b3e73906ffde7d1f5b182a16b860336d400629c350c"
+ + "658b439df77d15d731ab88228169ff3475c2526fb162d4232802fb26477efbe9e"
+ + "7a82cad1732aa2c0cc8196ff1c1426e047d9d028e93d3259991d82c689b10501a"
+ + "46c04e0b70564143a44a1071bf2ac609a42ec9f9a4debb63802156ddc01", 16);
+ private static final BigInteger p = new BigInteger(
+ "8cc40f5197fbc656f3f299f0d9f0c6f6b0a31d8e893ea1050c179763f1faac4aba6"
+ + "c45caf11e0a7ef4b51805877264709565692e2e1422a9344a962f6b72e8e5", 16);
+ private static final BigInteger q = new BigInteger(
+ "fa5ac0bbcdb4143ea94d7d68d5f45d24718235112c43e63fe04f792cb4c463cbbf4"
+ + "9b70ca37c348b3047471419cd3d9ade3f65307c4c9ae3f2add3e766e86701", 16);
+ private static final BigInteger dP = new BigInteger(
+ "8b997c9fac9c52acb52d692184e1d64f9c09882c6d4ba12082477b29f1366a5b89d"
+ + "a0ab522be6a2651c4aed7fce5a35a4baed0caad83e683eb89f4bb7e51ed49", 16);
+ private static final BigInteger dQ = new BigInteger(
+ "7d63a6d4691aa06921f2a5b53433c7d2d0e71e1d13c68e33bfed0e0bce1deebdc57"
+ + "8ee2d6e546f1ca7798ba80da4360eb2f19d84c33cbaf7203cdfbd2e558801", 16);
+ private static final BigInteger qInv = new BigInteger(
+ "38be0ebc1cb06917cbcb3457f21dd8e2956eaf1d14039e845a0bed3adb1de5e5f6e"
+ + "cb1da999fe408f441e635697ae47073cc6507105836c18c37b0aa49ab01e", 16);
+ private static final String GNU = "GNU-CRYPTO";
+ private static String transformation = "RSA";
+ private static PublicKey publicK;
+ private static PrivateKey privateK;
+ private static Cipher cipher;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR27853");
+ try
+ {
+ setUp();
+ byte[] pt1 = "Does this work?".getBytes("US-ASCII");
+ byte[] ct = encrypt(pt1);
+ byte[] pt2 = decrypt(ct);
+ harness.check(Arrays.equals(pt1, pt2), "Plain texts MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test(): " + String.valueOf(x));
+ }
+ }
+
+ private void setUp() throws Exception
+ {
+ publicK = new GnuRSAPublicKey(1, n, e);
+ privateK = new GnuRSAPrivateKey(1, n, e, d, p, q, dP, dQ, qInv);
+ cipher = Cipher.getInstance(transformation, GNU);
+ }
+
+ private byte[] encrypt(byte[] plainText) throws Exception
+ {
+ cipher.init(Cipher.ENCRYPT_MODE, publicK);
+ byte[] result = cipher.doFinal(plainText);
+ return result;
+ }
+
+ private byte[] decrypt(byte[] cipherText) throws Exception
+ {
+ cipher.init(Cipher.DECRYPT_MODE, privateK);
+ byte[] result = cipher.doFinal(cipherText);
+ return result;
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/TestOfTripleDESParityAdjustment.java b/gnu/testlet/gnu/javax/crypto/jce/TestOfTripleDESParityAdjustment.java
new file mode 100644
index 00000000..3af43395
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/TestOfTripleDESParityAdjustment.java
@@ -0,0 +1,46 @@
+/* TestOfTripleDESParityAdjustment.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce;
+
+import gnu.javax.crypto.cipher.TripleDES;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for DES and TripleDES key parity adjustment methods.
+ */
+public class TestOfTripleDESParityAdjustment
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("test()");
+ byte[] kBytes = new byte[24];
+ for (int i = 0; i < kBytes.length; i++)
+ kBytes[i] = (byte)(i + 1);
+
+ TripleDES.adjustParity(kBytes, 0);
+ harness.check(TripleDES.isParityAdjusted(kBytes, 0), "Parity MUST be adjusted");
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Entries b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Entries
new file mode 100644
index 00000000..24c09156
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Entries
@@ -0,0 +1,2 @@
+/TestOfKeystore.java/1.1/Sat May 20 01:17:09 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Repository b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Repository
new file mode 100644
index 00000000..14ad933e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/jce/keyring
diff --git a/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Root b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/keyring/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/jce/keyring/TestOfKeystore.java b/gnu/testlet/gnu/javax/crypto/jce/keyring/TestOfKeystore.java
new file mode 100644
index 00000000..fa7b2b7e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/jce/keyring/TestOfKeystore.java
@@ -0,0 +1,226 @@
+/* TestOfKeystore.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.jce.keyring;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.math.BigInteger;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.util.Arrays;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.dss.DSSPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the GNU GKR KeyStore Adapter classes.
+ */
+public class TestOfKeystore
+ implements Testlet
+{
+ /** KeyStore password. */
+ private static final char[] STORE_PASSWORD = "secret".toCharArray();
+ /** Private Key Entry alias. */
+ private static final String ALIAS = "mykey";
+ /** Public Key Entry alias. */
+ private static final String ALIAS_DSA = "mykey_dsa";
+ /** Trusted Certificate Entry alias. */
+ private static final String ANOTHER_ALIAS = "herkey";
+ /** Key Entry password. */
+ private static final char[] KEY_PASSWORD = "changeme".toCharArray();
+ /** Common DSA key material - p. */
+ private static final BigInteger p = new BigInteger(
+ "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d4"
+ + "02251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5"
+ + "a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec"
+ + "3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);
+ /** Common DSA key material - q. */
+ private static final BigInteger q = new BigInteger(
+ "9760508f15230bccb292b982a2eb840bf0581cf5", 16);
+ /** Common DSA key material - g. */
+ private static final BigInteger g = new BigInteger(
+ "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d07826751595"
+ + "78ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b"
+ + "547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea85"
+ + "19089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);
+ /** Public DSA key part. */
+ private static final BigInteger x = new BigInteger(
+ "631305a19984821b95a8c776d38167a4ea2ceb8", 16);
+ /** Private DSA key part. */
+ private static final BigInteger y = new BigInteger(
+ "cc1045a7550205a581ec3a9fed50c6d4aaae9ef2512c066f0d52617e0d462895c00bd"
+ + "f2d329c53a9c0f690e406d49e21beb557d47436df9cdda5ad2f532620a5260704c5"
+ + "91920ff674666e2166066727051f3d515aedf03a4bdb2d69dd13bbd9b5e7941ff37"
+ + "fb35f2d9138b4172e64393b04afdcc630739fbe6993f27f467e17", 16);
+ /** Alias's Self-signed certificate. */
+ private static final String SELF_SIGNED_CERT = "\n"
+ + "-----BEGIN CERTIFICATE-----\n"
+ + "MIIC9zCCAregAwIBAAIBATAJBgcqhkjOOAQDMGIxFzAVBgNVBAMMDlJhaWYgUy4g\n"
+ + "TmFmZmFoMRswGQYDVQQKDBJUaGUgU2FtcGxlIENvbXBhbnkxDzANBgNVBAcMBlN5\n"
+ + "ZG5leTEMMAoGA1UECAwDTlNXMQswCQYDVQQGDAJBVTAeFw0wNjA1MTgwOTM5Mzla\n"
+ + "Fw0wNjA4MTYwOTM5MzlaMGIxFzAVBgNVBAMMDlJhaWYgUy4gTmFmZmFoMRswGQYD\n"
+ + "VQQKDBJUaGUgU2FtcGxlIENvbXBhbnkxDzANBgNVBAcMBlN5ZG5leTEMMAoGA1UE\n"
+ + "CAwDTlNXMQswCQYDVQQGDAJBVTCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OB\n"
+ + "HXUSKVLfSpwu7OTn9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tV\n"
+ + "bNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPF\n"
+ + "HsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvw\n"
+ + "WBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUWU/m\n"
+ + "cQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi\n"
+ + "8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQDM\n"
+ + "EEWnVQIFpYHsOp/tUMbUqq6e8lEsBm8NUmF+DUYolcAL3y0ynFOpwPaQ5AbUniG+\n"
+ + "tVfUdDbfnN2lrS9TJiClJgcExZGSD/Z0Zm4hZgZnJwUfPVFa7fA6S9stad0Tu9m1\n"
+ + "55Qf83+zXy2ROLQXLmQ5OwSv3MYwc5++aZPyf0Z+FzAJBgcqhkjOOAQDAy8AMCwC\n"
+ + "FE5UuDO5crsK+kOwdqzbr0WCzQQrAhR7ZwA+cBYvIfP3kr7lItJhY4nRBQ==\n"
+ + "-----END CERTIFICATE-----\n";
+ private static final String CA_SIGNED_CERT = "\n"
+ + "-----BEGIN CERTIFICATE-----\n"
+ + "MIIDHTCCAsegAwIBAgIKY1JbPwAAAAAqpTANBgkqhkiG9w0BAQUFADBgMQswCQYD\n"
+ + "VQQGEwJHQjERMA8GA1UEChMIQXNjZXJ0aWExJjAkBgNVBAsTHUNsYXNzIDEgQ2Vy\n"
+ + "dGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQDEw1Bc2NlcnRpYSBDQSAxMB4XDTA2\n"
+ + "MDQyNzAwNDk1NloXDTA3MDQyNzAwNTk1NlowZjELMAkGA1UEBhMCQVUxDDAKBgNV\n"
+ + "BAgTA05TVzEPMA0GA1UEBxMGU3lkbmV5MRswGQYDVQQKExJUaGUgU2FtcGxlIENv\n"
+ + "bXBhbnkxGzAZBgNVBAMTEnNvbG9tb24udG5nLmNvbS5hdTCBnzANBgkqhkiG9w0B\n"
+ + "AQEFAAOBjQAwgYkCgYEArqzuAz6OY5GuyT+U0k45iYMKBmTFRJ0WcLeCpCYIkDuW\n"
+ + "wxoRpVdLeoHz5sz5wbj/BLqk6MUgG8kbCILGi5SntpjgmNEynAYoLsh5rrGp7/P0\n"
+ + "CiymIgFmvVynR4+tQ40/EbBGpO7feSkhPVTnmk5oX7VW1KCDDfJxvqr5/3u6m9UC\n"
+ + "AwEAAaOCARcwggETMB0GA1UdDgQWBBQdKwf6zaazew9E+c77pAvSzNY8nTBjBgNV\n"
+ + "HSMEXDBagBSU/lmHRXvTSToKiu9ExYH2J9WQGaE/pD0wOzELMAkGA1UEBhMCR0Ix\n"
+ + "ETAPBgNVBAoTCEFzY2VydGlhMRkwFwYDVQQDExBBc2NlcnRpYSBSb290IENBggEN\n"
+ + "ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly93d3cuYXNjZXJ0aWEuY29tL09ubGlu\n"
+ + "ZUNBL2NybHMvQXNjZXJ0aWFDQTEvY2xhc3MxLmNybDA+BggrBgEFBQcBAQQyMDAw\n"
+ + "LgYIKwYBBQUHMAKGImh0dHA6Ly9vY3NwLmdsb2JhbHRydXN0ZmluZGVyLmNvbS8w\n"
+ + "DQYJKoZIhvcNAQEFBQADQQCHVsnDcYyjikSMmc3++UVj9XpFkJZqaI4U6baoP68Q\n"
+ + "hPe5niht+x2ez35j+Ytx7aNu0MVcAiyA6eyTE9ZYP/vU\n"
+ + "-----END CERTIFICATE-----\n";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfKeystore");
+ try
+ {
+ // instantiate the key-store
+ KeyStore ks1 = KeyStore.getInstance("gkr");
+ harness.check(ks1 != null, "GKR-type KeyStore MUST be available");
+ // load it with null i/o stream; i.e. create it
+ ks1.load(null, STORE_PASSWORD);
+ // store a (private) key-entry
+ PrivateKey pk1 = new DSSPrivateKey(Registry.ASN1_ENCODING_ID, p, q, g, x);
+ CertificateFactory x509Factory = CertificateFactory.getInstance("X.509");
+ byte[] certificateBytes = SELF_SIGNED_CERT.getBytes("ASCII");
+ ByteArrayInputStream bais = new ByteArrayInputStream(certificateBytes);
+ Certificate c1 = x509Factory.generateCertificate(bais);
+ Certificate[] chain1 = new Certificate[] { c1 };
+ ks1.setKeyEntry(ALIAS, pk1, KEY_PASSWORD, chain1);
+ // retrieve the same (private) key-entry
+ PrivateKey pk2 = (PrivateKey) ks1.getKey(ALIAS, KEY_PASSWORD);
+ // check that private key is the same
+ harness.check(pk2, pk1, "In-memory and original private key MUST be equal");
+ // retrieve the certificate
+ Certificate[] chain2 = ks1.getCertificateChain(ALIAS);
+ harness.check(Arrays.equals(chain2, chain1),
+ "In-memory and original certificate MUST be equal");
+ // store a (public) key entry
+ PublicKey k1 = new DSSPublicKey(Registry.ASN1_ENCODING_ID, p, q, g, y);
+ ks1.setKeyEntry(ALIAS_DSA, k1, null, null);
+ // retrieve the same (public) key-entry
+ PublicKey k2 = (PublicKey) ks1.getKey(ALIAS_DSA, null);
+ // check it's still the same
+ harness.check(k2, k1, "In-memory and original public key MUST be equal");
+ // see if alias was used for a trusted certificate
+ Certificate cert = ks1.getCertificate(ALIAS);
+ harness.check(cert == null,
+ "Trusted certificate w/ same Alias MUST NOT be found");
+ // must not be able to use same alias for a trusted certificate
+ certificateBytes = CA_SIGNED_CERT.getBytes("ASCII");
+ bais = new ByteArrayInputStream(certificateBytes);
+ Certificate tc1 = x509Factory.generateCertificate(bais);
+ String msg = "MUST NOT be able to use same alias for a trusted certificate";
+ try
+ {
+ ks1.setCertificateEntry(ALIAS, tc1);
+ harness.fail(msg);
+ }
+ catch (KeyStoreException e)
+ {
+ harness.check(true, msg);
+ }
+ // store a trusted certificate
+ ks1.setCertificateEntry(ANOTHER_ALIAS, tc1);
+ // retrieve the same trusted certificate
+ Certificate tc2 = ks1.getCertificate(ANOTHER_ALIAS);
+ // check it's still the same
+ harness.check(tc2, tc1,
+ "In-memory and original trusted certificate MUST be equal");
+
+ // persist the key-store
+ File ksFile = File.createTempFile("gkr-", ".gks");
+ ksFile.deleteOnExit();
+ FileOutputStream fos = new FileOutputStream(ksFile);
+ ks1.store(fos, STORE_PASSWORD);
+ fos.flush();
+ fos.close();
+ // re-load it from the persisted file
+ KeyStore ks2 = KeyStore.getInstance("gkr");
+ FileInputStream fis = new FileInputStream(ksFile);
+ ks2.load(fis, STORE_PASSWORD);
+ // retrieve the private key
+ PrivateKey pk3 = (PrivateKey) ks2.getKey(ALIAS, KEY_PASSWORD);
+ // check that private key is the same
+ harness.check(pk3, pk1, "Persisted and original private key MUST be equal");
+ // retrieve the certificate
+ Certificate[] chain3 = ks2.getCertificateChain(ALIAS);
+ // check that it's still the same
+ harness.check(Arrays.equals(chain3, chain1),
+ "Persisted and original certificate MUST be equal");
+ // retrieve the public key
+ PublicKey k3 = (PublicKey) ks2.getKey(ALIAS_DSA, null);
+ // check it's still the same
+ harness.check(k3, k1, "Persisted and original public key MUST be equal");
+ // retrieve the trusted certificate
+ Certificate tc3 = ks2.getCertificate(ANOTHER_ALIAS);
+ // check it's still the same
+ harness.check(tc3, tc1,
+ "Persisted and original trusted certificate MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfKeystore");
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/key/CVS/Entries b/gnu/testlet/gnu/javax/crypto/key/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/crypto/key/CVS/Entries.Log b/gnu/testlet/gnu/javax/crypto/key/CVS/Entries.Log
new file mode 100644
index 00000000..f7f9a89c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dh////
+A D/srp6////
diff --git a/gnu/testlet/gnu/javax/crypto/key/CVS/Repository b/gnu/testlet/gnu/javax/crypto/key/CVS/Repository
new file mode 100644
index 00000000..733399be
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/key
diff --git a/gnu/testlet/gnu/javax/crypto/key/CVS/Root b/gnu/testlet/gnu/javax/crypto/key/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Entries b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Entries
new file mode 100644
index 00000000..d8cd7db2
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfDHCodec.java/1.2/Sun Feb 12 09:12:39 2006//
+/TestOfDHKeyAgreements.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfDHKeyGeneration.java/1.2/Sun Jun 18 02:52:12 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Repository b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Repository
new file mode 100644
index 00000000..fd0aa96a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/key/dh
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Root b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHCodec.java b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHCodec.java
new file mode 100644
index 00000000..dc12ecd9
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHCodec.java
@@ -0,0 +1,179 @@
+/* TestOfDHCodec.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.dh;
+
+import gnu.java.security.key.IKeyPairCodec;
+import gnu.javax.crypto.key.dh.DHKeyPairPKCS8Codec;
+import gnu.javax.crypto.key.dh.DHKeyPairRawCodec;
+import gnu.javax.crypto.key.dh.DHKeyPairX509Codec;
+import gnu.javax.crypto.key.dh.GnuDHKeyPairGenerator;
+import gnu.javax.crypto.key.dh.GnuDHPrivateKey;
+import gnu.javax.crypto.key.dh.GnuDHPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.util.HashMap;
+
+import javax.crypto.interfaces.DHPrivateKey;
+import javax.crypto.interfaces.DHPublicKey;
+
+/**
+ * Conformance tests for the Diffie-Hellman key format encoding/decoding
+ * implementation.
+ */
+public class TestOfDHCodec implements Testlet
+{
+ private HashMap map;
+ private GnuDHKeyPairGenerator kpg = new GnuDHKeyPairGenerator();
+ private KeyPair kp;
+
+ public void test(TestHarness harness)
+ {
+ setUp();
+
+ testUnknownKeyPairCodec(harness);
+ testKeyPairRawCodec(harness);
+ testKeyPairASN1Codec(harness);
+ testPublicKeyValueOf(harness);
+ testPrivateKeyValueOf(harness);
+ }
+
+ private void testUnknownKeyPairCodec(TestHarness harness)
+ {
+ harness.checkPoint("testUnknownKeyPairCodec");
+
+ kp = kpg.generate();
+
+ DHPublicKey pubK = (DHPublicKey) kp.getPublic();
+ try
+ {
+ ((GnuDHPublicKey) pubK).getEncoded(0);
+ harness.fail("Public key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown public key format ID");
+ }
+
+ DHPrivateKey secK = (DHPrivateKey) kp.getPrivate();
+ try
+ {
+ ((GnuDHPrivateKey) secK).getEncoded(0);
+ harness.fail("Private key succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown private key format ID");
+ }
+ }
+
+ public void testKeyPairRawCodec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairRawCodec");
+
+ kp = kpg.generate();
+
+ GnuDHPublicKey pubK = (GnuDHPublicKey) kp.getPublic();
+ GnuDHPrivateKey secK = (GnuDHPrivateKey) kp.getPrivate();
+
+ byte[] pk1, pk2;
+
+ pk1 = ((GnuDHPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ pk2 = ((GnuDHPrivateKey) secK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+
+ IKeyPairCodec codec = new DHKeyPairRawCodec();
+ PublicKey newPubK = codec.decodePublicKey(pk1);
+ PrivateKey newSecK = codec.decodePrivateKey(pk2);
+
+ harness.check(pubK.equals(newPubK),
+ "DH public key Raw encoder/decoder test");
+ harness.check(secK.equals(newSecK),
+ "DH private key Raw encoder/decoder test");
+ }
+
+ private void testKeyPairASN1Codec(TestHarness harness)
+ {
+ harness.checkPoint("testKeyPairASN1Codec");
+
+ kp = kpg.generate();
+
+ byte[] pk;
+
+ DHPublicKey pubK = (DHPublicKey) kp.getPublic();
+ DHPrivateKey secK = (DHPrivateKey) kp.getPrivate();
+
+ pk = ((GnuDHPrivateKey) secK).getEncoded(IKeyPairCodec.PKCS8_FORMAT);
+ PrivateKey newSecK = new DHKeyPairPKCS8Codec().decodePrivateKey(pk);
+ harness.check(secK.equals(newSecK),
+ "DH private key ASN.1 encoder/decoder test");
+
+ pk = ((GnuDHPublicKey) pubK).getEncoded(IKeyPairCodec.X509_FORMAT);
+ PublicKey newPubK = new DHKeyPairX509Codec().decodePublicKey(pk);
+ harness.check(pubK.equals(newPubK),
+ "DH public key ASN.1 encoder/decoder test");
+ }
+
+ public void testPublicKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPublicKeyValueOf");
+
+ kp = kpg.generate();
+
+ GnuDHPublicKey pubK = (GnuDHPublicKey) kp.getPublic();
+
+ byte[] pk = ((GnuDHPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey newPubK = GnuDHPublicKey.valueOf(pk);
+
+ harness.check(pubK.equals(newPubK),
+ "DH public key valueOf(<raw-value>) test");
+ }
+
+ public void testPrivateKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("testPrivateKeyValueOf");
+
+ kp = kpg.generate();
+
+ GnuDHPrivateKey privateK = (GnuDHPrivateKey) kp.getPrivate();
+
+ byte[] pk = ((GnuDHPrivateKey) privateK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey newSecK = GnuDHPrivateKey.valueOf(pk);
+
+ harness.check(privateK.equals(newSecK),
+ "DH public key valueOf(<raw-value>) test");
+ }
+
+ private void setUp()
+ {
+ map = new HashMap();
+ map.put(GnuDHKeyPairGenerator.PRIME_SIZE, new Integer(512));
+ map.put(GnuDHKeyPairGenerator.EXPONENT_SIZE, new Integer(160));
+
+ kpg = new GnuDHKeyPairGenerator();
+ kpg.setup(map);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyAgreements.java b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyAgreements.java
new file mode 100644
index 00000000..a0bda2be
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyAgreements.java
@@ -0,0 +1,286 @@
+/* TestOfDHKeyAgreements.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.dh;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.IKeyPairGenerator;
+import gnu.java.security.key.KeyPairGeneratorFactory;
+import gnu.javax.crypto.key.IKeyAgreementParty;
+import gnu.javax.crypto.key.KeyAgreementException;
+import gnu.javax.crypto.key.IncomingMessage;
+import gnu.javax.crypto.key.OutgoingMessage;
+import gnu.javax.crypto.key.dh.DiffieHellmanKeyAgreement;
+import gnu.javax.crypto.key.dh.DiffieHellmanReceiver;
+import gnu.javax.crypto.key.dh.DiffieHellmanSender;
+import gnu.javax.crypto.key.dh.ElGamalReceiver;
+import gnu.javax.crypto.key.dh.ElGamalSender;
+import gnu.javax.crypto.key.dh.ElGamalKeyAgreement;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A test case for the Diffie-Hellman key agreements, both the Static-Static
+ * (basic version) and the Ephemeral-Static (ElGamal) modes.
+ */
+public class TestOfDHKeyAgreements implements Testlet
+{
+ private KeyPair kpA, kpB;
+
+ private IKeyAgreementParty A, B;
+
+ public void test(TestHarness harness)
+ {
+ testOfStaticStatic(harness);
+ testOfEphemeralStatic(harness);
+ }
+
+ public void testOfStaticStatic(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDHKeyAgreements.testOfStaticStatic");
+
+ setUp();
+
+ A = new DiffieHellmanSender();
+ B = new DiffieHellmanReceiver();
+
+ Map mapA = new HashMap();
+ mapA.put(DiffieHellmanKeyAgreement.KA_DIFFIE_HELLMAN_OWNER_PRIVATE_KEY,
+ kpA.getPrivate());
+ Map mapB = new HashMap();
+ mapB.put(DiffieHellmanKeyAgreement.KA_DIFFIE_HELLMAN_OWNER_PRIVATE_KEY,
+ kpB.getPrivate());
+
+ try
+ {
+ A.init(mapA);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising A");
+ }
+ harness.check(!A.isComplete(), "A is ready");
+
+ try
+ {
+ B.init(mapB);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising B");
+ }
+ harness.check(!B.isComplete(), "B is ready");
+
+ // (1) A -> B: g**x mod p
+ OutgoingMessage out = null;
+ try
+ {
+ out = A.processMessage(null);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while A is in step #1");
+ }
+ harness.check(!A.isComplete(), "A is OK after step #1");
+
+ // (2) B -> A: g^^y mod p
+ IncomingMessage in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding B, A's incoming message");
+ }
+ out = null;
+ try
+ {
+ out = B.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while B is in step #1");
+ }
+ harness.check(B.isComplete(), "B is complete after step #1");
+
+ byte[] k2 = null;
+ try
+ {
+ k2 = B.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing B's version of the shared secret");
+ }
+
+ // A computes the shared secret
+ in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding A, B's incoming message");
+ }
+ out = null;
+ try
+ {
+ out = A.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while A is in step #2");
+ }
+ harness.check(A.isComplete(), "A is complete after step #2");
+
+ byte[] k1 = null;
+ try
+ {
+ k1 = A.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing A's version of the shared secret");
+ }
+
+ harness.check(Arrays.equals(k1, k2), "A and B share the same secret");
+ }
+
+ public void testOfEphemeralStatic(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDHKeyAgreements.testOfEphemeralStatic");
+
+ setUp();
+
+ A = new ElGamalSender();
+ B = new ElGamalReceiver();
+
+ Map mapA = new HashMap();
+ mapA.put(ElGamalKeyAgreement.KA_ELGAMAL_RECIPIENT_PUBLIC_KEY,
+ kpB.getPublic());
+ Map mapB = new HashMap();
+ mapB.put(ElGamalKeyAgreement.KA_ELGAMAL_RECIPIENT_PRIVATE_KEY,
+ kpB.getPrivate());
+
+ try
+ {
+ A.init(mapA);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising A");
+ }
+ harness.check(!A.isComplete(), "A is ready");
+
+ try
+ {
+ B.init(mapB);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising B");
+ }
+ harness.check(!B.isComplete(), "B is ready");
+
+ // (1) A -> B: g**x mod p
+ OutgoingMessage out = null;
+ try
+ {
+ out = A.processMessage(null);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while A is in step #1");
+ }
+ harness.check(A.isComplete(), "A is complete after step #1");
+
+ IncomingMessage in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding B, A's incoming message");
+ }
+ out = null;
+ try
+ {
+ out = B.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while B is in step #1");
+ }
+ harness.check(B.isComplete(), "B is complete after step #1");
+
+ byte[] k1 = null;
+ try
+ {
+ k1 = A.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing A's version of the shared secret");
+ }
+
+ byte[] k2 = null;
+ try
+ {
+ k2 = B.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing B's version of the shared secret");
+ }
+
+ harness.check(Arrays.equals(k1, k2), "A and B share the same secret");
+ }
+
+ private void setUp()
+ {
+ IKeyPairGenerator kpg = KeyPairGeneratorFactory.getInstance(Registry.DH_KPG);
+ kpg.setup(new HashMap()); // use default values
+ kpA = kpg.generate();
+ kpB = kpg.generate();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyGeneration.java b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyGeneration.java
new file mode 100644
index 00000000..acd53598
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/dh/TestOfDHKeyGeneration.java
@@ -0,0 +1,77 @@
+/* TestOfDHKeyGeneration.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.dh;
+
+import gnu.javax.crypto.key.dh.GnuDHKeyPairGenerator;
+import gnu.javax.crypto.key.dh.GnuDHPrivateKey;
+import gnu.javax.crypto.key.dh.GnuDHPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the Diffie-Hellman key-pair generation implementation.
+ */
+public class TestOfDHKeyGeneration implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfDHKeyGeneration");
+ GnuDHKeyPairGenerator kpg = new GnuDHKeyPairGenerator();
+ HashMap map = new HashMap();
+ map.put(GnuDHKeyPairGenerator.PRIME_SIZE, new Integer(530));
+
+ try
+ {
+ kpg.setup(map);
+ harness.fail("L should be <= 1024 and of the form 512 + 64n");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "L should be <= 1024 and of the form 512 + 64n");
+ }
+
+ map.put(GnuDHKeyPairGenerator.PRIME_SIZE, new Integer(512));
+ map.put(GnuDHKeyPairGenerator.EXPONENT_SIZE, new Integer(160));
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ BigInteger p1 = ((GnuDHPublicKey) kp.getPublic()).getParams().getP();
+ BigInteger p2 = ((GnuDHPrivateKey) kp.getPrivate()).getParams().getP();
+ harness.check(p1.equals(p2), "p1.equals(p2)");
+
+ BigInteger q1 = ((GnuDHPublicKey) kp.getPublic()).getQ();
+ BigInteger q2 = ((GnuDHPrivateKey) kp.getPrivate()).getQ();
+ harness.check(q1.equals(q2), "q1.equals(q2)");
+
+ BigInteger g1 = ((GnuDHPublicKey) kp.getPublic()).getParams().getG();
+ BigInteger g2 = ((GnuDHPrivateKey) kp.getPrivate()).getParams().getG();
+ harness.check(g1.equals(g2), "g1.equals(g2)");
+
+ harness.check(p1.isProbablePrime(80), "p is probable prime");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Entries b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Entries
new file mode 100644
index 00000000..d538d37e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfSRP6KeyAgreements.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSRPCodec.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfSRPKeyGeneration.java/1.2/Sun Jun 18 02:52:12 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Repository b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Repository
new file mode 100644
index 00000000..d9208153
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/key/srp6
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Root b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRP6KeyAgreements.java b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRP6KeyAgreements.java
new file mode 100644
index 00000000..fea8b14a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRP6KeyAgreements.java
@@ -0,0 +1,455 @@
+/* TestOfSRP6KeyAgreements.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.srp6;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.key.IKeyAgreementParty;
+import gnu.javax.crypto.key.IncomingMessage;
+import gnu.javax.crypto.key.KeyAgreementException;
+import gnu.javax.crypto.key.OutgoingMessage;
+import gnu.javax.crypto.key.srp6.SRP6Host;
+import gnu.javax.crypto.key.srp6.SRP6KeyAgreement;
+import gnu.javax.crypto.key.srp6.SRP6User;
+import gnu.javax.crypto.key.srp6.SRP6SaslClient;
+import gnu.javax.crypto.key.srp6.SRP6SaslServer;
+import gnu.javax.crypto.sasl.srp.SRPAuthInfoProvider;
+import gnu.javax.crypto.sasl.srp.SRPRegistry;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.File;
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+import javax.security.sasl.AuthenticationException;
+
+/**
+ * A test case for the SRP-6, both basic and SASL alternative versions of
+ * the key agreement protocol.
+ */
+public class TestOfSRP6KeyAgreements implements Testlet
+{
+ private String I = "test"; // user name
+
+ private String p = "test"; // user plain password
+
+ private String pFile = "./gnu_crypto_srp6test";
+
+ private String p2File = pFile + "2"; // ./test2
+
+ private String cFile = pFile + ".conf"; // ./test.conf
+
+ private SRPAuthInfoProvider tpasswd = new SRPAuthInfoProvider();
+
+ private IKeyAgreementParty A, B;
+
+ BigInteger N;
+
+ BigInteger g;
+
+ private Random prng = new Random();
+
+ public void test(final TestHarness harness)
+ {
+ testBasicVersion(harness);
+ testSaslVersion(harness);
+ }
+
+ public void testBasicVersion(final TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRP6KeyAgreements.testBasicVersion");
+
+ try
+ {
+ setUp();
+ }
+ catch (IOException x)
+ {
+ harness.debug(x);
+ harness.fail("while setting up the test");
+ }
+
+ A = new SRP6User();
+
+ final Map mapA = new HashMap();
+ mapA.put(SRP6KeyAgreement.SHARED_MODULUS, N);
+ mapA.put(SRP6KeyAgreement.GENERATOR, g);
+ mapA.put(SRP6KeyAgreement.HASH_FUNCTION, Registry.MD5_HASH);
+ mapA.put(SRP6KeyAgreement.USER_IDENTITY, I);
+ mapA.put(SRP6KeyAgreement.USER_PASSWORD, p.getBytes());
+
+ try
+ {
+ A.init(mapA);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising User");
+ }
+ harness.check(!A.isComplete(), "User is ready");
+
+ B = new SRP6Host();
+
+ final Map mapB = new HashMap();
+ mapB.put(SRP6KeyAgreement.SHARED_MODULUS, N);
+ mapB.put(SRP6KeyAgreement.GENERATOR, g);
+ mapB.put(SRP6KeyAgreement.HASH_FUNCTION, Registry.MD5_HASH);
+ mapB.put(SRP6KeyAgreement.HOST_PASSWORD_DB, tpasswd);
+
+ try
+ {
+ B.init(mapB);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising Host");
+ }
+ harness.check(!B.isComplete(), "Host is ready");
+
+ // (1) user send I and it's public ephemeral key
+ OutgoingMessage out = null;
+ try
+ {
+ out = A.processMessage(null);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while User (A) is in step #1");
+ }
+ harness.check(!A.isComplete(), "User (A) is OK after step #1");
+
+ // (2) host receives user identity and key, and generates its own
+ IncomingMessage in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding Host (B), User's (A) incoming message");
+ }
+ out = null;
+ try
+ {
+ out = B.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while Host (B) is in step #1");
+ }
+ harness.check(B.isComplete(), "Host (B) is complete after step #1");
+
+ byte[] k2 = null;
+ try
+ {
+ k2 = B.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing Host's (B) version of the shared secret");
+ }
+
+ // A computes the shared secret
+ in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding User (A), Host's (B) incoming message");
+ }
+ // out = null;
+ try
+ {
+ // out = A.processMessage(in);
+ A.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while User (A) is in step #2");
+ }
+ harness.check(A.isComplete(), "User (A) is complete after step #2");
+
+ byte[] k1 = null;
+ try
+ {
+ k1 = A.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing User's (A) version of the shared secret");
+ }
+
+ harness.check(Arrays.equals(k1, k2),
+ "User (A) and Host (B) share the same secret");
+
+ tearDown();
+ }
+
+ public void testSaslVersion(final TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRP6KeyAgreements.testSaslVersion");
+
+ try
+ {
+ setUp();
+ }
+ catch (IOException x)
+ {
+ harness.debug(x);
+ harness.fail("while setting up the test");
+ }
+
+ A = new SRP6SaslClient();
+
+ final Map mapA = new HashMap();
+ mapA.put(SRP6KeyAgreement.HASH_FUNCTION, Registry.MD5_HASH);
+ mapA.put(SRP6KeyAgreement.USER_IDENTITY, I);
+ mapA.put(SRP6KeyAgreement.USER_PASSWORD, p.getBytes());
+
+ try
+ {
+ A.init(mapA);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising Client");
+ }
+ harness.check(!A.isComplete(), "Client is ready");
+
+ B = new SRP6SaslServer();
+
+ final Map mapB = new HashMap();
+ mapB.put(SRP6KeyAgreement.HASH_FUNCTION, Registry.MD5_HASH);
+ mapB.put(SRP6KeyAgreement.HOST_PASSWORD_DB, tpasswd);
+
+ try
+ {
+ B.init(mapB);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while initialising Server");
+ }
+ harness.check(!B.isComplete(), "Server is ready");
+
+ // (1) user send I
+ OutgoingMessage out = null;
+ try
+ {
+ out = A.processMessage(null);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while Client (A) is in step #1");
+ }
+ harness.check(!A.isComplete(), "Client (A) is OK after step #1");
+
+ // (2) host receives user identity, and generates its own public key
+ IncomingMessage in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding Server (B), Client's (A) incoming message");
+ }
+ out = null;
+ try
+ {
+ out = B.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while Server (B) is in step #1");
+ }
+ harness.check(!B.isComplete(), "Server (B) is OK after step #1");
+
+ // (3) A computes the shared secret
+ in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding Client (A), Server's (B) incoming message");
+ }
+ out = null;
+ try
+ {
+ out = A.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while User (A) is in step #2");
+ }
+ harness.check(A.isComplete(), "Client (A) is complete after step #2");
+
+ byte[] k1 = null;
+ try
+ {
+ k1 = A.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing Client's (A) version of the shared secret");
+ }
+
+ // (4) B computes the shared secret
+ in = null;
+ try
+ {
+ in = new IncomingMessage(out.toByteArray());
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while feeding Server (B), Client's (A) incoming message");
+ }
+ try
+ {
+ B.processMessage(in);
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.debug(x);
+ harness.fail("while Server (B) is in step #2");
+ }
+ harness.check(B.isComplete(), "Server (B) is complete after step #2");
+
+ byte[] k2 = null;
+ try
+ {
+ k2 = B.getSharedSecret();
+ }
+ catch (KeyAgreementException x)
+ {
+ harness.fail("while accessing Host's (B) version of the shared secret");
+ }
+
+ harness.check(Arrays.equals(k1, k2),
+ "Client (A) and Server (B) share the same secret");
+
+ tearDown();
+ }
+
+ private void setUp() throws IOException
+ {
+ final Map context = new HashMap();
+ context.put(SRPRegistry.PASSWORD_FILE, pFile);
+ tpasswd.activate(context);
+
+ Map credentials;
+ final Map userID = new HashMap();
+ userID.put(Registry.SASL_USERNAME, I);
+ userID.put(SRPRegistry.MD_NAME_FIELD, Registry.MD5_HASH);
+ try
+ {
+ credentials = tpasswd.lookup(userID);
+ // user exists. update its credentials
+ userID.put(Registry.SASL_PASSWORD, p);
+ userID.put(SRPRegistry.CONFIG_NDX_FIELD,
+ credentials.get(SRPRegistry.CONFIG_NDX_FIELD));
+
+ tpasswd.update(userID);
+
+ }
+ catch (AuthenticationException x)
+ { // create new user
+ userID.put(Registry.SASL_PASSWORD, p);
+ final byte[] salt = new byte[10];
+ prng.nextBytes(salt);
+ userID.put(SRPRegistry.SALT_FIELD, Util.toBase64(salt));
+ userID.put(SRPRegistry.CONFIG_NDX_FIELD, SRPRegistry.N_512_BITS);
+
+ tpasswd.update(userID);
+ }
+
+ credentials = tpasswd.lookup(userID);
+
+ // BigInteger s = new BigInteger(1, Util.fromBase64(
+ // (String) credentials.get(SRPRegistry.SALT_FIELD)));
+ // BigInteger v = new BigInteger(1, Util.fromBase64(
+ // (String) credentials.get(SRPRegistry.USER_VERIFIER_FIELD)));
+
+ final String mode = (String) credentials.get(SRPRegistry.CONFIG_NDX_FIELD);
+ final Map configuration = tpasswd.getConfiguration(mode);
+
+ N = new BigInteger(
+ 1,
+ Util.fromBase64((String) configuration.get(SRPRegistry.SHARED_MODULUS)));
+ g = new BigInteger(
+ 1,
+ Util.fromBase64((String) configuration.get(SRPRegistry.FIELD_GENERATOR)));
+ }
+
+ private void tearDown()
+ {
+ try
+ {
+ new File(pFile).delete(); // remove test file
+ }
+ catch (Exception ignored)
+ {
+ }
+
+ try
+ {
+ new File(p2File).delete(); // remove test2 file
+ }
+ catch (Exception ignored)
+ {
+ }
+
+ try
+ {
+ new File(cFile).delete(); // remove test.conf file
+ }
+ catch (Exception ignored)
+ {
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPCodec.java b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPCodec.java
new file mode 100644
index 00000000..9c3f01f5
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPCodec.java
@@ -0,0 +1,124 @@
+/* TestOfSRPCodec.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.srp6;
+
+import gnu.java.security.key.IKeyPairCodec;
+import gnu.javax.crypto.key.srp6.SRPKeyPairGenerator;
+import gnu.javax.crypto.key.srp6.SRPKeyPairRawCodec;
+import gnu.javax.crypto.key.srp6.SRPPrivateKey;
+import gnu.javax.crypto.key.srp6.SRPPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyPair;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the SRP key encoding/decoding implementation.
+ */
+public class TestOfSRPCodec implements Testlet
+{
+ private SRPKeyPairGenerator kpg = new SRPKeyPairGenerator();
+
+ private KeyPair kp;
+
+ public void test(TestHarness harness)
+ {
+ testKeyPairRawCodec(harness);
+ testPublicKeyValueOf(harness);
+ testPrivateKeyValueOf(harness);
+ }
+
+ public void testKeyPairRawCodec(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPCodec.testKeyPairRawCodec");
+ setUp();
+
+ SRPPublicKey pubK = (SRPPublicKey) kp.getPublic();
+ SRPPrivateKey secK = (SRPPrivateKey) kp.getPrivate();
+
+ byte[] pk1, pk2;
+ try
+ { // an invalid format ID
+ pk1 = ((SRPPublicKey) pubK).getEncoded(0);
+ harness.fail("Succeeded with unknown format ID");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true, "Recognised unknown format ID");
+ }
+
+ pk1 = ((SRPPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ pk2 = ((SRPPrivateKey) secK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+
+ IKeyPairCodec codec = new SRPKeyPairRawCodec();
+ PublicKey newPubK = codec.decodePublicKey(pk1);
+ PrivateKey newSecK = codec.decodePrivateKey(pk2);
+
+ harness.check(pubK.equals(newPubK),
+ "SRP public key Raw encoder/decoder test");
+ harness.check(secK.equals(newSecK),
+ "SRP private key Raw encoder/decoder test");
+ }
+
+ public void testPublicKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPCodec.testPublicKeyValueOf");
+ setUp();
+
+ SRPPublicKey pubK = (SRPPublicKey) kp.getPublic();
+
+ byte[] pk = ((SRPPublicKey) pubK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PublicKey newPubK = SRPPublicKey.valueOf(pk);
+
+ harness.check(pubK.equals(newPubK),
+ "SRP public key valueOf(<raw-value>) test");
+ }
+
+ public void testPrivateKeyValueOf(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPCodec.testPrivateKeyValueOf");
+ setUp();
+
+ SRPPrivateKey privateK = (SRPPrivateKey) kp.getPrivate();
+
+ byte[] pk = ((SRPPrivateKey) privateK).getEncoded(IKeyPairCodec.RAW_FORMAT);
+ PrivateKey newSecK = SRPPrivateKey.valueOf(pk);
+
+ harness.check(privateK.equals(newSecK),
+ "SRP public key valueOf(<raw-value>) test");
+ }
+
+ private void setUp()
+ {
+ HashMap map = new HashMap();
+ map.put(SRPKeyPairGenerator.MODULUS_LENGTH, new Integer(512));
+ map.put(SRPKeyPairGenerator.USE_DEFAULTS, Boolean.TRUE);
+
+ kpg.setup(map);
+ kp = kpg.generate();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java
new file mode 100644
index 00000000..244f939f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/key/srp6/TestOfSRPKeyGeneration.java
@@ -0,0 +1,77 @@
+/* TestOfSRPKeyGeneration.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.key.srp6;
+
+import gnu.javax.crypto.key.srp6.SRPKeyPairGenerator;
+import gnu.javax.crypto.key.srp6.SRPPrivateKey;
+import gnu.javax.crypto.key.srp6.SRPPublicKey;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the SRP key-pair generation implementation.
+ */
+public class TestOfSRPKeyGeneration implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPKeyGeneration");
+ SRPKeyPairGenerator kpg = new SRPKeyPairGenerator();
+ HashMap map = new HashMap();
+ map.put(SRPKeyPairGenerator.MODULUS_LENGTH, new Integer(530));
+
+ try
+ {
+ kpg.setup(map);
+ harness.fail("L should be >= 512, <= 2048 and of the form 512 + 256n");
+ }
+ catch (IllegalArgumentException x)
+ {
+ harness.check(true,
+ "L should be >= 512, <= 2048 and of the form 512 + 256n");
+ }
+
+ map.put(SRPKeyPairGenerator.MODULUS_LENGTH, new Integer(512));
+ map.put(SRPKeyPairGenerator.USE_DEFAULTS, Boolean.FALSE);
+ kpg.setup(map);
+ KeyPair kp = kpg.generate();
+
+ BigInteger N1 = ((SRPPublicKey) kp.getPublic()).getN();
+ BigInteger N2 = ((SRPPrivateKey) kp.getPrivate()).getN();
+ harness.check(N1.equals(N2), "N1.equals(N2)");
+
+ BigInteger q = N1.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2L));
+
+ BigInteger g1 = ((SRPPublicKey) kp.getPublic()).getG();
+ BigInteger g2 = ((SRPPrivateKey) kp.getPrivate()).getG();
+ harness.check(g1.equals(g2), "g1.equals(g2)");
+
+ harness.check(N1.isProbablePrime(80), "N is probable prime");
+ harness.check(q.isProbablePrime(80), "q is probable prime");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/CVS/Entries b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Entries
new file mode 100644
index 00000000..b57e8c7d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfGnuPrivateKeyring.java/1.1/Sat May 20 01:17:09 2006//
+/TestOfPrivateKeyring.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPublicKeyring.java/1.1/Sun Jan 29 01:21:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/CVS/Repository b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Repository
new file mode 100644
index 00000000..365db180
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/keyring
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/CVS/Root b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/TestOfGnuPrivateKeyring.java b/gnu/testlet/gnu/javax/crypto/keyring/TestOfGnuPrivateKeyring.java
new file mode 100644
index 00000000..9468979b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/TestOfGnuPrivateKeyring.java
@@ -0,0 +1,180 @@
+/* TestOfGnuPrivateKeyring.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.keyring;
+
+import gnu.java.security.Registry;
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.dss.DSSPublicKey;
+import gnu.javax.crypto.keyring.GnuPrivateKeyring;
+import gnu.javax.crypto.keyring.IKeyring;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.math.BigInteger;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Test of GnuPrivateKeyring public methods.
+ */
+public class TestOfGnuPrivateKeyring
+ implements Testlet
+{
+ /** KeyStore password. */
+ private static final char[] STORE_PASSWORD = "secret".toCharArray();
+ /** Key Entry alias. */
+ private static final String ALIAS = "mykey";
+ /** Key Entry password. */
+ private static final char[] KEY_PASSWORD = "changeme".toCharArray();
+ /** Common DSA key material - p. */
+ private static final BigInteger p = new BigInteger(
+ "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d4"
+ + "02251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5"
+ + "a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec"
+ + "3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);
+ /** Common DSA key material - q. */
+ private static final BigInteger q = new BigInteger(
+ "9760508f15230bccb292b982a2eb840bf0581cf5", 16);
+ /** Common DSA key material - g. */
+ private static final BigInteger g = new BigInteger(
+ "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d07826751595"
+ + "78ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b"
+ + "547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea85"
+ + "19089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);
+ /** Public DSA key part. */
+ private static final BigInteger x = new BigInteger(
+ "631305a19984821b95a8c776d38167a4ea2ceb8", 16);
+ /** Private DSA key part. */
+ private static final BigInteger y = new BigInteger(
+ "cc1045a7550205a581ec3a9fed50c6d4aaae9ef2512c066f0d52617e0d462895c00bd"
+ + "f2d329c53a9c0f690e406d49e21beb557d47436df9cdda5ad2f532620a5260704c5"
+ + "91920ff674666e2166066727051f3d515aedf03a4bdb2d69dd13bbd9b5e7941ff37"
+ + "fb35f2d9138b4172e64393b04afdcc630739fbe6993f27f467e17", 16);
+ /** Alias's Self-signed certificate. */
+ private static final String SELF_SIGNED_CERT = "\n"
+ + "-----BEGIN CERTIFICATE-----\n"
+ + "MIIC9zCCAregAwIBAAIBATAJBgcqhkjOOAQDMGIxFzAVBgNVBAMMDlJhaWYgUy4g\n"
+ + "TmFmZmFoMRswGQYDVQQKDBJUaGUgU2FtcGxlIENvbXBhbnkxDzANBgNVBAcMBlN5\n"
+ + "ZG5leTEMMAoGA1UECAwDTlNXMQswCQYDVQQGDAJBVTAeFw0wNjA1MTgwOTM5Mzla\n"
+ + "Fw0wNjA4MTYwOTM5MzlaMGIxFzAVBgNVBAMMDlJhaWYgUy4gTmFmZmFoMRswGQYD\n"
+ + "VQQKDBJUaGUgU2FtcGxlIENvbXBhbnkxDzANBgNVBAcMBlN5ZG5leTEMMAoGA1UE\n"
+ + "CAwDTlNXMQswCQYDVQQGDAJBVTCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OB\n"
+ + "HXUSKVLfSpwu7OTn9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tV\n"
+ + "bNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPF\n"
+ + "HsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvw\n"
+ + "WBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUWU/m\n"
+ + "cQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi\n"
+ + "8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQDM\n"
+ + "EEWnVQIFpYHsOp/tUMbUqq6e8lEsBm8NUmF+DUYolcAL3y0ynFOpwPaQ5AbUniG+\n"
+ + "tVfUdDbfnN2lrS9TJiClJgcExZGSD/Z0Zm4hZgZnJwUfPVFa7fA6S9stad0Tu9m1\n"
+ + "55Qf83+zXy2ROLQXLmQ5OwSv3MYwc5++aZPyf0Z+FzAJBgcqhkjOOAQDAy8AMCwC\n"
+ + "FE5UuDO5crsK+kOwdqzbr0WCzQQrAhR7ZwA+cBYvIfP3kr7lItJhY4nRBQ==\n"
+ + "-----END CERTIFICATE-----\n";
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfGnuPrivateKeyring");
+ try
+ {
+ GnuPrivateKeyring kr1 = new GnuPrivateKeyring();
+ // store a private key
+ PrivateKey pk1 = new DSSPrivateKey(Registry.ASN1_ENCODING_ID, p, q, g, x);
+ kr1.putPrivateKey(ALIAS, pk1, KEY_PASSWORD);
+ // retrieve the same private key
+ PrivateKey pk2 = (PrivateKey) kr1.getPrivateKey(ALIAS, KEY_PASSWORD);
+ // check that private key is the same
+ harness.check(pk2, pk1, "In-memory and original private key MUST be equal");
+ // store a public key
+ PublicKey k1 = new DSSPublicKey(Registry.ASN1_ENCODING_ID, p, q, g, y);
+ kr1.putPublicKey(ALIAS, k1);
+ // retrieve the same public key
+ PublicKey k2 = kr1.getPublicKey(ALIAS);
+ // check that public key is the same
+ harness.check(k2, k1, "In-memory and original public key MUST be equal");
+ // store a certificate
+ CertificateFactory x509Factory = CertificateFactory.getInstance("X.509");
+ byte[] certificateBytes = SELF_SIGNED_CERT.getBytes("ASCII");
+ ByteArrayInputStream bais = new ByteArrayInputStream(certificateBytes);
+ Certificate certificate = x509Factory.generateCertificate(bais);
+ Certificate[] chain1 = new Certificate[] { certificate };
+ kr1.putCertPath(ALIAS, chain1);
+ // retrieve the same certificate path
+ Certificate[] chain2 = kr1.getCertPath(ALIAS);
+ harness.check(Arrays.equals(chain2, chain1),
+ "In-memory and original certificate MUST be equal");
+
+ // persist the keyring
+ File ksFile = File.createTempFile("gkr-", ".gks");
+ ksFile.deleteOnExit();
+ FileOutputStream fos = new FileOutputStream(ksFile);
+ HashMap attributes = new HashMap();
+ attributes.put(IKeyring.KEYRING_DATA_OUT, fos);
+ attributes.put(IKeyring.KEYRING_PASSWORD, STORE_PASSWORD);
+ kr1.store(attributes);
+ fos.flush();
+ fos.close();
+
+ // re-load it from the persisted file
+ GnuPrivateKeyring kr2 = new GnuPrivateKeyring();
+ FileInputStream fis = new FileInputStream(ksFile);
+ attributes.clear();
+ attributes.put(IKeyring.KEYRING_DATA_IN, fis);
+ attributes.put(IKeyring.KEYRING_PASSWORD, STORE_PASSWORD);
+ kr2.load(attributes);
+ fis.close();
+
+ // retrieve the same private key
+ PrivateKey pk3 = (PrivateKey) kr2.getPrivateKey(ALIAS, KEY_PASSWORD);
+ // check that it is still the same
+ harness.check(pk3, pk1, "Persisted and original private key MUST be equal");
+ // retrieve the same public key
+ PublicKey k3 = kr2.getPublicKey(ALIAS);
+ // check that it is still the same
+ harness.check(k3, k1, "Persisted and original public key MUST be equal");
+ // retrieve the certificate chain
+ Certificate[] chain3 = kr2.getCertPath(ALIAS);
+ // check that it's still the same certificate
+ harness.check(Arrays.equals(chain3, chain1),
+ "Persisted and original certificate MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfGnuPrivateKeyring");
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/TestOfPrivateKeyring.java b/gnu/testlet/gnu/javax/crypto/keyring/TestOfPrivateKeyring.java
new file mode 100644
index 00000000..0d280f1b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/TestOfPrivateKeyring.java
@@ -0,0 +1,834 @@
+/* TestOfPrivateKeyring.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+
+package gnu.testlet.gnu.javax.crypto.keyring;
+
+import gnu.java.security.provider.Gnu;
+import gnu.javax.crypto.keyring.GnuPrivateKeyring;
+import gnu.javax.crypto.keyring.IKeyring;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.security.Security;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Conformance tests for the GNU (private) Keyring implementation.
+ */
+public class TestOfPrivateKeyring implements Testlet
+{
+ private static final byte[] keyring = new byte[] { (byte) 0x47, (byte) 0x4b,
+ (byte) 0x52, (byte) 0x01,
+ (byte) 0x03, (byte) 0x03,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x4e,
+ (byte) 0x00, (byte) 0x04,
+ (byte) 0x73, (byte) 0x61,
+ (byte) 0x6c, (byte) 0x74,
+ (byte) 0x00, (byte) 0x10,
+ (byte) 0x37, (byte) 0x37,
+ (byte) 0x33, (byte) 0x31,
+ (byte) 0x43, (byte) 0x39,
+ (byte) 0x38, (byte) 0x39,
+ (byte) 0x42, (byte) 0x37,
+ (byte) 0x30, (byte) 0x32,
+ (byte) 0x34, (byte) 0x42,
+ (byte) 0x31, (byte) 0x39,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x61,
+ (byte) 0x73, (byte) 0x2d,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x73, (byte) 0x74,
+ (byte) 0x00, (byte) 0x0b,
+ (byte) 0x6d, (byte) 0x79,
+ (byte) 0x6b, (byte) 0x65,
+ (byte) 0x79, (byte) 0x3b,
+ (byte) 0x6d, (byte) 0x79,
+ (byte) 0x6b, (byte) 0x65,
+ (byte) 0x79, (byte) 0x00,
+ (byte) 0x06, (byte) 0x6d,
+ (byte) 0x61, (byte) 0x63,
+ (byte) 0x6c, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x00,
+ (byte) 0x02, (byte) 0x32,
+ (byte) 0x30, (byte) 0x00,
+ (byte) 0x03, (byte) 0x6d,
+ (byte) 0x61, (byte) 0x63,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x48, (byte) 0x4d,
+ (byte) 0x41, (byte) 0x43,
+ (byte) 0x2d, (byte) 0x53,
+ (byte) 0x48, (byte) 0x41,
+ (byte) 0x2d, (byte) 0x31,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x05, (byte) 0x78,
+ (byte) 0x04, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x27, (byte) 0x00,
+ (byte) 0x0a, (byte) 0x61,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x61, (byte) 0x73,
+ (byte) 0x2d, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x73,
+ (byte) 0x74, (byte) 0x00,
+ (byte) 0x05, (byte) 0x6d,
+ (byte) 0x79, (byte) 0x6b,
+ (byte) 0x65, (byte) 0x79,
+ (byte) 0x00, (byte) 0x09,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x67, (byte) 0x6f,
+ (byte) 0x72, (byte) 0x69,
+ (byte) 0x74, (byte) 0x68,
+ (byte) 0x6d, (byte) 0x00,
+ (byte) 0x07, (byte) 0x44,
+ (byte) 0x45, (byte) 0x46,
+ (byte) 0x4c, (byte) 0x41,
+ (byte) 0x54, (byte) 0x45,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x02, (byte) 0xd7,
+ (byte) 0x78, (byte) 0x9c,
+ (byte) 0xe3, (byte) 0x60,
+ (byte) 0x60, (byte) 0x60,
+ (byte) 0xd0, (byte) 0x61,
+ (byte) 0xe0, (byte) 0x4d,
+ (byte) 0x2e, (byte) 0x4a,
+ (byte) 0x4d, (byte) 0x2c,
+ (byte) 0xc9, (byte) 0xcc,
+ (byte) 0xcf, (byte) 0xd3,
+ (byte) 0x4d, (byte) 0x49,
+ (byte) 0x2c, (byte) 0x49,
+ (byte) 0x65, (byte) 0xe0,
+ (byte) 0x35, (byte) 0x34,
+ (byte) 0x30, (byte) 0x37,
+ (byte) 0x30, (byte) 0x37,
+ (byte) 0xb1, (byte) 0x30,
+ (byte) 0x30, (byte) 0x33,
+ (byte) 0x32, (byte) 0xb7,
+ (byte) 0x34, (byte) 0x60,
+ (byte) 0x60, (byte) 0x4d,
+ (byte) 0xcc, (byte) 0xc9,
+ (byte) 0x4c, (byte) 0x2c,
+ (byte) 0x66, (byte) 0x60,
+ (byte) 0xcd, (byte) 0xad,
+ (byte) 0xcc, (byte) 0x4e,
+ (byte) 0xad, (byte) 0x64,
+ (byte) 0x60, (byte) 0x60,
+ (byte) 0xd6, (byte) 0x33,
+ (byte) 0x68, (byte) 0x62,
+ (byte) 0xd6, (byte) 0x32,
+ (byte) 0x68, (byte) 0x62,
+ (byte) 0x7a, (byte) 0xbe,
+ (byte) 0x80, (byte) 0x99,
+ (byte) 0x89, (byte) 0x91,
+ (byte) 0x89, (byte) 0x89,
+ (byte) 0xc5, (byte) 0xfe,
+ (byte) 0x52, (byte) 0xe0,
+ (byte) 0x1c, (byte) 0x03,
+ (byte) 0x6e, (byte) 0x36,
+ (byte) 0x76, (byte) 0xad,
+ (byte) 0x36, (byte) 0x8f,
+ (byte) 0x73, (byte) 0x16,
+ (byte) 0x2c, (byte) 0xcc,
+ (byte) 0xac, (byte) 0x0c,
+ (byte) 0x06, (byte) 0x15,
+ (byte) 0x86, (byte) 0xdc,
+ (byte) 0x06, (byte) 0x9c,
+ (byte) 0x6c, (byte) 0xcc,
+ (byte) 0xa1, (byte) 0x2c,
+ (byte) 0x6c, (byte) 0xc2,
+ (byte) 0x4c, (byte) 0xa1,
+ (byte) 0xc1, (byte) 0x30,
+ (byte) 0x0e, (byte) 0x87,
+ (byte) 0x30, (byte) 0x93,
+ (byte) 0xaf, (byte) 0xa3,
+ (byte) 0x21, (byte) 0xbf,
+ (byte) 0x01, (byte) 0x2f,
+ (byte) 0x88, (byte) 0xc3,
+ (byte) 0x2e, (byte) 0xcc,
+ (byte) 0xe6, (byte) 0x94,
+ (byte) 0x5f, (byte) 0x5c,
+ (byte) 0x92, (byte) 0x9f,
+ (byte) 0x67, (byte) 0xa8,
+ (byte) 0x68, (byte) 0x20,
+ (byte) 0x0f, (byte) 0x12,
+ (byte) 0xe0, (byte) 0x12,
+ (byte) 0x96, (byte) 0x70,
+ (byte) 0x2b, (byte) 0x4a,
+ (byte) 0x4d, (byte) 0x55,
+ (byte) 0x08, (byte) 0xce,
+ (byte) 0x4f, (byte) 0x2b,
+ (byte) 0x29, (byte) 0x4f,
+ (byte) 0x2c, (byte) 0x4a,
+ (byte) 0x55, (byte) 0x70,
+ (byte) 0xcb, (byte) 0x2f,
+ (byte) 0xcd, (byte) 0x4b,
+ (byte) 0x01, (byte) 0xbb,
+ (byte) 0xca, (byte) 0x50,
+ (byte) 0xd8, (byte) 0x40,
+ (byte) 0x10, (byte) 0xa4,
+ (byte) 0x84, (byte) 0x5b,
+ (byte) 0x98, (byte) 0xcb,
+ (byte) 0xdd, (byte) 0x2f,
+ (byte) 0x54, (byte) 0xc1,
+ (byte) 0xb9, (byte) 0xa8,
+ (byte) 0xb2, (byte) 0xa0,
+ (byte) 0x24, (byte) 0x1f,
+ (byte) 0x26, (byte) 0xc8,
+ (byte) 0x0c, (byte) 0x14,
+ (byte) 0xd4, (byte) 0x53,
+ (byte) 0xf0, (byte) 0xd3,
+ (byte) 0x53, (byte) 0x08,
+ (byte) 0x2d, (byte) 0x4e,
+ (byte) 0x2d, (byte) 0x32,
+ (byte) 0x90, (byte) 0x13,
+ (byte) 0xe7, (byte) 0x35,
+ (byte) 0x30, (byte) 0x36,
+ (byte) 0x34, (byte) 0x02,
+ (byte) 0xba, (byte) 0xdc,
+ (byte) 0xc8, (byte) 0xc0,
+ (byte) 0xd0, (byte) 0xc0,
+ (byte) 0x20, (byte) 0x0a,
+ (byte) 0xc8, (byte) 0x35,
+ (byte) 0x31, (byte) 0x30,
+ (byte) 0x36, (byte) 0x30,
+ (byte) 0x85, (byte) 0x72,
+ (byte) 0x07, (byte) 0xd0,
+ (byte) 0x65, (byte) 0x4d,
+ (byte) 0x8c, (byte) 0xdb,
+ (byte) 0x81, (byte) 0x58,
+ (byte) 0x07, (byte) 0x16,
+ (byte) 0x4c, (byte) 0x8c,
+ (byte) 0x40, (byte) 0x8e,
+ (byte) 0x3c, (byte) 0x53,
+ (byte) 0x63, (byte) 0x23,
+ (byte) 0xc3, (byte) 0xdf,
+ (byte) 0xfa, (byte) 0xe0,
+ (byte) 0x46, (byte) 0xd9,
+ (byte) 0x52, (byte) 0x21,
+ (byte) 0xcd, (byte) 0xa0,
+ (byte) 0xfb, (byte) 0x5e,
+ (byte) 0x73, (byte) 0xf4,
+ (byte) 0xde, (byte) 0x3c,
+ (byte) 0x79, (byte) 0xfe,
+ (byte) 0x4d, (byte) 0x70,
+ (byte) 0x7b, (byte) 0x90,
+ (byte) 0xcd, (byte) 0x7b,
+ (byte) 0x17, (byte) 0x86,
+ (byte) 0xc3, (byte) 0x72,
+ (byte) 0xf6, (byte) 0x0d,
+ (byte) 0xdb, (byte) 0x02,
+ (byte) 0xd5, (byte) 0x32,
+ (byte) 0x5d, (byte) 0x63,
+ (byte) 0x1d, (byte) 0x94,
+ (byte) 0x02, (byte) 0x7f,
+ (byte) 0x47, (byte) 0xda,
+ (byte) 0xf6, (byte) 0x46,
+ (byte) 0xfc, (byte) 0xda,
+ (byte) 0x7f, (byte) 0xf4,
+ (byte) 0xeb, (byte) 0x2e,
+ (byte) 0x83, (byte) 0x6f,
+ (byte) 0xa7, (byte) 0x67,
+ (byte) 0x87, (byte) 0xe6,
+ (byte) 0x5c, (byte) 0x6f,
+ (byte) 0xb4, (byte) 0x6e,
+ (byte) 0x90, (byte) 0x35,
+ (byte) 0xc9, (byte) 0xff,
+ (byte) 0x94, (byte) 0x96,
+ (byte) 0xb0, (byte) 0x3d,
+ (byte) 0x7b, (byte) 0x66,
+ (byte) 0xc0, (byte) 0xd2,
+ (byte) 0x25, (byte) 0xf3,
+ (byte) 0xe7, (byte) 0xbf,
+ (byte) 0x60, (byte) 0xa9,
+ (byte) 0x16, (byte) 0x50,
+ (byte) 0x3a, (byte) 0xe4,
+ (byte) 0xbf, (byte) 0x7b,
+ (byte) 0xe5, (byte) 0xf5,
+ (byte) 0x7f, (byte) 0xdb,
+ (byte) 0x8f, (byte) 0x49,
+ (byte) 0xff, (byte) 0xb0,
+ (byte) 0x0e, (byte) 0x7f,
+ (byte) 0x7e, (byte) 0x6c,
+ (byte) 0xc5, (byte) 0x32,
+ (byte) 0x51, (byte) 0x7e,
+ (byte) 0x96, (byte) 0xdf,
+ (byte) 0xcd, (byte) 0xdf,
+ (byte) 0x2e, (byte) 0x1f,
+ (byte) 0x95, (byte) 0x3b,
+ (byte) 0xcc, (byte) 0x64,
+ (byte) 0x1a, (byte) 0x22,
+ (byte) 0x1c, (byte) 0x25,
+ (byte) 0x36, (byte) 0xd1,
+ (byte) 0xe8, (byte) 0x5b,
+ (byte) 0xe9, (byte) 0xe7,
+ (byte) 0x75, (byte) 0xda,
+ (byte) 0x89, (byte) 0xd7,
+ (byte) 0xb5, (byte) 0xde,
+ (byte) 0x7f, (byte) 0x52,
+ (byte) 0x62, (byte) 0x96,
+ (byte) 0x9c, (byte) 0x7b,
+ (byte) 0xd1, (byte) 0x83,
+ (byte) 0xf1, (byte) 0x38,
+ (byte) 0x93, (byte) 0x28,
+ (byte) 0xc3, (byte) 0xf4,
+ (byte) 0x84, (byte) 0x80,
+ (byte) 0x7e, (byte) 0x51,
+ (byte) 0x65, (byte) 0xee,
+ (byte) 0x33, (byte) 0x9b,
+ (byte) 0x26, (byte) 0xed,
+ (byte) 0x6c, (byte) 0x5a,
+ (byte) 0xf4, (byte) 0xba,
+ (byte) 0x85, (byte) 0xfb,
+ (byte) 0x43, (byte) 0x84,
+ (byte) 0xcc, (byte) 0x57,
+ (byte) 0x90, (byte) 0xd3,
+ (byte) 0xbe, (byte) 0x3f,
+ (byte) 0x5c, (byte) 0xd0,
+ (byte) 0x7a, (byte) 0x6d,
+ (byte) 0xb6, (byte) 0xed,
+ (byte) 0xbd, (byte) 0xd3,
+ (byte) 0x7b, (byte) 0x56,
+ (byte) 0xc7, (byte) 0x98,
+ (byte) 0xed, (byte) 0x08,
+ (byte) 0xdf, (byte) 0x59,
+ (byte) 0x39, (byte) 0x65,
+ (byte) 0xfd, (byte) 0xee,
+ (byte) 0x5f, (byte) 0x56,
+ (byte) 0xaf, (byte) 0x9a,
+ (byte) 0x7e, (byte) 0x86,
+ (byte) 0xfb, (byte) 0x70,
+ (byte) 0xdb, (byte) 0xb2,
+ (byte) 0x37, (byte) 0xa5,
+ (byte) 0x07, (byte) 0x46,
+ (byte) 0x86, (byte) 0xf7,
+ (byte) 0xed, (byte) 0xba,
+ (byte) 0x12, (byte) 0xe9,
+ (byte) 0xff, (byte) 0xac,
+ (byte) 0x90, (byte) 0x5d,
+ (byte) 0xa0, (byte) 0xb1,
+ (byte) 0x61, (byte) 0x8b,
+ (byte) 0xa7, (byte) 0x58,
+ (byte) 0xa1, (byte) 0xf2,
+ (byte) 0x0b, (byte) 0x1f,
+ (byte) 0x0d, (byte) 0x31,
+ (byte) 0xe1, (byte) 0xed,
+ (byte) 0xe7, (byte) 0x39,
+ (byte) 0x8d, (byte) 0x7a,
+ (byte) 0x4e, (byte) 0x2c,
+ (byte) 0x7b, (byte) 0x68,
+ (byte) 0x23, (byte) 0x56,
+ (byte) 0xd5, (byte) 0x1d,
+ (byte) 0x52, (byte) 0xd3,
+ (byte) 0xab, (byte) 0xf1,
+ (byte) 0x60, (byte) 0xf1,
+ (byte) 0x3a, (byte) 0x39,
+ (byte) 0xed, (byte) 0xcd,
+ (byte) 0xcb, (byte) 0x4a,
+ (byte) 0x27, (byte) 0xe6,
+ (byte) 0x2d, (byte) 0xae,
+ (byte) 0xe7, (byte) 0xfe,
+ (byte) 0xa5, (byte) 0x68,
+ (byte) 0x9a, (byte) 0xf4,
+ (byte) 0xf1, (byte) 0x77,
+ (byte) 0x52, (byte) 0x15,
+ (byte) 0xa3, (byte) 0x8a,
+ (byte) 0xf5, (byte) 0x99,
+ (byte) 0x25, (byte) 0x1f,
+ (byte) 0xf7, (byte) 0xad,
+ (byte) 0x08, (byte) 0x9c,
+ (byte) 0xd0, (byte) 0xb9,
+ (byte) 0xa2, (byte) 0xf9,
+ (byte) 0xfe, (byte) 0xc3,
+ (byte) 0xa8, (byte) 0xa7,
+ (byte) 0xf3, (byte) 0xd9,
+ (byte) 0x26, (byte) 0x75,
+ (byte) 0xa7, (byte) 0xc5,
+ (byte) 0x35, (byte) 0x54,
+ (byte) 0x87, (byte) 0xaa,
+ (byte) 0xa6, (byte) 0x30,
+ (byte) 0xfa, (byte) 0x58,
+ (byte) 0xff, (byte) 0x3b,
+ (byte) 0xef, (byte) 0xa9,
+ (byte) 0xc5, (byte) 0xdc,
+ (byte) 0xd8, (byte) 0xc2,
+ (byte) 0xc0, (byte) 0xd4,
+ (byte) 0xd8, (byte) 0x10,
+ (byte) 0x6d, (byte) 0x12,
+ (byte) 0xf4, (byte) 0x2b,
+ (byte) 0x45, (byte) 0x44,
+ (byte) 0x98, (byte) 0x71,
+ (byte) 0x41, (byte) 0x6e,
+ (byte) 0x74, (byte) 0xf2,
+ (byte) 0xe1, (byte) 0x7f,
+ (byte) 0xbb, (byte) 0xfd,
+ (byte) 0x16, (byte) 0x2c,
+ (byte) 0xb7, (byte) 0x2e,
+ (byte) 0x6c, (byte) 0x7a,
+ (byte) 0x52, (byte) 0x75,
+ (byte) 0xb0, (byte) 0x7f,
+ (byte) 0xc1, (byte) 0x31,
+ (byte) 0x2b, (byte) 0xa9,
+ (byte) 0x4b, (byte) 0x69,
+ (byte) 0xb1, (byte) 0x07,
+ (byte) 0x4e, (byte) 0x27,
+ (byte) 0xdf, (byte) 0xe8,
+ (byte) 0x78, (byte) 0xe1,
+ (byte) 0x31, (byte) 0xe5,
+ (byte) 0xce, (byte) 0xaf,
+ (byte) 0xc7, (byte) 0xe5,
+ (byte) 0xb6, (byte) 0xfe,
+ (byte) 0x1b, (byte) 0x6b,
+ (byte) 0x56, (byte) 0xd6,
+ (byte) 0x5b, (byte) 0xac,
+ (byte) 0x8d, (byte) 0x33,
+ (byte) 0xfc, (byte) 0x2a,
+ (byte) 0xb6, (byte) 0xfc,
+ (byte) 0xc9, (byte) 0x6b,
+ (byte) 0x31, (byte) 0xd9,
+ (byte) 0x10, (byte) 0xaf,
+ (byte) 0xfe, (byte) 0xb9,
+ (byte) 0x77, (byte) 0x14,
+ (byte) 0xcd, (byte) 0xc5,
+ (byte) 0x92, (byte) 0x6c,
+ (byte) 0xef, (byte) 0xf6,
+ (byte) 0x14, (byte) 0x19,
+ (byte) 0xd8, (byte) 0x4c,
+ (byte) 0x29, (byte) 0x08,
+ (byte) 0x69, (byte) 0x5b,
+ (byte) 0xaf, (byte) 0x39,
+ (byte) 0xff, (byte) 0x58,
+ (byte) 0xad, (byte) 0xd7,
+ (byte) 0x9a, (byte) 0x05,
+ (byte) 0xe7, (byte) 0x3e,
+ (byte) 0x6e, (byte) 0x91,
+ (byte) 0xd9, (byte) 0x7b,
+ (byte) 0x7a, (byte) 0xb1,
+ (byte) 0xc4, (byte) 0xbb,
+ (byte) 0xc0, (byte) 0x28,
+ (byte) 0x35, (byte) 0x3d,
+ (byte) 0x0b, (byte) 0x9e,
+ (byte) 0x17, (byte) 0xf7,
+ (byte) 0x9f, (byte) 0x7d,
+ (byte) 0x58, (byte) 0xfd,
+ (byte) 0xc9, (byte) 0xfc,
+ (byte) 0xff, (byte) 0x31,
+ (byte) 0xbf, (byte) 0x55,
+ (byte) 0x8e, (byte) 0xda,
+ (byte) 0xad, (byte) 0x1f,
+ (byte) 0xa6, (byte) 0x0a,
+ (byte) 0x14, (byte) 0x9e,
+ (byte) 0xef, (byte) 0xee,
+ (byte) 0x55, (byte) 0xde,
+ (byte) 0x56, (byte) 0x80,
+ (byte) 0x9a, (byte) 0xb6,
+ (byte) 0x99, (byte) 0x0d,
+ (byte) 0x18, (byte) 0x0c,
+ (byte) 0x74, (byte) 0x99,
+ (byte) 0x44, (byte) 0xaa,
+ (byte) 0x1a, (byte) 0x0e,
+ (byte) 0x1d, (byte) 0x78,
+ (byte) 0xe1, (byte) 0x7e,
+ (byte) 0xcc, (byte) 0xfd,
+ (byte) 0xdf, (byte) 0xef,
+ (byte) 0x7a, (byte) 0x6e,
+ (byte) 0xfb, (byte) 0x23,
+ (byte) 0x1f, (byte) 0xbe,
+ (byte) 0xff, (byte) 0x62,
+ (byte) 0x8b, (byte) 0x5b,
+ (byte) 0x08, (byte) 0x0c,
+ (byte) 0xc9, (byte) 0x09,
+ (byte) 0x67, (byte) 0x4c,
+ (byte) 0x7e, (byte) 0xff,
+ (byte) 0x39, (byte) 0xe0,
+ (byte) 0x1a, (byte) 0xfc,
+ (byte) 0x46, (byte) 0x4b,
+ (byte) 0x67, (byte) 0xe6,
+ (byte) 0x24, (byte) 0xd9,
+ (byte) 0x58, (byte) 0x09,
+ (byte) 0x36, (byte) 0x63,
+ (byte) 0x87, (byte) 0x5f,
+ (byte) 0x00, (byte) 0x6c,
+ (byte) 0x82, (byte) 0x39,
+ (byte) 0x7e, (byte) 0x03,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x48,
+ (byte) 0x00, (byte) 0x04,
+ (byte) 0x73, (byte) 0x61,
+ (byte) 0x6c, (byte) 0x74,
+ (byte) 0x00, (byte) 0x10,
+ (byte) 0x33, (byte) 0x43,
+ (byte) 0x35, (byte) 0x37,
+ (byte) 0x42, (byte) 0x46,
+ (byte) 0x43, (byte) 0x42,
+ (byte) 0x38, (byte) 0x39,
+ (byte) 0x44, (byte) 0x34,
+ (byte) 0x43, (byte) 0x36,
+ (byte) 0x38, (byte) 0x33,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x61,
+ (byte) 0x73, (byte) 0x2d,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x73, (byte) 0x74,
+ (byte) 0x00, (byte) 0x05,
+ (byte) 0x6d, (byte) 0x79,
+ (byte) 0x6b, (byte) 0x65,
+ (byte) 0x79, (byte) 0x00,
+ (byte) 0x06, (byte) 0x6d,
+ (byte) 0x61, (byte) 0x63,
+ (byte) 0x6c, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x00,
+ (byte) 0x02, (byte) 0x32,
+ (byte) 0x30, (byte) 0x00,
+ (byte) 0x03, (byte) 0x6d,
+ (byte) 0x61, (byte) 0x63,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x48, (byte) 0x4d,
+ (byte) 0x41, (byte) 0x43,
+ (byte) 0x2d, (byte) 0x53,
+ (byte) 0x48, (byte) 0x41,
+ (byte) 0x2d, (byte) 0x31,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x02, (byte) 0x0c,
+ (byte) 0x01, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x4f, (byte) 0x00,
+ (byte) 0x04, (byte) 0x73,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x74, (byte) 0x00,
+ (byte) 0x10, (byte) 0x31,
+ (byte) 0x45, (byte) 0x38,
+ (byte) 0x42, (byte) 0x38,
+ (byte) 0x37, (byte) 0x30,
+ (byte) 0x34, (byte) 0x30,
+ (byte) 0x32, (byte) 0x34,
+ (byte) 0x31, (byte) 0x31,
+ (byte) 0x31, (byte) 0x42,
+ (byte) 0x44, (byte) 0x00,
+ (byte) 0x0a, (byte) 0x61,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x61, (byte) 0x73,
+ (byte) 0x2d, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x73,
+ (byte) 0x74, (byte) 0x00,
+ (byte) 0x05, (byte) 0x6d,
+ (byte) 0x79, (byte) 0x6b,
+ (byte) 0x65, (byte) 0x79,
+ (byte) 0x00, (byte) 0x04,
+ (byte) 0x6d, (byte) 0x6f,
+ (byte) 0x64, (byte) 0x65,
+ (byte) 0x00, (byte) 0x03,
+ (byte) 0x4f, (byte) 0x46,
+ (byte) 0x42, (byte) 0x00,
+ (byte) 0x06, (byte) 0x6b,
+ (byte) 0x65, (byte) 0x79,
+ (byte) 0x6c, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x00,
+ (byte) 0x02, (byte) 0x31,
+ (byte) 0x36, (byte) 0x00,
+ (byte) 0x06, (byte) 0x63,
+ (byte) 0x69, (byte) 0x70,
+ (byte) 0x68, (byte) 0x65,
+ (byte) 0x72, (byte) 0x00,
+ (byte) 0x03, (byte) 0x41,
+ (byte) 0x45, (byte) 0x53,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0xa0,
+ (byte) 0x36, (byte) 0x4b,
+ (byte) 0xcf, (byte) 0xfa,
+ (byte) 0x7c, (byte) 0x04,
+ (byte) 0x3f, (byte) 0xd7,
+ (byte) 0xce, (byte) 0xce,
+ (byte) 0xd3, (byte) 0xc3,
+ (byte) 0x63, (byte) 0x8f,
+ (byte) 0x48, (byte) 0x95,
+ (byte) 0xe6, (byte) 0xfe,
+ (byte) 0x97, (byte) 0xa4,
+ (byte) 0x1c, (byte) 0x5e,
+ (byte) 0x70, (byte) 0x4d,
+ (byte) 0x4d, (byte) 0x61,
+ (byte) 0x46, (byte) 0x29,
+ (byte) 0x15, (byte) 0x92,
+ (byte) 0x05, (byte) 0x2b,
+ (byte) 0x87, (byte) 0x09,
+ (byte) 0xa9, (byte) 0xa9,
+ (byte) 0x3a, (byte) 0xc8,
+ (byte) 0x74, (byte) 0xa3,
+ (byte) 0xa2, (byte) 0xf4,
+ (byte) 0xc6, (byte) 0x25,
+ (byte) 0x08, (byte) 0x02,
+ (byte) 0x9f, (byte) 0x3b,
+ (byte) 0x77, (byte) 0x6d,
+ (byte) 0x1a, (byte) 0x08,
+ (byte) 0x61, (byte) 0x70,
+ (byte) 0xb0, (byte) 0x86,
+ (byte) 0xa0, (byte) 0x13,
+ (byte) 0xaf, (byte) 0x50,
+ (byte) 0x8a, (byte) 0x99,
+ (byte) 0xec, (byte) 0xcc,
+ (byte) 0x77, (byte) 0xeb,
+ (byte) 0xf5, (byte) 0xd5,
+ (byte) 0x3a, (byte) 0xa8,
+ (byte) 0xdf, (byte) 0x7d,
+ (byte) 0x2b, (byte) 0xc8,
+ (byte) 0x88, (byte) 0x6c,
+ (byte) 0xcc, (byte) 0xef,
+ (byte) 0x1f, (byte) 0xb0,
+ (byte) 0x18, (byte) 0xa8,
+ (byte) 0x91, (byte) 0x2d,
+ (byte) 0x6c, (byte) 0xf8,
+ (byte) 0xf5, (byte) 0xdd,
+ (byte) 0x77, (byte) 0xc8,
+ (byte) 0x7e, (byte) 0x10,
+ (byte) 0xba, (byte) 0xfa,
+ (byte) 0xfc, (byte) 0x17,
+ (byte) 0x69, (byte) 0x43,
+ (byte) 0xa7, (byte) 0xd1,
+ (byte) 0xe0, (byte) 0xb1,
+ (byte) 0x86, (byte) 0x8e,
+ (byte) 0x4f, (byte) 0x6c,
+ (byte) 0x68, (byte) 0xcb,
+ (byte) 0x0d, (byte) 0x8d,
+ (byte) 0xcb, (byte) 0x72,
+ (byte) 0x59, (byte) 0xa6,
+ (byte) 0x60, (byte) 0xf8,
+ (byte) 0xa8, (byte) 0xd4,
+ (byte) 0x05, (byte) 0x6b,
+ (byte) 0xd2, (byte) 0x66,
+ (byte) 0x1b, (byte) 0x9b,
+ (byte) 0x30, (byte) 0x3d,
+ (byte) 0x53, (byte) 0xf8,
+ (byte) 0xb3, (byte) 0xee,
+ (byte) 0x0c, (byte) 0xd1,
+ (byte) 0xd5, (byte) 0xa8,
+ (byte) 0xed, (byte) 0x3c,
+ (byte) 0x23, (byte) 0x5e,
+ (byte) 0xbc, (byte) 0xe6,
+ (byte) 0xb8, (byte) 0x6c,
+ (byte) 0x2d, (byte) 0x0a,
+ (byte) 0x54, (byte) 0x77,
+ (byte) 0xff, (byte) 0x33,
+ (byte) 0x05, (byte) 0xb1,
+ (byte) 0xc6, (byte) 0xa1,
+ (byte) 0x8a, (byte) 0xea,
+ (byte) 0xa6, (byte) 0x5e,
+ (byte) 0xb8, (byte) 0x71,
+ (byte) 0x35, (byte) 0x83,
+ (byte) 0x86, (byte) 0x6f,
+ (byte) 0x2b, (byte) 0xb4,
+ (byte) 0x28, (byte) 0xb5,
+ (byte) 0xe2, (byte) 0xdb,
+ (byte) 0xbc, (byte) 0x2e,
+ (byte) 0x49, (byte) 0x46,
+ (byte) 0x2f, (byte) 0x39,
+ (byte) 0x6d, (byte) 0x6e,
+ (byte) 0xd8, (byte) 0x7c,
+ (byte) 0x4a, (byte) 0xc9,
+ (byte) 0x07, (byte) 0xc8,
+ (byte) 0xbf, (byte) 0x4a,
+ (byte) 0x1e, (byte) 0xab,
+ (byte) 0xb8, (byte) 0xb3,
+ (byte) 0x83, (byte) 0x0e,
+ (byte) 0xa9, (byte) 0xbd,
+ (byte) 0x2e, (byte) 0x68,
+ (byte) 0xff, (byte) 0xb2,
+ (byte) 0x93, (byte) 0xef,
+ (byte) 0xad, (byte) 0xff,
+ (byte) 0x3c, (byte) 0x39,
+ (byte) 0xc1, (byte) 0xe7,
+ (byte) 0x54, (byte) 0xaf,
+ (byte) 0xeb, (byte) 0x40,
+ (byte) 0x1d, (byte) 0x54,
+ (byte) 0xc1, (byte) 0x26,
+ (byte) 0x64, (byte) 0xe5,
+ (byte) 0x67, (byte) 0xc6,
+ (byte) 0x9e, (byte) 0x4a,
+ (byte) 0x62, (byte) 0x33,
+ (byte) 0x37, (byte) 0x73,
+ (byte) 0xaf, (byte) 0x44,
+ (byte) 0xe4, (byte) 0x57,
+ (byte) 0xcc, (byte) 0x99,
+ (byte) 0x05, (byte) 0xe2,
+ (byte) 0x15, (byte) 0x83,
+ (byte) 0x7f, (byte) 0x16,
+ (byte) 0x2e, (byte) 0x47,
+ (byte) 0x4d, (byte) 0xda,
+ (byte) 0x00, (byte) 0x78,
+ (byte) 0x93, (byte) 0xef,
+ (byte) 0xe0, (byte) 0x7a,
+ (byte) 0x6e, (byte) 0xb0,
+ (byte) 0xd0, (byte) 0xbf,
+ (byte) 0x46, (byte) 0xc3,
+ (byte) 0xd8, (byte) 0x73,
+ (byte) 0x01, (byte) 0xf4,
+ (byte) 0xac, (byte) 0xd2,
+ (byte) 0x4d, (byte) 0x08,
+ (byte) 0x08, (byte) 0x39,
+ (byte) 0xf9, (byte) 0x9a,
+ (byte) 0x64, (byte) 0xe7,
+ (byte) 0x40, (byte) 0xe3,
+ (byte) 0x59, (byte) 0xc6,
+ (byte) 0x79, (byte) 0xf0,
+ (byte) 0x58, (byte) 0x3e,
+ (byte) 0xfa, (byte) 0x75,
+ (byte) 0x2b, (byte) 0x1f,
+ (byte) 0x54, (byte) 0x03,
+ (byte) 0x37, (byte) 0x32,
+ (byte) 0x33, (byte) 0x5e,
+ (byte) 0xcf, (byte) 0xaa,
+ (byte) 0xff, (byte) 0xac,
+ (byte) 0x7b, (byte) 0xb1,
+ (byte) 0x5e, (byte) 0x41,
+ (byte) 0x87, (byte) 0x68,
+ (byte) 0xfc, (byte) 0x3f,
+ (byte) 0x97, (byte) 0x20,
+ (byte) 0x2b, (byte) 0x5a,
+ (byte) 0xd2, (byte) 0xa0,
+ (byte) 0x97, (byte) 0xa4,
+ (byte) 0x70, (byte) 0xe0,
+ (byte) 0x5d, (byte) 0x28,
+ (byte) 0x75, (byte) 0x1b,
+ (byte) 0x5c, (byte) 0xa2,
+ (byte) 0x13, (byte) 0x26,
+ (byte) 0x51, (byte) 0x5a,
+ (byte) 0x30, (byte) 0xca,
+ (byte) 0x03, (byte) 0x56,
+ (byte) 0x8c, (byte) 0xb4,
+ (byte) 0x05, (byte) 0xfd,
+ (byte) 0x74, (byte) 0x0c,
+ (byte) 0x15, (byte) 0x8c,
+ (byte) 0xff, (byte) 0x42,
+ (byte) 0xae, (byte) 0x53,
+ (byte) 0x9d, (byte) 0x81,
+ (byte) 0xb5, (byte) 0xf7,
+ (byte) 0xbb, (byte) 0x60,
+ (byte) 0xf7, (byte) 0x1f,
+ (byte) 0x2b, (byte) 0xdf,
+ (byte) 0x9c, (byte) 0xfc,
+ (byte) 0x50, (byte) 0x2f,
+ (byte) 0x4a, (byte) 0x9c,
+ (byte) 0xa9, (byte) 0x2c,
+ (byte) 0x14, (byte) 0xf6,
+ (byte) 0xc4, (byte) 0x9e,
+ (byte) 0x32, (byte) 0xf9,
+ (byte) 0xc9, (byte) 0x82,
+ (byte) 0xcc, (byte) 0x1c,
+ (byte) 0x62, (byte) 0xb1,
+ (byte) 0x05, (byte) 0x51,
+ (byte) 0xf5, (byte) 0x37,
+ (byte) 0x78, (byte) 0x79,
+ (byte) 0x70, (byte) 0x9d,
+ (byte) 0x7c, (byte) 0xa3,
+ (byte) 0xaa, (byte) 0x01,
+ (byte) 0x29, (byte) 0x28,
+ (byte) 0xbf, (byte) 0x4e,
+ (byte) 0x31, (byte) 0x11,
+ (byte) 0xd0, (byte) 0xfe,
+ (byte) 0x2c, (byte) 0x1a,
+ (byte) 0xd7, (byte) 0xda,
+ (byte) 0x5d, (byte) 0xc0,
+ (byte) 0x3b, (byte) 0xfc,
+ (byte) 0x26, (byte) 0xbb,
+ (byte) 0xf3, (byte) 0x52,
+ (byte) 0xb7, (byte) 0xd4,
+ (byte) 0xee, (byte) 0x0d,
+ (byte) 0x49, (byte) 0xab,
+ (byte) 0x51, (byte) 0x2c,
+ (byte) 0x9a, (byte) 0x18,
+ (byte) 0xad, (byte) 0xea,
+ (byte) 0xd0, (byte) 0xf3,
+ (byte) 0x7b, (byte) 0xe7,
+ (byte) 0x73, (byte) 0xc1,
+ (byte) 0xdf, (byte) 0xae,
+ (byte) 0xc9, (byte) 0x26,
+ (byte) 0x54, (byte) 0xaf,
+ (byte) 0xfe, (byte) 0x6c,
+ (byte) 0xbb, (byte) 0x3e,
+ (byte) 0xe4, (byte) 0x68,
+ (byte) 0x58, (byte) 0xe7,
+ (byte) 0x49, (byte) 0x5f,
+ (byte) 0x7d, (byte) 0xe5,
+ (byte) 0x93, (byte) 0x87,
+ (byte) 0x61, (byte) 0xc3,
+ (byte) 0x53, (byte) 0x18,
+ (byte) 0xdd, (byte) 0x05,
+ (byte) 0xf6, (byte) 0x05,
+ (byte) 0x94, (byte) 0x55,
+ (byte) 0x76, (byte) 0x3e,
+ (byte) 0x5b, (byte) 0x77,
+ (byte) 0x54, (byte) 0x4b,
+ (byte) 0x0d, (byte) 0x6d,
+ (byte) 0x7a, (byte) 0x55,
+ (byte) 0xf1, (byte) 0x91,
+ (byte) 0x3d, (byte) 0x43,
+ (byte) 0x4a, (byte) 0xd9 };
+
+ private static final String ALIAS = "mykey";
+
+ public void test(final TestHarness harness)
+ {
+ harness.checkPoint("TestOfPrivateKeyring");
+ final GnuPrivateKeyring kr = new GnuPrivateKeyring();
+ try
+ {
+ final Map attributes = new HashMap();
+ attributes.put(IKeyring.KEYRING_DATA_IN,
+ new ByteArrayInputStream(keyring));
+ attributes.put(IKeyring.KEYRING_PASSWORD, "password".toCharArray());
+
+ Security.addProvider(new Gnu());
+
+ kr.load(attributes);
+ harness.check(true, "load(...)");
+
+ harness.check(kr.containsPrivateKey(ALIAS), "containsCertificate(...)");
+
+ final List list = kr.get(ALIAS);
+// System.out.println("list.size()="+list.size());
+ harness.check(list.size() == 2, "get(...).size() == 2");
+
+// for (java.util.Iterator it = list.listIterator(); it.hasNext(); ) {
+// System.out.println("*** "+it.next());
+// }
+//
+// final Key key = kr.getPrivateKey(ALIAS, "password".toCharArray());
+// harness.check(key != null, "getPrivateKey(...) != null");
+//
+// System.out.println("key="+key);
+//
+// final Certificate[] cp = kr.getCertPath(ALIAS);
+// harness.check(cp != null, "getCertPath(...) != null");
+// harness.check(cp.length != 0, "getCertPath(...).length != 0");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPrivateKeyring");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/keyring/TestOfPublicKeyring.java b/gnu/testlet/gnu/javax/crypto/keyring/TestOfPublicKeyring.java
new file mode 100644
index 00000000..c0972d4a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/keyring/TestOfPublicKeyring.java
@@ -0,0 +1,440 @@
+/* TestOfPublicKeyring.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.keyring;
+
+import gnu.java.security.provider.Gnu;
+import gnu.javax.crypto.keyring.GnuPublicKeyring;
+import gnu.javax.crypto.keyring.IKeyring;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.security.Security;
+import java.security.cert.Certificate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Conformance tests for the GNU (public) Keyring implementation.
+ */
+public class TestOfPublicKeyring implements Testlet
+{
+ private static final byte[] keyring = new byte[] {
+ (byte) 0x47,(byte) 0x4b,(byte) 0x52,(byte) 0x01,
+ (byte) 0x04,(byte) 0x03,(byte) 0x00,(byte) 0x00,
+// (byte) 0x47,(byte) 0x4b,(byte) 0x52,(byte) 0x01,
+// (byte) 0x01,(byte) 0x03,(byte) 0x00,(byte) 0x00,
+ (byte) 0x00, (byte) 0x53,
+ (byte) 0x00, (byte) 0x04,
+ (byte) 0x73, (byte) 0x61,
+ (byte) 0x6c, (byte) 0x74,
+ (byte) 0x00, (byte) 0x10,
+ (byte) 0x46, (byte) 0x34,
+ (byte) 0x42, (byte) 0x35,
+ (byte) 0x35, (byte) 0x43,
+ (byte) 0x36, (byte) 0x34,
+ (byte) 0x35, (byte) 0x46,
+ (byte) 0x30, (byte) 0x33,
+ (byte) 0x33, (byte) 0x35,
+ (byte) 0x31, (byte) 0x43,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x61,
+ (byte) 0x73, (byte) 0x2d,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x73, (byte) 0x74,
+ (byte) 0x00, (byte) 0x10,
+ (byte) 0x76, (byte) 0x65,
+ (byte) 0x72, (byte) 0x69,
+ (byte) 0x73, (byte) 0x69,
+ (byte) 0x67, (byte) 0x6e,
+ (byte) 0x63, (byte) 0x6c,
+ (byte) 0x61, (byte) 0x73,
+ (byte) 0x73, (byte) 0x31,
+ (byte) 0x63, (byte) 0x61,
+ (byte) 0x00, (byte) 0x06,
+ (byte) 0x6d, (byte) 0x61,
+ (byte) 0x63, (byte) 0x6c,
+ (byte) 0x65, (byte) 0x6e,
+ (byte) 0x00, (byte) 0x02,
+ (byte) 0x32, (byte) 0x30,
+ (byte) 0x00, (byte) 0x03,
+ (byte) 0x6d, (byte) 0x61,
+ (byte) 0x63, (byte) 0x00,
+ (byte) 0x0a, (byte) 0x48,
+ (byte) 0x4d, (byte) 0x41,
+ (byte) 0x43, (byte) 0x2d,
+ (byte) 0x53, (byte) 0x48,
+ (byte) 0x41, (byte) 0x2d,
+ (byte) 0x31, (byte) 0x00,
+ (byte) 0x00, (byte) 0x02,
+ (byte) 0x6e, (byte) 0x04,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x32,
+ (byte) 0x00, (byte) 0x0a,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x61,
+ (byte) 0x73, (byte) 0x2d,
+ (byte) 0x6c, (byte) 0x69,
+ (byte) 0x73, (byte) 0x74,
+ (byte) 0x00, (byte) 0x10,
+ (byte) 0x76, (byte) 0x65,
+ (byte) 0x72, (byte) 0x69,
+ (byte) 0x73, (byte) 0x69,
+ (byte) 0x67, (byte) 0x6e,
+ (byte) 0x63, (byte) 0x6c,
+ (byte) 0x61, (byte) 0x73,
+ (byte) 0x73, (byte) 0x31,
+ (byte) 0x63, (byte) 0x61,
+ (byte) 0x00, (byte) 0x09,
+ (byte) 0x61, (byte) 0x6c,
+ (byte) 0x67, (byte) 0x6f,
+ (byte) 0x72, (byte) 0x69,
+ (byte) 0x74, (byte) 0x68,
+ (byte) 0x6d, (byte) 0x00,
+ (byte) 0x07, (byte) 0x44,
+ (byte) 0x45, (byte) 0x46,
+ (byte) 0x4c, (byte) 0x41,
+ (byte) 0x54, (byte) 0x45,
+ (byte) 0x00, (byte) 0x00,
+ (byte) 0x02, (byte) 0x1f,
+ (byte) 0x78, (byte) 0x9c,
+ (byte) 0x63, (byte) 0x65,
+ (byte) 0x60, (byte) 0x60,
+ (byte) 0x70, (byte) 0x61,
+ (byte) 0x60, (byte) 0x29,
+ (byte) 0xa9, (byte) 0x2c,
+ (byte) 0x48, (byte) 0x65,
+ (byte) 0x60, (byte) 0x8d,
+ (byte) 0xd0, (byte) 0x33,
+ (byte) 0x35, (byte) 0xb0,
+ (byte) 0x64, (byte) 0xe0,
+ (byte) 0x4d, (byte) 0x2e,
+ (byte) 0x4a, (byte) 0x4d,
+ (byte) 0x2c, (byte) 0xc9,
+ (byte) 0xcc, (byte) 0xcf,
+ (byte) 0xd3, (byte) 0x4d,
+ (byte) 0x49, (byte) 0x2c,
+ (byte) 0x49, (byte) 0x65,
+ (byte) 0xe0, (byte) 0x35,
+ (byte) 0x34, (byte) 0x30,
+ (byte) 0x37, (byte) 0x30,
+ (byte) 0x37, (byte) 0x31,
+ (byte) 0xb3, (byte) 0x34,
+ (byte) 0xb1, (byte) 0x30,
+ (byte) 0xb4, (byte) 0x34,
+ (byte) 0x60, (byte) 0x60,
+ (byte) 0x4d, (byte) 0xcc,
+ (byte) 0xc9, (byte) 0x4c,
+ (byte) 0x2c, (byte) 0x66,
+ (byte) 0x10, (byte) 0x28,
+ (byte) 0x4b, (byte) 0x2d,
+ (byte) 0xca, (byte) 0x2c,
+ (byte) 0xce, (byte) 0x4c,
+ (byte) 0xcf, (byte) 0x4b,
+ (byte) 0xce, (byte) 0x49,
+ (byte) 0x2c, (byte) 0x2e,
+ (byte) 0x36, (byte) 0x4c,
+ (byte) 0x4e, (byte) 0x64,
+ (byte) 0x60, (byte) 0x60,
+ (byte) 0x72, (byte) 0x30,
+ (byte) 0x68, (byte) 0x62,
+ (byte) 0xb2, (byte) 0x31,
+ (byte) 0x68, (byte) 0x62,
+ (byte) 0x5c, (byte) 0xca,
+ (byte) 0x24, (byte) 0x60,
+ (byte) 0x14, (byte) 0x60,
+ (byte) 0x7c, (byte) 0x3e,
+ (byte) 0xe0, (byte) 0x62,
+ (byte) 0xd8, (byte) 0xe7,
+ (byte) 0x98, (byte) 0xc6,
+ (byte) 0xb5, (byte) 0xa9,
+ (byte) 0x31, (byte) 0xfe,
+ (byte) 0x27, (byte) 0x54,
+ (byte) 0x0d, (byte) 0x78,
+ (byte) 0xd9, (byte) 0x38,
+ (byte) 0xb5, (byte) 0xda,
+ (byte) 0x3c, (byte) 0xda,
+ (byte) 0xbe, (byte) 0xf3,
+ (byte) 0x32, (byte) 0x32,
+ (byte) 0x32, (byte) 0xb1,
+ (byte) 0x32, (byte) 0x18,
+ (byte) 0xc4, (byte) 0x1b,
+ (byte) 0x72, (byte) 0x1b,
+ (byte) 0x70, (byte) 0xb2,
+ (byte) 0x31, (byte) 0x87,
+ (byte) 0xb2, (byte) 0xb0,
+ (byte) 0x09, (byte) 0x33,
+ (byte) 0x85, (byte) 0x06,
+ (byte) 0x1b, (byte) 0x8a,
+ (byte) 0x1b, (byte) 0x88,
+ (byte) 0x82, (byte) 0x38,
+ (byte) 0x5c, (byte) 0xc2,
+ (byte) 0x7c, (byte) 0x61,
+ (byte) 0x40, (byte) 0x63,
+ (byte) 0x83, (byte) 0x81,
+ (byte) 0xc6, (byte) 0xea,
+ (byte) 0x28, (byte) 0x78,
+ (byte) 0xe6, (byte) 0x25,
+ (byte) 0xeb, (byte) 0x19,
+ (byte) 0x9a, (byte) 0x1b,
+ (byte) 0x98, (byte) 0x82,
+ (byte) 0x24, (byte) 0xb8,
+ (byte) 0x85, (byte) 0xf5,
+ (byte) 0x9c, (byte) 0x41,
+ (byte) 0xf6, (byte) 0x28,
+ (byte) 0x18, (byte) 0x2a,
+ (byte) 0x04, (byte) 0x94,
+ (byte) 0x26, (byte) 0xe5,
+ (byte) 0x64, (byte) 0x26,
+ (byte) 0x2b, (byte) 0x04,
+ (byte) 0x14, (byte) 0x65,
+ (byte) 0xe6, (byte) 0x26,
+ (byte) 0x16, (byte) 0x55,
+ (byte) 0x2a, (byte) 0x38,
+ (byte) 0xa7, (byte) 0x16,
+ (byte) 0x95, (byte) 0x64,
+ (byte) 0xa6, (byte) 0x65,
+ (byte) 0x26, (byte) 0x83,
+ (byte) 0x1d, (byte) 0xac,
+ (byte) 0xe0, (byte) 0x58,
+ (byte) 0x5a, (byte) 0x92,
+ (byte) 0x91, (byte) 0x5f,
+ (byte) 0x94, (byte) 0x59,
+ (byte) 0x52, (byte) 0x69,
+ (byte) 0x20, (byte) 0x27,
+ (byte) 0xce, (byte) 0x6b,
+ (byte) 0x69, (byte) 0x66,
+ (byte) 0x60, (byte) 0x68,
+ (byte) 0x64, (byte) 0x69,
+ (byte) 0x00, (byte) 0x06,
+ (byte) 0x51, (byte) 0xe2,
+ (byte) 0xbc, (byte) 0x46,
+ (byte) 0x06, (byte) 0x06,
+ (byte) 0x40, (byte) 0x9f,
+ (byte) 0x18, (byte) 0x19,
+ (byte) 0x9b, (byte) 0x5a,
+ (byte) 0x9a, (byte) 0x5a,
+ (byte) 0x46, (byte) 0xd1,
+ (byte) 0xde, (byte) 0x01,
+ (byte) 0x8d, (byte) 0xf3,
+ (byte) 0x91, (byte) 0xfd,
+ (byte) 0xcc, (byte) 0xc8,
+ (byte) 0xca, (byte) 0xc0,
+ (byte) 0xdc, (byte) 0xd8,
+ (byte) 0xcb, (byte) 0x60,
+ (byte) 0xd0, (byte) 0xd8,
+ (byte) 0xc9, (byte) 0xd4,
+ (byte) 0xd8, (byte) 0xc8,
+ (byte) 0xf0, (byte) 0x54,
+ (byte) 0x72, (byte) 0x7f,
+ (byte) 0xee, (byte) 0xe2,
+ (byte) 0xb0, (byte) 0x44,
+ (byte) 0xdd, (byte) 0x99,
+ (byte) 0x1e, (byte) 0x85,
+ (byte) 0xdf, (byte) 0xd2,
+ (byte) 0xef, (byte) 0xed,
+ (byte) 0xec, (byte) 0x7d,
+ (byte) 0xbd, (byte) 0x7d,
+ (byte) 0x5e, (byte) 0x5b,
+ (byte) 0x03, (byte) 0xd7,
+ (byte) 0x44, (byte) 0xbe,
+ (byte) 0x5f, (byte) 0x16,
+ (byte) 0xaa, (byte) 0xeb,
+ (byte) 0xdd, (byte) 0x3a,
+ (byte) 0x9a, (byte) 0x9e,
+ (byte) 0x16, (byte) 0xaf,
+ (byte) 0x58, (byte) 0x30,
+ (byte) 0x5b, (byte) 0x25,
+ (byte) 0x96, (byte) 0x57,
+ (byte) 0xfe, (byte) 0x4c,
+ (byte) 0x6a, (byte) 0x1e,
+ (byte) 0xcf, (byte) 0x86,
+ (byte) 0x0b, (byte) 0x61,
+ (byte) 0x2d, (byte) 0x12,
+ (byte) 0xed, (byte) 0xb3,
+ (byte) 0xd8, (byte) 0x66,
+ (byte) 0x0b, (byte) 0x2c,
+ (byte) 0x2c, (byte) 0xbe,
+ (byte) 0xbf, (byte) 0x25,
+ (byte) 0xc2, (byte) 0x32,
+ (byte) 0x3b, (byte) 0xef,
+ (byte) 0xe0, (byte) 0x37,
+ (byte) 0xd1, (byte) 0xab,
+ (byte) 0x2b, (byte) 0x56,
+ (byte) 0xd8, (byte) 0xaf,
+ (byte) 0x12, (byte) 0x62,
+ (byte) 0xeb, (byte) 0x35,
+ (byte) 0x5c, (byte) 0x53,
+ (byte) 0xbf, (byte) 0xc1,
+ (byte) 0xe4, (byte) 0x7a,
+ (byte) 0xbf, (byte) 0x49,
+ (byte) 0x7a, (byte) 0x07,
+ (byte) 0xe7, (byte) 0x59,
+ (byte) 0x11, (byte) 0xc1,
+ (byte) 0x47, (byte) 0x7e,
+ (byte) 0xae, (byte) 0x61,
+ (byte) 0x99, (byte) 0xf2,
+ (byte) 0x15, (byte) 0x4c,
+ (byte) 0x0d, (byte) 0xb7,
+ (byte) 0xee, (byte) 0xb8,
+ (byte) 0x4f, (byte) 0xd4,
+ (byte) 0xdc, (byte) 0x6d,
+ (byte) 0x76, (byte) 0x32,
+ (byte) 0x39, (byte) 0xe6,
+ (byte) 0xe8, (byte) 0x83,
+ (byte) 0xeb, (byte) 0xba,
+ (byte) 0xed, (byte) 0xd5,
+ (byte) 0x0b, (byte) 0xb7,
+ (byte) 0x1b, (byte) 0x6d,
+ (byte) 0xa8, (byte) 0x36,
+ (byte) 0xd8, (byte) 0xa5,
+ (byte) 0xa5, (byte) 0x6f,
+ (byte) 0xb8, (byte) 0xea,
+ (byte) 0xdd, (byte) 0xe2,
+ (byte) 0xf4, (byte) 0x5b,
+ (byte) 0xb7, (byte) 0x99,
+ (byte) 0x98, (byte) 0x19,
+ (byte) 0x19, (byte) 0x18,
+ (byte) 0xd1, (byte) 0xa2,
+ (byte) 0x84, (byte) 0x19,
+ (byte) 0xe8, (byte) 0x2e,
+ (byte) 0x6f, (byte) 0x97,
+ (byte) 0xb4, (byte) 0x84,
+ (byte) 0x8c, (byte) 0x94,
+ (byte) 0x27, (byte) 0x33,
+ (byte) 0xa4, (byte) 0x3f,
+ (byte) 0x6f, (byte) 0x28,
+ (byte) 0x7a, (byte) 0x36,
+ (byte) 0xb5, (byte) 0xb3,
+ (byte) 0xe6, (byte) 0x6e,
+ (byte) 0xf5, (byte) 0xe6,
+ (byte) 0xa9, (byte) 0x07,
+ (byte) 0x64, (byte) 0xf5,
+ (byte) 0x6e, (byte) 0xdc,
+ (byte) 0x90, (byte) 0xbc,
+ (byte) 0xa0, (byte) 0x6b,
+ (byte) 0x62, (byte) 0x7b,
+ (byte) 0x2c, (byte) 0x60,
+ (byte) 0x96, (byte) 0x40,
+ (byte) 0x5b, (byte) 0xcf,
+ (byte) 0x2a, (byte) 0x7b,
+ (byte) 0xeb, (byte) 0x15,
+ (byte) 0x2c, (byte) 0x7f,
+ (byte) 0xcc, (byte) 0x83,
+ (byte) 0xa6, (byte) 0x1e,
+ (byte) 0xbe, (byte) 0x79,
+ (byte) 0xf2, (byte) 0xf6,
+ (byte) 0xd9, (byte) 0x4f,
+ (byte) 0x6d, (byte) 0x6c,
+ (byte) 0x47, (byte) 0x36,
+ (byte) 0x4a, (byte) 0x7f,
+ (byte) 0x68, (byte) 0xea,
+ (byte) 0x30, (byte) 0x70,
+ (byte) 0xea, (byte) 0x13,
+ (byte) 0x0f, (byte) 0x90,
+ (byte) 0x49, (byte) 0xa9,
+ (byte) 0xda, (byte) 0x61,
+ (byte) 0x37, (byte) 0xd3,
+ (byte) 0xb3, (byte) 0x64,
+ (byte) 0xfa, (byte) 0x9f,
+ (byte) 0x35, (byte) 0x4c,
+ (byte) 0xce, (byte) 0xbf,
+ (byte) 0xa7, (byte) 0xf1,
+ (byte) 0x84, (byte) 0xb1,
+ (byte) 0xa8, (byte) 0xf2,
+ (byte) 0xd4, (byte) 0xd4,
+ (byte) 0xb4, (byte) 0xcf,
+ (byte) 0x55, (byte) 0x59,
+ (byte) 0x7e, (byte) 0xe3,
+ (byte) 0x83, (byte) 0x91,
+ (byte) 0xe6, (byte) 0xd6,
+ (byte) 0x25, (byte) 0xf7,
+ (byte) 0x63, (byte) 0x17,
+ (byte) 0xf9, (byte) 0x1c,
+ (byte) 0x15, (byte) 0x33,
+ (byte) 0x5a, (byte) 0xe1,
+ (byte) 0xf4, (byte) 0xcd,
+ (byte) 0x75, (byte) 0xd9,
+ (byte) 0x36, (byte) 0xb3,
+ (byte) 0x9d, (byte) 0x0f,
+ (byte) 0xf6, (byte) 0xa7,
+ (byte) 0x9a, (byte) 0x4d,
+ (byte) 0x3e, (byte) 0x74,
+ (byte) 0xe9, (byte) 0x7a,
+ (byte) 0xf6, (byte) 0x9d,
+ (byte) 0x7b, (byte) 0x91,
+ (byte) 0xd7, (byte) 0x16,
+ (byte) 0x99, (byte) 0xfe,
+ (byte) 0x70, (byte) 0x05,
+ (byte) 0x00, (byte) 0xc4,
+ (byte) 0x7a, (byte) 0xe5,
+ (byte) 0xbb, (byte) 0x04,
+ (byte) 0xf9, (byte) 0x0f,
+ (byte) 0x26, (byte) 0x22,
+ (byte) 0xfc, (byte) 0x61,
+ (byte) 0xb6, (byte) 0xcf,
+ (byte) 0x0c, (byte) 0xba,
+ (byte) 0x43, (byte) 0xc1,
+ (byte) 0xb9, (byte) 0xd6,
+ (byte) 0xae, (byte) 0xb3,
+ (byte) 0xd8, (byte) 0x21,
+ (byte) 0x23 };
+
+ private static final String ALIAS = "verisignclass1ca";
+
+ public void test(final TestHarness harness)
+ {
+ harness.checkPoint("TestOfPublicKeyring");
+ final GnuPublicKeyring kr = new GnuPublicKeyring();
+ try
+ {
+ final Map attributes = new HashMap();
+ attributes.put(IKeyring.KEYRING_DATA_IN,
+ new ByteArrayInputStream(keyring));
+ attributes.put(IKeyring.KEYRING_PASSWORD, "password".toCharArray());
+
+ Security.addProvider(new Gnu());
+
+ kr.load(attributes);
+ harness.check(true, "load(...)");
+
+ harness.check(kr.containsCertificate(ALIAS), "containsCertificate(...)");
+
+ final List list = kr.get(ALIAS);
+ harness.check(list.size() == 1, "get(...).size() == 1");
+
+ final Certificate cert = kr.getCertificate(ALIAS);
+ harness.check(cert != null, "getCertificate(...) != null");
+
+// System.out.println("cert="+cert);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPublicKeyring");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/kwa/CVS/Entries b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Entries
new file mode 100644
index 00000000..93cf858f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfAESKeyWrap.java/1.1/Fri Jul 14 04:54:22 2006//
+/TestOfTripleDESKeyWrap.java/1.1/Fri Jul 14 04:54:22 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/kwa/CVS/Repository b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Repository
new file mode 100644
index 00000000..3a9687af
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/kwa
diff --git a/gnu/testlet/gnu/javax/crypto/kwa/CVS/Root b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/kwa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/kwa/TestOfAESKeyWrap.java b/gnu/testlet/gnu/javax/crypto/kwa/TestOfAESKeyWrap.java
new file mode 100644
index 00000000..2816bc9b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/kwa/TestOfAESKeyWrap.java
@@ -0,0 +1,240 @@
+/* TestOfAESKeyWrap.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.kwa;
+
+import gnu.javax.crypto.kwa.IKeyWrappingAlgorithm;
+import gnu.javax.crypto.kwa.KeyWrappingAlgorithmFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.crypto.ShortBufferException;
+
+/**
+ * Conformance test of the RFC3394 Key Wrapping Algorithm implementation. Test
+ * vectors are from RFC-3394.
+ */
+public class TestOfAESKeyWrap
+ implements Testlet
+{
+ private static final byte[] KM128 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF };
+ private static final byte[] KM128_WRAPPED128 = new byte[] {
+ (byte) 0x1F, (byte) 0xA6, (byte) 0x8B, (byte) 0x0A,
+ (byte) 0x81, (byte) 0x12, (byte) 0xB4, (byte) 0x47,
+ (byte) 0xAE, (byte) 0xF3, (byte) 0x4B, (byte) 0xD8,
+ (byte) 0xFB, (byte) 0x5A, (byte) 0x7B, (byte) 0x82,
+ (byte) 0x9D, (byte) 0x3E, (byte) 0x86, (byte) 0x23,
+ (byte) 0x71, (byte) 0xD2, (byte) 0xCF, (byte) 0xE5 };
+ private static final byte[] KM128_WRAPPED192 = new byte[] {
+ (byte) 0x96, (byte) 0x77, (byte) 0x8B, (byte) 0x25,
+ (byte) 0xAE, (byte) 0x6C, (byte) 0xA4, (byte) 0x35,
+ (byte) 0xF9, (byte) 0x2B, (byte) 0x5B, (byte) 0x97,
+ (byte) 0xC0, (byte) 0x50, (byte) 0xAE, (byte) 0xD2,
+ (byte) 0x46, (byte) 0x8A, (byte) 0xB8, (byte) 0xA1,
+ (byte) 0x7A, (byte) 0xD8, (byte) 0x4E, (byte) 0x5D };
+ private static final byte[] KM128_WRAPPED256 = new byte[] {
+ (byte) 0x64, (byte) 0xE8, (byte) 0xC3, (byte) 0xF9,
+ (byte) 0xCE, (byte) 0x0F, (byte) 0x5B, (byte) 0xA2,
+ (byte) 0x63, (byte) 0xE9, (byte) 0x77, (byte) 0x79,
+ (byte) 0x05, (byte) 0x81, (byte) 0x8A, (byte) 0x2A,
+ (byte) 0x93, (byte) 0xC8, (byte) 0x19, (byte) 0x1E,
+ (byte) 0x7D, (byte) 0x6E, (byte) 0x8A, (byte) 0xE7 };
+ private static final byte[] KM192 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03,
+ (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07 };
+ private static final byte[] KM192_WRAPPED192 = new byte[] {
+ (byte) 0x03, (byte) 0x1D, (byte) 0x33, (byte) 0x26,
+ (byte) 0x4E, (byte) 0x15, (byte) 0xD3, (byte) 0x32,
+ (byte) 0x68, (byte) 0xF2, (byte) 0x4E, (byte) 0xC2,
+ (byte) 0x60, (byte) 0x74, (byte) 0x3E, (byte) 0xDC,
+ (byte) 0xE1, (byte) 0xC6, (byte) 0xC7, (byte) 0xDD,
+ (byte) 0xEE, (byte) 0x72, (byte) 0x5A, (byte) 0x93,
+ (byte) 0x6B, (byte) 0xA8, (byte) 0x14, (byte) 0x91,
+ (byte) 0x5C, (byte) 0x67, (byte) 0x62, (byte) 0xD2 };
+ private static final byte[] KM192_WRAPPED256 = new byte[] {
+ (byte) 0xA8, (byte) 0xF9, (byte) 0xBC, (byte) 0x16,
+ (byte) 0x12, (byte) 0xC6, (byte) 0x8B, (byte) 0x3F,
+ (byte) 0xF6, (byte) 0xE6, (byte) 0xF4, (byte) 0xFB,
+ (byte) 0xE3, (byte) 0x0E, (byte) 0x71, (byte) 0xE4,
+ (byte) 0x76, (byte) 0x9C, (byte) 0x8B, (byte) 0x80,
+ (byte) 0xA3, (byte) 0x2C, (byte) 0xB8, (byte) 0x95,
+ (byte) 0x8C, (byte) 0xD5, (byte) 0xD1, (byte) 0x7D,
+ (byte) 0x6B, (byte) 0x25, (byte) 0x4D, (byte) 0xA1 };
+ private static final byte[] KM256 = new byte[] {
+ (byte) 0x00, (byte) 0x11, (byte) 0x22, (byte) 0x33,
+ (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77,
+ (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB,
+ (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03,
+ (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
+ (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B,
+ (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F };
+ private static final byte[] KM256_WRAPPED256 = new byte[] {
+ (byte) 0x28, (byte) 0xC9, (byte) 0xF4, (byte) 0x04,
+ (byte) 0xC4, (byte) 0xB8, (byte) 0x10, (byte) 0xF4,
+ (byte) 0xCB, (byte) 0xCC, (byte) 0xB3, (byte) 0x5C,
+ (byte) 0xFB, (byte) 0x87, (byte) 0xF8, (byte) 0x26,
+ (byte) 0x3F, (byte) 0x57, (byte) 0x86, (byte) 0xE2,
+ (byte) 0xD8, (byte) 0x0E, (byte) 0xD3, (byte) 0x26,
+ (byte) 0xCB, (byte) 0xC7, (byte) 0xF0, (byte) 0xE7,
+ (byte) 0x1A, (byte) 0x99, (byte) 0xF4, (byte) 0x3B,
+ (byte) 0xFB, (byte) 0x98, (byte) 0x8B, (byte) 0x9B,
+ (byte) 0x7A, (byte) 0x02, (byte) 0xDD, (byte) 0x21 };
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ testMethods(harness);
+ test64BitBlock(harness);
+ testKek(harness, 128, KM128, KM128_WRAPPED128);
+ testKek(harness, 192, KM128, KM128_WRAPPED192);
+ testKek(harness, 256, KM128, KM128_WRAPPED256);
+ testKek(harness, 192, KM192, KM192_WRAPPED192);
+ testKek(harness, 256, KM192, KM192_WRAPPED256);
+ testKek(harness, 256, KM256, KM256_WRAPPED256);
+ }
+
+ private void testMethods(TestHarness harness)
+ {
+ byte[] kek = new byte[16];
+ try
+ {
+ IKeyWrappingAlgorithm kwa = KeyWrappingAlgorithmFactory.getInstance("kw-aes");
+ Map attributes = new HashMap();
+ attributes.put(IKeyWrappingAlgorithm.KEY_ENCRYPTION_KEY_MATERIAL, kek);
+ kwa.init(attributes);
+
+ String msg;
+ byte[] km1 = new byte[24];
+ msg = "Input length MUST be a multiple of 8 bytes";
+ try
+ {
+ kwa.wrap(km1, 0, 17, km1, 0);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true, msg);
+ }
+
+ msg = "Output length MUST be at least 8 bytes larger than input length";
+ try
+ {
+ kwa.wrap(km1, 0, 16, km1, 1);
+ harness.fail(msg);
+ }
+ catch (ShortBufferException e)
+ {
+ harness.check(true, msg);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testMethods(): " + x);
+ }
+ }
+
+ private void test64BitBlock(TestHarness harness)
+ {
+ byte[] kek = new byte[16];
+ for (int i = 0; i < 16; i++)
+ kek[i] = (byte) i;
+
+ byte[] km = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
+ try
+ {
+ IKeyWrappingAlgorithm kwa = KeyWrappingAlgorithmFactory.getInstance("kw-aes");
+ Map attributes = new HashMap();
+ attributes.put(IKeyWrappingAlgorithm.KEY_ENCRYPTION_KEY_MATERIAL, kek);
+ kwa.init(attributes);
+
+ byte[] wrapped = new byte[km.length + 8];
+ int outputLength = kwa.wrap(km, 0, km.length, wrapped, 0);
+ harness.check(outputLength == 16,
+ "Wrapped 64-bit key material MUST produce 16 bytes");
+
+ byte[] unwrapped = new byte[8];
+ outputLength = kwa.unwrap(wrapped, 0, wrapped.length, unwrapped, 0);
+ harness.check(outputLength == 8,
+ "Unwrapped 128-bit key material MUST produce 8 bytes");
+ harness.check(Arrays.equals(km, unwrapped),
+ "Unwrapped key material MUST match original value");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testKek(): " + x);
+ }
+ }
+
+ private void testKek(TestHarness harness, int keyLength,
+ byte[] keyMaterial, byte[] wrappedKeyMaterial)
+ {
+ int limit = keyLength / 8;
+ byte[] kek = new byte[limit];
+ for (int i = 0; i < limit; i++)
+ kek[i] = (byte) i;
+
+ int keyMaterialLength = keyMaterial.length * 8;
+ try
+ {
+ IKeyWrappingAlgorithm kwa = KeyWrappingAlgorithmFactory.getInstance("kw-aes");
+ Map attributes = new HashMap();
+ attributes.put(IKeyWrappingAlgorithm.KEY_ENCRYPTION_KEY_MATERIAL, kek);
+ kwa.init(attributes);
+
+ byte[] km = (byte[]) keyMaterial.clone();
+ byte[] wrapped = new byte[km.length + 8];
+ kwa.wrap(km, 0, km.length, wrapped, 0);
+ harness.check(Arrays.equals(wrappedKeyMaterial, wrapped),
+ keyMaterialLength + "-bit key material wrapped w/ "
+ + keyLength + "-bit KEK MUST match expected value");
+
+ byte[] unwrapped = new byte[wrappedKeyMaterial.length - 8];
+ kwa.unwrap(wrappedKeyMaterial, 0, wrappedKeyMaterial.length, unwrapped, 0);
+ harness.check(Arrays.equals(keyMaterial, unwrapped),
+ keyMaterialLength + "-bit key material unwrapped w/ "
+ + keyLength + "-bit KEK MUST match expected value");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testKek(): " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/kwa/TestOfTripleDESKeyWrap.java b/gnu/testlet/gnu/javax/crypto/kwa/TestOfTripleDESKeyWrap.java
new file mode 100644
index 00000000..eb5bb36e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/kwa/TestOfTripleDESKeyWrap.java
@@ -0,0 +1,134 @@
+/* TestOfTripleDESKeyWrap.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.kwa;
+
+import gnu.javax.crypto.cipher.TripleDES;
+import gnu.javax.crypto.kwa.IKeyWrappingAlgorithm;
+import gnu.javax.crypto.kwa.KeyWrappingAlgorithmFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance test of the RFC3217 Triple DES Key Wrapping Algorithm
+ * implementation.
+ */
+public class TestOfTripleDESKeyWrap
+ implements Testlet
+{
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ testMethods(harness);
+ testSymmetry(harness);
+ }
+
+ private void testMethods(TestHarness harness)
+ {
+ byte[] kek = new byte[24];
+ try
+ {
+ IKeyWrappingAlgorithm kwa = KeyWrappingAlgorithmFactory.getInstance("kw-tripledes");
+ Map attributes = new HashMap();
+ attributes.put(IKeyWrappingAlgorithm.KEY_ENCRYPTION_KEY_MATERIAL, kek);
+ kwa.init(attributes);
+
+ String msg;
+ byte[] km = new byte[24];
+ msg = "Input length for wrapping MUST be 16 or 24 bytes";
+ try
+ {
+ kwa.wrap(km, 0, 15);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true, msg);
+ }
+
+ msg = "Input length for unwrapping MUST be 40 bytes";
+ try
+ {
+ kwa.unwrap(km, 0, 24);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true, msg);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testMethods(): " + x);
+ }
+ }
+
+ private void testSymmetry(TestHarness harness)
+ {
+ byte[] kek = new byte[] {
+ (byte) 0x25, (byte) 0x5e, (byte) 0x0d, (byte) 0x1c,
+ (byte) 0x07, (byte) 0xb6, (byte) 0x46, (byte) 0xdf,
+ (byte) 0xb3, (byte) 0x13, (byte) 0x4c, (byte) 0xc8,
+ (byte) 0x43, (byte) 0xba, (byte) 0x8a, (byte) 0xa7,
+ (byte) 0x1f, (byte) 0x02, (byte) 0x5b, (byte) 0x7c,
+ (byte) 0x08, (byte) 0x38, (byte) 0x25, (byte) 0x1f };
+ byte[] km = new byte[] {
+ (byte) 0x29, (byte) 0x23, (byte) 0xbf, (byte) 0x85,
+ (byte) 0xe0, (byte) 0x6d, (byte) 0xd6, (byte) 0xae,
+ (byte) 0x52, (byte) 0x91, (byte) 0x49, (byte) 0xf1,
+ (byte) 0xf1, (byte) 0xba, (byte) 0xe9, (byte) 0xea,
+ (byte) 0xb3, (byte) 0xa7, (byte) 0xda, (byte) 0x3d,
+ (byte) 0x86, (byte) 0x0d, (byte) 0x3e, (byte) 0x98 };
+ try
+ {
+ TripleDES.adjustParity(km, 0);
+
+ IKeyWrappingAlgorithm kwa = KeyWrappingAlgorithmFactory.getInstance("kw-tripledes");
+ Map attributes = new HashMap();
+ attributes.put(IKeyWrappingAlgorithm.KEY_ENCRYPTION_KEY_MATERIAL, kek);
+ kwa.init(attributes);
+
+ byte[] wrapped = kwa.wrap(km, 0, km.length);
+ harness.check(wrapped.length == 40,
+ "Wrapped key material MUST produce 40 bytes");
+
+ byte[] unwrapped = kwa.unwrap(wrapped, 0, wrapped.length);
+ harness.check(unwrapped.length == 24,
+ "Unwrapped key material MUST produce 24 bytes");
+ harness.check(Arrays.equals(km, unwrapped),
+ "Unwrapped key material MUST match original value");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testSymmetry(): " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/mac/CVS/Entries b/gnu/testlet/gnu/javax/crypto/mac/CVS/Entries
new file mode 100644
index 00000000..6b8a6bfe
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/CVS/Entries
@@ -0,0 +1,9 @@
+/TestOfHMac.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfHMacCloneability.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfHMacFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfHMacMD5.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfHMacSha1.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfMacFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfOMAC.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfTMMH16.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/mac/CVS/Repository b/gnu/testlet/gnu/javax/crypto/mac/CVS/Repository
new file mode 100644
index 00000000..f0c37794
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/mac
diff --git a/gnu/testlet/gnu/javax/crypto/mac/CVS/Root b/gnu/testlet/gnu/javax/crypto/mac/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfHMac.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMac.java
new file mode 100644
index 00000000..c5744a1b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMac.java
@@ -0,0 +1,132 @@
+/* TestOfHMac.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.javax.crypto.mac.HMacFactory;
+import gnu.javax.crypto.mac.IMac;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Random;
+
+/**
+ * Conformance Tests of common characteristics to all HMAC types in this
+ * library; e.g. cloning.
+ */
+public class TestOfHMac implements Testlet
+{
+ private static final Random prng = new Random(System.currentTimeMillis());
+
+ private String mac;
+
+ private IMac algorithm, clone;
+
+ private static final byte[] makeKey(int length)
+ {
+ byte[] result = new byte[length];
+ prng.nextBytes(result);
+ return result;
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMac");
+ HashMap attr = new HashMap();
+ for (Iterator it = HMacFactory.getNames().iterator(); it.hasNext();)
+ {
+ algorithm = null;
+ mac = (String) it.next();
+ try
+ {
+ algorithm = HMacFactory.getInstance(mac);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(mac) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMac.getInstance(" + String.valueOf(mac)
+ + ") - " + String.valueOf(x));
+ }
+
+ // cloneable
+ attr.put(IMac.MAC_KEY_MATERIAL, makeKey(algorithm.macSize()));
+ try
+ {
+ algorithm.init(attr);
+ algorithm.update((byte) 'a');
+ algorithm.update((byte) 'b');
+ algorithm.update((byte) 'c');
+
+ clone = (IMac) algorithm.clone();
+
+ algorithm.update((byte) 'd');
+ clone.update((byte) 'd');
+ algorithm.update((byte) 'e');
+ clone.update((byte) 'e');
+ algorithm.update((byte) 'f');
+ clone.update((byte) 'f');
+
+ byte[] md1 = algorithm.digest();
+ byte[] md2 = clone.digest();
+
+ harness.check(Arrays.equals(md1, md2), "clone(" + algorithm.name()
+ + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMac.clone(" + algorithm.name() + ") - "
+ + String.valueOf(x));
+ }
+
+ // reusable
+ try
+ {
+ algorithm.init(attr);
+ algorithm.update((byte) 'a');
+ algorithm.update((byte) 'b');
+ algorithm.update((byte) 'c');
+ byte[] md1 = algorithm.digest();
+
+ algorithm.reset();
+ algorithm.update((byte) 'a');
+ algorithm.update((byte) 'b');
+ algorithm.update((byte) 'c');
+ byte[] md2 = algorithm.digest();
+
+ harness.check(Arrays.equals(md1, md2), "reset(" + algorithm.name()
+ + ")");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMac.reset(" + algorithm.name() + ") - "
+ + String.valueOf(x));
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacCloneability.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacCloneability.java
new file mode 100644
index 00000000..1753d7ab
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacCloneability.java
@@ -0,0 +1,147 @@
+/* TestOfHMacCloneability.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.mac.HMacFactory;
+import gnu.javax.crypto.mac.IMac;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Random;
+
+/**
+ * Tests implementation of the Cloneable interface for GNU HMACs.
+ */
+public class TestOfHMacCloneability implements Testlet
+{
+ private static final Random prng = new Random(System.currentTimeMillis());
+ private static final String HMAC_NAME = Registry.HMAC_NAME_PREFIX
+ + Registry.SHA_HASH;
+ private IMac hmac;
+ HashMap hmacAttributes = new HashMap();
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ clone1(harness);
+ clone2(harness);
+ }
+
+ /** Test of an un-initialised clone. */
+ private void clone1(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMacCloneability.clone1");
+
+ setUp(harness);
+ try
+ {
+ IMac clone = (IMac) hmac.clone();
+
+ hmac.init(hmacAttributes);
+
+ hmac.update((byte) 'a');
+ hmac.update((byte) 'b');
+ hmac.update((byte) 'c');
+
+ clone.init(hmacAttributes);
+
+ clone.update((byte) 'a');
+ clone.update((byte) 'b');
+ clone.update((byte) 'c');
+
+ byte[] md1 = hmac.digest();
+ byte[] md2 = clone.digest();
+
+ harness.check(Arrays.equals(md1, md2), "clone1");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMacCloneability.clone1 - " + x);
+ }
+ }
+
+ /** Test of an initialised clone. */
+ private void clone2(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMacCloneability.clone1");
+
+ setUp(harness);
+ try
+ {
+ hmac.init(hmacAttributes);
+
+ hmac.update((byte) 'a');
+ hmac.update((byte) 'b');
+ hmac.update((byte) 'c');
+
+ IMac clone = (IMac) hmac.clone();
+
+ hmac.update((byte) 'd');
+ hmac.update((byte) 'e');
+ hmac.update((byte) 'f');
+
+ clone.update((byte) 'd');
+ clone.update((byte) 'e');
+ clone.update((byte) 'f');
+
+ byte[] md1 = hmac.digest();
+ byte[] md2 = clone.digest();
+
+ harness.check(Arrays.equals(md1, md2), "clone2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMacCloneability.clone2 - " + x);
+ }
+ }
+
+ private void setUp(TestHarness harness)
+ {
+ try
+ {
+ hmac = HMacFactory.getInstance(HMAC_NAME);
+ harness.check(hmac != null, "getInstance(" + HMAC_NAME + ")");
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.fail("getInstance(" + HMAC_NAME + ") - " + t);
+ }
+
+ // make a key
+ int hmacLength = hmac.macSize();
+ byte[] keyMaterial = new byte[hmacLength];
+ prng.nextBytes(keyMaterial);
+
+ hmacAttributes.clear();
+ hmacAttributes.put(IMac.MAC_KEY_MATERIAL, keyMaterial);
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacFactory.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacFactory.java
new file mode 100644
index 00000000..ed00ac74
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacFactory.java
@@ -0,0 +1,60 @@
+/* TestOfHMacFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.javax.crypto.mac.HMacFactory;
+import gnu.javax.crypto.mac.IMac;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance test for the {@link HMacFactory} implementation.
+ */
+public class TestOfHMacFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMacFactory");
+ String mac;
+ IMac algorithm;
+ for (Iterator it = HMacFactory.getNames().iterator(); it.hasNext();)
+ {
+ mac = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = HMacFactory.getInstance(mac);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(mac) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfHMacFactory.getInstance(" + String.valueOf(mac)
+ + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacMD5.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacMD5.java
new file mode 100644
index 00000000..b82d2456
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacMD5.java
@@ -0,0 +1,134 @@
+/* TestOfHMacMD5.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.MacFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.InvalidKeyException;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance tests of the HMAC-MD5 message authentication code algorithms.
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li>P. Cheng and R. Glenn, <a href="http://www.ietf.org/rfc/rfc2202.txt">RFC
+ * 2202: Test Cases for HMAC-MD5 and HMAC-SHA-1</a>.</li>
+ * </ol>
+ */
+public class TestOfHMacMD5 implements Testlet
+{
+ private static final byte[][][] TEST_VECTOR = {
+ {
+ "Jefe".getBytes(),
+ "what do ya want for nothing?".getBytes(),
+ Util.toBytesFromString("750c783e6ab0b503eaa86e310a5db738") },
+ {
+ Util.toBytesFromString("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
+ "Hi There".getBytes(),
+ Util.toBytesFromString("9294727a3638bb1c13f48ef8158bfc9d") },
+ {
+ Util.toBytesFromString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
+ new byte[50] /* filled in below, 0xDD 50 times */,
+ Util.toBytesFromString("56be34521d144c88dbb8c733f0e8b3f6") },
+ {
+ Util.toBytesFromString("0102030405060708090a0b0c0d0e0f10111213141516171819"),
+ new byte[50] /* filled in below, 0xCD 50 times */,
+ Util.toBytesFromString("697eaf0aca3a3aea3a75164746ffaa79") },
+ {
+ Util.toBytesFromString("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c"),
+ "Test With Truncation".getBytes(),
+ Util.toBytesFromString("56461ef2342edc00f9bab995690efd4c") },
+ {
+ new byte[80] /* filled in below, 0xAA 80 times */,
+ "Test Using Larger Than Block-Size Key - Hash Key First".getBytes(),
+ Util.toBytesFromString("6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd") },
+ {
+ new byte[80] /* filled in below, 0xAA 80 times */,
+ "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data".getBytes(),
+ Util.toBytesFromString("6f630fad67cda0ee1fb1f562db3aa53e") } };
+
+ static
+ {
+ int i = 0;
+ for (; i < 50; i++)
+ {
+ TEST_VECTOR[2][1][i] = (byte) 0xDD;
+ TEST_VECTOR[3][1][i] = (byte) 0xCD;
+
+ TEST_VECTOR[5][0][i] = (byte) 0xAA;
+ TEST_VECTOR[6][0][i] = (byte) 0xAA;
+ }
+ for (; i < 80; i++)
+ {
+ TEST_VECTOR[5][0][i] = (byte) 0xAA;
+ TEST_VECTOR[6][0][i] = (byte) 0xAA;
+ }
+ }
+
+ private HashMap attr = new HashMap();
+
+ private IMac mac;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMacMD5");
+ mac = MacFactory.getInstance("hmac-md5");
+ // 1st vector SHOULD fail with key too short exception
+ try
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TEST_VECTOR[0][0]);
+ mac.init(attr);
+ mac.update(TEST_VECTOR[0][1], 0, TEST_VECTOR[0][1].length);
+ harness.check(Arrays.equals(mac.digest(), TEST_VECTOR[0][2]));
+ harness.fail("#0 - SHOULD have caused a Key too short exception but didn't");
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.check(true, "#0");
+ }
+
+ for (int i = 1; i < TEST_VECTOR.length; i++)
+ {
+ try
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TEST_VECTOR[i][0]);
+ mac.init(attr);
+ mac.update(TEST_VECTOR[i][1], 0, TEST_VECTOR[i][1].length);
+ harness.check(Arrays.equals(mac.digest(), TEST_VECTOR[i][2]), "#"
+ + i);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("#" + i + " - " + String.valueOf(x));
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacSha1.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacSha1.java
new file mode 100644
index 00000000..2fd83d5b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfHMacSha1.java
@@ -0,0 +1,131 @@
+/* TestOfHMacSha1.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.MacFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.InvalidKeyException;
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance tests of the HMAC-SHA1 message authentication code algorithms.
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li>P. Cheng and R. Glenn, <a href="http://www.ietf.org/rfc/rfc2202.txt">RFC
+ * 2202: Test Cases for HMAC-MD5 and HMAC-SHA-1</a>.</li>
+ * </ol>
+ */
+public class TestOfHMacSha1 implements Testlet
+{
+ private static final byte[][][] TEST_VECTOR = {
+ {
+ "Jefe".getBytes(),
+ "what do ya want for nothing?".getBytes(),
+ Util.toBytesFromString("effcdf6ae5eb2fa2d27416d5f184df9c259a7c79") },
+ {
+ Util.toBytesFromString("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
+ "Hi There".getBytes(),
+ Util.toBytesFromString("b617318655057264e28bc0b6fb378c8ef146be00") },
+ {
+ Util.toBytesFromString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
+ new byte[50] /* filled in below, 0xDD 50 times */,
+ Util.toBytesFromString("125d7342b9ac11cd91a39af48aa17b4f63f175d3") },
+ {
+ Util.toBytesFromString("0102030405060708090a0b0c0d0e0f10111213141516171819"),
+ new byte[50] /* filled in below, 0xDD 50 times */,
+ Util.toBytesFromString("4c9007f4026250c6bc8414f9bf50c86c2d7235da") },
+ {
+ Util.toBytesFromString("0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c"),
+ "Test With Truncation".getBytes(),
+ Util.toBytesFromString("4c1a03424b55e07fe7f27be1d58bb9324a9a5a04") },
+ {
+ new byte[80] /* filled in below, 0xAA 80 times */,
+ "Test Using Larger Than Block-Size Key - Hash Key First".getBytes(),
+ Util.toBytesFromString("aa4ae5e15272d00e95705637ce8a3b55ed402112") },
+ {
+ new byte[80] /* filled in below, 0xAA 80 times */,
+ "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data".getBytes(),
+ Util.toBytesFromString("e8e99d0f45237d786d6bbaa7965c7808bbff1a91") } };
+
+ static
+ {
+ int i = 0;
+ for (; i < 50; i++)
+ {
+ TEST_VECTOR[2][1][i] = (byte) 0xDD;
+ TEST_VECTOR[3][1][i] = (byte) 0xCD;
+
+ TEST_VECTOR[5][0][i] = (byte) 0xAA;
+ TEST_VECTOR[6][0][i] = (byte) 0xAA;
+ }
+ for (; i < 80; i++)
+ {
+ TEST_VECTOR[5][0][i] = (byte) 0xAA;
+ TEST_VECTOR[6][0][i] = (byte) 0xAA;
+ }
+ }
+
+ private HashMap attr = new HashMap();
+
+ private IMac mac;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfHMacSha1");
+ mac = MacFactory.getInstance("hmac-sha1");
+ // 1st vector SHOULD fail with key too short exception
+ try
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TEST_VECTOR[0][0]);
+ mac.init(attr);
+ mac.update(TEST_VECTOR[0][1], 0, TEST_VECTOR[0][1].length);
+ harness.check(Arrays.equals(mac.digest(), TEST_VECTOR[0][2]), "#0");
+ harness.fail("#0 - SHOULD have caused a Key too short exception but didn't");
+ }
+ catch (InvalidKeyException x)
+ {
+ harness.check(true, "#0");
+ }
+
+ for (int i = 1; i < TEST_VECTOR.length; i++)
+ try
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TEST_VECTOR[i][0]);
+ mac.init(attr);
+ mac.update(TEST_VECTOR[i][1], 0, TEST_VECTOR[i][1].length);
+ harness.check(Arrays.equals(mac.digest(), TEST_VECTOR[i][2]), "#" + i);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("#" + i + " - " + String.valueOf(x));
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfMacFactory.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfMacFactory.java
new file mode 100644
index 00000000..e241bcc9
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfMacFactory.java
@@ -0,0 +1,60 @@
+/* TestOfMacFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.MacFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance test for the {@link MacFactory} implementation.
+ */
+public class TestOfMacFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfMacFactory");
+ String mac;
+ IMac algorithm;
+ for (Iterator it = MacFactory.getNames().iterator(); it.hasNext();)
+ {
+ mac = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = MacFactory.getInstance(mac);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(mac) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfMacFactory.getInstance(" + String.valueOf(mac)
+ + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfOMAC.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfOMAC.java
new file mode 100644
index 00000000..8a32da12
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfOMAC.java
@@ -0,0 +1,176 @@
+/* TestOfOMAC.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.MacFactory;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+public class TestOfOMAC implements Testlet
+{
+ // (key, message, tag)
+ public static final byte[][][] TESTS1 = new byte[][][] {
+ new byte[][] {
+ Util.toBytesFromString("2b7e151628aed2a6abf7158809cf4f3c"),
+ new byte[0],
+ Util.toBytesFromString("bb1d6929e95937287fa37d129b756746") },
+ new byte[][] {
+ Util.toBytesFromString("2b7e151628aed2a6abf7158809cf4f3c"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"),
+ Util.toBytesFromString("070a16b46b4d4144f79bdd9dd04a287c") },
+ new byte[][] {
+ Util.toBytesFromString("2b7e151628aed2a6abf7158809cf4f3c"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411"),
+ Util.toBytesFromString("dfa66747de9ae63030ca32611497c827") },
+ new byte[][] {
+ Util.toBytesFromString("2b7e151628aed2a6abf7158809cf4f3c"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411e5fbc1191a0a52ef"
+ + "f69f2445df4f9b17ad2b417be66c3710"),
+ Util.toBytesFromString("51f0bebf7e3b9d92fc49741779363cfe") } };
+
+ public static final byte[][][] TESTS2 = new byte[][][] {
+ new byte[][] {
+ Util.toBytesFromString("8e73b0f7da0e6452c810f32b809079e5"
+ + "62f8ead2522c6b7b"),
+ new byte[0],
+ Util.toBytesFromString("d17ddf46adaacde531cac483de7a9367") },
+ new byte[][] {
+ Util.toBytesFromString("8e73b0f7da0e6452c810f32b809079e5"
+ + "62f8ead2522c6b7b"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"),
+ Util.toBytesFromString("9e99a7bf31e710900662f65e617c5184") },
+ new byte[][] {
+ Util.toBytesFromString("8e73b0f7da0e6452c810f32b809079e5"
+ + "62f8ead2522c6b7b"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411"),
+ Util.toBytesFromString("8a1de5be2eb31aad089a82e6ee908b0e") },
+ new byte[][] {
+ Util.toBytesFromString("8e73b0f7da0e6452c810f32b809079e5"
+ + "62f8ead2522c6b7b"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411e5fbc1191a0a52ef"
+ + "f69f2445df4f9b17ad2b417be66c3710"),
+ Util.toBytesFromString("a1d5df0eed790f794d77589659f39a11") } };
+
+ public static final byte[][][] TESTS3 = new byte[][][] {
+ new byte[][] {
+ Util.toBytesFromString("603deb1015ca71be2b73aef0857d7781"
+ + "1f352c073b6108d72d9810a30914dff4"),
+ new byte[0],
+ Util.toBytesFromString("028962f61b7bf89efc6b551f4667d983") },
+ new byte[][] {
+ Util.toBytesFromString("603deb1015ca71be2b73aef0857d7781"
+ + "1f352c073b6108d72d9810a30914dff4"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"),
+ Util.toBytesFromString("28a7023f452e8f82bd4bf28d8c37c35c") },
+ new byte[][] {
+ Util.toBytesFromString("603deb1015ca71be2b73aef0857d7781"
+ + "1f352c073b6108d72d9810a30914dff4"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411"),
+ Util.toBytesFromString("aaf3d8f1de5640c232f5b169b9c911e6") },
+ new byte[][] {
+ Util.toBytesFromString("603deb1015ca71be2b73aef0857d7781"
+ + "1f352c073b6108d72d9810a30914dff4"),
+ Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a"
+ + "ae2d8a571e03ac9c9eb76fac45af8e51"
+ + "30c81c46a35ce411e5fbc1191a0a52ef"
+ + "f69f2445df4f9b17ad2b417be66c3710"),
+ Util.toBytesFromString("e1992190549f6ed5696a2c056c315410") } };
+
+ public void test(TestHarness harness)
+ {
+ IMac mac = MacFactory.getInstance(Registry.OMAC_PREFIX
+ + Registry.AES_CIPHER);
+ harness.checkPoint("OMAC/AES-128");
+ HashMap attr = new HashMap();
+ for (int i = 0; i < TESTS1.length; i++)
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TESTS1[i][0]);
+ try
+ {
+ mac.init(attr);
+ mac.update(TESTS1[i][1], 0, TESTS1[i][1].length);
+ byte[] tag = mac.digest();
+ harness.check(Arrays.equals(TESTS1[i][2], tag));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+
+ harness.checkPoint("OMAC/AES-192");
+ for (int i = 0; i < TESTS2.length; i++)
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TESTS2[i][0]);
+ try
+ {
+ mac.init(attr);
+ mac.update(TESTS2[i][1], 0, TESTS2[i][1].length);
+ byte[] tag = mac.digest();
+ harness.check(Arrays.equals(TESTS2[i][2], tag));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+
+ harness.checkPoint("OMAC/AES-256");
+ for (int i = 0; i < TESTS3.length; i++)
+ {
+ attr.put(IMac.MAC_KEY_MATERIAL, TESTS3[i][0]);
+ try
+ {
+ mac.init(attr);
+ mac.update(TESTS3[i][1], 0, TESTS3[i][1].length);
+ byte[] tag = mac.digest();
+ harness.check(Arrays.equals(TESTS3[i][2], tag));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java b/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java
new file mode 100644
index 00000000..5a565afc
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mac/TestOfTMMH16.java
@@ -0,0 +1,179 @@
+/* TestOfTMMH16.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mac;
+
+import gnu.java.security.prng.BasePRNG;
+import gnu.java.security.prng.IRandom;
+import gnu.java.security.prng.LimitReachedException;
+import gnu.javax.crypto.mac.IMac;
+import gnu.javax.crypto.mac.TMMH16;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance test for the {@link TMMH16} implementation.
+ */
+public class TestOfTMMH16 implements Testlet
+{
+ private IRandom keystream;
+
+ private byte[] output, message, result;
+
+ private IMac mac;
+
+ private HashMap attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTMMH16");
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 2
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba, 0xbe, 0xba, 0xde }
+ output: { 0x9d, 0x6a }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0x9d, (byte) 0x6a };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(2));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba,
+ (byte) 0xbe, (byte) 0xba, (byte) 0xde };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector1");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector1");
+ }
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 2
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba }
+ output: { 0xc8, 0x8e }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0xc8, (byte) 0x8e };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(2));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector2");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector2");
+ }
+
+ /*
+ KEY_LENGTH: 10
+ TAG_LENGTH: 4
+ key: { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc }
+ message: { 0xca, 0xfe, 0xba, 0xbe, 0xba, 0xde }
+ output: { 0x9d, 0x6a, 0xc0, 0xd3 }
+ */
+ try
+ {
+ attributes.clear();
+ keystream = new DummyKeystream();
+ keystream.init(null);
+
+ output = new byte[] { (byte) 0x9d, (byte) 0x6a, (byte) 0xc0,
+ (byte) 0xd3 };
+ mac = new TMMH16();
+ attributes.put(TMMH16.KEYSTREAM, keystream);
+ attributes.put(TMMH16.TAG_LENGTH, new Integer(4));
+ mac.init(attributes);
+ message = new byte[] { (byte) 0xca, (byte) 0xfe, (byte) 0xba,
+ (byte) 0xbe, (byte) 0xba, (byte) 0xde };
+ for (int i = 0; i < message.length; i++)
+ {
+ mac.update(message[i]);
+ }
+ result = mac.digest();
+ harness.check(Arrays.equals(result, output), "testVector3");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTMMH16.testVector3");
+ }
+ }
+
+ class DummyKeystream extends BasePRNG
+ {
+ DummyKeystream()
+ {
+ super("???");
+ }
+
+ public Object clone()
+ {
+ return null;
+ }
+
+ public void setup(Map attributes)
+ {
+ }
+
+ public void fillBlock() throws LimitReachedException
+ {
+ buffer = new byte[] {
+ (byte) 0x01, (byte) 0x23, (byte) 0x45, (byte) 0x67,
+ (byte) 0x89, (byte) 0xab, (byte) 0xcd, (byte) 0xef,
+ (byte) 0xfe, (byte) 0xdc };
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/CVS/Entries b/gnu/testlet/gnu/javax/crypto/mode/CVS/Entries
new file mode 100644
index 00000000..d9c88fe7
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/CVS/Entries
@@ -0,0 +1,7 @@
+/TestOfCBC.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfCFB.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfEAX.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfECB.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfModeFactory.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfOFB.java/1.1/Sun Jan 29 01:21:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/mode/CVS/Repository b/gnu/testlet/gnu/javax/crypto/mode/CVS/Repository
new file mode 100644
index 00000000..298c2f1f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/mode
diff --git a/gnu/testlet/gnu/javax/crypto/mode/CVS/Root b/gnu/testlet/gnu/javax/crypto/mode/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfCBC.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfCBC.java
new file mode 100644
index 00000000..d222d66e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfCBC.java
@@ -0,0 +1,259 @@
+/* TestOfCBC.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance tests of the CBC implementation.
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li><a href="http://csrc.nist.gov/encryption/modes/Recommendation/Modes01.pdf">
+ * Recommendation for Block Cipher Modes of Operation Methods and Techniques</a>,
+ * Morris Dworkin.</li>
+ * </ol>
+ */
+public class TestOfCBC implements Testlet
+{
+ private byte[] key, iv, pt1, ct1, pt2, ct2, pt3, ct3, pt4, ct4, pt, ct;
+
+ private IMode mode;
+
+ private Map attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfCBC.testAES128");
+ /** F.2.1 CBC-AES-Encrypt and F.2.2 CBC-AES-Decrypt. */
+ key = Util.toBytesFromUnicode("\u2b7e\u1516\u28ae\ud2a6\uabf7\u1588\u09cf\u4f3c");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\u7649\uabac\u8119\ub246\ucee9\u8e9b\u12e9\u197d");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u5086\ucb9b\u5072\u19ee\u95db\u113a\u9176\u78b2");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u73be\ud6b8\ue3c1\u743b\u7116\ue69e\u2222\u9516");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u3ff1\ucaa1\u681f\uac09\u120e\uca30\u7586\ue1a7");
+
+ pt = new byte[16];
+ ct = new byte[16];
+ mode = ModeFactory.getInstance(Registry.CBC_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CBC-AES128-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CBC-AES128-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CBC-AES128-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CBC-AES128-Encrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CBC-AES128-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CBC-AES128-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CBC-AES128-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CBC-AES128-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCBC.testAES128");
+ }
+
+ harness.checkPoint("TestOfCBC.testAES192");
+ /** F.2.3 CBC-AES192-Encrypt and F.2.4 CBC-AES192-Decrypt. */
+ key = Util.toBytesFromUnicode("\u8e73\ub0f7\uda0e\u6452\uc810\uf32b\u8090\u79e5"
+ + "\u62f8\uead2\u522c\u6b7b");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\u4f02\u1db2\u43bc\u633d\u7178\u183a\u9fa0\u71e8");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\ub4d9\uada9\uad7d\uedf4\ue5e7\u3876\u3f69\u145a");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u571b\u2420\u12fb\u7ae0\u7fa9\ubaac\u3df1\u02e0");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u08b0\ue279\u8859\u8881\ud920\ua9e6\u4f56\u15cd");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.CBC_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CBC-AES192-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CBC-AES192-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CBC-AES192-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CBC-AES192-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CBC-AES192-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CBC-AES192-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CBC-AES192-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CBC-AES192-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCBC.testAES192");
+ }
+
+ harness.checkPoint("TestOfCBC.testAES256");
+ /** F.2.5 CBC-AES256-Encrypt and F.2.6 CBC-AES256-Decrypt. */
+ key = Util.toBytesFromUnicode("\u603d\ueb10\u15ca\u71be\u2b73\uaef0\u857d\u7781"
+ + "\u1f35\u2c07\u3b61\u08d7\u2d98\u10a3\u0914\udff4");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\uf58c\u4c04\ud6e5\uf1ba\u779e\uabfb\u5f7b\ufbd6");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u9cfc\u4e96\u7edb\u808d\u679f\u777b\uc670\u2c7d");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u39f2\u3369\ua9d9\ubacf\ua530\ue263\u0423\u1461");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\ub2eb\u05e2\uc39b\ue9fc\uda6c\u1907\u8c6a\u9d1b");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.CBC_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CBC-AES256-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CBC-AES256-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CBC-AES256-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CBC-AES256-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CBC-AES256-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CBC-AES256-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CBC-AES256-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CBC-AES256-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCBC.testAES256");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfCFB.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfCFB.java
new file mode 100644
index 00000000..bd6c7bb3
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfCFB.java
@@ -0,0 +1,850 @@
+/* TestOfCFB.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance tests of the CFB implementation.
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li><a href="http://csrc.nist.gov/encryption/modes/Recommendation/Modes01.pdf">
+ * Recommendation for Block Cipher Modes of Operation Methods and Techniques</a>,
+ * Morris Dworkin.</li>
+ * </ol>
+ */
+public class TestOfCFB implements Testlet
+{
+ private byte[] key, iv, pt, ct, pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9,
+ pt10, pt11, pt12, pt13, pt14, pt15, pt16, pt17, pt18, ct1, ct2, ct3, ct4,
+ ct5, ct6, ct7, ct8, ct9, ct10, ct11, ct12, ct13, ct14, ct15, ct16, ct17,
+ ct18;
+
+ private IMode mode;
+
+ private Map attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ // CFB1 mode is omitted, since it is not supported in GNU Crypto.
+
+ harness.checkPoint("TestOfCFB8.testAES128");
+ /* F.3.7 CFB8-AES128-Encrypt and F.3.8 CFB8-AES-Decrypt. */
+ key = Util.toBytesFromUnicode("\u2b7e\u1516\u28ae\ud2a6\uabf7\u1588\u09cf\u4f3c");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromString("6b");
+ ct1 = Util.toBytesFromString("3b");
+
+ pt2 = Util.toBytesFromString("c1");
+ ct2 = Util.toBytesFromString("79");
+
+ pt3 = Util.toBytesFromString("be");
+ ct3 = Util.toBytesFromString("42");
+
+ pt4 = Util.toBytesFromString("e2");
+ ct4 = Util.toBytesFromString("4c");
+
+ pt5 = Util.toBytesFromString("2e");
+ ct5 = Util.toBytesFromString("9c");
+
+ pt6 = Util.toBytesFromString("40");
+ ct6 = Util.toBytesFromString("0d");
+
+ pt7 = Util.toBytesFromString("9f");
+ ct7 = Util.toBytesFromString("d4");
+
+ pt8 = Util.toBytesFromString("96");
+ ct8 = Util.toBytesFromString("36");
+
+ pt9 = Util.toBytesFromString("e9");
+ ct9 = Util.toBytesFromString("ba");
+
+ pt10 = Util.toBytesFromString("3d");
+ ct10 = Util.toBytesFromString("ce");
+
+ pt11 = Util.toBytesFromString("7e");
+ ct11 = Util.toBytesFromString("9e");
+
+ pt12 = Util.toBytesFromString("11");
+ ct12 = Util.toBytesFromString("0e");
+
+ pt13 = Util.toBytesFromString("73");
+ ct13 = Util.toBytesFromString("d4");
+
+ pt14 = Util.toBytesFromString("93");
+ ct14 = Util.toBytesFromString("58");
+
+ pt15 = Util.toBytesFromString("17");
+ ct15 = Util.toBytesFromString("6a");
+
+ pt16 = Util.toBytesFromString("2a");
+ ct16 = Util.toBytesFromString("4f");
+
+ pt17 = Util.toBytesFromString("ae");
+ ct17 = Util.toBytesFromString("32");
+
+ pt18 = Util.toBytesFromString("2d");
+ ct18 = Util.toBytesFromString("b9");
+
+ pt = new byte[1];
+ ct = new byte[1];
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(1));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB8-AES128-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB8-AES128-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB8-AES128-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB8-AES128-Encrypt block #4");
+
+ mode.update(pt5, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct5), "CFB8-AES128-Encrypt block #5");
+
+ mode.update(pt6, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct6), "CFB8-AES128-Encrypt block #6");
+
+ mode.update(pt7, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct7), "CFB8-AES128-Encrypt block #7");
+
+ mode.update(pt8, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct8), "CFB8-AES128-Encrypt block #8");
+
+ mode.update(pt9, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct9), "CFB8-AES128-Encrypt block #9");
+
+ mode.update(pt10, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct10), "CFB8-AES128-Encrypt block #10");
+
+ mode.update(pt11, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct11), "CFB8-AES128-Encrypt block #11");
+
+ mode.update(pt12, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct12), "CFB8-AES128-Encrypt block #12");
+
+ mode.update(pt13, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct13), "CFB8-AES128-Encrypt block #13");
+
+ mode.update(pt14, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct14), "CFB8-AES128-Encrypt block #14");
+
+ mode.update(pt15, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct15), "CFB8-AES128-Encrypt block #15");
+
+ mode.update(pt16, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct16), "CFB8-AES128-Encrypt block #16");
+
+ mode.update(pt17, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct17), "CFB8-AES128-Encrypt block #17");
+
+ mode.update(pt18, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct18), "CFB8-AES128-Encrypt block #18");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB8-AES128-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB8-AES128-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB8-AES128-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB8-AES128-Decrypt block #4");
+
+ mode.update(ct5, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt5), "CFB8-AES128-Decrypt block #5");
+
+ mode.update(ct6, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt6), "CFB8-AES128-Decrypt block #6");
+
+ mode.update(ct7, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt7), "CFB8-AES128-Decrypt block #7");
+
+ mode.update(ct8, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt8), "CFB8-AES128-Decrypt block #8");
+
+ mode.update(ct9, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt9), "CFB8-AES128-Decrypt block #9");
+
+ mode.update(ct10, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt10), "CFB8-AES128-Decrypt block #10");
+
+ mode.update(ct11, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt11), "CFB8-AES128-Decrypt block #11");
+
+ mode.update(ct12, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt12), "CFB8-AES128-Decrypt block #12");
+
+ mode.update(ct13, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt13), "CFB8-AES128-Decrypt block #13");
+
+ mode.update(ct14, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt14), "CFB8-AES128-Decrypt block #14");
+
+ mode.update(ct15, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt15), "CFB8-AES128-Decrypt block #15");
+
+ mode.update(ct16, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt16), "CFB8-AES128-Decrypt block #16");
+
+ mode.update(ct17, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt17), "CFB8-AES128-Decrypt block #17");
+
+ mode.update(ct18, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt18), "CFB8-AES128-Decrypt block #18");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB8.testAES128");
+ }
+
+ harness.checkPoint("TestOfCFB8.testAES192");
+ /** F.3.9 CFB8-AES192-Encrypt and F.3.10 CFB8-AES192-Decrypt. */
+ key = Util.toBytesFromUnicode("\u8e73\ub0f7\uda0e\u6452\uc810\uf32b\u8090\u79e5"
+ + "\u62f8\uead2\u522c\u6b7b");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromString("6b");
+ ct1 = Util.toBytesFromString("cd");
+
+ pt2 = Util.toBytesFromString("c1");
+ ct2 = Util.toBytesFromString("a2");
+
+ pt3 = Util.toBytesFromString("be");
+ ct3 = Util.toBytesFromString("52");
+
+ pt4 = Util.toBytesFromString("e2");
+ ct4 = Util.toBytesFromString("1e");
+
+ pt5 = Util.toBytesFromString("2e");
+ ct5 = Util.toBytesFromString("f0");
+
+ pt6 = Util.toBytesFromString("40");
+ ct6 = Util.toBytesFromString("a9");
+
+ pt7 = Util.toBytesFromString("9f");
+ ct7 = Util.toBytesFromString("05");
+
+ pt8 = Util.toBytesFromString("96");
+ ct8 = Util.toBytesFromString("ca");
+
+ pt9 = Util.toBytesFromString("e9");
+ ct9 = Util.toBytesFromString("44");
+
+ pt10 = Util.toBytesFromString("3d");
+ ct10 = Util.toBytesFromString("cd");
+
+ pt11 = Util.toBytesFromString("7e");
+ ct11 = Util.toBytesFromString("05");
+
+ pt12 = Util.toBytesFromString("11");
+ ct12 = Util.toBytesFromString("7c");
+
+ pt13 = Util.toBytesFromString("73");
+ ct13 = Util.toBytesFromString("bf");
+
+ pt14 = Util.toBytesFromString("93");
+ ct14 = Util.toBytesFromString("0d");
+
+ pt15 = Util.toBytesFromString("17");
+ ct15 = Util.toBytesFromString("47");
+
+ pt16 = Util.toBytesFromString("2a");
+ ct16 = Util.toBytesFromString("a0");
+
+ pt17 = Util.toBytesFromString("ae");
+ ct17 = Util.toBytesFromString("67");
+
+ pt18 = Util.toBytesFromString("2d");
+ ct18 = Util.toBytesFromString("8a");
+
+ ct = new byte[1];
+ pt = new byte[1];
+
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(1));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB8-AES192-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB8-AES192-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB8-AES192-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB8-AES192-Encrypt block #4");
+
+ mode.update(pt5, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct5), "CFB8-AES192-Encrypt block #5");
+
+ mode.update(pt6, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct6), "CFB8-AES192-Encrypt block #6");
+
+ mode.update(pt7, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct7), "CFB8-AES192-Encrypt block #7");
+
+ mode.update(pt8, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct8), "CFB8-AES192-Encrypt block #8");
+
+ mode.update(pt9, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct9), "CFB8-AES192-Encrypt block #9");
+
+ mode.update(pt10, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct10), "CFB8-AES192-Encrypt block #10");
+
+ mode.update(pt11, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct11), "CFB8-AES192-Encrypt block #11");
+
+ mode.update(pt12, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct12), "CFB8-AES192-Encrypt block #12");
+
+ mode.update(pt13, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct13), "CFB8-AES192-Encrypt block #13");
+
+ mode.update(pt14, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct14), "CFB8-AES192-Encrypt block #14");
+
+ mode.update(pt15, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct15), "CFB8-AES192-Encrypt block #15");
+
+ mode.update(pt16, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct16), "CFB8-AES192-Encrypt block #16");
+
+ mode.update(pt17, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct17), "CFB8-AES192-Encrypt block #17");
+
+ mode.update(pt18, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct18), "CFB8-AES192-Encrypt block #18");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB8-AES192-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB8-AES192-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB8-AES192-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB8-AES192-Decrypt block #4");
+
+ mode.update(ct5, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt5), "CFB8-AES192-Decrypt block #5");
+
+ mode.update(ct6, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt6), "CFB8-AES192-Decrypt block #6");
+
+ mode.update(ct7, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt7), "CFB8-AES192-Decrypt block #7");
+
+ mode.update(ct8, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt8), "CFB8-AES192-Decrypt block #8");
+
+ mode.update(ct9, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt9), "CFB8-AES192-Decrypt block #9");
+
+ mode.update(ct10, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt10), "CFB8-AES192-Decrypt block #10");
+
+ mode.update(ct11, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt11), "CFB8-AES192-Decrypt block #11");
+
+ mode.update(ct12, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt12), "CFB8-AES192-Decrypt block #12");
+
+ mode.update(ct13, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt13), "CFB8-AES192-Decrypt block #13");
+
+ mode.update(ct14, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt14), "CFB8-AES192-Decrypt block #14");
+
+ mode.update(ct15, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt15), "CFB8-AES192-Decrypt block #15");
+
+ mode.update(ct16, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt16), "CFB8-AES192-Decrypt block #16");
+
+ mode.update(ct17, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt17), "CFB8-AES192-Decrypt block #17");
+
+ mode.update(ct18, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt18), "CFB8-AES192-Decrypt block #18");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB8.testAES192");
+ }
+
+ harness.checkPoint("TestOfCFB8.testAES256");
+ /** F.3.11 CFB8-AES256-Encrypt and F.3.12 CFB8-AES256-Decrypt. */
+ key = Util.toBytesFromUnicode("\u603d\ueb10\u15ca\u71be\u2b73\uaef0\u857d\u7781"
+ + "\u1f35\u2c07\u3b61\u08d7\u2d98\u10a3\u0914\udff4");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromString("6b");
+ ct1 = Util.toBytesFromString("dc");
+
+ pt2 = Util.toBytesFromString("c1");
+ ct2 = Util.toBytesFromString("1f");
+
+ pt3 = Util.toBytesFromString("be");
+ ct3 = Util.toBytesFromString("1a");
+
+ pt4 = Util.toBytesFromString("e2");
+ ct4 = Util.toBytesFromString("85");
+
+ pt5 = Util.toBytesFromString("2e");
+ ct5 = Util.toBytesFromString("20");
+
+ pt6 = Util.toBytesFromString("40");
+ ct6 = Util.toBytesFromString("a6");
+
+ pt7 = Util.toBytesFromString("9f");
+ ct7 = Util.toBytesFromString("4d");
+
+ pt8 = Util.toBytesFromString("96");
+ ct8 = Util.toBytesFromString("b5");
+
+ pt9 = Util.toBytesFromString("e9");
+ ct9 = Util.toBytesFromString("5f");
+
+ pt10 = Util.toBytesFromString("3d");
+ ct10 = Util.toBytesFromString("cc");
+
+ pt11 = Util.toBytesFromString("7e");
+ ct11 = Util.toBytesFromString("8a");
+
+ pt12 = Util.toBytesFromString("11");
+ ct12 = Util.toBytesFromString("c5");
+
+ pt13 = Util.toBytesFromString("73");
+ ct13 = Util.toBytesFromString("54");
+
+ pt14 = Util.toBytesFromString("93");
+ ct14 = Util.toBytesFromString("84");
+
+ pt15 = Util.toBytesFromString("17");
+ ct15 = Util.toBytesFromString("4e");
+
+ pt16 = Util.toBytesFromString("2a");
+ ct16 = Util.toBytesFromString("88");
+
+ pt17 = Util.toBytesFromString("ae");
+ ct17 = Util.toBytesFromString("97");
+
+ pt18 = Util.toBytesFromString("2d");
+ ct18 = Util.toBytesFromString("00");
+
+ ct = new byte[1];
+ pt = new byte[1];
+
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(1));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB8-AES256-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB8-AES256-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB8-AES256-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB8-AES256-Encrypt block #4");
+
+ mode.update(pt5, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct5), "CFB8-AES256-Encrypt block #5");
+
+ mode.update(pt6, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct6), "CFB8-AES256-Encrypt block #6");
+
+ mode.update(pt7, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct7), "CFB8-AES256-Encrypt block #7");
+
+ mode.update(pt8, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct8), "CFB8-AES256-Encrypt block #8");
+
+ mode.update(pt9, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct9), "CFB8-AES256-Encrypt block #9");
+
+ mode.update(pt10, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct10), "CFB8-AES256-Encrypt block #10");
+
+ mode.update(pt11, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct11), "CFB8-AES256-Encrypt block #11");
+
+ mode.update(pt12, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct12), "CFB8-AES256-Encrypt block #12");
+
+ mode.update(pt13, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct13), "CFB8-AES256-Encrypt block #13");
+
+ mode.update(pt14, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct14), "CFB8-AES256-Encrypt block #14");
+
+ mode.update(pt15, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct15), "CFB8-AES256-Encrypt block #15");
+
+ mode.update(pt16, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct16), "CFB8-AES256-Encrypt block #16");
+
+ mode.update(pt17, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct17), "CFB8-AES256-Encrypt block #17");
+
+ mode.update(pt18, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct18), "CFB8-AES256-Encrypt block #18");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB8-AES256-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB8-AES256-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB8-AES256-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB8-AES256-Decrypt block #4");
+
+ mode.update(ct5, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt5), "CFB8-AES256-Decrypt block #5");
+
+ mode.update(ct6, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt6), "CFB8-AES256-Decrypt block #6");
+
+ mode.update(ct7, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt7), "CFB8-AES256-Decrypt block #7");
+
+ mode.update(ct8, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt8), "CFB8-AES256-Decrypt block #8");
+
+ mode.update(ct9, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt9), "CFB8-AES256-Decrypt block #9");
+
+ mode.update(ct10, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt10), "CFB8-AES256-Decrypt block #10");
+
+ mode.update(ct11, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt11), "CFB8-AES256-Decrypt block #11");
+
+ mode.update(ct12, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt12), "CFB8-AES256-Decrypt block #12");
+
+ mode.update(ct13, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt13), "CFB8-AES256-Decrypt block #13");
+
+ mode.update(ct14, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt14), "CFB8-AES256-Decrypt block #14");
+
+ mode.update(ct15, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt15), "CFB8-AES256-Decrypt block #15");
+
+ mode.update(ct16, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt16), "CFB8-AES256-Decrypt block #16");
+
+ mode.update(ct17, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt17), "CFB8-AES256-Decrypt block #17");
+
+ mode.update(ct18, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt18), "CFB8-AES256-Decrypt block #18");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB8.testAES256");
+ }
+
+ harness.checkPoint("TestOfCFB128.testAES128");
+ /** F.3.13 CFB128-AES128-Encrypt and F.3.14 CFB128-AES128-Decrypt. */
+ key = Util.toBytesFromString("2b7e151628aed2a6abf7158809cf4f3c");
+ iv = Util.toBytesFromString("000102030405060708090a0b0c0d0e0f");
+
+ pt1 = Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a");
+ ct1 = Util.toBytesFromString("3b3fd92eb72dad20333449f8e83cfb4a");
+
+ pt2 = Util.toBytesFromString("ae2d8a571e03ac9c9eb76fac45af8e51");
+ ct2 = Util.toBytesFromString("c8a64537a0b3a93fcde3cdad9f1ce58b");
+
+ pt3 = Util.toBytesFromString("30c81c46a35ce411e5fbc1191a0a52ef");
+ ct3 = Util.toBytesFromString("26751f67a3cbb140b1808cf187a4f4df");
+
+ pt4 = Util.toBytesFromString("f69f2445df4f9b17ad2b417be66c3710");
+ ct4 = Util.toBytesFromString("c04b05357c5d1c0eeac4c66f9ff7f2e6");
+
+ pt = new byte[16];
+ ct = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(16));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ......................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB128-AES128-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB128-AES128-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB128-AES128-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB128-AES128-Encrypt block #4");
+
+ // decryption ......................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB128-AES128-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB128-AES128-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB128-AES128-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB128-AES128-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB128.testAES128");
+ }
+
+ harness.checkPoint("TestOfCFB128.testAES192");
+ /** F.3.15 CFB128-AES192-Encrypt and F.3.16 CFB128-AES192-Decrypt. */
+ key = Util.toBytesFromString("8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b");
+ iv = Util.toBytesFromString("000102030405060708090a0b0c0d0e0f");
+
+ pt1 = Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a");
+ ct1 = Util.toBytesFromString("cdc80d6fddf18cab34c25909c99a4174");
+
+ pt2 = Util.toBytesFromString("ae2d8a571e03ac9c9eb76fac45af8e51");
+ ct2 = Util.toBytesFromString("67ce7f7f81173621961a2b70171d3d7a");
+
+ pt3 = Util.toBytesFromString("30c81c46a35ce411e5fbc1191a0a52ef");
+ ct3 = Util.toBytesFromString("2e1e8a1dd59b88b1c8e60fed1efac4c9");
+
+ pt4 = Util.toBytesFromString("f69f2445df4f9b17ad2b417be66c3710");
+ ct4 = Util.toBytesFromString("c05f9f9ca9834fa042ae8fba584b09ff");
+
+ pt = new byte[16];
+ ct = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(16));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ......................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB128-AES192-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB128-AES192-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB128-AES192-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB128-AES192-Encrypt block #4");
+
+ // decryption ......................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB128-AES192-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB128-AES192-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB128-AES192-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB128-AES192-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB128.testAES192");
+ }
+
+ harness.checkPoint("TestOfCFB128.testAES256");
+ /** F.3.17 CFB128-AES256-Encrypt and F.3.18 CFB128-AES256-Decrypt. */
+ key = Util.toBytesFromString("603deb1015ca71be2b73aef0857d7781"
+ + "1f352c073b6108d72d9810a30914dff4");
+ iv = Util.toBytesFromString("000102030405060708090a0b0c0d0e0f");
+
+ pt1 = Util.toBytesFromString("6bc1bee22e409f96e93d7e117393172a");
+ ct1 = Util.toBytesFromString("dc7e84bfda79164b7ecd8486985d3860");
+
+ pt2 = Util.toBytesFromString("ae2d8a571e03ac9c9eb76fac45af8e51");
+ ct2 = Util.toBytesFromString("39ffed143b28b1c832113c6331e5407b");
+
+ pt3 = Util.toBytesFromString("30c81c46a35ce411e5fbc1191a0a52ef");
+ ct3 = Util.toBytesFromString("df10132415e54b92a13ed0a8267ae2f9");
+
+ pt4 = Util.toBytesFromString("f69f2445df4f9b17ad2b417be66c3710");
+ ct4 = Util.toBytesFromString("75a385741ab9cef82031623d55b1e471");
+
+ pt = new byte[16];
+ ct = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.CFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.MODE_BLOCK_SIZE, new Integer(16));
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ......................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "CFB128-AES256-Encrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "CFB128-AES256-Encrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "CFB128-AES256-Encrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "CFB128-AES256-Encrypt block #4");
+
+ // decryption ......................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "CFB128-AES256-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "CFB128-AES256-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "CFB128-AES256-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "CFB128-AES256-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfCFB128.testAES256");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfEAX.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfEAX.java
new file mode 100644
index 00000000..c0374953
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfEAX.java
@@ -0,0 +1,163 @@
+/* TestOfEAX.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.cipher.CipherFactory;
+import gnu.javax.crypto.mode.EAX;
+import gnu.javax.crypto.mode.IAuthenticatedMode;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+public class TestOfEAX implements Testlet
+{
+ // (key, iv, msg, header, ciphertest, tag)
+ private static byte[][][] TESTS = new byte[][][] {
+ new byte[][] {
+ Util.toBytesFromString("233952DEE4D5ED5F9B9C6D6FF80FF478"),
+ Util.toBytesFromString("62EC67F9C3A4A407FCB2A8C49031A8B3"),
+ new byte[0],
+ Util.toBytesFromString("6BFB914FD07EAE6B"),
+ new byte[0],
+ Util.toBytesFromString("E037830E8389F27B025A2D6527E79D01") },
+
+ new byte[][] {
+ Util.toBytesFromString("91945D3F4DCBEE0BF45EF52255F095A4"),
+ Util.toBytesFromString("BECAF043B0A23D843194BA972C66DEBD"),
+ Util.toBytesFromString("F7FB"),
+ Util.toBytesFromString("FA3BFD4806EB53FA"),
+ Util.toBytesFromString("19DD"),
+ Util.toBytesFromString("5C4C9331049D0BDAB0277408F67967E5") },
+
+ new byte[][] {
+ Util.toBytesFromString("01F74AD64077F2E704C0F60ADA3DD523"),
+ Util.toBytesFromString("70C3DB4F0D26368400A10ED05D2BFF5E"),
+ Util.toBytesFromString("1A47CB4933"),
+ Util.toBytesFromString("234A3463C1264AC6"),
+ Util.toBytesFromString("D851D5BAE0"),
+ Util.toBytesFromString("3A59F238A23E39199DC9266626C40F80") },
+
+ new byte[][] {
+ Util.toBytesFromString("D07CF6CBB7F313BDDE66B727AFD3C5E8"),
+ Util.toBytesFromString("8408DFFF3C1A2B1292DC199E46B7D617"),
+ Util.toBytesFromString("481C9E39B1"),
+ Util.toBytesFromString("33CCE2EABFF5A79D"),
+ Util.toBytesFromString("632A9D131A"),
+ Util.toBytesFromString("D4C168A4225D8E1FF755939974A7BEDE") },
+
+ new byte[][] {
+ Util.toBytesFromString("35B6D0580005BBC12B0587124557D2C2"),
+ Util.toBytesFromString("FDB6B06676EEDC5C61D74276E1F8E816"),
+ Util.toBytesFromString("40D0C07DA5E4"),
+ Util.toBytesFromString("AEB96EAEBE2970E9"),
+ Util.toBytesFromString("071DFE16C675"),
+ Util.toBytesFromString("CB0677E536F73AFE6A14B74EE49844DD") },
+
+ new byte[][] {
+ Util.toBytesFromString("BD8E6E11475E60B268784C38C62FEB22"),
+ Util.toBytesFromString("6EAC5C93072D8E8513F750935E46DA1B"),
+ Util.toBytesFromString("4DE3B35C3FC039245BD1FB7D"),
+ Util.toBytesFromString("D4482D1CA78DCE0F"),
+ Util.toBytesFromString("835BB4F15D743E350E728414"),
+ Util.toBytesFromString("ABB8644FD6CCB86947C5E10590210A4F") },
+
+ new byte[][] {
+ Util.toBytesFromString("7C77D6E813BED5AC98BAA417477A2E7D"),
+ Util.toBytesFromString("1A8C98DCD73D38393B2BF1569DEEFC19"),
+ Util.toBytesFromString("8B0A79306C9CE7ED99DAE4F87F8DD61636"),
+ Util.toBytesFromString("65D2017990D62528"),
+ Util.toBytesFromString("02083E3979DA014812F59F11D52630DA30"),
+ Util.toBytesFromString("137327D10649B0AA6E1C181DB617D7F2") },
+
+ new byte[][] {
+ Util.toBytesFromString("5FFF20CAFAB119CA2FC73549E20F5B0D"),
+ Util.toBytesFromString("DDE59B97D722156D4D9AFF2BC7559826"),
+ Util.toBytesFromString("1BDA122BCE8A8DBAF1877D962B8592DD2D56"),
+ Util.toBytesFromString("54B9F04E6A09189A"),
+ Util.toBytesFromString("2EC47B2C4954A489AFC7BA4897EDCDAE8CC3"),
+ Util.toBytesFromString("3B60450599BD02C96382902AEF7F832A") },
+
+ new byte[][] {
+ Util.toBytesFromString("A4A4782BCFFD3EC5E7EF6D8C34A56123"),
+ Util.toBytesFromString("B781FCF2F75FA5A8DE97A9CA48E522EC"),
+ Util.toBytesFromString("6CF36720872B8513F6EAB1A8A44438D5EF11"),
+ Util.toBytesFromString("899A175897561D7E"),
+ Util.toBytesFromString("0DE18FD0FDD91E7AF19F1D8EE8733938B1E8"),
+ Util.toBytesFromString("E7F6D2231618102FDB7FE55FF1991700") },
+
+ new byte[][] {
+ Util.toBytesFromString("8395FCF1E95BEBD697BD010BC766AAC3"),
+ Util.toBytesFromString("22E7ADD93CFC6393C57EC0B3C17D6B44"),
+ Util.toBytesFromString("CA40D7446E545FFAED3BD12A740A659FFBBB3CEAB7"),
+ Util.toBytesFromString("126735FCC320D25A"),
+ Util.toBytesFromString("CB8920F87A6C75CFF39627B56E3ED197C552D295A7"),
+ Util.toBytesFromString("CFC46AFC253B4652B1AF3795B124AB6E") } };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("EAX/AES-128");
+ IAuthenticatedMode mode = (IAuthenticatedMode)
+ // ModeFactory.getInstance(Registry.EAX_MODE, Registry.AES_CIPHER, 16);
+ new EAX(CipherFactory.getInstance(Registry.AES_CIPHER), 16);
+ HashMap attr = new HashMap();
+ attr.put(IAuthenticatedMode.MODE_BLOCK_SIZE, new Integer(1));
+ for (int i = 0; i < TESTS.length; i++)
+ {
+ attr.put(IAuthenticatedMode.KEY_MATERIAL, TESTS[i][0]);
+ attr.put(IAuthenticatedMode.IV, TESTS[i][1]);
+ try
+ {
+ mode.reset();
+ mode.init(attr);
+ mode.update(TESTS[i][3], 0, TESTS[i][3].length);
+ byte[] ct = new byte[TESTS[i][2].length];
+ for (int j = 0; j < TESTS[i][2].length; j += mode.currentBlockSize())
+ {
+ mode.update(TESTS[i][2], j, ct, j);
+ }
+ byte[] tag = mode.digest();
+ harness.verbose(" KEY: " + Util.toString(TESTS[i][0]));
+ harness.verbose(" IV: " + Util.toString(TESTS[i][1]));
+ harness.verbose(" MSG: " + Util.toString(TESTS[i][2]));
+ harness.verbose(" HDR: " + Util.toString(TESTS[i][3]));
+ harness.verbose(" ECT: " + Util.toString(TESTS[i][4]));
+ harness.verbose(" CT: " + Util.toString(ct));
+ harness.verbose("ETAG: " + Util.toString(TESTS[i][5]));
+ harness.verbose(" TAG: " + Util.toString(tag));
+ harness.check(Arrays.equals(TESTS[i][4], ct));
+ harness.check(Arrays.equals(TESTS[i][5], tag));
+ }
+ catch (Exception x)
+ {
+ harness.fail(x.toString());
+ harness.debug(x);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfECB.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfECB.java
new file mode 100644
index 00000000..a29706a8
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfECB.java
@@ -0,0 +1,254 @@
+/* TestOfECB.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance tests of the ECB implementation.
+ *
+ * <p>References:</p>
+ * <ol>
+ * <li><a href="http://csrc.nist.gov/encryption/modes/Recommendation/Modes01.pdf">
+ * Recommendation for Block Cipher Modes of Operation Methods and Techniques</a>,
+ * Morris Dworkin.</li>
+ * </ol>
+ */
+public class TestOfECB implements Testlet
+{
+ private byte[] key, pt1, ct1, pt2, ct2, pt3, ct3, pt4, ct4, pt, ct;
+
+ private IMode mode;
+
+ private Map attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfECB.testAES128");
+ /** F.1.1 ECB-AES128-Encrypt and F.1.2 ECB-AES128-Decrypt. */
+ key = Util.toBytesFromUnicode("\u2b7e\u1516\u28ae\ud2a6\uabf7\u1588\u09cf\u4f3c");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\u3ad7\u7bb4\u0d7a\u3660\ua89e\ucaf3\u2466\uef97");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\uf5d3\ud585\u03b9\u699d\ue785\u895a\u96fd\ubaaf");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u43b1\ucd7f\u598e\uce23\u881b\u00e3\ued03\u0688");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u7b0c\u785e\u27e8\uad3f\u8223\u2071\u0472\u5dd4");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.ECB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "ECB-AES128-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "ECB-AES128-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "ECB-AES128-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "ECB-AES128-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "ECB-AES128-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "ECB-AES128-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "ECB-AES128-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "ECB-AES128-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfECB.testAES128");
+ }
+
+ harness.checkPoint("TestOfECB.testAES192");
+ /** F.1.3 ECB-AES192-Encrypt and F.1.4 ECB-AES192-Decrypt. */
+ key = Util.toBytesFromUnicode("\u8e73\ub0f7\uda0e\u6452\uc810\uf32b\u8090\u79e5"
+ + "\u62f8\uead2\u522c\u6b7b");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\ubd33\u4f1d\u6e45\uf25f\uf712\ua214\u571f\ua5cc");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u9741\u0484\u6d0a\ud3ad\u7734\uecb3\uecee\u4eef");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\uef7a\ufd22\u70e2\ue60a\udce0\uba2f\uace6\u444e");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u9a4b\u41ba\u738d\u6c72\ufb16\u6916\u03c1\u8e0e");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.ECB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "ECB-AES192-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "ECB-AES192-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "ECB-AES192-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "ECB-AES192-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "ECB-AES192-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "ECB-AES192-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "ECB-AES192-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "ECB-AES192-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfECB.testAES192");
+ }
+
+ harness.checkPoint("TestOfECB.testAES256");
+ /** F.1.5 ECB-AES256-Encrypt and F.1.6 ECB-AES256-Decrypt. */
+ key = Util.toBytesFromUnicode("\u603d\ueb10\u15ca\u71be\u2b73\uaef0\u857d\u7781"
+ + "\u1f35\u2c07\u3b61\u08d7\u2d98\u10a3\u0914\udff4");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\uf3ee\ud1bd\ub5d2\ua03c\u064b\u5a7e\u3db1\u81f8");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u591c\ucb10\ud410\ued26\udc5b\ua74a\u3136\u2870");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\ub6ed\u21b9\u9ca6\uf4f9\uf153\ue7b1\ubeaf\ued1d");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u2330\u4b7a\u39f9\uf3ff\u067d\u8d8f\u9e24\uecc7");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.ECB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "ECB-AES256-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "ECB-AES256-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "ECB-AES256-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "ECB-AES256-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "ECB-AES256-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "ECB-AES256-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "ECB-AES256-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "ECB-AES256-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfECB.testAES256");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfModeFactory.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfModeFactory.java
new file mode 100644
index 00000000..772559ec
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfModeFactory.java
@@ -0,0 +1,78 @@
+/* TestOfModeFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.javax.crypto.cipher.CipherFactory;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.javax.crypto.mode.IMode;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the ModeFactory implementation.
+ */
+public class TestOfModeFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfModeFactory");
+ String mode, cipher;
+ int bs;
+ IMode algorithm;
+ for (Iterator mit = ModeFactory.getNames().iterator(); mit.hasNext();)
+ {
+ mode = (String) mit.next();
+ for (Iterator cit = CipherFactory.getNames().iterator(); cit.hasNext();)
+ {
+ cipher = (String) cit.next();
+ IBlockCipher ubc = CipherFactory.getInstance(cipher);
+ for (Iterator cbs = ubc.blockSizes(); cbs.hasNext();)
+ {
+ bs = ((Integer) cbs.next()).intValue();
+ try
+ {
+ algorithm = ModeFactory.getInstance(mode, ubc, bs);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(mode)
+ + ", "
+ + String.valueOf(cipher)
+ + ", "
+ + String.valueOf(8 * bs)
+ + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfModeFactory.getInstance("
+ + String.valueOf(mode) + ", "
+ + String.valueOf(cipher) + ", "
+ + String.valueOf(8 * bs) + ")");
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/mode/TestOfOFB.java b/gnu/testlet/gnu/javax/crypto/mode/TestOfOFB.java
new file mode 100644
index 00000000..630ccad5
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/mode/TestOfOFB.java
@@ -0,0 +1,262 @@
+/* TestOfOFB.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.mode;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mode.IMode;
+import gnu.javax.crypto.mode.ModeFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Conformance tests of the OFB implementation.
+ *
+ * <p>References:</p>
+ *
+ * <ol>
+ * <li><a href="http://csrc.nist.gov/encryption/modes/Recommendation/Modes01.pdf">
+ * Recommendation for Block Cipher Modes of Operation Methods and Techniques</a>,
+ * Morris Dworkin.</li>
+ * </ol>
+ */
+public class TestOfOFB implements Testlet
+{
+ private byte[] key, iv, pt1, ct1, pt2, ct2, pt3, ct3, pt4, ct4, pt, ct;
+
+ private IMode mode;
+
+ private Map attributes = new HashMap();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfOFB.testAES128");
+ /** F.4.1 OFB-AES128-Encrypt and F.4.2 OFB-AES128-Decrypt. */
+ key = Util.toBytesFromUnicode("\u2b7e\u1516\u28ae\ud2a6\uabf7\u1588\u09cf\u4f3c");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\u3b3f\ud92e\ub72d\uad20\u3334\u49f8\ue83c\ufb4a");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u7789\u508d\u1691\u8f03\uf53c\u52da\uc54e\ud825");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u9740\u051e\u9c5f\uecf6\u4344\uf7a8\u2260\uedcc");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u304c\u6528\uf659\uc778\u66a5\u10d9\uc1d6\uae5e");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.OFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "OFB-AES128-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "OFB-AES128-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "OFB-AES128-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "OFB-AES128-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "OFB-AES128-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "OFB-AES128-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "OFB-AES128-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "OFB-AES128-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfOFB.testAES128");
+ }
+
+ harness.checkPoint("TestOfOFB.testAES192");
+ /** F.4.3 OFB-AES192-Encrypt and F.4.4 OFB-AES192-Decrypt. */
+ key = Util.toBytesFromUnicode("\u8e73\ub0f7\uda0e\u6452\uc810\uf32b\u8090\u79e5"
+ + "\u62f8\uead2\u522c\u6b7b");
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\ucdc8\u0d6f\uddf1\u8cab\u34c2\u5909\uc99a\u4174");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\ufcc2\u8b8d\u4c63\u837c\u09e8\u1700\uc110\u0401");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u8d9a\u9aea\uc0f6\u596f\u559c\u6d4d\uaf59\ua5f2");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u6d9f\u2008\u57ca\u6c3e\u9cac\u524b\ud9ac\uc92a");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.OFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "OFB-AES192-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "OFB-AES192-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "OFB-AES192-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "OFB-AES192-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "OFB-AES192-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "OFB-AES192-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "OFB-AES192-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "OFB-AES192-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfOFB.testAES192");
+ }
+
+ harness.checkPoint("TestOfOFB.testAES256");
+ /** F.4.5 OFB-AES256-Encrypt and F.4.6 OFB-AES256-Decrypt. */
+ key = Util.toBytesFromUnicode("\u603d\ueb10\u15ca\u71be\u2b73\uaef0\u857d\u7781"
+ + "\u1f35\u2c07\u3b61\u08d7\u2d98\u10a3\u0914\udff4");
+
+ iv = Util.toBytesFromUnicode("\u0001\u0203\u0405\u0607\u0809\u0a0b\u0c0d\u0e0f");
+
+ pt1 = Util.toBytesFromUnicode("\u6bc1\ubee2\u2e40\u9f96\ue93d\u7e11\u7393\u172a");
+ ct1 = Util.toBytesFromUnicode("\udc7e\u84bf\uda79\u164b\u7ecd\u8486\u985d\u3860");
+
+ pt2 = Util.toBytesFromUnicode("\uae2d\u8a57\u1e03\uac9c\u9eb7\u6fac\u45af\u8e51");
+ ct2 = Util.toBytesFromUnicode("\u4feb\udc67\u40d2\u0b3a\uc88f\u6ad8\u2a4f\ub08d");
+
+ pt3 = Util.toBytesFromUnicode("\u30c8\u1c46\ua35c\ue411\ue5fb\uc119\u1a0a\u52ef");
+ ct3 = Util.toBytesFromUnicode("\u71ab\u47a0\u86e8\u6eed\uf39d\u1c5b\uba97\uc408");
+
+ pt4 = Util.toBytesFromUnicode("\uf69f\u2445\udf4f\u9b17\uad2b\u417b\ue66c\u3710");
+ ct4 = Util.toBytesFromUnicode("\u0126\u141d\u67f3\u7be8\u538f\u5a8b\ue740\ue484");
+
+ ct = new byte[16];
+ pt = new byte[16];
+
+ mode = ModeFactory.getInstance(Registry.OFB_MODE, Registry.AES_CIPHER,
+ 128 / 8);
+ attributes.clear();
+ attributes.put(IMode.IV, iv);
+ attributes.put(IMode.KEY_MATERIAL, key);
+ try
+ {
+ // encryption ........................................................
+ attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
+ mode.init(attributes);
+
+ mode.update(pt1, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct1), "OFB-AES256-Decrypt block #1");
+
+ mode.update(pt2, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct2), "OFB-AES256-Decrypt block #2");
+
+ mode.update(pt3, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct3), "OFB-AES256-Decrypt block #3");
+
+ mode.update(pt4, 0, ct, 0);
+ harness.check(Arrays.equals(ct, ct4), "OFB-AES256-Decrypt block #4");
+
+ // decryption ........................................................
+ mode.reset();
+ attributes.put(IMode.STATE, new Integer(IMode.DECRYPTION));
+ mode.init(attributes);
+
+ mode.update(ct1, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt1), "OFB-AES256-Decrypt block #1");
+
+ mode.update(ct2, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt2), "OFB-AES256-Decrypt block #2");
+
+ mode.update(ct3, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt3), "OFB-AES256-Decrypt block #3");
+
+ mode.update(ct4, 0, pt, 0);
+ harness.check(Arrays.equals(pt, pt4), "OFB-AES256-Decrypt block #4");
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfOFB.testAES256");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/pad/CVS/Entries b/gnu/testlet/gnu/javax/crypto/pad/CVS/Entries
new file mode 100644
index 00000000..36d4a393
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/CVS/Entries
@@ -0,0 +1,5 @@
+/TestOfISO10126.java/1.1/Fri Jun 9 11:53:52 2006//
+/TestOfPKCS7.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPadFactory.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfTBC.java/1.1/Sun Jan 29 01:21:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/pad/CVS/Repository b/gnu/testlet/gnu/javax/crypto/pad/CVS/Repository
new file mode 100644
index 00000000..9e5911c4
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/pad
diff --git a/gnu/testlet/gnu/javax/crypto/pad/CVS/Root b/gnu/testlet/gnu/javax/crypto/pad/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/pad/TestOfISO10126.java b/gnu/testlet/gnu/javax/crypto/pad/TestOfISO10126.java
new file mode 100644
index 00000000..0792a13d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/TestOfISO10126.java
@@ -0,0 +1,88 @@
+/* TestOfISO10126.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.pad;
+
+import gnu.javax.crypto.pad.IPad;
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.javax.crypto.pad.WrongPaddingException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Basic tests for the ISO-10126 padding scheme.
+ */
+public class TestOfISO10126
+ implements Testlet
+{
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfISO10126");
+ try
+ {
+ IPad algorithm = PadFactory.getInstance("iso10126");
+ byte[] in = new byte[1024];
+ for (int bs = 2; bs < 256; bs++)
+ if (! padderTest1BlockSize(algorithm, bs, in))
+ harness.fail("ISO10126 padder failed for block-size = " + bs);
+ harness.check(true, "ISO10126 padder OK");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfISO10126");
+ }
+ }
+
+ private boolean padderTest1BlockSize(IPad algorithm, int size, byte[] buffer)
+ {
+ final int offset = 5;
+ final int limit = buffer.length;
+ byte[] padding;
+ int len;
+
+ algorithm.init(size);
+ for (int i = 0; i < limit - offset - size; i++)
+ {
+ padding = algorithm.pad(buffer, offset, i);
+ len = padding.length;
+ if (((i + len) % size) != 0)
+ return false;
+ System.arraycopy(padding, 0, buffer, offset + i, len);
+ try
+ {
+ if (len != algorithm.unpad(buffer, offset, i + len))
+ return false;
+ }
+ catch (WrongPaddingException x)
+ {
+ return false;
+ }
+ }
+ algorithm.reset();
+ return true;
+ }
+}
diff --git a/gnu/testlet/gnu/javax/crypto/pad/TestOfPKCS7.java b/gnu/testlet/gnu/javax/crypto/pad/TestOfPKCS7.java
new file mode 100644
index 00000000..b620f26f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/TestOfPKCS7.java
@@ -0,0 +1,50 @@
+/* TestOfPKCS7.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.pad;
+
+import gnu.javax.crypto.pad.IPad;
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the PKCS7 implementation.
+ */
+public class TestOfPKCS7 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPKCS7");
+ try
+ {
+ IPad algorithm = PadFactory.getInstance("pkcs7");
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPKCS7.selfTest");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/pad/TestOfPadFactory.java b/gnu/testlet/gnu/javax/crypto/pad/TestOfPadFactory.java
new file mode 100644
index 00000000..d05cafdb
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/TestOfPadFactory.java
@@ -0,0 +1,59 @@
+/* TestOfPadFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.pad;
+
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.javax.crypto.pad.IPad;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the PadFactory implementation.
+ */
+public class TestOfPadFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPadFactory");
+ String pad;
+ IPad algorithm;
+ for (Iterator it = PadFactory.getNames().iterator(); it.hasNext();)
+ {
+ pad = (String) it.next();
+ try
+ {
+ algorithm = PadFactory.getInstance(pad);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(pad) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPadFactory.getInstance(" + String.valueOf(pad)
+ + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/pad/TestOfTBC.java b/gnu/testlet/gnu/javax/crypto/pad/TestOfTBC.java
new file mode 100644
index 00000000..2d55d9ec
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/pad/TestOfTBC.java
@@ -0,0 +1,50 @@
+/* TestOfTBC.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.pad;
+
+import gnu.javax.crypto.pad.IPad;
+import gnu.javax.crypto.pad.PadFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Conformance tests for the Trailing Bit Complement (TBC) implementation.
+ */
+public class TestOfTBC implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfTBC");
+ try
+ {
+ IPad algorithm = PadFactory.getInstance("tbc");
+ harness.check(algorithm.selfTest(), "selfTest");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfTBC.selfTest");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/prng/CVS/Entries b/gnu/testlet/gnu/javax/crypto/prng/CVS/Entries
new file mode 100644
index 00000000..d6a61b26
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/CVS/Entries
@@ -0,0 +1,5 @@
+/TestOfARCFour.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfICMGenerator.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPBKDF2.java/1.1/Sun Jan 29 01:21:58 2006//
+/TestOfPRNGFactory.java/1.1/Sun Jan 29 01:21:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/prng/CVS/Repository b/gnu/testlet/gnu/javax/crypto/prng/CVS/Repository
new file mode 100644
index 00000000..4cf02f5d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/prng
diff --git a/gnu/testlet/gnu/javax/crypto/prng/CVS/Root b/gnu/testlet/gnu/javax/crypto/prng/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/prng/TestOfARCFour.java b/gnu/testlet/gnu/javax/crypto/prng/TestOfARCFour.java
new file mode 100644
index 00000000..42a1935f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/TestOfARCFour.java
@@ -0,0 +1,208 @@
+/* TestOfARCFour.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.prng;
+
+import gnu.java.security.Registry;
+import gnu.java.security.prng.IRandom;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.prng.ARCFour;
+import gnu.javax.crypto.prng.PRNGFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Conformance tests for the ARCFOUR keystream generator.
+ */
+public class TestOfARCFour implements Testlet
+{
+ private byte[] pt, kb, ct;
+
+ private HashMap attrib = new HashMap();
+
+ private IRandom keystream;
+
+ // Test vectors are from "draft-kaukonen-cipher-arcfour-03.txt", which is
+ // about as official as anything associated with ARCFOUR gets.
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfARCFour.testVectorOne");
+ // PLAIN=0000000000000000
+ // KEY=0123456789ABCDEF
+ // CIPHER=7494C2E7104B0879
+ try
+ {
+ attrib.clear();
+ keystream = PRNGFactory.getInstance(Registry.ARCFOUR_PRNG);
+
+ pt = new byte[8];
+ kb = Util.toBytesFromString("0123456789ABCDEF");
+ ct = Util.toBytesFromString("7494C2E7104B0879");
+ attrib.put(ARCFour.ARCFOUR_KEY_MATERIAL, kb);
+
+ keystream.init(attrib);
+
+ byte[] sb = new byte[8];
+ keystream.nextBytes(sb, 0, 8);
+ harness.check(Arrays.equals(ct, sb));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("TestOfARCFour.testVectorOne");
+ }
+
+ harness.checkPoint("TestOfARCFour.testVectorTwo");
+ // PLAIN=DCEE4CF92C
+ // KEY=618A63D2FB
+ // CIPHER=F13829C9DE
+ try
+ {
+ attrib.clear();
+ keystream = PRNGFactory.getInstance(Registry.ARCFOUR_PRNG);
+
+ pt = Util.toBytesFromString("DCEE4CF92C");
+ kb = Util.toBytesFromString("618A63D2FB");
+ ct = Util.toBytesFromString("F13829C9DE");
+ attrib.put(ARCFour.ARCFOUR_KEY_MATERIAL, kb);
+
+ keystream.init(attrib);
+
+ byte[] cct = new byte[pt.length];
+ for (int i = 0; i < pt.length; i++)
+ {
+ cct[i] = (byte) (pt[i] ^ keystream.nextByte());
+ }
+ harness.check(Arrays.equals(cct, ct));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("TestOfARCFour.testVectorTwo");
+ }
+
+ harness.checkPoint("TestOfARCFour.testVectorThree");
+ // PLAIN=527569736C696E6E756E206C61756C75206B6F7276697373
+ // 73616E692C2074E4686BE470E46964656E2070E4E46C6CE4
+ // 2074E47973696B75752E204B6573E479F66E206F6E206F6E
+ // 6E69206F6D616E616E692C206B61736B6973617675756E20
+ // 6C61616B736F7420766572686F75752E20456E206D612069
+ // 6C6F697473652C20737572652068756F6B61612C206D7574
+ // 7461206D657473E46E2074756D6D757573206D756C6C6520
+ // 74756F6B61612E205075756E746F2070696C76656E2C206D
+ // 692068756B6B75752C207369696E746F20766172616E2074
+ // 75756C6973656E2C206D69206E756B6B75752E2054756F6B
+ // 7375742076616E616D6F6E206A61207661726A6F74207665
+ // 656E2C206E69697374E420737964E46D656E69206C61756C
+ // 756E207465656E2E202D2045696E6F204C65696E6F
+ // KEY=29041972FB42BA5FC7127712F13829C9
+ // CIPHER=358186999001E6B5DAF05ECEEB7EEE21E0689C1F00EEA81F
+ // 7DD2CAAEE1D2763E68AF0EAD33D66C268BC946C484FBE94C
+ // 5F5E0B86A59279E4F824E7A640BD223210B0A61160B7BCE9
+ // 86EA65688003596B630A6B90F8E0CAF6912A98EB872176E8
+ // 3C202CAA64166D2CCE57FF1BCA57B213F0ED1AA72FB8EA52
+ // B0BE01CD1E412867720B326EB389D011BD70D8AF035FB0D8
+ // 589DBCE3C666F5EA8D4C7954C50C3F340B0467F81B425961
+ // C11843074DF620F208404B394CF9D37FF54B5F1AD8F6EA7D
+ // A3C561DFA7281F964463D2CC35A4D1B03490DEC51B0711FB
+ // D6F55F79234D5B7C766622A66DE92BE996461D5E4DC878EF
+ // 9BCA030521E8351E4BAED2FD04F9467368C4AD6AC186D082
+ // 45B263A2666D1F6C5420F1599DFD9F438921C2F5A463938C
+ // E0982265EEF70179BC553F339EB1A4C1AF5F6A547F
+ try
+ {
+ attrib.clear();
+ keystream = PRNGFactory.getInstance(Registry.ARCFOUR_PRNG);
+
+ pt = Util.toBytesFromString("527569736C696E6E756E206C61756C75206B6F7276697373"
+ + "73616E692C2074E4686BE470E46964656E2070E4E46C6CE4"
+ + "2074E47973696B75752E204B6573E479F66E206F6E206F6E"
+ + "6E69206F6D616E616E692C206B61736B6973617675756E20"
+ + "6C61616B736F7420766572686F75752E20456E206D612069"
+ + "6C6F697473652C20737572652068756F6B61612C206D7574"
+ + "7461206D657473E46E2074756D6D757573206D756C6C6520"
+ + "74756F6B61612E205075756E746F2070696C76656E2C206D"
+ + "692068756B6B75752C207369696E746F20766172616E2074"
+ + "75756C6973656E2C206D69206E756B6B75752E2054756F6B"
+ + "7375742076616E616D6F6E206A61207661726A6F74207665"
+ + "656E2C206E69697374E420737964E46D656E69206C61756C"
+ + "756E207465656E2E202D2045696E6F204C65696E6F");
+ kb = Util.toBytesFromString("29041972FB42BA5FC7127712F13829C9");
+ ct = Util.toBytesFromString("358186999001E6B5DAF05ECEEB7EEE21E0689C1F00EEA81F"
+ + "7DD2CAAEE1D2763E68AF0EAD33D66C268BC946C484FBE94C"
+ + "5F5E0B86A59279E4F824E7A640BD223210B0A61160B7BCE9"
+ + "86EA65688003596B630A6B90F8E0CAF6912A98EB872176E8"
+ + "3C202CAA64166D2CCE57FF1BCA57B213F0ED1AA72FB8EA52"
+ + "B0BE01CD1E412867720B326EB389D011BD70D8AF035FB0D8"
+ + "589DBCE3C666F5EA8D4C7954C50C3F340B0467F81B425961"
+ + "C11843074DF620F208404B394CF9D37FF54B5F1AD8F6EA7D"
+ + "A3C561DFA7281F964463D2CC35A4D1B03490DEC51B0711FB"
+ + "D6F55F79234D5B7C766622A66DE92BE996461D5E4DC878EF"
+ + "9BCA030521E8351E4BAED2FD04F9467368C4AD6AC186D082"
+ + "45B263A2666D1F6C5420F1599DFD9F438921C2F5A463938C"
+ + "E0982265EEF70179BC553F339EB1A4C1AF5F6A547F");
+ attrib.put(ARCFour.ARCFOUR_KEY_MATERIAL, kb);
+
+ keystream.init(attrib);
+
+ byte[] cct = new byte[pt.length];
+ for (int i = 0; i < pt.length; i++)
+ {
+ cct[i] = (byte) (pt[i] ^ keystream.nextByte());
+ }
+ harness.check(Arrays.equals(cct, ct));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("TestOfARCFour.testVectorThree");
+ }
+
+ harness.checkPoint("TestOfARCFour.testCloneability");
+ try
+ {
+ attrib.clear();
+ keystream = PRNGFactory.getInstance(Registry.ARCFOUR_PRNG);
+
+ attrib.put(ARCFour.ARCFOUR_KEY_MATERIAL, new byte[0]);
+ byte[] b1 = new byte[16];
+ byte[] b2 = new byte[16];
+ IRandom r1 = PRNGFactory.getInstance(Registry.ARCFOUR_PRNG);
+ r1.init(attrib);
+ r1.nextBytes(b1, 0, b1.length);
+ IRandom r2 = (IRandom) r1.clone();
+ r1.nextBytes(b1, 0, b1.length);
+ r2.nextBytes(b2, 0, b1.length);
+ harness.check(Arrays.equals(b1, b2));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("TestOfARCFour.testCloneability");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/prng/TestOfICMGenerator.java b/gnu/testlet/gnu/javax/crypto/prng/TestOfICMGenerator.java
new file mode 100644
index 00000000..01bae886
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/TestOfICMGenerator.java
@@ -0,0 +1,186 @@
+/* TestOfICMGenerator.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.prng;
+
+import gnu.java.security.prng.IRandom;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.prng.ICMGenerator;
+import gnu.javax.crypto.prng.PRNGFactory;
+import gnu.javax.crypto.cipher.IBlockCipher;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.math.BigInteger;
+import java.util.HashMap;
+
+/**
+ * Conformance test for the ICM implementation. Tests if the output matches
+ * the values given in the draft-mcgrew-saag-icm-00.txt.
+ */
+public class TestOfICMGenerator implements Testlet
+{
+ private HashMap map = new HashMap();
+
+ private byte[] key, offset, data;
+
+ private ICMGenerator icm = new ICMGenerator();
+
+ private IRandom rnd = PRNGFactory.getInstance("icm");
+
+ private String ks, computed;
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfICMGenerator.testVectorOne");
+ // Block Cipher Key: 000102030405060708090A0B0C0D0E0F
+ // Offset: 000102030405060708090A0B0C0D0E0F
+ // BLOCK_INDEX_LENGTH: 4
+ // SEGMENT_INDEX_LENGTH: 4
+ // Segment Index: 00000000
+ //
+ // Counter Keystream
+ // 000102030405060708090A0B0C0D0E0F 0A940BB5416EF045F1C39458C653EA5A
+ // 000102030405060708090A0B0C0D0E10 0263EC94661872969ADAFD0F4BA40FDC
+ // 000102030405060708090A0B0C0D0E11 1A2D94B3111CA5F8BDC2C84DCC29EC47
+ // 000102030405060708090A0B0C0D0E12 4D0BABD2995F9F076223246847B5D30E
+ // 000102030405060708090A0B0C0D0E13 8D33F128463B88EFD3F8A52505020379
+ key = new byte[16];
+ offset = new byte[16];
+ for (int i = 0; i < 16; i++)
+ {
+ key[i] = (byte) i;
+ offset[i] = (byte) i;
+ }
+
+ map.clear();
+ map.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ map.put(IBlockCipher.KEY_MATERIAL, key);
+ map.put(ICMGenerator.SEGMENT_INDEX_LENGTH, new Integer(4));
+ map.put(ICMGenerator.OFFSET, offset);
+ map.put(ICMGenerator.SEGMENT_INDEX, BigInteger.ZERO);
+
+ data = new byte[16];
+ try
+ {
+ icm.init(map);
+
+ ks = "0A940BB5416EF045F1C39458C653EA5A";
+ icm.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "0263EC94661872969ADAFD0F4BA40FDC";
+ icm.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "1A2D94B3111CA5F8BDC2C84DCC29EC47";
+ icm.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "4D0BABD2995F9F076223246847B5D30E";
+ icm.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "8D33F128463B88EFD3F8A52505020379";
+ icm.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfICMGenerator.testVectorOne");
+ }
+
+ harness.checkPoint("TestOfICMGenerator.testVectorTwo");
+ // Block Cipher Key: 75387824D1F1F3815641B65D78D51EDB
+ // Offset: 96C9781981053CBBCB36927844F1932C
+ // BLOCK_INDEX_LENGTH: 2
+ // SEGMENT_INDEX_LENGTH: 6
+ // Segment Index: 12345678
+ //
+ // Counter Keystream
+ // 96C9781981053CBBCB36A4AC9B69932C EA0AA027BA6D56E44B28F43A7E3E5F58
+ // 96C9781981053CBBCB36A4AC9B69932D CBDB3107EDA8D420D3EF7AB7FF290166
+ // 96C9781981053CBBCB36A4AC9B69932E AED6F7CB14ED49174336CC010AEB8780
+ // 96C9781981053CBBCB36A4AC9B69932F 4C3A754AF027A5C8CCB40E0FE20AF246
+ // 96C9781981053CBBCB36A4AC9B699330 01A6D1CE983EF993E980CC9568587E3D
+ key = new byte[] { (byte) 0x75, (byte) 0x38, (byte) 0x78, (byte) 0x24,
+ (byte) 0xD1, (byte) 0xF1, (byte) 0xF3, (byte) 0x81,
+ (byte) 0x56, (byte) 0x41, (byte) 0xB6, (byte) 0x5D,
+ (byte) 0x78, (byte) 0xD5, (byte) 0x1E, (byte) 0xDB };
+
+ offset = new byte[] { (byte) 0x96, (byte) 0xC9, (byte) 0x78, (byte) 0x19,
+ (byte) 0x81, (byte) 0x05, (byte) 0x3C, (byte) 0xBB,
+ (byte) 0xCB, (byte) 0x36, (byte) 0x92, (byte) 0x78,
+ (byte) 0x44, (byte) 0xF1, (byte) 0x93, (byte) 0x2C };
+
+ map.clear();
+ map.put(IBlockCipher.CIPHER_BLOCK_SIZE, new Integer(16));
+ map.put(IBlockCipher.KEY_MATERIAL, key);
+ map.put(ICMGenerator.BLOCK_INDEX_LENGTH, new Integer(2));
+ map.put(ICMGenerator.OFFSET, new BigInteger(1, offset));
+ map.put(ICMGenerator.SEGMENT_INDEX, new BigInteger("12345678", 16));
+
+ data = new byte[16];
+ String ks, computed;
+ try
+ {
+ rnd.init(map);
+
+ ks = "EA0AA027BA6D56E44B28F43A7E3E5F58";
+ rnd.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "CBDB3107EDA8D420D3EF7AB7FF290166";
+ rnd.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "AED6F7CB14ED49174336CC010AEB8780";
+ rnd.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "4C3A754AF027A5C8CCB40E0FE20AF246";
+ rnd.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ ks = "01A6D1CE983EF993E980CC9568587E3D";
+ rnd.nextBytes(data, 0, 16);
+ computed = Util.toString(data);
+ harness.check(ks.equals(computed));
+
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfICMGenerator.testVectorTwo");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/prng/TestOfPBKDF2.java b/gnu/testlet/gnu/javax/crypto/prng/TestOfPBKDF2.java
new file mode 100644
index 00000000..258662b2
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/TestOfPBKDF2.java
@@ -0,0 +1,209 @@
+/* TestOfPBKDF2.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.prng;
+
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.mac.MacFactory;
+import gnu.javax.crypto.prng.IPBE;
+import gnu.javax.crypto.prng.PBKDF2;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+/**
+ * Test of the key-derivation function PBKDF2 from PKCS #5. Based on test
+ * vectors in <a href="http://www.ietf.org/internet-drafts/draft-raeburn-krb-rijndael-krb-05.txt">
+ * AES Encryption for Kerberos 5</a>.
+ */
+public class TestOfPBKDF2 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ harness.checkPoint("PBKDF2");
+ PBKDF2 kdf = new PBKDF2(MacFactory.getInstance("HMAC-SHA1"));
+ HashMap attr = new HashMap();
+ byte[] dk = new byte[32];
+ byte[] edk;
+ byte[] salt;
+ char[] password;
+
+ // Iteration count = 1
+ // Pass phrase = "password"
+ // Salt = "ATHENA.MIT.EDUraeburn"
+ // 256-bit PBKDF2 output:
+ // cd ed b5 28 1b b2 f8 01 56 5a 11 22 b2 56 35 15
+ // 0a d1 f7 a0 4b b9 f3 a3 33 ec c0 e2 e1 f7 08 37
+ edk = Util.toBytesFromString(
+ "cdedb5281bb2f801565a1122b25635150ad1f7a04bb9f3a333ecc0e2e1f70837");
+ password = "password".toCharArray();
+ salt = "ATHENA.MIT.EDUraeburn".getBytes();
+ attr.put(IPBE.ITERATION_COUNT, new Integer(1));
+ attr.put(IPBE.PASSWORD, password);
+ attr.put(IPBE.SALT, salt);
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+
+ // Iteration count = 2
+ // Pass phrase = "password"
+ // Salt="ATHENA.MIT.EDUraeburn"
+ // 256-bit PBKDF2 output:
+ // 01 db ee 7f 4a 9e 24 3e 98 8b 62 c7 3c da 93 5d
+ // a0 53 78 b9 32 44 ec 8f 48 a9 9e 61 ad 79 9d 86
+ edk = Util.toBytesFromString(
+ "01dbee7f4a9e243e988b62c73cda935da05378b93244ec8f48a99e61ad799d86");
+ attr.put(IPBE.ITERATION_COUNT, new Integer(2));
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+
+ // Iteration count = 1200
+ // Pass phrase = "password"
+ // Salt = "ATHENA.MIT.EDUraeburn"
+ // 256-bit PBKDF2 output:
+ // 5c 08 eb 61 fd f7 1e 4e 4e c3 cf 6b a1 f5 51 2b
+ // a7 e5 2d db c5 e5 14 2f 70 8a 31 e2 e6 2b 1e 13
+ edk = Util.toBytesFromString(
+ "5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddbc5e5142f708a31e2e62b1e13");
+ attr.put(IPBE.ITERATION_COUNT, new Integer(1200));
+ attr.put(IPBE.PASSWORD, password);
+ attr.put(IPBE.SALT, salt);
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+
+ // Iteration count = 5
+ // Pass phrase = "password"
+ // Salt=0x1234567878563412
+ // 256-bit PBKDF2 output:
+ // d1 da a7 86 15 f2 87 e6 a1 c8 b1 20 d7 06 2a 49
+ //
+ edk = Util.toBytesFromString(
+ "d1daa78615f287e6a1c8b120d7062a493f98d203e6be49a6adf4fa574b6e64ee");
+ salt = Util.toBytesFromString("1234567878563412");
+ attr.put(IPBE.ITERATION_COUNT, new Integer(5));
+ attr.put(IPBE.PASSWORD, password);
+ attr.put(IPBE.SALT, salt);
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+
+ // Iteration count = 1200
+ // Pass phrase = (64 characters)
+ // "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ // Salt="pass phrase equals block size"
+ // 256-bit PBKDF2 output:
+ // 13 9c 30 c0 96 6b c3 2b a5 5f db f2 12 53 0a c9
+ // c5 ec 59 f1 a4 52 f5 cc 9a d9 40 fe a0 59 8e d1
+ edk = Util.toBytesFromString(
+ "139c30c0966bc32ba55fdbf212530ac9c5ec59f1a452f5cc9ad940fea0598ed1");
+ password =
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ .toCharArray();
+ salt = "pass phrase equals block size".getBytes();
+ attr.put(IPBE.ITERATION_COUNT, new Integer(1200));
+ attr.put(IPBE.PASSWORD, password);
+ attr.put(IPBE.SALT, salt);
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+
+ // Iteration count = 1200
+ // Pass phrase = (65 characters)
+ // "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ // Salt = "pass phrase exceeds block size"
+ // 256-bit PBKDF2 output:
+ // 9c ca d6 d4 68 77 0c d5 1b 10 e6 a6 87 21 be 61
+ // 1a 8b 4d 28 26 01 db 3b 36 be 92 46 91 5e c8 2a
+ edk = Util.toBytesFromString(
+ "9ccad6d468770cd51b10e6a68721be611a8b4d282601db3b36be9246915ec82a");
+ password =
+ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+ .toCharArray();
+ salt = "pass phrase exceeds block size".getBytes();
+ attr.put(IPBE.ITERATION_COUNT, new Integer(1200));
+ attr.put(IPBE.PASSWORD, password);
+ attr.put(IPBE.SALT, salt);
+ try
+ {
+ kdf.init(attr);
+ kdf.nextBytes(dk, 0, dk.length);
+ harness.check(Arrays.equals(dk, edk));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+ catch (Exception x)
+ {
+ x.printStackTrace(System.err);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/prng/TestOfPRNGFactory.java b/gnu/testlet/gnu/javax/crypto/prng/TestOfPRNGFactory.java
new file mode 100644
index 00000000..dc26dda0
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/prng/TestOfPRNGFactory.java
@@ -0,0 +1,59 @@
+/* TestOfPRNGFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.prng;
+
+import gnu.java.security.prng.IRandom;
+import gnu.javax.crypto.prng.PRNGFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Iterator;
+
+/**
+ * Conformance tests for the PRNGFactory implementation.
+ */
+public class TestOfPRNGFactory implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPRNGFactory");
+ String prng;
+ IRandom algorithm;
+ for (Iterator it = PRNGFactory.getNames().iterator(); it.hasNext();)
+ {
+ prng = (String) it.next();
+ try
+ {
+ algorithm = null;
+ algorithm = PRNGFactory.getInstance(prng);
+ harness.check(algorithm != null, "getInstance("
+ + String.valueOf(prng) + ")");
+ }
+ catch (InternalError x)
+ {
+ harness.fail("TestOfPRNGFactory.getInstance("
+ + String.valueOf(prng) + ")");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries
new file mode 100644
index 00000000..4bf090d3
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfClientFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfServerFactory.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries.Log b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries.Log
new file mode 100644
index 00000000..e567c28c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/srp////
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/CVS/Repository b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Repository
new file mode 100644
index 00000000..387592a1
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/sasl
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/CVS/Root b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/TestOfClientFactory.java b/gnu/testlet/gnu/javax/crypto/sasl/TestOfClientFactory.java
new file mode 100644
index 00000000..f7809a73
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/TestOfClientFactory.java
@@ -0,0 +1,155 @@
+/* TestOfClientFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.sasl;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.sasl.ClientFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+
+import javax.security.sasl.Sasl;
+
+/**
+ * Regression tests for SASL Client factories.
+ */
+public class TestOfClientFactory implements Testlet
+{
+ private static boolean includes(String[] sa, String n)
+ {
+ for (int i = 0; i < sa.length; i++)
+ if (n.equals(sa[i]))
+ return true;
+ return false;
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfClientFactory:null");
+
+ ClientFactory factory = new ClientFactory();
+ String[] mechanisms = factory.getMechanismNames(null);
+
+ // should see all mechanisms
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_NOPLAINTEXT);
+ HashMap p = new HashMap();
+ p.put(Sasl.POLICY_NOPLAINTEXT, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_NOACTIVE);
+ p.clear();
+ p.put(Sasl.POLICY_NOACTIVE, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_NODICTIONARY);
+ p.clear();
+ p.put(Sasl.POLICY_NODICTIONARY, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_NOANONYMOUS);
+ p.clear();
+ p.put(Sasl.POLICY_NOANONYMOUS, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except ANONYMOUS
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_FORWARD_SECRECY);
+ p.clear();
+ p.put(Sasl.POLICY_FORWARD_SECRECY, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except ANONYMOUS,PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfClientFactory:" + Sasl.POLICY_PASS_CREDENTIALS);
+ p.clear();
+ p.put(Sasl.POLICY_PASS_CREDENTIALS, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see none
+ harness.check(!includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/TestOfServerFactory.java b/gnu/testlet/gnu/javax/crypto/sasl/TestOfServerFactory.java
new file mode 100644
index 00000000..a343beba
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/TestOfServerFactory.java
@@ -0,0 +1,156 @@
+/* TestOfServerFactory.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.sasl;
+
+import gnu.java.security.Registry;
+import gnu.javax.crypto.sasl.ServerFactory;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+
+import javax.security.sasl.Sasl;
+
+/**
+ * Regression tests for SASL Server factories.
+ */
+public class TestOfServerFactory implements Testlet
+{
+ private static boolean includes(String[] sa, String n)
+ {
+ for (int i = 0; i < sa.length; i++)
+ if (n.equals(sa[i]))
+ return true;
+ return false;
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfServerFactory:null");
+
+ ServerFactory factory = new ServerFactory();
+ String[] mechanisms = factory.getMechanismNames(null);
+
+ // should see all mechanisms
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_NOPLAINTEXT);
+ HashMap p = new HashMap();
+ p.put(Sasl.POLICY_NOPLAINTEXT, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_NOACTIVE);
+ p.clear();
+ p.put(Sasl.POLICY_NOACTIVE, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_NODICTIONARY);
+ p.clear();
+ p.put(Sasl.POLICY_NODICTIONARY, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_NOANONYMOUS);
+ p.clear();
+ p.put(Sasl.POLICY_NOANONYMOUS, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except ANONYMOUS
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_FORWARD_SECRECY);
+ p.clear();
+ p.put(Sasl.POLICY_FORWARD_SECRECY, "true");
+ mechanisms = factory.getMechanismNames(p);
+
+ // should see all mechanisms except ANONYMOUS,PLAIN & CRAM-MD5
+ harness.check(includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+
+ harness.checkPoint("TestOfServerFactory:" + Sasl.POLICY_PASS_CREDENTIALS);
+ p.clear();
+ p.put(Sasl.POLICY_PASS_CREDENTIALS, "true");
+ mechanisms = factory.getMechanismNames(p);
+ // should see none
+ harness.check(!includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_SRP_MECHANISM),
+ Registry.SASL_SRP_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_CRAM_MD5_MECHANISM),
+ Registry.SASL_CRAM_MD5_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_PLAIN_MECHANISM),
+ Registry.SASL_PLAIN_MECHANISM);
+ harness.check(!includes(mechanisms, Registry.SASL_ANONYMOUS_MECHANISM),
+ Registry.SASL_ANONYMOUS_MECHANISM);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Entries b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Entries
new file mode 100644
index 00000000..c6fd0a54
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Entries
@@ -0,0 +1,4 @@
+/TestOfSRPAuthInfoProvider.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfSRPPasswordFile.java/1.1/Sun Jan 29 01:21:59 2006//
+/TestOfSRPPrimitives.java/1.1/Sun Jan 29 01:21:59 2006//
+D
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Repository b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Repository
new file mode 100644
index 00000000..1ad8745f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/crypto/sasl/srp
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Root b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPAuthInfoProvider.java b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPAuthInfoProvider.java
new file mode 100644
index 00000000..f772957e
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPAuthInfoProvider.java
@@ -0,0 +1,273 @@
+/* TestOfSRPAuthInfoProvider.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.sasl.srp;
+
+import gnu.java.security.Registry;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.sasl.IAuthInfoProvider;
+import gnu.javax.crypto.sasl.srp.SRPAuthInfoProvider;
+import gnu.javax.crypto.sasl.srp.SRPRegistry;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+import java.io.File;
+
+import javax.security.sasl.AuthenticationException;
+
+/**
+ * Regression tests for SRP authentication provider (password file based).
+ */
+public class TestOfSRPAuthInfoProvider implements Testlet
+{
+ private Random prng = new Random();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPAuthInfoProvider");
+
+ String pFile = "./__TestOfSRPAuthInfoProvider";
+ Map context = new HashMap();
+ context.put(SRPRegistry.PASSWORD_FILE, pFile);
+
+ IAuthInfoProvider authenticator = new SRPAuthInfoProvider();
+ try
+ {
+ authenticator.activate(context);
+ harness.check(true, "activate()");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("activate()");
+ }
+
+ byte[] salt = new byte[10];
+
+ Map user1 = new HashMap();
+ user1.put(Registry.SASL_USERNAME, "user1");
+ user1.put(Registry.SASL_PASSWORD, "password1");
+ user1.put(SRPRegistry.CONFIG_NDX_FIELD, "1");
+ prng.nextBytes(salt);
+ user1.put(SRPRegistry.SALT_FIELD, Util.toBase64(salt));
+ user1.put(SRPRegistry.MD_NAME_FIELD, Registry.MD5_HASH);
+
+ Map user2 = new HashMap();
+ user2.put(Registry.SASL_USERNAME, "user2");
+ user2.put(Registry.SASL_PASSWORD, "password2");
+ user2.put(SRPRegistry.CONFIG_NDX_FIELD, "2");
+ prng.nextBytes(salt);
+ user2.put(SRPRegistry.SALT_FIELD, Util.toBase64(salt));
+ user2.put(SRPRegistry.MD_NAME_FIELD, Registry.SHA1_HASH);
+
+ Map user3 = new HashMap();
+ user3.put(Registry.SASL_USERNAME, "user3");
+ user3.put(Registry.SASL_PASSWORD, "password3");
+ user3.put(SRPRegistry.CONFIG_NDX_FIELD, "3");
+ prng.nextBytes(salt);
+ user3.put(SRPRegistry.SALT_FIELD, Util.toBase64(salt));
+ user3.put(SRPRegistry.MD_NAME_FIELD, Registry.MD5_HASH);
+
+ Map user4 = new HashMap();
+ user4.put(Registry.SASL_USERNAME, "user4");
+ user4.put(Registry.SASL_PASSWORD, "password4");
+ user4.put(SRPRegistry.CONFIG_NDX_FIELD, "4");
+ prng.nextBytes(salt);
+ user4.put(SRPRegistry.SALT_FIELD, Util.toBase64(salt));
+ user4.put(SRPRegistry.MD_NAME_FIELD, Registry.SHA_HASH);
+
+ Map credentials;
+ try
+ {
+ credentials = authenticator.lookup(user1);
+ harness.fail("lookup(user1)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.check(true, "lookup(user1)");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user2);
+ harness.fail("lookup(user2)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.check(true, "lookup(user2)");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user3);
+ harness.fail("lookup(user3)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.check(true, "lookup(user3)");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user4);
+ harness.fail("lookup(user4)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.check(true, "lookup(user4)");
+ }
+
+ // ----------------------------------------------------------------------
+
+ try
+ {
+ authenticator.update(user1);
+ harness.check(true, "update(user1)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("update(user1)");
+ }
+
+ try
+ {
+ authenticator.update(user2);
+ harness.check(true, "update(user2)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("update(user2)");
+ }
+
+ try
+ {
+ authenticator.update(user3);
+ harness.check(true, "update(user3)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("update(user3)");
+ }
+
+ // ----------------------------------------------------------------------
+
+ String saltString;
+ try
+ {
+ credentials = authenticator.lookup(user1);
+ saltString = (String) credentials.get(SRPRegistry.SALT_FIELD);
+ harness.check(saltString.equals(user1.get(SRPRegistry.SALT_FIELD)),
+ "user1 OK");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.fail("update(user1)");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user2);
+ saltString = (String) credentials.get(SRPRegistry.SALT_FIELD);
+ harness.check(saltString.equals(user2.get(SRPRegistry.SALT_FIELD)),
+ "user2 OK");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.fail("update(user2)");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user3);
+ saltString = (String) credentials.get(SRPRegistry.SALT_FIELD);
+ harness.check(saltString.equals(user3.get(SRPRegistry.SALT_FIELD)),
+ "user3 OK");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.fail("update(user3)");
+ }
+
+ // ----------------------------------------------------------------------
+
+ try
+ {
+ authenticator.update(user4);
+ harness.check(true, "update(user4)");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("update(user4)");
+ }
+
+ // ----------------------------------------------------------------------
+
+ try
+ {
+ authenticator.passivate();
+ harness.check(true, "passivate()");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("passivate()");
+ }
+
+ try
+ {
+ authenticator.activate(context);
+ harness.check(true, "activate()");
+ }
+ catch (AuthenticationException x)
+ {
+ harness.debug(x);
+ harness.fail("activate()");
+ }
+
+ try
+ {
+ credentials = authenticator.lookup(user4);
+ saltString = (String) credentials.get(SRPRegistry.SALT_FIELD);
+ harness.check(saltString.equals(user4.get(SRPRegistry.SALT_FIELD)));
+ }
+ catch (AuthenticationException x)
+ {
+ harness.fail("lookup(user4)");
+ }
+
+ try
+ {
+ new File(pFile).delete(); // remove test file
+ }
+ catch (Exception ignored)
+ {
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPasswordFile.java b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPasswordFile.java
new file mode 100644
index 00000000..1643ca0f
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPasswordFile.java
@@ -0,0 +1,194 @@
+/* TestOfSRPPasswordFile.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.sasl.srp;
+
+import gnu.java.security.Registry;
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.key.IKeyPairGenerator;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.key.srp6.SRPKeyPairGenerator;
+import gnu.javax.crypto.key.srp6.SRPPrivateKey;
+import gnu.javax.crypto.key.srp6.SRPPublicKey;
+import gnu.javax.crypto.sasl.srp.PasswordFile;
+import gnu.javax.crypto.sasl.srp.SRP;
+import gnu.javax.crypto.sasl.srp.SRPRegistry;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Random;
+
+/**
+ * Regression tests for SRP password file operations.
+ */
+public class TestOfSRPPasswordFile implements Testlet
+{
+ private Random prng = new Random();
+
+ public void test(final TestHarness harness)
+ {
+ harness.checkPoint("TestOfSRPPasswordFile");
+ try
+ {
+ exerciseFile(harness, Registry.SHA160_HASH);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("exerciseFile()");
+ }
+ try
+ {
+ exerciseFile(harness, Registry.MD5_HASH);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("exerciseFile(\"MD5\")");
+ }
+ }
+
+ private void exerciseFile(final TestHarness harness, final String md)
+ throws IOException
+ {
+ final String user = "test";
+ final String password = "test";
+ final String pFile = "./__TestOfSRPPasswordFile";
+ final String p2File = pFile + "2"; // ./test2
+ final String cFile = pFile + ".conf"; // ./test.conf
+
+ final File f = new File(pFile);
+ if (!f.exists())
+ {
+ if (f.createNewFile())
+ f.deleteOnExit();
+ }
+ else if (!f.isFile())
+ throw new RuntimeException("File object " + pFile
+ + " exists but is not a file");
+ else if (!f.canRead() || !f.canWrite())
+ throw new RuntimeException("File " + pFile
+ + " exists but is not accessible");
+ final PasswordFile tpasswd = new PasswordFile(pFile, p2File, cFile);
+ if (!tpasswd.contains(user))
+ {
+ final byte[] testSalt = new byte[10];
+ prng.nextBytes(testSalt);
+ tpasswd.add(user, password, testSalt, SRPRegistry.N_2048_BITS);
+ }
+ else
+ tpasswd.changePasswd(user, password);
+
+ final String[] entry = tpasswd.lookup(user, md);
+ final BigInteger v = new BigInteger(1, Util.fromBase64(entry[0]));
+ final byte[] salt = Util.fromBase64(entry[1]);
+
+ final String[] mpi = tpasswd.lookupConfig(entry[2]);
+ final BigInteger N = new BigInteger(1, Util.fromBase64(mpi[0]));
+ final BigInteger g = new BigInteger(1, Util.fromBase64(mpi[1]));
+
+ final IKeyPairGenerator kpg = new SRPKeyPairGenerator();
+ final HashMap attributes = new HashMap();
+ attributes.put(SRPKeyPairGenerator.SHARED_MODULUS, N);
+ attributes.put(SRPKeyPairGenerator.GENERATOR, g);
+ kpg.setup(attributes);
+
+ final KeyPair clientKP = kpg.generate();
+ final BigInteger A = ((SRPPublicKey) clientKP.getPublic()).getY();
+ final BigInteger a = ((SRPPrivateKey) clientKP.getPrivate()).getX();
+
+ attributes.put(SRPKeyPairGenerator.USER_VERIFIER, v);
+ kpg.setup(attributes);
+
+ final KeyPair serverKP = kpg.generate();
+ final BigInteger B = ((SRPPublicKey) serverKP.getPublic()).getY();
+ final BigInteger b = ((SRPPrivateKey) serverKP.getPrivate()).getX();
+
+ // compute u = H(A | B)
+ // IMessageDigest hash = srp.newDigest();
+ // IMessageDigest hash = HashFactory.getInstance(md);
+ final SRP srp = SRP.instance(md);
+ final IMessageDigest hash = srp.newDigest();
+ byte[] buffy;
+ buffy = Util.trim(A);
+ hash.update(buffy, 0, buffy.length);
+ buffy = Util.trim(B);
+ hash.update(buffy, 0, buffy.length);
+
+ final BigInteger u = new BigInteger(1, hash.digest());
+
+ // compute S = ((A * (v ** u)) ** b) % N
+ final BigInteger S1 = A.multiply(v.modPow(u, N)).modPow(b, N);
+
+ // compute K = H(S) (as of rev 08)
+ final byte[] s1Bytes = Util.trim(S1);
+ hash.update(s1Bytes, 0, s1Bytes.length);
+
+ final byte[] K1 = hash.digest();
+
+ final BigInteger x = new BigInteger(1, srp.computeX(salt, user, password));
+
+ // compute S = ((B - (3 * (g ** x))) ** (a + (u * x))) % N
+ // compute S = ((B - (3 * v)) ** (a + (u * x))) % N
+ final BigInteger S2 =
+ B.subtract(BigInteger.valueOf(3L).multiply(v))
+ .modPow(a.add(u.multiply(x)), N);
+
+ // compute K = H(S) (as of rev 08)
+ final byte[] s2Bytes = Util.trim(S2);
+ hash.update(s2Bytes, 0, s2Bytes.length);
+
+ final byte[] K2 = hash.digest();
+
+ harness.check(S1.equals(S2));
+ harness.check(Arrays.equals(K1, K2));
+
+ try
+ {
+ new File(pFile).delete(); // remove test file
+ }
+ catch (Exception ignored)
+ {
+ }
+ try
+ {
+ new File(p2File).delete(); // remove test2 file
+ }
+ catch (Exception ignored)
+ {
+ }
+ try
+ {
+ new File(cFile).delete(); // remove test.conf file
+ }
+ catch (Exception ignored)
+ {
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPrimitives.java b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPrimitives.java
new file mode 100644
index 00000000..223bdb84
--- /dev/null
+++ b/gnu/testlet/gnu/javax/crypto/sasl/srp/TestOfSRPPrimitives.java
@@ -0,0 +1,233 @@
+/* TestOfSRPPrimitives.java --
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.gnu.javax.crypto.sasl.srp;
+
+import gnu.java.security.hash.IMessageDigest;
+import gnu.java.security.key.IKeyPairGenerator;
+import gnu.java.security.util.Util;
+import gnu.javax.crypto.key.srp6.SRPKeyPairGenerator;
+import gnu.javax.crypto.key.srp6.SRPPrivateKey;
+import gnu.javax.crypto.key.srp6.SRPPublicKey;
+import gnu.javax.crypto.sasl.srp.PasswordFile;
+import gnu.javax.crypto.sasl.srp.SRP;
+import gnu.javax.crypto.sasl.srp.SRPRegistry;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.KeyPair;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Random;
+
+/**
+ * Regression tests for SRP cryptographic primitives.
+ */
+public class TestOfSRPPrimitives implements Testlet
+{
+ private String user = "TestOfSRPPrimitives";
+
+ private String password = "secret";
+
+ private String pFile = "./__TestOfSRPPrimitives";
+
+ private String p2File = pFile + "2";
+
+ private String cFile = pFile + ".conf";
+
+ private PasswordFile tpasswd;
+
+ private Random prng = new Random();
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setting up the test");
+ try
+ {
+ File f = new File(pFile);
+ if (!f.exists())
+ {
+ if (f.createNewFile())
+ f.deleteOnExit();
+ }
+ else if (!f.isFile())
+ {
+ throw new RuntimeException("File object " + pFile
+ + " exists but is not a file");
+ }
+ else if (!f.canRead() || !f.canWrite())
+ {
+ throw new RuntimeException("File " + pFile
+ + " exists but is not accessible");
+ }
+ tpasswd = new PasswordFile(pFile, p2File, cFile);
+ if (!tpasswd.contains(user))
+ {
+ byte[] testSalt = new byte[10];
+ prng.nextBytes(testSalt);
+ tpasswd.add(user, password, testSalt, "1");
+ }
+ else
+ {
+ tpasswd.changePasswd(user, password);
+ }
+
+ for (int i = 0; i < SRPRegistry.SRP_ALGORITHMS.length; i++)
+ {
+ exerciseAlgorithm(harness,
+ SRP.instance(SRPRegistry.SRP_ALGORITHMS[i]));
+ }
+
+ }
+ catch (IOException x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSRPPrimitives");
+ }
+ finally
+ {
+ try
+ {
+ new File(pFile).delete(); // remove test file
+ }
+ catch (Exception ignored)
+ {
+ }
+ try
+ {
+ new File(p2File).delete(); // remove test2 file
+ }
+ catch (Exception ignored)
+ {
+ }
+ try
+ {
+ new File(cFile).delete(); // remove test.conf file
+ }
+ catch (Exception ignored)
+ {
+ }
+ }
+ }
+
+ private void exerciseAlgorithm(TestHarness harness, SRP srp)
+ {
+ harness.checkPoint("TestOfSRPPrimitives.exerciseAlgorithm("
+ + srp.getAlgorithm() + ")");
+ try
+ {
+ String[] entry = tpasswd.lookup(user, srp.getAlgorithm());
+ BigInteger v = new BigInteger(1, Util.fromBase64(entry[0]));
+ byte[] s = Util.fromBase64(entry[1]);
+
+ String[] mpi = tpasswd.lookupConfig(entry[2]);
+ BigInteger N = new BigInteger(1, Util.fromBase64(mpi[0]));
+ BigInteger g = new BigInteger(1, Util.fromBase64(mpi[1]));
+
+ IKeyPairGenerator kpg = new SRPKeyPairGenerator();
+ HashMap attributes = new HashMap();
+ attributes.put(SRPKeyPairGenerator.SHARED_MODULUS, N);
+ attributes.put(SRPKeyPairGenerator.GENERATOR, g);
+ kpg.setup(attributes);
+
+ KeyPair clientKP = kpg.generate();
+ BigInteger A = ((SRPPublicKey) clientKP.getPublic()).getY();
+ BigInteger a = ((SRPPrivateKey) clientKP.getPrivate()).getX();
+
+ attributes.put(SRPKeyPairGenerator.USER_VERIFIER, v);
+ kpg.setup(attributes);
+
+ KeyPair serverKP = kpg.generate();
+ BigInteger B = ((SRPPublicKey) serverKP.getPublic()).getY();
+ BigInteger b = ((SRPPrivateKey) serverKP.getPrivate()).getX();
+
+ // compute u = H(A | B)
+ IMessageDigest hash = srp.newDigest();
+ byte[] buffy;
+ buffy = Util.trim(A);
+ hash.update(buffy, 0, buffy.length);
+ buffy = Util.trim(B);
+ hash.update(buffy, 0, buffy.length);
+
+ BigInteger u = new BigInteger(1, hash.digest());
+
+ // compute S = ((A * (v ** u)) ** b) % N
+ BigInteger S1 = A.multiply(v.modPow(u, N)).modPow(b, N);
+
+ // compute K = H(S) (as of rev 08)
+ byte[] s1Bytes = Util.trim(S1);
+ hash.update(s1Bytes, 0, s1Bytes.length);
+
+ byte[] K1 = hash.digest();
+
+ BigInteger x = new BigInteger(1, srp.computeX(s, user, password));
+
+ // compute S = ((B - (3 * (g ** x))) ** (a + (u * x))) % N
+ // compute S = ((B - (3 * v)) ** (a + (u * x))) % N
+ BigInteger S2 =
+ B.subtract(BigInteger.valueOf(3L).multiply(v))
+ .modPow(a.add(u.multiply(x)), N);
+
+ // compute K = H(S) (as of rev 08)
+ byte[] s2Bytes = Util.trim(S2);
+ hash.update(s2Bytes, 0, s2Bytes.length);
+
+ byte[] K2 = hash.digest();
+
+ harness.check(Arrays.equals(K1, K2)); // #1,4,7,10
+
+ // ===================================================================
+
+ String L = "ALSM=IE,Slsd=fi4fg_;asdg_gsdfmof"; // available options
+ String o = "KLK=FSOIIOAS,Oiasf,oaa=sdin_;asd"; // chosen options
+ byte[] sid = "abc".getBytes();
+ int ttl = 23;
+ byte[] cIV = new byte[16];
+ byte[] sIV = new byte[16];
+ byte[] sCB = "host.acme.com".getBytes();
+ byte[] cCB = "user@acme.com".getBytes();
+ byte[] cn = "client".getBytes();
+ byte[] sn = "server".getBytes();
+ prng.nextBytes(cIV);
+ prng.nextBytes(sIV);
+ byte[] cM1 = srp.generateM1(N, g, user, s, A, B, K1, user, L, cn, cCB);
+ byte[] cM2 =
+ srp.generateM2(A, cM1, K1, user, user, o, sid, ttl, cIV, sIV, sCB);
+ byte[] sM1 = srp.generateM1(N, g, user, s, A, B, K2, user, L, cn, cCB);
+ byte[] sM2 =
+ srp.generateM2(A, sM1, K2, user, user, o, sid, ttl, cIV, sIV, sCB);
+
+ harness.check(Arrays.equals(cM1, sM1)); // #2,5,8,11
+ harness.check(Arrays.equals(cM2, sM2)); // #3,6,9,12
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfSRPPrimitives.exerciseAlgorithm("
+ + srp.getAlgorithm() + ")");
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/gnu/javax/swing/CVS/Entries b/gnu/testlet/gnu/javax/swing/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/CVS/Entries.Log
new file mode 100644
index 00000000..5163499c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/text////
diff --git a/gnu/testlet/gnu/javax/swing/CVS/Repository b/gnu/testlet/gnu/javax/swing/CVS/Repository
new file mode 100644
index 00000000..63d135ac
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing
diff --git a/gnu/testlet/gnu/javax/swing/CVS/Root b/gnu/testlet/gnu/javax/swing/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/text/CVS/Entries.Log
new file mode 100644
index 00000000..b06f92f9
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/html////
diff --git a/gnu/testlet/gnu/javax/swing/text/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/CVS/Repository
new file mode 100644
index 00000000..62565aa3
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text
diff --git a/gnu/testlet/gnu/javax/swing/text/CVS/Root b/gnu/testlet/gnu/javax/swing/text/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries.Log
new file mode 100644
index 00000000..91e0e3e6
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/parser////
diff --git a/gnu/testlet/gnu/javax/swing/text/html/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/CVS/Repository
new file mode 100644
index 00000000..cf8b11d6
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html
diff --git a/gnu/testlet/gnu/javax/swing/text/html/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries.Log
new file mode 100644
index 00000000..86c31613
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/support////
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Repository
new file mode 100644
index 00000000..75ccad10
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries.Log
new file mode 100644
index 00000000..c240304d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Parser////
+A D/low////
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Repository
new file mode 100644
index 00000000..ea965fe7
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Entries
new file mode 100644
index 00000000..de077301
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Entries
@@ -0,0 +1,13 @@
+/Element_Test.java/1.4/Wed May 21 13:43:45 2008//
+/HTML_Test.java/1.4/Wed May 21 13:43:45 2008//
+/HTML_parsing.java/1.4/Wed May 21 13:43:45 2008//
+/HTML_randomTable.java/1.4/Wed May 21 13:43:45 2008//
+/ParserEntityResolverTest.java/1.4/Wed May 21 13:43:45 2008//
+/ParserTest.java/1.4/Thu Jan 19 16:34:58 2006//
+/Parser_Test.java/1.4/Thu Jan 19 16:34:58 2006//
+/TestCase.java/1.3/Thu Jan 19 16:34:58 2006//
+/Token_locations.java/1.4/Wed May 21 13:43:45 2008//
+/parameterDefaulter_Test.java/1.4/Wed May 21 13:43:45 2008//
+/supplementaryNotifications.java/1.4/Wed May 21 13:43:45 2008//
+/textPreProcessor_Test.java/1.4/Wed May 21 13:43:45 2008//
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Repository
new file mode 100644
index 00000000..bcdf6e5b
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java
new file mode 100644
index 00000000..1df57762
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Element_Test.java
@@ -0,0 +1,120 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.DTDConstants;
+import javax.swing.text.html.parser.Element;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Element_Test
+ extends TestCase
+ implements Testlet
+{
+ private Element element = null;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testAttributeGetter();
+ testName2type();
+ }
+ catch (Exception ex)
+ {
+ h.fail("Exception " + ex);
+ }
+ }
+
+ public void testAttributeGetter()
+ throws Exception
+ {
+ // Create a chain of 24 attributes:
+ AttributeList list = new AttributeList("heading");
+ AttributeList head = list;
+ list.value = null;
+ for (int i = 0; i < 24; i++)
+ {
+ AttributeList a = new AttributeList("a" + i);
+ a.value = "v" + i;
+ list.next = a;
+ list = a;
+ }
+
+ Element e = DTD.getDTD("test").getElement("e");
+ e.atts = head;
+
+ for (int i = 0; i < 24; i++)
+ {
+ // Check if the name is found.
+ assertEquals(e.getAttribute("a" + i).toString(), "a" + i);
+
+ // Check if the attribute value is correct.
+ assertEquals(e.getAttribute("a" + i).value, "v" + i);
+
+ // Check if the attribute can be found by value.
+ assertEquals(e.getAttributeByValue("v" + i).name, "a" + i);
+ }
+
+ // Check is the null value is searched correctly.
+ assertEquals(e.getAttributeByValue(null).toString(), "heading");
+
+ // Check for unknown attribute
+ assertEquals(e.getAttribute("audrius"), null);
+
+ // Check for unknown value
+ assertEquals(e.getAttributeByValue("audrius"), null);
+ }
+
+ public void testName2type()
+ {
+ assertEquals(Element.name2type("CDATA"), DTDConstants.CDATA);
+ assertEquals(Element.name2type("RCDATA"), DTDConstants.RCDATA);
+ assertEquals(Element.name2type("EMPTY"), DTDConstants.EMPTY);
+ assertEquals(Element.name2type("ANY"), DTDConstants.ANY);
+
+ assertEquals(Element.name2type("audrius"), 0);
+ assertEquals(Element.name2type("rcdata"), 0);
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ protected void tearDown()
+ throws Exception
+ {
+ element = null;
+ super.tearDown();
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java
new file mode 100644
index 00000000..59322bfd
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_Test.java
@@ -0,0 +1,127 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+
+public class HTML_Test
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testCaseSensitivity();
+ testConstructor();
+ testGetAttributeKey();
+ testGetIntegerAttributeValue();
+ testGetTag();
+ }
+
+ /**
+ * By the language definition, HTML tags and attributes are case
+ * insensitive. Hence if it is not clearly specified, in which case
+ * the tag name must be, it should be expected to come as in
+ * lowercase, as in uppercase. This should be true for HTML.getTag(String)
+ * and for HTML.getAttributeKey(String).
+ *
+ * In some implementations these two functions may be case sensitive.
+ * As this requirement is not mentioned in the documentation,
+ * and also it is not documented, in which case the name must be supplied,
+ * this will be reported as an error in this test.
+ * The GNU CLASSPATH implementation is case insensitive.
+ */
+ public void testCaseSensitivity()
+ {
+ String def = "case sensitivity";
+ assertEquals("html=Html", HTML.getTag("html"), HTML.getTag("HtmL"));
+ assertEquals("html=HTML", HTML.getTag("html"), HTML.getTag("HTML"));
+ assertEquals("size=SIZE", HTML.getAttributeKey("size"),
+ HTML.getAttributeKey("SIZE")
+ );
+ assertEquals("size=SizE", HTML.getAttributeKey("size"),
+ HTML.getAttributeKey("SizE")
+ );
+ }
+
+ public void testConstructor()
+ {
+ new HTML();
+ }
+
+ public void testGetAttributeKey()
+ {
+ // Test the known tags.
+ String[] mine = toStrings(HTML.getAllAttributeKeys());
+
+ for (int i = 0; i < mine.length; i++)
+ assertNotNull(mine [ i ], HTML.getAttributeKey(mine [ i ]));
+
+ // Test the unknown tag.
+ assertNull("surely unknown", HTML.getTag("audrius"));
+ }
+
+ public void testGetIntegerAttributeValue()
+ {
+ SimpleAttributeSet ase = new SimpleAttributeSet();
+ ase.addAttribute(HTML.getAttributeKey("size"), "222");
+ assertEquals(222,
+ HTML.getIntegerAttributeValue(ase,
+ HTML.getAttributeKey("size"), 333
+ )
+ );
+
+ assertEquals(333,
+ HTML.getIntegerAttributeValue(ase,
+ HTML.getAttributeKey("href"), 333
+ )
+ );
+ }
+
+ public void testGetTag()
+ {
+ // known tags:
+ String[] mine = toStrings(HTML.getAllTags());
+
+ for (int i = 0; i < mine.length; i++)
+ assertNotNull(mine [ i ], HTML.getTag(mine [ i ]));
+
+ // unknown tag
+ assertNull("surely unknown", HTML.getTag("audrius"));
+ }
+
+ private String[] toStrings(Object[] objs)
+ {
+ String[] a = new String[ objs.length ];
+
+ for (int i = 0; i < a.length; i++)
+ a [ i ] = objs [ i ].toString();
+
+ return a;
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java
new file mode 100644
index 00000000..0a25241d
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_parsing.java
@@ -0,0 +1,283 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase Parser_Test
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class HTML_parsing
+ extends TestCase
+ implements Testlet
+{
+ /**
+ * This is used for profiling.
+ */
+ public static void main(String[] args)
+ {
+ long t = System.currentTimeMillis();
+ try
+ {
+ HTML_parsing p = new HTML_parsing();
+ for (int i = 0; i < 2000; i++)
+ {
+ p.testHTMLParsing();
+ if (i % 10 == 0)
+ System.out.print('.');
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ System.out.println("TIME " + (System.currentTimeMillis() - t));
+ }
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testHTMLParsing();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception " + ex);
+ }
+ }
+
+ public void testHTMLParsing()
+ throws Exception
+ {
+ Parser_Test v = new Parser_Test();
+ v.hideImplied = false;
+
+ // Test subsequent tags.
+ v.verify("<b><i><u>text</b><i></u>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><b><i><u>'text'</b><i></u></i></i></body></html>"
+ );
+
+ // Test entities.
+ v.verify("hex: &#x55; eqdec: &#61; ampnamed: &amp;",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'>'hex: U eqdec: = ampnamed: &'</body></html>"
+ );
+
+ // Test comments.
+ v.verify("<html><head></head><body><!--a-->< !--b--><! --c--><!-- d--><!--e --><!--f-- ><!--g--><!---h---><!-- i --><!--- j ---><!-- -- --> <b> <!---------->",
+ "<html><head></head><body>{a}{b}{c}{ d}{e }{f}{g}{-h-}{ i }{- j -}{ -- }<b>{------}</b></body></html>"
+ );
+
+ // Test unclosed tags.
+ v.verify("<hr id = 1 class = c<hr id=2>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><hr class='c' id='1'/><hr id='2'/></body></html>"
+ );
+
+ // Test errors and unclosed tags.
+ v.verify("<b#r><hr id = 1 # class = c<hr id=2>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><b><hr id='1'/>'# class = c'<hr id='2'/></b></body></html>"
+ );
+
+ // Test script.
+ v.verify("<hr id=1><script a=b c=d><hr id=1></script><hr id=1>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><hr id='1'/><script a='b' c='d'>'<hr id=1>'</script><hr id='1'/></body></html>"
+ );
+
+ // Test valid attributes.
+ v.verify("<hr id='i' title=\"tit\" class=cl><hr><hr id = 2>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><hr class='cl' id='i' title='tit'/><hr/><hr id='2'/></body></html>"
+ );
+
+ // Test unknown attribute without value.
+ v.verify("<hr audrius title=\"tit\">",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><hr audrius='#DEFAULT' title='tit'/></body></html>"
+ );
+
+ // Test known attributes witout value.
+ v.verify("<option id=a selected><option id=b selected = selected class=cC><input checked>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><option id='a' selected='selected'></option></body><body _implied_='true'><option class='cC' id='b' selected='selected'></option><input checked='checked'/></body></html>"
+ );
+
+ // Test table content model.
+ v.verify("<table>a</table>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr _implied_='true'><td _implied_='true'>'a'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test table content model.
+ v.verify("<table><caption>cap</caption>a</table>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><caption>'cap'</caption><tbody _implied_='true'><tr _implied_='true'><td _implied_='true'>'a'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test typical table.
+ v.verify("<table><tr><td>x</td><td>y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr><td>'x'</td><td>'y'</td><td>'z'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test nested table.
+ v.verify("<table><tr><td><table>nested</table>x</td><td>y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr><td><table><tbody _implied_='true'><tr _implied_='true'><td _implied_='true'>'nested'</td></tr></tbody></table>'x'</td><td>'y'</td><td>'z'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test simple nested list.
+ v.verify("<ul><li>a</li><ul><li>na</li><li>nb</li></ul><li>b</li></ul>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><ul><li>'a'</li><ul><li>'na'</li><li>'nb'</li></ul><li>'b'</li></ul></body></html>"
+ );
+
+ // Test simple non-nested list.
+ v.verify("<ul><li>a</li><li>na</li><li>nb</li><li>b</li></ul>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><ul><li>'a'</li><li>'na'</li><li>'nb'</li><li>'b'</li></ul></body></html>"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ v.verify("<ul><li>a<li>na<li>nb<li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><ul><li>'a'</li><li>'na'</li><li>'nb'</li><li>'b'</li></ul></body></html>"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ v.verify("<ul><li>a<ul><li>na<li>nb</ul><li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><ul><li>'a'<ul><li>'na'</li><li>'nb'</li></ul></li><li>'b'</li></ul></body></html>"
+ );
+
+ // Test Obsolete table.
+ v.verify("<table><tr><td>a<td>b<td>c</tr>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr><td>'a'</td><td>'b'</td><td>'c'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test html no head no body.
+ v.verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>'text'</body></html>"
+ );
+
+ // Test head only.
+ v.verify("<head></head>text",
+ "<html _implied_='true'><head></head><body _implied_='true'>'text'</body></html>"
+ );
+
+ // Test head and body.
+ v.verify("<head><title>ti</title></head><body>text",
+ "<html _implied_='true'><head><title>'ti'</title></head><body>'text'</body></html>"
+ );
+
+ // Test title and text.
+ v.verify("<title>title</title>text",
+ "<html _implied_='true'><head _implied_='true'><title>'title'</title></head><body _implied_='true'>'text'</body></html>"
+ );
+
+ // Test html only.
+ v.verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>'text'</body></html>"
+ );
+
+ // Test body only.
+ v.verify("<body>text</body>",
+ "<html _implied_='true'><head _implied_='true'></head><body>'text'</body></html>"
+ );
+
+ // Test head only.
+ v.verify("<head></head>text",
+ "<html _implied_='true'><head></head><body _implied_='true'>'text'</body></html>"
+ );
+
+ // Test obsolete table.
+ v.verify("<table><tr><td>a</td><tr><td>a</td>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr><td>'a'</td></tr><tr><td>'a'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test obsolete table.
+ v.verify("<table><tr><td>a<td>b<tr><td>a<td>b<td>c",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><tbody _implied_='true'><tr><td>'a'</td><td>'b'</td></tr><tr><td>'a'</td><td>'b'</td><td>'c'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test style.
+ v.verify("<html><head><style><hr id=2></style></head><hr id = b>",
+ "<html><head><style>'<hr id=2>'</style></head><body _implied_='true'><hr id='b'/></body></html>"
+ );
+
+ // Test style.
+ v.verify("<style><hr id=2></style>x",
+ "<html _implied_='true'><head _implied_='true'><style>'<hr id=2>'</style></head><body _implied_='true'>'x'</body></html>"
+ );
+
+ // Test entities in attributes.
+ v.verify("<hr id='id_&#x41;&#90' class= \"&#89;_&amp;\" >",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><hr class='Y_&' id='id_AZ'/></body></html>"
+ );
+
+ // Test colgroup.
+ v.verify("<table><COLGROUP width=\"25\"><COL span=\"45\"><COL id=\"identifier\"></COLGROUP><td>a<td>b<tr>x",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><table><colgroup width='25'><col span='45'/><col id='identifier'/></colgroup><tbody _implied_='true'><tr _implied_='true'><td>'a'</td><td>'b'</td></tr><tr><td _implied_='true'>'x'</td></tr></tbody></table></body></html>"
+ );
+
+ // Test definition list, obsolete.
+ v.verify("<dl><dt>ha<dd>a<dt>hb<dd>b",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><dl><dt>'ha'</dt><dd>'a'</dd><dt>'hb'</dt><dd>'b'</dd></dl></body></html>"
+ );
+
+ // Test definition list.
+ v.verify("<html><head></head><body><dl><dt>'ha'</dt><dd>'a'</dd><dt>'hb'</dt><dd>'b'</dd></dl></body></html>",
+ "<html><head></head><body><dl><dt>''ha''</dt><dd>''a''</dd><dt>''hb''</dt><dd>''b''</dd></dl></body></html>"
+ );
+
+ // Test paragraphs.
+ v.verify("<p>b<p>c<p>d",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><p>'b'</p><p>'c'</p><p>'d'</p></body></html>"
+ );
+
+ // Test paragraphs.
+ v.verify("<p>'b'</p><p>'c'</p><p>'d'</p>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><p>''b''</p><p>''c''</p><p>''d''</p></body></html>"
+ );
+
+ // Test select obsolete.
+ v.verify("<form><select><option value='hi' disabled>a<option selected>b<option>normal",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><form><select><option disabled='disabled' value='hi'>'a'</option><option selected='selected'>'b'</option><option>'normal'</option></select></form></body></html>"
+ );
+
+ // Test select current.
+ v.verify("<form><select><option>'a'</option><option SELECTED='selected'>'b'</option></select></form>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><form><select><option>''a''</option><option selected='selected'>''b''</option></select></form></body></html>"
+ );
+
+ // Test select current.
+ v.verify("<form><select><option>after<optgroup><option>'a'</option><option SELECTED='selected'>'b'</option></optgroup></select></form>",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'><form><select><option>'after'</option><optgroup><option>''a''</option><option selected='selected'>''b''</option></optgroup></select></form></body></html>"
+ );
+
+ // Test << antihang.
+ v.verify("<<i>text",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'>'<'<i>'text'</i></body></html>"
+ );
+
+ // Test << antihang with spaces.
+ v.verify(" < < i>text",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'>'<'<i>'text'</i></body></html>"
+ );
+
+ // Test Standalone <.
+ v.verify("Text <wrong tag is it! <b> text ",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'>'Text''<wrong tag is it!'<b>'text'</b></body></html>"
+ );
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java
new file mode 100644
index 00000000..f5feed13
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/HTML_randomTable.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase Parser_Test
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Random;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class HTML_randomTable
+ extends TestCase
+ implements Testlet
+{
+ class table
+ {
+ final String[][] rows;
+ final boolean caption = r.nextBoolean();
+
+ table()
+ {
+ int nrows = r.nextInt(5) + 1;
+ rows = new String[ nrows ][];
+ for (int i = 0; i < rows.length; i++)
+ {
+ int ncol = r.nextInt(5) + 1;
+ rows [ i ] = new String[ ncol ];
+ for (int j = 0; j < rows [ i ].length; j++)
+ {
+ rows [ i ] [ j ] = "C_" + i + "_" + j;
+ }
+ }
+ }
+
+ public String getHtml()
+ {
+ StringBuffer b = new StringBuffer("<html><head></head><body><table>");
+ if (caption)
+ b.append("<caption>capt</caption>");
+ if (r.nextBoolean())
+ b.append("<" + s() + "tbody" + s() + ">");
+ for (int row = 0; row < rows.length; row++)
+ {
+ b.append("<" + s() + "tr" + s() + ">");
+ for (int col = 0; col < rows [ row ].length; col++)
+ {
+ b.append("<" + s() + "td" + s() + ">");
+ b.append(rows [ row ] [ col ]);
+ if (r.nextBoolean())
+ b.append("<" + s() + "/" + "td" + s() + ">");
+ }
+ if (r.nextBoolean())
+ b.append("<" + s() + "/" + "tr" + s() + ">");
+ }
+ b.append("</tbody></table></body></html>");
+ return b.toString();
+ }
+
+ public String getTrace()
+ {
+ StringBuffer b = new StringBuffer("<html><head></head><body><table>");
+ if (caption)
+ b.append("<caption>'capt'</caption>");
+ b.append("<tbody>");
+ for (int row = 0; row < rows.length; row++)
+ {
+ b.append("<tr>");
+ for (int col = 0; col < rows [ row ].length; col++)
+ {
+ b.append("<td>'" + rows [ row ] [ col ] + "'</td>");
+ }
+ b.append("</tr>");
+ }
+ b.append("</tbody></table></body></html>");
+ return b.toString();
+ }
+
+ void test()
+ throws Exception
+ {
+ String trace = getTrace();
+ String html = getHtml();
+ v.verify(html, trace);
+ }
+ }
+
+ Parser_Test v = new Parser_Test();
+ Random r = new Random();
+
+ public HTML_randomTable()
+ throws Exception
+ {
+ }
+
+ public String s()
+ {
+ if (r.nextBoolean())
+ return "";
+
+ StringBuffer b = new StringBuffer();
+ int spc = r.nextInt(4);
+ for (int i = 0; i < spc; i++)
+ {
+ b.append(' ');
+ }
+ return b.toString();
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ testTableParsing();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ /**
+ * Try 1001 variable randomly generated table.
+ */
+ public void testTableParsing()
+ throws Exception
+ {
+ v.hideImplied = true;
+ for (int i = 0; i < 1001; i++)
+ {
+ new table().test();
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java
new file mode 100644
index 00000000..f4a2e1c2
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserEntityResolverTest.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.javax.swing.text.html.parser.HTML_401F;
+import gnu.javax.swing.text.html.parser.support.Parser;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class ParserEntityResolverTest
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ testResolver();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ /* Testing private methods of entity resolver. */
+ public void testResolver()
+ throws Exception
+ {
+ Parser p =
+ new Parser(HTML_401F.getInstance())
+ {
+ public void error(String a, String b)
+ {
+ }
+ };
+
+ Method rn =
+ p.getClass().getSuperclass().getDeclaredMethod("resolveNamedEntity",
+ new Class[] { String.class }
+ );
+ rn.setAccessible(true);
+
+ assertEquals(exe(p, rn, "&amp"), "&");
+ assertEquals(exe(p, rn, "&AMP"), "&");
+ assertEquals(exe(p, rn, "&amp"), "&");
+ assertEquals(exe(p, rn, "&amP"), "&");
+
+ assertEquals(exe(p, rn, "&;"), "&;");
+ assertEquals(exe(p, rn, "&audrius;"), "&audrius;");
+
+ rn =
+ p.getClass().getSuperclass().getDeclaredMethod("resolveNumericEntity",
+ new Class[] { String.class }
+ );
+ rn.setAccessible(true);
+
+ assertEquals(exe(p, rn, "&#x55"), "U");
+ assertEquals(exe(p, rn, "&#X55"), "U");
+ assertEquals(exe(p, rn, "&#61"), "=");
+ assertEquals(exe(p, rn, "&#61"), "=");
+
+ assertEquals(exe(p, rn, "&#audrius"), "?");
+ }
+
+ private String exe(Parser p, Method m, String arg)
+ throws Exception
+ {
+ Object[] o = new Object[ 1 ];
+ o [ 0 ] = arg;
+ return m.invoke(p, o).toString();
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java
new file mode 100644
index 00000000..cab38898
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/ParserTest.java
@@ -0,0 +1,131 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import java.io.PrintStream;
+import java.util.Enumeration;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.TagElement;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class ParserTest
+ extends gnu.javax.swing.text.html.parser.support.Parser
+{
+ PrintStream out = System.out;
+ StringBuffer errors = new StringBuffer();
+
+ public ParserTest()
+ {
+ super(gnu.javax.swing.text.html.parser.HTML_401F.getInstance());
+ }
+
+ public static void main(String[] args)
+ {
+ String sx;
+ sx =
+ "<html><head></head><body><table>< tbody><tr >< td >C_0_0< td>C_0_1< td >C_0_2< /td >< td >C_0_3<td>C_0_4< /td></tr ></tbody></table></body></html>";
+ try
+ {
+ System.out.println(sx);
+
+ ParserTest t = new ParserTest();
+ t.parse(new java.io.StringReader(sx));
+ System.out.println("\nErrors:");
+ System.out.println(t.errors);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ protected void handleComment(char[] parm1)
+ {
+ out.print("{" + new String(parm1) + "}");
+ }
+
+ protected void handleEOFInComment()
+ {
+ out.print(" [EOF in comment] ");
+ }
+
+ protected void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ out.print("<" + tag);
+
+ javax.swing.text.AttributeSet atts = getAttributes();
+ dumpAttributes(atts);
+ out.print("/>");
+ }
+
+ protected void handleEndTag(TagElement tag)
+ {
+ out.print("</" + tag + "> ");
+ }
+
+ protected void handleError(int line, String message)
+ {
+ errors.append(message);
+ errors.append('\n');
+ }
+
+ protected void handleStartTag(TagElement tag)
+ {
+ out.print("<" + tag);
+
+ javax.swing.text.AttributeSet atts = getAttributes();
+ dumpAttributes(atts);
+ out.print('>');
+ }
+
+ protected void handleText(char[] parm1)
+ {
+ out.print("'" + new String(parm1) + "'");
+ }
+
+ protected void handleTitle(char[] parm1)
+ {
+ out.print(" [ Title: " + new String(parm1) + "] ");
+ }
+
+ protected void markFirstTime(Element element)
+ {
+ out.print("(1:" + element + ")");
+ }
+
+ private void dumpAttributes(AttributeSet atts)
+ {
+ Enumeration e = atts.getAttributeNames();
+ while (e.hasMoreElements())
+ {
+ String a = e.nextElement().toString();
+ String v = (String) atts.getAttribute(a);
+ out.print(" " + a + "='" + v + "'");
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
new file mode 100644
index 00000000..da65de51
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
@@ -0,0 +1,142 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import java.io.StringReader;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Parser_Test
+ extends HTMLEditorKit.ParserCallback
+{
+ public boolean hideImplied = true;
+ protected StringBuffer out = new StringBuffer();
+ AttributeSet atts = new SimpleAttributeSet();
+
+ public void generate(String x, String comment)
+ throws Exception
+ {
+ String prolog = "<html><head></head><body>";
+ String epilog = "</body></html>";
+ String html = x; // prolog+x+epilog;
+ System.out.println("// Test " + comment + ".");
+ System.out.println("v.verify(\"" + html + "\",\n \"" + verify(html, null) +
+ "\");"
+ );
+ }
+
+ public void handleComment(char[] parm1, int position)
+ {
+ out.append("{" + new String(parm1) + "}");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ out.append("</" + tag + ">");
+ }
+
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char[] chars, int position)
+ {
+ out.append("'" + new String(chars) + "'");
+ }
+
+ public String verify(String html, String trace)
+ throws Exception
+ {
+ out.setLength(0);
+
+ HTMLEditorKit.ParserCallback callback = this;
+ ParserDelegator delegator = new ParserDelegator();
+ delegator.parse(new StringReader(html), callback, true);
+
+ String ou = out.toString();
+ if (trace != null)
+ {
+ if (!ou.equals(trace))
+ {
+ System.err.println("Unable to parse '" + html + "':");
+ System.err.println(" expected: '" + trace + "',");
+ System.out.println(" returned: '" + ou + "'.");
+ throw new Exception("'" + html + "' -> '" + ou + "' expected '" +
+ trace + "'"
+ );
+ }
+ }
+ return ou;
+ }
+
+ protected void dumpAttributes(AttributeSet atts)
+ {
+ Enumeration e = atts.getAttributeNames();
+
+ // Sort them to ensure the same order every time:
+ TreeSet t = new TreeSet();
+ while (e.hasMoreElements())
+ t.add(e.nextElement().toString());
+
+ Iterator iter = t.iterator();
+
+ while (iter.hasNext())
+ {
+ String a = iter.next().toString();
+
+ if (hideImplied)
+ if (a.equals("_implied_"))
+ continue;
+
+ String v = atts.getAttribute(a).toString();
+ out.append(" " + a + "='" + v + "'");
+ }
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java
new file mode 100644
index 00000000..0d0b164c
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/TestCase.java
@@ -0,0 +1,112 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * A helper class, not a test.
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class TestCase
+{
+ public TestHarness h;
+
+ public TestCase()
+ {
+ try
+ {
+ setUp();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void assertEquals(String msg, Object a, Object b)
+ {
+ if (a==b) return;
+ h.check(a, b, msg);
+ }
+
+ public void assertEquals(Object a, Object b)
+ {
+ if (a==b) return;
+ h.check(a, b);
+ }
+
+ public void assertEquals(int a, int b)
+ {
+ h.check(a, b);
+ }
+
+ public void assertEquals(String msg, int a, int b)
+ {
+ h.check(a, b, msg);
+ }
+
+ public void assertEquals(boolean a, boolean b)
+ {
+ h.check(a, b);
+ }
+
+ public void assertFalse(String msg, boolean a)
+ {
+ h.check(!a, msg);
+ }
+
+ public void assertFalse(boolean a)
+ {
+ h.check(!a, "Must be false");
+ }
+
+ public void assertNotNull(String msg, Object a)
+ {
+ h.check(a != null, "Must be not null");
+ }
+
+ public void assertNull(String msg, Object a)
+ {
+ h.check(a == null, "Must be null");
+ }
+
+ public void assertTrue(String msg, boolean a)
+ {
+ h.check(a, msg);
+ }
+
+ public void assertTrue(boolean a)
+ {
+ h.check(a, "must be True");
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ }
+
+ protected void tearDown()
+ throws Exception
+ {
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java
new file mode 100644
index 00000000..5aabc2e6
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Token_locations.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase Parser_Test
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Token_locations
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testHTMLParsing();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ public void testHTMLParsing()
+ throws Exception
+ {
+ Parser_Test v =
+ new Parser_Test()
+ {
+ public void handleSimpleTag(HTML.Tag tag,
+ MutableAttributeSet attributes, int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag + "[" + position + "]");
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag,
+ MutableAttributeSet attributes, int position
+ )
+ {
+ if (tag.toString().equalsIgnoreCase("tbody"))
+ return;
+ out.append("<" + tag + "[" + position + "]");
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char[] chars, int position)
+ {
+ out.append("'" + new String(chars) + "[" + position + "]'");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ if (tag.toString().equalsIgnoreCase("tbody"))
+ return;
+ out.append("</" + tag + "[" + position + "]>");
+ }
+
+ public void handleComment(char[] parm1, int position)
+ {
+ out.append("{" + new String(parm1) + "[" + position + "]}");
+ }
+ };
+
+ v.hideImplied = true;
+
+ // 0123456789012345678901234567890
+ v.verify("<table><tr><td>a<td>b<td>c</tr>",
+ "<html[0]><head[0]></head[0]><body[0]><table[0]>" +
+ "<tr[7]><td[11]>'a[15]'</td[16]><td[16]>'b[20]'</td[21]>" +
+ "<td[21]>'c[25]'</td[26]></tr[26]></table[26]></body[26]>" +
+ "</html[26]>"
+ );
+
+ // 0123456789012345678901234567890
+ v.verify("a<!-- comment -->b<!-- comment2 -->",
+ "<html[0]><head[0]></head[0]><body[0]>'a[0]'{ comment [1]}'b[17]'" +
+ "{ comment2 [18]}</body[18]></html[18]>"
+ );
+
+ // 012345678901234567
+ v.verify("<p>b<p>c<p>d",
+ "<html[0]><head[0]></head[0]><body[0]><p[0]>'b[3]'</p[4]><p[4]>'" +
+ "c[7]'</p[8]><p[8]>'d[11]'</p[11]></body[11]></html[11]>"
+ );
+
+ // Test SGML
+ v.verify("<! the sgml construct >sgml",
+ "<html[23]><head[23]></head[23]><body[23]>" +
+ "'sgml[23]'</body[23]></html[23]>"
+ );
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java
new file mode 100644
index 00000000..b00dc134
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/parameterDefaulter_Test.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.javax.swing.text.html.parser.HTML_401F;
+import gnu.javax.swing.text.html.parser.htmlAttributeSet;
+import gnu.javax.swing.text.html.parser.support.parameterDefaulter;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.html.HTML.Attribute;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class parameterDefaulter_Test
+ extends TestCase
+ implements Testlet
+{
+ parameterDefaulter defaulter;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testDefaultValues();
+ }
+
+ public void testDefaultValues()
+ {
+ AttributeSet d;
+ d = defaulter.getDefaultParameters("FrAmE");
+ assertEquals(d.getAttribute("scrolling"), "auto");
+ d = defaulter.getDefaultParameters("input");
+ assertEquals(d.getAttribute("type"), "text");
+
+ htmlAttributeSet hma = new htmlAttributeSet();
+ hma.setResolveParent(d);
+ hma.addAttribute("ku", "1");
+ hma.addAttribute(Attribute.ACTION, "sleep");
+
+ assertEquals(hma.getAttribute("action"), "sleep");
+ assertEquals(hma.getAttribute(Attribute.ACTION), "sleep");
+ assertEquals(hma.getAttribute("ku"), "1");
+
+ // Calling the parent:
+ assertEquals(hma.getAttribute(Attribute.TYPE), "text");
+
+ d = defaulter.getDefaultParameters("audrius");
+ assertEquals(d.getAttribute("scrolling"), null);
+ }
+
+ protected void setUp()
+ {
+ defaulter = new parameterDefaulter(HTML_401F.getInstance());
+ }
+
+ protected void tearDown()
+ throws java.lang.Exception
+ {
+ defaulter = null;
+ super.tearDown();
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java
new file mode 100644
index 00000000..8a78ba25
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/supplementaryNotifications.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase Parser_Test
+
+// supplementaryNotifications.java --
+// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class supplementaryNotifications
+ extends TestCase
+ implements Testlet
+{
+ String eoln = null;
+ int flushed = 0;
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ testHTMLParsing();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ public void testHTMLParsing()
+ throws Exception
+ {
+ Parser_Test v =
+ new Parser_Test()
+ {
+ public void handleEndOfLineString(String end_of_line)
+ {
+ eoln = end_of_line;
+ }
+
+ public void flush()
+ {
+ flushed++;
+ }
+ };
+
+ v.hideImplied = true;
+
+ v.verify("a \n b", "<html><head></head><body>'a b'</body></html>");
+
+ assertEquals(eoln, "\n");
+
+ v.verify("a \r b", "<html><head></head><body>'a b'</body></html>");
+
+ assertEquals(eoln, "\r");
+
+ v.verify("a \r\n b", "<html><head></head><body>'a b'</body></html>");
+
+ assertEquals(eoln, "\r\n");
+
+ assertEquals(flushed, 3);
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java
new file mode 100644
index 00000000..204509f7
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/textPreProcessor_Test.java
@@ -0,0 +1,144 @@
+// Tags: JDK1.2 GNU
+// Uses: TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import gnu.javax.swing.text.html.parser.support.textPreProcessor;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class textPreProcessor_Test
+ extends TestCase
+ implements Testlet
+{
+ textPreProcessor p = new textPreProcessor();
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testPreFormattedPreProcessing();
+ testStandardPreProcessing();
+ }
+
+ public void testPreFormattedPreProcessing()
+ {
+ verifyF("rnrn...r.n.Q.Q.r.n.rn.Q...r.r.rn", "n...n.n.Q.Q.n.n.n.Q...n.n.");
+ verifyF("...r.n.Q.Q.r.n.rn.Q...r.r.n", "...n.n.Q.Q.n.n.n.Q...n.n.");
+ verifyF("r...r.n.Q.Q.r.n.rn.Q...r.r.n", "...n.n.Q.Q.n.n.n.Q...n.n.");
+ verifyF("Q", "Q");
+ verifyF(".", ".");
+ verifyF("abc..\t..xyz", "abc..\t..xyz");
+ verifyF("abcxyz", "abcxyz");
+ }
+
+ public void testStandardPreProcessing()
+ {
+ verifyS("...r.n.Q.Q.r.n.rn.Q...r.r.n", "Q.Q.Q");
+ verifyS("r...r.n.Q.Q.r.n.rn.Q...r.r.n", "Q.Q.Q");
+ verifyS("Q", "Q");
+ verifyS(" ", null);
+ verifyS(" \r\n", null);
+ verifyS("abc..\t..xyz", "abc.xyz");
+ verifyS("abcxyz", "abcxyz");
+ }
+
+ StringBuffer fromText(String x)
+ {
+ StringBuffer b = new StringBuffer();
+ char c;
+ for (int i = 0; i < x.length(); i++)
+ {
+ c = x.charAt(i);
+
+ if (c == 'n')
+ b.append('\n');
+ else if (c == 'r')
+ b.append('\r');
+ else if (c == '.')
+ b.append(' ');
+ else
+ b.append(c);
+ }
+ return b;
+ }
+
+ StringBuffer toText(String x)
+ {
+ StringBuffer b = new StringBuffer();
+ char c;
+ for (int i = 0; i < x.length(); i++)
+ {
+ c = x.charAt(i);
+
+ if (c == '\n')
+ b.append('n');
+ else if (c == '\r')
+ b.append('r');
+ else if (c == ' ')
+ b.append('.');
+ else
+ b.append(c);
+ }
+ return b;
+ }
+
+ void verifyF(String text, String result)
+ {
+ char[] pp = p.preprocessPreformatted(fromText(text));
+
+ if (result == null && pp == null)
+ return;
+
+ String processed = new String(pp);
+
+ processed = toText(processed).toString();
+
+ if (!processed.equals(result))
+ {
+ System.err.println(result);
+ System.out.println(processed);
+ }
+ assertEquals(text, result, processed);
+ }
+
+ void verifyS(String text, String result)
+ {
+ char[] pp = p.preprocess(fromText(text));
+
+ if (result == null && pp == null)
+ return;
+
+ String processed = new String(pp);
+
+ processed = toText(processed).toString();
+
+ if (!processed.equals(result))
+ {
+ System.err.println(result);
+ System.out.println(processed);
+ }
+ assertEquals(text, result, processed);
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/Buffer_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/Buffer_Test.java
new file mode 100644
index 00000000..269dac1a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/Buffer_Test.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2 GNU
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.low.Buffer;
+
+import gnu.javax.swing.text.html.parser.support.low.Buffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Buffer_Test
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testAppend();
+ testDelete();
+ }
+
+ public void testAppend()
+ {
+ Buffer.INITIAL_SIZE = 2;
+
+ Buffer b = new Buffer("01");
+ b.append('A', 0);
+ b.append('B', 0);
+ assertEquals(b.toString(), "01AB");
+ }
+
+ public void testDelete()
+ {
+ Buffer b = new Buffer("0123456789ABCDEFGHIJKLMN");
+ b.delete(2, 7);
+ assertEquals(b.toString(), "01789ABCDEFGHIJKLMN");
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Entries
new file mode 100644
index 00000000..122477ba
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Entries
@@ -0,0 +1,2 @@
+/Buffer_Test.java/1.2/Thu Jan 19 16:34:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Repository
new file mode 100644
index 00000000..ad37abdb
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Buffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries.Log b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries.Log
new file mode 100644
index 00000000..a6661bf0
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/Buffer////
+A D/Constants////
+A D/ReaderTokenizer////
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Repository
new file mode 100644
index 00000000..29308eb8
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support/low
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Entries
new file mode 100644
index 00000000..e31e478a
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Entries
@@ -0,0 +1,2 @@
+/Constants_Test.java/1.2/Thu Jan 19 16:34:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Repository
new file mode 100644
index 00000000..89758a64
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/Constants_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/Constants_Test.java
new file mode 100644
index 00000000..f0aa1814
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/Constants/Constants_Test.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2 GNU
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.low.Constants;
+
+import gnu.javax.swing.text.html.parser.support.low.Buffer;
+import gnu.javax.swing.text.html.parser.support.low.Constants;
+import gnu.javax.swing.text.html.parser.support.low.Token;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Constants_Test
+ extends TestCase
+ implements Testlet
+{
+ Constants c = new Constants();
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testCases();
+ }
+
+ public void testCases()
+ {
+ verify("x stYle ", c.STYLE, "stYle");
+ verify("x !style!", c.STYLE, "style");
+ verify("x !Script!", c.SCRIPT, "Script");
+ verify(" \r\t\n z", c.WS, " \r\t\n ");
+ verify("123 ", c.NUMTOKEN, "123");
+ verify("AaB123#", c.NUMTOKEN, "AaB123");
+ verify("x-- ", c.DOUBLE_DASH, "--");
+ verify("x--- ", c.DOUBLE_DASH, "--");
+
+ verify("z&entitu ", c.ENTITY, "&entitu");
+
+ verifyNull("x stYle");
+ verifyNull("x !style");
+ verifyNull("x !Script");
+ verifyNull(" \r\t\n ");
+ verifyNull("123");
+ verifyNull("AaB123");
+ verifyNull("x--");
+ }
+
+ public void verify(String sequence, int kind, String image)
+ {
+ Token t = c.endMatches(new Buffer(sequence));
+ assertEquals(kind, t.kind);
+ assertEquals(image, t.getImage());
+ }
+
+ public void verifyNull(String sequence)
+ {
+ Token t = c.endMatches(new Buffer(sequence));
+ assertNull("The end should not match any token", t);
+ }
+}
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Entries b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Entries
new file mode 100644
index 00000000..a9ae0616
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Entries
@@ -0,0 +1,2 @@
+/ReaderTokenizer_Test.java/1.2/Thu Jan 19 16:34:58 2006//
+D
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Repository b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Repository
new file mode 100644
index 00000000..c86f26ea
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Root b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/ReaderTokenizer_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/ReaderTokenizer_Test.java
new file mode 100644
index 00000000..358ef8d9
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer/ReaderTokenizer_Test.java
@@ -0,0 +1,160 @@
+// Tags: JDK1.2 GNU
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.low.ReaderTokenizer;
+
+import gnu.javax.swing.text.html.parser.support.low.Constants;
+import gnu.javax.swing.text.html.parser.support.low.ReaderTokenizer;
+import gnu.javax.swing.text.html.parser.support.low.Token;
+import gnu.javax.swing.text.html.parser.support.low.node;
+import gnu.javax.swing.text.html.parser.support.low.pattern;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import java.io.StringReader;
+
+import java.util.ArrayList;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class ReaderTokenizer_Test
+ extends TestCase
+ implements Testlet
+{
+ ReaderTokenizer rt = new ReaderTokenizer();
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testComplexToken();
+ testReadingAndAhead();
+ }
+ catch (Exception ex)
+ {
+ h.fail("Excpetion " + ex);
+ }
+ }
+
+ public void testComplexToken()
+ throws Exception
+ {
+ String x = "< style >x";
+
+ pattern a =
+ new pattern(new node[]
+ {
+ new node(Constants.BEGIN), new node(Constants.NUMTOKEN),
+ new node(Constants.END), new node(Constants.NUMTOKEN)
+ }
+ );
+
+ pattern b =
+ new pattern(new node[]
+ {
+ new node(Constants.BEGIN), new node(Constants.STYLE),
+ new node(Constants.END), new node(Constants.NUMTOKEN)
+ }
+ );
+
+ pattern c =
+ new pattern(new node[]
+ {
+ new node(Constants.BEGIN), new node(Constants.WS, true),
+ new node(Constants.STYLE), new node(Constants.WS, true),
+ new node(Constants.END), new node(Constants.NUMTOKEN)
+ }
+ );
+
+ pattern d =
+ new pattern(new node[]
+ {
+ new node(Constants.BEGIN), new node(Constants.WS, true),
+ new node(Constants.STYLE), new node(Constants.WS, true),
+ new node(Constants.END), new node(Constants.BEGIN)
+ }
+ );
+
+ ReaderTokenizer rt = new ReaderTokenizer();
+ rt.reset(new StringReader(x));
+
+ assertFalse(a.matches(rt));
+ assertFalse(b.matches(rt));
+ assertTrue(c.matches(rt));
+ assertFalse(d.matches(rt));
+ }
+
+ public void testReadingAndAhead()
+ throws Exception
+ {
+ ArrayList tokens = new ArrayList();
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < 10; i++)
+ {
+ String r = rs();
+ b.append(" ");
+ b.append(r + i);
+ tokens.add(" ");
+ tokens.add(r + i);
+ }
+ rt.reset(new StringReader(b.toString()));
+
+ for (int i = 0; i < 10; i++)
+ {
+ for (int ah = 0; ah < 10; ah++)
+ {
+ Token ahead = rt.getTokenAhead(ah);
+ if (i + ah >= tokens.size())
+ {
+ assertEquals(ahead.kind, rt.EOF);
+ }
+ else
+ {
+ if ((i + ah) % 2 == 0)
+ assertEquals(ahead.kind, rt.WS);
+ else
+ {
+ assertEquals(ahead.getImage(), tokens.get(i + ah));
+ assertEquals(ahead.kind, rt.NUMTOKEN);
+ }
+ }
+ }
+
+ Token r = rt.getNextToken();
+ assertEquals(r.getImage(), tokens.get(i));
+ }
+ }
+
+ private String rs()
+ {
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < 10 * Math.random(); i++)
+ {
+ b.append("l");
+ }
+ return b.toString();
+ }
+}
diff --git a/gnu/testlet/java/.cvsignore b/gnu/testlet/java/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/BinaryCompatibility/CVS/Entries b/gnu/testlet/java/BinaryCompatibility/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/BinaryCompatibility/CVS/Entries.Log b/gnu/testlet/java/BinaryCompatibility/CVS/Entries.Log
new file mode 100644
index 00000000..dbe41a19
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/altered////
diff --git a/gnu/testlet/java/BinaryCompatibility/CVS/Repository b/gnu/testlet/java/BinaryCompatibility/CVS/Repository
new file mode 100644
index 00000000..cd7a01ba
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/BinaryCompatibility
diff --git a/gnu/testlet/java/BinaryCompatibility/CVS/Root b/gnu/testlet/java/BinaryCompatibility/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/BinaryCompatibility/altered/CVS/Entries b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/BinaryCompatibility/altered/CVS/Repository b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Repository
new file mode 100644
index 00000000..80498269
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/BinaryCompatibility/altered
diff --git a/gnu/testlet/java/BinaryCompatibility/altered/CVS/Root b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/BinaryCompatibility/altered/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/CVS/Entries b/gnu/testlet/java/CVS/Entries
new file mode 100644
index 00000000..ce04b8c5
--- /dev/null
+++ b/gnu/testlet/java/CVS/Entries
@@ -0,0 +1,2 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:33 1998//
+D
diff --git a/gnu/testlet/java/CVS/Entries.Log b/gnu/testlet/java/CVS/Entries.Log
new file mode 100644
index 00000000..ef0e74a0
--- /dev/null
+++ b/gnu/testlet/java/CVS/Entries.Log
@@ -0,0 +1,13 @@
+A D/BinaryCompatibility////
+A D/awt////
+A D/beans////
+A D/io////
+A D/lang////
+A D/math////
+A D/net////
+A D/nio////
+A D/rmi////
+A D/security////
+A D/sql////
+A D/text////
+A D/util////
diff --git a/gnu/testlet/java/CVS/Repository b/gnu/testlet/java/CVS/Repository
new file mode 100644
index 00000000..c09db893
--- /dev/null
+++ b/gnu/testlet/java/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java
diff --git a/gnu/testlet/java/CVS/Root b/gnu/testlet/java/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTError/CVS/Entries b/gnu/testlet/java/awt/AWTError/CVS/Entries
new file mode 100644
index 00000000..fb3d679a
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTError/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Fri Mar 23 11:45:27 2012//
+D
diff --git a/gnu/testlet/java/awt/AWTError/CVS/Repository b/gnu/testlet/java/awt/AWTError/CVS/Repository
new file mode 100644
index 00000000..cb3d2a23
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AWTError
diff --git a/gnu/testlet/java/awt/AWTError/CVS/Root b/gnu/testlet/java/awt/AWTError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTError/constructor.java b/gnu/testlet/java/awt/AWTError/constructor.java
new file mode 100644
index 00000000..2ae1b48f
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTError/constructor.java
@@ -0,0 +1,66 @@
+// constructor.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.AWTError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+
+/**
+ * Check of method constructor for a class AWTError.
+ */
+public class constructor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Throwable a;
+
+ a = new AWTError("");
+ harness.check(a.getMessage(), "");
+
+ a = new AWTError("awterror");
+ harness.check(a.getMessage(), "awterror");
+
+ try {
+ throw new AWTError("");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "");
+ harness.check(t instanceof AWTError);
+ }
+
+ try {
+ throw new AWTError("awterror");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "awterror");
+ harness.check(t instanceof AWTError);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/AWTEvent/CVS/Entries b/gnu/testlet/java/awt/AWTEvent/CVS/Entries
new file mode 100644
index 00000000..288b7b82
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTEvent/CVS/Entries
@@ -0,0 +1,2 @@
+/constants.java/1.1/Thu Oct 28 11:21:21 2004//
+D
diff --git a/gnu/testlet/java/awt/AWTEvent/CVS/Repository b/gnu/testlet/java/awt/AWTEvent/CVS/Repository
new file mode 100644
index 00000000..da60bd89
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AWTEvent
diff --git a/gnu/testlet/java/awt/AWTEvent/CVS/Root b/gnu/testlet/java/awt/AWTEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTEvent/constants.java b/gnu/testlet/java/awt/AWTEvent/constants.java
new file mode 100644
index 00000000..52bf7ab2
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTEvent/constants.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AWTEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTEvent;
+
+/**
+ * Verifies constant values for the {@link AWTEvent} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(AWTEvent.ACTION_EVENT_MASK, 128l);
+ harness.check(AWTEvent.ADJUSTMENT_EVENT_MASK, 256l);
+ harness.check(AWTEvent.COMPONENT_EVENT_MASK, 1l);
+ harness.check(AWTEvent.CONTAINER_EVENT_MASK, 2l);
+ harness.check(AWTEvent.FOCUS_EVENT_MASK, 4l);
+ harness.check(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK, 65536l);
+ harness.check(AWTEvent.HIERARCHY_EVENT_MASK, 32768l);
+ harness.check(AWTEvent.INPUT_METHOD_EVENT_MASK, 2048l);
+ harness.check(AWTEvent.INVOCATION_EVENT_MASK, 16384l);
+ harness.check(AWTEvent.ITEM_EVENT_MASK, 512l);
+ harness.check(AWTEvent.KEY_EVENT_MASK, 8l);
+ harness.check(AWTEvent.MOUSE_EVENT_MASK, 16l);
+ harness.check(AWTEvent.MOUSE_MOTION_EVENT_MASK, 32l);
+ harness.check(AWTEvent.MOUSE_WHEEL_EVENT_MASK, 131072l);
+ harness.check(AWTEvent.PAINT_EVENT_MASK, 8192l);
+ harness.check(AWTEvent.RESERVED_ID_MAX, 1999);
+ harness.check(AWTEvent.TEXT_EVENT_MASK, 1024l);
+ harness.check(AWTEvent.WINDOW_EVENT_MASK, 64l);
+ harness.check(AWTEvent.WINDOW_FOCUS_EVENT_MASK, 524288l);
+ harness.check(AWTEvent.WINDOW_STATE_EVENT_MASK, 262144l);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/AWTException/CVS/Entries b/gnu/testlet/java/awt/AWTException/CVS/Entries
new file mode 100644
index 00000000..fb3d679a
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTException/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Fri Mar 23 11:45:27 2012//
+D
diff --git a/gnu/testlet/java/awt/AWTException/CVS/Repository b/gnu/testlet/java/awt/AWTException/CVS/Repository
new file mode 100644
index 00000000..4adfddb1
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AWTException
diff --git a/gnu/testlet/java/awt/AWTException/CVS/Root b/gnu/testlet/java/awt/AWTException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTException/constructor.java b/gnu/testlet/java/awt/AWTException/constructor.java
new file mode 100644
index 00000000..b6f6b934
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTException/constructor.java
@@ -0,0 +1,66 @@
+// constructor.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.AWTException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTException;
+
+/**
+ * Check of method constructor for a class AWTException.
+ */
+public class constructor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Throwable a;
+
+ a = new AWTException("");
+ harness.check(a.getMessage(), "");
+
+ a = new AWTException("AWTException");
+ harness.check(a.getMessage(), "AWTException");
+
+ try {
+ throw new AWTException("");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "");
+ harness.check(t instanceof AWTException);
+ }
+
+ try {
+ throw new AWTException("AWTException");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "AWTException");
+ harness.check(t instanceof AWTException);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/CVS/Entries b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Entries
new file mode 100644
index 00000000..586d2ebd
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Entries
@@ -0,0 +1,4 @@
+/equals.java/1.1/Tue Nov 9 09:47:25 2004//
+/getAWTKeyStroke.java/1.3/Sun Aug 21 02:12:44 2005//
+/serialization.java/1.1/Tue Nov 9 09:47:25 2004//
+D
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/CVS/Repository b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Repository
new file mode 100644
index 00000000..1876ab60
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AWTKeyStroke
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/CVS/Root b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/equals.java b/gnu/testlet/java/awt/AWTKeyStroke/equals.java
new file mode 100644
index 00000000..baa745a5
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/equals.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.awt.AWTKeyStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTKeyStroke;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+
+/**
+ * Some checks for the equals() method.
+ */
+public class equals
+ implements Testlet
+{
+ /**
+ * Some checks for the equals() method.
+ */
+ public void test(TestHarness harness)
+ {
+ AWTKeyStroke ks1 = AWTKeyStroke.getAWTKeyStroke('A');
+ AWTKeyStroke ks2 = AWTKeyStroke.getAWTKeyStroke('A');
+ harness.check(ks1.equals(ks2));
+
+ harness.check(!ks1.equals(null));
+ harness.check(!ks1.equals(new Integer(42)));
+
+ ks1 = AWTKeyStroke.getAWTKeyStroke('a');
+ harness.check(!ks1.equals(ks2));
+ ks2 = AWTKeyStroke.getAWTKeyStroke('a');
+ harness.check(ks1.equals(ks2));
+
+ ks1 = AWTKeyStroke.getAWTKeyStroke(new Character('a'), InputEvent.SHIFT_DOWN_MASK);
+ harness.check(!ks1.equals(ks2));
+ ks2 = AWTKeyStroke.getAWTKeyStroke(new Character('a'), InputEvent.SHIFT_DOWN_MASK);
+ harness.check(ks1.equals(ks2));
+
+ ks1 = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_A, InputEvent.SHIFT_DOWN_MASK, false);
+ harness.check(!ks1.equals(ks2));
+ ks2 = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_A, InputEvent.SHIFT_DOWN_MASK, false);
+ harness.check(ks1.equals(ks2));
+
+ ks1 = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_A, InputEvent.SHIFT_DOWN_MASK, true);
+ harness.check(!ks1.equals(ks2));
+ ks2 = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_A, InputEvent.SHIFT_DOWN_MASK, true);
+ harness.check(ks1.equals(ks2));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java b/gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java
new file mode 100644
index 00000000..62831889
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/getAWTKeyStroke.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.awt.AWTKeyStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTKeyStroke;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+
+/**
+ * Some checks for the getAWTKeyStroke() methods.
+ */
+public class getAWTKeyStroke
+ implements Testlet
+{
+ /**
+ * Confirm that two lines with the same end points are NOT considered equal.
+ */
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ testMethod4(harness);
+ testMethod5(harness);
+ }
+
+ private void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(char)");
+ AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke('s');
+ harness.check(ks.getKeyEventType(), KeyEvent.KEY_TYPED);
+ harness.check(ks.getKeyChar(), 's');
+ harness.check(ks.getModifiers(), 0);
+ harness.check(ks.isOnKeyRelease(), false);
+ }
+
+ private void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(Character, int)");
+ AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke(new Character('s'), InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
+ harness.check(ks.getKeyEventType(), KeyEvent.KEY_TYPED);
+ harness.check(ks.getKeyChar(), 's');
+ harness.check(ks.getModifiers(), InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK);
+ harness.check(ks.isOnKeyRelease(), false);
+
+ // check for IllegalArgumentException for null argument
+ try
+ {
+ ks = AWTKeyStroke.getAWTKeyStroke(null, 0);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
+ harness.check(ks.getKeyEventType(), KeyEvent.KEY_PRESSED);
+ harness.check(ks.getKeyChar(), KeyEvent.CHAR_UNDEFINED);
+ harness.check(ks.getModifiers(), InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK);
+ harness.check(ks.isOnKeyRelease(), false);
+ }
+
+ private void testMethod4(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, boolean)");
+ AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
+ harness.check(ks.getKeyEventType(), KeyEvent.KEY_RELEASED);
+ harness.check(ks.getKeyChar(), KeyEvent.CHAR_UNDEFINED);
+ harness.check(ks.getModifiers(), InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK);
+ harness.check(ks.isOnKeyRelease(), true);
+ }
+
+ private void testMethod5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+
+ AWTKeyStroke ks = AWTKeyStroke.getAWTKeyStroke("INSERT");
+ AWTKeyStroke expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_INSERT, 0);
+ harness.check(ks, expected);
+
+ ks = AWTKeyStroke.getAWTKeyStroke("control DELETE");
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_DOWN_MASK);
+ harness.check(ks, expected);
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK);
+ harness.check(ks, expected);
+
+ ks = AWTKeyStroke.getAWTKeyStroke("alt shift X");
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
+ harness.check(ks, expected);
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
+ harness.check(ks, expected);
+
+ ks = AWTKeyStroke.getAWTKeyStroke("alt shift released X");
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
+ harness.check(ks, expected);
+ expected = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);
+ harness.check(ks, expected);
+
+ ks = AWTKeyStroke.getAWTKeyStroke("typed a");
+ expected = AWTKeyStroke.getAWTKeyStroke('a');
+ harness.check(ks, expected);
+
+ // check for IllegalArgumentException for null argument
+ harness.checkPoint("null (String) argument");
+ try
+ {
+ ks = AWTKeyStroke.getAWTKeyStroke(null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ catch (Throwable e)
+ {
+ harness.check(false);
+ }
+
+ // check for IllegalArgumentException for bad string
+ harness.checkPoint("bad string");
+ try
+ {
+ ks = AWTKeyStroke.getAWTKeyStroke("bad");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/AWTKeyStroke/serialization.java b/gnu/testlet/java/awt/AWTKeyStroke/serialization.java
new file mode 100644
index 00000000..5c0db08f
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTKeyStroke/serialization.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AWTKeyStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTKeyStroke;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Some checks for serialization of the {@link AWTKeyStroke} class.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AWTKeyStroke ks1 = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
+ AWTKeyStroke ks2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(ks1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ ks2 = (AWTKeyStroke) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(ks1.equals(ks2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/AWTPermission/CVS/Entries b/gnu/testlet/java/awt/AWTPermission/CVS/Entries
new file mode 100644
index 00000000..1eac7380
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTPermission/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.2/Wed Apr 25 15:57:23 2012//
+D
diff --git a/gnu/testlet/java/awt/AWTPermission/CVS/Repository b/gnu/testlet/java/awt/AWTPermission/CVS/Repository
new file mode 100644
index 00000000..8d697c60
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTPermission/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AWTPermission
diff --git a/gnu/testlet/java/awt/AWTPermission/CVS/Root b/gnu/testlet/java/awt/AWTPermission/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTPermission/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AWTPermission/constructor.java b/gnu/testlet/java/awt/AWTPermission/constructor.java
new file mode 100644
index 00000000..29f215df
--- /dev/null
+++ b/gnu/testlet/java/awt/AWTPermission/constructor.java
@@ -0,0 +1,89 @@
+/* constructor.java
+ Copyright (C) 2007, 2012 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.AWTPermission;
+
+import java.awt.AWTPermission;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class constructor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ AWTPermission permission = new AWTPermission("String");
+ harness.check(permission.getActions(), "");
+ harness.check(permission.getName(), "String");
+ if (conformToJDK17())
+ {
+ harness.check(permission.toString(), "(\"java.awt.AWTPermission\" \"String\")");
+ }
+ else
+ {
+ harness.check(permission.toString(), "(java.awt.AWTPermission String)");
+ }
+
+ // String cannot be the empty string.
+ boolean fail = false;
+ try
+ {
+ permission = new AWTPermission("");
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ // Name cannot be null.
+ fail = false;
+ try
+ {
+ permission = new AWTPermission(null);
+ }
+ catch (NullPointerException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Long.parseLong(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
diff --git a/gnu/testlet/java/awt/AlphaComposite/CVS/Entries b/gnu/testlet/java/awt/AlphaComposite/CVS/Entries
new file mode 100644
index 00000000..f44d978a
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/CVS/Entries
@@ -0,0 +1,5 @@
+/equals.java/1.1/Mon Jul 25 09:13:41 2005//
+/getInstance.java/1.1/Mon Jul 25 09:13:41 2005//
+/getInstance14.java/1.1/Mon Jul 25 09:13:41 2005//
+/getRule.java/1.1/Mon Jul 25 09:13:41 2005//
+D
diff --git a/gnu/testlet/java/awt/AlphaComposite/CVS/Repository b/gnu/testlet/java/awt/AlphaComposite/CVS/Repository
new file mode 100644
index 00000000..13a3c78e
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/AlphaComposite
diff --git a/gnu/testlet/java/awt/AlphaComposite/CVS/Root b/gnu/testlet/java/awt/AlphaComposite/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/AlphaComposite/equals.java b/gnu/testlet/java/awt/AlphaComposite/equals.java
new file mode 100644
index 00000000..b2158040
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/equals.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AlphaComposite;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AlphaComposite;
+
+/**
+ * Some checks for the equals() method in the {@link AlphaComposite} class
+ * using constants available since 1.4.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AlphaComposite a1 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
+ AlphaComposite a2 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f);
+ harness.check(!a1.equals(a2));
+ harness.check(!a1.equals(null));
+ a2 = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
+ harness.check(a1.equals(a2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/AlphaComposite/getInstance.java b/gnu/testlet/java/awt/AlphaComposite/getInstance.java
new file mode 100644
index 00000000..c8169ac2
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/getInstance.java
@@ -0,0 +1,164 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AlphaComposite;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AlphaComposite;
+
+/**
+ * Some checks for the getInstance() method in the {@link AlphaComposite} class.
+ */
+public class getInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+
+ // CLEAR
+ AlphaComposite a = AlphaComposite.getInstance(AlphaComposite.CLEAR);
+ harness.check(a.getRule(), AlphaComposite.CLEAR);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // SRC
+ a = AlphaComposite.getInstance(AlphaComposite.SRC);
+ harness.check(a.getRule(), AlphaComposite.SRC);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // DST
+ a = AlphaComposite.getInstance(AlphaComposite.DST);
+ harness.check(a.getRule(), AlphaComposite.DST);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // SRC_OVER
+ a = AlphaComposite.getInstance(AlphaComposite.SRC_OVER);
+ harness.check(a.getRule(), AlphaComposite.SRC_OVER);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // DST_OVER
+ a = AlphaComposite.getInstance(AlphaComposite.DST_OVER);
+ harness.check(a.getRule(), AlphaComposite.DST_OVER);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // SRC_IN
+ a = AlphaComposite.getInstance(AlphaComposite.SRC_IN);
+ harness.check(a.getRule(), AlphaComposite.SRC_IN);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // DST_IN
+ a = AlphaComposite.getInstance(AlphaComposite.DST_IN);
+ harness.check(a.getRule(), AlphaComposite.DST_IN);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // SRC_OUT
+ a = AlphaComposite.getInstance(AlphaComposite.SRC_OUT);
+ harness.check(a.getRule(), AlphaComposite.SRC_OUT);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // DST_OUT
+ a = AlphaComposite.getInstance(AlphaComposite.DST_OUT);
+ harness.check(a.getRule(), AlphaComposite.DST_OUT);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // try a bad constant
+ boolean pass = false;
+ try
+ {
+ a = AlphaComposite.getInstance(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try another bad constant
+ pass = false;
+ try
+ {
+ a = AlphaComposite.getInstance(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int, float)");
+
+ AlphaComposite a = AlphaComposite.getInstance(AlphaComposite.SRC, 0.123f);
+ harness.check(a.getRule(), AlphaComposite.SRC);
+ harness.check(a.getAlpha(), 0.123f);
+
+ // try negative alpha
+ boolean pass = false;
+ try
+ {
+ /* a = */ AlphaComposite.getInstance(AlphaComposite.SRC, -0.01f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try alpha > 1.0
+ pass = false;
+ try
+ {
+ /* a = */ AlphaComposite.getInstance(AlphaComposite.SRC, 1.01f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/AlphaComposite/getInstance14.java b/gnu/testlet/java/awt/AlphaComposite/getInstance14.java
new file mode 100644
index 00000000..2c58e329
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/getInstance14.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AlphaComposite;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AlphaComposite;
+
+/**
+ * Some checks for the getInstance() method in the {@link AlphaComposite} class
+ * using constants available since 1.4.
+ */
+public class getInstance14 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // SRC_ATOP
+ AlphaComposite a = AlphaComposite.getInstance(AlphaComposite.SRC_ATOP);
+ harness.check(a.getRule(), AlphaComposite.SRC_ATOP);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // DST_ATOP
+ a = AlphaComposite.getInstance(AlphaComposite.DST_ATOP);
+ harness.check(a.getRule(), AlphaComposite.DST_ATOP);
+ harness.check(a.getAlpha(), 1.0f);
+
+ // XOR
+ a = AlphaComposite.getInstance(AlphaComposite.XOR);
+ harness.check(a.getRule(), AlphaComposite.XOR);
+ harness.check(a.getAlpha(), 1.0f);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/AlphaComposite/getRule.java b/gnu/testlet/java/awt/AlphaComposite/getRule.java
new file mode 100644
index 00000000..0ea5e69e
--- /dev/null
+++ b/gnu/testlet/java/awt/AlphaComposite/getRule.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.AlphaComposite;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AlphaComposite;
+
+/**
+ * Some checks for the getRule() method in the {@link AlphaComposite} class.
+ */
+public class getRule implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AlphaComposite a = AlphaComposite.getInstance(AlphaComposite.SRC_OVER);
+ harness.check(a.getRule(), AlphaComposite.SRC_OVER);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BasicStroke/CVS/Entries b/gnu/testlet/java/awt/BasicStroke/CVS/Entries
new file mode 100644
index 00000000..a6f2132d
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/CVS/Entries
@@ -0,0 +1,17 @@
+/constants.java/1.1/Wed Oct 20 08:53:00 2004//
+/constructors.java/1.1/Wed Oct 20 08:53:00 2004//
+/createStrokeShapeLine2DDouble.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeLine2DFloat.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapePolygon.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeRectangle.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeRectangle2DDouble.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeRectangle2DFloat.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeRoundRectangle2DDouble.java/1.1/Tue Apr 24 15:16:34 2012//
+/createStrokeShapeRoundRectangle2DFloat.java/1.1/Tue Apr 24 15:16:34 2012//
+/equals.java/1.1/Wed Oct 20 08:53:00 2004//
+/getEndCap.java/1.3/Fri Mar 23 11:45:27 2012//
+/getLineJoin.java/1.2/Fri Dec 9 15:27:07 2011//
+/getLineWidth.java/1.3/Fri Mar 23 11:45:27 2012//
+/getMiterLimit.java/1.3/Fri Mar 23 11:45:27 2012//
+/hashCode.java/1.1/Sat Feb 12 23:03:51 2005//
+D
diff --git a/gnu/testlet/java/awt/BasicStroke/CVS/Repository b/gnu/testlet/java/awt/BasicStroke/CVS/Repository
new file mode 100644
index 00000000..91be1c25
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/BasicStroke
diff --git a/gnu/testlet/java/awt/BasicStroke/CVS/Root b/gnu/testlet/java/awt/BasicStroke/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/BasicStroke/constants.java b/gnu/testlet/java/awt/BasicStroke/constants.java
new file mode 100644
index 00000000..89a827db
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/constants.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BasicStroke;
+
+/**
+ * Verifies constant values for the {@link BasicStroke} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(BasicStroke.CAP_BUTT == 0);
+ harness.check(BasicStroke.CAP_ROUND == 1);
+ harness.check(BasicStroke.CAP_SQUARE == 2);
+ harness.check(BasicStroke.JOIN_BEVEL == 2);
+ harness.check(BasicStroke.JOIN_MITER == 0);
+ harness.check(BasicStroke.JOIN_ROUND == 1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BasicStroke/constructors.java b/gnu/testlet/java/awt/BasicStroke/constructors.java
new file mode 100644
index 00000000..e7a75918
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/constructors.java
@@ -0,0 +1,290 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BasicStroke;
+import java.util.Arrays;
+
+/**
+ * Some checks for the constructors in the {@link BasicStroke} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("BasicStroke()");
+ BasicStroke s = new BasicStroke();
+ harness.check(s.getLineWidth(), 1.0f);
+ harness.check(s.getEndCap(), BasicStroke.CAP_SQUARE);
+ harness.check(s.getLineJoin(), BasicStroke.JOIN_MITER);
+ harness.check(s.getMiterLimit(), 10.0f);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("BasicStroke(float)");
+ BasicStroke s = new BasicStroke(3.4f);
+ harness.check(s.getLineWidth(), 3.4f);
+ harness.check(s.getEndCap(), BasicStroke.CAP_SQUARE);
+ harness.check(s.getLineJoin(), BasicStroke.JOIN_MITER);
+ harness.check(s.getMiterLimit(), 10.0f);
+
+ // negative stroke should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // but zero is OK
+ try
+ {
+ s = new BasicStroke(0.0f);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("BasicStroke(float, int, int)");
+ BasicStroke s = new BasicStroke(4.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ harness.check(s.getLineWidth(), 4.5f);
+ harness.check(s.getEndCap(), BasicStroke.CAP_ROUND);
+ harness.check(s.getLineJoin(), BasicStroke.JOIN_ROUND);
+ harness.check(s.getMiterLimit(), 10.0f);
+
+ // negative stroke should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad cap type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, 11, BasicStroke.JOIN_ROUND);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad join type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, 22);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("BasicStroke(float, int, int, float)");
+ BasicStroke s = new BasicStroke(4.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 15.0f);
+ harness.check(s.getLineWidth(), 4.5f);
+ harness.check(s.getEndCap(), BasicStroke.CAP_ROUND);
+ harness.check(s.getLineJoin(), BasicStroke.JOIN_ROUND);
+ harness.check(s.getMiterLimit(), 15.0f);
+
+ // negative stroke should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 9.0f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad cap type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, 11, BasicStroke.JOIN_ROUND, 9.0f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad join type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, 22, 9.0f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // miter limit < 1 and join type is miter should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("BasicStroke(float, int, int, float, float[], float)");
+ BasicStroke s = new BasicStroke(4.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 15.0f, new float[] {1.0f, 2.0f}, 1.5f);
+ harness.check(s.getLineWidth(), 4.5f);
+ harness.check(s.getEndCap(), BasicStroke.CAP_ROUND);
+ harness.check(s.getLineJoin(), BasicStroke.JOIN_ROUND);
+ harness.check(s.getMiterLimit(), 15.0f);
+ harness.check(Arrays.equals(s.getDashArray(), new float[] {1.0f, 2.0f}));
+ harness.check(s.getDashPhase(), 1.5f);
+
+ // negative stroke should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 9.0f, new float[] {1.0f, 2.0f}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad cap type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, 11, BasicStroke.JOIN_ROUND, 9.0f, new float[] {1.0f, 2.0f}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // bad join type should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, 22, 9.0f, new float[] {1.0f, 2.0f}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // miter limit < 1 and join type is miter should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f, new float[] {1.0f, 2.0f}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // dash values all zero should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f, new float[] {0.0f, 0.0f}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // zero length dash array should throw IllegalArgumentException
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f, new float[] {}, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // null dash array should throw NullPointerException?
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f, null, 1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // negative dash phase
+ try
+ {
+ s = new BasicStroke(-1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.5f, new float[] {1.0f, 2.0f}, -1.5f);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DDouble.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DDouble.java
new file mode 100644
index 00000000..2bb1763d
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DDouble.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.Line2D;
+import java.awt.geom.Line2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from Line2D.Double */
+public class createStrokeShapeLine2DDouble implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new Line2D.Double(0, 0, 100, 100);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests - line vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains( 50, 50));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains( 0,100));
+ harness.check(!s2.contains(100, 0));
+
+ /* positive tests */
+ for (int i = 0; i < 100; i++)
+ {
+ harness.check(s2.contains(i, i));
+ }
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 40));
+ harness.check(!s2.contains(50, 60));
+ harness.check(!s2.contains(40, 50));
+ harness.check(!s2.contains(60, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DFloat.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DFloat.java
new file mode 100644
index 00000000..440563af
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeLine2DFloat.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.Line2D;
+import java.awt.geom.Line2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from Line2D.Float */
+public class createStrokeShapeLine2DFloat implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new Line2D.Float(0, 0, 100, 100);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests - line vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains( 50, 50));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains( 0,100));
+ harness.check(!s2.contains(100, 0));
+
+ /* positive tests */
+ for (int i = 0; i < 100; i++)
+ {
+ harness.check(s2.contains(i, i));
+ }
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 40));
+ harness.check(!s2.contains(50, 60));
+ harness.check(!s2.contains(40, 50));
+ harness.check(!s2.contains(60, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapePolygon.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapePolygon.java
new file mode 100644
index 00000000..ab9c0588
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapePolygon.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.Polygon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from rectangle */
+public class createStrokeShapePolygon implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Polygon polygon = new Polygon();
+ polygon.addPoint( 0, 0);
+ polygon.addPoint(100, 0);
+ polygon.addPoint(100, 100);
+ polygon.addPoint( 0, 100);
+ Shape s2 = basicStroke.createStrokedShape(polygon);
+
+ /* basic tests - polygon vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains(100, 0));
+ harness.check(s2.contains( 0,100));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle.java
new file mode 100644
index 00000000..a16440d0
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from rectangle */
+public class createStrokeShapeRectangle implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new Rectangle(100, 100);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests - rectangle vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains(100, 0));
+ harness.check(s2.contains( 0,100));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DDouble.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DDouble.java
new file mode 100644
index 00000000..8b9ff951
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DDouble.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from Rectangle2D.Double */
+public class createStrokeShapeRectangle2DDouble implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new Rectangle2D.Double(0.0, 0.0, 100.0, 100.0);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests - rectangle vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains(100, 0));
+ harness.check(s2.contains( 0,100));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DFloat.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DFloat.java
new file mode 100644
index 00000000..5073834a
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRectangle2DFloat.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from Rectangle2D.Float */
+public class createStrokeShapeRectangle2DFloat implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new Rectangle2D.Float(0.0f, 0.0f, 100.0f, 100.0f);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests - rectangle vertexes */
+ harness.check(s2.contains( 0, 0));
+ harness.check(s2.contains(100, 0));
+ harness.check(s2.contains( 0,100));
+ harness.check(s2.contains(100,100));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DDouble.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DDouble.java
new file mode 100644
index 00000000..7cf1be85
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DDouble.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.geom.RoundRectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from RoundRectangle2D.Double */
+public class createStrokeShapeRoundRectangle2DDouble implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new RoundRectangle2D.Double(0.0f, 0.0f, 100.0f, 100.0f, 40, 40);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests */
+ harness.check(s2.contains( 0, 40));
+ harness.check(s2.contains( 40, 0));
+ harness.check(s2.contains( 60, 0));
+ harness.check(s2.contains(100, 40));
+ harness.check(s2.contains( 0, 60));
+ harness.check(s2.contains( 40,100));
+ harness.check(s2.contains( 60,100));
+ harness.check(s2.contains(100, 60));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DFloat.java b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DFloat.java
new file mode 100644
index 00000000..753db84c
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/createStrokeShapeRoundRectangle2DFloat.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.Shape;
+import java.awt.BasicStroke;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.geom.RoundRectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/* Test of method BasicStroke.createShape() called for
+ * a shape created from RoundRectangle2D.Float */
+public class createStrokeShapeRoundRectangle2DFloat implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke basicStroke = new BasicStroke(10.0f);
+ Shape s1 = new RoundRectangle2D.Float(0.0f, 0.0f, 100.0f, 100.0f, 40, 40);
+ Shape s2 = basicStroke.createStrokedShape(s1);
+
+ /* basic tests */
+ harness.check(s2.contains( 0, 40));
+ harness.check(s2.contains( 40, 0));
+ harness.check(s2.contains( 60, 0));
+ harness.check(s2.contains(100, 40));
+ harness.check(s2.contains( 0, 60));
+ harness.check(s2.contains( 40,100));
+ harness.check(s2.contains( 60,100));
+ harness.check(s2.contains(100, 60));
+
+ /* basic negative test */
+ harness.check(!s2.contains(50, 50));
+ harness.check(!s2.contains(10, 10));
+ harness.check(!s2.contains(10, 90));
+ harness.check(!s2.contains(90, 90));
+ harness.check(!s2.contains(90, 10));
+
+ /* positive tests */
+ harness.check(s2.contains(50, 4));
+ harness.check(s2.contains(4, 50));
+
+ /* negative tests */
+ harness.check(!s2.contains(50, 6));
+ harness.check(!s2.contains(50, 10));
+ harness.check(!s2.contains( 6, 50));
+ harness.check(!s2.contains(10, 50));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/equals.java b/gnu/testlet/java/awt/BasicStroke/equals.java
new file mode 100644
index 00000000..0c062bc1
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/equals.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BasicStroke;
+
+/**
+ * Some checks for the equals() method in the {@link BasicStroke} class.
+ */
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke s1 = new BasicStroke();
+ BasicStroke s2 = new BasicStroke();
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(2.0f);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(2.0f);
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f);
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f, new float[] {1.0f, 2.0f}, 0.0f);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f, new float[] {1.0f, 2.0f}, 0.0f);
+ harness.check(s1.equals(s2));
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f, new float[] {1.0f, 2.0f}, 1.0f);
+ harness.check(!s1.equals(s2));
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 15.0f, new float[] {1.0f, 2.0f}, 1.0f);
+ harness.check(s1.equals(s2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BasicStroke/getEndCap.java b/gnu/testlet/java/awt/BasicStroke/getEndCap.java
new file mode 100644
index 00000000..e68ab562
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/getEndCap.java
@@ -0,0 +1,203 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test the method BasicStroke.getEndCap()
+ */
+public class getEndCap implements Testlet
+{
+ /**
+ * Default value for MITER_LIMIT
+ */
+ private static final float MITER_LIMIT = 10.0f;
+
+ /**
+ * Default value for DASH
+ */
+ private static final float[] DASH_ARRAY = {1.0f, 2.0f};
+
+ /**
+ * Default value for DASH_PHASE
+ */
+ private static final float DASH_PHASE = 0.0f;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTests(harness);
+ negativeTests(harness);
+ }
+
+ /**
+ * Positive tests for the method BasicStroke.getEndCap().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void positiveTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke;
+
+ // default value
+ stroke = new BasicStroke();
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_SQUARE);
+
+ // constructor(width, endCap, lineJoin)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_BUTT);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_ROUND);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_SQUARE);
+
+ // constructor(width, endCap, lineJoin, miterLimit)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, MITER_LIMIT);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_BUTT);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, MITER_LIMIT);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_ROUND);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND, MITER_LIMIT);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_SQUARE);
+
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_BUTT);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_ROUND);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getEndCap(), BasicStroke.CAP_SQUARE);
+ }
+
+ /**
+ * Negative tests for the method BasicStroke.getEndCap().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void negativeTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke;
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, 10, BasicStroke.JOIN_ROUND);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, -10, BasicStroke.JOIN_ROUND);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // special values for cap code
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, Integer.MAX_VALUE, BasicStroke.JOIN_ROUND);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // special values for cap code
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, Integer.MIN_VALUE, BasicStroke.JOIN_ROUND);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, 10, BasicStroke.JOIN_ROUND, MITER_LIMIT);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, -10, BasicStroke.JOIN_ROUND, MITER_LIMIT);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ try {
+ stroke = new BasicStroke(1.0f, 10, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // cap code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ try {
+ stroke = new BasicStroke(1.0f, -10, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/getLineJoin.java b/gnu/testlet/java/awt/BasicStroke/getLineJoin.java
new file mode 100644
index 00000000..607e809a
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/getLineJoin.java
@@ -0,0 +1,204 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test the method BasicStroke.getLineJoin()
+ */
+public class getLineJoin implements Testlet
+{
+ /**
+ * Default value for MITER_LIMIT
+ */
+ private static final float MITER_LIMIT = 10.0f;
+
+ /**
+ * Default value for DASH
+ */
+ private static final float[] DASH_ARRAY = {1.0f, 2.0f};
+
+ /**
+ * Default value for DASH_PHASE
+ */
+ private static final float DASH_PHASE = 0.0f;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTests(harness);
+ negativeTests(harness);
+ }
+
+ /**
+ * Positive tests for the method BasicStroke.getLineJoin().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void positiveTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke;
+
+ // default value
+ stroke = new BasicStroke();
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_MITER);
+
+ // constructor(width, endCap, lineJoin)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_BEVEL);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_MITER);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_ROUND);
+
+ // constructor(width, endCap, lineJoin, miterLimit)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL, 1.0f);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_BEVEL);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 1.0f);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_MITER);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_ROUND);
+
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_BEVEL);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_MITER);
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ harness.check(stroke.getLineJoin(), BasicStroke.JOIN_ROUND);
+ }
+
+ /**
+ * Negative tests for the method BasicStroke.getLineJoin().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void negativeTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ @SuppressWarnings("unused")
+ BasicStroke stroke;
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, 10);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, -10);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // special values for join code
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, Integer.MAX_VALUE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // special values for join code
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, Integer.MIN_VALUE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, 10, MITER_LIMIT);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, -10, MITER_LIMIT);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, 10, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // join code is outside the range 0..2
+ // constructor(width, endCap, lineJoin, dash[], miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, -10, MITER_LIMIT, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/getLineWidth.java b/gnu/testlet/java/awt/BasicStroke/getLineWidth.java
new file mode 100644
index 00000000..79bc4afd
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/getLineWidth.java
@@ -0,0 +1,125 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test the method BasicStroke.getLineWidth()
+ */
+public class getLineWidth implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTests(harness);
+ negativeTests(harness);
+ }
+
+ /**
+ * Positive tests for the method BasicStroke.getWidth().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void positiveTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke;
+
+ // default value
+ stroke = new BasicStroke();
+ harness.check(stroke.getLineWidth(), 1.0f);
+
+ // zero stroke width should be fine
+ stroke = new BasicStroke(0.0f);
+ harness.check(stroke.getLineWidth(), 0.0f);
+
+ // positive stroke width should be fine
+ stroke = new BasicStroke(10.0f);
+ harness.check(stroke.getLineWidth(), 10.0f);
+
+ // constructor(width, endCap, lineJoin)
+ stroke = new BasicStroke(10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ harness.check(stroke.getLineWidth(), 10.0f);
+
+ // constructor(width, endCap, lineJoin, mitterLimit)
+ stroke = new BasicStroke(10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f);
+ harness.check(stroke.getLineWidth(), 10.0f);
+ }
+
+ /**
+ * Negative tests for the method BasicStroke.getWidth().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void negativeTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke;
+
+ // negative width value
+ // constructor(width)
+ try {
+ stroke = new BasicStroke(-10.0f);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // negative width value
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(-10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // negative width value
+ // constructor(width, endCap, lineJoin, mitterLimit)
+ try {
+ stroke = new BasicStroke(-10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/BasicStroke/getMiterLimit.java b/gnu/testlet/java/awt/BasicStroke/getMiterLimit.java
new file mode 100644
index 00000000..9aeeefcf
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/getMiterLimit.java
@@ -0,0 +1,298 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BasicStroke;
+
+import java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test the method BasicStroke.getMitterLimit()
+ */
+public class getMiterLimit implements Testlet
+{
+ /**
+ * Default value for MITER_LIMIT
+ */
+ private static final float DEFAULT_MITER_LIMIT = 10.0f;
+
+ /**
+ * Default value for DASH
+ */
+ private static final float[] DASH_ARRAY = {1.0f, 2.0f};
+
+ /**
+ * Default value for DASH_PHASE
+ */
+ private static final float DASH_PHASE = 0.0f;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTests(harness);
+ positiveTestsSmallMitterOtherJoinTypes(harness, BasicStroke.JOIN_ROUND);
+ positiveTestsSmallMitterOtherJoinTypes(harness, BasicStroke.JOIN_BEVEL);
+ negativeTests(harness);
+ }
+
+ /**
+ * Positive tests for the method BasicStroke.getMitterLimit().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void positiveTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ BasicStroke stroke = null;
+
+ // default value
+ stroke = new BasicStroke();
+ harness.check(stroke.getMiterLimit(), DEFAULT_MITER_LIMIT);
+
+ // constructor(width, endCap, lineJoin)
+ testMiterLimit(harness);
+
+ // constructor(width, endCap, lineJoin, miterLimit = 1.0f)
+ testMiterLimit(harness, 1.0f);
+
+ // constructor(width, endCap, lineJoin, miterLimit = 10.0f)
+ testMiterLimit(harness, 10.0f);
+
+ // constructor(width, endCap, lineJoin, miterLimit = 10.0f)
+ testMiterLimit(harness, Integer.MAX_VALUE);
+ }
+
+ /**
+ * Another positive tests for the method BasicStroke.getMitterLimit().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void positiveTestsSmallMitterOtherJoinTypes(TestHarness harness, int joinType)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke = null;
+
+ // miter limit is below 1.0
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, 0.0f);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, -1.0f);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, -1000.0f);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, Integer.MIN_VALUE);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, 0.0f, DASH_ARRAY, DASH_PHASE);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+
+ // constructor(width, endCap, lineJoin, dash[], miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, joinType, -10.0f, DASH_ARRAY, DASH_PHASE);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e) {
+ // should not happen
+ harness.check(false);
+ }
+ }
+
+
+ /**
+ * Negative tests for the method BasicStroke.getMitterLimit().
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void negativeTests(TestHarness harness)
+ {
+ harness.checkPoint("positive tests");
+
+ // tested object
+ BasicStroke stroke = null;
+
+ // miter limit is below 1.0
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.0f);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, -1.0f);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, -1000.0f);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // miter limit is negative
+ // constructor(width, endCap, lineJoin)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, Integer.MIN_VALUE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // constructor(width, endCap, lineJoin, miterLimit, dash[], dashPhase)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 0.0f, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+
+ // constructor(width, endCap, lineJoin, dash[], miterLimit)
+ try {
+ stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, -10.0f, DASH_ARRAY, DASH_PHASE);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Tests for the method BasicStroke.getMitterLimit() for various caps and
+ * joins settings.
+ *
+ * @param harness
+ * the test harness (<code>null</code> not permitted).
+ * @param miterLimit
+ * miter limit
+ */
+ private void testMiterLimit(TestHarness harness)
+ {
+ // tested object
+ BasicStroke stroke;
+
+ final int[] caps = {BasicStroke.CAP_BUTT, BasicStroke.CAP_ROUND, BasicStroke.CAP_SQUARE};
+ final int[] joins = {BasicStroke.JOIN_BEVEL, BasicStroke.JOIN_MITER, BasicStroke.JOIN_ROUND};
+
+ for (int cap = 0; cap < caps.length; cap++)
+ {
+ for (int join = 0; join < joins.length; join++)
+ {
+ stroke = new BasicStroke(1.0f, caps[cap], joins[join]);
+ harness.check(stroke.getMiterLimit(), DEFAULT_MITER_LIMIT);
+ }
+ }
+ }
+
+ /**
+ * Tests for the method BasicStroke.getMitterLimit() for various caps and
+ * joins settings.
+ *
+ * @param harness
+ * the test harness (<code>null</code> not permitted).
+ * @param miterLimit
+ * miter limit
+ */
+ private void testMiterLimit(TestHarness harness, float miterLimit)
+ {
+ // tested object
+ BasicStroke stroke;
+
+ final int[] caps = {BasicStroke.CAP_BUTT, BasicStroke.CAP_ROUND, BasicStroke.CAP_SQUARE};
+ final int[] joins = {BasicStroke.JOIN_BEVEL, BasicStroke.JOIN_MITER, BasicStroke.JOIN_ROUND};
+
+ for (int cap = 0; cap < caps.length; cap++)
+ {
+ for (int join = 0; join < joins.length; join++)
+ {
+ stroke = new BasicStroke(1.0f, caps[cap], joins[join], miterLimit);
+ harness.check(stroke.getMiterLimit(), miterLimit);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/BasicStroke/hashCode.java b/gnu/testlet/java/awt/BasicStroke/hashCode.java
new file mode 100644
index 00000000..70e98579
--- /dev/null
+++ b/gnu/testlet/java/awt/BasicStroke/hashCode.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BasicStroke;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BasicStroke;
+
+/**
+ * Some very simple checks for the hashCode() method in the
+ * {@link BasicStroke} class. Based on the equals() test.
+ */
+public class hashCode implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicStroke s1 = new BasicStroke();
+ BasicStroke s2 = new BasicStroke();
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(2.0f);
+ s2 = new BasicStroke(2.0f);
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f);
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f);
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f, new float[] {1.0f, 2.0f}, 0.0f);
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f, new float[] {1.0f, 2.0f}, 0.0f);
+ harness.check(s1.hashCode(), s2.hashCode());
+
+ s1 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f, new float[] {1.0f, 2.0f}, 1.0f);
+ s2 = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND,
+ 15.0f, new float[] {1.0f, 2.0f}, 1.0f);
+ harness.check(s1.hashCode(), s2.hashCode());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/CVS/Entries b/gnu/testlet/java/awt/BorderLayout/CVS/Entries
new file mode 100644
index 00000000..0860ac3a
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/CVS/Entries
@@ -0,0 +1,22 @@
+/PaintTestBiggerGap.java/1.2/Thu Dec 8 14:46:20 2011//
+/PaintTestBiggerHGap.java/1.2/Thu Dec 8 14:46:20 2011//
+/PaintTestBiggerVGap.java/1.2/Thu Dec 8 14:46:20 2011//
+/PaintTestFiveButtons.java/1.2/Thu Dec 8 14:46:20 2011//
+/PaintTestFiveCanvases.java/1.2/Thu Dec 8 14:46:20 2011//
+/PaintTestZeroGaps.java/1.2/Thu Dec 8 14:46:20 2011//
+/Test15.java/1.2/Thu Dec 8 14:46:20 2011/-kk/
+/addLayoutComponent.java/1.1/Tue Jun 28 15:31:35 2005//
+/constants.java/1.1/Tue Jun 28 15:31:35 2005//
+/constructors.java/1.1/Tue Jun 28 15:31:35 2005//
+/getHgap.java/1.1/Tue Jun 28 15:31:35 2005//
+/getLayoutAlignmentX.java/1.2/Thu Dec 8 14:46:20 2011//
+/getLayoutAlignmentY.java/1.2/Thu Dec 8 14:46:20 2011//
+/getVgap.java/1.1/Tue Jun 28 15:31:35 2005//
+/layoutContainer.java/1.2/Tue Feb 14 14:47:09 2006//
+/maxLayoutSize.java/1.1/Tue Dec 6 16:19:23 2005//
+/preferredLayoutSize.java/1.1/Tue Jun 28 15:31:35 2005//
+/removeLayoutComponent.java/1.1/Fri Nov 25 14:43:18 2011//
+/setHgap.java/1.2/Thu Dec 8 14:46:20 2011//
+/setVgap.java/1.2/Thu Dec 8 14:46:20 2011//
+/toString.java/1.3/Thu Dec 8 14:46:20 2011//
+D
diff --git a/gnu/testlet/java/awt/BorderLayout/CVS/Repository b/gnu/testlet/java/awt/BorderLayout/CVS/Repository
new file mode 100644
index 00000000..4e1f3789
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/BorderLayout
diff --git a/gnu/testlet/java/awt/BorderLayout/CVS/Root b/gnu/testlet/java/awt/BorderLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java
new file mode 100644
index 00000000..9039b7c3
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerGap.java
@@ -0,0 +1,326 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using BorderLayout.
+ * Bigger gap is used during positioning canvases on a frame, so we also have to
+ * test if the gaps are properly painted by panel background color (which is red).
+ */
+public class PaintTestBiggerGap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 1330012649157973134L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 50;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 50;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout(HGAP_SIZE, VGAP_SIZE));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set sizes of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background color of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // position all five canvases on frame
+ add(canvas1, BorderLayout.NORTH);
+ add(canvas2, BorderLayout.WEST);
+ add(canvas3, BorderLayout.CENTER);
+ add(canvas4, BorderLayout.EAST);
+ add(canvas5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // now some test for checking the color between the components
+ //
+ // Tested pixels are marked by *:
+ // +-------------------------------+
+ // | |
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | |
+ // +-----------*---*----*----------+
+ // | |
+ // | 2222222 333333 444444 |
+ // | 2222222 * 333333 * 444444 |
+ // | 2222222 333333 444444 |
+ // | |
+ // +-----------*---*----*----------+
+ // | |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // | |
+ // +-------------------------------+
+ //
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4), Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4), Color.red);
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5), Color.red);
+ harness.checkPoint("space check #7");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas5), Color.red);
+ harness.checkPoint("space check #8");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java
new file mode 100644
index 00000000..1b08fa50
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerHGap.java
@@ -0,0 +1,307 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using BorderLayout.
+ * Bigger horizontal gap is used during positioning canvases on a frame, so we also have to
+ * test if the gaps are properly painted by panel background color (which is red).
+ */
+public class PaintTestBiggerHGap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 8181135974963463440L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 50;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout(HGAP_SIZE, VGAP_SIZE));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set sizes of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background color of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // position all five canvases on frame
+ add(canvas1, BorderLayout.NORTH);
+ add(canvas2, BorderLayout.WEST);
+ add(canvas3, BorderLayout.CENTER);
+ add(canvas4, BorderLayout.EAST);
+ add(canvas5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // now some test for checking the color between the components
+ //
+ // Tested pixels are marked by *:
+ // +-------------------------------+
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | 2222222 333333 444444 |
+ // | 2222222 * 333333 * 444444 |
+ // | 2222222 333333 444444 |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // +-------------------------------+
+ //
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java
new file mode 100644
index 00000000..8cfdc4ca
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestBiggerVGap.java
@@ -0,0 +1,327 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using BorderLayout.
+ * Bigger vertical gap is used during positioning canvases on a frame, so we also have to
+ * test if the gaps are properly painted by panel background color (which is red).
+ */
+public class PaintTestBiggerVGap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 2206443614202157953L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 0;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 50;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout(HGAP_SIZE, VGAP_SIZE));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set sizes of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background color of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // position all five canvases on frame
+ add(canvas1, BorderLayout.NORTH);
+ add(canvas2, BorderLayout.WEST);
+ add(canvas3, BorderLayout.CENTER);
+ add(canvas4, BorderLayout.EAST);
+ add(canvas5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // now some test for checking the color between the components
+ //
+ // Tested pixels are marked by *:
+ // +-------------------------------+
+ // | |
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | 1111111111111111111111111 |
+ // | |
+ // +-----------*---*----*----------+
+ // | |
+ // | 2222222223333333334444444 |
+ // | 22222222*33333333*4444444 |
+ // | 2222222223333333334444444 |
+ // | |
+ // +-----------*---*----*----------+
+ // | |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // | 5555555555555555555555555 |
+ // | |
+ // +-------------------------------+
+ //
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4), Color.red);
+ harness.checkPoint("space check #4 - negative");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas2, canvas3).equals(Color.red));
+ harness.checkPoint("space check #5 - negative");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas3, canvas4).equals(Color.red));
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5), Color.red);
+ harness.checkPoint("space check #7");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas5), Color.red);
+ harness.checkPoint("space check #8");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java b/gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java
new file mode 100644
index 00000000..452f7fc3
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestFiveButtons.java
@@ -0,0 +1,240 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five buttons are positioned correctly to a frame using BorderLayout.
+ */
+public class PaintTestFiveButtons
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -4358380772628343583L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Button button1 = new Button(" ");
+ Button button2 = new Button(" ");
+ Button button3 = new Button(" ");
+ Button button4 = new Button(" ");
+ Button button5 = new Button(" ");
+
+ // background of canvases
+ button1.setBackground(Color.blue);
+ button2.setBackground(Color.yellow);
+ button3.setBackground(Color.magenta);
+ button4.setBackground(Color.yellow);
+ button5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(button1, BorderLayout.NORTH);
+ add(button2, BorderLayout.WEST);
+ add(button3, BorderLayout.CENTER);
+ add(button4, BorderLayout.EAST);
+ add(button5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, button2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, button3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, button4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, button5), Color.blue);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java b/gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java
new file mode 100644
index 00000000..19cd2444
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestFiveCanvases.java
@@ -0,0 +1,248 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using BorderLayout.
+ * Default gap is used during positioning canvases,
+ */
+public class PaintTestFiveCanvases
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -1422980716093055760L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set sizes of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background color of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // position all five canvases on frame
+ add(canvas1, BorderLayout.NORTH);
+ add(canvas2, BorderLayout.WEST);
+ add(canvas3, BorderLayout.CENTER);
+ add(canvas4, BorderLayout.EAST);
+ add(canvas5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java b/gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java
new file mode 100644
index 00000000..04ff7694
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/PaintTestZeroGaps.java
@@ -0,0 +1,306 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.BorderLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using BorderLayout.
+ * Zero-width gaps are used during positioning canvases on a frame, so we also have to
+ * test if the gaps are not visible at all.
+ */
+public class PaintTestZeroGaps
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -2613637171673465097L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 0;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new BorderLayout(HGAP_SIZE, VGAP_SIZE));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // position all five canvases on frame
+ add(canvas1, BorderLayout.NORTH);
+ add(canvas2, BorderLayout.WEST);
+ add(canvas3, BorderLayout.CENTER);
+ add(canvas4, BorderLayout.EAST);
+ add(canvas5, BorderLayout.SOUTH);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // now some test for checking the color between the components
+ // (there should not be any pixels between components)
+ harness.checkPoint("space check #1 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas1, canvas2).equals(Color.red));
+ harness.checkPoint("space check #2 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas1, canvas3).equals(Color.red));
+ harness.checkPoint("space check #3 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas1, canvas4).equals(Color.red));
+ harness.checkPoint("space check #4 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas2, canvas3).equals(Color.red));
+ harness.checkPoint("space check #5 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas3, canvas4).equals(Color.red));
+ harness.checkPoint("space check #6 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas2, canvas5).equals(Color.red));
+ harness.checkPoint("space check #7 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas3, canvas5).equals(Color.red));
+ harness.checkPoint("space check #8 - negative test");
+ harness.check(!getColorBetweenComponents(robot, frame, canvas4, canvas5).equals(Color.red));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/Test15.java b/gnu/testlet/java/awt/BorderLayout/Test15.java
new file mode 100644
index 00000000..67cf0be1
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/Test15.java
@@ -0,0 +1,112 @@
+/* Test15.java -- Test 1.5 additions to BorderLayout
+ Copyright (C) 2005 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+
+import javax.swing.JPanel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Test15 implements Testlet {
+
+ @SuppressWarnings("deprecation")
+ public void test(TestHarness harness) {
+ BorderLayout layout = new BorderLayout();
+ JPanel center = new JPanel();
+ JPanel left = new JPanel();
+ JPanel first = new JPanel();
+ JPanel notInLayout = new JPanel();
+ Container container = new Container();
+
+ layout.addLayoutComponent(BorderLayout.CENTER, center);
+ layout.addLayoutComponent(BorderLayout.WEST, left);
+ layout.addLayoutComponent(BorderLayout.LINE_START, first);
+
+ harness.checkPoint("getConstraints");
+ harness.check(layout.getConstraints(center), BorderLayout.CENTER);
+ harness.check(layout.getConstraints(left), BorderLayout.WEST);
+ harness.check(layout.getConstraints(first), BorderLayout.LINE_START);
+ harness.check(layout.getConstraints(null), null);
+ harness.check(layout.getConstraints(notInLayout), null);
+
+ harness.checkPoint("getLayoutComponent");
+ harness.check(layout.getLayoutComponent(BorderLayout.CENTER), center);
+ harness.check(layout.getLayoutComponent(BorderLayout.AFTER_LAST_LINE),
+ null);
+ harness.check(layout.getLayoutComponent(BorderLayout.WEST), left);
+ boolean ok = false;
+ try
+ {
+ layout.getLayoutComponent("HiMaude");
+ }
+ catch (IllegalArgumentException _)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("getLayoutComponent with Container");
+ harness.check(layout.getLayoutComponent(container, BorderLayout.CENTER),
+ center);
+ harness.check(layout.getLayoutComponent(container,
+ BorderLayout.EAST), null);
+ harness.check(layout.getLayoutComponent(container,
+ BorderLayout.WEST), first);
+ ok = false;
+ try
+ {
+ layout.getLayoutComponent(container, BorderLayout.AFTER_LAST_LINE);
+ }
+ catch (IllegalArgumentException _)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ layout.getLayoutComponent(container, "HiMaude");
+ }
+ catch (IllegalArgumentException _)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ layout.getLayoutComponent(null, BorderLayout.WEST);
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/addLayoutComponent.java b/gnu/testlet/java/awt/BorderLayout/addLayoutComponent.java
new file mode 100644
index 00000000..36b02a1b
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/addLayoutComponent.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the constants defined by the {@link BorderLayout} class.
+ */
+public class addLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Component, Object)");
+ BorderLayout l = new BorderLayout();
+ JPanel p1 = new JPanel();
+
+ // check bad constraint
+ boolean pass = false;
+ try
+ {
+ l.addLayoutComponent(p1, "X");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null constraint which is OK
+ pass = true;
+ try
+ {
+ l.addLayoutComponent(p1, null);
+ }
+ catch (RuntimeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/constants.java b/gnu/testlet/java/awt/BorderLayout/constants.java
new file mode 100644
index 00000000..fdcfa72d
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/constants.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Some checks for the constants defined by the {@link BorderLayout} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(BorderLayout.AFTER_LAST_LINE.equals(BorderLayout.PAGE_END));
+ harness.check(BorderLayout.AFTER_LINE_ENDS.equals(BorderLayout.LINE_END));
+ harness.check(BorderLayout.BEFORE_FIRST_LINE.equals(BorderLayout.PAGE_START));
+ harness.check(BorderLayout.BEFORE_LINE_BEGINS.equals(BorderLayout.LINE_START));
+ harness.check(BorderLayout.CENTER.equals("Center"));
+ harness.check(BorderLayout.EAST.equals("East"));
+ harness.check(BorderLayout.LINE_END.equals("After"));
+ harness.check(BorderLayout.LINE_START.equals("Before"));
+ harness.check(BorderLayout.NORTH.equals("North"));
+ harness.check(BorderLayout.PAGE_END.equals("Last"));
+ harness.check(BorderLayout.PAGE_START.equals("First"));
+ harness.check(BorderLayout.SOUTH.equals("South"));
+ harness.check(BorderLayout.WEST.equals("West"));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/constructors.java b/gnu/testlet/java/awt/BorderLayout/constructors.java
new file mode 100644
index 00000000..660e5d6e
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/constructors.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+* Some checks for the constructors in the {@link BorderLayout} class.
+*/
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ BorderLayout l = new BorderLayout();
+ harness.check(l.getHgap(), 0);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ BorderLayout l = new BorderLayout(1, 2);
+ harness.check(l.getHgap(), 1);
+ harness.check(l.getVgap(), 2);
+
+ // try negative arguments
+ l = new BorderLayout(-1, 2);
+ harness.check(l.getHgap(), -1);
+ harness.check(l.getVgap(), 2);
+
+ l = new BorderLayout(1, -1);
+ harness.check(l.getHgap(), 1);
+ harness.check(l.getVgap(), -1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/getHgap.java b/gnu/testlet/java/awt/BorderLayout/getHgap.java
new file mode 100644
index 00000000..6ba243f4
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/getHgap.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Some checks for the getHgap() method in the {@link BorderLayout} class.
+ */
+public class getHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BorderLayout b = new BorderLayout();
+ b.setHgap(99);
+ harness.check(b.getHgap(), 99);
+ b.setHgap(-99);
+ harness.check(b.getHgap(), -99);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java b/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java
new file mode 100644
index 00000000..47402236
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentX.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.java.awt.BorderLayout;
+
+import java.awt.BorderLayout;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLayoutAlignmentX implements Testlet
+{
+
+ @SuppressWarnings("serial")
+ public void test(TestHarness harness)
+ {
+ // We use a JComponent here so we can modify the alignment property.
+ JComponent rp = new JComponent(){
+ // empty block is expected here
+ };
+ BorderLayout lm2 = new BorderLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.5F);
+
+ // Setting the containers alignmentX doesn't change anything.
+ rp.setAlignmentX(0.2F);
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.5F);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java b/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java
new file mode 100644
index 00000000..659468c4
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/getLayoutAlignmentY.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.java.awt.BorderLayout;
+
+import java.awt.BorderLayout;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLayoutAlignmentY implements Testlet
+{
+
+ @SuppressWarnings("serial")
+ public void test(TestHarness harness)
+ {
+ // We use a JComponent here so we can modify the alignment property.
+ JComponent rp = new JComponent(){
+ // empty block is expected here
+ };
+ BorderLayout lm2 = new BorderLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.5F);
+
+ // Setting the containers alignmentY doesn't change anything.
+ rp.setAlignmentY(0.2F);
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.5F);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/getVgap.java b/gnu/testlet/java/awt/BorderLayout/getVgap.java
new file mode 100644
index 00000000..08cbacb3
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/getVgap.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Some checks for the getVgap() method in the {@link BorderLayout} class.
+ */
+public class getVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BorderLayout b = new BorderLayout();
+ b.setVgap(99);
+ harness.check(b.getVgap(), 99);
+ b.setVgap(-99);
+ harness.check(b.getVgap(), -99);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/layoutContainer.java b/gnu/testlet/java/awt/BorderLayout/layoutContainer.java
new file mode 100644
index 00000000..f66c4e7d
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/layoutContainer.java
@@ -0,0 +1,296 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the layoutContainer() method in the
+ * {@link BorderLayout} class.
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test0(harness);
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ test7(harness);
+ test8(harness);
+ test9(harness);
+ test10(harness);
+ test11(harness);
+ }
+
+ /**
+ * All 5 components.
+ */
+ private void test0(TestHarness harness)
+ {
+ harness.checkPoint("test0");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(200, 200);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.CENTER);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(10, 54));
+ p.add(p2, BorderLayout.NORTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(100, 74));
+ p.add(p3, BorderLayout.WEST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(92, 33));
+ p.add(p4, BorderLayout.EAST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(18, 64));
+ p.add(p5, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(100, 54, 8, 82));
+ harness.check(p2.getBounds(), new Rectangle(0, 0, 200, 54));
+ harness.check(p3.getBounds(), new Rectangle(0, 54, 100, 82));
+ harness.check(p4.getBounds(), new Rectangle(108, 54, 92, 82));
+ harness.check(p5.getBounds(), new Rectangle(0, 136, 200, 64));
+ }
+
+ /**
+ * Single component in the center.
+ */
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.CENTER);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 120));
+ }
+
+ /**
+ * Single component, NORTH.
+ */
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 34));
+ }
+
+ /**
+ * Single component, SOUTH.
+ */
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("test3");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 86, 100, 34));
+ }
+
+ /**
+ * Single component, EAST.
+ */
+ private void test4(TestHarness harness)
+ {
+ harness.checkPoint("test4");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(88, 0, 12, 120));
+ }
+
+ /**
+ * Single component, WEST.
+ */
+ private void test5(TestHarness harness)
+ {
+ harness.checkPoint("test5");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 12, 120));
+ }
+
+ /**
+ * Two components, NORTH and SOUTH.
+ */
+ private void test6(TestHarness harness)
+ {
+ harness.checkPoint("test6");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 34));
+ harness.check(p2.getBounds(), new Rectangle(0, 111, 100, 9));
+
+ // try overlapping
+ p1.setPreferredSize(new Dimension(12, 66));
+ p2.setPreferredSize(new Dimension(8, 77));
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 66));
+ harness.check(p2.getBounds(), new Rectangle(0, 43, 100, 77));
+
+ }
+
+ /**
+ * Two components, NORTH and EAST.
+ */
+ private void test7(TestHarness harness)
+ {
+ harness.checkPoint("test7");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 34));
+ harness.check(p2.getBounds(), new Rectangle(92, 34, 8, 86));
+ }
+
+ /**
+ * Two components, NORTH and WEST.
+ */
+ private void test8(TestHarness harness)
+ {
+ harness.checkPoint("test8");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.WEST);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 34));
+ harness.check(p2.getBounds(), new Rectangle(0, 34, 8, 86));
+ }
+
+ /**
+ * Two components, EAST and WEST.
+ */
+ private void test9(TestHarness harness)
+ {
+ harness.checkPoint("test9");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 12, 120));
+ harness.check(p2.getBounds(), new Rectangle(92, 0, 8, 120));
+
+ // try overlapping
+ p1.setPreferredSize(new Dimension(66, 10));
+ p2.setPreferredSize(new Dimension(77, 12));
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 66, 120));
+ harness.check(p2.getBounds(), new Rectangle(23, 0, 77, 120));
+ }
+
+ /**
+ * Two components, EAST and SOUTH.
+ */
+ private void test10(TestHarness harness)
+ {
+ harness.checkPoint("test10");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.EAST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(88, 0, 12, 111));
+ harness.check(p2.getBounds(), new Rectangle(0, 111, 100, 9));
+ }
+
+ /**
+ * Two components, SOUTH and WEST.
+ */
+ private void test11(TestHarness harness)
+ {
+ harness.checkPoint("test11");
+ JPanel p = new JPanel(new BorderLayout());
+ p.setSize(100, 120);
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 12, 111));
+ harness.check(p2.getBounds(), new Rectangle(0, 111, 100, 9));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/maxLayoutSize.java b/gnu/testlet/java/awt/BorderLayout/maxLayoutSize.java
new file mode 100644
index 00000000..c203cab9
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/maxLayoutSize.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.LayoutManager2;
+
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+/**
+ * Some checks for the maximumLayoutSize() method in the
+ * {@link BorderLayout} class.
+ */
+public class maxLayoutSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JTextField ftf = new JTextField("HELLO WORLD");
+ JPanel borderPanel = new JPanel(new java.awt.BorderLayout());
+ borderPanel.add(ftf);
+ LayoutManager2 lm = (LayoutManager2) borderPanel.getLayout();
+ Dimension max = new Dimension (Integer.MAX_VALUE, Integer.MAX_VALUE);
+
+ // Check that the layout manager returns Integer.MAX_VALUE for both
+ // max dimensions, regardless of whether or not there's a border
+ harness.check (lm.maximumLayoutSize(borderPanel), max);
+ borderPanel.setBorder(new javax.swing.border.TitledBorder("HELLO WORLD"));
+ harness.check (lm.maximumLayoutSize(borderPanel), max);
+
+ // Check that maximumLayoutSize isn't affected by the layout size of
+ // the contained components
+ ftf.setMaximumSize(new Dimension (0,0));
+ harness.check (lm.maximumLayoutSize(borderPanel), max);
+
+ // Check that maximumLayoutSize returns Integer.MAX_VALUE even for null
+ // arguments
+ harness.check (lm.maximumLayoutSize(null), max);
+
+ // Check that a brand new BorderLayout unassociated with any Component
+ // also returns Integer.MAX_VALUE for a null argument.
+ BorderLayout bl = new BorderLayout();
+ harness.check (bl.maximumLayoutSize(null), max);
+ }
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/preferredLayoutSize.java b/gnu/testlet/java/awt/BorderLayout/preferredLayoutSize.java
new file mode 100644
index 00000000..495a574a
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/preferredLayoutSize.java
@@ -0,0 +1,393 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the preferredLayoutSize() method in the
+ * {@link BorderLayout} class.
+ */
+public class preferredLayoutSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ test7(harness);
+ test8(harness);
+ test9(harness);
+ test10(harness);
+ test11(harness);
+ test12(harness);
+ test13(harness);
+ test14(harness);
+ test15(harness);
+ test16(harness);
+ test17(harness);
+ }
+
+ /**
+ * Single component in the center.
+ */
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.CENTER);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 34));
+ }
+
+ /**
+ * Single component, NORTH.
+ */
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 34));
+ }
+
+ /**
+ * Single component, SOUTH.
+ */
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("test3");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 34));
+ }
+
+ /**
+ * Single component, EAST.
+ */
+ private void test4(TestHarness harness)
+ {
+ harness.checkPoint("test4");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 34));
+ }
+
+ /**
+ * Single component, WEST.
+ */
+ private void test5(TestHarness harness)
+ {
+ harness.checkPoint("test5");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 34)) ;
+ }
+
+ /**
+ * Two components, NORTH and SOUTH.
+ */
+ private void test6(TestHarness harness)
+ {
+ harness.checkPoint("test6");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 43));
+ }
+
+ /**
+ * Two components, NORTH and EAST.
+ */
+ private void test7(TestHarness harness)
+ {
+ harness.checkPoint("test7");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 43));
+ }
+
+ /**
+ * Two components, NORTH and WEST.
+ */
+ private void test8(TestHarness harness)
+ {
+ harness.checkPoint("test8");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.WEST);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 43));
+ }
+
+ /**
+ * Two components, EAST and WEST.
+ */
+ private void test9(TestHarness harness)
+ {
+ harness.checkPoint("test9");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.EAST);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(20, 34));
+ }
+
+ /**
+ * Two components, EAST and SOUTH.
+ */
+ private void test10(TestHarness harness)
+ {
+ harness.checkPoint("test10");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.EAST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 43));
+ }
+
+ /**
+ * Two components, SOUTH and WEST.
+ */
+ private void test11(TestHarness harness)
+ {
+ harness.checkPoint("test11");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(12, 34));
+ p.add(p1, BorderLayout.WEST);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(8, 9));
+ p.add(p2, BorderLayout.SOUTH);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 43));
+ }
+
+ /**
+ * 5 components, NORTH the widest.
+ */
+ private void test12(TestHarness harness)
+ {
+ harness.checkPoint("test12");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 1));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(10, 2));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(3, 3));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(3, 4));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(3, 5));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(11, 8));
+ }
+
+ /**
+ * 5 components, WEST+CENTER+EAST the widest.
+ */
+ private void test13(TestHarness harness)
+ {
+ harness.checkPoint("test13");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 1));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(10, 2));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(4, 3));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(4, 4));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(4, 5));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 8));
+ }
+
+ /**
+ * 5 components, SOUTH the widest.
+ */
+ private void test14(TestHarness harness)
+ {
+ harness.checkPoint("test14");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(10, 1));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(11, 2));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(3, 3));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(3, 4));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(3, 5));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(11, 8));
+ }
+
+ /**
+ * 5 components, NORTH+WEST+SOUTH the tallest.
+ */
+ private void test15(TestHarness harness)
+ {
+ harness.checkPoint("test15");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(1, 3));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(2, 3));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(3, 3));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(4, 4));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(5, 3));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 10));
+ }
+
+ /**
+ * 5 components, NORTH+CENTER+SOUTH the tallest.
+ */
+ private void test16(TestHarness harness)
+ {
+ harness.checkPoint("test16");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(1, 3));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(2, 3));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(3, 3));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(4, 3));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(5, 4));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 10));
+ }
+
+ /**
+ * 5 components, NORTH+EAST+SOUTH the tallest.
+ */
+ private void test17(TestHarness harness)
+ {
+ harness.checkPoint("test17");
+ JPanel p = new JPanel(new BorderLayout());
+ JPanel p1 = new JPanel();
+ p1.setPreferredSize(new Dimension(1, 3));
+ p.add(p1, BorderLayout.NORTH);
+ JPanel p2 = new JPanel();
+ p2.setPreferredSize(new Dimension(2, 3));
+ p.add(p2, BorderLayout.SOUTH);
+ JPanel p3 = new JPanel();
+ p3.setPreferredSize(new Dimension(3, 4));
+ p.add(p3, BorderLayout.EAST);
+ JPanel p4 = new JPanel();
+ p4.setPreferredSize(new Dimension(4, 3));
+ p.add(p4, BorderLayout.WEST);
+ JPanel p5 = new JPanel();
+ p5.setPreferredSize(new Dimension(5, 3));
+ p.add(p5);
+ p.doLayout();
+ harness.check(p.getPreferredSize(), new Dimension(12, 10));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/removeLayoutComponent.java b/gnu/testlet/java/awt/BorderLayout/removeLayoutComponent.java
new file mode 100644
index 00000000..455335fc
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/removeLayoutComponent.java
@@ -0,0 +1,125 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Canvas;
+import java.awt.Button;
+import java.awt.Panel;
+
+
+
+/**
+ * Check for the functionality of method BorderLayout.removeLayoutComponent
+ */
+public class removeLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testButton(harness);
+ testCanvas(harness);
+ }
+
+ /**
+ * Test the method BorderLayout.removeLayoutComponent for a Button widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testButton(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Button)");
+ BorderLayout layout = new BorderLayout();
+ Button component = new Button();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Test the method BorderLayout.removeLayoutComponent for a Canvas widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testCanvas(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Canvas)");
+ BorderLayout layout = new BorderLayout();
+ Canvas component = new Canvas();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Check the add/remove component method using all possible constraints.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of BorderLayout manager
+ * @param component selected component
+ */
+ private void checkAllPossibleConstraints(TestHarness harness, BorderLayout layout, Component component)
+ {
+ checkAddRemove(harness, layout, component, BorderLayout.NORTH);
+ checkAddRemove(harness, layout, component, BorderLayout.WEST);
+ checkAddRemove(harness, layout, component, BorderLayout.SOUTH);
+ checkAddRemove(harness, layout, component, BorderLayout.EAST);
+ checkAddRemove(harness, layout, component, BorderLayout.PAGE_END);
+ checkAddRemove(harness, layout, component, BorderLayout.PAGE_START);
+ checkAddRemove(harness, layout, component, BorderLayout.LINE_END);
+ checkAddRemove(harness, layout, component, BorderLayout.LINE_START);
+ checkAddRemove(harness, layout, component, BorderLayout.AFTER_LAST_LINE);
+ checkAddRemove(harness, layout, component, BorderLayout.AFTER_LINE_ENDS);
+ checkAddRemove(harness, layout, component, BorderLayout.BEFORE_FIRST_LINE);
+ checkAddRemove(harness, layout, component, BorderLayout.BEFORE_LINE_BEGINS);
+ }
+
+ /**
+ * Add specified component to the layout manager and then remove this component.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of BorderLayout manager
+ * @param component selected component
+ * @param constraints layout constraint
+ */
+ private void checkAddRemove(TestHarness harness, BorderLayout layout, Component component, String constraints)
+ {
+ try {
+ layout.addLayoutComponent(component, constraints);
+ }
+ catch (IllegalArgumentException e) {
+ harness.fail(e.getMessage());
+ }
+ layout.removeLayoutComponent(component);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/BorderLayout/setHgap.java b/gnu/testlet/java/awt/BorderLayout/setHgap.java
new file mode 100644
index 00000000..66bc55d6
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/setHgap.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Some checks for the {@link BorderLayout#setHgap()} method in the {@link BorderLayout} class.
+ */
+public class setHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BorderLayout b = new BorderLayout();
+ b.setHgap(99);
+ harness.check(b.getHgap(), 99);
+ b.setHgap(-99);
+ harness.check(b.getHgap(), -99);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/setVgap.java b/gnu/testlet/java/awt/BorderLayout/setVgap.java
new file mode 100644
index 00000000..8f2d4b33
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/setVgap.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Some checks for the {@link BorderLayout#setVgap()} method in the {@link BorderLayout} class.
+ */
+public class setVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BorderLayout b = new BorderLayout();
+ b.setVgap(99);
+ harness.check(b.getVgap(), 99);
+ b.setVgap(-99);
+ harness.check(b.getVgap(), -99);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/BorderLayout/toString.java b/gnu/testlet/java/awt/BorderLayout/toString.java
new file mode 100644
index 00000000..28775e7f
--- /dev/null
+++ b/gnu/testlet/java/awt/BorderLayout/toString.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.BorderLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+
+/**
+ * Check for the {@link BorderLayout#toString()} method in the {@link BorderLayout} class.
+ *
+ */
+public class toString
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ BorderLayout borderLayout1 = new BorderLayout();
+ borderLayout1.toString();
+ harness.check(borderLayout1.toString() != null);
+ harness.check(borderLayout1.toString(), "java.awt.BorderLayout[hgap=0,vgap=0]");
+
+ // test constructor with two parameters
+ BorderLayout borderLayout2 = new BorderLayout(50, 50);
+ borderLayout2.toString();
+ harness.check(borderLayout1.toString() != null);
+ harness.check(borderLayout2.toString(), "java.awt.BorderLayout[hgap=50,vgap=50]");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java b/gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java
new file mode 100644
index 00000000..d374cd89
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/ActionListenerNegativeTest1.java
@@ -0,0 +1,121 @@
+// ActionListenerNegativeTest1.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ActionListener could be registered for an AWT Button
+ * and if action is *not* performed when second mouse button is pressed.
+ */
+public class ActionListenerNegativeTest1
+ extends Panel
+ implements Testlet
+{
+ boolean actionPerformedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+ button.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e)
+ {
+ actionPerformedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!actionPerformedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java b/gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java
new file mode 100644
index 00000000..1dfec4f2
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/ActionListenerNegativeTest2.java
@@ -0,0 +1,121 @@
+// ActionListenerNegativeTest2.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ActionListener could be registered for an AWT Button
+ * and if action is *not* performed when third mouse button is pressed.
+ */
+public class ActionListenerNegativeTest2
+ extends Panel
+ implements Testlet
+{
+ boolean actionPerformedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+ button.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e)
+ {
+ actionPerformedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!actionPerformedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java b/gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java
new file mode 100644
index 00000000..9c5d2471
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/ActionListenerPositiveTest.java
@@ -0,0 +1,123 @@
+// ActionListenerPositiveTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ActionListener could be registered for an AWT Button
+ * and if action is performed when left mouse button is pressed.
+ */
+public class ActionListenerPositiveTest
+ extends Panel
+ implements Testlet
+{
+ boolean actionPerformedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+ ActionListener[] actionListeners = button.getActionListeners();
+ harness.check(actionListeners.length, 0);
+ button.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e)
+ {
+ actionPerformedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(actionPerformedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/CVS/Entries b/gnu/testlet/java/awt/Button/CVS/Entries
new file mode 100644
index 00000000..91538c3d
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/CVS/Entries
@@ -0,0 +1,26 @@
+/ActionListenerNegativeTest1.java/1.2/Fri Oct 7 15:10:50 2011//
+/ActionListenerNegativeTest2.java/1.2/Fri Oct 7 15:10:50 2011//
+/ActionListenerPositiveTest.java/1.2/Fri Oct 7 15:10:50 2011//
+/KeyboardListenerAsciiKeys.java/1.1/Tue Oct 11 14:23:24 2011//
+/KeyboardListenerCursorKeys.java/1.1/Tue Oct 11 14:23:24 2011//
+/KeyboardListenerFunctionKeys.java/1.1/Tue Oct 11 14:23:24 2011//
+/KeyboardListenerTest.java/1.1/Tue Oct 11 14:23:24 2011//
+/MouseListenerTest.java/1.1/Fri Oct 7 15:10:50 2011//
+/MouseMotionListenerTest.java/1.1/Fri Oct 7 15:10:50 2011//
+/MouseWheelListenerTest.java/1.1/Fri Oct 7 15:10:50 2011//
+/PaintTest.java/1.4/Fri Sep 30 12:27:49 2011//
+/addActionListener.java/1.2/Thu Oct 6 14:08:32 2011//
+/addComponentListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addFocusListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addHierarchyBoundsListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addHierarchyListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addInputMethodListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addKeyListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addMouseListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addMouseMotionListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addMouseWheelListener.java/1.1/Thu Oct 6 14:08:32 2011//
+/addPropertyChangeListener.java/1.1/Mon Dec 12 12:45:58 2011//
+/addPropertyChangeListenerString.java/1.1/Mon Dec 12 12:45:58 2011//
+/constructors.java/1.1/Tue Oct 4 15:19:51 2011//
+/list.java/1.1/Tue Oct 11 14:23:24 2011//
+D
diff --git a/gnu/testlet/java/awt/Button/CVS/Repository b/gnu/testlet/java/awt/Button/CVS/Repository
new file mode 100644
index 00000000..def5b1a7
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Button
diff --git a/gnu/testlet/java/awt/Button/CVS/Root b/gnu/testlet/java/awt/Button/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Button/KeyboardListenerAsciiKeys.java b/gnu/testlet/java/awt/Button/KeyboardListenerAsciiKeys.java
new file mode 100644
index 00000000..4a517ca6
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/KeyboardListenerAsciiKeys.java
@@ -0,0 +1,181 @@
+// KeyboardListenerAsciiKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Button
+ * and if action is really performed.
+ */
+public class KeyboardListenerAsciiKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_A,
+ KeyEvent.VK_Z,
+ KeyEvent.VK_0,
+ KeyEvent.VK_9,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+ List<Integer> keyTypedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new listener
+ button.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ keyTypedFlag.add(0+e.getKeyChar());
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ // either 'A' or 'a' could be catched by keyTyped event
+ harness.check(keyTypedFlag.contains(key) || keyTypedFlag.contains(key - 'A' + 'a'));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/KeyboardListenerCursorKeys.java b/gnu/testlet/java/awt/Button/KeyboardListenerCursorKeys.java
new file mode 100644
index 00000000..1b2bce59
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/KeyboardListenerCursorKeys.java
@@ -0,0 +1,176 @@
+// KeyboardListenerCursorKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Button
+ * and if action is really performed.
+ */
+public class KeyboardListenerCursorKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_UP,
+ KeyEvent.VK_DOWN,
+ KeyEvent.VK_LEFT,
+ KeyEvent.VK_RIGHT,
+ KeyEvent.VK_HOME,
+ KeyEvent.VK_END,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new listener
+ button.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty block
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/KeyboardListenerFunctionKeys.java b/gnu/testlet/java/awt/Button/KeyboardListenerFunctionKeys.java
new file mode 100644
index 00000000..5e245ae4
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/KeyboardListenerFunctionKeys.java
@@ -0,0 +1,180 @@
+// KeyboardListenerFunctionKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Button
+ * and if action is really performed.
+ */
+public class KeyboardListenerFunctionKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_F1,
+ KeyEvent.VK_F2,
+ KeyEvent.VK_F3,
+ KeyEvent.VK_F4,
+ KeyEvent.VK_F5,
+ KeyEvent.VK_F6,
+ KeyEvent.VK_F7,
+ KeyEvent.VK_F8,
+ KeyEvent.VK_F9,
+ KeyEvent.VK_F10,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new listener
+ button.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty block
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/KeyboardListenerTest.java b/gnu/testlet/java/awt/Button/KeyboardListenerTest.java
new file mode 100644
index 00000000..ed0d8628
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/KeyboardListenerTest.java
@@ -0,0 +1,145 @@
+// KeyboardListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Button
+ * and if action is really performed.
+ */
+public class KeyboardListenerTest
+ extends Panel
+ implements Testlet
+{
+
+ // these flags are set by KeyListener
+ boolean keyPressedFlag = false;
+ boolean keyReleasedFlag = false;
+ boolean keyTypedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new listener
+ button.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag = true;
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag = true;
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ keyTypedFlag = true;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ robot.keyPress(KeyEvent.VK_A);
+ robot.delay(250);
+ robot.keyRelease(KeyEvent.VK_A);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(keyPressedFlag);
+ harness.check(keyReleasedFlag);
+ harness.check(keyTypedFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/MouseListenerTest.java b/gnu/testlet/java/awt/Button/MouseListenerTest.java
new file mode 100644
index 00000000..7978dad4
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/MouseListenerTest.java
@@ -0,0 +1,206 @@
+// MouseListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Button
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseListener
+ boolean mouseClickedButton1Flag = false;
+ boolean mouseClickedButton2Flag = false;
+ boolean mouseClickedButton3Flag = false;
+ boolean mousePressedButton1Flag = false;
+ boolean mousePressedButton2Flag = false;
+ boolean mousePressedButton3Flag = false;
+ boolean mouseReleasedButton1Flag = false;
+ boolean mouseReleasedButton2Flag = false;
+ boolean mouseReleasedButton3Flag = false;
+ boolean mouseEnteredFlag = false;
+ boolean mouseExitedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new mouse listener
+ button.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseClickedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseClickedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseClickedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ mouseEnteredFlag = true;
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ mouseExitedFlag = true;
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mousePressedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mousePressedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mousePressedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // figure out which button was pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseReleasedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseReleasedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseReleasedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & button behaviour using ALL mouse buttons
+ for (int mouseButton : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // click = press + release
+ robot.mousePress(mouseButton);
+ robot.delay(250);
+ robot.mouseRelease(mouseButton);
+ robot.delay(250);
+
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(mouseClickedButton1Flag);
+ harness.check(mouseClickedButton2Flag);
+ harness.check(mouseClickedButton3Flag);
+ harness.check(mousePressedButton1Flag);
+ harness.check(mousePressedButton2Flag);
+ harness.check(mousePressedButton3Flag);
+ harness.check(mouseReleasedButton1Flag);
+ harness.check(mouseReleasedButton2Flag);
+ harness.check(mouseReleasedButton3Flag);
+ harness.check(mouseEnteredFlag);
+ harness.check(mouseExitedFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/MouseMotionListenerTest.java b/gnu/testlet/java/awt/Button/MouseMotionListenerTest.java
new file mode 100644
index 00000000..14b0684a
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/MouseMotionListenerTest.java
@@ -0,0 +1,175 @@
+// MouseMotionListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Button
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseMotionListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseMotionListener
+ boolean mouseDraggedButton1Flag = false;
+ boolean mouseDraggedButton2Flag = false;
+ boolean mouseDraggedButton3Flag = false;
+ boolean mouseMovedButton1Flag = false;
+ boolean mouseMovedButton2Flag = false;
+ boolean mouseMovedButton3Flag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new mouse motion listener
+ button.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ mouseDraggedButton1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseDraggedButton2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseDraggedButton3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ // none of the modifiers should be set
+ mouseMovedButton1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseMovedButton2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseMovedButton3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & button behaviour using ALL mouse buttons
+ for (int mouseButton : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mousePress(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseRelease(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseDraggedButton1Flag);
+ harness.check(mouseDraggedButton2Flag);
+ harness.check(mouseDraggedButton3Flag);
+
+ // negative tests
+ harness.check(!mouseMovedButton1Flag);
+ harness.check(!mouseMovedButton2Flag);
+ harness.check(!mouseMovedButton3Flag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/MouseWheelListenerTest.java b/gnu/testlet/java/awt/Button/MouseWheelListenerTest.java
new file mode 100644
index 00000000..af10ad51
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/MouseWheelListenerTest.java
@@ -0,0 +1,135 @@
+// MouseWheelListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Button
+ * and if action is performed when mouse wheel is rotated up and down.
+ */
+public class MouseWheelListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseWheelListener
+ boolean mouseWheelScrollUpFlag = false;
+ boolean mouseWheelScrollDownFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+ add(button);
+
+ // register new mouse wheel listener
+ button.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // figure out if mouse wheel is scrolled up or down
+ mouseWheelScrollUpFlag |= e.getWheelRotation() < 0;
+ mouseWheelScrollDownFlag |= e.getWheelRotation() > 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of button on a screen
+ Rectangle bounds = button.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mouseWheel(+1);
+ robot.delay(250);
+ robot.mouseWheel(-1);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseWheelScrollUpFlag);
+ harness.check(mouseWheelScrollDownFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/PaintTest.java b/gnu/testlet/java/awt/Button/PaintTest.java
new file mode 100644
index 00000000..9d6f1f61
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/PaintTest.java
@@ -0,0 +1,112 @@
+/* PaintTest.java --
+ Copyright (C) 2006, 2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ Button b = new Button(" ");
+ b.setBackground(Color.blue);
+ add(b);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Rectangle bounds = b.getBounds();
+ Point loc = f.getLocationOnScreen();
+ Insets i = f.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ r.mouseMove(checkedPixelX, checkedPixelY);
+ r.waitForIdle();
+
+ // check the color of a pixel located in the button center
+ Color but = r.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(but.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addActionListener.java b/gnu/testlet/java/awt/Button/addActionListener.java
new file mode 100644
index 00000000..cc262aea
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addActionListener.java
@@ -0,0 +1,82 @@
+// addActionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ActionListener could be registered for an AWT Button.
+ */
+public class addActionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered action listeners
+ ActionListener[] actionListeners;
+
+ // get all registered action listeners
+ actionListeners = button.getActionListeners();
+ harness.check(actionListeners.length, 0);
+
+ // register new action listener
+ button.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myActionListener";
+ }
+ }
+ );
+
+ // get all registered action listeners
+ actionListeners = button.getActionListeners();
+ harness.check(actionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(actionListeners[0].toString(), "myActionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addComponentListener.java b/gnu/testlet/java/awt/Button/addComponentListener.java
new file mode 100644
index 00000000..fea9dd9f
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addComponentListener.java
@@ -0,0 +1,97 @@
+// addComponentListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ComponentListener could be registered for an AWT Button.
+ */
+public class addComponentListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ ComponentListener[] componentListeners;
+
+ // get all registered listeners
+ componentListeners = button.getComponentListeners();
+ harness.check(componentListeners.length, 0);
+
+ // register new listener
+ button.addComponentListener(
+ new ComponentListener() {
+ public void componentHidden(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myComponentListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ componentListeners = button.getComponentListeners();
+ harness.check(componentListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(componentListeners[0].toString(), "myComponentListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addFocusListener.java b/gnu/testlet/java/awt/Button/addFocusListener.java
new file mode 100644
index 00000000..f5933401
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addFocusListener.java
@@ -0,0 +1,88 @@
+// addFocusListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if FocusListener could be registered for an AWT Button.
+ */
+public class addFocusListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ FocusListener[] focusListeners;
+
+ // get all registered listeners
+ focusListeners = button.getFocusListeners();
+ harness.check(focusListeners.length, 0);
+
+ // register new listener
+ button.addFocusListener(
+ new FocusListener() {
+
+ public void focusGained(FocusEvent e)
+ {
+ // empty
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myFocusListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ focusListeners = button.getFocusListeners();
+ harness.check(focusListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(focusListeners[0].toString(), "myFocusListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addHierarchyBoundsListener.java b/gnu/testlet/java/awt/Button/addHierarchyBoundsListener.java
new file mode 100644
index 00000000..ef6bcd79
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addHierarchyBoundsListener.java
@@ -0,0 +1,88 @@
+// addHierarchyBoundsListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyBoundsListener could be registered for an AWT Button.
+ */
+public class addHierarchyBoundsListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyBoundsListener[] hierarchyBoundsListeners;
+
+ // get all registered listeners
+ hierarchyBoundsListeners = button.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 0);
+
+ // register new listener
+ button.addHierarchyBoundsListener(
+ new HierarchyBoundsListener() {
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyBoundsListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyBoundsListeners = button.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyBoundsListeners[0].toString(), "myHierarchyBoundsListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addHierarchyListener.java b/gnu/testlet/java/awt/Button/addHierarchyListener.java
new file mode 100644
index 00000000..0e2a2268
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addHierarchyListener.java
@@ -0,0 +1,83 @@
+// addHierarchyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyListener could be registered for an AWT Button.
+ */
+public class addHierarchyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyListener[] hierarchyListeners;
+
+ // get all registered listeners
+ hierarchyListeners = button.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 0);
+
+ // register new listener
+ button.addHierarchyListener(
+ new HierarchyListener() {
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyListeners = button.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyListeners[0].toString(), "myHierarchyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addInputMethodListener.java b/gnu/testlet/java/awt/Button/addInputMethodListener.java
new file mode 100644
index 00000000..136b160e
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addInputMethodListener.java
@@ -0,0 +1,88 @@
+// addInputMethodListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if InputMethodListener could be registered for an AWT Button.
+ */
+public class addInputMethodListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ InputMethodListener[] inputMethodListeners;
+
+ // get all registered listeners
+ inputMethodListeners = button.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 0);
+
+ // register new listener
+ button.addInputMethodListener(
+ new InputMethodListener() {
+
+ public void caretPositionChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myInputMethodListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ inputMethodListeners = button.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(inputMethodListeners[0].toString(), "myInputMethodListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addKeyListener.java b/gnu/testlet/java/awt/Button/addKeyListener.java
new file mode 100644
index 00000000..5320a0bd
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addKeyListener.java
@@ -0,0 +1,93 @@
+// addKeyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Button.
+ */
+public class addKeyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ KeyListener[] keyListeners;
+
+ // get all registered listeners
+ keyListeners = button.getKeyListeners();
+ harness.check(keyListeners.length, 0);
+
+ // register new listener
+ button.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myKeyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ keyListeners = button.getKeyListeners();
+ harness.check(keyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(keyListeners[0].toString(), "myKeyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addMouseListener.java b/gnu/testlet/java/awt/Button/addMouseListener.java
new file mode 100644
index 00000000..629ee94e
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addMouseListener.java
@@ -0,0 +1,103 @@
+// addMouseListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Button.
+ */
+public class addMouseListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered mouse listeners
+ MouseListener[] mouseListeners;
+
+ // get all registered mouse listeners
+ mouseListeners = button.getMouseListeners();
+ harness.check(mouseListeners.length, 0);
+
+ // register new mouse listener
+ button.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseListener";
+ }
+ }
+ );
+
+ // get all registered mouse listeners
+ mouseListeners = button.getMouseListeners();
+ harness.check(mouseListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseListeners[0].toString(), "myMouseListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addMouseMotionListener.java b/gnu/testlet/java/awt/Button/addMouseMotionListener.java
new file mode 100644
index 00000000..b627cd49
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addMouseMotionListener.java
@@ -0,0 +1,88 @@
+// addMouseMotionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Button.
+ */
+public class addMouseMotionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseMotionListener[] mouseMotionListeners;
+
+ // get all registered listeners
+ mouseMotionListeners = button.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 0);
+
+ // register new listener
+ button.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseMotionListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseMotionListeners = button.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseMotionListeners[0].toString(), "myMouseMotionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addMouseWheelListener.java b/gnu/testlet/java/awt/Button/addMouseWheelListener.java
new file mode 100644
index 00000000..b512cef4
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addMouseWheelListener.java
@@ -0,0 +1,83 @@
+// addMouseWheelListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Button.
+ */
+public class addMouseWheelListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseWheelListener[] mouseWheelListeners;
+
+ // get all registered listeners
+ mouseWheelListeners = button.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 0);
+
+ // register new listener
+ button.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseWheelListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseWheelListeners = button.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseWheelListeners[0].toString(), "myMouseWheelListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/addPropertyChangeListener.java b/gnu/testlet/java/awt/Button/addPropertyChangeListener.java
new file mode 100644
index 00000000..5b4a62f7
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addPropertyChangeListener.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import java.awt.Color;
+import java.awt.Button;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Button}.
+ */
+public class addPropertyChangeListener
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = button.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ button.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = button.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Button/addPropertyChangeListenerString.java b/gnu/testlet/java/awt/Button/addPropertyChangeListenerString.java
new file mode 100644
index 00000000..9a276e14
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/addPropertyChangeListenerString.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Button;
+
+import java.awt.Color;
+import java.awt.Button;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Button}.
+ */
+public class addPropertyChangeListenerString
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Button button = new Button("xyzzy");
+ button.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = button.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ button.addPropertyChangeListener("font", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = button.getPropertyChangeListeners("font");
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Button/constructors.java b/gnu/testlet/java/awt/Button/constructors.java
new file mode 100644
index 00000000..80b05685
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/constructors.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+
+// Button constructors test
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Button button1 = new Button();
+ harness.check(button1 != null);
+ doCommonTests(harness, button1);
+
+ // test one parameter constructor
+ Button button2 = new Button("xyzzy");
+ harness.check(button2 != null);
+ harness.check(button2.getLabel(), "xyzzy");
+ doCommonTests(harness, button2);
+ }
+
+ public void doCommonTests(TestHarness harness, Button button)
+ {
+ // label checks
+ button.setLabel("42");
+ harness.check(button.getLabel(), "42");
+ button.setLabel("");
+ harness.check(button.getLabel(), "");
+ button.setLabel(null);
+ harness.check(button.getLabel() == null);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Button/list.java b/gnu/testlet/java/awt/Button/list.java
new file mode 100644
index 00000000..675284ff
--- /dev/null
+++ b/gnu/testlet/java/awt/Button/list.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Button;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+
+// test of method list()
+public class list
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Button button1 = new Button();
+ button1.list();
+ button1.list(System.out);
+ button1.list(System.out, 0);
+ button1.list(System.out, 10);
+
+ // test constructor with one parameter
+ Button button2 = new Button("xyzzy");
+ button2.list();
+ button2.list(System.out);
+ button2.list(System.out, 0);
+ button2.list(System.out, 10);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CVS/Entries b/gnu/testlet/java/awt/CVS/Entries
new file mode 100644
index 00000000..cd6ff9a5
--- /dev/null
+++ b/gnu/testlet/java/awt/CVS/Entries
@@ -0,0 +1,3 @@
+/LocationTests.java/1.1/Wed Feb 22 17:45:35 2006//
+/testName.java/1.1/Fri Jul 7 20:14:10 2006//
+D
diff --git a/gnu/testlet/java/awt/CVS/Entries.Log b/gnu/testlet/java/awt/CVS/Entries.Log
new file mode 100644
index 00000000..543c8973
--- /dev/null
+++ b/gnu/testlet/java/awt/CVS/Entries.Log
@@ -0,0 +1,66 @@
+A D/AWTError////
+A D/AWTEvent////
+A D/AWTException////
+A D/AWTKeyStroke////
+A D/AWTPermission////
+A D/AlphaComposite////
+A D/BasicStroke////
+A D/BorderLayout////
+A D/Button////
+A D/Canvas////
+A D/CardLayout////
+A D/Checkbox////
+A D/CheckboxGroup////
+A D/Choice////
+A D/Color////
+A D/ColorClass////
+A D/Component////
+A D/Container////
+A D/Desktop////
+A D/Dialog////
+A D/Dimension////
+A D/Event////
+A D/EventClass////
+A D/FileDialog////
+A D/FlowLayout////
+A D/Font////
+A D/FontClass////
+A D/FontFormatException////
+A D/FontMetrics////
+A D/Frame////
+A D/GradientPaint////
+A D/Graphics////
+A D/Graphics2D////
+A D/GridBagLayout////
+A D/GridLayout////
+A D/HeadlessException////
+A D/IllegalComponentStateException////
+A D/KeyboardFocusManager////
+A D/Label////
+A D/List////
+A D/Menu////
+A D/MenuBar////
+A D/MenuItem////
+A D/MenuShortcut////
+A D/Panel////
+A D/Point////
+A D/Polygon////
+A D/Rectangle////
+A D/RenderingHints////
+A D/Robot////
+A D/ScrollPane////
+A D/ScrollPaneAdjustable////
+A D/Scrollbar////
+A D/TextArea////
+A D/TextComponent////
+A D/TextField////
+A D/Toolkit////
+A D/Window////
+A D/color////
+A D/datatransfer////
+A D/dnd////
+A D/event////
+A D/font////
+A D/geom////
+A D/image////
+A D/print////
diff --git a/gnu/testlet/java/awt/CVS/Repository b/gnu/testlet/java/awt/CVS/Repository
new file mode 100644
index 00000000..448214b7
--- /dev/null
+++ b/gnu/testlet/java/awt/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt
diff --git a/gnu/testlet/java/awt/CVS/Root b/gnu/testlet/java/awt/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Canvas/CVS/Entries b/gnu/testlet/java/awt/Canvas/CVS/Entries
new file mode 100644
index 00000000..8362b21b
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/CVS/Entries
@@ -0,0 +1,18 @@
+/MouseListenerTest.java/1.1/Mon Oct 10 11:55:10 2011//
+/MouseMotionListenerTest.java/1.1/Mon Oct 10 11:55:10 2011//
+/MouseWheelListenerTest.java/1.1/Mon Oct 10 11:55:10 2011//
+/PaintTest.java/1.5/Fri Sep 30 12:27:49 2011//
+/addComponentListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addFocusListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addHierarchyBoundsListener.java/1.1/Tue Oct 11 14:23:24 2011//
+/addHierarchyListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addInputMethodListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addKeyListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addMouseListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addMouseMotionListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addMouseWheelListener.java/1.1/Mon Oct 10 11:55:10 2011//
+/addPropertyChangeListener.java/1.1/Tue Dec 13 10:51:06 2011//
+/addPropertyChangeListenerString.java/1.1/Tue Dec 13 10:51:06 2011//
+/constructors.java/1.1/Tue Oct 4 15:19:51 2011//
+/list.java/1.1/Mon Oct 10 11:55:10 2011//
+D
diff --git a/gnu/testlet/java/awt/Canvas/CVS/Repository b/gnu/testlet/java/awt/Canvas/CVS/Repository
new file mode 100644
index 00000000..78cddb31
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Canvas
diff --git a/gnu/testlet/java/awt/Canvas/CVS/Root b/gnu/testlet/java/awt/Canvas/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Canvas/MouseListenerTest.java b/gnu/testlet/java/awt/Canvas/MouseListenerTest.java
new file mode 100644
index 00000000..ef7bf56f
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/MouseListenerTest.java
@@ -0,0 +1,207 @@
+// MouseListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Canvas
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseListener
+ boolean mouseClickedCanvas1Flag = false;
+ boolean mouseClickedCanvas2Flag = false;
+ boolean mouseClickedCanvas3Flag = false;
+ boolean mousePressedCanvas1Flag = false;
+ boolean mousePressedCanvas2Flag = false;
+ boolean mousePressedCanvas3Flag = false;
+ boolean mouseReleasedCanvas1Flag = false;
+ boolean mouseReleasedCanvas2Flag = false;
+ boolean mouseReleasedCanvas3Flag = false;
+ boolean mouseEnteredFlag = false;
+ boolean mouseExitedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+ canvas.setSize(100,100);
+ add(canvas);
+
+ // register new mouse listener
+ canvas.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseClickedCanvas1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseClickedCanvas2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseClickedCanvas3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ mouseEnteredFlag = true;
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ mouseExitedFlag = true;
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mousePressedCanvas1Flag = true; break;
+ case MouseEvent.BUTTON2: mousePressedCanvas2Flag = true; break;
+ case MouseEvent.BUTTON3: mousePressedCanvas3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // figure out which button was pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseReleasedCanvas1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseReleasedCanvas2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseReleasedCanvas3Flag = true; break;
+ default: break;
+ }
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of canvas on a screen
+ Rectangle bounds = canvas.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & canvas behaviour using ALL mouse buttons
+ for (int mouseCanvas : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the canvas
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // click = press + release
+ robot.mousePress(mouseCanvas);
+ robot.delay(250);
+ robot.mouseRelease(mouseCanvas);
+ robot.delay(250);
+
+ // move the mouse cursor outside the canvas
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(mouseClickedCanvas1Flag);
+ harness.check(mouseClickedCanvas2Flag);
+ harness.check(mouseClickedCanvas3Flag);
+ harness.check(mousePressedCanvas1Flag);
+ harness.check(mousePressedCanvas2Flag);
+ harness.check(mousePressedCanvas3Flag);
+ harness.check(mouseReleasedCanvas1Flag);
+ harness.check(mouseReleasedCanvas2Flag);
+ harness.check(mouseReleasedCanvas3Flag);
+ harness.check(mouseEnteredFlag);
+ harness.check(mouseExitedFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/MouseMotionListenerTest.java b/gnu/testlet/java/awt/Canvas/MouseMotionListenerTest.java
new file mode 100644
index 00000000..19af9595
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/MouseMotionListenerTest.java
@@ -0,0 +1,176 @@
+// MouseMotionListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Canvas
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseMotionListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseMotionListener
+ boolean mouseDraggedCanvas1Flag = false;
+ boolean mouseDraggedCanvas2Flag = false;
+ boolean mouseDraggedCanvas3Flag = false;
+ boolean mouseMovedCanvas1Flag = false;
+ boolean mouseMovedCanvas2Flag = false;
+ boolean mouseMovedCanvas3Flag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+ canvas.setSize(100,100);
+ add(canvas);
+
+ // register new mouse motion listener
+ canvas.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ mouseDraggedCanvas1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseDraggedCanvas2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseDraggedCanvas3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ // none of the modifiers should be set
+ mouseMovedCanvas1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseMovedCanvas2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseMovedCanvas3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of canvas on a screen
+ Rectangle bounds = canvas.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & canvas behaviour using ALL mouse buttons
+ for (int mouseCanvas : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the canvas
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mousePress(mouseCanvas);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseRelease(mouseCanvas);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+
+ // move the mouse cursor outside the canvas
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseDraggedCanvas1Flag);
+ harness.check(mouseDraggedCanvas2Flag);
+ harness.check(mouseDraggedCanvas3Flag);
+
+ // negative tests
+ harness.check(!mouseMovedCanvas1Flag);
+ harness.check(!mouseMovedCanvas2Flag);
+ harness.check(!mouseMovedCanvas3Flag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/MouseWheelListenerTest.java b/gnu/testlet/java/awt/Canvas/MouseWheelListenerTest.java
new file mode 100644
index 00000000..94916e95
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/MouseWheelListenerTest.java
@@ -0,0 +1,136 @@
+// MouseWheelListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Canvas
+ * and if action is performed when mouse wheel is rotated up and down.
+ */
+public class MouseWheelListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseWheelListener
+ boolean mouseWheelScrollUpFlag = false;
+ boolean mouseWheelScrollDownFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+ canvas.setSize(100,100);
+ add(canvas);
+
+ // register new mouse wheel listener
+ canvas.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // figure out if mouse wheel is scrolled up or down
+ mouseWheelScrollUpFlag |= e.getWheelRotation() < 0;
+ mouseWheelScrollDownFlag |= e.getWheelRotation() > 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of canvas on a screen
+ Rectangle bounds = canvas.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mouseWheel(+1);
+ robot.delay(250);
+ robot.mouseWheel(-1);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseWheelScrollUpFlag);
+ harness.check(mouseWheelScrollDownFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/PaintTest.java b/gnu/testlet/java/awt/Canvas/PaintTest.java
new file mode 100644
index 00000000..19d27dcb
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/PaintTest.java
@@ -0,0 +1,116 @@
+/* PaintTest.java --
+ Copyright (C) 2006, 2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ Canvas c = new Canvas();
+ c.setBackground(Color.blue);
+ c.setSize(100,100);
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Point loc = f.getLocationOnScreen();
+ Rectangle bounds = c.getBounds();
+ Insets i = f.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ r.mouseMove(checkedPixelX, checkedPixelY);
+ r.waitForIdle();
+
+ // check the color of a pixel located in the canvas centre
+ Color but = r.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(but.equals(Color.blue));
+
+ // and also check color in all four canvas corners
+ LocationTests.checkRectangleCornerColors(harness, r, bounds, Color.blue, true);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addComponentListener.java b/gnu/testlet/java/awt/Canvas/addComponentListener.java
new file mode 100644
index 00000000..26eb3659
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addComponentListener.java
@@ -0,0 +1,97 @@
+// addComponentListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ComponentListener could be registered for an AWT Canvas.
+ */
+public class addComponentListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ ComponentListener[] componentListeners;
+
+ // get all registered listeners
+ componentListeners = canvas.getComponentListeners();
+ harness.check(componentListeners.length, 0);
+
+ // register new listener
+ canvas.addComponentListener(
+ new ComponentListener() {
+ public void componentHidden(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myComponentListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ componentListeners = canvas.getComponentListeners();
+ harness.check(componentListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(componentListeners[0].toString(), "myComponentListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addFocusListener.java b/gnu/testlet/java/awt/Canvas/addFocusListener.java
new file mode 100644
index 00000000..dc7cf855
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addFocusListener.java
@@ -0,0 +1,88 @@
+// addFocusListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if FocusListener could be registered for an AWT Canvas.
+ */
+public class addFocusListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ FocusListener[] focusListeners;
+
+ // get all registered listeners
+ focusListeners = canvas.getFocusListeners();
+ harness.check(focusListeners.length, 0);
+
+ // register new listener
+ canvas.addFocusListener(
+ new FocusListener() {
+
+ public void focusGained(FocusEvent e)
+ {
+ // empty
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myFocusListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ focusListeners = canvas.getFocusListeners();
+ harness.check(focusListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(focusListeners[0].toString(), "myFocusListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addHierarchyBoundsListener.java b/gnu/testlet/java/awt/Canvas/addHierarchyBoundsListener.java
new file mode 100644
index 00000000..21f97f7f
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addHierarchyBoundsListener.java
@@ -0,0 +1,88 @@
+// addHierarchyBoundsListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyBoundsListener could be registered for an AWT Canvas.
+ */
+public class addHierarchyBoundsListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyBoundsListener[] hierarchyBoundsListeners;
+
+ // get all registered listeners
+ hierarchyBoundsListeners = canvas.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 0);
+
+ // register new listener
+ canvas.addHierarchyBoundsListener(
+ new HierarchyBoundsListener() {
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyBoundsListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyBoundsListeners = canvas.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyBoundsListeners[0].toString(), "myHierarchyBoundsListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addHierarchyListener.java b/gnu/testlet/java/awt/Canvas/addHierarchyListener.java
new file mode 100644
index 00000000..c9635a79
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addHierarchyListener.java
@@ -0,0 +1,83 @@
+// addHierarchyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyListener could be registered for an AWT Canvas.
+ */
+public class addHierarchyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyListener[] hierarchyListeners;
+
+ // get all registered listeners
+ hierarchyListeners = canvas.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 0);
+
+ // register new listener
+ canvas.addHierarchyListener(
+ new HierarchyListener() {
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyListeners = canvas.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyListeners[0].toString(), "myHierarchyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addInputMethodListener.java b/gnu/testlet/java/awt/Canvas/addInputMethodListener.java
new file mode 100644
index 00000000..d3248112
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addInputMethodListener.java
@@ -0,0 +1,88 @@
+// addInputMethodListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if InputMethodListener could be registered for an AWT Canvas.
+ */
+public class addInputMethodListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ InputMethodListener[] inputMethodListeners;
+
+ // get all registered listeners
+ inputMethodListeners = canvas.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 0);
+
+ // register new listener
+ canvas.addInputMethodListener(
+ new InputMethodListener() {
+
+ public void caretPositionChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myInputMethodListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ inputMethodListeners = canvas.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(inputMethodListeners[0].toString(), "myInputMethodListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addKeyListener.java b/gnu/testlet/java/awt/Canvas/addKeyListener.java
new file mode 100644
index 00000000..8f70cd07
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addKeyListener.java
@@ -0,0 +1,93 @@
+// addKeyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Canvas.
+ */
+public class addKeyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ KeyListener[] keyListeners;
+
+ // get all registered listeners
+ keyListeners = canvas.getKeyListeners();
+ harness.check(keyListeners.length, 0);
+
+ // register new listener
+ canvas.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myKeyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ keyListeners = canvas.getKeyListeners();
+ harness.check(keyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(keyListeners[0].toString(), "myKeyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addMouseListener.java b/gnu/testlet/java/awt/Canvas/addMouseListener.java
new file mode 100644
index 00000000..5c2dfa37
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addMouseListener.java
@@ -0,0 +1,103 @@
+// addMouseListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Canvas.
+ */
+public class addMouseListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered mouse listeners
+ MouseListener[] mouseListeners;
+
+ // get all registered mouse listeners
+ mouseListeners = canvas.getMouseListeners();
+ harness.check(mouseListeners.length, 0);
+
+ // register new mouse listener
+ canvas.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseListener";
+ }
+ }
+ );
+
+ // get all registered mouse listeners
+ mouseListeners = canvas.getMouseListeners();
+ harness.check(mouseListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseListeners[0].toString(), "myMouseListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addMouseMotionListener.java b/gnu/testlet/java/awt/Canvas/addMouseMotionListener.java
new file mode 100644
index 00000000..cb745bc8
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addMouseMotionListener.java
@@ -0,0 +1,88 @@
+// addMouseMotionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Canvas.
+ */
+public class addMouseMotionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseMotionListener[] mouseMotionListeners;
+
+ // get all registered listeners
+ mouseMotionListeners = canvas.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 0);
+
+ // register new listener
+ canvas.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseMotionListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseMotionListeners = canvas.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseMotionListeners[0].toString(), "myMouseMotionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addMouseWheelListener.java b/gnu/testlet/java/awt/Canvas/addMouseWheelListener.java
new file mode 100644
index 00000000..ef0b3bfb
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addMouseWheelListener.java
@@ -0,0 +1,83 @@
+// addMouseWheelListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Canvas.
+ */
+public class addMouseWheelListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseWheelListener[] mouseWheelListeners;
+
+ // get all registered listeners
+ mouseWheelListeners = canvas.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 0);
+
+ // register new listener
+ canvas.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseWheelListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseWheelListeners = canvas.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseWheelListeners[0].toString(), "myMouseWheelListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/addPropertyChangeListener.java b/gnu/testlet/java/awt/Canvas/addPropertyChangeListener.java
new file mode 100644
index 00000000..16868901
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addPropertyChangeListener.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import java.awt.Color;
+import java.awt.Canvas;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Canvas}.
+ */
+public class addPropertyChangeListener
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = canvas.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ canvas.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = canvas.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Canvas/addPropertyChangeListenerString.java b/gnu/testlet/java/awt/Canvas/addPropertyChangeListenerString.java
new file mode 100644
index 00000000..0530708d
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/addPropertyChangeListenerString.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Canvas;
+
+import java.awt.Color;
+import java.awt.Canvas;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Canvas}.
+ */
+public class addPropertyChangeListenerString
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Canvas canvas = new Canvas();
+ canvas.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = canvas.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ canvas.addPropertyChangeListener("font", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = canvas.getPropertyChangeListeners("font");
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Canvas/constructors.java b/gnu/testlet/java/awt/Canvas/constructors.java
new file mode 100644
index 00000000..33f82e88
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/constructors.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+
+// Canvas constructor test
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Canvas canvas1 = new Canvas();
+ harness.check(canvas1 != null);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Canvas/list.java b/gnu/testlet/java/awt/Canvas/list.java
new file mode 100644
index 00000000..6cc06eb0
--- /dev/null
+++ b/gnu/testlet/java/awt/Canvas/list.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Canvas;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+
+// test of method list()
+public class list
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Canvas canvas = new Canvas();
+ canvas.list();
+ canvas.list(System.out);
+ canvas.list(System.out, 0);
+ canvas.list(System.out, 10);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/CVS/Entries b/gnu/testlet/java/awt/CardLayout/CVS/Entries
new file mode 100644
index 00000000..91acc3c7
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/CVS/Entries
@@ -0,0 +1,20 @@
+/PaintTest.java/1.1/Tue Dec 6 14:43:43 2011//
+/PaintTestBiggerGaps.java/1.1/Mon Dec 5 14:15:15 2011//
+/PaintTestBiggerHGap.java/1.1/Wed Dec 7 14:12:37 2011//
+/PaintTestBiggerVGap.java/1.1/Wed Dec 7 14:12:37 2011//
+/PaintTestFirstNextComb.java/1.1/Wed Dec 7 14:12:37 2011//
+/PaintTestZeroGaps.java/1.1/Mon Dec 5 14:15:15 2011//
+/addLayoutComponent.java/1.1/Fri Nov 25 14:43:18 2011//
+/first.java/1.1/Sat Feb 11 12:39:15 2006//
+/getHgap.java/1.1/Mon Nov 28 09:56:33 2011//
+/getLayoutAlignmentX.java/1.1/Tue Dec 6 14:43:43 2011//
+/getLayoutAlignmentY.java/1.1/Tue Dec 6 14:43:43 2011//
+/getVgap.java/1.1/Mon Nov 28 09:56:33 2011//
+/removeLayoutComponent.java/1.1/Fri Nov 25 14:43:18 2011//
+/setHgap.java/1.1/Mon Nov 28 09:56:33 2011//
+/setVgap.java/1.1/Mon Nov 28 09:56:33 2011//
+/show.java/1.1/Sat Feb 11 12:39:15 2006//
+/testMaximumLayoutSize.java/1.2/Wed Jan 3 19:03:40 2007//
+/testMinimumLayoutSize.java/1.1/Wed Oct 18 21:41:06 2006//
+/toString.java/1.1/Tue Dec 6 14:43:43 2011//
+D
diff --git a/gnu/testlet/java/awt/CardLayout/CVS/Repository b/gnu/testlet/java/awt/CardLayout/CVS/Repository
new file mode 100644
index 00000000..89d21bbd
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/CardLayout
diff --git a/gnu/testlet/java/awt/CardLayout/CVS/Root b/gnu/testlet/java/awt/CardLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTest.java b/gnu/testlet/java/awt/CardLayout/PaintTest.java
new file mode 100644
index 00000000..c357c365
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTest.java
@@ -0,0 +1,379 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * Zero-width gaps are used during positioning canvases on a frame, so we also have to
+ * test if the gaps are not visible at all.
+ */
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = 10;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on the borders - there should not be any borders visible
+ harness.check(getColorForLeftBorder(robot, frame, component), componentColor);
+ harness.check(getColorForRightBorder(robot, frame, component), componentColor);
+ harness.check(getColorForTopBorder(robot, frame, component), componentColor);
+ harness.check(getColorForBottomBorder(robot, frame, component), componentColor);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTestBiggerGaps.java b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerGaps.java
new file mode 100644
index 00000000..f39124af
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerGaps.java
@@ -0,0 +1,389 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * (only one canvas is visible at given moment)
+ * Horizontal and vertical gaps are wider than 0 pixels.
+ */
+public class PaintTestBiggerGaps
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 50;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = HGAP_SIZE;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = VGAP_SIZE / 2;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout(HGAP_SIZE, VGAP_SIZE);
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on the borders (if there are any)
+ harness.check(getColorForLeftBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForRightBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForTopBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForBottomBorder(robot, frame, component), BACKGROUND_COLOR);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTestBiggerHGap.java b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerHGap.java
new file mode 100644
index 00000000..080dad31
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerHGap.java
@@ -0,0 +1,389 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * (only one canvas is visible at given moment)
+ * Horizontal gap is wider than 0 pixels.
+ */
+public class PaintTestBiggerHGap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 50;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 0;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = HGAP_SIZE / 2;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout(HGAP_SIZE, VGAP_SIZE);
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on all the borders
+ harness.check(getColorForLeftBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForRightBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForTopBorder(robot, frame, component), componentColor);
+ harness.check(getColorForBottomBorder(robot, frame, component), componentColor);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTestBiggerVGap.java b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerVGap.java
new file mode 100644
index 00000000..7fc83bee
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTestBiggerVGap.java
@@ -0,0 +1,389 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * (only one canvas is visible at given moment)
+ * Vertical gap is wider than 0 pixels.
+ */
+public class PaintTestBiggerVGap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 0;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 50;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = VGAP_SIZE / 2;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout(HGAP_SIZE, VGAP_SIZE);
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on the borders (if there are any)
+ harness.check(getColorForLeftBorder(robot, frame, component), componentColor);
+ harness.check(getColorForRightBorder(robot, frame, component), componentColor);
+ harness.check(getColorForTopBorder(robot, frame, component), BACKGROUND_COLOR);
+ harness.check(getColorForBottomBorder(robot, frame, component), BACKGROUND_COLOR);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTestFirstNextComb.java b/gnu/testlet/java/awt/CardLayout/PaintTestFirstNextComb.java
new file mode 100644
index 00000000..1ffda1a5
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTestFirstNextComb.java
@@ -0,0 +1,411 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * Zero-width gaps are used during positioning canvases on a frame, so we also have to
+ * test if the gaps are not visible at all.
+ */
+public class PaintTestFirstNextComb
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Small delay (pause times) for an AWT robot
+ * used for card switching.
+ */
+ public static int SMALL_DELAY_AMOUNT = 1000;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = 10;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.first(this);
+ nextCard(robot, layout, 1);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.first(this);
+ nextCard(robot, layout, 2);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.first(this);
+ nextCard(robot, layout, 3);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.first(this);
+ nextCard(robot, layout, 4);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // check the first card again
+ harness.checkPoint("first component againt");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Slowly changes to the selected card.
+ *
+ * @param robot instance of AWT robot
+ * @param card card number
+ */
+ private void nextCard(Robot robot, CardLayout layout, int card)
+ {
+ for (int i = 0; i < card; i++) {
+ robot.waitForIdle();
+ robot.delay(SMALL_DELAY_AMOUNT);
+ layout.next(this);
+ }
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on the borders - there should not be any borders visible
+ harness.check(getColorForLeftBorder(robot, frame, component), componentColor);
+ harness.check(getColorForRightBorder(robot, frame, component), componentColor);
+ harness.check(getColorForTopBorder(robot, frame, component), componentColor);
+ harness.check(getColorForBottomBorder(robot, frame, component), componentColor);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/PaintTestZeroGaps.java b/gnu/testlet/java/awt/CardLayout/PaintTestZeroGaps.java
new file mode 100644
index 00000000..8c16b6a6
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/PaintTestZeroGaps.java
@@ -0,0 +1,389 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.CardLayout;
+
+
+
+/**
+ * Test if five canvases are positioned correctly to a frame using CardLayout.
+ * Zero-width gaps are used during positioning canvases on a frame, so we also have to
+ * test if the gaps are not visible at all.
+ */
+public class PaintTestZeroGaps
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT = 250;
+
+ /**
+ * Horizontal gap size.
+ */
+ public static int HGAP_SIZE = 0;
+
+ /**
+ * Vertical gap size.
+ */
+ public static int VGAP_SIZE = 0;
+
+ /**
+ * Offset (in pixels) from the "true" border
+ * to check hgaps and vgaps visibility
+ * This value should be greater than zero and less than *GAP_SIZE.
+ */
+ public static int OFFSET_FROM_BORDER = 10;
+
+ /**
+ * Default background color for a panel.
+ */
+ public static Color BACKGROUND_COLOR = Color.red;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout(HGAP_SIZE, VGAP_SIZE);
+ this.setLayout(layout);
+ setBackground(BACKGROUND_COLOR);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // set size of all canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // set background of all canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.cyan);
+
+ // position all five canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ // setup for a frame
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ layout.first(this);
+ doTest(harness, robot, frame, canvas1, Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas2, Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas3, Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas4, Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ layout.next(this);
+ doTest(harness, robot, frame, canvas5, Color.cyan);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Runs the test for one component using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ * @param componentColor background color of tested component
+ */
+ private void doTest(TestHarness harness, Robot robot, Frame frame, Component component, Color componentColor)
+ {
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check color inside the component
+ harness.check(getColorForComponent(robot, frame, component), componentColor);
+ // check color on the borders - there should not be any borders visible
+ harness.check(getColorForLeftBorder(robot, frame, component), componentColor);
+ harness.check(getColorForRightBorder(robot, frame, component), componentColor);
+ harness.check(getColorForTopBorder(robot, frame, component), componentColor);
+ harness.check(getColorForBottomBorder(robot, frame, component), componentColor);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the left border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForLeftBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the right border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForRightBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.x = frame.getWidth() - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the top border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForTopBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y - component.getHeight()/2 + OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the bottom border.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForBottomBorder(Robot robot, Frame frame, Component component)
+ {
+
+ // compute the position of a center of a component
+ Point p = computeCenterOfComponent(frame, component);
+ p.y = p.y + component.getHeight()/2 - OFFSET_FROM_BORDER;
+
+ moveCursorToGivenPosition(robot, p.x, p.y);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(p.x, p.y);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to visually show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/addLayoutComponent.java b/gnu/testlet/java/awt/CardLayout/addLayoutComponent.java
new file mode 100644
index 00000000..42e18ca8
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/addLayoutComponent.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+import java.awt.Component;
+import java.awt.Canvas;
+import java.awt.Button;
+import java.awt.Panel;
+
+/**
+ * Check for the functionality of method CardLayout.addLayoutComponent
+ */
+public class addLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testButton(harness);
+ testCanvas(harness);
+ }
+
+ /**
+ * Test the method CardLayout.addLayoutComponent for a Button widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testButton(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Button)");
+ CardLayout layout = new CardLayout();
+ Button component = new Button();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Test the method CardLayout.addLayoutComponent for a Canvas widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testCanvas(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Canvas)");
+ CardLayout layout = new CardLayout();
+ Canvas component = new Canvas();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Check the add/remove component method using all possible constraints.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of CardLayout manager
+ * @param component selected component
+ */
+ private void checkAllPossibleConstraints(TestHarness harness, CardLayout layout, Component component)
+ {
+ checkAddRemove(harness, layout, component, "");
+ checkAddRemove(harness, layout, component, " ");
+ checkAddRemove(harness, layout, component, "xyzzy");
+ checkAddRemove(harness, layout, component, null);
+ }
+
+ /**
+ * Add specified component to the layout manager and then remove this component.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of CardLayout manager
+ * @param component selected component
+ * @param name component name
+ */
+ private void checkAddRemove(TestHarness harness, CardLayout layout, Component component, String name)
+ {
+ try {
+ layout.addLayoutComponent(component, name);
+ }
+ catch (IllegalArgumentException e) {
+ harness.fail(e.getMessage());
+ }
+ layout.removeLayoutComponent(component);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/first.java b/gnu/testlet/java/awt/CardLayout/first.java
new file mode 100644
index 00000000..b497b11f
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/first.java
@@ -0,0 +1,96 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import java.awt.CardLayout;
+import java.awt.Frame;
+import java.awt.Panel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the first method for various argument types.
+ * As first, next, previous, last are all implemented by
+ * the same internal method in GNU classpath this tests
+ * all these methods for the argument types.
+ */
+public class first implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ Frame containerWithLayout = new Frame();
+ Panel panel = new Panel();
+ containerWithLayout.setLayout(layout);
+
+ // test without a panel added - no exception should be thrown
+ try
+ {
+ layout.first(containerWithLayout);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // test correct usage - with an added panel
+ containerWithLayout.add(panel, "Panel");
+ try
+ {
+ layout.first(containerWithLayout);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // test null behaviour - triggers NPE
+ try
+ {
+ layout.first(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // test usage with container without setLayout called
+ Frame container = new Frame();
+ container.add(panel);
+ try
+ {
+ layout.first(container);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/getHgap.java b/gnu/testlet/java/awt/CardLayout/getHgap.java
new file mode 100644
index 00000000..8c09f411
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/getHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+
+/**
+ * Some checks for the getHgap() method in the {@link CardLayout} class.
+ */
+public class getHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout b = new CardLayout();
+ b.setHgap(0);
+ harness.check(b.getHgap(), 0);
+ b.setHgap(42);
+ harness.check(b.getHgap(), 42);
+ b.setHgap(-42);
+ harness.check(b.getHgap(), -42);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentX.java b/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentX.java
new file mode 100644
index 00000000..6869db40
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentX.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+import javax.swing.JComponent;
+
+/**
+ * Some checks for the getLayoutAlignmentX() method in the {@link CardLayout} class.
+ */
+public class getLayoutAlignmentX implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComponent component = new JComponent(){};
+ CardLayout cardLayout = new CardLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(cardLayout.getLayoutAlignmentX(component), 0.5f);
+
+ // Setting the containers alignmentX doesn't change anything.
+ // 0 == alignment along the origin
+ component.setAlignmentX(0.0f);
+ harness.check(cardLayout.getLayoutAlignmentX(component), 0.5f);
+
+ // Setting the containers alignmentX doesn't change anything.
+ // 1 == alignment furthest away from the origin
+ component.setAlignmentX(1.0f);
+ harness.check(cardLayout.getLayoutAlignmentX(component), 0.5f);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentY.java b/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentY.java
new file mode 100644
index 00000000..34af16f2
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/getLayoutAlignmentY.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+import javax.swing.JComponent;
+
+/**
+ * Some checks for the getLayoutAlignmentY() method in the {@link CardLayout} class.
+ */
+public class getLayoutAlignmentY implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComponent component = new JComponent(){};
+ CardLayout cardLayout = new CardLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(cardLayout.getLayoutAlignmentY(component), 0.5f);
+
+ // Setting the containers AlignmentY doesn't change anything.
+ // 0 == alignment along the origin
+ component.setAlignmentY(0.0f);
+ harness.check(cardLayout.getLayoutAlignmentY(component), 0.5f);
+
+ // Setting the containers AlignmentY doesn't change anything.
+ // 1 == alignment furthest away from the origin
+ component.setAlignmentY(1.0f);
+ harness.check(cardLayout.getLayoutAlignmentY(component), 0.5f);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/getVgap.java b/gnu/testlet/java/awt/CardLayout/getVgap.java
new file mode 100644
index 00000000..71444ca6
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/getVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+
+/**
+ * Some checks for the getVgap() method in the {@link CardLayout} class.
+ */
+public class getVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout b = new CardLayout();
+ b.setHgap(0);
+ harness.check(b.getHgap(), 0);
+ b.setHgap(42);
+ harness.check(b.getHgap(), 42);
+ b.setHgap(-42);
+ harness.check(b.getHgap(), -42);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/removeLayoutComponent.java b/gnu/testlet/java/awt/CardLayout/removeLayoutComponent.java
new file mode 100644
index 00000000..52302149
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/removeLayoutComponent.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+import java.awt.Component;
+import java.awt.Canvas;
+import java.awt.Button;
+import java.awt.Panel;
+
+/**
+ * Check for the functionality of method CardLayout.removeLayoutComponent
+ */
+public class removeLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testButton(harness);
+ testCanvas(harness);
+ }
+
+ /**
+ * Test the method CardLayout.removeLayoutComponent for a Button widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testButton(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Button)");
+ CardLayout layout = new CardLayout();
+ Button component = new Button();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Test the method CardLayout.removeLayoutComponent for a Canvas widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testCanvas(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Canvas)");
+ CardLayout layout = new CardLayout();
+ Canvas component = new Canvas();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Check the add/remove component method using all possible constraints.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of CardLayout manager
+ * @param component selected component
+ */
+ private void checkAllPossibleConstraints(TestHarness harness, CardLayout layout, Component component)
+ {
+ checkAddRemove(harness, layout, component, "");
+ checkAddRemove(harness, layout, component, " ");
+ checkAddRemove(harness, layout, component, "xyzzy");
+ checkAddRemove(harness, layout, component, null);
+ }
+
+ /**
+ * Add specified component to the layout manager and then remove this component.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of CardLayout manager
+ * @param component selected component
+ * @param name component name
+ */
+ private void checkAddRemove(TestHarness harness, CardLayout layout, Component component, String name)
+ {
+ try {
+ layout.addLayoutComponent(component, name);
+ }
+ catch (IllegalArgumentException e) {
+ harness.fail(e.getMessage());
+ }
+ layout.removeLayoutComponent(component);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/CardLayout/setHgap.java b/gnu/testlet/java/awt/CardLayout/setHgap.java
new file mode 100644
index 00000000..b647c686
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/setHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+
+/**
+ * Some checks for the setHgap() method in the {@link CardLayout} class.
+ */
+public class setHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout b = new CardLayout();
+ b.setHgap(0);
+ harness.check(b.getHgap(), 0);
+ b.setHgap(42);
+ harness.check(b.getHgap(), 42);
+ b.setHgap(-42);
+ harness.check(b.getHgap(), -42);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/setVgap.java b/gnu/testlet/java/awt/CardLayout/setVgap.java
new file mode 100644
index 00000000..1e8aada0
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/setVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+
+/**
+ * Some checks for the setVgap() method in the {@link CardLayout} class.
+ */
+public class setVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CardLayout b = new CardLayout();
+ b.setVgap(0);
+ harness.check(b.getVgap(), 0);
+ b.setVgap(42);
+ harness.check(b.getVgap(), 42);
+ b.setVgap(-42);
+ harness.check(b.getVgap(), -42);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/show.java b/gnu/testlet/java/awt/CardLayout/show.java
new file mode 100644
index 00000000..9731a9f6
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/show.java
@@ -0,0 +1,132 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import java.awt.CardLayout;
+import java.awt.Frame;
+import java.awt.Panel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the show method for various argument types.
+ */
+public class show implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ Frame containerWithLayout = new Frame();
+ Panel panel = new Panel();
+ containerWithLayout.setLayout(layout);
+ containerWithLayout.add(panel, "Panel");
+
+ // test correct usage
+ try
+ {
+ layout.show(containerWithLayout, "Panel");
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // test with string == null
+ // nothing should happen no exception
+ try
+ {
+ layout.show(containerWithLayout, null);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ harness.check(false);
+ }
+
+ // same with unknown names
+ try
+ {
+ layout.show(containerWithLayout, "XXXXX");
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // same with empty strings
+ try
+ {
+ layout.show(containerWithLayout, "");
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // test usage with container without setLayout called
+ Frame container = new Frame();
+ container.add(panel);
+ try
+ {
+ layout.show(container, "Panel");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // test usage with container with another CardLayout instance called
+ CardLayout layout2 = new CardLayout();
+ container.setLayout(layout2);
+ try
+ {
+ layout.show(container, "Panel");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // test usage with container == null
+ // NPE must be thrown
+ try
+ {
+ layout.show(null, "Panel");
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java b/gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java
new file mode 100644
index 00000000..80e19e52
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/testMaximumLayoutSize.java
@@ -0,0 +1,48 @@
+/* testMaximumLayout.java
+ Copyright (C) 2006 Red Hat, 2007 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.CardLayout;
+
+import java.awt.CardLayout;
+import java.awt.Dimension;
+import java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testMaximumLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ harness.check(layout.maximumLayoutSize(null),
+ new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+
+ Frame frame = new Frame();
+ harness.check(frame.getComponentCount(), 0);
+ harness.check(layout.maximumLayoutSize(frame),
+ new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/testMinimumLayoutSize.java b/gnu/testlet/java/awt/CardLayout/testMinimumLayoutSize.java
new file mode 100644
index 00000000..e132b018
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/testMinimumLayoutSize.java
@@ -0,0 +1,49 @@
+/* testMinimumLayoutSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.CardLayout;
+
+import java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testMinimumLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ CardLayout layout = new CardLayout();
+ boolean failed = false;
+ try
+ {
+ layout.minimumLayoutSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ failed = true;
+ }
+ harness.check(failed);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/CardLayout/toString.java b/gnu/testlet/java/awt/CardLayout/toString.java
new file mode 100644
index 00000000..194e5324
--- /dev/null
+++ b/gnu/testlet/java/awt/CardLayout/toString.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.CardLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.CardLayout;
+
+// test of method toString()
+public class toString
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ CardLayout cardLayout1 = new CardLayout();
+ cardLayout1.toString();
+ harness.check(cardLayout1.toString() != null);
+ harness.check(cardLayout1.toString(), "java.awt.CardLayout[hgap=0,vgap=0]");
+
+ // test constructor with two parameters
+ CardLayout cardLayout2 = new CardLayout(50, 50);
+ cardLayout2.toString();
+ harness.check(cardLayout1.toString() != null);
+ harness.check(cardLayout2.toString(), "java.awt.CardLayout[hgap=50,vgap=50]");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/CVS/Entries b/gnu/testlet/java/awt/Checkbox/CVS/Entries
new file mode 100644
index 00000000..de7bc13c
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/CVS/Entries
@@ -0,0 +1,26 @@
+/ItemListenerNegativeTest1.java/1.1/Fri Oct 14 09:56:01 2011//
+/ItemListenerNegativeTest2.java/1.1/Fri Oct 14 09:56:01 2011//
+/ItemListenerPositiveTest.java/1.1/Fri Oct 14 09:56:01 2011//
+/KeyboardListenerAsciiKeys.java/1.1/Fri Oct 14 09:56:01 2011//
+/KeyboardListenerCursorKeys.java/1.1/Fri Oct 14 09:56:01 2011//
+/KeyboardListenerFunctionKeys.java/1.1/Fri Oct 14 09:56:01 2011//
+/KeyboardListenerTest.java/1.1/Fri Oct 14 09:56:01 2011//
+/MouseListenerTest.java/1.1/Thu Oct 20 14:18:34 2011//
+/MouseMotionListenerTest.java/1.1/Thu Oct 20 14:18:34 2011//
+/MouseWheelListenerTest.java/1.1/Thu Oct 20 14:18:34 2011//
+/PaintTest.java/1.4/Fri Sep 30 12:27:49 2011//
+/addComponentListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addFocusListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addHierarchyBoundsListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addHierarchyListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addInputMethodListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addItemListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addKeyListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addMouseListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addMouseMotionListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addMouseWheelListener.java/1.1/Fri Oct 14 09:56:01 2011//
+/addPropertyChangeListener.java/1.1/Tue Dec 13 10:51:06 2011//
+/addPropertyChangeListenerString.java/1.1/Tue Dec 13 10:51:06 2011//
+/constructors.java/1.1/Tue Oct 4 15:19:51 2011//
+/list.java/1.1/Tue Oct 11 14:23:24 2011//
+D
diff --git a/gnu/testlet/java/awt/Checkbox/CVS/Repository b/gnu/testlet/java/awt/Checkbox/CVS/Repository
new file mode 100644
index 00000000..a89455a6
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Checkbox
diff --git a/gnu/testlet/java/awt/Checkbox/CVS/Root b/gnu/testlet/java/awt/Checkbox/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest1.java b/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest1.java
new file mode 100644
index 00000000..c5841adb
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest1.java
@@ -0,0 +1,121 @@
+// ItemListenerNegativeTest1.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Checkbox
+ * and if action is *not* performed when second mouse checkbox is pressed.
+ */
+public class ItemListenerNegativeTest1
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+ checkbox.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest2.java b/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest2.java
new file mode 100644
index 00000000..1cd7704e
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/ItemListenerNegativeTest2.java
@@ -0,0 +1,121 @@
+// ItemListenerNegativeTest2.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Checkbox
+ * and if action is *not* performed when third mouse checkbox is pressed.
+ */
+public class ItemListenerNegativeTest2
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+ checkbox.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/ItemListenerPositiveTest.java b/gnu/testlet/java/awt/Checkbox/ItemListenerPositiveTest.java
new file mode 100644
index 00000000..ea27c13c
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/ItemListenerPositiveTest.java
@@ -0,0 +1,121 @@
+// ItemListenerPositiveTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Checkbox
+ * and if action is performed when left mouse checkbox is pressed.
+ */
+public class ItemListenerPositiveTest
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+ checkbox.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/KeyboardListenerAsciiKeys.java b/gnu/testlet/java/awt/Checkbox/KeyboardListenerAsciiKeys.java
new file mode 100644
index 00000000..e3e96e36
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/KeyboardListenerAsciiKeys.java
@@ -0,0 +1,181 @@
+// KeyboardListenerAsciiKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Checkbox;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Checkbox
+ * and if action is really performed.
+ */
+public class KeyboardListenerAsciiKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_A,
+ KeyEvent.VK_Z,
+ KeyEvent.VK_0,
+ KeyEvent.VK_9,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+ List<Integer> keyTypedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new listener
+ checkbox.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ keyTypedFlag.add(0+e.getKeyChar());
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ // either 'A' or 'a' could be catched by keyTyped event
+ harness.check(keyTypedFlag.contains(key) || keyTypedFlag.contains(key - 'A' + 'a'));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/KeyboardListenerCursorKeys.java b/gnu/testlet/java/awt/Checkbox/KeyboardListenerCursorKeys.java
new file mode 100644
index 00000000..eca581c6
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/KeyboardListenerCursorKeys.java
@@ -0,0 +1,176 @@
+// KeyboardListenerCursorKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Checkbox;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Checkbox
+ * and if action is really performed.
+ */
+public class KeyboardListenerCursorKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_UP,
+ KeyEvent.VK_DOWN,
+ KeyEvent.VK_LEFT,
+ KeyEvent.VK_RIGHT,
+ KeyEvent.VK_HOME,
+ KeyEvent.VK_END,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new listener
+ checkbox.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty block
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/KeyboardListenerFunctionKeys.java b/gnu/testlet/java/awt/Checkbox/KeyboardListenerFunctionKeys.java
new file mode 100644
index 00000000..5805dee1
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/KeyboardListenerFunctionKeys.java
@@ -0,0 +1,180 @@
+// KeyboardListenerFunctionKeys.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Checkbox;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.Rectangle;
+import java.awt.event.*;
+import java.util.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Checkbox
+ * and if action is really performed.
+ */
+public class KeyboardListenerFunctionKeys
+ extends Panel
+ implements Testlet
+{
+
+ int[] keysToTest = {
+ KeyEvent.VK_F1,
+ KeyEvent.VK_F2,
+ KeyEvent.VK_F3,
+ KeyEvent.VK_F4,
+ KeyEvent.VK_F5,
+ KeyEvent.VK_F6,
+ KeyEvent.VK_F7,
+ KeyEvent.VK_F8,
+ KeyEvent.VK_F9,
+ KeyEvent.VK_F10,
+ };
+
+ // these flags are set by KeyListener
+ List<Integer> keyPressedFlag = new ArrayList<Integer>();
+ List<Integer> keyReleasedFlag = new ArrayList<Integer>();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new listener
+ checkbox.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag.add(e.getKeyCode());
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag.add(e.getKeyCode());
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty block
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + loc.x;
+ bounds.y += insets.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // have to use 1.4 syntax
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ robot.keyPress(key);
+ robot.delay(250);
+ robot.keyRelease(key);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyPressedFlag.contains(key));
+ }
+ for (int i = 0; i < keysToTest.length; i++)
+ {
+ int key = keysToTest[i];
+ harness.check(keyReleasedFlag.contains(key));
+ }
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/KeyboardListenerTest.java b/gnu/testlet/java/awt/Checkbox/KeyboardListenerTest.java
new file mode 100644
index 00000000..4f9ea13a
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/KeyboardListenerTest.java
@@ -0,0 +1,145 @@
+// KeyboardListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Checkbox
+ * and if action is really performed.
+ */
+public class KeyboardListenerTest
+ extends Panel
+ implements Testlet
+{
+
+ // these flags are set by KeyListener
+ boolean keyPressedFlag = false;
+ boolean keyReleasedFlag = false;
+ boolean keyTypedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new listener
+ checkbox.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ keyPressedFlag = true;
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ keyReleasedFlag = true;
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ keyTypedFlag = true;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ robot.keyPress(KeyEvent.VK_A);
+ robot.delay(250);
+ robot.keyRelease(KeyEvent.VK_A);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(keyPressedFlag);
+ harness.check(keyReleasedFlag);
+ harness.check(keyTypedFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/MouseListenerTest.java b/gnu/testlet/java/awt/Checkbox/MouseListenerTest.java
new file mode 100644
index 00000000..4d80151f
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/MouseListenerTest.java
@@ -0,0 +1,206 @@
+// MouseListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Checkbox
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseListener
+ boolean mouseClickedButton1Flag = false;
+ boolean mouseClickedButton2Flag = false;
+ boolean mouseClickedButton3Flag = false;
+ boolean mousePressedButton1Flag = false;
+ boolean mousePressedButton2Flag = false;
+ boolean mousePressedButton3Flag = false;
+ boolean mouseReleasedButton1Flag = false;
+ boolean mouseReleasedButton2Flag = false;
+ boolean mouseReleasedButton3Flag = false;
+ boolean mouseEnteredFlag = false;
+ boolean mouseExitedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new mouse listener
+ checkbox.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseClickedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseClickedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseClickedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ mouseEnteredFlag = true;
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ mouseExitedFlag = true;
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mousePressedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mousePressedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mousePressedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // figure out which button was pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: mouseReleasedButton1Flag = true; break;
+ case MouseEvent.BUTTON2: mouseReleasedButton2Flag = true; break;
+ case MouseEvent.BUTTON3: mouseReleasedButton3Flag = true; break;
+ default: break;
+ }
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & button behaviour using ALL mouse buttons
+ for (int mouseButton : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // click = press + release
+ robot.mousePress(mouseButton);
+ robot.delay(250);
+ robot.mouseRelease(mouseButton);
+ robot.delay(250);
+
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(mouseClickedButton1Flag);
+ harness.check(mouseClickedButton2Flag);
+ harness.check(mouseClickedButton3Flag);
+ harness.check(mousePressedButton1Flag);
+ harness.check(mousePressedButton2Flag);
+ harness.check(mousePressedButton3Flag);
+ harness.check(mouseReleasedButton1Flag);
+ harness.check(mouseReleasedButton2Flag);
+ harness.check(mouseReleasedButton3Flag);
+ harness.check(mouseEnteredFlag);
+ harness.check(mouseExitedFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/MouseMotionListenerTest.java b/gnu/testlet/java/awt/Checkbox/MouseMotionListenerTest.java
new file mode 100644
index 00000000..04459d54
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/MouseMotionListenerTest.java
@@ -0,0 +1,175 @@
+// MouseMotionListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Checkbox
+ * and if action is performed when some of mouse buttons is pressed.
+ */
+public class MouseMotionListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseMotionListener
+ boolean mouseDraggedButton1Flag = false;
+ boolean mouseDraggedButton2Flag = false;
+ boolean mouseDraggedButton3Flag = false;
+ boolean mouseMovedButton1Flag = false;
+ boolean mouseMovedButton2Flag = false;
+ boolean mouseMovedButton3Flag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new mouse motion listener
+ checkbox.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ mouseDraggedButton1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseDraggedButton2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseDraggedButton3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // figure out which button is pressed
+ int modifiers = e.getModifiersEx();
+ // none of the modifiers should be set
+ mouseMovedButton1Flag |= (modifiers & MouseEvent.BUTTON1_DOWN_MASK) != 0;
+ mouseMovedButton2Flag |= (modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0;
+ mouseMovedButton3Flag |= (modifiers & MouseEvent.BUTTON3_DOWN_MASK) != 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & button behaviour using ALL mouse buttons
+ for (int mouseButton : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mousePress(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseRelease(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+
+ // move the mouse cursor outside the button
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseDraggedButton1Flag);
+ harness.check(mouseDraggedButton2Flag);
+ harness.check(mouseDraggedButton3Flag);
+
+ // negative tests
+ harness.check(!mouseMovedButton1Flag);
+ harness.check(!mouseMovedButton2Flag);
+ harness.check(!mouseMovedButton3Flag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/MouseWheelListenerTest.java b/gnu/testlet/java/awt/Checkbox/MouseWheelListenerTest.java
new file mode 100644
index 00000000..cb5f50c2
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/MouseWheelListenerTest.java
@@ -0,0 +1,135 @@
+// MouseWheelListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Checkbox
+ * and if action is performed when mouse wheel is rotated up and down.
+ */
+public class MouseWheelListenerTest
+ extends Panel
+ implements Testlet
+{
+ // these flags are set by MouseWheelListener
+ boolean mouseWheelScrollUpFlag = false;
+ boolean mouseWheelScrollDownFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+ add(checkbox);
+
+ // register new mouse wheel listener
+ checkbox.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // figure out if mouse wheel is scrolled up or down
+ mouseWheelScrollUpFlag |= e.getWheelRotation() < 0;
+ mouseWheelScrollDownFlag |= e.getWheelRotation() > 0;
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of checkbox on a screen
+ Rectangle bounds = checkbox.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mouseWheel(+1);
+ robot.delay(250);
+ robot.mouseWheel(-1);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(mouseWheelScrollUpFlag);
+ harness.check(mouseWheelScrollDownFlag);
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/PaintTest.java b/gnu/testlet/java/awt/Checkbox/PaintTest.java
new file mode 100644
index 00000000..db482f37
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/PaintTest.java
@@ -0,0 +1,115 @@
+/* PaintTest.java --
+ Copyright (C) 2006, 2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Checkbox;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ // we can't use any text as a checkbox label to proper
+ // test pixel colors.
+ Checkbox c = new Checkbox(" ");
+ c.setBackground(Color.blue);
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Point loc = f.getLocationOnScreen();
+ Rectangle bounds = c.getBounds();
+ Insets i = f.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ r.mouseMove(checkedPixelX, checkedPixelY);
+ r.waitForIdle();
+
+ // check the color of a pixel located in the checkbox center
+ Color check = r.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(check.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
+
diff --git a/gnu/testlet/java/awt/Checkbox/addComponentListener.java b/gnu/testlet/java/awt/Checkbox/addComponentListener.java
new file mode 100644
index 00000000..8b667324
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addComponentListener.java
@@ -0,0 +1,97 @@
+// addComponentListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ComponentListener could be registered for an AWT Checkbox.
+ */
+public class addComponentListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ ComponentListener[] componentListeners;
+
+ // get all registered listeners
+ componentListeners = checkbox.getComponentListeners();
+ harness.check(componentListeners.length, 0);
+
+ // register new listener
+ checkbox.addComponentListener(
+ new ComponentListener() {
+ public void componentHidden(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myComponentListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ componentListeners = checkbox.getComponentListeners();
+ harness.check(componentListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(componentListeners[0].toString(), "myComponentListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addFocusListener.java b/gnu/testlet/java/awt/Checkbox/addFocusListener.java
new file mode 100644
index 00000000..b797504e
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addFocusListener.java
@@ -0,0 +1,88 @@
+// addFocusListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if FocusListener could be registered for an AWT Checkbox.
+ */
+public class addFocusListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ FocusListener[] focusListeners;
+
+ // get all registered listeners
+ focusListeners = checkbox.getFocusListeners();
+ harness.check(focusListeners.length, 0);
+
+ // register new listener
+ checkbox.addFocusListener(
+ new FocusListener() {
+
+ public void focusGained(FocusEvent e)
+ {
+ // empty
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myFocusListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ focusListeners = checkbox.getFocusListeners();
+ harness.check(focusListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(focusListeners[0].toString(), "myFocusListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addHierarchyBoundsListener.java b/gnu/testlet/java/awt/Checkbox/addHierarchyBoundsListener.java
new file mode 100644
index 00000000..8b8545ee
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addHierarchyBoundsListener.java
@@ -0,0 +1,88 @@
+// addHierarchyBoundsListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyBoundsListener could be registered for an AWT Checkbox.
+ */
+public class addHierarchyBoundsListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyBoundsListener[] hierarchyBoundsListeners;
+
+ // get all registered listeners
+ hierarchyBoundsListeners = checkbox.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 0);
+
+ // register new listener
+ checkbox.addHierarchyBoundsListener(
+ new HierarchyBoundsListener() {
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyBoundsListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyBoundsListeners = checkbox.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyBoundsListeners[0].toString(), "myHierarchyBoundsListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addHierarchyListener.java b/gnu/testlet/java/awt/Checkbox/addHierarchyListener.java
new file mode 100644
index 00000000..e14d0f13
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addHierarchyListener.java
@@ -0,0 +1,83 @@
+// addHierarchyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyListener could be registered for an AWT Checkbox.
+ */
+public class addHierarchyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyListener[] hierarchyListeners;
+
+ // get all registered listeners
+ hierarchyListeners = checkbox.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 0);
+
+ // register new listener
+ checkbox.addHierarchyListener(
+ new HierarchyListener() {
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyListeners = checkbox.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyListeners[0].toString(), "myHierarchyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addInputMethodListener.java b/gnu/testlet/java/awt/Checkbox/addInputMethodListener.java
new file mode 100644
index 00000000..7e1fa43c
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addInputMethodListener.java
@@ -0,0 +1,88 @@
+// addInputMethodListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if InputMethodListener could be registered for an AWT Checkbox.
+ */
+public class addInputMethodListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ InputMethodListener[] inputMethodListeners;
+
+ // get all registered listeners
+ inputMethodListeners = checkbox.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 0);
+
+ // register new listener
+ checkbox.addInputMethodListener(
+ new InputMethodListener() {
+
+ public void caretPositionChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myInputMethodListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ inputMethodListeners = checkbox.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(inputMethodListeners[0].toString(), "myInputMethodListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addItemListener.java b/gnu/testlet/java/awt/Checkbox/addItemListener.java
new file mode 100644
index 00000000..3135ec2a
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addItemListener.java
@@ -0,0 +1,82 @@
+// addItemListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Checkbox.
+ */
+public class addItemListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered action listeners
+ ItemListener[] itemListeners;
+
+ // get all registered action listeners
+ itemListeners = checkbox.getItemListeners();
+ harness.check(itemListeners.length, 0);
+
+ // register new action listener
+ checkbox.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myItemListener";
+ }
+ }
+ );
+
+ // get all registered action listeners
+ itemListeners = checkbox.getItemListeners();
+ harness.check(itemListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(itemListeners[0].toString(), "myItemListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addKeyListener.java b/gnu/testlet/java/awt/Checkbox/addKeyListener.java
new file mode 100644
index 00000000..58cbcaa2
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addKeyListener.java
@@ -0,0 +1,93 @@
+// addKeyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Checkbox.
+ */
+public class addKeyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ KeyListener[] keyListeners;
+
+ // get all registered listeners
+ keyListeners = checkbox.getKeyListeners();
+ harness.check(keyListeners.length, 0);
+
+ // register new listener
+ checkbox.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myKeyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ keyListeners = checkbox.getKeyListeners();
+ harness.check(keyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(keyListeners[0].toString(), "myKeyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addMouseListener.java b/gnu/testlet/java/awt/Checkbox/addMouseListener.java
new file mode 100644
index 00000000..67bc1f8e
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addMouseListener.java
@@ -0,0 +1,103 @@
+// addMouseListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Checkbox.
+ */
+public class addMouseListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered mouse listeners
+ MouseListener[] mouseListeners;
+
+ // get all registered mouse listeners
+ mouseListeners = checkbox.getMouseListeners();
+ harness.check(mouseListeners.length, 0);
+
+ // register new mouse listener
+ checkbox.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseListener";
+ }
+ }
+ );
+
+ // get all registered mouse listeners
+ mouseListeners = checkbox.getMouseListeners();
+ harness.check(mouseListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseListeners[0].toString(), "myMouseListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addMouseMotionListener.java b/gnu/testlet/java/awt/Checkbox/addMouseMotionListener.java
new file mode 100644
index 00000000..17a13ae1
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addMouseMotionListener.java
@@ -0,0 +1,88 @@
+// addMouseMotionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Checkbox.
+ */
+public class addMouseMotionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseMotionListener[] mouseMotionListeners;
+
+ // get all registered listeners
+ mouseMotionListeners = checkbox.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 0);
+
+ // register new listener
+ checkbox.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseMotionListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseMotionListeners = checkbox.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseMotionListeners[0].toString(), "myMouseMotionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addMouseWheelListener.java b/gnu/testlet/java/awt/Checkbox/addMouseWheelListener.java
new file mode 100644
index 00000000..fe6ed30d
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addMouseWheelListener.java
@@ -0,0 +1,83 @@
+// addMouseWheelListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Checkbox.
+ */
+public class addMouseWheelListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox("xyzzy");
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseWheelListener[] mouseWheelListeners;
+
+ // get all registered listeners
+ mouseWheelListeners = checkbox.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 0);
+
+ // register new listener
+ checkbox.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseWheelListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseWheelListeners = checkbox.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseWheelListeners[0].toString(), "myMouseWheelListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/addPropertyChangeListener.java b/gnu/testlet/java/awt/Checkbox/addPropertyChangeListener.java
new file mode 100644
index 00000000..b0076dd3
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addPropertyChangeListener.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import java.awt.Color;
+import java.awt.Checkbox;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Checkbox}.
+ */
+public class addPropertyChangeListener
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox();
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = checkbox.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ checkbox.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = checkbox.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Checkbox/addPropertyChangeListenerString.java b/gnu/testlet/java/awt/Checkbox/addPropertyChangeListenerString.java
new file mode 100644
index 00000000..93a61afc
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/addPropertyChangeListenerString.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Checkbox;
+
+import java.awt.Color;
+import java.awt.Checkbox;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Checkbox}.
+ */
+public class addPropertyChangeListenerString
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Checkbox checkbox = new Checkbox();
+ checkbox.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = checkbox.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ checkbox.addPropertyChangeListener("font", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = checkbox.getPropertyChangeListeners("font");
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Checkbox/constructors.java b/gnu/testlet/java/awt/Checkbox/constructors.java
new file mode 100644
index 00000000..da1e39d6
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/constructors.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Checkbox;
+
+// Checkbox constructors test
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Checkbox checkbox1 = new Checkbox();
+ harness.check(checkbox1 != null);
+ harness.check(!checkbox1.getState());
+ doCommonTests(harness, checkbox1);
+
+ // test one parameter constructor
+ Checkbox checkbox2 = new Checkbox("xyzzy");
+ harness.check(checkbox2 != null);
+ harness.check(checkbox2.getLabel(), "xyzzy");
+ harness.check(!checkbox2.getState());
+ doCommonTests(harness, checkbox2);
+
+ // test two parameters constructor
+ Checkbox checkbox3 = new Checkbox("xyzzy", false);
+ harness.check(checkbox3 != null);
+ harness.check(checkbox3.getLabel(), "xyzzy");
+ harness.check(!checkbox3.getState());
+ doCommonTests(harness, checkbox3);
+
+ // test two parameters constructor
+ Checkbox checkbox4 = new Checkbox("xyzzy", true);
+ harness.check(checkbox4 != null);
+ harness.check(checkbox4.getLabel(), "xyzzy");
+ harness.check(checkbox4.getState());
+ doCommonTests(harness, checkbox4);
+ }
+
+ public void doCommonTests(TestHarness harness, Checkbox checkbox)
+ {
+ // label checks
+ checkbox.setLabel("42");
+ harness.check(checkbox.getLabel(), "42");
+ checkbox.setLabel("");
+ harness.check(checkbox.getLabel(), "");
+ checkbox.setLabel(" ");
+ harness.check(checkbox.getLabel(), " ");
+ checkbox.setLabel(null);
+ harness.check(checkbox.getLabel() == null);
+
+ // state checks
+ checkbox.setState(true);
+ harness.check(checkbox.getState());
+ checkbox.setState(false);
+ harness.check(!checkbox.getState());
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Checkbox/list.java b/gnu/testlet/java/awt/Checkbox/list.java
new file mode 100644
index 00000000..9e97d235
--- /dev/null
+++ b/gnu/testlet/java/awt/Checkbox/list.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Checkbox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Checkbox;
+
+// test of method list()
+public class list
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Checkbox checkbox1 = new Checkbox();
+ checkbox1.list();
+ checkbox1.list(System.out);
+ checkbox1.list(System.out, 0);
+ checkbox1.list(System.out, 10);
+
+ // test constructor with one parameter
+ Checkbox checkbox2 = new Checkbox("xyzzy");
+ checkbox2.list();
+ checkbox2.list(System.out);
+ checkbox2.list(System.out, 0);
+ checkbox2.list(System.out, 10);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/CheckboxGroup/CVS/Entries b/gnu/testlet/java/awt/CheckboxGroup/CVS/Entries
new file mode 100644
index 00000000..cecefbef
--- /dev/null
+++ b/gnu/testlet/java/awt/CheckboxGroup/CVS/Entries
@@ -0,0 +1,2 @@
+/testGroup.java/1.2/Thu Jun 22 14:44:28 2006//
+D
diff --git a/gnu/testlet/java/awt/CheckboxGroup/CVS/Repository b/gnu/testlet/java/awt/CheckboxGroup/CVS/Repository
new file mode 100644
index 00000000..1b9074fd
--- /dev/null
+++ b/gnu/testlet/java/awt/CheckboxGroup/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/CheckboxGroup
diff --git a/gnu/testlet/java/awt/CheckboxGroup/CVS/Root b/gnu/testlet/java/awt/CheckboxGroup/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/CheckboxGroup/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/CheckboxGroup/testGroup.java b/gnu/testlet/java/awt/CheckboxGroup/testGroup.java
new file mode 100644
index 00000000..72860b9e
--- /dev/null
+++ b/gnu/testlet/java/awt/CheckboxGroup/testGroup.java
@@ -0,0 +1,69 @@
+/* testGroup.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.CheckboxGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Frame;
+import java.awt.Robot;
+
+public class testGroup
+implements Testlet
+{
+
+ /**
+ * This tests a checkbox in a group.
+ * The checkbox turns to a radio button when it is
+ * put into a group. If the group is set to null, then
+ * the checkbox turns into a regular checkbox.
+ *
+ * This tests a dynamically changing group.
+ */
+ public void test(TestHarness harness)
+ {
+ Robot r = harness.createRobot ();
+ Frame frame = new Frame();
+ Checkbox checkbox = new Checkbox("Checkbox");
+ frame.add(checkbox);
+ frame.setBounds(0, 0, 100, 100);
+
+ harness.check(checkbox.getCheckboxGroup(), null);
+ CheckboxGroup group = new CheckboxGroup();
+ checkbox.setCheckboxGroup(group);
+ harness.check(group, checkbox.getCheckboxGroup());
+ frame.setVisible(true);
+
+ r.waitForIdle ();
+ r.delay(1000);
+
+ checkbox.setCheckboxGroup(null);
+
+ r.delay(1000);
+
+ harness.check(checkbox.getCheckboxGroup(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Choice/CVS/Entries b/gnu/testlet/java/awt/Choice/CVS/Entries
new file mode 100644
index 00000000..06f31ddb
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/CVS/Entries
@@ -0,0 +1,21 @@
+/ItemListenerNegativeTest1.java/1.1/Thu Oct 20 14:18:34 2011//
+/ItemListenerNegativeTest2.java/1.1/Thu Oct 20 14:18:34 2011//
+/ItemListenerPositiveTest.java/1.1/Thu Oct 20 14:18:34 2011//
+/PaintTest.java/1.4/Fri Sep 30 12:27:49 2011//
+/addComponentListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addFocusListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addHierarchyBoundsListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addHierarchyListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addInputMethodListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addItemListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addKeyListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addMouseListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addMouseMotionListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addMouseWheelListener.java/1.1/Mon Oct 31 11:29:16 2011//
+/addPropertyChangeListener.java/1.1/Wed Dec 14 15:41:39 2011//
+/addPropertyChangeListenerString.java/1.1/Wed Dec 14 15:41:39 2011//
+/constructors.java/1.1/Wed Oct 5 13:51:56 2011//
+/getSelected.java/1.2/Sat Jul 17 17:01:02 2004//
+/list.java/1.1/Mon Oct 31 11:29:16 2011//
+/remove.java/1.1/Tue Aug 1 16:55:14 2006//
+D
diff --git a/gnu/testlet/java/awt/Choice/CVS/Repository b/gnu/testlet/java/awt/Choice/CVS/Repository
new file mode 100644
index 00000000..37ca26d3
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Choice
diff --git a/gnu/testlet/java/awt/Choice/CVS/Root b/gnu/testlet/java/awt/Choice/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest1.java b/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest1.java
new file mode 100644
index 00000000..4256afc2
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest1.java
@@ -0,0 +1,126 @@
+// ItemListenerNegativeTest1.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Choice
+ * and if action is *not* performed when second mouse choice is pressed.
+ */
+public class ItemListenerNegativeTest1
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Choice choice = new Choice();
+
+ choice.add("first");
+ choice.add("second");
+ choice.add("third");
+
+ choice.setBackground(Color.blue);
+ add(choice);
+ choice.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = choice.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON2_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest2.java b/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest2.java
new file mode 100644
index 00000000..b72435bc
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/ItemListenerNegativeTest2.java
@@ -0,0 +1,126 @@
+// ItemListenerNegativeTest2.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Choice
+ * and if action is *not* performed when third mouse choice is pressed.
+ */
+public class ItemListenerNegativeTest2
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Choice choice = new Choice();
+
+ choice.add("first");
+ choice.add("second");
+ choice.add("third");
+
+ choice.setBackground(Color.blue);
+ add(choice);
+ choice.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = choice.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON3_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(!itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/ItemListenerPositiveTest.java b/gnu/testlet/java/awt/Choice/ItemListenerPositiveTest.java
new file mode 100644
index 00000000..0d39fb17
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/ItemListenerPositiveTest.java
@@ -0,0 +1,133 @@
+// ItemListenerPositiveTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Choice
+ * and if action is performed when left mouse choice is pressed.
+ */
+public class ItemListenerPositiveTest
+ extends Panel
+ implements Testlet
+{
+ boolean itemStateChangedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Choice choice = new Choice();
+
+ choice.add("first");
+ choice.add("second");
+ choice.add("third");
+
+ choice.setBackground(Color.blue);
+ add(choice);
+ choice.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ itemStateChangedFlag = true;
+ }
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Rectangle bounds = choice.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+ // need to click on one choice item, *not* on the choice itself!
+ robot.mouseMove(checkedPixelX, checkedPixelY + 30);
+ robot.delay(250);
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+
+ // check if action was performed
+ harness.check(itemStateChangedFlag);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/PaintTest.java b/gnu/testlet/java/awt/Choice/PaintTest.java
new file mode 100644
index 00000000..fa76a864
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/PaintTest.java
@@ -0,0 +1,114 @@
+/* PaintTest.java --
+ Copyright (C) 2006,2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ Choice c = new Choice();
+ c.add(" ");
+ c.setBackground(Color.blue);
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Rectangle bounds = c.getBounds();
+ Insets i = f.getInsets();
+ Point loc = f.getLocationOnScreen();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ r.mouseMove(checkedPixelX, checkedPixelY);
+ r.waitForIdle();
+
+ // check the color of a pixel located in the choice center
+ Color choice = r.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(choice.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
+
diff --git a/gnu/testlet/java/awt/Choice/addComponentListener.java b/gnu/testlet/java/awt/Choice/addComponentListener.java
new file mode 100644
index 00000000..af6df68f
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addComponentListener.java
@@ -0,0 +1,97 @@
+// addComponentListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ComponentListener could be registered for an AWT Choice.
+ */
+public class addComponentListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ ComponentListener[] componentListeners;
+
+ // get all registered listeners
+ componentListeners = choice.getComponentListeners();
+ harness.check(componentListeners.length, 0);
+
+ // register new listener
+ choice.addComponentListener(
+ new ComponentListener() {
+ public void componentHidden(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myComponentListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ componentListeners = choice.getComponentListeners();
+ harness.check(componentListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(componentListeners[0].toString(), "myComponentListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addFocusListener.java b/gnu/testlet/java/awt/Choice/addFocusListener.java
new file mode 100644
index 00000000..1bb35d42
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addFocusListener.java
@@ -0,0 +1,88 @@
+// addFocusListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if FocusListener could be registered for an AWT Choice.
+ */
+public class addFocusListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ FocusListener[] focusListeners;
+
+ // get all registered listeners
+ focusListeners = choice.getFocusListeners();
+ harness.check(focusListeners.length, 0);
+
+ // register new listener
+ choice.addFocusListener(
+ new FocusListener() {
+
+ public void focusGained(FocusEvent e)
+ {
+ // empty
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myFocusListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ focusListeners = choice.getFocusListeners();
+ harness.check(focusListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(focusListeners[0].toString(), "myFocusListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addHierarchyBoundsListener.java b/gnu/testlet/java/awt/Choice/addHierarchyBoundsListener.java
new file mode 100644
index 00000000..0ff3e7ac
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addHierarchyBoundsListener.java
@@ -0,0 +1,88 @@
+// addHierarchyBoundsListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyBoundsListener could be registered for an AWT Choice.
+ */
+public class addHierarchyBoundsListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyBoundsListener[] hierarchyBoundsListeners;
+
+ // get all registered listeners
+ hierarchyBoundsListeners = choice.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 0);
+
+ // register new listener
+ choice.addHierarchyBoundsListener(
+ new HierarchyBoundsListener() {
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyBoundsListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyBoundsListeners = choice.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyBoundsListeners[0].toString(), "myHierarchyBoundsListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addHierarchyListener.java b/gnu/testlet/java/awt/Choice/addHierarchyListener.java
new file mode 100644
index 00000000..57448be9
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addHierarchyListener.java
@@ -0,0 +1,83 @@
+// addHierarchyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if HierarchyListener could be registered for an AWT Choice.
+ */
+public class addHierarchyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyListener[] hierarchyListeners;
+
+ // get all registered listeners
+ hierarchyListeners = choice.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 0);
+
+ // register new listener
+ choice.addHierarchyListener(
+ new HierarchyListener() {
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyListeners = choice.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyListeners[0].toString(), "myHierarchyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addInputMethodListener.java b/gnu/testlet/java/awt/Choice/addInputMethodListener.java
new file mode 100644
index 00000000..09118668
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addInputMethodListener.java
@@ -0,0 +1,88 @@
+// addInputMethodListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if InputMethodListener could be registered for an AWT Choice.
+ */
+public class addInputMethodListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ InputMethodListener[] inputMethodListeners;
+
+ // get all registered listeners
+ inputMethodListeners = choice.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 0);
+
+ // register new listener
+ choice.addInputMethodListener(
+ new InputMethodListener() {
+
+ public void caretPositionChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myInputMethodListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ inputMethodListeners = choice.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(inputMethodListeners[0].toString(), "myInputMethodListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addItemListener.java b/gnu/testlet/java/awt/Choice/addItemListener.java
new file mode 100644
index 00000000..c5e65044
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addItemListener.java
@@ -0,0 +1,82 @@
+// addItemListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT Choice.
+ */
+public class addItemListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered action listeners
+ ItemListener[] itemListeners;
+
+ // get all registered action listeners
+ itemListeners = choice.getItemListeners();
+ harness.check(itemListeners.length, 0);
+
+ // register new action listener
+ choice.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myItemListener";
+ }
+ }
+ );
+
+ // get all registered action listeners
+ itemListeners = choice.getItemListeners();
+ harness.check(itemListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(itemListeners[0].toString(), "myItemListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addKeyListener.java b/gnu/testlet/java/awt/Choice/addKeyListener.java
new file mode 100644
index 00000000..bc0a170c
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addKeyListener.java
@@ -0,0 +1,93 @@
+// addKeyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if KeyListener could be registered for an AWT Choice.
+ */
+public class addKeyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ KeyListener[] keyListeners;
+
+ // get all registered listeners
+ keyListeners = choice.getKeyListeners();
+ harness.check(keyListeners.length, 0);
+
+ // register new listener
+ choice.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myKeyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ keyListeners = choice.getKeyListeners();
+ harness.check(keyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(keyListeners[0].toString(), "myKeyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addMouseListener.java b/gnu/testlet/java/awt/Choice/addMouseListener.java
new file mode 100644
index 00000000..ee6a8c81
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addMouseListener.java
@@ -0,0 +1,103 @@
+// addMouseListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseListener could be registered for an AWT Choice.
+ */
+public class addMouseListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered mouse listeners
+ MouseListener[] mouseListeners;
+
+ // get all registered mouse listeners
+ mouseListeners = choice.getMouseListeners();
+ harness.check(mouseListeners.length, 0);
+
+ // register new mouse listener
+ choice.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseListener";
+ }
+ }
+ );
+
+ // get all registered mouse listeners
+ mouseListeners = choice.getMouseListeners();
+ harness.check(mouseListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseListeners[0].toString(), "myMouseListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addMouseMotionListener.java b/gnu/testlet/java/awt/Choice/addMouseMotionListener.java
new file mode 100644
index 00000000..c9db6fdf
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addMouseMotionListener.java
@@ -0,0 +1,88 @@
+// addMouseMotionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Choice.
+ */
+public class addMouseMotionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseMotionListener[] mouseMotionListeners;
+
+ // get all registered listeners
+ mouseMotionListeners = choice.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 0);
+
+ // register new listener
+ choice.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseMotionListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseMotionListeners = choice.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseMotionListeners[0].toString(), "myMouseMotionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addMouseWheelListener.java b/gnu/testlet/java/awt/Choice/addMouseWheelListener.java
new file mode 100644
index 00000000..5f696985
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addMouseWheelListener.java
@@ -0,0 +1,83 @@
+// addMouseWheelListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Choice.
+ */
+public class addMouseWheelListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseWheelListener[] mouseWheelListeners;
+
+ // get all registered listeners
+ mouseWheelListeners = choice.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 0);
+
+ // register new listener
+ choice.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseWheelListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseWheelListeners = choice.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseWheelListeners[0].toString(), "myMouseWheelListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/addPropertyChangeListener.java b/gnu/testlet/java/awt/Choice/addPropertyChangeListener.java
new file mode 100644
index 00000000..ecd1c1f1
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addPropertyChangeListener.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import java.awt.Color;
+import java.awt.Choice;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Choice}.
+ */
+public class addPropertyChangeListener
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = choice.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ choice.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = choice.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Choice/addPropertyChangeListenerString.java b/gnu/testlet/java/awt/Choice/addPropertyChangeListenerString.java
new file mode 100644
index 00000000..5ab361dd
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/addPropertyChangeListenerString.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Choice;
+
+import java.awt.Color;
+import java.awt.Choice;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Choice}.
+ */
+public class addPropertyChangeListenerString
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Choice choice = new Choice();
+ choice.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = choice.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ choice.addPropertyChangeListener("font", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = choice.getPropertyChangeListeners("font");
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Choice/constructors.java b/gnu/testlet/java/awt/Choice/constructors.java
new file mode 100644
index 00000000..e96a35a5
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/constructors.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Choice;
+
+// Choice constructors test
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Choice choice = new Choice();
+ harness.check(choice != null);
+ harness.check(choice.getItemCount(), 0);
+ harness.check(choice.countItems(), 0);
+ harness.check(choice.getSelectedIndex(), -1);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/getSelected.java b/gnu/testlet/java/awt/Choice/getSelected.java
new file mode 100644
index 00000000..3a7d6de2
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/getSelected.java
@@ -0,0 +1,173 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.awt.Choice;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.*;
+
+public class getSelected implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("new");
+ Choice c = new Choice();
+ harness.check(c.countItems(), 0);
+ harness.check(c.getItemCount(), 0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getSelectedItem(), null);
+ harness.check(c.getSelectedObjects(), null);
+
+ harness.checkPoint("add");
+ String gnu = "GNU";
+ c.add(gnu);
+ harness.check(c.countItems(), 1);
+ harness.check(c.getItemCount(), 1);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), gnu);
+ Object[] objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("addItem");
+ String fsf = "FSF";
+ c.add(fsf);
+ harness.check(c.countItems(), 2);
+ harness.check(c.getItemCount(), 2);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("removeAll");
+ c.removeAll();
+ harness.check(c.countItems(), 0);
+ harness.check(c.getItemCount(), 0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getSelectedItem(), null);
+ harness.check(c.getSelectedObjects(), null);
+
+ harness.checkPoint("insert-mauve");
+ String mauve = "Mauve";
+ c.insert(mauve, 0);
+ harness.check(c.countItems(), 1);
+ harness.check(c.getItemCount(), 1);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), mauve);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(mauve));
+
+ harness.checkPoint("insert-gnu");
+ c.insert(gnu, 1);
+ harness.check(c.countItems(), 2);
+ harness.check(c.getItemCount(), 2);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), mauve);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(mauve));
+
+ harness.checkPoint("select-1");
+ c.select(1);
+ harness.check(c.countItems(), 2);
+ harness.check(c.getItemCount(), 2);
+ harness.check(c.getSelectedIndex(), 1);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("insert-fsf");
+ c.insert(fsf, 1);
+ harness.check(c.countItems(), 3);
+ harness.check(c.getItemCount(), 3);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), mauve);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(mauve));
+
+ harness.checkPoint("select-gnu");
+ c.select(new String(gnu)); // Create a different fsf string
+ harness.check(c.countItems(), 3);
+ harness.check(c.getItemCount(), 3);
+ harness.check(c.getSelectedIndex(), 2);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("insert classpath");
+ String classpath = "classpath";
+ c.insert(classpath, 9);
+ harness.check(c.countItems(), 4);
+ harness.check(c.getItemCount(), 4);
+ harness.check(c.getSelectedIndex(), 2);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("add-remove-dummy");
+ c.add("dummy");
+ c.remove("dummy");
+ harness.check(c.countItems(), 4);
+ harness.check(c.getItemCount(), 4);
+ harness.check(c.getSelectedIndex(), 2);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("remove-0");
+ c.remove(0);
+ harness.check(c.countItems(), 3);
+ harness.check(c.getItemCount(), 3);
+ harness.check(c.getSelectedIndex(), 1);
+ harness.check(c.getSelectedItem(), gnu);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(gnu));
+
+ harness.checkPoint("remove-gnu");
+ c.remove(new String(gnu));
+ harness.check(c.countItems(), 2);
+ harness.check(c.getItemCount(), 2);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getSelectedItem(), fsf);
+ objects = c.getSelectedObjects();
+ harness.check(objects != null && objects.length == 1);
+ harness.check(objects != null && objects[0].equals(fsf));
+
+ harness.checkPoint("remove-1-remove-0");
+ c.remove(1);
+ c.remove(0);
+ harness.check(c.countItems(), 0);
+ harness.check(c.getItemCount(), 0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getSelectedItem(), null);
+ harness.check(c.getSelectedObjects(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Choice/list.java b/gnu/testlet/java/awt/Choice/list.java
new file mode 100644
index 00000000..de1319b1
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/list.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Choice;
+
+// test of method list()
+public class list
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Choice choice = new Choice();
+ choice.list();
+ choice.list(System.out);
+ choice.list(System.out, 0);
+ choice.list(System.out, 10);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Choice/remove.java b/gnu/testlet/java/awt/Choice/remove.java
new file mode 100644
index 00000000..89a56fe5
--- /dev/null
+++ b/gnu/testlet/java/awt/Choice/remove.java
@@ -0,0 +1,116 @@
+/* remove.java
+ Copyright (C) 2006 Tania Bento <tbento@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Choice;
+
+import java.awt.Choice;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class remove implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Choice c = new Choice();
+
+ // testing remove with only one item
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getItemCount(), 0);
+ c.add("item1");
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 1);
+ c.select(0);
+ harness.check(c.getSelectedIndex(), 0);
+ c.remove(0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getItemCount(), 0);
+
+ // testing remove with two items
+ c.add("item1");
+ c.add("item2");
+ harness.check(c.getItemCount(), 2);
+ c.select(0);
+ harness.check(c.getSelectedIndex(), 0);
+ c.select(1);
+ harness.check(c.getSelectedIndex(), 1);
+ c.remove(1);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 1);
+ c.remove(0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getItemCount(), 0);
+
+ // testing remove with more than two items
+ harness.check(c.getSelectedIndex(), -1);
+ c.add("item1");
+ harness.check(c.getSelectedIndex(), 0);
+ c.add("item2");
+ harness.check(c.getSelectedIndex(), 0);
+ c.add("item3");
+ harness.check(c.getSelectedIndex(), 0);
+ c.add("item4");
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 4);
+ c.select(2);
+ harness.check(c.getSelectedIndex(), 2);
+ c.select(1);
+ harness.check(c.getSelectedIndex(), 1);
+ c.remove(1);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 3);
+ c.remove(0);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 2);
+ c.remove(0);
+ harness.check(c.getSelectedIndex(), 0);
+ harness.check(c.getItemCount(), 1);
+ c.remove(0);
+ harness.check(c.getSelectedIndex(), -1);
+ harness.check(c.getItemCount(), 0);
+
+ // testing remove with invalid indexes.
+ boolean fail = false;
+ try
+ {
+ c.remove(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ // testing remove on last index
+ c.add("item1");
+ c.add("item2");
+ c.add("item3");
+ harness.check(c.getSelectedIndex(), 0);
+ c.select(2);
+ harness.check(c.getSelectedIndex(), 2);
+ c.remove(2);
+ harness.check(c.getSelectedIndex(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Color/CVS/Entries b/gnu/testlet/java/awt/Color/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/Color/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/Color/CVS/Repository b/gnu/testlet/java/awt/Color/CVS/Repository
new file mode 100644
index 00000000..e4ca1cea
--- /dev/null
+++ b/gnu/testlet/java/awt/Color/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Color
diff --git a/gnu/testlet/java/awt/Color/CVS/Root b/gnu/testlet/java/awt/Color/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Color/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/ColorClass/CVS/Entries b/gnu/testlet/java/awt/ColorClass/CVS/Entries
new file mode 100644
index 00000000..a1bc27f4
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/CVS/Entries
@@ -0,0 +1,11 @@
+/brighter.java/1.1/Wed Aug 23 19:37:12 2006//
+/constants.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/constructors.java/1.1/Fri Sep 30 19:13:16 2005/-kk/
+/decode.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/equals.java/1.1/Fri Sep 30 19:13:16 2005/-kk/
+/getBlue.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/getGreen.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/getRed.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/hashCode.java/1.2/Wed Sep 7 10:21:53 2011/-kk/
+/serialization.java/1.1/Fri Sep 30 19:13:16 2005/-kk/
+D
diff --git a/gnu/testlet/java/awt/ColorClass/CVS/Repository b/gnu/testlet/java/awt/ColorClass/CVS/Repository
new file mode 100644
index 00000000..81065ab4
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/ColorClass
diff --git a/gnu/testlet/java/awt/ColorClass/CVS/Root b/gnu/testlet/java/awt/ColorClass/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/ColorClass/brighter.java b/gnu/testlet/java/awt/ColorClass/brighter.java
new file mode 100644
index 00000000..0cbc30f8
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/brighter.java
@@ -0,0 +1,80 @@
+/* brighter.java
+ Copyright (C) 2006 RedHat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.3
+
+package gnu.testlet.java.awt.ColorClass;
+
+
+import java.awt.Color;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+ /**
+ * MenuBarTest
+ */
+ public class brighter implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+
+ for (int i = 0; i <= 3; i++)
+ {
+ for (int j = 0; j <= 255; j++)
+ {
+ for (int k = 0; k <= 255; k++)
+ {
+ Color c = new Color(i, j, k);
+ Color c2;
+ c2 = c.brighter();
+ int value = c.getRGB();
+ int[] colors = new int[3];
+ colors[0] = (value & (255 << 16)) >> 16;
+ colors[1] = (value & (255 << 8)) >> 8;
+ colors[2] = value & 255;
+ // (0,0,0) is a special case.
+ if (colors[0] == 0 && colors[1] == 0 && colors[2] ==0)
+ {
+ colors[0] = 3;
+ colors[1] = 3;
+ colors[2] = 3;
+ }
+ else
+ {
+ for (int index = 0; index < 3; index++)
+ {
+
+ if (colors[index] > 2)
+ colors[index] = (int) Math.min(255, colors[index]/0.7f);
+ if (colors[index] == 1 || colors[index] == 2)
+ colors[index] = 4;
+ }
+ }
+ harness.check(c2.getRed(), colors[0]);
+ harness.check(c2.getBlue(), colors[2]);
+ harness.check(c2.getGreen(), colors[1]);
+ }
+ }
+ }
+ }
+
+ }
diff --git a/gnu/testlet/java/awt/ColorClass/constants.java b/gnu/testlet/java/awt/ColorClass/constants.java
new file mode 100644
index 00000000..ad40dcbe
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/constants.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the constants defined by the {@link Color} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("lowercase color names");
+
+ harness.check(Color.black.equals(new Color(0, 0, 0)));
+ harness.check(Color.blue.equals(new Color(0, 0, 255)));
+ harness.check(Color.cyan.equals(new Color(0, 255, 255)));
+ harness.check(Color.darkGray.equals(new Color(64, 64, 64)));
+ harness.check(Color.gray.equals(new Color(128, 128, 128)));
+ harness.check(Color.green.equals(new Color(0, 255, 0)));
+ harness.check(Color.lightGray.equals(new Color(192, 192, 192)));
+ harness.check(Color.magenta.equals(new Color(255, 0, 255)));
+ harness.check(Color.orange.equals(new Color(255, 200, 0)));
+ harness.check(Color.pink.equals(new Color(255, 175, 175)));
+ harness.check(Color.red.equals(new Color(255, 0, 0)));
+ harness.check(Color.white.equals(new Color(255, 255, 255)));
+ harness.check(Color.yellow.equals(new Color(255, 255, 0)));
+
+ harness.checkPoint("uppercase color names");
+
+ harness.check(Color.BLACK.equals(new Color(0, 0, 0)));
+ harness.check(Color.BLUE.equals(new Color(0, 0, 255)));
+ harness.check(Color.CYAN.equals(new Color(0, 255, 255)));
+ harness.check(Color.DARK_GRAY.equals(new Color(64, 64, 64)));
+ harness.check(Color.GRAY.equals(new Color(128, 128, 128)));
+ harness.check(Color.GREEN.equals(new Color(0, 255, 0)));
+ harness.check(Color.LIGHT_GRAY.equals(new Color(192, 192, 192)));
+ harness.check(Color.MAGENTA.equals(new Color(255, 0, 255)));
+ harness.check(Color.ORANGE.equals(new Color(255, 200, 0)));
+ harness.check(Color.PINK.equals(new Color(255, 175, 175)));
+ harness.check(Color.RED.equals(new Color(255, 0, 0)));
+ harness.check(Color.WHITE.equals(new Color(255, 255, 255)));
+ harness.check(Color.YELLOW.equals(new Color(255, 255, 0)));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ColorClass/constructors.java b/gnu/testlet/java/awt/ColorClass/constructors.java
new file mode 100644
index 00000000..d4b428cc
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/constructors.java
@@ -0,0 +1,480 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.color.ColorSpace;
+
+/**
+ * Some checks for the constructors in the {@link Color} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(ColorSpace, float[], float)");
+ Color c = new Color(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new float[] { 0.2f, 0.4f, 0.6f}, 0.8f);
+ harness.check(c.getRed(), 51);
+ harness.check(c.getGreen(), 102);
+ harness.check(c.getBlue(), 153);
+ harness.check(c.getAlpha(), 204);
+
+ // try null space
+ boolean pass = false;
+ try
+ {
+ c = new Color(null, new float[] { 0.2f, 0.4f, 0.6f}, 0.8f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, float)");
+ Color c = new Color(0.2f, 0.4f, 0.6f);
+ harness.check(c.getRed(), 51);
+ harness.check(c.getGreen(), 102);
+ harness.check(c.getBlue(), 153);
+ harness.check(c.getAlpha(), 255);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new Color(-0.2f, 0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, -0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, -0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(1.2f, 0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 1.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, 1.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, float, float)");
+ Color c = new Color(0.2f, 0.4f, 0.6f, 0.8f);
+ harness.check(c.getRed(), 51);
+ harness.check(c.getGreen(), 102);
+ harness.check(c.getBlue(), 153);
+ harness.check(c.getAlpha(), 204);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new Color(-0.2f, 0.4f, 0.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, -0.4f, 0.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, -0.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative alpha
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, 0.6f, -0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(1.2f, 0.4f, 0.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 1.4f, 0.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, 1.6f, 0.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // alpha > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(0.2f, 0.4f, 0.6f, 1.8f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ Color c = new Color(0x12345678);
+ harness.check(c.getRed(), 0x34);
+ harness.check(c.getGreen(), 0x56);
+ harness.check(c.getBlue(), 0x78);
+ harness.check(c.getAlpha(), 0xFF);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(int, boolean)");
+ Color c = new Color(0x12345678, false);
+ harness.check(c.getRed(), 0x34);
+ harness.check(c.getGreen(), 0x56);
+ harness.check(c.getBlue(), 0x78);
+ harness.check(c.getAlpha(), 0xFF);
+
+ c = new Color(0x12345678, true);
+ harness.check(c.getRed(), 0x34);
+ harness.check(c.getGreen(), 0x56);
+ harness.check(c.getBlue(), 0x78);
+ harness.check(c.getAlpha(), 0x12);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int)");
+ Color c = new Color(12, 34, 56);
+ harness.check(c.getRed(), 12);
+ harness.check(c.getGreen(), 34);
+ harness.check(c.getBlue(), 56);
+ harness.check(c.getAlpha(), 255);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new Color(-12, 34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new Color(12, -34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, -56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(512, 34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(12, 534, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, 556);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int)");
+ Color c = new Color(12, 34, 56, 78);
+ harness.check(c.getRed(), 12);
+ harness.check(c.getGreen(), 34);
+ harness.check(c.getBlue(), 56);
+ harness.check(c.getAlpha(), 78);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new Color(-12, 34, 56, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new Color(12, -34, 56, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, -56, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative alpha
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, 56, -78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(512, 34, 56, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(12, 534, 56, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, 556, 78);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // alpha > 1.0
+ pass = false;
+ try
+ {
+ c = new Color(12, 34, 56, 578);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ColorClass/decode.java b/gnu/testlet/java/awt/ColorClass/decode.java
new file mode 100644
index 00000000..6f42d379
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/decode.java
@@ -0,0 +1,130 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the decode() method in the {@link Color} class.
+ */
+public class decode implements Testlet
+{
+
+ /**
+ * Parse the given string, create Color object using this string
+ * and check if all three color component are set correcty.
+ */
+ private void checkColorDecode(TestHarness harness, String str, int red, int green, int blue)
+ {
+ Color c = Color.decode(str);
+ harness.check(c.getRed(), red);
+ harness.check(c.getGreen(), green);
+ harness.check(c.getBlue(), blue);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // hexadecimal numbers interpretation
+ checkColorDecode(harness, "0x0", 0, 0, 0);
+ checkColorDecode(harness, "0X0", 0, 0, 0);
+ checkColorDecode(harness, "#0", 0, 0, 0);
+ checkColorDecode(harness, "0x010203", 1, 2, 3);
+ checkColorDecode(harness, "0X010203", 1, 2, 3);
+ checkColorDecode(harness, "#010203", 1, 2, 3);
+ checkColorDecode(harness, "0xffffff", 255, 255, 255);
+ checkColorDecode(harness, "0Xffffff", 255, 255, 255);
+ checkColorDecode(harness, "#ffffff", 255, 255, 255);
+
+ // negative hexadecimal numbers
+ checkColorDecode(harness, "-0x0", 0, 0, 0);
+ checkColorDecode(harness, "-0X0", 0, 0, 0);
+ checkColorDecode(harness, "-#0", 0, 0, 0);
+ checkColorDecode(harness, "-0x1", 255, 255, 255);
+ checkColorDecode(harness, "-0X1", 255, 255, 255);
+ checkColorDecode(harness, "-#1", 255, 255, 255);
+ checkColorDecode(harness, "-0xffffff", 0, 0, 1);
+ checkColorDecode(harness, "-0Xffffff", 0, 0, 1);
+ checkColorDecode(harness, "-#ffffff", 0, 0, 1);
+
+ // decimal numbers interpretation
+ checkColorDecode(harness, "0", 0, 0, 0);
+ checkColorDecode(harness, "255", 0, 0, 255);
+ checkColorDecode(harness, "256", 0, 1, 0);
+ checkColorDecode(harness, "65535", 0, 255, 255);
+ checkColorDecode(harness, "65536", 1, 0, 0);
+ checkColorDecode(harness, "16777215", 255, 255, 255);
+ checkColorDecode(harness, "-16777215", 0, 0, 1);
+ checkColorDecode(harness, "-1", 255, 255, 255);
+
+ // octal numbers interpretation
+ checkColorDecode(harness, "00", 0, 0, 0);
+ checkColorDecode(harness, "0777", 0, 1, 255);
+ checkColorDecode(harness, "077777777", 255, 255, 255);
+ checkColorDecode(harness, "-01", 255, 255, 255);
+
+ // try a null argument - see bug parade 6211249
+ boolean pass = false;
+ try
+ {
+ Color.decode(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a non-numeric string
+ pass = false;
+ try
+ {
+ Color.decode("XYZ");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a bad octal value
+ pass = false;
+ try
+ {
+ Color.decode("0778");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ColorClass/equals.java b/gnu/testlet/java/awt/ColorClass/equals.java
new file mode 100644
index 00000000..db24053d
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/equals.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Checks that the equals() method in the {@link Color} class works
+ * correctly.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c1 = new Color(1, 2, 3);
+ Color c2 = new Color(1, 2, 3);
+ harness.check(c1.equals(c2));
+ harness.check(c2.equals(c1));
+
+ c1 = new Color(1, 2, 3, 4);
+ harness.check(!c1.equals(c2));
+ c2 = new Color(1, 2, 3, 4);
+ harness.check(c1.equals(c2));
+
+ c1 = new Color(5, 2, 3, 4);
+ harness.check(!c1.equals(c2));
+ c2 = new Color(5, 2, 3, 4);
+ harness.check(c1.equals(c2));
+
+ c1 = new Color(5, 6, 3, 4);
+ harness.check(!c1.equals(c2));
+ c2 = new Color(5, 6, 3, 4);
+ harness.check(c1.equals(c2));
+
+ c1 = new Color(5, 6, 7, 4);
+ harness.check(!c1.equals(c2));
+ c2 = new Color(5, 6, 7, 4);
+ harness.check(c1.equals(c2));
+
+ c1 = new Color(5, 6, 7, 8);
+ harness.check(!c1.equals(c2));
+ c2 = new Color(5, 6, 7, 8);
+ harness.check(c1.equals(c2));
+
+ // check null argument
+ harness.check(!c1.equals(null));
+
+ // check non-Color argument
+ harness.check(!c1.equals("XYZ"));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ColorClass/getBlue.java b/gnu/testlet/java/awt/ColorClass/getBlue.java
new file mode 100644
index 00000000..c96fe2da
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/getBlue.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the getBlue() method in the {@link Color} class.
+ */
+public class getBlue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c = new Color(1, 2, 3);
+ harness.check(c.getBlue(), 3);
+
+ c = new Color(243, 244, 245);
+ harness.check(c.getBlue(), 245);
+
+ thoroughTest(harness);
+ }
+
+ /**
+ * This test checks some RGB combinations, ie. subset of 2^24 colors
+ * It tooks 1-5 seconds to complete on a reasonable hardware.
+ */
+ private void thoroughTest(TestHarness harness)
+ {
+ for (int red = 0; red < 256; red+=8)
+ {
+ for (int green = 0; green < 256; green+=8)
+ {
+ for (int blue = 0; blue < 256; blue+=8)
+ {
+ Color c = new Color(red, green, blue);
+ harness.check(c.getBlue(), blue);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/ColorClass/getGreen.java b/gnu/testlet/java/awt/ColorClass/getGreen.java
new file mode 100644
index 00000000..9350db18
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/getGreen.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the getGreen() method in the {@link Color} class.
+ */
+public class getGreen implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c = new Color(1, 2, 3);
+ harness.check(c.getGreen(), 2);
+
+ c = new Color(243, 244, 245);
+ harness.check(c.getGreen(), 244);
+
+ thoroughTest(harness);
+ }
+
+ /**
+ * This test checks some RGB combinations, ie. subset of 2^24 colors
+ * It tooks 1-5 seconds to complete on a reasonable hardware.
+ */
+ private void thoroughTest(TestHarness harness)
+ {
+ for (int red = 0; red < 256; red+=8)
+ {
+ for (int green = 0; green < 256; green+=8)
+ {
+ for (int blue = 0; blue < 256; blue+=8)
+ {
+ Color c = new Color(red, green, blue);
+ harness.check(c.getGreen() == green);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/ColorClass/getRed.java b/gnu/testlet/java/awt/ColorClass/getRed.java
new file mode 100644
index 00000000..8fc2c55b
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/getRed.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the getRed() method in the {@link Color} class.
+ */
+public class getRed implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c = new Color(1, 2, 3);
+ harness.check(c.getRed(), 1);
+
+ c = new Color(243, 244, 245);
+ harness.check(c.getRed(), 243);
+
+ thoroughTest(harness);
+ }
+
+ /**
+ * This test checks some RGB combinations, ie. subset of 2^24 colors
+ * It tooks 1-5 seconds to complete on a reasonable hardware.
+ */
+ private void thoroughTest(TestHarness harness)
+ {
+ for (int red = 0; red < 256; red+=8)
+ {
+ for (int green = 0; green < 256; green+=8)
+ {
+ for (int blue = 0; blue < 256; blue+=8)
+ {
+ Color c = new Color(red, green, blue);
+ harness.check(c.getRed(), red);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/ColorClass/hashCode.java b/gnu/testlet/java/awt/ColorClass/hashCode.java
new file mode 100644
index 00000000..031aac6b
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/hashCode.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+/**
+ * Some checks for the hashCode() method in the {@link Color} class works.
+ */
+public class hashCode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c1 = new Color(1, 2, 3);
+ Color c2 = new Color(1, 2, 3);
+ harness.check(c1.hashCode() == c2.hashCode());
+
+ harness.check(Color.black.hashCode() == new Color(0, 0, 0).hashCode());
+ harness.check(Color.white.hashCode() == new Color(255, 255, 255).hashCode());
+
+ thoroughTest(harness);
+ }
+
+ /**
+ * This test checks some RGB combinations, ie. subset of 2^24 colors
+ * It tooks 1-5 seconds to complete on a reasonable hardware.
+ */
+ private void thoroughTest(TestHarness harness)
+ {
+ for (int red = 0; red < 256; red+=8)
+ {
+ for (int green = 0; green < 256; green+=8)
+ {
+ for (int blue = 0; blue < 256; blue+=8)
+ {
+ Color c1 = new Color(red, green, blue);
+ Color c2 = new Color(red, green, blue);
+ harness.check(c1.hashCode() == c2.hashCode());
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/ColorClass/serialization.java b/gnu/testlet/java/awt/ColorClass/serialization.java
new file mode 100644
index 00000000..943f7676
--- /dev/null
+++ b/gnu/testlet/java/awt/ColorClass/serialization.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.ColorClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Some checks for serialization of a {@link Color} instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Color c1 = new Color(1, 2, 3, 4);
+ Color c2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(c1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ c2 = (Color) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(c1.equals(c2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/CVS/Entries b/gnu/testlet/java/awt/Component/CVS/Entries
new file mode 100644
index 00000000..e2b0008a
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/CVS/Entries
@@ -0,0 +1,21 @@
+/clickModifiers.java/1.1/Tue Feb 22 06:14:56 2005//
+/getFont.java/1.2/Fri Sep 30 12:27:49 2011//
+/getForeground.java/1.2/Wed Nov 2 15:24:46 2005//
+/getListeners.java/1.2/Wed Dec 27 15:48:18 2006//
+/getLocationOnScreen.java/1.1/Fri Jul 28 10:53:32 2006//
+/getMaximumSize.java/1.1/Wed Nov 2 15:21:23 2005//
+/invalidate.java/1.3/Thu Jul 13 16:08:45 2006//
+/isValid.java/1.1/Fri Jul 7 11:59:56 2006//
+/keyPressTest.java/1.3/Thu Oct 4 13:03:11 2007//
+/properties.java/1.3/Tue Jul 25 08:18:50 2006//
+/properties14.java/1.1/Mon Apr 25 20:47:07 2005//
+/repaint.java/1.1/Mon Feb 13 15:16:51 2006//
+/requestFocus.java/1.3/Fri Sep 30 12:27:49 2011//
+/setComponentOrientation.java/1.1/Tue Jun 27 09:38:07 2006//
+/setFont.java/1.1/Fri Jul 7 11:59:56 2006//
+/setMaximumSize.java/1.1/Wed Jun 28 10:56:24 2006//
+/setMinimumSize.java/1.1/Wed Jun 28 10:56:24 2006//
+/setName.java/1.1/Tue Jun 27 15:57:26 2006//
+/setPreferredSize.java/1.1/Wed Jun 28 10:56:24 2006//
+/update.java/1.2/Fri Aug 19 20:34:39 2005//
+D
diff --git a/gnu/testlet/java/awt/Component/CVS/Repository b/gnu/testlet/java/awt/Component/CVS/Repository
new file mode 100644
index 00000000..962f30cb
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Component
diff --git a/gnu/testlet/java/awt/Component/CVS/Root b/gnu/testlet/java/awt/Component/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Component/clickModifiers.java b/gnu/testlet/java/awt/Component/clickModifiers.java
new file mode 100644
index 00000000..439f14fb
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/clickModifiers.java
@@ -0,0 +1,91 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005 Red Hat
+
+// 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.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check that a click events contain the proper modifier information.
+ */
+public class clickModifiers implements Testlet
+{
+ int modifiers = 0;
+
+ class clickModifiersFrame extends Frame
+ {
+ clickModifiersFrame ()
+ {
+ super ();
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Robot r = harness.createRobot ();
+ int x = 100;
+ int y = 100;
+ int width = 100;
+ int height = 100;
+
+ clickModifiersFrame f = new clickModifiersFrame ();
+
+ f.setLocation (x, y);
+ f.setSize (width, height);
+
+ f.addMouseListener (new MouseAdapter ()
+ {
+ public void mouseClicked (MouseEvent e)
+ {
+ modifiers = e.getModifiers ();
+ }
+ });
+
+ r.setAutoDelay (100);
+ r.setAutoWaitForIdle (true);
+
+ f.show ();
+
+ r.mouseMove (x + width / 2, y + height / 2);
+
+ // left click
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ harness.check (modifiers == InputEvent.BUTTON1_MASK);
+
+ // right click
+ r.mousePress (InputEvent.BUTTON2_MASK);
+ r.mouseRelease (InputEvent.BUTTON2_MASK);
+
+ harness.check (modifiers == InputEvent.BUTTON2_MASK);
+
+ // middle click
+ r.mousePress (InputEvent.BUTTON3_MASK);
+ r.mouseRelease (InputEvent.BUTTON3_MASK);
+
+ harness.check (modifiers == InputEvent.BUTTON3_MASK);
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/getFont.java b/gnu/testlet/java/awt/Component/getFont.java
new file mode 100644
index 00000000..864e2a84
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/getFont.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.Frame;
+
+public class getFont implements Testlet {
+
+ class TestComponent extends Component
+ {
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ harness.check(c.getFont(), null);
+
+ Frame f = new Frame();
+ f.add(c);
+ f.setSize(100, 100);
+ f.setVisible(true);
+ harness.check(c.getFont(), c.getGraphics().getFont());
+ // time to clean up
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/getForeground.java b/gnu/testlet/java/awt/Component/getForeground.java
new file mode 100644
index 00000000..2f181af5
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/getForeground.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+
+public class getForeground implements Testlet {
+
+ class TestComponent extends Component
+ {
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ harness.check(c.getForeground(), null);
+ Container c2 = new Container();
+ c2.setForeground(Color.GREEN);
+ c2.add(c);
+ harness.check(c.getForeground(), Color.GREEN);
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/getListeners.java b/gnu/testlet/java/awt/Component/getListeners.java
new file mode 100644
index 00000000..f2a36ed3
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/getListeners.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.awt.event.FocusListener;
+import java.util.EventListener;
+
+/**
+ * Some tests for the <code>getListeners(Class)</code> method in the
+ * {@link Component} class.
+ */
+public class getListeners implements Testlet, ComponentListener {
+
+ class TestComponent extends Component
+ {
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.addComponentListener(this);
+ EventListener[] listeners = c.getListeners(ComponentListener.class);
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ // try a listener type that isn't registered
+ listeners = c.getListeners(FocusListener.class);
+ harness.check(listeners.length, 0);
+ c.removeComponentListener(this);
+ listeners = c.getListeners(ComponentListener.class);
+ harness.check(listeners.length, 0);
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ listeners = c.getListeners(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ /* Doesn't compile with 1.5
+ // try a class that isn't a listener
+ pass = false;
+ try
+ {
+ listeners = c.getListeners(Integer.class);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // ignore
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // ignore
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // ignore
+ }
+
+ public void componentHidden(ComponentEvent e)
+ {
+ // ignore
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/getLocationOnScreen.java b/gnu/testlet/java/awt/Component/getLocationOnScreen.java
new file mode 100644
index 00000000..4b953045
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/getLocationOnScreen.java
@@ -0,0 +1,91 @@
+/* getLocationOnScreen.java -- Checks getLocationOnScreen()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Frame;
+import java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLocationOnScreen implements Testlet
+{
+
+ /**
+ * Overrides Container and returns bogus values for getLocationOnScreen().
+ */
+ private class FakeContainer extends Container
+ {
+
+ public Point getLocationOnScreen()
+ {
+ return new Point(-1200, 12345);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testOverrideSafety(harness);
+
+ }
+
+ /**
+ * Checks if that methods is safe from having components with overridden
+ * getLocationOnScreen() methods in the tree.
+ *
+ * @param h the test harness
+ */
+ private void testOverrideSafety(TestHarness h)
+ {
+ // The heavyweight parent.
+ Frame f = new Frame();
+
+ // A lightweight container with a faked getLocationOnScreen() method.
+ FakeContainer cont = new FakeContainer();
+
+ // A lightweight component.
+ Component comp = new Component(){};
+
+ f.add(cont);
+ cont.add(comp);
+
+ f.setSize(100, 100);
+ f.setVisible(true);
+
+ cont.setBounds(10, 10, 80, 80);
+ comp.setBounds(10, 10, 60, 60);
+
+
+ Point frameLoc = f.getLocationOnScreen();
+ // The component now should have
+ // (frameLoc.x + 20 + i.left, frameLoc.y + 20 + i.top).
+ Point compLoc = comp.getLocationOnScreen();
+ h.check(compLoc.x, frameLoc.x + 20);
+ h.check(compLoc.y, frameLoc.y + 20);
+
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/getMaximumSize.java b/gnu/testlet/java/awt/Component/getMaximumSize.java
new file mode 100644
index 00000000..ad7a7367
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/getMaximumSize.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.4 JDK1.5
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+import java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks for the default value of Component.getMaximumSize. Should be
+ * (Short.MAX_VALUE, Short.MAX_VALUE).
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ Component c = new Component(){};
+ Dimension max = c.getMaximumSize();
+ harness.check(max.width, Short.MAX_VALUE);
+ harness.check(max.height, Short.MAX_VALUE);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/invalidate.java b/gnu/testlet/java/awt/Component/invalidate.java
new file mode 100644
index 00000000..c0f81ef4
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/invalidate.java
@@ -0,0 +1,167 @@
+// Tags: GUI JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * The method invalidate should be automatically called in
+ * response to several property changes such as size and location.
+ * This is checked here.
+ *
+ * @author Roman Kennke (roman@ontographics.com)
+ */
+public class invalidate implements Testlet
+{
+
+ /**
+ * Non abstract subclass of Component to allow instatiation and
+ * test.
+ */
+ public class TestComponent extends Component
+ {
+
+ /**
+ * If revalidate has been called or not.
+ */
+ boolean invalidated;
+
+ /**
+ * Override this method to check if revalidate has been called.
+ */
+ public void invalidate()
+ {
+ invalidated = true;
+ super.invalidate();
+ }
+ }
+
+ /**
+ * Subclass of Container to allow test.
+ */
+ class TestContainer extends Container
+ {
+ boolean invalidated;
+
+ /**
+ * Override this method to check if revalidate has been called.
+ */
+ public void invalidate()
+ {
+ invalidated = true;
+ super.invalidate();
+ }
+ }
+
+ /**
+ * Subclass of Component to allow test.
+ */
+ public class myComponent
+ extends Component
+ {
+ }
+
+ public void test (TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testInvalidateInvalidComponent(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ // prepare test component
+ TestComponent comp = new TestComponent();
+ Frame frame = new Frame();
+ frame.add(comp);
+ frame.setVisible(true);
+
+ // change size and check if invalidate has been called
+ comp.invalidated = false;
+ comp.setSize(100, 200);
+ harness.check(comp.invalidated, true);
+
+ // change size and check if invalidate has been called
+ comp.invalidated = false;
+ comp.setSize(new Dimension(101, 201));
+ harness.check(comp.invalidated, true);
+
+ // change size and check if invalidate has been called
+ comp.invalidated = false;
+ comp.resize(102, 202);
+ harness.check(comp.invalidated, true);
+
+ frame.dispose();
+ }
+
+ private void test2(TestHarness harness)
+ {
+ myComponent c = new myComponent();
+ harness.check(c.isPreferredSizeSet(), false);
+
+ c.setPreferredSize(new Dimension(400, 500));
+ Dimension prefSizeOld = c.getPreferredSize();
+ harness.check(c.isPreferredSizeSet(), true);
+
+ c.invalidate();
+ harness.check(c.isPreferredSizeSet(), true);
+ Dimension prefSizeNew = c.getPreferredSize();
+ harness.check(prefSizeOld != prefSizeNew);
+ harness.check(prefSizeOld.equals(prefSizeNew));
+ }
+
+ private void testInvalidateInvalidComponent(TestHarness harness)
+ {
+ harness.checkPoint("invalidateInvalidComponent");
+ Frame f = new Frame();
+ TestContainer c1 = new TestContainer();
+ TestComponent c2 = new TestComponent();
+ c1.add(c2);
+ f.add(c1);
+ f.setSize(100, 100);
+ f.setVisible(true);
+ c1.validate();
+ c2.validate();
+ harness.check(c1.isValid(), true);
+ harness.check(c1.isValid(), true);
+ c1.invalidated = false;
+ c2.invalidated = false;
+ // This should invalidate both c1 and c2.
+ c2.invalidate();
+ harness.check(c1.invalidated, true);
+ harness.check(c2.invalidated, true);
+
+ // Now both components are invalid. Another call to invalidate() on c2
+ // should not invalidate c1, since it's already invalid.
+ c1.invalidated = false;
+ c2.invalidated = false;
+ // This should invalidate both c1 and c2.
+ c2.invalidate();
+ harness.check(c1.invalidated, false);
+ harness.check(c2.invalidated, true);
+ f.dispose();
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/isValid.java b/gnu/testlet/java/awt/Component/isValid.java
new file mode 100644
index 00000000..476aa24e
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/isValid.java
@@ -0,0 +1,67 @@
+/* isValid.java -- Checks how isValid() is supposed to work
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags:JDK1.1
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+import java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isValid implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testShowing(harness);
+ testNotShowing(harness);
+ }
+
+ private void testShowing(TestHarness h)
+ {
+ h.checkPoint("showing");
+ Frame f = new Frame();
+ Component c = new Component(){};
+ f.add(c);
+ f.setSize(100, 100);
+ f.setVisible(true);
+
+ c.invalidate();
+ h.check(!c.isValid());
+ c.validate();
+ h.check(c.isValid());
+ }
+
+ private void testNotShowing(TestHarness h)
+ {
+ h.checkPoint("notShowing");
+
+ Component c = new Component(){};
+
+ c.invalidate();
+ h.check(!c.isValid());
+ c.validate();
+ h.check(!c.isValid());
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/keyPressTest.java b/gnu/testlet/java/awt/Component/keyPressTest.java
new file mode 100644
index 00000000..41ff9171
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/keyPressTest.java
@@ -0,0 +1,160 @@
+/* keyPressTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Event;
+import java.awt.Frame;
+import java.awt.Robot;
+import java.awt.event.KeyEvent;
+
+public class keyPressTest implements Testlet
+{
+ //arbitrary lock for use in synchronizing test and awt threads
+ final Object lock = new Object();
+
+ volatile Integer key = null;
+
+ Robot r;
+ myFrame f;
+ TestHarness h;
+
+ public void test (TestHarness h)
+ {
+ f = new myFrame();
+ r = h.createRobot ();
+ this.h = h;
+
+ f.setSize(200,200); // assumes that the window is positioned at 0,0.
+ f.show();
+
+ waitForWindow();
+
+ runTest(KeyEvent.VK_A, 'a');
+ runTest(KeyEvent.VK_B, 'b');
+ runTest(KeyEvent.VK_C, 'c');
+ runTest(KeyEvent.VK_D, 'd');
+ runTest(KeyEvent.VK_E, 'e');
+ runTest(KeyEvent.VK_F, 'f');
+ runTest(KeyEvent.VK_G, 'g');
+ runTest(KeyEvent.VK_H, 'h');
+ runTest(KeyEvent.VK_I, 'i');
+ runTest(KeyEvent.VK_J, 'j');
+ runTest(KeyEvent.VK_K, 'k');
+ runTest(KeyEvent.VK_L, 'l');
+ runTest(KeyEvent.VK_M, 'm');
+ runTest(KeyEvent.VK_N, 'n');
+ runTest(KeyEvent.VK_O, 'o');
+ runTest(KeyEvent.VK_P, 'p');
+ runTest(KeyEvent.VK_Q, 'q');
+ runTest(KeyEvent.VK_R, 'r');
+ runTest(KeyEvent.VK_S, 's');
+ runTest(KeyEvent.VK_T, 't');
+ runTest(KeyEvent.VK_U, 'u');
+ runTest(KeyEvent.VK_V, 'v');
+ runTest(KeyEvent.VK_W, 'w');
+ runTest(KeyEvent.VK_X, 'x');
+ runTest(KeyEvent.VK_Y, 'y');
+ runTest(KeyEvent.VK_Z, 'z');
+
+ f.dispose();
+ }
+
+ public void runTest(int code, char chr)
+ {
+ int k; // assigned in the synchronized block
+ r.mouseMove(60, 60);
+
+ synchronized(lock) {
+ key = null; // reset the key
+
+ // queue the events
+ r.keyPress(code);
+ r.keyRelease(code); // don't press they key forever
+
+ try {
+
+ // release the lock so that the frame can handle the keypress event
+ // once it has handled the event, it will notify on the lock.
+ // at this point the key should be non-null. We test the result
+ // and return
+ lock.wait();
+ } catch (InterruptedException e) {
+ // ignore, we want to get started again
+ }
+
+ k = key.intValue();
+ }
+
+ h.check(k, chr);
+ }
+
+ class myFrame extends Frame {
+
+ public boolean keyDown(Event e, int i) {
+ synchronized(lock) {
+ key = new Integer(e.key);
+ lock.notifyAll();
+ }
+ return super.keyDown(e, i);
+ }
+ }
+
+ /**
+ * Blocks until the frame has able to respond to keypress events
+ */
+ private void waitForWindow() {
+
+ // wait until the window starts process events
+ synchronized(lock) {
+ while (key == null) {
+ r.keyPress(KeyEvent.VK_EQUALS); // send a key press event
+ r.keyRelease(KeyEvent.VK_EQUALS); // don't press the key forever
+ try {
+
+ // wait for a notify from the frame, or timeout in case the
+ // window missed the key press event entirely
+ lock.wait(100);
+ }
+ catch (InterruptedException ie) {
+ // interrupted, if key is still null, we'll try again
+ }
+ }
+
+ // send one more "magic" key press as a marker that we've processed
+ // all of our probing key strokes
+ r.keyPress(KeyEvent.VK_SEMICOLON); // send a key press event
+ r.keyRelease(KeyEvent.VK_SEMICOLON); // don't press the key forever
+ }
+
+ // Eat up any straggler key strokes, wait for the final magic key press
+ while(key != KeyEvent.VK_SEMICOLON) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ // shouldn't happen
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/properties.java b/gnu/testlet/java/awt/Component/properties.java
new file mode 100644
index 00000000..720b7e47
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/properties.java
@@ -0,0 +1,145 @@
+// Tags: GUI JDK1.2
+
+// Copyright (C) 2005, 2006, Red Hat
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.ComponentOrientation;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.dnd.DropTarget;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Locale;
+
+/**
+ * Check if bound properties are firing PropertyChangeEvents and
+ * simple properties not.
+ *
+ * @author Roman Kennke (roman@ontographics.com)
+ */
+public class properties implements Testlet
+{
+
+ /**
+ * stores the name of a fired property or <code>null</code> of none has
+ * been fired.
+ */
+ private String propertyName;
+
+ /**
+ * Non abstract subclass of Component to allow instatiation.
+ */
+ public class TestComponent extends Component {
+ }
+
+ public void test (TestHarness harness)
+ {
+ // prepare test component
+ Component comp = new TestComponent();
+ comp.addPropertyChangeListener(new PropertyChangeListener() {
+ // sets <code>propertyName</code> when called
+ public void propertyChange(PropertyChangeEvent ev) {
+ propertyName = ev.getPropertyName();
+ }
+ });
+
+
+ // check 'background' property (must be fired)
+ propertyName = null;
+ comp.setBackground(Color.YELLOW);
+ harness.check(propertyName, "background", "Property: background");
+
+ // check 'bounds' property (must not be fired)
+ propertyName = null;
+ comp.setBounds(new Rectangle(143, 564, 1200, 2233));
+ harness.check(propertyName, null, "Property: bounds");
+
+ // check 'componentOrientation' property (should be fired)
+ propertyName = null;
+ comp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
+ // do second call to assure that the property actually changes
+ comp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
+ harness.check(propertyName, "componentOrientation",
+ "Property: componentOrientation");
+
+ // check 'cursor' property (must not be fired)
+ propertyName = null;
+ comp.setCursor(new Cursor(Cursor.HAND_CURSOR));
+ harness.check(propertyName, null, "Property: cursor");
+
+ // check 'dropTarget' property (must not be fired)
+ propertyName = null;
+ comp.setDropTarget(new DropTarget());
+ harness.check(propertyName, null, "Property: dropTarget");
+
+ // check 'enabled' property (must not be fired)
+ propertyName = null;
+ comp.setEnabled(true);
+ comp.setEnabled(false);
+ harness.check(propertyName, null, "Property: enabled");
+
+ // check 'font' property (must be fired)
+ propertyName = null;
+ comp.setFont(new Font("Monospaced", Font.PLAIN, 12));
+ harness.check(propertyName, "font", "Property: font");
+
+ // check 'foreground' property (must be fired)
+ propertyName = null;
+ comp.setForeground(Color.CYAN);
+ harness.check(propertyName, "foreground", "Property: foreground");
+
+ // check 'locale' property (must be fired)
+ propertyName = null;
+ comp.setLocale(Locale.CHINESE);
+ comp.setLocale(Locale.GERMAN);
+ harness.check(propertyName, "locale", "Property: locale");
+
+ // check 'location' property (must not be fired)
+ propertyName = null;
+ comp.setLocation(new Point(123, 456));
+ harness.check(propertyName, null, "Property: location");
+
+ // check 'name' property (must be fired)
+ propertyName = null;
+ comp.setName("Obelix");
+ harness.check(propertyName, "name", "Property: name");
+
+ // check 'size' property (must not be fired)
+ propertyName = null;
+ comp.setSize(new Dimension(987, 654));
+ harness.check(propertyName, null, "Property: size");
+
+ // check 'visible' property (must not be fired)
+ propertyName = null;
+ comp.setVisible(true);
+ comp.setVisible(false);
+ harness.check(propertyName, null, "Property: visible");
+
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/properties14.java b/gnu/testlet/java/awt/Component/properties14.java
new file mode 100644
index 00000000..67021e00
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/properties14.java
@@ -0,0 +1,84 @@
+// Tags: GUI JDK1.4
+
+// Copyright (C) 2005 Red Hat
+
+// 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.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.beans.*;
+
+
+/**
+ * Check if bound properties are firing PropertyChangeEvents and
+ * simple properties not.
+ *
+ * @author Roman Kennke (roman@ontographics.com)
+ */
+public class properties14 implements Testlet
+{
+
+ /**
+ * stores the name of a fired property or <code>null</code> of none has
+ * been fired.
+ */
+ private String propertyName;
+
+ /**
+ * Non abstract subclass of Component to allow instatiation.
+ */
+ public class TestComponent extends Component {
+ }
+
+ public void test (TestHarness harness)
+ {
+ // prepare test component
+ Component comp = new TestComponent();
+ comp.addPropertyChangeListener(new PropertyChangeListener() {
+ // sets <code>propertyName</code> when called
+ public void propertyChange(PropertyChangeEvent ev) {
+ propertyName = ev.getPropertyName();
+ }
+ });
+
+
+ // check 'focusable' property
+ propertyName = null;
+ comp.setFocusable(false);
+ comp.setFocusable(true);
+ harness.check(propertyName, "focusable", "Property: focusable");
+
+ // check 'focusTraversalKeysEnabled' property
+ propertyName = null;
+ comp.setFocusTraversalKeysEnabled(false);
+ comp.setFocusTraversalKeysEnabled(true);
+ harness.check(propertyName, "focusTraversalKeysEnabled",
+ "Property: focusTraversalKeysEnabled");
+
+ // check 'ignoreRepaint' property
+ propertyName = null;
+ comp.setIgnoreRepaint(false);
+ comp.setIgnoreRepaint(true);
+ harness.check(propertyName, null, "Property: ignoreRepaint");
+
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/repaint.java b/gnu/testlet/java/awt/Component/repaint.java
new file mode 100644
index 00000000..9203d6fd
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/repaint.java
@@ -0,0 +1,136 @@
+/* repaint.java -- Tests repaint() methods in Component
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests how the repaint() methods call each other.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class repaint implements Testlet
+{
+ /**
+ * Indicate if one of the repaint methods got called.
+ */
+ boolean repaint1Called; // The no-arg version.
+ boolean repaint2Called; // The repaint(long) version.
+ boolean repaint3Called; // The repaint(int,int,int,int) version.
+ boolean repaint4Called; // The repaint(long,int,int,int,int) version.
+
+ /**
+ * Overridden to check which repaint() method gets called when.
+ */
+ class TestComponent extends Component
+ {
+ public void repaint()
+ {
+ super.repaint();
+ repaint1Called = true;
+ }
+ public void repaint(long tm)
+ {
+ super.repaint(tm);
+ repaint2Called = true;
+ }
+ public void repaint(int x, int y, int w, int h)
+ {
+ super.repaint(x, y, w, h);
+ repaint3Called = true;
+ }
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ super.repaint(tm, x, y, w, h);
+ repaint4Called = true;
+ }
+ }
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testNotShowing(harness);
+ }
+
+ /**
+ * Tests how the repaint() methods call each other when the component is not
+ * showing.
+ *
+ * @param h the test harness to use
+ */
+ private void testNotShowing(TestHarness h)
+ {
+ h.checkPoint("testNotShowing");
+ TestComponent c = new TestComponent();
+ // The component must not be showing at this point.
+ h.check(!c.isShowing());
+
+ repaint1Called = false;
+ repaint2Called = false;
+ repaint3Called = false;
+ repaint4Called = false;
+ c.repaint();
+ h.check(repaint1Called);
+ h.check(! repaint2Called);
+ h.check(! repaint3Called);
+ h.check(repaint4Called);
+
+ repaint1Called = false;
+ repaint2Called = false;
+ repaint3Called = false;
+ repaint4Called = false;
+ c.repaint(100);
+ h.check(! repaint1Called);
+ h.check(repaint2Called);
+ h.check(! repaint3Called);
+ h.check(repaint4Called);
+
+ repaint1Called = false;
+ repaint2Called = false;
+ repaint3Called = false;
+ repaint4Called = false;
+ c.repaint(0, 0, 1, 2);
+ h.check(! repaint1Called);
+ h.check(! repaint2Called);
+ h.check(repaint3Called);
+ h.check(repaint4Called);
+
+ repaint1Called = false;
+ repaint2Called = false;
+ repaint3Called = false;
+ repaint4Called = false;
+ c.repaint(100, 0, 0, 1, 2);
+ h.check(! repaint1Called);
+ h.check(! repaint2Called);
+ h.check(! repaint3Called);
+ h.check(repaint4Called);
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/requestFocus.java b/gnu/testlet/java/awt/Component/requestFocus.java
new file mode 100644
index 00000000..dd7451be
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/requestFocus.java
@@ -0,0 +1,51 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005 Red Hat
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Frame;
+
+public class requestFocus implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Frame jf = new Frame();
+ jf.show();
+ try
+ {
+ jf.requestFocus();
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("Call to requestFocus generated a NPE");
+ }
+ finally
+ {
+ jf.dispose();
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/setComponentOrientation.java b/gnu/testlet/java/awt/Component/setComponentOrientation.java
new file mode 100644
index 00000000..54d35b6a
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setComponentOrientation.java
@@ -0,0 +1,76 @@
+/* setComponentOrientation.java -- some checks for the
+ setComponentOrientation() method in the Component class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.ComponentOrientation;
+import java.awt.Label;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class setComponentOrientation implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Component c = new Label("ABC");
+ harness.check(c.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ c.addPropertyChangeListener(this);
+ c.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(c.getComponentOrientation(), ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), c);
+ harness.check(e.getPropertyName(), "componentOrientation");
+ harness.check(e.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ // setting the same value again generates no event
+ events.clear();
+ c.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(events.size(), 0);
+
+ // try null
+ c.setComponentOrientation(null);
+ harness.check(c.getComponentOrientation(), null);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), c);
+ harness.check(e.getPropertyName(), "componentOrientation");
+ harness.check(e.getOldValue(), ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(e.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/setFont.java b/gnu/testlet/java/awt/Component/setFont.java
new file mode 100644
index 00000000..12d29a16
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setFont.java
@@ -0,0 +1,92 @@
+/* setFont.java -- Checks how setFont() is supposed to work
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.Component;
+
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setFont implements Testlet
+{
+
+ private boolean invalidated;
+
+ private class TestComponent extends Component
+ {
+ public void invalidate()
+ {
+ super.invalidate();
+ invalidated = true;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInvalidate(harness);
+ }
+
+ private void testInvalidate(TestHarness h)
+ {
+ h.checkPoint("invalidate");
+ TestComponent c = new TestComponent();
+
+ // Test not showing.
+ // Valid components get invalidated.
+ c.validate();
+ h.check(! c.isValid());
+ invalidated = false;
+ c.setFont(new Font("Dialog", Font.BOLD, 12));
+ h.check(invalidated);
+
+ // Invalid components don't get invalidated.
+ h.check(!c.isValid());
+ invalidated = false;
+ c.setFont(new Font("Dialog", Font.BOLD, 12));
+ h.check(! invalidated);
+
+ // Test showing.
+ Frame f = new Frame();
+ f.add(c);
+ f.setSize(100, 100);
+ f.setVisible(true);
+
+ h.check(c.isShowing());
+ // Valid components get invalidated.
+ c.validate();
+ h.check(c.isValid());
+ invalidated = false;
+ c.setFont(new Font("Dialog", Font.BOLD, 12));
+ h.check(invalidated);
+
+ // Invalid components don't get invalidated.
+ h.check(!c.isValid());
+ invalidated = false;
+ c.setFont(new Font("Dialog", Font.BOLD, 12));
+ h.check(! invalidated);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/setMaximumSize.java b/gnu/testlet/java/awt/Component/setMaximumSize.java
new file mode 100644
index 00000000..d7043391
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setMaximumSize.java
@@ -0,0 +1,87 @@
+/* setMaximumSize.java -- some checks for the setMaximumSize() method in the
+ Component class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class setMaximumSize implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Component c = new Button("ABC");
+ harness.check(c.getMaximumSize(), new Dimension(32767, 32767));
+ harness.check(c.isMaximumSizeSet(), false);
+ c.addPropertyChangeListener(this);
+ c.setMaximumSize(new Dimension(10, 20));
+ harness.check(c.getMaximumSize(), new Dimension(10, 20));
+ harness.check(c.isMaximumSizeSet(), true);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "maximumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), new Dimension(10, 20));
+
+ events.clear();
+ c.setMaximumSize(new Dimension(30, 40));
+ harness.check(c.getMaximumSize(), new Dimension(30, 40));
+ harness.check(c.isMaximumSizeSet(), true);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "maximumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(10, 20));
+ harness.check(e.getNewValue(), new Dimension(30, 40));
+
+ events.clear();
+ c.setMaximumSize(null);
+ harness.check(c.getMaximumSize(), new Dimension(32767, 32767));
+ harness.check(c.isMaximumSizeSet(), false);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "maximumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(30, 40));
+ harness.check(e.getNewValue(), null);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/setMinimumSize.java b/gnu/testlet/java/awt/Component/setMinimumSize.java
new file mode 100644
index 00000000..7b244bb7
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setMinimumSize.java
@@ -0,0 +1,86 @@
+/* setMinimumSize.java -- some checks for the setMinimumSize() method in the
+ Component class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class setMinimumSize implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Component c = new Button("ABC");
+ harness.check(c.getMinimumSize(), new Dimension(0, 0));
+ harness.check(c.isMinimumSizeSet(), false);
+ c.addPropertyChangeListener(this);
+ c.setMinimumSize(new Dimension(10, 20));
+ harness.check(c.getMinimumSize(), new Dimension(10, 20));
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "minimumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), new Dimension(10, 20));
+
+ events.clear();
+ c.setMinimumSize(new Dimension(30, 40));
+ harness.check(c.getMinimumSize(), new Dimension(30, 40));
+ harness.check(c.isMinimumSizeSet(), true);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "minimumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(10, 20));
+ harness.check(e.getNewValue(), new Dimension(30, 40));
+
+ events.clear();
+ c.setMinimumSize(null);
+ harness.check(c.getMinimumSize(), new Dimension(0, 0));
+ harness.check(c.isMinimumSizeSet(), false);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "minimumSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(30, 40));
+ harness.check(e.getNewValue(), null);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/setName.java b/gnu/testlet/java/awt/Component/setName.java
new file mode 100644
index 00000000..8655b16f
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setName.java
@@ -0,0 +1,67 @@
+/* setName.java -- some checks for the setName() method in the Component class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.Label;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class setName implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Component c = new Label("ABC");
+ harness.check(c.getName() != null);
+ c.addPropertyChangeListener(this);
+ c.setName("XYZ");
+ harness.check(c.getName(), "XYZ");
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), c);
+ harness.check(e0.getPropertyName(), "name");
+ harness.check(e0.getOldValue() != null);
+ harness.check(e0.getNewValue(), "XYZ");
+
+ // setting the same value generates no event
+ events.clear();
+ c.setName("XYZ");
+ harness.check(events.size(), 0);
+
+ // try null
+ c.setName(null);
+ harness.check(c.getName(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Component/setPreferredSize.java b/gnu/testlet/java/awt/Component/setPreferredSize.java
new file mode 100644
index 00000000..7eb62b35
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/setPreferredSize.java
@@ -0,0 +1,86 @@
+/* setPreferredSize.java -- some checks for the setPreferredSize() method in the
+ Component class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class setPreferredSize implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Component c = new Button("ABC");
+ harness.check(c.getPreferredSize(), new Dimension(0, 0));
+ harness.check(c.isPreferredSizeSet(), false);
+ c.addPropertyChangeListener(this);
+ c.setPreferredSize(new Dimension(10, 20));
+ harness.check(c.getPreferredSize(), new Dimension(10, 20));
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "preferredSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), new Dimension(10, 20));
+
+ events.clear();
+ c.setPreferredSize(new Dimension(30, 40));
+ harness.check(c.getPreferredSize(), new Dimension(30, 40));
+ harness.check(c.isPreferredSizeSet(), true);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "preferredSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(10, 20));
+ harness.check(e.getNewValue(), new Dimension(30, 40));
+
+ events.clear();
+ c.setPreferredSize(null);
+ harness.check(c.getPreferredSize(), new Dimension(0, 0));
+ harness.check(c.isPreferredSizeSet(), false);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "preferredSize");
+ harness.check(e.getSource(), c);
+ harness.check(e.getOldValue(), new Dimension(30, 40));
+ harness.check(e.getNewValue(), null);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Component/update.java b/gnu/testlet/java/awt/Component/update.java
new file mode 100644
index 00000000..a7f913b6
--- /dev/null
+++ b/gnu/testlet/java/awt/Component/update.java
@@ -0,0 +1,176 @@
+// Tags: GUI JDK1.2
+
+// Copyright (C) 2005 Roman Kennke
+
+// 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.java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import javax.swing.*;
+
+/**
+ * Checks if the update method in Component is called correctly. The
+ * update method is only called on lightweight and top-level components.
+ *
+ * @author Roman Kennke (roman@kennke.org)
+ */
+public class update implements Testlet
+{
+ /**
+ * The testclasses defined in this test append a unique character to
+ * this teststring. This way we can check which component's update and paint
+ * method gets called and in which order.
+ */
+ StringBuffer test = new StringBuffer();
+
+ // We define some classes here, they all override update() to append
+ // a unique character to the teststring. At the end we test if the
+ // teststring is correct.
+ class TopLevel extends Frame
+ {
+ public void update(Graphics g)
+ {
+ test.append('1');
+ super.update(g);
+ }
+ public void paint(Graphics g)
+ {
+ test.append('2');
+ super.paint(g);
+ }
+ }
+
+ class LightWeight extends Component
+ {
+ public void update(Graphics g)
+ {
+ test.append('3');
+ super.update(g);
+ }
+ public void paint(Graphics g)
+ {
+ test.append('4');
+ super.paint(g);
+ }
+ public boolean isLightweight()
+ {
+ return true;
+ }
+ }
+
+ class HeavyWeight extends Label
+ {
+ public void update(Graphics g)
+ {
+ test.append('5');
+ super.update(g);
+ }
+ public void paint(Graphics g)
+ {
+ test.append('6');
+ super.paint(g);
+ }
+ public boolean isLightweight()
+ {
+ return false;
+ }
+ }
+
+ class LightContainer extends Container
+ {
+ public void update(Graphics g)
+ {
+ test.append('7');
+ super.update(g);
+ }
+ public void paint(Graphics g)
+ {
+ test.append('8');
+ super.paint(g);
+ }
+ }
+
+ class HeavyContainer extends Label
+ {
+ public void update(Graphics g)
+ {
+ test.append('a');
+ super.update(g);
+ }
+ public void paint(Graphics g)
+ {
+ test.append('b');
+ super.paint(g);
+ }
+ }
+
+ /**
+ * This Graphics subclass is used to check if the background is cleared
+ * in the update method.
+ */
+ class TestGraphics extends DebugGraphics
+ {
+ TestGraphics(Graphics g)
+ {
+ super(g);
+ }
+ public void clearRect(int x, int y, int w, int h)
+ {
+ test.append('9');
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ TopLevel t = new TopLevel();
+ t.setLayout(new GridLayout());
+
+ HeavyWeight h = new HeavyWeight();
+ t.add(h);
+ LightWeight l = new LightWeight();
+ t.add(l);
+ LightContainer c = new LightContainer();
+ t.add(c);
+ HeavyContainer c2 = new HeavyContainer();
+ t.add(c2);
+
+ t.setSize(200, 200);
+ t.setVisible(true);
+ Graphics g = new TestGraphics(t.getGraphics());
+
+ // Wait until frame has become visible.
+ try
+ {
+ Thread.sleep(3000);
+ }
+ catch (Exception ex)
+ {
+ }
+
+ test = new StringBuffer();
+ t.update(g);
+ harness.check(test.toString(), "19284", test.toString());
+ t.setVisible(false);
+ t.dispose();
+
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/CVS/Entries b/gnu/testlet/java/awt/Container/CVS/Entries
new file mode 100644
index 00000000..7797fdfa
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/CVS/Entries
@@ -0,0 +1,13 @@
+/DisabledEventQueue.java/1.1/Wed Nov 2 15:16:38 2005//
+/LightweightContainer.java/1.8/Mon Dec 5 15:46:04 2011//
+/PR34078.java/1.1/Sun Dec 23 21:37:28 2007//
+/TestLayout.java/1.1/Tue Nov 8 13:23:23 2005//
+/addImpl.java/1.6/Wed Dec 14 15:41:39 2011//
+/applyComponentOrientation.java/1.1/Tue Jun 27 09:38:07 2006//
+/getAlignmentX.java/1.1/Tue Nov 8 13:23:23 2005//
+/getAlignmentY.java/1.1/Tue Nov 8 13:23:23 2005//
+/getComponentAt.java/1.2/Mon Oct 3 09:06:26 2011//
+/getListeners.java/1.2/Wed Dec 27 15:48:18 2006//
+/getPreferredSize.java/1.1/Mon Jan 30 21:25:54 2006//
+/setLayout.java/1.2/Mon Oct 3 09:06:26 2011//
+D
diff --git a/gnu/testlet/java/awt/Container/CVS/Repository b/gnu/testlet/java/awt/Container/CVS/Repository
new file mode 100644
index 00000000..e31f8afe
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Container
diff --git a/gnu/testlet/java/awt/Container/CVS/Root b/gnu/testlet/java/awt/Container/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Container/DisabledEventQueue.java b/gnu/testlet/java/awt/Container/DisabledEventQueue.java
new file mode 100644
index 00000000..1fc6de1e
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/DisabledEventQueue.java
@@ -0,0 +1,49 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Container;
+
+import java.awt.AWTEvent;
+import java.awt.EventQueue;
+
+/**
+ * A special EventQueue used for testing purposes. It completely disables
+ * dispatching of events, so the behaviour of the RepaintManager can be
+ * examined more closely.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class DisabledEventQueue extends EventQueue
+{
+ /**
+ * Overridden to do nothing.
+ */
+ protected void dispatchEvent(AWTEvent ev)
+ {
+ // Do nothing.
+ }
+
+ /**
+ * Overridden to do nothing.
+ */
+ public void postEvent(AWTEvent ev)
+ {
+ // Do nothing.
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/LightweightContainer.java b/gnu/testlet/java/awt/Container/LightweightContainer.java
new file mode 100644
index 00000000..a391b83a
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/LightweightContainer.java
@@ -0,0 +1,224 @@
+/* LightweightContainer.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.4
+
+package gnu.testlet.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+
+public class LightweightContainer implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ testLoc(harness);
+ testLoc2(harness);
+ testWindow(harness);
+ }
+
+ // Tests a Window containing a Frame and a Lightweight Container
+ public void testWindow(TestHarness harness)
+ {
+ Robot r = harness.createRobot();
+
+ Frame f = new Frame();
+ testContainer tc = new testContainer();
+ f.setSize(500, 500);
+ tc.setBounds(0, 0, 500, 500);
+ f.add(tc);
+ f.show();
+
+ // There is a delay to avoid any race conditions.
+ r.waitForIdle();
+ r.delay(1000);
+
+ // bounds of red rectangle (1 pixel wide border)
+ Rectangle bounds = tc.getBounds();
+ Point loc = f.getLocationOnScreen();
+ Insets i = f.getInsets();
+ bounds.x = loc.x + i.left;
+ bounds.y = loc.y + i.top;
+ // bounds of blue rectangle inside red rectangle
+ Rectangle bounds2 = new Rectangle(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2);
+ LocationTests.checkRectangleOuterColors(harness, r, bounds2, Color.red, true);
+ LocationTests.checkRectangleCornerColors(harness, r, bounds2, Color.red, false);
+
+ // There is a delay so the tester can see the result.
+ r.waitForIdle();
+ r.delay(3000);
+
+ // frame is no longer needed and should be disposed
+ f.dispose();
+ }
+
+ // Tests the location of a Lightweight Container containing
+ // a heavyweight component, which is also in a heavyweight
+ public void testLoc(TestHarness harness)
+ {
+ Robot r = harness.createRobot();
+ Color bgHW_c = Color.red;
+ Color fgHW_c = Color.blue;
+
+ testPanel bgHW = new testPanel(bgHW_c);
+ Container fgLW = new Container();
+ testPanel fgHW = new testPanel(fgHW_c);
+
+ Frame f = new Frame();
+
+ int bgHW_x = 0;
+ int bgHW_y = 0;
+ int bgHW_w = 500;
+ int bgHW_h = 500;
+
+ int fgLW_x = 50;
+ int fgLW_y = 60;
+ int fgLW_w = 200;
+ int fgLW_h = 200;
+
+ int fgHW_x = 70;
+ int fgHW_y = 40;
+ int fgHW_w = 100;
+ int fgHW_h = 100;
+
+ f.setSize(500, 500);
+ bgHW.setBounds(bgHW_x, bgHW_y, bgHW_w, bgHW_h);
+ fgLW.setBounds(fgLW_x, fgLW_y, fgLW_w, fgLW_h);
+ fgHW.setBounds(fgHW_x, fgHW_y, fgHW_w, fgHW_h);
+ f.add(bgHW);
+ bgHW.add(fgLW);
+ fgLW.add(fgHW);
+ f.show();
+
+ // There is a delay to avoid any race conditions.
+ r.waitForIdle();
+ r.delay(1000);
+ Insets i = f.getInsets();
+
+ // check the two pixels adjacent to each corner of the fgHW
+ Point p = f.getLocationOnScreen();
+ fgHW_x = p.x + i.left + fgHW_x + fgLW_x;
+ fgHW_y = p.y + i.top + fgHW_y + fgLW_y;
+ Rectangle b = new Rectangle(fgHW_x, fgHW_y, fgHW_w, fgHW_h);
+ LocationTests.checkRectangleOuterColors(harness, r, b, bgHW_c, true);
+
+ // check the fgHW's corner pixels.
+ LocationTests.checkRectangleCornerColors(harness, r, b, fgHW_c, true);
+ LocationTests.checkRectangleCornerColors(harness, r, b, bgHW_c, false);
+
+ // check the two pixels adjacent to each corner of the fgLW
+ p = f.getLocationOnScreen();
+ fgLW_x = p.x + i.left + fgLW_x;
+ fgLW_y = p.y + i.top + fgLW_y;
+ LocationTests.checkRectangleOuterColors(harness, r, new Rectangle(fgLW_x, fgLW_y, fgLW_w, fgLW_h), bgHW_c, true);
+
+ // There is a delay so the tester can see the result.
+ r.waitForIdle();
+ r.delay(3000);
+
+ // frame is no longer needed and should be disposed
+ f.dispose();
+ }
+
+ // Tests the location of a Lightweight Container next to
+ // a heavyweight panel, both in a frame.
+ public void testLoc2(TestHarness harness)
+ {
+ Robot r = harness.createRobot();
+ Frame f = new Frame();
+ f.setLayout(null);
+ f.setBackground(Color.green);
+ testContainer tc = new testContainer();
+ f.add(tc);
+ f.setSize(500, 500);
+ tc.setBounds(100, 0, 200, 200);
+ testPanel p = new testPanel(Color.yellow);
+ tc.add(p);
+ p.setBounds(10, 10, 50, 50);
+ f.show();
+
+ // There is a delay to avoid any race conditions.
+ r.waitForIdle();
+ r.delay(1000);
+
+ Point pt = p.getLocationOnScreen();
+ tc.move(150, 50);
+
+ r.delay(1000);
+
+ Point pt2 = p.getLocationOnScreen();
+ harness.check(pt2.x, (pt.x + 50));
+ harness.check(pt2.y, (pt.y + 50));
+
+ // There is a delay so the tester can see the result.
+ r.waitForIdle();
+ r.delay(3000);
+
+ // frame is no longer needed and should be disposed
+ f.dispose();
+ }
+
+ class testPanel extends Panel
+ {
+ Color c;
+
+ public testPanel(Color c)
+ {
+ super(null);
+ this.c = c;
+ }
+
+ public void paint(Graphics g)
+ {
+ Rectangle bounds = new Rectangle(0,
+ 0,
+ this.getSize().width,
+ this.getSize().height);
+ g.setColor(c);
+ g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
+ }
+ }
+
+ class testContainer extends Container
+ {
+
+ public testContainer()
+ {
+ super();
+ }
+
+ public void paint(Graphics g)
+ {
+ Rectangle bounds = new Rectangle(0,
+ 0,
+ this.getSize().width,
+ this.getSize().height);
+ g.setColor(Color.red);
+ g.drawRect(bounds.x, bounds.y, bounds.width - 1, bounds.height - 1);
+ g.setColor(Color.blue);
+ g.fillRect(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/PR34078.java b/gnu/testlet/java/awt/Container/PR34078.java
new file mode 100644
index 00000000..22f29e44
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/PR34078.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2007 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Container;
+
+/**
+ * This checks for the bug found in PR34078, namely that
+ * the container itself is not classed as its own ancestor.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR34078
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Container c = new Container();
+ harness.check(c.isAncestorOf(c), false, "Container is not its own ancestor");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Container/TestLayout.java b/gnu/testlet/java/awt/Container/TestLayout.java
new file mode 100644
index 00000000..ee20eb9c
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/TestLayout.java
@@ -0,0 +1,78 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Container;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.LayoutManager2;
+
+public class TestLayout implements LayoutManager2
+{
+
+ float alignmentX = 0.0F;
+ float alignmentY = 0.0F;
+
+ public void addLayoutComponent(Component component, Object constraints)
+ {
+ }
+
+ public Dimension maximumLayoutSize(Container target)
+ {
+ return null;
+ }
+
+ public float getLayoutAlignmentX(Container target)
+ {
+ return alignmentX;
+ }
+
+ public float getLayoutAlignmentY(Container target)
+ {
+ return alignmentY;
+ }
+
+ public void invalidateLayout(Container target)
+ {
+ }
+
+ public void addLayoutComponent(String name, Component component)
+ {
+ }
+
+ public void removeLayoutComponent(Component component)
+ {
+ }
+
+ public Dimension preferredLayoutSize(Container parent)
+ {
+ return null;
+ }
+
+ public Dimension minimumLayoutSize(Container parent)
+ {
+ return null;
+ }
+
+ public void layoutContainer(Container parent)
+ {
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Container/addImpl.java b/gnu/testlet/java/awt/Container/addImpl.java
new file mode 100644
index 00000000..9b83e968
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/addImpl.java
@@ -0,0 +1,249 @@
+// Tags: JDK1.5
+// Uses: DisabledEventQueue
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.LayoutManager;
+import java.awt.Panel;
+import java.awt.Toolkit;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+
+/**
+ * This checks tests if the addImpl method notfies container listeners when
+ * a container is not showing and if the notification is sent over the event
+ * queue or delivered directly. The test shows that the event is also sent when
+ * the container is not showing and that the event is delivered directly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class addImpl implements Testlet
+{
+
+ /**
+ * A container listener for test.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestContainerListener implements ContainerListener
+ {
+
+ /**
+ * Receives notification when a component was added to the container.
+ *
+ * @param event the container event
+ */
+ public void componentAdded(ContainerEvent event)
+ {
+ componentAddedCalled = true;
+ }
+
+ /**
+ * Receives notification when a component was removed from the container.
+ *
+ * @param event the container event
+ */
+ public void componentRemoved(ContainerEvent event)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ /**
+ * True when the componentAdded method in the container listener was called.
+ */
+ boolean componentAddedCalled;
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // We disable the event queue so we can check if this event is delivered
+ // via the event queue or not.
+ Toolkit.getDefaultToolkit().getSystemEventQueue().push(new DisabledEventQueue());
+
+ final TestHarness transfer = harness;
+ Container c = new Container()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+ c.addContainerListener(new TestContainerListener());
+ // Pre-condition check.
+ harness.check(c.isShowing(), false);
+ componentAddedCalled = false;
+
+ Component a = new Component()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ Component b = new Component()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ c.add(a);
+ harness.check(componentAddedCalled, true);
+
+ // check that LayoutManager.addLayoutComponent() is called
+ // with non-null name.
+ Container two = new Container()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ two.setLayout(new LayoutManager()
+ {
+ TestHarness harness = transfer;
+
+ Dimension size = new Dimension();
+
+ public void removeLayoutComponent(Component comp)
+ {
+ }
+
+ public java.awt.Dimension preferredLayoutSize(Container cont)
+ {
+ return size;
+ }
+
+ public Dimension minimumLayoutSize(Container cont)
+ {
+ return size;
+ }
+
+ public void layoutContainer(Container container)
+ {
+ }
+
+ public void addLayoutComponent(String name, Component comp)
+ {
+ boolean pass = (name != null);
+ harness.check(pass, true);
+ }
+ });
+ harness.check(two.isShowing(), false);
+ componentAddedCalled = false;
+ two.addContainerListener(new TestContainerListener());
+ two.add(b);
+ harness.check(componentAddedCalled, true);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ final TestHarness transfer = harness;
+ Frame f = new Frame()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ Panel a = new Panel()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ Label l = new Label("!!!!!")
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ Container c = new Container()
+ {
+ TestHarness harness = transfer;
+
+ public void repaint(long tm, int x, int y, int w, int h)
+ {
+ harness.fail("repaint has been called.");
+ }
+ };
+
+ a.add(c);
+ a.add(l);
+ c.setSize(100,100);
+ f.add(a);
+ f.pack();
+ f.show();
+
+ harness.check(a.isShowing(), true);
+ harness.check(c.isShowing(), true);
+ harness.check(l.isShowing(), true);
+ harness.check(f.isShowing(), true);
+ harness.check(c.isLightweight(), true);
+ harness.check(a.isLightweight(), false);
+ harness.check(l.isLightweight(), false);
+
+ // clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/applyComponentOrientation.java b/gnu/testlet/java/awt/Container/applyComponentOrientation.java
new file mode 100644
index 00000000..1a8ea062
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/applyComponentOrientation.java
@@ -0,0 +1,138 @@
+/* applyComponentOrientation.java -- some checks for the
+ applyComponentOrientation() method in the Container class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Label;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+public class applyComponentOrientation
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Container c = new Container();
+ Label l1 = new Label("ABC");
+ Container c1 = new Container();
+ Label l2 = new Label("DEF");
+ Container c2 = new Container();
+ Label l3 = new Label("GHI");
+ c.add(l1);
+ c.add(c1);
+ c1.add(l2);
+ c1.add(c2);
+ c2.add(l3);
+ harness.check(c.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ harness.check(c1.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ harness.check(c2.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ harness.check(l1.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ harness.check(l2.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+ harness.check(l3.getComponentOrientation(), ComponentOrientation.UNKNOWN);
+
+ c.addPropertyChangeListener(this);
+ c1.addPropertyChangeListener(this);
+ c2.addPropertyChangeListener(this);
+ l1.addPropertyChangeListener(this);
+ l2.addPropertyChangeListener(this);
+ l3.addPropertyChangeListener(this);
+ c.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(c.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(c1.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(c2.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(l1.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(l2.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+ harness.check(l3.getComponentOrientation(),
+ ComponentOrientation.LEFT_TO_RIGHT);
+
+ harness.check(events.size(), 6);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), c);
+ harness.check(e0.getPropertyName(), "componentOrientation");
+ harness.check(e0.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e0.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getSource(), l1);
+ harness.check(e1.getPropertyName(), "componentOrientation");
+ harness.check(e1.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e1.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(2);
+ harness.check(e2.getSource(), c1);
+ harness.check(e2.getPropertyName(), "componentOrientation");
+ harness.check(e2.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e2.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ PropertyChangeEvent e3 = (PropertyChangeEvent) events.get(3);
+ harness.check(e3.getSource(), l2);
+ harness.check(e3.getPropertyName(), "componentOrientation");
+ harness.check(e3.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e3.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ PropertyChangeEvent e4 = (PropertyChangeEvent) events.get(4);
+ harness.check(e4.getSource(), c2);
+ harness.check(e4.getPropertyName(), "componentOrientation");
+ harness.check(e4.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e4.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ PropertyChangeEvent e5 = (PropertyChangeEvent) events.get(5);
+ harness.check(e5.getSource(), l3);
+ harness.check(e5.getPropertyName(), "componentOrientation");
+ harness.check(e5.getOldValue(), ComponentOrientation.UNKNOWN);
+ harness.check(e5.getNewValue(), ComponentOrientation.LEFT_TO_RIGHT);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ c.applyComponentOrientation(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Container/getAlignmentX.java b/gnu/testlet/java/awt/Container/getAlignmentX.java
new file mode 100644
index 00000000..ee162dc9
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/getAlignmentX.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.1
+// Uses: TestLayout
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Container;
+
+import java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the getAlignmentX property works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAlignmentX implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithLayout(harness);
+ }
+
+ /**
+ * Checks if the method refers to the layout managers layoutAlignmentX
+ * property.
+ *
+ * @param harness the test harness to use
+ */
+ private void testWithLayout(TestHarness harness)
+ {
+ Container c = new Container();
+ TestLayout l = new TestLayout();
+ c.setLayout(l);
+ l.alignmentX = 0.3F;
+ harness.check(c.getAlignmentX(), 0.3F);
+ l.alignmentX = 0.6F;
+ harness.check(c.getAlignmentX(), 0.6F);
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/getAlignmentY.java b/gnu/testlet/java/awt/Container/getAlignmentY.java
new file mode 100644
index 00000000..a2547257
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/getAlignmentY.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.1
+// Uses: TestLayout
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.java.awt.Container;
+
+import java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the getAlignmentY property works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAlignmentY implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithLayout(harness);
+ }
+
+ /**
+ * Checks if the method refers to the layout managers layoutAlignmentY
+ * property.
+ *
+ * @param harness the test harness to use
+ */
+ private void testWithLayout(TestHarness harness)
+ {
+ Container c = new Container();
+ TestLayout l = new TestLayout();
+ c.setLayout(l);
+ l.alignmentY = 0.3F;
+ harness.check(c.getAlignmentY(), 0.3F);
+ l.alignmentY = 0.6F;
+ harness.check(c.getAlignmentY(), 0.6F);
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/getComponentAt.java b/gnu/testlet/java/awt/Container/getComponentAt.java
new file mode 100644
index 00000000..7bbcca65
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/getComponentAt.java
@@ -0,0 +1,69 @@
+/* getComponentAt.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Frame;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.TextArea;
+
+public class getComponentAt implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ Frame f = new Frame();
+ List l = new List(10);
+ TextArea t = new TextArea(10, 10);
+ f.setSize(300, 300);
+ t.setBounds(10, 10, 100, 100);
+ l.setBounds(0, 0, 100, 100);
+
+ t.setVisible(true);
+ l.setVisible(false);
+ f.add(l);
+ f.add(t);
+ f.show();
+
+ Robot r = harness.createRobot();
+ r.waitForIdle();
+ r.delay(1000);
+
+ Point po = l.getLocation();
+ harness.check(t.isVisible(), true);
+ harness.check(f.isVisible(), true);
+ harness.check(l.isVisible(), false);
+ harness.check(f.getComponentAt(po.x, po.y) == l);
+
+ // time to clean up
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/getListeners.java b/gnu/testlet/java/awt/Container/getListeners.java
new file mode 100644
index 00000000..8380ae2e
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/getListeners.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Container;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+import java.awt.event.FocusListener;
+import java.util.EventListener;
+
+/**
+ * Some tests for the <code>getListeners(Class)</code> method in the
+ * {@link Component} class.
+ */
+public class getListeners implements Testlet, ContainerListener {
+
+ class TestContainer extends Container
+ {
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestContainer c = new TestContainer();
+ c.addContainerListener(this);
+ EventListener[] listeners = c.getListeners(ContainerListener.class);
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ // try a listener type that isn't registered
+ listeners = c.getListeners(FocusListener.class);
+ harness.check(listeners.length, 0);
+ c.removeContainerListener(this);
+ listeners = c.getListeners(ContainerListener.class);
+ harness.check(listeners.length, 0);
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ listeners = c.getListeners(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ /* Doesn't compile with 1.5
+ // try a class that isn't a listener
+ pass = false;
+ try
+ {
+ listeners = c.getListeners(Integer.class);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+ public void componentAdded(ContainerEvent e)
+ {
+ // ignored
+ }
+
+ public void componentRemoved(ContainerEvent e)
+ {
+ // ignored
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Container/getPreferredSize.java b/gnu/testlet/java/awt/Container/getPreferredSize.java
new file mode 100644
index 00000000..901f4102
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/getPreferredSize.java
@@ -0,0 +1,139 @@
+/* getPreferredSize.java -- Tests the getPreferredSize() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.Container;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.LayoutManager2;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the getPreferredSize method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Indicates if invalideLayout has been called on the layout manager or
+ * not.
+ */
+ boolean invalidateCalled;
+
+ /**
+ * A layout manager used for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestLM implements LayoutManager2
+ {
+
+ public void addLayoutComponent(Component component, Object constraints)
+ {
+ // Nothing to do here.
+ }
+
+ public Dimension maximumLayoutSize(Container target)
+ {
+ // Nothing to do here.
+ return null;
+ }
+
+ public float getLayoutAlignmentX(Container target)
+ {
+ // Nothing to do here.
+ return 0;
+ }
+
+ public float getLayoutAlignmentY(Container target)
+ {
+ // Nothing to do here.
+ return 0;
+ }
+
+ public void invalidateLayout(Container target)
+ {
+ invalidateCalled = true;
+ }
+
+ public void addLayoutComponent(String name, Component component)
+ {
+ // Nothing to do here.
+ }
+
+ public void removeLayoutComponent(Component component)
+ {
+ // Nothing to do here.
+ }
+
+ public Dimension preferredLayoutSize(Container parent)
+ {
+ return new Dimension(100, 100);
+ }
+
+ public Dimension minimumLayoutSize(Container parent)
+ {
+ // Nothing to do here.
+ return null;
+ }
+
+ public void layoutContainer(Container parent)
+ {
+ // Nothing to do here.
+ }
+
+ }
+
+ /**
+ * The entry point into the test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInvalid(harness);
+ }
+
+ /**
+ * Tests if the container should call invalidateLayout() before asking the
+ * preferredSize from a layout manager. The background is that in theory
+ * this could lead to wrong value for preferredSize, when a layout manager
+ * caches the preferredSize.
+ *
+ * @param harness the test harness to use
+ */
+ private void testInvalid(TestHarness harness)
+ {
+ Container c = new Container();
+ LayoutManager2 lm = new TestLM();
+ c.setLayout(lm);
+ c.invalidate();
+ invalidateCalled = false;
+ c.getPreferredSize();
+ c.getPreferredSize();
+ harness.check(invalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/java/awt/Container/setLayout.java b/gnu/testlet/java/awt/Container/setLayout.java
new file mode 100644
index 00000000..6bd65ce9
--- /dev/null
+++ b/gnu/testlet/java/awt/Container/setLayout.java
@@ -0,0 +1,94 @@
+/* setLayout.java -- Checks how setLayout is supposed to work
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.Container;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setLayout implements Testlet
+{
+
+ private boolean invalidated;
+
+ private class TestContainer extends Container
+ {
+ public void invalidate()
+ {
+ super.invalidate();
+ invalidated = true;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInvalidate(harness);
+ }
+
+ private void testInvalidate(TestHarness h)
+ {
+ h.checkPoint("invalidate");
+ TestContainer c = new TestContainer();
+
+ // Test not showing.
+ // Valid components get invalidated.
+ c.validate();
+ h.check(! c.isValid());
+ invalidated = false;
+ c.setLayout(new FlowLayout());
+ h.check(! invalidated);
+
+ // Invalid components don't get invalidated.
+ h.check(!c.isValid());
+ invalidated = false;
+ c.setLayout(new FlowLayout());
+ h.check(! invalidated);
+
+ // Test showing.
+ Frame f = new Frame();
+ f.add(c);
+ f.setSize(100, 100);
+ f.setVisible(true);
+
+ h.check(c.isShowing());
+ // Valid components get invalidated.
+ c.validate();
+ h.check(c.isValid());
+ invalidated = false;
+ c.setLayout(new FlowLayout());
+ h.check(invalidated);
+
+ // Invalid components don't get invalidated.
+ h.check(!c.isValid());
+ invalidated = false;
+ c.setLayout(new FlowLayout());
+ h.check(! invalidated);
+
+ // time to clean up
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Desktop/CVS/Entries b/gnu/testlet/java/awt/Desktop/CVS/Entries
new file mode 100644
index 00000000..eb22edb7
--- /dev/null
+++ b/gnu/testlet/java/awt/Desktop/CVS/Entries
@@ -0,0 +1,2 @@
+/PR34580.java/1.3/Thu Jul 24 17:14:15 2008//
+D
diff --git a/gnu/testlet/java/awt/Desktop/CVS/Repository b/gnu/testlet/java/awt/Desktop/CVS/Repository
new file mode 100644
index 00000000..72ddb750
--- /dev/null
+++ b/gnu/testlet/java/awt/Desktop/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Desktop
diff --git a/gnu/testlet/java/awt/Desktop/CVS/Root b/gnu/testlet/java/awt/Desktop/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Desktop/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Desktop/PR34580.java b/gnu/testlet/java/awt/Desktop/PR34580.java
new file mode 100644
index 00000000..da06059e
--- /dev/null
+++ b/gnu/testlet/java/awt/Desktop/PR34580.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.6
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.awt.Desktop;
+
+import java.awt.Desktop;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This checks for the bug found in PR34580, namely that
+ * isDesktopSupported() is inaccessible.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR34580
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ Method m = Desktop.class.getMethod("isDesktopSupported");
+ m.invoke(null);
+ h.check(true, "isDesktopSupported() accessed successfully.");
+ }
+ catch (IllegalAccessException e)
+ {
+ h.debug(e);
+ h.fail("isDesktopSupported() could not be accessed.");
+ }
+ catch (NoSuchMethodException e)
+ {
+ h.debug(e);
+ h.fail("isDesktopSupported() is not implemented.");
+ }
+ catch (InvocationTargetException e)
+ {
+ h.debug(e);
+ h.fail("isDesktopSupported() threw an exception: " + e);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dialog/CVS/Entries b/gnu/testlet/java/awt/Dialog/CVS/Entries
new file mode 100644
index 00000000..2d7e12f1
--- /dev/null
+++ b/gnu/testlet/java/awt/Dialog/CVS/Entries
@@ -0,0 +1,3 @@
+/defaultProperties.java/1.1/Wed Oct 25 20:20:30 2006//
+/size.java/1.2/Wed Nov 2 16:38:22 2005//
+D
diff --git a/gnu/testlet/java/awt/Dialog/CVS/Repository b/gnu/testlet/java/awt/Dialog/CVS/Repository
new file mode 100644
index 00000000..59b96ed6
--- /dev/null
+++ b/gnu/testlet/java/awt/Dialog/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Dialog
diff --git a/gnu/testlet/java/awt/Dialog/CVS/Root b/gnu/testlet/java/awt/Dialog/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Dialog/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Dialog/defaultProperties.java b/gnu/testlet/java/awt/Dialog/defaultProperties.java
new file mode 100644
index 00000000..85e8d444
--- /dev/null
+++ b/gnu/testlet/java/awt/Dialog/defaultProperties.java
@@ -0,0 +1,105 @@
+/* defaultProperties.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Dialog;
+
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Insets;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class defaultProperties implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // This test ensures that all properties are set
+ // to the default values.
+ Dialog dialog = new Dialog(new Frame());
+ harness.check(dialog.getAlignmentX(), 0.5);
+ harness.check(dialog.getAlignmentY(), 0.5);
+ harness.check(dialog.getComponentCount(), 0);
+ harness.check(dialog.getFocusableWindowState(), true);
+ harness.check(dialog.getFocusTraversalKeysEnabled(), true);
+ harness.check(dialog.getHeight(), 0);
+ harness.check(dialog.getIgnoreRepaint(), false);
+ harness.check(dialog.getWidth(), 0);
+ harness.check(dialog.getX(), 0);
+ harness.check(dialog.getY(), 0);
+ harness.check(dialog.getBackground(), null);
+ harness.check(dialog.getBounds(), new Rectangle());
+ harness.check(dialog.getDropTarget(), null);
+ harness.check(dialog.getFocusCycleRootAncestor(), null);
+ harness.check(dialog.getFocusOwner(), null);
+ harness.check(dialog.getFont(), null);
+ harness.check(dialog.getForeground(), null);
+ harness.check(dialog.getGraphics(), null);
+ harness.check(dialog.getInputMethodRequests(), null);
+ harness.check(dialog.getInsets(), new Insets(0, 0, 0, 0));
+ harness.check(dialog.getLayout().toString(),
+ "java.awt.BorderLayout[hgap=0,vgap=0]");
+ harness.check(dialog.getLocation(), new Point());
+ harness.check(dialog.getMaximumSize(),
+ new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ harness.check(dialog.getMinimumSize(), new Dimension());
+ harness.check(dialog.getName(), "dialog0");
+ harness.check(dialog.getPreferredSize(), new Dimension());
+ harness.check(dialog.getSize(), new Dimension());
+ harness.check(dialog.getTitle(), "");
+ harness.check(dialog.getWarningString(), null);
+
+ harness.check(dialog.isActive(), false);
+ harness.check(dialog.isAlwaysOnTop(), false);
+ harness.check(dialog.isBackgroundSet(), false);
+ harness.check(dialog.isCursorSet(), true);
+ harness.check(dialog.isDisplayable(), false);
+ harness.check(dialog.isDoubleBuffered(), false);
+ harness.check(dialog.isEnabled(), true);
+ harness.check(dialog.isFocusable(), true);
+ harness.check(dialog.isFocusableWindow(), true);
+ harness.check(dialog.isFocusCycleRoot(), true);
+ harness.check(dialog.isFocused(), false);
+ harness.check(dialog.isFocusOwner(), false);
+ harness.check(dialog.isFocusTraversalPolicyProvider(), false);
+ harness.check(dialog.isFocusTraversalPolicySet(), true);
+ harness.check(dialog.isFontSet(), false);
+ harness.check(dialog.isForegroundSet(), false);
+ harness.check(dialog.isLightweight(), false);
+ harness.check(dialog.isMaximumSizeSet(), false);
+ harness.check(dialog.isMinimumSizeSet(), false);
+ harness.check(dialog.isModal(), false);
+ harness.check(dialog.isOpaque(), false); // Currently fails on Classpath
+ harness.check(dialog.isPreferredSizeSet(), false);
+ harness.check(dialog.isResizable(), true);
+ harness.check(dialog.isShowing(), false);
+ harness.check(dialog.isUndecorated(), false);
+ harness.check(dialog.isValid(), false);
+ harness.check(dialog.isVisible(), false);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dialog/size.java b/gnu/testlet/java/awt/Dialog/size.java
new file mode 100644
index 00000000..1eb1ee75
--- /dev/null
+++ b/gnu/testlet/java/awt/Dialog/size.java
@@ -0,0 +1,51 @@
+// Tags: GUI JDK1.1
+
+// Copyright (C) 2005 Red Hat
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Dialog;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Label;
+
+public class size implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Dialog jd = new Dialog(new Frame());
+ jd.show();
+ jd.add(new Label("Hello world"));
+
+ // jd insets may be larger than preferred size
+ Dimension pref = jd.getPreferredSize();
+ Dimension size = jd.getSize();
+ System.err.println("size: " + size);
+ System.err.println("pref: " + pref);
+ harness.check(size.width >= pref.width);
+ harness.check(size.height >= pref.height);
+ }
+}
diff --git a/gnu/testlet/java/awt/Dimension/CVS/Entries b/gnu/testlet/java/awt/Dimension/CVS/Entries
new file mode 100644
index 00000000..8e666a76
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/CVS/Entries
@@ -0,0 +1,6 @@
+/clone.java/1.1/Mon Aug 9 20:51:42 2004//
+/constructors.java/1.1/Mon Aug 9 20:51:42 2004//
+/equals.java/1.1/Mon Aug 9 20:51:42 2004//
+/getSize.java/1.1/Mon Aug 9 20:51:42 2004//
+/setSize.java/1.1/Mon Aug 9 20:51:42 2004//
+D
diff --git a/gnu/testlet/java/awt/Dimension/CVS/Repository b/gnu/testlet/java/awt/Dimension/CVS/Repository
new file mode 100644
index 00000000..64440daf
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Dimension
diff --git a/gnu/testlet/java/awt/Dimension/CVS/Root b/gnu/testlet/java/awt/Dimension/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Dimension/clone.java b/gnu/testlet/java/awt/Dimension/clone.java
new file mode 100644
index 00000000..ca4055b0
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/clone.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+/**
+ * Checks that the clone() method in the {@link Dimension} class works
+ * correctly.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Dimension d1 = new Dimension(44, 55);
+ Dimension d2 = null;
+ d2 = (java.awt.Dimension) d1.clone();
+ harness.check(d1 != d2);
+ harness.check(d1.getClass().equals(d2.getClass()));
+ harness.check(d1.width == d2.width);
+ harness.check(d1.height == d2.height);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dimension/constructors.java b/gnu/testlet/java/awt/Dimension/constructors.java
new file mode 100644
index 00000000..21ec1d3d
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/constructors.java
@@ -0,0 +1,76 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+/**
+ * Checks that constructors in the {@link Dimension} class work
+ * correctly.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // default constructor
+ Dimension d = new Dimension();
+ harness.check(d.getWidth() == 0.0);
+ harness.check(d.getHeight() == 0.0);
+
+ // (int, int) constructor
+ d = new Dimension(5, 10);
+ harness.check(d.getWidth() == 5);
+ harness.check(d.getHeight() == 10);
+
+ // (Dimension) constructor
+ Dimension d1 = new Dimension(100, 200);
+ Dimension d2 = new Dimension(d1);
+ harness.check(d2.getWidth() == 100);
+ harness.check(d2.getHeight() == 200);
+
+ // check that d2 is independent of d1
+ d1.width = 1;
+ d1.height = 2;
+ harness.check(d2.getWidth() == 100);
+ harness.check(d2.getHeight() == 200);
+
+ // check for null argument
+ boolean pass = false;
+ try
+ {
+ Dimension d3 = new Dimension(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dimension/equals.java b/gnu/testlet/java/awt/Dimension/equals.java
new file mode 100644
index 00000000..9690d775
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/equals.java
@@ -0,0 +1,58 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+/**
+ * Checks that the equals() method in the {@link Dimension} class works
+ * correctly.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Dimension d1 = new Dimension();
+ Dimension d2 = new Dimension();
+ harness.check(d1.equals(d2));
+ harness.check(d2.equals(d1));
+ harness.check(!d1.equals(null));
+
+ d1.width = 5;
+ harness.check(!d1.equals(d2));
+ d2.width = 5;
+ harness.check(d1.equals(d2));
+
+ d1.height = 10;
+ harness.check(!d1.equals(d2));
+ d2.height = 10;
+ harness.check(d1.equals(d2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dimension/getSize.java b/gnu/testlet/java/awt/Dimension/getSize.java
new file mode 100644
index 00000000..1709d8dc
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/getSize.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+/**
+ * Checks that the getSize() method in the {@link Dimension} class works
+ * correctly.
+ */
+public class getSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Dimension d1 = new Dimension(11, 22);
+ Dimension d2 = d1.getSize();
+ harness.check(d2.width == 11);
+ harness.check(d2.height == 22);
+
+ d2.width = 1;
+ d2.height = 2;
+ harness.check(d1.width == 11);
+ harness.check(d1.height == 22);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Dimension/setSize.java b/gnu/testlet/java/awt/Dimension/setSize.java
new file mode 100644
index 00000000..093d9545
--- /dev/null
+++ b/gnu/testlet/java/awt/Dimension/setSize.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+/**
+ * Checks that the setSize() method in the {@link Dimension} class works
+ * correctly. See Sun's bug parade reports 4245442 and 4976448. This
+ * is still a problem in JDK 1.3.1_11.
+ */
+public class setSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Dimension d = new Dimension();
+ d.setSize(1, 2);
+ harness.check(d.getWidth() == 1);
+ harness.check(d.getHeight() == 2);
+
+ d.setSize(5.0, 10.0);
+ harness.check(d.getWidth() == 5.0);
+ harness.check(d.getHeight() == 10.0);
+
+ double w = Integer.MAX_VALUE + 100000.0;
+ double h = Integer.MAX_VALUE + 200000.0;
+ d.setSize(w, h);
+ harness.check(d.getWidth() == Integer.MAX_VALUE);
+ harness.check(d.getHeight() == Integer.MAX_VALUE);
+
+ // check for null argument
+ boolean pass = false;
+ try
+ {
+ d.setSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Event/CVS/Entries b/gnu/testlet/java/awt/Event/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/Event/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/Event/CVS/Repository b/gnu/testlet/java/awt/Event/CVS/Repository
new file mode 100644
index 00000000..e47b0df3
--- /dev/null
+++ b/gnu/testlet/java/awt/Event/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Event
diff --git a/gnu/testlet/java/awt/Event/CVS/Root b/gnu/testlet/java/awt/Event/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Event/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/EventClass/CVS/Entries b/gnu/testlet/java/awt/EventClass/CVS/Entries
new file mode 100644
index 00000000..e65fa6b5
--- /dev/null
+++ b/gnu/testlet/java/awt/EventClass/CVS/Entries
@@ -0,0 +1,2 @@
+/constants.java/1.1/Fri Sep 30 19:13:16 2005/-kk/
+D
diff --git a/gnu/testlet/java/awt/EventClass/CVS/Repository b/gnu/testlet/java/awt/EventClass/CVS/Repository
new file mode 100644
index 00000000..c0024b0b
--- /dev/null
+++ b/gnu/testlet/java/awt/EventClass/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/EventClass
diff --git a/gnu/testlet/java/awt/EventClass/CVS/Root b/gnu/testlet/java/awt/EventClass/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/EventClass/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/EventClass/constants.java b/gnu/testlet/java/awt/EventClass/constants.java
new file mode 100644
index 00000000..bf23691b
--- /dev/null
+++ b/gnu/testlet/java/awt/EventClass/constants.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.EventClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Event;
+
+/**
+ * Verifies constant values for the {@link Event} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Event.ACTION_EVENT, 1001);
+ harness.check(Event.ALT_MASK, 8);
+ harness.check(Event.BACK_SPACE, 8);
+ harness.check(Event.CAPS_LOCK, 1022);
+ harness.check(Event.CTRL_MASK, 2);
+ harness.check(Event.DELETE, 127);
+ harness.check(Event.DOWN, 1005);
+ harness.check(Event.END, 1001);
+ harness.check(Event.ENTER, 10);
+ harness.check(Event.ESCAPE, 27);
+ harness.check(Event.F1, 1008);
+ harness.check(Event.F10, 1017);
+ harness.check(Event.F11, 1018);
+ harness.check(Event.F12, 1019);
+ harness.check(Event.F2, 1009);
+ harness.check(Event.F3, 1010);
+ harness.check(Event.F4, 1011);
+ harness.check(Event.F5, 1012);
+ harness.check(Event.F6, 1013);
+ harness.check(Event.F7, 1014);
+ harness.check(Event.F8, 1015);
+ harness.check(Event.F9, 1016);
+ harness.check(Event.GOT_FOCUS, 1004);
+ harness.check(Event.HOME, 1000);
+ harness.check(Event.INSERT, 1025);
+ harness.check(Event.KEY_ACTION, 403);
+ harness.check(Event.KEY_ACTION_RELEASE, 404);
+ harness.check(Event.KEY_PRESS, 401);
+ harness.check(Event.KEY_RELEASE, 402);
+ harness.check(Event.LEFT, 1006);
+ harness.check(Event.LIST_DESELECT, 702);
+ harness.check(Event.LIST_SELECT, 701);
+ harness.check(Event.LOAD_FILE, 1002);
+ harness.check(Event.LOST_FOCUS, 1005);
+ harness.check(Event.META_MASK, 4);
+ harness.check(Event.MOUSE_DOWN, 501);
+ harness.check(Event.MOUSE_DRAG, 506);
+ harness.check(Event.MOUSE_ENTER, 504);
+ harness.check(Event.MOUSE_EXIT, 505);
+ harness.check(Event.MOUSE_MOVE, 503);
+ harness.check(Event.MOUSE_UP, 502);
+ harness.check(Event.NUM_LOCK, 1023);
+ harness.check(Event.PAUSE, 1024);
+ harness.check(Event.PGDN, 1003);
+ harness.check(Event.PGUP, 1002);
+ harness.check(Event.PRINT_SCREEN, 1020);
+ harness.check(Event.RIGHT, 1007);
+ harness.check(Event.SAVE_FILE, 1003);
+ harness.check(Event.SCROLL_ABSOLUTE, 605);
+ harness.check(Event.SCROLL_BEGIN, 606);
+ harness.check(Event.SCROLL_END, 607);
+ harness.check(Event.SCROLL_LINE_DOWN, 602);
+ harness.check(Event.SCROLL_LINE_UP, 601);
+ harness.check(Event.SCROLL_LOCK, 1021);
+ harness.check(Event.SCROLL_PAGE_DOWN, 604);
+ harness.check(Event.SCROLL_PAGE_UP, 603);
+ harness.check(Event.SHIFT_MASK, 1);
+ harness.check(Event.TAB, 9);
+ harness.check(Event.UP, 1004);
+ harness.check(Event.WINDOW_DEICONIFY, 204);
+ harness.check(Event.WINDOW_DESTROY, 201);
+ harness.check(Event.WINDOW_EXPOSE, 202);
+ harness.check(Event.WINDOW_ICONIFY, 203);
+ harness.check(Event.WINDOW_MOVED, 205);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/FileDialog/CVS/Entries b/gnu/testlet/java/awt/FileDialog/CVS/Entries
new file mode 100644
index 00000000..34badd47
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/CVS/Entries
@@ -0,0 +1,4 @@
+/TestGraphics.java/1.1/Thu Mar 16 14:19:48 2006//
+/defaultProperties.java/1.1/Wed Oct 25 20:20:30 2006//
+/setFile.java/1.1/Wed Oct 25 20:20:30 2006//
+D
diff --git a/gnu/testlet/java/awt/FileDialog/CVS/Repository b/gnu/testlet/java/awt/FileDialog/CVS/Repository
new file mode 100644
index 00000000..ddf5b186
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/FileDialog
diff --git a/gnu/testlet/java/awt/FileDialog/CVS/Root b/gnu/testlet/java/awt/FileDialog/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FileDialog/TestGraphics.java b/gnu/testlet/java/awt/FileDialog/TestGraphics.java
new file mode 100644
index 00000000..ada5e6f1
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/TestGraphics.java
@@ -0,0 +1,95 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Red Hat
+
+// 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.java.awt.FileDialog;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests that FileDialog.getGraphics does not return null and that paint and
+ * update are called on it.
+ */
+public class TestGraphics implements Testlet {
+ FileDialog d = null;
+ Robot r = null;
+
+ boolean paintCalled = false;
+
+ boolean updateCalled = false;
+
+ public void test(TestHarness harness) {
+ Frame f = new Frame();
+ d = new FileDialog(f);
+ r = harness.createRobot();
+
+ f.setSize(200, 200);
+ f.show();
+ harness.check(d.getGraphics() == null);
+
+ // A FileDialog is modal so we must cancel it so that the test will
+ // finish. But a FileDialog's layout is peerset-dependant so we
+ // cannot cancel it using Robot. We hide it from a separate
+ // thread instead.
+ new Thread() {
+ public void run() {
+ r.delay(2000);
+ d.hide();
+ }
+ }.start();
+ d.show();
+
+ harness.check(d.getGraphics() != null);
+
+ d.dispose();
+
+ harness.check(d.getGraphics() == null);
+
+ d = new FileDialog(f) {
+ public void paint(Graphics g) {
+ paintCalled = true;
+ }
+
+ public void update(Graphics g) {
+ updateCalled = true;
+ }
+ };
+
+ new Thread() {
+ public void run() {
+ r.delay(2000);
+ d.hide();
+ }
+ }.start();
+ d.show();
+
+ harness.check(paintCalled);
+ harness.check(!updateCalled);
+ d.repaint();
+ r.waitForIdle();
+ r.delay(1000);
+
+ // Sun does not call FileDialog.update.
+ harness.check(!updateCalled);
+ }
+}
diff --git a/gnu/testlet/java/awt/FileDialog/defaultProperties.java b/gnu/testlet/java/awt/FileDialog/defaultProperties.java
new file mode 100644
index 00000000..463e2838
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/defaultProperties.java
@@ -0,0 +1,105 @@
+/* defaultProperties.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.FileDialog;
+
+import java.awt.FileDialog;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Insets;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class defaultProperties implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // This test ensures that all properties are set
+ // to the default values.
+ FileDialog dialog = new FileDialog(new Frame());
+ harness.check(dialog.getAlignmentX(), 0.5);
+ harness.check(dialog.getAlignmentY(), 0.5);
+ harness.check(dialog.getComponentCount(), 0);
+ harness.check(dialog.getFocusableWindowState(), true);
+ harness.check(dialog.getFocusTraversalKeysEnabled(), true);
+ harness.check(dialog.getHeight(), 0);
+ harness.check(dialog.getIgnoreRepaint(), false);
+ harness.check(dialog.getWidth(), 0);
+ harness.check(dialog.getX(), 0);
+ harness.check(dialog.getY(), 0);
+ harness.check(dialog.getBackground(), null);
+ harness.check(dialog.getBounds(), new Rectangle());
+ harness.check(dialog.getDropTarget(), null);
+ harness.check(dialog.getFocusCycleRootAncestor(), null);
+ harness.check(dialog.getFocusOwner(), null);
+ harness.check(dialog.getFont(), null);
+ harness.check(dialog.getForeground(), null);
+ harness.check(dialog.getGraphics(), null);
+ harness.check(dialog.getInputMethodRequests(), null);
+ harness.check(dialog.getInsets(), new Insets(0, 0, 0, 0));
+ harness.check(dialog.getLayout(), null);
+ harness.check(dialog.getLocation(), new Point());
+ harness.check(dialog.getMaximumSize(),
+ new Dimension(32767, 32767));
+ harness.check(dialog.getMinimumSize(), new Dimension());
+ harness.check(dialog.getName(), "filedlg0");
+ harness.check(dialog.getPreferredSize(), new Dimension());
+ harness.check(dialog.getSize(), new Dimension());
+ harness.check(dialog.getTitle(), "");
+ harness.check(dialog.getWarningString(), null);
+
+ harness.check(dialog.isActive(), false);
+ harness.check(dialog.isAlwaysOnTop(), false);
+ harness.check(dialog.isBackgroundSet(), false);
+ harness.check(dialog.isCursorSet(), true);
+ harness.check(dialog.isDisplayable(), false);
+ harness.check(dialog.isDoubleBuffered(), false);
+ harness.check(dialog.isEnabled(), true);
+ harness.check(dialog.isFocusable(), true);
+ harness.check(dialog.isFocusableWindow(), true);
+ harness.check(dialog.isFocusCycleRoot(), true);
+ harness.check(dialog.isFocused(), false);
+ harness.check(dialog.isFocusOwner(), false);
+ harness.check(dialog.isFocusTraversalPolicyProvider(), false);
+ harness.check(dialog.isFocusTraversalPolicySet(), true);
+ harness.check(dialog.isFontSet(), false);
+ harness.check(dialog.isForegroundSet(), false);
+ harness.check(dialog.isLightweight(), false);
+ harness.check(dialog.isMaximumSizeSet(), false);
+ harness.check(dialog.isMinimumSizeSet(), false);
+ harness.check(dialog.isModal(), true);
+ harness.check(dialog.isOpaque(), false); // Currently fails on Classpath
+ harness.check(dialog.isPreferredSizeSet(), false);
+ harness.check(dialog.isResizable(), true);
+ harness.check(dialog.isShowing(), false);
+ harness.check(dialog.isUndecorated(), false);
+ harness.check(dialog.isValid(), false);
+ harness.check(dialog.isVisible(), false);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FileDialog/setFile.java b/gnu/testlet/java/awt/FileDialog/setFile.java
new file mode 100644
index 00000000..fb27e6b7
--- /dev/null
+++ b/gnu/testlet/java/awt/FileDialog/setFile.java
@@ -0,0 +1,63 @@
+/* testSetFile.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.FileDialog;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setFile implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ FileDialog fd = new FileDialog(new Frame());
+ fd.setFile("String");
+ harness.check(fd.getFile(), "String");
+ }
+
+ public void test2(TestHarness harness)
+ {
+ FileDialog fd = new FileDialog(new Frame());
+ fd.setFile(null);
+ harness.check(fd.getFile(), null);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ FileDialog fd = new FileDialog(new Frame());
+ fd.setFile("");
+ harness.check(fd.getFile(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/CVS/Entries b/gnu/testlet/java/awt/FlowLayout/CVS/Entries
new file mode 100644
index 00000000..75faacf4
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/CVS/Entries
@@ -0,0 +1,22 @@
+/PaintTestBasicSetup1.java/1.1/Mon Oct 24 15:16:33 2011//
+/PaintTestBasicSetup2.java/1.1/Mon Oct 24 15:16:33 2011//
+/PaintTestBasicSetup3.java/1.1/Mon Oct 24 15:16:33 2011//
+/PaintTestBiggerGaps.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestBiggerHgap.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestBiggerVgap.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestCenterAlign.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestLeftAlign.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestRightAlign.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestZeroGaps.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestZeroHgap.java/1.1/Wed Nov 2 16:27:56 2011//
+/PaintTestZeroVgap.java/1.1/Wed Nov 2 16:27:56 2011//
+/constructors.java/1.1/Mon Nov 21 15:17:47 2011//
+/getAlignment.java/1.1/Tue Nov 22 12:54:55 2011//
+/getHgap.java/1.1/Tue Nov 22 12:54:55 2011//
+/getVgap.java/1.1/Tue Nov 22 12:54:55 2011//
+/minimumLayoutSize.java/1.1/Tue Nov 7 16:51:44 2006//
+/setAlignment.java/1.1/Tue Nov 22 12:54:55 2011//
+/setHgap.java/1.1/Tue Nov 22 12:54:55 2011//
+/setVgap.java/1.1/Tue Nov 22 12:54:55 2011//
+/toString.java/1.2/Mon Nov 21 15:17:47 2011//
+D
diff --git a/gnu/testlet/java/awt/FlowLayout/CVS/Repository b/gnu/testlet/java/awt/FlowLayout/CVS/Repository
new file mode 100644
index 00000000..0d7f0737
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/FlowLayout
diff --git a/gnu/testlet/java/awt/FlowLayout/CVS/Root b/gnu/testlet/java/awt/FlowLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup1.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup1.java
new file mode 100644
index 00000000..379948ad
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup1.java
@@ -0,0 +1,186 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two buttons are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBasicSetup1
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Button button1 = new Button(" ");
+ Button button2 = new Button(" ");
+ button1.setBackground(Color.blue);
+ button2.setBackground(Color.yellow);
+ add(button1);
+ add(button2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, button2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the button center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup2.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup2.java
new file mode 100644
index 00000000..16bb4ca2
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup2.java
@@ -0,0 +1,188 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBasicSetup2
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup3.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup3.java
new file mode 100644
index 00000000..0127496d
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBasicSetup3.java
@@ -0,0 +1,188 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if button and canvas are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBasicSetup3
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Button button = new Button(" ");
+ Canvas canvas = new Canvas();
+ canvas.setSize(100,100);
+ button.setBackground(Color.blue);
+ canvas.setBackground(Color.yellow);
+ add(button);
+ add(canvas);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the button center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerGaps.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerGaps.java
new file mode 100644
index 00000000..2fbe49f7
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerGaps.java
@@ -0,0 +1,192 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBiggerGaps
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(50);
+ layout.setVgap(50);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerHgap.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerHgap.java
new file mode 100644
index 00000000..1d61cc1f
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerHgap.java
@@ -0,0 +1,191 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBiggerHgap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(50);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerVgap.java b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerVgap.java
new file mode 100644
index 00000000..fdf70725
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestBiggerVgap.java
@@ -0,0 +1,191 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestBiggerVgap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setVgap(50);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestCenterAlign.java b/gnu/testlet/java/awt/FlowLayout/PaintTestCenterAlign.java
new file mode 100644
index 00000000..3009d0ee
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestCenterAlign.java
@@ -0,0 +1,188 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if button and canvas are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestCenterAlign
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout(FlowLayout.CENTER));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ frame.setSize(300, 300);
+
+ // create two components and add them to the panel
+ Button button = new Button(" ");
+ Canvas canvas = new Canvas();
+ canvas.setSize(100,100);
+ button.setBackground(Color.blue);
+ canvas.setBackground(Color.yellow);
+ add(button);
+ add(canvas);
+ frame.add(this);
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the button center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestLeftAlign.java b/gnu/testlet/java/awt/FlowLayout/PaintTestLeftAlign.java
new file mode 100644
index 00000000..ee2e4365
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestLeftAlign.java
@@ -0,0 +1,188 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if button and canvas are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestLeftAlign
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout(FlowLayout.LEFT));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ frame.setSize(300, 300);
+
+ // create two components and add them to the panel
+ Button button = new Button(" ");
+ Canvas canvas = new Canvas();
+ canvas.setSize(100,100);
+ button.setBackground(Color.blue);
+ canvas.setBackground(Color.yellow);
+ add(button);
+ add(canvas);
+ frame.add(this);
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the button center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestRightAlign.java b/gnu/testlet/java/awt/FlowLayout/PaintTestRightAlign.java
new file mode 100644
index 00000000..97d07493
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestRightAlign.java
@@ -0,0 +1,188 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if button and canvas are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestRightAlign
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new FlowLayout(FlowLayout.RIGHT));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ frame.setSize(300, 300);
+
+ // create two components and add them to the panel
+ Button button = new Button(" ");
+ Canvas canvas = new Canvas();
+ canvas.setSize(100,100);
+ button.setBackground(Color.blue);
+ canvas.setBackground(Color.yellow);
+ add(button);
+ add(canvas);
+ frame.add(this);
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, button), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the button center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestZeroGaps.java b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroGaps.java
new file mode 100644
index 00000000..d4f848e2
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroGaps.java
@@ -0,0 +1,192 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestZeroGaps
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(0);
+ layout.setVgap(0);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestZeroHgap.java b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroHgap.java
new file mode 100644
index 00000000..7cb7b6e9
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroHgap.java
@@ -0,0 +1,191 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestZeroHgap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(0);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/PaintTestZeroVgap.java b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroVgap.java
new file mode 100644
index 00000000..b76e8b4d
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/PaintTestZeroVgap.java
@@ -0,0 +1,191 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.FlowLayout;
+
+/**
+ * Test if two canvases are positioned correctly to a frame using FlowLayout.
+ */
+public class PaintTestZeroVgap
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setVgap(0);
+ this.setLayout(layout);
+
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create two components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ add(canvas1);
+ add(canvas2);
+ frame.add(this);
+ frame.pack();
+ frame.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param g the graphics context to use for painting
+ */
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FlowLayout/constructors.java b/gnu/testlet/java/awt/FlowLayout/constructors.java
new file mode 100644
index 00000000..5519019e
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/constructors.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Tests which checks constructors in the {@link FlowLayout} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructorNoParams(harness);
+ testConstructorOneParam(harness);
+ testConstructorThreeParams(harness);
+ testConstructorThreeParamsNegativeGaps(harness);
+ }
+
+ private void doCheck(TestHarness harness, FlowLayout flowLayout, int alignment, int hgap, int vgap)
+ {
+ harness.check(flowLayout.getAlignment(), alignment);
+ harness.check(flowLayout.getHgap(), hgap);
+ harness.check(flowLayout.getVgap(), vgap);
+ }
+
+ /**
+ * Test layout manager constructed using constructor without any parameter.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorNoParams(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ FlowLayout flowLayout1 = new FlowLayout();
+ doCheck(harness, flowLayout1, FlowLayout.CENTER, 5, 5);
+ }
+
+ /**
+ * Test layout manager constructed using constructor with one parameter.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorOneParam(TestHarness harness)
+ {
+ harness.checkPoint("(int align)");
+ FlowLayout flowLayout2 = new FlowLayout(FlowLayout.CENTER);
+ doCheck(harness, flowLayout2, FlowLayout.CENTER, 5, 5);
+
+ flowLayout2 = new FlowLayout(FlowLayout.LEFT);
+ doCheck(harness, flowLayout2, FlowLayout.LEFT, 5, 5);
+
+ flowLayout2 = new FlowLayout(FlowLayout.RIGHT);
+ harness.check(flowLayout2.getAlignment(), FlowLayout.RIGHT);
+ doCheck(harness, flowLayout2, FlowLayout.RIGHT, 5, 5);
+ }
+
+ /**
+ * Test layout manager constructed using constructor with three parameters.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorThreeParams(TestHarness harness)
+ {
+ harness.checkPoint("(int align, int hgap, int vgap)");
+ FlowLayout flowLayout3 = new FlowLayout(FlowLayout.CENTER, 50, 50);
+ doCheck(harness, flowLayout3, FlowLayout.CENTER, 50, 50);
+ }
+
+ /**
+ * Test layout manager constructed using constructor with three parameters.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorThreeParamsNegativeGaps(TestHarness harness)
+ {
+ harness.checkPoint("(int align, int -hgap, int -vgap)");
+ FlowLayout flowLayout4 = new FlowLayout(FlowLayout.CENTER, -50, 50);
+ doCheck(harness, flowLayout4, FlowLayout.CENTER, -50, 50);
+
+ flowLayout4 = new FlowLayout(FlowLayout.CENTER, 50, -50);
+ doCheck(harness, flowLayout4, FlowLayout.CENTER, 50, -50);
+
+ flowLayout4 = new FlowLayout(FlowLayout.CENTER, -50, -50);
+ doCheck(harness, flowLayout4, FlowLayout.CENTER, -50, -50);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/getAlignment.java b/gnu/testlet/java/awt/FlowLayout/getAlignment.java
new file mode 100644
index 00000000..d2ac9fe4
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/getAlignment.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the getAlignment() method in the {@link FlowLayout} class.
+ */
+public class getAlignment implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setAlignment(FlowLayout.LEFT);
+ harness.check(layout.getAlignment(), FlowLayout.LEFT);
+ layout.setAlignment(FlowLayout.RIGHT);
+ harness.check(layout.getAlignment(), FlowLayout.RIGHT);
+ layout.setAlignment(FlowLayout.CENTER);
+ harness.check(layout.getAlignment(), FlowLayout.CENTER);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/getHgap.java b/gnu/testlet/java/awt/FlowLayout/getHgap.java
new file mode 100644
index 00000000..81ea5582
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/getHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the getHgap() method in the {@link FlowLayout} class.
+ */
+public class getHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(42);
+ harness.check(layout.getHgap(), 42);
+ layout.setHgap(-42);
+ harness.check(layout.getHgap(), -42);
+ layout.setHgap(0);
+ harness.check(layout.getHgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/getVgap.java b/gnu/testlet/java/awt/FlowLayout/getVgap.java
new file mode 100644
index 00000000..88c37c37
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/getVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the getVgap() method in the {@link FlowLayout} class.
+ */
+public class getVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setVgap(42);
+ harness.check(layout.getVgap(), 42);
+ layout.setVgap(-42);
+ harness.check(layout.getVgap(), -42);
+ layout.setVgap(0);
+ harness.check(layout.getVgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/minimumLayoutSize.java b/gnu/testlet/java/awt/FlowLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..62c5d0b9
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/minimumLayoutSize.java
@@ -0,0 +1,58 @@
+/* minimumLayoutSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import java.awt.Button;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class minimumLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Container container = new Container();
+ FlowLayout layout = new FlowLayout();
+
+ // Show that the width is calculated using the formula:
+ // w += 2 * hgap + ins.left + ins.right
+ // when there are no components in container.
+ harness.check(layout.minimumLayoutSize(container), new Dimension(10, 10));
+
+ // Show that the width is calculated using the formula:
+ // w += (num + 1) * hgap + ins.left + ins.right;
+ // when there is one or more components in container.
+ container.add(new Button());
+ harness.check(layout.minimumLayoutSize(container), new Dimension(10, 10));
+ container.add(new Button());
+ container.add(new List());
+ harness.check(layout.minimumLayoutSize(container), new Dimension(20, 10));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/setAlignment.java b/gnu/testlet/java/awt/FlowLayout/setAlignment.java
new file mode 100644
index 00000000..148e4f49
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/setAlignment.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the setAlignment() method in the {@link FlowLayout} class.
+ */
+public class setAlignment implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setAlignment(FlowLayout.LEFT);
+ harness.check(layout.getAlignment(), FlowLayout.LEFT);
+ layout.setAlignment(FlowLayout.RIGHT);
+ harness.check(layout.getAlignment(), FlowLayout.RIGHT);
+ layout.setAlignment(FlowLayout.CENTER);
+ harness.check(layout.getAlignment(), FlowLayout.CENTER);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/setHgap.java b/gnu/testlet/java/awt/FlowLayout/setHgap.java
new file mode 100644
index 00000000..41540ca6
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/setHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the setHgap() method in the {@link FlowLayout} class.
+ */
+public class setHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setHgap(42);
+ harness.check(layout.getHgap(), 42);
+ layout.setHgap(-42);
+ harness.check(layout.getHgap(), -42);
+ layout.setHgap(0);
+ harness.check(layout.getHgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/setVgap.java b/gnu/testlet/java/awt/FlowLayout/setVgap.java
new file mode 100644
index 00000000..519f2ccd
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/setVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+/**
+ * Basic checks for the setVgap() method in the {@link FlowLayout} class.
+ */
+public class setVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FlowLayout layout = new FlowLayout();
+ layout.setVgap(42);
+ harness.check(layout.getVgap(), 42);
+ layout.setVgap(-42);
+ harness.check(layout.getVgap(), -42);
+ layout.setVgap(0);
+ harness.check(layout.getVgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FlowLayout/toString.java b/gnu/testlet/java/awt/FlowLayout/toString.java
new file mode 100644
index 00000000..d0c7be66
--- /dev/null
+++ b/gnu/testlet/java/awt/FlowLayout/toString.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FlowLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FlowLayout;
+
+// test of method toString()
+public class toString
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructorNoParams(harness);
+ testConstructorOneParam(harness);
+ testConstructorThreeParams(harness);
+ }
+
+ /**
+ * Test layout manager constructed using constructor without any parameter.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorNoParams(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ FlowLayout flowLayout1 = new FlowLayout();
+ flowLayout1.toString();
+ harness.check(flowLayout1.toString() != null);
+ harness.check(flowLayout1.toString(), "java.awt.FlowLayout[hgap=5,vgap=5,align=center]");
+ }
+
+ /**
+ * Test layout manager constructed using constructor with one parameter.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorOneParam(TestHarness harness)
+ {
+ harness.checkPoint("(int align)");
+ FlowLayout flowLayout2 = new FlowLayout(FlowLayout.CENTER);
+ flowLayout2.toString();
+ harness.check(flowLayout2.toString() != null);
+ harness.check(flowLayout2.toString(), "java.awt.FlowLayout[hgap=5,vgap=5,align=center]");
+
+ flowLayout2 = new FlowLayout(FlowLayout.LEFT);
+ flowLayout2.toString();
+ harness.check(flowLayout2.toString() != null);
+ harness.check(flowLayout2.toString(), "java.awt.FlowLayout[hgap=5,vgap=5,align=left]");
+
+ flowLayout2 = new FlowLayout(FlowLayout.RIGHT);
+ flowLayout2.toString();
+ harness.check(flowLayout2.toString() != null);
+ harness.check(flowLayout2.toString(), "java.awt.FlowLayout[hgap=5,vgap=5,align=right]");
+ }
+
+ /**
+ * Test layout manager constructed using constructor with three parameters.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testConstructorThreeParams(TestHarness harness)
+ {
+ harness.checkPoint("(int align, int hgap, int vgap)");
+ FlowLayout flowLayout3 = new FlowLayout(FlowLayout.CENTER, 50, 50);
+ flowLayout3.toString();
+ harness.check(flowLayout3.toString() != null);
+ harness.check(flowLayout3.toString(), "java.awt.FlowLayout[hgap=50,vgap=50,align=center]");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Font/CVS/Entries b/gnu/testlet/java/awt/Font/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/Font/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/Font/CVS/Repository b/gnu/testlet/java/awt/Font/CVS/Repository
new file mode 100644
index 00000000..77ee98f6
--- /dev/null
+++ b/gnu/testlet/java/awt/Font/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Font
diff --git a/gnu/testlet/java/awt/Font/CVS/Root b/gnu/testlet/java/awt/Font/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Font/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FontClass/CVS/Entries b/gnu/testlet/java/awt/FontClass/CVS/Entries
new file mode 100644
index 00000000..0003b043
--- /dev/null
+++ b/gnu/testlet/java/awt/FontClass/CVS/Entries
@@ -0,0 +1,3 @@
+/decode.java/1.1/Fri Sep 30 19:13:15 2005/-kk/
+/serialization.java/1.1/Fri Sep 30 19:13:15 2005/-kk/
+D
diff --git a/gnu/testlet/java/awt/FontClass/CVS/Repository b/gnu/testlet/java/awt/FontClass/CVS/Repository
new file mode 100644
index 00000000..9399fc40
--- /dev/null
+++ b/gnu/testlet/java/awt/FontClass/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/FontClass
diff --git a/gnu/testlet/java/awt/FontClass/CVS/Root b/gnu/testlet/java/awt/FontClass/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/FontClass/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FontClass/decode.java b/gnu/testlet/java/awt/FontClass/decode.java
new file mode 100644
index 00000000..4dfb7f4b
--- /dev/null
+++ b/gnu/testlet/java/awt/FontClass/decode.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.awt.FontClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+/**
+ * Some checks for the decode() method.
+ */
+public class decode implements Testlet
+{
+ /**
+ * Some checks for the decode() method.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ // regular usage...
+ Font f1 = Font.decode("Dialog-PLAIN-18");
+ harness.check(f1.getFamily(), "Dialog"); // check 1
+ harness.check(f1.getStyle(), Font.PLAIN); // check 2
+ harness.check(f1.getSize(), 18); // check 3
+
+ // spaces are acceptable too...
+ f1 = Font.decode("Dialog BOLD 16");
+ harness.check(f1.getFamily(), "Dialog"); // check 4
+ harness.check(f1.getStyle(), Font.BOLD); // check 5
+ harness.check(f1.getSize(), 16); // check 6
+
+ // unknown name defaults to 'Dialog'
+ f1 = Font.decode("123-PLAIN-18");
+ harness.check(f1.getFamily(), "Dialog"); // check 7
+ harness.check(f1.getStyle(), Font.PLAIN); // check 8
+ harness.check(f1.getSize(), 18); // check 9
+
+ // style is not case sensitive
+ f1 = Font.decode("Dialog-BoLd-17");
+ harness.check(f1.getFamily(), "Dialog"); // check 10
+ harness.check(f1.getStyle(), Font.BOLD); // check 11
+ harness.check(f1.getSize(), 17); // check 12
+
+ // unknown style reverts to PLAIN
+ f1 = Font.decode("Dialog-NotAStyle-18");
+ harness.check(f1.getFamily(), "Dialog"); // check 13
+ harness.check(f1.getStyle(), Font.PLAIN); // check 14
+ harness.check(f1.getSize(), 18); // check 15
+
+ // invalid size defaults to 12
+ f1 = Font.decode("Dialog-BOLDITALIC-ZZ");
+ harness.check(f1.getFamily(), "Dialog"); // check 16
+ harness.check(f1.getStyle(), Font.BOLD + Font.ITALIC); // check 17
+ harness.check(f1.getSize(), 12); // check 18
+
+ f1 = Font.decode("Dialog");
+ harness.check(f1.getFamily(), "Dialog"); // check 19
+ harness.check(f1.getStyle(), Font.PLAIN); // check 20
+ harness.check(f1.getSize(), 12); // check 21
+
+ // null should be equivalent to 'Dialog-PLAIN-12'
+ f1 = Font.decode(null);
+ harness.check(f1.getFamily(), "Dialog"); // check 22
+ harness.check(f1.getStyle(), Font.PLAIN); // check 23
+ harness.check(f1.getSize(), 12); // check 24
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/FontClass/serialization.java b/gnu/testlet/java/awt/FontClass/serialization.java
new file mode 100644
index 00000000..5e0c7792
--- /dev/null
+++ b/gnu/testlet/java/awt/FontClass/serialization.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.FontClass;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Some checks for serialization of the {@link Font} class.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Font f1 = new Font("Dialog", Font.PLAIN, 14);
+ Font f2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(f1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ f2 = (Font) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(f1.equals(f2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/FontFormatException/CVS/Entries b/gnu/testlet/java/awt/FontFormatException/CVS/Entries
new file mode 100644
index 00000000..fb3d679a
--- /dev/null
+++ b/gnu/testlet/java/awt/FontFormatException/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Fri Mar 23 11:45:27 2012//
+D
diff --git a/gnu/testlet/java/awt/FontFormatException/CVS/Repository b/gnu/testlet/java/awt/FontFormatException/CVS/Repository
new file mode 100644
index 00000000..ba6a84be
--- /dev/null
+++ b/gnu/testlet/java/awt/FontFormatException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/FontFormatException
diff --git a/gnu/testlet/java/awt/FontFormatException/CVS/Root b/gnu/testlet/java/awt/FontFormatException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/FontFormatException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FontFormatException/constructor.java b/gnu/testlet/java/awt/FontFormatException/constructor.java
new file mode 100644
index 00000000..cf291b69
--- /dev/null
+++ b/gnu/testlet/java/awt/FontFormatException/constructor.java
@@ -0,0 +1,66 @@
+// constructor.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.FontFormatException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.FontFormatException;
+
+/**
+ * Check of method constructor for a class FontFormatException.
+ */
+public class constructor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Throwable a;
+
+ a = new FontFormatException("");
+ harness.check(a.getMessage(), "");
+
+ a = new FontFormatException("FontFormatException");
+ harness.check(a.getMessage(), "FontFormatException");
+
+ try {
+ throw new FontFormatException("");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "");
+ harness.check(t instanceof FontFormatException);
+ }
+
+ try {
+ throw new FontFormatException("FontFormatException");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "FontFormatException");
+ harness.check(t instanceof FontFormatException);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/FontMetrics/CVS/Entries b/gnu/testlet/java/awt/FontMetrics/CVS/Entries
new file mode 100644
index 00000000..642d1cd0
--- /dev/null
+++ b/gnu/testlet/java/awt/FontMetrics/CVS/Entries
@@ -0,0 +1,2 @@
+/TestLogicalFontMetrics.java/1.3/Thu Mar 16 22:08:55 2006//
+D
diff --git a/gnu/testlet/java/awt/FontMetrics/CVS/Repository b/gnu/testlet/java/awt/FontMetrics/CVS/Repository
new file mode 100644
index 00000000..29eceaf4
--- /dev/null
+++ b/gnu/testlet/java/awt/FontMetrics/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/FontMetrics
diff --git a/gnu/testlet/java/awt/FontMetrics/CVS/Root b/gnu/testlet/java/awt/FontMetrics/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/FontMetrics/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/FontMetrics/TestLogicalFontMetrics.java b/gnu/testlet/java/awt/FontMetrics/TestLogicalFontMetrics.java
new file mode 100644
index 00000000..7216cff8
--- /dev/null
+++ b/gnu/testlet/java/awt/FontMetrics/TestLogicalFontMetrics.java
@@ -0,0 +1,1845 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Red Hat
+
+// 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.java.awt.FontMetrics;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.io.*;
+
+/**
+ * Test that the metrics returned for the six logical fonts are
+ * similar to those returned by Sun's implementation.
+ */
+public class TestLogicalFontMetrics implements Testlet
+{
+ BufferedWriter ascentsWriter;
+ BufferedWriter descentsWriter;
+ BufferedWriter leadingWriter;
+
+ final int NUM_SIZES = 40;
+ final int NUM_STYLES = 4;
+
+ // Set this to true to create ascents.txt, descents.txt and
+ // leading.txt for the five logical fonts in the four possible
+ // styles, in sizes 0 through NUM_SIZES - 1.
+ static final boolean GENERATE_METRICS_DATA = false;
+
+ int[] ascents;
+ int[] descents;
+ int[] leading;
+ String[] fontNames;
+
+ TestHarness harness;
+
+ boolean paintedOnce = false;
+
+ int index = 0;
+
+ public int getTolerance (int size)
+ {
+ if (size < 19)
+ return 2;
+ else
+ return 5;
+ }
+
+ public void test (TestHarness h)
+ {
+ Frame f = new Frame ();
+
+ harness = h;
+
+ fontNames = new String[] { "Dialog", "DialogInput",
+ "Monospaced", "Serif", "SansSerif" };
+
+ // metrics data generated from previous runs against Sun
+ ascents = new int[]
+ {
+ // Dialog
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 20, 19, 20,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ // DialogInput
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 17, 18, 17,
+ // size 19
+ 19, 18, 19, 18,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 34, 35, 34,
+ // size 37
+ 36, 35, 36, 35,
+ // size 38
+ 37, 36, 37, 36,
+ // size 39
+ 38, 37, 38, 37,
+ // Monospaced
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 17, 18, 17,
+ // size 19
+ 19, 18, 19, 18,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 34, 35, 34,
+ // size 37
+ 36, 35, 36, 35,
+ // size 38
+ 37, 36, 37, 36,
+ // size 39
+ 38, 37, 38, 37,
+ // Serif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ // SansSerif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 20, 19, 20,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ // Dialog
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 20, 19, 20,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ // DialogInput
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 17, 18, 17,
+ // size 19
+ 19, 18, 19, 18,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 34, 35, 34,
+ // size 37
+ 36, 35, 36, 35,
+ // size 38
+ 37, 36, 37, 36,
+ // size 39
+ 38, 37, 38, 37,
+ // Monospaced
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 17, 18, 17,
+ // size 19
+ 19, 18, 19, 18,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 34, 35, 34,
+ // size 37
+ 36, 35, 36, 35,
+ // size 38
+ 37, 36, 37, 36,
+ // size 39
+ 38, 37, 38, 37,
+ // Serif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 19, 19, 19,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ // SansSerif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 2, 2, 2, 2,
+ // size 3
+ 3, 3, 3, 3,
+ // size 4
+ 4, 4, 4, 4,
+ // size 5
+ 5, 5, 5, 5,
+ // size 6
+ 6, 6, 6, 6,
+ // size 7
+ 7, 7, 7, 7,
+ // size 8
+ 8, 8, 8, 8,
+ // size 9
+ 9, 9, 9, 9,
+ // size 10
+ 10, 10, 10, 10,
+ // size 11
+ 11, 11, 11, 11,
+ // size 12
+ 12, 12, 12, 12,
+ // size 13
+ 13, 13, 13, 13,
+ // size 14
+ 14, 14, 14, 14,
+ // size 15
+ 15, 15, 15, 15,
+ // size 16
+ 16, 16, 16, 16,
+ // size 17
+ 17, 17, 17, 17,
+ // size 18
+ 18, 18, 18, 18,
+ // size 19
+ 19, 19, 19, 19,
+ // size 20
+ 19, 20, 19, 20,
+ // size 21
+ 20, 20, 20, 20,
+ // size 22
+ 21, 21, 21, 21,
+ // size 23
+ 22, 22, 22, 22,
+ // size 24
+ 23, 23, 23, 23,
+ // size 25
+ 24, 24, 24, 24,
+ // size 26
+ 25, 25, 25, 25,
+ // size 27
+ 26, 26, 26, 26,
+ // size 28
+ 27, 27, 27, 27,
+ // size 29
+ 28, 28, 28, 28,
+ // size 30
+ 29, 29, 29, 29,
+ // size 31
+ 30, 30, 30, 30,
+ // size 32
+ 31, 31, 31, 31,
+ // size 33
+ 32, 32, 32, 32,
+ // size 34
+ 33, 33, 33, 33,
+ // size 35
+ 34, 34, 34, 34,
+ // size 36
+ 35, 35, 35, 35,
+ // size 37
+ 36, 36, 36, 36,
+ // size 38
+ 37, 37, 37, 37,
+ // size 39
+ 38, 38, 38, 38,
+ };
+
+ descents = new int[]
+ {
+ // Dialog
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // DialogInput
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // Monospaced
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // Serif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 5, 5, 5,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 9, 9, 9,
+ // size 39
+ 9, 9, 9, 9,
+ // SansSerif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // Dialog
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // DialogInput
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // Monospaced
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ // Serif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 5, 5, 5,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 9, 9, 9,
+ // size 39
+ 9, 9, 9, 9,
+ // SansSerif
+ // size 0
+ 0, 0, 0, 0,
+ // size 1
+ 1, 1, 1, 1,
+ // size 2
+ 1, 1, 1, 1,
+ // size 3
+ 1, 1, 1, 1,
+ // size 4
+ 1, 1, 1, 1,
+ // size 5
+ 2, 2, 2, 2,
+ // size 6
+ 2, 2, 2, 2,
+ // size 7
+ 2, 2, 2, 2,
+ // size 8
+ 2, 2, 2, 2,
+ // size 9
+ 2, 2, 2, 2,
+ // size 10
+ 3, 3, 3, 3,
+ // size 11
+ 3, 3, 3, 3,
+ // size 12
+ 3, 3, 3, 3,
+ // size 13
+ 3, 3, 3, 3,
+ // size 14
+ 3, 3, 3, 3,
+ // size 15
+ 4, 4, 4, 4,
+ // size 16
+ 4, 4, 4, 4,
+ // size 17
+ 4, 4, 4, 4,
+ // size 18
+ 4, 4, 4, 4,
+ // size 19
+ 5, 4, 5, 4,
+ // size 20
+ 5, 5, 5, 5,
+ // size 21
+ 5, 5, 5, 5,
+ // size 22
+ 5, 5, 5, 5,
+ // size 23
+ 5, 5, 5, 5,
+ // size 24
+ 6, 6, 6, 6,
+ // size 25
+ 6, 6, 6, 6,
+ // size 26
+ 6, 6, 6, 6,
+ // size 27
+ 6, 6, 6, 6,
+ // size 28
+ 6, 6, 6, 6,
+ // size 29
+ 7, 7, 7, 7,
+ // size 30
+ 7, 7, 7, 7,
+ // size 31
+ 7, 7, 7, 7,
+ // size 32
+ 7, 7, 7, 7,
+ // size 33
+ 7, 7, 7, 7,
+ // size 34
+ 8, 8, 8, 8,
+ // size 35
+ 8, 8, 8, 8,
+ // size 36
+ 8, 8, 8, 8,
+ // size 37
+ 8, 8, 8, 8,
+ // size 38
+ 9, 8, 9, 8,
+ // size 39
+ 9, 9, 9, 9,
+ };
+
+ if (GENERATE_METRICS_DATA)
+ {
+ try
+ {
+ ascentsWriter = new BufferedWriter (new FileWriter (new File ("ascents.txt")));
+ descentsWriter = new BufferedWriter (new FileWriter (new File ("descents.txt")));
+ leadingWriter = new BufferedWriter (new FileWriter (new File ("leading.txt")));
+ }
+ catch (IOException e)
+ {
+ System.err.println ("error creating output files.");
+ }
+ }
+
+ Panel p = new Panel()
+ {
+ public void paint (Graphics g)
+ {
+ if (!paintedOnce)
+ {
+ for (int i = 0; i < fontNames.length; i++)
+ {
+ outputMetrics ("// " + fontNames[i] + "\n",
+ "// " + fontNames[i] + "\n",
+ "// " + fontNames[i] + "\n");
+
+ for (int j = 0; j < NUM_SIZES; j++)
+ {
+ outputMetrics ("// size " + j + "\n",
+ "// size " + j + "\n",
+ "// size " + j + "\n");
+
+ index = i * NUM_SIZES * NUM_STYLES + j * NUM_STYLES;
+
+ // PLAIN
+ g.setFont(new Font (fontNames[i], Font.PLAIN, j));
+ checkMetrics (g, fontNames[i], "PLAIN", j, index);
+
+ index++;
+
+ // BOLD
+ g.setFont(new Font (fontNames[i], Font.BOLD, j));
+ checkMetrics (g, fontNames[i], "BOLD", j, index);
+
+ index++;
+
+ // ITALIC
+ g.setFont(new Font (fontNames[i], Font.ITALIC, j));
+ checkMetrics (g, fontNames[i], "ITALIC", j, index);
+
+ index++;
+
+ // BOLD + ITALIC
+ g.setFont(new Font (fontNames[i], Font.BOLD | Font.ITALIC, j));
+ checkMetrics (g, fontNames[i], "BOLD + ITALIC", j, index);
+
+ outputMetrics ("\n", "\n", "\n");
+ }
+ }
+ paintedOnce = true;
+ }
+ }
+ };
+ p.setBackground(Color.blue);
+
+ f.setSize(300, 100);
+ f.add(p);
+
+ f.show();
+
+ while (!paintedOnce)
+ {
+ try
+ {
+ java.lang.Thread.sleep (2000);
+ }
+ catch (java.lang.InterruptedException e)
+ {
+ }
+ }
+
+ if (GENERATE_METRICS_DATA)
+ {
+ try
+ {
+ if (ascentsWriter != null)
+ ascentsWriter.close();
+ if (descentsWriter != null)
+ descentsWriter.close();
+ if (leadingWriter != null)
+ leadingWriter.close();
+ }
+ catch (IOException e)
+ {
+ System.err.println ("error closing output files.");
+ }
+ }
+ }
+
+ public void outputMetrics (String ascentString, String descentString, String leadingString)
+ {
+ if (GENERATE_METRICS_DATA)
+ {
+ try
+ {
+ ascentsWriter.write(ascentString);
+ descentsWriter.write(descentString);
+ leadingWriter.write(leadingString);
+ }
+ catch (IOException e)
+ {
+ System.err.println ("error writing to output files.");
+ }
+ }
+ }
+
+ public void checkMetrics (Graphics g, String name, String style, int size, int index)
+ {
+ FontMetrics f = g.getFontMetrics();
+
+ outputMetrics (f.getAscent() + ", ",
+ f.getDescent() + ", ",
+ f.getLeading() + ", ");
+
+ int ascent = f.getAscent();
+ if (ascent < ascents[index] - getTolerance(size) || ascent > ascents[index] + getTolerance(size))
+ harness.fail ("ascent: " + name + " " + style + " " + size
+ + " expected: " + ascents[index] + " got: " + ascent);
+
+ int descent = f.getDescent();
+ if (descent < descents[index] - getTolerance(size) || descent > descents[index] + getTolerance(size))
+ harness.fail ("descent: " + name + " " + style + " " + size
+ + " expected: " + descents[index] + " got: " + descent);
+
+ int leading = f.getLeading();
+ // Leading is always 0.
+ if (leading != 0)
+ harness.fail ("leading: " + name + " " + style + " " + size
+ + " expected: 0 got: " + leading);
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/CVS/Entries b/gnu/testlet/java/awt/Frame/CVS/Entries
new file mode 100644
index 00000000..40a497e7
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/CVS/Entries
@@ -0,0 +1,10 @@
+/isDisplayable1.java/1.4/Fri Sep 30 12:27:50 2011//
+/isDisplayable2.java/1.4/Fri Sep 30 12:27:50 2011//
+/isDisplayable3.java/1.4/Fri Sep 30 12:27:50 2011//
+/isDisplayable4.java/1.3/Fri Sep 30 12:27:50 2011//
+/isDisplayable5.java/1.3/Fri Sep 30 12:27:50 2011//
+/isDisplayable6.java/1.2/Fri Sep 30 12:27:50 2011//
+/isDisplayable7.java/1.2/Fri Sep 30 12:27:50 2011//
+/menubar.java/1.1/Tue Feb 14 16:18:58 2006//
+/size1.java/1.4/Wed Feb 22 17:45:35 2006//
+D
diff --git a/gnu/testlet/java/awt/Frame/CVS/Repository b/gnu/testlet/java/awt/Frame/CVS/Repository
new file mode 100644
index 00000000..9cd3d03f
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Frame
diff --git a/gnu/testlet/java/awt/Frame/CVS/Root b/gnu/testlet/java/awt/Frame/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable1.java b/gnu/testlet/java/awt/Frame/isDisplayable1.java
new file mode 100644
index 00000000..555b301e
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable1.java
@@ -0,0 +1,79 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests the behaviour of isDisplayable on Frames and Dialogs. Also
+ * check whether a Dialog's parent's "displayability" affects its
+ * displayability.
+ */
+public class isDisplayable1 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Dialog d = new Dialog (f);
+ Robot r = harness.createRobot ();
+
+ r.waitForIdle ();
+
+ // Check that the owner frame is set as the Dialog's parent.
+ harness.checkPoint ("parent check");
+ harness.check (d.getParent(), f);
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer (), null);
+ harness.check (d.getPeer (), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (d.isDisplayable (), false);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ // Parent Frame is displayable, child Dialog is not.
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer () != null);
+ harness.check (d.getPeer (), null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (d.isDisplayable (), false);
+
+ d.show ();
+
+ r.waitForIdle ();
+
+ // Dialog becomes displayable after it is shown.
+ harness.checkPoint ("after showing dialog");
+ harness.check (f.getPeer () != null);
+ harness.check (d.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (d.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable2.java b/gnu/testlet/java/awt/Frame/isDisplayable2.java
new file mode 100644
index 00000000..f442aee7
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable2.java
@@ -0,0 +1,77 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests whether showing a child Dialog causes the parent Frame to
+ * become displayable.
+ */
+public class isDisplayable2 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Dialog d = new Dialog (f);
+ Robot r = harness.createRobot ();
+
+ r.waitForIdle ();
+
+ // Check that the owner frame is set as the Dialog's parent.
+ harness.checkPoint ("parent check");
+ harness.check (d.getParent(), f);
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer (), null);
+ harness.check (d.getPeer (), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (d.isDisplayable (), false);
+
+ d.show ();
+
+ r.waitForIdle ();
+
+ // Dialog is shown which makes the Frame displayable.
+ harness.checkPoint ("after showing dialog");
+ harness.check (f.getPeer () != null);
+ harness.check (d.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (d.isDisplayable (), true);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer () != null);
+ harness.check (d.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (d.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable3.java b/gnu/testlet/java/awt/Frame/isDisplayable3.java
new file mode 100644
index 00000000..1d54c52c
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable3.java
@@ -0,0 +1,77 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests whether showing a parent Frame makes a child Component
+ * displayable.
+ */
+public class isDisplayable3 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Button b = new Button ();
+ f.add (b);
+ Robot r = harness.createRobot ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("parent check");
+ harness.check (b.getParent(), f);
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer (), null);
+ harness.check (b.getPeer (), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (b.isDisplayable (), false);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ // Showing the parent Frame makes the child Button displayable.
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer () != null);
+ harness.check (b.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ b.show ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after showing button");
+ harness.check (f.getPeer () != null);
+ harness.check (b.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable4.java b/gnu/testlet/java/awt/Frame/isDisplayable4.java
new file mode 100644
index 00000000..605dabf6
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable4.java
@@ -0,0 +1,74 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests that adding a Component to an already-displayable Frame
+ * causes the Component to become displayable.
+ */
+public class isDisplayable4 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Button b = new Button ();
+ Robot r = harness.createRobot ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer(), null);
+ harness.check (b.getPeer(), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (b.isDisplayable (), false);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer() != null);
+ harness.check (b.getPeer(), null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), false);
+
+ // Adding the button causes it to become displayable.
+ f.add(b);
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after adding button to frame");
+ harness.check (f.getPeer() != null);
+ harness.check (b.getPeer() != null);
+ harness.check (b.getParent(), f);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable5.java b/gnu/testlet/java/awt/Frame/isDisplayable5.java
new file mode 100644
index 00000000..4a5a8df3
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable5.java
@@ -0,0 +1,63 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests whether calling pack makes the whole hierarchy displayable.
+ */
+public class isDisplayable5 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Button b = new Button ();
+ Robot r = harness.createRobot ();
+
+ f.add(b);
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("before packing");
+ harness.check (f.getPeer(), null);
+ harness.check (b.getPeer(), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (b.isDisplayable (), false);
+
+ f.pack();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after packing frame");
+ harness.check (f.getPeer() != null);
+ harness.check (b.getPeer() != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable6.java b/gnu/testlet/java/awt/Frame/isDisplayable6.java
new file mode 100644
index 00000000..a5e98177
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable6.java
@@ -0,0 +1,81 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests that adding a not-visible Component to an already-displayable
+ * Frame causes the Component to become displayable.
+ */
+public class isDisplayable6 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Button b = new Button ();
+ Robot r = harness.createRobot ();
+
+ // Hide the button.
+ b.setVisible (false);
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer(), null);
+ harness.check (b.getPeer(), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (b.isDisplayable (), false);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer() != null);
+ harness.check (b.getPeer(), null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), false);
+
+ // Check if adding the hidden button causes it to become
+ // displayable.
+ f.add(b);
+
+ // Check if the button is made visible when it is added.
+ harness.check (!b.isVisible ());
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after adding button to frame");
+ harness.check (f.getPeer() != null);
+ harness.check (b.getPeer() != null);
+ harness.check (b.getParent(), f);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/isDisplayable7.java b/gnu/testlet/java/awt/Frame/isDisplayable7.java
new file mode 100644
index 00000000..fdfe94f3
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/isDisplayable7.java
@@ -0,0 +1,90 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005, 2011 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests that adding a not-visible Component to a Frame, then showing
+ * the Frame, causes the Component to become displayable.
+ */
+public class isDisplayable7 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Button b = new Button ();
+ Robot r = harness.createRobot ();
+
+ r.waitForIdle ();
+
+ // Hide the button.
+ b.setVisible (false);
+
+ // FIXME: this hangs with our Robot implementation:
+ // r.waitForIdle ();
+
+ f.add (b);
+
+ // Check if the button is made visible when it is added.
+ harness.check (!b.isVisible ());
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("parent check");
+ harness.check (b.getParent(), f);
+
+ harness.checkPoint ("before showing");
+ harness.check (f.getPeer (), null);
+ harness.check (b.getPeer (), null);
+ harness.check (f.isDisplayable (), false);
+ harness.check (b.isDisplayable (), false);
+
+ f.show ();
+
+ r.waitForIdle ();
+
+ // Check if showing the parent Frame makes the hidden child Button
+ // displayable.
+ harness.checkPoint ("after showing frame");
+ harness.check (f.getPeer () != null);
+ harness.check (b.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ b.show ();
+
+ r.waitForIdle ();
+
+ harness.checkPoint ("after showing button");
+ harness.check (f.getPeer () != null);
+ harness.check (b.getPeer () != null);
+ harness.check (f.isDisplayable (), true);
+ harness.check (b.isDisplayable (), true);
+
+ // time to clean up the frame from desktop
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/menubar.java b/gnu/testlet/java/awt/Frame/menubar.java
new file mode 100644
index 00000000..9bb74739
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/menubar.java
@@ -0,0 +1,54 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+
+// 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,Inc., 51 Franklin Street, Fifth Floor, Boston,
+// MA 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+public class menubar implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame();
+ harness.check(f.getMenuBar(), null);
+
+ MenuBar mb = new MenuBar();
+ f.setMenuBar(mb);
+ harness.check(f.getMenuBar(), mb);
+ harness.check(mb.getParent(), f);
+
+ f.remove(mb);
+ harness.check(f.getMenuBar(), null);
+ harness.check(mb.getParent(), null);
+
+ f.setMenuBar(mb);
+ harness.check(f.getMenuBar(), mb);
+ harness.check(mb.getParent(), f);
+
+ f.setMenuBar(null);
+ harness.check(f.getMenuBar(), null);
+ harness.check(mb.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Frame/size1.java b/gnu/testlet/java/awt/Frame/size1.java
new file mode 100644
index 00000000..ef4d9231
--- /dev/null
+++ b/gnu/testlet/java/awt/Frame/size1.java
@@ -0,0 +1,103 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Frame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+
+/**
+ * Check that a frame's size is set correctly when it is initially
+ * shown.
+ */
+public class size1 implements Testlet
+{
+ // a random background color that is unlikely to be used by the
+ // window decorations.
+ static Color nonWMColor = new Color (243, 133, 89);
+
+ class testFrame extends Frame
+ {
+ Color c;
+
+ public testFrame (Color c)
+ {
+ super ();
+
+ this.c = c;
+ }
+
+ public void paint (Graphics g)
+ {
+ Rectangle bounds = new Rectangle (0, 0,
+ this.getSize ().width,
+ this.getSize ().height);
+ g.setColor (c);
+ g.fillRect (bounds.x, bounds.y, bounds.width, bounds.height);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Robot r = harness.createRobot ();
+ Color c;
+ testFrame bg = new testFrame (nonWMColor);
+ testFrame fg = new testFrame (new Color (0, 0, 0));
+
+ int bg_x = 75;
+ int bg_y = 75;
+ int bg_width = 250;
+ int bg_height = 250;
+
+ int fg_x = 150;
+ int fg_y = 150;
+ int fg_width = 100;
+ int fg_height = 100;
+
+ bg.setLocation (bg_x, bg_y);
+ bg.setSize (bg_width, bg_height);
+
+ fg.setLocation (fg_x, fg_y);
+ fg.setSize (fg_width, fg_height);
+
+ bg.show ();
+ fg.show ();
+
+ // There is a delay to avoid any race conditions.
+ r.waitForIdle ();
+ r.delay (100);
+
+ Rectangle bounds = fg.getBounds();
+
+ // check the two pixels adjacent to each corner of the foreground
+ // frame.
+ LocationTests.checkRectangleOuterColors(harness, r, bounds, nonWMColor, true);
+
+ // check the frame's corner pixels.
+ LocationTests.checkRectangleCornerColors(harness, r, bounds, nonWMColor, false);
+
+ // There is a delay so the tester can see the result.
+ r.delay (3000);
+ }
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/CVS/Entries b/gnu/testlet/java/awt/GradientPaint/CVS/Entries
new file mode 100644
index 00000000..a9103a8e
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/CVS/Entries
@@ -0,0 +1,9 @@
+/constructors.java/1.1/Wed May 18 16:31:03 2005//
+/equals.java/1.1/Wed May 18 16:31:03 2005//
+/getColor1.java/1.1/Wed May 18 16:31:03 2005//
+/getColor2.java/1.1/Wed May 18 16:31:03 2005//
+/getPoint1.java/1.1/Wed May 18 16:31:03 2005//
+/getPoint2.java/1.1/Wed May 18 16:31:03 2005//
+/getTransparency.java/1.1/Wed May 18 16:31:03 2005//
+/isCyclic.java/1.1/Wed May 18 16:31:03 2005//
+D
diff --git a/gnu/testlet/java/awt/GradientPaint/CVS/Repository b/gnu/testlet/java/awt/GradientPaint/CVS/Repository
new file mode 100644
index 00000000..8c656fbc
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/GradientPaint
diff --git a/gnu/testlet/java/awt/GradientPaint/CVS/Root b/gnu/testlet/java/awt/GradientPaint/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/GradientPaint/constructors.java b/gnu/testlet/java/awt/GradientPaint/constructors.java
new file mode 100644
index 00000000..27cf9abe
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/constructors.java
@@ -0,0 +1,244 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.geom.Point2D;
+
+/**
+ * Some checks for the constructors in the {@link GradientPaint} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, Color, float, float, Color)");
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ harness.check(gp.getPoint1().getX(), 1.0);
+ harness.check(gp.getPoint1().getY(), 2.0);
+ harness.check(gp.getColor1(), Color.red);
+ harness.check(gp.getPoint2().getX(), 3.0);
+ harness.check(gp.getPoint2().getY(), 4.0);
+ harness.check(gp.getColor2(), Color.blue);
+ harness.check(gp.isCyclic(), false);
+
+ // try null arguments
+ boolean pass = false;
+ try
+ {
+ gp = new GradientPaint(1.0f, 2.0f, null, 3.0f, 4.0f, Color.blue);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, Color, float, float, Color, boolean)");
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue, true);
+ harness.check(gp.getPoint1().getX(), 1.0);
+ harness.check(gp.getPoint1().getY(), 2.0);
+ harness.check(gp.getColor1(), Color.red);
+ harness.check(gp.getPoint2().getX(), 3.0);
+ harness.check(gp.getPoint2().getY(), 4.0);
+ harness.check(gp.getColor2(), Color.blue);
+ harness.check(gp.isCyclic(), true);
+
+ // try null arguments
+ boolean pass = false;
+ try
+ {
+ gp = new GradientPaint(1.0f, 2.0f, null, 3.0f, 4.0f, Color.blue, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Point2D, Color, Point2D, Color)");
+ GradientPaint gp = new GradientPaint(
+ new Point2D.Float(1.0f, 2.0f), Color.red,
+ new Point2D.Float(3.0f, 4.0f), Color.blue
+ );
+ harness.check(gp.getPoint1().getX(), 1.0);
+ harness.check(gp.getPoint1().getY(), 2.0);
+ harness.check(gp.getColor1(), Color.red);
+ harness.check(gp.getPoint2().getX(), 3.0);
+ harness.check(gp.getPoint2().getY(), 4.0);
+ harness.check(gp.getColor2(), Color.blue);
+ harness.check(gp.isCyclic(), false);
+
+ // try null arguments
+ boolean pass = false;
+ try
+ {
+ gp = new GradientPaint(null, Color.red, new Point2D.Float(3.0f, 4.0f), Color.blue);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), null, new Point2D.Float(3.0f, 4.0f), Color.blue);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), Color.red, null, Color.blue);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), Color.red, new Point2D.Float(1.0f, 2.0f), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Point2D, Color, Point2D, Color, boolean)");
+ GradientPaint gp = new GradientPaint(
+ new Point2D.Float(1.0f, 2.0f), Color.red,
+ new Point2D.Float(3.0f, 4.0f), Color.blue, true
+ );
+ harness.check(gp.getPoint1().getX(), 1.0);
+ harness.check(gp.getPoint1().getY(), 2.0);
+ harness.check(gp.getColor1(), Color.red);
+ harness.check(gp.getPoint2().getX(), 3.0);
+ harness.check(gp.getPoint2().getY(), 4.0);
+ harness.check(gp.getColor2(), Color.blue);
+ harness.check(gp.isCyclic(), true);
+
+ // try null arguments
+ boolean pass = false;
+ try
+ {
+ gp = new GradientPaint(null, Color.red, new Point2D.Float(3.0f, 4.0f), Color.blue, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), null, new Point2D.Float(3.0f, 4.0f), Color.blue, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), Color.red, null, Color.blue, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ gp = new GradientPaint(new Point2D.Float(1.0f, 2.0f), Color.red, new Point2D.Float(1.0f, 2.0f), null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/equals.java b/gnu/testlet/java/awt/GradientPaint/equals.java
new file mode 100644
index 00000000..3a7fcfae
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/equals.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+
+/**
+ * Checks that the equals() method in the {@link GradientPaint} class works
+ * correctly. In this case, it doesn't override the method inherited from
+ * {@link Object}.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp1 = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ GradientPaint gp2 = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ harness.check(!gp1.equals(gp2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/getColor1.java b/gnu/testlet/java/awt/GradientPaint/getColor1.java
new file mode 100644
index 00000000..bdf281b1
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/getColor1.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+
+/**
+ * Some checks for the getColor1() method in the {@link GradientPaint} class.
+ */
+public class getColor1 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ harness.check(gp.getColor1(), Color.red);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/getColor2.java b/gnu/testlet/java/awt/GradientPaint/getColor2.java
new file mode 100644
index 00000000..83cc9d40
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/getColor2.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+
+/**
+ * Some checks for the getColor2() method in the {@link GradientPaint} class.
+ */
+public class getColor2 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ harness.check(gp.getColor2(), Color.blue);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/getPoint1.java b/gnu/testlet/java/awt/GradientPaint/getPoint1.java
new file mode 100644
index 00000000..c2a6236e
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/getPoint1.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.geom.Point2D;
+
+/**
+ * Some checks for the getPoint1() method in the {@link GradientPaint} class.
+ */
+public class getPoint1 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ Point2D p1 = gp.getPoint1();
+ harness.check(p1.getX(), 1.0);
+ harness.check(p1.getY(), 2.0);
+
+ // check that p1 has no connection to gp
+ p1.setLocation(3.0, 4.0);
+ Point2D p2 = gp.getPoint1();
+ harness.check(p2.getX(), 1.0);
+ harness.check(p2.getY(), 2.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/getPoint2.java b/gnu/testlet/java/awt/GradientPaint/getPoint2.java
new file mode 100644
index 00000000..b2b09e06
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/getPoint2.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.geom.Point2D;
+
+/**
+ * Some checks for the getPoint2() method in the {@link GradientPaint} class.
+ */
+public class getPoint2 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ Point2D p2 = gp.getPoint2();
+ harness.check(p2.getX(), 3.0);
+ harness.check(p2.getY(), 4.0);
+
+ // check that p2 has no connection to gp
+ p2.setLocation(5.0, 6.0);
+ Point2D pp = gp.getPoint2();
+ harness.check(pp.getX(), 3.0);
+ harness.check(pp.getY(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/getTransparency.java b/gnu/testlet/java/awt/GradientPaint/getTransparency.java
new file mode 100644
index 00000000..49510599
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/getTransparency.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.Transparency;
+
+/**
+ * Some checks for the getTransparency() method in the {@link GradientPaint}
+ * class works.
+ */
+public class getTransparency implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue);
+ harness.check(gp.getTransparency(), Transparency.OPAQUE);
+ gp = new GradientPaint(1.0f, 2.0f, new Color(1, 2, 3, 4), 3.0f, 4.0f, Color.blue);
+ harness.check(gp.getTransparency(), Transparency.TRANSLUCENT);
+ gp = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, new Color(1, 2, 3, 4));
+ harness.check(gp.getTransparency(), Transparency.TRANSLUCENT);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GradientPaint/isCyclic.java b/gnu/testlet/java/awt/GradientPaint/isCyclic.java
new file mode 100644
index 00000000..d9569afe
--- /dev/null
+++ b/gnu/testlet/java/awt/GradientPaint/isCyclic.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.GradientPaint;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+
+/**
+ * Checks that the isCyclic() method in the {@link GradientPaint} class works
+ * correctly.
+ */
+public class isCyclic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GradientPaint gp1 = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue, false);
+ GradientPaint gp2 = new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue, true);
+ harness.check(!gp1.isCyclic());
+ harness.check(gp2.isCyclic());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Graphics/CVS/Entries b/gnu/testlet/java/awt/Graphics/CVS/Entries
new file mode 100644
index 00000000..c60d145c
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics/CVS/Entries
@@ -0,0 +1,3 @@
+/TestPaintGraphics.java/1.2/Fri Mar 10 15:15:45 2006//
+/clearRect.java/1.1/Mon Oct 2 19:58:53 2006//
+D
diff --git a/gnu/testlet/java/awt/Graphics/CVS/Repository b/gnu/testlet/java/awt/Graphics/CVS/Repository
new file mode 100644
index 00000000..76eb3165
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Graphics
diff --git a/gnu/testlet/java/awt/Graphics/CVS/Root b/gnu/testlet/java/awt/Graphics/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Graphics/TestPaintGraphics.java b/gnu/testlet/java/awt/Graphics/TestPaintGraphics.java
new file mode 100644
index 00000000..ed9d4a22
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics/TestPaintGraphics.java
@@ -0,0 +1,68 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Red Hat
+
+// 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.java.awt.Graphics;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+/**
+ * Tests that the graphics object passed to paint is different every
+ * time.
+ */
+public class TestPaintGraphics implements Testlet
+{
+ boolean onePaintDone = false;
+ int firstGraphicsHashCode = 0;
+ int secondGraphicsHashCode = 0;
+
+ public void test (TestHarness harness)
+ {
+ Frame f = new Frame ();
+ Panel p = new Panel ()
+ {
+ public void paint (Graphics g)
+ {
+ if (!onePaintDone)
+ {
+ firstGraphicsHashCode = System.identityHashCode(g);
+ onePaintDone = true;
+ repaint();
+ }
+ else
+ {
+ if (secondGraphicsHashCode == 0)
+ secondGraphicsHashCode = System.identityHashCode(g);
+ }
+ }
+ };
+
+ f.add (p);
+ f.setSize (200, 200);
+ f.show ();
+ Robot r = harness.createRobot();
+ r.delay(2000);
+ harness.check(firstGraphicsHashCode != 0 && secondGraphicsHashCode != 0);
+ harness.check(firstGraphicsHashCode != secondGraphicsHashCode);
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics/clearRect.java b/gnu/testlet/java/awt/Graphics/clearRect.java
new file mode 100644
index 00000000..56f0bc1b
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics/clearRect.java
@@ -0,0 +1,87 @@
+/* clearRect.java -- checks for the clearRect() method in the Graphics class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+
+public class clearRect implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2d = (Graphics2D)img.getGraphics();
+
+ // The default, at least for BufferedImageGraphics
+ harness.check(g2d.getBackground(), new Color(0,0,0,255));
+ harness.check(img.getRaster().getSample(10, 10, 0), 0);
+ harness.check(img.getRaster().getSample(10, 10, 1), 0);
+ harness.check(img.getRaster().getSample(10, 10, 2), 0);
+ harness.check(img.getRaster().getSample(10, 10, 3), 0);
+
+ // Show that clearRect only depends on background, and ignores current
+ // color, composite, and paint
+ g2d.setColor(new Color(200, 200, 200, 50));
+ g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
+ g2d.setPaint(new GradientPaint(new Point2D.Double(0,0),
+ new Color(10, 10, 10),
+ new Point2D.Double(20, 20),
+ new Color(75, 75, 75),
+ true));
+
+ Color c = new Color(100, 100, 100);
+ g2d.setBackground(c);
+ g2d.clearRect(0, 0, 20, 20);
+ harness.check(img.isAlphaPremultiplied(), false);
+
+ harness.check(g2d.getBackground(), c);
+ harness.check(img.getRaster().getSample(10, 10, 0), 100);
+ harness.check(img.getRaster().getSample(10, 10, 1), 100);
+ harness.check(img.getRaster().getSample(10, 10, 2), 100);
+ harness.check(img.getRaster().getSample(10, 10, 3), 255);
+
+ // Show that the background is applied with a AlphaComposite.SRC rule,
+ // that is, the entire contents are directly replaced by the background
+ // and no compositing is performed.
+ c = new Color(200, 200, 200, 51);
+ g2d.setBackground(c);
+ g2d.clearRect(0, 0, 20, 20);
+ harness.check(img.isAlphaPremultiplied(), false);
+
+ harness.check(g2d.getBackground(), c);
+ harness.check(img.getRaster().getSample(10, 10, 0), 200);
+ harness.check(img.getRaster().getSample(10, 10, 1), 200);
+ harness.check(img.getRaster().getSample(10, 10, 2), 200);
+ harness.check(img.getRaster().getSample(10, 10, 3), 51);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Graphics2D/CVS/Entries b/gnu/testlet/java/awt/Graphics2D/CVS/Entries
new file mode 100644
index 00000000..f192b0fc
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/CVS/Entries
@@ -0,0 +1,8 @@
+/clip.java/1.1/Thu Jun 8 16:13:31 2006//
+/getClip.java/1.1/Thu Jun 8 16:13:31 2006//
+/getClipBounds.java/1.1/Thu Jun 8 16:13:31 2006//
+/security.java/1.2/Tue Jun 27 12:23:38 2006//
+/setClip.java/1.1/Thu Jun 8 16:13:31 2006//
+/setTransform.java/1.2/Tue Jun 13 07:39:07 2006//
+/transform.java/1.2/Tue Jun 13 07:39:07 2006//
+D
diff --git a/gnu/testlet/java/awt/Graphics2D/CVS/Repository b/gnu/testlet/java/awt/Graphics2D/CVS/Repository
new file mode 100644
index 00000000..f734c948
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Graphics2D
diff --git a/gnu/testlet/java/awt/Graphics2D/CVS/Root b/gnu/testlet/java/awt/Graphics2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Graphics2D/clip.java b/gnu/testlet/java/awt/Graphics2D/clip.java
new file mode 100644
index 00000000..a1c247bc
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/clip.java
@@ -0,0 +1,72 @@
+/* clip.java -- some checks for the clip() method in the Graphics2D class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+public class clip implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+ harness.check(g2.getClip(), null);
+ g2.clip(new Rectangle(1, 2, 3, 4));
+ harness.check(g2.getClip(), new Rectangle(1, 2, 3, 4));
+ g2.clip(new Rectangle(0, 1, 3, 2));
+ harness.check(g2.getClip(), new Rectangle(1, 2, 2, 1));
+
+ g2.setClip(null);
+ g2.translate(10, 20);
+ g2.clip(new Rectangle(1, 2, 3, 4));
+ harness.check(g2.getClip(), new Rectangle(1, 2, 3, 4));
+
+ // try a null argument - the API specification says that this will clear
+ // the clip, but in fact the reference implementation throws a
+ // NullPointerException - see the following entry in the bug parade:
+ // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6206189
+ boolean pass = false;
+ try
+ {
+ g2.clip(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/getClip.java b/gnu/testlet/java/awt/Graphics2D/getClip.java
new file mode 100644
index 00000000..5fece86f
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/getClip.java
@@ -0,0 +1,61 @@
+/* getClip.java -- some checks for the getClip() method in the Graphics2D
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+public class getClip implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ /**
+ * Checks for the Graphics2D from a BufferedImage.
+ *
+ * @param harness the test harness.
+ */
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+
+ harness.check(g2.getClip(), null);
+ g2.setClip(1, 2, 3, 4);
+ harness.check(g2.getClip(), new Rectangle(1, 2, 3, 4));
+
+ // null is a permitted value
+ g2.setClip(null);
+ harness.check(g2.getClip(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/getClipBounds.java b/gnu/testlet/java/awt/Graphics2D/getClipBounds.java
new file mode 100644
index 00000000..7859fd2a
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/getClipBounds.java
@@ -0,0 +1,61 @@
+/* getClipBounds.java -- some checks for the getClipBounds() method in the
+ Graphics2D class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+public class getClipBounds implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ /**
+ * Checks for the Graphics2D from a BufferedImage.
+ *
+ * @param harness the test harness.
+ */
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+
+ harness.check(g2.getClipBounds(), null);
+ g2.setClip(1, 2, 3, 4);
+ harness.check(g2.getClipBounds(), new Rectangle(1, 2, 3, 4));
+
+ // null is a permitted value
+ g2.setClip(null);
+ harness.check(g2.getClipBounds(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/security.java b/gnu/testlet/java/awt/Graphics2D/security.java
new file mode 100644
index 00000000..3aab98cb
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/security.java
@@ -0,0 +1,96 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2006 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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.java.awt.Graphics2D;
+
+import java.awt.AWTPermission;
+import java.awt.Composite;
+import java.awt.CompositeContext;
+import java.awt.Frame;
+import java.awt.Graphics2D;
+import java.awt.Window;
+import java.awt.RenderingHints;
+import java.awt.image.ColorModel;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ Window window = new Frame();
+ window.setVisible(true);
+
+ Graphics2D graphics2d = (Graphics2D) window.getGraphics();
+
+ Composite composite = new TestComposite();
+
+ Permission[] readDisplayPixels = new Permission[] {
+ new AWTPermission("readDisplayPixels")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.awt.Graphics2D-setComposite
+ harness.checkPoint("setComposite");
+ try {
+ sm.prepareChecks(readDisplayPixels);
+ try {
+ graphics2d.setComposite(composite);
+ }
+ catch (UnsupportedOperationException ex) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+
+ window.setVisible(false);
+ window.dispose();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestComposite implements Composite
+ {
+ public CompositeContext createContext(ColorModel srcColorModel,
+ ColorModel dstColorModel,
+ RenderingHints hints)
+ {
+ return null;
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/setClip.java b/gnu/testlet/java/awt/Graphics2D/setClip.java
new file mode 100644
index 00000000..4c33cf18
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/setClip.java
@@ -0,0 +1,64 @@
+/* setClip.java -- some checks for the setClip() method in the Graphics2D
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+public class setClip implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ /**
+ * Checks for the Graphics2D from a BufferedImage.
+ *
+ * @param harness the test harness.
+ */
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+
+ harness.check(g2.getClip(), null);
+ g2.setClip(1, 2, 3, 4);
+ harness.check(g2.getClip(), new Rectangle(1, 2, 3, 4));
+
+ g2.setClip(-1, -2, 10, 20);
+ harness.check(g2.getClip(), new Rectangle(-1, -2, 10, 20));
+
+ // null is a permitted value
+ g2.setClip(null);
+ harness.check(g2.getClip(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/setTransform.java b/gnu/testlet/java/awt/Graphics2D/setTransform.java
new file mode 100644
index 00000000..58eedc76
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/setTransform.java
@@ -0,0 +1,68 @@
+/* setTransform.java -- some checks for the setTransform() method in the
+ Graphics2D class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+public class setTransform implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ /**
+ * Checks for the Graphics2D from a BufferedImage.
+ *
+ * @param harness the test harness.
+ */
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+
+ // here we check what happens to the clip shape when a transform is
+ // set...
+ harness.check(g2.getTransform(), new AffineTransform());
+ g2.setClip(1, 2, 3, 4);
+ Shape currentClip = g2.getClip();
+ harness.check(currentClip, new Rectangle2D.Double(1, 2, 3, 4));
+ g2.transform(AffineTransform.getTranslateInstance(10.0, 20.0));
+ currentClip = g2.getClip();
+ harness.check(currentClip, new Rectangle2D.Double(-9, -18, 3, 4));
+ g2.setTransform(new AffineTransform());
+ currentClip = g2.getClip();
+ harness.check(currentClip, new Rectangle2D.Double(1, 2, 3, 4));
+ }
+}
diff --git a/gnu/testlet/java/awt/Graphics2D/transform.java b/gnu/testlet/java/awt/Graphics2D/transform.java
new file mode 100644
index 00000000..3aae9855
--- /dev/null
+++ b/gnu/testlet/java/awt/Graphics2D/transform.java
@@ -0,0 +1,75 @@
+/* transform.java -- some checks for the transform() method in the Graphics2D
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.Graphics2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+public class transform implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBufferedImageGraphics2D(harness);
+ }
+
+ /**
+ * Checks for the Graphics2D from a BufferedImage.
+ *
+ * @param harness the test harness.
+ */
+ public void testBufferedImageGraphics2D(TestHarness harness)
+ {
+ harness.checkPoint("BufferedImage Graphics2D");
+ BufferedImage image = new BufferedImage(100, 80,
+ BufferedImage.TYPE_INT_ARGB);
+ Graphics2D g2 = image.createGraphics();
+ harness.check(g2.getTransform().isIdentity());
+ g2.setTransform(new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0));
+ g2.transform(new AffineTransform(7.0, 8.0, 9.0, 10.0, 11.0, 12.0));
+ AffineTransform current = g2.getTransform();
+ harness.check(current.getScaleX(), 31.0);
+ harness.check(current.getScaleY(), 58.0);
+ harness.check(current.getShearX(), 39.0);
+ harness.check(current.getShearY(), 46.0);
+ harness.check(current.getTranslateX(), 52.0);
+ harness.check(current.getTranslateY(), 76.0);
+
+ // here we check what happens to the clip shape when a transform is
+ // applied...
+ g2.setTransform(new AffineTransform());
+ g2.setClip(1, 2, 3, 4);
+ Shape currentClip = g2.getClip();
+ harness.check(currentClip, new Rectangle2D.Double(1, 2, 3, 4));
+ g2.transform(AffineTransform.getTranslateInstance(10.0, 20.0));
+ currentClip = g2.getClip();
+ harness.check(currentClip, new Rectangle2D.Double(-9, -18, 3, 4));
+ }
+}
diff --git a/gnu/testlet/java/awt/GridBagLayout/AdjustForGravity.java b/gnu/testlet/java/awt/GridBagLayout/AdjustForGravity.java
new file mode 100644
index 00000000..fe0a71a7
--- /dev/null
+++ b/gnu/testlet/java/awt/GridBagLayout/AdjustForGravity.java
@@ -0,0 +1,309 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Red Hat
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridBagLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+
+/**
+ * Test GridBagLayout.AdjustForGravity.
+ */
+public class AdjustForGravity implements Testlet
+{
+ public class MyLayout extends GridBagLayout
+ {
+ public void AdjustForGravity(GridBagConstraints c, Rectangle r)
+ {
+ super.AdjustForGravity(c, r);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ MyLayout l = new MyLayout();
+ GridBagConstraints c = new GridBagConstraints();
+ Rectangle r = new Rectangle(4, 4, 10, 10);
+
+ // Check fill values.
+ Rectangle[] fillRects =
+ {
+ new Rectangle(9, 9, 0, 0),
+ new Rectangle(4, 4, 10, 10),
+ new Rectangle(4, 9, 10, 0),
+ new Rectangle(9, 4, 0, 10)
+ };
+
+ for (int i = GridBagConstraints.NONE;
+ i <= GridBagConstraints.VERTICAL;
+ i++)
+ {
+ r = new Rectangle(4, 4, 10, 10);
+ c.fill = i;
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(fillRects[i - GridBagConstraints.NONE]));
+ }
+
+ c.fill = GridBagConstraints.NONE;
+
+ // Check anchor values.
+ Rectangle[] anchorRects =
+ {
+ new Rectangle(9, 9, 0, 0),
+ new Rectangle(9, 4, 0, 0),
+ new Rectangle(14, 4, 0, 0),
+ new Rectangle(14, 9, 0, 0),
+ new Rectangle(14, 14, 0, 0),
+ new Rectangle(9, 14, 0, 0),
+ new Rectangle(4, 14, 0, 0),
+ new Rectangle(4, 9, 0, 0),
+ new Rectangle(4, 4, 0, 0)
+ };
+
+ for (int i = GridBagConstraints.CENTER;
+ i <= GridBagConstraints.NORTHWEST;
+ i++)
+ {
+ r = new Rectangle(4, 4, 10, 10);
+ c.anchor = i;
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(anchorRects[i - GridBagConstraints.CENTER]));
+ }
+
+ // Check inset values.
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(1, 4, 3, 0);
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(11, 8, 0, 0)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 4, 0, 1);
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(10, 9, 0, 0)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(2, 4, 3, 2);
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(10, 8, 0, 0)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(3, 4, 3, 3);
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(9, 9, 0, 0)));
+
+ // Check ipad values.
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 1;
+ c.ipady = 4;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(8, 7, 1, 4)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 2;
+ c.ipady = 3;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(8, 7, 2, 3)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 3;
+ c.ipady = 2;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(7, 8, 3, 2)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 4;
+ c.ipady = 1;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(7, 8, 4, 1)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 1;
+ c.ipady = 4;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(8, 4, 1, 10)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 2;
+ c.ipady = 3;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(8, 4, 2, 10)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 3;
+ c.ipady = 2;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(7, 4, 3, 10)));
+
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.VERTICAL;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 4;
+ c.ipady = 1;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(7, 4, 4, 10)));
+
+ // Check weight values.
+ c.anchor = GridBagConstraints.CENTER;
+ c.fill = GridBagConstraints.NONE;
+ c.insets = new Insets(0, 0, 0, 0);
+ c.ipadx = 0;
+ c.ipady = 0;
+ c.weightx = 0.3;
+ c.weighty = 0.3;
+ r = new Rectangle(4, 4, 10, 10);
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(new Rectangle(9, 9, 0, 0)));
+
+ // Check a range of fill and anchor values.
+ // gridwidth and gridheight have no effect.
+ c.gridwidth = 0;
+ c.gridheight = 0;
+ // gridx and gridy have no effect.
+ c.gridx = 0;
+ c.gridy = 0;
+ // weightx and weighty have no effect.
+ c.weightx = 0;
+ c.weighty = 0;
+
+ c.ipadx = 1;
+ c.ipady = 2;
+ c.insets.top = 3;
+ c.insets.right = 2;
+ c.insets.bottom = 1;
+ c.insets.left = 0;
+
+ Rectangle[] allRects =
+ {
+ new Rectangle(40, 28, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 28, 71, 2),
+ new Rectangle(40, 9, 1, 40),
+ new Rectangle(40, 9, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 9, 71, 2),
+ new Rectangle(40, 9, 1, 40),
+ new Rectangle(75, 9, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 9, 71, 2),
+ new Rectangle(75, 9, 1, 40),
+ new Rectangle(75, 28, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 28, 71, 2),
+ new Rectangle(75, 9, 1, 40),
+ new Rectangle(75, 47, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 47, 71, 2),
+ new Rectangle(75, 9, 1, 40),
+ new Rectangle(40, 47, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 47, 71, 2),
+ new Rectangle(40, 9, 1, 40),
+ new Rectangle(5, 47, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 47, 71, 2),
+ new Rectangle(5, 9, 1, 40),
+ new Rectangle(5, 28, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 28, 71, 2),
+ new Rectangle(5, 9, 1, 40),
+ new Rectangle(5, 9, 1, 2),
+ new Rectangle(5, 9, 71, 40),
+ new Rectangle(5, 9, 71, 2),
+ new Rectangle(5, 9, 1, 40)
+ };
+
+ int i = 0;
+ for (int anchor = GridBagConstraints.CENTER; anchor <= GridBagConstraints.NORTHWEST; anchor++)
+ {
+ for (int fill = GridBagConstraints.NONE; fill <= GridBagConstraints.VERTICAL; fill++)
+ {
+ c.anchor = anchor;
+ c.fill = fill;
+
+ r.x = 5;
+ r.y = 6;
+ r.width = 73;
+ r.height = 44;
+
+ l.AdjustForGravity(c, r);
+ h.check(r.equals(allRects[i]));
+ i++;
+ }
+ }
+ }
+
+ public void printConstraints(GridBagConstraints c)
+ {
+ System.out.println("fill = " + c.fill);
+ System.out.println("anchor = " + c.anchor);
+ System.out.println("gridheight = " + c.gridheight);
+ System.out.println("gridwidth = " + c.gridwidth);
+ System.out.println("gridx = " + c.gridx);
+ System.out.println("gridy = " + c.gridy);
+ System.out.println("insets = " + c.insets);
+ System.out.println("ipadx = " + c.ipadx);
+ System.out.println("ipady = " + c.ipady);
+ System.out.println("weightx = " + c.weightx);
+ System.out.println("weighty = " + c.weighty);
+ }
+
+ public void printRectangle(Rectangle r)
+ {
+ System.out.println("new Rectangle("
+ + r.x + ", "
+ + r.y + ", "
+ + r.width + ", "
+ + r.height + "),");
+ }
+}
diff --git a/gnu/testlet/java/awt/GridBagLayout/CVS/Entries b/gnu/testlet/java/awt/GridBagLayout/CVS/Entries
new file mode 100644
index 00000000..4540a875
--- /dev/null
+++ b/gnu/testlet/java/awt/GridBagLayout/CVS/Entries
@@ -0,0 +1,3 @@
+/AdjustForGravity.java/1.1/Sun Jun 18 19:08:32 2006//
+/toString.java/1.1/Wed Nov 1 16:51:40 2006//
+D
diff --git a/gnu/testlet/java/awt/GridBagLayout/CVS/Repository b/gnu/testlet/java/awt/GridBagLayout/CVS/Repository
new file mode 100644
index 00000000..635840d2
--- /dev/null
+++ b/gnu/testlet/java/awt/GridBagLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/GridBagLayout
diff --git a/gnu/testlet/java/awt/GridBagLayout/CVS/Root b/gnu/testlet/java/awt/GridBagLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/GridBagLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/GridBagLayout/toString.java b/gnu/testlet/java/awt/GridBagLayout/toString.java
new file mode 100644
index 00000000..918a7c8c
--- /dev/null
+++ b/gnu/testlet/java/awt/GridBagLayout/toString.java
@@ -0,0 +1,44 @@
+/* toString.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.GridBagLayout;
+
+import java.awt.Button;
+import java.awt.GridBagLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class toString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ GridBagLayout gbl = new GridBagLayout();
+ harness.check(gbl.toString(), "java.awt.GridBagLayout");
+
+ gbl.addLayoutComponent("String", new Button("Button"));
+ harness.check(gbl.toString(), "java.awt.GridBagLayout");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/CVS/Entries b/gnu/testlet/java/awt/GridLayout/CVS/Entries
new file mode 100644
index 00000000..a586b1c3
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/CVS/Entries
@@ -0,0 +1,24 @@
+/PaintTestBiggerGaps.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestBiggerHgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestBiggerVgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestFiveRowsBiggerVgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestFiveRowsFiveCanvases.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestOneRowBiggerHgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestOneRowFiveCanvases.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestTwoRowsFiveCanvases.java/1.2/Fri Dec 9 15:27:07 2011//
+/PaintTestZeroGaps.java/1.3/Fri Dec 9 15:27:07 2011//
+/PaintTestZeroHgap.java/1.3/Fri Dec 9 15:27:07 2011//
+/PaintTestZeroVgap.java/1.3/Fri Dec 9 15:27:07 2011//
+/addLayoutComponent.java/1.1/Fri Nov 25 14:43:18 2011//
+/getColumns.java/1.1/Mon Dec 12 12:45:58 2011//
+/getHgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/getRows.java/1.1/Mon Dec 12 12:45:58 2011//
+/getVgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/minimumLayoutSize.java/1.2/Fri Dec 9 15:27:07 2011//
+/removeLayoutComponent.java/1.1/Fri Nov 25 14:43:18 2011//
+/setColumns.java/1.1/Mon Dec 12 12:45:58 2011//
+/setHgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/setRows.java/1.1/Mon Dec 12 12:45:58 2011//
+/setVgap.java/1.2/Fri Dec 9 15:27:07 2011//
+/toString.java/1.3/Fri Dec 9 15:27:07 2011//
+D
diff --git a/gnu/testlet/java/awt/GridLayout/CVS/Repository b/gnu/testlet/java/awt/GridLayout/CVS/Repository
new file mode 100644
index 00000000..b5ecb41d
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/GridLayout
diff --git a/gnu/testlet/java/awt/GridLayout/CVS/Root b/gnu/testlet/java/awt/GridLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java
new file mode 100644
index 00000000..2354ddbb
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerGaps.java
@@ -0,0 +1,367 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using bigger horizontal and vertical gaps
+ * between components.
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+---+----------------+---+----------------+
+ * | | | | | |
+ * | Canvas 1 | | Canvas 2 | | Canvas 3 |
+ * | | S | | S | |
+ * +----------------+ p +----------------+ p +----------------+
+ * | Space a Space a Space |
+ * +----------------+ c +----------------+ c |
+ * | | e | | e background |
+ * | Canvas 4 | | Canvas 5 | color |
+ * | | | | |
+ * +----------------+---+----------------+--------------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+---+----------------+---+----------------+
+ * | | | | | |
+ * | * | * | * | * | * |
+ * | | | | | |
+ * +----------------+ +----------------+ +----------------+
+ * | * * * * |
+ * +----------------+ +----------------+ |
+ * | | | | |
+ * | * | * | * | * |
+ * | | | | |
+ * +----------------+---+----------------+--------------------+
+ * </pre>
+ */
+public class PaintTestBiggerGaps
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setHgap(50);
+ layout.setVgap(50);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // vertical spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4), Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5), Color.red);
+
+ // other spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5), Color.red);
+ harness.checkPoint("space check #7");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java
new file mode 100644
index 00000000..26a7d207
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerHgap.java
@@ -0,0 +1,362 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using bigger horizontal gaps
+ * between components.
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+---+----------------+---+----------------+
+ * | | | | | |
+ * | Canvas 1 | S | Canvas 2 | S | Canvas 3 |
+ * | | p | | p | |
+ * +----------------+ a +----------------+ a +----------------+
+ * | | c | | c background |
+ * | Canvas 4 | e | Canvas 5 | e color |
+ * | | | | |
+ * +----------------+---+----------------+--------------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+---+----------------+---+----------------+
+ * | | | | | |
+ * | * | * | * | * | * |
+ * | | | | | |
+ * +-------*--------+ * +-------*--------+ * +----------------+
+ * | | | | |
+ * | * | * | * | * |
+ * | | | | |
+ * +----------------+---+----------------+--------------------+
+ * </pre>
+ */
+public class PaintTestBiggerHgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setHgap(50);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4) != Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5) != Color.red);
+
+ // other spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5), Color.red);
+ harness.checkPoint("space check #7");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java
new file mode 100644
index 00000000..b93b787c
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestBiggerVgap.java
@@ -0,0 +1,366 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using bigger vertical gaps
+ * between components.
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | Canvas 1 | Canvas 2 | Canvas 3 |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * | Space Space Space |
+ * +----------------+----------------+ |
+ * | | | background |
+ * | Canvas 4 | Canvas 5 | color |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | * * * * * |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * | * * * * |
+ * +----------------+----------------+ |
+ * | | | |
+ * | * * * | * |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ */
+public class PaintTestBiggerVgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setVgap(50);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // vertical spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4), Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5), Color.red);
+
+ // other spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5), Color.red);
+ harness.checkPoint("space check #7");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java
new file mode 100644
index 00000000..7bf98ffc
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsBiggerVgap.java
@@ -0,0 +1,292 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * All five canvases are stacked in one column and bigger vertical gap is inserted
+ * between them.
+ */
+public class PaintTestFiveRowsBiggerVgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(5, 1);
+ layout.setVgap(50);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // vertical spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4), Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java b/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java
new file mode 100644
index 00000000..9a7bbaa5
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestFiveRowsFiveCanvases.java
@@ -0,0 +1,287 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ */
+public class PaintTestFiveRowsFiveCanvases
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new GridLayout(5, 1));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4) != Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java
new file mode 100644
index 00000000..366cf48a
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestOneRowBiggerHgap.java
@@ -0,0 +1,290 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ */
+public class PaintTestOneRowBiggerHgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ layout.setHgap(50);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // vertical spaces between components
+ // these are positive tests - background should be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2), Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3), Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4), Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java b/gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java
new file mode 100644
index 00000000..2bf66021
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestOneRowFiveCanvases.java
@@ -0,0 +1,287 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ */
+public class PaintTestOneRowFiveCanvases
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new GridLayout());
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4) != Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java b/gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java
new file mode 100644
index 00000000..75366bfb
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestTwoRowsFiveCanvases.java
@@ -0,0 +1,321 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ */
+public class PaintTestTwoRowsFiveCanvases
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.setLayout(new GridLayout(2, 3));
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas3, canvas4) != Color.red);
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4) != Color.red);
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5) != Color.red);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java b/gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java
new file mode 100644
index 00000000..710148ce
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestZeroGaps.java
@@ -0,0 +1,360 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using zero horizontal and vertical gaps
+ * between components.
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | Canvas 1 | Canvas 2 | Canvas 3 |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * | | | background |
+ * | Canvas 4 | Canvas 5 | color |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | * * * * * |
+ * | | | |
+ * +-------*--------*-------*--------+----------------+
+ * | | | |
+ * | * * * | * |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ */
+public class PaintTestZeroGaps
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setHgap(0);
+ layout.setVgap(0);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4) != Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5) != Color.red);
+
+ // other spaces between components
+ // this is negative test too
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5) != Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java
new file mode 100644
index 00000000..70fe6d83
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestZeroHgap.java
@@ -0,0 +1,359 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using zero horizontal gaps and default
+ * vertical gaps between components (this should be also zero).
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | Canvas 1 | Canvas 2 | Canvas 3 |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * | | | background |
+ * | Canvas 4 | Canvas 5 | color |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | * * * * * |
+ * | | | |
+ * +-------*--------*-------*--------+----------------+
+ * | | | |
+ * | * * * | * |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ */
+public class PaintTestZeroHgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setHgap(0);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4) != Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5) != Color.red);
+
+ // other spaces between components
+ // this is negative test too
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5) != Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java b/gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java
new file mode 100644
index 00000000..4b840cff
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/PaintTestZeroVgap.java
@@ -0,0 +1,359 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.GridLayout;
+
+/**
+ * Test if five canvases are positioned correctly to a frame using GridLayout.
+ * GridLayout object is constructed using zero vertical gaps and default
+ * horizontal gaps between components (this should be also zero).
+ *
+ * Frame has following layout:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | Canvas 1 | Canvas 2 | Canvas 3 |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * | | | background |
+ * | Canvas 4 | Canvas 5 | color |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ *
+ * Position of five canvases is tested by checking pixel colors in places
+ * marked by a star:
+ * <pre>
+ * +----------------+----------------+----------------+
+ * | | | |
+ * | * * * * * |
+ * | | | |
+ * +-------*--------*-------*--------+----------------+
+ * | | | |
+ * | * * * | * |
+ * | | | |
+ * +----------------+----------------+----------------+
+ * </pre>
+ */
+public class PaintTestZeroVgap
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Serial version UID because Panel is serializable.
+ */
+ private static final long serialVersionUID = 42L;
+
+ /**
+ * Delay (pause times) for an AWT robot.
+ */
+ public static int DELAY_AMOUNT=250;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout(2, 3);
+ layout.setVgap(0);
+
+ this.setLayout(layout);
+ setBackground(Color.red);
+ Frame frame = new Frame();
+
+ // create five components and add them to the panel
+ Canvas canvas1 = new Canvas();
+ Canvas canvas2 = new Canvas();
+ Canvas canvas3 = new Canvas();
+ Canvas canvas4 = new Canvas();
+ Canvas canvas5 = new Canvas();
+
+ // size of all five canvases
+ canvas1.setSize(100,100);
+ canvas2.setSize(100,100);
+ canvas3.setSize(100,100);
+ canvas4.setSize(100,100);
+ canvas5.setSize(100,100);
+
+ // background of canvases
+ canvas1.setBackground(Color.blue);
+ canvas2.setBackground(Color.yellow);
+ canvas3.setBackground(Color.magenta);
+ canvas4.setBackground(Color.yellow);
+ canvas5.setBackground(Color.blue);
+
+ // canvases on frame
+ add(canvas1);
+ add(canvas2);
+ add(canvas3);
+ add(canvas4);
+ add(canvas5);
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // check if the first component is properly shown on the panel
+ harness.checkPoint("first component");
+ harness.check(getColorForComponent(robot, frame, canvas1), Color.blue);
+
+ // check if the second component is properly shown on the panel
+ harness.checkPoint("second component");
+ harness.check(getColorForComponent(robot, frame, canvas2), Color.yellow);
+
+ // check if the third component is properly shown on the panel
+ harness.checkPoint("third component");
+ harness.check(getColorForComponent(robot, frame, canvas3), Color.magenta);
+
+ // check if the fourth component is properly shown on the panel
+ harness.checkPoint("fourth component");
+ harness.check(getColorForComponent(robot, frame, canvas4), Color.yellow);
+
+ // check if the fifth component is properly shown on the panel
+ harness.checkPoint("fifth component");
+ harness.check(getColorForComponent(robot, frame, canvas5), Color.blue);
+
+ // check background color
+ harness.checkPoint("background");
+ harness.check(getBackgroundColor(robot, frame, canvas3, canvas5), Color.red);
+
+ // horizontal spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #1");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas2) != Color.red);
+ harness.checkPoint("space check #2");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas3) != Color.red);
+ harness.checkPoint("space check #3");
+ harness.check(getColorBetweenComponents(robot, frame, canvas4, canvas5) != Color.red);
+
+ // vertical spaces between components
+ // these are negative tests - background should not be visible between components
+ harness.checkPoint("space check #4");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas4) != Color.red);
+ harness.checkPoint("space check #5");
+ harness.check(getColorBetweenComponents(robot, frame, canvas2, canvas5) != Color.red);
+
+ // other spaces between components
+ // this is negative test too
+ harness.checkPoint("space check #6");
+ harness.check(getColorBetweenComponents(robot, frame, canvas1, canvas5) != Color.red);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(DELAY_AMOUNT);
+
+ // it's necesarry to clean up the component from desktop
+ frame.dispose();
+ }
+
+
+
+ /**
+ * Get color of a pixel located in the middle of the component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getColorForComponent(Robot robot, Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get background color. Background is located under the third component.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Color getBackgroundColor(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds1 = computeBounds(frame, component1);
+ Rectangle bounds2 = computeBounds(frame, component2);
+
+ // position of checked pixel
+ int checkedPixelX = bounds1.x + bounds1.width / 2;
+ int checkedPixelY = bounds2.y + bounds2.height / 2;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Get color of a pixel located between two components.
+ *
+ * @param robot instance of AWT robot
+ * @param frame frame where component is used
+ * @param component1 first tested component
+ * @param component2 second tested component
+ */
+ private Color getColorBetweenComponents(Robot robot, Frame frame, Component component1, Component component2)
+ {
+ // compute center of the first component
+ Point p1 = computeCenterOfComponent(frame, component1);
+ // compute center of the second component
+ Point p2 = computeCenterOfComponent(frame, component2);
+
+ // compute position of checked pixel
+ int checkedPixelX = (p1.x + p2.x) >> 1;
+ int checkedPixelY = (p1.y + p2.y) >> 1;
+
+ // move mouse cursor to center of a rectangle
+ moveCursorToGivenPosition(robot, checkedPixelX, checkedPixelY);
+
+ // check the color of a pixel located in the canvas center
+ return robot.getPixelColor(checkedPixelX, checkedPixelY);
+ }
+
+
+ /**
+ * Compute coordinates of a pixel located in the middle of the component.
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ */
+ private Point computeCenterOfComponent(Frame frame, Component component)
+ {
+ // compute the absolute coordinates of a component inside the frame
+ Rectangle bounds = computeBounds(frame, component);
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // return computed center (position of a checked pixel)
+ return new Point(checkedPixelX, checkedPixelY);
+ }
+
+
+
+ /**
+ * Compute absolute coordinates of a component inside the frame
+ *
+ * @param frame frame where component is used
+ * @param component tested component
+ *
+ * @return coordinates of a component inside the frame
+ */
+ private Rectangle computeBounds(Frame frame, Component component)
+ {
+ Rectangle bounds = component.getBounds();
+ Point location = frame.getLocationOnScreen();
+ Insets insets = frame.getInsets();
+ bounds.x += insets.left + location.x;
+ bounds.y += insets.top + location.y;
+
+ // return computed bounds
+ return bounds;
+ }
+
+
+
+ /**
+ * Move mouse cursor to center of a rectangle
+ *
+ * @param robot instance of AWT robot
+ * @param checkedPixelX x-coordinate of pixel on a screen
+ * @param checkedPixelY y-coordinate of pixel on a screen
+ */
+ private void moveCursorToGivenPosition(Robot robot, int checkedPixelX, int checkedPixelY)
+ {
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.delay(DELAY_AMOUNT);
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(DELAY_AMOUNT);
+ robot.waitForIdle();
+ }
+
+
+
+ /**
+ * Paint method for a panel where components are tested.
+ *
+ * @param graphics the graphics context to use for painting
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/addLayoutComponent.java b/gnu/testlet/java/awt/GridLayout/addLayoutComponent.java
new file mode 100644
index 00000000..dde33470
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/addLayoutComponent.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+import java.awt.Component;
+import java.awt.Canvas;
+import java.awt.Button;
+import java.awt.Panel;
+
+/**
+ * Check for the functionality of method GridLayout.addLayoutComponent
+ */
+public class addLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testButton(harness);
+ testCanvas(harness);
+ }
+
+ /**
+ * Test the method GridLayout.addLayoutComponent for a Button widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testButton(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Button)");
+ GridLayout layout = new GridLayout();
+ Button component = new Button();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Test the method GridLayout.addLayoutComponent for a Canvas widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testCanvas(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Canvas)");
+ GridLayout layout = new GridLayout();
+ Canvas component = new Canvas();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Check the add/remove component method using all possible constraints.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of GridLayout manager
+ * @param component selected component
+ */
+ private void checkAllPossibleConstraints(TestHarness harness, GridLayout layout, Component component)
+ {
+ checkAddRemove(harness, layout, component, "");
+ checkAddRemove(harness, layout, component, " ");
+ checkAddRemove(harness, layout, component, "xyzzy");
+ checkAddRemove(harness, layout, component, null);
+ }
+
+ /**
+ * Add specified component to the layout manager and then remove this component.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of GridLayout manager
+ * @param component selected component
+ * @param name component name
+ */
+ private void checkAddRemove(TestHarness harness, GridLayout layout, Component component, String name)
+ {
+ try {
+ layout.addLayoutComponent(name, component);
+ }
+ catch (IllegalArgumentException e) {
+ harness.fail(e.toString());
+ }
+ layout.removeLayoutComponent(component);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/getColumns.java b/gnu/testlet/java/awt/GridLayout/getColumns.java
new file mode 100644
index 00000000..1a31ce1e
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/getColumns.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#getColumns()} method in the {@link GridLayout} class.
+ */
+public class getColumns implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ harness.check(layout.getColumns(), 0);
+ layout.setColumns(10);
+ harness.check(layout.getColumns(), 10);
+ layout.setColumns(0);
+ harness.check(layout.getColumns(), 0);
+ layout.setColumns(-10);
+ harness.check(layout.getColumns(), -10);
+
+ layout = new GridLayout(10, 20);
+ harness.check(layout.getColumns(), 20);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/getHgap.java b/gnu/testlet/java/awt/GridLayout/getHgap.java
new file mode 100644
index 00000000..719018b7
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/getHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#getHgap()} method in the {@link GridLayout} class.
+ */
+public class getHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ layout.setHgap(42);
+ harness.check(layout.getHgap(), 42);
+ layout.setHgap(-42);
+ harness.check(layout.getHgap(), -42);
+ layout.setHgap(0);
+ harness.check(layout.getHgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/getRows.java b/gnu/testlet/java/awt/GridLayout/getRows.java
new file mode 100644
index 00000000..6570fe17
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/getRows.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#getRows()} method in the {@link GridLayout} class.
+ */
+public class getRows implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ harness.check(layout.getRows(), 1);
+ layout.setRows(10);
+
+ harness.check(layout.getRows(), 10);
+ try {
+ layout.setRows(0);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // nothing happens
+ harness.check(layout.getRows(), 10);
+
+ layout.setRows(-10);
+ harness.check(layout.getRows(), -10);
+
+ layout = new GridLayout(10, 20);
+ harness.check(layout.getRows(), 10);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/getVgap.java b/gnu/testlet/java/awt/GridLayout/getVgap.java
new file mode 100644
index 00000000..5a9a37ca
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/getVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#getVgap()} method in the {@link GridLayout} class.
+ */
+public class getVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ layout.setVgap(42);
+ harness.check(layout.getVgap(), 42);
+ layout.setVgap(-42);
+ harness.check(layout.getVgap(), -42);
+ layout.setVgap(0);
+ harness.check(layout.getVgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java b/gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..5c0e717b
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/minimumLayoutSize.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.0
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+
+
+/**
+ * Check the method {@link GridLayout#minimumLayoutSize(Container)}
+ */
+public class minimumLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Container container = new Container();
+ GridLayout layout = new GridLayout();
+
+ // The minimum width of a grid layout is the largest minimum width of any
+ // of the components in the container times the number of columns, plus the
+ // horizontal padding times the number of columns plus one, plus the left
+ // and right insets of the target container.
+ harness.check(layout.minimumLayoutSize(container), new Dimension(0, 0));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/removeLayoutComponent.java b/gnu/testlet/java/awt/GridLayout/removeLayoutComponent.java
new file mode 100644
index 00000000..0c8b77f6
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/removeLayoutComponent.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+import java.awt.Component;
+import java.awt.Canvas;
+import java.awt.Button;
+import java.awt.Panel;
+
+/**
+ * Check for the functionality of method GridLayout.removeLayoutComponent
+ */
+public class removeLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testButton(harness);
+ testCanvas(harness);
+ }
+
+ /**
+ * Test the method GridLayout.removeLayoutComponent for a Button widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testButton(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Button)");
+ GridLayout layout = new GridLayout();
+ Button component = new Button();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Test the method GridLayout.removeLayoutComponent for a Canvas widget.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testCanvas(TestHarness harness)
+ {
+ harness.checkPoint("removeLayoutComponent(Canvas)");
+ GridLayout layout = new GridLayout();
+ Canvas component = new Canvas();
+
+ // Check the add/remove component method using all possible constraints.
+ checkAllPossibleConstraints(harness, layout, component);
+ }
+
+ /**
+ * Check the add/remove component method using all possible constraints.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of GridLayout manager
+ * @param component selected component
+ */
+ private void checkAllPossibleConstraints(TestHarness harness, GridLayout layout, Component component)
+ {
+ checkAddRemove(harness, layout, component, "");
+ checkAddRemove(harness, layout, component, " ");
+ checkAddRemove(harness, layout, component, "xyzzy");
+ checkAddRemove(harness, layout, component, null);
+ }
+
+ /**
+ * Add specified component to the layout manager and then remove this component.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ * @param layout instance of GridLayout manager
+ * @param component selected component
+ * @param name component name
+ */
+ private void checkAddRemove(TestHarness harness, GridLayout layout, Component component, String name)
+ {
+ try {
+ layout.addLayoutComponent(name, component);
+ }
+ catch (IllegalArgumentException e) {
+ harness.fail(e.getMessage());
+ }
+ layout.removeLayoutComponent(component);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/GridLayout/setColumns.java b/gnu/testlet/java/awt/GridLayout/setColumns.java
new file mode 100644
index 00000000..12cc3611
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/setColumns.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#setColumns()} method in the {@link GridLayout} class.
+ */
+public class setColumns implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ harness.check(layout.getColumns(), 0);
+ layout.setColumns(10);
+ harness.check(layout.getColumns(), 10);
+ layout.setColumns(0);
+ harness.check(layout.getColumns(), 0);
+ layout.setColumns(-10);
+ harness.check(layout.getColumns(), -10);
+
+ layout = new GridLayout(10, 20);
+ harness.check(layout.getColumns(), 20);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/setHgap.java b/gnu/testlet/java/awt/GridLayout/setHgap.java
new file mode 100644
index 00000000..8490260e
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/setHgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#setHgap()} method in the {@link GridLayout} class.
+ */
+public class setHgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ layout.setHgap(42);
+ harness.check(layout.getHgap(), 42);
+ layout.setHgap(-42);
+ harness.check(layout.getHgap(), -42);
+ layout.setHgap(0);
+ harness.check(layout.getHgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/setRows.java b/gnu/testlet/java/awt/GridLayout/setRows.java
new file mode 100644
index 00000000..5c4c91f8
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/setRows.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#setRows()} method in the {@link GridLayout} class.
+ */
+public class setRows implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ harness.check(layout.getRows(), 1);
+ layout.setRows(10);
+
+ harness.check(layout.getRows(), 10);
+ try {
+ layout.setRows(0);
+ // should not happen
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // nothing happens
+ harness.check(layout.getRows(), 10);
+
+ layout.setRows(-10);
+ harness.check(layout.getRows(), -10);
+
+ layout = new GridLayout(10, 20);
+ harness.check(layout.getRows(), 10);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/setVgap.java b/gnu/testlet/java/awt/GridLayout/setVgap.java
new file mode 100644
index 00000000..d87d2127
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/setVgap.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Basic checks for the {@link GridLayout#setVgap()} method in the {@link GridLayout} class.
+ */
+public class setVgap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GridLayout layout = new GridLayout();
+ layout.setVgap(42);
+ harness.check(layout.getVgap(), 42);
+ layout.setVgap(-42);
+ harness.check(layout.getVgap(), -42);
+ layout.setVgap(0);
+ harness.check(layout.getVgap(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/GridLayout/toString.java b/gnu/testlet/java/awt/GridLayout/toString.java
new file mode 100644
index 00000000..a897abb2
--- /dev/null
+++ b/gnu/testlet/java/awt/GridLayout/toString.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.GridLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.GridLayout;
+
+/**
+ * Test of method {@link GridLayout#toString()}
+ */
+public class toString
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ GridLayout gridLayout1 = new GridLayout();
+ gridLayout1.toString();
+ harness.check(gridLayout1.toString(), "java.awt.GridLayout[hgap=0,vgap=0,rows=1,cols=0]");
+
+ // test constructor with two parameters
+ GridLayout gridLayout2 = new GridLayout(50, 50);
+ gridLayout2.toString();
+ harness.check(gridLayout2.toString(), "java.awt.GridLayout[hgap=0,vgap=0,rows=50,cols=50]");
+
+ // test constructor with four parameters
+ GridLayout gridLayout3 = new GridLayout(50, 50, 10, 20);
+ gridLayout3.toString();
+ harness.check(gridLayout3.toString(), "java.awt.GridLayout[hgap=10,vgap=20,rows=50,cols=50]");
+ }
+}
diff --git a/gnu/testlet/java/awt/HeadlessException/CVS/Entries b/gnu/testlet/java/awt/HeadlessException/CVS/Entries
new file mode 100644
index 00000000..fb3d679a
--- /dev/null
+++ b/gnu/testlet/java/awt/HeadlessException/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Fri Mar 23 11:45:27 2012//
+D
diff --git a/gnu/testlet/java/awt/HeadlessException/CVS/Repository b/gnu/testlet/java/awt/HeadlessException/CVS/Repository
new file mode 100644
index 00000000..4f1054a1
--- /dev/null
+++ b/gnu/testlet/java/awt/HeadlessException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/HeadlessException
diff --git a/gnu/testlet/java/awt/HeadlessException/CVS/Root b/gnu/testlet/java/awt/HeadlessException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/HeadlessException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/HeadlessException/constructor.java b/gnu/testlet/java/awt/HeadlessException/constructor.java
new file mode 100644
index 00000000..703d0953
--- /dev/null
+++ b/gnu/testlet/java/awt/HeadlessException/constructor.java
@@ -0,0 +1,66 @@
+// constructor.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.HeadlessException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.HeadlessException;
+
+/**
+ * Check of method constructor for a class HeadlessException.
+ */
+public class constructor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Throwable a;
+
+ a = new HeadlessException("");
+ harness.check(a.getMessage(), "");
+
+ a = new HeadlessException("HeadlessException");
+ harness.check(a.getMessage(), "HeadlessException");
+
+ try {
+ throw new HeadlessException("");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "");
+ harness.check(t instanceof HeadlessException);
+ }
+
+ try {
+ throw new HeadlessException("HeadlessException");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "HeadlessException");
+ harness.check(t instanceof HeadlessException);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Entries b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Entries
new file mode 100644
index 00000000..fb3d679a
--- /dev/null
+++ b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Fri Mar 23 11:45:27 2012//
+D
diff --git a/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Repository b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Repository
new file mode 100644
index 00000000..84acbbd3
--- /dev/null
+++ b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/IllegalComponentStateException
diff --git a/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Root b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/IllegalComponentStateException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/IllegalComponentStateException/constructor.java b/gnu/testlet/java/awt/IllegalComponentStateException/constructor.java
new file mode 100644
index 00000000..704681e9
--- /dev/null
+++ b/gnu/testlet/java/awt/IllegalComponentStateException/constructor.java
@@ -0,0 +1,66 @@
+// constructor.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.IllegalComponentStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.IllegalComponentStateException;
+
+/**
+ * Check of method constructor for a class IllegalComponentStateException.
+ */
+public class constructor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Throwable a;
+
+ a = new IllegalComponentStateException("");
+ harness.check(a.getMessage(), "");
+
+ a = new IllegalComponentStateException("IllegalComponentStateException");
+ harness.check(a.getMessage(), "IllegalComponentStateException");
+
+ try {
+ throw new IllegalComponentStateException("");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "");
+ harness.check(t instanceof IllegalComponentStateException);
+ }
+
+ try {
+ throw new IllegalComponentStateException("IllegalComponentStateException");
+ }
+ catch (Throwable t) {
+ harness.check(t.getMessage(), "IllegalComponentStateException");
+ harness.check(t instanceof IllegalComponentStateException);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Entries b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Entries
new file mode 100644
index 00000000..a1b89965
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Entries
@@ -0,0 +1,5 @@
+/TestKeyboardFocusManager.java/1.1/Wed Jul 26 21:04:54 2006//
+/getFocusOwner.java/1.2/Wed May 21 13:50:43 2008//
+/getGlobalFocusOwner.java/1.2/Wed May 21 13:50:43 2008//
+/getGlobalPermanentFocusOwner.java/1.2/Wed May 21 13:50:43 2008//
+D
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Repository b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Repository
new file mode 100644
index 00000000..d21c7433
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/KeyboardFocusManager
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Root b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/TestKeyboardFocusManager.java b/gnu/testlet/java/awt/KeyboardFocusManager/TestKeyboardFocusManager.java
new file mode 100644
index 00000000..dfb06c57
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/TestKeyboardFocusManager.java
@@ -0,0 +1,133 @@
+/* TestKeyboardFocusManager.java -- A helper class for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.awt.KeyboardFocusManager;
+
+import java.awt.AWTEvent;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.KeyboardFocusManager;
+import java.awt.event.KeyEvent;
+
+public class TestKeyboardFocusManager extends KeyboardFocusManager
+{
+
+ /**
+ * Made public for testing.
+ */
+ public void setGlobalFocusOwner(Component c)
+ {
+ super.setGlobalFocusOwner(c);
+ }
+
+ /**
+ * Made public for testing.
+ */
+ public Component getGlobalFocusOwner()
+ {
+ return super.getGlobalFocusOwner();
+ }
+
+ /**
+ * Made public for testing.
+ */
+ public void setGlobalPermanentFocusOwner(Component c)
+ {
+ super.setGlobalPermanentFocusOwner(c);
+ }
+
+ /**
+ * Made public for testing.
+ */
+ public Component getGlobalPermanentFocusOwner()
+ {
+ return super.getGlobalPermanentFocusOwner();
+ }
+
+ protected void dequeueKeyEvents(long after, Component untilFocused)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ protected void discardKeyEvents(Component comp)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean dispatchEvent(AWTEvent e)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean dispatchKeyEvent(KeyEvent e)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void downFocusCycle(Container cont)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ protected void enqueueKeyEvents(long after, Component untilFocused)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void focusNextComponent(Component comp)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void focusPreviousComponent(Component comp)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean postProcessKeyEvent(KeyEvent e)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void processKeyEvent(Component focused, KeyEvent e)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void upFocusCycle(Component comp)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java b/gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java
new file mode 100644
index 00000000..98fd661d
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/getFocusOwner.java
@@ -0,0 +1,69 @@
+/* getFocusOwner.java -- Tests getFocusOwner in KeyboardFocusManager
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: TestKeyboardFocusManager
+
+package gnu.testlet.java.awt.KeyboardFocusManager;
+
+import java.awt.Component;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getFocusOwner implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test01(harness);
+
+ }
+
+ /**
+ * Tests if and how getFocusOwner() depends on getPermanentFocusOwner().
+ *
+ * @param h the test harness
+ */
+ private void test01(TestHarness h)
+ {
+ Component c1 = new Component(){};
+ Component c2 = new Component(){};
+
+ TestKeyboardFocusManager kfm = new TestKeyboardFocusManager();
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getFocusOwner(), c1);
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getFocusOwner(), c1);
+ }
+}
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java b/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java
new file mode 100644
index 00000000..86464767
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalFocusOwner.java
@@ -0,0 +1,72 @@
+/* getFocusOwner.java -- Tests getGlobalFocusOwner in KeyboardFocusManager
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: TestKeyboardFocusManager
+
+package gnu.testlet.java.awt.KeyboardFocusManager;
+
+import java.awt.Component;
+import java.awt.KeyboardFocusManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getGlobalFocusOwner implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test01(harness);
+
+ }
+
+ /**
+ * Tests if and how getFocusOwner() depends on getPermanentFocusOwner().
+ *
+ * @param h the test harness
+ */
+ private void test01(TestHarness h)
+ {
+ Component c1 = new Component(){};
+ Component c2 = new Component(){};
+
+ TestKeyboardFocusManager kfm = new TestKeyboardFocusManager();
+ // Make this the current KFM to avoid SecurityExceptions.
+ KeyboardFocusManager.setCurrentKeyboardFocusManager(kfm);
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getGlobalFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getGlobalFocusOwner(), c1);
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getGlobalFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getGlobalFocusOwner(), c1);
+ }
+}
diff --git a/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java b/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java
new file mode 100644
index 00000000..92b403cb
--- /dev/null
+++ b/gnu/testlet/java/awt/KeyboardFocusManager/getGlobalPermanentFocusOwner.java
@@ -0,0 +1,73 @@
+/* getFocusOwner.java -- Tests getermanentGlobalFocusOwner in
+ KeyboardFocusManager
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: TestKeyboardFocusManager
+
+package gnu.testlet.java.awt.KeyboardFocusManager;
+
+import java.awt.Component;
+import java.awt.KeyboardFocusManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getGlobalPermanentFocusOwner implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test01(harness);
+
+ }
+
+ /**
+ * Tests if and how getFocusOwner() depends on getPermanentFocusOwner().
+ *
+ * @param h the test harness
+ */
+ private void test01(TestHarness h)
+ {
+ Component c1 = new Component(){};
+ Component c2 = new Component(){};
+
+ TestKeyboardFocusManager kfm = new TestKeyboardFocusManager();
+ // Make this the current KFM to avoid SecurityExceptions.
+ KeyboardFocusManager.setCurrentKeyboardFocusManager(kfm);
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getGlobalPermanentFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(null);
+ h.check(kfm.getGlobalPermanentFocusOwner(), null);
+
+ kfm.setGlobalFocusOwner(null);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getGlobalPermanentFocusOwner(), c2);
+
+ kfm.setGlobalFocusOwner(c1);
+ kfm.setGlobalPermanentFocusOwner(c2);
+ h.check(kfm.getGlobalPermanentFocusOwner(), c2);
+ }
+}
diff --git a/gnu/testlet/java/awt/Label/CVS/Entries b/gnu/testlet/java/awt/Label/CVS/Entries
new file mode 100644
index 00000000..b3867ea0
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/CVS/Entries
@@ -0,0 +1,20 @@
+/MouseListenerTest.java/1.1/Mon Dec 19 13:19:47 2011//
+/MouseMotionListenerTest.java/1.2/Tue May 14 14:31:21 2013//
+/MouseWheelListenerTest.java/1.1/Mon Dec 19 13:19:47 2011//
+/PaintTest.java/1.4/Mon Dec 19 13:19:47 2011//
+/addComponentListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addFocusListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addHierarchyBoundsListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addHierarchyListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addInputMethodListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addKeyListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addMouseListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addMouseMotionListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addMouseWheelListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addPropertyChangeListener.java/1.2/Mon Dec 19 13:19:47 2011//
+/addPropertyChangeListenerString.java/1.1/Wed Dec 14 15:41:39 2011//
+/constructors.java/1.2/Mon Dec 19 13:19:47 2011//
+/getAlignment.java/1.1/Fri Nov 4 16:29:56 2011//
+/list.java/1.1/Fri Nov 4 16:29:56 2011//
+/setAlignment.java/1.1/Fri Nov 4 16:29:56 2011//
+D
diff --git a/gnu/testlet/java/awt/Label/CVS/Repository b/gnu/testlet/java/awt/Label/CVS/Repository
new file mode 100644
index 00000000..6688e430
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Label
diff --git a/gnu/testlet/java/awt/Label/CVS/Root b/gnu/testlet/java/awt/Label/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Label/MouseListenerTest.java b/gnu/testlet/java/awt/Label/MouseListenerTest.java
new file mode 100644
index 00000000..858ab231
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/MouseListenerTest.java
@@ -0,0 +1,367 @@
+// MouseListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link MouseListener} could be registered for an AWT {@link Label}
+ * and if action is performed when some of mouse labels is pressed.
+ */
+public class MouseListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 477052346645513905L;
+
+ /**
+ * These flags are set by MouseListener
+ */
+ private boolean mouseClickedLabel1Flag = false;
+ private boolean mouseClickedLabel2Flag = false;
+ private boolean mouseClickedLabel3Flag = false;
+ private boolean mousePressedLabel1Flag = false;
+ private boolean mousePressedLabel2Flag = false;
+ private boolean mousePressedLabel3Flag = false;
+ private boolean mouseReleasedLabel1Flag = false;
+ private boolean mouseReleasedLabel2Flag = false;
+ private boolean mouseReleasedLabel3Flag = false;
+ private boolean mouseEnteredFlag = false;
+ private boolean mouseExitedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ @SuppressWarnings("boxing")
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+ add(label);
+
+ // register new mouse listener
+ label.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // figure out which label is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMouseClickedLabel1Flag(true); break;
+ case MouseEvent.BUTTON2: setMouseClickedLabel2Flag(true); break;
+ case MouseEvent.BUTTON3: setMouseClickedLabel3Flag(true); break;
+ default: break;
+ }
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ setMouseEnteredFlag(true);
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ setMouseExitedFlag(true);
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // figure out which label is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMousePressedLabel1Flag(true); break;
+ case MouseEvent.BUTTON2: setMousePressedLabel2Flag(true); break;
+ case MouseEvent.BUTTON3: setMousePressedLabel3Flag(true); break;
+ default: break;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // figure out which label was pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMouseReleasedLabel1Flag(true); break;
+ case MouseEvent.BUTTON2: setMouseReleasedLabel2Flag(true); break;
+ case MouseEvent.BUTTON3: setMouseReleasedLabel3Flag(true); break;
+ default: break;
+ }
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of label on a screen
+ Rectangle bounds = label.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & label behavior using ALL mouse labels
+ for (int mouseLabel : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the label
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // click = press + release
+ robot.mousePress(mouseLabel);
+ robot.delay(250);
+ robot.mouseRelease(mouseLabel);
+ robot.delay(250);
+
+ // move the mouse cursor outside the label
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(this.isMouseClickedLabel1Flag());
+ harness.check(this.isMouseClickedLabel2Flag());
+ harness.check(this.isMouseClickedLabel3Flag());
+ harness.check(this.isMousePressedLabel1Flag());
+ harness.check(this.isMousePressedLabel2Flag());
+ harness.check(this.isMousePressedLabel3Flag());
+ harness.check(this.isMouseReleasedLabel1Flag());
+ harness.check(this.isMouseReleasedLabel2Flag());
+ harness.check(this.isMouseReleasedLabel3Flag());
+ harness.check(this.isMouseEnteredFlag());
+ harness.check(this.isMouseExitedFlag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseEnteredFlag the mouseEnteredFlag to set
+ */
+ public void setMouseEnteredFlag(boolean mouseEnteredFlag) {
+ this.mouseEnteredFlag = mouseEnteredFlag;
+ }
+
+ /**
+ * @return the mouseEnteredFlag
+ */
+ public boolean isMouseEnteredFlag() {
+ return this.mouseEnteredFlag;
+ }
+
+ /**
+ * @param mouseExitedFlag the mouseExitedFlag to set
+ */
+ public void setMouseExitedFlag(boolean mouseExitedFlag) {
+ this.mouseExitedFlag = mouseExitedFlag;
+ }
+
+ /**
+ * @return the mouseExitedFlag
+ */
+ public boolean isMouseExitedFlag() {
+ return this.mouseExitedFlag;
+ }
+
+ /**
+ * @param mousePressedLabel1Flag the mousePressedLabel1Flag to set
+ */
+ public void setMousePressedLabel1Flag(boolean mousePressedLabel1Flag) {
+ this.mousePressedLabel1Flag = mousePressedLabel1Flag;
+ }
+
+ /**
+ * @return the mousePressedLabel1Flag
+ */
+ public boolean isMousePressedLabel1Flag() {
+ return this.mousePressedLabel1Flag;
+ }
+
+ /**
+ * @param mousePressedLabel2Flag the mousePressedLabel2Flag to set
+ */
+ public void setMousePressedLabel2Flag(boolean mousePressedLabel2Flag) {
+ this.mousePressedLabel2Flag = mousePressedLabel2Flag;
+ }
+
+ /**
+ * @return the mousePressedLabel2Flag
+ */
+ public boolean isMousePressedLabel2Flag() {
+ return this.mousePressedLabel2Flag;
+ }
+
+ /**
+ * @param mousePressedLabel3Flag the mousePressedLabel3Flag to set
+ */
+ public void setMousePressedLabel3Flag(boolean mousePressedLabel3Flag) {
+ this.mousePressedLabel3Flag = mousePressedLabel3Flag;
+ }
+
+ /**
+ * @return the mousePressedLabel3Flag
+ */
+ public boolean isMousePressedLabel3Flag() {
+ return this.mousePressedLabel3Flag;
+ }
+
+ /**
+ * @param mouseClickedLabel1Flag the mouseClickedLabel1Flag to set
+ */
+ public void setMouseClickedLabel1Flag(boolean mouseClickedLabel1Flag) {
+ this.mouseClickedLabel1Flag = mouseClickedLabel1Flag;
+ }
+
+ /**
+ * @return the mouseClickedLabel1Flag
+ */
+ public boolean isMouseClickedLabel1Flag() {
+ return this.mouseClickedLabel1Flag;
+ }
+
+ /**
+ * @param mouseClickedLabel2Flag the mouseClickedLabel2Flag to set
+ */
+ public void setMouseClickedLabel2Flag(boolean mouseClickedLabel2Flag) {
+ this.mouseClickedLabel2Flag = mouseClickedLabel2Flag;
+ }
+
+ /**
+ * @return the mouseClickedLabel2Flag
+ */
+ public boolean isMouseClickedLabel2Flag() {
+ return this.mouseClickedLabel2Flag;
+ }
+
+ /**
+ * @param mouseClickedLabel3Flag the mouseClickedLabel3Flag to set
+ */
+ public void setMouseClickedLabel3Flag(boolean mouseClickedLabel3Flag) {
+ this.mouseClickedLabel3Flag = mouseClickedLabel3Flag;
+ }
+
+ /**
+ * @return the mouseClickedLabel3Flag
+ */
+ public boolean isMouseClickedLabel3Flag() {
+ return this.mouseClickedLabel3Flag;
+ }
+
+ /**
+ * @param mouseReleasedLabel1Flag the mouseReleasedLabel1Flag to set
+ */
+ public void setMouseReleasedLabel1Flag(boolean mouseReleasedLabel1Flag) {
+ this.mouseReleasedLabel1Flag = mouseReleasedLabel1Flag;
+ }
+
+ /**
+ * @return the mouseReleasedLabel1Flag
+ */
+ public boolean isMouseReleasedLabel1Flag() {
+ return this.mouseReleasedLabel1Flag;
+ }
+
+ /**
+ * @param mouseReleasedLabel2Flag the mouseReleasedLabel2Flag to set
+ */
+ public void setMouseReleasedLabel2Flag(boolean mouseReleasedLabel2Flag) {
+ this.mouseReleasedLabel2Flag = mouseReleasedLabel2Flag;
+ }
+
+ /**
+ * @return the mouseReleasedLabel2Flag
+ */
+ public boolean isMouseReleasedLabel2Flag() {
+ return this.mouseReleasedLabel2Flag;
+ }
+
+ /**
+ * @param mouseReleasedLabel3Flag the mouseReleasedLabel3Flag to set
+ */
+ public void setMouseReleasedLabel3Flag(boolean mouseReleasedLabel3Flag) {
+ this.mouseReleasedLabel3Flag = mouseReleasedLabel3Flag;
+ }
+
+ /**
+ * @return the mouseReleasedLabel3Flag
+ */
+ public boolean isMouseReleasedLabel3Flag() {
+ return this.mouseReleasedLabel3Flag;
+ }
+}
diff --git a/gnu/testlet/java/awt/Label/MouseMotionListenerTest.java b/gnu/testlet/java/awt/Label/MouseMotionListenerTest.java
new file mode 100644
index 00000000..0e950b4c
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/MouseMotionListenerTest.java
@@ -0,0 +1,271 @@
+// MouseMotionListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT Label
+ * and if action is performed when some of mouse labels is pressed.
+ */
+public class MouseMotionListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 4009815071982906794L;
+
+ // these flags are set by MouseMotionListener
+ private boolean mouseDraggedLabel1Flag = false;
+ private boolean mouseDraggedLabel2Flag = false;
+ private boolean mouseDraggedLabel3Flag = false;
+ private boolean mouseMovedLabel1Flag = false;
+ private boolean mouseMovedLabel2Flag = false;
+ private boolean mouseMovedLabel3Flag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ @SuppressWarnings("boxing")
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Label label = new Label("The quick brown fox jumps over the lazy dog.");
+ label.setBackground(Color.blue);
+ add(label);
+
+ // register new mouse motion listener
+ label.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // figure out which label is pressed
+ int modifiers = e.getModifiersEx();
+ setMouseDraggedLabel1Flag(isMouseDraggedLabel1Flag()
+ | ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0));
+ setMouseDraggedLabel2Flag(isMouseDraggedLabel2Flag()
+ | ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0));
+ setMouseDraggedLabel3Flag(isMouseDraggedLabel3Flag()
+ | ((modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0));
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // figure out which label is pressed
+ int modifiers = e.getModifiersEx();
+ // none of the modifiers should be set
+ setMouseMovedLabel1Flag(isMouseMovedLabel1Flag()
+ | ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0));
+ setMouseMovedLabel2Flag(isMouseMovedLabel2Flag()
+ | ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0));
+ setMouseMovedLabel3Flag(isMouseMovedLabel3Flag()
+ | ((modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0));
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of label on a screen
+ Rectangle bounds = label.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & label behavior using ALL mouse labels
+ for (int mouseLabel : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the label
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mousePress(mouseLabel);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseRelease(mouseLabel);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+
+ // move the mouse cursor outside the label
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(isMouseDraggedLabel1Flag());
+ harness.check(isMouseDraggedLabel2Flag());
+ harness.check(isMouseDraggedLabel3Flag());
+
+ // negative tests
+ harness.check(!isMouseMovedLabel1Flag());
+ harness.check(!isMouseMovedLabel2Flag());
+ harness.check(!isMouseMovedLabel3Flag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseDraggedLabel1Flag the mouseDraggedLabel1Flag to set
+ */
+ public void setMouseDraggedLabel1Flag(boolean mouseDraggedLabel1Flag) {
+ this.mouseDraggedLabel1Flag = mouseDraggedLabel1Flag;
+ }
+
+ /**
+ * @return the mouseDraggedLabel1Flag
+ */
+ public boolean isMouseDraggedLabel1Flag() {
+ return this.mouseDraggedLabel1Flag;
+ }
+
+ /**
+ * @param mouseDraggedLabel2Flag the mouseDraggedLabel2Flag to set
+ */
+ public void setMouseDraggedLabel2Flag(boolean mouseDraggedLabel2Flag) {
+ this.mouseDraggedLabel2Flag = mouseDraggedLabel2Flag;
+ }
+
+ /**
+ * @return the mouseDraggedLabel2Flag
+ */
+ public boolean isMouseDraggedLabel2Flag() {
+ return this.mouseDraggedLabel2Flag;
+ }
+
+ /**
+ * @param mouseDraggedLabel3Flag the mouseDraggedLabel3Flag to set
+ */
+ public void setMouseDraggedLabel3Flag(boolean mouseDraggedLabel3Flag) {
+ this.mouseDraggedLabel3Flag = mouseDraggedLabel3Flag;
+ }
+
+ /**
+ * @return the mouseDraggedLabel3Flag
+ */
+ public boolean isMouseDraggedLabel3Flag() {
+ return this.mouseDraggedLabel3Flag;
+ }
+
+ /**
+ * @param mouseMovedLabel1Flag the mouseMovedLabel1Flag to set
+ */
+ public void setMouseMovedLabel1Flag(boolean mouseMovedLabel1Flag) {
+ this.mouseMovedLabel1Flag = mouseMovedLabel1Flag;
+ }
+
+ /**
+ * @return the mouseMovedLabel1Flag
+ */
+ public boolean isMouseMovedLabel1Flag() {
+ return this.mouseMovedLabel1Flag;
+ }
+
+ /**
+ * @param mouseMovedLabel2Flag the mouseMovedLabel2Flag to set
+ */
+ public void setMouseMovedLabel2Flag(boolean mouseMovedLabel2Flag) {
+ this.mouseMovedLabel2Flag = mouseMovedLabel2Flag;
+ }
+
+ /**
+ * @return the mouseMovedLabel2Flag
+ */
+ public boolean isMouseMovedLabel2Flag() {
+ return this.mouseMovedLabel2Flag;
+ }
+
+ /**
+ * @param mouseMovedLabel3Flag the mouseMovedLabel3Flag to set
+ */
+ public void setMouseMovedLabel3Flag(boolean mouseMovedLabel3Flag) {
+ this.mouseMovedLabel3Flag = mouseMovedLabel3Flag;
+ }
+
+ /**
+ * @return the mouseMovedLabel3Flag
+ */
+ public boolean isMouseMovedLabel3Flag() {
+ return this.mouseMovedLabel3Flag;
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/MouseWheelListenerTest.java b/gnu/testlet/java/awt/Label/MouseWheelListenerTest.java
new file mode 100644
index 00000000..b7bcc012
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/MouseWheelListenerTest.java
@@ -0,0 +1,169 @@
+// MouseWheelListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT Label
+ * and if action is performed when mouse wheel is rotated up and down.
+ */
+public class MouseWheelListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -4774724125231540431L;
+ // these flags are set by MouseWheelListener
+ private boolean mouseWheelScrollUpFlag = false;
+ private boolean mouseWheelScrollDownFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+ add(label);
+
+ // register new mouse wheel listener
+ label.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // figure out if mouse wheel is scrolled up or down
+ setMouseWheelScrollUpFlag(isMouseWheelScrollUpFlag()
+ | (e.getWheelRotation() < 0));
+ setMouseWheelScrollDownFlag(isMouseWheelScrollDownFlag()
+ | (e.getWheelRotation() > 0));
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of label on a screen
+ Rectangle bounds = label.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mouseWheel(+1);
+ robot.delay(250);
+ robot.mouseWheel(-1);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(isMouseWheelScrollUpFlag());
+ harness.check(isMouseWheelScrollDownFlag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseWheelScrollUpFlag the mouseWheelScrollUpFlag to set
+ */
+ public void setMouseWheelScrollUpFlag(boolean mouseWheelScrollUpFlag) {
+ this.mouseWheelScrollUpFlag = mouseWheelScrollUpFlag;
+ }
+
+ /**
+ * @return the mouseWheelScrollUpFlag
+ */
+ public boolean isMouseWheelScrollUpFlag() {
+ return this.mouseWheelScrollUpFlag;
+ }
+
+ /**
+ * @param mouseWheelScrollDownFlag the mouseWheelScrollDownFlag to set
+ */
+ public void setMouseWheelScrollDownFlag(boolean mouseWheelScrollDownFlag) {
+ this.mouseWheelScrollDownFlag = mouseWheelScrollDownFlag;
+ }
+
+ /**
+ * @return the mouseWheelScrollDownFlag
+ */
+ public boolean isMouseWheelScrollDownFlag() {
+ return this.mouseWheelScrollDownFlag;
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/PaintTest.java b/gnu/testlet/java/awt/Label/PaintTest.java
new file mode 100644
index 00000000..572e8c51
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/PaintTest.java
@@ -0,0 +1,118 @@
+/* PaintTest.java --
+ Copyright (C) 2006, 2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+/**
+ * Test if Label could be painted correctly.
+ */
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 4737615313184489246L;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ Label label = new Label("label");
+ label.setBackground(Color.blue);
+ add(label);
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Point loc = frame.getLocationOnScreen();
+ Rectangle bounds = label.getBounds();
+ Insets i = frame.getInsets();
+ bounds.x += loc.x + i.left;
+ bounds.y += loc.y + i.top;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2 + 5;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+
+ // check the color of a pixel located in the button center
+ Color labelColor = robot.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(labelColor.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+ }
+
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/Label/addComponentListener.java b/gnu/testlet/java/awt/Label/addComponentListener.java
new file mode 100644
index 00000000..b3a0332d
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addComponentListener.java
@@ -0,0 +1,96 @@
+// addComponentListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link ComponentListener} could be registered for an AWT {@link Label}.
+ */
+public class addComponentListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ ComponentListener[] componentListeners;
+
+ // get all registered listeners
+ componentListeners = label.getComponentListeners();
+ harness.check(componentListeners.length, 0);
+
+ // register new listener
+ label.addComponentListener(
+ new ComponentListener() {
+ public void componentHidden(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ // empty
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myComponentListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ componentListeners = label.getComponentListeners();
+ harness.check(componentListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(componentListeners[0].toString(), "myComponentListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addFocusListener.java b/gnu/testlet/java/awt/Label/addFocusListener.java
new file mode 100644
index 00000000..5488dd3d
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addFocusListener.java
@@ -0,0 +1,87 @@
+// addFocusListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link FocusListener} could be registered for an AWT {@link Label}.
+ */
+public class addFocusListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ FocusListener[] focusListeners;
+
+ // get all registered listeners
+ focusListeners = label.getFocusListeners();
+ harness.check(focusListeners.length, 0);
+
+ // register new listener
+ label.addFocusListener(
+ new FocusListener() {
+
+ public void focusGained(FocusEvent e)
+ {
+ // empty
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myFocusListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ focusListeners = label.getFocusListeners();
+ harness.check(focusListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(focusListeners[0].toString(), "myFocusListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java b/gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java
new file mode 100644
index 00000000..fa31aa52
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addHierarchyBoundsListener.java
@@ -0,0 +1,87 @@
+// addHierarchyBoundsListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link HierarchyBoundsListener} could be registered for an AWT {@link Label}.
+ */
+public class addHierarchyBoundsListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyBoundsListener[] hierarchyBoundsListeners;
+
+ // get all registered listeners
+ hierarchyBoundsListeners = label.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 0);
+
+ // register new listener
+ label.addHierarchyBoundsListener(
+ new HierarchyBoundsListener() {
+
+ public void ancestorMoved(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ public void ancestorResized(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyBoundsListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyBoundsListeners = label.getHierarchyBoundsListeners();
+ harness.check(hierarchyBoundsListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyBoundsListeners[0].toString(), "myHierarchyBoundsListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addHierarchyListener.java b/gnu/testlet/java/awt/Label/addHierarchyListener.java
new file mode 100644
index 00000000..abca2974
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addHierarchyListener.java
@@ -0,0 +1,82 @@
+// addHierarchyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link HierarchyListener} could be registered for an AWT {@link Label}.
+ */
+public class addHierarchyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ HierarchyListener[] hierarchyListeners;
+
+ // get all registered listeners
+ hierarchyListeners = label.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 0);
+
+ // register new listener
+ label.addHierarchyListener(
+ new HierarchyListener() {
+
+ public void hierarchyChanged(HierarchyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myHierarchyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ hierarchyListeners = label.getHierarchyListeners();
+ harness.check(hierarchyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(hierarchyListeners[0].toString(), "myHierarchyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addInputMethodListener.java b/gnu/testlet/java/awt/Label/addInputMethodListener.java
new file mode 100644
index 00000000..ba544571
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addInputMethodListener.java
@@ -0,0 +1,87 @@
+// addInputMethodListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link InputMethodListener} could be registered for an AWT {@link Label}.
+ */
+public class addInputMethodListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ InputMethodListener[] inputMethodListeners;
+
+ // get all registered listeners
+ inputMethodListeners = label.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 0);
+
+ // register new listener
+ label.addInputMethodListener(
+ new InputMethodListener() {
+
+ public void caretPositionChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ public void inputMethodTextChanged(InputMethodEvent event)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myInputMethodListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ inputMethodListeners = label.getInputMethodListeners();
+ harness.check(inputMethodListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(inputMethodListeners[0].toString(), "myInputMethodListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addKeyListener.java b/gnu/testlet/java/awt/Label/addKeyListener.java
new file mode 100644
index 00000000..1c0c782c
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addKeyListener.java
@@ -0,0 +1,92 @@
+// addKeyListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link KeyListener} could be registered for an AWT {@link Label}.
+ */
+public class addKeyListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ KeyListener[] keyListeners;
+
+ // get all registered listeners
+ keyListeners = label.getKeyListeners();
+ harness.check(keyListeners.length, 0);
+
+ // register new listener
+ label.addKeyListener(
+ new KeyListener() {
+
+ public void keyPressed(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ // empty
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myKeyListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ keyListeners = label.getKeyListeners();
+ harness.check(keyListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(keyListeners[0].toString(), "myKeyListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addMouseListener.java b/gnu/testlet/java/awt/Label/addMouseListener.java
new file mode 100644
index 00000000..a8638928
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addMouseListener.java
@@ -0,0 +1,102 @@
+// addMouseListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link MouseListener} could be registered for an AWT {@link Label}.
+ */
+public class addMouseListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered mouse listeners
+ MouseListener[] mouseListeners;
+
+ // get all registered mouse listeners
+ mouseListeners = label.getMouseListeners();
+ harness.check(mouseListeners.length, 0);
+
+ // register new mouse listener
+ label.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseListener";
+ }
+ }
+ );
+
+ // get all registered mouse listeners
+ mouseListeners = label.getMouseListeners();
+ harness.check(mouseListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseListeners[0].toString(), "myMouseListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addMouseMotionListener.java b/gnu/testlet/java/awt/Label/addMouseMotionListener.java
new file mode 100644
index 00000000..4c49a30c
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addMouseMotionListener.java
@@ -0,0 +1,87 @@
+// addMouseMotionListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link MouseMotionListener} could be registered for an AWT {@link Label}.
+ */
+public class addMouseMotionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseMotionListener[] mouseMotionListeners;
+
+ // get all registered listeners
+ mouseMotionListeners = label.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 0);
+
+ // register new listener
+ label.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // empty
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseMotionListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseMotionListeners = label.getMouseMotionListeners();
+ harness.check(mouseMotionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseMotionListeners[0].toString(), "myMouseMotionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addMouseWheelListener.java b/gnu/testlet/java/awt/Label/addMouseWheelListener.java
new file mode 100644
index 00000000..1bd6716e
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addMouseWheelListener.java
@@ -0,0 +1,82 @@
+// addMouseWheelListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link MouseWheelListener} could be registered for an AWT {@link Label}.
+ */
+public class addMouseWheelListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ MouseWheelListener[] mouseWheelListeners;
+
+ // get all registered listeners
+ mouseWheelListeners = label.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 0);
+
+ // register new listener
+ label.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myMouseWheelListener";
+ }
+ }
+ );
+
+ // get all registered listeners
+ mouseWheelListeners = label.getMouseWheelListeners();
+ harness.check(mouseWheelListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(mouseWheelListeners[0].toString(), "myMouseWheelListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/addPropertyChangeListener.java b/gnu/testlet/java/awt/Label/addPropertyChangeListener.java
new file mode 100644
index 00000000..ea7f2172
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addPropertyChangeListener.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import java.awt.Color;
+import java.awt.Label;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Label}.
+ */
+public class addPropertyChangeListener
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = label.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ label.addPropertyChangeListener(new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = label.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Label/addPropertyChangeListenerString.java b/gnu/testlet/java/awt/Label/addPropertyChangeListenerString.java
new file mode 100644
index 00000000..84feb96b
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/addPropertyChangeListenerString.java
@@ -0,0 +1,80 @@
+// addPropertyChangeListener.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.Label;
+
+import java.awt.Color;
+import java.awt.Label;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Check if {@link PropertyChangeListener} could be registered for an AWT {@link Label}.
+ */
+public class addPropertyChangeListenerString
+implements Testlet
+{
+ private static final String PROPERTY_CHANGE_LISTENER_NAME = "myProperlyChangeListener";
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Label label = new Label("xyzzy");
+ label.setBackground(Color.blue);
+
+ // array which will be filled by registered listeners
+ PropertyChangeListener[] properlyChangeListeners;
+
+ // get all registered listeners
+ properlyChangeListeners = label.getPropertyChangeListeners();
+ harness.check(properlyChangeListeners.length, 0);
+
+ // register new listener
+ label.addPropertyChangeListener("font", new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ // empty block
+ }
+
+ @Override
+ public String toString() {
+ return PROPERTY_CHANGE_LISTENER_NAME;
+ }
+ });
+
+ // get all registered listeners
+ properlyChangeListeners = label.getPropertyChangeListeners("font");
+ harness.check(properlyChangeListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(properlyChangeListeners[0].toString(), PROPERTY_CHANGE_LISTENER_NAME);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Label/constructors.java b/gnu/testlet/java/awt/Label/constructors.java
new file mode 100644
index 00000000..e5bc25a9
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/constructors.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Label;
+
+/**
+ * {@link Label} constructors test
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Label label1 = new Label();
+ harness.check(label1 != null);
+ doCommonTests(harness, label1);
+
+ // test one parameter constructor
+ Label label2 = new Label("xyzzy");
+ harness.check(label2 != null);
+ harness.check(label2.getText(), "xyzzy");
+ doCommonTests(harness, label2);
+
+ // test two parameters constructor
+ Label label3 = new Label("xyzzy", Label.CENTER);
+ harness.check(label3 != null);
+ harness.check(label3.getText(), "xyzzy");
+ harness.check(label3.getAlignment(), Label.CENTER);
+ doCommonTests(harness, label3);
+
+ Label label4 = new Label("xyzzy", Label.LEFT);
+ harness.check(label4 != null);
+ harness.check(label4.getText(), "xyzzy");
+ harness.check(label4.getAlignment(), Label.LEFT);
+ doCommonTests(harness, label4);
+
+ Label label5 = new Label("xyzzy", Label.RIGHT);
+ harness.check(label5 != null);
+ harness.check(label5.getText(), "xyzzy");
+ harness.check(label5.getAlignment(), Label.RIGHT);
+ doCommonTests(harness, label5);
+ }
+
+ public void doCommonTests(TestHarness harness, Label label)
+ {
+ // label text checks
+ label.setText("42");
+ harness.check(label.getText(), "42");
+ label.setText("");
+ harness.check(label.getText(), "");
+ label.setText(null);
+ harness.check(label.getText() == null);
+
+ // alignment checks
+ label.setAlignment(Label.CENTER);
+ harness.check(label.getAlignment(), Label.CENTER);
+ label.setAlignment(Label.LEFT);
+ harness.check(label.getAlignment(), Label.LEFT);
+ label.setAlignment(Label.RIGHT);
+ harness.check(label.getAlignment(), Label.RIGHT);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/getAlignment.java b/gnu/testlet/java/awt/Label/getAlignment.java
new file mode 100644
index 00000000..3178cefc
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/getAlignment.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Label;
+
+// Test of method getAlignment() for the Label class.
+public class getAlignment
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use constructor without any parameter
+ Label label1 = new Label();
+ // check the alignment
+ harness.check(label1.getAlignment(), Label.LEFT);
+
+ // use constructor with one parameter
+ Label label2 = new Label("xyzzy");
+ // check the alignment
+ harness.check(label2.getAlignment(), Label.LEFT);
+
+ // use constructor with two parameters
+ Label label3 = new Label("xyzzy", Label.CENTER);
+ // check the alignment
+ harness.check(label3.getAlignment(), Label.CENTER);
+
+ // use constructor with two parameters
+ Label label4 = new Label("xyzzy", Label.LEFT);
+ // check the alignment
+ harness.check(label4.getAlignment(), Label.LEFT);
+
+ // use constructor with two parameters
+ Label label5 = new Label("xyzzy", Label.RIGHT);
+ // check the alignment
+ harness.check(label5.getAlignment(), Label.RIGHT);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/list.java b/gnu/testlet/java/awt/Label/list.java
new file mode 100644
index 00000000..2dc4c61d
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/list.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Label;
+
+// test of method list()
+public class list
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Label label1 = new Label();
+ label1.list();
+ label1.list(System.out);
+ label1.list(System.out, 0);
+ label1.list(System.out, 10);
+
+ // test constructor with one parameter
+ Label label2 = new Label("xyzzy");
+ label2.list();
+ label2.list(System.out);
+ label2.list(System.out, 0);
+ label2.list(System.out, 10);
+
+ // test constructor with two parameters
+ Label label3 = new Label("xyzzy", Label.CENTER);
+ label3.list();
+ label3.list(System.out);
+ label3.list(System.out, 0);
+ label3.list(System.out, 10);
+
+ // test constructor with two parameters
+ Label label4 = new Label("xyzzy", Label.LEFT);
+ label4.list();
+ label4.list(System.out);
+ label4.list(System.out, 0);
+ label4.list(System.out, 10);
+
+ // test constructor with two parameters
+ Label label5 = new Label("xyzzy", Label.RIGHT);
+ label5.list();
+ label5.list(System.out);
+ label5.list(System.out, 0);
+ label5.list(System.out, 10);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Label/setAlignment.java b/gnu/testlet/java/awt/Label/setAlignment.java
new file mode 100644
index 00000000..a0b45430
--- /dev/null
+++ b/gnu/testlet/java/awt/Label/setAlignment.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Label;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Label;
+
+// Test of method setAlignment() for the Label class.
+public class setAlignment
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test constructor without any parameter
+ Label label1 = new Label();
+ doTest(harness, label1);
+
+ // test constructor with one parameter
+ Label label2 = new Label("xyzzy");
+ doTest(harness, label2);
+
+ // test constructor with two parameters
+ Label label3 = new Label("xyzzy", Label.CENTER);
+ doTest(harness, label3);
+
+ // test constructor with two parameters
+ Label label4 = new Label("xyzzy", Label.LEFT);
+ doTest(harness, label4);
+
+ // test constructor with two parameters
+ Label label5 = new Label("xyzzy", Label.RIGHT);
+ doTest(harness, label5);
+ }
+
+ /**
+ * Check if method Label.setAlignment() is working properly.
+ */
+ public void doTest(TestHarness harness, Label label)
+ {
+ label.setAlignment(Label.LEFT);
+ harness.check(label.getAlignment(), Label.LEFT);
+ label.setAlignment(Label.RIGHT);
+ harness.check(label.getAlignment(), Label.RIGHT);
+ label.setAlignment(Label.CENTER);
+ harness.check(label.getAlignment(), Label.CENTER);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/List/CVS/Entries b/gnu/testlet/java/awt/List/CVS/Entries
new file mode 100644
index 00000000..9b715807
--- /dev/null
+++ b/gnu/testlet/java/awt/List/CVS/Entries
@@ -0,0 +1,8 @@
+/PaintTestEmptyList.java/1.1/Thu Dec 15 16:04:56 2011//
+/PaintTestFilledList.java/1.1/Thu Dec 15 16:04:56 2011//
+/ScrollbarPaintTest.java/1.3/Tue May 14 14:31:21 2013//
+/addActionListener.java/1.1/Tue Jan 3 16:46:09 2012//
+/addItemListener.java/1.1/Tue Jan 3 16:46:09 2012//
+/testSelected.java/1.2/Fri Jul 28 15:06:26 2006//
+/testSetMultipleMode.java/1.2/Wed May 21 14:17:55 2008//
+D
diff --git a/gnu/testlet/java/awt/List/CVS/Repository b/gnu/testlet/java/awt/List/CVS/Repository
new file mode 100644
index 00000000..aed712ec
--- /dev/null
+++ b/gnu/testlet/java/awt/List/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/List
diff --git a/gnu/testlet/java/awt/List/CVS/Root b/gnu/testlet/java/awt/List/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/List/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/List/PaintTestEmptyList.java b/gnu/testlet/java/awt/List/PaintTestEmptyList.java
new file mode 100644
index 00000000..152293f9
--- /dev/null
+++ b/gnu/testlet/java/awt/List/PaintTestEmptyList.java
@@ -0,0 +1,118 @@
+// PaintTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.4
+
+package gnu.testlet.java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+/**
+ * Test if empty {@link List} could be painted correctly.
+ */
+public class PaintTestEmptyList
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -6498456149126246476L;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ List list = new List(10);
+ list.setBackground(Color.blue);
+ add(list);
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Point loc = frame.getLocationOnScreen();
+ Rectangle bounds = list.getBounds();
+ Insets i = frame.getInsets();
+ bounds.x += loc.x + i.left;
+ bounds.y += loc.y + i.top;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2 + 5;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+
+ // check the color of a pixel located in the button center
+ Color labelColor = robot.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(labelColor.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+ }
+
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/List/PaintTestFilledList.java b/gnu/testlet/java/awt/List/PaintTestFilledList.java
new file mode 100644
index 00000000..c9261627
--- /dev/null
+++ b/gnu/testlet/java/awt/List/PaintTestFilledList.java
@@ -0,0 +1,121 @@
+// PaintTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI, JDK 1.4
+
+package gnu.testlet.java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+/**
+ * Test if filled {@link List} could be painted correctly.
+ */
+public class PaintTestFilledList
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -6498456149126246476L;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ List list = new List(10);
+ list.setBackground(Color.blue);
+ for (int i = 0; i < 10; i++) {
+ list.add("item # " + i);
+ }
+ add(list);
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ Point loc = frame.getLocationOnScreen();
+ Rectangle bounds = list.getBounds();
+ Insets i = frame.getInsets();
+ bounds.x += loc.x + i.left;
+ bounds.y += loc.y + i.top;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width * 2 / 3;
+ int checkedPixelY = bounds.y + bounds.height / 2 + 5;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+
+ // check the color of a pixel located in the button center
+ Color labelColor = robot.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(labelColor.equals(Color.blue));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+ }
+
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/List/ScrollbarPaintTest.java b/gnu/testlet/java/awt/List/ScrollbarPaintTest.java
new file mode 100644
index 00000000..f6c0416a
--- /dev/null
+++ b/gnu/testlet/java/awt/List/ScrollbarPaintTest.java
@@ -0,0 +1,112 @@
+/* ScrollbarPaintTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+public class ScrollbarPaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ List list = new List(2);
+ list.add("1");
+ list.add("2");
+ list.add("3");
+ add(list);
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ Robot robot = harness.createRobot();
+ robot.delay(1000);
+ robot.waitForIdle();
+
+ Rectangle bounds = list.getBounds();
+ Insets i = frame.getInsets();
+ Point loc = frame.getLocationOnScreen();
+ loc.x += i.left + bounds.x;
+ loc.y += i.top + bounds.y;
+ bounds.x += i.left;
+ bounds.y += i.top;
+
+ // position of checked pixel
+ int checkedPixelX = loc.x + bounds.width - i.left - 2;
+ int checkedPixelY = loc.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.delay(1000);
+ robot.waitForIdle();
+
+ Color scroll = robot.getPixelColor(checkedPixelX, checkedPixelY);
+
+ // Check if scrollbar was painted.
+ harness.check(!(scroll.equals(Color.white)));
+ harness.check(!(scroll.equals(Color.red)));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
+
diff --git a/gnu/testlet/java/awt/List/addActionListener.java b/gnu/testlet/java/awt/List/addActionListener.java
new file mode 100644
index 00000000..ee06107b
--- /dev/null
+++ b/gnu/testlet/java/awt/List/addActionListener.java
@@ -0,0 +1,82 @@
+// addActionListener.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ActionListener could be registered for an AWT List.
+ */
+public class addActionListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ List list = new List(10);
+ list.setBackground(Color.blue);
+
+ // array which will be filled by registered action listeners
+ ActionListener[] actionListeners;
+
+ // get all registered action listeners
+ actionListeners = list.getActionListeners();
+ harness.check(actionListeners.length, 0);
+
+ // register new action listener
+ list.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myActionListener";
+ }
+ }
+ );
+
+ // get all registered action listeners
+ actionListeners = list.getActionListeners();
+ harness.check(actionListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(actionListeners[0].toString(), "myActionListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/List/addItemListener.java b/gnu/testlet/java/awt/List/addItemListener.java
new file mode 100644
index 00000000..2ee2900a
--- /dev/null
+++ b/gnu/testlet/java/awt/List/addItemListener.java
@@ -0,0 +1,82 @@
+// addItemListener.java --
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.java.awt.LocationTests;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if ItemListener could be registered for an AWT List.
+ */
+public class addItemListener
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ List list = new List(10);
+ list.setBackground(Color.blue);
+
+ // array which will be filled by registered action listeners
+ ItemListener[] itemListeners;
+
+ // get all registered action listeners
+ itemListeners = list.getItemListeners();
+ harness.check(itemListeners.length, 0);
+
+ // register new action listener
+ list.addItemListener(
+ new ItemListener() {
+ public void itemStateChanged(ItemEvent e)
+ {
+ // empty
+ }
+
+ @Override
+ public String toString()
+ {
+ return "myItemListener";
+ }
+ }
+ );
+
+ // get all registered action listeners
+ itemListeners = list.getItemListeners();
+ harness.check(itemListeners.length, 1);
+
+ // check if the proper listener is used
+ harness.check(itemListeners[0].toString(), "myItemListener");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/List/testSelected.java b/gnu/testlet/java/awt/List/testSelected.java
new file mode 100644
index 00000000..a92ed89e
--- /dev/null
+++ b/gnu/testlet/java/awt/List/testSelected.java
@@ -0,0 +1,453 @@
+/* testSelected.java --
+ Copyright (C) 2006 RedHat
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK 1.4E
+
+
+package gnu.testlet.java.awt.List;
+
+import java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testSelected
+ implements Testlet
+{
+
+ private List list;
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ test7(harness);
+ test8(harness);
+ test9(harness);
+ test10(harness);
+ test11(harness);
+ test12(harness);
+ test13(harness);
+ test14(harness);
+ test15(harness);
+ test16(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // Testing that only one item can be selected when
+ // multipleMode is set to false.
+ list = new List();
+ harness.check (list.getSelectedIndex() == -1);
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.select(0);
+ list.select(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // Testing that more than one item can be selected when
+ // multipleMode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.select(0);
+ list.select(1);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // Testing that only one item can be selected when
+ // multipleMode is set to false, regardless of the order
+ // that the selection is made.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(0);
+ list.select(2);
+ list.select(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), false);
+ }
+
+ public void test4(TestHarness harness)
+ {
+ // Testing that more than one item can be selected when
+ // multipleMode is set to true, regardless of the order
+ // that the selection is made.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(0);
+ list.select(2);
+ list.select(1);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), true);
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // Testing that deselect works on one item when
+ // multipleMode is set to false.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.select(0);
+ list.select(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ list.deselect(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), false);
+ }
+
+ public void test6(TestHarness harness)
+ {
+ // Testing that deslect works on one item when
+ // multipleMode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.select(0);
+ list.select(1);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ list.deselect(1);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ }
+
+ public void test7(TestHarness harness)
+ {
+ // Testing that deselect works on more than one item when
+ // multipleMode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.add("item4");
+ list.select(0);
+ list.select(1);
+ list.select(2);
+ list.select(3);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), true);
+ harness.check(list.isSelected(3), true);
+ list.deselect(1);
+ list.deselect(3);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), true);
+ harness.check(list.isSelected(3), false);
+ }
+
+ public void test8(TestHarness harness)
+ {
+ // Again, testing that deselect works on more than one
+ // item when Multimode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(0);
+ list.select(1);
+ list.select(2);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), true);
+ list.deselect(0);
+ list.deselect(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), true);
+ }
+
+ public void test9(TestHarness harness)
+ {
+ // Testing clear.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.add("item4");
+ list.select(0);
+ list.select(1);
+ list.select(2);
+ list.select(3);
+ harness.check(list.getItemCount(), 4);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), false);
+ harness.check(list.isSelected(3), true);
+ list.clear();
+ harness.check(list.getItemCount(), 0);
+ }
+
+ public void test10(TestHarness harness)
+ {
+ // Again, testing clear.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.add("item4");
+ list.select(0);
+ list.select(2);
+ harness.check(list.getItemCount(), 4);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), true);
+ harness.check(list.isSelected(3), false);
+ list.clear();
+ harness.check(list.getItemCount(), 0);
+ }
+
+ public void test11(TestHarness harness)
+ {
+ // Testing delItem on one item and when
+ // multipleMode is set to false.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(2);
+ harness.check(list.getItemCount(), 3);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), true);
+ list.delItem(2);
+ harness.check(list.getItemCount(), 2);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), true);
+ boolean exceptionCaught = false;
+ try
+ {
+ // This will throw an exception, you cannot call getItem(2)
+ // despite the fact that isSelected(2) returns true.
+ list.getItem(2);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ exceptionCaught = true;
+ }
+ harness.check(exceptionCaught);
+ }
+
+ public void test12(TestHarness harness)
+ {
+ // Testing delItem on two items and when
+ // multipleMode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(0);
+ list.select(1);
+ harness.check(list.getItemCount(), 3);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), false);
+ list.delItem(0);
+ harness.check(list.getItemCount(), 2);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), true);
+ list.delItem(1);
+ harness.check(list.getItemCount(), 1);
+ harness.check(list.isSelected(0), true);
+ }
+
+ public void test13(TestHarness harness)
+ {
+ // Testing delItems when multipleMode is set to false.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.select(2);
+ list.select(1);
+ harness.check(list.getItemCount(), 3);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), false);
+ list.delItems(1, 2);
+ harness.check(list.getItemCount(), 1);
+ harness.check(list.isSelected(0), false);
+ }
+
+ public void test14(TestHarness harness)
+ {
+ //Testing delItems when mulitpleMode is set to true.
+ list = new List();
+ list.setMultipleMode(true);
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ list.add("item4");
+ list.select(0);
+ list.select(3);
+ harness.check(list.getItemCount(), 4);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ harness.check(list.isSelected(2), false);
+ harness.check(list.isSelected(3), true);
+ list.delItems(0, 1);
+ harness.check(list.getItemCount(), 2);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ }
+
+ public void test15(TestHarness harness)
+ {
+ // Testing behaviour when index passed is invalid.
+
+ // Testing deselect.
+ list = new List();
+ list.add("item1");
+ list.select(0);
+ list.deselect(1);
+ harness.check(list.isSelected(0), true);
+
+ // Testing delItem.
+ boolean fail = false;
+ harness.check(list.getItemCount(), 1);
+ try
+ {
+ list.delItem(1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ harness.check(list.getItemCount(), 1);
+ harness.check(list.isSelected(0), true);
+
+ // Testing delItems.
+ fail = false;
+ list.add("item2");
+ list.add("item3");
+ harness.check(list.getItemCount(), 3);
+ try
+ {
+ list.delItems(1, 3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ harness.check(list.getItemCount(), 3);
+
+ // Again, testing delItems.
+ fail = false;
+ harness.check(list.getItemCount(), 3);
+ try
+ {
+ list.delItems(- 4, 1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ harness.check(list.getItemCount(), 1);
+
+ // Again, testing delItems.
+ fail = false;
+ harness.check(list.getItemCount(), 1);
+ try
+ {
+ list.delItems(- 1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ harness.check(list.getItemCount(), 1);
+
+ // Again, testing delItems
+ harness.check(list.getItemCount(), 1);
+ list.delItems(4, 1);
+ harness.check(list.getItemCount(), 1);
+ }
+
+ public void test16(TestHarness harness)
+ {
+ // Testing what happens when a selected item
+ // is selected again.
+ list = new List();
+ list.setMultipleMode(false);
+ list.add("item1");
+ list.select(0);
+ list.select(0);
+ harness.check(list.isSelected(0), true);
+
+ // Testing what happens when a deselected item
+ // is deselected again.
+ list.add("item2");
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+ list.deselect(1);
+ harness.check(list.isSelected(0), true);
+ harness.check(list.isSelected(1), false);
+
+ // Testing what happens when a replacedItem
+ // was selected.
+ harness.check(list.isSelected(0), true);
+ list.replaceItem("newItem1", 0);
+ harness.check(list.isSelected(0), true);
+
+ // Testing that happens when a replacedItem
+ // was deselected.
+ harness.check(list.isSelected(1), false);
+ list.replaceItem("newItem2", 1);
+ harness.check(list.isSelected(1), false);
+ }
+}
diff --git a/gnu/testlet/java/awt/List/testSetMultipleMode.java b/gnu/testlet/java/awt/List/testSetMultipleMode.java
new file mode 100644
index 00000000..fc297950
--- /dev/null
+++ b/gnu/testlet/java/awt/List/testSetMultipleMode.java
@@ -0,0 +1,106 @@
+/* testSetMultipleMode.java -- FIXME: describe
+ Copyright (C) 2006 FIXME: your info here
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: FIXME
+// Uses: ../../../javax/swing/ButtonGroup/isSelected
+
+package gnu.testlet.java.awt.List;
+
+import java.awt.Frame;
+import java.awt.List;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.ButtonGroup.isSelected;
+
+public class testSetMultipleMode implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ List list = new List();
+ list.setMultipleMode(true);
+ harness.check(list.isMultipleMode());
+ list.add("item");
+ list.add("item1");
+ list.select(1);
+ list.select(0);
+ Frame f = new Frame("");
+ f.add(list);
+ f.pack();
+ harness.check(list.getSelectedIndex(), -1);
+ list.setMultipleMode(false);
+ harness.check(list.getSelectedIndex(), 0);
+ harness.check(list.isMultipleMode(), false);
+ harness.check(list.getSelectedIndex(), 0);
+ f.dispose();
+ }
+
+ public void test2(TestHarness harness)
+ {
+ List list = new List();
+ list.setMultipleMode(true);
+ harness.check(list.isMultipleMode());
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ harness.check(list.getItemCount(), 3);
+ list.select(1);
+ list.select(0);
+ list.select(2);
+ harness.check(list.isSelected(0));
+ harness.check(list.isSelected(1));
+ harness.check(list.isSelected(2));
+ list.setMultipleMode(false);
+ harness.check(list.isMultipleMode(), false);
+ harness.check(list.getItemCount(), 3);
+ harness.check(list.getSelectedIndex(), -1);
+ harness.check(list.isSelected(0));
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), true);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ List list = new List();
+ list.add("item1");
+ list.add("item2");
+ list.add("item3");
+ harness.check(list.isMultipleMode(), false);
+ list.select(2);
+ list.select(0);
+ list.select(1);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), false);
+ list.setMultipleMode(true);
+ harness.check(list.isSelected(0), false);
+ harness.check(list.isSelected(1), true);
+ harness.check(list.isSelected(2), false);
+ }
+}
diff --git a/gnu/testlet/java/awt/LocationTests.java b/gnu/testlet/java/awt/LocationTests.java
new file mode 100644
index 00000000..8f9a64c4
--- /dev/null
+++ b/gnu/testlet/java/awt/LocationTests.java
@@ -0,0 +1,147 @@
+/* LocationTests.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.4
+
+package gnu.testlet.java.awt;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * This class tests the location of a rectangle on the screen
+ * using the colors of the rectangle and a given color.
+ *
+ * @author langel (langel at redhat dot com)
+ */
+public class LocationTests
+{
+
+ /**
+ * Compares two colors.
+ *
+ * @param a -
+ * Color to compare.
+ * @param b -
+ * Color to compare.
+ * @param match -
+ * true if colors should be equivalent.
+ */
+ public static void checkColor(TestHarness h, Color a, Color b, boolean match)
+ {
+ if (match)
+ h.check(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
+ && a.getBlue() == b.getBlue());
+ else
+ h.check(!(a.getRed() == b.getRed() && a.getGreen() == b.getGreen()
+ && a.getBlue() == b.getBlue()));
+ }
+
+ /**
+ * This method checks that the pixels outside of the rectange, at all corners,
+ * match (or don't match) a given color.
+ *
+ * @param r -
+ * the Robot to use to get the pixel color at a location.
+ * @param rect -
+ * the Rectangle to check
+ * @param comp -
+ * the Color to compare the pixel colors to.
+ * @param match -
+ * true if the pixel outside the rectangle corner should be
+ * equivalent to comp.
+ */
+ public static void checkRectangleOuterColors(TestHarness h, Robot r, Rectangle rect, Color comp,
+ boolean match)
+ {
+ Color c;
+
+ // top-left-left
+ c = r.getPixelColor(rect.x - 1, rect.y);
+ checkColor(h, c, comp, match);
+
+ // top-left-top
+ r.getPixelColor(rect.x, rect.y - 1);
+ checkColor(h, c, comp, match);
+
+ // top-right-right
+ r.getPixelColor((rect.x + rect.width - 1) + 1, rect.y);
+ checkColor(h, c, comp, match);
+
+ // top-right-top
+ r.getPixelColor((rect.x + rect.width - 1), rect.y - 1);
+ checkColor(h, c, comp, match);
+
+ // bottom-left-left
+ r.getPixelColor(rect.x - 1, (rect.y + rect.height - 1));
+ checkColor(h, c, comp, match);
+
+ // bottom-left-bottom
+ r.getPixelColor(rect.x, (rect.y + rect.height - 1) + 1);
+ checkColor(h, c, comp, match);
+
+ // bottom-right-right
+ r.getPixelColor((rect.x + rect.width - 1) + 1, (rect.y + rect.height - 1));
+ checkColor(h, c, comp, match);
+
+ // bottom-right-bottom
+ r.getPixelColor((rect.x + rect.width - 1), (rect.y + rect.height - 1) + 1);
+ checkColor(h, c, comp, match);
+ }
+
+ /**
+ * This method checks the pixel colors of a Rectangle's corners.
+ *
+ * @param r -
+ * the Robot to use to get the pixel colors.
+ * @param rect -
+ * the Rectangle to check.
+ * @param comp -
+ * the Color to compare.
+ * @param match -
+ * true if the corner pixel color of the rectangle should be
+ * equivalent to comp.
+ */
+ public static void checkRectangleCornerColors(TestHarness h, Robot r, Rectangle rect, Color comp,
+ boolean match)
+ {
+ Color c;
+
+ // top-left
+ c = r.getPixelColor(rect.x, rect.y);
+ checkColor(h, c, comp, match);
+
+ // top-right
+ c = r.getPixelColor(rect.x + rect.width - 1, rect.y);
+ checkColor(h, c, comp, match);
+
+ // bottom-left
+ c = r.getPixelColor(rect.x, rect.y + rect.height - 1);
+ checkColor(h, c, comp, match);
+
+ // bottom-right
+ c = r.getPixelColor(rect.x + rect.width - 1, rect.y + rect.height - 1);
+ checkColor(h, c, comp, match);
+ }
+}
diff --git a/gnu/testlet/java/awt/Menu/CVS/Entries b/gnu/testlet/java/awt/Menu/CVS/Entries
new file mode 100644
index 00000000..ecd4b246
--- /dev/null
+++ b/gnu/testlet/java/awt/Menu/CVS/Entries
@@ -0,0 +1,3 @@
+/addItem.java/1.1/Sun Feb 19 13:59:56 2006//
+/insert.java/1.1/Thu Sep 14 10:47:56 2006//
+D
diff --git a/gnu/testlet/java/awt/Menu/CVS/Repository b/gnu/testlet/java/awt/Menu/CVS/Repository
new file mode 100644
index 00000000..2a76467f
--- /dev/null
+++ b/gnu/testlet/java/awt/Menu/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Menu
diff --git a/gnu/testlet/java/awt/Menu/CVS/Root b/gnu/testlet/java/awt/Menu/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Menu/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Menu/addItem.java b/gnu/testlet/java/awt/Menu/addItem.java
new file mode 100644
index 00000000..835c93f3
--- /dev/null
+++ b/gnu/testlet/java/awt/Menu/addItem.java
@@ -0,0 +1,105 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+
+// 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,Inc., 51 Franklin Street, Fifth Floor, Boston,
+// MA 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.Menu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+public class addItem implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Menu m = new Menu("Test");
+ harness.check(m.countItems(), 0);
+
+ MenuItem i = new MenuItem("Testing");
+ m.add(i);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+
+ m.remove(i);
+ harness.check(m.countItems(), 0);
+ harness.check(i.getParent(), null);
+
+ m.add(i);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+
+ MenuItem i2 = new MenuItem("Second");
+ m.insert(i2, 0);
+ harness.check(m.countItems(), 2);
+ harness.check(m.getItem(0), i2);
+ harness.check(m.getItem(1), i);
+ harness.check(i.getParent(), m);
+ harness.check(i2.getParent(), m);
+
+ m.remove(0);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+ harness.check(i2.getParent(), null);
+
+ m.remove(i);
+ harness.check(m.countItems(), 0);
+ harness.check(i.getParent(), null);
+
+ // A Menu can be an MenuItem
+
+ i = new Menu("TestingMenu");
+ m.add(i);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+
+ m.remove(i);
+ harness.check(m.countItems(), 0);
+ harness.check(i.getParent(), null);
+
+ m.add(i);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+
+ i2 = new Menu("SecondMenu");
+ m.insert(i2, 0);
+ harness.check(m.countItems(), 2);
+ harness.check(m.getItem(0), i2);
+ harness.check(m.getItem(1), i);
+ harness.check(i.getParent(), m);
+ harness.check(i2.getParent(), m);
+
+ m.remove(0);
+ harness.check(m.countItems(), 1);
+ harness.check(m.getItem(0), i);
+ harness.check(i.getParent(), m);
+ harness.check(i2.getParent(), null);
+
+ m.remove(i);
+ harness.check(m.countItems(), 0);
+ harness.check(i.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/Menu/insert.java b/gnu/testlet/java/awt/Menu/insert.java
new file mode 100644
index 00000000..a5adb6d8
--- /dev/null
+++ b/gnu/testlet/java/awt/Menu/insert.java
@@ -0,0 +1,155 @@
+/* insert.java -- some checks for the insert() method in the Menu class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI JDK1.5
+
+package gnu.testlet.java.awt.Menu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+
+public class insert implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testPR28699(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(MenuItem, int)");
+ Menu menu = new Menu("Menu 1");
+ MenuItem itemA = new MenuItem("Menu Item A");
+ menu.insert(itemA, 0);
+ harness.check(menu.getItem(0), itemA);
+ MenuItem itemB = new MenuItem("Menu Item B");
+ menu.insert(itemB, 1);
+ harness.check(menu.getItem(1), itemB);
+ MenuItem itemC = new MenuItem("Menu Item C");
+ menu.insert(itemC, 0);
+ harness.check(menu.getItem(0), itemC);
+ harness.check(menu.getItem(1), itemA);
+ harness.check(menu.getItem(2), itemB);
+
+ // try negative index
+ boolean pass = false;
+ try
+ {
+ MenuItem itemD = new MenuItem("Menu Item D");
+ menu.insert(itemD, -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try index too large - item gets inserted at end of menu
+ MenuItem itemD = new MenuItem("Menu Item D");
+ menu.insert(itemD, 4);
+ harness.check(menu.getItem(0), itemC);
+ harness.check(menu.getItem(1), itemA);
+ harness.check(menu.getItem(2), itemB);
+ harness.check(menu.getItem(3), itemD);
+
+ // try null item
+ pass = false;
+ try
+ {
+ menu.insert((MenuItem) null, 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, int)");
+ Menu menu = new Menu("Menu 1");
+ menu.insert("Menu Item A", 0);
+ harness.check(menu.getItem(0).getLabel(), "Menu Item A");
+ menu.insert("Menu Item B", 1);
+ harness.check(menu.getItem(1).getLabel(), "Menu Item B");
+ menu.insert("Menu Item C", 0);
+ harness.check(menu.getItem(0).getLabel(), "Menu Item C");
+ harness.check(menu.getItem(1).getLabel(), "Menu Item A");
+ harness.check(menu.getItem(2).getLabel(), "Menu Item B");
+
+ // try negative index
+ boolean pass = false;
+ try
+ {
+ menu.insert("Menu Item D", -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try index too large - item gets inserted at end of menu
+ menu.insert("Menu Item D", 4);
+ harness.check(menu.getItem(0).getLabel(), "Menu Item C");
+ harness.check(menu.getItem(1).getLabel(), "Menu Item A");
+ harness.check(menu.getItem(2).getLabel(), "Menu Item B");
+ harness.check(menu.getItem(3).getLabel(), "Menu Item D");
+
+ // try null item
+ menu.insert((String) null, 0);
+ harness.check(menu.getItem(0).getLabel(), null);
+ }
+
+ public void testPR28699(TestHarness harness)
+ {
+ harness.checkPoint("PR29699");
+ Frame f = new Frame("AWT Menu Test");
+ MenuBar mb = new MenuBar();
+ Menu m = new Menu("Menu 1");
+ mb.add(m);
+ f.setMenuBar(mb);
+ f.add(new Button("Button"));
+ f.pack();
+ MenuItem itemA = new MenuItem("Item A");
+ m.insert(itemA, 0);
+ MenuItem itemB = new MenuItem("Item B");
+ m.insert(itemB, 0);
+ MenuItem itemC = new MenuItem("Item C");
+ m.insert(itemC, 1);
+ MenuItem itemD = new MenuItem("Item D");
+ m.insert(itemD, 1);
+ harness.check(m.getItem(0), itemB);
+ harness.check(m.getItem(1), itemD);
+ harness.check(m.getItem(2), itemC);
+ harness.check(m.getItem(3), itemA);
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/MenuBar/CVS/Entries b/gnu/testlet/java/awt/MenuBar/CVS/Entries
new file mode 100644
index 00000000..1546f9b8
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuBar/CVS/Entries
@@ -0,0 +1,2 @@
+/addMenu.java/1.1/Sun Feb 19 13:59:56 2006//
+D
diff --git a/gnu/testlet/java/awt/MenuBar/CVS/Repository b/gnu/testlet/java/awt/MenuBar/CVS/Repository
new file mode 100644
index 00000000..6bdb5399
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuBar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/MenuBar
diff --git a/gnu/testlet/java/awt/MenuBar/CVS/Root b/gnu/testlet/java/awt/MenuBar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuBar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/MenuBar/addMenu.java b/gnu/testlet/java/awt/MenuBar/addMenu.java
new file mode 100644
index 00000000..36bbe4e9
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuBar/addMenu.java
@@ -0,0 +1,69 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+
+// 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,Inc., 51 Franklin Street, Fifth Floor, Boston,
+// MA 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.MenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+
+public class addMenu implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ MenuBar mb = new MenuBar();
+ harness.check(mb.countMenus(), 0);
+
+ Menu m = new Menu("Testing");
+ mb.add(m);
+ harness.check(mb.countMenus(), 1);
+ harness.check(mb.getMenu(0), m);
+ harness.check(m.getParent(), mb);
+
+ mb.remove(m);
+ harness.check(mb.countMenus(), 0);
+ harness.check(m.getParent(), null);
+
+ mb.add(m);
+ harness.check(mb.countMenus(), 1);
+ harness.check(mb.getMenu(0), m);
+ harness.check(m.getParent(), mb);
+
+ Menu m2 = new Menu("SecondMenu");
+ mb.add(m2);
+ harness.check(mb.countMenus(), 2);
+ harness.check(mb.getMenu(0), m);
+ harness.check(mb.getMenu(1), m2);
+ harness.check(m2.getParent(), mb);
+
+ mb.remove(0);
+ harness.check(mb.countMenus(), 1);
+ harness.check(mb.getMenu(0), m2);
+ harness.check(m.getParent(), null);
+ harness.check(m2.getParent(), mb);
+
+ mb.remove(m2);
+ harness.check(mb.countMenus(), 0);
+ harness.check(m2.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/MenuItem/CVS/Entries b/gnu/testlet/java/awt/MenuItem/CVS/Entries
new file mode 100644
index 00000000..70f44ecb
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuItem/CVS/Entries
@@ -0,0 +1,2 @@
+/label1.java/1.1/Thu Jun 9 22:23:46 2005//
+D
diff --git a/gnu/testlet/java/awt/MenuItem/CVS/Repository b/gnu/testlet/java/awt/MenuItem/CVS/Repository
new file mode 100644
index 00000000..d53c4f5c
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuItem/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/MenuItem
diff --git a/gnu/testlet/java/awt/MenuItem/CVS/Root b/gnu/testlet/java/awt/MenuItem/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuItem/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/MenuItem/label1.java b/gnu/testlet/java/awt/MenuItem/label1.java
new file mode 100644
index 00000000..40f59f1e
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuItem/label1.java
@@ -0,0 +1,49 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.MenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check initial value of a MenuItem label.
+ */
+public class label1 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ MenuItem m1 = new MenuItem ();
+
+ harness.check (m1.getLabel() == "");
+
+ MenuItem m2 = new MenuItem ("menu item 2");
+
+ harness.check (m2.getLabel() == "menu item 2");
+
+ MenuItem m3 = new MenuItem (null);
+
+ harness.check (m3.getLabel() == null);
+ }
+}
diff --git a/gnu/testlet/java/awt/MenuShortcut/CVS/Entries b/gnu/testlet/java/awt/MenuShortcut/CVS/Entries
new file mode 100644
index 00000000..9cc5508c
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuShortcut/CVS/Entries
@@ -0,0 +1,2 @@
+/testToString.java/1.1/Tue Aug 22 19:20:15 2006//
+D
diff --git a/gnu/testlet/java/awt/MenuShortcut/CVS/Repository b/gnu/testlet/java/awt/MenuShortcut/CVS/Repository
new file mode 100644
index 00000000..5a121134
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuShortcut/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/MenuShortcut
diff --git a/gnu/testlet/java/awt/MenuShortcut/CVS/Root b/gnu/testlet/java/awt/MenuShortcut/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuShortcut/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/MenuShortcut/testToString.java b/gnu/testlet/java/awt/MenuShortcut/testToString.java
new file mode 100644
index 00000000..71b3a97e
--- /dev/null
+++ b/gnu/testlet/java/awt/MenuShortcut/testToString.java
@@ -0,0 +1,361 @@
+/* testToString.java --
+ Copyright (C) 2006 RedHat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.3
+
+package gnu.testlet.java.awt.MenuShortcut;
+
+import java.awt.MenuShortcut;
+import java.awt.event.KeyEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testToString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ MenuShortcut m = new MenuShortcut(KeyEvent.VK_ENTER);
+ harness.check(m.toString(), "Ctrl+Enter");
+ harness.check(m.usesShiftModifier(), false);
+
+ m = new MenuShortcut(KeyEvent.VK_BACK_SPACE, true);
+ harness.check(m.toString(), "Ctrl+Shift+Backspace");
+ harness.check(m.usesShiftModifier(), true);
+
+ m = new MenuShortcut(KeyEvent.VK_TAB);
+ harness.check(m.toString(), "Ctrl+Tab");
+
+ m = new MenuShortcut(KeyEvent.VK_CANCEL);
+ harness.check(m.toString(), "Ctrl+Cancel");
+
+ m = new MenuShortcut(KeyEvent.VK_CLEAR);
+ harness.check(m.toString(), "Ctrl+Clear");
+
+ m = new MenuShortcut(KeyEvent.VK_SHIFT);
+ harness.check(m.toString(), "Ctrl+Shift");
+
+ m = new MenuShortcut(KeyEvent.VK_CONTROL);
+ harness.check(m.toString(), "Ctrl+Ctrl");
+
+ m = new MenuShortcut(KeyEvent.VK_ALT);
+ harness.check(m.toString(), "Ctrl+Alt");
+
+ m = new MenuShortcut(KeyEvent.VK_PAUSE);
+ harness.check(m.toString(), "Ctrl+Pause");
+
+ m = new MenuShortcut(KeyEvent.VK_CAPS_LOCK);
+ harness.check(m.toString(), "Ctrl+Caps Lock");
+
+ m = new MenuShortcut(KeyEvent.VK_ESCAPE);
+ harness.check(m.toString(), "Ctrl+Escape");
+
+ m = new MenuShortcut(KeyEvent.VK_SPACE);
+ harness.check(m.toString(), "Ctrl+Space");
+
+ m = new MenuShortcut(KeyEvent.VK_PAGE_UP);
+ harness.check(m.toString(), "Ctrl+Page Up");
+
+ m = new MenuShortcut(KeyEvent.VK_PAGE_DOWN);
+ harness.check(m.toString(), "Ctrl+Page Down");
+
+ m = new MenuShortcut(KeyEvent.VK_END);
+ harness.check(m.toString(), "Ctrl+End");
+
+ m = new MenuShortcut(KeyEvent.VK_HOME);
+ harness.check(m.toString(), "Ctrl+Home");
+
+ m = new MenuShortcut(KeyEvent.VK_LEFT);
+ harness.check(m.toString(), "Ctrl+Left");
+
+ m = new MenuShortcut(KeyEvent.VK_UP);
+ harness.check(m.toString(), "Ctrl+Up");
+
+ m = new MenuShortcut(KeyEvent.VK_RIGHT);
+ harness.check(m.toString(), "Ctrl+Right");
+
+ m = new MenuShortcut(KeyEvent.VK_DOWN);
+ harness.check(m.toString(), "Ctrl+Down");
+
+ m = new MenuShortcut(KeyEvent.VK_COMMA);
+ harness.check(m.toString(), "Ctrl+Comma");
+
+ m = new MenuShortcut(KeyEvent.VK_PERIOD);
+ harness.check(m.toString(), "Ctrl+Period");
+
+ m = new MenuShortcut(KeyEvent.VK_SLASH);
+ harness.check(m.toString(), "Ctrl+Slash");
+
+ m = new MenuShortcut(KeyEvent.VK_SEMICOLON);
+ harness.check(m.toString(), "Ctrl+Semicolon");
+
+ m = new MenuShortcut(KeyEvent.VK_EQUALS);
+ harness.check(m.toString(), "Ctrl+Equals");
+
+ m = new MenuShortcut(KeyEvent.VK_BACK_SLASH);
+ harness.check(m.toString(), "Ctrl+Back Slash");
+
+ m = new MenuShortcut(KeyEvent.VK_0);
+ harness.check(m.toString(), "Ctrl+0");
+
+ m = new MenuShortcut(KeyEvent.VK_1);
+ harness.check(m.toString(), "Ctrl+1");
+
+ m = new MenuShortcut(KeyEvent.VK_2);
+ harness.check(m.toString(), "Ctrl+2");
+
+ m = new MenuShortcut(KeyEvent.VK_3);
+ harness.check(m.toString(), "Ctrl+3");
+
+ m = new MenuShortcut(KeyEvent.VK_4);
+ harness.check(m.toString(), "Ctrl+4");
+
+ m = new MenuShortcut(KeyEvent.VK_5);
+ harness.check(m.toString(), "Ctrl+5");
+
+ m = new MenuShortcut(KeyEvent.VK_6);
+ harness.check(m.toString(), "Ctrl+6");
+
+ m = new MenuShortcut(KeyEvent.VK_7);
+ harness.check(m.toString(), "Ctrl+7");
+
+ m = new MenuShortcut(KeyEvent.VK_8);
+ harness.check(m.toString(), "Ctrl+8");
+
+ m = new MenuShortcut(KeyEvent.VK_9);
+ harness.check(m.toString(), "Ctrl+9");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD0);
+ harness.check(m.toString(), "Ctrl+NumPad-0");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD1);
+ harness.check(m.toString(), "Ctrl+NumPad-1");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD2);
+ harness.check(m.toString(), "Ctrl+NumPad-2");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD3);
+ harness.check(m.toString(), "Ctrl+NumPad-3");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD4);
+ harness.check(m.toString(), "Ctrl+NumPad-4");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD5);
+ harness.check(m.toString(), "Ctrl+NumPad-5");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD6);
+ harness.check(m.toString(), "Ctrl+NumPad-6");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD7);
+ harness.check(m.toString(), "Ctrl+NumPad-7");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD8);
+ harness.check(m.toString(), "Ctrl+NumPad-8");
+
+ m = new MenuShortcut(KeyEvent.VK_NUMPAD9);
+ harness.check(m.toString(), "Ctrl+NumPad-9");
+
+ m = new MenuShortcut(KeyEvent.VK_MULTIPLY);
+ harness.check(m.toString(), "Ctrl+NumPad *");
+
+ m = new MenuShortcut(KeyEvent.VK_ADD);
+ harness.check(m.toString(), "Ctrl+NumPad +");
+
+ m = new MenuShortcut(KeyEvent.VK_SEPARATER);
+ harness.check(m.toString(), "Ctrl+NumPad ,");
+
+ m = new MenuShortcut(KeyEvent.VK_SUBTRACT);
+ harness.check(m.toString(), "Ctrl+NumPad -");
+
+ m = new MenuShortcut(KeyEvent.VK_DECIMAL);
+ harness.check(m.toString(), "Ctrl+NumPad .");
+
+ m = new MenuShortcut(KeyEvent.VK_DIVIDE);
+ harness.check(m.toString(), "Ctrl+NumPad /");
+
+ m = new MenuShortcut(KeyEvent.VK_A);
+ harness.check(m.toString(), "Ctrl+A");
+
+ m = new MenuShortcut(KeyEvent.VK_B);
+ harness.check(m.toString(), "Ctrl+B");
+
+ m = new MenuShortcut(KeyEvent.VK_C);
+ harness.check(m.toString(), "Ctrl+C");
+
+ m = new MenuShortcut(KeyEvent.VK_D);
+ harness.check(m.toString(), "Ctrl+D");
+
+ m = new MenuShortcut(KeyEvent.VK_E);
+ harness.check(m.toString(), "Ctrl+E");
+
+ m = new MenuShortcut(KeyEvent.VK_F);
+ harness.check(m.toString(), "Ctrl+F");
+
+ m = new MenuShortcut(KeyEvent.VK_G);
+ harness.check(m.toString(), "Ctrl+G");
+
+ m = new MenuShortcut(KeyEvent.VK_H);
+ harness.check(m.toString(), "Ctrl+H");
+
+ m = new MenuShortcut(KeyEvent.VK_I);
+ harness.check(m.toString(), "Ctrl+I");
+
+ m = new MenuShortcut(KeyEvent.VK_J);
+ harness.check(m.toString(), "Ctrl+J");
+
+ m = new MenuShortcut(KeyEvent.VK_L);
+ harness.check(m.toString(), "Ctrl+L");
+
+ m = new MenuShortcut(KeyEvent.VK_M);
+ harness.check(m.toString(), "Ctrl+M");
+
+ m = new MenuShortcut(KeyEvent.VK_N);
+ harness.check(m.toString(), "Ctrl+N");
+
+ m = new MenuShortcut(KeyEvent.VK_O);
+ harness.check(m.toString(), "Ctrl+O");
+
+ m = new MenuShortcut(KeyEvent.VK_P);
+ harness.check(m.toString(), "Ctrl+P");
+
+ m = new MenuShortcut(KeyEvent.VK_Q);
+ harness.check(m.toString(), "Ctrl+Q");
+
+ m = new MenuShortcut(KeyEvent.VK_R);
+ harness.check(m.toString(), "Ctrl+R");
+
+ m = new MenuShortcut(KeyEvent.VK_S);
+ harness.check(m.toString(), "Ctrl+S");
+
+ m = new MenuShortcut(KeyEvent.VK_T);
+ harness.check(m.toString(), "Ctrl+T");
+
+ m = new MenuShortcut(KeyEvent.VK_U);
+ harness.check(m.toString(), "Ctrl+U");
+
+ m = new MenuShortcut(KeyEvent.VK_V);
+ harness.check(m.toString(), "Ctrl+V");
+
+ m = new MenuShortcut(KeyEvent.VK_W);
+ harness.check(m.toString(), "Ctrl+W");
+
+ m = new MenuShortcut(KeyEvent.VK_X);
+ harness.check(m.toString(), "Ctrl+X");
+
+ m = new MenuShortcut(KeyEvent.VK_Y);
+ harness.check(m.toString(), "Ctrl+Y");
+
+ m = new MenuShortcut(KeyEvent.VK_Z);
+ harness.check(m.toString(), "Ctrl+Z");
+
+ m = new MenuShortcut(KeyEvent.VK_F1);
+ harness.check(m.toString(), "Ctrl+F1");
+
+ m = new MenuShortcut(KeyEvent.VK_F2);
+ harness.check(m.toString(), "Ctrl+F2");
+
+ m = new MenuShortcut(KeyEvent.VK_F3);
+ harness.check(m.toString(), "Ctrl+F3");
+
+ m = new MenuShortcut(KeyEvent.VK_F4);
+ harness.check(m.toString(), "Ctrl+F4");
+
+ m = new MenuShortcut(KeyEvent.VK_F5);
+ harness.check(m.toString(), "Ctrl+F5");
+
+ m = new MenuShortcut(KeyEvent.VK_F6);
+ harness.check(m.toString(), "Ctrl+F6");
+
+ m = new MenuShortcut(KeyEvent.VK_F7);
+ harness.check(m.toString(), "Ctrl+F7");
+
+ m = new MenuShortcut(KeyEvent.VK_F8);
+ harness.check(m.toString(), "Ctrl+F8");
+
+ m = new MenuShortcut(KeyEvent.VK_F9);
+ harness.check(m.toString(), "Ctrl+F9");
+
+ m = new MenuShortcut(KeyEvent.VK_F10);
+ harness.check(m.toString(), "Ctrl+F10");
+
+ m = new MenuShortcut(KeyEvent.VK_F11);
+ harness.check(m.toString(), "Ctrl+F11");
+
+ m = new MenuShortcut(KeyEvent.VK_F12);
+ harness.check(m.toString(), "Ctrl+F12");
+
+ m = new MenuShortcut(KeyEvent.VK_DELETE);
+ harness.check(m.toString(), "Ctrl+Delete");
+
+ m = new MenuShortcut(KeyEvent.VK_NUM_LOCK);
+ harness.check(m.toString(), "Ctrl+Num Lock");
+
+ m = new MenuShortcut(KeyEvent.VK_SCROLL_LOCK);
+ harness.check(m.toString(), "Ctrl+Scroll Lock");
+
+ m = new MenuShortcut(KeyEvent.VK_PRINTSCREEN);
+ harness.check(m.toString(), "Ctrl+Print Screen");
+
+ m = new MenuShortcut(KeyEvent.VK_INSERT);
+ harness.check(m.toString(), "Ctrl+Insert");
+
+ m = new MenuShortcut(KeyEvent.VK_HELP);
+ harness.check(m.toString(), "Ctrl+Help");
+
+ m = new MenuShortcut(KeyEvent.VK_META);
+ harness.check(m.toString(), "Ctrl+Meta");
+
+ m = new MenuShortcut(KeyEvent.VK_BACK_QUOTE);
+ harness.check(m.toString(), "Ctrl+Back Quote");
+
+ m = new MenuShortcut(KeyEvent.VK_QUOTE);
+ harness.check(m.toString(), "Ctrl+Quote");
+
+ m = new MenuShortcut(KeyEvent.VK_OPEN_BRACKET);
+ harness.check(m.toString(), "Ctrl+Open Bracket");
+
+ m = new MenuShortcut(KeyEvent.VK_CLOSE_BRACKET);
+ harness.check(m.toString(), "Ctrl+Close Bracket");
+
+ m = new MenuShortcut(KeyEvent.VK_ACCEPT);
+ harness.check(m.toString(), "Ctrl+Accept");
+
+ m = new MenuShortcut(KeyEvent.VK_CONVERT);
+ harness.check(m.toString(), "Ctrl+Convert");
+
+ m = new MenuShortcut(KeyEvent.VK_FINAL);
+ harness.check(m.toString(), "Ctrl+Final");
+
+ m = new MenuShortcut(KeyEvent.VK_KANA);
+ harness.check(m.toString(), "Ctrl+Kana");
+
+ m = new MenuShortcut(KeyEvent.VK_KANJI);
+ harness.check(m.toString(), "Ctrl+Kanji");
+
+ m = new MenuShortcut(KeyEvent.VK_MODECHANGE);
+ harness.check(m.toString(), "Ctrl+Mode Change");
+
+ m = new MenuShortcut(KeyEvent.VK_NONCONVERT);
+ harness.check(m.toString(), "Ctrl+No Convert");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Panel/CVS/Entries b/gnu/testlet/java/awt/Panel/CVS/Entries
new file mode 100644
index 00000000..d70eb5ce
--- /dev/null
+++ b/gnu/testlet/java/awt/Panel/CVS/Entries
@@ -0,0 +1,2 @@
+/TestPanelRepaint.java/1.3/Mon Oct 3 09:06:26 2011//
+D
diff --git a/gnu/testlet/java/awt/Panel/CVS/Repository b/gnu/testlet/java/awt/Panel/CVS/Repository
new file mode 100644
index 00000000..586aa4e4
--- /dev/null
+++ b/gnu/testlet/java/awt/Panel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Panel
diff --git a/gnu/testlet/java/awt/Panel/CVS/Root b/gnu/testlet/java/awt/Panel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Panel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Panel/TestPanelRepaint.java b/gnu/testlet/java/awt/Panel/TestPanelRepaint.java
new file mode 100644
index 00000000..c83639cd
--- /dev/null
+++ b/gnu/testlet/java/awt/Panel/TestPanelRepaint.java
@@ -0,0 +1,106 @@
+/* TestPanelRepaint.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+
+package gnu.testlet.java.awt.Panel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Robot;
+import java.awt.event.*;
+
+public class TestPanelRepaint
+ implements Testlet
+{
+ TestHarness harness;
+ Robot r;
+ boolean updateCalled;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ r = harness.createRobot();
+ myPanel p = new myPanel();
+ p.add(new List(10));
+ Frame f = new Frame();
+ f.add(p);
+ f.pack();
+ f.show();
+
+ // There is a delay to avoid any race conditions.
+ r.waitForIdle();
+ r.delay(1000);
+
+ f.move(100, 100);
+
+ r.delay(3000);
+
+ f.setSize(400, 400);
+
+ // There is a delay so the tester can see the result.
+ r.delay(3000);
+ harness.check(updateCalled);
+
+ // time to clean up
+ f.dispose();
+ }
+
+ public class myPanel
+ extends Panel implements ComponentListener
+ {
+ public myPanel()
+ {
+ super();
+ addComponentListener(this);
+ }
+
+ public void update(Graphics g)
+ {
+ updateCalled = true;
+ super.update(g);
+ }
+
+ public void componentResized(ComponentEvent e)
+ {
+ repaint();
+ }
+
+ public void componentMoved(ComponentEvent e)
+ {
+ repaint();
+ }
+
+ public void componentShown(ComponentEvent e)
+ {
+ repaint();
+ }
+
+ public void componentHidden(ComponentEvent e)
+ {
+ repaint();
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Point/CVS/Entries b/gnu/testlet/java/awt/Point/CVS/Entries
new file mode 100644
index 00000000..85eb6242
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/CVS/Entries
@@ -0,0 +1,8 @@
+/clone.java/1.1/Wed Oct 20 09:11:29 2004//
+/constructors.java/1.1/Wed Oct 20 09:11:29 2004//
+/equals.java/1.1/Wed Oct 20 09:11:29 2004//
+/getLocation.java/1.1/Wed Oct 20 09:11:29 2004//
+/move.java/1.1/Wed Oct 20 09:11:29 2004//
+/setLocation.java/1.2/Tue Jun 27 16:25:56 2006//
+/translate.java/1.1/Wed Oct 20 09:11:29 2004//
+D
diff --git a/gnu/testlet/java/awt/Point/CVS/Repository b/gnu/testlet/java/awt/Point/CVS/Repository
new file mode 100644
index 00000000..006cb00b
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Point
diff --git a/gnu/testlet/java/awt/Point/CVS/Root b/gnu/testlet/java/awt/Point/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Point/clone.java b/gnu/testlet/java/awt/Point/clone.java
new file mode 100644
index 00000000..f281b151
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/clone.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the clone() method in the {@link Point} class.
+ */
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Point p1 = new Point(10, 11);
+ Point p2 = null;
+ p2 = (Point) p1.clone();
+ harness.check(p1.equals(p2));
+ harness.check(p1 != p2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Point/constructors.java b/gnu/testlet/java/awt/Point/constructors.java
new file mode 100644
index 00000000..5f441809
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/constructors.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the constructors in the {@link Point} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ Point p = new Point();
+ harness.check(p.x, 0);
+ harness.check(p.y, 0);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ Point p = new Point(1, 2);
+ harness.check(p.x, 1);
+ harness.check(p.y, 2);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ Point p = new Point(new Point(2, 3));
+ harness.check(p.x, 2);
+ harness.check(p.y, 3);
+
+ try
+ {
+ p = new Point(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Point/equals.java b/gnu/testlet/java/awt/Point/equals.java
new file mode 100644
index 00000000..3457b152
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/equals.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.geom.Point2D;
+
+/**
+ * Some checks for the equals() method in the {@link Point} class.
+ */
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Point p1 = new Point();
+ Point p2 = new Point();
+ harness.check(p1.equals(p2));
+
+ p1 = new Point(1, 0);
+ harness.check(!p1.equals(p2));
+ p2 = new Point(1, 0);
+ harness.check(p1.equals(p2));
+
+ p1 = new Point(1, 2);
+ harness.check(!p1.equals(p2));
+ p2 = new Point(1, 2);
+ harness.check(p1.equals(p2));
+
+ harness.check(!p1.equals(null));
+
+ Point2D p3 = new Point2D.Double(1.0, 2.0);
+ harness.check(p3.equals(p1));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Point/getLocation.java b/gnu/testlet/java/awt/Point/getLocation.java
new file mode 100644
index 00000000..09803e58
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/getLocation.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the getLocation() method in the {@link Point} class.
+ */
+public class getLocation implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Point p = new Point(1, 2);
+ Point l = p.getLocation();
+ harness.check(l.x, 1);
+ harness.check(l.y, 2);
+
+ // check independence
+ p.setLocation(4, 5);
+ harness.check(l.x, 1);
+ harness.check(l.y, 2);
+ }
+
+
+}
diff --git a/gnu/testlet/java/awt/Point/move.java b/gnu/testlet/java/awt/Point/move.java
new file mode 100644
index 00000000..b8a9a492
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/move.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the move() method in the {@link Point} class.
+ */
+public class move implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Point p = new Point();
+ p.move(4, 5);
+ harness.check(p.x, 4);
+ harness.check(p.y, 5);
+ }
+
+
+}
diff --git a/gnu/testlet/java/awt/Point/setLocation.java b/gnu/testlet/java/awt/Point/setLocation.java
new file mode 100644
index 00000000..fa25c3e8
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/setLocation.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the setLocation() method in the {@link Point} class.
+ */
+public class setLocation implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setLocation(int, int)");
+ Point p = new Point();
+ p.setLocation(4, 5);
+ harness.check(p.x, 4);
+ harness.check(p.y, 5);
+
+ harness.checkPoint("setLocation(Point)");
+ p.setLocation(new Point(6, 7));
+ harness.check(p.x, 6);
+ harness.check(p.y, 7);
+
+ try
+ {
+ p.setLocation(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("setLocation(double, double)");
+ p = new Point();
+ p.setLocation(1.2, 2.3);
+ harness.check(p.x, 1);
+ harness.check(p.y, 2);
+
+ p.setLocation(1.51, 2.7);
+ harness.check(p.x, 2);
+ harness.check(p.y, 3);
+
+ p.setLocation(1.5, 2.5);
+ harness.check(p.x, 2);
+ harness.check(p.y, 3);
+
+ p.setLocation(-1.5, -2.5);
+ harness.check(p.x, -1);
+ harness.check(p.y, -2);
+
+ p.setLocation(1.499, 2.499);
+ harness.check(p.x, 1);
+ harness.check(p.y, 2);
+
+ p.setLocation(Double.NaN, Double.NaN);
+ harness.check(p.x, 0);
+ harness.check(p.y, 0);
+
+ double bigPos = Integer.MAX_VALUE + 10000.0;
+ double bigNeg = Integer.MIN_VALUE - 10000.0;
+
+ p.setLocation(bigPos, bigPos);
+ harness.check(p.x, Integer.MAX_VALUE);
+ harness.check(p.y, Integer.MAX_VALUE);
+
+ p.setLocation(bigNeg, bigNeg);
+ harness.check(p.x, Integer.MIN_VALUE);
+ harness.check(p.y, Integer.MIN_VALUE);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Point/translate.java b/gnu/testlet/java/awt/Point/translate.java
new file mode 100644
index 00000000..0693ca1c
--- /dev/null
+++ b/gnu/testlet/java/awt/Point/translate.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.Point;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+
+/**
+ * Some checks for the translate() method in the {@link Point} class.
+ */
+public class translate implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Point p = new Point(1, 2);
+ p.translate(3, 4);
+ harness.check(p.x, 4);
+ harness.check(p.y, 6);
+ }
+
+
+}
diff --git a/gnu/testlet/java/awt/Polygon/CVS/Entries b/gnu/testlet/java/awt/Polygon/CVS/Entries
new file mode 100644
index 00000000..35baa9a8
--- /dev/null
+++ b/gnu/testlet/java/awt/Polygon/CVS/Entries
@@ -0,0 +1,3 @@
+/contains.java/1.1/Fri Aug 27 13:48:06 2004//
+/getPathIterator.java/1.1/Wed Jun 14 22:29:50 2006//
+D
diff --git a/gnu/testlet/java/awt/Polygon/CVS/Repository b/gnu/testlet/java/awt/Polygon/CVS/Repository
new file mode 100644
index 00000000..0101589e
--- /dev/null
+++ b/gnu/testlet/java/awt/Polygon/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Polygon
diff --git a/gnu/testlet/java/awt/Polygon/CVS/Root b/gnu/testlet/java/awt/Polygon/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Polygon/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Polygon/contains.java b/gnu/testlet/java/awt/Polygon/contains.java
new file mode 100644
index 00000000..6cdb3d9c
--- /dev/null
+++ b/gnu/testlet/java/awt/Polygon/contains.java
@@ -0,0 +1,160 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Polygon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.Polygon;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the contains() method in the {@link Polygon} class works
+ * correctly.
+ */
+public class contains implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Polygon 1");
+ Polygon p = createTestPolygon1();
+ harness.check(p.contains(0, 0)); // 1
+ harness.check(!p.contains(0, 1)); // 2
+ harness.check(p.contains(1, 0)); // 3
+ harness.check(p.contains(1, 1)); // 4
+ harness.check(!p.contains(1, 2)); // 5
+ harness.check(!p.contains(2, 0)); // 6
+ harness.check(!p.contains(2, 1)); // 7
+
+ harness.checkPoint("Polygon 2");
+ p = createTestPolygon2();
+ harness.check(p.contains(0, 0)); // 8
+ harness.check(!p.contains(0, 5)); // 9
+ harness.check(!p.contains(5, 5)); // 10
+ harness.check(!p.contains(5, 1)); // 11
+ harness.check(p.contains(2, 1)); // 12
+ harness.check(!p.contains(2, 3)); // 13
+ harness.check(!p.contains(3, 3)); // 14
+ harness.check(!p.contains(3, 2)); // 15
+ harness.check(p.contains(4, 2)); // 16
+ harness.check(p.contains(4, 4)); // 17
+ harness.check(p.contains(1, 4)); // 18
+ harness.check(!p.contains(1, 0)); // 19
+
+ harness.check(!p.contains(-0.5, 2.5)); // 20
+ harness.check(p.contains(0.5, 2.5)); // 21
+ harness.check(!p.contains(1.5, 2.5)); // 22
+ harness.check(p.contains(2.5, 2.5)); // 23
+ harness.check(!p.contains(3.5, 2.5)); // 24
+ harness.check(p.contains(4.5, 2.5)); // 25
+ harness.check(!p.contains(5.5, 2.5)); // 26
+
+ harness.checkPoint("Null argument checks");
+ testNullArguments(harness);
+ }
+
+ /**
+ * Checks method calls with <code>null</code> argument.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testNullArguments(TestHarness harness)
+ {
+ boolean pass = false;
+ Polygon p = new Polygon();
+ try
+ {
+ p.contains((Point) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ p.contains((Point2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ p.contains((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Creates a simple test polygon.
+ *
+ * @return A test polygon.
+ */
+ private Polygon createTestPolygon1()
+ {
+ Polygon p = new Polygon();
+ p.addPoint(0, 0);
+ p.addPoint(1, 2);
+ p.addPoint(2, 0);
+ return p;
+ }
+
+ /**
+ * Creates a more complex test polygon.
+ *
+ * @return A test polygon.
+ */
+ private Polygon createTestPolygon2()
+ {
+ Polygon p = new Polygon();
+ p.addPoint(0, 0);
+ p.addPoint(0, 5);
+ p.addPoint(5, 5);
+ p.addPoint(5, 1);
+ p.addPoint(2, 1);
+ p.addPoint(2, 3);
+ p.addPoint(3, 3);
+ p.addPoint(3, 2);
+ p.addPoint(4, 2);
+ p.addPoint(4, 4);
+ p.addPoint(1, 4);
+ p.addPoint(1, 0);
+ return p;
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Polygon/getPathIterator.java b/gnu/testlet/java/awt/Polygon/getPathIterator.java
new file mode 100644
index 00000000..f8c26ac4
--- /dev/null
+++ b/gnu/testlet/java/awt/Polygon/getPathIterator.java
@@ -0,0 +1,194 @@
+/* getPathIterator.java -- some checks for the getPathIterator() method in the
+ Polygon class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.java.awt.Polygon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Polygon;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+
+public class getPathIterator implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(AffineTransform)");
+ Polygon p = new Polygon(new int[] {0, 1, 1, 0},
+ new int[] {0, 0, 1, 1}, 4);
+
+ // test with no tranform...
+ PathIterator pi = p.getPathIterator(null);
+ harness.check(pi.getWindingRule(), PathIterator.WIND_EVEN_ODD);
+ double[] coords = new double[6];
+ int t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_MOVETO);
+ harness.check(coords[0], 0.0);
+ harness.check(coords[1], 0.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 1.0);
+ harness.check(coords[1], 0.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 1.0);
+ harness.check(coords[1], 1.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 0.0);
+ harness.check(coords[1], 1.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_CLOSE);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ harness.check(pi.isDone(), true);
+
+ // test with tranform...
+ AffineTransform trans = AffineTransform.getTranslateInstance(10.0, 11.0);
+ pi = p.getPathIterator(trans);
+ harness.check(pi.getWindingRule(), PathIterator.WIND_EVEN_ODD);
+ coords = new double[6];
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_MOVETO);
+ harness.check(coords[0], 10.0);
+ harness.check(coords[1], 11.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 11.0);
+ harness.check(coords[1], 11.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 11.0);
+ harness.check(coords[1], 12.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 10.0);
+ harness.check(coords[1], 12.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_CLOSE);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ harness.check(pi.isDone(), true);
+
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(AffineTransform, double)");
+ Polygon p = new Polygon(new int[] {0, 1, 1, 0},
+ new int[] {0, 0, 1, 1}, 4);
+
+ // test with no tranform...
+ PathIterator pi = p.getPathIterator(null, 1.0);
+ harness.check(pi.getWindingRule(), PathIterator.WIND_EVEN_ODD);
+ double[] coords = new double[6];
+ int t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_MOVETO);
+ harness.check(coords[0], 0.0);
+ harness.check(coords[1], 0.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 1.0);
+ harness.check(coords[1], 0.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 1.0);
+ harness.check(coords[1], 1.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 0.0);
+ harness.check(coords[1], 1.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_CLOSE);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ harness.check(pi.isDone(), true);
+
+ // test with tranform...
+ AffineTransform trans = AffineTransform.getTranslateInstance(10.0, 11.0);
+ pi = p.getPathIterator(trans, 1.0);
+ harness.check(pi.getWindingRule(), PathIterator.WIND_EVEN_ODD);
+ coords = new double[6];
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_MOVETO);
+ harness.check(coords[0], 10.0);
+ harness.check(coords[1], 11.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 11.0);
+ harness.check(coords[1], 11.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 11.0);
+ harness.check(coords[1], 12.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_LINETO);
+ harness.check(coords[0], 10.0);
+ harness.check(coords[1], 12.0);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ t = pi.currentSegment(coords);
+ harness.check(t, PathIterator.SEG_CLOSE);
+ harness.check(pi.isDone(), false);
+ pi.next();
+ harness.check(pi.isDone(), true);
+ }
+}
diff --git a/gnu/testlet/java/awt/Rectangle/CVS/Entries b/gnu/testlet/java/awt/Rectangle/CVS/Entries
new file mode 100644
index 00000000..d64ea635
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/CVS/Entries
@@ -0,0 +1,17 @@
+/add.java/1.1/Thu Aug 12 12:41:52 2004//
+/clone.java/1.1/Thu Aug 12 12:41:52 2004//
+/constructors.java/1.1/Tue Sep 26 19:03:14 2006//
+/contains.java/1.1/Thu Aug 12 12:41:52 2004//
+/equals.java/1.1/Thu Aug 12 12:41:52 2004//
+/grow.java/1.1/Thu Aug 12 12:41:52 2004//
+/intersection.java/1.1/Thu Aug 12 12:41:52 2004//
+/intersects.java/1.1/Thu Aug 12 12:41:52 2004//
+/isEmpty.java/1.1/Thu Aug 12 12:41:52 2004//
+/outcode.java/1.1/Thu Aug 12 12:41:52 2004//
+/setBounds.java/1.1/Thu Aug 12 12:41:52 2004//
+/setLocation.java/1.1/Thu Aug 12 12:41:52 2004//
+/setRect.java/1.2/Mon Sep 4 09:01:38 2006//
+/setSize.java/1.1/Thu Aug 12 12:41:52 2004//
+/translate.java/1.1/Thu Aug 12 12:41:52 2004//
+/union.java/1.1/Thu Aug 12 12:41:52 2004//
+D
diff --git a/gnu/testlet/java/awt/Rectangle/CVS/Repository b/gnu/testlet/java/awt/Rectangle/CVS/Repository
new file mode 100644
index 00000000..463f6ca2
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Rectangle
diff --git a/gnu/testlet/java/awt/Rectangle/CVS/Root b/gnu/testlet/java/awt/Rectangle/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Rectangle/add.java b/gnu/testlet/java/awt/Rectangle/add.java
new file mode 100644
index 00000000..e49b05fa
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/add.java
@@ -0,0 +1,66 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+
+/**
+ * Checks that the add() method works correctly.
+ */
+public class add implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r = new Rectangle();
+ r.add(5, 7);
+ harness.check(r.x == 0);
+ harness.check(r.y == 0);
+ harness.check(r.width == 5);
+ harness.check(r.height == 7);
+
+ boolean pass = false;
+ try {
+ r.add((Point) null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try {
+ r.add((Rectangle) null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/clone.java b/gnu/testlet/java/awt/Rectangle/clone.java
new file mode 100644
index 00000000..58cbfe0f
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/clone.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the clone() method works correctly.
+ */
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ Rectangle r2 = null;
+ r2 = (Rectangle) r1.clone();
+ harness.check(r1 != r2);
+ harness.check(r1.getClass().equals(r2.getClass()));
+ harness.check(r1.x == r2.x);
+ harness.check(r1.y == r2.y);
+ harness.check(r1.width == r2.width);
+ harness.check(r1.height == r2.height);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/constructors.java b/gnu/testlet/java/awt/Rectangle/constructors.java
new file mode 100644
index 00000000..4f56995c
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/constructors.java
@@ -0,0 +1,240 @@
+/* constructors.java
+ Copyright (C) 2006 RedHat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Rectangle;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class constructors implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ Rectangle r = new Rectangle();
+ harness.check(r.getX(), 0);
+ harness.check(r.getY(), 0);
+ harness.check(r.getWidth(), 0);
+ harness.check(r.getHeight(), 0);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle();
+ Rectangle r2 = new Rectangle(r1);
+ harness.check(r2.getX(), 0);
+ harness.check(r2.getY(), 0);
+ harness.check(r2.getWidth(), 0);
+ harness.check(r2.getHeight(), 0);
+
+ Rectangle r3 = new Rectangle(1, 2, 3, 4);
+ Rectangle r4 = new Rectangle(r3);
+ harness.check(r4.getX(), 1);
+ harness.check(r4.getY(), 2);
+ harness.check(r4.getWidth(), 3);
+ harness.check(r4.getHeight(), 4);
+
+ boolean failed = false;
+ Rectangle r5 = null;
+ try
+ {
+ Rectangle r6 = new Rectangle(r5);
+ }
+ catch (NullPointerException e)
+ {
+ failed = true;
+ }
+ harness.check(failed);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(5, 10, 15, 20);
+ harness.check(r1.getX(), 5);
+ harness.check(r1.getY(), 10);
+ harness.check(r1.getWidth(), 15);
+ harness.check(r1.getHeight(), 20);
+
+ Rectangle r2 = new Rectangle(-5, -10, -15, -20);
+ harness.check(r2.getX(), -5);
+ harness.check(r2.getY(),-10);
+ harness.check(r2.getWidth(), -15);
+ harness.check(r2.getHeight(), -20);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(5, 10);
+ harness.check(r1.getX(), 0);
+ harness.check(r1.getY(), 0);
+ harness.check(r1.getWidth(), 5);
+ harness.check(r1.getHeight(), 10);
+
+ Rectangle r2 = new Rectangle(-5, -10);
+ harness.check(r2.getX(), 0);
+ harness.check(r2.getY(), 0);
+ harness.check(r2.getWidth(), -5);
+ harness.check(r2.getHeight(), -10);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ Point p1 = new Point();
+ Dimension d1 = new Dimension();
+ Rectangle r1 = new Rectangle(p1, d1);
+ harness.check(r1.getX(), 0);
+ harness.check(r1.getY(), 0);
+ harness.check(r1.getWidth(), 0);
+ harness.check(r1.getHeight(), 0);
+
+ Point p2 = new Point(5, 10);
+ Dimension d2 = new Dimension(15, 20);
+ Rectangle r2 = new Rectangle(p2, d2);
+ harness.check(r2.getX(), 5);
+ harness.check(r2.getY(), 10);
+ harness.check(r2.getWidth(), 15);
+ harness.check(r2.getHeight(), 20);
+
+ boolean failed1 = false;
+ Point p3 = null;
+ Dimension d3 = new Dimension();
+ try
+ {
+ Rectangle r3 = new Rectangle(p3, d3);
+ }
+ catch (NullPointerException e)
+ {
+ failed1 = true;
+ }
+ harness.check(failed1);
+
+ boolean failed2 = false;
+ Point p4 = new Point();
+ Dimension d4 = null;
+ try
+ {
+ Rectangle r4 = new Rectangle(p3, d3);
+ }
+ catch (NullPointerException e)
+ {
+ failed2 = true;
+ }
+ harness.check(failed2);
+
+ Point p5 = new Point(-5, -10);
+ Dimension d5 = new Dimension(-15, -20);
+ Rectangle r5 = new Rectangle(p5, d5);
+ harness.check(r2.getX(), 5);
+ harness.check(r2.getY(), 10);
+ harness.check(r2.getWidth(), 15);
+ harness.check(r2.getHeight(), 20);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ Point p1 = new Point();
+ Rectangle r1 = new Rectangle(p1);
+ harness.check(r1.getX(), 0);
+ harness.check(r1.getY(), 0);
+ harness.check(r1.getWidth(), 0);
+ harness.check(r1.getHeight(), 0);
+
+ Point p2 = new Point(5, 10);
+ Rectangle r2 = new Rectangle(p2);
+ harness.check(r2.getX(), 5);
+ harness.check(r2.getY(), 10);
+ harness.check(r2.getWidth(), 0);
+ harness.check(r2.getHeight(), 0);
+
+ boolean failed = false;
+ Point p3 = null;
+ try
+ {
+ Rectangle r3 = new Rectangle(p3);
+ }
+ catch (NullPointerException e)
+ {
+ failed = true;
+ }
+ harness.check(failed);
+
+ Point p4 = new Point(-5, -10);
+ Rectangle r4 = new Rectangle(p4);
+ harness.check(r4.getX(), -5);
+ harness.check(r4.getY(), -10);
+ harness.check(r4.getWidth(), 0);
+ harness.check(r4.getHeight(), 0);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ Dimension d1 = new Dimension();
+ Rectangle r1 = new Rectangle(d1);
+ harness.check(r1.getX(), 0);
+ harness.check(r1.getY(), 0);
+ harness.check(r1.getWidth(), 0);
+ harness.check(r1.getHeight(), 0);
+
+ Dimension d2 = new Dimension(15, 20);
+ Rectangle r2 = new Rectangle(d2);
+ harness.check(r2.getX(), 0);
+ harness.check(r2.getY(), 0);
+ harness.check(r2.getWidth(), 15);
+ harness.check(r2.getHeight(), 20);
+
+ boolean failed = false;
+ Dimension d3 = null;
+ try
+ {
+ Rectangle r3 = new Rectangle(d3);
+ }
+ catch (NullPointerException e)
+ {
+ failed = true;
+ }
+ harness.check(failed);
+
+ Dimension d4 = new Dimension(-15, -20);
+ Rectangle r4 = new Rectangle(d4);
+ harness.check(r4.getX(), 0);
+ harness.check(r4.getY(), 0);
+ harness.check(r4.getWidth(), -15);
+ harness.check(r4.getHeight(), -20);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/contains.java b/gnu/testlet/java/awt/Rectangle/contains.java
new file mode 100644
index 00000000..6742d290
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/contains.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+
+/**
+ * Checks that the contains() method works correctly.
+ */
+public class contains implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r = new Rectangle();
+ harness.check(!r.contains(0, 0));
+ harness.check(!r.contains(1, 1));
+
+ // a rectangle with negative width and height doesn't contain anything
+ r = new Rectangle(0, 0, -10, -10);
+ harness.check(!r.contains(-5, -5));
+ harness.check(!r.contains(0, 0));
+
+ // a rectangle contains itself but not every point
+ r = new Rectangle(0, 0, 10, 10);
+ harness.check(r.contains(0, 0, 10, 10));
+ harness.check(!r.contains(10, 10));
+
+ // check null arguments
+ boolean pass = false;
+ try
+ {
+ r.contains((Point) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ r.contains((Rectangle) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/equals.java b/gnu/testlet/java/awt/Rectangle/equals.java
new file mode 100644
index 00000000..7f732f21
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/equals.java
@@ -0,0 +1,65 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the equals() method works correctly.
+ */
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r0 = new Rectangle(0, 0, 0, 0);
+ Rectangle r1 = new Rectangle(0, 0, 0, 0);
+ harness.check(r0.equals(r1));
+ harness.check(r1.equals(r0));
+
+ r0.x = 1;
+ harness.check(!r0.equals(r1));
+ r1.x = 1;
+ harness.check(r0.equals(r1));
+
+ r0.y = 2;
+ harness.check(!r0.equals(r1));
+ r1.y = 2;
+ harness.check(r0.equals(r1));
+
+ r0.width = 3;
+ harness.check(!r0.equals(r1));
+ r1.width = 3;
+ harness.check(r0.equals(r1));
+
+ r0.height = 4;
+ harness.check(!r0.equals(r1));
+ r1.height = 4;
+ harness.check(r0.equals(r1));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/grow.java b/gnu/testlet/java/awt/Rectangle/grow.java
new file mode 100644
index 00000000..d207382c
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/grow.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the grow() method works correctly.
+ */
+public class grow implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r = new Rectangle(0, 0, 0, 0);
+ r.grow(5, 7);
+ harness.check(r.x == -5);
+ harness.check(r.y == -7);
+ harness.check(r.width == 10);
+ harness.check(r.height == 14);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/intersection.java b/gnu/testlet/java/awt/Rectangle/intersection.java
new file mode 100644
index 00000000..5b1484f6
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/intersection.java
@@ -0,0 +1,64 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the intersection() method works correctly.
+ */
+public class intersection implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r0 = new Rectangle(0, 0, 0, 0);
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ Rectangle r2 = new Rectangle(1, 2, 4, 3);
+ Rectangle r3 = new Rectangle(10, 10, 0, 0);
+
+ Rectangle r = r0.intersection(r1);
+ harness.check(r.isEmpty());
+
+ r = r1.intersection(r2);
+ harness.check(r.equals(new Rectangle(1, 2, 3, 3)));
+
+ r = r2.intersection(r3);
+ harness.check(r.isEmpty());
+
+ // check null argument
+ boolean pass = false;
+ try {
+ r0.intersection(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/intersects.java b/gnu/testlet/java/awt/Rectangle/intersects.java
new file mode 100644
index 00000000..94c8416c
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/intersects.java
@@ -0,0 +1,65 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the intersects() method works correctly.
+ */
+public class intersects implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r0 = new Rectangle(0, 0, 0, 0);
+ Rectangle r1 = new Rectangle(0, 0, 1, 1);
+ Rectangle r2 = new Rectangle(1, 1, 1, 1);
+ Rectangle r3 = new Rectangle(-1, -1, 1, 1);
+ Rectangle r4 = new Rectangle(-1, -1, 2, 2);
+ Rectangle r5 = new Rectangle(-1, -1, 3, 3);
+ harness.check(!r0.intersects(r1));
+ harness.check(!r0.intersects(r2));
+ harness.check(!r1.intersects(r2));
+ harness.check(!r2.intersects(r3));
+ harness.check(!r2.intersects(r4));
+ harness.check(r2.intersects(r5));
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ r0.intersects(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/isEmpty.java b/gnu/testlet/java/awt/Rectangle/isEmpty.java
new file mode 100644
index 00000000..0ba89807
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/isEmpty.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the isEmpty() method works correctly.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r = new Rectangle();
+ harness.check(r.isEmpty());
+ r = new Rectangle(0, 0, 100, 0);
+ harness.check(r.isEmpty());
+ r = new Rectangle(0, 0, 0, 100);
+ harness.check(r.isEmpty());
+ r = new Rectangle(0, 0, -10, -10);
+ harness.check(r.isEmpty());
+ r = new Rectangle(0, 0, 1, 1);
+ harness.check(!r.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/outcode.java b/gnu/testlet/java/awt/Rectangle/outcode.java
new file mode 100644
index 00000000..ffb64373
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/outcode.java
@@ -0,0 +1,85 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the outcode() method works correctly.
+ */
+public class outcode implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r = new Rectangle(0, 0, 10, 10);
+ harness.check(r.outcode(5, 5) == 0);
+ harness.check(r.outcode(0, 0) == 0);
+ harness.check(r.outcode(0, 10) == 0);
+ harness.check(r.outcode(10, 0) == 0);
+ harness.check(r.outcode(10, 10) == 0);
+ harness.check(r.outcode(-5, 5) == Rectangle2D.OUT_LEFT);
+ harness.check(r.outcode(15, 5) == Rectangle2D.OUT_RIGHT);
+ harness.check(r.outcode(5, -5) == Rectangle2D.OUT_TOP);
+ harness.check(r.outcode(5, 15) == Rectangle2D.OUT_BOTTOM);
+ harness.check(r.outcode(-5, -5) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15, -5) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15, 15) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_BOTTOM));
+ harness.check(r.outcode(-5, 15) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_BOTTOM));
+
+ // check an empty rectangle - all points should be outside
+ r = new Rectangle(0, 0, 0, 0);
+ int outside = Rectangle2D.OUT_LEFT | Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP | Rectangle2D.OUT_BOTTOM;
+ harness.check(r.outcode(-1, -1) == outside);
+ harness.check(r.outcode(-1, 0) == outside);
+ harness.check(r.outcode(-1, 1) == outside);
+ harness.check(r.outcode(0, -1) == outside);
+ harness.check(r.outcode(0, 0) == outside);
+ harness.check(r.outcode(0, 1) == outside);
+ harness.check(r.outcode(1, -1) == outside);
+ harness.check(r.outcode(1, 0) == outside);
+ harness.check(r.outcode(1, 1) == outside);
+
+ r = new Rectangle(0, 0, -10, -10);
+ harness.check(r.outcode(-1, -1) == outside);
+ harness.check(r.outcode(-1, 0) == outside);
+ harness.check(r.outcode(-1, 1) == outside);
+ harness.check(r.outcode(0, -1) == outside);
+ harness.check(r.outcode(0, 0) == outside);
+ harness.check(r.outcode(0, 1) == outside);
+ harness.check(r.outcode(1, -1) == outside);
+ harness.check(r.outcode(1, 0) == outside);
+ harness.check(r.outcode(1, 1) == outside);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/setBounds.java b/gnu/testlet/java/awt/Rectangle/setBounds.java
new file mode 100644
index 00000000..0a2cc99f
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/setBounds.java
@@ -0,0 +1,66 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the setBounds() method works correctly.
+ */
+public class setBounds implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ r1.setBounds(5, 6, 7, 8);
+ harness.check(r1.x == 5);
+ harness.check(r1.y == 6);
+ harness.check(r1.width == 7);
+ harness.check(r1.height == 8);
+
+ r1 = new Rectangle();
+ r1.setBounds(new Rectangle(5, 6, 7, 8));
+ harness.check(r1.x == 5);
+ harness.check(r1.y == 6);
+ harness.check(r1.width == 7);
+ harness.check(r1.height == 8);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ r1.setBounds(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/setLocation.java b/gnu/testlet/java/awt/Rectangle/setLocation.java
new file mode 100644
index 00000000..8e787384
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/setLocation.java
@@ -0,0 +1,67 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+
+/**
+ * Checks that the setLocation() method works correctly.
+ */
+public class setLocation implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ r1.setLocation(5, 6);
+ harness.check(r1.x == 5);
+ harness.check(r1.y == 6);
+ harness.check(r1.width == 3);
+ harness.check(r1.height == 4);
+
+ r1 = new Rectangle(1, 2, 3, 4);
+ r1.setLocation(new Point(5, 6));
+ harness.check(r1.x == 5);
+ harness.check(r1.y == 6);
+ harness.check(r1.width == 3);
+ harness.check(r1.height == 4);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ r1.setLocation(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/setRect.java b/gnu/testlet/java/awt/Rectangle/setRect.java
new file mode 100644
index 00000000..0d85b4cd
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/setRect.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the setRect() method works correctly.
+ */
+public class setRect implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ r1.setRect(5, 6, 7, 8);
+ harness.check(r1.x == 5);
+ harness.check(r1.y == 6);
+ harness.check(r1.width == 7);
+ harness.check(r1.height == 8);
+
+ // test rounding - it seems that the code sets a rectangle that completely
+ // encloses the double precision rectangle
+ r1.setRect(5.9, 6.9, 7, 8);
+ harness.check(r1.x, 5);
+ harness.check(r1.y, 6);
+ harness.check(r1.width, 8);
+ harness.check(r1.height, 9);
+
+ r1.setRect(-0.1, -0.2, 0.3, 0.4);
+ harness.check(r1.x, -1);
+ harness.check(r1.y, -1);
+ harness.check(r1.width, 2);
+ harness.check(r1.height, 2);
+
+ // is negative width permitted?
+ r1.setRect(1.0, 2.0, -3.0, 4.0);
+ harness.check(r1.width, -3);
+ harness.check(r1.isEmpty());
+
+ // is negative height permitted?
+ r1.setRect(1.0, 2.0, 3.0, -4.0);
+ harness.check(r1.height, -4);
+ harness.check(r1.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/setSize.java b/gnu/testlet/java/awt/Rectangle/setSize.java
new file mode 100644
index 00000000..20bdab2a
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/setSize.java
@@ -0,0 +1,67 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+/**
+ * Checks that the setSize() method works correctly.
+ */
+public class setSize implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ r1.setSize(5, 6);
+ harness.check(r1.x == 1);
+ harness.check(r1.y == 2);
+ harness.check(r1.width == 5);
+ harness.check(r1.height == 6);
+
+ r1 = new Rectangle(1, 2, 3, 4);
+ r1.setSize(new Dimension(5, 6));
+ harness.check(r1.x == 1);
+ harness.check(r1.y == 2);
+ harness.check(r1.width == 5);
+ harness.check(r1.height == 6);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ r1.setSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/translate.java b/gnu/testlet/java/awt/Rectangle/translate.java
new file mode 100644
index 00000000..f034fd61
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/translate.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the translate() method works correctly.
+ */
+public class translate implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ r1.translate(5, 6);
+ harness.check(r1.x == 6);
+ harness.check(r1.y == 8);
+ harness.check(r1.width == 3);
+ harness.check(r1.height == 4);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Rectangle/union.java b/gnu/testlet/java/awt/Rectangle/union.java
new file mode 100644
index 00000000..0d5856fc
--- /dev/null
+++ b/gnu/testlet/java/awt/Rectangle/union.java
@@ -0,0 +1,69 @@
+//Tags: JDK1.0
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.Rectangle;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+/**
+ * Checks that the union() method works correctly.
+ */
+public class union implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle r1 = new Rectangle(1, 2, 3, 4);
+ Rectangle r2 = new Rectangle(5, 6, 7, 8);
+ Rectangle r3 = r1.union(r2);
+ harness.check(r3.x == 1);
+ harness.check(r3.y == 2);
+ harness.check(r3.width == 11);
+ harness.check(r3.height == 12);
+
+ // check union with empty rectangle
+ r1 = new Rectangle();
+ r2 = new Rectangle(1, 2, 3, 4);
+ r3 = r1.union(r2);
+ harness.check(r3.x == 0);
+ harness.check(r3.y == 0);
+ harness.check(r3.width == 4);
+ harness.check(r3.height == 6);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ r3 = r1.union(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/CVS/Entries b/gnu/testlet/java/awt/RenderingHints/CVS/Entries
new file mode 100644
index 00000000..36167194
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/CVS/Entries
@@ -0,0 +1,17 @@
+/add.java/1.1/Fri Aug 27 19:54:32 2004//
+/clear.java/1.1/Fri Aug 27 19:54:32 2004//
+/clone.java/1.1/Fri Aug 27 19:54:32 2004//
+/constructors.java/1.1/Fri Aug 27 19:54:32 2004//
+/containsKey.java/1.1/Fri Aug 27 19:54:32 2004//
+/containsValue.java/1.1/Fri Aug 27 19:54:32 2004//
+/entrySet.java/1.1/Fri Aug 27 19:54:32 2004//
+/equals.java/1.1/Fri Aug 27 19:54:32 2004//
+/get.java/1.2/Mon Jul 25 08:10:17 2005//
+/isEmpty.java/1.1/Fri Aug 27 19:54:32 2004//
+/keySet.java/1.1/Fri Aug 27 19:54:32 2004//
+/put.java/1.1/Fri Aug 27 19:54:32 2004//
+/putAll.java/1.1/Fri Aug 27 19:54:32 2004//
+/remove.java/1.1/Fri Aug 27 19:54:32 2004//
+/size.java/1.1/Fri Aug 27 19:54:32 2004//
+/values.java/1.1/Fri Aug 27 19:54:32 2004//
+D
diff --git a/gnu/testlet/java/awt/RenderingHints/CVS/Entries.Log b/gnu/testlet/java/awt/RenderingHints/CVS/Entries.Log
new file mode 100644
index 00000000..808528c6
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Key////
diff --git a/gnu/testlet/java/awt/RenderingHints/CVS/Repository b/gnu/testlet/java/awt/RenderingHints/CVS/Repository
new file mode 100644
index 00000000..0f4f754b
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/RenderingHints
diff --git a/gnu/testlet/java/awt/RenderingHints/CVS/Root b/gnu/testlet/java/awt/RenderingHints/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/RenderingHints/Key/CVS/Entries b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Entries
new file mode 100644
index 00000000..5db8f3cc
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Entries
@@ -0,0 +1,2 @@
+/isCompatibleValue.java/1.1/Fri Aug 27 19:54:32 2004//
+D
diff --git a/gnu/testlet/java/awt/RenderingHints/Key/CVS/Repository b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Repository
new file mode 100644
index 00000000..6a030275
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/RenderingHints/Key
diff --git a/gnu/testlet/java/awt/RenderingHints/Key/CVS/Root b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/Key/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/RenderingHints/Key/isCompatibleValue.java b/gnu/testlet/java/awt/RenderingHints/Key/isCompatibleValue.java
new file mode 100644
index 00000000..545a4a36
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/Key/isCompatibleValue.java
@@ -0,0 +1,322 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints.Key;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some (brute force) checks for the isCompatibleValue() method of the
+ * {@link RenderingHints.Key} class.
+ */
+public class isCompatibleValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("KEY_ALPHA_INTERPOLATION");
+ RenderingHints.Key key = RenderingHints.KEY_ALPHA_INTERPOLATION;
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_ANTIALIASING");
+ key = RenderingHints.KEY_ANTIALIASING;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_COLOR_RENDERING");
+ key = RenderingHints.KEY_COLOR_RENDERING;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_DITHERING");
+ key = RenderingHints.KEY_DITHERING;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_FRACTIONALMETRICS");
+ key = RenderingHints.KEY_FRACTIONALMETRICS;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_INTERPOLATION");
+ key = RenderingHints.KEY_INTERPOLATION;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_RENDERING");
+ key = RenderingHints.KEY_RENDERING;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_STROKE_CONTROL");
+ key = RenderingHints.KEY_STROKE_CONTROL;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ harness.checkPoint("KEY_TEXT_ANTIALIASING");
+ key = RenderingHints.KEY_TEXT_ANTIALIASING;
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_COLOR_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_DISABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_DITHER_ENABLE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_OFF));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_FRACTIONALMETRICS_ON));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_QUALITY));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_RENDER_SPEED));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_DEFAULT));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_NORMALIZE));
+ harness.check(!key.isCompatibleValue(RenderingHints.VALUE_STROKE_PURE));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(key.isCompatibleValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!key.isCompatibleValue(null));
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/add.java b/gnu/testlet/java/awt/RenderingHints/add.java
new file mode 100644
index 00000000..e6087d77
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/add.java
@@ -0,0 +1,64 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the add() method in the {@link RenderingHints} class.
+ */
+public class add implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ RenderingHints h2 = new RenderingHints(
+ RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON
+ );
+ h1.add(h2);
+ harness.check(h1.size() == 2);
+ harness.check(h1.containsKey(RenderingHints.KEY_ANTIALIASING));
+
+ boolean pass = false;
+ try
+ {
+ h1.add(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/clear.java b/gnu/testlet/java/awt/RenderingHints/clear.java
new file mode 100644
index 00000000..f2b5c92e
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/clear.java
@@ -0,0 +1,49 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the clear() method in the {@link RenderingHints} class.
+ */
+public class clear implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ h1.clear();
+ harness.check(h1.isEmpty());
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/clone.java b/gnu/testlet/java/awt/RenderingHints/clone.java
new file mode 100644
index 00000000..e2231253
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/clone.java
@@ -0,0 +1,55 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the clone() method in the {@link RenderingHints} class.
+ */
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ RenderingHints h2 = (RenderingHints) h1.clone();
+ harness.check(h2.containsKey(RenderingHints.KEY_TEXT_ANTIALIASING));
+ harness.check(h2.get(RenderingHints.KEY_TEXT_ANTIALIASING).equals(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+
+ // check that updating h1 doesn't affect h2
+ h1.clear();
+ harness.check(h2.containsKey(RenderingHints.KEY_TEXT_ANTIALIASING));
+ harness.check(h2.get(RenderingHints.KEY_TEXT_ANTIALIASING).equals(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/constructors.java b/gnu/testlet/java/awt/RenderingHints/constructors.java
new file mode 100644
index 00000000..0f89b2f4
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/constructors.java
@@ -0,0 +1,91 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the constructors in the {@link RenderingHints}
+ * class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ harness.checkPoint("RenderingHints(Map)");
+ testConstructor1(harness);
+
+ harness.checkPoint("RenderingHints(Key, Object)");
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ RenderingHints h = new RenderingHints(null);
+ harness.check(h.isEmpty());
+ harness.check(h.size(), 0);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ // it isn't clear from the spec whether a null key is acceptable, but to be
+ // consistent with the put(key, value) method it should throw a
+ // NullPointerException
+ boolean pass = false;
+ try
+ {
+ RenderingHints h = new RenderingHints(
+ null, RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT
+ );
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // it isn't clear from the spec whether a null value is acceptable, but to be
+ // consistent with the put(key, value) method it should throw a
+ // NullPointerException
+ pass = false;
+ try
+ {
+ RenderingHints h = new RenderingHints(
+ RenderingHints.KEY_ALPHA_INTERPOLATION, null
+ );
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/containsKey.java b/gnu/testlet/java/awt/RenderingHints/containsKey.java
new file mode 100644
index 00000000..065aa540
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/containsKey.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the containsKey() method in the {@link RenderingHints}
+ * class.
+ */
+public class containsKey implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ harness.check(h.containsKey(RenderingHints.KEY_TEXT_ANTIALIASING));
+ harness.check(!h.containsKey(RenderingHints.KEY_ANTIALIASING));
+
+ // an argument that is not a RenderingHint.Key should generate
+ // a ClassCastException...
+ boolean pass = false;
+ try
+ {
+ h.containsKey(new Integer(1));
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the API spec clearly states that a null argument should generate a
+ // NullPointerException...
+ pass = false;
+ try
+ {
+ h.containsKey(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/containsValue.java b/gnu/testlet/java/awt/RenderingHints/containsValue.java
new file mode 100644
index 00000000..0b4c2c7b
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/containsValue.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the containsValue() method in the {@link RenderingHints}
+ * class.
+ */
+public class containsValue implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ harness.check(h1.containsValue(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(!h1.containsValue(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+ harness.check(!h1.containsValue(null));
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/RenderingHints/entrySet.java b/gnu/testlet/java/awt/RenderingHints/entrySet.java
new file mode 100644
index 00000000..e8f1bb87
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/entrySet.java
@@ -0,0 +1,56 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Set;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the entrySet() method in the {@link RenderingHints}
+ * class.
+ */
+public class entrySet implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ Set s = h1.entrySet();
+ harness.check(s.size() == 1);
+
+ h1.clear();
+ s = h1.entrySet();
+ harness.check(s.isEmpty());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/RenderingHints/equals.java b/gnu/testlet/java/awt/RenderingHints/equals.java
new file mode 100644
index 00000000..3d0bf2a1
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/equals.java
@@ -0,0 +1,60 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the equals() method in the {@link RenderingHints} class.
+ */
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ RenderingHints h2 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ harness.check(h1.equals(h2));
+ harness.check(!h1.equals(null));
+
+ Map m = new HashMap();
+ m.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
+ harness.check(h1.equals(m));
+ harness.check(m.equals(h1));
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/RenderingHints/get.java b/gnu/testlet/java/awt/RenderingHints/get.java
new file mode 100644
index 00000000..6d448176
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/get.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the get() method in the {@link RenderingHints} class.
+ */
+public class get implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ RenderingHints h1 = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING,
+ RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
+ harness.check(h1.get(RenderingHints.KEY_TEXT_ANTIALIASING).equals(
+ RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
+ harness.check(h1.get(RenderingHints.KEY_ALPHA_INTERPOLATION), null);
+ harness.check(h1.get(null) == null);
+
+ // using a key that is not a RenderingHints.Key generates a
+ // ClassCastException...
+ boolean pass = false;
+ try
+ {
+ h1.get(new Integer(1));
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/isEmpty.java b/gnu/testlet/java/awt/RenderingHints/isEmpty.java
new file mode 100644
index 00000000..3f923f0e
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/isEmpty.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the isEmpty() method in the {@link RenderingHints} class.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ harness.check(!h1.isEmpty());
+ h1.clear();
+ harness.check(h1.isEmpty());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/RenderingHints/keySet.java b/gnu/testlet/java/awt/RenderingHints/keySet.java
new file mode 100644
index 00000000..ed17a1a5
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/keySet.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Set;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the keySet() method in the {@link RenderingHints} class.
+ */
+public class keySet implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ Set k = h1.keySet();
+ harness.check(k.size() == 1);
+
+ h1.clear();
+ harness.check(k.isEmpty());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/RenderingHints/put.java b/gnu/testlet/java/awt/RenderingHints/put.java
new file mode 100644
index 00000000..b10ba223
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/put.java
@@ -0,0 +1,112 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the put() method in the {@link RenderingHints} class.
+ */
+public class put implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(
+ RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
+ );
+ h1.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ harness.check(h1.size() == 2);
+ harness.check(h1.containsKey(RenderingHints.KEY_ANTIALIASING));
+ harness.check(h1.get(RenderingHints.KEY_ANTIALIASING).equals(RenderingHints.VALUE_ANTIALIAS_ON));
+
+ // adding a value that is not compatible with the key generates an
+ // IllegalArgumentException...
+ boolean pass = false;
+ try
+ {
+ h1.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a null value for a valid key should generate an
+ // IllegalArgumentException or a NullPointerException depending
+ // on the order of the checks...
+ pass = false;
+ try
+ {
+ h1.put(RenderingHints.KEY_ANTIALIASING, null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a key that is not a RenderingHints.Key generates a
+ // ClassCastException (or possibly a NullPointerException if
+ // the second argument is checked first)...
+ pass = false;
+ try
+ {
+ h1.put(new Integer(1), null);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a null key generates a NullPointerException...
+ pass = false;
+ try
+ {
+ h1.put(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/putAll.java b/gnu/testlet/java/awt/RenderingHints/putAll.java
new file mode 100644
index 00000000..e8c97e60
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/putAll.java
@@ -0,0 +1,130 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the putAll() method in the {@link RenderingHints} class.
+ */
+public class putAll implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(null);
+ h1.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
+ h1.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+
+ RenderingHints h2 = new RenderingHints(null);
+ h2.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+ h2.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+
+ h1.putAll(h2);
+ harness.check(h1.size() == 3);
+ harness.check(h1.containsKey(RenderingHints.KEY_RENDERING));
+ harness.check(h1.get(RenderingHints.KEY_TEXT_ANTIALIASING).equals(RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
+
+ // adding a value that is not compatible with the key generates an
+ // IllegalArgumentException...
+ Map m = new HashMap();
+ m.put("A", "B");
+ boolean pass = false;
+ try
+ {
+ h1.putAll(m);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a null value for a valid key should generate an
+ // IllegalArgumentException or a NullPointerException depending
+ // on the order of the checks...
+ m.clear();
+ m.put(RenderingHints.KEY_DITHERING, null);
+ pass = false;
+ try
+ {
+ h1.putAll(m);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a key that is not a RenderingHints.Key generates a
+ // ClassCastException (or possibly a NullPointerException if
+ // the second argument is checked first)...
+ m.clear();
+ m.put(new Integer(1), null);
+ pass = false;
+ try
+ {
+ h1.putAll(m);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // adding a null key generates a NullPointerException...
+ pass = false;
+ try
+ {
+ h1.putAll(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/remove.java b/gnu/testlet/java/awt/RenderingHints/remove.java
new file mode 100644
index 00000000..00f09f51
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/remove.java
@@ -0,0 +1,65 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the remove() method in the {@link RenderingHints} class.
+ */
+public class remove implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(null);
+ Object result = h1.remove(RenderingHints.KEY_ALPHA_INTERPOLATION);
+ harness.check(result == null);
+ h1.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+ result = h1.remove(RenderingHints.KEY_RENDERING);
+ harness.check(result == RenderingHints.VALUE_RENDER_QUALITY);
+ harness.check(h1.isEmpty());
+
+ result = h1.remove(null);
+ harness.check(result == null);
+
+ boolean pass = false;
+ try
+ {
+ h1.remove(new Integer(1));
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/size.java b/gnu/testlet/java/awt/RenderingHints/size.java
new file mode 100644
index 00000000..37d74462
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/size.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the size() method in the {@link RenderingHints} class.
+ */
+public class size implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(null);
+ harness.check(h1.size() == 0);
+ h1.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
+ harness.check(h1.size() == 1);
+ h1.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
+ harness.check(h1.size() == 2);
+ h1.clear();
+ harness.check(h1.size() == 0);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/RenderingHints/values.java b/gnu/testlet/java/awt/RenderingHints/values.java
new file mode 100644
index 00000000..5dbbe5c7
--- /dev/null
+++ b/gnu/testlet/java/awt/RenderingHints/values.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.RenderingHints;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Collection;
+
+import java.awt.RenderingHints;
+
+/**
+ * Some checks for the values() method in the {@link RenderingHints} class.
+ */
+public class values implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ RenderingHints h1 = new RenderingHints(null);
+ Collection v1 = h1.values();
+ harness.check(v1.isEmpty());
+
+ h1.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
+ // the values collection is backed by the RenderingHints, so it updates
+ harness.check(v1.size() == 1);
+ harness.check(v1.contains(RenderingHints.VALUE_DITHER_DISABLE));
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Robot/CVS/Entries b/gnu/testlet/java/awt/Robot/CVS/Entries
new file mode 100644
index 00000000..03f6967c
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/CVS/Entries
@@ -0,0 +1,11 @@
+/constructors.java/1.1/Wed Jan 5 00:15:12 2005//
+/createScreenCapture.java/1.2/Mon Feb 21 06:48:58 2005//
+/getPixelColor.java/1.2/Mon Feb 21 06:48:58 2005//
+/keyPress.java/1.2/Mon Feb 21 06:48:58 2005//
+/keyRelease.java/1.2/Mon Feb 21 06:48:58 2005//
+/mouseMove.java/1.2/Mon Feb 21 06:48:58 2005//
+/mousePress.java/1.2/Mon Feb 21 06:48:58 2005//
+/mouseRelease.java/1.2/Mon Feb 21 06:48:58 2005//
+/mouseWheel.java/1.2/Mon Feb 21 06:48:58 2005//
+/security.java/1.4/Tue Jun 27 12:23:38 2006//
+D
diff --git a/gnu/testlet/java/awt/Robot/CVS/Repository b/gnu/testlet/java/awt/Robot/CVS/Repository
new file mode 100644
index 00000000..b33e3583
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Robot
diff --git a/gnu/testlet/java/awt/Robot/CVS/Root b/gnu/testlet/java/awt/Robot/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Robot/constructors.java b/gnu/testlet/java/awt/Robot/constructors.java
new file mode 100644
index 00000000..5571a285
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/constructors.java
@@ -0,0 +1,57 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Robot;
+import java.awt.AWTException;
+
+/**
+ * Checks that constructors in the {@link Robot} class work
+ * correctly.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ // default constructor
+ try
+ {
+ Robot r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ // the test passed if we got here
+ harness.check (true);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/createScreenCapture.java b/gnu/testlet/java/awt/Robot/createScreenCapture.java
new file mode 100644
index 00000000..8b7f6ba0
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/createScreenCapture.java
@@ -0,0 +1,88 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.image.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that createScreenCapture in the {@link Robot} class can
+ * produce a screenshot.
+ */
+public class createScreenCapture implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Panel p = new Panel ();
+
+ p.setBackground (new Color (255, 0, 0));
+
+ f.add (p);
+
+ f.setSize (500, 500);
+ f.setLocation (0, 0);
+ f.show ();
+
+ r.waitForIdle ();
+
+ BufferedImage screenshot = r.createScreenCapture (new Rectangle (50, 50, 100, 100));
+
+ // check that captured image is completely red
+ boolean passed = true;
+
+ for (int i = 0; i < 100; i++)
+ {
+ for (int j = 0; j < 100; j++)
+ {
+ Color c = new Color (screenshot.getRGB (i, j));
+
+ if (c.getRed () != 255 || c.getGreen () != 0 || c.getBlue () != 0)
+ passed = false;
+ }
+ }
+
+ harness.check (passed);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/getPixelColor.java b/gnu/testlet/java/awt/Robot/getPixelColor.java
new file mode 100644
index 00000000..8d9b89b4
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/getPixelColor.java
@@ -0,0 +1,78 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that getPixelColor in the {@link Robot} class can read a
+ * pixel's color value from the screen.
+ */
+public class getPixelColor implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Panel p = new Panel ();
+
+ p.setBackground (new Color (255, 0, 0));
+
+ f.add (p);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.waitForIdle ();
+
+ Color c = r.getPixelColor (300, 300);
+
+ r.waitForIdle ();
+
+ // check that pixel is red
+ harness.check (c.getRed () == 255
+ && c.getGreen () == 0
+ && c.getBlue () == 0);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/keyPress.java b/gnu/testlet/java/awt/Robot/keyPress.java
new file mode 100644
index 00000000..8f24ced8
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/keyPress.java
@@ -0,0 +1,101 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that keyPress in the {@link Robot} class generates a
+ * keyPressed event in a {@link TextField}.
+ */
+public class keyPress implements Testlet
+{
+ char pressChar = '\0';
+ char releaseChar = '\0';
+ int pressCount = 0;
+ int releaseCount = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ TextField tf = new TextField ();
+
+ tf.addKeyListener (new KeyAdapter ()
+ {
+ public void keyPressed (KeyEvent event)
+ {
+ pressChar = event.getKeyChar ();
+ pressCount++;
+ }
+
+ public void keyReleased (KeyEvent event)
+ {
+ releaseChar = event.getKeyChar ();
+ releaseCount++;
+ }
+ });
+
+ f.add (tf);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // give focus to text field
+ r.mouseMove (300, 300);
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ // type 'a'
+ r.keyPress (KeyEvent.VK_A);
+ r.keyRelease (KeyEvent.VK_A);
+
+ r.waitForIdle ();
+
+ harness.check (pressChar == 'a');
+ harness.check (pressCount == 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/keyRelease.java b/gnu/testlet/java/awt/Robot/keyRelease.java
new file mode 100644
index 00000000..9dea38b7
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/keyRelease.java
@@ -0,0 +1,93 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that keyRelease in the {@link Robot} class generates a
+ * keyReleased event in a {@link TextField}.
+ */
+public class keyRelease implements Testlet
+{
+ char releaseChar = '\0';
+ int releaseCount = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ TextField tf = new TextField ();
+
+ tf.addKeyListener (new KeyAdapter ()
+ {
+ public void keyReleased (KeyEvent event)
+ {
+ releaseChar = event.getKeyChar ();
+ releaseCount++;
+ }
+ });
+
+ f.add (tf);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // give focus to text field
+ r.mouseMove (300, 300);
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ // type 'a'
+ r.keyPress (KeyEvent.VK_A);
+ r.keyRelease (KeyEvent.VK_A);
+
+ r.waitForIdle ();
+
+ harness.check (releaseChar == 'a');
+ harness.check (releaseCount == 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/mouseMove.java b/gnu/testlet/java/awt/Robot/mouseMove.java
new file mode 100644
index 00000000..c7d921b3
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/mouseMove.java
@@ -0,0 +1,93 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that mouseMove in the {@link Robot} class moves the mouse
+ * pointer.
+ */
+public class mouseMove implements Testlet
+{
+ int mouseX = 0;
+ int mouseY = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Button b = new Button ("test");
+
+ b.addMouseListener (new MouseAdapter ()
+ {
+ public void mouseClicked (MouseEvent event)
+ {
+ mouseX = event.getX ();
+ mouseY = event.getY ();
+ }
+ });
+
+ f.add (b);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // click the button
+ r.mouseMove (300, 300);
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ r.waitForIdle ();
+
+ Insets i = f.getInsets ();
+
+ // the insets values will only be correct if the window manager
+ // supports the _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS
+ // hints.
+ harness.check (mouseX + i.left == 50 && mouseY + i.top == 50);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/mousePress.java b/gnu/testlet/java/awt/Robot/mousePress.java
new file mode 100644
index 00000000..cffae60c
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/mousePress.java
@@ -0,0 +1,86 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that mousePress in the {@link Robot} class generates a
+ * mousePressed event on a {@link Button}.
+ */
+public class mousePress implements Testlet
+{
+ int mousePressCount = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Button b = new Button ("test");
+
+ b.addMouseListener (new MouseAdapter ()
+ {
+ public void mousePressed (MouseEvent event)
+ {
+ mousePressCount++;
+ }
+ });
+
+ f.add (b);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // click the button
+ r.mouseMove (300, 300);
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ r.waitForIdle ();
+
+ harness.check (mousePressCount == 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/mouseRelease.java b/gnu/testlet/java/awt/Robot/mouseRelease.java
new file mode 100644
index 00000000..facdf9f9
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/mouseRelease.java
@@ -0,0 +1,86 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that mouseRelease in the {@link Robot} class generates a
+ * mouseReleased event on a {@link Button}.
+ */
+public class mouseRelease implements Testlet
+{
+ int mouseReleaseCount = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Button b = new Button ("test");
+
+ b.addMouseListener (new MouseAdapter ()
+ {
+ public void mouseReleased (MouseEvent event)
+ {
+ mouseReleaseCount++;
+ }
+ });
+
+ f.add (b);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // click the button
+ r.mouseMove (300, 300);
+ r.mousePress (InputEvent.BUTTON1_MASK);
+ r.mouseRelease (InputEvent.BUTTON1_MASK);
+
+ r.waitForIdle ();
+
+ harness.check (mouseReleaseCount == 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/mouseWheel.java b/gnu/testlet/java/awt/Robot/mouseWheel.java
new file mode 100644
index 00000000..37c2dfcb
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/mouseWheel.java
@@ -0,0 +1,96 @@
+// Tags: GUI JDK1.4
+
+// Copyright (C) 2004 Red Hat
+
+// 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.java.awt.Robot;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.AWTException;
+
+/**
+ * Checks that mouseWheel in the {@link Robot} class generates a
+ * {@link MouseWheelEvent} on a {@link Button}.
+ */
+public class mouseWheel implements Testlet
+{
+ int mouseWheelUpCount = 0;
+ int mouseWheelDownCount = 0;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test (TestHarness harness)
+ {
+ Robot r = null;
+
+ // construct robot
+ try
+ {
+ r = new Robot ();
+ }
+ catch (AWTException e)
+ {
+ harness.fail ("caught AWT exception: " + e.getMessage ());
+ }
+
+ Frame f = new Frame ();
+ Button b = new Button ("test");
+
+ b.addMouseWheelListener (new MouseWheelListener ()
+ {
+ public void mouseWheelMoved (MouseWheelEvent event)
+ {
+ int wheelRotation = event.getWheelRotation ();
+ if (wheelRotation < 0)
+ mouseWheelUpCount += wheelRotation;
+ else
+ mouseWheelDownCount += wheelRotation;
+ }
+ });
+
+ f.add (b);
+
+ f.setSize (100, 100);
+ f.setLocation (250, 250);
+ f.show ();
+
+ r.setAutoDelay (100);
+
+ // scroll the mouse wheel up and down
+ r.mouseMove (300, 300);
+ r.mouseWheel (-4);
+ r.mouseWheel (5);
+ r.mouseWheel (-1);
+ r.mouseWheel (3);
+ r.mouseWheel (2);
+ r.mouseWheel (-3);
+
+ r.waitForIdle ();
+
+ harness.check (mouseWheelUpCount == -8);
+ harness.check (mouseWheelDownCount == 10);
+ }
+}
diff --git a/gnu/testlet/java/awt/Robot/security.java b/gnu/testlet/java/awt/Robot/security.java
new file mode 100644
index 00000000..4a9c59f0
--- /dev/null
+++ b/gnu/testlet/java/awt/Robot/security.java
@@ -0,0 +1,88 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2006 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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.java.awt.Robot;
+
+import java.awt.AWTPermission;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.Robot;
+import java.security.Permission;
+import java.util.PropertyPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ GraphicsDevice gd =
+ GraphicsEnvironment.getLocalGraphicsEnvironment()
+ .getDefaultScreenDevice();
+
+ Permission[] createRobot = new Permission[] {
+ new AWTPermission("createRobot")};
+
+ Permission[] readProperty = new Permission[] {
+ new PropertyPermission("*", "read")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.awt.Robot-Robot()
+ harness.checkPoint("0-arg constructor");
+ try {
+ sm.prepareChecks(createRobot, readProperty);
+ new Robot();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Robot-Robot(GraphicsDevice)
+ harness.checkPoint("1-arg constructor");
+ try {
+ sm.prepareChecks(createRobot, readProperty);
+ new Robot(gd);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/ScrollPane/CVS/Entries b/gnu/testlet/java/awt/ScrollPane/CVS/Entries
new file mode 100644
index 00000000..59f9cd72
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/CVS/Entries
@@ -0,0 +1,7 @@
+/ScrollbarPaintTest.java/1.2/Mon Oct 3 09:06:26 2011//
+/add.java/1.3/Mon Oct 3 09:06:26 2011//
+/doLayout.java/1.1/Fri Dec 8 20:35:06 2006//
+/getScrollPosition.java/1.1/Fri Dec 8 16:33:37 2006//
+/setScrollPosition.java/1.1/Fri Dec 8 16:33:37 2006//
+/testSetLayout.java/1.1/Fri Oct 13 17:42:10 2006//
+D
diff --git a/gnu/testlet/java/awt/ScrollPane/CVS/Repository b/gnu/testlet/java/awt/ScrollPane/CVS/Repository
new file mode 100644
index 00000000..fd2f7966
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/ScrollPane
diff --git a/gnu/testlet/java/awt/ScrollPane/CVS/Root b/gnu/testlet/java/awt/ScrollPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java b/gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java
new file mode 100644
index 00000000..4b289de9
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/ScrollbarPaintTest.java
@@ -0,0 +1,104 @@
+/* ScrollbarPaintTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.ScrollPane;
+
+public class ScrollbarPaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ ScrollPane c = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Rectangle bounds = c.getBounds();
+ Point loc = f.getLocationOnScreen();
+ Insets i = f.getInsets();
+ loc.x += i.left + bounds.x;
+ loc.y += i.top + bounds.y;
+ bounds.width -= (i.left + i.right);
+ bounds.height -= (i.top + i.bottom);
+
+ // check the color of a pixel located in the button center
+ Color scroll = r.getPixelColor(loc.x + bounds.width, loc.y + bounds.height/2);
+ harness.check(!(scroll.equals(Color.red)));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(2000);
+
+ // it's necesarry to clean up
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
+
diff --git a/gnu/testlet/java/awt/ScrollPane/add.java b/gnu/testlet/java/awt/ScrollPane/add.java
new file mode 100644
index 00000000..0f130f5d
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/add.java
@@ -0,0 +1,100 @@
+// Tags: 1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston,
+// MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import java.awt.*;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test ScrollPane's add method.
+ */
+public class add implements Testlet
+{
+ private static boolean layoutCalled;
+
+ public void test(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS)
+ {
+ public void layout()
+ {
+ layoutCalled = true;
+ };
+ };
+
+ Button b = new Button ("Hello");
+ b.setSize(400, 400);
+ pane.add(b);
+
+ harness.check(!layoutCalled);
+
+ Frame f = new Frame("add");
+
+ f.setSize(300, 300);
+ f.add(pane);
+
+ harness.check(!layoutCalled);
+
+ f.show();
+
+ harness.check(layoutCalled);
+
+ harness.check(!(b.getParent() instanceof Panel));
+
+ // Check parent when adding a Panel.
+ ScrollPane pane2 = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
+
+ Frame f2 = new Frame("add2");
+
+ Panel p = new Panel();
+
+ p.setSize(400, 400);
+ pane2.add(p);
+ f2.setSize(300, 300);
+ f2.add(pane2);
+
+ f2.show();
+ harness.check(!(p.getParent() instanceof Panel));
+
+ // Check parent when adding a lightweight component.
+ ScrollPane pane3 = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
+
+ Frame f3 = new Frame("add2");
+
+ Component c = new Component() {};
+
+ c.setSize(400, 400);
+ pane3.add(c);
+ f3.setSize(300, 300);
+ f3.add(pane3);
+
+ f3.show();
+ harness.check(c.getParent() instanceof Panel);
+
+ // it's necesarry to clean up
+ f.dispose();
+ f2.dispose();
+ f3.dispose();
+ }
+}
diff --git a/gnu/testlet/java/awt/ScrollPane/doLayout.java b/gnu/testlet/java/awt/ScrollPane/doLayout.java
new file mode 100644
index 00000000..e4bcc79c
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/doLayout.java
@@ -0,0 +1,57 @@
+/* doLayout.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.Point;
+import java.awt.ScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class doLayout implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // This test checks that the location of scrollpane's
+ // child is "reset" to (0, 0).
+ ScrollPane pane = new ScrollPane();
+ Component button = new Button();
+ button.setLocation(100, 250);
+ pane.add(button);
+ harness.check(button.getLocation().getX(), 100);
+ harness.check(button.getLocation().getY(), 250);
+ pane.doLayout();
+ harness.check(button.getLocation().getX(), 0);
+ harness.check(button.getLocation().getY(), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ScrollPane/getScrollPosition.java b/gnu/testlet/java/awt/ScrollPane/getScrollPosition.java
new file mode 100644
index 00000000..d2695545
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/getScrollPosition.java
@@ -0,0 +1,51 @@
+/* getScrollPosition.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import java.awt.ScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getScrollPosition implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+
+ // Check that NPE is thrown when scrollpane does have a child.
+ boolean fail = false;
+ try
+ {
+ pane.getScrollPosition();
+ }
+ catch (NullPointerException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ScrollPane/setScrollPosition.java b/gnu/testlet/java/awt/ScrollPane/setScrollPosition.java
new file mode 100644
index 00000000..cce1d0ba
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/setScrollPosition.java
@@ -0,0 +1,130 @@
+/* setScrollPosition.java
+ Copyright (C) 2006
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import java.awt.Button;
+import java.awt.Point;
+import java.awt.ScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setScrollPosition implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+
+ // Check that NPE is thrown when scrollpane does have a child.
+ boolean fail = false;
+ try
+ {
+ pane.setScrollPosition(0, 0);
+ }
+ catch (NullPointerException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+
+ // Add a component (i.e. child) to the scrollpane.
+ Button button = new Button();
+ pane.add(button);
+ harness.check(pane.getComponentCount(), 1);
+ harness.check(pane.getComponent(0), button);
+
+ // Check default scroll position.
+ harness.check(pane.getScrollPosition(), new Point());
+ }
+
+ public void test3(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+ pane.add(new Button());
+
+ // Check that setScrollPosition(int, int) and
+ // setScrollPosition(Point) return the same values.
+ pane.setScrollPosition(1, 1);
+ harness.check(pane.getScrollPosition(), new Point(0, 0));
+ pane.setScrollPosition(new Point(1, 1));
+ harness.check(pane.getScrollPosition(), new Point(0, 0));
+ }
+
+ public void test4(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+ pane.add(new Button());
+
+ // Check that if x or y < 0, x and y are set to 0.
+ pane.setScrollPosition(-1, -1);
+ harness.check(pane.getScrollPosition(), new Point());
+ pane.setScrollPosition(0, 0);
+ harness.check(pane.getScrollPosition(), new Point());
+ }
+
+ public void test5(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+ Button button = new Button();
+ button.setSize(100, 100);
+ pane.add(button);
+ harness.check(pane.getComponent(0).getWidth(), 100);
+ harness.check(pane.getComponent(0).getHeight(), 100);
+ harness.check(pane.getViewportSize().getWidth(), 100);
+ harness.check(pane.getViewportSize().getHeight(), 100);
+
+ // Check that if x > (child's width - viewport width),
+ // then x is set to (child's width - viewport width) and
+ // that if y > (child's height - viewport height),
+ // then y is set to (child's height o veiwport height).
+ int x = 100;
+ int y = 100;
+ int tempx = (int) (pane.getComponent(0).getWidth() -
+ pane.getViewportSize().getWidth());
+ int tempy = (int) (pane.getComponent(0).getHeight() -
+ pane.getViewportSize().getHeight());
+ harness.check(tempx < x);
+ harness.check(tempy < y);
+ pane.setScrollPosition(x, y);
+ harness.check(pane.getScrollPosition().getX(), tempx);
+ harness.check(pane.getScrollPosition().getY(), tempy);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ScrollPane/testSetLayout.java b/gnu/testlet/java/awt/ScrollPane/testSetLayout.java
new file mode 100644
index 00000000..6d10fc94
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPane/testSetLayout.java
@@ -0,0 +1,63 @@
+/* testSetLayout.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.ScrollPane;
+
+import java.awt.AWTError;
+import java.awt.BorderLayout;
+import java.awt.ScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testSetLayout implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ ScrollPane pane = new ScrollPane();
+
+ boolean fail = false;
+ try
+ {
+ pane.setLayout(null);
+ }
+ catch (AWTError e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ fail = false;
+ try
+ {
+ pane.setLayout(new BorderLayout());
+ }
+ catch (AWTError e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Entries b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Entries
new file mode 100644
index 00000000..5d98235d
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Entries
@@ -0,0 +1,2 @@
+/paramString.java/1.1/Wed Nov 1 19:56:07 2006//
+D
diff --git a/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Repository b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Repository
new file mode 100644
index 00000000..7363deb4
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/ScrollPaneAdjustable
diff --git a/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Root b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPaneAdjustable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/ScrollPaneAdjustable/paramString.java b/gnu/testlet/java/awt/ScrollPaneAdjustable/paramString.java
new file mode 100644
index 00000000..aa452894
--- /dev/null
+++ b/gnu/testlet/java/awt/ScrollPaneAdjustable/paramString.java
@@ -0,0 +1,46 @@
+/* paramString.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.ScrollPaneAdjustable;
+
+import java.awt.ScrollPane;
+import java.awt.ScrollPaneAdjustable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class paramString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ ScrollPane sp = new ScrollPane();
+ ScrollPaneAdjustable vspa = (ScrollPaneAdjustable) sp.getVAdjustable();
+ ScrollPaneAdjustable hspa = (ScrollPaneAdjustable) sp.getHAdjustable();
+ harness.check(vspa.paramString(),
+ "vertical,[0..0],val=0,vis=0,unit=1,block=1,isAdjusting=false");
+ harness.check(hspa.paramString(),
+ "horizontal,[0..0],val=0,vis=0,unit=1,block=1,isAdjusting=false");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Scrollbar/CVS/Entries b/gnu/testlet/java/awt/Scrollbar/CVS/Entries
new file mode 100644
index 00000000..c6791a91
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/CVS/Entries
@@ -0,0 +1,5 @@
+/ScrollbarPaintTest.java/1.2/Mon Oct 3 09:06:26 2011//
+/testSetBlockIncrement.java/1.2/Tue Oct 24 13:50:24 2006//
+/testSetUnitIncrement.java/1.2/Tue Oct 24 13:50:24 2006//
+/testSetValues.java/1.2/Tue Oct 24 13:50:24 2006//
+D
diff --git a/gnu/testlet/java/awt/Scrollbar/CVS/Repository b/gnu/testlet/java/awt/Scrollbar/CVS/Repository
new file mode 100644
index 00000000..c9935d61
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Scrollbar
diff --git a/gnu/testlet/java/awt/Scrollbar/CVS/Root b/gnu/testlet/java/awt/Scrollbar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java b/gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java
new file mode 100644
index 00000000..5c057a7a
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/ScrollbarPaintTest.java
@@ -0,0 +1,108 @@
+/* ScrollbarPaintTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.Scrollbar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.Scrollbar;
+
+public class ScrollbarPaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ Scrollbar c = new Scrollbar();
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+ r.delay(1000);
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+
+ Rectangle bounds = c.getBounds();
+
+ Point loc = f.getLocationOnScreen();
+ Insets i = f.getInsets();
+ loc.x += i.left + bounds.x;
+ loc.y += i.top + bounds.y;
+ bounds.x += i.left;
+ bounds.y += i.top;
+ bounds.width -= (i.left + i.right);
+ bounds.height -= (i.top + i.bottom);
+
+ // check the color of a pixel located in the button center
+ Color scroll = r.getPixelColor(loc.x + bounds.width, loc.y + bounds.height/2);
+
+ // Check if scrollbar was painted.
+ harness.check(!(scroll.equals(Color.red)));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement.java b/gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement.java
new file mode 100644
index 00000000..fc69ac6c
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/testSetBlockIncrement.java
@@ -0,0 +1,79 @@
+/* testSetBlockIncrement.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Scrollbar;
+
+import java.awt.Scrollbar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testSetBlockIncrement implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Scrollbar bar = new Scrollbar();
+
+ // This check shows that the default value of pageIncrement is 10.
+ harness.check(bar.getBlockIncrement(), 10);
+
+ // These checks show that it is not possible to set pageIncrement
+ // to 0. Instead, it is set to 1.
+ bar.setBlockIncrement(0);
+ harness.check(bar.getBlockIncrement(), 1);
+ bar.setBlockIncrement(5);
+ harness.check(bar.getBlockIncrement(), 5);
+ bar.setBlockIncrement(0);
+ harness.check(bar.getBlockIncrement(), 1);
+
+ // These checks show that there was unnecessary code in the method.
+ // The unnecessary code would produce a value of 9 as the pageIncrement,
+ // when in fact it should be set to 30.
+ // NOTE: It is no longer necessary to check if
+ // (maximum - minimum) == 0 because maximum will never equal minimum.
+ bar.setMaximum(10);
+ bar.setMinimum(1);
+ harness.check(bar.getMaximum(), 10);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getBlockIncrement(), 1);
+ bar.setBlockIncrement(30);
+ harness.check(bar.getBlockIncrement(), 30);
+ harness.check(bar.getBlockIncrement() != 9);
+
+ // This test ensures that pageIncrement is not effected
+ // if it is greater than the range.
+ bar.setValues(1,1,1,2);
+ harness.check(bar.getValue(), 1);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getMaximum(), 2);
+ bar.setBlockIncrement(4);
+ harness.check(bar.getBlockIncrement() >
+ (bar.getMaximum() - bar.getMinimum()));
+ harness.check(bar.getBlockIncrement() == 4);
+ harness.check(bar.getBlockIncrement() !=
+ (bar.getMaximum() - bar.getMinimum()));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement.java b/gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement.java
new file mode 100644
index 00000000..301dca6e
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/testSetUnitIncrement.java
@@ -0,0 +1,79 @@
+/* testSetUnitIncrement.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Scrollbar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Scrollbar;
+
+public class testSetUnitIncrement implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Scrollbar bar = new Scrollbar();
+
+ // This check shows that the default value of lineIncrement is 1.
+ harness.check(bar.getUnitIncrement(), 1);
+
+ // These checks show that it is not possible to set lineIncrement
+ // to 0. Instead, it is set to 1.
+ bar.setUnitIncrement(0);
+ harness.check(bar.getUnitIncrement(), 1);
+ bar.setUnitIncrement(5);
+ harness.check(bar.getUnitIncrement(), 5);
+ bar.setUnitIncrement(0);
+ harness.check(bar.getUnitIncrement(), 1);
+
+ // These checks show that there was unnecessary code in the method.
+ // The unnecessary code would produce a value of 9 as the lineIncrement,
+ // when in fact it should be set to 30.
+ // NOTE: It is no longer necessary to check if
+ // (maximum - minimum) == 0 because maximum will never equal minimum.
+ bar.setMaximum(10);
+ bar.setMinimum(1);
+ harness.check(bar.getMaximum(), 10);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getUnitIncrement(), 1);
+ bar.setUnitIncrement(30);
+ harness.check(bar.getUnitIncrement(), 30);
+ harness.check(bar.getUnitIncrement() != 9);
+
+ // This test ensures that pageIncrement is not effected
+ // if it is greater than the range.
+ bar.setValues(1,1,1,2);
+ harness.check(bar.getValue(), 1);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getMaximum(), 2);
+ bar.setBlockIncrement(4);
+ harness.check(bar.getBlockIncrement() >
+ (bar.getMaximum() - bar.getMinimum()));
+ harness.check(bar.getBlockIncrement() == 4);
+ harness.check(bar.getBlockIncrement() !=
+ (bar.getMaximum() - bar.getMinimum()));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Scrollbar/testSetValues.java b/gnu/testlet/java/awt/Scrollbar/testSetValues.java
new file mode 100644
index 00000000..e7696b28
--- /dev/null
+++ b/gnu/testlet/java/awt/Scrollbar/testSetValues.java
@@ -0,0 +1,199 @@
+/* testSetValues.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.Scrollbar;
+
+import java.awt.Scrollbar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testSetValues implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ test7(harness);
+ test8(harness);
+ test9(harness);
+ test10(harness);
+ test11(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // This test ensures that if value < minimum, then
+ // value is set to minimum.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(0, 1, 1, 2);
+ harness.check(bar.getValue(), 1);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getMaximum(), 2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // This test ensures that if visibleAmount < 0, then
+ // it is set to 1.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(4, -5, 4, 8);
+ harness.check(bar.getValue(), 4);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 4);
+ harness.check(bar.getMaximum(), 8);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // This test ensures that if visibleAmount = 0, then
+ // it is set to 1.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(0, 0, 5, 10);
+ harness.check(bar.getValue(), 5);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 5);
+ harness.check(bar.getMaximum(), 10);
+ }
+ public void test4(TestHarness harness)
+ {
+ // This test ensures that if maximum < minimum, then
+ // maximum is set to minimum + 1.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(10, 1, 10, 5);
+ harness.check(bar.getValue(), 10);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 10);
+ harness.check(bar.getMaximum(), 11);
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // This test ensures that if value > maximum - visibleAmount,
+ // then value is set to maximum - visibleAmount.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(10, 1, 5, 10);
+ harness.check(bar.getValue(), 9);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 5);
+ harness.check(bar.getMaximum(), 10);
+ }
+
+ public void test6(TestHarness harness)
+ {
+ // This test ensures that if visibleAmount > maximum - minimum,
+ // then visibleAmount is set to maximum - minimum.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(5, 30, 5, 20);
+ harness.check(bar.getValue(), 5);
+ harness.check(bar.getVisibleAmount(), 15);
+ harness.check(bar.getMinimum(), 5);
+ harness.check(bar.getMaximum(), 20);
+ }
+
+ public void test7(TestHarness harness)
+ {
+ // This test ensures that if maximum = minimum,
+ // then maximum is set to maximum + 1.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(5, 10, 20, 20);
+ harness.check(bar.getValue(), 20);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 20);
+ harness.check(bar.getMaximum(), 21);
+ }
+
+ public void test8(TestHarness harness)
+ {
+ // This test ensures that if negative values are passed
+ // as the value, minimum and maximum values, then
+ // there is no effect. That is, they are not rejected or
+ // made positive.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(-3, -2, -4, -8);
+ harness.check(bar.getValue(), -4);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), -4);
+ harness.check(bar.getMaximum(), -3);
+ }
+
+ public void test9(TestHarness harness)
+ {
+ // This test is taken from Intel's test suite
+ // (test.java.awt.ScrollbarTest). It passes on Sun
+ // but fails on Classpath.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(0, 10, -100, 100);
+ harness.check(bar.getValue(), 0);
+ harness.check(bar.getVisibleAmount(), 10);
+ harness.check(bar.getMinimum(), -100);
+ harness.check(bar.getMaximum(), 100);
+ bar.setMinimum(Integer.MIN_VALUE);
+ harness.check(bar.getValue(), -11);
+ harness.check(bar.getVisibleAmount(), 10);
+ harness.check(bar.getMinimum(), Integer.MIN_VALUE);
+ harness.check(bar.getMaximum(), -1);
+ }
+
+ public void test10(TestHarness harness)
+ {
+ // This test ensures that lineIncrement is not effected
+ // if it is greater than the range.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(1, 1, 1, 2);
+ harness.check(bar.getValue(), 1);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getMaximum(), 2);
+ bar.setUnitIncrement(4);
+ harness.check(bar.getUnitIncrement() >
+ (bar.getMaximum() - bar.getMinimum()));
+ harness.check(bar.getUnitIncrement() == 4);
+ harness.check(bar.getUnitIncrement() !=
+ (bar.getMaximum() - bar.getMinimum()));
+ }
+
+ public void test11(TestHarness harness)
+ {
+ // This test ensures that pageIncrement is not effected
+ // if it is greater than the range.
+ Scrollbar bar = new Scrollbar();
+ bar.setValues(1,1,1,2);
+ harness.check(bar.getValue(), 1);
+ harness.check(bar.getVisibleAmount(), 1);
+ harness.check(bar.getMinimum(), 1);
+ harness.check(bar.getMaximum(), 2);
+ bar.setBlockIncrement(4);
+ harness.check(bar.getBlockIncrement() >
+ (bar.getMaximum() - bar.getMinimum()));
+ harness.check(bar.getBlockIncrement() == 4);
+ harness.check(bar.getBlockIncrement() !=
+ (bar.getMaximum() - bar.getMinimum()));
+ }
+}
diff --git a/gnu/testlet/java/awt/TextArea/CVS/Entries b/gnu/testlet/java/awt/TextArea/CVS/Entries
new file mode 100644
index 00000000..098a1d85
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/CVS/Entries
@@ -0,0 +1,12 @@
+/MouseListenerTest.java/1.1/Thu Mar 15 16:02:30 2012//
+/MouseMotionListenerTest.java/1.1/Thu Mar 15 16:02:30 2012//
+/MouseWheelListenerTest.java/1.1/Thu Mar 15 16:02:30 2012//
+/ScrollbarPaintTest.java/1.1/Fri Mar 10 18:47:57 2006//
+/constructors.java/1.2/Fri Jun 30 09:26:07 2006//
+/getMinimumSize.java/1.1/Fri Nov 3 21:01:02 2006//
+/getPreferredSize.java/1.1/Fri Nov 3 21:01:02 2006//
+/testAppendText.java/1.1/Fri Jun 30 18:20:52 2006//
+/testInsertText.java/1.1/Fri Jun 30 18:20:52 2006//
+/testInvalidConstructorValues.java/1.1/Fri Jun 30 18:20:52 2006//
+/testReplaceText.java/1.1/Fri Jun 30 18:20:52 2006//
+D
diff --git a/gnu/testlet/java/awt/TextArea/CVS/Repository b/gnu/testlet/java/awt/TextArea/CVS/Repository
new file mode 100644
index 00000000..6a3d587d
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/TextArea
diff --git a/gnu/testlet/java/awt/TextArea/CVS/Root b/gnu/testlet/java/awt/TextArea/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/TextArea/MouseListenerTest.java b/gnu/testlet/java/awt/TextArea/MouseListenerTest.java
new file mode 100644
index 00000000..0341a906
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/MouseListenerTest.java
@@ -0,0 +1,367 @@
+// MouseListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if {@link MouseListener} could be registered for an AWT {@link TextArea}
+ * and if action is performed when some of mouse button is pressed.
+ */
+public class MouseListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 477052346645513905L;
+
+ /**
+ * These flags are set by MouseListener
+ */
+ private boolean mouseClickedButton1Flag = false;
+ private boolean mouseClickedButton2Flag = false;
+ private boolean mouseClickedButton3Flag = false;
+ private boolean mousePressedButton1Flag = false;
+ private boolean mousePressedButton2Flag = false;
+ private boolean mousePressedButton3Flag = false;
+ private boolean mouseReleasedButton1Flag = false;
+ private boolean mouseReleasedButton2Flag = false;
+ private boolean mouseReleasedButton3Flag = false;
+ private boolean mouseEnteredFlag = false;
+ private boolean mouseExitedFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ @SuppressWarnings("boxing")
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ TextArea textArea = new TextArea("xyzzy");
+ textArea.setBackground(Color.blue);
+ add(textArea);
+
+ // register new mouse listener
+ textArea.addMouseListener(
+ new MouseListener() {
+
+ public void mouseClicked(MouseEvent e)
+ {
+ // figure out which button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMouseClickedButton1Flag(true); break;
+ case MouseEvent.BUTTON2: setMouseClickedButton2Flag(true); break;
+ case MouseEvent.BUTTON3: setMouseClickedButton3Flag(true); break;
+ default: break;
+ }
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ setMouseEnteredFlag(true);
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+ setMouseExitedFlag(true);
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+ // figure out which mouse button is pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMousePressedButton1Flag(true); break;
+ case MouseEvent.BUTTON2: setMousePressedButton2Flag(true); break;
+ case MouseEvent.BUTTON3: setMousePressedButton3Flag(true); break;
+ default: break;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+ // figure out which mouse button was pressed
+ switch (e.getButton())
+ {
+ case MouseEvent.BUTTON1: setMouseReleasedButton1Flag(true); break;
+ case MouseEvent.BUTTON2: setMouseReleasedButton2Flag(true); break;
+ case MouseEvent.BUTTON3: setMouseReleasedButton3Flag(true); break;
+ default: break;
+ }
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of text area on a screen
+ Rectangle bounds = textArea.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & textArea behavior using ALL mouse buttons
+ for (int mouseTextArea : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the text area
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+
+ // click = press + release
+ robot.mousePress(mouseTextArea);
+ robot.delay(250);
+ robot.mouseRelease(mouseTextArea);
+ robot.delay(250);
+
+ // move the mouse cursor outside the text area
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were correctly performed
+ harness.check(this.isMouseClickedButton1Flag());
+ harness.check(this.isMouseClickedButton2Flag());
+ harness.check(this.isMouseClickedButton3Flag());
+ harness.check(this.isMousePressedButton1Flag());
+ harness.check(this.isMousePressedButton2Flag());
+ harness.check(this.isMousePressedButton3Flag());
+ harness.check(this.isMouseReleasedButton1Flag());
+ harness.check(this.isMouseReleasedButton2Flag());
+ harness.check(this.isMouseReleasedButton3Flag());
+ harness.check(this.isMouseEnteredFlag());
+ harness.check(this.isMouseExitedFlag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseEnteredFlag the mouseEnteredFlag to set
+ */
+ public void setMouseEnteredFlag(boolean mouseEnteredFlag) {
+ this.mouseEnteredFlag = mouseEnteredFlag;
+ }
+
+ /**
+ * @return the mouseEnteredFlag
+ */
+ public boolean isMouseEnteredFlag() {
+ return this.mouseEnteredFlag;
+ }
+
+ /**
+ * @param mouseExitedFlag the mouseExitedFlag to set
+ */
+ public void setMouseExitedFlag(boolean mouseExitedFlag) {
+ this.mouseExitedFlag = mouseExitedFlag;
+ }
+
+ /**
+ * @return the mouseExitedFlag
+ */
+ public boolean isMouseExitedFlag() {
+ return this.mouseExitedFlag;
+ }
+
+ /**
+ * @param mousePressedButton1Flag the mousePressedButton1Flag to set
+ */
+ public void setMousePressedButton1Flag(boolean mousePressedButton1Flag) {
+ this.mousePressedButton1Flag = mousePressedButton1Flag;
+ }
+
+ /**
+ * @return the mousePressedButton1Flag
+ */
+ public boolean isMousePressedButton1Flag() {
+ return this.mousePressedButton1Flag;
+ }
+
+ /**
+ * @param mousePressedButton2Flag the mousePressedButton2Flag to set
+ */
+ public void setMousePressedButton2Flag(boolean mousePressedButton2Flag) {
+ this.mousePressedButton2Flag = mousePressedButton2Flag;
+ }
+
+ /**
+ * @return the mousePressedButton2Flag
+ */
+ public boolean isMousePressedButton2Flag() {
+ return this.mousePressedButton2Flag;
+ }
+
+ /**
+ * @param mousePressedButton3Flag the mousePressedButton3Flag to set
+ */
+ public void setMousePressedButton3Flag(boolean mousePressedButton3Flag) {
+ this.mousePressedButton3Flag = mousePressedButton3Flag;
+ }
+
+ /**
+ * @return the mousePressedButton3Flag
+ */
+ public boolean isMousePressedButton3Flag() {
+ return this.mousePressedButton3Flag;
+ }
+
+ /**
+ * @param mouseClickedButton1Flag the mouseClickedButton1Flag to set
+ */
+ public void setMouseClickedButton1Flag(boolean mouseClickedButton1Flag) {
+ this.mouseClickedButton1Flag = mouseClickedButton1Flag;
+ }
+
+ /**
+ * @return the mouseClickedButton1Flag
+ */
+ public boolean isMouseClickedButton1Flag() {
+ return this.mouseClickedButton1Flag;
+ }
+
+ /**
+ * @param mouseClickedButton2Flag the mouseClickedButton2Flag to set
+ */
+ public void setMouseClickedButton2Flag(boolean mouseClickedButton2Flag) {
+ this.mouseClickedButton2Flag = mouseClickedButton2Flag;
+ }
+
+ /**
+ * @return the mouseClickedButton2Flag
+ */
+ public boolean isMouseClickedButton2Flag() {
+ return this.mouseClickedButton2Flag;
+ }
+
+ /**
+ * @param mouseClickedButton3Flag the mouseClickedButton3Flag to set
+ */
+ public void setMouseClickedButton3Flag(boolean mouseClickedButton3Flag) {
+ this.mouseClickedButton3Flag = mouseClickedButton3Flag;
+ }
+
+ /**
+ * @return the mouseClickedButton3Flag
+ */
+ public boolean isMouseClickedButton3Flag() {
+ return this.mouseClickedButton3Flag;
+ }
+
+ /**
+ * @param mouseReleasedButton1Flag the mouseReleasedButton1Flag to set
+ */
+ public void setMouseReleasedButton1Flag(boolean mouseReleasedButton1Flag) {
+ this.mouseReleasedButton1Flag = mouseReleasedButton1Flag;
+ }
+
+ /**
+ * @return the mouseReleasedButton1Flag
+ */
+ public boolean isMouseReleasedButton1Flag() {
+ return this.mouseReleasedButton1Flag;
+ }
+
+ /**
+ * @param mouseReleasedButton2Flag the mouseReleasedButton2Flag to set
+ */
+ public void setMouseReleasedButton2Flag(boolean mouseReleasedButton2Flag) {
+ this.mouseReleasedButton2Flag = mouseReleasedButton2Flag;
+ }
+
+ /**
+ * @return the mouseReleasedButton2Flag
+ */
+ public boolean isMouseReleasedButton2Flag() {
+ return this.mouseReleasedButton2Flag;
+ }
+
+ /**
+ * @param mouseReleasedButton3Flag the mouseReleasedButton3Flag to set
+ */
+ public void setMouseReleasedButton3Flag(boolean mouseReleasedButton3Flag) {
+ this.mouseReleasedButton3Flag = mouseReleasedButton3Flag;
+ }
+
+ /**
+ * @return the mouseReleasedButton3Flag
+ */
+ public boolean isMouseReleasedButton3Flag() {
+ return this.mouseReleasedButton3Flag;
+ }
+}
diff --git a/gnu/testlet/java/awt/TextArea/MouseMotionListenerTest.java b/gnu/testlet/java/awt/TextArea/MouseMotionListenerTest.java
new file mode 100644
index 00000000..17e921a3
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/MouseMotionListenerTest.java
@@ -0,0 +1,271 @@
+// MouseMotionListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseMotionListener could be registered for an AWT TextArea
+ * and if action is performed when some of mouse button is pressed.
+ */
+public class MouseMotionListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = 4009815071982906794L;
+
+ // these flags are set by MouseMotionListener
+ private boolean mouseDraggedButton1Flag = false;
+ private boolean mouseDraggedButton2Flag = false;
+ private boolean mouseDraggedButton3Flag = false;
+ private boolean mouseMovedButton1Flag = false;
+ private boolean mouseMovedButton2Flag = false;
+ private boolean mouseMovedButton3Flag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ @SuppressWarnings("boxing")
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ TextArea textArea = new TextArea("xyzzy");
+ textArea.setBackground(Color.blue);
+ add(textArea);
+
+ // register new mouse motion listener
+ textArea.addMouseMotionListener(
+ new MouseMotionListener() {
+
+ public void mouseDragged(MouseEvent e)
+ {
+ // figure out which mouse button is pressed
+ int modifiers = e.getModifiersEx();
+ setMouseDraggedButton1Flag(isMouseDraggedButton1Flag()
+ | ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0));
+ setMouseDraggedButton2Flag(isMouseDraggedButton2Flag()
+ | ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0));
+ setMouseDraggedButton3Flag(isMouseDraggedButton3Flag()
+ | ((modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0));
+ }
+
+ public void mouseMoved(MouseEvent e)
+ {
+ // figure out which mouse button is pressed
+ int modifiers = e.getModifiersEx();
+ // none of the modifiers should be set
+ setMouseMovedButton1Flag(isMouseMovedButton1Flag()
+ | ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0));
+ setMouseMovedButton2Flag(isMouseMovedButton2Flag()
+ | ((modifiers & InputEvent.BUTTON2_DOWN_MASK) != 0));
+ setMouseMovedButton3Flag(isMouseMovedButton3Flag()
+ | ((modifiers & InputEvent.BUTTON3_DOWN_MASK) != 0));
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of textArea on a screen
+ Rectangle bounds = textArea.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // check mouse & text area behavior using ALL mouse buttons
+ for (int mouseButton : new Integer[] {InputEvent.BUTTON1_MASK, InputEvent.BUTTON2_MASK, InputEvent.BUTTON3_MASK})
+ {
+ // move the mouse cursor outside the text area
+ robot.mouseMove(0, 0);
+ robot.waitForIdle();
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mousePress(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseRelease(mouseButton);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX - 20, checkedPixelY);
+ robot.delay(250);
+ robot.mouseMove(checkedPixelX + 20, checkedPixelY);
+ robot.delay(250);
+
+ // move the mouse cursor outside the text area
+ robot.mouseMove(0, 0);
+ robot.delay(250);
+ }
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(isMouseDraggedButton1Flag());
+ harness.check(isMouseDraggedButton2Flag());
+ harness.check(isMouseDraggedButton3Flag());
+
+ // negative tests
+ harness.check(!isMouseMovedButton1Flag());
+ harness.check(!isMouseMovedButton2Flag());
+ harness.check(!isMouseMovedButton3Flag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseDraggedButton1Flag the mouseDraggedButton1Flag to set
+ */
+ public void setMouseDraggedButton1Flag(boolean mouseDraggedButton1Flag) {
+ this.mouseDraggedButton1Flag = mouseDraggedButton1Flag;
+ }
+
+ /**
+ * @return the mouseDraggedButton1Flag
+ */
+ public boolean isMouseDraggedButton1Flag() {
+ return this.mouseDraggedButton1Flag;
+ }
+
+ /**
+ * @param mouseDraggedButton2Flag the mouseDraggedButton2Flag to set
+ */
+ public void setMouseDraggedButton2Flag(boolean mouseDraggedButton2Flag) {
+ this.mouseDraggedButton2Flag = mouseDraggedButton2Flag;
+ }
+
+ /**
+ * @return the mouseDraggedButton2Flag
+ */
+ public boolean isMouseDraggedButton2Flag() {
+ return this.mouseDraggedButton2Flag;
+ }
+
+ /**
+ * @param mouseDraggedButton3Flag the mouseDraggedButton3Flag to set
+ */
+ public void setMouseDraggedButton3Flag(boolean mouseDraggedButton3Flag) {
+ this.mouseDraggedButton3Flag = mouseDraggedButton3Flag;
+ }
+
+ /**
+ * @return the mouseDraggedButton3Flag
+ */
+ public boolean isMouseDraggedButton3Flag() {
+ return this.mouseDraggedButton3Flag;
+ }
+
+ /**
+ * @param mouseMovedButton1Flag the mouseMovedButton1Flag to set
+ */
+ public void setMouseMovedButton1Flag(boolean mouseMovedButton1Flag) {
+ this.mouseMovedButton1Flag = mouseMovedButton1Flag;
+ }
+
+ /**
+ * @return the mouseMovedButton1Flag
+ */
+ public boolean isMouseMovedButton1Flag() {
+ return this.mouseMovedButton1Flag;
+ }
+
+ /**
+ * @param mouseMovedButton2Flag the mouseMovedButton2Flag to set
+ */
+ public void setMouseMovedButton2Flag(boolean mouseMovedButton2Flag) {
+ this.mouseMovedButton2Flag = mouseMovedButton2Flag;
+ }
+
+ /**
+ * @return the mouseMovedButton2Flag
+ */
+ public boolean isMouseMovedButton2Flag() {
+ return this.mouseMovedButton2Flag;
+ }
+
+ /**
+ * @param mouseMovedButton3Flag the mouseMovedButton3Flag to set
+ */
+ public void setMouseMovedButton3Flag(boolean mouseMovedButton3Flag) {
+ this.mouseMovedButton3Flag = mouseMovedButton3Flag;
+ }
+
+ /**
+ * @return the mouseMovedButton3Flag
+ */
+ public boolean isMouseMovedButton3Flag() {
+ return this.mouseMovedButton3Flag;
+ }
+}
+
diff --git a/gnu/testlet/java/awt/TextArea/MouseWheelListenerTest.java b/gnu/testlet/java/awt/TextArea/MouseWheelListenerTest.java
new file mode 100644
index 00000000..45327b8c
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/MouseWheelListenerTest.java
@@ -0,0 +1,169 @@
+// MouseWheelListenerTest.java --
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: GUI
+// Uses: ../LocationTests
+
+package gnu.testlet.java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check if MouseWheelListener could be registered for an AWT TextArea
+ * and if action is performed when mouse wheel is rotated up and down.
+ */
+public class MouseWheelListenerTest
+ extends Panel
+ implements Testlet
+{
+ /**
+ * Generated serial version UID.
+ */
+ private static final long serialVersionUID = -4774724125231540431L;
+ // these flags are set by MouseWheelListener
+ private boolean mouseWheelScrollUpFlag = false;
+ private boolean mouseWheelScrollDownFlag = false;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame frame = new Frame();
+ TextArea label = new TextArea("xyzzy");
+ label.setBackground(Color.blue);
+ add(label);
+
+ // register new mouse wheel listener
+ label.addMouseWheelListener(
+ new MouseWheelListener() {
+
+ public void mouseWheelMoved(MouseWheelEvent e)
+ {
+ // figure out if mouse wheel is scrolled up or down
+ setMouseWheelScrollUpFlag(isMouseWheelScrollUpFlag()
+ | (e.getWheelRotation() < 0));
+ setMouseWheelScrollDownFlag(isMouseWheelScrollDownFlag()
+ | (e.getWheelRotation() > 0));
+ }
+
+ }
+ );
+
+ frame.add(this);
+ frame.pack();
+ frame.setVisible(true);
+
+ // AWT robot is used performing some actions
+ // also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot robot = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // compute absolute coordinations of label on a screen
+ Rectangle bounds = label.getBounds();
+ Point loc = frame.getLocationOnScreen();
+ Insets i = frame.getInsets();
+ bounds.x += i.left + loc.x;
+ bounds.y += i.top + loc.y;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ robot.mouseMove(checkedPixelX, checkedPixelY);
+ robot.waitForIdle();
+ robot.delay(250);
+ robot.mouseWheel(+1);
+ robot.delay(250);
+ robot.mouseWheel(-1);
+ robot.delay(250);
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ robot.waitForIdle();
+ robot.delay(1000);
+
+ // it's necessary to clean up the component from desktop
+ frame.dispose();
+
+ // check if all actions were performed
+ harness.check(isMouseWheelScrollUpFlag());
+ harness.check(isMouseWheelScrollDownFlag());
+ }
+
+ /**
+ * Paint method for our implementation of a Panel
+ */
+ @Override
+ public void paint(Graphics graphics)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ graphics.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+
+ /**
+ * @param mouseWheelScrollUpFlag the mouseWheelScrollUpFlag to set
+ */
+ public void setMouseWheelScrollUpFlag(boolean mouseWheelScrollUpFlag) {
+ this.mouseWheelScrollUpFlag = mouseWheelScrollUpFlag;
+ }
+
+ /**
+ * @return the mouseWheelScrollUpFlag
+ */
+ public boolean isMouseWheelScrollUpFlag() {
+ return this.mouseWheelScrollUpFlag;
+ }
+
+ /**
+ * @param mouseWheelScrollDownFlag the mouseWheelScrollDownFlag to set
+ */
+ public void setMouseWheelScrollDownFlag(boolean mouseWheelScrollDownFlag) {
+ this.mouseWheelScrollDownFlag = mouseWheelScrollDownFlag;
+ }
+
+ /**
+ * @return the mouseWheelScrollDownFlag
+ */
+ public boolean isMouseWheelScrollDownFlag() {
+ return this.mouseWheelScrollDownFlag;
+ }
+}
+
diff --git a/gnu/testlet/java/awt/TextArea/ScrollbarPaintTest.java b/gnu/testlet/java/awt/TextArea/ScrollbarPaintTest.java
new file mode 100644
index 00000000..297b9b34
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/ScrollbarPaintTest.java
@@ -0,0 +1,88 @@
+/* ScrollbarPaintTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.TextArea;
+
+public class ScrollbarPaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ TextArea c = new TextArea("", 2, 20, TextArea.SCROLLBARS_VERTICAL_ONLY);
+ add(c);
+ f.add(this);
+ f.pack();
+ f.show();
+ Rectangle bounds = c.getBounds();
+ Insets i = f.getInsets();
+ Point loc = f.getLocationOnScreen();
+ loc.x += i.left + bounds.x;
+ loc.y += i.top + bounds.y;
+
+ Robot r = harness.createRobot();
+ Color scroll = r.getPixelColor(loc.x + bounds.width - i.left, loc.y + bounds.height/2);
+ harness.check(!(scroll.equals(Color.red)));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(2000);
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
+
diff --git a/gnu/testlet/java/awt/TextArea/constructors.java b/gnu/testlet/java/awt/TextArea/constructors.java
new file mode 100644
index 00000000..0d308cd0
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/constructors.java
@@ -0,0 +1,177 @@
+/* constructors.java -- some checks for the constructors in the TextField
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.TextArea;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ TextArea ta = new TextArea();
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ TextArea ta = new TextArea(3, 7);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try negative rows
+ ta = new TextArea(-1, 7);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 0);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try negative columns
+ ta = new TextArea(3, -7);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ TextArea ta = new TextArea("ABC");
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 0);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try null
+ ta = new TextArea(null);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 0);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String, int, int)");
+ TextArea ta = new TextArea("ABC", 3, 7);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try null
+ ta = new TextArea(null, 3, 7);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try negative rows
+ ta = new TextArea("ABC", -3, 7);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 0);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+
+ // try negative columns
+ ta = new TextArea("ABC", 3, -7);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, int, int, int)");
+ TextArea ta = new TextArea("ABC", 3, 7, TextArea.SCROLLBARS_VERTICAL_ONLY);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_VERTICAL_ONLY);
+
+ // try null
+ ta = new TextArea(null, 3, 7, TextArea.SCROLLBARS_VERTICAL_ONLY);
+ harness.check(ta.getText(), "");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_VERTICAL_ONLY);
+
+ // try negative rows
+ ta = new TextArea("ABC", -3, 7, TextArea.SCROLLBARS_VERTICAL_ONLY);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 0);
+ harness.check(ta.getColumns(), 7);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_VERTICAL_ONLY);
+
+ // try negative columns
+ ta = new TextArea("ABC", 3, -7, TextArea.SCROLLBARS_VERTICAL_ONLY);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_VERTICAL_ONLY);
+
+ // try bad scroll bar visibility
+ ta = new TextArea("ABC", 3, -7, 999);
+ harness.check(ta.getText(), "ABC");
+ harness.check(ta.isEditable());
+ harness.check(ta.getRows(), 3);
+ harness.check(ta.getColumns(), 0);
+ harness.check(ta.getScrollbarVisibility(), TextArea.SCROLLBARS_BOTH);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextArea/getMinimumSize.java b/gnu/testlet/java/awt/TextArea/getMinimumSize.java
new file mode 100644
index 00000000..79806bb2
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/getMinimumSize.java
@@ -0,0 +1,146 @@
+/* getMinimumSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getMinimumSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // Test getMinimumSize() method.
+
+ TextArea area = new TextArea();
+ harness.check(area.getSize(), new Dimension());
+ harness.check(area.getMinimumSize(), new Dimension());
+
+ // Check that if mininum size has not been set, then a
+ // Dimension with current number of rows and columns
+ // is returned.
+ harness.check(area.isMinimumSizeSet(), false);
+ area.setSize(new Dimension(4, 8));
+ harness.check(area.getMinimumSize(), new Dimension(4, 8));
+
+ // Check that if minimum size has been set,
+ // then those values are returned.
+ Dimension minSize = new Dimension(5, 16);
+ area.setMinimumSize(minSize);
+ harness.check(area.isMinimumSizeSet());
+ harness.check(area.getMinimumSize() != minSize);
+ harness.check(area.getMinimumSize(), minSize);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // Test getMinimumSize(int, int) method.
+
+ TextArea area = new TextArea();
+
+ // Show that if the values passed are <=, ==, >= or negative,
+ // then no exceptions are thrown.
+ harness.check(area.getSize(), new Dimension());
+ harness.check(area.getMinimumSize(6, 7), new Dimension());
+ harness.check(area.getMinimumSize(0, 0), new Dimension());
+ harness.check(area.getMinimumSize(-4, -7), new Dimension());
+
+ // Check that if minimum size not been set, then a
+ // Dimension with size (width, height) is returned.
+ harness.check(area.isMinimumSizeSet(), false);
+ area.setSize(new Dimension(3, 4));
+ harness.check(area.getMinimumSize(3, 2), new Dimension(3, 4));
+
+ // Check that if minimum size has been set, then a
+ // those values are returned.
+ area.setSize(new Dimension(-3, 5));
+ harness.check(area.getSize(), new Dimension(-3, 5));
+ area.setMinimumSize(new Dimension(1, 9));
+ harness.check(area.isMinimumSizeSet());
+ harness.check(area.getMinimumSize(-1, 1), new Dimension(1, 9));
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // This test will show that if peer == null, then the getWidth()
+ // and getHeight() values are used (and not getRows() and getColumns()
+ // or 0 and 0).
+
+ TextArea area = new TextArea();
+ area.setBounds(1, 2, 3, 4);
+ harness.check(area.getX(), 1);
+ harness.check(area.getY(), 2);
+ harness.check(area.getWidth(), 3);
+ harness.check(area.getHeight(), 4);
+ harness.check(area.getRows(), 0);
+ harness.check(area.getColumns(), 0);
+
+ harness.check(area.getPeer() == null);
+ harness.check(area.getMinimumSize(),
+ new Dimension(area.getWidth(), area.getHeight()));
+ }
+
+ public void test4(TestHarness harness)
+ {
+ // This test shows that the text area's font does not
+ // affect the value of its minimum size.
+
+ TextArea area = new TextArea();
+
+ area.setFont(new Font("Dialog-PLAIN-12", Font.ITALIC, 58));
+ harness.check(area.getMinimumSize(), new Dimension());
+ area.setFont(new Font("TimesRoman", Font.BOLD, 2));
+ harness.check(area.getMinimumSize(), new Dimension());
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // This test shows that the text area's preferred size
+ // does not affect the value of its minimum size.
+
+ TextArea area = new TextArea();
+
+ area.setPreferredSize(new Dimension(7, 3));
+ harness.check(area.isPreferredSizeSet());
+ harness.check(area.getMinimumSize(), new Dimension());
+ area.setPreferredSize(new Dimension());
+ harness.check(area.getMinimumSize(), new Dimension());
+ area.setPreferredSize(new Dimension(-3, -6));
+ harness.check(area.getMinimumSize(), new Dimension());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextArea/getPreferredSize.java b/gnu/testlet/java/awt/TextArea/getPreferredSize.java
new file mode 100644
index 00000000..c2205704
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/getPreferredSize.java
@@ -0,0 +1,147 @@
+/* getPreferredSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getPreferredSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // Test getPreferredSize() method.
+
+ TextArea area = new TextArea();
+ harness.check(area.getSize(), new Dimension());
+ harness.check(area.getPreferredSize(), new Dimension());
+
+ // Check that if preferred size has not been set, then a
+ // Dimension with current number of rows and columns
+ // is returned.
+ harness.check(area.isPreferredSizeSet(), false);
+ area.setSize(new Dimension(4, 8));
+ harness.check(area.getPreferredSize(), new Dimension(4, 8));
+
+ // Check that if preferred size has been set,
+ // then those values are returned.
+ Dimension prefSize = new Dimension(5, 16);
+ area.setPreferredSize(prefSize);
+ harness.check(area.isPreferredSizeSet());
+ harness.check(area.getPreferredSize() != prefSize);
+ harness.check(area.getPreferredSize(), prefSize);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // Test getPreferredSize(int, int) method.
+
+ TextArea area = new TextArea();
+
+ // Show that if the values passed are <=, ==, >= or negative,
+ // then no exceptions are thrown.
+ harness.check(area.getSize(), new Dimension());
+ harness.check(area.getPreferredSize(6, 7), new Dimension());
+ harness.check(area.getPreferredSize(0, 0), new Dimension());
+ harness.check(area.getPreferredSize(-4, -7), new Dimension());
+
+ // Check that if preferred size not been set, then a
+ // Dimension with size (width, height) is returned.
+ harness.check(area.isPreferredSizeSet(), false);
+ area.setSize(new Dimension(3, 4));
+ harness.check(area.getPreferredSize(3, 2), new Dimension(3, 4));
+
+ // Check that if preferred size has been set, then a
+ // those values are returned.
+ area.setSize(new Dimension(-3, 5));
+ harness.check(area.getSize(), new Dimension(-3, 5));
+ area.setPreferredSize(new Dimension(1, 9));
+ harness.check(area.isPreferredSizeSet());
+ harness.check(area.getPreferredSize(-1, 1), new Dimension(1, 9));
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // This test will show that if peer == null, then the getWidth()
+ // and getHeight() values are used (and not getRows() and getColumns()
+ // or 0 and 0).
+
+ TextArea area = new TextArea();
+ area.setBounds(1, 2, 3, 4);
+ harness.check(area.getX(), 1);
+ harness.check(area.getY(), 2);
+ harness.check(area.getWidth(), 3);
+ harness.check(area.getHeight(), 4);
+ harness.check(area.getRows(), 0);
+ harness.check(area.getColumns(), 0);
+
+ harness.check(area.getPeer() == null);
+ harness.check(area.getPreferredSize(),
+ new Dimension(area.getWidth(), area.getHeight()));
+ }
+
+ public void test4(TestHarness harness)
+ {
+ // This test shows that the text area's font does not
+ // affect the value of its preferred size.
+
+ TextArea area = new TextArea();
+
+ area.setFont(new Font("Dialog-PLAIN-12", Font.ITALIC, 58));
+ harness.check(area.getPreferredSize(), new Dimension());
+ area.setFont(new Font("TimesRoman", Font.BOLD, 2));
+ harness.check(area.getPreferredSize(), new Dimension());
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // This test shows that the text area's minimum size
+ // does not affect the value of its preferred size.
+
+ TextArea area = new TextArea();
+
+ area.setMinimumSize(new Dimension(7, 3));
+ harness.check(area.isMinimumSizeSet());
+ harness.check(area.getMinimumSize(), new Dimension(7, 3));
+ area.setMinimumSize(new Dimension());
+ harness.check(area.getMinimumSize(), new Dimension());
+ area.setMinimumSize(new Dimension(-3, -6));
+ harness.check(area.getMinimumSize(), new Dimension(-3, -6));
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/TextArea/testAppendText.java b/gnu/testlet/java/awt/TextArea/testAppendText.java
new file mode 100644
index 00000000..0c1cb341
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/testAppendText.java
@@ -0,0 +1,45 @@
+/* testAppendText.java
+ Copyright (C) 2006 Tania Bento <tbento@redhat.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testAppendText
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextArea a = new TextArea("Hello");
+ // Append to the end of text.
+ harness.check(a.getPeer(), null);
+ a.appendText(" World!");
+ harness.check(a.getText(), "Hello World!");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextArea/testInsertText.java b/gnu/testlet/java/awt/TextArea/testInsertText.java
new file mode 100644
index 00000000..48948463
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/testInsertText.java
@@ -0,0 +1,54 @@
+/* testInsertText.java
+ Copyright (C) 2006 Tania Bento <tbento@redhat.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: 1.4
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testInsertText implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextArea a = new TextArea("World");
+
+ // Insert at the beginning of text.
+ harness.check(a.getPeer(), null);
+ a.insertText("Hello ", 0);
+ harness.check(a.getText(), "Hello World");
+
+ // Insert at the end of text.
+ harness.check(a.getPeer(), null);
+ a.insertText("!", a.getText().length());
+ harness.check(a.getText(), "Hello World!");
+
+ // Insert in the middle of text.
+ harness.check(a.getPeer(), null);
+ a.insertText(" There", 5);
+ harness.check(a.getText(), "Hello There World!");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextArea/testInvalidConstructorValues.java b/gnu/testlet/java/awt/TextArea/testInvalidConstructorValues.java
new file mode 100644
index 00000000..37a1bc2f
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/testInvalidConstructorValues.java
@@ -0,0 +1,77 @@
+/* testInvalidConstructorValues.java
+ Copyright (C) 2006 Tania Bento <tbento@redhat.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testInvalidConstructorValues
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TextArea a = new TextArea(1, 1);
+ harness.check(a.getRows(), 1);
+ harness.check(a.getColumns(), 1);
+
+ TextArea b = new TextArea(0, 0);
+ harness.check(b.getRows(), 0);
+ harness.check(b.getColumns(), 0);
+
+ TextArea c = new TextArea(- 1, - 1);
+ harness.check(c.getRows(), 0);
+ harness.check(c.getColumns(), 0);
+
+ TextArea d = new TextArea("", 1, 1, - 1);
+ harness.check(d.getScrollbarVisibility(), d.SCROLLBARS_BOTH);
+
+ TextArea e = new TextArea("", 1, 1, 0);
+ harness.check(e.getScrollbarVisibility(), e.SCROLLBARS_BOTH);
+
+ TextArea f = new TextArea("", 1, 1, 1);
+ harness.check(f.getScrollbarVisibility(), f.SCROLLBARS_VERTICAL_ONLY);
+
+ TextArea g = new TextArea("", 1, 1, 2);
+ harness.check(g.getScrollbarVisibility(), g.SCROLLBARS_HORIZONTAL_ONLY);
+
+ TextArea h = new TextArea("", 1, 1, 3);
+ harness.check(h.getScrollbarVisibility(), h.SCROLLBARS_NONE);
+
+ TextArea i = new TextArea("", 1, 1, 10);
+ harness.check(i.getScrollbarVisibility(), i.SCROLLBARS_BOTH);
+
+ TextArea j = new TextArea(null);
+ harness.check(j.getText(), "");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextArea/testReplaceText.java b/gnu/testlet/java/awt/TextArea/testReplaceText.java
new file mode 100644
index 00000000..5751c217
--- /dev/null
+++ b/gnu/testlet/java/awt/TextArea/testReplaceText.java
@@ -0,0 +1,60 @@
+/* testReplaceText.java
+ Copyright (C) 2006 Tania Bento <tbento@redhat.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.java.awt.TextArea;
+
+import java.awt.TextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testReplaceText implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextArea a = new TextArea("Goodbye World");
+
+ // Replace at the beginning of text.
+ harness.check(a.getPeer(), null);
+ a.replaceText("Hello", 0, 7);
+ harness.check(a.getText(), "Hello World");
+
+ // Replace in the middle of text.
+ harness.check(a.getPeer(), null);
+ a.replaceText(" There", 5, 5);
+ harness.check(a.getText(), "Hello There World");
+
+ // Replace in the middle of text.
+ harness.check(a.getPeer(), null);
+ a.replaceText("", 6, 12);
+ harness.check(a.getText(), "Hello World");
+
+ // Replace at the end of text.
+ harness.check(a.getPeer(), null);
+ a.replaceText("!", a.getText().length(), a.getText().length());
+ harness.check(a.getText(), "Hello World!");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextComponent/CVS/Entries b/gnu/testlet/java/awt/TextComponent/CVS/Entries
new file mode 100644
index 00000000..aedf26c7
--- /dev/null
+++ b/gnu/testlet/java/awt/TextComponent/CVS/Entries
@@ -0,0 +1,3 @@
+/ignoreOldMouseEvents.java/1.1/Wed Jun 14 16:31:49 2006//
+/setSelectionStart.java/1.1/Mon Nov 6 20:13:13 2006//
+D
diff --git a/gnu/testlet/java/awt/TextComponent/CVS/Repository b/gnu/testlet/java/awt/TextComponent/CVS/Repository
new file mode 100644
index 00000000..988d7c97
--- /dev/null
+++ b/gnu/testlet/java/awt/TextComponent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/TextComponent
diff --git a/gnu/testlet/java/awt/TextComponent/CVS/Root b/gnu/testlet/java/awt/TextComponent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/TextComponent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/TextComponent/ignoreOldMouseEvents.java b/gnu/testlet/java/awt/TextComponent/ignoreOldMouseEvents.java
new file mode 100644
index 00000000..7a9d6fce
--- /dev/null
+++ b/gnu/testlet/java/awt/TextComponent/ignoreOldMouseEvents.java
@@ -0,0 +1,142 @@
+/* ignoreOldMouseEvents.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.TextComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Event;
+import java.awt.Frame;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.TextArea;
+import java.awt.TextComponent;
+import java.awt.TextField;
+import java.awt.event.InputEvent;
+
+public class ignoreOldMouseEvents
+ extends Frame
+ implements Testlet
+{
+
+ TextField a;
+ TextArea b;
+ TestHarness harness;
+ boolean mouseUp = false;
+ boolean mouseDown = false;
+ boolean mouseEnter = false;
+ boolean mouseExit = false;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ a = new TextField(5);
+ b = new TextArea(10, 10);
+ add(a, BorderLayout.EAST);
+ add(b, BorderLayout.WEST);
+ setSize(200,200);
+ show();
+
+ testOldMouseEvents();
+ }
+
+ public void testOldMouseEvents()
+ {
+ Robot r = harness.createRobot();
+
+ r.waitForIdle ();
+
+ Point aLocScreen = a.getLocationOnScreen();
+ Point aMiddle = new Point(aLocScreen.x + a.getWidth()/2, aLocScreen.y + a.getHeight()/2) ;
+
+ r.mouseMove(aMiddle.x, aMiddle.y);
+ r.delay (1000);
+ harness.check(!mouseEnter);
+ mouseEnter = false;
+
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay (1000);
+ harness.check(!mouseDown);
+ mouseDown = false;
+
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ r.delay (1000);
+ harness.check(!mouseUp);
+ mouseUp = false;
+
+ Point bLocScreen = b.getLocationOnScreen();
+ Point bMiddle = new Point(bLocScreen.x + b.getWidth()/2, bLocScreen.y + b.getHeight()/2) ;
+
+ r.mouseMove(bMiddle.x, bMiddle.y);
+ r.delay (1000);
+ harness.check(!mouseExit);
+ harness.check(!mouseEnter);
+ mouseEnter = false;
+ mouseExit = false;
+
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay (1000);
+ harness.check(!mouseDown);
+ mouseDown = false;
+
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ r.delay (1000);
+ harness.check(!mouseUp);
+ mouseUp = false;
+
+ r.mouseMove(bMiddle.x*2, bMiddle.y*2);
+ r.delay (1000);
+ harness.check(!mouseExit);
+ mouseExit = false;
+ }
+
+ public boolean mouseDown(Event evt, int x, int y)
+ {
+ if (evt.arg instanceof TextComponent)
+ mouseDown = true;
+ return false;
+ }
+
+ public boolean mouseUp(Event evt, int x, int y)
+ {
+ if (evt.arg instanceof TextComponent)
+ mouseUp = true;
+ return false;
+ }
+
+ public boolean mouseExit(Event evt, int x, int y)
+ {
+ if (evt.arg instanceof TextComponent)
+ mouseExit = true;
+ return false;
+ }
+
+ public boolean mouseEnter(Event evt, int x, int y)
+ {
+ if (evt.arg instanceof TextComponent)
+ mouseEnter = true;
+ return false;
+ }
+}
diff --git a/gnu/testlet/java/awt/TextComponent/setSelectionStart.java b/gnu/testlet/java/awt/TextComponent/setSelectionStart.java
new file mode 100644
index 00000000..eb5af832
--- /dev/null
+++ b/gnu/testlet/java/awt/TextComponent/setSelectionStart.java
@@ -0,0 +1,70 @@
+/* setSelectionStart.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextComponent;
+
+import java.awt.TextComponent;
+import java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setSelectionStart implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextComponent textComp = new TextField();
+
+ // Check that default value is correct.
+ harness.check(textComp.getSelectionStart(), 0);
+ harness.check(textComp.getSelectionEnd(), 0);
+
+ // Check behaviour when setting text.
+ textComp.setText("This is some text.");
+ harness.check(textComp.getSelectionStart(), 0);
+ harness.check(textComp.getSelectionEnd(), 0);
+
+ // Check behaviour when start < 0.
+ textComp.setSelectionStart(-6);
+ harness.check(textComp.getSelectionStart(), 0);
+ harness.check(textComp.getSelectionEnd(), 0);
+
+ // Check behaviour when start = end
+ textComp.setSelectionStart(0);
+ harness.check(textComp.getSelectionStart(), 0);
+ harness.check(textComp.getSelectionEnd(), 0);
+
+ // Check behaviour when start > end
+ textComp.setSelectionStart(13);
+ harness.check(textComp.getSelectionStart(), 13);
+ harness.check(textComp.getSelectionEnd(), 13);
+
+ // Check behaviour when start < end
+ textComp.setSelectionStart(9);
+ harness.check(textComp.getSelectionStart(), 9);
+ harness.check(textComp.getSelectionEnd(), 13);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextField/CVS/Entries b/gnu/testlet/java/awt/TextField/CVS/Entries
new file mode 100644
index 00000000..af29b271
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/CVS/Entries
@@ -0,0 +1,5 @@
+/PaintTest.java/1.3/Fri Sep 30 12:27:51 2011//
+/constructors.java/1.1/Fri Jun 30 09:06:29 2006//
+/getMinimumSize.java/1.1/Mon Nov 6 18:01:32 2006//
+/getPreferredSize.java/1.1/Mon Nov 6 18:01:32 2006//
+D
diff --git a/gnu/testlet/java/awt/TextField/CVS/Repository b/gnu/testlet/java/awt/TextField/CVS/Repository
new file mode 100644
index 00000000..2f3804d8
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/TextField
diff --git a/gnu/testlet/java/awt/TextField/CVS/Root b/gnu/testlet/java/awt/TextField/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/TextField/PaintTest.java b/gnu/testlet/java/awt/TextField/PaintTest.java
new file mode 100644
index 00000000..3e7d2ef4
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/PaintTest.java
@@ -0,0 +1,110 @@
+/* PaintTest.java --
+ Copyright (C) 2006, 2011 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GUI, JDK 1.0
+
+package gnu.testlet.java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.TextField;
+
+public class PaintTest
+ extends Panel
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setBackground(Color.red);
+ Frame f = new Frame();
+ TextField b = new TextField(10);
+ b.setBackground(Color.green);
+ add(b);
+ f.add(this);
+ f.pack();
+ f.show();
+
+ // AWT robot is used for reading pixel colors
+ // from a screen and also to wait for all
+ // widgets to stabilize theirs size and position.
+ Robot r = harness.createRobot();
+
+ // we should wait a moment before the computations
+ // and pixel checks
+ r.waitForIdle();
+ r.delay(1000);
+
+ Rectangle bounds = b.getBounds();
+ Point loc = f.getLocationOnScreen();
+ Insets i = f.getInsets();
+ bounds.x += loc.x + i.left;
+ bounds.y += loc.y + i.top;
+
+ // position of checked pixel
+ int checkedPixelX = bounds.x + bounds.width / 2;
+ int checkedPixelY = bounds.y + bounds.height / 2;
+
+ // move the mouse cursor to a tested pixel to show users what's checked
+ r.mouseMove(checkedPixelX, checkedPixelY);
+ r.waitForIdle();
+
+ // check the color of a pixel located in the text center
+ Color text = r.getPixelColor(checkedPixelX, checkedPixelY);
+ harness.check(text.equals(Color.green));
+
+ // There is a delay to avoid any race conditions
+ // and so user can see frame
+ r.waitForIdle();
+ r.delay(1000);
+
+ // it's necesarry to clean up the component from desktop
+ f.dispose();
+ }
+
+ public void paint(Graphics g)
+ {
+ Image offScr = createImage(getSize().width, getSize().height);
+ Graphics offG = offScr.getGraphics();
+ offG.setClip(0, 0, getSize().width, getSize().height);
+
+ super.paint(offG);
+ g.drawImage(offScr, 0, 0, null);
+
+ offG.dispose();
+ }
+}
+
diff --git a/gnu/testlet/java/awt/TextField/constructors.java b/gnu/testlet/java/awt/TextField/constructors.java
new file mode 100644
index 00000000..1bb60697
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/constructors.java
@@ -0,0 +1,109 @@
+/* constructors.java -- some checks for the constructors in the TextField
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.TextField;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ TextField tf = new TextField();
+ harness.check(tf.getText(), "");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 0);
+ harness.check(tf.getEchoChar(), 0);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ TextField tf = new TextField(3);
+ harness.check(tf.getText(), "");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 3);
+ harness.check(tf.getEchoChar(), 0);
+
+ // try negative columns
+ tf = new TextField(-1);
+ harness.check(tf.getText(), "");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 0);
+ harness.check(tf.getEchoChar(), 0);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ TextField tf = new TextField("ABC");
+ harness.check(tf.getText(), "ABC");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 3);
+ harness.check(tf.getEchoChar(), 0);
+
+ // try null
+ tf = new TextField(null);
+ harness.check(tf.getText(), "");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 0);
+ harness.check(tf.getEchoChar(), 0);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String, int)");
+ TextField tf = new TextField("ABC", 3);
+ harness.check(tf.getText(), "ABC");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 3);
+ harness.check(tf.getEchoChar(), 0);
+
+ // try null
+ tf = new TextField(null, 3);
+ harness.check(tf.getText(), "");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 3);
+ harness.check(tf.getEchoChar(), 0);
+
+ // try negative columns
+ tf = new TextField("ABC", -3);
+ harness.check(tf.getText(), "ABC");
+ harness.check(tf.isEditable());
+ harness.check(tf.getColumns(), 0);
+ harness.check(tf.getEchoChar(), 0);
+ }
+}
diff --git a/gnu/testlet/java/awt/TextField/getMinimumSize.java b/gnu/testlet/java/awt/TextField/getMinimumSize.java
new file mode 100644
index 00000000..94892f6f
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/getMinimumSize.java
@@ -0,0 +1,145 @@
+/* getMinimumSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.TextField;
+
+public class getMinimumSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // Test getMinimumSize() method.
+
+ TextField field = new TextField();
+ harness.check(field.getSize(), new Dimension());
+ harness.check(field.getMinimumSize(), new Dimension());
+
+ // Check that if mininum size has not been set, then a
+ // Dimension with current number of rows and columns
+ // is returned.
+ harness.check(field.isMinimumSizeSet(), false);
+ field.setSize(new Dimension(4, 8));
+ harness.check(field.getMinimumSize(), new Dimension(4, 8));
+
+ // Check that if minimum size has been set,
+ // then those values are returned.
+ Dimension minSize = new Dimension(5, 16);
+ field.setMinimumSize(minSize);
+ harness.check(field.isMinimumSizeSet());
+ harness.check(field.getMinimumSize() != minSize);
+ harness.check(field.getMinimumSize(), minSize);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // Test getMinimumSize(int, int) method.
+
+ TextField field = new TextField();
+
+ // Show that if the values passed are <=, ==, >= or negative,
+ // then no exceptions are thrown.
+ harness.check(field.getSize(), new Dimension());
+ harness.check(field.getMinimumSize(7), new Dimension());
+ harness.check(field.getMinimumSize(0), new Dimension());
+ harness.check(field.getMinimumSize(-7), new Dimension());
+
+ // Check that if minimum size not been set, then a
+ // Dimension with size (width, height) is returned.
+ harness.check(field.isMinimumSizeSet(), false);
+ field.setSize(new Dimension(3, 4));
+ harness.check(field.getMinimumSize(2), new Dimension(3, 4));
+
+ // Check that if minimum size has been set, then a
+ // those values are returned.
+ field.setSize(new Dimension(-3, 5));
+ harness.check(field.getSize(), new Dimension(-3, 5));
+ field.setMinimumSize(new Dimension(1, 9));
+ harness.check(field.isMinimumSizeSet());
+ harness.check(field.getMinimumSize(1), new Dimension(1, 9));
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // This test will show that if peer == null, then the getWidth()
+ // and getHeight() values are used (and not getRows() and getColumns()
+ // or 0 and 0).
+
+ TextField field = new TextField();
+ field.setBounds(1, 2, 3, 4);
+ harness.check(field.getX(), 1);
+ harness.check(field.getY(), 2);
+ harness.check(field.getWidth(), 3);
+ harness.check(field.getHeight(), 4);
+ harness.check(field.getColumns(), 0);
+
+ harness.check(field.getPeer() == null);
+ harness.check(field.getMinimumSize(),
+ new Dimension(field.getWidth(), field.getHeight()));
+ }
+
+ public void test4(TestHarness harness)
+ {
+ // This test shows that the text field's font does not
+ // affect the value of its minimum size.
+
+ TextField field = new TextField();
+
+ field.setFont(new Font("Dialog-PLAIN-12", Font.ITALIC, 58));
+ harness.check(field.getMinimumSize(), new Dimension());
+ field.setFont(new Font("TimesRoman", Font.BOLD, 2));
+ harness.check(field.getMinimumSize(), new Dimension());
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // This test shows that the text field's preferred size
+ // does not affect the value of its minimum size.
+
+ TextField field = new TextField();
+
+ field.setPreferredSize(new Dimension(7, 3));
+ harness.check(field.isPreferredSizeSet());
+ harness.check(field.getMinimumSize(), new Dimension());
+ field.setPreferredSize(new Dimension());
+ harness.check(field.getMinimumSize(), new Dimension());
+ field.setPreferredSize(new Dimension(-3, -6));
+ harness.check(field.getMinimumSize(), new Dimension());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/TextField/getPreferredSize.java b/gnu/testlet/java/awt/TextField/getPreferredSize.java
new file mode 100644
index 00000000..7318b393
--- /dev/null
+++ b/gnu/testlet/java/awt/TextField/getPreferredSize.java
@@ -0,0 +1,146 @@
+/* getPreferredSize.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.TextField;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getPreferredSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ // Test getPreferredSize() method.
+
+ TextField field = new TextField();
+ harness.check(field.getSize(), new Dimension());
+ harness.check(field.getPreferredSize(), new Dimension());
+
+ // Check that if preferred size has not been set, then a
+ // Dimension with current number of rows and columns
+ // is returned.
+ harness.check(field.isPreferredSizeSet(), false);
+ field.setSize(new Dimension(4, 8));
+ harness.check(field.getPreferredSize(), new Dimension(4, 8));
+
+ // Check that if preferred size has been set,
+ // then those values are returned.
+ Dimension prefSize = new Dimension(5, 16);
+ field.setPreferredSize(prefSize);
+ harness.check(field.isPreferredSizeSet());
+ harness.check(field.getPreferredSize() != prefSize);
+ harness.check(field.getPreferredSize(), prefSize);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ // Test getPreferredSize(int, int) method.
+
+ TextField field = new TextField();
+
+ // Show that if the values passed are <=, ==, >= or negative,
+ // then no exceptions are thrown.
+ harness.check(field.getSize(), new Dimension());
+ harness.check(field.getPreferredSize(7), new Dimension());
+ harness.check(field.getPreferredSize(0), new Dimension());
+ harness.check(field.getPreferredSize(-7), new Dimension());
+
+ // Check that if preferred size not been set, then a
+ // Dimension with size (width, height) is returned.
+ harness.check(field.isPreferredSizeSet(), false);
+ field.setSize(new Dimension(3, 4));
+ harness.check(field.getPreferredSize(2), new Dimension(3, 4));
+
+ // Check that if preferred size has been set, then a
+ // those values are returned.
+ field.setSize(new Dimension(-3, 5));
+ harness.check(field.getSize(), new Dimension(-3, 5));
+ field.setPreferredSize(new Dimension(1, 9));
+ harness.check(field.isPreferredSizeSet());
+ harness.check(field.getPreferredSize(-1), new Dimension(1, 9));
+ }
+
+ public void test3(TestHarness harness)
+ {
+ // This test will show that if peer == null, then the getWidth()
+ // and getHeight() values are used (and not getRows() and getColumns()
+ // or 0 and 0).
+
+ TextField field = new TextField();
+ field.setBounds(1, 2, 3, 4);
+ harness.check(field.getX(), 1);
+ harness.check(field.getY(), 2);
+ harness.check(field.getWidth(), 3);
+ harness.check(field.getHeight(), 4);
+ harness.check(field.getColumns(), 0);
+
+ harness.check(field.getPeer() == null);
+ harness.check(field.getPreferredSize(),
+ new Dimension(field.getWidth(), field.getHeight()));
+ }
+
+ public void test4(TestHarness harness)
+ {
+ // This test shows that the text field's font does not
+ // affect the value of its preferred size.
+
+ TextField field = new TextField();
+
+ field.setFont(new Font("Dialog-PLAIN-12", Font.ITALIC, 58));
+ harness.check(field.getPreferredSize(), new Dimension());
+ field.setFont(new Font("TimesRoman", Font.BOLD, 2));
+ harness.check(field.getPreferredSize(), new Dimension());
+ }
+
+ public void test5(TestHarness harness)
+ {
+ // This test shows that the text field's minimum size
+ // does not affect the value of its preferred size.
+
+ TextField field = new TextField();
+
+ field.setMinimumSize(new Dimension(7, 3));
+ harness.check(field.isMinimumSizeSet());
+ harness.check(field.getMinimumSize(), new Dimension(7, 3));
+ field.setMinimumSize(new Dimension());
+ harness.check(field.getMinimumSize(), new Dimension());
+ field.setMinimumSize(new Dimension(-3, -6));
+ harness.check(field.getMinimumSize(), new Dimension(-3, -6));
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/Toolkit/CVS/Entries b/gnu/testlet/java/awt/Toolkit/CVS/Entries
new file mode 100644
index 00000000..b2d3e3d9
--- /dev/null
+++ b/gnu/testlet/java/awt/Toolkit/CVS/Entries
@@ -0,0 +1,2 @@
+/security.java/1.2/Tue Jun 27 12:23:38 2006//
+D
diff --git a/gnu/testlet/java/awt/Toolkit/CVS/Repository b/gnu/testlet/java/awt/Toolkit/CVS/Repository
new file mode 100644
index 00000000..a9e08fbe
--- /dev/null
+++ b/gnu/testlet/java/awt/Toolkit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Toolkit
diff --git a/gnu/testlet/java/awt/Toolkit/CVS/Root b/gnu/testlet/java/awt/Toolkit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Toolkit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Toolkit/security.java b/gnu/testlet/java/awt/Toolkit/security.java
new file mode 100644
index 00000000..71d7851e
--- /dev/null
+++ b/gnu/testlet/java/awt/Toolkit/security.java
@@ -0,0 +1,164 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2006 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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.java.awt.Toolkit;
+
+import java.awt.AWTEvent;
+import java.awt.AWTPermission;
+import java.awt.Frame;
+import java.awt.JobAttributes;
+import java.awt.PageAttributes;
+import java.awt.Toolkit;
+import java.awt.event.AWTEventListener;
+import java.security.Permission;
+import java.util.Properties;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ Toolkit toolkit = Toolkit.getDefaultToolkit();
+ toolkit.getSystemEventQueue();
+
+ AWTEventListener listener = new TestEventListener();
+
+ Frame frame = new Frame();
+ Properties props = new Properties();
+ JobAttributes jobattrs = new JobAttributes();
+ PageAttributes pageattrs = new PageAttributes();
+
+ Permission[] listenToAllAWTEvents = new Permission[] {
+ new AWTPermission("listenToAllAWTEvents")};
+
+ Permission[] queuePrintJob = new Permission[] {
+ new RuntimePermission("queuePrintJob")};
+
+ Permission[] accessClipboard = new Permission[] {
+ new AWTPermission("accessClipboard")};
+
+ Permission[] accessEventQueue = new Permission[] {
+ new AWTPermission("accessEventQueue")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.awt.Toolkit-addAWTEventListener
+ harness.checkPoint("addAWTEventListener");
+ try {
+ sm.prepareChecks(listenToAllAWTEvents);
+ toolkit.addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Toolkit-removeAWTEventListener
+ harness.checkPoint("removeAWTEventListener");
+ try {
+ sm.prepareChecks(listenToAllAWTEvents);
+ toolkit.removeAWTEventListener(listener);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Toolkit-getPrintJob(Frame, String, Properties)
+ harness.checkPoint("getPrintJob(3-arg)");
+ try {
+ sm.prepareHaltingChecks(queuePrintJob);
+ toolkit.getPrintJob(frame, "Test job", props);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Toolkit-getPrintJob(Frame, String, JobAttributes, PageAttributes)
+ harness.checkPoint("getPrintJob(4-arg)");
+ try {
+ sm.prepareHaltingChecks(queuePrintJob);
+ toolkit.getPrintJob(frame, "Test job", jobattrs, pageattrs);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Toolkit-getSystemClipboard
+ harness.checkPoint("getSystemClipboard");
+ try {
+ sm.prepareChecks(accessClipboard);
+ toolkit.getSystemClipboard();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Toolkit-getSystemEventQueue
+ harness.checkPoint("getSystemEventQueue");
+ try {
+ sm.prepareChecks(accessEventQueue);
+ toolkit.getSystemEventQueue();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestEventListener implements AWTEventListener
+ {
+ public void eventDispatched(AWTEvent event)
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/Window/CVS/Entries b/gnu/testlet/java/awt/Window/CVS/Entries
new file mode 100644
index 00000000..4ca5d6e7
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/CVS/Entries
@@ -0,0 +1,4 @@
+/focusCycleRootTest.java/1.1/Thu Mar 23 19:44:07 2006//
+/pack1.java/1.1/Sun Sep 11 22:34:34 2005//
+/security.java/1.4/Tue Jun 27 12:23:38 2006//
+D
diff --git a/gnu/testlet/java/awt/Window/CVS/Repository b/gnu/testlet/java/awt/Window/CVS/Repository
new file mode 100644
index 00000000..be00500c
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/Window
diff --git a/gnu/testlet/java/awt/Window/CVS/Root b/gnu/testlet/java/awt/Window/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/Window/focusCycleRootTest.java b/gnu/testlet/java/awt/Window/focusCycleRootTest.java
new file mode 100644
index 00000000..3a9adc42
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/focusCycleRootTest.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.awt.Window;
+
+import java.awt.Frame;
+import java.awt.Window;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests that the behaviour of focusCycleRoot.
+ */
+public class focusCycleRootTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Frame f = new Frame();
+ Window w = new Window(f);
+
+ harness.check(w.getFocusCycleRootAncestor() == null);
+ harness.check(w.isFocusCycleRoot() == true);
+
+ // method must not changes focuscycleroot variable
+ w.setFocusCycleRoot(false);
+ harness.check(w.isFocusCycleRoot() == true);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/Window/pack1.java b/gnu/testlet/java/awt/Window/pack1.java
new file mode 100644
index 00000000..1f826fc6
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/pack1.java
@@ -0,0 +1,137 @@
+// Tags: GUI JDK1.0
+
+// Copyright (C) 2005 Red Hat
+
+// 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.java.awt.Window;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * Check that Window.pack gives children the right sizes.
+ */
+public class pack1 implements Testlet
+{
+ Color bg = new Color (243, 133, 89);
+ Color border = new Color (255, 0, 0);
+
+ class pack1Frame extends Frame
+ {
+ public pack1Frame ()
+ {
+ super ();
+ }
+ }
+
+ class pack1Canvas extends Canvas
+ {
+ public pack1Canvas ()
+ {
+ super ();
+ setBackground (bg);
+ }
+
+ public void paint (Graphics g)
+ {
+ Rectangle bounds = new Rectangle (0, 0,
+ this.getSize ().width,
+ this.getSize ().height);
+ g.setColor (border);
+ g.drawRect (bounds.x, bounds.y, bounds.width - 1, bounds.height - 1);
+ }
+ }
+
+ public void checkColor (TestHarness harness, Color c)
+ {
+ harness.check (c.getRed () == border.getRed ()
+ && c.getGreen () == border.getGreen ()
+ && c.getBlue () == border.getBlue ());
+ }
+
+ public void test (TestHarness harness)
+ {
+ Robot r = harness.createRobot ();
+ Color c;
+ int x = 100;
+ int y = 100;
+ int width = 100;
+ int height = 100;
+ Insets i;
+
+ pack1Frame f = new pack1Frame ();
+
+ f.setLocation (x, y);
+ f.setSize (width, height);
+
+ f.add (new pack1Canvas ());
+
+ r.setAutoDelay (100);
+ r.setAutoWaitForIdle (true);
+
+ f.show ();
+
+ r.waitForIdle ();
+ r.delay (100);
+
+ i = f.getInsets ();
+
+ int top_y = y + i.top;
+ int bottom_y = y + height - i.bottom - 1;
+ int left_x = x + i.left;
+ int right_x = x + width - i.right - 1;
+
+ // top-left-left
+ c = r.getPixelColor (left_x, top_y + 1);
+ checkColor (harness, c);
+
+ // top-left-top
+ c = r.getPixelColor (left_x + 1, top_y);
+ checkColor (harness, c);
+
+ // top-right-right
+ c = r.getPixelColor (right_x, top_y + 1);
+ checkColor (harness, c);
+
+ // top-right-top
+ c = r.getPixelColor (right_x - 1, top_y);
+ checkColor (harness, c);
+
+ // bottom-left-left
+ c = r.getPixelColor (left_x, bottom_y - 1);
+ checkColor (harness, c);
+
+ // bottom-left-bottom
+ c = r.getPixelColor (left_x + 1, bottom_y);
+ checkColor (harness, c);
+
+ // bottom-right-right
+ c = r.getPixelColor (right_x, bottom_y - 1);
+ checkColor (harness, c);
+
+ // bottom-right-bottom
+ c = r.getPixelColor (right_x - 1, bottom_y);
+ checkColor (harness, c);
+
+ r.delay (4000);
+ }
+}
diff --git a/gnu/testlet/java/awt/Window/security.java b/gnu/testlet/java/awt/Window/security.java
new file mode 100644
index 00000000..52d09099
--- /dev/null
+++ b/gnu/testlet/java/awt/Window/security.java
@@ -0,0 +1,96 @@
+// Tags: GUI JDK1.3
+
+// Copyright (C) 2006 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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.java.awt.Window;
+
+import java.awt.AWTPermission;
+import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
+import java.awt.Window;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ Frame frame = new Frame();
+ Window window = new Window(frame);
+ GraphicsConfiguration gc = window.getGraphicsConfiguration();
+
+ Permission[] showWindowWithoutWarningBanner = new Permission[] {
+ new AWTPermission("showWindowWithoutWarningBanner")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.awt.Window-Window(Frame)
+ harness.checkPoint("Window(Frame)");
+ try {
+ sm.prepareChecks(showWindowWithoutWarningBanner);
+ new Window(frame);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Window-Window(Window)
+ harness.checkPoint("Window(Window)");
+ try {
+ sm.prepareChecks(showWindowWithoutWarningBanner);
+ new Window(window);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.awt.Window-Window(Window, GraphicsConfiguration)
+ harness.checkPoint("Window(Window, GraphicsConfiguration)");
+ try {
+ sm.prepareChecks(showWindowWithoutWarningBanner);
+ new Window(window, gc);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/color/CVS/Entries b/gnu/testlet/java/awt/color/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/color/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/color/CVS/Entries.Log b/gnu/testlet/java/awt/color/CVS/Entries.Log
new file mode 100644
index 00000000..8bf04c36
--- /dev/null
+++ b/gnu/testlet/java/awt/color/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/ColorSpace////
diff --git a/gnu/testlet/java/awt/color/CVS/Repository b/gnu/testlet/java/awt/color/CVS/Repository
new file mode 100644
index 00000000..3f911669
--- /dev/null
+++ b/gnu/testlet/java/awt/color/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/color
diff --git a/gnu/testlet/java/awt/color/CVS/Root b/gnu/testlet/java/awt/color/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/color/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/color/ColorSpace/CVS/Entries b/gnu/testlet/java/awt/color/ColorSpace/CVS/Entries
new file mode 100644
index 00000000..93d96c31
--- /dev/null
+++ b/gnu/testlet/java/awt/color/ColorSpace/CVS/Entries
@@ -0,0 +1,3 @@
+/getInstance.java/1.1/Wed Apr 14 01:27:16 2004//
+/isCS_sRGB.java/1.1/Fri May 23 14:24:32 2003//
+D
diff --git a/gnu/testlet/java/awt/color/ColorSpace/CVS/Repository b/gnu/testlet/java/awt/color/ColorSpace/CVS/Repository
new file mode 100644
index 00000000..4f9d99d1
--- /dev/null
+++ b/gnu/testlet/java/awt/color/ColorSpace/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/color/ColorSpace
diff --git a/gnu/testlet/java/awt/color/ColorSpace/CVS/Root b/gnu/testlet/java/awt/color/ColorSpace/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/color/ColorSpace/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/color/ColorSpace/getInstance.java b/gnu/testlet/java/awt/color/ColorSpace/getInstance.java
new file mode 100644
index 00000000..3ce63b1a
--- /dev/null
+++ b/gnu/testlet/java/awt/color/ColorSpace/getInstance.java
@@ -0,0 +1,154 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.color.ColorSpace;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.color.ColorSpace;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getInstance
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ test_CS_sRGB(h);
+ test_CS_CIEXYZ(h);
+ test_CS_PYCC(h);
+ test_CS_GRAY(h);
+ test_CS_LINEAR_RGB(h);
+ test_TYPE_GRAY(h);
+ }
+
+
+ public void test_CS_sRGB(TestHarness h)
+ {
+ ColorSpace cs;
+
+ h.checkPoint("CS_sRGB");
+ cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ h.check(cs.getType(), ColorSpace.TYPE_RGB); // Check #1.
+ h.check(cs.getNumComponents(), 3); // Check #2.
+ checkEpsilon(h, cs.getMinValue(0), 0.0f); // Check #3.
+ checkEpsilon(h, cs.getMaxValue(0), 1.0f); // Check #4.
+ checkEpsilon(h, cs.getMinValue(1), 0.0f); // Check #5.
+ checkEpsilon(h, cs.getMaxValue(1), 1.0f); // Check #6.
+ checkEpsilon(h, cs.getMinValue(2), 0.0f); // Check #7.
+ checkEpsilon(h, cs.getMaxValue(2), 1.0f); // Check #8.
+ }
+
+
+ public void test_CS_CIEXYZ(TestHarness h)
+ {
+ ColorSpace cs;
+
+ h.checkPoint("CS_CIEXYZ");
+ cs = ColorSpace.getInstance(ColorSpace.CS_CIEXYZ);
+ h.check(cs.getType(), ColorSpace.TYPE_XYZ); // Check #1.
+ h.check(cs.getNumComponents(), 3); // Check #2.
+ checkEpsilon(h, cs.getMinValue(0), 0.0f); // Check #3.
+ checkEpsilon(h, cs.getMaxValue(0), 2.0f); // Check #4.
+ checkEpsilon(h, cs.getMinValue(1), 0.0f); // Check #5.
+ checkEpsilon(h, cs.getMaxValue(1), 2.0f); // Check #6.
+ checkEpsilon(h, cs.getMinValue(2), 0.0f); // Check #7.
+ checkEpsilon(h, cs.getMaxValue(2), 2.0f); // Check #8.
+ }
+
+
+ public void test_CS_PYCC(TestHarness h)
+ {
+ ColorSpace cs;
+
+ h.checkPoint("CS_PYCC");
+ cs = ColorSpace.getInstance(ColorSpace.CS_PYCC);
+ h.check(cs.getType(), ColorSpace.TYPE_3CLR); // Check #1.
+ h.check(cs.getNumComponents(), 3); // Check #2.
+ checkEpsilon(h, cs.getMinValue(0), 0.0f); // Check #3.
+ checkEpsilon(h, cs.getMaxValue(0), 1.0f); // Check #4.
+ checkEpsilon(h, cs.getMinValue(1), 0.0f); // Check #5.
+ checkEpsilon(h, cs.getMaxValue(1), 1.0f); // Check #6.
+ checkEpsilon(h, cs.getMinValue(2), 0.0f); // Check #7.
+ checkEpsilon(h, cs.getMaxValue(2), 1.0f); // Check #8.
+ }
+
+
+ public void test_CS_GRAY(TestHarness h)
+ {
+ ColorSpace cs;
+
+ h.checkPoint("CS_GRAY");
+ cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
+ h.check(cs.getType(), ColorSpace.TYPE_GRAY); // Check #1.
+ h.check(cs.getNumComponents(), 1); // Check #2.
+ h.check(cs.getMinValue(0), 0.0f); // Check #3.
+ h.check(cs.getMaxValue(0), 1.0f); // Check #4.
+ }
+
+
+ public void test_CS_LINEAR_RGB(TestHarness h)
+ {
+ ColorSpace cs;
+
+ h.checkPoint("CS_LINEAR_RGB");
+ cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
+ h.check(cs.getType(), ColorSpace.TYPE_RGB); // Check #1.
+ h.check(cs.getNumComponents(), 3); // Check #2.
+ checkEpsilon(h, cs.getMinValue(0), 0.0f); // Check #3.
+ checkEpsilon(h, cs.getMaxValue(0), 1.0f); // Check #4.
+ checkEpsilon(h, cs.getMinValue(1), 0.0f); // Check #5.
+ checkEpsilon(h, cs.getMaxValue(1), 1.0f); // Check #6.
+ checkEpsilon(h, cs.getMinValue(2), 0.0f); // Check #7.
+ checkEpsilon(h, cs.getMaxValue(2), 1.0f); // Check #8.
+ }
+
+
+ public void test_TYPE_GRAY(TestHarness h)
+ {
+ Throwable caught = null;
+
+ h.checkPoint("TYPE_GRAY");
+ try
+ {
+ ColorSpace.getInstance(ColorSpace.TYPE_GRAY);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException); // Check #1.
+ }
+
+
+ private static void checkEpsilon(TestHarness h,
+ float value,
+ float expected)
+ {
+ if (Math.abs(value - expected) < 0.001f)
+ h.check(true);
+ else
+ h.check(value, expected);
+ }
+}
diff --git a/gnu/testlet/java/awt/color/ColorSpace/isCS_sRGB.java b/gnu/testlet/java/awt/color/ColorSpace/isCS_sRGB.java
new file mode 100644
index 00000000..111e850b
--- /dev/null
+++ b/gnu/testlet/java/awt/color/ColorSpace/isCS_sRGB.java
@@ -0,0 +1,38 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Daniel Bonniot <bonniot@users.sf.net>
+
+// 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.java.awt.color.ColorSpace;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.color.ColorSpace;
+
+/**
+ * Checks that isCS_sRGB returns true for ColorSpace.CS_sRGB.
+ */
+public class isCS_sRGB implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(ColorSpace.getInstance(ColorSpace.CS_sRGB).isCS_sRGB());
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/CVS/Entries b/gnu/testlet/java/awt/datatransfer/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/datatransfer/CVS/Entries.Log b/gnu/testlet/java/awt/datatransfer/CVS/Entries.Log
new file mode 100644
index 00000000..ef15b882
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/Clipboard////
+A D/DataFlavor////
+A D/StringSelection////
diff --git a/gnu/testlet/java/awt/datatransfer/CVS/Repository b/gnu/testlet/java/awt/datatransfer/CVS/Repository
new file mode 100644
index 00000000..4ffa08f8
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/datatransfer
diff --git a/gnu/testlet/java/awt/datatransfer/CVS/Root b/gnu/testlet/java/awt/datatransfer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Entries b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Entries
new file mode 100644
index 00000000..c4b21941
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Entries
@@ -0,0 +1,3 @@
+/clipboard.java/1.1/Fri Aug 5 17:05:04 2005//
+/clipboardFlavors.java/1.1/Fri Aug 5 17:05:04 2005//
+D
diff --git a/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Repository b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Repository
new file mode 100644
index 00000000..70865222
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/datatransfer/Clipboard
diff --git a/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Root b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/Clipboard/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/datatransfer/Clipboard/clipboard.java b/gnu/testlet/java/awt/datatransfer/Clipboard/clipboard.java
new file mode 100644
index 00000000..97643efe
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/Clipboard/clipboard.java
@@ -0,0 +1,114 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.datatransfer.Clipboard;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.datatransfer.*;
+
+public class clipboard
+ extends Clipboard
+ implements Testlet, Transferable, ClipboardOwner
+{
+
+ public clipboard()
+ {
+ super("mauve");
+ }
+
+ private clipboard(String name)
+ {
+ super(name);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.check(this.getName(), "mauve");
+ harness.check(this.contents, null);
+ harness.check(this.getContents(null), this.contents);
+ harness.check(this.owner, null);
+
+ // Claim ownership of the clipboard.
+ this.setContents(this, this);
+ harness.check(this.contents, this);
+ harness.check(this.getContents(null), this.contents);
+ harness.check(this.owner, this);
+ harness.check(lostOwnerCalled, false);
+
+ // Make someone else the owner.
+ clipboard cp2 = new clipboard("dummy2");
+ this.setContents(cp2, cp2);
+ harness.check(lostOwnerCalled, true);
+ harness.check(this.contents, cp2);
+ harness.check(this.getContents(null), this.contents);
+ harness.check(this.owner, cp2);
+ harness.check(lostOwnerClipboard, this);
+ harness.check(lostOwnerTransferable, this);
+
+ // Set owner/content back to this.
+ lostOwnerCalled = false;
+ this.setContents(this, this);
+ harness.check(lostOwnerCalled, false);
+ harness.check(this.contents, this);
+ harness.check(this.getContents(null), this.contents);
+ harness.check(this.owner, this);
+
+ // Keep outself as owner, but change the content.
+ this.setContents(cp2, this);
+ harness.check(lostOwnerCalled, false);
+ harness.check(this.contents, cp2);
+ harness.check(this.getContents(null), this.contents);
+ harness.check(this.owner, this);
+ }
+
+ // Transferable
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ return new DataFlavor[0];
+ }
+
+ public boolean isDataFlavorSupported(DataFlavor flavor)
+ {
+ return false;
+ }
+
+ public Object getTransferData(DataFlavor flavor)
+ {
+ return null;
+ }
+
+ // ClipboardOwner
+ private boolean lostOwnerCalled = false;
+ private Clipboard lostOwnerClipboard = null;
+ private Transferable lostOwnerTransferable = null;
+ public void lostOwnership(Clipboard clipboard, Transferable contents)
+ {
+ lostOwnerCalled = true;
+ lostOwnerClipboard = clipboard;
+ lostOwnerTransferable = contents;
+ }
+
+ // For debug readability
+ public String toString()
+ {
+ return "[name=" + getName() + "]";
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/Clipboard/clipboardFlavors.java b/gnu/testlet/java/awt/datatransfer/Clipboard/clipboardFlavors.java
new file mode 100644
index 00000000..0ac02e1e
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/Clipboard/clipboardFlavors.java
@@ -0,0 +1,326 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.datatransfer.Clipboard;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.datatransfer.*;
+import java.io.IOException;
+
+public class clipboardFlavors
+ extends Clipboard
+ implements Testlet, Transferable, ClipboardOwner, FlavorListener
+{
+
+ public clipboardFlavors()
+ {
+ super("mauve");
+ }
+
+ private clipboardFlavors(String name)
+ {
+ super(name);
+ }
+
+ private clipboardFlavors(String[] mimeTypes) throws ClassNotFoundException
+ {
+ this("mimeTypes.startingwith[" + mimeTypes[0] + "]");
+ transferDataFlavors = new DataFlavor[mimeTypes.length];
+ for (int i = 0; i < mimeTypes.length; i++)
+ transferDataFlavors[i] = new DataFlavor(mimeTypes[i]);
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ // Not much in a new empty Clipboard.
+ harness.checkPoint("empty");
+ DataFlavor[] flavors = this.getAvailableDataFlavors();
+ harness.check(flavors != null);
+ harness.check(flavors.length, 0);
+ harness.check(this.isDataFlavorAvailable(DataFlavor.imageFlavor),
+ false);
+ boolean exception_thrown = false;
+ try
+ {
+ Object o = this.getData(DataFlavor.imageFlavor);
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ FlavorListener[] listeners = this.getFlavorListeners();
+ harness.check(listeners != null);
+ harness.check(listeners.length, 0);
+ // Add ourselves as listener.
+ harness.checkPoint("Add self listener");
+ this.addFlavorListener(this);
+ listeners = this.getFlavorListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ // Remove a null listener.
+ harness.checkPoint("Remove null listener");
+ this.removeFlavorListener(null);
+ listeners = this.getFlavorListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ // Remove something never added.
+ harness.checkPoint("Remove non-existing listener");
+ this.removeFlavorListener(new clipboardFlavors("dummy-to-remove"));
+ listeners = this.getFlavorListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ // Remove ourselves.
+ harness.checkPoint("Remove self");
+ this.removeFlavorListener(this);
+ listeners = this.getFlavorListeners();
+ harness.check(listeners != null);
+ harness.check(listeners.length, 0);
+ // Remove ourselves again.
+ harness.checkPoint("Remove self again");
+ this.removeFlavorListener(this);
+ listeners = this.getFlavorListeners();
+ harness.check(listeners != null);
+ harness.check(listeners.length, 0);
+
+ // Put in some data and register us as owner
+ // and register us as listener.
+ harness.checkPoint("put in data");
+ this.setContents(new clipboardFlavors(new String[] {"x/z", "q/w"}),
+ this);
+ this.addFlavorListener(this);
+ flavors = getAvailableDataFlavors();
+ harness.check(flavors != null);
+ harness.check(flavors.length, 2);
+ harness.check(flavors[0].getMimeType().equals("x/z")
+ || flavors[1].getMimeType().equals("x/z"));
+ harness.check(flavors[0].getMimeType().equals("q/w")
+ || flavors[1].getMimeType().equals("q/w"));
+ harness.check(this.isDataFlavorAvailable(DataFlavor.imageFlavor),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("x/z")));
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("q/w")));
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(DataFlavor.imageFlavor);
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ harness.check(this.getData(new DataFlavor("x/z")), "x/z");
+ harness.check(this.getData(new DataFlavor("q/w")), "q/w");
+
+ // Change the contents with some different DataFlavors
+ harness.checkPoint("change contents");
+ this.setContents(new clipboardFlavors(new String[] {"a/b"}), this);
+ harness.check(this.flavorChangedCalled);
+ harness.check(this.flavorChangedEvent != null);
+ harness.check(this.flavorChangedEvent.getSource(), this);
+
+ flavors = getAvailableDataFlavors();
+ harness.check(flavors != null);
+ harness.check(flavors.length, 1);
+ harness.check(this.isDataFlavorAvailable(DataFlavor.imageFlavor),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("x/z")),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("q/w")),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("a/b")));
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(DataFlavor.imageFlavor);
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(new DataFlavor("x/z"));
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(new DataFlavor("q/w"));
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ harness.check(this.getData(new DataFlavor("a/b")), "a/b");
+
+ // Add some other listener and change the flavors again.
+ harness.checkPoint("other listener");
+ flavorChangedCalled = false;
+ flavorChangedEvent = null;
+ clipboardFlavors cf2 = new clipboardFlavors("cf2");
+ this.addFlavorListener(cf2);
+ this.setContents(new clipboardFlavors(new String[] {"a/b", "z/x"}),
+ this);
+ harness.check(this.flavorChangedCalled);
+ harness.check(this.flavorChangedEvent != null);
+ harness.check(this.flavorChangedEvent.getSource(), this);
+ harness.check(cf2.flavorChangedCalled);
+ harness.check(cf2.flavorChangedEvent != null);
+ harness.check(cf2.flavorChangedEvent.getSource(), this);
+
+ flavors = getAvailableDataFlavors();
+ harness.check(flavors != null);
+ harness.check(flavors.length, 2);
+ harness.check(flavors[0].getMimeType().equals("a/b")
+ || flavors[1].getMimeType().equals("a/b"));
+ harness.check(flavors[0].getMimeType().equals("z/x")
+ || flavors[1].getMimeType().equals("z/x"));
+ harness.check(this.isDataFlavorAvailable(DataFlavor.imageFlavor),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("x/z")),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("q/w")),
+ false);
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("a/b")));
+ harness.check(this.isDataFlavorAvailable(new DataFlavor("z/x")));
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(DataFlavor.imageFlavor);
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(new DataFlavor("x/z"));
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ exception_thrown = false;
+ try
+ {
+ Object o = this.getData(new DataFlavor("q/w"));
+ harness.debug("got data: " + o);
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ harness.check(this.getData(new DataFlavor("a/b")), "a/b");
+ harness.check(this.getData(new DataFlavor("z/x")), "z/x");
+ }
+ catch(IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ catch(ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ harness.check(false, cnfe.toString());
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ harness.debug(ufe);
+ harness.check(false, ufe.toString());
+ }
+ }
+
+ // Transferable
+ private DataFlavor[] transferDataFlavors;
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ return transferDataFlavors;
+ }
+
+ public boolean isDataFlavorSupported(DataFlavor flavor)
+ {
+ for (int i = 0; i < transferDataFlavors.length; i++)
+ if (flavor.equals(transferDataFlavors[i]))
+ return true;
+
+ return false;
+ }
+
+ public Object getTransferData(DataFlavor flavor)
+ throws UnsupportedFlavorException
+ {
+ // Cheat
+ if (isDataFlavorSupported(flavor))
+ return flavor.getMimeType();
+ else
+ throw new UnsupportedFlavorException(flavor);
+ }
+
+ // ClipboardOwner
+ private boolean lostOwnerCalled = false;
+ private Clipboard lostOwnerClipboard = null;
+ private Transferable lostOwnerTransferable = null;
+ public void lostOwnership(Clipboard clipboard, Transferable contents)
+ {
+ lostOwnerCalled = true;
+ lostOwnerClipboard = clipboard;
+ lostOwnerTransferable = contents;
+ }
+
+ // FlavorListener
+ private boolean flavorChangedCalled = false;
+ private FlavorEvent flavorChangedEvent = null;
+ public void flavorsChanged(FlavorEvent event)
+ {
+ flavorChangedCalled = true;
+ flavorChangedEvent = event;
+ }
+
+ // For debug readability
+ public String toString()
+ {
+ return "[name=" + getName() + "]";
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Entries b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Entries
new file mode 100644
index 00000000..c11208c6
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Entries
@@ -0,0 +1,4 @@
+/flavor.java/1.1/Fri Aug 5 17:05:05 2005//
+/readExternal.java/1.1/Mon Oct 30 13:08:04 2006//
+/writeExternal.java/1.1/Mon Oct 30 13:08:04 2006//
+D
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Repository b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Repository
new file mode 100644
index 00000000..57948724
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/datatransfer/DataFlavor
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Root b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/flavor.java b/gnu/testlet/java/awt/datatransfer/DataFlavor/flavor.java
new file mode 100644
index 00000000..90a26fbf
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/flavor.java
@@ -0,0 +1,234 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.datatransfer.DataFlavor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.datatransfer.*;
+import java.io.*;
+
+public class flavor implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // The static fields
+ DataFlavor df = DataFlavor.javaFileListFlavor;
+ String primaryType = "application";
+ String subType = "x-java-file-list";
+ Class representationClass = java.util.List.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+
+ df = DataFlavor.plainTextFlavor;
+ primaryType = "text";
+ subType = "plain";
+ String param = "charset";
+ String value = "unicode";
+ representationClass = java.io.InputStream.class;
+ checkFlavor(df, primaryType, subType, param, value, representationClass);
+
+ df = DataFlavor.stringFlavor;
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.lang.String.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+
+ try
+ {
+ df = new DataFlavor("image/jpeg");
+ primaryType = "image";
+ subType = "jpeg";
+ representationClass = java.io.InputStream.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "image/jpeg");
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ harness.check(false, cnfe.toString());
+ }
+
+ try
+ {
+ df = new DataFlavor("application/x-java-serialized-object"
+ + "; class=java.awt.Point");
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(),
+ "application/x-java-serialized-object"
+ + "; class=java.awt.Point");
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ harness.check(false, cnfe.toString());
+ }
+
+ df = new DataFlavor("application/x-java-serialized-object"
+ + "; class=java.awt.Point", "Point object");
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "Point object");
+
+ df = new DataFlavor("application/x-java-serialized-object"
+ + "; class=java.awt.Point", null);
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(),
+ "application/x-java-serialized-object"
+ + "; class=java.awt.Point");
+
+ df = new DataFlavor("image/jpeg", "JPEG image");
+ primaryType = "image";
+ subType = "jpeg";
+ representationClass = java.io.InputStream.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "JPEG image");
+
+ df = new DataFlavor("image/jpeg", null);
+ primaryType = "image";
+ subType = "jpeg";
+ representationClass = java.io.InputStream.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "image/jpeg");
+
+ try
+ {
+ df = new DataFlavor("application/x-java-serialized-object"
+ + "; class=java.awt.Point", "Point object",
+ ClassLoader.getSystemClassLoader());
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "Point object");
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ harness.check(false, cnfe.toString());
+ }
+
+ try
+ {
+ df = new DataFlavor("application/x-java-serialized-object"
+ + "; class=java.awt.Point", null,
+ ClassLoader.getSystemClassLoader());
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(),
+ "application/x-java-serialized-object"
+ + "; class=java.awt.Point");
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ harness.check(false, cnfe.toString());
+ }
+
+ df = new DataFlavor(java.awt.Point.class, "Point object");
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(), "Point object");
+
+ df = new DataFlavor(java.awt.Point.class, null);
+ primaryType = "application";
+ subType = "x-java-serialized-object";
+ representationClass = java.awt.Point.class;
+ checkFlavor(df, primaryType, subType, null, null, representationClass);
+ harness.check(df.getHumanPresentableName(),
+ "application/x-java-serialized-object"
+ + "; class=java.awt.Point");
+ }
+
+ private void checkFlavor(DataFlavor df, String primaryType,
+ String subType, String param, String value,
+ Class representationClass)
+ {
+ harness.checkPoint(df.toString());
+ harness.check(df.getPrimaryType(), primaryType);
+ harness.check(df.getSubType(), subType);
+ harness.check(df.getRepresentationClass(), representationClass);
+
+ boolean hasClassParam = subType.startsWith("x-java");
+ String mimeType = primaryType + "/" + subType;
+ if (hasClassParam)
+ mimeType += "; class=" + representationClass.getName();
+ if (param != null)
+ mimeType += "; " + param + "=" + value;
+ harness.check(df.getMimeType(), mimeType);
+
+ harness.check(df.isMimeTypeEqual(primaryType + "/" + subType));
+ try
+ {
+ harness.check(df.isMimeTypeEqual((DataFlavor) df.clone()));
+
+ harness.check(((DataFlavor) df.clone()).equals(df));
+ harness.check(df.equals((DataFlavor) df.clone()));
+ }
+ catch (CloneNotSupportedException cnse)
+ {
+ harness.debug(cnse);
+ harness.check(false, cnse.toString());
+ }
+
+ harness.check(df.getParameter("humanPresentableName"),
+ df.getHumanPresentableName());
+ if (hasClassParam)
+ harness.check(df.getParameter("class"), representationClass.getName());
+ else
+ harness.check(df.getParameter("class"), null);
+
+ if (param != null)
+ harness.check(df.getParameter(param), value);
+
+ harness.check(df.getParameter("NO-SUCH-PARAM"), null);
+
+ harness.check(df.isFlavorJavaFileListType(),
+ subType.equals("x-java-file-list"));
+ harness.check(df.isFlavorRemoteObjectType(),
+ subType.equals("x-java-remote-object"));
+ harness.check(df.isFlavorSerializedObjectType(),
+ subType.equals("x-java-serialized-object"));
+ harness.check(df.isRepresentationClassInputStream(),
+ java.io.InputStream.class.isAssignableFrom
+ (representationClass));
+ harness.check(df.isRepresentationClassRemote(),
+ java.rmi.Remote.class.isAssignableFrom
+ (representationClass));
+ harness.check(df.isRepresentationClassSerializable(),
+ java.io.Serializable.class.isAssignableFrom
+ (representationClass));
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/readExternal.java b/gnu/testlet/java/awt/datatransfer/DataFlavor/readExternal.java
new file mode 100644
index 00000000..abecb0c3
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/readExternal.java
@@ -0,0 +1,75 @@
+/* readExternal.java -- Tests DataFlavor.readExternal()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.datatransfer.DataFlavor;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests DataFlavor.readExternal().
+ */
+public class readExternal extends TestCase
+{
+ public void testBasicRead()
+ {
+ // Write out using writeExternal().
+ try
+ {
+ DataFlavor f = new DataFlavor("application/text; param1=xyz",
+ "Plain Text");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ f.writeExternal(oos);
+ ByteArrayInputStream bais =
+ new ByteArrayInputStream(baos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ DataFlavor read = new DataFlavor();
+ read.readExternal(ois);
+ assertEquals(f.getPrimaryType(), read.getPrimaryType());
+ assertEquals(f.getSubType(), read.getSubType());
+ assertEquals(f.getRepresentationClass(),
+ read.getRepresentationClass());
+ assertEquals(f.getHumanPresentableName(),
+ read.getHumanPresentableName());
+ assertEquals("xyz", read.getParameter("param1"));
+ assertNull(read.getParameter("humanPresentableName"));
+ assertEquals(f.getRepresentationClass().getName(),
+ read.getParameter("class"));
+ }
+ catch (IOException ex)
+ {
+ fail();
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail();
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/DataFlavor/writeExternal.java b/gnu/testlet/java/awt/datatransfer/DataFlavor/writeExternal.java
new file mode 100644
index 00000000..185c07ca
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/DataFlavor/writeExternal.java
@@ -0,0 +1,211 @@
+/* writeExternal.java -- Tests DataFlavor.writeExternal()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.datatransfer.DataFlavor;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the DataFlavor.writeExternal() method.
+ */
+public class writeExternal extends TestCase
+{
+
+ /**
+ * An ObjectOutput implementation suitable for testing.
+ */
+ private class TestObjectOutput
+ implements ObjectOutput
+ {
+
+ public void close() throws IOException
+ {
+ fail();
+ }
+
+ public void flush() throws IOException
+ {
+ fail();
+ }
+
+ public void write(int b) throws IOException
+ {
+ fail();
+ }
+
+ public void write(byte[] buf) throws IOException
+ {
+ fail();
+ }
+
+ public void write(byte[] buf, int offset, int len) throws IOException
+ {
+ fail();
+ }
+
+ public void writeObject(Object obj) throws IOException
+ {
+ writtenObjects.add(obj);
+ }
+
+ public void writeBoolean(boolean value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeByte(int value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeBytes(String value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeChar(int value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeChars(String value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeDouble(double value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeFloat(float value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeInt(int value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeLong(long value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeShort(int value) throws IOException
+ {
+ fail();
+ }
+
+ public void writeUTF(String value) throws IOException
+ {
+ writtenStrings.add(value);
+ }
+
+ }
+
+ /**
+ * The ObjectOutput for testing.
+ */
+ private TestObjectOutput output;
+
+ /**
+ * Written objects, if any.
+ */
+ private ArrayList writtenObjects;
+
+ /**
+ * Written strings, if any.
+ */
+ private ArrayList writtenStrings;
+
+ /**
+ * Sets up the test case.
+ */
+ public void setUp()
+ {
+ writtenObjects = new ArrayList();
+ writtenStrings = new ArrayList();
+ output = new TestObjectOutput();
+ }
+
+ /**
+ * Tears down the testcase.
+ */
+ public void tearDown()
+ {
+ writtenObjects = null;
+ writtenStrings = null;
+ output = null;
+ }
+
+ /**
+ * Tests a basic serialization.
+ */
+ public void testWriteBasic()
+ {
+ DataFlavor f = new DataFlavor("application/text; param1=xyz",
+ "Plain Text");
+ try
+ {
+ f.writeExternal(output);
+ }
+ catch (IOException ex)
+ {
+ fail();
+ }
+ // Two objects are effectivly written to the stream.
+ assertEquals(2, writtenObjects.size());
+ assertEquals(0, writtenStrings.size());
+ // The RI writes a non-public class to the ObjectOutput.
+ assertEquals("java.awt.datatransfer.MimeType",
+ writtenObjects.get(0).getClass().getName());
+ // And the representation class.
+ assertEquals("java.lang.Class", writtenObjects.get(1).getClass().getName());
+ assertSame(f.getRepresentationClass(), writtenObjects.get(1));
+
+ // Now check how the MimeType gets serialized.
+ Object o = writtenObjects.get(0);
+ writtenObjects.clear();
+ assertTrue(o instanceof Externalizable);
+ try
+ {
+ ((Externalizable) o).writeExternal(output);
+ }
+ catch (IOException ex)
+ {
+ fail();
+ }
+ assertEquals(0, writtenObjects.size());
+ assertEquals(1, writtenStrings.size());
+ assertEquals("application/text; class=java.io.InputStream; param1=xyz",
+ writtenStrings.get(0));
+ }
+}
diff --git a/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Entries b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Entries
new file mode 100644
index 00000000..272dc194
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Entries
@@ -0,0 +1,2 @@
+/selection.java/1.1/Fri Aug 5 17:05:05 2005//
+D
diff --git a/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Repository b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Repository
new file mode 100644
index 00000000..abc065cc
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/datatransfer/StringSelection
diff --git a/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Root b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/StringSelection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/datatransfer/StringSelection/selection.java b/gnu/testlet/java/awt/datatransfer/StringSelection/selection.java
new file mode 100644
index 00000000..d0611cb6
--- /dev/null
+++ b/gnu/testlet/java/awt/datatransfer/StringSelection/selection.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.datatransfer.StringSelection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.datatransfer.*;
+import java.io.*;
+
+public class selection implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ String testString = "Mauve test data string";
+ StringSelection ss = new StringSelection(testString);
+
+ harness.check(ss.isDataFlavorSupported(DataFlavor.stringFlavor));
+ harness.check(ss.isDataFlavorSupported(DataFlavor.plainTextFlavor));
+ harness.check(!ss.isDataFlavorSupported(DataFlavor.imageFlavor));
+
+ DataFlavor[] dfs = ss.getTransferDataFlavors();
+ harness.check(dfs.length, 2);
+ harness.check(dfs[0].equals(DataFlavor.stringFlavor)
+ || dfs[0].equals(DataFlavor.plainTextFlavor));
+ harness.check(dfs[1].equals(DataFlavor.stringFlavor)
+ || dfs[1].equals(DataFlavor.plainTextFlavor));
+
+ String s = (String) ss.getTransferData(DataFlavor.stringFlavor);
+ harness.check(s, testString);
+
+ // Note that this described in the literature (e.g. Flanagan,
+ // Nutshell) as how a StringSelection actually works. Returning a
+ // Reader here is of course wrong for a plainTextFlavor, but this
+ // is what applications expect.
+ Reader r = (Reader) ss.getTransferData(DataFlavor.plainTextFlavor);
+ StringBuffer sb = new StringBuffer();
+ int i = r.read();
+ while (i != -1)
+ {
+ sb.append((char) i);
+ i = r.read();
+ }
+ harness.check(sb.toString(), testString);
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ catch(UnsupportedFlavorException ufe)
+ {
+ harness.debug(ufe);
+ harness.check(false, ufe.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/CVS/Entries b/gnu/testlet/java/awt/dnd/CVS/Entries
new file mode 100644
index 00000000..d89dd59c
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/CVS/Entries
@@ -0,0 +1,2 @@
+/DnDTest.java/1.4/Tue Aug 15 15:38:39 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/CVS/Entries.Log b/gnu/testlet/java/awt/dnd/CVS/Entries.Log
new file mode 100644
index 00000000..d684dc6b
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/DragGestureRecognizer////
+A D/DragSource////
+A D/DragSourceContext////
+A D/DropTarget////
+A D/DropTargetContext////
+A D/DropTargetDragEvent////
+A D/DropTargetDropEvent////
diff --git a/gnu/testlet/java/awt/dnd/CVS/Repository b/gnu/testlet/java/awt/dnd/CVS/Repository
new file mode 100644
index 00000000..0900a5b4
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd
diff --git a/gnu/testlet/java/awt/dnd/CVS/Root b/gnu/testlet/java/awt/dnd/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DnDTest.java b/gnu/testlet/java/awt/dnd/DnDTest.java
new file mode 100644
index 00000000..ac76ae19
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DnDTest.java
@@ -0,0 +1,335 @@
+/* DnDTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+
+package gnu.testlet.java.awt.dnd;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceContext;
+import java.awt.dnd.DragSourceDragEvent;
+import java.awt.dnd.DragSourceDropEvent;
+import java.awt.dnd.DragSourceEvent;
+import java.awt.dnd.DragSourceListener;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.dnd.InvalidDnDOperationException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+
+public class DnDTest
+ implements Testlet
+{
+ TestHarness harness;
+ Robot r;
+
+ boolean unsuccessful;
+ boolean dragGestRec;
+ boolean dragEnter;
+ boolean dragEnterTar;
+ boolean dragOver;
+ boolean dragOverTar;
+ boolean drop;
+ boolean finished;
+ boolean actionPerformed;
+ boolean dragExit;
+ boolean dropActionChanged;
+ boolean dragExitTar;
+ boolean dropActionChangedTar;
+
+ public synchronized void test(TestHarness h)
+ {
+ harness = h;
+ r = harness.createRobot ();
+
+ new MainClass("");
+ }
+
+ class MainClass
+ extends Frame
+ implements ActionListener, DropTargetListener
+ {
+ MouseThread mt;
+ int start;
+ int end;
+ DragLabel source = new DragLabel("Drag and drop me to the following Button",
+ Label.CENTER);
+ Button target = new Button();
+
+ public MainClass(String title)
+ {
+ super(title);
+ source.setForeground(Color.red);
+ add(source, BorderLayout.NORTH);
+
+ target.addActionListener(this);
+ add(target, BorderLayout.SOUTH);
+
+ new DropTarget(target, DnDConstants.ACTION_COPY_OR_MOVE, this);
+ setSize(205, 100);
+ setVisible(true);
+
+ r.waitForIdle();
+ r.delay (1000);
+
+ doDnD();
+
+ r.delay(3000);
+
+ harness.check(!unsuccessful);
+ harness.check(finished);
+ harness.check(dragGestRec);
+ harness.check(dragEnter);
+ harness.check(dragEnterTar);
+ harness.check(dragOver);
+ harness.check(dragOverTar);
+ harness.check(drop);
+ harness.check(!actionPerformed);
+ harness.check(!dragExit);
+ harness.check(!dropActionChanged);
+ harness.check(!dragExitTar);
+ harness.check(!dropActionChangedTar);
+ }
+
+ void doDnD()
+ {
+ Point sLoc = source.getLocationOnScreen();
+ Rectangle sSize = source.getBounds();
+
+ Point tLoc = target.getLocationOnScreen();
+ Rectangle tSize = target.getBounds();
+
+ // To focus the window
+ r.mouseMove(sLoc.x + sSize.width/2, sLoc.y + sSize.height/2);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+
+ // drag and drop
+ r.delay(1000);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay(1000);
+ r.mouseMove(tLoc.x + tSize.width/2, tLoc.y + tSize.height/2);
+
+ start = tLoc.y + tSize.height/2;
+ end = start + 5;
+
+ mt = new MouseThread();
+ mt.start();
+
+ r.delay(1000);
+ mt.shouldStop=true;
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ }
+
+ class MouseThread
+ extends Thread
+ {
+ public boolean shouldStop;
+
+ public void run()
+ {
+ try
+ {
+ shouldStop = false;
+ Robot robot = new Robot();
+
+ for (;;)
+ {
+ for (int i = start; i < end; i++)
+ {
+ if (shouldStop)
+ break;
+
+ robot.mouseMove(150, i);
+ yield();
+ }
+ for (int i = end; i > start; i--)
+ {
+ if (shouldStop)
+ break;
+
+ robot.mouseMove(150, i);
+ yield();
+ }
+ if (shouldStop)
+ break;
+ }
+ }
+ catch (Exception e)
+ {
+ unsuccessful = true;
+ }
+ }
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ Button b = (Button) e.getSource();
+ b.setLabel("");
+ source.setText("Drag and drop me to the following Button");
+ actionPerformed = true;
+ }
+
+ public void dragEnter(DropTargetDragEvent e)
+ {
+ dragEnter = true;
+ }
+
+ public void dragExit(DropTargetEvent e)
+ {
+ dragExit = true;
+ }
+
+ public void dragOver(DropTargetDragEvent e)
+ {
+ dragOver = true;
+ }
+
+ public void drop(DropTargetDropEvent e)
+ {
+ drop = true;
+ try
+ {
+ Transferable t = e.getTransferable();
+
+ if (e.isDataFlavorSupported(DataFlavor.stringFlavor))
+ {
+ e.acceptDrop(e.getDropAction());
+
+ String s;
+ s = (String) t.getTransferData(DataFlavor.stringFlavor);
+
+ target.setLabel(s);
+
+ e.dropComplete(true);
+ }
+ else
+ {
+ unsuccessful = true;
+ e.rejectDrop();
+ }
+ }
+ catch (java.io.IOException e2)
+ {
+ unsuccessful = true;
+ }
+ catch (UnsupportedFlavorException e2)
+ {
+ unsuccessful = true;
+ }
+ }
+
+ public void dropActionChanged(DropTargetDragEvent e)
+ {
+ dropActionChanged = true;
+ }
+ }
+
+ class DragLabel
+ extends Label
+ implements DragGestureListener, DragSourceListener
+ {
+ private DragSource ds = DragSource.getDefaultDragSource();
+
+ public DragLabel(String s, int alignment)
+ {
+ super(s, alignment);
+ int action = DnDConstants.ACTION_COPY_OR_MOVE;
+ ds.createDefaultDragGestureRecognizer(this, action, this);
+ }
+
+ public void dragGestureRecognized(DragGestureEvent e)
+ {
+ try
+ {
+ Transferable t = new StringSelection(getText());
+ e.startDrag(DragSource.DefaultCopyNoDrop, t, this);
+ dragGestRec = true;
+ }
+ catch (InvalidDnDOperationException e2)
+ {
+ unsuccessful = true;
+ }
+ }
+
+ public void dragDropEnd(DragSourceDropEvent e)
+ {
+ if (e.getDropSuccess() == false)
+ {
+ unsuccessful = true;
+ return;
+ }
+
+ int action = e.getDropAction();
+ if ((action & DnDConstants.ACTION_MOVE) != 0)
+ setText("");
+ finished = true;
+ }
+
+ public void dragEnter(DragSourceDragEvent e)
+ {
+ dragEnterTar = true;
+ DragSourceContext ctx = e.getDragSourceContext();
+
+ int action = e.getDropAction();
+ if ((action & DnDConstants.ACTION_COPY) != 0)
+ ctx.setCursor(DragSource.DefaultCopyDrop);
+ else
+ ctx.setCursor(DragSource.DefaultCopyNoDrop);
+ }
+
+ public void dragExit(DragSourceEvent e)
+ {
+ dragExitTar = true;
+ }
+
+ public void dragOver(DragSourceDragEvent e)
+ {
+ dragOverTar = true;
+ }
+
+ public void dropActionChanged(DragSourceDragEvent e)
+ {
+ dropActionChangedTar = true;
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Entries b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Entries
new file mode 100644
index 00000000..f54a7d5b
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Entries
@@ -0,0 +1,2 @@
+/resetRecognizer.java/1.1/Mon Oct 30 15:30:16 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Repository b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Repository
new file mode 100644
index 00000000..d4e68860
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DragGestureRecognizer
diff --git a/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Root b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DragGestureRecognizer/resetRecognizer.java b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/resetRecognizer.java
new file mode 100644
index 00000000..bcc47578
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragGestureRecognizer/resetRecognizer.java
@@ -0,0 +1,123 @@
+/* resetRecognizer.java -- Tests DragGestureRecognizer.resetRecognizer()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.dnd.DragGestureRecognizer;
+
+import java.awt.Component;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragGestureRecognizer;
+import java.awt.dnd.DragSource;
+import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests DragGestureRecognizer.resetRecognizer().
+ */
+public class resetRecognizer extends TestCase
+{
+
+ static class TestRecognizer
+ extends DragGestureRecognizer
+ {
+
+ protected TestRecognizer(DragSource s, Component c, int sa,
+ DragGestureListener l)
+ {
+ super(s, c, sa, l);
+ }
+
+ protected void registerListeners()
+ {
+ }
+
+ protected void unregisterListeners()
+ {
+ }
+
+ Component getFieldComponent()
+ {
+ return component;
+ }
+ DragGestureListener getFieldDragGestureListener()
+ {
+ return dragGestureListener;
+ }
+ DragSource getFieldDragSource()
+ {
+ return dragSource;
+ }
+ ArrayList getFieldEvents()
+ {
+ return events;
+ }
+ int getFieldSourceActions()
+ {
+ return sourceActions;
+ }
+ }
+
+ /**
+ * Checks the state of the class before and after a call to
+ * resetRecognizer().
+ */
+ public void testSimple()
+ {
+ DragSource s = new DragSource();
+ Component c = new Component(){};
+ DragGestureListener l = new DragGestureListener()
+ {
+
+ public void dragGestureRecognized(DragGestureEvent e)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ };
+ TestRecognizer rec = new TestRecognizer(s, c, DnDConstants.ACTION_MOVE, l);
+ assertEquals(s, rec.getFieldDragSource());
+ assertEquals(c, rec.getFieldComponent());
+ assertEquals(l, rec.getFieldDragGestureListener());
+ assertEquals(DnDConstants.ACTION_MOVE, rec.getFieldSourceActions());
+
+ ArrayList ev = rec.getFieldEvents();
+ ev.add(new MouseEvent(c, MouseEvent.MOUSE_DRAGGED,
+ System.currentTimeMillis(), MouseEvent.ALT_DOWN_MASK,
+ 10, 20, 1, false));
+ ev.add(new MouseEvent(c, MouseEvent.MOUSE_DRAGGED,
+ System.currentTimeMillis(), MouseEvent.ALT_DOWN_MASK,
+ 10, 20, 1, false));
+ assertEquals(2, ev.size());
+ rec.resetRecognizer();
+ assertSame(ev, rec.getFieldEvents());
+ assertEquals(0, ev.size());
+ assertEquals(s, rec.getFieldDragSource());
+ assertEquals(c, rec.getFieldComponent());
+ assertEquals(l, rec.getFieldDragGestureListener());
+ assertEquals(DnDConstants.ACTION_MOVE, rec.getFieldSourceActions());
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSource/CVS/Entries b/gnu/testlet/java/awt/dnd/DragSource/CVS/Entries
new file mode 100644
index 00000000..18dc4c30
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/CVS/Entries
@@ -0,0 +1,6 @@
+/Constructors.java/1.1/Wed Aug 2 20:01:24 2006//
+/CreateDragGestureRecognizerTest.java/1.1/Wed Aug 2 20:01:24 2006//
+/FlavourMapTest.java/1.1/Wed Aug 2 20:01:24 2006//
+/getDragThresholdTest.java/1.1/Wed Aug 2 20:01:24 2006//
+/isDragImageSupportedTest.java/1.1/Wed Aug 2 20:01:24 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DragSource/CVS/Repository b/gnu/testlet/java/awt/dnd/DragSource/CVS/Repository
new file mode 100644
index 00000000..798196ee
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DragSource
diff --git a/gnu/testlet/java/awt/dnd/DragSource/CVS/Root b/gnu/testlet/java/awt/dnd/DragSource/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DragSource/Constructors.java b/gnu/testlet/java/awt/dnd/DragSource/Constructors.java
new file mode 100644
index 00000000..60557042
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/Constructors.java
@@ -0,0 +1,48 @@
+/* Constructors.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DragSource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.HeadlessException;
+import java.awt.dnd.DragSource;
+
+public class Constructors implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ boolean caught = false;
+ try
+ {
+ DragSource ds = new DragSource();
+ h.check(!ds.equals(DragSource.getDefaultDragSource()));
+ }
+ catch (HeadlessException he)
+ {
+ caught = true;
+ }
+
+ h.check(!caught);
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSource/CreateDragGestureRecognizerTest.java b/gnu/testlet/java/awt/dnd/DragSource/CreateDragGestureRecognizerTest.java
new file mode 100644
index 00000000..f10bc259
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/CreateDragGestureRecognizerTest.java
@@ -0,0 +1,44 @@
+/* CreateDragGestureRecognizerTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DragSource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Label;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureRecognizer;
+import java.awt.dnd.DragSource;
+
+public class CreateDragGestureRecognizerTest implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ DragSource ds = new DragSource();
+
+ DragGestureRecognizer dgr =
+ ds.createDefaultDragGestureRecognizer(
+ new Label("label"), DnDConstants.ACTION_COPY, null);
+ h.check(dgr != null);
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSource/FlavourMapTest.java b/gnu/testlet/java/awt/dnd/DragSource/FlavourMapTest.java
new file mode 100644
index 00000000..58f5063a
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/FlavourMapTest.java
@@ -0,0 +1,38 @@
+/* FlavourMapTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DragSource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.datatransfer.SystemFlavorMap;
+import java.awt.dnd.DragSource;
+
+public class FlavourMapTest implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ DragSource ds = new DragSource();
+ h.check((ds.getFlavorMap() instanceof SystemFlavorMap));
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSource/getDragThresholdTest.java b/gnu/testlet/java/awt/dnd/DragSource/getDragThresholdTest.java
new file mode 100644
index 00000000..85be0a0e
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/getDragThresholdTest.java
@@ -0,0 +1,38 @@
+/* getDragThresholdTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.5
+
+package gnu.testlet.java.awt.dnd.DragSource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.dnd.DragSource;
+
+public class getDragThresholdTest implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ h.check(DragSource.getDragThreshold() == 8);
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSource/isDragImageSupportedTest.java b/gnu/testlet/java/awt/dnd/DragSource/isDragImageSupportedTest.java
new file mode 100644
index 00000000..84f8b035
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSource/isDragImageSupportedTest.java
@@ -0,0 +1,36 @@
+/* isDragImageSupportedTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DragSource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.dnd.DragSource;
+
+public class isDragImageSupportedTest implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ h.check(!DragSource.isDragImageSupported());
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Entries b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Entries
new file mode 100644
index 00000000..822c0ba3
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Entries
@@ -0,0 +1,2 @@
+/Constructor.java/1.1/Thu Aug 10 15:12:18 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Repository b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Repository
new file mode 100644
index 00000000..fdaac0e2
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DragSourceContext
diff --git a/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Root b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSourceContext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DragSourceContext/Constructor.java b/gnu/testlet/java/awt/dnd/DragSourceContext/Constructor.java
new file mode 100644
index 00000000..00a703c1
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DragSourceContext/Constructor.java
@@ -0,0 +1,186 @@
+/* Constructor.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DragSourceContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Point;
+import java.awt.Toolkit;
+import java.awt.datatransfer.StringSelection;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureRecognizer;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceContext;
+import java.awt.dnd.peer.DragSourceContextPeer;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+
+
+public class Constructor implements Testlet
+{
+ TestHarness harness;
+ DragGestureEvent trigger = null;
+ DragSourceContextPeer peer = null;
+ Cursor cur = Cursor.getDefaultCursor();
+ StringSelection ss = new StringSelection("data");
+ boolean caught = false;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ testNPE();
+ testIllegalArgumentException();
+ }
+
+ void testNPE()
+ {
+ try
+ {
+ new DragSourceContext(null, null, null, null, null, null, null);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ harness.check(caught);
+ caught = false;
+
+ try
+ {
+ trigger = new DragGestureEvent(new DGR(), DnDConstants.ACTION_COPY,
+ new Point(), new ArrayList());
+ peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
+ new DragSourceContext(peer, trigger, cur, null, null, ss, null);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ }
+ harness.check(!caught);
+ caught = false;
+
+ try
+ {
+ new DragSourceContext(peer, trigger, cur,
+ new BufferedImage(50, 50,
+ BufferedImage.TYPE_3BYTE_BGR),
+ null, ss, null);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ harness.check(caught);
+ caught = false;
+ }
+
+ void testIllegalArgumentException()
+ {
+ try
+ {
+ DGR dgr = new DGR();
+ dgr.setComponent(null);
+ trigger = new DragGestureEvent(dgr, DnDConstants.ACTION_COPY,
+ new Point(), new ArrayList());
+ peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
+ new DragSourceContext(peer, trigger, cur,
+ new BufferedImage(50, 50,
+ BufferedImage.TYPE_3BYTE_BGR),
+ new Point(), ss, null);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ harness.check(caught);
+ caught = false;
+
+ try
+ {
+ DGR dgr = new DGR(null);
+ trigger = new DragGestureEvent(dgr, DnDConstants.ACTION_COPY,
+ new Point(), new ArrayList());
+ peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
+ new DragSourceContext(peer, trigger, cur,
+ new BufferedImage(50, 50,
+ BufferedImage.TYPE_3BYTE_BGR),
+ new Point(), ss, null);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ harness.check(caught);
+ caught = false;
+
+ try
+ {
+ DGR dgr = new DGR();
+ trigger = new DragGestureEvent(dgr, DnDConstants.ACTION_NONE,
+ new Point(), new ArrayList());
+ peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
+ new DragSourceContext(peer, trigger, cur,
+ new BufferedImage(50, 50,
+ BufferedImage.TYPE_3BYTE_BGR),
+ new Point(), ss, null);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ harness.check(caught);
+ caught = false;
+ }
+
+ class DGR extends DragGestureRecognizer
+ {
+ public DGR()
+ {
+ super(new DragSource());
+ }
+
+ public DGR(DragSource ds)
+ {
+ super(ds);
+ }
+
+ public void setComponent(Component c)
+ {
+ super.component = c;
+ }
+
+ public void registerListeners()
+ {
+ }
+
+ public void unregisterListeners()
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DropTarget/CVS/Entries b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Entries
new file mode 100644
index 00000000..f224e737
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Entries
@@ -0,0 +1,2 @@
+/Constructors.java/1.1/Wed Aug 2 20:01:24 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DropTarget/CVS/Repository b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Repository
new file mode 100644
index 00000000..41212c6a
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DropTarget
diff --git a/gnu/testlet/java/awt/dnd/DropTarget/CVS/Root b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTarget/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DropTarget/Constructors.java b/gnu/testlet/java/awt/dnd/DropTarget/Constructors.java
new file mode 100644
index 00000000..96f282eb
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTarget/Constructors.java
@@ -0,0 +1,232 @@
+/* Constructors.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DropTarget;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.datatransfer.FlavorMap;
+import java.awt.datatransfer.SystemFlavorMap;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTarget;
+import java.util.TooManyListenersException;
+
+public class Constructors implements Testlet
+{
+ TestHarness h;
+ boolean caught = false;
+ DropTarget dt;
+ DropTarget oldDt;
+ FlavorMap fm;
+ Button b = new Button();
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testNoParam();
+ testTwoParams();
+ testThreeParams();
+ testFourParams();
+ testFiveParams();
+ }
+
+ public void testNoParam()
+ {
+ dt = new DropTarget();
+ oldDt = dt;
+ h.check(dt.getComponent() == null);
+ h.check(dt.getDefaultActions() == DnDConstants.ACTION_COPY_OR_MOVE);
+
+ try
+ {
+ dt.addDropTargetListener(null);
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = true;
+ }
+
+ h.check(!caught);
+ h.check(dt.isActive());
+
+ fm = dt.getFlavorMap();
+ h.check(fm != null);
+ h.check((fm instanceof SystemFlavorMap));
+
+ caught = false;
+ }
+
+ public void testTwoParams()
+ {
+ dt = new DropTarget(b, oldDt);
+ h.check(dt.getComponent().equals(b));
+ h.check(dt.getDefaultActions() == DnDConstants.ACTION_COPY_OR_MOVE);
+
+ try
+ {
+ dt.addDropTargetListener(dt);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = false;
+ }
+ h.check(caught);
+ caught = false;
+
+ try
+ {
+ dt.addDropTargetListener(oldDt);
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ caught = false;
+
+ h.check(dt.isActive());
+
+ fm = dt.getFlavorMap();
+ h.check(fm != null);
+ h.check((fm instanceof SystemFlavorMap));
+ }
+
+ public void testThreeParams()
+ {
+ dt = new DropTarget(b, DnDConstants.ACTION_COPY_OR_MOVE, oldDt);
+ h.check(dt.getComponent().equals(b));
+ h.check(dt.getDefaultActions() == DnDConstants.ACTION_COPY_OR_MOVE);
+
+ try
+ {
+ dt.addDropTargetListener(dt);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = false;
+ }
+ h.check(caught);
+ caught = false;
+
+ try
+ {
+ dt.addDropTargetListener(oldDt);
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ caught = false;
+
+ h.check(dt.isActive());
+
+ fm = dt.getFlavorMap();
+ h.check(fm != null);
+ h.check((fm instanceof SystemFlavorMap));
+ }
+
+ public void testFourParams()
+ {
+ dt = new DropTarget(b, DnDConstants.ACTION_COPY_OR_MOVE, oldDt, false);
+ h.check(dt.getComponent().equals(b));
+ h.check(dt.getDefaultActions() == DnDConstants.ACTION_COPY_OR_MOVE);
+
+ try
+ {
+ dt.addDropTargetListener(dt);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = false;
+ }
+ h.check(caught);
+ caught = false;
+
+ try
+ {
+ dt.addDropTargetListener(oldDt);
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ caught = false;
+
+ h.check(!dt.isActive());
+
+ fm = dt.getFlavorMap();
+ h.check(fm != null);
+ h.check((fm instanceof SystemFlavorMap));
+ }
+
+ public void testFiveParams()
+ {
+ fm = SystemFlavorMap.getDefaultFlavorMap();
+ dt = new DropTarget(b, DnDConstants.ACTION_COPY_OR_MOVE, oldDt, false, fm);
+ h.check(dt.getComponent().equals(b));
+ h.check(dt.getDefaultActions() == DnDConstants.ACTION_COPY_OR_MOVE);
+
+ try
+ {
+ dt.addDropTargetListener(dt);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = false;
+ }
+ h.check(caught);
+ caught = false;
+
+ try
+ {
+ dt.addDropTargetListener(oldDt);
+ }
+ catch (TooManyListenersException tmle)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ caught = false;
+
+ h.check(!dt.isActive());
+ h.check(dt.getFlavorMap().equals(fm));
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Entries b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Entries
new file mode 100644
index 00000000..3c93b230
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Entries
@@ -0,0 +1,2 @@
+/DropTargetContextTest.java/1.1/Thu Aug 10 19:50:34 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Repository b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Repository
new file mode 100644
index 00000000..bba248a3
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DropTargetContext
diff --git a/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Root b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetContext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DropTargetContext/DropTargetContextTest.java b/gnu/testlet/java/awt/dnd/DropTargetContext/DropTargetContextTest.java
new file mode 100644
index 00000000..c30a14df
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetContext/DropTargetContextTest.java
@@ -0,0 +1,43 @@
+/* DropTargetContextTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DropTargetContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetContext;
+
+public class DropTargetContextTest implements Testlet
+{
+ Button b = new Button("button");
+ DropTarget dt = new DropTarget(b, null);
+
+ public void test(TestHarness h)
+ {
+ DropTargetContext dtc = dt.getDropTargetContext();
+
+ h.check(dt, dtc.getDropTarget());
+ h.check(b, dtc.getComponent());
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Entries b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Entries
new file mode 100644
index 00000000..1a29afeb
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Entries
@@ -0,0 +1,2 @@
+/Constructors.java/1.1/Tue Aug 15 20:33:09 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Repository b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Repository
new file mode 100644
index 00000000..70a2f5bd
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DropTargetDragEvent
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Root b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDragEvent/Constructors.java b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/Constructors.java
new file mode 100644
index 00000000..f1928cc4
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDragEvent/Constructors.java
@@ -0,0 +1,113 @@
+/* Constructors.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.java.awt.dnd.DropTargetDragEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Point;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetContext;
+import java.awt.dnd.DropTargetDragEvent;
+
+public class Constructors
+ implements Testlet
+{
+ Button b = new Button("button");
+ DropTarget dt = new DropTarget(b, null);
+ DropTargetContext dtc = dt.getDropTargetContext();
+ Point loc = new Point();
+ boolean caught;
+
+ public synchronized void test(TestHarness h)
+ {
+ testNullLoc(h);
+ testDropAction(h);
+ testSrcAction(h);
+ testNormal(h);
+ }
+
+ void testNullLoc(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDragEvent(dtc, null, DnDConstants.ACTION_COPY,
+ DnDConstants.ACTION_COPY);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testDropAction(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDragEvent(dtc, loc, 4, DnDConstants.ACTION_COPY);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testSrcAction(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDragEvent(dtc, loc, DnDConstants.ACTION_COPY, 4);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testNormal(TestHarness h)
+ {
+ caught = false;
+ DropTargetDragEvent dtde = null;
+ try
+ {
+ dtde = new DropTargetDragEvent(dtc, loc, DnDConstants.ACTION_COPY,
+ DnDConstants.ACTION_COPY);
+ }
+ catch (Exception e)
+ {
+ caught = true;
+ }
+
+ h.check(!caught);
+ h.check(dtde != null && dtde.getDropAction() == DnDConstants.ACTION_COPY);
+ h.check(dtde != null && dtde.getSourceActions() == DnDConstants.ACTION_COPY);
+ h.check(dtde != null && dtde.getLocation().equals(loc));
+ }
+}
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Entries b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Entries
new file mode 100644
index 00000000..d9a629ec
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Entries
@@ -0,0 +1,2 @@
+/Constructors.java/1.1/Thu Aug 17 15:19:22 2006//
+D
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Repository b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Repository
new file mode 100644
index 00000000..de27b217
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/dnd/DropTargetDropEvent
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Root b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/dnd/DropTargetDropEvent/Constructors.java b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/Constructors.java
new file mode 100644
index 00000000..bf75ac45
--- /dev/null
+++ b/gnu/testlet/java/awt/dnd/DropTargetDropEvent/Constructors.java
@@ -0,0 +1,116 @@
+/* Constructors.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: FIXME
+
+package gnu.testlet.java.awt.dnd.DropTargetDropEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Button;
+import java.awt.Point;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetContext;
+import java.awt.dnd.DropTargetDropEvent;
+
+public class Constructors
+ implements Testlet
+{
+ Button b = new Button("button");
+ DropTarget dt = new DropTarget(b, null);
+ DropTargetContext dtc = dt.getDropTargetContext();
+ Point loc = new Point();
+ boolean caught;
+
+ public synchronized void test(TestHarness h)
+ {
+ testNullLoc(h);
+ testDropAction(h);
+ testSrcAction(h);
+ testNormal(h);
+ }
+
+ void testNullLoc(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDropEvent(dtc, null, DnDConstants.ACTION_COPY,
+ DnDConstants.ACTION_COPY, false);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testDropAction(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDropEvent(dtc, loc, 4, DnDConstants.ACTION_COPY, false);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testSrcAction(TestHarness h)
+ {
+ caught = false;
+ try
+ {
+ new DropTargetDropEvent(dtc, loc, DnDConstants.ACTION_COPY, 4,false);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ caught = true;
+ }
+ h.check(caught);
+ }
+
+ void testNormal(TestHarness h)
+ {
+ caught = false;
+ DropTargetDropEvent dtde = null;
+ try
+ {
+ dtde = new DropTargetDropEvent(dtc, loc, DnDConstants.ACTION_COPY,
+ DnDConstants.ACTION_COPY, true);
+ }
+ catch (Exception e)
+ {
+ caught = true;
+ }
+
+ h.check(!caught);
+ h.check(dtde != null && dtde.getDropAction() == DnDConstants.ACTION_COPY);
+ h.check(dtde != null && dtde.getSourceActions() == DnDConstants.ACTION_COPY);
+ h.check(dtde != null && dtde.getLocation().equals(loc));
+ h.check(dtde != null && dtde.isLocalTransfer());
+ }
+}
diff --git a/gnu/testlet/java/awt/event/CVS/Entries b/gnu/testlet/java/awt/event/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/event/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/event/CVS/Entries.Log b/gnu/testlet/java/awt/event/CVS/Entries.Log
new file mode 100644
index 00000000..8ab8002b
--- /dev/null
+++ b/gnu/testlet/java/awt/event/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/ComponentEvent////
+A D/MouseEvent////
diff --git a/gnu/testlet/java/awt/event/CVS/Repository b/gnu/testlet/java/awt/event/CVS/Repository
new file mode 100644
index 00000000..3cd21700
--- /dev/null
+++ b/gnu/testlet/java/awt/event/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/event
diff --git a/gnu/testlet/java/awt/event/CVS/Root b/gnu/testlet/java/awt/event/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/event/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/event/ComponentEvent/CVS/Entries b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Entries
new file mode 100644
index 00000000..28cf8822
--- /dev/null
+++ b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Entries
@@ -0,0 +1,2 @@
+/paramString.java/1.2/Fri Nov 3 15:18:39 2006//
+D
diff --git a/gnu/testlet/java/awt/event/ComponentEvent/CVS/Repository b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Repository
new file mode 100644
index 00000000..3d9297b6
--- /dev/null
+++ b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/event/ComponentEvent
diff --git a/gnu/testlet/java/awt/event/ComponentEvent/CVS/Root b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/event/ComponentEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/event/ComponentEvent/paramString.java b/gnu/testlet/java/awt/event/ComponentEvent/paramString.java
new file mode 100644
index 00000000..4e75f0c6
--- /dev/null
+++ b/gnu/testlet/java/awt/event/ComponentEvent/paramString.java
@@ -0,0 +1,55 @@
+/* paramString.java
+ Copyright (C) 2006 RedHat
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.awt.event.ComponentEvent;
+
+import java.awt.Button;
+import java.awt.event.ComponentEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class paramString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Button button = new Button();
+ ComponentEvent event = new ComponentEvent(button,
+ ComponentEvent.COMPONENT_MOVED);
+
+ // Check that previous code produced incorrect string representation.
+ harness.check(! event.paramString().equalsIgnoreCase(
+ "COMPONENT_MOVED java.awt.Rectangle[x=0,y=0,width=0,height=0]"));
+
+ // Check that current code produces correct string representation.
+ harness.check(event.paramString(), "COMPONENT_MOVED (0,0 0x0)");
+
+ // Check that correct string representation is returned when
+ // an invalid event ID is given.
+ event = new ComponentEvent(button, ComponentEvent.COMPONENT_MOVED + 1024);
+ harness.check(event.paramString(), "unknown type");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/event/MouseEvent/CVS/Entries b/gnu/testlet/java/awt/event/MouseEvent/CVS/Entries
new file mode 100644
index 00000000..40971590
--- /dev/null
+++ b/gnu/testlet/java/awt/event/MouseEvent/CVS/Entries
@@ -0,0 +1,3 @@
+/modifiers.java/1.1/Sun Sep 11 22:34:34 2005//
+/modifiersEx.java/1.2/Sun Sep 11 22:34:34 2005//
+D
diff --git a/gnu/testlet/java/awt/event/MouseEvent/CVS/Repository b/gnu/testlet/java/awt/event/MouseEvent/CVS/Repository
new file mode 100644
index 00000000..fbf0ab4f
--- /dev/null
+++ b/gnu/testlet/java/awt/event/MouseEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/event/MouseEvent
diff --git a/gnu/testlet/java/awt/event/MouseEvent/CVS/Root b/gnu/testlet/java/awt/event/MouseEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/event/MouseEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/event/MouseEvent/modifiers.java b/gnu/testlet/java/awt/event/MouseEvent/modifiers.java
new file mode 100644
index 00000000..50937b0d
--- /dev/null
+++ b/gnu/testlet/java/awt/event/MouseEvent/modifiers.java
@@ -0,0 +1,280 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.java.awt.event.MouseEvent;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Frame;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
+
+/**
+ * Checks if a click does trigger the correct getModifiers() flags.
+ * This doesn't test the ALT, META or ALT_GRAPH modifiers as their
+ * behaviour is window-manager specific. Some window managers
+ * intercept some key-mouse combinations, e.g. ALT-BUTTON1 means
+ * "Start dragging this window" in Metacity. Also note that xmodmap
+ * settings will affect Java-generated modifier masks.
+ *
+ * @author Roman Kennke
+ */
+public class modifiers implements Testlet
+{
+ int mask;
+ Robot robot;
+ TestHarness h;
+ // set this to true to test ALT, META and ALT_GRAPH modifiers
+ boolean test_alt;
+
+ public void checkMask (int keycode[], int buttonmask, int keymask)
+ {
+ int i;
+ for (i = 0; i < keycode.length; i++)
+ robot.keyPress (keycode[i]);
+
+ robot.mousePress(buttonmask);
+ h.check(mask, buttonmask | keymask, "mousePressed: " + mask);
+ mask = 0;
+ robot.mouseRelease(buttonmask);
+ h.check(mask, buttonmask | keymask, "mouseReleased: " + mask);
+ mask = 0;
+
+ for (i = 0; i < keycode.length; i++)
+ robot.keyRelease (keycode[i]);
+ }
+
+ public void checkAllMaskCombinations (int buttonmask)
+ {
+ // each of the 5 key masks can be on or off, giving 32 possible
+ // combinations.
+
+ // no modifiers
+ checkMask (new int[] {},
+ buttonmask,
+ 0);
+
+ // one modifier
+ // SHIFT_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT },
+ buttonmask,
+ InputEvent.SHIFT_MASK);
+
+ // CTRL_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL },
+ buttonmask,
+ InputEvent.CTRL_MASK);
+
+ if (test_alt)
+ {
+ // META_MASK
+ checkMask (new int[] { KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.META_MASK);
+
+ // ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.ALT_MASK);
+
+ // ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.ALT_GRAPH_MASK);
+ }
+
+ // two modifiers
+
+ // SHIFT_MASK | CTRL_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK);
+
+ if (test_alt)
+ {
+ // SHIFT_MASK | META_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.META_MASK);
+
+ // SHIFT_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.ALT_MASK);
+
+ // SHIFT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // CTRL_MASK | META_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.META_MASK);
+
+ // CTRL_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.ALT_MASK);
+
+ // CTRL_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // META_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.META_MASK | InputEvent.ALT_MASK);
+
+ // META_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // three modifiers
+
+ // SHIFT_MASK | CTRL_MASK | META_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK);
+
+ // SHIFT_MASK | CTRL_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_MASK);
+
+ // SHIFT_MASK | CTRL_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // SHIFT_MASK | META_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK);
+
+ // SHIFT_MASK | META_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // SHIFT_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // CTRL_MASK | META_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK);
+
+ // CTRL_MASK | META_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // CTRL_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // META_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // four modifiers
+
+ // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK);
+
+ // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // SHIFT_MASK | CTRL_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // SHIFT_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // CTRL_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+
+ // five modifiers
+
+ // SHIFT_MASK | CTRL_MASK | META_MASK | ALT_MASK | ALT_GRAPH_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK | InputEvent.ALT_MASK | InputEvent.ALT_GRAPH_MASK);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ this.h = h;
+ Frame frame = new Frame();
+ MouseAdapter a = new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent ev)
+ {
+ mask = ev.getModifiers();
+ }
+ public void mouseReleased(MouseEvent ev)
+ {
+ mask = ev.getModifiers();
+ }
+ };
+ frame.addMouseListener(a);
+ frame.setSize(100, 100);
+ frame.show();
+ Point loc = frame.getLocationOnScreen();
+
+ robot = h.createRobot();
+ robot.setAutoWaitForIdle (true);
+
+ robot.mouseMove(loc.x + 50, loc.y + 50);
+
+ checkAllMaskCombinations (InputEvent.BUTTON1_MASK);
+ checkAllMaskCombinations (InputEvent.BUTTON2_MASK);
+ checkAllMaskCombinations (InputEvent.BUTTON3_MASK);
+ }
+}
diff --git a/gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java b/gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java
new file mode 100644
index 00000000..e92fe170
--- /dev/null
+++ b/gnu/testlet/java/awt/event/MouseEvent/modifiersEx.java
@@ -0,0 +1,290 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.java.awt.event.MouseEvent;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Frame;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
+
+/**
+ * Checks if a click does trigger the correct getModifiers() flags.
+ * This doesn't test the ALT, META or ALT_GRAPH modifiers as their
+ * behaviour is window-manager specific. Some window managers
+ * intercept some key-mouse combinations, e.g. ALT-BUTTON1 means
+ * "Start dragging this window" in Metacity. Also note that xmodmap
+ * settings will affect Java-generated modifier masks.
+ *
+ * @author Roman Kennke
+ */
+public class modifiersEx implements Testlet
+{
+ int mask;
+ Robot robot;
+ TestHarness h;
+ // set this to true to test ALT, META and ALT_GRAPH modifiers
+ boolean test_alt;
+
+ public void checkMask (int keycode[], int buttonmask, int keymask)
+ {
+ int robot_button = 0;
+
+ if (buttonmask == InputEvent.BUTTON1_DOWN_MASK)
+ robot_button = InputEvent.BUTTON1_MASK;
+ else if (buttonmask == InputEvent.BUTTON2_DOWN_MASK)
+ robot_button = InputEvent.BUTTON2_MASK;
+ else if (buttonmask == InputEvent.BUTTON3_DOWN_MASK)
+ robot_button = InputEvent.BUTTON3_MASK;
+
+ int i;
+ for (i = 0; i < keycode.length; i++)
+ robot.keyPress (keycode[i]);
+
+ robot.mousePress(robot_button);
+ h.check(mask, buttonmask | keymask, "mousePressed: " + mask);
+ mask = 0;
+ robot.mouseRelease(robot_button);
+ // release event extended modifiers don't include button mask
+ h.check(mask, keymask, "mouseReleased: " + mask);
+ mask = 0;
+
+ for (i = 0; i < keycode.length; i++)
+ robot.keyRelease (keycode[i]);
+ }
+
+ public void checkAllMaskCombinations (int buttonmask)
+ {
+ // each of the 5 key masks can be on or off, giving 32 possible
+ // combinations.
+
+ // no modifiers
+ checkMask (new int[] {},
+ buttonmask,
+ 0);
+
+ // one modifier
+ // SHIFT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK);
+
+ // CTRL_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK);
+
+ if (test_alt)
+ {
+ // META_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.META_DOWN_MASK);
+
+ // ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.ALT_DOWN_MASK);
+
+ // ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.ALT_GRAPH_DOWN_MASK);
+ }
+
+ // two modifiers
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK);
+
+ if (test_alt)
+ {
+ // SHIFT_DOWN_MASK | META_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | META_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // META_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // META_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // three modifiers
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // four modifiers
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // SHIFT_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+
+ // five modifiers
+
+ // SHIFT_DOWN_MASK | CTRL_DOWN_MASK | META_DOWN_MASK | ALT_DOWN_MASK | ALT_GRAPH_DOWN_MASK
+ checkMask (new int[] { KeyEvent.VK_SHIFT, KeyEvent.VK_CONTROL, KeyEvent.VK_META, KeyEvent.VK_ALT, KeyEvent.VK_ALT_GRAPH },
+ buttonmask,
+ InputEvent.SHIFT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK | InputEvent.META_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ this.h = h;
+ Frame frame = new Frame();
+ MouseAdapter a = new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent ev)
+ {
+ mask = ev.getModifiersEx();
+ }
+ public void mouseReleased(MouseEvent ev)
+ {
+ mask = ev.getModifiersEx();
+ }
+ };
+ frame.addMouseListener(a);
+ frame.setSize(100, 100);
+ frame.show();
+ Point loc = frame.getLocationOnScreen();
+
+ robot = h.createRobot();
+ robot.setAutoWaitForIdle (true);
+
+ robot.mouseMove(loc.x + 50, loc.y + 50);
+
+ checkAllMaskCombinations (InputEvent.BUTTON1_DOWN_MASK);
+ checkAllMaskCombinations (InputEvent.BUTTON2_DOWN_MASK);
+ checkAllMaskCombinations (InputEvent.BUTTON3_DOWN_MASK);
+ }
+}
diff --git a/gnu/testlet/java/awt/font/CVS/Entries b/gnu/testlet/java/awt/font/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/font/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/font/CVS/Entries.Log b/gnu/testlet/java/awt/font/CVS/Entries.Log
new file mode 100644
index 00000000..dae20dd0
--- /dev/null
+++ b/gnu/testlet/java/awt/font/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/ImageGraphicAttribute////
+A D/NumericShaper////
+A D/ShapeGraphicAttribute////
+A D/TextAttribute////
+A D/TextHitInfo////
+A D/TransformAttribute////
diff --git a/gnu/testlet/java/awt/font/CVS/Repository b/gnu/testlet/java/awt/font/CVS/Repository
new file mode 100644
index 00000000..0617ff73
--- /dev/null
+++ b/gnu/testlet/java/awt/font/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font
diff --git a/gnu/testlet/java/awt/font/CVS/Root b/gnu/testlet/java/awt/font/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Entries b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Entries
new file mode 100644
index 00000000..262c28b9
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Entries
@@ -0,0 +1,3 @@
+/ImageGraphicAttributeTest.java/1.2/Thu May 18 15:54:42 2006//
+/image.bmp/1.1/Wed May 17 19:57:06 2006//
+D
diff --git a/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Repository b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Repository
new file mode 100644
index 00000000..504f61e0
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/ImageGraphicAttribute
diff --git a/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Root b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ImageGraphicAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java b/gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java
new file mode 100644
index 00000000..0eda4df4
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ImageGraphicAttribute/ImageGraphicAttributeTest.java
@@ -0,0 +1,74 @@
+/* ImageGraphicAttributeTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.font.ImageGraphicAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Image;
+import java.awt.font.ImageGraphicAttribute;
+import java.awt.geom.Rectangle2D;
+import java.io.File;
+
+import javax.imageio.ImageIO;
+
+public class ImageGraphicAttributeTest
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ Image image = ImageIO.read(new File("gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmp"));
+ ImageGraphicAttribute iga = new ImageGraphicAttribute(image, 0);
+
+ harness.check(iga.hashCode(), image.hashCode());
+ harness.check(iga.getAscent(), 0.0);
+ harness.check(iga.getDescent(), 64.0);
+ harness.check(iga.getAdvance(), 127.0);
+ harness.check(iga.getBounds(), new Rectangle2D.Float((float) - 0.0,
+ (float) - 0.0,
+ (float) 127.0,
+ (float) 64.0));
+
+ ImageGraphicAttribute iga2 = new ImageGraphicAttribute(image, 0, 10, -1202);
+
+ harness.check(iga2.hashCode(), image.hashCode());
+ harness.check(iga2.getAscent(), 0.0);
+ harness.check(iga2.getDescent(), 1266.0);
+ harness.check(iga2.getAdvance(), 117.0);
+ harness.check(iga2.getBounds(), new Rectangle2D.Float((float) - 10.0,
+ (float) 1202.0,
+ (float) 127.0,
+ (float) 64.0));
+
+ harness.check(iga.equals(iga2), false);
+ }
+ catch (Exception e)
+ {
+ harness.fail("Exception caught: " + e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmp b/gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmp
new file mode 100644
index 00000000..0f41534e
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ImageGraphicAttribute/image.bmp
Binary files differ
diff --git a/gnu/testlet/java/awt/font/NumericShaper/Basic.java b/gnu/testlet/java/awt/font/NumericShaper/Basic.java
new file mode 100644
index 00000000..a4dabbdc
--- /dev/null
+++ b/gnu/testlet/java/awt/font/NumericShaper/Basic.java
@@ -0,0 +1,110 @@
+/* Basic.java -- Test numeric shaper functionality
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.font.NumericShaper;
+
+import java.awt.font.NumericShaper;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Basic implements Testlet
+{
+ public String xform(String input)
+ {
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < input.length(); ++i)
+ {
+ char c = input.charAt(i);
+ if (c < ' ' || c > 0x7f)
+ result.append("\\u").append(Integer.toHexString(c));
+ else
+ result.append(c);
+ }
+ return result.toString();
+ }
+
+ public void testOne(TestHarness harness, String input,
+ NumericShaper shaper, String expected,
+ int context)
+ {
+ char[] chars = input.toCharArray();
+ if (context == -1)
+ shaper.shape(chars, 0, chars.length);
+ else
+ shaper.shape(chars, 0, chars.length, context);
+ // Transforming here makes the output legible in case of failure.
+ harness.check(xform(new String(chars)), xform(expected));
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("non-contextual");
+ NumericShaper nonc = NumericShaper.getShaper(NumericShaper.TIBETAN);
+ harness.check(! nonc.isContextual());
+ testOne(harness, "abc 0123", nonc,
+ "abc \u0f20\u0f21\u0f22\u0f23", -1);
+ testOne(harness, "abc 0123", nonc,
+ "abc \u0f20\u0f21\u0f22\u0f23", NumericShaper.BENGALI);
+
+ // Note that the JDK fails some of these, as ethiopic does not
+ // have a digit zero.
+ nonc = NumericShaper.getShaper(NumericShaper.ETHIOPIC);
+ testOne(harness, "abc 0123", nonc,
+ "abc 0\u1369\u136a\u136b", -1);
+ testOne(harness, "abc 0123", nonc,
+ "abc 0\u1369\u136a\u136b", NumericShaper.EASTERN_ARABIC);
+
+ harness.checkPoint("contextual");
+ NumericShaper contextualI
+ = NumericShaper.getContextualShaper(NumericShaper.KHMER
+ | NumericShaper.ETHIOPIC);
+ NumericShaper contextualE
+ = NumericShaper.getContextualShaper(NumericShaper.KHMER
+ | NumericShaper.ETHIOPIC,
+ NumericShaper.EUROPEAN);
+ harness.check(contextualE.equals(contextualI));
+ harness.check(contextualE.isContextual());
+
+ // Use built-in context.
+ testOne(harness, "45", contextualE, "45", -1);
+ // Explicit context.
+ testOne(harness, "45", contextualE, "\u17e4\u17e5", NumericShaper.KHMER);
+ // Explicit but unrecognized context.
+ testOne(harness, "45", contextualE, "45", NumericShaper.ARABIC);
+ // The other explicit context.
+ testOne(harness, "45", contextualE, "\u136c\u136d", NumericShaper.ETHIOPIC);
+ // Context from the text. The first \\u is ethiopic, the second khmer.
+ testOne(harness, "45 \u134d 045 \u1782 045", contextualI,
+ "45 \u134d 0\u136c\u136d \u1782 \u17e0\u17e4\u17e5", -1);
+
+ harness.checkPoint("arabic");
+ NumericShaper arabic
+ = NumericShaper.getContextualShaper(NumericShaper.ARABIC
+ | NumericShaper.EASTERN_ARABIC);
+ // According to testing, eastern arabic takes precedence here.
+ testOne(harness, "\u062b 1", arabic, "\u062b \u06f1", -1);
+ // This should choose eastern arabic.
+ testOne(harness, "1", arabic, "\u06f1", NumericShaper.EASTERN_ARABIC);
+ }
+}
diff --git a/gnu/testlet/java/awt/font/NumericShaper/CVS/Entries b/gnu/testlet/java/awt/font/NumericShaper/CVS/Entries
new file mode 100644
index 00000000..609a7722
--- /dev/null
+++ b/gnu/testlet/java/awt/font/NumericShaper/CVS/Entries
@@ -0,0 +1,2 @@
+/Basic.java/1.1/Sun Mar 19 18:25:32 2006/-kk/
+D
diff --git a/gnu/testlet/java/awt/font/NumericShaper/CVS/Repository b/gnu/testlet/java/awt/font/NumericShaper/CVS/Repository
new file mode 100644
index 00000000..ede91f7c
--- /dev/null
+++ b/gnu/testlet/java/awt/font/NumericShaper/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/NumericShaper
diff --git a/gnu/testlet/java/awt/font/NumericShaper/CVS/Root b/gnu/testlet/java/awt/font/NumericShaper/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/NumericShaper/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Entries b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Entries
new file mode 100644
index 00000000..108ddcbd
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Entries
@@ -0,0 +1,2 @@
+/ShapeGraphicAttributeTest.java/1.1/Thu May 18 15:54:42 2006//
+D
diff --git a/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Repository b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Repository
new file mode 100644
index 00000000..708db78f
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/ShapeGraphicAttribute
diff --git a/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Root b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/ShapeGraphicAttribute/ShapeGraphicAttributeTest.java b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/ShapeGraphicAttributeTest.java
new file mode 100644
index 00000000..f37d64c1
--- /dev/null
+++ b/gnu/testlet/java/awt/font/ShapeGraphicAttribute/ShapeGraphicAttributeTest.java
@@ -0,0 +1,72 @@
+/* ShapeGraphicAttributeTest.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.font.ShapeGraphicAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Shape;
+import java.awt.font.ShapeGraphicAttribute;
+import java.awt.geom.Rectangle2D;
+
+public class ShapeGraphicAttributeTest
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ Shape s = new Rectangle2D.Float(2, 3, 60, 98);
+ ShapeGraphicAttribute sga = new ShapeGraphicAttribute(s, 0, true);
+
+ harness.check(sga.hashCode(), s.hashCode());
+ harness.check(sga.getAscent(), 0.0);
+ harness.check(sga.getDescent(), 101.0);
+ harness.check(sga.getAdvance(), 62.0);
+ harness.check(sga.getBounds(), new Rectangle2D.Float((float) 2.0,
+ (float) 3.0,
+ (float) 61.0,
+ (float) 99.0));
+
+ Shape s2 = new Rectangle2D.Float(2, - 5, 17, 921);
+ ShapeGraphicAttribute sga2 = new ShapeGraphicAttribute(s2, 1, false);
+
+ harness.check(sga2.hashCode(), s2.hashCode());
+ harness.check(sga2.getAscent(), 5.0);
+ harness.check(sga2.getDescent(), 916.0);
+ harness.check(sga2.getAdvance(), 19.0);
+ harness.check(sga2.getBounds(), new Rectangle2D.Float((float) 2.0,
+ (float) - 5.0,
+ (float) 17.0,
+ (float) 921.0));
+
+ harness.check(sga.equals(sga2), false);
+ }
+ catch (Exception e)
+ {
+ harness.fail("Exception caught: " + e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/font/TextAttribute/CVS/Entries b/gnu/testlet/java/awt/font/TextAttribute/CVS/Entries
new file mode 100644
index 00000000..d6182047
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/CVS/Entries
@@ -0,0 +1,6 @@
+/constants.java/1.2/Mon Feb 21 00:38:59 2005//
+/constants13.java/1.1/Sat Feb 19 22:20:44 2005//
+/serialization.java/1.1/Sat Feb 19 22:20:44 2005//
+/toString.java/1.1/Sat Feb 19 22:20:44 2005//
+/toString13.java/1.1/Sat Feb 19 22:20:44 2005//
+D
diff --git a/gnu/testlet/java/awt/font/TextAttribute/CVS/Repository b/gnu/testlet/java/awt/font/TextAttribute/CVS/Repository
new file mode 100644
index 00000000..b35cbf7d
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/TextAttribute
diff --git a/gnu/testlet/java/awt/font/TextAttribute/CVS/Root b/gnu/testlet/java/awt/font/TextAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/TextAttribute/constants.java b/gnu/testlet/java/awt/font/TextAttribute/constants.java
new file mode 100644
index 00000000..28dd1145
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/constants.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TextAttribute;
+
+import java.awt.font.TextAttribute;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for the constants in the {@link TextAttribute} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("JUSTIFICATION");
+ harness.check(TextAttribute.JUSTIFICATION_FULL, new Float(1.0));
+ harness.check(TextAttribute.JUSTIFICATION_NONE, new Float(0.0));
+
+ harness.checkPoint("POSTURE");
+ harness.check(TextAttribute.POSTURE_OBLIQUE, new Float(0.2));
+ harness.check(TextAttribute.POSTURE_REGULAR, new Float(0.0));
+
+ harness.checkPoint("RUN_DIRECTION");
+ harness.check(TextAttribute.RUN_DIRECTION_LTR, Boolean.FALSE);
+ harness.check(TextAttribute.RUN_DIRECTION_RTL, Boolean.TRUE);
+
+ harness.checkPoint("STRIKETHROUGH");
+ harness.check(TextAttribute.STRIKETHROUGH_ON, Boolean.TRUE);
+
+ harness.checkPoint("SUPERSCRIPT");
+ harness.check(TextAttribute.SUPERSCRIPT_SUB, new Integer(-1));
+ harness.check(TextAttribute.SUPERSCRIPT_SUPER, new Integer(1));
+
+ harness.checkPoint("SWAP_COLORS");
+ harness.check(TextAttribute.SWAP_COLORS_ON, Boolean.TRUE);
+
+ harness.checkPoint("WEIGHT");
+ harness.check(TextAttribute.WEIGHT_BOLD, new Float(2.0));
+ harness.check(TextAttribute.WEIGHT_DEMIBOLD, new Float(1.75));
+ harness.check(TextAttribute.WEIGHT_DEMILIGHT, new Float(0.875));
+ harness.check(TextAttribute.WEIGHT_EXTRA_LIGHT, new Float(0.5));
+ harness.check(TextAttribute.WEIGHT_EXTRABOLD, new Float(2.5));
+ harness.check(TextAttribute.WEIGHT_HEAVY, new Float(2.25));
+ harness.check(TextAttribute.WEIGHT_LIGHT, new Float(0.75));
+ harness.check(TextAttribute.WEIGHT_MEDIUM, new Float(1.5));
+ harness.check(TextAttribute.WEIGHT_REGULAR, new Float(1.0));
+ harness.check(TextAttribute.WEIGHT_SEMIBOLD, new Float(1.25));
+ harness.check(TextAttribute.WEIGHT_ULTRABOLD, new Float(2.75));
+
+ harness.checkPoint("WIDTH");
+ harness.check(TextAttribute.WIDTH_CONDENSED, new Float(0.75));
+ harness.check(TextAttribute.WIDTH_EXTENDED, new Float(1.5));
+ harness.check(TextAttribute.WIDTH_REGULAR, new Float(1.0));
+ harness.check(TextAttribute.WIDTH_SEMI_CONDENSED, new Float(0.875));
+ harness.check(TextAttribute.WIDTH_SEMI_EXTENDED, new Float(1.25));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextAttribute/constants13.java b/gnu/testlet/java/awt/font/TextAttribute/constants13.java
new file mode 100644
index 00000000..3c6f92eb
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/constants13.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TextAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TextAttribute;
+
+/**
+ * Some tests for the constants in the {@link TextAttribute} class.
+ */
+public class constants13 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(TextAttribute.UNDERLINE_LOW_DASHED, new Integer(5));
+ harness.check(TextAttribute.UNDERLINE_LOW_DOTTED, new Integer(3));
+ harness.check(TextAttribute.UNDERLINE_LOW_GRAY, new Integer(4));
+ harness.check(TextAttribute.UNDERLINE_LOW_ONE_PIXEL, new Integer(1));
+ harness.check(TextAttribute.UNDERLINE_LOW_TWO_PIXEL, new Integer(2));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/font/TextAttribute/serialization.java b/gnu/testlet/java/awt/font/TextAttribute/serialization.java
new file mode 100644
index 00000000..07970e49
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/serialization.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TextAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TextAttribute;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Some checks for serialization of the {@link TextAttribute} class.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ checkSerial(TextAttribute.BACKGROUND, harness);
+ checkSerial(TextAttribute.BIDI_EMBEDDING, harness);
+ checkSerial(TextAttribute.CHAR_REPLACEMENT, harness);
+ checkSerial(TextAttribute.FAMILY, harness);
+ checkSerial(TextAttribute.FONT, harness);
+ checkSerial(TextAttribute.FOREGROUND, harness);
+ checkSerial(TextAttribute.INPUT_METHOD_HIGHLIGHT, harness);
+ checkSerial(TextAttribute.JUSTIFICATION, harness);
+ checkSerial(TextAttribute.NUMERIC_SHAPING, harness);
+ checkSerial(TextAttribute.POSTURE, harness);
+ checkSerial(TextAttribute.RUN_DIRECTION, harness);
+ checkSerial(TextAttribute.SIZE, harness);
+ checkSerial(TextAttribute.STRIKETHROUGH, harness);
+ checkSerial(TextAttribute.WEIGHT, harness);
+ checkSerial(TextAttribute.WIDTH, harness);
+ }
+
+ private void checkSerial(TextAttribute ta1, TestHarness harness)
+ {
+ TextAttribute ta2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(ta1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ ta2 = (TextAttribute) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(ta1 == ta2); // the readResolve() method ensures that only
+ // one object can represent each attribute
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextAttribute/toString.java b/gnu/testlet/java/awt/font/TextAttribute/toString.java
new file mode 100644
index 00000000..448ee490
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/toString.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TextAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TextAttribute;
+
+/**
+ * Some tests for the toString() method in the {@link TextAttribute} class.
+ */
+public class toString implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(TextAttribute.BACKGROUND.toString(), "java.awt.font.TextAttribute(background)");
+ harness.check(TextAttribute.BIDI_EMBEDDING.toString(), "java.awt.font.TextAttribute(bidi_embedding)");
+ harness.check(TextAttribute.CHAR_REPLACEMENT.toString(), "java.awt.font.TextAttribute(char_replacement)");
+ harness.check(TextAttribute.FAMILY.toString(), "java.awt.font.TextAttribute(family)");
+ harness.check(TextAttribute.FONT.toString(), "java.awt.font.TextAttribute(font)");
+ harness.check(TextAttribute.FOREGROUND.toString(), "java.awt.font.TextAttribute(foreground)");
+ harness.check(TextAttribute.INPUT_METHOD_HIGHLIGHT.toString(), "java.awt.font.TextAttribute(input method highlight)");
+ harness.check(TextAttribute.JUSTIFICATION.toString(), "java.awt.font.TextAttribute(justification)");
+ harness.check(TextAttribute.NUMERIC_SHAPING.toString(), "java.awt.font.TextAttribute(numeric_shaping)");
+ harness.check(TextAttribute.POSTURE.toString(), "java.awt.font.TextAttribute(posture)");
+ harness.check(TextAttribute.RUN_DIRECTION.toString(), "java.awt.font.TextAttribute(run_direction)");
+ harness.check(TextAttribute.SIZE.toString(), "java.awt.font.TextAttribute(size)");
+ harness.check(TextAttribute.STRIKETHROUGH.toString(), "java.awt.font.TextAttribute(strikethrough)");
+ harness.check(TextAttribute.WEIGHT.toString(), "java.awt.font.TextAttribute(weight)");
+ harness.check(TextAttribute.WIDTH.toString(), "java.awt.font.TextAttribute(width)");
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/font/TextAttribute/toString13.java b/gnu/testlet/java/awt/font/TextAttribute/toString13.java
new file mode 100644
index 00000000..87abddc1
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextAttribute/toString13.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TextAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TextAttribute;
+
+/**
+ * Some tests for the toString() method in the {@link TextAttribute} class.
+ */
+public class toString13 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(TextAttribute.INPUT_METHOD_UNDERLINE.toString(), "java.awt.font.TextAttribute(input method underline)");
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/CVS/Entries b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Entries
new file mode 100644
index 00000000..641a0da1
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Entries
@@ -0,0 +1,13 @@
+/afterOffset.java/1.1/Fri Nov 24 21:20:35 2006//
+/beforeOffset.java/1.1/Fri Nov 24 21:20:35 2006//
+/equals.java/1.1/Fri Nov 24 21:20:35 2006//
+/getCharIndex.java/1.1/Fri Nov 24 21:20:35 2006//
+/getInsertionIndex.java/1.1/Fri Nov 24 21:20:35 2006//
+/getOffsetHit.java/1.1/Fri Nov 24 21:20:35 2006//
+/getOtherHit.java/1.1/Fri Nov 24 21:20:35 2006//
+/hashCode.java/1.1/Fri Nov 24 21:20:35 2006//
+/isLeadingEdge.java/1.1/Fri Nov 24 21:20:35 2006//
+/leading.java/1.1/Fri Nov 24 21:20:35 2006//
+/toString.java/1.1/Fri Nov 24 21:20:35 2006//
+/trailing.java/1.1/Fri Nov 24 21:20:35 2006//
+D
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/CVS/Repository b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Repository
new file mode 100644
index 00000000..5980a744
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/TextHitInfo
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/CVS/Root b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/afterOffset.java b/gnu/testlet/java/awt/font/TextHitInfo/afterOffset.java
new file mode 100644
index 00000000..17cd795d
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/afterOffset.java
@@ -0,0 +1,44 @@
+/* afterOffset.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class afterOffset implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.check(TextHitInfo.afterOffset(-6).toString(),
+ "TextHitInfo[-6L]");
+ harness.check(TextHitInfo.afterOffset(0).toString(),
+ "TextHitInfo[0L]");
+ harness.check(TextHitInfo.afterOffset(2).toString(),
+ "TextHitInfo[2L]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/beforeOffset.java b/gnu/testlet/java/awt/font/TextHitInfo/beforeOffset.java
new file mode 100644
index 00000000..94a3707e
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/beforeOffset.java
@@ -0,0 +1,44 @@
+/* beforeOffset.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class beforeOffset implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.check(TextHitInfo.beforeOffset(-6).toString(),
+ "TextHitInfo[-7T]");
+ harness.check(TextHitInfo.beforeOffset(0).toString(),
+ "TextHitInfo[-1T]");
+ harness.check(TextHitInfo.beforeOffset(2).toString(),
+ "TextHitInfo[1T]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/equals.java b/gnu/testlet/java/awt/font/TextHitInfo/equals.java
new file mode 100644
index 00000000..26e5a65b
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/equals.java
@@ -0,0 +1,61 @@
+/* equals.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class equals implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ equalsObject(harness);
+ equalsTextHitInfo(harness);
+ }
+
+ public void equalsObject(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.trailing(0);
+ harness.check(info.equals((Object) null), false);
+
+ harness.check(info.equals((Object) TextHitInfo.trailing(0)), true);
+
+ String a = "Some String";
+ harness.check(info.equals(a), false);
+ }
+
+ public void equalsTextHitInfo(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.trailing(0);
+ harness.check(info.equals((TextHitInfo) null), false);
+
+ harness.check(info.equals(TextHitInfo.trailing(0)), true);
+ harness.check(info.equals(TextHitInfo.trailing(1)), false);
+ harness.check(info.equals(TextHitInfo.leading(0)), false);
+ harness.check(info.equals(TextHitInfo.leading(1)), false);
+ }
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/getCharIndex.java b/gnu/testlet/java/awt/font/TextHitInfo/getCharIndex.java
new file mode 100644
index 00000000..86b36895
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/getCharIndex.java
@@ -0,0 +1,55 @@
+/* getCharIndex.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getCharIndex implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(-2);
+ harness.check(info.getCharIndex(), -2);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.getCharIndex(), 0);
+
+ info = TextHitInfo.leading(4);
+ harness.check(info.getCharIndex(), 4);
+
+ info = TextHitInfo.trailing(-2);
+ harness.check(info.getCharIndex(), -2);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getCharIndex(), 0);
+
+ info = TextHitInfo.trailing(4);
+ harness.check(info.getCharIndex(), 4);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/getInsertionIndex.java b/gnu/testlet/java/awt/font/TextHitInfo/getInsertionIndex.java
new file mode 100644
index 00000000..7c9ff783
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/getInsertionIndex.java
@@ -0,0 +1,58 @@
+/* getInsertionIndex.java -
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getInsertionIndex implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(-2);
+ harness.check(info.getInsertionIndex(), -2);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.getInsertionIndex(), 0);
+
+ info = TextHitInfo.leading(4);
+ harness.check(info.getInsertionIndex(), 4);
+
+ info = TextHitInfo.trailing(-2);
+ harness.check(info.getInsertionIndex(), -1);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getInsertionIndex(), 1);
+
+ info = TextHitInfo.trailing(4);
+ harness.check(info.getInsertionIndex(), 5);
+
+ harness.check(TextHitInfo.leading(1).getInsertionIndex(), 1);
+ harness.check(TextHitInfo.trailing(1).getInsertionIndex(), 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/getOffsetHit.java b/gnu/testlet/java/awt/font/TextHitInfo/getOffsetHit.java
new file mode 100644
index 00000000..f9ee6974
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/getOffsetHit.java
@@ -0,0 +1,61 @@
+/* getoffsetHit.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getOffsetHit implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(0);
+ harness.check(info.getOffsetHit(0).toString(), "TextHitInfo[0L]");
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.getOffsetHit(-2).toString(), "TextHitInfo[-2L]");
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.getOffsetHit(2).toString(), "TextHitInfo[2L]");
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getOffsetHit(0).toString(), "TextHitInfo[0T]");
+ harness.check(info.isLeadingEdge(), false);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getOffsetHit(-2).toString(), "TextHitInfo[-2T]");
+ harness.check(info.isLeadingEdge(), false);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getOffsetHit(2).toString(), "TextHitInfo[2T]");
+ harness.check(info.isLeadingEdge(), false);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/getOtherHit.java b/gnu/testlet/java/awt/font/TextHitInfo/getOtherHit.java
new file mode 100644
index 00000000..fab6da52
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/getOtherHit.java
@@ -0,0 +1,43 @@
+/* getOtherHit.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getOtherHit implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(0);
+ harness.check(info.getOtherHit().toString(), "TextHitInfo[-1T]");
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.getOtherHit().toString(), "TextHitInfo[1L]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/hashCode.java b/gnu/testlet/java/awt/font/TextHitInfo/hashCode.java
new file mode 100644
index 00000000..da325a3c
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/hashCode.java
@@ -0,0 +1,58 @@
+/* hashCode.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class hashCode implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(-2);
+ harness.check(info.hashCode(), -2);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.hashCode(), 0);
+
+ info = TextHitInfo.leading(4);
+ harness.check(info.hashCode(), 4);
+
+ info = TextHitInfo.trailing(-2);
+ harness.check(info.hashCode(), -2);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.hashCode(), 0);
+
+ info = TextHitInfo.trailing(4);
+ harness.check(info.hashCode(), 4);
+
+ harness.check(TextHitInfo.leading(1).hashCode(), 1);
+ harness.check(TextHitInfo.trailing(1).hashCode(), 1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/isLeadingEdge.java b/gnu/testlet/java/awt/font/TextHitInfo/isLeadingEdge.java
new file mode 100644
index 00000000..96d85aa0
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/isLeadingEdge.java
@@ -0,0 +1,58 @@
+/* isLeadingEdge.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isLeadingEdge implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(-2);
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.leading(0);
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.leading(4);
+ harness.check(info.isLeadingEdge(), true);
+
+ info = TextHitInfo.trailing(-2);
+ harness.check(info.isLeadingEdge(), false);
+
+ info = TextHitInfo.trailing(0);
+ harness.check(info.isLeadingEdge(), false);
+
+ info = TextHitInfo.trailing(4);
+ harness.check(info.isLeadingEdge(), false);
+
+ harness.check(TextHitInfo.leading(1).isLeadingEdge(), true);
+ harness.check(TextHitInfo.trailing(1).isLeadingEdge(), false);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/leading.java b/gnu/testlet/java/awt/font/TextHitInfo/leading.java
new file mode 100644
index 00000000..9baff38b
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/leading.java
@@ -0,0 +1,44 @@
+/* leading.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class leading implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.check(TextHitInfo.leading(-1).toString(),
+ "TextHitInfo[-1L]");
+ harness.check(TextHitInfo.leading(0).toString(),
+ "TextHitInfo[0L]");
+ harness.check(TextHitInfo.leading(1).toString(),
+ "TextHitInfo[1L]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/toString.java b/gnu/testlet/java/awt/font/TextHitInfo/toString.java
new file mode 100644
index 00000000..e8374cd6
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/toString.java
@@ -0,0 +1,43 @@
+/* toString.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class toString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TextHitInfo info = TextHitInfo.leading(0);
+ harness.check(info.toString(), "TextHitInfo[0L]");
+
+ info = TextHitInfo.trailing(5);
+ harness.check(info.toString(), "TextHitInfo[5T]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TextHitInfo/trailing.java b/gnu/testlet/java/awt/font/TextHitInfo/trailing.java
new file mode 100644
index 00000000..6507a845
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TextHitInfo/trailing.java
@@ -0,0 +1,44 @@
+/* trailing.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.font.TextHitInfo;
+
+import java.awt.font.TextHitInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class trailing implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.check(TextHitInfo.trailing(-1).toString(),
+ "TextHitInfo[-1T]");
+ harness.check(TextHitInfo.trailing(0).toString(),
+ "TextHitInfo[0T]");
+ harness.check(TextHitInfo.trailing(1).toString(),
+ "TextHitInfo[1T]");
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/CVS/Entries b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Entries
new file mode 100644
index 00000000..d438c35c
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Entries
@@ -0,0 +1,5 @@
+/constructor.java/1.1/Fri Feb 18 12:33:40 2005//
+/getTransform.java/1.1/Fri Feb 18 12:33:40 2005//
+/isIdentity.java/1.1/Fri Feb 18 12:33:40 2005//
+/serialization.java/1.1/Fri Feb 18 12:33:40 2005//
+D
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/CVS/Repository b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Repository
new file mode 100644
index 00000000..b536e70e
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/font/TransformAttribute
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/CVS/Root b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/constructor.java b/gnu/testlet/java/awt/font/TransformAttribute/constructor.java
new file mode 100644
index 00000000..88baef8b
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/constructor.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TransformAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TransformAttribute;
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some checks for the constructor of the {@link TransformAttribute} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform identity = new AffineTransform();
+ TransformAttribute t = new TransformAttribute(identity);
+ harness.check(t.getTransform(), identity);
+ // the transform passed to the constructor should be cloned by the
+ // constructor, so the references should be different...
+ harness.check(t.getTransform() != identity);
+
+ AffineTransform at = AffineTransform.getTranslateInstance(1.2, 3.4);
+ t = new TransformAttribute(at);
+ harness.check(t.getTransform(), at);
+
+ // spec doesn't say how to handle null, but RI throws
+ // IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ t = new TransformAttribute(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/getTransform.java b/gnu/testlet/java/awt/font/TransformAttribute/getTransform.java
new file mode 100644
index 00000000..14fa4670
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/getTransform.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TransformAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TransformAttribute;
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some checks for the getTransform() method in the {@link TransformAttribute}
+ * class.
+ */
+public class getTransform implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = AffineTransform.getTranslateInstance(1.2, 3.4);
+ TransformAttribute ta = new TransformAttribute(t1);
+ AffineTransform t2 = ta.getTransform();
+ harness.check(t1, t2);
+
+ // the returned transform should be a clone of the wrapped transform,
+ // so changing it should not impact the TransformAttribute...
+ t2.setToIdentity();
+ AffineTransform t3 = ta.getTransform();
+ harness.check(!t3.equals(t2));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/isIdentity.java b/gnu/testlet/java/awt/font/TransformAttribute/isIdentity.java
new file mode 100644
index 00000000..7ff61d3f
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/isIdentity.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TransformAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TransformAttribute;
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some checks for the isIdentity() method in the {@link TransformAttribute}
+ * class.
+ */
+public class isIdentity implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform();
+ TransformAttribute ta = new TransformAttribute(t1);
+ harness.check(ta.isIdentity());
+
+ AffineTransform t2 = AffineTransform.getTranslateInstance(1.2, 3.4);
+ ta = new TransformAttribute(t2);
+ harness.check(!ta.isIdentity());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/font/TransformAttribute/serialization.java b/gnu/testlet/java/awt/font/TransformAttribute/serialization.java
new file mode 100644
index 00000000..6672265f
--- /dev/null
+++ b/gnu/testlet/java/awt/font/TransformAttribute/serialization.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.font.TransformAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TransformAttribute;
+import java.awt.geom.AffineTransform;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.util.Date;
+
+/**
+ * Some checks for serialization of a {@link Date} instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TransformAttribute t = new TransformAttribute(new AffineTransform());
+ testSerialization(t, harness);
+ t = new TransformAttribute(AffineTransform.getTranslateInstance(1.2, 3.4));
+ testSerialization(t, harness);
+ }
+
+ private void testSerialization(TransformAttribute t1, TestHarness harness)
+ {
+ TransformAttribute t2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(t1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ t2 = (TransformAttribute) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(t1.getTransform(), t2.getTransform());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/CVS/Entries b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Entries
new file mode 100644
index 00000000..1b0b72d5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Entries
@@ -0,0 +1,20 @@
+/clone.java/1.1/Fri Aug 27 12:45:48 2004//
+/concatenate.java/1.1/Fri Aug 27 12:45:48 2004//
+/constants.java/1.1/Fri Aug 27 12:45:48 2004//
+/constructors.java/1.1/Fri Aug 27 12:45:48 2004//
+/createInverse.java/1.2/Fri Dec 9 15:27:08 2011//
+/createTransformedShape.java/1.1/Fri Aug 27 12:45:48 2004//
+/deltaTransform.java/1.1/Fri Aug 27 12:45:48 2004//
+/equals.java/1.1/Fri Aug 27 12:45:48 2004//
+/getDeterminant.java/1.1/Fri Aug 27 12:45:48 2004//
+/getMatrix.java/1.1/Fri Aug 27 12:45:48 2004//
+/getRotateInstance.java/1.1/Fri Aug 27 12:45:48 2004//
+/getScaleInstance.java/1.1/Fri Aug 27 12:45:48 2004//
+/getShearInstance.java/1.1/Fri Aug 27 12:45:48 2004//
+/getTranslateInstance.java/1.1/Fri Aug 27 12:45:48 2004//
+/inverseTransform.java/1.1/Fri Aug 27 12:45:48 2004//
+/isIdentity.java/1.1/Fri Aug 27 12:45:48 2004//
+/preConcatenate.java/1.1/Fri Aug 27 12:45:48 2004//
+/setTransform.java/1.1/Fri Aug 27 12:45:48 2004//
+/transform.java/1.1/Fri Aug 27 12:45:48 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/CVS/Repository b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Repository
new file mode 100644
index 00000000..b34fe4f8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/AffineTransform
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/CVS/Root b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/clone.java b/gnu/testlet/java/awt/geom/AffineTransform/clone.java
new file mode 100644
index 00000000..045e68f8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/clone.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Checks that the clone() method works.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ AffineTransform t2 = null;
+ t2 = (AffineTransform) t1.clone();
+ harness.check(t2.getScaleX(), 1.0);
+ harness.check(t2.getScaleY(), 4.0);
+ harness.check(t2.getTranslateX(), 5.0);
+ harness.check(t2.getTranslateY(), 6.0);
+ harness.check(t2.getShearX(), 3.0);
+ harness.check(t2.getShearY(), 2.0);
+ harness.check(t2.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/concatenate.java b/gnu/testlet/java/awt/geom/AffineTransform/concatenate.java
new file mode 100644
index 00000000..695f429b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/concatenate.java
@@ -0,0 +1,62 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class concatenate implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ AffineTransform t2 = new AffineTransform(7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
+ t1.concatenate(t2);
+ harness.check(t1.getScaleX(), 31.0);
+ harness.check(t1.getShearX(), 39.0);
+ harness.check(t1.getTranslateX(), 52.0);
+ harness.check(t1.getShearY(), 46.0);
+ harness.check(t1.getScaleY(), 58.0);
+ harness.check(t1.getTranslateY(), 76.0);
+
+ boolean pass = false;
+ try
+ {
+ t1.concatenate(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/constants.java b/gnu/testlet/java/awt/geom/AffineTransform/constants.java
new file mode 100644
index 00000000..90ecba0e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/constants.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Verifies constant values for the {@link AffineTransform} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(AffineTransform.TYPE_FLIP == 64);
+ harness.check(AffineTransform.TYPE_GENERAL_ROTATION == 16);
+ harness.check(AffineTransform.TYPE_GENERAL_SCALE == 4);
+ harness.check(AffineTransform.TYPE_GENERAL_TRANSFORM == 32);
+ harness.check(AffineTransform.TYPE_IDENTITY == 0);
+ harness.check(AffineTransform.TYPE_MASK_ROTATION == 24);
+ harness.check(AffineTransform.TYPE_MASK_SCALE == 6);
+ harness.check(AffineTransform.TYPE_QUADRANT_ROTATION == 8);
+ harness.check(AffineTransform.TYPE_TRANSLATION == 1);
+ harness.check(AffineTransform.TYPE_UNIFORM_SCALE == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/constructors.java b/gnu/testlet/java/awt/geom/AffineTransform/constructors.java
new file mode 100644
index 00000000..fd78888e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/constructors.java
@@ -0,0 +1,148 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform()");
+ AffineTransform t = new AffineTransform();
+ harness.check(t.getScaleX(), 1.0);
+ harness.check(t.getScaleY(), 1.0);
+ harness.check(t.getTranslateX(), 0.0);
+ harness.check(t.getTranslateY(), 0.0);
+ harness.check(t.getShearX(), 0.0);
+ harness.check(t.getShearY(), 0.0);
+ harness.check(t.getType() == AffineTransform.TYPE_IDENTITY);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform(AffineTransform)");
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ AffineTransform t2 = new AffineTransform(t1);
+ harness.check(t2.getScaleX(), 1.0);
+ harness.check(t2.getScaleY(), 4.0);
+ harness.check(t2.getTranslateX(), 5.0);
+ harness.check(t2.getTranslateY(), 6.0);
+ harness.check(t2.getShearX(), 3.0);
+ harness.check(t2.getShearY(), 2.0);
+ harness.check(t2.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform(double[])");
+ double[] d1 = new double[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
+ AffineTransform t1 = new AffineTransform(d1);
+ harness.check(t1.getScaleX(), 1.0);
+ harness.check(t1.getScaleY(), 4.0);
+ harness.check(t1.getTranslateX(), 5.0);
+ harness.check(t1.getTranslateY(), 6.0);
+ harness.check(t1.getShearX(), 3.0);
+ harness.check(t1.getShearY(), 2.0);
+ harness.check(t1.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+
+ double[] d2 = new double[] {1.0, 2.0, 3.0, 4.0};
+ AffineTransform t2 = new AffineTransform(d2);
+ harness.check(t2.getScaleX(), 1.0);
+ harness.check(t2.getScaleY(), 4.0);
+ harness.check(t2.getTranslateX(), 0.0);
+ harness.check(t2.getTranslateY(), 0.0);
+ harness.check(t2.getShearX(), 3.0);
+ harness.check(t2.getShearY(), 2.0);
+ harness.check(t2.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform(double, double, double, double, double, double)");
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t1.getScaleX(), 1.0);
+ harness.check(t1.getScaleY(), 4.0);
+ harness.check(t1.getTranslateX(), 5.0);
+ harness.check(t1.getTranslateY(), 6.0);
+ harness.check(t1.getShearX(), 3.0);
+ harness.check(t1.getShearY(), 2.0);
+ harness.check(t1.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform(float[])");
+ float[] f1 = new float[] {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};
+ AffineTransform t1 = new AffineTransform(f1);
+ harness.check(t1.getScaleX(), 1.0f);
+ harness.check(t1.getScaleY(), 4.0f);
+ harness.check(t1.getTranslateX(), 5.0f);
+ harness.check(t1.getTranslateY(), 6.0f);
+ harness.check(t1.getShearX(), 3.0f);
+ harness.check(t1.getShearY(), 2.0f);
+ harness.check(t1.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+
+ float[] d2 = new float[] {1.0f, 2.0f, 3.0f, 4.0f};
+ AffineTransform t2 = new AffineTransform(d2);
+ harness.check(t2.getScaleX(), 1.0f);
+ harness.check(t2.getScaleY(), 4.0f);
+ harness.check(t2.getTranslateX(), 0.0);
+ harness.check(t2.getTranslateY(), 0.0);
+ harness.check(t2.getShearX(), 3.0f);
+ harness.check(t2.getShearY(), 2.0f);
+ harness.check(t2.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("AffineTransform(float, float, float, float, float, float)");
+ AffineTransform t1 = new AffineTransform(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f);
+ harness.check(t1.getScaleX(), 1.0f);
+ harness.check(t1.getScaleY(), 4.0f);
+ harness.check(t1.getTranslateX(), 5.0f);
+ harness.check(t1.getTranslateY(), 6.0f);
+ harness.check(t1.getShearX(), 3.0f);
+ harness.check(t1.getShearY(), 2.0f);
+ harness.check(t1.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/createInverse.java b/gnu/testlet/java/awt/geom/AffineTransform/createInverse.java
new file mode 100644
index 00000000..49943e3f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/createInverse.java
@@ -0,0 +1,83 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class createInverse implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // inverse of identity is identity
+ AffineTransform t1 = new AffineTransform();
+ try
+ {
+ AffineTransform t2 = t1.createInverse();
+ harness.check(t2.getType() == AffineTransform.TYPE_IDENTITY);
+ }
+ catch (NoninvertibleTransformException e)
+ {
+ harness.check(false);
+ }
+
+
+ t1 = new AffineTransform(7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
+ try
+ {
+ AffineTransform t3 = t1.createInverse();
+ harness.check(t3.getScaleX(), -5.0);
+ harness.check(t3.getShearX(), 4.5);
+ harness.check(t3.getTranslateX(), 1.0);
+ harness.check(t3.getShearY(), 4.0);
+ harness.check(t3.getScaleY(), -3.5);
+ harness.check(t3.getTranslateY(), -2.0);
+ }
+ catch (NoninvertibleTransformException e)
+ {
+ harness.check(false);
+ }
+
+ AffineTransform t4 = new AffineTransform(3.0, 3.0, 3.0, 3.0, 3.0, 3.0);
+ try
+ {
+ @SuppressWarnings("unused")
+ AffineTransform t5 = t4.createInverse();
+ harness.check(false);
+ }
+ catch (NoninvertibleTransformException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/createTransformedShape.java b/gnu/testlet/java/awt/geom/AffineTransform/createTransformedShape.java
new file mode 100644
index 00000000..8ed8518b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/createTransformedShape.java
@@ -0,0 +1,79 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.PathIterator;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class createTransformedShape implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform();
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Shape shape1 = t1.createTransformedShape(line1);
+ GeneralPath p1 = (GeneralPath) shape1;
+ PathIterator iterator = p1.getPathIterator(null);
+ double[] c = new double[6];
+
+ harness.check(!iterator.isDone());
+ harness.check(iterator.currentSegment(c), PathIterator.SEG_MOVETO);
+ harness.check(c[0], 1.0);
+ harness.check(c[1], 2.0);
+
+ iterator.next();
+ harness.check(!iterator.isDone());
+ harness.check(iterator.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 3.0);
+ harness.check(c[1], 4.0);
+
+ iterator.next();
+ harness.check(iterator.isDone());
+
+ // tricky case here - passing a null argument does NOT throw a
+ // NullPointerException (see bug parade report 4190350).
+ boolean pass = true;
+ try
+ {
+ t1.createTransformedShape(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/deltaTransform.java b/gnu/testlet/java/awt/geom/AffineTransform/deltaTransform.java
new file mode 100644
index 00000000..2a0ee652
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/deltaTransform.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class deltaTransform implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = AffineTransform.getScaleInstance(2.0, 3.0);
+ double[] v = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
+ double[] expected = new double[] { 1.0, 2.0, 6.0, 12.0, 10.0, 18.0, 14.0, 24.0, 9.0, 10.0 };
+ t1.deltaTransform(v, 2, v, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(v[i], expected[i]);
+ }
+
+ Point2D p1 = new Point2D.Double(1.0, 2.0);
+ Point2D p2 = t1.deltaTransform(p1, null);
+ harness.check(p2.getX(), 2.0);
+ harness.check(p2.getY(), 6.0);
+
+ t1.deltaTransform(p1, p1);
+ harness.check(p1.getX(), 2.0);
+ harness.check(p1.getY(), 6.0);
+
+ boolean pass = false;
+ try
+ {
+ t1.deltaTransform(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/equals.java b/gnu/testlet/java/awt/geom/AffineTransform/equals.java
new file mode 100644
index 00000000..c291472b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/equals.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ AffineTransform t2 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t1.equals(t2));
+ harness.check(t2.equals(t1));
+
+ t1 = new AffineTransform(0.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(0.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t1.equals(t2));
+
+ t1 = new AffineTransform(1.0, 0.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(1.0, 0.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t1.equals(t2));
+
+ t1 = new AffineTransform(1.0, 2.0, 0.0, 4.0, 5.0, 6.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(1.0, 2.0, 0.0, 4.0, 5.0, 6.0);
+ harness.check(t1.equals(t2));
+
+ t1 = new AffineTransform(1.0, 2.0, 3.0, 0.0, 5.0, 6.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(1.0, 2.0, 3.0, 0.0, 5.0, 6.0);
+ harness.check(t1.equals(t2));
+
+ t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 0.0, 6.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 0.0, 6.0);
+ harness.check(t1.equals(t2));
+
+ t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 0.0);
+ harness.check(!t1.equals(t2));
+ t2 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 0.0);
+ harness.check(t1.equals(t2));
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getDeterminant.java b/gnu/testlet/java/awt/geom/AffineTransform/getDeterminant.java
new file mode 100644
index 00000000..abd56c1b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getDeterminant.java
@@ -0,0 +1,44 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class getDeterminant implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t.getDeterminant(), 1.0 * 4.0 - 2.0 * 3.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getMatrix.java b/gnu/testlet/java/awt/geom/AffineTransform/getMatrix.java
new file mode 100644
index 00000000..a747840e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getMatrix.java
@@ -0,0 +1,81 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class getMatrix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ double[] m = new double[4];
+ t.getMatrix(m);
+ harness.check(m[0], 1.0);
+ harness.check(m[1], 2.0);
+ harness.check(m[2], 3.0);
+ harness.check(m[3], 4.0);
+
+ m = new double[6];
+ t.getMatrix(m);
+ harness.check(m[0], 1.0);
+ harness.check(m[1], 2.0);
+ harness.check(m[2], 3.0);
+ harness.check(m[3], 4.0);
+ harness.check(m[4], 5.0);
+ harness.check(m[5], 6.0);
+
+ boolean pass = false;
+ m = new double[2];
+ try
+ {
+ t.getMatrix(m);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ t.getMatrix(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getRotateInstance.java b/gnu/testlet/java/awt/geom/AffineTransform/getRotateInstance.java
new file mode 100644
index 00000000..cb443e4b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getRotateInstance.java
@@ -0,0 +1,60 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class getRotateInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = AffineTransform.getRotateInstance(0.5);
+ harness.check(t.getScaleX(), Math.cos(0.5));
+ harness.check(t.getShearX(), -Math.sin(0.5));
+ harness.check(t.getTranslateX(), 0.0);
+ harness.check(t.getShearY(), Math.sin(0.5));
+ harness.check(t.getScaleY(), Math.cos(0.5));
+ harness.check(t.getTranslateY(), 0.0);
+ harness.check(t.getType() == AffineTransform.TYPE_GENERAL_ROTATION);
+
+ t = AffineTransform.getRotateInstance(0.5, 1.0, 2.0);
+ harness.check(t.getScaleX(), Math.cos(0.5));
+ harness.check(t.getShearX(), -Math.sin(0.5));
+ harness.check(t.getTranslateX(), 1.0 - 1.0 * Math.cos(0.5) + 2.0 * Math.sin(0.5));
+ harness.check(t.getShearY(), Math.sin(0.5));
+ harness.check(t.getScaleY(), Math.cos(0.5));
+ harness.check(t.getTranslateY(), 2.0 - 1.0 * Math.sin(0.5) - 2.0 * Math.cos(0.5));
+ harness.check(t.getType() == (AffineTransform.TYPE_TRANSLATION | AffineTransform.TYPE_GENERAL_ROTATION));
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getScaleInstance.java b/gnu/testlet/java/awt/geom/AffineTransform/getScaleInstance.java
new file mode 100644
index 00000000..e422c40b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getScaleInstance.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class getScaleInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = AffineTransform.getScaleInstance(1.0, 2.0);
+ harness.check(t.getScaleX(), 1.0);
+ harness.check(t.getShearX(), 0.0);
+ harness.check(t.getTranslateX(), 0.0);
+ harness.check(t.getShearY(), 0.0);
+ harness.check(t.getScaleY(), 2.0);
+ harness.check(t.getTranslateY(), 0.0);
+ harness.check(t.getType() == AffineTransform.TYPE_GENERAL_SCALE);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getShearInstance.java b/gnu/testlet/java/awt/geom/AffineTransform/getShearInstance.java
new file mode 100644
index 00000000..899329a7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getShearInstance.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class getShearInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = AffineTransform.getShearInstance(1.0, 2.0);
+ harness.check(t.getScaleX(), 1.0);
+ harness.check(t.getShearX(), 1.0);
+ harness.check(t.getTranslateX(), 0.0);
+ harness.check(t.getShearY(), 2.0);
+ harness.check(t.getScaleY(), 1.0);
+ harness.check(t.getTranslateY(), 0.0);
+ harness.check(t.getType() == AffineTransform.TYPE_GENERAL_TRANSFORM);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/getTranslateInstance.java b/gnu/testlet/java/awt/geom/AffineTransform/getTranslateInstance.java
new file mode 100644
index 00000000..db8c1667
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/getTranslateInstance.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class getTranslateInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t = AffineTransform.getTranslateInstance(1.0, 2.0);
+ harness.check(t.getScaleX(), 1.0);
+ harness.check(t.getShearX(), 0.0);
+ harness.check(t.getTranslateX(), 1.0);
+ harness.check(t.getShearY(), 0.0);
+ harness.check(t.getScaleY(), 1.0);
+ harness.check(t.getTranslateY(), 2.0);
+ harness.check(t.getType() == AffineTransform.TYPE_TRANSLATION);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/inverseTransform.java b/gnu/testlet/java/awt/geom/AffineTransform/inverseTransform.java
new file mode 100644
index 00000000..ee61e07f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/inverseTransform.java
@@ -0,0 +1,88 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Point2D;
+
+/**
+* Some tests for the {@link AffineTransform} class.
+*/
+public class inverseTransform implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = AffineTransform.getScaleInstance(0.5, 0.25);
+ double[] v = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
+ double[] expected = new double[] { 1.0, 2.0, 6.0, 16.0, 10.0, 24.0, 14.0, 32.0, 9.0, 10.0 };
+ try
+ {
+ t1.inverseTransform(v, 2, v, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(v[i], expected[i]);
+ }
+ }
+ catch (NoninvertibleTransformException e)
+ {
+ harness.check(false);
+ }
+
+ Point2D p1 = new Point2D.Double(1.0, 2.0);
+ try
+ {
+ Point2D p2 = t1.inverseTransform(p1, null);
+ harness.check(p2.getX(), 2.0);
+ harness.check(p2.getY(), 8.0);
+ t1.inverseTransform(p1, p1);
+ harness.check(p1.getX(), 2.0);
+ harness.check(p1.getY(), 8.0);
+ }
+ catch (NoninvertibleTransformException e)
+ {
+ harness.check(false);
+ }
+
+ boolean pass = false;
+ try
+ {
+ t1.inverseTransform(null, null);
+ }
+ catch (NoninvertibleTransformException e1)
+ {
+ pass = false;
+ }
+ catch (NullPointerException e2)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/isIdentity.java b/gnu/testlet/java/awt/geom/AffineTransform/isIdentity.java
new file mode 100644
index 00000000..5c1a25ac
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/isIdentity.java
@@ -0,0 +1,46 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class isIdentity implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t0 = new AffineTransform();
+ harness.check(t0.isIdentity());
+ AffineTransform t1 = AffineTransform.getScaleInstance(0.5, 0.25);
+ harness.check(!t1.isIdentity());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/preConcatenate.java b/gnu/testlet/java/awt/geom/AffineTransform/preConcatenate.java
new file mode 100644
index 00000000..9c803c5b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/preConcatenate.java
@@ -0,0 +1,62 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class preConcatenate implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ AffineTransform t2 = new AffineTransform(7.0, 8.0, 9.0, 10.0, 11.0, 12.0);
+ t1.preConcatenate(t2);
+ harness.check(t1.getScaleX(), 25.0);
+ harness.check(t1.getShearX(), 57.0);
+ harness.check(t1.getTranslateX(), 100.0);
+ harness.check(t1.getShearY(), 28.0);
+ harness.check(t1.getScaleY(), 64.0);
+ harness.check(t1.getTranslateY(), 112.0);
+
+ boolean pass = false;
+ try
+ {
+ t1.preConcatenate(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/setTransform.java b/gnu/testlet/java/awt/geom/AffineTransform/setTransform.java
new file mode 100644
index 00000000..b258ab3a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/setTransform.java
@@ -0,0 +1,69 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class setTransform implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = new AffineTransform();
+ t1.setTransform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+ harness.check(t1.getScaleX(), 1.0);
+ harness.check(t1.getShearY(), 2.0);
+ harness.check(t1.getShearX(), 3.0);
+ harness.check(t1.getScaleY(), 4.0);
+ harness.check(t1.getTranslateX(), 5.0);
+ harness.check(t1.getTranslateY(), 6.0);
+
+ t1.setTransform(new AffineTransform(6.0, 5.0, 4.0, 3.0, 2.0, 1.0));
+ harness.check(t1.getScaleX(), 6.0);
+ harness.check(t1.getShearY(), 5.0);
+ harness.check(t1.getShearX(), 4.0);
+ harness.check(t1.getScaleY(), 3.0);
+ harness.check(t1.getTranslateX(), 2.0);
+ harness.check(t1.getTranslateY(), 1.0);
+
+ boolean pass = false;
+ try
+ {
+ t1.setTransform(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/AffineTransform/transform.java b/gnu/testlet/java/awt/geom/AffineTransform/transform.java
new file mode 100644
index 00000000..afe5d564
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/AffineTransform/transform.java
@@ -0,0 +1,90 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.AffineTransform;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+/**
+ * Some tests for the {@link AffineTransform} class.
+ */
+public class transform implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AffineTransform t1 = AffineTransform.getScaleInstance(2.0, 3.0);
+ double[] d = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
+ double[] expected = new double[] { 1.0, 2.0, 6.0, 12.0, 10.0, 18.0, 14.0, 24.0, 9.0, 10.0 };
+ t1.transform(d, 2, d, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(d[i], expected[i]);
+ }
+
+ d = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
+ float[] f = new float[] { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f };
+ float[] expectedf = new float[] { 1.0f, 2.0f, 6.0f, 12.0f, 10.0f, 18.0f, 14.0f, 24.0f, 9.0f, 10.0f };
+ t1.transform(d, 2, f, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(f[i], expectedf[i]);
+ }
+
+ f = new float[] { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f };
+ d = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
+ t1.transform(f, 2, d, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(d[i], expected[i]);
+ }
+
+ t1.transform(f, 2, f, 2, 3);
+ for (int i = 0; i < 10; i++) {
+ harness.check(f[i], expectedf[i]);
+ }
+
+ Point2D p1 = new Point2D.Double(1.0, 2.0);
+ Point2D p2 = t1.transform(p1, null);
+ harness.check(p2.getX(), 2.0);
+ harness.check(p2.getY(), 6.0);
+
+ t1.transform(p1, p1);
+ harness.check(p1.getX(), 2.0);
+ harness.check(p1.getY(), 6.0);
+
+ boolean pass = false;
+ try
+ {
+ t1.transform(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries b/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries
new file mode 100644
index 00000000..1608f0c6
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries
@@ -0,0 +1,20 @@
+/constants.java/1.1/Thu Aug 12 12:41:52 2004//
+/constructors.java/1.1/Thu Aug 12 12:41:52 2004//
+/contains.java/1.1/Thu Aug 12 12:41:52 2004//
+/containsAngle.java/1.1/Thu Aug 12 12:41:52 2004//
+/equals.java/1.1/Thu Aug 12 12:41:52 2004//
+/getBounds2D.java/1.1/Thu Aug 12 12:41:52 2004//
+/getEndPoint.java/1.1/Thu Aug 12 12:41:52 2004//
+/getPathIterator.java/1.1/Thu Aug 12 12:41:52 2004//
+/getStartPoint.java/1.1/Thu Aug 12 12:41:52 2004//
+/intersects.java/1.1/Thu Aug 12 12:41:52 2004//
+/isEmpty.java/1.1/Thu Aug 12 12:41:52 2004//
+/setAngleExtent.java/1.1/Thu Aug 12 12:41:52 2004//
+/setAngleStart.java/1.1/Thu Aug 12 12:41:52 2004//
+/setAngles.java/1.1/Thu Aug 12 12:41:52 2004//
+/setArc.java/1.1/Thu Aug 12 12:41:52 2004//
+/setArcByCenter.java/1.1/Thu Aug 12 12:41:52 2004//
+/setArcByTangent.java/1.1/Thu Aug 12 12:41:52 2004//
+/setArcType.java/1.1/Thu Aug 12 12:41:52 2004//
+/setFrame.java/1.1/Thu Aug 12 12:41:52 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries.Log
new file mode 100644
index 00000000..1b9aa391
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Double////
+A D/Float////
diff --git a/gnu/testlet/java/awt/geom/Arc2D/CVS/Repository b/gnu/testlet/java/awt/geom/Arc2D/CVS/Repository
new file mode 100644
index 00000000..be05230f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Arc2D
diff --git a/gnu/testlet/java/awt/geom/Arc2D/CVS/Root b/gnu/testlet/java/awt/geom/Arc2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Entries b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Entries
new file mode 100644
index 00000000..ae5457ff
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Entries
@@ -0,0 +1,2 @@
+/clone.java/1.1/Mon Oct 18 22:38:22 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Repository b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Repository
new file mode 100644
index 00000000..275472ca
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Arc2D/Double
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Root b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Double/clone.java b/gnu/testlet/java/awt/geom/Arc2D/Double/clone.java
new file mode 100644
index 00000000..e35a3d1d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Double/clone.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Arc2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Some checks for the clone() method in the {@link Arc2D.Double} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc1 = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, Arc2D.CHORD);
+ Arc2D arc2 = null;
+ arc2 = (Arc2D) arc1.clone();
+ harness.check(arc1.getX() == arc2.getX());
+ harness.check(arc1.getY() == arc2.getY());
+ harness.check(arc1.getWidth() == arc2.getWidth());
+ harness.check(arc1.getHeight() == arc2.getHeight());
+ harness.check(arc1.getAngleStart(), arc2.getAngleStart());
+ harness.check(arc1.getAngleExtent(), arc2.getAngleExtent());
+ harness.check(arc1.getArcType() == arc2.getArcType());
+ harness.check(arc1.getClass() == arc2.getClass());
+ harness.check(arc1 != arc2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Entries b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Entries
new file mode 100644
index 00000000..ae5457ff
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Entries
@@ -0,0 +1,2 @@
+/clone.java/1.1/Mon Oct 18 22:38:22 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Repository b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Repository
new file mode 100644
index 00000000..90502e07
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Arc2D/Float
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Root b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Arc2D/Float/clone.java b/gnu/testlet/java/awt/geom/Arc2D/Float/clone.java
new file mode 100644
index 00000000..6186cc01
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/Float/clone.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Arc2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Some checks for the clone() method in the {@link Arc2D.Float} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc1 = new Arc2D.Float(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, Arc2D.PIE);
+ Arc2D arc2 = null;
+ arc2 = (Arc2D) arc1.clone();
+ harness.check(arc1.getX() == arc2.getX());
+ harness.check(arc1.getY() == arc2.getY());
+ harness.check(arc1.getWidth() == arc2.getWidth());
+ harness.check(arc1.getHeight() == arc2.getHeight());
+ harness.check(arc1.getAngleStart(), arc2.getAngleStart());
+ harness.check(arc1.getAngleExtent(), arc2.getAngleExtent());
+ harness.check(arc1.getArcType() == arc2.getArcType());
+ harness.check(arc1.getClass() == arc2.getClass());
+ harness.check(arc1 != arc2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/constants.java b/gnu/testlet/java/awt/geom/Arc2D/constants.java
new file mode 100644
index 00000000..cfd74371
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/constants.java
@@ -0,0 +1,44 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Verifies constant values for the {@link Arc2D} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Arc2D.CHORD == 1);
+ harness.check(Arc2D.OPEN == 0);
+ harness.check(Arc2D.PIE == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/constructors.java b/gnu/testlet/java/awt/geom/Arc2D/constructors.java
new file mode 100644
index 00000000..f7e5a567
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/constructors.java
@@ -0,0 +1,104 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the constructors for the {@link Arc2D} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // constructor 1
+ Arc2D arc = new Arc2D.Double();
+ harness.check(arc.getArcType() == Arc2D.OPEN);
+ harness.check(arc.getX(), 0.0);
+ harness.check(arc.getY(), 0.0);
+ harness.check(arc.getWidth(), 0.0);
+ harness.check(arc.getHeight(), 0.0);
+ harness.check(arc.getAngleStart(), 0.0);
+ harness.check(arc.getAngleExtent(), 0.0);
+
+ // constructor 2
+ arc = new Arc2D.Double(Arc2D.PIE);
+ harness.check(arc.getArcType() == Arc2D.PIE);
+ harness.check(arc.getX(), 0.0);
+ harness.check(arc.getY(), 0.0);
+ harness.check(arc.getWidth(), 0.0);
+ harness.check(arc.getHeight(), 0.0);
+ harness.check(arc.getAngleStart(), 0.0);
+ harness.check(arc.getAngleExtent(), 0.0);
+
+ // constructor 3
+ arc = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 45, 90.0, Arc2D.CHORD);
+ harness.check(arc.getArcType() == Arc2D.CHORD);
+ harness.check(arc.getX(), 1.0);
+ harness.check(arc.getY(), 2.0);
+ harness.check(arc.getWidth(), 3.0);
+ harness.check(arc.getHeight(), 4.0);
+ harness.check(arc.getAngleStart(), 45.0);
+ harness.check(arc.getAngleExtent(), 90.0);
+
+ boolean pass = false;
+ try
+ {
+ arc = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 45, 90.0, 99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // constructor 4
+ arc = new Arc2D.Double(new Rectangle2D.Double(10.0, 11.0, 12.0, 13.0),
+ 110.0, 35.0, Arc2D.OPEN);
+ harness.check(arc.getArcType() == Arc2D.OPEN);
+ harness.check(arc.getX(), 10.0);
+ harness.check(arc.getY(), 11.0);
+ harness.check(arc.getWidth(), 12.0);
+ harness.check(arc.getHeight(), 13.0);
+ harness.check(arc.getAngleStart(), 110.0);
+ harness.check(arc.getAngleExtent(), 35.0);
+
+ pass = false;
+ try
+ {
+ arc = new Arc2D.Double(null, 110.0, 35.0, Arc2D.OPEN);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/contains.java b/gnu/testlet/java/awt/geom/Arc2D/contains.java
new file mode 100644
index 00000000..cba4d19a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/contains.java
@@ -0,0 +1,106 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the isEmpty() method of the {@link Arc2D} class.
+ */
+public class contains implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // contains(double, double)
+ Arc2D arc = new Arc2D.Double();
+ harness.check(!arc.contains(0.0, 0.0)); // check 1
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.CHORD);
+ harness.check(!arc.contains(0.0, 0.0)); // check 2
+ harness.check(!arc.contains(1.0, 0.0)); // check 3
+ harness.check(!arc.contains(0.0, 1.0)); // check 4
+ harness.check(!arc.contains(0.5, 0.5)); // check 5
+ harness.check(!arc.contains(0.5, -0.5)); // check 6
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ harness.check(arc.contains(0.0, 0.0)); // check 7
+ harness.check(!arc.contains(1.0, 0.0)); // check 8
+ harness.check(!arc.contains(0.0, 1.0)); // check 9
+ harness.check(!arc.contains(0.5, 0.5)); // check 10
+ harness.check(arc.contains(0.5, -0.5)); // check 11
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.OPEN);
+ harness.check(!arc.contains(0.0, 0.0)); // check 12
+ harness.check(!arc.contains(1.0, 0.0)); // check 13
+ harness.check(!arc.contains(0.0, 1.0)); // check 14
+ harness.check(!arc.contains(0.5, 0.5)); // check 15
+ harness.check(!arc.contains(0.5, -0.5)); // check 16
+
+ // contains(double, double, double, double)
+ arc = new Arc2D.Double();
+ harness.check(!arc.contains(0.0, 0.0, 0.0, 0.0)); // check 17
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.CHORD);
+ harness.check(!arc.contains(0.45, -0.55, 0.1, 0.1)); // check 18
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ harness.check(arc.contains(0.45, -0.55, 0.1, 0.1)); // check 19
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.OPEN);
+ harness.check(!arc.contains(0.45, -0.55, 0.1, 0.1)); // check 20
+
+ // contains(Rectangle2D)
+ arc = new Arc2D.Double();
+ harness.check( // check 21
+ !arc.contains(new Rectangle2D.Double(0.0, 0.0, 0.0, 0.0))
+ );
+
+ Rectangle2D r = new Rectangle2D.Double(0.45, -0.55, 0.1, 0.1);
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.CHORD);
+ harness.check(!arc.contains(r)); // check 22
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ harness.check(arc.contains(r)); // check 23
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.OPEN);
+ harness.check(!arc.contains(r)); // check 24
+
+ boolean pass = false;
+ try
+ {
+ arc.contains((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 25
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/containsAngle.java b/gnu/testlet/java/awt/geom/Arc2D/containsAngle.java
new file mode 100644
index 00000000..a635d53f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/containsAngle.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the containsAngle() method of the {@link Arc2D} class.
+ */
+public class containsAngle implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ harness.check(!arc.containsAngle(0.0)); // check 1
+
+ arc = new Arc2D.Double(
+ new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0), 90.0, 90.0, Arc2D.PIE
+ );
+ harness.check(!arc.containsAngle(0.0)); // check 2
+ harness.check(!arc.containsAngle(45.0)); // check 3
+ harness.check(arc.containsAngle(90.0)); // check 4
+ harness.check(arc.containsAngle(135.0)); // check 5
+ harness.check(!arc.containsAngle(180.0)); // check 6
+ harness.check(!arc.containsAngle(225.0)); // check 7
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/equals.java b/gnu/testlet/java/awt/geom/Arc2D/equals.java
new file mode 100644
index 00000000..900e7499
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/equals.java
@@ -0,0 +1,46 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the equals() method for the {@link Arc2D} class.
+*/
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // Arc2D does NOT override equals()
+ Arc2D arc1 = new Arc2D.Double();
+ Arc2D arc2 = new Arc2D.Double();
+ harness.check(!arc1.equals(arc2));
+ harness.check(!arc1.equals(null));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/getBounds2D.java b/gnu/testlet/java/awt/geom/Arc2D/getBounds2D.java
new file mode 100644
index 00000000..7f8b42d9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/getBounds2D.java
@@ -0,0 +1,57 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the getBounds2D() method of the {@link Arc2D} class.
+ */
+public class getBounds2D implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ Rectangle2D b = arc.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.0);
+ harness.check(b.getHeight(), 0.0);
+
+ arc = new Arc2D.Double(
+ new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0), 90, 90, Arc2D.PIE
+ );
+ b = arc.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.5);
+ harness.check(b.getHeight(), 0.5);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/getEndPoint.java b/gnu/testlet/java/awt/geom/Arc2D/getEndPoint.java
new file mode 100644
index 00000000..44ef0521
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/getEndPoint.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Tests the getEndPoint() method of the {@link Arc2D} class.
+ */
+public class getEndPoint implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ Point2D p = arc.getEndPoint();
+ harness.check(p.getX(), 0.0);
+ harness.check(p.getY(), -1.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/getPathIterator.java b/gnu/testlet/java/awt/geom/Arc2D/getPathIterator.java
new file mode 100644
index 00000000..c142edbb
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/getPathIterator.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.PathIterator;
+
+/**
+ * Tests the getPathIterator() method of the {@link Arc2D} class.
+ */
+public class getPathIterator implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ double[] c = new double[6];
+ Arc2D arc1 = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 0.0, 90.0, Arc2D.PIE);
+ PathIterator iterator = arc1.getPathIterator(null);
+ harness.check(!iterator.isDone());
+ int segType = iterator.currentSegment(c);
+ harness.check(segType == PathIterator.SEG_MOVETO);
+ harness.check(c[0], 4.0);
+ harness.check(c[1], 4.0);
+ harness.check(!iterator.isDone());
+ iterator.next();
+ segType = iterator.currentSegment(c);
+ harness.check(segType == PathIterator.SEG_CUBICTO);
+ harness.check(c[0], 4.0);
+ harness.check(c[1], 2.8954305003384135);
+ harness.check(c[2], 3.3284271247461903);
+ harness.check(c[3], 2.0);
+ harness.check(c[4], 2.5);
+ harness.check(c[5], 2.0);
+ iterator.next();
+ segType = iterator.currentSegment(c);
+ harness.check(segType == PathIterator.SEG_LINETO);
+ harness.check(c[0], 2.5);
+ harness.check(c[1], 4.0);
+ iterator.next();
+ segType = iterator.currentSegment(c);
+ harness.check(segType == PathIterator.SEG_CLOSE);
+ iterator.next();
+ harness.check(iterator.isDone());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/getStartPoint.java b/gnu/testlet/java/awt/geom/Arc2D/getStartPoint.java
new file mode 100644
index 00000000..a26938cd
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/getStartPoint.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Tests the getStartPoint() method of the {@link Arc2D} class.
+ */
+public class getStartPoint implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ Point2D p = arc.getStartPoint();
+ harness.check(p.getX(), 1.0);
+ harness.check(p.getY(), 0.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/intersects.java b/gnu/testlet/java/awt/geom/Arc2D/intersects.java
new file mode 100644
index 00000000..e26b5325
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/intersects.java
@@ -0,0 +1,64 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the intersects() method of the {@link Arc2D} class.
+ */
+public class intersects implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ harness.check(!arc.intersects(0.0, 0.0, 0.0, 0.0));
+ harness.check(!arc.intersects(1.0, 2.0, 3.0, 4.0));
+
+ arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ harness.check(arc.intersects(-1.0, 0.0, 1.0, 1.0));
+ harness.check(arc.intersects(-1.0, -1.0, 1.0, 1.0));
+ harness.check(arc.intersects(0.0, 0.0, 1.0, 1.0));
+ harness.check(arc.intersects(0.0, -1.0, 1.0, 1.0));
+ harness.check(!arc.intersects(5.0, 5.0, 1.0, 1.0));
+
+ arc = new Arc2D.Double();
+ harness.check(!arc.intersects(new Rectangle2D.Double(0.0, 0.0, 0.0, 0.0)));
+ boolean pass = false;
+ try {
+ arc.intersects(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/isEmpty.java b/gnu/testlet/java/awt/geom/Arc2D/isEmpty.java
new file mode 100644
index 00000000..1e82c9f3
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/isEmpty.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the isEmpty() method of the {@link Arc2D} class.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ harness.check(arc.isEmpty());
+
+ arc = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, Arc2D.CHORD);
+ harness.check(!arc.isEmpty());
+ arc = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, Arc2D.PIE);
+ harness.check(!arc.isEmpty());
+ arc = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, Arc2D.OPEN);
+ harness.check(!arc.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setAngleExtent.java b/gnu/testlet/java/awt/geom/Arc2D/setAngleExtent.java
new file mode 100644
index 00000000..fbc5fcf7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setAngleExtent.java
@@ -0,0 +1,45 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the setAngleExtent() method of the {@link Arc2D} class.
+ */
+public class setAngleExtent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // setAngleExtent(double)
+ Arc2D arc = new Arc2D.Double(0.0, 0.0, 1.0, 1.0, 0.0, 90.0, Arc2D.PIE);
+ arc.setAngleExtent(85.0);
+ harness.check(arc.getAngleExtent(), 85.0);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setAngleStart.java b/gnu/testlet/java/awt/geom/Arc2D/setAngleStart.java
new file mode 100644
index 00000000..8b42b782
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setAngleStart.java
@@ -0,0 +1,61 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Tests the setAngleStart() method of the {@link Arc2D} class.
+ */
+public class setAngleStart implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // setAngleStart(double)
+ Arc2D arc = new Arc2D.Double(0.0, 0.0, 1.0, 1.0, 0.0, 90.0, Arc2D.PIE);
+ arc.setAngleStart(85.0);
+ harness.check(arc.getAngleStart(), 85.0);
+
+ // setAngleStart(Point2D)
+ arc.setAngleStart(new Point2D.Double(1.0, 1.0));
+ harness.check(arc.getAngleStart(), -45.0);
+ boolean pass = false;
+ try
+ {
+ arc.setAngleStart(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setAngles.java b/gnu/testlet/java/awt/geom/Arc2D/setAngles.java
new file mode 100644
index 00000000..2ee18d20
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setAngles.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Tests the setAngles() method of the {@link Arc2D} class.
+ */
+public class setAngles implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // setAngles(double, double, double, double)
+ Arc2D arc = new Arc2D.Double(-1.0, -1.0, 2.0, 2.0, 0.0, 90.0, Arc2D.PIE);
+ arc.setAngles(1.0, -1.0, -1.0, -1.0);
+ harness.check(arc.getAngleStart(), 45.0);
+ harness.check(arc.getAngleExtent(), 90.0);
+
+ // setAngleStart(Point2D, Point2D)
+ arc.setAngles(new Point2D.Double(1.0, 1.0), new Point2D.Double(-1.0, 1.0));
+ harness.check(arc.getAngleStart(), -45.0);
+ harness.check(arc.getAngleExtent(), 270.0);
+
+ boolean pass = false;
+ try
+ {
+ arc.setAngles(null, new Point2D.Double(-1.0, 1.0));
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ arc.setAngles(new Point2D.Double(-1.0, 1.0), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setArc.java b/gnu/testlet/java/awt/geom/Arc2D/setArc.java
new file mode 100644
index 00000000..29354307
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setArc.java
@@ -0,0 +1,141 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the setArc() method of the {@link Arc2D} class.
+ */
+public class setArc implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // setArc(Arc2D)
+ Arc2D arc1 = new Arc2D.Double();
+ Arc2D arc2 = new Arc2D.Double(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, Arc2D.PIE);
+ arc1.setArc(arc2);
+ harness.check(arc1.getX(), 1.0);
+ harness.check(arc1.getY(), 2.0);
+ harness.check(arc1.getWidth(), 3.0);
+ harness.check(arc1.getHeight(), 4.0);
+ harness.check(arc1.getAngleStart(), 5.0);
+ harness.check(arc1.getAngleExtent(), 6.0);
+ harness.check(arc1.getArcType() == Arc2D.PIE);
+
+ boolean pass = false;
+ try
+ {
+ arc1.setArc(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // setArc(double, double, double, double, double, double, int)
+ arc1 = new Arc2D.Double();
+ arc1.setArc(6.0, 5.0, 4.0, 3.0, 2.0, 1.0, Arc2D.OPEN);
+ harness.check(arc1.getX(), 6.0);
+ harness.check(arc1.getY(), 5.0);
+ harness.check(arc1.getWidth(), 4.0);
+ harness.check(arc1.getHeight(), 3.0);
+ harness.check(arc1.getAngleStart(), 2.0);
+ harness.check(arc1.getAngleExtent(), 1.0);
+ harness.check(arc1.getArcType() == Arc2D.OPEN);
+
+ // setArc(Point2D, Dimension2D, double, double, int)
+ arc1 = new Arc2D.Double();
+ arc1.setArc(
+ new Point2D.Double(1.0, 2.0),
+ new Dimension(3, 4),
+ 5.0, 6.0, Arc2D.CHORD
+ );
+ harness.check(arc1.getX(), 1.0);
+ harness.check(arc1.getY(), 2.0);
+ harness.check(arc1.getWidth(), 3.0);
+ harness.check(arc1.getHeight(), 4.0);
+ harness.check(arc1.getAngleStart(), 5.0);
+ harness.check(arc1.getAngleExtent(), 6.0);
+ harness.check(arc1.getArcType() == Arc2D.CHORD);
+
+ pass = false;
+ try
+ {
+ arc1.setArc(null, new Dimension(3, 4), 5.0, 6.0, Arc2D.CHORD);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ arc1.setArc(new Point2D.Double(1.0, 2.0), null, 5.0, 6.0, Arc2D.CHORD);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // setArc(Rectangle2D, double, double, int)
+ arc1 = new Arc2D.Double();
+ arc1.setArc(
+ new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0),
+ 5.0, 6.0, Arc2D.OPEN
+ );
+ harness.check(arc1.getX(), 1.0);
+ harness.check(arc1.getY(), 2.0);
+ harness.check(arc1.getWidth(), 3.0);
+ harness.check(arc1.getHeight(), 4.0);
+ harness.check(arc1.getAngleStart(), 5.0);
+ harness.check(arc1.getAngleExtent(), 6.0);
+ harness.check(arc1.getArcType() == Arc2D.OPEN);
+
+ pass = false;
+ try
+ {
+ arc1.setArc(null, 5.0, 6.0, Arc2D.CHORD);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setArcByCenter.java b/gnu/testlet/java/awt/geom/Arc2D/setArcByCenter.java
new file mode 100644
index 00000000..eb75e806
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setArcByCenter.java
@@ -0,0 +1,63 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the setArcByCenter() method of the {@link Arc2D} class.
+ */
+public class setArcByCenter implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc1 = new Arc2D.Double();
+ arc1.setArcByCenter(1.0, 2.0, 3.0, 4.0, 5.0, Arc2D.PIE);
+ harness.check(arc1.getX(), -2.0);
+ harness.check(arc1.getY(), -1.0);
+ harness.check(arc1.getWidth(), 6.0);
+ harness.check(arc1.getHeight(), 6.0);
+ harness.check(arc1.getAngleStart(), 4.0);
+ harness.check(arc1.getAngleExtent(), 5.0);
+ harness.check(arc1.getArcType() == Arc2D.PIE);
+
+ // check for illegal closure type
+ boolean pass = false;
+ try
+ {
+ arc1.setArcByCenter(1.0, 2.0, 3.0, 4.0, 5.0, 99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setArcByTangent.java b/gnu/testlet/java/awt/geom/Arc2D/setArcByTangent.java
new file mode 100644
index 00000000..d5493b81
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setArcByTangent.java
@@ -0,0 +1,107 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Tests the setArcByTangent() method of the {@link Arc2D} class.
+ */
+public class setArcByTangent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ arc.setArcByTangent(
+ new Point2D.Double(10.0, 0.0),
+ new Point2D.Double(0.0, 0.0),
+ new Point2D.Double(0.0, 10.0),
+ 1.0
+ );
+ harness.check(arc.getAngleStart(), 90.0);
+ harness.check(arc.getAngleExtent(), 90.0);
+
+ harness.checkPoint("Null arguments");
+ testNullArguments(harness);
+ }
+
+ private void testNullArguments(TestHarness harness)
+ {
+ boolean pass = false;
+ Arc2D arc = new Arc2D.Double();
+ try
+ {
+ arc.setArcByTangent(
+ null,
+ new Point2D.Double(0.0, 0.0),
+ new Point2D.Double(0.0, 10.0),
+ 1.0
+ );
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ arc.setArcByTangent(
+ new Point2D.Double(10.0, 0.0),
+ null,
+ new Point2D.Double(0.0, 10.0),
+ 1.0
+ );
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ arc.setArcByTangent(
+ new Point2D.Double(10.0, 0.0),
+ new Point2D.Double(0.0, 10.0),
+ null,
+ 1.0
+ );
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setArcType.java b/gnu/testlet/java/awt/geom/Arc2D/setArcType.java
new file mode 100644
index 00000000..01ba5124
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setArcType.java
@@ -0,0 +1,58 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the setArcType() method in the {@link Arc2D} class.
+ */
+public class setArcType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double();
+ arc.setArcType(Arc2D.OPEN);
+ harness.check(arc.getArcType() == Arc2D.OPEN);
+ arc.setArcType(Arc2D.CHORD);
+ harness.check(arc.getArcType() == Arc2D.CHORD);
+ arc.setArcType(Arc2D.PIE);
+ harness.check(arc.getArcType() == Arc2D.PIE);
+
+ boolean pass = false;
+ try {
+ arc.setArcType(99);
+ }
+ catch (IllegalArgumentException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Arc2D/setFrame.java b/gnu/testlet/java/awt/geom/Arc2D/setFrame.java
new file mode 100644
index 00000000..e2af6212
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Arc2D/setFrame.java
@@ -0,0 +1,48 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Arc2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Arc2D;
+
+/**
+ * Tests the setFrame() method of the {@link Arc2D} class.
+ */
+public class setFrame implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Arc2D arc = new Arc2D.Double(0.0, 0.0, 1.0, 1.0, 0.0, 90.0, Arc2D.PIE);
+ arc.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(arc.getX(), 1.0);
+ harness.check(arc.getY(), 2.0);
+ harness.check(arc.getWidth(), 3.0);
+ harness.check(arc.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/CVS/Entries b/gnu/testlet/java/awt/geom/Area/CVS/Entries
new file mode 100644
index 00000000..d3bc965f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/CVS/Entries
@@ -0,0 +1,19 @@
+/add.java/1.1/Sat Sep 18 16:46:10 2004//
+/clone.java/1.2/Fri Dec 9 15:27:08 2011//
+/constructors.java/1.1/Sat Sep 18 16:46:10 2004//
+/contains.java/1.1/Sat Sep 18 16:46:10 2004//
+/createTransformedArea.java/1.1/Sat Sep 18 16:46:10 2004//
+/equals.java/1.1/Sat Sep 18 16:46:10 2004//
+/exclusiveOr.java/1.1/Sat Sep 18 16:46:10 2004//
+/getBounds.java/1.1/Sat Sep 18 16:46:10 2004//
+/getBounds2D.java/1.1/Sat Sep 18 16:46:10 2004//
+/intersect.java/1.1/Sat Sep 18 16:46:10 2004//
+/intersects.java/1.1/Sat Sep 18 16:46:10 2004//
+/isEmpty.java/1.1/Sat Sep 18 16:46:10 2004//
+/isPolygonal.java/1.1/Sat Sep 18 16:46:10 2004//
+/isRectangular.java/1.1/Sat Sep 18 16:46:10 2004//
+/isSingular.java/1.1/Sat Sep 18 16:46:10 2004//
+/reset.java/1.1/Sat Sep 18 16:46:10 2004//
+/subtract.java/1.1/Sat Sep 18 16:46:10 2004//
+/transform.java/1.1/Sat Sep 18 16:46:10 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Area/CVS/Repository b/gnu/testlet/java/awt/geom/Area/CVS/Repository
new file mode 100644
index 00000000..40d613dc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Area
diff --git a/gnu/testlet/java/awt/geom/Area/CVS/Root b/gnu/testlet/java/awt/geom/Area/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Area/add.java b/gnu/testlet/java/awt/geom/Area/add.java
new file mode 100644
index 00000000..35edd142
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/add.java
@@ -0,0 +1,56 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+* Tests the add() method for the {@link Area} class.
+*/
+public class add implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(area.isRectangular());
+
+ boolean pass = false;
+ try
+ {
+ area.add(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/clone.java b/gnu/testlet/java/awt/geom/Area/clone.java
new file mode 100644
index 00000000..66a9fb3a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/clone.java
@@ -0,0 +1,59 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the clone() method for the {@link Area} class.
+ */
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // clone an empty area
+ Area area1 = new Area();
+ Area area2 = (Area) area1.clone();
+ harness.check(area1.equals(area2));
+ harness.check(area1 != area2);
+
+ // try a simple case
+ area1 = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ area2 = (Area) area1.clone();
+ harness.check(area1.equals(area2));
+ harness.check(area1 != area2);
+
+ // ditto for different factory method
+ area1 = new Area(new Rectangle2D.Float(1.0f, 2.0f, 3.0f, 4.0f));
+ area2 = (Area) area1.clone();
+ harness.check(area1.equals(area2));
+ harness.check(area1 != area2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/constructors.java b/gnu/testlet/java/awt/geom/Area/constructors.java
new file mode 100644
index 00000000..dbea901a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/constructors.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the constructors for the {@link Area} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // constructor 1
+ Area area = new Area();
+ harness.check(area.isEmpty());
+ harness.check(area.isSingular());
+
+ // an empty area is treated as polygonal and rectangular
+ harness.check(area.isPolygonal());
+ harness.check(area.isRectangular());
+
+ // constructor 2
+ area = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(!area.isEmpty());
+ harness.check(area.isPolygonal());
+ harness.check(area.isRectangular());
+ harness.check(area.isSingular());
+
+ boolean pass = false;
+ try
+ {
+ area = new Area(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/contains.java b/gnu/testlet/java/awt/geom/Area/contains.java
new file mode 100644
index 00000000..0795eb22
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/contains.java
@@ -0,0 +1,77 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the contains() method for the {@link Area} class.
+ */
+public class contains implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // contains(double, double)
+ Area area = new Area();
+ harness.check(!area.contains(0.0, 0.0));
+
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(area.contains(1.0, 1.0));
+ harness.check(!area.contains(1.0, 2.0));
+ harness.check(!area.contains(2.0, 1.0));
+ harness.check(!area.contains(2.0, 2.0));
+
+ // contains(Point2D)
+ boolean pass = false;
+ try
+ {
+ area.contains((Point2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // contains(Rectangle2D)
+ pass = false;
+ try
+ {
+ area.contains((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/createTransformedArea.java b/gnu/testlet/java/awt/geom/Area/createTransformedArea.java
new file mode 100644
index 00000000..09dde073
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/createTransformedArea.java
@@ -0,0 +1,76 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the createTransformedArea() method for the {@link Area} class.
+ */
+public class createTransformedArea implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test an empty area
+ Area area1 = new Area();
+ Area area2 = area1.createTransformedArea(AffineTransform.getScaleInstance(2.0, 2.0));
+ harness.check(area1.isEmpty());
+ harness.check(area2.isEmpty());
+ harness.check(area1 != area2);
+
+ // test a simple area
+ area1 = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ AffineTransform at = AffineTransform.getScaleInstance(2.0, 2.0);
+ area2 = area1.createTransformedArea(at);
+ harness.check(area1 != area2);
+ Rectangle2D b1 = area1.getBounds2D();
+ Rectangle2D b2 = area2.getBounds2D();
+ harness.check(b1.getX() == 1.0);
+ harness.check(b1.getY() == 2.0);
+ harness.check(b1.getWidth() == 3.0);
+ harness.check(b1.getHeight() == 4.0);
+ harness.check(b2.getX() == 2.0);
+ harness.check(b2.getY() == 4.0);
+ harness.check(b2.getWidth() == 6.0);
+ harness.check(b2.getHeight() == 8.0);
+
+ // null transform should throw exception
+ boolean pass = false;
+ try {
+ area2 = area1.createTransformedArea(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/equals.java b/gnu/testlet/java/awt/geom/Area/equals.java
new file mode 100644
index 00000000..aa66a9bc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/equals.java
@@ -0,0 +1,57 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the equals() method for the {@link Area} class.
+ */
+public class equals implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // be aware that the equals(Object) method is NOT overridden (see
+ // bug parade id 4391558)...
+ Area area1 = new Area();
+ Area area2 = new Area();
+ harness.check(area1.equals(area2));
+ harness.check(!area1.equals((Object) area2));
+
+ // try a simple case
+ area1 = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ area2 = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(area1.equals(area2));
+
+ // equals(null) should return false
+ Area area3 = new Area();
+ harness.check(!area3.equals(null));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/exclusiveOr.java b/gnu/testlet/java/awt/geom/Area/exclusiveOr.java
new file mode 100644
index 00000000..7885fae2
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/exclusiveOr.java
@@ -0,0 +1,73 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the exclusiveOr() method for the {@link Area} class.
+ */
+public class exclusiveOr implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ area.add(new Area(new Rectangle2D.Double(-1.0, -1.0, 2.0, 2.0)));
+ area.exclusiveOr(new Area(new Rectangle2D.Double(0.0, 0.0, 2.0, 2.0)));
+ harness.check(area.contains(-1.0, -1.0)); // check 1
+ harness.check(area.contains(-1.0, 0.0)); // check 2
+ harness.check(!area.contains(-1.0, 1.0)); // check 3
+ harness.check(!area.contains(-1.0, 2.0)); // check 4
+ harness.check(area.contains(0.0, -1.0)); // check 5
+ harness.check(!area.contains(0.0, 0.0)); // check 6
+ harness.check(!area.contains(0.5, 0.5)); // check 7
+ harness.check(area.contains(0.0, 1.0)); // check 8
+ harness.check(!area.contains(0.0, 2.0)); // check 9
+ harness.check(!area.contains(1.0, -1.0)); // check 10
+ harness.check(area.contains(1.0, 0.0)); // check 11
+ harness.check(area.contains(1.0, 1.0)); // check 12
+ harness.check(!area.contains(1.0, 2.0)); // check 13
+ harness.check(!area.contains(2.0, -1.0)); // check 14
+ harness.check(!area.contains(2.0, 0.0)); // check 15
+ harness.check(!area.contains(2.0, 1.0)); // check 16
+ harness.check(!area.contains(2.0, 2.0)); // check 17
+
+ boolean pass = false;
+ try
+ {
+ area.exclusiveOr(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 18
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/getBounds.java b/gnu/testlet/java/awt/geom/Area/getBounds.java
new file mode 100644
index 00000000..d0b55eeb
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/getBounds.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the getBounds() method for the {@link Area} class.
+ */
+public class getBounds implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test an empty area
+ Area area1 = new Area();
+ Rectangle r = area1.getBounds();
+ harness.check(r.isEmpty());
+
+ // try a simple case
+ area1 = new Area(new Rectangle2D.Double(0.5, 0.5, 1.0, 1.0));
+ r = area1.getBounds();
+ harness.check(r.equals(new Rectangle(0, 0, 2, 2)));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/getBounds2D.java b/gnu/testlet/java/awt/geom/Area/getBounds2D.java
new file mode 100644
index 00000000..23c9cd13
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/getBounds2D.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the getBounds2D() method for the {@link Area} class.
+ */
+public class getBounds2D implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test an empty area
+ Area area1 = new Area();
+ Rectangle2D r = area1.getBounds2D();
+ harness.check(r.isEmpty());
+
+ // try a simple case
+ area1 = new Area(new Rectangle2D.Double(0.5, 0.5, 1.0, 1.0));
+ r = area1.getBounds2D();
+ harness.check(r.equals(new Rectangle2D.Double(0.5, 0.5, 1.0, 1.0)));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/intersect.java b/gnu/testlet/java/awt/geom/Area/intersect.java
new file mode 100644
index 00000000..a847d077
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/intersect.java
@@ -0,0 +1,73 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the intersect() method for the {@link Area} class.
+ */
+public class intersect implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ area.add(new Area(new Rectangle2D.Double(-1.0, -1.0, 2.0, 2.0)));
+ area.intersect(new Area(new Rectangle2D.Double(0.0, 0.0, 2.0, 2.0)));
+ harness.check(!area.contains(-1.0, -1.0)); // check 1
+ harness.check(!area.contains(-1.0, 0.0)); // check 2
+ harness.check(!area.contains(-1.0, 1.0)); // check 3
+ harness.check(!area.contains(-1.0, 2.0)); // check 4
+ harness.check(!area.contains(0.0, -1.0)); // check 5
+ harness.check(area.contains(0.0, 0.0)); // check 6
+ harness.check(area.contains(0.5, 0.5)); // check 7
+ harness.check(!area.contains(0.0, 1.0)); // check 8
+ harness.check(!area.contains(0.0, 2.0)); // check 9
+ harness.check(!area.contains(1.0, -1.0)); // check 10
+ harness.check(!area.contains(1.0, 0.0)); // check 11
+ harness.check(!area.contains(1.0, 1.0)); // check 12
+ harness.check(!area.contains(1.0, 2.0)); // check 13
+ harness.check(!area.contains(2.0, -1.0)); // check 14
+ harness.check(!area.contains(2.0, 0.0)); // check 15
+ harness.check(!area.contains(2.0, 1.0)); // check 16
+ harness.check(!area.contains(2.0, 2.0)); // check 17
+
+ boolean pass = false;
+ try
+ {
+ area.intersect(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 18
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/intersects.java b/gnu/testlet/java/awt/geom/Area/intersects.java
new file mode 100644
index 00000000..ea00f397
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/intersects.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the intersects() method for the {@link Area} class.
+ */
+public class intersects implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // intersects(double, double, double, double)
+ Area area = new Area();
+ harness.check(!area.intersects(0.0, 0.0, 0.0, 0.0)); // 1
+
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(!area.intersects(0.0, 0.0, 1.0, 1.0)); // 2
+ harness.check(!area.intersects(1.0, 0.0, 1.0, 1.0)); // 3
+ harness.check(!area.intersects(2.0, 0.0, 1.0, 1.0)); // 4
+ harness.check(!area.intersects(0.0, 1.0, 1.0, 1.0)); // 5
+ harness.check(area.intersects(1.0, 1.0, 1.0, 1.0)); // 6
+ harness.check(!area.intersects(2.0, 1.0, 1.0, 1.0)); // 7
+ harness.check(!area.intersects(0.0, 2.0, 1.0, 1.0)); // 8
+ harness.check(!area.intersects(1.0, 2.0, 1.0, 1.0)); // 9
+ harness.check(!area.intersects(2.0, 2.0, 1.0, 1.0)); // 10
+
+ // intersects(Rectangle2D)
+ area = new Area();
+ boolean pass = false;
+ try
+ {
+ area.intersects((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // 11
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Area/isEmpty.java b/gnu/testlet/java/awt/geom/Area/isEmpty.java
new file mode 100644
index 00000000..1d4ac8ce
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/isEmpty.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the isEmpty() method in the {@link Area} class.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ harness.check(area.isEmpty());
+
+ area = new Area(new Line2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(area.isEmpty());
+
+ area = new Area(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(!area.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/isPolygonal.java b/gnu/testlet/java/awt/geom/Area/isPolygonal.java
new file mode 100644
index 00000000..c2a553cc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/isPolygonal.java
@@ -0,0 +1,55 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the isPolygonal() method in the {@link Area} class.
+ */
+public class isPolygonal implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ harness.check(area.isPolygonal());
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(area.isPolygonal());
+ area.add(new Area(new Rectangle2D.Double(10.0, 10.0, 1.0, 1.0)));
+ harness.check(area.isPolygonal());
+
+ area = new Area(new Ellipse2D.Double());
+ harness.check(area.isPolygonal());
+
+ area = new Area(new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(!area.isPolygonal());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/isRectangular.java b/gnu/testlet/java/awt/geom/Area/isRectangular.java
new file mode 100644
index 00000000..4942aa78
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/isRectangular.java
@@ -0,0 +1,57 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the isRectangular() method in the {@link Area} class.
+ */
+public class isRectangular implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // an empty area is treated as being rectangular
+ Area area = new Area();
+ harness.check(area.isRectangular());
+ area = new Area(new Ellipse2D.Double());
+ harness.check(area.isRectangular());
+
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(area.isRectangular());
+ area.add(new Area(new Rectangle2D.Double(10.0, 10.0, 1.0, 1.0)));
+ harness.check(!area.isRectangular());
+
+ area = new Area(new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(!area.isRectangular());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/isSingular.java b/gnu/testlet/java/awt/geom/Area/isSingular.java
new file mode 100644
index 00000000..5f3099e5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/isSingular.java
@@ -0,0 +1,48 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the isSingular() method in the {@link Area} class.
+ */
+public class isSingular implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ harness.check(area.isSingular());
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(area.isSingular());
+ area.add(new Area(new Rectangle2D.Double(10.0, 10.0, 1.0, 1.0)));
+ harness.check(!area.isSingular());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/reset.java b/gnu/testlet/java/awt/geom/Area/reset.java
new file mode 100644
index 00000000..b0da39cc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/reset.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the reset() method in the {@link Area} class.
+ */
+public class reset implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ area.add(new Area(new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0)));
+ harness.check(!area.isEmpty());
+ area.reset();
+ harness.check(area.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/subtract.java b/gnu/testlet/java/awt/geom/Area/subtract.java
new file mode 100644
index 00000000..e3dc88ca
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/subtract.java
@@ -0,0 +1,73 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the subtract() method for the {@link Area} class.
+ */
+public class subtract implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area();
+ area.add(new Area(new Rectangle2D.Double(-1.0, -1.0, 2.0, 2.0)));
+ area.subtract(new Area(new Rectangle2D.Double(0.0, 0.0, 2.0, 2.0)));
+ harness.check(area.contains(-1.0, -1.0)); // check 1
+ harness.check(area.contains(-1.0, 0.0)); // check 2
+ harness.check(!area.contains(-1.0, 1.0)); // check 3
+ harness.check(!area.contains(-1.0, 2.0)); // check 4
+ harness.check(area.contains(0.0, -1.0)); // check 5
+ harness.check(!area.contains(0.0, 0.0)); // check 6
+ harness.check(!area.contains(0.5, 0.5)); // check 7
+ harness.check(!area.contains(0.0, 1.0)); // check 8
+ harness.check(!area.contains(0.0, 2.0)); // check 9
+ harness.check(!area.contains(1.0, -1.0)); // check 10
+ harness.check(!area.contains(1.0, 0.0)); // check 11
+ harness.check(!area.contains(1.0, 1.0)); // check 12
+ harness.check(!area.contains(1.0, 2.0)); // check 13
+ harness.check(!area.contains(2.0, -1.0)); // check 14
+ harness.check(!area.contains(2.0, 0.0)); // check 15
+ harness.check(!area.contains(2.0, 1.0)); // check 16
+ harness.check(!area.contains(2.0, 2.0)); // check 17
+
+ boolean pass = false;
+ try
+ {
+ area.subtract(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Area/transform.java b/gnu/testlet/java/awt/geom/Area/transform.java
new file mode 100644
index 00000000..831e3686
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Area/transform.java
@@ -0,0 +1,61 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Area;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Area;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the transform() method for the {@link Area} class.
+ */
+public class transform implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Area area = new Area(new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0));
+ area.transform(AffineTransform.getScaleInstance(2.0, 2.0));
+ Rectangle2D bounds = area.getBounds2D();
+ harness.check(bounds.getX(), 0.0);
+ harness.check(bounds.getY(), 0.0);
+ harness.check(bounds.getWidth(), 2.0);
+ harness.check(bounds.getHeight(), 2.0);
+
+ boolean pass = false;
+ try
+ {
+ area.transform(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/CVS/Entries b/gnu/testlet/java/awt/geom/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/geom/CVS/Entries.Log b/gnu/testlet/java/awt/geom/CVS/Entries.Log
new file mode 100644
index 00000000..d0f5e91c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CVS/Entries.Log
@@ -0,0 +1,12 @@
+A D/AffineTransform////
+A D/Arc2D////
+A D/Area////
+A D/CubicCurve2D////
+A D/Ellipse2D////
+A D/FlatteningPathIterator////
+A D/GeneralPath////
+A D/Line2D////
+A D/QuadCurve2D////
+A D/Rectangle2D////
+A D/RectangularShape////
+A D/RoundRectangle2D////
diff --git a/gnu/testlet/java/awt/geom/CVS/Repository b/gnu/testlet/java/awt/geom/CVS/Repository
new file mode 100644
index 00000000..b9f252b2
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom
diff --git a/gnu/testlet/java/awt/geom/CVS/Root b/gnu/testlet/java/awt/geom/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries
new file mode 100644
index 00000000..b6df63e3
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries
@@ -0,0 +1,8 @@
+/clone.java/1.1/Fri Oct 24 11:54:55 2003//
+/getFlatness.java/1.2/Thu Jun 3 14:31:04 2004//
+/getFlatnessSq.java/1.2/Thu Jun 3 14:31:04 2004//
+/getPathIterator.java/1.1/Fri Oct 24 11:54:55 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:55 2003//
+/solveCubic.java/1.2/Thu Nov 6 10:31:45 2003//
+/subdivide.java/1.1/Fri Oct 24 11:54:55 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries.Log
new file mode 100644
index 00000000..1b9aa391
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Double////
+A D/Float////
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Repository b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Repository
new file mode 100644
index 00000000..dfa620eb
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/CubicCurve2D
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Root b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Entries b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Entries
new file mode 100644
index 00000000..0b9d0ea5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Entries
@@ -0,0 +1,8 @@
+/Double.java/1.1/Fri Oct 24 11:54:55 2003//
+/getBounds2D.java/1.1/Fri Oct 24 11:54:55 2003//
+/getCtrlP1.java/1.1/Fri Oct 24 11:54:55 2003//
+/getCtrlP2.java/1.1/Fri Oct 24 11:54:55 2003//
+/getP1.java/1.1/Fri Oct 24 11:54:55 2003//
+/getP2.java/1.1/Fri Oct 24 11:54:55 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:55 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Repository b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Repository
new file mode 100644
index 00000000..806eed91
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/CubicCurve2D/Double
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Root b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/Double.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/Double.java
new file mode 100644
index 00000000..0111fc46
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/Double.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double constructors works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class Double
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness harness)
+ {
+ this.h = harness;
+ testZeroArgs();
+ testEightArgs();
+ }
+
+
+ /**
+ * Checks whether the zero-argument constructor works as specified.
+ */
+ public void testZeroArgs()
+ {
+ CubicCurve2D curve;
+
+ h.checkPoint("noArgs");
+ curve = new CubicCurve2D.Double();
+ h.check(curve.getX1(), 0); // 1
+ h.check(curve.getY1(), 0); // 2
+ h.check(curve.getCtrlX1(), 0); // 3
+ h.check(curve.getCtrlY1(), 0); // 4
+ h.check(curve.getCtrlX2(), 0); // 5
+ h.check(curve.getCtrlY2(), 0); // 6
+ h.check(curve.getX2(), 0); // 7
+ h.check(curve.getY2(), 0); // 8
+ }
+
+
+ /**
+ * Checks whether the eight-argument constructor works as specified.
+ */
+ public void testEightArgs()
+ {
+ CubicCurve2D.Double curve;
+
+ h.checkPoint("eightArgs");
+ curve = new CubicCurve2D.Double(1e1, 2e2, 3e3, 4e4,
+ 5e5, 6e6, 7e7, 8e8);
+
+ h.check(curve.getX1(), 1e1); // 1
+ h.check(curve.getY1(), 2e2); // 2
+ h.check(curve.getCtrlX1(), 3e3); // 3
+ h.check(curve.getCtrlY1(), 4e4); // 4
+ h.check(curve.getCtrlX2(), 5e5); // 5
+ h.check(curve.getCtrlY2(), 6e6); // 6
+ h.check(curve.getX2(), 7e7); // 7
+ h.check(curve.getY2(), 8e8); // 8
+
+ h.check(curve.x1, 1e1); // 9
+ h.check(curve.y1, 2e2); // 10
+ h.check(curve.ctrlx1, 3e3); // 11
+ h.check(curve.ctrly1, 4e4); // 12
+ h.check(curve.ctrlx2, 5e5); // 13
+ h.check(curve.ctrly2, 6e6); // 14
+ h.check(curve.x2, 7e7); // 15
+ h.check(curve.y2, 8e8); // 16
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getBounds2D.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getBounds2D.java
new file mode 100644
index 00000000..19b208ff
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getBounds2D.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+import java.awt.geom.Rectangle2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.getBounds2D method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getBounds2D
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+ Rectangle2D bounds;
+
+ curve = new CubicCurve2D.Double(11, -22, -33, 44, -55, 75, -85, 91);
+ bounds = curve.getBounds2D();
+ harness.check(bounds instanceof Rectangle2D.Double); // 1
+ harness.check(bounds.getX(), -85); // 2
+ harness.check(bounds.getY(), -22); // 3
+ harness.check(bounds.getWidth(), 96); // 4
+ harness.check(bounds.getHeight(), 113); // 5
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP1.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP1.java
new file mode 100644
index 00000000..e5b9cae7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.getCtrlP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+
+ curve = new CubicCurve2D.Double(-1, -2, -3.141, 42, -5, -6, -77, 88);
+ harness.check(curve.getCtrlP1().getX(), -3.141); // Check 1
+ harness.check(curve.getCtrlP1().getY(), 42) ; // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP2.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP2.java
new file mode 100644
index 00000000..b0f38a6e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getCtrlP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.getCtrlP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+
+ curve = new CubicCurve2D.Double(-1, -2, -3.141, 42, -5, -6, -77, 88);
+ harness.check(curve.getCtrlP2().getX(), -5); // Check 1
+ harness.check(curve.getCtrlP2().getY(), -6); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP1.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP1.java
new file mode 100644
index 00000000..69b2b1de
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.getP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+
+ curve = new CubicCurve2D.Double(-1.1e8, -2.2e7, -3, -4, -5, -6, -7, -8);
+ harness.check(curve.getP1().getX(), -1.1e8); // Check 1
+ harness.check(curve.getP1().getY(), -2.2e7); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP2.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP2.java
new file mode 100644
index 00000000..45f9a883
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/getP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.getP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+
+ curve = new CubicCurve2D.Double(-1, -2, -3.141, 42, -5, -6, -77, 88);
+ harness.check(curve.getP2().getX(), -77); // Check 1
+ harness.check(curve.getP2().getY(), 88); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Double/setCurve.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/setCurve.java
new file mode 100644
index 00000000..f43d9885
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Double/setCurve.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Double.setCurve method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Double curve;
+
+ curve = new CubicCurve2D.Double(-1, -2, -3, -4, -5, -6, -7, -8);
+ curve.setCurve(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8);
+ harness.check(curve.x1, 1.1); // Check 1
+ harness.check(curve.y1, 2.2); // Check 2
+ harness.check(curve.ctrlx1, 3.3); // Check 3
+ harness.check(curve.ctrly1, 4.4); // Check 4
+ harness.check(curve.ctrlx2, 5.5); // Check 5
+ harness.check(curve.ctrly2, 6.6); // Check 6
+ harness.check(curve.x2, 7.7); // Check 7
+ harness.check(curve.y2, 8.8); // Check 8
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Entries b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Entries
new file mode 100644
index 00000000..38ca1928
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Entries
@@ -0,0 +1,8 @@
+/Float.java/1.1/Fri Oct 24 11:54:55 2003//
+/getBounds2D.java/1.1/Fri Oct 24 11:54:55 2003//
+/getCtrlP1.java/1.1/Fri Oct 24 11:54:55 2003//
+/getCtrlP2.java/1.1/Fri Oct 24 11:54:55 2003//
+/getP1.java/1.1/Fri Oct 24 11:54:55 2003//
+/getP2.java/1.1/Fri Oct 24 11:54:55 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:55 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Repository b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Repository
new file mode 100644
index 00000000..29b2b70d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/CubicCurve2D/Float
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Root b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/Float.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/Float.java
new file mode 100644
index 00000000..f3a521f8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/Float.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float constructors works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class Float
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness harness)
+ {
+ this.h = harness;
+ testZeroArgs();
+ testEightArgs();
+ }
+
+
+ /**
+ * Checks whether the zero-argument constructor works as specified.
+ */
+ public void testZeroArgs()
+ {
+ CubicCurve2D curve;
+
+ h.checkPoint("noArgs");
+ curve = new CubicCurve2D.Float();
+ h.check(curve.getX1(), 0); // 1
+ h.check(curve.getY1(), 0); // 2
+ h.check(curve.getCtrlX1(), 0); // 3
+ h.check(curve.getCtrlY1(), 0); // 4
+ h.check(curve.getCtrlX2(), 0); // 5
+ h.check(curve.getCtrlY2(), 0); // 6
+ h.check(curve.getX2(), 0); // 7
+ h.check(curve.getY2(), 0); // 8
+ }
+
+
+ /**
+ * Checks whether the eight-argument constructor works as specified.
+ */
+ public void testEightArgs()
+ {
+ CubicCurve2D.Float curve;
+
+ h.checkPoint("eightArgs");
+ curve = new CubicCurve2D.Float(1e1f, 2e2f, 3e3f, 4e4f,
+ 5e5f, 6e6f, 7e7f, 8e8f);
+
+ h.check(curve.getX1(), 1e1f); // 1
+ h.check(curve.getY1(), 2e2f); // 2
+ h.check(curve.getCtrlX1(), 3e3f); // 3
+ h.check(curve.getCtrlY1(), 4e4f); // 4
+ h.check(curve.getCtrlX2(), 5e5f); // 5
+ h.check(curve.getCtrlY2(), 6e6f); // 6
+ h.check(curve.getX2(), 7e7f); // 7
+ h.check(curve.getY2(), 8e8f); // 8
+
+ h.check(curve.x1, 1e1f); // 9
+ h.check(curve.y1, 2e2f); // 10
+ h.check(curve.ctrlx1, 3e3f); // 11
+ h.check(curve.ctrly1, 4e4f); // 12
+ h.check(curve.ctrlx2, 5e5f); // 13
+ h.check(curve.ctrly2, 6e6f); // 14
+ h.check(curve.x2, 7e7f); // 15
+ h.check(curve.y2, 8e8f); // 16
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getBounds2D.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getBounds2D.java
new file mode 100644
index 00000000..2a4199a9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getBounds2D.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+import java.awt.geom.Rectangle2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.getBounds2D method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getBounds2D
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+ Rectangle2D bounds;
+
+ curve = new CubicCurve2D.Float(1, -2, -3, 4, 5, 7, -8, 9);
+ bounds = curve.getBounds2D();
+ harness.check(bounds instanceof Rectangle2D.Float); // 1
+ harness.check(bounds.getX(), -8); // 2
+ harness.check(bounds.getY(), -2); // 3
+ harness.check(bounds.getWidth(), 13); // 4
+ harness.check(bounds.getHeight(), 11); // 5
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP1.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP1.java
new file mode 100644
index 00000000..5ce4030d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.getCtrlP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+
+ curve = new CubicCurve2D.Float(-1, -2, -3.141f, 42, -5, -6, -77, 88);
+ harness.check(curve.getCtrlP1().getX(), -3.141f); // Check 1
+ harness.check(curve.getCtrlP1().getY(), 42); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP2.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP2.java
new file mode 100644
index 00000000..c30f3c23
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getCtrlP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.getCtrlP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+
+ curve = new CubicCurve2D.Float(-1, -2, -3.141f, 42, -5, -6, -77, 88);
+ harness.check(curve.getCtrlP2().getX(), -5); // Check 1
+ harness.check(curve.getCtrlP2().getY(), -6); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP1.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP1.java
new file mode 100644
index 00000000..98e183d7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.getP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+
+ curve = new CubicCurve2D.Float(-1.2e8f, -2.3e7f, -3, -4, -5, -6, -7, -8);
+ harness.check(curve.getP1().getX(), -1.2e8f); // Check 1
+ harness.check(curve.getP1().getY(), -2.3e7f); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP2.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP2.java
new file mode 100644
index 00000000..237bbc78
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/getP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.getP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+
+ curve = new CubicCurve2D.Float(-1, -2, -3, 42, -5, -6, -77.7f, 88.8f);
+ harness.check(curve.getP2().getX(), -77.7f); // Check 1
+ harness.check(curve.getP2().getY(), 88.8f); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/Float/setCurve.java b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/setCurve.java
new file mode 100644
index 00000000..588353ec
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/Float/setCurve.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.Float.setCurve method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D.Float curve;
+
+ curve = new CubicCurve2D.Float(-1, -2, -3, -4, -5, -6, -7, -8);
+ curve.setCurve(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8);
+ harness.check(curve.x1, 1.1f); // Check 1
+ harness.check(curve.y1, 2.2f); // Check 2
+ harness.check(curve.ctrlx1, 3.3f); // Check 3
+ harness.check(curve.ctrly1, 4.4f); // Check 4
+ harness.check(curve.ctrlx2, 5.5f); // Check 5
+ harness.check(curve.ctrly2, 6.6f); // Check 6
+ harness.check(curve.x2, 7.7f); // Check 7
+ harness.check(curve.y2, 8.8f); // Check 8
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/clone.java b/gnu/testlet/java/awt/geom/CubicCurve2D/clone.java
new file mode 100644
index 00000000..1a0b0bc7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/clone.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.clone method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class clone
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CubicCurve2D curve;
+
+ // Checks 1 to 7: Clone a CubicCurve2D.Double
+ curve = (CubicCurve2D) (new CubicCurve2D.Double(4,3,9,1,7,8,2,6)).clone();
+ harness.check(curve instanceof CubicCurve2D.Double); // 1
+ harness.check(curve.getX1(), 4.0); // 2
+ harness.check(curve.getY1(), 3.0); // 3
+ harness.check(curve.getCtrlX1(), 9.0); // 4
+ harness.check(curve.getCtrlY1(), 1.0); // 5
+ harness.check(curve.getCtrlX2(), 7.0); // 6
+ harness.check(curve.getCtrlY2(), 8.0); // 7
+ harness.check(curve.getX2(), 2.0); // 8
+ harness.check(curve.getY2(), 6.0); // 9
+
+ // Checks 8 to 14: Clone a CubicCurve2D.Float
+ curve = (CubicCurve2D) (new CubicCurve2D.Float(-4,3,-9,1,7,-8,-2,-6))
+ .clone();
+ harness.check(curve instanceof CubicCurve2D.Float); // 10
+ harness.check(curve.getX1(), -4.0); // 11
+ harness.check(curve.getY1(), 3.0); // 12
+ harness.check(curve.getCtrlX1(), -9.0); // 13
+ harness.check(curve.getCtrlY1(), 1.0); // 14
+ harness.check(curve.getCtrlX2(), 7.0); // 15
+ harness.check(curve.getCtrlY2(), -8.0); // 16
+ harness.check(curve.getX2(), -2.0); // 17
+ harness.check(curve.getY2(), -6.0); // 18
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java b/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java
new file mode 100644
index 00000000..596fb137
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatness.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the various CubicCurve2D.getFlatness methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getFlatness
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // Check 1: eight doubles, collinear
+ chkeps(CubicCurve2D.getFlatness(1, 2, 3, 4, 5, 6, 7, 8), 0);
+
+ // Check 2: eight doubles, collinear (C1 and C2 swapped)
+ chkeps(CubicCurve2D.getFlatness(1, 2, 5, 6, 3, 4, 7, 8), 0);
+
+ // Check 3: eight doubles, collinear (C2 and P2 swapped)
+ chkeps(CubicCurve2D.getFlatness(1, 2, 3, 4, 7, 8, 5, 6),
+ 2.8284271247461903);
+
+ // Check 4: eight doubles, not collinear
+ chkeps(CubicCurve2D.getFlatness(10, -20, 3, 4, 5, 6, 40, 0),
+ 24.40680863391008);
+
+ // Check 5: double[], not collinear
+ double[] d = new double[] {2, 100, -200, 30, 44, 5, 600, 77, 18981};
+ chkeps(CubicCurve2D.getFlatness(d, 1), 94.04064976860437);
+
+ // Check 6: Method on CubicCurve2D, degenerated to point
+ chkeps((new CubicCurve2D.Double()).getFlatness(), 0);
+
+ // Check 7: Method on CubicCurve2D, not collinear
+ chkeps((new CubicCurve2D.Double(9,8,1,2,-4,0,1311,2332)).getFlatness(),
+ 15.264337522473747);
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-7)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java b/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java
new file mode 100644
index 00000000..7b42bfee
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/getFlatnessSq.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the various CubicCurve2D.getFlatnessSq methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getFlatnessSq
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // Check 1: eight doubles, collinear
+ chkeps(CubicCurve2D.getFlatnessSq(1, 2, 3, 4, 5, 6, 7, 8), 0);
+
+ // Check 2: eight doubles, collinear (C1 and C2 swapped)
+ chkeps(CubicCurve2D.getFlatnessSq(1, 2, 5, 6, 3, 4, 7, 8), 0);
+
+ // Check 3: eight doubles, collinear (C2 and P2 swapped)
+ chkeps(CubicCurve2D.getFlatnessSq(1, 2, 3, 4, 7, 8, 5, 6), 8);
+
+ // Check 4: eight doubles, not collinear
+ chkeps(CubicCurve2D.getFlatnessSq(10, -20, 3, 4, 5, 6, 40, 0),
+ 595.6923076923077);
+
+ // Check 5: double[], not collinear
+ double[] d = new double[] {2, 100, -200, 30, 44, 5, 600, 77, 18981};
+ chkeps(CubicCurve2D.getFlatnessSq(d, 1), 8843.64380890131);
+
+ // Check 6: Method on CubicCurve2D, degenerated to point
+ chkeps((new CubicCurve2D.Double()).getFlatnessSq(), 0);
+
+ // Check 7: Method on CubicCurve2D, not collinear
+ chkeps((new CubicCurve2D.Double(9,8,1,2,-4,0,1311,2332)).getFlatnessSq(),
+ 233);
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-7)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/getPathIterator.java b/gnu/testlet/java/awt/geom/CubicCurve2D/getPathIterator.java
new file mode 100644
index 00000000..2f4a81c0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/getPathIterator.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.getPathIterator method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_untransformed(harness);
+ test_transformed(harness);
+ }
+
+
+ public void test_untransformed(TestHarness harness)
+ {
+ CubicCurve2D curve;
+ PathIterator pit;
+ double[] c = new double[6];
+
+ harness.checkPoint("untransformed");
+ curve = new CubicCurve2D.Double(1, 2, 3, 4, 5, 6, 7, 8);
+ pit = curve.getPathIterator(null);
+
+ harness.check(!pit.isDone()); // 1
+ harness.check(pit.currentSegment(c), PathIterator.SEG_MOVETO); // 2
+ harness.check(c[0], 1.0); // 3
+ harness.check(c[1], 2.0); // 4
+
+ pit.next();
+ harness.check(!pit.isDone()); // 5
+ harness.check(pit.currentSegment(c), PathIterator.SEG_CUBICTO); // 6
+ harness.check(c[0], 3.0); // 7
+ harness.check(c[1], 4.0); // 8
+ harness.check(c[2], 5.0); // 9
+ harness.check(c[3], 6.0); // 10
+ harness.check(c[4], 7.0); // 11
+ harness.check(c[5], 8.0); // 12
+
+ pit.next();
+ harness.check(pit.isDone()); // 13
+ harness.check(pit.getWindingRule(), PathIterator.WIND_NON_ZERO);// 14
+ }
+
+
+ public void test_transformed(TestHarness harness)
+ {
+ CubicCurve2D curve;
+ PathIterator pit;
+ AffineTransform tx;
+ double[] c = new double[6];
+
+ harness.checkPoint("transformed");
+ tx = new AffineTransform();
+ tx.scale(2, 3);
+ tx.translate(1, -1);
+ curve = new CubicCurve2D.Double(1, 2, 3, 4, 5, 6, 7, 8);
+ pit = curve.getPathIterator(tx);
+
+ harness.check(!pit.isDone()); // 1
+ harness.check(pit.currentSegment(c), PathIterator.SEG_MOVETO); // 2
+ harness.check(c[0], 4.0); // 3
+ harness.check(c[1], 3.0); // 4
+
+ pit.next();
+ harness.check(!pit.isDone()); // 5
+ harness.check(pit.currentSegment(c), PathIterator.SEG_CUBICTO); // 6
+ harness.check(c[0], 8.0); // 7
+ harness.check(c[1], 9.0); // 8
+ harness.check(c[2], 12.0); // 9
+ harness.check(c[3], 15.0); // 10
+ harness.check(c[4], 16.0); // 11
+ harness.check(c[5], 21.0); // 12
+
+ pit.next();
+ harness.check(pit.isDone()); // 13
+ harness.check(pit.getWindingRule(), PathIterator.WIND_NON_ZERO);// 14
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/setCurve.java b/gnu/testlet/java/awt/geom/CubicCurve2D/setCurve.java
new file mode 100644
index 00000000..4b84c71f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/setCurve.java
@@ -0,0 +1,149 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Point;
+import java.awt.geom.Point2D;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the various CubicCurve2D.setCurve methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_array(harness);
+ test_fourPoints(harness);
+ test_PointArray(harness);
+ test_CubicCurve2D(harness);
+ }
+
+
+ private void test_array(TestHarness harness)
+ {
+ CubicCurve2D curve;
+
+ harness.checkPoint("array");
+
+ curve = new CubicCurve2D.Double();
+ curve.setCurve(new double[] { 1, 2, 3, 11, 12, 13, 14, 15, 16, 17, 18 },
+ /* offset */ 3);
+ harness.check(curve.getX1(), 11); // Check 1
+ harness.check(curve.getY1(), 12); // Check 2
+ harness.check(curve.getCtrlX1(), 13); // Check 3
+ harness.check(curve.getCtrlY1(), 14); // Check 4
+ harness.check(curve.getCtrlX2(), 15); // Check 5
+ harness.check(curve.getCtrlY2(), 16); // Check 6
+ harness.check(curve.getX2(), 17); // Check 7
+ harness.check(curve.getY2(), 18); // Check 8
+ }
+
+
+ private void test_fourPoints(TestHarness harness)
+ {
+ CubicCurve2D curve;
+
+ harness.checkPoint("fourPoints");
+
+ curve = new CubicCurve2D.Double();
+ curve.setCurve(new Point2D.Float(1, 2),
+ new Point2D.Double(3, 4),
+ new Point(5, 6),
+ new Point2D.Float(7, 8));
+
+ harness.check(curve.getX1(), 1); // Check 1
+ harness.check(curve.getY1(), 2); // Check 2
+ harness.check(curve.getCtrlX1(), 3); // Check 3
+ harness.check(curve.getCtrlY1(), 4); // Check 4
+ harness.check(curve.getCtrlX2(), 5); // Check 5
+ harness.check(curve.getCtrlY2(), 6); // Check 6
+ harness.check(curve.getX2(), 7); // Check 7
+ harness.check(curve.getY2(), 8); // Check 8
+ }
+
+
+ private void test_PointArray(TestHarness harness)
+ {
+ CubicCurve2D curve;
+ Point2D[] pts = new Point2D[20];
+
+ harness.checkPoint("PointArray");
+
+ curve = new CubicCurve2D.Double();
+ pts[11] = new Point2D.Float(1,2);
+ pts[12] = new Point2D.Double(3,4);
+ pts[13] = new Point(5, 6);
+ pts[14] = new Point(7, 8);
+ curve.setCurve(pts, 11);
+
+ harness.check(curve.getX1(), 1); // Check 1
+ harness.check(curve.getY1(), 2); // Check 2
+ harness.check(curve.getCtrlX1(), 3); // Check 3
+ harness.check(curve.getCtrlY1(), 4); // Check 4
+ harness.check(curve.getCtrlX2(), 5); // Check 5
+ harness.check(curve.getCtrlY2(), 6); // Check 6
+ harness.check(curve.getX2(), 7); // Check 7
+ harness.check(curve.getY2(), 8); // Check 8
+ }
+
+
+ private void test_CubicCurve2D(TestHarness harness)
+ {
+ CubicCurve2D curve;
+ Point2D[] pts = new Point2D[20];
+
+ harness.checkPoint("CubicCurve2D");
+
+ curve = new CubicCurve2D.Float();
+ curve.setCurve(new CubicCurve2D.Double(9, 8, 7, 6, 5, 4, 3, 2));
+
+ harness.check(curve.getX1(), 9); // Check 1
+ harness.check(curve.getY1(), 8); // Check 2
+ harness.check(curve.getCtrlX1(), 7); // Check 3
+ harness.check(curve.getCtrlY1(), 6); // Check 4
+ harness.check(curve.getCtrlX2(), 5); // Check 5
+ harness.check(curve.getCtrlY2(), 4); // Check 6
+ harness.check(curve.getX2(), 3); // Check 7
+ harness.check(curve.getY2(), 2); // Check 8
+
+ curve = new CubicCurve2D.Double();
+ curve.setCurve(new CubicCurve2D.Float(90, 80, 70, 60, 50, 40, 30, 20));
+
+ harness.check(curve.getX1(), 90); // Check 9
+ harness.check(curve.getY1(), 80); // Check 10
+ harness.check(curve.getCtrlX1(), 70); // Check 11
+ harness.check(curve.getCtrlY1(), 60); // Check 12
+ harness.check(curve.getCtrlX2(), 50); // Check 13
+ harness.check(curve.getCtrlY2(), 40); // Check 14
+ harness.check(curve.getX2(), 30); // Check 15
+ harness.check(curve.getY2(), 20); // Check 16
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java b/gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java
new file mode 100644
index 00000000..53bb32fa
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/solveCubic.java
@@ -0,0 +1,148 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether the CubicCurve2D.solveCubic methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class solveCubic
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ checkSolutions(1, 0, 0, -1, new double[]{1});
+ checkSolutions(5, 6, 1, 0, new double[]{0, -1, -0.2});
+ checkSolutions(8, 2, -1, 0, new double[]{0, -0.5, 0.25});
+ checkSolutions(9, -6, 0.5, -1, new double[]{0.7785994720166718});
+
+ // Sun J2SE 1.4.1_01 (GNU/Linux IA-32) fails to find x=0 here.
+ checkSolutions(0.25, -1, 0, 0, new double[]{0, 4});
+ checkSolutions(1, 1, 0, 0, new double[]{-1, 0});
+ checkSolutions(1, 0.5, 0, 0, new double[]{-0.5, 0});
+
+ // Some equations that are actually quadratic.
+ checkSolutions(0, 0, 1, -23, new double[]{23});
+ checkSolutions(0, 0, 0, 1968.5, null);
+ checkSolutions(0, 0, 0, 0, null);
+ checkSolutions(0, 0, 8, 8, new double[]{-1});
+ checkSolutions(0, 0.5, 0, -2, new double[]{-2, 2});
+ checkSolutions(0, 10, 3, 5, new double[0]);
+ checkSolutions(0, 4, 0, 0, new double[]{0}); // Classpath bug #6095.
+
+ // The subsequent six tests are taken from test code in the
+ // GNU Scientific Library (GSL), which is licensed under the
+ // GNU General Public License version 2 or later.
+ // See file "gsl/poly/test.c", revision 1.16 of 2003-07-26.
+ // Original author: Brian Gough <bjg@network-theory.co.uk>
+ checkSolutions(1, 0, 0, -27, new double[]{3});
+ checkSolutions(1, -51, 867, -4913, new double[]{17});
+ checkSolutions(1, -57, 1071, -6647, new double[]{17, 23});
+ checkSolutions(1, -11, -493, +6647, new double[]{17, -23});
+ checkSolutions(1, -143, 5087, -50065, new double[]{17, 31, 95});
+ checkSolutions(1, -109, 803, 50065, new double[]{-17, 31, 95});
+ }
+
+
+ /**
+ * Checks whether all expected solutions were found.
+ *
+ * @param c3 the coefficient for x^3.
+ *
+ * @param c2 the coefficient for x^2.
+ *
+ * @param c1 the coefficient for x^1.
+ *
+ * @param c0 the coefficient for x^0.
+ *
+ * @param expected the expected set of solutions, or
+ * <code>null</code> if CubicCurve2D.solveCubic is expected to
+ * return -1.
+ */
+ private void checkSolutions(double c3, double c2, double c1, double c0,
+ double[] expected)
+ {
+ double[] solutions = new double[4];
+ int numSols, numExpectedSolutions;
+ StringBuffer buf = new StringBuffer();
+
+ if (c3 != 0)
+ {
+ buf.append(c3);
+ buf.append("x^3");
+ }
+ if (c2 != 0)
+ {
+ buf.append(c2 > 0 ? " + " : " - ");
+ buf.append(Math.abs(c2));
+ buf.append("x^2");
+ }
+ if (c1 != 0)
+ {
+ buf.append(c1 > 0 ? " + " : " - ");
+ buf.append(Math.abs(c1));
+ buf.append("x");
+ }
+ if (c0 != 0)
+ {
+ buf.append(c0 > 0 ? " + " : " - ");
+ buf.append(Math.abs(c0));
+ }
+ buf.append(" = 0");
+ harness.checkPoint(buf.toString());
+
+ numExpectedSolutions = expected == null ? -1 : expected.length;
+ numSols = CubicCurve2D.solveCubic(new double[] { c0, c1, c2, c3 },
+ solutions);
+ harness.check(numSols, numExpectedSolutions);
+
+ for (int i = 0; i < numExpectedSolutions; i++)
+ {
+ boolean found = false;
+
+ for (int j = 0; j < numSols; j++)
+ {
+ if (Math.abs(solutions[j] - expected[i]) < 1e-6)
+ {
+ found = true;
+ break;
+ }
+ }
+
+ harness.check(found);
+ if (!found)
+ harness.debug("solution " + expected[i] + " not found");
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/CubicCurve2D/subdivide.java b/gnu/testlet/java/awt/geom/CubicCurve2D/subdivide.java
new file mode 100644
index 00000000..de9564c0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/CubicCurve2D/subdivide.java
@@ -0,0 +1,159 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.CubicCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.CubicCurve2D;
+import java.util.Arrays;
+
+/**
+ * Checks whether the CubicCurve2D.subdivide methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class subdivide
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ test_array();
+ test_curve2();
+ test_curve3();
+ }
+
+
+ private void test_array()
+ {
+ double[] src, left, right;
+
+ harness.checkPoint("array");
+
+ // Check 1
+ src = new double[]{7,7,1.5,2,3,4,-5,6,9,13};
+ left = new double[15];
+ CubicCurve2D.subdivide(src, 2, left, 1, left, 7);
+ harness.check(Arrays.equals(left,
+ new double[]{0, 1.5, 2, 2.25, 3, 0.625,
+ 4, 0.5625, 5.625, 0.5, 7.25,
+ 2, 9.5, 9, 13}));
+
+ // Check 2: No exception for null results.
+ try
+ {
+ CubicCurve2D.subdivide(src, 0, null, 0, null, 0);
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+
+ // Check 3 and 4: Degenerate case, subdividing a point (0,0)
+ src = new double[8];
+ left = new double[8];
+ right = new double[8];
+ CubicCurve2D.subdivide(src, 0, left, 0, right, 0);
+ harness.check(Arrays.equals(left, new double[8]));
+ harness.check(Arrays.equals(left, right));
+ }
+
+
+ private void test_curve2()
+ {
+ CubicCurve2D src, left, right;
+
+ harness.checkPoint("curve2");
+ src = new CubicCurve2D.Double(42, 24, 123, 321, -78011, -11087, 41, 28);
+ left = new CubicCurve2D.Double();
+ right = new CubicCurve2D.Float();
+ src.subdivide(left, right);
+ chkeps(left.getX1(), 42); // 1
+ chkeps(left.getY1(), 24); // 2
+ chkeps(left.getCtrlX1(), 82.5); // 3
+ chkeps(left.getCtrlY1(), 172.5); // 4
+ chkeps(left.getCtrlX2(), -19430.75); // 5
+ chkeps(left.getCtrlY2(), -2605.25); // 6
+ chkeps(left.getX2(), -29197.625); // 7
+ chkeps(left.getY2(), -4030.75); // 8
+ chkeps(right.getX1(), -29197.625); // 9
+ chkeps(right.getY1(), -4030.75); // 10
+ chkeps(right.getCtrlX1(), -38964.5); // 11
+ chkeps(right.getCtrlY1(), -5456.25); // 12
+ chkeps(right.getCtrlX2(), -38985.0); // 13
+ chkeps(right.getCtrlY2(), -5529.5); // 14
+ chkeps(right.getX2(), 41); // 15
+ chkeps(right.getY2(), 28); // 16
+ }
+
+
+ private void test_curve3()
+ {
+ CubicCurve2D src, left, right;
+
+ harness.checkPoint("curve3");
+ src = new CubicCurve2D.Double(23, -23, 42, -42, 1968.5, -1968.5, 68, 96);
+ left = new CubicCurve2D.Float();
+ right = new CubicCurve2D.Float();
+ CubicCurve2D.subdivide(src, left, right);
+ chkeps(left.getX1(), 23); // 1
+ chkeps(left.getY1(), -23); // 2
+ chkeps(left.getCtrlX1(), 32.5); // 3
+ chkeps(left.getCtrlY1(), -32.5); // 4
+ chkeps(left.getCtrlX2(), 518.875); // 5
+ chkeps(left.getCtrlY2(), -518.875); // 6
+ chkeps(left.getX2(), 765.3125); // 7
+ chkeps(left.getY2(), -744.8125); // 8
+ chkeps(right.getX1(), 765.3125); // 9
+ chkeps(right.getY1(), -744.8125); // 10
+ chkeps(right.getCtrlX1(), 1011.75); // 11
+ chkeps(right.getCtrlY1(), -970.75); // 12
+ chkeps(right.getCtrlX2(), 1018.25); // 13
+ chkeps(right.getCtrlY2(), -936.25) ; // 14
+ chkeps(right.getX2(), 68); // 15
+ chkeps(right.getY2(), 96); // 16
+
+ CubicCurve2D.subdivide(left, null, left);
+ chkeps(left.getX1(), 305.3046875); // 17
+ chkeps(left.getY1(), -302.7421875); // 18
+ chkeps(left.getCtrlX1(), 458.890625); // 19
+ chkeps(left.getCtrlY1(), -453.765625); // 20
+ chkeps(left.getCtrlX2(), 642.09375); // 21
+ chkeps(left.getCtrlY2(), -631.84375); // 22
+ chkeps(left.getX2(), 765.3125); // 23
+ chkeps(left.getY2(), -744.8125); // 24
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-6)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries
new file mode 100644
index 00000000..6a34afb9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries
@@ -0,0 +1,3 @@
+/contains.java/1.1/Wed Oct 20 09:31:18 2004//
+/intersects.java/1.1/Wed Oct 20 09:31:18 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries.Log
new file mode 100644
index 00000000..1b9aa391
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Double////
+A D/Float////
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Repository b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Repository
new file mode 100644
index 00000000..db3ca0d8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Ellipse2D
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Root b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Entries b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Entries
new file mode 100644
index 00000000..7ace085e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Entries
@@ -0,0 +1,10 @@
+/clone.java/1.1/Wed Oct 20 10:14:10 2004//
+/constructors.java/1.1/Wed Oct 20 10:14:10 2004//
+/getBounds2D.java/1.1/Wed Oct 20 10:14:10 2004//
+/getHeight.java/1.1/Wed Oct 20 10:14:10 2004//
+/getWidth.java/1.1/Wed Oct 20 10:14:10 2004//
+/getX.java/1.1/Wed Oct 20 10:14:10 2004//
+/getY.java/1.1/Wed Oct 20 10:14:10 2004//
+/isEmpty.java/1.1/Wed Oct 20 10:14:10 2004//
+/setFrame.java/1.1/Wed Oct 20 10:14:10 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Repository b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Repository
new file mode 100644
index 00000000..6e8c9f0c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Ellipse2D/Double
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Root b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/clone.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/clone.java
new file mode 100644
index 00000000..2608f35a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/clone.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the clone() method in the {@link Ellipse2D.Double} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e1 = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ Ellipse2D e2 = null;
+ e2 = (Ellipse2D) e1.clone();
+ harness.check(e1.getX(), e2.getX());
+ harness.check(e1.getY(), e2.getY());
+ harness.check(e1.getWidth(), e2.getWidth());
+ harness.check(e1.getHeight(), e2.getHeight());
+ harness.check(e1.getClass(), e2.getClass());
+ harness.check(e1 != e2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/constructors.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/constructors.java
new file mode 100644
index 00000000..0a0b3979
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/constructors.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the constructors for the {@link Ellipse2D.Double} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // constructor 1
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.getX(), 0.0);
+ harness.check(e.getY(), 0.0);
+ harness.check(e.getWidth(), 0.0);
+ harness.check(e.getHeight(), 0.0);
+ harness.check(e.isEmpty());
+
+ // constructor 2
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.getX(), 1.0);
+ harness.check(e.getY(), 2.0);
+ harness.check(e.getWidth(), 3.0);
+ harness.check(e.getHeight(), 4.0);
+ harness.check(!e.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/getBounds2D.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getBounds2D.java
new file mode 100644
index 00000000..2fd7fa1e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getBounds2D.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the getBounds2D() method of the {@link Ellipse2D.Double} class.
+ */
+public class getBounds2D implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ Rectangle2D b = e.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.0);
+ harness.check(b.getHeight(), 0.0);
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ b = e.getBounds2D();
+ harness.check(b.getX(), 1.0);
+ harness.check(b.getY(), 2.0);
+ harness.check(b.getWidth(), 3.0);
+ harness.check(b.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/getHeight.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getHeight.java
new file mode 100644
index 00000000..6de85edc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getHeight.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getHeight() method of the {@link Ellipse2D.Double} class.
+ */
+public class getHeight implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.getHeight(), 0.0);
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/getWidth.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getWidth.java
new file mode 100644
index 00000000..c11f26ba
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getWidth.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getWidth() method of the {@link Ellipse2D.Double} class.
+ */
+public class getWidth implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.getWidth(), 0.0);
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.getWidth(), 3.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/getX.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getX.java
new file mode 100644
index 00000000..cc00f24c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getX.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getX() method of the {@link Ellipse2D.Double} class.
+ */
+public class getX implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.getX(), 0.0);
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.getX(), 1.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/getY.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getY.java
new file mode 100644
index 00000000..d0291298
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/getY.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getY() method of the {@link Ellipse2D.Double} class.
+ */
+public class getY implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.getY(), 0.0);
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.getY(), 2.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/isEmpty.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/isEmpty.java
new file mode 100644
index 00000000..37128250
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/isEmpty.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the isEmpty() method of the {@link Ellipse2D.Double} class.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(e.isEmpty());
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!e.isEmpty());
+
+ e = new Ellipse2D.Double(1.0, 2.0, -3.0, 4.0);
+ harness.check(e.isEmpty());
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, -4.0);
+ harness.check(e.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Double/setFrame.java b/gnu/testlet/java/awt/geom/Ellipse2D/Double/setFrame.java
new file mode 100644
index 00000000..042d212e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Double/setFrame.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the setFrame() method of the {@link Ellipse2D.Double} class.
+ */
+public class setFrame implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ e.setFrame(0.0, 0.0, 0.0, 0.0);
+ Rectangle2D b = e.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.0);
+ harness.check(b.getHeight(), 0.0);
+
+ e = new Ellipse2D.Double();
+ e.setFrame(1.0, 2.0, 3.0, 4.0);
+ b = e.getBounds2D();
+ harness.check(b.getX(), 1.0);
+ harness.check(b.getY(), 2.0);
+ harness.check(b.getWidth(), 3.0);
+ harness.check(b.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Entries b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Entries
new file mode 100644
index 00000000..aaa0ccab
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Entries
@@ -0,0 +1,10 @@
+/clone.java/1.1/Wed Oct 20 10:38:46 2004//
+/constructors.java/1.1/Wed Oct 20 10:38:46 2004//
+/getBounds2D.java/1.1/Wed Oct 20 10:38:46 2004//
+/getHeight.java/1.1/Wed Oct 20 10:38:46 2004//
+/getWidth.java/1.1/Wed Oct 20 10:38:46 2004//
+/getX.java/1.1/Wed Oct 20 10:38:46 2004//
+/getY.java/1.1/Wed Oct 20 10:38:46 2004//
+/isEmpty.java/1.1/Wed Oct 20 10:38:46 2004//
+/setFrame.java/1.1/Wed Oct 20 10:38:46 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Repository b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Repository
new file mode 100644
index 00000000..f1f9533a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Ellipse2D/Float
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Root b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/clone.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/clone.java
new file mode 100644
index 00000000..8b9fc59b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/clone.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the clone() method in the {@link Ellipse2D.Float} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e1 = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ Ellipse2D e2 = null;
+ e2 = (Ellipse2D) e1.clone();
+ harness.check(e1.getX(), e2.getX());
+ harness.check(e1.getY(), e2.getY());
+ harness.check(e1.getWidth(), e2.getWidth());
+ harness.check(e1.getHeight(), e2.getHeight());
+ harness.check(e1.getClass(), e2.getClass());
+ harness.check(e1 != e2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/constructors.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/constructors.java
new file mode 100644
index 00000000..34cee1be
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/constructors.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the constructors for the {@link Ellipse2D.Float} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // constructor 1
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.getX(), 0.0);
+ harness.check(e.getY(), 0.0);
+ harness.check(e.getWidth(), 0.0);
+ harness.check(e.getHeight(), 0.0);
+ harness.check(e.isEmpty());
+
+ // constructor 2
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(e.getX(), 1.0);
+ harness.check(e.getY(), 2.0);
+ harness.check(e.getWidth(), 3.0);
+ harness.check(e.getHeight(), 4.0);
+ harness.check(!e.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/getBounds2D.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getBounds2D.java
new file mode 100644
index 00000000..72ffb5dd
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getBounds2D.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the getBounds2D() method of the {@link Ellipse2D.Float} class.
+ */
+public class getBounds2D implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ Rectangle2D b = e.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.0);
+ harness.check(b.getHeight(), 0.0);
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ b = e.getBounds2D();
+ harness.check(b.getX(), 1.0);
+ harness.check(b.getY(), 2.0);
+ harness.check(b.getWidth(), 3.0);
+ harness.check(b.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/getHeight.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getHeight.java
new file mode 100644
index 00000000..019a9262
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getHeight.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getHeight() method of the {@link Ellipse2D.Float} class.
+ */
+public class getHeight implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.getHeight(), 0.0);
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(e.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/getWidth.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getWidth.java
new file mode 100644
index 00000000..5dcdc4eb
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getWidth.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getWidth() method of the {@link Ellipse2D.Float} class.
+ */
+public class getWidth implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.getWidth(), 0.0);
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(e.getWidth(), 3.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/getX.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getX.java
new file mode 100644
index 00000000..7d0639f0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getX.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getX() method of the {@link Ellipse2D.Float} class.
+ */
+public class getX implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.getX(), 0.0);
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(e.getX(), 1.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/getY.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getY.java
new file mode 100644
index 00000000..ea956c70
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/getY.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the getY() method of the {@link Ellipse2D.Float} class.
+ */
+public class getY implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.getY(), 0.0);
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(e.getY(), 2.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/isEmpty.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/isEmpty.java
new file mode 100644
index 00000000..4d670e75
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/isEmpty.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the isEmpty() method of the {@link Ellipse2D.Float} class.
+ */
+public class isEmpty implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float();
+ harness.check(e.isEmpty());
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(!e.isEmpty());
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, -3.0f, 4.0f);
+ harness.check(e.isEmpty());
+
+ e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, -4.0f);
+ harness.check(e.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/Float/setFrame.java b/gnu/testlet/java/awt/geom/Ellipse2D/Float/setFrame.java
new file mode 100644
index 00000000..d1b16cea
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/Float/setFrame.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the setFrame() method of the {@link Ellipse2D} class.
+ */
+public class setFrame implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ e.setFrame(0.0f, 0.0f, 0.0f, 0.0f);
+ Rectangle2D b = e.getBounds2D();
+ harness.check(b.getX(), 0.0);
+ harness.check(b.getY(), 0.0);
+ harness.check(b.getWidth(), 0.0);
+ harness.check(b.getHeight(), 0.0);
+
+ e = new Ellipse2D.Float();
+ e.setFrame(1.0f, 2.0f, 3.0f, 4.0f);
+ b = e.getBounds2D();
+ harness.check(b.getX(), 1.0);
+ harness.check(b.getY(), 2.0);
+ harness.check(b.getWidth(), 3.0);
+ harness.check(b.getHeight(), 4.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/contains.java b/gnu/testlet/java/awt/geom/Ellipse2D/contains.java
new file mode 100644
index 00000000..bdc3805f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/contains.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the contains() method of the {@link Ellipse2D} class.
+ */
+public class contains implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testContains1(harness);
+ testContains2(harness);
+ }
+
+ private void testContains1(TestHarness harness) {
+ harness.checkPoint("contains(double, double)");
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(!e.contains(0.0, 0.0));
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!e.contains(1.0, 2.0));
+ harness.check(!e.contains(4.0, 2.0));
+ harness.check(!e.contains(1.0, 6.0));
+ harness.check(!e.contains(4.0, 6.0));
+ harness.check(e.contains(2.5, 4.0));
+
+ e = new Ellipse2D.Double(-1.0, -1.0, 2.0, 2.0);
+ harness.check(e.contains(0.0, 0.0));
+ harness.check(!e.contains(-1.0, 0.0));
+ harness.check(!e.contains(0.0, 1.0));
+ harness.check(!e.contains(0.0, -1.0));
+ harness.check(!e.contains(0.0, 1.0));
+
+ harness.check(e.contains(-0.9, 0.0));
+ harness.check(e.contains(0.0, 0.9));
+ harness.check(e.contains(0.0, -0.9));
+ harness.check(e.contains(0.0, 0.9));
+ }
+
+ private void testContains2(TestHarness harness) {
+ harness.checkPoint("contains(double, double, double, double)");
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(!e.contains(0.0, 0.0, 0.0, 0.0));
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!e.contains(1.0, 2.0, 3.0, 4.0));
+ harness.check(e.contains(2.5, 4.0, 1.0, 1.0));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Ellipse2D/intersects.java b/gnu/testlet/java/awt/geom/Ellipse2D/intersects.java
new file mode 100644
index 00000000..3e47dbda
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Ellipse2D/intersects.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.geom.Ellipse2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Ellipse2D;
+
+/**
+ * Some checks for the intersects() method of the {@link Ellipse2D} class.
+ */
+public class intersects implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Ellipse2D e = new Ellipse2D.Double();
+ harness.check(!e.intersects(0.0, 0.0, 0.0, 0.0));
+ harness.check(!e.intersects(-1.0, -1.0, 2.0, 2.0));
+
+ e = new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(e.intersects(1.0, 2.0, 3.0, 4.0));
+ harness.check(!e.intersects(0.0, 0.0, 1.0, 1.0));
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Entries b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Entries
new file mode 100644
index 00000000..83dc2e7c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Entries
@@ -0,0 +1,6 @@
+/FlatteningPathIterator.java/1.1/Tue Nov 11 23:59:57 2003//
+/currentSegment.java/1.1/Tue Nov 11 23:59:57 2003//
+/getFlatness.java/1.1/Tue Nov 11 23:59:57 2003//
+/getRecursionLimit.java/1.1/Tue Nov 11 23:59:57 2003//
+/getWindingRule.java/1.2/Thu Jun 3 14:31:04 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Repository b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Repository
new file mode 100644
index 00000000..1cea51a6
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/FlatteningPathIterator
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Root b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/FlatteningPathIterator.java b/gnu/testlet/java/awt/geom/FlatteningPathIterator/FlatteningPathIterator.java
new file mode 100644
index 00000000..bc1bcf2d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/FlatteningPathIterator.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.FlatteningPathIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.Line2D;
+
+
+/**
+ * Checks whether the FlatteningPathIterator constructors work.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class FlatteningPathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ java.awt.geom.FlatteningPathIterator fpi;
+ Throwable caught;
+
+ // Checks 1 and 2: Three-argument form.
+ fpi = new java.awt.geom.FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null),
+ 0, 0);
+ harness.check(fpi.getFlatness(), 0); // 1
+ harness.check(fpi.getRecursionLimit(), 0); // 2
+
+ // Check 3: Two-argument form.
+ fpi = new java.awt.geom.FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null),
+ 0);
+ harness.check(fpi.getFlatness(), 0); // 3
+
+ // Check 4: Exception for flatness < 0.
+ caught = null;
+ try
+ {
+ fpi = new java.awt.geom.FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null), -0.1, 4);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+
+ // Check 5: Exception for recursion limit < 0.
+ caught = null;
+ try
+ {
+ fpi = new java.awt.geom.FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null), 10, -1);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/currentSegment.java b/gnu/testlet/java/awt/geom/FlatteningPathIterator/currentSegment.java
new file mode 100644
index 00000000..61ef2bac
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/currentSegment.java
@@ -0,0 +1,482 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.FlatteningPathIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Shape;
+import java.awt.geom.FlatteningPathIterator;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.PathIterator;
+import java.awt.geom.QuadCurve2D;
+import java.awt.geom.CubicCurve2D;
+
+
+/**
+ * Checks whether FlatteningPathIterator.currentSegment works. This is
+ * the real test for the flattening functionality.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class currentSegment
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ test_emptyPath(h);
+ test_quadCurve(h);
+ test_cubicCurve(h);
+ }
+
+
+ /**
+ * Flattens an empty path.
+ */
+ private void test_emptyPath(TestHarness h)
+ {
+ FlatteningPathIterator fpi;
+ GeneralPath path;
+
+ h.checkPoint("emptyPath");
+
+ path = new GeneralPath();
+ fpi = new FlatteningPathIterator(
+ path.getPathIterator(null),
+ /* closely follow the shape */ 1e-4,
+ /* but without any recursion */ 0);
+ h.check(fpi.isDone());
+ }
+
+
+ /**
+ * Flattens quadratic curves with various flatnesses and recursion
+ * limits.
+ */
+ public void test_quadCurve(TestHarness h)
+ {
+ h.checkPoint("quadCurve-A");
+ test_quadCurve(h, /* flatness */ 0.0, /* level */ 0,
+ 10,-10, 20, -1234, 400, 800, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -10.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 400.0, 800.0
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-B");
+ test_quadCurve(h, /* flatness */ 0.0, /* level */ 1,
+ 10,-10, 20, -1234, 400, 800, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -10.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 112.5, -419.5,
+ /* Check 3 */ PathIterator.SEG_LINETO, 400.0, 800.0,
+ /* Check 4: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-C");
+ test_quadCurve(h, /* flatness */ 0.0, /* level */ 2,
+ 0, -0, 1, -1, 2, -2, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 0.0, 0.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 0.5, -0.5,
+ /* Check 3 */ PathIterator.SEG_LINETO, 1.0, -1.0,
+ /* Check 4 */ PathIterator.SEG_LINETO, 1.5, -1.5,
+ /* Check 5 */ PathIterator.SEG_LINETO, 2.0, -2.0,
+ /* Check 6: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-D");
+ test_quadCurve(h, /* flatness */ 0.1, /* level */ 2,
+ 0, -0, 1, -1, 2, -2, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 0.0, 0.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 2.0, -2.0,
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-E");
+ // flatness of this curve: 2.3417; test with smaller flatness
+ test_quadCurve(h, /* flatness */ 1, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 5.25, -1.5,
+ /* Check 3 */ PathIterator.SEG_LINETO, 4.5625, 3.625,
+ /* Check 4 */ PathIterator.SEG_LINETO, 5.0, 6.0,
+ /* Check 5: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-F");
+ // flatness of this curve: 2.3417; test with larger flatness
+ test_quadCurve(h, /* flatness */ 4, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 5.0, 6.0,
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("quadCurve-G");
+ // degenerated: one single point
+ test_quadCurve(h, /* flatness */ 4, /* level */ 8,
+ 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 2.3, 2.3,
+ /* Check 2 */ PathIterator.SEG_LINETO, 2.3, 2.3,
+ /* Check 3: PathIterator.isDone() */
+ });
+ }
+
+
+ /**
+ * Flattens a QuadCurve2D with the specified flatness and recursion
+ * level.
+ */
+ private void test_quadCurve(TestHarness h, double flatness, int level,
+ double x1, double y1,
+ double cx, double cy,
+ double x2, double y2,
+ double[] data)
+ {
+ Shape curve;
+ FlatteningPathIterator fpi;
+
+ curve = new QuadCurve2D.Double(x1, y1, cx, cy, x2, y2);
+ fpi = new FlatteningPathIterator(curve.getPathIterator(null),
+ flatness, level);
+ if (data == null)
+ dump(fpi);
+ else
+ checkSegments(h, fpi, data);
+ }
+
+
+ /**
+ * Flattens cubic curves with various flatnesses and recursion
+ * limits.
+ */
+ public void test_cubicCurve(TestHarness h)
+ {
+ h.checkPoint("cubicCurve-A");
+ test_cubicCurve(h, /* flatness */ 0.0, /* level */ 0,
+ 10,-10, 20, -1234, 400, 800, 0, 1, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -10.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 0.0, 1.0,
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-B");
+ test_cubicCurve(h, /* flatness */ 0.0, /* level */ 1,
+ 10,-10, 20, -1234, 400, 800, 120, 10, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -10.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 173.75, -162.75,
+ /* Check 3 */ PathIterator.SEG_LINETO, 120.0, 10.0,
+ /* Check 4: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-C");
+ test_cubicCurve(h, /* flatness */ 0.0, /* level */ 2,
+ 0, -0, 1, -1, 2, -2, 3, -3, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 0.0, 0.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 0.75, -0.75,
+ /* Check 3 */ PathIterator.SEG_LINETO, 1.5, -1.5,
+ /* Check 4 */ PathIterator.SEG_LINETO, 2.25, -2.25,
+ /* Check 5 */ PathIterator.SEG_LINETO, 3.0, -3.0,
+ /* Check 6: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-D");
+ test_cubicCurve(h, /* flatness */ 0.1, /* level */ 2,
+ 0, -0, 1, -1, 2, -2, 3, -3, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 0.0, 0.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 3.0, -3.0,
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-E");
+ // Flatness of this curve: 4.4034; of left subdivision: 0.8506;
+ // of right subdivision: 1.281. Test with a flatness that is
+ // larger than that of the whole curve.
+ test_cubicCurve(h, /* flatness */ 5, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, 7, 8, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 7.0, 8.0,
+ /* Check 3: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-F");
+ // Flatness of this curve: 4.4034; of left subdivision: 0.8506;
+ // of right subdivision: 1.281. Test with a flatness that is
+ // larger than each subdivision, but smaller than the whole curve.
+ test_cubicCurve(h, /* flatness */ 3, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, 7, 8, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 5.125, 2.25,
+ /* Check 3 */ PathIterator.SEG_LINETO, 7.0, 8.0,
+ /* Check 4: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-G");
+ // Flatness of this curve: 4.4034; of left subdivision: 0.8506;
+ // of right subdivision: 1.281. Test with a flatness that is
+ // larger than the left, but smaller than the right subdivision.
+ test_cubicCurve(h, /* flatness */ 1, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, 7, 8, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 5.125, 2.25,
+ /* Check 3 */ PathIterator.SEG_LINETO, 5.640625, 6.15625,
+ /* Check 4 */ PathIterator.SEG_LINETO, 7.0, 8.0,
+ /* Check 5: PathIterator.isDone() */
+ });
+
+ h.checkPoint("cubicCurve-H");
+ // Flatness of this curve: 4.4034; of left subdivision: 0.8506;
+ // of right subdivision: 1.281. Test with a flatness that is
+ // smaller than each subdivision.
+ test_cubicCurve(h, /* flatness */ 0.8, /* level */ 8,
+ 10, -20, 3, 4, 5, 6, 7, 8, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 10.0, -20.0,
+ /* Check 2 */ PathIterator.SEG_LINETO, 6.296875, -5.78125,
+ /* Check 3 */ PathIterator.SEG_LINETO, 5.125, 2.25,
+ /* Check 4 */ PathIterator.SEG_LINETO, 5.640625, 6.15625,
+ /* Check 5 */ PathIterator.SEG_LINETO, 7.0, 8.0,
+ /* Check 6: PathIterator.isDone() */
+ });
+
+
+ h.checkPoint("cubicCurve-I");
+ // degenerated: one single point
+ test_cubicCurve(h, /* flatness */ 4, /* level */ 8,
+ 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, 2.3, new double[]
+ {
+ /* Check 1 */ PathIterator.SEG_MOVETO, 2.3, 2.3,
+ /* Check 2 */ PathIterator.SEG_LINETO, 2.3, 2.3,
+ /* Check 3: PathIterator.isDone() */
+ });
+ }
+
+
+
+ /**
+ * Flattens a CubicCurve2D with the specified flatness and recursion
+ * level.
+ */
+ private void test_cubicCurve(TestHarness h, double flatness, int level,
+ double x1, double y1,
+ double cx1, double cy1,
+ double cx2, double cy2,
+ double x2, double y2,
+ double[] data)
+ {
+ CubicCurve2D curve;
+ FlatteningPathIterator fpi;
+
+ curve = new CubicCurve2D.Double(x1, y1, cx1, cy1, cx2, cy2, x2, y2);
+ fpi = new FlatteningPathIterator(curve.getPathIterator(null),
+ flatness, level);
+ if (data == null)
+ {
+ dump(fpi);
+ /*
+ CubicCurve2D l = new CubicCurve2D.Double();
+ CubicCurve2D r = new CubicCurve2D.Double();
+ curve.subdivide(l, r);
+ System.out.println(curve.getFlatness());
+ System.out.println(l.getFlatness());
+ System.out.println(r.getFlatness());
+ */
+ }
+ else
+ checkSegments(h, fpi, data);
+ }
+
+
+
+
+ /**
+ * Flattens a GeneralPath.
+ */
+ private void test_generalPath(TestHarness h)
+ {
+ h.checkPoint("generalPath");
+
+ GeneralPath path;
+ path = new GeneralPath();
+ path.moveTo(1.1f, 1.2f);
+ path.lineTo(2.1f, 2.2f);
+ path.quadTo(3.1f, 3.2f, 4.1f, 4.2f);
+ path.closePath();
+ path.moveTo(5.1f, 5.2f);
+ path.curveTo(6.1f, 6.2f, 7.1f, 7.2f, 8.1f, 8.2f);
+
+ }
+
+
+ private static final float EPSILON_F = 1e-6f;
+ private static final double EPSILON = 1e-6;
+
+
+ private void checkSegments(TestHarness h, PathIterator pit, double[] pt)
+ {
+ for (int i = 0; i < pt.length/3; i++)
+ {
+ checkSegment(h, pit, i, pt);
+ pit.next();
+ }
+ h.check(pit.isDone());
+ }
+
+
+ private void checkSegment(TestHarness h, PathIterator pit, int seg,
+ double[] pt)
+ {
+ double[] d = new double[6];
+ float[] f = new float[6];
+ double x, y;
+ int segType, expectedSegType;
+
+ if (pit.isDone())
+ {
+ h.check(false);
+ h.debug("path iterator is prematurely done");
+ return;
+ }
+
+ expectedSegType = (int) pt[3 * seg];
+ segType = pit.currentSegment(d);
+ if (segType != expectedSegType)
+ {
+ h.debug("segment type mismatch (double[]): got "
+ + getSegmentTypeName(segType)
+ + ", expected " + getSegmentTypeName(expectedSegType));
+ return;
+ }
+
+ segType = pit.currentSegment(f);
+ if (segType != (int) pt[3 * seg])
+ {
+ h.check(segType, (int) pt[3 * seg]);
+ h.debug("segment type mismatch (float[])");
+ return;
+ }
+
+ if (segType == PathIterator.SEG_CLOSE)
+ {
+ h.check(true);
+ return;
+ }
+
+ x = pt[3 * seg + 1];
+ y = pt[3 * seg + 2];
+ if ((Math.abs(d[0] - x) > EPSILON)
+ || (Math.abs(d[1] - y) > EPSILON))
+ {
+ chkpt(h, d, 0, x, y);
+ return;
+ }
+
+ chkpt(h, f, 0, (float) x, (float) y);
+ }
+
+
+ private void chkpt(TestHarness h, float[] f, int off, float x, float y)
+ {
+ if ((Math.abs(f[off] - x) > EPSILON_F)
+ || (Math.abs(f[off+1] - y) > EPSILON_F))
+ {
+ h.check(false);
+ h.debug("got (" + f[off] + ", " + f[off+1] + ") but expected ("
+ + x + ", " + y + ")");
+ }
+ else
+ h.check(true);
+ }
+
+
+ private void chkpt(TestHarness h, double[] f, int off, double x, double y)
+ {
+ if ((Math.abs(f[off] - x) > EPSILON)
+ || (Math.abs(f[off+1] - y) > EPSILON))
+ {
+ h.check(false);
+ h.debug("got (" + f[off] + ", " + f[off+1] + ") but expected ("
+ + x + ", " + y + ")");
+ }
+ else
+ h.check(true);
+ }
+
+
+ private static String getSegmentTypeName(int seg)
+ {
+ switch (seg)
+ {
+ case PathIterator.SEG_MOVETO:
+ return "PathIterator.SEG_MOVETO";
+
+ case PathIterator.SEG_LINETO:
+ return "PathIterator.SEG_LINETO";
+
+ case PathIterator.SEG_QUADTO:
+ return "PathIterator.SEG_QUADTO";
+
+ case PathIterator.SEG_CUBICTO:
+ return "PathIterator.SEG_CUBICTO";
+
+ case PathIterator.SEG_CLOSE:
+ return "PathIterator.SEG_CLOSE";
+
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+
+ private void dump(PathIterator p)
+ {
+ double[] d = new double[6];
+ int seg, i = 1;
+
+ System.out.println(" {");
+ while (!p.isDone())
+ {
+ seg = p.currentSegment(d);
+ System.out.print(" /* Check " + (i++) + " */ ");
+ System.out.print(getSegmentTypeName(seg));
+ System.out.println(", " + d[0] + ", " + d[1] + ",");
+ p.next();
+ }
+ System.out.println(" /* Check " + i
+ + ": PathIterator.isDone() */");
+ System.out.println(" });");
+ }
+}
+
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/getFlatness.java b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getFlatness.java
new file mode 100644
index 00000000..5ec57959
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getFlatness.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.FlatteningPathIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.FlatteningPathIterator;
+import java.awt.geom.Line2D;
+
+
+/**
+ * Checks whether FlatteningPathIterator.getFlatness works.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getFlatness
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ FlatteningPathIterator fpi;
+
+ // Check 1
+ fpi = new FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null),
+ 3.141);
+ harness.check(fpi.getFlatness(), 3.141);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/getRecursionLimit.java b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getRecursionLimit.java
new file mode 100644
index 00000000..e74a570b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getRecursionLimit.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.FlatteningPathIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.FlatteningPathIterator;
+import java.awt.geom.Line2D;
+
+
+/**
+ * Checks whether FlatteningPathIterator.getRecursionLimit works.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getRecursionLimit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ FlatteningPathIterator fpi;
+
+ // Check 1
+ fpi = new FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null),
+ 9.2, 17);
+ harness.check(fpi.getRecursionLimit(), 17);
+
+ // Check 2 (in case it always returned 17)
+ fpi = new FlatteningPathIterator(
+ new Line2D.Float().getPathIterator(null), 2.1, 4);
+ harness.check(fpi.getRecursionLimit(), 4);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/FlatteningPathIterator/getWindingRule.java b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getWindingRule.java
new file mode 100644
index 00000000..ee691e48
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/FlatteningPathIterator/getWindingRule.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.FlatteningPathIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.FlatteningPathIterator;
+import java.awt.geom.PathIterator;
+
+
+/**
+ * Checks whether FlatteningPathIterator.getFlatness works.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getWindingRule
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ FlatteningPathIterator fpi;
+
+ // Check 1
+ fpi = new FlatteningPathIterator(
+ new TestPathIterator(PathIterator.WIND_EVEN_ODD), 2.0);
+ harness.check(fpi.getWindingRule(), PathIterator.WIND_EVEN_ODD);
+
+ // Check 2
+ fpi = new FlatteningPathIterator(
+ new TestPathIterator(PathIterator.WIND_NON_ZERO), 23.0);
+ harness.check(fpi.getWindingRule(), PathIterator.WIND_NON_ZERO);
+ }
+
+
+ private static class TestPathIterator
+ implements PathIterator
+ {
+ int rule;
+
+ public TestPathIterator(int rule)
+ {
+ this.rule = rule;
+ }
+
+ public int getWindingRule()
+ {
+ return rule;
+ }
+
+ public boolean isDone()
+ {
+ return true;
+ }
+
+ public int currentSegment(float[] f)
+ {
+ throw new IllegalStateException();
+ }
+
+ public int currentSegment(double[] d)
+ {
+ throw new IllegalStateException();
+ }
+
+ public void next()
+ {
+ throw new IllegalStateException();
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/CVS/Entries b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Entries
new file mode 100644
index 00000000..f8e9ef5a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Entries
@@ -0,0 +1,6 @@
+/GeneralPath.java/1.1/Fri Oct 24 11:54:55 2003//
+/append_PathIterator.java/1.2/Thu Jun 3 14:31:04 2004//
+/contains.java/1.1/Sun Nov 7 16:55:22 2004//
+/getCurrentPoint.java/1.1/Fri Oct 24 11:54:55 2003//
+/getPathIterator.java/1.1/Fri Oct 24 11:54:55 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/CVS/Repository b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Repository
new file mode 100644
index 00000000..f952ca31
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/GeneralPath
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/CVS/Root b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/GeneralPath.java b/gnu/testlet/java/awt/geom/GeneralPath/GeneralPath.java
new file mode 100644
index 00000000..0d7b27c7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/GeneralPath.java
@@ -0,0 +1,205 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.GeneralPath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.PathIterator;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the GeneralPath constructors works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class GeneralPath
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testZeroArgConstructor(harness);
+ testIntArgConstructor(harness);
+ testIntIntArgConstructor(harness);
+ testShapeArgConstructor(harness);
+ }
+
+
+ /**
+ * Checks whether the zero-argument constructor works.
+ */
+ public void testZeroArgConstructor(TestHarness harness)
+ {
+ java.awt.geom.GeneralPath path;
+
+ harness.checkPoint("GeneralPath()");
+
+ // Check 1
+ path = new java.awt.geom.GeneralPath();
+ harness.check(path.getWindingRule(),
+ java.awt.geom.GeneralPath.WIND_NON_ZERO);
+ }
+
+
+ /**
+ * Checks whether the one-argument constructor taking an integer
+ * works.
+ */
+ public void testIntArgConstructor(TestHarness harness)
+ {
+ java.awt.geom.GeneralPath path;
+ Throwable caught;
+
+ harness.checkPoint("GeneralPath(int)");
+
+ // Check 1
+ path = new java.awt.geom.GeneralPath(
+ java.awt.geom.GeneralPath.WIND_NON_ZERO);
+ harness.check(path.getWindingRule(),
+ java.awt.geom.GeneralPath.WIND_NON_ZERO);
+
+ // Check 2
+ path = new java.awt.geom.GeneralPath(
+ java.awt.geom.GeneralPath.WIND_EVEN_ODD);
+ harness.check(path.getWindingRule(),
+ java.awt.geom.GeneralPath.WIND_EVEN_ODD);
+
+ // Check 3
+ caught = null;
+ try
+ {
+ new java.awt.geom.GeneralPath(23);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+ }
+
+
+ /**
+ * Checks whether the two-argument constructor taking two integers
+ * works.
+ */
+ public void testIntIntArgConstructor(TestHarness harness)
+ {
+ java.awt.geom.GeneralPath path;
+ Throwable caught;
+
+ harness.checkPoint("GeneralPath(int,int)");
+
+ // Check 1
+ path = new java.awt.geom.GeneralPath(
+ java.awt.geom.GeneralPath.WIND_NON_ZERO, 12);
+ harness.check(path.getWindingRule(),
+ java.awt.geom.GeneralPath.WIND_NON_ZERO);
+
+ // Check 2
+ path = new java.awt.geom.GeneralPath(
+ java.awt.geom.GeneralPath.WIND_EVEN_ODD, 12);
+ harness.check(path.getWindingRule(),
+ java.awt.geom.GeneralPath.WIND_EVEN_ODD);
+
+ // Check 3
+ caught = null;
+ try
+ {
+ new java.awt.geom.GeneralPath(23, 12);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+ }
+
+
+ /**
+ * Checks whether the one-argument constructor taking a Shape
+ * works.
+ */
+ public void testShapeArgConstructor(TestHarness harness)
+ {
+ java.awt.geom.GeneralPath path;
+ Throwable caught;
+ PathIterator piter;
+ double[] c = new double[6];
+
+ harness.checkPoint("GeneralPath(Shape)");
+
+ // Check 1
+ caught = null;
+ try
+ {
+ path = new java.awt.geom.GeneralPath(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof NullPointerException);
+
+ // Check 2 to 4
+ path = new java.awt.geom.GeneralPath(new Rectangle2D.Double(10,20,30,40));
+ piter = path.getPathIterator(null);
+ harness.check(piter.currentSegment(c), PathIterator.SEG_MOVETO);
+ harness.check(c[0], 10.0);
+ harness.check(c[1], 20.0);
+
+ // Check 5 to 7
+ piter.next();
+ harness.check(piter.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 40.0);
+ harness.check(c[1], 20.0);
+
+ // Check 8 to 10
+ piter.next();
+ harness.check(piter.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 40.0);
+ harness.check(c[1], 60.0);
+
+ // Check 11 to 13
+ piter.next();
+ harness.check(piter.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 10.0);
+ harness.check(c[1], 60.0);
+
+ // Check 14 to 16
+ piter.next();
+ harness.check(piter.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 10.0);
+ harness.check(c[1], 20.0);
+
+ // Check 17
+ piter.next();
+ harness.check(piter.currentSegment(c), PathIterator.SEG_CLOSE);
+
+ // Check 18
+ piter.next();
+ harness.check(piter.isDone());
+
+ // Check 19
+ harness.check(piter.getWindingRule(), PathIterator.WIND_NON_ZERO);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java b/gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java
new file mode 100644
index 00000000..7f141463
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/append_PathIterator.java
@@ -0,0 +1,288 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.GeneralPath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.GeneralPath;
+import java.awt.geom.IllegalPathStateException;
+import java.awt.geom.Line2D;
+import java.awt.geom.PathIterator;
+
+
+/**
+ * Checks whether the GeneralPath.append(PathIterator,boolean) methods
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class append_PathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_notConnecting(harness);
+ test_connecting(harness);
+ test_empty(harness);
+ }
+
+
+ /**
+ * Appends a path iterator to an empty GeneralPath without
+ * connecting the two together.
+ */
+ public void test_notConnecting(TestHarness harness)
+ {
+ harness.checkPoint("notConnecting");
+
+ PathIterator piter, resPiter;
+ GeneralPath path;
+ double[] c = new double[6];
+
+ piter = new PathIterator()
+ {
+ int i = 0;
+
+ public int getWindingRule()
+ {
+ return PathIterator.WIND_EVEN_ODD;
+ }
+
+ public boolean isDone()
+ {
+ // System.out.println("isDone(), i=" + i);
+ return i >= 7;
+ }
+
+ public void next()
+ {
+ ++i;
+ }
+
+ public int currentSegment(float[] c)
+ {
+ double[] d = new double[c.length];
+ int r = currentSegment(d);
+ for (int i = 0; i < d.length; i++)
+ c[i] = (float) d[i];
+ return r;
+ }
+
+ public int currentSegment(double[] c)
+ {
+ switch (i)
+ {
+ case 0:
+ c[0] = 10; c[1] = 11;
+ return PathIterator.SEG_MOVETO;
+
+ case 1:
+ c[0] = 20; c[1] = 21;
+ return PathIterator.SEG_LINETO;
+
+ case 2:
+ c[0] = 30; c[1] = 31; c[2] = 32; c[3] = 33;
+ return PathIterator.SEG_QUADTO;
+
+ case 3:
+ c[0] = 40; c[1] = 41; c[2] = 42; c[3] = 43;
+ c[4] = 44; c[5] = 45;
+ return PathIterator.SEG_CUBICTO;
+
+ case 4:
+ return PathIterator.SEG_CLOSE;
+
+ case 5:
+ c[0] = 50; c[1] = 51;
+ return PathIterator.SEG_MOVETO;
+
+ case 6:
+ c[0] = 60; c[1] = 61;
+ return PathIterator.SEG_LINETO;
+
+ default:
+ throw new IllegalPathStateException();
+ }
+ }
+ };
+
+
+ path = new GeneralPath(GeneralPath.WIND_NON_ZERO);
+ path.append(piter, false);
+
+ harness.check(path.getWindingRule(), // 1
+ GeneralPath.WIND_NON_ZERO);
+
+ resPiter = path.getPathIterator(null);
+ harness.check(!resPiter.isDone()); // 2
+
+ harness.check(resPiter.currentSegment(c), // 3
+ PathIterator.SEG_MOVETO);
+ harness.check(c[0], 10); // 4
+ harness.check(c[1], 11); // 5
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 6
+ harness.check(resPiter.currentSegment(c), // 7
+ PathIterator.SEG_LINETO);
+ harness.check(c[0], 20); // 8
+ harness.check(c[1], 21); // 9
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 10
+ harness.check(resPiter.currentSegment(c),
+ PathIterator.SEG_QUADTO); // 11
+ harness.check(c[0], 30); // 12
+ harness.check(c[1], 31); // 13
+ harness.check(c[2], 32); // 14
+ harness.check(c[3], 33); // 15
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 16
+ harness.check(resPiter.currentSegment(c),
+ PathIterator.SEG_CUBICTO); // 17
+ harness.check(c[0], 40); // 18
+ harness.check(c[1], 41); // 19
+ harness.check(c[2], 42); // 20
+ harness.check(c[3], 43); // 21
+ harness.check(c[4], 44); // 22
+ harness.check(c[5], 45); // 23
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 24
+ harness.check(resPiter.currentSegment(c), // 25
+ PathIterator.SEG_CLOSE);
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 26
+ harness.check(resPiter.currentSegment(c), // 27
+ PathIterator.SEG_MOVETO);
+ harness.check(c[0], 50); // 28
+ harness.check(c[1], 51); // 29
+
+ resPiter.next();
+ harness.check(!resPiter.isDone()); // 30
+ harness.check(resPiter.currentSegment(c), // 31
+ PathIterator.SEG_LINETO);
+ harness.check(c[0], 60); // 32
+ harness.check(c[1], 61); // 33
+
+ resPiter.next();
+ harness.check(resPiter.isDone()); // 34
+ harness.check(piter.isDone()); // 35
+ }
+
+
+ /**
+ * Appends a PathIterator to a non-empty path, connecting the two
+ * together with a SEG_LINETO segment.
+ */
+ public void test_connecting(TestHarness harness)
+ {
+ GeneralPath path;
+ PathIterator pit;
+ float[] c = new float[6];
+
+ harness.checkPoint("connecting");
+ path = new GeneralPath();
+ path.moveTo(10, 11);
+ path.append(new Line2D.Double(20, 21, 30, 31).getPathIterator(null),
+ /* connecting */ true);
+ pit = path.getPathIterator(null);
+
+ harness.check(!pit.isDone()); // 1
+ harness.check(pit.currentSegment(c), // 2
+ PathIterator.SEG_MOVETO);
+ harness.check(c[0], 10); // 3
+ harness.check(c[1], 11); // 4
+ pit.next();
+ harness.check(!pit.isDone()); // 5
+ harness.check(pit.currentSegment(c), // 6
+ PathIterator.SEG_LINETO);
+ harness.check(c[0], 20); // 7
+ harness.check(c[1], 21); // 8
+ pit.next();
+ harness.check(!pit.isDone()); // 9
+ harness.check(pit.currentSegment(c), // 10
+ PathIterator.SEG_LINETO);
+ harness.check(c[0], 30); // 11
+ harness.check(c[1], 31); // 12
+ pit.next();
+ harness.check(pit.isDone()); // 13
+ }
+
+
+ /**
+ * Appends an empty path iterator to an empty GeneralPath.
+ */
+ public void test_empty(TestHarness harness)
+ {
+ PathIterator pit, respit;
+ GeneralPath path;
+
+ harness.checkPoint("empty");
+ path = new GeneralPath();
+
+ // Check 1
+ path.append(new EmptyPathIterator(), false);
+ harness.check(path.getPathIterator(null).isDone());
+
+ // Check 2
+ path.append(new EmptyPathIterator(), true);
+ harness.check(path.getPathIterator(null).isDone());
+ }
+
+
+
+ /**
+ * A path iterator for an empty path.
+ */
+ private static class EmptyPathIterator
+ implements PathIterator
+ {
+ public int getWindingRule()
+ {
+ return PathIterator.WIND_EVEN_ODD;
+ }
+
+ public boolean isDone()
+ {
+ return true;
+ }
+
+ public void next()
+ {
+ throw new IllegalPathStateException();
+ }
+
+ public int currentSegment(float[] c)
+ {
+ throw new IllegalPathStateException();
+ }
+
+ public int currentSegment(double[] c)
+ {
+ throw new IllegalPathStateException();
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/contains.java b/gnu/testlet/java/awt/geom/GeneralPath/contains.java
new file mode 100644
index 00000000..7f01dd82
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/contains.java
@@ -0,0 +1,135 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 Noa Resare <noa@resare.com>
+
+//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.java.awt.geom.GeneralPath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.GeneralPath;
+
+// these tests are adapted right away from java/awt/Polygon/contains.java
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+public class contains implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("GeneralPath 1");
+
+ GeneralPath p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
+ p.moveTo(0, 0);
+ p.lineTo(1, 2);
+ p.lineTo(2, 0);
+
+ harness.check(p.contains(0, 0)); // 1
+ harness.check(!p.contains(0, 1)); // 2
+ harness.check(p.contains(1, 0)); // 3
+ harness.check(p.contains(1, 1)); // 4
+ harness.check(!p.contains(1, 2)); // 5
+ harness.check(!p.contains(2, 0)); // 6
+ harness.check(!p.contains(2, 1)); // 7
+
+ harness.checkPoint("GeneralPath 2");
+
+ p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
+ p.moveTo(0, 0); // 0
+ p.lineTo(0, 5); // 1
+ p.lineTo(5, 5); // 2
+ p.lineTo(5, 1); // 3
+ p.lineTo(2, 1); // 4
+ p.lineTo(2, 3); // 5
+ p.lineTo(3, 3); // 6
+ p.lineTo(3, 2); // 7
+ p.lineTo(4, 2); // 8
+ p.lineTo(4, 4); // 9
+ p.lineTo(1, 4); // 10
+ p.lineTo(1, 0); // 11
+
+ harness.check(p.contains(0, 0)); // 8
+ harness.check(!p.contains(0, 5)); // 9
+ harness.check(!p.contains(5, 5)); // 10
+ harness.check(!p.contains(5, 1)); // 11
+ harness.check(p.contains(2, 1)); // 12
+ harness.check(!p.contains(2, 3)); // 13
+ harness.check(!p.contains(3, 3)); // 14
+ harness.check(!p.contains(3, 2)); // 15
+ harness.check(p.contains(4, 2)); // 16
+ harness.check(p.contains(4, 4)); // 17
+ harness.check(p.contains(1, 4)); // 18
+ harness.check(!p.contains(1, 0)); // 19
+
+ harness.check(!p.contains(-0.5, 2.5)); // 20
+ harness.check(p.contains(0.5, 2.5)); // 21
+ harness.check(!p.contains(1.5, 2.5)); // 22
+ harness.check(p.contains(2.5, 2.5)); // 23
+ harness.check(!p.contains(3.5, 2.5)); // 24
+ harness.check(p.contains(4.5, 2.5)); // 25
+ harness.check(!p.contains(5.5, 2.5)); // 26
+
+ harness.checkPoint("Null argument checks");
+ testNullArguments(harness);
+ }
+
+ /**
+ * Checks method calls with <code>null</code> argument.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testNullArguments(TestHarness harness)
+ {
+ boolean pass = false;
+ GeneralPath p = new GeneralPath();
+ try
+ {
+ p.contains((Point) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ p.contains((Point2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ p.contains((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/getCurrentPoint.java b/gnu/testlet/java/awt/geom/GeneralPath/getCurrentPoint.java
new file mode 100644
index 00000000..a466371f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/getCurrentPoint.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.GeneralPath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Point2D;
+
+
+/**
+ * Checks whether GeneralPath.getCurrentPoint works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCurrentPoint
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ GeneralPath path = new GeneralPath();
+ Point2D pt = new Point2D.Float();
+
+ // Check 1
+ harness.check(path.getCurrentPoint() == null);
+
+ // Check 2
+ path.moveTo(98, 76);
+ pt.setLocation(98, 76);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 3
+ path.moveTo(12, 13.4f);
+ pt.setLocation(12, 13.4f);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 4
+ path.lineTo(-1, -2);
+ pt.setLocation(-1, -2);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 5
+ path.lineTo(-10, -20);
+ pt.setLocation(-10, -20);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 6
+ path.quadTo(1, 2, 3, 4);
+ pt.setLocation(3, 4);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 7
+ path.curveTo(5, 6, 7, 8, 9, 10);
+ pt.setLocation(9, 10);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 8
+ path.closePath();
+ pt.setLocation(12, 13.4f);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 9
+ path.moveTo(50, 51);
+ pt.setLocation(50, 51);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 10
+ path.quadTo(52, 53, 54, 55);
+ pt.setLocation(54, 55);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 11
+ path.closePath();
+ pt.setLocation(50, 51);
+ harness.check(pt.equals(path.getCurrentPoint()));
+
+ // Check 12
+ path.reset();
+ harness.check(path.getCurrentPoint() == null);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/GeneralPath/getPathIterator.java b/gnu/testlet/java/awt/geom/GeneralPath/getPathIterator.java
new file mode 100644
index 00000000..f0d9719e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/GeneralPath/getPathIterator.java
@@ -0,0 +1,215 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.GeneralPath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.PathIterator;
+
+
+/**
+ * Checks whether the GeneralPath.getPathIterator method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_untransformed(harness);
+ test_transformed(harness);
+ }
+
+
+ /**
+ * Checks whether the getIterator method works when a null
+ * transform is being passed.
+ */
+ private void test_untransformed(TestHarness h)
+ {
+ GeneralPath path;
+ PathIterator pit;
+ float[] f = new float[6];
+ double[] d = new double[6];
+
+ h.checkPoint("untransformed");
+ path = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
+ path.moveTo(10, 11);
+ path.lineTo(20, 21);
+ path.closePath();
+ path.moveTo(30, 31);
+ path.quadTo(40, 41, 42, 43);
+ path.curveTo(50, 51, 52, 53, 54, 55);
+
+ pit = path.getPathIterator(null);
+ h.check(pit.getWindingRule(), PathIterator.WIND_EVEN_ODD); // 1
+ h.check(!pit.isDone()); // 2
+ h.check(pit.currentSegment(f), PathIterator.SEG_MOVETO); // 3
+ h.check(f[0], 10); // 4
+ h.check(f[1], 11); // 5
+ h.check(pit.currentSegment(d), PathIterator.SEG_MOVETO); // 6
+ h.check(d[0], 10); // 7
+ h.check(d[1], 11); // 8
+ pit.next();
+ h.check(!pit.isDone()); // 9
+ h.check(pit.currentSegment(f), PathIterator.SEG_LINETO); // 10
+ h.check(f[0], 20); // 11
+ h.check(f[1], 21); // 12
+ h.check(pit.currentSegment(d), PathIterator.SEG_LINETO); // 13
+ h.check(d[0], 20); // 14
+ h.check(d[1], 21); // 15
+ pit.next();
+ h.check(!pit.isDone()); // 16
+ h.check(pit.currentSegment(f), PathIterator.SEG_CLOSE) ; // 17
+ h.check(pit.currentSegment(d), PathIterator.SEG_CLOSE) ; // 18
+ pit.next();
+ h.check(!pit.isDone()); // 19
+ h.check(pit.currentSegment(f), PathIterator.SEG_MOVETO); // 20
+ h.check(f[0], 30); // 21
+ h.check(f[1], 31); // 22
+ h.check(pit.currentSegment(d), PathIterator.SEG_MOVETO); // 23
+ h.check(d[0], 30); // 24
+ h.check(d[1], 31); // 25
+ pit.next();
+ h.check(!pit.isDone()); // 26
+ h.check(pit.currentSegment(f), PathIterator.SEG_QUADTO); // 27
+ h.check(f[0], 40); // 28
+ h.check(f[1], 41); // 29
+ h.check(f[2], 42); // 30
+ h.check(f[3], 43); // 31
+ h.check(pit.currentSegment(d), PathIterator.SEG_QUADTO); // 32
+ h.check(d[0], 40); // 33
+ h.check(d[1], 41); // 34
+ h.check(d[2], 42); // 35
+ h.check(d[3], 43); // 36
+ pit.next();
+ h.check(!pit.isDone()); // 37
+ h.check(pit.currentSegment(f), PathIterator.SEG_CUBICTO); // 38
+ h.check(f[0], 50); // 39
+ h.check(f[1], 51); // 40
+ h.check(f[2], 52); // 41
+ h.check(f[3], 53); // 42
+ h.check(f[4], 54); // 43
+ h.check(f[5], 55); // 44
+ h.check(pit.currentSegment(d), PathIterator.SEG_CUBICTO); // 45
+ h.check(d[0], 50); // 46
+ h.check(d[1], 51); // 47
+ h.check(d[2], 52); // 48
+ h.check(d[3], 53); // 49
+ h.check(d[4], 54); // 50
+ h.check(d[5], 55); // 51
+ pit.next();
+ h.check(pit.isDone()); // 52
+ }
+
+
+ /**
+ * Checks whether the getIterator method works when an affine
+ * transformation is being passed.
+ */
+ private void test_transformed(TestHarness h)
+ {
+ GeneralPath path;
+ PathIterator pit;
+ AffineTransform tx;
+ float[] f = new float[6];
+ double[] d = new double[6];
+
+ h.checkPoint("transformed");
+ path = new GeneralPath(GeneralPath.WIND_NON_ZERO);
+ path.moveTo(10, 11);
+ path.lineTo(20, 21);
+ path.closePath();
+ path.moveTo(30, 31);
+ path.quadTo(40, 41, 42, 43);
+ path.curveTo(50, 51, 52, 53, 54, 55);
+
+ tx = new AffineTransform();
+ tx.translate(2, 3);
+ tx.scale(10, 10);
+
+ pit = path.getPathIterator(tx);
+ h.check(pit.getWindingRule(), PathIterator.WIND_NON_ZERO); // 1
+ h.check(!pit.isDone()); // 2
+ h.check(pit.currentSegment(f), PathIterator.SEG_MOVETO); // 3
+ h.check(f[0], 102); // 4
+ h.check(f[1], 113); // 5
+ h.check(pit.currentSegment(d), PathIterator.SEG_MOVETO); // 6
+ h.check(d[0], 102); // 7
+ h.check(d[1], 113); // 8
+ pit.next();
+ h.check(!pit.isDone()); // 9
+ h.check(pit.currentSegment(f), PathIterator.SEG_LINETO); // 10
+ h.check(f[0], 202); // 11
+ h.check(f[1], 213); // 12
+ h.check(pit.currentSegment(d), PathIterator.SEG_LINETO); // 13
+ h.check(d[0], 202); // 14
+ h.check(d[1], 213); // 15
+ pit.next();
+ h.check(!pit.isDone()); // 16
+ h.check(pit.currentSegment(f), PathIterator.SEG_CLOSE) ; // 17
+ h.check(pit.currentSegment(d), PathIterator.SEG_CLOSE) ; // 18
+ pit.next();
+ h.check(!pit.isDone()); // 19
+ h.check(pit.currentSegment(f), PathIterator.SEG_MOVETO); // 20
+ h.check(f[0], 302); // 21
+ h.check(f[1], 313); // 22
+ h.check(pit.currentSegment(d), PathIterator.SEG_MOVETO); // 23
+ h.check(d[0], 302); // 24
+ h.check(d[1], 313); // 25
+ pit.next();
+ h.check(!pit.isDone()); // 26
+ h.check(pit.currentSegment(f), PathIterator.SEG_QUADTO); // 27
+ h.check(f[0], 402); // 28
+ h.check(f[1], 413); // 29
+ h.check(f[2], 422); // 30
+ h.check(f[3], 433); // 31
+ h.check(pit.currentSegment(d), PathIterator.SEG_QUADTO); // 32
+ h.check(d[0], 402); // 33
+ h.check(d[1], 413); // 34
+ h.check(d[2], 422); // 35
+ h.check(d[3], 433); // 36
+ pit.next();
+ h.check(!pit.isDone()); // 37
+ h.check(pit.currentSegment(f), PathIterator.SEG_CUBICTO); // 38
+ h.check(f[0], 502); // 39
+ h.check(f[1], 513); // 40
+ h.check(f[2], 522); // 41
+ h.check(f[3], 533); // 42
+ h.check(f[4], 542); // 43
+ h.check(f[5], 553); // 44
+ h.check(pit.currentSegment(d), PathIterator.SEG_CUBICTO); // 45
+ h.check(d[0], 502); // 46
+ h.check(d[1], 513); // 47
+ h.check(d[2], 522); // 48
+ h.check(d[3], 533); // 49
+ h.check(d[4], 542); // 50
+ h.check(d[5], 553); // 51
+ pit.next();
+ h.check(pit.isDone()); // 52
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Line2D/CVS/Entries b/gnu/testlet/java/awt/geom/Line2D/CVS/Entries
new file mode 100644
index 00000000..8b08fd2c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/CVS/Entries
@@ -0,0 +1,17 @@
+/clone.java/1.1/Fri Aug 6 10:23:26 2004//
+/contains.java/1.1/Fri Aug 6 10:23:26 2004//
+/equals.java/1.1/Fri Aug 6 10:23:26 2004//
+/getBounds.java/1.1/Fri Aug 6 10:23:26 2004//
+/getP1.java/1.1/Fri Aug 6 10:23:26 2004//
+/getP2.java/1.1/Fri Aug 6 10:23:26 2004//
+/getPathIterator.java/1.1/Fri Aug 6 10:23:26 2004//
+/intersects.java/1.1/Fri Aug 6 10:23:26 2004//
+/intersectsLine.java/1.1/Fri Aug 6 10:23:26 2004//
+/linesIntersect.java/1.2/Fri Aug 6 10:54:28 2004//
+/ptLineDist.java/1.1/Fri Aug 6 10:23:26 2004//
+/ptLineDistSq.java/1.1/Fri Aug 6 10:23:26 2004//
+/ptSegDist.java/1.1/Fri Aug 6 10:23:26 2004//
+/ptSegDistSq.java/1.1/Fri Aug 6 10:23:26 2004//
+/relativeCCW.java/1.1/Fri Aug 6 10:23:26 2004//
+/setLine.java/1.1/Fri Aug 6 10:23:26 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Line2D/CVS/Repository b/gnu/testlet/java/awt/geom/Line2D/CVS/Repository
new file mode 100644
index 00000000..f92f75f2
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Line2D
diff --git a/gnu/testlet/java/awt/geom/Line2D/CVS/Root b/gnu/testlet/java/awt/geom/Line2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Line2D/clone.java b/gnu/testlet/java/awt/geom/Line2D/clone.java
new file mode 100644
index 00000000..0b64e862
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/clone.java
@@ -0,0 +1,49 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+
+/**
+* Checks that Line2D.clone() method works correctly.
+*/
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Line2D line2 = null;
+ line2 = (Line2D) line1.clone();
+ harness.check(line1.getX1() == line2.getX1());
+ harness.check(line1.getX2() == line2.getX2());
+ harness.check(line1.getY1() == line2.getY1());
+ harness.check(line1.getY2() == line2.getY2());
+ harness.check(line1.getClass() == line2.getClass());
+ harness.check(line1 != line2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Line2D/contains.java b/gnu/testlet/java/awt/geom/Line2D/contains.java
new file mode 100644
index 00000000..400deee2
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/contains.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+* Checks that Line2D.contains() method works correctly.
+*/
+public class contains implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(line1.contains(1.0, 2.0) == false);
+ harness.check(line1.contains(3.0, 4.0) == false);
+ harness.check(line1.contains(new Point2D.Double(1.0, 2.0)) == false);
+ harness.check(line1.contains(new Point2D.Double(3.0, 4.0)) == false);
+ harness.check(line1.contains((Point2D) null) == false);
+ harness.check(line1.contains(new Rectangle2D.Double(1.0, 2.0, 0.0, 0.0)) == false);
+ harness.check(line1.contains((Rectangle2D) null) == false);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Line2D/equals.java b/gnu/testlet/java/awt/geom/Line2D/equals.java
new file mode 100644
index 00000000..5f5ab943
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/equals.java
@@ -0,0 +1,45 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+
+/**
+ * Line2D does not override equals (see bug parade id 5057070).
+ */
+public class equals
+ implements Testlet
+{
+ /**
+ * Confirm that two lines with the same end points are NOT considered equal.
+ */
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Line2D line2 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!line1.equals(line2));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/getBounds.java b/gnu/testlet/java/awt/geom/Line2D/getBounds.java
new file mode 100644
index 00000000..82b3eb06
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/getBounds.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.Rectangle;
+
+/**
+* Checks that Line2D.getBounds() works correctly.
+*/
+public class getBounds implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Rectangle bounds = line1.getBounds();
+ harness.check((int) bounds.getX() == 1);
+ harness.check((int) bounds.getMaxX() == 3);
+ harness.check((int) bounds.getY() == 2);
+ harness.check((int) bounds.getMaxY() == 4);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/geom/Line2D/getP1.java b/gnu/testlet/java/awt/geom/Line2D/getP1.java
new file mode 100644
index 00000000..130aca07
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/getP1.java
@@ -0,0 +1,44 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Checks whether Line2D.getP1() works correctly.
+ */
+public class getP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Point2D pt1 = line1.getP1();
+ harness.check(pt1.getX() == 1.0);
+ harness.check(pt1.getY() == 2.0);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/getP2.java b/gnu/testlet/java/awt/geom/Line2D/getP2.java
new file mode 100644
index 00000000..fbe7111e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/getP2.java
@@ -0,0 +1,44 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+* Checks whether Line2D.getP2() works correctly.
+*/
+public class getP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ Point2D pt2 = line1.getP2();
+ harness.check(pt2.getX() == 3.0);
+ harness.check(pt2.getY() == 4.0);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/getPathIterator.java b/gnu/testlet/java/awt/geom/Line2D/getPathIterator.java
new file mode 100644
index 00000000..2e01f71b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/getPathIterator.java
@@ -0,0 +1,57 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.PathIterator;
+
+/**
+* Checks whether Line2D.getPathIterator() works correctly.
+*/
+public class getPathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(1.0, 2.0, 3.0, 4.0);
+ PathIterator iterator = line1.getPathIterator(null);
+ double[] c = new double[6];
+
+ harness.check(!iterator.isDone());
+ harness.check(iterator.currentSegment(c), PathIterator.SEG_MOVETO);
+ harness.check(c[0], 1.0);
+ harness.check(c[1], 2.0);
+
+ iterator.next();
+ harness.check(!iterator.isDone());
+ harness.check(iterator.currentSegment(c), PathIterator.SEG_LINETO);
+ harness.check(c[0], 3.0);
+ harness.check(c[1], 4.0);
+
+ iterator.next();
+ harness.check(iterator.isDone());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/intersects.java b/gnu/testlet/java/awt/geom/Line2D/intersects.java
new file mode 100644
index 00000000..8f65b922
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/intersects.java
@@ -0,0 +1,82 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+* Checks whether Line2D.intersects() works correctly.
+*/
+public class intersects
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(line1.intersects(0.0, -1.0, 1.0, 1.0));
+ harness.check(line1.intersects(0.0, 0.0, 1.0, 1.0));
+ harness.check(!line1.intersects(0.0, 1.0, 1.0, 1.0));
+
+ harness.check(line1.intersects(new Rectangle2D.Double(0.0, -1.0, 1.0, 1.0)));
+ harness.check(line1.intersects(new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0)));
+ harness.check(!line1.intersects(new Rectangle2D.Double(0.0, 1.0, 1.0, 1.0)));
+
+ Line2D line2 = new Line2D.Double(0.0, 0.0, 0.0, 1.0);
+ harness.check(line2.intersects(-1.0, 0.0, 1.0, 1.0));
+ harness.check(line2.intersects(0.0, 0.0, 1.0, 1.0));
+ harness.check(!line2.intersects(1.0, 0.0, 1.0, 1.0));
+
+ harness.check(line2.intersects(new Rectangle2D.Double(-1.0, 0.0, 1.0, 1.0)));
+ harness.check(line2.intersects(new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0)));
+ harness.check(!line2.intersects(new Rectangle2D.Double(1.0, 0.0, 1.0, 1.0)));
+
+ Line2D line3 = new Line2D.Double(0.0, 1.0, 1.0, 1.0);
+ harness.check(!line3.intersects(0.0, -1.0, 1.0, 1.0));
+ harness.check(line3.intersects(0.0, 0.0, 1.0, 1.0));
+ harness.check(line3.intersects(0.0, 1.0, 1.0, 1.0));
+ harness.check(!line3.intersects(new Rectangle2D.Double(0.0, -1.0, 1.0, 1.0)));
+ harness.check(line3.intersects(new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0)));
+ harness.check(line3.intersects(new Rectangle2D.Double(0.0, 1.0, 1.0, 1.0)));
+
+ Line2D line4 = new Line2D.Double(1.0, 0.0, 1.0, 1.0);
+ harness.check(!line4.intersects(-1.0, 0.0, 1.0, 1.0));
+ harness.check(line4.intersects(0.0, 0.0, 1.0, 1.0));
+ harness.check(line4.intersects(1.0, 0.0, 1.0, 1.0));
+ harness.check(!line4.intersects(new Rectangle2D.Double(-1.0, 0.0, 1.0, 1.0)));
+ harness.check(line4.intersects(new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0)));
+ harness.check(line4.intersects(new Rectangle2D.Double(1.0, 0.0, 1.0, 1.0)));
+
+ boolean pass = false;
+ try {
+ line4.intersects(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/intersectsLine.java b/gnu/testlet/java/awt/geom/Line2D/intersectsLine.java
new file mode 100644
index 00000000..5ccdd082
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/intersectsLine.java
@@ -0,0 +1,59 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+
+/**
+* Checks whether Line2D.intersectsLine() works correctly.
+*/
+public class intersectsLine
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(line1.intersectsLine(0.0, 0.0, 1.0, 0.0));
+ harness.check(line1.intersectsLine(0.0, 0.0, 1.0, 1.0));
+ harness.check(line1.intersectsLine(1.0, 1.0, 1.0, 0.0));
+ harness.check(line1.intersectsLine(0.5, 0.5, 0.5, -0.5));
+ harness.check(!line1.intersectsLine(0.0, 1.0, 1.0, 1.0));
+
+ harness.check(line1.intersectsLine(new Line2D.Double(0.0, 0.0, 1.0, 0.0)));
+ harness.check(line1.intersectsLine(new Line2D.Double(0.0, 0.0, 1.0, 1.0)));
+ harness.check(line1.intersectsLine(new Line2D.Double(1.0, 1.0, 1.0, 0.0)));
+ harness.check(line1.intersectsLine(new Line2D.Double(0.5, 0.5, 0.5, -0.5)));
+ harness.check(!line1.intersectsLine(new Line2D.Double(0.0, 1.0, 1.0, 1.0)));
+
+ boolean pass = false;
+ try {
+ line1.intersectsLine(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/linesIntersect.java b/gnu/testlet/java/awt/geom/Line2D/linesIntersect.java
new file mode 100644
index 00000000..59eec59e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/linesIntersect.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 Sven de Marothy <sven@physto.se>
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.Line2D;
+
+/**
+ * Checks whether Line2D.linesIntersect works correctly
+ *
+ * @author Sven de Marothy
+ */
+public class linesIntersect
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Test 1 - a simple intersection
+ harness.check(Line2D.linesIntersect(0.0, 0.0, 100.0, 50.0,
+ 0.0, 50.0, 100.0, 0.0));
+
+ // Test 2 - an orthogonal intersection
+ harness.check(Line2D.linesIntersect(0.0, 0.0, 100.0, 100.0,
+ 0.0, 100.0, 100.0, 0.0));
+
+ // Test 3 - an orthogonal intersection on the axes
+ harness.check(Line2D.linesIntersect(0.0, 10.0, 100.0, 10.0,
+ 50.0, 0.0, 50.0, 50.0));
+
+ // Test 4 - colinear overlapping lines
+ harness.check(Line2D.linesIntersect(10.0, 10.0, 10.0, 90.0,
+ 10.0, 0.0, 10.0, 100.0));
+
+ // Test 5 - colinear nonoverlapping lines
+ harness.check(!Line2D.linesIntersect(10.0, 10.0, 10.0, 90.0,
+ 10.0, 91.0, 10.0, 100.0));
+
+ // Test 6 - zero length lines at same point
+ harness.check(Line2D.linesIntersect(1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 1.0, 1.0));
+
+ // Test 7 - segments share end point
+ harness.check(Line2D.linesIntersect(0.0, 0.0, 0.0, 1.0,
+ 0.0, 0.0, 1.0, 0.0));
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/ptLineDist.java b/gnu/testlet/java/awt/geom/Line2D/ptLineDist.java
new file mode 100644
index 00000000..b32971fd
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/ptLineDist.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+* Checks whether Line2D.ptLineDist() works correctly.
+*/
+public class ptLineDist
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(0.0, line1.ptLineDist(-50.0, 0.0));
+ harness.check(0.0, line1.ptLineDist(0.0, 0.0));
+ harness.check(0.0, line1.ptLineDist(1.0, 0.0));
+ harness.check(0.0, line1.ptLineDist(50.0, 0.0));
+ harness.check(1.0, line1.ptLineDist(-50.0, 1.0));
+ harness.check(1.0, line1.ptLineDist(0.0, 1.0));
+ harness.check(1.0, line1.ptLineDist(1.0, 1.0));
+ harness.check(1.0, line1.ptLineDist(50.0, 1.0));
+ harness.check(1.0, line1.ptLineDist(-50.0, -1.0));
+ harness.check(1.0, line1.ptLineDist(0.0, -1.0));
+ harness.check(1.0, line1.ptLineDist(1.0, -1.0));
+ harness.check(1.0, line1.ptLineDist(50.0, -1.0));
+
+ harness.check(0.0, line1.ptLineDist(new Point2D.Double(-50.0, 0.0)));
+ harness.check(0.0, line1.ptLineDist(new Point2D.Double(0.0, 0.0)));
+ harness.check(0.0, line1.ptLineDist(new Point2D.Double(1.0, 0.0)));
+ harness.check(0.0, line1.ptLineDist(new Point2D.Double(50.0, 0.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(-50.0, 1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(0.0, 1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(1.0, 1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(50.0, 1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(-50.0, -1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(0.0, -1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(1.0, -1.0)));
+ harness.check(1.0, line1.ptLineDist(new Point2D.Double(50.0, -1.0)));
+
+ boolean pass = false;
+ try {
+ line1.ptLineDist(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/ptLineDistSq.java b/gnu/testlet/java/awt/geom/Line2D/ptLineDistSq.java
new file mode 100644
index 00000000..14f9b23d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/ptLineDistSq.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Checks whether Line2D.ptLineDistSq() works correctly.
+ */
+public class ptLineDistSq
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(0.0, line1.ptLineDistSq(-50.0, 0.0));
+ harness.check(0.0, line1.ptLineDistSq(0.0, 0.0));
+ harness.check(0.0, line1.ptLineDistSq(1.0, 0.0));
+ harness.check(0.0, line1.ptLineDistSq(50.0, 0.0));
+ harness.check(1.0, line1.ptLineDistSq(-50.0, 1.0));
+ harness.check(1.0, line1.ptLineDistSq(0.0, 1.0));
+ harness.check(1.0, line1.ptLineDistSq(1.0, 1.0));
+ harness.check(1.0, line1.ptLineDistSq(50.0, 1.0));
+ harness.check(1.0, line1.ptLineDistSq(-50.0, -1.0));
+ harness.check(1.0, line1.ptLineDistSq(0.0, -1.0));
+ harness.check(1.0, line1.ptLineDistSq(1.0, -1.0));
+ harness.check(1.0, line1.ptLineDistSq(50.0, -1.0));
+
+ harness.check(0.0, line1.ptLineDistSq(new Point2D.Double(-50.0, 0.0)));
+ harness.check(0.0, line1.ptLineDistSq(new Point2D.Double(0.0, 0.0)));
+ harness.check(0.0, line1.ptLineDistSq(new Point2D.Double(1.0, 0.0)));
+ harness.check(0.0, line1.ptLineDistSq(new Point2D.Double(50.0, 0.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(-50.0, 1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(0.0, 1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(1.0, 1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(50.0, 1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(-50.0, -1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(0.0, -1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(1.0, -1.0)));
+ harness.check(1.0, line1.ptLineDistSq(new Point2D.Double(50.0, -1.0)));
+
+ boolean pass = false;
+ try {
+ line1.ptLineDistSq(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/ptSegDist.java b/gnu/testlet/java/awt/geom/Line2D/ptSegDist.java
new file mode 100644
index 00000000..1bc0c4be
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/ptSegDist.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Checks whether Line2D.ptSegDist() works correctly.
+ */
+public class ptSegDist
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(50.0, line1.ptSegDist(-50.0, 0.0));
+ harness.check(0.0, line1.ptSegDist(0.0, 0.0));
+ harness.check(0.0, line1.ptSegDist(1.0, 0.0));
+ harness.check(49.0, line1.ptSegDist(50.0, 0.0));
+ harness.check(Math.sqrt(2501.0), line1.ptSegDist(-50.0, 1.0));
+ harness.check(1.0, line1.ptSegDist(0.0, 1.0));
+ harness.check(1.0, line1.ptSegDist(1.0, 1.0));
+ harness.check(Math.sqrt(49.0*49.0+1.0), line1.ptSegDist(50.0, 1.0));
+ harness.check(Math.sqrt(2501.0), line1.ptSegDist(-50.0, -1.0));
+ harness.check(1.0, line1.ptSegDist(0.0, -1.0));
+ harness.check(1.0, line1.ptSegDist(1.0, -1.0));
+ harness.check(Math.sqrt(49.0*49.0+1.0), line1.ptSegDist(50.0, -1.0));
+
+ harness.check(50.0, line1.ptSegDist(new Point2D.Double(-50.0, 0.0)));
+ harness.check(0.0, line1.ptSegDist(new Point2D.Double(0.0, 0.0)));
+ harness.check(0.0, line1.ptSegDist(new Point2D.Double(1.0, 0.0)));
+ harness.check(49.0, line1.ptSegDist(new Point2D.Double(50.0, 0.0)));
+ harness.check(Math.sqrt(2501.0), line1.ptSegDist(new Point2D.Double(-50.0, 1.0)));
+ harness.check(1.0, line1.ptSegDist(new Point2D.Double(0.0, 1.0)));
+ harness.check(1.0, line1.ptSegDist(new Point2D.Double(1.0, 1.0)));
+ harness.check(Math.sqrt(49.0*49.0+1.0), line1.ptSegDist(new Point2D.Double(50.0, 1.0)));
+ harness.check(Math.sqrt(2501.0), line1.ptSegDist(new Point2D.Double(-50.0, -1.0)));
+ harness.check(1.0, line1.ptSegDist(new Point2D.Double(0.0, -1.0)));
+ harness.check(1.0, line1.ptSegDist(new Point2D.Double(1.0, -1.0)));
+ harness.check(Math.sqrt(49.0*49.0+1.0), line1.ptSegDist(new Point2D.Double(50.0, -1.0)));
+
+ boolean pass = false;
+ try {
+ line1.ptSegDist(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/ptSegDistSq.java b/gnu/testlet/java/awt/geom/Line2D/ptSegDistSq.java
new file mode 100644
index 00000000..b931231d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/ptSegDistSq.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+* Checks whether Line2D.ptSegDistSq() works correctly.
+*/
+public class ptSegDistSq
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double(0.0, 0.0, 1.0, 0.0);
+ harness.check(2500.0, line1.ptSegDistSq(-50.0, 0.0));
+ harness.check(0.0, line1.ptSegDistSq(0.0, 0.0));
+ harness.check(0.0, line1.ptSegDistSq(1.0, 0.0));
+ harness.check(49.0*49.0, line1.ptSegDistSq(50.0, 0.0));
+ harness.check(2501.0, line1.ptSegDistSq(-50.0, 1.0));
+ harness.check(1.0, line1.ptSegDistSq(0.0, 1.0));
+ harness.check(1.0, line1.ptSegDistSq(1.0, 1.0));
+ harness.check(49.0*49.0+1.0, line1.ptSegDistSq(50.0, 1.0));
+ harness.check(2501.0, line1.ptSegDistSq(-50.0, -1.0));
+ harness.check(1.0, line1.ptSegDistSq(0.0, -1.0));
+ harness.check(1.0, line1.ptSegDistSq(1.0, -1.0));
+ harness.check(49.0*49.0+1.0, line1.ptSegDistSq(50.0, -1.0));
+
+ harness.check(2500.0, line1.ptSegDistSq(new Point2D.Double(-50.0, 0.0)));
+ harness.check(0.0, line1.ptSegDistSq(new Point2D.Double(0.0, 0.0)));
+ harness.check(0.0, line1.ptSegDistSq(new Point2D.Double(1.0, 0.0)));
+ harness.check(49.0*49.0, line1.ptSegDistSq(new Point2D.Double(50.0, 0.0)));
+ harness.check(2501.0, line1.ptSegDistSq(new Point2D.Double(-50.0, 1.0)));
+ harness.check(1.0, line1.ptSegDistSq(new Point2D.Double(0.0, 1.0)));
+ harness.check(1.0, line1.ptSegDistSq(new Point2D.Double(1.0, 1.0)));
+ harness.check(49.0*49.0+1.0, line1.ptSegDistSq(new Point2D.Double(50.0, 1.0)));
+ harness.check(2501.0, line1.ptSegDistSq(new Point2D.Double(-50.0, -1.0)));
+ harness.check(1.0, line1.ptSegDistSq(new Point2D.Double(0.0, -1.0)));
+ harness.check(1.0, line1.ptSegDistSq(new Point2D.Double(1.0, -1.0)));
+ harness.check(49.0*49.0+1.0, line1.ptSegDistSq(new Point2D.Double(50.0, -1.0)));
+
+ boolean pass = false;
+ try {
+ line1.ptSegDistSq(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/relativeCCW.java b/gnu/testlet/java/awt/geom/Line2D/relativeCCW.java
new file mode 100644
index 00000000..83cf80b9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/relativeCCW.java
@@ -0,0 +1,79 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Some checks for the Line2D.relativeCCW() methods.
+ */
+public class relativeCCW
+ implements Testlet
+{
+ /**
+ * Run the test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, 1.0, 1.0) == 0);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, 3.0, 2.0) == 0);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, 0.0, 0.0) == 1);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, -1.0, 0.0) == -1);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, 5.0, 3.0) == 1);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, 5.0, 4.0) == -1);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 3.0, 2.0, -1.0, -1.0) == 1);
+
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) == 0);
+ harness.check(Line2D.relativeCCW(1.0, 1.0, 1.0, 1.0, 2.0, 2.0) == 0);
+
+ Line2D line1 = new Line2D.Double(1.0, 1.0, 3.0, 2.0);
+ harness.check(line1.relativeCCW(1.0, 1.0) == 0);
+ harness.check(line1.relativeCCW(3.0, 2.0) == 0);
+ harness.check(line1.relativeCCW(0.0, 0.0) == 1);
+ harness.check(line1.relativeCCW(-1.0, 0.0) == -1);
+ harness.check(line1.relativeCCW(5.0, 3.0) == 1);
+ harness.check(line1.relativeCCW(5.0, 4.0) == -1);
+ harness.check(line1.relativeCCW(-1.0, -1.0) == 1);
+
+ harness.check(line1.relativeCCW(new Point2D.Double(1.0, 1.0)) == 0);
+ harness.check(line1.relativeCCW(new Point2D.Double(3.0, 2.0)) == 0);
+ harness.check(line1.relativeCCW(new Point2D.Double(0.0, 0.0)) == 1);
+ harness.check(line1.relativeCCW(new Point2D.Double(-1.0, 0.0)) == -1);
+ harness.check(line1.relativeCCW(new Point2D.Double(5.0, 3.0)) == 1);
+ harness.check(line1.relativeCCW(new Point2D.Double(5.0, 4.0)) == -1);
+ harness.check(line1.relativeCCW(new Point2D.Double(-1.0, -1.0)) == 1);
+
+ boolean pass = false;
+ try {
+ line1.relativeCCW(null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Line2D/setLine.java b/gnu/testlet/java/awt/geom/Line2D/setLine.java
new file mode 100644
index 00000000..e7d9cc9f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Line2D/setLine.java
@@ -0,0 +1,105 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Line2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Line2D;
+import java.awt.geom.Point2D;
+
+/**
+ * Checks whether Line2D.setLine() works correctly.
+ */
+public class setLine
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Line2D line1 = new Line2D.Double();
+ line1.setLine(1.0, 2.0, 3.0, 4.0);
+ harness.check(line1.getX1() == 1.0);
+ harness.check(line1.getY1() == 2.0);
+ harness.check(line1.getX2() == 3.0);
+ harness.check(line1.getY2() == 4.0);
+
+ line1.setLine(new Point2D.Double(1.1, 2.2), new Point2D.Double(3.3, 4.4));
+ harness.check(line1.getX1() == 1.1);
+ harness.check(line1.getY1() == 2.2);
+ harness.check(line1.getX2() == 3.3);
+ harness.check(line1.getY2() == 4.4);
+
+ line1.setLine(new Line2D.Double(1.11, 2.22, 3.33, 4.44));
+ harness.check(line1.getX1() == 1.11);
+ harness.check(line1.getY1() == 2.22);
+ harness.check(line1.getX2() == 3.33);
+ harness.check(line1.getY2() == 4.44);
+
+ Line2D line2 = new Line2D.Float();
+ line2.setLine(1.1, 2.2, 3.3, 4.4);
+ harness.check(line2.getX1() == 1.1f);
+ harness.check(line2.getY1() == 2.2f);
+ harness.check(line2.getX2() == 3.3f);
+ harness.check(line2.getY2() == 4.4f);
+
+ line2.setLine(new Point2D.Float(1.1f, 2.2f), new Point2D.Float(3.3f, 4.4f));
+ harness.check(line2.getX1() == 1.1f);
+ harness.check(line2.getY1() == 2.2f);
+ harness.check(line2.getX2() == 3.3f);
+ harness.check(line2.getY2() == 4.4f);
+
+ line2.setLine(new Line2D.Float(1.11f, 2.22f, 3.33f, 4.44f));
+ harness.check(line2.getX1() == 1.11f);
+ harness.check(line2.getY1() == 2.22f);
+ harness.check(line2.getX2() == 3.33f);
+ harness.check(line2.getY2() == 4.44f);
+
+ // check that null arguments throw the correct exception
+ boolean pass = false;
+ try {
+ line1.setLine(null, new Point2D.Double());
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try {
+ line1.setLine(new Point2D.Double(), null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try {
+ line1.setLine((Line2D) null);
+ }
+ catch (NullPointerException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries
new file mode 100644
index 00000000..4d7dfdf0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries
@@ -0,0 +1,8 @@
+/clone.java/1.1/Fri Oct 24 11:54:55 2003//
+/getFlatness.java/1.2/Thu Jun 3 14:31:04 2004//
+/getFlatnessSq.java/1.2/Thu Jun 3 14:31:05 2004//
+/getPathIterator.java/1.1/Fri Oct 24 11:54:55 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:55 2003//
+/solveQuadratic.java/1.4/Wed Jan 7 14:31:40 2004//
+/subdivide.java/1.1/Fri Oct 24 11:54:55 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries.Log
new file mode 100644
index 00000000..1b9aa391
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Double////
+A D/Float////
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Repository b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Repository
new file mode 100644
index 00000000..afc89269
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/QuadCurve2D
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Root b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Entries b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Entries
new file mode 100644
index 00000000..c88dfc1c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Entries
@@ -0,0 +1,7 @@
+/Double.java/1.1/Fri Oct 24 11:54:56 2003//
+/getBounds2D.java/1.1/Fri Oct 24 11:54:56 2003//
+/getCtrlPt.java/1.1/Fri Oct 24 11:54:56 2003//
+/getP1.java/1.1/Fri Oct 24 11:54:56 2003//
+/getP2.java/1.1/Fri Oct 24 11:54:56 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:56 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Repository b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Repository
new file mode 100644
index 00000000..e167deb7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/QuadCurve2D/Double
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Root b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/Double.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/Double.java
new file mode 100644
index 00000000..cb566d04
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/Double.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double constructors works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class Double
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness harness)
+ {
+ this.h = harness;
+ testZeroArgs();
+ testSixArgs();
+ }
+
+
+ /**
+ * Checks whether the zero-argument constructor works as specified.
+ */
+ public void testZeroArgs()
+ {
+ QuadCurve2D curve;
+
+ h.checkPoint("noArgs");
+ curve = new QuadCurve2D.Double();
+ h.check(curve.getX1(), 0); // 1
+ h.check(curve.getY1(), 0); // 2
+ h.check(curve.getCtrlX(), 0); // 3
+ h.check(curve.getCtrlY(), 0); // 4
+ h.check(curve.getX2(), 0); // 5
+ h.check(curve.getY2(), 0); // 6
+ }
+
+
+ /**
+ * Checks whether the six-argument constructor works as specified.
+ */
+ public void testSixArgs()
+ {
+ QuadCurve2D.Double curve;
+
+ h.checkPoint("sixArgs");
+ curve = new QuadCurve2D.Double(1e1, 2e2, 3e3, 4e4, 5e5, 6e6);
+ h.check(curve.getX1(), 1e1); // 1
+ h.check(curve.getY1(), 2e2); // 2
+ h.check(curve.getCtrlX(), 3e3); // 3
+ h.check(curve.getCtrlY(), 4e4); // 4
+ h.check(curve.getX2(), 5e5); // 5
+ h.check(curve.getY2(), 6e6); // 6
+
+ h.check(curve.x1, 1e1); // 7
+ h.check(curve.y1, 2e2); // 8
+ h.check(curve.ctrlx, 3e3); // 9
+ h.check(curve.ctrly, 4e4); // 10
+ h.check(curve.x2, 5e5); // 11
+ h.check(curve.y2, 6e6); // 12
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getBounds2D.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getBounds2D.java
new file mode 100644
index 00000000..c1439a7a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getBounds2D.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+import java.awt.geom.Rectangle2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double.getBounds2D method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getBounds2D
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Double curve;
+ Rectangle2D bounds;
+
+ curve = new QuadCurve2D.Double(1, -2, -3, 4, 5, 7);
+ bounds = curve.getBounds2D();
+ harness.check(bounds instanceof Rectangle2D.Double); // 1
+ harness.check(bounds.getX(), -3); // 2
+ harness.check(bounds.getY(), -2); // 3
+ harness.check(bounds.getWidth(), 8); // 4
+ harness.check(bounds.getHeight(), 9); // 5
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getCtrlPt.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getCtrlPt.java
new file mode 100644
index 00000000..5d15dee6
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getCtrlPt.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double.getCtrlPt() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlPt
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Double curve;
+
+ curve = new QuadCurve2D.Double(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getCtrlPt().getX(), -3); // Check 1
+ harness.check(curve.getCtrlPt().getY(), -4); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP1.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP1.java
new file mode 100644
index 00000000..b348ddae
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double.getP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Double curve;
+
+ curve = new QuadCurve2D.Double(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getP1().getX(), -1); // Check 1
+ harness.check(curve.getP1().getY(), -2); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP2.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP2.java
new file mode 100644
index 00000000..b8a7a290
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/getP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double.getP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Double curve;
+
+ curve = new QuadCurve2D.Double(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getP2().getX(), -5); // Check 1
+ harness.check(curve.getP2().getY(), -6); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Double/setCurve.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/setCurve.java
new file mode 100644
index 00000000..c4d291dc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Double/setCurve.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Double;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Double.setCurve method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Double curve;
+
+ curve = new QuadCurve2D.Double(-1, -2, -3, -4, -5, -6);
+ curve.setCurve(1.1, 2.2, 3.3, 4.4, 5.5, 6.6);
+ harness.check(curve.x1, 1.1); // Check 1
+ harness.check(curve.y1, 2.2); // Check 2
+ harness.check(curve.ctrlx, 3.3); // Check 3
+ harness.check(curve.ctrly, 4.4); // Check 4
+ harness.check(curve.x2, 5.5); // Check 5
+ harness.check(curve.y2, 6.6); // Check 6
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Entries b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Entries
new file mode 100644
index 00000000..94a32033
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Entries
@@ -0,0 +1,7 @@
+/Float.java/1.1/Fri Oct 24 11:54:56 2003//
+/getBounds2D.java/1.1/Fri Oct 24 11:54:56 2003//
+/getCtrlPt.java/1.1/Fri Oct 24 11:54:56 2003//
+/getP1.java/1.1/Fri Oct 24 11:54:56 2003//
+/getP2.java/1.1/Fri Oct 24 11:54:56 2003//
+/setCurve.java/1.1/Fri Oct 24 11:54:56 2003//
+D
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Repository b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Repository
new file mode 100644
index 00000000..2ca227a9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/QuadCurve2D/Float
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Root b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/Float.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/Float.java
new file mode 100644
index 00000000..ad13e845
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/Float.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float constructors works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class Float
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness harness)
+ {
+ this.h = harness;
+ testZeroArgs();
+ testSixArgs();
+ }
+
+
+ /**
+ * Checks whether the zero-argument constructor works as specified.
+ */
+ public void testZeroArgs()
+ {
+ QuadCurve2D curve;
+
+ h.checkPoint("noArgs");
+ curve = new QuadCurve2D.Float();
+ h.check(curve.getX1(), 0); // 1
+ h.check(curve.getY1(), 0); // 2
+ h.check(curve.getCtrlX(), 0); // 3
+ h.check(curve.getCtrlY(), 0); // 4
+ h.check(curve.getX2(), 0); // 5
+ h.check(curve.getY2(), 0); // 6
+ }
+
+
+ /**
+ * Checks whether the six-argument constructor works as specified.
+ */
+ public void testSixArgs()
+ {
+ QuadCurve2D.Float curve;
+
+ h.checkPoint("sixArgs");
+ curve = new QuadCurve2D.Float(1e1f, 2e2f, 3e3f, 4e4f, 5e5f, 6e6f);
+ h.check(curve.getX1(), 1e1f); // 1
+ h.check(curve.getY1(), 2e2f); // 2
+ h.check(curve.getCtrlX(), 3e3f); // 3
+ h.check(curve.getCtrlY(), 4e4f); // 4
+ h.check(curve.getX2(), 5e5f); // 5
+ h.check(curve.getY2(), 6e6f); // 6
+
+ h.check(curve.x1, 1e1f); // 7
+ h.check(curve.y1, 2e2f); // 8
+ h.check(curve.ctrlx, 3e3f); // 9
+ h.check(curve.ctrly, 4e4f); // 10
+ h.check(curve.x2, 5e5f); // 11
+ h.check(curve.y2, 6e6f); // 12
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getBounds2D.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getBounds2D.java
new file mode 100644
index 00000000..c632f52a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getBounds2D.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+import java.awt.geom.Rectangle2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float.getBounds2D method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getBounds2D
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Float curve;
+ Rectangle2D bounds;
+
+ curve = new QuadCurve2D.Float(1, -2, -3, 4, 5, 7);
+ bounds = curve.getBounds2D();
+ harness.check(bounds instanceof Rectangle2D.Float); // 1
+ harness.check(bounds.getX(), -3); // 2
+ harness.check(bounds.getY(), -2); // 3
+ harness.check(bounds.getWidth(), 8); // 4
+ harness.check(bounds.getHeight(), 9); // 5
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getCtrlPt.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getCtrlPt.java
new file mode 100644
index 00000000..38e48599
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getCtrlPt.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float.getCtrlPt() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getCtrlPt
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Float curve;
+
+ curve = new QuadCurve2D.Float(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getCtrlPt().getX(), -3); // Check 1
+ harness.check(curve.getCtrlPt().getY(), -4); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP1.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP1.java
new file mode 100644
index 00000000..514532ca
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP1.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float.getP1() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP1
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Float curve;
+
+ curve = new QuadCurve2D.Float(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getP1().getX(), -1); // Check 1
+ harness.check(curve.getP1().getY(), -2); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP2.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP2.java
new file mode 100644
index 00000000..23e17293
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/getP2.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float.getP2() method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getP2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Float curve;
+
+ curve = new QuadCurve2D.Float(-1, -2, -3, -4, -5, -6);
+ harness.check(curve.getP2().getX(), -5); // Check 1
+ harness.check(curve.getP2().getY(), -6); // Check 2
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/Float/setCurve.java b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/setCurve.java
new file mode 100644
index 00000000..d1ea8746
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/Float/setCurve.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D.Float;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.Float.setCurve method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D.Float curve;
+
+ curve = new QuadCurve2D.Float(-1, -2, -3, -4, -5, -6);
+ curve.setCurve(1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f);
+ harness.check(curve.x1, 1.1f); // Check 1
+ harness.check(curve.y1, 2.2f); // Check 2
+ harness.check(curve.ctrlx, 3.3f); // Check 3
+ harness.check(curve.ctrly, 4.4f); // Check 4
+ harness.check(curve.x2, 5.5f); // Check 5
+ harness.check(curve.y2, 6.6f); // Check 6
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/clone.java b/gnu/testlet/java/awt/geom/QuadCurve2D/clone.java
new file mode 100644
index 00000000..41c20447
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/clone.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.clone method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class clone
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ QuadCurve2D curve;
+
+ // Checks 1 to 7: Clone a QuadCurve2D.Double
+ curve = (QuadCurve2D) (new QuadCurve2D.Double(4,3,9,1,7,8)).clone();
+ harness.check(curve instanceof QuadCurve2D.Double); // 1
+ harness.check(curve.getX1(), 4.0); // 2
+ harness.check(curve.getY1(), 3.0); // 3
+ harness.check(curve.getCtrlX(), 9.0); // 4
+ harness.check(curve.getCtrlY(), 1.0); // 5
+ harness.check(curve.getX2(), 7.0); // 6
+ harness.check(curve.getY2(), 8.0); // 7
+
+ // Checks 8 to 14: Clone a QuadCurve2D.Float
+ curve = (QuadCurve2D) (new QuadCurve2D.Float(-4,3,-9,1,7,-8)).clone();
+ harness.check(curve instanceof QuadCurve2D.Float); // 1
+ harness.check(curve.getX1(), -4.0); // 2
+ harness.check(curve.getY1(), 3.0); // 3
+ harness.check(curve.getCtrlX(), -9.0); // 4
+ harness.check(curve.getCtrlY(), 1.0); // 5
+ harness.check(curve.getX2(), 7.0); // 6
+ harness.check(curve.getY2(), -8.0); // 7
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java b/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java
new file mode 100644
index 00000000..b9119fe5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatness.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the various QuadCurve2D.getFlatness methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getFlatness
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // Check 1: six doubles, collinear
+ chkeps(QuadCurve2D.getFlatness(1, 2, 3, 4, 5, 6), 0);
+
+ // Check 2: six doubles, collinear
+ chkeps(QuadCurve2D.getFlatness(1, 2, 5, 6, 3, 4),
+ 2.8284271247461903);
+
+ // Check 3: six doubles, not collinear
+ chkeps(QuadCurve2D.getFlatness(10, -20, 3, 4, 5, 6),
+ 2.3417076812615436);
+
+ // Check 4: double[], not collinear
+ double[] d = new double[] {2, 100, -200, 30, 44, 5, 600};
+ chkeps(QuadCurve2D.getFlatness(d, 1), 40.73876543263159);
+
+ // Check 5: Method on QuadCurve2D, collinear
+ chkeps((new QuadCurve2D.Double()).getFlatness(), 0);
+
+ // Check 6: Method on QuadCurve2D, not collinear
+ chkeps((new QuadCurve2D.Double(9,8,1,2,-4,0)).getFlatness(),
+ 0.9171704949125857);
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-6)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java b/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java
new file mode 100644
index 00000000..e7397e6f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/getFlatnessSq.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the various QuadCurve2D.getFlatnessSq methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getFlatnessSq
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // Checks 1 and 2: six doubles
+ chkeps(QuadCurve2D.getFlatnessSq(1, 2, 3, 4, 5, 6), 0); // 1
+ chkeps(QuadCurve2D.getFlatnessSq(10, -20, 3, 4, 5, 6), // 2
+ 5.483594864479315);
+
+ // Check 3: double[]
+ double[] d = new double[] {2, 100, -200, 30, 44, 5, 600};
+ chkeps(QuadCurve2D.getFlatnessSq(d, 1), 1659.6470089749782); // 3
+
+ // Checks 4 and 5: Method on QuadCurve2D
+ chkeps((new QuadCurve2D.Double()).getFlatnessSq(), 0); // 4
+ chkeps((new QuadCurve2D.Double(9,8,1,2,-4,0)).getFlatnessSq(), // 5
+ 0.8412017167381975);
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-5)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/getPathIterator.java b/gnu/testlet/java/awt/geom/QuadCurve2D/getPathIterator.java
new file mode 100644
index 00000000..3e4a3461
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/getPathIterator.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.getPathIterator method works
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPathIterator
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_untransformed(harness);
+ test_transformed(harness);
+ }
+
+
+ public void test_untransformed(TestHarness harness)
+ {
+ QuadCurve2D curve;
+ PathIterator pit;
+ double[] c = new double[6];
+
+ harness.checkPoint("untransformed");
+ curve = new QuadCurve2D.Double(1, 2, 3, 4, 5, 6);
+ pit = curve.getPathIterator(null);
+
+ harness.check(!pit.isDone()); // 1
+ harness.check(pit.currentSegment(c), PathIterator.SEG_MOVETO); // 2
+ harness.check(c[0], 1.0); // 3
+ harness.check(c[1], 2.0); // 4
+
+ pit.next();
+ harness.check(!pit.isDone()); // 5
+ harness.check(pit.currentSegment(c), PathIterator.SEG_QUADTO); // 6
+ harness.check(c[0], 3.0); // 7
+ harness.check(c[1], 4.0); // 8
+ harness.check(c[2], 5.0); // 9
+ harness.check(c[3], 6.0); // 10
+
+ pit.next();
+ harness.check(pit.isDone()); // 11
+ harness.check(pit.getWindingRule(), PathIterator.WIND_NON_ZERO);// 12
+ }
+
+
+ public void test_transformed(TestHarness harness)
+ {
+ QuadCurve2D curve;
+ PathIterator pit;
+ AffineTransform tx;
+ double[] c = new double[6];
+
+ harness.checkPoint("transformed");
+ tx = new AffineTransform();
+ tx.scale(2, 3);
+ tx.translate(1, -1);
+ curve = new QuadCurve2D.Double(1, 2, 3, 4, 5, 6);
+ pit = curve.getPathIterator(tx);
+
+ harness.check(!pit.isDone()); // 1
+ harness.check(pit.currentSegment(c), PathIterator.SEG_MOVETO); // 2
+ harness.check(c[0], 4.0); // 3
+ harness.check(c[1], 3.0); // 4
+
+ pit.next();
+ harness.check(!pit.isDone()); // 5
+ harness.check(pit.currentSegment(c), PathIterator.SEG_QUADTO); // 6
+ harness.check(c[0], 8.0); // 7
+ harness.check(c[1], 9.0); // 8
+ harness.check(c[2], 12.0); // 9
+ harness.check(c[3], 15.0); // 10
+
+ pit.next();
+ harness.check(pit.isDone()); // 11
+
+ harness.check(pit.getWindingRule(), PathIterator.WIND_NON_ZERO);// 12
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/setCurve.java b/gnu/testlet/java/awt/geom/QuadCurve2D/setCurve.java
new file mode 100644
index 00000000..ce1913db
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/setCurve.java
@@ -0,0 +1,137 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Point;
+import java.awt.geom.Point2D;
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the various QuadCurve2D.setCurve methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setCurve
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_array(harness);
+ test_threePoints(harness);
+ test_PointArray(harness);
+ test_QuadCurve2D(harness);
+ }
+
+
+ private void test_array(TestHarness harness)
+ {
+ QuadCurve2D curve;
+
+ harness.checkPoint("array");
+
+ curve = new QuadCurve2D.Double();
+ curve.setCurve(new double[] { 1, 2, 3, 11, 12, 13, 14, 15, 16, 17 },
+ /* offset */ 3);
+ harness.check(curve.getX1(), 11); // Check 1
+ harness.check(curve.getY1(), 12); // Check 2
+ harness.check(curve.getCtrlX(), 13); // Check 3
+ harness.check(curve.getCtrlY(), 14); // Check 4
+ harness.check(curve.getX2(), 15); // Check 5
+ harness.check(curve.getY2(), 16); // Check 6
+ }
+
+
+ private void test_threePoints(TestHarness harness)
+ {
+ QuadCurve2D curve;
+
+ harness.checkPoint("threePoints");
+
+ curve = new QuadCurve2D.Double();
+ curve.setCurve(new Point2D.Float(1,2),
+ new Point2D.Double(3,4),
+ new Point(5, 6));
+
+ harness.check(curve.getX1(), 1); // Check 1
+ harness.check(curve.getY1(), 2); // Check 2
+ harness.check(curve.getCtrlX(), 3); // Check 3
+ harness.check(curve.getCtrlY(), 4); // Check 4
+ harness.check(curve.getX2(), 5); // Check 5
+ harness.check(curve.getY2(), 6); // Check 6
+ }
+
+
+ private void test_PointArray(TestHarness harness)
+ {
+ QuadCurve2D curve;
+ Point2D[] pts = new Point2D[20];
+
+ harness.checkPoint("PointArray");
+
+ curve = new QuadCurve2D.Double();
+ pts[11] = new Point2D.Float(1,2);
+ pts[12] = new Point2D.Double(3,4);
+ pts[13] = new Point(5, 6);
+ curve.setCurve(pts, 11);
+
+ harness.check(curve.getX1(), 1); // Check 1
+ harness.check(curve.getY1(), 2); // Check 2
+ harness.check(curve.getCtrlX(), 3); // Check 3
+ harness.check(curve.getCtrlY(), 4); // Check 4
+ harness.check(curve.getX2(), 5); // Check 5
+ harness.check(curve.getY2(), 6); // Check 6
+ }
+
+
+ private void test_QuadCurve2D(TestHarness harness)
+ {
+ QuadCurve2D curve;
+ Point2D[] pts = new Point2D[20];
+
+ harness.checkPoint("QuadCurve2D");
+
+ curve = new QuadCurve2D.Float();
+ curve.setCurve(new QuadCurve2D.Double(9, 8, 7, 6, 5, 4));
+
+ harness.check(curve.getX1(), 9); // Check 1
+ harness.check(curve.getY1(), 8); // Check 2
+ harness.check(curve.getCtrlX(), 7); // Check 3
+ harness.check(curve.getCtrlY(), 6); // Check 4
+ harness.check(curve.getX2(), 5); // Check 5
+ harness.check(curve.getY2(), 4); // Check 6
+
+ curve = new QuadCurve2D.Double();
+ curve.setCurve(new QuadCurve2D.Float(90, 80, 70, 60, 50, 40));
+
+ harness.check(curve.getX1(), 90); // Check 7
+ harness.check(curve.getY1(), 80); // Check 8
+ harness.check(curve.getCtrlX(), 70); // Check 9
+ harness.check(curve.getCtrlY(), 60); // Check 10
+ harness.check(curve.getX2(), 50); // Check 11
+ harness.check(curve.getY2(), 40); // Check 12
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java b/gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java
new file mode 100644
index 00000000..4ffc42d8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/solveQuadratic.java
@@ -0,0 +1,204 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.QuadCurve2D;
+
+
+/**
+ * Checks whether the QuadCurve2D.solveQuadratic methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class solveQuadratic
+ implements Testlet
+{
+ private static final double EPSILON = 1e-6;
+
+
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // x - 23.2 = 0 --> x = 23.2
+ checkSolutions(0, 1, -23.2, new double[]{23.2});
+
+ // 8x + 8 = 0 --> x = -1
+ checkSolutions(0, 8, 8, new double[]{-1});
+
+ // 4x^2 = 0 --> x = 0
+ // Classpath bug #6095
+ checkSolutions(4, 0, 0, new double[]{0});
+
+ // (x^2)/2 - 2 = 0 --> x = {-2, 2}
+ checkSolutions(0.5, 0, -2, new double[]{-2, 2});
+
+ // -x^2 + 4x = 0 --> x = {0, 4}
+ checkSolutions(-1, 4, 0, new double[]{0, 4});
+
+ // (x^2)/10 + 20x + 1000 = 0
+ //
+ // Sun J2SE 1.4.1_01 (GNU/Linux i386) reports the result -100
+ // twice, which is not correct.
+ //
+ // The GNU Classpath implementation of 2004-01-07 seems to have a
+ // numeric stability problem that manifests with some VMs (such as
+ // gcj on IA-32), but not with others (such as jamvm, or Sun J2SE
+ // 1.4.1_01 executing the Classpath implementation).
+ // See Classpath bug #7123.
+ checkSolutions(.1, 20, 1000, new double[]{-100});
+
+ // Test case for b^2 >> 4ac
+ checkSolutions(.1, 2000, .2,
+ new double[] { -19999.999899999995,
+ -1.0000000050000002E-4 });
+
+ // 10x^2 + 3x + 5 = 0 --> no solution
+ checkSolutions(10, 3, 5, new double[0]);
+
+ // 2x^2 + 2x + 2 --> no solution
+ checkSolutions(2, 1, 2, new double[0]);
+
+ // 0 = 0
+ checkSolutions(0, 0, 0, null);
+
+ // 123 = 0
+ checkSolutions(0, 0, 123, null);
+
+ // The subsequent five tests are taken from test code in the
+ // GNU Scientific Library (GSL), which is licensed under the
+ // GNU General Public License version 2 or later.
+ // See file "gsl/poly/test.c", revision 1.16 of 2003-07-26.
+ // Original author: Brian Gough <bjg@network-theory.co.uk>
+ checkSolutions(4, -20, 26, new double[0]);
+ checkSolutions(4, -20, 25, new double[]{ 2.5 });
+ checkSolutions(4, -20, 21, new double[]{ 1.5, 3.5 });
+ checkSolutions(4, 7, 0, new double[]{ -1.75, 0 });
+ checkSolutions(5, 0, -20, new double[]{ -2, 2 });
+ }
+
+
+ /**
+ * Checks whether all expected solutions were found.
+ *
+ * @param c2 the coefficient for x^2.
+ *
+ * @param c1 the coefficient for x^1.
+ *
+ * @param c0 the coefficient for x^0.
+ *
+ * @param expected the expected set of solutions, or
+ * <code>null</code> if QuadCurve2D.solveQuadratic is expected to
+ * return -1.
+ */
+ private void checkSolutions(double c2, double c1, double c0,
+ double[] expected)
+ {
+ double[] solutions = new double[2];
+ int numSols, numExpectedSolutions;
+ StringBuffer buf = new StringBuffer();
+ boolean ok = false;
+
+ if (c2 != 0)
+ {
+ buf.append(c2);
+ buf.append("x^2");
+ }
+ if (c1 != 0)
+ {
+ buf.append(c1 > 0 ? " + " : " - ");
+ buf.append(Math.abs(c1));
+ buf.append("x");
+ }
+ if (c0 != 0)
+ {
+ buf.append(c0 > 0 ? " + " : " - ");
+ buf.append(Math.abs(c0));
+ }
+ buf.append(" = 0");
+ harness.checkPoint(buf.toString());
+
+ // Check #1: Number of actual solutions == number of expected solutions?
+ numExpectedSolutions = expected == null ? -1 : expected.length;
+ numSols = QuadCurve2D.solveQuadratic(new double[] { c0, c1, c2 },
+ solutions);
+ ok = numSols == numExpectedSolutions;
+ harness.check(ok);
+
+ // Check #2: All solutions found?
+ for (int i = 0; i < numExpectedSolutions; i++)
+ {
+ boolean found = false;
+
+ for (int j = 0; j < numSols; j++)
+ {
+ if (Math.abs(solutions[j] - expected[i]) < EPSILON)
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ harness.debug("solution " + expected[i] + " not found");
+ ok = false;
+ }
+ }
+ harness.check(ok);
+
+ // Dump the arrays for debugging.
+ if (!ok)
+ {
+ harness.debug(" got " + makeString(solutions));
+ harness.debug(" expected " + makeString(expected));
+ }
+ }
+
+
+ /**
+ * Produces a String representation for a double[].
+ */
+ private static String makeString(double[] arr)
+ {
+ StringBuffer buf = new StringBuffer(50);
+
+ if (arr == null)
+ return "null";
+
+ buf.append('[');
+ for (int i = 0; i < arr.length; i++)
+ {
+ if (i > 0)
+ buf.append(", ");
+ buf.append(arr[i]);
+ }
+ buf.append(']');
+ return buf.toString();
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/QuadCurve2D/subdivide.java b/gnu/testlet/java/awt/geom/QuadCurve2D/subdivide.java
new file mode 100644
index 00000000..79346c42
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/QuadCurve2D/subdivide.java
@@ -0,0 +1,149 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.QuadCurve2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.QuadCurve2D;
+import java.util.Arrays;
+
+/**
+ * Checks whether the QuadCurve2D.subdivide methods work
+ * correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class subdivide
+ implements Testlet
+{
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ test_array();
+ test_curve2();
+ test_curve3();
+ }
+
+
+ private void test_array()
+ {
+ double[] src, left, right;
+
+ harness.checkPoint("array");
+
+ // Check 1
+ src = new double[]{7,7,1.5,2,3,4,-5,6};
+ left = new double[11];
+ QuadCurve2D.subdivide(src, 2, left, 1, left, 5);
+ harness.check(Arrays.equals(left,
+ new double[]{0.0, 1.5, 2.0, 2.25, 3.0,
+ 0.625, 4.0, -1.0, 5.0,
+ -5.0, 6.0}));
+
+ // Check 2: No exception for null results.
+ try
+ {
+ QuadCurve2D.subdivide(src, 0, null, 0, null, 0);
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+
+ // Check 3 and 4: Degenerate case, subdividing a point (0,0)
+ src = new double[6];
+ left = new double[6];
+ right = new double[6];
+ QuadCurve2D.subdivide(src, 0, left, 0, right, 0);
+ harness.check(Arrays.equals(left, new double[6]));
+ harness.check(Arrays.equals(left, right));
+ }
+
+
+ private void test_curve2()
+ {
+ QuadCurve2D src, left, right;
+
+ harness.checkPoint("curve2");
+ src = new QuadCurve2D.Double(42, 24, 123, 321, -78011, -11087);
+ left = new QuadCurve2D.Double();
+ right = new QuadCurve2D.Float();
+ src.subdivide(left, right);
+ chkeps(left.getX1(), 42); // 1
+ chkeps(left.getY1(), 24); // 2
+ chkeps(left.getCtrlX(), 82.5); // 3
+ chkeps(left.getCtrlY(), 172.5); // 4
+ chkeps(left.getX2(),-19430.75); // 5
+ chkeps(left.getY2(), -2605.25); // 6
+ chkeps(right.getX1(), -19430.75); // 7
+ chkeps(right.getY1(), -2605.25); // 8
+ chkeps(right.getCtrlX(), -38944.0); // 9
+ chkeps(right.getCtrlY(), -5383.0); // 10
+ chkeps(right.getX2(), -78011); // 11
+ chkeps(right.getY2(), -11087); // 12
+ }
+
+
+ private void test_curve3()
+ {
+ QuadCurve2D src, left, right;
+
+ harness.checkPoint("curve3");
+ src = new QuadCurve2D.Double(23, -23, 42, -42, 1968.5, -1968.5);
+ left = new QuadCurve2D.Float();
+ right = new QuadCurve2D.Float();
+ QuadCurve2D.subdivide(src, left, right);
+ chkeps(left.getX1(), 23); // 1
+ chkeps(left.getY1(), -23); // 2
+ chkeps(left.getCtrlX(), 32.5); // 3
+ chkeps(left.getCtrlY(), -32.5); // 4
+ chkeps(left.getX2(), 518.875); // 5
+ chkeps(left.getY2(), -518.875); // 6
+ chkeps(right.getX1(), 518.875); // 7
+ chkeps(right.getY1(), -518.875); // 8
+ chkeps(right.getCtrlX(), 1005.25); // 9
+ chkeps(right.getCtrlY(), -1005.25); // 10
+ chkeps(right.getX2(), 1968.5); // 11
+ chkeps(right.getY2(), -1968.5); // 12
+
+ QuadCurve2D.subdivide(left, null, left);
+ chkeps(left.getX1(), 151.71875); // 13
+ chkeps(left.getY1(), -151.71875); // 14
+ chkeps(left.getCtrlX(), 275.6875); // 15
+ chkeps(left.getCtrlY(), -275.6875); // 16
+ chkeps(left.getX2(), 518.875); // 17
+ chkeps(left.getY2(), -518.875); // 18
+ }
+
+
+ private void chkeps(double a, double b)
+ {
+ if (Math.abs(a - b) > 1e-6)
+ harness.check(a, b);
+ else
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries
new file mode 100644
index 00000000..696eb767
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries
@@ -0,0 +1,13 @@
+/add.java/1.1/Sun Sep 19 17:37:44 2004//
+/constants.java/1.1/Sun Sep 19 17:37:44 2004//
+/contains.java/1.1/Sun Sep 19 17:37:44 2004//
+/equals.java/1.1/Sun Sep 19 17:37:44 2004//
+/getBounds.java/1.1/Wed Dec 6 18:32:56 2006//
+/getBounds2D.java/1.1/Sun Sep 19 17:37:44 2004//
+/getPathIterator.java/1.1/Fri Oct 24 11:54:56 2003//
+/intersect.java/1.1/Sun Sep 19 17:37:44 2004//
+/intersects.java/1.1/Sun Sep 19 17:37:44 2004//
+/intersectsLine.java/1.1/Sun Sep 19 17:37:44 2004//
+/setFrame.java/1.1/Sun Sep 19 17:37:44 2004//
+/union.java/1.1/Sun Sep 19 17:37:44 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries.Log
new file mode 100644
index 00000000..1b9aa391
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Double////
+A D/Float////
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Repository b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Repository
new file mode 100644
index 00000000..e081febb
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Rectangle2D
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Root b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Entries b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Entries
new file mode 100644
index 00000000..35028b74
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Entries
@@ -0,0 +1,7 @@
+/clone.java/1.1/Sun Sep 19 19:38:54 2004//
+/createIntersection.java/1.1/Sun Sep 19 19:38:54 2004//
+/createUnion.java/1.1/Sun Sep 19 19:38:54 2004//
+/isEmpty.java/1.1/Sun Sep 19 19:38:54 2004//
+/outcode.java/1.1/Sun Sep 19 19:38:54 2004//
+/setRect.java/1.1/Sun Sep 19 19:38:54 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Repository b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Repository
new file mode 100644
index 00000000..e13c5d93
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Rectangle2D/Double
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Root b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/clone.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/clone.java
new file mode 100644
index 00000000..5b5f329c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/clone.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the clone() method in the {@link Rectangle2D.Double} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ Rectangle2D r2 = null;
+ r2 = (Rectangle2D) r1.clone();
+ harness.check(r1.getX() == r2.getX());
+ harness.check(r1.getY() == r2.getY());
+ harness.check(r1.getWidth() == r2.getWidth());
+ harness.check(r1.getHeight() == r2.getHeight());
+ harness.check(r1.getClass() == r2.getClass());
+ harness.check(r1 != r2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/createIntersection.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/createIntersection.java
new file mode 100644
index 00000000..5c40b525
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/createIntersection.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the createIntersection() method in the
+ * {@link Rectangle2D.Double} class.
+ */
+public class createIntersection implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // empty rectangles
+ Rectangle2D r0 = new Rectangle2D.Double();
+ Rectangle2D r1 = r0.createIntersection(new Rectangle2D.Double());
+ harness.check(r1.getX(), 0.0);
+ harness.check(r1.getY(), 0.0);
+ harness.check(r1.getWidth(), 0.0);
+ harness.check(r1.getHeight(), 0.0);
+
+ // regular intersection
+ r0 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ r1 = new Rectangle2D.Double(1.5, 2.5, 3.5, 4.5);
+ Rectangle2D r2 = r0.createIntersection(r1);
+ harness.check(r2.getX(), 1.5);
+ harness.check(r2.getY(), 2.5);
+ harness.check(r2.getWidth(), 2.5);
+ harness.check(r2.getHeight(), 3.5);
+
+ // no intersection
+ r0 = new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0);
+ r1 = new Rectangle2D.Double(3.0, 3.0, 1.0, 1.0);
+ r2 = r0.createIntersection(r1);
+
+ // strictly speaking, the spec only says that 'r2' should be
+ // empty...
+ harness.check(r2.isEmpty());
+
+ // ...but let's check the actual numbers anyway for the sake
+ // of compatibility.
+ harness.check(r2.getX(), 3.0);
+ harness.check(r2.getY(), 3.0);
+ harness.check(r2.getWidth(), -1.0);
+ harness.check(r2.getHeight(), -1.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/createUnion.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/createUnion.java
new file mode 100644
index 00000000..65d9bf03
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/createUnion.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the createUnion() method in the
+ * {@link Rectangle2D.Double} class.
+ */
+public class createUnion implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // empty rectangles
+ Rectangle2D r0 = new Rectangle2D.Double();
+ Rectangle2D r1 = r0.createUnion(new Rectangle2D.Double());
+ harness.check(r1.getX(), 0.0);
+ harness.check(r1.getY(), 0.0);
+ harness.check(r1.getWidth(), 0.0);
+ harness.check(r1.getHeight(), 0.0);
+
+ // overlapping
+ r0 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ r1 = new Rectangle2D.Double(1.5, 2.5, 3.5, 4.5);
+ Rectangle2D r2 = r0.createUnion(r1);
+ harness.check(r2.getX(), 1.0);
+ harness.check(r2.getY(), 2.0);
+ harness.check(r2.getWidth(), 4.0);
+ harness.check(r2.getHeight(), 5.0);
+
+ // non-overlapping
+ r0 = new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0);
+ r1 = new Rectangle2D.Double(3.0, 3.0, 1.0, 1.0);
+ r2 = r0.createUnion(r1);
+ harness.check(r2.getX(), 1.0);
+ harness.check(r2.getY(), 1.0);
+ harness.check(r2.getWidth(), 3.0);
+ harness.check(r2.getHeight(), 3.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/isEmpty.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/isEmpty.java
new file mode 100644
index 00000000..9cb5d2f3
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/isEmpty.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the isEmpty() method in the {@link Rectangle2D.Double}
+ * class.
+ */
+public class isEmpty implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Double();
+ harness.check(r.isEmpty());
+
+ r = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!r.isEmpty());
+
+ r = new Rectangle2D.Double(1.0, 2.0, -3.0, 4.0);
+ harness.check(r.isEmpty());
+
+ r = new Rectangle2D.Double(1.0, 2.0, 3.0, -4.0);
+ harness.check(r.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/outcode.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/outcode.java
new file mode 100644
index 00000000..441f0dce
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/outcode.java
@@ -0,0 +1,84 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the outcode() method works correctly.
+ */
+public class outcode implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Double(0.0, 0.0, 10.0, 10.0);
+ harness.check(r.outcode(5.0, 5.0) == 0);
+ harness.check(r.outcode(0.0, 0.0) == 0);
+ harness.check(r.outcode(0.0, 10.0) == 0);
+ harness.check(r.outcode(10.0, 0.0) == 0);
+ harness.check(r.outcode(10.0, 10.0) == 0);
+ harness.check(r.outcode(-5.0, 5.0) == Rectangle2D.OUT_LEFT);
+ harness.check(r.outcode(15.0, 5.0) == Rectangle2D.OUT_RIGHT);
+ harness.check(r.outcode(5.0, -5.0) == Rectangle2D.OUT_TOP);
+ harness.check(r.outcode(5.0, 15.0) == Rectangle2D.OUT_BOTTOM);
+ harness.check(r.outcode(-5.0, -5.0) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15.0, -5.0) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15.0, 15.0) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_BOTTOM));
+ harness.check(r.outcode(-5.0, 15.0) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_BOTTOM));
+
+ // check an empty rectangle - all points should be outside
+ r = new Rectangle2D.Double(0.0, 0.0, 0.0, 0.0);
+ int outside = Rectangle2D.OUT_LEFT | Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP | Rectangle2D.OUT_BOTTOM;
+ harness.check(r.outcode(-1.0, -1.0) == outside);
+ harness.check(r.outcode(-1.0, 0.0) == outside);
+ harness.check(r.outcode(-1.0, 1.0) == outside);
+ harness.check(r.outcode(0.0, -1.0) == outside);
+ harness.check(r.outcode(0.0, 0.0) == outside);
+ harness.check(r.outcode(0.0, 1.0) == outside);
+ harness.check(r.outcode(1.0, -1.0) == outside);
+ harness.check(r.outcode(1.0, 0.0) == outside);
+ harness.check(r.outcode(1.0, 1.0) == outside);
+
+ boolean pass = false;
+ try
+ {
+ r.outcode(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Double/setRect.java b/gnu/testlet/java/awt/geom/Rectangle2D/Double/setRect.java
new file mode 100644
index 00000000..af3103b8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Double/setRect.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the setRect() methods for the {@link Rectangle2D} class.
+ */
+public class setRect
+ implements Testlet
+{
+
+ /**
+ * Some checks for the setRect() methods in {@link Rectangle2D.Double}.
+ */
+ public void test(TestHarness harness)
+ {
+ // setRect(double, double, double, double)
+ Rectangle2D r1 = new Rectangle2D.Double();
+ r1.setRect(1.0, 2.0, 3.0, 4.0);
+ harness.check(r1.getX(), 1.0);
+ harness.check(r1.getY(), 2.0);
+ harness.check(r1.getWidth(), 3.0);
+ harness.check(r1.getHeight(), 4.0);
+
+ // setRect(Rectangle2D)
+ r1.setRect(new Rectangle2D.Double(5.0, 6.0, 7.0, 8.0));
+ harness.check(r1.getX(), 5.0);
+ harness.check(r1.getY(), 6.0);
+ harness.check(r1.getWidth(), 7.0);
+ harness.check(r1.getHeight(), 8.0);
+
+ boolean pass = false;
+ try
+ {
+ r1.setRect(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Entries b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Entries
new file mode 100644
index 00000000..35028b74
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Entries
@@ -0,0 +1,7 @@
+/clone.java/1.1/Sun Sep 19 19:38:54 2004//
+/createIntersection.java/1.1/Sun Sep 19 19:38:54 2004//
+/createUnion.java/1.1/Sun Sep 19 19:38:54 2004//
+/isEmpty.java/1.1/Sun Sep 19 19:38:54 2004//
+/outcode.java/1.1/Sun Sep 19 19:38:54 2004//
+/setRect.java/1.1/Sun Sep 19 19:38:54 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Repository b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Repository
new file mode 100644
index 00000000..0e3e1438
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/Rectangle2D/Float
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Root b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/clone.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/clone.java
new file mode 100644
index 00000000..b764f685
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/clone.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the clone() method in the {@link Rectangle2D.Float} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ Rectangle2D r2 = null;
+ r2 = (Rectangle2D) r1.clone();
+ harness.check(r1.getX() == r2.getX());
+ harness.check(r1.getY() == r2.getY());
+ harness.check(r1.getWidth() == r2.getWidth());
+ harness.check(r1.getHeight() == r2.getHeight());
+ harness.check(r1.getClass() == r2.getClass());
+ harness.check(r1 != r2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/createIntersection.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/createIntersection.java
new file mode 100644
index 00000000..b40a519b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/createIntersection.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the createIntersection() method in the
+ * {@link Rectangle2D.Float} class.
+ */
+public class createIntersection implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // empty rectangles
+ Rectangle2D r0 = new Rectangle2D.Float();
+ Rectangle2D r1 = r0.createIntersection(new Rectangle2D.Float());
+ harness.check(r1.getX(), 0.0);
+ harness.check(r1.getY(), 0.0);
+ harness.check(r1.getWidth(), 0.0);
+ harness.check(r1.getHeight(), 0.0);
+
+ // regular intersection
+ r0 = new Rectangle2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ r1 = new Rectangle2D.Float(1.5f, 2.5f, 3.5f, 4.5f);
+ Rectangle2D r2 = r0.createIntersection(r1);
+ harness.check(r2.getX(), 1.5);
+ harness.check(r2.getY(), 2.5);
+ harness.check(r2.getWidth(), 2.5);
+ harness.check(r2.getHeight(), 3.5);
+
+ // no intersection
+ r0 = new Rectangle2D.Float(1.0f, 1.0f, 1.0f, 1.0f);
+ r1 = new Rectangle2D.Float(3.0f, 3.0f, 1.0f, 1.0f);
+ r2 = r0.createIntersection(r1);
+
+ // strictly speaking, the spec only says that 'r2' should be
+ // empty...
+ harness.check(r2.isEmpty());
+
+ // ...but let's check the actual numbers anyway for the sake
+ // of compatibility.
+ harness.check(r2.getX(), 3.0);
+ harness.check(r2.getY(), 3.0);
+ harness.check(r2.getWidth(), -1.0);
+ harness.check(r2.getHeight(), -1.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/createUnion.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/createUnion.java
new file mode 100644
index 00000000..16e10457
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/createUnion.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the createUnion() method in the
+ * {@link Rectangle2D.Float} class.
+ */
+public class createUnion implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // empty rectangles
+ Rectangle2D r0 = new Rectangle2D.Double();
+ Rectangle2D r1 = r0.createUnion(new Rectangle2D.Double());
+ harness.check(r1.getX(), 0.0);
+ harness.check(r1.getY(), 0.0);
+ harness.check(r1.getWidth(), 0.0);
+ harness.check(r1.getHeight(), 0.0);
+
+ // overlapping
+ r0 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ r1 = new Rectangle2D.Double(1.5, 2.5, 3.5, 4.5);
+ Rectangle2D r2 = r0.createUnion(r1);
+ harness.check(r2.getX(), 1.0);
+ harness.check(r2.getY(), 2.0);
+ harness.check(r2.getWidth(), 4.0);
+ harness.check(r2.getHeight(), 5.0);
+
+ // non-overlapping
+ r0 = new Rectangle2D.Double(1.0, 1.0, 1.0, 1.0);
+ r1 = new Rectangle2D.Double(3.0, 3.0, 1.0, 1.0);
+ r2 = r0.createUnion(r1);
+ harness.check(r2.getX(), 1.0);
+ harness.check(r2.getY(), 1.0);
+ harness.check(r2.getWidth(), 3.0);
+ harness.check(r2.getHeight(), 3.0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/isEmpty.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/isEmpty.java
new file mode 100644
index 00000000..ebf71989
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/isEmpty.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some checks for the isEmpty() method in the {@link Rectangle2D.Float}
+ * class.
+ */
+public class isEmpty implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Float();
+ harness.check(r.isEmpty());
+
+ r = new Rectangle2D.Float(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(!r.isEmpty());
+
+ r = new Rectangle2D.Float(1.0f, 2.0f, -3.0f, 4.0f);
+ harness.check(r.isEmpty());
+
+ r = new Rectangle2D.Float(1.0f, 2.0f, 3.0f, -4.0f);
+ harness.check(r.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/outcode.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/outcode.java
new file mode 100644
index 00000000..b75b8633
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/outcode.java
@@ -0,0 +1,84 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the outcode() method works correctly.
+ */
+public class outcode implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Float(0.0f, 0.0f, 10.0f, 10.0f);
+ harness.check(r.outcode(5.0, 5.0) == 0);
+ harness.check(r.outcode(0.0, 0.0) == 0);
+ harness.check(r.outcode(0.0, 10.0) == 0);
+ harness.check(r.outcode(10.0, 0.0) == 0);
+ harness.check(r.outcode(10.0, 10.0) == 0);
+ harness.check(r.outcode(-5.0, 5.0) == Rectangle2D.OUT_LEFT);
+ harness.check(r.outcode(15.0, 5.0) == Rectangle2D.OUT_RIGHT);
+ harness.check(r.outcode(5.0, -5.0) == Rectangle2D.OUT_TOP);
+ harness.check(r.outcode(5.0, 15.0) == Rectangle2D.OUT_BOTTOM);
+ harness.check(r.outcode(-5.0, -5.0) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15.0, -5.0) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP));
+ harness.check(r.outcode(15.0, 15.0) == (Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_BOTTOM));
+ harness.check(r.outcode(-5.0, 15.0) == (Rectangle2D.OUT_LEFT
+ | Rectangle2D.OUT_BOTTOM));
+
+ // check an empty rectangle - all points should be outside
+ r = new Rectangle2D.Float(0.0f, 0.0f, 0.0f, 0.0f);
+ int outside = Rectangle2D.OUT_LEFT | Rectangle2D.OUT_RIGHT
+ | Rectangle2D.OUT_TOP | Rectangle2D.OUT_BOTTOM;
+ harness.check(r.outcode(-1.0, -1.0) == outside);
+ harness.check(r.outcode(-1.0, 0.0) == outside);
+ harness.check(r.outcode(-1.0, 1.0) == outside);
+ harness.check(r.outcode(0.0, -1.0) == outside);
+ harness.check(r.outcode(0.0, 0.0) == outside);
+ harness.check(r.outcode(0.0, 1.0) == outside);
+ harness.check(r.outcode(1.0, -1.0) == outside);
+ harness.check(r.outcode(1.0, 0.0) == outside);
+ harness.check(r.outcode(1.0, 1.0) == outside);
+
+ boolean pass = false;
+ try
+ {
+ r.outcode(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/Float/setRect.java b/gnu/testlet/java/awt/geom/Rectangle2D/Float/setRect.java
new file mode 100644
index 00000000..40f24dc8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/Float/setRect.java
@@ -0,0 +1,67 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the setRect() methods for the {@link Rectangle2D.Float} class.
+ */
+public class setRect implements Testlet
+{
+
+ /**
+ * Some checks for the setRect() methods in {@link Rectangle2D.Float}.
+ */
+ public void test(TestHarness harness)
+ {
+ // setRect(float, float, float, float)
+ Rectangle2D r1 = new Rectangle2D.Float();
+ r1.setRect(1.0f, 2.0f, 3.0f, 4.0f);
+ harness.check(r1.getX(), 1.0);
+ harness.check(r1.getY(), 2.0);
+ harness.check(r1.getWidth(), 3.0);
+ harness.check(r1.getHeight(), 4.0);
+
+ // setRect(Rectangle2D)
+ r1.setRect(new Rectangle2D.Float(5.0f, 6.0f, 7.0f, 8.0f));
+ harness.check(r1.getX(), 5.0);
+ harness.check(r1.getY(), 6.0);
+ harness.check(r1.getWidth(), 7.0);
+ harness.check(r1.getHeight(), 8.0);
+
+ boolean pass = false;
+ try
+ {
+ r1.setRect(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/add.java b/gnu/testlet/java/awt/geom/Rectangle2D/add.java
new file mode 100644
index 00000000..c9b7f8d7
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/add.java
@@ -0,0 +1,89 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+* Some tests for the add() methods in the {@link Rectangle2D} class.
+*/
+public class add implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // add(double, double)
+ Rectangle2D r = new Rectangle2D.Double();
+ r.add(1.0, 2.0);
+ harness.check(r.getX(), 0.0);
+ harness.check(r.getY(), 0.0);
+ harness.check(r.getWidth(), 1.0);
+ harness.check(r.getHeight(), 2.0);
+
+ // add(Point2D)
+ r = new Rectangle2D.Double();
+ r.add(new Point2D.Double(1.0, 2.0));
+ harness.check(r.getX(), 0.0);
+ harness.check(r.getY(), 0.0);
+ harness.check(r.getWidth(), 1.0);
+ harness.check(r.getHeight(), 2.0);
+
+ boolean pass = false;
+ try
+ {
+ r.add((Point2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add(Rectangle2D)
+ r = new Rectangle2D.Double();
+ r.add(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(r.getX(), 0.0);
+ harness.check(r.getY(), 0.0);
+ harness.check(r.getWidth(), 4.0);
+ harness.check(r.getHeight(), 6.0);
+
+ pass = false;
+ try
+ {
+ r.add((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/constants.java b/gnu/testlet/java/awt/geom/Rectangle2D/constants.java
new file mode 100644
index 00000000..712f5797
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/constants.java
@@ -0,0 +1,46 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Verifies constant values for the {@link Rectangle2D} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Rectangle2D.OUT_BOTTOM == 8);
+ harness.check(Rectangle2D.OUT_LEFT == 1);
+ harness.check(Rectangle2D.OUT_RIGHT == 4);
+ harness.check(Rectangle2D.OUT_TOP == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/contains.java b/gnu/testlet/java/awt/geom/Rectangle2D/contains.java
new file mode 100644
index 00000000..bc0b00d0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/contains.java
@@ -0,0 +1,59 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the contains() method in the {@link Rectangle2D} class.
+ */
+public class contains implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // contains(double, double)
+ Rectangle2D r = new Rectangle2D.Double();
+ harness.check(!r.contains(0.0, 0.0));
+
+ r = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.contains(1.0, 2.0));
+ harness.check(!r.contains(1.0, 6.0));
+ harness.check(!r.contains(4.0, 2.0));
+ harness.check(!r.contains(4.0, 6.0));
+
+ // contains(double, double, double, double)
+ r = new Rectangle2D.Double();
+ harness.check(!r.contains(0.0, 0.0, 0.0, 0.0));
+
+ r = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.contains(1.0, 2.0, 3.0, 4.0));
+ harness.check(!r.contains(1.0, 2.0, 4.0, 4.0));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/equals.java b/gnu/testlet/java/awt/geom/Rectangle2D/equals.java
new file mode 100644
index 00000000..8ae8e898
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/equals.java
@@ -0,0 +1,68 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the equals() method for the {@link Rectangle2D} class.
+ */
+public class equals
+ implements Testlet
+{
+ /**
+ * Some checks for the equals() method.
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Double();
+ Rectangle2D r2 = new Rectangle2D.Double();
+ harness.check(r1.equals(r2));
+ harness.check(r2.equals(r1));
+ harness.check(!r1.equals(null));
+
+ r1 = new Rectangle2D.Double(1.0, 0.0, 0.0, 0.0);
+ harness.check(!r1.equals(r2));
+ r2 = new Rectangle2D.Double(1.0, 0.0, 0.0, 0.0);
+ harness.check(r1.equals(r2));
+
+ r1 = new Rectangle2D.Double(1.0, 2.0, 0.0, 0.0);
+ harness.check(!r1.equals(r2));
+ r2 = new Rectangle2D.Double(1.0, 2.0, 0.0, 0.0);
+ harness.check(r1.equals(r2));
+
+ r1 = new Rectangle2D.Double(1.0, 2.0, 3.0, 0.0);
+ harness.check(!r1.equals(r2));
+ r2 = new Rectangle2D.Double(1.0, 2.0, 3.0, 0.0);
+ harness.check(r1.equals(r2));
+
+ r1 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(!r1.equals(r2));
+ r2 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ harness.check(r1.equals(r2));
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/getBounds.java b/gnu/testlet/java/awt/geom/Rectangle2D/getBounds.java
new file mode 100644
index 00000000..73e3c64c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/getBounds.java
@@ -0,0 +1,64 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the getBounds() method in the Rectangle2D class.
+ */
+public class getBounds
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D rect = new Rectangle2D.Double(10, 15, 20, 25);
+ Rectangle bounds = rect.getBounds();
+ harness.check(bounds.getX(), 10);
+ harness.check(bounds.getY(), 15);
+ harness.check(bounds.getWidth(), 20);
+ harness.check(bounds.getHeight(), 25);
+
+ rect = new Rectangle2D.Double(12.3, 45.6, 65.8, 32.1);
+ bounds = rect.getBounds();
+ harness.check(bounds.getX(), 12);
+ harness.check(bounds.getY(), 45);
+ harness.check(bounds.getWidth(), 67);
+ harness.check(bounds.getHeight(), 33);
+
+ rect = new Rectangle2D.Double(10, 15, 20, 0);
+ bounds = rect.getBounds();
+ harness.check(bounds.getX(), 10);
+ harness.check(bounds.getY(), 15);
+ harness.check(bounds.getWidth(), 20);
+ harness.check(bounds.getHeight(), 0);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/getBounds2D.java b/gnu/testlet/java/awt/geom/Rectangle2D/getBounds2D.java
new file mode 100644
index 00000000..21c6035c
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/getBounds2D.java
@@ -0,0 +1,58 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the getBounds2D() method for the {@link Rectangle2D} class.
+ */
+public class getBounds2D
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Double();
+ Rectangle2D r2 = r1.getBounds2D();
+ harness.check(r2.getX(), 0.0);
+ harness.check(r2.getY(), 0.0);
+ harness.check(r2.getWidth(), 0.0);
+ harness.check(r2.getHeight(), 0.0);
+
+ r1 = new Rectangle2D.Double(1.1, 2.2, 3.3, 4.4);
+ r2 = r1.getBounds2D();
+ harness.check(r2.getX(), 1.1);
+ harness.check(r2.getY(), 2.2);
+ harness.check(r2.getWidth(), 3.3);
+ harness.check(r2.getHeight(), 4.4);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/getPathIterator.java b/gnu/testlet/java/awt/geom/Rectangle2D/getPathIterator.java
new file mode 100644
index 00000000..e9599794
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/getPathIterator.java
@@ -0,0 +1,156 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Rectangle2D;
+
+import java.util.NoSuchElementException;
+
+/**
+ * Checks that Rectangle2D.getPathIterator works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPathIterator
+ implements Testlet
+{
+ private static int M = PathIterator.SEG_MOVETO;
+ private static int L = PathIterator.SEG_LINETO;
+ private static int C = PathIterator.SEG_CLOSE;
+
+ private int[] segs = { M, L, L, L, L, C };
+ private double[] c1 = { 10, 20, 40, 20, 40, 60, 10, 60, 10, 20 };
+ private double[] c2 = { 75, 106, 105, 166, 225, 326, 195, 266, 75, 106};
+
+ public void test(TestHarness harness)
+ {
+ Rectangle2D ri, rf, rd;
+
+ AffineTransform tx;
+ PathIterator iter;
+
+ ri = new Rectangle(10, 20, 30, 40);
+ rf = new Rectangle.Float(10, 20, 30, 40);
+ rd = new Rectangle.Double(10, 20, 30, 40);
+
+ tx = new AffineTransform(1,2,3,4,5,6);
+
+ harness.checkPoint("Rectangle.getPathIterator(null)");
+ checkPathIterator(harness, ri.getPathIterator(null), segs, c1);
+
+ harness.checkPoint("Rectangle2D.Float.getPathIterator(null)");
+ checkPathIterator(harness, rf.getPathIterator(null), segs, c1);
+
+ harness.checkPoint("Rectangle2D.Double.getPathIterator(null)");
+ checkPathIterator(harness, rd.getPathIterator(null), segs, c1);
+
+
+
+ harness.checkPoint("Rectangle.getPathIterator(null, 0.4)");
+ checkPathIterator(harness, ri.getPathIterator(null, 0.4), segs, c1);
+
+ harness.checkPoint("Rectangle2D.Float.getPathIterator(null, 0.4)");
+ checkPathIterator(harness, rf.getPathIterator(null, 0.4), segs, c1);
+
+ harness.checkPoint("Rectangle2D.Float.getPathIterator(null, 0.4)");
+ checkPathIterator(harness, rd.getPathIterator(null, 0.4), segs, c1);
+
+
+
+ harness.checkPoint("Rectangle.getPathIterator(tx)");
+ checkPathIterator(harness, ri.getPathIterator(tx), segs, c2);
+
+ harness.checkPoint("Rectangle2D.Float.getPathIterator(tx)");
+ checkPathIterator(harness, rf.getPathIterator(tx), segs, c2);
+
+ harness.checkPoint("Rectangle2D.Double.getPathIterator(tx)");
+ checkPathIterator(harness, rd.getPathIterator(tx), segs, c2);
+
+
+
+ harness.checkPoint("Rectangle.getPathIterator(tx, 1)");
+ checkPathIterator(harness, ri.getPathIterator(tx, 1), segs, c2);
+
+ harness.checkPoint("Rectangle2D.Float.getPathIterator(tx, 1)");
+ checkPathIterator(harness, rf.getPathIterator(tx, 1), segs, c2);
+
+ harness.checkPoint("Rectangle2D.Double.getPathIterator(tx, 1)");
+ checkPathIterator(harness, rd.getPathIterator(tx, 1), segs, c2);
+ }
+
+
+ private static void checkPathIterator(TestHarness harness,
+ PathIterator iter,
+ int[] segs, double[] d)
+ {
+ int i = 0, j = 0;
+ int segD, segF;
+ double[] dc = new double[2];
+ float[] fc = new float[2];
+ boolean gotRightException;
+
+ harness.check(iter.getWindingRule(), PathIterator.WIND_NON_ZERO);
+ while (!iter.isDone())
+ {
+ segD = iter.currentSegment(dc);
+ segF = iter.currentSegment(fc);
+ harness.check(segD, segs[i]);
+ harness.check(segF, segs[i]);
+ switch (segD)
+ {
+ case PathIterator.SEG_MOVETO:
+ case PathIterator.SEG_LINETO:
+ harness.check(dc[0], d[j++]);
+ harness.check(dc[1], d[j++]);
+ harness.check(fc[0], (float) dc[0]);
+ harness.check(fc[1], (float) dc[1]);
+ break;
+ }
+ iter.next();
+ i++;
+ }
+
+ harness.check(i, segs.length);
+
+ gotRightException = false;
+ try
+ {
+ iter.currentSegment(dc);
+ }
+ catch (NoSuchElementException ex)
+ {
+ gotRightException = true;
+ }
+ harness.check(gotRightException);
+
+ /* Check that no exception is thrown here. */
+ iter.next();
+ harness.check(true);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/intersect.java b/gnu/testlet/java/awt/geom/Rectangle2D/intersect.java
new file mode 100644
index 00000000..884b9a86
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/intersect.java
@@ -0,0 +1,86 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the intersect() method in the {@link Rectangle2D} class.
+ */
+public class intersect
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ Rectangle2D r2 = new Rectangle2D.Double(2.0, 1.0, 3.0, 4.0);
+ Rectangle2D r3 = new Rectangle2D.Double();
+ Rectangle2D.intersect(r1, r2, r3);
+ harness.check(r3.getX(), 2.0);
+ harness.check(r3.getY(), 2.0);
+ harness.check(r3.getWidth(), 2.0);
+ harness.check(r3.getHeight(), 3.0);
+
+ boolean pass = false;
+ try
+ {
+ Rectangle2D.intersect(null, r2, r3);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Rectangle2D.intersect(r1, null, r3);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Rectangle2D.intersect(r1, r2, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/intersects.java b/gnu/testlet/java/awt/geom/Rectangle2D/intersects.java
new file mode 100644
index 00000000..421c7d5f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/intersects.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the intersects() method works correctly.
+ */
+public class intersects implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Double(0.0, 0.0, 1.0, 1.0);
+ harness.check(!r.intersects(-1.0, -1.0, 1.0, 1.0));
+ harness.check(!r.intersects(-1.0, 0.0, 1.0, 1.0));
+ harness.check(!r.intersects(0.0, -1.0, 1.0, 1.0));
+ harness.check(r.intersects(0.0, 0.0, 1.0, 1.0));
+
+ r = new Rectangle2D.Double();
+ harness.check(!r.intersects(0.0, 0.0, 0.0, 0.0));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/intersectsLine.java b/gnu/testlet/java/awt/geom/Rectangle2D/intersectsLine.java
new file mode 100644
index 00000000..c149b0cc
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/intersectsLine.java
@@ -0,0 +1,73 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Checks that the intersectsLine() method works correctly.
+ */
+public class intersectsLine implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r = new Rectangle2D.Double(0.0, 0.0, 5.0, 10.0);
+ harness.check(r.intersectsLine(0.0, 0.0, 5.0, 0.0));
+ harness.check(r.intersectsLine(0.0, 0.0, 0.0, 10.0));
+ harness.check(r.intersectsLine(5.0, 0.0, 5.0, 10.0));
+ harness.check(r.intersectsLine(0.0, 10.0, 5.0, 10.0));
+
+ // segment that doesn't intersect
+ harness.check(!r.intersectsLine(-1.0, -1.0, -2.0, -2.0));
+
+ // segment passes through
+ harness.check(r.intersectsLine(-5.0, 2.0, 15.0, 2.0));
+
+ // segments that end at corners
+ harness.check(r.intersectsLine(-1.0, 0.0, 0.0, 0.0));
+ harness.check(r.intersectsLine(5.0, -1.0, 5.0, 0.0));
+ harness.check(r.intersectsLine(-1.0, 10.0, 0.0, 10.0));
+ harness.check(r.intersectsLine(5, 11.0, 5.0, 10.0));
+
+ // zero rectangle
+ r = new Rectangle2D.Double();
+ harness.check(!r.intersectsLine(0.0, 0.0, 0.0, 0.0));
+
+ boolean pass = false;
+ try
+ {
+ r.intersectsLine(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/setFrame.java b/gnu/testlet/java/awt/geom/Rectangle2D/setFrame.java
new file mode 100644
index 00000000..caf4bf6f
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/setFrame.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Tests the setFrame() method for the {@link Rectangle2D} class.
+ */
+public class setFrame
+ implements Testlet
+{
+
+ /**
+ * Run the checks using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // setFrame(double, double, double, double)
+ Rectangle2D r1 = new Rectangle2D.Double();
+ r1.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r1.getX(), 1.0);
+ harness.check(r1.getY(), 2.0);
+ harness.check(r1.getWidth(), 3.0);
+ harness.check(r1.getHeight(), 4.0);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/Rectangle2D/union.java b/gnu/testlet/java/awt/geom/Rectangle2D/union.java
new file mode 100644
index 00000000..e6d0aac9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/Rectangle2D/union.java
@@ -0,0 +1,86 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+//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.java.awt.geom.Rectangle2D;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+
+/**
+ * Some tests for the union() method in the {@link Rectangle2D} class.
+ */
+public class union
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Rectangle2D r1 = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
+ Rectangle2D r2 = new Rectangle2D.Double(5.0, 6.0, 7.0, 8.0);
+ Rectangle2D r3 = new Rectangle2D.Double();
+ Rectangle2D.union(r1, r2, r3);
+ harness.check(r3.getX(), 1.0);
+ harness.check(r3.getY(), 2.0);
+ harness.check(r3.getWidth(), 11.0);
+ harness.check(r3.getHeight(), 12.0);
+
+ boolean pass = false;
+ try
+ {
+ Rectangle2D.union(null, r2, r3);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Rectangle2D.union(r1, null, r3);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Rectangle2D.union(r1, r2, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/CVS/Entries b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Entries
new file mode 100644
index 00000000..7241be9e
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Entries
@@ -0,0 +1,15 @@
+/contains.java/1.1/Sun Sep 19 16:59:40 2004//
+/getBounds.java/1.1/Sun Sep 19 16:59:40 2004//
+/getCenterX.java/1.1/Sun Sep 19 16:59:40 2004//
+/getCenterY.java/1.1/Sun Sep 19 16:59:40 2004//
+/getFrame.java/1.1/Sun Sep 19 16:59:40 2004//
+/getMaxX.java/1.1/Sun Sep 19 16:59:40 2004//
+/getMaxY.java/1.1/Sun Sep 19 16:59:40 2004//
+/getMinX.java/1.1/Sun Sep 19 16:59:40 2004//
+/getMinY.java/1.1/Sun Sep 19 16:59:40 2004//
+/intersects.java/1.1/Sun Sep 19 16:59:40 2004//
+/isEmpty.java/1.1/Sun Sep 19 16:59:40 2004//
+/setFrame.java/1.1/Sun Sep 19 16:59:40 2004//
+/setFrameFromCenter.java/1.1/Sun Sep 19 16:59:40 2004//
+/setFrameFromDiagonal.java/1.1/Sun Sep 19 16:59:40 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/CVS/Repository b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Repository
new file mode 100644
index 00000000..45930b19
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/RectangularShape
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/CVS/Root b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/contains.java b/gnu/testlet/java/awt/geom/RectangularShape/contains.java
new file mode 100644
index 00000000..717373e0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/contains.java
@@ -0,0 +1,109 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the contains() method in the {@link RectangularShape} class.
+ * Only the most general checks are performed here, more specific tests should
+ * be done at the level of the subclass.
+ */
+public class contains implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ // check null arguments
+ boolean pass = false;
+ try
+ {
+ r.contains((Point2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ r.contains((Rectangle2D) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getBounds.java b/gnu/testlet/java/awt/geom/RectangularShape/getBounds.java
new file mode 100644
index 00000000..2b258efa
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getBounds.java
@@ -0,0 +1,91 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getBounds() method in the {@link RectangularShape} class.
+ * Only the most general checks are performed here, more specific tests should
+ * be done at the level of the subclass.
+ */
+public class getBounds implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(0.0, 0.0, 0.0, 0.0);
+ Rectangle bounds = r.getBounds();
+ harness.check(bounds.x == 0);
+ harness.check(bounds.y == 0);
+ harness.check(bounds.width == 0);
+ harness.check(bounds.height == 0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getCenterX.java b/gnu/testlet/java/awt/geom/RectangularShape/getCenterX.java
new file mode 100644
index 00000000..01df1488
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getCenterX.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getCenterX() method in the {@link RectangularShape} class.
+ */
+public class getCenterX implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getCenterX(), 2.5);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getCenterY.java b/gnu/testlet/java/awt/geom/RectangularShape/getCenterY.java
new file mode 100644
index 00000000..107ca48d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getCenterY.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getCenterY() method in the {@link RectangularShape} class.
+ */
+public class getCenterY implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getCenterY(), 4.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getFrame.java b/gnu/testlet/java/awt/geom/RectangularShape/getFrame.java
new file mode 100644
index 00000000..91a3a5b5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getFrame.java
@@ -0,0 +1,91 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getFrame() method in the {@link RectangularShape} class.
+ */
+public class getFrame implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ Rectangle2D f = r.getFrame();
+ harness.check(f.getX(), 1.0);
+ harness.check(f.getY(), 2.0);
+ harness.check(f.getWidth(), 3.0);
+ harness.check(f.getHeight(), 4.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getMaxX.java b/gnu/testlet/java/awt/geom/RectangularShape/getMaxX.java
new file mode 100644
index 00000000..74e081ac
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getMaxX.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getMaxX() method in the {@link RectangularShape} class.
+ */
+public class getMaxX implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getMaxX(), 4.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getMaxY.java b/gnu/testlet/java/awt/geom/RectangularShape/getMaxY.java
new file mode 100644
index 00000000..00b82cb9
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getMaxY.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getMaxY() method in the {@link RectangularShape} class.
+ */
+public class getMaxY implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getMaxY(), 6.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getMinX.java b/gnu/testlet/java/awt/geom/RectangularShape/getMinX.java
new file mode 100644
index 00000000..bcf60d72
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getMinX.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getMinX() method in the {@link RectangularShape} class.
+ */
+public class getMinX implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getMinX(), 1.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/getMinY.java b/gnu/testlet/java/awt/geom/RectangularShape/getMinY.java
new file mode 100644
index 00000000..fd71c2a5
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/getMinY.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the getMinY() method in the {@link RectangularShape} class.
+ */
+public class getMinY implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getMinY(), 2.0);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // it is probably overkill to test all these subclasses, but
+ // anyway...
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/intersects.java b/gnu/testlet/java/awt/geom/RectangularShape/intersects.java
new file mode 100644
index 00000000..49c65863
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/intersects.java
@@ -0,0 +1,95 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the intersects() method in the {@link RectangularShape} class.
+ * Only the most general checks are performed here, more specific tests should
+ * be done at the level of the subclass.
+ */
+public class intersects implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ boolean pass = false;
+ try
+ {
+ r.intersects(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/isEmpty.java b/gnu/testlet/java/awt/geom/RectangularShape/isEmpty.java
new file mode 100644
index 00000000..dcc264b0
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/isEmpty.java
@@ -0,0 +1,90 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the isEmpty() method in the {@link RectangularShape} class.
+ * Only the most general checks are performed here, more specific tests should
+ * be done at the level of the subclass.
+ */
+public class isEmpty implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ r.setFrame(0.0, 0.0, 0.0, 0.0);
+ harness.check(r.isEmpty());
+
+ r.setFrame(-1.0, -2.0, -3.0, -4.0);
+ harness.check(r.isEmpty());
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+}
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/setFrame.java b/gnu/testlet/java/awt/geom/RectangularShape/setFrame.java
new file mode 100644
index 00000000..42a780d8
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/setFrame.java
@@ -0,0 +1,140 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the setFrame() method in the {@link RectangularShape} class.
+ * Only the most general checks are performed here, more specific tests should
+ * be done at the level of the subclass.
+ */
+public class setFrame implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ // setFrame(double, double, double, double)
+ r.setFrame(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getX(), 1.0);
+ harness.check(r.getY(), 2.0);
+ harness.check(r.getWidth(), 3.0);
+ harness.check(r.getHeight(), 4.0);
+
+ // setFrame(Point2D, Dimension2D)
+ r.setFrame(new Point2D.Double(4.0, 3.0), new Dimension(2, 1));
+ harness.check(r.getX(), 4.0);
+ harness.check(r.getY(), 3.0);
+ harness.check(r.getWidth(), 2.0);
+ harness.check(r.getHeight(), 1.0);
+
+ boolean pass = false;
+ try
+ {
+ r.setFrame(null, new Dimension(2, 1));
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ r.setFrame(new Point2D.Double(4.0, 3.0), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // setFrame(Rectangle2D)
+ r.setFrame(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
+ harness.check(r.getX(), 1.0);
+ harness.check(r.getY(), 2.0);
+ harness.check(r.getWidth(), 3.0);
+ harness.check(r.getHeight(), 4.0);
+
+ pass = false;
+ try
+ {
+ r.setFrame(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromCenter.java b/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromCenter.java
new file mode 100644
index 00000000..1dbe6682
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromCenter.java
@@ -0,0 +1,123 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+* Some checks for the setFrameFromCenter() method in the {@link RectangularShape}
+* class. Only the most general checks are performed here, more specific tests
+* should be done at the level of the subclass.
+*/
+public class setFrameFromCenter implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ // setFrameFromCenter(double, double, double, double)
+ r.setFrameFromCenter(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getX(), -1.0);
+ harness.check(r.getY(), 0.0);
+ harness.check(r.getWidth(), 4.0);
+ harness.check(r.getHeight(), 4.0);
+
+ // setFrameFromCenter(Point2D, Point2D)
+ r.setFrameFromCenter(
+ new Point2D.Double(4.0, 3.0), new Point2D.Double(2.0, 1.0)
+ );
+ harness.check(r.getX(), 2.0);
+ harness.check(r.getY(), 1.0);
+ harness.check(r.getWidth(), 4.0);
+ harness.check(r.getHeight(), 4.0);
+
+ boolean pass = false;
+ try
+ {
+ r.setFrameFromCenter(null, new Point2D.Double());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ r.setFrameFromCenter(new Point2D.Double(), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromDiagonal.java b/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromDiagonal.java
new file mode 100644
index 00000000..1bc75bb1
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RectangularShape/setFrameFromDiagonal.java
@@ -0,0 +1,123 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.geom.RectangularShape;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RectangularShape;
+import java.awt.geom.RoundRectangle2D;
+
+/**
+ * Some checks for the setFrameFromDiagonal() method in the {@link RectangularShape}
+ * class. Only the most general checks are performed here, more specific tests
+ * should be done at the level of the subclass.
+ */
+public class setFrameFromDiagonal implements Testlet
+{
+
+ /**
+ * Run some tests for an instance of a subclass of {@link RectangularShape}.
+ *
+ * @param r the rectangular shape.
+ * @param harness the test harness.
+ */
+ public static void testOneInstance(RectangularShape r, TestHarness harness)
+ {
+ // setFrameFromDiagonal(double, double, double, double)
+ r.setFrameFromDiagonal(1.0, 2.0, 3.0, 4.0);
+ harness.check(r.getX(), 1.0);
+ harness.check(r.getY(), 2.0);
+ harness.check(r.getWidth(), 2.0);
+ harness.check(r.getHeight(), 2.0);
+
+ // setFrameFromDiagonal(Point2D, Point2D)
+ r.setFrameFromDiagonal(
+ new Point2D.Double(4.0, 3.0), new Point2D.Double(2.0, 1.0)
+ );
+ harness.check(r.getX(), 2.0);
+ harness.check(r.getY(), 1.0);
+ harness.check(r.getWidth(), 2.0);
+ harness.check(r.getHeight(), 2.0);
+
+ boolean pass = false;
+ try
+ {
+ r.setFrameFromDiagonal(null, new Point2D.Double());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ r.setFrameFromDiagonal(new Point2D.Double(), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Arc2D.Float");
+ testOneInstance(new Arc2D.Float(), harness);
+
+ harness.checkPoint("Arc2D.Double");
+ testOneInstance(new Arc2D.Double(), harness);
+
+ harness.checkPoint("Ellipse2D.Float");
+ testOneInstance(new Ellipse2D.Float(), harness);
+
+ harness.checkPoint("Ellipse2D.Double");
+ testOneInstance(new Ellipse2D.Double(), harness);
+
+ harness.checkPoint("Rectangle2D.Float");
+ testOneInstance(new Rectangle2D.Float(), harness);
+
+ harness.checkPoint("Rectangle2D.Double");
+ testOneInstance(new Rectangle2D.Double(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Float");
+ testOneInstance(new RoundRectangle2D.Float(), harness);
+
+ harness.checkPoint("RoundRectangle2D.Double");
+ testOneInstance(new RoundRectangle2D.Double(), harness);
+
+ harness.checkPoint("Rectangle");
+ testOneInstance(new Rectangle(), harness);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries
new file mode 100644
index 00000000..c8e2a216
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries
@@ -0,0 +1,3 @@
+/contains.java/1.2/Thu Jun 3 14:31:05 2004//
+/intersects.java/1.2/Thu Jun 3 14:31:05 2004//
+D
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries.Log b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries.Log
new file mode 100644
index 00000000..72fa927a
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/doc-files////
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Repository b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Repository
new file mode 100644
index 00000000..b4292921
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/RoundRectangle2D
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Root b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java b/gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java
new file mode 100644
index 00000000..df7c0fa6
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/contains.java
@@ -0,0 +1,131 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.RoundRectangle2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.RoundRectangle2D;
+
+
+/* Uncomment this line and the code towards the end of the class
+ * for displaying a visualization of the testlet.
+ *
+
+import java.awt.*;
+
+ *
+ */
+
+
+
+/**
+ * Checks that RoundRectangle2D.contains works correctly. In the
+ * illustration below, points considered <em>inside</em> are painted
+ * green, and points considered <em>outside</em> are painted red.
+ *
+ * <p><img src="doc-files/contains-1.png" width="198" height="184"
+ * alt="A visualization of the tested points" />
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class contains
+ implements Testlet
+{
+ RoundRectangle2D rr = new RoundRectangle2D.Double(0,0,10,10,6,6);
+
+ private static final double[] coords = { -1, 0.5, 5, 9.5, 11 };
+
+ public void test(TestHarness harness)
+ {
+ for (int y = 0; y < coords.length; y++)
+ for (int x = 0; x < coords.length; x++)
+ harness.check(rr.contains(coords[x], coords[y])
+ == getExpected(coords[x], coords[y]));
+ }
+
+
+ private boolean getExpected(double x, double y)
+ {
+ if ((x == 0.5) && (y == 5))
+ return true;
+
+ if ((x == 5) && ((y == 0.5) || (y == 5) || (y == 9.5)))
+ return true;
+
+ if ((x == 9.5) && (y == 5))
+ return true;
+
+ return false;
+ }
+
+
+ /* This code was used to generate the image.
+ *
+ *
+
+ public void showWindow()
+ {
+ Frame f = new Frame("Foo");
+ Canvas c = new Canvas()
+ {
+ public void paint(Graphics g)
+ {
+ Graphics2D g2 = (Graphics2D) g;
+ g2.setBackground(Color.WHITE);
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ g2.clearRect(0,0,getWidth(),getHeight());
+ g2.scale(10,10);
+ g2.translate(4, 4);
+ g2.fill(rr);
+
+ Rectangle2D rect = new Rectangle2D.Double();
+
+ for (int y = 0; y < coords.length; y++)
+ {
+ for (int x = 0; x < coords.length; x++)
+ {
+ if (getExpected(coords[x], coords[y]))
+ g2.setColor(Color.GREEN);
+ else
+ g2.setColor(Color.RED);
+
+ rect.setRect(coords[x], coords[y], 0.2, 0.2);
+ g2.fill(rect);
+ }
+ }
+ }
+ };
+
+ f.add(c);
+ f.pack();
+ f.setSize(new Dimension(200, 200));
+ f.show();
+ }
+
+ public static void main(String[] args)
+ {
+ new contains().showWindow();
+ }
+ */
+}
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Entries b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Entries
new file mode 100644
index 00000000..42a9059b
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Entries
@@ -0,0 +1,3 @@
+/contains-1.png/1.1/Fri Oct 24 11:54:56 2003/-kb/
+/intersects-1.png/1.1/Fri Oct 24 11:54:56 2003/-kb/
+D
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Repository b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Repository
new file mode 100644
index 00000000..ce3be7ea
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Root b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/contains-1.png b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/contains-1.png
new file mode 100644
index 00000000..1dff7488
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/contains-1.png
Binary files differ
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/intersects-1.png b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/intersects-1.png
new file mode 100644
index 00000000..088efd3d
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/doc-files/intersects-1.png
Binary files differ
diff --git a/gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java b/gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java
new file mode 100644
index 00000000..fe905dce
--- /dev/null
+++ b/gnu/testlet/java/awt/geom/RoundRectangle2D/intersects.java
@@ -0,0 +1,146 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.geom.RoundRectangle2D;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.geom.RoundRectangle2D;
+
+
+/* Uncomment this line and the code towards the end of the class
+ * for displaying a visualization of the testlet.
+ *
+ *
+import java.awt.*;
+ *
+ *
+ */
+
+
+
+/**
+ * Checks that RoundRectangle2D.intersects works correctly. In the
+ * illustration below, rectangles considered <em>intersecting</em> are
+ * painted green, and rectangles considered <em>non-intersecting</em>
+ * are painted red.
+ *
+ * <p><img src="doc-files/intersects-1.png" width="286" height="277"
+ * alt="A visualization of the tested rectangles" />
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class intersects
+ implements Testlet
+{
+ RoundRectangle2D rr = new RoundRectangle2D.Double(0,0,10,10,6,6);
+
+ private static final double[] coords = { -3, -1, 0.5, 4, 6, 9.5, 11, 13 };
+
+ // Tests for bug #6067 in GNU Classpath
+ public void test(TestHarness harness)
+ {
+ int ck = 0;
+ for (int y = 0; y < coords.length - 1; y++)
+ for (int x = 0; x < coords.length - 1; x++)
+ harness.check(rr.intersects(coords[x], coords[y],
+ coords[x + 1] - coords[x],
+ coords[y + 1] - coords[y])
+ == getExpected(++ck));
+ }
+
+
+ private boolean getExpected(int check)
+ {
+ return ((check >= 10) && (check <= 12))
+ || ((check >= 16) && (check <= 20))
+ || ((check >= 23) && (check <= 27))
+ || ((check >= 30) && (check <= 34))
+ || ((check >= 38) && (check <= 40));
+ }
+
+
+ /* This code was used to generate the image.
+ *
+ *
+ *
+ public void showWindow()
+ {
+ Frame f = new Frame("Foo");
+ Canvas c = new Canvas()
+ {
+ public void paint(Graphics g)
+ {
+ Graphics2D g2 = (Graphics2D) g;
+ g2.setBackground(Color.WHITE);
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ g2.clearRect(0,0,getWidth(),getHeight());
+ g2.scale(14,14);
+ g2.translate(5, 5);
+ g2.fill(rr);
+
+ Rectangle2D rect = new Rectangle2D.Double();
+ g2.setFont(new Font("Lucida", Font.BOLD, 1).deriveFont(0.8f));
+ int ck = 0;
+ for (int y = 0; y < coords.length - 1; y++)
+ {
+ for (int x = 0; x < coords.length - 1; x++)
+ {
+ double w, h;
+
+ w = coords[x + 1] - coords[x];
+ h = coords[y + 1] - coords[y];
+
+ if (getExpected(++ck))
+ g2.setColor(new Color(0,255,0,120));
+ else
+ g2.setColor(new Color(255,0,0,120));
+
+ rect.setRect(coords[x], coords[y], w, h);
+ g2.fill(rect);
+ g2.setColor(new Color(255,255,255,128));
+ g2.setStroke(new BasicStroke(0.05f));
+ g2.draw(rect);
+ g2.setColor(Color.BLACK);
+ g2.drawString(String.valueOf(ck), (float) coords[x] + 0.15f,
+ (float) coords[y] + 1.15f);
+ g2.setColor(Color.WHITE);
+ g2.drawString(String.valueOf(ck), (float) coords[x] + 0.1f,
+ (float) coords[y] + 1.1f);
+ }
+ }
+ }
+ };
+
+ f.add(c);
+ f.pack();
+ f.setSize(new Dimension(200, 200));
+ f.show();
+ }
+
+ public static void main(String[] args)
+ {
+ new intersects().showWindow();
+ }
+ */
+}
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Entries b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Entries
new file mode 100644
index 00000000..c787fc78
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Entries
@@ -0,0 +1,8 @@
+/constructors.java/1.2/Thu Aug 3 17:43:16 2006//
+/createCompatibleDestImage.java/1.3/Fri Aug 11 21:03:03 2006//
+/createCompatibleDestRaster.java/1.1/Fri Aug 11 21:03:03 2006//
+/filterImage.java/1.3/Fri Aug 11 21:03:03 2006//
+/filterRaster.java/1.3/Fri Aug 11 21:03:03 2006//
+/getBounds2D.java/1.2/Thu Aug 3 17:43:16 2006//
+/getPoint2D.java/1.3/Fri Aug 11 21:03:03 2006//
+D
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Repository b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Repository
new file mode 100644
index 00000000..e8414de0
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/AffineTransformOp
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Root b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/constructors.java b/gnu/testlet/java/awt/image/AffineTransformOp/constructors.java
new file mode 100644
index 00000000..1b2bbe89
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/constructors.java
@@ -0,0 +1,120 @@
+/* constructors.java -- some checks for the constructors in the
+ AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.ImagingOpException;
+
+/**
+ * Some checks for the constructors in the {@link AffineTransformOp} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(xform, interpolationType)");
+
+ // Simple test
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+
+ harness.check(op.getTransform(), xform);
+
+ harness.check(op.getInterpolationType(), AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getRenderingHints(), new RenderingHints(RenderingHints.KEY_INTERPOLATION,
+ RenderingHints.VALUE_INTERPOLATION_BICUBIC));
+
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BILINEAR);
+ harness.check(op.getTransform(), xform);
+ harness.check(op.getInterpolationType(), AffineTransformOp.TYPE_BILINEAR);
+ harness.check(op.getRenderingHints(), new RenderingHints(RenderingHints.KEY_INTERPOLATION,
+ RenderingHints.VALUE_INTERPOLATION_BILINEAR));
+
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
+ harness.check(op.getTransform(), xform);
+ harness.check(op.getInterpolationType(), AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
+ harness.check(op.getRenderingHints(), new RenderingHints(RenderingHints.KEY_INTERPOLATION,
+ RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR));
+
+
+ // Try creating with invalid transofrm
+ xform = new AffineTransform(0, 0, 0, 0, 0, 0);
+
+ try
+ {
+ new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(false);
+ }
+ catch (ImagingOpException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(xform, hints)");
+
+ // Simple test
+ RenderingHints hints = new RenderingHints(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, hints);
+
+ harness.check(op.getTransform(), xform);
+ harness.check(op.getRenderingHints(), hints);
+
+ // Try creating with invalid transofrm
+ xform = new AffineTransform(0, 0, 0, 0, 0, 0);
+
+ try
+ {
+ new AffineTransformOp(xform, hints);
+ harness.check(false);
+ }
+ catch (ImagingOpException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java b/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java
new file mode 100644
index 00000000..550ddb82
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestImage.java
@@ -0,0 +1,164 @@
+/* createCompatibleDestImage.java -- some checks for the
+ createCompatibleDestImage() method of the AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.color.ColorSpace;
+import java.awt.geom.AffineTransform;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Checks for the createCompatibleDestImage method in the
+ * {@link AffineTransformOp} class.
+ */
+public class createCompatibleDestImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTest(harness);
+ colorModelTest(harness);
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestImage");
+
+ // Simple test
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+
+ BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+
+ BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+
+ // Try a different colour model
+ img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+ DirectColorModel cm = new DirectColorModel(16, 0x0f00, 0x00f0, 0x000f);
+ dest = op.createCompatibleDestImage(img, cm);
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), cm);
+ }
+
+ // Test all the default color models
+ private void colorModelTest(TestHarness harness)
+ {
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ harness.checkPoint("type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+
+ dest = op.createCompatibleDestImage(img, null);
+ harness.check(dest.getColorModel().isCompatibleSampleModel(dest.getSampleModel()));
+
+ // This ensures that we have the same defaults as the reference implementation
+ switch (type)
+ {
+ case BufferedImage.TYPE_INT_RGB:
+ case BufferedImage.TYPE_INT_ARGB:
+ case BufferedImage.TYPE_INT_ARGB_PRE:
+ case BufferedImage.TYPE_3BYTE_BGR:
+ case BufferedImage.TYPE_USHORT_565_RGB:
+ case BufferedImage.TYPE_USHORT_555_RGB:
+ case BufferedImage.TYPE_BYTE_GRAY:
+ case BufferedImage.TYPE_USHORT_GRAY:
+
+ if (type == BufferedImage.TYPE_INT_ARGB_PRE)
+ harness.check(dest.getType(), BufferedImage.TYPE_INT_ARGB_PRE);
+ else
+ harness.check(dest.getType(), BufferedImage.TYPE_INT_ARGB);
+
+ harness.check(dest.getColorModel() instanceof DirectColorModel);
+ harness.check(dest.getSampleModel() instanceof SinglePixelPackedSampleModel);
+ harness.check(dest.getColorModel().getPixelSize(), 32);
+ harness.check(dest.getColorModel().getNumComponents(), 4);
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.TRANSLUCENT);
+ harness.check(dest.getColorModel().hasAlpha(), true);
+ harness.check(dest.getColorModel().getTransferType(), DataBuffer.TYPE_INT);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), (type == BufferedImage.TYPE_INT_ARGB_PRE));
+ harness.check(dest.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ harness.check(dest.getRaster().getNumBands(), 4);
+ harness.check(dest.getRaster().getNumDataElements(), 1);
+ break;
+
+ case BufferedImage.TYPE_4BYTE_ABGR:
+ case BufferedImage.TYPE_4BYTE_ABGR_PRE:
+ harness.check(dest.getColorModel() instanceof ComponentColorModel);
+ harness.check(dest.getSampleModel() instanceof PixelInterleavedSampleModel);
+ harness.check(dest.getColorModel().getPixelSize(), 32);
+ harness.check(dest.getColorModel().getNumComponents(), 4);
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.TRANSLUCENT);
+ harness.check(dest.getColorModel().hasAlpha(), true);
+ harness.check(dest.getColorModel().getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), (type == BufferedImage.TYPE_4BYTE_ABGR_PRE));
+ harness.check(dest.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ harness.check(dest.getRaster().getNumBands(), 4);
+ harness.check(dest.getRaster().getNumDataElements(), 4);
+ break;
+ }
+ }
+ }
+}
+
+
+ \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..c8622c53
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/createCompatibleDestRaster.java
@@ -0,0 +1,102 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method of the AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.geom.AffineTransform;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+
+/**
+ * Checks for the createCompatibleDestRaster method in the
+ * {@link AffineTransformOp} class.
+ */
+public class createCompatibleDestRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestRaster");
+
+ // Simple test
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 3, new Point(5, 5));
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BILINEAR);
+
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getHeight(), src.getHeight());
+ harness.check(dst.getWidth(), src.getWidth());
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different type
+ src = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 25, 40, 3, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different number of bands
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java b/gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java
new file mode 100644
index 00000000..63716982
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/filterImage.java
@@ -0,0 +1,122 @@
+/* filterImage.java -- some checks for the filter(Image) method of the
+ AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Line2D;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link AffineTransformOp} class.
+ */
+public class filterImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testDefaults(harness);
+
+ // Should write a test to ensure that the filter can actually be applied
+ // properly. Since interpolation comes into play, however, I don't know
+ // of a good way to test it, as our filtered image will be different
+ // from the reference implementation's...
+ }
+
+ private void testDefaults(TestHarness harness)
+ {
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+
+ // Src and dst images cannot be the same
+ try
+ {
+ op.filter(img, img);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Src and dst are different sizes (allowed)
+ BufferedImage dst = new BufferedImage(30, 40, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst have different tpyes (allowed)
+ dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst are different sizes AND different types (not allowed)
+ /*
+ * Fails on the ref impl...
+ *
+ dst = new BufferedImage(30, 40, BufferedImage.TYPE_INT_ARGB);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ */
+
+ // Checks the destination image type
+ dst = op.filter(img, null);
+ harness.check(dst.getType(), op.createCompatibleDestImage(img, null).getType());
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java b/gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java
new file mode 100644
index 00000000..11a78d79
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/filterRaster.java
@@ -0,0 +1,128 @@
+/* filterRaster.java -- some checks for the filter(Raster) method of the
+ AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Line2D;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+import java.awt.image.ImagingOpException;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link AffineTransformOp} class.
+ */
+public class filterRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testDefaults(harness, AffineTransformOp.TYPE_BILINEAR);
+ testDefaults(harness, AffineTransformOp.TYPE_BICUBIC);
+ testDefaults(harness, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
+
+ // Should write a test to ensure that the filter can actually be applied
+ // properly. Since interpolation comes into play, however, I don't know
+ // of a good way to test it, as our filtered image will be different
+ // from the reference implementation's...
+ }
+
+ private void testDefaults(TestHarness harness, int type)
+ {
+ // Create a raster to work on based on an image
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ WritableRaster src = img.getRaster();
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, type);
+
+ // Make sure it works in the first place
+ WritableRaster dest = src.createCompatibleWritableRaster();
+ try
+ {
+ op.filter(src, dest);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst cannot be the same
+ try
+ {
+ op.filter(src, src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ /*
+ * This is not allowed on the ref impl, but it can't hurt to allow it
+ * here...
+ *
+ // Different type of raster (not allowed)
+ dest = Raster.createBandedRaster(DataBuffer.TYPE_USHORT, 20, 20, 1, new Point(0,0));
+ try
+ {
+ op.filter(src, dest);
+ harness.check(false);
+ }
+ catch (ImagingOpException e)
+ {
+ harness.check(true);
+ }
+ */
+
+ // Different size (allowed)
+ dest = src.createCompatibleWritableRaster(75, 87);
+ try
+ {
+ op.filter(src, dest);
+ harness.check(true);
+ }
+ catch (ImagingOpException e)
+ {
+ harness.check(false);
+ }
+
+ // Null destination (allowed - will create one for us)
+ WritableRaster dest2 = op.filter(src, null);
+ harness.check(dest2 != null);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java b/gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java
new file mode 100644
index 00000000..c612cbc0
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/getBounds2D.java
@@ -0,0 +1,123 @@
+/* getBounds2D.java -- some checks for the getBounds2D() method of the
+ AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.AffineTransformOp;
+import java.awt.image.BufferedImage;
+
+/**
+ * Checks the getBounds2D method in the
+ * {@link AffineTransformOp} class.
+ */
+public class getBounds2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testIdentity(harness);
+ testRotation(harness);
+ testScale(harness);
+ testShear(harness);
+ testTranslation(harness);
+ }
+
+ private void testIdentity(TestHarness harness)
+ {
+ harness.checkPoint("testIdentity");
+
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ BufferedImage img = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(0, 0, 30, 40));
+ }
+
+ private void testRotation(TestHarness harness)
+ {
+ harness.checkPoint("testRotation");
+
+ AffineTransform xform = AffineTransform.getRotateInstance(Math.PI / 2);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ BufferedImage img = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(-40, 0, 40, 30));
+
+ // Do it again, but result in a diamond (not another level rectangle)
+ xform.rotate(Math.PI / 3);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(-45.980762f,
+ -34.641018f,
+ 45.980762f,
+ 49.641018f));
+
+ // Rotation about a point
+ xform.setToIdentity();
+ xform.rotate(Math.PI / 2, 10, 15);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(-15, 5, 40, 30));
+ }
+
+ private void testScale(TestHarness harness)
+ {
+ harness.checkPoint("testScale");
+
+ AffineTransform xform = AffineTransform.getScaleInstance(1.0, 1.0);
+ BufferedImage img = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(0, 0, 30, 40));
+
+ xform.scale(2.5, 4.75);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(0, 0, 75, 190));
+ }
+
+ private void testShear(TestHarness harness)
+ {
+ harness.checkPoint("testHarness");
+
+ AffineTransform xform = AffineTransform.getShearInstance(1.5, 3.25);
+ BufferedImage img = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(0, 0, 90, 137.5f));
+ }
+
+ private void testTranslation(TestHarness harness)
+ {
+ harness.checkPoint("testTranslation");
+
+ AffineTransform xform = AffineTransform.getTranslateInstance(75, 50);
+ BufferedImage img = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getBounds2D(img), new Rectangle2D.Float(75, 50, 30, 40));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java b/gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java
new file mode 100644
index 00000000..112808c1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/AffineTransformOp/getPoint2D.java
@@ -0,0 +1,128 @@
+/* getPoint2D.java -- some checks for the getPoint2D() method of the
+ AffineTransformOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.AffineTransformOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.image.AffineTransformOp;
+
+/**
+ * Checks the getPoint2D method in the
+ * {@link AffineTransformOp} class.
+ */
+public class getPoint2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testIdentity(harness);
+ testRotation(harness);
+ testScale(harness);
+ testShear(harness);
+ testTranslation(harness);
+ }
+
+ private void testIdentity(TestHarness harness)
+ {
+ harness.checkPoint("testIdentity");
+
+ AffineTransform xform = new AffineTransform();
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(5,5));
+
+ Point2D pt = null;
+ Point2D pt2 = op.getPoint2D(new Point2D.Double(10,-5), pt);
+ harness.check(pt, null); // this is what the ref impl does...
+ harness.check(pt2, new Point2D.Double(10, -5));
+
+ pt = new Point2D.Double(0,0);
+ pt2 = op.getPoint2D(new Point2D.Double(10,-5), pt);
+ harness.check(pt, new Point2D.Double(10, -5));
+ harness.check(pt, pt2);
+
+ pt = new Point2D.Float(0,0);
+ op.getPoint2D(new Point2D.Float(-10,-5), pt);
+ harness.check(pt, new Point2D.Float(-10, -5));
+ }
+
+ private void testRotation(TestHarness harness)
+ {
+ harness.checkPoint("testRotation");
+
+ AffineTransform xform = AffineTransform.getRotateInstance(Math.PI / 2);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(-5,5));
+
+ // Do it again, but result in a diamond (not another level rectangle)
+ xform.rotate(Math.PI / 3);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(-6.830127018922193, -1.8301270189221923));
+
+ // Rotation about a point
+ xform.setToIdentity();
+ xform.rotate(Math.PI / 2, 10, 2);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(7,-3));
+ }
+
+ private void testScale(TestHarness harness)
+ {
+ harness.checkPoint("testScale");
+
+ AffineTransform xform = AffineTransform.getScaleInstance(1.0, 1.0);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(5, 5));
+
+ xform.scale(2.5, 4.75);
+ op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(12.5,23.75));
+ }
+
+ private void testShear(TestHarness harness)
+ {
+ harness.checkPoint("testShear");
+
+ AffineTransform xform = AffineTransform.getShearInstance(1.5, 3.25);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(12.5,21.25));
+ }
+
+ private void testTranslation(TestHarness harness)
+ {
+ harness.checkPoint("testTranslation");
+
+ AffineTransform xform = AffineTransform.getTranslateInstance(75, 50);
+ AffineTransformOp op = new AffineTransformOp(xform, AffineTransformOp.TYPE_BICUBIC);
+ harness.check(op.getPoint2D(new Point2D.Double(5, 5), null), new Point2D.Double(80,55));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/CVS/Entries b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Entries
new file mode 100644
index 00000000..ea9f0ee1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Entries
@@ -0,0 +1,6 @@
+/constructors.java/1.3/Fri Aug 11 21:03:03 2006//
+/createCompatibleDestRaster.java/1.3/Fri Aug 11 21:03:03 2006//
+/filter.java/1.2/Thu Aug 3 17:43:15 2006//
+/getBounds2D.java/1.2/Thu Aug 3 17:43:15 2006//
+/getPoint2D.java/1.2/Thu Aug 3 17:43:15 2006//
+D
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/CVS/Repository b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Repository
new file mode 100644
index 00000000..b5a6d4a1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/BandCombineOp
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/CVS/Root b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/constructors.java b/gnu/testlet/java/awt/image/BandCombineOp/constructors.java
new file mode 100644
index 00000000..bcaae9e4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/constructors.java
@@ -0,0 +1,184 @@
+/* constructors.java -- some checks for the constructors in the
+ BandCombineOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.BandCombineOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandCombineOp;
+import java.awt.image.ImagingOpException;
+import java.util.Arrays;
+
+/**
+ * Some checks for the constructors in the {@link BandCombineOp} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ basicTest(harness);
+ emptyMatrix(harness);
+ invalidMatrix(harness);
+ }
+
+ // Test the basic operation of the constructor
+ private void basicTest(TestHarness harness)
+ {
+ harness.checkPoint("(constructor)");
+
+ float[][] matrix = new float[][] {new float[]{1, 2, 3},
+ new float[]{4, 5, 6},
+ new float[]{7, 8, 9}};
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ float[][] resultMatrix = op.getMatrix();
+ float[][] expectedMatrix = new float[][] {new float[]{1, 2, 3, 0},
+ new float[]{4, 5, 6, 0},
+ new float[]{7, 8, 9, 0}};
+ // The ref impl seems to add a column of zeros, so we test against that
+ // for compatibility
+
+ if (expectedMatrix.length != resultMatrix.length)
+ harness.check(false);
+ else
+ for (int i = 0; i < expectedMatrix.length; i++)
+ harness.check(Arrays.equals(expectedMatrix[i], resultMatrix[i]));
+
+ // This happens even if the (width == height + 1)
+ matrix = new float[][] {new float[]{1, 2, 3, 4},
+ new float[]{4, 5, 6, 7},
+ new float[]{7, 8, 9, 1}};
+
+ op = new BandCombineOp(matrix, null);
+
+ resultMatrix = op.getMatrix();
+ expectedMatrix = new float[][] {new float[]{1, 2, 3, 4, 0},
+ new float[]{4, 5, 6, 7, 0},
+ new float[]{7, 8, 9, 1, 0}};
+
+ if (expectedMatrix.length != resultMatrix.length)
+ harness.check(false);
+ else
+ for (int i = 0; i < expectedMatrix.length; i++)
+ harness.check(Arrays.equals(expectedMatrix[i], resultMatrix[i]));
+ }
+
+ // Test behaviour of constructor when passed various empty matrices
+ private void emptyMatrix(TestHarness harness)
+ {
+ // Try creating with an empty matrix - this should be allowed
+ float[][] matrix = new float[][] {new float[]{},
+ new float[]{}};
+
+ try
+ {
+ new BandCombineOp(matrix, null);
+ harness.check(true);
+ }
+ catch (ImagingOpException e)
+ {
+ harness.check(false);
+ }
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+ float[][] resultMatrix = op.getMatrix();
+ float[][] expectedMatrix = new float[][] {new float[]{0},
+ new float[]{0}};
+
+ if (expectedMatrix.length != resultMatrix.length)
+ harness.check(false);
+ else
+ for (int i = 0; i < expectedMatrix.length; i++)
+ harness.check(Arrays.equals(expectedMatrix[i], resultMatrix[i]));
+
+ // What about a null matrix, not an empty one??
+ matrix = new float[][] {null, null};
+
+ try
+ {
+ new BandCombineOp(matrix, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // And pass in a null parameter, not just a matrix of nulls
+ try
+ {
+ new BandCombineOp(null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // Checks on behaviour of constructor when passed an invalid matrix
+ private void invalidMatrix(TestHarness harness)
+ {
+ // What checks are done to ensure the 2-d array is a 2-d matrix?
+ // If a row is too short, we throw an exception...
+ float[][] matrix = new float[][] {new float[]{1, 2, 3, 4},
+ new float[]{4, 5},
+ new float[]{7, 8, 9}};
+
+ try
+ {
+ new BandCombineOp(matrix, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // And if a row is too long, it gets concatenated.
+ matrix = new float[][] {new float[]{1, 2},
+ new float[]{4, 5, 6},
+ new float[]{7, 8, 9, 1}};
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ float[][] resultMatrix = op.getMatrix();
+ float[][] expectedMatrix = new float[][] {new float[]{1, 2, 0},
+ new float[]{4, 5, 0},
+ new float[]{7, 8, 0}};
+
+ if (expectedMatrix.length != resultMatrix.length)
+ harness.check(false);
+ else
+ for (int i = 0; i < expectedMatrix.length; i++)
+ harness.check(Arrays.equals(expectedMatrix[i], resultMatrix[i]));
+ }
+}
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..3dee5d0f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/createCompatibleDestRaster.java
@@ -0,0 +1,301 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method of the BandCombineOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.BandCombineOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.BandCombineOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+
+/**
+ * Checks for the createCompatibleDestRaster method in the
+ * {@link BandCombineOp} class.
+ */
+public class createCompatibleDestRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ basicTest(harness);
+ test2(harness);
+ test3(harness);
+ impossibleTest(harness);
+ }
+
+ private void basicTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestRaster");
+
+ // Simple test
+ float[][] matrix = new float[][] {new float[] {1, 2, 3},
+ new float[] {4, 5, 6},
+ new float[] {7, 8, 9}};
+
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 3, new Point(5, 5));
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), 3);
+ harness.check(dst.getHeight(), src.getHeight());
+ harness.check(dst.getWidth(), src.getWidth());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different type
+ src = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 25, 40, 3, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumBands(), 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // This is where things get messy. The Sun API states that "The width of the matrix
+ // must be equal to the number of bands in the source Raster, optionally plus one. If
+ // there is one more column in the matrix than the number of bands, there is an implied
+ // 1 at the end of the vector of band samples representing a pixel. The height of the matrix
+ // must be equal to the number of bands in the destination", but this is NOT how their
+ // implementation behaves.
+ //
+ // They miss one requirement, however: the number of bands in the source and destination
+ // rasters must also be equal... which effectively means
+ // ((width == height) || (width == height + 1)) must be true
+
+ // The source (4 bands) is incompatible with the matrix (width = 3)
+
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 4, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // The destination raster (3 bands) would be incompatibel with the source (2 bands)
+ // (the undocumented requirement)
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 1, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ // Using a non-square matrix
+ private void test2(TestHarness harness)
+ {
+ // Height still == 3, but width == 4
+ float[][] matrix = new float[][] {new float[] {1, 2, 3, 1},
+ new float[] {4, 5, 6, 1},
+ new float[] {7, 8, 9, 1}};
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ // Source has 3 bands, which is the width minus one (uses the implied 1), works
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 3, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Source has 4 bands, which is compatible with the matrix (width is 4)
+ // The destination raster, however, is not compatible with the source (3 vs 4 bands)
+ // (the undocumented restriction)
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 4, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Also incompatible, but this is expected according to the spec
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 2, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Also still incompatible
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // One more test, with a larger matrix
+ private void test3(TestHarness harness)
+ {
+ // Test again, with a different matrix
+ float[][] matrix = new float[][] {new float[] {1, 2, 3, 1, 5},
+ new float[] {4, 5, 6, 1, 5},
+ new float[] {7, 8, 9, 1, 5},
+ new float[] {1, 2, 3, 4, 5}};
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ // Works using the implied 1
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 4, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), 4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Does not use implied 1; however source and dest would have incompabible bands
+ // (undocumented restriction)
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Just for completeness
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 3, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 6, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void impossibleTest(TestHarness harness)
+ {
+ // Thus, it would be impossible to create a compatible destination wraster if
+ // ((width != height) && (width != height + 1))
+ float[][] matrix = new float[][] {new float[] {1, 2, 3, 1, 5},
+ new float[] {4, 5, 6, 1, 5},
+ new float[] {7, 8, 9, 1, 5}};
+
+ BandCombineOp op = new BandCombineOp(matrix, null);
+
+ for (int i = 2; i < 6; i++)
+ {
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, i, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // Repeat the above test, but with too many rows instead of too few
+ matrix = new float[][] {new float[] {1, 2, 3,},
+ new float[] {4, 5, 6,},
+ new float[] {2, 4, 6,},
+ new float[] {1, 3, 5,},
+ new float[] {7, 8, 9,}};
+
+ op = new BandCombineOp(matrix, null);
+
+ for (int i = 2; i < 6; i++)
+ {
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, i, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/filter.java b/gnu/testlet/java/awt/image/BandCombineOp/filter.java
new file mode 100644
index 00000000..7e7ba97c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/filter.java
@@ -0,0 +1,181 @@
+/* filter.java -- some checks for the filter() method of the
+ BandCombineOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.BandCombineOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.BandCombineOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.util.Arrays;
+
+/**
+ * Checks the filter method in the {@link BandCombineOp} class.
+ */
+public class filter implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("filter");
+
+ float[][] matrix = new float[][] {{2, 7},
+ {5, 6}};
+
+ WritableRaster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 5, 5, 2, new Point(0,0));
+
+ /* Setting up:
+ [0] [1] [2] [3] [4]
+ [0] . . x . .
+ [1] . . . . .
+ [2] . . . . .
+ [3] . . . . .
+ [4] . . . . x
+ with two bands
+ */
+ src.setSample(2, 1, 0, 150);
+ src.setSample(4, 4, 0, 85);
+ src.setSample(2, 1, 1, 25);
+ src.setSample(4, 4, 1, 110);
+
+
+ // Basic checks on output
+ BandCombineOp op = new BandCombineOp(matrix, null);
+ WritableRaster dst2 = op.createCompatibleDestRaster(src);
+ WritableRaster dst = op.filter(src, dst2);
+ harness.check(dst, dst2);
+ harness.check(dst.getNumBands(), 2);
+
+ // A null dst2 should also work
+ dst2 = null;
+ dst = op.filter(src, dst2);
+ harness.check(dst instanceof WritableRaster);
+ harness.check(dst2, null);
+
+ // Check first band
+ int[] pixels = dst.getSamples(0, 0, 5, 5, 0, (int[])null);
+
+ int[] expected = new int[25];
+ Arrays.fill(expected, 0);
+ expected[7] = 475;
+ expected[24] = 940;
+ harness.check(Arrays.equals(expected, pixels));
+
+ // Check second band
+ pixels = dst.getSamples(0, 0, 5, 5, 1, pixels);
+ expected[7] = 900;
+ expected[24] = 1085;
+ harness.check(Arrays.equals(expected, pixels));
+
+ // Check the implied 1 at the end of the band samples, which happens if
+ // there is one more column in the matrix than there are bands
+ // And throw in a check with negative numbers too... why not =)
+ matrix = new float[][] {{2, -7, 5},
+ {5, 6, -3}};
+ op = new BandCombineOp(matrix, null);
+ dst = op.filter(src, dst);
+
+ // First band
+ pixels = dst.getSamples(0, 0, 5, 5, 0, (int[])null);
+ Arrays.fill(expected, 5);
+ expected[7] = 130;
+ expected[24] = -595;
+ harness.check(Arrays.equals(expected, pixels));
+ // Second band
+ pixels = dst.getSamples(0, 0, 5, 5, 1, (int[])null);
+ Arrays.fill(expected, -3);
+ expected[7] = 897;
+ expected[24] = 1082;
+ harness.check(Arrays.equals(expected, pixels));
+
+ // Check for overflow (this should fail silently and not throw an exception)
+ matrix = new float[][] {{2000000000, 2000000000},
+ {2000000000, 2000000000}};
+ try
+ {
+ op = new BandCombineOp(matrix, null);
+ dst = op.filter(src, dst);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // Check for exceptions
+ try
+ {
+ expected[25] = 100;
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // accessing invalid band number
+ try
+ {
+ pixels = dst.getSamples(0, 0, 5, 5, 2, pixels);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // dst has wrong number of bands
+ dst = Raster.createBandedRaster(DataBuffer.TYPE_INT, 5, 5, 6, new Point(0,0));
+ try
+ {
+ dst = op.filter(src, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // dst has wrong data type
+ dst = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 5, 5, 1, new Point(0,0));
+ try
+ {
+ dst = op.filter(src, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/getBounds2D.java b/gnu/testlet/java/awt/image/BandCombineOp/getBounds2D.java
new file mode 100644
index 00000000..37951003
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/getBounds2D.java
@@ -0,0 +1,76 @@
+/* getBounds2D.java -- some checks for the getBounds2D() method of the
+ BandCombineOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.BandCombineOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.BandCombineOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the getBounds2D method in the
+ * {@link BandCombineOp} class.
+ */
+public class getBounds2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getBounds2D");
+
+ // This is a simple test; the BandCombineOp should not change the
+ // dimensions of the raster
+
+ float[][] matrix = new float[][] {{2, 7}};
+ WritableRaster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 5, 5, 1, new Point(0,0));
+ BandCombineOp op = new BandCombineOp(matrix, null);
+ harness.check(op.getBounds2D(src), src.getBounds());
+
+ // This should throw an exception, as the bands in the source do not
+ // match the rows in the matrix
+ /*
+ * The spec says it *MAY* throw an exception; the ref. impl does not do so...
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 5, 5, 3, new Point(0,0));
+ try
+ {
+ harness.check(op.getBounds2D(src), src.getBounds());
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ */
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java b/gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java
new file mode 100644
index 00000000..d9dabfee
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandCombineOp/getPoint2D.java
@@ -0,0 +1,58 @@
+/* getPoint2D.java -- some checks for the getPoint2D) method of the
+ BandCombineOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.BandCombineOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Point2D;
+import java.awt.image.BandCombineOp;
+
+/**
+ * Checks the getPoint2D method in the
+ * {@link BandCombineOp} class.
+ */
+public class getPoint2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getPoint2D");
+
+ // This is a simple test; the BandCombineOp should not change the
+ // geometry of the raster
+
+ float[][] matrix = new float[][] {{2, 7}};
+ BandCombineOp op = new BandCombineOp(matrix, null);
+ Point2D dest = null;
+ dest = op.getPoint2D(new Point2D.Double(3, 3), dest);
+ harness.check(dest, new Point2D.Double(3, 3));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Entries b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Entries
new file mode 100644
index 00000000..d5da0753
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Entries
@@ -0,0 +1,18 @@
+/constructors.java/1.1/Tue Jun 7 22:01:22 2005//
+/createCompatibleSampleModel.java/1.1/Tue Jun 7 22:01:22 2005//
+/createDataBuffer.java/1.1/Tue Jun 7 22:01:22 2005//
+/createSubsetSampleModel.java/1.1/Tue Jun 7 22:01:22 2005//
+/getDataElements.java/1.1/Tue Jun 7 22:01:22 2005//
+/getPixel.java/1.1/Tue Jun 7 22:01:22 2005//
+/getPixels.java/1.1/Tue Jun 7 22:01:22 2005//
+/getSample.java/1.1/Tue Jun 7 22:01:22 2005//
+/getSampleDouble.java/1.1/Tue Jun 7 22:01:22 2005//
+/getSampleFloat.java/1.1/Tue Jun 7 22:01:22 2005//
+/getSamples.java/1.1/Tue Jun 7 22:01:22 2005//
+/hashCode.java/1.1/Tue Jun 7 22:01:22 2005//
+/setDataElements.java/1.1/Tue Jun 7 22:01:22 2005//
+/setPixel.java/1.1/Tue Jun 7 22:01:22 2005//
+/setPixels.java/1.1/Tue Jun 7 22:01:22 2005//
+/setSample.java/1.1/Tue Jun 7 22:01:22 2005//
+/setSamples.java/1.1/Tue Jun 7 22:01:22 2005//
+D
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Repository b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Repository
new file mode 100644
index 00000000..8c93c99a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/BandedSampleModel
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Root b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/constructors.java b/gnu/testlet/java/awt/image/BandedSampleModel/constructors.java
new file mode 100644
index 00000000..480b5d68
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/constructors.java
@@ -0,0 +1,201 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+
+/**
+ * Some checks for the constructors in the {@link BandedSampleModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int)");
+
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_SHORT, 10, 20, 2);
+ harness.check(m.getDataType(), DataBuffer.TYPE_SHORT);
+ harness.check(m.getWidth(), 10);
+ harness.check(m.getHeight(), 20);
+ harness.check(m.getNumBands(), 2);
+ harness.check(m.getNumDataElements(), 2);
+ harness.check(m.getScanlineStride(), 10);
+ harness.check(m.getPixelStride(), 1);
+ int[] bankIndices = m.getBankIndices();
+ harness.check(bankIndices[0], 0);
+ harness.check(bankIndices[1], 1);
+
+ // check bad type
+ boolean pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_UNDEFINED, 10, 20, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero width
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 0, 20, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero height
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 0, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero bands
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 20, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int[], int[])");
+
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_SHORT, 10, 20, 10, new int[] {3, 2, 1}, new int[] {0, 0, 0});
+ harness.check(m.getDataType(), DataBuffer.TYPE_SHORT);
+ harness.check(m.getWidth(), 10);
+ harness.check(m.getHeight(), 20);
+ harness.check(m.getScanlineStride(), 10);
+ harness.check(m.getPixelStride(), 1);
+ harness.check(m.getNumBands(), 3);
+ harness.check(m.getBankIndices()[0], 3);
+ harness.check(m.getBankIndices()[1], 2);
+ harness.check(m.getBankIndices()[2], 1);
+ harness.check(m.getBandOffsets()[0], 0);
+ harness.check(m.getBandOffsets()[1], 0);
+ harness.check(m.getBandOffsets()[2], 0);
+
+ // check bad type
+ boolean pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_UNDEFINED, 10, 20, 10, new int[] {3, 2, 1}, new int[] {0, 0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero width
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 0, 20, 10, new int[] {3, 2, 1}, new int[] {0, 0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero height
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 0, 10, new int[] {3, 2, 1}, new int[] {0, 0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null indices
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 20, 10, null, new int[] {0, 0, 0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null offsets
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 20, 10, new int[] {3, 2, 1}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check number of bands (inferred from array lengths) conflicting
+ pass = false;
+ try
+ {
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 10, 20, 0, new int[] {2, 1}, new int[] {0, 0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/createCompatibleSampleModel.java b/gnu/testlet/java/awt/image/BandedSampleModel/createCompatibleSampleModel.java
new file mode 100644
index 00000000..d45df69f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/createCompatibleSampleModel.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+
+/**
+ * Some checks for the <code>createCompatibleSampleModel()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class createCompatibleSampleModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m1 = new BandedSampleModel(DataBuffer.TYPE_SHORT, 10, 20,
+ 10, new int[] {3, 2, 1}, new int[] {4, 5, 6});
+ BandedSampleModel m2 = (BandedSampleModel) m1.createCompatibleSampleModel(100, 200);
+ harness.check(m2.getDataType(), DataBuffer.TYPE_SHORT);
+ harness.check(m2.getWidth(), 100);
+ harness.check(m2.getHeight(), 200);
+ harness.check(m2.getScanlineStride(), 100);
+ harness.check(m2.getNumBands(), 3);
+ harness.check(m2.getBankIndices()[0], 3);
+ harness.check(m2.getBankIndices()[1], 2);
+ harness.check(m2.getBankIndices()[2], 1);
+ // TODO: the offsets get "compressed" whatever that refers to???
+ harness.check(m2.getBandOffsets()[0], 0);
+ harness.check(m2.getBandOffsets()[1], 0);
+ harness.check(m2.getBandOffsets()[2], 0);
+
+ // check zero width
+ boolean pass = false;
+ try
+ {
+ m2 = (BandedSampleModel) m1.createCompatibleSampleModel(0, 200);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero height
+ pass = false;
+ try
+ {
+ m2 = (BandedSampleModel) m1.createCompatibleSampleModel(100, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/createDataBuffer.java b/gnu/testlet/java/awt/image/BandedSampleModel/createDataBuffer.java
new file mode 100644
index 00000000..b55393a1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/createDataBuffer.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+
+/**
+ * Some checks for the <code>createDataBuffer()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class createDataBuffer implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_SHORT, 10, 20,
+ 10, new int[] {2, 1, 0}, new int[] {0, 0, 0});
+ DataBuffer b = m.createDataBuffer();
+ harness.check(b.getDataType(), DataBuffer.TYPE_SHORT);
+ harness.check(b.getNumBanks(), 3);
+ harness.check(b.getSize(), 200);
+
+ // another test
+ m = new BandedSampleModel(DataBuffer.TYPE_INT, 4, 6,
+ 10, new int[] {0, 1}, new int[] {0, 0});
+ b = m.createDataBuffer();
+ harness.check(b.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(b.getNumBanks(), 2);
+ harness.check(b.getSize(), 60);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/createSubsetSampleModel.java b/gnu/testlet/java/awt/image/BandedSampleModel/createSubsetSampleModel.java
new file mode 100644
index 00000000..fab8b7e1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/createSubsetSampleModel.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.RasterFormatException;
+
+/**
+ * Some checks for the <code>createSubsetSampleModel()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class createSubsetSampleModel implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m1 = new BandedSampleModel(DataBuffer.TYPE_SHORT, 10, 20,
+ 10, new int[] {2, 1, 0}, new int[] {4, 5, 6});
+ BandedSampleModel m2 = (BandedSampleModel) m1.createSubsetSampleModel(new int[] {0, 1});
+ harness.check(m2.getDataType(), DataBuffer.TYPE_SHORT);
+ harness.check(m2.getWidth(), 10);
+ harness.check(m2.getHeight(), 20);
+ harness.check(m2.getNumBands(), 2);
+ harness.check(m2.getBandOffsets()[0], 4);
+ harness.check(m2.getBandOffsets()[1], 5);
+
+ // try more bands than available
+ boolean pass = false;
+ try
+ {
+ m2 = (BandedSampleModel) m1.createSubsetSampleModel(new int[] {0, 1, 2, 3});
+ }
+ catch (RasterFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getDataElements.java b/gnu/testlet/java/awt/image/BandedSampleModel/getDataElements.java
new file mode 100644
index 00000000..0a57a447
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getDataElements.java
@@ -0,0 +1,99 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getDataElements()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getDataElements implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+
+ int[] elements = (int[]) m.getDataElements(1, 1, null, b);
+ harness.check(elements[0], 0xA3);
+ harness.check(elements[1], 0xB3);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ /* elements = (int[]) */ m.getDataElements(-1, 1, null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ /* elements = (int[]) */ m.getDataElements(1, -1, null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null data buffer
+ pass = false;
+ try
+ {
+ /* elements = (int[]) */ m.getDataElements(1, 1, null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getPixel.java b/gnu/testlet/java/awt/image/BandedSampleModel/getPixel.java
new file mode 100644
index 00000000..ebf68718
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getPixel.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getPixel()()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getPixel implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+ harness.check(m.getPixel(0, 0, (int[]) null, b)[0], 0xA0);
+ harness.check(m.getPixel(1, 0, (int[]) null, b)[0], 0xA1);
+ harness.check(m.getPixel(0, 1, (int[]) null, b)[0], 0xA2);
+ harness.check(m.getPixel(1, 1, (int[]) null, b)[0], 0xA3);
+ harness.check(m.getPixel(0, 2, (int[]) null, b)[0], 0xA4);
+ harness.check(m.getPixel(1, 2, (int[]) null, b)[0], 0xA5);
+ harness.check(m.getPixel(0, 0, (int[]) null, b)[1], 0xB0);
+ harness.check(m.getPixel(1, 0, (int[]) null, b)[1], 0xB1);
+ harness.check(m.getPixel(0, 1, (int[]) null, b)[1], 0xB2);
+ harness.check(m.getPixel(1, 1, (int[]) null, b)[1], 0xB3);
+ harness.check(m.getPixel(0, 2, (int[]) null, b)[1], 0xB4);
+ harness.check(m.getPixel(1, 2, (int[]) null, b)[1], 0xB5);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ /* int[] pixel = */ m.getPixel(-1, 0, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ /* int[] pixel = */ m.getPixel(0, -1, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixel array too small
+ pass = false;
+ try
+ {
+ /* int[] pixel = */ m.getPixel(0, 0, new int[1], b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null buffer
+ pass = false;
+ try
+ {
+ /* int[] pixel = */ m.getPixel(0, 0, (int[]) null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getPixels.java b/gnu/testlet/java/awt/image/BandedSampleModel/getPixels.java
new file mode 100644
index 00000000..46639300
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getPixels.java
@@ -0,0 +1,125 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+* Some checks for the <code>getPixels()</code> method in the
+* {@link BandedSampleModel} class.
+*/
+public class getPixels implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+
+ int[] pixels = m.getPixels(1, 1, 1, 2, (int[]) null, b);
+ harness.check(pixels[0], 0xA3);
+ harness.check(pixels[1], 0xB3);
+ harness.check(pixels[2], 0xA5);
+ harness.check(pixels[3], 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.getPixels(-1, 1, 1, 2, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.getPixels(1, -1, 1, 2, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative w
+ pass = false;
+ try
+ {
+ m.getPixels(1, 1, -1, 2, (int[]) null, b);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative h
+ pass = false;
+ try
+ {
+ m.getPixels(1, 1, 1, -1, (int[]) null, b);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null data buffer
+ pass = false;
+ try
+ {
+ m.getPixels(1, 1, 1, 1, (int[]) null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getSample.java b/gnu/testlet/java/awt/image/BandedSampleModel/getSample.java
new file mode 100644
index 00000000..1f709919
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getSample.java
@@ -0,0 +1,120 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getSample()()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getSample implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+ harness.check(m.getSample(0, 0, 0, b), 0xA0);
+ harness.check(m.getSample(1, 0, 0, b), 0xA1);
+ harness.check(m.getSample(0, 1, 0, b), 0xA2);
+ harness.check(m.getSample(1, 1, 0, b), 0xA3);
+ harness.check(m.getSample(0, 2, 0, b), 0xA4);
+ harness.check(m.getSample(1, 2, 0, b), 0xA5);
+ harness.check(m.getSample(0, 0, 1, b), 0xB0);
+ harness.check(m.getSample(1, 0, 1, b), 0xB1);
+ harness.check(m.getSample(0, 1, 1, b), 0xB2);
+ harness.check(m.getSample(1, 1, 1, b), 0xB3);
+ harness.check(m.getSample(0, 2, 1, b), 0xB4);
+ harness.check(m.getSample(1, 2, 1, b), 0xB5);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ /* int sample = */ m.getSample(-1, 0, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSample(0, -1, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative band
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSample(0, 0, -1, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null buffer
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSample(0, 0, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getSampleDouble.java b/gnu/testlet/java/awt/image/BandedSampleModel/getSampleDouble.java
new file mode 100644
index 00000000..62e61672
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getSampleDouble.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getSampleDouble()()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getSampleDouble implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xFFA0);
+ b.setElem(0, 1, 0xFFA1);
+ b.setElem(0, 2, 0xFFA2);
+ b.setElem(0, 3, 0xFFA3);
+ b.setElem(0, 4, 0xFFA4);
+ b.setElem(0, 5, 0xFFA5);
+ b.setElem(1, 0, 0xFFB0);
+ b.setElem(1, 1, 0xFFB1);
+ b.setElem(1, 2, 0xFFB2);
+ b.setElem(1, 3, 0xFFB3);
+ b.setElem(1, 4, 0xFFB4);
+ b.setElem(1, 5, 0xFFB5);
+ harness.check(m.getSampleDouble(0, 0, 0, b), 0xFFA0);
+ harness.check(m.getSampleDouble(1, 0, 0, b), 0xFFA1);
+ harness.check(m.getSampleDouble(0, 1, 0, b), 0xFFA2);
+ harness.check(m.getSampleDouble(1, 1, 0, b), 0xFFA3);
+ harness.check(m.getSampleDouble(0, 2, 0, b), 0xFFA4);
+ harness.check(m.getSampleDouble(1, 2, 0, b), 0xFFA5);
+ harness.check(m.getSampleDouble(0, 0, 1, b), 0xFFB0);
+ harness.check(m.getSampleDouble(1, 0, 1, b), 0xFFB1);
+ harness.check(m.getSampleDouble(0, 1, 1, b), 0xFFB2);
+ harness.check(m.getSampleDouble(1, 1, 1, b), 0xFFB3);
+ harness.check(m.getSampleDouble(0, 2, 1, b), 0xFFB4);
+ harness.check(m.getSampleDouble(1, 2, 1, b), 0xFFB5);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleDouble(-1, 0, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleDouble(0, -1, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative band
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleDouble(0, 0, -1, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null buffer
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleDouble(0, 0, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getSampleFloat.java b/gnu/testlet/java/awt/image/BandedSampleModel/getSampleFloat.java
new file mode 100644
index 00000000..d4651b31
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getSampleFloat.java
@@ -0,0 +1,120 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getSampleFloat()()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getSampleFloat implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+ harness.check(m.getSampleFloat(0, 0, 0, b), 0xA0);
+ harness.check(m.getSampleFloat(1, 0, 0, b), 0xA1);
+ harness.check(m.getSampleFloat(0, 1, 0, b), 0xA2);
+ harness.check(m.getSampleFloat(1, 1, 0, b), 0xA3);
+ harness.check(m.getSampleFloat(0, 2, 0, b), 0xA4);
+ harness.check(m.getSampleFloat(1, 2, 0, b), 0xA5);
+ harness.check(m.getSampleFloat(0, 0, 1, b), 0xB0);
+ harness.check(m.getSampleFloat(1, 0, 1, b), 0xB1);
+ harness.check(m.getSampleFloat(0, 1, 1, b), 0xB2);
+ harness.check(m.getSampleFloat(1, 1, 1, b), 0xB3);
+ harness.check(m.getSampleFloat(0, 2, 1, b), 0xB4);
+ harness.check(m.getSampleFloat(1, 2, 1, b), 0xB5);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleFloat(-1, 0, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleFloat(0, -1, 0, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative band
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleFloat(0, 0, -1, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null buffer
+ pass = false;
+ try
+ {
+ /* int sample = */ m.getSampleFloat(0, 0, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/getSamples.java b/gnu/testlet/java/awt/image/BandedSampleModel/getSamples.java
new file mode 100644
index 00000000..ab25422a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/getSamples.java
@@ -0,0 +1,127 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>getSamples()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class getSamples implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ b.setElem(0, 0, 0xA0);
+ b.setElem(0, 1, 0xA1);
+ b.setElem(0, 2, 0xA2);
+ b.setElem(0, 3, 0xA3);
+ b.setElem(0, 4, 0xA4);
+ b.setElem(0, 5, 0xA5);
+ b.setElem(1, 0, 0xB0);
+ b.setElem(1, 1, 0xB1);
+ b.setElem(1, 2, 0xB2);
+ b.setElem(1, 3, 0xB3);
+ b.setElem(1, 4, 0xB4);
+ b.setElem(1, 5, 0xB5);
+
+ int[] samples = m.getSamples(1, 1, 1, 2, 0, (int[]) null, b);
+ harness.check(samples[0], 0xA3);
+ harness.check(samples[1], 0xA5);
+
+ samples = m.getSamples(1, 1, 1, 2, 1, (int[]) null, b);
+ harness.check(samples[0], 0xB3);
+ harness.check(samples[1], 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.getSamples(-1, 1, 1, 2, 1, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.getSamples(1, -1, 1, 2, 1, (int[]) null, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative w
+ pass = false;
+ try
+ {
+ m.getSamples(1, 1, -1, 2, 1, (int[]) null, b);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative h
+ pass = false;
+ try
+ {
+ m.getSamples(1, 1, 1, -1, 1, (int[]) null, b);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 1, 1, 1, 1, (int[]) null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/hashCode.java b/gnu/testlet/java/awt/image/BandedSampleModel/hashCode.java
new file mode 100644
index 00000000..cca61db2
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/hashCode.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+
+/**
+ * Some checks for the <code>hashCode()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class hashCode implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // simply check that two identical models have the same hash code
+ BandedSampleModel m1 = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ BandedSampleModel m2 = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ harness.check(m1.hashCode(), m2.hashCode());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/setDataElements.java b/gnu/testlet/java/awt/image/BandedSampleModel/setDataElements.java
new file mode 100644
index 00000000..cdc9001f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/setDataElements.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>setDataElements()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class setDataElements implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer)");
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setDataElements(0, 0, new int[] {0xA0, 0xB0}, b);
+ m.setDataElements(1, 0, new int[] {0xA1, 0xB1}, b);
+ m.setDataElements(0, 1, new int[] {0xA2, 0xB2}, b);
+ m.setDataElements(1, 1, new int[] {0xA3, 0xB3}, b);
+ m.setDataElements(0, 2, new int[] {0xA4, 0xB4}, b);
+ m.setDataElements(1, 2, new int[] {0xA5, 0xB5}, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5) ;
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setDataElements(-1, 0, new int[] {0xA0, 0xB0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setDataElements(0, -1, new int[] {0xA0, 0xB0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check elements too short
+ pass = false;
+ try
+ {
+ m.setDataElements(0, 1, new int[] {0xA0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null elements
+ pass = false;
+ try
+ {
+ m.setDataElements(0, 1, null, b);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setDataElements(0, 0, new int[] {0xA0, 0xB0}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/setPixel.java b/gnu/testlet/java/awt/image/BandedSampleModel/setPixel.java
new file mode 100644
index 00000000..0c899703
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/setPixel.java
@@ -0,0 +1,125 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>setPixel()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class setPixel implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setPixel(0, 0, new int[] {0xA0, 0xB0}, b);
+ m.setPixel(1, 0, new int[] {0xA1, 0xB1}, b);
+ m.setPixel(0, 1, new int[] {0xA2, 0xB2}, b);
+ m.setPixel(1, 1, new int[] {0xA3, 0xB3}, b);
+ m.setPixel(0, 2, new int[] {0xA4, 0xB4}, b);
+ m.setPixel(1, 2, new int[] {0xA5, 0xB5}, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setPixel(-1, 0, new int[] {0xA0, 0xB0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setPixel(0, -1, new int[] {0xA0, 0xB0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check pixel array too short
+ pass = false;
+ try
+ {
+ m.setPixel(0, 0, new int[] {0xA0}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null pixel array
+ pass = false;
+ try
+ {
+ m.setPixel(0, 0, (int[]) null, b);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setPixel(0, 0, new int[] {0xA0}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/setPixels.java b/gnu/testlet/java/awt/image/BandedSampleModel/setPixels.java
new file mode 100644
index 00000000..92520211
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/setPixels.java
@@ -0,0 +1,121 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>setPixels()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class setPixels implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setPixels(0, 0, 1, 3, new int[] {0xA0, 0xB0, 0xA2, 0xB2, 0xA4, 0xB4}, b);
+ m.setPixels(1, 0, 1, 3, new int[] {0xA1, 0xB1, 0xA3, 0xB3, 0xA5, 0xB5}, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setPixels(-1, 0, 1, 3, new int[] {0xA0, 0xB0, 0xA2, 0xB2, 0xA4, 0xB4}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setPixels(0, -1, 1, 3, new int[] {0xA0, 0xB0, 0xA2, 0xB2, 0xA4, 0xB4}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check pixel array too short
+ pass = false;
+ try
+ {
+ m.setPixels(0, 0, 1, 3, new int[] {0xA0, 0xB0, 0xA2, 0xB2, 0xA4,/*0xB4*/}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null pixel array
+ pass = false;
+ try
+ {
+ m.setPixels(0, 0, 1, 3, (int[]) null, b);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setPixels(0, 0, 1, 3, new int[] {0xA0, 0xB0, 0xA2, 0xB2, 0xA4, 0xB4}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/setSample.java b/gnu/testlet/java/awt/image/BandedSampleModel/setSample.java
new file mode 100644
index 00000000..88f98d87
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/setSample.java
@@ -0,0 +1,293 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>setSample()()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class setSample implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testInt(harness);
+ testFloat(harness);
+ testDouble(harness);
+ }
+
+ public void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer)");
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setSample(0, 0, 0, 0xA0, b);
+ m.setSample(1, 0, 0, 0xA1, b);
+ m.setSample(0, 1, 0, 0xA2, b);
+ m.setSample(1, 1, 0, 0xA3, b);
+ m.setSample(0, 2, 0, 0xA4, b);
+ m.setSample(1, 2, 0, 0xA5, b);
+ m.setSample(0, 0, 1, 0xB0, b);
+ m.setSample(1, 0, 1, 0xB1, b);
+ m.setSample(0, 1, 1, 0xB2, b);
+ m.setSample(1, 1, 1, 0xB3, b);
+ m.setSample(0, 2, 1, 0xB4, b);
+ m.setSample(1, 2, 1, 0xB5, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setSample(-1, 0, 0, 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setSample(0, -1, 0, 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative band
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, -1, 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, 0, 0xFF, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ public void testFloat(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, float, DataBuffer)");
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setSample(0, 0, 0, (float) 0xA0, b);
+ m.setSample(1, 0, 0, (float) 0xA1, b);
+ m.setSample(0, 1, 0, (float) 0xA2, b);
+ m.setSample(1, 1, 0, (float) 0xA3, b);
+ m.setSample(0, 2, 0, (float) 0xA4, b);
+ m.setSample(1, 2, 0, (float) 0xA5, b);
+ m.setSample(0, 0, 1, (float) 0xB0, b);
+ m.setSample(1, 0, 1, (float) 0xB1, b);
+ m.setSample(0, 1, 1, (float) 0xB2, b);
+ m.setSample(1, 1, 1, (float) 0xB3, b);
+ m.setSample(0, 2, 1, (float) 0xB4, b);
+ m.setSample(1, 2, 1, (float) 0xB5, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setSample(-1, 0, 0, (float) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setSample(0, -1, 0, (float) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative band
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, -1, (float) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, 0, (float) 0xFF, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testDouble(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, double, DataBuffer)");
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setSample(0, 0, 0, (double) 0xA0, b);
+ m.setSample(1, 0, 0, (double) 0xA1, b);
+ m.setSample(0, 1, 0, (double) 0xA2, b);
+ m.setSample(1, 1, 0, (double) 0xA3, b);
+ m.setSample(0, 2, 0, (double) 0xA4, b);
+ m.setSample(1, 2, 0, (double) 0xA5, b);
+ m.setSample(0, 0, 1, (double) 0xB0, b);
+ m.setSample(1, 0, 1, (double) 0xB1, b);
+ m.setSample(0, 1, 1, (double) 0xB2, b);
+ m.setSample(1, 1, 1, (double) 0xB3, b);
+ m.setSample(0, 2, 1, (double) 0xB4, b);
+ m.setSample(1, 2, 1, (double) 0xB5, b);
+ harness.check(b.getElem(0, 0), 0xA0);
+ harness.check(b.getElem(0, 1), 0xA1);
+ harness.check(b.getElem(0, 2), 0xA2);
+ harness.check(b.getElem(0, 3), 0xA3);
+ harness.check(b.getElem(0, 4), 0xA4);
+ harness.check(b.getElem(0, 5), 0xA5);
+ harness.check(b.getElem(1, 0), 0xB0);
+ harness.check(b.getElem(1, 1), 0xB1);
+ harness.check(b.getElem(1, 2), 0xB2);
+ harness.check(b.getElem(1, 3), 0xB3);
+ harness.check(b.getElem(1, 4), 0xB4);
+ harness.check(b.getElem(1, 5), 0xB5);
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setSample(-1, 0, 0, (double) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setSample(0, -1, 0, (double) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative band
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, -1, (double) 0xFF, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setSample(0, 0, 0, (double) 0xFF, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BandedSampleModel/setSamples.java b/gnu/testlet/java/awt/image/BandedSampleModel/setSamples.java
new file mode 100644
index 00000000..ddb4e511
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BandedSampleModel/setSamples.java
@@ -0,0 +1,136 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.BandedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BandedSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the <code>setSamples()</code> method in the
+ * {@link BandedSampleModel} class.
+ */
+public class setSamples implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BandedSampleModel m = new BandedSampleModel(DataBuffer.TYPE_INT, 2, 3, 2);
+ DataBufferInt b = new DataBufferInt(6, 2);
+ m.setSamples(0, 0, 1, 3, 0, new int[] {0xA0, 0xA2, 0xA4}, b);
+ m.setSamples(1, 0, 1, 1, 0, new int[] {0xA1}, b);
+ m.setSamples(1, 1, 1, 2, 0, new int[] {0xA3, 0xA5}, b);
+ m.setSamples(0, 0, 1, 3, 1, new int[] {0xB0, 0xB2, 0xB4}, b);
+ m.setSamples(1, 0, 1, 3, 1, new int[] {0xB1, 0xB3, 0xB5}, b);
+ harness.check(b.getElem(0, 0), 0xA0); // check 1
+ harness.check(b.getElem(0, 1), 0xA1); // check 2
+ harness.check(b.getElem(0, 2), 0xA2); // check 3
+ harness.check(b.getElem(0, 3), 0xA3); // check 4
+ harness.check(b.getElem(0, 4), 0xA4); // check 5
+ harness.check(b.getElem(0, 5), 0xA5); // check 6
+ harness.check(b.getElem(1, 0), 0xB0); // check 7
+ harness.check(b.getElem(1, 1), 0xB1); // check 8
+ harness.check(b.getElem(1, 2), 0xB2); // check 9
+ harness.check(b.getElem(1, 3), 0xB3); // check 10
+ harness.check(b.getElem(1, 4), 0xB4); // check 11
+ harness.check(b.getElem(1, 5), 0xB5); // check 12
+
+ // check negative x
+ boolean pass = false;
+ try
+ {
+ m.setSamples(-1, 0, 0, 3, 0, new int[] {0xA0, 0xA2, 0xA4}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 13
+
+ // check negative y
+ pass = false;
+ try
+ {
+ m.setSamples(0, -1, 0, 3, 0, new int[] {0xA0, 0xA2, 0xA4}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 14
+
+ // check negative band
+ pass = false;
+ try
+ {
+ m.setSamples(0, 0, 1, 3, -1, new int[] {0xA0, 0xA2, 0xA4}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check sample array too short
+ pass = false;
+ try
+ {
+ m.setSamples(0, 0, 1, 3, -1, new int[] {0xA0, 0xA2, /*0xA4*/}, b);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null sample array
+ pass = false;
+ try
+ {
+ m.setSamples(0, 0, 1, 3, 0, (int[]) null, b);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null buffer
+ pass = false;
+ try
+ {
+ m.setSamples(0, 0, 1, 3, 0, new int[] {0xA0, 0xA2, 0xA4}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/BufferedImage/CVS/Entries b/gnu/testlet/java/awt/image/BufferedImage/CVS/Entries
new file mode 100644
index 00000000..51b457ce
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/CVS/Entries
@@ -0,0 +1,5 @@
+/constants.java/1.1/Thu Oct 19 20:40:44 2006//
+/constructors.java/1.1/Tue Jul 11 09:36:54 2006//
+/getSetRgb1Pixel.java/1.1/Sat Oct 21 17:06:58 2006/-kk/
+/getSubimage.java/1.1/Tue Oct 17 14:48:08 2006//
+D
diff --git a/gnu/testlet/java/awt/image/BufferedImage/CVS/Repository b/gnu/testlet/java/awt/image/BufferedImage/CVS/Repository
new file mode 100644
index 00000000..534bed21
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/BufferedImage
diff --git a/gnu/testlet/java/awt/image/BufferedImage/CVS/Root b/gnu/testlet/java/awt/image/BufferedImage/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/BufferedImage/constants.java b/gnu/testlet/java/awt/image/BufferedImage/constants.java
new file mode 100644
index 00000000..bfacfca1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/constants.java
@@ -0,0 +1,249 @@
+/* constants.java -- some checks for the constant image types in the
+ BufferedImage class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.BufferedImage;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+import java.awt.image.IndexColorModel;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class constants implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test_int_rgb(harness);
+ test_int_argb(harness);
+ test_int_argb_pre(harness);
+ test_3byte_bgr(harness);
+ test_4byte_abgr(harness);
+ test_4byte_abgr_pre(harness);
+ test_ushort_565_rgb(harness);
+ test_ushort_555_rgb(harness);
+ test_byte_gray(harness);
+ test_ushort_gray(harness);
+ test_byte_binary(harness);
+ test_byte_indexed(harness);
+ }
+
+ public void test_int_rgb(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_RGB);
+ harness.check(img.getColorModel().equals(new DirectColorModel(24, 0xff0000,
+ 0xff00,
+ 0xff)));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 10, 10,
+ new int[]{0xff0000,
+ 0xff00,
+ 0xff})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_int_argb(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);
+ harness.check(img.getColorModel().equals(new DirectColorModel(32, 0xff0000,
+ 0xff00,
+ 0xff,
+ 0xff000000)));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 10, 10,
+ new int[]{0xff0000,
+ 0xff00,
+ 0xff,
+ 0xff000000})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_int_argb_pre(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB_PRE);
+ harness.check(img.getColorModel().equals(new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ 32, 0xff0000,
+ 0xff00, 0xff,
+ 0xff000000,
+ true,
+ DataBuffer.TYPE_INT)));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 10, 10,
+ new int[]{0xff0000,
+ 0xff00,
+ 0xff,
+ 0xff000000})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_int_bgr(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_INT_BGR);
+ harness.check(img.getColorModel().equals(new DirectColorModel(24, 0xff,
+ 0xff00,
+ 0xff0000)));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 10, 10,
+ new int[]{0xff,
+ 0xff00,
+ 0xff0000})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_3byte_bgr(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_3BYTE_BGR);
+ harness.check(img.getColorModel().equals(new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ false, false,
+ BufferedImage.OPAQUE,
+ DataBuffer.TYPE_BYTE)));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel( DataBuffer.TYPE_BYTE,
+ 10, 10,
+ 3, 10 * 3,
+ new int[]{ 2, 1, 0 } )));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_4byte_abgr(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR);
+ harness.check(img.getColorModel().equals(new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ true, false,
+ BufferedImage.TRANSLUCENT,
+ DataBuffer.TYPE_BYTE)));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 10,
+ 4, 4*10,
+ new int[]{3, 2, 1, 0})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_4byte_abgr_pre(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR_PRE);
+ harness.check(img.getColorModel().equals(new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ true, true,
+ BufferedImage.TRANSLUCENT,
+ DataBuffer.TYPE_BYTE)));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 10,
+ 4, 4*10,
+ new int[]{3, 2, 1, 0})));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_ushort_565_rgb(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_USHORT_565_RGB);
+ harness.check(img.getColorModel().equals(new DirectColorModel( 16, 0xF800, 0x7E0, 0x1F )));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel( DataBuffer.TYPE_USHORT,
+ 10, 10,
+ new int[]{ 0xF800,
+ 0x7E0,
+ 0x1F } ) ));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_ushort_555_rgb(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_USHORT_555_RGB);
+ harness.check(img.getColorModel().equals(new DirectColorModel( 15, 0x7C00, 0x3E0, 0x1F )));
+ harness.check(img.getSampleModel().equals(new SinglePixelPackedSampleModel( DataBuffer.TYPE_USHORT,
+ 10, 10,
+ new int[]{ 0x7C00,
+ 0x3E0,
+ 0x1F } )));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_byte_gray(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_GRAY);
+ harness.check(img.getColorModel().equals(new ComponentColorModel( ColorSpace.getInstance( ColorSpace.CS_GRAY ),
+ new int[]{8}, false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_BYTE)));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel( DataBuffer.TYPE_BYTE,
+ 10, 10,
+ 1, 10, new int[]{ 0 } )));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_ushort_gray(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_USHORT_GRAY);
+ harness.check(img.getColorModel().equals(new ComponentColorModel( ColorSpace.getInstance( ColorSpace.CS_GRAY ),
+ new int[]{16}, false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_USHORT)));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel( DataBuffer.TYPE_USHORT,
+ 10, 10,
+ 1, 10, new int[]{ 0 } )));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_byte_binary(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_BINARY);
+ byte[] t = new byte[]{ 0, (byte)255 };
+ harness.check(img.getColorModel().equals(new IndexColorModel( 1, 2, t, t, t )));
+ harness.check(img.getSampleModel().equals(new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 10, 1)));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+
+ public void test_byte_indexed(TestHarness harness)
+ {
+ BufferedImage img = new BufferedImage(10, 10, BufferedImage.TYPE_BYTE_INDEXED);
+ byte[] r = new byte[256];
+ byte[] g = new byte[256];
+ byte[] b = new byte[256];
+ int index = 0;
+ for( int i = 0; i < 6; i++ )
+ for( int j = 0; j < 6; j++ )
+ for( int k = 0; k < 6; k++ )
+ {
+ r[ index ] = (byte)(i * 51);
+ g[ index ] = (byte)(j * 51);
+ b[ index ] = (byte)(k * 51);
+ index++;
+ }
+ while( index < 256 )
+ {
+ r[ index ] = g[ index ] = b[ index ] =
+ (byte)(18 + (index - 216) * 6);
+ index++;
+ }
+ harness.check(img.getColorModel().equals(new IndexColorModel( 8, 256, r, g, b )));
+ harness.check(img.getSampleModel().equals(new PixelInterleavedSampleModel( DataBuffer.TYPE_BYTE,
+ 10, 10,
+ 1, 10, new int[]{ 0 } )));
+ harness.check(img.isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ }
+}
diff --git a/gnu/testlet/java/awt/image/BufferedImage/constructors.java b/gnu/testlet/java/awt/image/BufferedImage/constructors.java
new file mode 100644
index 00000000..96fd7578
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/constructors.java
@@ -0,0 +1,115 @@
+/* constructors.java -- some checks for the constructors in the BufferedImage
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.BufferedImage;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int)");
+
+ // TYPE_BYTE_GRAY
+ BufferedImage image = new BufferedImage(10, 20,
+ BufferedImage.TYPE_BYTE_GRAY);
+ harness.check(image.getWidth(), 10);
+ harness.check(image.getHeight(), 20);
+ harness.check(image.getType(), BufferedImage.TYPE_BYTE_GRAY);
+ ColorModel cm = image.getColorModel();
+ harness.check(cm instanceof ComponentColorModel);
+ harness.check(cm.getColorSpace(),
+ ColorSpace.getInstance(ColorSpace.CS_GRAY));
+
+ // TYPE_USHORT_GRAY
+ image = new BufferedImage(10, 20, BufferedImage.TYPE_USHORT_GRAY);
+ harness.check(image.getWidth(), 10);
+ harness.check(image.getHeight(), 20);
+ harness.check(image.getType(), BufferedImage.TYPE_USHORT_GRAY);
+ cm = image.getColorModel();
+ harness.check(cm instanceof ComponentColorModel);
+ harness.check(cm.getColorSpace(),
+ ColorSpace.getInstance(ColorSpace.CS_GRAY));
+
+ // try zero width
+ boolean pass = false;
+ try
+ {
+ image = new BufferedImage(0, 20, BufferedImage.TYPE_BYTE_GRAY);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero height
+ pass = false;
+ try
+ {
+ image = new BufferedImage(10, 0, BufferedImage.TYPE_BYTE_GRAY);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bad type
+ pass = false;
+ try
+ {
+ image = new BufferedImage(10, 20, 666);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, IndexColorModel)");
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(ColorModel, WritableRaster, boolean, Hashtable)");
+ }
+}
diff --git a/gnu/testlet/java/awt/image/BufferedImage/getSetRgb1Pixel.java b/gnu/testlet/java/awt/image/BufferedImage/getSetRgb1Pixel.java
new file mode 100644
index 00000000..be6eecc2
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/getSetRgb1Pixel.java
@@ -0,0 +1,104 @@
+/* getSetRgb1Pixel.java -- Tests the work of the single pixel get/set Rgb
+ Copyright (C) 2006 Audrius Meskauskas
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.java.awt.image.BufferedImage;
+
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the getRgb and setRgb.
+ *
+ * @author Audrius Meskauskas
+ */
+public class getSetRgb1Pixel implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ testType(h, BufferedImage.TYPE_3BYTE_BGR, "TYPE_3BYTE_BGR");
+ testType(h, BufferedImage.TYPE_4BYTE_ABGR, "TYPE_4BYTE_ABGR");
+ testType(h, BufferedImage.TYPE_4BYTE_ABGR_PRE, "TYPE_4BYTE_ABGR_PRE");
+ testType(h, BufferedImage.TYPE_INT_ARGB, "TYPE_INT_ARGB");
+ testType(h, BufferedImage.TYPE_INT_ARGB_PRE, "TYPE_INT_ARGB_PRE");
+ testType(h, BufferedImage.TYPE_INT_BGR, "TYPE_INT_BGR");
+ testType(h, BufferedImage.TYPE_INT_RGB, "TYPE_INT_RGB");
+ }
+
+ public void testType(TestHarness h, int type, String typeName)
+ {
+ int w = 10;
+
+ BufferedImage b = new BufferedImage(w, w, type);
+
+ Color[][] colors = new Color[w][];
+
+ for (int i = 0; i < colors.length; i++)
+ {
+ colors[i] = new Color[w];
+ for (int j = 0; j < colors[i].length; j++)
+ {
+ colors[i][j] = new Color((int) (Math.random() * 255),
+ (int) (Math.random() * 255),
+ (int) (Math.random() * 255));
+ b.setRGB(i, j, colors[i][j].getRGB());
+ }
+ }
+
+ BufferedImage cloned = new BufferedImage(w, w, type);
+ b.copyData(cloned.getRaster());
+
+ for (int i = 0; i < colors.length; i++)
+ for (int j = 0; j < colors[i].length; j++)
+ {
+ if (!colors[i][j].equals(new Color(b.getRGB(i, j))))
+ {
+ h.fail("Failed " + typeName + ", " + colors[i][j] + " v "
+ + new Color(b.getRGB(i, j)));
+ return;
+ }
+ int blue = Color.blue.getRGB();
+ b.setRGB(i, j, blue);
+ if (b.getRGB(i, j) != blue)
+ {
+ h.fail("Failed " + typeName + " when resetting into blue " + blue
+ + " v " + b.getRGB(i, j));
+ return;
+ }
+ }
+
+ for (int i = 0; i < colors.length; i++)
+ for (int j = 0; j < colors[i].length; j++)
+ {
+ if (!colors[i][j].equals(new Color(cloned.getRGB(i, j))))
+ {
+ h.fail("Failed " + typeName + " on cloned image");
+ return;
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/BufferedImage/getSubimage.java b/gnu/testlet/java/awt/image/BufferedImage/getSubimage.java
new file mode 100644
index 00000000..e132ded8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/BufferedImage/getSubimage.java
@@ -0,0 +1,90 @@
+/* getSubimage.java -- some checks for the getSubimage() method in the
+ BufferedImage class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.BufferedImage;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.RasterFormatException;
+
+public class getSubimage implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Create initial image, fill with data
+ BufferedImage img = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
+
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 3; b++)
+ img.getRaster().setSample(x, y, b, x+y+b);
+
+ // Subimage with identical bounds
+ BufferedImage img2 = img.getSubimage(0, 0, 50, 50);
+
+ harness.check(img.getRaster() != img2.getRaster());
+ harness.check(img.getRaster().getDataBuffer(),
+ img2.getRaster().getDataBuffer());
+ harness.check(img.getSampleModel(), img2.getSampleModel());
+ harness.check(img.getColorModel(), img2.getColorModel());
+ harness.check(img2.getMinX(), 0);
+ harness.check(img2.getMinY(), 0);
+ harness.check(img2.getWidth(), 50);
+ harness.check(img2.getHeight(), 50);
+
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(img2.getRaster().getSample(x, y, b), x+y+b);
+
+ // Offset subimage with smaller bounds
+ img2 = img.getSubimage(20, 30, 15, 10);
+
+ harness.check(img.getRaster().getDataBuffer(),
+ img2.getRaster().getDataBuffer());
+ harness.check(img.getSampleModel(), img2.getSampleModel());
+ harness.check(img2.getMinX(), 0);
+ harness.check(img2.getMinY(), 0);
+ harness.check(img2.getWidth(), 15);
+ harness.check(img2.getHeight(), 10);
+
+ for (int x = 0; x < 15; x++)
+ for (int y = 0; y < 10; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(img2.getRaster().getSample(x, y, b), x+20 + y+30 +b);
+
+ // Subimage overflows original image bounds
+ try
+ {
+ img2 = img.getSubimage(40, 40, 20, 20);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Entries b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Entries
new file mode 100644
index 00000000..73475543
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Entries
@@ -0,0 +1,4 @@
+/constructors.java/1.1/Tue Jul 18 16:56:39 2006//
+/getTable.java/1.1/Tue Jul 18 16:56:39 2006//
+/lookupPixel.java/1.3/Tue Sep 5 16:03:54 2006//
+D
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Repository b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Repository
new file mode 100644
index 00000000..af412a46
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ByteLookupTable
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Root b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/constructors.java b/gnu/testlet/java/awt/image/ByteLookupTable/constructors.java
new file mode 100644
index 00000000..f640a808
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/constructors.java
@@ -0,0 +1,115 @@
+/* constructors.java -- some checks for the constructors in the ByteLookupTable
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ByteLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, byte[])");
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(7, bytes);
+ harness.check(t.getOffset(), 7);
+ harness.check(t.getNumComponents(), 1);
+ byte[][] table = t.getTable();
+ harness.check(table.length, 1);
+ harness.check(table[0] == bytes);
+
+ // try negative offset
+ boolean pass = false;
+ try
+ {
+ t = new ByteLookupTable(-1, bytes);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data
+ pass = false;
+ try
+ {
+ t = new ByteLookupTable(0, (byte[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, byte[][])");
+ byte[] bytesA = new byte[] {(byte) 0xAA, (byte) 0xBB, (byte) 0xCC};
+ byte[] bytesB = new byte[] {(byte) 0xDD, (byte) 0xEE, (byte) 0xFF};
+ byte[][] bytes = new byte[][] { bytesA, bytesB };
+ ByteLookupTable t = new ByteLookupTable(3, bytes);
+ harness.check(t.getOffset(), 3);
+ harness.check(t.getNumComponents(), 2);
+ byte[][] table = t.getTable();
+ harness.check(table.length, 2);
+ harness.check(table[0] == bytesA);
+ harness.check(table[1] == bytesB);
+ harness.check(table != bytes);
+
+ // try negative offset
+ boolean pass = false;
+ try
+ {
+ t = new ByteLookupTable(-1, bytes);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data
+ pass = false;
+ try
+ {
+ t = new ByteLookupTable(0, (byte[][]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/getTable.java b/gnu/testlet/java/awt/image/ByteLookupTable/getTable.java
new file mode 100644
index 00000000..2da9f70c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/getTable.java
@@ -0,0 +1,66 @@
+/* getTable.java -- some checks for the getLookUpTable() method in the
+ ByteLookupTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ByteLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+
+public class getTable implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1()");
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(7, bytes);
+ byte[][] table = t.getTable();
+ harness.check(table.length, 1);
+ harness.check(table[0] == bytes);
+ harness.check(t.getTable() == t.getTable());
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2()");
+ byte[] bytesA = new byte[] {(byte) 0xAA, (byte) 0xBB, (byte) 0xCC};
+ byte[] bytesB = new byte[] {(byte) 0xDD, (byte) 0xEE, (byte) 0xFF};
+ byte[][] bytes = new byte[][] { bytesA, bytesB };
+ ByteLookupTable t = new ByteLookupTable(3, bytes);
+ byte[][] table = t.getTable();
+ harness.check(table.length, 2);
+ harness.check(table[0] == bytesA);
+ harness.check(table[1] == bytesB);
+ harness.check(table != bytes);
+ harness.check(t.getTable() == t.getTable());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java b/gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java
new file mode 100644
index 00000000..941acb3d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ByteLookupTable/lookupPixel.java
@@ -0,0 +1,272 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ByteLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+
+/**
+ * Some checks for the lookupPixel() methods in the {@link ByteLookupTable} class.
+ */
+public class lookupPixel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testInt(harness);
+ testByte(harness);
+ testFailure(harness);
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int[], int[])");
+ byte[] data = {105, 104, 103, 102, 101, 100};
+ ByteLookupTable t = new ByteLookupTable(100, data);
+
+ // check 1-band source with 1-band lookup table
+ int[] src = new int[] {100};
+ int[] dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new int[] {101};
+ dst = new int[] {0};
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 1-band lookup table
+ src = new int[] {100, 101, 102};
+ try {
+ dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 104);
+ harness.check(dst[2], 103);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ src = new int[] {102, 103, 104};
+ dst = new int[] {0, 0, 0};
+ try {
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 103);
+ harness.check(dst[1], 102);
+ harness.check(dst[2], 101);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ // check 3-band source with 3-band lookup table
+ byte[][] data2 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ {125, 124, 123, 122, 121, 120}
+ };
+ ByteLookupTable t2 = new ByteLookupTable(100, data2);
+
+ int[] src2 = {100, 101, 102};
+ dst = t2.lookupPixel(src2, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 114);
+ harness.check(dst[2], 123);
+
+ src2 = new int[] {103, 104, 105};
+ dst = new int[] {0, 0, 0};
+ dst = t2.lookupPixel(src2, dst);
+ harness.check(dst[0], 102);
+ harness.check(dst[1], 111);
+ harness.check(dst[2], 120);
+
+ // check 1-band source with 2-band lookup table
+ byte[][] data3 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ };
+ ByteLookupTable t3 = new ByteLookupTable(100, data3);
+ src = new int[] {100};
+ dst = t3.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new int[] {101};
+ dst = new int[] {0};
+ dst = t3.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 2-band lookup table
+ try {
+ dst = t3.lookupPixel(src2, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ dst = new int[3];
+ try {
+ dst = t3.lookupPixel(src2, dst);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("(byte[], byte[])");
+ byte[] data = {105, 104, 103, 102, 101, 100};
+ ByteLookupTable t = new ByteLookupTable(100, data);
+
+ // check 1-band source with 1-band lookup table
+ byte[] src = new byte[] {100};
+ byte[] dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new byte[] {101};
+ dst = new byte[] {0};
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 1-band lookup table
+ src = new byte[] {100, 101, 102};
+ try {
+ dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 104);
+ harness.check(dst[2], 103);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ src = new byte[] {102, 103, 104};
+ dst = new byte[] {0, 0, 0};
+ try {
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 103);
+ harness.check(dst[1], 102);
+ harness.check(dst[2], 101);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ // check 3-band source with 3-band lookup table
+ byte[][] data2 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ {125, 124, 123, 122, 121, 120}
+ };
+ ByteLookupTable t2 = new ByteLookupTable(100, data2);
+ byte[] src2 = {100, 101, 102};
+ dst = t2.lookupPixel(src2, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 114);
+ harness.check(dst[2], 123);
+
+ src2 = new byte[] {103, 104, 105};
+ dst = new byte[] {0, 0, 0};
+ dst = t2.lookupPixel(src2, dst);
+ harness.check(dst[0], 102);
+ harness.check(dst[1], 111);
+ harness.check(dst[2], 120);
+
+ // check 1-band source with 2-band lookup table
+ byte[][] data3 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ };
+ ByteLookupTable t3 = new ByteLookupTable(100, data3);
+ src = new byte[] {100};
+ dst = t3.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new byte[] {101};
+ dst = new byte[1];
+ dst = t3.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3 band source, 2 band lookup table
+ try {
+ dst = t3.lookupPixel(src2, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ dst = new byte[3];
+ try {
+ dst = t3.lookupPixel(src2, dst);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+ }
+
+ // Test failures, ie, if the requested pixel is not in the table.
+ // It should throw array index out of bounds exceptions.
+ private void testFailure(TestHarness harness)
+ {
+ harness.checkPoint("not in table");
+ byte[] data = {105, 104, 103, 102, 101, 100};
+ ByteLookupTable t = new ByteLookupTable(100, data);
+
+ try
+ {
+ int[] src = new int[] {100, 102, 101, 120};
+ t.lookupPixel(src, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ byte[] src = new byte[] {120};
+ t.lookupPixel(src, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/CVS/Entries b/gnu/testlet/java/awt/image/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/image/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/image/CVS/Entries.Log b/gnu/testlet/java/awt/image/CVS/Entries.Log
new file mode 100644
index 00000000..75fd1882
--- /dev/null
+++ b/gnu/testlet/java/awt/image/CVS/Entries.Log
@@ -0,0 +1,31 @@
+A D/AffineTransformOp////
+A D/BandCombineOp////
+A D/BandedSampleModel////
+A D/BufferedImage////
+A D/ByteLookupTable////
+A D/ColorConvertOp////
+A D/ColorModel////
+A D/ComponentColorModel////
+A D/ComponentSampleModel////
+A D/ConvolveOp////
+A D/DataBuffer////
+A D/DataBufferByte////
+A D/DataBufferDouble////
+A D/DataBufferFloat////
+A D/DataBufferInt////
+A D/DataBufferShort////
+A D/DataBufferUShort////
+A D/DirectColorModel////
+A D/IndexColorModel////
+A D/Kernel////
+A D/LookupOp////
+A D/LookupTable////
+A D/MultiPixelPackedSampleModel////
+A D/PixelGrabber////
+A D/PixelInterleavedSampleModel////
+A D/Raster////
+A D/RescaleOp////
+A D/SampleModel////
+A D/ShortLookupTable////
+A D/SinglePixelPackedSampleModel////
+A D/WritableRaster////
diff --git a/gnu/testlet/java/awt/image/CVS/Repository b/gnu/testlet/java/awt/image/CVS/Repository
new file mode 100644
index 00000000..977b0372
--- /dev/null
+++ b/gnu/testlet/java/awt/image/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image
diff --git a/gnu/testlet/java/awt/image/CVS/Root b/gnu/testlet/java/awt/image/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Entries b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Entries
new file mode 100644
index 00000000..ebfbb432
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Entries
@@ -0,0 +1,8 @@
+/constructors.java/1.1/Tue Aug 15 21:19:28 2006//
+/createCompatibleDestImage.java/1.3/Thu Aug 24 19:00:04 2006//
+/createCompatibleDestRaster.java/1.2/Fri Aug 18 19:46:56 2006//
+/filterImage.java/1.2/Fri Aug 18 19:46:56 2006//
+/filterRaster.java/1.1/Tue Aug 15 21:19:28 2006//
+/getBounds2D.java/1.1/Tue Aug 15 21:19:28 2006//
+/getPoint2D.java/1.1/Tue Aug 15 21:19:28 2006//
+D
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Repository b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Repository
new file mode 100644
index 00000000..7cc4ae1f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ColorConvertOp
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Root b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/constructors.java b/gnu/testlet/java/awt/image/ColorConvertOp/constructors.java
new file mode 100644
index 00000000..01f82295
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/constructors.java
@@ -0,0 +1,225 @@
+/* constructors.java -- some checks for the constructors in the
+ ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_Profile;
+import java.awt.image.ColorConvertOp;
+import java.util.Arrays;
+
+/**
+ * Some checks for the constructors in the {@link ColorConvertOp} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(ColorSpace, ColorSpace, RenderingHints)");
+
+ // Simple test
+ ColorSpace srcCs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorSpace dstCs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
+ RenderingHints hints = new RenderingHints(RenderingHints.KEY_DITHERING,
+ RenderingHints.VALUE_DITHER_ENABLE);
+ hints.put(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ ColorConvertOp op = new ColorConvertOp(srcCs, dstCs, hints);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), hints);
+
+
+ // Null arguments
+ op = new ColorConvertOp(srcCs, dstCs, null);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), null);
+
+ try
+ {
+ op = new ColorConvertOp(null, dstCs, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ op = new ColorConvertOp(srcCs, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ op = new ColorConvertOp(null, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(ColorSpace, RenderingHints)");
+
+ // Simple test
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ RenderingHints hints = new RenderingHints(RenderingHints.KEY_DITHERING,
+ RenderingHints.VALUE_DITHER_ENABLE);
+ hints.put(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ ColorConvertOp op = new ColorConvertOp(cs, hints);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), hints);
+
+ // Null arguments
+ op = new ColorConvertOp(cs, null);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), null);
+
+ try
+ {
+ op = new ColorConvertOp((ColorSpace)null, (RenderingHints)null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(ICC_Profile[], RenderingHints)");
+
+ // Simple test
+ ICC_Profile[] profile = new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB),
+ ICC_Profile.getInstance(ColorSpace.CS_PYCC)};
+
+ RenderingHints hints = new RenderingHints(RenderingHints.KEY_DITHERING,
+ RenderingHints.VALUE_DITHER_ENABLE);
+ hints.put(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ ColorConvertOp op = new ColorConvertOp(profile, hints);
+
+ // Work around lack of ICC_Profile.equals()
+ harness.check(Arrays.equals(op.getICC_Profiles(), profile));
+ harness.check(op.getRenderingHints(), hints);
+
+ // Empty or too few profiles are not caught until filter(), so they are
+ // allowed here
+ try
+ {
+ op = new ColorConvertOp(new ICC_Profile[0], null);
+ harness.check(Arrays.equals(op.getICC_Profiles(), new ICC_Profile[0]));
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ profile = new ICC_Profile[]{ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB)};
+ op = new ColorConvertOp(profile, null);
+ harness.check(Arrays.equals(op.getICC_Profiles(), profile));
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Null arguments
+ op = new ColorConvertOp(profile, null);
+
+ // Work around lack of ICC_Profile.equals()
+ harness.check(Arrays.equals(op.getICC_Profiles(), profile));
+ harness.check(op.getRenderingHints(), null);
+
+ try
+ {
+ op = new ColorConvertOp((ICC_Profile[])null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(RenderingHints)");
+
+ // Simple test
+ RenderingHints hints = new RenderingHints(RenderingHints.KEY_DITHERING,
+ RenderingHints.VALUE_DITHER_ENABLE);
+ hints.put(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ ColorConvertOp op = new ColorConvertOp(hints);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), hints);
+
+ // Null arguments
+ op = new ColorConvertOp(null);
+
+ harness.check(op.getICC_Profiles(), null);
+ harness.check(op.getRenderingHints(), null);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java b/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java
new file mode 100644
index 00000000..1fc60387
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestImage.java
@@ -0,0 +1,372 @@
+/* createCompatibleDestImage.java -- some checks for the
+ createCompatibleDestImage() method of the ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_Profile;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+import java.awt.image.PixelInterleavedSampleModel;
+
+/**
+ * Checks for the createCompatibleDestImage method in the
+ * {@link ColorConvertOp} class.
+ */
+public class createCompatibleDestImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTest(harness);
+
+ // Try with all possible colorspaces
+ int[] models = new int[] {ColorSpace.CS_sRGB,
+ ColorSpace.CS_CIEXYZ,
+ ColorSpace.CS_GRAY,
+ ColorSpace.CS_LINEAR_RGB,
+ ColorSpace.CS_PYCC};
+
+ for (int i = 0; i < models.length; i++)
+ colorModelTest(harness, models[i]);
+
+ // Specify both source and dest colourspaces
+ for (int i = 0; i < models.length; i++)
+ for (int j = 0; j < models.length; j++)
+ colorModelTest(harness, models[i], models[j]);
+
+ // Specify profile list
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB),
+ ICC_Profile.getInstance(ColorSpace.CS_GRAY)});
+
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_GRAY),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB)});
+
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_GRAY),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ)});
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestImage");
+
+ // Simple test
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorConvertOp op = new ColorConvertOp(cs, null);
+
+ BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+ BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+ harness.check(dest.getSampleModel().getTransferType(),
+ img.getColorModel().getTransferType());
+
+ // Try a different colour model
+ img = new BufferedImage(25, 40, BufferedImage.TYPE_BYTE_GRAY);
+ DirectColorModel cm = new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff);
+ dest = op.createCompatibleDestImage(img, cm);
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), cm);
+ harness.check(dest.getSampleModel().getTransferType(), cm.getTransferType());
+
+ op = new ColorConvertOp(null);
+ dest = op.createCompatibleDestImage(img, img.getColorModel());
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+ harness.check(dest.getSampleModel().getTransferType(),
+ img.getColorModel().getTransferType());
+
+ // ColorConvertOp's ColorModel can be null, or createCompatibleDestImage's
+ // ColorModel can be null, but not both
+ try
+ {
+ dest = op.createCompatibleDestImage(img, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // This should probably go in the BufferedImage constructor
+ // Test all the default color models
+ private void colorModelTest(TestHarness harness, int cspace)
+ {
+ colorModelTest(harness, -1, cspace);
+ }
+
+ private void colorModelTest(TestHarness harness, int cspace, int cspace2)
+ {
+ ColorSpace cs;
+ ColorSpace cs2;
+ ColorConvertOp op;
+
+ if (cspace == -1)
+ {
+ cs2 = ColorSpace.getInstance(cspace2);
+ op = new ColorConvertOp(cs2, null);
+ }
+ else
+ {
+ cs = ColorSpace.getInstance(cspace);
+ cs2 = ColorSpace.getInstance(cspace2);
+ op = new ColorConvertOp(cs, cs2, null);
+ }
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ if (cspace == -1)
+ harness.checkPoint("colorspace " + cspace2 + ", type: " + type);
+ else
+ harness.checkPoint("src colorspace " + cspace + ", dest colorspace " + cspace2 + ", type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+ dest = op.createCompatibleDestImage(img, null);
+
+ // Standard check of common properties
+ harness.check(dest.isAlphaPremultiplied(), img.isAlphaPremultiplied());
+ harness.check(dest.getSampleModel() instanceof PixelInterleavedSampleModel);
+
+ harness.check(dest.getColorModel() instanceof ComponentColorModel);
+ harness.check(dest.getColorModel().isCompatibleSampleModel(dest.getSampleModel()));
+ harness.check(dest.getColorModel().getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dest.getColorModel().getColorSpace().getType(), cs2.getType());
+
+ harness.check(dest.getColorModel().hasAlpha(), img.getColorModel().hasAlpha());
+ harness.check(dest.getColorModel().getTransparency(), img.getColorModel().getTransparency());
+
+ harness.check(dest.getColorModel().getPixelSize(),
+ DataBuffer.getDataTypeSize(DataBuffer.TYPE_BYTE)
+ * dest.getRaster().getNumDataElements());
+
+ harness.check(dest.getRaster().getNumDataElements(),
+ dest.getColorModel().getNumComponents());
+ harness.check(dest.getRaster().getNumBands(),
+ dest.getRaster().getNumDataElements());
+
+ harness.check(dest.getSampleModel().getTransferType(),
+ DataBuffer.TYPE_BYTE);
+
+ // This ensures that we have the same defaults as the reference implementation
+ switch (type)
+ {
+ // Images with an extra alpha component
+ case BufferedImage.TYPE_INT_ARGB:
+ case BufferedImage.TYPE_INT_ARGB_PRE:
+ case BufferedImage.TYPE_4BYTE_ABGR:
+ case BufferedImage.TYPE_4BYTE_ABGR_PRE:
+ if (cspace2 == ColorSpace.CS_GRAY)
+ {
+ harness.check(dest.getColorModel().getNumComponents(), 2);
+ }
+ else
+ {
+ harness.check(dest.getColorModel().getNumComponents(), 4);
+ }
+
+ harness.check(dest.getColorModel().getNumColorComponents(),
+ dest.getColorModel().getNumComponents() - 1);
+
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.TRANSLUCENT);
+ harness.check(dest.getColorModel().hasAlpha(), true);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(),
+ (type == BufferedImage.TYPE_INT_ARGB_PRE
+ || type == BufferedImage.TYPE_4BYTE_ABGR_PRE));
+
+ harness.check(dest.getType(), BufferedImage.TYPE_CUSTOM);
+ break;
+
+ case BufferedImage.TYPE_INT_RGB:
+ case BufferedImage.TYPE_3BYTE_BGR:
+ case BufferedImage.TYPE_USHORT_565_RGB:
+ case BufferedImage.TYPE_USHORT_555_RGB:
+ case BufferedImage.TYPE_BYTE_GRAY:
+ case BufferedImage.TYPE_USHORT_GRAY:
+ if (cs2.getType() == ColorSpace.TYPE_GRAY)
+ {
+ // This fails, but due to a limitation in BufferedImage.
+ // Somehow, Sun is able to modify a BufferedImage after creating
+ // it based on a pre-defined type, without it being considered
+ // a custom type...
+
+ // harness.check(dest.getType(), BufferedImage.TYPE_BYTE_GRAY);
+
+ harness.check(dest.getColorModel().getNumComponents(), 1);
+ }
+ else
+ {
+ harness.check(dest.getType(), BufferedImage.TYPE_CUSTOM);
+ harness.check(dest.getColorModel().getNumComponents(), 3);
+ }
+
+ harness.check(dest.getColorModel().getNumColorComponents(),
+ dest.getColorModel().getNumComponents());
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.OPAQUE);
+ harness.check(dest.getColorModel().hasAlpha(), false);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), false);
+
+ break;
+ }
+ }
+ }
+
+
+ private void profileTest(TestHarness harness, ICC_Profile[] profile)
+ {
+ ColorConvertOp op = new ColorConvertOp(profile, null);
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ harness.checkPoint("profile " + profile[profile.length-1].getClass() + ", type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+ dest = op.createCompatibleDestImage(img, null);
+
+ harness.check(dest.getColorModel() instanceof ComponentColorModel);
+ harness.check(dest.getSampleModel() instanceof PixelInterleavedSampleModel);
+ harness.check(dest.getColorModel().isCompatibleSampleModel(dest.getSampleModel()));
+ harness.check(dest.getColorModel().getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dest.getColorModel().getColorSpace().getType(),
+ profile[profile.length-1].getColorSpaceType());
+
+ harness.check(dest.getRaster().getNumDataElements(),
+ dest.getColorModel().getNumComponents());
+ harness.check(dest.getRaster().getNumBands(), dest.getRaster().getNumDataElements());
+
+ harness.check(dest.getColorModel().getPixelSize(),
+ DataBuffer.getDataTypeSize(DataBuffer.TYPE_BYTE)
+ * dest.getRaster().getNumDataElements());
+
+ // This ensures that we have the same defaults as the reference implementation
+ switch (type)
+ {
+ case BufferedImage.TYPE_INT_ARGB:
+ case BufferedImage.TYPE_INT_ARGB_PRE:
+ case BufferedImage.TYPE_4BYTE_ABGR:
+ case BufferedImage.TYPE_4BYTE_ABGR_PRE:
+ if (profile[profile.length-1].getColorSpaceType() == ColorSpace.TYPE_GRAY)
+ {
+ harness.check(dest.getColorModel().getNumComponents(), 2);
+ }
+ else
+ {
+ harness.check(dest.getColorModel().getNumComponents(), 4);
+ }
+
+ harness.check(dest.getColorModel().getNumColorComponents(),
+ dest.getColorModel().getNumComponents() - 1);
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.TRANSLUCENT);
+ harness.check(dest.getColorModel().hasAlpha(), true);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(),
+ (type == BufferedImage.TYPE_INT_ARGB_PRE
+ || type == BufferedImage.TYPE_4BYTE_ABGR_PRE));
+
+ harness.check(dest.getType(), BufferedImage.TYPE_CUSTOM);
+ break;
+
+ case BufferedImage.TYPE_INT_RGB:
+ case BufferedImage.TYPE_3BYTE_BGR:
+ case BufferedImage.TYPE_USHORT_565_RGB:
+ case BufferedImage.TYPE_USHORT_555_RGB:
+ case BufferedImage.TYPE_BYTE_GRAY:
+ case BufferedImage.TYPE_USHORT_GRAY:
+ if (profile[profile.length-1].getColorSpaceType() == ColorSpace.TYPE_GRAY)
+ {
+ // This fails, but due to a limitation in BufferedImage.
+ // Somehow, Sun is able to modify a BufferedImage after creating
+ // it based on a pre-defined type, without it being considered
+ // a custom type...
+
+ // harness.check(dest.getType(), BufferedImage.TYPE_BYTE_GRAY);
+ harness.check(dest.getColorModel().getNumComponents(), 1);
+ }
+ else
+ {
+ harness.check(dest.getType(), BufferedImage.TYPE_CUSTOM);
+ harness.check(dest.getColorModel().getNumComponents(), 3);
+ }
+
+ harness.check(dest.getColorModel().getNumColorComponents(),
+ dest.getColorModel().getNumComponents());
+ harness.check(dest.getColorModel().getTransparency(), ColorModel.OPAQUE);
+ harness.check(dest.getColorModel().hasAlpha(), false);
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), false);
+
+ break;
+ }
+ }
+ }
+}
+
+
+ \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..a7dd449a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/createCompatibleDestRaster.java
@@ -0,0 +1,256 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method of the ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_Profile;
+import java.awt.image.ColorConvertOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.Raster;
+import java.util.Arrays;
+
+/**
+ * Checks for the createCompatibleDestRaster method in the
+ * {@link ColorConvertOp} class.
+ */
+public class createCompatibleDestRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestRaster");
+
+ simpleTest(harness);
+
+ // Try with all possible colorspaces
+ int[] models = new int[] {ColorSpace.CS_sRGB,
+ ColorSpace.CS_CIEXYZ,
+ ColorSpace.CS_GRAY,
+ ColorSpace.CS_LINEAR_RGB,
+ ColorSpace.CS_PYCC};
+
+ for (int i = 0; i < models.length; i++)
+ for (int j = 0; j < models.length; j++)
+ colorModelTest(harness, models[i], models[j]);
+
+ // Specify profile list
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB),
+ ICC_Profile.getInstance(ColorSpace.CS_GRAY)});
+
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_GRAY),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB)});
+
+ profileTest(harness, new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_GRAY),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ)});
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ // This method can never be used with these constructors
+ ColorConvertOp op = new ColorConvertOp(null);
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 10, 10,
+ 3, new Point(5, 5));
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ op = new ColorConvertOp(cs, null);
+ try
+ {
+ op.createCompatibleDestRaster(src);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void colorModelTest(TestHarness harness, int cspace1, int cspace2)
+ {
+ harness.checkPoint("two colorspaces defined, " + cspace1 + ", " + cspace2);
+
+ ColorSpace cs = ColorSpace.getInstance(cspace1);
+ ColorSpace cs2 = ColorSpace.getInstance(cspace2);
+ ColorConvertOp op = new ColorConvertOp(cs, cs2, null);
+ int bands = cs2.getNumComponents();
+
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, bands, new Point(5, 5));
+
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getHeight(), src.getHeight());
+ harness.check(dst.getWidth(), src.getWidth());
+ harness.check(dst.getNumBands(), bands);
+ harness.check(dst.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getDataBuffer().getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getNumDataElements(), cs2.getNumComponents());
+ harness.check(dst.getSampleModel() instanceof PixelInterleavedSampleModel);
+ harness.check(dst.getDataBuffer() instanceof DataBufferByte);
+
+ PixelInterleavedSampleModel sm = (PixelInterleavedSampleModel)dst.getSampleModel();
+
+ harness.check(sm.getPixelStride(), cs2.getNumComponents());
+ harness.check(sm.getScanlineStride(), cs2.getNumComponents() * src.getWidth());
+ int[] expected = new int[cs2.getNumComponents()];
+
+ for (int i = 0; i < expected.length; i++)
+ expected[i] = i;
+ harness.check(Arrays.equals(sm.getBandOffsets(), expected));
+
+ harness.check(dst.getDataBuffer().getNumBanks(), 1);
+ harness.check(dst.getDataBuffer().getOffset(), 0);
+ harness.check(dst.getDataBuffer().getSize(), src.getHeight() * src.getWidth() * cs2.getNumComponents());
+
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different type
+ src = Raster.createBandedRaster(DataBuffer.TYPE_USHORT, 25, 40, bands, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), bands);
+ harness.check(dst.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getDataBuffer().getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getNumDataElements(), cs2.getNumComponents());
+ harness.check(dst.getSampleModel() instanceof PixelInterleavedSampleModel);
+ harness.check(dst.getDataBuffer() instanceof DataBufferByte);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try different number of bands in the source; the destination should
+ // ignore this and always have ColorSpace.getNumComponents() bands
+ for (int i = 1; i < bands + 5; i++)
+ {
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, i, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), cs2.getNumComponents());
+ harness.check(dst.getNumDataElements(), cs2.getNumComponents());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+ }
+
+ private void profileTest(TestHarness harness, ICC_Profile[] profiles)
+ {
+ harness.checkPoint("profile test, " + profiles[profiles.length-1].getClass().getName());
+
+ ColorConvertOp op = new ColorConvertOp(profiles, null);
+
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getHeight(), src.getHeight());
+ harness.check(dst.getWidth(), src.getWidth());
+
+ // It appears we always use TYPE_BYTE regardless of the source raster
+ harness.check(dst.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getDataBuffer().getDataType(), DataBuffer.TYPE_BYTE);
+
+ // GRAY is the exception with 1 band; all others have 3
+ if (profiles[profiles.length-1].getColorSpaceType() == ColorSpace.TYPE_GRAY)
+ {
+ harness.check(dst.getNumBands(), 1);
+ harness.check(dst.getNumDataElements(), 1);
+ }
+ else
+ {
+ harness.check(dst.getNumBands(), 3);
+ harness.check(dst.getNumDataElements(), 3);
+ }
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try different numbers of bands in the source; the destination will
+ // ignore this and always have ColorSpace.getNumComponents() bands
+
+ // Essentially the dest raster will be identical to the case above,
+ // regardless of number of source bands (which makes sense)
+ for (int i = 1; i < 5; i++)
+ {
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, i, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(dst.getDataBuffer().getDataType(), DataBuffer.TYPE_BYTE);
+
+ if (profiles[profiles.length-1].getColorSpaceType() == ColorSpace.TYPE_GRAY)
+ {
+ harness.check(dst.getNumBands(), 1);
+ harness.check(dst.getNumDataElements(), 1);
+ }
+ else
+ {
+ harness.check(dst.getNumBands(), 3);
+ harness.check(dst.getNumDataElements(), 3);
+ }
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java b/gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java
new file mode 100644
index 00000000..38506586
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/filterImage.java
@@ -0,0 +1,248 @@
+/* filterImage.java -- some checks for the filter(Image) method of the
+ ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.color.ColorSpace;
+import java.awt.color.ICC_Profile;
+import java.awt.geom.Line2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link ColorConvertOp} class.
+ */
+public class filterImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) from ColorConvertOp(RenderingHints)");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ ColorConvertOp op = new ColorConvertOp(null);
+
+ // Src and dst images can be the same (unlike some other Ops)
+ try
+ {
+ op.filter(img, img);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst are different sizes (not allowed, unlike some other Ops)
+ BufferedImage dst = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Dst cannot be null for this ColorConvertOp
+ try
+ {
+ op.filter(img, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Can I check that the actual filter operation happened properly?
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) from ColorConvertOp(ColorSpace, RenderingHints)");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorConvertOp op = new ColorConvertOp(cs, null);
+
+ // Check null destination
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ // Any other checks to run? Show the data was filtered properly?
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Check non-null destination
+ try
+ {
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
+ dst = op.filter(img, dst);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ // Any other checks to run?
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Can we introduce an alpha?
+ try
+ {
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ dst = op.filter(img, dst);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ // Any other checks to run?
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Different destination type: this should end up as GRAY, via RGB
+ // (but how can I test the intermediate step?)
+ try
+ {
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY);
+ dst = op.filter(img, dst);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_GRAY);
+ // Any other checks to run?
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) from ColorConvertOp(ColorSpace, ColorSpace, RenderingHints)");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ ColorSpace cs1 = ColorSpace.getInstance(ColorSpace.CS_CIEXYZ);
+ //ColorSpace cs2 = ColorSpace.getInstance(ColorSpace.CS_PYCC);
+ // PYCC is not implemented
+ ColorSpace cs2 = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorConvertOp op = new ColorConvertOp(cs1, cs2, null);
+
+ // Simpler tests (ie, src != dest) are skipped, assume they work here if
+ // they worked earlier
+
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ // PYCC would have been ColorSpace.TYPE_3CLR
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB_PRE);
+ op.filter(img, dst);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Can I check that the actual filter operation happened properly?
+ }
+
+ private void test4(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) from ColorConvertOp(ICC_Profile[], RenderingHints)");
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ ICC_Profile[] profile = new ICC_Profile[] {ICC_Profile.getInstance(ColorSpace.CS_LINEAR_RGB),
+ ICC_Profile.getInstance(ColorSpace.CS_CIEXYZ),
+ ICC_Profile.getInstance(ColorSpace.CS_sRGB)};
+ ColorConvertOp op = new ColorConvertOp(profile, null);
+
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY);
+ dst = op.filter(img, dst);
+ harness.check(dst.getColorModel().getColorSpace().getType(), ColorSpace.TYPE_GRAY);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Can I check that the actual filter operation happened properly?
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/filterRaster.java b/gnu/testlet/java/awt/image/ColorConvertOp/filterRaster.java
new file mode 100644
index 00000000..b6d9dfcf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/filterRaster.java
@@ -0,0 +1,144 @@
+/* filterRaster.java -- some checks for the filter(Raster) method of the
+ ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.color.ColorSpace;
+import java.awt.geom.Line2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the filter(Raster) method in the {@link ColorConvertOp} class.
+ */
+public class filterRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("filter(Raster)");
+
+ // Create a raster to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ ColorSpace cs1 = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorSpace cs2 = ColorSpace.getInstance(ColorSpace.CS_GRAY);
+ ColorConvertOp op = new ColorConvertOp(cs1, cs2, null);
+ WritableRaster raster = img.getRaster();
+
+ // Src and dst rasters cannot be the same (different from
+ // filter(BufferedImage, BufferedImage) )
+ try
+ {
+ op.filter(raster, raster);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Src and dst are different sizes (not allowed, unlike some other Ops)
+ BufferedImage dst = new BufferedImage(30, 40, BufferedImage.TYPE_BYTE_GRAY);
+ WritableRaster raster2 = dst.getRaster();
+ try
+ {
+ op.filter(raster, raster2);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Null destination
+ WritableRaster dstRaster = op.filter(raster, null);
+ harness.check(dstRaster.getTransferType(), op.createCompatibleDestRaster(raster).getTransferType());
+ harness.check(dstRaster.getNumBands(), op.createCompatibleDestRaster(raster).getNumBands());
+ harness.check(dstRaster.getNumDataElements(), op.createCompatibleDestRaster(raster).getNumDataElements());
+
+ // Incompatible constructor (ie, not enough information)
+ op = new ColorConvertOp(null);
+ try
+ {
+ op.filter(raster, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ op = new ColorConvertOp(cs1, null);
+ try
+ {
+ op.filter(raster, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Destination raster incompatible with defined conversion;
+ // ie, with this conversion, cs2 is TYPE_GRAY thus a dest raster of
+ // TYPE_RGB will have the wrong number of data elements
+ op = new ColorConvertOp(cs1, cs2, null);
+ dstRaster = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB).getRaster();
+
+ try
+ {
+ op.filter(raster, dstRaster);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Also true if source raster is incompatible
+ raster = new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY).getRaster();
+ try
+ {
+ op.filter(raster, raster2);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/getBounds2D.java b/gnu/testlet/java/awt/image/ColorConvertOp/getBounds2D.java
new file mode 100644
index 00000000..ec6a5292
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/getBounds2D.java
@@ -0,0 +1,61 @@
+/* getBounds2D.java -- some checks for the getBounds2D() method of the
+ ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.color.ColorSpace;
+import java.awt.image.ColorConvertOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the getBounds2D method in the
+ * {@link ColorConvertOp} class.
+ */
+public class getBounds2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getBounds2D");
+
+ // This is a simple test; the Op should not change the
+ // dimensions of the raster
+
+ WritableRaster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 5, 5, 1, new Point(0,0));
+ ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ null);
+ harness.check(op.getBounds2D(src), src.getBounds());
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ColorConvertOp/getPoint2D.java b/gnu/testlet/java/awt/image/ColorConvertOp/getPoint2D.java
new file mode 100644
index 00000000..c90dc982
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorConvertOp/getPoint2D.java
@@ -0,0 +1,59 @@
+/* getPoint2D.java -- some checks for the getPoint2D) method of the
+ ColorConvertOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ColorConvertOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.color.ColorSpace;
+import java.awt.geom.Point2D;
+import java.awt.image.ColorConvertOp;
+
+/**
+ * Checks the getPoint2D method in the
+ * {@link ColorConvertOp} class.
+ */
+public class getPoint2D implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getPoint2D");
+
+ // This is a simple test; the Op should not change the
+ // geometry of the raster
+
+ ColorConvertOp op = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ null);
+ Point2D dest = null;
+ dest = op.getPoint2D(new Point2D.Double(3, 3), dest);
+ harness.check(dest, new Point2D.Double(3, 3));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ColorModel/CVS/Entries b/gnu/testlet/java/awt/image/ColorModel/CVS/Entries
new file mode 100644
index 00000000..80af50ae
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/CVS/Entries
@@ -0,0 +1,5 @@
+/MyColorModel.java/1.2/Mon Sep 25 15:35:00 2006//
+/constructors.java/1.2/Wed May 21 14:17:55 2008//
+/getComponentSize.java/1.1/Tue May 31 09:44:12 2005//
+/getRGBdefault.java/1.1/Tue May 31 09:44:12 2005//
+D
diff --git a/gnu/testlet/java/awt/image/ColorModel/CVS/Repository b/gnu/testlet/java/awt/image/ColorModel/CVS/Repository
new file mode 100644
index 00000000..a8137fd9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ColorModel
diff --git a/gnu/testlet/java/awt/image/ColorModel/CVS/Root b/gnu/testlet/java/awt/image/ColorModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ColorModel/MyColorModel.java b/gnu/testlet/java/awt/image/ColorModel/MyColorModel.java
new file mode 100644
index 00000000..9a9d5fcb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/MyColorModel.java
@@ -0,0 +1,67 @@
+/* MyColorModel.java -- a subclass of ColorModel used for testing.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.awt.image.ColorModel;
+
+import java.awt.color.ColorSpace;
+import java.awt.image.ColorModel;
+import java.awt.image.WritableRaster;
+
+public class MyColorModel extends ColorModel
+{
+ public MyColorModel(int bits)
+ {
+ super(bits);
+ }
+
+ public MyColorModel(int pixel_bits, int[] bits, ColorSpace cspace,
+ boolean hasAlpha, boolean isAlphaPremultiplied, int transparency,
+ int transferType)
+ {
+ super(pixel_bits, bits, cspace, hasAlpha, isAlphaPremultiplied,
+ transparency, transferType);
+ }
+
+ public int getAlpha(int pixel) {
+ return 0;
+ }
+
+ public int getBlue(int pixel) {
+ return 0;
+ }
+
+ public int getGreen(int pixel) {
+ return 0;
+ }
+
+ public int getRed(int pixel) {
+ return 0;
+ }
+
+ public ColorModel coerceData(WritableRaster raster,
+ boolean isAlphaPremultiplied)
+ {
+ coerceDataWorker(raster, isAlphaPremultiplied);
+ return this;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ColorModel/constructors.java b/gnu/testlet/java/awt/image/ColorModel/constructors.java
new file mode 100644
index 00000000..8e3ea8bb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/constructors.java
@@ -0,0 +1,168 @@
+/* constructors.java -- some checks for the constructors in the ColorModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyColorModel
+
+package gnu.testlet.java.awt.image.ColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.DataBuffer;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ MyColorModel cm = new MyColorModel(8);
+ harness.check(cm.getNumColorComponents(), 3);
+ harness.check(cm.getNumComponents(), 4);
+ harness.check(cm.getPixelSize(), 8);
+ harness.check(cm.getColorSpace(), ColorSpace.getInstance(
+ ColorSpace.CS_sRGB));
+ harness.check(cm.isAlphaPremultiplied(), false);
+ harness.check(cm.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(cm.getTransferType(), DataBuffer.TYPE_BYTE);
+
+ cm = new MyColorModel(16);
+ harness.check(cm.getNumColorComponents(), 3);
+ harness.check(cm.getNumComponents(), 4);
+ harness.check(cm.getPixelSize(), 16);
+ harness.check(cm.getColorSpace(), ColorSpace.getInstance(
+ ColorSpace.CS_sRGB));
+ harness.check(cm.isAlphaPremultiplied(), false);
+ harness.check(cm.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(cm.getTransferType(), DataBuffer.TYPE_USHORT);
+
+ cm = new MyColorModel(32);
+ harness.check(cm.getNumColorComponents(), 3);
+ harness.check(cm.getNumComponents(), 4);
+ harness.check(cm.getPixelSize(), 32);
+ harness.check(cm.getColorSpace(), ColorSpace.getInstance(
+ ColorSpace.CS_sRGB));
+ harness.check(cm.isAlphaPremultiplied(), false);
+ harness.check(cm.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(cm.getTransferType(), DataBuffer.TYPE_INT);
+
+ cm = new MyColorModel(64);
+ harness.check(cm.getNumColorComponents(), 3);
+ harness.check(cm.getNumComponents(), 4);
+ harness.check(cm.getPixelSize(), 64);
+ harness.check(cm.getColorSpace(), ColorSpace.getInstance(
+ ColorSpace.CS_sRGB));
+ harness.check(cm.isAlphaPremultiplied(), false);
+ harness.check(cm.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(cm.getTransferType(), DataBuffer.TYPE_UNDEFINED);
+
+ boolean pass = false;
+ try
+ {
+ cm = new MyColorModel(0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int[], ColorSpace, boolean, boolean, int, int)");
+ MyColorModel cm = new MyColorModel(96, new int[] {32, 32, 32},
+ ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_INT);
+ harness.check(cm.getNumColorComponents(), 3);
+ harness.check(cm.getNumComponents(), 3);
+ harness.check(cm.getPixelSize(), 96);
+ harness.check(cm.getColorSpace(), ColorSpace.getInstance(ColorSpace.CS_sRGB));
+ harness.check(cm.isAlphaPremultiplied(), false);
+ harness.check(cm.getTransparency(), Transparency.OPAQUE);
+ harness.check(cm.getTransferType(), DataBuffer.TYPE_INT);
+
+ // try 0 for pixel_bits
+ boolean pass = false;
+ try
+ {
+ cm = new MyColorModel(0, new int[] {32, 32, 32},
+ ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_INT);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null bits array
+ pass = false;
+ try
+ {
+ cm = new MyColorModel(96, null,
+ ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_INT);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a null ColorSpace
+ pass = false;
+ try
+ {
+ cm = new MyColorModel(96, new int[] {32, 32, 32},
+ null, false, false,
+ Transparency.OPAQUE, DataBuffer.TYPE_INT);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a bad transparency
+ pass = false;
+ try
+ {
+ cm = new MyColorModel(96, new int[] {32, 32, 32},
+ ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false,
+ -1, DataBuffer.TYPE_INT);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ColorModel/getComponentSize.java b/gnu/testlet/java/awt/image/ColorModel/getComponentSize.java
new file mode 100644
index 00000000..03340330
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/getComponentSize.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ColorModel;
+
+/**
+ * Some tests for the getComponentSize() method in the {@link ColorModel} class.
+ */
+public class getComponentSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ ColorModel rgb = ColorModel.getRGBdefault();
+ int[] sizes = rgb.getComponentSize();
+ harness.check(sizes.length, 4);
+ harness.check(sizes[0], 8);
+ harness.check(sizes[1], 8);
+ harness.check(sizes[2], 8);
+ harness.check(sizes[3], 8);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ ColorModel rgb = ColorModel.getRGBdefault();
+ harness.check(rgb.getComponentSize(0), 8);
+ harness.check(rgb.getComponentSize(1), 8);
+ harness.check(rgb.getComponentSize(2), 8);
+ harness.check(rgb.getComponentSize(3), 8);
+
+ boolean pass = false;
+ try
+ {
+ rgb.getComponentSize(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ rgb.getComponentSize(4);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ColorModel/getRGBdefault.java b/gnu/testlet/java/awt/image/ColorModel/getRGBdefault.java
new file mode 100644
index 00000000..ad30db20
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ColorModel/getRGBdefault.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+
+/**
+ * Some tests for the getRGBdefault() method in the {@link ColorModel} class.
+ */
+public class getRGBdefault implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ColorModel rgb = ColorModel.getRGBdefault();
+ harness.check(rgb instanceof DirectColorModel); // 1
+ harness.check(rgb.getPixelSize(), 32); // 2
+ harness.check(rgb.getNumColorComponents(), 3); // 3
+ harness.check(rgb.getNumComponents(), 4); // 4
+ harness.check(rgb.getComponentSize(0), 8); // 5
+ harness.check(rgb.getComponentSize(1), 8); // 6
+ harness.check(rgb.getComponentSize(2), 8); // 7
+ harness.check(rgb.getComponentSize(3), 8); // 8
+ harness.check(rgb.getTransparency(), Transparency.TRANSLUCENT); // 9
+ harness.check(rgb.getTransferType(), DataBuffer.TYPE_INT); // 10
+ harness.check(rgb.isAlphaPremultiplied(), false); // 11
+ harness.check(rgb.getColorSpace(), ColorSpace.getInstance(ColorSpace.CS_sRGB)); // 12
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Entries b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Entries
new file mode 100644
index 00000000..7f65ddf7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Entries
@@ -0,0 +1,3 @@
+/coerceData.java/1.1/Mon Sep 25 15:35:00 2006//
+/createCompatibleSampleModel.java/1.2/Thu Apr 15 21:27:52 2004//
+D
diff --git a/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Repository b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Repository
new file mode 100644
index 00000000..d8cfadba
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ComponentColorModel
diff --git a/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Root b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentColorModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ComponentColorModel/coerceData.java b/gnu/testlet/java/awt/image/ComponentColorModel/coerceData.java
new file mode 100644
index 00000000..f03cc204
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentColorModel/coerceData.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+
+// 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.java.awt.image.ComponentColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.color.ColorSpace;
+import java.awt.image.BandedSampleModel;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+import java.awt.image.WritableRaster;
+
+/**
+ * Some checks for the coerceData method in the {@link ComponentColorModel}
+ * class.
+ */
+public class coerceData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("coerceData with BandedSampleModel");
+ runTest(harness, new BandedSampleModel(DataBuffer.TYPE_BYTE,
+ 50, 50, 4));
+
+ harness.checkPoint("coerceData with ComponentSampleModel");
+ runTest(harness, new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 50, 50, 4, 200,
+ new int[]{0, 1, 2, 3}));
+
+ // MultiPixelPackedSampleModel not allowed, since that sample model can
+ // only represent one-banded images. We should check to ensure failure
+ // is consistent.
+
+ harness.checkPoint("coerceData with PixelInterleavedSampleModel");
+ runTest(harness, new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE,
+ 50, 50, 4, 200,
+ new int[]{0, 1, 2, 3}));
+
+ // Combinations of a ComponentColorModel with SinglePixelPackedSampleModel
+ // are not allowed.
+ }
+
+ private void runTest(TestHarness harness, SampleModel sample)
+ {
+ // Create and popular raster for testing
+ WritableRaster rast = Raster.createWritableRaster(sample, new Point(0,0));
+
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ if (b < 3)
+ rast.setSample(x, y, b, (float)x+y+b);
+ else
+ rast.setSample(x, y, b, (float)(x+y));
+
+ ComponentColorModel ccm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ true, false,
+ ColorModel.BITMASK,
+ DataBuffer.TYPE_BYTE);
+
+ harness.check(ccm.isAlphaPremultiplied(), false);
+
+ // Check to ensure data is not changed needlessly
+ ColorModel resultCM = ccm.coerceData(rast, false);
+ harness.check(resultCM.getClass().equals(ccm.getClass()));
+ harness.check(resultCM.isAlphaPremultiplied(), false);
+ harness.check(ccm, resultCM);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ harness.check(rast.getSample(x, y, b), (x+y+b));
+ else
+ harness.check(rast.getSampleFloat(x, y, b), (x+y));
+ }
+
+ // Coerce data into a premultiplied state
+ resultCM = ccm.coerceData(rast, true);
+
+ // Ensure we're still using the same color model!
+ harness.check(resultCM.getClass().equals(ccm.getClass()));
+ harness.check(resultCM.isAlphaPremultiplied(), true);
+ harness.check(! (ccm == resultCM)); // object is cloned...
+
+ // Check values
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ harness.check(rast.getSample(x, y, b),
+ Math.round((x+y+b)*((x+y)/(float)255)));
+ else
+ harness.check(rast.getSampleFloat(x, y, b), x+y);
+ }
+
+ // Make a copy of the raster, to compare against for the next test
+ WritableRaster rast2 = Raster.createWritableRaster(sample, new Point(0,0));
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ rast2.setSample(x, y, b,
+ rast.getSample(x, y, b));
+
+ // And do the reverse.. un-multiply
+ harness.check(resultCM.isAlphaPremultiplied(), true);
+ ColorModel resultCM2 = resultCM.coerceData(rast, false);
+ harness.check(resultCM2.getClass().equals(resultCM.getClass()));
+ harness.check(resultCM2.isAlphaPremultiplied(), false);
+ harness.check(! (resultCM == resultCM2));
+
+ // Check values
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ {
+ // Do some trickery to work around differing floating-point
+ // precision (a division equalling 0.49999 will round up or
+ // down unpredictably)
+ float expected = rast2.getSample(x, y, b)/((x+y)/((float)255));
+ if (expected - (int)expected > 0.49
+ && expected - (int)expected < 0.51)
+ harness.check(rast.getSample(x, y, b) == (int)expected
+ || rast.getSample(x, y, b) == (int)expected + 1);
+ else
+ harness.check(rast.getSample(x, y, b),Math.round(expected));
+ }
+ else
+ harness.check(rast.getSampleFloat(x, y, b), (x+y));
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentColorModel/createCompatibleSampleModel.java b/gnu/testlet/java/awt/image/ComponentColorModel/createCompatibleSampleModel.java
new file mode 100644
index 00000000..89bfb999
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentColorModel/createCompatibleSampleModel.java
@@ -0,0 +1,210 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.ComponentColorModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.*;
+import java.util.Arrays;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class createCompatibleSampleModel
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ test_BYTE(h);
+ test_USHORT(h);
+ test_SHORT(h);
+ test_INT(h);
+ test_FLOAT(h);
+ test_DOUBLE(h);
+ }
+
+
+ private void test_BYTE(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("BYTE");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new int[] { 2, 2, 2 },
+ /* alpha */ false,
+ /* premultipliedAlpha */ false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_BYTE)
+ .createCompatibleSampleModel(2, 3);
+
+ h.check(sm instanceof PixelInterleavedSampleModel); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_BYTE); // Check #2.
+ h.check(sm.getWidth(), 2); // Check #3.
+ h.check(sm.getHeight(), 3); // Check #4.
+ h.check(sm.getNumBands(), 3); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 8, 8, 8 }));
+ h.check(((ComponentSampleModel) sm).getOffset(1, 1), 9); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0, 1, 2 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 18); // Check #9.
+ }
+
+
+ private void test_USHORT(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("USHORT");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new int[] { 8, 2, 3, 1 },
+ /* alpha */ true,
+ /* premultipliedAlpha */ false,
+ Transparency.BITMASK,
+ DataBuffer.TYPE_USHORT)
+ .createCompatibleSampleModel(4, 3);
+
+ h.check(sm instanceof PixelInterleavedSampleModel); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_USHORT); // Check #2.
+ h.check(sm.getWidth(), 4); // Check #3.
+ h.check(sm.getHeight(), 3); // Check #4.
+ h.check(sm.getNumBands(), 4); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 16, 16, 16, 16 }));
+ h.check(((ComponentSampleModel) sm).getOffset(1, 1), 20); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0, 1, 2, 3 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 48); // Check #9.
+ }
+
+
+ private void test_SHORT(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("SHORT");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new int[] { 5, 5, 6 },
+ /* alpha */ false,
+ /* premultipliedAlpha */ false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_SHORT)
+ .createCompatibleSampleModel(2, 3);
+
+ h.check(sm.getClass(), ComponentSampleModel.class); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_SHORT); // Check #2.
+ h.check(sm.getWidth(), 2); // Check #3.
+ h.check(sm.getHeight(), 3); // Check #4.
+ h.check(sm.getNumBands(), 3); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 16, 16, 16 }));
+ h.check(((ComponentSampleModel) sm).getOffset(1, 1), 9); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0, 1, 2 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 18); // Check #9.
+ }
+
+
+ private void test_INT(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("INT");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY),
+ new int[] { 24 },
+ /* alpha */ false,
+ /* premultipliedAlpha */ false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_INT)
+ .createCompatibleSampleModel(2, 3);
+
+ h.check(sm.getClass(), ComponentSampleModel.class); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_INT); // Check #2.
+ h.check(sm.getWidth(), 2); // Check #3.
+ h.check(sm.getHeight(), 3); // Check #4.
+ h.check(sm.getNumBands(), 1); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 32 }));
+ h.check(((ComponentSampleModel) sm).getOffset(1, 1), 3); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 6); // Check #9.
+ }
+
+
+ private void test_FLOAT(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("FLOAT");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new int[] { 32, 32, 32, 32 },
+ /* alpha */ true,
+ /* premultipliedAlpha */ false,
+ Transparency.TRANSLUCENT,
+ DataBuffer.TYPE_FLOAT)
+ .createCompatibleSampleModel(4, 2);
+
+ h.check(sm.getClass(), ComponentSampleModel.class); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_FLOAT); // Check #2.
+ h.check(sm.getWidth(), 4); // Check #3.
+ h.check(sm.getHeight(), 2); // Check #4.
+ h.check(sm.getNumBands(), 4); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 32, 32, 32, 32 }));
+ h.check(((ComponentSampleModel) sm).getOffset(3, 1), 28); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0, 1, 2, 3 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 32); // Check #9.
+ }
+
+
+ private void test_DOUBLE(TestHarness h)
+ {
+ SampleModel sm;
+
+ h.checkPoint("DOUBLE");
+ sm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ new int[] { 64, 64, 64, 64 },
+ /* alpha */ true,
+ /* premultipliedAlpha */ true,
+ Transparency.TRANSLUCENT,
+ DataBuffer.TYPE_DOUBLE)
+ .createCompatibleSampleModel(2, 2);
+
+ h.check(sm.getClass(), ComponentSampleModel.class); // Check #1.
+ h.check(sm.getTransferType(), DataBuffer.TYPE_DOUBLE); // Check #2.
+ h.check(sm.getWidth(), 2); // Check #3.
+ h.check(sm.getHeight(), 2); // Check #4.
+ h.check(sm.getNumBands(), 4); // Check #5.
+ h.check(Arrays.equals(sm.getSampleSize(), // Check #6.
+ new int[] { 64, 64, 64, 64 }));
+ h.check(((ComponentSampleModel) sm).getOffset(1, 1), 12); // Check #7.
+ h.check(Arrays.equals(((ComponentSampleModel) sm).getBandOffsets(),
+ new int[] { 0, 1, 2, 3 })); // Check #8.
+ h.check(sm.createDataBuffer().getSize(), 16); // Check #9.
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Entries b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Entries
new file mode 100644
index 00000000..1e157952
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Entries
@@ -0,0 +1,26 @@
+/MyComponentSampleModel.java/1.1/Mon Jul 17 16:34:25 2006//
+/constructors.java/1.4/Wed May 21 14:17:55 2008//
+/createCompatibleSampleModel.java/1.1/Wed Jul 19 04:26:44 2006//
+/createDataBuffer.java/1.2/Tue Jul 18 16:56:39 2006//
+/createSubsetSampleModel.java/1.1/Wed Jul 19 04:26:44 2006//
+/equals.java/1.1/Mon Jul 17 16:34:25 2006//
+/getBandOffsets.java/1.1/Wed Jul 19 04:26:44 2006//
+/getDataElements.java/1.1/Wed Jul 19 04:26:44 2006//
+/getNumDataElements.java/1.1/Wed Jul 19 04:26:44 2006//
+/getOffset.java/1.1/Tue Jul 18 16:56:39 2006//
+/getPixel.java/1.2/Wed Jul 19 05:14:50 2006//
+/getPixelStride.java/1.1/Wed Jul 19 04:26:44 2006//
+/getPixels.java/1.1/Wed Jul 19 04:26:44 2006//
+/getSample.java/1.1/Tue Jul 18 16:56:39 2006//
+/getSampleDouble.java/1.1/Tue Jul 18 16:56:39 2006//
+/getSampleFloat.java/1.1/Tue Jul 18 16:56:39 2006//
+/getSampleSize.java/1.1/Wed Jul 19 04:26:44 2006//
+/getSamples.java/1.1/Wed Jul 19 04:26:44 2006//
+/getScanlineStride.java/1.1/Wed Jul 19 04:26:44 2006//
+/hashCode.java/1.1/Mon Jul 17 16:34:25 2006//
+/setDataElements.java/1.1/Wed Jul 19 04:26:44 2006//
+/setPixel.java/1.1/Wed Jul 19 04:26:44 2006//
+/setPixels.java/1.1/Wed Jul 19 04:26:44 2006//
+/setSample.java/1.1/Wed Jul 19 04:26:44 2006//
+/setSamples.java/1.1/Wed Jul 19 04:26:44 2006//
+D
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Repository b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Repository
new file mode 100644
index 00000000..8851bb79
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ComponentSampleModel
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Root b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/MyComponentSampleModel.java b/gnu/testlet/java/awt/image/ComponentSampleModel/MyComponentSampleModel.java
new file mode 100644
index 00000000..d3a2211d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/MyComponentSampleModel.java
@@ -0,0 +1,51 @@
+/* MyComponentSampleModel.java -- provides access to protected attributes.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+
+public class MyComponentSampleModel extends ComponentSampleModel
+{
+ public MyComponentSampleModel(int dataType, int w, int h, int pixelStride,
+ int scanlineStride, int[] bandOffsets)
+ {
+ super(dataType, w, h, pixelStride, scanlineStride, bandOffsets);
+ }
+
+ public MyComponentSampleModel(int dataType, int w, int h, int pixelStride,
+ int scanlineStride, int[] bandOffsets, int[] bankIndices)
+ {
+ super(dataType, w, h, pixelStride, scanlineStride, bandOffsets);
+ }
+
+ public int[] getBandOffsetsDirect()
+ {
+ return this.bandOffsets;
+ }
+
+ public int[] getBankIndicesDirect()
+ {
+ return this.bankIndices;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java b/gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java
new file mode 100644
index 00000000..abac192f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/constructors.java
@@ -0,0 +1,320 @@
+/* constructors.java -- some checks for the constructors in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyComponentSampleModel
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.util.Arrays;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testDefensiveCopies(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("testConstructor1()");
+
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 20, 3, 30, new int[] {0, 1, 2});
+ harness.check(m.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(m.getWidth(), 10);
+ harness.check(m.getHeight(), 20);
+ harness.check(m.getPixelStride(), 3);
+ harness.check(m.getScanlineStride(), 30);
+ harness.check(Arrays.equals(m.getBandOffsets(), new int[] {0, 1, 2}));
+
+ // try bad type
+ boolean pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_UNDEFINED, 10, 20, 3, 30,
+ new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero width
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 0, 20, 3, 30,
+ new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero height
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10, 0, 3, 30,
+ new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative pixel stride
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10, 20, -1, 30,
+ new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative scanline stride
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 3, -1,
+ new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try width * height > Integer.MAX_VALUE
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 3,
+ Integer.MAX_VALUE / 2, 3, 30, new int[] {0, 1, 2});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null band offsets
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 3, 30, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, int[], int[])");
+
+ int[] bankIndices = new int[] {0, 1};
+ int[] bandOffsets = new int[] {0, 0};
+
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 1, 25, bankIndices, new int[] {0, 0});
+ harness.check(m.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m.getWidth(), 22);
+ harness.check(m.getHeight(), 11);
+ harness.check(m.getPixelStride(), 1);
+ harness.check(m.getNumBands(), 2);
+ harness.check(m.getNumDataElements(), 2);
+ harness.check(Arrays.equals(m.getBankIndices(), new int[] {0, 1}));
+ harness.check(m.getBankIndices() != bankIndices); // not the same instance
+ harness.check(Arrays.equals(m.getBandOffsets(), bandOffsets));
+ harness.check(m.getBandOffsets() != bandOffsets); // not the same instance
+ // check unknown data type
+ boolean pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_UNDEFINED, 22,
+ 11, 1, 25, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check w = 0
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 0,
+ 11, 1, 25, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check h = 0
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 0, 1, 25, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check w * h exceeds Integer.MAX_VALUE
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, Integer.MAX_VALUE - 1,
+ 2, 1, 25, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixelStride < 0
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, -1, 25, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try scanlineStride = 0
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 1, -1, new int[] {0, 1}, new int[] {0, 0});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null bankIndices
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22, 11, 1, 25, null,
+ new int[] {0, 0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try empty bankIndices
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22, 11, 1, 25,
+ new int[0], new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null bandOffsets
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22, 11, 1, 25,
+ new int[] {0, 0}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try arrays of different lengths
+ pass = false;
+ try
+ {
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 22, 11, 1, 25,
+ new int[1], new int[2]);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testDefensiveCopies(TestHarness harness)
+ {
+ harness.checkPoint("testDefensiveCopies()");
+ int[] bandOffsets = new int[] {0, 1, 2};
+ MyComponentSampleModel m = new MyComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 20, 3, 30, bandOffsets);
+ harness.check(bandOffsets != m.getBandOffsetsDirect());
+ harness.check(Arrays.equals(bandOffsets, m.getBandOffsetsDirect()));
+
+ int[] bankIndices = new int[] {0, 0, 0};
+ MyComponentSampleModel m2 = new MyComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 20, 3, 30, bandOffsets, bankIndices);
+ harness.check(bandOffsets != m2.getBandOffsetsDirect());
+ harness.check(Arrays.equals(bandOffsets, m2.getBandOffsetsDirect()));
+ harness.check(bankIndices != m2.getBankIndicesDirect());
+ harness.check(Arrays.equals(bankIndices, m2.getBankIndicesDirect()));
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/createCompatibleSampleModel.java b/gnu/testlet/java/awt/image/ComponentSampleModel/createCompatibleSampleModel.java
new file mode 100644
index 00000000..bf02dbca
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/createCompatibleSampleModel.java
@@ -0,0 +1,50 @@
+/* createCompatibleSampleModel.java -- some checks for the
+ createCompatibleSampleModel() method in the ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.util.Arrays;
+
+public class createCompatibleSampleModel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 1, 25, new int[] {1, 2}, new int[] {3, 4});
+ SampleModel m2 = m1.createCompatibleSampleModel(33, 44);
+ harness.check(m2 instanceof ComponentSampleModel);
+ harness.check(m2.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m2.getWidth(), 33);
+ harness.check(m2.getHeight(), 44);
+ harness.check(m2.getNumBands(), 2);
+ harness.check(Arrays.equals(m1.getBandOffsets(), new int[] {3, 4}));
+ harness.check(Arrays.equals(m1.getBankIndices(), new int[] {1, 2}));
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java b/gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java
new file mode 100644
index 00000000..e63c6c7e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/createDataBuffer.java
@@ -0,0 +1,83 @@
+/* createDataBuffer.java -- some checks for the createDataBuffer() method in
+ the ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class createDataBuffer implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testSingleBand(harness);
+ testMultiBand(harness);
+ }
+
+ public void testSingleBand(TestHarness harness)
+ {
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, 1, 30, new int[] {0, 1, 2});
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 582);
+
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 10, 1, 5,
+ new int[] {0, 1, 2});
+ db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 52);
+
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 10, 1, 6,
+ new int[] {0, 1, 2});
+ db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 61);
+
+ m = new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 10, 2, 10,
+ new int[] {0, 1});
+ db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 100);
+ }
+
+ public void testMultiBand(TestHarness harness)
+ {
+ harness.checkPoint("testMultiBand()");
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, 1, 10, new int[] {0, 1, 2}, new int[] {0, 0, 0});
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(db.getNumBanks(), 3);
+ harness.check(db.getSize(), 200);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/createSubsetSampleModel.java b/gnu/testlet/java/awt/image/ComponentSampleModel/createSubsetSampleModel.java
new file mode 100644
index 00000000..f12b61a8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/createSubsetSampleModel.java
@@ -0,0 +1,47 @@
+/* createSubsetSampleModel.java -- some checks for the createSubsetSampleModel()
+ method in the ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+
+public class createSubsetSampleModel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 2, 44, new int[] {0, 1});
+ SampleModel m2 = m1.createSubsetSampleModel(new int[] {1});
+ harness.check(m2 instanceof ComponentSampleModel);
+ harness.check(m2.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m2.getWidth(), 22);
+ harness.check(m2.getHeight(), 11);
+ harness.check(m2.getNumBands(), 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/equals.java b/gnu/testlet/java/awt/image/ComponentSampleModel/equals.java
new file mode 100644
index 00000000..097d63ca
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/equals.java
@@ -0,0 +1,78 @@
+/* equals.java -- some checks for the equals() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class equals implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 10, 20, 3, 40, new int[] {0, 1, 2});
+ ComponentSampleModel m2 = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 10, 20, 3, 40, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+
+ m1 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 20, 3, 40, new int[] {0, 1, 2});
+ harness.check(!m1.equals(m2));
+ m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 10, 20, 3, 40, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+
+ m1 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 20, 3, 40, new int[] {0, 1, 2});
+ harness.check(!m1.equals(m2));
+ m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 20, 3, 40, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+
+ m1 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 3, 40, new int[] {0, 1, 2});
+ harness.check(!m1.equals(m2));
+ m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 3, 40, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+
+ m1 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 4, 40, new int[] {0, 1, 2});
+ harness.check(!m1.equals(m2));
+ m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 4, 40, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+
+ m1 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 4, 40, new int[] {0, 2, 1});
+ harness.check(!m1.equals(m2));
+ m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE,
+ 9, 19, 4, 40, new int[] {0, 2, 1});
+ harness.check(m1.equals(m2));
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getBandOffsets.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getBandOffsets.java
new file mode 100644
index 00000000..7e542cfb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getBandOffsets.java
@@ -0,0 +1,48 @@
+/* getBandOffsets.java -- some checks for the getBandOffsets() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.util.Arrays;
+
+public class getBandOffsets implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ int[] bo = new int[] {1, 2};
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 33, 1, 23, bo);
+ int[] bo1 = m1.getBandOffsets();
+ harness.check(Arrays.equals(bo1, new int[] {1, 2}));
+ int[] bo2 = m1.getBandOffsets();
+ harness.check(bo1 != bo2);
+ bo[1] = 3;
+ harness.check(m1.getBandOffsets()[1], 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getDataElements.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getDataElements.java
new file mode 100644
index 00000000..2222ff71
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getDataElements.java
@@ -0,0 +1,72 @@
+/* getDataElements.java -- some checks for the getDataElements() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+public class getDataElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ for (int i = 0; i < 12; i++)
+ db.setElem(i, i);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ Object elements = m.getDataElements(0, 0, 2, 1, null, db);
+ int[] de = (int[]) elements;
+ harness.check(de.length, 4);
+ harness.check(de[0], 0);
+ harness.check(de[1], 1);
+ harness.check(de[2], 2);
+ harness.check(de[3], 3);
+
+ // try passing in a result array
+ int[] result = new int[4];
+ de = (int[]) m.getDataElements(0, 0, 2, 1, result, db);
+ harness.check(de[0], 0);
+ harness.check(de[1], 1);
+ harness.check(de[2], 2);
+ harness.check(de[3], 3);
+ harness.check(de == result);
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getDataElements(0, 0, 2, 1, result, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getNumDataElements.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getNumDataElements.java
new file mode 100644
index 00000000..5333f209
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getNumDataElements.java
@@ -0,0 +1,41 @@
+/* getNumDataElements.java -- some checks for the getNumDataElements() method
+ in the ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class getNumDataElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ harness.check(m.getNumDataElements(), 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getOffset.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getOffset.java
new file mode 100644
index 00000000..2c1bbf31
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getOffset.java
@@ -0,0 +1,78 @@
+/* getOffset.java -- some checks for the getOffset() methods in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class getOffset implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5,
+ 10, 3, 15, new int[] {0, 1, 2});
+ harness.check(m.getOffset(0, 0), 0);
+ harness.check(m.getOffset(1, 0), 3);
+ harness.check(m.getOffset(2, 0), 6);
+ harness.check(m.getOffset(3, 0), 9);
+ harness.check(m.getOffset(4, 0), 12);
+ harness.check(m.getOffset(5, 0), 15);
+ harness.check(m.getOffset(0, 1), 15);
+ harness.check(m.getOffset(1, 1), 18);
+ harness.check(m.getOffset(2, 1), 21);
+ harness.check(m.getOffset(3, 1), 24);
+ harness.check(m.getOffset(4, 1), 27);
+ harness.check(m.getOffset(5, 1), 30);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int)");
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5,
+ 10, 3, 15, new int[] {0, 1, 2});
+ harness.check(m.getOffset(0, 0, 1), 1);
+ harness.check(m.getOffset(1, 0, 1), 4);
+ harness.check(m.getOffset(2, 0, 1), 7);
+ harness.check(m.getOffset(3, 0, 1), 10);
+ harness.check(m.getOffset(4, 0, 1), 13);
+ harness.check(m.getOffset(5, 0, 1), 16);
+ harness.check(m.getOffset(0, 1, 1), 16);
+ harness.check(m.getOffset(1, 1, 1), 19);
+ harness.check(m.getOffset(2, 1, 1), 22);
+ harness.check(m.getOffset(3, 1, 1), 25);
+ harness.check(m.getOffset(4, 1, 1), 28);
+ harness.check(m.getOffset(5, 1, 1), 31);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java
new file mode 100644
index 00000000..e0dc0bfb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixel.java
@@ -0,0 +1,277 @@
+/* getPixel.java -- some checks for the getPixel() methods in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.util.Arrays;
+
+public class getPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int[], DataBuffer)");
+ SampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5, 10,
+ 3, 16, new int[] {0, 2, 1});
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (int[]) null, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3}));
+
+ // try x < 0
+ boolean pass = false;
+ try
+ {
+ m.getPixel(-1, 1, (int[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getPixel(5, 1, (int[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y < 0
+ pass = false;
+ try
+ {
+ m.getPixel(1, -1, (int[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getPixel(1, 10, (int[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, float[], DataBuffer)");
+ SampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5, 10,
+ 3, 16, new int[] {0, 2, 1});
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (float[]) null, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // try x < 0
+ boolean pass = false;
+ try
+ {
+ m.getPixel(-1, 1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getPixel(5, 1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y < 0
+ pass = false;
+ try
+ {
+ m.getPixel(1, -1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getPixel(1, 10, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, float[], DataBuffer)");
+ SampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5, 10,
+ 3, 16, new int[] {0, 2, 1});
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (float[]) null, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // try x < 0
+ boolean pass = false;
+ try
+ {
+ m.getPixel(-1, 1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getPixel(5, 1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y < 0
+ pass = false;
+ try
+ {
+ m.getPixel(1, -1, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getPixel(1, 10, (float[]) null, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getPixelStride.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixelStride.java
new file mode 100644
index 00000000..a3717402
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixelStride.java
@@ -0,0 +1,41 @@
+/* getPixelStride.java -- some checks for the getPixelStride() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getPixelStride implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 2, 44, new int[] {0, 0});
+ harness.check(m1.getPixelStride(), 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getPixels.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixels.java
new file mode 100644
index 00000000..5e5f48da
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getPixels.java
@@ -0,0 +1,71 @@
+/* getPixels.java -- some checks for the getPixels() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getPixels implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ for (int i = 0; i < 12; i++)
+ db.setElem(i, i);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ int[] pixels = m.getPixels(1, 0, 2, 1, (int[]) null, db);
+ harness.check(pixels.length, 4);
+ harness.check(pixels[0], 2);
+ harness.check(pixels[1], 3);
+ harness.check(pixels[2], 4);
+ harness.check(pixels[3], 5);
+
+ // try passing in a result array
+ int[] result = new int[4];
+ pixels = m.getPixels(1, 1, 2, 1, result, db);
+ harness.check(pixels[0], 8);
+ harness.check(pixels[1], 9);
+ harness.check(pixels[2], 10);
+ harness.check(pixels[3], 11);
+ harness.check(pixels == result);
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixels(1, 1, 2, 1, result, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getSample.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getSample.java
new file mode 100644
index 00000000..f561eb37
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getSample.java
@@ -0,0 +1,96 @@
+/* getSample.java -- some checks for the getSample() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class getSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5,
+ 10, 3, 16, new int[] {0, 1, 2});
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getNumBanks(), 1);
+ db.setElem(0, 16, 0xAA);
+ db.setElem(0, 17, 0xBB);
+ db.setElem(0, 18, 0xCC);
+ harness.check(m.getSample(0, 1, 0, db), 0xAA);
+ harness.check(m.getSample(0, 1, 1, db), 0xBB);
+ harness.check(m.getSample(0, 1, 2, db), 0xCC);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ m.getSample(-1, 1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getSample(5, 0, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ m.getSample(1, -1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getSample(0, 10, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleDouble.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleDouble.java
new file mode 100644
index 00000000..61491d74
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleDouble.java
@@ -0,0 +1,96 @@
+/* getSampleDouble.java -- some checks for the getSampleDouble() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class getSampleDouble implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5,
+ 10, 3, 16, new int[] {0, 1, 2});
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getNumBanks(), 1);
+ db.setElem(0, 16, 0xAA);
+ db.setElem(0, 17, 0xBB);
+ db.setElem(0, 18, 0xCC);
+ harness.check(m.getSampleDouble(0, 1, 0, db), 0xAA);
+ harness.check(m.getSampleDouble(0, 1, 1, db), 0xBB);
+ harness.check(m.getSampleDouble(0, 1, 2, db), 0xCC);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ m.getSampleDouble(-1, 1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getSampleDouble(5, 0, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ m.getSampleDouble(1, -1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getSampleDouble(0, 10, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleFloat.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleFloat.java
new file mode 100644
index 00000000..0df1ef1e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleFloat.java
@@ -0,0 +1,96 @@
+/* getSampleFloat.java -- some checks for the getSampleFloat() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class getSampleFloat implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 5,
+ 10, 3, 16, new int[] {0, 1, 2});
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getNumBanks(), 1);
+ db.setElem(0, 16, 0xAA);
+ db.setElem(0, 17, 0xBB);
+ db.setElem(0, 18, 0xCC);
+ harness.check(m.getSampleFloat(0, 1, 0, db), 0xAA);
+ harness.check(m.getSampleFloat(0, 1, 1, db), 0xBB);
+ harness.check(m.getSampleFloat(0, 1, 2, db), 0xCC);
+
+ // try negative x
+ boolean pass = false;
+ try
+ {
+ m.getSampleFloat(-1, 1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try x == width
+ pass = false;
+ try
+ {
+ m.getSampleFloat(5, 0, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative y
+ pass = false;
+ try
+ {
+ m.getSampleFloat(1, -1, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try y == height
+ pass = false;
+ try
+ {
+ m.getSampleFloat(0, 10, 0, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleSize.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleSize.java
new file mode 100644
index 00000000..144e3822
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getSampleSize.java
@@ -0,0 +1,71 @@
+/* getSampleSize.java -- some checks for the getSampleSize() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getSampleSize implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 2, 44, new int[] {0, 0});
+ int[] sizes = m1.getSampleSize();
+ harness.check(sizes.length, 2);
+ harness.check(sizes[0], 32);
+ harness.check(sizes[1], 32);
+
+ ComponentSampleModel m2 = new ComponentSampleModel(DataBuffer.TYPE_BYTE, 22,
+ 11, 2, 44, new int[] {0, 0, 0});
+ int[] sizes2 = m2.getSampleSize();
+ harness.check(sizes2.length, 3);
+ harness.check(sizes2[0], 8);
+ harness.check(sizes2[1], 8);
+ harness.check(sizes2[2], 8);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 2, 44, new int[] {0, 0});
+ harness.check(m1.getSampleSize(0), 32);
+ harness.check(m1.getSampleSize(1), 32);
+ harness.check(m1.getSampleSize(2), 32);
+ harness.check(m1.getSampleSize(3), 32);
+ harness.check(m1.getSampleSize(-1), 32);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getSamples.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getSamples.java
new file mode 100644
index 00000000..c9d6104b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getSamples.java
@@ -0,0 +1,68 @@
+/* getSamples.java -- some checks for the getSamples() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getSamples implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ for (int i = 0; i < 12; i++)
+ db.setElem(i, i);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ int[] samples = m.getSamples(0, 1, 2, 1, 0, (int[]) null, db);
+ harness.check(samples.length, 2);
+ harness.check(samples[0], 6);
+ harness.check(samples[1], 8);
+
+ // try passing in a result array
+ int[] result = new int[2];
+ samples = m.getSamples(0, 1, 2, 1, 1, result, db);
+ harness.check(samples.length, 2);
+ harness.check(samples[0], 7);
+ harness.check(samples[1], 9);
+ harness.check(samples == result);
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getSamples(0, 1, 2, 1, 1, result, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/getScanlineStride.java b/gnu/testlet/java/awt/image/ComponentSampleModel/getScanlineStride.java
new file mode 100644
index 00000000..86dcbe91
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/getScanlineStride.java
@@ -0,0 +1,41 @@
+/* getScanlineStride.java -- some checks for the getScanlineStride() method
+ in the ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getScanlineStride implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT, 22,
+ 11, 2, 44, new int[] {0, 0});
+ harness.check(m1.getScanlineStride(), 44);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/hashCode.java b/gnu/testlet/java/awt/image/ComponentSampleModel/hashCode.java
new file mode 100644
index 00000000..cb777a21
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/hashCode.java
@@ -0,0 +1,46 @@
+/* hashCode.java -- some checks for the hashCode() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+
+public class hashCode implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // equal instances should have equal hashCodes...
+ ComponentSampleModel m1 = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 10, 20, 3, 3, new int[] {0, 1, 2});
+ ComponentSampleModel m2 = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 10, 20, 3, 3, new int[] {0, 1, 2});
+ harness.check(m1.equals(m2));
+ harness.check(m1.hashCode(), m2.hashCode());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/setDataElements.java b/gnu/testlet/java/awt/image/ComponentSampleModel/setDataElements.java
new file mode 100644
index 00000000..1fb51560
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/setDataElements.java
@@ -0,0 +1,83 @@
+/* setDataElements.java -- some checks for the setDataElements() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+public class setDataElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ int[] pixel = new int[] {11, 22};
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setDataElements(1, 1, pixel, db);
+ harness.check(db.getElem(0, 8), 11);
+ harness.check(db.getElem(0, 9), 22);
+
+ // check bad type for data element array
+ boolean pass = false;
+ try
+ {
+ m.setDataElements(1, 1, "???", db);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that a null pixel array generates a NullPointerException
+ pass = false;
+ try
+ {
+ m.setDataElements(1, 1, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that a null data buffer generates a NullPointerException
+ pass = false;
+ try
+ {
+ m.setDataElements(1, 1, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/setPixel.java b/gnu/testlet/java/awt/image/ComponentSampleModel/setPixel.java
new file mode 100644
index 00000000..4f84b13d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/setPixel.java
@@ -0,0 +1,71 @@
+/* setPixel.java -- some checks for the setPixel() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+public class setPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ int[] pixel = new int[] {11, 22};
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setPixel(1, 1, pixel, db);
+ harness.check(db.getElem(0, 8), 11);
+ harness.check(db.getElem(0, 9), 22);
+
+ // check that a null pixel array generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setPixel(1, 1, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that a null data buffer generates a NullPointerException
+ pass = false;
+ try
+ {
+ m.setPixel(1, 1, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/setPixels.java b/gnu/testlet/java/awt/image/ComponentSampleModel/setPixels.java
new file mode 100644
index 00000000..47a1d0fb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/setPixels.java
@@ -0,0 +1,73 @@
+/* setPixels.java -- some checks for the setPixels() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+public class setPixels implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ int[] pixels = new int[] {11, 22, 33, 44};
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setPixels(0, 0, 2, 1, pixels, db);
+ harness.check(db.getElem(0, 0), 11);
+ harness.check(db.getElem(0, 1), 22);
+ harness.check(db.getElem(0, 2), 33);
+ harness.check(db.getElem(0, 3), 44);
+
+ // check that a null pixel array generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setPixels(0, 0, 2, 1, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that a null data buffer generates a NullPointerException
+ pass = false;
+ try
+ {
+ m.setPixels(0, 0, 2, 1, pixels, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/setSample.java b/gnu/testlet/java/awt/image/ComponentSampleModel/setSample.java
new file mode 100644
index 00000000..e051655e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/setSample.java
@@ -0,0 +1,140 @@
+/* setSample.java -- some checks for the setSample() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferDouble;
+import java.awt.image.DataBufferFloat;
+import java.awt.image.DataBufferInt;
+
+public class setSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, double, DataBuffer)");
+ DataBuffer db = new DataBufferDouble(12);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_DOUBLE,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setSample(2, 1, 0, 99.9, db);
+ harness.check(db.getElem(0, 10), 99.0d);
+ m.setSample(2, 1, 1, 88.8, db);
+ harness.check(db.getElem(0, 11), 88.0d);
+
+ // what happens if the data buffer doesn't hold doubles?
+ DataBuffer db2 = new DataBufferInt(12);
+ m.setSample(2, 1, 0, 99.9d, db2);
+ harness.check(db2.getElem(0, 10), 99);
+ m.setSample(2, 1, 1, 88.8d, db2);
+ harness.check(db2.getElem(0, 11), 88);
+
+ // check that a null data buffer generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setSample(2, 1, 1, 77.7d, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, float, DataBuffer)");
+
+ DataBuffer db = new DataBufferFloat(12);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_FLOAT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setSample(2, 1, 0, 99.9f, db);
+ harness.check(db.getElem(0, 10), 99.0f);
+ m.setSample(2, 1, 1, 88.8f, db);
+ harness.check(db.getElem(0, 11), 88.0f);
+
+ // what happens if the data buffer doesn't hold floats?
+ DataBuffer db2 = new DataBufferInt(12);
+ m.setSample(2, 1, 0, 99.9f, db2);
+ harness.check(db2.getElem(0, 10), 99);
+ m.setSample(2, 1, 1, 88.8f, db2);
+ harness.check(db2.getElem(0, 11), 88);
+
+ // check that a null data buffer generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setSample(2, 1, 1, 77.7f, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer)");
+
+ DataBuffer db = new DataBufferInt(12);
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setSample(2, 1, 0, 99, db);
+ harness.check(db.getElem(0, 10), 99);
+ m.setSample(2, 1, 1, 88, db);
+ harness.check(db.getElem(0, 11), 88);
+
+ // what happens if the data buffer doesn't hold integers?
+ DataBuffer db2 = new DataBufferByte(12);
+ m.setSample(2, 1, 0, 99, db2);
+ harness.check(db2.getElem(0, 10), 99);
+ m.setSample(2, 1, 1, 888, db2);
+ harness.check(db2.getElem(0, 11), 120); // (byte) 888
+
+ // check that a null data buffer generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setSample(2, 1, 1, 77, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ComponentSampleModel/setSamples.java b/gnu/testlet/java/awt/image/ComponentSampleModel/setSamples.java
new file mode 100644
index 00000000..06aa0a37
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ComponentSampleModel/setSamples.java
@@ -0,0 +1,58 @@
+/* setSamples.java -- some checks for the setSamples() method in the
+ ComponentSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ComponentSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+public class setSamples implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DataBuffer db = new DataBufferInt(12);
+ int[] samples = new int[] {11, 22};
+ ComponentSampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 3, 2, 2, 6, new int[] {0, 1});
+ m.setSamples(1, 0, 2, 1, 1, samples, db);
+ harness.check(db.getElem(0, 3), 11);
+ harness.check(db.getElem(0, 5), 22);
+
+ // check that a null data buffer generates a NullPointerException
+ boolean pass = false;
+ try
+ {
+ m.setSamples(1, 0, 2, 1, 1, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/CVS/Entries b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Entries
new file mode 100644
index 00000000..fb75e666
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Entries
@@ -0,0 +1,12 @@
+/constants.java/1.1/Mon Jul 25 09:42:57 2005//
+/constructors.java/1.1/Mon Jul 25 09:42:57 2005//
+/createCompatibleDestImage.java/1.1/Thu Aug 24 19:00:04 2006//
+/createCompatibleDestRaster.java/1.1/Thu Aug 24 19:00:04 2006//
+/filterImage.java/1.1/Thu Aug 24 19:00:04 2006//
+/filterRaster.java/1.1/Thu Aug 24 19:00:04 2006//
+/getBounds2D.java/1.1/Wed Jul 19 15:09:00 2006//
+/getEdgeCondition.java/1.1/Wed Jul 19 15:09:00 2006//
+/getKernel.java/1.1/Mon Jul 25 09:42:57 2005//
+/getPoint2D.java/1.1/Wed Jul 19 15:09:00 2006//
+/getRenderingHints.java/1.1/Wed Jul 19 15:09:00 2006//
+D
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/CVS/Repository b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Repository
new file mode 100644
index 00000000..6c6b74fd
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ConvolveOp
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/CVS/Root b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/constants.java b/gnu/testlet/java/awt/image/ConvolveOp/constants.java
new file mode 100644
index 00000000..09526a8e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/constants.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ConvolveOp;
+
+/**
+ * Verifies constant values for the {@link ConvolveOp} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(ConvolveOp.EDGE_NO_OP, 1);
+ harness.check(ConvolveOp.EDGE_ZERO_FILL, 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/constructors.java b/gnu/testlet/java/awt/image/ConvolveOp/constructors.java
new file mode 100644
index 00000000..4ff87330
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/constructors.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ConvolveOp ;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the constructors in the {@link ConvolveOp} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(Kernel)");
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f});
+ ConvolveOp op1 = new ConvolveOp(k1);
+ harness.check(op1.getKernel() != k1);
+ harness.check(Arrays.equals(op1.getKernel().getKernelData(null), k1.getKernelData(null)));
+ harness.check(op1.getEdgeCondition(), ConvolveOp.EDGE_ZERO_FILL);
+ harness.check(op1.getRenderingHints(), null);
+
+ // using a null Kernel doesn't throw an immediate exception...
+ boolean pass = true;
+ try
+ {
+ /*ConvolveOp op2 =*/ new ConvolveOp(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // ...but it does later
+ pass = false;
+ try
+ {
+ ConvolveOp op2 = new ConvolveOp(null);
+ /*Kernel k2 =*/ op2.getKernel();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Kernel, int, RenderingHints)");
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f});
+ ConvolveOp op1 = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+ harness.check(op1.getKernel() != k1);
+ harness.check(Arrays.equals(op1.getKernel().getKernelData(null), k1.getKernelData(null)));
+ harness.check(op1.getEdgeCondition(), ConvolveOp.EDGE_NO_OP);
+ harness.check(op1.getRenderingHints(), null);
+
+ // a null kernel will fail when you try to access it
+ boolean pass = false;
+ ConvolveOp op2 = new ConvolveOp(null, ConvolveOp.EDGE_NO_OP, null);
+ try
+ {
+ /*Kernel k =*/ op2.getKernel();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try an invalid edge operation code
+ pass = false;
+ op1 = new ConvolveOp(k1, -1, null);
+ harness.check(op1.getEdgeCondition(), -1);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestImage.java b/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestImage.java
new file mode 100644
index 00000000..155cb7bf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestImage.java
@@ -0,0 +1,124 @@
+/* createCompatibleDestImage.java -- some checks for the
+ createCompatibleDestImage() method of the ConvolveOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.ConvolveOp;
+import java.awt.image.DirectColorModel;
+import java.awt.image.Kernel;
+
+/**
+ * Checks for the createCompatibleDestImage method in the
+ * {@link ConvolveOp} class.
+ */
+public class createCompatibleDestImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTest(harness);
+ colorModelTest(harness);
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestImage");
+
+ // Simple test
+ Kernel kern = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f});
+ ConvolveOp op = new ConvolveOp(kern, ConvolveOp.EDGE_NO_OP, null);
+
+ BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+
+ BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+
+ // Try a different colour model
+ img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+ DirectColorModel cm = new DirectColorModel(16, 0x0f00, 0x00f0, 0x000f);
+ dest = op.createCompatibleDestImage(img, cm);
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), cm);
+ }
+
+ // Test all the default color models
+ private void colorModelTest(TestHarness harness)
+ {
+ Kernel kern = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f});
+ ConvolveOp op = new ConvolveOp(kern, ConvolveOp.EDGE_NO_OP, null);
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ harness.checkPoint("type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+
+ // Unlike most Ops, this one creates a clone of the original image
+ harness.check(dest.getColorModel().getPixelSize(),
+ img.getColorModel().getPixelSize());
+
+ harness.check(dest.getColorModel().getClass() == img.getColorModel().getClass());
+ harness.check(dest.getSampleModel().getClass() == img.getSampleModel().getClass());
+ harness.check(dest.getColorModel().getNumComponents(), img.getColorModel().getNumComponents());
+ harness.check(dest.getColorModel().getTransparency(), img.getColorModel().getTransparency());
+ harness.check(dest.getColorModel().hasAlpha(), img.getColorModel().hasAlpha());
+ harness.check(dest.getColorModel().getTransferType(), img.getColorModel().getTransferType());
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ harness.check(dest.getColorModel().getColorSpace().getType(), img.getColorModel().getColorSpace().getType());
+ harness.check(dest.getRaster().getNumBands(), img.getRaster().getNumBands());
+ harness.check(dest.getRaster().getNumDataElements(), img.getRaster().getNumDataElements());
+ }
+ }
+}
+
+
+ \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..f47b0218
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/createCompatibleDestRaster.java
@@ -0,0 +1,102 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method of the ConvolveOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.ConvolveOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Kernel;
+import java.awt.image.Raster;
+
+/**
+ * Checks for the createCompatibleDestRaster method in the
+ * {@link ConvolveOp} class.
+ */
+public class createCompatibleDestRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestRaster");
+
+ // Simple test
+ Raster src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 3, new Point(5, 5));
+ Kernel kern = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f});
+ ConvolveOp op = new ConvolveOp(kern, ConvolveOp.EDGE_NO_OP, null);
+
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getHeight(), src.getHeight());
+ harness.check(dst.getWidth(), src.getWidth());
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different type
+ src = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 25, 40, 3, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Try a different number of bands
+ src = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ try
+ {
+ Raster dst = op.createCompatibleDestRaster(src);
+ harness.check(dst.getNumBands(), src.getNumBands());
+ harness.check(dst.getTransferType(), src.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), src.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), src.getNumDataElements());
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/filterImage.java b/gnu/testlet/java/awt/image/ConvolveOp/filterImage.java
new file mode 100644
index 00000000..ffd920a3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/filterImage.java
@@ -0,0 +1,386 @@
+/* filterImage.java -- some checks for the filter(Image) method of the
+ ConvolveOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.geom.Line2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link ConvolveOp} class.
+ */
+public class filterImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testDefaults(harness);
+ testFilter(harness);
+ testPremultiplied(harness);
+ }
+
+ private void testDefaults(TestHarness harness)
+ {
+ harness.checkPoint("testDefaults");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ Graphics2D g = (Graphics2D)img.getGraphics();
+ g.draw(new Line2D.Double(0, 0, 20, 20));
+
+ Kernel k1 = new Kernel(3, 3, new float[] {0.1f,0.2f,0.3f,
+ 0.4f,0.5f,0.6f,
+ 0.7f,0.8f,0.9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+
+ // Src and dst images cannot be the same
+ try
+ {
+ op.filter(img, img);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Src and dst are different sizes (allowed)
+ BufferedImage dst = new BufferedImage(30, 40, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst have different tpyes (allowed)
+ dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ try
+ {
+ //op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testFilter(TestHarness harness)
+ {
+ harness.checkPoint("testFilter");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ for (int i = 0; i < r.getHeight(); i++)
+ for (int j = 0; j < r.getWidth(); j++)
+ {
+ r.setSample(j, i, 0, i * 5 + j * 8);
+ r.setSample(j, i, 1, (r.getHeight() - i) * 5 + (r.getWidth() - j) * 8);
+ r.setSample(j, i, 2, 150);
+ if (i > (r.getHeight() / 2) && j > (r.getWidth() / 2))
+ r.setSample(j, i, 3, 200);
+ else
+ r.setSample(j, i, 3, 0);
+ }
+
+ Kernel k1 = new Kernel(3, 3, new float[] {0.2f,0.3f,0.5f,
+ 0.4f,0.6f,0.7f,
+ 0.6f,0.9f,0.8f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(img.isAlphaPremultiplied(), false);
+ harness.check(dst.isAlphaPremultiplied(), false);
+
+ harness.check(dest.getSample(0, 0, 0), 0);
+ harness.check(dest.getSample(1, 0, 0), 0);
+ harness.check(dest.getSample(2, 0, 0), 0);
+ harness.check(dest.getSample(3, 0, 0), 0);
+ harness.check(dest.getSample(4, 0, 0), 0);
+ harness.check(dest.getSample(0, 1, 0), 0);
+ harness.check(dest.getSample(1, 1, 0), 52);
+ harness.check(dest.getSample(2, 1, 0), 92);
+ harness.check(dest.getSample(3, 1, 0), 132);
+ harness.check(dest.getSample(4, 1, 0), 0);
+ harness.check(dest.getSample(0, 2, 0), 0);
+ harness.check(dest.getSample(1, 2, 0), 77);
+ harness.check(dest.getSample(2, 2, 0), 117);
+ harness.check(dest.getSample(3, 2, 0), 157);
+ harness.check(dest.getSample(4, 2, 0), 0);
+ harness.check(dest.getSample(0, 3, 0), 0);
+ harness.check(dest.getSample(1, 3, 0), 102);
+ harness.check(dest.getSample(2, 3, 0), 142);
+ harness.check(dest.getSample(3, 3, 0), 182);
+ harness.check(dest.getSample(4, 3, 0), 0);
+ harness.check(dest.getSample(0, 4, 0), 0);
+ harness.check(dest.getSample(1, 4, 0), 0);
+ harness.check(dest.getSample(2, 4, 0), 0);
+ harness.check(dest.getSample(3, 4, 0), 0);
+ harness.check(dest.getSample(4, 4, 0), 0);
+
+ harness.check(dest.getSample(0, 0, 1), 0);
+ harness.check(dest.getSample(1, 0, 1), 0);
+ harness.check(dest.getSample(2, 0, 1), 0);
+ harness.check(dest.getSample(3, 0, 1), 0);
+ harness.check(dest.getSample(4, 0, 1), 0);
+ harness.check(dest.getSample(0, 1, 1), 0);
+ harness.check(dest.getSample(1, 1, 1), 255);
+ harness.check(dest.getSample(2, 1, 1), 232);
+ harness.check(dest.getSample(3, 1, 1), 192);
+ harness.check(dest.getSample(4, 1, 1), 0);
+ harness.check(dest.getSample(0, 2, 1), 0);
+ harness.check(dest.getSample(1, 2, 1), 247);
+ harness.check(dest.getSample(2, 2, 1), 207);
+ harness.check(dest.getSample(3, 2, 1), 167);
+ harness.check(dest.getSample(4, 2, 1), 0);
+ harness.check(dest.getSample(0, 3, 1), 0);
+ harness.check(dest.getSample(1, 3, 1), 222);
+ harness.check(dest.getSample(2, 3, 1), 182);
+ harness.check(dest.getSample(3, 3, 1), 142);
+ harness.check(dest.getSample(4, 3, 1), 0);
+ harness.check(dest.getSample(0, 4, 1), 0);
+ harness.check(dest.getSample(1, 4, 1), 0);
+ harness.check(dest.getSample(2, 4, 1), 0);
+ harness.check(dest.getSample(3, 4, 1), 0);
+ harness.check(dest.getSample(4, 4, 1), 0);
+
+ harness.check(dest.getSample(0, 0, 2), 0);
+ harness.check(dest.getSample(1, 0, 2), 0);
+ harness.check(dest.getSample(2, 0, 2), 0);
+ harness.check(dest.getSample(3, 0, 2), 0);
+ harness.check(dest.getSample(4, 0, 2), 0);
+ harness.check(dest.getSample(0, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 2), 255);
+ harness.check(dest.getSample(2, 1, 2), 255);
+ harness.check(dest.getSample(3, 1, 2), 255);
+ harness.check(dest.getSample(4, 1, 2), 0);
+ harness.check(dest.getSample(0, 2, 2), 0);
+ harness.check(dest.getSample(1, 2, 2), 255);
+ harness.check(dest.getSample(2, 2, 2), 255);
+ harness.check(dest.getSample(3, 2, 2), 255);
+ harness.check(dest.getSample(4, 2, 2), 0);
+ harness.check(dest.getSample(0, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 2), 255);
+ harness.check(dest.getSample(2, 3, 2), 255);
+ harness.check(dest.getSample(3, 3, 2), 255);
+ harness.check(dest.getSample(4, 3, 2), 0);
+ harness.check(dest.getSample(0, 4, 2), 0);
+ harness.check(dest.getSample(1, 4, 2), 0);
+ harness.check(dest.getSample(2, 4, 2), 0);
+ harness.check(dest.getSample(3, 4, 2), 0);
+ harness.check(dest.getSample(4, 4, 2), 0);
+
+ harness.check(dest.getSample(0, 0, 3), 0);
+ harness.check(dest.getSample(1, 0, 3), 0);
+ harness.check(dest.getSample(2, 0, 3), 0);
+ harness.check(dest.getSample(3, 0, 3), 0);
+ harness.check(dest.getSample(4, 0, 3), 0);
+ harness.check(dest.getSample(0, 1, 3), 0);
+ harness.check(dest.getSample(1, 1, 3), 0);
+ harness.check(dest.getSample(2, 1, 3), 0);
+ harness.check(dest.getSample(3, 1, 3), 0);
+ harness.check(dest.getSample(4, 1, 3), 0);
+ harness.check(dest.getSample(0, 2, 3), 0);
+ harness.check(dest.getSample(1, 2, 3), 0);
+ harness.check(dest.getSample(2, 2, 3) - 39 >= 0 // allow rounding error
+ && dest.getSample(2, 2, 3) - 39 <= 1);
+ harness.check(dest.getSample(3, 2, 3), 100);
+ harness.check(dest.getSample(4, 2, 3), 0);
+ harness.check(dest.getSample(0, 3, 3), 0);
+ harness.check(dest.getSample(1, 3, 3), 0);
+ harness.check(dest.getSample(2, 3, 3) - 119 >= 0 // allow rounding error
+ && dest.getSample(2, 3, 3) - 119 <= 1);
+ harness.check(dest.getSample(3, 3, 3), 255);
+ harness.check(dest.getSample(4, 3, 3), 0);
+ harness.check(dest.getSample(0, 4, 3), 0);
+ harness.check(dest.getSample(1, 4, 3), 0);
+ harness.check(dest.getSample(2, 4, 3), 0);
+ harness.check(dest.getSample(3, 4, 3), 0);
+ harness.check(dest.getSample(4, 4, 3), 0);
+ }
+
+ // Test the pre-multiplied alpha stuff
+ private void testPremultiplied(TestHarness harness)
+ {
+ harness.checkPoint("testPremultiplied");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB_PRE);
+ WritableRaster r = img.getRaster();
+ for (int i = 0; i < r.getHeight(); i++)
+ for (int j = 0; j < r.getWidth(); j++)
+ {
+ r.setSample(j, i, 0, i * 5 + j * 8);
+ r.setSample(j, i, 1, (r.getHeight() - i) * 5 + (r.getWidth() - j) * 8);
+ r.setSample(j, i, 2, 150);
+ if (i > (r.getHeight() / 2) && j > (r.getWidth() / 2))
+ r.setSample(j, i, 3, 200);
+ else
+ r.setSample(j, i, 3, 0);
+ }
+
+ Kernel k1 = new Kernel(3, 3, new float[] {0.2f,0.3f,0.5f,
+ 0.4f,0.6f,0.7f,
+ 0.6f,0.9f,0.8f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+
+ BufferedImage dst = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+
+ dst = op.filter(img, dst);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(img.isAlphaPremultiplied(), true);
+ harness.check(dst.isAlphaPremultiplied(), false);
+
+ // The following test values are COMPLETELY IDENTICAL to those in
+ // testFilter, even though this does a premultiplied conversion and
+ // testFilter does not. It seems that the reference implementation
+ // IGNORES the pre-multiplied status of images, contrary to the spec.
+
+ harness.check(dest.getSample(0, 0, 0), 0);
+ harness.check(dest.getSample(1, 0, 0), 0);
+ harness.check(dest.getSample(2, 0, 0), 0);
+ harness.check(dest.getSample(3, 0, 0), 0);
+ harness.check(dest.getSample(4, 0, 0), 0);
+ harness.check(dest.getSample(0, 1, 0), 0);
+ harness.check(dest.getSample(1, 1, 0), 52);
+ harness.check(dest.getSample(2, 1, 0), 92);
+ harness.check(dest.getSample(3, 1, 0), 132);
+ harness.check(dest.getSample(4, 1, 0), 0);
+ harness.check(dest.getSample(0, 2, 0), 0);
+ harness.check(dest.getSample(1, 2, 0), 77);
+ harness.check(dest.getSample(2, 2, 0), 117);
+ harness.check(dest.getSample(3, 2, 0), 157);
+ harness.check(dest.getSample(4, 2, 0), 0);
+ harness.check(dest.getSample(0, 3, 0), 0);
+ harness.check(dest.getSample(1, 3, 0), 102);
+ harness.check(dest.getSample(2, 3, 0), 142);
+ harness.check(dest.getSample(3, 3, 0), 182);
+ harness.check(dest.getSample(4, 3, 0), 0);
+ harness.check(dest.getSample(0, 4, 0), 0);
+ harness.check(dest.getSample(1, 4, 0), 0);
+ harness.check(dest.getSample(2, 4, 0), 0);
+ harness.check(dest.getSample(3, 4, 0), 0);
+ harness.check(dest.getSample(4, 4, 0), 0);
+
+ harness.check(dest.getSample(0, 0, 1), 0);
+ harness.check(dest.getSample(1, 0, 1), 0);
+ harness.check(dest.getSample(2, 0, 1), 0);
+ harness.check(dest.getSample(3, 0, 1), 0);
+ harness.check(dest.getSample(4, 0, 1), 0);
+ harness.check(dest.getSample(0, 1, 1), 0);
+ harness.check(dest.getSample(1, 1, 1), 255);
+ harness.check(dest.getSample(2, 1, 1), 232);
+ harness.check(dest.getSample(3, 1, 1), 192);
+ harness.check(dest.getSample(4, 1, 1), 0);
+ harness.check(dest.getSample(0, 2, 1), 0);
+ harness.check(dest.getSample(1, 2, 1), 247);
+ harness.check(dest.getSample(2, 2, 1), 207);
+ harness.check(dest.getSample(3, 2, 1), 167);
+ harness.check(dest.getSample(4, 2, 1), 0);
+ harness.check(dest.getSample(0, 3, 1), 0);
+ harness.check(dest.getSample(1, 3, 1), 222);
+ harness.check(dest.getSample(2, 3, 1), 182);
+ harness.check(dest.getSample(3, 3, 1), 142);
+ harness.check(dest.getSample(4, 3, 1), 0);
+ harness.check(dest.getSample(0, 4, 1), 0);
+ harness.check(dest.getSample(1, 4, 1), 0);
+ harness.check(dest.getSample(2, 4, 1), 0);
+ harness.check(dest.getSample(3, 4, 1), 0);
+ harness.check(dest.getSample(4, 4, 1), 0);
+
+ harness.check(dest.getSample(0, 0, 2), 0);
+ harness.check(dest.getSample(1, 0, 2), 0);
+ harness.check(dest.getSample(2, 0, 2), 0);
+ harness.check(dest.getSample(3, 0, 2), 0);
+ harness.check(dest.getSample(4, 0, 2), 0);
+ harness.check(dest.getSample(0, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 2), 255);
+ harness.check(dest.getSample(2, 1, 2), 255);
+ harness.check(dest.getSample(3, 1, 2), 255);
+ harness.check(dest.getSample(4, 1, 2), 0);
+ harness.check(dest.getSample(0, 2, 2), 0);
+ harness.check(dest.getSample(1, 2, 2), 255);
+ harness.check(dest.getSample(2, 2, 2), 255);
+ harness.check(dest.getSample(3, 2, 2), 255);
+ harness.check(dest.getSample(4, 2, 2), 0);
+ harness.check(dest.getSample(0, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 2), 255);
+ harness.check(dest.getSample(2, 3, 2), 255);
+ harness.check(dest.getSample(3, 3, 2), 255);
+ harness.check(dest.getSample(4, 3, 2), 0);
+ harness.check(dest.getSample(0, 4, 2), 0);
+ harness.check(dest.getSample(1, 4, 2), 0);
+ harness.check(dest.getSample(2, 4, 2), 0);
+ harness.check(dest.getSample(3, 4, 2), 0);
+ harness.check(dest.getSample(4, 4, 2), 0);
+
+ harness.check(dest.getSample(0, 0, 3), 0);
+ harness.check(dest.getSample(1, 0, 3), 0);
+ harness.check(dest.getSample(2, 0, 3), 0);
+ harness.check(dest.getSample(3, 0, 3), 0);
+ harness.check(dest.getSample(4, 0, 3), 0);
+ harness.check(dest.getSample(0, 1, 3), 0);
+ harness.check(dest.getSample(1, 1, 3), 0);
+ harness.check(dest.getSample(2, 1, 3), 0);
+ harness.check(dest.getSample(3, 1, 3), 0);
+ harness.check(dest.getSample(4, 1, 3), 0);
+ harness.check(dest.getSample(0, 2, 3), 0);
+ harness.check(dest.getSample(1, 2, 3), 0);
+ harness.check(dest.getSample(2, 2, 3) - 39 >= 0 // allow rounding error
+ && dest.getSample(2, 2, 3) - 39 <= 1);
+ harness.check(dest.getSample(3, 2, 3), 100);
+ harness.check(dest.getSample(4, 2, 3), 0);
+ harness.check(dest.getSample(0, 3, 3), 0);
+ harness.check(dest.getSample(1, 3, 3), 0);
+ harness.check(dest.getSample(2, 3, 3) - 119 >= 0 // allow rounding error
+ && dest.getSample(2, 3, 3) - 119 <= 1);
+ harness.check(dest.getSample(3, 3, 3), 255);
+ harness.check(dest.getSample(4, 3, 3), 0);
+ harness.check(dest.getSample(0, 4, 3), 0);
+ harness.check(dest.getSample(1, 4, 3), 0);
+ harness.check(dest.getSample(2, 4, 3), 0);
+ harness.check(dest.getSample(3, 4, 3), 0);
+ harness.check(dest.getSample(4, 4, 3), 0);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/filterRaster.java b/gnu/testlet/java/awt/image/ConvolveOp/filterRaster.java
new file mode 100644
index 00000000..b0a3e8e9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/filterRaster.java
@@ -0,0 +1,285 @@
+/* filterRaster.java -- some checks for the filter() methods in the ConvolveOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ConvolveOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Kernel;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+
+public class filterRaster implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testRaster1(harness);
+ testRaster2(harness);
+ testRaster3(harness);
+ }
+
+ public void testRaster1(TestHarness harness)
+ {
+ harness.checkPoint("testRaster1()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+ Kernel k1 = new Kernel(1, 1, new float[] {1});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+ dest = op.filter(src, dest);
+ harness.check(dest.getSample(0, 0, 0), 1);
+ harness.check(dest.getSample(1, 0, 0), 2);
+ harness.check(dest.getSample(2, 0, 0), 3);
+ harness.check(dest.getSample(3, 0, 0), 4);
+ harness.check(dest.getSample(4, 0, 0), 5);
+ harness.check(dest.getSample(0, 1, 0), 6);
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(2, 1, 0), 8);
+ harness.check(dest.getSample(3, 1, 0), 9);
+ harness.check(dest.getSample(4, 1, 0), 10);
+ harness.check(dest.getSample(0, 2, 0), 11);
+ harness.check(dest.getSample(1, 2, 0), 12);
+ harness.check(dest.getSample(2, 2, 0), 13);
+ harness.check(dest.getSample(3, 2, 0), 14);
+ harness.check(dest.getSample(4, 2, 0), 15);
+ harness.check(dest.getSample(0, 3, 0), 16);
+ harness.check(dest.getSample(1, 3, 0), 17);
+ harness.check(dest.getSample(2, 3, 0), 18);
+ harness.check(dest.getSample(3, 3, 0), 19);
+ harness.check(dest.getSample(4, 3, 0), 20);
+
+ harness.check(dest.getSample(0, 0, 1), 11);
+ harness.check(dest.getSample(1, 0, 1), 12);
+ harness.check(dest.getSample(2, 0, 1), 13);
+ harness.check(dest.getSample(3, 0, 1), 14);
+ harness.check(dest.getSample(4, 0, 1), 15);
+ harness.check(dest.getSample(0, 1, 1), 16);
+ harness.check(dest.getSample(1, 1, 1), 17);
+ harness.check(dest.getSample(2, 1, 1), 18);
+ harness.check(dest.getSample(3, 1, 1), 19);
+ harness.check(dest.getSample(4, 1, 1), 20);
+ harness.check(dest.getSample(0, 2, 1), 21);
+ harness.check(dest.getSample(1, 2, 1), 22);
+ harness.check(dest.getSample(2, 2, 1), 23);
+ harness.check(dest.getSample(3, 2, 1), 24);
+ harness.check(dest.getSample(4, 2, 1), 25);
+ harness.check(dest.getSample(0, 3, 1), 26);
+ harness.check(dest.getSample(1, 3, 1), 27);
+ harness.check(dest.getSample(2, 3, 1), 28);
+ harness.check(dest.getSample(3, 3, 1), 29);
+ harness.check(dest.getSample(4, 3, 1), 30);
+
+ harness.check(dest.getSample(0, 0, 2), 21);
+ harness.check(dest.getSample(1, 0, 2), 22);
+ harness.check(dest.getSample(2, 0, 2), 23);
+ harness.check(dest.getSample(3, 0, 2), 24);
+ harness.check(dest.getSample(4, 0, 2), 25);
+ harness.check(dest.getSample(0, 1, 2), 26);
+ harness.check(dest.getSample(1, 1, 2), 27);
+ harness.check(dest.getSample(2, 1, 2), 28);
+ harness.check(dest.getSample(3, 1, 2), 29);
+ harness.check(dest.getSample(4, 1, 2), 30);
+ harness.check(dest.getSample(0, 2, 2), 31);
+ harness.check(dest.getSample(1, 2, 2), 32);
+ harness.check(dest.getSample(2, 2, 2), 33);
+ harness.check(dest.getSample(3, 2, 2), 34);
+ harness.check(dest.getSample(4, 2, 2), 35);
+ harness.check(dest.getSample(0, 3, 2), 36);
+ harness.check(dest.getSample(1, 3, 2), 37);
+ harness.check(dest.getSample(2, 3, 2), 38);
+ harness.check(dest.getSample(3, 3, 2), 39);
+ harness.check(dest.getSample(4, 3, 2), 40);
+ }
+
+ public void testRaster2(TestHarness harness)
+ {
+ harness.checkPoint("testRaster2()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+ Kernel k1 = new Kernel(3, 3, new float[] {0,0,0,
+ 0,1,0,
+ 0,0,0});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+ dest = op.filter(src, dest);
+ harness.check(dest.getSample(0, 0, 0), 0);
+ harness.check(dest.getSample(1, 0, 0), 0);
+ harness.check(dest.getSample(2, 0, 0), 0);
+ harness.check(dest.getSample(3, 0, 0), 0);
+ harness.check(dest.getSample(4, 0, 0), 0);
+ harness.check(dest.getSample(0, 1, 0), 0);
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(2, 1, 0), 8);
+ harness.check(dest.getSample(3, 1, 0), 9);
+ harness.check(dest.getSample(4, 1, 0), 0);
+ harness.check(dest.getSample(0, 2, 0), 0);
+ harness.check(dest.getSample(1, 2, 0), 12);
+ harness.check(dest.getSample(2, 2, 0), 13);
+ harness.check(dest.getSample(3, 2, 0), 14);
+ harness.check(dest.getSample(4, 2, 0), 0);
+ harness.check(dest.getSample(0, 3, 0), 0);
+ harness.check(dest.getSample(1, 3, 0), 0);
+ harness.check(dest.getSample(2, 3, 0), 0);
+ harness.check(dest.getSample(3, 3, 0), 0);
+ harness.check(dest.getSample(4, 3, 0), 0);
+
+ harness.check(dest.getSample(0, 0, 1), 0);
+ harness.check(dest.getSample(1, 0, 1), 0);
+ harness.check(dest.getSample(2, 0, 1), 0);
+ harness.check(dest.getSample(3, 0, 1), 0);
+ harness.check(dest.getSample(4, 0, 1), 0);
+ harness.check(dest.getSample(0, 1, 1), 0);
+ harness.check(dest.getSample(1, 1, 1), 17);
+ harness.check(dest.getSample(2, 1, 1), 18);
+ harness.check(dest.getSample(3, 1, 1), 19);
+ harness.check(dest.getSample(4, 1, 1), 0);
+ harness.check(dest.getSample(0, 2, 1), 0);
+ harness.check(dest.getSample(1, 2, 1), 22);
+ harness.check(dest.getSample(2, 2, 1), 23);
+ harness.check(dest.getSample(3, 2, 1), 24);
+ harness.check(dest.getSample(4, 2, 1), 0);
+ harness.check(dest.getSample(0, 3, 1), 0);
+ harness.check(dest.getSample(1, 3, 1), 0);
+ harness.check(dest.getSample(2, 3, 1), 0);
+ harness.check(dest.getSample(3, 3, 1), 0);
+ harness.check(dest.getSample(4, 3, 1), 0);
+
+ harness.check(dest.getSample(0, 0, 2), 0);
+ harness.check(dest.getSample(1, 0, 2), 0);
+ harness.check(dest.getSample(2, 0, 2), 0);
+ harness.check(dest.getSample(3, 0, 2), 0);
+ harness.check(dest.getSample(4, 0, 2), 0);
+ harness.check(dest.getSample(0, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 2), 27);
+ harness.check(dest.getSample(2, 1, 2), 28);
+ harness.check(dest.getSample(3, 1, 2), 29);
+ harness.check(dest.getSample(4, 1, 2), 0);
+ harness.check(dest.getSample(0, 2, 2), 0);
+ harness.check(dest.getSample(1, 2, 2), 32);
+ harness.check(dest.getSample(2, 2, 2), 33);
+ harness.check(dest.getSample(3, 2, 2), 34);
+ harness.check(dest.getSample(4, 2, 2), 0);
+ harness.check(dest.getSample(0, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 2), 0);
+ harness.check(dest.getSample(2, 3, 2), 0);
+ harness.check(dest.getSample(3, 3, 2), 0);
+ harness.check(dest.getSample(4, 3, 2), 0);
+ }
+
+ public void testRaster3(TestHarness harness)
+ {
+ harness.checkPoint("testRaster3()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+ Kernel k1 = new Kernel(3, 3, new float[] {0.1f,0.2f,0.3f,
+ 0.4f,0.5f,0.6f,
+ 0.7f,0.8f,0.9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+ dest = op.filter(src, dest);
+ harness.check(dest.getSample(0, 0, 0), 1);
+ harness.check(dest.getSample(1, 0, 0), 2);
+ harness.check(dest.getSample(2, 0, 0), 3);
+ harness.check(dest.getSample(3, 0, 0), 4);
+ harness.check(dest.getSample(4, 0, 0), 5);
+ harness.check(dest.getSample(0, 1, 0), 6);
+ harness.check(dest.getSample(1, 1, 0), 21);
+ harness.check(dest.getSample(2, 1, 0), 26);
+ harness.check(dest.getSample(3, 1, 0), 30);
+ harness.check(dest.getSample(4, 1, 0), 10);
+ harness.check(dest.getSample(0, 2, 0), 11);
+ harness.check(dest.getSample(1, 2, 0), 44);
+ harness.check(dest.getSample(2, 2, 0), 48);
+ harness.check(dest.getSample(3, 2, 0), 53);
+ harness.check(dest.getSample(4, 2, 0), 15);
+ harness.check(dest.getSample(0, 3, 0), 16);
+ harness.check(dest.getSample(1, 3, 0), 17);
+ harness.check(dest.getSample(2, 3, 0), 18);
+ harness.check(dest.getSample(3, 3, 0), 19);
+ harness.check(dest.getSample(4, 3, 0), 20);
+
+ harness.check(dest.getSample(0, 0, 1), 11);
+ harness.check(dest.getSample(1, 0, 1), 12);
+ harness.check(dest.getSample(2, 0, 1), 13);
+ harness.check(dest.getSample(3, 0, 1), 14);
+ harness.check(dest.getSample(4, 0, 1), 15);
+ harness.check(dest.getSample(0, 1, 1), 16);
+ harness.check(dest.getSample(1, 1, 1), 66);
+ harness.check(dest.getSample(2, 1, 1), 71);
+ harness.check(dest.getSample(3, 1, 1), 75);
+ harness.check(dest.getSample(4, 1, 1), 20);
+ harness.check(dest.getSample(0, 2, 1), 21);
+ harness.check(dest.getSample(1, 2, 1), 89);
+ harness.check(dest.getSample(2, 2, 1), 93);
+ harness.check(dest.getSample(3, 2, 1), 98);
+ harness.check(dest.getSample(4, 2, 1), 25);
+ harness.check(dest.getSample(0, 3, 1), 26);
+ harness.check(dest.getSample(1, 3, 1), 27);
+ harness.check(dest.getSample(2, 3, 1), 28);
+ harness.check(dest.getSample(3, 3, 1), 29);
+ harness.check(dest.getSample(4, 3, 1), 30);
+
+ harness.check(dest.getSample(0, 0, 2), 21);
+ harness.check(dest.getSample(1, 0, 2), 22);
+ harness.check(dest.getSample(2, 0, 2), 23);
+ harness.check(dest.getSample(3, 0, 2), 24);
+ harness.check(dest.getSample(4, 0, 2), 25);
+ harness.check(dest.getSample(0, 1, 2), 26);
+ harness.check(dest.getSample(1, 1, 2), 111);
+ harness.check(dest.getSample(2, 1, 2), 116);
+ harness.check(dest.getSample(3, 1, 2), 120);
+ harness.check(dest.getSample(4, 1, 2), 30);
+ harness.check(dest.getSample(0, 2, 2), 31);
+ harness.check(dest.getSample(1, 2, 2), 134);
+ harness.check(dest.getSample(2, 2, 2), 138);
+ harness.check(dest.getSample(3, 2, 2), 143);
+ harness.check(dest.getSample(4, 2, 2), 35);
+ harness.check(dest.getSample(0, 3, 2), 36);
+ harness.check(dest.getSample(1, 3, 2), 37);
+ harness.check(dest.getSample(2, 3, 2), 38);
+ harness.check(dest.getSample(3, 3, 2), 39);
+
+ harness.check(dest.getSample(4, 3, 2), 40);
+ }
+
+ /**
+ * Creates a sample raster for testing.
+ *
+ * @return A raster.
+ */
+ private Raster createRasterA()
+ {
+ WritableRaster r = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, 5,
+ 4, 3, null);
+ for (int i = 0; i < 5; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ r.setSample(i, j, 0, j * 5 + i + 1);
+ r.setSample(i, j, 1, j * 5 + i + 11);
+ r.setSample(i, j, 2, j * 5 + i + 21);
+ }
+ }
+ return r;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/getBounds2D.java b/gnu/testlet/java/awt/image/ConvolveOp/getBounds2D.java
new file mode 100644
index 00000000..0a2f3c21
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/getBounds2D.java
@@ -0,0 +1,93 @@
+/* getBounds2D.java -- some checks for the getBounds2D() methods in the
+ ConvolveOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.4
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ConvolveOp;
+import java.awt.image.DataBuffer;
+import java.awt.image.Kernel;
+import java.awt.image.Raster;
+
+public class getBounds2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(Raster)");
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+
+ Raster r = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 4, 30, 3, null);
+ Rectangle2D bounds = op.getBounds2D(r);
+ harness.check(bounds, new Rectangle(0, 0, 4, 30));
+
+ // try null raster
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((Raster) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(BufferedImage)");
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+
+ BufferedImage image = new BufferedImage(5, 10, BufferedImage.TYPE_BYTE_GRAY);
+ Rectangle2D bounds = op.getBounds2D(image);
+ harness.check(bounds, new Rectangle(0, 0, 5, 10));
+
+ // try null raster
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((BufferedImage) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/getEdgeCondition.java b/gnu/testlet/java/awt/image/ConvolveOp/getEdgeCondition.java
new file mode 100644
index 00000000..c43c54a0
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/getEdgeCondition.java
@@ -0,0 +1,45 @@
+/* getEdgeCondition.java -- some checks for the getEdgeCondition() method in
+ the ConvolveOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+
+public class getEdgeCondition implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+ harness.check(op.getEdgeCondition(), ConvolveOp.EDGE_NO_OP);
+ op = new ConvolveOp(k1, ConvolveOp.EDGE_ZERO_FILL, null);
+ harness.check(op.getEdgeCondition(), ConvolveOp.EDGE_ZERO_FILL);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/getKernel.java b/gnu/testlet/java/awt/image/ConvolveOp/getKernel.java
new file mode 100644
index 00000000..a3ca9605
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/getKernel.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ConvolveOp ;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the getKernel() method in the {@link ConvolveOp} class.
+ */
+public class getKernel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(1, 1, new float[] {1f});
+ ConvolveOp op1 = new ConvolveOp(k1);
+ Kernel k2 = op1.getKernel();
+ harness.check(Arrays.equals(k1.getKernelData(null), k2.getKernelData(null)));
+ harness.check(k1 != k2);
+
+ // each call seems to clone the kernel
+ Kernel k3 = op1.getKernel();
+ harness.check(k2 != k3);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/getPoint2D.java b/gnu/testlet/java/awt/image/ConvolveOp/getPoint2D.java
new file mode 100644
index 00000000..2c4037ed
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/getPoint2D.java
@@ -0,0 +1,66 @@
+/* getPoint2D.java -- some checks for the getPoint2D() method in the
+ ConvolveOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JD1.4
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.geom.Point2D;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+
+public class getPoint2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f});
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+
+ Point2D p = new Point(7, 8);
+ Point2D dest = new Point(0, 0);
+ Point2D p1 = op.getPoint2D(p, dest);
+ harness.check(p1, p);
+ harness.check(p1 == dest);
+
+ p1 = op.getPoint2D(p, null);
+ harness.check(p1, p);
+ harness.check(p1 != dest);
+
+ // try null point
+ boolean pass = false;
+ try
+ {
+ op.getPoint2D(null, dest);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ConvolveOp/getRenderingHints.java b/gnu/testlet/java/awt/image/ConvolveOp/getRenderingHints.java
new file mode 100644
index 00000000..1554e0bf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ConvolveOp/getRenderingHints.java
@@ -0,0 +1,48 @@
+/* getRenderingHints.java -- some checks for the getRenderingHints() method
+ in the ConvolveOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ConvolveOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+
+public class getRenderingHints implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(3, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f});
+ RenderingHints r = new RenderingHints(RenderingHints.KEY_DITHERING,
+ RenderingHints.VALUE_DITHER_DISABLE);
+ ConvolveOp op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, r);
+ harness.check(op.getRenderingHints(), r);
+ harness.check(op.getRenderingHints().size(), 1);
+ op = new ConvolveOp(k1, ConvolveOp.EDGE_NO_OP, null);
+ harness.check(op.getRenderingHints(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBuffer/CVS/Entries b/gnu/testlet/java/awt/image/DataBuffer/CVS/Entries
new file mode 100644
index 00000000..73d589ee
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/CVS/Entries
@@ -0,0 +1,5 @@
+/constants.java/1.1/Fri Aug 27 11:13:25 2004//
+/getDataTypeSize.java/1.1/Fri Aug 27 11:13:25 2004//
+/getOffset.java/1.1/Sat Sep 18 17:20:16 2004//
+/getOffsets.java/1.1/Sat Sep 18 17:20:16 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBuffer/CVS/Repository b/gnu/testlet/java/awt/image/DataBuffer/CVS/Repository
new file mode 100644
index 00000000..6980d1f2
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBuffer
diff --git a/gnu/testlet/java/awt/image/DataBuffer/CVS/Root b/gnu/testlet/java/awt/image/DataBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBuffer/constants.java b/gnu/testlet/java/awt/image/DataBuffer/constants.java
new file mode 100644
index 00000000..bb8324fb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/constants.java
@@ -0,0 +1,48 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+
+/**
+ * Verifies constant values for the {@link DataBuffer} class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(DataBuffer.TYPE_BYTE == 0);
+ harness.check(DataBuffer.TYPE_DOUBLE == 5);
+ harness.check(DataBuffer.TYPE_FLOAT == 4);
+ harness.check(DataBuffer.TYPE_INT == 3);
+ harness.check(DataBuffer.TYPE_SHORT == 2);
+ harness.check(DataBuffer.TYPE_UNDEFINED == 32);
+ harness.check(DataBuffer.TYPE_USHORT == 1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBuffer/getDataTypeSize.java b/gnu/testlet/java/awt/image/DataBuffer/getDataTypeSize.java
new file mode 100644
index 00000000..b3d8023e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/getDataTypeSize.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+
+/**
+ * Verifies the getDataTypeSize() method in the {@link DataBuffer} class.
+ */
+public class getDataTypeSize implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_BYTE) == 8);
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_DOUBLE) == 64);
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_FLOAT) == 32);
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_INT) == 32);
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_SHORT) == 16);
+ harness.check(DataBuffer.getDataTypeSize(DataBuffer.TYPE_USHORT) == 16);
+
+ boolean pass = false;
+ try
+ {
+ DataBuffer.getDataTypeSize(DataBuffer.TYPE_UNDEFINED);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBuffer.getDataTypeSize(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBuffer/getOffset.java b/gnu/testlet/java/awt/image/DataBuffer/getOffset.java
new file mode 100644
index 00000000..65f40ba7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/getOffset.java
@@ -0,0 +1,49 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the getOffset() method in the {@link DataBuffer} class.
+ */
+public class getOffset implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check simple case
+ DataBuffer b1 = new DataBufferInt(new int[] {1, 2, 3}, 3, 1);
+ harness.check(b1.getOffset() == 1);
+
+ // check that offset reflects setting in array
+ DataBuffer b2 = new DataBufferInt(new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}}, 2, new int[] {1 , 2});
+ harness.check(b2.getOffset() == 1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBuffer/getOffsets.java b/gnu/testlet/java/awt/image/DataBuffer/getOffsets.java
new file mode 100644
index 00000000..8d079025
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBuffer/getOffsets.java
@@ -0,0 +1,47 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some checks for the getOffsets() method in the {@link DataBuffer} class.
+ */
+public class getOffsets implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ //
+ DataBuffer b1 = new DataBufferInt(new int[] {1, 2, 3}, 3, 1);
+ int[] offsets = b1.getOffsets();
+ harness.check(offsets.length == 1);
+ harness.check(offsets[0] == 1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Entries
new file mode 100644
index 00000000..6ab6b1ed
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:16 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getDataType.java/1.2/Sat Sep 18 17:20:16 2004//
+/getElem.java/1.2/Sat Sep 18 17:20:16 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:16 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Repository
new file mode 100644
index 00000000..f1d60126
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferByte
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/CVS/Root b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/constructors.java b/gnu/testlet/java/awt/image/DataBufferByte/constructors.java
new file mode 100644
index 00000000..16c190dd
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/constructors.java
@@ -0,0 +1,256 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferByte} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(int)");
+ DataBufferByte b1 = new DataBufferByte(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_BYTE);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferByte b2 = new DataBufferByte(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferByte b3 = new DataBufferByte(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(byte[][], int)");
+ byte[][] source = new byte[][] {{1, 2}};
+ DataBufferByte b = new DataBufferByte(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ byte[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1);
+ source[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferByte b1 = new DataBufferByte((byte[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferByte b1 = new DataBufferByte(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(byte[][], int, int[])");
+ byte[][] source = new byte[][] {{1, 2}};
+ DataBufferByte b = new DataBufferByte(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new byte[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferByte(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferByte b1 = new DataBufferByte((byte[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null offsets
+ pass = false;
+ try
+ {
+ DataBufferByte b1 = new DataBufferByte(new byte[][]{{1, 2}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check source doesn't match offsets array
+ pass = false;
+ try
+ {
+ DataBufferByte b2 = new DataBufferByte(new byte[][]{{1, 2}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(byte[], int)");
+ DataBufferByte b = new DataBufferByte(new byte[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferByte b1 = new DataBufferByte((byte[]) null, 1);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(byte[], int, int)");
+ DataBufferByte b = new DataBufferByte(new byte[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferByte b1 = new DataBufferByte((byte[]) null, 1, 0);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBufferByte b2 = new DataBufferByte(new byte[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferByte(int, int)");
+ DataBufferByte b = new DataBufferByte(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0);
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferByte b1 = new DataBufferByte(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferByte b1 = new DataBufferByte(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/getBankData.java b/gnu/testlet/java/awt/image/DataBufferByte/getBankData.java
new file mode 100644
index 00000000..feea6d13
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferByte;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferByte} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ byte[][] data = new byte[][] {{1, 2}};
+ DataBufferByte b = new DataBufferByte(data, 2);
+ byte[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new byte[][] {{1, 2, 3}};
+ b = new DataBufferByte(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new byte[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferByte(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferByte b2 = new DataBufferByte(new byte[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferByte b3 = new DataBufferByte(new byte[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/getData.java b/gnu/testlet/java/awt/image/DataBufferByte/getData.java
new file mode 100644
index 00000000..abc2514c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferByte;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferByte} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ byte[] source = new byte[] {1, 2};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ byte[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new byte[] {1, 2, 3};
+ b = new DataBufferByte(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new byte[] {1, 2, 3, 4};
+ b = new DataBufferByte(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ byte[][] source = new byte[][] {{1, 2}, {3, 4}};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ byte[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new byte[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferByte(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new byte[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferByte(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/getDataType.java b/gnu/testlet/java/awt/image/DataBufferByte/getDataType.java
new file mode 100644
index 00000000..4b2c81fc
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferByte(5).getDataType(), DataBuffer.TYPE_BYTE);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/getElem.java b/gnu/testlet/java/awt/image/DataBufferByte/getElem.java
new file mode 100644
index 00000000..e7a6f15c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/getElem.java
@@ -0,0 +1,198 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ byte[] data = new byte[] { -11, -22, -33, -44 };
+
+ buf = new DataBufferByte(new byte[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), 256 - 33); // Check #1.
+ h.check(buf.getElem(1), 256 - 44); // Check #2.
+ h.check(buf.getElem(0, 0), 256 - 33); // Check #3.
+ h.check(buf.getElem(0, 1), 256 - 44); // Check #4.
+ h.check(buf.getElem(1, 0), 256 - 11); // Check #5.
+ h.check(buf.getElem(1, 1), 256 - 22); // Check #6.
+
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ byte[] source = new byte[] {1, 2, 3};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new byte[] {1, 2, 3, 4};
+ b = new DataBufferByte(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ byte[][] source = new byte[][] {{1, 2}, {3, 4}};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new byte[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferByte(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new byte[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferByte(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferByte b2 = new DataBufferByte(new byte[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferByte/setElem.java b/gnu/testlet/java/awt/image/DataBufferByte/setElem.java
new file mode 100644
index 00000000..5a7c0bb6
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferByte/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferByte;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferByte;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferByte} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ byte[] source = new byte[] {1, 2};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new byte[] {1, 2, 3, 4, 5};
+ b = new DataBufferByte(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ byte[][] source = new byte[][] {{1, 2}, {3, 4}};
+ DataBufferByte b = new DataBufferByte(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Entries
new file mode 100644
index 00000000..6ab6b1ed
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:16 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getDataType.java/1.2/Sat Sep 18 17:20:16 2004//
+/getElem.java/1.2/Sat Sep 18 17:20:16 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:16 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Repository
new file mode 100644
index 00000000..5ca40818
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferDouble
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Root b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/constructors.java b/gnu/testlet/java/awt/image/DataBufferDouble/constructors.java
new file mode 100644
index 00000000..a5d3ba56
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/constructors.java
@@ -0,0 +1,255 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferDouble;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferDouble} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(int)");
+ DataBufferDouble b1 = new DataBufferDouble(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_DOUBLE);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferDouble b2 = new DataBufferDouble(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferDouble b3 = new DataBufferDouble(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(double[][], int)");
+ double[][] source = new double[][] {{1.0, 2.0}};
+ DataBufferDouble b = new DataBufferDouble(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ double[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1.0);
+ source[0][0] = 3.0;
+ harness.check(banks[0][0] == 3.0);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble((double[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferDouble b1 = new DataBufferDouble(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(double[][], int, int[])");
+ double[][] source = new double[][] {{1, 2}};
+ DataBufferDouble b = new DataBufferDouble(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new double[][] {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0, 7.0}};
+ b = new DataBufferDouble(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble((double[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null offsets
+ pass = false;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble(new double[][]{{1.0, 2.0}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check source doesn't match offsets array
+ pass = false;
+ try
+ {
+ DataBufferDouble b2 = new DataBufferDouble(new double[][]{{1.0, 2.0}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(double[], int)");
+ DataBufferDouble b = new DataBufferDouble(new double[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferDouble b1 = new DataBufferDouble((double[]) null, 1);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(double[], int, int)");
+ DataBufferDouble b = new DataBufferDouble(new double[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferDouble b1 = new DataBufferDouble((double[]) null, 1, 0);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble(new double[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferDouble(int, int)");
+ DataBufferDouble b = new DataBufferDouble(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0) ;
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferDouble b1 = new DataBufferDouble(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/getBankData.java b/gnu/testlet/java/awt/image/DataBufferDouble/getBankData.java
new file mode 100644
index 00000000..562d2deb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferDouble;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferDouble} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ double[][] data = new double[][] {{1, 2}};
+ DataBufferDouble b = new DataBufferDouble(data, 2);
+ double[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new double[][] {{1, 2, 3}};
+ b = new DataBufferDouble(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new double[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferDouble(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferDouble b2 = new DataBufferDouble(new double[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferDouble b3 = new DataBufferDouble(new double[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/getData.java b/gnu/testlet/java/awt/image/DataBufferDouble/getData.java
new file mode 100644
index 00000000..8fa95c41
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferDouble;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferDouble} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ double[] source = new double[] {1, 2};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ double[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new double[] {1, 2, 3};
+ b = new DataBufferDouble(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new double[] {1, 2, 3, 4};
+ b = new DataBufferDouble(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ double[][] source = new double[][] {{1, 2}, {3, 4}};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ double[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new double[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferDouble(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new double[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferDouble(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/getDataType.java b/gnu/testlet/java/awt/image/DataBufferDouble/getDataType.java
new file mode 100644
index 00000000..0b48b156
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferDouble;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferDouble(5).getDataType(), DataBuffer.TYPE_DOUBLE);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/getElem.java b/gnu/testlet/java/awt/image/DataBufferDouble/getElem.java
new file mode 100644
index 00000000..b743e74d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/getElem.java
@@ -0,0 +1,198 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferDouble;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ double[] data = new double[] { 1.1, -2.2, 3.3, -4.4 };
+
+ buf = new DataBufferDouble(new double[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), 3); // Check #1.
+ h.check(buf.getElem(1), -4); // Check #2.
+ h.check(buf.getElem(0, 0), 3); // Check #3.
+ h.check(buf.getElem(0, 1), -4); // Check #4.
+ h.check(buf.getElem(1, 0), 1); // Check #5.
+ h.check(buf.getElem(1, 1), -2); // Check #6.
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ double[] source = new double[] {1, 2, 3};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new double[] {1, 2, 3, 4};
+ b = new DataBufferDouble(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ double[][] source = new double[][] {{1, 2}, {3, 4}};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new double[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferDouble(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new double[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferDouble(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferDouble b2 = new DataBufferDouble(new double[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferDouble/setElem.java b/gnu/testlet/java/awt/image/DataBufferDouble/setElem.java
new file mode 100644
index 00000000..e0d7af6f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferDouble/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferDouble;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferDouble;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferDouble} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ double[] source = new double[] {1, 2};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new double[] {1, 2, 3, 4, 5};
+ b = new DataBufferDouble(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ double[][] source = new double[][] {{1, 2}, {3, 4}};
+ DataBufferDouble b = new DataBufferDouble(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Entries
new file mode 100644
index 00000000..10309408
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:16 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getDataType.java/1.2/Fri Aug 27 11:05:07 2004//
+/getElem.java/1.3/Sat Sep 18 17:20:16 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:16 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Repository
new file mode 100644
index 00000000..b615782b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferFloat
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Root b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/constructors.java b/gnu/testlet/java/awt/image/DataBufferFloat/constructors.java
new file mode 100644
index 00000000..64acc18a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/constructors.java
@@ -0,0 +1,255 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferFloat;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferFloat} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(int)");
+ DataBufferFloat b1 = new DataBufferFloat(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_FLOAT);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferFloat b2 = new DataBufferFloat(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferFloat b3 = new DataBufferFloat(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(float[][], int)");
+ float[][] source = new float[][] {{1.0f, 2.0f}};
+ DataBufferFloat b = new DataBufferFloat(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ float[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1.0f);
+ source[0][0] = 3.0f;
+ harness.check(banks[0][0] == 3.0f);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferFloat b1 = new DataBufferFloat((float[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferFloat b1 = new DataBufferFloat(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(float[][], int, int[])");
+ float[][] source = new float[][] {{1, 2}};
+ DataBufferFloat b = new DataBufferFloat(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new float[][] {{1.0f, 2.0f, 3.0f}, {4.0f, 5.0f, 6.0f, 7.0f}};
+ b = new DataBufferFloat(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferFloat b1 = new DataBufferFloat((float[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null offsets
+ pass = false;
+ try
+ {
+ DataBufferFloat b1 = new DataBufferFloat(new float[][]{{1.0f, 2.0f}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check source doesn't match offsets array
+ pass = false;
+ try
+ {
+ DataBufferFloat b2 = new DataBufferFloat(new float[][]{{1.0f, 2.0f}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(float[], int)");
+ DataBufferFloat b = new DataBufferFloat(new float[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferFloat b1 = new DataBufferFloat((float[]) null, 1);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(float[], int, int)");
+ DataBufferFloat b = new DataBufferFloat(new float[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferFloat b1 = new DataBufferFloat((float[]) null, 1, 0);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBufferFloat b2 = new DataBufferFloat(new float[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferFloat(int, int)");
+ DataBufferFloat b = new DataBufferFloat(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0);
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferFloat b1 = new DataBufferFloat(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferFloat b1 = new DataBufferFloat(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/getBankData.java b/gnu/testlet/java/awt/image/DataBufferFloat/getBankData.java
new file mode 100644
index 00000000..3d0b0f13
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferFloat;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferFloat} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ float[][] data = new float[][] {{1, 2}};
+ DataBufferFloat b = new DataBufferFloat(data, 2);
+ float[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new float[][] {{1, 2, 3}};
+ b = new DataBufferFloat(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new float[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferFloat(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferFloat b2 = new DataBufferFloat(new float[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferFloat b3 = new DataBufferFloat(new float[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/getData.java b/gnu/testlet/java/awt/image/DataBufferFloat/getData.java
new file mode 100644
index 00000000..3e459742
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferFloat;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferFloat} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ float[] source = new float[] {1, 2};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ float[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new float[] {1, 2, 3};
+ b = new DataBufferFloat(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new float[] {1, 2, 3, 4};
+ b = new DataBufferFloat(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ float[][] source = new float[][] {{1, 2}, {3, 4}};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ float[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new float[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferFloat(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new float[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferFloat(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/getDataType.java b/gnu/testlet/java/awt/image/DataBufferFloat/getDataType.java
new file mode 100644
index 00000000..639fc744
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferFloat;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferFloat(5).getDataType(), DataBuffer.TYPE_FLOAT);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/getElem.java b/gnu/testlet/java/awt/image/DataBufferFloat/getElem.java
new file mode 100644
index 00000000..13769b86
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/getElem.java
@@ -0,0 +1,197 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferFloat;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ float[] data = new float[] { 1.1f, -2.2f, 3.3f, -4.4f };
+
+ buf = new DataBufferFloat(new float[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), 3); // Check #1.
+ h.check(buf.getElem(1), -4); // Check #2.
+ h.check(buf.getElem(0, 0), 3); // Check #3.
+ h.check(buf.getElem(0, 1), -4); // Check #4.
+ h.check(buf.getElem(1, 0), 1); // Check #5.
+ h.check(buf.getElem(1, 1), -2); // Check #6.
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ float[] source = new float[] {1, 2, 3};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new float[] {1, 2, 3, 4};
+ b = new DataBufferFloat(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ float[][] source = new float[][] {{1, 2}, {3, 4}};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new float[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferFloat(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new float[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferFloat(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferFloat b2 = new DataBufferFloat(new float[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferFloat/setElem.java b/gnu/testlet/java/awt/image/DataBufferFloat/setElem.java
new file mode 100644
index 00000000..b4f31642
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferFloat/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferFloat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferFloat;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferFloat} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ float[] source = new float[] {1, 2};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new float[] {1, 2, 3, 4, 5};
+ b = new DataBufferFloat(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ float[][] source = new float[][] {{1, 2}, {3, 4}};
+ DataBufferFloat b = new DataBufferFloat(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Entries
new file mode 100644
index 00000000..6ab6b1ed
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:16 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getData.java/1.1/Sat Sep 18 17:20:16 2004//
+/getDataType.java/1.2/Sat Sep 18 17:20:16 2004//
+/getElem.java/1.2/Sat Sep 18 17:20:16 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:16 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Repository
new file mode 100644
index 00000000..d4f51e5f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferInt
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/CVS/Root b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/constructors.java b/gnu/testlet/java/awt/image/DataBufferInt/constructors.java
new file mode 100644
index 00000000..86446995
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/constructors.java
@@ -0,0 +1,250 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferInt} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int)");
+ DataBufferInt b1 = new DataBufferInt(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_INT);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferInt b2 = new DataBufferInt(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferInt b3 = new DataBufferInt(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int[][], int)");
+ int[][] source = new int[][] {{1, 2}};
+ DataBufferInt b = new DataBufferInt(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ int[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1);
+ source[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferInt b1 = new DataBufferInt((int[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferInt b1 = new DataBufferInt(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int[][], int, int[])");
+ int[][] source = new int[][] {{1, 2}};
+ DataBufferInt b = new DataBufferInt(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new int[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferInt(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferInt b1 = new DataBufferInt((int[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferInt b1 = new DataBufferInt(new int[][]{{1, 2}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferInt b2 = new DataBufferInt(new int[][]{{1, 2}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int[], int)");
+ DataBufferInt b = new DataBufferInt(new int[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferInt b1 = new DataBufferInt((int[]) null, 1);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int[], int, int)");
+ DataBufferInt b = new DataBufferInt(new int[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferInt b1 = new DataBufferInt((int[]) null, 1, 0);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBufferInt b2 = new DataBufferInt(new int[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferInt(int, int)");
+ DataBufferInt b = new DataBufferInt(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0);
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferInt b1 = new DataBufferInt(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferInt b1 = new DataBufferInt(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/getBankData.java b/gnu/testlet/java/awt/image/DataBufferInt/getBankData.java
new file mode 100644
index 00000000..8d84a03a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferInt;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferInt} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ int[][] data = new int[][] {{1, 2}};
+ DataBufferInt b = new DataBufferInt(data, 2);
+ int[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new int[][] {{1, 2, 3}};
+ b = new DataBufferInt(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new int[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferInt(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferInt b2 = new DataBufferInt(new int[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferInt b3 = new DataBufferInt(new int[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/getData.java b/gnu/testlet/java/awt/image/DataBufferInt/getData.java
new file mode 100644
index 00000000..074eac11
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferInt} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ int[] source = new int[] {1, 2};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ int[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new int[] {1, 2, 3};
+ b = new DataBufferInt(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new int[] {1, 2, 3, 4};
+ b = new DataBufferInt(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ int[][] source = new int[][] {{1, 2}, {3, 4}};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ int[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new int[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferInt(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferInt(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/getDataType.java b/gnu/testlet/java/awt/image/DataBufferInt/getDataType.java
new file mode 100644
index 00000000..e7033f0b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferInt(5).getDataType(), DataBuffer.TYPE_INT);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/getElem.java b/gnu/testlet/java/awt/image/DataBufferInt/getElem.java
new file mode 100644
index 00000000..2e0cefb2
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/getElem.java
@@ -0,0 +1,197 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferInt;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ int[] data = new int[] { -11, -22, -33, -44 };
+
+ buf = new DataBufferInt(new int[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), -33); // Check #1.
+ h.check(buf.getElem(1), -44); // Check #2.
+ h.check(buf.getElem(0, 0), -33); // Check #3.
+ h.check(buf.getElem(0, 1), -44); // Check #4.
+ h.check(buf.getElem(1, 0), -11); // Check #5.
+ h.check(buf.getElem(1, 1), -22); // Check #6.
+
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ int[] source = new int[] {1, 2, 3};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new int[] {1, 2, 3, 4};
+ b = new DataBufferInt(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ int[][] source = new int[][] {{1, 2}, {3, 4}};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new int[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferInt(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new int[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferInt(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferInt b2 = new DataBufferInt(new int[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferInt/setElem.java b/gnu/testlet/java/awt/image/DataBufferInt/setElem.java
new file mode 100644
index 00000000..9e22bb00
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferInt/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferInt;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferInt;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferInt} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ int[] source = new int[] {1, 2};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new int[] {1, 2, 3, 4, 5};
+ b = new DataBufferInt(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ int[][] source = new int[][] {{1, 2}, {3, 4}};
+ DataBufferInt b = new DataBufferInt(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Entries
new file mode 100644
index 00000000..51488116
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:17 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:17 2004//
+/getData.java/1.1/Sat Sep 18 17:20:17 2004//
+/getDataType.java/1.2/Sat Sep 18 17:20:17 2004//
+/getElem.java/1.2/Sat Sep 18 17:20:17 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:17 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Repository
new file mode 100644
index 00000000..758793a6
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferShort
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/CVS/Root b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/constructors.java b/gnu/testlet/java/awt/image/DataBufferShort/constructors.java
new file mode 100644
index 00000000..66fd94fe
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/constructors.java
@@ -0,0 +1,250 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferShort;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferShort} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(int)");
+ DataBufferShort b1 = new DataBufferShort(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_SHORT);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferShort b2 = new DataBufferShort(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferShort b3 = new DataBufferShort(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(short[][], int)");
+ short[][] source = new short[][] {{1, 2}};
+ DataBufferShort b = new DataBufferShort(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ short[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1);
+ source[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferShort b1 = new DataBufferShort((short[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferShort b1 = new DataBufferShort(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(short[][], int, int[])");
+ short[][] source = new short[][] {{1, 2}};
+ DataBufferShort b = new DataBufferShort(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferShort(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferShort b1 = new DataBufferShort((short[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferShort b1 = new DataBufferShort(new short[][]{{1, 2}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferShort b2 = new DataBufferShort(new short[][]{{1, 2}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(short[], int)");
+ DataBufferShort b = new DataBufferShort(new short[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferShort b1 = new DataBufferShort((short[]) null, 1);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(short[], int, int)");
+ DataBufferShort b = new DataBufferShort(new short[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ // this constructor doesn't throw an exception until you
+ // try to access the (null) data bank
+ DataBufferShort b1 = new DataBufferShort((short[]) null, 1, 0);
+ int ignore = b1.getElem(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBufferShort b2 = new DataBufferShort(new short[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(int, int)");
+ DataBufferShort b = new DataBufferShort(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0);
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferShort b1 = new DataBufferShort(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferShort b1 = new DataBufferShort(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/getBankData.java b/gnu/testlet/java/awt/image/DataBufferShort/getBankData.java
new file mode 100644
index 00000000..293d8571
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferShort;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferShort} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ short[][] data = new short[][] {{1, 2}};
+ DataBufferShort b = new DataBufferShort(data, 2);
+ short[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new short[][] {{1, 2, 3}};
+ b = new DataBufferShort(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferShort(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferShort b2 = new DataBufferShort(new short[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferShort b3 = new DataBufferShort(new short[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+}
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/getData.java b/gnu/testlet/java/awt/image/DataBufferShort/getData.java
new file mode 100644
index 00000000..95a44858
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferShort;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferShort} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ short[] source = new short[] {1, 2};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ short[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[] {1, 2, 3};
+ b = new DataBufferShort(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new short[] {1, 2, 3, 4};
+ b = new DataBufferShort(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ short[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferShort(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferShort(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/getDataType.java b/gnu/testlet/java/awt/image/DataBufferShort/getDataType.java
new file mode 100644
index 00000000..1d9677a8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferShort;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferShort(5).getDataType(), DataBuffer.TYPE_SHORT);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/getElem.java b/gnu/testlet/java/awt/image/DataBufferShort/getElem.java
new file mode 100644
index 00000000..43e4d4b4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/getElem.java
@@ -0,0 +1,198 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferShort;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ short[] data = new short[] { -11, -22, -33, -44 };
+
+ buf = new DataBufferShort(new short[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), -33); // Check #1.
+ h.check(buf.getElem(1), -44); // Check #2.
+ h.check(buf.getElem(0, 0), -33); // Check #3.
+ h.check(buf.getElem(0, 1), -44); // Check #4.
+ h.check(buf.getElem(1, 0), -11); // Check #5.
+ h.check(buf.getElem(1, 1), -22); // Check #6.
+
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ short[] source = new short[] {1, 2, 3};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new short[] {1, 2, 3, 4};
+ b = new DataBufferShort(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferShort(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferShort(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferShort b2 = new DataBufferShort(new short[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferShort/setElem.java b/gnu/testlet/java/awt/image/DataBufferShort/setElem.java
new file mode 100644
index 00000000..baa521fc
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferShort/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferShort;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferShort} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ short[] source = new short[] {1, 2};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new short[] {1, 2, 3, 4, 5};
+ b = new DataBufferShort(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferShort b = new DataBufferShort(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Entries b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Entries
new file mode 100644
index 00000000..51488116
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Sat Sep 18 17:20:17 2004//
+/getBankData.java/1.1/Sat Sep 18 17:20:17 2004//
+/getData.java/1.1/Sat Sep 18 17:20:17 2004//
+/getDataType.java/1.2/Sat Sep 18 17:20:17 2004//
+/getElem.java/1.2/Sat Sep 18 17:20:17 2004//
+/setElem.java/1.1/Sat Sep 18 17:20:17 2004//
+D
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Repository b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Repository
new file mode 100644
index 00000000..2f001070
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DataBufferUShort
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Root b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/constructors.java b/gnu/testlet/java/awt/image/DataBufferUShort/constructors.java
new file mode 100644
index 00000000..ee6a1dd9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/constructors.java
@@ -0,0 +1,248 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferUShort;
+
+/**
+ * Some tests for the constructors in the {@link DataBufferUShort} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferUShort(int)");
+ DataBufferUShort b1 = new DataBufferUShort(1);
+ harness.check(b1.getDataType() == DataBuffer.TYPE_USHORT);
+ harness.check(b1.getSize() == 1);
+ harness.check(b1.getNumBanks() == 1);
+ harness.check(b1.getOffset() == 0);
+
+ DataBufferUShort b2 = new DataBufferUShort(0);
+ harness.check(b2.getSize() == 0);
+ harness.check(b2.getNumBanks() == 1);
+ harness.check(b2.getOffset() == 0);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b3 = new DataBufferUShort(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferShort(short[][], int)");
+ short[][] source = new short[][] {{1, 2}};
+ DataBufferUShort b = new DataBufferUShort(source, 1);
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // does a change to the source array affect the buffer? yes
+ short[][] banks = b.getBankData();
+ harness.check(banks[0][0] == 1);
+ source[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort((short[][]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative size
+ DataBufferUShort b1 = new DataBufferUShort(source, -1);
+ harness.check(b1.getSize() == -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferUShort(short[][], int, int[])");
+ short[][] source = new short[][] {{1, 2}};
+ DataBufferUShort b = new DataBufferUShort(source, 1, new int[] {0});
+ harness.check(b.getSize() == 1);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferUShort(source, 2, new int[] {0, 1});
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 2);
+ harness.check(b.getOffsets()[1] == 1);
+ harness.check(b.getElem(1, 0) == 5);
+
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort((short[][]) null, 1, new int[] {0});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort(new short[][]{{1, 2}}, 1, (int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DataBufferUShort b2 = new DataBufferUShort(new short[][]{{1, 2}}, 1, new int[] {0, 0});
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferUShort(short[], int)");
+ DataBufferUShort b = new DataBufferUShort(new short[] {1, 2}, 2);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // this constructor, unlike all the other DataBuffer classes, rejects
+ // a null bank
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort((short[]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferUShort(short[], int, int)");
+ DataBufferUShort b = new DataBufferUShort(new short[] {1, 2}, 2, 0);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getNumBanks() == 1);
+ harness.check(b.getOffset() == 0);
+
+ // this constructor, unlike all the other DataBuffer classes, rejects
+ // a null bank
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort((short[]) null, 1, 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative size fail? no
+ pass = true;
+ try
+ {
+ DataBuffer b1 = new DataBufferUShort(new short[] {1, 2}, -1, 0);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("DataBufferUShort(int, int)");
+ DataBufferUShort b = new DataBufferUShort(2, 3);
+ harness.check(b.getNumBanks() == 3);
+ harness.check(b.getSize() == 2);
+ harness.check(b.getOffset() == 0);
+
+ // does negative size fail? yes
+ boolean pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort(-1, 1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // does negative banks fail? yes
+ pass = false;
+ try
+ {
+ DataBufferUShort b1 = new DataBufferUShort(1, -1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/getBankData.java b/gnu/testlet/java/awt/image/DataBufferUShort/getBankData.java
new file mode 100644
index 00000000..0f2d4137
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/getBankData.java
@@ -0,0 +1,78 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferUShort;
+import java.util.Arrays;
+
+/**
+ * Some tests for the getBankData() method in the {@link DataBufferUShort} class.
+ */
+public class getBankData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that array updates pass through
+ short[][] data = new short[][] {{1, 2}};
+ DataBufferUShort b = new DataBufferUShort(data, 2);
+ short[][] banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+ data[0][0] = 3;
+ harness.check(banks[0][0] == 3);
+
+ // test where supplied array is bigger than 'size'
+ data = new short[][] {{1, 2, 3}};
+ b = new DataBufferUShort(data, 2);
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // test where offsets are specified
+ data = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
+ b = new DataBufferUShort(data, 2, new int[] {0, 1});
+ banks = b.getBankData();
+ harness.check(Arrays.equals(b.getBankData(), data));
+
+ // check that a single bank buffer returns a valid array
+ DataBufferUShort b2 = new DataBufferUShort(new short[] {1, 2}, 2);
+ banks = b2.getBankData();
+ harness.check(banks.length == 1);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[0][1] == 2);
+
+ // check that a multi bank buffer returns a valid array
+ DataBufferUShort b3 = new DataBufferUShort(new short[][] {{1}, {2}}, 1);
+ banks = b3.getBankData();
+ harness.check(banks.length == 2);
+ harness.check(banks[0][0] == 1);
+ harness.check(banks[1][0] == 2);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/getData.java b/gnu/testlet/java/awt/image/DataBufferUShort/getData.java
new file mode 100644
index 00000000..ed10901f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/getData.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferUShort;
+
+/**
+ * Some tests for the geData() methods in the {@link DataBufferUShort} class.
+ */
+public class getData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGetData1(harness);
+ testGetData2(harness);
+ }
+
+ private void testGetData1(TestHarness harness) {
+ harness.checkPoint("getData()");
+
+ // check simple case
+ short[] source = new short[] {1, 2};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ short[] data = b.getData();
+ harness.check(data.length == 2);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[] {1, 2, 3};
+ b = new DataBufferUShort(source, 2);
+ data = b.getData();
+ harness.check(data.length == 3);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+
+ // test where offsets are specified
+ source = new short[] {1, 2, 3, 4};
+ b = new DataBufferUShort(source, 2, 1);
+ data = b.getData();
+ harness.check(data.length == 4);
+ harness.check(data[0] == 1);
+ harness.check(data[1] == 2);
+ harness.check(data[2] == 3);
+ harness.check(data[3] == 4);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[2] = 99;
+ harness.check(data[2] == 99);
+ }
+
+ private void testGetData2(TestHarness harness) {
+ harness.checkPoint("getData(int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ short[] data = b.getData(1);
+ harness.check(data.length == 2);
+ harness.check(data[0] == 3);
+ harness.check(data[1] == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferUShort(source, 2);
+ data = b.getData(1);
+ harness.check(data.length == 3);
+ harness.check(data[0] == 4);
+ harness.check(data[1] == 5);
+ harness.check(data[2] == 6);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferUShort(source, 2, new int[] {1, 2});
+ data = b.getData(1);
+ harness.check(data.length == 4);
+ harness.check(data[0] == 5);
+ harness.check(data[1] == 6);
+ harness.check(data[2] == 7);
+ harness.check(data[3] == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(data[2] == 99);
+
+ // check bounds exceptions
+ boolean pass = true;
+ try
+ {
+ b.getData(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getData(2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/getDataType.java b/gnu/testlet/java/awt/image/DataBufferUShort/getDataType.java
new file mode 100644
index 00000000..46e5106b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/getDataType.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferUShort;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getDataType
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new DataBufferUShort(5).getDataType(), DataBuffer.TYPE_USHORT);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/getElem.java b/gnu/testlet/java/awt/image/DataBufferUShort/getElem.java
new file mode 100644
index 00000000..8047d1e6
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/getElem.java
@@ -0,0 +1,197 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferUShort;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getElem
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DataBuffer buf;
+ short[] data = new short[] { -11, -22, -33, -44 };
+
+ buf = new DataBufferUShort(new short[][] { data, data }, 2,
+ new int[] { 2, 0 });
+
+ h.check(buf.getElem(0), 0x10000 - 33); // Check #1.
+ h.check(buf.getElem(1), 0x10000 - 44); // Check #2.
+ h.check(buf.getElem(0, 0), 0x10000 - 33); // Check #3.
+ h.check(buf.getElem(0, 1), 0x10000 - 44); // Check #4.
+ h.check(buf.getElem(1, 0), 0x10000 - 11); // Check #5.
+ h.check(buf.getElem(1, 1), 0x10000 - 22); // Check #6.
+ // new tests added by David Gilbert
+ testGetElem1(h);
+ testGetElem2(h);
+
+ }
+
+ private void testGetElem1(TestHarness harness)
+ {
+ harness.checkPoint("getElem(int)");
+
+ // test where supplied array is bigger than 'size'
+ short[] source = new short[] {1, 2, 3};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ harness.check(b.getElem(0) == 1);
+ harness.check(b.getElem(1) == 2);
+ harness.check(b.getElem(2) == 3);
+
+ boolean pass = false;
+ try
+ {
+ b.getElem(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test where offsets are specified
+ source = new short[] {1, 2, 3, 4};
+ b = new DataBufferUShort(source, 2, 1);
+ harness.check(b.getElem(-1) == 1);
+ harness.check(b.getElem(0) == 2);
+ harness.check(b.getElem(1) == 3);
+ harness.check(b.getElem(2) == 4);
+
+ pass = false;
+ try
+ {
+ b.getElem(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(-2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGetElem2(TestHarness harness) {
+ harness.checkPoint("getElem(int, int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ harness.check(b.getElem(1, 0) == 3);
+ harness.check(b.getElem(1, 1) == 4);
+
+ // test where supplied array is bigger than 'size'
+ source = new short[][] {{1, 2, 3}, {4, 5, 6}};
+ b = new DataBufferUShort(source, 2);
+ harness.check(b.getElem(1, 2) == 6);
+
+ // test where offsets are specified
+ source = new short[][] {{1, 2, 3, 4}, {5, 6, 7, 8}};
+ b = new DataBufferUShort(source, 2, new int[] {1, 2});
+ harness.check(b.getElem(1, -2) == 5);
+ harness.check(b.getElem(1, -1) == 6);
+ harness.check(b.getElem(1, 0) == 7);
+ harness.check(b.getElem(1, 1) == 8);
+
+ // does a change to the source affect the DataBuffer? Yes
+ source[1][2] = 99;
+ harness.check(source[1][2] == 99);
+ harness.check(b.getElem(1, 0) == 99);
+
+ // test when the bank index is out of bounds
+ boolean pass = true;
+ try
+ {
+ b.getElem(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(2, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test when the item index is out of bounds
+ pass = true;
+ try
+ {
+ b.getElem(0, -2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.getElem(1, 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the array of arrays should reflect the single dimension array
+ DataBufferUShort b2 = new DataBufferUShort(new short[] {1, 2, 3}, 3);
+ harness.check(b2.getElem(0, 1) == 2);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DataBufferUShort/setElem.java b/gnu/testlet/java/awt/image/DataBufferUShort/setElem.java
new file mode 100644
index 00000000..9b03790f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DataBufferUShort/setElem.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.awt.image.DataBufferUShort;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBufferUShort;
+
+/**
+ * Some tests for the setElem() methods in the {@link DataBufferUShort} class.
+ */
+public class setElem implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testSetElem1(harness);
+ testSetElem2(harness);
+ }
+
+ private void testSetElem1(TestHarness harness) {
+ harness.checkPoint("setElem(int, int)");
+
+ short[] source = new short[] {1, 2};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+
+ // does the source array get updated? Yes
+ harness.check(source[1] == 99);
+
+ // test with offsets
+ source = new short[] {1, 2, 3, 4, 5};
+ b = new DataBufferUShort(source, 4, 1);
+ harness.check(b.getElem(1) == 3);
+ b.setElem(1, 99);
+ harness.check(b.getElem(1) == 99);
+ harness.check(source[2] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-2, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(4, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSetElem2(TestHarness harness) {
+ harness.checkPoint("setElem(int, int, int)");
+
+ short[][] source = new short[][] {{1, 2}, {3, 4}};
+ DataBufferUShort b = new DataBufferUShort(source, 2);
+ b.setElem(1, 1, 99);
+ harness.check(b.getElem(1, 1) == 99);
+ // does the source array get updated?
+ harness.check(source[1][1] == 99);
+
+ boolean pass = false;
+ try
+ {
+ b.setElem(-1, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ b.setElem(2, 1, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DirectColorModel/CVS/Entries b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Entries
new file mode 100644
index 00000000..e98ee716
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Entries
@@ -0,0 +1,3 @@
+/coerceData.java/1.1/Mon Sep 25 15:35:00 2006//
+/constructors.java/1.1/Tue May 31 09:44:12 2005//
+D
diff --git a/gnu/testlet/java/awt/image/DirectColorModel/CVS/Repository b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Repository
new file mode 100644
index 00000000..92170d12
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/DirectColorModel
diff --git a/gnu/testlet/java/awt/image/DirectColorModel/CVS/Root b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DirectColorModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/DirectColorModel/coerceData.java b/gnu/testlet/java/awt/image/DirectColorModel/coerceData.java
new file mode 100644
index 00000000..2cad234d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DirectColorModel/coerceData.java
@@ -0,0 +1,169 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+
+// 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.java.awt.image.DirectColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.BandedSampleModel;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+
+/**
+ * Some checks for the coerceData method in the {@link DirectColorModel} class.
+ */
+public class coerceData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("coerceData with BandedSampleModel");
+ runTest(harness, new BandedSampleModel(DataBuffer.TYPE_INT,
+ 50, 50, 4));
+
+ harness.checkPoint("coerceData with ComponentSampleModel");
+ runTest(harness, new ComponentSampleModel(DataBuffer.TYPE_INT,
+ 50, 50, 4, 200,
+ new int[]{0, 1, 2, 3}));
+
+ // MultiPixelPackedSampleModel not allowed, since that sample model can
+ // only represent one-banded images. We should check to ensure failure
+ // is consistent.
+
+ harness.checkPoint("coerceData with PixelInterleavedSampleModel");
+ runTest(harness, new PixelInterleavedSampleModel(DataBuffer.TYPE_INT,
+ 50, 50, 4, 200,
+ new int[]{0, 1, 2, 3}));
+
+ harness.checkPoint("coerceData with SinglePixelPackedSampleModel");
+ runTest(harness, new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 50, 50,
+ new int[]{0x00ff0000,
+ 0x0000ff00,
+ 0x000000ff,
+ 0xff000000}));
+ }
+
+ private void runTest(TestHarness harness, SampleModel sample)
+ {
+ // Create and popular raster for testing
+ WritableRaster rast = Raster.createWritableRaster(sample, new Point(0,0));
+
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ if (b < 3)
+ rast.setSample(x, y, b, (float)x+y+b);
+ else
+ rast.setSample(x, y, b, (float)((x+y)));
+
+ DirectColorModel dcm = new DirectColorModel(32, 0x00ff0000, 0x0000ff00,
+ 0x000000ff, 0xff000000);
+
+ harness.check(dcm.isAlphaPremultiplied(), false);
+
+ // Check to ensure data is not changed needlessly
+ ColorModel resultCM = dcm.coerceData(rast, false);
+ harness.check(resultCM.getClass().equals(dcm.getClass()));
+ harness.check(resultCM.isAlphaPremultiplied(), false);
+ harness.check(dcm, resultCM);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ harness.check(rast.getSample(x, y, b), (x+y+b));
+ else
+ harness.check(rast.getSampleFloat(x, y, b), (x+y));
+ }
+
+ // Coerce data into a premultiplied state
+ resultCM = dcm.coerceData(rast, true);
+
+ // Ensure we're still using the same color model!
+ harness.check(resultCM.getClass().equals(dcm.getClass()));
+ harness.check(resultCM.isAlphaPremultiplied(), true);
+ harness.check(! (dcm == resultCM)); // object is cloned...
+
+ // Check values
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ harness.check(rast.getSample(x, y, b),
+ Math.round((x+y+b)*((x+y)/(float)255)));
+ else
+ harness.check(rast.getSampleFloat(x, y, b), x+y);
+ }
+
+ // Make a copy of the raster, to compare against for the next test
+ WritableRaster rast2 = Raster.createWritableRaster(sample, new Point(0,0));
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ rast2.setSample(x, y, b,
+ rast.getSample(x, y, b));
+
+ // And do the reverse.. un-multiply
+ harness.check(resultCM.isAlphaPremultiplied(), true);
+ ColorModel resultCM2 = resultCM.coerceData(rast, false);
+ harness.check(resultCM2.getClass().equals(resultCM.getClass()));
+ harness.check(resultCM2.isAlphaPremultiplied(), false);
+ harness.check(! (resultCM == resultCM2));
+
+ // Check values
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 50; y++)
+ for (int b = 0; b < 4; b++)
+ {
+ if (b < 3)
+ {
+ // Do some trickery to work around differing floating-point
+ // precision (a division equalling 0.49999 will round up or
+ // down unpredictably)
+ float expected = rast2.getSample(x, y, b)/((x+y)/((float)255));
+ if (expected - (int)expected > 0.49
+ && expected - (int)expected < 0.51)
+ harness.check(rast.getSample(x, y, b) == (int)expected
+ || rast.getSample(x, y, b) == (int)expected + 1);
+ else
+ harness.check(rast.getSample(x, y, b),Math.round(expected));
+ }
+ else
+ harness.check(rast.getSampleFloat(x, y, b), (x+y));
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/DirectColorModel/constructors.java b/gnu/testlet/java/awt/image/DirectColorModel/constructors.java
new file mode 100644
index 00000000..724bb115
--- /dev/null
+++ b/gnu/testlet/java/awt/image/DirectColorModel/constructors.java
@@ -0,0 +1,201 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.DirectColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+
+/**
+ * Some checks for the constructors in the {@link DirectColorModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(ColorSpace, int, int, int, int, int, boolean, int)");
+ DirectColorModel m1 = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB),
+ 32, 0xF000, 0xF00, 0xF0, 0xF, false, DataBuffer.TYPE_INT);
+ harness.check(m1.getTransparency(), Transparency.TRANSLUCENT);
+
+ // try null ColorSpace
+ boolean pass = false;
+ try
+ {
+ m1 = new DirectColorModel(null, 32, 0xF000, 0xF00, 0xF0, 0xF, false,
+ DataBuffer.TYPE_INT);
+
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try non-RGB ColorSpace
+ pass = false;
+ try
+ {
+ m1 = new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), 32,
+ 0xF000, 0xF00, 0xF0, 0xF, false, DataBuffer.TYPE_INT);
+
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int)");
+
+ // first an 8 bit model
+ DirectColorModel m1 = new DirectColorModel(8, 0xF0, 0x0C, 0x03);
+ harness.check(m1.getPixelSize(), 8);
+ harness.check(m1.getComponentSize(0), 4);
+ harness.check(m1.getComponentSize(1), 2);
+ harness.check(m1.getComponentSize(2), 2);
+ harness.check(m1.getTransparency(), Transparency.OPAQUE);
+ harness.check(m1.getTransferType(), DataBuffer.TYPE_BYTE);
+
+ // 16 bit model
+ DirectColorModel m2 = new DirectColorModel(16, 0xFF00, 0xF0, 0x0F);
+ harness.check(m2.getPixelSize(), 16);
+ harness.check(m2.getComponentSize(0), 8);
+ harness.check(m2.getComponentSize(1), 4);
+ harness.check(m2.getComponentSize(2), 4);
+ harness.check(m2.getTransparency(), Transparency.OPAQUE);
+ harness.check(m2.getTransferType(), DataBuffer.TYPE_USHORT);
+
+ // 32 bit model
+ DirectColorModel m3 = new DirectColorModel(32, 0xFFFF00, 0xFF00, 0xFF);
+ harness.check(m3.getPixelSize(), 32);
+ harness.check(m3.getComponentSize(0), 16);
+ harness.check(m3.getComponentSize(1), 8);
+ harness.check(m3.getComponentSize(2), 8);
+ harness.check(m3.getTransparency(), Transparency.OPAQUE);
+ harness.check(m3.getTransferType(), DataBuffer.TYPE_INT);
+
+ // check negative bits
+ boolean pass = false;
+ try
+ {
+ /* ColorModel m = */ new DirectColorModel(-1, 0xFFFF00, 0xFF00, 0xFF);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check bits > 32
+ pass = false;
+ try
+ {
+ /* ColorModel m = */ new DirectColorModel(33, 0xFFFF00, 0xFF00, 0xFF);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DirectColorModel(int, int, int, int, int)");
+
+ // first an 8 bit model
+ DirectColorModel m1 = new DirectColorModel(8, 0xC0, 0x30, 0x0C, 0x03);
+ harness.check(m1.getPixelSize(), 8);
+ harness.check(m1.getComponentSize(0), 2);
+ harness.check(m1.getComponentSize(1), 2);
+ harness.check(m1.getComponentSize(2), 2);
+ harness.check(m1.getComponentSize(3), 2);
+ harness.check(m1.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(m1.getTransferType(), DataBuffer.TYPE_BYTE);
+
+ // 16 bit model
+ DirectColorModel m2 = new DirectColorModel(16, 0xF000, 0x0F00, 0xF0, 0x0F);
+ harness.check(m2.getPixelSize(), 16);
+ harness.check(m2.getComponentSize(0), 4);
+ harness.check(m2.getComponentSize(1), 4);
+ harness.check(m2.getComponentSize(2), 4);
+ harness.check(m2.getComponentSize(3), 4);
+ harness.check(m2.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(m2.getTransferType(), DataBuffer.TYPE_USHORT);
+
+ // 32 bit model
+ DirectColorModel m3 = new DirectColorModel(32, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
+ harness.check(m3.getPixelSize(), 32);
+ harness.check(m3.getComponentSize(0), 8);
+ harness.check(m3.getComponentSize(1), 8);
+ harness.check(m3.getComponentSize(2), 8);
+ harness.check(m3.getComponentSize(3), 8);
+ harness.check(m3.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(m3.getTransferType(), DataBuffer.TYPE_INT);
+
+ // check negative bits
+ boolean pass = false;
+ try
+ {
+ /* ColorModel m = */ new DirectColorModel(-1, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check bits > 32
+ pass = false;
+ try
+ {
+ /* ColorModel m = */ new DirectColorModel(33, 0xFF000000, 0xFF0000, 0xFF00, 0xFF);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/CVS/Entries b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Entries
new file mode 100644
index 00000000..4979e861
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Entries
@@ -0,0 +1,16 @@
+/constructors.java/1.1/Thu Apr 14 21:54:25 2005//
+/getAlpha.java/1.1/Thu Apr 14 21:54:25 2005//
+/getAlphas.java/1.1/Thu Apr 14 21:54:25 2005//
+/getBlue.java/1.1/Thu Apr 14 21:54:25 2005//
+/getBlues.java/1.1/Thu Apr 14 21:54:25 2005//
+/getColorSpace.java/1.1/Thu Apr 14 21:54:25 2005//
+/getComponentSize.java/1.1/Thu Apr 14 21:54:25 2005//
+/getGreen.java/1.1/Thu Apr 14 21:54:25 2005//
+/getGreens.java/1.1/Thu Apr 14 21:54:25 2005//
+/getPixelSize.java/1.1/Thu Apr 14 21:54:25 2005//
+/getRed.java/1.1/Thu Apr 14 21:54:25 2005//
+/getReds.java/1.1/Thu Apr 14 21:54:25 2005//
+/getTransparency.java/1.1/Thu Apr 14 21:54:25 2005//
+/getTransparentPixel.java/1.1/Thu Apr 14 21:54:25 2005//
+/isValid.java/1.1/Thu Apr 14 21:54:25 2005//
+D
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/CVS/Repository b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Repository
new file mode 100644
index 00000000..b7787996
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/IndexColorModel
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/CVS/Root b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/constructors.java b/gnu/testlet/java/awt/image/IndexColorModel/constructors.java
new file mode 100644
index 00000000..5d72c06e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/constructors.java
@@ -0,0 +1,587 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Transparency;
+import java.awt.image.DataBuffer;
+import java.awt.image.IndexColorModel;
+import java.math.BigInteger;
+
+/**
+ * Some checks for the constructors in the IndexColorModel class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+ private static final byte[] A4 = {(byte) 13, (byte) 14, (byte) 15, (byte) 16};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final int[] CMAP_INT = {new Color(1, 5, 9).getRGB(),
+ new Color(2, 6, 10).getRGB(), new Color(3, 7, 11).getRGB(),
+ new Color(4, 8, 12).getRGB()};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ private static final int[] CMAP_INT_WITH_ALPHA = {new Color(1, 5, 9, 13).getRGB(),
+ new Color(2, 6, 10, 14).getRGB(), new Color(3, 7, 11, 15).getRGB(),
+ new Color(4, 8, 12, 16).getRGB()};
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, byte[], byte[], byte[])");
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getTransparency(), Transparency.OPAQUE);
+ harness.check(m1.getMapSize(), 4);
+ harness.check(m1.getPixelSize(), 2);
+ harness.check(m1.getTransparentPixel(), -1);
+ harness.check(!m1.hasAlpha());
+ harness.check(!m1.isAlphaPremultiplied());
+ harness.check(m1.getNumComponents(), 3);
+ harness.check(m1.getNumColorComponents(), 3);
+
+ // try bits < 1
+ boolean pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(0, 4, R4, G4, B4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bits > 16
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(17, 4, R4, G4, B4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try size bigger than arrays
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 99, R4, G4, B4);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null red array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, null, G4, B4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null green array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, null, B4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null blue array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, G4, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, byte[], byte[], byte[], byte[])");
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4, A4);
+ harness.check(m1.getTransparency(), Transparency.TRANSLUCENT);
+ harness.check(m1.getMapSize(), 4);
+ harness.check(m1.getPixelSize(), 2);
+ harness.check(m1.hasAlpha());
+ harness.check(!m1.isAlphaPremultiplied());
+
+ // try bits < 1
+ boolean pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(0, 4, R4, G4, B4, A4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bits > 16
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(17, 4, R4, G4, B4, A4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try size bigger than arrays
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 99, R4, G4, B4, A4);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null red array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, null, G4, B4, A4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null green array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, null, B4, A4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null blue array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, G4, null, A4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null alpha array
+ IndexColorModel m = new IndexColorModel(2, 4, R4, G4, B4, null);
+ harness.check(m.getTransparency(), Transparency.OPAQUE);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, byte[], byte[], byte[], int)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ harness.check(m1.getTransparency(), Transparency.BITMASK);
+ harness.check(m1.getMapSize(), 4);
+ harness.check(m1.getPixelSize(), 2);
+ harness.check(m1.getTransparentPixel(), 2);
+ harness.check(m1.hasAlpha());
+ harness.check(!m1.isAlphaPremultiplied());
+
+ // try bits < 1
+ boolean pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(0, 4, R4, G4, B4, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bits > 16
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(17, 4, R4, G4, B4, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try size bigger than arrays
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 99, R4, G4, B4, 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null red array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, null, G4, B4, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null green array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, null, B4, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null blue array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, R4, G4, null, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative trans
+ IndexColorModel m = new IndexColorModel(2, 4, R4, G4, B4, -1);
+ harness.check(m.getTransparentPixel(), -1);
+ harness.check(m.getTransparency(), Transparency.OPAQUE);
+
+ m = new IndexColorModel(2, 4, R4, G4, B4, -99);
+ harness.check(m.getTransparentPixel(), -1);
+ harness.check(m.getTransparency(), Transparency.OPAQUE);
+
+ // try trans too large
+ m = new IndexColorModel(2, 4, R4, G4, B4, 4);
+ harness.check(m.getTransparentPixel(), -1);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, byte[], int, boolean)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, CMAP, 0, false);
+ harness.check(!m1.isAlphaPremultiplied());
+
+ harness.check(m1.getRed(0), 1);
+ harness.check(m1.getRed(1), 2);
+ harness.check(m1.getRed(2), 3);
+ harness.check(m1.getRed(3), 4);
+ harness.check(m1.getGreen(0), 5);
+ harness.check(m1.getGreen(1), 6);
+ harness.check(m1.getGreen(2), 7);
+ harness.check(m1.getGreen(3), 8);
+ harness.check(m1.getBlue(0), 9);
+ harness.check(m1.getBlue(1), 10);
+ harness.check(m1.getBlue(2), 11);
+ harness.check(m1.getBlue(3), 12);
+ harness.check(m1.getAlpha(0), 255);
+ harness.check(m1.getAlpha(1), 255);
+ harness.check(m1.getAlpha(2), 255);
+ harness.check(m1.getAlpha(3), 255);
+ harness.check(!m1.hasAlpha());
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true);
+ harness.check(m2.getRed(0), 1);
+ harness.check(m2.getRed(1), 2);
+ harness.check(m2.getRed(2), 3);
+ harness.check(m2.getRed(3), 4);
+ harness.check(m2.getGreen(0), 5);
+ harness.check(m2.getGreen(1), 6);
+ harness.check(m2.getGreen(2), 7);
+ harness.check(m2.getGreen(3), 8);
+ harness.check(m2.getBlue(0), 9);
+ harness.check(m2.getBlue(1), 10);
+ harness.check(m2.getBlue(2), 11);
+ harness.check(m2.getBlue(3), 12);
+ harness.check(m2.getAlpha(0), 13);
+ harness.check(m2.getAlpha(1), 14);
+ harness.check(m2.getAlpha(2), 15);
+ harness.check(m2.getAlpha(3), 16);
+ harness.check(m2.hasAlpha());
+
+ // try bits < 1
+ boolean pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(0, 4, CMAP, 0, false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bits > 16
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(17, 4, CMAP, 0, false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try size bigger than arrays
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 99, CMAP, 0, false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null cmap array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, null, 0, false);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, byte[], int, boolean, int)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, CMAP, 0, false, 1);
+ harness.check(m1.getTransparentPixel(), 1);
+ harness.check(!m1.isAlphaPremultiplied());
+
+ harness.check(m1.getRed(0), 1);
+ harness.check(m1.getRed(1), 2);
+ harness.check(m1.getRed(2), 3);
+ harness.check(m1.getRed(3), 4);
+ harness.check(m1.getGreen(0), 5);
+ harness.check(m1.getGreen(1), 6);
+ harness.check(m1.getGreen(2), 7);
+ harness.check(m1.getGreen(3), 8);
+ harness.check(m1.getBlue(0), 9);
+ harness.check(m1.getBlue(1), 10);
+ harness.check(m1.getBlue(2), 11);
+ harness.check(m1.getBlue(3), 12);
+ harness.check(m1.getAlpha(0), 255);
+ harness.check(m1.getAlpha(1), 0);
+ harness.check(m1.getAlpha(2), 255);
+ harness.check(m1.getAlpha(3), 255);
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true, 2);
+ harness.check(m2.getRed(0), 1);
+ harness.check(m2.getRed(1), 2);
+ harness.check(m2.getRed(2), 3);
+ harness.check(m2.getRed(3), 4);
+ harness.check(m2.getGreen(0), 5);
+ harness.check(m2.getGreen(1), 6);
+ harness.check(m2.getGreen(2), 7);
+ harness.check(m2.getGreen(3), 8);
+ harness.check(m2.getBlue(0), 9);
+ harness.check(m2.getBlue(1), 10);
+ harness.check(m2.getBlue(2), 11);
+ harness.check(m2.getBlue(3), 12);
+ harness.check(m2.getAlpha(0), 13);
+ harness.check(m2.getAlpha(1), 14);
+ harness.check(m2.getAlpha(2), 0);
+ harness.check(m2.getAlpha(3), 16);
+
+ // try bits < 1
+ boolean pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(0, 4, CMAP, 0, false, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try bits > 16
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(17, 4, CMAP, 0, false, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try size bigger than arrays
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 99, CMAP, 0, false, 3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null cmap array
+ pass = false;
+ try
+ {
+ /* IndexColorModel m = */ new IndexColorModel(2, 4, null, 0, false, 3);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, int[], int, boolean, int, int)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, CMAP_INT, 0, false, 1, DataBuffer.TYPE_BYTE);
+ harness.check(m1.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(m1.getTransparentPixel(), 1);
+ harness.check(!m1.isAlphaPremultiplied());
+
+ harness.check(m1.getRed(0), 1);
+ harness.check(m1.getRed(1), 2);
+ harness.check(m1.getRed(2), 3);
+ harness.check(m1.getRed(3), 4);
+ harness.check(m1.getGreen(0), 5);
+ harness.check(m1.getGreen(1), 6);
+ harness.check(m1.getGreen(2), 7);
+ harness.check(m1.getGreen(3), 8);
+ harness.check(m1.getBlue(0), 9);
+ harness.check(m1.getBlue(1), 10);
+ harness.check(m1.getBlue(2), 11);
+ harness.check(m1.getBlue(3), 12);
+ harness.check(m1.getAlpha(0), 255);
+ harness.check(m1.getAlpha(1), 0);
+ harness.check(m1.getAlpha(2), 255);
+ harness.check(m1.getAlpha(3), 255);
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP_INT_WITH_ALPHA, 0, true, 1, DataBuffer.TYPE_BYTE);
+ harness.check(m2.getTransferType(), DataBuffer.TYPE_BYTE);
+ harness.check(m2.getRed(0), 1);
+ harness.check(m2.getRed(1), 2);
+ harness.check(m2.getRed(2), 3);
+ harness.check(m2.getRed(3), 4);
+ harness.check(m2.getGreen(0), 5);
+ harness.check(m2.getGreen(1), 6);
+ harness.check(m2.getGreen(2), 7);
+ harness.check(m2.getGreen(3), 8);
+ harness.check(m2.getBlue(0), 9);
+ harness.check(m2.getBlue(1), 10);
+ harness.check(m2.getBlue(2), 11);
+ harness.check(m2.getBlue(3), 12);
+ harness.check(m2.getAlpha(0), 13);
+ harness.check(m2.getAlpha(1), 0);
+ harness.check(m2.getAlpha(2), 15);
+ harness.check(m2.getAlpha(3), 16);
+ }
+
+ private void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("IndexColorModel(int, int, int[], int, int, BigInteger)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, CMAP_INT, 0, DataBuffer.TYPE_BYTE, new BigInteger("11"));
+ harness.check(!m1.isAlphaPremultiplied());
+
+ harness.check(m1.isValid(0));
+ harness.check(m1.isValid(1));
+ harness.check(!m1.isValid(2));
+ harness.check(m1.isValid(3));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getAlpha.java b/gnu/testlet/java/awt/image/IndexColorModel/getAlpha.java
new file mode 100644
index 00000000..a4bff607
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getAlpha.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getAlpha() method.
+ */
+public class getAlpha implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+ private static final byte[] A4 = {(byte) 13, (byte) 14, (byte) 15, (byte) 16};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4, A4);
+ harness.check(m1.getAlpha(0), 13);
+ harness.check(m1.getAlpha(1), 14);
+ harness.check(m1.getAlpha(2), 15);
+ harness.check(m1.getAlpha(3), 16);
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP, 0, false, 1);
+ harness.check(m2.getAlpha(0), 255);
+ harness.check(m2.getAlpha(1), 0);
+ harness.check(m2.getAlpha(2), 255);
+ harness.check(m2.getAlpha(3), 255);
+
+ // try negative pixel
+ boolean pass = false;
+ try
+ {
+ m1.getAlpha(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixel too large
+ harness.check(m1.getAlpha(99), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getAlphas.java b/gnu/testlet/java/awt/image/IndexColorModel/getAlphas.java
new file mode 100644
index 00000000..03f8e37b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getAlphas.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getAlphas() method.
+ */
+public class getAlphas implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+ private static final byte[] A4 = {(byte) 13, (byte) 14, (byte) 15, (byte) 16};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4, A4);
+ byte[] a = new byte[4];
+ m1.getAlphas(a);
+ harness.check(a[0], (byte) 13);
+ harness.check(a[1], (byte) 14);
+ harness.check(a[2], (byte) 15);
+ harness.check(a[3], (byte) 16);
+
+ // try null array
+ boolean pass = false;
+ try
+ {
+ m1.getAlphas(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try array too small to hold results
+ pass = false;
+ try
+ {
+ m1.getAlphas(new byte[3]);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getBlue.java b/gnu/testlet/java/awt/image/IndexColorModel/getBlue.java
new file mode 100644
index 00000000..8c371fb1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getBlue.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getBlue() method.
+ */
+public class getBlue implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getBlue(0), 9);
+ harness.check(m1.getBlue(1), 10);
+ harness.check(m1.getBlue(2), 11);
+ harness.check(m1.getBlue(3), 12);
+
+ // try negative pixel
+ boolean pass = false;
+ try
+ {
+ m1.getGreen(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixel too large
+ harness.check(m1.getBlue(4), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getBlues.java b/gnu/testlet/java/awt/image/IndexColorModel/getBlues.java
new file mode 100644
index 00000000..8dbee8d3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getBlues.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getBlues() method.
+ */
+public class getBlues implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ byte[] b = new byte[4];
+ m1.getBlues(b);
+ harness.check(b[0], (byte) 9);
+ harness.check(b[1], (byte) 10);
+ harness.check(b[2], (byte) 11);
+ harness.check(b[3], (byte) 12);
+
+ // try null array
+ boolean pass = false;
+ try
+ {
+ m1.getBlues(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try array too small to hold results
+ pass = false;
+ try
+ {
+ m1.getBlues(new byte[3]);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getColorSpace.java b/gnu/testlet/java/awt/image/IndexColorModel/getColorSpace.java
new file mode 100644
index 00000000..d02facc3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getColorSpace.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getColorSpace() method.
+ */
+public class getColorSpace implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getColorSpace().isCS_sRGB());
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ harness.check(m2.getColorSpace().isCS_sRGB());
+
+ IndexColorModel m3 = new IndexColorModel(2, 4, CMAP, 0, false);
+ harness.check(m3.getColorSpace().isCS_sRGB());
+
+ IndexColorModel m4 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true);
+ harness.check(m4.getColorSpace().isCS_sRGB());
+}
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getComponentSize.java b/gnu/testlet/java/awt/image/IndexColorModel/getComponentSize.java
new file mode 100644
index 00000000..066896b3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getComponentSize.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getComponentSize() method.
+ */
+public class getComponentSize implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ private static final byte[] CMAP_WITH_ALPHA0 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 0, (byte) 2, (byte) 6, (byte) 10, (byte) 0, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 0, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 0};
+
+ private static final byte[] CMAP_WITH_ALPHA1 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 255, (byte) 2, (byte) 6, (byte) 10, (byte) 255, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 255, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 255};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ int[] cs1 = m1.getComponentSize();
+ harness.check(cs1.length, 3);
+ harness.check(cs1[0], 8);
+ harness.check(cs1[1], 8);
+ harness.check(cs1[2], 8);
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ int[] cs2 = m2.getComponentSize();
+ harness.check(cs2.length, 4);
+ harness.check(cs2[0], 8);
+ harness.check(cs2[1], 8);
+ harness.check(cs2[2], 8);
+ harness.check(cs2[3], 8);
+
+ IndexColorModel m3a = new IndexColorModel(2, 4, CMAP, 0, false);
+ int[] cs3a = m3a.getComponentSize();
+ harness.check(cs3a.length, 3);
+ harness.check(cs3a[0], 8);
+ harness.check(cs3a[1], 8);
+ harness.check(cs3a[2], 8);
+
+ IndexColorModel m3b = new IndexColorModel(2, 4, CMAP, 0, false, 1);
+ int[] cs3b = m3b.getComponentSize();
+ harness.check(cs3b.length, 4);
+ harness.check(cs3b[0], 8);
+ harness.check(cs3b[1], 8);
+ harness.check(cs3b[2], 8);
+ harness.check(cs3b[3], 8);
+
+ IndexColorModel m4 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true);
+ int[] cs4 = m4.getComponentSize();
+ harness.check(cs4.length, 4);
+ harness.check(cs4[0], 8);
+ harness.check(cs4[1], 8);
+ harness.check(cs4[2], 8);
+ harness.check(cs4[3], 8);
+
+ IndexColorModel m5 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA0, 0, true);
+ int[] cs5 = m5.getComponentSize();
+ harness.check(cs5.length, 4);
+ harness.check(cs5[0], 8);
+ harness.check(cs5[1], 8);
+ harness.check(cs5[2], 8);
+ harness.check(cs5[3], 8);
+
+ IndexColorModel m6 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA1, 0, true);
+ int[] cs6 = m6.getComponentSize();
+ harness.check(cs6.length, 3);
+ harness.check(cs6[0], 8);
+ harness.check(cs6[1], 8);
+ harness.check(cs6[2], 8);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getGreen.java b/gnu/testlet/java/awt/image/IndexColorModel/getGreen.java
new file mode 100644
index 00000000..1737df8c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getGreen.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getGreen() method.
+ */
+public class getGreen implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getGreen(0), 5);
+ harness.check(m1.getGreen(1), 6);
+ harness.check(m1.getGreen(2), 7);
+ harness.check(m1.getGreen(3), 8);
+
+ // try negative pixel
+ boolean pass = false;
+ try
+ {
+ m1.getGreen(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixel too large
+ harness.check(m1.getGreen(4), 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getGreens.java b/gnu/testlet/java/awt/image/IndexColorModel/getGreens.java
new file mode 100644
index 00000000..d813044e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getGreens.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getGreens() method.
+ */
+public class getGreens implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ byte[] r = new byte[4];
+ m1.getGreens(r);
+ harness.check(r[0], (byte) 5);
+ harness.check(r[1], (byte) 6);
+ harness.check(r[2], (byte) 7);
+ harness.check(r[3], (byte) 8);
+
+ // try null array
+ boolean pass = false;
+ try
+ {
+ m1.getGreens(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try array too small to hold results
+ pass = false;
+ try
+ {
+ m1.getGreens(new byte[3]);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+}
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getPixelSize.java b/gnu/testlet/java/awt/image/IndexColorModel/getPixelSize.java
new file mode 100644
index 00000000..1f3d5c0e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getPixelSize.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getPixelSize() method.
+ */
+public class getPixelSize implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ private static final byte[] CMAP_WITH_ALPHA0 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 0, (byte) 2, (byte) 6, (byte) 10, (byte) 0, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 0, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 0};
+
+ private static final byte[] CMAP_WITH_ALPHA1 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 255, (byte) 2, (byte) 6, (byte) 10, (byte) 255, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 255, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 255};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getPixelSize(), 2);
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ harness.check(m2.getPixelSize(), 2);
+
+ IndexColorModel m3a = new IndexColorModel(2, 4, CMAP, 0, false);
+ harness.check(m3a.getPixelSize(), 2);
+
+ IndexColorModel m3b = new IndexColorModel(2, 4, CMAP, 0, false, 1);
+ harness.check(m3b.getPixelSize(), 2);
+
+ IndexColorModel m4 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true);
+ harness.check(m4.getPixelSize(), 2);
+
+ IndexColorModel m5 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA0, 0, true);
+ harness.check(m5.getPixelSize(), 2);
+
+ IndexColorModel m6 = new IndexColorModel(2, 4, CMAP_WITH_ALPHA1, 0, true);
+ harness.check(m6.getPixelSize(), 2);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getRed.java b/gnu/testlet/java/awt/image/IndexColorModel/getRed.java
new file mode 100644
index 00000000..f492ffd6
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getRed.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getRed() method.
+ */
+public class getRed implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getRed(0), 1);
+ harness.check(m1.getRed(1), 2);
+ harness.check(m1.getRed(2), 3);
+ harness.check(m1.getRed(3), 4);
+
+ // try negative pixel
+ boolean pass = false;
+ try
+ {
+ m1.getRed(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try pixel too large
+ harness.check(m1.getRed(4), 0);
+}
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getReds.java b/gnu/testlet/java/awt/image/IndexColorModel/getReds.java
new file mode 100644
index 00000000..6e4caf13
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getReds.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getReds() method.
+ */
+public class getReds implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ byte[] r = new byte[4];
+ m1.getReds(r);
+ harness.check(r[0], (byte) 1);
+ harness.check(r[1], (byte) 2);
+ harness.check(r[2], (byte) 3);
+ harness.check(r[3], (byte) 4);
+
+ // try null array
+ boolean pass = false;
+ try
+ {
+ m1.getReds(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try array too small to hold results
+ pass = false;
+ try
+ {
+ m1.getReds(new byte[3]);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getTransparency.java b/gnu/testlet/java/awt/image/IndexColorModel/getTransparency.java
new file mode 100644
index 00000000..56751f7d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getTransparency.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Transparency;
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getTransparency() method.
+*/
+public class getTransparency implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ private static final byte[] CMAP_WITH_ALPHA0 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 0, (byte) 2, (byte) 6, (byte) 10, (byte) 0, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 0, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 0};
+
+ private static final byte[] CMAP_WITH_ALPHA1 = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 255, (byte) 2, (byte) 6, (byte) 10, (byte) 255, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 255, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 255};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getTransparency(), Transparency.OPAQUE);
+
+ IndexColorModel m2a = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ harness.check(m2a.getTransparency(), Transparency.BITMASK);
+ IndexColorModel m2b = new IndexColorModel(2, 4, R4, G4, B4, -1);
+ harness.check(m2b.getTransparency(), Transparency.OPAQUE);
+ IndexColorModel m2c = new IndexColorModel(2, 4, R4, G4, B4, 99);
+ harness.check(m2c.getTransparency(), Transparency.OPAQUE);
+
+ IndexColorModel m3a = new IndexColorModel(2, 4, CMAP, 0, false);
+ harness.check(m3a.getTransparency(), Transparency.OPAQUE);
+ IndexColorModel m3b = new IndexColorModel(2, 4, CMAP, 0, false, 2);
+ harness.check(m3b.getTransparency(), Transparency.BITMASK);
+
+ IndexColorModel m4a = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true);
+ harness.check(m4a.getTransparency(), Transparency.TRANSLUCENT);
+ IndexColorModel m4b = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true, 2);
+ harness.check(m4b.getTransparency(), Transparency.TRANSLUCENT);
+
+ IndexColorModel m5a = new IndexColorModel(2, 4, CMAP_WITH_ALPHA0, 0, true);
+ harness.check(m5a.getTransparency(), Transparency.BITMASK);
+ IndexColorModel m5b = new IndexColorModel(2, 4, CMAP_WITH_ALPHA0, 0, true, 2);
+ harness.check(m5b.getTransparency(), Transparency.BITMASK);
+
+ IndexColorModel m6a = new IndexColorModel(2, 4, CMAP_WITH_ALPHA1, 0, true);
+ harness.check(m6a.getTransparency(), Transparency.OPAQUE);
+ IndexColorModel m6b = new IndexColorModel(2, 4, CMAP_WITH_ALPHA1, 0, true, 2);
+ harness.check(m6b.getTransparency(), Transparency.BITMASK);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/getTransparentPixel.java b/gnu/testlet/java/awt/image/IndexColorModel/getTransparentPixel.java
new file mode 100644
index 00000000..b5fd85ad
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/getTransparentPixel.java
@@ -0,0 +1,96 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Transparency;
+import java.awt.image.DataBuffer;
+import java.awt.image.IndexColorModel;
+
+/**
+ * Some checks for the getTransparentPixel() method.
+ */
+public class getTransparentPixel implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final byte[] CMAP = {(byte) 1, (byte) 5, (byte) 9, (byte) 2,
+ (byte) 6, (byte) 10, (byte) 3, (byte) 7, (byte) 11, (byte) 4,
+ (byte) 8, (byte) 12};
+
+ private static final byte[] CMAP_WITH_ALPHA = {(byte) 1, (byte) 5, (byte) 9,
+ (byte) 13, (byte) 2, (byte) 6, (byte) 10, (byte) 14, (byte) 3,
+ (byte) 7, (byte) 11, (byte) 15, (byte) 4, (byte) 8, (byte) 12,
+ (byte) 16};
+
+ private static final int[] CMAP_INT = {new Color(1, 5, 9).getRGB(),
+ new Color(2, 6, 10).getRGB(), new Color(3, 7, 11).getRGB(),
+ new Color(4, 8, 12).getRGB()};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.getTransparentPixel(), -1);
+
+ IndexColorModel m2a = new IndexColorModel(2, 4, R4, G4, B4, 2);
+ harness.check(m2a.getTransparentPixel(), 2);
+
+ IndexColorModel m2b = new IndexColorModel(2, 4, R4, G4, B4, -2);
+ harness.check(m2b.getTransparentPixel(), -1);
+
+ IndexColorModel m2c = new IndexColorModel(2, 4, R4, G4, B4, 99);
+ harness.check(m2c.getTransparentPixel(), -1);
+
+ IndexColorModel m3a = new IndexColorModel(2, 4, CMAP, 0, false, 2);
+ harness.check(m3a.getTransparentPixel(), 2);
+ IndexColorModel m3b = new IndexColorModel(2, 4, CMAP, 0, false, -2);
+ harness.check(m3b.getTransparentPixel(), -1);
+ IndexColorModel m3c = new IndexColorModel(2, 4, CMAP, 0, false, 99);
+ harness.check(m3c.getTransparentPixel(), -1);
+
+ IndexColorModel m4a = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true, 2);
+ harness.check(m4a.getTransparentPixel(), 2);
+ IndexColorModel m4b = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true, -2);
+ harness.check(m4b.getTransparentPixel(), -1);
+ IndexColorModel m4c = new IndexColorModel(2, 4, CMAP_WITH_ALPHA, 0, true, 99);
+ harness.check(m4c.getTransparentPixel(), -1);
+
+ IndexColorModel m5a = new IndexColorModel(2, 4, CMAP_INT, 0, false, 2, DataBuffer.TYPE_BYTE);
+ harness.check(m5a.getTransparentPixel(), 2);
+ IndexColorModel m5b = new IndexColorModel(2, 4, CMAP_INT, 0, false, -2, DataBuffer.TYPE_BYTE);
+ harness.check(m5b.getTransparentPixel(), -1);
+ IndexColorModel m5c = new IndexColorModel(2, 4, CMAP_INT, 0, false, 99, DataBuffer.TYPE_BYTE);
+ harness.check(m5c.getTransparentPixel(), -1);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/IndexColorModel/isValid.java b/gnu/testlet/java/awt/image/IndexColorModel/isValid.java
new file mode 100644
index 00000000..9215d5c5
--- /dev/null
+++ b/gnu/testlet/java/awt/image/IndexColorModel/isValid.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.IndexColorModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.image.DataBuffer;
+import java.awt.image.IndexColorModel;
+import java.math.BigInteger;
+
+/**
+ * Some checks for the isValid() methods.
+ */
+public class isValid implements Testlet
+{
+
+ private static final byte[] R4 = {(byte) 1, (byte) 2, (byte) 3, (byte) 4};
+ private static final byte[] G4 = {(byte) 5, (byte) 6, (byte) 7, (byte) 8};
+ private static final byte[] B4 = {(byte) 9, (byte) 10, (byte) 11, (byte) 12};
+
+ private static final int[] CMAP_INT = {new Color(1, 5, 9).getRGB(),
+ new Color(2, 6, 10).getRGB(), new Color(3, 7, 11).getRGB(),
+ new Color(4, 8, 12).getRGB()};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("isValid()");
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.isValid());
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP_INT, 0,
+ DataBuffer.TYPE_BYTE, new BigInteger("11"));
+ harness.check(!m2.isValid());
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("isValid(int)");
+ IndexColorModel m1 = new IndexColorModel(2, 4, R4, G4, B4);
+ harness.check(m1.isValid(0));
+ try {
+ harness.check(!m1.isValid(-1));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+ harness.check(!m1.isValid(4));
+
+ IndexColorModel m2 = new IndexColorModel(2, 4, CMAP_INT, 0,
+ DataBuffer.TYPE_BYTE, new BigInteger("11"));
+ harness.check(m2.isValid(0));
+ harness.check(m2.isValid(1));
+ harness.check(!m2.isValid(2));
+ harness.check(m2.isValid(3));
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/Kernel/CVS/Entries b/gnu/testlet/java/awt/image/Kernel/CVS/Entries
new file mode 100644
index 00000000..8aff3440
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/CVS/Entries
@@ -0,0 +1,8 @@
+/check.java/1.4/Fri Jul 21 03:08:59 2006//
+/constructor.java/1.2/Sun Jul 23 05:11:50 2006//
+/getHeight.java/1.1/Fri Jul 21 03:08:59 2006//
+/getKernelData.java/1.1/Fri Jul 21 03:08:59 2006//
+/getWidth.java/1.1/Fri Jul 21 03:08:59 2006//
+/getXOrigin.java/1.1/Fri Jul 21 03:08:59 2006//
+/getYOrigin.java/1.1/Fri Jul 21 03:08:59 2006//
+D
diff --git a/gnu/testlet/java/awt/image/Kernel/CVS/Repository b/gnu/testlet/java/awt/image/Kernel/CVS/Repository
new file mode 100644
index 00000000..4a5f1f47
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/Kernel
diff --git a/gnu/testlet/java/awt/image/Kernel/CVS/Root b/gnu/testlet/java/awt/image/Kernel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/Kernel/check.java b/gnu/testlet/java/awt/image/Kernel/check.java
new file mode 100644
index 00000000..51cac6cf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/check.java
@@ -0,0 +1,126 @@
+// Test Kernel.check().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+
+/**
+ * @author <a href="mailto:jlquinn@optonline.net">Jerry Quinn</a>
+ */
+public class check implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ float[] data = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, };
+ Kernel k = new Kernel(3, 4, data);
+ h.check(k != null);
+ h.check(k.getWidth() == 3);
+ h.check(k.getHeight() == 4);
+ h.check(k.getXOrigin() == 1);
+ h.check(k.getYOrigin() == 1);
+
+ float[] data1;
+ try
+ {
+ data1 = k.getKernelData(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ data1 = new float[0];
+ h.fail("Kernel.getKernelData");
+ }
+
+ h.checkPoint("Check kernel data");
+ boolean ok = true;
+ h.check(data1.length == data.length);
+ for (int i=0; i < data1.length; i++)
+ if (data[i] != data1[i])
+ {
+ ok = false;
+ break;
+ }
+ h.check(ok == true);
+
+ data1 = new float[12];
+ try
+ {
+ data1 = k.getKernelData(data1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.fail("Kernel.getKernelData");
+ }
+
+ ok = true;
+ h.check(data1.length == data.length);
+ for (int i=0; i < data1.length; i++)
+ if (data[i] != data1[i])
+ {
+ ok = false;
+ break;
+ }
+ h.check(ok == true);
+
+ // Check failure modes
+ h.checkPoint("Failure modes");
+ ok = false;
+ try
+ {
+ k.getKernelData(new float[1]);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok == true);
+
+ ok = false;
+ try
+ {
+ k = new Kernel(10, 10, data);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok == true);
+
+ // Check that only the specified data gets copied
+ data = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
+ k = new Kernel(3, 4, data);
+ data1 = k.getKernelData(null);
+ h.check(data1.length == 12);
+ ok = true;
+ for (int i=0; i < data1.length; i++)
+ if (data[i] != data1[i])
+ {
+ ok = false;
+ break;
+ }
+ h.check(ok == true);
+
+ }
+}
diff --git a/gnu/testlet/java/awt/image/Kernel/constructor.java b/gnu/testlet/java/awt/image/Kernel/constructor.java
new file mode 100644
index 00000000..8d0977aa
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/constructor.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+/**
+ * Some checks for the constructor in the {@link Kernel} class.
+*/
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ float[] d1 = new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f, 13f, 14f, 15f};
+ Kernel k1 = new Kernel(3, 5, d1);
+ harness.check(k1.getWidth(), 3);
+ harness.check(k1.getHeight(), 5);
+ harness.check(k1.getXOrigin(), 1);
+ harness.check(k1.getYOrigin(), 2);
+
+ // changing source data array shouldn't change the kernel
+ d1[0] = Float.NaN;
+ float[] d2 = k1.getKernelData(null);
+ harness.check(!Float.isNaN(d2[0]));
+
+ // try negative width - the required behaviour is not specified, the
+ // reference implementation throws a NegativeArraySizeException, but that
+ // seems like an implementation detail so this test is going to allow an
+ // IllegalArgumentException as well (which is what GNU Classpath does).
+ boolean pass = false;
+ try
+ {
+ k1 = new Kernel(-1, 2, new float[] {1f, 2f});
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative height - the required behaviour is not specified, the
+ // reference implementation throws a NegativeArraySizeException, but that
+ // seems like an implementation detail so this test is going to allow an
+ // IllegalArgumentException as well (which is what GNU Classpath does).
+ pass = false;
+ try
+ {
+ k1 = new Kernel(1, -2, new float[] {1f, 2f});
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null array
+ pass = false;
+ try
+ {
+ k1 = new Kernel(1, 2, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/Kernel/getHeight.java b/gnu/testlet/java/awt/image/Kernel/getHeight.java
new file mode 100644
index 00000000..bc77d06c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/getHeight.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+/**
+ * Some checks for the getHeight() method in the {@link Kernel} class.
+ */
+public class getHeight implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(1, 2, new float[] {1f, 2f});
+ harness.check(k1.getHeight(), 2);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/Kernel/getKernelData.java b/gnu/testlet/java/awt/image/Kernel/getKernelData.java
new file mode 100644
index 00000000..2970467e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/getKernelData.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the getKernelData() method in the {@link Kernel} class.
+ */
+public class getKernelData implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ float[] d1 = new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f, 13f, 14f, 15f};
+ Kernel k1 = new Kernel(3, 5, d1);
+
+ float[] d2 = k1.getKernelData(null);
+ harness.check(d1 != d2);
+ harness.check(Arrays.equals(d1, d2));
+
+ // try argument length too short
+ boolean pass = false;
+ try
+ {
+ d2 = new float[14];
+ d2 = k1.getKernelData(d2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/Kernel/getWidth.java b/gnu/testlet/java/awt/image/Kernel/getWidth.java
new file mode 100644
index 00000000..ecba5b97
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/getWidth.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+/**
+ * Some checks for the getWidth() method in the {@link Kernel} class.
+ */
+public class getWidth implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(1, 2, new float[] {1f, 2f});
+ harness.check(k1.getWidth(), 1);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/Kernel/getXOrigin.java b/gnu/testlet/java/awt/image/Kernel/getXOrigin.java
new file mode 100644
index 00000000..8f5c05dc
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/getXOrigin.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+/**
+ * Some checks for the getXOrigin() method in the {@link Kernel} class.
+ */
+public class getXOrigin implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(3, 4, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f});
+ harness.check(k1.getXOrigin(), 1);
+ Kernel k2 = new Kernel(4, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f});
+ harness.check(k2.getXOrigin(), 1);
+ Kernel k3 = new Kernel(5, 2, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f});
+ harness.check(k3.getXOrigin(), 2);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/Kernel/getYOrigin.java b/gnu/testlet/java/awt/image/Kernel/getYOrigin.java
new file mode 100644
index 00000000..03b6857c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Kernel/getYOrigin.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.java.awt.image.Kernel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.Kernel;
+
+/**
+ * Some checks for the getYOrigin() method in the {@link Kernel} class.
+ */
+public class getYOrigin implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Kernel k1 = new Kernel(3, 4, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f});
+ harness.check(k1.getYOrigin(), 1);
+ Kernel k2 = new Kernel(4, 3, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f, 11f, 12f});
+ harness.check(k2.getYOrigin(), 1);
+ Kernel k3 = new Kernel(5, 2, new float[] {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f,
+ 9f, 10f});
+ harness.check(k3.getYOrigin(), 0);
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/LookupOp/CVS/Entries b/gnu/testlet/java/awt/image/LookupOp/CVS/Entries
new file mode 100644
index 00000000..fd740b98
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/CVS/Entries
@@ -0,0 +1,10 @@
+/constructor.java/1.1/Tue Jul 18 16:56:39 2006//
+/createCompatibleDestImage.java/1.1/Tue Sep 5 16:03:54 2006//
+/createCompatibleDestRaster.java/1.2/Tue Sep 5 16:03:54 2006//
+/filterImage.java/1.1/Tue Sep 5 16:03:54 2006//
+/filterRaster.java/1.1/Tue Sep 5 16:03:54 2006//
+/getBounds2D.java/1.1/Tue Jul 18 16:56:39 2006//
+/getPoint2D.java/1.1/Tue Jul 18 16:56:39 2006//
+/getRenderingHints.java/1.1/Tue Jul 18 16:56:39 2006//
+/getTable.java/1.1/Tue Jul 18 16:56:39 2006//
+D
diff --git a/gnu/testlet/java/awt/image/LookupOp/CVS/Repository b/gnu/testlet/java/awt/image/LookupOp/CVS/Repository
new file mode 100644
index 00000000..458e7178
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/LookupOp
diff --git a/gnu/testlet/java/awt/image/LookupOp/CVS/Root b/gnu/testlet/java/awt/image/LookupOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/LookupOp/constructor.java b/gnu/testlet/java/awt/image/LookupOp/constructor.java
new file mode 100644
index 00000000..99a8d304
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/constructor.java
@@ -0,0 +1,49 @@
+/* constructor.java -- some checks for the constructor in the LookupOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.LookupOp;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ RenderingHints r = new RenderingHints(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ LookupOp op = new LookupOp(t, r);
+ harness.check(op.getTable() == t);
+ harness.check(op.getRenderingHints() == r);
+
+ // try null RenderingHints
+ op = new LookupOp(t, null);
+ harness.check(op.getRenderingHints(), null);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestImage.java b/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestImage.java
new file mode 100644
index 00000000..7797494a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestImage.java
@@ -0,0 +1,135 @@
+/* createCompatibleDestImage.java -- some checks for the
+ createCompatibleDestImage() method of the LookupOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.DataBuffer;
+import java.awt.image.DirectColorModel;
+import java.awt.image.LookupOp;
+
+/**
+ * Checks for the createCompatibleDestImage method in the
+ * {@link LookupOp} class.
+ */
+public class createCompatibleDestImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTest(harness);
+ colorModelTest(harness);
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestImage");
+
+ // Simple test
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+
+ BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+
+ // Try a different colour model
+ img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+ DirectColorModel cm = new DirectColorModel(16, 0x0f00, 0x00f0, 0x000f);
+ dest = op.createCompatibleDestImage(img, cm);
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), cm);
+ }
+
+ // Test all the default color models
+ private void colorModelTest(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ harness.checkPoint("type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+
+ // Unlike most Ops, this one creates a clone of the original image
+
+ // Except there's a strange exception for TYPE_USHORT_GRAY ???
+ if (type == BufferedImage.TYPE_USHORT_GRAY)
+ {
+ harness.check(dest.getColorModel().getPixelSize(), 8);
+ harness.check(dest.getColorModel().getTransferType(), DataBuffer.TYPE_BYTE);
+ }
+ else
+ {
+ harness.check(dest.getColorModel().getPixelSize(),
+ img.getColorModel().getPixelSize());
+ harness.check(dest.getColorModel().getTransferType(), img.getColorModel().getTransferType());
+ }
+
+ harness.check(dest.getColorModel().getClass() == img.getColorModel().getClass());
+ harness.check(dest.getSampleModel().getClass() == img.getSampleModel().getClass());
+ harness.check(dest.getColorModel().getNumComponents(), img.getColorModel().getNumComponents());
+ harness.check(dest.getColorModel().getTransparency(), img.getColorModel().getTransparency());
+ harness.check(dest.getColorModel().hasAlpha(), img.getColorModel().hasAlpha());
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ harness.check(dest.getColorModel().getColorSpace().getType(), img.getColorModel().getColorSpace().getType());
+ harness.check(dest.getRaster().getNumBands(), img.getRaster().getNumBands());
+ harness.check(dest.getRaster().getNumDataElements(), img.getRaster().getNumDataElements());
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..bbefce4f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/createCompatibleDestRaster.java
@@ -0,0 +1,83 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method in the LookupOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.DataBuffer;
+import java.awt.image.LookupOp;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.Raster;
+
+public class createCompatibleDestRaster implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ Raster raster = Raster.createWritableRaster(
+ new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8), null);
+ Raster dest = op.createCompatibleDestRaster(raster);
+ harness.check(dest.getWidth(), 10);
+ harness.check(dest.getHeight(), 20);
+ harness.check(dest.getNumBands(), 1);
+ harness.check(dest.getSampleModel() instanceof MultiPixelPackedSampleModel);
+ harness.check(dest.getTransferType(), raster.getTransferType());
+ harness.check(dest.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dest.getNumDataElements(), raster.getNumDataElements());
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.createCompatibleDestRaster(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // Try a different type
+ raster = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 25, 40, 3, new Point(5, 5));
+ Raster dst = op.createCompatibleDestRaster(raster);
+ harness.check(dst.getNumBands(), raster.getNumBands());
+ harness.check(dst.getTransferType(), raster.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), raster.getNumDataElements());
+
+ // Try a different number of bands
+ raster = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ dst = op.createCompatibleDestRaster(raster);
+ harness.check(dst.getNumBands(), raster.getNumBands());
+ harness.check(dst.getTransferType(), raster.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), raster.getNumDataElements());
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/filterImage.java b/gnu/testlet/java/awt/image/LookupOp/filterImage.java
new file mode 100644
index 00000000..b98134f8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/filterImage.java
@@ -0,0 +1,696 @@
+/* filterImage.java -- some checks for the filter(Image) method of the
+ ConvolveOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.ConvolveOp;
+import java.awt.image.LookupOp;
+import java.awt.image.ShortLookupTable;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link ConvolveOp} class.
+ */
+public class filterImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testDefaults(harness);
+
+ // Test lookup with only one lookup array: all colour components, but not
+ // alpha component, should be operated on
+ testOneLookup(harness, false);
+ testOneLookup(harness, true);
+
+ // Test lookup with num lookup arrays == num colour components, so alpha
+ // component should be left alone
+ testColourLookup(harness, false);
+ testColourLookup(harness, true);
+
+ // Test lookup with num lookup arrays == num components including alpha
+ testAllLookup(harness, false);
+ testAllLookup(harness, true);
+
+ // Test behaviour when pixel value is not defined in lookup table
+ testUndefined(harness);
+ }
+
+ private void testDefaults(TestHarness harness)
+ {
+ harness.checkPoint("testDefaults");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ // Simple tests
+ BufferedImage dst = op.filter(img, null);
+ harness.check(dst.getType(), op.createCompatibleDestImage(img, null).getType());
+
+ dst = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ dst = op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst images can be the same
+ try
+ {
+ op.filter(img, img);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+ finally
+ {
+ // Reset image for next test
+ img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ }
+
+ // Src and dst are different sizes - not allowed
+ dst = new BufferedImage(30, 40, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Src and dst have different tpyes (allowed)
+ dst = new BufferedImage(20, 20, BufferedImage.TYPE_BYTE_GRAY);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // src and dst can even have different number of bands
+ dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ harness.check(img.getType(), BufferedImage.TYPE_USHORT_GRAY);
+ harness.check(dst.getType(), BufferedImage.TYPE_INT_ARGB);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testOneLookup(TestHarness harness, boolean premultiply)
+ {
+ if (premultiply)
+ harness.checkPoint("testOneLookup with premultiply");
+ else
+ harness.checkPoint("testOneLookup without premultiply");
+
+ // Create an image to work on
+ BufferedImage img;
+ if (premultiply)
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB_PRE);
+ else
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ createImage(img);
+
+ byte[] bytes = new byte[] {12, 23, 14, 35, 48, 2};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ BufferedImage dst = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ dst = op.filter(img, dst);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(img.isAlphaPremultiplied(), premultiply);
+ harness.check(dst.isAlphaPremultiplied(), false);
+
+ harness.check(dest.getSample(0, 0, 0), 23);
+ harness.check(dest.getSample(1, 0, 0), 35);
+ harness.check(dest.getSample(2, 0, 0), 23);
+ harness.check(dest.getSample(3, 0, 0), 35);
+ harness.check(dest.getSample(4, 0, 0), 23);
+ harness.check(dest.getSample(0, 1, 0), 48);
+ harness.check(dest.getSample(1, 1, 0), 14);
+ harness.check(dest.getSample(2, 1, 0), 48);
+ harness.check(dest.getSample(3, 1, 0), 14);
+ harness.check(dest.getSample(4, 1, 0), 48);
+ harness.check(dest.getSample(0, 2, 0), 23);
+ harness.check(dest.getSample(1, 2, 0), 35);
+ harness.check(dest.getSample(2, 2, 0), 23);
+ harness.check(dest.getSample(3, 2, 0), 35);
+ harness.check(dest.getSample(4, 2, 0), 23);
+ harness.check(dest.getSample(0, 3, 0), 48);
+ harness.check(dest.getSample(1, 3, 0), 14);
+ harness.check(dest.getSample(2, 3, 0), 48);
+ harness.check(dest.getSample(3, 3, 0), 14);
+ harness.check(dest.getSample(4, 3, 0), 48);
+ harness.check(dest.getSample(0, 4, 0), 23);
+ harness.check(dest.getSample(1, 4, 0), 35);
+ harness.check(dest.getSample(2, 4, 0), 23);
+ harness.check(dest.getSample(3, 4, 0), 35);
+ harness.check(dest.getSample(4, 4, 0), 23);
+
+ harness.check(dest.getSample(0, 0, 1), 12);
+ harness.check(dest.getSample(1, 0, 1), 48);
+ harness.check(dest.getSample(2, 0, 1), 12);
+ harness.check(dest.getSample(3, 0, 1), 48);
+ harness.check(dest.getSample(4, 0, 1), 12);
+ harness.check(dest.getSample(0, 1, 1), 35);
+ harness.check(dest.getSample(1, 1, 1), 23);
+ harness.check(dest.getSample(2, 1, 1), 35);
+ harness.check(dest.getSample(3, 1, 1), 23);
+ harness.check(dest.getSample(4, 1, 1), 35);
+ harness.check(dest.getSample(0, 2, 1), 12);
+ harness.check(dest.getSample(1, 2, 1), 48);
+ harness.check(dest.getSample(2, 2, 1), 12);
+ harness.check(dest.getSample(3, 2, 1), 48);
+ harness.check(dest.getSample(4, 2, 1), 12);
+ harness.check(dest.getSample(0, 3, 1), 35);
+ harness.check(dest.getSample(1, 3, 1), 23);
+ harness.check(dest.getSample(2, 3, 1), 35);
+ harness.check(dest.getSample(3, 3, 1), 23);
+ harness.check(dest.getSample(4, 3, 1), 35);
+ harness.check(dest.getSample(0, 4, 1), 12);
+ harness.check(dest.getSample(1, 4, 1), 48);
+ harness.check(dest.getSample(2, 4, 1), 12);
+ harness.check(dest.getSample(3, 4, 1), 48);
+ harness.check(dest.getSample(4, 4, 1), 12);
+
+ // Sun's implementation uses RGAB (alpha as the 3rd band), as opposed to
+ // our RGBA, so these tests will fail... however these might not be worth
+ // changing, so left them commented out for now.
+/*
+ harness.check(dest.getSample(0, 0, 2), 2);
+ harness.check(dest.getSample(1, 0, 2), 3);
+ harness.check(dest.getSample(2, 0, 2), 2);
+ harness.check(dest.getSample(3, 0, 2), 3);
+ harness.check(dest.getSample(4, 0, 2), 2);
+ harness.check(dest.getSample(0, 1, 2), 4);
+ harness.check(dest.getSample(1, 1, 2), 2);
+ harness.check(dest.getSample(2, 1, 2), 4);
+ harness.check(dest.getSample(3, 1, 2), 2);
+ harness.check(dest.getSample(4, 1, 2), 4);
+ harness.check(dest.getSample(0, 2, 2), 2);
+ harness.check(dest.getSample(1, 2, 2), 3);
+ harness.check(dest.getSample(2, 2, 2), 2);
+ harness.check(dest.getSample(3, 2, 2), 3);
+ harness.check(dest.getSample(4, 2, 2), 2);
+ harness.check(dest.getSample(0, 3, 2), 4);
+ harness.check(dest.getSample(1, 3, 2), 2);
+ harness.check(dest.getSample(2, 3, 2), 4);
+ harness.check(dest.getSample(3, 3, 2), 2);
+ harness.check(dest.getSample(4, 3, 2), 4);
+ harness.check(dest.getSample(0, 4, 2), 2);
+ harness.check(dest.getSample(1, 4, 2), 3);
+ harness.check(dest.getSample(2, 4, 2), 2);
+ harness.check(dest.getSample(3, 4, 2), 3);
+ harness.check(dest.getSample(4, 4, 2), 2);
+
+ harness.check(dest.getSample(0, 0, 3), 12);
+ harness.check(dest.getSample(1, 0, 3), 48);
+ harness.check(dest.getSample(2, 0, 3), 12);
+ harness.check(dest.getSample(3, 0, 3), 48);
+ harness.check(dest.getSample(4, 0, 3), 12);
+ harness.check(dest.getSample(0, 1, 3), 35);
+ harness.check(dest.getSample(1, 1, 3), 23);
+ harness.check(dest.getSample(2, 1, 3), 35);
+ harness.check(dest.getSample(3, 1, 3), 23);
+ harness.check(dest.getSample(4, 1, 3), 35);
+ harness.check(dest.getSample(0, 2, 3), 12);
+ harness.check(dest.getSample(1, 2, 3), 48);
+ harness.check(dest.getSample(2, 2, 3), 12);
+ harness.check(dest.getSample(3, 2, 3), 48);
+ harness.check(dest.getSample(4, 2, 3), 12);
+ harness.check(dest.getSample(0, 3, 3), 35);
+ harness.check(dest.getSample(1, 3, 3), 23);
+ harness.check(dest.getSample(2, 3, 3), 35);
+ harness.check(dest.getSample(3, 3, 3), 23);
+ harness.check(dest.getSample(4, 3, 3), 35);
+ harness.check(dest.getSample(0, 4, 3), 12);
+ harness.check(dest.getSample(1, 4, 3), 48);
+ harness.check(dest.getSample(2, 4, 3), 12);
+ harness.check(dest.getSample(3, 4, 3), 48);
+ harness.check(dest.getSample(4, 4, 3), 12);
+ */
+ }
+
+ private void testColourLookup(TestHarness harness, boolean premultiply)
+ {
+ if (premultiply)
+ harness.checkPoint("testColourLookup with premultiply");
+ else
+ harness.checkPoint("testColourLookup without premultiply");
+
+ // Create an image to work on
+ BufferedImage img;
+ if (premultiply)
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB_PRE);
+ else
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ createImage(img);
+
+ short[][] lutarray = new short[][] {{12, 23, 14, 35, 48, 2},
+ {112, 123, 114, 135, 148, 102},
+ {212, 223, 214, 235, 248, 202}
+ };
+
+ ShortLookupTable t = new ShortLookupTable(0, lutarray);
+ LookupOp op = new LookupOp(t, null);
+ BufferedImage dst = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+
+ /* This causes Sun to throw an exception...
+ *
+ * java.lang.IllegalArgumentException: Number of channels in the src (4)
+ * does not match number of channels in the destination (2)
+ *
+ * I'm pretty sure it's a bug, but it's not one that's worth mimicing.
+ * This test will not run on Sun.
+ */
+ try
+ {
+ dst = op.filter(img, dst);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(img.isAlphaPremultiplied(), premultiply);
+ harness.check(dst.isAlphaPremultiplied(), false);
+
+ harness.check(dest.getSample(0, 0, 0), 23);
+ harness.check(dest.getSample(1, 0, 0), 35);
+ harness.check(dest.getSample(2, 0, 0), 23);
+ harness.check(dest.getSample(3, 0, 0), 35);
+ harness.check(dest.getSample(4, 0, 0), 23);
+ harness.check(dest.getSample(0, 1, 0), 48);
+ harness.check(dest.getSample(1, 1, 0), 14);
+ harness.check(dest.getSample(2, 1, 0), 48);
+ harness.check(dest.getSample(3, 1, 0), 14);
+ harness.check(dest.getSample(4, 1, 0), 48);
+ harness.check(dest.getSample(0, 2, 0), 23);
+ harness.check(dest.getSample(1, 2, 0), 35);
+ harness.check(dest.getSample(2, 2, 0), 23);
+ harness.check(dest.getSample(3, 2, 0), 35);
+ harness.check(dest.getSample(4, 2, 0), 23);
+ harness.check(dest.getSample(0, 3, 0), 48);
+ harness.check(dest.getSample(1, 3, 0), 14);
+ harness.check(dest.getSample(2, 3, 0), 48);
+ harness.check(dest.getSample(3, 3, 0), 14);
+ harness.check(dest.getSample(4, 3, 0), 48);
+ harness.check(dest.getSample(0, 4, 0), 23);
+ harness.check(dest.getSample(1, 4, 0), 35);
+ harness.check(dest.getSample(2, 4, 0), 23);
+ harness.check(dest.getSample(3, 4, 0), 35);
+ harness.check(dest.getSample(4, 4, 0), 23);
+
+ harness.check(dest.getSample(0, 0, 1), 112);
+ harness.check(dest.getSample(1, 0, 1), 148);
+ harness.check(dest.getSample(2, 0, 1), 112);
+ harness.check(dest.getSample(3, 0, 1), 148);
+ harness.check(dest.getSample(4, 0, 1), 112);
+ harness.check(dest.getSample(0, 1, 1), 135);
+ harness.check(dest.getSample(1, 1, 1), 123);
+ harness.check(dest.getSample(2, 1, 1), 135);
+ harness.check(dest.getSample(3, 1, 1), 123);
+ harness.check(dest.getSample(4, 1, 1), 135);
+ harness.check(dest.getSample(0, 2, 1), 112);
+ harness.check(dest.getSample(1, 2, 1), 148);
+ harness.check(dest.getSample(2, 2, 1), 112);
+ harness.check(dest.getSample(3, 2, 1), 148);
+ harness.check(dest.getSample(4, 2, 1), 112);
+ harness.check(dest.getSample(0, 3, 1), 135);
+ harness.check(dest.getSample(1, 3, 1), 123);
+ harness.check(dest.getSample(2, 3, 1), 135);
+ harness.check(dest.getSample(3, 3, 1), 123);
+ harness.check(dest.getSample(4, 3, 1), 135);
+ harness.check(dest.getSample(0, 4, 1), 112);
+ harness.check(dest.getSample(1, 4, 1), 148);
+ harness.check(dest.getSample(2, 4, 1), 112);
+ harness.check(dest.getSample(3, 4, 1), 148);
+ harness.check(dest.getSample(4, 4, 1), 112);
+
+ // Sun's implementation uses RGAB (alpha as the 3rd band), as opposed to
+ // our RGBA, so these tests will fail... however these might not be worth
+ // changing, so left them commented out for now.
+ /*
+ harness.check(dest.getSample(0, 0, 2), 2);
+ harness.check(dest.getSample(1, 0, 2), 3);
+ harness.check(dest.getSample(2, 0, 2), 2);
+ harness.check(dest.getSample(3, 0, 2), 3);
+ harness.check(dest.getSample(4, 0, 2), 2);
+ harness.check(dest.getSample(0, 1, 2), 4);
+ harness.check(dest.getSample(1, 1, 2), 2);
+ harness.check(dest.getSample(2, 1, 2), 4);
+ harness.check(dest.getSample(3, 1, 2), 2);
+ harness.check(dest.getSample(4, 1, 2), 4);
+ harness.check(dest.getSample(0, 2, 2), 2);
+ harness.check(dest.getSample(1, 2, 2), 3);
+ harness.check(dest.getSample(2, 2, 2), 2);
+ harness.check(dest.getSample(3, 2, 2), 3);
+ harness.check(dest.getSample(4, 2, 2), 2);
+ harness.check(dest.getSample(0, 3, 2), 4);
+ harness.check(dest.getSample(1, 3, 2), 2);
+ harness.check(dest.getSample(2, 3, 2), 4);
+ harness.check(dest.getSample(3, 3, 2), 2);
+ harness.check(dest.getSample(4, 3, 2), 4);
+ harness.check(dest.getSample(0, 4, 2), 2);
+ harness.check(dest.getSample(1, 4, 2), 3);
+ harness.check(dest.getSample(2, 4, 2), 2);
+ harness.check(dest.getSample(3, 4, 2), 3);
+ harness.check(dest.getSample(4, 4, 2), 2);
+
+ harness.check(dest.getSample(0, 0, 3), 212);
+ harness.check(dest.getSample(1, 0, 3), 248);
+ harness.check(dest.getSample(2, 0, 3), 212);
+ harness.check(dest.getSample(3, 0, 3), 248);
+ harness.check(dest.getSample(4, 0, 3), 212);
+ harness.check(dest.getSample(0, 1, 3), 235);
+ harness.check(dest.getSample(1, 1, 3), 223);
+ harness.check(dest.getSample(2, 1, 3), 235);
+ harness.check(dest.getSample(3, 1, 3), 223);
+ harness.check(dest.getSample(4, 1, 3), 235);
+ harness.check(dest.getSample(0, 2, 3), 212);
+ harness.check(dest.getSample(1, 2, 3), 248);
+ harness.check(dest.getSample(2, 2, 3), 212);
+ harness.check(dest.getSample(3, 2, 3), 248);
+ harness.check(dest.getSample(4, 2, 3), 212);
+ harness.check(dest.getSample(0, 3, 3), 235);
+ harness.check(dest.getSample(1, 3, 3), 223);
+ harness.check(dest.getSample(2, 3, 3), 235);
+ harness.check(dest.getSample(3, 3, 3), 223);
+ harness.check(dest.getSample(4, 3, 3), 235);
+ harness.check(dest.getSample(0, 4, 3), 212);
+ harness.check(dest.getSample(1, 4, 3), 248);
+ harness.check(dest.getSample(2, 4, 3), 212);
+ harness.check(dest.getSample(3, 4, 3), 248);
+ harness.check(dest.getSample(4, 4, 3), 212);
+ */
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.debug("Test did not run - this is expected on Sun due to a " +
+ "bug in their implementation, but this message should not show " +
+ "when testing Classpath.");
+ }
+ }
+
+ private void testAllLookup(TestHarness harness, boolean premultiply)
+ {
+ if (premultiply)
+ harness.checkPoint("testAllLookup with premultiply");
+ else
+ harness.checkPoint("testAllLookup without premultiply");
+
+ // Create an image to work on
+ BufferedImage img;
+ if (premultiply)
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB_PRE);
+ else
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ createImage(img);
+
+ short[][] lutarray = new short[][] {{12, 23, 14, 35, 48, 2},
+ {112, 123, 114, 135, 148, 102},
+ {212, 223, 214, 235, 248, 202},
+ {62, 73, 64, 85, 98, 52}
+ };
+
+ ShortLookupTable t = new ShortLookupTable(0, lutarray);
+ LookupOp op = new LookupOp(t, null);
+
+ BufferedImage dst = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ dst = op.filter(img, dst);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(img.isAlphaPremultiplied(), premultiply);
+ harness.check(dst.isAlphaPremultiplied(), false);
+
+ harness.check(dest.getSample(0, 0, 0), 23);
+ harness.check(dest.getSample(1, 0, 0), 35);
+ harness.check(dest.getSample(2, 0, 0), 23);
+ harness.check(dest.getSample(3, 0, 0), 35);
+ harness.check(dest.getSample(4, 0, 0), 23);
+ harness.check(dest.getSample(0, 1, 0), 48);
+ harness.check(dest.getSample(1, 1, 0), 14);
+ harness.check(dest.getSample(2, 1, 0), 48);
+ harness.check(dest.getSample(3, 1, 0), 14);
+ harness.check(dest.getSample(4, 1, 0), 48);
+ harness.check(dest.getSample(0, 2, 0), 23);
+ harness.check(dest.getSample(1, 2, 0), 35);
+ harness.check(dest.getSample(2, 2, 0), 23);
+ harness.check(dest.getSample(3, 2, 0), 35);
+ harness.check(dest.getSample(4, 2, 0), 23);
+ harness.check(dest.getSample(0, 3, 0), 48);
+ harness.check(dest.getSample(1, 3, 0), 14);
+ harness.check(dest.getSample(2, 3, 0), 48);
+ harness.check(dest.getSample(3, 3, 0), 14);
+ harness.check(dest.getSample(4, 3, 0), 48);
+ harness.check(dest.getSample(0, 4, 0), 23);
+ harness.check(dest.getSample(1, 4, 0), 35);
+ harness.check(dest.getSample(2, 4, 0), 23);
+ harness.check(dest.getSample(3, 4, 0), 35);
+ harness.check(dest.getSample(4, 4, 0), 23);
+
+ harness.check(dest.getSample(0, 0, 1), 112);
+ harness.check(dest.getSample(1, 0, 1), 148);
+ harness.check(dest.getSample(2, 0, 1), 112);
+ harness.check(dest.getSample(3, 0, 1), 148);
+ harness.check(dest.getSample(4, 0, 1), 112);
+ harness.check(dest.getSample(0, 1, 1), 135);
+ harness.check(dest.getSample(1, 1, 1), 123);
+ harness.check(dest.getSample(2, 1, 1), 135);
+ harness.check(dest.getSample(3, 1, 1), 123);
+ harness.check(dest.getSample(4, 1, 1), 135);
+ harness.check(dest.getSample(0, 2, 1), 112);
+ harness.check(dest.getSample(1, 2, 1), 148);
+ harness.check(dest.getSample(2, 2, 1), 112);
+ harness.check(dest.getSample(3, 2, 1), 148);
+ harness.check(dest.getSample(4, 2, 1), 112);
+ harness.check(dest.getSample(0, 3, 1), 135);
+ harness.check(dest.getSample(1, 3, 1), 123);
+ harness.check(dest.getSample(2, 3, 1), 135);
+ harness.check(dest.getSample(3, 3, 1), 123);
+ harness.check(dest.getSample(4, 3, 1), 135);
+ harness.check(dest.getSample(0, 4, 1), 112);
+ harness.check(dest.getSample(1, 4, 1), 148);
+ harness.check(dest.getSample(2, 4, 1), 112);
+ harness.check(dest.getSample(3, 4, 1), 148);
+ harness.check(dest.getSample(4, 4, 1), 112);
+
+ harness.check(dest.getSample(0, 0, 2), 214);
+ harness.check(dest.getSample(1, 0, 2), 235);
+ harness.check(dest.getSample(2, 0, 2), 214);
+ harness.check(dest.getSample(3, 0, 2), 235);
+ harness.check(dest.getSample(4, 0, 2), 214);
+ harness.check(dest.getSample(0, 1, 2), 248);
+ harness.check(dest.getSample(1, 1, 2), 214);
+ harness.check(dest.getSample(2, 1, 2), 248);
+ harness.check(dest.getSample(3, 1, 2), 214);
+ harness.check(dest.getSample(4, 1, 2), 248);
+ harness.check(dest.getSample(0, 2, 2), 214);
+ harness.check(dest.getSample(1, 2, 2), 235);
+ harness.check(dest.getSample(2, 2, 2), 214);
+ harness.check(dest.getSample(3, 2, 2), 235);
+ harness.check(dest.getSample(4, 2, 2), 214);
+ harness.check(dest.getSample(0, 3, 2), 248);
+ harness.check(dest.getSample(1, 3, 2), 214);
+ harness.check(dest.getSample(2, 3, 2), 248);
+ harness.check(dest.getSample(3, 3, 2), 214);
+ harness.check(dest.getSample(4, 3, 2), 248);
+ harness.check(dest.getSample(0, 4, 2), 214);
+ harness.check(dest.getSample(1, 4, 2), 235);
+ harness.check(dest.getSample(2, 4, 2), 214);
+ harness.check(dest.getSample(3, 4, 2), 235);
+ harness.check(dest.getSample(4, 4, 2), 214);
+
+ harness.check(dest.getSample(0, 0, 3), 62);
+ harness.check(dest.getSample(1, 0, 3), 98);
+ harness.check(dest.getSample(2, 0, 3), 62);
+ harness.check(dest.getSample(3, 0, 3), 98);
+ harness.check(dest.getSample(4, 0, 3), 62);
+ harness.check(dest.getSample(0, 1, 3), 85);
+ harness.check(dest.getSample(1, 1, 3), 73);
+ harness.check(dest.getSample(2, 1, 3), 85);
+ harness.check(dest.getSample(3, 1, 3), 73);
+ harness.check(dest.getSample(4, 1, 3), 85);
+ harness.check(dest.getSample(0, 2, 3), 62);
+ harness.check(dest.getSample(1, 2, 3), 98);
+ harness.check(dest.getSample(2, 2, 3), 62);
+ harness.check(dest.getSample(3, 2, 3), 98);
+ harness.check(dest.getSample(4, 2, 3), 62);
+ harness.check(dest.getSample(0, 3, 3), 85);
+ harness.check(dest.getSample(1, 3, 3), 73);
+ harness.check(dest.getSample(2, 3, 3), 85);
+ harness.check(dest.getSample(3, 3, 3), 73);
+ harness.check(dest.getSample(4, 3, 3), 85);
+ harness.check(dest.getSample(0, 4, 3), 62);
+ harness.check(dest.getSample(1, 4, 3), 98);
+ harness.check(dest.getSample(2, 4, 3), 62);
+ harness.check(dest.getSample(3, 4, 3), 98);
+ harness.check(dest.getSample(4, 4, 3), 62);
+ }
+
+ private void testUndefined(TestHarness harness)
+ {
+ harness.checkPoint("testUndefined");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 20);
+
+ // We get the ArrayIndexOutOfBoundsException that we would expect when
+ // using a ShortLookupTable...
+ short[] lutarray = new short[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ ShortLookupTable t = new ShortLookupTable(0, lutarray);
+ LookupOp op = new LookupOp(t, null);
+
+ try
+ {
+ op.filter(img, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(true);
+ }
+
+ // But a ByteLookupTable will give us undetermined results
+ // (is a native array overflowing in sun's implementation?)
+ byte[] bytes = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
+ ByteLookupTable t2 = new ByteLookupTable(0, bytes);
+ op = new LookupOp(t2, null);
+
+ try
+ {
+ op.filter(img, null);
+ harness.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ // Allow an exception to be thrown anyways, since it makes more sense
+ harness.check(true);
+ }
+
+ // And a test for the behaviour when source and dest have a different
+ // number of bands (since the constructor does not throw an exception)
+ r.setSample(1, 1, 0, 5);
+ r.setSample(1, 1, 1, 4);
+ r.setSample(1, 1, 2, 3);
+ r.setSample(1, 1, 3, 2);
+ BufferedImage dst = new BufferedImage(5, 5, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ // It doesn't throw an exception...
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+
+ // Now try a destination with *more* bands
+ img = new BufferedImage(5, 5, BufferedImage.TYPE_USHORT_GRAY);
+ r = img.getRaster();
+ r.setSample(1, 1, 0, 5);
+ dst = new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
+ try
+ {
+ // It doesn't throw an exception either...
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ // Vary pixel values in the image
+ private void createImage(BufferedImage img)
+ {
+ WritableRaster r = img.getRaster();
+ for (int i = 0; i < r.getHeight(); i++)
+ for (int j = 0; j < r.getWidth(); j++)
+ {
+ if (i % 2 == 0)
+ if (j % 2 == 0)
+ {
+ r.setSample(j, i, 0, 1);
+ r.setSample(j, i, 1, 0);
+ r.setSample(j, i, 2, 2);
+ r.setSample(j, i, 3, 0);
+ }
+ else
+ {
+ r.setSample(j, i, 0, 3);
+ r.setSample(j, i, 1, 4);
+ r.setSample(j, i, 2, 3);
+ r.setSample(j, i, 3, 4);
+ }
+ else
+ if (j % 2 == 0)
+ {
+ r.setSample(j, i, 0, 4);
+ r.setSample(j, i, 1, 3);
+ r.setSample(j, i, 2, 4);
+ r.setSample(j, i, 3, 3);
+ }
+ else
+ {
+ r.setSample(j, i, 0, 2);
+ r.setSample(j, i, 1, 1);
+ r.setSample(j, i, 2, 2);
+ r.setSample(j, i, 3, 1);
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/LookupOp/filterRaster.java b/gnu/testlet/java/awt/image/LookupOp/filterRaster.java
new file mode 100644
index 00000000..c70adbd4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/filterRaster.java
@@ -0,0 +1,293 @@
+/* filterRaster.java -- some checks for the filter() methods in the
+ LookupOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+import java.awt.image.DataBuffer;
+import java.awt.image.LookupOp;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+
+public class filterRaster implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // These tests crash sun's JVM!
+
+ //testRaster1(harness);
+ //testRaster2(harness);
+ //testRaster3(harness);
+ }
+
+ public void testRaster1(TestHarness harness)
+ {
+ harness.checkPoint("testRaster1()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ dest = op.filter(src, dest);
+ harness.check(dest.getSample(0, 0, 0), 1);
+ harness.check(dest.getSample(1, 0, 0), 2);
+ harness.check(dest.getSample(2, 0, 0), 3);
+ harness.check(dest.getSample(3, 0, 0), 4);
+ harness.check(dest.getSample(4, 0, 0), 5);
+ harness.check(dest.getSample(0, 1, 0), 6);
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(2, 1, 0), 8);
+ harness.check(dest.getSample(3, 1, 0), 9);
+ harness.check(dest.getSample(4, 1, 0), 10);
+ harness.check(dest.getSample(0, 2, 0), 11);
+ harness.check(dest.getSample(1, 2, 0), 12);
+ harness.check(dest.getSample(2, 2, 0), 13);
+ harness.check(dest.getSample(3, 2, 0), 14);
+ harness.check(dest.getSample(4, 2, 0), 15);
+ harness.check(dest.getSample(0, 3, 0), 16);
+ harness.check(dest.getSample(1, 3, 0), 17);
+ harness.check(dest.getSample(2, 3, 0), 18);
+ harness.check(dest.getSample(3, 3, 0), 19);
+ harness.check(dest.getSample(4, 3, 0), 20);
+
+ harness.check(dest.getSample(0, 0, 1), 11);
+ harness.check(dest.getSample(1, 0, 1), 12);
+ harness.check(dest.getSample(2, 0, 1), 13);
+ harness.check(dest.getSample(3, 0, 1), 14);
+ harness.check(dest.getSample(4, 0, 1), 15);
+ harness.check(dest.getSample(0, 1, 1), 16);
+ harness.check(dest.getSample(1, 1, 1), 17);
+ harness.check(dest.getSample(2, 1, 1), 18);
+ harness.check(dest.getSample(3, 1, 1), 19);
+ harness.check(dest.getSample(4, 1, 1), 20);
+ harness.check(dest.getSample(0, 2, 1), 21);
+ harness.check(dest.getSample(1, 2, 1), 22);
+ harness.check(dest.getSample(2, 2, 1), 23);
+ harness.check(dest.getSample(3, 2, 1), 24);
+ harness.check(dest.getSample(4, 2, 1), 25);
+ harness.check(dest.getSample(0, 3, 1), 26);
+ harness.check(dest.getSample(1, 3, 1), 27);
+ harness.check(dest.getSample(2, 3, 1), 28);
+ harness.check(dest.getSample(3, 3, 1), 29);
+ harness.check(dest.getSample(4, 3, 1), 30);
+
+ harness.check(dest.getSample(0, 0, 2), 21);
+ harness.check(dest.getSample(1, 0, 2), 22);
+ harness.check(dest.getSample(2, 0, 2), 23);
+ harness.check(dest.getSample(3, 0, 2), 24);
+ harness.check(dest.getSample(4, 0, 2), 25);
+ harness.check(dest.getSample(0, 1, 2), 26);
+ harness.check(dest.getSample(1, 1, 2), 27);
+ harness.check(dest.getSample(2, 1, 2), 28);
+ harness.check(dest.getSample(3, 1, 2), 29);
+ harness.check(dest.getSample(4, 1, 2), 30);
+ harness.check(dest.getSample(0, 2, 2), 31);
+ harness.check(dest.getSample(1, 2, 2), 32);
+ harness.check(dest.getSample(2, 2, 2), 33);
+ harness.check(dest.getSample(3, 2, 2), 34);
+ harness.check(dest.getSample(4, 2, 2), 35);
+ harness.check(dest.getSample(0, 3, 2), 36);
+ harness.check(dest.getSample(1, 3, 2), 37);
+ harness.check(dest.getSample(2, 3, 2), 38);
+ harness.check(dest.getSample(3, 3, 2), 39);
+ harness.check(dest.getSample(4, 3, 2), 40);
+ }
+
+ public void testRaster2(TestHarness harness)
+ {
+ harness.checkPoint("testRaster2()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ dest = op.filter(src, dest);
+
+ harness.check(dest.getSample(0, 0, 0), 0);
+ harness.check(dest.getSample(1, 0, 0), 0);
+ harness.check(dest.getSample(2, 0, 0), 0);
+ harness.check(dest.getSample(3, 0, 0), 0);
+ harness.check(dest.getSample(4, 0, 0), 0);
+ harness.check(dest.getSample(0, 1, 0), 0);
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(2, 1, 0), 8);
+ harness.check(dest.getSample(3, 1, 0), 9);
+ harness.check(dest.getSample(4, 1, 0), 0);
+ harness.check(dest.getSample(0, 2, 0), 0);
+ harness.check(dest.getSample(1, 2, 0), 12);
+ harness.check(dest.getSample(2, 2, 0), 13);
+ harness.check(dest.getSample(3, 2, 0), 14);
+ harness.check(dest.getSample(4, 2, 0), 0);
+ harness.check(dest.getSample(0, 3, 0), 0);
+ harness.check(dest.getSample(1, 3, 0), 0);
+ harness.check(dest.getSample(2, 3, 0), 0);
+ harness.check(dest.getSample(3, 3, 0), 0);
+ harness.check(dest.getSample(4, 3, 0), 0);
+
+ harness.check(dest.getSample(0, 0, 1), 0);
+ harness.check(dest.getSample(1, 0, 1), 0);
+ harness.check(dest.getSample(2, 0, 1), 0);
+ harness.check(dest.getSample(3, 0, 1), 0);
+ harness.check(dest.getSample(4, 0, 1), 0);
+ harness.check(dest.getSample(0, 1, 1), 0);
+ harness.check(dest.getSample(1, 1, 1), 17);
+ harness.check(dest.getSample(2, 1, 1), 18);
+ harness.check(dest.getSample(3, 1, 1), 19);
+ harness.check(dest.getSample(4, 1, 1), 0);
+ harness.check(dest.getSample(0, 2, 1), 0);
+ harness.check(dest.getSample(1, 2, 1), 22);
+ harness.check(dest.getSample(2, 2, 1), 23);
+ harness.check(dest.getSample(3, 2, 1), 24);
+ harness.check(dest.getSample(4, 2, 1), 0);
+ harness.check(dest.getSample(0, 3, 1), 0);
+ harness.check(dest.getSample(1, 3, 1), 0);
+ harness.check(dest.getSample(2, 3, 1), 0);
+ harness.check(dest.getSample(3, 3, 1), 0);
+ harness.check(dest.getSample(4, 3, 1), 0);
+
+ harness.check(dest.getSample(0, 0, 2), 0);
+ harness.check(dest.getSample(1, 0, 2), 0);
+ harness.check(dest.getSample(2, 0, 2), 0);
+ harness.check(dest.getSample(3, 0, 2), 0);
+ harness.check(dest.getSample(4, 0, 2), 0);
+ harness.check(dest.getSample(0, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 2), 27);
+ harness.check(dest.getSample(2, 1, 2), 28);
+ harness.check(dest.getSample(3, 1, 2), 29);
+ harness.check(dest.getSample(4, 1, 2), 0);
+ harness.check(dest.getSample(0, 2, 2), 0);
+ harness.check(dest.getSample(1, 2, 2), 32);
+ harness.check(dest.getSample(2, 2, 2), 33);
+ harness.check(dest.getSample(3, 2, 2), 34);
+ harness.check(dest.getSample(4, 2, 2), 0);
+ harness.check(dest.getSample(0, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 2), 0);
+ harness.check(dest.getSample(2, 3, 2), 0);
+ harness.check(dest.getSample(3, 3, 2), 0);
+ harness.check(dest.getSample(4, 3, 2), 0);
+ }
+
+ public void testRaster3(TestHarness harness)
+ {
+ harness.checkPoint("testRaster3()");
+ Raster src = createRasterA();
+ WritableRaster dest = src.createCompatibleWritableRaster();
+
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+
+ dest = op.filter(src, dest);
+ harness.check(dest.getSample(0, 0, 0), 1);
+ harness.check(dest.getSample(1, 0, 0), 2);
+ harness.check(dest.getSample(2, 0, 0), 3);
+ harness.check(dest.getSample(3, 0, 0), 4);
+ harness.check(dest.getSample(4, 0, 0), 5);
+ harness.check(dest.getSample(0, 1, 0), 6);
+ harness.check(dest.getSample(1, 1, 0), 21);
+ harness.check(dest.getSample(2, 1, 0), 26);
+ harness.check(dest.getSample(3, 1, 0), 30);
+ harness.check(dest.getSample(4, 1, 0), 10);
+ harness.check(dest.getSample(0, 2, 0), 11);
+ harness.check(dest.getSample(1, 2, 0), 44);
+ harness.check(dest.getSample(2, 2, 0), 48);
+ harness.check(dest.getSample(3, 2, 0), 53);
+ harness.check(dest.getSample(4, 2, 0), 15);
+ harness.check(dest.getSample(0, 3, 0), 16);
+ harness.check(dest.getSample(1, 3, 0), 17);
+ harness.check(dest.getSample(2, 3, 0), 18);
+ harness.check(dest.getSample(3, 3, 0), 19);
+ harness.check(dest.getSample(4, 3, 0), 20);
+
+ harness.check(dest.getSample(0, 0, 1), 11);
+ harness.check(dest.getSample(1, 0, 1), 12);
+ harness.check(dest.getSample(2, 0, 1), 13);
+ harness.check(dest.getSample(3, 0, 1), 14);
+ harness.check(dest.getSample(4, 0, 1), 15);
+ harness.check(dest.getSample(0, 1, 1), 16);
+ harness.check(dest.getSample(1, 1, 1), 66);
+ harness.check(dest.getSample(2, 1, 1), 71);
+ harness.check(dest.getSample(3, 1, 1), 75);
+ harness.check(dest.getSample(4, 1, 1), 20);
+ harness.check(dest.getSample(0, 2, 1), 21);
+ harness.check(dest.getSample(1, 2, 1), 89);
+ harness.check(dest.getSample(2, 2, 1), 93);
+ harness.check(dest.getSample(3, 2, 1), 98);
+ harness.check(dest.getSample(4, 2, 1), 25);
+ harness.check(dest.getSample(0, 3, 1), 26);
+ harness.check(dest.getSample(1, 3, 1), 27);
+ harness.check(dest.getSample(2, 3, 1), 28);
+ harness.check(dest.getSample(3, 3, 1), 29);
+ harness.check(dest.getSample(4, 3, 1), 30);
+
+ harness.check(dest.getSample(0, 0, 2), 21);
+ harness.check(dest.getSample(1, 0, 2), 22);
+ harness.check(dest.getSample(2, 0, 2), 23);
+ harness.check(dest.getSample(3, 0, 2), 24);
+ harness.check(dest.getSample(4, 0, 2), 25);
+ harness.check(dest.getSample(0, 1, 2), 26);
+ harness.check(dest.getSample(1, 1, 2), 111);
+ harness.check(dest.getSample(2, 1, 2), 116);
+ harness.check(dest.getSample(3, 1, 2), 120);
+ harness.check(dest.getSample(4, 1, 2), 30);
+ harness.check(dest.getSample(0, 2, 2), 31);
+ harness.check(dest.getSample(1, 2, 2), 134);
+ harness.check(dest.getSample(2, 2, 2), 138);
+ harness.check(dest.getSample(3, 2, 2), 143);
+ harness.check(dest.getSample(4, 2, 2), 35);
+ harness.check(dest.getSample(0, 3, 2), 36);
+ harness.check(dest.getSample(1, 3, 2), 37);
+ harness.check(dest.getSample(2, 3, 2), 38);
+ harness.check(dest.getSample(3, 3, 2), 39);
+
+ harness.check(dest.getSample(4, 3, 2), 40);
+ }
+
+ /**
+ * Creates a sample raster for testing.
+ *
+ * @return A raster.
+ */
+ private Raster createRasterA()
+ {
+ WritableRaster r = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, 5,
+ 4, 3, null);
+ for (int i = 0; i < 5; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ r.setSample(i, j, 0, j * 5 + i + 1);
+ r.setSample(i, j, 1, j * 5 + i + 11);
+ r.setSample(i, j, 2, j * 5 + i + 21);
+ }
+ }
+ return r;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/getBounds2D.java b/gnu/testlet/java/awt/image/LookupOp/getBounds2D.java
new file mode 100644
index 00000000..e8313ef3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/getBounds2D.java
@@ -0,0 +1,96 @@
+/* getBounds2D.java -- some checks for the getBounds2D() methods in the
+ LookupOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.DataBuffer;
+import java.awt.image.LookupOp;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.Raster;
+
+public class getBounds2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(BufferedImage)");
+ BufferedImage image = new BufferedImage(10, 20,
+ BufferedImage.TYPE_INT_ARGB);
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ Rectangle2D bounds = op.getBounds2D(image);
+ harness.check(bounds.getWidth(), 10);
+ harness.check(bounds.getHeight(), 20);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((BufferedImage) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(Raster)");
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ Raster raster = Raster.createWritableRaster(
+ new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8),
+ null);
+ Rectangle2D bounds = op.getBounds2D(raster);
+ harness.check(bounds.getWidth(), 10);
+ harness.check(bounds.getHeight(), 20);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((Raster) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/getPoint2D.java b/gnu/testlet/java/awt/image/LookupOp/getPoint2D.java
new file mode 100644
index 00000000..e1b8c48a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/getPoint2D.java
@@ -0,0 +1,58 @@
+/* getPoint2D.java -- some checks for the getPoint2D() method in the LookupOp
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Point2D;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.LookupOp;
+
+public class getPoint2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ Point2D p = new Point2D.Double(1.0, 2.0);
+ Point2D pp = new Point2D.Double();
+ Point2D p1 = op.getPoint2D(p, pp);
+ harness.check(p1, p);
+ harness.check(p1 == pp);
+ harness.check(p1 != p);
+
+ // try null dest
+ p1 = op.getPoint2D(p, null);
+ harness.check(p1, p);
+ harness.check(p1 != p);
+
+ // try src == dst
+ p1 = op.getPoint2D(p, p);
+ harness.check(p1, p);
+ harness.check(p1 == p);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/getRenderingHints.java b/gnu/testlet/java/awt/image/LookupOp/getRenderingHints.java
new file mode 100644
index 00000000..11bac1f6
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/getRenderingHints.java
@@ -0,0 +1,47 @@
+/* getRenderingHints.java -- some checks for the getRenderingHints() method
+ in the LookupOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.image.ByteLookupTable;
+import java.awt.image.LookupOp;
+
+public class getRenderingHints implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ RenderingHints r = new RenderingHints(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ LookupOp op = new LookupOp(t, r);
+ harness.check(op.getRenderingHints() == r);
+ op = new LookupOp(t, null);
+ harness.check(op.getRenderingHints() == null);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupOp/getTable.java b/gnu/testlet/java/awt/image/LookupOp/getTable.java
new file mode 100644
index 00000000..7299c303
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupOp/getTable.java
@@ -0,0 +1,41 @@
+/* getTable.java -- some checks for the getTable() method in the LookupOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+import java.awt.image.LookupOp;
+
+public class getTable implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ byte[] bytes = new byte[] {(byte) 0xAA, (byte) 0xBB};
+ ByteLookupTable t = new ByteLookupTable(0, bytes);
+ LookupOp op = new LookupOp(t, null);
+ harness.check(op.getTable() == t);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupTable/CVS/Entries b/gnu/testlet/java/awt/image/LookupTable/CVS/Entries
new file mode 100644
index 00000000..8d2a90f1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/CVS/Entries
@@ -0,0 +1,5 @@
+/MyLookupTable.java/1.2/Tue Jul 18 21:57:40 2006//
+/constructor.java/1.2/Wed May 21 14:17:55 2008//
+/getNumComponents.java/1.1/Tue Jul 18 16:56:39 2006//
+/getOffset.java/1.1/Tue Jul 18 16:56:39 2006//
+D
diff --git a/gnu/testlet/java/awt/image/LookupTable/CVS/Repository b/gnu/testlet/java/awt/image/LookupTable/CVS/Repository
new file mode 100644
index 00000000..7d9fae1a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/LookupTable
diff --git a/gnu/testlet/java/awt/image/LookupTable/CVS/Root b/gnu/testlet/java/awt/image/LookupTable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java b/gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java
new file mode 100644
index 00000000..2ba335e8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/MyLookupTable.java
@@ -0,0 +1,40 @@
+/* MyLookupTable.java -- a utility class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.awt.image.LookupTable;
+
+import java.awt.image.LookupTable;
+
+public class MyLookupTable extends LookupTable
+{
+ public MyLookupTable(int offset, int numComponents)
+ {
+ super(offset, numComponents);
+ }
+
+ public int[] lookupPixel(int[] src, int[] dest)
+ {
+ return null;
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/LookupTable/constructor.java b/gnu/testlet/java/awt/image/LookupTable/constructor.java
new file mode 100644
index 00000000..7aa67fcb
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/constructor.java
@@ -0,0 +1,65 @@
+/* constructors.java -- some checks for the constructor in the LookupTable
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyLookupTable
+
+package gnu.testlet.java.awt.image.LookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.LookupTable;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ LookupTable t = new MyLookupTable(1, 2);
+ harness.check(t.getOffset(), 1);
+ harness.check(t.getNumComponents(), 2);
+
+ // try negative offset
+ boolean pass = false;
+ try
+ {
+ t = new MyLookupTable(-1, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero components
+ pass = false;
+ try
+ {
+ t = new MyLookupTable(1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupTable/getNumComponents.java b/gnu/testlet/java/awt/image/LookupTable/getNumComponents.java
new file mode 100644
index 00000000..4670e89a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/getNumComponents.java
@@ -0,0 +1,40 @@
+/* getNumComponents.java -- some checks for the getNumComponents() method
+ in the LookupTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ByteLookupTable;
+
+public class getNumComponents implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ByteLookupTable t = new ByteLookupTable(0, new byte[] {(byte) 0xAA,
+ (byte) 0xBB});
+ harness.check(t.getNumComponents(), 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/LookupTable/getOffset.java b/gnu/testlet/java/awt/image/LookupTable/getOffset.java
new file mode 100644
index 00000000..7f205ed7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/LookupTable/getOffset.java
@@ -0,0 +1,40 @@
+/* getOffset.java -- some checks for the getOffset() method in the LookupTable
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.LookupTable;
+
+import gnu.testlet.TestHarness;
+
+import java.awt.image.ByteLookupTable;
+
+public class getOffset
+{
+ public void test(TestHarness harness)
+ {
+ ByteLookupTable t = new ByteLookupTable(99, new byte[] {(byte) 0xAA,
+ (byte) 0xBB});
+ harness.check(t.getOffset(), 99);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Entries b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Entries
new file mode 100644
index 00000000..7802cd44
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Entries
@@ -0,0 +1,20 @@
+/constructors.java/1.1/Thu Jul 13 16:45:29 2006//
+/createCompatibleSampleModel.java/1.1/Thu Jul 13 16:45:29 2006//
+/createDataBuffer.java/1.2/Fri Jul 14 13:54:35 2006//
+/createSubsetSampleModel.java/1.1/Fri Jul 14 14:14:34 2006//
+/equals.java/1.1/Thu Jul 13 16:45:29 2006//
+/getBitOffset.java/1.2/Mon Jul 17 14:01:44 2006//
+/getDataBitOffset.java/1.1/Fri Jul 14 14:14:34 2006//
+/getDataElements.java/1.1/Fri Jul 14 16:21:30 2006//
+/getOffset.java/1.1/Fri Jul 14 14:14:34 2006//
+/getPixel.java/1.1/Fri Jul 14 14:14:34 2006//
+/getPixelBitStride.java/1.1/Fri Jul 14 14:14:34 2006//
+/getSample.java/1.1/Fri Jul 14 14:14:34 2006//
+/getSampleSize.java/1.1/Fri Jul 14 14:14:34 2006//
+/getScanlineStride.java/1.1/Fri Jul 14 14:14:34 2006//
+/getTransferType.java/1.1/Fri Jul 14 14:14:34 2006//
+/hashCode.java/1.1/Fri Jul 14 14:14:34 2006//
+/setDataElements.java/1.2/Mon Jul 17 14:01:44 2006//
+/setPixel.java/1.1/Fri Jul 14 14:14:34 2006//
+/setSample.java/1.2/Mon Jul 17 14:01:44 2006//
+D
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Repository b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Repository
new file mode 100644
index 00000000..779adeb4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Root b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/constructors.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/constructors.java
new file mode 100644
index 00000000..8019e6c9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/constructors.java
@@ -0,0 +1,82 @@
+/* constructors.java -- some checks for the constructors in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int)");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m.getWidth(), 10);
+ harness.check(m.getHeight(), 20);
+ harness.check(m.getSampleSize(0), 8);
+ harness.check(m.getNumBands(), 1);
+ harness.check(m.getNumDataElements(), 1);
+ harness.check(m.getScanlineStride(), 3);
+ harness.check(m.getDataBitOffset(), 0);
+
+ // unsupported type should throw IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_DOUBLE, 10, 20, 8);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, int)");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 5, 1);
+ harness.check(m.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m.getWidth(), 10);
+ harness.check(m.getHeight(), 20);
+ harness.check(m.getSampleSize(0), 8);
+ harness.check(m.getNumBands(), 1);
+ harness.check(m.getNumDataElements(), 1);
+ harness.check(m.getScanlineStride(), 5);
+ harness.check(m.getDataBitOffset(), 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createCompatibleSampleModel.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createCompatibleSampleModel.java
new file mode 100644
index 00000000..0b2689b4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createCompatibleSampleModel.java
@@ -0,0 +1,70 @@
+/* createCompatibleSampleModel.java -- some checks for the
+ createCompatibleSampleModel() method in the MultiPixelPackedSampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class createCompatibleSampleModel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m1 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ MultiPixelPackedSampleModel m2
+ = (MultiPixelPackedSampleModel) m1.createCompatibleSampleModel(5, 10);
+ harness.check(m2.getDataType(), DataBuffer.TYPE_INT); // check 1
+ harness.check(m2.getWidth(), 5); // check 2
+ harness.check(m2.getHeight(), 10); // check 3
+ harness.check(m2.getNumBands(), 1); // check 4
+ harness.check(m2.getScanlineStride(), 2);
+
+ // if 'w' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m3 = */ m1.createCompatibleSampleModel(0, 10);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'h' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m4 = */ m1.createCompatibleSampleModel(5, 0);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createDataBuffer.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createDataBuffer.java
new file mode 100644
index 00000000..1ebcb4ea
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createDataBuffer.java
@@ -0,0 +1,79 @@
+/* createDataBuffer.java -- some checks for the createDataBuffer() method in
+ the MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class createDataBuffer implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 60);
+
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ DataBuffer db2 = m2.createDataBuffer();
+ harness.check(db2.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(db2.getNumBanks(), 1);
+ harness.check(db2.getSize(), 81);
+
+ MultiPixelPackedSampleModel m3 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 8);
+ DataBuffer db3 = m3.createDataBuffer();
+ harness.check(db3.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(db3.getNumBanks(), 1);
+ harness.check(db3.getSize(), 200);
+
+ MultiPixelPackedSampleModel m4 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 8, 11, 16);
+ DataBuffer db4 = m4.createDataBuffer();
+ harness.check(db4.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(db4.getNumBanks(), 1);
+ harness.check(db4.getSize(), 222);
+
+ MultiPixelPackedSampleModel m5 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 10, 20, 8);
+ DataBuffer db5 = m5.createDataBuffer();
+ harness.check(db5.getDataType(), DataBuffer.TYPE_USHORT);
+ harness.check(db5.getNumBanks(), 1);
+ harness.check(db5.getSize(), 100);
+
+ MultiPixelPackedSampleModel m6 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 10, 20, 8, 6, 16);
+ DataBuffer db6 = m6.createDataBuffer();
+ harness.check(db6.getDataType(), DataBuffer.TYPE_USHORT);
+ harness.check(db6.getNumBanks(), 1);
+ harness.check(db6.getSize(), 121);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createSubsetSampleModel.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createSubsetSampleModel.java
new file mode 100644
index 00000000..9737c3f7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/createSubsetSampleModel.java
@@ -0,0 +1,68 @@
+/* createSubsetSampleModel.java -- some checks for the createSubsetSampleModel()
+ method in the MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JD1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.RasterFormatException;
+
+public class createSubsetSampleModel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m1 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ MultiPixelPackedSampleModel m2
+ = (MultiPixelPackedSampleModel) m1.createSubsetSampleModel(
+ new int[] {2});
+ harness.check(m2.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m2.getWidth(), 10);
+ harness.check(m2.getHeight(), 20);
+ harness.check(m2.getNumBands(), 1);
+
+ // try array length > 1
+ boolean pass = false;
+ try
+ {
+ m1.createSubsetSampleModel(new int[] {2, 3});
+ }
+ catch (RasterFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null argument
+ MultiPixelPackedSampleModel m3
+ = (MultiPixelPackedSampleModel) m1.createSubsetSampleModel(null);
+ harness.check(m3.getDataType(), DataBuffer.TYPE_INT);
+ harness.check(m3.getWidth(), 10);
+ harness.check(m3.getHeight(), 20);
+ harness.check(m3.getNumBands(), 1);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/equals.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/equals.java
new file mode 100644
index 00000000..ff9bd711
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/equals.java
@@ -0,0 +1,77 @@
+/* equals.java -- some checks for the equals() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class equals implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m1 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 5, 1);
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 5, 1);
+ harness.check(m1.equals(m2));
+ harness.check(m2.equals(m1));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8, 5, 1);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8, 5, 1);
+ harness.check(m1.equals(m2));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 20, 8, 5, 1);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 20, 8, 5, 1);
+ harness.check(m1.equals(m2));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 8, 5, 1);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 8, 5, 1);
+ harness.check(m1.equals(m2));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 5, 1);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 5, 1);
+ harness.check(m1.equals(m2));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 6, 1);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 6, 1);
+ harness.check(m1.equals(m2));
+
+ m1 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 6, 2);
+ harness.check(!m1.equals(m2));
+ m2 = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 11, 21, 4, 6, 2);
+ harness.check(m1.equals(m2));
+
+ harness.check(!m1.equals(null));
+ harness.check(!m1.equals("Hello World!"));
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java
new file mode 100644
index 00000000..2ddc102e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getBitOffset.java
@@ -0,0 +1,79 @@
+/* getBitOffset.java -- some checks for the getBitOffset() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getBitOffset implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getBitOffset(0), 0);
+ harness.check(m.getBitOffset(1), 8);
+ harness.check(m.getBitOffset(2), 16);
+ harness.check(m.getBitOffset(3), 24);
+ harness.check(m.getBitOffset(4), 0);
+ harness.check(m.getBitOffset(5), 8);
+ harness.check(m.getBitOffset(6), 16);
+ harness.check(m.getBitOffset(7), 24);
+ harness.check(m.getBitOffset(8), 0);
+ harness.check(m.getBitOffset(9), 8);
+ harness.check(m.getBitOffset(-1), -8);
+
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ harness.check(m2.getBitOffset(0), 16);
+ harness.check(m2.getBitOffset(1), 24);
+ harness.check(m2.getBitOffset(2), 0);
+ harness.check(m2.getBitOffset(3), 8);
+ harness.check(m2.getBitOffset(4), 16);
+ harness.check(m2.getBitOffset(5), 24);
+ harness.check(m2.getBitOffset(6), 0);
+ harness.check(m2.getBitOffset(7), 8);
+ harness.check(m2.getBitOffset(8), 16);
+ harness.check(m2.getBitOffset(9), 24);
+ harness.check(m2.getBitOffset(-1), 8);
+
+ MultiPixelPackedSampleModel m3 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 16);
+ harness.check(m3.getBitOffset(0), 0);
+ harness.check(m3.getBitOffset(1), 16);
+ harness.check(m3.getBitOffset(2), 0);
+ harness.check(m3.getBitOffset(3), 16);
+ harness.check(m3.getBitOffset(4), 0);
+ harness.check(m3.getBitOffset(5), 16);
+ harness.check(m3.getBitOffset(6), 0);
+ harness.check(m3.getBitOffset(7), 16);
+ harness.check(m3.getBitOffset(8), 0);
+ harness.check(m3.getBitOffset(9), 16);
+ harness.check(m3.getBitOffset(-1), -16);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataBitOffset.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataBitOffset.java
new file mode 100644
index 00000000..3588f061
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataBitOffset.java
@@ -0,0 +1,45 @@
+/* getDataBitOffset.java -- some checks for the getDataBitOffset() method in
+ the MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert (<david.gilbert@object-refinery.com>)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getDataBitOffset {
+
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getDataBitOffset(), 0);
+
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ harness.check(m2.getDataBitOffset(), 16);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataElements.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataElements.java
new file mode 100644
index 00000000..8e05b149
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getDataElements.java
@@ -0,0 +1,95 @@
+/* getDataElements.java -- some checks for the getDataElements() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getDataElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(3, 0xAABBCCDD);
+
+ byte[] elements = (byte[]) m.getDataElements(0, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (byte) 0xAA);
+
+ elements = (byte[]) m.getDataElements(1, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (byte) 0xBB);
+
+ elements = (byte[]) m.getDataElements(2, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (byte) 0xCC);
+
+ elements = (byte[]) m.getDataElements(3, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (byte) 0xDD);
+
+ // try null db
+ boolean pass = false;
+ try
+ {
+ m.getDataElements(3, 1, null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 16);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(5, 0xAABBCCDD);
+
+ short[] elements = (short[]) m.getDataElements(0, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (short) 0xAABB);
+
+ elements = (short[]) m.getDataElements(1, 1, null, db);
+ harness.check(elements.length, 1);
+ harness.check(elements[0], (short) 0xCCDD);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getOffset.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getOffset.java
new file mode 100644
index 00000000..65c93e39
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getOffset.java
@@ -0,0 +1,64 @@
+/* getOffset.java -- some checks for the getOffset() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getOffset implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getOffset(0, 0), 0);
+ harness.check(m.getOffset(1, 1), 3);
+ harness.check(m.getOffset(2, 2), 6);
+ harness.check(m.getOffset(3, 3), 9);
+ harness.check(m.getOffset(4, 4), 13);
+ harness.check(m.getOffset(5, 15), 46);
+ harness.check(m.getOffset(6, 16), 49);
+ harness.check(m.getOffset(7, 17), 52);
+ harness.check(m.getOffset(8, 18), 56);
+ harness.check(m.getOffset(9, 19), 59);
+
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ harness.check(m2.getDataBitOffset(), 16);
+ harness.check(m2.getOffset(0, 0), 0);
+ harness.check(m2.getOffset(1, 1), 4);
+ harness.check(m2.getOffset(2, 2), 9);
+ harness.check(m2.getOffset(3, 3), 13);
+ harness.check(m2.getOffset(4, 4), 17);
+ harness.check(m2.getOffset(5, 15), 61);
+ harness.check(m2.getOffset(6, 16), 66);
+ harness.check(m2.getOffset(7, 17), 70);
+ harness.check(m2.getOffset(8, 18), 74);
+ harness.check(m2.getOffset(9, 19), 78);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixel.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixel.java
new file mode 100644
index 00000000..f074c768
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixel.java
@@ -0,0 +1,78 @@
+/* getPixel.java -- some checks for the getPixel() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(3, 0xAABBCCDD);
+ harness.check(m.getPixel(0, 1, (int[]) null, db)[0], 0xAA);
+ harness.check(m.getPixel(1, 1, (int[]) null, db)[0], 0xBB);
+ harness.check(m.getPixel(2, 1, (int[]) null, db)[0], 0xCC);
+ harness.check(m.getPixel(3, 1, (int[]) null, db)[0], 0xDD);
+
+ // try null db
+ boolean pass = false;
+ try
+ {
+ m.getPixel(3, 1, (int[]) null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(5, 0xAABBCCDD);
+ harness.check(m.getPixel(0, 1, (int[]) null, db)[0], 0x00);
+ harness.check(m.getPixel(1, 1, (int[]) null, db)[0], 0x00);
+ harness.check(m.getPixel(2, 1, (int[]) null, db)[0], 0xAA);
+ harness.check(m.getPixel(3, 1, (int[]) null, db)[0], 0xBB);
+ harness.check(m.getPixel(4, 1, (int[]) null, db)[0], 0xCC);
+ harness.check(m.getPixel(5, 1, (int[]) null, db)[0], 0xDD);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixelBitStride.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixelBitStride.java
new file mode 100644
index 00000000..4356934b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getPixelBitStride.java
@@ -0,0 +1,51 @@
+/* getPixelBitStride.java -- some checks for the getPixelBitStride() method
+ in the MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getPixelBitStride implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getPixelBitStride(), 8);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 1);
+ harness.check(m.getPixelBitStride(), 1);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 2);
+ harness.check(m.getPixelBitStride(), 2);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 4);
+ harness.check(m.getPixelBitStride(), 4);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ harness.check(m.getPixelBitStride(), 16);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 32);
+ harness.check(m.getPixelBitStride(), 32);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSample.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSample.java
new file mode 100644
index 00000000..298d2ea4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSample.java
@@ -0,0 +1,79 @@
+/* getSample.java -- some checks for the getSample() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(3, 0xAABBCCDD);
+ harness.check(m.getSample(0, 1, 0, db), 0xAA);
+ harness.check(m.getSample(1, 1, 0, db), 0xBB);
+ harness.check(m.getSample(2, 1, 0, db), 0xCC);
+ harness.check(m.getSample(3, 1, 0, db), 0xDD);
+
+ // try null db
+ boolean pass = false;
+ try
+ {
+ m.getSample(3, 1, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ DataBuffer db = m.createDataBuffer();
+ db.setElem(5, 0xAABBCCDD);
+ harness.check(m.getSample(0, 1, 0, db), 0x00);
+ harness.check(m.getSample(1, 1, 0, db), 0x00);
+ harness.check(m.getSample(2, 1, 0, db), 0xAA);
+ harness.check(m.getSample(3, 1, 0, db), 0xBB);
+ harness.check(m.getSample(4, 1, 0, db), 0xCC);
+ harness.check(m.getSample(5, 1, 0, db), 0xDD);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSampleSize.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSampleSize.java
new file mode 100644
index 00000000..e8919f42
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getSampleSize.java
@@ -0,0 +1,90 @@
+/* getSampleSize.java -- some checks for the getSampleSize() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class getSampleSize implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 1);
+ harness.check(m.getSampleSize()[0], 1);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 2);
+ harness.check(m.getSampleSize()[0], 2);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 4);
+ harness.check(m.getSampleSize()[0], 4);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getSampleSize()[0], 8);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ harness.check(m.getSampleSize()[0], 16);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 32);
+ harness.check(m.getSampleSize()[0], 32);
+
+ // check that the returned array can't be used to modify the model's
+ // internal state
+ int[] sizes = m.getSampleSize();
+ harness.check(sizes[0], 32);
+ sizes[0] = 99;
+ int[] sizes2 = m.getSampleSize();
+ harness.check(sizes != sizes2);
+ harness.check(sizes2[0], 32);
+
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 1);
+ harness.check(m.getSampleSize(0), 1);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 2);
+ harness.check(m.getSampleSize(0), 2);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 4);
+ harness.check(m.getSampleSize(0), 4);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getSampleSize(0), 8);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ harness.check(m.getSampleSize(0), 16);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 32);
+ harness.check(m.getSampleSize(0), 32);
+
+ // try invalid band - the band is ignored
+ harness.check(m.getSampleSize(-1), 32);
+ harness.check(m.getSampleSize(1), 32);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getScanlineStride.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getScanlineStride.java
new file mode 100644
index 00000000..32a58007
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getScanlineStride.java
@@ -0,0 +1,45 @@
+/* getScanlineStride.java -- some checks for the getScanlineStride() method
+ in the MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getScanlineStride implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getScanlineStride(), 3);
+
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ harness.check(m2.getScanlineStride(), 4);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getTransferType.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getTransferType.java
new file mode 100644
index 00000000..1d8d2c7c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/getTransferType.java
@@ -0,0 +1,90 @@
+/* getTransferType.java -- some checks for the getTransferType() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getTransferType implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testBYTE(harness);
+ testUSHORT(harness);
+ testINT(harness);
+ }
+
+ public void testBYTE(TestHarness harness)
+ {
+ harness.checkPoint("testBYTE()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 1);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 2);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 4);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ }
+
+ public void testUSHORT(TestHarness harness)
+ {
+ harness.checkPoint("testUSHORT()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 10, 20, 1);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 2);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 4);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 8);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 16);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_USHORT);
+ }
+
+ public void testINT(TestHarness harness)
+ {
+ harness.checkPoint("testINT()");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 1);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 2);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 4);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 8);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_BYTE);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_USHORT);
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 32);
+ harness.check(m.getTransferType(), DataBuffer.TYPE_INT);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/hashCode.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/hashCode.java
new file mode 100644
index 00000000..cf4e0380
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/hashCode.java
@@ -0,0 +1,45 @@
+/* hashCode.java -- some checks for the hashCode() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class hashCode implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // equal instances should have equal hashCodes...
+ MultiPixelPackedSampleModel m1 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 5, 1);
+ MultiPixelPackedSampleModel m2 = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 5, 1);
+ harness.check(m1.equals(m2));
+ harness.check(m1.hashCode(), m2.hashCode());
+ }
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java
new file mode 100644
index 00000000..d1fbeb3f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setDataElements.java
@@ -0,0 +1,213 @@
+/* setDataElements.java -- some checks for the setDataElements() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setDataElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testTYPE_BYTE(harness);
+ testTYPE_USHORT(harness);
+ testBadTransferArray(harness);
+ testNullTransferArray(harness);
+ }
+
+ public void testTYPE_BYTE(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ m.setDataElements(2, 1, new byte[] {(byte) 0xFA}, db);
+ harness.check(db.getElem(12), 0xFA);
+ }
+
+ public void testTYPE_USHORT(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ m.setDataElements(0, 0, new byte[] {(byte) 0x12}, db);
+ harness.check(db.getElem(0), 0x1200);
+ m.setDataElements(1, 0, new byte[] {(byte) 0x34}, db);
+ harness.check(db.getElem(0), 0x1234);
+ m.setDataElements(2, 1, new byte[] {(byte) 0xAB}, db);
+ harness.check(db.getElem(6), 0xAB00);
+ m.setDataElements(3, 1, new byte[] {(byte) 0xCD}, db);
+ harness.check(db.getElem(6), 0xABCD);
+ }
+
+ /**
+ * Tests for the required ClassCastException if the incoming Object is not
+ * an array of the TransferType.
+ *
+ * @param harness the test harness.
+ */
+ public void testBadTransferArray(TestHarness harness)
+ {
+ harness.checkPoint("testBadTransferArray()");
+
+ // here a byte[] is expected...
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+
+ boolean pass = false;
+ try
+ {
+ m.setDataElements(2, 1, new int[] {0xFA}, db);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a byte[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 8);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, new short[] {0xFA}, db);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a short[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 16);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, new byte[] {(byte) 0xFA}, db);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a short[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, new byte[] {(byte) 0xFA}, db);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ /**
+ * Tests for the required NullPointerException if the incoming Object is null.
+ *
+ * @param harness the test harness.
+ */
+ public void testNullTransferArray(TestHarness harness)
+ {
+ harness.checkPoint("testNullTransferArray()");
+
+ // here a byte[] is expected...
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+
+ boolean pass = false;
+ try
+ {
+ m.setDataElements(2, 1, null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a byte[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 8);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a short[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, 10, 20, 16);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // here a short[] is expected...
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, 10, 20, 16);
+ db = m.createDataBuffer();
+
+ pass = false;
+ try
+ {
+ m.setDataElements(2, 1, null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setPixel.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setPixel.java
new file mode 100644
index 00000000..278c1276
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setPixel.java
@@ -0,0 +1,77 @@
+/* setPixel.java -- some checks for the setPixel() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class setPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ m.setPixel(0, 1, new int[] {0xAA}, db);
+ m.setPixel(1, 1, new int[] {0xBB}, db);
+ m.setPixel(2, 1, new int[] {0xCC}, db);
+ m.setPixel(3, 1, new int[] {0xDD}, db);
+ harness.check(db.getElem(3), 0xAABBCCDD);
+
+ // try null db
+ boolean pass = false;
+ try
+ {
+ m.setPixel(3, 1, new int[] {0xAA}, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ DataBuffer db = m.createDataBuffer();
+ m.setPixel(2, 1, new int[] {0xAA}, db);
+ m.setPixel(3, 1, new int[] {0xBB}, db);
+ m.setPixel(4, 1, new int[] {0xCC}, db);
+ m.setPixel(5, 1, new int[] {0xDD}, db);
+ harness.check(db.getElem(5), 0xAABBCCDD);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java
new file mode 100644
index 00000000..eb5841df
--- /dev/null
+++ b/gnu/testlet/java/awt/image/MultiPixelPackedSampleModel/setSample.java
@@ -0,0 +1,110 @@
+/* setSample.java -- some checks for the setSample() method in the
+ MultiPixelPackedSampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.MultiPixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+
+public class setSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testTYPE_USHORT(harness);
+ testTYPE_BYTE(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ m.setSample(0, 1, 0, 0xAA, db);
+ m.setSample(1, 1, 0, 0xBB, db);
+ m.setSample(2, 1, 0, 0xCC, db);
+ m.setSample(3, 1, 0, 0xDD, db);
+ harness.check(db.getElem(3), 0xAABBCCDD);
+
+ // try null db
+ boolean pass = false;
+ try
+ {
+ m.setSample(3, 1, 0, 0xAA, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, 8, 4, 16);
+ DataBuffer db = m.createDataBuffer();
+ m.setSample(2, 1, 0, 0xAA, db);
+ m.setSample(3, 1, 0, 0xBB, db);
+ m.setSample(4, 1, 0, 0xCC, db);
+ m.setSample(5, 1, 0, 0xDD, db);
+ harness.check(db.getElem(5), 0xAABBCCDD);
+ }
+
+ public void testTYPE_USHORT(TestHarness harness)
+ {
+ harness.checkPoint("TYPE_USHORT");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 10, 20, 8);
+ DataBuffer db = m.createDataBuffer();
+ m.setSample(0, 0, 0, 0x12, db);
+ harness.check(db.getElem(0), 0x1200);
+ m.setSample(1, 0, 0, 0x34, db);
+ harness.check(db.getElem(0), 0x1234);
+ m.setSample(2, 1, 0, 0xAB, db);
+ harness.check(db.getElem(6), 0xAB00);
+ m.setSample(3, 1, 0, 0xCD, db);
+ harness.check(db.getElem(6), 0xABCD);
+ }
+
+ public void testTYPE_BYTE(TestHarness harness)
+ {
+ harness.checkPoint("TYPE_BYTE");
+ MultiPixelPackedSampleModel m = new MultiPixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 10, 20, 2);
+ DataBuffer db = m.createDataBuffer();
+ m.setSample(0, 0, 0, 0x01, db);
+ harness.check(db.getElem(0), 0x40);
+ m.setSample(1, 0, 0, 0x02, db);
+ harness.check(db.getElem(0), 0x60);
+ m.setSample(2, 1, 0, 0x03, db);
+ harness.check(db.getElem(3), 0x0C);
+ m.setSample(3, 1, 0, 0x04, db);
+ harness.check(db.getElem(3), 0x0C);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/CVS/Entries b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Entries
new file mode 100644
index 00000000..6050a67c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Entries
@@ -0,0 +1,4 @@
+/SimpleGrabber.java/1.1/Mon Dec 1 18:59:12 2003//
+/lena1.jpg/1.1/Mon Dec 1 18:59:12 2003/-kb/
+/testNullProducer.java/1.1/Wed Jun 14 14:20:25 2006//
+D
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/CVS/Repository b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Repository
new file mode 100644
index 00000000..5cd03eaf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/PixelGrabber
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/CVS/Root b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/SimpleGrabber.java b/gnu/testlet/java/awt/image/PixelGrabber/SimpleGrabber.java
new file mode 100644
index 00000000..a020a6da
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/SimpleGrabber.java
@@ -0,0 +1,243 @@
+// Tags: JDK1.0
+
+/* SimpleGrabber.java
+ Copyright (C) 2003 Red Hat, Inc.
+
+ 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.java.awt.image.PixelGrabber;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.*;
+import java.awt.image.*;
+
+public class SimpleGrabber implements Testlet
+{
+ TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ Image i = null;
+
+ try
+ {
+ String f = "gnu#testlet#java#awt#image#PixelGrabber#lena1.jpg";
+ i = Toolkit.getDefaultToolkit().getImage (harness.getResourceFile (f).getAbsolutePath ());
+ }
+ catch (Exception e)
+ {
+ harness.fail ("lena1.jpg not found.");
+ }
+
+ String str = getPixels (i, 0, 0, 6, 12);
+
+ harness.check (str,
+ "Pixel (0, 0)\n"
+ + " R: 98 G: 31 B: 82\n"
+ + "Pixel (1, 0)\n"
+ + " R: 79 G: 12 B: 63\n"
+ + "Pixel (2, 0)\n"
+ + " R: 76 G: 9 B: 60\n"
+ + "Pixel (3, 0)\n"
+ + " R: 152 G: 85 B: 136\n"
+ + "Pixel (4, 0)\n"
+ + " R: 132 G: 66 B: 114\n"
+ + "Pixel (5, 0)\n"
+ + " R: 95 G: 29 B: 77\n"
+ + "Pixel (0, 1)\n"
+ + " R: 86 G: 19 B: 70\n"
+ + "Pixel (1, 1)\n"
+ + " R: 75 G: 8 B: 59\n"
+ + "Pixel (2, 1)\n"
+ + " R: 81 G: 14 B: 65\n"
+ + "Pixel (3, 1)\n"
+ + " R: 150 G: 83 B: 134\n"
+ + "Pixel (4, 1)\n"
+ + " R: 121 G: 55 B: 103\n"
+ + "Pixel (5, 1)\n"
+ + " R: 85 G: 19 B: 67\n"
+ + "Pixel (0, 2)\n"
+ + " R: 75 G: 11 B: 61\n"
+ + "Pixel (1, 2)\n"
+ + " R: 79 G: 15 B: 65\n"
+ + "Pixel (2, 2)\n"
+ + " R: 100 G: 36 B: 86\n"
+ + "Pixel (3, 2)\n"
+ + " R: 155 G: 91 B: 141\n"
+ + "Pixel (4, 2)\n"
+ + " R: 115 G: 52 B: 99\n"
+ + "Pixel (5, 2)\n"
+ + " R: 76 G: 13 B: 60\n"
+ + "Pixel (0, 3)\n"
+ + " R: 70 G: 8 B: 57\n"
+ + "Pixel (1, 3)\n"
+ + " R: 91 G: 29 B: 78\n"
+ + "Pixel (2, 3)\n"
+ + " R: 122 G: 60 B: 109\n"
+ + "Pixel (3, 3)\n"
+ + " R: 162 G: 100 B: 149\n"
+ + "Pixel (4, 3)\n"
+ + " R: 116 G: 53 B: 100\n"
+ + "Pixel (5, 3)\n"
+ + " R: 69 G: 6 B: 53\n"
+ + "Pixel (0, 4)\n"
+ + " R: 72 G: 13 B: 61\n"
+ + "Pixel (1, 4)\n"
+ + " R: 102 G: 43 B: 91\n"
+ + "Pixel (2, 4)\n"
+ + " R: 128 G: 69 B: 117\n"
+ + "Pixel (3, 4)\n"
+ + " R: 154 G: 95 B: 143\n"
+ + "Pixel (4, 4)\n"
+ + " R: 120 G: 58 B: 105\n"
+ + "Pixel (5, 4)\n"
+ + " R: 64 G: 2 B: 49\n"
+ + "Pixel (0, 5)\n"
+ + " R: 95 G: 36 B: 84\n"
+ + "Pixel (1, 5)\n"
+ + " R: 117 G: 58 B: 106\n"
+ + "Pixel (2, 5)\n"
+ + " R: 119 G: 60 B: 108\n"
+ + "Pixel (3, 5)\n"
+ + " R: 136 G: 77 B: 125\n"
+ + "Pixel (4, 5)\n"
+ + " R: 133 G: 74 B: 120\n"
+ + "Pixel (5, 5)\n"
+ + " R: 73 G: 14 B: 60\n"
+ + "Pixel (0, 6)\n"
+ + " R: 123 G: 65 B: 113\n"
+ + "Pixel (1, 6)\n"
+ + " R: 125 G: 67 B: 115\n"
+ + "Pixel (2, 6)\n"
+ + " R: 93 G: 35 B: 83\n"
+ + "Pixel (3, 6)\n"
+ + " R: 106 G: 48 B: 96\n"
+ + "Pixel (4, 6)\n"
+ + " R: 146 G: 89 B: 134\n"
+ + "Pixel (5, 6)\n"
+ + " R: 88 G: 31 B: 76\n"
+ + "Pixel (0, 7)\n"
+ + " R: 137 G: 79 B: 127\n"
+ + "Pixel (1, 7)\n"
+ + " R: 123 G: 65 B: 113\n"
+ + "Pixel (2, 7)\n"
+ + " R: 65 G: 7 B: 55\n"
+ + "Pixel (3, 7)\n"
+ + " R: 78 G: 20 B: 68\n"
+ + "Pixel (4, 7)\n"
+ + " R: 149 G: 92 B: 137\n"
+ + "Pixel (5, 7)\n"
+ + " R: 95 G: 38 B: 83\n"
+ + "Pixel (0, 8)\n"
+ + " R: 138 G: 80 B: 128\n"
+ + "Pixel (1, 8)\n"
+ + " R: 96 G: 38 B: 86\n"
+ + "Pixel (2, 8)\n"
+ + " R: 78 G: 20 B: 68\n"
+ + "Pixel (3, 8)\n"
+ + " R: 76 G: 18 B: 66\n"
+ + "Pixel (4, 8)\n"
+ + " R: 106 G: 49 B: 94\n"
+ + "Pixel (5, 8)\n"
+ + " R: 122 G: 65 B: 110\n"
+ + "Pixel (0, 9)\n"
+ + " R: 155 G: 97 B: 145\n"
+ + "Pixel (1, 9)\n"
+ + " R: 99 G: 41 B: 89\n"
+ + "Pixel (2, 9)\n"
+ + " R: 73 G: 15 B: 63\n"
+ + "Pixel (3, 9)\n"
+ + " R: 80 G: 22 B: 70\n"
+ + "Pixel (4, 9)\n"
+ + " R: 115 G: 58 B: 103\n"
+ + "Pixel (5, 9)\n"
+ + " R: 107 G: 50 B: 95\n"
+ + "Pixel (0, 10)\n"
+ + " R: 165 G: 106 B: 154\n"
+ + "Pixel (1, 10)\n"
+ + " R: 99 G: 40 B: 88\n"
+ + "Pixel (2, 10)\n"
+ + " R: 68 G: 9 B: 57\n"
+ + "Pixel (3, 10)\n"
+ + " R: 83 G: 24 B: 72\n"
+ + "Pixel (4, 10)\n"
+ + " R: 123 G: 64 B: 110\n"
+ + "Pixel (5, 10)\n"
+ + " R: 88 G: 29 B: 75\n"
+ + "Pixel (0, 11)\n"
+ + " R: 151 G: 92 B: 140\n"
+ + "Pixel (1, 11)\n"
+ + " R: 93 G: 34 B: 82\n"
+ + "Pixel (2, 11)\n"
+ + " R: 68 G: 9 B: 57\n"
+ + "Pixel (3, 11)\n"
+ + " R: 81 G: 22 B: 70\n"
+ + "Pixel (4, 11)\n"
+ + " R: 120 G: 58 B: 105\n"
+ + "Pixel (5, 11)\n"
+ + " R: 74 G: 12 B: 59\n");
+ }
+
+ // Test eight-parameter constructor.
+ public String getPixels(Image img, int x, int y, int w, int h)
+ {
+ int[] pix = new int[w * h];
+
+ PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pix, 0, w);
+ try
+ {
+ pg.grabPixels(5000);
+ }
+ catch (InterruptedException e)
+ {
+ harness.fail ("image production interrupted.");
+ return "";
+ }
+
+ if ((pg.getStatus() & ImageObserver.ABORT) != 0)
+ {
+ harness.fail ("image production aborted.");
+ return "";
+ }
+
+ String result = "";
+ for (int j = 0; j < h; j++)
+ {
+ for (int i = 0; i < w; i++)
+ {
+ int p = j * w + i;
+ result = result + getPixel (x + i, y + j, pix[p]);
+ }
+ }
+ return result;
+ }
+
+ public String getPixel (int x, int y, int pixel)
+ {
+ ColorModel model = ColorModel.getRGBdefault();
+
+ return "Pixel (" + x + ", " + y + ")\n "
+ + " R: " + model.getRed (pixel)
+ + " G: " + model.getGreen (pixel)
+ + " B: " + model.getBlue (pixel) + "\n";
+ }
+}
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/lena1.jpg b/gnu/testlet/java/awt/image/PixelGrabber/lena1.jpg
new file mode 100644
index 00000000..ec53c4c9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/lena1.jpg
Binary files differ
diff --git a/gnu/testlet/java/awt/image/PixelGrabber/testNullProducer.java b/gnu/testlet/java/awt/image/PixelGrabber/testNullProducer.java
new file mode 100644
index 00000000..5bed8c0b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelGrabber/testNullProducer.java
@@ -0,0 +1,49 @@
+/* testNullProducer.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.awt.image.PixelGrabber;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ImageProducer;
+import java.awt.image.PixelGrabber;
+
+public class testNullProducer implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean exCaught = false;
+
+ try
+ {
+ new PixelGrabber((ImageProducer) null, 0, 0, 0, 0, new int[5], 0, 0);
+ }
+ catch (NullPointerException npe)
+ {
+ exCaught = true;
+ }
+
+ harness.check(!exCaught);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Entries b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Entries
new file mode 100644
index 00000000..efc81088
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Entries
@@ -0,0 +1,2 @@
+/createSubsetSampleModel.java/1.1/Wed Apr 14 00:04:21 2004//
+D
diff --git a/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Repository b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Repository
new file mode 100644
index 00000000..f5b2aee3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/PixelInterleavedSampleModel
diff --git a/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Root b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/createSubsetSampleModel.java b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/createSubsetSampleModel.java
new file mode 100644
index 00000000..8e155ce3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/PixelInterleavedSampleModel/createSubsetSampleModel.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.PixelInterleavedSampleModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.PixelInterleavedSampleModel;
+import java.awt.image.SampleModel;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class createSubsetSampleModel
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ SampleModel sm;
+ PixelInterleavedSampleModel psm, sub;
+ int[] subBands;
+
+ psm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE,
+ 5, 2, 4, 20,
+ new int[] { 3, 0, 1 });
+ sm = psm.createSubsetSampleModel(new int[] { 0, 2 });
+
+ // Check #1.
+ if (sm instanceof PixelInterleavedSampleModel)
+ {
+ h.check(true);
+ sub = (PixelInterleavedSampleModel) sm;
+ }
+ else
+ {
+ h.check(false);
+ h.debug(String.valueOf(sm));
+ return;
+ }
+
+ // Check #2.
+ h.check(sub.getDataType(), DataBuffer.TYPE_BYTE);
+
+ // Check #3.
+ h.check(sub.getWidth(), 5);
+
+ // Check #4.
+ h.check(sub.getHeight(), 2);
+
+ // Check #5.
+ h.check(sub.getPixelStride(), 4);
+
+ // Check #6.
+ h.check(sub.getScanlineStride(), 20);
+
+ // Check #7.
+ subBands = sub.getBandOffsets();
+ h.check(subBands.length, 2);
+
+ // Check #8.
+ h.check(subBands[0], 3);
+
+ // Check #9.
+ h.check(subBands[1], 1);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/Raster/CVS/Entries b/gnu/testlet/java/awt/image/Raster/CVS/Entries
new file mode 100644
index 00000000..2c8e2c96
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Raster/CVS/Entries
@@ -0,0 +1,3 @@
+/MyRaster.java/1.1/Mon Nov 27 21:46:07 2006//
+/createChild.java/1.3/Wed May 21 14:17:55 2008//
+D
diff --git a/gnu/testlet/java/awt/image/Raster/CVS/Repository b/gnu/testlet/java/awt/image/Raster/CVS/Repository
new file mode 100644
index 00000000..ff24bde7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Raster/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/Raster
diff --git a/gnu/testlet/java/awt/image/Raster/CVS/Root b/gnu/testlet/java/awt/image/Raster/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Raster/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/Raster/MyRaster.java b/gnu/testlet/java/awt/image/Raster/MyRaster.java
new file mode 100644
index 00000000..27b453dc
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Raster/MyRaster.java
@@ -0,0 +1,34 @@
+// Tags: not-a-test
+
+// Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.Raster;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+
+public class MyRaster
+ extends Raster
+{
+ public MyRaster(SampleModel sm, DataBuffer db, Point origin)
+ {
+ super(sm, db, origin);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/Raster/createChild.java b/gnu/testlet/java/awt/image/Raster/createChild.java
new file mode 100644
index 00000000..af0574ee
--- /dev/null
+++ b/gnu/testlet/java/awt/image/Raster/createChild.java
@@ -0,0 +1,179 @@
+/* createChild.java -- some checks for the createChild() method
+ in the Raster class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyRaster
+
+package gnu.testlet.java.awt.image.Raster;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.RasterFormatException;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+
+public class createChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testData(harness);
+ testBounds(harness);
+ testBands(harness);
+ }
+
+ private void testData(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Child raster
+ Raster rst2 = rst.createChild(10, 20, 25, 15, 0, 0, null);
+ harness.check(!(rst2 instanceof WritableRaster));
+ harness.check(rst2.getMinX(), 0);
+ harness.check(rst2.getMinY(), 0);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 0; x < 25; x++)
+ for (int y = 0; y < 15; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x+10 + y+20 + b);
+
+ // Offset child
+ rst2 = rst.createChild(10, 20, 25, 15, 30, 40, null);
+ harness.check(rst2.getMinX(), 30);
+ harness.check(rst2.getMinY(), 40);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 30; x < 55; x++)
+ for (int y = 40; y < 55; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x-20 + y-20 + b);
+ }
+
+ private void testBounds(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Width and height out of bounds
+ try
+ {
+ rst.createChild(10, 20, 100, 100, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+
+ // MinX and MinY out of bounds
+ try
+ {
+ // Create child with non-zero minX and minY
+ Raster rst2 = rst.createChild(0, 0, 25, 25, 30, 30, null);
+
+ // Create child's child with minX and minY out of bounds
+ rst2.createChild(10, 20, 10, 10, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testBands(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Copy all bands
+ Raster rst2 = rst.createChild(0, 0, 50, 40, 0, 0, null);
+ harness.check(rst2.getNumBands(), rst.getNumBands());
+
+ // Only first two bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{0, 1});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b);
+
+ // Only last two bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1, 2});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b+1);
+
+ // Only middle band
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1});
+ harness.check(rst2.getNumBands(), 1);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ harness.check(rst2.getSample(x, y, 0), x+y+1);
+
+ // Reverse order of bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{2, 0});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ {
+ harness.check(rst2.getSample(x, y, 0), x+y+2);
+ harness.check(rst2.getSample(x, y, 1), x+y);
+ }
+ }
+
+ private Raster createRaster(TestHarness harness)
+ {
+ // Create initial raster
+ WritableRaster rst = Raster.createWritableRaster(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 50, 40,
+ new int[]{0xff0000, 0xff00, 0xff}),
+ new Point(0, 0));
+
+ // Fill with test data
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 3; b++)
+ rst.setSample(x, y, b, x+y+b);
+
+ // Get non-writable version with the same data
+ Raster rst2 = new MyRaster(rst.getSampleModel(),
+ rst.getDataBuffer(),
+ new Point(0, 0));
+ harness.check(!(rst2 instanceof WritableRaster));
+ return rst2;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/CVS/Entries b/gnu/testlet/java/awt/image/RescaleOp/CVS/Entries
new file mode 100644
index 00000000..5a020d78
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/CVS/Entries
@@ -0,0 +1,12 @@
+/constructors.java/1.1/Wed Sep 6 16:00:32 2006//
+/createCompatibleDestImage.java/1.1/Wed Sep 6 16:00:32 2006//
+/createCompatibleDestRaster.java/1.1/Wed Sep 6 16:00:32 2006//
+/filterImage.java/1.1/Wed Sep 6 16:00:32 2006//
+/filterRaster.java/1.2/Wed Sep 13 15:29:09 2006//
+/getBounds2D.java/1.1/Wed Sep 6 16:00:32 2006//
+/getNumFactors.java/1.1/Wed Sep 6 16:00:32 2006//
+/getOffsets.java/1.1/Wed Sep 6 16:00:32 2006//
+/getPoint2D.java/1.1/Wed Sep 6 16:00:32 2006//
+/getRenderingHints.java/1.1/Wed Sep 6 16:00:32 2006//
+/getScaleFactors.java/1.1/Wed Sep 6 16:00:32 2006//
+D
diff --git a/gnu/testlet/java/awt/image/RescaleOp/CVS/Repository b/gnu/testlet/java/awt/image/RescaleOp/CVS/Repository
new file mode 100644
index 00000000..d9df2e8f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/RescaleOp
diff --git a/gnu/testlet/java/awt/image/RescaleOp/CVS/Root b/gnu/testlet/java/awt/image/RescaleOp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/RescaleOp/constructors.java b/gnu/testlet/java/awt/image/RescaleOp/constructors.java
new file mode 100644
index 00000000..9de40df5
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/constructors.java
@@ -0,0 +1,163 @@
+/* constructors.java -- some checks for the constructors in the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.RescaleOp;
+import java.util.Arrays;
+
+/**
+ * Some checks for the constructors in the {@link RescaleOp} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(float[], float[], RenderingHints)");
+
+ // Simple test
+ float[] scale = new float[] {0.6f};
+ float[] offset = new float[] {1.1f};
+ RescaleOp op = new RescaleOp(scale, offset, null);
+
+ harness.check(Arrays.equals(op.getScaleFactors(null), scale));
+ harness.check(Arrays.equals(op.getOffsets(null), offset));
+
+ harness.check(op.getRenderingHints(), null);
+
+ scale = new float[] {0.6f, 1.2f, 5.6f, 2.2f};
+ offset = new float[] {1.1f, 3f, 2.7f, 8.0f};
+ op = new RescaleOp(scale, offset, null);
+
+ harness.check(Arrays.equals(op.getScaleFactors(null), scale));
+ harness.check(Arrays.equals(op.getOffsets(null), offset));
+ harness.check(op.getRenderingHints(), null);
+
+ // Null arguments
+ try
+ {
+ op = new RescaleOp(null, offset, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ op = new RescaleOp(scale, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ op = new RescaleOp(null, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // Empty arrays
+ try
+ {
+ op = new RescaleOp(new float[]{}, new float[]{}, null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ // Mis-matched array lengths are allowed for now
+ scale = new float[] {1f, 2f, 3f, 4f, 5f, 6f};
+ offset = new float[] {1f, 2f, 3f};
+ try
+ {
+ op = new RescaleOp(scale, offset, null);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+
+ // Negative values
+ scale = new float[] {1f, -2f};
+ offset = new float[] {2f, -1f,};
+ try
+ {
+ op = new RescaleOp(scale, offset, null);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, RenderingHints)");
+
+ // Simple test
+ RescaleOp op = new RescaleOp(2f, 6.5f, null);
+
+ harness.check(Arrays.equals(op.getScaleFactors(null), new float[]{2f}));
+ harness.check(Arrays.equals(op.getOffsets(null), new float[]{6.5f}));
+ harness.check(op.getRenderingHints(), null);
+
+ // Negative values
+ try
+ {
+ op = new RescaleOp(-5f, -2f, null);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestImage.java b/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestImage.java
new file mode 100644
index 00000000..a7ee0fe4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestImage.java
@@ -0,0 +1,120 @@
+/* createCompatibleDestImage.java -- some checks for the
+ createCompatibleDestImage() method of the RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.DirectColorModel;
+import java.awt.image.RescaleOp;
+
+/**
+ * Checks for the createCompatibleDestImage method in the
+ * {@link RescaleOp} class.
+ */
+public class createCompatibleDestImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTest(harness);
+ colorModelTest(harness);
+ }
+
+ private void simpleTest(TestHarness harness)
+ {
+ harness.checkPoint("createCompatibleDestImage");
+
+ // Simple test
+ RescaleOp op = new RescaleOp(1, 1, null);
+
+ BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+
+ BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), img.getColorModel());
+
+ // Try a different colour model
+ img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
+ DirectColorModel cm = new DirectColorModel(16, 0x0f00, 0x00f0, 0x000f);
+ dest = op.createCompatibleDestImage(img, cm);
+
+ harness.check(dest.getHeight(), 40);
+ harness.check(dest.getWidth(), 25);
+ harness.check(dest.getColorModel(), cm);
+ }
+
+ // Test all the default color models
+ private void colorModelTest(TestHarness harness)
+ {
+ RescaleOp op = new RescaleOp(1, 1, null);
+
+ int[] types = {BufferedImage.TYPE_INT_RGB,
+ BufferedImage.TYPE_INT_ARGB,
+ BufferedImage.TYPE_INT_ARGB_PRE,
+ BufferedImage.TYPE_3BYTE_BGR,
+ BufferedImage.TYPE_4BYTE_ABGR,
+ BufferedImage.TYPE_4BYTE_ABGR_PRE,
+ BufferedImage.TYPE_USHORT_565_RGB,
+ BufferedImage.TYPE_USHORT_555_RGB,
+ BufferedImage.TYPE_BYTE_GRAY,
+ BufferedImage.TYPE_USHORT_GRAY};
+ // Skipped types that are not implemented yet:
+ // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
+
+ for (int i = 0; i < types.length; i++)
+ {
+ int type = types[i];
+ harness.checkPoint("type: " + type);
+
+ BufferedImage img = new BufferedImage(25, 40, type);
+ BufferedImage dest = op.createCompatibleDestImage(img, null);
+
+ // Unlike most Ops, this one creates a clone of the original image
+ harness.check(dest.getColorModel().getPixelSize(),
+ img.getColorModel().getPixelSize());
+ harness.check(dest.getColorModel().getTransferType(), img.getColorModel().getTransferType());
+
+ harness.check(dest.getColorModel().getClass() == img.getColorModel().getClass());
+ harness.check(dest.getSampleModel().getClass() == img.getSampleModel().getClass());
+ harness.check(dest.getColorModel().getNumComponents(), img.getColorModel().getNumComponents());
+ harness.check(dest.getColorModel().getTransparency(), img.getColorModel().getTransparency());
+ harness.check(dest.getColorModel().hasAlpha(), img.getColorModel().hasAlpha());
+ harness.check(dest.getColorModel().isAlphaPremultiplied(), img.getColorModel().isAlphaPremultiplied());
+ harness.check(dest.getColorModel().getColorSpace().getType(), img.getColorModel().getColorSpace().getType());
+ harness.check(dest.getRaster().getNumBands(), img.getRaster().getNumBands());
+ harness.check(dest.getRaster().getNumDataElements(), img.getRaster().getNumDataElements());
+ harness.check(dest.getType(), img.getType());
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestRaster.java b/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestRaster.java
new file mode 100644
index 00000000..7b6d2a32
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/createCompatibleDestRaster.java
@@ -0,0 +1,90 @@
+/* createCompatibleDestRaster.java -- some checks for the
+ createCompatibleDestRaster() method of the RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.Raster;
+import java.awt.image.RescaleOp;
+
+/**
+ * Checks for the createCompatibleDestRaster method in the
+ * {@link RescaleOp} class.
+ */
+public class createCompatibleDestRaster implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ RescaleOp op = new RescaleOp(1, 1, null);
+ Raster raster = Raster.createWritableRaster(
+ new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8), null);
+ Raster dest = op.createCompatibleDestRaster(raster);
+ harness.check(dest.getWidth(), 10);
+ harness.check(dest.getHeight(), 20);
+ harness.check(dest.getNumBands(), 1);
+ harness.check(dest.getSampleModel() instanceof MultiPixelPackedSampleModel);
+ harness.check(dest.getTransferType(), raster.getTransferType());
+ harness.check(dest.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dest.getNumDataElements(), raster.getNumDataElements());
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.createCompatibleDestRaster(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // Try a different type
+ raster = Raster.createBandedRaster(DataBuffer.TYPE_BYTE, 25, 40, 3, new Point(5, 5));
+ Raster dst = op.createCompatibleDestRaster(raster);
+ harness.check(dst.getNumBands(), raster.getNumBands());
+ harness.check(dst.getTransferType(), raster.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), raster.getNumDataElements());
+
+ // Try a different number of bands
+ raster = Raster.createBandedRaster(DataBuffer.TYPE_INT, 25, 40, 5, new Point(5, 5));
+ dst = op.createCompatibleDestRaster(raster);
+ harness.check(dst.getNumBands(), raster.getNumBands());
+ harness.check(dst.getTransferType(), raster.getTransferType());
+ harness.check(dst.getDataBuffer().getDataType(), raster.getDataBuffer().getDataType());
+ harness.check(dst.getNumDataElements(), raster.getNumDataElements());
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/RescaleOp/filterImage.java b/gnu/testlet/java/awt/image/RescaleOp/filterImage.java
new file mode 100644
index 00000000..2167aebd
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/filterImage.java
@@ -0,0 +1,320 @@
+/* filterImage.java -- some checks for the filter(Image) method of the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.RescaleOp;
+import java.awt.image.WritableRaster;
+
+/**
+ * Checks the filter(BufferedImage) method in the {@link RescaleOp} class.
+ */
+public class filterImage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ simpleTests(harness);
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ testMismatch(harness);
+ }
+
+ private void simpleTests(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage)");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 150);
+
+ RescaleOp op = new RescaleOp(1, 1, null);
+
+ // Src and dst images can be the same
+ try
+ {
+ op.filter(img, img);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst use different colorspaces (allowed, will cause implied
+ // conversion)
+ BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst are different sizes (not allowed, unlike some other Ops)
+ dst = new BufferedImage(30, 40, BufferedImage.TYPE_USHORT_GRAY);
+ try
+ {
+ op.filter(img, dst);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Null destination check
+ dst = op.filter(img, null);
+ harness.check(dst.getType(),
+ op.createCompatibleDestImage(img, null).getType());
+
+ // Test positive & negative clipping behaviour
+ img.getRaster().setSample(1, 1, 0, 1500);
+ op = new RescaleOp(100, 0, null);
+ dst = op.filter(img, null);
+ double maxValue = Math.pow(2, img.getColorModel().getComponentSize(0)) - 1;
+ harness.check(dst.getRaster().getSample(1, 1, 0), maxValue);
+
+ op = new RescaleOp(1, -2000, null);
+ dst = op.filter(img, null);
+ harness.check(dst.getRaster().getSample(1, 1, 0), 0);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) with one scaling factor");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 150);
+ r.setSample(1, 1, 1, 160);
+ r.setSample(1, 1, 2, 175);
+ r.setSample(1, 1, 3, 195);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ RescaleOp op = new RescaleOp(0.75f, 25f, null);
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(dest.getSample(1, 1, 0), 137); //rounded down from 137.5
+ harness.check(dest.getSample(1, 1, 1), 145);
+
+ harness.check(dest.getSample(1, 3, 0), 58); //rounded down from 58.75
+ harness.check(dest.getSample(1, 3, 1), 70);
+ /*
+ // Again, Sun does RGAB whereas we do RGBA =(
+ // So, for Sun:
+ harness.check(dest.getSample(1, 1, 2), 175);
+ harness.check(dest.getSample(1, 1, 3), 171); //rounded down from 171.25
+ harness.check(dest.getSample(1, 3, 2), 70);
+ harness.check(dest.getSample(1, 3, 3), 92); //rounded down from 92.5
+
+ // For classpath:
+ harness.check(dest.getSample(1, 1, 2), 156); //rounded down from 156.25
+ harness.check(dest.getSample(1, 1, 3), 195);
+ harness.check(dest.getSample(1, 3, 2), 77); //rounded down from 77.5
+ harness.check(dest.getSample(1, 3, 3), 90);
+ */
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) with num factors == num " +
+ "color components");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 10);
+ r.setSample(1, 1, 1, 20);
+ r.setSample(1, 1, 2, 35);
+ r.setSample(1, 1, 3, 40);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ RescaleOp op = new RescaleOp(new float[]{0.75f, 2.5f, 1f},
+ new float[]{25f, 2f, 1.5f},
+ null);
+
+ /* This causes Sun to throw an exception...
+ *
+ * java.lang.IllegalArgumentException: Number of channels in the src (4)
+ * does not match number of channels in the destination (2)
+ *
+ * I'm pretty sure it's a bug, but it's not one that's worth mimicing.
+ * This test will not run on Sun.
+ */
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(dest.getSample(1, 1, 0), 32); //rounded down from 32.5
+ harness.check(dest.getSample(1, 1, 1), 52);
+
+ harness.check(dest.getSample(1, 3, 0), 58); //rounded down from 58.75
+ harness.check(dest.getSample(1, 3, 1), 152);
+ /*
+ // Again, Sun does RGAB whereas we do RGBA =(
+ // So, for Sun:
+ harness.check(dest.getSample(1, 1, 2), 35);
+ harness.check(dest.getSample(1, 1, 3), 41.5);
+ harness.check(dest.getSample(1, 3, 2), 70);
+ harness.check(dest.getSample(1, 3, 3), 91.5);
+ */
+ // For classpath:
+ harness.check(dest.getSample(1, 1, 2), 36); //rounded down from 36.5
+ harness.check(dest.getSample(1, 1, 3), 40);
+ harness.check(dest.getSample(1, 3, 2), 71); //rounded down from 71.5
+ harness.check(dest.getSample(1, 3, 3), 90);
+
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.debug("Test did not run - this is expected on Sun due to a " +
+ "bug in their implementation, but this message should not show " +
+ "when testing Classpath.");
+ }
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) with num factors == num " +
+ "components");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 10);
+ r.setSample(1, 1, 1, 20);
+ r.setSample(1, 1, 2, 35);
+ r.setSample(1, 1, 3, 40);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ RescaleOp op = new RescaleOp(new float[]{0.75f, 2.5f, -1f, 0f},
+ new float[]{25f, 2f, 1f, 0f},
+ null);
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+
+ harness.check(dest.getSample(1, 1, 0), 32); //rounded down from 32.5
+ harness.check(dest.getSample(1, 1, 1), 52);
+ harness.check(dest.getSample(1, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 3), 0);
+
+ harness.check(dest.getSample(1, 3, 0), 58); //rounded down from 58.75
+ harness.check(dest.getSample(1, 3, 1), 152);
+ harness.check(dest.getSample(1, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 3), 0);
+ }
+
+ private void testMismatch(TestHarness harness)
+ {
+ harness.checkPoint("filter(BufferedImage) with mismatched arrays");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 10);
+ r.setSample(1, 1, 1, 20);
+ r.setSample(1, 1, 2, 35);
+ r.setSample(1, 1, 3, 40);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ // Test mismatched arrays
+ RescaleOp op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1, 2}, null);
+ try
+ {
+ op.filter(img, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(true);
+ }
+
+ // Only the first value from both arrays is read if the offsets array
+ // has only one value
+ op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1}, null);
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+ harness.check(dest.getSample(1, 1, 0), 11);
+ harness.check(dest.getSample(1, 1, 1), 21);
+ harness.check(dest.getSample(1, 3, 0), 46);
+ harness.check(dest.getSample(1, 3, 1), 61);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+
+ // Same with a single-length factors array
+ op = new RescaleOp(new float[]{0.5f}, new float[]{2, 3, 4, 5}, null);
+ try
+ {
+ BufferedImage dst = op.filter(img, null);
+ WritableRaster dest = dst.getRaster();
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(1, 1, 1), 12);
+ harness.check(dest.getSample(1, 3, 0), 24);
+ harness.check(dest.getSample(1, 3, 1), 32);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/RescaleOp/filterRaster.java b/gnu/testlet/java/awt/image/RescaleOp/filterRaster.java
new file mode 100644
index 00000000..2bf5a20a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/filterRaster.java
@@ -0,0 +1,226 @@
+/* filterRaster.java -- some checks for the filter() methods in the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.RescaleOp;
+import java.awt.image.WritableRaster;
+
+public class filterRaster implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ simpleTests(harness);
+ testRaster1(harness);
+ testRaster2(harness);
+ testMismatch(harness);
+ }
+
+ private void simpleTests(TestHarness harness)
+ {
+ harness.checkPoint("filter(Raster)");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 150);
+
+ RescaleOp op = new RescaleOp(1, 1, null);
+
+ // Src and dst rasters can be the same
+ try
+ {
+ op.filter(r, r);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(false);
+ }
+
+ // Src and dst are different sizes (not allowed, unlike some other Ops)
+ BufferedImage dst = new BufferedImage(30, 40, BufferedImage.TYPE_INT_RGB);
+ try
+ {
+ op.filter(r, dst.getRaster());
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // Null destination check
+ WritableRaster dstRast = op.filter(r, null);
+ harness.check(dstRast.getHeight(), r.getHeight());
+ harness.check(dstRast.getWidth(), r.getWidth());
+ harness.check(dstRast.getMinX(), r.getMinX());
+ harness.check(dstRast.getMinY(), r.getMinY());
+ harness.check(dstRast.getNumBands(), r.getNumBands());
+ harness.check(dstRast.getNumDataElements(), r.getNumDataElements());
+ harness.check(dstRast.getTransferType(), r.getTransferType());
+ harness.check(dstRast.getBounds(), r.getBounds());
+ harness.check(dstRast.getDataBuffer().getClass(), r.getDataBuffer().getClass());
+
+ // Test positive & negative clipping behaviour
+ img.getRaster().setSample(1, 1, 0, 1500);
+ op = new RescaleOp(100, 0, null);
+ dstRast = op.filter(r, null);
+ double maxValue = Math.pow(2, r.getSampleModel().getSampleSize(0)) - 1;
+ harness.check(dstRast.getSample(1, 1, 0), maxValue);
+
+ op = new RescaleOp(1, -2000, null);
+ dstRast = op.filter(r, null);
+ harness.check(dstRast.getSample(1, 1, 0), 0);
+ }
+
+ public void testRaster1(TestHarness harness)
+ {
+ harness.checkPoint("filter(Raster) with one scaling factor");
+
+ // Create a raster to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 150);
+ r.setSample(1, 1, 1, 160);
+ r.setSample(1, 1, 2, 175);
+ r.setSample(1, 1, 3, 195);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ RescaleOp op = new RescaleOp(0.75f, 25f, null);
+ WritableRaster dest = op.filter(r, null);
+
+ harness.check(dest.getSample(1, 1, 0), 137); //rounded down from 137.5
+ harness.check(dest.getSample(1, 1, 1), 145);
+ harness.check(dest.getSample(1, 1, 3), 171); //rounded down from 171.25
+ harness.check(dest.getSample(1, 1, 2), 156); //rounded down from 156.25
+
+ harness.check(dest.getSample(1, 3, 0), 58); //rounded down from 58.75
+ harness.check(dest.getSample(1, 3, 1), 70);
+ harness.check(dest.getSample(1, 3, 2), 77); //rounded down from 77.5
+ harness.check(dest.getSample(1, 3, 3), 92); //rounded down from 92.5
+ }
+
+ public void testRaster2(TestHarness harness)
+ {
+ harness.checkPoint("filter(Raster) with multiple factors");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 10);
+ r.setSample(1, 1, 1, 20);
+ r.setSample(1, 1, 2, 35);
+ r.setSample(1, 1, 3, 40);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ RescaleOp op = new RescaleOp(new float[]{0.75f, 2.5f, -1f, 0f},
+ new float[]{25f, 2f, 1f, 0f},
+ null);
+ WritableRaster dest = op.filter(r, null);
+
+ harness.check(dest.getSample(1, 1, 0), 32); //rounded down from 32.5
+ harness.check(dest.getSample(1, 1, 1), 52);
+ harness.check(dest.getSample(1, 1, 2), 0);
+ harness.check(dest.getSample(1, 1, 3), 0);
+
+ harness.check(dest.getSample(1, 3, 0), 58); //rounded down from 58.75
+ harness.check(dest.getSample(1, 3, 1), 152);
+ harness.check(dest.getSample(1, 3, 2), 0);
+ harness.check(dest.getSample(1, 3, 3), 0);
+ }
+
+ private void testMismatch(TestHarness harness)
+ {
+ harness.checkPoint("filter(Raster) with mismatched arrays");
+
+ // Create an image to work on
+ BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster r = img.getRaster();
+ r.setSample(1, 1, 0, 10);
+ r.setSample(1, 1, 1, 20);
+ r.setSample(1, 1, 2, 35);
+ r.setSample(1, 1, 3, 40);
+
+ r.setSample(1, 3, 0, 45);
+ r.setSample(1, 3, 1, 60);
+ r.setSample(1, 3, 2, 70);
+ r.setSample(1, 3, 3, 90);
+
+ // Test mismatched arrays
+ RescaleOp op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1, 2, 3}, null);
+ try
+ {
+ op.filter(r, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(true);
+ }
+
+ // Only the first value from both arrays is read if the offsets array
+ // has only one value
+ op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1}, null);
+ try
+ {
+ WritableRaster dest = op.filter(r, null);
+ harness.check(dest.getSample(1, 1, 0), 11);
+ harness.check(dest.getSample(1, 1, 1), 21);
+ harness.check(dest.getSample(1, 3, 0), 46);
+ harness.check(dest.getSample(1, 3, 1), 61);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+
+ // Same with a single-length factors array
+ op = new RescaleOp(new float[]{0.5f}, new float[]{2, 3, 4, 5}, null);
+ try
+ {
+ WritableRaster dest = op.filter(r, null);
+ harness.check(dest.getSample(1, 1, 0), 7);
+ harness.check(dest.getSample(1, 1, 1), 12);
+ harness.check(dest.getSample(1, 3, 0), 24);
+ harness.check(dest.getSample(1, 3, 1), 32);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getBounds2D.java b/gnu/testlet/java/awt/image/RescaleOp/getBounds2D.java
new file mode 100644
index 00000000..002cca3b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getBounds2D.java
@@ -0,0 +1,91 @@
+/* getBounds2D.java -- some checks for the getBounds2D() methods in the
+ RescaleOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.Raster;
+import java.awt.image.RescaleOp;
+
+public class getBounds2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(BufferedImage)");
+ BufferedImage image = new BufferedImage(10, 20,
+ BufferedImage.TYPE_INT_ARGB);
+ RescaleOp op = new RescaleOp(1, 1, null);
+ Rectangle2D bounds = op.getBounds2D(image);
+ harness.check(bounds.getWidth(), 10);
+ harness.check(bounds.getHeight(), 20);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((BufferedImage) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(Raster)");
+ RescaleOp op = new RescaleOp(1, 1, null);
+ Raster raster = Raster.createWritableRaster(
+ new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8),
+ null);
+ Rectangle2D bounds = op.getBounds2D(raster);
+ harness.check(bounds.getWidth(), 10);
+ harness.check(bounds.getHeight(), 20);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ op.getBounds2D((Raster) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getNumFactors.java b/gnu/testlet/java/awt/image/RescaleOp/getNumFactors.java
new file mode 100644
index 00000000..94c939a1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getNumFactors.java
@@ -0,0 +1,75 @@
+/* getNumFactors.java -- some checks for the getNumFactors() method of the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.RescaleOp;
+
+/**
+ * Checks the getNumFactors method in the
+ * {@link RescaleOp} class.
+ */
+public class getNumFactors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getNumFactors");
+
+ RescaleOp op = new RescaleOp(1.5f, 2.3f, null);
+ harness.check(op.getNumFactors(), 1);
+
+ op = new RescaleOp(new float[]{1.5f}, new float[]{2.3f}, null);
+ harness.check(op.getNumFactors(), 1);
+
+ op = new RescaleOp(new float[]{1.5f, 2.5f}, new float[]{2.3f, 6.6f}, null);
+ harness.check(op.getNumFactors(), 2);
+
+ op = new RescaleOp(new float[]{1.5f, 2.2f, 3.7f},
+ new float[]{2.3f, 2.3f, 2.3f},
+ null);
+ harness.check(op.getNumFactors(), 3);
+
+ op = new RescaleOp(new float[]{}, new float[]{}, null);
+ harness.check(op.getNumFactors(), 0);
+
+ // If the arrays are mismatched, return the lower value
+ op = new RescaleOp(new float[]{1, 2, 3}, new float[]{1}, null);
+ harness.check(op.getNumFactors(), 1);
+ op = new RescaleOp(new float[]{1}, new float[]{1, 2, 3}, null);
+ harness.check(op.getNumFactors(), 1);
+ op = new RescaleOp(new float[]{1, 2}, new float[]{1, 2, 3}, null);
+ harness.check(op.getNumFactors(), 2);
+ op = new RescaleOp(new float[]{1, 2, 3}, new float[]{1, 2}, null);
+ harness.check(op.getNumFactors(), 2);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getOffsets.java b/gnu/testlet/java/awt/image/RescaleOp/getOffsets.java
new file mode 100644
index 00000000..86fa5846
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getOffsets.java
@@ -0,0 +1,83 @@
+/* getffsets.java -- some checks for the getOffsets() method in the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.RescaleOp;
+import java.util.Arrays;
+
+public class getOffsets implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ RescaleOp op = new RescaleOp(1, 1, null);
+ harness.check(Arrays.equals(op.getOffsets(null), new float[]{1}));
+
+ op = new RescaleOp(new float[]{1}, new float[]{1}, null);
+ harness.check(Arrays.equals(op.getOffsets(null), new float[]{1}));
+
+ float[] flt = new float[]{1, 2, 3, 4, 5};
+ op = new RescaleOp(flt, flt, null);
+ harness.check(op.getOffsets(null) != flt);
+ harness.check(Arrays.equals(op.getOffsets(null),
+ new float[]{1, 2, 3, 4, 5}));
+
+ // Mismatched array sizes...
+ op = new RescaleOp(new float[]{1, 2}, flt, null);
+ harness.check(op.getOffsets(null).length == 2);
+ harness.check(op.getOffsets(null)[0] == 1);
+ harness.check(op.getOffsets(null)[1] == 2);
+
+ // Try passing in an array to be populated
+ op = new RescaleOp(flt, flt, null);
+ float[] arr = new float[5];
+ harness.check(Arrays.equals(op.getOffsets(arr), arr));
+ harness.check(Arrays.equals(arr, flt));
+
+ // What if the array is too big?
+ arr = new float[10];
+ Arrays.fill(arr, 25);
+ op.getOffsets(arr);
+ for (int i = 0; i < 5; i++)
+ harness.check(arr[i] == flt[i]);
+ for (int i = 5; i < arr.length; i++)
+ harness.check(arr[i] == 25);
+
+ // What if array is too small?
+ arr = new float[2];
+ try
+ {
+ harness.check(op.getOffsets(arr).length == 2);
+ harness.check(op.getOffsets(arr)[0] == 1);
+ harness.check(op.getOffsets(arr)[1] == 2);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getPoint2D.java b/gnu/testlet/java/awt/image/RescaleOp/getPoint2D.java
new file mode 100644
index 00000000..cdcae590
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getPoint2D.java
@@ -0,0 +1,55 @@
+/* getPoint2D.java -- some checks for the getPoint2D() method in the RescaleOp
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.geom.Point2D;
+import java.awt.image.RescaleOp;
+
+public class getPoint2D implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ RescaleOp op = new RescaleOp(1, 1, null);
+ Point2D p = new Point2D.Double(1.0, 2.0);
+ Point2D pp = new Point2D.Double();
+ Point2D p1 = op.getPoint2D(p, pp);
+ harness.check(p1, p);
+ harness.check(p1 == pp);
+ harness.check(p1 != p);
+
+ // try null dest
+ p1 = op.getPoint2D(p, null);
+ harness.check(p1, p);
+ harness.check(p1 != p);
+
+ // try src == dst
+ p1 = op.getPoint2D(p, p);
+ harness.check(p1, p);
+ harness.check(p1 == p);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getRenderingHints.java b/gnu/testlet/java/awt/image/RescaleOp/getRenderingHints.java
new file mode 100644
index 00000000..6efafde3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getRenderingHints.java
@@ -0,0 +1,44 @@
+/* getRenderingHints.java -- some checks for the getRenderingHints() method
+ in the RescaleOp class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.RenderingHints;
+import java.awt.image.RescaleOp;
+
+public class getRenderingHints implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ RenderingHints r = new RenderingHints(RenderingHints.KEY_COLOR_RENDERING,
+ RenderingHints.VALUE_COLOR_RENDER_QUALITY);
+ RescaleOp op = new RescaleOp(1, 1, r);
+ harness.check(op.getRenderingHints() == r);
+ op = new RescaleOp(1, 1, null);
+ harness.check(op.getRenderingHints() == null);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/RescaleOp/getScaleFactors.java b/gnu/testlet/java/awt/image/RescaleOp/getScaleFactors.java
new file mode 100644
index 00000000..b9b9277e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/RescaleOp/getScaleFactors.java
@@ -0,0 +1,83 @@
+/* getScaleFactors.java -- some checks for the getScaleFactors() method in the
+ RescaleOp class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.RescaleOp;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.RescaleOp;
+import java.util.Arrays;
+
+public class getScaleFactors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ RescaleOp op = new RescaleOp(1, 1, null);
+ harness.check(Arrays.equals(op.getScaleFactors(null), new float[]{1}));
+
+ op = new RescaleOp(new float[]{1}, new float[]{1}, null);
+ harness.check(Arrays.equals(op.getScaleFactors(null), new float[]{1}));
+
+ float[] flt = new float[]{1, 2, 3, 4, 5};
+ op = new RescaleOp(flt, flt, null);
+ harness.check(op.getScaleFactors(null) != flt);
+ harness.check(Arrays.equals(op.getScaleFactors(null),
+ new float[]{1, 2, 3, 4, 5}));
+
+ // Mismatched array sizes...
+ op = new RescaleOp(flt, new float[]{1, 2}, null);
+ harness.check(op.getScaleFactors(null).length == 2);
+ harness.check(op.getScaleFactors(null)[0] == 1);
+ harness.check(op.getScaleFactors(null)[1] == 2);
+
+ // Try passing in an array to be populated
+ op = new RescaleOp(flt, flt, null);
+ float[] arr = new float[5];
+ harness.check(Arrays.equals(op.getScaleFactors(arr), arr));
+ harness.check(Arrays.equals(arr, flt));
+
+ // What if the array is too big?
+ arr = new float[10];
+ Arrays.fill(arr, 25);
+ op.getScaleFactors(arr);
+ for (int i = 0; i < 5; i++)
+ harness.check(arr[i] == flt[i]);
+ for (int i = 5; i < arr.length; i++)
+ harness.check(arr[i] == 25);
+
+ // What if array is too small?
+ arr = new float[2];
+ try
+ {
+ harness.check(op.getScaleFactors(arr).length == 2);
+ harness.check(op.getScaleFactors(arr)[0] == 1);
+ harness.check(op.getScaleFactors(arr)[1] == 2);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/CVS/Entries b/gnu/testlet/java/awt/image/SampleModel/CVS/Entries
new file mode 100644
index 00000000..5d01eba0
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/CVS/Entries
@@ -0,0 +1,13 @@
+/createDataBuffer.java/1.1/Thu Jul 13 11:27:07 2006//
+/getPixel.java/1.2/Mon Jul 17 14:01:44 2006//
+/getPixels.java/1.2/Mon Jul 17 14:01:44 2006//
+/getSample.java/1.1/Thu Jul 13 11:27:07 2006//
+/getSampleDouble.java/1.1/Thu Jul 13 11:27:07 2006//
+/getSampleFloat.java/1.1/Thu Jul 13 11:27:07 2006//
+/getSampleSize.java/1.1/Thu Jul 13 11:27:07 2006//
+/getSamples.java/1.1/Thu Jul 13 11:27:07 2006//
+/setPixel.java/1.1/Thu Jul 13 11:27:07 2006//
+/setPixels.java/1.1/Thu Jul 13 11:27:07 2006//
+/setSample.java/1.1/Thu Jul 13 11:27:07 2006//
+/setSamples.java/1.1/Thu Jul 13 11:27:07 2006//
+D
diff --git a/gnu/testlet/java/awt/image/SampleModel/CVS/Repository b/gnu/testlet/java/awt/image/SampleModel/CVS/Repository
new file mode 100644
index 00000000..ec66c0a3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/SampleModel
diff --git a/gnu/testlet/java/awt/image/SampleModel/CVS/Root b/gnu/testlet/java/awt/image/SampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/SampleModel/createDataBuffer.java b/gnu/testlet/java/awt/image/SampleModel/createDataBuffer.java
new file mode 100644
index 00000000..62ea569d
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/createDataBuffer.java
@@ -0,0 +1,48 @@
+/* createDataBuffer.java -- some checks for the createDataBuffer() method in
+ the SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class createDataBuffer implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(db.getDataType(), DataBuffer.TYPE_BYTE);
+ harness.check(db.getNumBanks(), 1);
+ harness.check(db.getSize(), 200);
+ harness.check(db.getOffsets()[0], 0);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getPixel.java b/gnu/testlet/java/awt/image/SampleModel/getPixel.java
new file mode 100644
index 00000000..3bbf78ac
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getPixel.java
@@ -0,0 +1,157 @@
+/* getPixel.java -- some checks for the getPixel() methods in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class getPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (int[]) null, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try with a MultiPixelPackedSampleModel
+ m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 2);
+ db = m.createDataBuffer();
+ db.setElem(0, 27);
+ harness.check(m.getPixel(0, 0, (int[]) null, db)[0], 0);
+ harness.check(m.getPixel(1, 0, (int[]) null, db)[0], 1);
+ harness.check(m.getPixel(2, 0, (int[]) null, db)[0], 2);
+ harness.check(m.getPixel(3, 0, (int[]) null, db)[0], 3);
+ db.setElem(3, 27);
+ harness.check(m.getPixel(0, 1, (int[]) null, db)[0], 0);
+ harness.check(m.getPixel(1, 1, (int[]) null, db)[0], 1);
+ harness.check(m.getPixel(2, 1, (int[]) null, db)[0], 2);
+ harness.check(m.getPixel(3, 1, (int[]) null, db)[0], 3);
+ db.setElem(6, 0x18);
+ db.setElem(9, 0x30);
+ db.setElem(12, 0x1C);
+ harness.check(m.getPixel(1, 2, (int[]) null, db)[0], 1);
+ harness.check(m.getPixel(2, 2, (int[]) null, db)[0], 2);
+ harness.check(m.getPixel(1, 3, (int[]) null, db)[0], 3);
+ harness.check(m.getPixel(2, 3, (int[]) null, db)[0], 0);
+ harness.check(m.getPixel(1, 4, (int[]) null, db)[0], 1);
+ harness.check(m.getPixel(2, 4, (int[]) null, db)[0], 3);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (float[]) null, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] pixel = new double[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixel(1, 2, (double[]) null, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getPixels.java b/gnu/testlet/java/awt/image/SampleModel/getPixels.java
new file mode 100644
index 00000000..dcb256a7
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getPixels.java
@@ -0,0 +1,180 @@
+/* getPixels.java -- some checks for the getPixels() methods in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.MultiPixelPackedSampleModel;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class getPixels implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ testMethod1MultiPixelPackedSampleModel(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixels(1, 2, 2, 3, (int[]) null, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixels(1, 2, 2, 3, (float[]) null, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] pixel = new double[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new double[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixels(1, 2, 2, 3, (double[]) null, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod1MultiPixelPackedSampleModel(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int[], DataBuffer)");
+ SampleModel m = new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, 2);
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[6];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0, 0, 0, 0}));
+ db.setElem(6, 0x18);
+ db.setElem(9, 0x30);
+ db.setElem(12, 0x1C);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3, 0, 1, 3}));
+
+ // if the incoming array is null, a new one is created
+ pixel = m.getPixels(1, 2, 2, 3, (int[]) null, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3, 0, 1, 3}));
+
+ // try null data buffer
+ boolean pass = false;
+ try
+ {
+ m.getPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getSample.java b/gnu/testlet/java/awt/image/SampleModel/getSample.java
new file mode 100644
index 00000000..cbbf1d37
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getSample.java
@@ -0,0 +1,86 @@
+/* getSample.java -- some checks for the getSample() method in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class getSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSample(1, 2, 0, db), 0);
+ harness.check(m.getSample(1, 2, 1, db), 0);
+ harness.check(m.getSample(1, 2, 2, db), 0);
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ harness.check(m.getSample(1, 2, 0, db), 1);
+ harness.check(m.getSample(1, 2, 1, db), 2);
+ harness.check(m.getSample(1, 2, 2, db), 3);
+
+ // try band out of range
+ boolean pass = false;
+ try
+ {
+ m.getSample(1, 2, -1, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ pass = false;
+ try
+ {
+ m.getSample(1, 2, 3, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSample(1, 2, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getSampleDouble.java b/gnu/testlet/java/awt/image/SampleModel/getSampleDouble.java
new file mode 100644
index 00000000..d518d021
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getSampleDouble.java
@@ -0,0 +1,86 @@
+/* getSampleDouble.java -- some checks for the getSampleDouble() method in the
+ SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class getSampleDouble implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSampleDouble(1, 2, 0, db), 0);
+ harness.check(m.getSampleDouble(1, 2, 1, db), 0);
+ harness.check(m.getSampleDouble(1, 2, 2, db), 0);
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ harness.check(m.getSampleDouble(1, 2, 0, db), 1);
+ harness.check(m.getSampleDouble(1, 2, 1, db), 2);
+ harness.check(m.getSampleDouble(1, 2, 2, db), 3);
+
+ // try band out of range
+ boolean pass = false;
+ try
+ {
+ m.getSampleDouble(1, 2, -1, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ pass = false;
+ try
+ {
+ m.getSampleDouble(1, 2, 3, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSampleDouble(1, 2, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getSampleFloat.java b/gnu/testlet/java/awt/image/SampleModel/getSampleFloat.java
new file mode 100644
index 00000000..ba4a936b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getSampleFloat.java
@@ -0,0 +1,86 @@
+/* getSampleFloat.java -- some checks for the getSampleFloat() method in the
+ SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class getSampleFloat implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSampleFloat(1, 2, 0, db), 0);
+ harness.check(m.getSampleFloat(1, 2, 1, db), 0);
+ harness.check(m.getSampleFloat(1, 2, 2, db), 0);
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ harness.check(m.getSampleFloat(1, 2, 0, db), 1);
+ harness.check(m.getSampleFloat(1, 2, 1, db), 2);
+ harness.check(m.getSampleFloat(1, 2, 2, db), 3);
+
+ // try band out of range
+ boolean pass = false;
+ try
+ {
+ m.getSampleFloat(1, 2, -1, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ pass = false;
+ try
+ {
+ m.getSampleFloat(1, 2, 3, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSampleFloat(1, 2, 0, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getSampleSize.java b/gnu/testlet/java/awt/image/SampleModel/getSampleSize.java
new file mode 100644
index 00000000..8c43535e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getSampleSize.java
@@ -0,0 +1,85 @@
+/* getSampleSize.java -- some checks for the getSampleSize() methods in the
+ SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getSampleSize implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ int[] s = m.getSampleSize();
+ harness.check(s.length, 3);
+ harness.check(s[0], 3);
+ harness.check(s[1], 3);
+ harness.check(s[2], 2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ harness.check(m.getSampleSize(0), 3);
+ harness.check(m.getSampleSize(1), 3);
+ harness.check(m.getSampleSize(2), 2);
+
+ boolean pass = false;
+ try
+ {
+ m.getSampleSize(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m.getSampleSize(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/getSamples.java b/gnu/testlet/java/awt/image/SampleModel/getSamples.java
new file mode 100644
index 00000000..bfac4f72
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/getSamples.java
@@ -0,0 +1,184 @@
+/* getSamples.java -- some checks for the getSamples() methods in the
+ SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class getSamples implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] samples = new int[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {1, 4, 7, 2, 5, 0}));
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {2, 5, 0, 3, 6, 1}));
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {3, 2, 1, 0, 3, 2}));
+
+ // if the incoming array is null, a new one is created
+ samples = m.getSamples(1, 2, 2, 3, 2, (int[]) null, db);
+ harness.check(Arrays.equals(samples, new int[] {3, 2, 1, 0, 3, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] samples = new float[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {1, 4, 7, 2, 5, 0}));
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {2, 5, 0, 3, 6, 1}));
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {3, 2, 1, 0, 3, 2}));
+
+ // if the incoming array is null, a new one is created
+ samples = m.getSamples(1, 2, 2, 3, 2, (float[]) null, db);
+ harness.check(Arrays.equals(samples, new float[] {3, 2, 1, 0, 3, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] samples = new double[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {1, 4, 7, 2, 5, 0}));
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {2, 5, 0, 3, 6, 1}));
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {3, 2, 1, 0, 3, 2}));
+
+ // if the incoming array is null, a new one is created
+ samples = m.getSamples(1, 2, 2, 3, 2, (double[]) null, db);
+ harness.check(Arrays.equals(samples, new double[] {3, 2, 1, 0, 3, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/setPixel.java b/gnu/testlet/java/awt/image/SampleModel/setPixel.java
new file mode 100644
index 00000000..d9f5ec25
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/setPixel.java
@@ -0,0 +1,157 @@
+/* setPixel.java -- some checks for the setPixel() methods in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class setPixel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0}));
+ m.setPixel(1, 2, new int[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3}));
+
+ // try null array
+ boolean pass = true;
+ try
+ {
+ m.setPixel(1, 2, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0}));
+ m.setPixel(1, 2, new float[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3}));
+
+ // try null array
+ boolean pass = true;
+ try
+ {
+ m.setPixel(1, 2, (float[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] pixel = new double[3];
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {0, 0, 0}));
+ m.setPixel(1, 2, new double[] {1, 2, 3}, db);
+ m.getPixel(1, 2, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3}));
+
+ // try null array
+ boolean pass = true;
+ try
+ {
+ m.setPixel(1, 2, (double[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixel(1, 2, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/setPixels.java b/gnu/testlet/java/awt/image/SampleModel/setPixels.java
new file mode 100644
index 00000000..5736a725
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/setPixels.java
@@ -0,0 +1,166 @@
+/* setPixels.java -- some checks for the setPixels() methods in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class setPixels implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] pixel = new int[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new int[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null pixel data
+ boolean pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] pixel = new float[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new float[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new float[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null pixel data
+ boolean pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, (float[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] pixel = new double[18];
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0}));
+ m.setPixels(1, 2, 2, 3, new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18}, db);
+ m.getPixels(1, 2, 2, 3, pixel, db);
+ harness.check(Arrays.equals(pixel, new double[] {1, 2, 3, 4, 5, 2, 7, 0, 1,
+ 2, 3, 0, 5, 6, 3, 0, 1, 2}));
+
+ // try null pixel data
+ boolean pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, (double[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setPixels(1, 2, 2, 3, pixel, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/setSample.java b/gnu/testlet/java/awt/image/SampleModel/setSample.java
new file mode 100644
index 00000000..80ab24bf
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/setSample.java
@@ -0,0 +1,180 @@
+/* setSample.java -- some checks for the setSample() methods in the SampleModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+public class setSample implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSample(1, 2, 0, db), 0);
+ m.setSample(1, 2, 0, 3, db);
+ harness.check(m.getSample(1, 2, 0, db), 3);
+
+ // try invalid band
+ boolean pass = true;
+ try
+ {
+ m.setSample(1, 2, -1, 3, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = true;
+ try
+ {
+ m.setSample(1, 2, 3, 3, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setSample(1, 2, 2, 3, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, float, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSample(1, 2, 0, db), 0);
+ m.setSample(1, 2, 0, 3f, db);
+ harness.check(m.getSample(1, 2, 0, db), 3);
+
+ // try invalid band
+ boolean pass = true;
+ try
+ {
+ m.setSample(1, 2, -1, 3f, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = true;
+ try
+ {
+ m.setSample(1, 2, 3, 3f, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setSample(1, 2, 2, 3f, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, double, DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ harness.check(m.getSample(1, 2, 0, db), 0);
+ m.setSample(1, 2, 0, 3d, db);
+ harness.check(m.getSample(1, 2, 0, db), 3);
+
+ // try invalid band
+ boolean pass = true;
+ try
+ {
+ m.setSample(1, 2, -1, 3d, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = true;
+ try
+ {
+ m.setSample(1, 2, 3, 3d, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.setSample(1, 2, 2, 3d, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SampleModel/setSamples.java b/gnu/testlet/java/awt/image/SampleModel/setSamples.java
new file mode 100644
index 00000000..dda5dd0c
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SampleModel/setSamples.java
@@ -0,0 +1,211 @@
+/* setSamples.java -- some checks for the setSamples() methods in the
+ SampleModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.SampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+public class setSamples implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, int[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ int[] samples = new int[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {0, 0, 0, 0, 0, 0}));
+ m.setSamples(1, 2, 2, 3, 0, new int[] {1, 2, 3, 4 ,5 ,6}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {1, 2, 3, 4, 5, 6}));
+ m.setSamples(1, 2, 2, 3, 1, new int[] {7, 8, 9, 10, 11, 12}, db);
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {7, 0, 1, 2, 3, 4}));
+ m.setSamples(1, 2, 2, 3, 2, new int[] {13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new int[] {1, 2, 3, 0, 1, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null sample data
+ pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 0, (int[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, float[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ float[] samples = new float[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {0, 0, 0, 0, 0, 0}));
+ m.setSamples(1, 2, 2, 3, 0, new float[] {1, 2, 3, 4 ,5 ,6}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {1, 2, 3, 4, 5, 6}));
+ m.setSamples(1, 2, 2, 3, 1, new float[] {7, 8, 9, 10, 11, 12}, db);
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {7, 0, 1, 2, 3, 4}));
+ m.setSamples(1, 2, 2, 3, 2, new float[] {13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new float[] {1, 2, 3, 0, 1, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null sample data
+ pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 0, (float[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, double[], DataBuffer)");
+ SampleModel m = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10,
+ 20, new int[] { 224, 28, 3 });
+ DataBuffer db = m.createDataBuffer();
+ double[] samples = new double[6];
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {0, 0, 0, 0, 0, 0}));
+ m.setSamples(1, 2, 2, 3, 0, new double[] {1, 2, 3, 4 ,5 ,6}, db);
+ m.getSamples(1, 2, 2, 3, 0, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {1, 2, 3, 4, 5, 6}));
+ m.setSamples(1, 2, 2, 3, 1, new double[] {7, 8, 9, 10, 11, 12}, db);
+ m.getSamples(1, 2, 2, 3, 1, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {7, 0, 1, 2, 3, 4}));
+ m.setSamples(1, 2, 2, 3, 2, new double[] {13, 14, 15, 16, 17, 18}, db);
+ m.getSamples(1, 2, 2, 3, 2, samples, db);
+ harness.check(Arrays.equals(samples, new double[] {1, 2, 3, 0, 1, 2}));
+
+ // try invalid band
+ boolean pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 3, samples, db);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null sample data
+ pass = false;
+ try
+ {
+ m.setSamples(1, 2, 2, 3, 0, (double[]) null, db);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data buffer
+ pass = false;
+ try
+ {
+ m.getSamples(1, 2, 2, 3, 0, samples, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Entries b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Entries
new file mode 100644
index 00000000..73475543
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Entries
@@ -0,0 +1,4 @@
+/constructors.java/1.1/Tue Jul 18 16:56:39 2006//
+/getTable.java/1.1/Tue Jul 18 16:56:39 2006//
+/lookupPixel.java/1.3/Tue Sep 5 16:03:54 2006//
+D
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Repository b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Repository
new file mode 100644
index 00000000..f9b3cc7b
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/ShortLookupTable
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Root b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/constructors.java b/gnu/testlet/java/awt/image/ShortLookupTable/constructors.java
new file mode 100644
index 00000000..3d8b634e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/constructors.java
@@ -0,0 +1,115 @@
+/* constructors.java -- some checks for the constructors in the ShortLookupTable
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ShortLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ShortLookupTable;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, byte[])");
+ short[] shorts = new short[] {0xAA, 0xBB};
+ ShortLookupTable t = new ShortLookupTable(7, shorts);
+ harness.check(t.getOffset(), 7);
+ harness.check(t.getNumComponents(), 1);
+ short[][] table = t.getTable();
+ harness.check(table.length, 1);
+ harness.check(table[0] == shorts);
+
+ // try negative offset
+ boolean pass = false;
+ try
+ {
+ t = new ShortLookupTable(-1, shorts);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data
+ pass = false;
+ try
+ {
+ t = new ShortLookupTable(0, (short[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, byte[][])");
+ short[] shortsA = new short[] {0xAA, 0xBB, 0xCC};
+ short[] shortsB = new short[] {0xDD, 0xEE, 0xFF};
+ short[][] shorts = new short[][] { shortsA, shortsB };
+ ShortLookupTable t = new ShortLookupTable(3, shorts);
+ harness.check(t.getOffset(), 3);
+ harness.check(t.getNumComponents(), 2);
+ short[][] table = t.getTable();
+ harness.check(table.length, 2);
+ harness.check(table[0] == shortsA);
+ harness.check(table[1] == shortsB);
+ harness.check(table != shorts);
+
+ // try negative offset
+ boolean pass = false;
+ try
+ {
+ t = new ShortLookupTable(-1, shorts);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null data
+ pass = false;
+ try
+ {
+ t = new ShortLookupTable(0, (short[][]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/getTable.java b/gnu/testlet/java/awt/image/ShortLookupTable/getTable.java
new file mode 100644
index 00000000..43a07d81
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/getTable.java
@@ -0,0 +1,66 @@
+/* getTable.java -- some checks for the getLookUpTable() method in the
+ ShortLookupTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.ShortLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ShortLookupTable;
+
+public class getTable implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1()");
+ short[] shorts = new short[] {0xAA, 0xBB};
+ ShortLookupTable t = new ShortLookupTable(7, shorts);
+ short[][] table = t.getTable();
+ harness.check(table.length, 1);
+ harness.check(table[0] == shorts);
+ harness.check(t.getTable() == t.getTable());
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2()");
+ short[] shortsA = new short[] {0xAA, 0xBB, 0xCC};
+ short[] shortsB = new short[] {0xDD, 0xEE, 0xFF};
+ short[][] shorts = new short[][] { shortsA, shortsB };
+ ShortLookupTable t = new ShortLookupTable(3, shorts);
+ short[][] table = t.getTable();
+ harness.check(table.length, 2);
+ harness.check(table[0] == shortsA);
+ harness.check(table[1] == shortsB);
+ harness.check(table != shorts);
+ harness.check(t.getTable() == t.getTable());
+ }
+
+}
diff --git a/gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java b/gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java
new file mode 100644
index 00000000..2af57425
--- /dev/null
+++ b/gnu/testlet/java/awt/image/ShortLookupTable/lookupPixel.java
@@ -0,0 +1,271 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.ShortLookupTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.ShortLookupTable;
+
+/**
+ * Some checks for the lookupPixel() methods in the {@link ShortLookupTable} class.
+ */
+public class lookupPixel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testInt(harness);
+ testShort(harness);
+ testFailure(harness);
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int[], int[])");
+ short[] data = {105, 104, 103, 102, 101, 100};
+ ShortLookupTable t = new ShortLookupTable(100, data);
+
+ // check 1-band source with 1-band lookup table
+ int[] src = new int[] {100};
+ int[] dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new int[] {101};
+ dst = new int[] {0};
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 1-band lookup table
+ src = new int[] {100, 101, 102};
+ try {
+ dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 104);
+ harness.check(dst[2], 103);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ src = new int[] {102, 103, 104};
+ dst = new int[] {0, 0, 0};
+ try {
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 103);
+ harness.check(dst[1], 102);
+ harness.check(dst[2], 101);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ // check 3-band source with 3-band lookup table
+ short[][] data2 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ {125, 124, 123, 122, 121, 120}
+ };
+ ShortLookupTable t2 = new ShortLookupTable(100, data2);
+
+ int[] src2 = {100, 101, 102};
+ dst = t2.lookupPixel(src2, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 114);
+ harness.check(dst[2], 123);
+
+ src2 = new int[] {103, 104, 105};
+ dst = new int[] {0, 0, 0};
+ dst = t2.lookupPixel(src2, dst);
+ harness.check(dst[0], 102);
+ harness.check(dst[1], 111);
+ harness.check(dst[2], 120);
+
+ // check 1-band source with 2-band lookup table
+ short[][] data3 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ };
+ ShortLookupTable t3 = new ShortLookupTable(100, data3);
+ src = new int[] {100};
+ dst = t3.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new int[] {101};
+ dst = new int[] {0};
+ dst = t3.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 2-band lookup table
+ try {
+ dst = t3.lookupPixel(src2, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ dst = new int[3];
+ try {
+ dst = t3.lookupPixel(src2, dst);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ }
+
+ private void testShort(TestHarness harness)
+ {
+ harness.checkPoint("(short[], short[])");
+ short[] data = {105, 104, 103, 102, 101, 100};
+ ShortLookupTable t = new ShortLookupTable(100, data);
+
+ // check 1-band source with 1-band lookup table
+ short[] src = new short[] {100};
+ short[] dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new short[] {101};
+ dst = new short[] {0};
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3-band source with 1-band lookup table
+ src = new short[] {100, 101, 102};
+ try {
+ dst = t.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 104);
+ harness.check(dst[2], 103);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ src = new short[] {102, 103, 104};
+ dst = new short[] {0, 0, 0};
+ try {
+ dst = t.lookupPixel(src, dst);
+ harness.check(dst[0], 103);
+ harness.check(dst[1], 102);
+ harness.check(dst[2], 101);
+ }
+ catch (Exception e) { // don't allow a failure to
+ harness.check(false); // disrupt remaining checks
+ harness.debug(e);
+ }
+
+ // check 3-band source with 3-band lookup table
+ short[][] data2 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ {125, 124, 123, 122, 121, 120}
+ };
+ ShortLookupTable t2 = new ShortLookupTable(100, data2);
+ short[] src2 = {100, 101, 102};
+ dst = t2.lookupPixel(src2, null);
+ harness.check(dst[0], 105);
+ harness.check(dst[1], 114);
+ harness.check(dst[2], 123);
+
+ src2 = new short[] {103, 104, 105};
+ dst = new short[] {0, 0, 0};
+ dst = t2.lookupPixel(src2, dst);
+ harness.check(dst[0], 102);
+ harness.check(dst[1], 111);
+ harness.check(dst[2], 120);
+
+ // check 1-band source with 2-band lookup table
+ short[][] data3 = {
+ {105, 104, 103, 102, 101, 100},
+ {115, 114, 113, 112, 111, 110},
+ };
+ ShortLookupTable t3 = new ShortLookupTable(100, data3);
+ src = new short[] {100};
+ dst = t3.lookupPixel(src, null);
+ harness.check(dst[0], 105);
+
+ src = new short[] {101};
+ dst = new short[1];
+ dst = t3.lookupPixel(src, dst);
+ harness.check(dst[0], 104);
+
+ // check 3 band source, 2 band lookup table
+ try {
+ dst = t3.lookupPixel(src2, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+
+ dst = new short[3];
+ try {
+ dst = t3.lookupPixel(src2, dst);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ harness.check(true);
+ }
+ }
+
+ // Test failures, ie, if the requested pixel is not in the table.
+ // It should throw array index out of bounds exceptions.
+ private void testFailure(TestHarness harness)
+ {
+ harness.checkPoint("not in table");
+ short[] data = {105, 104, 103, 102, 101, 100};
+ ShortLookupTable t = new ShortLookupTable(100, data);
+
+ try
+ {
+ int[] src = new int[] {120};
+ t.lookupPixel(src, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ short[] src = new short[] {120};
+ t.lookupPixel(src, null);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ harness.check(true);
+ }
+
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Entries b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Entries
new file mode 100644
index 00000000..16ee1c23
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Entries
@@ -0,0 +1,21 @@
+/constructors.java/1.1/Fri Oct 15 23:44:08 2004//
+/createCompatibleSampleModel.java/1.1/Fri Oct 15 23:44:08 2004//
+/createDataBuffer.java/1.1/Tue Jan 6 15:30:29 2004//
+/createSubsetSampleModel.java/1.1/Fri Oct 15 23:44:08 2004//
+/equals.java/1.2/Sun Nov 14 21:15:05 2004//
+/getBitMasks.java/1.1/Fri Oct 15 23:44:08 2004//
+/getBitOffsets.java/1.1/Fri Oct 15 23:44:08 2004//
+/getDataElements.java/1.1/Fri Oct 15 23:44:08 2004//
+/getNumDataElements.java/1.1/Fri Oct 15 23:44:08 2004//
+/getOffset.java/1.1/Fri Oct 15 23:44:08 2004//
+/getPixel.java/1.1/Fri Oct 15 23:44:08 2004//
+/getPixels.java/1.2/Mon Jun 13 18:51:55 2005//
+/getSample.java/1.1/Fri Oct 15 23:44:08 2004//
+/getSampleSize.java/1.4/Mon Jul 17 14:01:44 2006//
+/getSamples.java/1.1/Fri Oct 15 23:44:08 2004//
+/getScanlineStride.java/1.1/Fri Oct 15 23:44:08 2004//
+/hashCode.java/1.1/Fri Oct 15 23:44:08 2004//
+/setDataElements.java/1.1/Fri Oct 15 23:44:08 2004//
+/setPixel.java/1.1/Fri Oct 15 23:44:08 2004//
+/setSample.java/1.1/Fri Oct 15 23:44:08 2004//
+D
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Repository b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Repository
new file mode 100644
index 00000000..70ca04b4
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Root b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/constructors.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/constructors.java
new file mode 100644
index 00000000..bb577d48
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/constructors.java
@@ -0,0 +1,201 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the constructors in the {@link SinglePixelPackedSampleModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int[])");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.getDataType(), DataBuffer.TYPE_BYTE); // check 1
+ harness.check(m1.getWidth(), 1); // check 2
+ harness.check(m1.getHeight(), 2); // check 3
+ harness.check(m1.getNumBands(), 3); // check 4
+
+ // unsupported data type should throw an IllegalArgumentException
+ try // check 5
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_DOUBLE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'w' is <= 0 there should be an IllegalArgumentException
+ try // check 6
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 0, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'h' is <= 0 there should be an IllegalArgumentException
+ try // check 7
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 0, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if mask array is empty there should be an IllegalArgumentException
+ try // check 8
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if mask array contains a non-contiguous mask there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 27, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int[])");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, 3, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.getDataType(), DataBuffer.TYPE_BYTE); // check 1
+ harness.check(m1.getWidth(), 1); // check 2
+ harness.check(m1.getHeight(), 2); // check 3
+ harness.check(m1.getNumBands(), 3); // check 4
+
+ // unsupported data type should throw an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_DOUBLE, 1, 2, 3, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'w' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 0, 2, 3, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'h' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 0, 3, new int[] { 224, 28, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if mask array is empty there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, 3, new int[] { }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if mask array contains a non-contiguous mask there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m2 = */ new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 27, 3 }
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createCompatibleSampleModel.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createCompatibleSampleModel.java
new file mode 100644
index 00000000..bcef13d1
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createCompatibleSampleModel.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the <code>createCompatibleSampleModel()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class createCompatibleSampleModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ SinglePixelPackedSampleModel m2 = (SinglePixelPackedSampleModel) m1.createCompatibleSampleModel(5, 10);
+ harness.check(m2.getDataType(), DataBuffer.TYPE_BYTE); // check 1
+ harness.check(m2.getWidth(), 5); // check 2
+ harness.check(m2.getHeight(), 10); // check 3
+ harness.check(m2.getNumBands(), 3); // check 4
+ harness.check(Arrays.equals(m1.getBitMasks(), m2.getBitMasks())); // check 5
+
+ // if 'w' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m3 = */ m1.createCompatibleSampleModel(0, 10);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'h' is <= 0 there should be an IllegalArgumentException
+ try
+ {
+ /* SampleModel m4 = */ m1.createCompatibleSampleModel(5, 0);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createDataBuffer.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createDataBuffer.java
new file mode 100644
index 00000000..9e3d88bd
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createDataBuffer.java
@@ -0,0 +1,162 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferUShort;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+
+/**
+ * Checks whether SinglePixelPackedSampleModel.createDataBuffer works.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class createDataBuffer
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testInt(harness);
+ testUShort(harness);
+ testByte(harness);
+ }
+
+
+ private void testInt(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel sm;
+ DataBuffer dbuf;
+ int[] bitMasks;
+
+ harness.checkPoint("TYPE_INT");
+
+ bitMasks = new int[] { 0xff00, 0xff };
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 51, 83, bitMasks);
+ dbuf = sm.createDataBuffer();
+
+ // Check #1
+ harness.check(dbuf instanceof DataBufferInt);
+
+ // Check #2
+ harness.check(dbuf.getDataType(), DataBuffer.TYPE_INT);
+
+ // Check #3
+ harness.check(dbuf.getNumBanks(), 1);
+
+ // Check #4
+ harness.check(dbuf.getOffset(), 0);
+
+ // Check #5
+ harness.check(dbuf.getSize(), /* width * height */ 51 * 83);
+
+ // Check #6
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 51, 83, /* stride */ 91,
+ bitMasks);
+ dbuf = sm.createDataBuffer();
+ harness.check(dbuf.getSize(),
+ /* (stride * (height - 1)) + width */ 91 * 82 + 51);
+ }
+
+
+ private void testUShort(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel sm;
+ DataBuffer dbuf;
+ int[] bitMasks;
+
+ harness.checkPoint("TYPE_USHORT");
+
+ bitMasks = new int[] { 0x0f00, 0xf000 };
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_USHORT,
+ 42, 10, bitMasks);
+ dbuf = sm.createDataBuffer();
+
+ // Check #1
+ harness.check(dbuf instanceof DataBufferUShort);
+
+ // Check #2
+ harness.check(dbuf.getDataType(), DataBuffer.TYPE_USHORT);
+
+ // Check #3
+ harness.check(dbuf.getNumBanks(), 1);
+
+ // Check #4
+ harness.check(dbuf.getOffset(), 0);
+
+ // Check #5
+ harness.check(dbuf.getSize(), /* width * height */ 42 * 10);
+
+ // Check #6
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_USHORT,
+ 42, 10, /* stride */ 31,
+ bitMasks);
+ dbuf = sm.createDataBuffer();
+ harness.check(dbuf.getSize(),
+ /* (stride * (height - 1)) + width */ 31 * 9 + 42);
+ }
+
+
+ private void testByte(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel sm;
+ DataBuffer dbuf;
+ int[] bitMasks;
+
+ harness.checkPoint("TYPE_BYTE");
+
+ bitMasks = new int[] { 0xf0, 0x08, 0x6, 0x1 };
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE,
+ 5, 3, bitMasks);
+ dbuf = sm.createDataBuffer();
+
+ // Check #1
+ harness.check(dbuf instanceof DataBufferByte);
+
+ // Check #2
+ harness.check(dbuf.getDataType(), DataBuffer.TYPE_BYTE);
+
+ // Check #3
+ harness.check(dbuf.getNumBanks(), 1);
+
+ // Check #4
+ harness.check(dbuf.getOffset(), 0);
+
+ // Check #5
+ harness.check(dbuf.getSize(), /* width * height */ 5 * 3);
+
+ // Check #6
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_USHORT,
+ 5, 3, /* stride */ 7,
+ bitMasks);
+ dbuf = sm.createDataBuffer();
+ harness.check(dbuf.getSize(),
+ /* (stride * (height - 1)) + width */ 7 * 2 + 5);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createSubsetSampleModel.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createSubsetSampleModel.java
new file mode 100644
index 00000000..9407cf32
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/createSubsetSampleModel.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.RasterFormatException;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the <code>createSubsetampleModel()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class createSubsetSampleModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ SinglePixelPackedSampleModel m2 = (SinglePixelPackedSampleModel) m1.createSubsetSampleModel(new int[] {0, 2});
+ harness.check(m2.getDataType(), DataBuffer.TYPE_BYTE); // check 1
+ harness.check(m2.getWidth(), 1); // check 2
+ harness.check(m2.getHeight(), 2); // check 3
+ harness.check(m2.getNumBands(), 2); // check 4
+ harness.check(Arrays.equals(new int[] { 224, 3 }, m2.getBitMasks())); // check 5
+
+ // if 'bands' contains an index outside the range there should be an ArrayIndexOutOfBoundsException
+ try
+ {
+ /* SampleModel m3 = */ m1.createSubsetSampleModel(new int [] {0, 5});
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // if 'bands' has more bands than original there should be a RasterFormatException
+ try
+ {
+ /* SampleModel m3 = */ m1.createSubsetSampleModel(new int [] {0, 1, 2, 0});
+ harness.check(false);
+ }
+ catch (RasterFormatException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java
new file mode 100644
index 00000000..25f98670
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/equals.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>equals()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.equals(m2)); // check 1
+ harness.check(m2.equals(m1)); // check 2
+ harness.check(!m1.equals(null)); // check 3
+
+ // check that all fields are distinguished...
+
+ // dataType
+ m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(!m1.equals(m2));
+ m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.equals(m2));
+
+ // w
+ m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(!m1.equals(m2));
+ m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.equals(m2));
+
+ // h
+ m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, new int[] { 224, 28, 3 }
+ );
+ harness.check(!m1.equals(m2));
+ m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.equals(m2));
+
+ // bitmasks
+ m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, new int[] { 224, 24, 7 }
+ );
+ harness.check(!m1.equals(m2));
+ m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, new int[] { 224, 24, 7 }
+ );
+ harness.check(m1.equals(m2));
+
+ // scanline stride
+ m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, 99, new int[] {224, 24, 7 }
+ );
+ harness.check(!m1.equals(m2));
+ m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 5, 10, 99, new int[] {224, 24, 7 }
+ );
+ harness.check(m1.equals(m2));
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitMasks.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitMasks.java
new file mode 100644
index 00000000..0c181495
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitMasks.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the <code>getBitMasks()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getBitMasks implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(Arrays.equals(m1.getBitMasks(), new int[] { 224, 28, 3 })); // check 4
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitOffsets.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitOffsets.java
new file mode 100644
index 00000000..6bd0ade3
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getBitOffsets.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.util.Arrays;
+
+/**
+ * Some checks for the <code>getBitOffsets()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getBitOffsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(Arrays.equals(m1.getBitOffsets(), new int[] { 5, 2, 0 }));
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getDataElements.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getDataElements.java
new file mode 100644
index 00000000..06d04129
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getDataElements.java
@@ -0,0 +1,226 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferUShort;
+
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getDataElements()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getDataElements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testByte(harness);
+ testUShort(harness);
+ testInt(harness);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Byte))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 224, 28, 3 }
+ );
+ byte[] b = new byte[] { (byte) 11, (byte) 22, (byte) 33, (byte) 44 };
+ DataBuffer db = new DataBufferByte(b, 4);
+
+ byte[] de = (byte[]) m1.getDataElements(1, 1, null, db);
+ harness.check(de.length, 1); // check 1
+ harness.check(de[0], (byte) 44); // check 2
+
+ // check for coordinates out of bounds
+ try // check 3
+ {
+ m1.getDataElements(2, 2, null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong dimension
+ try // check 4
+ {
+ m1.getDataElements(1, 1, new byte[0], db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong type
+ try // check 5
+ {
+ m1.getDataElements(1, 1, new int[1], db);
+ harness.check(false);
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // check for null data buffer
+ try // check 6
+ {
+ m1.getDataElements(0, 0, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testUShort(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(UShort))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 2, new int[] { 224, 28, 3 }
+ );
+ short[] s = new short[] { (short) 11, (short) 22, (short) 33, (short) 44 };
+ DataBuffer db = new DataBufferUShort(s, 4);
+
+ short[] de = (short[]) m1.getDataElements(1, 1, null, db);
+ harness.check(de.length, 1);
+ harness.check(de[0], (byte) 44);
+
+ // check for coordinates out of bounds
+ try
+ {
+ m1.getDataElements(2, 2, null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong dimension
+ try
+ {
+ m1.getDataElements(1, 1, new short[0], db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong type
+ try
+ {
+ m1.getDataElements(1, 1, new int[1], db);
+ harness.check(false);
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // check for null data buffer
+ try
+ {
+ m1.getDataElements(0, 0, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Int))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 2, new int[] { 224, 28, 3 }
+ );
+ int[] i = new int[] { 11, 22, 33, 44 };
+ DataBuffer db = new DataBufferInt(i, 4);
+
+ int[] de = (int[]) m1.getDataElements(1, 1, null, db);
+ harness.check(de.length, 1);
+ harness.check(de[0], 44);
+
+ // check for coordinates out of bounds
+ try
+ {
+ m1.getDataElements(2, 2, null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong dimension
+ try
+ {
+ m1.getDataElements(1, 1, new int[0], db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check for return object of wrong type
+ try
+ {
+ m1.getDataElements(1, 1, new byte[1], db);
+ harness.check(false);
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // check for null data buffer
+ try
+ {
+ m1.getDataElements(0, 0, null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getNumDataElements.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getNumDataElements.java
new file mode 100644
index 00000000..d319cf40
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getNumDataElements.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getNumDataElements()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getNumDataElements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 1, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.getNumDataElements(), 1);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getOffset.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getOffset.java
new file mode 100644
index 00000000..e4162f3e
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getOffset.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getOffset()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getOffset implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.getOffset(0, 0), 0);
+ harness.check(m1.getOffset(1, 0), 1);
+ harness.check(m1.getOffset(0, 1), 2);
+ harness.check(m1.getOffset(1, 1), 3);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixel.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixel.java
new file mode 100644
index 00000000..8b9cdc3a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixel.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getPixel()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getPixel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 0xF0, 0x0F }
+ );
+ DataBufferByte db = new DataBufferByte(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0xAB, (byte) 0xCD }, 4);
+
+ // check regular fetch
+ int[] samples = m1.getPixel(1, 1, (int[]) null, db);
+ harness.check(samples[0], 0x0C);
+ harness.check(samples[1], 0x0D);
+
+ // check regular fetch with negative x
+ try
+ {
+ samples = m1.getPixel(-2, 0, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with negative y
+ try
+ {
+ samples = m1.getPixel(0, -1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with presupplied array
+ int[] samplesIn = new int[2];
+ int[] samplesOut = m1.getPixel(1, 1, samplesIn, db);
+ harness.check(samplesIn == samplesOut);
+ harness.check(samplesOut[0], 0x0C);
+ harness.check(samplesOut[1], 0x0D);
+
+ // check regular fetch with presupplied array too short
+ int[] samplesIn2 = new int[1];
+ try
+ {
+ /* int[] samplesOut2 = */ m1.getPixel(1, 1, samplesIn2, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check null data buffer
+ try
+ {
+ samples = m1.getPixel(0, 0, (int[]) null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixels.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixels.java
new file mode 100644
index 00000000..339c1be9
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getPixels.java
@@ -0,0 +1,151 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getPixels()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getPixels implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 0xF0, 0x0F }
+ );
+ DataBufferByte db = new DataBufferByte(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0xAB, (byte) 0xCD }, 4);
+
+ // check regular fetch
+ int[] samples = m1.getPixels(0, 0, 1, 2, (int[]) null, db);
+ harness.check(samples[0], 0x01); // 1
+ harness.check(samples[1], 0x02); // 2
+ harness.check(samples[2], 0x0A); // 3
+ harness.check(samples[3], 0x0B); // 4
+
+ // check regular fetch with negative x
+ try
+ {
+ samples = m1.getPixels(-1, 0, 1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with negative y
+ try
+ {
+ samples = m1.getPixels(0, -1, 1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with w < 0
+ try
+ {
+ samples = m1.getPixels(0, 0, -1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ harness.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with h < 0
+ try
+ {
+ samples = m1.getPixels(0, 0, 1, -1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ harness.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with presupplied array
+ int[] samplesIn = new int[4];
+ int[] samplesOut = m1.getPixels(1, 0, 1, 2, samplesIn, db);
+ harness.check(samplesIn == samplesOut);
+ harness.check(samplesOut[0], 0x03);
+ harness.check(samplesOut[1], 0x04);
+ harness.check(samplesOut[2], 0x0C);
+ harness.check(samplesOut[3], 0x0D);
+
+ // check regular fetch with presupplied array too short
+ int[] samplesIn2 = new int[1];
+ try
+ {
+ /* int[] samplesOut2 = */ m1.getPixels(1, 1, 1, 2, samplesIn2, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check null data buffer
+ try
+ {
+ samples = m1.getPixels(0, 0, 1, 1, (int[]) null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check other array types
+ try
+ {
+ float[] samples1 = m1.getPixels(0, 0, 1, 1, (float[]) null, db);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSample.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSample.java
new file mode 100644
index 00000000..43231128
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSample.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getSample()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getSample implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 0xF0, 0x0F }
+ );
+ DataBufferByte db = new DataBufferByte(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0xAB, (byte) 0xCD }, 4);
+
+ // check regular fetch
+ int sample = m1.getSample(1, 1, 1, db);
+ harness.check(sample, 0x0D);
+
+ // check regular fetch with negative x
+ try
+ {
+ sample = m1.getSample(-2, 0, 0, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with negative y
+ try
+ {
+ sample = m1.getSample(0, -1, 0, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check null data buffer
+ try
+ {
+ sample = m1.getSample(0, 0, 0, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java
new file mode 100644
index 00000000..4c44411f
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSampleSize.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+
+/**
+ * Checks whether SinglePixelPackedSampleModel.getSampleSize works.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getSampleSize
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel sm;
+ int[] bitMasks;
+
+ bitMasks = new int[] { 0xf0, 0x08, 0x6, 0x1 };
+ sm = new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE,
+ 5, 3, bitMasks);
+
+ // Check #1
+ harness.check(sm.getSampleSize(0), 4);
+
+ // Check #2
+ harness.check(sm.getSampleSize(1), 1);
+
+ // Check #3
+ harness.check(sm.getSampleSize(2), 2);
+
+ // Check #4
+ harness.check(sm.getSampleSize(3), 1);
+
+ // Check #5
+ try
+ {
+ sm.getSampleSize(4);
+ harness.check(false);
+ }
+ catch (RuntimeException ex)
+ {
+ harness.check(true);
+ }
+
+ // Check #6
+ try
+ {
+ sm.getSampleSize(-1);
+ harness.check(false);
+ }
+ catch (RuntimeException ex)
+ {
+ harness.check(true);
+ }
+
+
+ // Check #7
+ int[] sizes = sm.getSampleSize();
+ harness.check(sizes.length, 4);
+
+ // Check #8
+ harness.check(sizes[0], 4);
+
+ // Check #9
+ harness.check(sizes[1], 1);
+
+ // Check #10
+ harness.check(sizes[2], 2);
+
+ // Check #11
+ harness.check(sizes[3], 1);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 10, 20, new int[] {0xFF, 0xFF00, 0xFF0000,
+ 0xFF000000});
+ int[] sizes = m.getSampleSize();
+ harness.check(sizes.length, 4);
+ harness.check(sizes[0], 8);
+ harness.check(sizes[1], 8);
+ harness.check(sizes[2], 8);
+ harness.check(sizes[3], 8);
+
+ // if we alter the returned array, does that affect the model's state
+ sizes[0] = 99;
+ int[] sizes2 = m.getSampleSize();
+ harness.check(sizes2 != sizes);
+ harness.check(sizes2[0], 8);
+ }
+}
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSamples.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSamples.java
new file mode 100644
index 00000000..faff38af
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getSamples.java
@@ -0,0 +1,147 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getSamples()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getSamples implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 0xF0, 0x0F }
+ );
+ DataBufferByte db = new DataBufferByte(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0xAB, (byte) 0xCD }, 4);
+
+ // check regular fetch
+ int[] samples = m1.getSamples(0, 0, 1, 2, 1, (int[]) null, db);
+ harness.check(samples[0], 0x02); // 1
+ harness.check(samples[1], 0x0B); // 2
+
+ // check regular fetch with negative x
+ try
+ {
+ samples = m1.getSamples(-1, 0, 1, 1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with negative y
+ try
+ {
+ samples = m1.getSamples(0, -1, 1, 1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with w < 0
+ try
+ {
+ samples = m1.getSamples(0, 0, -1, 1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ harness.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with h < 0
+ try
+ {
+ samples = m1.getSamples(0, 0, 1, -1, 1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ harness.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with band < 0
+ try
+ {
+ samples = m1.getSamples(0, 0, 1, 1, -1, (int[]) null, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check regular fetch with presupplied array
+ int[] samplesIn = new int[2];
+ int[] samplesOut = m1.getSamples(1, 0, 1, 2, 0, samplesIn, db);
+ harness.check(samplesIn == samplesOut);
+ harness.check(samplesOut[0], 0x03);
+ harness.check(samplesOut[1], 0x0C);
+
+ // check regular fetch with presupplied array too short
+ int[] samplesIn2 = new int[1];
+ try
+ {
+ /* int[] samplesOut2 = */ m1.getSamples(1, 1, 1, 2, 1, samplesIn2, db);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // check null data buffer
+ try
+ {
+ samples = m1.getSamples(0, 0, 1, 1, 1, (int[]) null, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getScanlineStride.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getScanlineStride.java
new file mode 100644
index 00000000..c241be98
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/getScanlineStride.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>getScanlineStride()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class getScanlineStride implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.getScanlineStride(), 2);
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 20, 30, 22, new int[] { 0xF0, 0x0F }
+ );
+ harness.check(m2.getScanlineStride(), 22);
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/hashCode.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/hashCode.java
new file mode 100644
index 00000000..1104aed8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/hashCode.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>hashCode()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class hashCode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // two instances that are equal must have the same hashCode...
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 224, 28, 3 }
+ );
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, new int[] { 224, 28, 3 }
+ );
+ harness.check(m1.equals(m2));
+ harness.check(m1.hashCode(), m2.hashCode());
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setDataElements.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setDataElements.java
new file mode 100644
index 00000000..b36ce5e8
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setDataElements.java
@@ -0,0 +1,327 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferUShort;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>setDataElements()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class setDataElements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testByte(harness);
+ testUShort(harness);
+ testInt(harness);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Byte))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ byte[] b = new byte[] { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44, (byte) 0x55, (byte) 0x66 };
+ DataBuffer db = new DataBufferByte(b, 6);
+
+ // set a value
+ m1.setDataElements(0, 0, new byte[] { (byte) 0x77 }, db);
+ m1.setDataElements(1, 0, new byte[] { (byte) 0x88 }, db);
+ m1.setDataElements(0, 1, new byte[] { (byte) 0x99 }, db);
+ m1.setDataElements(1, 1, new byte[] { (byte) 0xAA }, db);
+ m1.setDataElements(0, 2, new byte[] { (byte) 0xBB }, db);
+ m1.setDataElements(1, 2, new byte[] { (byte) 0xCC }, db);
+ harness.check(db.getElem(0), 0x77);
+ harness.check(db.getElem(1), 0x88);
+ harness.check(db.getElem(2), 0x99);
+ harness.check(db.getElem(3), 0xAA);
+ harness.check(db.getElem(4), 0xBB);
+ harness.check(db.getElem(5), 0xCC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ m2.setDataElements(0, 0, new byte[] { (byte) 0x11 }, db);
+ m2.setDataElements(1, 0, new byte[] { (byte) 0x22 }, db);
+ m2.setDataElements(0, 1, new byte[] { (byte) 0x33 }, db);
+ m2.setDataElements(1, 1, new byte[] { (byte) 0x44 }, db);
+ harness.check(db.getElem(0), 0x11);
+ harness.check(db.getElem(1), 0x22);
+ harness.check(db.getElem(3), 0x33);
+ harness.check(db.getElem(4), 0x44);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setDataElements(-1, 0, new byte[] { (byte) 0x99}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setDataElements(0, -1, new byte[] { (byte) 0x99}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with wrong transfer type
+ try
+ {
+ m1.setDataElements(0, 0, new int[] { (int) 0x99}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setDataElements(0, 0, new byte[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setDataElements(0, 0, new byte[] { (byte) 0x99 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testUShort(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(UShort))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ short[] s = new short[] { (short) 0x1111, (short) 0x2222, (short) 0x3333, (short) 0x4444, (short) 0x5555, (short) 0x6666 };
+ DataBuffer db = new DataBufferUShort(s, 6);
+
+ // set a value
+ m1.setDataElements(0, 0, new short[] { (short) 0x7777 }, db);
+ m1.setDataElements(1, 0, new short[] { (short) 0x8888 }, db);
+ m1.setDataElements(0, 1, new short[] { (short) 0x9999 }, db);
+ m1.setDataElements(1, 1, new short[] { (short) 0xAAAA }, db);
+ m1.setDataElements(0, 2, new short[] { (short) 0xBBBB }, db);
+ m1.setDataElements(1, 2, new short[] { (short) 0xCCCC }, db);
+ harness.check(db.getElem(0), 0x7777);
+ harness.check(db.getElem(1), 0x8888);
+ harness.check(db.getElem(2), 0x9999);
+ harness.check(db.getElem(3), 0xAAAA);
+ harness.check(db.getElem(4), 0xBBBB);
+ harness.check(db.getElem(5), 0xCCCC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ m2.setDataElements(0, 0, new short[] { (short) 0x1111 }, db);
+ m2.setDataElements(1, 0, new short[] { (short) 0x2222 }, db);
+ m2.setDataElements(0, 1, new short[] { (short) 0x3333 }, db);
+ m2.setDataElements(1, 1, new short[] { (short) 0x4444 }, db);
+ harness.check(db.getElem(0), 0x1111);
+ harness.check(db.getElem(1), 0x2222);
+ harness.check(db.getElem(3), 0x3333);
+ harness.check(db.getElem(4), 0x4444);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setDataElements(-1, 0, new short[] { (short) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setDataElements(0, -1, new short[] { (short) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with wrong transfer type
+ try
+ {
+ m1.setDataElements(0, 0, new int[] { (int) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setDataElements(0, 0, new short[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setDataElements(0, 0, new short[] { (short) 0x9999 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Int))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 3, new int[] { 0xFFFF00, 0x00FFFF }
+ );
+ int[] i = new int[] { (int) 0x11111111, (int) 0x22222222, (int) 0x33333333, (int) 0x44444444, (int) 0x55555555, (int) 0x66666666 };
+ DataBuffer db = new DataBufferInt(i, 6);
+
+ // set a value
+ m1.setDataElements(0, 0, new int[] { (int) 0x77777777 }, db);
+ m1.setDataElements(1, 0, new int[] { (int) 0x88888888 }, db);
+ m1.setDataElements(0, 1, new int[] { (int) 0x99999999 }, db);
+ m1.setDataElements(1, 1, new int[] { (int) 0xAAAAAAAA }, db);
+ m1.setDataElements(0, 2, new int[] { (int) 0xBBBBBBBB }, db);
+ m1.setDataElements(1, 2, new int[] { (int) 0xCCCCCCCC }, db);
+ harness.check(db.getElem(0), 0x77777777);
+ harness.check(db.getElem(1), 0x88888888);
+ harness.check(db.getElem(2), 0x99999999);
+ harness.check(db.getElem(3), 0xAAAAAAAA);
+ harness.check(db.getElem(4), 0xBBBBBBBB);
+ harness.check(db.getElem(5), 0xCCCCCCCC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 2, 3, new int[] { 0xFFFF00, 0x00FFFF }
+ );
+ m2.setDataElements(0, 0, new int[] { (int) 0x11111111 }, db);
+ m2.setDataElements(1, 0, new int[] { (int) 0x22222222 }, db);
+ m2.setDataElements(0, 1, new int[] { (int) 0x33333333 }, db);
+ m2.setDataElements(1, 1, new int[] { (int) 0x44444444 }, db);
+ harness.check(db.getElem(0), 0x11111111);
+ harness.check(db.getElem(1), 0x22222222);
+ harness.check(db.getElem(3), 0x33333333);
+ harness.check(db.getElem(4), 0x44444444);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setDataElements(-1, 0, new int[] { (int) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setDataElements(0, -1, new int[] { (int) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with wrong transfer type
+ try
+ {
+ m1.setDataElements(0, 0, new short[] { (short) 0x9999 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setDataElements(0, 0, new int[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setDataElements(0, 0, new int[] { (int) 0x9999 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setPixel.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setPixel.java
new file mode 100644
index 00000000..95069c39
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setPixel.java
@@ -0,0 +1,295 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferUShort;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>setPixel()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class setPixel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testByte(harness);
+ testUShort(harness);
+ testInt(harness);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Byte))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ byte[] b = new byte[] { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44, (byte) 0x55, (byte) 0x66 };
+ DataBuffer db = new DataBufferByte(b, 6);
+
+ // set a value
+ m1.setPixel(0, 0, new int[] { 0x0C, 0x07 }, db);
+ m1.setPixel(1, 0, new int[] { 0x0B, 0x08 }, db);
+ m1.setPixel(0, 1, new int[] { 0x0A, 0x09 }, db);
+ m1.setPixel(1, 1, new int[] { 0x09, 0x0A }, db);
+ m1.setPixel(0, 2, new int[] { 0x08, 0x0B }, db);
+ m1.setPixel(1, 2, new int[] { 0x07, 0x0C }, db);
+ harness.check(db.getElem(0), 0xC7);
+ harness.check(db.getElem(1), 0xB8);
+ harness.check(db.getElem(2), 0xA9);
+ harness.check(db.getElem(3), 0x9A);
+ harness.check(db.getElem(4), 0x8B);
+ harness.check(db.getElem(5), 0x7C);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ m2.setPixel(0, 0, new int[] { 0x04, 0x01 }, db);
+ m2.setPixel(1, 0, new int[] { 0x03, 0x02 }, db);
+ m2.setPixel(0, 1, new int[] { 0x02, 0x03 }, db);
+ m2.setPixel(1, 1, new int[] { 0x01, 0x04 }, db);
+ harness.check(db.getElem(0), 0x41);
+ harness.check(db.getElem(1), 0x32);
+ harness.check(db.getElem(3), 0x23);
+ harness.check(db.getElem(4), 0x14);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setPixel(-1, 0, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setPixel(0, -1, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setPixel(0, 0, new int[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setPixel(0, 0, new int[] { 0x10, 0x01 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testUShort(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(UShort))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ short[] s = new short[] { (short) 0x1111, (short) 0x2222, (short) 0x3333, (short) 0x4444, (short) 0x5555, (short) 0x6666 };
+ DataBuffer db = new DataBufferUShort(s, 6);
+
+ // set a value
+ m1.setPixel(0, 0, new int[] { 0x00CC, 0x0077 }, db);
+ m1.setPixel(1, 0, new int[] { 0x00BB, 0x0088 }, db);
+ m1.setPixel(0, 1, new int[] { 0x00AA, 0x0099 }, db);
+ m1.setPixel(1, 1, new int[] { 0x0099, 0x00AA }, db);
+ m1.setPixel(0, 2, new int[] { 0x0088, 0x00BB }, db);
+ m1.setPixel(1, 2, new int[] { 0x0077, 0x00CC }, db);
+ harness.check(db.getElem(0), 0xCC77);
+ harness.check(db.getElem(1), 0xBB88);
+ harness.check(db.getElem(2), 0xAA99);
+ harness.check(db.getElem(3), 0x99AA);
+ harness.check(db.getElem(4), 0x88BB);
+ harness.check(db.getElem(5), 0x77CC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ m2.setPixel(0, 0, new int[] { 0x0044, 0x0011 }, db);
+ m2.setPixel(1, 0, new int[] { 0x0033, 0x0022 }, db);
+ m2.setPixel(0, 1, new int[] { 0x0022, 0x0033 }, db);
+ m2.setPixel(1, 1, new int[] { 0x0011, 0x0044 }, db);
+ harness.check(db.getElem(0), 0x4411);
+ harness.check(db.getElem(1), 0x3322);
+ harness.check(db.getElem(3), 0x2233);
+ harness.check(db.getElem(4), 0x1144);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setPixel(-1, 0, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setPixel(0, -1, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setPixel(0, 0, new int[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setPixel(0, 0, new int[] { 0x10, 0x01 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Object, DataBuffer(Int))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 3, new int[] { 0xFFFF0000, 0x0000FFFF }
+ );
+ int[] i = new int[] { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666 };
+ DataBuffer db = new DataBufferInt(i, 6);
+
+ // set a value
+ m1.setPixel(0, 0, new int[] { 0x00CC, 0x0077 }, db);
+ m1.setPixel(1, 0, new int[] { 0x00BB, 0x0088 }, db);
+ m1.setPixel(0, 1, new int[] { 0x00AA, 0x0099 }, db);
+ m1.setPixel(1, 1, new int[] { 0x0099, 0x00AA }, db);
+ m1.setPixel(0, 2, new int[] { 0x0088, 0x00BB }, db);
+ m1.setPixel(1, 2, new int[] { 0x0077, 0x00CC }, db);
+ harness.check(db.getElem(0), 0x00CC0077);
+ harness.check(db.getElem(1), 0x00BB0088);
+ harness.check(db.getElem(2), 0x00AA0099);
+ harness.check(db.getElem(3), 0x009900AA);
+ harness.check(db.getElem(4), 0x008800BB);
+ harness.check(db.getElem(5), 0x007700CC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 2, 3, new int[] { 0xFFFF0000, 0x0000FFFF }
+ );
+ m2.setPixel(0, 0, new int[] { 0x0044, 0x0011 }, db);
+ m2.setPixel(1, 0, new int[] { 0x0033, 0x0022 }, db);
+ m2.setPixel(0, 1, new int[] { 0x0022, 0x0033 }, db);
+ m2.setPixel(1, 1, new int[] { 0x0011, 0x0044 }, db);
+ harness.check(db.getElem(0), 0x00440011);
+ harness.check(db.getElem(1), 0x00330022);
+ harness.check(db.getElem(3), 0x00220033);
+ harness.check(db.getElem(4), 0x00110044);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setPixel(-1, 0, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setPixel(0, -1, new int[] { 0x10, 0x01 }, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with transfer array too small
+ try
+ {
+ m1.setPixel(0, 0, new int[] {}, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setPixel(0, 0, new int[] { 0x10, 0x01 }, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setSample.java b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setSample.java
new file mode 100644
index 00000000..ed2e7a03
--- /dev/null
+++ b/gnu/testlet/java/awt/image/SinglePixelPackedSampleModel/setSample.java
@@ -0,0 +1,319 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.awt.image.SinglePixelPackedSampleModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.DataBufferInt;
+import java.awt.image.DataBufferUShort;
+import java.awt.image.SinglePixelPackedSampleModel;
+
+/**
+ * Some checks for the <code>setSample()</code> method in the
+ * {@link SinglePixelPackedSampleModel} class.
+ */
+public class setSample implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testByte(harness);
+ testUShort(harness);
+ testInt(harness);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer(Byte))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ byte[] b = new byte[] { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44, (byte) 0x55, (byte) 0x66 };
+ DataBuffer db = new DataBufferByte(b, 6);
+
+ // set a value
+ m1.setSample(0, 0, 1, 0x07, db);
+ m1.setSample(1, 0, 1, 0x08, db);
+ m1.setSample(0, 1, 1, 0x09, db);
+ m1.setSample(1, 1, 1, 0x0A, db);
+ m1.setSample(0, 2, 1, 0x0B, db);
+ m1.setSample(1, 2, 1, 0x0C, db);
+ harness.check(db.getElem(0), 0x17);
+ harness.check(db.getElem(1), 0x28);
+ harness.check(db.getElem(2), 0x39);
+ harness.check(db.getElem(3), 0x4A);
+ harness.check(db.getElem(4), 0x5B);
+ harness.check(db.getElem(5), 0x6C);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_BYTE, 2, 2, 3, new int[] { 0xF0, 0x0F }
+ );
+ m2.setSample(0, 0, 0, 0x04, db);
+ m2.setSample(1, 0, 0, 0x03, db);
+ m2.setSample(0, 1, 0, 0x02, db);
+ m2.setSample(1, 1, 0, 0x01, db);
+ m2.setSample(0, 0, 1, 0x01, db);
+ m2.setSample(1, 0, 1, 0x02, db);
+ m2.setSample(0, 1, 1, 0x03, db);
+ m2.setSample(1, 1, 1, 0x04, db);
+ harness.check(db.getElem(0), 0x41);
+ harness.check(db.getElem(1), 0x32);
+ harness.check(db.getElem(3), 0x23);
+ harness.check(db.getElem(4), 0x14);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setSample(-1, 0, 0, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setSample(0, -1, 0, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with sample index < 0
+ try
+ {
+ m1.setSample(0, 0, -1, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setSample(0, 0, 0, 0x01, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testUShort(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer(UShort))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ short[] s = new short[] { (short) 0x1111, (short) 0x2222, (short) 0x3333, (short) 0x4444, (short) 0x5555, (short) 0x6666 };
+ DataBuffer db = new DataBufferUShort(s, 6);
+
+ // set a value
+ m1.setSample(0, 0, 0, 0x00CC, db);
+ m1.setSample(1, 0, 0, 0x00BB, db);
+ m1.setSample(0, 1, 0, 0x00AA, db);
+ m1.setSample(1, 1, 0, 0x0099, db);
+ m1.setSample(0, 2, 0, 0x0088, db);
+ m1.setSample(1, 2, 0, 0x0077, db);
+ m1.setSample(0, 0, 1, 0x0077, db);
+ m1.setSample(1, 0, 1, 0x0088, db);
+ m1.setSample(0, 1, 1, 0x0099, db);
+ m1.setSample(1, 1, 1, 0x00AA, db);
+ m1.setSample(0, 2, 1, 0x00BB, db);
+ m1.setSample(1, 2, 1, 0x00CC, db);
+ harness.check(db.getElem(0), 0xCC77);
+ harness.check(db.getElem(1), 0xBB88);
+ harness.check(db.getElem(2), 0xAA99);
+ harness.check(db.getElem(3), 0x99AA);
+ harness.check(db.getElem(4), 0x88BB);
+ harness.check(db.getElem(5), 0x77CC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_USHORT, 2, 2, 3, new int[] { 0xFF00, 0x00FF }
+ );
+ m2.setSample(0, 0, 0, 0x0044, db);
+ m2.setSample(1, 0, 0, 0x0033, db);
+ m2.setSample(0, 1, 0, 0x0022, db);
+ m2.setSample(1, 1, 0, 0x0011, db);
+ m2.setSample(0, 0, 1, 0x0011, db);
+ m2.setSample(1, 0, 1, 0x0022, db);
+ m2.setSample(0, 1, 1, 0x0033, db);
+ m2.setSample(1, 1, 1, 0x0044, db);
+ harness.check(db.getElem(0), 0x4411);
+ harness.check(db.getElem(1), 0x3322);
+ harness.check(db.getElem(3), 0x2233);
+ harness.check(db.getElem(4), 0x1144);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setSample(-1, 0, 0, 0x0044, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setSample(0, -1, 0, 0x0044, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with sample index < 0
+ try
+ {
+ m1.setSample(0, 0, -1, 0x0044, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setSample(0, 0, 0, 0x0044, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, DataBuffer(Int))");
+ SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 3, new int[] { 0xFFFF0000, 0x0000FFFF }
+ );
+ int[] i = new int[] { 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666 };
+ DataBuffer db = new DataBufferInt(i, 6);
+
+ // set a value
+ m1.setSample(0, 0, 0, 0x00CC, db);
+ m1.setSample(1, 0, 0, 0x00BB, db);
+ m1.setSample(0, 1, 0, 0x00AA, db);
+ m1.setSample(1, 1, 0, 0x0099, db);
+ m1.setSample(0, 2, 0, 0x0088, db);
+ m1.setSample(1, 2, 0, 0x0077, db);
+ m1.setSample(0, 0, 1, 0x0077, db);
+ m1.setSample(1, 0, 1, 0x0088, db);
+ m1.setSample(0, 1, 1, 0x0099, db);
+ m1.setSample(1, 1, 1, 0x00AA, db);
+ m1.setSample(0, 2, 1, 0x00BB, db);
+ m1.setSample(1, 2, 1, 0x00CC, db);
+ harness.check(db.getElem(0), 0x00CC0077);
+ harness.check(db.getElem(1), 0x00BB0088);
+ harness.check(db.getElem(2), 0x00AA0099);
+ harness.check(db.getElem(3), 0x009900AA);
+ harness.check(db.getElem(4), 0x008800BB);
+ harness.check(db.getElem(5), 0x007700CC);
+
+ // set a value with non-standard scanline stride
+ SinglePixelPackedSampleModel m2 = new SinglePixelPackedSampleModel(
+ DataBuffer.TYPE_INT, 2, 2, 3, new int[] { 0xFFFF0000, 0x0000FFFF }
+ );
+ m2.setSample(0, 0, 0, 0x0044, db);
+ m2.setSample(1, 0, 0, 0x0033, db);
+ m2.setSample(0, 1, 0, 0x0022, db);
+ m2.setSample(1, 1, 0, 0x0011, db);
+ m2.setSample(0, 0, 1, 0x0011, db);
+ m2.setSample(1, 0, 1, 0x0022, db);
+ m2.setSample(0, 1, 1, 0x0033, db);
+ m2.setSample(1, 1, 1, 0x0044, db);
+ harness.check(db.getElem(0), 0x00440011);
+ harness.check(db.getElem(1), 0x00330022);
+ harness.check(db.getElem(3), 0x00220033);
+ harness.check(db.getElem(4), 0x00110044);
+
+ // set a value with x < 0
+ try
+ {
+ m1.setSample(-1, 0, 0, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with y < 0
+ try
+ {
+ m1.setSample(0, -1, 0, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with sample index < 0
+ try
+ {
+ m1.setSample(0, 0, -1, 0x10, db);
+ harness.check(false); // should not get here
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // set a value with null data buffer
+ try
+ {
+ m1.setSample(0, 0, 0, 0x10, null);
+ harness.check(false); // should not get here
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/awt/image/WritableRaster/CVS/Entries b/gnu/testlet/java/awt/image/WritableRaster/CVS/Entries
new file mode 100644
index 00000000..58a2f83a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/WritableRaster/CVS/Entries
@@ -0,0 +1,3 @@
+/createChild.java/1.1/Mon Nov 27 21:46:07 2006//
+/createWritableChild.java/1.1/Tue Oct 17 14:48:09 2006//
+D
diff --git a/gnu/testlet/java/awt/image/WritableRaster/CVS/Repository b/gnu/testlet/java/awt/image/WritableRaster/CVS/Repository
new file mode 100644
index 00000000..5cf046d5
--- /dev/null
+++ b/gnu/testlet/java/awt/image/WritableRaster/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/image/WritableRaster
diff --git a/gnu/testlet/java/awt/image/WritableRaster/CVS/Root b/gnu/testlet/java/awt/image/WritableRaster/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/image/WritableRaster/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/image/WritableRaster/createChild.java b/gnu/testlet/java/awt/image/WritableRaster/createChild.java
new file mode 100644
index 00000000..b8444c22
--- /dev/null
+++ b/gnu/testlet/java/awt/image/WritableRaster/createChild.java
@@ -0,0 +1,173 @@
+/* createChild.java -- some checks for the createChild() method
+ in the WritableRaster class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.WritableRaster;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.RasterFormatException;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+
+public class createChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testData(harness);
+ testBounds(harness);
+ testBands(harness);
+ }
+
+ private void testData(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Child raster
+ Raster rst2 = rst.createChild(10, 20, 25, 15, 0, 0, null);
+ harness.check(rst2 instanceof WritableRaster);
+ harness.check(rst2.getMinX(), 0);
+ harness.check(rst2.getMinY(), 0);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 0; x < 25; x++)
+ for (int y = 0; y < 15; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x+10 + y+20 + b);
+
+ // Offset child
+ rst2 = rst.createChild(10, 20, 25, 15, 30, 40, null);
+ harness.check(rst2.getMinX(), 30);
+ harness.check(rst2.getMinY(), 40);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 30; x < 55; x++)
+ for (int y = 40; y < 55; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x-20 + y-20 + b);
+ }
+
+ private void testBounds(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Width and height out of bounds
+ try
+ {
+ rst.createChild(10, 20, 100, 100, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+
+ // MinX and MinY out of bounds
+ try
+ {
+ // Create child with non-zero minX and minY
+ Raster rst2 = rst.createChild(0, 0, 25, 25, 30, 30, null);
+
+ // Create child's child with minX and minY out of bounds
+ rst2.createChild(10, 20, 10, 10, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testBands(TestHarness harness)
+ {
+ Raster rst = createRaster(harness);
+
+ // Copy all bands
+ Raster rst2 = rst.createChild(0, 0, 50, 40, 0, 0, null);
+ harness.check(rst2.getNumBands(), rst.getNumBands());
+
+ // Only first two bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{0, 1});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b);
+
+ // Only last two bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1, 2});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b+1);
+
+ // Only middle band
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1});
+ harness.check(rst2.getNumBands(), 1);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ harness.check(rst2.getSample(x, y, 0), x+y+1);
+
+ // Reverse order of bands
+ rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{2, 0});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ {
+ harness.check(rst2.getSample(x, y, 0), x+y+2);
+ harness.check(rst2.getSample(x, y, 1), x+y);
+ }
+ }
+
+ private Raster createRaster(TestHarness harness)
+ {
+ // Create initial raster
+ WritableRaster rst = Raster.createWritableRaster(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 50, 40,
+ new int[]{0xff0000, 0xff00, 0xff}),
+ new Point(0, 0));
+
+ // Fill with test data
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 3; b++)
+ rst.setSample(x, y, b, x+y+b);
+
+ return rst;
+ }
+}
diff --git a/gnu/testlet/java/awt/image/WritableRaster/createWritableChild.java b/gnu/testlet/java/awt/image/WritableRaster/createWritableChild.java
new file mode 100644
index 00000000..74db363a
--- /dev/null
+++ b/gnu/testlet/java/awt/image/WritableRaster/createWritableChild.java
@@ -0,0 +1,172 @@
+/* createWritableChild.java -- some checks for the createWritableChild() method
+ in the WritableRaster class.
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.WritableRaster;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.RasterFormatException;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+
+public class createWritableChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testData(harness);
+ testBounds(harness);
+ testBands(harness);
+ }
+
+ private void testData(TestHarness harness)
+ {
+ WritableRaster rst = createRaster();
+
+ // Child raster
+ WritableRaster rst2 = rst.createWritableChild(10, 20, 25, 15, 0, 0, null);
+ harness.check(rst2.getMinX(), 0);
+ harness.check(rst2.getMinY(), 0);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 0; x < 25; x++)
+ for (int y = 0; y < 15; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x+10 + y+20 + b);
+
+ // Offset child
+ rst2 = rst.createWritableChild(10, 20, 25, 15, 30, 40, null);
+ harness.check(rst2.getMinX(), 30);
+ harness.check(rst2.getMinY(), 40);
+ harness.check(rst2.getWidth(), 25);
+ harness.check(rst2.getHeight(), 15);
+
+ for (int x = 30; x < 55; x++)
+ for (int y = 40; y < 55; y++)
+ for (int b = 0; b < 3; b++)
+ harness.check(rst2.getSample(x, y, b), x-20 + y-20 + b);
+ }
+
+ private void testBounds(TestHarness harness)
+ {
+ WritableRaster rst = createRaster();
+
+ // Width and height out of bounds
+ try
+ {
+ rst.createChild(10, 20, 100, 100, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+
+ // MinX and MinY out of bounds
+ try
+ {
+ // Create child with non-zero minX and minY
+ WritableRaster rst2 = rst.createWritableChild(0, 0, 25, 25, 30, 30, null);
+
+ // Create child's child with minX and minY out of bounds
+ rst2.createChild(10, 20, 10, 10, 0, 0, null);
+ harness.check(false);
+ }
+ catch (RasterFormatException ex)
+ {
+ harness.check(true);
+ }
+ catch (Exception ex)
+ {
+ harness.check(false);
+ }
+ }
+
+ private void testBands(TestHarness harness)
+ {
+ WritableRaster rst = createRaster();
+
+ // Copy all bands
+ WritableRaster rst2 = rst.createWritableChild(0, 0, 50, 40, 0, 0, null);
+ harness.check(rst2.getNumBands(), rst.getNumBands());
+
+ // Only first two bands
+ rst2 = rst.createWritableChild(0, 0, 50, 40, 0, 0, new int[]{0, 1});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b);
+
+ // Only last two bands
+ rst2 = rst.createWritableChild(0, 0, 50, 40, 0, 0, new int[]{1, 2});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 2; b++)
+ harness.check(rst2.getSample(x, y, b), x+y+b+1);
+
+ // Only middle band
+ rst2 = rst.createWritableChild(0, 0, 50, 40, 0, 0, new int[]{1});
+ harness.check(rst2.getNumBands(), 1);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ harness.check(rst2.getSample(x, y, 0), x+y+1);
+
+ // Reverse order of bands
+ rst2 = rst.createWritableChild(0, 0, 50, 40, 0, 0, new int[]{2, 0});
+ harness.check(rst2.getNumBands(), 2);
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ {
+ harness.check(rst2.getSample(x, y, 0), x+y+2);
+ harness.check(rst2.getSample(x, y, 1), x+y);
+ }
+ }
+
+ private WritableRaster createRaster()
+ {
+ // Create initial raster
+ WritableRaster rst = Raster.createWritableRaster(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+ 50, 40,
+ new int[]{0xff0000, 0xff00, 0xff}),
+ new Point(0, 0));
+
+ // Fill with test data
+ for (int x = 0; x < 50; x++)
+ for (int y = 0; y < 40; y++)
+ for (int b = 0; b < 3; b++)
+ rst.setSample(x, y, b, x+y+b);
+
+ return rst;
+ }
+}
diff --git a/gnu/testlet/java/awt/print/CVS/Entries b/gnu/testlet/java/awt/print/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/print/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/print/CVS/Entries.Log b/gnu/testlet/java/awt/print/CVS/Entries.Log
new file mode 100644
index 00000000..ce9dc965
--- /dev/null
+++ b/gnu/testlet/java/awt/print/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/PrinterJob////
diff --git a/gnu/testlet/java/awt/print/CVS/Repository b/gnu/testlet/java/awt/print/CVS/Repository
new file mode 100644
index 00000000..4db436e4
--- /dev/null
+++ b/gnu/testlet/java/awt/print/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/print
diff --git a/gnu/testlet/java/awt/print/CVS/Root b/gnu/testlet/java/awt/print/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/print/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/print/PrinterJob/CVS/Entries b/gnu/testlet/java/awt/print/PrinterJob/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/awt/print/PrinterJob/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/awt/print/PrinterJob/CVS/Repository b/gnu/testlet/java/awt/print/PrinterJob/CVS/Repository
new file mode 100644
index 00000000..58b43073
--- /dev/null
+++ b/gnu/testlet/java/awt/print/PrinterJob/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/awt/print/PrinterJob
diff --git a/gnu/testlet/java/awt/print/PrinterJob/CVS/Root b/gnu/testlet/java/awt/print/PrinterJob/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/awt/print/PrinterJob/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/awt/testName.java b/gnu/testlet/java/awt/testName.java
new file mode 100644
index 00000000..60754fe4
--- /dev/null
+++ b/gnu/testlet/java/awt/testName.java
@@ -0,0 +1,183 @@
+/* testName.java --
+ Copyright (C) 2006 RedHat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK 1.4E
+
+package gnu.testlet.java.awt;
+
+import java.awt.CheckboxMenuItem;
+import java.awt.Choice;
+import java.awt.Cursor;
+import java.awt.Font;
+import java.awt.List;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+import java.awt.PopupMenu;
+import java.awt.ScrollPane;
+import java.awt.TextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testName implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Choice a0 = new Choice();
+ Choice a1 = new Choice();
+ Choice a2 = new Choice();
+ harness.check(a0.getName(), "choice0");
+ harness.check(a1.getName(), "choice1");
+ harness.check(a2.getName(), "choice2");
+ Choice a3 = new Choice();
+ Choice a4 = new Choice();
+ Choice a5 = new Choice();
+ harness.check(a5.getName(), "choice3");
+ harness.check(a4.getName(), "choice4");
+ harness.check(a3.getName(), "choice5");
+
+ CheckboxMenuItem b0 = new CheckboxMenuItem();
+ CheckboxMenuItem b1 = new CheckboxMenuItem();
+ CheckboxMenuItem b2 = new CheckboxMenuItem();
+ harness.check(b0.getName(), "chkmenuitem0");
+ harness.check(b1.getName(), "chkmenuitem1");
+ harness.check(b2.getName(), "chkmenuitem2");
+ CheckboxMenuItem b5 = new CheckboxMenuItem();
+ CheckboxMenuItem b4 = new CheckboxMenuItem();
+ CheckboxMenuItem b3 = new CheckboxMenuItem();
+ harness.check(b5.getName(), "chkmenuitem3");
+ harness.check(b4.getName(), "chkmenuitem4");
+ harness.check(b3.getName(), "chkmenuitem5");
+
+ List c0 = new List();
+ List c1 = new List();
+ List c2 = new List();
+ harness.check(c0.getName(), "list0");
+ harness.check(c1.getName(), "list1");
+ harness.check(c2.getName(), "list2");
+ List c3 = new List();
+ List c4 = new List();
+ List c5 = new List();
+ harness.check(c5.getName(), "list3");
+ harness.check(c4.getName(), "list4");
+ harness.check(c3.getName(), "list5");
+
+ MenuBar d0 = new MenuBar();
+ MenuBar d1 = new MenuBar();
+ MenuBar d2 = new MenuBar();
+ harness.check(d0.getName(), "menubar0");
+ harness.check(d1.getName(), "menubar1");
+ harness.check(d2.getName(), "menubar2");
+ MenuBar d3 = new MenuBar();
+ MenuBar d4 = new MenuBar();
+ MenuBar d5 = new MenuBar();
+ harness.check(d5.getName(), "menubar3");
+ harness.check(d4.getName(), "menubar4");
+ harness.check(d3.getName(), "menubar5");
+
+ MenuItem e0 = new MenuItem();
+ MenuItem e1 = new MenuItem();
+ MenuItem e2 = new MenuItem();
+ harness.check(e0.getName(), "menuitem0");
+ harness.check(e1.getName(), "menuitem1");
+ harness.check(e2.getName(), "menuitem2");
+ MenuItem e3 = new MenuItem();
+ MenuItem e4 = new MenuItem();
+ MenuItem e5 = new MenuItem();
+ harness.check(e5.getName(), "menuitem3");
+ harness.check(e4.getName(), "menuitem4");
+ harness.check(e3.getName(), "menuitem5");
+
+ Menu f0 = new Menu();
+ Menu f1 = new Menu();
+ Menu f2 = new Menu();
+ harness.check(f0.getName(), "menu0");
+ harness.check(f1.getName(), "menu1");
+ harness.check(f2.getName(), "menu2");
+ Menu f3 = new Menu();
+ Menu f4 = new Menu();
+ Menu f5 = new Menu();
+ harness.check(f5.getName(), "menu3");
+ harness.check(f4.getName(), "menu4");
+ harness.check(f3.getName(), "menu5");
+
+ PopupMenu g0 = new PopupMenu();
+ PopupMenu g1 = new PopupMenu();
+ PopupMenu g2 = new PopupMenu();
+ harness.check(g0.getName(), "popup0");
+ harness.check(g1.getName(), "popup1");
+ harness.check(g2.getName(), "popup2");
+ PopupMenu g3 = new PopupMenu();
+ PopupMenu g4 = new PopupMenu();
+ PopupMenu g5 = new PopupMenu();
+ harness.check(g5.getName(), "popup3");
+ harness.check(g4.getName(), "popup4");
+ harness.check(g3.getName(), "popup5");
+
+ ScrollPane h0 = new ScrollPane();
+ ScrollPane h1 = new ScrollPane();
+ ScrollPane h2 = new ScrollPane();
+ harness.check(h0.getName(), "scrollpane0");
+ harness.check(h1.getName(), "scrollpane1");
+ harness.check(h2.getName(), "scrollpane2");
+ ScrollPane h3 = new ScrollPane();
+ ScrollPane h4 = new ScrollPane();
+ ScrollPane h5 = new ScrollPane();
+ harness.check(h5.getName(), "scrollpane3");
+ harness.check(h4.getName(), "scrollpane4");
+ harness.check(h3.getName(), "scrollpane5");
+
+ TextField i0 = new TextField();
+ TextField i1 = new TextField();
+ TextField i2 = new TextField();
+ harness.check(i0.getName(), "textfield0");
+ harness.check(i1.getName(), "textfield1");
+ harness.check(i2.getName(), "textfield2");
+ TextField i3 = new TextField();
+ TextField i4 = new TextField();
+ TextField i5 = new TextField();
+ harness.check(i5.getName(), "textfield3");
+ harness.check(i4.getName(), "textfield4");
+ harness.check(i3.getName(), "textfield5");
+
+ harness.check((new Cursor(0)).getName(), "Default Cursor");
+ harness.check((new Cursor(1)).getName(), "Crosshair Cursor");
+ harness.check((new Cursor(2)).getName(), "Text Cursor");
+ harness.check((new Cursor(3)).getName(), "Wait Cursor");
+ harness.check((new Cursor(4)).getName(), "Southwest Resize Cursor");
+ harness.check((new Cursor(5)).getName(), "Southeast Resize Cursor");
+ harness.check((new Cursor(6)).getName(), "Northwest Resize Cursor");
+ harness.check((new Cursor(7)).getName(), "Northeast Resize Cursor");
+ harness.check((new Cursor(8)).getName(), "North Resize Cursor");
+ harness.check((new Cursor(9)).getName(), "South Resize Cursor");
+ harness.check((new Cursor(10)).getName(), "West Resize Cursor");
+ harness.check((new Cursor(11)).getName(), "East Resize Cursor");
+ harness.check((new Cursor(12)).getName(), "Hand Cursor");
+ harness.check((new Cursor(13)).getName(), "Move Cursor");
+
+ Font j = new Font(null, 0, 0);
+ harness.check(j.getName(), "Default");
+ harness.check(j.getFontName(), "Dialog.plain");
+ }
+
+}
diff --git a/gnu/testlet/java/beans/.cvsignore b/gnu/testlet/java/beans/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/beans/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/beans/Beans/CVS/Entries b/gnu/testlet/java/beans/Beans/CVS/Entries
new file mode 100644
index 00000000..013a6608
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/CVS/Entries
@@ -0,0 +1,6 @@
+/TestBean1.java/1.2/Sun Dec 19 21:04:28 2004//
+/TestBean2.java/1.2/Sun Dec 19 21:04:28 2004//
+/TestBean3.java/1.2/Sun Dec 19 21:04:28 2004//
+/TestBean4.java/1.2/Sun Dec 19 21:04:28 2004//
+/instantiate_1.java/1.4/Thu Apr 28 07:44:22 2005//
+D
diff --git a/gnu/testlet/java/beans/Beans/CVS/Repository b/gnu/testlet/java/beans/Beans/CVS/Repository
new file mode 100644
index 00000000..8984a342
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Beans
diff --git a/gnu/testlet/java/beans/Beans/CVS/Root b/gnu/testlet/java/beans/Beans/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Beans/TestBean1.java b/gnu/testlet/java/beans/Beans/TestBean1.java
new file mode 100644
index 00000000..bd97a55e
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/TestBean1.java
@@ -0,0 +1,35 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.Beans;
+
+/** If this class is instantiated using <code>java.bean.Beans.instantiate</code>
+ * an <code>ClassNotFoundException</code> is thrown which has an
+ * <code>IllegalAccessException</code> as its cause.
+ * <p>This is true for >=1.5 only.</p>
+ *
+ * @author Robert Schuster
+ */
+
+public class TestBean1 {
+
+ private TestBean1() {
+ // Instantiation will fail with an IllegalAccessException.
+ }
+}
diff --git a/gnu/testlet/java/beans/Beans/TestBean2.java b/gnu/testlet/java/beans/Beans/TestBean2.java
new file mode 100644
index 00000000..f3fb3118
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/TestBean2.java
@@ -0,0 +1,42 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.Beans;
+
+/** If this bean class is instantiated with
+ * <code>java.beans.Beans.instantiate</code> the operation
+ * will fail with a <code>RuntimeException</code> wrapped in a
+ * <code>ClassNotFoundException</code>.
+ * <p>This is true for >=1.5 only.</p>
+ *
+ * @author Robert Schuster
+ */
+public class TestBean2
+{
+
+ public TestBean2() {
+ /* Throwing a RuntimeException will let every
+ * reflective instantantiation fail with an
+ * InstantiationException.
+ */
+ throw new RuntimeException();
+ }
+
+
+}
diff --git a/gnu/testlet/java/beans/Beans/TestBean3.java b/gnu/testlet/java/beans/Beans/TestBean3.java
new file mode 100644
index 00000000..b64b2cde
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/TestBean3.java
@@ -0,0 +1,34 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.Beans;
+
+/** If this bean is instantiated this will fail with a InstantiationException since
+ * it does not provide a zero-argument constructor.
+ *
+ * @author Robert Schuster
+ */
+public class TestBean3
+{
+
+ public TestBean3(int i) {
+ }
+
+
+}
diff --git a/gnu/testlet/java/beans/Beans/TestBean4.java b/gnu/testlet/java/beans/Beans/TestBean4.java
new file mode 100644
index 00000000..2f5aca90
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/TestBean4.java
@@ -0,0 +1,38 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.Beans;
+
+/** Constructor throws a specific Error subclass that should not
+ * be intercepted by <code>java.beans.Beans.instantiate</code>.
+ *
+ * @author Robert Schuster
+ */
+public class TestBean4
+{
+
+ public TestBean4() {
+ throw new TestBean4.Error();
+ }
+
+
+ static final class Error extends java.lang.Error {
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Beans/instantiate_1.java b/gnu/testlet/java/beans/Beans/instantiate_1.java
new file mode 100644
index 00000000..d75df207
--- /dev/null
+++ b/gnu/testlet/java/beans/Beans/instantiate_1.java
@@ -0,0 +1,123 @@
+// Tags: JDK1.2
+// Uses: TestBean1 TestBean2 TestBean3 TestBean4
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.Beans;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.beans.Beans;
+
+/** Various <code>java.beans.Beans.instantiate</code> tests.
+ *
+ * @author Robert Schuster
+ */
+public class instantiate_1 implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ ClassLoader cl = getClass().getClassLoader();
+
+ /** Tries to instantiate a Bean with a <code>private</code>
+ * constructor and expects an <code>IllegalAccessException</code>
+ * wrapped in an <code>ClassNotFoundException</code> to be thrown.
+ */
+ try
+ {
+ Beans.instantiate(cl, "gnu.testlet.java.beans.Beans.TestBean1");
+
+ // If this is called then the instantiation succeeded.
+ harness.fail("Private constructor 1");
+ }
+ catch (Exception e)
+ {
+ harness.check(
+ e instanceof ClassNotFoundException,
+ "Private constructor 2");
+ harness.check(
+ e.getCause() instanceof IllegalAccessException,
+ "Private constructor 3");
+ }
+
+ /** Tries to instantiate a Bean that throws a RuntimeException
+ * in its constructor and expects an <code>RuntimeException</code>
+ * wrapped in an <code>ClassNotFoundException</code> to be thrown.
+ */
+ try
+ {
+ Beans.instantiate(cl, "gnu.testlet.java.beans.Beans.TestBean2");
+
+ // If this is called then the instantiation succeeded.
+ harness.fail("Exception in Constructor 1");
+ }
+ catch (Exception e)
+ {
+ harness.check(
+ e instanceof ClassNotFoundException,
+ "Exception in Constructor 2");
+
+ harness.check(
+ e.getCause() instanceof RuntimeException,
+ "Exception in Constructor 3");
+ }
+
+ /** TestBean3 does not provide a zero-argument constructor. This results in
+ * an InstantiationException that is wrapped in a ClassNotFoundException.
+ */
+ try
+ {
+ Beans.instantiate(cl, "gnu.testlet.java.beans.Beans.TestBean3");
+
+ // If this is called then the instantiation succeeded.
+ harness.fail("Missing zero-argument constructor 1");
+ }
+ catch (Exception e)
+ {
+ harness.check(
+ e instanceof ClassNotFoundException,
+ "Missing zero-argument constructor 2");
+
+ harness.check(
+ e.getCause() instanceof InstantiationException,
+ "Missing zero-argument constructor 3");
+ }
+
+ /* TestBean4 throws a specific TestBean4.Error. The Bean.instantiate
+ * method should not intercept this. That means we can catch the
+ * the TestBean4.Error instance here.
+ */
+ try
+ {
+ Beans.instantiate(cl, "gnu.testlet.java.beans.Beans.TestBean4");
+
+ // If this is called then the instantiation succeeded.
+ harness.fail("specific Error in constructor 1");
+ }
+ catch (TestBean4.Error _)
+ {
+ harness.check(true, "specific Error in constructor 2");
+ }
+ catch(Exception e) {
+ harness.fail("specific Error in constructor 3");
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/beans/CVS/Entries b/gnu/testlet/java/beans/CVS/Entries
new file mode 100644
index 00000000..ce04b8c5
--- /dev/null
+++ b/gnu/testlet/java/beans/CVS/Entries
@@ -0,0 +1,2 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:33 1998//
+D
diff --git a/gnu/testlet/java/beans/CVS/Entries.Log b/gnu/testlet/java/beans/CVS/Entries.Log
new file mode 100644
index 00000000..ab507e08
--- /dev/null
+++ b/gnu/testlet/java/beans/CVS/Entries.Log
@@ -0,0 +1,16 @@
+A D/Beans////
+A D/DesignMode////
+A D/EventHandler////
+A D/EventSetDescriptor////
+A D/Expression////
+A D/FeatureDescriptor////
+A D/Introspector////
+A D/MethodDescriptor////
+A D/PropertyChangeSupport////
+A D/PropertyDescriptor////
+A D/PropertyEditorSupport////
+A D/SimpleBeanInfo////
+A D/Statement////
+A D/VetoableChangeSupport////
+A D/XMLDecoder////
+A D/beancontext////
diff --git a/gnu/testlet/java/beans/CVS/Repository b/gnu/testlet/java/beans/CVS/Repository
new file mode 100644
index 00000000..e2007171
--- /dev/null
+++ b/gnu/testlet/java/beans/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans
diff --git a/gnu/testlet/java/beans/CVS/Root b/gnu/testlet/java/beans/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/DesignMode/CVS/Entries b/gnu/testlet/java/beans/DesignMode/CVS/Entries
new file mode 100644
index 00000000..9b8bbeee
--- /dev/null
+++ b/gnu/testlet/java/beans/DesignMode/CVS/Entries
@@ -0,0 +1,2 @@
+/constants.java/1.1/Thu Nov 16 05:19:50 2006//
+D
diff --git a/gnu/testlet/java/beans/DesignMode/CVS/Repository b/gnu/testlet/java/beans/DesignMode/CVS/Repository
new file mode 100644
index 00000000..384745c3
--- /dev/null
+++ b/gnu/testlet/java/beans/DesignMode/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/DesignMode
diff --git a/gnu/testlet/java/beans/DesignMode/CVS/Root b/gnu/testlet/java/beans/DesignMode/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/DesignMode/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/DesignMode/constants.java b/gnu/testlet/java/beans/DesignMode/constants.java
new file mode 100644
index 00000000..093b079f
--- /dev/null
+++ b/gnu/testlet/java/beans/DesignMode/constants.java
@@ -0,0 +1,38 @@
+/* constants.java -- checks for the constants in the DesignMode
+ interface.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.DesignMode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.DesignMode;
+
+public class constants implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.check(DesignMode.PROPERTYNAME, "designTime");
+ }
+}
diff --git a/gnu/testlet/java/beans/EventHandler/CVS/Entries b/gnu/testlet/java/beans/EventHandler/CVS/Entries
new file mode 100644
index 00000000..77936fd6
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/CVS/Entries
@@ -0,0 +1,5 @@
+/check.java/1.3/Mon Apr 11 13:08:00 2005//
+/check14.java/1.7/Fri Jul 24 12:39:41 2009//
+/check14b.java/1.2/Mon Apr 11 13:08:00 2005//
+/check14c.java/1.4/Fri Jul 24 12:30:37 2009//
+D
diff --git a/gnu/testlet/java/beans/EventHandler/CVS/Repository b/gnu/testlet/java/beans/EventHandler/CVS/Repository
new file mode 100644
index 00000000..13401cca
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/EventHandler
diff --git a/gnu/testlet/java/beans/EventHandler/CVS/Root b/gnu/testlet/java/beans/EventHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/EventHandler/check.java b/gnu/testlet/java/beans/EventHandler/check.java
new file mode 100644
index 00000000..782eb6a8
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/check.java
@@ -0,0 +1,243 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.EventHandler;
+
+import java.beans.EventHandler;
+import java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * <p>This tests whether the EventHandler implementation calls the right methods when there are multiple
+ * possibilities.</p>
+ */
+public class check implements Testlet {
+
+ public interface Listener {
+
+ void listen();
+
+ void listen(Object o);
+
+ void listen(String m);
+ }
+
+ public class Event {
+ public boolean isBooleanValue() {
+ return true;
+ }
+
+ public BigInteger getBigValue() {
+ return new BigInteger("903281390123809123");
+ }
+
+ public int getIntValue() {
+ return 0xDEADBEEF;
+ }
+ }
+
+ public class EventSub extends Event {
+
+ }
+
+ public interface Listener2 {
+ // The check. prefix is a workaround for a Jikes bug.
+ public void listen(check.Event e);
+ }
+
+ private boolean noArgMethodCalled;
+ private boolean objectArgMethodCalled;
+ private boolean stringArgMethodCalled;
+ private boolean numberArgMethodCalled;
+
+ private boolean calledSetter;
+
+ public void test(TestHarness harness) {
+ Listener l = (Listener)
+ EventHandler.create(Listener.class, this, "targetMethod");
+
+ l.listen();
+ harness.check(noArgMethodCalled, true, "prefer no arg method");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ l.listen(new Object());
+ harness.check(noArgMethodCalled, true, "prefer no arg method (Object given)");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ l.listen("GNU!");
+ harness.check(noArgMethodCalled, true, "prefer no arg method (String given)");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // We try to apply the value from the "eventValue" property of the Event
+ // object to the target object (= this) by using its "value" property.
+ // This tests whether the implementation properly retrieves the 'setValue'
+ // method when it is given as a property name.
+ Listener2 l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "value", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(calledSetter, true, "setter invoked as property");
+ calledSetter = false;
+
+ // Now we do the same test but use a subclass of Event. Though the
+ // implementation should be able to find the "eventValue" property.
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // This is basically the same test as above but now the target method
+ // has to be found via a method name instead of a property name.
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(calledSetter, true, "setter invoked as method");
+
+ // The situation is that we have a BigInteger value but no "targetValue" property
+ // of that type (ie. no setTargetValue(BigInteger) method). However the implementation
+ // should find the property with Object-type of the same name instead and use the
+ // corresponding method. It is important that we do not use a primitive for this test.
+ harness.checkPoint("replacement for BigInteger property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "targetValue", "bigValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Now the same test with a boolean property. The reason for a special test
+ // is that internally booleans are represented by Boolean.TYPE.
+ // The funny thing is that Boolean.TYPE.getSuperclass() is null but the
+ // EventHandler mechanism should nevertheless find an Object property and
+ // its method.
+ harness.checkPoint("replacement for boolean property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "targetValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Again the same kind of test but now the property is an int and the expected
+ // property method has a 'java.lang.Number' argument. Again the internally used
+ // Integer.TYPE superclass is null and not Number.
+ harness.checkPoint("replacement for integer property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "numberValue", "intValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+
+ // Repeats the BigInteger test but uses an explicit method name instead of a property.
+ harness.checkPoint("replacement for BigInteger method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setTargetValue", "bigValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Same as boolean test but uses method name instead of property name.
+ harness.checkPoint("replacement for boolean method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setTargetValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Same as integer test but uses method name instead of property name.
+ harness.checkPoint("replacement for integer method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setNumberValue", "intValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+ }
+
+ public void targetMethod() {
+ noArgMethodCalled = true;
+ }
+
+ public void targetMethod(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void targetMethod(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setTargetValue() {
+ noArgMethodCalled = true;
+ }
+
+ public void setTargetValue(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void setTargetValue(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setNumberValue() {
+ noArgMethodCalled = true;
+ }
+
+ public void setNumberValue(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void setNumberValue(Number n) {
+ numberArgMethodCalled = true;
+ }
+
+ public void setNumberValue(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setValue(boolean arg) {
+ calledSetter = arg;
+ }
+}
diff --git a/gnu/testlet/java/beans/EventHandler/check14.java b/gnu/testlet/java/beans/EventHandler/check14.java
new file mode 100644
index 00000000..b822fc39
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/check14.java
@@ -0,0 +1,232 @@
+// Test EventHandler.check14().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.4
+
+// Test features added by JDK 1.4
+
+package gnu.testlet.java.beans.EventHandler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.EventHandler;
+import java.lang.reflect.Method;
+
+/**
+ * <p>Basic tests for the <code>EventHandler</code></p>
+ */
+public class check14 implements Testlet
+{
+ // Inner classes because compilation complains it can't find the files
+ // otherwise
+ public class Target
+ {
+ public boolean flag;
+ public String str;
+
+ public Target() { flag = false; str = null; }
+ public void reset() { flag = false; str = null; }
+
+ // Test that null eventPropertyName activates this
+ public void action1() { flag = true; }
+
+ // Test that moving whole objects works
+ public void action(Event e) { str = e.getD(); flag = e.isB(); }
+ // To test that wrapper handling works
+ public void setAction(boolean b) { flag = b; }
+ // To test that basic properties work
+ public void setAction(String s) { str = s; }
+ // To test event forwarding.
+ public void setEventProperty(Event e) { str = e.getD(); flag = e.isB(); }
+ }
+
+ public class Event
+ {
+ public Object getA() { return this; }
+ public boolean isB() { return true; }
+ public Object getC() { return this; }
+ public String getD() { return "yes"; }
+ }
+
+ public interface Listener
+ {
+ public void listen1(check14.Event x);
+ public void listen2(check14.Event x);
+ }
+
+ /* A Listener interface without arguments in the methods. */
+ public interface Listener2
+ {
+ public void listen1();
+ public void listen2();
+ }
+
+ public static int x = 0;
+
+ /* A variable that has to be set by calling itself. */
+ public boolean called;
+
+ public void test (TestHarness harness)
+ {
+ Target target = new Target();
+ Event ev = new Event();
+
+ // Basic event handler value tests
+ EventHandler eh = new EventHandler(target, "action", "a.c.b", "listen1");
+
+ // Note: Referential equality works because all String instances where available at compilation time
+ harness.check(eh.getAction() == "action", "Check basic settings");
+ harness.check(eh.getEventPropertyName() == "a.c.b");
+ harness.check(eh.getListenerMethodName() == "listen1");
+ harness.check(eh.getTarget() == target);
+
+ // Simple invoke test
+ Method listen1 = null;
+ Method listen2 = null;
+ try
+ {
+ listen1 = Listener.class.getMethod("listen1",
+ new Class[] {Event.class});
+ listen2 = Listener.class.getMethod("listen2",
+ new Class[] {Event.class});
+ }
+ catch (Exception e)
+ {
+ harness.fail("No listener methods - test is broken");
+ }
+ harness.check(target.flag == false, "Test invoke");
+
+ try
+ {
+ eh.invoke(null, listen1, new Object[] {ev});
+ }
+ catch (Exception e)
+ {
+ harness.fail("Invoke listen1 failed " + e.toString());
+ }
+ harness.check(target.flag == true, "Invoke listen1 test");
+ target.reset();
+
+ try
+ {
+ eh.invoke(null, listen2, new Object[] {ev});
+ }
+ catch (Exception e)
+ {
+ harness.fail("Invoke listen2 failed " + e.toString());
+ }
+ harness.check(target.flag == false, "Invoke listen2 test");
+ target.reset();
+
+ // Static create tests
+ Listener o1 = (Listener) EventHandler.create(Listener.class,
+ target, "action", "");
+ try
+ {
+ o1.listen1(ev);
+ }
+ catch(Exception e)
+ {
+ harness.fail("Invoke listen1 failed " + e.toString());
+ }
+ harness.check(target.flag == true, "Test null event property");
+ target.reset();
+
+ try
+ {
+ o1.listen2(ev);
+ }
+ catch(Exception e)
+ {
+ harness.fail("Invoke listen1 failed " + e.toString());
+ }
+ harness.check(target.flag == true);
+ harness.check(target.str == "yes");
+ target.reset();
+
+ /* Listener methods may have no arguments, too. This tests whether these methods
+ * are properly implemented when calling the static create methods of EventHandler.
+ */
+ Listener2 l2 = (Listener2) EventHandler.create(Listener2.class, target, "action1");
+ l2.listen1();
+ harness.check(target.flag, true, "no argument listener method");
+ target.reset();
+
+ l2.listen2();
+ harness.check(target.flag, true);
+ target.reset();
+
+ Listener o2 = (Listener) EventHandler.create(Listener.class,
+ target, "action1");
+ o2.listen1(ev);
+ harness.check(target.flag == true, "Test action with no parameter");
+ harness.check(target.str == null);
+ target.reset();
+
+ o2.listen2(ev);
+ harness.check(target.flag == true);
+ harness.check(target.str == null);
+ target.reset();
+
+
+ Listener o3 = (Listener) EventHandler.create(Listener.class, target,
+ "action", "a.c.d");
+ o3.listen1(ev);
+ harness.check(target.flag == false, "Test null listener");
+ harness.check(target.str == "yes");
+ target.reset();
+
+ o3.listen2(ev);
+ harness.check(target.flag == false, "Test null listener");
+ harness.check(target.str == "yes");
+ target.reset();
+
+
+ Listener o4 = (Listener) EventHandler.create(Listener.class, target,
+ "action", "a.c.d", "listen2");
+ o4.listen1(ev);
+ harness.check(target.flag == false, "Test full, ignore listen1");
+ harness.check(target.str == null);
+ target.reset();
+
+ o4.listen2(ev);
+ harness.check(target.flag == false, "Test full, invoke listen2");
+ harness.check(target.str == "yes");
+ target.reset();
+
+ // Make sure created objects actually implement Listener, not just the
+ // method.
+ Object o5 = EventHandler.create(Listener.class, target, "action");
+ Class ifs[] = o5.getClass().getInterfaces();
+ boolean found = false;
+ for (int i=0; i < ifs.length; i++)
+ if (ifs[i] == Listener.class)
+ found = true;
+
+ harness.check(found == true, "Proxy implements Listener");
+
+ }
+
+ public void targetMethod() {
+ called = true;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/EventHandler/check14b.java b/gnu/testlet/java/beans/EventHandler/check14b.java
new file mode 100644
index 00000000..580badbf
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/check14b.java
@@ -0,0 +1,405 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.EventHandler;
+
+import java.beans.EventHandler;
+import java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * <p>This tests more complex behavior of the <code>EventHandler</code></p>
+ */
+public class check14b implements Testlet {
+
+ public interface Listener {
+
+ void listen();
+
+ void listen(Object o);
+
+ void listen(String m);
+ }
+
+ public class Event {
+ public boolean isBooleanValue() {
+ return true;
+ }
+
+ public BigInteger getBigValue() {
+ return new BigInteger("903281390123809123");
+ }
+
+ public int getIntValue() {
+ return 0xDEADBEEF;
+ }
+
+ public Integer getIntegerValue() {
+ return new Integer(0xDEADBEEF);
+ }
+ }
+
+ public class EventSub extends Event {
+
+ boolean method = false;
+ boolean property = false;
+
+ public EventSub getSelf() {
+ method = true;
+
+ return this;
+ }
+
+ public EventSub getGetSelf() {
+ property = true;
+
+ return this;
+ }
+
+ }
+
+ public interface Listener2 {
+ // The check. prefix is a workaround for a Jikes bug.
+ public void listen(check14b.Event e);
+ }
+
+ private boolean noArgMethodCalled;
+ private boolean objectArgMethodCalled;
+ private boolean stringArgMethodCalled;
+ private boolean numberArgMethodCalled;
+
+ private boolean calledSetter;
+
+ public void test(TestHarness harness) {
+ Listener l = (Listener)
+ EventHandler.create(Listener.class, this, "targetMethod");
+
+ l.listen();
+ harness.check(noArgMethodCalled, true, "prefer no arg method");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ l.listen(new Object());
+ harness.check(noArgMethodCalled, true, "prefer no arg method (Object given)");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ l.listen("GNU!");
+ harness.check(noArgMethodCalled, true, "prefer no arg method (String given)");
+ harness.check(objectArgMethodCalled, false);
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // We try to apply the value from the "eventValue" property of the Event
+ // object to the target object (= this) by using its "value" property.
+ // This tests whether the implementation properly retrieves the 'setValue'
+ // method when it is given as a property name.
+ Listener2 l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "value", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(calledSetter, true, "setter invoked as property");
+ calledSetter = false;
+
+ // Now we do the same test but use a subclass of Event. Though the
+ // implementation should be able to find the "eventValue" property.
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // This is basically the same test as above but now the target method
+ // has to be found via a method name instead of a property name.
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(calledSetter, true, "setter invoked as method");
+
+ // The situation is that we have a BigInteger value but no "targetValue" property
+ // of that type (ie. no setTargetValue(BigInteger) method). However the implementation
+ // should find the property with Object-type of the same name instead and use the
+ // corresponding method. It is important that we do not use a primitive for this test.
+ harness.checkPoint("replacement for BigInteger property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "targetValue", "bigValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Now the same test with a boolean property. The reason for a special test
+ // is that internally booleans are represented by Boolean.TYPE.
+ // The funny thing is that Boolean.TYPE.getSuperclass() is null but the
+ // EventHandler mechanism should nevertheless find an Object property and
+ // its method.
+ harness.checkPoint("replacement for boolean property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "targetValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Again the same kind of test but now the property is an int and the expected
+ // property method has a 'java.lang.Number' argument. Again the internally used
+ // Integer.TYPE superclass is null and not Number.
+ harness.checkPoint("replacement for integer property");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "numberValue", "intValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+
+ // Repeats the BigInteger test but uses an explicit method name instead of a property.
+ harness.checkPoint("replacement for BigInteger method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setTargetValue", "bigValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Same as boolean test but uses method name instead of property name.
+ harness.checkPoint("replacement for boolean method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setTargetValue", "booleanValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = false;
+
+ // Same as integer test but uses method name instead of property name.
+ harness.checkPoint("replacement for integer method");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setNumberValue", "intValue", null);
+
+ l2.listen(new Event());
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+
+ // The EventHandler supports method names in the property string as well.
+ // This tests whether the implementation evaluates this properly.
+ harness.checkPoint("property as method names");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setNumberValue", "getSelf.getIntValue", null);
+
+ boolean exceptionThrown = false;
+ try {
+ l2.listen(new EventSub());
+ } catch(Exception e) {
+ exceptionThrown = true;
+ }
+ harness.check(exceptionThrown, false);
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+
+ // The EventHandler can even use a mix of method names and property names. This tests
+ // the implementation's support for this.
+ harness.checkPoint("property and method names");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setNumberValue", "self.getSelf.self.getSelf.intValue", null);
+
+ exceptionThrown = false;
+ try {
+ l2.listen(new EventSub());
+ } catch(Exception e) {
+ exceptionThrown = true;
+ }
+ harness.check(exceptionThrown, false);
+ harness.check(noArgMethodCalled, false);
+ harness.check(objectArgMethodCalled, false);
+ harness.check(numberArgMethodCalled, true); // -> this one should be called
+ harness.check(stringArgMethodCalled, false);
+ noArgMethodCalled = objectArgMethodCalled = stringArgMethodCalled = numberArgMethodCalled = false;
+
+ // This simply checks that in case of ambiguity ("getSelf" as a method and as a property available)
+ // the property variant is preferred.
+ harness.checkPoint("name ambiguity preference");
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setNumberValue", "getSelf.intValue", null);
+ EventSub event = new EventSub();
+
+ l2.listen(event);
+ harness.check(event.property, true);
+ harness.check(event.method, false);
+
+
+ harness.checkPoint("primitive to wrapper");
+ calledSetter = false;
+ // This tests automatic primitive to wrapper conversion. That means the value retrieved from
+ // the event object is a primitive one and the target accepts it as an instance of a wrapper
+ // class.
+ // The 4 subtests check that the target and the source can use the property name as well
+ // as the method name.
+
+ // source: property name
+ // target: property name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "integerValue", "intValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: property name
+ // target: method name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setIntegerValue", "intValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: method name
+ // target: method name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setIntegerValue", "getIntValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: method name
+ // target: property name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "integerValue", "getIntValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ harness.checkPoint("wrapper to primitive");
+ // The following 4 tests check whether the property conversion works the other
+ // way to. Now the value retrieved from the event object is an instance of a
+ // wrapper class and the target accepts a primitive.
+
+ // source: property name
+ // target: property name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "intValue", "integerValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: property name
+ // target: method name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setIntValue", "integerValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: method name
+ // target: method name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "setIntValue", "getIntegerValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+
+ // source: method name
+ // target: property name
+ l2 = (Listener2)
+ EventHandler.create(Listener2.class, this, "intValue", "getIntegerValue");
+
+ l2.listen(new EventSub());
+ harness.check(calledSetter, true);
+ calledSetter = false;
+ }
+
+ public void targetMethod() {
+ noArgMethodCalled = true;
+ }
+
+ public void targetMethod(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void targetMethod(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setTargetValue() {
+ noArgMethodCalled = true;
+ }
+
+ public void setTargetValue(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void setTargetValue(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setNumberValue() {
+ noArgMethodCalled = true;
+ }
+
+ public void setNumberValue(Object o) {
+ objectArgMethodCalled = true;
+ }
+
+ public void setNumberValue(Number n) {
+ numberArgMethodCalled = true;
+ }
+
+ public void setNumberValue(String m) {
+ stringArgMethodCalled = true;
+ }
+
+ public void setValue(boolean arg) {
+ calledSetter = arg;
+ }
+
+ public void setIntegerValue(Integer value) {
+ calledSetter = true;
+ }
+
+ public void setIntValue(int value) {
+ calledSetter = true;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/EventHandler/check14c.java b/gnu/testlet/java/beans/EventHandler/check14c.java
new file mode 100644
index 00000000..47e1d7bf
--- /dev/null
+++ b/gnu/testlet/java/beans/EventHandler/check14c.java
@@ -0,0 +1,237 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.EventHandler;
+
+import java.awt.event.WindowListener;
+import java.beans.EventHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * <p>
+ * This tests the error behavior of the <code>EventHandler</code>
+ * </p>
+ */
+public class check14c implements Testlet {
+
+ public interface Listener {
+
+ void listen();
+
+ void listen(Object o);
+
+ void listen(String m);
+ }
+
+ public class Event {
+ public boolean isBooleanValue() {
+ return true;
+ }
+
+ public BigInteger getBigValue() {
+ return new BigInteger("903281390123809123");
+ }
+
+ public int getIntValue() {
+ return 0xDEADBEEF;
+ }
+
+ public Event getSelf() {
+ return this;
+ }
+ }
+
+ public class EventSub extends Event {
+ public void getErroneousProperty() throws PersonalException {
+ throw new PersonalException();
+ }
+ }
+
+ static class PersonalException extends Exception {
+ }
+
+ public interface Listener2 {
+ // The check. prefix is a workaround for a Jikes bug.
+ public void listen(check14c.Event e);
+ }
+
+ private boolean calledSetter;
+
+ public void test(TestHarness harness) {
+
+ // The first test checks whether a RuntimeException is thrown
+ // when the targetMethod cannot be found (Especially because of missing
+ // access rights).
+ // JDK 1.4 and 1.5 erroneously throw an ArrayIndexOutOfBoundsException.
+ Listener l = (Listener) EventHandler.create(Listener.class, this,
+ "targetMethod");
+
+ boolean correctException = false;
+ try {
+ l.listen();
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ }
+ harness.check(correctException, true, "missing target method");
+
+ // This checks whether a RuntimeException is thrown when the
+ // EventHandler
+ // retrieved a property value from the listener first argument but finds
+ // no
+ // suitable method or property to apply the property.
+ Listener2 l2 = (Listener2) EventHandler.create(Listener2.class, this,
+ "targetMethod2", "booleanValue");
+
+ correctException = false;
+ try {
+ l2.listen(new Event());
+ } catch (Exception re) {
+ correctException = re.getClass() == RuntimeException.class;
+ }
+ harness.check(correctException, true, "missing property target method");
+
+ // This checks the a similar situation as above. The difference is that
+ // the property is retrieved by a more complex expression. The
+ // RuntimeException
+ // is expected because targetMethod2 does not accept an int or Integer.
+ l2 = (Listener2) EventHandler.create(Listener2.class, this,
+ "targetMethod2", "getSelf.getSelf.intValue");
+
+ correctException = false;
+ try {
+ l2.listen(new Event());
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ }
+ harness.check(correctException, true);
+
+ // The list of "."-concatenated method and property names may have a
+ // wrong entry. We expect
+ // a RuntimeException then.
+ l2 = (Listener2) EventHandler
+ .create(Listener2.class, this, "not important",
+ "getSelf.self.getSelf.self.HellBrokeOut", null);
+
+ correctException = false;
+ try {
+ l2.listen(new EventSub());
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ }
+ harness.check(correctException, true, "missing property");
+
+ // One may think that a creation like this will forward the Event
+ // instance to the 'setEventProperty'
+ // method but this is wrong and will cause a
+ // RuntimeException to be as if could not
+ // find a method. In other words: If no property is defined action will
+ // never be treated as a
+ // property but always like a method name.
+ // JDK 1.4 and 1.5 erroneously throw an ArrayIndexOutOfBoundsException.
+ l2 = (Listener2) EventHandler.create(Listener2.class, this,
+ "eventProperty");
+
+ correctException = false;
+ try {
+ l2.listen(new Event());
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ }
+ harness.check(correctException, true, "action is method");
+
+ // When the target method throws an Exception it will be wrapped in a
+ // RuntimeException.
+ l2 = (Listener2) EventHandler.create(Listener2.class, this,
+ "erroneousTargetMethod");
+
+ correctException = false;
+ boolean correctException2 = false;
+ try {
+ l2.listen(new Event());
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ correctException2 = e.getCause().getClass() == PersonalException.class;
+ }
+ harness.check(correctException, true, "erroneous target method");
+ harness.check(correctException2, true);
+
+ // When the property method throws an Exception a RuntimeException will
+ // be
+ // thrown.
+ l2 = (Listener2) EventHandler.create(Listener2.class, this,
+ "not important", "erroneousProperty");
+
+ correctException = false;
+ correctException2 = false;
+ boolean correctException3 = false;
+ try {
+ l2.listen(new EventSub());
+ } catch (Exception e) {
+ correctException = e.getClass() == RuntimeException.class;
+ correctException2 = e.getCause().getClass() == InvocationTargetException.class;
+ correctException3 = e.getCause().getCause().getClass() == PersonalException.class;
+ }
+ harness.check(correctException, true, "erroneous property");
+ harness.check(correctException2, true);
+ harness.check(correctException3, true);
+
+ // This tests the exception behavior when creating a new interface implementation.
+ // The create method should throw a NullPointerException if the interface class argument
+ // is null.
+ correctException = false;
+ harness.checkPoint("wrong arguments");
+ try {
+ EventHandler.create(null, harness, "bla", "foo", "baz");
+ } catch(Exception e) {
+ correctException = e.getClass() == NullPointerException.class;
+ }
+ harness.check(correctException, true);
+ correctException = false;
+
+ // The create method should throw a NullPointerException if the target object is null.
+ try {
+ WindowListener w = (WindowListener) EventHandler.create(WindowListener.class, null, "bla", "foo", "windowClosing");
+ } catch (Exception e) {
+ correctException = e.getClass() == NullPointerException.class;
+ }
+ harness.check(correctException, true);
+ correctException = false;
+
+ }
+
+ void targetMethod() {
+ }
+
+ public void targetMethod2() {
+ }
+
+ public void setEventProperty(Event e) {
+ }
+
+ public void erroneousTargetMethod() throws PersonalException {
+ throw new PersonalException();
+ }
+
+}
diff --git a/gnu/testlet/java/beans/EventSetDescriptor/CVS/Entries b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Entries
new file mode 100644
index 00000000..817fcc14
--- /dev/null
+++ b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Entries
@@ -0,0 +1,2 @@
+/constructorTest1.java/1.1/Sun Nov 7 22:17:19 2004//
+D
diff --git a/gnu/testlet/java/beans/EventSetDescriptor/CVS/Repository b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Repository
new file mode 100644
index 00000000..05daf49c
--- /dev/null
+++ b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/EventSetDescriptor
diff --git a/gnu/testlet/java/beans/EventSetDescriptor/CVS/Root b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/EventSetDescriptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/EventSetDescriptor/constructorTest1.java b/gnu/testlet/java/beans/EventSetDescriptor/constructorTest1.java
new file mode 100644
index 00000000..05a4ee22
--- /dev/null
+++ b/gnu/testlet/java/beans/EventSetDescriptor/constructorTest1.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+//Copyright (C) 2003 Stephen Crawley <crawley@dstc.edu.au>
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.EventSetDescriptor;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.EventSetDescriptor;
+import java.beans.IntrospectionException;
+
+/** This tests the <code>EventSetDescriptor</code> using classes
+ * of the Java API.
+ *
+ * @author Stephen Crawley <crawley@dstc.edu.au>
+ * @author Robert Schuster <thebohemian@gmx.net>
+ */
+public class constructorTest1 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ boolean ok;
+
+ ok = true;
+ try
+ {
+ new EventSetDescriptor(
+ java.awt.Button.class,
+ "action",
+ java.awt.event.ActionListener.class,
+ "actionPerformed");
+ }
+ catch (IntrospectionException e)
+ {
+ harness.debug(e);
+ ok = false;
+ }
+ harness.check(ok);
+
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Expression/CVS/Entries b/gnu/testlet/java/beans/Expression/CVS/Entries
new file mode 100644
index 00000000..5acafba6
--- /dev/null
+++ b/gnu/testlet/java/beans/Expression/CVS/Entries
@@ -0,0 +1,2 @@
+/check.java/1.3/Tue Jul 10 13:59:29 2007//
+D
diff --git a/gnu/testlet/java/beans/Expression/CVS/Repository b/gnu/testlet/java/beans/Expression/CVS/Repository
new file mode 100644
index 00000000..9a7d9e44
--- /dev/null
+++ b/gnu/testlet/java/beans/Expression/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Expression
diff --git a/gnu/testlet/java/beans/Expression/CVS/Root b/gnu/testlet/java/beans/Expression/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Expression/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Expression/check.java b/gnu/testlet/java/beans/Expression/check.java
new file mode 100644
index 00000000..50f90265
--- /dev/null
+++ b/gnu/testlet/java/beans/Expression/check.java
@@ -0,0 +1,217 @@
+// Test Expression.check().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.4
+
+// Test features added by JDK 1.4
+
+package gnu.testlet.java.beans.Expression;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.Expression;
+
+public class check implements Testlet
+{
+ public static int x = 0;
+
+ public static int test1(int y) { x = y; return x; }
+
+ public class dummy
+ {
+ public String s;
+ public int x;
+ public dummy() { s = ""; x = 5;}
+
+ public String method(String s)
+ {
+ this.s = s;
+ return this.s + " " + this.x;
+ }
+
+ public String method(String s, int y)
+ {
+ this.s = s;
+ this.x = y + 1;
+ return this.s + " " + this.x;
+ }
+
+ public String method1(String s, Integer y)
+ {
+ this.s = s;
+ this.x = y.intValue();
+ return this.s + " " + this.x;
+ }
+
+// public static String method2(String s)
+// {
+// return s + "static";
+// }
+ }
+
+ public void test (TestHarness harness)
+ {
+ dummy d = new dummy();
+
+ // Check that we can create and getValue a expression
+ Object arg1[] = {"test"};
+ Expression expr = new Expression(d, "method", arg1);
+ harness.check(expr != null, "Construct an Expression");
+ harness.check(expr.getTarget() == d);
+ harness.check(expr.getMethodName().equals("method"));
+ String res1 = "";
+ try
+ {
+ res1 = (String) expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Expression getValue failed");
+ }
+
+ harness.check(d.s.equals("test"), "Test getValue with method of single arg");
+ harness.check(d.x == 5);
+ harness.check(res1.equals("test 5"));
+
+ // Check that we can create and getValue a expression and that a
+ // wrapper class resolves to a method taking a primitive.
+ Object arg2[] = {"test", new Integer(6) };
+ expr = new Expression(d, "method", arg2);
+ harness.check(expr != null, "Construct an Expression with 2 args");
+
+ Object exprArgs[] = expr.getArguments();
+ harness.check(exprArgs.length == arg2.length && exprArgs[0] == arg2[0]
+ && exprArgs[1] == arg2[1]);
+ String res2 = "";
+ try
+ {
+ res2 = (String) expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Expression getValue failed");
+ }
+
+ harness.check(d.s.equals("test"), "Test getValue with method of single arg");
+ harness.check(d.x == 7);
+ harness.check(res2.equals("test 7"));
+
+
+ // Check that we can create and getValue a expression for a static method.
+ Object arg3[] = {new Integer(1)};
+ expr = new Expression(this, "test1", arg3);
+ int res3 = 0;
+
+ try
+ {
+ res3 = ((Integer)expr.getValue()).intValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Static method getValue " + e.toString());
+ }
+ harness.check(res3 == 1, "Test Expression with static method");
+
+
+ // Check that we can call get and set on an array object in a expression
+ int iarray[] = {1, 2, 3, 4, 5};
+ Object arg4[] = { new Integer(2), new Integer(6) };
+
+ expr = new Expression(iarray, "set", arg4);
+ Object res4 = new Object();
+ try
+ {
+ res4 = expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Expression set failed");
+ }
+ //Array.set is public static void and should have no return value
+ harness.check(res4 == null);
+
+ harness.check(iarray[2] == 6);
+
+ Object arg5[] = { new Integer(2) };
+ expr = new Expression(iarray, "get", arg5);
+ int res5 = 0;
+ try
+ {
+ res5 = ((Integer)expr.getValue()).intValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Expression get failed");
+ }
+
+ harness.check(res5 == 6, "Test Expression of array and method named get");
+
+ // check that Expression can call object constructor
+ Object arg6[] = { this };
+ expr = new Expression(d.getClass(), "new", arg6);
+ dummy d1 = null;
+ try
+ {
+ d1 = (dummy) expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Expression using new failed");
+ }
+
+ harness.check(d1 != d, "Test expr using new");
+
+ // check that Expression constructer with val uses val
+ expr = new Expression(d, d, "new", arg6);
+ d1 = null;
+ try
+ {
+ d1 = (dummy) expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Constructor failed");
+ }
+
+ harness.check(d1 == d, "Test expr constructor with value");
+
+
+ // check that setvalue works and getvalue returns it
+ String s1 = "t";
+ expr.setValue(s1);
+
+ String s2 = "";
+ try
+ {
+ s2 = (String) expr.getValue();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Constructor failed");
+ }
+ harness.check(s1 == s2, "Test expr setValue and getValue");
+
+ // check that tostring does something
+ String s3 = expr.toString();
+ }
+
+}
diff --git a/gnu/testlet/java/beans/FeatureDescriptor/CVS/Entries b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Entries
new file mode 100644
index 00000000..f50c94b9
--- /dev/null
+++ b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Entries
@@ -0,0 +1,2 @@
+/check.java/1.1/Fri Jun 17 00:14:27 2005//
+D
diff --git a/gnu/testlet/java/beans/FeatureDescriptor/CVS/Repository b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Repository
new file mode 100644
index 00000000..290c7cd2
--- /dev/null
+++ b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/FeatureDescriptor
diff --git a/gnu/testlet/java/beans/FeatureDescriptor/CVS/Root b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/FeatureDescriptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/FeatureDescriptor/check.java b/gnu/testlet/java/beans/FeatureDescriptor/check.java
new file mode 100644
index 00000000..353ec2be
--- /dev/null
+++ b/gnu/testlet/java/beans/FeatureDescriptor/check.java
@@ -0,0 +1,71 @@
+// Written by Robert Schuster <thebohemian@gmx.net>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.beans.FeatureDescriptor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.beans.FeatureDescriptor;
+
+/**
+ * <p>Basic tests for the <code>EventHandler</code></p>
+ */
+public class check implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ FeatureDescriptor fd = new FeatureDescriptor();
+
+ harness.checkPoint("initialization");
+
+ // At first everything should be null.
+ harness.check(fd.getName(), null);
+ harness.check(fd.getDisplayName(), null);
+ harness.check(fd.getShortDescription(), null);
+
+ harness.checkPoint("name set");
+ fd.setName("foo");
+ // When only the name is set this will be forwarded to
+ // displayName and shortDescription.
+
+ harness.check(fd.getName(), "foo");
+ harness.check(fd.getDisplayName(), "foo");
+ harness.check(fd.getShortDescription(), "foo");
+
+ harness.checkPoint("display name set");
+ fd.setDisplayName("baz");
+ // When displayName is set this will be forwarded to
+ // the unset shortDescription.
+
+ harness.check(fd.getName(), "foo");
+ harness.check(fd.getDisplayName(), "baz");
+ harness.check(fd.getShortDescription(), "baz");
+
+ harness.checkPoint("short description set");
+ fd.setShortDescription("bar");
+ // Finally everything has it's own value.
+
+ harness.check(fd.getName(), "foo");
+ harness.check(fd.getDisplayName(), "baz");
+ harness.check(fd.getShortDescription(), "bar");
+ }
+}
diff --git a/gnu/testlet/java/beans/Introspector/A.java b/gnu/testlet/java/beans/Introspector/A.java
new file mode 100644
index 00000000..7b531762
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/A.java
@@ -0,0 +1,9 @@
+//Tags: not-a-test
+
+package gnu.testlet.java.beans.Introspector;
+
+public abstract class A
+{
+ public abstract void a ();
+ public void b () { System.out.println ("b"); }
+}
diff --git a/gnu/testlet/java/beans/Introspector/B.java b/gnu/testlet/java/beans/Introspector/B.java
new file mode 100644
index 00000000..984c6b1c
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/B.java
@@ -0,0 +1,8 @@
+//Tags: not-a-test
+
+package gnu.testlet.java.beans.Introspector;
+
+public class B extends A
+{
+ public void a () { System.out.println ("a"); }
+}
diff --git a/gnu/testlet/java/beans/Introspector/C.java b/gnu/testlet/java/beans/Introspector/C.java
new file mode 100644
index 00000000..665dc3a7
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/C.java
@@ -0,0 +1,8 @@
+//Tags: not-a-test
+
+package gnu.testlet.java.beans.Introspector;
+
+public class C extends B
+{
+ public void c () { System.out.println ("c"); }
+}
diff --git a/gnu/testlet/java/beans/Introspector/CVS/Entries b/gnu/testlet/java/beans/Introspector/CVS/Entries
new file mode 100644
index 00000000..f986cb23
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/CVS/Entries
@@ -0,0 +1,12 @@
+/A.java/1.2/Fri Mar 10 15:25:27 2006//
+/B.java/1.2/Fri Mar 10 15:25:27 2006//
+/C.java/1.2/Fri Mar 10 15:25:27 2006//
+/getBeanInfo.java/1.4/Thu Apr 28 07:44:23 2005//
+/getBeanInfo2.java/1.3/Thu Apr 28 07:44:23 2005//
+/getBeanInfo2_2.java/1.3/Thu Apr 28 07:44:23 2005//
+/getBeanInfo2_2TestClass.java/1.2/Sat Jan 22 01:33:19 2005//
+/getBeanInfo4.java/1.2/Wed Jul 6 15:55:41 2005//
+/getBeanInfoTestClass.java/1.3/Sat Jan 22 01:33:19 2005//
+/jdk11.java/1.3/Wed Nov 13 13:31:51 2002//
+/jdk12.java/1.4/Sun Nov 7 03:11:59 2004//
+D
diff --git a/gnu/testlet/java/beans/Introspector/CVS/Entries.Log b/gnu/testlet/java/beans/Introspector/CVS/Entries.Log
new file mode 100644
index 00000000..2141bba0
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/bar////
+A D/foo////
diff --git a/gnu/testlet/java/beans/Introspector/CVS/Repository b/gnu/testlet/java/beans/Introspector/CVS/Repository
new file mode 100644
index 00000000..cd8655b9
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Introspector
diff --git a/gnu/testlet/java/beans/Introspector/CVS/Root b/gnu/testlet/java/beans/Introspector/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Introspector/bar/CVS/Entries b/gnu/testlet/java/beans/Introspector/bar/CVS/Entries
new file mode 100644
index 00000000..63bad51f
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/CVS/Entries
@@ -0,0 +1,2 @@
+/TestSubject.java/1.1/Fri Jun 17 02:37:37 2005//
+D
diff --git a/gnu/testlet/java/beans/Introspector/bar/CVS/Entries.Log b/gnu/testlet/java/beans/Introspector/bar/CVS/Entries.Log
new file mode 100644
index 00000000..b2ab61c8
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/info////
diff --git a/gnu/testlet/java/beans/Introspector/bar/CVS/Repository b/gnu/testlet/java/beans/Introspector/bar/CVS/Repository
new file mode 100644
index 00000000..6362eb8d
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Introspector/bar
diff --git a/gnu/testlet/java/beans/Introspector/bar/CVS/Root b/gnu/testlet/java/beans/Introspector/bar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Introspector/bar/TestSubject.java b/gnu/testlet/java/beans/Introspector/bar/TestSubject.java
new file mode 100644
index 00000000..602dd200
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/TestSubject.java
@@ -0,0 +1,39 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector.bar;
+
+/**
+ * This class is part of Mauve test:
+ * gnu.testlet.java.beans.Introspector.getBeanInfo4
+ *
+ * @author Robert Schuster
+ */
+public class TestSubject implements java.io.Serializable {
+
+ public TestSubject() {
+ }
+
+ public int getFoo() {
+ return -1;
+ }
+
+ public void setFoo(int foo) {
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/bar/info/CVS/Entries b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Entries
new file mode 100644
index 00000000..a09ef5be
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Entries
@@ -0,0 +1,2 @@
+/TestSubjectBeanInfo.java/1.1/Fri Jun 17 02:37:36 2005//
+D
diff --git a/gnu/testlet/java/beans/Introspector/bar/info/CVS/Repository b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Repository
new file mode 100644
index 00000000..6bd78950
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Introspector/bar/info
diff --git a/gnu/testlet/java/beans/Introspector/bar/info/CVS/Root b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/info/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Introspector/bar/info/TestSubjectBeanInfo.java b/gnu/testlet/java/beans/Introspector/bar/info/TestSubjectBeanInfo.java
new file mode 100644
index 00000000..2bd34c0c
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/bar/info/TestSubjectBeanInfo.java
@@ -0,0 +1,44 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector.bar.info;
+
+import java.beans.SimpleBeanInfo;
+import java.beans.BeanDescriptor;
+
+/**
+ * This class is part of Mauve test:
+ * gnu.testlet.java.beans.Introspector.getBeanInfo4
+ *
+ * @author Robert Schuster
+ */
+public class TestSubjectBeanInfo extends SimpleBeanInfo {
+
+ private BeanDescriptor bd =
+ new BeanDescriptor(gnu.testlet.java.beans.Introspector.bar.TestSubject.class);
+
+ public TestSubjectBeanInfo() {
+ bd.setName("BAR TestSubject");
+ }
+
+ public BeanDescriptor getBeanDescriptor() {
+ return bd;
+ }
+
+}
+
diff --git a/gnu/testlet/java/beans/Introspector/foo/CVS/Entries b/gnu/testlet/java/beans/Introspector/foo/CVS/Entries
new file mode 100644
index 00000000..bbffebad
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/CVS/Entries
@@ -0,0 +1,2 @@
+/TestSubject.java/1.1/Fri Jun 17 02:37:36 2005//
+D
diff --git a/gnu/testlet/java/beans/Introspector/foo/CVS/Entries.Log b/gnu/testlet/java/beans/Introspector/foo/CVS/Entries.Log
new file mode 100644
index 00000000..b2ab61c8
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/info////
diff --git a/gnu/testlet/java/beans/Introspector/foo/CVS/Repository b/gnu/testlet/java/beans/Introspector/foo/CVS/Repository
new file mode 100644
index 00000000..19f33d7d
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Introspector/foo
diff --git a/gnu/testlet/java/beans/Introspector/foo/CVS/Root b/gnu/testlet/java/beans/Introspector/foo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Introspector/foo/TestSubject.java b/gnu/testlet/java/beans/Introspector/foo/TestSubject.java
new file mode 100644
index 00000000..18c401d0
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/TestSubject.java
@@ -0,0 +1,39 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector.foo;
+
+/**
+ * This class is part of Mauve test:
+ * gnu.testlet.java.beans.Introspector.getBeanInfo4
+ *
+ * @author Robert Schuster
+ */
+public class TestSubject implements java.io.Serializable {
+
+ public TestSubject() {
+ }
+
+ public int getFoo() {
+ return -1;
+ }
+
+ public void setFoo(int foo) {
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/foo/info/CVS/Entries b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Entries
new file mode 100644
index 00000000..a09ef5be
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Entries
@@ -0,0 +1,2 @@
+/TestSubjectBeanInfo.java/1.1/Fri Jun 17 02:37:36 2005//
+D
diff --git a/gnu/testlet/java/beans/Introspector/foo/info/CVS/Repository b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Repository
new file mode 100644
index 00000000..2fc564c2
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Introspector/foo/info
diff --git a/gnu/testlet/java/beans/Introspector/foo/info/CVS/Root b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/info/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Introspector/foo/info/TestSubjectBeanInfo.java b/gnu/testlet/java/beans/Introspector/foo/info/TestSubjectBeanInfo.java
new file mode 100644
index 00000000..94ba88c2
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/foo/info/TestSubjectBeanInfo.java
@@ -0,0 +1,44 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector.foo.info;
+
+import java.beans.SimpleBeanInfo;
+import java.beans.BeanDescriptor;
+
+/**
+ * This class is part of Mauve test:
+ * gnu.testlet.java.beans.Introspector.getBeanInfo4
+ *
+ * @author Robert Schuster
+ */
+public class TestSubjectBeanInfo extends SimpleBeanInfo {
+
+ private BeanDescriptor bd =
+ new BeanDescriptor(gnu.testlet.java.beans.Introspector.foo.TestSubject.class);
+
+ public TestSubjectBeanInfo() {
+ bd.setName("FOO TestSubject");
+ }
+
+ public BeanDescriptor getBeanDescriptor() {
+ return bd;
+ }
+
+}
+
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfo.java b/gnu/testlet/java/beans/Introspector/getBeanInfo.java
new file mode 100644
index 00000000..9e8a4465
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfo.java
@@ -0,0 +1,184 @@
+// Tags: JDK1.2
+// Uses: getBeanInfoTestClass
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+
+/** This tests the property retrieving mechanism of the
+ * Introspector class.
+ *
+ * <p>See {@link getBeanInfoTestClass} for details on what is
+ * expected.</p>
+ *
+ * <p>The property test goes like this:</p>
+ * <p>There is a test class having a number of well-known methods. Some of them should
+ * make a property other should not. At first <code>Method</code> instances for
+ * the properties are retrieved using reflection. Then the <code>BeanInfo</code>
+ * instance of the test class is retrieved. Finally the test checks whether the
+ * <code>BeanInfo</code> contains the right <code>PropertyDescription</code>
+ * by testing their read and write methods against the methods that were retrieved
+ * in the beginning.</p>
+ *
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class getBeanInfo implements Testlet
+{
+
+ public void test(TestHarness harness) {
+ propertyTest(harness);
+ }
+
+ void propertyTest(TestHarness harness)
+ {
+ BeanInfo bi = null;
+ Class testClass = getBeanInfoTestClass.class;
+
+ Method readWritePropertyReadMethod = null;
+ Method readWritePropertyWriteMethod = null;
+ Method readOnlyPropertyReadMethod = null;
+ Method writeOnlyPropertyWriteMethod = null;
+
+ try
+ {
+ readWritePropertyReadMethod =
+ testClass.getMethod("getCorrectProperty", new Class[0]);
+
+ readWritePropertyWriteMethod =
+ testClass.getMethod(
+ "setCorrectProperty",
+ new Class[] { Integer.TYPE });
+
+ readOnlyPropertyReadMethod =
+ testClass.getMethod("getCorrectReadOnlyProperty", new Class[0]);
+
+ writeOnlyPropertyWriteMethod =
+ testClass.getMethod(
+ "setCorrectWriteOnlyProperty",
+ new Class[] { Integer.TYPE });
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ // if that happens check the test class (compiler?)
+ harness.fail("TEST_PREPARATION_NOSUCHMETHODEXCEPTION");
+ }
+
+ // checks availability of the instances. If any of these is null a NoSuchMethodException could have caused this
+ harness.check(
+ readWritePropertyReadMethod != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_1");
+ harness.check(
+ readWritePropertyWriteMethod != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_2");
+ harness.check(
+ readOnlyPropertyReadMethod != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_3");
+ harness.check(
+ writeOnlyPropertyWriteMethod != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_4");
+
+ try
+ {
+ // introspects only the test class (we are not interested in the Object.getClass() method)
+ bi = Introspector.getBeanInfo(testClass, Object.class);
+ }
+ catch (IntrospectionException ie)
+ {
+ harness.fail("TEST_PREPARATION_INTROSPECTION_EXCEPTION");
+ }
+
+ harness.check(bi != null, "TEST_PREPARATION_VALID_BEANINFO");
+
+ PropertyDescriptor[] propertyDescriptors = bi.getPropertyDescriptors();
+
+ // expects 3 properties: read-write, read-only and write-only
+ harness.check(
+ propertyDescriptors.length,
+ 3,
+ "PROPERTY_DESCRIPTORS_ARRAY: expected 3 entries");
+
+ // boolean flagging whether we reached a certain property
+ boolean readWritePresent = false;
+
+ // boolean flagging whether we reached a certain property
+ boolean readOnlyPresent = false;
+
+ // boolean flagging whether we reached a certain property
+ boolean writeOnlyPresent = false;
+
+ for (int i = 0; i < 3; i++)
+ {
+ String name = propertyDescriptors[i].getName();
+
+ if (name.equals("correctProperty"))
+ {
+ harness.check(readWritePresent, false, "READ_WRITE_PRESENT1");
+ readWritePresent = true;
+
+ harness.check(
+ propertyDescriptors[i].getReadMethod(),
+ readWritePropertyReadMethod,
+ "READ_WRITE_READ_METHOD");
+ harness.check(
+ propertyDescriptors[i].getWriteMethod(),
+ readWritePropertyWriteMethod,
+ "READ_WRITE_WRITE_METHOD");
+ }
+ else if (name.equals("correctReadOnlyProperty"))
+ {
+ harness.check(readOnlyPresent, false, "READ_ONLY_PRESENT1");
+ readOnlyPresent = true;
+
+ harness.check(
+ propertyDescriptors[i].getReadMethod(),
+ readOnlyPropertyReadMethod,
+ "READ_ONLY_READ_METHOD");
+ harness.check(
+ propertyDescriptors[i].getWriteMethod(),
+ null,
+ "READ_ONLY_WRITE_METHOD");
+ }
+ else if (name.equals("correctWriteOnlyProperty"))
+ {
+ harness.check(writeOnlyPresent, false, "WRITE_ONLY_PRESENT1");
+ writeOnlyPresent = true;
+
+ harness.check(
+ propertyDescriptors[i].getReadMethod(),
+ null,
+ "WRITE_ONLY_READ_METHOD");
+ harness.check(
+ propertyDescriptors[i].getWriteMethod(),
+ writeOnlyPropertyWriteMethod,
+ "WRITE_ONLY_WRITE_METHOD");
+ }
+ }
+
+ // after all methods have been checked we expect having reached all properties
+ harness.check(readWritePresent, "READ_WRITE_PRESENT2");
+ harness.check(readOnlyPresent, "READ_ONLY_PRESENT2");
+ harness.check(writeOnlyPresent, "WRITE_ONLY_PRESENT2");
+ }
+}
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfo2.java b/gnu/testlet/java/beans/Introspector/getBeanInfo2.java
new file mode 100644
index 00000000..7d26466e
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfo2.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.2
+// Uses: getBeanInfoTestClass
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
+import java.lang.reflect.Method;
+
+/** This tests the <strong>method</strong> retrieving mechanism of the
+ * Introspector class.
+ *
+ * <p>See {@link getBeanInfoTestClass} for details on what is
+ * expected.</p>
+ *
+ * <p>The method test goes like this:</p>
+ * <p>There is a test class having a number of well-known methods. All
+ * <code>public</code> methods should be available in a
+ * <code>MethodDescriptor</code> array. There are two methods
+ * which are not <code>public</code> and these should not be
+ * available in the array.</p>
+ *
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class getBeanInfo2 implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ propertyTest(harness);
+ }
+
+ void propertyTest(TestHarness harness)
+ {
+ BeanInfo bi = null;
+ Class testClass = getBeanInfoTestClass.class;
+
+ Method[] expectedMethods = null;
+ Method[] unexpectedMethods = null;
+
+ try
+ {
+ // these are the method that have to show up
+ expectedMethods =
+ new Method[] {
+ testClass.getMethod(
+ "setCorrectProperty",
+ new Class[] { Integer.TYPE }),
+
+ testClass.getMethod("getCorrectProperty", new Class[0]),
+
+ testClass.getMethod(
+ "getCorrectReadOnlyProperty",
+ new Class[0]),
+
+ testClass.getMethod(
+ "setCorrectWriteOnlyProperty",
+ new Class[] { Integer.TYPE }),
+
+ testClass.getMethod(
+ "setSomeStaticValue",
+ new Class[] { Integer.TYPE }),
+
+ testClass.getMethod("getSomeStaticValue", new Class[0]),
+ };
+
+ /* these are the method that have not to show up - it is neccessary to use
+ * getDeclaredMethod() here because the wanted methods are not public.
+ */
+ unexpectedMethods =
+ new Method[] {
+ testClass.getDeclaredMethod(
+ "setSomeValue",
+ new Class[] { Integer.TYPE }),
+
+ testClass.getDeclaredMethod("getSomeValue", new Class[0]),
+ };
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ // if that happens check the test class (compiler?)
+ harness.fail("TEST_PREPARATION_NOSUCHMETHODEXCEPTION");
+ }
+
+ // checks wether all expected methods have been retrieved successfully
+ for (int i = 0; i < expectedMethods.length; i++)
+ {
+ harness.check(
+ expectedMethods[i] != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_AVAILABLE");
+ }
+
+ // checks wether all unexpected methods have been retrieved successfully
+ for (int i = 0; i < unexpectedMethods.length; i++)
+ {
+ harness.check(
+ unexpectedMethods[i] != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_AVAILABLE");
+ }
+
+ // retrieves the BeanInfo instance of the test class
+ try
+ {
+ bi = Introspector.getBeanInfo(testClass, testClass.getSuperclass());
+ }
+ catch (IntrospectionException ie)
+ {
+ harness.fail("TEST_PREPARATION_INTROSPECTION_EXCEPTION");
+ }
+
+ harness.check(bi != null, "TEST_PREPARATION_VALID_BEANINFO");
+
+ MethodDescriptor[] methodDescriptors = bi.getMethodDescriptors();
+
+ // Since we only introspected the test class the number of method descriptors must match
+ // the number of expected methods.
+ harness.check(
+ methodDescriptors.length,
+ expectedMethods.length,
+ "MATCH_EXPECTED_METHOD_COUNT");
+
+ for (int i = 0; i < expectedMethods.length; i++)
+ {
+ harness.check(
+ containsMethod(methodDescriptors, expectedMethods[i]),
+ "EXPECTED_METHOD_AVAILABLE: " + expectedMethods[i].getName());
+ }
+
+ for (int i = 0; i < unexpectedMethods.length; i++)
+ {
+ harness.check(
+ !containsMethod(methodDescriptors, unexpectedMethods[i]),
+ "UNEXPECTED_METHOD_UNAVAILABE: "
+ + unexpectedMethods[i].getName());
+ }
+
+ }
+
+ /** Returns whether a given method array contains a certain method.
+ *
+ * @param methods The array of method to be examined.
+ * @param key The method which is looked up.
+ * @return Whether the key method is in the array.
+ */
+ boolean containsMethod(MethodDescriptor[] methodDescriptors, Method key)
+ {
+ for (int i = 0; i < methodDescriptors.length; i++)
+ {
+ if (key.equals(methodDescriptors[i].getMethod()))
+ return true;
+ }
+
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java b/gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java
new file mode 100644
index 00000000..a4913808
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfo2_2.java
@@ -0,0 +1,147 @@
+// Tags: JDK1.2
+// Uses: getBeanInfo2_2TestClass
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
+import java.lang.reflect.Method;
+
+/** This is the second test of the <strong>method</strong> retrieving
+ * mechanism of the Introspector class.
+ *
+ * <p>See {@link getBeanInfo2_2TestClass} for
+ * details on what is expected.</p>
+ *
+ * <p>The test goes like this:</p>
+ * <p>There is a test class having a number of well-known methods. All
+ * <code>public</code> methods should be available in a
+ * <code>MethodDescriptor</code> array.</p>
+ *
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class getBeanInfo2_2 implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ propertyTest(harness);
+ }
+
+ void propertyTest(TestHarness harness)
+ {
+ BeanInfo bi = null;
+ Class testClass = getBeanInfo2_2TestClass.class;
+
+ Method[] expectedMethods = null;
+
+ try
+ {
+ // these are the method that have to show up
+ expectedMethods =
+ new Method[] {
+
+ testClass.getMethod(
+ "setSomething1",
+ new Class[] {
+ Integer.TYPE,
+ Integer.TYPE,
+ Integer.TYPE }),
+
+ testClass.getMethod(
+ "getSomething2",
+ new Class[] {
+ String.class,
+ String.class,
+ String.class }),
+
+ testClass.getMethod(
+ "isSomething3",
+ new Class[] {
+ String.class,
+ String.class,
+ String.class })
+ };
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ // if that happens check the test class (compiler?)
+ harness.fail("TEST_PREPARATION_NOSUCHMETHODEXCEPTION");
+ }
+
+ // checks wether all expected methods have been retrieved successfully
+ for (int i = 0; i < expectedMethods.length; i++)
+ {
+ harness.check(
+ expectedMethods[i] != null,
+ "TEST_PREPARATION_METHOD_INSTANCE_AVAILABLE");
+ }
+
+ // retrieves the BeanInfo instance of the test class
+ try
+ {
+ bi = Introspector.getBeanInfo(testClass, testClass.getSuperclass());
+ }
+ catch (IntrospectionException ie)
+ {
+ harness.fail("TEST_PREPARATION_INTROSPECTION_EXCEPTION");
+ }
+
+ harness.check(bi != null, "TEST_PREPARATION_VALID_BEANINFO");
+
+ MethodDescriptor[] methodDescriptors = bi.getMethodDescriptors();
+
+ // Since we only introspected the test class the number of method descriptors must match
+ // the number of expected methods.
+ harness.check(
+ methodDescriptors.length,
+ expectedMethods.length,
+ "MATCH_EXPECTED_METHOD_COUNT");
+
+ for (int i = 0; i < expectedMethods.length; i++)
+ {
+ harness.check(
+ containsMethod(methodDescriptors, expectedMethods[i]),
+ "EXPECTED_METHOD_AVAILABLE: " + expectedMethods[i].getName());
+ }
+
+ }
+
+ /** Returns whether a given method array contains a certain method.
+ *
+ * @param methods The array of method to be examined.
+ * @param key The method which is looked up.
+ * @return Whether the key method is in the array.
+ */
+ boolean containsMethod(MethodDescriptor[] methodDescriptors, Method key)
+ {
+ for (int i = 0; i < methodDescriptors.length; i++)
+ {
+ if (key.equals(methodDescriptors[i].getMethod()))
+ return true;
+ }
+
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java b/gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java
new file mode 100644
index 00000000..3a9844b1
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfo2_2TestClass.java
@@ -0,0 +1,76 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+/** This class is used to test the Introspector in the test:
+ * <code>gnu.testlet.java.beans.getBeanInfo2_2</code>.
+ *
+ * <p>See each method's documentation to see what is expected for the
+ * test.</p>
+ *
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class getBeanInfo2_2TestClass
+{
+
+ /** This method has a setter like method name but its signature
+ * does not conform the Bean pattern. This method is expected
+ * to be available in a <code>MethodDescriptor</code> retrieved
+ * from a <code>BeanInfo</code> instance of this class.
+ *
+ * @param arg0 Unused.
+ * @param arg1 Unused.
+ * @param arg2 Unused.
+ */
+ public void setSomething1(int arg0, int arg1, int arg2) {
+ }
+
+ /** This method has a getter like method name but its signature
+ * is not conforming to the Bean pattern. However, this method
+ * is expected to be available in a <code>MethodDescriptor</code>
+ * retrieved from a <code>BeanInfo</code> instance of this class.<br/>
+ * <br/>
+ * This mimics a "get" style getter.
+ *
+ * @param foo Unused.
+ * @param baz Unused.
+ * @param bar Unused.
+ * @return <code>null</code>.
+ */
+ public String[] getSomething2(String foo, String baz, String bar) {
+ return null;
+ }
+
+ /** This method has a getter like method name but its signature
+ * is not conforming to the Bean pattern. However, this method
+ * is expected to be available in a <code>MethodDescriptor</code>
+ * retrieved from a <code>BeanInfo</code> instance of this class.<br/>
+ * <br/>
+ * This mimics an "is" style getter. The return value is explicitly chosen
+ * because "is" getters should return a <code>boolean</code>.
+ *
+ * @param foo Unused.
+ * @param baz Unused.
+ * @param bar Unused.
+ * @return <code>false</code>.
+ */
+ public boolean isSomething3(String foo, String baz, String bar) {
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfo4.java b/gnu/testlet/java/beans/Introspector/getBeanInfo4.java
new file mode 100644
index 00000000..e442d7ef
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfo4.java
@@ -0,0 +1,82 @@
+//Tags: JDK1.2
+//Uses: foo/TestSubject foo/info/TestSubjectBeanInfo bar/TestSubject bar/info/TestSubjectBeanInfo
+
+//Copyright (C) 2005 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+
+/**
+ * This class tests whether the Introspector is properly preparing the BeanInfo
+ * classes of two Bean classes which live in different packages but share a
+ * common base name.
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getBeanInfo4 implements Testlet {
+
+ public void test(TestHarness harness) {
+ Introspector.setBeanInfoSearchPath(new String[] {
+ "gnu.testlet.java.beans.Introspector.foo.info",
+ "gnu.testlet.java.beans.Introspector.bar.info" });
+
+ Class klazz;
+ BeanInfo bi = null;
+ BeanDescriptor bd;
+ boolean failed = false;
+
+ klazz = gnu.testlet.java.beans.Introspector.bar.TestSubject.class;
+ try {
+ bi = Introspector.getBeanInfo(klazz);
+ } catch (IntrospectionException ie) {
+ failed = true;
+ }
+
+ harness.checkPoint("BAR variant");
+ harness.check(failed, false);
+ bd = bi.getBeanDescriptor();
+
+ harness.check(bd.getName(), "BAR TestSubject");
+ harness.check(bd.getBeanClass(),
+ gnu.testlet.java.beans.Introspector.bar.TestSubject.class);
+
+ failed = false;
+
+ klazz = gnu.testlet.java.beans.Introspector.foo.TestSubject.class;
+ try {
+ bi = Introspector.getBeanInfo(klazz);
+ } catch (IntrospectionException ie) {
+ failed = true;
+ }
+
+ harness.checkPoint("FOO variant");
+ harness.check(failed, false);
+ bd = bi.getBeanDescriptor();
+
+ harness.check(bd.getName(), "FOO TestSubject");
+ harness.check(bd.getBeanClass(),
+ gnu.testlet.java.beans.Introspector.foo.TestSubject.class);
+
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java b/gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java
new file mode 100644
index 00000000..ed032095
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/getBeanInfoTestClass.java
@@ -0,0 +1,114 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+
+
+/** This class is used to test the Introspector in the test:
+ * <code>gnu.testlet.java.beans.getBeanInfo</code> and
+ * <code>gnu.testlet.java.beans.getBeanInfo2</code>.
+ *
+ * <p>See each method's documentation to see what is expected for the
+ * tests.</p>
+ *
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class getBeanInfoTestClass
+{
+ /** This method is expected to be the read method of the property
+ * 'correctProperty' and should show up as in the method descriptors.
+ *
+ * @param i Unused.
+ */
+ public void setCorrectProperty(int i)
+ {
+ }
+
+ /** This method is expected to be the write method of the property
+ * 'correctProperty' and should show up in the method descriptors.
+ *
+ * @return 0
+ */
+ public int getCorrectProperty()
+ {
+ return 0;
+ }
+
+ /** This method is expected to be the read method of the read-only
+ * property 'correctReadOnlyProperty' and should show up in the
+ * method descriptors.
+ *
+ * @return 0.
+ */
+ public int getCorrectReadOnlyProperty()
+ {
+ return 0;
+ }
+
+ /** This method is expected to be the write method of the write-only
+ * property 'correctWriteOnlyProperty' and should show up in the
+ * method descriptors.
+ *
+ * @param i Unused.
+ */
+ public void setCorrectWriteOnlyProperty(int i)
+ {
+ }
+
+ /** This method should not show up as part of a property or method
+ * descriptor because the method is not public.
+ *
+ * @param i Unused.
+ */
+ void setSomeValue(int i)
+ {
+ }
+
+ /** This method should not show up as part of a property or method
+ * descriptor because the method is not public.
+ *
+ * @return 0.
+ */
+ int getSomeValue()
+ {
+ return 0;
+ }
+
+ /** This method should not show up as part of a property because the
+ * method is <code>static</code> but it should show up in the
+ * method descriptors.
+ *
+ * @param i Unused.
+ */
+ public static void setSomeStaticValue(int i)
+ {
+ }
+
+ /** This method should not show up as part of a property because the
+ * method is <code>static</code> but it should show up in the
+ * method descriptors.
+ *
+ * @return 0.
+ */
+ public static int getSomeStaticValue()
+ {
+ return 0;
+ }
+
+}
diff --git a/gnu/testlet/java/beans/Introspector/jdk11.java b/gnu/testlet/java/beans/Introspector/jdk11.java
new file mode 100644
index 00000000..7271a815
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/jdk11.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.1
+// Uses: A B C
+package gnu.testlet.java.beans.Introspector;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.*;
+
+public class jdk11 implements Testlet {
+ public void tryone (TestHarness harness, Class k1, Class k2, boolean force,
+ int dlen, int evlen, int gmlen)
+ {
+ try
+ {
+ BeanInfo b;
+ if (! force && k2 == null)
+ b = Introspector.getBeanInfo (k1);
+ else
+ b = Introspector.getBeanInfo (k1, k2);
+ harness.debug (k1 + "/" + k2 + ":");
+ harness.debug ("BeanInfo.getPropertyDescriptors().length = "
+ + b.getPropertyDescriptors().length + " ?= " + dlen);
+ harness.check (b.getPropertyDescriptors().length, dlen);
+ harness.debug ("BeanInfo.getEventSetDescriptors().length = "
+ + b.getEventSetDescriptors().length + " ?= " + evlen);
+ harness.check (b.getEventSetDescriptors().length, evlen);
+ harness.debug ("BeanInfo.getMethodDescriptors().length = "
+ + b.getMethodDescriptors().length + " ?= " + gmlen);
+ harness.check (b.getMethodDescriptors().length, gmlen);
+ }
+ catch (Throwable e)
+ {
+ harness.check (false);
+ harness.debug (e);
+ }
+ }
+
+ public void tryone (TestHarness harness, Class k1, Class k2,
+ int dlen, int evlen, int gmlen)
+ {
+ tryone (harness, k1, k2, false, dlen, evlen, gmlen);
+ }
+
+ public void tryone (TestHarness harness, Class k,
+ int dlen, int evlen, int gmlen)
+ {
+ tryone (harness, k, null, false, dlen, evlen, gmlen);
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("decapitalize");
+ harness.check (Introspector.decapitalize ("FooBar"), "fooBar");
+ harness.check (Introspector.decapitalize ("Foo"), "foo");
+ harness.check (Introspector.decapitalize ("X"), "x");
+ harness.check (Introspector.decapitalize ("BAR"), "BAR");
+
+ harness.checkPoint ("getBeanInfo");
+ tryone (harness, gnu.testlet.java.beans.Introspector.jdk11.class, 1, 0, 13);
+ tryone (harness, gnu.testlet.java.beans.Introspector.A.class, 1, 0, 11);
+ tryone (harness, gnu.testlet.java.beans.Introspector.B.class, 1, 0, 11);
+ tryone (harness, gnu.testlet.java.beans.Introspector.C.class, 1, 0, 12);
+ tryone (harness, gnu.testlet.java.beans.Introspector.C.class,
+ gnu.testlet.java.beans.Introspector.B.class, 0, 0, 1);
+
+ harness.checkPoint ("getBeanInfoSearchPath");
+ String search[] = Introspector.getBeanInfoSearchPath ();
+ for (int i = 0; i < search.length; i++)
+ harness.debug ("getBeanInfoSearchPath value[" + i + "]: " + search[i]);
+ harness.check (search.length > 0);
+
+ harness.checkPoint ("setBeanInfoSearchPath");
+ String path[] = {"a.b.c", "d.e.f"};
+ Introspector.setBeanInfoSearchPath (path);
+ harness.check (path.length == Introspector.getBeanInfoSearchPath().length);
+
+ Introspector.setBeanInfoSearchPath (search);
+
+ }
+}
diff --git a/gnu/testlet/java/beans/Introspector/jdk12.java b/gnu/testlet/java/beans/Introspector/jdk12.java
new file mode 100644
index 00000000..1320dbdd
--- /dev/null
+++ b/gnu/testlet/java/beans/Introspector/jdk12.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+//Copyright (C) 2002 C. Brian Jones <cbj@gnu.org>
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.Introspector;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.*;
+
+/** This is a simple test that checks that the constants
+ * <code>Introspector.USE_ALL_BEANINFO</code>
+ * <code>Introspector.IGNORE_IMMEDIATE_BEANINFO</code>
+ * <code>Introspector.IGNORE_ALL_BEANINFO</code>
+ * are defined correctly.
+ *
+ * @author C. Brian Jones <cbj@gnu.org>
+ * @author Robert Schuster <theBohemian@gmx.net>
+ */
+public class jdk12 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("USE_ALL_BEANINFO");
+ harness.debug(
+ "USE_ALL_BEANINFO value: " + Introspector.USE_ALL_BEANINFO);
+ harness.check(Introspector.USE_ALL_BEANINFO, 1);
+
+ harness.checkPoint("IGNORE_IMMEDIATE_BEANINFO");
+ harness.debug(
+ "IGNORE_IMMEDIATE_BEANINFO value: "
+ + Introspector.IGNORE_IMMEDIATE_BEANINFO);
+ harness.check(Introspector.IGNORE_IMMEDIATE_BEANINFO, 2);
+
+ harness.checkPoint("IGNORE_ALL_BEANINFO");
+ harness.debug(
+ "IGNORE_ALL_BEANINFO value: " + Introspector.IGNORE_ALL_BEANINFO);
+ harness.check(Introspector.IGNORE_ALL_BEANINFO, 3);
+ }
+
+}
diff --git a/gnu/testlet/java/beans/MethodDescriptor/CVS/Entries b/gnu/testlet/java/beans/MethodDescriptor/CVS/Entries
new file mode 100644
index 00000000..0c481071
--- /dev/null
+++ b/gnu/testlet/java/beans/MethodDescriptor/CVS/Entries
@@ -0,0 +1,2 @@
+/constructorTest1.java/1.1/Sun Nov 7 22:17:18 2004//
+D
diff --git a/gnu/testlet/java/beans/MethodDescriptor/CVS/Repository b/gnu/testlet/java/beans/MethodDescriptor/CVS/Repository
new file mode 100644
index 00000000..8c549c23
--- /dev/null
+++ b/gnu/testlet/java/beans/MethodDescriptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/MethodDescriptor
diff --git a/gnu/testlet/java/beans/MethodDescriptor/CVS/Root b/gnu/testlet/java/beans/MethodDescriptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/MethodDescriptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/MethodDescriptor/constructorTest1.java b/gnu/testlet/java/beans/MethodDescriptor/constructorTest1.java
new file mode 100644
index 00000000..905e95f4
--- /dev/null
+++ b/gnu/testlet/java/beans/MethodDescriptor/constructorTest1.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.1
+
+//Copyright (C) 2003 Stephen Crawley <crawley@dstc.edu.au>
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.MethodDescriptor;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.MethodDescriptor;
+
+/** This tests the <code>MethodDescriptor</code> using classes
+ * of the Java API.
+ *
+ * @author Stephen Crawley <crawley@dstc.edu.au>
+ * @author Robert Schuster <thebohemian@gmx.net>
+ */
+public class constructorTest1 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ boolean ok;
+
+ ok = true;
+ try
+ {
+ new MethodDescriptor(
+ java.awt.Component.class.getMethod(
+ "getLocation",
+ new Class[0]));
+ }
+ catch (NoSuchMethodException e)
+ {
+ harness.debug(e);
+ ok = false;
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Entries b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Entries
new file mode 100644
index 00000000..f5b7d164
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Entries
@@ -0,0 +1,2 @@
+/firePropertyChange.java/1.1/Tue Nov 28 12:35:24 2006//
+D
diff --git a/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Repository b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Repository
new file mode 100644
index 00000000..2094b212
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/PropertyChangeSupport
diff --git a/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Root b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyChangeSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/PropertyChangeSupport/firePropertyChange.java b/gnu/testlet/java/beans/PropertyChangeSupport/firePropertyChange.java
new file mode 100644
index 00000000..1e221edf
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyChangeSupport/firePropertyChange.java
@@ -0,0 +1,73 @@
+/* firePropertyChange.java -- Tests firePropertyChange()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.PropertyChangeSupport;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+public class firePropertyChange extends TestCase
+ implements PropertyChangeListener
+{
+ /**
+ * The object to test.
+ */
+ private PropertyChangeSupport change;
+
+ /**
+ * The received events.
+ */
+ private ArrayList events;
+
+ public void setUp()
+ {
+ change = new PropertyChangeSupport(this);
+ change.addPropertyChangeListener(this);
+ events = new ArrayList();
+ }
+
+ public void tearDown()
+ {
+ change = null;
+ events = null;
+ }
+
+ public void testNullNull()
+ {
+ change.firePropertyChange("test", null, null);
+ assertEquals(events.size(), 1);
+ PropertyChangeEvent ev = (PropertyChangeEvent) events.get(0);
+ assertEquals(ev.getPropertyName(), "test");
+ assertNull(ev.getNewValue());
+ assertNull(ev.getOldValue());
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+}
diff --git a/gnu/testlet/java/beans/PropertyDescriptor/CVS/Entries b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Entries
new file mode 100644
index 00000000..3ff1a3c9
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Entries
@@ -0,0 +1,3 @@
+/constructorTest1.java/1.1/Sun Nov 7 22:17:19 2004//
+/constructorTest2.java/1.1/Sun Nov 7 22:17:19 2004//
+D
diff --git a/gnu/testlet/java/beans/PropertyDescriptor/CVS/Repository b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Repository
new file mode 100644
index 00000000..4873c19b
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/PropertyDescriptor
diff --git a/gnu/testlet/java/beans/PropertyDescriptor/CVS/Root b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyDescriptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/PropertyDescriptor/constructorTest1.java b/gnu/testlet/java/beans/PropertyDescriptor/constructorTest1.java
new file mode 100644
index 00000000..c938fd02
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyDescriptor/constructorTest1.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.1
+
+//Copyright (C) 2003 Stephen Crawley <crawley@dstc.edu.au>
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.PropertyDescriptor;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.*;
+
+/** This tests the <code>PropertyDescriptor</code> using certain classes
+ * ofthe Java API (e.g. <code>java.awt.Component</code>).
+ *
+ * @author Stephen Crawley <crawley@dstc.edu.au>
+ * @author Robert Schuster <thebohemian@gmx.net>
+ */
+public class constructorTest1 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ boolean ok;
+
+ ok = true;
+ try
+ {
+ /* This constructor expects the property being read and writable.
+ * The "name" property of java.awt.Component fullfills this
+ * requirement and an IntrospectionException would mean an
+ * implementation error.
+ *
+ * note: this is a weak test because it does not check whether the
+ * PropertyDescriptor instance is created properly.
+ */
+ new PropertyDescriptor("name", java.awt.Component.class);
+ }
+ catch (IntrospectionException e)
+ {
+ harness.debug(e);
+ ok = false;
+ }
+ harness.check(ok);
+
+ ok = true;
+ try
+ {
+ /* Same constructor as above. The "visible" property is
+ * read- and writeable. An IntrospectionException would denote
+ * an error in the implementation.
+ *
+ * note: this is a weak test because it does not check whether the
+ * PropertyDescriptor instance is created properly.
+ */
+ new PropertyDescriptor("visible", java.awt.Component.class);
+ }
+ catch (IntrospectionException e)
+ {
+ harness.debug(e);
+ ok = false;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ /* This instantiantion should fail because java.lang.Object has no "setClass" method
+ * (= is read-only).
+ */
+ new PropertyDescriptor("class", java.lang.Object.class);
+ }
+ catch (IntrospectionException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ }
+
+}
diff --git a/gnu/testlet/java/beans/PropertyDescriptor/constructorTest2.java b/gnu/testlet/java/beans/PropertyDescriptor/constructorTest2.java
new file mode 100644
index 00000000..c8030b67
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyDescriptor/constructorTest2.java
@@ -0,0 +1,704 @@
+// Tags: JDK1.1
+
+//Copyright (C) 1998 Anthony Green <green@cygnus.com>
+//Copyright (C) 1998 Tom Tromey <tromey@cygnus.com>
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.beans.PropertyDescriptor;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.PropertyDescriptor;
+import java.beans.IntrospectionException;
+import java.lang.reflect.Method;
+
+/**
+ *
+ * @author Anthony Green <green@cygnus.com>
+ * @author Tom Tromey <tromey@cygnus.com>
+ * @author Robert Schuster <thebohemian@gmx.net>
+ */
+public class constructorTest2 implements Testlet
+{
+ /** Read method of <code>int</code> property "prop1".
+ *
+ * @return 0.
+ */
+ public int getProp1()
+ {
+ return 0;
+ }
+
+ /** Write method of <code>int</code> property "prop1".
+ *
+ * @param val Unused.
+ */
+ public void setProp1(int val)
+ {}
+
+ /** Read method of <code>boolean</code> property "prop2".
+ *
+ * This is the "get" variant of a <code>boolean</code> getter.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean getProp2()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "prop2".
+ *
+ * @param val Unused.
+ */
+ public void setProp2(boolean val)
+ {}
+
+ /** Read method of <code>boolean</code> property "prop3".
+ *
+ * This is the "is" variant of a <code>boolean</code> getter.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isProp3()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "prop3".
+ *
+ * @param val Unused.
+ */
+ public void setProp3(boolean val)
+ {}
+
+ /** Read method of <code>int</code> property "prop4".
+ *
+ * This demonstrates an "is" variant of a <code>int</code> getter,
+ * which is allowed in Sun's implementation of <code>PropertyDescriptor</code>
+ *
+ * @return <code>0</code>.
+ */
+ public int isProp4()
+ {
+ return 0;
+ }
+
+ /** Write method of <code>int</code> property "prop4".
+ *
+ * @param val Unused.
+ */
+ public void setProp4(int val)
+ {}
+
+ /** Read method of <code>boolean</code> property "prop5".<br/>
+ * <br>
+ * This is the "is" variant of the "getter". The "get" variant exists, too.
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ * <br/>
+ * Note: The difference to "prop6" is the order in which the methods are declared
+ * in the source code.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isProp5()
+ {
+ return false;
+ }
+
+ /** Read method of <code>boolean</code> property "prop5".<br/>
+ * <br>
+ * This is the "get" variant of the "getter". The "is" variant exists, too.
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ * <br/>
+ * Note: The difference to "prop6" is the order in which the methods are declared
+ * in the source code.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean getProp5()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "prop5".
+ *
+ * @param val Unused.
+ */
+ public void setProp5(boolean val)
+ {}
+
+ /** Read method of <code>boolean</code> property "prop6".<br/>
+ * <br>
+ * This is the "get" variant of the "getter". The "is" variant exists, too.
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ * <br/>
+ * Note: The difference to "prop5" is the order in which the methods are declared
+ * in the source code.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean getProp6()
+ {
+ return false;
+ }
+
+ /** Read method of <code>boolean</code> property "prop6".<br/>
+ * <br>
+ * This is the "is" variant of the "getter". The "get" variant exists, too.
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ * <br/>
+ * Note: The difference to "prop5" is the order in which the methods are declared
+ * in the source code.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isProp6()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "prop6".
+ *
+ * @param val Unused.
+ */
+ public void setProp6(boolean val)
+ {}
+
+ /** <code>boolean</code> read method of property "prop7" that
+ * has multiple "setter" or write methods with different argument types:
+ * {@link setProp7(boolean)} and {@link setProp(int)}.<br/>
+ * <br>
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ *
+ * @return <code>false</code>.
+ */
+ public boolean getProp7()
+ {
+ return false;
+ }
+
+ /** <code>boolean</code> write method of property "prop7" that
+ * has multiple "setter" or write methods with different argument types.
+ * See {@link setProp(int)} for the other write method.<br/>
+ * <br>
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ *
+ * @param val Unused.
+ */
+ public void setProp7(boolean val)
+ {}
+
+ /** <code>int</code> write method of property "prop7" that
+ * has multiple "setter" or write methods with different argument types.
+ * See {@link setProp(boolean)} for the other write method.<br/>
+ * <br>
+ * Sun's implementation of <code>PropertyDescriptor</code> allows that.<br/>
+ *
+ * @param val Unused.
+ */
+ public void setProp7(int val)
+ {}
+
+ /** Read method of <code>boolean</code> property "error1".
+ * This is a read-only property which is not allowed when using the
+ * <code>(String, Class)</code> constructor of <code>PropertyDescriptor</code>.<br/>
+ * <br/>
+ * This is the "get" variant of a read method.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean getError1()
+ {
+ return false;
+ }
+
+ /** Read method of <code>boolean</code> property "error2".
+ * This is a read-only property which is not allowed when using the
+ * <code>(String, Class)</code> constructor of <code>PropertyDescriptor</code>.<br/>
+ * <br/>
+ * This is the "is" variant of a read method.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isError2()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "error3".
+ * This is a write-only property which is not allowed when using the
+ * <code>(String, Class)</code> constructor of <code>PropertyDescriptor</code>.<br/>
+ * <br/>
+ *
+ * @param val Unused.
+ */
+ public void setError3(boolean val)
+ {}
+
+ /** Invalid read method of property "error4". It is illegal
+ * because read methods are not allowed to have a <code>void</code>
+ * return type.<br/>
+ * <br/>
+ * This method is the "get" variant of a read method.
+ */
+ public void getError4()
+ {}
+
+ /** Write method of erroneous property "error4".
+ *
+ * @param val Unused.
+ */
+ public void setError4(int val)
+ {}
+
+ /** Invalid read method of property "error5". It is illegal
+ * because read methods are not allowed to have a <code>void</code>
+ * return type.<br/>
+ * <br/>
+ * This method is the "is" variant of a read method.
+ */
+ public void isError5()
+ {}
+
+ /** Write method of erroneous property "error5".
+ *
+ * @param val Unused.
+ */
+ public void setError5(int val)
+ {}
+
+ /** Invalid read method of property "error6". It is illegal
+ * because its return type is not compatible to the write method's
+ * argument type.<br/>
+ * <br/>
+ * This method is the "get" variant of a read method.
+ *
+ * @return 0.
+ */
+ public int getError6()
+ {
+ return 0;
+ }
+
+ /** Invalid write method of property "error6". It is illegal
+ * because its argument type is not compatible to the read method's
+ * return type.<br/>
+ * <br/>
+ *
+ * @param val Unused.
+ */
+ public void setError6(boolean val)
+ {}
+
+ /** Invalid read method of property "error7". It is illegal
+ * because its return type is not compatible to the write method's
+ * argument type.<br/>
+ * <br/>
+ * This method is the "is" variant of a read method.
+ *
+ * @return 0.
+ */
+ public boolean isError7()
+ {
+ return false;
+ }
+
+ /** Invalid write method of property "error7". It is illegal
+ * because its argument type is not compatible to the read method's
+ * return type.<br/>
+ * <br/>
+ *
+ * @param val Unused.
+ */
+ public void setError7(int val)
+ {}
+
+ /** Invalid read method of property "error8". It is illegal
+ * because its return type is not compatible to the write method's
+ * argument type. This demonstrates a type mismatch with non-primitives.<br/>
+ * <br/>
+ * This method is the "get" variant of a read method.
+ *
+ * XXX: I doubt this is legal because the return type of the read method is assignable
+ * from the write method's argument type.
+ *
+ * @return 0.
+ */
+ public Object getError8()
+ {
+ return null;
+ }
+
+ /** Invalid write method of property "error8". It is illegal
+ * because its argument type is not compatible to the read method's
+ * return type. This demonstrates a type mismatch with non-primitives.<br/>
+ * <br/>
+ *
+ * @param val Unused.
+ */
+ public void setError8(String val)
+ {}
+
+ /** Invalid read method of property "error9". It is illegal
+ * because its return type is not compatible to the write method's
+ * argument type. This demonstrates a type mismatch with non-primitives.<br/>
+ * <br/>
+ * This method is the "get" variant of a read method.
+ *
+ * @return 0.
+ */
+ public String getError9()
+ {
+ return null;
+ }
+
+ /** Invalid write method of property "error9". It is illegal
+ * because its argument type is not compatible to the read method's
+ * return type. This demonstrates a type mismatch with non-primitives.<br/>
+ * <br/>
+ *
+ * @param val Unused.
+ */
+ public void setError9(Object val)
+ {}
+
+ /** Read method of <code>boolean</code> property "error10".
+ * The property is invalid because its write method does not accept
+ * a single argument.
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isError10()
+ {
+ return false;
+ }
+
+ /** Invalid write method of property "error10". It is illegal
+ * because it does not accept a single argument.
+ */
+ public void setError10()
+ {}
+
+ /** Read method of <code>boolean</code> property "error11".
+ * The property is invalid because its read method accepts an argument.<br/>
+ * <br>
+ * This is the "get" variant of a read method.
+ *
+ * @param arg Unused.
+ * @return <code>false</code>.
+ */
+ public boolean getError11(int arg)
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "error11".
+ * The property is invalid because of its read method.
+ *
+ * @param val Unused.
+ */
+ public void setError11(boolean val)
+ {}
+
+ /** Read method of <code>boolean</code> property "error12".
+ * The property is invalid because its read method accepts an argument.<br/>
+ * <br>
+ * This is the "is" variant of a read method.
+ *
+ * @param arg Unused.
+ * @return <code>false</code>.
+ */
+ public boolean isError12(int arg)
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "error12".
+ * The property is invalid because of its read method.
+ *
+ * @param val Unused.
+ */
+ public void setError12(boolean val)
+ {}
+
+ /** Read method of <code>boolean</code> property "error13".
+ * The property is invalid because of its write method.
+ * <br>
+ *
+ * @return <code>false</code>.
+ */
+ public boolean isError13()
+ {
+ return false;
+ }
+
+ /** Write method of <code>boolean</code> property "error13".
+ * The property is invalid because this method accepts an
+ * extra argument.<br/>
+ *
+ * @param val Unused.
+ * @param arg Unused.
+ */
+ public void setError13(boolean val, int arg)
+ {}
+
+ /** Read method of illegally named <code>Object</code> property.
+ *
+ * @return <code>null</code>.
+ */
+ public Object get()
+ {
+ return null;
+ }
+
+ /** Write method of illegally named <code>Object</code> property.
+ *
+ * @return <code>null</code>.
+ */
+ public void set(Object val)
+ {}
+
+ /** Read method of illegally named <code>Object</code> property.
+ * The method name does not respect the requirements of a JavaBean.
+ *
+ * @return <code>null</code>.
+ */
+ public Object getknotted()
+ {
+ return null;
+ }
+
+ /** Write method of illegally named <code>Object</code> property.
+ * The method name does not respect the requirements of a JavaBean.
+ *
+ * @param val Unused.
+ */
+ public void setknotted(Object val)
+ {}
+
+ // Test the PropertyDescriptor(Class, String) constructor
+ private void constructor1Tests(TestHarness harness)
+ {
+ String[] goodProperties =
+ { "prop1", "prop2", "prop3", "prop4", "prop5", "prop6", "prop7" };
+ for (int i = 0; i < goodProperties.length; i++)
+ {
+ harness.checkPoint(
+ "new PropertyDescriptor("
+ + goodProperties[i]
+ + ") (should succeed)");
+ PropertyDescriptor pd;
+ try
+ {
+ pd =
+ new PropertyDescriptor(
+ goodProperties[i],
+ constructorTest2.class);
+ harness.check(true);
+ }
+ catch (IntrospectionException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ continue;
+ }
+ harness.check(pd.getReadMethod() != null);
+ harness.check(pd.getWriteMethod() != null);
+ }
+
+ harness.checkPoint("string constructor - binding");
+ String[] bindProperties = { "prop5", "prop6" };
+ for (int i = 0; i < bindProperties.length; i++)
+ {
+ harness.checkPoint(
+ "new PropertyDescriptor("
+ + bindProperties[i]
+ + ") (check bindings)");
+ try
+ {
+ PropertyDescriptor pd =
+ new PropertyDescriptor(
+ bindProperties[i],
+ constructorTest2.class);
+
+ Class propType = pd.getPropertyType();
+
+ Method readMethod = pd.getReadMethod();
+
+ harness.check(readMethod != null);
+
+ if (readMethod == null)
+ {
+ continue;
+ }
+
+ harness.check(readMethod.getName().startsWith("is"));
+ Class resType = readMethod.getReturnType();
+ harness.check(resType.equals(propType));
+
+ Method writeMethod = pd.getWriteMethod();
+ harness.check(writeMethod != null);
+
+ if (writeMethod == null)
+ {
+ continue;
+ }
+
+ Class argType = writeMethod.getParameterTypes()[0];
+ harness.check(argType.equals(propType));
+
+ }
+ catch (IntrospectionException e)
+ {}
+
+ }
+
+ String[] badProperties =
+ {
+ "",
+ "foo",
+ "knotted",
+ "???",
+ "error1",
+ "error2",
+ "error3",
+ "error4",
+ "error5",
+ "error6",
+ "error7",
+ "error8",
+ "error9",
+ "error10",
+ "error11",
+ "error12",
+ "error13" };
+
+ for (int i = 0; i < badProperties.length; i++)
+ {
+ harness.checkPoint(
+ "new PropertyDescriptor("
+ + badProperties[i]
+ + ") (should fail)");
+ boolean ok = false;
+ try
+ {
+ new PropertyDescriptor(
+ badProperties[i],
+ constructorTest2.class);
+ }
+ catch (IntrospectionException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+ }
+
+ private void constructor2Tests(TestHarness harness)
+ {
+ String[][] goodProperties = { { "prop1", "getProp1", "setProp1" }, {
+ "prop2", "getProp2", "setProp2" }, {
+ "prop3", "isProp3", "setProp3" }, {
+ "prop4", "isProp4", "setProp4" }, {
+ "prop5", "isProp5", "setProp5" }, {
+ "prop5", "getProp5", "setProp5" }, {
+ "prop6", "isProp6", "setProp6" }, {
+ "prop6", "getProp6", "setProp6" }, {
+ "prop7", "getProp7", "setProp7" }, {
+ "prop7", "getProp7", null }, {
+ "prop7", null, "setProp7" }, {
+ "prop7", null, null }, };
+
+ for (int i = 0; i < goodProperties.length; i++)
+ {
+ harness.checkPoint(
+ "new PropertyDescriptor("
+ + goodProperties[i][0]
+ + ", "
+ + goodProperties[i][1]
+ + ", "
+ + goodProperties[i][2]
+ + ") (should succeed)");
+
+ boolean ok = true;
+
+ try
+ {
+ new PropertyDescriptor(
+ goodProperties[i][0],
+ constructorTest2.class,
+ goodProperties[i][1],
+ goodProperties[i][2]);
+ }
+ catch (IntrospectionException e)
+ {
+ harness.debug(e);
+ ok = false;
+ }
+ harness.check(ok);
+ }
+
+ String[][] badProperties = { { "foo", "getFoo", "setFoo" }, {
+ "foo2", null, "setFoo2" }, {
+ "foo3", "getFoo3", null }, {
+ "bar", "", "" }, {
+ "error4", "getError4", "setError4" }, {
+ "error5", "isError5", "setError5" }, {
+ "error6", "getError6", "setError6" }, {
+ "error7", "isError7", "setError7" }, {
+ "error8", "getError8", "setError8" }, {
+ "error9", "getError9", "setError9" }, {
+ "error10", "isError10", "setError10" }, {
+ "error11", "getError11", "setError11" }, {
+ "error12", "isError12", "setError12" }, {
+ "error13", "isError13", "setError13" }, };
+
+ for (int i = 0; i < badProperties.length; i++)
+ {
+ harness.checkPoint(
+ "new PropertyDescriptor("
+ + badProperties[i][0]
+ + ", "
+ + badProperties[i][1]
+ + ", "
+ + badProperties[i][2]
+ + ") (should fail)");
+ boolean ok = false;
+ try
+ {
+ new PropertyDescriptor(
+ badProperties[i][0],
+ constructorTest2.class,
+ badProperties[i][1],
+ badProperties[i][2]);
+ }
+ catch (IntrospectionException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ constructor1Tests(harness);
+ constructor2Tests(harness);
+ }
+
+}
diff --git a/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Entries b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Entries
new file mode 100644
index 00000000..8450b600
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Entries
@@ -0,0 +1,3 @@
+/getSource.java/1.2/Fri Nov 5 07:10:03 2004//
+/setValue.java/1.1/Sat Oct 30 22:30:03 2004//
+D
diff --git a/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Repository b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Repository
new file mode 100644
index 00000000..867ef257
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/PropertyEditorSupport
diff --git a/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Root b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyEditorSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/PropertyEditorSupport/getSource.java b/gnu/testlet/java/beans/PropertyEditorSupport/getSource.java
new file mode 100644
index 00000000..5e545494
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyEditorSupport/getSource.java
@@ -0,0 +1,54 @@
+//Tags: JDK1.5
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.PropertyEditorSupport;
+
+package gnu.testlet.java.beans.PropertyEditorSupport;
+
+import java.beans.PropertyEditorSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Very simple tests that check whether the (event) source of a
+ * PropertyEditorSupport instance is set correctly.
+ *
+ * @author Robert Schuster
+ */
+public class getSource implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ PropertyEditorSupport pes;
+
+ pes = new PropertyEditorSupport();
+
+ // pes-non argument: using the non-argument form of
+ // PropertyEditorSupport the event source should be the
+ // PropertyEditorSupport instance itself
+ harness.check(pes.getSource(), pes, "pes-non argument");
+
+ // pes-single argument: using the single argument constructor of
+ // PropertyEditorSupport the event source should be set to the given
+ // Object instance.
+ Object eventSource = new Object();
+ pes = new PropertyEditorSupport(eventSource);
+
+ harness.check(pes.getSource(), eventSource, "pes-single argument");
+ }
+}
diff --git a/gnu/testlet/java/beans/PropertyEditorSupport/setValue.java b/gnu/testlet/java/beans/PropertyEditorSupport/setValue.java
new file mode 100644
index 00000000..91979943
--- /dev/null
+++ b/gnu/testlet/java/beans/PropertyEditorSupport/setValue.java
@@ -0,0 +1,145 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.PropertyEditorSupport;
+
+package gnu.testlet.java.beans.PropertyEditorSupport;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyEditorSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/** This test checks whether PropertyEditorSupport.setValue() and its event notification
+ * works as specified.
+ *
+ * These tests have been written as a reaction on classpath's bug #10799
+ * (http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=10799).
+ *
+ * @author Robert Schuster
+ */
+public class setValue implements Testlet
+{
+
+ private boolean nonNullPropertyChanged;
+
+ private boolean nullPropertyChanged;
+
+ // declaration is needed for anonymous class access without using 'final'
+ private PropertyEditorSupport pes;
+
+ public void test(final TestHarness harness)
+ {
+ // for 1.4 compatibility it is needed to subclass PropertyEditorSupport because the constructors are
+ // 'protected' (they are 'public' in 1.5)
+ pes = new PropertyEditorSupport()
+ {};
+
+ final Object newValue = "new value";
+
+ pes.addPropertyChangeListener(new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ nonNullPropertyChanged = true;
+
+ // the PropertyEditorSupport instance should be the event source
+ // (according to documentation of its zero argument constructor)
+ harness.check(
+ event.getSource(),
+ pes,
+ "pes1-event-event source");
+
+ // the property name for an PropertyEditorSupport object is always null
+ harness.check(
+ event.getPropertyName(),
+ null,
+ "pes1-event-property name");
+
+ // according to documentation of PropertyChangeEvent the old and new value should be
+ // null if the property name is null.
+ harness.check(
+ event.getOldValue(),
+ null,
+ "pes1-event-old value");
+ harness.check(
+ event.getNewValue(),
+ null,
+ "pes1-event-new value");
+
+ // at this point the PropertyEditorSupport instance should have been updated to the new value already
+ harness.check(pes.getValue(), newValue, "pes1-new value");
+ }
+
+ });
+
+ // this method should trigger the calling of anonymous PropertyChangeListener above
+ pes.setValue(newValue);
+
+ harness.check(
+ nonNullPropertyChanged,
+ "pes1-PropertyChangeListener call");
+
+ // creates another PropertyEditorSupport instance for a slightly different test
+ pes = new PropertyEditorSupport()
+ {};
+
+ pes.addPropertyChangeListener(new PropertyChangeListener()
+ {
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ nullPropertyChanged = true;
+
+ // the same as in pes1 tests
+ harness.check(
+ event.getSource(),
+ pes,
+ "pes2-event-event source");
+
+ harness.check(
+ event.getPropertyName(),
+ null,
+ "pes2-event-property name");
+
+ harness.check(
+ event.getOldValue(),
+ null,
+ "pes2-event-old value");
+
+ harness.check(
+ event.getNewValue(),
+ null,
+ "pes2-event-new value");
+
+ // the new value should be null, too
+ harness.check(pes.getValue(), null, "pes2-new value");
+
+ }
+
+ });
+
+ // changing the PropertyEditorSupport value (which is null at this moment) to null should
+ // cause the PropertyChangeListener to get notified
+ pes.setValue(null);
+
+ harness.check(nullPropertyChanged, "pes2-PropertyChangeListener call");
+ }
+
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Entries b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Entries
new file mode 100644
index 00000000..53f41fd0
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Entries
@@ -0,0 +1,10 @@
+/MySimpleBeanInfo.java/1.1/Thu Nov 9 12:28:16 2006//
+/getAdditionalBeanInfo.java/1.1/Thu Nov 9 12:28:16 2006//
+/getBeanDescriptor.java/1.1/Thu Nov 9 12:28:16 2006//
+/getDefaultEventIndex.java/1.1/Thu Nov 9 12:28:16 2006//
+/getDefaultPropertyIndex.java/1.1/Thu Nov 9 12:28:16 2006//
+/getEventSetDescriptors.java/1.1/Thu Nov 9 12:28:16 2006//
+/getIcon.java/1.1/Thu Nov 9 12:28:16 2006//
+/loadImage.java/1.2/Wed Jun 25 08:07:51 2008//
+/testImage1.gif/1.1/Thu Nov 9 12:28:16 2006/-kb/
+D
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Repository b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Repository
new file mode 100644
index 00000000..c0a65de6
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/SimpleBeanInfo
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Root b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/MySimpleBeanInfo.java b/gnu/testlet/java/beans/SimpleBeanInfo/MySimpleBeanInfo.java
new file mode 100644
index 00000000..63bd8029
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/MySimpleBeanInfo.java
@@ -0,0 +1,36 @@
+/* MySimpleBeanInfo.java -- support class for testing.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import java.beans.SimpleBeanInfo;
+
+public class MySimpleBeanInfo extends SimpleBeanInfo
+{
+
+ public MySimpleBeanInfo()
+ {
+ super();
+ }
+
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getAdditionalBeanInfo.java b/gnu/testlet/java/beans/SimpleBeanInfo/getAdditionalBeanInfo.java
new file mode 100644
index 00000000..8fa339e8
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getAdditionalBeanInfo.java
@@ -0,0 +1,39 @@
+/* getAdditionalBeanInfo.java -- some checks for the getAdditionalBeanInfo()
+ method in the SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getAdditionalBeanInfo implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getAdditionalBeanInfo(), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getBeanDescriptor.java b/gnu/testlet/java/beans/SimpleBeanInfo/getBeanDescriptor.java
new file mode 100644
index 00000000..79199b6d
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getBeanDescriptor.java
@@ -0,0 +1,39 @@
+/* getBeanDescriptor.java -- some checks for the getBeanDescriptor() method
+ in the SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getBeanDescriptor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getBeanDescriptor(), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultEventIndex.java b/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultEventIndex.java
new file mode 100644
index 00000000..0a50bc22
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultEventIndex.java
@@ -0,0 +1,39 @@
+/* getDefaultEventIndex.java -- some checks for the getDefaultEventIndex()
+ method in the SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.1
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getDefaultEventIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getDefaultEventIndex(), -1);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultPropertyIndex.java b/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultPropertyIndex.java
new file mode 100644
index 00000000..e737c4ae
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getDefaultPropertyIndex.java
@@ -0,0 +1,39 @@
+/* getDefaultPropertyIndex.java -- some checks for the getDefaultPropertyIndex()
+ method in the SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.1
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getDefaultPropertyIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getDefaultPropertyIndex(), -1);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getEventSetDescriptors.java b/gnu/testlet/java/beans/SimpleBeanInfo/getEventSetDescriptors.java
new file mode 100644
index 00000000..743364e7
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getEventSetDescriptors.java
@@ -0,0 +1,39 @@
+/* getEventSetDescriptors.java -- some checks for the getEventSetDescriptors()
+ method in the SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getEventSetDescriptors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getEventSetDescriptors(), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/getIcon.java b/gnu/testlet/java/beans/SimpleBeanInfo/getIcon.java
new file mode 100644
index 00000000..37b36e94
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/getIcon.java
@@ -0,0 +1,43 @@
+/* getIcon.java -- some checks for the getIcon() method in the SimpleBeanInfo
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.SimpleBeanInfo;
+
+public class getIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleBeanInfo i = new SimpleBeanInfo();
+ harness.check(i.getIcon(SimpleBeanInfo.ICON_COLOR_16x16), null);
+ harness.check(i.getIcon(SimpleBeanInfo.ICON_COLOR_32x32), null);
+ harness.check(i.getIcon(SimpleBeanInfo.ICON_MONO_16x16), null);
+ harness.check(i.getIcon(SimpleBeanInfo.ICON_MONO_32x32), null);
+ harness.check(i.getIcon(-99), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java b/gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java
new file mode 100644
index 00000000..daed9625
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/loadImage.java
@@ -0,0 +1,64 @@
+/* loadImage.java -- some checks for the loadImage() method in the
+ SimpleBeanInfo class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MySimpleBeanInfo
+// Files: testImage1.gif
+
+package gnu.testlet.java.beans.SimpleBeanInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Image;
+import java.awt.MediaTracker;
+import java.awt.Panel;
+import java.awt.image.ImageObserver;
+
+public class loadImage implements Testlet, ImageObserver
+{
+ public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+public void test(TestHarness harness)
+ {
+ MySimpleBeanInfo i = new MySimpleBeanInfo();
+ Image image = i.loadImage("testImage1.gif");
+ MediaTracker mt = new MediaTracker(new Panel());
+ mt.addImage(image, 0);
+ try
+ {
+ mt.waitForAll();
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(!mt.isErrorAny());
+ harness.check(image.getWidth(null), 2);
+ harness.check(image.getHeight(null), 2);
+ harness.check(i.loadImage("someImageThatDoesNotExist.png"), null);
+ harness.check(i.loadImage(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/SimpleBeanInfo/testImage1.gif b/gnu/testlet/java/beans/SimpleBeanInfo/testImage1.gif
new file mode 100644
index 00000000..8dd709f6
--- /dev/null
+++ b/gnu/testlet/java/beans/SimpleBeanInfo/testImage1.gif
Binary files differ
diff --git a/gnu/testlet/java/beans/Statement/CVS/Entries b/gnu/testlet/java/beans/Statement/CVS/Entries
new file mode 100644
index 00000000..aea2865f
--- /dev/null
+++ b/gnu/testlet/java/beans/Statement/CVS/Entries
@@ -0,0 +1,2 @@
+/check.java/1.1/Sun Jun 20 04:11:31 2004//
+D
diff --git a/gnu/testlet/java/beans/Statement/CVS/Repository b/gnu/testlet/java/beans/Statement/CVS/Repository
new file mode 100644
index 00000000..50efff8d
--- /dev/null
+++ b/gnu/testlet/java/beans/Statement/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/Statement
diff --git a/gnu/testlet/java/beans/Statement/CVS/Root b/gnu/testlet/java/beans/Statement/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/Statement/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/Statement/check.java b/gnu/testlet/java/beans/Statement/check.java
new file mode 100644
index 00000000..a8f63f11
--- /dev/null
+++ b/gnu/testlet/java/beans/Statement/check.java
@@ -0,0 +1,160 @@
+// Test Statement.check().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.4
+
+// Test features added by JDK 1.4
+
+package gnu.testlet.java.beans.Statement;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.beans.Statement;
+
+public class check implements Testlet
+{
+ public static int x = 0;
+
+ public static void test1(int y) { x = y; }
+
+ public class dummy
+ {
+ public String s;
+ public int x;
+ public dummy() { s = ""; x = 5;}
+
+ public String method(String s)
+ {
+ this.s = s;
+ return this.s + " " + this.x;
+ }
+
+ public String method(String s, int y)
+ {
+ this.s = s;
+ this.x = y + 1;
+ return this.s + " " + this.x;
+ }
+
+ public String method1(String s, Integer y)
+ {
+ this.s = s;
+ this.x = y.intValue();
+ return this.s + " " + this.x;
+ }
+
+// public static String method2(String s)
+// {
+// return s + "static";
+// }
+ }
+
+ public void test (TestHarness harness)
+ {
+ dummy d = new dummy();
+
+ // Check that we can create and execute a statement
+ Object arg1[] = {"test"};
+ Statement stmt = new Statement(d, "method", arg1);
+ harness.check(stmt != null);
+ harness.check(stmt.getTarget() == d);
+ harness.check(stmt.getMethodName().equals("method"));
+
+ try
+ {
+ stmt.execute();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Statement execute");
+ }
+
+ harness.check(d.s.equals("test"));
+ harness.check(d.x == 5);
+
+ // Check that we can create and execute a statement and that a
+ // wrapper class resolves to a method taking a primitive.
+ Object arg2[] = {"test", new Integer(6) };
+ stmt = new Statement(d, "method", arg2);
+ harness.check(stmt != null);
+
+ Object stmtArgs[] = stmt.getArguments();
+ harness.check(stmtArgs.length == arg2.length && stmtArgs[0] == arg2[0]
+ && stmtArgs[1] == arg2[1]);
+
+ try
+ {
+ stmt.execute();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Statement execute");
+ }
+
+ harness.check(d.s.equals("test"));
+ harness.check(d.x == 7);
+
+
+ // Check that we can create and execute a statement for a static method.
+ Object arg3[] = {new Integer(1)};
+ stmt = new Statement(this, "test1", arg3);
+
+ try
+ {
+ stmt.execute();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Static method execute " + e.toString());
+ }
+ harness.check(x == 1);
+
+
+ // Check that we can call get and set on an array object in a statement
+ int iarray[] = {1, 2, 3, 4, 5};
+ Object arg4[] = { new Integer(2), new Integer(6) };
+
+ stmt = new Statement(iarray, "set", arg4);
+ try
+ {
+ stmt.execute();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Array set");
+ }
+
+ Object arg5[] = { new Integer(2) };
+ stmt = new Statement(iarray, "get", arg5);
+
+ try
+ {
+ stmt.execute();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Array get");
+ }
+
+ harness.check(iarray[2] == 6);
+ }
+
+}
diff --git a/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Entries b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Entries
new file mode 100644
index 00000000..37e8520d
--- /dev/null
+++ b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Entries
@@ -0,0 +1,2 @@
+/addVetoableChangeListener.java/1.1/Wed Jun 28 14:29:34 2006//
+D
diff --git a/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Repository b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Repository
new file mode 100644
index 00000000..a68e686f
--- /dev/null
+++ b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/VetoableChangeSupport
diff --git a/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Root b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/VetoableChangeSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/VetoableChangeSupport/addVetoableChangeListener.java b/gnu/testlet/java/beans/VetoableChangeSupport/addVetoableChangeListener.java
new file mode 100644
index 00000000..a2664eef
--- /dev/null
+++ b/gnu/testlet/java/beans/VetoableChangeSupport/addVetoableChangeListener.java
@@ -0,0 +1,81 @@
+/* addVetoableChangeListener.java -- some checks for the
+ addVetoableChangeListener() method in the VetoableChangeSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.beans.VetoableChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+import java.beans.VetoableChangeSupport;
+
+public class addVetoableChangeListener
+ implements Testlet, VetoableChangeListener
+{
+ public void vetoableChange(PropertyChangeEvent e)
+ throws PropertyVetoException
+ {
+ }
+
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(VetoableChangeListener)");
+ VetoableChangeSupport vcs = new VetoableChangeSupport(this);
+ harness.check(vcs.getVetoableChangeListeners().length, 0);
+ vcs.addVetoableChangeListener(this);
+ harness.check(vcs.getVetoableChangeListeners().length, 1);
+ vcs.addVetoableChangeListener(null);
+ harness.check(vcs.getVetoableChangeListeners().length, 1);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(String, VetoableChangeListener)");
+ VetoableChangeSupport vcs = new VetoableChangeSupport(this);
+ harness.check(vcs.getVetoableChangeListeners().length, 0);
+ vcs.addVetoableChangeListener("A", this);
+ vcs.addVetoableChangeListener("B", this);
+ harness.check(vcs.getVetoableChangeListeners().length, 2);
+ harness.check(vcs.getVetoableChangeListeners("A").length, 1);
+ harness.check(vcs.getVetoableChangeListeners("B").length, 1);
+ vcs.addVetoableChangeListener("B", null);
+ harness.check(vcs.getVetoableChangeListeners().length, 2);
+ harness.check(vcs.getVetoableChangeListeners("B").length, 1);
+
+ // try null property name
+ vcs.addVetoableChangeListener(null, this);
+ harness.check(vcs.getVetoableChangeListeners().length, 2);
+ harness.check(vcs.getVetoableChangeListeners("A").length, 1);
+ harness.check(vcs.getVetoableChangeListeners("B").length, 1);
+ }
+
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/CVS/Entries b/gnu/testlet/java/beans/XMLDecoder/CVS/Entries
new file mode 100644
index 00000000..904f87ff
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/CVS/Entries
@@ -0,0 +1,7 @@
+/DecoderTestHelper.java/1.2/Fri Feb 18 03:09:40 2005//
+/DoubleArrayChecker.java/1.1/Fri Feb 18 03:09:40 2005//
+/EqualityChecker.java/1.1/Fri Oct 15 18:59:52 2004//
+/IntArrayChecker.java/1.1/Fri Oct 15 18:59:52 2004//
+/PointArrayChecker.java/1.2/Fri Feb 18 03:09:40 2005//
+/jdk14.java/1.3/Thu Apr 28 07:44:23 2005//
+D
diff --git a/gnu/testlet/java/beans/XMLDecoder/CVS/Entries.Log b/gnu/testlet/java/beans/XMLDecoder/CVS/Entries.Log
new file mode 100644
index 00000000..98990f29
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/data////
diff --git a/gnu/testlet/java/beans/XMLDecoder/CVS/Repository b/gnu/testlet/java/beans/XMLDecoder/CVS/Repository
new file mode 100644
index 00000000..004873ce
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/XMLDecoder
diff --git a/gnu/testlet/java/beans/XMLDecoder/CVS/Root b/gnu/testlet/java/beans/XMLDecoder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java b/gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java
new file mode 100644
index 00000000..4f000cbb
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/DecoderTestHelper.java
@@ -0,0 +1,195 @@
+//Tags: not-a-test
+
+//Uses: EqualityChecker
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.XMLDecoder;
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.TestHarness;
+
+import java.beans.ExceptionListener;
+import java.beans.XMLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/** Helper class for tests involving the XMLDecoder. It provides a simple environment to set up
+ * a sequence of objects which is expected to be decoded and allows the registration of an
+ * <code>EqualityChecker</code> instance for objects which do not provide a proper implementation
+ * of <code>Object.equals(Object)</code>.
+ *
+ * Note that the XMLDecoder commonly relies on a SAX parser being available.
+ *
+ * @author Robert Schuster
+ *
+ */
+class DecoderTestHelper
+{
+ private List expectedObjects = new ArrayList();
+ private Map checkers = new HashMap();
+ private String xmlFile;
+ private String name;
+
+ /** Creates the environment for a testcase of the XMLDecoder. The argument string must
+ * be pointing to a XML file which can be loaded as a resource from the classpath. See
+ * <code>TestHarness.getResourceStream()</code> for details.
+ *
+ * @param name A name that is displayed in case of errors
+ * @param xmlResourceFilename A filename pointing to a XML file which can be loaded as a resource.
+ */
+ DecoderTestHelper(String name, String xmlResourceFilename)
+ {
+ if (name == null || name.length() == 0)
+ throw new IllegalArgumentException("Please provide a name for this test.");
+
+ this.name = name;
+
+ if (xmlResourceFilename == null)
+ throw new IllegalArgumentException("No filename to a XML resource file provided.");
+ xmlFile = xmlResourceFilename;
+ }
+
+ /** Adds an object to the sequence of expected objects to be decoded.
+ *
+ * @param obj Object which is expected to be decoded.
+ */
+ protected final void addObject(Object obj)
+ {
+ expectedObjects.add(obj);
+ }
+
+ /** Adds an object to the sequence of expectedd objects to be an decoded and provides a specialized
+ * <code>EqualityChecker</code> for the instance. Providing an <code>EqualityChecker</code> is useful
+ * if the class of the given object does not properly support the <code>Object.equals(Object)</code>
+ * method and cannot be changed.
+ *
+ * Note that only once <code>EqualityChecker</code> per expected object instance is allowed. If you
+ * need the same object more than once in the sequence use the one-parameter form of
+ * <code>addObject()</code> after the first registration only.
+ *
+ * @param obj Object which is expected to be decoded.
+ * @param eqChecker A specialized <code>EqualityChecker</code> implementation for the given object.
+ */
+ protected final void addObject(Object obj, EqualityChecker eqChecker)
+ {
+ // prevents registering an EqualityChecker more than once because such behaviour is not supported
+ if (checkers.containsKey(obj))
+ throw new IllegalStateException("Already provided an EqualityChecker instance for object '"
+ + obj + "'.");
+
+ checkers.put(obj, eqChecker);
+
+ addObject(obj);
+ }
+
+ final void doComparison(final TestHarness harness)
+ {
+ // creates an ExceptionListener implementation that lets the test fail
+ // if one occurs
+ ExceptionListener exListener = new ExceptionListener()
+ {
+ public void exceptionThrown(Exception e)
+ {
+ harness.fail(name
+ + " - decode.readObject(): unexpected exception occured during decoding: "
+ + e);
+ }
+ };
+
+ XMLDecoder decoder = null;
+
+ // tries to initialize the XMLDecoder
+ try
+ {
+ decoder = new XMLDecoder(harness.getResourceStream(xmlFile), null,
+ exListener);
+ }
+ catch (ResourceNotFoundException e)
+ {
+ harness.fail(name
+ + " - create XMLDecoder: unable to load resource from classpath: "
+ + xmlFile);
+ return;
+ }
+
+ /* compares each object of the XMLDecoder with the one that is expected either using
+ * Object.equals() or using a specialized EqualityChecker instance
+ */
+ Iterator ite = expectedObjects.iterator();
+ while (ite.hasNext())
+ {
+ Object expectedObject = ite.next();
+
+ try
+ {
+ Object decodedObject = decoder.readObject();
+
+ if (checkers.containsKey(expectedObject))
+ {
+ EqualityChecker eq = (EqualityChecker) checkers.get(expectedObject);
+
+ harness.check(eq.areEqual(decodedObject, expectedObject),
+ name + " - decoder.readObject()-loop");
+ }
+ else
+ harness.check(decodedObject, expectedObject,
+ name + " - decoder.readObject()-loop");
+ }
+ catch (ArrayIndexOutOfBoundsException aioobe)
+ {
+ decoder.close();
+
+ // that means that not enough objects where decoded
+ harness.fail(name + " - decoder.close()");
+
+ harness.verbose(name
+ + "decoder.close(): no more objects provided by XMLDecoder "
+ + "although at least one more was expected");
+
+ return;
+ }
+ }
+
+ /* After all expected objects have been compared there should not be any object left in the decoder.
+ * Since there is no query method for this we have to invoke readObject() which should throw an
+ * ArrayIndexOutOfBoundsException if there is no object left.
+ */
+ try
+ {
+ decoder.readObject();
+ }
+ catch (ArrayIndexOutOfBoundsException aioobe)
+ {
+ // this exception is expected
+ decoder.close();
+
+ return;
+ }
+
+ // there was at least one object left if we reach this code
+ harness.fail(name
+ + " - readObject()-final: at least one unexpected object was left in the decoder");
+
+ decoder.close();
+ }
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/DoubleArrayChecker.java b/gnu/testlet/java/beans/XMLDecoder/DoubleArrayChecker.java
new file mode 100644
index 00000000..3e5d9911
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/DoubleArrayChecker.java
@@ -0,0 +1,60 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+// 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.java.beans.XMLDecoder;
+
+
+/** Simply expects two double arrays and compares their content for equality.
+ * This is used for the growableDoubleArrayTest and is needed because the
+ * following comparison results to <code>false</code> in Java
+ * <code>new double[] { 1, 2, 3 }.equals(new double[] { 1, 2, 3 })</code>.
+ *
+ * @author Robert Schuster
+ */
+class DoubleArrayChecker implements EqualityChecker
+{
+ public boolean areEqual(Object firstObject, Object secondObject)
+ {
+ try
+ {
+ if (! Class.forName("[D").isInstance(firstObject))
+ return false;
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ throw new InternalError("VM was unable to return the class representing an double array.");
+ }
+
+ double[] decodedArray = (double[]) firstObject;
+ double[] expectedArray = (double[]) secondObject;
+
+ if (decodedArray.length != expectedArray.length)
+ return false;
+
+ int size = decodedArray.length;
+ for (int i = 0; i < size; i++)
+ {
+ if (decodedArray[i] != expectedArray[i])
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/EqualityChecker.java b/gnu/testlet/java/beans/XMLDecoder/EqualityChecker.java
new file mode 100644
index 00000000..b79a1512
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/EqualityChecker.java
@@ -0,0 +1,41 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.XMLDecoder;
+
+
+/** Simple interface which can be implemented to provide the functionality
+ * of <code>Object.equals(Object)</code> for classes which cannot be changed
+ * and do not provide this feature.
+ *
+ * @author Robert Schuster
+ *
+ */
+interface EqualityChecker
+{
+ /** Returns <code>true</code> if the two given objects are semantically
+ * equal.
+ *
+ * @param firstObject The first object used in the check.
+ * @param secondObject The second object used in the check.
+ * @return Whether the first and second object are semantically equal.
+ */
+ boolean areEqual(Object firstObject, Object secondObject);
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/IntArrayChecker.java b/gnu/testlet/java/beans/XMLDecoder/IntArrayChecker.java
new file mode 100644
index 00000000..ff4570db
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/IntArrayChecker.java
@@ -0,0 +1,60 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+// 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.java.beans.XMLDecoder;
+
+
+/** Simply expects two int arrays and compares their content for equality.
+ * This is used for the intArrayTest and the growableIntArrayTest and is
+ * needed because the following comparison results to <code>false</code>
+ * in Java <code>new int[] { 1, 2, 3 }.equals(new int[] { 1, 2, 3 })</code>.
+ *
+ * @author Robert Schuster
+ */
+class IntArrayChecker implements EqualityChecker
+{
+ public boolean areEqual(Object firstObject, Object secondObject)
+ {
+ try
+ {
+ if (! Class.forName("[I").isInstance(firstObject))
+ return false;
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ throw new InternalError("VM was unable to return the class representing an int array.");
+ }
+
+ int[] decodedArray = (int[]) firstObject;
+ int[] expectedArray = (int[]) secondObject;
+
+ if (decodedArray.length != expectedArray.length)
+ return false;
+
+ int size = decodedArray.length;
+ for (int i = 0; i < size; i++)
+ {
+ if (decodedArray[i] != expectedArray[i])
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java b/gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java
new file mode 100644
index 00000000..0fe980bb
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/PointArrayChecker.java
@@ -0,0 +1,68 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+// 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.java.beans.XMLDecoder;
+
+import java.awt.Point;
+
+/** Simply expects two java.awt.Point arrays and compares their content
+ * for equality.
+ * This is used for the pointArrayTest and the growablePointArrayTest.
+ * See <code>IntArrayChecker</code> for a reason why this
+ * <code>EqualityChecker</code> implementation is neccessary.
+ *
+ * Note: This implementation assumes that the array contains <b>only</b>
+ * non-null values.
+ *
+ * @author Robert Schuster
+ */
+class PointArrayChecker implements EqualityChecker
+{
+ public boolean areEqual(Object firstObject, Object secondObject)
+ {
+ try
+ {
+ // assure that the decoded object is really a java.awt.Point array
+ // using reflection alchemy :)
+ if (! Class.forName("[Ljava.awt.Point;").isInstance(firstObject))
+ return false;
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ throw new InternalError("VM was unable to return the class representing an java.awt.Point array.");
+ }
+
+ Point[] decodedArray = (Point[]) firstObject;
+ Point[] expectedArray = (Point[]) secondObject;
+
+ if (decodedArray.length != expectedArray.length)
+ return false;
+
+ int size = decodedArray.length;
+ for (int i = 0; i < size; i++)
+ {
+
+ if (!decodedArray[i].equals(expectedArray[i]))
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/CVS/Entries b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Entries
new file mode 100644
index 00000000..c69b3c6c
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Entries
@@ -0,0 +1,16 @@
+/boolean.xml/1.2/Sat Oct 30 22:26:46 2004//
+/byte.xml/1.2/Sat Oct 30 22:26:46 2004//
+/double.xml/1.2/Sat Oct 30 22:26:46 2004//
+/float.xml/1.2/Sat Oct 30 22:26:46 2004//
+/growableDoubleArray.xml/1.1/Fri Feb 18 03:09:41 2005//
+/growableIntArray.xml/1.2/Sat Oct 30 22:26:46 2004//
+/growableIntArray2.xml/1.1/Fri Feb 18 03:09:41 2005//
+/growablePointArray.xml/1.2/Sat Oct 30 22:26:46 2004//
+/int.xml/1.2/Sat Oct 30 22:26:46 2004//
+/intArray.xml/1.2/Sat Oct 30 22:26:46 2004//
+/list.xml/1.2/Sat Oct 30 22:26:46 2004//
+/long.xml/1.2/Sat Oct 30 22:26:46 2004//
+/pointArray.xml/1.2/Sat Oct 30 22:26:46 2004//
+/short.xml/1.2/Sat Oct 30 22:26:46 2004//
+/simpleElements.xml/1.2/Sat Oct 30 22:26:46 2004//
+D
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/CVS/Repository b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Repository
new file mode 100644
index 00000000..882105a1
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/XMLDecoder/data
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/CVS/Root b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/boolean.xml b/gnu/testlet/java/beans/XMLDecoder/data/boolean.xml
new file mode 100644
index 00000000..769aee40
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/boolean.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for booleanTest
+-->
+
+<java>
+ <boolean>true</boolean>
+ <boolean>false</boolean>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/byte.xml b/gnu/testlet/java/beans/XMLDecoder/data/byte.xml
new file mode 100644
index 00000000..8a3f6e7f
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/byte.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for byteTest
+-->
+
+<java>
+ <byte>-120</byte>
+ <byte>0</byte>
+
+ <!-- Byte.MIN_VALUE -->
+ <byte>-128</byte>
+
+ <!-- Byte.MAX_VALUE -->
+ <byte>127</byte>
+
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/double.xml b/gnu/testlet/java/beans/XMLDecoder/data/double.xml
new file mode 100644
index 00000000..53ae5b2c
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/double.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for doubleTest
+-->
+
+<java>
+ <!-- Math.PI -->
+ <double>3.141592653589793</double>
+
+ <!-- Math.E -->
+ <double>2.718281828459045</double>
+
+ <!-- 2^-16 -->
+ <double>1.52587890625E-5</double>
+
+ <!-- Double.MIN_VALUE -->
+ <double>4.9E-324</double>
+
+ <!-- Double.MAX_VALUE -->
+ <double>1.7976931348623157E308</double>
+
+ <!-- Double.NaN -->
+ <double>NaN</double>
+
+ <!-- Double.POSITIVE_INFINITY -->
+ <double>Infinity</double>
+
+ <!-- Double.NEGATIVE_INFINITY -->
+ <double>-Infinity</double>
+
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/float.xml b/gnu/testlet/java/beans/XMLDecoder/data/float.xml
new file mode 100644
index 00000000..6cc0f5b8
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/float.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for floatTest
+-->
+
+<java>
+ <!-- (float) Math.PI -->
+ <float>3.1415927</float>
+
+ <!-- (float) Math.E -->
+ <float>2.7182817</float>
+
+ <!-- (float) 2^-16 -->
+ <float>1.5258789E-5</float>
+
+ <float>0</float>
+
+ <!-- Float.NaN -->
+ <float>NaN</float>
+
+ <!-- Float.POSITIVE_INFINITY -->
+ <float>Infinity</float>
+
+ <!-- Float.NEGATIVE_INFINITY -->
+ <float>-Infinity</float>
+
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/growableDoubleArray.xml b/gnu/testlet/java/beans/XMLDecoder/data/growableDoubleArray.xml
new file mode 100644
index 00000000..52106fd2
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/growableDoubleArray.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for growableDoubleArrayTest
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+ <array class="double">
+
+ <byte>0</byte>
+
+ <short>1</short>
+
+ <int>2</int>
+
+ <long>3</long>
+
+ <float>4</float>
+
+ <double>5</double>
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml b/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml
new file mode 100644
index 00000000..1a9d742b
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for growableIntArrayTest
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+ <array class="int">
+
+ <int>0</int>
+
+ <int>1</int>
+
+ <int>2</int>
+
+ <int>3</int>
+
+ <int>4</int>
+
+ <int>5</int>
+
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray2.xml b/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray2.xml
new file mode 100644
index 00000000..fd1884ae
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/growableIntArray2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for growableIntArrayTest2
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+ <array class="int">
+
+ <byte>0</byte>
+
+ <short>1</short>
+
+ <int>2</int>
+
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml b/gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml
new file mode 100644
index 00000000..6f882d81
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/growablePointArray.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for growablePointArrayTest
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+
+ <array class="java.awt.Point">
+
+ <object class="java.awt.Point">
+ <int>0</int>
+ <int>0</int>
+ </object>
+
+ <object class="java.awt.Point">
+ <int>1</int>
+ <int>1</int>
+ </object>
+
+ <object class="java.awt.Point">
+ <int>2</int>
+ <int>2</int>
+ </object>
+
+ <object class="java.awt.Point">
+ <int>3</int>
+ <int>3</int>
+ </object>
+
+ <object class="java.awt.Point">
+ <int>4</int>
+ <int>4</int>
+ </object>
+
+ <object class="java.awt.Point">
+ <int>5</int>
+ <int>5</int>
+ </object>
+
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/int.xml b/gnu/testlet/java/beans/XMLDecoder/data/int.xml
new file mode 100644
index 00000000..187e22f7
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/int.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for intTest
+-->
+
+<java>
+ <int>54321</int>
+
+ <int>-54321</int>
+
+ <!-- Integer.MIN_VALUE -->
+ <int>-2147483648</int>
+
+ <!-- Integer.MAX_VALUE -->
+ <int>2147483647</int>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/intArray.xml b/gnu/testlet/java/beans/XMLDecoder/data/intArray.xml
new file mode 100644
index 00000000..664e4dd7
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/intArray.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for intArrayTest
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+ <array class="int" length="3">
+ <void index="0">
+ <int>1</int>
+ </void>
+
+ <void index="1">
+ <int>2</int>
+ </void>
+
+ <void index="2">
+ <int>3</int>
+ </void>
+
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/list.xml b/gnu/testlet/java/beans/XMLDecoder/data/list.xml
new file mode 100644
index 00000000..2ef025d9
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/list.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for listTest
+-->
+
+<java>
+
+ <!-- ArrayList -->
+ <object id="arrayList" class="java.util.ArrayList">
+ <void method="add">
+ <int>100</int>
+ </void>
+
+ <void method="add">
+ <string>Hello World</string>
+ </void>
+
+ <void method="add">
+ <class>java.lang.ref.WeakReference</class>
+ </void>
+ </object>
+
+ <!-- LinkedList with same content -->
+ <object id="linkedList" class="java.util.LinkedList">
+ <void method="add">
+ <int>100</int>
+ </void>
+
+ <void method="add">
+ <string>Hello World</string>
+ </void>
+
+ <void method="add">
+ <class>java.lang.ref.WeakReference</class>
+ </void>
+
+ <!-- compares both lists and stores result in 'comparison' -->
+ <void id="comparison" method="equals">
+ <object idref="arrayList"/>
+ </void>
+ </object>
+
+ <!-- returns comparison result which should be 'true' -->
+ <object idref="comparison"/>
+
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/long.xml b/gnu/testlet/java/beans/XMLDecoder/data/long.xml
new file mode 100644
index 00000000..95500a55
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/long.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for integerTest
+-->
+
+<java>
+ <long>5432154321</long>
+
+ <long>-5432154321</long>
+
+ <!-- Long.MIN_VALUE -->
+ <long>-9223372036854775808</long>
+
+ <!-- Long.MAX_VALUE -->
+ <long>9223372036854775807</long>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml b/gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml
new file mode 100644
index 00000000..819ffd25
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/pointArray.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for pointArrayTest
+-->
+
+<java version="1.4.0" class="java.beans.XMLDecoder">
+ <array class="java.awt.Point" length="3">
+ <void index="0">
+ <object class="java.awt.Point">
+ <int>0</int>
+ <int>0</int>
+ </object>
+ </void>
+
+ <void index="1">
+ <object class="java.awt.Point">
+ <int>1</int>
+ <int>1</int>
+ </object>
+ </void>
+
+ <void index="2">
+ <object class="java.awt.Point">
+ <int>2</int>
+ <int>2</int>
+ </object>
+ </void>
+ </array>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/short.xml b/gnu/testlet/java/beans/XMLDecoder/data/short.xml
new file mode 100644
index 00000000..773d3316
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/short.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for integerTest
+-->
+<java>
+ <short>16000</short>
+
+ <short>-16000</short>
+
+ <!-- Short.MIN_VALUE -->
+ <short>-32768</short>
+
+ <!-- Short.MAX_VALUE -->
+ <short>32767</short>
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml b/gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml
new file mode 100644
index 00000000..eeade991
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/data/simpleElements.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ test data for simpleElementsTest
+
+ Simple elements: primitives or elements that cannot contain child elements
+
+ Note: all values are chosen arbitrarily and do not present anything useful
+-->
+
+<java version="1.4.1" class="java.beans.XMLDecoder">
+
+ <boolean>true</boolean>
+ <boolean>false</boolean>
+
+ <char>j</char>
+ <char>a</char>
+ <char>v</char>
+ <char>a</char>
+
+ <byte>8</byte>
+
+ <short>16</short>
+
+ <int>32</int>
+
+ <long>64</long>
+
+ <float>32.0</float>
+
+ <double>64.0</double>
+
+ <string>Hello World</string>
+
+ <class>java.lang.Object</class>
+
+ <null/>
+
+</java>
diff --git a/gnu/testlet/java/beans/XMLDecoder/jdk14.java b/gnu/testlet/java/beans/XMLDecoder/jdk14.java
new file mode 100644
index 00000000..4a80c767
--- /dev/null
+++ b/gnu/testlet/java/beans/XMLDecoder/jdk14.java
@@ -0,0 +1,281 @@
+// Tags: JDK1.4
+// Uses: DecoderTestHelper EqualityChecker IntArrayChecker PointArrayChecker DoubleArrayChecker
+
+//Copyright (C) 2004 Robert Schuster <theBohemian@gmx.net>
+
+//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.java.beans.XMLDecoder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/** Tests the main decoding functionality of java.beans.XMLDecoder.
+ *
+ * @author Robert Schuster
+ *
+ */
+public class jdk14 implements Testlet
+{
+ private List testHelpers = new LinkedList();
+
+ public jdk14()
+ {
+ /* The following lines repeatedly create a DecoderTestHelper instance, initialize it with
+ * a specific object sequence and add it to the list of known DecoderTestHelpers. This
+ * sets up all the testcases for the XMLDecoder.
+ */
+ DecoderTestHelper testHelper;
+
+ testHelper = new DecoderTestHelper("booleanTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#boolean.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Boolean(true));
+ testHelper.addObject(new Boolean(false));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic byte values.
+ testHelper = new DecoderTestHelper("byteTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#byte.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Byte((byte) -120));
+
+ testHelper.addObject(new Byte((byte) 0));
+
+ testHelper.addObject(new Byte(Byte.MIN_VALUE));
+
+ testHelper.addObject(new Byte(Byte.MAX_VALUE));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic short values.
+ testHelper = new DecoderTestHelper("shortTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#short.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Short((short) 16000));
+
+ testHelper.addObject(new Short((short) -16000));
+
+ testHelper.addObject(new Short(Short.MIN_VALUE));
+
+ testHelper.addObject(new Short(Short.MAX_VALUE));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic int values.
+ testHelper = new DecoderTestHelper("intTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#int.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Integer(54321));
+
+ testHelper.addObject(new Integer(-54321));
+
+ testHelper.addObject(new Integer(Integer.MIN_VALUE));
+
+ testHelper.addObject(new Integer(Integer.MAX_VALUE));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic long values.
+ testHelper = new DecoderTestHelper("longTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#long.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Long(5432154321L));
+
+ testHelper.addObject(new Long(-5432154321L));
+
+ testHelper.addObject(new Long(Long.MIN_VALUE));
+
+ testHelper.addObject(new Long(Long.MAX_VALUE));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic float values.
+ testHelper = new DecoderTestHelper("floatTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#float.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Float((float) Math.PI));
+
+ testHelper.addObject(new Float((float) Math.E));
+
+ testHelper.addObject(new Float((float) Math.pow(2, -16)));
+
+ testHelper.addObject(new Float(0f));
+
+ testHelper.addObject(new Float(Float.NaN));
+
+ testHelper.addObject(new Float(Float.POSITIVE_INFINITY));
+
+ testHelper.addObject(new Float(Float.NEGATIVE_INFINITY));
+ addHelper(testHelper);
+
+ // Tests decoding of characteristic double values.
+ testHelper = new DecoderTestHelper("doubleTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#double.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Double(Math.PI));
+
+ testHelper.addObject(new Double(Math.E));
+
+ testHelper.addObject(new Double(Math.pow(2, -16)));
+
+ testHelper.addObject(new Double(Double.MIN_VALUE));
+
+ testHelper.addObject(new Double(Double.MAX_VALUE));
+
+ testHelper.addObject(new Double(Double.NaN));
+
+ testHelper.addObject(new Double(Double.POSITIVE_INFINITY));
+
+ testHelper.addObject(new Double(Double.NEGATIVE_INFINITY));
+ addHelper(testHelper);
+
+ // Tests decoding of elements that cannot contain sub elements or have IDs.
+ testHelper = new DecoderTestHelper("simpleElementsTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#simpleElements.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Boolean(true));
+ testHelper.addObject(new Boolean(false));
+
+ testHelper.addObject(new Character('j'));
+ testHelper.addObject(new Character('a'));
+ testHelper.addObject(new Character('v'));
+ testHelper.addObject(new Character('a'));
+
+ testHelper.addObject(new Byte((byte) 8));
+
+ testHelper.addObject(new Short((short) 16));
+
+ testHelper.addObject(new Integer(32));
+
+ testHelper.addObject(new Long(64));
+
+ testHelper.addObject(new Float(32.0f));
+
+ testHelper.addObject(new Double(64.0));
+
+ testHelper.addObject("Hello World");
+
+ testHelper.addObject(Object.class);
+
+ testHelper.addObject(null);
+ addHelper(testHelper);
+
+ // Tests decoding of two lists and their comparison result which is
+ // computed while decoding.
+ testHelper = new DecoderTestHelper("listTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#list.xml");
+
+ // keep the following synchronized with the XML file!
+ List expectedList = new ArrayList();
+ expectedList.add(new Integer(100));
+ expectedList.add("Hello World");
+ expectedList.add(WeakReference.class);
+
+ // XML data contains an ArrayList and a LinkedList with the same content
+ testHelper.addObject(expectedList);
+
+ testHelper.addObject(expectedList);
+
+ // comparison result of the two lists it contains
+ testHelper.addObject(new Boolean(true));
+ addHelper(testHelper);
+
+ // Tests decoding a fixed-size int array.
+ testHelper = new DecoderTestHelper("intArray",
+ "gnu#testlet#java#beans#XMLDecoder#data#intArray.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new int[] { 1, 2, 3 }, new IntArrayChecker());
+
+ // Tests decoding a growable int array (the growing is performed while decoding).
+ testHelper = new DecoderTestHelper("growableIntArray",
+ "gnu#testlet#java#beans#XMLDecoder#data#growableIntArray.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new int[] { 0, 1, 2, 3, 4, 5 }, new IntArrayChecker());
+ addHelper(testHelper);
+
+ /* Tests decoding a growable int array that has non-int subelements (that is byte and
+ * short).
+ */
+ testHelper = new DecoderTestHelper("growableIntArray2",
+ "gnu#testlet#java#beans#XMLDecoder#data#growableIntArray2.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new int[] { 0, 1, 2 }, new IntArrayChecker());
+ addHelper(testHelper);
+
+ // Tests decoding a growable int array (the growing is performed while decoding).
+ testHelper = new DecoderTestHelper("growableDoubleArray",
+ "gnu#testlet#java#beans#XMLDecoder#data#growableDoubleArray.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new double[] { 0, 1, 2, 3, 4, 5 }, new DoubleArrayChecker());
+ addHelper(testHelper);
+
+ // Tests decoding a fixed-size java.awt.Point array.
+ testHelper = new DecoderTestHelper("pointArrayTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#pointArray.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Point[]
+ {
+ new Point(0, 0), new Point(1, 1), new Point(2, 2)
+ }, new PointArrayChecker());
+ addHelper(testHelper);
+
+ // Tests decoding a growable java.awt.Point array (the growing is
+ // performed while decoding).
+ testHelper = new DecoderTestHelper("growablePointArrayTest",
+ "gnu#testlet#java#beans#XMLDecoder#data#growablePointArray.xml");
+
+ // keep the following synchronized with the XML file!
+ testHelper.addObject(new Point[]
+ {
+ new Point(0, 0), new Point(1, 1), new Point(2, 2),
+ new Point(3, 3), new Point(4, 4), new Point(5, 5)
+ }, new PointArrayChecker());
+ addHelper(testHelper);
+ }
+
+ private void addHelper(DecoderTestHelper helper)
+ {
+ testHelpers.add(helper);
+ }
+
+ public void test(TestHarness harness)
+ {
+ // simply iterates over all DecoderTestHelper instances
+ // and does their comparison
+ Iterator ite = testHelpers.iterator();
+
+ while (ite.hasNext())
+ ((DecoderTestHelper) ite.next()).doComparison(harness);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/Add.java b/gnu/testlet/java/beans/beancontext/Add.java
new file mode 100644
index 00000000..d6f4129a
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/Add.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2006 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.beans.beancontext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.beans.PropertyVetoException;
+
+import java.beans.beancontext.BeanContext;
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextChildSupport;
+import java.beans.beancontext.BeanContextSupport;
+
+public class Add
+ implements Testlet
+{
+
+ private static BeanContextSupport context = new BeanContextSupport();
+ private static BeanContextChild child = new BeanContextChildSupport();
+ private static BeanContextChild brokenChild = new BeanContextChildSupport()
+ {
+ public void setBeanContext(BeanContext c)
+ throws PropertyVetoException
+ {
+ throw new PropertyVetoException("I don't like you.", null);
+ }
+ };
+
+ public void test(TestHarness h)
+ {
+ /* Check child is contextless */
+ h.check(child.getBeanContext() == null, "Contextless check");
+ /* Check initial empty status of context */
+ h.check(context.isEmpty(), "Empty check");
+ h.check(context.size() == 0, "Size of 0 check");
+ /* Add child */
+ h.check(context.add(child), "Child addition check");
+ /* Check child is added to context */
+ h.check(context.isEmpty() == false, "Non-empty check");
+ h.check(context.size() == 1, "Size of 1 check");
+ /* Check child now knows about context */
+ h.check(child.getBeanContext() == context, "Correct context check");
+ /* Check that context maintains set semantics */
+ h.check(context.add(child) == false, "Set check");
+ h.check(context.size() == 1, "Same size after failed addition check");
+ /* Check that context catches null */
+ try
+ {
+ context.add(null);
+ h.fail("Failed to catch null child");
+ }
+ catch (Exception e)
+ {
+ h.check(e instanceof IllegalArgumentException, "Caught null child");
+ }
+ /* Check correct handling of veto from child */
+ try
+ {
+ context.add(brokenChild);
+ h.fail("Failed to catch veto by child");
+ }
+ catch (Exception e)
+ {
+ h.check(e instanceof IllegalStateException, "Caught veto from child");
+ /* Check that child has not been added */
+ h.check(context.size() == 1, "Same size after veto check");
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/beans/beancontext/Array.java b/gnu/testlet/java/beans/beancontext/Array.java
new file mode 100644
index 00000000..a2dc8e1d
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/Array.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2006 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.beans.beancontext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextChildSupport;
+import java.beans.beancontext.BeanContextSupport;
+
+import java.util.Arrays;
+
+public class Array
+ implements Testlet
+{
+
+ private static BeanContextSupport context = new BeanContextSupport();
+
+ public void test(TestHarness h)
+ {
+ BeanContextChild[] children = new BeanContextChild[5];
+
+ /* Create and add five children */
+ for (int a = 0; a < 5; ++a)
+ {
+ children[a] = new BeanContextChildSupport();
+ context.add(children[a]);
+ h.check(context.contains(children[a]), "Child " + a + " present.");
+ }
+ /* Check size */
+ h.check(context.size() == 5, "Size of 5 check");
+ /* Compare arrays */
+ Object[] addedChildren = context.toArray();
+ /* Order will differ, so we must find a matching one somewhere */
+ for (int a = 0; a < 5; ++a)
+ {
+ boolean flag = false;
+ for (int b = 0; b < 5; ++b)
+ if (addedChildren[b] == children[a])
+ flag = true;
+ h.check(flag, "Check for child " + a + " in array.");
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Entries b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Entries
new file mode 100644
index 00000000..3d25da9d
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBeanContextServicesSupport.java/1.1/Fri Nov 24 04:30:43 2006//
+/getChildBeanContextServicesListener.java/1.2/Wed May 21 14:44:09 2008//
+D
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Repository b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Repository
new file mode 100644
index 00000000..38ba9df0
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Root b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/MyBeanContextServicesSupport.java b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/MyBeanContextServicesSupport.java
new file mode 100644
index 00000000..7a13d028
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/MyBeanContextServicesSupport.java
@@ -0,0 +1,41 @@
+/* MyBeanContextServicesSupport.java -- support class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.beans.beancontext.BeanContextServicesSupport;
+
+import java.beans.beancontext.BeanContextServicesListener;
+import java.beans.beancontext.BeanContextServicesSupport;
+
+public class MyBeanContextServicesSupport extends BeanContextServicesSupport
+{
+ public MyBeanContextServicesSupport()
+ {
+ super();
+ }
+
+ public static final BeanContextServicesListener
+ getChildBeanContextServicesListenerX(Object child)
+ {
+ return BeanContextServicesSupport.getChildBeanContextServicesListener(child);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java
new file mode 100644
index 00000000..cd7309f0
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextServicesSupport/getChildBeanContextServicesListener.java
@@ -0,0 +1,48 @@
+/* getChildBeanContextServicesListener.java -- some checks for the
+ getChildBeanContextServicesListener() method in the
+ BeanContextServicesSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextServicesSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextServicesSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextServicesSupport;
+
+public class getChildBeanContextServicesListener implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // try null
+ harness.check(MyBeanContextServicesSupport.getChildBeanContextServicesListenerX(null), null);
+
+ // try an object that doesn't implement the listener interface
+ harness.check(MyBeanContextServicesSupport.getChildBeanContextServicesListenerX("XYZ"), null);
+
+ // try an object that does implement the interface
+ BeanContextServicesSupport bcss = new BeanContextServicesSupport();
+ harness.check(MyBeanContextServicesSupport.getChildBeanContextServicesListenerX(bcss), bcss);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Entries b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Entries
new file mode 100644
index 00000000..bbcab088
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Entries
@@ -0,0 +1,13 @@
+/MyBeanContextSupport.java/1.3/Thu Nov 23 10:39:40 2006//
+/constructors.java/1.1/Thu Nov 9 16:55:44 2006//
+/getBeanContextPeer.java/1.1/Thu Nov 9 16:55:44 2006//
+/getChildBeanContextChild.java/1.2/Wed May 21 14:44:09 2008//
+/getChildBeanContextMembershipListener.java/1.2/Wed May 21 14:44:09 2008//
+/getChildPropertyChangeListener.java/1.2/Wed May 21 14:44:09 2008//
+/getChildSerializable.java/1.2/Wed May 21 14:44:09 2008//
+/getChildVetoableChangeListener.java/1.2/Wed May 21 14:44:09 2008//
+/getChildVisibility.java/1.2/Wed May 21 14:44:09 2008//
+/serialize.java/1.2/Wed May 21 14:44:09 2008//
+/setDesignTime.java/1.1/Thu Nov 16 06:43:19 2006//
+/toArray.java/1.1/Wed Nov 22 22:22:08 2006//
+D
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Repository b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Repository
new file mode 100644
index 00000000..010292d2
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/beancontext/BeanContextSupport
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Root b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java
new file mode 100644
index 00000000..266c8f51
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/MyBeanContextSupport.java
@@ -0,0 +1,90 @@
+/* MyBeanContextSupport.java -- support class
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import java.beans.PropertyChangeListener;
+import java.beans.VetoableChangeListener;
+import java.beans.Visibility;
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextMembershipListener;
+import java.beans.beancontext.BeanContextSupport;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.Collection;
+
+public class MyBeanContextSupport extends BeanContextSupport
+{
+ public MyBeanContextSupport()
+ {
+ super();
+ }
+
+ public static BeanContextChild getChildBeanContextChildX(Object child)
+ {
+ return BeanContextSupport.getChildBeanContextChild(child);
+ }
+
+ public static BeanContextMembershipListener getChildBeanContextMembershipListenerX(
+ Object child)
+ {
+ return BeanContextSupport.getChildBeanContextMembershipListener(child);
+ }
+
+ public static PropertyChangeListener getChildPropertyChangeListenerX(
+ Object child)
+ {
+ return BeanContextSupport.getChildPropertyChangeListener(child);
+ }
+
+ public static Serializable getChildSerializableX(Object child)
+ {
+ return BeanContextSupport.getChildSerializable(child);
+ }
+
+ public static VetoableChangeListener getChildVetoableChangeListenerX(
+ Object child)
+ {
+ return BeanContextSupport.getChildVetoableChangeListener(child);
+ }
+
+ public static Visibility getChildVisibilityX(Object child)
+ {
+ return BeanContextSupport.getChildVisibility(child);
+ }
+
+ protected void deserializeX(ObjectInputStream ois, Collection coll)
+ throws IOException, ClassNotFoundException
+ {
+ super.deserialize(ois, coll);
+ }
+
+ protected void serializeX(ObjectOutputStream oos, Collection coll)
+ throws IOException
+ {
+ super.serialize(oos, coll);
+ }
+
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/constructors.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/constructors.java
new file mode 100644
index 00000000..d83e68a0
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/constructors.java
@@ -0,0 +1,160 @@
+/* constructors.java -- some checks for the constructors in the
+ BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContext;
+import java.beans.beancontext.BeanContextSupport;
+import java.util.Locale;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ BeanContextSupport bcs = new BeanContextSupport();
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bcs);
+ harness.check(bcs.beanContextChildPeer, bcs);
+ harness.check(!bcs.needsGui());
+ harness.check(!bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(BeanContext)");
+ BeanContext bc = new BeanContextSupport();
+ BeanContextSupport bcs = new BeanContextSupport(bc);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bc);
+ harness.check(bcs.beanContextChildPeer, bc);
+ harness.check(!bcs.needsGui());
+ harness.check(!bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+
+ // try null
+ bcs = new BeanContextSupport(null);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bcs);
+ harness.check(bcs.beanContextChildPeer, bcs);
+ harness.check(!bcs.needsGui());
+ harness.check(!bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(BeanContext, Locale)");
+ BeanContext bc = new BeanContextSupport();
+ BeanContextSupport bcs = new BeanContextSupport(bc, Locale.FRANCE);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bc);
+ harness.check(bcs.beanContextChildPeer, bc);
+ harness.check(!bcs.needsGui());
+ harness.check(!bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.FRANCE);
+ harness.check(bcs.size(), 0);
+
+ // try null
+ bcs = new BeanContextSupport(null, null);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bcs);
+ harness.check(!bcs.needsGui());
+ harness.check(!bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(BeanContext, Locale, boolean)");
+ BeanContext bc = new BeanContextSupport();
+ BeanContextSupport bcs = new BeanContextSupport(bc, Locale.FRANCE, true);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bc);
+ harness.check(bcs.beanContextChildPeer, bc);
+ harness.check(!bcs.needsGui());
+ harness.check(bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.FRANCE);
+
+ // try null
+ bcs = new BeanContextSupport(null, null, true);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bcs);
+ harness.check(bcs.beanContextChildPeer, bcs);
+ harness.check(!bcs.needsGui());
+ harness.check(bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ harness.checkPoint("(BeanContext, Locale, boolean, boolean)");
+ BeanContext bc = new BeanContextSupport();
+ BeanContextSupport bcs = new BeanContextSupport(bc, Locale.FRANCE, true, true);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bc);
+ harness.check(bcs.beanContextChildPeer, bc);
+ harness.check(!bcs.needsGui());
+ harness.check(bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.FRANCE);
+
+ // try null
+ bcs = new BeanContextSupport(null, null, true, true);
+ harness.check(bcs.getBeanContext(), null);
+ harness.check(bcs.getBeanContextPeer(), bcs);
+ harness.check(bcs.beanContextChildPeer, bcs);
+ harness.check(!bcs.needsGui());
+ harness.check(bcs.isDesignTime());
+ harness.check(!bcs.avoidingGui());
+ harness.check(bcs.getLocale(), Locale.getDefault());
+ harness.check(bcs.size(), 0);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getBeanContextPeer.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getBeanContextPeer.java
new file mode 100644
index 00000000..4dd07392
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getBeanContextPeer.java
@@ -0,0 +1,56 @@
+/* getBeanContextPeer.java -- some checks for the getBeanContextPeer() method
+ in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChildSupport;
+import java.beans.beancontext.BeanContextSupport;
+
+public class getBeanContextPeer implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ BeanContextSupport bcs1 = new BeanContextSupport();
+ BeanContextSupport bcs2 = new BeanContextSupport(bcs1);
+ harness.check(bcs1.getBeanContextPeer(), bcs1);
+ harness.check(bcs2.getBeanContextPeer(), bcs1);
+
+ // we can determine that this method actually returns the
+ // beanContextChildPeer field as follows...
+ boolean pass = true;
+ bcs2.beanContextChildPeer = new BeanContextChildSupport();
+ try
+ {
+ bcs2.getBeanContextPeer();
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java
new file mode 100644
index 00000000..e7fcc02a
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextChild.java
@@ -0,0 +1,90 @@
+/* getChildBeanContextChild.java -- some checks for the
+ getChildBeanContextChild() method in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextProxy;
+import java.beans.beancontext.BeanContextSupport;
+
+public class getChildBeanContextChild implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+ static class BadProxy extends BeanContextSupport implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public BadProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextChild
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildBeanContextChildX(bcs1), bcs1);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildBeanContextChildX(proxy), bcs2);
+
+ // try bad proxy
+ BadProxy bp = new BadProxy(bcs2);
+ boolean pass = false;
+ try
+ {
+ MyBeanContextSupport.getChildBeanContextChildX(bp);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildBeanContextChildX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java
new file mode 100644
index 00000000..fc5886aa
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildBeanContextMembershipListener.java
@@ -0,0 +1,74 @@
+/* getChildBeanContextMembershipListener.java -- some checks for the
+ getChildBeanContextMembershipListener() method in the
+ BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextMembershipEvent;
+import java.beans.beancontext.BeanContextMembershipListener;
+import java.beans.beancontext.BeanContextProxy;
+
+public class getChildBeanContextMembershipListener implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy, BeanContextMembershipListener
+ {
+ public void childrenAdded(BeanContextMembershipEvent bcme)
+ {
+ // ignore
+ }
+ public void childrenRemoved(BeanContextMembershipEvent bcme) {
+ // ignore
+ }
+
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextSupport
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildBeanContextMembershipListenerX(bcs1), null);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildBeanContextMembershipListenerX(proxy), proxy);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildBeanContextMembershipListenerX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java
new file mode 100644
index 00000000..0a635234
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildPropertyChangeListener.java
@@ -0,0 +1,63 @@
+/* getChildPropertyChangeListener.java -- some checks for the
+ getChildPropertyChangeListener() method in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextProxy;
+
+public class getChildPropertyChangeListener implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextSupport
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildPropertyChangeListenerX(bcs1), bcs1);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildPropertyChangeListenerX(proxy), null);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildPropertyChangeListenerX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java
new file mode 100644
index 00000000..b5f166c1
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildSerializable.java
@@ -0,0 +1,63 @@
+/* getChildSerializable.java -- some checks for the getChildSerializable()
+ method in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextProxy;
+
+public class getChildSerializable implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextSupport
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildSerializableX(bcs1), bcs1);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildSerializableX(proxy), null);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildSerializableX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java
new file mode 100644
index 00000000..a238c5e1
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVetoableChangeListener.java
@@ -0,0 +1,63 @@
+/* getChildVetoableChangeListener.java -- some checks for the
+ getChildVetoableChangeListener() method in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextProxy;
+
+public class getChildVetoableChangeListener implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextSupport
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildVetoableChangeListenerX(bcs1), bcs1);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildVetoableChangeListenerX(proxy), null);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildVetoableChangeListenerX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java
new file mode 100644
index 00000000..e3ca153f
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/getChildVisibility.java
@@ -0,0 +1,63 @@
+/* getChildVisibility.java -- some checks for the getChildVisibility()
+ method in the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextProxy;
+
+public class getChildVisibility implements Testlet
+{
+ static class MyBeanContextProxy implements BeanContextProxy
+ {
+ BeanContextChild bcs;
+ public MyBeanContextProxy(BeanContextChild bcs)
+ {
+ this.bcs = bcs;
+ }
+ public BeanContextChild getBeanContextProxy()
+ {
+ return bcs;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // try a regular BeanContextSupport
+ MyBeanContextSupport bcs1 = new MyBeanContextSupport();
+ harness.check(MyBeanContextSupport.getChildVisibilityX(bcs1), bcs1);
+
+ // try a proxy
+ MyBeanContextSupport bcs2 = new MyBeanContextSupport();
+ MyBeanContextProxy proxy = new MyBeanContextProxy(bcs2);
+ harness.check(MyBeanContextSupport.getChildVisibilityX(proxy), null);
+
+ // try null
+ harness.check(MyBeanContextSupport.getChildVisibilityX(null), null);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java
new file mode 100644
index 00000000..b15e212a
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/serialize.java
@@ -0,0 +1,239 @@
+/* serialize.java -- some checks for the serialize() method in the
+ BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBeanContextSupport
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+
+public class serialize implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyBeanContextSupport bcs = new MyBeanContextSupport();
+
+ // try null collection
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ boolean pass = false;
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(pass);
+
+ // try serializing an empty collection
+ Collection c1 = new ArrayList();
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.isEmpty());
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ // try collection with one item
+ c1 = new ArrayList();
+ c1.add(new Integer(99));
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.contains(new Integer(99)));
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ // try collection with two different items
+ c1 = new ArrayList();
+ c1.add(new Integer(99));
+ c1.add("Item 2");
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.contains(new Integer(99)));
+ harness.check(c2.contains("Item 2"));
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ // try collection with a non-serializable item
+ c1 = new ArrayList();
+ c1.add(new GradientPaint(1.0f, 2.0f, Color.red, 3.0f, 4.0f, Color.blue));
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.isEmpty());
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ // try null output stream
+ pass = false;
+ try
+ {
+ bcs.serializeX(null, new ArrayList());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(pass);
+
+ // try reading back a single item into a collection that is not empty
+ c1 = new ArrayList();
+ c1.add("XYZ");
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ c2.add("ABC");
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.size(), 2);
+ harness.check(c2.contains("XYZ"));
+ harness.check(c2.contains("ABC"));
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ // try serializing a collection containing a null item
+ c1 = new ArrayList();
+ c1.add("XYZ");
+ c1.add(null);
+ buffer = new ByteArrayOutputStream();
+ try
+ {
+ ObjectOutputStream out = new ObjectOutputStream(buffer);
+ bcs.serializeX(out, c1);
+ out.close();
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ Collection c2 = new HashSet();
+ bcs.deserializeX(in, c2);
+ in.close();
+ harness.check(c2.size(), 1);
+ harness.check(c2.contains("XYZ"));
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/setDesignTime.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/setDesignTime.java
new file mode 100644
index 00000000..670c79b4
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/setDesignTime.java
@@ -0,0 +1,60 @@
+/* setDesignTime.java -- some checks for the setDesignTime() method in
+ the BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.beancontext.BeanContextSupport;
+
+public class setDesignTime implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ lastEvent = evt;
+ }
+
+ /**
+ * See bug parade entry 4295174
+ */
+ public void test(TestHarness harness)
+ {
+ BeanContextSupport bcs = new BeanContextSupport();
+ bcs.addPropertyChangeListener("designTime", this);
+ harness.check(bcs.isDesignTime(), false);
+ bcs.setDesignTime(true);
+ harness.check(lastEvent, null);
+ bcs.addPropertyChangeListener("designMode", this);
+ bcs.setDesignTime(false);
+ harness.check(lastEvent.getPropertyName(), "designMode");
+ harness.check(lastEvent.getNewValue(), Boolean.FALSE);
+ harness.check(lastEvent.getOldValue(), Boolean.TRUE);
+ harness.check(lastEvent.getSource(), bcs);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/BeanContextSupport/toArray.java b/gnu/testlet/java/beans/beancontext/BeanContextSupport/toArray.java
new file mode 100644
index 00000000..134178ab
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/BeanContextSupport/toArray.java
@@ -0,0 +1,135 @@
+/* toArray.java -- some checks for the toArray() methods in the
+ BeanContextSupport class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.beans.beancontext.BeanContextSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.beancontext.BeanContextSupport;
+import java.util.Arrays;
+import java.util.List;
+
+public class toArray implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ BeanContextSupport bcs = new BeanContextSupport();
+ Object[] array = bcs.toArray();
+ harness.check(array.length, 0);
+ BeanContextSupport child1 = new BeanContextSupport();
+ bcs.add(child1);
+ array = bcs.toArray();
+ harness.check(array.length, 1);
+ harness.check(array[0] == child1);
+ bcs.add("Child2");
+ array = bcs.toArray();
+ harness.check(array.length, 2);
+ // use a list to check membership, because the order is not guaranteed
+ List children = Arrays.asList(array);
+ harness.check(children.contains(child1));
+ harness.check(children.contains("Child2"));
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(Object[])");
+ BeanContextSupport bcs = new BeanContextSupport();
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ bcs.toArray(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero length array for zero children
+ Object[] array1 = new Object[0];
+ Object[] array2 = bcs.toArray(array1);
+ harness.check(array2 == array1);
+
+ // try array length 1 for zero children
+ array1 = new Object[1];
+ array2 = bcs.toArray(array1);
+ harness.check(array2 == array1);
+ harness.check(array2[0], null);
+
+ // try array length 0 for 1 child
+ BeanContextSupport child1 = new BeanContextSupport();
+ bcs.add(child1);
+ array1 = new Object[0];
+ array2 = bcs.toArray(array1);
+ harness.check(array2 != array1);
+ harness.check(array2.length, 1);
+ harness.check(array2[0], child1);
+
+ // try array length 1 for 1 child
+ array1 = new Object[1];
+ array2 = bcs.toArray(array1);
+ harness.check(array2 == array1);
+ harness.check(array2[0], child1);
+
+ // try array length 2 for 1 child
+ array1 = new Object[2];
+ array2 = bcs.toArray(array1);
+ harness.check(array2 == array1);
+ harness.check(array2[0], child1);
+ harness.check(array2[1], null);
+
+ // try array length 2 for 2 children
+ bcs.add("Child 2");
+ array1 = new Object[2];
+ array2 = bcs.toArray(array1);
+ harness.check(array2 == array1);
+ // use a list to check membership, because the order is not guaranteed
+ List children = Arrays.asList(array2);
+ harness.check(children.contains(child1));
+ harness.check(children.contains("Child 2"));
+
+ // try an array of the wrong type
+ String[] array3 = new String[2];
+ pass = false;
+ try
+ {
+ bcs.toArray(array3);
+ }
+ catch (ArrayStoreException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/beans/beancontext/CVS/Entries b/gnu/testlet/java/beans/beancontext/CVS/Entries
new file mode 100644
index 00000000..e2bffbac
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/CVS/Entries
@@ -0,0 +1,5 @@
+/Add.java/1.2/Sun May 21 17:34:48 2006//
+/Array.java/1.1/Sun May 21 20:09:11 2006//
+/InstantiateChild.java/1.2/Sun May 21 20:29:33 2006//
+/Remove.java/1.1/Sun May 21 19:29:52 2006//
+D
diff --git a/gnu/testlet/java/beans/beancontext/CVS/Entries.Log b/gnu/testlet/java/beans/beancontext/CVS/Entries.Log
new file mode 100644
index 00000000..38d0cea3
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/BeanContextServicesSupport////
+A D/BeanContextSupport////
diff --git a/gnu/testlet/java/beans/beancontext/CVS/Repository b/gnu/testlet/java/beans/beancontext/CVS/Repository
new file mode 100644
index 00000000..9e9bbc28
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/beans/beancontext
diff --git a/gnu/testlet/java/beans/beancontext/CVS/Root b/gnu/testlet/java/beans/beancontext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/beans/beancontext/InstantiateChild.java b/gnu/testlet/java/beans/beancontext/InstantiateChild.java
new file mode 100644
index 00000000..4ae37688
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/InstantiateChild.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2006 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.beans.beancontext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.beans.beancontext.BeanContextSupport;
+
+public class InstantiateChild
+ implements Testlet
+{
+
+ private static BeanContextSupport context = new BeanContextSupport();
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ /* Check initial empty status of context */
+ h.check(context.isEmpty(), "Empty check");
+ h.check(context.size() == 0, "Size of 0 check");
+ /* Add child */
+ context.instantiateChild("java.beans.beancontext.BeanContextChildSupport");
+ /* Check child is added to context */
+ h.check(context.isEmpty() == false, "Non-empty check");
+ h.check(context.size() == 1, "Size of 1 check");
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/beans/beancontext/Remove.java b/gnu/testlet/java/beans/beancontext/Remove.java
new file mode 100644
index 00000000..13d54cf9
--- /dev/null
+++ b/gnu/testlet/java/beans/beancontext/Remove.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2006 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.beans.beancontext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.beans.PropertyVetoException;
+
+import java.beans.beancontext.BeanContext;
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextChildSupport;
+import java.beans.beancontext.BeanContextSupport;
+
+public class Remove
+ implements Testlet
+{
+
+ private static TestBeanContextSupport context = new TestBeanContextSupport();
+ private static BeanContextChild child = new BeanContextChildSupport();
+ private static BeanContextChild brokenChild = new BeanContextChildSupport()
+ {
+ public void setBeanContext(BeanContext c)
+ throws PropertyVetoException
+ {
+ if (c == null)
+ throw new PropertyVetoException("I don't like you.", null);
+ }
+ };
+
+ public void test(TestHarness h)
+ {
+ /* Setup */
+ h.check(context.add(child), "Child addition check");
+ /* Check child is added to context */
+ h.check(context.isEmpty() == false, "Non-empty check");
+ h.check(context.size() == 1, "Size of 1 check");
+ /* Check child now knows about context */
+ h.check(child.getBeanContext() == context, "Correct context check");
+ /* Check that context catches null */
+ try
+ {
+ context.remove(null);
+ h.fail("Failed to catch null child");
+ }
+ catch (Exception e)
+ {
+ h.check(e instanceof IllegalArgumentException, "Caught null child");
+ }
+ /* Check handling of non-existant child */
+ h.check(context.remove(brokenChild) == false, "Remove non-existant child check");
+ h.check(context.add(brokenChild), "Add broken child check");
+ /* Check correct handling of veto from child */
+ try
+ {
+ context.remove(brokenChild);
+ h.fail("Failed to catch veto by child");
+ }
+ catch (Exception e)
+ {
+ h.check(e instanceof IllegalStateException, "Caught veto from child");
+ /* Check that child has not been removed */
+ h.check(context.size() == 2, "Same size after veto check");
+ }
+ /* Check correct handling of broken child with no veto */
+ context.removeTest(h);
+ /* Check the child was removed */
+ h.check(context.size() == 1, "Size of 1 check");
+ /* Check remove first child */
+ h.check(context.remove(child), "Remove child check");
+ /* Add child back */
+ h.check(context.add(child), "Child re-addition check");
+ /* Change child context from elsewhere */
+ try
+ {
+ child.setBeanContext(null);
+ }
+ catch (PropertyVetoException e)
+ {
+ h.debug(e);
+ }
+ h.check(context.size() == 0, "Empty context check");
+ }
+
+ private static class TestBeanContextSupport
+ extends BeanContextSupport
+ {
+ public void removeTest(TestHarness h)
+ {
+ /* Check correct handling of broken child with no veto */
+ try
+ {
+ h.check(remove(brokenChild, false),
+ "Correctly avoided notification of child");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalStateException)
+ h.fail("Wrongly threw veto when not asked to notify child");
+ else
+ h.debug(e);
+ }
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Entries b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Repository b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Repository
new file mode 100644
index 00000000..21d63a78
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedByteOutputStream
diff --git a/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Root b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedByteOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedCharWriter/CVS/Entries b/gnu/testlet/java/io/BufferedCharWriter/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedCharWriter/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/io/BufferedCharWriter/CVS/Repository b/gnu/testlet/java/io/BufferedCharWriter/CVS/Repository
new file mode 100644
index 00000000..20a2a687
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedCharWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedCharWriter
diff --git a/gnu/testlet/java/io/BufferedCharWriter/CVS/Root b/gnu/testlet/java/io/BufferedCharWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedCharWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedInputStream/BigMark.java b/gnu/testlet/java/io/BufferedInputStream/BigMark.java
new file mode 100644
index 00000000..55f917ec
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/BigMark.java
@@ -0,0 +1,82 @@
+/*************************************************************************
+/* MarkReset.java -- Tests BufferedInputStream mark for huge values
+/*
+/* Copyright (c) 2004 Free Software Foundation, Inc.
+/* Written by Mark Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class BigMark implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test(harness, 32 * 1024);
+ test(harness, 128 * 1024);
+ test(harness, 1024 * 1024);
+ test(harness, Integer.MAX_VALUE - 1024);
+ test(harness, Integer.MAX_VALUE - 1);
+ test(harness, Integer.MAX_VALUE);
+ }
+
+ public void test(TestHarness harness, int size)
+ {
+ harness.checkPoint("mark(" + size + ")");
+ try
+ {
+ // array larger than default
+ final int K = 16;
+ byte[] dummy = new byte[K * 1024];
+ dummy[2] = 42;
+ dummy[3] = 13;
+ ByteArrayInputStream bais = new ByteArrayInputStream(dummy);
+ BufferedInputStream bis = new BufferedInputStream(bais);
+
+ bis.read();
+ bis.read();
+ bis.mark(size);
+ int answer = bis.read();
+ harness.check(answer, 42);
+
+ for (int i = 0; i < K / 2; i++)
+ bis.skip(1024);
+ bis.reset();
+ answer = bis.read();
+ harness.check(answer, 42);
+
+ bis.mark(size);
+ answer = bis.read();
+ harness.check(answer, 13);
+ for (int i = 0; i < (K / 2) * 1024; i++)
+ bis.read();
+ bis.reset();
+ answer = bis.read();
+ harness.check(answer, 13);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/BufferedInputStream/CVS/Entries b/gnu/testlet/java/io/BufferedInputStream/CVS/Entries
new file mode 100644
index 00000000..36233225
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/CVS/Entries
@@ -0,0 +1,7 @@
+/BigMark.java/1.1/Tue Mar 9 07:37:16 2004//
+/MarkReset.java/1.2/Tue Mar 8 22:37:27 2005//
+/ProtectedVars.java/1.1/Sat Dec 26 18:57:50 1998//
+/SimpleRead.java/1.3/Thu Jan 2 23:38:21 2003//
+/Skip.java/1.1/Wed Nov 17 22:59:10 2004//
+/ZeroRead.java/1.1/Mon Dec 6 12:53:17 2004//
+D
diff --git a/gnu/testlet/java/io/BufferedInputStream/CVS/Repository b/gnu/testlet/java/io/BufferedInputStream/CVS/Repository
new file mode 100644
index 00000000..d808e93d
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedInputStream
diff --git a/gnu/testlet/java/io/BufferedInputStream/CVS/Root b/gnu/testlet/java/io/BufferedInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedInputStream/MarkReset.java b/gnu/testlet/java/io/BufferedInputStream/MarkReset.java
new file mode 100644
index 00000000..0d3a9153
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/MarkReset.java
@@ -0,0 +1,195 @@
+/*************************************************************************
+/* MarkReset.java -- Tests BufferedInputStream mark/reset functionality
+/*
+/* Copyright (c) 1998, 2005 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class MarkReset implements Testlet
+{
+
+public static int
+marktest(InputStream ins, TestHarness harness) throws IOException
+{
+ BufferedInputStream bis = new BufferedInputStream(ins, 15);
+
+ int bytes_read;
+ int total_read = 0;
+ byte[] buf = new byte[12];
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bis.mark(75);
+ bis.read();
+ bis.read(buf);
+ bis.read(buf);
+ bis.read(buf);
+ bis.reset();
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bis.mark(555);
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bis.reset();
+
+ bis.read(buf);
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ bis.mark(14);
+
+ bis.read(buf);
+
+ bis.reset();
+
+ bytes_read = bis.read(buf);
+ total_read += bytes_read;
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ while ((bytes_read = bis.read(buf)) != -1)
+ {
+ harness.debug(new String(buf, 0, bytes_read), false);
+ total_read += bytes_read;
+ }
+
+ return(total_read);
+}
+ private static void readFully(InputStream in, int len) throws java.io.IOException
+ {
+ int nr;
+ byte[] buf = new byte[len];
+ while (len > 0) {
+ if ((nr = in.read(buf, 0, len)) <= 0)
+ throw new java.io.IOException("Unexpected EOF");
+ len -= nr;
+ }
+ }
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ harness.debug("First BufferedInputStream mark/reset series");
+ harness.debug("Underlying InputStream does not support mark/reset");
+
+ String str = "My 6th grade teacher was named Mrs. Hostetler.\n" +
+ "She had a whole list of rules that you were supposed to follow\n" +
+ "in class and if you broke a rule she would make you write the\n" +
+ "rules out several times. The number varied depending on what\n" +
+ "rule you broke. Since I knew I would get in trouble, I would\n" +
+ "just go ahead and write out a few sets on the long school bus\n" +
+ "ride home so that if had to stay in during recess and write\n" +
+ "rules, five minutes later I could just tell the teacher I was\n" +
+ "done so I could go outside and play kickball.\n";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+
+ int total_read = marktest(sbis, harness);
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ harness.debug("Second BufferedInputStream mark/reset series");
+ harness.debug("Underlying InputStream supports mark/reset");
+
+ String str = "My first day of college was fun. A bunch of us\n" +
+ "got pretty drunk, then this guy named Rick Flake (I'm not\n" +
+ "making that name up) took a piss in the bed of a Physical\n" +
+ "Plant dept pickup truck. Later on we were walking across\n" +
+ "campus, saw a cop, and took off running for no reason.\n" +
+ "When we got back to the dorm we found an even drunker guy\n" +
+ "passed out in a shopping cart outside.\n";
+
+ ByteArrayInputStream sbis = new ByteArrayInputStream(str.getBytes());
+
+ int total_read = marktest(sbis, harness);
+ harness.check(total_read, str.length(), "total_read");
+
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ harness.checkPoint("Third BufferedInputStream mark/reset series");
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[100000]);
+ BufferedInputStream bis = new BufferedInputStream(bais, 2048);
+ bis.mark(2048);
+ readFully(bis, 2049);
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ harness.checkPoint("Forth BufferedInputStream mark/reset series");
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[100000]);
+ BufferedInputStream bis = new BufferedInputStream(bais, 2048);
+ bis.mark(2050);
+ readFully(bis, 2050);
+ bis.mark(2052);
+ readFully(bis, 2052);
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class MarkReset
+
diff --git a/gnu/testlet/java/io/BufferedInputStream/ProtectedVars.java b/gnu/testlet/java/io/BufferedInputStream/ProtectedVars.java
new file mode 100644
index 00000000..5e638145
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/ProtectedVars.java
@@ -0,0 +1,73 @@
+/*************************************************************************
+/* ProtectedVars.java -- Tests BufferedInputStream protected variables
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends BufferedInputStream implements Testlet
+{
+
+public
+ProtectedVars(InputStream in, int size)
+{
+ super(in, size);
+}
+
+// Constructor for test suite
+public
+ProtectedVars()
+{
+ super(System.in);
+}
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ String str = "This is a test line of text for this pass";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+ ProtectedVars bist = new ProtectedVars(sbis, 12);
+
+ bist.read();
+ bist.mark(5);
+
+ harness.check(bist.buf.length, 12, "buf.length");
+ harness.check(bist.count, 12, "count");
+ harness.check(bist.marklimit, 5, "marklimit");
+ harness.check(bist.markpos, 1, "markpos");
+ harness.check(bist.pos, 1, "pos");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class ProtectedVars
+
diff --git a/gnu/testlet/java/io/BufferedInputStream/SimpleRead.java b/gnu/testlet/java/io/BufferedInputStream/SimpleRead.java
new file mode 100644
index 00000000..cee0f465
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/SimpleRead.java
@@ -0,0 +1,82 @@
+/*************************************************************************
+/* SimpleRead.java -- BufferedInputStream simple read test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class SimpleRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ String str = "One of my 8th grade teachers was Mr. Russell.\n" +
+ "He used to start each year off by telling the class that the\n" +
+ "earth was flat. He did it to teach people to question\n" +
+ "things they are told. But everybody knew that he did it\n" +
+ "so it lost its effect.\n";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+ BufferedInputStream bis = new BufferedInputStream(sbis, 15);
+
+ byte[] buf = new byte[12];
+ int bytes_read, total_read = 0;
+ while((bytes_read = bis.read(buf)) != -1)
+ {
+ harness.debug(new String(buf, 0, bytes_read), false);
+ total_read += bytes_read;
+ }
+
+ bis.close();
+ harness.check(total_read, str.length(), "total_read");
+
+ // Miscellaneous methods:
+ sbis = new StringBufferInputStream(str);
+ bis = new BufferedInputStream(sbis);
+ harness.check(bis.available(), str.length(), "available()");
+ harness.debug(bis.available() + " bytes available; should be " + str.length());
+ harness.check(bis.markSupported(), "markSupported()");
+ harness.debug("Mark " + (bis.markSupported() ? "is" : "is not") + " supported.");
+ int skip = 10;
+ long skipped = bis.skip(skip);
+ harness.check(skipped, skip, "skip(long)");
+ harness.debug("Skipped " + skipped + "(=" + skip + "?) bytes");
+ harness.debug("Reading " + bis.read(buf, 0, 3) + "(=3?) bytes");
+ String tst = new String(buf, 0, 3);
+ harness.check(tst, str.substring(skip, skip + 3), "read(buf[], off, len)");
+ harness.debug("Extracted " + tst + "; expected " + str.substring(skip, skip + 3));
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class SimpleRead
+
diff --git a/gnu/testlet/java/io/BufferedInputStream/Skip.java b/gnu/testlet/java/io/BufferedInputStream/Skip.java
new file mode 100644
index 00000000..ffa1f7c0
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/Skip.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+/* Skip.java -- BufferedInputStream skip test
+/*
+/* Copyright (c) 2004 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Skip implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ byte[] ba = new byte[]{0x44, 0x55};
+ ByteArrayInputStream bais = new ByteArrayInputStream(ba);
+ BufferedInputStream bis = new BufferedInputStream(bais);
+ long s = bis.skip(2);
+ harness.check(s, 2, "skip(2)");
+ harness.debug(s + " bytes skipped; should be 2");
+ s = bis.skip(2);
+ harness.check(s >= 0, true, "skip(2) >= 0");
+ harness.debug(s + " bytes skipped; should be >= 0");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class Skip
+
diff --git a/gnu/testlet/java/io/BufferedInputStream/ZeroRead.java b/gnu/testlet/java/io/BufferedInputStream/ZeroRead.java
new file mode 100644
index 00000000..c8cde537
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedInputStream/ZeroRead.java
@@ -0,0 +1,59 @@
+/*************************************************************************
+/* ZeroRead.java -- BufferedInputStream zero read test
+/*
+/* Copyright (c) 2004 Free Software Foundation, Inc.
+/* Written by Jeroen Frijters (jeroen@frijters.net)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.BufferedInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ZeroRead extends InputStream implements Testlet
+{
+ public int read() throws IOException
+ {
+ throw new IOException();
+ }
+
+ public int read(byte[] b, int off, int len) throws IOException
+ {
+ if (len == 0)
+ return 0;
+ throw new IOException();
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ // Make sure that a zero length read doesn't result in a read on the
+ // underlying stream.
+ BufferedInputStream bis = new BufferedInputStream(this);
+ harness.check(bis.read(new byte[0], 0, 0) == 0);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/BufferedOutputStream/CVS/Entries b/gnu/testlet/java/io/BufferedOutputStream/CVS/Entries
new file mode 100644
index 00000000..b9d21fa1
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/Test.java/1.2/Thu Nov 21 20:10:36 2002//
+/helper.java/1.3/Thu Jun 3 14:31:05 2004//
+/interrupt.java/1.3/Thu Feb 13 19:19:23 2003//
+D
diff --git a/gnu/testlet/java/io/BufferedOutputStream/CVS/Repository b/gnu/testlet/java/io/BufferedOutputStream/CVS/Repository
new file mode 100644
index 00000000..be22ba44
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedOutputStream
diff --git a/gnu/testlet/java/io/BufferedOutputStream/CVS/Root b/gnu/testlet/java/io/BufferedOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedOutputStream/Test.java b/gnu/testlet/java/io/BufferedOutputStream/Test.java
new file mode 100644
index 00000000..35870662
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/Test.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+/* Test.java -- Test (Buffered,ByteArray)OutputStream
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/* Modified by Daryl Lee (dolee@sources.redhat.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.BufferedOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(24);
+ BufferedOutputStream bos = new BufferedOutputStream(baos, 12);
+
+ String str = "The Kroger on College Mall Rd. in Bloomington\n" +
+ "used to sell Kroger brand frozen pizzas for 68 cents.\n" +
+ "I ate a lot of those in college. It was kind of embarrassing\n" +
+ "walking out of the grocery with nothing but 15 frozen pizzas.\n";
+
+ boolean passed = true;
+
+ byte[] buf = str.getBytes();
+ bos.write(buf, 0, 5);
+ harness.check(baos.toByteArray().length, 0, "buffering/toByteArray");
+ bos.write(buf, 5, 8);
+ bos.write(buf, 13, 12);
+ bos.write(buf[25]);
+ bos.write(buf, 26, buf.length - 26);
+ bos.close();
+
+ String str2 = new String(baos.toByteArray());
+ harness.check(str, str2, "did all bytes come through?");
+ harness.debug(str2, false);
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/BufferedOutputStream/helper.java b/gnu/testlet/java/io/BufferedOutputStream/helper.java
new file mode 100644
index 00000000..2bbab79b
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/helper.java
@@ -0,0 +1,49 @@
+// Helper for
+
+// Copyright (c) 2001 Free Software Foundation
+
+// This file is part of Mauve.
+
+// Tags: not-a-test
+
+package gnu.testlet.java.io.BufferedOutputStream;
+
+import java.io.*;
+
+public class helper extends OutputStream
+{
+ // Number of bytes we've read.
+ int count;
+ // When we should stop.
+ int stop;
+
+ public helper (int size)
+ {
+ stop = size;
+ }
+
+ private void update (int howmuch) throws InterruptedIOException
+ {
+ if (count + howmuch > stop)
+ {
+ InterruptedIOException ioe = new InterruptedIOException ();
+ ioe.bytesTransferred = stop - count;
+ count = stop;
+ throw ioe;
+ }
+
+ count += howmuch;
+ }
+
+ public void write (int b) throws InterruptedIOException
+ {
+ update (1);
+ }
+
+ public void write (byte[] b, int off, int len) throws InterruptedIOException
+ {
+ if (off < 0 || len < 0 || off + len > b.length)
+ throw new ArrayIndexOutOfBoundsException ();
+ update (len);
+ }
+}
diff --git a/gnu/testlet/java/io/BufferedOutputStream/interrupt.java b/gnu/testlet/java/io/BufferedOutputStream/interrupt.java
new file mode 100644
index 00000000..af61952d
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedOutputStream/interrupt.java
@@ -0,0 +1,96 @@
+// Test to see if InterruptedIOException affects output streams
+
+// Copyright (c) 2001 Free Software Foundation
+
+// This file is part of Mauve.
+
+// Tags: JDK1.1
+// Uses: helper
+
+package gnu.testlet.java.io.BufferedOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class interrupt extends BufferedOutputStream implements Testlet
+{
+ public interrupt (OutputStream out, int size)
+ {
+ super (out, size);
+ }
+
+ public interrupt ()
+ {
+ super (null);
+ }
+
+ private int getCount()
+ {
+ return this.count;
+ }
+
+ public void test (TestHarness harness)
+ {
+ // We create an output stream that will throw an
+ // InterruptedIOException after 10 bytes are written. Then we
+ // wrap it in a buffered output stream with a buffer that is a bit
+ // smaller than that -- but not a nice multiple. Finally we write
+ // bytes until we get the interrupt.
+
+ int BUFFER = 7;
+
+ helper h = new helper (10);
+ interrupt out = new interrupt (h, BUFFER);
+
+ boolean ok = false;
+ int i = -1;
+ int xfer = -1;
+ try
+ {
+ for (i = 0; i < BUFFER * 2; ++i)
+ out.write (i);
+ out.flush ();
+ }
+ catch (InterruptedIOException ioe)
+ {
+ xfer = ioe.bytesTransferred;
+ ok = true;
+ }
+ catch (IOException _)
+ {
+ }
+ harness.check (ok, "single-byte writes");
+ // The flush() will cause the second buffer to be written. This
+ // will only write 3 bytes, though.
+ harness.check (xfer, 3);
+ harness.check (i, BUFFER * 2);
+ // In theory the BufferedOutputStream should notice the
+ // InterruptedIOException and update its internal data structure
+ // accordingly.
+ // harness.check (out.getCount(), 4);
+
+ h = new helper (10);
+ out = new interrupt (h, BUFFER);
+ byte[] b = new byte[7];
+
+ ok = false;
+ xfer = 0;
+ try
+ {
+ for (i = 0; i < 5; ++i)
+ out.write (b);
+ }
+ catch (InterruptedIOException ioe)
+ {
+ xfer = ioe.bytesTransferred;
+ ok = true;
+ }
+ catch (IOException _)
+ {
+ }
+ harness.check (ok, "byte array writes");
+ harness.check (xfer, 3);
+ harness.check (i, 1);
+ }
+}
diff --git a/gnu/testlet/java/io/BufferedReader/CVS/Entries b/gnu/testlet/java/io/BufferedReader/CVS/Entries
new file mode 100644
index 00000000..1953e1b6
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/CVS/Entries
@@ -0,0 +1,5 @@
+/MarkReset.java/1.1/Sat Dec 26 19:30:25 1998//
+/SimpleRead.java/1.1/Sat Dec 26 19:30:25 1998//
+/boundary.java/1.3/Tue Oct 8 15:58:51 2002//
+/mark.java/1.1/Mon Apr 25 22:07:41 2005//
+D
diff --git a/gnu/testlet/java/io/BufferedReader/CVS/Repository b/gnu/testlet/java/io/BufferedReader/CVS/Repository
new file mode 100644
index 00000000..6162ba93
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedReader
diff --git a/gnu/testlet/java/io/BufferedReader/CVS/Root b/gnu/testlet/java/io/BufferedReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedReader/MarkReset.java b/gnu/testlet/java/io/BufferedReader/MarkReset.java
new file mode 100644
index 00000000..ea17a024
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/MarkReset.java
@@ -0,0 +1,176 @@
+/*************************************************************************
+/* MarkRest.java -- Tests BufferedReader mark/reset functionality
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.BufferedReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class MarkReset extends CharArrayReader implements Testlet
+{
+
+// Hehe. We override CharArrayReader.markSupported() in order to return
+// false so that we can test BufferedReader's handling of mark/reset in
+// both the case where the underlying stream does and does not support
+// mark/reset
+public boolean
+markSupported()
+{
+ return(false);
+}
+
+public
+MarkReset(char[] buf)
+{
+ super(buf);
+}
+
+// Constructor for test suite
+public
+MarkReset()
+{
+ super(new char[1]);
+}
+
+public static int
+marktest(Reader ins, TestHarness harness) throws IOException
+{
+ BufferedReader br = new BufferedReader(ins, 15);
+
+ int chars_read;
+ int total_read = 0;
+ char[] buf = new char[12];
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ br.mark(75);
+ br.read();
+ br.read(buf);
+ br.read(buf);
+ br.read(buf);
+ br.reset();
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ br.mark(555);
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ br.reset();
+
+ br.read(buf);
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ br.mark(14);
+
+ br.read(buf);
+
+ br.reset();
+
+ chars_read = br.read(buf);
+ total_read += chars_read;
+ harness.debug(new String(buf, 0, chars_read), false);
+
+ while ((chars_read = br.read(buf)) != -1)
+ {
+ harness.debug(new String(buf, 0, chars_read), false);
+ total_read += chars_read;
+ }
+
+ return(total_read);
+}
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ harness.debug("First mark/reset test series");
+ harness.debug("Underlying reader supports mark/reset");
+
+ String str = "Growing up in a rural area brings such delights. One\n" +
+ "time my uncle called me up and asked me to come over and help him\n" +
+ "out with something. Since he lived right across the field, I\n" +
+ "walked right over. Turned out he wanted me to come down to the\n" +
+ "barn and help him castrate a calf. Oh, that was fun. Not.\n";
+
+ StringReader sr = new StringReader(str);
+ BufferedReader br = new BufferedReader(sr);
+
+ int total_read = marktest(br, harness);
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ harness.debug("Second mark/reset test series");
+ harness.debug("Underlying reader does not support mark/reset");
+
+ String str = "Growing up we heated our house with a wood stove. That\n" +
+ "thing could pump out some BTU's, let me tell you. No matter how\n" +
+ "cold it got outside, it was always warm inside. Of course the\n" +
+ "downside is that somebody had to chop the wood for the stove. That\n" +
+ "somebody was me. I was slave labor. My uncle would go back and\n" +
+ "chain saw up dead trees and I would load the wood in wagons and\n" +
+ "split it with a maul. Somehow my no account brother always seemed\n" +
+ "to get out of having to work.\n";
+
+ char[] buf = new char[str.length()];
+ str.getChars(0, str.length(), buf, 0);
+ MarkReset mr = new MarkReset(buf);
+ BufferedReader br = new BufferedReader(mr);
+
+ int total_read = marktest(br, harness);
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class MarkReset
+
diff --git a/gnu/testlet/java/io/BufferedReader/SimpleRead.java b/gnu/testlet/java/io/BufferedReader/SimpleRead.java
new file mode 100644
index 00000000..cf74087f
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/SimpleRead.java
@@ -0,0 +1,69 @@
+/*************************************************************************
+/* SimpleRead.java -- BufferedReader simple read test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.BufferedReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class SimpleRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ String str = "My 5th grade teacher was named Mr. Thompson. Terry\n" +
+ "George Thompson to be precise. He had these sideburns like\n" +
+ "Isaac Asimov's, only uglier. One time he had a contest and said\n" +
+ "that if any kid who could lift 50lbs worth of weights on a barbell\n" +
+ "all the way over their head, he would shave it off. Nobody could\n" +
+ "though. One time I guess I made a comment about how stupid his\n" +
+ "sideburns worked and he not only kicked me out of class, he called\n" +
+ "my mother. Jerk.\n";
+
+ StringReader sr = new StringReader(str);
+ BufferedReader br = new BufferedReader(sr, 15);
+
+ char[] buf = new char[12];
+ int chars_read, total_read = 0;
+ while((chars_read = br.read(buf)) != -1)
+ {
+ harness.debug(new String(buf, 0, chars_read), false);
+ total_read += chars_read;
+ }
+
+ br.close();
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+} // main
+
+} // class SimpleRead
+
diff --git a/gnu/testlet/java/io/BufferedReader/boundary.java b/gnu/testlet/java/io/BufferedReader/boundary.java
new file mode 100644
index 00000000..af7adb2e
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/boundary.java
@@ -0,0 +1,66 @@
+// Test of a boundary case in BufferedReader
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.BufferedReader;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class boundary implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // This test comes from gcj PR 6301.
+ String str = "abcd\r\nefghijklm\r\n";
+ StringReader sr = new StringReader(str);
+ // `5' here makes the buffer stop between the \r and the \n.
+ BufferedReader br = new BufferedReader(sr, 5);
+
+ String l1 = br.readLine();
+ harness.check(l1, "abcd");
+
+ br.mark(1);
+ char c = (char) br.read();
+ harness.check(c, 'e');
+ br.reset();
+
+ // The libgcj/Classpath bug is that BufferedReader gets confused
+ // and returns "" here.
+ String l2 = br.readLine();
+ harness.check(l2, "efghijklm");
+
+ // check ready() and skip()
+ sr = new StringReader("efghijklm\n");
+ br = new BufferedReader(sr);
+ harness.check(br.ready(), "ready()");
+ br.skip(2L);
+ l2 = br.readLine();
+ harness.check(l2, "ghijklm");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/BufferedReader/mark.java b/gnu/testlet/java/io/BufferedReader/mark.java
new file mode 100644
index 00000000..4c0e0a5d
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedReader/mark.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.BufferedReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+/**
+ * Small test based on a regression in GNU Classpath.
+ */
+public class mark implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ byte[] bs = new byte[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h' ,'i', 'j', 'k', 'l', 'm', 'n' };
+ ByteArrayInputStream bais = new ByteArrayInputStream(bs);
+ InputStreamReader isr = new InputStreamReader(bais, "utf-8");
+ BufferedReader br = new BufferedReader(isr);
+
+ char[] cs = new char[4];
+ br.mark(4);
+ br.read(cs);
+ harness.check('a', cs[0]);
+ harness.check('b', cs[1]);
+ harness.check('c', cs[2]);
+ harness.check('d', cs[3]);
+ br.reset();
+
+ br.mark(12);
+ harness.check('a', br.read());
+ harness.check('b', br.read());
+ harness.check('c', br.read());
+ harness.check('d', br.read());
+ harness.check('e', br.read());
+ harness.check('f', br.read());
+ harness.check('g', br.read());
+ harness.check('h', br.read());
+ harness.check('i', br.read());
+ harness.check('j', br.read());
+ harness.check('k', br.read());
+ harness.check('l', br.read());
+ harness.check('m', br.read());
+ harness.check('n', br.read());
+
+ harness.check(-1, br.read());
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/BufferedWriter/CVS/Entries b/gnu/testlet/java/io/BufferedWriter/CVS/Entries
new file mode 100644
index 00000000..ae77758e
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedWriter/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Thu Nov 21 20:48:21 2002//
+D
diff --git a/gnu/testlet/java/io/BufferedWriter/CVS/Repository b/gnu/testlet/java/io/BufferedWriter/CVS/Repository
new file mode 100644
index 00000000..41f47905
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/BufferedWriter
diff --git a/gnu/testlet/java/io/BufferedWriter/CVS/Root b/gnu/testlet/java/io/BufferedWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/BufferedWriter/Test.java b/gnu/testlet/java/io/BufferedWriter/Test.java
new file mode 100644
index 00000000..52e71350
--- /dev/null
+++ b/gnu/testlet/java/io/BufferedWriter/Test.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+/* Test.java -- Test {Buffered,CharArray}Writer
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.BufferedWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ CharArrayWriter caw = new CharArrayWriter(24);
+ BufferedWriter bw = new BufferedWriter(caw, 12);
+
+ String str = "I used to live right behind this super-cool bar in\n" +
+ "Chicago called Lounge Ax. They have the best music of pretty\n" +
+ "much anyplace in town with a great atmosphere and $1 Huber\n" +
+ "on tap. I go to tons of shows there, even though I moved.\n";
+
+ char[] buf = new char[str.length()];
+ str.getChars(0, str.length(), buf, 0);
+
+ bw.write(str.substring(0, 5)); // write(String)
+ harness.check(caw.toCharArray().length, 0, "buffering/toCharArray");
+ bw.write(buf, 5, 8);
+ bw.write(buf, 13, 12);
+ bw.write(buf[25]);
+ bw.write(buf, 26, buf.length - 27);
+ bw.newLine(); // newLine()
+ bw.flush();
+ bw.close();
+
+ String str2 = new String(caw.toCharArray());
+ harness.check(str, str2, "Did all chars make it through?");
+ harness.debug(str2, false);
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Caught unexpected exception");
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/CVS/Entries b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Entries
new file mode 100644
index 00000000..013fe7dd
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/MarkReset.java/1.2/Mon Jan 4 14:29:52 1999//
+/ProtectedVars.java/1.1/Fri Dec 25 23:00:33 1998//
+/SimpleRead.java/1.1/Fri Dec 25 23:00:33 1998//
+D
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/CVS/Repository b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Repository
new file mode 100644
index 00000000..1f22415e
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ByteArrayInputStream
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/CVS/Root b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java b/gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java
new file mode 100644
index 00000000..da58d800
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/MarkReset.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+/* MarkReset.java -- ByteArrayInputStream mark/reset test
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.ByteArrayInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class MarkReset implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "My sophomore year of college I moved out of the dorms. I\n" +
+ "moved in with three friends into a brand new townhouse in east\n" +
+ "Bloomington at 771 Woodbridge Drive. To this day that was the\n" +
+ "nicest place I've ever lived.\n";
+
+ byte[] str_bytes = str.getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(str_bytes);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ bais.read(read_buf);
+
+ harness.check(bais.available(), (str_bytes.length - read_buf.length),
+ "available() 1");
+ harness.check(bais.skip(5), 5, "skip()");
+ // System.out.println("skip() didn't work");
+ harness.check(bais.available(), (str_bytes.length -
+ (read_buf.length + 5)), "available() 2");
+ harness.check(bais.markSupported(), "markSupported()");
+
+ bais.mark(0);
+ int availsave = bais.available();
+ bais.read();
+ bais.reset();
+ harness.check(bais.available(), availsave, "reset");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // MarkReset
+
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/ProtectedVars.java b/gnu/testlet/java/io/ByteArrayInputStream/ProtectedVars.java
new file mode 100644
index 00000000..92397123
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/ProtectedVars.java
@@ -0,0 +1,80 @@
+/*************************************************************************
+/* ProtectedVars.java -- Test ByteArrayInputStream protected variables.
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.ByteArrayInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends ByteArrayInputStream
+ implements Testlet
+{
+
+public
+ProtectedVars(byte[] b)
+{
+ super(b);
+}
+
+// Constructor for the test suite
+public
+ProtectedVars()
+{
+ super(new byte[1]);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "My sophomore year of college I moved out of the dorms. I\n" +
+ "moved in with three friends into a brand new townhouse in east\n" +
+ "Bloomington at 771 Woodbridge Drive. To this day that was the\n" +
+ "nicest place I've ever lived.\n";
+
+ byte[] str_bytes = str.getBytes();
+
+ ProtectedVars bais = new ProtectedVars(str_bytes);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ bais.read(read_buf);
+ bais.mark(0);
+
+ harness.check(bais.mark, read_buf.length, "mark");
+
+ bais.read(read_buf);
+ harness.check(bais.pos, (read_buf.length * 2), "pos");
+ harness.check(bais.count, str_bytes.length, "count");
+ harness.check(bais.buf, str_bytes, "buf");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // ProtectedVars
+
diff --git a/gnu/testlet/java/io/ByteArrayInputStream/SimpleRead.java b/gnu/testlet/java/io/ByteArrayInputStream/SimpleRead.java
new file mode 100644
index 00000000..13456bed
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayInputStream/SimpleRead.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+/* SimpleRead.java -- ByteArrayInputStream simple read test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.ByteArrayInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class SimpleRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "My sophomore year of college I moved out of the dorms. I\n" +
+ "moved in with three friends into a brand new townhouse in east\n" +
+ "Bloomington at 771 Woodbridge Drive. To this day that was the\n" +
+ "nicest place I've ever lived.\n";
+
+ byte[] str_bytes = str.getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(str_bytes);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ int bytes_read, total_read = 0;
+ while ((bytes_read = bais.read(read_buf, 0, read_buf.length)) != -1)
+ {
+ harness.debug(new String(read_buf, 0, bytes_read), false);
+ total_read += bytes_read;
+ }
+
+ bais.close();
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // SimpleRead
+
diff --git a/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Entries b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Entries
new file mode 100644
index 00000000..59a87595
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Entries
@@ -0,0 +1,3 @@
+/subclass.java/1.1/Fri Oct 31 10:51:35 2003//
+/write.java/1.1/Mon Nov 25 02:07:20 2002//
+D
diff --git a/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Repository b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Repository
new file mode 100644
index 00000000..d82cdf9a
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ByteArrayOutputStream
diff --git a/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Root b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ByteArrayOutputStream/subclass.java b/gnu/testlet/java/io/ByteArrayOutputStream/subclass.java
new file mode 100644
index 00000000..dc1c36f9
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayOutputStream/subclass.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+
+// 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.java.io.ByteArrayOutputStream;
+
+import java.io.ByteArrayOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class subclass extends ByteArrayOutputStream implements Testlet
+{
+ public subclass ()
+ {
+ super (10);
+ }
+
+ public void test (TestHarness harness)
+ {
+ for (int n = 0; n < 10; n++)
+ write (n);
+
+ // Ensure that writing 10 bytes to a stream with capacity 10
+ // does not cause it to grow.
+ harness.check(count, 10, "count");
+ harness.check(buf.length, 10, "buf.length");
+ for (int n = 0; n < 10; n++)
+ harness.check (buf[n], n, "buf[" + n + "]");
+ }
+}
diff --git a/gnu/testlet/java/io/ByteArrayOutputStream/write.java b/gnu/testlet/java/io/ByteArrayOutputStream/write.java
new file mode 100644
index 00000000..2f6c537b
--- /dev/null
+++ b/gnu/testlet/java/io/ByteArrayOutputStream/write.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Daryl Lee (dolee@sources.redhat.com)
+// Modified from FileOutputStream/write.java,
+// written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.ByteArrayOutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class write implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+ byte[] ba = {(byte)'B', (byte)'C', (byte)'D'};
+ String tststr = "ABCD";
+ baos.write('A');
+ harness.check(true, "write(int)");
+ baos.write(ba, 0, 3);
+ harness.check(true, "write(buf, off, len)");
+ harness.check(baos.size(), 4, "size()");
+ String finalstr1 = baos.toString();
+ harness.check(finalstr1.equals(tststr), "toString()");
+ byte[] finalba = baos.toByteArray();
+ String finalstr2 = new String(finalba);
+ harness.check(finalstr2.equals(tststr), "toByteArray()");
+ String encodedstr;
+ try {
+ encodedstr = baos.toString("English");
+ }
+ catch (UnsupportedEncodingException ue) {
+ harness.check(true, "UnsupportedEncodingException");
+ }
+ try {
+ encodedstr = baos.toString("8859_1");
+ harness.check(encodedstr.equals(tststr), "toString(String)");
+ }
+ catch (UnsupportedEncodingException ue) {
+ harness.check(false, "Encoding error");
+ }
+ try {
+ baos.writeTo(baos2);
+ harness.check(baos2.toString().equals(tststr), "writeTo(OutputStream)");
+ }
+ catch (IOException e) {
+ harness.check(false, "writeTo(OutputStream)");
+ }
+ baos.reset();
+ harness.check(baos.size(), 0, "reset()");
+ }
+}
diff --git a/gnu/testlet/java/io/CVS/Entries b/gnu/testlet/java/io/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/io/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/io/CVS/Entries.Log b/gnu/testlet/java/io/CVS/Entries.Log
new file mode 100644
index 00000000..554e6df4
--- /dev/null
+++ b/gnu/testlet/java/io/CVS/Entries.Log
@@ -0,0 +1,65 @@
+A D/BufferedByteOutputStream////
+A D/BufferedCharWriter////
+A D/BufferedInputStream////
+A D/BufferedOutputStream////
+A D/BufferedReader////
+A D/BufferedWriter////
+A D/ByteArrayInputStream////
+A D/ByteArrayOutputStream////
+A D/CharArrayReader////
+A D/CharArrayWriter////
+A D/CharConversionException////
+A D/DataInputOutput////
+A D/DataInputStream////
+A D/DataOutputStream////
+A D/EOFException////
+A D/File////
+A D/FileDescriptor////
+A D/FileInputStream////
+A D/FileNotFoundException////
+A D/FileOutputStream////
+A D/FilePermission////
+A D/FileReader////
+A D/FileWriter////
+A D/FilterInputStream////
+A D/FilterOutputStream////
+A D/FilterReader////
+A D/FilterWriter////
+A D/IOError////
+A D/IOException////
+A D/InputStream////
+A D/InputStreamReader////
+A D/InterruptedIOException////
+A D/InvalidClassException////
+A D/InvalidObjectException////
+A D/LineNumberInputStream////
+A D/LineNumberReader////
+A D/NotActiveException////
+A D/NotSerializableException////
+A D/ObjectInputOutput////
+A D/ObjectInputStream////
+A D/ObjectOutputStream////
+A D/ObjectStreamClass////
+A D/OutputStream////
+A D/OutputStreamWriter////
+A D/PipedReaderWriter////
+A D/PipedStream////
+A D/PrintStream////
+A D/PrintWriter////
+A D/PushbackInputStream////
+A D/PushbackReader////
+A D/RandomAccessFile////
+A D/Reader////
+A D/SequenceInputStream////
+A D/Serializable////
+A D/StreamCorruptedException////
+A D/StreamTokenizer////
+A D/StringBufferInputStream////
+A D/StringReader////
+A D/StringWriter////
+A D/SyncFailedException////
+A D/UTFDataFormatException////
+A D/UnsupportedEncodingException////
+A D/Utf8Encoding////
+A D/WriteAbortedException////
+A D/Writer////
diff --git a/gnu/testlet/java/io/CVS/Repository b/gnu/testlet/java/io/CVS/Repository
new file mode 100644
index 00000000..a69f796e
--- /dev/null
+++ b/gnu/testlet/java/io/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io
diff --git a/gnu/testlet/java/io/CVS/Root b/gnu/testlet/java/io/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/CharArrayReader/CVS/Entries b/gnu/testlet/java/io/CharArrayReader/CVS/Entries
new file mode 100644
index 00000000..586f0c84
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/CVS/Entries
@@ -0,0 +1,5 @@
+/MarkReset.java/1.1/Sat Dec 26 18:04:22 1998//
+/OutOfBounds.java/1.1/Sat Dec 27 13:29:11 2003//
+/ProtectedVars.java/1.1/Sat Dec 26 18:04:22 1998//
+/SimpleRead.java/1.1/Sat Dec 26 18:04:22 1998//
+D
diff --git a/gnu/testlet/java/io/CharArrayReader/CVS/Repository b/gnu/testlet/java/io/CharArrayReader/CVS/Repository
new file mode 100644
index 00000000..a6661dd4
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/CharArrayReader
diff --git a/gnu/testlet/java/io/CharArrayReader/CVS/Root b/gnu/testlet/java/io/CharArrayReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/CharArrayReader/MarkReset.java b/gnu/testlet/java/io/CharArrayReader/MarkReset.java
new file mode 100644
index 00000000..4f2e507f
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/MarkReset.java
@@ -0,0 +1,81 @@
+/*************************************************************************
+/* MarkReset.java -- Test CharArrayReader mark/reset functionality
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class MarkReset extends CharArrayReader implements Testlet
+{
+
+public
+MarkReset(char[] c)
+{
+ super(c);
+}
+
+// Constructor for test suite
+public
+MarkReset()
+{
+ super(new char[1]);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+
+ MarkReset car = new MarkReset(str_chars);
+ char[] read_buf = new char[12];
+
+ try
+ {
+ car.read(read_buf);
+ harness.check(car.ready(), "ready()");
+ harness.check(car.skip(5), 5, "skip()");
+ harness.check(car.markSupported(), "markSupported()");
+
+ car.mark(0);
+ int pos_save = car.pos;
+ car.read();
+ car.reset();
+ harness.check(car.pos, pos_save, "reset()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // MarkReset
+
diff --git a/gnu/testlet/java/io/CharArrayReader/OutOfBounds.java b/gnu/testlet/java/io/CharArrayReader/OutOfBounds.java
new file mode 100644
index 00000000..944edc01
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/OutOfBounds.java
@@ -0,0 +1,79 @@
+/*************************************************************************
+/* OutOfBounds.java -- CharArrayReader exception tests.
+/*
+/* Copyright (c) 2003 Free Software Foundation, Inc.
+/* Written by Guilhem Lavaux (guilhem@kaffe.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class OutOfBounds implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.\n";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+ char[] read_buf = new char[12];
+
+ CharArrayReader car = new CharArrayReader(str_chars);
+
+ harness.checkPoint("read(X) should throw IndexOutOfBoundsException");
+
+ // Test #1
+ try
+ {
+ car.read(read_buf, 0, read_buf.length+1);
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ // Test #2
+ try
+ {
+ car.read(read_buf, read_buf.length, 1);
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/CharArrayReader/ProtectedVars.java b/gnu/testlet/java/io/CharArrayReader/ProtectedVars.java
new file mode 100644
index 00000000..62ba4d30
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/ProtectedVars.java
@@ -0,0 +1,80 @@
+/*************************************************************************
+/* ProtectedVars.java -- Test CharArrayReaders protected variables
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends CharArrayReader implements Testlet
+{
+
+public
+ProtectedVars(char[] b)
+{
+ super(b);
+}
+
+// Constructor for the test suite
+public
+ProtectedVars()
+{
+ super(new char[1]);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+
+ ProtectedVars car = new ProtectedVars(str_chars);
+ char[] read_buf = new char[12];
+
+ try
+ {
+ car.read(read_buf);
+ car.mark(0);
+
+ harness.check(car.markedPos, read_buf.length, "markedPos");
+
+ car.read(read_buf);
+ harness.check(car.pos, (read_buf.length * 2), "pos");
+ harness.check(car.count, str_chars.length, "count");
+ harness.check(car.buf, str_chars, "buf");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // ProtectedVars
+
diff --git a/gnu/testlet/java/io/CharArrayReader/SimpleRead.java b/gnu/testlet/java/io/CharArrayReader/SimpleRead.java
new file mode 100644
index 00000000..c7e616a7
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayReader/SimpleRead.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+/* SimpleRead.java -- CharArrayReader simple read test.
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class SimpleRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.\n";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+ char[] read_buf = new char[12];
+
+ CharArrayReader car = new CharArrayReader(str_chars);
+
+ try
+ {
+ int chars_read, total_read = 0;
+ while ((chars_read = car.read(read_buf, 0, read_buf.length)) != -1)
+ {
+ harness.debug(new String(read_buf, 0, chars_read), false);
+ total_read += chars_read;
+ }
+
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // SimpleRead
+
diff --git a/gnu/testlet/java/io/CharArrayWriter/BasicTests.java b/gnu/testlet/java/io/CharArrayWriter/BasicTests.java
new file mode 100644
index 00000000..343b5136
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayWriter/BasicTests.java
@@ -0,0 +1,111 @@
+/*************************************************************************
+/* BasicTests.java -- CharArrayWriter basic tests.
+/*
+/* Copyright (c) 2002 Free Software Foundation, Inc.
+/* Written by David J. King (david_king@softhome.net)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class BasicTests implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ /*
+ * Use several methods to write to the buffer
+ * and verify that the results are correct.
+ */
+ String firstLines = "The first lines\n" +
+ "of the test which include \uA000 inverted question\n" +
+ "and \u6666 e-with-hat";
+ String thirdLine = "a third line";
+ String expected = firstLines + ' ' + "third";
+ CharArrayWriter writer = new CharArrayWriter();
+ if (writer.size() != 0)
+ harness.check(writer.size(), 0, "empty size");
+ char[] thirdLineArray = new char[thirdLine.length()];
+ String extractedString;
+ try
+ {
+ writer.write(firstLines, 0, firstLines.length());
+ writer.write(32);
+ thirdLine.getChars(0, thirdLine.length(), thirdLineArray, 0);
+ writer.write(thirdLineArray, 2, 5);
+ extractedString = writer.toString();
+ harness.check(extractedString, expected, "basic string");
+ /*
+ * Clear the buffer and write some more, then see if
+ * toCharArray works.
+ */
+ writer.reset();
+ writer.write(thirdLine, 0, thirdLine.length());
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false, "Unexpected exception");
+ extractedString = "";
+ }
+ char[] resultArray = writer.toCharArray();
+ boolean arrayEquals = resultArray.length == thirdLineArray.length;
+ if (arrayEquals)
+ for (int i=0; i < resultArray.length; i++)
+ if (resultArray[i] != thirdLineArray[i])
+ arrayEquals = false;
+ harness.checkPoint("reset string");
+ harness.check(arrayEquals);
+ /*
+ * Try flush and close and make sure they do nothing.
+ */
+ try
+ {
+ writer.flush();
+ writer.close();
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false, "Unexpected exception flush/close");
+ }
+ extractedString = writer.toString();
+ harness.check(extractedString, thirdLine, "flush and close");
+ /*
+ * Make another CharArrayWriter and writeTo it.
+ */
+ CharArrayWriter secondWriter = new CharArrayWriter();
+ boolean pass = false;
+ try {
+ writer.writeTo(secondWriter);
+ extractedString = secondWriter.toString();
+ if (extractedString.equals(thirdLine))
+ pass = true;
+ } catch (IOException ie) {
+ // Nothing need be done, it is enough for pass to remain false
+ }
+ harness.checkPoint("writeTo");
+ harness.check(pass);
+}
+
+} // BasicTests
diff --git a/gnu/testlet/java/io/CharArrayWriter/CVS/Entries b/gnu/testlet/java/io/CharArrayWriter/CVS/Entries
new file mode 100644
index 00000000..f6f40368
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayWriter/CVS/Entries
@@ -0,0 +1,3 @@
+/BasicTests.java/1.2/Sun Dec 15 13:07:50 2002//
+/ProtectedVars.java/1.2/Sun Dec 15 12:55:54 2002//
+D
diff --git a/gnu/testlet/java/io/CharArrayWriter/CVS/Repository b/gnu/testlet/java/io/CharArrayWriter/CVS/Repository
new file mode 100644
index 00000000..146c961f
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/CharArrayWriter
diff --git a/gnu/testlet/java/io/CharArrayWriter/CVS/Root b/gnu/testlet/java/io/CharArrayWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java b/gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java
new file mode 100644
index 00000000..4f093d2c
--- /dev/null
+++ b/gnu/testlet/java/io/CharArrayWriter/ProtectedVars.java
@@ -0,0 +1,73 @@
+/*************************************************************************
+/* ProtectedVars.java -- Test CharArrayWriter protected variables
+/*
+/* Copyright (c) 2002 Free Software Foundation, Inc.
+/* Written by David J. King (david_king@softhome.net)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.CharArrayWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends CharArrayWriter implements Testlet
+{
+
+// Constructor for the test suite
+public
+ProtectedVars()
+{
+ super();
+}
+
+public void
+test(TestHarness harness)
+{
+ /*
+ * Put in a string, and see if the count is correct.
+ */
+ String str = "Here is a test string";
+ ProtectedVars writer = new ProtectedVars();
+ try
+ {
+ // Inside try-catch block since some implementations throw IOException.
+ writer.write(str, 0, str.length());
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false, "Unexpected exception");
+ }
+ harness.check(writer.count, str.length(), "count");
+ /*
+ * Then see if the stored buffer is correct.
+ */
+ char[] strArray = new char[str.length()];
+ str.getChars(0, str.length(), strArray, 0);
+ boolean pass = writer.buf.length >= strArray.length;
+ if (pass)
+ for (int i=0; i < writer.count; i++)
+ if (writer.buf[i] != strArray[i])
+ pass = false;
+ harness.checkPoint("buffer");
+ harness.check(pass);
+}
+
+} // ProtectedVars
diff --git a/gnu/testlet/java/io/CharConversionException/CVS/Entries b/gnu/testlet/java/io/CharConversionException/CVS/Entries
new file mode 100644
index 00000000..1601f633
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Fri Aug 10 09:43:35 2012//
+/constructor.java/1.1/Fri Aug 10 09:43:35 2012//
+D
diff --git a/gnu/testlet/java/io/CharConversionException/CVS/Entries.Log b/gnu/testlet/java/io/CharConversionException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/CharConversionException/CVS/Repository b/gnu/testlet/java/io/CharConversionException/CVS/Repository
new file mode 100644
index 00000000..1566a3ff
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/CharConversionException
diff --git a/gnu/testlet/java/io/CharConversionException/CVS/Root b/gnu/testlet/java/io/CharConversionException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/CharConversionException/TryCatch.java b/gnu/testlet/java/io/CharConversionException/TryCatch.java
new file mode 100644
index 00000000..a3dc9a6c
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.CharConversionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.CharConversionException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new CharConversionException("CharConversionException");
+ }
+ catch (CharConversionException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Entries b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Entries
new file mode 100644
index 00000000..6b62ad23
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Fri Aug 10 09:43:37 2012//
+/getInterfaces.java/1.1/Fri Aug 10 09:43:37 2012//
+/getModifiers.java/1.1/Fri Aug 10 09:43:37 2012//
+/getName.java/1.1/Fri Aug 10 09:43:37 2012//
+/getPackage.java/1.1/Fri Aug 10 09:43:37 2012//
+/getSimpleName.java/1.1/Fri Aug 10 09:43:37 2012//
+/getSuperclass.java/1.1/Fri Aug 10 09:43:37 2012//
+/isAssignableFrom.java/1.1/Fri Aug 10 09:43:37 2012//
+/isInstance.java/1.1/Fri Aug 10 09:43:37 2012//
+/isInterface.java/1.1/Fri Aug 10 09:43:37 2012//
+/isLocalClass.java/1.1/Fri Aug 10 09:43:37 2012//
+/isMemberClass.java/1.1/Fri Aug 10 09:43:37 2012//
+/isPrimitive.java/1.1/Fri Aug 10 09:43:37 2012//
+/isSynthetic.java/1.1/Fri Aug 10 09:43:37 2012//
+D
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Repository b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Repository
new file mode 100644
index 00000000..7bddd6a7
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/CharConversionException/classInfo
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Root b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/InstanceOf.java b/gnu/testlet/java/io/CharConversionException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..c4301b03
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.CharConversionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.CharConversionException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CharConversionException
+ CharConversionException o = new CharConversionException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof CharConversionException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getInterfaces.java b/gnu/testlet/java/io/CharConversionException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..8f39ac33
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.CharConversionException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getModifiers.java b/gnu/testlet/java/io/CharConversionException/classInfo/getModifiers.java
new file mode 100644
index 00000000..6a7380b1
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.CharConversionException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getName.java b/gnu/testlet/java/io/CharConversionException/classInfo/getName.java
new file mode 100644
index 00000000..7dafb987
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.CharConversionException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getPackage.java b/gnu/testlet/java/io/CharConversionException/classInfo/getPackage.java
new file mode 100644
index 00000000..3ccc66a5
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.CharConversionException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getSimpleName.java b/gnu/testlet/java/io/CharConversionException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..5afed9e1
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "CharConversionException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/getSuperclass.java b/gnu/testlet/java/io/CharConversionException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..92b30e4d
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.CharConversionException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/CharConversionException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..d2521311
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(CharConversionException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isInstance.java b/gnu/testlet/java/io/CharConversionException/classInfo/isInstance.java
new file mode 100644
index 00000000..bf38c03d
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new CharConversionException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isInterface.java b/gnu/testlet/java/io/CharConversionException/classInfo/isInterface.java
new file mode 100644
index 00000000..874b1ddf
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isLocalClass.java b/gnu/testlet/java/io/CharConversionException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..6fdf32a4
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isMemberClass.java b/gnu/testlet/java/io/CharConversionException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..97e404f1
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isPrimitive.java b/gnu/testlet/java/io/CharConversionException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..5e0d26cb
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/classInfo/isSynthetic.java b/gnu/testlet/java/io/CharConversionException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..81985980
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.CharConversionException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test for method java.io.CharConversionException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new CharConversionException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/CharConversionException/constructor.java b/gnu/testlet/java/io/CharConversionException/constructor.java
new file mode 100644
index 00000000..9a397999
--- /dev/null
+++ b/gnu/testlet/java/io/CharConversionException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.CharConversionException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.CharConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharConversionException;
+
+
+
+/**
+ * Test if instances of a class java.io.CharConversionException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CharConversionException object1 = new CharConversionException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.CharConversionException");
+
+ CharConversionException object2 = new CharConversionException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.CharConversionException: nothing happens");
+
+ CharConversionException object3 = new CharConversionException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.CharConversionException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/DataInputOutput/CVS/Entries b/gnu/testlet/java/io/DataInputOutput/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputOutput/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/io/DataInputOutput/CVS/Repository b/gnu/testlet/java/io/DataInputOutput/CVS/Repository
new file mode 100644
index 00000000..7a15654c
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputOutput/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/DataInputOutput
diff --git a/gnu/testlet/java/io/DataInputOutput/CVS/Root b/gnu/testlet/java/io/DataInputOutput/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputOutput/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/DataInputStream/CVS/Entries b/gnu/testlet/java/io/DataInputStream/CVS/Entries
new file mode 100644
index 00000000..2ea19c2e
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/CVS/Entries
@@ -0,0 +1,8 @@
+/ReadReference.java/1.1/Wed Oct 9 01:55:53 2002//
+/ReadReference2.java/1.1/Wed Oct 16 19:39:25 2002//
+/ReadStream.java/1.2/Fri Dec 13 21:32:46 2002//
+/ReadStream2.java/1.2/Fri Dec 13 21:32:46 2002//
+/readLine.java/1.3/Fri Mar 4 09:37:53 2005//
+/reference.data/1.1/Wed Oct 9 01:55:53 2002//
+/reference2.data/1.1/Wed Oct 16 19:39:25 2002//
+D
diff --git a/gnu/testlet/java/io/DataInputStream/CVS/Repository b/gnu/testlet/java/io/DataInputStream/CVS/Repository
new file mode 100644
index 00000000..a4cc3fcb
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/DataInputStream
diff --git a/gnu/testlet/java/io/DataInputStream/CVS/Root b/gnu/testlet/java/io/DataInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/DataInputStream/ReadReference.java b/gnu/testlet/java/io/DataInputStream/ReadReference.java
new file mode 100644
index 00000000..7aa003fb
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/ReadReference.java
@@ -0,0 +1,57 @@
+/*************************************************************************
+/* ReadReference.java -- Tests Data{Input,Output}Stream's
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+// Uses: ReadStream
+
+package gnu.testlet.java.io.DataInputStream;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+public class ReadReference implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ InputStream is = harness.getResourceStream(
+ "gnu#testlet#java#io#DataInputStream#reference.data");
+ DataInputStream dis = new DataInputStream(is);
+
+ harness.debug("Reading reference DataInput data");
+ ReadStream.runReadTest(dis, harness);
+
+ dis.close();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read reference DataInput data");
+ }
+}
+
+} // class ReadReference
+
diff --git a/gnu/testlet/java/io/DataInputStream/ReadReference2.java b/gnu/testlet/java/io/DataInputStream/ReadReference2.java
new file mode 100644
index 00000000..52669f64
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/ReadReference2.java
@@ -0,0 +1,58 @@
+/*************************************************************************
+/* ReadReference2.java -- Tests Data{Input,Output}Stream's
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Daryl Lee (dol@sources.redhat.com)
+/* Shameless ripoff of ReadReference.java by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+// Uses: ReadStream2
+
+package gnu.testlet.java.io.DataInputStream;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+public class ReadReference2 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ InputStream is = harness.getResourceStream(
+ "gnu#testlet#java#io#DataInputStream#reference2.data");
+ DataInputStream dis = new DataInputStream(is);
+
+ harness.debug("Reading reference DataInput data, set 2");
+ ReadStream2.runReadTest(dis, harness);
+
+ dis.close();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read reference DataInput data (2)");
+ }
+}
+
+} // class ReadReference2
+
diff --git a/gnu/testlet/java/io/DataInputStream/ReadStream.java b/gnu/testlet/java/io/DataInputStream/ReadStream.java
new file mode 100644
index 00000000..4843a36f
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/ReadStream.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+/* ReadStream.java -- To a DataInput test from a stream
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.io.DataInputStream;
+
+import java.io.*;
+import gnu.testlet.TestHarness;
+
+// Write some data using DataOutput and read it using DataInput.
+
+public class ReadStream
+{
+
+// NOTE: Same function is in gnu.testlet.java.io.DataOutputStream.WriteRead
+// Please change that copy when you change this copy
+public static void
+runReadTest(DataInputStream dis, TestHarness harness)
+{
+ try
+ {
+ harness.check(dis.readBoolean(), "readBoolean() true");
+ harness.check(!dis.readBoolean(), "readBoolean() false");
+ harness.check(dis.readByte(), 8, "readByte()");
+ harness.check(dis.readByte(), -122, "readByte()");
+ harness.check(dis.readChar(), 'a', "readChar()");
+ harness.check(dis.readChar(), '\uE2D2', "readChar()");
+ harness.check(dis.readShort(), 32000, "readShort()");
+ harness.check(dis.readInt(), 8675309, "readInt()");
+ harness.check(dis.readLong(), 696969696969L, "readLong()");
+ harness.check(Float.toString(dis.readFloat()), "3.1415", "readFloat()");
+ harness.check(dis.readDouble(), 999999999.999, "readDouble");
+ harness.check((String)dis.readUTF(),
+ "Testing code is such a boring activity but it must be done",
+ "readUTF()");
+ harness.check(dis.readUTF(), "a-->\u01FF\uA000\u6666\u0200RRR",
+ "readUTF()");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Reading DataInputStream");
+ }
+}
+
+} // class ReadStream
+
diff --git a/gnu/testlet/java/io/DataInputStream/ReadStream2.java b/gnu/testlet/java/io/DataInputStream/ReadStream2.java
new file mode 100644
index 00000000..7e7f7033
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/ReadStream2.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+/* ReadStream2.java -- To a DataInput test from a stream
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Daryl Lee <dol@sources.redhat.com>
+/* Shameless ripoff of ReadStream.java by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: not-a-test
+
+// This test includes tests not performed in ReadStream
+
+package gnu.testlet.java.io.DataInputStream;
+
+import java.io.*;
+import gnu.testlet.TestHarness;
+
+// Read data previously prepared
+
+public class ReadStream2
+{
+
+// NOTE same function is in gnu.testlet.java.io.DataOutputStream.WriteRead2
+// Please change it in that place to if you change it here.
+public static void
+runReadTest(DataInputStream dis, TestHarness harness)
+{
+ String s2 = "Random";
+ byte[] b2 = new byte[s2.length()];
+ String s3 = " String Two";
+ byte[] b3 = new byte[s3.length()];
+
+ try
+ {
+ dis.skipBytes(34); // skip over "writeChars(Random String One)"
+ dis.readFully(b2); // get "Random"
+ harness.check(s2, new String(b2), "readFully(buf)");
+ dis.readFully(b3, 0, b3.length); // get " String Two"
+ harness.check(s3, new String(b3), "readFully(buf, off, len)");
+ dis.read(b2, 0, 1);
+ harness.check('X', b2[0], "read(b[])");
+ dis.read(b2, 0, 6);
+ String s4 = new String(b2);
+ harness.check("abcdef", s4, "read(b, off, len)");
+ harness.check(12, dis.readUnsignedByte(), "readUnsignedByte()");
+ harness.check(1234, dis.readUnsignedShort(), "readUnsignedShort()");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Reading DataInputStream (2)");
+ }
+}
+
+} // class ReadStream
+
diff --git a/gnu/testlet/java/io/DataInputStream/readLine.java b/gnu/testlet/java/io/DataInputStream/readLine.java
new file mode 100644
index 00000000..e4964267
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/readLine.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.1
+
+/* Copyright (C) 1999 Cygnus Solutions
+
+ 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.java.io.DataInputStream;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class readLine implements Testlet
+{
+ private static void check(TestHarness harness, String input, String[] expected, int separator)
+ {
+ DataInputStream din =
+ new DataInputStream(new ByteArrayInputStream(input.getBytes()));
+ for (int i = 0; i < expected.length; i++)
+ {
+ try
+ {
+ harness.check(din.readLine(), expected[i]);
+ if (separator != -1)
+ harness.check(din.read() == separator, "missing separator in: " + input);
+ }
+ catch(Exception x)
+ {
+ harness.fail("unexpected exception " + x);
+ }
+ }
+ try
+ {
+ harness.check(din.readLine(), null);
+ }
+ catch(Exception x)
+ {
+ harness.fail("unexpected exception " + x);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ check(harness, "", new String[] {}, -1);
+ check(harness, "\n", new String[] { "" }, -1);
+ check(harness, "\r", new String[] { "" }, -1);
+ check(harness, "\r\n", new String[] { "" }, -1);
+ check(harness, "\n\r", new String[] { "", "" }, -1);
+ check(harness, "\r\nfoo", new String[] { "", "foo" }, -1);
+ check(harness, "foo\r\nbar", new String[] { "foo", "bar" }, -1);
+ check(harness, "foo\rbar", new String[] { "foo", "bar" }, -1);
+ check(harness, "foo\nbar", new String[] { "foo", "bar" }, -1);
+ check(harness, "foo\r\n:bar\n:", new String[] { "foo", "bar" }, ':');
+ check(harness, "foo\r\n:bar\r:", new String[] { "foo", "bar" }, ':');
+ check(harness, "foo\r\n:bar\r\n:", new String[] { "foo", "bar" }, ':');
+ }
+}
diff --git a/gnu/testlet/java/io/DataInputStream/reference.data b/gnu/testlet/java/io/DataInputStream/reference.data
new file mode 100644
index 00000000..ba9875ce
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/reference.data
Binary files differ
diff --git a/gnu/testlet/java/io/DataInputStream/reference2.data b/gnu/testlet/java/io/DataInputStream/reference2.data
new file mode 100644
index 00000000..b3dce46f
--- /dev/null
+++ b/gnu/testlet/java/io/DataInputStream/reference2.data
Binary files differ
diff --git a/gnu/testlet/java/io/DataOutputStream/CVS/Entries b/gnu/testlet/java/io/DataOutputStream/CVS/Entries
new file mode 100644
index 00000000..271b4922
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/WriteRead.java/1.2/Fri Dec 13 21:32:47 2002//
+/WriteRead2.java/1.2/Fri Dec 13 21:32:47 2002//
+/writeUTF.java/1.1/Fri Nov 29 18:27:05 2002//
+D
diff --git a/gnu/testlet/java/io/DataOutputStream/CVS/Repository b/gnu/testlet/java/io/DataOutputStream/CVS/Repository
new file mode 100644
index 00000000..ceadb299
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/DataOutputStream
diff --git a/gnu/testlet/java/io/DataOutputStream/CVS/Root b/gnu/testlet/java/io/DataOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/DataOutputStream/WriteRead.java b/gnu/testlet/java/io/DataOutputStream/WriteRead.java
new file mode 100644
index 00000000..59772c63
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/WriteRead.java
@@ -0,0 +1,115 @@
+/*************************************************************************
+/* WriteRead.java -- Tests Data{Input,Output}Stream's
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.DataOutputStream;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class WriteRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ // First write it.
+ try
+ {
+ FileOutputStream fos = new FileOutputStream("dataoutput.out");
+ DataOutputStream dos = new DataOutputStream(fos);
+
+ dos.writeBoolean(true);
+ dos.writeBoolean(false);
+ dos.writeByte((byte)8);
+ dos.writeByte((byte)-122);
+ dos.writeChar((char)'a');
+ dos.writeChar((char)'\uE2D2');
+ dos.writeShort((short)32000);
+ dos.writeInt((int)8675309);
+ dos.writeLong(696969696969L);
+ dos.writeFloat((float)3.1415);
+ dos.writeDouble((double)999999999.999);
+ dos.writeUTF("Testing code is such a boring activity but it must be done");
+ dos.writeUTF("a-->\u01FF\uA000\u6666\u0200RRR");
+ dos.close();
+
+ harness.check(true, "DataOutputStream write (conditionally");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "DataOutputStream write");
+ return;
+ }
+
+ // Now read it
+ try
+ {
+ FileInputStream is = new FileInputStream("dataoutput.out");
+ DataInputStream dis = new DataInputStream(is);
+
+ harness.debug("Reading data written during write phase.");
+ runReadTest(dis, harness);
+
+ dis.close();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read data written during write phase");
+ }
+}
+// NOTE: Same function is in gnu.testlet.java.io.DataInputStream.ReadStream
+// Please change that copy when you change this copy
+public static void
+runReadTest(DataInputStream dis, TestHarness harness)
+{
+ try
+ {
+ harness.check(dis.readBoolean(), "readBoolean() true");
+ harness.check(!dis.readBoolean(), "readBoolean() false");
+ harness.check(dis.readByte(), 8, "readByte()");
+ harness.check(dis.readByte(), -122, "readByte()");
+ harness.check(dis.readChar(), 'a', "readChar()");
+ harness.check(dis.readChar(), '\uE2D2', "readChar()");
+ harness.check(dis.readShort(), 32000, "readShort()");
+ harness.check(dis.readInt(), 8675309, "readInt()");
+ harness.check(dis.readLong(), 696969696969L, "readLong()");
+ harness.check(Float.toString(dis.readFloat()), "3.1415", "readFloat()");
+ harness.check(dis.readDouble(), 999999999.999, "readDouble");
+ harness.check((String)dis.readUTF(),
+ "Testing code is such a boring activity but it must be done",
+ "readUTF()");
+ harness.check(dis.readUTF(), "a-->\u01FF\uA000\u6666\u0200RRR",
+ "readUTF()");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Reading DataInputStream");
+ }
+}
+
+} // class WriteRead
+
diff --git a/gnu/testlet/java/io/DataOutputStream/WriteRead2.java b/gnu/testlet/java/io/DataOutputStream/WriteRead2.java
new file mode 100644
index 00000000..7b37d887
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/WriteRead2.java
@@ -0,0 +1,116 @@
+/*************************************************************************
+/* WriteRead2.java -- Tests Data{Input,Output}Stream's
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Daryl Lee <dol@sources.redhat.com>
+/* Shameless ripoff of WriteRead.java by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+// This test contains the JDK 1.1 tests not included in WriteRead.java
+
+package gnu.testlet.java.io.DataOutputStream;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class WriteRead2 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ // First write it.
+ try
+ {
+ FileOutputStream fos = new FileOutputStream("dataoutput2.out");
+ DataOutputStream dos = new DataOutputStream(fos);
+ byte[] b = {97, 98, 99, 100, 101, 102}; // "abcdef"
+
+ dos.writeChars("Random String One");
+ dos.writeBytes("Random String Two");
+ dos.write('X');
+ dos.write(b, 0, b.length);
+ dos.writeByte(12);
+ dos.writeShort(1234);
+ dos.flush();
+ harness.check(true, "flush()");
+ harness.check(dos.size(), 61, "size()");
+ dos.close();
+ harness.check(true, "DataOutputStream write (2, conditionally");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "DataOutputStream write(2)");
+ return;
+ }
+
+ // Now read it
+ try
+ {
+ FileInputStream is = new FileInputStream("dataoutput2.out");
+ DataInputStream dis = new DataInputStream(is);
+
+ harness.debug("Reading data written during write phase.");
+ runReadTest(dis, harness);
+
+ dis.close();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read data written during write phase");
+ }
+}
+
+// NOTE same function is in gnu.testlet.java.io.DataInputStream.ReadStream2
+// Please change it in that place to if you change it here.
+public static void
+runReadTest(DataInputStream dis, TestHarness harness)
+{
+ String s2 = "Random";
+ byte[] b2 = new byte[s2.length()];
+ String s3 = " String Two";
+ byte[] b3 = new byte[s3.length()];
+
+ try
+ {
+ dis.skipBytes(34); // skip over "writeChars(Random String One)"
+ dis.readFully(b2); // get "Random"
+ harness.check(s2, new String(b2), "readFully(buf)");
+ dis.readFully(b3, 0, b3.length); // get " String Two"
+ harness.check(s3, new String(b3), "readFully(buf, off, len)");
+ dis.read(b2, 0, 1);
+ harness.check('X', b2[0], "read(b[])");
+ dis.read(b2, 0, 6);
+ String s4 = new String(b2);
+ harness.check("abcdef", s4, "read(b, off, len)");
+ harness.check(12, dis.readUnsignedByte(), "readUnsignedByte()");
+ harness.check(1234, dis.readUnsignedShort(), "readUnsignedShort()");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Reading DataInputStream (2)");
+ }
+}
+
+} // class WriteRead
+
diff --git a/gnu/testlet/java/io/DataOutputStream/writeUTF.java b/gnu/testlet/java/io/DataOutputStream/writeUTF.java
new file mode 100644
index 00000000..2c26203f
--- /dev/null
+++ b/gnu/testlet/java/io/DataOutputStream/writeUTF.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard
+
+// 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.java.io.DataOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class writeUTF implements Testlet
+{
+ TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ DataOutputStream dos = new DataOutputStream(baos);
+ dos.writeUTF("\u0000"
+ + "\u0001\u0002\u007e\u007f"
+ + "\u0080\u0081\u07fe\u07ff"
+ + "\u0800\u0801\ufffe\uffff");
+ dos.close();
+ byte[] bs = baos.toByteArray();
+ byte[] encoded = {(byte)0x00, (byte)0x1a, // size (26)
+ (byte)0xc0, (byte)0x80, // \u0000
+ (byte)0x01, // \u0001
+ (byte)0x02, // \u0002
+ (byte)0x7e, // \u007e
+ (byte)0x7f, // \u007f
+ (byte)0xc2, (byte)0x80, // \u0080
+ (byte)0xc2, (byte)0x81, // \u0081
+ (byte)0xdf, (byte)0xbe, // \u07fe
+ (byte)0xdf, (byte)0xbf, // \u07ff
+ (byte)0xe0, (byte)0xa0, (byte)0x80, // \u0800
+ (byte)0xe0, (byte)0xa0, (byte)0x81, // \u0801
+ (byte)0xef, (byte)0xbf, (byte)0xbe, // \ufffe
+ (byte)0xef, (byte)0xbf, (byte)0xbf}; // \uffff
+ checkArrayEquals(bs, encoded);
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("Unexpected IOException: " + ioe);
+ }
+ }
+
+ private void checkArrayEquals(byte[] b1, byte[] b2)
+ {
+ int length = b1.length;
+ if (length != b2.length)
+ {
+ harness.debug("b1.length=" + length
+ + ", but b2.length=" + b2.length);
+ harness.fail("arrays same");
+ return;
+ }
+
+ for (int i = 0; i < length; i++)
+ if (b1[i] != b2[i])
+ {
+ harness.debug("b1[" + i + "] = " + b1[i]
+ + ", but b2[" + i + "] = " + b2[i]);
+ harness.fail("arrays not equal");
+ return;
+ }
+
+ harness.check(true, "arrays same");
+ }
+}
diff --git a/gnu/testlet/java/io/EOFException/CVS/Entries b/gnu/testlet/java/io/EOFException/CVS/Entries
new file mode 100644
index 00000000..87f2ee47
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Sep 5 10:12:06 2012//
+/constructor.java/1.1/Wed Sep 5 10:12:06 2012//
+D
diff --git a/gnu/testlet/java/io/EOFException/CVS/Entries.Log b/gnu/testlet/java/io/EOFException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/EOFException/CVS/Repository b/gnu/testlet/java/io/EOFException/CVS/Repository
new file mode 100644
index 00000000..994c23b7
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/EOFException
diff --git a/gnu/testlet/java/io/EOFException/CVS/Root b/gnu/testlet/java/io/EOFException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/EOFException/TryCatch.java b/gnu/testlet/java/io/EOFException/TryCatch.java
new file mode 100644
index 00000000..fee82190
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.EOFException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.EOFException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new EOFException("EOFException");
+ }
+ catch (EOFException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/CVS/Entries b/gnu/testlet/java/io/EOFException/classInfo/CVS/Entries
new file mode 100644
index 00000000..8ebf2a0b
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Sep 5 10:12:07 2012//
+/getInterfaces.java/1.1/Wed Sep 5 10:12:07 2012//
+/getModifiers.java/1.1/Wed Sep 5 10:12:07 2012//
+/getName.java/1.1/Wed Sep 5 10:12:07 2012//
+/getPackage.java/1.1/Wed Sep 5 10:12:07 2012//
+/getSimpleName.java/1.1/Wed Sep 5 10:12:07 2012//
+/getSuperclass.java/1.1/Wed Sep 5 10:12:07 2012//
+/isAssignableFrom.java/1.1/Wed Sep 5 10:12:07 2012//
+/isInstance.java/1.1/Wed Sep 5 10:12:07 2012//
+/isInterface.java/1.1/Wed Sep 5 10:12:07 2012//
+/isLocalClass.java/1.1/Wed Sep 5 10:12:07 2012//
+/isMemberClass.java/1.1/Wed Sep 5 10:12:07 2012//
+/isPrimitive.java/1.1/Wed Sep 5 10:12:07 2012//
+/isSynthetic.java/1.1/Wed Sep 5 10:12:07 2012//
+D
diff --git a/gnu/testlet/java/io/EOFException/classInfo/CVS/Repository b/gnu/testlet/java/io/EOFException/classInfo/CVS/Repository
new file mode 100644
index 00000000..ecb99493
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/EOFException/classInfo
diff --git a/gnu/testlet/java/io/EOFException/classInfo/CVS/Root b/gnu/testlet/java/io/EOFException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/EOFException/classInfo/InstanceOf.java b/gnu/testlet/java/io/EOFException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..4b233806
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.EOFException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.EOFException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class EOFException
+ EOFException o = new EOFException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof EOFException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getInterfaces.java b/gnu/testlet/java/io/EOFException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..87100a4c
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.EOFException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getModifiers.java b/gnu/testlet/java/io/EOFException/classInfo/getModifiers.java
new file mode 100644
index 00000000..7676db83
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.EOFException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getName.java b/gnu/testlet/java/io/EOFException/classInfo/getName.java
new file mode 100644
index 00000000..72bbf1f9
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.EOFException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getPackage.java b/gnu/testlet/java/io/EOFException/classInfo/getPackage.java
new file mode 100644
index 00000000..66e723b2
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.EOFException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getSimpleName.java b/gnu/testlet/java/io/EOFException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..11226ca8
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "EOFException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/getSuperclass.java b/gnu/testlet/java/io/EOFException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..202d7bdd
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.EOFException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/EOFException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..51fddc22
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(EOFException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isInstance.java b/gnu/testlet/java/io/EOFException/classInfo/isInstance.java
new file mode 100644
index 00000000..8a2d16cb
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new EOFException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isInterface.java b/gnu/testlet/java/io/EOFException/classInfo/isInterface.java
new file mode 100644
index 00000000..6a48e414
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isLocalClass.java b/gnu/testlet/java/io/EOFException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..a9a7b72e
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isMemberClass.java b/gnu/testlet/java/io/EOFException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..7a893b77
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isPrimitive.java b/gnu/testlet/java/io/EOFException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..6a7282d5
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/classInfo/isSynthetic.java b/gnu/testlet/java/io/EOFException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..1f9fab95
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.EOFException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test for method java.io.EOFException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EOFException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/EOFException/constructor.java b/gnu/testlet/java/io/EOFException/constructor.java
new file mode 100644
index 00000000..d973353a
--- /dev/null
+++ b/gnu/testlet/java/io/EOFException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.EOFException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.EOFException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+
+
+
+/**
+ * Test if instances of a class java.io.EOFException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ EOFException object1 = new EOFException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.EOFException");
+
+ EOFException object2 = new EOFException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.EOFException: nothing happens");
+
+ EOFException object3 = new EOFException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.EOFException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/CVS/Entries b/gnu/testlet/java/io/File/CVS/Entries
new file mode 100644
index 00000000..f694c480
--- /dev/null
+++ b/gnu/testlet/java/io/File/CVS/Entries
@@ -0,0 +1,15 @@
+/ExecuteMethods.java/1.1/Fri Feb 9 20:07:44 2007//
+/ReadMethods.java/1.1/Fri Feb 9 20:07:44 2007//
+/URI.java/1.1/Fri Jan 14 21:10:09 2005//
+/UnicodeURI.java/1.1/Sun Feb 12 18:23:32 2006//
+/WriteMethods.java/1.1/Fri Feb 9 20:07:44 2007//
+/canWrite.java/1.2/Fri Nov 26 13:52:33 2004//
+/createFile.java/1.2/Sun Oct 23 17:25:29 2005//
+/emptyFile.java/1.2/Wed Jun 25 14:51:51 2008//
+/jdk11.java/1.8/Tue Nov 8 21:49:39 2005//
+/list.java/1.1/Fri Nov 29 16:00:46 2002//
+/listFiles.java/1.1/Fri Oct 25 12:38:25 2002//
+/newFile.java/1.3/Tue Sep 20 15:27:40 2005//
+/newFileURI.java/1.2/Wed Dec 14 17:26:27 2005//
+/security.java/1.17/Wed Aug 17 11:18:12 2011//
+D
diff --git a/gnu/testlet/java/io/File/CVS/Repository b/gnu/testlet/java/io/File/CVS/Repository
new file mode 100644
index 00000000..6f19d57b
--- /dev/null
+++ b/gnu/testlet/java/io/File/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/File
diff --git a/gnu/testlet/java/io/File/CVS/Root b/gnu/testlet/java/io/File/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/File/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/File/ExecuteMethods.java b/gnu/testlet/java/io/File/ExecuteMethods.java
new file mode 100644
index 00000000..75b79115
--- /dev/null
+++ b/gnu/testlet/java/io/File/ExecuteMethods.java
@@ -0,0 +1,68 @@
+/* ExecuteMethods.java -- Test File execute methods of classpath 1.6
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.6
+
+package gnu.testlet.java.io.File;
+
+import java.io.File;
+import java.io.IOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test file read methods of classpath 1.6
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class ExecuteMethods
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ String tmp = harness.getTempDirectory();
+ File tmpfile = new File(tmp, "mauve-testfile");
+
+ try
+ {
+ tmpfile.createNewFile();
+ }
+ catch (IOException e)
+ {
+ harness.fail("cannot create file for test.");
+ return;
+ }
+
+ boolean execute = tmpfile.canExecute();
+
+ // false because this file was just created
+ harness.check(execute == false);
+
+ execute = tmpfile.setExecutable(true);
+ harness.check(execute == true);
+
+ execute = tmpfile.canExecute();
+ harness.check(execute == true);
+
+ tmpfile.delete();
+ }
+}
diff --git a/gnu/testlet/java/io/File/ReadMethods.java b/gnu/testlet/java/io/File/ReadMethods.java
new file mode 100644
index 00000000..554133cc
--- /dev/null
+++ b/gnu/testlet/java/io/File/ReadMethods.java
@@ -0,0 +1,73 @@
+/* ReadMethods.java -- Test File read methods of classpath 1.6
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+//Tags: JDK1.6
+
+
+package gnu.testlet.java.io.File;
+
+import java.io.File;
+import java.io.IOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test File execute methods of classpath 1.6
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class ReadMethods
+ implements Testlet
+{
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ String tmp = harness.getTempDirectory();
+ File tmpfile = new File(tmp, "mauve-testfile");
+
+ try
+ {
+ tmpfile.createNewFile();
+ }
+ catch (IOException e)
+ {
+ harness.fail("cannot create file for test.");
+ return;
+ }
+
+ boolean read = tmpfile.canRead();
+
+ harness.check(read);
+
+ read = tmpfile.setReadable(false);
+ harness.check(read == true);
+
+ read = tmpfile.canRead();
+ harness.check(read == false);
+
+ tmpfile.delete();
+ }
+}
diff --git a/gnu/testlet/java/io/File/URI.java b/gnu/testlet/java/io/File/URI.java
new file mode 100644
index 00000000..bfe6c444
--- /dev/null
+++ b/gnu/testlet/java/io/File/URI.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.net.URL;
+import java.net.MalformedURLException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class URI implements Testlet
+{
+ public void check (TestHarness harness, URL url)
+ {
+ harness.check(url.getProtocol(), "file");
+ harness.check(url.getFile(), "/tmp/maude");
+ }
+
+ public void test (TestHarness harness)
+ {
+ File f = new File("/tmp/maude");
+ harness.checkPoint("toURL");
+ try
+ {
+ check(harness, f.toURL());
+ }
+ catch (MalformedURLException _)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("toURI");
+ try
+ {
+ check(harness, f.toURI().toURL());
+ }
+ catch (MalformedURLException _)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/File/UnicodeURI.java b/gnu/testlet/java/io/File/UnicodeURI.java
new file mode 100644
index 00000000..75604292
--- /dev/null
+++ b/gnu/testlet/java/io/File/UnicodeURI.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Tom Tromey <tromey@redhat.com>,
+// Dalibor Topic <robilad@kaffe.org>
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.net.URL;
+import java.net.MalformedURLException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class UnicodeURI implements Testlet
+{
+ private static final String LATIN_SMALL_LETTER_C_WITH_ACUTE = "\u0107";
+ private static final String fname = "/tmp/" + LATIN_SMALL_LETTER_C_WITH_ACUTE;
+
+ public void check (TestHarness harness, URL url)
+ {
+ final String protocol = url.getProtocol();
+ final String file = url.getFile();
+
+ harness.verbose("protocol: " + protocol);
+ harness.verbose("file: " + file);
+
+ harness.check(protocol, "file");
+ harness.check(file, fname);
+ }
+
+ public void test (TestHarness harness)
+ {
+ File f = new File(fname);
+ harness.checkPoint("toURL");
+ try
+ {
+ check(harness, f.toURL());
+ }
+ catch (MalformedURLException _)
+ {
+ harness.debug(_);
+ harness.check(false);
+ }
+
+ harness.checkPoint("toURI");
+ try
+ {
+ check(harness, f.toURI().toURL());
+ }
+ catch (MalformedURLException _)
+ {
+ harness.debug(_);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/File/WriteMethods.java b/gnu/testlet/java/io/File/WriteMethods.java
new file mode 100644
index 00000000..4048c7d2
--- /dev/null
+++ b/gnu/testlet/java/io/File/WriteMethods.java
@@ -0,0 +1,72 @@
+/* WriteMethods.java -- Test File write methods of classpath 1.6
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+//Tags: JDK1.6
+
+package gnu.testlet.java.io.File;
+
+import java.io.File;
+import java.io.IOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test File write methods of classpath 1.6
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class WriteMethods
+ implements Testlet
+{
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ String tmp = harness.getTempDirectory();
+ File tmpfile = new File(tmp, "mauve-testfile");
+
+ try
+ {
+ tmpfile.createNewFile();
+ }
+ catch (IOException e)
+ {
+ harness.fail("cannot create file for test.");
+ return;
+ }
+
+ boolean write = tmpfile.canWrite();
+
+ harness.check(write);
+
+ write = tmpfile.setWritable(false);
+ harness.check(write == true);
+
+ write = tmpfile.canWrite();
+ harness.check(write == false);
+
+ tmpfile.delete();
+ }
+}
diff --git a/gnu/testlet/java/io/File/canWrite.java b/gnu/testlet/java/io/File/canWrite.java
new file mode 100644
index 00000000..ee073fad
--- /dev/null
+++ b/gnu/testlet/java/io/File/canWrite.java
@@ -0,0 +1,156 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class canWrite implements Testlet
+{
+ File tmpdir;
+ File tmpfile;
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ harness.check(tmpdir.mkdir() || tmpdir.exists(), "temp directory");
+ tmpfile = new File(tmpdir, "testfile");
+ harness.check(tmpfile.delete() || !tmpfile.exists(), "no temp file");
+
+ harness.check(tmpdir.canRead(), "dir.canWrite()");
+ harness.check(tmpdir.canWrite(), "dir.canWrite()");
+ harness.check(tmpdir.setReadOnly(), "dir.setReadOnly()");
+ harness.check(tmpdir.canRead(), "dir.canWrite() after setReadOnly()");
+ harness.check(!tmpdir.canWrite(), "dir.canWrite() after SetReadOnly()");
+
+ harness.check(!tmpfile.canRead(), "non-existing-file.canRead()");
+ harness.check(!tmpfile.canWrite(), "non-existing-file.canWrite()");
+ harness.check(!tmpfile.setReadOnly(),
+ "non-existing-file.setReadOnly()");
+
+ boolean create;
+ try
+ {
+ create = tmpfile.createNewFile();
+ }
+ catch (IOException ioe)
+ {
+ create = false;
+ }
+ harness.check(!create, "creating file in read only dir");
+
+ // Remove and re-setup
+ tmpfile.delete();
+ tmpdir.delete();
+ tmpdir.mkdir();
+ harness.check(tmpdir.canRead(), "dir.canRead() after recreation");
+ harness.check(tmpdir.canWrite(), "dir.canWrite() after recreation");
+
+ try
+ {
+ create = tmpfile.createNewFile();
+ }
+ catch (IOException ioe)
+ {
+ create = false;
+ harness.debug(ioe);
+ }
+ harness.check(create, "creating file in new dir");
+ harness.check(tmpfile.canRead(), "file.canRead() after recreation");
+ harness.check(tmpfile.canWrite(), "file.canWrite() after recreation");
+
+ boolean write;
+ OutputStream os = null;
+ try
+ {
+ os = new FileOutputStream(tmpfile);
+ os.write(0);
+ write = true;
+ }
+ catch(IOException ioe)
+ {
+ write = false;
+ harness.debug(ioe);
+ }
+ finally
+ {
+ try
+ {
+ if (os != null)
+ os.close();
+ os = null;
+ }
+ catch(IOException _)
+ {
+ }
+ }
+ harness.check(write, "Actually write to new file");
+
+ harness.check(tmpfile.setReadOnly(), "file.setReadOnly()");
+
+ try
+ {
+ os = new FileOutputStream(tmpfile);
+ os.write(0);
+ write = true;
+ }
+ catch(IOException ioe)
+ {
+ write = false;
+ }
+ finally
+ {
+ try
+ {
+ if (os != null)
+ os.close();
+ os = null;
+ }
+ catch(IOException _)
+ {
+ }
+ }
+ harness.check(!write, "Write to file after setReadOnly()");
+ }
+ finally
+ {
+ // Cleanup
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+ tmpdir.delete();
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/createFile.java b/gnu/testlet/java/io/File/createFile.java
new file mode 100644
index 00000000..b4de102e
--- /dev/null
+++ b/gnu/testlet/java/io/File/createFile.java
@@ -0,0 +1,140 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.java.io.File;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.TreeSet;
+
+/**
+ * This test checks if the File.createTempFile may return the same file
+ * (wrong) if called from the parallel threads.
+ */
+public class createFile implements Testlet
+{
+ // How many files to ask?
+ static int N_FILES = 100;
+
+ // How many threads?
+ static int N_THREADS = 10;
+
+ String[][] returned;
+ TestHarness harness;
+ int completed;
+ File tempDir;
+
+ public void test(TestHarness a_harness)
+ {
+ try
+ {
+ harness = a_harness;
+ tempDir = new File(harness.getTempDirectory());
+ returned = new String[N_THREADS][];
+ completed = 0;
+
+ // Start threads.
+ for (int thread = 0; thread < N_THREADS; thread++)
+ {
+ new tester(thread).start();
+ }
+
+ int n = 0;
+ // Wait:
+ while (completed < N_THREADS && (n++ < 600))
+ {
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (InterruptedException iex)
+ {
+ }
+ }
+ if (completed < N_THREADS)
+ harness.fail("Failed in 60 seconds. Probably hangs.");
+
+ // Check for shared occurences:
+ TreeSet allReturned = new TreeSet();
+ String x;
+ for (int thread = 0; thread < N_THREADS; thread++)
+ {
+ for (int file = 0; file < N_FILES; file++)
+ {
+ x = (String) returned[thread][file];
+ if (allReturned.contains(x))
+ {
+ harness.fail("Multiple occurence of " + x);
+ return;
+ }
+ else
+ allReturned.add(x);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ class tester extends Thread
+ {
+ int thread_number;
+
+ tester(int a_thread_number)
+ {
+ thread_number = a_thread_number;
+ returned [thread_number] = new String[N_FILES];
+ }
+
+ public void run()
+ {
+ try
+ {
+ for (int file = 0; file < N_FILES; file++)
+ {
+ try
+ {
+ File tempFile = File.createTempFile("mauve", "cft", tempDir);
+ String s = tempFile.getAbsolutePath();
+ returned[thread_number][file] = s;
+ tempFile.delete();
+ }
+ catch (IOException ioex)
+ {
+ harness.fail("IOException " + ioex);
+ // Force termination.
+ completed = N_THREADS + 1;
+ }
+ }
+ }
+ finally
+ {
+ completed++;
+ }
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/io/File/emptyFile.java b/gnu/testlet/java/io/File/emptyFile.java
new file mode 100644
index 00000000..dee50a72
--- /dev/null
+++ b/gnu/testlet/java/io/File/emptyFile.java
@@ -0,0 +1,117 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Wolfgang Baer (WBaer@gmx.de)
+
+// 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.java.io.File;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * Tests all methods for an empty file constructed with new File("").
+ */
+public class emptyFile implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ String srcdirstr = harness.getBuildDirectory();
+ String pathseperator = File.separator;
+
+ // the empty test file
+ File testfile = new File("");
+
+ harness.check(testfile.getName(), "", "getName()");
+ harness.check(testfile.getParent(), null, "getParent()");
+ harness.check(testfile.getParentFile(), null, "getParentFile()");
+ harness.check(testfile.getPath(), "", "getPath()");
+ harness.check(testfile.isAbsolute(), false, "isAbsolute");
+ harness.check(testfile.getAbsolutePath(), srcdirstr,
+ "getAbsolutePath");
+ harness.check(testfile.getAbsoluteFile(), new File(
+ testfile.getAbsolutePath()), "getAbsoluteFile()");
+ harness.check(testfile.getCanonicalPath(), srcdirstr,
+ "getCanonicalPath");
+ harness.check(testfile.getCanonicalFile(), new File(
+ testfile.getCanonicalPath()), "getCanonicalFile");
+
+ harness.checkPoint("toURL");
+ harness.check(testfile.toURL().toString(), "file:" + srcdirstr);
+ harness.check(testfile.toURL(), new URL("file:" + srcdirstr));
+ harness.check(testfile.toURL().sameFile(
+ new URL("file", "", srcdirstr)), true);
+ harness.check(testfile.toURL().getPath(),
+ new URL("file", "", srcdirstr).getPath());
+
+ harness.checkPoint("toURI");
+ harness.check(testfile.toURI().toString(),
+ "file:" + srcdirstr + pathseperator);
+ harness.check(new File(testfile.toURI()).equals(
+ testfile.getAbsoluteFile()));
+
+ harness.check(testfile.canRead(), false, "canRead()");
+ harness.check(testfile.canWrite(), false, "canWrite()");
+ harness.check(testfile.exists(), false, "exists()");
+ harness.check(testfile.isDirectory(), false, "isDirectory()");
+ harness.check(testfile.isFile(), false, "isFile()");
+
+ harness.check(testfile.length(), 0, "length()");
+ harness.check(testfile.lastModified(), 0, "lastModified()");
+
+ try
+ {
+ testfile.createNewFile();
+ harness.check(false, "createNewFile()");
+ }
+ catch (IOException e)
+ {
+ harness.check(true, "createNewFile()");
+ }
+
+ harness.check(testfile.delete(), false, "delete()");
+ harness.check(testfile.list(), null, "list()");
+ harness.check(testfile.mkdir(), false, "mkdir()");
+ harness.check(testfile.setReadOnly(), false, "setReadOnly()");
+ harness.check(testfile.setLastModified(1000L), false,
+ "setLastModified()");
+
+ harness.checkPoint("compareTo()");
+ harness.check(testfile.compareTo(new File("")), 0);
+ harness.check(testfile.compareTo(new File(".")), -1);
+
+ harness.checkPoint("equals()");
+ harness.check(testfile.equals(new File("")), true);
+ harness.check(testfile.equals(new File(".")), false);
+
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/File/jdk11.java b/gnu/testlet/java/io/File/jdk11.java
new file mode 100644
index 00000000..0b46502f
--- /dev/null
+++ b/gnu/testlet/java/io/File/jdk11.java
@@ -0,0 +1,345 @@
+/*************************************************************************
+/* jdk11.java -- java.io.File 1.1 tests
+/*
+/* Copyright (c) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.File;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.config;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
+import java.util.Date;
+
+public class jdk11 implements Testlet, FilenameFilter
+{
+
+ public void test (TestHarness harness)
+ {
+ String srcdirstr = harness.getSourceDirectory ();
+ String tmpdirstr = harness.getTempDirectory ();
+
+ // File (String)
+ File srcdir = new File (srcdirstr);
+ File tmpdir = new File (tmpdirstr);
+ String THIS_FILE = new String ("gnu" +
+ File.separator + "testlet" +
+ File.separator + "java" +
+ File.separator + "io" +
+ File.separator + "File" +
+ File.separator + "tmp");
+
+ // File (File, String)
+ File cons = new File (srcdir, THIS_FILE);
+ // File (String, String)
+ File cons2 = new File (srcdirstr, THIS_FILE);
+
+
+ // mkdir ()
+ harness.check (cons.mkdir (), "mkdir ()");
+
+ // canRead ()
+ harness.check (cons.canRead (), "canRead ()");
+ // equals (Object)
+ harness.check (cons.equals (cons2), "equals ()");
+ // isDirectory ()
+ harness.check (srcdir.isDirectory (), "isDirectory ()");
+ harness.check (tmpdir.isDirectory (), "isDirectory ()");
+
+ String TMP_FILENAME = "File.tst";
+ String TMP_FILENAME2 = "Good.doc";
+ String TMP_FILENAME3 = "File.doc";
+
+ // create empty file
+ File tmp = new File (cons, TMP_FILENAME);
+ try
+ {
+ FileOutputStream fos = new FileOutputStream (tmp);
+ fos.close ();
+ }
+ catch (FileNotFoundException fne) { }
+ catch (IOException ioe) { }
+
+ // create empty file
+ File tmp2 = new File (cons, TMP_FILENAME2);
+ try
+ {
+ FileOutputStream fos = new FileOutputStream (tmp2);
+ fos.close ();
+ }
+ catch (FileNotFoundException fne) { }
+ catch (IOException ioe) { }
+
+ File tmp3 = new File (cons, TMP_FILENAME3);
+
+ // canWrite ()
+ harness.check (tmp.canWrite (), "canWrite()");
+ // exists ()
+ harness.check (tmp.exists (), "exists ()");
+ // isFile ()
+ harness.check (tmp.isFile (), "isFile ()");
+ // length ()
+ harness.check (tmp.length (), 0L, "length ()");
+ byte[] b = new byte[2001];
+ try
+ {
+ FileOutputStream fos = new FileOutputStream (tmp);
+ fos.write (b);
+ fos.close ();
+ }
+ catch (FileNotFoundException fne) { }
+ catch (IOException ioe) { }
+ harness.check (tmp.length (), b.length, "length ()");
+
+ // toString ();
+ String tmpstr = new String (srcdirstr + File.separator
+ + THIS_FILE + File.separator
+ + TMP_FILENAME);
+ harness.debug (tmp.toString () + " =? " + tmpstr);
+ harness.check (tmp.toString ().equals (tmpstr), "toString ()");
+
+ // list ();
+ String [] tmpdirlist = cons.list ();
+ String [] expectedlist = new String[] {TMP_FILENAME, TMP_FILENAME2};
+// for (int ll=0; ll<tmpdirlist.length; ll++)
+// System.err.println (tmpdirlist[ll]);
+ harness.check (compareStringArray (tmpdirlist, expectedlist), "list ()");
+
+ // list (FilenameFilter);
+ tmpdirlist = cons.list (this);
+ expectedlist = new String[] {TMP_FILENAME2};
+// for (int ll=0; ll<tmpdirlist.length; ll++)
+// System.err.println (tmpdirlist[ll]);
+ harness.check (compareStringArray (tmpdirlist, expectedlist), "list (FilenameFilter)");
+
+ // renameTo (File);
+ if (tmp3.exists ())
+ tmp3.delete ();
+ harness.check (tmp.renameTo (tmp3), "renameTo (File)");
+ harness.check (tmp3.exists (), "renameTo (File)");
+
+ // check delete of directory with something in it fails
+ if (tmp.exists ())
+ harness.check (tmp.delete (), "delete ()");
+ if (tmp2.exists ())
+ harness.check (tmp2.delete (), "delete ()");
+ if (tmp3.exists ())
+ harness.check (tmp3.delete (), "delete ()");
+ harness.check (!tmp.exists (), "delete ()");
+ harness.check (!tmp2.exists (), "delete ()");
+ harness.check (!tmp3.exists (), "delete ()");
+
+ // mkdir ();
+ harness.check (tmp.mkdir (), "mkdir ()");
+ harness.check (tmp.exists () && tmp.isDirectory (), "mkdir ()");
+
+ // mkdirs ();
+ File mkdirstest = new File (tmpdirstr, new String ("one" + File.separator
+ + "two" + File.separator
+ + "three"));
+ harness.check (mkdirstest.mkdirs (), "mkdirs ()");
+ harness.check (mkdirstest.exists () && mkdirstest.isDirectory (), "mkdirs ()");
+ File mkdirstest2 = new File (tmpdirstr, new String ("one" + File.separator
+ + "two"));
+ harness.check (mkdirstest2.exists () && mkdirstest2.isDirectory (), "mkdirs ()");
+ File mkdirstest1 = new File (tmpdirstr, new String ("one"));
+ harness.check (mkdirstest1.exists () && mkdirstest1.isDirectory (), "mkdirs ()");
+
+ harness.check (mkdirstest.delete (), "delete () of a directory");
+ harness.check (!mkdirstest.exists (), "delete () of a directory");
+
+ // negative test case
+ harness.check (!mkdirstest1.delete (), "delete () of a directory");
+
+ harness.check (mkdirstest2.delete (), "delete () of a directory");
+ harness.check (!mkdirstest2.exists (), "delete () of a directory");
+
+ harness.check (mkdirstest1.delete (), "delete () of a directory");
+ harness.check (!mkdirstest1.exists (), "delete () of a directory");
+
+ // check delete of an empty directory
+ harness.check (tmp.delete (), "delete () of a directory");
+ harness.check (!tmp.exists (), "delete () of a directory");
+
+ harness.check (cons.delete (), "delete () of a directory");
+ harness.check (!cons.exists (), "delete () of a directory");
+
+ harness.check (File.pathSeparator.equals (config.pathSeparator), "pathSeparator");
+ harness.check (new Character (File.pathSeparatorChar).toString ().equals (config.pathSeparator), "pathSeparatorChar");
+
+ harness.check (File.separator.equals (config.separator), "separator");
+ harness.check (new Character (File.separatorChar).toString ().equals (config.separator), "separatorChar");
+
+ // getAbsolutePath ();
+ harness.debug ("tmp3.getAbsolutePath () = " + tmp3.getAbsolutePath ());
+ harness.debug ("equals? " + srcdirstr
+ + File.separator
+ + THIS_FILE
+ + File.separator
+ + TMP_FILENAME3);
+ harness.check (tmp3.getAbsolutePath ().equals (srcdirstr
+ + File.separator
+ + THIS_FILE
+ + File.separator
+ + TMP_FILENAME3), "getAbsolutePath ()");
+
+ // getCanonicalPath ();
+
+ try
+ {
+ // Make sure that file exists.
+ cons.mkdir ();
+ FileOutputStream fos = new FileOutputStream (tmp3);
+ fos.write (1);
+ fos.close ();
+ harness.debug ("tmp3.getCanonicalPath () = " + tmp3.getCanonicalPath ());
+ harness.debug ("equals? " + srcdirstr + File.separator
+ + THIS_FILE + File.separator
+ + TMP_FILENAME3);
+ harness.check (tmp3.getCanonicalPath ().equals (srcdirstr
+ + File.separator
+ + THIS_FILE
+ + File.separator
+ + TMP_FILENAME3), "getCanonicalPath ()");
+ // Remove again
+ tmp3.delete ();
+ cons.delete ();
+ }
+ catch (IOException ioe)
+ {
+ harness.check (false, "getCanonicalPath () " + ioe);
+ }
+
+ // Another getCanonicalPath() test.
+ boolean ok = false;
+ try
+ {
+ File x1 = new File ("").getCanonicalFile ();
+ File x2 = new File (".").getCanonicalFile ();
+ ok = x1.equals(x2);
+ }
+ catch (IOException ioe)
+ {
+ // Nothing.
+ }
+ harness.check (ok, "getCanonicalFile with empty path");
+
+ // getName ();
+ harness.debug ("tmp3.getName () = " + tmp3.getName ());
+ harness.check (tmp3.getName ().equals (TMP_FILENAME3), "getName ()");
+
+ // getParent ();
+ harness.check (tmp3.getParent ().equals (srcdirstr
+ + File.separator
+ + THIS_FILE), "getParent ()");
+
+ // getPath ();
+ harness.debug ("tmp3.getPath () = " + tmp.getPath ());
+ harness.check (tmp3.getPath ().equals (srcdirstr
+ + File.separator
+ + THIS_FILE
+ + File.separator
+ + TMP_FILENAME3), "getPath ()");
+
+ // hashCode ();
+ int hc1 = tmp3.hashCode();
+ int hc2 = tmp3.hashCode();
+ harness.check (hc1, hc2, "hashCode()");
+
+ // isAbsolute ();
+ harness.check (tmp3.isAbsolute (), "isAbsolute ()");
+ harness.check (! new File("").isAbsolute());
+
+ // lastModified ();
+ File lastmod = new File (tmpdir, "lastmod");
+ if (lastmod.exists ())
+ lastmod.delete ();
+ Date now = new Date ();
+ long time = now.getTime ();
+ try
+ {
+ Thread.sleep (1000);
+ }
+ catch (InterruptedException ie) { }
+ try
+ {
+ FileOutputStream fos = new FileOutputStream (lastmod);
+ fos.close ();
+ }
+ catch (FileNotFoundException fne) { }
+ catch (IOException ioe) { }
+ harness.debug (lastmod.lastModified () + " >= " + time);
+ if (lastmod.lastModified () >= time)
+ harness.check (true, "lastModified ()");
+ else
+ harness.check (false, "lastModified ()");
+ if (lastmod.exists ())
+ lastmod.delete ();
+ }
+
+ /**
+ * Compare two String arrays, and if of the same length compare
+ * contents for equality, order does not matter.
+ */
+ private boolean compareStringArray (String[] x, String[] y)
+ {
+ if (x.length != y.length)
+ return false;
+
+ boolean[] test = new boolean[y.length];
+ for (int i = 0; i < test.length; i++)
+ test[i] = true;
+
+ for (int i = 0; i < x.length; i++)
+ {
+ boolean nomatch = true;
+ for (int j = 0; j < y.length; j++)
+ {
+ if (test[j])
+ if (x[i].equals (y[j]))
+ {
+ test[j] = false;
+ nomatch = false;
+ break;
+ }
+ }
+ if (nomatch)
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Defined by NameFilter. Only accepts files ending with .doc.
+ */
+ public boolean accept (File dir, String name)
+ {
+ if (name.endsWith (".doc"))
+ return true;
+ return false;
+ }
+
+}
+
diff --git a/gnu/testlet/java/io/File/list.java b/gnu/testlet/java/io/File/list.java
new file mode 100644
index 00000000..8b595b0d
--- /dev/null
+++ b/gnu/testlet/java/io/File/list.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class list implements Testlet
+{
+ File tmpdir;
+ File tmpfile;
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ harness.check(tmpdir.mkdir() || tmpdir.exists(), "temp directory");
+
+ String[] list = tmpdir.list();
+ harness.check(list.length, 0, "empty directory");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpdir.list((FilenameFilter)null);
+ harness.check(list.length, 0, "empty directory, null filter");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ // non-existing file
+ tmpfile = new File(tmpdir, "testfile");
+ harness.check(tmpfile.delete() || !tmpfile.exists(), "no temp file");
+
+ list = tmpdir.list();
+ harness.check(list.length, 0, "no real file in dir");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpdir.list((FilenameFilter)null);
+ harness.check(list.length, 0, "no real file in dir, null filter");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpfile.list();
+ harness.check(list, null, "non-existing-file");
+
+ list = tmpfile.list((FilenameFilter)null);
+ harness.check(list, null, "non-existing-file, null filter");
+
+ // not-a-directory
+ tmpfile.createNewFile();
+ list = tmpfile.list();
+ harness.check(list, null, "not-a-directory");
+
+ list = tmpfile.list((FilenameFilter)null);
+ harness.check(list, null, "not-a-directory, null filter");
+
+ // File in directory
+ list = tmpdir.list();
+ harness.check(list != null
+ && list.length == 1
+ && list[0].equals("testfile"),
+ "one file in directory");
+
+ list = tmpdir.list((FilenameFilter)null);
+ harness.check(list != null
+ && list.length == 1
+ && list[0].equals("testfile"),
+ "one file in directory, null filter");
+
+ // For all roots it should give something.
+ File[] roots = File.listRoots();
+ for (int i = 0; i < roots.length; i++)
+ {
+ harness.check(roots[i].list() != null, "root " + i);
+ harness.check(roots[i].list((FilenameFilter)null) != null,
+ "root " + i + ", null filter");
+ }
+
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected exception: " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ // Cleanup
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+ tmpdir.delete();
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/listFiles.java b/gnu/testlet/java/io/File/listFiles.java
new file mode 100644
index 00000000..b3fe81ea
--- /dev/null
+++ b/gnu/testlet/java/io/File/listFiles.java
@@ -0,0 +1,127 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class listFiles implements Testlet
+{
+ File tmpdir;
+ File tmpfile;
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ harness.check(tmpdir.mkdir() || tmpdir.exists(), "temp directory");
+
+ File[] list = tmpdir.listFiles();
+ harness.check(list.length, 0, "empty directory");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpdir.listFiles((FileFilter)null);
+ harness.check(list.length, 0, "empty directory, null filter");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ // non-existing file
+ tmpfile = new File(tmpdir, "testfile");
+ harness.check(tmpfile.delete() || !tmpfile.exists(), "no temp file");
+
+ list = tmpdir.listFiles();
+ harness.check(list.length, 0, "no real file in dir");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpdir.listFiles((FileFilter)null);
+ harness.check(list.length, 0, "no real file in dir, null filter");
+ harness.debug("list.length: " + list.length);
+ if (list.length > 0)
+ harness.debug("Unexpected: " + list[0]);
+
+ list = tmpfile.listFiles();
+ harness.check(list, null, "non-existing-file");
+
+ list = tmpfile.listFiles((FileFilter)null);
+ harness.check(list, null, "non-existing-file, null filter");
+
+ // not-a-directory
+ tmpfile.createNewFile();
+ list = tmpfile.listFiles();
+ harness.check(list, null, "not-a-directory");
+
+ list = tmpfile.listFiles((FileFilter)null);
+ harness.check(list, null, "not-a-directory, null filter");
+
+ // File in directory
+ list = tmpdir.listFiles();
+ harness.check(list != null
+ && list.length == 1
+ && list[0].equals(tmpfile), "one file in directory");
+
+ list = tmpdir.listFiles((FileFilter)null);
+ harness.check(list != null
+ && list.length == 1
+ && list[0].equals(tmpfile), "one file in directory"
+ + ", null filter");
+
+ // For all roots it should give something.
+ File[] roots = File.listRoots();
+ for (int i = 0; i < roots.length; i++)
+ {
+ harness.check(roots[i].listFiles() != null, "root " + i);
+ harness.check(roots[i].listFiles((FileFilter)null) != null,
+ "root " + i + ", null filter");
+ }
+
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected exception: " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ // Cleanup
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+ tmpdir.delete();
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/newFile.java b/gnu/testlet/java/io/File/newFile.java
new file mode 100644
index 00000000..101142db
--- /dev/null
+++ b/gnu/testlet/java/io/File/newFile.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.File;
+
+import java.io.File;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class newFile implements Testlet
+{
+ File tmpdir;
+ File tmpfile;
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ harness.check(tmpdir.mkdir() || tmpdir.exists(), "temp directory");
+
+ File samedir = new File(tmp + File.separator + "mauve-testdir"
+ + File.separator);
+ File againdir = new File(tmp + File.separator + "mauve-testdir"
+ + File.separator + File.separator);
+ File dirdir = new File(tmp, "mauve-testdir");
+
+ harness.check(tmpdir.isDirectory(),
+ "isDirectory() without separator");
+ harness.check(samedir.isDirectory(),
+ "isDirectory() with separator");
+ harness.check(againdir.isDirectory(),
+ "isDirectory() with double separators");
+ harness.check(dirdir.isDirectory(),
+ "isDirectory() with dir in dir");
+
+ harness.check(tmpdir.getPath(), samedir.getPath(),
+ "dir getPath() with/without trailing separator");
+ harness.check(samedir.getPath(), againdir.getPath(),
+ "dir getPath() with (double) trailing separator");
+ harness.check(againdir.getPath(), dirdir.getPath(),
+ "dir getPath() with double separator and dir in dir");
+
+ harness.check(tmpdir.getName(), samedir.getName(),
+ "dir getName() with/without trailing separator");
+ harness.check(samedir.getName(), againdir.getName(),
+ "dir getName() with (double) separator");
+ harness.check(againdir.getName(), dirdir.getName(),
+ "dir getName() with double separator and dir in dir");
+
+ harness.check(tmpdir.getParent(), samedir.getParent(),
+ "same parent with/without separator");
+ harness.check(samedir.getParent(), againdir.getParent(),
+ "same parent with (double) separator");
+ harness.check(againdir.getParent(), dirdir.getParent(),
+ "same parent with double separator and dir in dir");
+
+ harness.checkPoint("getname returns the argument");
+ harness.check(new File("dir").getName(), "dir");
+ // Directory separator is stripped.
+ harness.check(new File("dir" + File.separator).getName(), "dir");
+ // If the file separator is backslash, I think it doesn't
+ // make sense to check this one.
+ if (File.separatorChar != '\\')
+ harness.check(new File("dir\\").getName(), "dir\\");
+ }
+ finally
+ {
+ // Cleanup
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+ tmpdir.delete();
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/newFileURI.java b/gnu/testlet/java/io/File/newFileURI.java
new file mode 100644
index 00000000..3d5df756
--- /dev/null
+++ b/gnu/testlet/java/io/File/newFileURI.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.java.io.File;
+
+import java.io.IOException;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class newFileURI implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ File file = new File(".");
+ URI uri = file.toURI();
+
+ File urifile = new File(uri);
+ // Check that we get back the original (absolute) file.
+ harness.check(urifile, file.getAbsoluteFile());
+
+ boolean nullthrown = false;
+ try
+ {
+ new File((URI) null);
+ }
+ catch (NullPointerException npe)
+ {
+ nullthrown = true;
+ }
+ harness.check(nullthrown);
+
+ boolean illegalthrown = false;
+ try
+ {
+ new File(new URI("ftp://ftp.gnu.org/gnu/classpath"));
+ }
+ catch(IllegalArgumentException iae)
+ {
+ illegalthrown = true;
+ }
+ harness.check(illegalthrown);
+
+ // Current dir
+ harness.check(new File("").getCanonicalFile(),
+ new File(".").getCanonicalFile());
+ // Non-hierarchical URI
+ try
+ {
+ harness.checkPoint("non-hierarchical URI");
+ uri = new URI("file:./");
+ urifile = new File(uri);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ // Expected.
+ harness.check(true);
+ }
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ catch (URISyntaxException use)
+ {
+ harness.debug(use);
+ harness.check(false, use.toString());
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/File/security.java b/gnu/testlet/java/io/File/security.java
new file mode 100644
index 00000000..03f475fb
--- /dev/null
+++ b/gnu/testlet/java/io/File/security.java
@@ -0,0 +1,534 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Red Hat, Inc.
+// Copyright (C) 2004 Stephen Crawley.
+// Copyright (C) 2005, 2006, 2010 Red Hat, Inc.
+// Written by Tom Tromey <tromey@redhat.com>
+// Extensively modified by Stephen Crawley <crawley@dstc.edu.au>
+// Further modified by Gary Benson <gbenson@redhat.com>
+// Further modified by Andrew John Hughes <ahughes@redhat.com>
+
+// 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.java.io.File;
+
+import java.io.File;
+import java.io.FilePermission;
+import java.io.FilenameFilter;
+import java.io.FileFilter;
+import java.security.Permission;
+import java.util.Date;
+import java.util.PropertyPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ File tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ harness.check(tmpdir.mkdir() || tmpdir.exists(), "temp directory");
+ File tmpdir2 = new File(tmpdir, "nested-dir");
+ harness.check(tmpdir2.mkdir() || tmpdir2.exists(), "temp directory 2");
+ File tmpdir3 = new File(tmpdir2, "nested-nested-dir");
+ File tmpfile = new File(tmpdir, "testfile");
+ harness.check(tmpfile.delete() || !tmpfile.exists(), "no temp file");
+ File tmpfile2 = new File(tmpdir, "testfile2");
+ harness.check(tmpfile2.delete() || !tmpfile2.exists());
+
+ Permission tmpdirReadPerm =
+ new FilePermission(tmpdir.toString(), "read");
+ Permission tmpdirWritePerm =
+ new FilePermission(tmpdir.toString(), "write");
+ Permission tmpdirDeletePerm =
+ new FilePermission(tmpdir.toString(), "delete");
+
+ Permission tmpdir2ReadPerm =
+ new FilePermission(tmpdir2.toString(), "read");
+ Permission tmpdir2WritePerm =
+ new FilePermission(tmpdir2.toString(), "write");
+ Permission tmpdir2DeletePerm =
+ new FilePermission(tmpdir2.toString(), "delete");
+
+ Permission tmpdir3ReadPerm =
+ new FilePermission(tmpdir3.toString(), "read");
+ Permission tmpdir3WritePerm =
+ new FilePermission(tmpdir3.toString(), "write");
+
+ Permission tmpfileReadPerm =
+ new FilePermission(tmpfile.toString(), "read");
+ Permission tmpfileWritePerm =
+ new FilePermission(tmpfile.toString(), "write");
+ Permission tmpfileDeletePerm =
+ new FilePermission(tmpfile.toString(), "delete");
+
+ Permission tmpallWritePerm =
+ new FilePermission(tmp + File.separator + "*", "write");
+ Permission tmpdirallWritePerm =
+ new FilePermission(tmpdir.toString() + File.separator + "*", "write");
+ Permission tmpfile2WritePerm =
+ new FilePermission(tmpfile2.toString(), "write");
+
+ Permission rootReadPerm =
+ new FilePermission(File.separator, "read");
+
+ Permission tmpdirPropPerm =
+ new PropertyPermission("java.io.tmpdir", "read");
+
+ Permission modifyThreadGroup =
+ new RuntimePermission("modifyThreadGroup");
+ Permission shutdownHooks =
+ new RuntimePermission("shutdownHooks");
+
+ // Keep a record of created temp files so we can delete them later.
+ File tf1 = null;
+ File tf2 = null;
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.io.File-canWrite-DIR
+ harness.checkPoint("dir.canWrite");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirWritePerm});
+ tmpdir.canWrite();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.canWrite - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-canRead-DIR
+ harness.checkPoint("dir.canRead");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.canRead();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.canRead - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-createNewFile
+ harness.checkPoint("file.createNewFile");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileWritePerm});
+ tmpfile.createNewFile();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.createNewFile - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-delete-FILE
+ harness.checkPoint("file.delete");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileDeletePerm});
+ tmpfile.delete();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.delete - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-list(FilenameFilter)
+ harness.checkPoint("dir.list(null)");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.list(null);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.list(null) - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-list
+ harness.checkPoint("dir.list()");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.list();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.list() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-listFiles
+ harness.checkPoint("dir.listFiles()");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.listFiles();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.listFiles() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-listFiles(FilenameFilter)
+ harness.checkPoint("dir.listFiles(FilenameFilter)");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.listFiles((FilenameFilter) null);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false,
+ "dir.listFiles(FilenameFilter) - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-listFiles(FileFilter)
+ harness.checkPoint("dir.listFiles(FileFilter)");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.listFiles((FileFilter) null);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false,
+ "dir.listFiles(FileFilter) - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-createTempFile(String, String)
+ harness.checkPoint("createTempFile(2-args)");
+ try {
+ sm.prepareChecks(new Permission[]{tmpallWritePerm},
+ new Permission[]{tmpdirPropPerm});
+ sm.setComparisonStyle(TestSecurityManager.IMPLIES);
+ tf1 = File.createTempFile("pfx", "sfx");
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "createTempFile(2-args) - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-createTempFile(String, String, File)
+ harness.checkPoint("createTempFile(3-args)");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirallWritePerm});
+ sm.setComparisonStyle(TestSecurityManager.IMPLIES);
+ tf2 = File.createTempFile("pfx", "sfx", tmpdir);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "createTempFile(3-args) - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-setReadOnly-DIR
+ harness.checkPoint("dir.setReadOnly");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdir2WritePerm});
+ tmpdir2.setReadOnly();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.setReadOnly - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-delete-DIR
+ // Make sure we remove the read only temp dir
+ harness.checkPoint("dir.delete");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdir2DeletePerm});
+ tmpdir2.delete();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.delete - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-listRoots
+ harness.checkPoint("listRoots()");
+ try {
+ sm.prepareChecks(new Permission[]{rootReadPerm});
+ File[] roots = File.listRoots();
+ harness.check(roots.length >= 1, "File.listRoots()");
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "listRoots() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-renameTo
+ harness.checkPoint("file.renameTo");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileWritePerm,
+ tmpfile2WritePerm});
+ tmpfile.renameTo(tmpfile2);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.renameTo - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-setLastModified-DIR
+ harness.checkPoint("dir.setLastModified()");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirWritePerm});
+ tmpdir.setLastModified(0);
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.setLastModified() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-deleteOnExit-DIR
+ harness.checkPoint("dir.deleteOnExit()");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirDeletePerm},
+ new Permission[]{modifyThreadGroup, shutdownHooks});
+ tmpdir.deleteOnExit();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.deleteOnExit() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-deleteOnExit-FILE
+ harness.checkPoint("file.deleteOnExit()");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileDeletePerm},
+ new Permission[]{modifyThreadGroup, shutdownHooks});
+ tmpfile.deleteOnExit();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.deleteOnExit() - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-exists-DIR
+ harness.checkPoint("file.exists");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.exists();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.exists - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-exists-FILE
+ harness.checkPoint("file.exists");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.exists();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.exists - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-canRead-FILE
+ harness.checkPoint("file.canRead");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.canRead();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.canRead - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isFile-FILE
+ harness.checkPoint("file.isFile");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.isFile();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.isFile - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isFile-DIR
+ harness.checkPoint("dir.isFile");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.isFile();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.isFile - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isDirectory-FILE
+ harness.checkPoint("file.isDirectory");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.isDirectory();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.isDirectory - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isDirectory-DIR
+ harness.checkPoint("dir.isDirectory");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.isDirectory();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.isDirectory - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isHidden-FILE
+ harness.checkPoint("file.isHidden");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.isHidden();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.isHidden - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-isHidden-DIR
+ harness.checkPoint("dir.isHidden");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirReadPerm});
+ tmpdir.isHidden();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.isHidden - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-lastModified
+ harness.checkPoint("file.lastModified");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.lastModified();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.lastModified - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-length
+ harness.checkPoint("file.length");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileReadPerm});
+ tmpfile.length();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.length - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-canWrite-FILE
+ harness.checkPoint("file.canWrite");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileWritePerm});
+ tmpfile.canWrite();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.canWrite - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-mkdir
+ harness.checkPoint("dir.mkdir");
+ try {
+ sm.prepareChecks(new Permission[]{tmpdirWritePerm});
+ tmpdir.mkdir();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.mkdir - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-mkdirs
+ harness.checkPoint("dir.mkdirs");
+ try {
+ sm.prepareChecks(new Permission[]
+ {tmpdir2WritePerm, tmpdir2ReadPerm, tmpdir3ReadPerm, tmpdir3WritePerm});
+ tmpdir3.mkdirs();
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "dir.mkdirs - unexpected exception");
+ }
+
+ // throwpoint: java.io.File-setLastModified-FILE
+ harness.checkPoint("file.setLastModified");
+ try {
+ sm.prepareChecks(new Permission[]{tmpfileWritePerm});
+ tmpfile.setLastModified(new Date().getTime());
+ sm.checkAllChecked();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "file.setLastModified - unexpected exception");
+ }
+
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "outer handler - unexpected exception");
+ }
+ finally {
+ sm.uninstall();
+
+ if (tmpfile != null) tmpfile.delete();
+ if (tmpfile2 != null) tmpfile2.delete();
+ if (tf1 != null) tf1.delete();
+ if (tf2 != null) tf2.delete();
+ if (tmpdir3 != null) tmpdir3.delete();
+ if (tmpdir2 != null) tmpdir2.delete();
+ if (tmpdir != null) tmpdir.delete();
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileDescriptor/CVS/Entries b/gnu/testlet/java/io/FileDescriptor/CVS/Entries
new file mode 100644
index 00000000..2b484e71
--- /dev/null
+++ b/gnu/testlet/java/io/FileDescriptor/CVS/Entries
@@ -0,0 +1,2 @@
+/jdk11.java/1.3/Mon Feb 7 19:47:30 2005//
+D
diff --git a/gnu/testlet/java/io/FileDescriptor/CVS/Repository b/gnu/testlet/java/io/FileDescriptor/CVS/Repository
new file mode 100644
index 00000000..a6dbd640
--- /dev/null
+++ b/gnu/testlet/java/io/FileDescriptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileDescriptor
diff --git a/gnu/testlet/java/io/FileDescriptor/CVS/Root b/gnu/testlet/java/io/FileDescriptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileDescriptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileDescriptor/jdk11.java b/gnu/testlet/java/io/FileDescriptor/jdk11.java
new file mode 100644
index 00000000..f0315884
--- /dev/null
+++ b/gnu/testlet/java/io/FileDescriptor/jdk11.java
@@ -0,0 +1,62 @@
+/*************************************************************************
+/* jdk11.java -- java.io.FileDescriptor 1.1 tests
+/*
+/* Copyright (c) 2001, 2002 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.FileDescriptor;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.SyncFailedException;
+
+public class jdk11 implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ try {
+ FileOutputStream fos = new FileOutputStream("tmpfile");
+ try {
+ FileDescriptor fd = fos.getFD();
+ harness.check(fd.valid(), "valid()");
+ try {
+ fd.sync();
+ harness.check(true, "sync()");
+ }
+ catch (SyncFailedException e) {
+ harness.debug(e);
+ harness.fail("SyncFailedException thrown");
+ }
+ }
+ catch (IOException e) {
+ harness.fail("Can't get FileDescriptor");
+ }
+ }
+ catch (FileNotFoundException e) {
+ harness.fail("Can't make file 'tmpfile'");
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/io/FileInputStream/CVS/Entries b/gnu/testlet/java/io/FileInputStream/CVS/Entries
new file mode 100644
index 00000000..52f532e5
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/fileinputstream.java/1.2/Fri Mar 11 00:59:11 2005//
+/read.java/1.1/Mon Oct 28 20:05:59 2002//
+/security.java/1.8/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/io/FileInputStream/CVS/Repository b/gnu/testlet/java/io/FileInputStream/CVS/Repository
new file mode 100644
index 00000000..ab506c6c
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileInputStream
diff --git a/gnu/testlet/java/io/FileInputStream/CVS/Root b/gnu/testlet/java/io/FileInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileInputStream/fileinputstream.java b/gnu/testlet/java/io/FileInputStream/fileinputstream.java
new file mode 100644
index 00000000..0f881c55
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/fileinputstream.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Dalibor Topic (robilad@kaffe.org)
+
+// 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.java.io.FileInputStream;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class fileinputstream implements Testlet
+{
+ /**
+ * This test checks for a FileNotFoundException being thrown
+ * when the input parameter to the constructor is a directory
+ */
+ public void test (TestHarness harness)
+ {
+ String tmpfile = ".";
+
+ try
+ {
+ new FileInputStream(tmpfile);
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+
+ final File f = new File(tmpfile);
+
+ try
+ {
+ new FileInputStream(f);
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileInputStream/read.java b/gnu/testlet/java/io/FileInputStream/read.java
new file mode 100644
index 00000000..ab9a3ab0
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/read.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.FileInputStream;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class read implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-filein.tst";
+ File f = new File(tmpfile);
+ f.delete();
+ try
+ {
+ harness.check(f.createNewFile(), "Empty file created");
+ harness.check(new FileInputStream(tmpfile).read(new byte[0]), 0,
+ "empty byte[] read");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Empty file created or empty byte[] read");
+ harness.debug(t);
+ }
+ finally
+ {
+ // Cleanup
+ f.delete();
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileInputStream/security.java b/gnu/testlet/java/io/FileInputStream/security.java
new file mode 100644
index 00000000..4980a7e3
--- /dev/null
+++ b/gnu/testlet/java/io/FileInputStream/security.java
@@ -0,0 +1,95 @@
+// Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.FileInputStream;
+
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FilePermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ File file = new File(harness.getSourceDirectory(), "ChangeLog");
+ String path = file.getPath();
+
+ Permission[] perm = new Permission[] {
+ new FilePermission(path, "read")};
+ Permission[] fdPerm = new Permission[] {
+ new RuntimePermission("readFileDescriptor")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.io.FileInputStream-FileInputStream(File)
+ harness.checkPoint("File constructor");
+ try {
+ sm.prepareChecks(perm);
+ new FileInputStream(file);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+
+ // throwpoint: java.io.FileInputStream-FileInputStream(String)
+ harness.checkPoint("String constructor");
+ try {
+ sm.prepareChecks(perm);
+ new FileInputStream(path);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+
+ // throwpoint: java.io.FileInputStream-FileInputStream(FileDescriptor)
+ harness.checkPoint("FileDescriptor constructor");
+ try {
+ sm.prepareChecks(fdPerm);
+ new FileInputStream(FileDescriptor.in);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileNotFoundException/CVS/Entries b/gnu/testlet/java/io/FileNotFoundException/CVS/Entries
new file mode 100644
index 00000000..d412636c
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Fri Sep 21 11:20:52 2012//
+/constructor.java/1.1/Fri Sep 21 11:20:52 2012//
+D
diff --git a/gnu/testlet/java/io/FileNotFoundException/CVS/Entries.Log b/gnu/testlet/java/io/FileNotFoundException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/FileNotFoundException/CVS/Repository b/gnu/testlet/java/io/FileNotFoundException/CVS/Repository
new file mode 100644
index 00000000..88fe6663
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileNotFoundException
diff --git a/gnu/testlet/java/io/FileNotFoundException/CVS/Root b/gnu/testlet/java/io/FileNotFoundException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileNotFoundException/TryCatch.java b/gnu/testlet/java/io/FileNotFoundException/TryCatch.java
new file mode 100644
index 00000000..37e910a6
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.FileNotFoundException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.FileNotFoundException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new FileNotFoundException("FileNotFoundException");
+ }
+ catch (FileNotFoundException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Entries b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Entries
new file mode 100644
index 00000000..554cb501
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Fri Sep 21 11:20:52 2012//
+/getInterfaces.java/1.1/Fri Sep 21 11:20:52 2012//
+/getModifiers.java/1.1/Fri Sep 21 11:20:52 2012//
+/getName.java/1.1/Fri Sep 21 11:20:52 2012//
+/getPackage.java/1.1/Fri Sep 21 11:20:52 2012//
+/getSimpleName.java/1.1/Fri Sep 21 11:20:52 2012//
+/getSuperclass.java/1.1/Fri Sep 21 11:20:52 2012//
+/isAssignableFrom.java/1.1/Fri Sep 21 11:20:52 2012//
+/isInstance.java/1.1/Fri Sep 21 11:20:52 2012//
+/isInterface.java/1.1/Fri Sep 21 11:20:52 2012//
+/isLocalClass.java/1.1/Fri Sep 21 11:20:52 2012//
+/isMemberClass.java/1.1/Fri Sep 21 11:20:52 2012//
+/isPrimitive.java/1.1/Fri Sep 21 11:20:52 2012//
+/isSynthetic.java/1.1/Fri Sep 21 11:20:52 2012//
+D
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Repository b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Repository
new file mode 100644
index 00000000..48e87860
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileNotFoundException/classInfo
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Root b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/InstanceOf.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..d0c39490
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.FileNotFoundException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.FileNotFoundException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class FileNotFoundException
+ FileNotFoundException o = new FileNotFoundException("filename");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof FileNotFoundException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getInterfaces.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ca05db6c
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.FileNotFoundException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getModifiers.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getModifiers.java
new file mode 100644
index 00000000..4d7b81aa
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.FileNotFoundException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getName.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getName.java
new file mode 100644
index 00000000..d433a910
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.FileNotFoundException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getPackage.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getPackage.java
new file mode 100644
index 00000000..6632e9ca
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.FileNotFoundException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getSimpleName.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..71c433b7
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "FileNotFoundException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/getSuperclass.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..fd353211
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.FileNotFoundException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..b018b066
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(FileNotFoundException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isInstance.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isInstance.java
new file mode 100644
index 00000000..0a624f52
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new FileNotFoundException("filename")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isInterface.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isInterface.java
new file mode 100644
index 00000000..06e6c47c
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isLocalClass.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..7e8f9e5c
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isMemberClass.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..dbe40fb3
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isPrimitive.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..36d13bcc
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/classInfo/isSynthetic.java b/gnu/testlet/java/io/FileNotFoundException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..ad1999ac
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.FileNotFoundException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test for method java.io.FileNotFoundException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FileNotFoundException("filename");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileNotFoundException/constructor.java b/gnu/testlet/java/io/FileNotFoundException/constructor.java
new file mode 100644
index 00000000..988c8634
--- /dev/null
+++ b/gnu/testlet/java/io/FileNotFoundException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.FileNotFoundException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.FileNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+
+
+
+/**
+ * Test if instances of a class java.io.FileNotFoundException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FileNotFoundException object1 = new FileNotFoundException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.FileNotFoundException");
+
+ FileNotFoundException object2 = new FileNotFoundException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.FileNotFoundException: nothing happens");
+
+ FileNotFoundException object3 = new FileNotFoundException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.FileNotFoundException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileOutputStream/CVS/Entries b/gnu/testlet/java/io/FileOutputStream/CVS/Entries
new file mode 100644
index 00000000..88523789
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/CVS/Entries
@@ -0,0 +1,6 @@
+/append.java/1.1/Wed May 30 09:48:13 2007//
+/fileoutputstream.java/1.1/Thu Mar 10 00:38:08 2005//
+/jdk12.java/1.2/Thu Jun 3 14:31:06 2004//
+/security.java/1.8/Tue Feb 6 16:46:19 2007//
+/write.java/1.1/Mon Oct 28 20:05:59 2002//
+D
diff --git a/gnu/testlet/java/io/FileOutputStream/CVS/Repository b/gnu/testlet/java/io/FileOutputStream/CVS/Repository
new file mode 100644
index 00000000..3a36a3bc
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileOutputStream
diff --git a/gnu/testlet/java/io/FileOutputStream/CVS/Root b/gnu/testlet/java/io/FileOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileOutputStream/append.java b/gnu/testlet/java/io/FileOutputStream/append.java
new file mode 100644
index 00000000..8fe12d9c
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/append.java
@@ -0,0 +1,114 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.FileOutputStream;
+
+import java.io.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Based on a testcase submitted by Steve Blackburn
+ * (Steve.Blackburn@anu.edu.au) for the following bug report:
+ * [ 1722506 ] dacapo eclipse fails EOF exceptions
+ * http://sourceforge.net/tracker/index.php?func=detail&aid=1722506&group_id=128805&atid=712768
+ */
+public class append
+ implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Make sure test file is created fresh
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-fos-append.tst";
+ File f = new File(tmpfile);
+ f.delete();
+
+ try
+ {
+ // Don't append (large)
+ FileOutputStream fos = new FileOutputStream(f, false);
+ BufferedOutputStream bos = new BufferedOutputStream(fos, 2048);
+ DataOutputStream dos = new DataOutputStream(bos);
+ for (int i = 0; i < 50; i++)
+ dos.writeInt(i);
+ dos.close();
+ long len1 = f.length();
+ RandomAccessFile raf = new RandomAccessFile(f, "rw");
+ harness.check(raf.length(), len1);
+ raf.close();
+ dos.close();
+
+ // Don't append (small) (truncates)
+ fos = new FileOutputStream(f, false);
+ bos = new BufferedOutputStream(fos, 2048);
+ dos = new DataOutputStream(bos);
+ for (int i = 0; i < 25; i++)
+ dos.writeInt(i);
+ dos.close();
+ long len2 = f.length();
+ raf = new RandomAccessFile(f, "rw");
+ harness.check(raf.length(), len2);
+ raf.close();
+ dos.close();
+
+ // Append large (extends)
+ fos = new FileOutputStream(f, true);
+ bos = new BufferedOutputStream(fos, 2048);
+ dos = new DataOutputStream(bos);
+ for (int i = 0; i < 50; i++)
+ dos.writeInt(i);
+ dos.close();
+ long len3 = f.length();
+ harness.check(len1 + len2, len3);
+ raf = new RandomAccessFile(f, "rw");
+ harness.check(raf.length(), len3);
+ raf.close();
+
+ // Don't append (small) again (truncates)
+ fos = new FileOutputStream(f, false);
+ bos = new BufferedOutputStream(fos, 2048);
+ dos = new DataOutputStream(bos);
+ for (int i = 0; i < 25; i++)
+ dos.writeInt(i);
+ dos.close();
+ long len4 = f.length();
+ harness.check(len2, len4);
+ raf = new RandomAccessFile(f, "rw");
+ harness.check(raf.length(), len4);
+ raf.close();
+ dos.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("Unexpected: " +ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ f.delete();
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/FileOutputStream/fileoutputstream.java b/gnu/testlet/java/io/FileOutputStream/fileoutputstream.java
new file mode 100644
index 00000000..dcf1ccb7
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/fileoutputstream.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Dalibor Topic (robilad@kaffe.org)
+
+// 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.java.io.FileOutputStream;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class fileoutputstream implements Testlet
+{
+ /**
+ * This test checks for a FileNotFoundException being thrown
+ * when the input paramter to the constructor is a directory
+ */
+ public void test (TestHarness harness)
+ {
+ String tmpfile = ".";
+
+ try
+ {
+ new FileOutputStream(tmpfile);
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+
+ final File f = new File(tmpfile);
+
+ try
+ {
+ new FileOutputStream(f);
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileOutputStream/jdk12.java b/gnu/testlet/java/io/FileOutputStream/jdk12.java
new file mode 100644
index 00000000..bb0d8605
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/jdk12.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Daryl O. Lee (dolee@sources.redhat.com)
+// Tests only changes in exceptions thrown by constructors.
+
+// 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.java.io.FileOutputStream;
+
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class jdk12 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // pick a directory we know doesn't exist
+ String tmpfile = "./asdfghj/mauve-fileout.tst";
+ try
+ {
+ new FileOutputStream(tmpfile);
+ harness.fail("No exception thrown");
+ }
+ catch(FileNotFoundException t)
+ {
+ harness.check(true, "new(string) Threw correct exception");
+ }
+ try
+ {
+ new FileOutputStream(tmpfile, true);
+ harness.fail("No exception thrown");
+ }
+ catch(FileNotFoundException t)
+ {
+ harness.check(true, "new(string, boolean) Threw correct exception");
+ }
+
+
+ }
+}
diff --git a/gnu/testlet/java/io/FileOutputStream/security.java b/gnu/testlet/java/io/FileOutputStream/security.java
new file mode 100644
index 00000000..a2eabe38
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/security.java
@@ -0,0 +1,128 @@
+// Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.FileOutputStream;
+
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.FilePermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ File dir = new File(harness.getTempDirectory(), "mauve-testdir");
+ harness.check(dir.mkdir() || dir.exists(), "temp directory");
+
+ File file = new File(dir, "file");
+ String path = file.getPath();
+
+ Permission rperm = new FilePermission(path, "read");
+ Permission wperm = new FilePermission(path, "write");
+ Permission fdPerm = new RuntimePermission("writeFileDescriptor");
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.io.FileOutputStream-FileOutputStream(File)
+ harness.checkPoint("File constructor");
+ try {
+ sm.prepareChecks(new Permission[] {wperm}, new Permission[] {rperm});
+ new FileOutputStream(file);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+
+ // throwpoint: java.io.FileOutputStream-FileOutputStream(File, boolean)
+ harness.checkPoint("File, boolean constructor");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(new Permission[] {wperm}, new Permission[] {rperm});
+ new FileOutputStream(file, i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+ }
+
+ // throwpoint: java.io.FileOutputStream-FileOutputStream(String)
+ harness.checkPoint("String constructor");
+ try {
+ sm.prepareChecks(new Permission[] {wperm}, new Permission[] {rperm});
+ new FileOutputStream(path);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+
+ // throwpoint: java.io.FileOutputStream-FileOutputStream(String, boolean)
+ harness.checkPoint("String, boolean constructor");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(new Permission[] {wperm}, new Permission[] {rperm});
+ new FileOutputStream(path, i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+ }
+
+ // throwpoint: java.io.FileOutputStream-FileOutputStream(FileDescriptor)
+ harness.checkPoint("FileDescriptor constructor");
+ try {
+ sm.prepareChecks(new Permission[] {fdPerm});
+ new FileOutputStream(FileDescriptor.out);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected check");
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ finally {
+ sm.uninstall();
+
+ file.delete();
+ dir.delete();
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileOutputStream/write.java b/gnu/testlet/java/io/FileOutputStream/write.java
new file mode 100644
index 00000000..d8c4b6ba
--- /dev/null
+++ b/gnu/testlet/java/io/FileOutputStream/write.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.FileOutputStream;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class write implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-fileout.tst";
+ try
+ {
+ new FileOutputStream(tmpfile).write(new byte[0]);
+ harness.check(new File(tmpfile).exists(), "empty byte[] write");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("empty byte[] write");
+ harness.debug(t);
+ }
+ finally
+ {
+ // Cleanup
+ File f = new File(tmpfile);
+ f.delete();
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FilePermission/CVS/Entries b/gnu/testlet/java/io/FilePermission/CVS/Entries
new file mode 100644
index 00000000..f6aa754d
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/CVS/Entries
@@ -0,0 +1,4 @@
+/simple.java/1.5/Tue Jun 19 15:41:36 2007//
+/traversal.java/1.2/Tue Feb 6 16:46:19 2007//
+/traversal2.java/1.2/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/io/FilePermission/CVS/Repository b/gnu/testlet/java/io/FilePermission/CVS/Repository
new file mode 100644
index 00000000..d066c748
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FilePermission
diff --git a/gnu/testlet/java/io/FilePermission/CVS/Root b/gnu/testlet/java/io/FilePermission/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FilePermission/simple.java b/gnu/testlet/java/io/FilePermission/simple.java
new file mode 100644
index 00000000..1a0791f6
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/simple.java
@@ -0,0 +1,175 @@
+// Copyright (C) 2003, Red Hat, Inc.
+// Copyright (C) 2004, Mark Wielaard <mark@klomp.org>
+//
+// 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: JDK1.2
+
+package gnu.testlet.java.io.FilePermission;
+
+import gnu.testlet.*;
+import java.io.FilePermission;
+import java.security.Permissions;
+
+public class simple implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Test for a classpath regression.
+ Permissions p = new Permissions();
+ // (The following used to use the bogus action "nothing" ... but
+ // the JDK 1.4.2 javadoc makes it clear that only actions "read",
+ // "write", "execute" and "delete" are recognized. And the JDK
+ // 1.4.2 implementation throws IllegalArgumentException for an
+ // unrecognized action.)
+ p.add(new FilePermission("/tmp/p", "read"));
+ p.add(new FilePermission("/tmp/p", "read"));
+
+ // Classpath didn't handle dirs without a file separator correctly
+ FilePermission fp1 = new FilePermission("/tmp", "read");
+ harness.check(fp1.implies(fp1));
+
+ // Test the constructor's checking of its arguments.
+ harness.checkPoint("constructor file arg checking");
+ try {
+ harness.check(new FilePermission(null, "read") == null);
+ }
+ catch (java.lang.NullPointerException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("constructor action checking (simple)");
+ harness.check(new FilePermission("/tmp/p", "read") != null);
+ harness.check(new FilePermission("/tmp/p", "write") != null);
+ harness.check(new FilePermission("/tmp/p", "execute") != null);
+ harness.check(new FilePermission("/tmp/p", "delete") != null);
+
+ harness.checkPoint("constructor action checking (lists)");
+ harness.check(new FilePermission("/tmp/p", "read,delete") != null);
+ harness.check(new FilePermission("/tmp/p", "read,read") != null);
+ harness.check(new FilePermission("/tmp/p", "read,read,read") != null);
+
+ harness.checkPoint("constructor action checking (case)");
+ harness.check(new FilePermission("/tmp/p", "Read,DELETE") != null);
+ harness.check(new FilePermission("/tmp/p", "rEAD") != null);
+
+ harness.checkPoint("constructor action checking(underspecified)");
+ harness.check(new FilePermission("/tmp/p", " read ") != null);
+ harness.check(new FilePermission("/tmp/p", "read, read") != null);
+ harness.check(new FilePermission("/tmp/p", "read ,read") != null);
+
+ harness.checkPoint("constructor action checking(bad actions)");
+ try {
+ harness.check(new FilePermission("/tmp/p", null) == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", " ") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "foo") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "nothing") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("constructor action checking(bad action lists)");
+ try {
+ harness.check(new FilePermission("/tmp/p", ",") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "read,") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "read,,read") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("constructor action checking(wierd stuff)");
+ try {
+ harness.check(new FilePermission("/tmp/p", "read read") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "read\nread") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+ try {
+ harness.check(new FilePermission("/tmp/p", "read;read") == null);
+ }
+ catch (java.lang.IllegalArgumentException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("implies() action checking");
+ for (int i = 1; i < 1 << actions.length; i++) {
+ for (int j = 1; j < 1 << actions.length; j++) {
+ FilePermission pi = new FilePermission("/tmp/p", makeActions(i));
+ FilePermission pj = new FilePermission("/tmp/p", makeActions(j));
+
+ harness.check(pi.implies(pj) == ((i & j) == j));
+ }
+ }
+ }
+
+ // stuff for implies action checking
+ private static String[] actions = {"read", "write", "execute", "delete"};
+ private static String makeActions(int mask)
+ {
+ String result = "";
+ for (int i = 0; i < actions.length; i++)
+ {
+ if ((mask & (1 << i)) != 0)
+ {
+ if (result.length() > 0)
+ result += ",";
+ result += actions[i];
+ }
+ }
+ return result;
+ }
+}
diff --git a/gnu/testlet/java/io/FilePermission/traversal.java b/gnu/testlet/java/io/FilePermission/traversal.java
new file mode 100644
index 00000000..5b3734b9
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/traversal.java
@@ -0,0 +1,137 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.FilePermission;
+
+import java.io.File;
+import java.io.FilePermission;
+import java.util.LinkedList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class traversal implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ String[] items_to_access = new String[] {
+ "file", // a file in the directory
+ "rlink", // a relative link to a file outside the directory
+ "alink"}; // an absolute link to a file outside the directory
+
+ String[] ways_to_access = new String[] {
+ "dir", // via the directory
+ "rlink", // via a relative link to the directory
+ "alink"}; // via an absolute link to the directory
+
+ String[] item_states = new String[] {
+ "present", // the file exists
+ "absent"}; // the file does not exist
+
+ LinkedList cleanup = new LinkedList();
+ try {
+ File tempdir = new File(harness.getTempDirectory(), "mauve-testdir");
+ harness.check(tempdir.isDirectory() || tempdir.mkdir());
+ cleanup.add(tempdir);
+
+ File testdir = new File(tempdir, "dir");
+ harness.check(testdir.isDirectory() || testdir.mkdir());
+ cleanup.add(testdir);
+
+ File link = new File(tempdir, "rlink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", testdir.getName(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ link = new File(tempdir, "alink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", testdir.getPath(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ File[] dirs = new File[] {testdir, tempdir};
+ for (int i = 0; i < dirs.length; i++) {
+ File file = new File(dirs[i], "file-present");
+ harness.check(file.isFile() || file.createNewFile());
+ cleanup.add(file);
+
+ file = new File(dirs[i], "file-absent");
+ harness.check(!file.exists());
+ }
+
+ for (int i = 0; i < item_states.length; i++) {
+ File file = new File(tempdir, "file-" + item_states[i]);
+
+ link = new File(testdir, "rlink-" + item_states[i]);
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", new File("..",file.getName()).getPath(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ link = new File(testdir, "alink-" + item_states[i]);
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", file.getPath(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+ }
+
+ harness.checkPoint("test");
+ for (int i = 0; i < items_to_access.length; i++) {
+ String item_to_access = items_to_access[i];
+ for (int j = 0; j < ways_to_access.length; j++) {
+ String how_to_access = ways_to_access[j];
+ for (int k = 0; k < ways_to_access.length; k++) {
+ String how_permitted = ways_to_access[k];
+ for (int l = 0; l < item_states.length; l++) {
+ String item_state = item_states[l];
+ String item = item_to_access + "-" + item_state;
+
+ FilePermission a = new FilePermission(new File(
+ new File(tempdir, how_permitted), item).getPath(), "read");
+
+ FilePermission b = new FilePermission(new File(
+ new File(tempdir, how_to_access), item).getPath(), "read");
+
+ harness.debug("\na = " + a);
+ harness.debug("b = " + b);
+
+ harness.check(a.implies(b));
+ }
+ }
+ }
+ }
+ }
+ finally {
+ for (int i = cleanup.size() - 1; i >= 0; i--)
+ ((File) cleanup.get(i)).delete();
+ }
+ }
+ catch (Throwable ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FilePermission/traversal2.java b/gnu/testlet/java/io/FilePermission/traversal2.java
new file mode 100644
index 00000000..b2679bb6
--- /dev/null
+++ b/gnu/testlet/java/io/FilePermission/traversal2.java
@@ -0,0 +1,127 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.FilePermission;
+
+import java.io.File;
+import java.io.FilePermission;
+import java.util.LinkedList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class traversal2 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ String[] ways_to_access = new String[] {
+ "dir", // via the directory
+ "rlink", // via a relative link to the directory
+ "alink"}; // via an absolute link to the directory
+
+ String[] ways_to_escape = new String[] {
+ "..", // via the directory
+ "rlink", // via a relative link out of the directory
+ "alink"}; // via an absolute link out of the directory
+
+ String[] item_states = new String[] {
+ "present", // the file exists
+ "absent"}; // the file does not exist
+
+ LinkedList cleanup = new LinkedList();
+ try {
+ File tempdir = new File(harness.getTempDirectory(), "mauve-testdir");
+ harness.check(tempdir.isDirectory() || tempdir.mkdir());
+ cleanup.add(tempdir);
+
+ File testdir = new File(tempdir, "dir");
+ harness.check(testdir.isDirectory() || testdir.mkdir());
+ cleanup.add(testdir);
+
+ File link = new File(tempdir, "rlink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", testdir.getName(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ link = new File(tempdir, "alink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", testdir.getPath(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ File file = new File(tempdir, "file-present");
+ harness.check(file.isFile() || file.createNewFile());
+ cleanup.add(file);
+
+ file = new File(tempdir, "file-absent");
+ harness.check(!file.exists());
+
+ link = new File(testdir, "rlink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", "..", link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ link = new File(testdir, "alink");
+ harness.check(Runtime.getRuntime().exec(new String[] {
+ "ln", "-s", tempdir.getPath(), link.getPath()
+ }).waitFor() == 0);
+ cleanup.add(link);
+
+ harness.checkPoint("test");
+ for (int i = 0; i < ways_to_access.length; i++) {
+ String how_to_access = ways_to_access[i];
+
+ FilePermission a = new FilePermission(new File(
+ new File(tempdir, how_to_access), "-").getPath(), "read");
+
+ for (int j = 0; j < ways_to_escape.length; j++) {
+ String how_to_escape = ways_to_escape[j];
+ for (int k = 0; k < item_states.length; k++) {
+ String item = "file-" + item_states[k];
+
+ FilePermission b = new FilePermission(new File(
+ new File(testdir, how_to_escape), item).getPath(), "read");
+
+ harness.debug("\na = " + a);
+ harness.debug("b = " + b);
+
+ harness.check(!a.implies(b));
+ }
+ }
+ }
+ }
+ finally {
+ for (int i = cleanup.size() - 1; i >= 0; i--)
+ ((File) cleanup.get(i)).delete();
+ }
+ }
+ catch (Throwable ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FileReader/CVS/Entries b/gnu/testlet/java/io/FileReader/CVS/Entries
new file mode 100644
index 00000000..c5642bdc
--- /dev/null
+++ b/gnu/testlet/java/io/FileReader/CVS/Entries
@@ -0,0 +1,2 @@
+/jdk11.java/1.4/Mon Feb 7 19:47:31 2005//
+D
diff --git a/gnu/testlet/java/io/FileReader/CVS/Repository b/gnu/testlet/java/io/FileReader/CVS/Repository
new file mode 100644
index 00000000..70d1d4c7
--- /dev/null
+++ b/gnu/testlet/java/io/FileReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileReader
diff --git a/gnu/testlet/java/io/FileReader/CVS/Root b/gnu/testlet/java/io/FileReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileReader/jdk11.java b/gnu/testlet/java/io/FileReader/jdk11.java
new file mode 100644
index 00000000..13850930
--- /dev/null
+++ b/gnu/testlet/java/io/FileReader/jdk11.java
@@ -0,0 +1,82 @@
+/*************************************************************************
+/* jdk11.java -- java.io.FileReader 1.1 tests
+/*
+/* Copyright (c) 2001, 2002 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.FileReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+public class jdk11 implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-jdk11.tst";
+ File f = new File(tmpfile);
+
+ // Make sure the file exists.
+ try
+ {
+ f.createNewFile();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+
+ try {
+ FileReader fr1 = new FileReader(tmpfile);
+ harness.check(true, "FileReader(string)");
+ }
+ catch (FileNotFoundException e) {
+ harness.fail("Can't open file " + tmpfile);
+ }
+
+ try {
+ File f2 = new File(tmpfile);
+ FileReader fr2 = new FileReader(f2);
+ harness.check(true, "FileReader(File)");
+ FileInputStream fis = new FileInputStream(f2);
+ try {
+ FileReader fr3 = new FileReader(fis.getFD());
+ harness.check(true, "FileReader(FileDescriptor)");
+ }
+ catch (IOException e) {
+ harness.fail("Couldn't get FileDescriptor)");
+ }
+ }
+ catch (FileNotFoundException e) {
+ harness.fail("Can't open file " + tmpfile);
+ }
+
+ // Cleanup
+ f.delete();
+ }
+}
+
+
diff --git a/gnu/testlet/java/io/FileWriter/CVS/Entries b/gnu/testlet/java/io/FileWriter/CVS/Entries
new file mode 100644
index 00000000..e1cdecac
--- /dev/null
+++ b/gnu/testlet/java/io/FileWriter/CVS/Entries
@@ -0,0 +1,2 @@
+/jdk11.java/1.3/Mon Feb 7 19:47:31 2005//
+D
diff --git a/gnu/testlet/java/io/FileWriter/CVS/Repository b/gnu/testlet/java/io/FileWriter/CVS/Repository
new file mode 100644
index 00000000..06744aa9
--- /dev/null
+++ b/gnu/testlet/java/io/FileWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FileWriter
diff --git a/gnu/testlet/java/io/FileWriter/CVS/Root b/gnu/testlet/java/io/FileWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FileWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FileWriter/jdk11.java b/gnu/testlet/java/io/FileWriter/jdk11.java
new file mode 100644
index 00000000..dedc528a
--- /dev/null
+++ b/gnu/testlet/java/io/FileWriter/jdk11.java
@@ -0,0 +1,53 @@
+/*************************************************************************
+/* jdk11.java -- java.io.FileWriter 1.1 tests
+/*
+/* Copyright (c) 2001, 2002 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.FileWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.FileWriter;
+import java.io.FileOutputStream;
+import java.io.File;
+import java.io.IOException;
+
+public class jdk11 implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ try {
+ FileWriter fr1 = new FileWriter("tmpfile");
+ harness.check(true, "FileWriter(string)");
+ FileWriter fr1a = new FileWriter("tmpfile", true);
+ harness.check(true, "FileWriter(string, boolean)");
+ File f2 = new File("tmpfile");
+ FileWriter fr2 = new FileWriter(f2);
+ harness.check(true, "FileWriter(File)");
+ FileOutputStream fis = new FileOutputStream(f2);
+ FileWriter fr3 = new FileWriter(fis.getFD());
+ harness.check(true, "FileWriter(FileDescriptor)");
+ }
+ catch (IOException e) {
+ harness.fail("Can't open file 'choices'");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FilterInputStream/CVS/Entries b/gnu/testlet/java/io/FilterInputStream/CVS/Entries
new file mode 100644
index 00000000..2f12000a
--- /dev/null
+++ b/gnu/testlet/java/io/FilterInputStream/CVS/Entries
@@ -0,0 +1,3 @@
+/MarkReset.java/1.2/Fri Jan 3 01:22:16 2003//
+/SimpleRead.java/1.2/Fri Jan 3 02:14:41 2003//
+D
diff --git a/gnu/testlet/java/io/FilterInputStream/CVS/Repository b/gnu/testlet/java/io/FilterInputStream/CVS/Repository
new file mode 100644
index 00000000..916a2687
--- /dev/null
+++ b/gnu/testlet/java/io/FilterInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FilterInputStream
diff --git a/gnu/testlet/java/io/FilterInputStream/CVS/Root b/gnu/testlet/java/io/FilterInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FilterInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FilterInputStream/MarkReset.java b/gnu/testlet/java/io/FilterInputStream/MarkReset.java
new file mode 100644
index 00000000..39443788
--- /dev/null
+++ b/gnu/testlet/java/io/FilterInputStream/MarkReset.java
@@ -0,0 +1,85 @@
+/*************************************************************************
+/* MarkReset.java -- FilterInputStream mark/reset test
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written for ByteArrayInputStream by Aaron M. Renn (arenn@urbanophile.com)
+/* Adapted to FilterInputStream by Daryl O. Lee (dolee@sources.redhat.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.FilterInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ByteArrayInputStream;
+import java.io.FilterInputStream;
+import java.io.IOException;
+
+public class MarkReset extends FilterInputStream implements Testlet
+{
+
+public MarkReset()
+{
+ this(null);
+}
+
+public MarkReset(ByteArrayInputStream is)
+{
+ super(is);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "My sophomore year of college I moved out of the dorms. I\n" +
+ "moved in with three friends into a brand new townhouse in east\n" +
+ "Bloomington at 771 Woodbridge Drive. To this day that was the\n" +
+ "nicest place I've ever lived.\n";
+
+ byte[] str_bytes = str.getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(str_bytes);
+ MarkReset fis = new MarkReset(bais);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ fis.read(read_buf);
+
+ harness.check(fis.available(), (str_bytes.length - read_buf.length),
+ "available() 1");
+ harness.check(fis.skip(5), 5, "skip()");
+ // System.out.println("skip() didn't work");
+ harness.check(fis.available(), (str_bytes.length -
+ (read_buf.length + 5)), "available() 2");
+ harness.check(fis.markSupported(), "markSupported()");
+
+ fis.mark(0);
+ int availsave = fis.available();
+ fis.read();
+ fis.reset();
+ harness.check(fis.available(), availsave, "mark(),reset()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // MarkReset
+
diff --git a/gnu/testlet/java/io/FilterInputStream/SimpleRead.java b/gnu/testlet/java/io/FilterInputStream/SimpleRead.java
new file mode 100644
index 00000000..8f07492a
--- /dev/null
+++ b/gnu/testlet/java/io/FilterInputStream/SimpleRead.java
@@ -0,0 +1,79 @@
+/*************************************************************************
+/* SimpleRead.java -- ByteArrayInputStream simple read test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.FilterInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ByteArrayInputStream;
+import java.io.FilterInputStream;
+import java.io.IOException;
+
+public class SimpleRead extends FilterInputStream implements Testlet
+{
+
+public SimpleRead()
+{
+ this(null);
+}
+
+public SimpleRead(ByteArrayInputStream is)
+{
+ super(is);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "My sophomore year of college I moved out of the dorms. I\n" +
+ "moved in with three friends into a brand new townhouse in east\n" +
+ "Bloomington at 771 Woodbridge Drive. To this day that was the\n" +
+ "nicest place I've ever lived.\n";
+
+ byte[] str_bytes = str.getBytes();
+ ByteArrayInputStream bais = new ByteArrayInputStream(str_bytes);
+ SimpleRead fis = new SimpleRead(bais);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ int bytes_read, total_read = 0;
+ harness.check(fis.read(), 'M', "read()");
+ while ((bytes_read = fis.read(read_buf, 0, read_buf.length)) != -1)
+ {
+ harness.debug(new String(read_buf, 0, bytes_read), false);
+ total_read += bytes_read;
+ }
+
+ fis.close();
+ harness.check(total_read, str.length()-1, "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // SimpleRead
+
diff --git a/gnu/testlet/java/io/FilterOutputStream/CVS/Entries b/gnu/testlet/java/io/FilterOutputStream/CVS/Entries
new file mode 100644
index 00000000..6325c7ab
--- /dev/null
+++ b/gnu/testlet/java/io/FilterOutputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/write.java/1.1/Mon Dec 23 16:04:15 2002//
+D
diff --git a/gnu/testlet/java/io/FilterOutputStream/CVS/Repository b/gnu/testlet/java/io/FilterOutputStream/CVS/Repository
new file mode 100644
index 00000000..dab9f45a
--- /dev/null
+++ b/gnu/testlet/java/io/FilterOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FilterOutputStream
diff --git a/gnu/testlet/java/io/FilterOutputStream/CVS/Root b/gnu/testlet/java/io/FilterOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FilterOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FilterOutputStream/write.java b/gnu/testlet/java/io/FilterOutputStream/write.java
new file mode 100644
index 00000000..9a90b2b4
--- /dev/null
+++ b/gnu/testlet/java/io/FilterOutputStream/write.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Daryl Lee (dolee@sources.redhat.com)
+// Modified from FileOutputStream/write.java,
+// written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.FilterOutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class write implements Testlet
+{
+ class TestOutputStream extends FilterOutputStream
+ {
+ TestOutputStream (ByteArrayOutputStream baos)
+ {
+ super(baos);
+ }
+ }
+ public void test (TestHarness harness)
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ FilterOutputStream fos = new FilterOutputStream(baos);;
+ byte[] ba = {(byte)'B', (byte)'C', (byte)'D'};
+ try {
+ String tststr = "ABCD";
+ fos.write('A');
+ harness.check(true, "write(int)");
+ fos.write(ba);
+ harness.check(true, "write(buf)");
+ fos.write(ba,0,3);
+ harness.check(true, "write(buf,off,len)");
+ byte[] finalba = baos.toByteArray();
+ String finalstr2 = new String(finalba);
+ harness.check(finalstr2.equals("ABCDBCD"), "wrote all characters okay");
+ baos.flush();
+ harness.check(true, "flush()");
+ baos.close();
+ harness.check(true, "close()");
+ }
+ catch (IOException e) {
+ harness.fail("IOException unexpected");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/FilterReader/CVS/Entries b/gnu/testlet/java/io/FilterReader/CVS/Entries
new file mode 100644
index 00000000..8c198a64
--- /dev/null
+++ b/gnu/testlet/java/io/FilterReader/CVS/Entries
@@ -0,0 +1,3 @@
+/MarkReset.java/1.1/Thu Dec 26 16:09:59 2002//
+/SimpleRead.java/1.2/Fri Jan 3 02:14:41 2003//
+D
diff --git a/gnu/testlet/java/io/FilterReader/CVS/Repository b/gnu/testlet/java/io/FilterReader/CVS/Repository
new file mode 100644
index 00000000..6a5c99c8
--- /dev/null
+++ b/gnu/testlet/java/io/FilterReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FilterReader
diff --git a/gnu/testlet/java/io/FilterReader/CVS/Root b/gnu/testlet/java/io/FilterReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FilterReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FilterReader/MarkReset.java b/gnu/testlet/java/io/FilterReader/MarkReset.java
new file mode 100644
index 00000000..7e19d0c9
--- /dev/null
+++ b/gnu/testlet/java/io/FilterReader/MarkReset.java
@@ -0,0 +1,84 @@
+/*************************************************************************
+/* MarkReset.java -- Test CharArrayReader mark/reset functionality
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Daryl O. Lee (dolee@sources.redhat.com)
+/* Adapted from CharArrayReader tests by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.FilterReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.FilterReader;
+import java.io.CharArrayReader;
+import java.io.IOException;
+
+public class MarkReset extends FilterReader implements Testlet
+{
+
+public
+MarkReset(char[] ca)
+{
+ super(new CharArrayReader(ca));
+}
+
+// Constructor for test suite
+public
+MarkReset()
+{
+ super(new CharArrayReader(new char[1]));
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+
+ MarkReset fr = new MarkReset(str_chars);
+ char[] read_buf = new char[12];
+
+ try
+ {
+ fr.read(read_buf);
+ harness.check(fr.ready(), "ready()");
+ harness.check(fr.skip(5), 5, "skip()");
+ harness.check(fr.markSupported(), "markSupported()");
+
+ fr.mark(0);
+ fr.read();
+ fr.reset();
+ fr.close();
+ harness.check(true, "close()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // MarkReset
+
diff --git a/gnu/testlet/java/io/FilterReader/SimpleRead.java b/gnu/testlet/java/io/FilterReader/SimpleRead.java
new file mode 100644
index 00000000..f6e41e37
--- /dev/null
+++ b/gnu/testlet/java/io/FilterReader/SimpleRead.java
@@ -0,0 +1,82 @@
+/*************************************************************************
+/* SimpleRead.java -- FilterReader simple read test.
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Daryl O. Lee (dolee@sources.redhat.com)
+/* Adapted from CharArrayReader tests by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.FilterReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.CharArrayReader;
+import java.io.Reader;
+import java.io.FilterReader;
+import java.io.IOException;
+
+public class SimpleRead extends FilterReader implements Testlet
+{
+
+public SimpleRead()
+{
+ this(new CharArrayReader(new char[0]));
+}
+
+SimpleRead(CharArrayReader car)
+{
+ super((Reader) car);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "In junior high, I did a lot writing. I wrote a science\n" +
+ "fiction novel length story that was called 'The Destruction of\n" +
+ "Planet Earth'. All the characters in the story were my friends \n" +
+ "from school because I couldn't think up any cool names.\n";
+
+ char[] str_chars = new char[str.length()];
+ str.getChars(0, str.length(), str_chars, 0);
+ char[] read_buf = new char[12];
+
+ CharArrayReader car = new CharArrayReader(str_chars);
+ SimpleRead fr = new SimpleRead(car);
+
+ try
+ {
+ harness.check(fr.read(), 'I', "read()");
+ int chars_read, total_read = 0;
+ while ((chars_read = fr.read(read_buf, 0, read_buf.length)) != -1)
+ {
+ harness.debug(new String(read_buf, 0, chars_read), false);
+ total_read += chars_read;
+ }
+
+ harness.check(total_read, str.length()-1, "read(buf,off,len)"); // -1 compensates for single read() earlier
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // SimpleRead
+
diff --git a/gnu/testlet/java/io/FilterWriter/CVS/Entries b/gnu/testlet/java/io/FilterWriter/CVS/Entries
new file mode 100644
index 00000000..2e0d1306
--- /dev/null
+++ b/gnu/testlet/java/io/FilterWriter/CVS/Entries
@@ -0,0 +1,3 @@
+/MyFilterWriter.java/1.2/Thu Jun 3 14:31:07 2004//
+/write.java/1.5/Thu Jun 3 14:31:07 2004//
+D
diff --git a/gnu/testlet/java/io/FilterWriter/CVS/Repository b/gnu/testlet/java/io/FilterWriter/CVS/Repository
new file mode 100644
index 00000000..77da9976
--- /dev/null
+++ b/gnu/testlet/java/io/FilterWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/FilterWriter
diff --git a/gnu/testlet/java/io/FilterWriter/CVS/Root b/gnu/testlet/java/io/FilterWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/FilterWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/FilterWriter/MyFilterWriter.java b/gnu/testlet/java/io/FilterWriter/MyFilterWriter.java
new file mode 100644
index 00000000..88691ea4
--- /dev/null
+++ b/gnu/testlet/java/io/FilterWriter/MyFilterWriter.java
@@ -0,0 +1,35 @@
+// Tags: not-a-test
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Daryl Lee (dolee@sources.redhat.com)
+
+// 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.java.io.FilterWriter;
+
+import java.io.CharArrayWriter;
+import java.io.FilterWriter;
+import java.io.Writer;
+
+public class MyFilterWriter extends FilterWriter
+{
+ public MyFilterWriter(CharArrayWriter caw)
+ {
+ super((Writer) caw);
+ }
+}
diff --git a/gnu/testlet/java/io/FilterWriter/write.java b/gnu/testlet/java/io/FilterWriter/write.java
new file mode 100644
index 00000000..1e77d55e
--- /dev/null
+++ b/gnu/testlet/java/io/FilterWriter/write.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.1
+// Uses: MyFilterWriter
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Daryl Lee (dolee@sources.redhat.com)
+
+// 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.java.io.FilterWriter;
+
+import java.io.CharArrayWriter;
+import java.io.FilterWriter;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class write implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ CharArrayWriter caw = new CharArrayWriter();
+ FilterWriter tfw = new MyFilterWriter(caw);
+ try {
+ tfw.write('A'); // A
+ harness.check(true, "write(int)");
+ char[] ba = {'A', 'B', 'C', 'D'};
+ tfw.write(ba, 1, 2); // ABC
+ harness.check(true, "write(buf,off,len)");
+ tfw.write("CDEF", 1, 3); // ABCDEF
+ harness.check(caw.toString(), "ABCDEF", "wrote all characters okay");
+ tfw.flush();
+ harness.check(true, "flush()");
+ tfw.close();
+ harness.check(true, "close()");
+ }
+ catch (IOException e) {
+ harness.debug(e);
+ harness.fail("IOException unexpected");
+ }
+
+ try {
+ // The documented JDK 1.4 behaviour is to throw NullPointerException
+ // if the constructor arg is null.
+ new MyFilterWriter(null);
+ harness.check(false, "new MyFilterWriter(null) -> no exception");
+ }
+ catch (NullPointerException ex) {
+ harness.check(true, "new MyFilterWriter(null) -> NullPointerException");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/IOError/CVS/Entries b/gnu/testlet/java/io/IOError/CVS/Entries
new file mode 100644
index 00000000..99a5d527
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Oct 1 08:57:26 2012//
+/constructor.java/1.1/Mon Oct 1 08:57:26 2012//
+D
diff --git a/gnu/testlet/java/io/IOError/CVS/Entries.Log b/gnu/testlet/java/io/IOError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/IOError/CVS/Repository b/gnu/testlet/java/io/IOError/CVS/Repository
new file mode 100644
index 00000000..15df2149
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/IOError
diff --git a/gnu/testlet/java/io/IOError/CVS/Root b/gnu/testlet/java/io/IOError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/IOError/TryCatch.java b/gnu/testlet/java/io/IOError/TryCatch.java
new file mode 100644
index 00000000..54663d7b
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.IOError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.IOError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IOError(new Throwable("e"));
+ }
+ catch (IOError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/CVS/Entries b/gnu/testlet/java/io/IOError/classInfo/CVS/Entries
new file mode 100644
index 00000000..f7e6299b
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Oct 1 08:57:26 2012//
+/getInterfaces.java/1.1/Mon Oct 1 08:57:26 2012//
+/getModifiers.java/1.1/Mon Oct 1 08:57:26 2012//
+/getName.java/1.1/Mon Oct 1 08:57:26 2012//
+/getPackage.java/1.1/Mon Oct 1 08:57:26 2012//
+/getSimpleName.java/1.1/Mon Oct 1 08:57:26 2012//
+/getSuperclass.java/1.1/Mon Oct 1 08:57:26 2012//
+/isAssignableFrom.java/1.1/Mon Oct 1 08:57:26 2012//
+/isInstance.java/1.1/Mon Oct 1 08:57:26 2012//
+/isInterface.java/1.1/Mon Oct 1 08:57:26 2012//
+/isLocalClass.java/1.1/Mon Oct 1 08:57:26 2012//
+/isMemberClass.java/1.1/Mon Oct 1 08:57:26 2012//
+/isPrimitive.java/1.1/Mon Oct 1 08:57:26 2012//
+/isSynthetic.java/1.1/Mon Oct 1 08:57:26 2012//
+D
diff --git a/gnu/testlet/java/io/IOError/classInfo/CVS/Repository b/gnu/testlet/java/io/IOError/classInfo/CVS/Repository
new file mode 100644
index 00000000..76777b74
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/IOError/classInfo
diff --git a/gnu/testlet/java/io/IOError/classInfo/CVS/Root b/gnu/testlet/java/io/IOError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/IOError/classInfo/InstanceOf.java b/gnu/testlet/java/io/IOError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..5539b6db
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.io.IOError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.IOError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IOError
+ IOError o = new IOError(null);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IOError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getInterfaces.java b/gnu/testlet/java/io/IOError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..0868120b
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.IOError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getModifiers.java b/gnu/testlet/java/io/IOError/classInfo/getModifiers.java
new file mode 100644
index 00000000..64e43886
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.IOError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getName.java b/gnu/testlet/java/io/IOError/classInfo/getName.java
new file mode 100644
index 00000000..769c0a6b
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.IOError");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getPackage.java b/gnu/testlet/java/io/IOError/classInfo/getPackage.java
new file mode 100644
index 00000000..760d1d88
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.IOError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getSimpleName.java b/gnu/testlet/java/io/IOError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..8f3c8518
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IOError");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/getSuperclass.java b/gnu/testlet/java/io/IOError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..1ad9733d
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.IOError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Error");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/IOError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..35fa5a96
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IOError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isInstance.java b/gnu/testlet/java/io/IOError/classInfo/isInstance.java
new file mode 100644
index 00000000..50153a0a
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IOError(null)));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isInterface.java b/gnu/testlet/java/io/IOError/classInfo/isInterface.java
new file mode 100644
index 00000000..be45d45c
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isLocalClass.java b/gnu/testlet/java/io/IOError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..be9a9cce
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isMemberClass.java b/gnu/testlet/java/io/IOError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c6d12d83
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isPrimitive.java b/gnu/testlet/java/io/IOError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..5db2a971
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/classInfo/isSynthetic.java b/gnu/testlet/java/io/IOError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..056b4fd7
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test for method java.io.IOError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOError(null);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOError/constructor.java b/gnu/testlet/java/io/IOError/constructor.java
new file mode 100644
index 00000000..2ba099d5
--- /dev/null
+++ b/gnu/testlet/java/io/IOError/constructor.java
@@ -0,0 +1,56 @@
+// Test if instances of a class java.io.IOError could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOError;
+
+
+
+/**
+ * Test if instances of a class java.io.IOError
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IOError object1 = new IOError(new Throwable("e"));
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.io.IOError"));
+ harness.check(object1.toString().contains("Throwable"));
+
+ IOError object2 = new IOError(null);
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.IOError");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/CVS/Entries b/gnu/testlet/java/io/IOException/CVS/Entries
new file mode 100644
index 00000000..f42a156b
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Oct 2 09:15:40 2012//
+/constructor.java/1.1/Tue Oct 2 09:15:40 2012//
+D
diff --git a/gnu/testlet/java/io/IOException/CVS/Entries.Log b/gnu/testlet/java/io/IOException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/IOException/CVS/Repository b/gnu/testlet/java/io/IOException/CVS/Repository
new file mode 100644
index 00000000..ae750370
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/IOException
diff --git a/gnu/testlet/java/io/IOException/CVS/Root b/gnu/testlet/java/io/IOException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/IOException/TryCatch.java b/gnu/testlet/java/io/IOException/TryCatch.java
new file mode 100644
index 00000000..23210767
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.IOException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.IOException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IOException("IOException");
+ }
+ catch (IOException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/CVS/Entries b/gnu/testlet/java/io/IOException/classInfo/CVS/Entries
new file mode 100644
index 00000000..dbbb5f2e
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Oct 2 09:15:40 2012//
+/getInterfaces.java/1.1/Tue Oct 2 09:15:40 2012//
+/getModifiers.java/1.1/Tue Oct 2 09:15:40 2012//
+/getName.java/1.1/Tue Oct 2 09:15:40 2012//
+/getPackage.java/1.1/Tue Oct 2 09:15:40 2012//
+/getSimpleName.java/1.1/Tue Oct 2 09:15:40 2012//
+/getSuperclass.java/1.1/Tue Oct 2 09:15:40 2012//
+/isAssignableFrom.java/1.1/Tue Oct 2 09:15:40 2012//
+/isInstance.java/1.1/Tue Oct 2 09:15:40 2012//
+/isInterface.java/1.1/Tue Oct 2 09:15:40 2012//
+/isLocalClass.java/1.1/Tue Oct 2 09:15:40 2012//
+/isMemberClass.java/1.1/Tue Oct 2 09:15:40 2012//
+/isPrimitive.java/1.1/Tue Oct 2 09:15:40 2012//
+/isSynthetic.java/1.1/Tue Oct 2 09:15:40 2012//
+D
diff --git a/gnu/testlet/java/io/IOException/classInfo/CVS/Repository b/gnu/testlet/java/io/IOException/classInfo/CVS/Repository
new file mode 100644
index 00000000..9be1ab88
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/IOException/classInfo
diff --git a/gnu/testlet/java/io/IOException/classInfo/CVS/Root b/gnu/testlet/java/io/IOException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/IOException/classInfo/InstanceOf.java b/gnu/testlet/java/io/IOException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..284bea3c
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.io.IOException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.IOException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IOException
+ IOException o = new IOException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IOException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getInterfaces.java b/gnu/testlet/java/io/IOException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..6b9276e2
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.IOException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getModifiers.java b/gnu/testlet/java/io/IOException/classInfo/getModifiers.java
new file mode 100644
index 00000000..894ff5c5
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.IOException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getName.java b/gnu/testlet/java/io/IOException/classInfo/getName.java
new file mode 100644
index 00000000..1580cfd7
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getPackage.java b/gnu/testlet/java/io/IOException/classInfo/getPackage.java
new file mode 100644
index 00000000..4f2600d2
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.IOException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getSimpleName.java b/gnu/testlet/java/io/IOException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..731c9a2d
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/getSuperclass.java b/gnu/testlet/java/io/IOException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..6399753e
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.IOException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/IOException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..6a74cb2f
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IOException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isInstance.java b/gnu/testlet/java/io/IOException/classInfo/isInstance.java
new file mode 100644
index 00000000..9d4ace17
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IOException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isInterface.java b/gnu/testlet/java/io/IOException/classInfo/isInterface.java
new file mode 100644
index 00000000..92f94137
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isLocalClass.java b/gnu/testlet/java/io/IOException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..b7b35aa7
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isMemberClass.java b/gnu/testlet/java/io/IOException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..b93dd851
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isPrimitive.java b/gnu/testlet/java/io/IOException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..f9d68911
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/classInfo/isSynthetic.java b/gnu/testlet/java/io/IOException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..95b93d56
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.IOException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test for method java.io.IOException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/IOException/constructor.java b/gnu/testlet/java/io/IOException/constructor.java
new file mode 100644
index 00000000..b0f2519e
--- /dev/null
+++ b/gnu/testlet/java/io/IOException/constructor.java
@@ -0,0 +1,54 @@
+// Test if instances of a class java.io.IOException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.IOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+
+
+
+/**
+ * Test if instances of a class java.io.IOException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IOException object1 = new IOException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.IOException: nothing happens");
+
+ IOException object2 = new IOException((String)null);
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InputStream/CVS/Entries b/gnu/testlet/java/io/InputStream/CVS/Entries
new file mode 100644
index 00000000..517360ce
--- /dev/null
+++ b/gnu/testlet/java/io/InputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Fri Jan 3 01:22:17 2003//
+D
diff --git a/gnu/testlet/java/io/InputStream/CVS/Repository b/gnu/testlet/java/io/InputStream/CVS/Repository
new file mode 100644
index 00000000..c64c1187
--- /dev/null
+++ b/gnu/testlet/java/io/InputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InputStream
diff --git a/gnu/testlet/java/io/InputStream/CVS/Root b/gnu/testlet/java/io/InputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InputStream/Test.java b/gnu/testlet/java/io/InputStream/Test.java
new file mode 100644
index 00000000..f0d93bc7
--- /dev/null
+++ b/gnu/testlet/java/io/InputStream/Test.java
@@ -0,0 +1,69 @@
+// Test for InputStream methods
+
+// Written by Daryl Lee (dol@sources.redhat.com)
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.InputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+public class Test extends InputStream implements Testlet
+{
+ private String s;
+ private int index;
+
+ public Test() { }
+
+ Test (String str)
+ {
+ super();
+ s = str;
+ index = 0;
+ }
+
+ public int read() throws IOException
+ {
+ return(index == s.length() ? -1 : s.charAt(index++));
+ }
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ Test tis = new Test ("zardoz has spoken");
+ byte[] cbuf = new byte[10];
+ tis.read (cbuf, 0, cbuf.length);
+ String tst = new String(cbuf);
+ harness.check(tst, "zardoz has", "read(buf[], off, len)");
+ harness.check(tis.read(), ' ', "read()");
+ tis.close ();
+ harness.check(true, "close()");
+ }
+ catch (IOException e)
+ {
+ harness.check(false, "IOException unexpected");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/InputStreamReader/CVS/Entries b/gnu/testlet/java/io/InputStreamReader/CVS/Entries
new file mode 100644
index 00000000..c03ff460
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/CVS/Entries
@@ -0,0 +1,6 @@
+/except.java/1.2/Mon Oct 28 20:06:00 2002//
+/getEncoding.java/1.3/Sat Dec 24 18:22:43 2005//
+/hang.java/1.2/Wed Jul 6 18:35:06 2005//
+/jdk11.java/1.3/Thu Feb 13 21:37:06 2003//
+/utf8.java/1.1/Mon Aug 25 21:29:36 2003//
+D
diff --git a/gnu/testlet/java/io/InputStreamReader/CVS/Repository b/gnu/testlet/java/io/InputStreamReader/CVS/Repository
new file mode 100644
index 00000000..af6b654c
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InputStreamReader
diff --git a/gnu/testlet/java/io/InputStreamReader/CVS/Root b/gnu/testlet/java/io/InputStreamReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InputStreamReader/except.java b/gnu/testlet/java/io/InputStreamReader/except.java
new file mode 100644
index 00000000..45e9c2df
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/except.java
@@ -0,0 +1,58 @@
+// Test for InputStreamReader exception handling.
+
+// Written by paul@dawa.demon.co.uk
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.InputStreamReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class except implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean ok = false;
+ try
+ {
+ InputStreamReader isr = new InputStreamReader (new StringBufferInputStream ("zardoz has spoken"));
+
+ char[] cbuf = new char[10];
+
+ isr.close ();
+ isr.read (cbuf, 0, 9);
+ }
+ catch (IOException _1)
+ {
+ // This is expected.
+ ok = true;
+ }
+ catch (Throwable _2)
+ {
+ // Failure.
+ harness.debug(_2);
+ }
+
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/io/InputStreamReader/getEncoding.java b/gnu/testlet/java/io/InputStreamReader/getEncoding.java
new file mode 100644
index 00000000..f4eef3a2
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/getEncoding.java
@@ -0,0 +1,179 @@
+//Tags: JDK1.4
+
+// Copyright (C) 2005 Robert Schuster (thebohemian@gmx.net)
+
+//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.java.io.InputStreamReader;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/** <p>Tests whether the InputStreamReader class returns the proper
+ * canonical (Java) IO name for a given NIO charset.</p>
+ *
+ * <p>The extended charsets are not required to be available. However if one
+ * is installed than it should support the proper name mapping.
+ * </p>
+ *
+ * <p>However the following charset are mandatory:
+ * <lu>
+ * <li>US-ASCII</li>
+ * <li>ISO-8859-1</li>
+ * <li>UTF-8</li>
+ * <li>UTF-16BE</li>
+ * <li>UTF-16LE</li>
+ * <li>UTF-16</li>
+ * </lu>
+ * </p>
+ *
+ * <p>The mapping's names are based on the information given in:
+ * http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ * </p>
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getEncoding implements Testlet {
+
+ public void test(TestHarness harness) {
+
+ String[] nioNames = new String[] { "ISO-8859-1", "ISO-8859-2",
+ "ISO-8859-4", "ISO-8859-5", "ISO-8859-7", "ISO-8859-9",
+ "ISO-8859-13", "ISO-8859-15", "KOI8-R", "US-ASCII", "UTF-8",
+ "UTF-16", "UTF-16BE", "UTF-16LE", "windows-1250",
+ "windows-1251", "windows-1252", "windows-1253", "windows-1254",
+ "windows-1257" };
+ String[] ioNames = new String[] { "ISO8859_1", "ISO8859_2",
+ "ISO8859_4", "ISO8859_5", "ISO8859_7", "ISO8859_9",
+ "ISO8859_13", "ISO8859_15", "KOI8_R", "ASCII", "UTF8",
+ "UTF-16", "UnicodeBigUnmarked", "UnicodeLittleUnmarked",
+ "Cp1250", "Cp1251", "Cp1252", "Cp1253", "Cp1254", "Cp1257" };
+
+ // Creates only a valid InputStream instance that is needed for an InputStreamReader later.
+ InputStream is = new ByteArrayInputStream(new byte[] { 0xD, 0xE, 0xA, 0xD, 0xB, 0xE, 0xE, 0xF });
+
+ harness.checkPoint("standard charsets");
+ for (int i = 0; i < nioNames.length; i++) {
+ boolean supported = true;
+ String name = null;
+ try {
+ Charset cs = Charset.forName(nioNames[i]);
+ InputStreamReader isr = new InputStreamReader(is, cs);
+ name = isr.getEncoding();
+ } catch (UnsupportedCharsetException uce) {
+ harness.debug(uce);
+ supported = false;
+ }
+ harness.check(name, ioNames[i]);
+ harness.check(supported, true);
+ }
+
+ // These are the charsets provided by J2SE5 in an international installation.
+ // The specification does not strictly require that they are available.
+
+ String[] extNioNames = new String[] { "Big5", "Big5-HKSCS", "EUC-JP",
+ "EUC-KR", "GB18030", "GB2312", "GBK", "IBM-Thai", "IBM00858",
+ "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144",
+ "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149",
+ "IBM037", "IBM1026", "IBM1047", "IBM273", "IBM277", "IBM278",
+ "IBM280", "IBM284", "IBM285", "IBM297", "IBM420", "IBM424",
+ "IBM437", "IBM500", "IBM775", "IBM850", "IBM852", "IBM855",
+ "IBM857", "IBM860", "IBM861", "IBM862", "IBM863", "IBM864",
+ "IBM865", "IBM866", "IBM868", "IBM869", "IBM870", "IBM871",
+ "IBM918", "ISO-2022-CN", "ISO-2022-JP", "ISO-2022-KR",
+ "ISO-8859-3", "ISO-8859-6", "ISO-8859-8", "Shift_JIS",
+ "TIS-620", "windows-1255", "windows-1256", "windows-1258",
+ "windows-31j", "x-Big5_Solaris", "x-euc-jp-linux", "x-EUC-TW",
+ "x-eucJP-Open", "x-IBM1006", "x-IBM1025", "x-IBM1046",
+ "x-IBM1097", "x-IBM1098", "x-IBM1112", "x-IBM1122",
+ "x-IBM1123", "x-IBM1124", "x-IBM1381", "x-IBM1383",
+ "x-IBM33722", "x-IBM737", "x-IBM856", "x-IBM874", "x-IBM875",
+ "x-IBM921", "x-IBM922", "x-IBM930", "x-IBM933", "x-IBM935",
+ "x-IBM937", "x-IBM939", "x-IBM942", "x-IBM942C", "x-IBM943",
+ "x-IBM943C", "x-IBM948", "x-IBM949", "x-IBM949C", "x-IBM950",
+ "x-IBM964", "x-IBM970", "x-ISCII91", "x-ISO2022-CN-CNS",
+ "x-ISO2022-CN-GB", "x-iso-8859-11", "x-JISAutoDetect",
+ "x-Johab", "x-MacArabic", "x-MacCentralEurope",
+ "x-MacCroatian", "x-MacCyrillic", "x-MacDingbat", "x-MacGreek",
+ "x-MacHebrew", "x-MacIceland", "x-MacRoman", "x-MacRomania",
+ "x-MacSymbol", "x-MacThai", "x-MacTurkish", "x-MacUkraine",
+ "x-MS950-HKSCS", "x-mswin-936", "x-PCK", "x-windows-874",
+ "x-windows-949", "x-windows-950" };
+
+ String[] extIoNames = new String[] { "Big5", "Big5_HKSCS", "EUC_JP",
+ "EUC_KR", "GB18030", "EUC_CN", "GBK", "Cp838", "Cp858",
+ "Cp1140", "Cp1141", "Cp1142", "Cp1143", "Cp1144", "Cp1145",
+ "Cp1146", "Cp1147", "Cp1148", "Cp1149", "Cp037", "Cp1026",
+ "Cp1047", "Cp273", "Cp277", "Cp278", "Cp280", "Cp284", "Cp285",
+ "Cp297", "Cp420", "Cp424", "Cp437", "Cp500", "Cp775", "Cp850",
+ "Cp852", "Cp855", "Cp857", "Cp860", "Cp861", "Cp862", "Cp863",
+ "Cp864", "Cp865", "Cp866", "Cp868", "Cp869", "Cp870", "Cp871",
+ "Cp918", "ISO2022CN", "ISO2022JP", "ISO2022KR", "ISO8859_3",
+ "ISO8859_6", "ISO8859_8", "SJIS", "TIS620", "Cp1255", "Cp1256",
+ "Cp1258", "MS932", "Big5_Solaris", "EUC_JP_LINUX", "EUC_TW",
+ "EUC_JP_Solaris", "Cp1006", "Cp1025", "Cp1046", "Cp1097",
+ "Cp1098", "Cp1112", "Cp1122", "Cp1123", "Cp1124", "Cp1381",
+ "Cp1383", "Cp33722", "Cp737", "Cp856", "Cp874", "Cp875",
+ "Cp921", "Cp922", "Cp930", "Cp933", "Cp935", "Cp937", "Cp939",
+ "Cp942", "Cp942C", "Cp943", "Cp943C", "Cp948", "Cp949",
+ "Cp949C", "Cp950", "Cp964", "Cp970", "ISCII91",
+ "ISO2022_CN_CNS", "ISO2022_CN_GB", "x-iso-8859-11",
+ "JISAutoDetect", "x-Johab", "MacArabic", "MacCentralEurope",
+ "MacCroatian", "MacCyrillic", "MacDingbat", "MacGreek",
+ "MacHebrew", "MacIceland", "MacRoman", "MacRomania",
+ "MacSymbol", "MacThai", "MacTurkish", "MacUkraine",
+ "MS950_HKSCS", "MS936", "PCK", "MS874", "MS949", "MS950",
+ "x-IBM933", "x-IBM935", "x-IBM937", "x-IBM939", "x-IBM942",
+ "x-IBM942C", "x-IBM943", "x-IBM943C", "x-IBM948", "x-IBM949",
+ "x-IBM949C", "x-IBM950", "x-IBM964", "x-IBM970", "x-ISCII91",
+ "x-ISO2022-CN-CNS", "x-ISO2022-CN-GB", "x-iso-8859-11",
+ "x-JISAutoDetect", "x-Johab", "x-MacArabic",
+ "x-MacCentralEurope", "x-MacCroatian", "x-MacCyrillic",
+ "x-MacDingbat", "x-MacGreek", "x-MacHebrew", "x-MacIceland",
+ "x-MacRoman", "x-MacRomania", "x-MacSymbol", "x-MacThai",
+ "x-MacTurkish", "x-MacUkraine", "x-MS950-HKSCS", "x-mswin-936",
+ "x-PCK", "x-windows-874", "x-windows-949", "x-windows-950" };
+
+ harness.checkPoint("extended charsets");
+ for (int i = 0; i < extNioNames.length; i++) {
+ boolean supported = true;
+ String name = null;
+ try {
+ Charset cs = Charset.forName(extNioNames[i]);
+ InputStreamReader isr = new InputStreamReader(is, cs);
+ name = isr.getEncoding();
+ } catch (UnsupportedCharsetException uce) {
+ supported = false;
+ }
+
+ if ( supported )
+ {
+ harness.check(name, extIoNames[i]);
+ harness.check(supported, true);
+ }
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/io/InputStreamReader/hang.java b/gnu/testlet/java/io/InputStreamReader/hang.java
new file mode 100644
index 00000000..9515723d
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/hang.java
@@ -0,0 +1,65 @@
+// Regression test for InputStreamReader hang.
+
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.io.InputStreamReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.util.Arrays;
+
+public class hang implements Testlet
+{
+ public void test (TestHarness h)
+ {
+ try
+ {
+ // We make a buffer where a multi-byte UTF-8 character is
+ // carefully positioned so that the BufferedInputStream we create
+ // will split it.
+ byte[] bytes = new byte[20];
+ Arrays.fill(bytes, (byte) 'a');
+ bytes[9] = (byte) 208;
+ bytes[10] = (byte) 164;
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+ BufferedInputStream bis = new BufferedInputStream(bais, 10);
+
+ // Note that the encoding name matters for this particular
+ // regression. It must be exactly 'utf8'.
+ InputStreamReader reader = new InputStreamReader(bis, "utf8");
+ char[] result = new char[5];
+
+ for (int i = 0; i < 4; ++i)
+ reader.read(result);
+
+ h.check(true);
+ }
+ catch (IOException _)
+ {
+ h.debug(_);
+ h.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/InputStreamReader/jdk11.java b/gnu/testlet/java/io/InputStreamReader/jdk11.java
new file mode 100644
index 00000000..12d5ddd5
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/jdk11.java
@@ -0,0 +1,58 @@
+// Test for InputStreamReader methods
+
+// Written by Daryl Lee (dol@sources.redhat.com)
+// Elaboration of except.java by paul@dawa.demon.co.uk
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.InputStreamReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class jdk11 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ InputStreamReader isr = new InputStreamReader (new StringBufferInputStream ("zardoz has spoken"));
+ harness.check(isr.ready(), "ready()"); // deprecated post-1.1
+
+ harness.check(isr.getEncoding() != null,
+ "non-null getEncoding");
+
+ char[] cbuf = new char[10];
+ isr.read (cbuf, 0, cbuf.length);
+ String tst = new String(cbuf);
+ harness.check(tst, "zardoz has", "read(buf[], off, len)");
+ harness.check(isr.read(), ' ', "read()");
+ isr.close ();
+ harness.check(isr.getEncoding(), null,
+ "null encoding after close");
+ }
+ catch (IOException e)
+ {
+ harness.check(false, "IOException unexpected");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/InputStreamReader/utf8.java b/gnu/testlet/java/io/InputStreamReader/utf8.java
new file mode 100644
index 00000000..f3834071
--- /dev/null
+++ b/gnu/testlet/java/io/InputStreamReader/utf8.java
@@ -0,0 +1,85 @@
+// Tests that UTF8 decoder always makes progress.
+
+// Written by Mark Wielaard <mark@klomp.org>
+// Based on a test by Patrik Reali <reali@acm.org>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.InputStreamReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class utf8 implements Testlet, Runnable
+{
+ TestHarness harness;
+ boolean ok = false;
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+ Thread t = new Thread(this);
+ t.start();
+
+ // Wait a few seconds for the thread to finish.
+ try
+ {
+ t.join(3 * 1000);
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug("Interrupted: " + ie);
+ }
+ harness.check(ok, "UTF-8 decoder finished");
+
+ if (!ok)
+ t.interrupt();
+ }
+
+ public void run()
+ {
+ try
+ {
+ PipedOutputStream pos = new PipedOutputStream();
+ OutputStreamWriter osw = new OutputStreamWriter(pos, "UTF-8");
+ PrintWriter ps = new PrintWriter(osw);
+
+ PipedInputStream pis = new PipedInputStream(pos);
+ InputStreamReader isr = new InputStreamReader(pis, "UTF-8");
+ char[] buf = new char[256];
+ int read;
+
+ ps.print("0123456789ABCDEF");
+ ps.flush();
+
+ // Read much more then we actually expect (16 characters).
+ read = isr.read(buf, 0, 256);
+ harness.check(read, 16, "16 characters read");
+ ok = true;
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, "IOException in run()");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/InterruptedIOException/CVS/Entries b/gnu/testlet/java/io/InterruptedIOException/CVS/Entries
new file mode 100644
index 00000000..d7ff5069
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Sep 25 09:35:39 2012//
+/constructor.java/1.1/Tue Sep 25 09:35:39 2012//
+D
diff --git a/gnu/testlet/java/io/InterruptedIOException/CVS/Entries.Log b/gnu/testlet/java/io/InterruptedIOException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/InterruptedIOException/CVS/Repository b/gnu/testlet/java/io/InterruptedIOException/CVS/Repository
new file mode 100644
index 00000000..da131205
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InterruptedIOException
diff --git a/gnu/testlet/java/io/InterruptedIOException/CVS/Root b/gnu/testlet/java/io/InterruptedIOException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InterruptedIOException/TryCatch.java b/gnu/testlet/java/io/InterruptedIOException/TryCatch.java
new file mode 100644
index 00000000..e8a17e65
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.InterruptedIOException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.InterruptedIOException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InterruptedIOException("InterruptedIOException");
+ }
+ catch (InterruptedIOException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Entries b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Entries
new file mode 100644
index 00000000..d469324c
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Sep 25 09:35:39 2012//
+/getInterfaces.java/1.1/Tue Sep 25 09:35:39 2012//
+/getModifiers.java/1.1/Tue Sep 25 09:35:39 2012//
+/getName.java/1.1/Tue Sep 25 09:35:39 2012//
+/getPackage.java/1.1/Tue Sep 25 09:35:39 2012//
+/getSimpleName.java/1.1/Tue Sep 25 09:35:39 2012//
+/getSuperclass.java/1.1/Tue Sep 25 09:35:39 2012//
+/isAssignableFrom.java/1.1/Tue Sep 25 09:35:39 2012//
+/isInstance.java/1.1/Tue Sep 25 09:35:39 2012//
+/isInterface.java/1.1/Tue Sep 25 09:35:39 2012//
+/isLocalClass.java/1.1/Tue Sep 25 09:35:39 2012//
+/isMemberClass.java/1.1/Tue Sep 25 09:35:39 2012//
+/isPrimitive.java/1.1/Tue Sep 25 09:35:39 2012//
+/isSynthetic.java/1.1/Tue Sep 25 09:35:39 2012//
+D
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Repository b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Repository
new file mode 100644
index 00000000..40abcaf3
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InterruptedIOException/classInfo
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Root b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/InstanceOf.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..15df417b
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.InterruptedIOException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.InterruptedIOException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class InterruptedIOException
+ InterruptedIOException o = new InterruptedIOException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof InterruptedIOException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getInterfaces.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..7d1f4ae4
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.InterruptedIOException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getModifiers.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getModifiers.java
new file mode 100644
index 00000000..91e5a688
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.InterruptedIOException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getName.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getName.java
new file mode 100644
index 00000000..aa5321ec
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.InterruptedIOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getPackage.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getPackage.java
new file mode 100644
index 00000000..01b11fc9
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InterruptedIOException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getSimpleName.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..416f10ab
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "InterruptedIOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/getSuperclass.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..dff4921c
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InterruptedIOException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..240e37cf
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(InterruptedIOException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isInstance.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isInstance.java
new file mode 100644
index 00000000..b71d0a8a
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new InterruptedIOException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isInterface.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isInterface.java
new file mode 100644
index 00000000..691e5706
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isLocalClass.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..1892ee1d
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isMemberClass.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..8be790fa
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isPrimitive.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..ca9ff6d1
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/classInfo/isSynthetic.java b/gnu/testlet/java/io/InterruptedIOException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..a8d1fa51
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InterruptedIOException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test for method java.io.InterruptedIOException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedIOException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InterruptedIOException/constructor.java b/gnu/testlet/java/io/InterruptedIOException/constructor.java
new file mode 100644
index 00000000..d3f07141
--- /dev/null
+++ b/gnu/testlet/java/io/InterruptedIOException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.InterruptedIOException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InterruptedIOException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InterruptedIOException;
+
+
+
+/**
+ * Test if instances of a class java.io.InterruptedIOException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InterruptedIOException object1 = new InterruptedIOException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.InterruptedIOException");
+
+ InterruptedIOException object2 = new InterruptedIOException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.InterruptedIOException: nothing happens");
+
+ InterruptedIOException object3 = new InterruptedIOException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.InterruptedIOException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/CVS/Entries b/gnu/testlet/java/io/InvalidClassException/CVS/Entries
new file mode 100644
index 00000000..d7ff5069
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Sep 25 09:35:39 2012//
+/constructor.java/1.1/Tue Sep 25 09:35:39 2012//
+D
diff --git a/gnu/testlet/java/io/InvalidClassException/CVS/Entries.Log b/gnu/testlet/java/io/InvalidClassException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/InvalidClassException/CVS/Repository b/gnu/testlet/java/io/InvalidClassException/CVS/Repository
new file mode 100644
index 00000000..0e802abc
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InvalidClassException
diff --git a/gnu/testlet/java/io/InvalidClassException/CVS/Root b/gnu/testlet/java/io/InvalidClassException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InvalidClassException/TryCatch.java b/gnu/testlet/java/io/InvalidClassException/TryCatch.java
new file mode 100644
index 00000000..7473501a
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.InvalidClassException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.InvalidClassException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InvalidClassException("InvalidClassException");
+ }
+ catch (InvalidClassException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Entries b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Entries
new file mode 100644
index 00000000..822428a1
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Sep 25 09:35:40 2012//
+/getInterfaces.java/1.1/Tue Sep 25 09:35:40 2012//
+/getModifiers.java/1.1/Tue Sep 25 09:35:40 2012//
+/getName.java/1.1/Tue Sep 25 09:35:40 2012//
+/getPackage.java/1.1/Tue Sep 25 09:35:40 2012//
+/getSimpleName.java/1.1/Tue Sep 25 09:35:40 2012//
+/getSuperclass.java/1.1/Tue Sep 25 09:35:40 2012//
+/isAssignableFrom.java/1.1/Tue Sep 25 09:35:40 2012//
+/isInstance.java/1.1/Tue Sep 25 09:35:40 2012//
+/isInterface.java/1.1/Tue Sep 25 09:35:40 2012//
+/isLocalClass.java/1.1/Tue Sep 25 09:35:40 2012//
+/isMemberClass.java/1.1/Tue Sep 25 09:35:40 2012//
+/isPrimitive.java/1.1/Tue Sep 25 09:35:40 2012//
+/isSynthetic.java/1.1/Tue Sep 25 09:35:40 2012//
+D
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Repository b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Repository
new file mode 100644
index 00000000..ac1f063e
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InvalidClassException/classInfo
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Root b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/InstanceOf.java b/gnu/testlet/java/io/InvalidClassException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..9c0ff108
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.InvalidClassException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.InvalidClassException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class InvalidClassException
+ InvalidClassException o = new InvalidClassException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof InvalidClassException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getInterfaces.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..d754b775
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.InvalidClassException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getModifiers.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getModifiers.java
new file mode 100644
index 00000000..1d884bbd
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.InvalidClassException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getName.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getName.java
new file mode 100644
index 00000000..041f8a7d
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.InvalidClassException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getPackage.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getPackage.java
new file mode 100644
index 00000000..1cbf0828
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InvalidClassException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getSimpleName.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..e3303bdc
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "InvalidClassException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/getSuperclass.java b/gnu/testlet/java/io/InvalidClassException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..34fb3bbb
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InvalidClassException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..67a47295
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(InvalidClassException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isInstance.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isInstance.java
new file mode 100644
index 00000000..d2aa8b38
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new InvalidClassException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isInterface.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isInterface.java
new file mode 100644
index 00000000..6c49c2fa
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isLocalClass.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..4aa2852b
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isMemberClass.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..3ec2f9e0
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isPrimitive.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8693a476
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/classInfo/isSynthetic.java b/gnu/testlet/java/io/InvalidClassException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..f58108d3
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidClassException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test for method java.io.InvalidClassException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidClassException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidClassException/constructor.java b/gnu/testlet/java/io/InvalidClassException/constructor.java
new file mode 100644
index 00000000..ea9323ba
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidClassException/constructor.java
@@ -0,0 +1,54 @@
+// Test if instances of a class java.io.InvalidClassException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidClassException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidClassException;
+
+
+
+/**
+ * Test if instances of a class java.io.InvalidClassException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InvalidClassException object1 = new InvalidClassException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.InvalidClassException: nothing happens");
+
+ InvalidClassException object2 = new InvalidClassException(null);
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.InvalidClassException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/CVS/Entries b/gnu/testlet/java/io/InvalidObjectException/CVS/Entries
new file mode 100644
index 00000000..9b4c95d9
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Sep 26 11:30:10 2012//
+/constructor.java/1.1/Wed Sep 26 11:30:10 2012//
+D
diff --git a/gnu/testlet/java/io/InvalidObjectException/CVS/Entries.Log b/gnu/testlet/java/io/InvalidObjectException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/InvalidObjectException/CVS/Repository b/gnu/testlet/java/io/InvalidObjectException/CVS/Repository
new file mode 100644
index 00000000..9a9beb3b
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InvalidObjectException
diff --git a/gnu/testlet/java/io/InvalidObjectException/CVS/Root b/gnu/testlet/java/io/InvalidObjectException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InvalidObjectException/TryCatch.java b/gnu/testlet/java/io/InvalidObjectException/TryCatch.java
new file mode 100644
index 00000000..75537728
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.InvalidObjectException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.InvalidObjectException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InvalidObjectException("InvalidObjectException");
+ }
+ catch (InvalidObjectException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Entries b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Entries
new file mode 100644
index 00000000..dca5a7d2
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Sep 26 11:30:10 2012//
+/getInterfaces.java/1.1/Wed Sep 26 11:30:10 2012//
+/getModifiers.java/1.1/Wed Sep 26 11:30:10 2012//
+/getName.java/1.1/Wed Sep 26 11:30:10 2012//
+/getPackage.java/1.1/Wed Sep 26 11:30:10 2012//
+/getSimpleName.java/1.1/Wed Sep 26 11:30:10 2012//
+/getSuperclass.java/1.1/Wed Sep 26 11:30:10 2012//
+/isAssignableFrom.java/1.1/Wed Sep 26 11:30:10 2012//
+/isInstance.java/1.1/Wed Sep 26 11:30:10 2012//
+/isInterface.java/1.1/Wed Sep 26 11:30:10 2012//
+/isLocalClass.java/1.1/Wed Sep 26 11:30:10 2012//
+/isMemberClass.java/1.1/Wed Sep 26 11:30:10 2012//
+/isPrimitive.java/1.1/Wed Sep 26 11:30:10 2012//
+/isSynthetic.java/1.1/Wed Sep 26 11:30:10 2012//
+D
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Repository b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Repository
new file mode 100644
index 00000000..4a97c15c
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/InvalidObjectException/classInfo
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Root b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/InstanceOf.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..5454d85a
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.InvalidObjectException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.InvalidObjectException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class InvalidObjectException
+ InvalidObjectException o = new InvalidObjectException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof InvalidObjectException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getInterfaces.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..1c13fde2
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.InvalidObjectException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getModifiers.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getModifiers.java
new file mode 100644
index 00000000..812bfa75
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.InvalidObjectException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getName.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getName.java
new file mode 100644
index 00000000..721c6871
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.InvalidObjectException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getPackage.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getPackage.java
new file mode 100644
index 00000000..c118f19e
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InvalidObjectException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getSimpleName.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..af129470
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "InvalidObjectException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/getSuperclass.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..d11fd2c4
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.InvalidObjectException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..b4eb75b1
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(InvalidObjectException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isInstance.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isInstance.java
new file mode 100644
index 00000000..8751c13f
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new InvalidObjectException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isInterface.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isInterface.java
new file mode 100644
index 00000000..122a851c
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isLocalClass.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..797f2a7e
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isMemberClass.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..98e8947e
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isPrimitive.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..166e9024
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/classInfo/isSynthetic.java b/gnu/testlet/java/io/InvalidObjectException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..8bb4aed9
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.InvalidObjectException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test for method java.io.InvalidObjectException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InvalidObjectException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/InvalidObjectException/constructor.java b/gnu/testlet/java/io/InvalidObjectException/constructor.java
new file mode 100644
index 00000000..b08771dc
--- /dev/null
+++ b/gnu/testlet/java/io/InvalidObjectException/constructor.java
@@ -0,0 +1,55 @@
+// Test if instances of a class java.io.InvalidObjectException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.InvalidObjectException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.InvalidObjectException;
+
+
+
+/**
+ * Test if instances of a class java.io.InvalidObjectException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InvalidObjectException object1 = new InvalidObjectException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.InvalidObjectException: nothing happens");
+
+ InvalidObjectException object2 = new InvalidObjectException(null);
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.InvalidObjectException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/LineNumberInputStream/CVS/Entries b/gnu/testlet/java/io/LineNumberInputStream/CVS/Entries
new file mode 100644
index 00000000..ca2d30eb
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberInputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Sun Dec 27 18:16:20 1998//
+D
diff --git a/gnu/testlet/java/io/LineNumberInputStream/CVS/Repository b/gnu/testlet/java/io/LineNumberInputStream/CVS/Repository
new file mode 100644
index 00000000..dc97cc34
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/LineNumberInputStream
diff --git a/gnu/testlet/java/io/LineNumberInputStream/CVS/Root b/gnu/testlet/java/io/LineNumberInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/LineNumberInputStream/Test.java b/gnu/testlet/java/io/LineNumberInputStream/Test.java
new file mode 100644
index 00000000..d2bafdad
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberInputStream/Test.java
@@ -0,0 +1,96 @@
+/*************************************************************************
+/* Test.java -- Test LineNumberInputStream
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.LineNumberInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ String str = "I grew up by a small town called Laconia, Indiana\r" +
+ "which has a population of about 64 people. But I didn't live\r\n" +
+ "in town. I lived on a gravel road about 4 miles away.\n" +
+ "They paved that road\n";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+ LineNumberInputStream lnis = new LineNumberInputStream(sbis);
+
+ lnis.setLineNumber(2);
+
+ byte[] buf = new byte[32];
+ int bytes_read;
+ while ((bytes_read = lnis.read(buf)) != -1)
+ {
+ str = new String(buf, 0, bytes_read);
+ if (str.indexOf("\r") != -1)
+ {
+ harness.debug("\nFound an unexpected \\r\n");
+ harness.check(false);
+ }
+
+ harness.debug(str, false);
+ }
+
+ harness.check(lnis.getLineNumber(), 6, "getLineNumber - first test");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ String str = "One time I was playing kickball on the playground\n" +
+ "in 4th grade and my friends kept talking about how they smelled\n" +
+ "pot. I kept asking them what they smelled because I couldn't\n" +
+ "figure out how a pot could have a smell";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+ LineNumberInputStream lnis = new LineNumberInputStream(sbis);
+
+ byte[] buf = new byte[32];
+ int bytes_read;
+ while ((bytes_read = lnis.read(buf)) != -1)
+ harness.debug(new String(buf, 0, bytes_read), false);
+
+ harness.debug("");
+ harness.check(lnis.getLineNumber(), 3, "getLineNumber - second test");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/LineNumberReader/CVS/Entries b/gnu/testlet/java/io/LineNumberReader/CVS/Entries
new file mode 100644
index 00000000..3277a5fd
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/CVS/Entries
@@ -0,0 +1,4 @@
+/Test.java/1.3/Thu Dec 12 14:49:06 2002//
+/Test2.java/1.2/Sun Dec 28 14:01:44 2003//
+/mark.java/1.1/Sun Aug 31 19:41:46 2003//
+D
diff --git a/gnu/testlet/java/io/LineNumberReader/CVS/Repository b/gnu/testlet/java/io/LineNumberReader/CVS/Repository
new file mode 100644
index 00000000..34c7c869
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/LineNumberReader
diff --git a/gnu/testlet/java/io/LineNumberReader/CVS/Root b/gnu/testlet/java/io/LineNumberReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/LineNumberReader/Test.java b/gnu/testlet/java/io/LineNumberReader/Test.java
new file mode 100644
index 00000000..684d89b2
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/Test.java
@@ -0,0 +1,147 @@
+/*************************************************************************
+/* Test.java -- Tests LineNumberReader
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.LineNumberReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ String str = "In 6th grade I had a crush on this girl named Leanne\n" +
+ "Dean. I thought she was pretty hot. I saw her at my ten year\n" +
+ "high school reunion. I still think she's pretty hot. (She's\n" +
+ "married to my brother's college roommate).\n";
+
+ StringReader sbr = new StringReader(str);
+ LineNumberReader lnr = new LineNumberReader(sbr);
+
+ lnr.setLineNumber(2);
+
+ char[] buf = new char[32];
+ int chars_read;
+ while ((chars_read = lnr.read(buf)) != -1)
+ {
+ str = new String(buf, 0, chars_read);
+ if (str.indexOf("\r") != -1)
+ {
+ harness.debug("\nFound unexpected \\r");
+ harness.check(false);
+ }
+ harness.debug(str, false);
+ }
+
+ harness.check(lnr.getLineNumber(), 6, "getLineNumber - first series");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ String str = "Exiting off the expressway in Chicago is not an easy\n" +
+ "thing to do. For example, at Fullerton you have to run a\n" +
+ "gauntlet of people selling flowers, begging for money, or trying\n" +
+ "to 'clean' your windshield for tips.";
+
+ StringReader sbr = new StringReader(str);
+ LineNumberReader lnr = new LineNumberReader(sbr);
+
+ char[] buf = new char[32];
+ int chars_read;
+ while ((chars_read = lnr.read(buf)) != -1)
+ harness.debug(new String(buf, 0, chars_read), false);
+ harness.debug("");
+
+ harness.check(lnr.getLineNumber(), 3, "getLineNumber - second test");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ // test for mark, reset, skip, read(buf, off, len) and readLine
+ try
+ {
+ String str = "Exiting off the expressway in Chicago is not an easy\n" +
+ "thing to do. For example, at Fullerton you have to run a\n" +
+ "gauntlet of people selling flowers, begging for money, or trying\n" +
+ "to 'clean' your windshield for tips.";
+
+ StringReader sbr = new StringReader(str);
+ LineNumberReader lnr = new LineNumberReader(sbr);
+
+ char[] buf = new char[80];
+ int chars_read;
+ String line = lnr.readLine();
+ lnr.mark(80);
+ lnr.skip(14);
+ char[] buf2 = new char[3];
+ lnr.read(buf2, 0, 3);
+ String b2 = new String(buf2);
+ harness.check(b2, "For", "skip(), read(buf, off, len)");
+ lnr.reset();
+ char[] buf3 = new char[5];
+ lnr.read(buf3, 0, 5);
+ String b3 = new String(buf3);
+ harness.check(b3, "thing", "mark(), reset()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ // Test for multiple \r or \n in a stream.
+ try
+ {
+ String str = "One\r\r\r\rTwo\n\n\n\nThree\r\n\r\n\r\n";
+ StringReader sbr = new StringReader(str);
+ LineNumberReader lnr = new LineNumberReader(sbr);
+
+ int c = lnr.read();
+ while (c != -1)
+ {
+ c = lnr.read();
+ }
+ harness.check(lnr.getLineNumber(), 11, "One, Two, Three makes 11");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "One, Two, Three makes 11");
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/LineNumberReader/Test2.java b/gnu/testlet/java/io/LineNumberReader/Test2.java
new file mode 100644
index 00000000..7ffa41af
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/Test2.java
@@ -0,0 +1,283 @@
+// ------------------------------------------------------------------------
+// Test2.java -- Tests LineNumberReader
+//
+// Copyright (c) 2003 Free Software Foundation, Inc.
+// Written by Guilhem Lavaux <guilhem@kaffe.org>, Based on a test by
+// Dalibor Topic <robilad@kaffe.org>
+//
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+// ------------------------------------------------------------------------
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.LineNumberReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test2 implements Testlet
+{
+ static abstract class LineReaderTest
+ {
+ abstract void test(TestHarness harness) throws Exception;
+ }
+
+ static class LineTest1 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("X");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ try
+ {
+ lnr.mark(-5);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+ }
+
+ static class LineTest2 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("X");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ try
+ {
+ lnr.read(null, 0, 0);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // Read too many bytes for the buffer.
+ try
+ {
+ lnr.read(new char[1], 0, 2);
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // Read at a negative position.
+ try
+ {
+ lnr.read(new char[1], -5, 0);
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ // Read with a negative length.
+ try
+ {
+ lnr.read(new char[1], 0, -5);
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+ }
+ }
+
+ static class LineTest3 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("X");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ lnr.setLineNumber(-5);
+ harness.check(lnr.getLineNumber(), -5);
+ }
+ }
+
+ static class LineTest4 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\n");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ char[] ch = new char[2];
+ int r = lnr.read(ch, 0, 2);
+ harness.check(ch[0] == '\r' && ch[1] == '\n');
+ harness.check(lnr.getLineNumber(), 1);
+ }
+ }
+
+ static class LineTest5 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\n\r");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.getLineNumber(), 2);
+ }
+ }
+
+ static class LineTest6 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\r\n");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.getLineNumber(), 2);
+ }
+ }
+
+ static class LineTest7 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\n\r");
+ LineNumberReader lnr = new LineNumberReader(sr);
+ char[] ch = new char[1];
+
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.read(ch, 0, 1), 1);
+ harness.check(ch[0], '\n');
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.getLineNumber(), 2);
+ }
+ }
+
+ static class LineTest8 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\n\r");
+ LineNumberReader lnr = new LineNumberReader(sr);
+ char[] ch = new char[1];
+
+ harness.check(lnr.read(ch, 0, 1), 1);
+ harness.check(ch[0], '\r');
+ harness.check(lnr.read(), '\n');
+ harness.check(lnr.read(ch, 0, 1), -1);
+ harness.check(ch[0], '\r');
+ harness.check(lnr.getLineNumber(), 2);
+ }
+ }
+
+
+ static class LineTest9 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("\r\n\r");
+ LineNumberReader lnr = new LineNumberReader(sr);
+ char[] ch = new char[1];
+
+ lnr.read();
+ lnr.mark(5);
+ harness.check(lnr.read(ch, 0, 1), 1);
+ harness.check(ch[0], '\n');
+ harness.check(lnr.read(), '\n');
+ lnr.reset();
+ harness.check(lnr.read(ch, 0, 1), 1);
+ harness.check(ch[0], '\n');
+ harness.check(lnr.read(), '\n');
+
+ harness.check(lnr.getLineNumber(), 2);
+ }
+ }
+
+ static class LineTest10 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("X");
+ LineNumberReader lnr = new LineNumberReader(sr);
+
+ try
+ {
+ lnr.reset();
+ harness.check(false);
+ }
+ catch (IOException e)
+ {
+ harness.check(true);
+ }
+ }
+ }
+
+ static class LineTest11 extends LineReaderTest
+ {
+ void test(TestHarness harness) throws Exception
+ {
+ StringReader sr = new StringReader("X");
+ LineNumberReader lnr = new LineNumberReader(sr);
+ int old_linenumber = lnr.getLineNumber();
+
+ lnr.mark(5);
+ lnr.setLineNumber(10);
+ lnr.reset();
+ harness.check(lnr.getLineNumber(), old_linenumber);
+ }
+ }
+
+ static LineReaderTest[] tests = {
+ new LineTest1(),
+ new LineTest2(),
+ new LineTest3(),
+ new LineTest4(),
+ new LineTest5(),
+ new LineTest6(),
+ new LineTest7(),
+ new LineTest8(),
+ new LineTest9(),
+ new LineTest10(),
+ new LineTest11()
+ };
+
+ public void test(TestHarness harness)
+ {
+ for (int i = 0; i < tests.length; i++)
+ {
+ String name = tests[i].getClass().getName();
+
+ name = name.substring(name.indexOf('$')+1);
+ harness.checkPoint("LineNumberReader stress test (" + name + ")");
+ try
+ {
+ tests[i].test(harness);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/LineNumberReader/mark.java b/gnu/testlet/java/io/LineNumberReader/mark.java
new file mode 100644
index 00000000..a8e3c15f
--- /dev/null
+++ b/gnu/testlet/java/io/LineNumberReader/mark.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+/* mark.java -- Tests LineNumberReader.mark() and reset().
+/*
+/* Copyright (c) 2003 Free Software Foundation, Inc.
+/* Written by Mark Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.LineNumberReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class mark implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ String s = "1234567890abcdef";
+ for (int nr = 0; nr <= 16; nr++)
+ for (int limit = 1; limit < 16 - nr; limit++)
+ {
+ String test = "nr: " + nr + " limit: " + limit;
+ try
+ {
+ StringReader sr = new StringReader(s);
+ LineNumberReader lnr = new LineNumberReader(sr, 2);
+
+ // Read some nr of chars.
+ for (int i = 0; i < nr; i++)
+ lnr.read();
+
+ // Set limit and read char we want to return to.
+ lnr.mark(limit);
+ int j = lnr.read();
+
+ // Gobble up some more chars till the limit
+ for (int i = 0; i < limit - 1; i++)
+ lnr.read();
+
+ // Reset and reread char
+ lnr.reset();
+ int k = lnr.read();
+
+ harness.check(j, k, test);
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, test);
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/CVS/Entries b/gnu/testlet/java/io/NotActiveException/CVS/Entries
new file mode 100644
index 00000000..56ef94f2
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Oct 8 07:50:51 2012//
+/constructor.java/1.1/Mon Oct 8 07:50:51 2012//
+D
diff --git a/gnu/testlet/java/io/NotActiveException/CVS/Entries.Log b/gnu/testlet/java/io/NotActiveException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/NotActiveException/CVS/Repository b/gnu/testlet/java/io/NotActiveException/CVS/Repository
new file mode 100644
index 00000000..d3008615
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/NotActiveException
diff --git a/gnu/testlet/java/io/NotActiveException/CVS/Root b/gnu/testlet/java/io/NotActiveException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/NotActiveException/TryCatch.java b/gnu/testlet/java/io/NotActiveException/TryCatch.java
new file mode 100644
index 00000000..2619237b
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.NotActiveException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.NotActiveException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NotActiveException("NotActiveException");
+ }
+ catch (NotActiveException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Entries b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Entries
new file mode 100644
index 00000000..a3ed622b
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Oct 8 07:50:51 2012//
+/getInterfaces.java/1.1/Mon Oct 8 07:50:51 2012//
+/getModifiers.java/1.1/Mon Oct 8 07:50:51 2012//
+/getName.java/1.1/Mon Oct 8 07:50:51 2012//
+/getPackage.java/1.1/Mon Oct 8 07:50:51 2012//
+/getSimpleName.java/1.1/Mon Oct 8 07:50:51 2012//
+/getSuperclass.java/1.1/Mon Oct 8 07:50:51 2012//
+/isAssignableFrom.java/1.1/Mon Oct 8 07:50:51 2012//
+/isInstance.java/1.1/Mon Oct 8 07:50:51 2012//
+/isInterface.java/1.1/Mon Oct 8 07:50:51 2012//
+/isLocalClass.java/1.1/Mon Oct 8 07:50:51 2012//
+/isMemberClass.java/1.1/Mon Oct 8 07:50:51 2012//
+/isPrimitive.java/1.1/Mon Oct 8 07:50:51 2012//
+/isSynthetic.java/1.1/Mon Oct 8 07:50:51 2012//
+D
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Repository b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Repository
new file mode 100644
index 00000000..2a9fa353
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/NotActiveException/classInfo
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Root b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/InstanceOf.java b/gnu/testlet/java/io/NotActiveException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..05ce9676
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.NotActiveException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.NotActiveException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NotActiveException
+ NotActiveException o = new NotActiveException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NotActiveException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getInterfaces.java b/gnu/testlet/java/io/NotActiveException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b80dee75
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.NotActiveException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getModifiers.java b/gnu/testlet/java/io/NotActiveException/classInfo/getModifiers.java
new file mode 100644
index 00000000..ddc98998
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.NotActiveException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getName.java b/gnu/testlet/java/io/NotActiveException/classInfo/getName.java
new file mode 100644
index 00000000..3351ebd5
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.NotActiveException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getPackage.java b/gnu/testlet/java/io/NotActiveException/classInfo/getPackage.java
new file mode 100644
index 00000000..113aa6cf
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.NotActiveException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getSimpleName.java b/gnu/testlet/java/io/NotActiveException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..9bfe8ee2
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NotActiveException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/getSuperclass.java b/gnu/testlet/java/io/NotActiveException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..9ee36c03
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.NotActiveException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/NotActiveException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..1357670f
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NotActiveException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isInstance.java b/gnu/testlet/java/io/NotActiveException/classInfo/isInstance.java
new file mode 100644
index 00000000..460da824
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NotActiveException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isInterface.java b/gnu/testlet/java/io/NotActiveException/classInfo/isInterface.java
new file mode 100644
index 00000000..a1088f0f
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isLocalClass.java b/gnu/testlet/java/io/NotActiveException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..3a962e8b
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isMemberClass.java b/gnu/testlet/java/io/NotActiveException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..81c1d1f2
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isPrimitive.java b/gnu/testlet/java/io/NotActiveException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..758068c9
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/classInfo/isSynthetic.java b/gnu/testlet/java/io/NotActiveException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..94bcfc1a
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotActiveException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test for method java.io.NotActiveException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotActiveException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotActiveException/constructor.java b/gnu/testlet/java/io/NotActiveException/constructor.java
new file mode 100644
index 00000000..491642b9
--- /dev/null
+++ b/gnu/testlet/java/io/NotActiveException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.NotActiveException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotActiveException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotActiveException;
+
+
+
+/**
+ * Test if instances of a class java.io.NotActiveException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NotActiveException object1 = new NotActiveException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.NotActiveException");
+
+ NotActiveException object2 = new NotActiveException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.NotActiveException: nothing happens");
+
+ NotActiveException object3 = new NotActiveException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.NotActiveException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/CVS/Entries b/gnu/testlet/java/io/NotSerializableException/CVS/Entries
new file mode 100644
index 00000000..af53f737
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Oct 9 07:11:16 2012//
+/constructor.java/1.1/Tue Oct 9 07:11:16 2012//
+D
diff --git a/gnu/testlet/java/io/NotSerializableException/CVS/Entries.Log b/gnu/testlet/java/io/NotSerializableException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/NotSerializableException/CVS/Repository b/gnu/testlet/java/io/NotSerializableException/CVS/Repository
new file mode 100644
index 00000000..c74f8f9e
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/NotSerializableException
diff --git a/gnu/testlet/java/io/NotSerializableException/CVS/Root b/gnu/testlet/java/io/NotSerializableException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/NotSerializableException/TryCatch.java b/gnu/testlet/java/io/NotSerializableException/TryCatch.java
new file mode 100644
index 00000000..d5d627c4
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.NotSerializableException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.NotSerializableException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NotSerializableException("NotSerializableException");
+ }
+ catch (NotSerializableException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Entries b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Entries
new file mode 100644
index 00000000..947795f0
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Oct 9 07:11:16 2012//
+/getInterfaces.java/1.1/Tue Oct 9 07:11:16 2012//
+/getModifiers.java/1.1/Tue Oct 9 07:11:16 2012//
+/getName.java/1.1/Tue Oct 9 07:11:16 2012//
+/getPackage.java/1.1/Tue Oct 9 07:11:16 2012//
+/getSimpleName.java/1.1/Tue Oct 9 07:11:16 2012//
+/getSuperclass.java/1.1/Tue Oct 9 07:11:16 2012//
+/isAssignableFrom.java/1.1/Tue Oct 9 07:11:16 2012//
+/isInstance.java/1.1/Tue Oct 9 07:11:16 2012//
+/isInterface.java/1.1/Tue Oct 9 07:11:16 2012//
+/isLocalClass.java/1.1/Tue Oct 9 07:11:16 2012//
+/isMemberClass.java/1.1/Tue Oct 9 07:11:16 2012//
+/isPrimitive.java/1.1/Tue Oct 9 07:11:16 2012//
+/isSynthetic.java/1.1/Tue Oct 9 07:11:16 2012//
+D
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Repository b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Repository
new file mode 100644
index 00000000..3f16c5b4
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/NotSerializableException/classInfo
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Root b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/InstanceOf.java b/gnu/testlet/java/io/NotSerializableException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..70b36e79
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.NotSerializableException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.NotSerializableException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NotSerializableException
+ NotSerializableException o = new NotSerializableException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NotSerializableException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getInterfaces.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..89d538e9
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.NotSerializableException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getModifiers.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getModifiers.java
new file mode 100644
index 00000000..20830d2e
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.NotSerializableException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getName.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getName.java
new file mode 100644
index 00000000..c52c03b8
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.NotSerializableException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getPackage.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getPackage.java
new file mode 100644
index 00000000..6c485eb2
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.NotSerializableException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getSimpleName.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..4a9e37e4
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NotSerializableException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/getSuperclass.java b/gnu/testlet/java/io/NotSerializableException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..d4ad0a61
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.NotSerializableException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..6b39fa7a
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NotSerializableException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isInstance.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isInstance.java
new file mode 100644
index 00000000..d73f7ad2
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NotSerializableException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isInterface.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isInterface.java
new file mode 100644
index 00000000..a0181fc1
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isLocalClass.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..a4839a35
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isMemberClass.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..2232d19e
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isPrimitive.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..1dbf3618
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/classInfo/isSynthetic.java b/gnu/testlet/java/io/NotSerializableException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..81456fb6
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.NotSerializableException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test for method java.io.NotSerializableException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NotSerializableException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/NotSerializableException/constructor.java b/gnu/testlet/java/io/NotSerializableException/constructor.java
new file mode 100644
index 00000000..014372c2
--- /dev/null
+++ b/gnu/testlet/java/io/NotSerializableException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.NotSerializableException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.NotSerializableException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.NotSerializableException;
+
+
+
+/**
+ * Test if instances of a class java.io.NotSerializableException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NotSerializableException object1 = new NotSerializableException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.NotSerializableException");
+
+ NotSerializableException object2 = new NotSerializableException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.NotSerializableException: nothing happens");
+
+ NotSerializableException object3 = new NotSerializableException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.NotSerializableException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/ObjectInputOutput/CVS/Entries b/gnu/testlet/java/io/ObjectInputOutput/CVS/Entries
new file mode 100644
index 00000000..e13a34b1
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/CVS/Entries
@@ -0,0 +1,26 @@
+/Compat1.java/1.3/Mon Apr 12 11:31:36 2004//
+/Compat1.serial.bin/1.1/Sun Dec 14 16:46:54 2003/-kb/
+/Compat2.java/1.5/Thu Jun 3 14:31:07 2004//
+/Compat2.serial.bin/1.1/Sun Dec 14 16:46:54 2003/-kb/
+/Deserializable.java/1.1/Mon Dec 6 12:57:14 2004//
+/ExtTest.java/1.1/Mon Dec 6 10:27:09 2004//
+/HierarchyTest.java/1.2/Tue Feb 14 21:42:33 2006//
+/InputTest.java/1.2/Tue Nov 9 19:01:22 1999//
+/LoopSerializationTest.java/1.2/Wed Feb 8 17:32:20 2006//
+/OutputTest.java/1.3/Fri Jan 24 16:56:48 2003//
+/ProxySerializationTest.java/1.2/Sun Feb 12 22:44:43 2006//
+/SerBase.java/1.1/Fri Dec 13 23:13:00 2002//
+/SerTest.java/1.2/Sat Dec 14 13:52:45 2002//
+/SerializableLoopA.java/1.1/Fri Feb 3 19:06:01 2006//
+/SerializableLoopB.java/1.1/Fri Feb 3 19:06:01 2006//
+/Test$BadField.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test$CallDefault.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test$Extern.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test$FinalField.data/1.1/Wed Apr 7 06:07:23 2004/-kb/
+/Test$GetPutField.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test$HairyGraph.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test$NoCallDefault.data/1.3/Wed Nov 24 16:07:07 2004/-kb/
+/Test$NotSerial.data/1.1/Sun Jul 25 08:33:49 1999//
+/Test.java/1.3/Wed Apr 7 06:07:23 2004//
+/write-ref-data.sh/1.1/Sun Jul 25 08:33:49 1999//
+D
diff --git a/gnu/testlet/java/io/ObjectInputOutput/CVS/Repository b/gnu/testlet/java/io/ObjectInputOutput/CVS/Repository
new file mode 100644
index 00000000..1e521a67
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ObjectInputOutput
diff --git a/gnu/testlet/java/io/ObjectInputOutput/CVS/Root b/gnu/testlet/java/io/ObjectInputOutput/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Compat1.java b/gnu/testlet/java/io/ObjectInputOutput/Compat1.java
new file mode 100644
index 00000000..16ff0726
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Compat1.java
@@ -0,0 +1,99 @@
+// Tags: JDK1.2
+// Uses: SerBase
+
+/* SerTest.java -- Test class that "overrides" private field 'a'.
+
+ Copyright (c) 2003 by Free Software Foundation, Inc.
+ Written by Guilhem Lavaux (guilhem@kaffe.org).
+ Based on a test by Pat Tullmann <pat_kaffe@tullmann.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+package gnu.testlet.java.io.ObjectInputOutput;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.io.IOException;
+import java.io.File;
+
+public class Compat1 implements Testlet
+{
+ static String SERIAL_REFERENCE = "serial.bin";
+ static String SERIAL_SCRATCH_FILENAME = "Compat1.tmp";
+ static int SERIAL_REF_ID = 0;
+
+ BigInteger getBigInt(int id)
+ {
+ return
+ new BigInteger("1010101010101101010101010102102102013103913019301210" + id);
+ }
+
+ void generate(String fname, int id) throws IOException
+ {
+ FileOutputStream of = new FileOutputStream (fname);
+ ObjectOutputStream oos = new ObjectOutputStream (of);
+
+ oos.writeObject (getBigInt (id));
+ }
+
+ BigInteger readSerial(String fname) throws Exception
+ {
+ FileInputStream ifs = new FileInputStream (fname);
+ ObjectInputStream ios = new ObjectInputStream (ifs);
+
+ return (BigInteger)ios.readObject();
+ }
+
+ public void test(TestHarness t)
+ {
+ int rand_id = 0;
+
+ t.checkPoint ("Compatibility test for BigInteger");
+
+ try
+ {
+ generate (SERIAL_SCRATCH_FILENAME, rand_id);
+ t.check (true);
+ t.check(readSerial (SERIAL_SCRATCH_FILENAME), getBigInt (rand_id));
+ }
+ catch (Exception e)
+ {
+ t.check (false);
+ t.debug (e);
+ }
+
+ try
+ {
+ ObjectInputStream ois = new ObjectInputStream (t.getResourceStream
+ (getClass().getName().replace ('.', '#') + "." + SERIAL_REFERENCE));
+
+ t.check(ois.readObject(), getBigInt (SERIAL_REF_ID));
+ }
+ catch (Exception e)
+ {
+ t.check (false);
+ t.debug (e);
+ }
+
+ new File(SERIAL_SCRATCH_FILENAME).delete();
+ }
+
+ static public void main(String args[]) throws IOException
+ {
+ new Compat1().generate (SERIAL_REFERENCE, SERIAL_REF_ID);
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Compat1.serial.bin b/gnu/testlet/java/io/ObjectInputOutput/Compat1.serial.bin
new file mode 100644
index 00000000..57820ffd
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Compat1.serial.bin
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Compat2.java b/gnu/testlet/java/io/ObjectInputOutput/Compat2.java
new file mode 100644
index 00000000..1516da0c
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Compat2.java
@@ -0,0 +1,148 @@
+// Tags: JDK1.2
+// Uses: SerBase
+
+/* Compat2.java -- Test for Put/GetField.
+
+ Copyright (c) 2003 by Free Software Foundation, Inc.
+ Written by Guilhem Lavaux (guilhem@kaffe.org).
+ Based on a test by Pat Tullmann <pat_kaffe@tullmann.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.Serializable;
+
+public class Compat2 implements Testlet
+{
+ static String SERIAL_REFERENCE = "serial.bin";
+ static String SERIAL_SCRATCH_FILENAME = "Compat2.tmp";
+ static int SERIAL_REF_ID = 0;
+
+ private static class GetTypeMismatch // object typemismatch in get
+ implements Serializable
+ {
+ // Explicitly set serialVersionUID for different compilers handling
+ // of inner classes.
+ private static final long serialVersionUID = -2330048339523627109L;
+
+ private Integer x = new Integer(17);
+ private Integer y = new Integer(27);
+
+ public String toString()
+ {
+ return (this.getClass().getName() + ": " +x+ "," +y);
+ }
+
+ private void writeObject(ObjectOutputStream stream)
+ throws IOException, ClassNotFoundException
+ {
+ ObjectOutputStream.PutField pf1 = stream.putFields();
+ pf1.put("x", this.x);
+ pf1.put("y", this.y);
+ stream.writeFields();
+ }
+
+ private void readObject(ObjectInputStream stream)
+ throws IOException, ClassNotFoundException
+ {
+ ObjectInputStream.GetField gf1 = stream.readFields();
+ this.x = (Integer)gf1.get("x", new String("Missed X?"));
+ this.y = (Integer)gf1.get("y", new String("Missed Y?"));
+ }
+ }
+
+ void generate(String fname) throws IOException
+ {
+ FileOutputStream of = new FileOutputStream (fname);
+ ObjectOutputStream oos = new ObjectOutputStream (of);
+
+ oos.writeObject (new GetTypeMismatch());
+ }
+
+ GetTypeMismatch readSerial(String fname) throws IOException, ClassNotFoundException
+ {
+ FileInputStream ifs = new FileInputStream (fname);
+ ObjectInputStream ios = new ObjectInputStream (ifs);
+
+ return (GetTypeMismatch)ios.readObject();
+ }
+
+ public void test(TestHarness t)
+ {
+ int rand_id = 0;
+
+ t.checkPoint ("Compatibility test for type mismatch when calling get methods");
+
+ try
+ {
+ generate (SERIAL_SCRATCH_FILENAME);
+ t.check (true);
+
+ try
+ {
+ readSerial (SERIAL_SCRATCH_FILENAME);
+ t.check (false);
+ t.debug ("This should have triggered IllegalArgumentException");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ t.check(true);
+ else
+ {
+ t.check(false);
+ t.debug("Expected IllegalArgumentException, not: " + e);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ t.check (false);
+ t.debug (e);
+ }
+
+ try
+ {
+ ObjectInputStream ois = new ObjectInputStream (t.getResourceStream
+ (getClass().getName().replace ('.', '#') + "." + SERIAL_REFERENCE));
+
+ ois.readObject();
+ t.check (false);
+ t.debug ("This should have triggered IllegalArgumentException");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ t.check(true);
+ else
+ {
+ t.check(false);
+ t.debug("Expected IllegalArgumentException, not: " + e);
+ }
+ }
+ }
+
+ static public void main(String args[]) throws IOException
+ {
+ new Compat2().generate (SERIAL_REFERENCE);
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Compat2.serial.bin b/gnu/testlet/java/io/ObjectInputOutput/Compat2.serial.bin
new file mode 100644
index 00000000..141fdc07
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Compat2.serial.bin
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java b/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java
new file mode 100644
index 00000000..70fc04b1
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Deserializable.java
@@ -0,0 +1,123 @@
+// Tags: JDK1.2
+// Uses: Test
+
+/* Deserialize.java -- Tests class which are not deserializable.
+ * Imported from Kaffe 1.1.4.
+ * Adapted by Guilhem Lavaux <guilhem@kaffe.org>.
+ *
+ * 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.java.io.ObjectInputOutput;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.Serializable;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamException;
+import java.io.InvalidClassException;
+
+public class Deserializable implements Testlet
+{
+ // this class is not serializable as it does not have <init>()
+ static class NotSerializable1 {
+ public NotSerializable1(int dummy) {
+ }
+ }
+
+ static class Serialized1
+ extends NotSerializable1
+ implements Serializable
+ {
+ public Serialized1(int i) {
+ super(i);
+ }
+ }
+
+
+ // this class is not serializable as <init>() is private
+ static class NotSerializable2 {
+ public NotSerializable2(int dummy) {
+ }
+
+ private NotSerializable2() {
+ }
+ }
+
+ static class Serialized2
+ extends NotSerializable2
+ implements Serializable
+ {
+ static int count = 0;
+ public int i;
+
+ public Serialized2(int i) {
+ super(i);
+ this.i = i;
+ }
+ }
+
+ public void testObject(TestHarness harness, Object a)
+ {
+ try
+ {
+ FileOutputStream fos = new FileOutputStream ("frozen_serial");
+ ObjectOutputStream oos = new ObjectOutputStream (fos);
+ oos.writeObject (a);
+ oos.flush ();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Unexpected exception " + e);
+ harness.debug(e);
+ }
+
+ harness.checkPoint("Deserialize " + a.getClass().getName());
+ try
+ {
+ FileInputStream fis = new FileInputStream ("frozen_serial");
+ ObjectInputStream ois = new ObjectInputStream (fis);
+
+ Object b = ois.readObject ();
+
+ harness.fail("Was expecting an InvalidClassException");
+ }
+ catch (InvalidClassException e)
+ {
+ harness.check(true);
+ harness.debug(e);
+ }
+ catch (Exception e2)
+ {
+ harness.fail("Wrong exception");
+ harness.debug(e2);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testObject(harness, new Serialized1(10));
+ testObject(harness, new Serialized2(10));
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/ExtTest.java b/gnu/testlet/java/io/ObjectInputOutput/ExtTest.java
new file mode 100644
index 00000000..aa8b8240
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/ExtTest.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+/* ExtTest.java -- Regression test for GNU Classpath bug pertaining
+ to the handling of block data.
+
+ Copyright (c) 2004 by Free Software Foundation, Inc.
+ Written by Jeroen Frijters (jeroen@frijters.net).
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ExtTest implements Testlet, Serializable
+{
+ public static class Inner implements Externalizable
+ {
+ public void readExternal(ObjectInput ois) {}
+ public void writeExternal(ObjectOutput oos) {}
+ }
+
+ private Object ext = new Inner();
+ private String test = "test";
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(this);
+ ByteArrayInputStream bais
+ = new ByteArrayInputStream(baos.toByteArray());
+ ExtTest serialized = (ExtTest) new ObjectInputStream(bais).readObject();
+
+ harness.check(serialized.ext.getClass(), this.ext.getClass());
+ harness.check(serialized.test.equals(this.test));
+ }
+ catch (Throwable t)
+ {
+ harness.check(false);
+ harness.debug(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java b/gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java
new file mode 100644
index 00000000..6b4e2309
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/HierarchyTest.java
@@ -0,0 +1,113 @@
+/* HierarchyTest.java -- Tests which checks the deserialization of a hierarchy
+ of class including an abstract but useful constructor
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.2
+
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+/**
+ * Tests which ensures that abstract constructors are replayed during
+ * deserialization.
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ */
+public class HierarchyTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream objectOutputStream = null;
+ try
+ {
+ objectOutputStream = new ObjectOutputStream(baos);
+ objectOutputStream.writeObject(new Derived());
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.fail("Serialiazing a simple class deriving from a non serializable class");
+ }
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+ try
+ {
+ ObjectInputStream objectInputStream = new ObjectInputStream(bais);
+ Derived serialized = (Derived) objectInputStream.readObject();
+ harness.check(serialized.getA(), new Integer(-1),
+ "Checking value from non serializable super class");
+
+ }
+ catch (Exception e)
+ {
+ // If the deserializating failed
+ harness.debug(e);
+ harness.fail("Deserialiazing a simple class");
+ }
+
+ }
+
+ /**
+ * Base class for test. It is abstract but set a field to something else than
+ * the default value. Checking that this value is not null will prove that we
+ * used this class constructor
+ */
+ private static abstract class Base
+ {
+ private Integer a = new Integer(-1);
+
+ Base()
+ {
+ // Empty explicit constructor to prevent private implicit constructor to
+ // be generated by some compilers
+ }
+
+ Integer getA()
+ {
+ return a;
+ }
+
+ }
+
+ /**
+ * Derived class, which only exists to be instanciated.
+ */
+ private static class Derived extends Base implements Serializable
+ {
+
+ private static final long serialVersionUID = 7027787387780503451L;
+
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/InputTest.java b/gnu/testlet/java/io/ObjectInputOutput/InputTest.java
new file mode 100644
index 00000000..836c5555
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/InputTest.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: Test
+
+/* InputTest.java -- Tests ObjectInputStream class
+
+ Copyright (c) 1999 by Free Software Foundation, Inc.
+ Written by Geoff Berry <gcb@gnu.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+
+public class InputTest implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ Test[] tests = Test.getValidTests ();
+ for (int i = 0; i < tests.length; ++ i)
+ test (tests[i]);
+ }
+
+ void test (Test t)
+ {
+ String cname = t.getClass ().getName ();
+ harness.checkPoint (cname);
+ ObjectInputStream ois = null;
+
+ try
+ {
+ ois = new ObjectInputStream (
+ harness.getResourceStream (cname.replace ('.', '#') + ".data"));
+
+ Object[] objs = t.getTestObjs ();
+ for (int i = 0; i < objs.length; ++ i)
+ harness.check (ois.readObject (), objs[i]);
+ }
+ catch (Exception e)
+ {
+ harness.debug (e);
+ harness.check (false);
+ return;
+ }
+ finally
+ {
+ if (ois != null)
+ {
+ try
+ {
+ ois.close ();
+ }
+ catch (IOException e) {}
+ }
+ }
+ }
+
+ TestHarness harness;
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java b/gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java
new file mode 100644
index 00000000..278dca63
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/LoopSerializationTest.java
@@ -0,0 +1,88 @@
+/* LoopSerializationTest.java -- Test back references in serialization
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.2
+// Uses: SerializableLoopA SerializableLoopB
+
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.StreamCorruptedException;
+
+public class LoopSerializationTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+
+ SerializableLoopA a = new SerializableLoopA();
+ SerializableLoopB b = new SerializableLoopB();
+
+ a.setB(b);
+ b.setA(a);
+
+ harness.checkPoint("LoopSerializationTest");
+
+ harness.check(a.getB(), b);
+ harness.check(b.getA(), a);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try
+ {
+ new ObjectOutputStream(baos).writeObject(a);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.fail("Serialiazing a loop");
+ }
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ try
+ {
+ SerializableLoopA serialized = (SerializableLoopA) new ObjectInputStream(
+ bais).readObject();
+ harness.check(serialized.getB(), b);
+ }
+ catch (StreamCorruptedException e)
+ {
+ harness.debug(e);
+ harness.fail("Deserialiazing a loop");
+ }
+ catch (ClassNotFoundException e)
+ {
+ harness.debug(e);
+ harness.fail("Deserialiazing a loop");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.fail("Deserialiazing a loop");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/OutputTest.java b/gnu/testlet/java/io/ObjectInputOutput/OutputTest.java
new file mode 100644
index 00000000..704a1963
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/OutputTest.java
@@ -0,0 +1,120 @@
+// Tags: JDK1.2
+// Uses: Test
+
+/* OutputTest.java -- Tests ObjectOutputStream class
+
+ Copyright (c) 1999, 2003 by Free Software Foundation, Inc.
+ Written by Geoff Berry <gcb@gnu.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamException;
+
+public class OutputTest implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ Test[] tests = Test.getValidTests ();
+ for (int i = 0; i < tests.length; ++ i)
+ test (tests[i], false);
+
+ tests = Test.getErrorTests ();
+ for (int i = 0; i < tests.length; ++ i)
+ test (tests[i], true);
+ }
+
+ void test (Test t, boolean throwsOSE)
+ {
+ String cname = t.getClass ().getName ();
+ harness.checkPoint (cname);
+
+ try
+ {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream ();
+ ObjectOutputStream oos = new ObjectOutputStream (bytes);
+ Object[] objs = t.getTestObjs ();
+ boolean exception_thrown = false;
+ try
+ {
+ for (int i = 0; i < objs.length; ++ i)
+ oos.writeObject(objs[i]);
+ }
+ catch (ObjectStreamException ose)
+ {
+ exception_thrown = true;
+ if (!throwsOSE)
+ harness.debug(ose);
+ }
+ oos.close ();
+
+ if (throwsOSE)
+ harness.check(exception_thrown, "Unserializable: " + t);
+ else
+ {
+ harness.check(!exception_thrown, "Serializable: " + t);
+ harness.check (compareBytes (bytes.toByteArray (),
+ harness.getResourceStream (
+ cname.replace ('.', '#') + ".data")));
+ }
+ }
+ catch (Exception e)
+ {
+ harness.debug (e);
+ harness.check (false);
+ }
+ }
+
+ boolean compareBytes (byte[] written_bytes, InputStream ref_stream)
+ throws IOException
+ {
+ for (int data, i = 0; i < written_bytes.length; ++ i)
+ {
+ data = ref_stream.read ();
+ if (data == -1)
+ {
+ harness.debug ("Reference data is shorter than written data.");
+ return false;
+ }
+ if ((byte)data != written_bytes[i])
+ {
+ harness.debug ("Data differs at byte " + i);
+ harness.debug ("Ref. byte = 0"
+ + Integer.toOctalString (written_bytes[i] & 0xff)
+ + ", written byte = 0"
+ + Integer.toOctalString (data & 0xff));
+ return false;
+ }
+ }
+
+ if (ref_stream.read () != -1)
+ {
+ harness.debug ("Reference data is longer than written data.");
+ return false;
+ }
+ else
+ return true;
+ }
+
+ TestHarness harness;
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java b/gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java
new file mode 100644
index 00000000..da95552e
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/ProxySerializationTest.java
@@ -0,0 +1,132 @@
+/* ProxySerializationTest.java -- Tests serialization of a Proxy
+ Copyright (C) 2006 by Free Software Foundation, Inc.
+ Written by Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.3
+
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+/**
+ * Check that proxies are correctly serialized and doesn't cause reference
+ * offset.
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ */
+public class ProxySerializationTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+
+ SerBaseInterface proxy = (SerBaseInterface) Proxy.newProxyInstance(
+ SerBaseInterface.class.getClassLoader(),
+ new Class[] { SerBaseInterface.class },
+ new DummyInvocationHandler());
+ SerializableLoopA serializableLoopA = new SerializableLoopA();
+ SerializableLoopB serializableLoopB = new SerializableLoopB();
+
+ // Create data which will force serialization references to be used
+ serializableLoopA.setB(serializableLoopB);
+ serializableLoopB.setA(serializableLoopA);
+
+ harness.checkPoint("ProxySerializationTest");
+
+ harness.check(proxy.getA(), -25679, "Proxy interception checking");
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream objectOutputStream = null;
+ try
+ {
+ objectOutputStream = new ObjectOutputStream(baos);
+ objectOutputStream.writeObject(proxy);
+ objectOutputStream.writeObject(serializableLoopA);
+ objectOutputStream.writeObject(serializableLoopB);
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.fail("Error while serialiazing a proxy");
+ }
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+ try
+ {
+ ObjectInputStream objectInputStream = new ObjectInputStream(bais);
+ SerBaseInterface serialized = (SerBaseInterface) objectInputStream.readObject();
+ harness.check(serialized.getA(), -25679,
+ "Reserialized proxy working checking");
+
+ // Get other object off the object stream and force them to be actually
+ // used
+ SerializableLoopA serializableLoopA2 = (SerializableLoopA) objectInputStream.readObject();
+ SerializableLoopB serializableLoopB2 = (SerializableLoopB) objectInputStream.readObject();
+
+ harness.check(serializableLoopA.getB(), serializableLoopA2.getB());
+
+ }
+ catch (Exception e)
+ {
+ // If the reference counter got messed up, we should received a
+ // ClassCastException or something similar
+ harness.debug(e);
+ harness.fail("Error while deserialiazing a proxy");
+ }
+
+ }
+
+ private static class DummyInvocationHandler implements InvocationHandler,
+ Serializable
+ {
+
+ private static final long serialVersionUID = -6475900781578075262L;
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ if ("getA".equals(method.getName()))
+ {
+ return new Integer(-25679);
+ }
+ return method.invoke(proxy, args);
+ }
+
+ }
+
+ private interface SerBaseInterface
+ {
+ int getA();
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/SerBase.java b/gnu/testlet/java/io/ObjectInputOutput/SerBase.java
new file mode 100644
index 00000000..ece08387
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/SerBase.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+/* SerBase.java -- Base class that defines a field 'a'.
+
+ Copyright (c) 2002 by Free Software Foundation, Inc.
+ Written by Mark Wielaard (mark@klomp.org).
+ Based on a test by Jeroen Frijters (jeroen@sumatra.nl).
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.*;
+
+class SerBase implements Serializable
+{
+ private int a;
+
+ SerBase(int a)
+ {
+ this.a = a;
+ }
+
+ int getA()
+ {
+ return a;
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/SerTest.java b/gnu/testlet/java/io/ObjectInputOutput/SerTest.java
new file mode 100644
index 00000000..f271924d
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/SerTest.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+// Uses: SerBase
+
+/* SerTest.java -- Test class that "overrides" private field 'a'.
+
+ Copyright (c) 2002 by Free Software Foundation, Inc.
+ Written by Mark Wielaard (mark@klomp.org).
+ Based on a test by Jeroen Frijters (jeroen@sumatra.nl).
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class SerTest extends SerBase implements Testlet
+{
+ // This is THE field (this shadows the a field in the super class).
+ private int a;
+
+ public SerTest()
+ {
+ this(1,2);
+ }
+
+ SerTest(int a1, int a2)
+ {
+ super(a2);
+ a = a1;
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ SerTest original = this;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ new ObjectOutputStream(baos).writeObject(original);
+ ByteArrayInputStream bais
+ = new ByteArrayInputStream(baos.toByteArray());
+ SerTest serialized = (SerTest) new ObjectInputStream(bais).readObject();
+
+ harness.check(serialized.a, original.a);
+ harness.check(serialized.getA(), original.getA());
+ }
+ catch (Throwable t)
+ {
+ harness.check(false);
+ harness.debug(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopA.java b/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopA.java
new file mode 100644
index 00000000..a03cc576
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopA.java
@@ -0,0 +1,46 @@
+/* SeriableLoopA.java -- Simple class used to create a loop
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: not-a-test
+
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.Serializable;
+
+public class SerializableLoopA implements Serializable
+{
+
+ private static final long serialVersionUID = -8099761309283286991L;
+
+ SerializableLoopB b;
+
+ public SerializableLoopB getB()
+ {
+ return b;
+ }
+
+ public void setB(SerializableLoopB b)
+ {
+ this.b = b;
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopB.java b/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopB.java
new file mode 100644
index 00000000..6bc1c201
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/SerializableLoopB.java
@@ -0,0 +1,72 @@
+/* SerializableLoopB.java -- Simple class used to create a loop
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: not-a-test
+
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.Serializable;
+
+public class SerializableLoopB implements Serializable
+{
+
+ private static final long serialVersionUID = 3033857304110309388L;
+
+ SerializableLoopA a;
+
+ int value = -1;
+
+ public SerializableLoopA getA()
+ {
+ return a;
+ }
+
+ public void setA(SerializableLoopA a)
+ {
+ this.a = a;
+ }
+
+ public int getValue()
+ {
+ return value;
+ }
+
+ public void setValue(int value)
+ {
+ this.value = value;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof SerializableLoopB)
+ {
+ return getValue() == ((SerializableLoopB) obj).getValue();
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return new Integer(getValue()).hashCode();
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$BadField.data b/gnu/testlet/java/io/ObjectInputOutput/Test$BadField.data
new file mode 100644
index 00000000..cac3f498
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$BadField.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$CallDefault.data b/gnu/testlet/java/io/ObjectInputOutput/Test$CallDefault.data
new file mode 100644
index 00000000..74bcf0d7
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$CallDefault.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$Extern.data b/gnu/testlet/java/io/ObjectInputOutput/Test$Extern.data
new file mode 100644
index 00000000..edf52d7d
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$Extern.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$FinalField.data b/gnu/testlet/java/io/ObjectInputOutput/Test$FinalField.data
new file mode 100644
index 00000000..e4d75593
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$FinalField.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$GetPutField.data b/gnu/testlet/java/io/ObjectInputOutput/Test$GetPutField.data
new file mode 100644
index 00000000..275fa4ad
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$GetPutField.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$HairyGraph.data b/gnu/testlet/java/io/ObjectInputOutput/Test$HairyGraph.data
new file mode 100644
index 00000000..45499691
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$HairyGraph.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$NoCallDefault.data b/gnu/testlet/java/io/ObjectInputOutput/Test$NoCallDefault.data
new file mode 100644
index 00000000..8249434b
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$NoCallDefault.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test$NotSerial.data b/gnu/testlet/java/io/ObjectInputOutput/Test$NotSerial.data
new file mode 100644
index 00000000..f6f2ae08
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test$NotSerial.data
Binary files differ
diff --git a/gnu/testlet/java/io/ObjectInputOutput/Test.java b/gnu/testlet/java/io/ObjectInputOutput/Test.java
new file mode 100644
index 00000000..003ba25d
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/Test.java
@@ -0,0 +1,449 @@
+// Tags: not-a-test
+
+/* Test.java -- Classes used to test Object Input/Output
+
+ Copyright (c) 1999, 2004 by Free Software Foundation, Inc.
+ Written by Geoff Berry <gcb@gnu.org>, Guilhem Lavaux <guilhem@kaffe.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectInputOutput;
+
+import java.io.*;
+import java.lang.reflect.*;
+
+public abstract class Test
+{
+ public static void main (String[] args) throws IOException
+ {
+ Test[] tests = Test.getValidTests ();
+ for (int i = 0; i < tests.length; ++ i)
+ writeRefData (tests[i], false);
+
+ tests = Test.getErrorTests ();
+ for (int i = 0; i < tests.length; ++ i)
+ writeRefData (tests[i], true);
+ }
+
+ static void writeRefData (Test t, boolean throwsOSE) throws IOException
+ {
+ String file = t.getClass ().getName ();
+ int idx = file.lastIndexOf ('.');
+ if (idx != -1)
+ file = file.substring (idx + 1);
+ file += ".data";
+
+ ObjectOutputStream oos
+ = new ObjectOutputStream (new FileOutputStream (file));
+
+ Object[] objs = t.getTestObjs ();
+ for (int i = 0; i < objs.length; ++ i)
+ writeData (oos, objs[i], throwsOSE);
+
+ oos.close ();
+ }
+
+ static void writeData (ObjectOutputStream oos, Object obj, boolean throwsOSE)
+ throws IOException
+ {
+ try
+ {
+ oos.writeObject (obj);
+ }
+ catch (ObjectStreamException nse)
+ {
+ if (!throwsOSE)
+ throw nse;
+ }
+ }
+
+ static Test[] getValidTests ()
+ {
+ return new Test[] {new CallDefault (),
+ new Extern (),
+ new NoCallDefault (),
+ new HairyGraph (),
+ new GetPutField (),
+ new FinalField ()};
+ }
+
+ static Test[] getErrorTests ()
+ {
+ return new Test[] {new NotSerial (), new BadField ()};
+ }
+
+ Test () {}
+
+ abstract Object[] getTestObjs ();
+
+ public String toString ()
+ {
+ try
+ {
+ Class clazz = getClass ();
+ StringBuffer buf = new StringBuffer (clazz.getName ());
+ buf.append (" (");
+ Field[] fields = clazz.getDeclaredFields ();
+ for (int i = 0; i < fields.length; ++ i)
+ {
+ Field f = fields[i];
+ buf.append (f.getName ());
+ buf.append (" = ");
+ Class f_type = f.getType ();
+
+ if (f_type == boolean.class)
+ buf.append (f.getBoolean (this));
+ else if (f_type == byte.class)
+ buf.append (f.getByte (this));
+ else if (f_type == char.class)
+ buf.append (f.getChar (this));
+ else if (f_type == double.class)
+ buf.append (f.getDouble (this));
+ else if (f_type == float.class)
+ buf.append (f.getFloat (this));
+ else if (f_type == long.class)
+ buf.append (f.getLong (this));
+ else if (f_type == short.class)
+ buf.append (f.getShort (this));
+ else if (f_type == String.class)
+ {
+ String s = (String)f.get (this);
+ if (s != null)
+ buf.append ('"');
+ buf.append (s);
+ if (s != null)
+ buf.append ('"');
+ }
+ else
+ buf.append (f.get (this));
+
+ if (i != fields.length - 1)
+ buf.append (", ");
+ }
+ buf.append (')');
+ return buf.toString ();
+ }
+ catch (IllegalAccessException iae)
+ {
+ return super.toString ();
+ }
+ }
+
+ static class CallDefault extends Test implements Serializable
+ {
+ CallDefault () {}
+
+ CallDefault (int X, double Y, String S)
+ {
+ x = X;
+ y = Y;
+ s = S;
+ }
+
+ public boolean equals (Object o)
+ {
+ CallDefault oo = (CallDefault)o;
+ return oo.x == x
+ && oo.y == y
+ && oo.s.equals (s);
+ }
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new CallDefault (1, 3.14, "test")};
+ }
+
+ private void writeObject (ObjectOutputStream oos) throws IOException
+ {
+ oos.defaultWriteObject ();
+ }
+
+ private void readObject (ObjectInputStream ois)
+ throws ClassNotFoundException, IOException
+ {
+ ois.defaultReadObject ();
+ }
+
+ int x;
+ double y;
+ String s;
+ }
+
+ static class Extern extends NoCallDefault implements Externalizable
+ {
+ public Extern () {}
+
+ Extern (int X, String S, boolean B)
+ {
+ super (X, S, B);
+ }
+
+ public void writeExternal (ObjectOutput oo) throws IOException
+ {
+ oo.writeInt (x);
+ oo.writeObject (s);
+ oo.writeBoolean (b);
+ }
+
+ public void readExternal (ObjectInput oi)
+ throws ClassNotFoundException, IOException
+ {
+ x = oi.readInt ();
+ s = (String)oi.readObject ();
+ b = oi.readBoolean ();
+ }
+
+ public boolean equals (Object o)
+ {
+ Extern e = (Extern)o;
+ return e.x == x
+ && e.s.equals (s)
+ && e.b == b;
+ }
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new Extern (-1, "", true)};
+ }
+ }
+
+ static class NoCallDefault extends Test implements Serializable
+ {
+ NoCallDefault () {}
+
+ NoCallDefault (int X, String S, boolean B)
+ {
+ x = X;
+ s = S;
+ b = B;
+ }
+
+ public boolean equals (Object o)
+ {
+ NoCallDefault oo = (NoCallDefault)o;
+ return oo.x == x
+ && oo.b == b
+ && oo.s.equals (s);
+ }
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new NoCallDefault (17, "no\ncalldefaults", false)};
+ }
+
+ private void writeObject (ObjectOutputStream oos) throws IOException
+ {
+ oos.writeInt (x);
+ oos.writeObject (s);
+ oos.writeBoolean (b);
+ }
+
+ private void readObject (ObjectInputStream ois)
+ throws ClassNotFoundException, IOException
+ {
+ x = ois.readInt ();
+ s = (String)ois.readObject ();
+ b = ois.readBoolean ();
+ }
+
+ int x;
+ String s;
+ boolean b;
+ }
+
+ static class GraphNode implements Serializable
+ {
+ GraphNode (String s)
+ {
+ this.s = s;
+ }
+
+ public String toString ()
+ {
+ return this.s;
+ }
+
+ String s;
+ GraphNode a;
+ GraphNode b;
+ GraphNode c;
+ GraphNode d;
+ }
+
+ static class HairyGraph extends Test implements Serializable
+ {
+ HairyGraph ()
+ {
+ A = new GraphNode ("A");
+ B = new GraphNode ("B");
+ C = new GraphNode ("C");
+ D = new GraphNode ("D");
+
+ A.a = B;
+ A.b = C;
+ A.c = D;
+ A.d = A;
+
+ B.a = C;
+ B.b = D;
+ B.c = A;
+ B.d = B;
+
+ C.a = D;
+ C.b = A;
+ C.c = B;
+ C.d = C;
+
+ D.a = A;
+ D.b = B;
+ D.c = C;
+ D.d = D;
+ }
+
+ public boolean equals (Object o)
+ {
+ HairyGraph hg = (HairyGraph)o;
+
+ return (A.a == B.d) && (A.a == C.c) && (A.a == D.b)
+ && (A.b == B.a) && (A.b == C.d) && (A.b == D.c)
+ && (A.c == B.b) && (A.c == C.a) && (A.c == D.d)
+ && (A.d == B.c) && (A.d == C.b) && (A.d == D.a);
+ }
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new HairyGraph ()};
+ }
+
+ void printOneLevel (GraphNode gn)
+ {
+ System.out.println ("GraphNode( " + gn + ": " + gn.a + ", " + gn.b
+ + ", " + gn.c + ", " + gn.d + " )");
+ }
+
+ GraphNode A;
+ GraphNode B;
+ GraphNode C;
+ GraphNode D;
+ }
+
+ static class GetPutField extends Test implements Serializable
+ {
+ Object[] getTestObjs ()
+ {
+ // Don't make a test with WRONG_STR_VAL or WRONG_X_VAL
+ return new Object[] {new GetPutField ("test123", 123),
+ new GetPutField ("", 0),
+ new GetPutField (null, -1)};
+ }
+
+ GetPutField () {}
+
+ GetPutField (String str, int x)
+ {
+ this.str = str;
+ this.x = x;
+ }
+
+ public boolean equals (Object o)
+ {
+ if (!(o instanceof GetPutField))
+ return false;
+
+ GetPutField other = (GetPutField)o;
+
+ return (other.str == str || other.str.equals (str))
+ && other.x == x;
+ }
+
+ public String toString ()
+ {
+ return "test(str=" + str + ", x=" + x + ")";
+ }
+
+ private void writeObject (ObjectOutputStream oo) throws IOException
+ {
+ ObjectOutputStream.PutField pf = oo.putFields ();
+ pf.put ("str", str);
+ pf.put ("x", x);
+ oo.writeFields ();
+ }
+
+ private void readObject (ObjectInputStream oi)
+ throws ClassNotFoundException, IOException
+ {
+ ObjectInputStream.GetField gf = oi.readFields ();
+ str = (String)gf.get ("str", WRONG_STR_VAL);
+ x = gf.get ("x", WRONG_X_VAL);
+ }
+
+ private static final String WRONG_STR_VAL = "wrong-o";
+ private static final int WRONG_X_VAL = -17;
+ private String str;
+ private int x;
+ }
+
+ static class NotSerial extends Test
+ {
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new NotSerial ()};
+ }
+ }
+
+ static class BadField extends Test implements Serializable
+ {
+ BadField (int X, int Y, NotSerial O)
+ {
+ x = X;
+ y = Y;
+ o = O;
+ }
+
+ BadField () {}
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] {new BadField (1, 2, new NotSerial ())};
+ }
+
+ int x;
+ int y;
+ NotSerial o;
+ }
+
+ static class FinalField extends Test implements Serializable
+ {
+ final int a;
+ final String s;
+
+ FinalField()
+ {
+ s = "C";
+ a = 2;
+ }
+
+ Object[] getTestObjs ()
+ {
+ return new Object[] { new FinalField () };
+ }
+
+ public boolean equals (Object o)
+ {
+ FinalField oo = (FinalField)o;
+ return oo.a == a
+ && oo.s.equals (s);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputOutput/write-ref-data.sh b/gnu/testlet/java/io/ObjectInputOutput/write-ref-data.sh
new file mode 100755
index 00000000..eae676c1
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputOutput/write-ref-data.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+CLASSPATH=../../../../..:$CLASSPATH ${JAVA:-java} gnu.testlet.java.io.ObjectInputOutput.Test
diff --git a/gnu/testlet/java/io/ObjectInputStream/CVS/Entries b/gnu/testlet/java/io/ObjectInputStream/CVS/Entries
new file mode 100644
index 00000000..c6db300c
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/CVS/Entries
@@ -0,0 +1,7 @@
+/ClassLoaderTest.java/1.2/Thu Feb 17 19:30:04 2005//
+/ReadResolveHelper.java/1.1/Sat Nov 12 21:05:51 2005//
+/TestObjectInputValidation.java/1.2/Mon Oct 31 20:44:19 2005//
+/readResolve.java/1.1/Sat Nov 12 21:05:51 2005//
+/registerValidation.java/1.3/Mon Oct 31 20:44:19 2005//
+/security.java/1.5/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/io/ObjectInputStream/CVS/Repository b/gnu/testlet/java/io/ObjectInputStream/CVS/Repository
new file mode 100644
index 00000000..e294215e
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ObjectInputStream
diff --git a/gnu/testlet/java/io/ObjectInputStream/CVS/Root b/gnu/testlet/java/io/ObjectInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java b/gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java
new file mode 100644
index 00000000..787e044f
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/ClassLoaderTest.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Free Software Foundation
+
+// 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.java.io.ObjectInputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.*;
+import java.lang.reflect.*;
+
+/**
+ * This test checks that ObjectInputStream.readObject() resolves objects
+ * in the stream using the correct ClassLoader, based on the context it is
+ * called from.
+ */
+public class ClassLoaderTest implements Testlet
+{
+ static class MyClassLoader extends ClassLoader
+ {
+ public Class defineClass(InputStream is, String name)
+ throws ClassNotFoundException, IOException
+ {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ byte[] buf = new byte[512];
+ int len, written;
+ while (true)
+ {
+ len = is.read(buf, 0, buf.length);
+ if (len == -1)
+ break;
+ written = 0;
+ while (written < len)
+ {
+ os.write(buf, written, len - written);
+ written += len;
+ }
+ }
+
+ byte[] classData = os.toByteArray();
+
+ return defineClass(name, classData, 0, classData.length);
+ }
+ }
+
+ public static class MyClass implements Serializable
+ {
+ int i = 555;
+
+ public static Object deserialize(byte[] serData)
+ throws IOException, ClassNotFoundException
+ {
+ ByteArrayInputStream bis = new ByteArrayInputStream(serData);
+ ObjectInputStream ois = new ObjectInputStream(bis);
+ Object obj = ois.readObject();
+ ois.close();
+ return obj;
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyClassLoader loader = new MyClassLoader();
+ ClassLoader sysLoader = getClass().getClassLoader();
+
+ Class cl;
+ harness.checkPoint("read the file");
+ try {
+ cl = loader.defineClass(getClass()
+ .getResourceAsStream("ClassLoaderTest$MyClass.class"),
+ "gnu.testlet.java.io.ObjectInputStream.ClassLoaderTest$MyClass");
+ harness.check(true);
+ } catch(Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ return;
+ }
+
+ harness.check(cl.getClassLoader() == loader, "Class has correct classloader");
+
+ // Now the fun part. Pipe an instance of MyClass through an Object
+ // stream. Depending on which class-context we deserialize it in, the
+ // resulting instance should have a different ClassLoader (and class).
+
+ harness.checkPoint ("Deserialized objects have correct ClassLoader");
+
+ final byte[] serData;
+ final Object obj;
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(cl.newInstance());
+ oos.close();
+ serData = bos.toByteArray();
+
+ obj = MyClass.deserialize(serData);
+ harness.check(obj.getClass().getClassLoader() == sysLoader);
+ } catch(Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ return;
+ }
+ //System.out.println (obj.getClass().getClassLoader() == loader);
+
+ harness.checkPoint("Class equality (==)");
+ try {
+ Method m = cl.getMethod("deserialize", new Class[] {byte[].class});
+ Object obj2 = m.invoke(null, new Object[] {serData});
+ harness.check(obj2.getClass().getClassLoader() == loader);
+ //System.out.println (obj2.getClass().getClassLoader() == loader);
+
+ harness.check (obj.getClass() != obj2.getClass());
+ } catch(Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputStream/ReadResolveHelper.java b/gnu/testlet/java/io/ObjectInputStream/ReadResolveHelper.java
new file mode 100644
index 00000000..18040968
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/ReadResolveHelper.java
@@ -0,0 +1,59 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.java.io.ObjectInputStream;
+
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+
+/**
+ * Helper class for readResolve. Provides a readResolve method and depending on
+ * the value given to the constructor throws different error and exception types
+ * for testing or returns successfully in the default case.
+ */
+public class ReadResolveHelper implements Serializable
+{
+ public int value;
+
+ public ReadResolveHelper(int value)
+ {
+ this.value = value;
+ }
+
+ protected Object readResolve() throws ObjectStreamException
+ {
+ switch (value)
+ {
+ case 1: // any error
+ throw new Error();
+ case 2: // runtime exception
+ throw new RuntimeException("RuntimeException");
+ case 3: // objectstreamexception
+ throw new InvalidObjectException("InvalidObjectException");
+ default:
+ return new ReadResolveHelper(4);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java b/gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java
new file mode 100644
index 00000000..5820dd78
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/TestObjectInputValidation.java
@@ -0,0 +1,93 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.io.ObjectInputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectInputValidation;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+class TestObjectInputValidation implements ObjectInputValidation, Serializable {
+ ArrayList validated;
+ private String name;
+ private int priority;
+ TestObjectInputValidation object;
+
+ public TestObjectInputValidation(String name)
+ {
+ this.name = name;
+ this.priority = 10;
+ this.object = this;
+ }
+
+ // Registers with priority for given object.
+ public TestObjectInputValidation(int priority,
+ TestObjectInputValidation object)
+ {
+ this.priority = priority;
+ this.object = object;
+ }
+
+ public void validateObject()
+ {
+ if (object.validated == null)
+ object.validated = new ArrayList();
+ object.validated.add(new Integer(priority));
+ }
+
+ private void writeObject(ObjectOutputStream stream) throws IOException
+ {
+ stream.defaultWriteObject();
+ }
+
+ private void readObject(ObjectInputStream stream)
+ throws IOException, ClassNotFoundException
+ {
+ stream.registerValidation(this, 10);
+ stream.registerValidation(new TestObjectInputValidation(-10, this), -10);
+ stream.defaultReadObject();
+ stream.registerValidation(this, 12); // Again with other priority
+ stream.registerValidation(new TestObjectInputValidation(-12, this), -12);
+ stream.registerValidation(new TestObjectInputValidation(11, this), 11);
+ }
+
+ // Ignores validated list and object.
+ public boolean equals(Object o)
+ {
+ if (o instanceof TestObjectInputValidation)
+ {
+ TestObjectInputValidation other = (TestObjectInputValidation) o;
+ return this.name.equals(other.name)
+ && this.priority == other.priority;
+ }
+ return false;
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputStream/readResolve.java b/gnu/testlet/java/io/ObjectInputStream/readResolve.java
new file mode 100644
index 00000000..4e6356ee
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/readResolve.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.1
+//Uses: ReadResolveHelper
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.java.io.ObjectInputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Tests readResolve implementation. Tests are done to see if readResolve is
+ * actually invoked and if all exception types are passed through to the caller.
+ */
+public class readResolve implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ReadResolveHelper test, test_deserialized;
+ ByteArrayOutputStream buffer;
+ ObjectOutput out;
+ ObjectInput in;
+
+ harness.checkPoint("readResolve called");
+ test = new ReadResolveHelper(5); // tests default
+ test_deserialized = null;
+
+ try
+ {
+ buffer = new ByteArrayOutputStream();
+ out = new ObjectOutputStream(buffer);
+ out.writeObject(test);
+ out.close();
+ in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ test_deserialized = (ReadResolveHelper) in.readObject();
+ in.close();
+
+ harness.check(test_deserialized.value, 4);
+ }
+ catch (Throwable e)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("error thrown");
+ test = new ReadResolveHelper(1); // tests case 1
+ test_deserialized = null;
+
+ try
+ {
+ buffer = new ByteArrayOutputStream();
+ out = new ObjectOutputStream(buffer);
+ out.writeObject(test);
+ out.close();
+ in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ test_deserialized = (ReadResolveHelper) in.readObject();
+ in.close();
+
+ harness.check(false);
+ }
+ catch (Throwable e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("runtime exception thrown");
+ test = new ReadResolveHelper(2); // tests case 2
+ test_deserialized = null;
+
+ try
+ {
+ buffer = new ByteArrayOutputStream();
+ out = new ObjectOutputStream(buffer);
+ out.writeObject(test);
+ out.close();
+ in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ test_deserialized = (ReadResolveHelper) in.readObject();
+ in.close();
+
+ harness.check(false);
+ }
+ catch (Throwable e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("InvalidObjectException thrown");
+ test = new ReadResolveHelper(3); // tests case 3
+ test_deserialized = null;
+
+ try
+ {
+ buffer = new ByteArrayOutputStream();
+ out = new ObjectOutputStream(buffer);
+ out.writeObject(test);
+ out.close();
+ in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ test_deserialized = (ReadResolveHelper) in.readObject();
+ in.close();
+
+ harness.check(false);
+ }
+ catch (Throwable e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectInputStream/registerValidation.java b/gnu/testlet/java/io/ObjectInputStream/registerValidation.java
new file mode 100644
index 00000000..ae032f11
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/registerValidation.java
@@ -0,0 +1,89 @@
+// Tags: JDK1.1
+// Uses: TestObjectInputValidation
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.io.ObjectInputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectInputValidation;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * Some checks for registerValidation() method of the {@link ObjectInputStream} class.
+ */
+public class registerValidation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestObjectInputValidation t1 = new TestObjectInputValidation("Name1");
+ TestObjectInputValidation t2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(t1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ t2 = (TestObjectInputValidation) in.readObject();
+ in.close();
+
+ harness.check(t2, t1); // name and priority the same
+ harness.check(t2.object, t2); // has self-reference
+ harness.check(t2.validated != null);
+
+ Object[] ps = t2.validated.toArray();
+ int[] priorities = new int[ps.length];
+ for (int i = 0; i < ps.length; i++)
+ priorities[i] = ((Integer) ps[i]).intValue();
+ harness.check(priorities != null);
+ harness.check(priorities.length, 5);
+ harness.check(priorities[0], -12);
+ harness.check(priorities[1], -10);
+ harness.check(priorities[2], 10);
+ harness.check(priorities[3], 11);
+ harness.check(priorities[4], 10); // The priority 12 "this" again.
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false, e.toString());
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectInputStream/security.java b/gnu/testlet/java/io/ObjectInputStream/security.java
new file mode 100644
index 00000000..cbde5bf4
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectInputStream/security.java
@@ -0,0 +1,108 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.ObjectInputStream;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.SerializablePermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ TestObjectInputStream teststream = new TestObjectInputStream();
+
+ Permission[] enableSubclassImplementation = new Permission[] {
+ new SerializablePermission("enableSubclassImplementation")};
+
+ Permission[] enableSubstitution = new Permission[] {
+ new SerializablePermission("enableSubstitution")};
+
+ Permission[] noPerms = new Permission[] {};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.io.ObjectInputStream-ObjectInputStream
+ harness.checkPoint("constructor");
+ try {
+ sm.prepareChecks(enableSubclassImplementation);
+ new TestObjectInputStream();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.ObjectInputStream-enableResolveObject
+ harness.checkPoint("enableResolveObject");
+ try {
+ sm.prepareChecks(noPerms);
+ teststream.testEnableResolveObject(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(enableSubstitution);
+ teststream.testEnableResolveObject(true);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestObjectInputStream extends ObjectInputStream
+ {
+ public TestObjectInputStream() throws IOException
+ {
+ super();
+ }
+
+ public boolean testEnableResolveObject(boolean enable)
+ {
+ return enableResolveObject(enable);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectOutputStream/CVS/Entries b/gnu/testlet/java/io/ObjectOutputStream/CVS/Entries
new file mode 100644
index 00000000..47d86e07
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/StreamDataTest.java/1.1/Thu Feb 17 06:27:24 2005//
+/security.java/1.6/Mon Nov 15 15:55:51 2010//
+/useProtocolVersion.java/1.1/Thu Mar 23 19:32:01 2006//
+D
diff --git a/gnu/testlet/java/io/ObjectOutputStream/CVS/Repository b/gnu/testlet/java/io/ObjectOutputStream/CVS/Repository
new file mode 100644
index 00000000..4e0db78f
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ObjectOutputStream
diff --git a/gnu/testlet/java/io/ObjectOutputStream/CVS/Root b/gnu/testlet/java/io/ObjectOutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ObjectOutputStream/StreamDataTest.java b/gnu/testlet/java/io/ObjectOutputStream/StreamDataTest.java
new file mode 100644
index 00000000..604757b8
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/StreamDataTest.java
@@ -0,0 +1,137 @@
+// Tags: JDK1.1
+
+/* Copyright (c) 2005 by Free Software Foundation, Inc.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.ObjectOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamConstants;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+
+/* Basic tests for ObjectOutputStream compliance with the serialization data
+ stream specification. */
+public class StreamDataTest implements Testlet
+{
+ static int offset = 0;
+ static byte[] streamData;
+
+ static boolean compare(int[] expectedData)
+ {
+ try
+ {
+ for (int i=0; i < expectedData.length; i++)
+ if (streamData[offset + i] != (byte) (expectedData[i] & 0xff))
+ return false;
+ }
+ finally
+ {
+ offset += expectedData.length;
+ }
+
+ return true;
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ checkStream(harness);
+ }
+ catch (IOException x)
+ {
+ harness.fail(x.toString());
+ }
+ }
+
+ public void checkStream(TestHarness harness) throws IOException
+ {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(os);
+
+ oos.useProtocolVersion(ObjectStreamConstants.PROTOCOL_VERSION_2);
+
+ oos.writeInt(1);
+ oos.writeShort((short) 7);
+ oos.writeFloat(9.96601f);
+ oos.writeLong(-900000000000001l);
+ oos.writeShort((short) -1);
+ oos.writeDouble(Math.PI);
+ oos.writeByte((byte) 'z');
+ oos.writeDouble(Double.NaN);
+
+ byte[] bytes = new byte[] {-1,2,-3,4,-5};
+ oos.writeObject(bytes);
+ oos.writeByte(100);
+ oos.writeChar('X');
+ oos.close();
+
+ streamData = os.toByteArray();
+
+ harness.check(streamData.length, 76, "Stream length");
+
+ int[] data;
+ data = new int[] {0xac, 0xed};
+ harness.check(compare(data), "magic");
+ data = new int[] {0x0, 0x5};
+ harness.check(compare(data), "version");
+ data = new int[] {0x77, 0x25};
+ harness.check(compare(data), "TC_BLOCKDATA");
+ data = new int[] {0x0, 0x0, 0x0, 0x1};
+ harness.check(compare(data), "(int) 1");
+ data = new int[] {0x0, 0x7};
+ harness.check(compare(data), "(short) 7");
+ data = new int[] {0x41, 0x1f, 0x74, 0xc7};
+ harness.check(compare(data), "(float)");
+ data = new int[] {0xff, 0xfc, 0xcd, 0x74, 0x6b, 0xb3, 0xbf, 0xff};
+ harness.check(compare(data), "(long)");
+ data = new int[] {0xff, 0xff};
+ harness.check(compare(data), "(short) -1");
+ data = new int[] {0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18};
+ harness.check(compare(data), "(double) Math.PI");
+ data = new int[] {0x7a};
+ harness.check(compare(data), "(byte) 'z'");
+ data = new int[] {0x7f, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
+ harness.check(compare(data), "(double) Double.NaN");
+ data = new int[] {0x75};
+ harness.check(compare(data), "TC_NEWARRAY");
+ data = new int[] {0x72};
+ harness.check(compare(data), "TC_CLASSDESC");
+ data = new int[] {0x0, 0x2, 0x5b, 0x42};
+ harness.check(compare(data), "[B");
+ data = new int[] {0xac, 0xf3, 0x17, 0xf8, 0x6, 0x8, 0x54, 0xe0};
+ harness.check(compare(data), "SerialVersionUID");
+ data = new int[] {0x2, 0x0, 0x0, 0x78};
+ harness.check(compare(data), "Handle");
+ data = new int[] {0x70};
+ harness.check(compare(data), "ClassDescInfo");
+ data = new int[] {0x0, 0x0, 0x0, 0x5};
+ harness.check(compare(data), "array size (int) 5");
+ data = new int[] {0xff, 0x2, 0xfd, 0x4, 0xfb};
+ harness.check(compare(data), "int[] array data");
+ data = new int[] {0x77, 0x3};
+ harness.check(compare(data), "TC_BLOCKDATA");
+ data = new int[] {0x64};
+ harness.check(compare(data), "(byte) 100");
+ data = new int[] {0x0, 0x58};
+ harness.check(compare(data), "(char) 'X'");
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectOutputStream/security.java b/gnu/testlet/java/io/ObjectOutputStream/security.java
new file mode 100644
index 00000000..4bb4efdc
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/security.java
@@ -0,0 +1,177 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.ObjectOutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.SerializablePermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ TestObjectOutputStream teststream = new TestObjectOutputStream();
+
+ Permission[] enableSubclassImplementation = new Permission[] {
+ new SerializablePermission("enableSubclassImplementation")};
+
+ Permission[] enableSubstitution = new Permission[] {
+ new SerializablePermission("enableSubstitution")};
+
+ Permission[] noPerms = new Permission[] {};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.io.ObjectOutputStream-ObjectOutputStream
+ harness.checkPoint("constructor");
+ try {
+ sm.prepareChecks(enableSubclassImplementation);
+ new TestObjectOutputStream();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.ObjectOutputStream-ObjectOutputStream
+ harness.checkPoint("constructor with outputstream, no overrides");
+ try {
+ sm.prepareChecks(noPerms);
+ new TestObjectOutputStream(new ByteArrayOutputStream());
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.ObjectOutputStream-ObjectOutputStream
+ harness.checkPoint("constructor with outputstream, putFields override");
+ try {
+ sm.prepareChecks(enableSubclassImplementation);
+ new TestObjectOutputStream2(new ByteArrayOutputStream());
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.ObjectOutputStream-ObjectOutputStream
+ harness.checkPoint("constructor with outputstream, writeUnshared overrides");
+ try {
+ sm.prepareChecks(enableSubclassImplementation);
+ new TestObjectOutputStream3(new ByteArrayOutputStream());
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.ObjectOutputStream-enableReplaceObject
+ harness.checkPoint("enableReplaceObject");
+ try {
+ sm.prepareChecks(noPerms);
+ teststream.testEnableReplaceObject(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(enableSubstitution);
+ teststream.testEnableReplaceObject(true);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestObjectOutputStream extends ObjectOutputStream
+ {
+ public TestObjectOutputStream() throws IOException
+ {
+ super();
+ }
+
+ public TestObjectOutputStream(OutputStream out) throws IOException
+ {
+ super(out);
+ }
+
+ public boolean testEnableReplaceObject(boolean enable)
+ {
+ return enableReplaceObject(enable);
+ }
+ }
+
+ private static class TestObjectOutputStream2 extends ObjectOutputStream
+ {
+ public TestObjectOutputStream2(OutputStream out) throws IOException
+ {
+ super(out);
+ }
+
+ public ObjectOutputStream.PutField putFields() throws IOException
+ {
+ return null;
+ }
+ }
+
+ private static class TestObjectOutputStream3 extends ObjectOutputStream
+ {
+ public TestObjectOutputStream3(OutputStream out) throws IOException
+ {
+ super(out);
+ }
+
+ public void writeUnshared(Object obj) throws IOException
+ {
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/io/ObjectOutputStream/useProtocolVersion.java b/gnu/testlet/java/io/ObjectOutputStream/useProtocolVersion.java
new file mode 100644
index 00000000..480e612f
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectOutputStream/useProtocolVersion.java
@@ -0,0 +1,106 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.io.ObjectOutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the correct behaviour of useProtocolVersion
+ */
+public class useProtocolVersion implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ String toSerialize = "Hello";
+
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(bytes);
+
+ try
+ {
+ // setting must be allowed
+ out.useProtocolVersion(ObjectStreamConstants.PROTOCOL_VERSION_1);
+ harness.check(true);
+ }
+ catch (RuntimeException e)
+ {
+ harness.check(false);
+ }
+
+ // if only normal data is written
+ // a subsequent call to useProtocolVersion must succeed also
+ out.writeInt(4);
+
+ try
+ {
+ out.useProtocolVersion(ObjectStreamConstants.PROTOCOL_VERSION_1);
+ harness.check(true);
+ }
+ catch (IllegalStateException e)
+ {
+ harness.check(false);
+ }
+
+ // as soon as the first object is serialized
+ // subsequent calls must throw an exception
+ out.writeObject(toSerialize);
+
+ try
+ {
+ out.useProtocolVersion(ObjectStreamConstants.PROTOCOL_VERSION_1);
+ harness.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ harness.check(true);
+ }
+
+ // use new stream
+ out = new ObjectOutputStream(bytes);
+
+ // wrong versions must throw IllegalArgumentException
+ try
+ {
+ out.useProtocolVersion(4);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+ catch (IOException e)
+ {
+ harness.fail("Unexpected exception occured.");
+ harness.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/A.java b/gnu/testlet/java/io/ObjectStreamClass/A.java
new file mode 100644
index 00000000..f1605d54
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/A.java
@@ -0,0 +1,16 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Serializable;
+
+class A implements Serializable
+{
+ int b;
+ int a;
+
+ public int f () { return 0; }
+ float g () { return 3; }
+
+ private float c;
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/B.java b/gnu/testlet/java/io/ObjectStreamClass/B.java
new file mode 100644
index 00000000..a79de269
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/B.java
@@ -0,0 +1,19 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+abstract class B extends A
+{
+ private B (int[] ar) {}
+ public B () {}
+ public static void foo () {}
+ public abstract void absfoo ();
+
+ private static String s;
+ public int[] a;
+
+ static
+ {
+ s = "hello";
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/C.java b/gnu/testlet/java/io/ObjectStreamClass/C.java
new file mode 100644
index 00000000..a3cc10c6
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/C.java
@@ -0,0 +1,14 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+class C extends B implements Cloneable, Externalizable
+{
+ public void absfoo () {}
+ public void readExternal (ObjectInput i) {}
+ public void writeExternal (ObjectOutput o) {}
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/CVS/Entries b/gnu/testlet/java/io/ObjectStreamClass/CVS/Entries
new file mode 100644
index 00000000..2ad916df
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/CVS/Entries
@@ -0,0 +1,11 @@
+/A.java/1.1/Thu Nov 14 22:59:47 2002//
+/B.java/1.1/Thu Nov 14 22:59:47 2002//
+/C.java/1.1/Thu Nov 14 22:59:47 2002//
+/Defined.java/1.1/Thu Nov 14 22:59:47 2002//
+/DefinedNotFinal.java/1.1/Thu Nov 14 22:59:47 2002//
+/DefinedNotStatic.java/1.1/Thu Nov 14 22:59:47 2002//
+/NotSerial.java/1.1/Thu Nov 14 22:59:47 2002//
+/ProxyTest.java/1.2/Thu Jun 3 14:31:07 2004//
+/Serial.java/1.1/Thu Nov 14 22:59:47 2002//
+/Test.java/1.4/Thu Jun 3 14:31:07 2004//
+D
diff --git a/gnu/testlet/java/io/ObjectStreamClass/CVS/Repository b/gnu/testlet/java/io/ObjectStreamClass/CVS/Repository
new file mode 100644
index 00000000..0fd3a7ee
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/ObjectStreamClass
diff --git a/gnu/testlet/java/io/ObjectStreamClass/CVS/Root b/gnu/testlet/java/io/ObjectStreamClass/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/ObjectStreamClass/Defined.java b/gnu/testlet/java/io/ObjectStreamClass/Defined.java
new file mode 100644
index 00000000..05cc364f
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/Defined.java
@@ -0,0 +1,11 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Serializable;
+
+class Defined implements Serializable
+{
+ static final long serialVersionUID = 17;
+}
+
diff --git a/gnu/testlet/java/io/ObjectStreamClass/DefinedNotFinal.java b/gnu/testlet/java/io/ObjectStreamClass/DefinedNotFinal.java
new file mode 100644
index 00000000..774d3fbc
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/DefinedNotFinal.java
@@ -0,0 +1,10 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Serializable;
+
+class DefinedNotFinal implements Serializable
+{
+ static long serialVersionUID = 17;
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/DefinedNotStatic.java b/gnu/testlet/java/io/ObjectStreamClass/DefinedNotStatic.java
new file mode 100644
index 00000000..230c89ee
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/DefinedNotStatic.java
@@ -0,0 +1,10 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Serializable;
+
+class DefinedNotStatic implements Serializable
+{
+ final long serialVersionUID = 17;
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/NotSerial.java b/gnu/testlet/java/io/ObjectStreamClass/NotSerial.java
new file mode 100644
index 00000000..4a0da54c
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/NotSerial.java
@@ -0,0 +1,5 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+class NotSerial {}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java b/gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java
new file mode 100644
index 00000000..caccae6f
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/ProxyTest.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.3
+
+/* ProxyTest.java -- Tests ObjectStreamClass class for Proxy classes
+
+ Copyright (c) 2003 by Free Software Foundation, Inc.
+ Written by Mark Wielaard <mark@klomp.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.io.ObjectStreamClass;
+import java.io.ObjectStreamField;
+
+public class ProxyTest implements Testlet, InvocationHandler
+{
+
+ /** Do nothing method to implement InvocationHandler */
+ public Object invoke(Object p, Method m, Object[] os) { return null; }
+
+ public void test (TestHarness harness)
+ {
+ Class pc = Proxy.getProxyClass(this.getClass().getClassLoader(),
+ new Class[] { Comparable.class });
+ ObjectStreamClass osc = ObjectStreamClass.lookup (pc);
+
+ harness.check(osc.getSerialVersionUID(), 0, "zero serialVersionUID");
+ ObjectStreamField[] osfs = osc.getFields();
+ harness.check(osfs != null && osfs.length == 0, "zero ObjectStreamFields");
+ harness.check(osc.getField("any"), null, "getField(any) returns null");
+ harness.check(osc.getField("h"), null, "getField(h) returns null");
+ }
+}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/Serial.java b/gnu/testlet/java/io/ObjectStreamClass/Serial.java
new file mode 100644
index 00000000..a0d4eb1b
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/Serial.java
@@ -0,0 +1,7 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import java.io.Serializable;
+
+class Serial implements Serializable {}
diff --git a/gnu/testlet/java/io/ObjectStreamClass/Test.java b/gnu/testlet/java/io/ObjectStreamClass/Test.java
new file mode 100644
index 00000000..4fe093bd
--- /dev/null
+++ b/gnu/testlet/java/io/ObjectStreamClass/Test.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.1
+// Uses: A B C Defined DefinedNotFinal DefinedNotStatic NotSerial Serial
+
+/* Test.java -- Tests ObjectStreamClass class
+
+ Copyright (c) 1998, 2002 by Free Software Foundation, Inc.
+ Written by Geoff Berry <gcb@gnu.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.io.ObjectStreamClass;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.ObjectStreamClass;
+import java.util.Vector;
+
+public class Test implements Testlet
+{
+ public void testLookup (Class cl, boolean is_null)
+ {
+ ObjectStreamClass osc = ObjectStreamClass.lookup (cl);
+ harness.check (is_null ? osc == null : osc != null);
+ }
+
+ public void testGetName (Class cl, String name)
+ {
+ harness.check (ObjectStreamClass.lookup (cl).getName (), name);
+ }
+
+ public void testToString (Class cl, String str, long uid)
+ {
+ String s = ObjectStreamClass.lookup (cl).toString ();
+ harness.check (s.indexOf(str) != -1
+ || s.indexOf(Long.toString(uid)) != -1,
+ "Should contain '" + str + "' or '" + uid + "'");
+ }
+
+ public void testForClass (Class cl, Class clazz)
+ {
+ harness.check (ObjectStreamClass.lookup (cl).forClass (), clazz);
+ }
+
+ public void testSUID (Class cl, long suid)
+ {
+ harness.check (ObjectStreamClass.lookup (cl).getSerialVersionUID (), suid);
+ }
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ // lookup
+ harness.checkPoint ("lookup");
+ testLookup (Serial.class, false);
+ testLookup (NotSerial.class, true);
+
+ // getName
+ harness.checkPoint ("getName");
+ testGetName (java.lang.String.class, "java.lang.String");
+ testGetName (java.util.Hashtable.class, "java.util.Hashtable");
+
+ // toString
+ harness.checkPoint ("toString");
+ testToString (java.lang.String.class,
+ "java.lang.String", -6849794470754667710L);
+
+ // forClass
+ harness.checkPoint ("forClass");
+ testForClass (java.lang.String.class, java.lang.String.class);
+ testForClass (java.util.Vector.class, (new Vector ()).getClass ());
+
+ // getSerialVersionUID
+ harness.checkPoint ("getSerialVersionUID");
+ testSUID (A.class, -4758524860474883287L);
+ testSUID (B.class, -5709768504584827290L);
+
+ // NOTE: this fails for JDK 1.1.5v5 on linux because a non-null
+ // jmethodID is returned from
+ // GetStaticMethodID (env, C, "<clinit>", "()V")
+ // even though class C does not have a class initializer.
+ // The JDK's serialver tool does not have this problem somehow.
+ // I have not tested this on other platforms.
+ testSUID (C.class, 7295418696978364872L);
+
+ testSUID (Defined.class, 17);
+ testSUID (DefinedNotStatic.class, -4424277244062554359L);
+ testSUID (DefinedNotFinal.class, -1176535035944461302L);
+ testSUID (A[].class, 3317986791243421446L);
+ }
+
+ TestHarness harness;
+}
diff --git a/gnu/testlet/java/io/OutputStream/CVS/Entries b/gnu/testlet/java/io/OutputStream/CVS/Entries
new file mode 100644
index 00000000..82617a90
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Fri Jan 3 02:14:42 2003//
+D
diff --git a/gnu/testlet/java/io/OutputStream/CVS/Repository b/gnu/testlet/java/io/OutputStream/CVS/Repository
new file mode 100644
index 00000000..005f8b02
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/OutputStream
diff --git a/gnu/testlet/java/io/OutputStream/CVS/Root b/gnu/testlet/java/io/OutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/OutputStream/Test.java b/gnu/testlet/java/io/OutputStream/Test.java
new file mode 100644
index 00000000..c956657e
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStream/Test.java
@@ -0,0 +1,80 @@
+// Test for OutputStream methods
+
+// Written by Daryl Lee (dol@sources.redhat.com)
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.OutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class Test extends OutputStream implements Testlet
+{
+ private static final int LEN = 100;
+ private byte[] buf;
+ private int index;
+
+ public Test()
+ {
+ super();
+ buf = new byte[LEN];
+ index = 0;
+ }
+
+ public final void write(int c) throws IOException
+ {
+ buf[index++] = (byte) c;
+ }
+
+ // a utility method for testing
+ public String toString()
+ {
+ return new String(buf, 0, index);
+ }
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ String tstr = "ABCDEFGH";
+ Test ts = new Test();
+ ts.write(tstr.charAt(0)); // 'A'
+ harness.check(true,"write(int)");
+ byte[] cbuf = new byte[8];
+ tstr.getBytes(0, 8, cbuf, 0);
+ ts.write(cbuf, 0, 4); // 'AABCD'
+ harness.check(true,"write(byte[], off, len)");
+ ts.write(cbuf); // 'AABCDABCDEFGH'
+ ts.flush();
+ harness.check(true, "flush()");
+ harness.check(ts.toString(), "AABCDABCDEFGH", "Wrote all characters okay");
+ ts.close ();
+ harness.check(true, "close()");
+
+ }
+ catch (IOException e)
+ {
+ harness.check(false, "IOException unexpected");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/OutputStreamWriter/CVS/Entries b/gnu/testlet/java/io/OutputStreamWriter/CVS/Entries
new file mode 100644
index 00000000..486a7a91
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStreamWriter/CVS/Entries
@@ -0,0 +1,2 @@
+/jdk11.java/1.4/Sat Mar 15 16:02:04 2003//
+D
diff --git a/gnu/testlet/java/io/OutputStreamWriter/CVS/Repository b/gnu/testlet/java/io/OutputStreamWriter/CVS/Repository
new file mode 100644
index 00000000..853e2272
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStreamWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/OutputStreamWriter
diff --git a/gnu/testlet/java/io/OutputStreamWriter/CVS/Root b/gnu/testlet/java/io/OutputStreamWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStreamWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/OutputStreamWriter/jdk11.java b/gnu/testlet/java/io/OutputStreamWriter/jdk11.java
new file mode 100644
index 00000000..ee951f16
--- /dev/null
+++ b/gnu/testlet/java/io/OutputStreamWriter/jdk11.java
@@ -0,0 +1,79 @@
+// Test for OutputStreamWriter methods
+
+// Written by Daryl Lee (dol@sources.redhat.com)
+// Elaboration of except.java by paul@dawa.demon.co.uk
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.OutputStreamWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.OutputStreamWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+public class jdk11 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ String tstr = "ABCDEFGH";
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ OutputStreamWriter osw = new OutputStreamWriter (baos); //Default encoding
+ harness.check(true, "OutputStreamWriter(writer)");
+ harness.check(osw.getEncoding() != null,
+ "non-null getEncoding");
+
+ osw.write(tstr.charAt(0)); // 'A'
+ harness.check(true,"write(int)");
+ osw.write("ABCDE", 1, 3); // 'ABCD'
+ harness.check(true,"write(string, off, len)");
+ char[] cbuf = new char[8];
+ tstr.getChars(4, 8, cbuf, 0);
+ osw.write(cbuf, 0, 4); // 'ABCDEFGH'
+ harness.check(true,"write(char[], off, len)");
+ osw.flush();
+ harness.check(true, "flush()");
+ harness.check(baos.toString(), tstr, "Wrote all characters okay");
+ osw.close ();
+ harness.check(osw.getEncoding(), null,
+ "null encoding after close");
+ ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+ // ISO-8859-1 is a required encoding and this is the
+ // "preferred" name, latin1 is a legal alias
+ // see also http://www.iana.org/assignments/character-sets
+ OutputStreamWriter osw2 = new OutputStreamWriter(baos2, "ISO-8859-1");
+ // Note that for java.io the canonical name as returned by
+ // getEncoding() must be the "historical" name. ISO8859_1.
+ harness.check(osw2.getEncoding(), "ISO8859_1", "OutputStreamWriter(writer, encoding)");
+ osw2.close ();
+ osw2 = new OutputStreamWriter(baos2, "latin1");
+ harness.check(osw2.getEncoding(), "ISO8859_1", "OutputStreamWriter(writer, encoding) // alias");
+ osw2.close ();
+
+ }
+ catch (IOException e)
+ {
+ harness.check(false, "IOException unexpected");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/PipedReaderWriter/CVS/Entries b/gnu/testlet/java/io/PipedReaderWriter/CVS/Entries
new file mode 100644
index 00000000..ef800a85
--- /dev/null
+++ b/gnu/testlet/java/io/PipedReaderWriter/CVS/Entries
@@ -0,0 +1,3 @@
+/PipedTestWriter.java/1.2/Sat Nov 23 23:37:17 2002//
+/Test.java/1.5/Tue Dec 24 15:07:14 2002//
+D
diff --git a/gnu/testlet/java/io/PipedReaderWriter/CVS/Repository b/gnu/testlet/java/io/PipedReaderWriter/CVS/Repository
new file mode 100644
index 00000000..444f87e9
--- /dev/null
+++ b/gnu/testlet/java/io/PipedReaderWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PipedReaderWriter
diff --git a/gnu/testlet/java/io/PipedReaderWriter/CVS/Root b/gnu/testlet/java/io/PipedReaderWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PipedReaderWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java b/gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java
new file mode 100644
index 00000000..1e93c5fe
--- /dev/null
+++ b/gnu/testlet/java/io/PipedReaderWriter/PipedTestWriter.java
@@ -0,0 +1,71 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.PipedReaderWriter;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+class PipedTestWriter implements Runnable
+{
+
+String str;
+StringReader sbr;
+PipedWriter out;
+TestHarness harness;
+
+public
+PipedTestWriter(TestHarness harness)
+{
+ this.harness = harness;
+
+ str = "In college, there was a tradition going for a while that people\n" +
+ "would get together and hang out at Showalter Fountain - in the center\n" +
+ "of Indiana University's campus - around midnight. It was mostly folks\n" +
+ "from the computer lab and just people who liked to use the Forum\n" +
+ "bbs system on the VAX. IU pulled the plug on the Forum after I left\n" +
+ "despite its huge popularity. Now they claim they are just giving\n" +
+ "students what they want by cutting deals to make the campus all\n" +
+ "Microsoft.\n";
+
+ sbr = new StringReader(str);
+
+ out = new PipedWriter();
+}
+
+public PipedWriter
+getWriter()
+{
+ return(out);
+}
+
+public String
+getStr()
+{
+ return(str);
+}
+
+public void
+run()
+{
+ char[] buf = new char[32];
+
+ int chars_read;
+
+ try
+ {
+ int b = sbr.read();
+ out.write(b);
+
+ while ((chars_read = sbr.read(buf)) != -1)
+ out.write(buf, 0, chars_read);
+ out.flush();
+ out.close();
+ }
+ catch(IOException e)
+ {
+ harness.debug("In Writer: " + e);
+ harness.check(false);
+ }
+}
+
+} // PipedTestWriter
+
diff --git a/gnu/testlet/java/io/PipedReaderWriter/Test.java b/gnu/testlet/java/io/PipedReaderWriter/Test.java
new file mode 100644
index 00000000..47d4a67d
--- /dev/null
+++ b/gnu/testlet/java/io/PipedReaderWriter/Test.java
@@ -0,0 +1,84 @@
+/*************************************************************************
+/* Test.java -- Tests Piped{Reader,Writer}
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+// Uses: PipedTestWriter
+
+package gnu.testlet.java.io.PipedReaderWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ // Set up a reasonable buffer size for this test if one is not already
+ // specified. This affects Classpath only.
+ //String prop = System.getProperty("gnu.java.io.pipe_size");
+ //if (prop == null)
+ // System.setProperty("gnu.java.io.pipe_size", "32");
+ // Hmm, we need JDK 1.2 for the above
+
+ try
+ {
+ // Set up the thread to write
+ PipedTestWriter ptw = new PipedTestWriter(harness);
+ String str = ptw.getStr();
+ PipedWriter pw = ptw.getWriter();
+
+ // Now set up our reader
+ PipedReader pr = new PipedReader();
+ pr.connect(pw);
+ new Thread(ptw).start();
+
+ char[] buf = new char[12];
+ int chars_read, total_read = 0;
+ while((chars_read = pr.read(buf,0,buf.length)) != -1)
+ {
+ harness.debug(new String(buf, 0, chars_read), false);
+ System.gc(); // A short delay
+ total_read += chars_read;
+ }
+ pr.close(); // Make sure close() method is implemented
+ harness.check(total_read, str.length(), "total_read");
+ // Check for connect() method on writer
+ // Set up the thread to write
+ PipedTestWriter ptw2 = new PipedTestWriter(harness);
+ PipedWriter pw2 = ptw2.getWriter();
+
+ // Now set up our reader
+ PipedReader pr2 = new PipedReader();
+ pw2.connect(pr2);
+ harness.check(true, "writer.connect()");
+ }
+ catch (IOException e)
+ {
+ harness.debug("In reader: " + e);
+ harness.check(false);
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/PipedStream/CVS/Entries b/gnu/testlet/java/io/PipedStream/CVS/Entries
new file mode 100644
index 00000000..3d5936e9
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/CVS/Entries
@@ -0,0 +1,5 @@
+/PipedStreamTestWriter.java/1.3/Fri Feb 14 21:45:33 2003//
+/Test.java/1.5/Fri Feb 14 21:45:33 2003//
+/close.java/1.3/Thu Dec 26 18:58:52 2002//
+/receive.java/1.3/Sat Aug 5 23:21:59 2000//
+D
diff --git a/gnu/testlet/java/io/PipedStream/CVS/Repository b/gnu/testlet/java/io/PipedStream/CVS/Repository
new file mode 100644
index 00000000..42f09c17
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PipedStream
diff --git a/gnu/testlet/java/io/PipedStream/CVS/Root b/gnu/testlet/java/io/PipedStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java b/gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java
new file mode 100644
index 00000000..33c04af2
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/PipedStreamTestWriter.java
@@ -0,0 +1,89 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.io.PipedStream;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+class PipedStreamTestWriter implements Runnable
+{
+
+String str;
+StringBufferInputStream sbis;
+PipedOutputStream out;
+TestHarness harness;
+
+private boolean isReady = false;
+
+public
+PipedStreamTestWriter(TestHarness harness)
+{
+ this.harness = harness;
+
+ str = "I went to work for Andersen Consulting after I graduated\n" +
+ "from college. They sent me to their training facility in St. Charles,\n" +
+ "Illinois and tried to teach me COBOL. I didn't want to learn it.\n" +
+ "The instructors said I had a bad attitude and I got a green sheet\n" +
+ "which is a nasty note in your file saying what a jerk you are.\n";
+
+ sbis = new StringBufferInputStream(str);
+
+ out = new PipedOutputStream();
+}
+
+public PipedOutputStream
+getStream()
+{
+ return(out);
+}
+
+public String
+getStr()
+{
+ return(str);
+}
+
+public synchronized void
+waitTillReady()
+{
+ while (!isReady)
+ {
+ try
+ {
+ this.wait();
+ }
+ catch (InterruptedException ie) { /* ignore */ }
+ }
+}
+
+public void
+run()
+{
+ byte[] buf = new byte[32];
+
+ int bytes_read;
+
+ try
+ {
+ int b = sbis.read();
+ out.write(b);
+
+ synchronized(this)
+ {
+ isReady = true;
+ this.notify();
+ }
+
+ while ((bytes_read = sbis.read(buf)) != -1)
+ out.write(buf, 0, bytes_read);
+ out.flush();
+ out.close();
+ }
+ catch(IOException e)
+ {
+ harness.debug("In writer: " + e);
+ harness.check(false);
+ }
+}
+
+}
+
diff --git a/gnu/testlet/java/io/PipedStream/Test.java b/gnu/testlet/java/io/PipedStream/Test.java
new file mode 100644
index 00000000..3f45672d
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/Test.java
@@ -0,0 +1,96 @@
+/*************************************************************************
+/* Test.java -- Tests Piped{Input,Output}Stream
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+// Uses: PipedStreamTestWriter
+
+package gnu.testlet.java.io.PipedStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ // Set up a reasonable buffer size for this test if one is not already
+ // specified. This is for Classpath only.
+ // String prop = System.getProperty("gnu.java.io.pipe_size");
+ // if (prop == null)
+ // System.setProperty("gnu.java.io.pipe_size", "32");
+ // Hmm. This appears to require JDK 1.2
+
+ try
+ {
+ // Set up the thread to write
+ PipedStreamTestWriter pstw = new PipedStreamTestWriter(harness);
+ String str = pstw.getStr();
+ PipedOutputStream pos = pstw.getStream();
+
+ // Now set up our reader
+ PipedInputStream pis = new PipedInputStream();
+ pis.connect(pos);
+ new Thread(pstw).start();
+ pstw.waitTillReady();
+ harness.check(pis.available() > 0, "available()");
+ byte[] buf = new byte[12];
+ int bytes_read, total_read = 0;
+ while((bytes_read = pis.read(buf)) != -1)
+ {
+ harness.debug(new String(buf, 0, bytes_read), false);
+ System.gc(); // A short delay
+ total_read += bytes_read;
+ }
+
+ harness.check(total_read, str.length(), "total_read");
+ }
+ catch (IOException e)
+ {
+ harness.debug("In input: " + e);
+ harness.check(false);
+ }
+
+
+ try // repeat just enough to test connect() on output stream
+ {
+ // Set up the thread to write
+ PipedStreamTestWriter pstw2 = new PipedStreamTestWriter(harness);
+ String str2 = pstw2.getStr();
+ PipedOutputStream pos2 = pstw2.getStream();
+
+ // Now set up our reader
+ PipedInputStream pis2 = new PipedInputStream();
+ pos2.connect(pis2); // check outputstream's connect() method
+ harness.check(true, "output.connect(input)");
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+
+
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/PipedStream/close.java b/gnu/testlet/java/io/PipedStream/close.java
new file mode 100644
index 00000000..63170ea7
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/close.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.0
+
+// This test is from Jeff Sturm.
+// It tests whether close() on a PipedInputStream will correctly
+// notify the writer.
+
+package gnu.testlet.java.io.PipedStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class close implements Runnable, Testlet {
+ Thread main;
+ PipedInputStream in;
+ PipedOutputStream out;
+ TestHarness harness;
+
+ public void run() {
+ try {
+ Thread.sleep(1000);
+ harness.debug("Closing pipe input stream:");
+ in.close();
+ Thread.sleep(1000);
+ harness.debug("Interrupting pipe reader:");
+ main.interrupt();
+ } catch (Throwable t) {
+ harness.debug(t);
+ }
+ }
+
+ public void test (TestHarness harness) {
+ int val = 23;
+ try {
+ close test = new close();
+ test.harness = harness;
+
+ test.main = Thread.currentThread();
+ test.out = new PipedOutputStream();
+ test.in = new PipedInputStream(test.out);
+
+ (new Thread(test)).start();
+
+ val = test.in.read();
+ } catch (InterruptedIOException t) {
+ harness.check(true,"read() interrupted okay");
+ } catch (IOException t) {
+ harness.fail("Unexpected IOException thrown");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/PipedStream/receive.java b/gnu/testlet/java/io/PipedStream/receive.java
new file mode 100644
index 00000000..462d50ed
--- /dev/null
+++ b/gnu/testlet/java/io/PipedStream/receive.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.0
+
+// Test PipedInputStream.receive().
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// Copyright (C) 2000 Red Hat, Inc.
+
+// 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.java.io.PipedStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class receive extends PipedInputStream implements Runnable, Testlet
+{
+ static Thread main;
+ static receive in;
+ static PipedOutputStream out;
+
+ receive (PipedOutputStream x) throws IOException
+ {
+ super(x);
+ }
+
+ public receive ()
+ {
+ }
+
+ public void run() {
+ try {
+ Thread.sleep(1000);
+ in.receive(23);
+ } catch (Throwable t) {
+ }
+ }
+
+ public void test (TestHarness harness) {
+ int val = -1;
+ try {
+ main = Thread.currentThread();
+ out = new PipedOutputStream();
+ in = new receive (out);
+
+ (new Thread(in)).start();
+
+ val = in.read();
+ } catch (Throwable t) {
+ val = -2;
+ }
+ harness.check (val, 23);
+ }
+}
diff --git a/gnu/testlet/java/io/PrintStream/CVS/Entries b/gnu/testlet/java/io/PrintStream/CVS/Entries
new file mode 100644
index 00000000..cec7419b
--- /dev/null
+++ b/gnu/testlet/java/io/PrintStream/CVS/Entries
@@ -0,0 +1,3 @@
+/encodings.java/1.3/Wed Nov 16 12:34:04 2005//
+/subclass.java/1.3/Sat Jul 20 01:30:41 2002//
+D
diff --git a/gnu/testlet/java/io/PrintStream/CVS/Repository b/gnu/testlet/java/io/PrintStream/CVS/Repository
new file mode 100644
index 00000000..bd67731d
--- /dev/null
+++ b/gnu/testlet/java/io/PrintStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PrintStream
diff --git a/gnu/testlet/java/io/PrintStream/CVS/Root b/gnu/testlet/java/io/PrintStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PrintStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PrintStream/encodings.java b/gnu/testlet/java/io/PrintStream/encodings.java
new file mode 100644
index 00000000..498f472d
--- /dev/null
+++ b/gnu/testlet/java/io/PrintStream/encodings.java
@@ -0,0 +1,95 @@
+// Copyright (c) 2005 Red Hat, Inc.
+// Written by Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.PrintStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class encodings implements Testlet
+{
+
+ private void test1 (TestHarness harness, String encoding,
+ String input, byte[] expected)
+ {
+ byte[] output = null;
+ try
+ {
+ ByteArrayOutputStream b = new ByteArrayOutputStream ();
+ PrintStream ps = null;
+ if (encoding == null)
+ {
+ ps = new PrintStream(b, false);
+ }
+ else
+ {
+ ps = new PrintStream(b, false, encoding);
+ }
+ ps.print(input);
+ ps.flush();
+ output = b.toByteArray();
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ }
+ if (output == null && expected == null)
+ {
+ harness.check(true);
+ return;
+ }
+ boolean result = (output != null && output.length == expected.length);
+ if (result)
+ {
+ for (int i = 0; i < output.length; i++)
+ {
+ if (output[i] != expected[i])
+ {
+ result = false;
+ break;
+ }
+ }
+ }
+ harness.check(result);
+ }
+
+ public void test (TestHarness harness)
+ {
+ String input = "abc";
+ byte[] expected = new byte[] {(byte)'a', (byte)'b', (byte)'c'};
+
+ test1 (harness, "ISO-8859-1", input, expected);
+ test1 (harness, "??UNSUPPORTED??", input, null);
+ /*
+ The result of setting the system property "file.encoding"
+ is uncertain.
+ String saved_encoding = System.getProperty("file.encoding");
+ System.setProperty ("file.encoding", "ISO-8859-1");
+ test1 (harness, null, input, expected);
+ System.setProperty ("file.encoding", "??UNSUPPORTED??");
+ test1 (harness, null, input, expected);
+ System.setProperty("file.encoding", saved_encoding);
+ */
+ }
+
+}
diff --git a/gnu/testlet/java/io/PrintStream/subclass.java b/gnu/testlet/java/io/PrintStream/subclass.java
new file mode 100644
index 00000000..6980803a
--- /dev/null
+++ b/gnu/testlet/java/io/PrintStream/subclass.java
@@ -0,0 +1,64 @@
+// Test simple forms of MessageFormat formatting.
+
+// Copyright (c) 2001, 2002 Red Hat, Inc.
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.io.PrintStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class subclass extends PrintStream implements Testlet
+{
+ public subclass ()
+ {
+ // Use dummy OutputStream
+ super (new ByteArrayOutputStream ());
+ }
+
+ public void setOutput (OutputStream x)
+ {
+ this.out = x;
+ }
+
+ public void test (TestHarness harness)
+ {
+ boolean ok = true;
+ try
+ {
+ // Set the underlying output stream and then write to it. We
+ // should get the right results.
+ ByteArrayOutputStream b = new ByteArrayOutputStream ();
+ setOutput (b);
+ print ("foo");
+ flush ();
+ ok = b.toString().equals ("foo");
+ }
+ catch (Throwable _)
+ {
+ ok = false;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/io/PrintWriter/CVS/Entries b/gnu/testlet/java/io/PrintWriter/CVS/Entries
new file mode 100644
index 00000000..7b38351b
--- /dev/null
+++ b/gnu/testlet/java/io/PrintWriter/CVS/Entries
@@ -0,0 +1,3 @@
+/checkError.java/1.1/Fri Mar 12 13:12:49 2004//
+/jdk11.java/1.3/Sat Aug 9 19:17:48 2003//
+D
diff --git a/gnu/testlet/java/io/PrintWriter/CVS/Repository b/gnu/testlet/java/io/PrintWriter/CVS/Repository
new file mode 100644
index 00000000..f3b7f285
--- /dev/null
+++ b/gnu/testlet/java/io/PrintWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PrintWriter
diff --git a/gnu/testlet/java/io/PrintWriter/CVS/Root b/gnu/testlet/java/io/PrintWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PrintWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PrintWriter/checkError.java b/gnu/testlet/java/io/PrintWriter/checkError.java
new file mode 100644
index 00000000..c6c28809
--- /dev/null
+++ b/gnu/testlet/java/io/PrintWriter/checkError.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+/* Test.java -- Tests PrintWriter
+/*
+/* Copyright (c) 2004 Free Software Foundation, Inc.
+/* Written by Mark Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PrintWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+public class checkError extends OutputStream implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Check for (no) error after close
+ PrintWriter p = new PrintWriter(new checkError());
+ harness.check(!p.checkError());
+ p.write("something");
+ harness.check(!p.checkError());
+ p.close();
+ harness.check(!p.checkError());
+ p.write("anotherthing");
+ harness.check(p.checkError());
+ }
+
+ // Mini OutputStream implementation
+ private boolean closed = false;
+ public void close()
+ {
+ closed = true;
+ }
+
+ public void write(int i) throws IOException
+ {
+ if (closed)
+ throw new IOException("closed stream");
+ }
+
+ public void flush() throws IOException
+ {
+ if (closed)
+ throw new IOException("closed stream");
+ }
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/PrintWriter/jdk11.java b/gnu/testlet/java/io/PrintWriter/jdk11.java
new file mode 100644
index 00000000..05970166
--- /dev/null
+++ b/gnu/testlet/java/io/PrintWriter/jdk11.java
@@ -0,0 +1,131 @@
+/*************************************************************************
+/* Test.java -- Tests PrintWriter
+/*
+/* Copyright (c) 1998, 2003 Free Software Foundation, Inc.
+/* Written by Daryl Lee (dolee@sources.redhat.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PrintWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.PrintWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.io.CharArrayWriter;
+
+public class jdk11 extends PrintWriter implements Testlet
+{
+
+public jdk11()
+{
+ this(new ByteArrayOutputStream());
+}
+
+jdk11(OutputStream os)
+{
+ super(os);
+}
+
+public void print(int i, boolean err)
+{
+ if (err)
+ {
+ this.setError();
+ }
+}
+
+public String toString()
+{
+ return ("ObjectString");
+}
+
+public void
+test(TestHarness harness)
+{
+// Test constructors first
+ ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+ PrintWriter pw1 = new PrintWriter(baos1);
+ harness.check(pw1 != null, "PrintWriter(OutputStream)");
+ ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+ PrintWriter pw2 = new PrintWriter(baos2, true);
+ harness.check(pw2 != null, "PrintWriter(OutputStream, boolean)");
+ CharArrayWriter caw1 = new CharArrayWriter();
+ PrintWriter pw3 = new PrintWriter(caw1);
+ harness.check(pw3 != null, "PrintWriter(Writer)");
+ CharArrayWriter caw2 = new CharArrayWriter();
+ PrintWriter pw4 = new PrintWriter(caw2);
+ harness.check(pw4 != null, "PrintWriter(Writer)");
+// Now test the methods
+ pw1.print(true);
+ pw1.print(false);
+ pw1.print('X');
+ char[] ca = {'A', 'B', 'C'};
+ pw1.print(ca);
+ double x = 3.14;
+ pw1.print(x);
+ float y = (float) 1.414;
+ pw1.print(y);
+ int i = 37;
+ pw1.print(i);
+ long l = 65537L;
+ pw1.print(l);
+ pw1.print(new jdk11());
+ pw1.print("XYZ");
+ pw1.write(ca);
+ pw1.write(ca,0,2);
+ pw1.write('Q');
+ pw1.write("JKL");
+ pw1.write("MNOPQ", 1, 2);
+ pw1.println();
+ pw1.println(true);
+ pw1.println(false);
+ pw1.println('X');
+ pw1.println(ca);
+ pw1.println(x);
+ pw1.println(y);
+ pw1.println(i);
+ pw1.println(l);
+ pw1.println(new jdk11());
+ pw1.println("XYZ");
+
+ pw1.flush();
+ harness.check(true, "flush()");
+ pw1.close();
+ harness.check(true, "close()");
+ String tst = "truefalseXABC3.141.4143765537ObjectStringXYZABCABQJKLNO\n" +
+ "true\nfalse\nX\nABC\n3.14\n1.414\n37\n65537\nObjectString\nXYZ\n";
+ harness.check(baos1.toString(), tst, "All characters printed okay");
+ harness.debug("Final output:" + baos1.toString());
+
+ // Set up to test setError() and checkError()
+ ByteArrayOutputStream baos3 = new ByteArrayOutputStream();
+ jdk11 tpw = new jdk11(baos3);
+ harness.check(!tpw.checkError(), "checkError");
+ tpw.print(3, true); // forces call to setError
+ harness.check(tpw.checkError(), "setError");
+
+ // Check for (no) error after close
+ PrintWriter p = new PrintWriter(baos3);
+ p.close();
+ harness.check(!p.checkError(), "checkError() after close()");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/PushbackInputStream/BufferOverflow.java b/gnu/testlet/java/io/PushbackInputStream/BufferOverflow.java
new file mode 100644
index 00000000..fc080010
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/BufferOverflow.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+/* BufferOverflow.java -- Tests PushbackInputStream buffer overflows.
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PushbackInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class BufferOverflow implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "Once when I was in fourth grade, my friend Lloyd\n" +
+ "Saltsgaver and I got in trouble for kicking a bunch of\n" +
+ "Kindergartners off the horse swings so we could play a game\n" +
+ "of 'road hog'\n";
+
+ try
+ {
+ PushbackInputStream pist = new PushbackInputStream(
+ new StringBufferInputStream(str), 10);
+
+ byte[] read_buf = new byte[12];
+
+ pist.read(read_buf);
+ pist.unread(read_buf);
+ harness.debug("Failed overflow test");
+ harness.check(false);
+ }
+ catch(IOException e)
+ {
+ harness.debug("Got expected exception: " + e);
+ harness.check(true);
+ }
+}
+
+} // class BufferOverflow
+
diff --git a/gnu/testlet/java/io/PushbackInputStream/CVS/Entries b/gnu/testlet/java/io/PushbackInputStream/CVS/Entries
new file mode 100644
index 00000000..29404930
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/BufferOverflow.java/1.1/Tue Dec 22 20:29:16 1998//
+/ProtectedVars.java/1.1/Tue Dec 22 20:29:16 1998//
+/Unread.java/1.3/Sun Oct 27 02:50:15 2002//
+D
diff --git a/gnu/testlet/java/io/PushbackInputStream/CVS/Repository b/gnu/testlet/java/io/PushbackInputStream/CVS/Repository
new file mode 100644
index 00000000..8a5db74a
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PushbackInputStream
diff --git a/gnu/testlet/java/io/PushbackInputStream/CVS/Root b/gnu/testlet/java/io/PushbackInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PushbackInputStream/ProtectedVars.java b/gnu/testlet/java/io/PushbackInputStream/ProtectedVars.java
new file mode 100644
index 00000000..c987fe03
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/ProtectedVars.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+/* ProtectedVars.java -- Test PushbackInputStream protected variables.
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PushbackInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends PushbackInputStream implements Testlet
+{
+
+public
+ProtectedVars(InputStream is, int size)
+{
+ super(is, size);
+}
+
+// For the test suite
+public
+ProtectedVars()
+{
+ super(null);
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "Once when I was in fourth grade, my friend Lloyd\n" +
+ "Saltsgaver and I got in trouble for kicking a bunch of\n" +
+ "Kindergartners off the horse swings so we could play a game\n" +
+ "of 'road hog'\n";
+
+ ProtectedVars pv = new ProtectedVars(new StringBufferInputStream(str), 15);
+
+ harness.check(pv.pos, pv.buf.length, "pst == buf.length");
+ harness.check(pv.buf.length, 15, "buf.length");
+}
+
+} // class ProtectedVars
+
diff --git a/gnu/testlet/java/io/PushbackInputStream/Unread.java b/gnu/testlet/java/io/PushbackInputStream/Unread.java
new file mode 100644
index 00000000..8f645f79
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackInputStream/Unread.java
@@ -0,0 +1,83 @@
+/*************************************************************************
+/* Unread.java -- PushbackInputStream basic unread tests.
+/*
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PushbackInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Unread implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "Once when I was in fourth grade, my friend Lloyd\n" +
+ "Saltsgaver and I got in trouble for kicking a bunch of\n" +
+ "Kindergartners off the horse swings so we could play a game\n" +
+ "of 'road hog'\n";
+
+ try
+ {
+ PushbackInputStream pist = new PushbackInputStream(
+ new StringBufferInputStream(str), 15);
+
+ harness.check(pist.available(), str.length(), "available()");
+ harness.check(!pist.markSupported(), "markSupported()");
+
+ byte[] read_buf1 = new byte[12];
+ byte[] read_buf2 = new byte[12];
+
+ pist.read(read_buf1);
+ pist.unread(read_buf1);
+ pist.read(read_buf2);
+
+ for (int i = 0; i < read_buf1.length; i++)
+ {
+ if (read_buf1[i] != read_buf2[i])
+ throw new IOException("Re-reading bytes gave different results");
+ }
+
+ pist.unread(read_buf2, 1, read_buf2.length - 1);
+ pist.unread(read_buf2[0]);
+
+ int bytes_read, total_read = 0;
+ while ((bytes_read = pist.read(read_buf1)) != -1)
+ {
+ harness.debug(new String(read_buf1, 0, bytes_read), false);
+ total_read += bytes_read;
+ }
+
+ harness.debug(str);
+ harness.check(total_read, str.length(), "total_read == str.length()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Unread
+
diff --git a/gnu/testlet/java/io/PushbackReader/BufferOverflow.java b/gnu/testlet/java/io/PushbackReader/BufferOverflow.java
new file mode 100644
index 00000000..11bfd0a4
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackReader/BufferOverflow.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+/* BufferOverflow.java - Test PushbackReader buffer overflows
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PushbackReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class BufferOverflow implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "I used to idolize my older cousin Kurt. I wanted to be\n" +
+ "just like him when I was a kid. (Now we are as different as night\n" +
+ "and day - but still like each other). One thing he did for a while\n" +
+ "was set traps for foxes thinking he would make money off sellnig furs.\n" +
+ "Now I never saw a fox in all my years of Southern Indiana. That\n" +
+ "didn't deter us. One time we went out in the middle of winter to\n" +
+ "check our traps. It was freezing and I stepped onto a frozen over\n" +
+ "stream. The ice broke and I got my foot soak. Despite the fact that\n" +
+ "it made me look like a girl, I turned around and went straight home.\n" +
+ "Good thing too since I couldn't even feel my foot by the time I got\n" +
+ "there.\n";
+
+ try
+ {
+ PushbackReader prt = new PushbackReader(new StringReader(str), 10);
+
+ char[] read_buf = new char[12];
+
+ prt.read(read_buf);
+ prt.unread(read_buf);
+ harness.debug("Did not throw expected buffer overflow exception");
+ harness.check(false);
+ }
+ catch(IOException e)
+ {
+ harness.check(true); // Yes, we expect this exception
+ }
+}
+
+} // class BufferOverflow
+
diff --git a/gnu/testlet/java/io/PushbackReader/CVS/Entries b/gnu/testlet/java/io/PushbackReader/CVS/Entries
new file mode 100644
index 00000000..ef075137
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackReader/CVS/Entries
@@ -0,0 +1,3 @@
+/BufferOverflow.java/1.1/Fri Dec 25 22:30:47 1998//
+/Unread.java/1.2/Thu Nov 14 01:34:12 2002//
+D
diff --git a/gnu/testlet/java/io/PushbackReader/CVS/Repository b/gnu/testlet/java/io/PushbackReader/CVS/Repository
new file mode 100644
index 00000000..c9b20141
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/PushbackReader
diff --git a/gnu/testlet/java/io/PushbackReader/CVS/Root b/gnu/testlet/java/io/PushbackReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/PushbackReader/Unread.java b/gnu/testlet/java/io/PushbackReader/Unread.java
new file mode 100644
index 00000000..a243056e
--- /dev/null
+++ b/gnu/testlet/java/io/PushbackReader/Unread.java
@@ -0,0 +1,94 @@
+/*************************************************************************
+/* Unread.java - Test basic unread functionality of PushbackReader
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.PushbackReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Unread implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "I used to idolize my older cousin Kurt. I wanted to be\n" +
+ "just like him when I was a kid. (Now we are as different as night\n" +
+ "and day - but still like each other). One thing he did for a while\n" +
+ "was set traps for foxes thinking he would make money off selling furs.\n" +
+ "Now I never saw a fox in all my years of Southern Indiana. That\n" +
+ "didn't deter us. One time we went out in the middle of winter to\n" +
+ "check our traps. It was freezing and I stepped onto a frozen over\n" +
+ "stream. The ice broke and I got my foot soaked. Despite the fact that\n" +
+ "it made me look like a girl, I turned around and went straight home.\n" +
+ "Good thing too since I couldn't even feel my foot by the time I got\n" +
+ "there.\n";
+
+ try
+ {
+ PushbackReader prt = new PushbackReader(
+ new StringReader(str), 15);
+
+ char[] read_buf1 = new char[12];
+ char[] read_buf2 = new char[12];
+
+ boolean passed = true;
+
+ harness.check(prt.ready(), "ready()");
+ harness.check(!prt.markSupported(), "markSupported()");
+
+ prt.read(read_buf1);
+ prt.unread(read_buf1);
+ prt.read(read_buf2);
+
+ for (int i = 0; i < read_buf1.length; i++)
+ {
+ if (read_buf1[i] != read_buf2[i])
+ throw new IOException("Re-reading bytes gave different results");
+ }
+
+ prt.unread(read_buf2, 1, read_buf2.length - 1);
+ prt.unread(read_buf2[0]);
+
+ int chars_read, total_read = 0;
+ while ((chars_read = prt.read(read_buf1)) != -1)
+ {
+ harness.debug(new String(read_buf1, 0, chars_read), false);
+ total_read += chars_read;
+ }
+
+ harness.check(total_read, str.length(), "total_read == str.length()");
+
+ prt.close();
+ harness.check(true, "close()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Unread
+
diff --git a/gnu/testlet/java/io/RandomAccessFile/CVS/Entries b/gnu/testlet/java/io/RandomAccessFile/CVS/Entries
new file mode 100644
index 00000000..0f10034a
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/CVS/Entries
@@ -0,0 +1,5 @@
+/jdk11.java/1.7/Mon Feb 7 19:47:31 2005//
+/randomaccessfile.java/1.1/Thu Mar 10 00:52:23 2005//
+/security.java/1.4/Tue Feb 6 16:46:19 2007//
+/setLength.java/1.1/Thu Apr 29 20:59:58 2004//
+D
diff --git a/gnu/testlet/java/io/RandomAccessFile/CVS/Repository b/gnu/testlet/java/io/RandomAccessFile/CVS/Repository
new file mode 100644
index 00000000..e0058aae
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/RandomAccessFile
diff --git a/gnu/testlet/java/io/RandomAccessFile/CVS/Root b/gnu/testlet/java/io/RandomAccessFile/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/RandomAccessFile/jdk11.java b/gnu/testlet/java/io/RandomAccessFile/jdk11.java
new file mode 100644
index 00000000..db286457
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/jdk11.java
@@ -0,0 +1,290 @@
+/*************************************************************************
+/* jdk11.java -- java.io.File 1.1 tests
+/*
+/* Copyright (c) 2001, 2002 Free Software Foundation, Inc.
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+package gnu.testlet.java.io.RandomAccessFile;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+public class jdk11
+ implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String fname = "raftmpfile";
+ RandomAccessFile raf;
+ int rdcnt;
+ byte[] buf = {0, 0, 0, 0};
+
+
+ // Start by deleting test file, if it exists,
+ // to clear out any leftover data
+ File f = new File(fname);
+
+ if (f.exists())
+ f.delete();
+
+ // new RandomAccessFile(filename, mode);
+ try
+ {
+ raf = new RandomAccessFile(fname, "rw");
+ }
+ catch (IOException e)
+ {
+ harness.fail("new RandomAccessFile(Filename, mode): Can't open file "
+ + fname);
+
+ return; // can't proceed without open file
+ }
+
+ try
+ {
+ FileDescriptor fd = raf.getFD();
+ }
+ catch (IOException e)
+ {
+ harness.fail("getFD(): Can't get FileDescriptor");
+
+ return; // shouldn't proceed if no FileDescriptor
+ }
+
+ // Test skipBytes
+ String teststr = "foobar";
+ int testlength = teststr.length();
+ byte[] testbytes = new byte[testlength];
+ ;
+
+ for (int i = 0; i < teststr.length(); i++)
+ testbytes[i] = (byte) teststr.charAt(i);
+
+ try
+ {
+ // write(b[])
+ raf.write(testbytes);
+ harness.check(testlength, raf.length(), "write(b[])/length()");
+ harness.debug("File size = " + raf.length() + "; should = " + testlength);
+ raf.seek(0);
+
+ // Make sure skipBytes goes all the way to the end of the file and no further
+ int skipped = 0;
+
+ for (int i = 0; i < testbytes.length + 1; i++)
+ { // last skip should return 0 bytes
+ int offset = raf.skipBytes(1);
+ harness.debug("skipped " + offset + " bytes");
+ skipped += offset;
+ }
+
+ harness.check(skipped, testlength, "skipBytes() did not skip past EOF");
+
+ // read()
+ raf.seek(0);
+
+ char ch1 = (char) raf.read();
+ char ch2 = teststr.charAt(0);
+ harness.check(ch1, ch2, "read()");
+ harness.debug("Read " + ch1 + "; should be " + ch2);
+
+ // getFilePointer() (sneak this one in because all the setup is done already)
+ harness.check(raf.getFilePointer(), 1, "getFilePointer()");
+
+ // read(b[], off, len)
+ raf.seek(0); // test seek and read multiple bytes all at once
+ rdcnt = raf.read(buf, 0, 3);
+ harness.check(rdcnt, 3,
+ "read(b[], off, len):Reading correct number of bytes");
+ harness.debug("Read " + rdcnt + " bytes; should have been 3.");
+
+ String str = new String(buf);
+ harness.check(str.substring(0, 3).equals(teststr.substring(0, 3)),
+ "read(b[], off, len):Reading at correct offset");
+ harness.debug("array read: read " + str + "; expected "
+ + teststr.substring(0, 3));
+
+ // read(b[])
+ raf.seek(0);
+ rdcnt = raf.read(buf);
+ harness.check(rdcnt, buf.length, "read(b[])");
+ harness.debug("buffer fill: read " + str + "; expected "
+ + teststr.substring(0, 3));
+
+ // readFully(b[])
+ int buf2ln = teststr.length() + 5; // make a buffer big enough to hold all the data
+ byte[] buf2 = new byte[buf2ln];
+
+ for (int i = 0; i < buf2ln; i++)
+ buf2[i] = 0; // fill with zeroes so we can test length
+
+ raf.seek(0);
+
+ try
+ {
+ raf.readFully(buf2);
+ }
+ catch (EOFException eofe)
+ {
+ harness.check(buf2[testlength - 1],
+ teststr.charAt(teststr.length() - 1),
+ "readFully(b[]):Enough bytes read");
+ harness.check(buf2[testlength], 0, "readFully(b[]):Too many bytes");
+ }
+
+ // readFully(b[], off, len)
+ for (int i = 0; i < buf2ln; i++)
+ buf2[i] = 0; // fill with zeroes so we can test length
+
+ raf.seek(0);
+
+ try
+ {
+ raf.readFully(buf2, 0, testlength + 2);
+ }
+ catch (EOFException eofe)
+ {
+ harness.check(buf2[testlength - 1],
+ teststr.charAt(teststr.length() - 1),
+ "readFully(b[],off,len):Enough bytes read");
+ harness.check(buf2[testlength], 0,
+ "readFully(b[],off,len):Too many bytes");
+ }
+
+ // write(b[], off, len);
+ raf.seek(0);
+ raf.write(testbytes, 2, 3);
+ raf.seek(0);
+ raf.read(buf2, 0, 3);
+
+ String t1;
+ String b1;
+ t1 = new String(testbytes, 2, 3);
+ b1 = new String(buf2, 0, 3);
+ harness.check(t1, b1, "write(b[], off, len");
+ harness.debug("write(b[], off, len):Wrote " + t1 + ", read " + b1);
+
+ // write(byte)/writeByte(byte)/readByte()
+ raf.seek(0);
+ raf.write(12);
+ raf.seek(0);
+ harness.check(raf.readByte(), 12, "write(byte)/readByte(), positive");
+ raf.seek(0);
+ raf.writeByte(-12);
+ raf.seek(0);
+ harness.check(raf.readByte(), -12, "writeByte(byte)/readByte(), negative");
+
+ // writeBoolean/readBoolean
+ raf.seek(0);
+ raf.writeBoolean(true);
+ raf.writeBoolean(false);
+ raf.seek(0);
+ harness.check(raf.readBoolean(), "writeBoolean(T)/readBoolean()");
+ harness.check(!raf.readBoolean(), "writeBoolean(F)/readBoolean()");
+
+ // writeShort/readShort
+ raf.seek(0);
+ raf.writeShort(527);
+ raf.seek(0);
+ harness.check(raf.readShort(), 527, "writeShort(n)/readShort()");
+
+ // writeUTF/readUTF
+ raf.seek(0);
+ raf.writeUTF(teststr);
+ raf.seek(0);
+ harness.check(raf.readShort(), testlength, "writeUTF(s): length encoding");
+ raf.seek(0);
+ harness.check(raf.readUTF(), teststr,
+ "writeUTF(s)/readUTF: string recovery");
+
+ // writeBytes/readLine
+ // N.B.: This test actually tests to the JDK1.2 specification. JDK1.1 says, in part:
+ // The line-terminating character(s), if any, are included as part of the string returned.
+ // The actual behavior, and spec'd in 1.2, is to strip the line terminator. Its presence is
+ // inferred from readLine's returning the correct string up to, but not including, the terminator.
+ raf.seek(0);
+ raf.writeBytes("foobar\n");
+ raf.seek(0);
+ harness.check(raf.readLine(), "foobar", "writeBytes(s)/readLine()");
+
+ // writeChar(c)/writeChars(s)/readChar()
+ raf.seek(0);
+ raf.writeChar('f');
+ raf.writeChars("oobar");
+ raf.seek(0);
+
+ String s = "";
+
+ for (int i = 0; i < 6; i++)
+ s += raf.readChar();
+
+ harness.check(s, "foobar", "writeChar/writeChars/readChar()");
+
+ // writeLong/readLong
+ raf.seek(0);
+ raf.writeLong(123456L);
+ raf.seek(0);
+ harness.check(raf.readLong(), 123456L, "writeLong(l)/readLong()");
+
+ // writeFloat/readFloat
+ raf.seek(0);
+ raf.writeFloat(123.45F);
+ raf.seek(0);
+ harness.check(raf.readFloat(), 123.45F, "writeFloat(l)/readFloat()");
+
+ // writeDouble/readDouble
+ raf.seek(0);
+ raf.writeDouble(123.45D);
+ raf.seek(0);
+ harness.check(raf.readDouble(), 123.45D, "writeDouble(l)/readDouble()");
+
+ // writeInt/readInt
+ raf.seek(0);
+ raf.writeInt(12345);
+ raf.seek(0);
+ harness.check(raf.readInt(), 12345, "writeInt(l)/readInt()");
+
+ // readUnsignedByte/readUnsignedShort
+ raf.seek(2);
+ harness.check(raf.readUnsignedByte(), 48, "readUnsignedByte()");
+ raf.seek(2);
+ harness.check(raf.readUnsignedShort(), 12345, "readUnsignedShort()");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.fail("IOException after opening file");
+ }
+
+ // close()
+ try
+ {
+ raf.close();
+ }
+ catch (IOException e)
+ {
+ harness.check(false, "close()");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/RandomAccessFile/randomaccessfile.java b/gnu/testlet/java/io/RandomAccessFile/randomaccessfile.java
new file mode 100644
index 00000000..c45ef64b
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/randomaccessfile.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Dalibor Topic (robilad@kaffe.org)
+
+// 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.java.io.RandomAccessFile;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.RandomAccessFile;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class randomaccessfile implements Testlet
+{
+ /**
+ * This test checks for a FileNotFoundException being thrown
+ * when the input parameter to the constructor is a directory
+ */
+ public void test (TestHarness harness)
+ {
+ String tmpfile = ".";
+
+ try
+ {
+ new RandomAccessFile(tmpfile, "r");
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+
+ final File f = new File(tmpfile);
+
+ try
+ {
+ new RandomAccessFile(f, "r");
+ harness.check(false, "Failed to throw FileNotFoundException");
+ }
+ catch(FileNotFoundException e)
+ {
+ harness.check(true, "thrown FileNotFoundException for directory parameter");
+ }
+ catch(Throwable t)
+ {
+ harness.fail("Unknown Throwable caught");
+ harness.debug(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/RandomAccessFile/security.java b/gnu/testlet/java/io/RandomAccessFile/security.java
new file mode 100644
index 00000000..1bf2bf06
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/security.java
@@ -0,0 +1,186 @@
+// Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.io.RandomAccessFile;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FilePermission;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ File dir = new File(harness.getTempDirectory(), "mauve-testdir");
+ harness.check(dir.mkdir() || dir.exists(), "temp directory");
+
+ File file = new File(dir, "file");
+ String path = file.getPath();
+ try {
+ new FileOutputStream(file);
+ }
+ catch (FileNotFoundException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected exception");
+ }
+
+ Permission rperm = new FilePermission(path, "read");
+ Permission wperm = new FilePermission(path, "write");
+ Permission rfdperm = new RuntimePermission("readFileDescriptor");
+ Permission wfdperm = new RuntimePermission("writeFileDescriptor");
+
+ String[] modes = new String[] {"r", "rw", "rws", "rwd"};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ for (int i = 0; i < modes.length; i++) {
+ String mode = modes[i];
+
+ Permission[] mustCheck, mayCheck;
+ if (mode.equals("r")) {
+ mustCheck = new Permission[] {rperm};
+ mayCheck = new Permission[] {rfdperm};
+ }
+ else {
+ mustCheck = new Permission[] {rperm, wperm};
+ mayCheck = new Permission[] {rfdperm, wfdperm};
+ }
+
+ RandomAccessFile raf;
+
+ // throwpoint: java.io.RandomAccessFile-RandomAccessFile(File, String)
+ harness.checkPoint("File constructor, mode = \"" + mode + "\"");
+ try {
+ sm.prepareChecks(mustCheck, mayCheck);
+ raf = new RandomAccessFile(file, mode);
+ sm.checkAllChecked();
+ if (mode == "r")
+ ensureUnwritable(harness, raf);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.io.RandomAccessFile-RandomAccessFile(String, String)
+ harness.checkPoint("String constructor, mode = \"" + mode + "\"");
+ try {
+ sm.prepareChecks(mustCheck, mayCheck);
+ raf = new RandomAccessFile(path, mode);
+ sm.checkAllChecked();
+ if (mode == "r")
+ ensureUnwritable(harness, raf);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ finally {
+ sm.uninstall();
+
+ file.delete();
+ dir.delete();
+ }
+ }
+
+ private void ensureUnwritable(TestHarness harness, RandomAccessFile file)
+ {
+ harness.checkPoint("read-only checks");
+
+ byte[] barry = new byte[] {2, 4, 2};
+ try {
+ for (int i = 1; i <= 14; i++) {
+ long pointer = file.getFilePointer();
+ try {
+ switch (i) {
+ case 1:
+ file.write(barry);
+ break;
+ case 2:
+ file.write(barry, 1, 2);
+ break;
+ case 3:
+ file.write(1);
+ break;
+ case 4:
+ file.writeBoolean(true);
+ break;
+ case 5:
+ file.writeByte(1);
+ break;
+ case 6:
+ file.writeBytes("hello mum");
+ break;
+ case 7:
+ file.writeChar(1);
+ break;
+ case 8:
+ file.writeChars("hello mum");
+ break;
+ case 9:
+ file.writeDouble(1);
+ break;
+ case 10:
+ file.writeFloat(1);
+ break;
+ case 11:
+ file.writeInt(1);
+ break;
+ case 12:
+ file.writeLong(1);
+ break;
+ case 13:
+ file.writeShort(1);
+ break;
+ case 14:
+ file.writeUTF("hello mum");
+ break;
+ }
+ harness.check(false);
+ }
+ catch (IOException e) {
+ harness.check(file.getFilePointer() == pointer);
+ }
+ }
+ }
+ catch (IOException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected IOException");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/RandomAccessFile/setLength.java b/gnu/testlet/java/io/RandomAccessFile/setLength.java
new file mode 100644
index 00000000..1e248bbe
--- /dev/null
+++ b/gnu/testlet/java/io/RandomAccessFile/setLength.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.io.RandomAccessFile;
+
+import java.io.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class setLength implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-raf.tst";
+ File f = new File(tmpfile);
+ f.delete();
+ try
+ {
+ RandomAccessFile raf = new RandomAccessFile(f, "rw");
+ harness.check(raf.length(), 0);
+ harness.check(raf.getFilePointer(), 0);
+ raf.write(new byte[] {1, 2, 3, 4, 5, 6, 7, 8} );
+ harness.check(raf.length(), 8);
+ harness.check(raf.getFilePointer(), 8);
+
+ // Truncate
+ raf.setLength(3);
+ harness.check(raf.length(), 3);
+ harness.check(raf.getFilePointer(), 3);
+
+ // End of file
+ harness.check(raf.read(), -1);
+ harness.check(3, raf.length());
+
+ // Expand
+ raf.write(10);
+ harness.check(raf.length(), 4);
+ harness.check(raf.getFilePointer(), 4);
+
+ // Expand with setLength
+ raf.setLength(10);
+ harness.check(raf.length(), 10);
+ harness.check(raf.getFilePointer(), 4);
+
+ // Truncate with setLength
+ raf.setLength(5);
+ harness.check(raf.length(), 5);
+ harness.check(raf.getFilePointer(), 4);
+
+ // Truncate with setLength before file position
+ raf.setLength(1);
+ harness.check(raf.length(), 1);
+ harness.check(raf.getFilePointer(), 1);
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected: " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ // Cleanup
+ f.delete();
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/io/Reader/CVS/Entries b/gnu/testlet/java/io/Reader/CVS/Entries
new file mode 100644
index 00000000..bce69826
--- /dev/null
+++ b/gnu/testlet/java/io/Reader/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Fri Jan 3 01:22:18 2003//
+D
diff --git a/gnu/testlet/java/io/Reader/CVS/Repository b/gnu/testlet/java/io/Reader/CVS/Repository
new file mode 100644
index 00000000..f6d67315
--- /dev/null
+++ b/gnu/testlet/java/io/Reader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/Reader
diff --git a/gnu/testlet/java/io/Reader/CVS/Root b/gnu/testlet/java/io/Reader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/Reader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/Reader/Test.java b/gnu/testlet/java/io/Reader/Test.java
new file mode 100644
index 00000000..370f85b7
--- /dev/null
+++ b/gnu/testlet/java/io/Reader/Test.java
@@ -0,0 +1,123 @@
+/*************************************************************************
+/* Test.java -- Test Reader
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Daryl Lee (dolee@sources.redhat.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.Reader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.Reader;
+import java.io.IOException;
+
+public class Test extends Reader implements Testlet
+{
+
+ private int index;
+ private String s;
+
+ public Test() { }
+
+ Test(String str)
+ {
+ super();
+ s = str;
+ index = 0;
+ }
+
+ public int read(char cbuf[], int off, int len)
+ throws IOException
+ {
+ int i;
+ for (i = 0; i < len; i++) {
+ cbuf[off + i] = s.charAt(index++);
+ }
+ return (i);
+ }
+
+ public void close() throws IOException
+ {
+ // nothing to do
+ }
+
+public void
+test(TestHarness harness)
+{
+ String str = "There are a ton of great places to see live, original\n" +
+ "music in Chicago. Places like Lounge Ax, Schuba's, the Empty\n" +
+ "Bottle, and even the dreaded Metro with their sometimes asshole\n" +
+ "bouncers.\n";
+
+ Test sr = new Test(str);
+ harness.check(true, "StringReader(String)");
+ try { // 1.1 API does not correctly document this exception
+ harness.check(!sr.ready(), "ready()");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on ready()");
+ }
+ harness.check(!sr.markSupported(), "markSupported()");
+ try {
+ sr.mark(0); // For this class, readahead limit should be ignored
+ harness.fail("mark() should throw exception");
+ }
+ catch (IOException e) {
+ harness.check(true, "mark()");
+ }
+ char[] buf = new char[4];
+ try {
+ harness.check(sr.read(buf, 0, 4), 4, "read(buf, off, len) return value");;
+ String bufstr = new String(buf);
+ harness.check(bufstr, "Ther", "read(buf, off, len)");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on read(buf, off, len)");
+ }
+ try { // 1.1 API does not correctly document this exception
+ sr.reset();
+ harness.fail("Expected IOException on reset()");
+ }
+ catch (IOException e) {
+ harness.check(true, "reset()");
+ }
+ try {
+ sr.skip(8);
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on skip()");
+ }
+ try {
+ harness.check(sr.read(), 't', "skip(), read()");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on read()");
+ }
+ try {
+ sr.close();
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on close()");
+ }
+ harness.check(true, "close()");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/SequenceInputStream/CVS/Entries b/gnu/testlet/java/io/SequenceInputStream/CVS/Entries
new file mode 100644
index 00000000..ba175e47
--- /dev/null
+++ b/gnu/testlet/java/io/SequenceInputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Thu Nov 14 02:07:31 2002//
+D
diff --git a/gnu/testlet/java/io/SequenceInputStream/CVS/Repository b/gnu/testlet/java/io/SequenceInputStream/CVS/Repository
new file mode 100644
index 00000000..1e06b0dc
--- /dev/null
+++ b/gnu/testlet/java/io/SequenceInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/SequenceInputStream
diff --git a/gnu/testlet/java/io/SequenceInputStream/CVS/Root b/gnu/testlet/java/io/SequenceInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/SequenceInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/SequenceInputStream/Test.java b/gnu/testlet/java/io/SequenceInputStream/Test.java
new file mode 100644
index 00000000..5566727e
--- /dev/null
+++ b/gnu/testlet/java/io/SequenceInputStream/Test.java
@@ -0,0 +1,87 @@
+/*************************************************************************
+/* Test.java -- Run tests of SequenceInputStream
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.SequenceInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str1 = "I don't believe in going to chain restaurants. I think\n" +
+ "they are evil. I can't believe all the suburban folks who go to \n";
+
+ String str2 = "places like the Olive Garden. Not only does the food make\n" +
+ "me want to puke, none of these chains has the slightest bit of character.\n";
+
+ byte[] buf = new byte[10];
+
+ try
+ {
+ StringBufferInputStream is1 = new StringBufferInputStream(str1);
+ ByteArrayInputStream is2 = new ByteArrayInputStream(str2.getBytes());
+ SequenceInputStream sis = new SequenceInputStream(is1, is2);
+
+ int bytes_read;
+ harness.check(str1.length(), sis.available(), "available()");
+ while((bytes_read = sis.read(buf)) != -1)
+ {
+ harness.debug(new String(buf,0,bytes_read), false);
+ }
+
+ sis.close();
+ harness.check(true);
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try
+ {
+ StringBufferInputStream is1 = new StringBufferInputStream(str1);
+ ByteArrayInputStream is2 = new ByteArrayInputStream(str2.getBytes());
+ SequenceInputStream sis = new SequenceInputStream(is1, is2);
+
+ sis.read(buf, 0, 5);
+ harness.check(true, "read(buf, off, len)");
+
+ sis.close();
+
+ harness.check(sis.read(), -1, "close() test");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/Serializable/BreakMe.java b/gnu/testlet/java/io/Serializable/BreakMe.java
new file mode 100644
index 00000000..cdbb8ff3
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/BreakMe.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.4
+// Uses: MyBreakMe
+// Files: MyBreakMe.ser
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+// Based on an idea by Jeroen Frijters
+
+// 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.java.io.Serializable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.*;
+
+/**
+ * Tests that errors thrown during deserialization are propagated correctly.
+ * BreakMe.ser can be generated by running the main() method.
+ */
+public class BreakMe implements Testlet
+{
+ static MyBreakMe broken;
+ static boolean generating = false;
+
+ public void test(TestHarness harness)
+ {
+ Object object = null;
+ try
+ {
+ FileInputStream fis
+ = new FileInputStream ("gnu/testlet/java/io/Serializable/MyBreakMe.ser");
+ ObjectInputStream ois = new ObjectInputStream(fis);
+ object = ois.readObject();
+ ois.close();
+ }
+ catch (ExceptionInInitializerError eiie)
+ {
+ harness.check(eiie.getCause() instanceof IndexOutOfBoundsException);
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ if (object != null)
+ harness.check(false);
+ }
+
+ public static void main(String[] args) throws IOException
+ {
+ generating = true;
+ new MyBreakMe();
+ FileOutputStream fos
+ = new FileOutputStream("gnu/testlet/java/io/Serializable/MyBreakMe.ser");
+ ObjectOutputStream oos = new ObjectOutputStream(fos);
+ oos.writeObject(broken);
+ oos.close();
+ }
+}
diff --git a/gnu/testlet/java/io/Serializable/BreakMeTestSer.java b/gnu/testlet/java/io/Serializable/BreakMeTestSer.java
new file mode 100644
index 00000000..6077b1e5
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/BreakMeTestSer.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.4
+// Uses: BreakMe MyBreakMe
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+// Based on an idea by Jeroen Frijters
+
+// 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.java.io.Serializable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.*;
+
+/**
+ * Tests that errors thrown during serialization are propagated correctly.
+ * BreakMe.ser can be generated by running the main() method.
+ */
+public class BreakMeTestSer implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // This will partly fail since BreakMe.generating isn't set.
+ try { new MyBreakMe(); } catch(Throwable _) {}
+
+ boolean exception_thrown = false;
+ try
+ {
+ OutputStream os = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(os);
+ oos.writeObject(BreakMe.broken);
+ oos.close();
+ }
+ catch (NoClassDefFoundError ncdfe)
+ {
+ exception_thrown = true;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ }
+ harness.check(exception_thrown);
+ }
+}
diff --git a/gnu/testlet/java/io/Serializable/CVS/Entries b/gnu/testlet/java/io/Serializable/CVS/Entries
new file mode 100644
index 00000000..54e16fcb
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/CVS/Entries
@@ -0,0 +1,9 @@
+/BreakMe.java/1.2/Wed Jun 25 08:07:51 2008//
+/BreakMeTestSer.java/1.1/Fri Jul 22 10:11:39 2005//
+/MyBreakMe.java/1.1/Fri Jul 22 10:11:39 2005//
+/MyBreakMe.ser/1.1/Fri Jul 22 10:11:39 2005/-kb/
+/MySerializable.java/1.2/Wed Feb 9 00:09:13 2005//
+/ParentReadResolve.java/1.1/Wed Mar 2 21:54:39 2005//
+/ParentWriteReplace.java/1.1/Wed Mar 2 21:54:39 2005//
+/readResolve.java/1.2/Wed Feb 9 00:09:13 2005//
+D
diff --git a/gnu/testlet/java/io/Serializable/CVS/Repository b/gnu/testlet/java/io/Serializable/CVS/Repository
new file mode 100644
index 00000000..42902491
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/Serializable
diff --git a/gnu/testlet/java/io/Serializable/CVS/Root b/gnu/testlet/java/io/Serializable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/Serializable/MyBreakMe.java b/gnu/testlet/java/io/Serializable/MyBreakMe.java
new file mode 100644
index 00000000..22a8ba7c
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/MyBreakMe.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+// Based on an idea by Jeroen Frijters
+
+// 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.java.io.Serializable;
+
+import java.io.*;
+
+/**
+ * A Serializable class that has a broken static initializer.
+ * Generate MyBreakMe.ser by running the BreakMe.main() method.
+ */
+public class MyBreakMe implements Serializable
+{
+ static
+ {
+ BreakMe.broken = new MyBreakMe();
+ if (!BreakMe.generating)
+ throw new IndexOutOfBoundsException("Darn!");
+ }
+}
diff --git a/gnu/testlet/java/io/Serializable/MyBreakMe.ser b/gnu/testlet/java/io/Serializable/MyBreakMe.ser
new file mode 100644
index 00000000..7001f3d3
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/MyBreakMe.ser
Binary files differ
diff --git a/gnu/testlet/java/io/Serializable/MySerializable.java b/gnu/testlet/java/io/Serializable/MySerializable.java
new file mode 100644
index 00000000..46ed8526
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/MySerializable.java
@@ -0,0 +1,67 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.io.Serializable;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+
+/**
+ * A test class.
+ */
+public class MySerializable implements Serializable {
+
+ /** A flag the tracks whether the readResolved() method is called. */
+ private boolean resolved;
+
+ /**
+ * Default constructor.
+ */
+ public MySerializable()
+ {
+ this.resolved = false;
+ }
+
+ /**
+ * Returns the flag that indicates whether or not the readResolved() method
+ * has been called.
+ *
+ * @return A boolean.
+ */
+ public boolean isResolved()
+ {
+ return this.resolved;
+ }
+
+ /**
+ * This method should be called by the serialization mechanism.
+ *
+ * @return A resolved object.
+ *
+ * @throws ObjectStreamException
+ */
+ private Object readResolve() throws ObjectStreamException
+ {
+ this.resolved = true;
+ return this;
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/io/Serializable/ParentReadResolve.java b/gnu/testlet/java/io/Serializable/ParentReadResolve.java
new file mode 100644
index 00000000..8645a485
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/ParentReadResolve.java
@@ -0,0 +1,111 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Daniel Bonniot <bonniot@users.sf.net>
+
+// 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.java.io.Serializable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+/**
+ * Check when a parent readResolve() method should be used for subclasses.
+ *
+ * Here is the rationale for this test, based on Sun's javadoc for
+ * java.io.Serializable:
+ *
+ * First, readResolve must be declared with:
+ * ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
+ * Thus, a non-private readResolve is OK.
+ *
+ * Second, the rules for invoking readResolve (as for writeReplace) are that
+ * it must be called if it would be accessible from the class of the object
+ * being deserialized. So, a non-private readSolve method in the parent must
+ * be called, but a private one should not be.
+ */
+public class ParentReadResolve implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ try {
+ ByteArrayOutputStream outb = new ByteArrayOutputStream();
+ ObjectOutputStream outs = new ObjectOutputStream(outb);
+
+ outs.writeObject(MySingleton.instance);
+ outs.writeObject(new MyFoo());
+
+ byte[] store = outb.toByteArray();
+
+ ByteArrayInputStream inb = new ByteArrayInputStream(store);
+ ObjectInputStream ins = new ObjectInputStream(inb);
+
+ MySingleton x = (MySingleton) ins.readObject();
+ harness.check(x == MySingleton.instance);
+
+ MyFoo foo = (MyFoo) ins.readObject();
+ harness.check(! foo.resolved);
+ }
+ catch (Throwable e) {
+ harness.debug(e);
+ }
+ }
+
+ //// Singleton/MySingleton with a non-private readResolve ////
+
+ static abstract class Singleton implements java.io.Serializable
+ {
+ abstract Singleton getInstance();
+
+ /** NOTE: this readResolve is not private.
+ */
+ Object readResolve() {
+ return getInstance();
+ }
+ }
+
+ static class MySingleton extends Singleton
+ {
+ static final MySingleton instance = new MySingleton();
+
+ Singleton getInstance() { return instance; }
+ }
+
+ //// Foo/MyFoo with a private readResolve ////
+
+ static abstract class Foo implements java.io.Serializable
+ {
+ boolean resolved = false;
+
+ /** NOTE: this readResolve is private.
+ */
+ private Object readResolve() {
+ resolved = true;
+ return this;
+ }
+ }
+
+ static class MyFoo extends Foo
+ {
+ }
+}
diff --git a/gnu/testlet/java/io/Serializable/ParentWriteReplace.java b/gnu/testlet/java/io/Serializable/ParentWriteReplace.java
new file mode 100644
index 00000000..f9b58cb9
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/ParentWriteReplace.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Daniel Bonniot <bonniot@users.sf.net>
+
+// 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.java.io.Serializable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectOutputStream;
+
+/**
+ * Check when a parent writeReplace() method should be used for subclasses.
+ *
+ * Here is the rationale for this test, based on Sun's javadoc for
+ * java.io.Serializable:
+ *
+ * First, writeReplace must be declared with:
+ * ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
+ * Thus, a non-private writeReplace is OK.
+ *
+ * Second, the rules for invoking writeReplace are that
+ * it must be called if it would be accessible from the class of the object
+ * being deserialized. So, a non-private writeReplace method in the parent must
+ * be called, but a private one should not be.
+ */
+public class ParentWriteReplace implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ try {
+ ByteArrayOutputStream outb = new ByteArrayOutputStream();
+ ObjectOutputStream outs = new ObjectOutputStream(outb);
+
+ MySingleton singleton = new MySingleton();
+ outs.writeObject(singleton);
+ harness.check(singleton.replaced);
+
+ Foo foo = new MyFoo();
+ outs.writeObject(foo);
+ harness.check(! foo.replaced);
+ }
+ catch (Throwable e) {
+ harness.debug(e);
+ }
+ }
+
+ //// Singleton/MySingleton with a non-private writeReplace ////
+
+ static abstract class Singleton implements java.io.Serializable
+ {
+ boolean replaced = false;
+
+ /** NOTE: this writeReplace is not private.
+ */
+ Object writeReplace() {
+ replaced = true;
+ return this;
+ }
+ }
+
+ static class MySingleton extends Singleton
+ {
+ }
+
+ //// Foo/MyFoo with a private writeReplace ////
+
+ static abstract class Foo implements java.io.Serializable
+ {
+ boolean replaced = false;
+
+ /** NOTE: this writeReplace is private.
+ */
+ private Object writeReplace() {
+ replaced = true;
+ return this;
+ }
+ }
+
+ static class MyFoo extends Foo
+ {
+ }
+}
diff --git a/gnu/testlet/java/io/Serializable/readResolve.java b/gnu/testlet/java/io/Serializable/readResolve.java
new file mode 100644
index 00000000..df3b5f2b
--- /dev/null
+++ b/gnu/testlet/java/io/Serializable/readResolve.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+// Uses: MySerializable
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.io.Serializable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Some checks for serialization support for the readResolve() method.
+ */
+public class readResolve implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MySerializable x1 = new MySerializable();
+ MySerializable x2 = null;
+ try
+ {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(x1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ x2 = (MySerializable) in.readObject();
+ in.close();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+ harness.check(x2.isResolved(), true);
+ }
+
+}
diff --git a/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries b/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries
new file mode 100644
index 00000000..9040f02a
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Fri Oct 12 07:40:09 2012//
+/constructor.java/1.1/Fri Oct 12 07:40:09 2012//
+D
diff --git a/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries.Log b/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/StreamCorruptedException/CVS/Repository b/gnu/testlet/java/io/StreamCorruptedException/CVS/Repository
new file mode 100644
index 00000000..e3294ef6
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StreamCorruptedException
diff --git a/gnu/testlet/java/io/StreamCorruptedException/CVS/Root b/gnu/testlet/java/io/StreamCorruptedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StreamCorruptedException/TryCatch.java b/gnu/testlet/java/io/StreamCorruptedException/TryCatch.java
new file mode 100644
index 00000000..0ad8b575
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.StreamCorruptedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.StreamCorruptedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new StreamCorruptedException("StreamCorruptedException");
+ }
+ catch (StreamCorruptedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Entries b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..836ef10e
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Fri Oct 12 07:40:09 2012//
+/getInterfaces.java/1.1/Fri Oct 12 07:40:09 2012//
+/getModifiers.java/1.1/Fri Oct 12 07:40:09 2012//
+/getName.java/1.1/Fri Oct 12 07:40:09 2012//
+/getPackage.java/1.1/Fri Oct 12 07:40:09 2012//
+/getSimpleName.java/1.1/Fri Oct 12 07:40:09 2012//
+/getSuperclass.java/1.1/Fri Oct 12 07:40:09 2012//
+/isAssignableFrom.java/1.1/Fri Oct 12 07:40:09 2012//
+/isInstance.java/1.1/Fri Oct 12 07:40:09 2012//
+/isInterface.java/1.1/Fri Oct 12 07:40:09 2012//
+/isLocalClass.java/1.1/Fri Oct 12 07:40:09 2012//
+/isMemberClass.java/1.1/Fri Oct 12 07:40:09 2012//
+/isPrimitive.java/1.1/Fri Oct 12 07:40:09 2012//
+/isSynthetic.java/1.1/Fri Oct 12 07:40:09 2012//
+D
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Repository b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..59e48b02
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StreamCorruptedException/classInfo
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Root b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/InstanceOf.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..45572182
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.StreamCorruptedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.StreamCorruptedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StreamCorruptedException
+ StreamCorruptedException o = new StreamCorruptedException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof StreamCorruptedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getInterfaces.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..6fe1e339
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.StreamCorruptedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getModifiers.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f1aa2115
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.StreamCorruptedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getName.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getName.java
new file mode 100644
index 00000000..59d1c9c9
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.StreamCorruptedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getPackage.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getPackage.java
new file mode 100644
index 00000000..af7d811b
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.StreamCorruptedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSimpleName.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..1758aa2e
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "StreamCorruptedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSuperclass.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..d3a1bde8
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.StreamCorruptedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..20dc9ed2
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(StreamCorruptedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInstance.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInstance.java
new file mode 100644
index 00000000..a22fe9ea
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new StreamCorruptedException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInterface.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInterface.java
new file mode 100644
index 00000000..d481b565
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isLocalClass.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..0e8c380a
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isMemberClass.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..f9c10ad0
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isPrimitive.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8ec039d5
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/classInfo/isSynthetic.java b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..79764540
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.StreamCorruptedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test for method java.io.StreamCorruptedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StreamCorruptedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamCorruptedException/constructor.java b/gnu/testlet/java/io/StreamCorruptedException/constructor.java
new file mode 100644
index 00000000..641c6cd3
--- /dev/null
+++ b/gnu/testlet/java/io/StreamCorruptedException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.StreamCorruptedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.StreamCorruptedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StreamCorruptedException;
+
+
+
+/**
+ * Test if instances of a class java.io.StreamCorruptedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StreamCorruptedException object1 = new StreamCorruptedException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.StreamCorruptedException");
+
+ StreamCorruptedException object2 = new StreamCorruptedException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.StreamCorruptedException: nothing happens");
+
+ StreamCorruptedException object3 = new StreamCorruptedException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.StreamCorruptedException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/StreamTokenizer/CVS/Entries b/gnu/testlet/java/io/StreamTokenizer/CVS/Entries
new file mode 100644
index 00000000..ee3082b5
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/CVS/Entries
@@ -0,0 +1,8 @@
+/Test.java/1.1/Thu Aug 10 00:25:33 2000//
+/WordWhiteChars.java/1.1/Tue Jul 16 20:38:00 2002//
+/commentchar.java/1.3/Sun Nov 16 21:11:54 2003//
+/misc.java/1.1/Sun Nov 17 03:45:48 2002//
+/newline.java/1.2/Sat Jul 20 01:30:41 2002//
+/slashslash.java/1.1/Sun Nov 17 02:07:17 2002//
+/slashstar.java/1.1/Wed Aug 9 19:43:20 2000//
+D
diff --git a/gnu/testlet/java/io/StreamTokenizer/CVS/Repository b/gnu/testlet/java/io/StreamTokenizer/CVS/Repository
new file mode 100644
index 00000000..356f773b
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StreamTokenizer
diff --git a/gnu/testlet/java/io/StreamTokenizer/CVS/Root b/gnu/testlet/java/io/StreamTokenizer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StreamTokenizer/Test.java b/gnu/testlet/java/io/StreamTokenizer/Test.java
new file mode 100644
index 00000000..8a152bac
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/Test.java
@@ -0,0 +1,71 @@
+// Test of `/*' behavior of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class Test implements Testlet
+{
+ public static void tokenize (TestHarness harness,
+ String input,
+ int[] expected)
+ {
+ harness.checkPoint (input);
+ StringReader sr = new StringReader (input);
+ StreamTokenizer st = new StreamTokenizer (sr);
+ st.slashStarComments (true);
+
+ try
+ {
+ int tt;
+ int i = 0;
+ while ((tt = st.nextToken ()) != StreamTokenizer.TT_EOF)
+ {
+ if (i >= expected.length)
+ harness.fail ("not enough tokens");
+ else
+ harness.check (tt, expected[i]);
+ ++i;
+ }
+ harness.check (i, expected.length);
+ }
+ catch (Throwable _)
+ {
+ harness.debug (_);
+ harness.fail ("Exception caught");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ int[] x1 = new int[7];
+ x1[0] = '(';
+ x1[1] = StreamTokenizer.TT_WORD;
+ x1[2] = ')';
+ x1[3] = StreamTokenizer.TT_NUMBER;
+ x1[4] = '(';
+ x1[5] = StreamTokenizer.TT_WORD;
+ x1[6] = ')';
+ tokenize (harness, "(a).(b)", x1);
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/WordWhiteChars.java b/gnu/testlet/java/io/StreamTokenizer/WordWhiteChars.java
new file mode 100644
index 00000000..f27ebf63
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/WordWhiteChars.java
@@ -0,0 +1,56 @@
+// Test of resetting word chars to whitespace chars
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.StreamTokenizer;
+import java.io.StringReader;
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class WordWhiteChars implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ StreamTokenizer st = new StreamTokenizer(new StringReader("foo bar,baz"));
+ // Everything is a word character.
+ st.wordChars(0, 255);
+ // Except for spaces and commas
+ st.whitespaceChars(' ', ' ');
+ st.whitespaceChars(',', ',');
+
+ try
+ {
+ harness.check(st.nextToken(), StreamTokenizer.TT_WORD);
+ harness.check(st.sval, "foo");
+ harness.check(st.nextToken(), StreamTokenizer.TT_WORD);
+ harness.check(st.sval, "bar");
+ harness.check(st.nextToken(), StreamTokenizer.TT_WORD);
+ harness.check(st.sval, "baz");
+ harness.check(st.nextToken(), StreamTokenizer.TT_EOF);
+ }
+ catch (IOException ioe)
+ {
+ harness.fail(ioe.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/commentchar.java b/gnu/testlet/java/io/StreamTokenizer/commentchar.java
new file mode 100644
index 00000000..58ee825c
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/commentchar.java
@@ -0,0 +1,96 @@
+// Test of commentChar() method of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class commentchar implements Testlet
+{
+ public static void tokenize (TestHarness harness,
+ StreamTokenizer st,
+ String input,
+ int[] expected)
+ {
+ harness.checkPoint (input);
+ try
+ {
+ int tt;
+ int i = 0;
+ while ((tt = st.nextToken ()) != StreamTokenizer.TT_EOF)
+ {
+ if (i >= expected.length)
+ harness.fail ("not enough tokens");
+ else
+ harness.check (tt, expected[i]);
+ ++i;
+ }
+ harness.check (i, expected.length);
+ }
+ catch (Throwable _)
+ {
+ harness.debug (_);
+ harness.fail ("Exception caught");
+ }
+ }
+
+ public static StreamTokenizer make_tokenizer (String input)
+ {
+ StringReader sr = new StringReader (input);
+ StreamTokenizer st = new StreamTokenizer (sr);
+ return st;
+ }
+
+ public static void tokenize (TestHarness harness,
+ String input,
+ int[] expected)
+ {
+ StreamTokenizer st = make_tokenizer (input);
+ st.commentChar('#');
+ tokenize (harness, st, input, expected);
+ }
+
+ public void test (TestHarness harness)
+ {
+ int[] x1 = new int[2];
+ x1[0] = StreamTokenizer.TT_WORD;
+ x1[1] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha # bleh\nbeta", x1);
+
+ int[] x2 = new int[1];
+ x2[0] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha / bleh", x2);
+ tokenize (harness, "alpha # bleh", x2);
+
+ // Classpath regression test.
+ x2[0] = StreamTokenizer.TT_EOL;
+ String input = " %foo,bar baz\n";
+ StreamTokenizer st = make_tokenizer(input);
+ st.resetSyntax();
+ st.whitespaceChars(0, ' ');
+ st.wordChars(' '+1, '\u00FF');
+ st.whitespaceChars(',', ',');
+ st.commentChar('%');
+ st.eolIsSignificant(true);
+ tokenize (harness, st, input, x2);
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/misc.java b/gnu/testlet/java/io/StreamTokenizer/misc.java
new file mode 100644
index 00000000..52e64047
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/misc.java
@@ -0,0 +1,73 @@
+// Test of several methods of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class misc implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ int tt; // Token type
+
+ StringReader sr = new StringReader("LineOne\nSecond/Line\n?Question?3.14\nAxyz");
+ StreamTokenizer st = new StreamTokenizer(sr);
+ st.eolIsSignificant(true); // Pass EOLs as tokens
+ st.ordinaryChar('/'); // Remove 'comment' specialness of /
+ st.lowerCaseMode(true);
+ try {
+ tt = st.nextToken();
+ harness.check(st.lineno(), 1, "lineno()");
+ harness.check(st.sval, "lineone", "lowerCaseMode()");
+ tt = st.nextToken(); // Should be newline
+ harness.check(tt, StreamTokenizer.TT_EOL, "eolIsSignificant()");
+ tt = st.nextToken(); // Parse 'Second'
+ tt = st.nextToken(); // Parse '/'
+ st.lowerCaseMode(false);
+ tt = st.nextToken(); // Parse 'Line'; wouldn't happen if / were a comment char
+ harness.check(st.sval, "Line", "ordinaryChar()");
+ st.pushBack();
+ tt = st.nextToken();
+ harness.check(st.sval, "Line", "pushBack()");
+ st.quoteChar('?');
+ tt = st.nextToken(); // Parse EOL
+ tt = st.nextToken(); // Get string quoted by ?
+ harness.check(st.ttype, '?', "ttype field");
+ harness.check(st.sval, "Question", "quoteChar()");
+ st.parseNumbers(); // Get ready for the next one
+ tt = st.nextToken();
+ harness.check(tt, StreamTokenizer.TT_NUMBER, "TT_NUMBER");
+ harness.check(st.nval > 3.1399 && st.nval < 3.1401, "parseNumbers()");
+ harness.debug("'3.14' came out " + st.nval);
+ st.ordinaryChars('A','C'); // Make A, B, and C their own special tokens
+ tt = st.nextToken(); // Parse EOL
+ harness.check(st.nextToken(), 'A', "ordinaryChars()");
+ st.resetSyntax(); // Every character is its own token
+ harness.check(st.nextToken(), 'x', "resetSyntax()");
+ }
+ catch (IOException e) {
+ harness.debug (e);
+ harness.fail ("Unexpected Exception caught");
+ }
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/newline.java b/gnu/testlet/java/io/StreamTokenizer/newline.java
new file mode 100644
index 00000000..e90dc0c4
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/newline.java
@@ -0,0 +1,82 @@
+// Test of newline behavior of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class newline implements Testlet
+{
+ public static void tokenize (TestHarness harness,
+ String input,
+ int[] expected,
+ StreamTokenizer st)
+ {
+ String checkpointName = "URLEncoded " + java.net.URLEncoder.encode(input);
+ harness.checkPoint ("Test of input: " + checkpointName);
+ try
+ {
+ int tt;
+ int i = 0;
+ while ((tt = st.nextToken ()) != StreamTokenizer.TT_EOF)
+ {
+ if (i >= expected.length)
+ harness.fail ("not enough tokens");
+ else
+ harness.check (tt, expected[i]);
+ ++i;
+ }
+ harness.check (i, expected.length);
+ }
+ catch (Throwable _)
+ {
+ harness.debug (_);
+ harness.fail ("Exception caught");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ String input = "foo\nbar\r\njoe\rzardoz";
+ StringReader sr = new StringReader (input);
+ int[] expected = new int[7];
+ expected[0] = StreamTokenizer.TT_WORD;
+ expected[1] = StreamTokenizer.TT_EOL;
+ expected[2] = StreamTokenizer.TT_WORD;
+ expected[3] = StreamTokenizer.TT_EOL;
+ expected[4] = StreamTokenizer.TT_WORD;
+ expected[5] = StreamTokenizer.TT_EOL;
+ expected[6] = StreamTokenizer.TT_WORD;
+
+ StreamTokenizer st = new StreamTokenizer (sr);
+ st.eolIsSignificant (true);
+ tokenize (harness, input, expected, st);
+
+ input = "\"foo\\\nbar\" after";
+ sr = new StringReader (input);
+ st = new StreamTokenizer (sr);
+ expected = new int[2];
+ expected[0] = (int) '"';
+ expected[1] = StreamTokenizer.TT_WORD;
+ tokenize (harness, input, expected, st);
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/slashslash.java b/gnu/testlet/java/io/StreamTokenizer/slashslash.java
new file mode 100644
index 00000000..0b59511d
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/slashslash.java
@@ -0,0 +1,71 @@
+// Test of `//' behavior of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class slashslash implements Testlet
+{
+ public static void tokenize (TestHarness harness,
+ String input,
+ int[] expected)
+ {
+ harness.checkPoint (input);
+ StringReader sr = new StringReader (input);
+ StreamTokenizer st = new StreamTokenizer (sr);
+ st.slashSlashComments (true);
+
+ try
+ {
+ int tt;
+ int i = 0;
+ while ((tt = st.nextToken ()) != StreamTokenizer.TT_EOF)
+ {
+ if (i >= expected.length)
+ harness.fail ("not enough tokens");
+ else
+ harness.check (tt, expected[i]);
+ ++i;
+ }
+ harness.check (i, expected.length);
+ }
+ catch (Throwable _)
+ {
+ harness.debug (_);
+ harness.fail ("Exception caught");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ int[] x1 = new int[2];
+ x1[0] = StreamTokenizer.TT_WORD;
+ x1[1] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha // bleh\nbeta", x1);
+
+ int[] x2 = new int[1];
+ x2[0] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha / bleh", x2);
+ tokenize (harness, "alpha /* bleh", x2);
+ }
+}
diff --git a/gnu/testlet/java/io/StreamTokenizer/slashstar.java b/gnu/testlet/java/io/StreamTokenizer/slashstar.java
new file mode 100644
index 00000000..2295ed7f
--- /dev/null
+++ b/gnu/testlet/java/io/StreamTokenizer/slashstar.java
@@ -0,0 +1,71 @@
+// Test of `/*' behavior of StreamTokenizer.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StreamTokenizer;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class slashstar implements Testlet
+{
+ public static void tokenize (TestHarness harness,
+ String input,
+ int[] expected)
+ {
+ harness.checkPoint (input);
+ StringReader sr = new StringReader (input);
+ StreamTokenizer st = new StreamTokenizer (sr);
+ st.slashStarComments (true);
+
+ try
+ {
+ int tt;
+ int i = 0;
+ while ((tt = st.nextToken ()) != StreamTokenizer.TT_EOF)
+ {
+ if (i >= expected.length)
+ harness.fail ("not enough tokens");
+ else
+ harness.check (tt, expected[i]);
+ ++i;
+ }
+ harness.check (i, expected.length);
+ }
+ catch (Throwable _)
+ {
+ harness.debug (_);
+ harness.fail ("Exception caught");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ int[] x1 = new int[2];
+ x1[0] = StreamTokenizer.TT_WORD;
+ x1[1] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha /* bleh */ gamma", x1);
+
+ int[] x2 = new int[1];
+ x2[0] = StreamTokenizer.TT_WORD;
+ tokenize (harness, "alpha / bleh", x2);
+ tokenize (harness, "alpha /* bleh", x2);
+ }
+}
diff --git a/gnu/testlet/java/io/StringBufferInputStream/CVS/Entries b/gnu/testlet/java/io/StringBufferInputStream/CVS/Entries
new file mode 100644
index 00000000..ca8b66f3
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/MarkReset.java/1.4/Tue Dec 22 13:07:16 1998//
+/ProtectedVars.java/1.4/Tue Dec 22 13:07:17 1998//
+/SimpleRead.java/1.4/Tue Dec 22 13:07:18 1998//
+D
diff --git a/gnu/testlet/java/io/StringBufferInputStream/CVS/Repository b/gnu/testlet/java/io/StringBufferInputStream/CVS/Repository
new file mode 100644
index 00000000..9956b4e0
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StringBufferInputStream
diff --git a/gnu/testlet/java/io/StringBufferInputStream/CVS/Root b/gnu/testlet/java/io/StringBufferInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StringBufferInputStream/MarkReset.java b/gnu/testlet/java/io/StringBufferInputStream/MarkReset.java
new file mode 100644
index 00000000..f41fabbb
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/MarkReset.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+/* MarkReset.java -- StringBufferInputStream mark/reset test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.StringBufferInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class MarkReset implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "Between my freshman and sophomore years of high school\n" +
+ "we moved into a brand new building. The old high school was turned\n" +
+ "into an elementary school.\n";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+
+ try
+ {
+ boolean passed = true;
+
+ byte[] read_buf = new byte[12];
+ sbis.read(read_buf);
+ harness.check(sbis.available(), str.length() - read_buf.length,
+ "available pre skip");
+ harness.check(sbis.skip(5), 5, "skip");
+ harness.check(sbis.available(), str.length() - (read_buf.length + 5),
+ "available post skip");
+ harness.check(!sbis.markSupported(), "markSupported");
+ sbis.reset();
+ harness.check(sbis.available(), str.length(), "reset()");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+}
+
diff --git a/gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java b/gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java
new file mode 100644
index 00000000..f99d3c93
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/ProtectedVars.java
@@ -0,0 +1,74 @@
+/*************************************************************************
+/* ProtectedVars.java -- StringBufferInputStream protected variables
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.StringBufferInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class ProtectedVars extends StringBufferInputStream implements Testlet
+{
+
+public
+ProtectedVars(String b)
+{
+ super(b);
+}
+
+// The constructor for the test suite.
+public
+ProtectedVars ()
+{
+ super("");
+}
+
+public void
+test(TestHarness harness)
+{
+ String str = "Between my freshman and sophomore years of high school\n" +
+ "we moved into a brand new building. The old high school was turned\n" +
+ "into an elementary school.\n";
+
+ ProtectedVars sbis = new ProtectedVars(str);
+ byte[] read_buf = new byte[12];
+
+ try
+ {
+ sbis.read(read_buf);
+ sbis.mark(0);
+
+ sbis.read(read_buf);
+ harness.check(sbis.pos, read_buf.length * 2, "pos");
+ harness.check(sbis.count, str.length(), "count");
+ harness.check(sbis.buffer, str, "buf");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+}
+
diff --git a/gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java b/gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java
new file mode 100644
index 00000000..5aa42291
--- /dev/null
+++ b/gnu/testlet/java/io/StringBufferInputStream/SimpleRead.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+/* SimpleRead.java -- StringBufferInputStream simple read test
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.io.StringBufferInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+public class SimpleRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str = "Between my freshman and sophomore years of high school\n" +
+ "we moved into a brand new building. The old high school was turned\n" +
+ "into an elementary school.\n";
+
+ StringBufferInputStream sbis = new StringBufferInputStream(str);
+
+ try
+ {
+ int bytes_read, total_read = 0;
+ StringBuffer sb = new StringBuffer("");
+ byte[] read_buf = new byte[12];
+ while ((bytes_read = sbis.read(read_buf, 0, read_buf.length)) != -1)
+ {
+ sb.append(new String(read_buf, 0, bytes_read));
+ total_read += bytes_read;
+ }
+ harness.debug(sb.toString());
+
+ sbis.close();
+ harness.check(total_read, str.length(), "Bytes read");
+ harness.check(str, sb.toString(), "String contents");
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+}
+
diff --git a/gnu/testlet/java/io/StringReader/CVS/Entries b/gnu/testlet/java/io/StringReader/CVS/Entries
new file mode 100644
index 00000000..5a8c17aa
--- /dev/null
+++ b/gnu/testlet/java/io/StringReader/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Fri Dec 27 16:14:08 2002//
+D
diff --git a/gnu/testlet/java/io/StringReader/CVS/Repository b/gnu/testlet/java/io/StringReader/CVS/Repository
new file mode 100644
index 00000000..1d2025ed
--- /dev/null
+++ b/gnu/testlet/java/io/StringReader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StringReader
diff --git a/gnu/testlet/java/io/StringReader/CVS/Root b/gnu/testlet/java/io/StringReader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StringReader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StringReader/Test.java b/gnu/testlet/java/io/StringReader/Test.java
new file mode 100644
index 00000000..9c1196d0
--- /dev/null
+++ b/gnu/testlet/java/io/StringReader/Test.java
@@ -0,0 +1,94 @@
+/*************************************************************************
+/* Test.java -- Test StringReader
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Adapted by Daryl Lee (dolee@sources.redhat.com) from StringWriter,
+/* written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StringReader;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.StringReader;
+import java.io.IOException;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+
+ String str = "There are a ton of great places to see live, original\n" +
+ "music in Chicago. Places like Lounge Ax, Schuba's, the Empty\n" +
+ "Bottle, and even the dreaded Metro with their sometimes asshole\n" +
+ "bouncers.\n";
+
+ StringReader sr = new StringReader(str);
+ harness.check(true, "StringReader(String)");
+ try { // 1.2 API adds this exception, not in 1.1
+ harness.check(sr.ready(), "ready()");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on ready()");
+ }
+ harness.check(sr.markSupported(), "markSupported()");
+ try {
+ sr.mark(0); // For this class, readahead limit should be ignored
+ harness.check(true, "mark()");
+ }
+ catch (IOException e) {
+ harness.fail("mark() should not throw exception");
+ }
+ char[] buf = new char[4];
+ try {
+ sr.read(buf, 0, 4);
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on read(buf, off, len)");
+ }
+ String bufstr = new String(buf);
+ harness.check(bufstr, "Ther", "read(buf, off, len)");
+ try { // 1.1 API does not correctly document this exception
+ sr.reset();
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on reset()");
+ }
+ harness.check(true, "reset()");
+ try {
+ sr.skip(7);
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on skip()");
+ }
+ try {
+ harness.check(sr.read(), 'r', "skip(), read()");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException on read()");
+ }
+ sr.close();
+ harness.check(true, "close()");
+
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/StringWriter/CVS/Entries b/gnu/testlet/java/io/StringWriter/CVS/Entries
new file mode 100644
index 00000000..ddc2d1c6
--- /dev/null
+++ b/gnu/testlet/java/io/StringWriter/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.5/Thu Jan 2 11:51:17 2003//
+D
diff --git a/gnu/testlet/java/io/StringWriter/CVS/Repository b/gnu/testlet/java/io/StringWriter/CVS/Repository
new file mode 100644
index 00000000..fc9e5081
--- /dev/null
+++ b/gnu/testlet/java/io/StringWriter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/StringWriter
diff --git a/gnu/testlet/java/io/StringWriter/CVS/Root b/gnu/testlet/java/io/StringWriter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/StringWriter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/StringWriter/Test.java b/gnu/testlet/java/io/StringWriter/Test.java
new file mode 100644
index 00000000..9a0729e5
--- /dev/null
+++ b/gnu/testlet/java/io/StringWriter/Test.java
@@ -0,0 +1,76 @@
+/*************************************************************************
+/* Test.java -- Test StringWriter
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.StringWriter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+
+/**
+ * Class to test StringWriter. This is just a rehash of the
+ * BufferedCharWriterTest using a StringWriter instead of a
+ * CharArrayWriter underneath.
+ */
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ StringWriter sw = new StringWriter();
+
+ String str = "There are a ton of great places to see live, original\n" +
+ "music in Chicago. Places like Lounge Ax, Schuba's, the Empty\n" +
+ "Bottle, and even the dreaded Metro with their sometimes asshole\n" +
+ "bouncers.\n";
+
+
+ char[] buf = new char[str.length()];
+ str.getChars(0, str.length(), buf, 0);
+
+ sw.write(buf, 0, 5);
+ sw.write(buf, 5, 8);
+ sw.flush();
+ harness.check(sw.toString(), str.substring(0, 13), "flush()");
+ harness.check(sw.getBuffer().toString(), str.substring(0, 13), "getBuffer()");
+ sw.write(buf, 13, 12);
+ sw.write(buf[25]);
+ sw.write(buf, 26, buf.length - 26);
+ try // IOException added in 1.2
+ {
+ sw.close();
+ }
+ catch(Throwable t)
+ {
+ harness.debug("Caught unexpected exception: " + t);
+ harness.fail("Unexpected Throwable");
+ return;
+ }
+
+ harness.debug(sw.toString());
+ harness.check(sw.toString(), str, "string equality");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/io/SyncFailedException/CVS/Entries b/gnu/testlet/java/io/SyncFailedException/CVS/Entries
new file mode 100644
index 00000000..4661179a
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Oct 15 11:09:38 2012//
+/constructor.java/1.1/Mon Oct 15 11:09:38 2012//
+D
diff --git a/gnu/testlet/java/io/SyncFailedException/CVS/Entries.Log b/gnu/testlet/java/io/SyncFailedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/SyncFailedException/CVS/Repository b/gnu/testlet/java/io/SyncFailedException/CVS/Repository
new file mode 100644
index 00000000..698b8362
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/SyncFailedException
diff --git a/gnu/testlet/java/io/SyncFailedException/CVS/Root b/gnu/testlet/java/io/SyncFailedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/SyncFailedException/TryCatch.java b/gnu/testlet/java/io/SyncFailedException/TryCatch.java
new file mode 100644
index 00000000..326393f9
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.SyncFailedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.SyncFailedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new SyncFailedException("SyncFailedException");
+ }
+ catch (SyncFailedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Entries b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..dea05514
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Oct 15 11:09:38 2012//
+/getInterfaces.java/1.1/Mon Oct 15 11:09:38 2012//
+/getModifiers.java/1.1/Mon Oct 15 11:09:38 2012//
+/getName.java/1.1/Mon Oct 15 11:09:38 2012//
+/getPackage.java/1.1/Mon Oct 15 11:09:38 2012//
+/getSimpleName.java/1.1/Mon Oct 15 11:09:38 2012//
+/getSuperclass.java/1.1/Mon Oct 15 11:09:38 2012//
+/isAssignableFrom.java/1.1/Mon Oct 15 11:09:38 2012//
+/isInstance.java/1.1/Mon Oct 15 11:09:38 2012//
+/isInterface.java/1.1/Mon Oct 15 11:09:38 2012//
+/isLocalClass.java/1.1/Mon Oct 15 11:09:38 2012//
+/isMemberClass.java/1.1/Mon Oct 15 11:09:38 2012//
+/isPrimitive.java/1.1/Mon Oct 15 11:09:38 2012//
+/isSynthetic.java/1.1/Mon Oct 15 11:09:38 2012//
+D
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Repository b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..0451d9c4
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/SyncFailedException/classInfo
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Root b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/InstanceOf.java b/gnu/testlet/java/io/SyncFailedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..a7307b70
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.SyncFailedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.SyncFailedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SyncFailedException
+ SyncFailedException o = new SyncFailedException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof SyncFailedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getInterfaces.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..368f561d
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.SyncFailedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getModifiers.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..7503a8c9
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.SyncFailedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getName.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getName.java
new file mode 100644
index 00000000..0706f3e6
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.SyncFailedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getPackage.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getPackage.java
new file mode 100644
index 00000000..cac471d6
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.SyncFailedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getSimpleName.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..225efa45
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "SyncFailedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/getSuperclass.java b/gnu/testlet/java/io/SyncFailedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..f214c429
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.SyncFailedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..376dbf34
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(SyncFailedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isInstance.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isInstance.java
new file mode 100644
index 00000000..b62685d8
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new SyncFailedException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isInterface.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isInterface.java
new file mode 100644
index 00000000..4043850a
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isLocalClass.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..184e1f9d
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isMemberClass.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..12d4b944
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isPrimitive.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..4d9e64fd
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/classInfo/isSynthetic.java b/gnu/testlet/java/io/SyncFailedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..ba4f27b8
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.SyncFailedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test for method java.io.SyncFailedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new SyncFailedException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/SyncFailedException/constructor.java b/gnu/testlet/java/io/SyncFailedException/constructor.java
new file mode 100644
index 00000000..785bc5f0
--- /dev/null
+++ b/gnu/testlet/java/io/SyncFailedException/constructor.java
@@ -0,0 +1,55 @@
+// Test if instances of a class java.io.SyncFailedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.SyncFailedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.SyncFailedException;
+
+
+
+/**
+ * Test if instances of a class java.io.SyncFailedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SyncFailedException object1 = new SyncFailedException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.SyncFailedException: nothing happens");
+
+ SyncFailedException object3 = new SyncFailedException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.SyncFailedException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries b/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries
new file mode 100644
index 00000000..6d610013
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Thu Oct 18 08:45:36 2012//
+/constructor.java/1.1/Thu Oct 18 08:45:36 2012//
+D
diff --git a/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries.Log b/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/UTFDataFormatException/CVS/Repository b/gnu/testlet/java/io/UTFDataFormatException/CVS/Repository
new file mode 100644
index 00000000..efc6228a
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/UTFDataFormatException
diff --git a/gnu/testlet/java/io/UTFDataFormatException/CVS/Root b/gnu/testlet/java/io/UTFDataFormatException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/UTFDataFormatException/TryCatch.java b/gnu/testlet/java/io/UTFDataFormatException/TryCatch.java
new file mode 100644
index 00000000..76a0bb90
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.UTFDataFormatException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.UTFDataFormatException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UTFDataFormatException("UTFDataFormatException");
+ }
+ catch (UTFDataFormatException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Entries b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Entries
new file mode 100644
index 00000000..776b6191
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu Oct 18 08:45:37 2012//
+/getInterfaces.java/1.1/Thu Oct 18 08:45:37 2012//
+/getModifiers.java/1.1/Thu Oct 18 08:45:37 2012//
+/getName.java/1.1/Thu Oct 18 08:45:37 2012//
+/getPackage.java/1.1/Thu Oct 18 08:45:37 2012//
+/getSimpleName.java/1.1/Thu Oct 18 08:45:37 2012//
+/getSuperclass.java/1.1/Thu Oct 18 08:45:37 2012//
+/isAssignableFrom.java/1.1/Thu Oct 18 08:45:37 2012//
+/isInstance.java/1.1/Thu Oct 18 08:45:37 2012//
+/isInterface.java/1.1/Thu Oct 18 08:45:37 2012//
+/isLocalClass.java/1.1/Thu Oct 18 08:45:37 2012//
+/isMemberClass.java/1.1/Thu Oct 18 08:45:37 2012//
+/isPrimitive.java/1.1/Thu Oct 18 08:45:37 2012//
+/isSynthetic.java/1.1/Thu Oct 18 08:45:37 2012//
+D
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Repository b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Repository
new file mode 100644
index 00000000..629f833f
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/UTFDataFormatException/classInfo
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Root b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/InstanceOf.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..27a53dcf
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.UTFDataFormatException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.UTFDataFormatException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UTFDataFormatException
+ UTFDataFormatException o = new UTFDataFormatException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UTFDataFormatException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getInterfaces.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..71638286
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.UTFDataFormatException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getModifiers.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getModifiers.java
new file mode 100644
index 00000000..9bdd27cf
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.UTFDataFormatException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getName.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getName.java
new file mode 100644
index 00000000..90d487d6
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.UTFDataFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getPackage.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getPackage.java
new file mode 100644
index 00000000..e773249d
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.UTFDataFormatException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSimpleName.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..607e6baf
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UTFDataFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSuperclass.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..4a650df9
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.UTFDataFormatException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..b1fa026d
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UTFDataFormatException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInstance.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInstance.java
new file mode 100644
index 00000000..07d861d7
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new UTFDataFormatException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInterface.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInterface.java
new file mode 100644
index 00000000..f11b687d
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isLocalClass.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..7f2f01ea
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isMemberClass.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..df067a3d
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isPrimitive.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..3d74ee28
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/classInfo/isSynthetic.java b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..a49e9be6
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UTFDataFormatException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test for method java.io.UTFDataFormatException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UTFDataFormatException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UTFDataFormatException/constructor.java b/gnu/testlet/java/io/UTFDataFormatException/constructor.java
new file mode 100644
index 00000000..19e0d52f
--- /dev/null
+++ b/gnu/testlet/java/io/UTFDataFormatException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.UTFDataFormatException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UTFDataFormatException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UTFDataFormatException;
+
+
+
+/**
+ * Test if instances of a class java.io.UTFDataFormatException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UTFDataFormatException object1 = new UTFDataFormatException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.UTFDataFormatException");
+
+ UTFDataFormatException object2 = new UTFDataFormatException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.UTFDataFormatException: nothing happens");
+
+ UTFDataFormatException object3 = new UTFDataFormatException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.UTFDataFormatException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries
new file mode 100644
index 00000000..ffdd80f6
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Oct 17 13:05:56 2012//
+/constructor.java/1.1/Wed Oct 17 13:05:56 2012//
+D
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries.Log b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Repository b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Repository
new file mode 100644
index 00000000..4d1a62cf
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/UnsupportedEncodingException
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Root b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/TryCatch.java b/gnu/testlet/java/io/UnsupportedEncodingException/TryCatch.java
new file mode 100644
index 00000000..144ce58d
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.UnsupportedEncodingException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.UnsupportedEncodingException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UnsupportedEncodingException("UnsupportedEncodingException");
+ }
+ catch (UnsupportedEncodingException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Entries b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Entries
new file mode 100644
index 00000000..c93db408
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Oct 17 13:05:57 2012//
+/getInterfaces.java/1.1/Wed Oct 17 13:05:57 2012//
+/getModifiers.java/1.1/Wed Oct 17 13:05:57 2012//
+/getName.java/1.1/Wed Oct 17 13:05:57 2012//
+/getPackage.java/1.1/Wed Oct 17 13:05:57 2012//
+/getSimpleName.java/1.1/Wed Oct 17 13:05:57 2012//
+/getSuperclass.java/1.1/Wed Oct 17 13:05:57 2012//
+/isAssignableFrom.java/1.1/Wed Oct 17 13:05:57 2012//
+/isInstance.java/1.1/Wed Oct 17 13:05:57 2012//
+/isInterface.java/1.1/Wed Oct 17 13:05:57 2012//
+/isLocalClass.java/1.1/Wed Oct 17 13:05:57 2012//
+/isMemberClass.java/1.1/Wed Oct 17 13:05:57 2012//
+/isPrimitive.java/1.1/Wed Oct 17 13:05:57 2012//
+/isSynthetic.java/1.1/Wed Oct 17 13:05:57 2012//
+D
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Repository b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Repository
new file mode 100644
index 00000000..b6a2baf1
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/UnsupportedEncodingException/classInfo
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Root b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/InstanceOf.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..b3894a5d
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.io.UnsupportedEncodingException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.UnsupportedEncodingException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedEncodingException
+ UnsupportedEncodingException o = new UnsupportedEncodingException("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UnsupportedEncodingException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getInterfaces.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..cd5576f8
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getModifiers.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getModifiers.java
new file mode 100644
index 00000000..b31ad2aa
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getName.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getName.java
new file mode 100644
index 00000000..b551f132
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.UnsupportedEncodingException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getPackage.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getPackage.java
new file mode 100644
index 00000000..4fff8e8e
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSimpleName.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..3cd646ac
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UnsupportedEncodingException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSuperclass.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..5fb5beb1
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.IOException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..c8ee99e1
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UnsupportedEncodingException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInstance.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInstance.java
new file mode 100644
index 00000000..4b2d4ea5
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new UnsupportedEncodingException("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInterface.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInterface.java
new file mode 100644
index 00000000..a87a25aa
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isLocalClass.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..79339e32
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isMemberClass.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..8cb796b3
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isPrimitive.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..c401be1f
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isSynthetic.java b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..8d833288
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.UnsupportedEncodingException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test for method java.io.UnsupportedEncodingException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new UnsupportedEncodingException("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/UnsupportedEncodingException/constructor.java b/gnu/testlet/java/io/UnsupportedEncodingException/constructor.java
new file mode 100644
index 00000000..085e205c
--- /dev/null
+++ b/gnu/testlet/java/io/UnsupportedEncodingException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.io.UnsupportedEncodingException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.UnsupportedEncodingException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.UnsupportedEncodingException;
+
+
+
+/**
+ * Test if instances of a class java.io.UnsupportedEncodingException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UnsupportedEncodingException object1 = new UnsupportedEncodingException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.io.UnsupportedEncodingException");
+
+ UnsupportedEncodingException object2 = new UnsupportedEncodingException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.io.UnsupportedEncodingException: nothing happens");
+
+ UnsupportedEncodingException object3 = new UnsupportedEncodingException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.io.UnsupportedEncodingException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/io/Utf8Encoding/CVS/Entries b/gnu/testlet/java/io/Utf8Encoding/CVS/Entries
new file mode 100644
index 00000000..1b9f39a2
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/CVS/Entries
@@ -0,0 +1,5 @@
+/ReadReference.java/1.2/Wed Nov 24 16:00:16 2004//
+/WriteRead.java/1.1/Mon Feb 15 19:05:31 1999//
+/mojo.java/1.2/Fri Apr 29 17:02:38 2005//
+/utf8test.bin/1.1/Wed Nov 24 16:00:16 2004/-kb/
+D
diff --git a/gnu/testlet/java/io/Utf8Encoding/CVS/Repository b/gnu/testlet/java/io/Utf8Encoding/CVS/Repository
new file mode 100644
index 00000000..32af5ea6
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/Utf8Encoding
diff --git a/gnu/testlet/java/io/Utf8Encoding/CVS/Root b/gnu/testlet/java/io/Utf8Encoding/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/Utf8Encoding/ReadReference.java b/gnu/testlet/java/io/Utf8Encoding/ReadReference.java
new file mode 100644
index 00000000..b565953d
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/ReadReference.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+/* ReadReference.java -- A quick test of the UTF8 encoding
+/*
+/* Copyright (c) 1998,1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.Utf8Encoding;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ReadReference implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str1 = "This is the first line of text\n";
+ String str2 = "This has some \u01FF\uA000\u6666\u0200 weird characters\n";
+
+ try
+ {
+ InputStream is = harness.getResourceStream(
+ "gnu#testlet#java#io#Utf8Encoding#utf8test.bin");
+ InputStreamReader isr = new InputStreamReader(is, "UTF8");
+ char[] buf = new char[255];
+
+ int chars_read = isr.read(buf, 0, str1.length());
+ String str3 = new String(buf, 0, chars_read);
+
+ chars_read = isr.read(buf, 0, str2.length());
+ String str4 = new String(buf, 0, chars_read);
+
+ harness.check(str1, str3, "Read UTF8 reference file");
+ harness.check(str2, str4, "Read UTF8 reference file");
+
+ isr.close();
+ }
+ catch(Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read UTF8 reference file");
+ }
+}
+
+} // class ReadReference
+
diff --git a/gnu/testlet/java/io/Utf8Encoding/WriteRead.java b/gnu/testlet/java/io/Utf8Encoding/WriteRead.java
new file mode 100644
index 00000000..a15d6d81
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/WriteRead.java
@@ -0,0 +1,83 @@
+/*************************************************************************
+/* WriteRead.java -- A quick test of the UTF8 encoding
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.Utf8Encoding;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class WriteRead implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String str1 = "This is the first line of text\n";
+ String str2 = "This has some \u01FF\uA000\u6666\u0200 weird characters\n";
+
+ // First write
+ try
+ {
+ FileOutputStream fos = new FileOutputStream("utf8test.out");
+ OutputStreamWriter osr = new OutputStreamWriter(fos, "UTF8");
+ osr.write(str1);
+ osr.write(str2);
+ osr.close();
+
+ harness.check(true, "Write UTF8 test (conditionally)");
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Write UTF8 test");
+ return;
+ }
+
+ // Then read
+ try
+ {
+ FileInputStream fis = new FileInputStream("utf8test.out");
+ InputStreamReader isr = new InputStreamReader(fis, "UTF8");
+ char[] buf = new char[255];
+
+ int chars_read = isr.read(buf, 0, str1.length());
+ String str3 = new String(buf, 0, chars_read);
+
+ chars_read = isr.read(buf, 0, str2.length());
+ String str4 = new String(buf, 0, chars_read);
+
+ harness.check(str1, str3, "Read UTF8 file");
+ harness.check(str2, str4, "Read UTF8 file");
+
+ isr.close();
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "Read UTF8 file");
+ }
+}
+
+} // class UTF8EncodingTest
+
diff --git a/gnu/testlet/java/io/Utf8Encoding/mojo.java b/gnu/testlet/java/io/Utf8Encoding/mojo.java
new file mode 100644
index 00000000..6e5bbce4
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/mojo.java
@@ -0,0 +1,401 @@
+// mojo.java - Test encode/decode of UTF-8.
+// From "Mojo Jojo" <mojojojo@pacbell.net>
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.Utf8Encoding;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Generates some test data and processes it using java.io character
+ * conversion support for the UTF-8 encodings. Gives that character
+ * conversion support an overall pass or fail rating.
+ *
+ * <P> Some of the test cases here are taken from standard XML test suites;
+ * UTF-8 is one of the two encodings XML processors must support, so this
+ * encoding should be very correct in order to support next generation
+ * web (and internet) applications.
+ *
+ * <P> Note that JDK 1.1 and JDK 1.2 don't currently pass these tests;
+ * there are known problems in their UTF-8 encoding support at this time.
+ */
+public class mojo implements Testlet
+{
+ //
+ // Positive tests -- test both output and input processing against
+ // various "known good" data
+ //
+ private static void positive (
+ TestHarness harness,
+ byte encoded [],
+ char decoded [],
+ String label
+ ) {
+ boolean flag = true;
+ int i = 0;
+
+ harness.checkPoint (label);
+ try {
+ //
+ // Ensure that writing encodes correctly
+ //
+ ByteArrayOutputStream out;
+ OutputStreamWriter writer;
+ byte result [];
+
+ out = new ByteArrayOutputStream ();
+ writer = new OutputStreamWriter (out, "UTF8");
+ writer.write (decoded);
+ writer.close ();
+ result = out.toByteArray ();
+
+ harness.check (result.length, encoded.length);
+ flag = true;
+ for (i = 0; i < encoded.length && i < result.length; i++) {
+ if (encoded [i] != result [i]) {
+ harness.debug ("failing index = " + i);
+ flag = false;
+ }
+ }
+ harness.check (flag);
+
+ //
+ // Ensure that reading decodes correctly
+ //
+ ByteArrayInputStream in;
+ InputStreamReader reader;
+
+ in = new ByteArrayInputStream (encoded);
+ reader = new InputStreamReader (in, "UTF8");
+
+ flag = true;
+ for (i = 0; i < decoded.length; i++) {
+ int c = reader.read ();
+
+ harness.check (c, decoded[i]);
+ if (c != decoded [i]) {
+ harness.debug (label + ": read failed, char " + i);
+ flag = false;
+ break;
+ }
+ }
+ harness.check (flag);
+
+ // Look for EOF.
+ harness.check (reader.read(), -1);
+ } catch (Exception e) {
+ harness.debug (label + ": failed "
+ + "(i = " + i + "), "
+ + e.getClass ().getName ()
+ + ", " + e.getMessage ());
+ // e.printStackTrace ();
+ }
+ return;
+ }
+
+
+ //
+ // Negative tests -- only for input processing, make sure that
+ // invalid or corrupt characters are rejected.
+ //
+ private static void negative (TestHarness harness,
+ byte encoded [], String label)
+ {
+ boolean flag = false;
+ harness.checkPoint (label);
+ try {
+ ByteArrayInputStream in;
+ InputStreamReader reader;
+ int c;
+
+ in = new ByteArrayInputStream (encoded);
+ reader = new InputStreamReader (in, "UTF8");
+
+ c = reader.read ();
+ flag = (c == 0xFFFD); // Should be replacement char
+ } catch (Throwable t) {
+ harness.debug (label + ": failed, threw "
+ + t.getClass ().getName ()
+ + ", " + t.getMessage ());
+ }
+ harness.check (flag);
+ }
+
+
+ //
+ // TEST #0: Examples from RFC 2279
+ // This is a positive test.
+ //
+ private static byte test0_bytes [] = {
+ // A<NOT IDENTICAL TO><ALPHA>.
+ (byte)0x41,
+ (byte)0xE2, (byte)0x89, (byte)0xA2,
+ (byte)0xCE, (byte)0x91,
+ (byte)0x2E,
+ // Korean word "hangugo"
+ (byte)0xED, (byte)0x95, (byte)0x9C,
+ (byte)0xEA, (byte)0xB5, (byte)0xAD,
+ (byte)0xEC, (byte)0x96, (byte)0xB4,
+ // Japanese word "nihongo"
+ (byte)0xE6, (byte)0x97, (byte)0xA5,
+ (byte)0xE6, (byte)0x9C, (byte)0xAC,
+ (byte)0xE8, (byte)0xAA, (byte)0x9E
+ };
+ private static char test0_chars [] = {
+ // A<NOT IDENTICAL TO><ALPHA>.
+ 0x0041, 0x2262, 0x0391, 0x002e,
+ // Korean word "hangugo"
+ 0xD55C, 0xAD6D, 0xC5B4,
+ // Japanese word "nihongo"
+ 0x65E5, 0x672C, 0x8A9E
+ };
+
+
+ //
+ // From RFC 2279, the ranges which define the values we focus some
+ // "organized" testing on -- test each boundary, and a little on each
+ // side of the boundary.
+ //
+ // Note that some encodings are errors: the shortest encoding must be
+ // used. On the "be lenient in what you accept" principle, those not
+ // tested as input cases; on the "be strict in what you send" principle,
+ // they are tested as output cases instead.
+ //
+ // UCS-4 range (hex.) UTF-8 octet sequence (binary)
+ // 0000 0000-0000 007F 0xxxxxxx
+ // 0000 0080-0000 07FF 110xxxxx 10xxxxxx
+ // 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ //
+ // 0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ // 0020 0000-03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ // 0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx
+ //
+
+ //
+ // TEST #1: One byte encoded values. Works just like ASCII; these
+ // encodings were chosen for boundary testing.
+ // This is a positive test.
+ //
+ // 0000 0000-0000 007F 0xxxxxxx
+ //
+ private static byte test1_bytes [] = {
+ (byte) 0x00, (byte) 0x01, (byte) 0x7e, (byte) 0x7f
+ };
+ private static char test1_chars [] = {
+ 0x0000, 0x0001, 0x007e, 0x007f
+ };
+
+
+ //
+ // TEST #2: Two byte encoded values, chosen for boundary testing.
+ // This is a positive test.
+ //
+ // 0000 0080-0000 07FF 110xxxxx 10xxxxxx
+ //
+ // Encodings CX bb, with X = 0 or 1 and 'b' values irrelevant,
+ // should have used a shorter encoding.
+ //
+ private static byte test2_bytes [] = {
+ (byte) 0xc2, (byte) 0x80,
+ (byte) 0xc2, (byte) 0x81,
+ (byte) 0xc3, (byte) 0xa0,
+ (byte) 0xdf, (byte) 0xbe,
+ (byte) 0xdf, (byte) 0xbf
+ };
+ private static char test2_chars [] = {
+ 0x0080,
+ 0x0081,
+ 0x00E0,
+ 0x07FE,
+ 0x07FF
+ };
+
+
+ //
+ // TEST #3: Three byte encoded values, chosen for boundary testing.
+ // This is a positive test.
+ //
+ // 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
+ //
+ // Encodings EO Xb bb, with X = 8 or 9 and 'b' values irrelevant,
+ // should have used a shorter encoding.
+ //
+ private static byte test3_bytes [] = {
+ (byte) 0xe0, (byte) 0xa0, (byte) 0x80,
+ (byte) 0xe0, (byte) 0xa0, (byte) 0x81,
+ // (byte) 0xe0, (byte) 0x11, (byte) 0x10,
+ // (byte) 0xe1, (byte) 0x10, (byte) 0x10,
+ (byte) 0xef, (byte) 0xbf, (byte) 0xbe,
+ (byte) 0xef, (byte) 0xbf, (byte) 0xbf
+ };
+ private static char test3_chars [] = {
+ 0x0800,
+ 0x0801,
+ // 0x????,
+ // 0x????
+ 0xFFFE,
+ 0xFFFF
+ };
+
+
+ //
+ // TEST #4: Four byte encoded values, needing surrogate pairs.
+ // This is a positive test.
+ //
+ // NOTE: some four byte encodings exceed the range of Unicode
+ // with surrogate pairs (UTF-16); those must be negatively tested.
+ //
+ // 0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ //
+ // Encodings F0 8b bb bb, where again the 'b' values are irrelevant,
+ // should have used a shorter encoding.
+ //
+ private static byte test4_bytes [] = {
+ (byte) 0xf0, (byte) 0x90, (byte) 0x80, (byte) 0x80,
+ (byte) 0xf0, (byte) 0x90, (byte) 0x80, (byte) 0x81,
+ (byte) 0xf0, (byte) 0x90, (byte) 0x88, (byte) 0x80,
+ (byte) 0xf0, (byte) 0x90, (byte) 0x90, (byte) 0x80,
+ (byte) 0xf0, (byte) 0x90, (byte) 0x8f, (byte) 0xbf,
+ (byte) 0xf1, (byte) 0x90, (byte) 0x8f, (byte) 0xbf,
+ (byte) 0xf2, (byte) 0x90, (byte) 0x8f, (byte) 0xbf,
+ (byte) 0xf4, (byte) 0x8f, (byte) 0xbf, (byte) 0xbf
+ };
+ private static char test4_chars [] = {
+ 0xD800, 0xDC00,
+ 0xD800, 0xDC01,
+ 0xD800, 0xDE00,
+ 0xD801, 0xDC00,
+ 0xD800, 0xDFFF,
+ 0xD900, 0xDFFF,
+ 0xDA00, 0xDFFF,
+ 0xDBFF, 0xDFFF,
+ };
+
+
+ //
+ // NEGATIVE TESTS: quadruple byte encodings that are out of range
+ // for UTF-16 (Unicode with surrogate pairs); five and six byte
+ // encodings (even if they're bogus encodings of 'good' values);
+ // and orphan "extension" bytes (e.g. ISO-8859-1 treated as UTF-8,
+ // accented and other non-ASCII characters should force errors).
+ //
+ private static byte test5_bytes []
+ = { (byte) 0xf7, (byte) 0x8f, (byte) 0xbf, (byte) 0xbf };
+ private static byte test6_bytes []
+ = { (byte) 0xf7, (byte) 0x8f, (byte) 0xbf, (byte) 0xbf };
+ private static byte test7_bytes []
+ = { (byte) 0xf8, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80 };
+ private static byte test8_bytes []
+ = { (byte) 0xf8, (byte) 0xbf, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80 };
+ private static byte test9_bytes []
+ = { (byte) 0xfc, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80 };
+ private static byte test10_bytes []
+ = { (byte) 0xfc, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x81 };
+ private static byte test11_bytes []
+ = { (byte) 0x80 };
+ private static byte test12_bytes []
+ = { (byte) 0xa9 };
+ private static byte test13_bytes []
+ = { (byte) 0xf7, (byte) 0x80, (byte) 0x80, (byte) 0x80 };
+
+
+ //
+ // Just for information -- see if these cases are accepted; they're
+ // all errors ("too short" encodings), but ones which generally
+ // ought to be accepted (though see RFC 2279).
+ //
+ // three encodings of ASCII NUL
+ private static byte bad0_bytes []
+ = { (byte) 0xc0, (byte) 0x80 };
+ private static byte bad1_bytes []
+ = { (byte) 0xe0, (byte) 0x80, (byte) 0x80 };
+ private static byte bad2_bytes []
+ = { (byte) 0xf0, (byte) 0x80, (byte) 0x80, (byte) 0x80 };
+
+ // ... and other values
+ private static byte bad3_bytes []
+ = { (byte) 0xc1, (byte) 0x80 };
+ private static byte bad4_bytes []
+ = { (byte) 0xe0, (byte) 0x81, (byte) 0x80 };
+ private static byte bad5_bytes []
+ = { (byte) 0xe0, (byte) 0x90, (byte) 0x80 };
+
+
+ /**
+ * Main program to give a pass or fail rating to a JVM's UTF-8 support.
+ * No arguments needed.
+ */
+ public void test (TestHarness harness)
+ {
+ boolean pass;
+
+ //
+ // Positive tests -- good data is dealt with correctly
+ //
+ positive (harness, test0_bytes, test0_chars, "RFC 2279 Examples");
+ positive (harness, test1_bytes, test1_chars, "One Byte Characters");
+ positive (harness, test2_bytes, test2_chars, "Two Byte Characters");
+ positive (harness, test3_bytes, test3_chars, "Three Byte Characters");
+ positive (harness, test4_bytes, test4_chars, "Surrogate Pairs");
+
+ //
+ // Negative tests -- "bad" data is dealt with correctly ... in
+ // this case, "bad" is just out-of-range for Unicode systems,
+ // rather than values encoded contrary to spec (such as NUL
+ // being encoded as '0xc0 0x80', not '0x00').
+ //
+ negative (harness, test5_bytes, "Four Byte Range Error (0)");
+ negative (harness, test6_bytes, "Four Byte Range Error (1)");
+ negative (harness, test7_bytes, "Five Bytes (0)");
+ negative (harness, test8_bytes, "Five Bytes (1)");
+ negative (harness, test9_bytes, "Six Bytes (0)");
+ negative (harness, test10_bytes, "Six Bytes (1)");
+ negative (harness, test11_bytes, "Orphan Continuation (1)");
+ negative (harness, test12_bytes, "Orphan Continuation (2)");
+ negative (harness, test13_bytes, "Four Byte Range Error (2)");
+
+ //
+ // Just for information
+ //
+ // FIXME: for Mauve it is simpler to turn these off. Bummer.
+// boolean strict;
+
+// System.out.println ("");
+// System.out.println ("------ checking decoder leniency ...");
+
+// strict = negative (harness, bad0_bytes, "Fat zero (0)");
+// strict &= negative (harness, bad1_bytes, "Fat zero (1)");
+// strict &= negative (harness, bad2_bytes, "Fat zero (2)");
+// strict &= negative (harness, bad3_bytes, "Fat '@' (0)");
+// strict &= negative (harness, bad4_bytes, "Fat '@' (1)");
+// strict &= negative (harness, bad5_bytes, "Fat 0x0400");
+
+// if (strict)
+// System.out.println ("... decoder is strict.");
+// else
+// System.out.println ("... decoder is lenient.");
+ }
+}
diff --git a/gnu/testlet/java/io/Utf8Encoding/utf8test.bin b/gnu/testlet/java/io/Utf8Encoding/utf8test.bin
new file mode 100644
index 00000000..0e8ea1fd
--- /dev/null
+++ b/gnu/testlet/java/io/Utf8Encoding/utf8test.bin
@@ -0,0 +1,2 @@
+This is the first line of text
+This has some ǿꀀ晦Ȁ weird characters
diff --git a/gnu/testlet/java/io/WriteAbortedException/CVS/Entries b/gnu/testlet/java/io/WriteAbortedException/CVS/Entries
new file mode 100644
index 00000000..a8a1f99a
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Oct 10 09:28:51 2012//
+/constructor.java/1.1/Wed Oct 10 09:28:51 2012//
+D
diff --git a/gnu/testlet/java/io/WriteAbortedException/CVS/Entries.Log b/gnu/testlet/java/io/WriteAbortedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/io/WriteAbortedException/CVS/Repository b/gnu/testlet/java/io/WriteAbortedException/CVS/Repository
new file mode 100644
index 00000000..ac9f2082
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/WriteAbortedException
diff --git a/gnu/testlet/java/io/WriteAbortedException/CVS/Root b/gnu/testlet/java/io/WriteAbortedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/WriteAbortedException/TryCatch.java b/gnu/testlet/java/io/WriteAbortedException/TryCatch.java
new file mode 100644
index 00000000..5a553232
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.io.WriteAbortedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.io.WriteAbortedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new WriteAbortedException("WriteAbortedException", new Exception("e"));
+ }
+ catch (WriteAbortedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Entries b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..f2ec43f9
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Oct 10 09:28:51 2012//
+/getInterfaces.java/1.1/Wed Oct 10 09:28:51 2012//
+/getModifiers.java/1.1/Wed Oct 10 09:28:51 2012//
+/getName.java/1.1/Wed Oct 10 09:28:51 2012//
+/getPackage.java/1.1/Wed Oct 10 09:28:51 2012//
+/getSimpleName.java/1.1/Wed Oct 10 09:28:51 2012//
+/getSuperclass.java/1.1/Wed Oct 10 09:28:51 2012//
+/isAssignableFrom.java/1.1/Wed Oct 10 09:28:51 2012//
+/isInstance.java/1.1/Wed Oct 10 09:28:51 2012//
+/isInterface.java/1.1/Wed Oct 10 09:28:51 2012//
+/isLocalClass.java/1.1/Wed Oct 10 09:28:51 2012//
+/isMemberClass.java/1.1/Wed Oct 10 09:28:51 2012//
+/isPrimitive.java/1.1/Wed Oct 10 09:28:51 2012//
+/isSynthetic.java/1.1/Wed Oct 10 09:28:51 2012//
+D
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Repository b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..7debde23
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/WriteAbortedException/classInfo
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Root b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/InstanceOf.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..801d399d
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.io.WriteAbortedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+import java.io.ObjectStreamException;
+import java.io.IOException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.io.WriteAbortedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class WriteAbortedException
+ WriteAbortedException o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // basic check of instanceof operator
+ harness.check(o instanceof WriteAbortedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ObjectStreamException);
+ harness.check(o instanceof IOException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getInterfaces.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ea741823
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.io.WriteAbortedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getModifiers.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..10da9214
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.io.WriteAbortedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getName.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getName.java
new file mode 100644
index 00000000..0d6ae146
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.io.WriteAbortedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getPackage.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getPackage.java
new file mode 100644
index 00000000..5cd67b9a
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.io.WriteAbortedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.io");
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getSimpleName.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ea96216e
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "WriteAbortedException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/getSuperclass.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..73afba11
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.io.WriteAbortedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.io.ObjectStreamException");
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..1a2bea36
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(WriteAbortedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isInstance.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isInstance.java
new file mode 100644
index 00000000..cbf3abb6
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new WriteAbortedException("xyzzy", new Exception("e"))));
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isInterface.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isInterface.java
new file mode 100644
index 00000000..830663e1
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isLocalClass.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..1bcc39df
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isMemberClass.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..bead079e
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isPrimitive.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..41e89864
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/classInfo/isSynthetic.java b/gnu/testlet/java/io/WriteAbortedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..195f239e
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.io.WriteAbortedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test for method java.io.WriteAbortedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new WriteAbortedException("xyzzy", new Exception("e"));
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/io/WriteAbortedException/constructor.java b/gnu/testlet/java/io/WriteAbortedException/constructor.java
new file mode 100644
index 00000000..37b329d1
--- /dev/null
+++ b/gnu/testlet/java/io/WriteAbortedException/constructor.java
@@ -0,0 +1,65 @@
+// Test if instances of a class java.io.WriteAbortedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.io.WriteAbortedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.WriteAbortedException;
+
+
+
+/**
+ * Test if instances of a class java.io.WriteAbortedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ WriteAbortedException object1 = new WriteAbortedException(null, null);
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.io.WriteAbortedException"));
+
+ WriteAbortedException object2 = new WriteAbortedException("nothing happens", null);
+ harness.check(object2 != null);
+ harness.check(object2.toString().contains("java.io.WriteAbortedException: nothing happens"));
+
+ WriteAbortedException object3 = new WriteAbortedException(null, new Exception("e"));
+ harness.check(object3 != null);
+ harness.check(object3.toString().contains("java.io.WriteAbortedException"));
+ harness.check(object3.toString().contains("Exception"));
+
+ WriteAbortedException object4 = new WriteAbortedException("nothing happens", new Exception("e"));
+ harness.check(object4 != null);
+ harness.check(object4.toString().contains("java.io.WriteAbortedException"));
+ harness.check(object4.toString().contains("Exception"));
+ harness.check(object4.toString().contains("nothing happens"));
+ }
+}
+
diff --git a/gnu/testlet/java/io/Writer/CVS/Entries b/gnu/testlet/java/io/Writer/CVS/Entries
new file mode 100644
index 00000000..f37bfde7
--- /dev/null
+++ b/gnu/testlet/java/io/Writer/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.3/Sun May 16 09:33:52 2004//
+D
diff --git a/gnu/testlet/java/io/Writer/CVS/Repository b/gnu/testlet/java/io/Writer/CVS/Repository
new file mode 100644
index 00000000..63bb01c6
--- /dev/null
+++ b/gnu/testlet/java/io/Writer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/io/Writer
diff --git a/gnu/testlet/java/io/Writer/CVS/Root b/gnu/testlet/java/io/Writer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/io/Writer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/io/Writer/Test.java b/gnu/testlet/java/io/Writer/Test.java
new file mode 100644
index 00000000..ba187ae2
--- /dev/null
+++ b/gnu/testlet/java/io/Writer/Test.java
@@ -0,0 +1,107 @@
+/*************************************************************************
+/* Test.java -- Test Writer
+/*
+/* Copyright (c) 1998, 2004 Free Software Foundation, Inc.
+/* Written by Daryl Lee (dolee@sources.redhat.com)
+/* And Mark Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.io.Writer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.Writer;
+import java.io.IOException;
+
+public class Test extends Writer implements Testlet
+{
+
+ private static final int LEN = 100;
+ private int index;
+ private char[] buf;
+
+ public Test()
+ {
+ super();
+ buf = new char[LEN];
+ index = 0;
+ }
+
+ Test(Object lock)
+ {
+ super(lock);
+ }
+
+ public void write(char cbuf[], int off, int len)
+ throws IOException
+ {
+ for (int i = 0; i < len; i++) {
+ buf[index++] = cbuf[off + i];
+ }
+ }
+
+ public void flush() throws IOException
+ {
+ // nothing to do
+ }
+
+ public void close() throws IOException
+ {
+ // nothing to do
+ }
+
+ public String toString()
+ {
+ return new String(buf, 0, index);
+ }
+
+public void
+test(TestHarness harness)
+{
+ Test tw = new Test();
+ char[] buff = {'A', 'B', 'C', 'D'};
+ try { // Just one block for all possible IOExceptions
+ tw.write('X'); // X
+ harness.check(true, "write(int)");
+ tw.write(buff); // XABCD
+ harness.check(true, "write(buf)");
+ tw.write(buff, 1, 2); // XABCDBC
+ harness.check(true, "write(buf, off, len)");
+ tw.write("YZ"); // XABCDBCYZ
+ harness.check(true, "write(string)");
+ tw.write("abcde", 2, 2); // XABCDBCYZcd
+ harness.check(tw.toString(), "XABCDBCYZcd", "All Characters written okay");
+ }
+ catch (IOException e) {
+ harness.fail("Unexpected IOException");
+ }
+
+ // The lock object must be non-null.
+ boolean npe_thrown = false;
+ try {
+ new Test(null);
+ }
+ catch (NullPointerException npe) {
+ npe_thrown = true;
+ }
+ harness.check(npe_thrown, "null lock object");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/lang/.cvsignore b/gnu/testlet/java/lang/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries b/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries
new file mode 100644
index 00000000..83d3b449
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Wed Nov 14 10:16:53 2012//
+/constructor.java/1.2/Wed Nov 14 10:16:53 2012//
+D
diff --git a/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries.Log b/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/AbstractMethodError/CVS/Repository b/gnu/testlet/java/lang/AbstractMethodError/CVS/Repository
new file mode 100644
index 00000000..2e34aeeb
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/AbstractMethodError
diff --git a/gnu/testlet/java/lang/AbstractMethodError/CVS/Root b/gnu/testlet/java/lang/AbstractMethodError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/AbstractMethodError/TryCatch.java b/gnu/testlet/java/lang/AbstractMethodError/TryCatch.java
new file mode 100644
index 00000000..2ff42545
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.AbstractMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.AbstractMethodError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new AbstractMethodError("AbstractMethodError");
+ }
+ catch (AbstractMethodError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Entries b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Entries
new file mode 100644
index 00000000..8d58ec23
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Wed Nov 14 10:16:53 2012//
+/getAnnotation.java/1.1/Mon Jan 7 10:23:43 2013//
+/getAnnotations.java/1.1/Mon Jan 7 10:23:43 2013//
+/getCanonicalName.java/1.1/Tue Jan 8 10:26:57 2013//
+/getClasses.java/1.1/Tue Jan 8 10:26:57 2013//
+/getComponentType.java/1.1/Tue Jan 8 10:26:57 2013//
+/getConstructor.java/1.1/Wed Jan 9 10:01:12 2013//
+/getConstructors.java/1.4/Wed Nov 14 10:16:53 2012//
+/getDeclaredAnnotations.java/1.1/Wed Jan 9 10:01:12 2013//
+/getDeclaredClasses.java/1.1/Thu Jan 10 08:43:25 2013//
+/getDeclaredConstructor.java/1.1/Wed Jan 9 10:01:12 2013//
+/getDeclaredConstructors.java/1.4/Wed Nov 14 10:16:53 2012//
+/getDeclaredField.java/1.2/Thu Jan 17 09:46:42 2013//
+/getDeclaredFields.java/1.5/Wed Nov 14 10:16:53 2012//
+/getDeclaredMethod.java/1.1/Thu Jan 10 08:43:25 2013//
+/getDeclaredMethods.java/1.4/Wed Nov 14 10:16:53 2012//
+/getDeclaringClass.java/1.1/Tue Jan 15 11:06:26 2013//
+/getEnclosingClass.java/1.1/Fri Jan 11 10:50:01 2013//
+/getEnclosingConstructor.java/1.1/Fri Jan 11 10:50:01 2013//
+/getEnclosingMethod.java/1.1/Fri Jan 11 10:50:01 2013//
+/getField.java/1.1/Tue Jan 15 11:06:26 2013//
+/getFields.java/1.4/Wed Nov 14 10:16:53 2012//
+/getInterfaces.java/1.4/Wed Nov 14 10:16:53 2012//
+/getMethod.java/1.1/Tue Jan 15 11:06:26 2013//
+/getMethods.java/1.5/Wed Nov 14 10:16:53 2012//
+/getModifiers.java/1.4/Wed Nov 14 10:16:53 2012//
+/getName.java/1.4/Wed Nov 14 10:16:53 2012//
+/getPackage.java/1.4/Wed Nov 14 10:16:53 2012//
+/getSimpleName.java/1.4/Wed Nov 14 10:16:53 2012//
+/getSuperclass.java/1.4/Wed Nov 14 10:16:53 2012//
+/isAnnotation.java/1.3/Wed Nov 14 10:16:53 2012//
+/isAnnotationPresent.java/1.3/Wed Nov 14 10:16:53 2012//
+/isAnonymousClass.java/1.3/Wed Nov 14 10:16:53 2012//
+/isArray.java/1.3/Wed Nov 14 10:16:53 2012//
+/isAssignableFrom.java/1.4/Wed Nov 14 10:16:53 2012//
+/isEnum.java/1.3/Wed Nov 14 10:16:53 2012//
+/isInstance.java/1.4/Wed Nov 14 10:16:53 2012//
+/isInterface.java/1.4/Wed Nov 14 10:16:53 2012//
+/isLocalClass.java/1.4/Wed Nov 14 10:16:53 2012//
+/isMemberClass.java/1.4/Wed Nov 14 10:16:53 2012//
+/isPrimitive.java/1.4/Wed Nov 14 10:16:53 2012//
+/isSynthetic.java/1.4/Wed Nov 14 10:16:53 2012//
+D
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Repository b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Repository
new file mode 100644
index 00000000..a992d884
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/AbstractMethodError/classInfo
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Root b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..2e4ddea5
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.lang.AbstractMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.lang.IncompatibleClassChangeError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.AbstractMethodError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ AbstractMethodError o = new AbstractMethodError("AbstractMethodError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof AbstractMethodError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IncompatibleClassChangeError);
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotation.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotation.java
new file mode 100644
index 00000000..0b81cea6
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.AbstractMethodError.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotations.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotations.java
new file mode 100644
index 00000000..aab1108d
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.AbstractMethodError.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..0a1fbfd8
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.AbstractMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getClasses.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getClasses.java
new file mode 100644
index 00000000..7b4f4f59
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AbstractMethodError.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getComponentType.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getComponentType.java
new file mode 100644
index 00000000..565aea34
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructor.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructor.java
new file mode 100644
index 00000000..11e84382
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.AbstractMethodError.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.AbstractMethodError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.AbstractMethodError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.AbstractMethodError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.AbstractMethodError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java
new file mode 100644
index 00000000..68ad181d
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.AbstractMethodError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.AbstractMethodError()", "java.lang.AbstractMethodError");
+ testedConstructors_jdk6.put("public java.lang.AbstractMethodError(java.lang.String)", "java.lang.AbstractMethodError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.AbstractMethodError()", "java.lang.AbstractMethodError");
+ testedConstructors_jdk7.put("public java.lang.AbstractMethodError(java.lang.String)", "java.lang.AbstractMethodError");
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..9504a483
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..f2956b99
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..016b40b5
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.AbstractMethodError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.AbstractMethodError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.AbstractMethodError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.AbstractMethodError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..9050bf7f
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.AbstractMethodError()", "java.lang.AbstractMethodError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AbstractMethodError(java.lang.String)", "java.lang.AbstractMethodError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.AbstractMethodError()", "java.lang.AbstractMethodError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AbstractMethodError(java.lang.String)", "java.lang.AbstractMethodError");
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..b1d9c220
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..a05af0f5
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.AbstractMethodError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..85953bc0
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..fc87735b
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..d09ab5ff
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..07dd8ff8
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..92e88761
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..9187716c
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getField.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getField.java
new file mode 100644
index 00000000..a281b403
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.AbstractMethodError.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java
new file mode 100644
index 00000000..73c622b8
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.AbstractMethodError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..834f8ad6
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AbstractMethodError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethod.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethod.java
new file mode 100644
index 00000000..004ce367
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.AbstractMethodError.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java
new file mode 100644
index 00000000..12b19b1b
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.AbstractMethodError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java
new file mode 100644
index 00000000..e96f8d5e
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.AbstractMethodError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java
new file mode 100644
index 00000000..1c4e7f9f
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.AbstractMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java
new file mode 100644
index 00000000..c60eb379
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ea7e7e91
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "AbstractMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..6ffc6da6
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AbstractMethodError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IncompatibleClassChangeError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..d504b39a
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..65d1f896
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.AbstractMethodError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..53c0b760
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java
new file mode 100644
index 00000000..79cf884f
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..472d1d64
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(AbstractMethodError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java
new file mode 100644
index 00000000..2e7d3085
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java
new file mode 100644
index 00000000..84c67b8f
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new AbstractMethodError("AbstractMethodError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java
new file mode 100644
index 00000000..877fbf07
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..4be9f74e
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..b75183e8
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..82dbb87f
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..95170982
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AbstractMethodError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test for method java.lang.AbstractMethodError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AbstractMethodError
+ final Object o = new AbstractMethodError("AbstractMethodError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AbstractMethodError/constructor.java b/gnu/testlet/java/lang/AbstractMethodError/constructor.java
new file mode 100644
index 00000000..084a3bec
--- /dev/null
+++ b/gnu/testlet/java/lang/AbstractMethodError/constructor.java
@@ -0,0 +1,59 @@
+// Test if constructor is working properly for a class java.lang.AbstractMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AbstractMethodError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AbstractMethodError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.AbstractMethodError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AbstractMethodError error1 = new AbstractMethodError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.AbstractMethodError");
+
+ AbstractMethodError error2 = new AbstractMethodError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.AbstractMethodError: nothing happens");
+
+ AbstractMethodError error3 = new AbstractMethodError(null);
+ harness.check(error3 != null);
+ harness.check(error3.toString(), "java.lang.AbstractMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/CVS/Entries b/gnu/testlet/java/lang/ArithmeticException/CVS/Entries
new file mode 100644
index 00000000..b78ca15b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Thu Jan 17 09:46:42 2013//
+/constructor.java/1.2/Thu Jan 17 09:46:42 2013//
+D
diff --git a/gnu/testlet/java/lang/ArithmeticException/CVS/Entries.Log b/gnu/testlet/java/lang/ArithmeticException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ArithmeticException/CVS/Repository b/gnu/testlet/java/lang/ArithmeticException/CVS/Repository
new file mode 100644
index 00000000..5e91c1c8
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArithmeticException
diff --git a/gnu/testlet/java/lang/ArithmeticException/CVS/Root b/gnu/testlet/java/lang/ArithmeticException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArithmeticException/TryCatch.java b/gnu/testlet/java/lang/ArithmeticException/TryCatch.java
new file mode 100644
index 00000000..6c5eed2f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ArithmeticException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ArithmeticException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ArithmeticException("ArithmeticException");
+ }
+ catch (ArithmeticException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Entries b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Entries
new file mode 100644
index 00000000..18d01ce4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.3/Thu Nov 15 10:06:31 2012//
+/getAnnotation.java/1.1/Fri Jan 18 09:37:14 2013//
+/getAnnotations.java/1.1/Fri Jan 18 09:37:14 2013//
+/getCanonicalName.java/1.1/Fri Jan 18 09:37:14 2013//
+/getClasses.java/1.1/Mon Jan 21 08:51:45 2013//
+/getComponentType.java/1.1/Mon Jan 21 08:51:45 2013//
+/getConstructor.java/1.1/Wed Jan 16 12:42:49 2013//
+/getConstructors.java/1.4/Wed Jan 16 12:42:49 2013//
+/getDeclaredAnnotations.java/1.1/Tue Jan 22 08:42:04 2013//
+/getDeclaredClasses.java/1.1/Mon Jan 21 08:51:45 2013//
+/getDeclaredConstructor.java/1.1/Tue Jan 22 08:42:04 2013//
+/getDeclaredConstructors.java/1.3/Thu Nov 15 10:06:31 2012//
+/getDeclaredField.java/1.1/Tue Jan 22 08:42:04 2013//
+/getDeclaredFields.java/1.4/Thu Nov 15 10:06:31 2012//
+/getDeclaredMethod.java/1.1/Tue Jan 22 08:42:04 2013//
+/getDeclaredMethods.java/1.3/Thu Nov 15 10:06:31 2012//
+/getDeclaringClass.java/1.1/Wed Jan 16 12:42:49 2013//
+/getEnclosingClass.java/1.2/Thu Jan 17 09:46:42 2013//
+/getEnclosingConstructor.java/1.2/Thu Jan 17 09:46:42 2013//
+/getEnclosingMethod.java/1.2/Thu Jan 17 09:46:42 2013//
+/getField.java/1.1/Wed Jan 16 12:42:49 2013//
+/getFields.java/1.3/Thu Nov 15 10:06:31 2012//
+/getInterfaces.java/1.4/Thu Nov 15 10:06:31 2012//
+/getMethod.java/1.1/Tue Jan 22 08:42:04 2013//
+/getMethods.java/1.4/Thu Nov 15 10:06:31 2012//
+/getModifiers.java/1.4/Thu Nov 15 10:06:31 2012//
+/getName.java/1.4/Thu Nov 15 10:06:31 2012//
+/getPackage.java/1.4/Thu Nov 15 10:06:31 2012//
+/getSimpleName.java/1.4/Thu Nov 15 10:06:31 2012//
+/getSuperclass.java/1.4/Thu Nov 15 10:06:31 2012//
+/isAnnotation.java/1.3/Thu Nov 15 10:06:31 2012//
+/isAnnotationPresent.java/1.3/Thu Nov 15 10:06:31 2012//
+/isAnonymousClass.java/1.3/Thu Nov 15 10:06:31 2012//
+/isArray.java/1.3/Thu Nov 15 10:06:31 2012//
+/isAssignableFrom.java/1.4/Thu Nov 15 10:06:31 2012//
+/isEnum.java/1.3/Thu Nov 15 10:06:31 2012//
+/isInstance.java/1.4/Thu Nov 15 10:06:31 2012//
+/isInterface.java/1.4/Thu Nov 15 10:06:31 2012//
+/isLocalClass.java/1.4/Thu Nov 15 10:06:31 2012//
+/isMemberClass.java/1.4/Thu Nov 15 10:06:31 2012//
+/isPrimitive.java/1.4/Thu Nov 15 10:06:31 2012//
+/isSynthetic.java/1.4/Thu Nov 15 10:06:31 2012//
+D
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Repository b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Repository
new file mode 100644
index 00000000..04bd03a9
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArithmeticException/classInfo
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Root b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..959082cb
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.ArithmeticException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ArithmeticException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ ArithmeticException o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ArithmeticException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotation.java
new file mode 100644
index 00000000..ad191fd1
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ArithmeticException.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotations.java
new file mode 100644
index 00000000..b66df93a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArithmeticException.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..fc0d7d61
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ArithmeticException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getClasses.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getClasses.java
new file mode 100644
index 00000000..d4b74fe2
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArithmeticException.getClass().getClasses()
+
+// Copyright (C) 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getComponentType.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getComponentType.java
new file mode 100644
index 00000000..f395629c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getComponentType()
+
+// Copyright (C) 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructor.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructor.java
new file mode 100644
index 00000000..362a887c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ArithmeticException.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArithmeticException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArithmeticException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ArithmeticException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ArithmeticException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java
new file mode 100644
index 00000000..4ebaacfb
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ArithmeticException.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ArithmeticException()", "java.lang.ArithmeticException");
+ testedConstructors_jdk6.put("public java.lang.ArithmeticException(java.lang.String)", "java.lang.ArithmeticException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ArithmeticException()", "java.lang.ArithmeticException");
+ testedConstructors_jdk7.put("public java.lang.ArithmeticException(java.lang.String)", "java.lang.ArithmeticException");
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..979af379
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..8ddf0a7b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredClasses()
+
+// Copyright (C) 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..83fb3e62
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArithmeticException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArithmeticException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ArithmeticException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ArithmeticException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..37d972d2
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArithmeticException()", "java.lang.ArithmeticException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArithmeticException(java.lang.String)", "java.lang.ArithmeticException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArithmeticException()", "java.lang.ArithmeticException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArithmeticException(java.lang.String)", "java.lang.ArithmeticException");
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..ec059343
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..c9033c8d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ArithmeticException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..31a222b6
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..06afc989
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..ee773c53
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..b1e515b9
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..328cc1b0
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..1cf05720
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getField.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getField.java
new file mode 100644
index 00000000..0644a397
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArithmeticException.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java
new file mode 100644
index 00000000..86733308
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArithmeticException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..32607fed
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArithmeticException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethod.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethod.java
new file mode 100644
index 00000000..4a38e1fa
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.ArithmeticException.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java
new file mode 100644
index 00000000..44ba0fb2
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ArithmeticException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java
new file mode 100644
index 00000000..4b28cff4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ArithmeticException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java
new file mode 100644
index 00000000..279c11a5
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ArithmeticException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java
new file mode 100644
index 00000000..9a5a2544
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..b8b0a4f3
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ArithmeticException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..ca1af268
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArithmeticException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..f85224a1
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..0995d0f5
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ArithmeticException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..5ea9a28a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java
new file mode 100644
index 00000000..b8e7c194
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..bd99e465
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ArithmeticException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java
new file mode 100644
index 00000000..0b6a772a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java
new file mode 100644
index 00000000..1b10463e
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ArithmeticException("java.lang.ArithmeticException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java
new file mode 100644
index 00000000..3ae8243a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..d57ec479
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..4f5095c1
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8af97e01
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..03368254
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArithmeticException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test for method java.lang.ArithmeticException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArithmeticException
+ final Object o = new ArithmeticException("java.lang.ArithmeticException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArithmeticException/constructor.java b/gnu/testlet/java/lang/ArithmeticException/constructor.java
new file mode 100644
index 00000000..f93ecf2f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArithmeticException/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.ArithmeticException could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArithmeticException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArithmeticException;
+
+
+
+/**
+ * Test if instances of a class java.lang.ArithmeticException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ArithmeticException object1 = new ArithmeticException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ArithmeticException");
+
+ ArithmeticException object2 = new ArithmeticException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ArithmeticException: nothing happens");
+
+ ArithmeticException object3 = new ArithmeticException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ArithmeticException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Array/CVS/Entries b/gnu/testlet/java/lang/Array/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/lang/Array/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/lang/Array/CVS/Repository b/gnu/testlet/java/lang/Array/CVS/Repository
new file mode 100644
index 00000000..bb308d56
--- /dev/null
+++ b/gnu/testlet/java/lang/Array/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Array
diff --git a/gnu/testlet/java/lang/Array/CVS/Root b/gnu/testlet/java/lang/Array/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries
new file mode 100644
index 00000000..34d0294d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Fri Jan 25 09:26:11 2013//
+/constructor.java/1.2/Fri Jan 25 09:26:11 2013//
+D
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries.Log b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Repository b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Repository
new file mode 100644
index 00000000..4e23b46c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Root b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java
new file mode 100644
index 00000000..cfa08a4b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ArrayIndexOutOfBoundsException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ArrayIndexOutOfBoundsException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ArrayIndexOutOfBoundsException("ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Entries b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Entries
new file mode 100644
index 00000000..cb077e9a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.3/Mon Jan 28 09:22:38 2013//
+/getAnnotation.java/1.1/Fri Jan 25 09:26:11 2013//
+/getAnnotations.java/1.1/Fri Jan 25 09:26:11 2013//
+/getCanonicalName.java/1.1/Fri Jan 25 09:26:11 2013//
+/getClasses.java/1.1/Mon Jan 28 09:22:38 2013//
+/getComponentType.java/1.1/Mon Jan 28 09:22:38 2013//
+/getConstructor.java/1.1/Tue Jan 29 10:19:10 2013//
+/getConstructors.java/1.3/Tue Jan 29 10:19:10 2013//
+/getDeclaredAnnotations.java/1.1/Wed Jan 30 08:40:04 2013//
+/getDeclaredClasses.java/1.1/Wed Jan 30 08:40:04 2013//
+/getDeclaredConstructor.java/1.1/Wed Jan 30 08:40:04 2013//
+/getDeclaredConstructors.java/1.3/Tue Jan 29 10:19:10 2013//
+/getDeclaredField.java/1.1/Thu Jan 31 09:01:47 2013//
+/getDeclaredFields.java/1.3/Tue Jan 29 10:19:10 2013//
+/getDeclaredMethod.java/1.1/Thu Jan 31 09:01:47 2013//
+/getDeclaredMethods.java/1.3/Tue Jan 29 10:19:10 2013//
+/getDeclaringClass.java/1.1/Thu Jan 31 09:01:47 2013//
+/getEnclosingClass.java/1.1/Thu Jan 31 09:01:47 2013//
+/getEnclosingConstructor.java/1.1/Thu Jan 31 09:01:47 2013//
+/getEnclosingMethod.java/1.1/Mon Feb 4 16:32:30 2013//
+/getField.java/1.1/Mon Feb 4 16:32:30 2013//
+/getFields.java/1.3/Tue Jan 29 10:19:10 2013//
+/getInterfaces.java/1.4/Tue Feb 5 10:11:18 2013//
+/getMethod.java/1.1/Mon Feb 4 16:32:30 2013//
+/getMethods.java/1.3/Tue Jan 29 10:19:10 2013//
+/getModifiers.java/1.4/Tue Feb 5 10:11:18 2013//
+/getName.java/1.4/Tue Feb 5 10:11:18 2013//
+/getPackage.java/1.4/Tue Feb 5 10:11:18 2013//
+/getSimpleName.java/1.4/Tue Feb 5 10:11:18 2013//
+/getSuperclass.java/1.4/Tue Feb 5 10:11:18 2013//
+/isAnnotation.java/1.3/Tue Feb 5 10:11:18 2013//
+/isAnnotationPresent.java/1.3/Tue Feb 5 10:11:18 2013//
+/isAnonymousClass.java/1.3/Tue Feb 5 10:11:18 2013//
+/isArray.java/1.3/Tue Feb 5 10:11:18 2013//
+/isAssignableFrom.java/1.4/Tue Jan 29 10:19:10 2013//
+/isEnum.java/1.3/Tue Jan 29 10:19:10 2013//
+/isInstance.java/1.4/Mon Jan 28 09:22:38 2013//
+/isInterface.java/1.4/Mon Jan 28 09:22:38 2013//
+/isLocalClass.java/1.4/Mon Jan 28 09:22:38 2013//
+/isMemberClass.java/1.4/Mon Jan 28 09:22:38 2013//
+/isPrimitive.java/1.4/Mon Jan 28 09:22:38 2013//
+/isSynthetic.java/1.4/Mon Jan 28 09:22:38 2013//
+D
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Repository b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Repository
new file mode 100644
index 00000000..c2921fad
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Root b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..e7f5bb6c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.lang.ArrayIndexOutOfBoundsException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.lang.IndexOutOfBoundsException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ArrayIndexOutOfBoundsException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ ArrayIndexOutOfBoundsException o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ArrayIndexOutOfBoundsException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IndexOutOfBoundsException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotation.java
new file mode 100644
index 00000000..6274e2e4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotations.java
new file mode 100644
index 00000000..f7aef6da
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..aa8bd164
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ArrayIndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getClasses.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getClasses.java
new file mode 100644
index 00000000..e0fb5426
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getComponentType.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getComponentType.java
new file mode 100644
index 00000000..9b69f943
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java
new file mode 100644
index 00000000..6b86cc2d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructor.java
@@ -0,0 +1,92 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {int.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java
new file mode 100644
index 00000000..ec894855
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getConstructors.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException()", "java.lang.ArrayIndexOutOfBoundsException");
+ testedConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException(int)", "java.lang.ArrayIndexOutOfBoundsException");
+ testedConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException(java.lang.String)", "java.lang.ArrayIndexOutOfBoundsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException()", "java.lang.ArrayIndexOutOfBoundsException");
+ testedConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException(int)", "java.lang.ArrayIndexOutOfBoundsException");
+ testedConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException(java.lang.String)", "java.lang.ArrayIndexOutOfBoundsException");
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..7706b13b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..86d82632
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..4812f1c4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,92 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {int.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayIndexOutOfBoundsException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..50976a6c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException()", "java.lang.ArrayIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException(int)", "java.lang.ArrayIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArrayIndexOutOfBoundsException(java.lang.String)", "java.lang.ArrayIndexOutOfBoundsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException()", "java.lang.ArrayIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException(int)", "java.lang.ArrayIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArrayIndexOutOfBoundsException(java.lang.String)", "java.lang.ArrayIndexOutOfBoundsException");
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..aab3752f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..47b014fb
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ArrayIndexOutOfBoundsException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..44138977
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..4e266cb7
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..50a34885
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..ff1805d2
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..e261f132
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..51841145
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getField.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getField.java
new file mode 100644
index 00000000..0debc028
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java
new file mode 100644
index 00000000..ce390b0e
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..0ea686a2
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethod.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethod.java
new file mode 100644
index 00000000..515412fd
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethod.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java
new file mode 100644
index 00000000..6e440b3d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java
new file mode 100644
index 00000000..70f5e70f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java
new file mode 100644
index 00000000..aa112e63
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ArrayIndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java
new file mode 100644
index 00000000..31b5b945
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..9a36df4c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ArrayIndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..286bcf36
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..b34d074d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..630100c5
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..fa5a0c5f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java
new file mode 100644
index 00000000..24e85d60
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..834af91c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ArrayIndexOutOfBoundsException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java
new file mode 100644
index 00000000..09c45386
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java
new file mode 100644
index 00000000..be08b539
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java
new file mode 100644
index 00000000..8fa44f31
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..6b141b48
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..1e69607a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..12d17aed
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..5526c22a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.ArrayIndexOutOfBoundsException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayIndexOutOfBoundsException
+ final Object o = new ArrayIndexOutOfBoundsException("java.lang.ArrayIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java
new file mode 100644
index 00000000..eae7c73d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayIndexOutOfBoundsException/constructor.java
@@ -0,0 +1,73 @@
+// Test if instances of a class java.lang.ArrayIndexOutOfBoundsException could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayIndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayIndexOutOfBoundsException;
+
+
+
+/**
+ * Test if instances of a class java.lang.ArrayIndexOutOfBoundsException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ArrayIndexOutOfBoundsException object1 = new ArrayIndexOutOfBoundsException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ArrayIndexOutOfBoundsException");
+
+ ArrayIndexOutOfBoundsException object2 = new ArrayIndexOutOfBoundsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ArrayIndexOutOfBoundsException: nothing happens");
+
+ ArrayIndexOutOfBoundsException object3 = new ArrayIndexOutOfBoundsException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ArrayIndexOutOfBoundsException");
+
+ ArrayIndexOutOfBoundsException object4 = new ArrayIndexOutOfBoundsException(0);
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0");
+
+ ArrayIndexOutOfBoundsException object5 = new ArrayIndexOutOfBoundsException(-1);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1");
+
+ ArrayIndexOutOfBoundsException object6 = new ArrayIndexOutOfBoundsException(Integer.MAX_VALUE);
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 2147483647");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries b/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries
new file mode 100644
index 00000000..3e442552
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Wed Feb 6 10:20:37 2013//
+/constructor.java/1.2/Wed Feb 6 10:20:37 2013//
+D
diff --git a/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries.Log b/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ArrayStoreException/CVS/Repository b/gnu/testlet/java/lang/ArrayStoreException/CVS/Repository
new file mode 100644
index 00000000..f9d20f29
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArrayStoreException
diff --git a/gnu/testlet/java/lang/ArrayStoreException/CVS/Root b/gnu/testlet/java/lang/ArrayStoreException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArrayStoreException/TryCatch.java b/gnu/testlet/java/lang/ArrayStoreException/TryCatch.java
new file mode 100644
index 00000000..a8af550d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ArrayStoreException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ArrayStoreException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ArrayStoreException("ArrayStoreException");
+ }
+ catch (ArrayStoreException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Entries b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Entries
new file mode 100644
index 00000000..ae0b8760
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.3/Mon Feb 18 08:37:53 2013//
+/getAnnotation.java/1.1/Tue Feb 19 08:19:52 2013//
+/getAnnotations.java/1.1/Tue Feb 19 08:19:52 2013//
+/getCanonicalName.java/1.1/Tue Feb 19 08:19:52 2013//
+/getClasses.java/1.1/Tue Feb 19 08:19:52 2013//
+/getComponentType.java/1.1/Wed Feb 20 08:24:17 2013//
+/getConstructor.java/1.1/Wed Feb 20 08:24:17 2013//
+/getConstructors.java/1.3/Mon Feb 18 08:37:53 2013//
+/getDeclaredAnnotations.java/1.1/Fri Feb 8 09:58:57 2013//
+/getDeclaredClasses.java/1.1/Fri Feb 8 09:58:57 2013//
+/getDeclaredConstructor.java/1.1/Fri Feb 8 09:58:57 2013//
+/getDeclaredConstructors.java/1.3/Thu Feb 21 08:27:26 2013//
+/getDeclaredField.java/1.1/Wed Feb 20 08:24:17 2013//
+/getDeclaredFields.java/1.3/Thu Feb 21 08:27:26 2013//
+/getDeclaredMethod.java/1.1/Wed Feb 20 08:24:17 2013//
+/getDeclaredMethods.java/1.3/Thu Feb 21 08:27:26 2013//
+/getDeclaringClass.java/1.1/Wed Feb 20 08:24:17 2013//
+/getEnclosingClass.java/1.1/Fri Feb 22 09:08:54 2013//
+/getEnclosingConstructor.java/1.1/Fri Feb 22 09:08:54 2013//
+/getEnclosingMethod.java/1.1/Fri Feb 22 09:08:54 2013//
+/getField.java/1.1/Mon Feb 25 09:43:25 2013//
+/getFields.java/1.3/Tue Feb 26 08:30:55 2013//
+/getInterfaces.java/1.4/Tue Feb 26 08:30:55 2013//
+/getMethod.java/1.1/Mon Feb 25 09:43:25 2013//
+/getMethods.java/1.4/Wed Feb 27 08:54:13 2013//
+/getModifiers.java/1.4/Tue Feb 26 08:30:56 2013//
+/getName.java/1.4/Thu Feb 21 08:27:26 2013//
+/getPackage.java/1.4/Tue Feb 26 08:30:56 2013//
+/getSimpleName.java/1.4/Tue Feb 26 08:30:56 2013//
+/getSuperclass.java/1.4/Tue Feb 26 08:30:56 2013//
+/isAnnotation.java/1.3/Tue Feb 26 08:30:56 2013//
+/isAnnotationPresent.java/1.3/Mon Feb 18 08:37:53 2013//
+/isAnonymousClass.java/1.3/Mon Feb 18 08:37:53 2013//
+/isArray.java/1.3/Mon Feb 18 08:37:53 2013//
+/isAssignableFrom.java/1.4/Mon Feb 18 08:37:53 2013//
+/isEnum.java/1.3/Wed Feb 6 10:20:37 2013//
+/isInstance.java/1.4/Wed Feb 6 10:20:37 2013//
+/isInterface.java/1.4/Wed Feb 6 10:20:37 2013//
+/isLocalClass.java/1.4/Wed Feb 6 10:20:37 2013//
+/isMemberClass.java/1.4/Thu Feb 7 09:53:30 2013//
+/isPrimitive.java/1.4/Thu Feb 7 09:53:30 2013//
+/isSynthetic.java/1.4/Thu Feb 7 09:53:30 2013//
+D
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Repository b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Repository
new file mode 100644
index 00000000..b5621173
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ArrayStoreException/classInfo
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Root b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..57b4c26d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.ArrayStoreException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ArrayStoreException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ ArrayStoreException o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ArrayStoreException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotation.java
new file mode 100644
index 00000000..34f306b4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ArrayStoreException.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotations.java
new file mode 100644
index 00000000..f90f60b7
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArrayStoreException.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..de60509e
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ArrayStoreException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getClasses.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getClasses.java
new file mode 100644
index 00000000..f14337d4
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayStoreException.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getComponentType.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getComponentType.java
new file mode 100644
index 00000000..17810fe3
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructor.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructor.java
new file mode 100644
index 00000000..90ca26f9
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ArrayStoreException.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayStoreException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayStoreException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ArrayStoreException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ArrayStoreException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java
new file mode 100644
index 00000000..9d55c788
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ArrayStoreException.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ArrayStoreException()", "java.lang.ArrayStoreException");
+ testedConstructors_jdk6.put("public java.lang.ArrayStoreException(java.lang.String)", "java.lang.ArrayStoreException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ArrayStoreException()", "java.lang.ArrayStoreException");
+ testedConstructors_jdk7.put("public java.lang.ArrayStoreException(java.lang.String)", "java.lang.ArrayStoreException");
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..4bbcf881
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..55e8fde8
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..0e92bee0
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayStoreException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ArrayStoreException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ArrayStoreException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ArrayStoreException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..795be92d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArrayStoreException()", "java.lang.ArrayStoreException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ArrayStoreException(java.lang.String)", "java.lang.ArrayStoreException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArrayStoreException()", "java.lang.ArrayStoreException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ArrayStoreException(java.lang.String)", "java.lang.ArrayStoreException");
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..e4be121d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..a27de8ea
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ArrayStoreException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..f9dad68b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..e02434cb
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..8839e954
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..d8b2ef1d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..4136d614
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..065c2d11
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getField.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getField.java
new file mode 100644
index 00000000..d8b80c42
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ArrayStoreException.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java
new file mode 100644
index 00000000..0d3083c6
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ArrayStoreException.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..3d73ecd8
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ArrayStoreException.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethod.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethod.java
new file mode 100644
index 00000000..d56e8cdb
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.ArrayStoreException.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java
new file mode 100644
index 00000000..d374597d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ArrayStoreException.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java
new file mode 100644
index 00000000..29b5fb47
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ArrayStoreException.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java
new file mode 100644
index 00000000..139a770d
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ArrayStoreException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java
new file mode 100644
index 00000000..4fa9d5a1
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..7194010b
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ArrayStoreException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..98796e63
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ArrayStoreException.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..a9343b78
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..dd50fcac
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ArrayStoreException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..b7f539ee
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java
new file mode 100644
index 00000000..510fbda3
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..cf5d4680
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ArrayStoreException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java
new file mode 100644
index 00000000..2cda6f61
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java
new file mode 100644
index 00000000..7a991b5a
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ArrayStoreException("java.lang.ArrayStoreException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java
new file mode 100644
index 00000000..ca60855f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..6d5d575f
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c15f7169
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..99455df6
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..29ad3da8
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ArrayStoreException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test for method java.lang.ArrayStoreException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ArrayStoreException
+ final Object o = new ArrayStoreException("java.lang.ArrayStoreException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ArrayStoreException/constructor.java b/gnu/testlet/java/lang/ArrayStoreException/constructor.java
new file mode 100644
index 00000000..e057a406
--- /dev/null
+++ b/gnu/testlet/java/lang/ArrayStoreException/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.ArrayStoreException could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ArrayStoreException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ArrayStoreException;
+
+
+
+/**
+ * Test if instances of a class java.lang.ArrayStoreException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ArrayStoreException object1 = new ArrayStoreException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ArrayStoreException");
+
+ ArrayStoreException object2 = new ArrayStoreException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ArrayStoreException: nothing happens");
+
+ ArrayStoreException object3 = new ArrayStoreException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ArrayStoreException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/CVS/Entries b/gnu/testlet/java/lang/AssertionError/CVS/Entries
new file mode 100644
index 00000000..e7694180
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Thu Feb 28 10:42:19 2013//
+/constructor.java/1.2/Thu Feb 28 10:42:19 2013//
+D
diff --git a/gnu/testlet/java/lang/AssertionError/CVS/Entries.Log b/gnu/testlet/java/lang/AssertionError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/AssertionError/CVS/Repository b/gnu/testlet/java/lang/AssertionError/CVS/Repository
new file mode 100644
index 00000000..8bf924f1
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/AssertionError
diff --git a/gnu/testlet/java/lang/AssertionError/CVS/Root b/gnu/testlet/java/lang/AssertionError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/AssertionError/TryCatch.java b/gnu/testlet/java/lang/AssertionError/TryCatch.java
new file mode 100644
index 00000000..ca0165a4
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.AssertionError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.AssertionError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new AssertionError("AssertionError");
+ }
+ catch (AssertionError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Entries b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Entries
new file mode 100644
index 00000000..b3a61f44
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Mon Mar 4 08:47:41 2013//
+/getAnnotation.java/1.1/Tue Mar 5 10:36:20 2013//
+/getAnnotations.java/1.1/Tue Mar 5 10:36:20 2013//
+/getCanonicalName.java/1.1/Tue Mar 5 10:36:20 2013//
+/getClasses.java/1.1/Thu Mar 7 09:32:39 2013//
+/getComponentType.java/1.1/Thu Mar 7 09:32:39 2013//
+/getConstructor.java/1.1/Fri Mar 1 09:15:39 2013//
+/getConstructors.java/1.3/Mon Mar 4 08:47:41 2013//
+/getDeclaredAnnotations.java/1.1/Thu Feb 28 10:42:19 2013//
+/getDeclaredClasses.java/1.1/Thu Feb 28 10:42:19 2013//
+/getDeclaredConstructor.java/1.1/Thu Feb 28 10:42:19 2013//
+/getDeclaredConstructors.java/1.3/Fri Mar 8 08:41:41 2013//
+/getDeclaredField.java/1.1/Fri Mar 1 09:15:39 2013//
+/getDeclaredFields.java/1.3/Fri Mar 8 08:41:41 2013//
+/getDeclaredMethod.java/1.1/Fri Mar 1 09:15:39 2013//
+/getDeclaredMethods.java/1.3/Fri Mar 8 08:41:41 2013//
+/getDeclaringClass.java/1.1/Mon Mar 11 08:50:17 2013//
+/getEnclosingClass.java/1.1/Wed Mar 6 09:39:35 2013//
+/getEnclosingConstructor.java/1.1/Wed Mar 6 09:39:35 2013//
+/getEnclosingMethod.java/1.1/Wed Mar 6 09:39:35 2013//
+/getField.java/1.1/Thu Mar 7 09:32:39 2013//
+/getFields.java/1.3/Fri Mar 8 08:41:41 2013//
+/getInterfaces.java/1.4/Fri Mar 8 08:41:41 2013//
+/getMethod.java/1.1/Mon Mar 11 08:50:17 2013//
+/getMethods.java/1.3/Wed Mar 13 09:00:06 2013//
+/getModifiers.java/1.4/Tue Mar 12 08:22:33 2013//
+/getName.java/1.4/Fri Mar 8 08:41:41 2013//
+/getPackage.java/1.4/Fri Mar 8 08:41:41 2013//
+/getSimpleName.java/1.4/Fri Mar 8 08:41:41 2013//
+/getSuperclass.java/1.4/Tue Mar 12 08:22:33 2013//
+/isAnnotation.java/1.3/Tue Mar 12 08:22:33 2013//
+/isAnnotationPresent.java/1.3/Tue Mar 12 08:22:33 2013//
+/isAnonymousClass.java/1.3/Tue Mar 12 08:22:33 2013//
+/isArray.java/1.3/Tue Mar 12 08:22:33 2013//
+/isAssignableFrom.java/1.4/Wed Mar 13 09:00:06 2013//
+/isEnum.java/1.3/Wed Mar 13 09:00:06 2013//
+/isInstance.java/1.4/Fri Mar 8 08:41:41 2013//
+/isInterface.java/1.4/Mon Mar 4 08:47:41 2013//
+/isLocalClass.java/1.4/Mon Mar 4 08:47:41 2013//
+/isMemberClass.java/1.4/Mon Mar 4 08:47:41 2013//
+/isPrimitive.java/1.4/Mon Mar 4 08:47:41 2013//
+/isSynthetic.java/1.4/Mon Mar 4 08:47:41 2013//
+D
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Repository b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Repository
new file mode 100644
index 00000000..67486e09
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/AssertionError/classInfo
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Root b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..94536388
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.AssertionError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.AssertionError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ AssertionError o = new AssertionError();
+
+ // basic check of instanceof operator
+ harness.check(o instanceof AssertionError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotation.java b/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotation.java
new file mode 100644
index 00000000..5c5232b8
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.AssertionError.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotations.java b/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotations.java
new file mode 100644
index 00000000..ae896ff7
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.AssertionError.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/AssertionError/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..ffc20894
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.AssertionError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getClasses.java b/gnu/testlet/java/lang/AssertionError/classInfo/getClasses.java
new file mode 100644
index 00000000..ed2e58da
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AssertionError.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getComponentType.java b/gnu/testlet/java/lang/AssertionError/classInfo/getComponentType.java
new file mode 100644
index 00000000..10cd1edf
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getConstructor.java b/gnu/testlet/java/lang/AssertionError/classInfo/getConstructor.java
new file mode 100644
index 00000000..d045d42d
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getConstructor.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.AssertionError.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {java.lang.Object.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {boolean.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {char.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {int.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {long.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {float.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {double.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {int.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {long.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {float.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {double.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {java.lang.Object.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {boolean.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {char.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java b/gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java
new file mode 100644
index 00000000..89f2361c
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getConstructors.java
@@ -0,0 +1,119 @@
+// Test for method java.lang.AssertionError.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.AssertionError()", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(java.lang.Object)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(boolean)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(char)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(int)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(long)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(float)", "java.lang.AssertionError");
+ testedConstructors_jdk6.put("public java.lang.AssertionError(double)", "java.lang.AssertionError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.AssertionError(int)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(long)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(float)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(double)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(java.lang.String,java.lang.Throwable)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError()", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(java.lang.Object)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(boolean)", "java.lang.AssertionError");
+ testedConstructors_jdk7.put("public java.lang.AssertionError(char)", "java.lang.AssertionError");
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..8fc003af
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..87469359
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..17aa377b
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {java.lang.Object.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {boolean.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {char.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {int.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {long.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {float.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.AssertionError", new Class[] {double.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {int.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {long.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {float.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {double.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {java.lang.Object.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {boolean.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.AssertionError", new Class[] {char.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..a87c2147
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,121 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError()", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("private java.lang.AssertionError(java.lang.String)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(java.lang.Object)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(boolean)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(char)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(int)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(long)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(float)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.AssertionError(double)", "java.lang.AssertionError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(int)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(long)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(float)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(double)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(java.lang.String,java.lang.Throwable)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError()", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("private java.lang.AssertionError(java.lang.String)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(java.lang.Object)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(boolean)", "java.lang.AssertionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.AssertionError(char)", "java.lang.AssertionError");
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..68e28895
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..3f3909bd
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.AssertionError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..e0deb48a
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..ff645231
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..216c9542
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..c885a2f4
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..eef6bb19
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..8f3856ef
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getField.java b/gnu/testlet/java/lang/AssertionError/classInfo/getField.java
new file mode 100644
index 00000000..55cf616e
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.AssertionError.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getFields.java b/gnu/testlet/java/lang/AssertionError/classInfo/getFields.java
new file mode 100644
index 00000000..7dcd2dce
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.AssertionError.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..44c1cdba
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.AssertionError.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getMethod.java b/gnu/testlet/java/lang/AssertionError/classInfo/getMethod.java
new file mode 100644
index 00000000..fb030148
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.AssertionError.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java b/gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java
new file mode 100644
index 00000000..e6cccc2b
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.AssertionError.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java b/gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java
new file mode 100644
index 00000000..c404f8c1
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.AssertionError.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getName.java b/gnu/testlet/java/lang/AssertionError/classInfo/getName.java
new file mode 100644
index 00000000..1ab581f3
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.AssertionError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java b/gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java
new file mode 100644
index 00000000..7b9434a5
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..bc328567
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "AssertionError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..c7694896
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.AssertionError.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Error");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..e9026778
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..0fdb15c4
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.AssertionError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..4ea56346
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isArray.java b/gnu/testlet/java/lang/AssertionError/classInfo/isArray.java
new file mode 100644
index 00000000..b9383829
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..01e316d0
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(AssertionError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java b/gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java
new file mode 100644
index 00000000..3d6f7865
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java b/gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java
new file mode 100644
index 00000000..5296fb9f
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new AssertionError()));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java b/gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java
new file mode 100644
index 00000000..333fcdb4
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..57918767
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..8ab6b7d1
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..cbb756cf
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..a8d7f29c
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.AssertionError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test for method java.lang.AssertionError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class AssertionError
+ final Object o = new AssertionError();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/AssertionError/constructor.java b/gnu/testlet/java/lang/AssertionError/constructor.java
new file mode 100644
index 00000000..ba067853
--- /dev/null
+++ b/gnu/testlet/java/lang/AssertionError/constructor.java
@@ -0,0 +1,83 @@
+// Test if constructor is working properly for a class java.lang.AssertionError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.AssertionError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.AssertionError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.AssertionError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ AssertionError error1 = new AssertionError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.AssertionError");
+
+ AssertionError error2 = new AssertionError(true);
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.AssertionError: true");
+
+ AssertionError error3 = new AssertionError(false);
+ harness.check(error3 != null);
+ harness.check(error3.toString(), "java.lang.AssertionError: false");
+
+ AssertionError error4 = new AssertionError('*');
+ harness.check(error4 != null);
+ harness.check(error4.toString(), "java.lang.AssertionError: *");
+
+ AssertionError error5 = new AssertionError(42);
+ harness.check(error5 != null);
+ harness.check(error5.toString(), "java.lang.AssertionError: 42");
+
+ AssertionError error6 = new AssertionError(42L);
+ harness.check(error6 != null);
+ harness.check(error6.toString(), "java.lang.AssertionError: 42");
+
+ AssertionError error7 = new AssertionError(42.0);
+ harness.check(error7 != null);
+ harness.check(error7.toString(), "java.lang.AssertionError: 42.0");
+
+ AssertionError error8 = new AssertionError(42.0f);
+ harness.check(error8 != null);
+ harness.check(error8.toString(), "java.lang.AssertionError: 42.0");
+
+ AssertionError error9 = new AssertionError("xyzzy");
+ harness.check(error9 != null);
+ harness.check(error9.toString(), "java.lang.AssertionError: xyzzy");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/.cvsignore b/gnu/testlet/java/lang/Boolean/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Boolean/BooleanTest.java b/gnu/testlet/java/lang/Boolean/BooleanTest.java
new file mode 100644
index 00000000..4aa1f660
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/BooleanTest.java
@@ -0,0 +1,129 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class BooleanTest implements Testlet
+{
+ public void test_Basics(TestHarness harness)
+ {
+ harness.checkPoint ("Basics");
+
+ harness.check (Boolean.TRUE.equals(new Boolean(true))
+ && Boolean.FALSE.equals(new Boolean(false)));
+
+ Boolean b1 = new Boolean( true );
+ Boolean b2 = new Boolean( false );
+
+ harness.check (b1.booleanValue() == true && b2.booleanValue() == false);
+
+ Boolean bs1 = new Boolean ("True");
+ Boolean bs2 = new Boolean ("False");
+ Boolean bs3 = new Boolean ("true");
+ Boolean bs4 = new Boolean ("hi");
+ Boolean bs5 = new Boolean ("");
+
+ harness.check (bs1.booleanValue() == true
+ && bs2.booleanValue() == false
+ && bs3.booleanValue() == true
+ && bs4.booleanValue() == false
+ && bs5.booleanValue() == false );
+
+ harness.check (bs1.toString().equals("true")
+ && bs2.toString().equals("false"));
+ }
+
+ public void test_equals (TestHarness harness)
+ {
+ harness.checkPoint ("equals");
+
+ Boolean b1 = new Boolean(true);
+ Boolean b2 = new Boolean(false);
+
+ harness.check (! b1.equals(new Integer(4)));
+
+ harness.check (! b1.equals(null));
+
+ harness.check (! b1.equals( b2 ));
+
+ harness.check (b1.equals( new Boolean(true) ));
+ }
+
+ public void test_hashCode(TestHarness harness)
+ {
+ harness.checkPoint ("hashCode");
+
+ Boolean b1 = new Boolean(true);
+ Boolean b2 = new Boolean(false);
+
+ harness.check ( b1.hashCode() == 1231
+ && b2.hashCode() == 1237 );
+ }
+
+ public void test_booleanValue(TestHarness harness)
+ {
+ harness.checkPoint ("booleanValue");
+
+ Boolean b1 = new Boolean(true);
+ Boolean b2 = new Boolean(false);
+
+ harness.check ( b1.booleanValue() == true
+ && b2.booleanValue() == false );
+ }
+
+ public void test_valueOf(TestHarness harness)
+ {
+ harness.checkPoint ("valueOf");
+
+ harness.check (Boolean.valueOf("True").booleanValue()
+ && Boolean.valueOf("true").booleanValue()
+ && !Boolean.valueOf("anc").booleanValue());
+ }
+
+ public void test_getBoolean(TestHarness harness)
+ {
+ harness.checkPoint ("getBoolean");
+
+ java.util.Properties prop = System.getProperties();
+ prop.put("booleankey1" , "true" );
+ prop.put("booleankey2" , "false" );
+ prop.put("booleankey3" , "hi" );
+
+ System.setProperties(prop);
+
+ harness.check ( Boolean.getBoolean("booleankey1") == true
+ && Boolean.getBoolean("booleankey2") == false
+ && Boolean.getBoolean("booleankey3") == false );
+ }
+
+ public void test (TestHarness harness)
+ {
+ test_Basics (harness);
+ test_equals (harness);
+ test_hashCode (harness);
+ test_booleanValue (harness);
+ test_valueOf (harness);
+ test_getBoolean (harness);
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/CVS/Entries b/gnu/testlet/java/lang/Boolean/CVS/Entries
new file mode 100644
index 00000000..b2093a3b
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/CVS/Entries
@@ -0,0 +1,14 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:34 1998//
+/BooleanTest.java/1.5/Mon Feb 21 15:52:44 2005//
+/compareToBoolean.java/1.1/Fri May 25 15:43:40 2012//
+/compareToObject.java/1.1/Fri May 25 15:43:40 2012//
+/equals_Boolean.java/1.5/Fri Dec 11 11:28:00 1998//
+/get.java/1.4/Fri Dec 11 11:28:01 1998//
+/hashcode_Boolean.java/1.5/Fri Dec 11 11:28:02 1998//
+/new_Boolean.java/1.6/Fri Dec 11 11:28:03 1998//
+/parseBoolean.java/1.1/Fri May 25 15:43:40 2012//
+/toString.java/1.1/Fri May 25 15:43:40 2012//
+/value.java/1.4/Fri Dec 11 11:28:04 1998//
+/valueOfBoolean.java/1.1/Fri May 25 15:43:40 2012//
+/valueOfString.java/1.1/Fri May 25 15:43:40 2012//
+D
diff --git a/gnu/testlet/java/lang/Boolean/CVS/Entries.Log b/gnu/testlet/java/lang/Boolean/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Boolean/CVS/Repository b/gnu/testlet/java/lang/Boolean/CVS/Repository
new file mode 100644
index 00000000..80c63e9a
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Boolean
diff --git a/gnu/testlet/java/lang/Boolean/CVS/Root b/gnu/testlet/java/lang/Boolean/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/CVS/Entries b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Entries
new file mode 100644
index 00000000..ea5918f1
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Wed May 9 09:39:20 2012//
+/getInterfaces.java/1.1/Wed May 9 09:39:20 2012//
+/getModifiers.java/1.1/Wed May 9 09:39:20 2012//
+/getName.java/1.1/Wed May 9 09:39:20 2012//
+/getPackage.java/1.1/Wed May 9 09:39:20 2012//
+/getSimpleName.java/1.1/Wed May 9 09:39:20 2012//
+/getSuperclass.java/1.1/Wed May 9 09:39:20 2012//
+/isAnnotation.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnnotationPresent.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnonymousClass.java/1.1/Wed Sep 19 08:54:38 2012//
+/isArray.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAssignableFrom.java/1.1/Wed May 9 09:39:20 2012//
+/isEnum.java/1.1/Wed Sep 19 08:54:38 2012//
+/isInstance.java/1.1/Wed May 9 09:39:20 2012//
+/isInterface.java/1.1/Wed May 9 09:39:20 2012//
+/isLocalClass.java/1.1/Wed May 9 09:39:20 2012//
+/isMemberClass.java/1.1/Wed May 9 09:39:20 2012//
+/isPrimitive.java/1.1/Wed May 9 09:39:20 2012//
+/isSynthetic.java/1.1/Wed May 9 09:39:20 2012//
+D
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/CVS/Repository b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Repository
new file mode 100644
index 00000000..591190cb
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Boolean/classInfo
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/CVS/Root b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Boolean/classInfo/InstanceOf.java
new file mode 100644
index 00000000..009f2c8b
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.Boolean
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Boolean
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Boolean o = new Boolean(true);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Boolean);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Boolean/classInfo/getInterfaces.java
new file mode 100644
index 00000000..af8f7f94
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getInterfaces.java
@@ -0,0 +1,58 @@
+// Test for method java.lang.Boolean.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.Boolean;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getModifiers.java b/gnu/testlet/java/lang/Boolean/classInfo/getModifiers.java
new file mode 100644
index 00000000..748dede8
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Boolean.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getName.java b/gnu/testlet/java/lang/Boolean/classInfo/getName.java
new file mode 100644
index 00000000..0ff94edb
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Boolean");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getPackage.java b/gnu/testlet/java/lang/Boolean/classInfo/getPackage.java
new file mode 100644
index 00000000..65e1a588
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Boolean.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Boolean/classInfo/getSimpleName.java
new file mode 100644
index 00000000..210b0cb1
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Boolean");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Boolean/classInfo/getSuperclass.java
new file mode 100644
index 00000000..9181dd1e
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Boolean.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Boolean/classInfo/isAnnotation.java
new file mode 100644
index 00000000..c3b7a48c
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Boolean/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..a7b5f99b
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Boolean.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Boolean/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..da7c0d88
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isArray.java b/gnu/testlet/java/lang/Boolean/classInfo/isArray.java
new file mode 100644
index 00000000..f2ca48d8
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Boolean/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..5e95da7e
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Boolean.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isEnum.java b/gnu/testlet/java/lang/Boolean/classInfo/isEnum.java
new file mode 100644
index 00000000..7889a118
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Boolean
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isInstance.java b/gnu/testlet/java/lang/Boolean/classInfo/isInstance.java
new file mode 100644
index 00000000..6f3f8ae9
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Boolean(true)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isInterface.java b/gnu/testlet/java/lang/Boolean/classInfo/isInterface.java
new file mode 100644
index 00000000..b00c9d88
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Boolean/classInfo/isLocalClass.java
new file mode 100644
index 00000000..5a6598c7
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Boolean/classInfo/isMemberClass.java
new file mode 100644
index 00000000..b258d7b0
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Boolean/classInfo/isPrimitive.java
new file mode 100644
index 00000000..98f6d7e5
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Boolean/classInfo/isSynthetic.java
new file mode 100644
index 00000000..bb30497c
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Boolean.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Boolean.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Boolean;
+
+
+
+/**
+ * Test for method java.lang.Boolean.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Boolean(true);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/compareToBoolean.java b/gnu/testlet/java/lang/Boolean/compareToBoolean.java
new file mode 100644
index 00000000..2fdb3b19
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/compareToBoolean.java
@@ -0,0 +1,70 @@
+// Test of Boolean method compareTo(Boolean).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Boolean.compareTo(Object);
+ */
+public class compareToBoolean implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Boolean b1, Boolean b2, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = b1.compareTo(b2);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ harness.checkPoint("compareTo");
+ compare(Boolean.TRUE, Boolean.TRUE, EQUAL);
+ compare(Boolean.TRUE, Boolean.FALSE, GREATER);
+ compare(Boolean.FALSE, Boolean.TRUE, LESS);
+ compare(Boolean.FALSE, Boolean.FALSE, EQUAL);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/compareToObject.java b/gnu/testlet/java/lang/Boolean/compareToObject.java
new file mode 100644
index 00000000..db12da9f
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/compareToObject.java
@@ -0,0 +1,111 @@
+// Test of Boolean method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4 -target 1.4
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Boolean.compareTo(Object);
+ */
+public class compareToObject implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Boolean i1, Object o, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(o);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ harness.checkPoint("compareTo");
+ compare(Boolean.TRUE, Boolean.TRUE, EQUAL);
+ compare(Boolean.TRUE, Boolean.FALSE, GREATER);
+ compare(Boolean.FALSE, Boolean.TRUE, LESS);
+ compare(Boolean.FALSE, Boolean.FALSE, EQUAL);
+
+ Object o = Boolean.TRUE;
+ boolean ok;
+ harness.check(((Comparable)Boolean.TRUE).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ Boolean.TRUE.compareTo((Boolean) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("negative test");
+ try {
+ Boolean a;
+ Byte b;
+ a = new Boolean(true);
+ b = new Byte((byte)1);
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ Boolean a;
+ String b;
+ a = new Boolean(true);
+ b = "foobar";
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/equals_Boolean.java b/gnu/testlet/java/lang/Boolean/equals_Boolean.java
new file mode 100644
index 00000000..4f9ea442
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/equals_Boolean.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class equals_Boolean implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Boolean a = new Boolean("true");
+ Boolean b = new Boolean("false");
+ Integer i = new Integer(123);
+
+ harness.check (! a.equals(null));
+ harness.check (! a.equals(b));
+ harness.check (a.equals(Boolean.TRUE));
+ harness.check (! a.equals(Boolean.FALSE));
+ harness.check (b.equals(Boolean.FALSE));
+ harness.check (! b.equals(i));
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/get.java b/gnu/testlet/java/lang/Boolean/get.java
new file mode 100644
index 00000000..1ca83e42
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/get.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Properties;
+
+public class get implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Augment the System properties with the following.
+ // Overwriting is bad because println needs the
+ // platform-dependent line.separator property.
+ Properties p = System.getProperties();
+ p.put("e1", "true");
+ p.put("e2", "false");
+
+ harness.check (Boolean.getBoolean("e1"));
+ harness.check (! Boolean.getBoolean("e2"));
+ harness.check (! Boolean.getBoolean("e3"));
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/hashcode_Boolean.java b/gnu/testlet/java/lang/Boolean/hashcode_Boolean.java
new file mode 100644
index 00000000..376d9e37
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/hashcode_Boolean.java
@@ -0,0 +1,36 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class hashcode_Boolean implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Boolean a = new Boolean("true");
+ Boolean b = new Boolean("false");
+
+ harness.check (a.hashCode(), 1231);
+ harness.check (b.hashCode(), 1237);
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/new_Boolean.java b/gnu/testlet/java/lang/Boolean/new_Boolean.java
new file mode 100644
index 00000000..bec99797
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/new_Boolean.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Boolean implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Boolean a = new Boolean("true");
+ Boolean b = new Boolean("TRUE");
+ Boolean c = new Boolean("tRuE");
+ Boolean d = new Boolean("false");
+ Boolean e = new Boolean("foo");
+ Boolean f = new Boolean("");
+ Boolean g = new Boolean(true);
+ Boolean h = new Boolean(false);
+
+ harness.check(a.booleanValue());
+ harness.check(b.booleanValue());
+ harness.check(c.booleanValue());
+ harness.check(! d.booleanValue());
+ harness.check(! e.booleanValue());
+ harness.check(! f.booleanValue());
+ harness.check(g.booleanValue());
+ harness.check(! h.booleanValue());
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/parseBoolean.java b/gnu/testlet/java/lang/Boolean/parseBoolean.java
new file mode 100644
index 00000000..1432e138
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/parseBoolean.java
@@ -0,0 +1,50 @@
+// Test of Boolean methods parseBoolean().
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Boolean methods parseBoolean().
+ */
+public class parseBoolean implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of static method Boolean.parseBoolean()
+ harness.check(Boolean.parseBoolean("true"), true);
+ harness.check(Boolean.parseBoolean("false"), false);
+ harness.check(Boolean.parseBoolean("TRUE"), true);
+ harness.check(Boolean.parseBoolean("FALSE"), false);
+ harness.check(Boolean.parseBoolean("True"), true);
+ harness.check(Boolean.parseBoolean("False"), false);
+ harness.check(Boolean.parseBoolean("truE"), true);
+ harness.check(Boolean.parseBoolean("falsE"), false);
+ harness.check(Boolean.parseBoolean(" true"), false);
+ harness.check(Boolean.parseBoolean(" false"), false);
+ harness.check(Boolean.parseBoolean(" true "), false);
+ harness.check(Boolean.parseBoolean(" false "), false);
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/Boolean/toString.java b/gnu/testlet/java/lang/Boolean/toString.java
new file mode 100644
index 00000000..857192ea
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/toString.java
@@ -0,0 +1,47 @@
+// Test of Boolean methods toString() and toString(boolean).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Boolean methods toString() and toString(boolean).
+ */
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of method Boolean.toString()
+ harness.check(new Boolean(true).toString(), "true");
+ harness.check(new Boolean(false).toString(), "false");
+ harness.check(new Boolean("true").toString(), "true");
+ harness.check(new Boolean("false").toString(), "false");
+
+ // test of static method Boolean.toString(boolean)
+ harness.check(Boolean.toString(true), "true");
+ harness.check(Boolean.toString(false), "false");
+ harness.check(Boolean.toString(Boolean.TRUE.booleanValue()), "true");
+ harness.check(Boolean.toString(Boolean.FALSE.booleanValue()), "false");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/value.java b/gnu/testlet/java/lang/Boolean/value.java
new file mode 100644
index 00000000..924413fe
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/value.java
@@ -0,0 +1,38 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class value implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Boolean a = new Boolean("true");
+ Boolean b = new Boolean("false");
+
+ harness.check (a.booleanValue());
+ harness.check (! b.booleanValue());
+ harness.check (a.equals(Boolean.valueOf("TrUE")));
+ harness.check (! b.equals(Boolean.valueOf("TrUE")));
+ }
+}
diff --git a/gnu/testlet/java/lang/Boolean/valueOfBoolean.java b/gnu/testlet/java/lang/Boolean/valueOfBoolean.java
new file mode 100644
index 00000000..efcd6645
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/valueOfBoolean.java
@@ -0,0 +1,38 @@
+// Test of Boolean method valueOf(boolean).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+// Tags: CompileOptions: -source 1.5
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Boolean.valueOf(boolean).
+ */
+public class valueOfBoolean implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(Boolean.valueOf(true), Boolean.TRUE);
+ harness.check(Boolean.valueOf(false), Boolean.FALSE);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Boolean/valueOfString.java b/gnu/testlet/java/lang/Boolean/valueOfString.java
new file mode 100644
index 00000000..2273d6cd
--- /dev/null
+++ b/gnu/testlet/java/lang/Boolean/valueOfString.java
@@ -0,0 +1,44 @@
+// Test of Boolean method valueOf(String)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+// Tags: CompileOptions: -source 1.5
+
+package gnu.testlet.java.lang.Boolean;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Boolean.valueOf(String).
+ */
+public class valueOfString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(Boolean.valueOf("true"), Boolean.TRUE);
+ harness.check(Boolean.valueOf("false"), Boolean.FALSE);
+ harness.check(Boolean.valueOf("TRUE"), Boolean.TRUE);
+ harness.check(Boolean.valueOf("FALSE"), Boolean.FALSE);
+ harness.check(Boolean.valueOf("tRUE"), Boolean.TRUE);
+ harness.check(Boolean.valueOf("fALSE"), Boolean.FALSE);
+ harness.check(Boolean.valueOf("tRUe"), Boolean.TRUE);
+ harness.check(Boolean.valueOf("fALSe"), Boolean.FALSE);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/.cvsignore b/gnu/testlet/java/lang/Byte/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Byte/ByteTest.java b/gnu/testlet/java/lang/Byte/ByteTest.java
new file mode 100644
index 00000000..a064e316
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/ByteTest.java
@@ -0,0 +1,148 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ByteTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.check(!( Byte.MIN_VALUE != -128 ),
+ "test_Basics - 1" );
+ harness.check(!( Byte.MAX_VALUE != 127 ),
+ "test_Basics - 2" );
+
+ Byte ch = new Byte((byte)'b');
+ harness.check(!( ch.byteValue() != (byte)'b' ),
+ "test_Basics - 3" );
+ Byte ch1 = new Byte("122");
+ harness.check(!( ch1.byteValue() != 122 ),
+ "test_Basics - 4" );
+ harness.check(!( (Byte.valueOf( "120")).byteValue() != 120 ),
+ "test_Basics - 5" );
+ harness.check(!( (Byte.valueOf( "120")).byteValue() != 120 ),
+ "test_Basics - 6" );
+
+ }
+
+ public void test_toString()
+ {
+ Byte ch = new Byte((byte)'a');
+ String str = ch.toString();
+ harness.check(!( str.length() != 2 || !str.equals("97")),
+ "test_toString" );
+ }
+
+
+ public void test_equals()
+ {
+ Byte ch1 = new Byte((byte)'+');
+ Byte ch2 = new Byte((byte)'+');
+ Byte ch3 = new Byte((byte)'-');
+
+ harness.check(!( !ch1.equals(ch2) || ch1.equals(ch3) || ch1.equals(null)),
+ "test_equals - 1" );
+ }
+
+ public void test_hashCode( )
+ {
+ Byte ch1 = new Byte((byte)'a');
+
+ harness.check(!( ch1.hashCode() != (int) 'a' ),
+ "test_hashCode" );
+ }
+
+ public void test_decode()
+ {
+ try {
+ Byte.decode("1234");
+ harness.fail("test_decode - 1" );
+ }
+ catch ( NumberFormatException e ){}
+
+ harness.check(!( Byte.decode("34").intValue() != 34 ),
+ "test_decode - 2" );
+
+ try {
+ Byte.decode("123.34");
+ harness.fail("test_decode - 3" );
+ }
+ catch ( NumberFormatException e ){}
+ try {
+ Byte.decode("ff");
+ harness.fail("test_decode - 4" );
+ }
+ catch ( NumberFormatException e ){}
+
+ }
+
+ public void test_values()
+ {
+ Byte b = new Byte( (byte)100 );
+ Byte b1 = new Byte((byte) -123 );
+ harness.check(!( b.intValue () != 100 ),
+ "test_values - 1" );
+ harness.check(!( b1.intValue () != -123 ),
+ "test_values - 2" );
+
+ harness.check(!( b.longValue () != 100 ),
+ "test_values - 3" );
+ harness.check(!( b1.longValue () != -123 ),
+ "test_values - 4" );
+ harness.check(!( b.floatValue () != 100.0f ),
+ "test_values - 5" );
+ harness.check(!( b1.floatValue () != -123.0f ),
+ "test_values - 6" );
+ harness.check(!( b.doubleValue () != 100.0 ),
+ "test_values - 7" );
+ harness.check(!( b1.doubleValue () != -123.0 ),
+ "test_values - 8" );
+ harness.check(!( b.shortValue () != 100 ),
+ "test_values - 9" );
+ harness.check(!( b1.shortValue () != -123 ),
+ "test_values - 10" );
+ harness.check(!( b.byteValue () != 100 ),
+ "test_values - 11" );
+ harness.check(!( b1.byteValue () != -123 ),
+ "test_values - 12" );
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_equals();
+ test_toString();
+ test_hashCode();
+ test_decode();
+ test_values();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Byte/CVS/Entries b/gnu/testlet/java/lang/Byte/CVS/Entries
new file mode 100644
index 00000000..2ce56a5b
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/CVS/Entries
@@ -0,0 +1,12 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:34 1998//
+/ByteTest.java/1.4/Sun Jan 29 23:12:50 2006//
+/byteDivide.java/1.1/Fri Dec 21 10:49:04 2012//
+/compareToObject.java/1.1/Tue Mar 6 13:44:33 2012//
+/new_Byte.java/1.4/Fri Dec 11 11:28:05 1998//
+/parseByte.java/1.1/Tue Mar 6 13:44:33 2012//
+/parseByteRadix.java/1.1/Tue Mar 6 13:44:33 2012//
+/toString.java/1.1/Fri May 25 15:43:40 2012//
+/valueOfByte.java/1.1/Thu Mar 15 09:12:57 2012//
+/valueOfString.java/1.1/Thu Mar 15 09:12:57 2012//
+/valueOfStringRadix.java/1.1/Thu Mar 15 09:12:57 2012//
+D
diff --git a/gnu/testlet/java/lang/Byte/CVS/Entries.Log b/gnu/testlet/java/lang/Byte/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Byte/CVS/Repository b/gnu/testlet/java/lang/Byte/CVS/Repository
new file mode 100644
index 00000000..595a06bd
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Byte
diff --git a/gnu/testlet/java/lang/Byte/CVS/Root b/gnu/testlet/java/lang/Byte/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Byte/byteDivide.java b/gnu/testlet/java/lang/Byte/byteDivide.java
new file mode 100644
index 00000000..7d0877e5
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/byteDivide.java
@@ -0,0 +1,252 @@
+// Test byte division operation.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test integer division operation.
+ */
+public class byteDivide implements Testlet
+{
+
+ /**
+ * Entry pobyte to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testDividePositiveByPositiveCase1(harness);
+ testDividePositiveByPositiveCase2(harness);
+ testDividePositiveByPositiveCase3(harness);
+ testDividePositiveByNegativeCase1(harness);
+ testDividePositiveByNegativeCase2(harness);
+ testDividePositiveByNegativeCase3(harness);
+ testDivideNegativeByPositiveCase1(harness);
+ testDivideNegativeByPositiveCase2(harness);
+ testDivideNegativeByPositiveCase3(harness);
+ testDivideNegativeByNegativeCase1(harness);
+ testDivideNegativeByNegativeCase2(harness);
+ testDivideNegativeByNegativeCase3(harness);
+ testDivideMaxValue(harness);
+ testDivideMinValue(harness);
+ testDivideByMaxValue(harness);
+ testDivideByMinValue(harness);
+ testDivideByZeroCase1(harness);
+ testDivideByZeroCase2(harness);
+ testDivideByZeroCase3(harness);
+ testDivideByZeroCase4(harness);
+ testDivideByZeroCase5(harness);
+ }
+
+ public void testDividePositiveByPositiveCase1(TestHarness harness)
+ {
+ byte x = 10;
+ byte y = 2;
+ byte z = (byte)(x / y);
+ harness.check(z == 5);
+ }
+
+ public void testDividePositiveByPositiveCase2(TestHarness harness)
+ {
+ byte x = 10;
+ byte y = 3;
+ byte z = (byte)(x / y);
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByPositiveCase3(TestHarness harness)
+ {
+ byte x = 11;
+ byte y = 3;
+ byte z = (byte)(x / y);
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByNegativeCase1(TestHarness harness)
+ {
+ byte x = 10;
+ byte y = -2;
+ byte z = (byte)(x / y);
+ harness.check(z == -5);
+ }
+
+ public void testDividePositiveByNegativeCase2(TestHarness harness)
+ {
+ byte x = 10;
+ byte y = -3;
+ byte z = (byte)(x / y);
+ harness.check(z == -3);
+ }
+
+ public void testDividePositiveByNegativeCase3(TestHarness harness)
+ {
+ byte x = 11;
+ byte y = -3;
+ byte z = (byte)(x / y);
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase1(TestHarness harness)
+ {
+ byte x = -10;
+ byte y = 2;
+ byte z = (byte)(x / y);
+ harness.check(z == -5);
+ }
+
+ public void testDivideNegativeByPositiveCase2(TestHarness harness)
+ {
+ byte x = -10;
+ byte y = 3;
+ byte z = (byte)(x / y);
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase3(TestHarness harness)
+ {
+ byte x = -11;
+ byte y = 3;
+ byte z = (byte)(x / y);
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByNegativeCase1(TestHarness harness)
+ {
+ byte x = -10;
+ byte y = -2;
+ byte z = (byte)(x / y);
+ harness.check(z == 5);
+ }
+
+ public void testDivideNegativeByNegativeCase2(TestHarness harness)
+ {
+ byte x = -10;
+ byte y = -3;
+ byte z = (byte)(x / y);
+ harness.check(z == 3);
+ }
+
+ public void testDivideNegativeByNegativeCase3(TestHarness harness)
+ {
+ byte x = -11;
+ byte y = -3;
+ byte z = (byte)(x / y);
+ harness.check(z == 3);
+ }
+
+ public void testDivideMaxValue(TestHarness harness)
+ {
+ byte x = Byte.MAX_VALUE;
+ byte y = 1;
+ byte z = (byte)(x / y);
+ harness.check(z == 127);
+ }
+
+ public void testDivideMinValue(TestHarness harness)
+ {
+ byte x = Byte.MIN_VALUE;
+ byte y = 1;
+ byte z = (byte)(x / y);
+ harness.check(z == -128);
+ }
+
+ public void testDivideByMaxValue(TestHarness harness)
+ {
+ byte x = Byte.MAX_VALUE;
+ byte y = Byte.MAX_VALUE;
+ byte z = (byte)(x / y);
+ harness.check(z == 1);
+ }
+
+ public void testDivideByMinValue(TestHarness harness)
+ {
+ byte x = Byte.MIN_VALUE;
+ byte y = Byte.MIN_VALUE;
+ byte z = (byte)(x / y);
+ harness.check(z == 1);
+ }
+
+ public void testDivideByZeroCase1(TestHarness harness)
+ {
+ byte x = 1;
+ byte y = 0;
+ try {
+ byte z = (byte)(x / y);
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase2(TestHarness harness)
+ {
+ byte x = -1;
+ byte y = 0;
+ try {
+ byte z = (byte)(x / y);
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase3(TestHarness harness)
+ {
+ byte x = Byte.MAX_VALUE;
+ byte y = 0;
+ try {
+ byte z = (byte)(x / y);
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase4(TestHarness harness)
+ {
+ byte x = Byte.MIN_VALUE;
+ byte y = 0;
+ try {
+ byte z = (byte)(x / y);
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase5(TestHarness harness)
+ {
+ byte x = 0;
+ byte y = 0;
+ try {
+ byte z = (byte)(x / y);
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/CVS/Entries b/gnu/testlet/java/lang/Byte/classInfo/CVS/Entries
new file mode 100644
index 00000000..1988f4ab
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Wed May 9 09:39:20 2012//
+/getInterfaces.java/1.1/Wed May 9 09:39:20 2012//
+/getModifiers.java/1.1/Wed May 9 09:39:20 2012//
+/getName.java/1.1/Wed May 9 09:39:20 2012//
+/getPackage.java/1.1/Wed May 9 09:39:20 2012//
+/getSimpleName.java/1.1/Wed May 9 09:39:20 2012//
+/getSuperclass.java/1.1/Wed May 9 09:39:20 2012//
+/isAnnotation.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnnotationPresent.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnonymousClass.java/1.1/Thu Sep 20 07:57:17 2012//
+/isArray.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAssignableFrom.java/1.1/Wed May 9 09:39:20 2012//
+/isEnum.java/1.1/Thu Sep 20 07:57:17 2012//
+/isInstance.java/1.1/Wed May 9 09:39:20 2012//
+/isInterface.java/1.1/Wed May 9 09:39:20 2012//
+/isLocalClass.java/1.1/Wed May 9 09:39:20 2012//
+/isMemberClass.java/1.1/Wed May 9 09:39:20 2012//
+/isPrimitive.java/1.1/Wed May 9 09:39:20 2012//
+/isSynthetic.java/1.1/Wed May 9 09:39:20 2012//
+D
diff --git a/gnu/testlet/java/lang/Byte/classInfo/CVS/Repository b/gnu/testlet/java/lang/Byte/classInfo/CVS/Repository
new file mode 100644
index 00000000..72c0cae7
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Byte/classInfo
diff --git a/gnu/testlet/java/lang/Byte/classInfo/CVS/Root b/gnu/testlet/java/lang/Byte/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Byte/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Byte/classInfo/InstanceOf.java
new file mode 100644
index 00000000..07d9528a
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Byte
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Byte
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Byte o = new Byte((byte)42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Byte);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Byte/classInfo/getInterfaces.java
new file mode 100644
index 00000000..44c298b4
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Byte.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getModifiers.java b/gnu/testlet/java/lang/Byte/classInfo/getModifiers.java
new file mode 100644
index 00000000..f900a2f4
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Byte.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getName.java b/gnu/testlet/java/lang/Byte/classInfo/getName.java
new file mode 100644
index 00000000..b8a9b69a
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Byte");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getPackage.java b/gnu/testlet/java/lang/Byte/classInfo/getPackage.java
new file mode 100644
index 00000000..0d27f1c9
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Byte.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Byte/classInfo/getSimpleName.java
new file mode 100644
index 00000000..3a18d036
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Byte");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Byte/classInfo/getSuperclass.java
new file mode 100644
index 00000000..29aebe5f
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Byte.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Byte/classInfo/isAnnotation.java
new file mode 100644
index 00000000..83c7315c
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Byte/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..90b8ba73
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Byte.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Byte/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..a1cbde9f
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isArray.java b/gnu/testlet/java/lang/Byte/classInfo/isArray.java
new file mode 100644
index 00000000..3851f93f
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Byte/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..d0247d0c
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Byte.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isEnum.java b/gnu/testlet/java/lang/Byte/classInfo/isEnum.java
new file mode 100644
index 00000000..9cbd0b59
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Byte
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isInstance.java b/gnu/testlet/java/lang/Byte/classInfo/isInstance.java
new file mode 100644
index 00000000..394fc1e6
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Byte((byte)42)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isInterface.java b/gnu/testlet/java/lang/Byte/classInfo/isInterface.java
new file mode 100644
index 00000000..82aa97f6
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Byte/classInfo/isLocalClass.java
new file mode 100644
index 00000000..59b51f4a
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Byte/classInfo/isMemberClass.java
new file mode 100644
index 00000000..1f6431da
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Byte/classInfo/isPrimitive.java
new file mode 100644
index 00000000..2998ed62
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Byte/classInfo/isSynthetic.java
new file mode 100644
index 00000000..187fa6e1
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Byte.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Byte.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Byte;
+
+
+
+/**
+ * Test for method java.lang.Byte.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Byte((byte)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/compareToObject.java b/gnu/testlet/java/lang/Byte/compareToObject.java
new file mode 100644
index 00000000..227c56e6
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/compareToObject.java
@@ -0,0 +1,163 @@
+// Test of Byte method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.compareTo(Object);
+ */
+public class compareToObject implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Byte i1, Object o, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(o);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ Byte min = new Byte(Byte.MIN_VALUE);
+ Byte negativeOne = new Byte((byte)-1);
+ Byte zero = new Byte((byte)0);
+ Byte positiveOne = new Byte((byte)1);
+ Byte max = new Byte(Byte.MAX_VALUE);
+
+ harness.checkPoint("compareTo");
+
+ compare(min, min, EQUAL);
+ compare(min, negativeOne, LESS);
+ compare(min, zero, LESS);
+ compare(min, positiveOne, LESS);
+ compare(min, max, LESS);
+
+ compare(negativeOne, min, GREATER);
+ compare(negativeOne, negativeOne, EQUAL);
+ compare(negativeOne, zero, LESS);
+ compare(negativeOne, positiveOne, LESS);
+ compare(negativeOne, max, LESS);
+
+ compare(zero, min, GREATER);
+ compare(zero, negativeOne, GREATER);
+ compare(zero, zero, EQUAL);
+ compare(zero, positiveOne, LESS);
+ compare(zero, max, LESS);
+
+ compare(positiveOne, min, GREATER);
+ compare(positiveOne, negativeOne, GREATER);
+ compare(positiveOne, zero, GREATER);
+ compare(positiveOne, positiveOne, EQUAL);
+ compare(positiveOne, max, LESS);
+
+ compare(max, min, GREATER);
+ compare(max, negativeOne, GREATER);
+ compare(max, zero, GREATER);
+ compare(max, positiveOne, GREATER);
+ compare(max, max, EQUAL);
+ Object o = zero;
+ boolean ok;
+ harness.check(((Comparable)zero).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ zero.compareTo((Byte) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo(new Object());
+ }
+ catch (ClassCastException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("negative test");
+ try {
+ Byte a;
+ Integer b;
+ a = new Byte((byte)1);
+ b = new Integer((byte)2);
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ Byte a;
+ String b;
+ a = new Byte((byte)1);
+ b = "foobar";
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/new_Byte.java b/gnu/testlet/java/lang/Byte/new_Byte.java
new file mode 100644
index 00000000..3344bec8
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/new_Byte.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Byte implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Byte a = new Byte((byte) 0);
+ Byte b = new Byte((byte) 1);
+ Byte c = new Byte(Byte.MAX_VALUE);
+ Byte d = new Byte((byte) -1);
+ Byte e = new Byte(Byte.MIN_VALUE);
+
+ harness.check (a.hashCode(), 0);
+ harness.check (b.hashCode(), 1);
+ harness.check (c.hashCode(), 127);
+ harness.check (d.hashCode(), -1);
+ harness.check (e.hashCode(), -128);
+ }
+}
diff --git a/gnu/testlet/java/lang/Byte/parseByte.java b/gnu/testlet/java/lang/Byte/parseByte.java
new file mode 100644
index 00000000..3b6036bf
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/parseByte.java
@@ -0,0 +1,182 @@
+// Test of Byte method parseByte(String).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.parseByte(String);
+ */
+public class parseByte implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ byte b;
+ b = Byte.parseByte("0");
+ harness.check(b, 0);
+
+ b = Byte.parseByte("1");
+ harness.check(b, 1);
+
+ b = Byte.parseByte("000");
+ harness.check(b, 0);
+
+ b = Byte.parseByte("007");
+ harness.check(b, 7);
+
+ b = Byte.parseByte("-0");
+ harness.check(b, 0);
+
+ b = Byte.parseByte("-1");
+ harness.check(b, -1);
+
+ b = Byte.parseByte("-128");
+ harness.check(b, Byte.MIN_VALUE);
+
+ b = Byte.parseByte("127");
+ harness.check(b, Byte.MAX_VALUE);
+
+ try
+ {
+ b = Byte.parseByte("-129");
+ harness.fail("-129 is to small for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("128");
+ harness.fail("128 is to big for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ // In JDK1.7, '+' is considered a valid character.
+ // it means that the following step should be divided
+ // for pre JDK1.7 case and >= JDK1.7
+ if (conformToJDK17()) {
+ try
+ {
+ b = Byte.parseByte("+10");
+ harness.check(true);
+ harness.check(b, 10);
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
+ }
+ }
+ else { // pre JDK1.7 branch
+ try
+ {
+ b = Byte.parseByte("+10");
+ harness.fail("'+10' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ try
+ {
+ b = Byte.parseByte(null);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("");
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Integer.parseInt(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Byte/parseByteRadix.java b/gnu/testlet/java/lang/Byte/parseByteRadix.java
new file mode 100644
index 00000000..8f6d5a05
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/parseByteRadix.java
@@ -0,0 +1,204 @@
+// Test of Byte method parseByte(String, radix).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.parseByte(String, radix);
+ */
+public class parseByteRadix implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ byte b;
+
+ b = Byte.parseByte("0", 2);
+ harness.check(b, 0);
+ b = Byte.parseByte("0", 10);
+ harness.check(b, 0);
+ b = Byte.parseByte("0", 16);
+ harness.check(b, 0);
+ b = Byte.parseByte("0", 36);
+ harness.check(b, 0);
+
+ b = Byte.parseByte("10", 8);
+ harness.check(b, 8);
+ b = Byte.parseByte("10", 10);
+ harness.check(b, 10);
+ b = Byte.parseByte("10", 16);
+ harness.check(b, 16);
+
+ b = Byte.parseByte("z", 36);
+ harness.check(b, 35);
+
+ b = Byte.parseByte("-80", 16);
+ harness.check(b, Byte.MIN_VALUE);
+
+ b = Byte.parseByte("7f", 16);
+ harness.check(b, Byte.MAX_VALUE);
+
+ try
+ {
+ b = Byte.parseByte("10", Character.MIN_RADIX - 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("10", Character.MAX_RADIX + 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("-129");
+ harness.fail("-129 is to small for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("128");
+ harness.fail("128 is to big for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ // In JDK1.7, '+' is considered a valid character.
+ // it means that the following step should be divided
+ // for pre JDK1.7 case and >= JDK1.7
+ if (conformToJDK17()) {
+ try
+ {
+ b = Byte.parseByte("+10", 10);
+ harness.check(true);
+ harness.check(b, 10);
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
+ }
+ }
+ else { // pre JDK1.7 branch
+ try
+ {
+ b = Byte.parseByte("+10", 10);
+ harness.fail("'+10' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ try
+ {
+ b = Byte.parseByte(null, 10);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ b = Byte.parseByte("", 10);
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Integer.parseInt(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Byte/toString.java b/gnu/testlet/java/lang/Byte/toString.java
new file mode 100644
index 00000000..0542f7fc
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/toString.java
@@ -0,0 +1,49 @@
+// Test of Byte methods toString() and toString(byte).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Byte methods toString() and toString(byte).
+ */
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of method Byte.toString()
+ harness.check(new Byte((byte)0).toString(), "0");
+ harness.check(new Byte((byte)-1).toString(), "-1");
+ harness.check(new Byte((byte)1).toString(), "1");
+ harness.check(new Byte((byte)127).toString(), "127");
+ harness.check(new Byte((byte)-128).toString(), "-128");
+
+ // test of static method Byte.toString(byte)
+ harness.check(Byte.toString((byte)0), "0");
+ harness.check(Byte.toString((byte)-1), "-1");
+ harness.check(Byte.toString((byte)1), "1");
+ harness.check(Byte.toString((byte)127), "127");
+ harness.check(Byte.toString((byte)-128), "-128");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/valueOfByte.java b/gnu/testlet/java/lang/Byte/valueOfByte.java
new file mode 100644
index 00000000..0a3a5bd8
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/valueOfByte.java
@@ -0,0 +1,41 @@
+// Test of Byte method valueOf(byte).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+// Tags: CompileOptions: -source 1.5
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.valueOf(byte).
+ */
+public class valueOfByte implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(new Byte((byte)0).equals(Byte.valueOf((byte)0)));
+ harness.check(new Byte((byte)-1).equals(Byte.valueOf((byte)-1)));
+ harness.check(new Byte((byte)1).equals(Byte.valueOf((byte)1)));
+ harness.check(new Byte((byte)127).equals(Byte.valueOf((byte)127)));
+ harness.check(new Byte((byte)-128).equals(Byte.valueOf((byte)-128)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/valueOfString.java b/gnu/testlet/java/lang/Byte/valueOfString.java
new file mode 100644
index 00000000..96f6b36f
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/valueOfString.java
@@ -0,0 +1,139 @@
+// Test of Byte method valueOf(String).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.valueOf(String).
+ */
+public class valueOfString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(new Byte((byte)0).equals(Byte.valueOf("0")));
+ harness.check(new Byte((byte)-1).equals(Byte.valueOf("-1")));
+ harness.check(new Byte((byte)1).equals(Byte.valueOf("1")));
+ harness.check(new Byte((byte)127).equals(Byte.valueOf("127")));
+ harness.check(new Byte((byte)-128).equals(Byte.valueOf("-128")));
+
+ try
+ {
+ Byte.valueOf("10", Character.MIN_RADIX - 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("10", Character.MAX_RADIX + 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("-129");
+ harness.fail("-129 is to small for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("128");
+ harness.fail("128 is to big for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf(null, 10);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("", 10);
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Byte/valueOfStringRadix.java b/gnu/testlet/java/lang/Byte/valueOfStringRadix.java
new file mode 100644
index 00000000..988bc1aa
--- /dev/null
+++ b/gnu/testlet/java/lang/Byte/valueOfStringRadix.java
@@ -0,0 +1,146 @@
+// Test of Byte method valueOf(String, radix).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Byte;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Byte.valueOf(String, radix);
+ */
+public class valueOfStringRadix implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(Byte.valueOf("0", 2).equals(new Byte((byte)0)));
+ harness.check(Byte.valueOf("0", 10).equals(new Byte((byte)0)));
+ harness.check(Byte.valueOf("0", 16).equals(new Byte((byte)0)));
+ harness.check(Byte.valueOf("0", 36).equals(new Byte((byte)0)));
+
+ harness.check(Byte.valueOf("10", 2).equals(new Byte((byte)2)));
+ harness.check(Byte.valueOf("10", 10).equals(new Byte((byte)10)));
+ harness.check(Byte.valueOf("10", 16).equals(new Byte((byte)16)));
+ harness.check(Byte.valueOf("10", 36).equals(new Byte((byte)36)));
+
+ harness.check(Byte.valueOf("z", 36).equals(new Byte((byte)35)));
+
+ try
+ {
+ Byte.valueOf("10", Character.MIN_RADIX - 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("10", Character.MAX_RADIX + 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("-129");
+ harness.fail("-129 is to small for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("128");
+ harness.fail("128 is to big for a byte");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf(null, 10);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ Byte.valueOf("", 10);
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/CVS/Entries b/gnu/testlet/java/lang/CVS/Entries
new file mode 100644
index 00000000..85e0d4cd
--- /dev/null
+++ b/gnu/testlet/java/lang/CVS/Entries
@@ -0,0 +1,2 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:34 1998//
+D
diff --git a/gnu/testlet/java/lang/CVS/Entries.Log b/gnu/testlet/java/lang/CVS/Entries.Log
new file mode 100644
index 00000000..76db225b
--- /dev/null
+++ b/gnu/testlet/java/lang/CVS/Entries.Log
@@ -0,0 +1,80 @@
+A D/AbstractMethodError////
+A D/ArithmeticException////
+A D/Array////
+A D/ArrayIndexOutOfBoundsException////
+A D/ArrayStoreException////
+A D/AssertionError////
+A D/Boolean////
+A D/Byte////
+A D/Character////
+A D/Class////
+A D/ClassCastException////
+A D/ClassCircularityError////
+A D/ClassFormatError////
+A D/ClassLoader////
+A D/ClassNotFoundException////
+A D/CloneNotSupportedException////
+A D/Cloneable////
+A D/Double////
+A D/Enum////
+A D/EnumConstantNotPresentException////
+A D/Error////
+A D/Exception////
+A D/ExceptionInInitializerError////
+A D/Float////
+A D/IllegalAccessError////
+A D/IllegalAccessException////
+A D/IllegalArgumentException////
+A D/IllegalMonitorStateException////
+A D/IllegalStateException////
+A D/IllegalThreadStateException////
+A D/IncompatibleClassChangeError////
+A D/IndexOutOfBoundsException////
+A D/InheritableThreadLocal////
+A D/InstantiationError////
+A D/InstantiationException////
+A D/Integer////
+A D/InternalError////
+A D/InterruptedException////
+A D/LinkageError////
+A D/Long////
+A D/Math////
+A D/NegativeArraySizeException////
+A D/NoClassDefFoundError////
+A D/NoSuchFieldError////
+A D/NoSuchFieldException////
+A D/NoSuchMethodError////
+A D/NoSuchMethodException////
+A D/NullPointerException////
+A D/Number////
+A D/NumberFormatException////
+A D/Object////
+A D/OutOfMemoryError////
+A D/Package////
+A D/Process////
+A D/ProcessBuilder////
+A D/Runtime////
+A D/RuntimeException////
+A D/SecurityException////
+A D/SecurityManager////
+A D/Short////
+A D/StackOverflowError////
+A D/StrictMath////
+A D/String////
+A D/StringBuffer////
+A D/StringBuilder////
+A D/StringIndexOutOfBoundsException////
+A D/System////
+A D/Thread////
+A D/ThreadDeath////
+A D/ThreadGroup////
+A D/ThreadLocal////
+A D/TypeNotPresentException////
+A D/UnknownError////
+A D/UnsatisfiedLinkError////
+A D/UnsupportedClassVersionError////
+A D/UnsupportedOperationException////
+A D/VerifyError////
+A D/management////
+A D/ref////
+A D/reflect////
diff --git a/gnu/testlet/java/lang/CVS/Repository b/gnu/testlet/java/lang/CVS/Repository
new file mode 100644
index 00000000..dccbf29d
--- /dev/null
+++ b/gnu/testlet/java/lang/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang
diff --git a/gnu/testlet/java/lang/CVS/Root b/gnu/testlet/java/lang/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Character/.cvsignore b/gnu/testlet/java/lang/Character/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Character/Blocks.java b/gnu/testlet/java/lang/Character/Blocks.java
new file mode 100644
index 00000000..85d996c5
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/Blocks.java
@@ -0,0 +1,38 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.lang.Character;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class Blocks
+ implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ harness.check(Character.UnicodeBlock.of('\u2191'), Character.UnicodeBlock.ARROWS);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Character/Blocks15.java b/gnu/testlet/java/lang/Character/Blocks15.java
new file mode 100644
index 00000000..d3b0b409
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/Blocks15.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.5
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.lang.Character;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class Blocks15
+ implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ harness.check(Character.UnicodeBlock.forName("Greek"), Character.UnicodeBlock.GREEK);
+ harness.check(Character.UnicodeBlock.forName("Combining Marks for Symbols"),
+ Character.UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS);
+ harness.check(Character.UnicodeBlock.forName("CombiningMarksforSymbols"),
+ Character.UnicodeBlock.COMBINING_MARKS_FOR_SYMBOLS);
+ harness.check(Character.UnicodeBlock.forName("Miscellaneous Mathematical Symbols-B"),
+ Character.UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B);
+ harness.check(Character.UnicodeBlock.forName("MiscellaneousMathematicalSymbols-B"),
+ Character.UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B);
+ harness.check(Character.UnicodeBlock.forName("Miscellaneous_Mathematical_Symbols_B"),
+ Character.UnicodeBlock.MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B);
+ try
+ {
+ Character.UnicodeBlock.forName(null);
+ harness.fail("null allowed to forName()");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ Character.UnicodeBlock.forName("GNU Classpath Characters");
+ harness.fail("Allowed request for invalid character set to forName()");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ harness.check(Character.UnicodeBlock.of(0x2191), Character.UnicodeBlock.ARROWS);
+ harness.check(Character.UnicodeBlock.of(0x100000),
+ Character.UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B);
+ try
+ {
+ Character.UnicodeBlock.of(0x200000);
+ harness.fail("Allowed invalid codepoint to of(int)");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Character/CVS/Entries b/gnu/testlet/java/lang/Character/CVS/Entries
new file mode 100644
index 00000000..55d419aa
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CVS/Entries
@@ -0,0 +1,22 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:34 1998//
+/Blocks.java/1.1/Sun May 21 17:34:48 2006//
+/Blocks15.java/1.2/Tue Jun 19 19:44:56 2007//
+/CharInfo.java/1.5/Wed Jul 18 18:44:58 2007//
+/CharacterTest.java/1.4/Sun Jan 29 23:12:50 2006//
+/UnicodeBase.java/1.3/Wed Jul 18 18:46:43 2007//
+/UnicodeData-3.0.0.txt/1.1/Thu Apr 8 16:05:36 2004//
+/UnicodeData-4.0.0.txt/1.1/Wed Jul 18 18:24:29 2007//
+/UnicodeData.txt/1.3/Thu Jan 14 16:36:07 1999//
+/classify.java/1.6/Fri Dec 11 11:28:06 1998//
+/classify12.java/1.4/Tue Jun 19 19:44:56 2007//
+/consts.java/1.5/Fri Dec 11 11:28:08 1998//
+/digit.java/1.5/Fri Dec 11 11:28:09 1998//
+/equals_Character.java/1.4/Fri Dec 11 11:28:10 1998//
+/forDigit.java/1.4/Fri Dec 11 11:28:11 1998//
+/getNumericValue.java/1.4/Fri Dec 11 11:28:12 1998//
+/getType.java/1.9/Thu Apr 26 14:39:21 2012//
+/getType12.java/1.3/Fri Dec 11 11:28:14 1998//
+/hash.java/1.4/Fri Dec 11 11:28:15 1998//
+/to.java/1.5/Fri Dec 11 11:28:16 1998//
+/unicode.java/1.18/Wed Jul 18 18:44:36 2007//
+D
diff --git a/gnu/testlet/java/lang/Character/CVS/Entries.Log b/gnu/testlet/java/lang/Character/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Character/CVS/Repository b/gnu/testlet/java/lang/Character/CVS/Repository
new file mode 100644
index 00000000..b3e2d4a2
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Character
diff --git a/gnu/testlet/java/lang/Character/CVS/Root b/gnu/testlet/java/lang/Character/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Character/CharInfo.java b/gnu/testlet/java/lang/Character/CharInfo.java
new file mode 100644
index 00000000..388aaf0a
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CharInfo.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+/* Copyright (C) 1999 Artur Biesiadowski
+
+ 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. */
+
+// Originally, this was implemented as an inner-class. However, we
+// have resolved, to the extent that is possible, to restrict
+// ourselves to JLS 1.0 features.
+
+package gnu.testlet.java.lang.Character;
+
+public class CharInfo
+{
+ public String name;
+ public String category;
+ public int decimalDigit;
+ public int digit;
+ public int numericValue;
+ public int uppercase;
+ public int lowercase;
+ public int titlecase;
+ public int code;
+}
diff --git a/gnu/testlet/java/lang/Character/CharacterTest.java b/gnu/testlet/java/lang/Character/CharacterTest.java
new file mode 100644
index 00000000..f05cdbe0
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/CharacterTest.java
@@ -0,0 +1,182 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class CharacterTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.check(!(Character.forDigit(8, 2) != '\0'),
+ "test_forDigit - 50");
+ harness.check(!(Character.forDigit(-3, 2) != '\0'),
+ "test_forDigit - 51");
+ harness.check(!(Character.forDigit(2, 8) != '2'),
+ "test_forDigit - 52");
+ harness.check(!(Character.forDigit(12, 16) != 'c'),
+ "test_forDigit - 53");
+
+ harness.check(!(Character.isJavaLetter('\uFFFF')),
+ "test_forDigit - 54");
+ harness.check(!(!Character.isJavaLetter('a')),
+ "test_forDigit - 55");
+
+
+
+ harness.check(!( Character.MIN_VALUE != '\u0000' ),
+ "test_Basics - 1" );
+ harness.check(!( Character.MAX_VALUE != '\uffff' ),
+ "test_Basics - 2" );
+ harness.check(!( Character.MIN_RADIX != 2 ),
+ "test_Basics - 3" );
+ harness.check(!( Character.MAX_RADIX != 36 ),
+ "test_Basics - 4" );
+
+ Character ch = new Character('b');
+ harness.check(!( ch.charValue() != 'b' ),
+ "test_Basics - 5" );
+ }
+
+ public void test_toString()
+ {
+ Character ch = new Character('a');
+ String str = ch.toString();
+
+ harness.check(!( str.length() != 1 || !str.equals("a")),
+ "test_toString " );
+ }
+
+
+ public void test_equals()
+ {
+ Character ch1 = new Character('+');
+ Character ch2 = new Character('+');
+ Character ch3 = new Character('-');
+
+ harness.check(!( !ch1.equals(ch2) || ch1.equals(ch3) || ch1.equals(null)),
+ "test_equals - 1" );
+ }
+
+ public void test_hashCode( )
+ {
+ Character ch1 = new Character('a');
+
+ harness.check(!( ch1.hashCode() != (int) 'a' ),
+ "test_hashCode" );
+ }
+
+
+ public void test_isSpace( )
+ {
+ harness.check(!(!Character.isSpace('\t') ||
+ !Character.isSpace('\f') ||
+ !Character.isSpace('\r') ||
+ !Character.isSpace('\n') ||
+ !Character.isSpace(' ') ||
+ Character.isSpace('+') ),
+ "test_isSpace" );
+
+ }
+
+ public void test_digit( )
+ {
+ // radix wrong
+ harness.check(!( Character.digit( 'a' , Character.MIN_RADIX - 1 ) != -1 ),
+ "test_digit - 1" );
+ harness.check(!( Character.digit( 'a' , Character.MAX_RADIX + 1 ) != -1 ),
+ "test_digit - 2" );
+ }
+
+
+ public void test_others()
+ {
+ //calling them just for completion
+// not supported Character.getNumericValue( 'a' );
+// not supported Character.getType( 'a' );
+ Character.isDefined( 'a' );
+ Character.isDefined( '\uffff' );
+
+ Character.digit('\u0665', 10);
+ Character.digit('\u06F5', 10);
+ Character.digit('\u0968', 10);
+ Character.digit('\u06E8', 10);
+ Character.digit('\u0A68', 10);
+ Character.digit('\u0AE8', 10);
+ Character.digit('\u0B68', 10);
+ Character.digit('\u0BE8', 10);
+ Character.digit('\u0C68', 10);
+ Character.digit('\u0CE8', 10);
+ Character.digit('\u0D68', 10);
+ Character.digit('\u0E52', 10);
+ Character.digit('\u0ED2', 10);
+ Character.digit('\uFF12', 10);
+ Character.digit('\uFFFF', 10);
+
+// not supported Character.isISOControl( 'a' );
+// not supported Character.isIdentifierIgnorable( 'a' );
+// not supported Character.isJavaIdentifierPart( 'a' );
+// not supported Character.isJavaIdentifierStart( 'a' );
+// not supported Character.isJavaLetter( 'a' );
+ Character.isJavaLetterOrDigit( 'a' );
+ harness.check(!(Character.isJavaLetterOrDigit('\uFFFF')),
+ "isJavaLetterOrDigit - 60");
+ harness.check(!(Character.isLetterOrDigit('\uFFFF')),
+ "isLetterOrDigit - 61");
+
+
+// not supported Character.isLetter( 'a' );
+ Character.isLetterOrDigit( 'a' );
+ Character.isLowerCase( 'A' );
+ Character.isLowerCase( 'a' );
+ Character.isSpace( 'a' );
+
+// not supported Character.isSpaceChar( 'a' );
+// not supported Character.isTitleCase( 'a' );
+// not supported Character.isUnicodeIdentifierPart( 'a' );
+// not supported Character.isUnicodeIdentifierStart( 'a' );
+ Character.isUpperCase( 'a' );
+ Character.isUpperCase( 'A' );
+// not supported Character.isWhitespace( 'a' );
+// not supported Character.toTitleCase( 'a' );
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_isSpace();
+ test_digit();
+ test_others();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Character/UnicodeBase.java b/gnu/testlet/java/lang/Character/UnicodeBase.java
new file mode 100644
index 00000000..e09bf757
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/UnicodeBase.java
@@ -0,0 +1,654 @@
+//Uses: CharInfo
+
+/* Copyright (C) 1999 Artur Biesiadowski
+ Copyright (C) 2004 Stephen Crawley
+ Copyright (C) 2007 Joshua Sumali
+
+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.java.lang.Character;
+
+import java.io.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.ResourceNotFoundException;
+
+public abstract class UnicodeBase implements Testlet {
+
+ public static boolean testDeprecated;
+ public static boolean verbose;
+ public static boolean benchmark;
+
+ public int failures;
+ public int tests;
+ TestHarness harness;
+
+ private Reader bir;
+ private StringBuffer sb;
+
+ public UnicodeBase()
+ {
+ }
+
+ public UnicodeBase(TestHarness aHarness, String filename)
+ throws ResourceNotFoundException, FileNotFoundException
+ {
+ harness = aHarness;
+ bir = harness.getResourceReader("gnu#testlet#java#lang#Character#" +
+ filename);
+ }
+
+ private String getNext(Reader r) throws IOException
+ {
+ sb = new StringBuffer();
+ while (r.ready())
+ {
+ char ch = (char) r.read();
+ if (ch == '\r')
+ {
+ continue;
+ }
+ else if (ch == ';' || ch == '\n')
+ {
+ return sb.toString();
+ }
+ else
+ sb.append(ch);
+ }
+ return sb.toString();
+ }
+
+ public void performTests() throws IOException{
+
+ //actual test loop
+ CharInfo ci = new CharInfo();
+ while (bir.ready())
+ {
+ String str;
+ ci = new CharInfo();
+ // 0 - Code value
+ str = getNext(bir);
+ int code = Integer.parseInt(str, 16);
+ ci.code = code;
+
+ // 1 - Character name
+ ci.name = getNext(bir);
+ // 2 - General category
+ ci.category = getNext(bir);
+ // 3 - Canonical combining classes
+ getNext(bir);
+ // 4 - Bidirectional category
+ getNext(bir);
+ // 5 - Character decomposition mapping
+ getNext(bir);
+ // 6 - Decimal digit value
+ str = getNext(bir);
+ if (!str.equals(""))
+ ci.decimalDigit = Integer.parseInt(str, 10);
+ else
+ ci.decimalDigit = -1;
+ // 7 - Digit value
+ str = getNext(bir);
+ if (!str.equals(""))
+ ci.digit = Integer.parseInt(str, 10);
+ else
+ ci.digit = -1;
+
+ // 8 - Numeric value
+ str = getNext(bir);
+ if (str.equals(""))
+ {
+ ci.numericValue = -1;
+ }
+ else
+ {
+ try {
+ ci.numericValue = Integer.parseInt(str, 10);
+ if (ci.numericValue < 0)
+ ci.numericValue = -2;
+ }
+ catch (NumberFormatException e)
+ {
+ ci.numericValue = -2;
+ }
+ }
+ // 9 - Mirrored
+ getNext(bir);
+ // 10 - Unicode 1.0 name
+ getNext(bir);
+ // 11 - ISO 10646 comment field
+ getNext(bir);
+ // 12 - Upper case mapping
+ str = getNext(bir);
+ if (!str.equals(""))
+ ci.uppercase = Integer.parseInt(str, 16);
+ else
+ ci.uppercase = ci.code;
+ // 13 - Lower case mapping
+ str = getNext(bir);
+ if (!str.equals(""))
+ ci.lowercase = Integer.parseInt(str, 16);
+ else
+ ci.lowercase = ci.code;
+ // 14 - Title case mapping
+ str = getNext(bir);
+ if (!str.equals(""))
+ ci.titlecase = Integer.parseInt(str, 16);
+ else
+ ci.titlecase = ci.code;
+
+ // Character.digit() only treats "Nd" as decimal digits, not "No"
+ // or "Nl". Tweak the character defns accordingly.
+ if (ci.digit != -1 && !("Nd".equals(ci.category)))
+ ci.digit = -1;
+
+ //test the char
+ testChar(ci);
+ }
+
+
+ // Fill in the character ranges that are reserved in Unicode 3.0
+ CharInfo ch = new CharInfo();
+ ch.name = "CJK Ideograph";
+ ch.category = "Lo";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0x4E01; i <= 0x9FA4; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+
+ ch = new CharInfo();
+ ch.name = "CJK Ideograph Extension A";
+ ch.category = "Lo";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0x3400; i <= 0x4DB5; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+
+ ch = new CharInfo();
+ ch.name = "Hangul Syllable";
+ ch.category = "Lo";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0xAC01; i <= 0xD7A2; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+
+ ch = new CharInfo();
+ ch.name = "CJK Compatibility Ideograph";
+ ch.category = "Lo";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0xF901; i <= 0xFA2C; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+
+ ch = new CharInfo();
+ ch.name = "Surrogate";
+ ch.category= "Cs";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0xD800; i <= 0xDFFFl; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+
+ ch = new CharInfo();
+ ch.name = "Private Use";
+ ch.category = "Co";
+ ch.decimalDigit = -1;
+ ch.digit = -1;
+ ch.numericValue = -1;
+ for (int i = 0xE000; i <= 0xF8FF; i++)
+ {
+ ch.code = i;
+ testChar(ch);
+ }
+ }
+
+ private void testChar(CharInfo c){
+
+ //All the checkPassed() calls are commented out since if they're
+ //included, this creates too many getStackTrace() calls in
+ //RunnerProcess.java, resulting in the heap running out of memory.
+
+ // isLowerCase
+ //char i = (char) x;
+ if ("Ll".equals(c.category) != Character.isLowerCase( c.code))
+ {
+ reportError(c,
+ (Character.isLowerCase(c.code) ? "lowercase" :
+ "not-lowercase"));
+
+ }
+ //else checkPassed();
+
+ // isUpperCase
+ if ("Lu".equals(c.category) != Character.isUpperCase(c.code))
+ {
+ reportError(c,
+ (Character.isUpperCase((char) c.code) ? "uppercase" :
+ "not-uppercase"));
+ }
+ //else checkPassed();
+
+ // isTitleCase
+ if ( "Lt".equals(c.category) !=
+ Character.isTitleCase(c.code))
+ {
+ reportError(c,
+ (Character.isTitleCase((char) c.code) ? "titlecase" :
+ "not-titlecase"));
+ }
+ //else checkPassed();
+
+ // isDigit
+ if ("Nd".equals(c.category) != Character.isDigit(c.code))
+ {
+ reportError(c,
+ (Character.isDigit((char) c.code) ? "digit" : "not-digit"));
+ }
+ //else checkPassed();
+
+ // isDefined
+ if (!c.category.equals("Cn") != Character.isDefined(c.code))
+ {
+ reportError(c,
+ (Character.isDefined((char) c.code) ? "defined" :
+ "not-defined"));
+ }
+ //else checkPassed();
+
+ // isLetter
+ if ((c.category.charAt(0) == 'L') !=
+ Character.isLetter(c.code))
+ {
+ reportError(c,
+ (Character.isLetter((char) c.code) ? "letter" :
+ "not-letter"));
+ }
+ //else checkPassed();
+
+ // isLetterOrDigit
+ if (Character.isLetterOrDigit(c.code) !=
+ (Character.isLetter(c.code) || Character.isDigit(c.code)))
+ {
+ reportError(c,
+ (Character.isLetterOrDigit(c.code) ? "letterordigit" :
+ "not-letterordigit"));
+ }
+ //else checkPassed();
+
+ // isSpaceChar
+ if ((c.category.charAt(0) == 'Z') != Character.isSpaceChar(c.code))
+ {
+ reportError(c,
+ (Character.isSpaceChar(c.code) ? "spacechar" :
+ "not-spacechar"));
+ }
+ //else checkPassed();
+
+ // isWhiteSpace
+ if (whitespace(c) != Character.isWhitespace(c.code))
+ {
+ reportError(c,
+ Character.isWhitespace(c.code) ? "whitespace" :
+ "not-whitespace");
+ }
+ //else checkPassed();
+
+ // isISOControl
+ if (((c.code <= 0x001F) || range(c.code, 0x007F, 0x009F)) !=
+ Character.isISOControl(c.code))
+ {
+ reportError(c,
+ Character.isISOControl(c.code) ? "isocontrol" :
+ "not-isocontrol");
+ }
+ //else checkPassed();
+
+ int type = Character.getType(c.code);
+ String typeStr = null;
+ switch (type)
+ {
+ case Character.UNASSIGNED: typeStr = "Cn"; break;
+ case Character.UPPERCASE_LETTER: typeStr = "Lu"; break;
+ case Character.LOWERCASE_LETTER: typeStr = "Ll"; break;
+ case Character.TITLECASE_LETTER: typeStr = "Lt"; break;
+ case Character.MODIFIER_LETTER: typeStr = "Lm"; break;
+ case Character.OTHER_LETTER: typeStr = "Lo"; break;
+ case Character.NON_SPACING_MARK: typeStr = "Mn"; break;
+ case Character.ENCLOSING_MARK: typeStr = "Me"; break;
+ case Character.COMBINING_SPACING_MARK: typeStr = "Mc"; break;
+ case Character.DECIMAL_DIGIT_NUMBER: typeStr = "Nd"; break;
+ case Character.LETTER_NUMBER: typeStr = "Nl"; break;
+ case Character.OTHER_NUMBER: typeStr = "No"; break;
+ case Character.SPACE_SEPARATOR: typeStr = "Zs"; break;
+ case Character.LINE_SEPARATOR: typeStr = "Zl"; break;
+ case Character.PARAGRAPH_SEPARATOR: typeStr = "Zp"; break;
+ case Character.CONTROL: typeStr = "Cc"; break;
+ case Character.FORMAT: typeStr = "Cf"; break;
+ case Character.PRIVATE_USE: typeStr = "Co"; break;
+ case Character.SURROGATE: typeStr = "Cs"; break;
+ case Character.DASH_PUNCTUATION: typeStr = "Pd"; break;
+ case Character.START_PUNCTUATION: typeStr = "Ps"; break;
+ case Character.END_PUNCTUATION: typeStr = "Pe"; break;
+ case Character.CONNECTOR_PUNCTUATION: typeStr = "Pc"; break;
+ case Character.FINAL_QUOTE_PUNCTUATION: typeStr = "Pf"; break;
+ case Character.INITIAL_QUOTE_PUNCTUATION: typeStr = "Pi"; break;
+ case Character.OTHER_PUNCTUATION: typeStr = "Po"; break;
+ case Character.MATH_SYMBOL: typeStr = "Sm"; break;
+ case Character.CURRENCY_SYMBOL: typeStr = "Sc"; break;
+ case Character.MODIFIER_SYMBOL: typeStr = "Sk"; break;
+ case Character.OTHER_SYMBOL: typeStr = "So"; break;
+ default: typeStr = "ERROR (" + type + ")"; break;
+ }
+
+ if (!(c.category.equals(typeStr) ||
+ (typeStr.equals("Ps") && c.category.equals("Pi")) ||
+ (typeStr.equals("Pe") && c.category.equals("Pf"))))
+ {
+ reportError(stringChar(c) + " is reported to be type " + typeStr +
+ " instead of " + c.category);
+ }
+ //else checkPassed();
+
+ // isJavaIdentifierStart
+ if (identifierStart(c) != Character.isJavaIdentifierStart(c.code))
+ {
+ reportError(c,
+ Character.isJavaIdentifierStart(c.code) ?
+ "javaindentifierstart" : "not-javaidentifierstart");
+ }
+ //else checkPassed();
+
+ // isJavaIdentifierPart
+ typeStr = c.category;
+ if ((typeStr.charAt(0) == 'L' ||
+ typeStr.equals("Sc") ||
+ typeStr.equals("Pc") ||
+ typeStr.equals("Nd") ||
+ typeStr.equals("Nl") ||
+ typeStr.equals("Mc") ||
+ typeStr.equals("Mn") ||
+ typeStr.equals("Cf") ||
+ (typeStr.equals("Cc") && ignorable(c))) !=
+ Character.isJavaIdentifierPart(c.code))
+ {
+ reportError(c,
+ Character.isJavaIdentifierPart(c.code) ?
+ "javaidentifierpart" : "not-javaidentifierpart");
+ }
+ //else checkPassed();
+
+ //isUnicodeIdentifierStart
+ if (unicodeIdentifierStart(c) != Character.isUnicodeIdentifierStart(c.code))
+ {
+ reportError(c,
+ Character.isUnicodeIdentifierStart(c.code) ?
+ "unicodeidentifierstart" :
+ "not-unicodeidentifierstart");
+ }
+ //else checkPassed();
+
+ //isUnicodeIdentifierPart;
+ typeStr = c.category;
+ if ((typeStr.charAt(0) == 'L' ||
+ typeStr.equals("Pc") ||
+ typeStr.equals("Nd") ||
+ typeStr.equals("Nl") ||
+ typeStr.equals("Mc") ||
+ typeStr.equals("Mn") ||
+ typeStr.equals("Cf") ||
+ (typeStr.equals("Cc") && ignorable(c))) !=
+ Character.isUnicodeIdentifierPart(c.code))
+ {
+ reportError(c,
+ Character.isUnicodeIdentifierPart(c.code) ?
+ "unicodeidentifierpart" : "not-unicodeidentifierpart");
+ }
+ //else checkPassed();
+
+
+ //isIdentifierIgnorable
+ if (ignorable(c) != Character.isIdentifierIgnorable(c.code))
+ {
+ reportError(c,
+ Character.isIdentifierIgnorable(c.code) ?
+ "identifierignorable": "not-identifierignorable");
+ }
+ //else checkPassed();
+
+
+ // toLowerCase
+ int lowerCase = (c.lowercase != 0 ?
+ c.lowercase : c.code);
+ if (Character.toLowerCase(c.code) != lowerCase)
+ {
+ reportError(stringChar(c) + " has wrong lowercase form of " +
+ c.lowercase +" instead of " +
+ stringChar(c));
+ }
+ //else checkPassed();
+
+ // toUpperCase
+
+ int upperCase = (c.uppercase != 0 ?
+ c.uppercase : c.code);
+ if (Character.toUpperCase(c.code) != upperCase)
+ {
+ reportError(stringChar(c) +
+ " has wrong uppercase form of " +
+ c.uppercase +
+ " instead of " +
+ stringChar(c));
+ }
+ //else checkPassed();
+
+ // toTitleCase
+ int titleCase = (c.titlecase != 0 ? c.titlecase :
+ (c.uppercase != 0 ?
+ c.uppercase : c.code));
+ if ("Lt".equals(c.category))
+ {
+ titleCase = c.code;
+ }
+
+ if (Character.toTitleCase(c.code) != titleCase)
+ {
+ reportError(stringChar(c) +
+ " has wrong titlecase form of " +
+ c.titlecase +
+ " instead of " +
+ stringChar(c));
+ }
+ //else checkPassed();
+
+ // digit
+ boolean radixPassed = true;
+ for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX;
+ radix++)
+ {
+ //special cases for A-Za-z and their fullwidth counterparts
+ if (range(c.code,'A','Z')){
+ c.digit = c.code - 'A' + 10;
+ }
+ else if (range(c.code,'a','z')){
+ c.digit = c.code - 'a' + 10;
+ }
+ else if (range(c.code,0xff21,0xff3a)){
+ c.digit = c.code - 0xff21 + 10;
+ }
+ else if (range(c.code,0xff41,0xff5a)){
+ c.digit = c.code - 0xff41 + 10;
+ }
+ int digit = c.digit;
+ if (digit >= radix)
+ digit = -1;
+ if (Character.digit( c.code, radix) != digit)
+ {
+ reportError(stringChar(c) + " has wrong digit form of " +
+ Character.digit(c.code, radix) + " for radix " +
+ radix + " instead of " + digit +
+ "(" + c.digit + ")");
+ radixPassed = false;
+ }
+ //else checkPassed();
+ }
+ if (radixPassed)
+ checkPassed();
+
+
+ // getNumericValue
+
+ if (range(c.code,'A','Z') || range(c.code,'a','z')
+ || range(c.code,0xff21,0xff3a) || range(c.code,0xff41,0xff5a)){
+ if(c.numericValue != -1){
+ reportError(stringChar(c) + " has wrong numeric value of " +
+ Character.getNumericValue(c.code) + " instead of -1");
+ }
+ } else {
+
+ if (c.numericValue != Character.getNumericValue(c.code))
+ {
+ reportError(stringChar(c) + " has wrong numeric value of " +
+ Character.getNumericValue(c.code) + " instead of " +
+ c.numericValue);
+ }
+
+ }
+ if (testDeprecated)
+ {
+
+ // isJavaLetter
+ if (((char) c.code == '$' || (char) c.code == '_'
+ || Character.isLetter(c.code)) != Character.isJavaLetter((char) c.code))
+ {
+ reportError(c,
+ (Character.isJavaLetter((char) c.code)? "javaletter" :
+ "not-javaletter"));
+ }
+ //else checkPassed();
+
+ // isJavaLetterOrDigit
+ if ((Character.isJavaLetter((char) c.code) || Character.isDigit(c.code) ||
+ (char) c.code == '$' || (char) c.code == '_') !=
+ Character.isJavaLetterOrDigit((char) c.code)
+ )
+ {
+ reportError(c,
+ (Character.isJavaLetterOrDigit((char) c.code) ?
+ "javaletterordigit" : "not-javaletterordigit"));
+ }
+ //else checkPassed();
+
+ // isSpace
+ if ((((char) c.code == ' ' || (char) c.code == '\t'
+ || (char) c.code == '\n' || (char) c.code == '\r' ||
+ (char) c.code == '\f')) != Character.isSpace((char) c.code))
+ {
+ reportError(c,
+ (Character.isSpace((char) c.code) ? "space" : "non-space"));
+ }
+ //else checkPassed();
+ } // testDeprecated
+
+
+ }
+
+ protected void reportError(CharInfo c, String what)
+ {
+ harness.check(false, stringChar(c) +" incorrectly reported as " + what);
+ }
+ protected void reportError( String what)
+ {
+ harness.check(false, what);
+ }
+ protected void checkPassed()
+ {
+ harness.check(true);
+ }
+
+ public boolean range(int mid, int low, int high)
+ {
+ return (mid >= low && mid <= high);
+ }
+
+ public boolean whitespace(CharInfo c)
+ {
+ return ((c.category.charAt(0) == 'Z' &&
+ c.code != 0x00a0 && c.code != 0x2007 && c.code != 0x202f) ||
+ range(c.code, 0x0009, 0x000D) ||
+ range(c.code, 0x001C, 0x001F));
+ }
+
+ //public String stringChar(int ch)
+ public String stringChar(CharInfo c)
+ {
+ //return "Character " + Integer.toString(c.code,16) + ":"
+ return "Character " + c.code + ":"
+ + (char) c.code + ":" + c.name;
+ }
+
+ public boolean identifierStart(CharInfo c)
+ {
+ return ("Ll".equals(c.category) ||
+ "Lu".equals(c.category) ||
+ "Lt".equals(c.category) ||
+ "Lm".equals(c.category) ||
+ "Lo".equals(c.category) ||
+ "Nl".equals(c.category) ||
+ "Sc".equals(c.category) ||
+ "Pc".equals(c.category));
+ }
+
+ public boolean unicodeIdentifierStart(CharInfo c)
+ {
+ return ("Ll".equals(c.category) ||
+ "Lu".equals(c.category) ||
+ "Lt".equals(c.category) ||
+ "Lm".equals(c.category) ||
+
+ "Lo".equals(c.category) ||
+ "Nl".equals(c.category));
+ }
+
+ public boolean ignorable(CharInfo c)
+ {
+ return (range(c.code, 0x0000, 0x0008) ||
+ range(c.code, 0x000E, 0x001B) ||
+ range(c.code, 0x007f, 0x009f) ||
+ "Cf".equals(c.category));
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/UnicodeData-3.0.0.txt b/gnu/testlet/java/lang/Character/UnicodeData-3.0.0.txt
new file mode 100644
index 00000000..6a54d3d7
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/UnicodeData-3.0.0.txt
@@ -0,0 +1,10617 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;INDEX;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;No;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/gnu/testlet/java/lang/Character/UnicodeData-4.0.0.txt b/gnu/testlet/java/lang/Character/UnicodeData-4.0.0.txt
new file mode 100644
index 00000000..86ea1cf9
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/UnicodeData-4.0.0.txt
@@ -0,0 +1,15100 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Cf;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK ;Ll;0;L;;;;;N;;;;;
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
+0615;ARABIC SMALL HIGH TAH ;Mn;230;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
+17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;;
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
+10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;;
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/gnu/testlet/java/lang/Character/UnicodeData.txt b/gnu/testlet/java/lang/Character/UnicodeData.txt
new file mode 100644
index 00000000..6c2f6936
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/UnicodeData.txt
@@ -0,0 +1,6890 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;B;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;;;
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;;;
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Lo;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;ON;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;ON;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;ON;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;ON;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;ON;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;ON;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;ON;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;ON;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;ON;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;ON;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;ON;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;ON;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;ON;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;ON;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;ON;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;ON;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;ON;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;ON;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;ON;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;ON;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;ON;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;ON;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;ON;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;ON;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;ON;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;ON;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;ON;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;ON;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;ON;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;ON;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;ON;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;ON;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;ON;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;ON;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;
+0360;COMBINING DOUBLE TILDE;Mn;234;ON;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;ON;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;ON;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;ON;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;ON;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;ON;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;ON;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;ON;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;ON;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;ON;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;ON;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;ON;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;ON;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;ON;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;ON;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;ON;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;ON;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;ON;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;ON;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;ON;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;ON;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;ON;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;ON;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;ON;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;ON;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;ON;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;ON;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;ON;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;ON;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;ON;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;ON;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;ON;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;ON;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;ON;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;ON;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;ON;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;ON;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;ON;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;ON;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;ON;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;ON;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;ON;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;ON;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;ON;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;ON;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;ON;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;ON;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;ON;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;ON;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;ON;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;ON;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;ON;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;ON;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;ON;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;ON;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;ON;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;ON;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;ON;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;ON;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;ON;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;ON;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;ON;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;ON;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;ON;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;ON;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;ON;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;ON;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;ON;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;ON;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;ON;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;ON;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;ON;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;ON;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;ON;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;ON;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;ON;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;ON;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;ON;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;ON;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;ON;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;ON;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;ON;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;ON;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;09AC 09BC;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;ON;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;ON;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;0A21 0A3C;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;ON;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;ON;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;ON;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;0B2F 0B3C;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;ON;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;84;ON;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;ON;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;ON;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;ON;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;ON;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;ON;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;ON;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;ON;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;ON;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;ON;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;ON;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;ON;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;ON;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;107;ON;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;ON;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;ON;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;ON;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;ON;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;ON;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;ON;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;ON;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;ON;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;ON;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;ON;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;ON;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;ON;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;ON;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;122;ON;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;ON;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;ON;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;ON;;;;;N;;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;230;ON;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;ON;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;ON;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;ON;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;0;ON;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;ON;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;ON;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;ON;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;ON;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;ON;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;ON;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;ON;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;ON;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;ON;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;ON;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;ON;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;ON;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;ON;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;ON;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;ON;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;ON;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;ON;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;ON;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;ON;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;ON;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;ON;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;ON;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;ON;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;ON;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;ON;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;ON;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;ON;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;ON;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;ON;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;ON;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;ON;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;ON;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;ON;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;ON;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;ON;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;ON;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;ON;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;ON;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;ON;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;ON;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;ON;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;ON;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;ON;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;ON;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;ON;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;ON;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;ON;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;ON;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;ON;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;ON;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;ON;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;ON;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;ON;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;ON;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;ON;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;ON;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;L;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;R;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;L;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;R;;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;ON;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;ON;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;ON;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;ON;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;ON;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;Ll;0;L;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;Ll;0;L;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;So;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;007E 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;So;0;ON;;;;;N;SHARP;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;ON;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;ON;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;ON;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;ON;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;L;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;ON;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;L;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;ON;<narrow> 3099;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;ON;<narrow> 309A;;;;N;;;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;Sm;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/gnu/testlet/java/lang/Character/classInfo/CVS/Entries b/gnu/testlet/java/lang/Character/classInfo/CVS/Entries
new file mode 100644
index 00000000..ed67fbaa
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 10 14:49:32 2012//
+/getInterfaces.java/1.1/Thu May 10 14:49:32 2012//
+/getModifiers.java/1.1/Thu May 10 14:49:32 2012//
+/getName.java/1.1/Thu May 10 14:49:32 2012//
+/getPackage.java/1.1/Thu May 10 14:49:32 2012//
+/getSimpleName.java/1.1/Thu May 10 14:49:32 2012//
+/getSuperclass.java/1.1/Thu May 10 14:49:32 2012//
+/isAssignableFrom.java/1.1/Thu May 10 14:49:32 2012//
+/isInstance.java/1.1/Thu May 10 14:49:32 2012//
+/isInterface.java/1.1/Thu May 10 14:49:32 2012//
+/isLocalClass.java/1.1/Thu May 10 14:49:32 2012//
+/isMemberClass.java/1.1/Thu May 10 14:49:32 2012//
+/isPrimitive.java/1.1/Thu May 10 14:49:32 2012//
+/isSynthetic.java/1.1/Thu May 10 14:49:32 2012//
+D
diff --git a/gnu/testlet/java/lang/Character/classInfo/CVS/Repository b/gnu/testlet/java/lang/Character/classInfo/CVS/Repository
new file mode 100644
index 00000000..58063b28
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Character/classInfo
diff --git a/gnu/testlet/java/lang/Character/classInfo/CVS/Root b/gnu/testlet/java/lang/Character/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Character/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Character/classInfo/InstanceOf.java
new file mode 100644
index 00000000..e4e01c34
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.Character
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Character
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Character
+ Character o = new Character('!');
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Character);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Character/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ce93111b
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getInterfaces.java
@@ -0,0 +1,58 @@
+// Test for method java.lang.Character.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.Character;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getModifiers.java b/gnu/testlet/java/lang/Character/classInfo/getModifiers.java
new file mode 100644
index 00000000..26b3c476
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Character.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getName.java b/gnu/testlet/java/lang/Character/classInfo/getName.java
new file mode 100644
index 00000000..684be755
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Character");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getPackage.java b/gnu/testlet/java/lang/Character/classInfo/getPackage.java
new file mode 100644
index 00000000..297423c6
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Character.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Character/classInfo/getSimpleName.java
new file mode 100644
index 00000000..b1e2d0cb
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Character");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Character/classInfo/getSuperclass.java
new file mode 100644
index 00000000..d8c3a8b1
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Character.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Character/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..c2167ec2
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Character.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isInstance.java b/gnu/testlet/java/lang/Character/classInfo/isInstance.java
new file mode 100644
index 00000000..ceda56b5
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Character('!')));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isInterface.java b/gnu/testlet/java/lang/Character/classInfo/isInterface.java
new file mode 100644
index 00000000..2772a9bd
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Character/classInfo/isLocalClass.java
new file mode 100644
index 00000000..e596200b
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Character/classInfo/isMemberClass.java
new file mode 100644
index 00000000..0c917b4c
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Character/classInfo/isPrimitive.java
new file mode 100644
index 00000000..f89efbd8
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Character/classInfo/isSynthetic.java
new file mode 100644
index 00000000..80b8a12e
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Character.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Character.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Character;
+
+
+
+/**
+ * Test for method java.lang.Character.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Character('!');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Character/classify.java b/gnu/testlet/java/lang/Character/classify.java
new file mode 100644
index 00000000..3c054507
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classify.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class classify implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("isDefined");
+ harness.check (Character.isDefined('9'));
+ harness.check (! Character.isDefined('\uffef'));
+
+ harness.checkPoint ("isIdentifierIgnorable");
+ harness.check (! Character.isIdentifierIgnorable('Z'));
+ harness.check (Character.isIdentifierIgnorable('\u202c'));
+ harness.check (Character.isIdentifierIgnorable('\ufeff'));
+
+ harness.checkPoint ("isISOControl");
+ harness.check (! Character.isISOControl('Q'));
+ harness.check (Character.isISOControl('\u0081'));
+ harness.check (Character.isISOControl('\u0009'));
+
+ harness.checkPoint ("isJavaIdentifierPart");
+ harness.check (Character.isJavaIdentifierPart('\u0903'));
+
+ harness.checkPoint ("isJavaIdentifierStart");
+ harness.check (Character.isJavaIdentifierStart('\u20a0'));
+ harness.check (Character.isJavaIdentifierStart('Z'));
+
+ harness.checkPoint ("isLetter");
+ harness.check (Character.isLetter('A'));
+ harness.check (Character.isLetter('\u2102'));
+ harness.check (Character.isLetter('\u01cb'));
+ harness.check (Character.isLetter('\u02b2'));
+ harness.check (Character.isLetter('\uffda'));
+ harness.check (Character.isLetter('\u1fd3'));
+
+ harness.checkPoint ("isLetterOrDigit");
+ harness.check (Character.isLetterOrDigit('7'));
+ harness.check (! Character.isLetterOrDigit('_'));
+
+ harness.checkPoint ("isLowerCase");
+ harness.check (Character.isLowerCase('\u03d0'));
+ harness.check (Character.isLowerCase('z'));
+ harness.check (! Character.isLowerCase('Q'));
+ harness.check (! Character.isLowerCase('\u249f'));
+
+ harness.checkPoint ("isUpperCase");
+ harness.check (Character.isUpperCase('Q'));
+ harness.check (! Character.isUpperCase('\u01c5'));
+
+ harness.checkPoint ("isWhitespace");
+ harness.check (Character.isWhitespace('\u0009'));
+ harness.check (! Character.isWhitespace('\u00a0'));
+ harness.check (Character.isWhitespace('\u2000'));
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/classify12.java b/gnu/testlet/java/lang/Character/classify12.java
new file mode 100644
index 00000000..1e27bd8f
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/classify12.java
@@ -0,0 +1,32 @@
+// Tags: JDK1.2
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class classify12 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.isUpperCase('\u2102'));
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/consts.java b/gnu/testlet/java/lang/Character/consts.java
new file mode 100644
index 00000000..73ef0c64
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/consts.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class consts implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.SPACE_SEPARATOR, 12);
+ harness.check (Character.LINE_SEPARATOR, 13);
+ harness.check (Character.PARAGRAPH_SEPARATOR, 14);
+ harness.check (Character.UPPERCASE_LETTER, 1);
+ harness.check (Character.LOWERCASE_LETTER, 2);
+ harness.check (Character.TITLECASE_LETTER, 3);
+ harness.check (Character.MODIFIER_LETTER, 4);
+ harness.check (Character.OTHER_LETTER, 5);
+ harness.check (Character.DECIMAL_DIGIT_NUMBER, 9);
+ harness.check (Character.LETTER_NUMBER, 10);
+ harness.check (Character.OTHER_NUMBER, 11);
+ harness.check (Character.NON_SPACING_MARK, 6);
+ harness.check (Character.ENCLOSING_MARK, 7);
+ harness.check (Character.COMBINING_SPACING_MARK, 8);
+ harness.check (Character.DASH_PUNCTUATION, 20);
+ harness.check (Character.START_PUNCTUATION, 21);
+ harness.check (Character.END_PUNCTUATION, 22);
+ harness.check (Character.CONNECTOR_PUNCTUATION, 23);
+ harness.check (Character.OTHER_PUNCTUATION, 24);
+ harness.check (Character.MATH_SYMBOL, 25);
+ harness.check (Character.CURRENCY_SYMBOL, 26);
+ harness.check (Character.MODIFIER_SYMBOL, 27);
+ harness.check (Character.OTHER_SYMBOL, 28);
+ harness.check (Character.CONTROL, 15);
+ harness.check (Character.FORMAT, 16);
+ harness.check (Character.UNASSIGNED, 0);
+ harness.check (Character.PRIVATE_USE, 18);
+ harness.check (Character.SURROGATE, 19);
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/digit.java b/gnu/testlet/java/lang/Character/digit.java
new file mode 100644
index 00000000..e8d3c90a
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/digit.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class digit implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.digit ('9', 10), 9);
+ harness.check (Character.digit ('9', 8), -1);
+ harness.check (Character.digit ('A', 16), 10);
+ harness.check (Character.digit ('a', 11), 10);
+ harness.check (Character.digit ((char) ('Z' + 1), 36), -1);
+ harness.check (Character.digit ('Z', 36), 35);
+ harness.check (Character.digit ('\u0be7', 2), 1);
+ harness.check (Character.digit ('\u0f27', 19), 7);
+ harness.check (Character.digit ('0', 99), -1);
+ harness.check (Character.digit ('0', -5), -1);
+ harness.check (Character.digit ('\uffda', 10), -1);
+ harness.check (Character.digit ('\u0000', 10), -1);
+ harness.check (Character.digit ('A', 10), -1);
+ harness.check (Character.digit ('y', 36), 34);
+ harness.check (Character.digit ('\u2070', 36), -1);
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/equals_Character.java b/gnu/testlet/java/lang/Character/equals_Character.java
new file mode 100644
index 00000000..b46380c6
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/equals_Character.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class equals_Character implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Character a = new Character ('\uffda');
+ Character b = new Character ('Z');
+ Character c = new Character ('\uffda');
+ Boolean d = new Boolean ("true");
+
+ harness.check (! a.equals(null));
+ harness.check (! a.equals(b));
+ harness.check (a.equals(c));
+ harness.check (a.equals(a));
+ harness.check (! b.equals(d));
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/forDigit.java b/gnu/testlet/java/lang/Character/forDigit.java
new file mode 100644
index 00000000..08beb46c
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/forDigit.java
@@ -0,0 +1,38 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class forDigit implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.forDigit(-1, 5), 0);
+ harness.check (Character.forDigit(7, 5), 0);
+ harness.check (Character.forDigit(0, 1), 0);
+ harness.check (Character.forDigit(5, 37), 0);
+ harness.check (Character.forDigit(8, 10), '8');
+ harness.check (Character.forDigit(12, 16), 'c');
+ harness.check (Character.forDigit(34,36), 'y');
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/getNumericValue.java b/gnu/testlet/java/lang/Character/getNumericValue.java
new file mode 100644
index 00000000..bd39c9cc
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/getNumericValue.java
@@ -0,0 +1,39 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getNumericValue implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.getNumericValue('0'), 0);
+ harness.check (Character.getNumericValue('\u0be8'), 2);
+ harness.check (Character.getNumericValue('\u246d'), 14);
+ harness.check (Character.getNumericValue('\u2182'), 10000);
+ harness.check (Character.getNumericValue('\u00bd'), -2);
+ harness.check (Character.getNumericValue('A'), 10);
+ harness.check (Character.getNumericValue('\u2155'), -2);
+ harness.check (Character.getNumericValue('\u221e'), -1);
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/getType.java b/gnu/testlet/java/lang/Character/getType.java
new file mode 100644
index 00000000..2414778e
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/getType.java
@@ -0,0 +1,192 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 1999 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getType implements Testlet
+{
+ public static void p (TestHarness harness, char c, String expected)
+ {
+ String s;
+ switch (Character.getType (c))
+ {
+ case Character.SPACE_SEPARATOR:
+ s = "space_separator";
+ break;
+ case Character.LINE_SEPARATOR:
+ s = "line_separator";
+ break;
+ case Character.PARAGRAPH_SEPARATOR:
+ s = "paragraph_separator";
+ break;
+ case Character.UPPERCASE_LETTER:
+ s = "uppercase_letter";
+ break;
+ case Character.LOWERCASE_LETTER:
+ s = "lowercase_letter";
+ break;
+ case Character.TITLECASE_LETTER:
+ s = "titlecase_letter";
+ break;
+ case Character.MODIFIER_LETTER:
+ s = "modifier_letter";
+ break;
+ case Character.OTHER_LETTER:
+ s = "other_letter";
+ break;
+ case Character.DECIMAL_DIGIT_NUMBER:
+ s = "decimal_digit_number";
+ break;
+ case Character.LETTER_NUMBER:
+ s = "letter_number";
+ break;
+ case Character.OTHER_NUMBER:
+ s = "other_number";
+ break;
+ case Character.NON_SPACING_MARK:
+ s = "non_spacing_mark";
+ break;
+ case Character.ENCLOSING_MARK:
+ s = "enclosing_mark";
+ break;
+ case Character.COMBINING_SPACING_MARK:
+ s = "combining_spacing_mark";
+ break;
+ case Character.DASH_PUNCTUATION:
+ s = "dash_punctuation";
+ break;
+ case Character.START_PUNCTUATION:
+ s = "start_punctuation";
+ break;
+ case Character.END_PUNCTUATION:
+ s = "end_punctuation";
+ break;
+ case Character.CONNECTOR_PUNCTUATION:
+ s = "connector_punctuation";
+ break;
+ case Character.OTHER_PUNCTUATION:
+ s = "other_punctuation";
+ break;
+ case Character.MATH_SYMBOL:
+ s = "math_symbol";
+ break;
+ case Character.CURRENCY_SYMBOL:
+ s = "currency_symbol";
+ break;
+ case Character.MODIFIER_SYMBOL:
+ s = "modifier_symbol";
+ break;
+ case Character.OTHER_SYMBOL:
+ s = "other_symbol";
+ break;
+ case Character.CONTROL:
+ s = "control";
+ break;
+ case Character.FORMAT:
+ s = "format";
+ break;
+ case Character.UNASSIGNED:
+ s = "unassigned";
+ break;
+ case Character.PRIVATE_USE:
+ s = "private_use";
+ break;
+ case Character.SURROGATE:
+ s = "surrogate";
+ break;
+ default:
+ s = "???";
+ break;
+ }
+
+ harness.check (s, expected);
+ }
+
+ public void test (TestHarness harness)
+ {
+ p (harness, ' ', "space_separator");
+ p (harness, '\u2028', "line_separator");
+ p (harness, '\u2029', "paragraph_separator");
+ p (harness, '\u2110', "uppercase_letter");
+ p (harness, 'Z', "uppercase_letter");
+ p (harness, '\uff44', "lowercase_letter");
+ p (harness, 'z', "lowercase_letter");
+ p (harness, '\u1fe4', "lowercase_letter");
+ p (harness, '\u01c5', "titlecase_letter");
+ p (harness, '\u3005', "modifier_letter");
+ p (harness, '\u01bf', "lowercase_letter");
+ p (harness, '\u0666', "decimal_digit_number");
+ p (harness, '\u216f', "letter_number");
+ p (harness, '\u0f32', "other_number");
+ p (harness, '\u0f35', "non_spacing_mark");
+ p (harness, '\u0488', "enclosing_mark");
+ p (harness, '\u0488', "enclosing_mark");
+ p (harness, '\u0489', "enclosing_mark");
+ // Unicode character 06de should fall into other letters/symbols
+ // according to changes in Unicode
+ p (harness, '\u06de', conformToJDK17() ? "other_symbol" : "enclosing_mark");
+ p (harness, '\u20DD', "enclosing_mark");
+ p (harness, '\u20DE', "enclosing_mark");
+ p (harness, '\u20DF', "enclosing_mark");
+ p (harness, '\u20E0', "enclosing_mark");
+ p (harness, '\u20E2', "enclosing_mark");
+ p (harness, '\u20E3', "enclosing_mark");
+ p (harness, '\u20E4', "enclosing_mark");
+
+ p (harness, '\u0903', "combining_spacing_mark");
+ p (harness, '-', "dash_punctuation");
+ p (harness, '\ufe59', "start_punctuation");
+ p (harness, '\u0f3b', "end_punctuation");
+ p (harness, '\uff3f', "connector_punctuation");
+ p (harness, '\u2202', "math_symbol");
+ p (harness, '\u20ab', "currency_symbol");
+ p (harness, '\u02c2', "modifier_symbol");
+ p (harness, '\u0ad0', "other_letter");
+ p (harness, '\u0b70', "other_symbol");
+ p (harness, '\u009f', "control");
+ p (harness, '\ufeff', "format");
+ p (harness, '\uffff', "unassigned");
+ p (harness, '\uffef', "unassigned");
+ p (harness, '\uebeb', "private_use");
+ p (harness, '\udb9c', "surrogate");
+ p (harness, '\u249f', "other_symbol");
+ p (harness, '\u2102', "uppercase_letter");
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Long.parseLong(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Character/getType12.java b/gnu/testlet/java/lang/Character/getType12.java
new file mode 100644
index 00000000..398c5f8c
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/getType12.java
@@ -0,0 +1,129 @@
+// Tags: JDK1.2
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getType12 implements Testlet
+{
+ public static void p (TestHarness harness, char c, String expected)
+ {
+ String s;
+ switch (Character.getType (c))
+ {
+ case Character.SPACE_SEPARATOR:
+ s = "space_separator";
+ break;
+ case Character.LINE_SEPARATOR:
+ s = "line_separator";
+ break;
+ case Character.PARAGRAPH_SEPARATOR:
+ s = "paragraph_separator";
+ break;
+ case Character.UPPERCASE_LETTER:
+ s = "uppercase_letter";
+ break;
+ case Character.LOWERCASE_LETTER:
+ s = "lowercase_letter";
+ break;
+ case Character.TITLECASE_LETTER:
+ s = "titlecase_letter";
+ break;
+ case Character.MODIFIER_LETTER:
+ s = "modifier_letter";
+ break;
+ case Character.OTHER_LETTER:
+ s = "other_letter";
+ break;
+ case Character.DECIMAL_DIGIT_NUMBER:
+ s = "decimal_digit_number";
+ break;
+ case Character.LETTER_NUMBER:
+ s = "letter_number";
+ break;
+ case Character.OTHER_NUMBER:
+ s = "other_number";
+ break;
+ case Character.NON_SPACING_MARK:
+ s = "non_spacing_mark";
+ break;
+ case Character.ENCLOSING_MARK:
+ s = "enclosing_mark";
+ break;
+ case Character.COMBINING_SPACING_MARK:
+ s = "combining_spacing_mark";
+ break;
+ case Character.DASH_PUNCTUATION:
+ s = "dash_punctuation";
+ break;
+ case Character.START_PUNCTUATION:
+ s = "start_punctuation";
+ break;
+ case Character.END_PUNCTUATION:
+ s = "end_punctuation";
+ break;
+ case Character.CONNECTOR_PUNCTUATION:
+ s = "connector_punctuation";
+ break;
+ case Character.OTHER_PUNCTUATION:
+ s = "other_punctuation";
+ break;
+ case Character.MATH_SYMBOL:
+ s = "math_symbol";
+ break;
+ case Character.CURRENCY_SYMBOL:
+ s = "currency_symbol";
+ break;
+ case Character.MODIFIER_SYMBOL:
+ s = "modifier_symbol";
+ break;
+ case Character.OTHER_SYMBOL:
+ s = "other_symbol";
+ break;
+ case Character.CONTROL:
+ s = "control";
+ break;
+ case Character.FORMAT:
+ s = "format";
+ break;
+ case Character.UNASSIGNED:
+ s = "unassigned";
+ break;
+ case Character.PRIVATE_USE:
+ s = "private_use";
+ break;
+ case Character.SURROGATE:
+ s = "surrogate";
+ break;
+ default:
+ s = "???";
+ break;
+ }
+
+ harness.check (s, expected);
+ }
+
+ public void test (TestHarness harness)
+ {
+ p (harness, '\u20ac', "currency_symbol");
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/hash.java b/gnu/testlet/java/lang/Character/hash.java
new file mode 100644
index 00000000..fb2b4e89
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/hash.java
@@ -0,0 +1,36 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class hash implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Character a = new Character ('\uffda');
+ Character b = new Character ('Z');
+
+ harness.check (a.hashCode(), 65498);
+ harness.check (b.hashCode(), 90);
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/to.java b/gnu/testlet/java/lang/Character/to.java
new file mode 100644
index 00000000..d9875d1a
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/to.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Character;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class to implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Character.toUpperCase ('a'), 'A');
+ harness.check (Character.toUpperCase ('A'), 'A');
+ harness.check (Character.toUpperCase ('\uff5a'), '\uff3a');
+ harness.check (Character.toUpperCase ('7'), '7');
+ harness.check (Character.toUpperCase ('\u01f2'), '\u01f1');
+
+ harness.check (Character.toLowerCase ('q'), 'q');
+ harness.check (Character.toLowerCase ('Q'), 'q');
+ harness.check (Character.toLowerCase ('\u2638'), '\u2638');
+ harness.check (Character.toLowerCase ('\u01cb'), '\u01cc');
+ harness.check (Character.toLowerCase ('\u01ca'), '\u01cc');
+ harness.check (Character.toLowerCase ('\u00df'), '\u00df');
+ harness.check (Character.toLowerCase ('\u2160'), '\u2170');
+
+ harness.check (Character.toTitleCase ('a'), 'A');
+ harness.check (Character.toTitleCase ('\u01f3'), '\u01f2');
+ harness.check (Character.toTitleCase ('\u01f1'), '\u01f2');
+ harness.check (Character.toTitleCase ('\u01f2'), '\u01f2');
+ }
+}
diff --git a/gnu/testlet/java/lang/Character/unicode.java b/gnu/testlet/java/lang/Character/unicode.java
new file mode 100644
index 00000000..9719c323
--- /dev/null
+++ b/gnu/testlet/java/lang/Character/unicode.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+// Uses: UnicodeBase CharInfo
+
+/* Copyright (C) 1999 Artur Biesiadowski
+ Copyright (C) 2004 Stephen Crawley
+
+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.java.lang.Character;
+
+import java.io.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.ResourceNotFoundException;
+
+/*
+ MISSING:
+ Instance tests
+ (constructor, charValue, serialization): should be in other file
+*/
+
+public class unicode extends UnicodeBase implements Testlet
+{
+
+ public unicode()
+ {
+ super();
+ }
+
+ public unicode(TestHarness aHarness, String filename)
+ throws IOException, ResourceNotFoundException
+ {
+ super(aHarness, filename);
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ String fileName = "UnicodeData-4.0.0.txt";
+ long start = System.currentTimeMillis();
+ try
+ {
+ unicode t = new unicode(harness, fileName);
+ long midtime = System.currentTimeMillis();
+ t.performTests();
+ harness.debug("Benchmark : load:" + (midtime-start) +
+ "ms tests:" +
+ (System.currentTimeMillis() - midtime) + "ms");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/CVS/Entries b/gnu/testlet/java/lang/Class/CVS/Entries
new file mode 100644
index 00000000..725add73
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/CVS/Entries
@@ -0,0 +1,16 @@
+/ClassTest.java/1.20/Sun Jan 29 23:12:50 2006//
+/GetSimpleName.java/1.1/Mon Dec 13 15:52:25 2010//
+/IsAnonymousClass.java/1.1/Tue Dec 21 15:11:27 2010//
+/init.java/1.3/Thu Dec 30 18:25:40 2004//
+/isAnnotation.java/1.1/Mon Sep 10 13:37:03 2012//
+/isAnnotationPresent.java/1.1/Mon Sep 10 13:37:03 2012//
+/isArray.java/1.1/Mon Sep 10 13:37:03 2012//
+/isPrimitive.java/1.1/Mon Sep 10 13:37:03 2012//
+/newInstance.java/1.7/Sun Jun 25 16:55:59 2006//
+/reflect.java/1.11/Thu Dec 5 00:51:41 2002//
+/reflect2.java/1.6/Thu Jun 3 14:31:08 2004//
+/rf2_help.java/1.2/Mon Oct 21 15:21:56 2002//
+/rf_help.java/1.3/Sun Nov 3 18:35:52 2002//
+/security.java/1.8/Fri Jul 24 12:22:02 2009//
+/serialization.java/1.3/Wed Feb 16 19:11:39 2005//
+D
diff --git a/gnu/testlet/java/lang/Class/CVS/Entries.Log b/gnu/testlet/java/lang/Class/CVS/Entries.Log
new file mode 100644
index 00000000..8b7d22c8
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/classInfo////
+A D/pkg////
diff --git a/gnu/testlet/java/lang/Class/CVS/Repository b/gnu/testlet/java/lang/Class/CVS/Repository
new file mode 100644
index 00000000..567cdabd
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Class
diff --git a/gnu/testlet/java/lang/Class/CVS/Root b/gnu/testlet/java/lang/Class/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Class/ClassTest.java b/gnu/testlet/java/lang/Class/ClassTest.java
new file mode 100644
index 00000000..71b144c0
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/ClassTest.java
@@ -0,0 +1,606 @@
+/* Copyright (C) 1999, 2000, 2001, 2002 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: JDK1.0
+
+package gnu.testlet.java.lang.Class;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.net.*;
+
+public class ClassTest implements Cloneable, java.io.Serializable, Testlet
+{
+ final int ACC_PUBLIC = 0x0001; //Marked or implicitly public in source.
+ final int ACC_PRIVATE = 0x0002; // Marked private in source.
+ final int ACC_PROTECTED = 0x0004; // Marked protected in source.
+ final int ACC_STATIC = 0x0008; // Marked or implicitly static in source.
+ final int ACC_FINAL = 0x0010; // Marked final in source.
+ final int ACC_INTERFACE = 0x0200; // Was an interface in source.
+ final int ACC_ABSTRACT = 0x0400; // Marked or implicitly abstract in source.
+
+ protected static TestHarness harness;
+ public void test_toString()
+ {
+ harness.checkPoint("test_toString");
+ harness.check(getClass().toString().equals(getClass().isInterface() ?
+ "interface " : "class " +
+ getClass().getName()));
+ harness.check((new Object()).getClass().toString().
+ equals("class java.lang.Object"));
+ }
+
+ public void test_getName()
+ {
+ harness.checkPoint("test_getName");
+ harness.check((new java.util.Vector()).getClass().getName().
+ equals("java.util.Vector"));
+ harness.check((new Object[3]).getClass().getName().
+ equals("[Ljava.lang.Object;")) ;
+ harness.check((new int[6][7][8]).getClass().getName().equals("[[[I"));
+
+ // Note: the javadoc Class.getName() for JDK 1.3.x, 1.4.0 & 1.4.1
+ // seems to say that getName() returns a one character code for
+ // primitive types and void, etcetera. In fact, this is a bug in
+ // the Sun javadoc. According to Sun's bug database, it is fixed
+ // in JDK 1.4.2 (Merlin) release.
+ harness.check(Void.TYPE.getName().equals("void"));
+ harness.check(Boolean.TYPE.getName().equals("boolean"));
+ harness.check(Byte.TYPE.getName().equals("byte"));
+ harness.check(Character.TYPE.getName().equals("char"));
+ harness.check(Short.TYPE.getName().equals("short"));
+ harness.check(Integer.TYPE.getName().equals("int"));
+ harness.check(Long.TYPE.getName().equals("long"));
+ harness.check(Float.TYPE.getName().equals("float"));
+ harness.check(Double.TYPE.getName().equals("double"));
+ }
+
+ public void test_isInterface()
+ {
+ harness.checkPoint("test_isInterface");
+ harness.check(!(new Object()).getClass().isInterface());
+ harness.check(!getClass().isInterface());
+ try {
+ harness.check(Class.forName("java.lang.Cloneable").isInterface());
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_getSuperclass()
+ {
+ harness.checkPoint("test_getSuperclass (superclass of Boolean is Object)");
+ try {
+ harness.check((new Boolean(true)).getClass().getSuperclass() ==
+ Class.forName("java.lang.Object"));
+ } catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+
+ harness.checkPoint("test_getSuperclass (superclass of java.lang.Boolean.TYPE is null)");
+ try {
+ harness.check( java.lang.Boolean.TYPE.getSuperclass() == null);
+ } catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ harness.checkPoint("test_getSuperclass (superclass of Object is null)");
+ harness.check((new Object()).getClass().getSuperclass() == null);
+
+ harness.checkPoint("test_getSuperclass (superclass of [[I is Object)");
+ try {
+ Class clss = Class.forName("[[I");
+ harness.check(clss.getSuperclass() == Class.forName("java.lang.Object"));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ harness.checkPoint("test_getSuperclass (superclass of [D is Object)");
+ try {
+ Class clss = Class.forName("[D");
+ harness.check(clss.getSuperclass() == Class.forName("java.lang.Object"));
+ harness.debug("superclass of " + clss + " is " + clss.getSuperclass());
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ harness.checkPoint("test_getSuperclass (superclass of Cloneable is null)");
+ try {
+ Class clss = Class.forName("java.lang.Cloneable");
+ harness.check(clss.getSuperclass() == null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class clss = Void.TYPE;
+ harness.check(clss.getSuperclass() == null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class clss = Double.TYPE;
+ harness.check(clss.getSuperclass() == null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_primitiveTypes()
+ {
+ Class cls;
+
+ harness.checkPoint("test_primitiveTypes java.lang.Boolean.TYPE is primitive");
+ cls = java.lang.Boolean.TYPE;
+ harness.check(cls.isPrimitive() == true);
+
+ harness.checkPoint("test_primitiveTypes java.lang.Double.TYPE is primitive");
+ cls = java.lang.Double.TYPE;
+ harness.check(cls.isPrimitive() == true);
+
+ harness.checkPoint("test_primitiveTypes java.lang.Void.TYPE is primitive");
+ cls = java.lang.Void.TYPE;
+ harness.check(cls.isPrimitive() == true);
+
+ harness.checkPoint("test_primitiveTypes java.lang.Object is not primitive");
+ try {
+ cls = Class.forName("java.lang.Object");
+ harness.check(cls.isPrimitive() == false);
+ } catch(Exception e)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("test_primitiveTypes java.lang.Integer is not primitive");
+ try {
+ cls = Class.forName("java.lang.Integer");
+ harness.check(cls.isPrimitive() == false);
+ } catch(Exception e)
+ {
+ harness.check(false);
+ }
+
+ try {
+ harness.checkPoint("test_primitiveTypes [I is not primitive");
+ cls = Class.forName("[I");
+ harness.check(cls.isPrimitive() == false);
+ } catch(Exception e)
+ {
+ harness.check(false);
+ }
+ }
+
+ private class PrivateType {
+ int foo;
+ }
+
+ public void test_Modifiers()
+ {
+ Class cls;
+
+ harness.checkPoint("test_Modifiers java.lang.Boolean.TYPE modifiers");
+ cls = java.lang.Boolean.TYPE;
+ harness.check((cls.getModifiers() &
+ (ACC_PUBLIC | ACC_PROTECTED | ACC_PRIVATE |
+ ACC_FINAL | ACC_INTERFACE)),
+ (ACC_PUBLIC | ACC_FINAL));
+
+ harness.checkPoint("test_Modifiers java.lang.Boolean modifiers");
+ try {
+ cls = Class.forName("java.lang.Boolean");
+ harness.check((cls.getModifiers() &
+ (ACC_PUBLIC | ACC_PROTECTED | ACC_PRIVATE |
+ ACC_FINAL | ACC_INTERFACE)),
+ (ACC_PUBLIC | ACC_FINAL));
+ } catch(Exception e)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("test_Modifiers [I modifiers");
+ try {
+ cls = Class.forName("[I");
+ harness.check((cls.getModifiers() &
+ (ACC_PUBLIC | ACC_PROTECTED | ACC_PRIVATE |
+ ACC_FINAL | ACC_INTERFACE)),
+ (ACC_PUBLIC | ACC_FINAL));
+ } catch(Exception e)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("test_Modifiers private modifier");
+ PrivateType foo = new PrivateType(); //new Cloneable() { int d; };
+ cls = foo.getClass();
+ harness.check((cls.getModifiers() & (ACC_PRIVATE)), (ACC_PRIVATE));
+
+ harness.checkPoint("test_Modifiers array modifiers");
+ /* PrivateType[] array = new PrivateType[2];
+ cls = array.getClass();
+ harness.check((cls.getModifiers() & (ACC_PRIVATE)) == (ACC_PRIVATE));
+ harness.check((cls.getModifiers() & (ACC_FINAL)) == (ACC_FINAL));
+ harness.check((cls.getModifiers() & (ACC_INTERFACE)) == 0);
+ */
+
+ harness.checkPoint("test_Modifiers java.lang.Boolean modifiers");
+ cls = java.lang.Boolean.TYPE;
+ harness.check((cls.getModifiers() & (ACC_PUBLIC | ACC_FINAL)) != 0);
+
+ }
+
+ public void test_getInterfaces()
+ {
+ harness.checkPoint("test_getInterfaces");
+ Class clss[] = getClass().getInterfaces();
+
+ Class clclass = null, clclass1 = null;
+ try {
+ clclass = Class.forName("java.lang.Cloneable");
+ clclass1 = Class.forName("java.io.Serializable");
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ harness.check(clss != null && clss.length == 3 &&
+ clss[0] == clclass && clss[1] == clclass1);
+ if (clss != null && clss.length == 3 &&
+ !(clss[0] == clclass && clss[1] == clclass1)) {
+ for (int i = 0; i < clss.length; i++) {
+ harness.debug ("" + clss[i], false);
+ harness.debug (" ", false);
+ }
+ harness.debug("");
+ }
+
+ try {
+ Class clsss = Class.forName("[[I");
+ harness.check(clsss.getInterfaces().length, 2);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class clsss = Class.forName("[D");
+ harness.check(clsss.getInterfaces().length, 2);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_newInstance()
+ {
+ harness.checkPoint("test_newInstance");
+ Class clss = getClass();
+ Object obj;
+
+ try {
+ obj = clss.newInstance();
+ obj = clss.newInstance();
+ obj = clss.newInstance();
+ obj = clss.newInstance();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error: newInstance failed");
+ harness.debug(e);
+ }
+ catch (Error e) {
+ harness.fail("Error: newInstance failed with an Error");
+ harness.debug(e);
+ }
+ }
+
+
+ public void test_forName()
+ {
+ harness.checkPoint("test_forName");
+ try {
+ Object obj = Class.forName("java.lang.Object");
+ harness.check(obj != null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ // A non-existing class.
+ checkClassNotFoundException("ab.cd.ef");
+
+ // You can't use Class.forName() to get a primitive.
+ checkClassNotFoundException("I");
+ checkClassNotFoundException("int");
+
+ // Some malformed array types.
+ checkClassNotFoundException("[");
+ checkClassNotFoundException("[int");
+ checkClassNotFoundException("[II");
+ checkClassNotFoundException("[L");
+ checkClassNotFoundException("[L;");
+ checkClassNotFoundException("[L[I;");
+ checkClassNotFoundException("[Ljava.lang.Object");
+ checkClassNotFoundException("[Ljava.lang.Objectx");
+ checkClassNotFoundException("[Ljava.lang.Object;x");
+
+ // Using slashes isn't allowed.
+ checkClassNotFoundException("java/lang/Object");
+ }
+
+ private void checkClassNotFoundException(String className)
+ {
+ try {
+ Class c = Class.forName(className);
+ harness.debug("class: " + c);
+ harness.debug("classloader: " + c.getClassLoader());
+ if (c.isArray())
+ {
+ Class ct = c.getComponentType();
+ harness.debug("component type: " + ct);
+ harness.debug("component type classloader: " + ct.getClassLoader());
+ }
+ harness.check(false);
+ }
+ catch (ClassNotFoundException e) {
+ harness.check(true);
+ }
+ catch (Exception x) {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ public void test_getClassloader()
+ {
+ harness.checkPoint("test_getClassloader");
+ try {
+ Class obj2 = Class.forName("gnu.testlet.java.lang.Class.ClassTest");
+ ClassLoader ldr1 = obj2.getClassLoader();
+ // For compatibility with (at least) JDK 1.3.1 & JDK 1.4.0 ...
+ harness.check(ldr1 != null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_ComponentType()
+ {
+ harness.checkPoint("test_ComponentType");
+ try {
+ Class obj1 = Class.forName("java.lang.String");
+ harness.check(obj1.getComponentType() == null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class obj2 = Class.forName("java.lang.Exception");
+ harness.check(obj2.getComponentType() == null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class arrclass = Class.forName("[I");
+ harness.check(arrclass.getComponentType() != null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class arrclass = Class.forName("[[[[I");
+ harness.check(arrclass.getComponentType() != null);
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_isMethods()
+ {
+ harness.checkPoint("test_isMethods");
+ try {
+ Class obj1 = Class.forName("java.lang.String");
+ harness.check(obj1.isInstance("babu"));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class obj2 = Class.forName("java.lang.Integer");
+ harness.check(obj2.isInstance(new Integer(10)));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ int arr[] = new int[3];
+ Class arrclass = Class.forName("[I");
+ harness.check(arrclass.isInstance(arr));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class cls1 = Class.forName("java.lang.String");
+ Class supercls = Class.forName("java.lang.Object");
+ harness.check(supercls.isAssignableFrom(cls1) &&
+ !cls1.isAssignableFrom(supercls));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class cls1 = Class.forName("java.lang.String");
+ Class cls2 = Class.forName("java.lang.String");
+ harness.check(cls2.isAssignableFrom(cls1));
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ try {
+ Class arrclass = Class.forName("[I");
+ Class arrclass1 = Class.forName("[[[I");
+ Class arrclass2 = Class.forName("[[D");
+
+ harness.check(arrclass.isArray() && arrclass1.isArray() &&
+ arrclass2.isArray());
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ public void test_getResource()
+ {
+ harness.checkPoint("test_getResource");
+ // this test assume the classpath setting include current directory
+
+ try {
+ FileInputStream is = new FileInputStream("ClassTest.class");
+ URL url = getClass().getResource("ClassTest.class");
+ harness.check(url != null);
+ if (url == null) {
+ // Can't do any more of this test
+ return;
+ }
+
+ InputStream uis = url.openStream();
+ byte[] b1 = new byte[100];
+ byte[] b2 = new byte[100];
+ int ret = is.read(b1);
+ harness.check(ret == 100);
+ ret = uis.read(b2);
+ harness.check(ret == 100);
+ for (int i = 0; i < 100; i++) {
+ if (b1[i] != b2[i]) {
+ harness.check(false);
+ break;
+ }
+ if (i == 99) {
+ harness.check(true);
+ }
+ }
+
+ uis = getClass().getResourceAsStream("ClassTest.class");
+ harness.check(uis != null);
+ if (uis == null) {
+ // Can't do any more of this test
+ return;
+ }
+ ret = uis.read(b2);
+ harness.check(ret == 100);
+ for (int i = 0; i < 100; i++) {
+ if (b1[i] != b2[i]) {
+ harness.check(false);
+ break;
+ }
+ if (i == 99) {
+ harness.check(true);
+ }
+ }
+ }
+ catch (IOException ex) {
+ harness.debug(ex);
+ harness.fail("IOException in test_getResource");
+ }
+ }
+
+ public void test_getResourceAsStream()
+ {
+ harness.checkPoint("test_getResourceAsStream");
+ // The bootclassloader does this different from most other CLs, so
+ // add a test for it.
+ InputStream in = Class.class.getResourceAsStream("Class.class");
+ harness.check(in != null);
+ in = Class.class.getResourceAsStream("/java/lang/Class.class");
+ harness.check(in != null);
+ // and a last extra check to see if we ever get a null
+ in = InputStream.class.getResourceAsStream("Class.class");
+ harness.check(in == null);
+ }
+
+ public void testall()
+ {
+ test_toString();
+ test_getName();
+ test_isInterface();
+ test_getSuperclass();
+ test_primitiveTypes();
+ test_Modifiers();
+ test_getInterfaces();
+ test_newInstance();
+ test_forName();
+ test_ComponentType();
+ test_getClassloader();
+ test_isMethods();
+ // This one doesn't work so well in Mauve.
+ // test_getResource();
+ test_getResourceAsStream();
+
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Class/GetSimpleName.java b/gnu/testlet/java/lang/Class/GetSimpleName.java
new file mode 100644
index 00000000..fe0c9712
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/GetSimpleName.java
@@ -0,0 +1,59 @@
+/* Copyright (C) 2010 Pekka Enberg
+ Copyright (C) 2010 Red Hat, Inc.
+
+ 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: JDK1.5
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.lang.reflect.Array;
+
+public class GetSimpleName implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Class<?> anon = (new Object() {
+ public String toString() { return "Hello!"; }
+ }).getClass();
+ Class<?> anonArray = Array.newInstance(anon, 1).getClass();
+
+ harness.check(int.class.getSimpleName(), "int",
+ "Primitive type class");
+ harness.check(int[].class.getSimpleName(), "int[]",
+ "Primitive type one-dimensional array class");
+ harness.check(int[][].class.getSimpleName(), "int[][]",
+ "Primitive type multi-dimensional array class");
+ harness.check(Object[].class.getSimpleName(), "Object[]",
+ "Object type one-dimensional array class");
+ harness.check(Object.class.getSimpleName(), "Object",
+ "Object type class");
+ harness.check(InnerClass.class.getSimpleName(), "InnerClass",
+ "Inner class");
+ harness.check(anon.getSimpleName(), "", "Anonymous class");
+ harness.check(anonArray.getSimpleName(), "[]", "Anonymous array class");
+ }
+
+ public static class InnerClass { };
+
+}
diff --git a/gnu/testlet/java/lang/Class/IsAnonymousClass.java b/gnu/testlet/java/lang/Class/IsAnonymousClass.java
new file mode 100644
index 00000000..efe3cd63
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/IsAnonymousClass.java
@@ -0,0 +1,58 @@
+/* Copyright (C) 2010 Red Hat, Inc.
+
+ 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: JDK1.5
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.lang.reflect.Array;
+
+public class IsAnonymousClass implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Class<?> anon = (new Object() {
+ public String toString() { return "Hello!"; }
+ }).getClass();
+ Class<?> anonArray = Array.newInstance(anon, 1).getClass();
+
+ harness.check(int.class.isAnonymousClass(), false,
+ "Primitive type class");
+ harness.check(int[].class.isAnonymousClass(), false,
+ "Primitive type one-dimensional array class");
+ harness.check(int[][].class.isAnonymousClass(), false,
+ "Primitive type multi-dimensional array class");
+ harness.check(Object[].class.isAnonymousClass(), false,
+ "Object type one-dimensional array class");
+ harness.check(Object.class.isAnonymousClass(), false,
+ "Object type class");
+ harness.check(InnerClass.class.isAnonymousClass(), false,
+ "Inner class");
+ harness.check(anon.isAnonymousClass(), true, "Anonymous class");
+ harness.check(anonArray.isAnonymousClass(), false, "Anonymous array class");
+ }
+
+ public static class InnerClass { };
+
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/CVS/Entries b/gnu/testlet/java/lang/Class/classInfo/CVS/Entries
new file mode 100644
index 00000000..cba13bcd
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 10 10:03:48 2012//
+/getInterfaces.java/1.1/Tue Jul 10 10:03:48 2012//
+/getModifiers.java/1.1/Tue Jul 10 10:03:48 2012//
+/getName.java/1.1/Tue Jul 10 10:03:48 2012//
+/getPackage.java/1.1/Tue Jul 10 10:03:48 2012//
+/getSimpleName.java/1.1/Tue Jul 10 10:03:48 2012//
+/getSuperclass.java/1.1/Tue Jul 10 10:03:48 2012//
+/isAssignableFrom.java/1.1/Tue Jul 10 10:03:48 2012//
+/isInstance.java/1.1/Tue Jul 10 10:03:48 2012//
+/isInterface.java/1.1/Tue Jul 10 10:03:48 2012//
+/isLocalClass.java/1.1/Tue Jul 10 10:03:48 2012//
+/isMemberClass.java/1.1/Tue Jul 10 10:03:48 2012//
+/isPrimitive.java/1.1/Tue Jul 10 10:03:48 2012//
+/isSynthetic.java/1.1/Tue Jul 10 10:03:48 2012//
+D
diff --git a/gnu/testlet/java/lang/Class/classInfo/CVS/Repository b/gnu/testlet/java/lang/Class/classInfo/CVS/Repository
new file mode 100644
index 00000000..811bb739
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Class/classInfo
diff --git a/gnu/testlet/java/lang/Class/classInfo/CVS/Root b/gnu/testlet/java/lang/Class/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Class/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Class/classInfo/InstanceOf.java
new file mode 100644
index 00000000..34e01490
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.Class
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Class
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Class
+ Class o = Class.class;
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Class);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Class/classInfo/getInterfaces.java
new file mode 100644
index 00000000..39d7462c
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getInterfaces.java
@@ -0,0 +1,63 @@
+// Test for method java.lang.Class.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.Class;
+import java.util.List;
+import java.util.Arrays;
+import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.Type;
+import java.lang.reflect.AnnotatedElement;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(GenericDeclaration.class));
+ harness.check(interfaces.contains(Type.class));
+ harness.check(interfaces.contains(AnnotatedElement.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getModifiers.java b/gnu/testlet/java/lang/Class/classInfo/getModifiers.java
new file mode 100644
index 00000000..3b92bc7c
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Class.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getName.java b/gnu/testlet/java/lang/Class/classInfo/getName.java
new file mode 100644
index 00000000..70c95f94
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Class");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getPackage.java b/gnu/testlet/java/lang/Class/classInfo/getPackage.java
new file mode 100644
index 00000000..e7bed963
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Class.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Class/classInfo/getSimpleName.java
new file mode 100644
index 00000000..776969c0
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Class");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Class/classInfo/getSuperclass.java
new file mode 100644
index 00000000..d99c5f85
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Class.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Class/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..30100842
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Class.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isInstance.java b/gnu/testlet/java/lang/Class/classInfo/isInstance.java
new file mode 100644
index 00000000..17f873eb
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(Class.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isInterface.java b/gnu/testlet/java/lang/Class/classInfo/isInterface.java
new file mode 100644
index 00000000..cf60f288
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Class/classInfo/isLocalClass.java
new file mode 100644
index 00000000..b47487e6
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Class/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c1442f7d
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Class/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8d0c7413
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Class/classInfo/isSynthetic.java
new file mode 100644
index 00000000..f9032594
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Class.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Class.class;
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/init.java b/gnu/testlet/java/lang/Class/init.java
new file mode 100644
index 00000000..5e6d8db5
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/init.java
@@ -0,0 +1,184 @@
+// Tags: JDK1.1
+//
+// Copyright (C) 2004, Free Software Foundation, Inc.
+// Contributed by Mark J. Wielaard (mark@klomp.org)
+//
+// 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.java.lang.Class;
+
+import gnu.testlet.*;
+import java.lang.reflect.*;
+
+// This tests VM Spec 2.17.4
+// As discussed at http://gcc.gnu.org/ml/java-patches/2004-q2/msg00443.html
+public class init implements Testlet
+{
+ static boolean initI = false;
+ static boolean initC1 = false;
+ static boolean initC2 = false;
+ static boolean initC3 = false;
+ static boolean initC4 = false;
+ static boolean initC5 = false;
+ static boolean invokedM = false;
+
+ interface I
+ {
+ static long l = init.initI();
+ void m();
+ }
+
+ static class C1 implements I
+ {
+ static long l = init.initC1();
+ public void m()
+ {
+ invokedM = true;
+ }
+ }
+
+ static class C2 implements I
+ {
+ static long l = init.initC2();
+ public void m() { }
+ }
+
+ static class C3 extends C2
+ {
+ static long l = init.initC3();
+ }
+
+ static class C4 extends C2
+ {
+ static long l = init.initC4();
+ static boolean m2() {
+ return true;
+ }
+ }
+
+ static class C5 extends C4
+ {
+ static long l = init.initC5();
+ public static int i;
+ }
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ // None of this should initialize anything
+ Class i = new I[0].getClass().getComponentType();
+ Method m = i.getDeclaredMethod("m", null);
+ Field f = Class.forName(getClass().getName() + "$C5",
+ false, getClass().getClassLoader()).getField("i");
+
+ // Static field access should initialize C3 and superclass C2 but not I
+ h.check(!initC2);
+ h.check(!initC3);
+ if (C3.l == 123)
+ hashCode();
+ h.check(initC2);
+ h.check(initC3);
+
+ // Static method invocation should initialize C4 but not I
+ h.check(!initC4);
+ if (C4.m2())
+ hashCode();
+ h.check(initC4);
+
+ // Static field access should initialize C5
+ h.check(!initC5);
+ f.set(null, new Character((char)0xffff));
+ h.check(C5.i == 0xffff);
+ h.check(initC5);
+
+ // Instantiation of a C should initialize C but not I
+ h.check(!initC1);
+ Object o = new C1();
+ h.check(initC1);
+
+ // Apparently, invocation of interface method initializes I
+ h.check(!initI);
+ h.check(!invokedM);
+ m.invoke(o, null);
+ h.check(initI);
+ h.check(invokedM);
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ h.debug(nsme);
+ h.check(false);
+ }
+ catch (NoSuchFieldException e)
+ {
+ h.debug(e);
+ h.check(false);
+ }
+ catch (InvocationTargetException ite)
+ {
+ h.debug(ite);
+ h.check(false);
+ }
+ catch (IllegalAccessException iae)
+ {
+ h.debug(iae);
+ h.check(false);
+ }
+ catch (ClassNotFoundException e)
+ {
+ h.debug(e);
+ h.check(false);
+ }
+ }
+
+ static long initI()
+ {
+ initI = true;
+ return 5;
+ }
+
+ static long initC1()
+ {
+ initC1 = true;
+ return 5;
+ }
+
+ static long initC2()
+ {
+ initC2 = true;
+ return 5;
+ }
+
+ static long initC3()
+ {
+ initC3 = true;
+ return 5;
+ }
+
+ static long initC4()
+ {
+ initC4 = true;
+ return 5;
+ }
+
+ static long initC5()
+ {
+ initC5 = true;
+ return 5;
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/isAnnotation.java b/gnu/testlet/java/lang/Class/isAnnotation.java
new file mode 100644
index 00000000..800f3a9d
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/isAnnotation.java
@@ -0,0 +1,69 @@
+// Test for method java.lang.Class.isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // get a runtime class of an Class
+ Class c1 = Class.class;
+ harness.check(!c1.isAnnotation());
+
+ // get a runtime class of an Annotation
+ Class c2 = java.lang.annotation.Annotation.class;
+ harness.check(!c2.isAnnotation());
+
+ // get a runtime class of an Annotation
+ Class c3 = java.lang.annotation.Documented.class;
+ harness.check(c3.isAnnotation());
+
+ // get a runtime class of an Inherited
+ Class c4 = java.lang.annotation.Inherited.class;
+ harness.check(c4.isAnnotation());
+
+ // get a runtime class of an Retention
+ Class c5 = java.lang.annotation.Retention.class;
+ harness.check(c5.isAnnotation());
+
+ // get a runtime class of an Target
+ Class c6 = java.lang.annotation.Target.class;
+ harness.check(c6.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/isAnnotationPresent.java b/gnu/testlet/java/lang/Class/isAnnotationPresent.java
new file mode 100644
index 00000000..7f2ee259
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/isAnnotationPresent.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Class.isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.isAnnotation()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // get a runtime class of an Class
+ Class c1 = Class.class;
+ harness.check(!c1.isAnnotationPresent(java.lang.annotation.Annotation.class));
+
+ // get a runtime class of an Identify
+ Class c2 = java.security.Identity.class;
+ harness.check(!c2.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c2.isAnnotationPresent(java.lang.annotation.Documented.class));
+ // this class is deprecated!
+ harness.check(c2.isAnnotationPresent(java.lang.Deprecated.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/isArray.java b/gnu/testlet/java/lang/Class/isArray.java
new file mode 100644
index 00000000..49ccfb3b
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/isArray.java
@@ -0,0 +1,103 @@
+// Test for method java.lang.Class.isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // primitive types and it's corresponding classes
+ checkClass(harness, "java.lang.Boolean", false);
+ checkClass(harness, "java.lang.Character", false);
+ checkClass(harness, "java.lang.Byte", false);
+ checkClass(harness, "java.lang.Short", false);
+ checkClass(harness, "java.lang.Integer", false);
+ checkClass(harness, "java.lang.Long", false);
+ checkClass(harness, "java.lang.Float", false);
+ checkClass(harness, "java.lang.Double", false);
+ checkClass(harness, "java.lang.Object", false);
+
+ // one-dimensional arrays
+ checkClass(harness, "[Z", true);
+ checkClass(harness, "[C", true);
+ checkClass(harness, "[B", true);
+ checkClass(harness, "[S", true);
+ checkClass(harness, "[I", true);
+ checkClass(harness, "[J", true);
+ checkClass(harness, "[F", true);
+ checkClass(harness, "[D", true);
+ checkClass(harness, "[Ljava.lang.Object;", true);
+
+ // two-dimensional arrays
+ checkClass(harness, "[[Z", true);
+ checkClass(harness, "[[C", true);
+ checkClass(harness, "[[B", true);
+ checkClass(harness, "[[S", true);
+ checkClass(harness, "[[I", true);
+ checkClass(harness, "[[J", true);
+ checkClass(harness, "[[F", true);
+ checkClass(harness, "[[D", true);
+ checkClass(harness, "[[Ljava.lang.Object;", true);
+
+ // three-dimensional arrays
+ checkClass(harness, "[[[Z", true);
+ checkClass(harness, "[[[C", true);
+ checkClass(harness, "[[[B", true);
+ checkClass(harness, "[[[S", true);
+ checkClass(harness, "[[[I", true);
+ checkClass(harness, "[[[J", true);
+ checkClass(harness, "[[[F", true);
+ checkClass(harness, "[[[D", true);
+ checkClass(harness, "[[[Ljava.lang.Object;", true);
+ }
+
+ public void checkClass(TestHarness harness, String className, boolean isArray)
+ {
+ try
+ {
+ Class c = Class.forName(className);
+ harness.check(c.isArray() == isArray);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/isPrimitive.java b/gnu/testlet/java/lang/Class/isPrimitive.java
new file mode 100644
index 00000000..b211198b
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/isPrimitive.java
@@ -0,0 +1,116 @@
+// Test for method java.lang.Class.isPrimitive()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Class;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Class;
+
+
+
+/**
+ * Test for method java.lang.Class.isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // primitive types
+ harness.check(Boolean.TYPE.isPrimitive(), true);
+ harness.check(Character.TYPE.isPrimitive(), true);
+ harness.check(Byte.TYPE.isPrimitive(), true);
+ harness.check(Short.TYPE.isPrimitive(), true);
+ harness.check(Integer.TYPE.isPrimitive(), true);
+ harness.check(Long.TYPE.isPrimitive(), true);
+ harness.check(Float.TYPE.isPrimitive(), true);
+ harness.check(Double.TYPE.isPrimitive(), true);
+ harness.check(Void.TYPE.isPrimitive(), true);
+
+ // classes corresponding to primitive types
+ checkClass(harness, "java.lang.Boolean", false);
+ checkClass(harness, "java.lang.Character", false);
+ checkClass(harness, "java.lang.Byte", false);
+ checkClass(harness, "java.lang.Short", false);
+ checkClass(harness, "java.lang.Integer", false);
+ checkClass(harness, "java.lang.Long", false);
+ checkClass(harness, "java.lang.Float", false);
+ checkClass(harness, "java.lang.Double", false);
+
+ // common object
+ checkClass(harness, "java.lang.Object", false);
+
+ // one-dimensional arrays
+ checkClass(harness, "[Z", false);
+ checkClass(harness, "[C", false);
+ checkClass(harness, "[B", false);
+ checkClass(harness, "[S", false);
+ checkClass(harness, "[I", false);
+ checkClass(harness, "[J", false);
+ checkClass(harness, "[F", false);
+ checkClass(harness, "[D", false);
+ checkClass(harness, "[Ljava.lang.Object;", false);
+
+ // two-dimensional arrays
+ checkClass(harness, "[[Z", false);
+ checkClass(harness, "[[C", false);
+ checkClass(harness, "[[B", false);
+ checkClass(harness, "[[S", false);
+ checkClass(harness, "[[I", false);
+ checkClass(harness, "[[J", false);
+ checkClass(harness, "[[F", false);
+ checkClass(harness, "[[D", false);
+ checkClass(harness, "[[Ljava.lang.Object;", false);
+
+ // three-dimensional arrays
+ checkClass(harness, "[[[Z", false);
+ checkClass(harness, "[[[C", false);
+ checkClass(harness, "[[[B", false);
+ checkClass(harness, "[[[S", false);
+ checkClass(harness, "[[[I", false);
+ checkClass(harness, "[[[J", false);
+ checkClass(harness, "[[[F", false);
+ checkClass(harness, "[[[D", false);
+ checkClass(harness, "[[[Ljava.lang.Object;", false);
+ }
+
+ public void checkClass(TestHarness harness, String className, boolean isPrimitive)
+ {
+ try
+ {
+ Class c = Class.forName(className);
+ harness.check(c.isPrimitive() == isPrimitive);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Class/newInstance.java b/gnu/testlet/java/lang/Class/newInstance.java
new file mode 100644
index 00000000..46d4bc84
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/newInstance.java
@@ -0,0 +1,332 @@
+// Tags: JDK1.1
+
+// Uses: pkg/test1 pkg/test2 pkg/test3 pkg/test4
+
+// Copyright (C) 2005 Jeroen Frijters
+// Copyright (C) 2006 Mark J. Wielaard
+
+// 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.java.lang.Class;
+
+import java.io.IOException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class newInstance implements Testlet
+{
+ static class test1
+ {
+ private static class inner
+ {
+ public inner()
+ {
+ }
+ }
+
+ test1()
+ {
+ }
+
+ static void check(TestHarness harness)
+ {
+ try
+ {
+ harness.check(test1.class.isInstance(test1.class.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+ }
+
+ public static class test2
+ {
+ public test2()
+ {
+ }
+
+ static void check(TestHarness harness)
+ {
+ try
+ {
+ harness.check(test2.class.isInstance(test2.class.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+ }
+
+ static class test3
+ {
+ public test3()
+ {
+ }
+
+ static void check(TestHarness harness)
+ {
+ try
+ {
+ harness.check(test3.class.isInstance(test3.class.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+ }
+
+ public static class test4
+ {
+ test4()
+ {
+ }
+
+ static void check(TestHarness harness)
+ {
+ try
+ {
+ harness.check(test4.class.isInstance(test4.class.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+ }
+
+ public static class test5
+ {
+ private test5()
+ {
+ }
+
+ static void check(TestHarness harness)
+ {
+ try
+ {
+ harness.check(test5.class.isInstance(test5.class.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+ }
+
+ public static class test6
+ {
+ public test6() throws IOException
+ {
+ throw new IOException("hi bob");
+ }
+
+ static void check(TestHarness harness)
+ {
+ boolean ok = false;
+ try
+ {
+ test6.class.newInstance();
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ ok = t instanceof IOException;
+ }
+ harness.check(ok);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ test1.check(harness);
+ test2.check(harness);
+ test3.check(harness);
+ test4.check(harness);
+ test5.check(harness);
+
+ checkSuccess(harness, test1.class);
+ checkSuccess(harness, test2.class);
+ checkSuccess(harness, test3.class);
+ checkSuccess(harness, test4.class);
+ // Just see to it that the following is legal.
+ new test5();
+ // If new test5() is legal, why should test5.class.newInstance()
+ // throw IllegalAccessException? The reason that it is different is
+ // that 'new test5()' will call a compiler-generated accessor
+ // constructor. This accessor has package-private access and an
+ // extra argument (to differentiate it from the user-written
+ // constructor).
+ checkFail(harness, test5.class);
+
+ checkSuccess(harness, test1.inner.class);
+
+ try
+ {
+ checkFail(harness, Class.forName("gnu.testlet.java.lang.Class.pkg.test1"));
+ checkSuccess(harness, Class.forName("gnu.testlet.java.lang.Class.pkg.test2"));
+ checkFail(harness, Class.forName("gnu.testlet.java.lang.Class.pkg.test3"));
+ checkFail(harness, Class.forName("gnu.testlet.java.lang.Class.pkg.test4"));
+ }
+ catch (ClassNotFoundException x)
+ {
+ harness.debug(x);
+ harness.fail("test configuration failure");
+ }
+
+ test6.check(harness);
+
+ boolean thrown;
+ // Interfaces cannot be instantiated
+ try
+ {
+ Runnable.class.newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ // Abstract classes cannot be instantiated
+ try
+ {
+ Number.class.newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ // Array classes cannot be instantiated
+ try
+ {
+ new Object[1].getClass().newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ // Primitive classes cannot be instantiated
+ try
+ {
+ Byte.TYPE.newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ // Void cannot be instantiated
+ try
+ {
+ Void.TYPE.newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ // No nullary constructor cannot be instantiated
+ try
+ {
+ Integer.class.newInstance();
+ thrown = false;
+ }
+ catch (IllegalAccessException iae)
+ {
+ thrown = false; // Wrong one
+ }
+ catch (InstantiationException ie)
+ {
+ thrown = true;
+ }
+ harness.check(thrown);
+
+ }
+
+ static void checkSuccess(TestHarness harness, Class c)
+ {
+ try
+ {
+ harness.check(c.isInstance(c.newInstance()));
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+
+ static void checkFail(TestHarness harness, Class c)
+ {
+ try
+ {
+ c.newInstance();
+ harness.check(false);
+ }
+ catch (IllegalAccessException x)
+ {
+ harness.check(true);
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/pkg/CVS/Entries b/gnu/testlet/java/lang/Class/pkg/CVS/Entries
new file mode 100644
index 00000000..c67f3443
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/CVS/Entries
@@ -0,0 +1,5 @@
+/test1.java/1.2/Tue Nov 29 14:00:07 2005//
+/test2.java/1.2/Tue Nov 29 14:00:07 2005//
+/test3.java/1.2/Tue Nov 29 14:00:07 2005//
+/test4.java/1.2/Tue Nov 29 14:00:07 2005//
+D
diff --git a/gnu/testlet/java/lang/Class/pkg/CVS/Repository b/gnu/testlet/java/lang/Class/pkg/CVS/Repository
new file mode 100644
index 00000000..54e66084
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Class/pkg
diff --git a/gnu/testlet/java/lang/Class/pkg/CVS/Root b/gnu/testlet/java/lang/Class/pkg/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Class/pkg/test1.java b/gnu/testlet/java/lang/Class/pkg/test1.java
new file mode 100644
index 00000000..53d176d2
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/test1.java
@@ -0,0 +1,28 @@
+// Copyright (C) 2005 Jeroen Frijters
+// Tags: not-a-test
+
+// 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.java.lang.Class.pkg;
+
+class test1
+{
+ test1()
+ {
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/pkg/test2.java b/gnu/testlet/java/lang/Class/pkg/test2.java
new file mode 100644
index 00000000..40c7be50
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/test2.java
@@ -0,0 +1,28 @@
+// Copyright (C) 2005 Jeroen Frijters
+// Tags: not-a-test
+
+// 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.java.lang.Class.pkg;
+
+public class test2
+{
+ public test2()
+ {
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/pkg/test3.java b/gnu/testlet/java/lang/Class/pkg/test3.java
new file mode 100644
index 00000000..15596726
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/test3.java
@@ -0,0 +1,28 @@
+// Copyright (C) 2005 Jeroen Frijters
+// Tags: not-a-test
+
+// 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.java.lang.Class.pkg;
+
+class test3
+{
+ public test3()
+ {
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/pkg/test4.java b/gnu/testlet/java/lang/Class/pkg/test4.java
new file mode 100644
index 00000000..42416b86
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/pkg/test4.java
@@ -0,0 +1,28 @@
+// Copyright (C) 2005 Jeroen Frijters
+// Tags: not-a-test
+
+// 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.java.lang.Class.pkg;
+
+public class test4
+{
+ test4()
+ {
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/reflect.java b/gnu/testlet/java/lang/Class/reflect.java
new file mode 100644
index 00000000..486303ac
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/reflect.java
@@ -0,0 +1,364 @@
+// Tags: JDK1.1
+// Uses: rf_help rf2_help
+
+// Copyright (C) 2000, 2002 Cygnus Solutions
+
+// 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.java.lang.Class;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.*;
+
+public class reflect implements Testlet
+{
+ public int do_nothing (int arg)
+ {
+ return ++arg;
+ }
+
+ public Class getClass (String name)
+ {
+ // gcj can't handle `.class' notation yet.
+ Class k = null;
+ try {
+ k = Class.forName(name);
+ }
+ catch (Throwable _) {
+ // Nothing.
+ }
+ return k;
+ }
+
+ public Object getCons (Class k, Class[] types, boolean decl)
+ {
+ try {
+ return decl ? k.getDeclaredConstructor(types) : k.getConstructor(types);
+ }
+ catch (Throwable _) {
+ return _;
+ }
+ }
+
+ public Object getMethod (Class k, String name, Class[] types, boolean decl)
+ {
+ try {
+ return (decl ?
+ k.getDeclaredMethod(name, types) :
+ k.getMethod(name, types));
+ }
+ catch (Throwable _) {
+ return _;
+ }
+ }
+
+ public Object getField (Class k, String name, boolean decl)
+ {
+ try {
+ return decl ? k.getDeclaredField(name) : k.getField(name);
+ }
+ catch (Throwable _) {
+ return _;
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Class reflect_class = getClass ("gnu.testlet.java.lang.Class.reflect");
+ Class rf_help_class = getClass ("gnu.testlet.java.lang.Class.rf_help");
+ Class rf2_help_class = getClass ("gnu.testlet.java.lang.Class.rf2_help");
+ Class aci_class = getClass ("java.text.AttributedCharacterIterator");
+ Class i_class = Integer.TYPE;
+ Class array_class = (new Number[5][2]).getClass();
+
+ Class[] ptz = new Class[0];
+ Class[] pt1 = new Class[1];
+ pt1[0] = Integer.TYPE;
+
+ harness.checkPoint ("getConstructor");
+ // This class doesn't have an explicit constructor, so we make
+ // sure that the implicit one can be found.
+ Object cons = getCons (reflect_class, ptz, false);
+ harness.check(cons instanceof Constructor);
+
+ cons = getCons (reflect_class, pt1, false);
+ harness.check(cons instanceof NoSuchMethodException);
+
+ cons = getCons (rf_help_class, ptz, false);
+ harness.check(cons instanceof NoSuchMethodException);
+
+ cons = getCons (i_class, ptz, false);
+ harness.check(cons instanceof NoSuchMethodException);
+
+ harness.checkPoint("getConstructors");
+ try {
+ Constructor[] cls = reflect_class.getConstructors();
+ harness.check(cls.length, 1);
+ harness.check(cls[0].getName(), "gnu.testlet.java.lang.Class.reflect");
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = rf_help_class.getConstructors();
+ harness.check(cls.length, 1);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = i_class.getConstructors();
+ harness.check(cls.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = array_class.getConstructors();
+ harness.check(cls.length, 0);
+ }
+ catch (SecurityException se) {
+ harness.check(false);
+ }
+
+ harness.checkPoint ("getDeclaredConstructor");
+ cons = getCons (rf_help_class, ptz, true);
+ harness.check(cons instanceof Constructor);
+ cons = getCons (rf_help_class, pt1, true);
+ harness.check(cons instanceof NoSuchMethodException);
+ cons = getCons (i_class, ptz, true);
+ harness.check(cons instanceof NoSuchMethodException);
+
+ harness.checkPoint("getDeclaredConstructors");
+ try {
+ Constructor[] cls = reflect_class.getDeclaredConstructors();
+ harness.check(cls.length, 1);
+ harness.check(cls[0].getName(), "gnu.testlet.java.lang.Class.reflect");
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = rf_help_class.getDeclaredConstructors();
+ harness.check(cls.length, 2);
+ harness.check(cls[0].getName(), "gnu.testlet.java.lang.Class.rf_help");
+ harness.check(cls[1].getName(), "gnu.testlet.java.lang.Class.rf_help");
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ harness.check(false);
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = i_class.getDeclaredConstructors();
+ harness.check(cls.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Constructor[] cls = array_class.getDeclaredConstructors();
+ harness.check(cls.length, 0);
+ }
+ catch (SecurityException se) {
+ harness.check(false);
+ }
+
+ harness.checkPoint ("getDeclaredField");
+ Object f = getField (rf_help_class, "size", true);
+ harness.check(f instanceof Field);
+ harness.check(((Field) f).getModifiers(), Modifier.PRIVATE);
+ f = getField (rf_help_class, "value", true);
+ harness.check(f instanceof Field);
+ harness.check(((Field) f).getModifiers(), Modifier.STATIC);
+ f = getField (rf2_help_class, "value", true);
+ harness.check(f instanceof NoSuchFieldException);
+
+ harness.checkPoint("getField");
+ f = getField (rf_help_class, "size", false);
+ harness.check(f instanceof NoSuchFieldException);
+ f = getField (rf_help_class, "name", false);
+ harness.check(f instanceof Field);
+ harness.check(((Field) f).getModifiers(), Modifier.PUBLIC);
+ f = getField (rf2_help_class, "name", false);
+ harness.check(f instanceof Field);
+ f = getField (rf2_help_class, "value", false);
+ harness.check(f instanceof NoSuchFieldException);
+
+ harness.checkPoint("getDeclaredFields");
+ try {
+ Field[] flds = rf_help_class.getDeclaredFields();
+ harness.check(flds.length, 3);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ harness.checkPoint("getFields");
+ try {
+ Field[] flds = rf_help_class.getFields();
+ harness.check(flds.length, 1);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Field[] flds = i_class.getFields();
+ harness.check(flds.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ harness.checkPoint("getMethod");
+
+ Object m = getMethod(rf_help_class, "doit", ptz, false);
+ harness.check(m instanceof NoSuchMethodException);
+ m = getMethod(reflect_class, "do_nothing", pt1, false);
+ harness.check(m instanceof Method);
+ harness.check(((Method) m).getName(), "do_nothing");
+ // FIXME: replace `==' with `,' and libgcj will segv.
+ harness.check(((Method) m).getDeclaringClass() == reflect_class);
+ // See if we can get something that is inherited.
+ m = getMethod(rf_help_class, "hashCode", ptz, false);
+ harness.check(m instanceof Method);
+
+ harness.checkPoint("getMethods");
+ int oms = 9; // Reasonable guess.
+ try {
+ oms = (new Object()).getClass().getMethods().length;
+ harness.check(true);
+ } catch (Throwable t) {
+ harness.debug(t);
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = rf_help_class.getMethods();
+ harness.check(ms.length, oms);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = reflect_class.getMethods();
+ int expected =
+ (6 /* from reflect.java; note that Testlet's method is also
+ declared here and should only be counted once. */
+ + oms /* from Object */
+ );
+ harness.check(ms.length, expected);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = i_class.getMethods();
+ harness.check(ms.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ harness.checkPoint("getDeclaredMethod");
+ m = getMethod(rf_help_class, "doit", ptz, true);
+ harness.check(m instanceof Method);
+ harness.check(((Method) m).getName(), "doit");
+ // Make sure we can't fetch a constructor this way.
+ m = getMethod(rf_help_class, "rf_help", ptz, true);
+ harness.check(m instanceof NoSuchMethodException);
+ m = getMethod(reflect_class, "do_nothing", pt1, false);
+ harness.check(m instanceof Method);
+ // See if we can get something that is inherited.
+ m = getMethod(rf_help_class, "hashCode", ptz, true);
+ harness.check(m instanceof NoSuchMethodException);
+
+ harness.checkPoint("getDeclaredMethods");
+ try {
+ Method[] ms = rf_help_class.getDeclaredMethods();
+ harness.check(ms.length, 1);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = reflect_class.getDeclaredMethods();
+ harness.check(ms.length, 6);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = i_class.getDeclaredMethods();
+ harness.check(ms.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ try {
+ Method[] ms = array_class.getDeclaredMethods();
+ harness.check(ms.length, 0);
+ }
+ catch (SecurityException se) {
+ // One per check above.
+ harness.check(false);
+ }
+
+ harness.checkPoint("getDeclaringClass");
+ // None of these classes has a declaring class.
+ harness.check(rf_help_class.getDeclaringClass(), null);
+ harness.check(reflect_class.getDeclaringClass(), null);
+ harness.check(i_class.getDeclaringClass(), null);
+
+ harness.checkPoint("getMethod with superinterface");
+ m = getMethod(aci_class, "current", ptz, false);
+ if (m instanceof Method)
+ harness.check(((Method) m).getName(), "current");
+ else
+ harness.check(false);
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/reflect2.java b/gnu/testlet/java/lang/Class/reflect2.java
new file mode 100644
index 00000000..c21591d1
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/reflect2.java
@@ -0,0 +1,124 @@
+// 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.java.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 && inner[0].equals(help_inner));
+
+ inner = help2.getClasses();
+ harness.check(inner.length == 3);
+
+ 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.java.lang.Class.rf_help");
+ help2 = getClass("gnu.testlet.java.lang.Class.rf2_help");
+
+ help_inner = getClass("gnu.testlet.java.lang.Class.rf_help$inner");
+ help2_inner = getClass("gnu.testlet.java.lang.Class.rf2_help$inner_class_1");
+ help2_inner_inner = getClass("gnu.testlet.java.lang.Class."
+ + "rf2_help$inner_class_1$inner_inner_class_1");
+
+ test_getClasses();
+ test_getDeclaringClass();
+ test_getDeclaredClasses();
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/rf2_help.java b/gnu/testlet/java/lang/Class/rf2_help.java
new file mode 100644
index 00000000..82c13574
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/rf2_help.java
@@ -0,0 +1,66 @@
+// A helper for reflect.java.
+// Tags: not-a-test
+
+// 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.java.lang.Class;
+
+public class rf2_help extends rf_help
+{
+ public class inner_class_1
+ {
+ public class inner_inner_class_1
+ {
+ }
+ }
+
+ private class inner_class_2
+ {
+ }
+
+ protected class inner_class_3
+ {
+ }
+
+ class inner_class_4
+ {
+ }
+
+ public interface inner_interface_1
+ {
+ }
+
+ private interface inner_interface_2
+ {
+ }
+
+ protected interface inner_interface_3
+ {
+ }
+
+ interface inner_interface_4
+ {
+ }
+
+ public rf2_help(double arg)
+ {
+ super(arg);
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/rf_help.java b/gnu/testlet/java/lang/Class/rf_help.java
new file mode 100644
index 00000000..2cd9f4c4
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/rf_help.java
@@ -0,0 +1,50 @@
+// A helper for reflect.java.
+// Tags: not-a-test
+
+// Copyright (C) 2000 Cygnus Solutions
+
+// 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.java.lang.Class;
+
+public class rf_help
+{
+
+ public static class inner {
+ }
+
+ private int size;
+ public String name;
+ static double value = 1.0;
+
+ static void doit()
+ {
+ value = 1.0;
+ }
+
+ private rf_help()
+ {
+ this(0.0);
+ }
+
+ public rf_help(double arg)
+ {
+ size = 0;
+ name = "";
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/security.java b/gnu/testlet/java/lang/Class/security.java
new file mode 100644
index 00000000..55b86b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/security.java
@@ -0,0 +1,459 @@
+// Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.Class;
+
+import java.io.File;
+import java.lang.reflect.Member;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.Permission;
+import java.security.Security;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ // we need a class with a different loader for most of the
+ // checks to occur.
+ Class testClass = new URLClassLoader(new URL[] {
+ new File(harness.getBuildDirectory()).toURL()}, null).loadClass(
+ getClass().getName());
+ harness.check(getClass().getClassLoader() != testClass.getClassLoader());
+
+ // Make sure everything's fully resolved, or we'll be loading
+ // classes during tests and the extra checks will make us fail.
+ testClass.getDeclaredClasses();
+ testClass.getDeclaredMethods();
+
+ // we need to restrict access to some packages for some of the
+ // checks to occur.
+ String oldrestrictions = Security.getProperty("package.access");
+ Security.setProperty(
+ "package.access",
+ "gnu.testlet.java.lang.Class.");
+
+ try {
+ Permission[] noChecks = new Permission[] { };
+
+ Permission[] getClassLoader = new Permission[] {
+ new RuntimePermission("getClassLoader")};
+
+ Permission[] accessDeclaredMembers = new Permission[] {
+ new RuntimePermission("accessDeclaredMembers"),
+ new RuntimePermission(
+ "accessClassInPackage.gnu.testlet.java.lang.Class")};
+
+ Permission[] accessPublicMembers = new Permission[] {
+ new RuntimePermission(TestSecurityManager3.publicPerm),
+ new RuntimePermission(
+ "accessClassInPackage.gnu.testlet.java.lang.Class")};
+
+ Permission[] getProtectionDomain = new Permission[] {
+ new RuntimePermission("getProtectionDomain")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.Class-forName
+ harness.checkPoint("forName");
+ try {
+ sm.prepareChecks(getClassLoader);
+ Class.forName("java.lang.Class", false, null);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getClassLoader
+ harness.checkPoint("getClassLoader");
+ try {
+ sm.prepareChecks(getClassLoader);
+ testClass.getClassLoader();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // If it is a bootstrap class, there is a null classloader
+ // and no checks are necessary.
+ try {
+ sm.prepareChecks(noChecks);
+ Thread.class.getClassLoader();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // getDeclaredMember checks
+ getMemberChecks(harness, sm, testClass, true, accessDeclaredMembers);
+
+ // throwpoint: java.lang.Class-getProtectionDomain
+ harness.checkPoint("getProtectionDomain");
+ try {
+ sm.prepareChecks(getProtectionDomain);
+ testClass.getProtectionDomain();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(getProtectionDomain);
+ getClass().getProtectionDomain();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+
+ // these tests need a modified security manager
+ sm = new TestSecurityManager3(harness);
+ try {
+ sm.install();
+
+ // getMember checks
+ getMemberChecks(harness, sm, testClass, false, accessPublicMembers);
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ finally {
+ if (oldrestrictions != null)
+ {
+ Security.setProperty("package.access", oldrestrictions);
+ }
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private void getMemberChecks(TestHarness harness, TestSecurityManager sm,
+ Class testClass, boolean declared,
+ Permission[] mustCheck)
+ {
+ int level;
+
+ // throwpoint: java.lang.Class-getClasses
+ // throwpoint: java.lang.Class-getDeclaredClasses
+ if (declared)
+ harness.checkPoint("getDeclaredClasses");
+ else
+ harness.checkPoint("getClasses");
+ try {
+ sm.prepareChecks(mustCheck);
+ if (declared)
+ testClass.getDeclaredClasses();
+ else
+ testClass.getClasses();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getFields
+ // throwpoint: java.lang.Class-getDeclaredFields
+ if (declared)
+ harness.checkPoint("getDeclaredFields");
+ else
+ harness.checkPoint("getFields");
+ try {
+ sm.prepareChecks(mustCheck);
+ if (declared)
+ testClass.getDeclaredFields();
+ else
+ testClass.getFields();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getMethods
+ // throwpoint: java.lang.Class-getDeclaredMethods
+ if (declared)
+ harness.checkPoint("getDeclaredMethods");
+ else
+ harness.checkPoint("getMethods");
+ try {
+ sm.prepareChecks(mustCheck);
+ if (declared)
+ testClass.getDeclaredMethods();
+ else
+ testClass.getMethods();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getConstructors
+ // throwpoint: java.lang.Class-getDeclaredConstructors
+ if (declared)
+ harness.checkPoint("getDeclaredConstructors");
+ else
+ harness.checkPoint("getConstructors");
+ try {
+ sm.prepareChecks(mustCheck);
+ if (declared)
+ testClass.getDeclaredConstructors();
+ else
+ testClass.getConstructors();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getField
+ // throwpoint: java.lang.Class-getDeclaredField
+ if (declared) {
+ harness.checkPoint("getDeclaredField");
+ level = 0;
+ }
+ else {
+ harness.checkPoint("getField");
+ level = 3;
+ }
+ try {
+ for (int i = 0; i < modifiers.length; i++) {
+ for (int j = 0; j < 5; j++) {
+ sm.prepareChecks(mustCheck);
+ boolean exists;
+ try {
+ String name = modifiers[i] + "field" + j;
+ if (declared)
+ testClass.getDeclaredField(name);
+ else
+ testClass.getField(name);
+ exists = true;
+ }
+ catch (NoSuchFieldException e) {
+ exists = false;
+ }
+ sm.checkAllChecked();
+ harness.check(exists == (j > level));
+ }
+ }
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getMethod
+ // throwpoint: java.lang.Class-getDeclaredMethod
+ if (declared)
+ harness.checkPoint("getDeclaredMethod");
+ else
+ harness.checkPoint("getMethod");
+ try {
+ for (int i = 0; i < modifiers.length; i++) {
+ for (int j = 0; j < 5; j++) {
+ for (int k = 0; k < methodtypes.length; k++) {
+ sm.prepareChecks(mustCheck);
+ boolean exists;
+ try {
+ String name = modifiers[i] + "method" + j;
+ if (declared)
+ testClass.getDeclaredMethod(name, methodtypes[k]);
+ else
+ testClass.getMethod(name, methodtypes[k]);
+ exists = true;
+ }
+ catch (NoSuchMethodException e) {
+ exists = false;
+ }
+ sm.checkAllChecked();
+ harness.check(exists == (j > level && k > 0));
+ }
+ }
+ }
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Class-getConstructor
+ // throwpoint: java.lang.Class-getDeclaredConstructor
+ if (declared) {
+ harness.checkPoint("getDeclaredConstructor");
+ level = 0;
+ }
+ else {
+ harness.checkPoint("getConstructor");
+ level = 6;
+ }
+ try {
+ for (int i = 0; i < constructortypes.length; i++) {
+ sm.prepareChecks(mustCheck);
+ boolean exists;
+ try {
+ if (declared)
+ testClass.getDeclaredConstructor(constructortypes[i]);
+ else
+ testClass.getConstructor(constructortypes[i]);
+ exists = true;
+ }
+ catch (NoSuchMethodException e) {
+ exists = false;
+ }
+ sm.checkAllChecked();
+ harness.check(exists == (i > level));
+ }
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // Data tables for get{,Declared}{Field,Method,Constructor} checks
+ private static String[] modifiers = new String[] {"", "static"};
+ private static Class[][] methodtypes = new Class[][] {
+ new Class[] {short.class},
+ new Class[] {},
+ new Class[] {int.class},
+ new Class[] {String.class, boolean.class}};
+ private static Class[][] constructortypes = new Class[][] {
+ new Class[] {short.class},
+ new Class[] {int.class},
+ new Class[] {String.class, int.class},
+ new Class[] {int.class, int.class},
+ new Class[] {byte.class},
+ new Class[] {String.class},
+ new Class[] {int.class, String.class},
+ new Class[] {int.class, int.class, int.class},
+ new Class[] {}};
+
+ // Fields for getField and getDeclaredField checks
+ private boolean field1;
+ byte field2;
+ protected int field3;
+ public String field4;
+
+ private static boolean staticfield1;
+ static byte staticfield2;
+ protected static int staticfield3;
+ public static String staticfield4;
+
+ // Methods for getMethod and getDeclaredMethod checks
+ private void method1() {}
+ private void method1(int a) {}
+ private void method1(String b, boolean c) {}
+ char method2() { return 'a'; }
+ char method2(int a) { return 'b'; }
+ char method2(String b, boolean c) { return '1'; }
+ protected String method3() { return "x0x"; }
+ protected String method3(int a) { return "y"; }
+ protected String method3(String b, boolean c) { return "z"; }
+ public int method4() { return 1; }
+ public int method4(int a) { return 0; }
+ public int method4(String b, boolean c) { return -5; }
+
+ private static void staticmethod1() {}
+ private static void staticmethod1(int a) {}
+ private static void staticmethod1(String b, boolean c) {}
+ static char staticmethod2() { return 'a'; }
+ static char staticmethod2(int a) { return 'b'; }
+ static char staticmethod2(String b, boolean c) { return '1'; }
+ protected static String staticmethod3() { return "x0x"; }
+ protected static String staticmethod3(int a) { return "y"; }
+ protected static String staticmethod3(String b, boolean c) { return "z"; }
+ public static int staticmethod4() { return 1; }
+ public static int staticmethod4(int a) { return 0; }
+ public static int staticmethod4(String b, boolean c) { return -5; }
+
+ // Constructors for getConstructor and getDeclaredConstructor checks
+ private security(int a) {}
+ private security(String a, int b) {}
+ security(int a, int b) {}
+ security(byte a) {}
+ protected security(String a) {}
+ protected security(int a, String b) {}
+ public security(int a, int b, int c) {}
+ public security() {}
+
+ // The default implementation of SecurityManager.checkMemberAccess()
+ // checks no permissions if memberType is Member.PUBLIC. This class
+ // changes this, allowing us to test get{Field,Method,Constructor}.
+ // No other tests should use this class.
+ private static class TestSecurityManager3 extends TestSecurityManager
+ {
+ TestSecurityManager3(TestHarness harness)
+ {
+ super(harness);
+ }
+
+ static String publicPerm = "gnuAccessPublicMembers";
+
+ public void checkMemberAccess(Class c, int memberType)
+ {
+ if (c == null)
+ throw new NullPointerException();
+ if (memberType == Member.PUBLIC)
+ checkPermission(new RuntimePermission(publicPerm));
+ }
+ }
+
+ // Silence compiler warnings
+ public void shutUp()
+ {
+ field1 = staticfield1 = false;
+ new security(5).method1();
+ new security("hello", 5).method1(5);
+ method1("4", field1);
+ staticmethod1();
+ staticmethod1(5);
+ staticmethod1("4", staticfield1);
+ }
+}
diff --git a/gnu/testlet/java/lang/Class/serialization.java b/gnu/testlet/java/lang/Class/serialization.java
new file mode 100644
index 00000000..a81ebe14
--- /dev/null
+++ b/gnu/testlet/java/lang/Class/serialization.java
@@ -0,0 +1,134 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Class;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics2D;
+import java.awt.LayoutManager;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Vector;
+import java.util.Set;
+import java.util.SortedSet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some checks for serialization of a Class instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testClass(Cloneable.class, harness);
+ testClass(Comparable.class, harness);
+ testClass(Serializable.class, harness);
+ testClass(Externalizable.class, harness);
+ testClass(String.class, harness);
+ testClass(Number.class, harness);
+ testClass(Boolean.class, harness);
+ testClass(Integer.class, harness);
+ testClass(Float.class, harness);
+ testClass(Double.class, harness);
+ testClass(Vector.class, harness);
+ testClass(ArrayList.class, harness);
+ testClass(DateFormat.class, harness);
+ testClass(Point.class, harness);
+ testClass(Rectangle.class, harness);
+ testClass(Rectangle2D.class, harness);
+ testClass(Rectangle2D.Double.class, harness);
+ testClass(Line2D.class, harness);
+ testClass(Arc2D.class, harness);
+ testClass(RoundRectangle2D.class, harness);
+ testClass(Graphics2D.class, harness);
+ testClass(DefaultTableModel.class, harness);
+ testClass(LayoutManager.class, harness);
+ testClass(Array.class, harness);
+ testClass(Object.class, harness);
+ testClass(Class.class, harness);
+ testClass(Throwable.class, harness);
+ testClass(IOException.class, harness);
+ testClass(Void.class, harness);
+ testClass(ObjectStreamClass.class, harness);
+ testClass(Collection.class, harness);
+ testClass(Set.class, harness);
+ testClass(SortedSet.class, harness);
+
+ testClass(boolean.class, harness);
+ testClass(byte.class, harness);
+ testClass(short.class, harness);
+ testClass(char.class, harness);
+ testClass(int.class, harness);
+ testClass(long.class, harness);
+ testClass(float.class, harness);
+ testClass(double.class, harness);
+ testClass(void.class, harness);
+ }
+
+ private void testClass(Class c1, TestHarness harness)
+ {
+ Class c2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(c1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ c2 = (Class) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(c1.equals(c2), c1.toString());
+ }
+
+}
diff --git a/gnu/testlet/java/lang/ClassCastException/CVS/Entries b/gnu/testlet/java/lang/ClassCastException/CVS/Entries
new file mode 100644
index 00000000..cbfc9160
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Thu Mar 14 10:42:16 2013//
+/constructor.java/1.2/Thu Mar 14 10:42:17 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassCastException/CVS/Entries.Log b/gnu/testlet/java/lang/ClassCastException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ClassCastException/CVS/Repository b/gnu/testlet/java/lang/ClassCastException/CVS/Repository
new file mode 100644
index 00000000..f617f011
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassCastException
diff --git a/gnu/testlet/java/lang/ClassCastException/CVS/Root b/gnu/testlet/java/lang/ClassCastException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassCastException/TryCatch.java b/gnu/testlet/java/lang/ClassCastException/TryCatch.java
new file mode 100644
index 00000000..ff7956cf
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ClassCastException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ClassCastException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassCastException("ClassCastException");
+ }
+ catch (ClassCastException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Entries b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Entries
new file mode 100644
index 00000000..ebba4c36
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Thu Mar 14 10:42:17 2013//
+/getAnnotation.java/1.1/Fri Mar 15 09:01:35 2013//
+/getAnnotations.java/1.1/Fri Mar 15 09:01:35 2013//
+/getCanonicalName.java/1.1/Fri Mar 15 09:01:35 2013//
+/getClasses.java/1.1/Fri Mar 15 09:01:35 2013//
+/getComponentType.java/1.1/Fri Mar 15 09:01:35 2013//
+/getConstructor.java/1.1/Mon Mar 18 10:15:11 2013//
+/getConstructors.java/1.2/Thu Mar 28 10:51:13 2013//
+/getDeclaredAnnotations.java/1.1/Thu Mar 21 09:26:28 2013//
+/getDeclaredClasses.java/1.1/Thu Mar 21 09:26:28 2013//
+/getDeclaredConstructor.java/1.1/Thu Mar 21 09:26:28 2013//
+/getDeclaredConstructors.java/1.2/Thu Mar 28 10:51:13 2013//
+/getDeclaredField.java/1.1/Mon Mar 18 10:15:11 2013//
+/getDeclaredFields.java/1.2/Thu Mar 28 10:51:13 2013//
+/getDeclaredMethod.java/1.1/Fri Mar 22 09:29:44 2013//
+/getDeclaredMethods.java/1.2/Thu Mar 28 10:51:13 2013//
+/getDeclaringClass.java/1.1/Fri Mar 29 08:47:57 2013//
+/getEnclosingClass.java/1.1/Fri Mar 29 08:47:57 2013//
+/getEnclosingConstructor.java/1.1/Fri Mar 29 08:47:57 2013//
+/getEnclosingMethod.java/1.1/Fri Mar 29 08:47:57 2013//
+/getField.java/1.1/Mon Mar 18 10:15:11 2013//
+/getFields.java/1.2/Tue Apr 2 07:36:19 2013//
+/getInterfaces.java/1.3/Tue Apr 2 07:36:19 2013//
+/getMethod.java/1.1/Mon Mar 18 10:15:11 2013//
+/getMethods.java/1.2/Tue Apr 2 07:36:19 2013//
+/getModifiers.java/1.3/Tue Apr 2 07:36:19 2013//
+/getName.java/1.3/Tue Apr 2 07:36:20 2013//
+/getPackage.java/1.3/Wed Mar 20 09:45:34 2013//
+/getSimpleName.java/1.3/Wed Mar 20 09:45:34 2013//
+/getSuperclass.java/1.3/Wed Mar 20 09:45:34 2013//
+/isAnnotation.java/1.1/Fri Mar 22 09:29:44 2013//
+/isAnnotationPresent.java/1.1/Fri Mar 22 09:29:44 2013//
+/isAnonymousClass.java/1.1/Fri Mar 22 09:29:44 2013//
+/isArray.java/1.1/Fri Mar 22 09:29:44 2013//
+/isAssignableFrom.java/1.3/Wed Mar 20 09:45:34 2013//
+/isEnum.java/1.1/Thu Mar 21 09:26:28 2013//
+/isInstance.java/1.3/Wed Mar 20 09:45:34 2013//
+/isInterface.java/1.3/Wed Mar 20 09:45:34 2013//
+/isLocalClass.java/1.3/Thu Mar 14 10:42:17 2013//
+/isMemberClass.java/1.3/Thu Mar 14 10:42:17 2013//
+/isPrimitive.java/1.3/Thu Mar 14 10:42:17 2013//
+/isSynthetic.java/1.3/Thu Mar 14 10:42:17 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Repository b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Repository
new file mode 100644
index 00000000..2206d707
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassCastException/classInfo
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Root b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..b9fde78b
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.ClassCastException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ClassCastException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ ClassCastException o = new ClassCastException("java.lang.ClassCastException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ClassCastException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotation.java
new file mode 100644
index 00000000..562bb767
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ClassCastException.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotations.java
new file mode 100644
index 00000000..d5aee8d2
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassCastException.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..13801842
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ClassCastException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getClasses.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getClasses.java
new file mode 100644
index 00000000..ae12099e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCastException.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getComponentType.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getComponentType.java
new file mode 100644
index 00000000..3bcc0e63
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructor.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructor.java
new file mode 100644
index 00000000..28342b9d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassCastException.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCastException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCastException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCastException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCastException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java
new file mode 100644
index 00000000..981dbfcf
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassCastException.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ClassCastException()", "java.lang.ClassCastException");
+ testedConstructors_jdk6.put("public java.lang.ClassCastException(java.lang.String)", "java.lang.ClassCastException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ClassCastException()", "java.lang.ClassCastException");
+ testedConstructors_jdk7.put("public java.lang.ClassCastException(java.lang.String)", "java.lang.ClassCastException");
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..f8fbbd4f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..59d681dc
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..f550b71c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCastException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCastException", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCastException", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCastException", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..dc08c3ed
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassCastException()", "java.lang.ClassCastException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassCastException(java.lang.String)", "java.lang.ClassCastException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassCastException()", "java.lang.ClassCastException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassCastException(java.lang.String)", "java.lang.ClassCastException");
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..76c2bf42
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..944b027a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ClassCastException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..cdfe4ef6
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..e9aa3e57
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..7ea6bc53
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..d2d5850d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..6ea5f32d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..fd3abc40
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getField.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getField.java
new file mode 100644
index 00000000..df30d0e0
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassCastException.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java
new file mode 100644
index 00000000..83c07a1f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassCastException.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b2a34324
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCastException.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getMethod.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getMethod.java
new file mode 100644
index 00000000..fc18cfb5
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.ClassCastException.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java
new file mode 100644
index 00000000..82db01f2
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ClassCastException.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java
new file mode 100644
index 00000000..4ee933d5
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ClassCastException.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getName.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getName.java
new file mode 100644
index 00000000..79b8b920
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ClassCastException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java
new file mode 100644
index 00000000..bad61841
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..d6164be2
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ClassCastException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..7bd6efe5
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCastException.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..dc8a443f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..1aaad49a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ClassCastException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..66a21d7a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isArray.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isArray.java
new file mode 100644
index 00000000..e1775ebc
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..8149fcc1
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ClassCastException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isEnum.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isEnum.java
new file mode 100644
index 00000000..30b062d7
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java
new file mode 100644
index 00000000..56cd632f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ClassCastException("java.lang.ClassCastException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java
new file mode 100644
index 00000000..af678727
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..43a92b14
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..5874bd65
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..a833f401
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..9beba156
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCastException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test for method java.lang.ClassCastException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCastException
+ final Object o = new ClassCastException("java.lang.ClassCastException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCastException/constructor.java b/gnu/testlet/java/lang/ClassCastException/constructor.java
new file mode 100644
index 00000000..d3de5caa
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCastException/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.ClassCastException could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCastException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCastException;
+
+
+
+/**
+ * Test if instances of a class java.lang.ClassCastException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ClassCastException object1 = new ClassCastException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ClassCastException");
+
+ ClassCastException object2 = new ClassCastException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ClassCastException: nothing happens");
+
+ ClassCastException object3 = new ClassCastException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ClassCastException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries b/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries
new file mode 100644
index 00000000..cc856bde
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Tue Mar 26 08:48:44 2013//
+/constructor.java/1.3/Tue Mar 26 08:48:44 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries.Log b/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ClassCircularityError/CVS/Repository b/gnu/testlet/java/lang/ClassCircularityError/CVS/Repository
new file mode 100644
index 00000000..5951c4f1
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassCircularityError
diff --git a/gnu/testlet/java/lang/ClassCircularityError/CVS/Root b/gnu/testlet/java/lang/ClassCircularityError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassCircularityError/TryCatch.java b/gnu/testlet/java/lang/ClassCircularityError/TryCatch.java
new file mode 100644
index 00000000..6ad8f6f0
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ClassCircularityError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ClassCircularityError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassCircularityError("ClassCircularityError");
+ }
+ catch (ClassCircularityError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Entries b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Entries
new file mode 100644
index 00000000..f6bb6567
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Tue Mar 26 08:48:44 2013//
+/getAnnotation.java/1.1/Wed Mar 27 08:51:18 2013//
+/getAnnotations.java/1.1/Wed Mar 27 08:51:18 2013//
+/getCanonicalName.java/1.1/Wed Mar 27 08:51:18 2013//
+/getClasses.java/1.1/Wed Mar 27 08:51:18 2013//
+/getComponentType.java/1.1/Thu Apr 4 08:26:50 2013//
+/getConstructor.java/1.1/Thu Apr 4 08:26:50 2013//
+/getConstructors.java/1.2/Tue Apr 9 07:32:33 2013//
+/getDeclaredAnnotations.java/1.1/Fri Apr 5 07:39:49 2013//
+/getDeclaredClasses.java/1.1/Fri Apr 5 07:39:49 2013//
+/getDeclaredConstructor.java/1.1/Fri Apr 5 07:39:49 2013//
+/getDeclaredConstructors.java/1.2/Tue Apr 9 07:32:33 2013//
+/getDeclaredField.java/1.1/Thu Apr 4 08:26:50 2013//
+/getDeclaredFields.java/1.2/Tue Apr 9 07:32:33 2013//
+/getDeclaredMethod.java/1.1/Thu Apr 4 08:26:50 2013//
+/getDeclaredMethods.java/1.2/Tue Apr 9 07:32:33 2013//
+/getDeclaringClass.java/1.1/Mon Apr 8 08:27:36 2013//
+/getEnclosingClass.java/1.1/Mon Apr 8 08:27:36 2013//
+/getEnclosingConstructor.java/1.1/Mon Apr 8 08:27:36 2013//
+/getEnclosingMethod.java/1.1/Mon Apr 8 08:27:36 2013//
+/getField.java/1.1/Fri Apr 5 07:39:49 2013//
+/getFields.java/1.2/Tue Apr 9 07:32:33 2013//
+/getInterfaces.java/1.3/Wed Apr 10 07:44:24 2013//
+/getMethod.java/1.1/Fri Apr 5 07:39:49 2013//
+/getMethods.java/1.3/Thu Apr 11 08:51:23 2013//
+/getModifiers.java/1.3/Wed Apr 10 07:44:24 2013//
+/getName.java/1.3/Thu Apr 11 08:51:23 2013//
+/getPackage.java/1.3/Thu Apr 11 08:51:23 2013//
+/getSimpleName.java/1.3/Wed Apr 10 07:44:24 2013//
+/getSuperclass.java/1.3/Wed Apr 10 07:44:24 2013//
+/isAnnotation.java/1.1/Wed Apr 3 07:45:20 2013//
+/isAnnotationPresent.java/1.1/Wed Apr 3 07:45:20 2013//
+/isAnonymousClass.java/1.1/Wed Apr 3 07:45:20 2013//
+/isArray.java/1.1/Wed Apr 3 07:45:20 2013//
+/isAssignableFrom.java/1.3/Wed Apr 10 07:44:24 2013//
+/isEnum.java/1.1/Wed Apr 3 07:45:20 2013//
+/isInstance.java/1.3/Wed Apr 10 07:44:24 2013//
+/isInterface.java/1.3/Tue Mar 26 08:48:44 2013//
+/isLocalClass.java/1.3/Tue Mar 26 08:48:44 2013//
+/isMemberClass.java/1.3/Tue Mar 26 08:48:44 2013//
+/isPrimitive.java/1.3/Tue Mar 26 08:48:44 2013//
+/isSynthetic.java/1.3/Tue Mar 26 08:48:44 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Repository b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Repository
new file mode 100644
index 00000000..3631106b
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassCircularityError/classInfo
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Root b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..ce2fb726
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.ClassCircularityError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ClassCircularityError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ ClassCircularityError o = new ClassCircularityError("ClassCircularityError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ClassCircularityError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotation.java
new file mode 100644
index 00000000..dd6f5ee8
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ClassCircularityError.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotations.java
new file mode 100644
index 00000000..b58d9b7f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassCircularityError.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..49e476c9
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ClassCircularityError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getClasses.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getClasses.java
new file mode 100644
index 00000000..4fa394d4
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCircularityError.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getComponentType.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getComponentType.java
new file mode 100644
index 00000000..5510e7d0
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructor.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructor.java
new file mode 100644
index 00000000..aaf338d3
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassCircularityError.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCircularityError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCircularityError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCircularityError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCircularityError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java
new file mode 100644
index 00000000..a182c0a7
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassCircularityError.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ClassCircularityError()", "java.lang.ClassCircularityError");
+ testedConstructors_jdk6.put("public java.lang.ClassCircularityError(java.lang.String)", "java.lang.ClassCircularityError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ClassCircularityError()", "java.lang.ClassCircularityError");
+ testedConstructors_jdk7.put("public java.lang.ClassCircularityError(java.lang.String)", "java.lang.ClassCircularityError");
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..83e60529
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..edad9301
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..33de299e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCircularityError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassCircularityError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCircularityError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassCircularityError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..f0b4dd63
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassCircularityError()", "java.lang.ClassCircularityError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassCircularityError(java.lang.String)", "java.lang.ClassCircularityError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassCircularityError()", "java.lang.ClassCircularityError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassCircularityError(java.lang.String)", "java.lang.ClassCircularityError");
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..9f054b98
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..e4ce04fc
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ClassCircularityError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..8695125a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..3777cc9e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..51a23166
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..43275d67
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..6a8921ae
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..f20af594
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getField.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getField.java
new file mode 100644
index 00000000..73d2540f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassCircularityError.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getFields.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getFields.java
new file mode 100644
index 00000000..9e872018
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassCircularityError.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ce5cf2ba
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassCircularityError.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethod.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethod.java
new file mode 100644
index 00000000..591bee93
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.ClassCircularityError.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethods.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethods.java
new file mode 100644
index 00000000..41f58ff7
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ClassCircularityError.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java
new file mode 100644
index 00000000..38648247
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ClassCircularityError.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java
new file mode 100644
index 00000000..133694a3
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ClassCircularityError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java
new file mode 100644
index 00000000..b47c9192
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..9cb28270
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ClassCircularityError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..974d3799
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassCircularityError.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.LinkageError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..fbd85e97
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..5b8b2646
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ClassCircularityError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..6779cb00
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isArray.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isArray.java
new file mode 100644
index 00000000..5ea26340
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..4aace2c2
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ClassCircularityError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isEnum.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isEnum.java
new file mode 100644
index 00000000..5d30be98
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java
new file mode 100644
index 00000000..a6010938
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ClassCircularityError("ClassCircularityError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java
new file mode 100644
index 00000000..db29fcf6
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..b8db4ba3
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..f5bda13d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..e8c3e215
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c4303b91
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassCircularityError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test for method java.lang.ClassCircularityError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassCircularityError
+ final Object o = new ClassCircularityError("ClassCircularityError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassCircularityError/constructor.java b/gnu/testlet/java/lang/ClassCircularityError/constructor.java
new file mode 100644
index 00000000..d13faf6c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassCircularityError/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.ClassCircularityError could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassCircularityError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassCircularityError;
+
+
+
+/**
+ * Test if instances of a class java.lang.ClassCircularityError
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ClassCircularityError object1 = new ClassCircularityError();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ClassCircularityError");
+
+ ClassCircularityError object2 = new ClassCircularityError("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ClassCircularityError: nothing happens");
+
+ ClassCircularityError object3 = new ClassCircularityError(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ClassCircularityError");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/CVS/Entries b/gnu/testlet/java/lang/ClassFormatError/CVS/Entries
new file mode 100644
index 00000000..161dd475
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Mon Apr 15 08:36:15 2013//
+/constructor.java/1.3/Mon Apr 15 08:36:15 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassFormatError/CVS/Entries.Log b/gnu/testlet/java/lang/ClassFormatError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ClassFormatError/CVS/Repository b/gnu/testlet/java/lang/ClassFormatError/CVS/Repository
new file mode 100644
index 00000000..5a0cd873
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassFormatError
diff --git a/gnu/testlet/java/lang/ClassFormatError/CVS/Root b/gnu/testlet/java/lang/ClassFormatError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassFormatError/TryCatch.java b/gnu/testlet/java/lang/ClassFormatError/TryCatch.java
new file mode 100644
index 00000000..3f4ab9f9
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ClassFormatError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ClassFormatError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassFormatError("ClassFormatError");
+ }
+ catch (ClassFormatError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Entries b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Entries
new file mode 100644
index 00000000..cb3af798
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Mon Apr 15 08:36:15 2013//
+/getAnnotation.java/1.1/Tue Apr 16 07:50:50 2013//
+/getAnnotations.java/1.1/Tue Apr 16 07:50:50 2013//
+/getCanonicalName.java/1.1/Tue Apr 16 07:50:50 2013//
+/getClasses.java/1.1/Tue Apr 16 07:50:50 2013//
+/getComponentType.java/1.1/Tue Apr 16 07:50:50 2013//
+/getConstructor.java/1.1/Wed Apr 17 07:47:55 2013//
+/getConstructors.java/1.2/Mon Apr 29 07:47:15 2013//
+/getDeclaredAnnotations.java/1.1/Wed Apr 17 07:47:55 2013//
+/getDeclaredClasses.java/1.1/Fri Apr 26 07:34:29 2013//
+/getDeclaredConstructor.java/1.1/Wed Apr 17 07:47:55 2013//
+/getDeclaredConstructors.java/1.2/Mon Apr 29 07:47:15 2013//
+/getDeclaredField.java/1.1/Wed Apr 17 07:47:55 2013//
+/getDeclaredFields.java/1.2/Mon Apr 29 07:47:15 2013//
+/getDeclaredMethod.java/1.1/Wed Apr 17 07:47:55 2013//
+/getDeclaredMethods.java/1.2/Mon Apr 22 08:26:31 2013//
+/getDeclaringClass.java/1.1/Fri Apr 19 08:40:20 2013//
+/getEnclosingClass.java/1.1/Fri Apr 19 08:40:20 2013//
+/getEnclosingConstructor.java/1.1/Fri Apr 19 08:40:20 2013//
+/getEnclosingMethod.java/1.1/Fri Apr 19 08:40:20 2013//
+/getField.java/1.1/Fri Apr 19 08:40:20 2013//
+/getFields.java/1.2/Mon Apr 22 08:26:31 2013//
+/getInterfaces.java/1.3/Mon Apr 22 08:26:31 2013//
+/getMethod.java/1.1/Thu Apr 25 07:49:45 2013//
+/getMethods.java/1.2/Mon Apr 22 08:26:31 2013//
+/getModifiers.java/1.3/Mon Apr 22 08:26:31 2013//
+/getName.java/1.3/Fri Apr 26 07:34:29 2013//
+/getPackage.java/1.3/Fri Apr 26 07:34:29 2013//
+/getSimpleName.java/1.3/Fri Apr 26 07:34:29 2013//
+/getSuperclass.java/1.3/Wed Apr 24 08:16:41 2013//
+/isAnnotation.java/1.1/Thu Apr 25 07:49:45 2013//
+/isAnnotationPresent.java/1.1/Fri Apr 26 07:34:29 2013//
+/isAnonymousClass.java/1.1/Thu Apr 25 07:49:45 2013//
+/isArray.java/1.1/Thu Apr 25 07:49:45 2013//
+/isAssignableFrom.java/1.3/Wed Apr 24 08:16:41 2013//
+/isEnum.java/1.1/Thu Apr 25 07:49:45 2013//
+/isInstance.java/1.3/Wed Apr 24 08:16:41 2013//
+/isInterface.java/1.3/Wed Apr 24 08:16:41 2013//
+/isLocalClass.java/1.3/Wed Apr 24 08:16:41 2013//
+/isMemberClass.java/1.3/Mon Apr 15 08:36:15 2013//
+/isPrimitive.java/1.3/Mon Apr 15 08:36:15 2013//
+/isSynthetic.java/1.3/Mon Apr 15 08:36:15 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Repository b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Repository
new file mode 100644
index 00000000..c2730bda
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassFormatError/classInfo
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Root b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..3cbd7c09
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.ClassFormatError
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ClassFormatError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ ClassFormatError o = new ClassFormatError("ClassFormatError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ClassFormatError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotation.java
new file mode 100644
index 00000000..d98d0f21
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ClassFormatError.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotations.java
new file mode 100644
index 00000000..1c386c35
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassFormatError.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..0dfb256b
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ClassFormatError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getClasses.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getClasses.java
new file mode 100644
index 00000000..12cafe8f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassFormatError.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getComponentType.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getComponentType.java
new file mode 100644
index 00000000..3fdb125c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructor.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructor.java
new file mode 100644
index 00000000..8a96d5cd
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassFormatError.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassFormatError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassFormatError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassFormatError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassFormatError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructors.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructors.java
new file mode 100644
index 00000000..ec395f2f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassFormatError.getClass().getConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ClassFormatError()", "java.lang.ClassFormatError");
+ testedConstructors_jdk6.put("public java.lang.ClassFormatError(java.lang.String)", "java.lang.ClassFormatError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ClassFormatError()", "java.lang.ClassFormatError");
+ testedConstructors_jdk7.put("public java.lang.ClassFormatError(java.lang.String)", "java.lang.ClassFormatError");
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..e19c565b
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..3fd90436
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..178f4733
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassFormatError", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassFormatError", new Class[] {java.lang.String.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassFormatError", new Class[] {});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassFormatError", new Class[] {java.lang.String.class});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..b404e8d4
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassFormatError()", "java.lang.ClassFormatError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.ClassFormatError(java.lang.String)", "java.lang.ClassFormatError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassFormatError()", "java.lang.ClassFormatError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.ClassFormatError(java.lang.String)", "java.lang.ClassFormatError");
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..d4515e9f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredField.java
@@ -0,0 +1,90 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..d70c7389
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ClassFormatError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..3902dbaf
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethod.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..5f9c63cc
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..4700df9e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..ae9fb255
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..27902ffb
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..3eb2bffb
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getField.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getField.java
new file mode 100644
index 00000000..9e200a4a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassFormatError.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getFields.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getFields.java
new file mode 100644
index 00000000..4da60bbb
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassFormatError.getClass().getFields()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..385a39a1
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassFormatError.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethod.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethod.java
new file mode 100644
index 00000000..f60d2c66
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethod.java
@@ -0,0 +1,129 @@
+// Test for method java.lang.ClassFormatError.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethods.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethods.java
new file mode 100644
index 00000000..8a91320a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ClassFormatError.getClass().getMethods()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java
new file mode 100644
index 00000000..59ee48f3
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ClassFormatError.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java
new file mode 100644
index 00000000..9849bd9c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ClassFormatError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java
new file mode 100644
index 00000000..d0fc27a5
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..f98b9d70
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ClassFormatError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..e2303089
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassFormatError.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.LinkageError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..8501c440
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..8bec611f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ClassFormatError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..ef297ce9
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isArray.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isArray.java
new file mode 100644
index 00000000..9657cd4f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..2e67a099
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ClassFormatError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isEnum.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isEnum.java
new file mode 100644
index 00000000..f4ee6cee
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java
new file mode 100644
index 00000000..ea04a6b1
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ClassFormatError("ClassFormatError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java
new file mode 100644
index 00000000..0f50cca7
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ClassFormatError.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ee26a1ce
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..beec5ff2
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..dafa0ccb
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ClassFormatError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c506498d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassFormatError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test for method java.lang.ClassFormatError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassFormatError
+ final Object o = new ClassFormatError("ClassFormatError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassFormatError/constructor.java b/gnu/testlet/java/lang/ClassFormatError/constructor.java
new file mode 100644
index 00000000..e2221d01
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassFormatError/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.ClassFormatError could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassFormatError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassFormatError;
+
+
+
+/**
+ * Test if instances of a class java.lang.ClassFormatError
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ClassFormatError object1 = new ClassFormatError();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ClassFormatError");
+
+ ClassFormatError object2 = new ClassFormatError("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ClassFormatError: nothing happens");
+
+ ClassFormatError object3 = new ClassFormatError(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ClassFormatError");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassLoader/BootDefinedPackages.java b/gnu/testlet/java/lang/ClassLoader/BootDefinedPackages.java
new file mode 100644
index 00000000..bde8c2ed
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/BootDefinedPackages.java
@@ -0,0 +1,170 @@
+/* DefaultDefinedPackages.java -- Test which ensures that packages are defined by the boot classloader
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.0
+
+
+package gnu.testlet.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+
+/**
+ * Test which ensures that the boot class loader is defining packages like the
+ * URLClassLoader does.
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ * @see URLClassLoader#findClass(java.lang.String)
+ */
+public class BootDefinedPackages implements Testlet
+{
+
+ private static class TestLoader extends ClassLoader implements Serializable
+ {
+
+ /**
+ * Dummy serialVersionUID used to appease warnings
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * List of classes in each of the standard packages
+ */
+ static String standardPackagesClasses[] = {
+ "java.applet.Applet",
+ "java.awt.color.CMMException",
+ "java.awt.datatransfer.Clipboard",
+ "java.awt.dnd.peer.DragSourceContextPeer",
+ "java.awt.dnd.Autoscroll",
+ "java.awt.event.ActionEvent",
+ "java.awt.font.FontRenderContext",
+ "java.awt.geom.AffineTransform",
+ "java.awt.im.spi.InputMethod",
+ "java.awt.im.InputContext",
+ "java.awt.image.renderable.ContextualRenderedImageFactory",
+ "java.awt.image.AffineTransformOp",
+ "java.awt.peer.ButtonPeer",
+ "java.awt.print.Book",
+ "java.awt.ActiveEvent",
+ "java.beans.beancontext.BeanContext",
+ "java.beans.AppletInitializer",
+ "java.io.BufferedInputStream",
+ "java.lang.annotation.AnnotationFormatError",
+ "java.lang.ref.PhantomReference",
+ "java.lang.reflect.AccessibleObject",
+ "java.lang.AbstractMethodError",
+ "java.math.BigDecimal",
+ "java.net.Authenticator",
+ "java.nio.channels.spi.AbstractInterruptibleChannel",
+ "java.nio.channels.AlreadyConnectedException",
+ "java.nio.charset.spi.CharsetProvider",
+ "java.nio.charset.CharacterCodingException",
+ "java.nio.Buffer",
+ "java.rmi.activation.Activatable",
+ "java.rmi.dgc.DGC",
+ "java.rmi.registry.LocateRegistry",
+ "java.rmi.server.ExportException",
+ "java.rmi.AccessException",
+ "java.security.acl.Acl",
+ "java.security.cert.Certificate",
+ "java.security.interfaces.DSAKey",
+ "java.security.spec.AlgorithmParameterSpec",
+ "java.security.AccessControlContext",
+ "java.sql.Array",
+ "java.text.Annotation",
+ "java.util.jar.Attributes",
+ "java.util.logging.ConsoleHandler",
+ "java.util.prefs.AbstractPreferences",
+ "java.util.regex.Matcher",
+ "java.util.zip.Adler32",
+ "java.util.AbstractCollection" };
+
+ public TestLoader(ClassLoader parent)
+ {
+ super(parent);
+ }
+
+ /**
+ * Real test method for package definition which can access the protected
+ * getPackage method
+ * @param harness
+ * the test harness
+ * @see ClassLoader#getPackage(java.lang.String)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Checking basic packages");
+
+ // This package must be defined since it is the one of the enclosing class
+ harness.check(getPackage("gnu.testlet.java.lang.ClassLoader") != null);
+
+ // This package must be defined since it is the one which contains Object
+ harness.check(getPackage("java.lang") != null);
+
+ // This package must be defined since we're implementing Serializable
+ harness.check(getPackage("java.io") != null);
+
+ // Instead of checking some packages, we loop over each standard package,
+ // and if not already defined, it should be once we load a class in it.
+ // Note that this loop may not produce the same result on different vms,
+ // but it should be consistent across several runs on the same vm.
+ for (int i = 0; i < standardPackagesClasses.length; i++)
+ {
+ String packageName;
+ int lastDot = standardPackagesClasses[i].lastIndexOf('.');
+
+ // Get the package name from the standard class name
+ packageName = standardPackagesClasses[i].substring(0, lastDot);
+
+ if (getPackage(packageName) == null)
+ {
+ // packageName is not yet defined, we should be able to make it
+ // defined by trying to access a class in it
+ try
+ {
+ Class.forName(standardPackagesClasses[i]);
+ harness.check(getPackage(packageName) != null,
+ "Checking definition of " + packageName);
+ }
+ catch (ClassNotFoundException e)
+ {
+ harness.debug("Unsuitable class to test on this vm");
+ harness.debug(e);
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ // Define a class loader for testing, with the system class loader as
+ // parent, and starts the real test
+ TestLoader loader = new TestLoader(getClass().getClassLoader());
+ loader.test(harness);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/CVS/Entries b/gnu/testlet/java/lang/ClassLoader/CVS/Entries
new file mode 100644
index 00000000..1093da74
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/CVS/Entries
@@ -0,0 +1,8 @@
+/BootDefinedPackages.java/1.1/Mon Mar 13 21:14:51 2006//
+/Resources.java/1.1/Tue Feb 28 21:06:44 2006//
+/findLoadedClass.java/1.1/Fri Jul 29 11:47:08 2005//
+/initialize.java/1.2/Mon Mar 13 18:35:23 2006//
+/loadClass.java/1.1/Sun Feb 5 14:46:25 2006//
+/redefine.java/1.2/Thu Feb 10 15:58:12 2005//
+/security.java/1.5/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/lang/ClassLoader/CVS/Repository b/gnu/testlet/java/lang/ClassLoader/CVS/Repository
new file mode 100644
index 00000000..99c11b3e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassLoader
diff --git a/gnu/testlet/java/lang/ClassLoader/CVS/Root b/gnu/testlet/java/lang/ClassLoader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassLoader/Resources.java b/gnu/testlet/java/lang/ClassLoader/Resources.java
new file mode 100644
index 00000000..9fb59a52
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/Resources.java
@@ -0,0 +1,80 @@
+/* Resources.java -- Tests that the system class loader can get resources as
+ plain file and directory
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.0
+
+
+package gnu.testlet.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests which ensures that plain files and directories can be retrieved by the
+ * system class loader.
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ * @see java.lang.ClassLoader#getResource(java.lang.String)
+ */
+public class Resources implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Resource loading");
+ System.out.println(getClass().getClassLoader());
+
+ try
+ {
+ getClass().getClassLoader().getResource(
+ "gnu/testlet/java/lang/ClassLoader/Resources.class").getFile();
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.fail("Class resource should exist");
+ }
+
+ try
+ {
+ getClass().getClassLoader().getResource(
+ "gnu/testlet/java/lang/ClassLoader/").getFile();
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.fail("Class directory should exist");
+ }
+
+ try
+ {
+ getClass().getClassLoader().getResource(
+ "gnu/testlet/java/lang/ClassLoader").getFile();
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.fail("Class directory should exist");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/findLoadedClass.java b/gnu/testlet/java/lang/ClassLoader/findLoadedClass.java
new file mode 100644
index 00000000..94d6bb6a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/findLoadedClass.java
@@ -0,0 +1,248 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Jeroen Frijters <jeroen@frijters.net>
+
+// 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.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class findLoadedClass extends ClassLoader implements Testlet
+{
+ // This represents the class:
+ // class Triv extends java.util.Hashtable {}
+ private static byte[] trivialClassDef = {
+ (byte)0xCA, (byte)0xFE, (byte)0xBA, (byte)0xBE, (byte)0x00, (byte)0x03,
+ (byte)0x00, (byte)0x2D, (byte)0x00, (byte)0x0F, (byte)0x07, (byte)0x00,
+ (byte)0x0C, (byte)0x07, (byte)0x00, (byte)0x0E, (byte)0x0A, (byte)0x00,
+ (byte)0x02, (byte)0x00, (byte)0x04, (byte)0x0C, (byte)0x00, (byte)0x06,
+ (byte)0x00, (byte)0x05, (byte)0x01, (byte)0x00, (byte)0x03, (byte)0x28,
+ (byte)0x29, (byte)0x56, (byte)0x01, (byte)0x00, (byte)0x06, (byte)0x3C,
+ (byte)0x69, (byte)0x6E, (byte)0x69, (byte)0x74, (byte)0x3E, (byte)0x01,
+ (byte)0x00, (byte)0x04, (byte)0x43, (byte)0x6F, (byte)0x64, (byte)0x65,
+ (byte)0x01, (byte)0x00, (byte)0x0D, (byte)0x43, (byte)0x6F, (byte)0x6E,
+ (byte)0x73, (byte)0x74, (byte)0x61, (byte)0x6E, (byte)0x74, (byte)0x56,
+ (byte)0x61, (byte)0x6C, (byte)0x75, (byte)0x65, (byte)0x01, (byte)0x00,
+ (byte)0x0A, (byte)0x45, (byte)0x78, (byte)0x63, (byte)0x65, (byte)0x70,
+ (byte)0x74, (byte)0x69, (byte)0x6F, (byte)0x6E, (byte)0x73, (byte)0x01,
+ (byte)0x00, (byte)0x0E, (byte)0x4C, (byte)0x6F, (byte)0x63, (byte)0x61,
+ (byte)0x6C, (byte)0x56, (byte)0x61, (byte)0x72, (byte)0x69, (byte)0x61,
+ (byte)0x62, (byte)0x6C, (byte)0x65, (byte)0x73, (byte)0x01, (byte)0x00,
+ (byte)0x0A, (byte)0x53, (byte)0x6F, (byte)0x75, (byte)0x72, (byte)0x63,
+ (byte)0x65, (byte)0x46, (byte)0x69, (byte)0x6C, (byte)0x65, (byte)0x01,
+ (byte)0x00, (byte)0x04, (byte)0x54, (byte)0x72, (byte)0x69, (byte)0x76,
+ (byte)0x01, (byte)0x00, (byte)0x09, (byte)0x54, (byte)0x72, (byte)0x69,
+ (byte)0x76, (byte)0x2E, (byte)0x6A, (byte)0x61, (byte)0x76, (byte)0x61,
+ (byte)0x01, (byte)0x00, (byte)0x13, (byte)0x6A, (byte)0x61, (byte)0x76,
+ (byte)0x61, (byte)0x2F, (byte)0x75, (byte)0x74, (byte)0x69, (byte)0x6C,
+ (byte)0x2F, (byte)0x48, (byte)0x61, (byte)0x73, (byte)0x68, (byte)0x74,
+ (byte)0x61, (byte)0x62, (byte)0x6C, (byte)0x65, (byte)0x00, (byte)0x00,
+ (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x00,
+ (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00,
+ (byte)0x00, (byte)0x06, (byte)0x00, (byte)0x05, (byte)0x00, (byte)0x01,
+ (byte)0x00, (byte)0x07, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x11,
+ (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x00,
+ (byte)0x00, (byte)0x05, (byte)0x2A, (byte)0xB7, (byte)0x00, (byte)0x03,
+ (byte)0xB1, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
+ (byte)0x01, (byte)0x00, (byte)0x0B, (byte)0x00, (byte)0x00, (byte)0x00,
+ (byte)0x02, (byte)0x00, (byte)0x0D
+ };
+
+ private boolean broken;
+
+ public findLoadedClass()
+ {
+ }
+
+ protected synchronized Class loadClass(String name, boolean resolve)
+ throws ClassNotFoundException
+ {
+ if (broken)
+ throw new ClassNotFoundException();
+ else
+ return super.loadClass(name, resolve);
+ }
+
+ private findLoadedClass(ClassLoader parent)
+ {
+ super(parent);
+ }
+
+ public void test(TestHarness harness)
+ {
+ defineClass("Triv", trivialClassDef, 0, trivialClassDef.length);
+
+ // defineClass should have registered the class
+ harness.checkPoint("defineClass should register");
+ checkLoaded(harness, this, "Triv");
+
+ // make sure that the VM registers the initiating class loader
+ harness.checkPoint("VM should register");
+ checkLoaded(harness, this, "java.util.Hashtable");
+
+ // types that weren't loaded shouldn't be visible
+ harness.checkPoint("premature");
+ harness.check(findLoadedClass("java.lang.Object") == null);
+
+ // Class.forName() should register the initiating loader.
+ harness.checkPoint("Class.forName");
+ try
+ {
+ Class.forName("java.lang.Object", false, this);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ }
+ checkLoaded(harness, this, "java.lang.Object");
+
+ // The above should also apply to arrays
+ // Note that on Sun JDK 1.4 (not on 1.5), loading the component type
+ // also make the array type visible, so we don't test that the array
+ // is not visible at this point.
+ try
+ {
+ Class.forName("[Ljava.lang.Object;", false, this);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ }
+ checkLoaded(harness, this, "[Ljava.lang.Object;");
+
+ // Loading an array type, makes available the ultimate component type
+ harness.checkPoint("array implies component type");
+ harness.check(findLoadedClass("java.util.Vector") == null);
+ try
+ {
+ Class.forName("[[Ljava.util.Vector;", false, this);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ }
+ checkLoaded(harness, this, "java.util.Vector");
+
+ // After loading a class thru a parent, we shouldn't be able to define it.
+ harness.checkPoint("no redefine");
+ findLoadedClass cl = new findLoadedClass(this);
+ harness.check(cl.findLoadedClass("Triv") == null);
+ try
+ {
+ Class.forName("Triv", false, cl);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ throw new Error(x);
+ }
+ checkLoaded(harness, cl, "Triv");
+ try
+ {
+ cl.defineClass("Triv", trivialClassDef, 0, trivialClassDef.length);
+ harness.check(false);
+ }
+ catch(LinkageError _)
+ {
+ harness.check(true);
+ }
+
+ // Check multi level trickery
+ harness.checkPoint("multi level");
+ findLoadedClass grandParent = new findLoadedClass();
+ grandParent.defineClass("Triv", trivialClassDef, 0, trivialClassDef.length);
+ findLoadedClass parent = new findLoadedClass(grandParent);
+ findLoadedClass child = new findLoadedClass(parent);
+ try
+ {
+ Class.forName("Triv", false, child);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ throw new Error(x);
+ }
+ try
+ {
+ parent.defineClass("Triv", trivialClassDef, 0, trivialClassDef.length);
+ harness.check(true);
+ }
+ catch(LinkageError x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ try
+ {
+ Class c = Class.forName("Triv", false, child);
+ harness.check(c.getClassLoader() == grandParent);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ catch(LinkageError x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ // Even if a class loader is broken, Class.forName() should continue
+ // to work.
+ child.broken = true;
+ try
+ {
+ Class c = Class.forName("Triv", false, child);
+ harness.check(c.getClassLoader() == grandParent);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ catch(LinkageError x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ // The VM should also look in the loaded classes cache, before calling loadClass()
+ harness.checkPoint("VM consults cache");
+ findLoadedClass newLoader = new findLoadedClass();
+ try
+ {
+ Class.forName("java.util.Hashtable", false, newLoader);
+ }
+ catch(ClassNotFoundException x)
+ {
+ harness.debug(x);
+ throw new Error(x);
+ }
+ newLoader.broken = true;
+ newLoader.defineClass("Triv", trivialClassDef, 0, trivialClassDef.length);
+ }
+
+ private void checkLoaded(TestHarness harness, findLoadedClass cl, String name)
+ {
+ Class c = cl.findLoadedClass(name);
+ harness.check(c != null && c.getName().equals(name));
+ }
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/initialize.java b/gnu/testlet/java/lang/ClassLoader/initialize.java
new file mode 100644
index 00000000..6eaa992d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/initialize.java
@@ -0,0 +1,228 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// Written by Jeroen Frijters <jeroen@frijters.net>
+
+// 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.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This test simulates a security attack dealing with the registering of a rogue
+ * ClassLoader when it is not allowed. The detail of the potentiel problem is
+ * described
+ * <a href="http://www.securingjava.com/chapter-five/chapter-five-8.html">here</a>.
+ * Basically, it creates an incomplete ClassLoader (by throwing an exception
+ * during the construction) and later uses the finalizer to retrieve the
+ * instance and try to use this rogue instance. This test makes sure that any
+ * method call then throws a SecurityException.
+ * Running finalizers being not an exact science, some jvm will not run them
+ * when System.runFinalization() is called hence not allowing the security
+ * breach to be checked.
+ *
+ * @author Jeroen Frijters <jeroen@frijters.net>
+ */
+public class initialize implements Testlet
+{
+ static class TestLoader extends ClassLoader
+ {
+ // The holder for the rogue TestLoader instance
+ static TestLoader ref;
+
+ // The method which simulates an exception to be thrown at construction time
+ static ClassLoader throwException() { throw new Error(); }
+
+ // The constructor which will fail to create a complete instance
+ TestLoader() { super(throwException()); }
+
+ // The finalizer which retrieves the partly created instance
+ protected void finalize() { ref = this; }
+
+ static void runTests(TestHarness harness) throws Exception
+ {
+ harness.checkPoint("loadClass");
+ try
+ {
+ ref.loadClass("java.lang.Object");
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ ref.loadClass("java.lang.Object", false);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("findClass");
+ try
+ {
+ ref.findClass("java.lang.Object");
+ harness.check(false);
+ }
+ catch(ClassNotFoundException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("defineClass");
+ try
+ {
+ ref.defineClass(new byte[0], 0, 0);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ ref.defineClass("Foo", new byte[0], 0, 0);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ ref.defineClass("Foo", new byte[0], 0, 0, null);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("resolveClass");
+ try
+ {
+ ref.resolveClass(String.class);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("findSystemClass");
+ try
+ {
+ ref.findSystemClass("java.lang.Object");
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("setSigners");
+ try
+ {
+ ref.setSigners(String.class, new Object[0]);
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("findLoadedClass");
+ try
+ {
+ ref.findLoadedClass("java.lang.Object");
+ harness.check(false);
+ }
+ catch(SecurityException _)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("definePackage");
+ try
+ {
+ ref.definePackage("Foo", "", "", "", "", "", "", null);
+ harness.check(false);
+ }
+ catch(NullPointerException _)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ ref.getPackage("Foo");
+ harness.check(false);
+ }
+ catch(NullPointerException _)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ ref.getPackages();
+ harness.check(false);
+ }
+ catch(NullPointerException _)
+ {
+ harness.check(true);
+ }
+
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // Creates a garbage collectable rogue TestLoader instance
+ try { new TestLoader(); } catch(Error x) {}
+
+ // Hints at the vm that running finalizers now would be a good idea
+ System.gc();
+ System.runFinalization();
+
+ // Checks that TestLoader.finalize retrieved the partly created instance,
+ // and if so, tests it
+ if (TestLoader.ref == null)
+ harness.debug("Unable to obtain finalized ClassLoader instance");
+ else
+ {
+ try
+ {
+ TestLoader.runTests(harness);
+ }
+ catch(Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/loadClass.java b/gnu/testlet/java/lang/ClassLoader/loadClass.java
new file mode 100644
index 00000000..12572b67
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/loadClass.java
@@ -0,0 +1,211 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+// Written by Mark J. Wielaard (mark@klomp.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class loadClass extends ClassLoader implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ClassLoader cl = this.getClass().getClassLoader();
+ boolean cnf_thrown;
+ try
+ {
+ cl.loadClass("gnu");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("gnu.");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass(".");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("/");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[[");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[]");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("L;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("L.");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("L[");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[L;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[L[;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[L.;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[Lgnu;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("[Lgnu.;");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+
+ try
+ {
+ cl.loadClass("");
+ cnf_thrown = false;
+ }
+ catch(ClassNotFoundException x)
+ {
+ cnf_thrown = true;
+ }
+ harness.check(cnf_thrown);
+ }
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/redefine.java b/gnu/testlet/java/lang/ClassLoader/redefine.java
new file mode 100644
index 00000000..6e0935f6
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/redefine.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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.java.lang.ClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class redefine extends ClassLoader implements Testlet
+{
+ public static class Inner { }
+
+ public static final String INNER_NAME
+ = "gnu.testlet.java.lang.ClassLoader.redefine$Inner";
+
+ public void test (TestHarness harness)
+ {
+ // First try to define a class with the given name.
+ boolean ok = false;
+ try
+ {
+ // This call will fail.
+ defineClass(INNER_NAME, new byte[37], 0, 37);
+ }
+ catch (ClassFormatError _)
+ {
+ ok = true;
+ }
+ harness.check(ok, "defineClass with invalid parameter");
+
+ // Now load the class normally.
+ Class k = null;
+ try
+ {
+ k = Class.forName(INNER_NAME, true, this);
+ }
+ catch (ClassNotFoundException _)
+ {
+ // Nothing needed.
+ }
+ harness.check("" + k, "class " + INNER_NAME, "normal loading");
+ }
+}
diff --git a/gnu/testlet/java/lang/ClassLoader/security.java b/gnu/testlet/java/lang/ClassLoader/security.java
new file mode 100644
index 00000000..55745121
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassLoader/security.java
@@ -0,0 +1,152 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.ClassLoader;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ // we need a different classloader for some of the checks to occur.
+ Class testClass = new URLClassLoader(new URL[] {
+ new File(harness.getSourceDirectory()).toURL()}, null).loadClass(
+ getClass().getName());
+
+ ClassLoader ourLoader = getClass().getClassLoader();
+ harness.check(ourLoader != testClass.getClassLoader());
+
+ Method getSystemClassLoaderTest = testClass.getMethod(
+ "testGetSystemClassLoader", new Class[] {});
+
+ Method getParentTest = testClass.getMethod(
+ "testGetParent", new Class[] {ClassLoader.class});
+
+ // Make sure everything's fully resolved, or we'll be loading
+ // classes during tests and the extra checks will make us fail.
+ new TestClassLoader();
+
+ Permission[] createClassLoader = new Permission[] {
+ new RuntimePermission("createClassLoader")};
+
+ Permission[] getClassLoader = new Permission[] {
+ new RuntimePermission("getClassLoader")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.ClassLoader-ClassLoader()
+ harness.checkPoint("Constructor (no-args)");
+ try {
+ sm.prepareChecks(createClassLoader);
+ new TestClassLoader();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ClassLoader-ClassLoader(ClassLoader)
+ harness.checkPoint("Constructor (one-arg)");
+ try {
+ sm.prepareChecks(createClassLoader);
+ new TestClassLoader(ourLoader);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ClassLoader-getSystemClassLoader
+ harness.checkPoint("getSystemClassLoader");
+ try {
+ sm.prepareChecks(getClassLoader);
+ getSystemClassLoaderTest.invoke(null, new Object[] {});
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ClassLoader-getParent
+ harness.checkPoint("getParent");
+ try {
+ sm.prepareChecks(getClassLoader);
+ getParentTest.invoke(null, new Object[] {ourLoader});
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ // Stuff for the createClassLoader tests
+ private static class TestClassLoader extends ClassLoader
+ {
+ public TestClassLoader()
+ {
+ super();
+ }
+
+ public TestClassLoader(ClassLoader parent)
+ {
+ super(parent);
+ }
+ }
+
+ // Stuff for the getClassLoader tests
+ public static void testGetSystemClassLoader()
+ {
+ ClassLoader.getSystemClassLoader();
+ }
+
+ public static void testGetParent(ClassLoader loader)
+ {
+ loader.getParent();
+ }
+}
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries
new file mode 100644
index 00000000..a0c6b9c3
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries
@@ -0,0 +1,5 @@
+/TryCatch.java/1.2/Tue Apr 30 07:49:52 2013//
+/constructor.java/1.2/Tue Apr 30 07:49:53 2013//
+/getCause.java/1.1/Wed Jun 27 14:00:17 2012//
+/getException.java/1.1/Wed Jun 27 14:00:17 2012//
+D
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries.Log b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/CVS/Repository b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Repository
new file mode 100644
index 00000000..a02a943f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassNotFoundException
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/CVS/Root b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/TryCatch.java b/gnu/testlet/java/lang/ClassNotFoundException/TryCatch.java
new file mode 100644
index 00000000..3aa264ba
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ClassNotFoundException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ClassNotFoundException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassNotFoundException("ClassNotFoundException");
+ }
+ catch (ClassNotFoundException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Entries b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Entries
new file mode 100644
index 00000000..0c9668f6
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Entries
@@ -0,0 +1,43 @@
+/InstanceOf.java/1.2/Tue Apr 30 07:49:53 2013//
+/getAnnotation.java/1.1/Thu May 2 07:52:04 2013//
+/getAnnotations.java/1.1/Thu May 2 07:52:04 2013//
+/getCanonicalName.java/1.1/Thu May 2 07:52:04 2013//
+/getClasses.java/1.1/Thu May 2 07:52:04 2013//
+/getComponentType.java/1.1/Thu May 2 07:52:04 2013//
+/getConstructor.java/1.1/Fri May 3 07:32:00 2013//
+/getConstructors.java/1.1/Fri Sep 7 08:59:42 2012//
+/getDeclaredAnnotations.java/1.1/Mon May 13 07:30:43 2013//
+/getDeclaredClasses.java/1.1/Mon May 13 07:30:43 2013//
+/getDeclaredConstructor.java/1.1/Fri May 3 07:32:01 2013//
+/getDeclaredConstructors.java/1.1/Fri Sep 7 08:59:42 2012//
+/getDeclaredField.java/1.1/Mon May 13 07:30:43 2013//
+/getDeclaredFields.java/1.1/Fri Sep 7 08:59:42 2012//
+/getDeclaredMethod.java/1.1/Fri May 3 07:32:01 2013//
+/getDeclaredMethods.java/1.1/Fri Sep 7 08:59:42 2012//
+/getDeclaringClass.java/1.1/Mon May 13 07:30:43 2013//
+/getEnclosingClass.java/1.1/Tue May 14 09:19:40 2013//
+/getEnclosingConstructor.java/1.1/Tue May 14 09:19:40 2013//
+/getEnclosingMethod.java/1.1/Tue May 14 09:19:41 2013//
+/getField.java/1.1/Mon May 13 07:30:43 2013//
+/getFields.java/1.1/Fri Sep 7 08:59:42 2012//
+/getInterfaces.java/1.3/Wed May 15 07:28:59 2013//
+/getMethod.java/1.1/Fri May 3 07:32:01 2013//
+/getMethods.java/1.1/Fri Sep 7 08:59:42 2012//
+/getModifiers.java/1.3/Wed May 15 07:28:59 2013//
+/getName.java/1.3/Wed May 15 07:28:59 2013//
+/getPackage.java/1.3/Wed May 15 07:28:59 2013//
+/getSimpleName.java/1.3/Wed May 15 07:28:59 2013//
+/getSuperclass.java/1.3/Thu May 9 07:25:07 2013//
+/isAnnotation.java/1.1/Fri May 10 08:50:18 2013//
+/isAnnotationPresent.java/1.1/Fri May 10 08:50:18 2013//
+/isAnonymousClass.java/1.1/Fri May 10 08:50:18 2013//
+/isArray.java/1.1/Fri May 10 08:50:18 2013//
+/isAssignableFrom.java/1.3/Thu May 9 07:25:07 2013//
+/isEnum.java/1.1/Fri May 10 08:50:18 2013//
+/isInstance.java/1.3/Thu May 9 07:25:07 2013//
+/isInterface.java/1.3/Thu May 9 07:25:07 2013//
+/isLocalClass.java/1.3/Thu May 9 07:25:07 2013//
+/isMemberClass.java/1.3/Tue Apr 30 07:49:53 2013//
+/isPrimitive.java/1.3/Tue Apr 30 07:49:53 2013//
+/isSynthetic.java/1.3/Tue Apr 30 07:49:53 2013//
+D
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Repository b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Repository
new file mode 100644
index 00000000..ff86406a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ClassNotFoundException/classInfo
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Root b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..3f148c53
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.ClassNotFoundException
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ClassNotFoundException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ ClassNotFoundException o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ClassNotFoundException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotation.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotation.java
new file mode 100644
index 00000000..56841b32
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotation.java
@@ -0,0 +1,71 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getAnnotation()
+ */
+public class getAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.annotation.Annotation annotation;
+ annotation = c.getAnnotation(java.lang.annotation.Annotation.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Documented.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Inherited.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Retention.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.annotation.Target.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Deprecated.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.Override.class);
+ harness.check(annotation == null);
+ annotation = c.getAnnotation(java.lang.SuppressWarnings.class);
+ harness.check(annotation == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotations.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotations.java
new file mode 100644
index 00000000..22764e18
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getAnnotations()
+ */
+public class getAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getCanonicalName.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getCanonicalName.java
new file mode 100644
index 00000000..d2ff7f44
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getCanonicalName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getCanonicalName()
+ */
+public class getCanonicalName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getCanonicalName(), "java.lang.ClassNotFoundException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getClasses.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getClasses.java
new file mode 100644
index 00000000..9a406f4c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getClasses()
+ */
+public class getClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getComponentType.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getComponentType.java
new file mode 100644
index 00000000..3c191f02
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getComponentType.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getComponentType()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getComponentType()
+ */
+public class getComponentType implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getComponentType();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructor.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructor.java
new file mode 100644
index 00000000..659c91de
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructor.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getConstructor()
+ */
+public class getConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructors.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructors.java
new file mode 100644
index 00000000..46445262
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getConstructors.java
@@ -0,0 +1,88 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] constructorNames = new String[] {
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassNotFoundException",
+ };
+ java.util.Arrays.sort(constructorNames);
+
+ String[] constructorStrings = new String[] {
+ "public java.lang.ClassNotFoundException()",
+ "public java.lang.ClassNotFoundException(java.lang.String)",
+ "public java.lang.ClassNotFoundException(java.lang.String,java.lang.Throwable)",
+ };
+ java.util.Arrays.sort(constructorStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+ harness.check(constructors.length, 3);
+
+ String constructorName;
+ String constructorString;
+
+ constructorName = constructors[0].getName();
+ constructorString = constructors[0].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[1].getName();
+ constructorString = constructors[1].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[2].getName();
+ constructorString = constructors[2].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredAnnotations.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredAnnotations.java
new file mode 100644
index 00000000..d14557f4
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredAnnotations.java
@@ -0,0 +1,91 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredAnnotations()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredAnnotations()
+ */
+public class getDeclaredAnnotations implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // following annotations should be provided
+ final String[] annotationsThatShouldExists_jdk6 = {
+ };
+
+ final String[] annotationsThatShouldExists_jdk7 = {
+ };
+
+ // get all annotations
+ java.lang.annotation.Annotation[] annotations = c.getDeclaredAnnotations();
+
+ // and transform the array into a list of annotation names
+ List<String> annotationsAsString = new java.util.ArrayList<String>();
+
+ for (java.lang.annotation.Annotation annotation : annotations) {
+ annotationsAsString.add(annotation.toString());
+ }
+
+ String[] annotationsThatShouldExists = getJavaVersion() < 7 ? annotationsThatShouldExists_jdk6 : annotationsThatShouldExists_jdk7;
+
+ // check if all required annotations really exist
+ for (String annotationThatShouldExists : annotationsThatShouldExists) {
+ harness.check(annotationsAsString.contains(annotationThatShouldExists));
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredClasses.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredClasses.java
new file mode 100644
index 00000000..eb741742
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredClasses.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredClasses()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredClasses()
+ */
+public class getDeclaredClasses implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?>[] cls = c.getDeclaredClasses();
+ harness.check(cls != null);
+ harness.check(cls.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructor.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructor.java
new file mode 100644
index 00000000..b0536a18
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructor.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredConstructor()
+ */
+public class getDeclaredConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following constructors should exist
+ Map<String, Class[]> constructorsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk6.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+
+ Map<String, Class[]> constructorsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class, java.lang.Throwable.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {java.lang.String.class});
+ constructorsThatShouldExist_jdk7.put("java.lang.ClassNotFoundException", new Class[] {});
+
+ // get the right map containing constructor signatures
+ Map<String, Class[]> constructorsThatShouldExist = getJavaVersion() < 7 ? constructorsThatShouldExist_jdk6 : constructorsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required constructors really exist
+ for (Map.Entry<String, Class[]> constructorThatShouldExists : constructorsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Constructor constructor = c.getDeclaredConstructor(constructorThatShouldExists.getValue());
+ harness.check(constructor != null);
+ String constructorName = constructor.getName();
+ harness.check(constructorName != null);
+ harness.check(constructorName, constructorThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..9fd488fa
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,88 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] constructorNames = new String[] {
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassNotFoundException",
+ "java.lang.ClassNotFoundException",
+ };
+ java.util.Arrays.sort(constructorNames);
+
+ String[] constructorStrings = new String[] {
+ "public java.lang.ClassNotFoundException()",
+ "public java.lang.ClassNotFoundException(java.lang.String)",
+ "public java.lang.ClassNotFoundException(java.lang.String,java.lang.Throwable)",
+ };
+ java.util.Arrays.sort(constructorStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Constructor[] constructors = c.getDeclaredConstructors();
+ harness.check(constructors.length, 3);
+
+ String constructorName;
+ String constructorString;
+
+ constructorName = constructors[0].getName();
+ constructorString = constructors[0].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[1].getName();
+ constructorString = constructors[1].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[2].getName();
+ constructorString = constructors[2].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredField.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredField.java
new file mode 100644
index 00000000..12fca472
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredField.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredField()
+ */
+public class getDeclaredField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ "serialVersionUID",
+ "ex",
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ "serialVersionUID",
+ "ex",
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getDeclaredField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..b62925c8
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredFields.java
@@ -0,0 +1,81 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] fieldNames = new String[] {
+ "serialVersionUID",
+ "ex",
+ };
+ java.util.Arrays.sort(fieldNames);
+
+ String[] fieldStrings = new String[] {
+ "private static final long java.lang.ClassNotFoundException.serialVersionUID",
+ "private java.lang.Throwable java.lang.ClassNotFoundException.ex",
+ };
+ java.util.Arrays.sort(fieldStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Field[] fields = c.getDeclaredFields();
+ harness.check(fields.length, 2);
+
+ String fieldName;
+ String fieldString;
+
+ fieldName = fields[0].getName();
+ fieldString = fields[0].toString();
+ harness.check(java.util.Arrays.binarySearch(fieldNames, fieldName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(fieldStrings, fieldString) >= 0);
+
+ fieldName = fields[1].getName();
+ fieldString = fields[1].toString();
+ harness.check(java.util.Arrays.binarySearch(fieldNames, fieldName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(fieldStrings, fieldString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethod.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethod.java
new file mode 100644
index 00000000..ddb32af9
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethod.java
@@ -0,0 +1,93 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredMethod()
+ */
+public class getDeclaredMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following declared methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getException", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getException", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getDeclaredMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..942c3c98
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,81 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] methodNames = new String[] {
+ "getCause",
+ "getException",
+ };
+ java.util.Arrays.sort(methodNames);
+
+ String[] methodStrings = new String[] {
+ "public java.lang.Throwable java.lang.ClassNotFoundException.getCause()",
+ "public java.lang.Throwable java.lang.ClassNotFoundException.getException()",
+ };
+ java.util.Arrays.sort(methodStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Method[] methods = c.getDeclaredMethods();
+ harness.check(methods.length, 2);
+
+ String methodName;
+ String methodString;
+
+ methodName = methods[0].getName();
+ methodString = methods[0].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[1].getName();
+ methodString = methods[1].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaringClass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaringClass.java
new file mode 100644
index 00000000..ab5a009c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getDeclaringClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getDeclaringClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getDeclaringClass()
+ */
+public class getDeclaringClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getDeclaringClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingClass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingClass.java
new file mode 100644
index 00000000..388f9a81
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingClass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getEnclosingClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getEnclosingClass()
+ */
+public class getEnclosingClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class<?> cls = c.getEnclosingClass();
+ harness.check(cls == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingConstructor.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingConstructor.java
new file mode 100644
index 00000000..62ab5186
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingConstructor.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getEnclosingConstructor()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getEnclosingConstructor()
+ */
+public class getEnclosingConstructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Constructor<?> cons = c.getEnclosingConstructor();
+ harness.check(cons == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingMethod.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingMethod.java
new file mode 100644
index 00000000..60895c48
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getEnclosingMethod.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getEnclosingMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getEnclosingMethod()
+ */
+public class getEnclosingMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ java.lang.reflect.Method m = c.getEnclosingMethod();
+ harness.check(m == null);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getField.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getField.java
new file mode 100644
index 00000000..85ac8dda
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getField.java
@@ -0,0 +1,89 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getField()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getField()
+ */
+public class getField implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following fields should exists
+ final String[] fieldsThatShouldExist_jdk6 = {
+ };
+ final String[] fieldsThatShouldExist_jdk7 = {
+ };
+
+ final String[] fieldsThatShouldExist = getJavaVersion() < 7 ? fieldsThatShouldExist_jdk6 : fieldsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required fields really exists
+ for (String fieldThatShouldExists : fieldsThatShouldExist) {
+ try {
+ java.lang.reflect.Field field = c.getField(fieldThatShouldExists);
+ harness.check(field != null);
+ String fieldName = field.getName();
+ harness.check(fieldName != null);
+ harness.check(fieldName, fieldThatShouldExists);
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getFields.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getFields.java
new file mode 100644
index 00000000..8295c038
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getFields.java
@@ -0,0 +1,63 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] fieldNames = new String[] {
+ };
+ java.util.Arrays.sort(fieldNames);
+
+ String[] fieldStrings = new String[] {
+ };
+ java.util.Arrays.sort(fieldStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Field[] fields = c.getFields();
+ harness.check(fields.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..d781c85a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getInterfaces()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethod.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethod.java
new file mode 100644
index 00000000..a8020df7
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethod.java
@@ -0,0 +1,131 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getMethod()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getMethod()
+ */
+public class getMethod implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // following methods should exist
+ Map<String, Class[]> methodsThatShouldExist_jdk6 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk6.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getException", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk6.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk6.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk6.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk6.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk6.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk6.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk6.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk6.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk6.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk6.put("notifyAll", new Class[] {});
+
+ Map<String, Class[]> methodsThatShouldExist_jdk7 = new HashMap<String, Class[]>();
+ methodsThatShouldExist_jdk7.put("getCause", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getException", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintWriter.class});
+ methodsThatShouldExist_jdk7.put("printStackTrace", new Class[] {java.io.PrintStream.class});
+ methodsThatShouldExist_jdk7.put("fillInStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("initCause", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("toString", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getLocalizedMessage", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getStackTrace", new Class[] {});
+ methodsThatShouldExist_jdk7.put("setStackTrace", new Class[] {new java.lang.StackTraceElement[0].getClass()});
+ methodsThatShouldExist_jdk7.put("addSuppressed", new Class[] {java.lang.Throwable.class});
+ methodsThatShouldExist_jdk7.put("getSuppressed", new Class[] {});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class, int.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {long.class});
+ methodsThatShouldExist_jdk7.put("wait", new Class[] {});
+ methodsThatShouldExist_jdk7.put("equals", new Class[] {java.lang.Object.class});
+ methodsThatShouldExist_jdk7.put("hashCode", new Class[] {});
+ methodsThatShouldExist_jdk7.put("getClass", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notify", new Class[] {});
+ methodsThatShouldExist_jdk7.put("notifyAll", new Class[] {});
+
+ // get the right map containing method signatures
+ Map<String, Class[]> methodsThatShouldExist = getJavaVersion() < 7 ? methodsThatShouldExist_jdk6 : methodsThatShouldExist_jdk7;
+
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // check if all required methods really exist
+ for (Map.Entry<String, Class[]> methodThatShouldExists : methodsThatShouldExist.entrySet()) {
+ try {
+ java.lang.reflect.Method method = c.getMethod(methodThatShouldExists.getKey(), methodThatShouldExists.getValue());
+ harness.check(method != null);
+ String methodName = method.getName();
+ harness.check(methodName != null);
+ harness.check(methodName, methodThatShouldExists.getKey());
+ }
+ catch (Exception e) {
+ harness.check(false);
+ }
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethods.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethods.java
new file mode 100644
index 00000000..3345dd27
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getMethods.java
@@ -0,0 +1,207 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] methodNames = new String[] {
+ "getCause",
+ "getException",
+ "printStackTrace",
+ "printStackTrace",
+ "printStackTrace",
+ "fillInStackTrace",
+ "initCause",
+ "toString",
+ "getMessage",
+ "getLocalizedMessage",
+ "getStackTrace",
+ "setStackTrace",
+ "wait",
+ "wait",
+ "wait",
+ "hashCode",
+ "getClass",
+ "equals",
+ "notify",
+ "notifyAll",
+ };
+ java.util.Arrays.sort(methodNames);
+
+ String[] methodStrings = new String[] {
+ "public java.lang.Throwable java.lang.ClassNotFoundException.getCause()",
+ "public java.lang.Throwable java.lang.ClassNotFoundException.getException()",
+ "public void java.lang.Throwable.printStackTrace()",
+ "public void java.lang.Throwable.printStackTrace(java.io.PrintStream)",
+ "public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)",
+ "public synchronized native java.lang.Throwable java.lang.Throwable.fillInStackTrace()",
+ "public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)",
+ "public java.lang.String java.lang.Throwable.toString()",
+ "public java.lang.String java.lang.Throwable.getMessage()",
+ "public java.lang.String java.lang.Throwable.getLocalizedMessage()",
+ "public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()",
+ "public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])",
+ "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException",
+ "public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException",
+ "public final void java.lang.Object.wait() throws java.lang.InterruptedException",
+ "public native int java.lang.Object.hashCode()",
+ "public final native java.lang.Class java.lang.Object.getClass()",
+ "public boolean java.lang.Object.equals(java.lang.Object)",
+ "public final native void java.lang.Object.notify()",
+ "public final native void java.lang.Object.notifyAll()",
+ };
+ java.util.Arrays.sort(methodStrings);
+
+ // create instance of a class ClassNotFoundException
+ Object o = new ClassNotFoundException("ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Method[] methods = c.getMethods();
+ harness.check(methods.length, 20);
+
+ String methodName;
+ String methodString;
+
+ methodName = methods[0].getName();
+ methodString = methods[0].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[1].getName();
+ methodString = methods[1].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[2].getName();
+ methodString = methods[2].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[3].getName();
+ methodString = methods[3].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[4].getName();
+ methodString = methods[4].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[5].getName();
+ methodString = methods[5].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[6].getName();
+ methodString = methods[6].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[7].getName();
+ methodString = methods[7].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[8].getName();
+ methodString = methods[8].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[9].getName();
+ methodString = methods[9].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[10].getName();
+ methodString = methods[10].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[11].getName();
+ methodString = methods[11].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[12].getName();
+ methodString = methods[12].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[13].getName();
+ methodString = methods[13].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[14].getName();
+ methodString = methods[14].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[15].getName();
+ methodString = methods[15].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[16].getName();
+ methodString = methods[16].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[17].getName();
+ methodString = methods[17].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[18].getName();
+ methodString = methods[18].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[19].getName();
+ methodString = methods[19].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java
new file mode 100644
index 00000000..cbe0b95a
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getModifiers()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java
new file mode 100644
index 00000000..dc17d380
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ClassNotFoundException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java
new file mode 100644
index 00000000..5de59eff
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getPackage()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..0561ca28
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getSimpleName()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ClassNotFoundException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..46349470
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/getSuperclass.java
@@ -0,0 +1,73 @@
+// Test for method java.lang.ClassNotFoundException.getClass().getSuperclass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+
+ int version = getJavaVersion();
+ if (version == 6)
+ harness.check(superClass.getName(), "java.lang.Exception");
+ else
+ harness.check(superClass.getName(), "java.lang.ReflectiveOperationException");
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..1207051f
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isAnnotation()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..e935612c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..dec7de66
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isArray.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isArray.java
new file mode 100644
index 00000000..598d15e4
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isArray()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..f0b585fa
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ClassNotFoundException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java
new file mode 100644
index 00000000..ea05076c
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isEnum()
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java
new file mode 100644
index 00000000..f6aed43b
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isInstance(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ClassNotFoundException("java.lang.ClassNotFoundException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java
new file mode 100644
index 00000000..ea165102
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isInterface(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ab070a76
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..736d9c83
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..af031315
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..4dcb906e
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ClassNotFoundException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test for method java.lang.ClassNotFoundException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ClassNotFoundException
+ final Object o = new ClassNotFoundException("java.lang.ClassNotFoundException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/constructor.java b/gnu/testlet/java/lang/ClassNotFoundException/constructor.java
new file mode 100644
index 00000000..c133fceb
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/constructor.java
@@ -0,0 +1,64 @@
+// Test if instances of a class java.lang.ClassNotFoundException could be properly constructed
+
+// Copyright (C) 2012, 2013 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ClassNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test if instances of a class java.lang.ClassNotFoundException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ClassNotFoundException object1 = new ClassNotFoundException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.ClassNotFoundException");
+
+ ClassNotFoundException object2 = new ClassNotFoundException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.ClassNotFoundException: nothing happens");
+
+ ClassNotFoundException object3 = new ClassNotFoundException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.ClassNotFoundException");
+
+ ClassNotFoundException object4 = new ClassNotFoundException("nothing", new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.ClassNotFoundException: nothing");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/getCause.java b/gnu/testlet/java/lang/ClassNotFoundException/getCause.java
new file mode 100644
index 00000000..51dc051d
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/getCause.java
@@ -0,0 +1,57 @@
+// Test of the method java.lang.ClassNotFoundException.getCause()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test of the method java.lang.ClassNotFoundException.getCause()
+ */
+public class getCause implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassNotFoundException("ClassNotFoundException");
+ }
+ catch (ClassNotFoundException e) {
+ harness.check(e.getCause(), null);
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ClassNotFoundException/getException.java b/gnu/testlet/java/lang/ClassNotFoundException/getException.java
new file mode 100644
index 00000000..9b8ce567
--- /dev/null
+++ b/gnu/testlet/java/lang/ClassNotFoundException/getException.java
@@ -0,0 +1,57 @@
+// Test of the method java.lang.ClassNotFoundException.getException()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ClassNotFoundException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ClassNotFoundException;
+
+
+
+/**
+ * Test of the method java.lang.ClassNotFoundException.getException()
+ */
+public class getException implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ClassNotFoundException("ClassNotFoundException");
+ }
+ catch (ClassNotFoundException e) {
+ harness.check(e.getException(), null);
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries
new file mode 100644
index 00000000..7efe38d6
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jun 27 14:00:17 2012//
+/constructor.java/1.1/Wed Jun 27 14:00:17 2012//
+D
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries.Log b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Repository b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Repository
new file mode 100644
index 00000000..ca7013ee
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/CloneNotSupportedException
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Root b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/TryCatch.java b/gnu/testlet/java/lang/CloneNotSupportedException/TryCatch.java
new file mode 100644
index 00000000..66875c6f
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.CloneNotSupportedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.CloneNotSupportedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new CloneNotSupportedException("CloneNotSupportedException");
+ }
+ catch (CloneNotSupportedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Entries b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..49ce5b95
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Entries
@@ -0,0 +1,21 @@
+/InstanceOf.java/1.1/Wed Jun 27 14:00:17 2012//
+/getConstructors.java/1.1/Mon Sep 10 13:37:03 2012//
+/getDeclaredConstructors.java/1.1/Mon Sep 10 13:37:03 2012//
+/getDeclaredFields.java/1.1/Mon Sep 10 13:37:03 2012//
+/getDeclaredMethods.java/1.1/Mon Sep 10 13:37:03 2012//
+/getFields.java/1.1/Mon Sep 10 13:37:03 2012//
+/getInterfaces.java/1.2/Mon Sep 10 13:37:03 2012//
+/getMethods.java/1.1/Mon Sep 10 13:37:03 2012//
+/getModifiers.java/1.2/Mon Sep 10 13:37:03 2012//
+/getName.java/1.2/Mon Sep 10 13:37:03 2012//
+/getPackage.java/1.2/Mon Sep 10 13:37:03 2012//
+/getSimpleName.java/1.2/Mon Sep 10 13:37:03 2012//
+/getSuperclass.java/1.2/Mon Sep 10 13:37:03 2012//
+/isAssignableFrom.java/1.2/Mon Sep 10 13:37:03 2012//
+/isInstance.java/1.2/Mon Sep 10 13:37:03 2012//
+/isInterface.java/1.2/Mon Sep 10 13:37:03 2012//
+/isLocalClass.java/1.2/Mon Sep 10 13:37:03 2012//
+/isMemberClass.java/1.2/Mon Sep 10 13:37:03 2012//
+/isPrimitive.java/1.2/Mon Sep 10 13:37:03 2012//
+/isSynthetic.java/1.2/Mon Sep 10 13:37:03 2012//
+D
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Repository b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..09f6c0a5
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/CloneNotSupportedException/classInfo
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Root b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..765f7e75
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.CloneNotSupportedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.CloneNotSupportedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ CloneNotSupportedException o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof CloneNotSupportedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getConstructors.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getConstructors.java
new file mode 100644
index 00000000..a4205ed7
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getConstructors.java
@@ -0,0 +1,81 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] constructorNames = new String[] {
+ "java.lang.CloneNotSupportedException",
+ "java.lang.CloneNotSupportedException",
+ };
+ java.util.Arrays.sort(constructorNames);
+
+ String[] constructorStrings = new String[] {
+ "public java.lang.CloneNotSupportedException()",
+ "public java.lang.CloneNotSupportedException(java.lang.String)",
+ };
+ java.util.Arrays.sort(constructorStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+ harness.check(constructors.length, 2);
+
+ String constructorName;
+ String constructorString;
+
+ constructorName = constructors[0].getName();
+ constructorString = constructors[0].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[1].getName();
+ constructorString = constructors[1].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..0be63376
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,81 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] constructorNames = new String[] {
+ "java.lang.CloneNotSupportedException",
+ "java.lang.CloneNotSupportedException",
+ };
+ java.util.Arrays.sort(constructorNames);
+
+ String[] constructorStrings = new String[] {
+ "public java.lang.CloneNotSupportedException()",
+ "public java.lang.CloneNotSupportedException(java.lang.String)",
+ };
+ java.util.Arrays.sort(constructorStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Constructor[] constructors = c.getDeclaredConstructors();
+ harness.check(constructors.length, 2);
+
+ String constructorName;
+ String constructorString;
+
+ constructorName = constructors[0].getName();
+ constructorString = constructors[0].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ constructorName = constructors[1].getName();
+ constructorString = constructors[1].toString();
+ harness.check(java.util.Arrays.binarySearch(constructorNames, constructorName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(constructorStrings, constructorString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..0197740f
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredFields.java
@@ -0,0 +1,63 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] fieldNames = new String[] {
+ };
+ java.util.Arrays.sort(fieldNames);
+
+ String[] fieldStrings = new String[] {
+ };
+ java.util.Arrays.sort(fieldStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Field[] fields = c.getDeclaredFields();
+ harness.check(fields.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..75ad4001
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,63 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] methodNames = new String[] {
+ };
+ java.util.Arrays.sort(methodNames);
+
+ String[] methodStrings = new String[] {
+ };
+ java.util.Arrays.sort(methodStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Method[] methods = c.getDeclaredMethods();
+ harness.check(methods.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getFields.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getFields.java
new file mode 100644
index 00000000..428fb08d
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getFields.java
@@ -0,0 +1,63 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] fieldNames = new String[] {
+ };
+ java.util.Arrays.sort(fieldNames);
+
+ String[] fieldStrings = new String[] {
+ };
+ java.util.Arrays.sort(fieldStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Field[] fields = c.getFields();
+ harness.check(fields.length, 0);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..678fde13
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getMethods.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getMethods.java
new file mode 100644
index 00000000..f1dd768d
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getMethods.java
@@ -0,0 +1,200 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ String[] methodNames = new String[] {
+ "printStackTrace",
+ "printStackTrace",
+ "printStackTrace",
+ "fillInStackTrace",
+ "getCause",
+ "initCause",
+ "toString",
+ "getMessage",
+ "getLocalizedMessage",
+ "getStackTrace",
+ "setStackTrace",
+ "wait",
+ "wait",
+ "wait",
+ "hashCode",
+ "getClass",
+ "equals",
+ "notify",
+ "notifyAll",
+ };
+ java.util.Arrays.sort(methodNames);
+
+ String[] methodStrings = new String[] {
+ "public void java.lang.Throwable.printStackTrace()",
+ "public void java.lang.Throwable.printStackTrace(java.io.PrintStream)",
+ "public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)",
+ "public synchronized native java.lang.Throwable java.lang.Throwable.fillInStackTrace()",
+ "public java.lang.Throwable java.lang.Throwable.getCause()",
+ "public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)",
+ "public java.lang.String java.lang.Throwable.toString()",
+ "public java.lang.String java.lang.Throwable.getMessage()",
+ "public java.lang.String java.lang.Throwable.getLocalizedMessage()",
+ "public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()",
+ "public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])",
+ "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException",
+ "public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException",
+ "public final void java.lang.Object.wait() throws java.lang.InterruptedException",
+ "public native int java.lang.Object.hashCode()",
+ "public final native java.lang.Class java.lang.Object.getClass()",
+ "public boolean java.lang.Object.equals(java.lang.Object)",
+ "public final native void java.lang.Object.notify()",
+ "public final native void java.lang.Object.notifyAll()",
+ };
+ java.util.Arrays.sort(methodStrings);
+
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ java.lang.reflect.Method[] methods = c.getMethods();
+ harness.check(methods.length, 19);
+
+ String methodName;
+ String methodString;
+
+ methodName = methods[0].getName();
+ methodString = methods[0].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[1].getName();
+ methodString = methods[1].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[2].getName();
+ methodString = methods[2].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[3].getName();
+ methodString = methods[3].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[4].getName();
+ methodString = methods[4].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[5].getName();
+ methodString = methods[5].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[6].getName();
+ methodString = methods[6].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[7].getName();
+ methodString = methods[7].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[8].getName();
+ methodString = methods[8].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[9].getName();
+ methodString = methods[9].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[10].getName();
+ methodString = methods[10].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[11].getName();
+ methodString = methods[11].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[12].getName();
+ methodString = methods[12].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[13].getName();
+ methodString = methods[13].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[14].getName();
+ methodString = methods[14].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[15].getName();
+ methodString = methods[15].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[16].getName();
+ methodString = methods[16].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[17].getName();
+ methodString = methods[17].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ methodName = methods[18].getName();
+ methodString = methods[18].toString();
+ harness.check(java.util.Arrays.binarySearch(methodNames, methodName) >= 0);
+ harness.check(java.util.Arrays.binarySearch(methodStrings, methodString) >= 0);
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..8e129183
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java
new file mode 100644
index 00000000..67772188
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.CloneNotSupportedException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java
new file mode 100644
index 00000000..677a52d4
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..f0509d2c
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "CloneNotSupportedException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..02285054
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..5c2cf7ae
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(CloneNotSupportedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java
new file mode 100644
index 00000000..2cf0d902
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new CloneNotSupportedException("CloneNotSupportedException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java
new file mode 100644
index 00000000..0a157671
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ca6184fd
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c5f26f54
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..af8a7ee4
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..df51d955
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.CloneNotSupportedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test for method java.lang.CloneNotSupportedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class CloneNotSupportedException
+ Object o = new CloneNotSupportedException("CloneNotSupportedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/CloneNotSupportedException/constructor.java b/gnu/testlet/java/lang/CloneNotSupportedException/constructor.java
new file mode 100644
index 00000000..685321c8
--- /dev/null
+++ b/gnu/testlet/java/lang/CloneNotSupportedException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.CloneNotSupportedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.CloneNotSupportedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.CloneNotSupportedException;
+
+
+
+/**
+ * Test if instances of a class java.lang.CloneNotSupportedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ CloneNotSupportedException object1 = new CloneNotSupportedException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.CloneNotSupportedException");
+
+ CloneNotSupportedException object2 = new CloneNotSupportedException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.CloneNotSupportedException: nothing happens");
+
+ CloneNotSupportedException object3 = new CloneNotSupportedException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.CloneNotSupportedException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Cloneable/CVS/Entries b/gnu/testlet/java/lang/Cloneable/CVS/Entries
new file mode 100644
index 00000000..90038e50
--- /dev/null
+++ b/gnu/testlet/java/lang/Cloneable/CVS/Entries
@@ -0,0 +1,2 @@
+/CloneableTest.java/1.2/Mon Feb 21 15:52:46 2005//
+D
diff --git a/gnu/testlet/java/lang/Cloneable/CVS/Repository b/gnu/testlet/java/lang/Cloneable/CVS/Repository
new file mode 100644
index 00000000..7d0abdf2
--- /dev/null
+++ b/gnu/testlet/java/lang/Cloneable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Cloneable
diff --git a/gnu/testlet/java/lang/Cloneable/CVS/Root b/gnu/testlet/java/lang/Cloneable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Cloneable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Cloneable/CloneableTest.java b/gnu/testlet/java/lang/Cloneable/CloneableTest.java
new file mode 100644
index 00000000..a482a54d
--- /dev/null
+++ b/gnu/testlet/java/lang/Cloneable/CloneableTest.java
@@ -0,0 +1,97 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.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 static TestHarness harness;
+ public void test_clone()
+ {
+ CloneableTest tst = null;
+ try {
+ tst = (CloneableTest)clone();
+ }
+ catch ( CloneNotSupportedException e )
+ {
+ harness.fail("Error: CloneNotSupportedException should not be thrown here");
+ }
+
+ if ( tst == null )
+ harness.fail("Error: Clone method on Object did not work properly");
+ else
+ {
+ if (!( tst.a == a && tst.b == b && tst.c.floatValue() == c.floatValue()))
+ {
+ harness.fail("Error: Clone method on Object did not clone data properly");
+ }
+ }
+ }
+
+ public void test_array()
+ {
+ int []ia = new int[5];
+ int i;
+
+ for (i = 0; i < ia.length; i++) {
+ ia[i] = i;
+ }
+ Cloneable c;
+ Object o = ia;
+
+ if (!(ia instanceof Cloneable)) {
+ harness.fail("Error: arrays should implement Cloneable");
+ }
+
+ int []ib = (int[])ia.clone();
+ Class cla = ia.getClass();
+ Class clb = ib.getClass();
+ if (cla != clb) {
+ harness.fail("Error: array classes should be equal");
+ }
+ for (i = 0; i < ia.length; i++) {
+ if (ib[i] != ia[i]) {
+ harness.fail("Error: mismatch on cloned array at " + i);
+ }
+ }
+ }
+
+ public void testall()
+ {
+ test_clone();
+ test_array();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+
+}
diff --git a/gnu/testlet/java/lang/Double/.cvsignore b/gnu/testlet/java/lang/Double/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Double/CVS/Entries b/gnu/testlet/java/lang/Double/CVS/Entries
new file mode 100644
index 00000000..a2ccb100
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/CVS/Entries
@@ -0,0 +1,16 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:35 1998//
+/DoubleSetterTest.java/1.2/Sun Jan 29 23:19:10 2006//
+/DoubleTest.java/1.9/Tue Nov 28 20:30:46 2006//
+/compare.java/1.1/Fri Aug 27 20:30:30 2004//
+/compareTo.java/1.2/Wed Dec 27 15:48:18 2006//
+/compareToObject.java/1.1/Mon Aug 27 14:59:18 2012//
+/doubleToInt.java/1.1/Wed Dec 12 11:38:36 2012//
+/doubleToLong.java/1.1/Thu Dec 13 10:08:56 2012//
+/doubleToLongBits.java/1.1/Mon Aug 27 14:59:18 2012//
+/doubleToRawLongBits.java/1.1/Mon Aug 27 14:59:18 2012//
+/new_Double.java/1.3/Fri Dec 11 11:28:18 1998//
+/parseDouble.java/1.1/Fri Oct 15 22:35:32 2004//
+/toHexString.java/1.2/Fri Sep 9 14:31:43 2011/-kk/
+/valueOf.java/1.1/Fri Oct 15 22:35:32 2004//
+/valueOfDouble.java/1.1/Mon Aug 27 14:59:18 2012//
+D
diff --git a/gnu/testlet/java/lang/Double/CVS/Entries.Log b/gnu/testlet/java/lang/Double/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Double/CVS/Repository b/gnu/testlet/java/lang/Double/CVS/Repository
new file mode 100644
index 00000000..10c1b2a8
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Double
diff --git a/gnu/testlet/java/lang/Double/CVS/Root b/gnu/testlet/java/lang/Double/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Double/DoubleSetterTest.java b/gnu/testlet/java/lang/Double/DoubleSetterTest.java
new file mode 100644
index 00000000..acac2949
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/DoubleSetterTest.java
@@ -0,0 +1,94 @@
+/* Copyright (C) 1999, 2002 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: JDK1.1
+
+package gnu.testlet.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class DoubleSetterTest implements Testlet
+{
+
+ protected static TestHarness harness;
+
+ /**
+ * Tests the conversion of behaviour of max values when converting from double into Double
+ */
+ public void test_max()
+ {
+ // Check directly the MAX_VALUE against NaN
+ harness.check(!Double.isNaN(Double.MAX_VALUE));
+ harness.check(!Double.isNaN(new Double(Double.MAX_VALUE).doubleValue()));
+
+ // Check the MAX_VALUE against NaN via a direct method setter
+ DoubleHolder doubleHolder = new DoubleHolder();
+ doubleHolder.setValue(Double.MAX_VALUE);
+ harness.check(Double.MAX_VALUE, doubleHolder.getValue());
+
+ // Check the MAX_VALUE against NaN via a setter called by reflection
+ DoubleHolder doubleHolder2 = new DoubleHolder();
+ try
+ {
+ Method setMethod = DoubleHolder.class.getDeclaredMethod("setValue", new Class[] {double.class});
+ setMethod.invoke(doubleHolder2, new Object[] {new Double(Double.MAX_VALUE)});
+ } catch (NoSuchMethodException e) {
+ harness.fail("no method setValue");
+ } catch (IllegalAccessException e) {
+ harness.fail("illegal access");
+ } catch (InvocationTargetException e) {
+ harness.fail("invocation failed");
+ }
+
+ harness.check(!Double.isNaN(doubleHolder2.getValue()));
+
+ }
+
+
+ /**
+ * Simple holder used to test various way of setting and getting primitive double
+ */
+ private static class DoubleHolder
+ {
+ private double value;
+
+ public double getValue()
+ {
+ return value;
+ }
+
+ public void setValue(double value)
+ {
+ this.value = value;
+ }
+
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ test_max();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Double/DoubleTest.java b/gnu/testlet/java/lang/Double/DoubleTest.java
new file mode 100644
index 00000000..3162f2a0
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/DoubleTest.java
@@ -0,0 +1,641 @@
+/* Copyright (C) 1999, 2002 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: JDK1.0
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class DoubleTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ double min1 = 5e-324;
+ double min2 = Double.MIN_VALUE;
+ double max1 = 1.7976931348623157e+308;
+ double max2 = Double.MAX_VALUE;
+ double ninf1 = -1.0/0.0;
+ double ninf2 = Double.NEGATIVE_INFINITY;
+ double pinf1 = 1.0/0.0;
+ double pinf2 = Double.POSITIVE_INFINITY;
+ Double nan1 = new Double(0.0/0.0);
+ Double nan2 = new Double(Double.NaN);
+
+ if ( min1 != min2 ) {
+ harness.fail("test_Basics - 1a");
+ System.out.println("Expected: " + min1);
+ System.out.println("Got: " + min2);
+ }
+ if ( max1 != max2 ) {
+ harness.fail("test_Basics - 1b");
+ System.out.println("Expected: " + max1);
+ System.out.println("Got: " + max2);
+ }
+ if (ninf1 != ninf2) {
+ harness.fail("test_Basics - 1c");
+ System.out.println("Expected: " + ninf1);
+ System.out.println("Got: " + ninf2);
+ }
+ if (pinf1 != pinf2) {
+ harness.fail("test_Basics - 1d");
+ System.out.println("Expected: " + pinf1);
+ System.out.println("Got: " + pinf2);
+ }
+ if (!nan2.equals(nan1) ) {
+ harness.fail("test_Basics CYGNUS: NaN.equals - 1e");
+ System.out.println("Expected: " + nan1);
+ System.out.println("Got: " + nan2);
+ }
+
+ Double i1 = new Double(100.5);
+
+ harness.check(!( i1.doubleValue() != 100.5 ),
+ "test_Basics - 2" );
+
+
+ try {
+ harness.check(!( (new Double("234.34")).doubleValue() != 234.34 ),
+ "test_Basics - 3" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 3" );
+ }
+
+ try {
+ harness.check(!( (new Double("1.4e-45")).doubleValue() != 1.4e-45 ),
+ "test_Basics - 4" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 4" );
+ }
+
+ try {
+ new Double("babu");
+ harness.fail("test_Basics - 5" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+
+ harness.check(!( (new Double(3.4)).doubleValue() != 3.4 ),
+ "test_Basics - 6" );
+
+
+ Double nan = new Double(Double.NaN );
+ harness.check(!( !nan.isNaN()),
+ "test_Basics - 7" );
+
+ harness.check(!( (new Double(10.0f)).isNaN()),
+ "test_Basics - 8" );
+
+ harness.check(!( !Double.isNaN( Double.NaN )),
+ "test_Basics - 9" );
+
+ harness.check(!( !(new Double(Double.POSITIVE_INFINITY)).isInfinite()),
+ "test_Basics - 10" );
+
+ harness.check(!( !(new Double(Double.NEGATIVE_INFINITY)).isInfinite()),
+ "test_Basics - 11" );
+ harness.check(!( !( Double.isInfinite( Double.NEGATIVE_INFINITY))),
+ "test_Basics - 12" );
+ harness.check(!( !( Double.isInfinite( Double.POSITIVE_INFINITY))),
+ "test_Basics - 13" );
+ harness.check(!( 0.0 - 0.0 != 0.0),
+ "test_Basics - 14" );
+ harness.check(!( 0.0 + 0.0 != 0.0),
+ "test_Basics - 15" );
+ harness.check(!( 0.0 + -0.0 != 0.0),
+ "test_Basics - 16" );
+ harness.check(!( 0.0 - -0.0 != 0.0),
+ "test_Basics - 17" );
+ harness.check(!( -0.0 - 0.0 != -0.0),
+ "test_Basics - 18" );
+ harness.check(!( -0.0 + 0.0 != 0.0),
+ "test_Basics - 19" );
+ harness.check(!( -0.0 + -0.0 != -0.0),
+ "test_Basics - 20" );
+ harness.check(!( -0.0 - -0.0 != 0.0),
+ "test_Basics - 21" );
+
+ harness.check(!( !"0.0".equals(0.0 - 0.0 +"" )),
+ "test_Basics - 22" );
+
+ }
+
+ public void test_toString()
+ {
+ harness.check(!( !( new Double(123.0)).toString().equals("123.0")),
+ "test_toString - 1" );
+ harness.check(!( !( new Double(-44.5343)).toString().equals("-44.5343")),
+ "test_toString - 2" );
+
+ harness.check(!( !Double.toString( 23.04 ).equals ("23.04" )),
+ "test_toString - 3" );
+
+ harness.check(!( !Double.toString( Double.NaN ).equals ("NaN" )),
+ "test_toString - 4" );
+
+ harness.check(!( !Double.toString( Double.POSITIVE_INFINITY ).equals ("Infinity" )),
+ "test_toString - 5" );
+ harness.check(!( !Double.toString( Double.NEGATIVE_INFINITY ).equals ("-Infinity" )),
+ "test_toString - 6" );
+
+ harness.check(!( !Double.toString( 0.0 ).equals ("0.0" )),
+ "test_toString - 7" );
+
+ String str;
+
+ str = Double.toString( -0.0 );
+ harness.check(!( !str.equals ("-0.0" )),
+ "test_toString - 8" );
+
+ str = Double.toString( -9412128.34 );
+ harness.check(!( !str.equals ("-9412128.34" )),
+ "test_toString - 9" );
+
+ // The following case fails for some Sun JDKs (e.g. 1.3.1
+ // and 1.4.0) where toString(0.001) returns "0.0010". This
+ // is contrary to the JDK 1.4 javadoc. This particular
+ // case has been noted as a comment to Sun Java bug #4642835
+ str = Double.toString( 0.001 );
+ if ( !Double.toString( 0.001 ).equals ("0.001" )) {
+ harness.fail("test_toString - 10" );
+ System.out.println("Expected: " + "0.001");
+ System.out.println("Got: " + Double.toString(0.001));
+ }
+
+ str = Double.toString( 1e4d );
+ if ( !Double.toString( 1e4d ).equals ("10000.0" )) {
+ harness.fail("test_toString - 11" );
+ System.out.println("Expected: " + "10000.0");
+ System.out.println("Got: " + Double.toString(1e4d));
+ }
+
+ str = Double.toString(33333333.33 );
+ if ( !(new Double( str)).equals(new Double(33333333.33))) {
+ harness.fail("test_toString - 12" );
+ System.out.println("Expected: " +
+ (new Double(33333333.33)).toString());
+ System.out.println("Got: " +
+ (new Double(str)).toString());
+ }
+ str = Double.toString(-123232324253.32 );
+ if ( !(new Double( str)).equals(new Double(-123232324253.32))) {
+ harness.fail("test_toString - 13" );
+ System.out.println("Expected: " +
+ (new Double(-123232324253.32)).toString());
+ System.out.println("Got: " +
+ (new Double(str)).toString());
+ }
+ str = Double.toString(1.243E10);
+ if ( !(new Double( str)).equals(new Double(1.243E10))) {
+ harness.fail("test_toString - 14" );
+ System.out.println("Expected: " +
+ (new Double(1.243E10)).toString());
+ System.out.println("Got: " +
+ (new Double(str)).toString());
+ }
+ str = Double.toString(Double.MIN_VALUE);
+ if ( !str.equals("4.9E-324")) {
+ harness.fail("test_toString - 15" );
+ harness.debug("Expected: 4.9E-324");
+ harness.debug("Got: " + str);
+ }
+
+ /*
+ str = Double.toString(-23.43E33);
+ if ( !(new Double( str)).equals(new Double(-23.43E33)))
+ harness.fail("test_toString - 16" );
+ */
+
+ }
+
+ public void test_equals()
+ {
+ Double i1 = new Double(2334.34E4);
+ Double i2 = new Double(-2334.34E4);
+
+ harness.check(!( !i1.equals( new Double(2334.34E4))),
+ "test_equals - 1" );
+ harness.check(!( !i2.equals( new Double(-2334.34E4))),
+ "test_equals - 2" );
+
+
+ harness.check(!( i1.equals( i2 )),
+ "test_equals - 3" );
+
+ harness.check(!( i1.equals(null)),
+ "test_equals - 4" );
+
+ double n1 = Double.NaN;
+ double n2 = Double.NaN;
+ harness.check(!( n1 == n2 ),
+ "test_equals - 5" );
+
+ Double flt1 = new Double( Double.NaN);
+ Double flt2 = new Double( Double.NaN);
+ harness.check(!( !flt1.equals(flt2)),
+ "test_equals CYGNUS: NaN.equals - 6" );
+
+ harness.check(!( 0.0 != -0.0 ),
+ "test_equals - 7" );
+
+ Double pzero = new Double( 0.0 );
+ Double nzero = new Double( -0.0 );
+
+ harness.check(!( pzero.equals(nzero) ),
+ "test_equals CYGNUS: Double.equals - 8" );
+
+ }
+
+
+ public void test_hashCode( )
+ {
+ Double flt1 = new Double(3.4028235e+38);
+ long lng1 = Double.doubleToLongBits( 3.4028235e+38);
+
+ harness.check(!( flt1.hashCode() != (int) ( lng1^(lng1>>>32)) ),
+ "test_hashCode - 1");
+
+ Double flt2 = new Double( -2343323354.0 );
+ long lng2 = Double.doubleToLongBits( -2343323354.0 );
+
+ harness.check(!( flt2.hashCode() != (int) ( lng2^(lng2>>>32)) ),
+ "test_hashCode - 2");
+ }
+
+ public void test_intValue( )
+ {
+ Double b1 = new Double(3.4e+32);
+ Double b2 = new Double(-23.45);
+
+ int i1 = b1.intValue();
+ int i2 = b2.intValue();
+
+ harness.check(!( i1 != (int) 3.4e+32),
+ "test_intValue CYGNUS: Float to int conversions - 1" );
+
+ harness.check(!( i2 != (int) -23.45 ),
+ "test_intValue - 2" );
+ Double b3 = new Double(3000.54);
+ harness.check(!( b3.intValue() != 3000 ),
+ "test_intValue - 3" );
+ Double b4 = new Double(32735.3249);
+ harness.check(!( b4.intValue() != 32735 ),
+ "test_intValue - 4" );
+ Double b5 = new Double(-32735.3249);
+ harness.check(!( b5.intValue() != -32735 ),
+ "test_intValue - 5" );
+ Double b6 = new Double(-32735.3249);
+ harness.check(!( b6.intValue() != -32735 ),
+ "test_intValue - 6" );
+ Double b7 = new Double(0.0);
+ harness.check(!( b7.intValue() != 0 ),
+ "test_intValue - 7" );
+ }
+
+ public void test_longValue( )
+ {
+ Double b1 = new Double(3.4e+32);
+ Double b2 = new Double(-23.45);
+
+ harness.check(!( b1.longValue() != (long) 3.4e+32),
+ "test_longValue CYGNUS: Float to int conversions - 1" );
+
+ harness.check(!( b2.longValue() != (long) -23.45 ),
+ "test_longValue - 2" );
+ }
+
+ public void test_DoubleValue( )
+ {
+ Double b1 = new Double(3276.34);
+ Double b2 = new Double(-3276.32);
+
+ harness.check(!( b1.doubleValue() != 3276.34 ),
+ "test_DoubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != -3276.32 ),
+ "test_DoubleValue - 2" );
+ }
+
+ public void test_doubleValue( )
+ {
+ Double b1 = new Double(0.0);
+ Double b2 = new Double(30.0);
+
+ harness.check(!( b1.doubleValue() != 0.0 ),
+ "test_doubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != 30.0 ),
+ "test_doubleValue - 2" );
+ }
+
+ public void test_floatValue( )
+ {
+ Double b1 = new Double(0.0);
+ Double b2 = new Double(30.0);
+
+ harness.check(!( b1.floatValue() != 0.0f ),
+ "test_floatValue - 1" );
+
+ harness.check(!( b2.floatValue() != 30.0f ),
+ "test_floatValue - 2" );
+ }
+
+ public void test_valueOf( )
+ {
+ try {
+ Double.valueOf(null);
+ harness.fail("test_valueOf - 1" );
+ }
+ catch ( NumberFormatException nfe )
+ {harness.check(false, "test_valueOf null should throw NullPointerException");}
+ catch ( NullPointerException e )
+ {harness.check(true, "test_valueOf null");}
+
+ try {
+ Double.valueOf("Kona");
+ harness.fail("test_valueOf - 2" );
+ }catch( NumberFormatException e) {}
+
+ harness.check(!( Double.valueOf( "3.4e+32" ).doubleValue() != 3.4e+32 ),
+ "test_valueOf - 3" );
+
+ harness.check(!( Double.valueOf(" -23.45 ").doubleValue() != -23.45 ),
+ "test_valueOf - 4" );
+ }
+
+ public void test_parseDouble( )
+ {
+ try {
+ Double.parseDouble(null);
+ harness.fail("test_parseDouble - 1" );
+ }
+ catch ( NumberFormatException nfe )
+ {harness.check(false, "test_parseDouble null should throw NullPointerException");}
+ catch ( NullPointerException e )
+ {harness.check(true, "test_parseDouble null");}
+
+ try {
+ Double.parseDouble("Kona");
+ harness.fail("test_parseDouble - 2" );
+ }catch( NumberFormatException e) {}
+
+ harness.check(!( Double.parseDouble( "3.4e+32" ) != 3.4e+32 ),
+ "test_parseDouble - 3" );
+
+ harness.check(!( Double.parseDouble(" -23.45 ") != -23.45 ),
+ "test_parseDouble - 4" );
+ }
+
+ public void test_doubleToLongBits()
+ {
+ harness.check(!( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) != 0x7ff0000000000000L ),
+ "test_doubleToLongBits - 1" );
+ harness.check(!( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) != 0xfff0000000000000L ),
+ "test_doubleToLongBits - 2" );
+
+ long nanval = Double.doubleToLongBits( Double.NaN );
+ harness.check(!( nanval != 0x7ff8000000000000L ),
+ "test_doubleToLongBits CYGNUS: NaN.doubleToLongBits" );
+
+ long i1 = Double.doubleToLongBits(3.4e+32f);
+ long i2 = Double.doubleToLongBits(-34.56f);
+
+ long sign1 = i1 & 0x8000000000000000L ;
+ long sign2 = i2 & 0x8000000000000000L ;
+
+ long exp1 = i1 & 0x7ff0000000000000L ;
+ long exp2 = i2 & 0x7ff0000000000000L ;
+
+ long man1 = i1 & 0x000fffffffffffffL ;
+ long man2 = i2 & 0x000fffffffffffffL ;
+
+ harness.check(!(sign1 != 0 ),
+ "test_doubleToLongBits - 4" );
+
+ harness.check(!( sign2 != 0x8000000000000000L ),
+ "test_doubleToLongBits - 5" );
+
+ harness.check(!( exp1 != 5093571178556030976L ),
+ "test_doubleToLongBits - 6" );
+
+ harness.check(!( exp2 != 4629700416936869888L ),
+ "test_doubleToLongBits - 7" );
+
+ harness.check(!( man1 != 214848222789632L ),
+ "test_doubleToLongBits - 8" );
+
+ harness.check(!( man2 != 360288163463168L ),
+ "test_doubleToLongBits - 9" );
+
+ }
+
+ public void test_longBitsToDouble( )
+ {
+ harness.check(!( Double.longBitsToDouble( 0x7ff0000000000000L) != Double.POSITIVE_INFINITY ),
+ "test_longBitsToDouble - 1" );
+ harness.check(!( Double.longBitsToDouble( 0xfff0000000000000L ) != Double.NEGATIVE_INFINITY ),
+ "test_longBitsToDouble - 2" );
+
+
+ harness.check(!( !Double.isNaN(Double.longBitsToDouble( 0xfff8000000000000L ))),
+ "test_longBitsToDouble - 3" );
+
+ harness.check(!( !Double.isNaN(Double.longBitsToDouble( 0x7ffffff000000000L ))),
+ "test_longBitsToDouble - 4" );
+
+ harness.check(!( !Double.isNaN(Double.longBitsToDouble( 0xfff8000020000001L ))),
+ "test_longBitsToDouble - 5" );
+
+ harness.check(!( !Double.isNaN(Double.longBitsToDouble( 0xfffffffffffffff1L ))),
+ "test_longBitsToDouble - 6" );
+
+ double fl1 = Double.longBitsToDouble( 0x34343f33 );
+
+ if ( Double.doubleToLongBits(fl1) != 0x34343f33 ) {
+ harness.fail("test_longBitsToDouble - 7" );
+ System.out.println("Expected: " + Long.toHexString(0x34343f33));
+ System.out.println("Got: " + Long.toHexString(Double.doubleToLongBits(fl1)));
+ }
+
+ harness.check(!( Double.doubleToLongBits( Double.longBitsToDouble(0x33439943)) != 0x33439943 ),
+ "test_longBitsToDouble - 8");
+ }
+
+ public void check_remainder( double val, double val1 ,
+ double ret , int errno )
+ {
+ double res = val % val1;
+ harness.check(!( res < ret - 0.001 || res > ret + 0.001 ),
+ "test_remainder " + errno );
+ }
+
+ public void check_remainder_NaN( double val, double val1 ,
+ int errno )
+ {
+ double res = val % val1;
+ if (!Double.isNaN(res)) {
+ harness.fail("test_remainder " +
+ errno);
+ }
+ }
+
+ public void test_remainder( )
+ {
+ check_remainder(15.2 , 1.0 , 0.2, 1 );
+ check_remainder(2345.2432 , 1.2 ,0.44319999999997 , 2 );
+ check_remainder(20.56 , 1.87 ,1.8600000000000 , 3 );
+ check_remainder(0.0 , 1.2 , 0.00000000000000 , 4 );
+ check_remainder(1000 , 10 , 0.00000000000000 , 5 );
+ check_remainder(234.332 , 134.34 , 99.992000000000 , 6 );
+ check_remainder(1.0 , 1.0, 0.0 , 7 );
+ check_remainder(45.0 , 5.0, 0.0 , 8 );
+ check_remainder(1.25 , 0.50 , 0.25 , 9 );
+ check_remainder(12345.678, 1234.5678, 1234.5678000000 , 10 );
+
+ if (!System.getProperty("os.name").equals("VxWorks")){
+ // bug EJWcr00686, has not been fixed yet.
+ // Test is disabled for smallvm 2.0.1 release.
+ check_remainder(Double.MAX_VALUE , Double.MIN_VALUE , 0.00000000000000 , 11 );
+ }
+
+ check_remainder(0.0 , 999.99, 0.00000000000000 , 12 );
+ check_remainder(123.0 , 25.0 , 23.0 , 13 );
+ check_remainder(15.0 , 1.5 , 0.00 , 14 );
+ check_remainder_NaN(Double.NaN, 1.5 , 15 );
+ check_remainder_NaN(1.5, Double.NaN, 16 );
+ check_remainder_NaN(Double.NaN, 0, 17 );
+ check_remainder_NaN(0, Double.NaN, 18 );
+ check_remainder_NaN(Double.POSITIVE_INFINITY, 1.5, 19 );
+ check_remainder_NaN(Double.NEGATIVE_INFINITY, 1.5, 20 );
+ check_remainder_NaN(1.5, 0, 21 );
+ check_remainder_NaN(Double.POSITIVE_INFINITY, 0, 22 );
+ check_remainder_NaN(Double.NEGATIVE_INFINITY, 0, 23 );
+ // EJWcr00505
+ check_remainder(15.0 , Double.POSITIVE_INFINITY, 15.0 , 24 );
+ check_remainder(-15.0 , Double.POSITIVE_INFINITY, -15.0 , 25 );
+ check_remainder(0.0 , Double.POSITIVE_INFINITY, 0.0 , 26 );
+ check_remainder(-0.0 , Double.POSITIVE_INFINITY, -0.0 , 27 );
+ check_remainder(0.1 , Double.POSITIVE_INFINITY, 0.1 , 28 );
+ check_remainder(-0.1 , Double.POSITIVE_INFINITY, -0.1 , 29 );
+
+ check_remainder(15.0 , Double.NEGATIVE_INFINITY, 15.0 , 30 );
+ check_remainder(-15.0 , Double.NEGATIVE_INFINITY, -15.0 , 31 );
+ check_remainder(0.0 , Double.NEGATIVE_INFINITY, 0.0 , 32 );
+ check_remainder(-0.0 , Double.NEGATIVE_INFINITY, -0.0 , 33 );
+ check_remainder(0.1 , Double.NEGATIVE_INFINITY, 0.1 , 34 );
+ check_remainder(-0.1 , Double.NEGATIVE_INFINITY, -0.1 , 35 );
+
+
+ }
+
+ public void test_shortbyteValue()
+ {
+ Double d1 = new Double( 123.35 );
+ Double d2 = new Double( 400.35 );
+ Double d3 = new Double(0.0 );
+
+ harness.check(!( d1.shortValue() != 123 ),
+ "test_shortbyteValue - 1" );
+ harness.check(!( d2.shortValue() != 400 ),
+ "test_shortbyteValue - 2" );
+ harness.check(!( d3.shortValue() != 0 ),
+ "test_shortbyteValue - 3" );
+
+ harness.check(!( d1.byteValue() != 123 ),
+ "test_shortbyteValue - 4" );
+ harness.check(!( d2.byteValue() != (byte) 400 ),
+ "test_shortbyteValue - 5" );
+ harness.check(!( d3.byteValue() != 0 ),
+ "test_shortbyteValue - 6" );
+
+ }
+
+ public void test_neg() {
+ double zero = 0.0;
+ String zero1 = String.valueOf(zero);
+ if (!zero1.equals("0.0")) {
+ harness.fail("test_neg - 1");
+ }
+
+ zero = -zero;
+ String zero2 = String.valueOf(zero);
+ if (!zero2.equals("-0.0")) {
+ harness.fail("test_neg - 2");
+ System.out.println("Expected -0.0, got: " + zero2);
+ }
+
+ zero = -zero;
+ String zero3 = String.valueOf(zero);
+ if (!zero3.equals("0.0")) {
+ harness.fail("test_neg - 3");
+ }
+
+ double nonzero = -21.23;
+ String nonzero1 = String.valueOf(nonzero);
+ if (!nonzero1.equals("-21.23")) {
+ harness.fail("test_neg - 4");
+ }
+
+ nonzero = -nonzero;
+ String nonzero2 = String.valueOf(nonzero);
+ if (!nonzero2.equals("21.23")) {
+ harness.fail("test_neg - 5");
+ }
+
+ nonzero = -nonzero;
+ String nonzero3 = String.valueOf(nonzero);
+ if (!nonzero3.equals("-21.23")) {
+ harness.fail("test_neg - 6");
+ }
+ }
+ public void testall()
+ {
+ test_Basics();
+ test_remainder();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_intValue();
+ test_longValue();
+ test_DoubleValue();
+ test_doubleValue();
+ test_floatValue();
+ test_shortbyteValue();
+ test_valueOf();
+ test_parseDouble();
+ test_doubleToLongBits();
+ test_longBitsToDouble();
+ test_neg();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Double/classInfo/CVS/Entries b/gnu/testlet/java/lang/Double/classInfo/CVS/Entries
new file mode 100644
index 00000000..f63c3fb3
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Mon May 7 15:29:31 2012//
+/getInterfaces.java/1.1/Mon May 7 15:29:31 2012//
+/getModifiers.java/1.1/Mon May 7 15:29:31 2012//
+/getName.java/1.1/Mon May 7 15:29:31 2012//
+/getPackage.java/1.1/Mon May 7 15:29:31 2012//
+/getSimpleName.java/1.1/Mon May 7 15:29:31 2012//
+/getSuperclass.java/1.1/Mon May 7 15:29:31 2012//
+/isAnnotation.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnnotationPresent.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnonymousClass.java/1.1/Wed Sep 19 08:54:38 2012//
+/isArray.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAssignableFrom.java/1.1/Mon May 7 15:29:31 2012//
+/isEnum.java/1.1/Wed Sep 19 08:54:38 2012//
+/isInstance.java/1.1/Mon May 7 15:29:31 2012//
+/isInterface.java/1.1/Mon May 7 15:29:31 2012//
+/isLocalClass.java/1.1/Mon May 7 15:29:31 2012//
+/isMemberClass.java/1.1/Mon May 7 15:29:31 2012//
+/isPrimitive.java/1.1/Mon May 7 15:29:31 2012//
+/isSynthetic.java/1.1/Mon May 7 15:29:31 2012//
+D
diff --git a/gnu/testlet/java/lang/Double/classInfo/CVS/Repository b/gnu/testlet/java/lang/Double/classInfo/CVS/Repository
new file mode 100644
index 00000000..39b04958
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Double/classInfo
diff --git a/gnu/testlet/java/lang/Double/classInfo/CVS/Root b/gnu/testlet/java/lang/Double/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Double/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Double/classInfo/InstanceOf.java
new file mode 100644
index 00000000..00d5fc28
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Double
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Double
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Double o = new Double(42.0);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Double);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Double/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ad5ab099
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Double.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getModifiers.java b/gnu/testlet/java/lang/Double/classInfo/getModifiers.java
new file mode 100644
index 00000000..398ed10b
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Double.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getName.java b/gnu/testlet/java/lang/Double/classInfo/getName.java
new file mode 100644
index 00000000..1471d4e8
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Double");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getPackage.java b/gnu/testlet/java/lang/Double/classInfo/getPackage.java
new file mode 100644
index 00000000..29d4d8c7
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Double.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Double/classInfo/getSimpleName.java
new file mode 100644
index 00000000..18efe0fa
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Double");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Double/classInfo/getSuperclass.java
new file mode 100644
index 00000000..27f438db
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Double.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Double/classInfo/isAnnotation.java
new file mode 100644
index 00000000..78153ea0
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Double/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..15dd72a5
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Double.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Double/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..13bcd1f1
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isArray.java b/gnu/testlet/java/lang/Double/classInfo/isArray.java
new file mode 100644
index 00000000..763efeaf
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Double/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..fcd547a8
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Double.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isEnum.java b/gnu/testlet/java/lang/Double/classInfo/isEnum.java
new file mode 100644
index 00000000..f0a56ef7
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isInstance.java b/gnu/testlet/java/lang/Double/classInfo/isInstance.java
new file mode 100644
index 00000000..66bc2e46
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Double(42.0)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isInterface.java b/gnu/testlet/java/lang/Double/classInfo/isInterface.java
new file mode 100644
index 00000000..56a7a8a8
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Double/classInfo/isLocalClass.java
new file mode 100644
index 00000000..5a1009b0
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Double/classInfo/isMemberClass.java
new file mode 100644
index 00000000..b75f6072
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Double/classInfo/isPrimitive.java
new file mode 100644
index 00000000..17d513b2
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Double/classInfo/isSynthetic.java
new file mode 100644
index 00000000..b9ce835f
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Double.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Double.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Double;
+
+
+
+/**
+ * Test for method java.lang.Double.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Double(42.0);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/compare.java b/gnu/testlet/java/lang/Double/compare.java
new file mode 100644
index 00000000..3fdb02ab
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/compare.java
@@ -0,0 +1,60 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for the compare() method in the {@link Double} class.
+ */
+public class compare implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Double.compare(0.0, 1.0) < 0);
+ harness.check(Double.compare(0.0, 0.0) == 0);
+ harness.check(Double.compare(1.0, 0.0) > 0);
+
+ harness.check(Double.compare(Double.POSITIVE_INFINITY, 0.0) > 0);
+ harness.check(Double.compare(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY) == 0);
+ harness.check(Double.compare(0.0f, Double.POSITIVE_INFINITY) < 0);
+
+ harness.check(Double.compare(Double.NEGATIVE_INFINITY, 0.0) < 0);
+ harness.check(Double.compare(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY) == 0);
+ harness.check(Double.compare(0.0, Double.NEGATIVE_INFINITY) > 0);
+
+ harness.check(Double.compare(Double.NaN, 0.0) > 0);
+ harness.check(Double.compare(Double.NaN, Double.NaN) == 0);
+ harness.check(Double.compare(0.0f, Double.NaN) < 0);
+
+ harness.check(Double.compare(0.0, -0.0) > 0);
+ harness.check(Double.compare(-0.0, 0.0) < 0);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/lang/Double/compareTo.java b/gnu/testlet/java/lang/Double/compareTo.java
new file mode 100644
index 00000000..5a926d59
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/compareTo.java
@@ -0,0 +1,123 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for the compareTo() method in the {@link Float} class.
+ */
+public class compareTo implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Double)");
+ Double d1 = new Double(Double.NEGATIVE_INFINITY);
+ Double d2 = new Double(-1.0);
+ Double d3 = new Double(0.0);
+ Double d4 = new Double(1.0);
+ Double d5 = new Double(Double.POSITIVE_INFINITY);
+
+ harness.check(d1.compareTo(d1) == 0);
+ harness.check(d1.compareTo(d2) < 0);
+ harness.check(d1.compareTo(d3) < 0);
+ harness.check(d1.compareTo(d4) < 0);
+ harness.check(d1.compareTo(d5) < 0);
+
+ harness.check(d2.compareTo(d1) > 0);
+ harness.check(d2.compareTo(d2) == 0);
+ harness.check(d2.compareTo(d3) < 0);
+ harness.check(d2.compareTo(d4) < 0);
+ harness.check(d2.compareTo(d5) < 0);
+
+ harness.check(d3.compareTo(d1) > 0);
+ harness.check(d3.compareTo(d2) > 0);
+ harness.check(d3.compareTo(d3) == 0);
+ harness.check(d3.compareTo(d4) < 0);
+ harness.check(d3.compareTo(d5) < 0);
+
+ harness.check(d4.compareTo(d1) > 0);
+ harness.check(d4.compareTo(d2) > 0);
+ harness.check(d4.compareTo(d3) > 0);
+ harness.check(d4.compareTo(d4) == 0);
+ harness.check(d4.compareTo(d5) < 0);
+
+ harness.check(d5.compareTo(d1) > 0);
+ harness.check(d5.compareTo(d2) > 0);
+ harness.check(d5.compareTo(d3) > 0);
+ harness.check(d5.compareTo(d4) > 0);
+ harness.check(d5.compareTo(d5) == 0);
+
+ boolean pass = false;
+ try
+ {
+ ((Comparable)d1).compareTo((Float) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Object)");
+ Double d1 = new Double(Double.NEGATIVE_INFINITY);
+
+ boolean pass = false;
+ try
+ {
+ ((Comparable)d1).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ((Comparable)d1).compareTo("Not a Double!");
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/lang/Double/compareToObject.java b/gnu/testlet/java/lang/Double/compareToObject.java
new file mode 100644
index 00000000..11b2f3f0
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/compareToObject.java
@@ -0,0 +1,105 @@
+// Test of Double method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4 -target 1.4
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Double.compareTo(Object);
+ */
+public class compareToObject implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Double i1, Object o, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(o);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ Object o = new Double("0.0");
+
+ harness.check(((Comparable)new Double("0.0")).compareTo(o) == 0);
+
+ boolean ok = false;
+ try
+ {
+ new Double("0.0").compareTo((Double) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("negative test");
+ try {
+ Double a;
+ Byte b;
+ a = new Double(0.1);
+ b = new Byte((byte)1);
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ Double a;
+ String b;
+ a = new Double(0.1);
+ b = "foobar";
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/doubleToInt.java b/gnu/testlet/java/lang/Double/doubleToInt.java
new file mode 100644
index 00000000..b3cf3d8a
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/doubleToInt.java
@@ -0,0 +1,93 @@
+// Test the conversion between double and int.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the conversion between double and int.
+ */
+public class doubleToInt implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testZero(harness);
+ testPositiveValue(harness);
+ testNegativeValue(harness);
+ testNaN(harness);
+ testPositiveInfinity(harness);
+ testNegativeInfinity(harness);
+ }
+
+ public void testZero(TestHarness harness)
+ {
+ double value = 0.0D;
+ boolean result = (int)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveValue(TestHarness harness)
+ {
+ double value = 123.456D;
+ boolean result = (int)value == 123;
+ harness.check(result);
+
+ value = 456.789D;
+ result = (int)value == 456;
+ harness.check(result);
+ }
+
+ public void testNegativeValue(TestHarness harness)
+ {
+ double value = -123.456D;
+ boolean result = (int)value == -123;
+ harness.check(result);
+
+ value = -456.789D;
+ result = (int)value == -456;
+ harness.check(result);
+ }
+
+ public void testNaN(TestHarness harness)
+ {
+ double value = 0.0D / 0.0D;
+ boolean result = (int)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveInfinity(TestHarness harness)
+ {
+ double value = 100.0D / 0.0D;
+ boolean result = (int)value == 0x7fffffff;
+ harness.check(result);
+ }
+
+ public void testNegativeInfinity(TestHarness harness)
+ {
+ double value = -100.0D / 0.0D;
+ boolean result = (int)value == 0x80000000;
+ harness.check(result);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/doubleToLong.java b/gnu/testlet/java/lang/Double/doubleToLong.java
new file mode 100644
index 00000000..2c61f1c3
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/doubleToLong.java
@@ -0,0 +1,93 @@
+// Test the conversion between double and long.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the conversion between double and long.
+ */
+public class doubleToLong implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testZero(harness);
+ testPositiveValue(harness);
+ testNegativeValue(harness);
+ testNaN(harness);
+ testPositiveInfinity(harness);
+ testNegativeInfinity(harness);
+ }
+
+ public void testZero(TestHarness harness)
+ {
+ double value = 0.0D;
+ boolean result = (long)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveValue(TestHarness harness)
+ {
+ double value = 123.456D;
+ boolean result = (long)value == 123;
+ harness.check(result);
+
+ value = 456.789D;
+ result = (long)value == 456;
+ harness.check(result);
+ }
+
+ public void testNegativeValue(TestHarness harness)
+ {
+ double value = -123.456D;
+ boolean result = (long)value == -123;
+ harness.check(result);
+
+ value = -456.789D;
+ result = (long)value == -456;
+ harness.check(result);
+ }
+
+ public void testNaN(TestHarness harness)
+ {
+ double value = 0.0D / 0.0D;
+ boolean result = (long)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveInfinity(TestHarness harness)
+ {
+ double value = 100.0D / 0.0D;
+ boolean result = (long)value == 0x7fffffffffffffffL;
+ harness.check(result);
+ }
+
+ public void testNegativeInfinity(TestHarness harness)
+ {
+ double value = -100.0D / 0.0D;
+ boolean result = (long)value == 0x8000000000000000L;
+ harness.check(result);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/doubleToLongBits.java b/gnu/testlet/java/lang/Double/doubleToLongBits.java
new file mode 100644
index 00000000..ae11a8b2
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/doubleToLongBits.java
@@ -0,0 +1,51 @@
+// Test of Double method doubleToLongBits(double).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Double.doubleToLongBits(double);
+ */
+public class doubleToLongBits implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(0x0000000000000000L, Double.doubleToLongBits(0));
+ harness.check(0x3ff0000000000000L, Double.doubleToLongBits(1));
+ harness.check(0x4000000000000000L, Double.doubleToLongBits(2));
+ harness.check(0x408f400000000000L, Double.doubleToLongBits(1000));
+ harness.check(0xbff0000000000000L, Double.doubleToLongBits(-1));
+ harness.check(0xc000000000000000L, Double.doubleToLongBits(-2));
+ harness.check(0xc08f400000000000L, Double.doubleToLongBits(-1000));
+ harness.check(0x7ff0000000000000L, Double.doubleToLongBits(Double.POSITIVE_INFINITY));
+ harness.check(0xfff0000000000000L, Double.doubleToLongBits(Double.NEGATIVE_INFINITY));
+ harness.check(0x7fefffffffffffffL, Double.doubleToLongBits(Double.MAX_VALUE));
+ harness.check(0x0000000000000001L, Double.doubleToLongBits(Double.MIN_VALUE));
+ harness.check(0xffefffffffffffffL, Double.doubleToLongBits(-Double.MAX_VALUE));
+ harness.check(0x8000000000000001L, Double.doubleToLongBits(-Double.MIN_VALUE));
+ harness.check(0x7ff8000000000000L, Double.doubleToLongBits(Double.NaN));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/doubleToRawLongBits.java b/gnu/testlet/java/lang/Double/doubleToRawLongBits.java
new file mode 100644
index 00000000..bd29209f
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/doubleToRawLongBits.java
@@ -0,0 +1,51 @@
+// Test of Double method doubleToRawLongBits(double).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Double.doubleToRawLongBits(double);
+ */
+public class doubleToRawLongBits implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(0x0000000000000000L, Double.doubleToRawLongBits(0));
+ harness.check(0x3ff0000000000000L, Double.doubleToRawLongBits(1));
+ harness.check(0x4000000000000000L, Double.doubleToRawLongBits(2));
+ harness.check(0x408f400000000000L, Double.doubleToRawLongBits(1000));
+ harness.check(0xbff0000000000000L, Double.doubleToRawLongBits(-1));
+ harness.check(0xc000000000000000L, Double.doubleToRawLongBits(-2));
+ harness.check(0xc08f400000000000L, Double.doubleToRawLongBits(-1000));
+ harness.check(0x7ff0000000000000L, Double.doubleToRawLongBits(Double.POSITIVE_INFINITY));
+ harness.check(0xfff0000000000000L, Double.doubleToRawLongBits(Double.NEGATIVE_INFINITY));
+ harness.check(0x7fefffffffffffffL, Double.doubleToRawLongBits(Double.MAX_VALUE));
+ harness.check(0x0000000000000001L, Double.doubleToRawLongBits(Double.MIN_VALUE));
+ harness.check(0xffefffffffffffffL, Double.doubleToRawLongBits(-Double.MAX_VALUE));
+ harness.check(0x8000000000000001L, Double.doubleToRawLongBits(-Double.MIN_VALUE));
+ harness.check(0x7ff8000000000000L, Double.doubleToRawLongBits(Double.NaN));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/new_Double.java b/gnu/testlet/java/lang/Double/new_Double.java
new file mode 100644
index 00000000..e6e4bd7f
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/new_Double.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Double;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Double implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Some broken implementations convert "7.79625120912E289" to
+ // the value 7.796251209119999E289.
+ harness.check (new Double("7.79625120912E289").toString (),
+ "7.79625120912E289");
+
+ // A few simple test cases.
+ harness.check (new Double(22.0/7.0).toString (), "3.142857142857143");
+ harness.check (new Double(Math.PI).toString (), "3.141592653589793");
+ harness.check (Double.valueOf (new Double(Math.PI).toString ()),
+ new Double(Math.PI));
+ harness.check (Double.valueOf (new Double(-Math.PI).toString ()),
+ new Double(-Math.PI));
+ harness.check (new Double(Double.MAX_VALUE).toString (),
+ "1.7976931348623157E308");
+ harness.check (new Double(-Double.MAX_VALUE).toString (),
+ "-1.7976931348623157E308");
+ harness.check (new Double(Double.POSITIVE_INFINITY).toString (),
+ "Infinity");
+ harness.check (new Double(-Double.POSITIVE_INFINITY).toString (),
+ "-Infinity");
+ harness.check (new Double(Double.NaN).toString (),
+ "NaN");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Double/parseDouble.java b/gnu/testlet/java/lang/Double/parseDouble.java
new file mode 100644
index 00000000..6b592c3a
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/parseDouble.java
@@ -0,0 +1,172 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the parseDouble() method in the {@link Double} class.
+ */
+public class parseDouble implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testRegular(harness);
+ testInfinities(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Tests some regular values.
+ *
+ * @param harness the test harness.
+ */
+ public void testRegular(TestHarness harness)
+ {
+ harness.check(Double.parseDouble("1.0"), 1.0);
+ harness.check(Double.parseDouble("+1.0"), 1.0);
+ harness.check(Double.parseDouble("-1.0"), -1.0);
+ harness.check(Double.parseDouble(" 1.0 "), 1.0);
+ harness.check(Double.parseDouble(" -1.0 "), -1.0);
+
+ harness.check(Double.parseDouble("2."), 2.0);
+ harness.check(Double.parseDouble(".3"), 0.3);
+ harness.check(Double.parseDouble("1e-9"), 1e-9);
+ harness.check(Double.parseDouble("1e137"), 1e137);
+
+ // test some bad formats
+ try
+ {
+ /* double d = */ Double.parseDouble("");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* double d = */ Double.parseDouble("X");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* double d = */ Double.parseDouble("e");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* double d = */ Double.parseDouble("+ 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* double d = */ Double.parseDouble("- 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ // null argument should throw NullPointerException
+ try
+ {
+ /* double d = */ Double.parseDouble(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Some checks for values that should parse to Double.POSITIVE_INFINITY
+ * or Double.NEGATIVE_INFINITY.
+ *
+ * @param harness the test harness.
+ */
+ public void testInfinities(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Double.parseDouble("Infinity"), Double.POSITIVE_INFINITY);
+ harness.check(Double.parseDouble("+Infinity"), Double.POSITIVE_INFINITY);
+ harness.check(Double.parseDouble("-Infinity"), Double.NEGATIVE_INFINITY);
+ harness.check(Double.parseDouble(" +Infinity "), Double.POSITIVE_INFINITY);
+ harness.check(Double.parseDouble(" -Infinity "), Double.NEGATIVE_INFINITY);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ harness.check(Double.parseDouble("1e1000"), Double.POSITIVE_INFINITY);
+ harness.check(Double.parseDouble("-1e1000"), Double.NEGATIVE_INFINITY);
+ }
+
+ /**
+ * Some checks for 'NaN' values.
+ *
+ * @param harness the test harness.
+ */
+ public void testNaN(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Double.isNaN(Double.parseDouble("NaN")));
+ harness.check(Double.isNaN(Double.parseDouble("+NaN")));
+ harness.check(Double.isNaN(Double.parseDouble("-NaN")));
+ harness.check(Double.isNaN(Double.parseDouble(" +NaN ")));
+ harness.check(Double.isNaN(Double.parseDouble(" -NaN ")));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Double/toHexString.java b/gnu/testlet/java/lang/Double/toHexString.java
new file mode 100644
index 00000000..f742ea63
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/toHexString.java
@@ -0,0 +1,72 @@
+/* toHexString.java -- test Double.toHexString
+ Copyright (C) 2005 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Tom Tromey
+ * @author Pavel Tisnovsky (ptisnovs at redhat dot com)
+ */
+public class toHexString implements Testlet {
+
+ public void test(TestHarness harness) {
+ // special cases
+ harness.check(Double.toHexString(Double.NaN), "NaN");
+ harness.check(Double.toHexString(Double.NEGATIVE_INFINITY), "-Infinity");
+ harness.check(Double.toHexString(Double.POSITIVE_INFINITY), "Infinity");
+ harness.check(Double.toHexString(0.0), "0x0.0p0");
+ harness.check(Double.toHexString(-0.0), "-0x0.0p0");
+
+ // normalized values
+ harness.check(Double.toHexString(0.125), "0x1.0p-3");
+ harness.check(Double.toHexString(0.25), "0x1.0p-2");
+ harness.check(Double.toHexString(0.5), "0x1.0p-1");
+ harness.check(Double.toHexString(1.0), "0x1.0p0");
+ harness.check(Double.toHexString(2.0), "0x1.0p1");
+ harness.check(Double.toHexString(4.0), "0x1.0p2");
+ harness.check(Double.toHexString(8.0), "0x1.0p3");
+ harness.check(Double.toHexString(65536.0), "0x1.0p16");
+ // 2^10
+ harness.check(Double.toHexString(1024.0), "0x1.0p10");
+ // 2^20
+ harness.check(Double.toHexString(1048576.0), "0x1.0p20");
+ // 2^30
+ harness.check(Double.toHexString(1073741824.0), "0x1.0p30");
+
+ // well-known problematic case
+ //harness.check(Double.toHexString(0.1), "0x1.999999999999ap-4");
+
+ // subnormalized values
+ harness.check(Double.toHexString( Double.longBitsToDouble(0x0010000000000000L)), "0x1.0p-1022");
+ harness.check(Double.toHexString(-Double.longBitsToDouble(0x0010000000000000L)), "-0x1.0p-1022");
+
+ // max and min representable values
+ harness.check(Double.toHexString( Double.MAX_VALUE), "0x1.fffffffffffffp1023");
+ harness.check(Double.toHexString(-Double.MAX_VALUE), "-0x1.fffffffffffffp1023");
+ harness.check(Double.toHexString( Double.MIN_VALUE), "0x0.0000000000001p-1022");
+ harness.check(Double.toHexString(-Double.MAX_VALUE), "-0x1.fffffffffffffp1023");
+ }
+}
diff --git a/gnu/testlet/java/lang/Double/valueOf.java b/gnu/testlet/java/lang/Double/valueOf.java
new file mode 100644
index 00000000..65a9be72
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/valueOf.java
@@ -0,0 +1,172 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the valueOf() method in the {@link Double} class.
+ */
+public class valueOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testRegular(harness);
+ testInfinities(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Tests some regular values.
+ *
+ * @param harness the test harness.
+ */
+ public void testRegular(TestHarness harness)
+ {
+ harness.check(Double.valueOf("1.0"), new Double(1.0));
+ harness.check(Double.valueOf("+1.0"), new Double(1.0));
+ harness.check(Double.valueOf("-1.0"), new Double(-1.0));
+ harness.check(Double.valueOf(" 1.0 "), new Double(1.0));
+ harness.check(Double.valueOf(" -1.0 "), new Double(-1.0));
+
+ harness.check(Double.valueOf("2."), new Double(2.0));
+ harness.check(Double.valueOf(".3"), new Double(0.3));
+ harness.check(Double.valueOf("1e-9"), new Double(1e-9));
+ harness.check(Double.valueOf("1e137"), new Double(1e137));
+
+ // test some bad formats
+ try
+ {
+ /* Double d = */ Double.valueOf("");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Double d = */ Double.valueOf("X");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Double d = */ Double.valueOf("e");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Double d = */ Double.valueOf("+ 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Double d = */ Double.valueOf("- 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ // null argument should throw NullPointerException
+ try
+ {
+ /* Double d = */ Double.valueOf(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Some checks for values that should parse to Double.POSITIVE_INFINITY
+ * or Double.NEGATIVE_INFINITY.
+ *
+ * @param harness the test harness.
+ */
+ public void testInfinities(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Double.valueOf("Infinity"), new Double(Double.POSITIVE_INFINITY));
+ harness.check(Double.valueOf("+Infinity"), new Double(Double.POSITIVE_INFINITY));
+ harness.check(Double.valueOf("-Infinity"), new Double(Double.NEGATIVE_INFINITY));
+ harness.check(Double.valueOf(" +Infinity "), new Double(Double.POSITIVE_INFINITY));
+ harness.check(Double.valueOf(" -Infinity "), new Double(Double.NEGATIVE_INFINITY));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ harness.check(Double.valueOf("1e1000"), new Double(Double.POSITIVE_INFINITY));
+ harness.check(Double.valueOf("-1e1000"), new Double(Double.NEGATIVE_INFINITY));
+ }
+
+ /**
+ * Some checks for 'NaN' values.
+ *
+ * @param harness the test harness.
+ */
+ public void testNaN(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Double.isNaN(Double.valueOf("NaN").doubleValue()));
+ harness.check(Double.isNaN(Double.valueOf("+NaN").doubleValue()));
+ harness.check(Double.isNaN(Double.valueOf("-NaN").doubleValue()));
+ harness.check(Double.isNaN(Double.valueOf(" +NaN ").doubleValue()));
+ harness.check(Double.isNaN(Double.valueOf(" -NaN ").doubleValue()));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Double/valueOfDouble.java b/gnu/testlet/java/lang/Double/valueOfDouble.java
new file mode 100644
index 00000000..05fa8f10
--- /dev/null
+++ b/gnu/testlet/java/lang/Double/valueOfDouble.java
@@ -0,0 +1,87 @@
+// Test of Double method valueOf(double).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4 -target 1.4
+
+package gnu.testlet.java.lang.Double;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the valueOf(double) method in the {@link Double} class.
+ */
+public class valueOfDouble implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testRegular(harness);
+ testInfinities(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Tests some regular values.
+ *
+ * @param harness the test harness.
+ */
+ public void testRegular(TestHarness harness)
+ {
+ harness.check(Double.valueOf(1.0), new Double(1.0));
+ harness.check(Double.valueOf(+1.0), new Double(1.0));
+ harness.check(Double.valueOf(-1.0), new Double(-1.0));
+
+ harness.check(Double.valueOf(42.), new Double(42.0));
+ harness.check(Double.valueOf(.42), new Double(0.42));
+ harness.check(Double.valueOf(Double.MIN_VALUE), new Double(Double.MIN_VALUE));
+ harness.check(Double.valueOf(Double.MAX_VALUE), new Double(Double.MAX_VALUE));
+ }
+
+ /**
+ * Some checks for values that should be read as Double.POSITIVE_INFINITY
+ * or Double.NEGATIVE_INFINITY.
+ *
+ * @param harness the test harness.
+ */
+ public void testInfinities(TestHarness harness)
+ {
+ harness.check(Double.valueOf(Double.POSITIVE_INFINITY), new Double(Double.POSITIVE_INFINITY));
+ harness.check(Double.valueOf(Double.NEGATIVE_INFINITY), new Double(Double.NEGATIVE_INFINITY));
+ }
+
+ /**
+ * Some checks for 'NaN' values.
+ *
+ * @param harness the test harness.
+ */
+ public void testNaN(TestHarness harness)
+ {
+ harness.check(Double.valueOf(Double.NaN), new Double(Double.NaN));
+ harness.check(Double.valueOf(-Double.NaN), new Double(Double.NaN));
+ harness.check(Double.valueOf(+Double.NaN), new Double(Double.NaN));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Enum/CVS/Entries b/gnu/testlet/java/lang/Enum/CVS/Entries
new file mode 100644
index 00000000..66aae90e
--- /dev/null
+++ b/gnu/testlet/java/lang/Enum/CVS/Entries
@@ -0,0 +1,2 @@
+/PR33183.java/1.1/Mon Aug 25 15:13:15 2008//
+D
diff --git a/gnu/testlet/java/lang/Enum/CVS/Repository b/gnu/testlet/java/lang/Enum/CVS/Repository
new file mode 100644
index 00000000..52953515
--- /dev/null
+++ b/gnu/testlet/java/lang/Enum/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Enum
diff --git a/gnu/testlet/java/lang/Enum/CVS/Root b/gnu/testlet/java/lang/Enum/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Enum/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Enum/PR33183.java b/gnu/testlet/java/lang/Enum/PR33183.java
new file mode 100644
index 00000000..53e003b4
--- /dev/null
+++ b/gnu/testlet/java/lang/Enum/PR33183.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2008 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.lang.Enum;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class PR33183
+ implements Testlet
+{
+ static enum E { A, B, C }
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ E e = E.valueOf("A");
+ harness.check(e.toString().equals("A"));
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail(e.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries
new file mode 100644
index 00000000..7efe38d6
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jun 27 14:00:17 2012//
+/constructor.java/1.1/Wed Jun 27 14:00:17 2012//
+D
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries.Log b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Repository b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Repository
new file mode 100644
index 00000000..f5372de9
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/EnumConstantNotPresentException
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Root b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/TryCatch.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/TryCatch.java
new file mode 100644
index 00000000..589b0e70
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/TryCatch.java
@@ -0,0 +1,57 @@
+// Test if try-catch block is working properly for a class java.lang.EnumConstantNotPresentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.EnumConstantNotPresentException
+ */
+public class TryCatch implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+ }
+ catch (EnumConstantNotPresentException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Entries b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Entries
new file mode 100644
index 00000000..edfafbd5
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jun 27 14:00:17 2012//
+/getInterfaces.java/1.1/Wed Jun 27 14:00:17 2012//
+/getModifiers.java/1.1/Wed Jun 27 14:00:17 2012//
+/getName.java/1.1/Wed Jun 27 14:00:17 2012//
+/getPackage.java/1.1/Wed Jun 27 14:00:17 2012//
+/getSimpleName.java/1.1/Wed Jun 27 14:00:17 2012//
+/getSuperclass.java/1.1/Wed Jun 27 14:00:17 2012//
+/isAssignableFrom.java/1.1/Wed Jun 27 14:00:17 2012//
+/isInstance.java/1.1/Wed Jun 27 14:00:17 2012//
+/isInterface.java/1.1/Wed Jun 27 14:00:17 2012//
+/isLocalClass.java/1.1/Wed Jun 27 14:00:17 2012//
+/isMemberClass.java/1.1/Wed Jun 27 14:00:17 2012//
+/isPrimitive.java/1.1/Wed Jun 27 14:00:17 2012//
+/isSynthetic.java/1.1/Wed Jun 27 14:00:17 2012//
+D
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Repository b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Repository
new file mode 100644
index 00000000..63b0b448
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Root b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..e589ad48
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/InstanceOf.java
@@ -0,0 +1,62 @@
+// Test for instanceof operator applied to a class java.lang.EnumConstantNotPresentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.EnumConstantNotPresentException
+ */
+public class InstanceOf implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class EnumConstantNotPresentException
+ EnumConstantNotPresentException o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof EnumConstantNotPresentException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..5e091691
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getModifiers.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getModifiers.java
new file mode 100644
index 00000000..274c9ecd
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getModifiers.java
@@ -0,0 +1,67 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getName.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getName.java
new file mode 100644
index 00000000..581958db
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getName.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.EnumConstantNotPresentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getPackage.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getPackage.java
new file mode 100644
index 00000000..a3df97b3
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getPackage.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..5eff38de
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSimpleName.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "EnumConstantNotPresentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..98bb95bf
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/getSuperclass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..1cf09556
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isAssignableFrom.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(EnumConstantNotPresentException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInstance.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInstance.java
new file mode 100644
index 00000000..fc676436
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInstance.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInterface.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInterface.java
new file mode 100644
index 00000000..b856db9a
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isInterface.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..c5d88663
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isLocalClass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..817e8e2e
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isMemberClass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..590df231
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isPrimitive.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..b7d525be
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/classInfo/isSynthetic.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.EnumConstantNotPresentException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.EnumConstantNotPresentException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EnumConstantNotPresentException(X.class, "EnumConstantNotPresentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/EnumConstantNotPresentException/constructor.java b/gnu/testlet/java/lang/EnumConstantNotPresentException/constructor.java
new file mode 100644
index 00000000..e170ac7a
--- /dev/null
+++ b/gnu/testlet/java/lang/EnumConstantNotPresentException/constructor.java
@@ -0,0 +1,56 @@
+// Test if instances of a class java.lang.EnumConstantNotPresentException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.EnumConstantNotPresentException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.EnumConstantNotPresentException;
+
+
+
+/**
+ * Test if instances of a class java.lang.EnumConstantNotPresentException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+ enum X {ONE, TWO, THREE};
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ EnumConstantNotPresentException object1 = new EnumConstantNotPresentException(X.class, "nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString().startsWith("java.lang.EnumConstantNotPresentException"));
+
+ EnumConstantNotPresentException object2 = new EnumConstantNotPresentException(X.class, null);
+ harness.check(object2 != null);
+ harness.check(object2.toString().startsWith("java.lang.EnumConstantNotPresentException"));
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/CVS/Entries b/gnu/testlet/java/lang/Error/CVS/Entries
new file mode 100644
index 00000000..4116e5e5
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Mon May 28 09:55:07 2012//
+D
diff --git a/gnu/testlet/java/lang/Error/CVS/Entries.Log b/gnu/testlet/java/lang/Error/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Error/CVS/Repository b/gnu/testlet/java/lang/Error/CVS/Repository
new file mode 100644
index 00000000..793c26c8
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Error
diff --git a/gnu/testlet/java/lang/Error/CVS/Root b/gnu/testlet/java/lang/Error/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Error/TryCatch.java b/gnu/testlet/java/lang/Error/TryCatch.java
new file mode 100644
index 00000000..65f5bdc2
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.Error
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.Error
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new Error("Error");
+ }
+ catch (Error e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/CVS/Entries b/gnu/testlet/java/lang/Error/classInfo/CVS/Entries
new file mode 100644
index 00000000..5539ccfd
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed May 30 09:43:50 2012//
+/getInterfaces.java/1.1/Wed May 30 09:43:50 2012//
+/getModifiers.java/1.1/Wed May 30 09:43:50 2012//
+/getName.java/1.1/Wed May 30 09:43:50 2012//
+/getPackage.java/1.1/Wed May 30 09:43:50 2012//
+/getSimpleName.java/1.1/Wed May 30 09:43:50 2012//
+/getSuperclass.java/1.1/Wed May 30 09:43:50 2012//
+/isAssignableFrom.java/1.1/Wed May 30 09:43:50 2012//
+/isInstance.java/1.1/Wed May 30 09:43:50 2012//
+/isInterface.java/1.1/Wed May 30 09:43:50 2012//
+/isLocalClass.java/1.1/Wed May 30 09:43:50 2012//
+/isMemberClass.java/1.1/Wed May 30 09:43:50 2012//
+/isPrimitive.java/1.1/Wed May 30 09:43:50 2012//
+/isSynthetic.java/1.1/Wed May 30 09:43:50 2012//
+D
diff --git a/gnu/testlet/java/lang/Error/classInfo/CVS/Repository b/gnu/testlet/java/lang/Error/classInfo/CVS/Repository
new file mode 100644
index 00000000..30dad163
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Error/classInfo
diff --git a/gnu/testlet/java/lang/Error/classInfo/CVS/Root b/gnu/testlet/java/lang/Error/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Error/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Error/classInfo/InstanceOf.java
new file mode 100644
index 00000000..a10b66cd
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Error
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Error
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Error
+ Error o = new Error("Error");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Error);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Error/classInfo/getInterfaces.java
new file mode 100644
index 00000000..296e81c9
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Error.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getModifiers.java b/gnu/testlet/java/lang/Error/classInfo/getModifiers.java
new file mode 100644
index 00000000..fd4a6add
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Error.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getName.java b/gnu/testlet/java/lang/Error/classInfo/getName.java
new file mode 100644
index 00000000..e39b5fea
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Error");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getPackage.java b/gnu/testlet/java/lang/Error/classInfo/getPackage.java
new file mode 100644
index 00000000..f4d5a43e
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Error.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Error/classInfo/getSimpleName.java
new file mode 100644
index 00000000..8445a57e
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Error");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Error/classInfo/getSuperclass.java
new file mode 100644
index 00000000..4605544a
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Error.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Throwable");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Error/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..9a2d80c1
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Error.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isInstance.java b/gnu/testlet/java/lang/Error/classInfo/isInstance.java
new file mode 100644
index 00000000..d73940d4
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Error("Error")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isInterface.java b/gnu/testlet/java/lang/Error/classInfo/isInterface.java
new file mode 100644
index 00000000..e96557b3
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Error/classInfo/isLocalClass.java
new file mode 100644
index 00000000..e2891be6
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Error/classInfo/isMemberClass.java
new file mode 100644
index 00000000..78dfb1c3
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Error/classInfo/isPrimitive.java
new file mode 100644
index 00000000..d6e3980a
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Error/classInfo/isSynthetic.java
new file mode 100644
index 00000000..e4f76e06
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Error.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test for method java.lang.Error.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Error("Error");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Error/constructor.java b/gnu/testlet/java/lang/Error/constructor.java
new file mode 100644
index 00000000..66942916
--- /dev/null
+++ b/gnu/testlet/java/lang/Error/constructor.java
@@ -0,0 +1,61 @@
+// Test if constructor is working properly for a class java.lang.Error
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Error;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Error;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.Error
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Error error1 = new Error();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.Error");
+
+ Error error2 = new Error("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.Error: nothing happens");
+
+ Error error3 = new Error(new Throwable());
+ harness.check(error3 != null);
+ harness.check(error3.toString(), "java.lang.Error: java.lang.Throwable");
+
+ Error error4 = new Error("nothing happens", new Throwable());
+ harness.check(error4 != null);
+ harness.check(error4.toString(), "java.lang.Error: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/CVS/Entries b/gnu/testlet/java/lang/Exception/CVS/Entries
new file mode 100644
index 00000000..87b21328
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jun 27 14:00:18 2012//
+/constructor.java/1.1/Wed Jun 27 14:00:18 2012//
+D
diff --git a/gnu/testlet/java/lang/Exception/CVS/Entries.Log b/gnu/testlet/java/lang/Exception/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Exception/CVS/Repository b/gnu/testlet/java/lang/Exception/CVS/Repository
new file mode 100644
index 00000000..17aa49dc
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Exception
diff --git a/gnu/testlet/java/lang/Exception/CVS/Root b/gnu/testlet/java/lang/Exception/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Exception/TryCatch.java b/gnu/testlet/java/lang/Exception/TryCatch.java
new file mode 100644
index 00000000..deef22ce
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.Exception
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.Exception
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new Exception("Exception");
+ }
+ catch (Exception e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/CVS/Entries b/gnu/testlet/java/lang/Exception/classInfo/CVS/Entries
new file mode 100644
index 00000000..77788072
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jun 27 14:00:18 2012//
+/getInterfaces.java/1.1/Wed Jun 27 14:00:18 2012//
+/getModifiers.java/1.1/Wed Jun 27 14:00:18 2012//
+/getName.java/1.1/Wed Jun 27 14:00:18 2012//
+/getPackage.java/1.1/Wed Jun 27 14:00:18 2012//
+/getSimpleName.java/1.1/Wed Jun 27 14:00:18 2012//
+/getSuperclass.java/1.1/Wed Jun 27 14:00:18 2012//
+/isAssignableFrom.java/1.1/Wed Jun 27 14:00:18 2012//
+/isInstance.java/1.1/Wed Jun 27 14:00:18 2012//
+/isInterface.java/1.1/Wed Jun 27 14:00:18 2012//
+/isLocalClass.java/1.1/Wed Jun 27 14:00:18 2012//
+/isMemberClass.java/1.1/Wed Jun 27 14:00:18 2012//
+/isPrimitive.java/1.1/Wed Jun 27 14:00:18 2012//
+/isSynthetic.java/1.1/Wed Jun 27 14:00:18 2012//
+D
diff --git a/gnu/testlet/java/lang/Exception/classInfo/CVS/Repository b/gnu/testlet/java/lang/Exception/classInfo/CVS/Repository
new file mode 100644
index 00000000..4a5d9247
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Exception/classInfo
diff --git a/gnu/testlet/java/lang/Exception/classInfo/CVS/Root b/gnu/testlet/java/lang/Exception/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Exception/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Exception/classInfo/InstanceOf.java
new file mode 100644
index 00000000..daa1f12d
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Exception
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Exception
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Exception
+ Exception o = new Exception("Exception");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Exception);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Exception/classInfo/getInterfaces.java
new file mode 100644
index 00000000..aaa58c42
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Exception.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getModifiers.java b/gnu/testlet/java/lang/Exception/classInfo/getModifiers.java
new file mode 100644
index 00000000..4143ad3a
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Exception.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getName.java b/gnu/testlet/java/lang/Exception/classInfo/getName.java
new file mode 100644
index 00000000..db2c4e88
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getPackage.java b/gnu/testlet/java/lang/Exception/classInfo/getPackage.java
new file mode 100644
index 00000000..c8e53b03
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Exception.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Exception/classInfo/getSimpleName.java
new file mode 100644
index 00000000..e72f1fa3
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Exception/classInfo/getSuperclass.java
new file mode 100644
index 00000000..cb770183
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Exception.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Throwable");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Exception/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..e4309cc4
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Exception.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isInstance.java b/gnu/testlet/java/lang/Exception/classInfo/isInstance.java
new file mode 100644
index 00000000..f1994719
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Exception("Exception")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isInterface.java b/gnu/testlet/java/lang/Exception/classInfo/isInterface.java
new file mode 100644
index 00000000..db30a84d
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Exception/classInfo/isLocalClass.java
new file mode 100644
index 00000000..cb9de2f2
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Exception/classInfo/isMemberClass.java
new file mode 100644
index 00000000..0b89fae5
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Exception/classInfo/isPrimitive.java
new file mode 100644
index 00000000..e340cb3c
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Exception/classInfo/isSynthetic.java
new file mode 100644
index 00000000..e7204692
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Exception.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test for method java.lang.Exception.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Exception("Exception");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Exception/constructor.java b/gnu/testlet/java/lang/Exception/constructor.java
new file mode 100644
index 00000000..b2651681
--- /dev/null
+++ b/gnu/testlet/java/lang/Exception/constructor.java
@@ -0,0 +1,67 @@
+// Test if instances of a class java.lang.Exception could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Exception;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Exception;
+
+
+
+/**
+ * Test if instances of a class java.lang.Exception
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Exception object1 = new Exception();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.Exception");
+
+ Exception object2 = new Exception("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.Exception: nothing happens");
+
+ Exception object3 = new Exception((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.Exception");
+
+ Exception object4 = new Exception(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.Exception: java.lang.Throwable");
+
+ Exception object5 = new Exception((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.Exception");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries
new file mode 100644
index 00000000..d83914e9
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:30 2012//
+D
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries.Log b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Repository b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Repository
new file mode 100644
index 00000000..a84dc6bc
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ExceptionInInitializerError
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Root b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/TryCatch.java b/gnu/testlet/java/lang/ExceptionInInitializerError/TryCatch.java
new file mode 100644
index 00000000..b6390b47
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.ExceptionInInitializerError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ExceptionInInitializerError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ExceptionInInitializerError("ExceptionInInitializerError");
+ }
+ catch (ExceptionInInitializerError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Entries b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Entries
new file mode 100644
index 00000000..5539ccfd
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed May 30 09:43:50 2012//
+/getInterfaces.java/1.1/Wed May 30 09:43:50 2012//
+/getModifiers.java/1.1/Wed May 30 09:43:50 2012//
+/getName.java/1.1/Wed May 30 09:43:50 2012//
+/getPackage.java/1.1/Wed May 30 09:43:50 2012//
+/getSimpleName.java/1.1/Wed May 30 09:43:50 2012//
+/getSuperclass.java/1.1/Wed May 30 09:43:50 2012//
+/isAssignableFrom.java/1.1/Wed May 30 09:43:50 2012//
+/isInstance.java/1.1/Wed May 30 09:43:50 2012//
+/isInterface.java/1.1/Wed May 30 09:43:50 2012//
+/isLocalClass.java/1.1/Wed May 30 09:43:50 2012//
+/isMemberClass.java/1.1/Wed May 30 09:43:50 2012//
+/isPrimitive.java/1.1/Wed May 30 09:43:50 2012//
+/isSynthetic.java/1.1/Wed May 30 09:43:50 2012//
+D
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Repository b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Repository
new file mode 100644
index 00000000..3153c419
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Root b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..809ebcb8
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.ExceptionInInitializerError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ExceptionInInitializerError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ExceptionInInitializerError
+ ExceptionInInitializerError o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ExceptionInInitializerError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..dfe50f50
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getModifiers.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getModifiers.java
new file mode 100644
index 00000000..f5200798
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getName.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getName.java
new file mode 100644
index 00000000..80a614dd
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ExceptionInInitializerError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getPackage.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getPackage.java
new file mode 100644
index 00000000..47d7e492
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ed9119ac
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ExceptionInInitializerError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..0dab855e
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.LinkageError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..2cb01ed4
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ExceptionInInitializerError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInstance.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInstance.java
new file mode 100644
index 00000000..fa325003
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new ExceptionInInitializerError("ExceptionInInitializerError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInterface.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInterface.java
new file mode 100644
index 00000000..85abba0e
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..b62e6bd6
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..5b9f157c
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..3b744dd9
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..f450ed10
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.ExceptionInInitializerError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test for method java.lang.ExceptionInInitializerError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ExceptionInInitializerError("ExceptionInInitializerError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ExceptionInInitializerError/constructor.java b/gnu/testlet/java/lang/ExceptionInInitializerError/constructor.java
new file mode 100644
index 00000000..ee39df78
--- /dev/null
+++ b/gnu/testlet/java/lang/ExceptionInInitializerError/constructor.java
@@ -0,0 +1,57 @@
+// Test if constructor is working properly for a class java.lang.ExceptionInInitializerError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.ExceptionInInitializerError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ExceptionInInitializerError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.ExceptionInInitializerError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ExceptionInInitializerError error1 = new ExceptionInInitializerError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.ExceptionInInitializerError");
+
+ ExceptionInInitializerError error2 = new ExceptionInInitializerError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.ExceptionInInitializerError: nothing happens");
+
+ ExceptionInInitializerError error3 = new ExceptionInInitializerError(new Throwable());
+ harness.check(error3 != null);
+ harness.check(error3.toString(), "java.lang.ExceptionInInitializerError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/.cvsignore b/gnu/testlet/java/lang/Float/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Float/CVS/Entries b/gnu/testlet/java/lang/Float/CVS/Entries
new file mode 100644
index 00000000..10cd1ed3
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/CVS/Entries
@@ -0,0 +1,11 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:35 1998//
+/FloatTest.java/1.10/Tue Nov 28 20:30:46 2006//
+/compare.java/1.1/Fri Aug 27 20:30:31 2004//
+/compareTo.java/1.2/Wed Dec 27 15:48:18 2006//
+/floatToInt.java/1.1/Fri Dec 14 10:12:50 2012//
+/floatToLong.java/1.1/Fri Dec 14 10:12:50 2012//
+/new_Float.java/1.2/Fri Dec 11 11:28:19 1998//
+/parseFloat.java/1.1/Fri Oct 15 22:35:32 2004//
+/toHexString.java/1.2/Fri Sep 9 14:31:43 2011/-kk/
+/valueOf.java/1.1/Fri Oct 15 22:35:32 2004//
+D
diff --git a/gnu/testlet/java/lang/Float/CVS/Entries.Log b/gnu/testlet/java/lang/Float/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Float/CVS/Repository b/gnu/testlet/java/lang/Float/CVS/Repository
new file mode 100644
index 00000000..e8032f5a
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Float
diff --git a/gnu/testlet/java/lang/Float/CVS/Root b/gnu/testlet/java/lang/Float/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Float/FloatTest.java b/gnu/testlet/java/lang/Float/FloatTest.java
new file mode 100644
index 00000000..645530e3
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/FloatTest.java
@@ -0,0 +1,527 @@
+/* Copyright (C) 1999, 2002 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: JDK1.0
+
+package gnu.testlet.java.lang.Float;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class FloatTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ Float nan1 = new Float(0.0f/0.0f);
+ Float nan2 = new Float(Float.NaN);
+ float min1 = 1.4e-45f;
+ float min2 = Float.MIN_VALUE;
+ float max1 = 3.4028235e+38f;
+ float max2 = Float.MAX_VALUE;
+ float ninf1 = -1.0f/0.0f;
+ float ninf2 = Float.NEGATIVE_INFINITY;
+ float pinf1 = 1.0f/0.0f;
+ float pinf2 = Float.POSITIVE_INFINITY;
+
+ harness.check(!( min1 != min2 || max1 != max2 ||
+ ninf1 != ninf2 || pinf1 != pinf2 ||
+ !nan2.equals(nan1) ),
+ "test_Basics - 1" );
+
+ Float i1 = new Float(100.5f);
+
+ harness.check(!( i1.floatValue() != 100.5f ),
+ "test_Basics - 2" );
+
+
+ try {
+ harness.check(!( (new Float("234.34f")).floatValue() != 234.34f ),
+ "test_Basics - 3" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 3" );
+ }
+
+ if (!System.getProperty("os.name").equals("VxWorks")){
+ // bug EJWcr00687, has not been fixed yet.
+ // Test is disabled for smallvm 2.0.1 release.
+ try {
+ harness.check(!( (new Float("1.4e-45f")).floatValue() != 1.4e-45f ),
+ "test_Basics - 4" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 4" );
+ }
+ }
+
+ try {
+ new Float("babu");
+ harness.fail("test_Basics - 5" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+
+ harness.check(!( (new Float(3.4)).floatValue() != 3.4f ),
+ "test_Basics - 6" );
+
+
+ Float nan = new Float(Float.NaN );
+ harness.check(!( !nan.isNaN()),
+ "test_Basics - 7" );
+
+ harness.check(!( (new Float(10.0f)).isNaN()),
+ "test_Basics - 8" );
+
+ harness.check(!( !Float.isNaN( Float.NaN )),
+ "test_Basics - 9" );
+
+ harness.check(!( !(new Float(Float.POSITIVE_INFINITY)).isInfinite()),
+ "test_Basics - 10" );
+
+ harness.check(!( !(new Float(Float.NEGATIVE_INFINITY)).isInfinite()),
+ "test_Basics - 11" );
+ harness.check(!( !(Float.isInfinite( Float.POSITIVE_INFINITY))),
+ "test_Basics - 12" );
+ harness.check(!( !(Float.isInfinite( Float.NEGATIVE_INFINITY))),
+ "test_Basics - 13" );
+ harness.check(!( Float.isInfinite( 2.30f )),
+ "test_Basics - 14" );
+
+ }
+
+ public void test_toString()
+ {
+ harness.check(!( !( new Float(123.0f)).toString().equals("123.0")),
+ "test_toString - 1" );
+ harness.check(!( !( new Float(-44.5343f)).toString().equals("-44.5343")),
+ "test_toString - 2" );
+
+ harness.check(!( !Float.toString( 23.04f ).equals ("23.04" )),
+ "test_toString - 3" );
+
+ harness.check(!( !Float.toString( Float.NaN ).equals ("NaN" )),
+ "test_toString - 4" );
+
+ harness.check(!( !Float.toString( Float.POSITIVE_INFINITY ).equals ("Infinity" )),
+ "test_toString - 5" );
+ harness.check(!( !Float.toString( Float.NEGATIVE_INFINITY ).equals ("-Infinity" )),
+ "test_toString - 6" );
+
+ harness.check(!( !Float.toString( 0.0f ).equals ("0.0" )),
+ "test_toString - 7" );
+
+ String str;
+
+ str = Float.toString( -0.0f );
+ harness.check(!( !str.equals ("-0.0" )),
+ "test_toString - 8" );
+
+ str = Float.toString( -912125.45f);
+ if ( !str.equals ("-912125.44" )) {
+ harness.fail("test_toString - 9" );
+ System.out.println("Bug EJWcr00027");
+ System.out.println("expected '-912125.45', got '" +
+ str + "'");
+ }
+
+ // The following case fails for some Sun JDKs (e.g. 1.3.1
+ // and 1.4.0) where toString(0.001) returns "0.0010". This
+ // is contrary to the JDK 1.4 javadoc. This particular
+ // case has been noted as a comment to Sun Java bug #4642835
+ str = Float.toString( 0.001f );
+ harness.check(!( !Float.toString( 0.001f ).equals ("0.001" )),
+ "test_toString - 10" );
+
+ str = Float.toString(33333333.33f );
+ if ( !(new Float( str)).equals(new Float(33333333.33f))) {
+ harness.fail("test_toString - 11" );
+ System.out.println("Bug EJWcr00029");
+ int i = Float.floatToIntBits(new Float( str).floatValue());
+ int j = Float.floatToIntBits(new Float(33333333.33f).floatValue());
+ int k = Float.floatToIntBits(33333333.33f);
+ System.out.println("ours = " + Integer.toHexString(i));
+ System.out.println("javac's = " + Integer.toHexString(j));
+ System.out.println("plain constant = " + Integer.toHexString(k));
+ }
+ str = Float.toString(-123232324253.32f );
+ if ( !(new Float( str)).equals(new Float(-123232324253.32f))) {
+ harness.fail("test_toString - 12" );
+ System.out.println("Bug EJWcr00030");
+ int i = Float.floatToIntBits(new Float( str).floatValue());
+ int j = Float.floatToIntBits(new Float(-123232324253.32f).floatValue());
+ int k = Float.floatToIntBits(-123232324253.32f);
+ System.out.println("ours = " + Integer.toHexString(i));
+ System.out.println("javac's = " + Integer.toHexString(j));
+ System.out.println("plain constant = " + Integer.toHexString(k));
+ }
+ str = Float.toString(1.243E10f);
+ harness.check(!( !(new Float( str)).equals(new Float(1.243E10f))),
+ "test_toString - 13" );
+ str = Float.toString(-23.43E33f);
+ harness.check(!( !(new Float( str)).equals(new Float(-23.43E33f))),
+ "test_toString - 14" );
+
+ str = Float.toString(Float.MIN_VALUE);
+ if(!str.equals("1.4E-45")) {
+ harness.fail("test_toString - 15" );
+ harness.debug("Expected : 1.4E-45");
+ harness.debug("Got: " + str);
+ }
+ }
+
+ public void test_equals()
+ {
+ Float i1 = new Float(2334.34E4);
+ Float i2 = new Float(-2334.34E4);
+
+ harness.check(!( !i1.equals( new Float(2334.34E4))),
+ "test_equals - 1" );
+ harness.check(!( !i2.equals( new Float(-2334.34E4))),
+ "test_equals - 2" );
+
+
+ harness.check(!( i1.equals( i2 )),
+ "test_equals - 3" );
+
+ harness.check(!( i1.equals(null)),
+ "test_equals - 4" );
+
+ float n1 = Float.NaN;
+ float n2 = Float.NaN;
+
+ harness.check(!( n1 == n2 ),
+ "test_equals - 5" );
+
+ Float flt1 = new Float( Float.NaN);
+ Float flt2 = new Float( Float.NaN);
+ harness.check(!( !flt1.equals(flt2)),
+ "test_equals - 6" );
+
+ harness.check(!( 0.0f != -0.0f ),
+ "test_equals - 7" );
+
+ Float pzero = new Float( 0.0f );
+ Float nzero = new Float( -0.0f );
+
+ harness.check(!( pzero.equals(nzero) ),
+ "test_equals - 8" );
+
+ }
+
+
+ public void test_hashCode( )
+ {
+ Float flt1 = new Float(3.4028235e+38f);
+
+ harness.check(!( flt1.hashCode() != Float.floatToIntBits( 3.4028235e+38f )),
+ "test_hashCode - 1");
+
+ Float flt2 = new Float( -2343323354f );
+ harness.check(!( flt2.hashCode() != Float.floatToIntBits( -2343323354f )),
+ "test_hashCode - 2");
+ }
+
+ public void test_intValue( )
+ {
+ Float b1 = new Float(3.4e+32f);
+ Float b2 = new Float(-23.45f);
+
+ int i1 = b1.intValue();
+ int i2 = b2.intValue();
+
+ harness.check(!( i1 != (int) 3.4e+32f),
+ "test_intValue - 1" );
+
+ harness.check(!( i2 != (int) -23.45f ),
+ "test_intValue - 2" );
+ }
+
+ public void test_longValue( )
+ {
+ Float b1 = new Float(3.4e+15f);
+ Float b2 = new Float(-23.45f);
+
+ float b3 = 3.4e+15f;
+ long l3 = (long)b3;
+
+ harness.check(!( b1.longValue() != l3),
+ "test_longValue - 1" );
+
+ b3 = -23.45f;
+ l3 = (long)b3;
+ harness.check(!( b2.longValue() != l3),
+ "test_longValue - 2" );
+ }
+
+ public void test_floatValue( )
+ {
+ Float b1 = new Float(3276.34f);
+ Float b2 = new Float(-3276.32);
+
+ harness.check(!( b1.floatValue() != 3276.34f ),
+ "test_floatValue - 1" );
+
+ harness.check(!( b2.floatValue() != -3276.32f ),
+ "test_floatValue - 2" );
+ }
+
+ public void test_doubleValue( )
+ {
+ Float b1 = new Float(0.0f);
+ Float b2 = new Float(30.0f);
+
+ harness.check(!( b1.doubleValue() != 0.0 ),
+ "test_doubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != 30.0 ),
+ "test_doubleValue - 2" );
+ }
+
+ public void test_valueOf( )
+ {
+ try {
+ Float.valueOf(null);
+ harness.fail("test_valueOf - 1" );
+ }
+ catch ( NumberFormatException nfe )
+ {harness.check(false, "test_valueOf null should throw NullPointerException");}
+ catch ( NullPointerException e )
+ {harness.check(true, "test_valueOf null");}
+
+
+ try {
+ Float.valueOf("Kona");
+ harness.fail("test_valueOf - 2" );
+ }catch( NumberFormatException e)
+ {harness.check(true, "test_valueOf Kona");}
+
+
+ try {
+ harness.check(!( Float.valueOf( "3.4e+32f" ).floatValue() != 3.4e+32f ),
+ "test_valueOf - 3" );
+ }catch( NumberFormatException e)
+ {harness.check(false, "test_valueOf 3.4e+32f");}
+
+ try {
+ harness.check(!( Float.valueOf(" -23.45f ").floatValue() != -23.45f ),
+ "test_valueOf - 4" );
+ }catch( NumberFormatException e)
+ {harness.check(false, "test_valueOf \" -23.45f \"");}
+
+ }
+
+
+ public void test_parseFloat( )
+ {
+ try {
+ Float.parseFloat(null);
+ harness.fail("test_parseFloat - 1" );
+ }
+ catch ( NumberFormatException nfe )
+ {harness.check(false, "test_parseFloat null should throw NullPointerException");}
+ catch ( NullPointerException e )
+ {harness.check(true, "test_parseFloat null");}
+
+
+ try {
+ Float.parseFloat("Kona");
+ harness.fail("test_parseFloat - 2" );
+ }catch( NumberFormatException e)
+ {harness.check(true, "test_parseFloat Kona");}
+
+
+ try {
+ harness.check(!( Float.parseFloat( "3.4e+32f" ) != 3.4e+32f ),
+ "test_parseFloat - 3" );
+ }catch( NumberFormatException e)
+ {harness.check(false, "test_parseFloat 3.4e+32f");}
+
+ try {
+ harness.check(!( Float.parseFloat(" -23.45f ") != -23.45f ),
+ "test_parseFloat - 4" );
+ }catch( NumberFormatException e)
+ {harness.check(false, "test_parseFloat \" -23.45f \"");}
+
+ }
+
+ public void test_floatToIntBits()
+ {
+ harness.check(!( Float.floatToIntBits( Float.POSITIVE_INFINITY ) != 0x7f800000 ),
+ "test_floatToIntBits - 1" );
+ harness.check(!( Float.floatToIntBits( Float.NEGATIVE_INFINITY ) != 0xff800000 ),
+ "test_floatToIntBits - 2" );
+
+ int nanval = Float.floatToIntBits( Float.NaN );
+ harness.check(!( nanval != 0x7fc00000 ),
+ "test_floatToIntBits - 3" );
+
+ int i1 = Float.floatToIntBits(3.4e+32f);
+ int i2 = Float.floatToIntBits(-34.56f);
+
+ int sign1 = i1 & 0x80000000 ;
+ int sign2 = i2 & 0x80000000 ;
+
+ int exp1 = i1 & 0x7f800000 ;
+ int exp2 = i2 & 0x7f800000 ;
+
+ int man1 = i1 & 0x007fffff ;
+ int man2 = i2 & 0x007fffff ;
+
+ harness.check(!(sign1 != 0 ),
+ "test_floatToIntBits - 4" );
+
+ harness.check(!( sign2 != 0x80000000 ),
+ "test_floatToIntBits - 5" );
+
+ harness.check(!( exp1 != 1971322880 ),
+ "test_floatToIntBits - 6" );
+
+ harness.check(!( exp2 != 1107296256 ),
+ "test_floatToIntBits - 7" );
+
+ harness.check(!( man1 != 400186 ),
+ "test_floatToIntBits - 8" );
+
+ harness.check(!( man2 != 671089 ),
+ "test_floatToIntBits - 9" );
+
+ }
+
+ public void test_intBitsToFloat( )
+ {
+ harness.check(!( Float.intBitsToFloat( 0x7f800000 ) != Float.POSITIVE_INFINITY ),
+ "test_intBitsToFloat - 1" );
+ harness.check(!( Float.intBitsToFloat( 0xff800000 ) != Float.NEGATIVE_INFINITY ),
+ "test_intBitsToFloat - 2" );
+
+
+ harness.check(!( !Float.isNaN(Float.intBitsToFloat( 0x7f800002 ))),
+ "test_intBitsToFloat - 3" );
+
+ harness.check(!( !Float.isNaN(Float.intBitsToFloat( 0x7f8ffff0 ))),
+ "test_intBitsToFloat - 4" );
+
+ harness.check(!( !Float.isNaN(Float.intBitsToFloat( 0xff800002 ) )),
+ "test_intBitsToFloat - 5" );
+
+ harness.check(!( !Float.isNaN(Float.intBitsToFloat( 0xfffffff1 ))),
+ "test_intBitsToFloat - 6" );
+
+ harness.check(!( !Float.isNaN(Float.intBitsToFloat( 0xffc00000 ))),
+ "test_intBitsToFloat - 7" );
+
+ float fl1 = Float.intBitsToFloat( 0x34343f34 );
+
+ harness.check(!( fl1 != 1.67868e-007f ),
+ "test_intBitsToFloat - 8" );
+
+ harness.check(!( Float.floatToIntBits( Float.intBitsToFloat(0x33439943)) != 0x33439943 ),
+ "test_intBitsToFloat - 9");
+ }
+
+ public void test_shortbyteValue()
+ {
+ Float d1 = new Float( 123.35 );
+ Float d2 = new Float( 400.35 );
+ Float d3 = new Float(0.0 );
+
+ harness.check(!( d1.shortValue() != 123 ),
+ "test_shortbyteValue - 1" );
+ harness.check(!( d2.shortValue() != 400 ),
+ "test_shortbyteValue - 2" );
+ harness.check(!( d3.shortValue() != 0 ),
+ "test_shortbyteValue - 3" );
+
+ harness.check(!( d1.byteValue() != 123 ),
+ "test_shortbyteValue - 4" );
+ harness.check(!( d2.byteValue() != (byte) 400 ),
+ "test_shortbyteValue - 5" );
+ harness.check(!( d3.byteValue() != 0 ),
+ "test_shortbyteValue - 6" );
+
+ }
+
+ public void test_neg() {
+ float zero = 0.0f;
+ String zero1 = String.valueOf(zero);
+ if (!zero1.equals("0.0")) {
+ harness.fail("test_neg - 1");
+ }
+
+ zero = -zero;
+ String zero2 = String.valueOf(zero);
+ if (!zero2.equals("-0.0")) {
+ harness.fail("test_neg - 2");
+ }
+
+ zero = -zero;
+ String zero3 = String.valueOf(zero);
+ if (!zero3.equals("0.0")) {
+ harness.fail("test_neg - 3");
+ }
+
+ float nonzero = -12.24f;
+ String nonzero1 = String.valueOf(nonzero);
+ if (!nonzero1.equals("-12.24")) {
+ harness.fail("test_neg - 4");
+ }
+
+ nonzero = -nonzero;
+ String nonzero2 = String.valueOf(nonzero);
+ if (!nonzero2.equals("12.24")) {
+ harness.fail("test_neg - 5");
+ }
+
+ nonzero = -nonzero;
+ String nonzero3 = String.valueOf(nonzero);
+ if (!nonzero3.equals("-12.24")) {
+ harness.fail("test_neg - 6");
+ }
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_intValue();
+ test_longValue();
+ test_floatValue();
+ test_doubleValue();
+ test_shortbyteValue();
+ test_valueOf();
+ test_parseFloat();
+ test_floatToIntBits();
+ test_intBitsToFloat();
+ test_neg();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Float/classInfo/CVS/Entries b/gnu/testlet/java/lang/Float/classInfo/CVS/Entries
new file mode 100644
index 00000000..f63c3fb3
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Mon May 7 15:29:31 2012//
+/getInterfaces.java/1.1/Mon May 7 15:29:31 2012//
+/getModifiers.java/1.1/Mon May 7 15:29:31 2012//
+/getName.java/1.1/Mon May 7 15:29:31 2012//
+/getPackage.java/1.1/Mon May 7 15:29:31 2012//
+/getSimpleName.java/1.1/Mon May 7 15:29:31 2012//
+/getSuperclass.java/1.1/Mon May 7 15:29:31 2012//
+/isAnnotation.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnnotationPresent.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAnonymousClass.java/1.1/Wed Sep 19 08:54:38 2012//
+/isArray.java/1.1/Wed Sep 19 08:54:38 2012//
+/isAssignableFrom.java/1.1/Mon May 7 15:29:31 2012//
+/isEnum.java/1.1/Wed Sep 19 08:54:38 2012//
+/isInstance.java/1.1/Mon May 7 15:29:31 2012//
+/isInterface.java/1.1/Mon May 7 15:29:31 2012//
+/isLocalClass.java/1.1/Mon May 7 15:29:31 2012//
+/isMemberClass.java/1.1/Mon May 7 15:29:31 2012//
+/isPrimitive.java/1.1/Mon May 7 15:29:31 2012//
+/isSynthetic.java/1.1/Mon May 7 15:29:31 2012//
+D
diff --git a/gnu/testlet/java/lang/Float/classInfo/CVS/Repository b/gnu/testlet/java/lang/Float/classInfo/CVS/Repository
new file mode 100644
index 00000000..c5dda976
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Float/classInfo
diff --git a/gnu/testlet/java/lang/Float/classInfo/CVS/Root b/gnu/testlet/java/lang/Float/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Float/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Float/classInfo/InstanceOf.java
new file mode 100644
index 00000000..b56164bd
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Float
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Float
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Float o = new Float(42.0f);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Float);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Float/classInfo/getInterfaces.java
new file mode 100644
index 00000000..14cdedfe
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Float.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getModifiers.java b/gnu/testlet/java/lang/Float/classInfo/getModifiers.java
new file mode 100644
index 00000000..3256c344
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Float.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getName.java b/gnu/testlet/java/lang/Float/classInfo/getName.java
new file mode 100644
index 00000000..4e5e25eb
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Float");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getPackage.java b/gnu/testlet/java/lang/Float/classInfo/getPackage.java
new file mode 100644
index 00000000..ae0bae25
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Float.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Float/classInfo/getSimpleName.java
new file mode 100644
index 00000000..e8bdbe75
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Float");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Float/classInfo/getSuperclass.java
new file mode 100644
index 00000000..63fbedd4
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Float.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Float/classInfo/isAnnotation.java
new file mode 100644
index 00000000..3acc124f
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Float/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..b0cd9c0d
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Float.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Float/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..ed156da3
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isArray.java b/gnu/testlet/java/lang/Float/classInfo/isArray.java
new file mode 100644
index 00000000..28e6a3fe
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Float/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..21039ee6
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Float.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isEnum.java b/gnu/testlet/java/lang/Float/classInfo/isEnum.java
new file mode 100644
index 00000000..05ffb0f8
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Float
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isInstance.java b/gnu/testlet/java/lang/Float/classInfo/isInstance.java
new file mode 100644
index 00000000..5f7ad87e
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Float(42.0f)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isInterface.java b/gnu/testlet/java/lang/Float/classInfo/isInterface.java
new file mode 100644
index 00000000..47600152
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Float/classInfo/isLocalClass.java
new file mode 100644
index 00000000..d9a011cb
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Float/classInfo/isMemberClass.java
new file mode 100644
index 00000000..69064fff
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Float/classInfo/isPrimitive.java
new file mode 100644
index 00000000..5347b469
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Float/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c8211cdd
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Float.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Float.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Float;
+
+
+
+/**
+ * Test for method java.lang.Float.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Float(42.0f);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/compare.java b/gnu/testlet/java/lang/Float/compare.java
new file mode 100644
index 00000000..f4093dfa
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/compare.java
@@ -0,0 +1,59 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.lang.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for the compare() method in the {@link Float} class.
+ */
+public class compare implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(Float.compare(0.0f, 1.0f) < 0);
+ harness.check(Float.compare(0.0f, 0.0f) == 0);
+ harness.check(Float.compare(1.0f, 0.0f) > 0);
+
+ harness.check(Float.compare(Float.POSITIVE_INFINITY, 0.0f) > 0);
+ harness.check(Float.compare(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY) == 0);
+ harness.check(Float.compare(0.0f, Float.POSITIVE_INFINITY) < 0);
+
+ harness.check(Float.compare(Float.NEGATIVE_INFINITY, 0.0f) < 0);
+ harness.check(Float.compare(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY) == 0);
+ harness.check(Float.compare(0.0f, Float.NEGATIVE_INFINITY) > 0);
+
+ harness.check(Float.compare(Float.NaN, 0.0f) > 0);
+ harness.check(Float.compare(Float.NaN, Float.NaN) == 0);
+ harness.check(Float.compare(0.0f, Float.NaN) < 0);
+
+ harness.check(Float.compare(0.0f, -0.0f) > 0);
+ harness.check(Float.compare(-0.0f, 0.0f) < 0);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/lang/Float/compareTo.java b/gnu/testlet/java/lang/Float/compareTo.java
new file mode 100644
index 00000000..8557fa7d
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/compareTo.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for the compareTo() method in the {@link Float} class.
+ */
+public class compareTo implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Float)");
+ Float f1 = new Float(Float.NEGATIVE_INFINITY);
+ Float f2 = new Float(-1.0);
+ Float f3 = new Float(0.0);
+ Float f4 = new Float(1.0);
+ Float f5 = new Float(Float.POSITIVE_INFINITY);
+
+ harness.check(f1.compareTo(f1) == 0);
+ harness.check(f1.compareTo(f2) < 0);
+ harness.check(f1.compareTo(f3) < 0);
+ harness.check(f1.compareTo(f4) < 0);
+ harness.check(f1.compareTo(f5) < 0);
+
+ harness.check(f2.compareTo(f1) > 0);
+ harness.check(f2.compareTo(f2) == 0);
+ harness.check(f2.compareTo(f3) < 0);
+ harness.check(f2.compareTo(f4) < 0);
+ harness.check(f2.compareTo(f5) < 0);
+
+ harness.check(f3.compareTo(f1) > 0);
+ harness.check(f3.compareTo(f2) > 0);
+ harness.check(f3.compareTo(f3) == 0);
+ harness.check(f3.compareTo(f4) < 0);
+ harness.check(f3.compareTo(f5) < 0);
+
+ harness.check(f4.compareTo(f1) > 0);
+ harness.check(f4.compareTo(f2) > 0);
+ harness.check(f4.compareTo(f3) > 0);
+ harness.check(f4.compareTo(f4) == 0);
+ harness.check(f4.compareTo(f5) < 0);
+
+ harness.check(f5.compareTo(f1) > 0);
+ harness.check(f5.compareTo(f2) > 0);
+ harness.check(f5.compareTo(f3) > 0);
+ harness.check(f5.compareTo(f4) > 0);
+ harness.check(f5.compareTo(f5) == 0);
+
+ boolean pass = false;
+ try
+ {
+ f1.compareTo((Float) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Object)");
+ Float f1 = new Float(Float.NEGATIVE_INFINITY);
+ boolean pass = false;
+ try
+ {
+ ((Comparable)f1).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ((Comparable)f1).compareTo("Not a Float!");
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Float/floatToInt.java b/gnu/testlet/java/lang/Float/floatToInt.java
new file mode 100644
index 00000000..7ad3884e
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/floatToInt.java
@@ -0,0 +1,93 @@
+// Test the conversion between float and int.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Float;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the conversion between float and int.
+ */
+public class floatToInt implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testZero(harness);
+ testPositiveValue(harness);
+ testNegativeValue(harness);
+ testNaN(harness);
+ testPositiveInfinity(harness);
+ testNegativeInfinity(harness);
+ }
+
+ public void testZero(TestHarness harness)
+ {
+ float value = 0.0f;
+ boolean result = (int)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveValue(TestHarness harness)
+ {
+ float value = 123.456f;
+ boolean result = (int)value == 123;
+ harness.check(result);
+
+ value = 456.789f;
+ result = (int)value == 456;
+ harness.check(result);
+ }
+
+ public void testNegativeValue(TestHarness harness)
+ {
+ float value = -123.456f;
+ boolean result = (int)value == -123;
+ harness.check(result);
+
+ value = -456.789f;
+ result = (int)value == -456;
+ harness.check(result);
+ }
+
+ public void testNaN(TestHarness harness)
+ {
+ float value = 0.0f / 0.0f;
+ boolean result = (int)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveInfinity(TestHarness harness)
+ {
+ float value = 100.0f / 0.0f;
+ boolean result = (int)value == 0x7fffffff;
+ harness.check(result);
+ }
+
+ public void testNegativeInfinity(TestHarness harness)
+ {
+ float value = -100.0f / 0.0f;
+ boolean result = (int)value == 0x80000000;
+ harness.check(result);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/floatToLong.java b/gnu/testlet/java/lang/Float/floatToLong.java
new file mode 100644
index 00000000..be8283fd
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/floatToLong.java
@@ -0,0 +1,93 @@
+// Test the conversion between float and long.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Float;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the conversion between float and long.
+ */
+public class floatToLong implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testZero(harness);
+ testPositiveValue(harness);
+ testNegativeValue(harness);
+ testNaN(harness);
+ testPositiveInfinity(harness);
+ testNegativeInfinity(harness);
+ }
+
+ public void testZero(TestHarness harness)
+ {
+ float value = 0.0f;
+ boolean result = (long)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveValue(TestHarness harness)
+ {
+ float value = 123.456f;
+ boolean result = (long)value == 123;
+ harness.check(result);
+
+ value = 456.789f;
+ result = (long)value == 456;
+ harness.check(result);
+ }
+
+ public void testNegativeValue(TestHarness harness)
+ {
+ float value = -123.456f;
+ boolean result = (long)value == -123;
+ harness.check(result);
+
+ value = -456.789f;
+ result = (long)value == -456;
+ harness.check(result);
+ }
+
+ public void testNaN(TestHarness harness)
+ {
+ float value = 0.0f / 0.0f;
+ boolean result = (long)value == 0;
+ harness.check(result);
+ }
+
+ public void testPositiveInfinity(TestHarness harness)
+ {
+ float value = 100.0f / 0.0f;
+ boolean result = (long)value == 0x7fffffffffffffffL;
+ harness.check(result);
+ }
+
+ public void testNegativeInfinity(TestHarness harness)
+ {
+ float value = -100.0f / 0.0f;
+ boolean result = (long)value == 0x8000000000000000L;
+ harness.check(result);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/new_Float.java b/gnu/testlet/java/lang/Float/new_Float.java
new file mode 100644
index 00000000..ea8a4eb5
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/new_Float.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Float;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Float implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // A few simple test cases.
+ harness.check (new Float(22.0/7.0).toString (), "3.142857");
+ harness.check (new Float(Math.PI).toString (), "3.1415927");
+ harness.check (Float.valueOf (new Float(Math.PI).toString ()),
+ new Float(Math.PI));
+ harness.check (Float.valueOf (new Float(-Math.PI).toString ()),
+ new Float(-Math.PI));
+ harness.check (new Float(Float.MAX_VALUE).toString (),
+ "3.4028235E38");
+ harness.check (new Float(-Float.MAX_VALUE).toString (),
+ "-3.4028235E38");
+ harness.check (new Float(Float.POSITIVE_INFINITY).toString (),
+ "Infinity");
+ harness.check (new Float(-Float.POSITIVE_INFINITY).toString (),
+ "-Infinity");
+ harness.check (new Float(Float.NaN).toString (), "NaN");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Float/parseFloat.java b/gnu/testlet/java/lang/Float/parseFloat.java
new file mode 100644
index 00000000..d50467cd
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/parseFloat.java
@@ -0,0 +1,172 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the parseFloat() method in the {@link Float} class.
+ */
+public class parseFloat implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testRegular(harness);
+ testInfinities(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Tests some regular values.
+ *
+ * @param harness the test harness.
+ */
+ public void testRegular(TestHarness harness)
+ {
+ harness.check(Float.parseFloat("1.0"), 1.0f);
+ harness.check(Float.parseFloat("+1.0"), 1.0f);
+ harness.check(Float.parseFloat("-1.0"), -1.0f);
+ harness.check(Float.parseFloat(" 1.0 "), 1.0f);
+ harness.check(Float.parseFloat(" -1.0 "), -1.0f);
+
+ harness.check(Float.parseFloat("2."), 2.0f);
+ harness.check(Float.parseFloat(".3"), 0.3f);
+ harness.check(Float.parseFloat("1e-9"), 1e-9f);
+ harness.check(Float.parseFloat("1e37"), 1e37f);
+
+ // test some bad formats
+ try
+ {
+ /* float f = */ Float.parseFloat("");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* float f = */ Float.parseFloat("X");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* float f = */ Float.parseFloat("e");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* float f = */ Float.parseFloat("+ 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* float f = */ Float.parseFloat("- 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ // null argument should throw NullPointerException
+ try
+ {
+ /* float f = */ Float.parseFloat(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Some checks for values that should parse to Double.POSITIVE_INFINITY
+ * or Double.NEGATIVE_INFINITY.
+ *
+ * @param harness the test harness.
+ */
+ public void testInfinities(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Float.parseFloat("Infinity"), Float.POSITIVE_INFINITY);
+ harness.check(Float.parseFloat("+Infinity"), Float.POSITIVE_INFINITY);
+ harness.check(Float.parseFloat("-Infinity"), Float.NEGATIVE_INFINITY);
+ harness.check(Float.parseFloat(" +Infinity "), Float.POSITIVE_INFINITY);
+ harness.check(Float.parseFloat(" -Infinity "), Float.NEGATIVE_INFINITY);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ harness.check(Float.parseFloat("1e1000"), Float.POSITIVE_INFINITY);
+ harness.check(Float.parseFloat("-1e1000"), Float.NEGATIVE_INFINITY);
+ }
+
+ /**
+ * Some checks for 'NaN' values.
+ *
+ * @param harness the test harness.
+ */
+ public void testNaN(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Float.isNaN(Float.parseFloat("NaN")));
+ harness.check(Float.isNaN(Float.parseFloat("+NaN")));
+ harness.check(Float.isNaN(Float.parseFloat("-NaN")));
+ harness.check(Float.isNaN(Float.parseFloat(" +NaN ")));
+ harness.check(Float.isNaN(Float.parseFloat(" -NaN ")));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Float/toHexString.java b/gnu/testlet/java/lang/Float/toHexString.java
new file mode 100644
index 00000000..296dba18
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/toHexString.java
@@ -0,0 +1,66 @@
+/* toHexString.java -- test Float.toHexString
+ Copyright (C) 2005 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Tom Tromey
+ * @author Pavel Tisnovsky (ptisnovs at redhat dot com)
+ */
+public class toHexString implements Testlet {
+ public void test(TestHarness harness) {
+ // special cases
+ harness.check(Float.toHexString(Float.NaN), "NaN");
+ harness.check(Float.toHexString(Float.POSITIVE_INFINITY), "Infinity");
+ harness.check(Float.toHexString(Float.NEGATIVE_INFINITY), "-Infinity");
+ harness.check(Float.toHexString(0.0f), "0x0.0p0");
+ harness.check(Float.toHexString(-0.0f), "-0x0.0p0");
+
+ // normalized values
+ harness.check(Float.toHexString(0.125f), "0x1.0p-3");
+ harness.check(Float.toHexString(0.25f), "0x1.0p-2");
+ harness.check(Float.toHexString(0.5f), "0x1.0p-1");
+ harness.check(Float.toHexString(1.0f), "0x1.0p0");
+ harness.check(Float.toHexString(2.0f), "0x1.0p1");
+ harness.check(Float.toHexString(4.0f), "0x1.0p2");
+ harness.check(Float.toHexString(8.0f), "0x1.0p3");
+ harness.check(Float.toHexString(65536.0f), "0x1.0p16");
+ // 2^10
+ harness.check(Float.toHexString(1024.0f), "0x1.0p10");
+ // 2^20
+ harness.check(Float.toHexString(1048576.0f), "0x1.0p20");
+ // 2^30
+ harness.check(Float.toHexString(1073741824.0f), "0x1.0p30");
+
+ // subnormalized values
+ harness.check(Float.toHexString( Float.intBitsToFloat(0x00800000)), "0x1.0p-126");
+ harness.check(Float.toHexString(-Float.intBitsToFloat(0x00800000)), "-0x1.0p-126");
+
+ // max and min representable values
+ harness.check(Float.toHexString(Float.MAX_VALUE), "0x1.fffffep127");
+ harness.check(Float.toHexString(Float.MIN_VALUE), "0x0.000002p-126");
+ }
+}
diff --git a/gnu/testlet/java/lang/Float/valueOf.java b/gnu/testlet/java/lang/Float/valueOf.java
new file mode 100644
index 00000000..923c1314
--- /dev/null
+++ b/gnu/testlet/java/lang/Float/valueOf.java
@@ -0,0 +1,172 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Float;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the valueOf() method in the {@link Float} class.
+ */
+public class valueOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testRegular(harness);
+ testInfinities(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Tests some regular values.
+ *
+ * @param harness the test harness.
+ */
+ public void testRegular(TestHarness harness)
+ {
+ harness.check(Float.valueOf("1.0"), new Float(1.0f));
+ harness.check(Float.valueOf("+1.0"), new Float(1.0f));
+ harness.check(Float.valueOf("-1.0"), new Float(-1.0f));
+ harness.check(Float.valueOf(" 1.0 "), new Float(1.0f));
+ harness.check(Float.valueOf(" -1.0 "), new Float(-1.0f));
+
+ harness.check(Float.valueOf("2."), new Float(2.0f));
+ harness.check(Float.valueOf(".3"), new Float(0.3f));
+ harness.check(Float.valueOf("1e-9"), new Float(1e-9f));
+ harness.check(Float.valueOf("1e37"), new Float(1e37f));
+
+ // test some bad formats
+ try
+ {
+ /* Float f = */ Float.valueOf("");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Float f = */ Float.valueOf("X");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Float f = */ Float.valueOf("e");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Float f = */ Float.valueOf("+ 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Float f = */ Float.valueOf("- 1.0");
+ harness.check(false);
+ }
+ catch (NumberFormatException e)
+ {
+ harness.check(true);
+ }
+
+ // null argument should throw NullPointerException
+ try
+ {
+ /* Float f = */ Float.valueOf(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Some checks for values that should parse to Double.POSITIVE_INFINITY
+ * or Double.NEGATIVE_INFINITY.
+ *
+ * @param harness the test harness.
+ */
+ public void testInfinities(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Float.valueOf("Infinity"), new Float(Float.POSITIVE_INFINITY));
+ harness.check(Float.valueOf("+Infinity"), new Float(Float.POSITIVE_INFINITY));
+ harness.check(Float.valueOf("-Infinity"), new Float(Float.NEGATIVE_INFINITY));
+ harness.check(Float.valueOf(" +Infinity "), new Float(Float.POSITIVE_INFINITY));
+ harness.check(Float.valueOf(" -Infinity "), new Float(Float.NEGATIVE_INFINITY));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ harness.check(Float.valueOf("1e1000"), new Float(Float.POSITIVE_INFINITY));
+ harness.check(Float.valueOf("-1e1000"), new Float(Float.NEGATIVE_INFINITY));
+ }
+
+ /**
+ * Some checks for 'NaN' values.
+ *
+ * @param harness the test harness.
+ */
+ public void testNaN(TestHarness harness)
+ {
+ try
+ {
+ harness.check(Float.isNaN(Float.valueOf("NaN").floatValue()));
+ harness.check(Float.isNaN(Float.valueOf("+NaN").floatValue()));
+ harness.check(Float.isNaN(Float.valueOf("-NaN").floatValue()));
+ harness.check(Float.isNaN(Float.valueOf(" +NaN ").floatValue()));
+ harness.check(Float.isNaN(Float.valueOf(" -NaN ").floatValue()));
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries b/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries
new file mode 100644
index 00000000..d83914e9
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:30 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalAccessError/CVS/Repository b/gnu/testlet/java/lang/IllegalAccessError/CVS/Repository
new file mode 100644
index 00000000..ede90ba6
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalAccessError
diff --git a/gnu/testlet/java/lang/IllegalAccessError/CVS/Root b/gnu/testlet/java/lang/IllegalAccessError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalAccessError/TryCatch.java b/gnu/testlet/java/lang/IllegalAccessError/TryCatch.java
new file mode 100644
index 00000000..722bf0ae
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalAccessError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalAccessError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalAccessError("IllegalAccessError");
+ }
+ catch (IllegalAccessError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Entries
new file mode 100644
index 00000000..5539ccfd
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed May 30 09:43:50 2012//
+/getInterfaces.java/1.1/Wed May 30 09:43:50 2012//
+/getModifiers.java/1.1/Wed May 30 09:43:50 2012//
+/getName.java/1.1/Wed May 30 09:43:50 2012//
+/getPackage.java/1.1/Wed May 30 09:43:50 2012//
+/getSimpleName.java/1.1/Wed May 30 09:43:50 2012//
+/getSuperclass.java/1.1/Wed May 30 09:43:50 2012//
+/isAssignableFrom.java/1.1/Wed May 30 09:43:50 2012//
+/isInstance.java/1.1/Wed May 30 09:43:50 2012//
+/isInterface.java/1.1/Wed May 30 09:43:50 2012//
+/isLocalClass.java/1.1/Wed May 30 09:43:50 2012//
+/isMemberClass.java/1.1/Wed May 30 09:43:50 2012//
+/isPrimitive.java/1.1/Wed May 30 09:43:50 2012//
+/isSynthetic.java/1.1/Wed May 30 09:43:50 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Repository
new file mode 100644
index 00000000..afb22a0e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalAccessError/classInfo
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..7125dc5d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.IllegalAccessError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+import java.lang.IncompatibleClassChangeError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalAccessError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalAccessError
+ IllegalAccessError o = new IllegalAccessError("IllegalAccessError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalAccessError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IncompatibleClassChangeError);
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..20030e9a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalAccessError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getModifiers.java
new file mode 100644
index 00000000..5f7f213c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalAccessError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getName.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getName.java
new file mode 100644
index 00000000..ae6eb7e3
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalAccessError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getPackage.java
new file mode 100644
index 00000000..d268c63f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalAccessError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..75b3a66f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalAccessError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..4fc743f4
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalAccessError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IncompatibleClassChangeError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..a21474f4
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalAccessError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInstance.java
new file mode 100644
index 00000000..6605620d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalAccessError("IllegalAccessError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInterface.java
new file mode 100644
index 00000000..a6f61b0a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..d8e4b87c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..3be058e6
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..153dac09
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..e78e6910
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessError("IllegalAccessError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessError/constructor.java b/gnu/testlet/java/lang/IllegalAccessError/constructor.java
new file mode 100644
index 00000000..bd682475
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.IllegalAccessError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.IllegalAccessError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalAccessError error1 = new IllegalAccessError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.IllegalAccessError");
+
+ IllegalAccessError error2 = new IllegalAccessError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.IllegalAccessError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries b/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries
new file mode 100644
index 00000000..1ad0b179
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 3 10:13:46 2012//
+/constructor.java/1.1/Tue Jul 3 10:13:46 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalAccessException/CVS/Repository b/gnu/testlet/java/lang/IllegalAccessException/CVS/Repository
new file mode 100644
index 00000000..97cd5edf
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalAccessException
diff --git a/gnu/testlet/java/lang/IllegalAccessException/CVS/Root b/gnu/testlet/java/lang/IllegalAccessException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalAccessException/TryCatch.java b/gnu/testlet/java/lang/IllegalAccessException/TryCatch.java
new file mode 100644
index 00000000..265726fb
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalAccessException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalAccessException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalAccessException("IllegalAccessException");
+ }
+ catch (IllegalAccessException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Entries
new file mode 100644
index 00000000..ac854ea2
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 3 10:13:46 2012//
+/getInterfaces.java/1.1/Tue Jul 3 10:13:46 2012//
+/getModifiers.java/1.1/Tue Jul 3 10:13:46 2012//
+/getName.java/1.1/Tue Jul 3 10:13:46 2012//
+/getPackage.java/1.1/Tue Jul 3 10:13:46 2012//
+/getSimpleName.java/1.1/Tue Jul 3 10:13:46 2012//
+/getSuperclass.java/1.1/Tue Jul 3 10:13:46 2012//
+/isAssignableFrom.java/1.1/Tue Jul 3 10:13:46 2012//
+/isInstance.java/1.1/Tue Jul 3 10:13:46 2012//
+/isInterface.java/1.1/Tue Jul 3 10:13:46 2012//
+/isLocalClass.java/1.1/Tue Jul 3 10:13:46 2012//
+/isMemberClass.java/1.1/Tue Jul 3 10:13:46 2012//
+/isPrimitive.java/1.1/Tue Jul 3 10:13:46 2012//
+/isSynthetic.java/1.1/Tue Jul 3 10:13:46 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Repository
new file mode 100644
index 00000000..0b9134ff
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalAccessException/classInfo
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..4d19362a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.IllegalAccessException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalAccessException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalAccessException
+ IllegalAccessException o = new IllegalAccessException("IllegalAccessException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalAccessException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..9717ea72
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalAccessException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getModifiers.java
new file mode 100644
index 00000000..86b87c3c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalAccessException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getName.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getName.java
new file mode 100644
index 00000000..f2993ca0
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalAccessException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getPackage.java
new file mode 100644
index 00000000..99595588
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalAccessException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..5a2c6a05
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalAccessException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..4c9ba07d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalAccessException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..bf9f6925
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalAccessException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInstance.java
new file mode 100644
index 00000000..3f74c5b0
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalAccessException("IllegalAccessException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInterface.java
new file mode 100644
index 00000000..2b9657b1
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..e9c4a42e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..d30d5ce0
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8af482c1
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..0b27d8b2
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalAccessException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test for method java.lang.IllegalAccessException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalAccessException("IllegalAccessException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalAccessException/constructor.java b/gnu/testlet/java/lang/IllegalAccessException/constructor.java
new file mode 100644
index 00000000..24bae3bf
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalAccessException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.IllegalAccessException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalAccessException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalAccessException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IllegalAccessException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalAccessException object1 = new IllegalAccessException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IllegalAccessException");
+
+ IllegalAccessException object2 = new IllegalAccessException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IllegalAccessException: nothing happens");
+
+ IllegalAccessException object3 = new IllegalAccessException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IllegalAccessException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries
new file mode 100644
index 00000000..1ad0b179
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 3 10:13:46 2012//
+/constructor.java/1.1/Tue Jul 3 10:13:46 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/CVS/Repository b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Repository
new file mode 100644
index 00000000..8b6cf042
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalArgumentException
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/CVS/Root b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/TryCatch.java b/gnu/testlet/java/lang/IllegalArgumentException/TryCatch.java
new file mode 100644
index 00000000..122d801e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalArgumentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalArgumentException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalArgumentException("IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Entries
new file mode 100644
index 00000000..012e5046
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 3 10:13:47 2012//
+/getInterfaces.java/1.1/Tue Jul 3 10:13:47 2012//
+/getModifiers.java/1.1/Tue Jul 3 10:13:47 2012//
+/getName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getPackage.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSimpleName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSuperclass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isAssignableFrom.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInstance.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInterface.java/1.1/Tue Jul 3 10:13:47 2012//
+/isLocalClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isMemberClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isPrimitive.java/1.1/Tue Jul 3 10:13:47 2012//
+/isSynthetic.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Repository
new file mode 100644
index 00000000..79230b8a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalArgumentException/classInfo
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..f5a42de1
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.IllegalArgumentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalArgumentException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalArgumentException
+ IllegalArgumentException o = new IllegalArgumentException("IllegalArgumentException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalArgumentException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..30434b5b
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getModifiers.java
new file mode 100644
index 00000000..80f109a8
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getName.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getName.java
new file mode 100644
index 00000000..0c5a7668
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalArgumentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getPackage.java
new file mode 100644
index 00000000..5f1b40d7
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..6d411956
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalArgumentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..4b22675a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalArgumentException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..755617bd
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalArgumentException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInstance.java
new file mode 100644
index 00000000..814896af
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalArgumentException("IllegalArgumentException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInterface.java
new file mode 100644
index 00000000..26dd6f62
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..548275bc
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..4a5be7fa
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..7adc9821
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..0771e3fb
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalArgumentException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test for method java.lang.IllegalArgumentException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalArgumentException("IllegalArgumentException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalArgumentException/constructor.java b/gnu/testlet/java/lang/IllegalArgumentException/constructor.java
new file mode 100644
index 00000000..5fad9585
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalArgumentException/constructor.java
@@ -0,0 +1,71 @@
+// Test if instances of a class java.lang.IllegalArgumentException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalArgumentException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalArgumentException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IllegalArgumentException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalArgumentException object1 = new IllegalArgumentException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IllegalArgumentException");
+
+ IllegalArgumentException object2 = new IllegalArgumentException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IllegalArgumentException: nothing happens");
+
+ IllegalArgumentException object3 = new IllegalArgumentException((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IllegalArgumentException");
+
+ IllegalArgumentException object4 = new IllegalArgumentException(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.IllegalArgumentException: java.lang.Throwable");
+
+ IllegalArgumentException object5 = new IllegalArgumentException((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.IllegalArgumentException");
+
+ IllegalArgumentException object6 = new IllegalArgumentException("nothing", new Throwable());
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.IllegalArgumentException: nothing");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries
new file mode 100644
index 00000000..39f9d67f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 3 10:13:47 2012//
+/constructor.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Repository b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Repository
new file mode 100644
index 00000000..28dfad72
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalMonitorStateException
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Root b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/TryCatch.java b/gnu/testlet/java/lang/IllegalMonitorStateException/TryCatch.java
new file mode 100644
index 00000000..96ae5374
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalMonitorStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalMonitorStateException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalMonitorStateException("IllegalMonitorStateException");
+ }
+ catch (IllegalMonitorStateException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Entries
new file mode 100644
index 00000000..012e5046
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 3 10:13:47 2012//
+/getInterfaces.java/1.1/Tue Jul 3 10:13:47 2012//
+/getModifiers.java/1.1/Tue Jul 3 10:13:47 2012//
+/getName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getPackage.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSimpleName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSuperclass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isAssignableFrom.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInstance.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInterface.java/1.1/Tue Jul 3 10:13:47 2012//
+/isLocalClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isMemberClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isPrimitive.java/1.1/Tue Jul 3 10:13:47 2012//
+/isSynthetic.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Repository
new file mode 100644
index 00000000..477e05d9
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..ddf7b5ca
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.IllegalMonitorStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalMonitorStateException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalMonitorStateException
+ IllegalMonitorStateException o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalMonitorStateException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..837650df
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getModifiers.java
new file mode 100644
index 00000000..9e962f68
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getName.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getName.java
new file mode 100644
index 00000000..e313d887
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalMonitorStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getPackage.java
new file mode 100644
index 00000000..dc4e8f39
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..7b2190e9
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalMonitorStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..1fa367d2
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..29c02716
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalMonitorStateException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInstance.java
new file mode 100644
index 00000000..0dde528a
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalMonitorStateException("IllegalMonitorStateException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInterface.java
new file mode 100644
index 00000000..2e05e263
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..dce1dada
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..9f07febc
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..68590694
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..643fe83d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalMonitorStateException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalMonitorStateException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalMonitorStateException("IllegalMonitorStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalMonitorStateException/constructor.java b/gnu/testlet/java/lang/IllegalMonitorStateException/constructor.java
new file mode 100644
index 00000000..6f4bc84f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalMonitorStateException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.IllegalMonitorStateException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalMonitorStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalMonitorStateException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IllegalMonitorStateException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalMonitorStateException object1 = new IllegalMonitorStateException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IllegalMonitorStateException");
+
+ IllegalMonitorStateException object2 = new IllegalMonitorStateException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IllegalMonitorStateException: nothing happens");
+
+ IllegalMonitorStateException object3 = new IllegalMonitorStateException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IllegalMonitorStateException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/CVS/Entries b/gnu/testlet/java/lang/IllegalStateException/CVS/Entries
new file mode 100644
index 00000000..39f9d67f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 3 10:13:47 2012//
+/constructor.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalStateException/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalStateException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalStateException/CVS/Repository b/gnu/testlet/java/lang/IllegalStateException/CVS/Repository
new file mode 100644
index 00000000..a8760453
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalStateException
diff --git a/gnu/testlet/java/lang/IllegalStateException/CVS/Root b/gnu/testlet/java/lang/IllegalStateException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalStateException/TryCatch.java b/gnu/testlet/java/lang/IllegalStateException/TryCatch.java
new file mode 100644
index 00000000..3f2a45e3
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalStateException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalStateException("IllegalStateException");
+ }
+ catch (IllegalStateException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Entries
new file mode 100644
index 00000000..012e5046
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 3 10:13:47 2012//
+/getInterfaces.java/1.1/Tue Jul 3 10:13:47 2012//
+/getModifiers.java/1.1/Tue Jul 3 10:13:47 2012//
+/getName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getPackage.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSimpleName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSuperclass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isAssignableFrom.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInstance.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInterface.java/1.1/Tue Jul 3 10:13:47 2012//
+/isLocalClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isMemberClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isPrimitive.java/1.1/Tue Jul 3 10:13:47 2012//
+/isSynthetic.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Repository
new file mode 100644
index 00000000..d2b1974f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalStateException/classInfo
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..017655c8
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.IllegalStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalStateException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalStateException
+ IllegalStateException o = new IllegalStateException("IllegalStateException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalStateException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ae0983b3
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalStateException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f4ef0eca
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalStateException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getName.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getName.java
new file mode 100644
index 00000000..cca111af
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getPackage.java
new file mode 100644
index 00000000..9f3a7c90
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalStateException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..a0878a2d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..08529ee8
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalStateException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..8cc68fc3
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalStateException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isInstance.java
new file mode 100644
index 00000000..29137bfc
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalStateException("IllegalStateException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isInterface.java
new file mode 100644
index 00000000..6d745ed8
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..2e7dcb63
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..2364fc87
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..a956b54d
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalStateException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..3e7f7b81
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalStateException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalStateException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalStateException("IllegalStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalStateException/constructor.java b/gnu/testlet/java/lang/IllegalStateException/constructor.java
new file mode 100644
index 00000000..1a695c01
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalStateException/constructor.java
@@ -0,0 +1,71 @@
+// Test if instances of a class java.lang.IllegalStateException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalStateException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IllegalStateException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalStateException object1 = new IllegalStateException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IllegalStateException");
+
+ IllegalStateException object2 = new IllegalStateException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IllegalStateException: nothing happens");
+
+ IllegalStateException object3 = new IllegalStateException((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IllegalStateException");
+
+ IllegalStateException object4 = new IllegalStateException(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.IllegalStateException: java.lang.Throwable");
+
+ IllegalStateException object5 = new IllegalStateException((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.IllegalStateException");
+
+ IllegalStateException object6 = new IllegalStateException("nothing", new Throwable());
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.IllegalStateException: nothing");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries
new file mode 100644
index 00000000..39f9d67f
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 3 10:13:47 2012//
+/constructor.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries.Log b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Repository b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Repository
new file mode 100644
index 00000000..c6a6b13e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalThreadStateException
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Root b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/TryCatch.java b/gnu/testlet/java/lang/IllegalThreadStateException/TryCatch.java
new file mode 100644
index 00000000..abf17a0e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IllegalThreadStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IllegalThreadStateException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalThreadStateException("IllegalThreadStateException");
+ }
+ catch (IllegalThreadStateException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Entries
new file mode 100644
index 00000000..012e5046
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 3 10:13:47 2012//
+/getInterfaces.java/1.1/Tue Jul 3 10:13:47 2012//
+/getModifiers.java/1.1/Tue Jul 3 10:13:47 2012//
+/getName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getPackage.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSimpleName.java/1.1/Tue Jul 3 10:13:47 2012//
+/getSuperclass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isAssignableFrom.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInstance.java/1.1/Tue Jul 3 10:13:47 2012//
+/isInterface.java/1.1/Tue Jul 3 10:13:47 2012//
+/isLocalClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isMemberClass.java/1.1/Tue Jul 3 10:13:47 2012//
+/isPrimitive.java/1.1/Tue Jul 3 10:13:47 2012//
+/isSynthetic.java/1.1/Tue Jul 3 10:13:47 2012//
+D
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Repository
new file mode 100644
index 00000000..810fe9c9
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IllegalThreadStateException/classInfo
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Root b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..65c275c3
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.IllegalThreadStateException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IllegalThreadStateException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalThreadStateException
+ IllegalThreadStateException o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalThreadStateException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..0b405280
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getModifiers.java
new file mode 100644
index 00000000..ce09aa9c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getName.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getName.java
new file mode 100644
index 00000000..7ff15035
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IllegalThreadStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getPackage.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getPackage.java
new file mode 100644
index 00000000..6fc09880
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..1d32aeb8
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalThreadStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..54a1861c
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IllegalArgumentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..0c13a434
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalThreadStateException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInstance.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInstance.java
new file mode 100644
index 00000000..060f45ce
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalThreadStateException("IllegalThreadStateException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInterface.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInterface.java
new file mode 100644
index 00000000..8452ef8e
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..5bd612d6
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..cb3153b1
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..20dedaae
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..3c7ed5c1
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IllegalThreadStateException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test for method java.lang.IllegalThreadStateException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IllegalThreadStateException("IllegalThreadStateException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IllegalThreadStateException/constructor.java b/gnu/testlet/java/lang/IllegalThreadStateException/constructor.java
new file mode 100644
index 00000000..34dcda08
--- /dev/null
+++ b/gnu/testlet/java/lang/IllegalThreadStateException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.IllegalThreadStateException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IllegalThreadStateException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IllegalThreadStateException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IllegalThreadStateException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalThreadStateException object1 = new IllegalThreadStateException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IllegalThreadStateException");
+
+ IllegalThreadStateException object2 = new IllegalThreadStateException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IllegalThreadStateException: nothing happens");
+
+ IllegalThreadStateException object3 = new IllegalThreadStateException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IllegalThreadStateException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Entries b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Entries
new file mode 100644
index 00000000..d83914e9
--- /dev/null
+++ b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:30 2012//
+D
diff --git a/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Repository b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Repository
new file mode 100644
index 00000000..9b853e2e
--- /dev/null
+++ b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IncompatibleClassChangeError
diff --git a/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Root b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IncompatibleClassChangeError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IncompatibleClassChangeError/TryCatch.java b/gnu/testlet/java/lang/IncompatibleClassChangeError/TryCatch.java
new file mode 100644
index 00000000..90be0dd6
--- /dev/null
+++ b/gnu/testlet/java/lang/IncompatibleClassChangeError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IncompatibleClassChangeError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IncompatibleClassChangeError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IncompatibleClassChangeError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IncompatibleClassChangeError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IncompatibleClassChangeError("IncompatibleClassChangeError");
+ }
+ catch (IncompatibleClassChangeError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IncompatibleClassChangeError/constructor.java b/gnu/testlet/java/lang/IncompatibleClassChangeError/constructor.java
new file mode 100644
index 00000000..70961603
--- /dev/null
+++ b/gnu/testlet/java/lang/IncompatibleClassChangeError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.IncompatibleClassChangeError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IncompatibleClassChangeError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IncompatibleClassChangeError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.IncompatibleClassChangeError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IncompatibleClassChangeError error1 = new IncompatibleClassChangeError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.IncompatibleClassChangeError");
+
+ IncompatibleClassChangeError error2 = new IncompatibleClassChangeError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.IncompatibleClassChangeError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries
new file mode 100644
index 00000000..a597297f
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jul 4 13:16:22 2012//
+/constructor.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries.Log b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Repository b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Repository
new file mode 100644
index 00000000..6dee49fa
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IndexOutOfBoundsException
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Root b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/TryCatch.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/TryCatch.java
new file mode 100644
index 00000000..7f21ec6a
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.IndexOutOfBoundsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.IndexOutOfBoundsException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IndexOutOfBoundsException("IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Entries b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Entries
new file mode 100644
index 00000000..62d777e9
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jul 4 13:16:22 2012//
+/getInterfaces.java/1.1/Wed Jul 4 13:16:22 2012//
+/getModifiers.java/1.1/Wed Jul 4 13:16:22 2012//
+/getName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getPackage.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSimpleName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSuperclass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isAssignableFrom.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInstance.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInterface.java/1.1/Wed Jul 4 13:16:22 2012//
+/isLocalClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isMemberClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isPrimitive.java/1.1/Wed Jul 4 13:16:22 2012//
+/isSynthetic.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Repository b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Repository
new file mode 100644
index 00000000..e1f1ef4d
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Root b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..4a480334
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.IndexOutOfBoundsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.IndexOutOfBoundsException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IndexOutOfBoundsException
+ IndexOutOfBoundsException o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IndexOutOfBoundsException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..c3981c42
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getModifiers.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getModifiers.java
new file mode 100644
index 00000000..0a170ae1
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getName.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getName.java
new file mode 100644
index 00000000..47f48888
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.IndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getPackage.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getPackage.java
new file mode 100644
index 00000000..edf640f2
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..6508c7f3
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..b088d6e4
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..a2495a2b
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IndexOutOfBoundsException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInstance.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInstance.java
new file mode 100644
index 00000000..94b2b0dc
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new IndexOutOfBoundsException("IndexOutOfBoundsException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInterface.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInterface.java
new file mode 100644
index 00000000..d69e0299
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..fbb6bb73
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..eec7e5f8
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..4fdc12fa
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..ec0d2169
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.IndexOutOfBoundsException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.IndexOutOfBoundsException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new IndexOutOfBoundsException("IndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/IndexOutOfBoundsException/constructor.java b/gnu/testlet/java/lang/IndexOutOfBoundsException/constructor.java
new file mode 100644
index 00000000..3fdd0119
--- /dev/null
+++ b/gnu/testlet/java/lang/IndexOutOfBoundsException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.IndexOutOfBoundsException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.IndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.IndexOutOfBoundsException;
+
+
+
+/**
+ * Test if instances of a class java.lang.IndexOutOfBoundsException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IndexOutOfBoundsException object1 = new IndexOutOfBoundsException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.IndexOutOfBoundsException");
+
+ IndexOutOfBoundsException object2 = new IndexOutOfBoundsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.IndexOutOfBoundsException: nothing happens");
+
+ IndexOutOfBoundsException object3 = new IndexOutOfBoundsException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.IndexOutOfBoundsException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Entries b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Entries
new file mode 100644
index 00000000..6aac3ec5
--- /dev/null
+++ b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.1/Thu Mar 3 09:27:54 2005//
+D
diff --git a/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Repository b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Repository
new file mode 100644
index 00000000..531ff714
--- /dev/null
+++ b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InheritableThreadLocal
diff --git a/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Root b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InheritableThreadLocal/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InheritableThreadLocal/simple.java b/gnu/testlet/java/lang/InheritableThreadLocal/simple.java
new file mode 100644
index 00000000..d2484d38
--- /dev/null
+++ b/gnu/testlet/java/lang/InheritableThreadLocal/simple.java
@@ -0,0 +1,76 @@
+// Simple tests of InheritableThreadLocal
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.3
+
+package gnu.testlet.java.lang.InheritableThreadLocal;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class simple implements Testlet, Runnable
+{
+ private class TestInheritableThreadLocal extends InheritableThreadLocal
+ {
+ public Object initialValue ()
+ {
+ return "Maude";
+ }
+
+ protected Object childValue(Object parentValue)
+ {
+ myHarness.check (parentValue, "Liver", "Check parent value");
+ return "Spice";
+ }
+ }
+
+ private TestHarness myHarness;
+ private TestInheritableThreadLocal loc = new TestInheritableThreadLocal();
+
+ public void run ()
+ {
+ myHarness.check (loc.get (), "Spice", "Child value in new thread");
+ loc.set ("Wednesday");
+ myHarness.check (loc.get (), "Wednesday", "Changed value in new thread");
+ }
+
+ public void test (TestHarness harness)
+ {
+ this.myHarness = harness;
+
+ harness.check (loc.get (), "Maude", "Check initial value");
+
+ loc.set ("Liver");
+ harness.check (loc.get (), "Liver", "Check changed value");
+
+ try
+ {
+ Thread t = new Thread(this);
+ t.start ();
+ t.join ();
+ }
+ catch (InterruptedException _)
+ {
+ }
+
+ harness.check (loc.get (), "Liver", "Value didn't change");
+ }
+}
diff --git a/gnu/testlet/java/lang/InstantiationError/CVS/Entries b/gnu/testlet/java/lang/InstantiationError/CVS/Entries
new file mode 100644
index 00000000..4116e5e5
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Mon May 28 09:55:07 2012//
+D
diff --git a/gnu/testlet/java/lang/InstantiationError/CVS/Repository b/gnu/testlet/java/lang/InstantiationError/CVS/Repository
new file mode 100644
index 00000000..889594d9
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InstantiationError
diff --git a/gnu/testlet/java/lang/InstantiationError/CVS/Root b/gnu/testlet/java/lang/InstantiationError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InstantiationError/TryCatch.java b/gnu/testlet/java/lang/InstantiationError/TryCatch.java
new file mode 100644
index 00000000..0828d0c7
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.InstantiationError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.InstantiationError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InstantiationError("InstantiationError");
+ }
+ catch (InstantiationError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationError/constructor.java b/gnu/testlet/java/lang/InstantiationError/constructor.java
new file mode 100644
index 00000000..df761999
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationError/constructor.java
@@ -0,0 +1,57 @@
+// Test if constructor is working properly for a class java.lang.InstantiationError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.InstantiationError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InstantiationError error1 = new InstantiationError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.InstantiationError");
+
+ InstantiationError error2 = new InstantiationError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.InstantiationError: nothing happens");
+
+ InstantiationError error3 = new InstantiationError(null);
+ harness.check(error3 != null);
+ harness.check(error3.toString(), "java.lang.InstantiationError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/CVS/Entries b/gnu/testlet/java/lang/InstantiationException/CVS/Entries
new file mode 100644
index 00000000..a597297f
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jul 4 13:16:22 2012//
+/constructor.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/InstantiationException/CVS/Entries.Log b/gnu/testlet/java/lang/InstantiationException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/InstantiationException/CVS/Repository b/gnu/testlet/java/lang/InstantiationException/CVS/Repository
new file mode 100644
index 00000000..4bfb7a45
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InstantiationException
diff --git a/gnu/testlet/java/lang/InstantiationException/CVS/Root b/gnu/testlet/java/lang/InstantiationException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InstantiationException/TryCatch.java b/gnu/testlet/java/lang/InstantiationException/TryCatch.java
new file mode 100644
index 00000000..34da8c8c
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.InstantiationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.InstantiationException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InstantiationException("InstantiationException");
+ }
+ catch (InstantiationException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Entries b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Entries
new file mode 100644
index 00000000..62d777e9
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jul 4 13:16:22 2012//
+/getInterfaces.java/1.1/Wed Jul 4 13:16:22 2012//
+/getModifiers.java/1.1/Wed Jul 4 13:16:22 2012//
+/getName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getPackage.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSimpleName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSuperclass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isAssignableFrom.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInstance.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInterface.java/1.1/Wed Jul 4 13:16:22 2012//
+/isLocalClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isMemberClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isPrimitive.java/1.1/Wed Jul 4 13:16:22 2012//
+/isSynthetic.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Repository b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Repository
new file mode 100644
index 00000000..20e720cc
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InstantiationException/classInfo
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Root b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/InstantiationException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..ba2a4363
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.InstantiationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.InstantiationException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class InstantiationException
+ InstantiationException o = new InstantiationException("InstantiationException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof InstantiationException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..065d9b3a
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.InstantiationException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getModifiers.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f555ad47
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.InstantiationException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getName.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getName.java
new file mode 100644
index 00000000..db36aa01
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.InstantiationException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getPackage.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getPackage.java
new file mode 100644
index 00000000..79bfaf4a
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.InstantiationException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..73a3ca99
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "InstantiationException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/InstantiationException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..054c2625
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.InstantiationException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..6e17dc22
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(InstantiationException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isInstance.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isInstance.java
new file mode 100644
index 00000000..dd7ee57f
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new InstantiationException("InstantiationException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isInterface.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isInterface.java
new file mode 100644
index 00000000..a06624a9
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..e166b92b
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..92aab39f
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..f8674658
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/InstantiationException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..4d0d7f64
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InstantiationException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test for method java.lang.InstantiationException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InstantiationException("InstantiationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InstantiationException/constructor.java b/gnu/testlet/java/lang/InstantiationException/constructor.java
new file mode 100644
index 00000000..17dae2d7
--- /dev/null
+++ b/gnu/testlet/java/lang/InstantiationException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.InstantiationException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InstantiationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InstantiationException;
+
+
+
+/**
+ * Test if instances of a class java.lang.InstantiationException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InstantiationException object1 = new InstantiationException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.InstantiationException");
+
+ InstantiationException object2 = new InstantiationException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.InstantiationException: nothing happens");
+
+ InstantiationException object3 = new InstantiationException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.InstantiationException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/.cvsignore b/gnu/testlet/java/lang/Integer/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Integer/CVS/Entries b/gnu/testlet/java/lang/Integer/CVS/Entries
new file mode 100644
index 00000000..3d24582e
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/CVS/Entries
@@ -0,0 +1,14 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/IntegerTest.java/1.5/Sun Jan 29 23:12:50 2006//
+/Tests15.java/1.1/Tue Jul 1 10:03:42 2008//
+/compareTo.java/1.2/Wed Dec 27 15:48:18 2006//
+/compareToObject.java/1.1/Fri Mar 2 16:12:18 2012//
+/decode.java/1.1/Thu May 5 08:03:36 2005//
+/getInteger.java/1.10/Wed May 12 14:17:49 2004//
+/integerDivide.java/1.2/Tue Dec 18 10:49:21 2012//
+/integerModulo.java/1.1/Tue Dec 18 10:49:21 2012//
+/new_Integer.java/1.10/Mon Sep 5 13:28:49 2011//
+/parseInt.java/1.5/Fri Aug 19 09:33:17 2011//
+/parseIntRadix.java/1.1/Thu Mar 8 10:27:49 2012//
+/toString.java/1.1/Fri May 25 15:43:40 2012//
+D
diff --git a/gnu/testlet/java/lang/Integer/CVS/Entries.Log b/gnu/testlet/java/lang/Integer/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Integer/CVS/Repository b/gnu/testlet/java/lang/Integer/CVS/Repository
new file mode 100644
index 00000000..77ae60d6
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Integer
diff --git a/gnu/testlet/java/lang/Integer/CVS/Root b/gnu/testlet/java/lang/Integer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Integer/IntegerTest.java b/gnu/testlet/java/lang/Integer/IntegerTest.java
new file mode 100644
index 00000000..6246f58e
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/IntegerTest.java
@@ -0,0 +1,353 @@
+/* Copyright (C) 1999, 2001 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: JDK1.0
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class IntegerTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.check(!( Integer.MIN_VALUE != 0x80000000 ||
+ Integer.MAX_VALUE != 0x7fffffff ),
+ "test_Basics - 1" );
+
+ harness.check(Integer.TYPE
+ == new int[0].getClass().getComponentType(),
+ "test_Basics - 1a");
+
+ Integer i1 = new Integer(100);
+
+ harness.check(!( i1.intValue() != 100 ),
+ "test_Basics - 2" );
+
+ try {
+ harness.check(!( (new Integer("234")).intValue() != 234 ),
+ "test_Basics - 3" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 3" );
+ }
+
+ try {
+ harness.check(!( (new Integer("-FF")).intValue() != -255 ),
+ "test_Basics - 4" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+
+ try {
+ new Integer("babu");
+ harness.fail("test_Basics - 5" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+ harness.check(!( Integer.decode( "123").intValue() != 123 ),
+ "test_Basics - 6" );
+ harness.check(!( Integer.decode( "32767").intValue() != 32767 ),
+ "test_Basics - 7" );
+
+ }
+
+ public void test_toString()
+ {
+ harness.check(!( !( new Integer(123)).toString().equals("123")),
+ "test_toString - 1" );
+ harness.check(!( !( new Integer(-44)).toString().equals("-44")),
+ "test_toString - 2" );
+
+ harness.check(!( !Integer.toString( 234 ).equals ("234" )),
+ "test_toString - 3" );
+ harness.check(!( !Integer.toString( -34 ).equals ("-34" )),
+ "test_toString - 4" );
+ harness.check(!( !Integer.toString( -34 ).equals ("-34" )),
+ "test_toString - 5" );
+
+ harness.check(!( !Integer.toString(99 , 1 ).equals("99")),
+ "test_toString - 6" );
+ harness.check(!( !Integer.toString(99 , 37 ).equals("99")),
+ "test_toString - 7" );
+
+ harness.check(!( !Integer.toString(15 , 2 ).equals("1111")),
+ "test_toString - 8" );
+ harness.check(!( !Integer.toString(37 , 36 ).equals("11")),
+ "test_toString - 9" );
+ harness.check(!( !Integer.toString(31 , 16 ).equals("1f")),
+ "test_toString - 10" );
+
+
+ harness.check(!( !Integer.toString(-99 , 1 ).equals("-99")),
+ "test_toString - 11" );
+ harness.check(!( !Integer.toString(-99 , 37 ).equals("-99")),
+ "test_toString - 12" );
+
+ harness.check(!( !Integer.toString(-15 , 2 ).equals("-1111")),
+ "test_toString - 13" );
+ harness.check(!( !Integer.toString(-37 , 36 ).equals("-11")),
+ "test_toString - 14" );
+ harness.check(!( !Integer.toString(-31 , 16 ).equals("-1f")),
+ "test_toString - 15" );
+ }
+
+ public void test_equals()
+ {
+ Integer i1 = new Integer(23);
+ Integer i2 = new Integer(-23);
+
+ harness.check(!( !i1.equals( new Integer(23))),
+ "test_equals - 1" );
+ harness.check(!( !i2.equals( new Integer(-23))),
+ "test_equals - 2" );
+
+
+ harness.check(!( i1.equals( i2 )),
+ "test_equals - 3" );
+
+ harness.check(!( i1.equals(null)),
+ "test_equals - 4" );
+ }
+
+ public void test_hashCode( )
+ {
+ Integer b1 = new Integer(3439);
+ Integer b2 = new Integer(-3439);
+
+ harness.check(!( b1.hashCode() != 3439 || b2.hashCode() != -3439 ),
+ "test_hashCode" );
+ }
+
+ public void test_intValue( )
+ {
+ Integer b1 = new Integer(32767);
+ Integer b2 = new Integer(-32767);
+
+ harness.check(!( b1.intValue() != 32767 ),
+ "test_intValue - 1" );
+
+ harness.check(!( b2.intValue() != -32767 ),
+ "test_intValue - 2" );
+ }
+
+ public void test_longValue( )
+ {
+ Integer b1 = new Integer(3767);
+ Integer b2 = new Integer(-3767);
+
+ harness.check(!( b1.longValue() != (long)3767 ),
+ "test_longValue - 1" );
+
+ harness.check(!( b2.longValue() != -3767 ),
+ "test_longValue - 2" );
+ }
+ public void test_floatValue( )
+ {
+ Integer b1 = new Integer(3276);
+ Integer b2 = new Integer(-3276);
+
+ harness.check(!( b1.floatValue() != 3276.0f ),
+ "test_floatValue - 1" );
+
+ harness.check(!( b2.floatValue() != -3276.0f ),
+ "test_floatValue - 2" );
+ }
+ public void test_doubleValue( )
+ {
+ Integer b1 = new Integer(0);
+ Integer b2 = new Integer(30);
+
+ harness.check(!( b1.doubleValue() != 0.0 ),
+ "test_doubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != 30.0 ),
+ "test_doubleValue - 2" );
+ }
+
+ public void test_shortbyteValue( )
+ {
+ Integer b1 = new Integer(0);
+ Integer b2 = new Integer(300);
+
+ harness.check(!( b1.byteValue() != 0 ),
+ "test_shortbyteValue - 1" );
+
+ harness.check(!( b2.byteValue() != (byte)300 ),
+ "test_shortbyteValue - 2" );
+ harness.check(!( b1.shortValue() != 0 ),
+ "test_shortbyteValue - 3" );
+
+ harness.check(!( b2.shortValue() != (short)300 ),
+ "test_shortbyteValue - 4" );
+ harness.check(!( ((Number)b1).shortValue() != 0 ),
+ "test_shortbyteValue - 5" );
+
+ harness.check(!( ((Number)b2).byteValue() != (byte)300 ),
+ "test_shortbyteValue - 6" );
+ }
+
+ public void test_toHexString()
+ {
+ String str, str1;
+
+ str = Integer.toHexString(8375);
+ str1 = Integer.toHexString( -5361 );
+
+ harness.check( "20b7".equals(str),
+ "test_toHexString - 1" );
+
+ harness.check( "ffffeb0f".equals(str1),
+ "test_toHexString - 2" );
+ }
+
+ public void test_toOctalString()
+ {
+ String str, str1;
+ str = Integer.toOctalString(5847);
+ str1= Integer.toOctalString(-9863 );
+
+ harness.check(!( !str.equals("13327")),
+ "test_toOctalString - 1" );
+
+ harness.check(!( !str1.equals("37777754571")),
+ "test_toOctalString - 2" );
+ }
+
+ public void test_toBinaryString()
+ {
+ harness.check(!( !Integer.toBinaryString(358).equals("101100110")),
+ "test_toBinaryString - 1" );
+
+ harness.check(!( !Integer.toBinaryString( -5478 ).equals("11111111111111111110101010011010")),
+ "test_toBinaryString - 2" );
+ }
+
+ public void test_parseInt()
+ {
+ harness.check(!( Integer.parseInt("473") != Integer.parseInt("473" , 10 )),
+ "test_parseInt - 1" );
+
+ harness.check(!( Integer.parseInt("0" , 10 ) != 0 ),
+ "test_parseInt - 2" );
+
+ harness.check(!( Integer.parseInt("473" , 10 ) != 473 ),
+ "test_parseInt - 3" );
+ harness.check(!( Integer.parseInt("-0" , 10 ) != 0 ),
+ "test_parseInt - 4" );
+ harness.check(!( Integer.parseInt("-FF" , 16 ) != -255 ),
+ "test_parseInt - 5" );
+ harness.check(!( Integer.parseInt("1100110" , 2 ) != 102 ),
+ "test_parseInt - 6" );
+ harness.check(!( Integer.parseInt("2147483647" , 10 ) != 2147483647 ),
+ "test_parseInt - 7" );
+ harness.check(!( Integer.parseInt("-2147483647" , 10 ) != -2147483647 ),
+ "test_parseInt - 8" );
+ try {
+ Integer.parseInt("2147483648" , 10 );
+ harness.fail("test_parseInt - 9" );
+ }catch ( NumberFormatException e ){}
+ try {
+ Integer.parseInt("99" , 8 );
+ harness.fail("test_parseInt - 10" );
+ }catch ( NumberFormatException e ){}
+ try {
+ Integer.parseInt("kona" , 10 );
+ harness.fail("test_parseInt - 11" );
+ }catch ( NumberFormatException e ){}
+ harness.check(!( Integer.parseInt("Kona" , 27 ) != 411787 ),
+ "test_parseInt - 12" );
+ }
+
+ public void test_valueOf( )
+ {
+ harness.check(!( Integer.valueOf("21234").intValue() != Integer.parseInt("21234")),
+ "test_valueOf - 1" );
+ harness.check(!( Integer.valueOf("Kona", 27).intValue() != Integer.parseInt("Kona", 27)),
+ "test_valueOf - 2" );
+ }
+
+ public void test_getInteger( )
+ {
+ java.util.Properties prop = System.getProperties();
+ prop.put("integerkey1" , "2345" );
+ prop.put("integerkey2" , "-984" );
+ prop.put("integerkey3" , "-0" );
+
+ prop.put("integerkey4" , "#1f" );
+ prop.put("integerkey5" , "0x1f" );
+ prop.put("integerkey6" , "017" );
+
+ prop.put("integerkey7" , "babu" );
+
+
+
+ System.setProperties(prop);
+
+ harness.check(!( Integer.getInteger("integerkey1").intValue() != 2345 ||
+ Integer.getInteger("integerkey2").intValue() != -984 ||
+ Integer.getInteger("integerkey3").intValue() != 0 ),
+ "test_getInteger - 1" );
+
+ harness.check(!( Integer.getInteger("integerkey4", new Integer(0)).intValue() != 31 ||
+ Integer.getInteger("integerkey5",new Integer(0)).intValue() != 31 ||
+ Integer.getInteger("integerkey6",new Integer(0)).intValue() != 15 ),
+ "test_getInteger - 2" );
+
+ harness.check(!( Integer.getInteger("integerkey7", new Integer(0)).intValue() != 0 ),
+ "test_getInteger - 3" );
+ harness.check(!( Integer.getInteger("integerkey7", 0).intValue() != 0 ),
+ "test_getInteger - 4" );
+
+ }
+
+
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_intValue();
+ test_longValue();
+ test_floatValue();
+ test_doubleValue();
+ test_shortbyteValue();
+ test_toHexString();
+ test_toOctalString();
+ test_toBinaryString();
+ test_parseInt();
+ test_valueOf();
+ test_getInteger();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Integer/Tests15.java b/gnu/testlet/java/lang/Integer/Tests15.java
new file mode 100644
index 00000000..df0e77ec
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/Tests15.java
@@ -0,0 +1,89 @@
+/* Tests15.java -- tests for 1.5 features of Integer
+ Copyright (C) 2005, 2008 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Integer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Tests15 implements Testlet {
+
+ public void test(TestHarness harness) {
+ harness.check(Integer.SIZE, 32);
+ harness.check(Integer.valueOf(123456), new Integer(123456));
+
+ harness.checkPoint("bitCount");
+ harness.check(Integer.bitCount(0xffffffff), 32);
+ harness.check(Integer.bitCount(0x55555555), 16);
+ harness.check(Integer.bitCount(0), 0);
+ harness.check(Integer.bitCount(0x5555aaaa), 16);
+ harness.check(Integer.bitCount(0x12488421), 8);
+
+ harness.checkPoint("rotateLeft");
+ harness.check(Integer.rotateLeft(0xffff0000, 8), 0xff0000ff);
+ harness.check(Integer.rotateLeft(0x12345678, 64), 0x12345678);
+
+ harness.checkPoint("rotateRight");
+ harness.check(Integer.rotateRight(0xffff0000, 8), 0x00ffff00);
+ harness.check(Integer.rotateRight(0x12345678, 64), 0x12345678);
+
+ harness.checkPoint("highestOneBit");
+ harness.check(Integer.highestOneBit(0x0ff000ff), 0x08000000);
+ harness.check(Integer.highestOneBit(0xf000000f), 0x80000000);
+ harness.check(Integer.highestOneBit(0), 0);
+
+ harness.checkPoint("numberOfLeadingZeros");
+ harness.check(Integer.numberOfLeadingZeros(0xf0000000), 0);
+ harness.check(Integer.numberOfLeadingZeros(0x05050505), 5);
+ harness.check(Integer.numberOfLeadingZeros(1), 31);
+ harness.check(Integer.numberOfLeadingZeros(0), 32);
+
+ harness.checkPoint("lowestOneBit");
+ harness.check(Integer.lowestOneBit(0x0ff000ff), 1);
+ harness.check(Integer.lowestOneBit(0xf000000f), 1);
+ harness.check(Integer.lowestOneBit(0xf0000f00), 0x100);
+ harness.check(Integer.lowestOneBit(0), 0);
+
+ harness.checkPoint("numberOfTrailingZeros");
+ harness.check(Integer.numberOfTrailingZeros(5), 0);
+ harness.check(Integer.numberOfTrailingZeros(0xf0), 4);
+ harness.check(Integer.numberOfTrailingZeros(0x80000000), 31);
+ harness.check(Integer.numberOfTrailingZeros(0), 32);
+
+ harness.checkPoint("signum");
+ harness.check(Integer.signum(0), 0);
+ harness.check(Integer.signum(1), 1);
+ harness.check(Integer.signum(0x7fffffff), 1);
+ harness.check(Integer.signum(0x80000000), -1);
+ harness.check(Integer.signum(-1), -1);
+
+ harness.checkPoint("reverseBytes");
+ harness.check(Integer.reverseBytes(0), 0);
+ harness.check(Integer.reverseBytes(0x12345678), 0x78563412);
+
+ harness.checkPoint("reverse");
+ harness.check(Integer.reverse(0), 0);
+ harness.check(Integer.reverse(-1), -1);
+ harness.check(Integer.reverse(0x55555555), 0xaaaaaaaa);
+ }
+}
diff --git a/gnu/testlet/java/lang/Integer/classInfo/CVS/Entries b/gnu/testlet/java/lang/Integer/classInfo/CVS/Entries
new file mode 100644
index 00000000..14c2075d
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Thu May 10 14:49:32 2012//
+/getInterfaces.java/1.1/Thu May 10 14:49:32 2012//
+/getModifiers.java/1.1/Thu May 10 14:49:32 2012//
+/getName.java/1.1/Thu May 10 14:49:32 2012//
+/getPackage.java/1.1/Thu May 10 14:49:32 2012//
+/getSimpleName.java/1.1/Thu May 10 14:49:32 2012//
+/getSuperclass.java/1.1/Thu May 10 14:49:32 2012//
+/isAnnotation.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnnotationPresent.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnonymousClass.java/1.1/Thu Sep 20 07:57:17 2012//
+/isArray.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAssignableFrom.java/1.1/Thu May 10 14:49:32 2012//
+/isEnum.java/1.1/Thu Sep 20 07:57:17 2012//
+/isInstance.java/1.1/Thu May 10 14:49:32 2012//
+/isInterface.java/1.1/Thu May 10 14:49:32 2012//
+/isLocalClass.java/1.1/Thu May 10 14:49:32 2012//
+/isMemberClass.java/1.1/Thu May 10 14:49:32 2012//
+/isPrimitive.java/1.1/Thu May 10 14:49:32 2012//
+/isSynthetic.java/1.1/Thu May 10 14:49:32 2012//
+D
diff --git a/gnu/testlet/java/lang/Integer/classInfo/CVS/Repository b/gnu/testlet/java/lang/Integer/classInfo/CVS/Repository
new file mode 100644
index 00000000..1f4eeb73
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Integer/classInfo
diff --git a/gnu/testlet/java/lang/Integer/classInfo/CVS/Root b/gnu/testlet/java/lang/Integer/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Integer/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Integer/classInfo/InstanceOf.java
new file mode 100644
index 00000000..2ddb51b5
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Integer
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Integer
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Integer o = new Integer(42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Integer);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Integer/classInfo/getInterfaces.java
new file mode 100644
index 00000000..49d7fec6
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Integer.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getModifiers.java b/gnu/testlet/java/lang/Integer/classInfo/getModifiers.java
new file mode 100644
index 00000000..17365c51
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Integer.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getName.java b/gnu/testlet/java/lang/Integer/classInfo/getName.java
new file mode 100644
index 00000000..1cf8c64d
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Integer");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getPackage.java b/gnu/testlet/java/lang/Integer/classInfo/getPackage.java
new file mode 100644
index 00000000..cb6f26e7
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Integer.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Integer/classInfo/getSimpleName.java
new file mode 100644
index 00000000..c280bd7c
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Integer");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Integer/classInfo/getSuperclass.java
new file mode 100644
index 00000000..91dc1e34
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Integer.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Integer/classInfo/isAnnotation.java
new file mode 100644
index 00000000..12e8a4aa
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Integer/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..1e37bdfc
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Integer.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Integer/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..bc1bc5ca
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isArray.java b/gnu/testlet/java/lang/Integer/classInfo/isArray.java
new file mode 100644
index 00000000..34aecaac
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Integer/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..3e912d49
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Integer.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isEnum.java b/gnu/testlet/java/lang/Integer/classInfo/isEnum.java
new file mode 100644
index 00000000..b14e286b
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Integer
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isInstance.java b/gnu/testlet/java/lang/Integer/classInfo/isInstance.java
new file mode 100644
index 00000000..ec9fce0d
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Integer(42)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isInterface.java b/gnu/testlet/java/lang/Integer/classInfo/isInterface.java
new file mode 100644
index 00000000..78401dde
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Integer/classInfo/isLocalClass.java
new file mode 100644
index 00000000..a76aad13
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Integer/classInfo/isMemberClass.java
new file mode 100644
index 00000000..d38b579c
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Integer/classInfo/isPrimitive.java
new file mode 100644
index 00000000..692be14b
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Integer/classInfo/isSynthetic.java
new file mode 100644
index 00000000..79aead4d
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Integer.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Integer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Integer;
+
+
+
+/**
+ * Test for method java.lang.Integer.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Integer(42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/compareTo.java b/gnu/testlet/java/lang/Integer/compareTo.java
new file mode 100644
index 00000000..77f3a5cb
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/compareTo.java
@@ -0,0 +1,133 @@
+/* Copyright (C) 2001 Eric Blake <ebb9@email.byu.edu>
+ *
+ * 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: JDK1.2
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * This class tests the compareTo methods of Integer. It is separate
+ * from other classes in the package because the methods did not exist
+ * before JDK 1.2.
+ */
+public class compareTo implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Integer i1, Integer i2, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(i2);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ Integer min = new Integer(Integer.MIN_VALUE);
+ Integer negone = new Integer(-1);
+ Integer zero = new Integer(0);
+ Integer posone = new Integer(1);
+ Integer max = new Integer(Integer.MAX_VALUE);
+
+ harness.checkPoint("compareTo");
+ compare(min, min, EQUAL);
+ compare(min, negone, LESS);
+ compare(min, zero, LESS);
+ compare(min, posone, LESS);
+ compare(min, max, LESS);
+
+ compare(negone, min, GREATER);
+ compare(negone, negone, EQUAL);
+ compare(negone, zero, LESS);
+ compare(negone, posone, LESS);
+ compare(negone, max, LESS);
+
+ compare(zero, min, GREATER);
+ compare(zero, negone, GREATER);
+ compare(zero, zero, EQUAL);
+ compare(zero, posone, LESS);
+ compare(zero, max, LESS);
+
+ compare(posone, min, GREATER);
+ compare(posone, negone, GREATER);
+ compare(posone, zero, GREATER);
+ compare(posone, posone, EQUAL);
+ compare(posone, max, LESS);
+
+ compare(max, min, GREATER);
+ compare(max, negone, GREATER);
+ compare(max, zero, GREATER);
+ compare(max, posone, GREATER);
+ compare(max, max, EQUAL);
+
+ Object o = zero;
+ boolean ok;
+ harness.check(((Comparable)zero).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ zero.compareTo((Integer) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo(new Object());
+ }
+ catch (ClassCastException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/lang/Integer/compareToObject.java b/gnu/testlet/java/lang/Integer/compareToObject.java
new file mode 100644
index 00000000..9dbeaa9a
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/compareToObject.java
@@ -0,0 +1,163 @@
+// Test of Integer method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Integer.compareTo(Object);
+ */
+public class compareToObject implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Integer i1, Object o, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(o);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ Integer min = new Integer(Integer.MIN_VALUE);
+ Integer negone = new Integer(-1);
+ Integer zero = new Integer(0);
+ Integer posone = new Integer(1);
+ Integer max = new Integer(Integer.MAX_VALUE);
+
+ harness.checkPoint("compareTo");
+ compare(min, min, EQUAL);
+ compare(min, negone, LESS);
+ compare(min, zero, LESS);
+ compare(min, posone, LESS);
+ compare(min, max, LESS);
+
+ compare(negone, min, GREATER);
+ compare(negone, negone, EQUAL);
+ compare(negone, zero, LESS);
+ compare(negone, posone, LESS);
+ compare(negone, max, LESS);
+
+ compare(zero, min, GREATER);
+ compare(zero, negone, GREATER);
+ compare(zero, zero, EQUAL);
+ compare(zero, posone, LESS);
+ compare(zero, max, LESS);
+
+ compare(posone, min, GREATER);
+ compare(posone, negone, GREATER);
+ compare(posone, zero, GREATER);
+ compare(posone, posone, EQUAL);
+ compare(posone, max, LESS);
+
+ compare(max, min, GREATER);
+ compare(max, negone, GREATER);
+ compare(max, zero, GREATER);
+ compare(max, posone, GREATER);
+ compare(max, max, EQUAL);
+
+ Object o = zero;
+ boolean ok;
+ harness.check(((Comparable)zero).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ zero.compareTo((Integer) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo(new Object());
+ }
+ catch (ClassCastException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("negative test");
+ try {
+ Integer a;
+ Byte b;
+ a = new Integer(1);
+ b = new Byte((byte)1);
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ Integer a;
+ String b;
+ a = new Integer(1);
+ b = "foobar";
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Integer/decode.java b/gnu/testlet/java/lang/Integer/decode.java
new file mode 100644
index 00000000..8b616376
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/decode.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.lang.Integer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the decode() method in the {@link Integer} class.
+ */
+public class decode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // decimal values
+ harness.check(Integer.decode("0").equals(new Integer(0)));
+ harness.check(Integer.decode("-1").equals(new Integer(-1)));
+ harness.check(Integer.decode("123").equals(new Integer(123)));
+ harness.check(Integer.decode("1234567").equals(new Integer(1234567)));
+ harness.check(Integer.decode("2147483647").equals(new Integer(2147483647)));
+ harness.check(Integer.decode("-2147483648").equals(new Integer(-2147483648)));
+
+ // hexadecimal values
+ harness.check(Integer.decode("0x00").equals(new Integer(0)));
+ harness.check(Integer.decode("-0x01").equals(new Integer(-1)));
+ harness.check(Integer.decode("0xFF").equals(new Integer(255)));
+ harness.check(Integer.decode("0XFF").equals(new Integer(255)));
+ harness.check(Integer.decode("0xff").equals(new Integer(255)));
+ harness.check(Integer.decode("0XfF").equals(new Integer(255)));
+ harness.check(Integer.decode("#ff").equals(new Integer(255)));
+
+ // octal values
+ harness.check(Integer.decode("00").equals(new Integer(0)));
+ harness.check(Integer.decode("-070").equals(new Integer(-56)));
+ harness.check(Integer.decode("072").equals(new Integer(58)));
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ Integer.decode(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a non-numeric string
+ pass = false;
+ try
+ {
+ Integer.decode("XYZ");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try some bad formatting
+ pass = false;
+ try
+ {
+ Integer.decode("078");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Integer.decode("1.0");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Integer.decode("");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Integer/getInteger.java b/gnu/testlet/java/lang/Integer/getInteger.java
new file mode 100644
index 00000000..f83823c7
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/getInteger.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 2001 Cygnus Solutions
+
+// 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.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Properties;
+import java.util.PropertyPermission;
+import java.security.Permission;
+import java.security.SecurityPermission;
+
+public class getInteger extends SecurityManager implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Augment the System properties with the following.
+ // Overwriting is bad because println needs the
+ // platform-dependent line.separator property.
+ Properties p = System.getProperties();
+ p.put("e1", Integer.toString(Integer.MIN_VALUE));
+ p.put("e2", Integer.toString(Integer.MAX_VALUE));
+ p.put("e3", "0" + Integer.toOctalString(Integer.MIN_VALUE));
+ p.put("e4", "0" + Integer.toOctalString(Integer.MAX_VALUE));
+ p.put("e5", "0x" + Integer.toHexString(Integer.MIN_VALUE));
+ p.put("e6", "0x" + Integer.toHexString(Integer.MAX_VALUE));
+ p.put("e7", "0" + Integer.toString(Integer.MAX_VALUE, 8));
+ p.put("e8", "#" + Integer.toString(Integer.MAX_VALUE, 16));
+ p.put("e9", "");
+ p.put("e10", " ");
+ p.put("e11", "foo");
+ p.put("e12", "-#1");
+
+ harness.check (Integer.getInteger("e1").toString(), "-2147483648");
+ harness.check (Integer.getInteger("e2").toString(), "2147483647");
+ harness.check (Integer.getInteger("e3"), null);
+ harness.check (Integer.getInteger("e4").toString(), "2147483647");
+ harness.check (Integer.getInteger("e5", 12345).toString(), "12345");
+ harness.check (Integer.getInteger("e6", new Integer(56789)).toString(),
+ "2147483647");
+ harness.check (Integer.getInteger("e7", null).toString(), "2147483647");
+ harness.check (Integer.getInteger("e8", 12345).toString(), "2147483647");
+ harness.check (Integer.getInteger("e9", new Integer(56789)).toString(),
+ "56789");
+ harness.check (Integer.getInteger("e10", null), null);
+ harness.check (Integer.getInteger("e11"), null);
+ harness.check (Integer.getInteger("e12"), new Integer(-1));
+ harness.check (Integer.getInteger("junk", 12345).toString(), "12345");
+ harness.check (Integer.getInteger("junk", new Integer(56789)).toString(),
+ "56789");
+ harness.check (Integer.getInteger("junk", null), null);
+ harness.check (Integer.getInteger("junk"), null);
+ try
+ {
+ harness.check (Integer.getInteger(null), null);
+ }
+ catch (NullPointerException npe)
+ {
+ harness.check (false);
+ }
+ harness.check (Integer.getInteger(""), null);
+
+ boolean ok = true;
+ SecurityManager old_security_manager = System.getSecurityManager();
+ try
+ {
+ try
+ {
+ System.setSecurityManager(this);
+ }
+ catch (Throwable e)
+ {
+ harness.debug(e);
+ ok = false; // can't run this test
+ }
+ if (ok)
+ {
+ try
+ {
+ Integer.getInteger("secure");
+ ok = false;
+ }
+ catch (SecurityException se)
+ {
+ }
+ }
+ }
+ finally
+ {
+ // undo our change
+ System.setSecurityManager(old_security_manager);
+ }
+ harness.check(ok);
+ }
+
+ // Method needed for SecurityManager
+
+ /**
+ * Croak on checking a property named "secure"
+ */
+ public void checkPropertyAccess(String s)
+ {
+ if ("secure".equals(s))
+ throw new SecurityException("'Croak'");
+ else
+ super.checkPropertyAccess(s);
+ }
+
+ /**
+ * Allow restoration of the existing security manager, and various other
+ * things that happen under the hood in various VMs. (HACK!)
+ */
+ public void checkPermission(Permission p)
+ {
+ if (new RuntimePermission("setSecurityManager").implies(p))
+ return;
+ if (new SecurityPermission("getProperty.networkaddress.*").implies(p))
+ return;
+ if (new PropertyPermission("sun.net.inetaddr.ttl", "read").implies(p))
+ return;
+ super.checkPermission(p);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Integer/integerDivide.java b/gnu/testlet/java/lang/Integer/integerDivide.java
new file mode 100644
index 00000000..ef26c2bb
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/integerDivide.java
@@ -0,0 +1,252 @@
+// Test integer division operation.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test integer division operation.
+ */
+public class integerDivide implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testDividePositiveByPositiveCase1(harness);
+ testDividePositiveByPositiveCase2(harness);
+ testDividePositiveByPositiveCase3(harness);
+ testDividePositiveByNegativeCase1(harness);
+ testDividePositiveByNegativeCase2(harness);
+ testDividePositiveByNegativeCase3(harness);
+ testDivideNegativeByPositiveCase1(harness);
+ testDivideNegativeByPositiveCase2(harness);
+ testDivideNegativeByPositiveCase3(harness);
+ testDivideNegativeByNegativeCase1(harness);
+ testDivideNegativeByNegativeCase2(harness);
+ testDivideNegativeByNegativeCase3(harness);
+ testDivideMaxValue(harness);
+ testDivideMinValue(harness);
+ testDivideByMaxValue(harness);
+ testDivideByMinValue(harness);
+ testDivideByZeroCase1(harness);
+ testDivideByZeroCase2(harness);
+ testDivideByZeroCase3(harness);
+ testDivideByZeroCase4(harness);
+ testDivideByZeroCase5(harness);
+ }
+
+ public void testDividePositiveByPositiveCase1(TestHarness harness)
+ {
+ int x = 10;
+ int y = 2;
+ int z = x / y;
+ harness.check(z == 5);
+ }
+
+ public void testDividePositiveByPositiveCase2(TestHarness harness)
+ {
+ int x = 10;
+ int y = 3;
+ int z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByPositiveCase3(TestHarness harness)
+ {
+ int x = 11;
+ int y = 3;
+ int z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByNegativeCase1(TestHarness harness)
+ {
+ int x = 10;
+ int y = -2;
+ int z = x / y;
+ harness.check(z == -5);
+ }
+
+ public void testDividePositiveByNegativeCase2(TestHarness harness)
+ {
+ int x = 10;
+ int y = -3;
+ int z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDividePositiveByNegativeCase3(TestHarness harness)
+ {
+ int x = 11;
+ int y = -3;
+ int z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase1(TestHarness harness)
+ {
+ int x = -10;
+ int y = 2;
+ int z = x / y;
+ harness.check(z == -5);
+ }
+
+ public void testDivideNegativeByPositiveCase2(TestHarness harness)
+ {
+ int x = -10;
+ int y = 3;
+ int z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase3(TestHarness harness)
+ {
+ int x = -11;
+ int y = 3;
+ int z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByNegativeCase1(TestHarness harness)
+ {
+ int x = -10;
+ int y = -2;
+ int z = x / y;
+ harness.check(z == 5);
+ }
+
+ public void testDivideNegativeByNegativeCase2(TestHarness harness)
+ {
+ int x = -10;
+ int y = -3;
+ int z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDivideNegativeByNegativeCase3(TestHarness harness)
+ {
+ int x = -11;
+ int y = -3;
+ int z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDivideMaxValue(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = 2 << 15;
+ int z = x / y;
+ harness.check(z == 32767);
+ }
+
+ public void testDivideMinValue(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = 2 << 15;
+ int z = x / y;
+ harness.check(z == -32768);
+ }
+
+ public void testDivideByMaxValue(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = Integer.MAX_VALUE;
+ int z = x / y;
+ harness.check(z == 1);
+ }
+
+ public void testDivideByMinValue(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = Integer.MIN_VALUE;
+ int z = x / y;
+ harness.check(z == 1);
+ }
+
+ public void testDivideByZeroCase1(TestHarness harness)
+ {
+ int x = 1;
+ int y = 0;
+ try {
+ int z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase2(TestHarness harness)
+ {
+ int x = -1;
+ int y = 0;
+ try {
+ int z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase3(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = 0;
+ try {
+ int z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase4(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = 0;
+ try {
+ int z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase5(TestHarness harness)
+ {
+ int x = 0;
+ int y = 0;
+ try {
+ int z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Integer/integerModulo.java b/gnu/testlet/java/lang/Integer/integerModulo.java
new file mode 100644
index 00000000..31d33f2c
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/integerModulo.java
@@ -0,0 +1,252 @@
+// Test integer modulo operation.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test integer modulo operation.
+ */
+public class integerModulo implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testModuloPositiveByPositiveCase1(harness);
+ testModuloPositiveByPositiveCase2(harness);
+ testModuloPositiveByPositiveCase3(harness);
+ testModuloPositiveByNegativeCase1(harness);
+ testModuloPositiveByNegativeCase2(harness);
+ testModuloPositiveByNegativeCase3(harness);
+ testModuloNegativeByPositiveCase1(harness);
+ testModuloNegativeByPositiveCase2(harness);
+ testModuloNegativeByPositiveCase3(harness);
+ testModuloNegativeByNegativeCase1(harness);
+ testModuloNegativeByNegativeCase2(harness);
+ testModuloNegativeByNegativeCase3(harness);
+ testModuloMaxValue(harness);
+ testModuloMinValue(harness);
+ testModuloByMaxValue(harness);
+ testModuloByMinValue(harness);
+ testModuloByZeroCase1(harness);
+ testModuloByZeroCase2(harness);
+ testModuloByZeroCase3(harness);
+ testModuloByZeroCase4(harness);
+ testModuloByZeroCase5(harness);
+ }
+
+ public void testModuloPositiveByPositiveCase1(TestHarness harness)
+ {
+ int x = 10;
+ int y = 2;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloPositiveByPositiveCase2(TestHarness harness)
+ {
+ int x = 10;
+ int y = 3;
+ int z = x % y;
+ harness.check(z == 1);
+ }
+
+ public void testModuloPositiveByPositiveCase3(TestHarness harness)
+ {
+ int x = 11;
+ int y = 3;
+ int z = x % y;
+ harness.check(z == 2);
+ }
+
+ public void testModuloPositiveByNegativeCase1(TestHarness harness)
+ {
+ int x = 10;
+ int y = -2;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloPositiveByNegativeCase2(TestHarness harness)
+ {
+ int x = 10;
+ int y = -3;
+ int z = x % y;
+ harness.check(z == 1);
+ }
+
+ public void testModuloPositiveByNegativeCase3(TestHarness harness)
+ {
+ int x = 11;
+ int y = -3;
+ int z = x % y;
+ harness.check(z == 2);
+ }
+
+ public void testModuloNegativeByPositiveCase1(TestHarness harness)
+ {
+ int x = -10;
+ int y = 2;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloNegativeByPositiveCase2(TestHarness harness)
+ {
+ int x = -10;
+ int y = 3;
+ int z = x % y;
+ harness.check(z == -1);
+ }
+
+ public void testModuloNegativeByPositiveCase3(TestHarness harness)
+ {
+ int x = -11;
+ int y = 3;
+ int z = x % y;
+ harness.check(z == -2);
+ }
+
+ public void testModuloNegativeByNegativeCase1(TestHarness harness)
+ {
+ int x = -10;
+ int y = -2;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloNegativeByNegativeCase2(TestHarness harness)
+ {
+ int x = -10;
+ int y = -3;
+ int z = x % y;
+ harness.check(z == -1);
+ }
+
+ public void testModuloNegativeByNegativeCase3(TestHarness harness)
+ {
+ int x = -11;
+ int y = -3;
+ int z = x % y;
+ harness.check(z == -2);
+ }
+
+ public void testModuloMaxValue(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = 2 << 15;
+ int z = x % y;
+ harness.check(z == 65535);
+ }
+
+ public void testModuloMinValue(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = 2 << 15;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByMaxValue(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = Integer.MAX_VALUE;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByMinValue(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = Integer.MIN_VALUE;
+ int z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByZeroCase1(TestHarness harness)
+ {
+ int x = 1;
+ int y = 0;
+ try {
+ int z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase2(TestHarness harness)
+ {
+ int x = -1;
+ int y = 0;
+ try {
+ int z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase3(TestHarness harness)
+ {
+ int x = Integer.MAX_VALUE;
+ int y = 0;
+ try {
+ int z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase4(TestHarness harness)
+ {
+ int x = Integer.MIN_VALUE;
+ int y = 0;
+ try {
+ int z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase5(TestHarness harness)
+ {
+ int x = 0;
+ int y = 0;
+ try {
+ int z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Integer/new_Integer.java b/gnu/testlet/java/lang/Integer/new_Integer.java
new file mode 100644
index 00000000..c13693a4
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/new_Integer.java
@@ -0,0 +1,419 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 1999, 2001 Cygnus Solutions
+
+// 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.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Integer implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Integer a = new Integer(0);
+ Integer b = new Integer(1);
+ Integer c = new Integer(-1);
+ Integer d = new Integer(Integer.MAX_VALUE);
+ Integer e = new Integer(Integer.MIN_VALUE);
+ Integer f = new Integer("0");
+ Integer g = new Integer("1");
+ Integer h = new Integer("-1");
+ Integer i = new Integer("2147483647");
+ Integer j = new Integer("-2147483648");
+ Integer k = new Integer("-0");
+ Integer l = new Integer("012345");
+ Integer m = new Integer("0012345");
+
+ harness.checkPoint ("toString");
+ harness.check (a + " " + b + " " + c + " " + d + " " + e,
+ "0 1 -1 2147483647 -2147483648");
+ harness.check (f + " " + g + " " + h + " " + i + " " + j,
+ "0 1 -1 2147483647 -2147483648");
+ harness.check (k + " " + l + " " + m,
+ "0 12345 12345");
+ harness.check (Integer.MAX_VALUE, 2147483647);
+ harness.check (Integer.MAX_VALUE + 1, -2147483648);
+ harness.check (Integer.MAX_VALUE + 2, -2147483647);
+ harness.check (Integer.MIN_VALUE, -2147483648);
+ harness.check (Integer.MIN_VALUE - 1, 2147483647);
+ harness.check (Integer.MIN_VALUE - 2, 2147483646);
+ harness.check (c.toString(), "-1");
+ harness.check (e.toString(), "-2147483648");
+ harness.check (Integer.toString(-1, 2),
+ "-1");
+ harness.check (Integer.toString(Integer.MIN_VALUE + 1, 2),
+ "-1111111111111111111111111111111");
+ harness.check (Integer.toString(Integer.MIN_VALUE, 2),
+ "-10000000000000000000000000000000");
+ harness.check (Integer.toString(Integer.MAX_VALUE, 2),
+ "1111111111111111111111111111111");
+ harness.check (Integer.toString(-1, 16),
+ "-1");
+ harness.check (Integer.toString(Integer.MIN_VALUE + 1, 16),
+ "-7fffffff");
+ harness.check (Integer.toString(Integer.MIN_VALUE, 16),
+ "-80000000");
+ harness.check (Integer.toString(Integer.MAX_VALUE, 16),
+ "7fffffff");
+ harness.check (Integer.toString(-1, 36),
+ "-1");
+ harness.check (Integer.toString(Integer.MIN_VALUE + 1, 36),
+ "-zik0zj");
+ harness.check (Integer.toString(Integer.MIN_VALUE, 36),
+ "-zik0zk");
+ harness.check (Integer.toString(Integer.MAX_VALUE, 36),
+ "zik0zj");
+ harness.check (Integer.toString(12345, 1), "12345");
+ harness.check (Integer.toString(-12345, 1), "-12345");
+ harness.check (Integer.toString(12345, 37), "12345");
+ harness.check (Integer.toString(-12345, 37), "-12345");
+ harness.check (Integer.toString(12345, 0), "12345");
+ harness.check (Integer.toString(-12345, 0), "-12345");
+ harness.check (Integer.toString(12345, -1), "12345");
+ harness.check (Integer.toString(-12345, -1), "-12345");
+ harness.check (Integer.toString(12345, Character.MIN_RADIX - 1), "12345");
+ harness.check (Integer.toString(12345, Character.MAX_RADIX + 1), "12345");
+
+ harness.checkPoint ("exceptions");
+ Integer bad = null;
+ try
+ {
+ bad = new Integer("2147483648");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer("-2147483649");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer("12345a");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer("-");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer("0x1e");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer(null);
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("wrong exception");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Integer(" ");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ harness.checkPoint ("hashCode");
+ harness.check (a.hashCode(), 0);
+ harness.check (b.hashCode(), 1);
+ harness.check (c.hashCode(), -1);
+ harness.check (d.hashCode(), 2147483647);
+ harness.check (e.hashCode(), -2147483648);
+
+ // harness.check (a.compareTo(a));
+ // harness.check (b.compareTo(c));
+ // harness.check (c.compareTo(b));
+ // harness.check (d.compareTo(e));
+ // harness.check (e.compareTo(d));
+
+ harness.checkPoint ("decode");
+ harness.check (Integer.decode("123456789"), new Integer (123456789));
+ harness.check (Integer.decode("01234567"), new Integer (342391));
+ harness.check (Integer.decode("0x1234FF"), new Integer (1193215));
+ harness.check (Integer.decode("#1234FF"), new Integer (1193215));
+ harness.check (Integer.decode("-123456789"), new Integer (-123456789));
+ harness.check (Integer.decode("-01234567"), new Integer (-01234567));
+ harness.check (Integer.decode("-0"), new Integer (0));
+ harness.check (Integer.decode("0"), new Integer (0));
+ harness.check (Integer.decode(Integer.toString(Integer.MIN_VALUE)),
+ new Integer (-2147483648));
+ harness.check (Integer.decode("-01"), new Integer(-1));
+ harness.check (Integer.decode("-0x1"), new Integer(-1));
+ harness.check (Integer.decode("-#1"), new Integer(-1));
+ // \\u0660 is a Unicode digit, value 0, but does not trigger octal or hex
+ harness.check (Integer.decode("\u06609"), new Integer(9));
+
+ harness.checkPoint ("decode exceptions");
+ boolean ok = false;
+ try
+ {
+ Integer.decode("");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode(" ");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode(null);
+ }
+ catch (NullPointerException npe)
+ {
+ ok = true;
+ }
+ catch (NumberFormatException ex)
+ {
+ // not ok
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode("X1234");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode("0xF0000000");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode("0x");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode("-");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.decode("#");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ harness.checkPoint ("toBinaryString");
+ harness.check (Integer.toBinaryString(0),
+ "0");
+ harness.check (Integer.toBinaryString(1),
+ "1");
+ harness.check (Integer.toBinaryString(-1),
+ "11111111111111111111111111111111");
+ harness.check (Integer.toBinaryString(Integer.MIN_VALUE),
+ "10000000000000000000000000000000");
+ harness.check (Integer.toBinaryString(Integer.MAX_VALUE),
+ "1111111111111111111111111111111");
+ harness.check (Integer.toBinaryString(Integer.MIN_VALUE - 1),
+ "1111111111111111111111111111111");
+ harness.check (Integer.toBinaryString(Integer.MAX_VALUE + 1),
+ "10000000000000000000000000000000");
+
+ harness.checkPoint ("toOctalString");
+ harness.check (Integer.toOctalString(0),
+ "0");
+ harness.check (Integer.toOctalString(1),
+ "1");
+ harness.check (Integer.toOctalString(-1),
+ "37777777777");
+ harness.check (Integer.toOctalString(Integer.MIN_VALUE),
+ "20000000000");
+ harness.check (Integer.toOctalString(Integer.MAX_VALUE),
+ "17777777777");
+ harness.check (Integer.toOctalString(Integer.MIN_VALUE - 1),
+ "17777777777");
+ harness.check (Integer.toOctalString(Integer.MAX_VALUE + 1),
+ "20000000000");
+
+ harness.checkPoint ("toHexString");
+ harness.check (Integer.toHexString(0),
+ "0");
+ harness.check (Integer.toHexString(1),
+ "1");
+ harness.check (Integer.toHexString(-1),
+ "ffffffff");
+ harness.check (Integer.toHexString(Integer.MIN_VALUE),
+ "80000000");
+ harness.check (Integer.toHexString(Integer.MAX_VALUE),
+ "7fffffff");
+ harness.check (Integer.toHexString(Integer.MIN_VALUE - 1),
+ "7fffffff");
+ harness.check (Integer.toHexString(Integer.MAX_VALUE + 1),
+ "80000000");
+
+ harness.checkPoint ("parseInt");
+ harness.check (Integer.parseInt("0012345", 8),
+ 5349);
+ harness.check (Integer.parseInt("xyz", 36),
+ 44027);
+ harness.check (Integer.parseInt("12345", 6),
+ 1865);
+ harness.check (Integer.parseInt("abcdef", 16),
+ 11259375);
+ harness.check (Integer.parseInt("-0012345", 8),
+ -5349);
+ harness.check (Integer.parseInt("-xyz", 36),
+ -44027);
+ harness.check (Integer.parseInt("-12345", 6),
+ -1865);
+ harness.check (Integer.parseInt("-abcdef", 16),
+ -11259375);
+ harness.check (Integer.parseInt("0", 25),
+ 0);
+
+ ok = false;
+ try
+ {
+ Integer.parseInt("0", 1);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.parseInt("0", 37);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.parseInt ("-80000001", 16);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ // This should fail, but won't if you are using a naive
+ // overflow detection scheme. `429496730' is chosen because
+ // when multiplied by 10 it overflows but the result is
+ // positive.
+ Integer.parseInt ("4294967309", 10);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Integer.parseInt ("800000001", 16);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/lang/Integer/parseInt.java b/gnu/testlet/java/lang/Integer/parseInt.java
new file mode 100644
index 00000000..f926f498
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/parseInt.java
@@ -0,0 +1,178 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+ * Written by Mark Wielaard <mark@klomp.org>
+ *
+ * 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: JDK1.1
+
+package gnu.testlet.java.lang.Integer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class parseInt implements Testlet
+{
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Integer.parseInt(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+ public void test(TestHarness harness)
+ {
+ int i;
+
+ i = Integer.parseInt("0");
+ harness.check(i, 0);
+
+ i = Integer.parseInt("1");
+ harness.check(i, 1);
+
+ i = Integer.parseInt("000");
+ harness.check(i, 0);
+
+ i = Integer.parseInt("007");
+ harness.check(i, 7);
+
+ i = Integer.parseInt("-0");
+ harness.check(i, 0);
+
+ i = Integer.parseInt("-1");
+ harness.check(i, -1);
+
+ i = Integer.parseInt("-2147483648");
+ harness.check(i, Integer.MIN_VALUE);
+
+ i = Integer.parseInt("2147483647");
+ harness.check(i, Integer.MAX_VALUE);
+
+ try
+ {
+ i = Integer.parseInt("-2147483649");
+ harness.fail("-2147483649 is to small for an int");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("2147483648");
+ harness.fail("2147483648 is to big for an int");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ // In JDK1.7, '+' is considered a valid character.
+ // it means that the following step should be divided
+ // for pre JDK1.7 case and >= JDK1.7
+ if (conformToJDK17()) {
+ try
+ {
+ i = Integer.parseInt("+10");
+ harness.check(true);
+ harness.check(i, 10);
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
+ }
+ }
+ else { // pre JDK1.7 branch
+ try
+ {
+ i = Integer.parseInt("+10");
+ harness.fail("'+10' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ try
+ {
+ i = Integer.parseInt(null);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("");
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Integer/parseIntRadix.java b/gnu/testlet/java/lang/Integer/parseIntRadix.java
new file mode 100644
index 00000000..47d7d277
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/parseIntRadix.java
@@ -0,0 +1,204 @@
+// Test of Integer method parseInt(String, radix).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Integer.parseInt(String, radix);
+ */
+public class parseIntRadix implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ int i;
+
+ i = Integer.parseInt("0", 2);
+ harness.check(i, 0);
+ i = Integer.parseInt("0", 10);
+ harness.check(i, 0);
+ i = Integer.parseInt("0", 16);
+ harness.check(i, 0);
+ i = Integer.parseInt("0", 36);
+ harness.check(i, 0);
+
+ i = Integer.parseInt("10", 8);
+ harness.check(i, 8);
+ i = Integer.parseInt("10", 10);
+ harness.check(i, 10);
+ i = Integer.parseInt("10", 16);
+ harness.check(i, 16);
+
+ i = Integer.parseInt("z", 36);
+ harness.check(i, 35);
+
+ i = Integer.parseInt("-80", 16);
+ harness.check(i, -128);
+
+ i = Integer.parseInt("7f", 16);
+ harness.check(i, 127);
+
+ try
+ {
+ i = Integer.parseInt("10", Character.MIN_RADIX - 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("10", Character.MAX_RADIX + 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("-2147483649");
+ harness.fail("-2147483649 is to small for a Integer");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("2147483648");
+ harness.fail("2147483648 is to big for a Integer");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ // In JDK1.7, '+' is considered a valid character.
+ // it means that the following step should be divided
+ // for pre JDK1.7 case and >= JDK1.7
+ if (conformToJDK17()) {
+ try
+ {
+ i = Integer.parseInt("+10", 10);
+ harness.check(true);
+ harness.check(i, 10);
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
+ }
+ }
+ else { // pre JDK1.7 branch
+ try
+ {
+ i = Integer.parseInt("+10", 10);
+ harness.fail("'+10' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ try
+ {
+ i = Integer.parseInt(null, 10);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ i = Integer.parseInt("", 10);
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Integer.parseInt(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Integer/toString.java b/gnu/testlet/java/lang/Integer/toString.java
new file mode 100644
index 00000000..3e5427f3
--- /dev/null
+++ b/gnu/testlet/java/lang/Integer/toString.java
@@ -0,0 +1,53 @@
+// Test of Integer methods toString() and toString(integer).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Integer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Integer methods toString() and toString(integer).
+ */
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of method Integer.toString()
+ harness.check(new Integer(0).toString(), "0");
+ harness.check(new Integer(-1).toString(), "-1");
+ harness.check(new Integer(1).toString(), "1");
+ harness.check(new Integer(127).toString(), "127");
+ harness.check(new Integer(-128).toString(), "-128");
+ harness.check(new Integer(Integer.MAX_VALUE).toString(), "2147483647");
+ harness.check(new Integer(Integer.MIN_VALUE).toString(), "-2147483648");
+
+ // test of static method Integer.toString(Integer)
+ harness.check(Integer.toString(0), "0");
+ harness.check(Integer.toString(-1), "-1");
+ harness.check(Integer.toString(1), "1");
+ harness.check(Integer.toString(127), "127");
+ harness.check(Integer.toString(-128), "-128");
+ harness.check(Integer.toString(Integer.MAX_VALUE), "2147483647");
+ harness.check(Integer.toString(Integer.MIN_VALUE), "-2147483648");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InternalError/CVS/Entries b/gnu/testlet/java/lang/InternalError/CVS/Entries
new file mode 100644
index 00000000..d83914e9
--- /dev/null
+++ b/gnu/testlet/java/lang/InternalError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:30 2012//
+D
diff --git a/gnu/testlet/java/lang/InternalError/CVS/Repository b/gnu/testlet/java/lang/InternalError/CVS/Repository
new file mode 100644
index 00000000..1fd7da2b
--- /dev/null
+++ b/gnu/testlet/java/lang/InternalError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InternalError
diff --git a/gnu/testlet/java/lang/InternalError/CVS/Root b/gnu/testlet/java/lang/InternalError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InternalError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InternalError/TryCatch.java b/gnu/testlet/java/lang/InternalError/TryCatch.java
new file mode 100644
index 00000000..a5162a11
--- /dev/null
+++ b/gnu/testlet/java/lang/InternalError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.InternalError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InternalError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InternalError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.InternalError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InternalError("InternalError");
+ }
+ catch (InternalError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InternalError/constructor.java b/gnu/testlet/java/lang/InternalError/constructor.java
new file mode 100644
index 00000000..ea423287
--- /dev/null
+++ b/gnu/testlet/java/lang/InternalError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.InternalError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InternalError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InternalError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.InternalError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InternalError error1 = new InternalError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.InternalError");
+
+ InternalError error2 = new InternalError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.InternalError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/CVS/Entries b/gnu/testlet/java/lang/InterruptedException/CVS/Entries
new file mode 100644
index 00000000..a597297f
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jul 4 13:16:22 2012//
+/constructor.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/InterruptedException/CVS/Entries.Log b/gnu/testlet/java/lang/InterruptedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/InterruptedException/CVS/Repository b/gnu/testlet/java/lang/InterruptedException/CVS/Repository
new file mode 100644
index 00000000..2d6786d7
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InterruptedException
diff --git a/gnu/testlet/java/lang/InterruptedException/CVS/Root b/gnu/testlet/java/lang/InterruptedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InterruptedException/TryCatch.java b/gnu/testlet/java/lang/InterruptedException/TryCatch.java
new file mode 100644
index 00000000..db1ad1af
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.InterruptedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.InterruptedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new InterruptedException("InterruptedException");
+ }
+ catch (InterruptedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Entries b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..62d777e9
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jul 4 13:16:22 2012//
+/getInterfaces.java/1.1/Wed Jul 4 13:16:22 2012//
+/getModifiers.java/1.1/Wed Jul 4 13:16:22 2012//
+/getName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getPackage.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSimpleName.java/1.1/Wed Jul 4 13:16:22 2012//
+/getSuperclass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isAssignableFrom.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInstance.java/1.1/Wed Jul 4 13:16:22 2012//
+/isInterface.java/1.1/Wed Jul 4 13:16:22 2012//
+/isLocalClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isMemberClass.java/1.1/Wed Jul 4 13:16:22 2012//
+/isPrimitive.java/1.1/Wed Jul 4 13:16:22 2012//
+/isSynthetic.java/1.1/Wed Jul 4 13:16:22 2012//
+D
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Repository b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..1f815499
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/InterruptedException/classInfo
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Root b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/InterruptedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..c706b46c
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.InterruptedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.InterruptedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class InterruptedException
+ InterruptedException o = new InterruptedException("InterruptedException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof InterruptedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..bc8eab23
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.InterruptedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getModifiers.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..61434d8a
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.InterruptedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getName.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getName.java
new file mode 100644
index 00000000..73a91b04
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.InterruptedException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getPackage.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getPackage.java
new file mode 100644
index 00000000..2c291fe7
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.InterruptedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..c4df5c7b
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "InterruptedException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/InterruptedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..e2ea1ad8
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.InterruptedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..d546820a
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(InterruptedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isInstance.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isInstance.java
new file mode 100644
index 00000000..17921bb0
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new InterruptedException("InterruptedException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isInterface.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isInterface.java
new file mode 100644
index 00000000..0de74788
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..b66322d7
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c8823999
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..2c0b0242
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/InterruptedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..b824ae51
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.InterruptedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test for method java.lang.InterruptedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new InterruptedException("InterruptedException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/InterruptedException/constructor.java b/gnu/testlet/java/lang/InterruptedException/constructor.java
new file mode 100644
index 00000000..18f909be
--- /dev/null
+++ b/gnu/testlet/java/lang/InterruptedException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.InterruptedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.InterruptedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.InterruptedException;
+
+
+
+/**
+ * Test if instances of a class java.lang.InterruptedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ InterruptedException object1 = new InterruptedException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.InterruptedException");
+
+ InterruptedException object2 = new InterruptedException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.InterruptedException: nothing happens");
+
+ InterruptedException object3 = new InterruptedException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.InterruptedException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/LinkageError/CVS/Entries b/gnu/testlet/java/lang/LinkageError/CVS/Entries
new file mode 100644
index 00000000..65447b30
--- /dev/null
+++ b/gnu/testlet/java/lang/LinkageError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:31 2012//
+D
diff --git a/gnu/testlet/java/lang/LinkageError/CVS/Repository b/gnu/testlet/java/lang/LinkageError/CVS/Repository
new file mode 100644
index 00000000..44441830
--- /dev/null
+++ b/gnu/testlet/java/lang/LinkageError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/LinkageError
diff --git a/gnu/testlet/java/lang/LinkageError/CVS/Root b/gnu/testlet/java/lang/LinkageError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/LinkageError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/LinkageError/TryCatch.java b/gnu/testlet/java/lang/LinkageError/TryCatch.java
new file mode 100644
index 00000000..d7cbb918
--- /dev/null
+++ b/gnu/testlet/java/lang/LinkageError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.LinkageError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.LinkageError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.LinkageError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.LinkageError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new LinkageError("LinkageError");
+ }
+ catch (LinkageError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/LinkageError/constructor.java b/gnu/testlet/java/lang/LinkageError/constructor.java
new file mode 100644
index 00000000..1b2c8551
--- /dev/null
+++ b/gnu/testlet/java/lang/LinkageError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.LinkageError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.LinkageError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.LinkageError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.LinkageError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ LinkageError error1 = new LinkageError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.LinkageError");
+
+ LinkageError error2 = new LinkageError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.LinkageError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/.cvsignore b/gnu/testlet/java/lang/Long/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Long/CVS/Entries b/gnu/testlet/java/lang/Long/CVS/Entries
new file mode 100644
index 00000000..ce3f27cc
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/CVS/Entries
@@ -0,0 +1,13 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/LongTest.java/1.5/Sun Jan 29 23:12:50 2006//
+/Tests15.java/1.2/Fri Oct 7 19:55:02 2005/-kk/
+/compareTo.java/1.1/Mon Mar 5 17:02:51 2012//
+/compareToObject.java/1.1/Mon Mar 5 17:02:51 2012//
+/decode.java/1.1/Mon Mar 5 17:02:51 2012//
+/getLong.java/1.6/Tue Apr 2 13:46:34 2002//
+/longDivide.java/1.1/Wed Dec 19 10:08:27 2012//
+/longModulo.java/1.1/Thu Dec 20 12:21:11 2012//
+/new_Long.java/1.7/Tue Sep 6 10:33:57 2011//
+/parseLongRadix.java/1.1/Thu Mar 8 10:27:49 2012//
+/toString.java/1.1/Fri May 25 15:43:40 2012//
+D
diff --git a/gnu/testlet/java/lang/Long/CVS/Entries.Log b/gnu/testlet/java/lang/Long/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Long/CVS/Repository b/gnu/testlet/java/lang/Long/CVS/Repository
new file mode 100644
index 00000000..861a2547
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Long
diff --git a/gnu/testlet/java/lang/Long/CVS/Root b/gnu/testlet/java/lang/Long/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Long/LongTest.java b/gnu/testlet/java/lang/Long/LongTest.java
new file mode 100644
index 00000000..6e299a44
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/LongTest.java
@@ -0,0 +1,434 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class LongTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ long min1 = Long.MIN_VALUE;
+ long min2 = 0x8000000000000000L;
+ long max1 = Long.MAX_VALUE;
+ long max2 = 0x7fffffffffffffffL;
+
+ harness.check(!( min1 != min2 || max1 != max2 ),
+ "test_Basics - 1" );
+
+ Long i1 = new Long(100);
+
+ harness.check(!( i1.longValue() != 100 ),
+ "test_Basics - 2" );
+
+ try {
+ harness.check(!( (new Long("234")).longValue() != 234 ),
+ "test_Basics - 3" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 3" );
+ }
+
+ try {
+ harness.check(!( (new Long("-FF")).longValue() != -255 ),
+ "test_Basics - 4" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+
+ try {
+ new Long("babu");
+ harness.fail("test_Basics - 5" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+ }
+
+ public void test_toString()
+ {
+ harness.check(!( !( new Long(123)).toString().equals("123")),
+ "test_toString - 1" );
+ harness.check(!( !( new Long(-44)).toString().equals("-44")),
+ "test_toString - 2" );
+
+ harness.check(!( !Long.toString( 234 ).equals ("234" )),
+ "test_toString - 3" );
+ harness.check(!( !Long.toString( -34 ).equals ("-34" )),
+ "test_toString - 4" );
+ harness.check(!( !Long.toString( -34 ).equals ("-34" )),
+ "test_toString - 5" );
+
+ harness.check(!( !Long.toString(99 , 1 ).equals("99")),
+ "test_toString - 6" );
+ harness.check(!( !Long.toString(99 , 37 ).equals("99")),
+ "test_toString - 7" );
+
+ harness.check(!( !Long.toString(15 , 2 ).equals("1111")),
+ "test_toString - 8" );
+ harness.check(!( !Long.toString(37 , 36 ).equals("11")),
+ "test_toString - 9" );
+ harness.check(!( !Long.toString(31 , 16 ).equals("1f")),
+ "test_toString - 10" );
+
+
+ harness.check(!( !Long.toString(-99 , 1 ).equals("-99")),
+ "test_toString - 11" );
+ harness.check(!( !Long.toString(-99 , 37 ).equals("-99")),
+ "test_toString - 12" );
+
+ harness.check(!( !Long.toString(-15 , 2 ).equals("-1111")),
+ "test_toString - 13" );
+ harness.check(!( !Long.toString(-37 , 36 ).equals("-11")),
+ "test_toString - 14" );
+ harness.check(!( !Long.toString(-31 , 16 ).equals("-1f")),
+ "test_toString - 15" );
+ }
+
+ public void test_equals()
+ {
+ Long i1 = new Long(23);
+ Long i2 = new Long(-23);
+
+ harness.check(!( !i1.equals( new Long(23))),
+ "test_equals - 1" );
+ harness.check(!( !i2.equals( new Long(-23))),
+ "test_equals - 2" );
+
+
+ harness.check(!( i1.equals( i2 )),
+ "test_equals - 3" );
+
+ harness.check(!( i1.equals(null)),
+ "test_equals - 4" );
+ }
+
+ public void test_hashCode( )
+ {
+ Long b1 = new Long(34395555);
+ Long b2 = new Long(-34395555);
+ harness.check(!( b1.hashCode() != ((int)(b1.longValue()^(b1.longValue()>>>32)))
+ || b2.hashCode() != ((int)(b2.longValue()^(b2.longValue()>>>32))) ),
+ "test_hashCode" );
+ }
+
+ public void test_intValue( )
+ {
+ Long b1 = new Long(32767);
+ Long b2 = new Long(-32767);
+
+ harness.check(!( b1.intValue() != 32767 ),
+ "test_intValue - 1" );
+
+ harness.check(!( b2.intValue() != -32767 ),
+ "test_intValue - 2" );
+ }
+ public void test_shortbyteValue( )
+ {
+ Long b1 = new Long(32767);
+ Long b2 = new Long(-32767);
+
+ harness.check(!( b1.byteValue() != (byte)32767 ),
+ "test_shortbyteValue - 1" );
+
+ harness.check(!( b2.byteValue() != (byte)-32767 ),
+ "test_shortbyteValue - 2" );
+ harness.check(!( b1.shortValue() != (short)32767 ),
+ "test_shortbyteValue - 3" );
+
+ harness.check(!( b2.shortValue() != (short)-32767 ),
+ "test_shortbyteValue - 4" );
+ }
+
+ public void test_longValue( )
+ {
+ Long b1 = new Long(-9223372036854775807L);
+ Long b2 = new Long(9223372036854775807L);
+
+ harness.check(!( b1.longValue() != (long)-9223372036854775807L ),
+ "test_longValue - 1" );
+
+ harness.check(!( b2.longValue() != 9223372036854775807L ),
+ "test_longValue - 2" );
+ }
+ public void test_floatValue( )
+ {
+ Long b1 = new Long(3276);
+ Long b2 = new Long(-3276);
+
+ harness.check(!( b1.floatValue() != 3276.0f ),
+ "test_floatValue - 1" );
+
+ harness.check(!( b2.floatValue() != -3276.0f ),
+ "test_floatValue - 2" );
+ }
+ public void test_doubleValue( )
+ {
+ Long b1 = new Long(0);
+ Long b2 = new Long(30);
+
+ harness.check(!( b1.doubleValue() != 0.0 ),
+ "test_doubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != 30.0 ),
+ "test_doubleValue - 2" );
+ }
+
+ public void test_toHexString()
+ {
+ String str, str1;
+
+ str = Long.toHexString(8375);
+ str1 = Long.toHexString( -5361 );
+
+ harness.check(!( !str.equalsIgnoreCase("20B7")),
+ "test_toHexString - 1" );
+
+ harness.check(!( !str1.equalsIgnoreCase("ffffffffffffeb0f")),
+ "test_toHexString - 2" );
+ }
+
+ public void test_toOctalString()
+ {
+ String str, str1;
+ str = Long.toOctalString(5847);
+ str1= Long.toOctalString(-9863 );
+
+ harness.check(!( !str.equals("13327")),
+ "test_toOctalString - 1" );
+
+ harness.check(!( !str1.equals("1777777777777777754571")),
+ "test_toOctalString - 2" );
+ }
+
+ public void test_toBinaryString()
+ {
+ String str1 = Long.toBinaryString( -5478 );
+ harness.check(!( !Long.toBinaryString(358).equals("101100110")),
+ "test_toBinaryString - 1" );
+
+ harness.check(!( !str1.equals("1111111111111111111111111111111111111111111111111110101010011010")),
+ "test_toBinaryString - 2" );
+ }
+
+ public void test_parseLong()
+ {
+ harness.check(!( Long.parseLong("473") != Long.parseLong("473" , 10 )),
+ "test_parseLong - 1" );
+
+ harness.check(!( Long.parseLong("0" , 10 ) != 0L ),
+ "test_parseLong - 2" );
+
+ harness.check(!( Long.parseLong("473" , 10 ) != 473L ),
+ "test_parseLong - 3" );
+ harness.check(!( Long.parseLong("-0" , 10 ) != 0L ),
+ "test_parseLong - 4" );
+ harness.check(!( Long.parseLong("-FF" , 16 ) != -255L ),
+ "test_parseLong - 5" );
+ harness.check(!( Long.parseLong("1100110" , 2 ) != 102L ),
+ "test_parseLong - 6" );
+ harness.check(!( Long.parseLong("2147483647" , 10 ) != 2147483647L ),
+ "test_parseLong - 7" );
+ harness.check(!( Long.parseLong("-2147483647" , 10 ) != -2147483647L ),
+ "test_parseLong - 8" );
+
+ try {
+ Long.parseLong("99" , 8 );
+ harness.fail("test_parseLong - 10" );
+ }catch ( NumberFormatException e ){}
+
+ try {
+ Long.parseLong("Hazelnut" , 10 );
+ harness.fail("test_parseLong - 11" );
+ }catch ( NumberFormatException e ){}
+
+ harness.check(!( Long.parseLong("Hazelnut" , 36 ) != 1356099454469L ),
+ "test_parseLong - 12" );
+
+
+ long_hex_ok("-8000000000000000", -0x8000000000000000L);
+ long_hex_ok("7fffffffffffffff", 0x7fffffffffffffffL);
+ long_hex_ok("7ffffffffffffff3", 0x7ffffffffffffff3L);
+ long_hex_ok("7ffffffffffffffe", 0x7ffffffffffffffeL);
+ long_hex_ok("7ffffffffffffff0", 0x7ffffffffffffff0L);
+
+ long_hex_bad("80000000000000010");
+ long_hex_bad("7ffffffffffffffff");
+ long_hex_bad("8000000000000001");
+ long_hex_bad("8000000000000002");
+ long_hex_bad("ffffffffffffffff");
+ long_hex_bad("-8000000000000001");
+ long_hex_bad("-8000000000000002");
+
+ long_dec_ok("-9223372036854775808", -9223372036854775808L);
+ long_dec_ok("-9223372036854775807", -9223372036854775807L);
+ long_dec_ok("-9223372036854775806", -9223372036854775806L);
+ long_dec_ok("9223372036854775807", 9223372036854775807L);
+ long_dec_ok("9223372036854775806", 9223372036854775806L);
+ long_dec_bad("-9223372036854775809");
+ long_dec_bad("-9223372036854775810");
+ long_dec_bad("-9223372036854775811");
+ long_dec_bad("9223372036854775808");
+ }
+
+ static void long_hex_ok ( String s, long ref ) {
+ try {
+ long l = Long.parseLong(s, 16);
+ if (ref != l) {
+ System.out.println(
+ " Error : long_hex_ok failed - 1 " +
+ " expected " + ref + " actual " + l );
+ }
+ }
+ catch ( NumberFormatException e )
+ {
+ System.out.println(
+ " Error : long_hex_ok failed - 2 " +
+ " should not have thrown exception in parsing" +
+ s );
+ }
+ }
+
+ static void long_hex_bad(String s) {
+ try {
+ Long.parseLong(s, 16);
+ harness.fail("long_hex_bad " +
+ s + " should not be valid!" );
+ } catch (NumberFormatException e ){
+ }
+ }
+
+ static void long_dec_ok(String s, long ref) {
+ try {
+ long l = Long.parseLong(s, 10);
+ if (ref != l) {
+ System.out.println(
+ " Error : long_dec_ok failed - 1 " +
+ " expected " + ref + " actual " + l );
+ }
+ }
+ catch ( NumberFormatException e )
+ {
+ System.out.println(
+ " Error : long_dec_ok failed - 2 " +
+ " should not have thrown exception in parsing" +
+ s );
+ }
+ }
+
+ static void long_dec_bad(String s) {
+ try {
+ Long.parseLong(s, 10);
+ System.out.println(" Error long_dec_bad failed for"+s );
+ } catch (NumberFormatException e ){}
+ }
+
+
+ public void test_valueOf( )
+ {
+ harness.check(!( Long.valueOf("21234").longValue() != Long.parseLong("21234")),
+ "test_valueOf - 1" );
+ harness.check(!( Long.valueOf("Kona", 27).longValue() != Long.parseLong("Kona", 27)),
+ "test_valueOf - 2" );
+ }
+
+ public void test_getLong( )
+ {
+ java.util.Properties prop = System.getProperties();
+ prop.put("longkey1" , "2345" );
+ prop.put("longkey2" , "-984" );
+ prop.put("longkey3" , "-0" );
+
+ prop.put("longkey4" , "#1f" );
+ prop.put("longkey5" , "0x1f" );
+ prop.put("longkey6" , "017" );
+
+ prop.put("longkey7" , "babu" );
+
+
+
+ System.setProperties(prop);
+ harness.checkPoint("getLong");
+ try {
+ harness.check(Long.getLong("longkey1").longValue() == 2345);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check(Long.getLong("longkey2").longValue() == -984);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check(Long.getLong("longkey3").longValue() == 0);
+ } catch (NullPointerException npe) { harness.check(false); }
+
+ try {
+ harness.check(Long.getLong("longkey4",new Long(0)).longValue() == 31);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check(Long.getLong("longkey5",new Long(0)).longValue() == 31);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check(Long.getLong("longkey6",new Long(0)).longValue() == 15);
+ } catch (NullPointerException npe) { harness.check(false); }
+
+ try {
+ harness.check(!( Long.getLong("longkey7", new Long(0)).longValue() != 0 ),
+ "test_getLong - 3" );
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check(!( Long.getLong("longkey7", 0).longValue() != 0 ),
+ "test_getLong - 4" );
+ } catch (NullPointerException npe) { harness.check(false); }
+
+ }
+
+
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_intValue();
+ test_longValue();
+ test_floatValue();
+ test_doubleValue();
+ test_shortbyteValue();
+ test_toHexString();
+ test_toOctalString();
+ test_toBinaryString();
+ test_parseLong();
+ test_valueOf();
+ test_getLong();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Long/Tests15.java b/gnu/testlet/java/lang/Long/Tests15.java
new file mode 100644
index 00000000..0bbbff89
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/Tests15.java
@@ -0,0 +1,97 @@
+/* Tests15.java -- tests for 1.5 features of Long
+ Copyright (C) 2005 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Long;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Tests15 implements Testlet {
+
+ public void test(TestHarness harness) {
+ harness.check(Long.SIZE, 64);
+ harness.check(Long.valueOf(123456), new Long(123456));
+
+ harness.checkPoint("bitCount");
+ harness.check(Long.bitCount(0xffffffffffffffffL), 64);
+ harness.check(Long.bitCount(0x5555555555555555L), 32);
+ harness.check(Long.bitCount(0L), 0);
+ harness.check(Long.bitCount(0x55555555aaaaaaaaL), 32);
+ harness.check(Long.bitCount(0x1248842124188241L), 16);
+
+ harness.checkPoint("rotateLeft");
+ harness.check(Long.rotateLeft(0xffffffff00000000L, 16),
+ 0xffff00000000ffffL);
+ harness.check(Long.rotateLeft(0x123456789abcdef0L, 128),
+ 0x123456789abcdef0L);
+
+ harness.checkPoint("rotateRight");
+ harness.check(Long.rotateRight(0xffffffff00000000L, 16),
+ 0x0000ffffffff0000L);
+ harness.check(Long.rotateRight(0x123456789abcdef0L, 128),
+ 0x123456789abcdef0L);
+
+ harness.checkPoint("highestOneBit");
+ harness.check(Long.highestOneBit(0x00ff0000000000ffL),
+ 0x0080000000000000L);
+ harness.check(Long.highestOneBit(0xf00000000000000fL),
+ 0x8000000000000000L);
+ harness.check(Long.highestOneBit(0), 0);
+
+ harness.checkPoint("numberOfLeadingZeros");
+ harness.check(Long.numberOfLeadingZeros(0xf000000000000000L), 0);
+ harness.check(Long.numberOfLeadingZeros(0x0505050505050505L), 5);
+ harness.check(Long.numberOfLeadingZeros(1), 63);
+ harness.check(Long.numberOfLeadingZeros(0), 64);
+
+ harness.checkPoint("lowestOneBit");
+ harness.check(Long.lowestOneBit(0x00ff0000000000ffL), 1);
+ harness.check(Long.lowestOneBit(0xf00000000000000fL), 1);
+ harness.check(Long.lowestOneBit(0xf000000000000f00L), 0x100);
+ harness.check(Long.lowestOneBit(0), 0);
+
+ harness.checkPoint("numberOfTrailingZeros");
+ harness.check(Long.numberOfTrailingZeros(5), 0);
+ harness.check(Long.numberOfTrailingZeros(0xf0), 4);
+ harness.check(Long.numberOfTrailingZeros(0x8000000000000000L), 63);
+ harness.check(Long.numberOfTrailingZeros(0), 64);
+
+ harness.checkPoint("signum");
+ harness.check(Long.signum(0), 0);
+ harness.check(Long.signum(1), 1);
+ harness.check(Long.signum(0x7fffffffffffffffL), 1);
+ harness.check(Long.signum(0x8000000000000000L), -1);
+ harness.check(Long.signum(-1L), -1);
+
+ harness.checkPoint("reverseBytes");
+ harness.check(Long.reverseBytes(0), 0);
+ harness.check(Long.reverseBytes(0x123456789abcdef0L),
+ 0xf0debc9a78563412L);
+
+ harness.checkPoint("reverse");
+ harness.check(Long.reverse(0), 0);
+ harness.check(Long.reverse(-1), -1);
+ harness.check(Long.reverse(0x5555555555555555L),
+ 0xaaaaaaaaaaaaaaaaL);
+ }
+}
diff --git a/gnu/testlet/java/lang/Long/classInfo/CVS/Entries b/gnu/testlet/java/lang/Long/classInfo/CVS/Entries
new file mode 100644
index 00000000..ee356a6c
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Mon May 14 13:11:11 2012//
+/getInterfaces.java/1.1/Mon May 14 13:11:11 2012//
+/getModifiers.java/1.1/Mon May 14 13:11:11 2012//
+/getName.java/1.1/Mon May 14 13:11:11 2012//
+/getPackage.java/1.1/Mon May 14 13:11:11 2012//
+/getSimpleName.java/1.1/Mon May 14 13:11:11 2012//
+/getSuperclass.java/1.1/Mon May 14 13:11:11 2012//
+/isAnnotation.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnnotationPresent.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnonymousClass.java/1.1/Thu Sep 20 07:57:17 2012//
+/isArray.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAssignableFrom.java/1.1/Mon May 14 13:11:11 2012//
+/isEnum.java/1.1/Thu Sep 20 07:57:17 2012//
+/isInstance.java/1.1/Mon May 14 13:11:11 2012//
+/isInterface.java/1.1/Mon May 14 13:11:11 2012//
+/isLocalClass.java/1.1/Mon May 14 13:11:11 2012//
+/isMemberClass.java/1.1/Mon May 14 13:11:11 2012//
+/isPrimitive.java/1.1/Mon May 14 13:11:11 2012//
+/isSynthetic.java/1.1/Mon May 14 13:11:11 2012//
+D
diff --git a/gnu/testlet/java/lang/Long/classInfo/CVS/Repository b/gnu/testlet/java/lang/Long/classInfo/CVS/Repository
new file mode 100644
index 00000000..01fa072d
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Long/classInfo
diff --git a/gnu/testlet/java/lang/Long/classInfo/CVS/Root b/gnu/testlet/java/lang/Long/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Long/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Long/classInfo/InstanceOf.java
new file mode 100644
index 00000000..b6c6d5fa
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Long
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Long
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Long o = new Long(42L);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Long);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Long/classInfo/getInterfaces.java
new file mode 100644
index 00000000..f07fd284
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Long.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getModifiers.java b/gnu/testlet/java/lang/Long/classInfo/getModifiers.java
new file mode 100644
index 00000000..46a280ca
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Long.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getName.java b/gnu/testlet/java/lang/Long/classInfo/getName.java
new file mode 100644
index 00000000..10489ac8
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Long");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getPackage.java b/gnu/testlet/java/lang/Long/classInfo/getPackage.java
new file mode 100644
index 00000000..5605bde7
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Long.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Long/classInfo/getSimpleName.java
new file mode 100644
index 00000000..bf21af21
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Long");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Long/classInfo/getSuperclass.java
new file mode 100644
index 00000000..e916cafb
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Long.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Long/classInfo/isAnnotation.java
new file mode 100644
index 00000000..4b8a61ea
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Long/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..cfbeada0
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Long.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Long/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..9e32d5a6
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isArray.java b/gnu/testlet/java/lang/Long/classInfo/isArray.java
new file mode 100644
index 00000000..d65badfb
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Long/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..b93aec2f
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Long.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isEnum.java b/gnu/testlet/java/lang/Long/classInfo/isEnum.java
new file mode 100644
index 00000000..96e41e0b
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Long
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isInstance.java b/gnu/testlet/java/lang/Long/classInfo/isInstance.java
new file mode 100644
index 00000000..5ca93142
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Long(42L)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isInterface.java b/gnu/testlet/java/lang/Long/classInfo/isInterface.java
new file mode 100644
index 00000000..a3764166
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Long/classInfo/isLocalClass.java
new file mode 100644
index 00000000..205726b4
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Long/classInfo/isMemberClass.java
new file mode 100644
index 00000000..e5ee31b6
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Long/classInfo/isPrimitive.java
new file mode 100644
index 00000000..1a991fb5
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Long/classInfo/isSynthetic.java
new file mode 100644
index 00000000..4a1aaa76
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Long.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Long.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Long;
+
+
+
+/**
+ * Test for method java.lang.Long.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Long(42L);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/compareTo.java b/gnu/testlet/java/lang/Long/compareTo.java
new file mode 100644
index 00000000..874b2feb
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/compareTo.java
@@ -0,0 +1,153 @@
+// Test of Long method compareTo(Long).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Long.compareTo(Long);
+ */
+public class compareTo implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Long l1, Long l2, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = l1.compareTo(l2);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+
+ result = l2.compareTo(l1);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result > 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result < 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ Long min = new Long(Long.MIN_VALUE);
+ Long negone = new Long(-1);
+ Long zero = new Long(0);
+ Long posone = new Long(1);
+ Long max = new Long(Long.MAX_VALUE);
+
+ harness.checkPoint("compareTo");
+ compare(min, min, EQUAL);
+ compare(min, negone, LESS);
+ compare(min, zero, LESS);
+ compare(min, posone, LESS);
+ compare(min, max, LESS);
+
+ compare(negone, min, GREATER);
+ compare(negone, negone, EQUAL);
+ compare(negone, zero, LESS);
+ compare(negone, posone, LESS);
+ compare(negone, max, LESS);
+
+ compare(zero, min, GREATER);
+ compare(zero, negone, GREATER);
+ compare(zero, zero, EQUAL);
+ compare(zero, posone, LESS);
+ compare(zero, max, LESS);
+
+ compare(posone, min, GREATER);
+ compare(posone, negone, GREATER);
+ compare(posone, zero, GREATER);
+ compare(posone, posone, EQUAL);
+ compare(posone, max, LESS);
+
+ compare(max, min, GREATER);
+ compare(max, negone, GREATER);
+ compare(max, zero, GREATER);
+ compare(max, posone, GREATER);
+ compare(max, max, EQUAL);
+
+ Object o = zero;
+ boolean ok;
+ harness.check(((Comparable)zero).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ zero.compareTo((Long) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo(new Object());
+ }
+ catch (ClassCastException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/compareToObject.java b/gnu/testlet/java/lang/Long/compareToObject.java
new file mode 100644
index 00000000..f6ac3643
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/compareToObject.java
@@ -0,0 +1,163 @@
+// Test of Long method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Long.compareTo(Object);
+ */
+public class compareToObject implements Testlet
+{
+ public static final int LESS = -1;
+ public static final int EQUAL = 0;
+ public static final int GREATER = 1;
+ TestHarness harness;
+ void compare(Long i1, Object o, int expected)
+ {
+ // the result need not be -1, 0, 1; just <0, 0, >0
+ int result = i1.compareTo(o);
+ switch (expected)
+ {
+ case LESS:
+ harness.check(result < 0);
+ break;
+ case EQUAL:
+ harness.check(result == 0);
+ break;
+ case GREATER:
+ harness.check(result > 0);
+ break;
+ default:
+ throw new Error();
+ }
+ }
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ Long min = new Long(Long.MIN_VALUE);
+ Long negone = new Long(-1);
+ Long zero = new Long(0);
+ Long posone = new Long(1);
+ Long max = new Long(Long.MAX_VALUE);
+
+ harness.checkPoint("compareTo");
+ compare(min, min, EQUAL);
+ compare(min, negone, LESS);
+ compare(min, zero, LESS);
+ compare(min, posone, LESS);
+ compare(min, max, LESS);
+
+ compare(negone, min, GREATER);
+ compare(negone, negone, EQUAL);
+ compare(negone, zero, LESS);
+ compare(negone, posone, LESS);
+ compare(negone, max, LESS);
+
+ compare(zero, min, GREATER);
+ compare(zero, negone, GREATER);
+ compare(zero, zero, EQUAL);
+ compare(zero, posone, LESS);
+ compare(zero, max, LESS);
+
+ compare(posone, min, GREATER);
+ compare(posone, negone, GREATER);
+ compare(posone, zero, GREATER);
+ compare(posone, posone, EQUAL);
+ compare(posone, max, LESS);
+
+ compare(max, min, GREATER);
+ compare(max, negone, GREATER);
+ compare(max, zero, GREATER);
+ compare(max, posone, GREATER);
+ compare(max, max, EQUAL);
+
+ Object o = zero;
+ boolean ok;
+ harness.check(((Comparable)zero).compareTo(o) == 0);
+
+ ok = false;
+ try
+ {
+ zero.compareTo((Integer) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ ok = false;
+ try
+ {
+ ((Comparable)zero).compareTo(new Object());
+ }
+ catch (ClassCastException e)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+
+ harness.checkPoint("negative test");
+ try {
+ Long a;
+ Byte b;
+ a = new Long(1);
+ b = new Byte((byte)1);
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ Long a;
+ String b;
+ a = new Long(1);
+ b = "foobar";
+ compare(a,b,1);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Long/decode.java b/gnu/testlet/java/lang/Long/decode.java
new file mode 100644
index 00000000..49885812
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/decode.java
@@ -0,0 +1,125 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+// Updated to use for Long class: Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Long;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the decode() method in the {@link Long} class.
+ */
+public class decode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // decimal values
+ harness.check(Long.decode("0").equals(new Long(0)));
+ harness.check(Long.decode("-1").equals(new Long(-1)));
+ harness.check(Long.decode("123").equals(new Long(123)));
+ harness.check(Long.decode("1234567").equals(new Long(1234567)));
+ harness.check(Long.decode("1234567890000").equals(new Long(1234567890000L)));
+ harness.check(Long.decode("2147483647").equals(new Long(2147483647)));
+ harness.check(Long.decode("-2147483648").equals(new Long(-2147483648)));
+
+ // hexadecimal values
+ harness.check(Long.decode("0x00").equals(new Long(0)));
+ harness.check(Long.decode("-0x01").equals(new Long(-1)));
+ harness.check(Long.decode("0xFF").equals(new Long(255)));
+ harness.check(Long.decode("0XFF").equals(new Long(255)));
+ harness.check(Long.decode("0xff").equals(new Long(255)));
+ harness.check(Long.decode("0XfF").equals(new Long(255)));
+ harness.check(Long.decode("#ff").equals(new Long(255)));
+ harness.check(Long.decode("0Xffff").equals(new Long(65535)));
+
+ // octal values
+ harness.check(Long.decode("00").equals(new Long(0)));
+ harness.check(Long.decode("-070").equals(new Long(-56)));
+ harness.check(Long.decode("072").equals(new Long(58)));
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ Long.decode(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a non-numeric string
+ pass = false;
+ try
+ {
+ Long.decode("XYZ");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try some bad formatting
+ pass = false;
+ try
+ {
+ Long.decode("078");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Long.decode("1.0");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Long.decode("");
+ }
+ catch (NumberFormatException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Long/getLong.java b/gnu/testlet/java/lang/Long/getLong.java
new file mode 100644
index 00000000..7daa3501
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/getLong.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Properties;
+
+public class getLong implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Augment the System properties with the following.
+ // Overwriting is bad because println needs the
+ // platform-dependent line.separator property.
+ Properties p = System.getProperties();
+ p.put("e1", Long.toString(Long.MIN_VALUE));
+ p.put("e2", Long.toString(Long.MAX_VALUE));
+ p.put("e3", "0" + Long.toOctalString(Long.MIN_VALUE));
+ p.put("e4", "0" + Long.toOctalString(Long.MAX_VALUE));
+ p.put("e5", "0x" + Long.toHexString(Long.MIN_VALUE));
+ p.put("e6", "0x" + Long.toHexString(Long.MAX_VALUE));
+ p.put("e7", "0" + Long.toString(Long.MAX_VALUE, 8));
+ p.put("e8", "#" + Long.toString(Long.MAX_VALUE, 16));
+ p.put("e9", "");
+ p.put("e10", " ");
+ p.put("e11", "foo");
+
+ try {
+ harness.check (Long.getLong("e1").toString(), "-9223372036854775808");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e2").toString(), "9223372036854775807");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e3"), null);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e4").toString(), "9223372036854775807");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e5", 12345L).toString(), "12345");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e6", new Long(56789L)).toString(),
+ "9223372036854775807");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e7", null).toString(),
+ "9223372036854775807");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e8", 12345).toString(),
+ "9223372036854775807");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e9", new Long(56789L)).toString(), "56789");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e10", null), null);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("e11"), null);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("junk", 12345L).toString(), "12345");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("junk", new Long(56789L)).toString(),
+ "56789");
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("junk", null), null);
+ } catch (NullPointerException npe) { harness.check(false); }
+ try {
+ harness.check (Long.getLong("junk"), null);
+ } catch (NullPointerException npe) { harness.check(false); }
+ }
+}
diff --git a/gnu/testlet/java/lang/Long/longDivide.java b/gnu/testlet/java/lang/Long/longDivide.java
new file mode 100644
index 00000000..849b88e8
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/longDivide.java
@@ -0,0 +1,252 @@
+// Test long division operation.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test long division operation.
+ */
+public class longDivide implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testDividePositiveByPositiveCase1(harness);
+ testDividePositiveByPositiveCase2(harness);
+ testDividePositiveByPositiveCase3(harness);
+ testDividePositiveByNegativeCase1(harness);
+ testDividePositiveByNegativeCase2(harness);
+ testDividePositiveByNegativeCase3(harness);
+ testDivideNegativeByPositiveCase1(harness);
+ testDivideNegativeByPositiveCase2(harness);
+ testDivideNegativeByPositiveCase3(harness);
+ testDivideNegativeByNegativeCase1(harness);
+ testDivideNegativeByNegativeCase2(harness);
+ testDivideNegativeByNegativeCase3(harness);
+ testDivideMaxValue(harness);
+ testDivideMinValue(harness);
+ testDivideByMaxValue(harness);
+ testDivideByMinValue(harness);
+ testDivideByZeroCase1(harness);
+ testDivideByZeroCase2(harness);
+ testDivideByZeroCase3(harness);
+ testDivideByZeroCase4(harness);
+ testDivideByZeroCase5(harness);
+ }
+
+ public void testDividePositiveByPositiveCase1(TestHarness harness)
+ {
+ long x = 10L;
+ long y = 2L;
+ long z = x / y;
+ harness.check(z == 5);
+ }
+
+ public void testDividePositiveByPositiveCase2(TestHarness harness)
+ {
+ long x = 10L;
+ long y = 3L;
+ long z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByPositiveCase3(TestHarness harness)
+ {
+ long x = 11L;
+ long y = 3L;
+ long z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDividePositiveByNegativeCase1(TestHarness harness)
+ {
+ long x = 10L;
+ long y = -2L;
+ long z = x / y;
+ harness.check(z == -5);
+ }
+
+ public void testDividePositiveByNegativeCase2(TestHarness harness)
+ {
+ long x = 10L;
+ long y = -3L;
+ long z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDividePositiveByNegativeCase3(TestHarness harness)
+ {
+ long x = 11L;
+ long y = -3L;
+ long z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase1(TestHarness harness)
+ {
+ long x = -10L;
+ long y = 2L;
+ long z = x / y;
+ harness.check(z == -5);
+ }
+
+ public void testDivideNegativeByPositiveCase2(TestHarness harness)
+ {
+ long x = -10L;
+ long y = 3L;
+ long z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByPositiveCase3(TestHarness harness)
+ {
+ long x = -11L;
+ long y = 3L;
+ long z = x / y;
+ harness.check(z == -3);
+ }
+
+ public void testDivideNegativeByNegativeCase1(TestHarness harness)
+ {
+ long x = -10L;
+ long y = -2L;
+ long z = x / y;
+ harness.check(z == 5);
+ }
+
+ public void testDivideNegativeByNegativeCase2(TestHarness harness)
+ {
+ long x = -10L;
+ long y = -3L;
+ long z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDivideNegativeByNegativeCase3(TestHarness harness)
+ {
+ long x = -11L;
+ long y = -3L;
+ long z = x / y;
+ harness.check(z == 3);
+ }
+
+ public void testDivideMaxValue(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = 2 << 15L;
+ long z = x / y;
+ harness.check(z == 32767);
+ }
+
+ public void testDivideMinValue(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = 2 << 15L;
+ long z = x / y;
+ harness.check(z == -32768);
+ }
+
+ public void testDivideByMaxValue(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = Integer.MAX_VALUE;
+ long z = x / y;
+ harness.check(z == 1);
+ }
+
+ public void testDivideByMinValue(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = Integer.MIN_VALUE;
+ long z = x / y;
+ harness.check(z == 1);
+ }
+
+ public void testDivideByZeroCase1(TestHarness harness)
+ {
+ long x = 1L;
+ long y = 0L;
+ try {
+ long z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase2(TestHarness harness)
+ {
+ long x = -1L;
+ long y = 0L;
+ try {
+ long z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase3(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = 0L;
+ try {
+ long z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase4(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = 0L;
+ try {
+ long z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testDivideByZeroCase5(TestHarness harness)
+ {
+ long x = 0L;
+ long y = 0L;
+ try {
+ long z = x / y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Long/longModulo.java b/gnu/testlet/java/lang/Long/longModulo.java
new file mode 100644
index 00000000..7d2f500d
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/longModulo.java
@@ -0,0 +1,252 @@
+// Test long modulo operation.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test integer modulo operation.
+ */
+public class longModulo implements Testlet
+{
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ testModuloPositiveByPositiveCase1(harness);
+ testModuloPositiveByPositiveCase2(harness);
+ testModuloPositiveByPositiveCase3(harness);
+ testModuloPositiveByNegativeCase1(harness);
+ testModuloPositiveByNegativeCase2(harness);
+ testModuloPositiveByNegativeCase3(harness);
+ testModuloNegativeByPositiveCase1(harness);
+ testModuloNegativeByPositiveCase2(harness);
+ testModuloNegativeByPositiveCase3(harness);
+ testModuloNegativeByNegativeCase1(harness);
+ testModuloNegativeByNegativeCase2(harness);
+ testModuloNegativeByNegativeCase3(harness);
+ testModuloMaxValue(harness);
+ testModuloMinValue(harness);
+ testModuloByMaxValue(harness);
+ testModuloByMinValue(harness);
+ testModuloByZeroCase1(harness);
+ testModuloByZeroCase2(harness);
+ testModuloByZeroCase3(harness);
+ testModuloByZeroCase4(harness);
+ testModuloByZeroCase5(harness);
+ }
+
+ public void testModuloPositiveByPositiveCase1(TestHarness harness)
+ {
+ long x = 10L;
+ long y = 2L;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloPositiveByPositiveCase2(TestHarness harness)
+ {
+ long x = 10L;
+ long y = 3L;
+ long z = x % y;
+ harness.check(z == 1);
+ }
+
+ public void testModuloPositiveByPositiveCase3(TestHarness harness)
+ {
+ long x = 11L;
+ long y = 3L;
+ long z = x % y;
+ harness.check(z == 2);
+ }
+
+ public void testModuloPositiveByNegativeCase1(TestHarness harness)
+ {
+ long x = 10L;
+ long y = -2L;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloPositiveByNegativeCase2(TestHarness harness)
+ {
+ long x = 10L;
+ long y = -3L;
+ long z = x % y;
+ harness.check(z == 1);
+ }
+
+ public void testModuloPositiveByNegativeCase3(TestHarness harness)
+ {
+ long x = 11L;
+ long y = -3L;
+ long z = x % y;
+ harness.check(z == 2);
+ }
+
+ public void testModuloNegativeByPositiveCase1(TestHarness harness)
+ {
+ long x = -10L;
+ long y = 2L;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloNegativeByPositiveCase2(TestHarness harness)
+ {
+ long x = -10L;
+ long y = 3L;
+ long z = x % y;
+ harness.check(z == -1);
+ }
+
+ public void testModuloNegativeByPositiveCase3(TestHarness harness)
+ {
+ long x = -11L;
+ long y = 3L;
+ long z = x % y;
+ harness.check(z == -2);
+ }
+
+ public void testModuloNegativeByNegativeCase1(TestHarness harness)
+ {
+ long x = -10L;
+ long y = -2L;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloNegativeByNegativeCase2(TestHarness harness)
+ {
+ long x = -10L;
+ long y = -3L;
+ long z = x % y;
+ harness.check(z == -1);
+ }
+
+ public void testModuloNegativeByNegativeCase3(TestHarness harness)
+ {
+ long x = -11L;
+ long y = -3L;
+ long z = x % y;
+ harness.check(z == -2);
+ }
+
+ public void testModuloMaxValue(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = 2 << 15L;
+ long z = x % y;
+ harness.check(z == 65535);
+ }
+
+ public void testModuloMinValue(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = 2 << 15L;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByMaxValue(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = Integer.MAX_VALUE;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByMinValue(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = Integer.MIN_VALUE;
+ long z = x % y;
+ harness.check(z == 0);
+ }
+
+ public void testModuloByZeroCase1(TestHarness harness)
+ {
+ long x = 1L;
+ long y = 0L;
+ try {
+ long z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase2(TestHarness harness)
+ {
+ long x = -1L;
+ long y = 0L;
+ try {
+ long z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase3(TestHarness harness)
+ {
+ long x = Integer.MAX_VALUE;
+ long y = 0L;
+ try {
+ long z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase4(TestHarness harness)
+ {
+ long x = Integer.MIN_VALUE;
+ long y = 0L;
+ try {
+ long z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+ public void testModuloByZeroCase5(TestHarness harness)
+ {
+ long x = 0L;
+ long y = 0L;
+ try {
+ long z = x % y;
+ harness.check(false);
+ }
+ catch(ArithmeticException e) {
+ harness.check(true);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Long/new_Long.java b/gnu/testlet/java/lang/Long/new_Long.java
new file mode 100644
index 00000000..9db9f9ae
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/new_Long.java
@@ -0,0 +1,349 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 1999 Cygnus Solutions
+
+// 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.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_Long implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Long a = new Long(0L);
+ Long b = new Long(1L);
+ Long c = new Long(-1L);
+ Long d = new Long(Long.MAX_VALUE);
+ Long e = new Long(Long.MIN_VALUE);
+ Long f = new Long("0");
+ Long g = new Long("1");
+ Long h = new Long("-1");
+ Long i = new Long("9223372036854775807");
+ Long j = new Long("-9223372036854775808");
+ Long k = new Long("-0");
+ Long l = new Long("012345");
+ Long m = new Long("0012345");
+
+ harness.check (a + " " + b + " " + c + " " + d + " " + e,
+ "0 1 -1 9223372036854775807 -9223372036854775808");
+ harness.check (f + " " + g + " " + h + " " + i + " " + j,
+ "0 1 -1 9223372036854775807 -9223372036854775808");
+ harness.check (k + " " + l + " " + m,
+ "0 12345 12345");
+ harness.check ((long) Integer.MAX_VALUE, 2147483647);
+ harness.check ((long) Integer.MIN_VALUE, -2147483648);
+ harness.check (Long.MAX_VALUE, 9223372036854775807L);
+ harness.check (Long.MAX_VALUE, 9223372036854775807L);
+ harness.check (Long.MAX_VALUE + 1, -9223372036854775808L);
+ harness.check (Long.MAX_VALUE + 2, -9223372036854775807L);
+ harness.check (Long.MIN_VALUE, -9223372036854775808L);
+ harness.check (Long.MIN_VALUE - 1, 9223372036854775807L);
+ harness.check (Long.MIN_VALUE - 2, 9223372036854775806L);
+ harness.check (c.toString(), "-1");
+ harness.check (e.toString(), "-9223372036854775808");
+ harness.check (Long.toString(-1L, 2),
+ "-1");
+ harness.check (Long.toString(Long.MIN_VALUE + 1, 2),
+ "-111111111111111111111111111111111111111111111111111111111111111");
+ harness.check (Long.toString(Long.MIN_VALUE, 2),
+ "-1000000000000000000000000000000000000000000000000000000000000000");
+ harness.check (Long.toString(Long.MAX_VALUE, 2),
+ "111111111111111111111111111111111111111111111111111111111111111");
+ harness.check (Long.toString(-1L, 16),
+ "-1");
+ harness.check (Long.toString(Long.MIN_VALUE + 1, 16),
+ "-7fffffffffffffff");
+ harness.check (Long.toString(Long.MIN_VALUE, 16),
+ "-8000000000000000");
+ harness.check (Long.toString(Long.MAX_VALUE, 16),
+ "7fffffffffffffff");
+ harness.check (Long.toString(-1L, 36),
+ "-1");
+ harness.check (Long.toString(Long.MIN_VALUE + 1, 36),
+ "-1y2p0ij32e8e7");
+ harness.check (Long.toString(Long.MIN_VALUE, 36),
+ "-1y2p0ij32e8e8");
+ harness.check (Long.toString(Long.MAX_VALUE, 36),
+ "1y2p0ij32e8e7");
+ harness.check (Long.toString(12345, 1), "12345");
+ harness.check (Long.toString(-12345, 1), "-12345");
+ harness.check (Long.toString(12345, 37), "12345");
+ harness.check (Long.toString(-12345, 37), "-12345");
+ harness.check (Long.toString(12345, 0), "12345");
+ harness.check (Long.toString(-12345, 0), "-12345");
+ harness.check (Long.toString(12345, -1), "12345");
+ harness.check (Long.toString(-12345, -1), "-12345");
+ harness.check (Long.toString(12345, Character.MIN_RADIX - 1), "12345");
+ harness.check (Long.toString(12345, Character.MAX_RADIX + 1), "12345");
+
+ Long bad = null;
+ try
+ {
+ bad = new Long("9223372036854775808");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Long("-9223372036854775809");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Long("12345a");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Long("-");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ bad = null;
+ try
+ {
+ bad = new Long("0x1e");
+ }
+ catch (NumberFormatException ex)
+ {
+ }
+ harness.check (bad, null);
+
+ harness.check (a.hashCode(), 0);
+ harness.check (b.hashCode(), 1);
+ harness.check (c.hashCode(), 0);
+ harness.check (d.hashCode(), -2147483648);
+ harness.check (e.hashCode(), -2147483648);
+
+ // harness.check (a.compareTo(a));
+ // harness.check (b.compareTo(c));
+ // harness.check (c.compareTo(b));
+ // harness.check (d.compareTo(e));
+ // harness.check (e.compareTo(d));
+
+ boolean ok = false;
+ try
+ {
+ Long.parseLong("");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong(" ");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("0X1234");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("0xF0000000");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("-");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("#");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("-0x1234FF");
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ harness.checkPoint ("toBinaryString");
+ harness.check (Long.toBinaryString(0L),
+ "0");
+ harness.check (Long.toBinaryString(1L),
+ "1");
+ harness.check (Long.toBinaryString(-1L),
+ "1111111111111111111111111111111111111111111111111111111111111111");
+ harness.check (Long.toBinaryString(Long.MIN_VALUE),
+ "1000000000000000000000000000000000000000000000000000000000000000");
+ harness.check (Long.toBinaryString(Long.MAX_VALUE),
+ "111111111111111111111111111111111111111111111111111111111111111");
+ harness.check (Long.toBinaryString(Long.MIN_VALUE - 1),
+ "111111111111111111111111111111111111111111111111111111111111111");
+ harness.check (Long.toBinaryString(Long.MAX_VALUE + 1),
+ "1000000000000000000000000000000000000000000000000000000000000000");
+
+ harness.checkPoint ("toOctalString");
+ harness.check (Long.toOctalString(0L),
+ "0");
+ harness.check (Long.toOctalString(1L),
+ "1");
+ harness.check (Long.toOctalString(-1L),
+ "1777777777777777777777");
+ harness.check (Long.toOctalString(Long.MIN_VALUE),
+ "1000000000000000000000");
+ harness.check (Long.toOctalString(Long.MAX_VALUE),
+ "777777777777777777777");
+ harness.check (Long.toOctalString(Long.MIN_VALUE - 1),
+ "777777777777777777777");
+ harness.check (Long.toOctalString(Long.MAX_VALUE + 1),
+ "1000000000000000000000");
+
+ harness.checkPoint ("toHexString");
+ harness.check (Long.toHexString(0L),
+ "0");
+ harness.check (Long.toHexString(1L),
+ "1");
+ harness.check (Long.toHexString(-1L),
+ "ffffffffffffffff");
+ harness.check (Long.toHexString(Long.MIN_VALUE),
+ "8000000000000000");
+ harness.check (Long.toHexString(Long.MAX_VALUE),
+ "7fffffffffffffff");
+ harness.check (Long.toHexString(Long.MIN_VALUE - 1),
+ "7fffffffffffffff");
+ harness.check (Long.toHexString(Long.MAX_VALUE + 1),
+ "8000000000000000");
+
+ harness.checkPoint ("parseLong");
+ harness.check (Long.parseLong("0012345", 8),
+ 5349);
+ harness.check (Long.parseLong("xyz", 36),
+ 44027);
+ harness.check (Long.parseLong("12345", 6),
+ 1865);
+ harness.check (Long.parseLong("abcdef", 16),
+ 11259375);
+ harness.check (Long.parseLong("-0012345", 8),
+ -5349);
+ harness.check (Long.parseLong("-xyz", 36),
+ -44027);
+ harness.check (Long.parseLong("-12345", 6),
+ -1865);
+ harness.check (Long.parseLong("-abcdef", 16),
+ -11259375);
+ harness.check (Long.parseLong("-8000000000000000", 16),
+ Long.MIN_VALUE);
+ harness.check (Long.parseLong("7fffffffffffffff", 16),
+ Long.MAX_VALUE);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("0", 1);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("0", 37);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("8000000000000000", 16);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ Long.parseLong("-8000000000000001", 16);
+ }
+ catch (NumberFormatException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/lang/Long/parseLongRadix.java b/gnu/testlet/java/lang/Long/parseLongRadix.java
new file mode 100644
index 00000000..4e16a733
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/parseLongRadix.java
@@ -0,0 +1,204 @@
+// Test of Long.method parseLong(String, radix).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method Long.parseLong(String, radix);
+ */
+public class parseLongRadix implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ long l;
+
+ l = Long.parseLong("0", 2);
+ harness.check(l, 0);
+ l = Long.parseLong("0", 10);
+ harness.check(l, 0);
+ l = Long.parseLong("0", 16);
+ harness.check(l, 0);
+ l = Long.parseLong("0", 36);
+ harness.check(l, 0);
+
+ l = Long.parseLong("10", 8);
+ harness.check(l, 8);
+ l = Long.parseLong("10", 10);
+ harness.check(l, 10);
+ l = Long.parseLong("10", 16);
+ harness.check(l, 16);
+
+ l = Long.parseLong("z", 36);
+ harness.check(l, 35);
+
+ l = Long.parseLong("-80", 16);
+ harness.check(l, -128);
+
+ l = Long.parseLong("7f", 16);
+ harness.check(l, 127);
+
+ try
+ {
+ l = Long.parseLong("10", Character.MIN_RADIX - 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("10", Character.MAX_RADIX + 1);
+ harness.fail("too small radix");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("-9223372036854775809");
+ harness.fail("-9223372036854775809 is to small for a Long");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("9223372036854775808");
+ harness.fail("9223372036854775808 is to big for a Long");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("abc");
+ harness.fail("Illegal input (abc) must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("-");
+ harness.fail("Single '-' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("+");
+ harness.fail("Single '+' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ // In JDK1.7, '+' is considered a valid character.
+ // it means that the following step should be divided
+ // for pre JDK1.7 case and >= JDK1.7
+ if (conformToJDK17()) {
+ try
+ {
+ l = Long.parseLong("+10", 10);
+ harness.check(true);
+ harness.check(l, 10);
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
+ }
+ }
+ else { // pre JDK1.7 branch
+ try
+ {
+ l = Long.parseLong("+10", 10);
+ harness.fail("'+10' must throw NumberFormatException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ try
+ {
+ l = Long.parseLong(null, 10);
+ harness.fail("null input must throw NumberFormatException");
+ }
+ catch (NullPointerException npe)
+ {
+ harness.fail("null input must throw NumberFormatException, not NullPointerException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ l = Long.parseLong("", 10);
+ harness.fail("empty input must throw NumberFormatException");
+ }
+ catch (IndexOutOfBoundsException ioobe)
+ {
+ harness.fail("empty input must throw NumberFormatException, not IndexOutOfBoundsException");
+ }
+ catch (NumberFormatException nfe)
+ {
+ harness.check(true);
+ }
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Long.parseLong(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/Long/toString.java b/gnu/testlet/java/lang/Long/toString.java
new file mode 100644
index 00000000..5366c122
--- /dev/null
+++ b/gnu/testlet/java/lang/Long/toString.java
@@ -0,0 +1,57 @@
+// Test of Long methods toString() and toString(long).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Long;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Long methods toString() and toString(long).
+ */
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of method Long.toString()
+ harness.check(new Long(0).toString(), "0");
+ harness.check(new Long(-1).toString(), "-1");
+ harness.check(new Long(1).toString(), "1");
+ harness.check(new Long(127).toString(), "127");
+ harness.check(new Long(-128).toString(), "-128");
+ harness.check(new Long(Integer.MAX_VALUE).toString(), "2147483647");
+ harness.check(new Long(Integer.MIN_VALUE).toString(), "-2147483648");
+ harness.check(new Long(Long.MAX_VALUE).toString(), "9223372036854775807");
+ harness.check(new Long(Long.MIN_VALUE).toString(), "-9223372036854775808");
+
+ // test of static method Long.toString(long)
+ harness.check(Long.toString(0), "0");
+ harness.check(Long.toString(-1), "-1");
+ harness.check(Long.toString(1), "1");
+ harness.check(Long.toString(127), "127");
+ harness.check(Long.toString(-128), "-128");
+ harness.check(Long.toString(Integer.MAX_VALUE), "2147483647");
+ harness.check(Long.toString(Integer.MIN_VALUE), "-2147483648");
+ harness.check(Long.toString(Long.MAX_VALUE), "9223372036854775807");
+ harness.check(Long.toString(Long.MIN_VALUE), "-9223372036854775808");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/.cvsignore b/gnu/testlet/java/lang/Math/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Math/CVS/Entries b/gnu/testlet/java/lang/Math/CVS/Entries
new file mode 100644
index 00000000..7a5514c9
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/CVS/Entries
@@ -0,0 +1,18 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/MathTest.java/1.4/Sun Jan 29 23:12:50 2006//
+/acos.java/1.1/Thu Aug 30 10:55:20 2012//
+/asin.java/1.1/Thu Aug 30 10:55:20 2012//
+/atan.java/1.1/Thu Aug 30 10:55:20 2012//
+/cbrt.java/1.1/Thu Aug 30 10:55:20 2012//
+/cos.java/1.3/Wed Aug 29 14:47:21 2012//
+/cosh.java/1.1/Thu Aug 30 10:55:20 2012//
+/expm1.java/1.1/Thu Aug 30 10:55:20 2012//
+/max.java/1.3/Sun Sep 19 16:47:41 2004//
+/min.java/1.5/Sun Sep 19 16:47:41 2004//
+/rint.java/1.3/Tue Feb 16 05:37:16 1999//
+/sin.java/1.3/Wed Aug 29 14:47:21 2012//
+/sinh.java/1.1/Thu Aug 30 10:55:20 2012//
+/tan.java/1.1/Thu Aug 30 10:55:20 2012//
+/tanh.java/1.1/Thu Aug 30 10:55:20 2012//
+/ulp.java/1.1/Tue Mar 7 00:53:36 2006/-kk/
+D
diff --git a/gnu/testlet/java/lang/Math/CVS/Entries.Log b/gnu/testlet/java/lang/Math/CVS/Entries.Log
new file mode 100644
index 00000000..30635d60
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/strictfp_modifier////
diff --git a/gnu/testlet/java/lang/Math/CVS/Repository b/gnu/testlet/java/lang/Math/CVS/Repository
new file mode 100644
index 00000000..c148b0f6
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Math
diff --git a/gnu/testlet/java/lang/Math/CVS/Root b/gnu/testlet/java/lang/Math/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Math/MathTest.java b/gnu/testlet/java/lang/Math/MathTest.java
new file mode 100644
index 00000000..6e3d544c
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/MathTest.java
@@ -0,0 +1,580 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class MathTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.check(!( Math.E != 2.7182818284590452354 ),
+ "test_Basics - 1");
+
+ harness.check(!( Math.PI != 3.14159265358979323846 ),
+ "test_Basics - 2");
+ }
+
+ public void test_sincostan()
+ {
+ harness.check(!( !(new Double(Math.sin( Double.NaN ))).isNaN() ),
+ "test_sincostan - 1");
+ harness.check(!( !(new Double(Math.sin( Double.POSITIVE_INFINITY ))).isNaN() ),
+ "test_sincostan - 2");
+ harness.check(!( !(new Double(Math.sin( Double.NEGATIVE_INFINITY ))).isNaN() ),
+ "test_sincostan - 3");
+ harness.check(!( Math.sin( -0.0 ) != -0.0 ),
+ "test_sincostan - 4");
+ harness.check(!( Math.sin( 0.0 ) != 0.0 ),
+ "test_sincostan - 5");
+
+ harness.check(!( !(new Double(Math.cos( Double.NaN ))).isNaN() ),
+ "test_sincostan - 6");
+ harness.check(!( !(new Double(Math.cos( Double.POSITIVE_INFINITY ))).isNaN() ),
+ "test_sincostan - 7");
+ harness.check(!( !(new Double(Math.cos( Double.NEGATIVE_INFINITY ))).isNaN() ),
+ "test_sincostan - 8");
+
+ harness.check(!( !(new Double(Math.tan( Double.NaN ))).isNaN() ),
+ "test_sincostan - 9");
+ harness.check(!( !(new Double(Math.tan( Double.POSITIVE_INFINITY ))).isNaN() ),
+ "test_sincostan - 10");
+ harness.check(!( !(new Double(Math.tan( Double.NEGATIVE_INFINITY ))).isNaN()),
+ "test_sincostan - 11");
+ harness.check(!( Math.tan( -0.0 ) != -0.0 ),
+ "test_sincostan - 12");
+ harness.check(!( Math.tan( 0.0 ) != 0.0 ),
+ "test_sincostan - 13");
+
+ harness.check(!( Math.sin( Math.PI / 2.0 + Math.PI /6.0 ) <= 0.0 ),
+ "test_sincostan - 14");
+ harness.check(!( Math.cos( Math.PI / 2.0 + Math.PI /6.0 ) >= 0.0 ),
+ "test_sincostan - 14");
+ harness.check(!( Math.tan( Math.PI / 2.0 + Math.PI /6.0 ) >= 0.0 ),
+ "test_sincostan - 14");
+
+ }
+
+ public void test_asinacosatan()
+ {
+ harness.check(!( !(new Double(Math.asin( Double.NaN ))).isNaN() ),
+ "test_asinacosatan - 1");
+ harness.check(!( Math.asin( -0.0 ) != -0.0 ),
+ "test_asinacosatan - 2");
+ harness.check(!( Math.asin( 0.0 ) != 0.0 ),
+ "test_asinacosatan - 3");
+
+ harness.check(!( !(new Double(Math.asin( 10.0 ))).isNaN() ),
+ "test_asinacosatan - 4");
+
+
+ harness.check(!( !(new Double(Math.acos( Double.NaN ))).isNaN() ),
+ "test_asinacosatan - 5");
+ harness.check(!( !(new Double(Math.acos( 10.0 ))).isNaN() ),
+ "test_asinacosatan - 6");
+
+
+ harness.check(!( !(new Double(Math.atan( Double.NaN ))).isNaN() ),
+ "test_asinacosatan - 7");
+ harness.check(!( Math.atan( -0.0 ) != -0.0 ),
+ "test_asinacosatan - 8");
+ harness.check(!( Math.atan( 0.0 ) != 0.0 ),
+ "test_asinacosatan - 9");
+
+ }
+
+ public void test_atan2()
+ {
+ harness.check(!(!(new Double( Math.atan2 (1.0 , Double.NaN ))).isNaN()),
+ "test_atan2 - 1");
+ harness.check(!(!(new Double( Math.atan2 (Double.NaN,1.0 ))).isNaN()),
+ "test_atan2 - 2");
+
+ harness.check(!(( Math.atan2(0.0, 10.0 ) != -0.0 ) ||
+ ( Math.atan2(2.0 , Double.POSITIVE_INFINITY ) != -0.0 )),
+ "test_atan2 - 3");
+
+ harness.check(!(( Math.atan2(-0.0, 10.0 ) != -0.0 ) ||
+ ( Math.atan2(-2.0 , Double.POSITIVE_INFINITY ) != -0.0 )),
+ "test_atan2 - 4");
+
+ harness.check(!(( Math.atan2(0.0, -10.0 ) != Math.PI) ||
+ ( Math.atan2(2.0 , Double.NEGATIVE_INFINITY ) != Math.PI )),
+ "test_atan2 - 4");
+
+ harness.check(!(( Math.atan2(-0.0, -10.0 ) != -Math.PI) ||
+ ( Math.atan2(-2.0 , Double.NEGATIVE_INFINITY ) != -Math.PI )),
+ "test_atan2 - 5");
+
+ harness.check(!(( Math.atan2(10.0, 0.0 ) != Math.PI/2.0) ||
+ ( Math.atan2(Double.POSITIVE_INFINITY , 3.0) != Math.PI /2.0)),
+ "test_atan2 - 6");
+
+ harness.check(!(( Math.atan2(-10.0, 0.0 ) != -Math.PI/2.0) ||
+ ( Math.atan2(Double.NEGATIVE_INFINITY , 3.0) != -Math.PI /2.0)),
+ "test_atan2 - 7");
+
+ harness.check(!(( Math.atan2(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY ) != Math.PI/4.0)),
+ "test_atan2 - 8");
+
+ harness.check(!(( Math.atan2(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY ) != Math.PI*3.0/4.0)),
+ "test_atan2 - 9");
+
+ harness.check(!(( Math.atan2(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY ) != -Math.PI/4.0)),
+ "test_atan2 - 10");
+
+ harness.check(!(( Math.atan2(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY ) != -Math.PI*3.0/4.0)),
+ "test_atan2 - 11");
+ }
+
+ public void test_exp()
+ {
+ harness.check(!( !(new Double(Math.exp( Double.NaN ))).isNaN() ),
+ "test_exp - 1");
+
+ harness.check(!( !(new Double(Math.exp( Double.POSITIVE_INFINITY))).isInfinite() ),
+ "test_exp - 2");
+
+ harness.check(!( Math.exp( Double.NEGATIVE_INFINITY) != 0.0 ),
+ "test_exp - 3");
+ }
+
+ public void test_log()
+ {
+ harness.check(!( !(new Double(Math.log( Double.NaN ))).isNaN() ),
+ "test_log - 1");
+ harness.check(!( !(new Double(Math.log( -1.0 ))).isNaN() ),
+ "test_log - 2");
+
+ harness.check(!( !(new Double(Math.log( Double.POSITIVE_INFINITY ))).isInfinite() ),
+ "test_log - 3");
+ }
+
+ public void test_sqrt()
+ {
+ harness.check(!( !(new Double(Math.sqrt( Double.NaN ))).isNaN() ||
+ !(new Double(Math.sqrt( -10.0 ))).isNaN()),
+ "test_sqrt - 1");
+
+ harness.check(!( !(new Double(Math.sqrt( Double.NaN ))).isNaN() ||
+ !(new Double(Math.sqrt( -10.0 ))).isNaN()),
+ "test_sqrt - 2");
+
+ harness.check(!( !(new Double(Math.sqrt( Double.POSITIVE_INFINITY))).isInfinite()),
+ "test_sqrt - 3");
+
+ harness.check(!( Math.sqrt( -0.0) != -0.0 || Math.sqrt( 0.0) != 0.0 ),
+ "test_sqrt - 4");
+
+ harness.check(!( Math.sqrt( -0.0) != -0.0 || Math.sqrt( 0.0) != 0.0 ),
+ "test_sqrt - 5");
+
+
+ double sq = Math.sqrt(4.0);
+ harness.check(!(!( sq >= 1.9999 && sq <= 2.111 )),
+ "test_sqrt - 6");
+ }
+
+ public void test_pow()
+ {
+ harness.check(!( Math.pow(1.0 , 0.0 ) != 1.0 ),
+ "test_pow - 1");
+
+ harness.check(!( Math.pow(2.0 , -0.0 ) != 1.0 ),
+ "test_pow - 2");
+
+ harness.check(!( Math.pow(123.0 , 1.0 ) != 123.0 ),
+ "test_pow - 3");
+
+ harness.check(!( !(new Double(Math.pow( 10.0, Double.NaN ))).isNaN()),
+ "test_pow - 4");
+
+ harness.check(!( !(new Double(Math.pow( Double.NaN, 1.0 ))).isNaN()),
+ "test_pow - 5");
+
+ harness.check(!( !(new Double(Math.pow( 2.0, Double.POSITIVE_INFINITY ))).isInfinite()),
+ "test_pow - 6");
+
+ harness.check(!( !(new Double(Math.pow( 0.5, Double.NEGATIVE_INFINITY ))).isInfinite()),
+ "test_pow - 7");
+
+ harness.check(!( Math.pow( 1.5, Double.NEGATIVE_INFINITY ) != 0.0 ||
+ Math.pow( 0.5, Double.POSITIVE_INFINITY ) != 0.0),
+ "test_pow - 8");
+
+ harness.check(!( !(new Double(Math.pow( 1.0, Double.POSITIVE_INFINITY ))).isNaN()),
+ "test_pow - 9");
+
+ harness.check(!( Math.pow( 0.0, 1.0) != 0.0 ||
+ Math.pow( Double.POSITIVE_INFINITY , -1.0 ) != 0.0),
+ "test_pow - 10");
+
+ harness.check(!( !(new Double(Math.pow( 0.0, -1.0 ))).isInfinite() ||
+ !(new Double(Math.pow( Double.POSITIVE_INFINITY, 1.0 ))).isInfinite() ),
+ "test_pow - 11");
+
+ harness.check(!( Math.pow( -0.0, 5.0) != -0.0 ||
+ Math.pow( Double.NEGATIVE_INFINITY , -7.0 ) != -0.0),
+ "test_pow - 12");
+
+ harness.check(!( Math.pow( -2.0, 6.0) != Math.pow(2.0,6.0)),
+ "test_pow - 13");
+
+ harness.check(!( Math.pow( -2.0, 5.0) != -Math.pow(2.0,5.0)),
+ "test_pow - 14");
+
+ }
+
+ public void test_IEEEremainder()
+ {
+ harness.check(!( !(new Double(Math.IEEEremainder( Double.NaN, 1.0 ))).isNaN()),
+ "test_IEEEremainder - 1");
+ harness.check(!( !(new Double(Math.IEEEremainder( 1.0,Double.NaN))).isNaN()),
+ "test_IEEEremainder - 2");
+ harness.check(!( !(new Double(Math.IEEEremainder( Double.POSITIVE_INFINITY , 2.0))).isNaN()),
+ "test_IEEEremainder - 3");
+ harness.check(!( !(new Double(Math.IEEEremainder( 2.0,0.0))).isNaN() ),
+ "test_IEEEremainder - 4");
+ harness.check(!( Math.IEEEremainder( 3.0, Double.POSITIVE_INFINITY ) != 3.0 ),
+ "test_IEEEremainder - 5");
+ }
+
+ public void test_ceil()
+ {
+ harness.check(!( Math.ceil(5.0) != 5.0 ),
+ "test_ceil - 1");
+
+ harness.check(!( Math.ceil(0.0) != 0.0 || Math.ceil(-0.0) != -0.0 ),
+ "test_ceil - 2");
+
+ harness.check(!( !(new Double(Math.ceil(Double.POSITIVE_INFINITY))).isInfinite() ||
+ !(new Double(Math.ceil(Double.NaN))).isNaN()),
+ "test_ceil - 3");
+
+ harness.check(!( Math.ceil(-0.5) != -0.0 ),
+ "test_ceil - 4");
+
+ harness.check(!( Math.ceil( 2.5 ) != 3.0 ),
+ "test_ceil - 5");
+
+
+ }
+
+ public void test_floor()
+ {
+ harness.check(!( Math.floor(5.0) != 5.0 ),
+ "test_floor - 1");
+
+ harness.check(!( Math.floor(2.5) != 2.0 ),
+ "test_floor - 2");
+
+ harness.check(!( !(new Double(Math.floor(Double.POSITIVE_INFINITY))).isInfinite() ||
+ !(new Double(Math.floor(Double.NaN))).isNaN()),
+ "test_floor - 3");
+
+ harness.check(!( Math.floor(0.0) != 0.0 || Math.floor(-0.0) != -0.0 ),
+ "test_floor - 4");
+
+ }
+
+ public void test_rint()
+ {
+ harness.check(!( Math.rint( 2.3 ) != 2.0 ),
+ "test_rint - 1");
+
+ harness.check(!( Math.rint( 2.7 ) != 3.0 ),
+ "test_rint - 2");
+
+
+ harness.check(!(Math.rint( 2.5) != 2.0 ),
+ "test_rint - 3");
+
+ harness.check(!( Math.rint( 2.0) != 2.0 ),
+ "test_rint - 4");
+
+ harness.check(!( Math.rint( 2.0) != 2.0 ),
+ "test_rint - 5");
+
+ harness.check(!( !(new Double(Math.rint(Double.POSITIVE_INFINITY))).isInfinite() ||
+ !(new Double(Math.rint(Double.NaN))).isNaN()),
+ "test_rint - 6");
+
+ harness.check(!( Math.rint(0.0) != 0.0 || Math.rint(-0.0) != -0.0 ),
+ "test_rint - 7");
+ }
+
+ public void test_round()
+ {
+ harness.check(!( Math.round( 3.4 ) != 3 ),
+ "test_round - 1");
+
+ harness.check(!( Math.round( 9.55 ) != 10 ),
+ "test_round - 2");
+
+ harness.check(!( Math.round(Double.NaN) != 0 ),
+ "test_round - 3");
+
+ float f1 = Integer.MIN_VALUE;
+ f1 -= 5;
+ harness.check(!( Math.round(f1) != Integer.MIN_VALUE ||
+ Math.round(Float.NEGATIVE_INFINITY) != Integer.MIN_VALUE ),
+ "test_round - 4");
+
+ f1 = Integer.MAX_VALUE;
+ f1 += 5;
+ harness.check(!( Math.round(f1) != Integer.MAX_VALUE ||
+ Math.round(Float.POSITIVE_INFINITY) != Integer.MAX_VALUE ),
+ "test_round - 5");
+
+ double d1 = Long.MIN_VALUE;
+ d1 -= 5;
+ harness.check(!( Math.round(d1) != Long.MIN_VALUE ||
+ Math.round(Double.NEGATIVE_INFINITY) != Long.MIN_VALUE ),
+ "test_round - 6");
+
+ d1 = Long.MAX_VALUE;
+ d1 += 5;
+ harness.check(!( Math.round(d1) != Long.MAX_VALUE ||
+ Math.round(Double.POSITIVE_INFINITY) != Long.MAX_VALUE ),
+ "test_round - 7");
+
+
+ harness.check(!( Math.round( 3.4f ) != 3 ),
+ "test_round - 8");
+
+ harness.check(!( Math.round( 9.55f ) != 10 ),
+ "test_round - 9");
+
+ harness.check(!( Math.round(Float.NaN) != 0 ),
+ "test_round - 10");
+ }
+
+ public void test_random()
+ {
+ harness.check(!( Math.random() < 0.0 || Math.random() > 1.0 ),
+ "test_random - 1");
+ }
+
+ public void test_abs()
+ {
+ harness.check(!( Math.abs( 10 ) != 10 ),
+ "test_abs - 1");
+
+ harness.check(!( Math.abs( -23 ) != 23 ),
+ "test_abs - 2");
+
+ harness.check(!( Math.abs( Integer.MIN_VALUE ) != Integer.MIN_VALUE ),
+ "test_abs - 3" );
+
+ harness.check(!( Math.abs(-0) != 0 ),
+ "test_abs - 4" );
+
+
+ harness.check(!( Math.abs( 1000L ) != 1000 ),
+ "test_abs - 5");
+
+ harness.check(!( Math.abs( -2334242L ) != 2334242 ),
+ "test_abs - 6");
+
+ harness.check(!( Math.abs( Long.MIN_VALUE ) != Long.MIN_VALUE ),
+ "test_abs - 7" );
+
+ harness.check(!( Math.abs( 0.0f ) != 0.0f || Math.abs(-0.0f) != 0.0f ),
+ "test_abs - 8" );
+
+ harness.check(!( !(new Float(Math.abs( Float.POSITIVE_INFINITY ))).isInfinite() ),
+ "test_abs - 9" );
+
+ harness.check(!( !(new Float(Math.abs( Float.NaN ))).isNaN() ),
+ "test_abs - 10" );
+
+ harness.check(!( Math.abs( 23.34f ) != 23.34f ),
+ "test_abs - 11" );
+
+
+ harness.check(!( Math.abs( 0.0 ) != 0.0 || Math.abs(-0.0) != 0.0 ),
+ "test_abs - 12" );
+
+ harness.check(!( !(new Double(Math.abs( Double.POSITIVE_INFINITY ))).isInfinite() ),
+ "test_abs - 13" );
+
+ harness.check(!( !(new Double(Math.abs( Double.NaN ))).isNaN() ),
+ "test_abs - 14" );
+
+ harness.check(!( Math.abs( 23.34 ) != 23.34 ),
+ "test_abs - 15" );
+
+ }
+
+ public void test_min()
+ {
+ harness.check(!( Math.min( 100 , 12 ) != 12 ),
+ "test_min - 1" );
+
+ harness.check(!( Math.min( Integer.MIN_VALUE , Integer.MIN_VALUE + 1 ) != Integer.MIN_VALUE ),
+ "test_min - 2" );
+
+ harness.check(!( Math.min( Integer.MAX_VALUE , Integer.MAX_VALUE -1 ) != Integer.MAX_VALUE -1 ),
+ "test_min - 3" );
+
+ harness.check(!( Math.min( 10 , 10 ) != 10 ),
+ "test_min - 4" );
+
+ harness.check(!( Math.min( 0 , -0 ) != -0 ),
+ "test_min - 5" );
+
+
+ harness.check(!( Math.min( 100L , 12L ) != 12L ),
+ "test_min - 6" );
+
+ harness.check(!( Math.min( Long.MIN_VALUE , Long.MIN_VALUE + 1 ) != Long.MIN_VALUE ),
+ "test_min - 7" );
+
+ harness.check(!( Math.min( Long.MAX_VALUE , Long.MAX_VALUE -1 ) != Long.MAX_VALUE -1 ),
+ "test_min - 8" );
+
+ harness.check(!( Math.min( 10L , 10L ) != 10L ),
+ "test_min - 9" );
+
+ harness.check(!( Math.min( 0L , -0L ) != -0L ),
+ "test_min - 10" );
+
+
+ harness.check(!( Math.min( 23.4f , 12.3f ) != 12.3f ),
+ "test_min - 11" );
+
+ harness.check(!( !(new Float(Math.min( Float.NaN , 1.0f ))).isNaN() ),
+ "test_min - 12" );
+
+ harness.check(!( Math.min( 10.0f , 10.0f ) != 10.0f ),
+ "test_min - 13" );
+
+ harness.check(!( Math.min( 0.0f , -0.0f ) != -0.0f ),
+ "test_min - 14" );
+
+
+ harness.check(!( Math.min( 23.4 , 12.3 ) != 12.3 ),
+ "test_min - 15" );
+
+ harness.check(!( !(new Double(Math.min( Double.NaN , 1.0 ))).isNaN() ),
+ "test_min - 16" );
+
+ harness.check(!( Math.min( 10.0 , 10.0 ) != 10.0 ),
+ "test_min - 17" );
+
+ harness.check(!( Math.min( 0.0 , -0.0 ) != -0.0 ),
+ "test_min - 18" );
+
+ }
+
+ public void test_max()
+ {
+ harness.check(!( Math.max( 100 , 12 ) != 100 ),
+ "test_max - 1" );
+
+ harness.check(!( Math.max( Integer.MAX_VALUE , Integer.MAX_VALUE - 1 ) != Integer.MAX_VALUE ),
+ "test_max - 2" );
+
+ harness.check(!( Math.max( Integer.MIN_VALUE , Integer.MIN_VALUE + 1 ) != Integer.MIN_VALUE +1 ),
+ "test_max - 3" );
+
+ harness.check(!( Math.max( 10 , 10 ) != 10 ),
+ "test_max - 4" );
+
+ harness.check(!( Math.max( 0 , -0 ) != 0 ),
+ "test_max - 5" );
+
+
+ harness.check(!( Math.max( 100L , 12L ) != 100L ),
+ "test_max - 6" );
+
+ harness.check(!( Math.max( Long.MAX_VALUE , Long.MAX_VALUE - 1 ) != Long.MAX_VALUE ),
+ "test_max - 7" );
+
+ harness.check(!( Math.max( Long.MIN_VALUE , Long.MIN_VALUE +1 ) != Long.MIN_VALUE + 1 ),
+ "test_max - 8" );
+
+ harness.check(!( Math.max( 10L , 10L ) != 10L ),
+ "test_max - 9" );
+
+ harness.check(!( Math.max( 0L , -0L ) != 0L ),
+ "test_max - 10" );
+
+
+ harness.check(!( Math.max( 23.4f , 12.3f ) != 23.4f ),
+ "test_max - 11" );
+
+ harness.check(!( !(new Float(Math.max( Float.NaN , 1.0f ))).isNaN() ),
+ "test_max - 12" );
+
+ harness.check(!( Math.max( 10.0f , 10.0f ) != 10.0f ),
+ "test_max - 13" );
+
+ harness.check(!( Math.max( 0.0f , -0.0f ) != 0.0f ),
+ "test_max - 14" );
+
+
+ harness.check(!( Math.max( 23.4 , 12.3 ) != 23.4 ),
+ "test_max - 15" );
+
+ harness.check(!( !(new Double(Math.max( Double.NaN , 1.0 ))).isNaN() ),
+ "test_max - 16" );
+
+ harness.check(!( Math.max( 10.0 , 10.0 ) != 10.0 ),
+ "test_max - 17" );
+
+ harness.check(!( Math.max( 0.0 , -0.0 ) != 0.0 ),
+ "test_max - 18" );
+ }
+
+
+ public void testall()
+ {
+ test_Basics();
+ test_sincostan();
+ test_asinacosatan();
+ test_atan2();
+ test_log();
+ test_exp();
+ test_sqrt();
+ test_pow();
+ test_IEEEremainder();
+ test_ceil();
+ test_floor();
+ test_rint();
+ test_round();
+ test_random();
+ test_abs();
+ test_min();
+ test_max();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Math/acos.java b/gnu/testlet/java/lang/Math/acos.java
new file mode 100644
index 00000000..f395b901
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/acos.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.acos()
+ */
+public class acos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.acos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute acos using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NAN
+ Double.NaN, // +Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 1.5707963267948966, // 4.9E-324
+ Math.PI/2.0, // 0.0
+ 1.369438406004566, // 0.2
+ 1.1592794807274085, // 0.4
+ 1.0471975511965979, // 0.5
+ 0.9272952180016123, // 0.6
+ 0.6435011087932843, // 0.8
+ 0.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.5707963266948965, // 1.0E-10
+ Math.PI/2.0, // -0.0
+ 1.7721542475852274, // -0.2
+ 1.9823131728623846, // -0.4
+ 2.0943951023931957, // -0.5
+ 2.214297435588181, // -0.6
+ 2.498091544796509, // -0.8
+ Math.PI, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ 1.5707963268948966, // -1.0E-1
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/asin.java b/gnu/testlet/java/lang/Math/asin.java
new file mode 100644
index 00000000..2117b3e2
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/asin.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.asin()
+ */
+public class asin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.asin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute asin using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.2013579207903308, // 0.2
+ 0.41151684606748806, // 0.4
+ 0.5235987755982989, // 0.5
+ 0.6435011087932844, // 0.6
+ 0.9272952180016123, // 0.8
+ Math.PI/2.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.2013579207903308, // -0.2
+ -0.41151684606748806,// -0.4
+ -0.5235987755982989, // -0.5
+ -0.6435011087932844, // -0.6
+ -0.9272952180016123, // -0.8
+ -Math.PI/2.0, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/atan.java b/gnu/testlet/java/lang/Math/atan.java
new file mode 100644
index 00000000..757ad326
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/atan.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.atan()
+ */
+public class atan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.atan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute atan using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Math.PI/2.0, // Infinity
+ -Math.PI/2.0, // -Infinity
+ 1.5707963267948966, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.19739555984988078, // 0.2
+ 0.3805063771123649, // 0.4
+ 0.4636476090008061, // 0.5
+ 0.5404195002705842, // 0.6
+ 0.6747409422235527, // 0.8
+ 0.7853981633974483, // 1.0
+ 1.1071487177940904, // 2.0
+ 1.5707963266948965, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.19739555984988078,// -0.2
+ -0.3805063771123649, // -0.4
+ -0.4636476090008061, // -0.5
+ -0.5404195002705842, // -0.6
+ -0.6747409422235527, // -0.8
+ -0.7853981633974483, // -1.0
+ -1.1071487177940904, // -2.0
+ -1.5707963266948965, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/cbrt.java b/gnu/testlet/java/lang/Math/cbrt.java
new file mode 100644
index 00000000..5ed1f896
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/cbrt.java
@@ -0,0 +1,152 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.cbrt()
+ */
+public class cbrt implements Testlet
+{
+ /**
+ * These values are used as arguments to cbrt.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 123456789e-9,
+ -123456789e-6,
+ 123456789e+2,
+ -123456789e+4,
+ 987654321e-7,
+ -987654321e-4,
+ 987654321e+3,
+ -987654321e+5,
+ 1234509876e-320, // subnormal number
+ 9756272385e-325, // subnormal number
+ Math.PI,
+ Math.E
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.49793385921817446,
+ -4.979338592181745,
+ 2311.204240824796,
+ -10727.659796410873,
+ 4.622408495690158,
+ -46.224084956901585,
+ 9958.677214612972,
+ -46224.08495690158,
+ 2.3111680380625372e-104,
+ 9.918088333941088e-106,
+ 1.4645918875615231,
+ 1.3956124250860895
+ };
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cbrt(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.cbrt(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cbrt(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/cos.java b/gnu/testlet/java/lang/Math/cos.java
new file mode 100644
index 00000000..5330e464
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/cos.java
@@ -0,0 +1,162 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 1999 Cygnus Solutions
+ Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+ 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.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class cos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.cos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute cos using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.9999876894265599, // Double.MAX_VALUE
+ 1.0, // Double.MIN_VALUE
+ 1.0, // 0.0
+ 0.7071067811865476, // Math.PI/4
+ 6.123233995736766E-17, // Math.PI/2
+ -1.0, // Math.PI
+ 1.0, // 2*Math.PI
+ 1.0, // 4*Math.PI
+ 1.0, // 100*Math.PI
+ 0.873119622676856, // 1.0E10
+ 1.0, // 1.0E-10
+ 1.0, // -0.0
+ 0.7071067811865476, // -Math.PI/4
+ 6.123233995736766E-17, // -Math.PI/2
+ -1.0, // -Math.PI
+ 1.0, // -2*Math.PI
+ 1.0, // -4*Math.PI
+ 1.0, // -100*Math.PI
+ 0.873119622676856, // -1.0E10
+ 1.0, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.check (new Double (Math.cos (0)).toString (), "1.0");
+ harness.check (new Double (Math.cos (Math.PI)).toString (), "-1.0");
+ harness.check (Math.abs (Math.cos (Math.PI/2))
+ <= 1.1102230246251565E-16);
+ // It's unreasonable to expect the result of this to be eactly
+ // zero, but 2^-53, the value of the constant used here, is 1ulp
+ // in the range of cos.
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Math/cosh.java b/gnu/testlet/java/lang/Math/cosh.java
new file mode 100644
index 00000000..11d22845
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/cosh.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class cosh implements Testlet
+{
+ /**
+ * These values are used as arguments to cosh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 1.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY,
+ 1.0076304736991977,
+ 1.0076304736991977,
+ 1.0275604855232756,
+ 1.0275604855232756,
+ 1.8639267730274125,
+ 1.8639267730274125,
+ 9734.154204183918,
+ 9734.154204183918,
+ 1.792277186385473e9,
+ 1.792277186385473e9,
+ 2.1428869091881118e246,
+ 2.1428869091881118e246,
+ 3.1758371607555525e307,
+ 3.1758371607555525e307,
+ 8.988464834932886e307,
+ 8.988464834932886e307,
+ 1.7976931348605396e308,
+ 1.7972003892018829e308,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cosh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.cosh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cosh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/expm1.java b/gnu/testlet/java/lang/Math/expm1.java
new file mode 100644
index 00000000..8c890ce7
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/expm1.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.expm1()
+ */
+public class expm1 implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.expm1(input);
+ }
+
+ /**
+ * These values are used as arguments to expm1.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.0000000000000000277555756156289135105, // ~ 2^-55
+ -0.0000000000000000277555756156289135105, // ~ -2^55
+ 0.6 * 0.6931471805599453 + 0.05, // 0.6 * ln(2) + 0.05
+ -0.6 * 0.6931471805599453 - 0.05, // -0.6 * ln(2) - 0.05
+ 0.25 * 0.6931471805599453 + 0.03, // 0.25 * ln(2) + 0.03
+ -0.25 * 0.6931471805599453 - 0.03, // -0.25 * ln(2) - 0.03
+ 0.44,
+ -0.44,
+ 2.3 * 0.6931471805599453 + 0.05, // 2.3 * ln(2) + 0.05
+ -2.3 * 0.6931471805599453 - 0.05, // -2.3 * ln(2) - 0.05
+ 7 * 0.6931471805599453 + 0.03, // 7 * ln(2) + 0.03
+ -9 * 0.6931471805599453 - 0.03, // -9 * ln(2) - 0.03
+ 29 * 0.6931471805599453 + 0.03, // 29 * ln(2) + 0.03
+ -27 * 0.6931471805599453 - 0.03, // -27 * ln(2) - 0.03
+ 709.782712893384, // EXP_LIMIT_H
+ 709.782712893384 + 3.423e-5, // EXP_LIMIT_H + 3.423e-5
+ 709.782712893384 - 3.423e-5, // EXP_LIMIT_H - 3.423e-5
+ -709.782712893384, // -EXP_LIMIT_H
+ -709.782712893384 - 3.423e-5, // -EXP_LIMIT_H - 3.423e-5
+ -709.782712893384 + 3.423e-5 // -EXP_LIMIT_H + 3.423e-5
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ -1.0,
+ 2.7755575615628914E-17,
+ -2.7755575615628914E-17,
+ 0.5934290166706889,
+ -0.3724226247056801,
+ 0.22542386346433524,
+ -0.1839558296400811,
+ 0.5527072185113361,
+ -0.35596357891685865,
+ 4.177066148857307,
+ -0.806840405116183,
+ 130.89818034605017,
+ -0.9981045985672881,
+ 5.532210644181606E8,
+ -0.9999999927696174,
+ 1.7976931348622732E308,
+ Double.POSITIVE_INFINITY,
+ 1.7976316008794578E308,
+ -1.0,
+ -1.0,
+ -1.0
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/max.java b/gnu/testlet/java/lang/Math/max.java
new file mode 100644
index 00000000..706f706d
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/max.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 1999 Cygnus Solutions
+
+ 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.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class max implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Double.toString (Math.max (0.0, -0.0)), "0.0");
+ harness.check (Double.toString (Math.max (-0.0, -0.0)), "-0.0");
+ harness.check (Double.toString (Math.max (-0.0, 0.0)), "0.0");
+ harness.check (Double.toString (Math.max (0.0, 0.0)), "0.0");
+ harness.check (Double.toString (Math.max (1.0, 2.0)), "2.0");
+ harness.check (Double.toString (Math.max (2.0, 1.0)), "2.0");
+ harness.check (Double.toString (Math.max (-1.0, -2.0)), "-1.0");
+ harness.check (Double.toString (Math.max (-2.0, 1.0)), "1.0");
+ harness.check (Double.toString (Math.max (1.0, -2.0)), "1.0");
+ harness.check (Double.toString (Math.max (2.0, Double.NaN)), "NaN");
+ harness.check (Double.toString (Math.max (Double.NaN, 2.0)), "NaN");
+ harness.check (Double.toString (Math.max (Double.NEGATIVE_INFINITY,
+ Double.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Double.toString (Math.max (Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Double.toString (Math.max (Double.NEGATIVE_INFINITY, 0.0)),
+ "0.0");
+ harness.check (Double.toString (Math.max (Double.POSITIVE_INFINITY, 0.0)),
+ "Infinity");
+ harness.check (Double.toString (Math.max (Math.PI, 0.0)),
+ Double.toString(Math.PI));
+
+ harness.check (Float.toString (Math.max (0.0f, -0.0f)), "0.0");
+ harness.check (Float.toString (Math.max (-0.0f, -0.0f)), "-0.0");
+ harness.check (Float.toString (Math.max (-0.0f, 0.0f)), "0.0");
+ harness.check (Float.toString (Math.max (0.0f, 0.0f)), "0.0");
+ harness.check (Float.toString (Math.max (1.0f, 2.0f)), "2.0");
+ harness.check (Float.toString (Math.max (2.0f, 1.0f)), "2.0");
+ harness.check (Float.toString (Math.max (-1.0f, -2.0f)), "-1.0");
+ harness.check (Float.toString (Math.max (-2.0f, 1.0f)), "1.0");
+ harness.check (Float.toString (Math.max (1.0f, -2.0f)), "1.0");
+ harness.check (Float.toString (Math.max (2.0f, Float.NaN)), "NaN");
+ harness.check (Float.toString (Math.max (Float.NaN, 2.0f)), "NaN");
+ harness.check (Float.toString (Math.max (Float.NEGATIVE_INFINITY,
+ Float.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Float.toString (Math.max (Float.POSITIVE_INFINITY,
+ Float.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Float.toString (Math.max (Float.NEGATIVE_INFINITY, 0.0f)),
+ "0.0");
+ harness.check (Float.toString (Math.max (Float.POSITIVE_INFINITY, 0.0f)),
+ "Infinity");
+ harness.check (Float.toString (Math.max ((float)Math.PI, 0.0f)),
+ Float.toString((float)Math.PI));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/min.java b/gnu/testlet/java/lang/Math/min.java
new file mode 100644
index 00000000..fadf3115
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/min.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 1999 Cygnus Solutions
+
+ 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.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class min implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("Small doubles");
+ harness.check (Double.toString (Math.min (0.0, -0.0)), "-0.0");
+ harness.check (Double.toString (Math.min (-0.0, -0.0)), "-0.0");
+ harness.check (Double.toString (Math.min (-0.0, 0.0)), "-0.0");
+ harness.check (Double.toString (Math.min (0.0, 0.0)), "0.0");
+ harness.check (Double.toString (Math.min (1.0, 2.0)), "1.0");
+ harness.check (Double.toString (Math.min (2.0, 1.0)), "1.0");
+ harness.check (Double.toString (Math.min (-1.0, -2.0)), "-2.0");
+ harness.check (Double.toString (Math.min (-2.0, 1.0)), "-2.0");
+ harness.check (Double.toString (Math.min (1.0, -2.0)), "-2.0");
+
+ harness.checkPoint("Double NaNs");
+
+ harness.check (Double.isNaN(Double.NaN));
+ harness.check (Double.isNaN( 0.0d/0.0d ));
+
+ harness.checkPoint("Double NaN comparisons");
+
+ harness.check (Double.toString (Math.min (2.0, Double.NaN)), "NaN");
+ harness.check (Double.toString (Math.min (Double.NaN, 2.0)), "NaN");
+ // System.err.println(Double.toString (Math.min (Double.NaN, 2.0)));
+ harness.check (Math.min (Double.NaN, 2.0), Double.NaN);
+
+ harness.checkPoint("Double infinities");
+
+ harness.check (Double.toString (Math.min (Double.NEGATIVE_INFINITY,
+ Double.POSITIVE_INFINITY)),
+ "-Infinity");
+ harness.check (Math.min (Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY), Double.NEGATIVE_INFINITY);
+ harness.check (Double.toString (Math.min (Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Double.toString (Math.min (Double.NEGATIVE_INFINITY, 0.0)),
+ "-Infinity");
+ harness.check (Double.toString (Math.min (Double.POSITIVE_INFINITY, 0.0)),
+ "0.0");
+
+ harness.checkPoint("Double pi");
+
+ harness.check (Double.toString (Math.max (Math.PI, 0.0)),
+ Double.toString(Math.PI));
+
+ harness.checkPoint("Small floats");
+
+ harness.check (Float.toString (Math.min (0.0f, -0.0f)), "-0.0");
+ harness.check (Float.toString (Math.min (-0.0f, -0.0f)), "-0.0");
+ harness.check (Float.toString (Math.min (-0.0f, 0.0f)), "-0.0");
+ harness.check (Float.toString (Math.min (0.0f, 0.0f)), "0.0");
+ harness.check (Float.toString (Math.min (1.0f, 2.0f)), "1.0");
+ harness.check (Float.toString (Math.min (2.0f, 1.0f)), "1.0");
+ harness.check (Float.toString (Math.min (-1.0f, -2.0f)), "-2.0");
+ harness.check (Math.min (-1.0f, -2.0f), -2.0);
+ harness.check (Float.toString (Math.min (-2.0f, 1.0f)), "-2.0");
+ harness.check (Float.toString (Math.min (1.0f, -2.0f)), "-2.0");
+
+ harness.checkPoint("Float NaNs");
+
+ harness.check (Float.toString (Math.min (2.0f, Float.NaN)), "NaN");
+ harness.check (Math.min (2.0f, Float.NaN), Float.NaN);
+ harness.check (Float.toString (Math.min (Float.NaN, 2.0f)), "NaN");
+ harness.check (Math.min (Float.NaN, 2.0f), Float.NaN);
+
+ harness.checkPoint("Float infinities");
+
+ harness.check (Float.toString (Math.min (Float.NEGATIVE_INFINITY,
+ Float.POSITIVE_INFINITY)),
+ "-Infinity");
+ harness.check (Math.min (Float.NEGATIVE_INFINITY,
+ Float.POSITIVE_INFINITY),Float.NEGATIVE_INFINITY);
+ harness.check (Float.toString (Math.min (Float.POSITIVE_INFINITY,
+ Float.POSITIVE_INFINITY)),
+ "Infinity");
+ harness.check (Float.toString (Math.min (Float.NEGATIVE_INFINITY, 0.0f)),
+ "-Infinity");
+ harness.check (Math.min (Float.NEGATIVE_INFINITY, 0.0f), Float.NEGATIVE_INFINITY);
+ harness.check (Float.toString (Math.min (Float.POSITIVE_INFINITY, 0.0f)),
+ "0.0");
+
+ harness.checkPoint("Float pi");
+
+ harness.check (Float.toString (Math.max ((float)Math.PI, 0.0f)),
+ Float.toString((float)Math.PI));
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/Math/rint.java b/gnu/testlet/java/lang/Math/rint.java
new file mode 100644
index 00000000..9eaef269
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/rint.java
@@ -0,0 +1,35 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 1998 Cygnus Solutions
+
+ 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.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class rint implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Check for a well known rounding problem.
+ harness.check (new Double (Math.rint (-3.5)).toString (), "-4.0");
+ harness.check (new Double (Math.rint (4.5)).toString (), "4.0");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/sin.java b/gnu/testlet/java/lang/Math/sin.java
new file mode 100644
index 00000000..024c2baf
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/sin.java
@@ -0,0 +1,161 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 2000 Red Hat
+
+ 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.java.lang.Math;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.sin()
+ */
+public class sin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.sin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute sin using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ 0.004961954789184062, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.7071067811865475, // Math.PI/4
+ 1.0, // Math.PI/2
+ 1.2246467991473532E-16, // Math.PI
+ -2.4492935982947064E-16,// 2*Math.PI
+ -4.898587196589413E-16, // 4*Math.PI
+ 1.964386723728472E-15, // 100*Math.PI
+ -0.4875060250875107, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.7071067811865475, // -Math.PI/4
+ -1.0, // -Math.PI/2
+ -1.2246467991473532E-16,// -Math.PI
+ 2.4492935982947064E-16, // -2*Math.PI
+ 4.898587196589413E-16, // -4*Math.PI
+ -1.964386723728472E-15, // -100*Math.PI
+ 0.4875060250875107, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test (TestHarness harness)
+ {
+ harness.check (new Double (Math.sin (1e50)).toString (),
+ "-0.4805001434937588");
+ testInputValues(harness);
+ testNaN(harness);
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/sinh.java b/gnu/testlet/java/lang/Math/sinh.java
new file mode 100644
index 00000000..9e2c2102
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/sinh.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class sinh implements Testlet
+{
+ /**
+ * These values are used as arguments to sinh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.1237706408130359,
+ -0.1237706408130359,
+ 0.23639067538469039,
+ -0.23639067538469039,
+ 1.5729663108942873,
+ -1.5729663108942873,
+ 9734.154152818386,
+ -9734.154152818386,
+ 1.792277186385473E9,
+ -1.792277186385473E9,
+ 2.1428869091881118E246,
+ -2.1428869091881118E246,
+ 3.1758371607555525E307,
+ -3.1758371607555525E307,
+ 8.988464834932886E307,
+ -8.988464834932886E307,
+ 1.7976931348605396E308,
+ 1.7972003892018829E308,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.sinh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.sinh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.sinh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Entries b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Entries
new file mode 100644
index 00000000..8d919e23
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Entries
@@ -0,0 +1,12 @@
+/acos.java/1.1/Fri Aug 31 12:54:12 2012//
+/asin.java/1.1/Fri Aug 31 12:54:12 2012//
+/atan.java/1.1/Fri Aug 31 12:54:12 2012//
+/cbrt.java/1.1/Fri Aug 31 12:54:12 2012//
+/cos.java/1.1/Fri Aug 31 12:54:12 2012//
+/cosh.java/1.1/Fri Aug 31 12:54:12 2012//
+/expm1.java/1.1/Fri Aug 31 12:54:12 2012//
+/sin.java/1.1/Fri Aug 31 12:54:12 2012//
+/sinh.java/1.1/Fri Aug 31 12:54:12 2012//
+/tan.java/1.1/Fri Aug 31 12:54:12 2012//
+/tanh.java/1.1/Fri Aug 31 12:54:12 2012//
+D
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Repository b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Repository
new file mode 100644
index 00000000..7cc32215
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Math/strictfp_modifier
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Root b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/acos.java b/gnu/testlet/java/lang/Math/strictfp_modifier/acos.java
new file mode 100644
index 00000000..f4b2b304
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/acos.java
@@ -0,0 +1,178 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.acos()
+ * by using strictfp modifier.
+ */
+public strictfp class acos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.acos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute acos using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NAN
+ Double.NaN, // +Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 1.5707963267948966, // 4.9E-324
+ Math.PI/2.0, // 0.0
+ 1.369438406004566, // 0.2
+ 1.1592794807274085, // 0.4
+ 1.0471975511965979, // 0.5
+ 0.9272952180016123, // 0.6
+ 0.6435011087932843, // 0.8
+ 0.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.5707963266948965, // 1.0E-10
+ Math.PI/2.0, // -0.0
+ 1.7721542475852274, // -0.2
+ 1.9823131728623846, // -0.4
+ 2.0943951023931957, // -0.5
+ 2.214297435588181, // -0.6
+ 2.498091544796509, // -0.8
+ Math.PI, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ 1.5707963268948966, // -1.0E-1
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/asin.java b/gnu/testlet/java/lang/Math/strictfp_modifier/asin.java
new file mode 100644
index 00000000..f7549b1a
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/asin.java
@@ -0,0 +1,178 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.asin()
+ * by using strictfp modifier.
+ */
+public strictfp class asin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.asin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute asin using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.2013579207903308, // 0.2
+ 0.41151684606748806, // 0.4
+ 0.5235987755982989, // 0.5
+ 0.6435011087932844, // 0.6
+ 0.9272952180016123, // 0.8
+ Math.PI/2.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.2013579207903308, // -0.2
+ -0.41151684606748806,// -0.4
+ -0.5235987755982989, // -0.5
+ -0.6435011087932844, // -0.6
+ -0.9272952180016123, // -0.8
+ -Math.PI/2.0, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/atan.java b/gnu/testlet/java/lang/Math/strictfp_modifier/atan.java
new file mode 100644
index 00000000..e0f62192
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/atan.java
@@ -0,0 +1,178 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.atan()
+ * by using strictfp modifier.
+ */
+public strictfp class atan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.atan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute atan using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Math.PI/2.0, // Infinity
+ -Math.PI/2.0, // -Infinity
+ 1.5707963267948966, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.19739555984988078, // 0.2
+ 0.3805063771123649, // 0.4
+ 0.4636476090008061, // 0.5
+ 0.5404195002705842, // 0.6
+ 0.6747409422235527, // 0.8
+ 0.7853981633974483, // 1.0
+ 1.1071487177940904, // 2.0
+ 1.5707963266948965, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.19739555984988078,// -0.2
+ -0.3805063771123649, // -0.4
+ -0.4636476090008061, // -0.5
+ -0.5404195002705842, // -0.6
+ -0.6747409422235527, // -0.8
+ -0.7853981633974483, // -1.0
+ -1.1071487177940904, // -2.0
+ -1.5707963266948965, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/cbrt.java b/gnu/testlet/java/lang/Math/strictfp_modifier/cbrt.java
new file mode 100644
index 00000000..6ea050d7
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/cbrt.java
@@ -0,0 +1,152 @@
+// Tags: JDK1.5
+
+// This file is part of Mauve.
+// update for strictfp modifier Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.cbrt()
+ * by using strictfp modifier.
+ */
+public strictfp class cbrt implements Testlet
+{
+ /**
+ * These values are used as arguments to cbrt.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 123456789e-9,
+ -123456789e-6,
+ 123456789e+2,
+ -123456789e+4,
+ 987654321e-7,
+ -987654321e-4,
+ 987654321e+3,
+ -987654321e+5,
+ 1234509876e-320, // subnormal number
+ 9756272385e-325, // subnormal number
+ Math.PI,
+ Math.E
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.49793385921817446,
+ -4.979338592181745,
+ 2311.204240824796,
+ -10727.659796410873,
+ 4.622408495690158,
+ -46.224084956901585,
+ 9958.677214612972,
+ -46224.08495690158,
+ 2.3111680380625372e-104,
+ 9.918088333941088e-106,
+ 1.4645918875615231,
+ 1.3956124250860895
+ };
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cbrt(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.cbrt(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cbrt(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/cos.java b/gnu/testlet/java/lang/Math/strictfp_modifier/cos.java
new file mode 100644
index 00000000..5a8986a5
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/cos.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.cos()
+ * by using strictfp modifier.
+ */
+public strictfp class cos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.cos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute cos using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.9999876894265599, // Double.MAX_VALUE
+ 1.0, // Double.MIN_VALUE
+ 1.0, // 0.0
+ 0.7071067811865476, // Math.PI/4
+ 6.123233995736766E-17, // Math.PI/2
+ -1.0, // Math.PI
+ 1.0, // 2*Math.PI
+ 1.0, // 4*Math.PI
+ 1.0, // 100*Math.PI
+ 0.873119622676856, // 1.0E10
+ 1.0, // 1.0E-10
+ 1.0, // -0.0
+ 0.7071067811865476, // -Math.PI/4
+ 6.123233995736766E-17, // -Math.PI/2
+ -1.0, // -Math.PI
+ 1.0, // -2*Math.PI
+ 1.0, // -4*Math.PI
+ 1.0, // -100*Math.PI
+ 0.873119622676856, // -1.0E10
+ 1.0, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/cosh.java b/gnu/testlet/java/lang/Math/strictfp_modifier/cosh.java
new file mode 100644
index 00000000..43259180
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/cosh.java
@@ -0,0 +1,160 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+// update for strictfp modifier Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class cosh implements Testlet
+{
+ /**
+ * These values are used as arguments to cosh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 1.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY,
+ 1.0076304736991977,
+ 1.0076304736991977,
+ 1.0275604855232756,
+ 1.0275604855232756,
+ 1.8639267730274125,
+ 1.8639267730274125,
+ 9734.154204183918,
+ 9734.154204183918,
+ 1.792277186385473e9,
+ 1.792277186385473e9,
+ 2.1428869091881118e246,
+ 2.1428869091881118e246,
+ 3.1758371607555525e307,
+ 3.1758371607555525e307,
+ 8.988464834932886e307,
+ 8.988464834932886e307,
+ 1.7976931348605396e308,
+ 1.7972003892018829e308,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cosh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.cosh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.cosh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/expm1.java b/gnu/testlet/java/lang/Math/strictfp_modifier/expm1.java
new file mode 100644
index 00000000..78d8bd6e
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/expm1.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.5
+
+// This file is part of Mauve.
+// update for strictfp modifier Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.expm1()
+ * by using strictfp modifier.
+ */
+public strictfp class expm1 implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.expm1(input);
+ }
+
+ /**
+ * These values are used as arguments to expm1.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.0000000000000000277555756156289135105, // ~ 2^-55
+ -0.0000000000000000277555756156289135105, // ~ -2^55
+ 0.6 * 0.6931471805599453 + 0.05, // 0.6 * ln(2) + 0.05
+ -0.6 * 0.6931471805599453 - 0.05, // -0.6 * ln(2) - 0.05
+ 0.25 * 0.6931471805599453 + 0.03, // 0.25 * ln(2) + 0.03
+ -0.25 * 0.6931471805599453 - 0.03, // -0.25 * ln(2) - 0.03
+ 0.44,
+ -0.44,
+ 2.3 * 0.6931471805599453 + 0.05, // 2.3 * ln(2) + 0.05
+ -2.3 * 0.6931471805599453 - 0.05, // -2.3 * ln(2) - 0.05
+ 7 * 0.6931471805599453 + 0.03, // 7 * ln(2) + 0.03
+ -9 * 0.6931471805599453 - 0.03, // -9 * ln(2) - 0.03
+ 29 * 0.6931471805599453 + 0.03, // 29 * ln(2) + 0.03
+ -27 * 0.6931471805599453 - 0.03, // -27 * ln(2) - 0.03
+ 709.782712893384, // EXP_LIMIT_H
+ 709.782712893384 + 3.423e-5, // EXP_LIMIT_H + 3.423e-5
+ 709.782712893384 - 3.423e-5, // EXP_LIMIT_H - 3.423e-5
+ -709.782712893384, // -EXP_LIMIT_H
+ -709.782712893384 - 3.423e-5, // -EXP_LIMIT_H - 3.423e-5
+ -709.782712893384 + 3.423e-5 // -EXP_LIMIT_H + 3.423e-5
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ -1.0,
+ 2.7755575615628914E-17,
+ -2.7755575615628914E-17,
+ 0.5934290166706889,
+ -0.3724226247056801,
+ 0.22542386346433524,
+ -0.1839558296400811,
+ 0.5527072185113361,
+ -0.35596357891685865,
+ 4.177066148857307,
+ -0.806840405116183,
+ 130.89818034605017,
+ -0.9981045985672881,
+ 5.532210644181606E8,
+ -0.9999999927696174,
+ 1.7976931348622732E308,
+ Double.POSITIVE_INFINITY,
+ 1.7976316008794578E308,
+ -1.0,
+ -1.0,
+ -1.0
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/sin.java b/gnu/testlet/java/lang/Math/strictfp_modifier/sin.java
new file mode 100644
index 00000000..b2cfe1c9
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/sin.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+// update for strictfp class Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.sin()
+ */
+public strictfp class sin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.sin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute sin using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ 0.004961954789184062, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.7071067811865475, // Math.PI/4
+ 1.0, // Math.PI/2
+ 1.2246467991473532E-16, // Math.PI
+ -2.4492935982947064E-16,// 2*Math.PI
+ -4.898587196589413E-16, // 4*Math.PI
+ 1.964386723728472E-15, // 100*Math.PI
+ -0.4875060250875107, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.7071067811865475, // -Math.PI/4
+ -1.0, // -Math.PI/2
+ -1.2246467991473532E-16,// -Math.PI
+ 2.4492935982947064E-16, // -2*Math.PI
+ 4.898587196589413E-16, // -4*Math.PI
+ -1.964386723728472E-15, // -100*Math.PI
+ 0.4875060250875107, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/sinh.java b/gnu/testlet/java/lang/Math/strictfp_modifier/sinh.java
new file mode 100644
index 00000000..538028b1
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/sinh.java
@@ -0,0 +1,160 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+// update for strictfp modifier Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class sinh implements Testlet
+{
+ /**
+ * These values are used as arguments to sinh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.1237706408130359,
+ -0.1237706408130359,
+ 0.23639067538469039,
+ -0.23639067538469039,
+ 1.5729663108942873,
+ -1.5729663108942873,
+ 9734.154152818386,
+ -9734.154152818386,
+ 1.792277186385473E9,
+ -1.792277186385473E9,
+ 2.1428869091881118E246,
+ -2.1428869091881118E246,
+ 3.1758371607555525E307,
+ -3.1758371607555525E307,
+ 8.988464834932886E307,
+ -8.988464834932886E307,
+ 1.7976931348605396E308,
+ 1.7972003892018829E308,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.sinh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.sinh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.sinh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/tan.java b/gnu/testlet/java/lang/Math/strictfp_modifier/tan.java
new file mode 100644
index 00000000..b6186a19
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/tan.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.tan()
+ * by using strictfp modifier.
+ */
+public strictfp class tan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.tan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute tan using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.004962015874444895, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.9999999999999999, // Math.PI/4
+ 1.633123935319537E16, // Math.PI/2
+ -1.2246467991473532E-16, // Math.PI
+ -2.4492935982947064E-16, // 2*Math.PI
+ -4.898587196589413E-16, // 4*Math.PI
+ 1.964386723728472E-15, // 100*Math.PI
+ -0.5583496378112418, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.9999999999999999, // -Math.PI/4
+ -1.633123935319537E16, // -Math.PI/2
+ 1.2246467991473532E-16, // -Math.PI
+ 2.4492935982947064E-16, // -2*Math.PI
+ 4.898587196589413E-16, // -4*Math.PI
+ -1.964386723728472E-15, // -100*Math.PI
+ 0.5583496378112418, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/Math/strictfp_modifier/tanh.java b/gnu/testlet/java/lang/Math/strictfp_modifier/tanh.java
new file mode 100644
index 00000000..221b3930
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/strictfp_modifier/tanh.java
@@ -0,0 +1,156 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+// update for strictfp class Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math.strictfp_modifier;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class tanh implements Testlet
+{
+ /**
+ * These values are used as arguments to tanh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 2.7755575615628e-16, // ~ 2^-55
+ -2.7755575615628e-16, // ~ -2^-55
+ 2.5123456789e-16, // < 2^-55
+ -2.5123456789e-16, // > -2^-55
+ 0.123456789,
+ -0.123456789,
+ 0.987654321,
+ -0.987654321,
+ 1.0000000000000000123,
+ -1.0000000000000000123,
+ 1.123456789,
+ -1.123456789,
+ 21.999999999999999876,
+ -21.999999999999999876,
+ 22.000000000000000123,
+ -22.000000000000000123,
+ 25.987654321,
+ -25.987654321,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ 1.0,
+ -1.0,
+ 2.7755575615627996E-16,
+ -2.7755575615627996E-16,
+ 2.5123456789E-16,
+ -2.5123456789E-16,
+ 0.12283336405919822,
+ -0.12283336405919822,
+ 0.7563603430619676,
+ -0.7563603430619676,
+ 0.7615941559557649,
+ -0.7615941559557649,
+ 0.8087679479619252,
+ -0.8087679479619252,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.tanh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.tanh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.tanh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Math/tan.java b/gnu/testlet/java/lang/Math/tan.java
new file mode 100644
index 00000000..9370f814
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/tan.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method Math.tan()
+ */
+public class tan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return Math.tan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute tan using Math.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ Math.PI/4,
+ Math.PI/2,
+ Math.PI,
+ 2*Math.PI,
+ 4*Math.PI,
+ 100*Math.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -Math.PI/4,
+ -Math.PI/2,
+ -Math.PI,
+ -2*Math.PI,
+ -4*Math.PI,
+ -100*Math.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.004962015874444895, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.9999999999999999, // Math.PI/4
+ 1.633123935319537E16, // Math.PI/2
+ -1.2246467991473532E-16, // Math.PI
+ -2.4492935982947064E-16, // 2*Math.PI
+ -4.898587196589413E-16, // 4*Math.PI
+ 1.964386723728472E-15, // 100*Math.PI
+ -0.5583496378112418, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.9999999999999999, // -Math.PI/4
+ -1.633123935319537E16, // -Math.PI/2
+ 1.2246467991473532E-16, // -Math.PI
+ 2.4492935982947064E-16, // -2*Math.PI
+ 4.898587196589413E-16, // -4*Math.PI
+ -1.964386723728472E-15, // -100*Math.PI
+ 0.5583496378112418, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/Math/tanh.java b/gnu/testlet/java/lang/Math/tanh.java
new file mode 100644
index 00000000..f9f44da7
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/tanh.java
@@ -0,0 +1,154 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.Math;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class tanh implements Testlet
+{
+ /**
+ * These values are used as arguments to tanh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 2.7755575615628e-16, // ~ 2^-55
+ -2.7755575615628e-16, // ~ -2^-55
+ 2.5123456789e-16, // < 2^-55
+ -2.5123456789e-16, // > -2^-55
+ 0.123456789,
+ -0.123456789,
+ 0.987654321,
+ -0.987654321,
+ 1.0000000000000000123,
+ -1.0000000000000000123,
+ 1.123456789,
+ -1.123456789,
+ 21.999999999999999876,
+ -21.999999999999999876,
+ 22.000000000000000123,
+ -22.000000000000000123,
+ 25.987654321,
+ -25.987654321,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ 1.0,
+ -1.0,
+ 2.7755575615627996E-16,
+ -2.7755575615627996E-16,
+ 2.5123456789E-16,
+ -2.5123456789E-16,
+ 0.12283336405919822,
+ -0.12283336405919822,
+ 0.7563603430619676,
+ -0.7563603430619676,
+ 0.7615941559557649,
+ -0.7615941559557649,
+ 0.8087679479619252,
+ -0.8087679479619252,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.tanh(inputValues[i]);
+
+ // exact equality
+ harness.check(Double.doubleToLongBits(res), Double.doubleToLongBits(outputValues[i]));
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ // exact equality
+ harness.check(Double.doubleToRawLongBits(Math.tanh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = Math.tanh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Math/ulp.java b/gnu/testlet/java/lang/Math/ulp.java
new file mode 100644
index 00000000..7dfc877b
--- /dev/null
+++ b/gnu/testlet/java/lang/Math/ulp.java
@@ -0,0 +1,44 @@
+/* ulp.java -- Test the ulp method
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Math;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class ulp implements Testlet {
+
+ public void test(TestHarness harness) {
+ harness.check(Math.ulp(0.0), Double.MIN_VALUE);
+ harness.check(Math.ulp(Double.NaN), Double.NaN);
+ harness.check(Math.ulp(Double.MAX_VALUE), Math.pow(2.0, 971));
+ harness.check(Math.ulp(Double.NEGATIVE_INFINITY), Double.POSITIVE_INFINITY);
+ harness.check(Math.ulp(Double.MIN_VALUE), Double.MIN_VALUE);
+
+ harness.check(Math.ulp(0.0f), Float.MIN_VALUE);
+ harness.check(Math.ulp(Float.NaN), Float.NaN);
+ harness.check(Math.ulp(Float.MAX_VALUE), Math.pow(2.0, 104));
+ harness.check(Math.ulp(Float.NEGATIVE_INFINITY), Float.POSITIVE_INFINITY);
+ harness.check(Math.ulp(Float.MIN_VALUE), Float.MIN_VALUE);
+ }
+}
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries
new file mode 100644
index 00000000..f416f114
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 9 14:15:28 2012//
+/constructor.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries.Log b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Repository b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Repository
new file mode 100644
index 00000000..78b2561b
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NegativeArraySizeException
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Root b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/TryCatch.java b/gnu/testlet/java/lang/NegativeArraySizeException/TryCatch.java
new file mode 100644
index 00000000..514ecdf5
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NegativeArraySizeException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NegativeArraySizeException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NegativeArraySizeException("NegativeArraySizeException");
+ }
+ catch (NegativeArraySizeException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Entries b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Entries
new file mode 100644
index 00000000..3435ad74
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 9 14:15:28 2012//
+/getInterfaces.java/1.1/Mon Jul 9 14:15:28 2012//
+/getModifiers.java/1.1/Mon Jul 9 14:15:28 2012//
+/getName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getPackage.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSimpleName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSuperclass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isAssignableFrom.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInstance.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInterface.java/1.1/Mon Jul 9 14:15:28 2012//
+/isLocalClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isMemberClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isPrimitive.java/1.1/Mon Jul 9 14:15:28 2012//
+/isSynthetic.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Repository b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Repository
new file mode 100644
index 00000000..7752a395
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NegativeArraySizeException/classInfo
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Root b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..3a361d88
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.NegativeArraySizeException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NegativeArraySizeException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NegativeArraySizeException
+ NegativeArraySizeException o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NegativeArraySizeException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b614af8e
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getModifiers.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getModifiers.java
new file mode 100644
index 00000000..76907e19
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getName.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getName.java
new file mode 100644
index 00000000..1dfc3928
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NegativeArraySizeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getPackage.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getPackage.java
new file mode 100644
index 00000000..ee0ab1c0
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..859012b9
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NegativeArraySizeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..0361a7f6
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..3735a08c
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NegativeArraySizeException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInstance.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInstance.java
new file mode 100644
index 00000000..ad40edb7
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NegativeArraySizeException("NegativeArraySizeException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInterface.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInterface.java
new file mode 100644
index 00000000..ab236671
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ae666527
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..899a98a8
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..7c42fb26
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..7b47c4d2
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NegativeArraySizeException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test for method java.lang.NegativeArraySizeException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NegativeArraySizeException("NegativeArraySizeException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NegativeArraySizeException/constructor.java b/gnu/testlet/java/lang/NegativeArraySizeException/constructor.java
new file mode 100644
index 00000000..e8a7cb3b
--- /dev/null
+++ b/gnu/testlet/java/lang/NegativeArraySizeException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.NegativeArraySizeException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NegativeArraySizeException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NegativeArraySizeException;
+
+
+
+/**
+ * Test if instances of a class java.lang.NegativeArraySizeException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NegativeArraySizeException object1 = new NegativeArraySizeException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.NegativeArraySizeException");
+
+ NegativeArraySizeException object2 = new NegativeArraySizeException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.NegativeArraySizeException: nothing happens");
+
+ NegativeArraySizeException object3 = new NegativeArraySizeException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.NegativeArraySizeException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Entries b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Entries
new file mode 100644
index 00000000..65447b30
--- /dev/null
+++ b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:31 2012//
+D
diff --git a/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Repository b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Repository
new file mode 100644
index 00000000..099ded17
--- /dev/null
+++ b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoClassDefFoundError
diff --git a/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Root b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoClassDefFoundError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoClassDefFoundError/TryCatch.java b/gnu/testlet/java/lang/NoClassDefFoundError/TryCatch.java
new file mode 100644
index 00000000..78d88cf0
--- /dev/null
+++ b/gnu/testlet/java/lang/NoClassDefFoundError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NoClassDefFoundError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoClassDefFoundError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoClassDefFoundError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NoClassDefFoundError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NoClassDefFoundError("NoClassDefFoundError");
+ }
+ catch (NoClassDefFoundError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoClassDefFoundError/constructor.java b/gnu/testlet/java/lang/NoClassDefFoundError/constructor.java
new file mode 100644
index 00000000..125618b5
--- /dev/null
+++ b/gnu/testlet/java/lang/NoClassDefFoundError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.NoClassDefFoundError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoClassDefFoundError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoClassDefFoundError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.NoClassDefFoundError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NoClassDefFoundError error1 = new NoClassDefFoundError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.NoClassDefFoundError");
+
+ NoClassDefFoundError error2 = new NoClassDefFoundError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.NoClassDefFoundError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries
new file mode 100644
index 00000000..65447b30
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:31 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries.Log b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/CVS/Repository b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Repository
new file mode 100644
index 00000000..66c07c68
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchFieldError
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/CVS/Root b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/TryCatch.java b/gnu/testlet/java/lang/NoSuchFieldError/TryCatch.java
new file mode 100644
index 00000000..adb2bbaa
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NoSuchFieldError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NoSuchFieldError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NoSuchFieldError("NoSuchFieldError");
+ }
+ catch (NoSuchFieldError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Entries b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Entries
new file mode 100644
index 00000000..45f5160a
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu Jun 14 13:19:56 2012//
+/getInterfaces.java/1.1/Thu Jun 14 13:19:56 2012//
+/getModifiers.java/1.1/Thu Jun 14 13:19:56 2012//
+/getName.java/1.1/Thu Jun 14 13:19:56 2012//
+/getPackage.java/1.1/Thu Jun 14 13:19:56 2012//
+/getSimpleName.java/1.1/Thu Jun 14 13:19:56 2012//
+/getSuperclass.java/1.1/Thu Jun 14 13:19:56 2012//
+/isAssignableFrom.java/1.1/Thu Jun 14 13:19:56 2012//
+/isInstance.java/1.1/Thu Jun 14 13:19:56 2012//
+/isInterface.java/1.1/Thu Jun 14 13:19:56 2012//
+/isLocalClass.java/1.1/Thu Jun 14 13:19:56 2012//
+/isMemberClass.java/1.1/Thu Jun 14 13:19:56 2012//
+/isPrimitive.java/1.1/Thu Jun 14 13:19:56 2012//
+/isSynthetic.java/1.1/Thu Jun 14 13:19:56 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Repository b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Repository
new file mode 100644
index 00000000..2e20b27c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchFieldError/classInfo
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Root b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..f06a7cd2
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.NoSuchFieldError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+import java.lang.IncompatibleClassChangeError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NoSuchFieldError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NoSuchFieldError
+ NoSuchFieldError o = new NoSuchFieldError("NoSuchFieldError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NoSuchFieldError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IncompatibleClassChangeError);
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..5fedd9c1
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getModifiers.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getModifiers.java
new file mode 100644
index 00000000..d9cad9ba
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getName.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getName.java
new file mode 100644
index 00000000..abb88392
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NoSuchFieldError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getPackage.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getPackage.java
new file mode 100644
index 00000000..92d8351a
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..1ad9d1f8
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NoSuchFieldError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..1bfb4ef1
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchFieldError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IncompatibleClassChangeError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..6e317174
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NoSuchFieldError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInstance.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInstance.java
new file mode 100644
index 00000000..37b699ca
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NoSuchFieldError("NoSuchFieldError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInterface.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInterface.java
new file mode 100644
index 00000000..2d7fcb77
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..719f8243
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..d9c27e29
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8f6d9346
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..fab6aacd
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldError("NoSuchFieldError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldError/constructor.java b/gnu/testlet/java/lang/NoSuchFieldError/constructor.java
new file mode 100644
index 00000000..3997cc31
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.NoSuchFieldError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.NoSuchFieldError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NoSuchFieldError error1 = new NoSuchFieldError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.NoSuchFieldError");
+
+ NoSuchFieldError error2 = new NoSuchFieldError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.NoSuchFieldError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries
new file mode 100644
index 00000000..f416f114
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 9 14:15:28 2012//
+/constructor.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries.Log b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/CVS/Repository b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Repository
new file mode 100644
index 00000000..5f608923
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchFieldException
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/CVS/Root b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/TryCatch.java b/gnu/testlet/java/lang/NoSuchFieldException/TryCatch.java
new file mode 100644
index 00000000..81a42269
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NoSuchFieldException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NoSuchFieldException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NoSuchFieldException("NoSuchFieldException");
+ }
+ catch (NoSuchFieldException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Entries b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Entries
new file mode 100644
index 00000000..3435ad74
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 9 14:15:28 2012//
+/getInterfaces.java/1.1/Mon Jul 9 14:15:28 2012//
+/getModifiers.java/1.1/Mon Jul 9 14:15:28 2012//
+/getName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getPackage.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSimpleName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSuperclass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isAssignableFrom.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInstance.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInterface.java/1.1/Mon Jul 9 14:15:28 2012//
+/isLocalClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isMemberClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isPrimitive.java/1.1/Mon Jul 9 14:15:28 2012//
+/isSynthetic.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Repository b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Repository
new file mode 100644
index 00000000..fc544159
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchFieldException/classInfo
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Root b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..a7f56693
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.NoSuchFieldException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NoSuchFieldException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NoSuchFieldException
+ NoSuchFieldException o = new NoSuchFieldException("NoSuchFieldException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NoSuchFieldException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..4691fcb3
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getModifiers.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f7e994fc
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getName.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getName.java
new file mode 100644
index 00000000..f9fd274b
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NoSuchFieldException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getPackage.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getPackage.java
new file mode 100644
index 00000000..f7284313
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ac305d8c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NoSuchFieldException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..849a27dd
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchFieldException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..c6ed1f7e
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NoSuchFieldException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInstance.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInstance.java
new file mode 100644
index 00000000..b729bba9
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NoSuchFieldException("NoSuchFieldException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInterface.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInterface.java
new file mode 100644
index 00000000..e9f6a2a3
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..eca0e6b4
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..e65a3f4b
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..e9c05611
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..ae4aba68
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchFieldException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchFieldException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchFieldException("NoSuchFieldException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchFieldException/constructor.java b/gnu/testlet/java/lang/NoSuchFieldException/constructor.java
new file mode 100644
index 00000000..95d347cb
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchFieldException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.NoSuchFieldException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchFieldException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchFieldException;
+
+
+
+/**
+ * Test if instances of a class java.lang.NoSuchFieldException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NoSuchFieldException object1 = new NoSuchFieldException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.NoSuchFieldException");
+
+ NoSuchFieldException object2 = new NoSuchFieldException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.NoSuchFieldException: nothing happens");
+
+ NoSuchFieldException object3 = new NoSuchFieldException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.NoSuchFieldException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries
new file mode 100644
index 00000000..65447b30
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:33:59 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:31 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries.Log b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/CVS/Repository b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Repository
new file mode 100644
index 00000000..c36f0040
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchMethodError
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/CVS/Root b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/TryCatch.java b/gnu/testlet/java/lang/NoSuchMethodError/TryCatch.java
new file mode 100644
index 00000000..75281c4c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NoSuchMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NoSuchMethodError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NoSuchMethodError("NoSuchMethodError");
+ }
+ catch (NoSuchMethodError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Entries b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Entries
new file mode 100644
index 00000000..eb8b2f45
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 31 16:02:55 2012//
+/getInterfaces.java/1.1/Thu May 31 16:02:55 2012//
+/getModifiers.java/1.1/Thu May 31 16:02:55 2012//
+/getName.java/1.1/Thu May 31 16:02:55 2012//
+/getPackage.java/1.1/Thu May 31 16:02:55 2012//
+/getSimpleName.java/1.1/Thu May 31 16:02:55 2012//
+/getSuperclass.java/1.1/Thu May 31 16:02:55 2012//
+/isAssignableFrom.java/1.1/Thu May 31 16:02:55 2012//
+/isInstance.java/1.1/Thu May 31 16:02:55 2012//
+/isInterface.java/1.1/Thu May 31 16:02:55 2012//
+/isLocalClass.java/1.1/Thu May 31 16:02:55 2012//
+/isMemberClass.java/1.1/Thu May 31 16:02:55 2012//
+/isPrimitive.java/1.1/Thu May 31 16:02:55 2012//
+/isSynthetic.java/1.1/Thu May 31 16:02:55 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Repository b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Repository
new file mode 100644
index 00000000..52590ddc
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchMethodError/classInfo
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Root b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..d09a7870
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.NoSuchMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+import java.lang.IncompatibleClassChangeError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NoSuchMethodError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NoSuchMethodError
+ NoSuchMethodError o = new NoSuchMethodError("NoSuchMethodError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NoSuchMethodError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IncompatibleClassChangeError);
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ea69be27
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getModifiers.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getModifiers.java
new file mode 100644
index 00000000..7650afb3
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getName.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getName.java
new file mode 100644
index 00000000..ed7a0b17
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NoSuchMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getPackage.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getPackage.java
new file mode 100644
index 00000000..153686fc
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..03755d72
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NoSuchMethodError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..47b7d116
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchMethodError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IncompatibleClassChangeError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..559b1441
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NoSuchMethodError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInstance.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInstance.java
new file mode 100644
index 00000000..e011a861
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NoSuchMethodError("NoSuchMethodError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInterface.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInterface.java
new file mode 100644
index 00000000..361f9131
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..806f545d
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..0eb3357a
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..c9398dc4
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..f9886720
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodError("NoSuchMethodError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodError/constructor.java b/gnu/testlet/java/lang/NoSuchMethodError/constructor.java
new file mode 100644
index 00000000..c94b200b
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.NoSuchMethodError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.NoSuchMethodError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NoSuchMethodError error1 = new NoSuchMethodError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.NoSuchMethodError");
+
+ NoSuchMethodError error2 = new NoSuchMethodError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.NoSuchMethodError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries
new file mode 100644
index 00000000..f416f114
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 9 14:15:28 2012//
+/constructor.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries.Log b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/CVS/Repository b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Repository
new file mode 100644
index 00000000..1e3e4c87
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchMethodException
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/CVS/Root b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/TryCatch.java b/gnu/testlet/java/lang/NoSuchMethodException/TryCatch.java
new file mode 100644
index 00000000..3f5537c1
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NoSuchMethodException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NoSuchMethodException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NoSuchMethodException("NoSuchMethodException");
+ }
+ catch (NoSuchMethodException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Entries b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Entries
new file mode 100644
index 00000000..3435ad74
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 9 14:15:28 2012//
+/getInterfaces.java/1.1/Mon Jul 9 14:15:28 2012//
+/getModifiers.java/1.1/Mon Jul 9 14:15:28 2012//
+/getName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getPackage.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSimpleName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSuperclass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isAssignableFrom.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInstance.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInterface.java/1.1/Mon Jul 9 14:15:28 2012//
+/isLocalClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isMemberClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isPrimitive.java/1.1/Mon Jul 9 14:15:28 2012//
+/isSynthetic.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Repository b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Repository
new file mode 100644
index 00000000..687b992b
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NoSuchMethodException/classInfo
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Root b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..60e0b929
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/InstanceOf.java
@@ -0,0 +1,59 @@
+// Test for instanceof operator applied to a class java.lang.NoSuchMethodException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NoSuchMethodException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NoSuchMethodException
+ NoSuchMethodException o = new NoSuchMethodException("NoSuchMethodException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NoSuchMethodException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..be2c7f94
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getModifiers.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getModifiers.java
new file mode 100644
index 00000000..6d46826b
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getName.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getName.java
new file mode 100644
index 00000000..d56606f7
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NoSuchMethodException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getPackage.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getPackage.java
new file mode 100644
index 00000000..1817825a
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ecc28e2f
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NoSuchMethodException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..8b62a872
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NoSuchMethodException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..c5010533
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NoSuchMethodException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInstance.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInstance.java
new file mode 100644
index 00000000..0c600f86
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NoSuchMethodException("NoSuchMethodException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInterface.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInterface.java
new file mode 100644
index 00000000..ac1165f5
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..71e24920
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..f5567d86
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..5ae60bf3
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c2f4f3fb
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NoSuchMethodException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test for method java.lang.NoSuchMethodException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NoSuchMethodException("NoSuchMethodException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NoSuchMethodException/constructor.java b/gnu/testlet/java/lang/NoSuchMethodException/constructor.java
new file mode 100644
index 00000000..52539f85
--- /dev/null
+++ b/gnu/testlet/java/lang/NoSuchMethodException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.NoSuchMethodException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NoSuchMethodException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NoSuchMethodException;
+
+
+
+/**
+ * Test if instances of a class java.lang.NoSuchMethodException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NoSuchMethodException object1 = new NoSuchMethodException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.NoSuchMethodException");
+
+ NoSuchMethodException object2 = new NoSuchMethodException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.NoSuchMethodException: nothing happens");
+
+ NoSuchMethodException object3 = new NoSuchMethodException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.NoSuchMethodException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/CVS/Entries b/gnu/testlet/java/lang/NullPointerException/CVS/Entries
new file mode 100644
index 00000000..f416f114
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 9 14:15:28 2012//
+/constructor.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NullPointerException/CVS/Entries.Log b/gnu/testlet/java/lang/NullPointerException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NullPointerException/CVS/Repository b/gnu/testlet/java/lang/NullPointerException/CVS/Repository
new file mode 100644
index 00000000..e0012f0a
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NullPointerException
diff --git a/gnu/testlet/java/lang/NullPointerException/CVS/Root b/gnu/testlet/java/lang/NullPointerException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NullPointerException/TryCatch.java b/gnu/testlet/java/lang/NullPointerException/TryCatch.java
new file mode 100644
index 00000000..c3837a80
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NullPointerException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NullPointerException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NullPointerException("NullPointerException");
+ }
+ catch (NullPointerException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Entries b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Entries
new file mode 100644
index 00000000..3435ad74
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 9 14:15:28 2012//
+/getInterfaces.java/1.1/Mon Jul 9 14:15:28 2012//
+/getModifiers.java/1.1/Mon Jul 9 14:15:28 2012//
+/getName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getPackage.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSimpleName.java/1.1/Mon Jul 9 14:15:28 2012//
+/getSuperclass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isAssignableFrom.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInstance.java/1.1/Mon Jul 9 14:15:28 2012//
+/isInterface.java/1.1/Mon Jul 9 14:15:28 2012//
+/isLocalClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isMemberClass.java/1.1/Mon Jul 9 14:15:28 2012//
+/isPrimitive.java/1.1/Mon Jul 9 14:15:28 2012//
+/isSynthetic.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Repository b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Repository
new file mode 100644
index 00000000..4e15040f
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NullPointerException/classInfo
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Root b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NullPointerException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..64049ae4
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.NullPointerException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NullPointerException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NullPointerException
+ NullPointerException o = new NullPointerException("NullPointerException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NullPointerException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..209fbe32
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NullPointerException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getModifiers.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getModifiers.java
new file mode 100644
index 00000000..502c9941
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NullPointerException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getName.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getName.java
new file mode 100644
index 00000000..7d5a3f74
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NullPointerException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getPackage.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getPackage.java
new file mode 100644
index 00000000..bdd2808d
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NullPointerException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..c9c70c05
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NullPointerException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NullPointerException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..366f3fbb
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NullPointerException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..cd4da26e
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NullPointerException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isInstance.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isInstance.java
new file mode 100644
index 00000000..173a6d82
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NullPointerException("NullPointerException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isInterface.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isInterface.java
new file mode 100644
index 00000000..60a9e108
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..34791737
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..332253be
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..f1816e54
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NullPointerException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..7ba0ffe6
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NullPointerException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test for method java.lang.NullPointerException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NullPointerException("NullPointerException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NullPointerException/constructor.java b/gnu/testlet/java/lang/NullPointerException/constructor.java
new file mode 100644
index 00000000..cf8189e2
--- /dev/null
+++ b/gnu/testlet/java/lang/NullPointerException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.NullPointerException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NullPointerException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NullPointerException;
+
+
+
+/**
+ * Test if instances of a class java.lang.NullPointerException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NullPointerException object1 = new NullPointerException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.NullPointerException");
+
+ NullPointerException object2 = new NullPointerException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.NullPointerException: nothing happens");
+
+ NullPointerException object3 = new NullPointerException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.NullPointerException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Number/CVS/Entries b/gnu/testlet/java/lang/Number/CVS/Entries
new file mode 100644
index 00000000..bfcf0ce2
--- /dev/null
+++ b/gnu/testlet/java/lang/Number/CVS/Entries
@@ -0,0 +1,3 @@
+/NewNumber.java/1.3/Tue Nov 29 14:06:41 2005//
+/NumberTest.java/1.2/Mon Feb 21 15:52:47 2005//
+D
diff --git a/gnu/testlet/java/lang/Number/CVS/Repository b/gnu/testlet/java/lang/Number/CVS/Repository
new file mode 100644
index 00000000..7a18f3c7
--- /dev/null
+++ b/gnu/testlet/java/lang/Number/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Number
diff --git a/gnu/testlet/java/lang/Number/CVS/Root b/gnu/testlet/java/lang/Number/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Number/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Number/NewNumber.java b/gnu/testlet/java/lang/Number/NewNumber.java
new file mode 100644
index 00000000..c4607c77
--- /dev/null
+++ b/gnu/testlet/java/lang/Number/NewNumber.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+package gnu.testlet.java.lang.Number;
+
+class NewNumber extends Number
+{
+ private int intfld;
+ public NewNumber()
+ {
+ super();
+ }
+ public NewNumber(int i)
+ {
+ intfld = i;
+ }
+ public int intValue()
+ {
+ return intfld;
+ }
+ public float floatValue()
+ {
+ return intfld;
+ }
+ public double doubleValue()
+ {
+ return intfld;
+ }
+ public long longValue()
+ {
+ return intfld;
+ }
+ public byte byteValue()
+ {
+ return super.byteValue();
+ }
+ public short shortValue()
+ {
+ return super.shortValue();
+ }
+}
diff --git a/gnu/testlet/java/lang/Number/NumberTest.java b/gnu/testlet/java/lang/Number/NumberTest.java
new file mode 100644
index 00000000..b7af0354
--- /dev/null
+++ b/gnu/testlet/java/lang/Number/NumberTest.java
@@ -0,0 +1,53 @@
+/* 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: JDK1.0
+// Uses: NewNumber
+
+package gnu.testlet.java.lang.Number;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class NumberTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ NewNumber _newnum = new NewNumber();
+ NewNumber newnum = new NewNumber(300);
+ NewNumber newnum1 = new NewNumber(Integer.MAX_VALUE);
+ if ( newnum.byteValue() != (byte)300)
+ harness.fail( "Error : test_Basics failed -1 ");
+ if ( newnum1.shortValue() != (short)Integer.MAX_VALUE)
+ harness.fail( "Error : test_Basics failed -2 ");
+ }
+ public void testall()
+ {
+ test_Basics();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/CVS/Entries b/gnu/testlet/java/lang/NumberFormatException/CVS/Entries
new file mode 100644
index 00000000..f416f114
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 9 14:15:28 2012//
+/constructor.java/1.1/Mon Jul 9 14:15:28 2012//
+D
diff --git a/gnu/testlet/java/lang/NumberFormatException/CVS/Entries.Log b/gnu/testlet/java/lang/NumberFormatException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/NumberFormatException/CVS/Repository b/gnu/testlet/java/lang/NumberFormatException/CVS/Repository
new file mode 100644
index 00000000..23c51d8c
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NumberFormatException
diff --git a/gnu/testlet/java/lang/NumberFormatException/CVS/Root b/gnu/testlet/java/lang/NumberFormatException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NumberFormatException/TryCatch.java b/gnu/testlet/java/lang/NumberFormatException/TryCatch.java
new file mode 100644
index 00000000..ba256217
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.NumberFormatException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.NumberFormatException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new NumberFormatException("NumberFormatException");
+ }
+ catch (NumberFormatException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Entries b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Entries
new file mode 100644
index 00000000..a6616d15
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 9 14:15:29 2012//
+/getInterfaces.java/1.1/Mon Jul 9 14:15:29 2012//
+/getModifiers.java/1.1/Mon Jul 9 14:15:29 2012//
+/getName.java/1.1/Mon Jul 9 14:15:29 2012//
+/getPackage.java/1.1/Mon Jul 9 14:15:29 2012//
+/getSimpleName.java/1.1/Mon Jul 9 14:15:29 2012//
+/getSuperclass.java/1.1/Mon Jul 9 14:15:29 2012//
+/isAssignableFrom.java/1.1/Mon Jul 9 14:15:29 2012//
+/isInstance.java/1.1/Mon Jul 9 14:15:29 2012//
+/isInterface.java/1.1/Mon Jul 9 14:15:29 2012//
+/isLocalClass.java/1.1/Mon Jul 9 14:15:29 2012//
+/isMemberClass.java/1.1/Mon Jul 9 14:15:29 2012//
+/isPrimitive.java/1.1/Mon Jul 9 14:15:29 2012//
+/isSynthetic.java/1.1/Mon Jul 9 14:15:29 2012//
+D
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Repository b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Repository
new file mode 100644
index 00000000..7976f8c3
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/NumberFormatException/classInfo
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Root b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..55500b1c
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.NumberFormatException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.NumberFormatException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class NumberFormatException
+ NumberFormatException o = new NumberFormatException("NumberFormatException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof NumberFormatException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..82c39f9d
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.NumberFormatException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getModifiers.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getModifiers.java
new file mode 100644
index 00000000..e999b6d1
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.NumberFormatException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getName.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getName.java
new file mode 100644
index 00000000..1b805d14
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.NumberFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getPackage.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getPackage.java
new file mode 100644
index 00000000..9a7d359f
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NumberFormatException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..493438ec
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "NumberFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..259ba09e
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.NumberFormatException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IllegalArgumentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..74675fad
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(NumberFormatException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isInstance.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isInstance.java
new file mode 100644
index 00000000..ad3d3f78
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new NumberFormatException("NumberFormatException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isInterface.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isInterface.java
new file mode 100644
index 00000000..35d6eefc
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..5604e80c
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..c1fac60a
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..e0fb666f
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/NumberFormatException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..168149b4
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.NumberFormatException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test for method java.lang.NumberFormatException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new NumberFormatException("NumberFormatException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/NumberFormatException/constructor.java b/gnu/testlet/java/lang/NumberFormatException/constructor.java
new file mode 100644
index 00000000..527a6ac5
--- /dev/null
+++ b/gnu/testlet/java/lang/NumberFormatException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.lang.NumberFormatException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.NumberFormatException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.NumberFormatException;
+
+
+
+/**
+ * Test if instances of a class java.lang.NumberFormatException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ NumberFormatException object1 = new NumberFormatException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.NumberFormatException");
+
+ NumberFormatException object2 = new NumberFormatException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.NumberFormatException: nothing happens");
+
+ NumberFormatException object3 = new NumberFormatException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.NumberFormatException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/CVS/Entries b/gnu/testlet/java/lang/Object/CVS/Entries
new file mode 100644
index 00000000..feb9c236
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/CVS/Entries
@@ -0,0 +1,6 @@
+/ObjectTest.java/1.2/Mon Feb 21 15:52:48 2005//
+/clone.java/1.4/Mon Feb 21 15:52:48 2005//
+/constructor.java/1.1/Thu Nov 1 10:32:21 2012//
+/oom.java/1.2/Mon Feb 21 15:52:48 2005//
+/wait.java/1.2/Mon Feb 21 15:52:48 2005//
+D
diff --git a/gnu/testlet/java/lang/Object/CVS/Entries.Log b/gnu/testlet/java/lang/Object/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Object/CVS/Repository b/gnu/testlet/java/lang/Object/CVS/Repository
new file mode 100644
index 00000000..24b9b153
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Object
diff --git a/gnu/testlet/java/lang/Object/CVS/Root b/gnu/testlet/java/lang/Object/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Object/ObjectTest.java b/gnu/testlet/java/lang/Object/ObjectTest.java
new file mode 100644
index 00000000..f70c1473
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/ObjectTest.java
@@ -0,0 +1,141 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Object;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ObjectTest implements Testlet
+{
+ boolean finFlag = false;
+
+ protected static TestHarness harness;
+ public void test_getClass()
+ {
+ Integer i = new Integer(10);
+ Class cls = i.getClass();
+ if ( cls == null )
+ harness.fail("Error: test_getClass returned null");
+
+ ObjectTest obj = new ObjectTest();
+ if ( obj.getClass() != getClass())
+ harness.fail("Error: test_getClass returned wrong class");
+
+ }
+
+ public void test_toString()
+ {
+ if ( toString() == null )
+ harness.fail("Error: test_toString returned null string");
+ if ( !toString().equals(getClass().getName()+"@"+
+ Integer.toHexString(hashCode())))
+ harness.fail("Error: test_toString returned wrong string");
+
+ }
+
+ public void test_equals()
+ {
+ Object nu = this;
+
+ // reflexive
+ if ( this != nu )
+ harness.fail("Error: test_equals returned wrong results - 1");
+ if ( !this.equals( nu ))
+ harness.fail("Error: test_equals returned wrong results - 2");
+
+ if ( !nu.equals( nu ))
+ harness.fail("Error: test_equals returned wrong results - 3");
+
+
+ // symmetric
+ Object nu1 = nu;
+
+ if ( ! ( nu.equals(nu1) && nu1.equals(nu)))
+ harness.fail("Error: test_equals returned wrong results - 4");
+
+ // transitive
+ if ( ! ( nu.equals(nu1) && nu1.equals(this) && equals(nu)))
+ harness.fail("Error: test_equals returned wrong results - 5");
+
+ Object p = null;
+ if ( equals( p ))
+ harness.fail("Error: test_equals returned wrong results - 6");
+ }
+
+ public void test_hashCode()
+ {
+ Object s = this;
+ if ( s.hashCode() != hashCode() )
+ harness.fail("Error: test_hashCode returned wrong results - 1");
+
+ int hash = s.hashCode();
+
+ if ( hash != s.hashCode())
+ harness.fail("Error: test_hashCode returned wrong results - 2");
+ }
+
+
+ public void test_clone()
+ {
+ try {
+ clone();
+ harness.fail("Error: test_clone did not raise CloneNotSupportedException");
+ }
+ catch ( CloneNotSupportedException e ){}
+
+ java.util.Vector v = new java.util.Vector();
+ java.util.Vector vclone;
+ try {
+ vclone = (java.util.Vector)v.clone();
+ }
+ catch ( Exception e ){
+ if (e instanceof CloneNotSupportedException) {
+ harness.fail("Error: test_clone should not raise CloneNotSupportedException"+
+ " on Vector " );
+ } else {
+ harness.fail("Error: test_clone should not raise Exception "+
+ e + " on Vector " );
+ }
+ }
+
+ /* if (!(( vclone != v ) && ( vclone.getClass() == v.getClass()) &&
+ (vclone.equals( v) )))
+ harness.fail("Error: test_clone did not return proper values");
+ */
+ }
+
+ public void testall()
+ {
+ test_getClass();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_clone();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Object/classInfo/CVS/Entries b/gnu/testlet/java/lang/Object/classInfo/CVS/Entries
new file mode 100644
index 00000000..1368fadf
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Tue Nov 13 10:27:20 2012//
+/getConstructors.java/1.3/Tue Nov 13 10:27:20 2012//
+/getDeclaredConstructors.java/1.3/Tue Nov 13 10:27:20 2012//
+/getDeclaredFields.java/1.2/Mon Nov 12 10:50:18 2012//
+/getDeclaredMethods.java/1.3/Tue Nov 13 10:27:20 2012//
+/getFields.java/1.2/Mon Nov 12 10:50:18 2012//
+/getInterfaces.java/1.2/Tue Nov 13 10:27:20 2012//
+/getMethods.java/1.3/Tue Nov 13 10:27:20 2012//
+/getModifiers.java/1.2/Tue Nov 13 10:27:21 2012//
+/getName.java/1.2/Tue Nov 13 10:27:21 2012//
+/getPackage.java/1.2/Tue Nov 13 10:27:21 2012//
+/getSimpleName.java/1.2/Tue Nov 13 10:27:21 2012//
+/getSuperclass.java/1.2/Tue Nov 13 10:27:21 2012//
+/isAnnotation.java/1.2/Tue Nov 13 10:27:21 2012//
+/isAnnotationPresent.java/1.2/Tue Nov 13 10:27:21 2012//
+/isAnonymousClass.java/1.2/Tue Nov 13 10:27:21 2012//
+/isArray.java/1.2/Tue Nov 13 10:27:21 2012//
+/isAssignableFrom.java/1.2/Tue Nov 13 10:27:21 2012//
+/isEnum.java/1.2/Tue Nov 13 10:27:21 2012//
+/isInstance.java/1.2/Tue Nov 13 10:27:21 2012//
+/isInterface.java/1.2/Tue Nov 13 10:27:21 2012//
+/isLocalClass.java/1.2/Tue Nov 13 10:27:21 2012//
+/isMemberClass.java/1.2/Tue Nov 13 10:27:21 2012//
+/isPrimitive.java/1.2/Tue Nov 13 10:27:21 2012//
+/isSynthetic.java/1.2/Tue Nov 13 10:27:21 2012//
+D
diff --git a/gnu/testlet/java/lang/Object/classInfo/CVS/Repository b/gnu/testlet/java/lang/Object/classInfo/CVS/Repository
new file mode 100644
index 00000000..0a33a47f
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Object/classInfo
diff --git a/gnu/testlet/java/lang/Object/classInfo/CVS/Root b/gnu/testlet/java/lang/Object/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Object/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Object/classInfo/InstanceOf.java
new file mode 100644
index 00000000..82fae6fa
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.Object
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Object
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ Object o = new Object();
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Object);
+
+ // check operator instanceof against all superclasses
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getConstructors.java b/gnu/testlet/java/lang/Object/classInfo/getConstructors.java
new file mode 100644
index 00000000..411d26b0
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.Object.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.Object()", "java.lang.Object");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.Object()", "java.lang.Object");
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..4801d914
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.Object.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.Object()", "java.lang.Object");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.Object()", "java.lang.Object");
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..4777c23a
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getDeclaredFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.Object.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..99dfdf1b
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getDeclaredMethods.java
@@ -0,0 +1,126 @@
+// Test for method java.lang.Object.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("protected void java.lang.Object.finalize() throws java.lang.Throwable", "finalize");
+ testedDeclaredMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedDeclaredMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedDeclaredMethods_jdk6.put("protected java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException", "clone");
+ testedDeclaredMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedDeclaredMethods_jdk6.put("private static void java.lang.Object.registerNatives()", "registerNatives");
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.lang.Object.toString()", "toString");
+ testedDeclaredMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedDeclaredMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("protected void java.lang.Object.finalize() throws java.lang.Throwable", "finalize");
+ testedDeclaredMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedDeclaredMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.lang.Object.toString()", "toString");
+ testedDeclaredMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedDeclaredMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedDeclaredMethods_jdk7.put("protected java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException", "clone");
+ testedDeclaredMethods_jdk7.put("private static void java.lang.Object.registerNatives()", "registerNatives");
+ testedDeclaredMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedDeclaredMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getFields.java b/gnu/testlet/java/lang/Object/classInfo/getFields.java
new file mode 100644
index 00000000..439aa9f0
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.Object.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Object/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b13bbf9c
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.Object.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getMethods.java b/gnu/testlet/java/lang/Object/classInfo/getMethods.java
new file mode 100644
index 00000000..244f934a
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getMethods.java
@@ -0,0 +1,120 @@
+// Test for method java.lang.Object.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Object.toString()", "toString");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Object.toString()", "toString");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getModifiers.java b/gnu/testlet/java/lang/Object/classInfo/getModifiers.java
new file mode 100644
index 00000000..e7b4430f
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.Object.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getName.java b/gnu/testlet/java/lang/Object/classInfo/getName.java
new file mode 100644
index 00000000..cdc1c780
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getPackage.java b/gnu/testlet/java/lang/Object/classInfo/getPackage.java
new file mode 100644
index 00000000..f1108092
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Object.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Object/classInfo/getSimpleName.java
new file mode 100644
index 00000000..a24ee57d
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Object/classInfo/getSuperclass.java
new file mode 100644
index 00000000..38362ef8
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/getSuperclass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Object/classInfo/isAnnotation.java
new file mode 100644
index 00000000..ff7896ee
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..b268a850
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.Object.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..1f2edee2
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isArray.java b/gnu/testlet/java/lang/Object/classInfo/isArray.java
new file mode 100644
index 00000000..e76f583f
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..8fbeccc7
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Object.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isEnum.java b/gnu/testlet/java/lang/Object/classInfo/isEnum.java
new file mode 100644
index 00000000..831fb3a2
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isInstance.java b/gnu/testlet/java/lang/Object/classInfo/isInstance.java
new file mode 100644
index 00000000..a6f8f98d
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new Object()));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isInterface.java b/gnu/testlet/java/lang/Object/classInfo/isInterface.java
new file mode 100644
index 00000000..80618fa6
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Object/classInfo/isLocalClass.java
new file mode 100644
index 00000000..64169355
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Object/classInfo/isMemberClass.java
new file mode 100644
index 00000000..0d6726ea
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Object/classInfo/isPrimitive.java
new file mode 100644
index 00000000..f9f381f5
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Object/classInfo/isSynthetic.java
new file mode 100644
index 00000000..8bddd893
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.Object.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.Object.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test for method java.lang.Object.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Object
+ final Object o = new Object();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/clone.java b/gnu/testlet/java/lang/Object/clone.java
new file mode 100644
index 00000000..697ea654
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/clone.java
@@ -0,0 +1,89 @@
+/* Copyright (C) 2001 Eric Blake
+
+ 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: JDK1.0
+
+package gnu.testlet.java.lang.Object;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * This class tests that the default Object.clone does not invoke a
+ * constructor, and that it creates a new object of the same class.
+ * Classes that override clone(), however, are permitted to change this
+ * behavior.
+ *
+ * This class also tests that array.clone behaves correctly.
+ */
+public final class clone implements Testlet, Cloneable
+{
+ private static int count = 0;
+ private int prim = 42;
+ private Object obj = this;
+ private Testlet test = this;
+ private float[] array = {};
+
+ public clone()
+ {
+ count++;
+ }
+
+ public void test (TestHarness harness)
+ {
+ int my_count = count;
+ clone copy = null;
+ try
+ {
+ copy = (clone) clone();
+ }
+ catch (CloneNotSupportedException cnse)
+ {
+ harness.fail("clone should pass on Cloneable object");
+ }
+ harness.check(copy != this, "clone built distinct object");
+ harness.check(copy instanceof clone, "clone built same class - 1");
+ harness.check(copy.getClass() == clone.class, "clone built same class - 2");
+ harness.check(count == my_count, "clone called no constructor");
+ harness.check(copy.prim == 42, "primitive field cloned correctly");
+ harness.check(copy.obj == this, "object field cloned correctly");
+ harness.check(copy.test == this, "interface field cloned correctly");
+ harness.check(copy.array == array, "array field cloned correctly");
+
+ int[] iarray = { 1, 2 };
+ int[] icopy = (int[]) iarray.clone();
+ Object[] oarray = { new Object() };
+ Object[] ocopy = (Object[]) oarray.clone();
+
+ harness.check(iarray != icopy, "cloned arrays are distinct - 1");
+ harness.check(oarray != ocopy, "cloned arrays are distinct - 2");
+ harness.check(iarray.length == icopy.length, "cloned arrays have same length - 1");
+ harness.check(oarray.length == ocopy.length, "cloned arrays have same length - 2");
+
+ harness.check(iarray.getClass() == icopy.getClass(), "cloned arrays have same type - 1");
+ harness.check(oarray.getClass() == ocopy.getClass(), "cloned arrays have same type - 2");
+
+ harness.check(iarray.getClass().getComponentType() == icopy.getClass().getComponentType(), "cloned arrays have same component type - 1");
+ harness.check(oarray.getClass().getComponentType() == ocopy.getClass().getComponentType(), "cloned arrays have same component type - 2");
+
+ harness.check(iarray[0] == icopy[0], "cloned contents are same - 1");
+ harness.check(iarray[1] == icopy[1], "cloned contents are same - 2");
+ harness.check(oarray[0] == ocopy[0], "cloned contents are same - 3");
+ }
+}
diff --git a/gnu/testlet/java/lang/Object/constructor.java b/gnu/testlet/java/lang/Object/constructor.java
new file mode 100644
index 00000000..39d4e65a
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.lang.Object could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4 -target 1.4
+
+package gnu.testlet.java.lang.Object;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Object;
+
+
+
+/**
+ * Test if instances of a class java.lang.Object
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Object object1 = new Object();
+ harness.check(object1 != null);
+ harness.check(object1.toString().startsWith("java.lang.Object"));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Object/oom.java b/gnu/testlet/java/lang/Object/oom.java
new file mode 100644
index 00000000..056d0cc0
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/oom.java
@@ -0,0 +1,67 @@
+/* Copyright (C) 2001 Eric Blake
+
+ 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: JDK1.0
+
+package gnu.testlet.java.lang.Object;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * This class tests OutOfMemoryError condition.
+ */
+public final class oom implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // This test sees if clone can cause an out of memory error.
+ // The testlet should be able to recover, though!
+ Object[] oarray = new Object[5];
+ int[] iarray = null;
+ try
+ {
+ int size = 1024;
+ while (true)
+ {
+ size <<= 1;
+ iarray = new int[size];
+ }
+ }
+ catch (OutOfMemoryError oome)
+ {
+ // we should still have memory left, since the last allocation
+ // attempt failed; but multiple clones should push us over
+ try
+ {
+ oarray[0] = iarray.clone();
+ oarray[1] = iarray.clone();
+ oarray[2] = iarray.clone();
+ oarray[3] = iarray.clone();
+ oarray[4] = iarray.clone();
+ harness.fail("clone didn't cause expected OutOfMemoryError");
+ }
+ catch (OutOfMemoryError e)
+ {
+ harness.check(true, "clone can exceed memory");
+ }
+ oarray = null; // help free memory
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Object/wait.java b/gnu/testlet/java/lang/Object/wait.java
new file mode 100644
index 00000000..b791dcb9
--- /dev/null
+++ b/gnu/testlet/java/lang/Object/wait.java
@@ -0,0 +1,147 @@
+/* Copyright (C) 2001 Eric Blake
+
+ 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: JDK1.0
+
+package gnu.testlet.java.lang.Object;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * This class tests the trivial exceptions possible with wait, but
+ * it does NOT test for InterruptedException, which is only possible
+ * with threaded programming.
+ */
+public final class wait implements Testlet {
+ public void test (TestHarness harness)
+ {
+ // wait must have reasonable args
+ try
+ {
+ wait(-1);
+ harness.fail("bad arg not detected");
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, "bad arg detected");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.fail("bad arg not detected");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("bad arg not detected");
+ }
+ try
+ {
+ wait(0, -1);
+ harness.fail("bad arg not detected");
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, "bad arg detected");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.fail("bad arg not detected");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("bad arg not detected");
+ }
+ try
+ {
+ wait(0, 1000000);
+ harness.fail("bad arg not detected");
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, "bad arg detected");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.fail("bad arg not detected");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("bad arg not detected");
+ }
+
+ // wait and notify must be called in synchronized code
+ try
+ {
+ wait();
+ harness.fail("wait called outside synchronized block");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.check(true, "wait called outside synchronized block");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("wait called outside synchronized block");
+ }
+ try
+ {
+ wait(1);
+ harness.fail("wait called outside synchronized block");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.check(true, "wait called outside synchronized block");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("wait called outside synchronized block");
+ }
+ try
+ {
+ wait(1, 0);
+ harness.fail("wait called outside synchronized block");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.check(true, "wait called outside synchronized block");
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("wait called outside synchronized block");
+ }
+ try
+ {
+ notify();
+ harness.fail("notify called outside synchronized block");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.check(true, "notify called outside synchronized block");
+ }
+ try
+ {
+ notifyAll();
+ harness.fail("notifyAll called outside synchronized block");
+ }
+ catch (IllegalMonitorStateException imse)
+ {
+ harness.check(true, "notifyAll called outside synchronized block");
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries
new file mode 100644
index 00000000..344bf79b
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue May 15 10:34:00 2012//
+/constructor.java/1.1/Fri Jun 15 15:25:31 2012//
+D
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries.Log b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/CVS/Repository b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Repository
new file mode 100644
index 00000000..122e9b7c
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/OutOfMemoryError
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/CVS/Root b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/TryCatch.java b/gnu/testlet/java/lang/OutOfMemoryError/TryCatch.java
new file mode 100644
index 00000000..4ef4b513
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.lang.OutOfMemoryError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.OutOfMemoryError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new OutOfMemoryError("OutOfMemoryError");
+ }
+ catch (OutOfMemoryError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Entries b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Entries
new file mode 100644
index 00000000..eb8b2f45
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 31 16:02:55 2012//
+/getInterfaces.java/1.1/Thu May 31 16:02:55 2012//
+/getModifiers.java/1.1/Thu May 31 16:02:55 2012//
+/getName.java/1.1/Thu May 31 16:02:55 2012//
+/getPackage.java/1.1/Thu May 31 16:02:55 2012//
+/getSimpleName.java/1.1/Thu May 31 16:02:55 2012//
+/getSuperclass.java/1.1/Thu May 31 16:02:55 2012//
+/isAssignableFrom.java/1.1/Thu May 31 16:02:55 2012//
+/isInstance.java/1.1/Thu May 31 16:02:55 2012//
+/isInterface.java/1.1/Thu May 31 16:02:55 2012//
+/isLocalClass.java/1.1/Thu May 31 16:02:55 2012//
+/isMemberClass.java/1.1/Thu May 31 16:02:55 2012//
+/isPrimitive.java/1.1/Thu May 31 16:02:55 2012//
+/isSynthetic.java/1.1/Thu May 31 16:02:55 2012//
+D
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Repository b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Repository
new file mode 100644
index 00000000..a42e9b83
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/OutOfMemoryError/classInfo
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Root b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..be0b1792
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.OutOfMemoryError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+import java.lang.VirtualMachineError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.OutOfMemoryError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class OutOfMemoryError
+ OutOfMemoryError o = new OutOfMemoryError("OutOfMemoryError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof OutOfMemoryError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof VirtualMachineError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b27477fb
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getModifiers.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getModifiers.java
new file mode 100644
index 00000000..4f21914f
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getName.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getName.java
new file mode 100644
index 00000000..f09cb495
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.OutOfMemoryError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getPackage.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getPackage.java
new file mode 100644
index 00000000..5816fc06
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ccd328aa
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "OutOfMemoryError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..1a2a0f57
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.OutOfMemoryError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.VirtualMachineError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..d061b524
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(OutOfMemoryError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInstance.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInstance.java
new file mode 100644
index 00000000..e9a7c313
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new OutOfMemoryError("OutOfMemoryError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInterface.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInterface.java
new file mode 100644
index 00000000..9998a9e2
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..759bb707
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..f4913e27
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..dcae4157
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..1d4370f8
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.OutOfMemoryError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test for method java.lang.OutOfMemoryError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new OutOfMemoryError("OutOfMemoryError");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/OutOfMemoryError/constructor.java b/gnu/testlet/java/lang/OutOfMemoryError/constructor.java
new file mode 100644
index 00000000..02e65ae1
--- /dev/null
+++ b/gnu/testlet/java/lang/OutOfMemoryError/constructor.java
@@ -0,0 +1,53 @@
+// Test if constructor is working properly for a class java.lang.OutOfMemoryError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.OutOfMemoryError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.OutOfMemoryError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.OutOfMemoryError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ OutOfMemoryError error1 = new OutOfMemoryError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.OutOfMemoryError");
+
+ OutOfMemoryError error2 = new OutOfMemoryError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.OutOfMemoryError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/CVS/Entries b/gnu/testlet/java/lang/Package/CVS/Entries
new file mode 100644
index 00000000..50bf289e
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/CVS/Entries
@@ -0,0 +1,2 @@
+/getPackage.java/1.2/Sat Jan 8 22:50:46 2005//
+D
diff --git a/gnu/testlet/java/lang/Package/CVS/Entries.Log b/gnu/testlet/java/lang/Package/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Package/CVS/Repository b/gnu/testlet/java/lang/Package/CVS/Repository
new file mode 100644
index 00000000..424f9f4e
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Package
diff --git a/gnu/testlet/java/lang/Package/CVS/Root b/gnu/testlet/java/lang/Package/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Package/classInfo/CVS/Entries b/gnu/testlet/java/lang/Package/classInfo/CVS/Entries
new file mode 100644
index 00000000..f7960c84
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue May 22 13:15:36 2012//
+/getInterfaces.java/1.1/Tue May 22 13:15:36 2012//
+/getModifiers.java/1.1/Tue May 22 13:15:36 2012//
+/getName.java/1.1/Tue May 22 13:15:36 2012//
+/getPackage.java/1.1/Tue May 22 13:15:36 2012//
+/getSimpleName.java/1.1/Tue May 22 13:15:36 2012//
+/getSuperclass.java/1.1/Tue May 22 13:15:36 2012//
+/isAssignableFrom.java/1.1/Tue May 22 13:15:36 2012//
+/isInstance.java/1.1/Tue May 22 13:15:36 2012//
+/isInterface.java/1.1/Tue May 22 13:15:36 2012//
+/isLocalClass.java/1.1/Tue May 22 13:15:36 2012//
+/isMemberClass.java/1.1/Tue May 22 13:15:36 2012//
+/isPrimitive.java/1.1/Tue May 22 13:15:36 2012//
+/isSynthetic.java/1.1/Tue May 22 13:15:36 2012//
+D
diff --git a/gnu/testlet/java/lang/Package/classInfo/CVS/Repository b/gnu/testlet/java/lang/Package/classInfo/CVS/Repository
new file mode 100644
index 00000000..b6c8778e
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Package/classInfo
diff --git a/gnu/testlet/java/lang/Package/classInfo/CVS/Root b/gnu/testlet/java/lang/Package/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Package/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Package/classInfo/InstanceOf.java
new file mode 100644
index 00000000..f213880e
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.Package
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Package
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Package
+ Package o = Package.getPackage("java.lang");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Package);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Package/classInfo/getInterfaces.java
new file mode 100644
index 00000000..3e51730b
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.Package.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+import java.lang.reflect.AnnotatedElement;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(AnnotatedElement.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getModifiers.java b/gnu/testlet/java/lang/Package/classInfo/getModifiers.java
new file mode 100644
index 00000000..8dec1f72
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Package.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getName.java b/gnu/testlet/java/lang/Package/classInfo/getName.java
new file mode 100644
index 00000000..0df6e53a
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Package");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getPackage.java b/gnu/testlet/java/lang/Package/classInfo/getPackage.java
new file mode 100644
index 00000000..ee94f77d
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Package.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Package/classInfo/getSimpleName.java
new file mode 100644
index 00000000..35cba035
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Package");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Package/classInfo/getSuperclass.java
new file mode 100644
index 00000000..81c8df6d
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Package.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Package/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..7e181fa9
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Package.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isInstance.java b/gnu/testlet/java/lang/Package/classInfo/isInstance.java
new file mode 100644
index 00000000..c2cd65ae
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(Package.getPackage("java.lang")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isInterface.java b/gnu/testlet/java/lang/Package/classInfo/isInterface.java
new file mode 100644
index 00000000..f37ef3f1
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Package/classInfo/isLocalClass.java
new file mode 100644
index 00000000..e0ffca16
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Package/classInfo/isMemberClass.java
new file mode 100644
index 00000000..1cea5cd8
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Package/classInfo/isPrimitive.java
new file mode 100644
index 00000000..7da172ae
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Package/classInfo/isSynthetic.java
new file mode 100644
index 00000000..47a3ea02
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Package.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Package.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Package;
+
+
+
+/**
+ * Test for method java.lang.Package.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = Package.getPackage("java.lang");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Package/getPackage.java b/gnu/testlet/java/lang/Package/getPackage.java
new file mode 100644
index 00000000..bb90c1b6
--- /dev/null
+++ b/gnu/testlet/java/lang/Package/getPackage.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Package;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getPackage implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String name = "gnu.testlet.java.lang.Package";
+ Package p = Package.getPackage(name);
+ if (p != null)
+ harness.check(name, p.getName());
+ else
+ harness.debug("getPackage() returned null");
+
+ p = Package.getPackage("java.lang");
+ harness.check(p != null, "checking package for 'java.lang'");
+ }
+}
diff --git a/gnu/testlet/java/lang/Process/CVS/Entries b/gnu/testlet/java/lang/Process/CVS/Entries
new file mode 100644
index 00000000..39971494
--- /dev/null
+++ b/gnu/testlet/java/lang/Process/CVS/Entries
@@ -0,0 +1,3 @@
+/destroy.java/1.1/Wed Jul 30 11:24:40 2008//
+/destroy_child.java/1.1/Wed Jul 30 11:24:40 2008//
+D
diff --git a/gnu/testlet/java/lang/Process/CVS/Repository b/gnu/testlet/java/lang/Process/CVS/Repository
new file mode 100644
index 00000000..9659e97e
--- /dev/null
+++ b/gnu/testlet/java/lang/Process/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Process
diff --git a/gnu/testlet/java/lang/Process/CVS/Root b/gnu/testlet/java/lang/Process/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Process/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Process/destroy.java b/gnu/testlet/java/lang/Process/destroy.java
new file mode 100644
index 00000000..6feda535
--- /dev/null
+++ b/gnu/testlet/java/lang/Process/destroy.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.0
+// Depends: destroy_child
+
+// Copyright (C) 2008 Christian Thalinger
+
+// 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.java.lang.Process;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+
+public class destroy implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ Process p = Runtime.getRuntime().exec(harness.getTestJava() + " gnu.testlet.java.lang.Process.destroy_child");
+ BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+
+ String line = in.readLine();
+
+ // Wait until the child process is up and running.
+ if (line.equals("UP"))
+ {
+ harness.check(true);
+ // Now destroy it.
+ p.destroy();
+ }
+ else
+ harness.check(false);
+
+ // Wait until the child Process is going down.
+ try
+ {
+ p.waitFor();
+ harness.check(true);
+ }
+ catch (InterruptedException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+ catch (IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Process/destroy_child.java b/gnu/testlet/java/lang/Process/destroy_child.java
new file mode 100644
index 00000000..e8c3aef8
--- /dev/null
+++ b/gnu/testlet/java/lang/Process/destroy_child.java
@@ -0,0 +1,47 @@
+// Tags: not-a-test
+
+// Copyright (C) 2008 Christian Thalinger
+
+// 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.java.lang.Process;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class destroy_child {
+ public static void main(String[] args)
+ {
+ try
+ {
+ // Tell the parent process we are up and running.
+ System.out.println("UP");
+
+ // Don't exit.
+ while (true)
+ {
+ Thread.sleep(1000);
+ }
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/ProcessBuilder/CVS/Entries b/gnu/testlet/java/lang/ProcessBuilder/CVS/Entries
new file mode 100644
index 00000000..6222280b
--- /dev/null
+++ b/gnu/testlet/java/lang/ProcessBuilder/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.1/Mon Feb 5 20:57:41 2007//
+D
diff --git a/gnu/testlet/java/lang/ProcessBuilder/CVS/Repository b/gnu/testlet/java/lang/ProcessBuilder/CVS/Repository
new file mode 100644
index 00000000..3db023e6
--- /dev/null
+++ b/gnu/testlet/java/lang/ProcessBuilder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ProcessBuilder
diff --git a/gnu/testlet/java/lang/ProcessBuilder/CVS/Root b/gnu/testlet/java/lang/ProcessBuilder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ProcessBuilder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ProcessBuilder/simple.java b/gnu/testlet/java/lang/ProcessBuilder/simple.java
new file mode 100644
index 00000000..b4faaf00
--- /dev/null
+++ b/gnu/testlet/java/lang/ProcessBuilder/simple.java
@@ -0,0 +1,45 @@
+// Copyright (C) 2007 Red Hat, Inc.
+
+// Tags: JDK1.5
+
+// 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.java.lang.ProcessBuilder;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.IOException;
+
+public class simple implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ ProcessBuilder p1 = new ProcessBuilder("ls", "/nosuchdirectory");
+ p1.redirectErrorStream(true);
+ Process p = p1.start();
+ byte[] buffer = new byte[1024];
+ harness.check(p.getInputStream().read(buffer) != -1);
+ }
+ catch (IOException _)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Runtime/CVS/Entries b/gnu/testlet/java/lang/Runtime/CVS/Entries
new file mode 100644
index 00000000..66d6a070
--- /dev/null
+++ b/gnu/testlet/java/lang/Runtime/CVS/Entries
@@ -0,0 +1,2 @@
+/security.java/1.7/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/lang/Runtime/CVS/Repository b/gnu/testlet/java/lang/Runtime/CVS/Repository
new file mode 100644
index 00000000..eb2be089
--- /dev/null
+++ b/gnu/testlet/java/lang/Runtime/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Runtime
diff --git a/gnu/testlet/java/lang/Runtime/CVS/Root b/gnu/testlet/java/lang/Runtime/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Runtime/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Runtime/security.java b/gnu/testlet/java/lang/Runtime/security.java
new file mode 100644
index 00000000..e21a55d4
--- /dev/null
+++ b/gnu/testlet/java/lang/Runtime/security.java
@@ -0,0 +1,234 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.Runtime;
+
+import java.io.File;
+import java.io.FilePermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ Runtime runtime = Runtime.getRuntime();
+
+ String sCommand = "/bin/true";
+ harness.check(new File(sCommand).isFile());
+ String[] aCommand = new String[] {sCommand};
+
+ Thread thread = new Thread();
+
+ String library_name = "blah";
+ String library_path = "/path/to/libnothing.so";
+
+ Permission[] executeCommand = new Permission[] {
+ new FilePermission(sCommand, "execute")};
+ Permission[] modifyThreadOrGroup = new Permission[] {
+ new RuntimePermission("modifyThread"),
+ new RuntimePermission("modifyThreadGroup")};
+
+ Permission[] exitVM = new Permission[] {
+ new RuntimePermission("exitVM")};
+
+ Permission[] shutdownHooks = new Permission[] {
+ new RuntimePermission("shutdownHooks")};
+
+ Permission[] loadLibrary_name = new Permission[] {
+ new RuntimePermission("loadLibrary." + library_name)};
+ Permission[] loadLibrary_path = new Permission[] {
+ new RuntimePermission("loadLibrary." + library_path)};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.Runtime-exec(String)
+ harness.checkPoint("exec(String)");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(sCommand).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exec(String, String[])
+ harness.checkPoint("exec(String, String[])");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(sCommand, null).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exec(String, String[], File)
+ harness.checkPoint("exec(String, String[], File)");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(sCommand, null, null).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exec(String[])
+ harness.checkPoint("exec(String[])");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(aCommand).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exec(String[], String[])
+ harness.checkPoint("exec(String[], String[])");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(aCommand, null).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exec(String[], String[], File)
+ harness.checkPoint("exec(String[], String[], File)");
+ try {
+ sm.prepareChecks(executeCommand, modifyThreadOrGroup);
+ runtime.exec(aCommand, null, null).waitFor();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-exit
+ harness.checkPoint("exit");
+ try {
+ sm.prepareHaltingChecks(exitVM);
+ runtime.exit(0);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-runFinalizersOnExit
+ harness.checkPoint("runFinalizersOnExit");
+ try {
+ sm.prepareChecks(exitVM);
+ Runtime.runFinalizersOnExit(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-addShutdownHook
+ harness.checkPoint("addShutdownHook");
+ try {
+ sm.prepareChecks(shutdownHooks);
+ runtime.addShutdownHook(thread);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-removeShutdownHook
+ harness.checkPoint("removeShutdownHook");
+ try {
+ sm.prepareChecks(shutdownHooks);
+ runtime.removeShutdownHook(thread);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-load
+ harness.checkPoint("load");
+ try {
+ sm.prepareHaltingChecks(loadLibrary_name);
+ runtime.load(library_name);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Runtime-loadLibrary
+ harness.checkPoint("loadLibrary");
+ try {
+ sm.prepareHaltingChecks(loadLibrary_path);
+ runtime.loadLibrary(library_path);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/RuntimeException/CVS/Entries b/gnu/testlet/java/lang/RuntimeException/CVS/Entries
new file mode 100644
index 00000000..ee9549bc
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Tue Dec 11 08:46:55 2012//
+/constructor.java/1.2/Tue Dec 11 08:46:55 2012//
+D
diff --git a/gnu/testlet/java/lang/RuntimeException/CVS/Entries.Log b/gnu/testlet/java/lang/RuntimeException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/RuntimeException/CVS/Repository b/gnu/testlet/java/lang/RuntimeException/CVS/Repository
new file mode 100644
index 00000000..92a0fb2c
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/RuntimeException
diff --git a/gnu/testlet/java/lang/RuntimeException/CVS/Root b/gnu/testlet/java/lang/RuntimeException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/RuntimeException/TryCatch.java b/gnu/testlet/java/lang/RuntimeException/TryCatch.java
new file mode 100644
index 00000000..28dbeabb
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.RuntimeException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.RuntimeException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new RuntimeException("RuntimeException");
+ }
+ catch (RuntimeException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Entries b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Entries
new file mode 100644
index 00000000..20118863
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Tue Dec 11 08:46:55 2012//
+/getConstructors.java/1.1/Tue Dec 11 08:46:55 2012//
+/getDeclaredConstructors.java/1.1/Tue Dec 11 08:46:55 2012//
+/getDeclaredFields.java/1.1/Tue Dec 11 08:46:55 2012//
+/getDeclaredMethods.java/1.1/Tue Dec 11 08:46:55 2012//
+/getFields.java/1.1/Tue Dec 11 08:46:55 2012//
+/getInterfaces.java/1.2/Tue Dec 11 08:46:55 2012//
+/getMethods.java/1.1/Tue Dec 11 08:46:55 2012//
+/getModifiers.java/1.2/Tue Dec 11 08:46:55 2012//
+/getName.java/1.2/Tue Dec 11 08:46:55 2012//
+/getPackage.java/1.2/Tue Dec 11 08:46:55 2012//
+/getSimpleName.java/1.2/Tue Dec 11 08:46:55 2012//
+/getSuperclass.java/1.2/Tue Dec 11 08:46:55 2012//
+/isAnnotation.java/1.1/Tue Dec 11 08:46:55 2012//
+/isAnnotationPresent.java/1.1/Tue Dec 11 08:46:55 2012//
+/isAnonymousClass.java/1.1/Tue Dec 11 08:46:55 2012//
+/isArray.java/1.1/Tue Dec 11 08:46:55 2012//
+/isAssignableFrom.java/1.2/Tue Dec 11 08:46:55 2012//
+/isEnum.java/1.1/Tue Dec 11 08:46:55 2012//
+/isInstance.java/1.2/Tue Dec 11 08:46:55 2012//
+/isInterface.java/1.2/Tue Dec 11 08:46:55 2012//
+/isLocalClass.java/1.2/Tue Dec 11 08:46:55 2012//
+/isMemberClass.java/1.2/Tue Dec 11 08:46:55 2012//
+/isPrimitive.java/1.2/Tue Dec 11 08:46:55 2012//
+/isSynthetic.java/1.2/Tue Dec 11 08:46:55 2012//
+D
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Repository b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Repository
new file mode 100644
index 00000000..8cfe1215
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/RuntimeException/classInfo
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Root b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..61cf1da5
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.RuntimeException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.RuntimeException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ RuntimeException o = new RuntimeException("java.lang.RuntimeException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof RuntimeException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getConstructors.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getConstructors.java
new file mode 100644
index 00000000..e0cf5a05
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getConstructors.java
@@ -0,0 +1,110 @@
+// Test for method java.lang.RuntimeException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.RuntimeException()", "java.lang.RuntimeException");
+ testedConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.String)", "java.lang.RuntimeException");
+ testedConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.String,java.lang.Throwable)", "java.lang.RuntimeException");
+ testedConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.Throwable)", "java.lang.RuntimeException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.Throwable)", "java.lang.RuntimeException");
+ testedConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.String,java.lang.Throwable)", "java.lang.RuntimeException");
+ testedConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.String)", "java.lang.RuntimeException");
+ testedConstructors_jdk7.put("public java.lang.RuntimeException()", "java.lang.RuntimeException");
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..77ceb0f4
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,111 @@
+// Test for method java.lang.RuntimeException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.RuntimeException()", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.String)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.String,java.lang.Throwable)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.RuntimeException(java.lang.Throwable)", "java.lang.RuntimeException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("protected java.lang.RuntimeException(java.lang.String,java.lang.Throwable,boolean,boolean)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.Throwable)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.String,java.lang.Throwable)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.RuntimeException(java.lang.String)", "java.lang.RuntimeException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.RuntimeException()", "java.lang.RuntimeException");
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..9b1dc9f1
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredFields.java
@@ -0,0 +1,103 @@
+// Test for method java.lang.RuntimeException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("static final long java.lang.RuntimeException.serialVersionUID", "serialVersionUID");
+
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("static final long java.lang.RuntimeException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..8a0f0158
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.RuntimeException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getFields.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getFields.java
new file mode 100644
index 00000000..30882067
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.RuntimeException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..1b3af25d
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.RuntimeException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getMethods.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getMethods.java
new file mode 100644
index 00000000..7085f596
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.RuntimeException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java
new file mode 100644
index 00000000..6127558b
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.RuntimeException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getName.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getName.java
new file mode 100644
index 00000000..7de2efed
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java
new file mode 100644
index 00000000..6ea23388
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.RuntimeException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..cb507ea1
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..0921da23
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.RuntimeException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Exception");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..2fb76268
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..8f8d0419
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.RuntimeException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..e85b2e46
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isArray.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isArray.java
new file mode 100644
index 00000000..2cf1d2f6
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..891106b9
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(RuntimeException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isEnum.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isEnum.java
new file mode 100644
index 00000000..9a3ab6c4
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java
new file mode 100644
index 00000000..79bb72aa
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new RuntimeException("java.lang.RuntimeException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java
new file mode 100644
index 00000000..f80e2b72
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..3a3cc20f
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..4dde65b7
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..ebdcdca5
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..2815e5ca
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.RuntimeException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test for method java.lang.RuntimeException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class RuntimeException
+ final Object o = new RuntimeException("java.lang.RuntimeException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/RuntimeException/constructor.java b/gnu/testlet/java/lang/RuntimeException/constructor.java
new file mode 100644
index 00000000..88529464
--- /dev/null
+++ b/gnu/testlet/java/lang/RuntimeException/constructor.java
@@ -0,0 +1,73 @@
+// Test if instances of a class java.lang.RuntimeException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.RuntimeException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.RuntimeException;
+
+
+
+/**
+ * Test if instances of a class java.lang.RuntimeException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ RuntimeException object1 = new RuntimeException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.RuntimeException");
+
+ RuntimeException object2 = new RuntimeException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.RuntimeException: nothing happens");
+
+ RuntimeException object3 = new RuntimeException((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.RuntimeException");
+
+ RuntimeException object4 = new RuntimeException(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.RuntimeException: java.lang.Throwable");
+
+ RuntimeException object5 = new RuntimeException((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.RuntimeException");
+
+ RuntimeException object6 = new RuntimeException("nothing", new Throwable());
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.RuntimeException: nothing");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/CVS/Entries b/gnu/testlet/java/lang/SecurityException/CVS/Entries
new file mode 100644
index 00000000..32f969fc
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Mon Dec 10 09:52:58 2012//
+/constructor.java/1.2/Mon Dec 10 09:52:58 2012//
+D
diff --git a/gnu/testlet/java/lang/SecurityException/CVS/Entries.Log b/gnu/testlet/java/lang/SecurityException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/SecurityException/CVS/Repository b/gnu/testlet/java/lang/SecurityException/CVS/Repository
new file mode 100644
index 00000000..07449cff
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/SecurityException
diff --git a/gnu/testlet/java/lang/SecurityException/CVS/Root b/gnu/testlet/java/lang/SecurityException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/SecurityException/TryCatch.java b/gnu/testlet/java/lang/SecurityException/TryCatch.java
new file mode 100644
index 00000000..a72c3577
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.SecurityException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.SecurityException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new SecurityException("SecurityException");
+ }
+ catch (SecurityException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Entries b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Entries
new file mode 100644
index 00000000..1fe1d202
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Mon Dec 10 09:52:58 2012//
+/getConstructors.java/1.1/Mon Dec 10 09:52:58 2012//
+/getDeclaredConstructors.java/1.1/Mon Dec 10 09:52:58 2012//
+/getDeclaredFields.java/1.1/Mon Dec 10 09:52:58 2012//
+/getDeclaredMethods.java/1.1/Mon Dec 10 09:52:58 2012//
+/getFields.java/1.1/Mon Dec 10 09:52:58 2012//
+/getInterfaces.java/1.2/Mon Dec 10 09:52:58 2012//
+/getMethods.java/1.1/Mon Dec 10 09:52:58 2012//
+/getModifiers.java/1.2/Mon Dec 10 09:52:58 2012//
+/getName.java/1.2/Mon Dec 10 09:52:58 2012//
+/getPackage.java/1.2/Mon Dec 10 09:52:58 2012//
+/getSimpleName.java/1.2/Mon Dec 10 09:52:58 2012//
+/getSuperclass.java/1.2/Mon Dec 10 09:52:58 2012//
+/isAnnotation.java/1.1/Mon Dec 10 09:52:58 2012//
+/isAnnotationPresent.java/1.1/Mon Dec 10 09:52:58 2012//
+/isAnonymousClass.java/1.1/Mon Dec 10 09:52:58 2012//
+/isArray.java/1.1/Mon Dec 10 09:52:58 2012//
+/isAssignableFrom.java/1.2/Mon Dec 10 09:52:58 2012//
+/isEnum.java/1.1/Mon Dec 10 09:52:58 2012//
+/isInstance.java/1.2/Mon Dec 10 09:52:58 2012//
+/isInterface.java/1.2/Mon Dec 10 09:52:58 2012//
+/isLocalClass.java/1.2/Mon Dec 10 09:52:58 2012//
+/isMemberClass.java/1.2/Mon Dec 10 09:52:58 2012//
+/isPrimitive.java/1.2/Mon Dec 10 09:52:58 2012//
+/isSynthetic.java/1.2/Mon Dec 10 09:52:58 2012//
+D
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Repository b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Repository
new file mode 100644
index 00000000..1b9a4264
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/SecurityException/classInfo
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Root b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..f4259851
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.SecurityException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.SecurityException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ SecurityException o = new SecurityException("java.lang.SecurityException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof SecurityException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getConstructors.java b/gnu/testlet/java/lang/SecurityException/classInfo/getConstructors.java
new file mode 100644
index 00000000..9ee5d31a
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getConstructors.java
@@ -0,0 +1,110 @@
+// Test for method java.lang.SecurityException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.SecurityException()", "java.lang.SecurityException");
+ testedConstructors_jdk6.put("public java.lang.SecurityException(java.lang.String)", "java.lang.SecurityException");
+ testedConstructors_jdk6.put("public java.lang.SecurityException(java.lang.String,java.lang.Throwable)", "java.lang.SecurityException");
+ testedConstructors_jdk6.put("public java.lang.SecurityException(java.lang.Throwable)", "java.lang.SecurityException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.SecurityException(java.lang.Throwable)", "java.lang.SecurityException");
+ testedConstructors_jdk7.put("public java.lang.SecurityException(java.lang.String,java.lang.Throwable)", "java.lang.SecurityException");
+ testedConstructors_jdk7.put("public java.lang.SecurityException(java.lang.String)", "java.lang.SecurityException");
+ testedConstructors_jdk7.put("public java.lang.SecurityException()", "java.lang.SecurityException");
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..f54cc4e5
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,110 @@
+// Test for method java.lang.SecurityException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.SecurityException()", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.SecurityException(java.lang.String)", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.SecurityException(java.lang.String,java.lang.Throwable)", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.SecurityException(java.lang.Throwable)", "java.lang.SecurityException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.SecurityException(java.lang.Throwable)", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.SecurityException(java.lang.String,java.lang.Throwable)", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.SecurityException(java.lang.String)", "java.lang.SecurityException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.SecurityException()", "java.lang.SecurityException");
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..9050faa4
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.SecurityException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.SecurityException.serialVersionUID", "serialVersionUID");
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.lang.SecurityException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..c537bb02
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.SecurityException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getFields.java b/gnu/testlet/java/lang/SecurityException/classInfo/getFields.java
new file mode 100644
index 00000000..b269d03f
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.SecurityException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..3d002963
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.SecurityException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getMethods.java b/gnu/testlet/java/lang/SecurityException/classInfo/getMethods.java
new file mode 100644
index 00000000..2a39e969
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.SecurityException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java b/gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java
new file mode 100644
index 00000000..182e9b84
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.SecurityException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getName.java b/gnu/testlet/java/lang/SecurityException/classInfo/getName.java
new file mode 100644
index 00000000..a963f58f
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.SecurityException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java b/gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java
new file mode 100644
index 00000000..254593de
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.SecurityException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..2c9a6cbd
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "SecurityException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..6b2defdc
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.SecurityException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..9c040781
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..dcc3573a
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.SecurityException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/SecurityException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..af3268c4
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isArray.java b/gnu/testlet/java/lang/SecurityException/classInfo/isArray.java
new file mode 100644
index 00000000..1d05b85d
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..a22fa1da
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(SecurityException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isEnum.java b/gnu/testlet/java/lang/SecurityException/classInfo/isEnum.java
new file mode 100644
index 00000000..4180f945
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java b/gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java
new file mode 100644
index 00000000..fe160a7b
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new SecurityException("java.lang.SecurityException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java b/gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java
new file mode 100644
index 00000000..6bcc4f37
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ed258c6f
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..7040f04e
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8098770a
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..5ddfcf19
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.SecurityException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test for method java.lang.SecurityException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class SecurityException
+ final Object o = new SecurityException("java.lang.SecurityException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityException/constructor.java b/gnu/testlet/java/lang/SecurityException/constructor.java
new file mode 100644
index 00000000..bf3b6922
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityException/constructor.java
@@ -0,0 +1,74 @@
+// Test if instances of a class java.lang.SecurityException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.SecurityException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.SecurityException;
+
+
+
+/**
+ * Test if instances of a class java.lang.SecurityException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SecurityException object1 = new SecurityException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.SecurityException");
+
+ SecurityException object2 = new SecurityException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.SecurityException: nothing happens");
+
+ SecurityException object3 = new SecurityException((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.SecurityException");
+
+ SecurityException object4 = new SecurityException(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.SecurityException: java.lang.Throwable");
+
+ SecurityException object5 = new SecurityException((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.SecurityException");
+
+ SecurityException object6 = new SecurityException("nothing", new Throwable());
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.SecurityException: nothing");
+
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/SecurityManager/CVS/Entries b/gnu/testlet/java/lang/SecurityManager/CVS/Entries
new file mode 100644
index 00000000..85391d5d
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityManager/CVS/Entries
@@ -0,0 +1,2 @@
+/thread.java/1.4/Fri Jul 24 11:07:43 2009//
+D
diff --git a/gnu/testlet/java/lang/SecurityManager/CVS/Repository b/gnu/testlet/java/lang/SecurityManager/CVS/Repository
new file mode 100644
index 00000000..549c2091
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/SecurityManager
diff --git a/gnu/testlet/java/lang/SecurityManager/CVS/Root b/gnu/testlet/java/lang/SecurityManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/SecurityManager/thread.java b/gnu/testlet/java/lang/SecurityManager/thread.java
new file mode 100644
index 00000000..56950cef
--- /dev/null
+++ b/gnu/testlet/java/lang/SecurityManager/thread.java
@@ -0,0 +1,76 @@
+// Copyright (C) 2005, 2006 Red Hat, Inc.
+//
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.SecurityManager;
+
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class thread implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // The 1.4.2 javadoc for SecurityManager.checkAccess(Thread) says
+ // that checkAccess will check RuntimePermission("modifyThread")
+ // for system threads, and do nothing for other threads. It
+ // defines a system thread as one belonging to a thread group
+ // with a null parent. SecurityManager.checkAccess(ThreadGroup)
+ // similarly performs checks only when the group's parent is null.
+
+ harness.checkPoint("checkAccess");
+
+ // Get ourselves a system thread and group
+ Thread thread = Thread.currentThread();
+
+ ThreadGroup group = thread.getThreadGroup();
+ harness.check(group != null);
+
+ while (group.getParent() != null)
+ group = group.getParent();
+ if (thread.getThreadGroup() != group)
+ thread = new Thread(group, "dummy");
+
+ // Check we're checking
+ TestSecurityManager sm = new TestSecurityManager(harness);
+
+ try
+ {
+ sm.install();
+
+ sm.prepareChecks(new Permission[] {
+ new RuntimePermission("modifyThread")});
+ sm.checkAccess(thread);
+ sm.checkAllChecked();
+
+ sm.prepareChecks(new Permission[] {
+ new RuntimePermission("modifyThreadGroup")});
+ sm.checkAccess(group);
+ sm.checkAllChecked();
+ }
+ finally
+ {
+ sm.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Short/.cvsignore b/gnu/testlet/java/lang/Short/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/Short/CVS/Entries b/gnu/testlet/java/lang/Short/CVS/Entries
new file mode 100644
index 00000000..633379ae
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/CVS/Entries
@@ -0,0 +1,5 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/ShortTest.java/1.4/Sun Jan 29 23:12:50 2006//
+/hash.java/1.4/Fri Dec 11 11:28:25 1998//
+/toString.java/1.1/Fri May 25 15:43:40 2012//
+D
diff --git a/gnu/testlet/java/lang/Short/CVS/Entries.Log b/gnu/testlet/java/lang/Short/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/Short/CVS/Repository b/gnu/testlet/java/lang/Short/CVS/Repository
new file mode 100644
index 00000000..68b5b924
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Short
diff --git a/gnu/testlet/java/lang/Short/CVS/Root b/gnu/testlet/java/lang/Short/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Short/ShortTest.java b/gnu/testlet/java/lang/Short/ShortTest.java
new file mode 100644
index 00000000..9eb4e0fd
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/ShortTest.java
@@ -0,0 +1,237 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.Short;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ShortTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.check(!( Short.MIN_VALUE != -32768 ||
+ Short.MAX_VALUE != 32767 ),
+ "test_Basics - 1" );
+
+ Short i1 = new Short((short)100);
+
+ harness.check(!( i1.shortValue() != 100 ),
+ "test_Basics - 2" );
+
+ try {
+ harness.check(!( (new Short("234")).shortValue() != 234 ),
+ "test_Basics - 3" );
+ }
+ catch ( NumberFormatException e )
+ {
+ harness.fail("test_Basics - 3" );
+ }
+
+ try {
+ harness.check(!( (new Short("-FF")).shortValue() != -255 ),
+ "test_Basics - 4" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+
+ try {
+ new Short("babu");
+ harness.fail("test_Basics - 5" );
+ }
+ catch ( NumberFormatException e )
+ {
+ }
+ harness.check(!( Short.decode( "123").shortValue() != 123 ),
+ "test_Basics - 6" );
+ harness.check(!( Short.decode( "32767").shortValue() != 32767 ),
+ "test_Basics - 7" );
+
+ }
+
+ public void test_toString()
+ {
+ harness.check(!( !( new Short((short)123)).toString().equals("123")),
+ "test_toString - 1" );
+ harness.check(!( !( new Short((short)-44)).toString().equals("-44")),
+ "test_toString - 2" );
+
+ harness.check(!( !Short.toString((short) 234 ).equals ("234" )),
+ "test_toString - 3" );
+ harness.check(!( !Short.toString((short) -34 ).equals ("-34" )),
+ "test_toString - 4" );
+ harness.check(!( !Short.toString((short) -34 ).equals ("-34" )),
+ "test_toString - 5" );
+
+ }
+
+ public void test_equals()
+ {
+ Short i1 = new Short((short)23);
+ Short i2 = new Short((short)-23);
+
+ harness.check(!( !i1.equals( new Short((short)23))),
+ "test_equals - 1" );
+ harness.check(!( !i2.equals( new Short((short)-23))),
+ "test_equals - 2" );
+
+
+ harness.check(!( i1.equals( i2 )),
+ "test_equals - 3" );
+
+ harness.check(!( i1.equals(null)),
+ "test_equals - 4" );
+ }
+
+ public void test_hashCode( )
+ {
+ Short b1 = new Short((short)3439);
+ Short b2 = new Short((short)-3439);
+
+ harness.check(!( b1.hashCode() != 3439 || b2.hashCode() != -3439 ),
+ "test_hashCode" );
+ }
+
+ public void test_intValue( )
+ {
+ Short b1 = new Short((short)32767);
+ Short b2 = new Short((short)-32767);
+
+ harness.check(!( b1.intValue() != 32767 ),
+ "test_intValue - 1" );
+
+ harness.check(!( b2.intValue() != -32767 ),
+ "test_intValue - 2" );
+ }
+
+ public void test_longValue( )
+ {
+ Short b1 = new Short((short)3767);
+ Short b2 = new Short((short)-3767);
+
+ harness.check(!( b1.longValue() != (long)3767 ),
+ "test_longValue - 1" );
+
+ harness.check(!( b2.longValue() != -3767 ),
+ "test_longValue - 2" );
+ }
+ public void test_floatValue( )
+ {
+ Short b1 = new Short((short)3276);
+ Short b2 = new Short((short)-3276);
+
+ harness.check(!( b1.floatValue() != 3276.0f ),
+ "test_floatValue - 1" );
+
+ harness.check(!( b2.floatValue() != -3276.0f ),
+ "test_floatValue - 2" );
+ }
+ public void test_doubleValue( )
+ {
+ Short b1 = new Short((short)0);
+ Short b2 = new Short((short)30);
+
+ harness.check(!( b1.doubleValue() != 0.0 ),
+ "test_doubleValue - 1" );
+
+ harness.check(!( b2.doubleValue() != 30.0 ),
+ "test_doubleValue - 2" );
+ }
+
+ public void test_shortbyteValue( )
+ {
+ Short b1 = new Short((short)0);
+ Short b2 = new Short((short)300);
+
+ harness.check(!( b1.byteValue() != 0 ),
+ "test_shortbyteValue - 1" );
+
+ harness.check(!( b2.byteValue() != (byte)300 ),
+ "test_shortbyteValue - 2" );
+ harness.check(!( b1.shortValue() != 0 ),
+ "test_shortbyteValue - 3" );
+
+ harness.check(!( b2.shortValue() != (short)300 ),
+ "test_shortbyteValue - 4" );
+ harness.check(!( ((Number)b1).shortValue() != 0 ),
+ "test_shortbyteValue - 5" );
+
+ harness.check(!( ((Number)b2).byteValue() != (byte)300 ),
+ "test_shortbyteValue - 6" );
+ }
+
+ public void test_parseShort()
+ {
+ harness.check(!( Short.parseShort("473") != Short.parseShort("473" , 10 )),
+ "test_parseInt - 1" );
+
+ harness.check(!( Short.parseShort("0" , 10 ) != 0 ),
+ "test_parseInt - 2" );
+
+ harness.check(!( Short.parseShort("473" , 10 ) != 473 ),
+ "test_parseInt - 3" );
+ harness.check(!( Short.parseShort("-0" , 10 ) != 0 ),
+ "test_parseInt - 4" );
+ harness.check(!( Short.parseShort("-FF" , 16 ) != -255 ),
+ "test_parseInt - 5" );
+ harness.check(!( Short.parseShort("1100110" , 2 ) != 102 ),
+ "test_parseInt - 6" );
+ try {
+ Short.parseShort("99" , 8 );
+ harness.fail("test_parseInt - 10" );
+ }catch ( NumberFormatException e ){}
+ try {
+ Short.parseShort("kona" , 10 );
+ harness.fail("test_parseInt - 11" );
+ }catch ( NumberFormatException e ){}
+ }
+
+ public void test_valueOf( )
+ {
+ harness.check(!( Short.valueOf("21234").intValue() != Short.parseShort("21234")),
+ "test_valueOf - 1" );
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_intValue();
+ test_longValue();
+ test_floatValue();
+ test_doubleValue();
+ test_shortbyteValue();
+ test_parseShort();
+ test_valueOf();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/Short/classInfo/CVS/Entries b/gnu/testlet/java/lang/Short/classInfo/CVS/Entries
new file mode 100644
index 00000000..ee356a6c
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/CVS/Entries
@@ -0,0 +1,20 @@
+/InstanceOf.java/1.1/Mon May 14 13:11:11 2012//
+/getInterfaces.java/1.1/Mon May 14 13:11:11 2012//
+/getModifiers.java/1.1/Mon May 14 13:11:11 2012//
+/getName.java/1.1/Mon May 14 13:11:11 2012//
+/getPackage.java/1.1/Mon May 14 13:11:11 2012//
+/getSimpleName.java/1.1/Mon May 14 13:11:11 2012//
+/getSuperclass.java/1.1/Mon May 14 13:11:11 2012//
+/isAnnotation.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnnotationPresent.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAnonymousClass.java/1.1/Thu Sep 20 07:57:17 2012//
+/isArray.java/1.1/Thu Sep 20 07:57:17 2012//
+/isAssignableFrom.java/1.1/Mon May 14 13:11:11 2012//
+/isEnum.java/1.1/Thu Sep 20 07:57:17 2012//
+/isInstance.java/1.1/Mon May 14 13:11:11 2012//
+/isInterface.java/1.1/Mon May 14 13:11:11 2012//
+/isLocalClass.java/1.1/Mon May 14 13:11:11 2012//
+/isMemberClass.java/1.1/Mon May 14 13:11:11 2012//
+/isPrimitive.java/1.1/Mon May 14 13:11:11 2012//
+/isSynthetic.java/1.1/Mon May 14 13:11:11 2012//
+D
diff --git a/gnu/testlet/java/lang/Short/classInfo/CVS/Repository b/gnu/testlet/java/lang/Short/classInfo/CVS/Repository
new file mode 100644
index 00000000..54363274
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Short/classInfo
diff --git a/gnu/testlet/java/lang/Short/classInfo/CVS/Root b/gnu/testlet/java/lang/Short/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Short/classInfo/InstanceOf.java b/gnu/testlet/java/lang/Short/classInfo/InstanceOf.java
new file mode 100644
index 00000000..0e4f220e
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/InstanceOf.java
@@ -0,0 +1,57 @@
+// Test for instanceof operator applied to a class java.lang.Short
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+import java.lang.Number;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.Short
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Short o = new Short((short)42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof Short);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Number);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getInterfaces.java b/gnu/testlet/java/lang/Short/classInfo/getInterfaces.java
new file mode 100644
index 00000000..cbbc6925
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getInterfaces.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.Short.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Comparable.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getModifiers.java b/gnu/testlet/java/lang/Short/classInfo/getModifiers.java
new file mode 100644
index 00000000..f55697fe
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.Short.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getName.java b/gnu/testlet/java/lang/Short/classInfo/getName.java
new file mode 100644
index 00000000..af72e209
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.Short");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getPackage.java b/gnu/testlet/java/lang/Short/classInfo/getPackage.java
new file mode 100644
index 00000000..ae2c9dd3
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Short.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getSimpleName.java b/gnu/testlet/java/lang/Short/classInfo/getSimpleName.java
new file mode 100644
index 00000000..0469c0cb
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "Short");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/getSuperclass.java b/gnu/testlet/java/lang/Short/classInfo/getSuperclass.java
new file mode 100644
index 00000000..667731dc
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.Short.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Number");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isAnnotation.java b/gnu/testlet/java/lang/Short/classInfo/isAnnotation.java
new file mode 100644
index 00000000..ac76661d
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isAnnotation.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/Short/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..4d80a1e2
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isAnnotationPresent.java
@@ -0,0 +1,60 @@
+// Test for method java.lang.Short.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/Short/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..73ed3b4d
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isAnonymousClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isArray.java b/gnu/testlet/java/lang/Short/classInfo/isArray.java
new file mode 100644
index 00000000..d018e23a
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isArray.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/Short/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..c43ff06f
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(Short.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isEnum.java b/gnu/testlet/java/lang/Short/classInfo/isEnum.java
new file mode 100644
index 00000000..e61585de
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isEnum.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Short
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isInstance.java b/gnu/testlet/java/lang/Short/classInfo/isInstance.java
new file mode 100644
index 00000000..4645f769
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new Short((short)42)));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isInterface.java b/gnu/testlet/java/lang/Short/classInfo/isInterface.java
new file mode 100644
index 00000000..69c98956
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isLocalClass.java b/gnu/testlet/java/lang/Short/classInfo/isLocalClass.java
new file mode 100644
index 00000000..c24fa506
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isMemberClass.java b/gnu/testlet/java/lang/Short/classInfo/isMemberClass.java
new file mode 100644
index 00000000..74015325
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isPrimitive.java b/gnu/testlet/java/lang/Short/classInfo/isPrimitive.java
new file mode 100644
index 00000000..a09f22dd
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/classInfo/isSynthetic.java b/gnu/testlet/java/lang/Short/classInfo/isSynthetic.java
new file mode 100644
index 00000000..d1dced4d
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.Short.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.Short.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.Short;
+
+
+
+/**
+ * Test for method java.lang.Short.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new Short((short)42);
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Short/hash.java b/gnu/testlet/java/lang/Short/hash.java
new file mode 100644
index 00000000..2e5df6dc
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/hash.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.Short;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class hash implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Short a = new Short((short) 0);
+ Short b = new Short((short) 1);
+ Short c = new Short((short) -1);
+ Short d = new Short(Short.MAX_VALUE);
+ Short e = new Short(Short.MIN_VALUE);
+
+ harness.check (a.hashCode(), 0);
+ harness.check (b.hashCode(), 1);
+ harness.check (c.hashCode(), -1);
+ harness.check (d.hashCode(), 32767);
+ harness.check (e.hashCode(), -32768);
+ }
+}
diff --git a/gnu/testlet/java/lang/Short/toString.java b/gnu/testlet/java/lang/Short/toString.java
new file mode 100644
index 00000000..a3320bae
--- /dev/null
+++ b/gnu/testlet/java/lang/Short/toString.java
@@ -0,0 +1,53 @@
+// Test of Short methods toString() and toString(short).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.lang.Short;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of Short methods toString() and toString(short).
+ */
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // test of method Short.toString()
+ harness.check(new Short((short)0).toString(), "0");
+ harness.check(new Short((short)-1).toString(), "-1");
+ harness.check(new Short((short)1).toString(), "1");
+ harness.check(new Short((short)127).toString(), "127");
+ harness.check(new Short((short)-128).toString(), "-128");
+ harness.check(new Short(Short.MIN_VALUE).toString(), "-32768");
+ harness.check(new Short(Short.MAX_VALUE).toString(), "32767");
+
+ // test of static method Short.toString(Short)
+ harness.check(Short.toString((short)0), "0");
+ harness.check(Short.toString((short)-1), "-1");
+ harness.check(Short.toString((short)1), "1");
+ harness.check(Short.toString((short)127), "127");
+ harness.check(Short.toString((short)-128), "-128");
+ harness.check(Short.toString(Short.MIN_VALUE), "-32768");
+ harness.check(Short.toString(Short.MAX_VALUE), "32767");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/CVS/Entries b/gnu/testlet/java/lang/StackOverflowError/CVS/Entries
new file mode 100644
index 00000000..737626c8
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Fri Dec 7 13:29:43 2012//
+/constructor.java/1.2/Fri Dec 7 13:29:44 2012//
+D
diff --git a/gnu/testlet/java/lang/StackOverflowError/CVS/Entries.Log b/gnu/testlet/java/lang/StackOverflowError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/StackOverflowError/CVS/Repository b/gnu/testlet/java/lang/StackOverflowError/CVS/Repository
new file mode 100644
index 00000000..63bcde33
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StackOverflowError
diff --git a/gnu/testlet/java/lang/StackOverflowError/CVS/Root b/gnu/testlet/java/lang/StackOverflowError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StackOverflowError/TryCatch.java b/gnu/testlet/java/lang/StackOverflowError/TryCatch.java
new file mode 100644
index 00000000..4d7bf6dd
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.StackOverflowError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.StackOverflowError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new StackOverflowError("StackOverflowError");
+ }
+ catch (StackOverflowError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Entries b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Entries
new file mode 100644
index 00000000..d58c4574
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Fri Dec 7 13:29:44 2012//
+/getConstructors.java/1.1/Fri Dec 7 13:29:44 2012//
+/getDeclaredConstructors.java/1.1/Fri Dec 7 13:29:44 2012//
+/getDeclaredFields.java/1.1/Fri Dec 7 13:29:44 2012//
+/getDeclaredMethods.java/1.1/Fri Dec 7 13:29:44 2012//
+/getFields.java/1.1/Fri Dec 7 13:29:44 2012//
+/getInterfaces.java/1.2/Fri Dec 7 13:29:44 2012//
+/getMethods.java/1.1/Fri Dec 7 13:29:44 2012//
+/getModifiers.java/1.2/Fri Dec 7 13:29:44 2012//
+/getName.java/1.2/Fri Dec 7 13:29:44 2012//
+/getPackage.java/1.2/Fri Dec 7 13:29:44 2012//
+/getSimpleName.java/1.2/Fri Dec 7 13:29:44 2012//
+/getSuperclass.java/1.2/Fri Dec 7 13:29:44 2012//
+/isAnnotation.java/1.1/Fri Dec 7 13:29:44 2012//
+/isAnnotationPresent.java/1.1/Fri Dec 7 13:29:44 2012//
+/isAnonymousClass.java/1.1/Fri Dec 7 13:29:44 2012//
+/isArray.java/1.1/Fri Dec 7 13:29:44 2012//
+/isAssignableFrom.java/1.2/Fri Dec 7 13:29:44 2012//
+/isEnum.java/1.1/Fri Dec 7 13:29:44 2012//
+/isInstance.java/1.2/Fri Dec 7 13:29:44 2012//
+/isInterface.java/1.2/Fri Dec 7 13:29:44 2012//
+/isLocalClass.java/1.2/Fri Dec 7 13:29:44 2012//
+/isMemberClass.java/1.2/Fri Dec 7 13:29:44 2012//
+/isPrimitive.java/1.2/Fri Dec 7 13:29:44 2012//
+/isSynthetic.java/1.2/Fri Dec 7 13:29:44 2012//
+D
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Repository b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Repository
new file mode 100644
index 00000000..7f28ab63
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StackOverflowError/classInfo
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Root b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..a67d219d
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.StackOverflowError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.lang.VirtualMachineError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.StackOverflowError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ StackOverflowError o = new StackOverflowError("StackOverflowError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof StackOverflowError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof VirtualMachineError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getConstructors.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getConstructors.java
new file mode 100644
index 00000000..78d55edd
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.StackOverflowError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.StackOverflowError()", "java.lang.StackOverflowError");
+ testedConstructors_jdk6.put("public java.lang.StackOverflowError(java.lang.String)", "java.lang.StackOverflowError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.StackOverflowError()", "java.lang.StackOverflowError");
+ testedConstructors_jdk7.put("public java.lang.StackOverflowError(java.lang.String)", "java.lang.StackOverflowError");
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..f29c90c9
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.StackOverflowError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.StackOverflowError()", "java.lang.StackOverflowError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.StackOverflowError(java.lang.String)", "java.lang.StackOverflowError");
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.StackOverflowError()", "java.lang.StackOverflowError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.StackOverflowError(java.lang.String)", "java.lang.StackOverflowError");
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..9a3efbbf
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.StackOverflowError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.StackOverflowError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..57f32529
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.StackOverflowError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getFields.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getFields.java
new file mode 100644
index 00000000..b976b444
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.StackOverflowError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..f2c819b5
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.StackOverflowError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getMethods.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getMethods.java
new file mode 100644
index 00000000..d790226e
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.StackOverflowError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getModifiers.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getModifiers.java
new file mode 100644
index 00000000..ce6b1b63
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.StackOverflowError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getName.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getName.java
new file mode 100644
index 00000000..df94a8eb
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.StackOverflowError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getPackage.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getPackage.java
new file mode 100644
index 00000000..ebaa2b6a
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.StackOverflowError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..c52a1560
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "StackOverflowError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..7fef2fa0
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.StackOverflowError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.VirtualMachineError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..9721cab6
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..5b693e96
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.StackOverflowError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..5a758add
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isArray.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isArray.java
new file mode 100644
index 00000000..84fc756c
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..08c315d2
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(StackOverflowError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isEnum.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isEnum.java
new file mode 100644
index 00000000..a0f5a79a
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isInstance.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isInstance.java
new file mode 100644
index 00000000..ab008b95
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new StackOverflowError("StackOverflowError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isInterface.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isInterface.java
new file mode 100644
index 00000000..f9e26c04
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..3717f1e6
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..fa3b65a3
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..65a9f704
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..257421df
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StackOverflowError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test for method java.lang.StackOverflowError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StackOverflowError
+ final Object o = new StackOverflowError("StackOverflowError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StackOverflowError/constructor.java b/gnu/testlet/java/lang/StackOverflowError/constructor.java
new file mode 100644
index 00000000..1f98161b
--- /dev/null
+++ b/gnu/testlet/java/lang/StackOverflowError/constructor.java
@@ -0,0 +1,55 @@
+// Test if constructor is working properly for a class java.lang.StackOverflowError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StackOverflowError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StackOverflowError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.StackOverflowError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StackOverflowError error1 = new StackOverflowError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.StackOverflowError");
+
+ StackOverflowError error2 = new StackOverflowError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.StackOverflowError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/API_coverage.txt b/gnu/testlet/java/lang/StrictMath/API_coverage.txt
new file mode 100644
index 00000000..d9763df9
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/API_coverage.txt
@@ -0,0 +1,47 @@
+# Return type Method name and arguments Since Test name Test name (with strictfp modifier)
+
+01 static double abs(double a) 1.3
+02 static float abs(float a) 1.3
+03 static int abs(int a) 1.3
+04 static long abs(long a) 1.3
+05 static double acos(double a) 1.3 acos.java acos_strictfp.java
+06 static double asin(double a) 1.3 asin.java asin_strictfp.java
+07 static double atan(double a) 1.3 atan.java atan_strictfp.java
+08 static double atan2(double y, double x) 1.3
+09 static double cbrt(double a) 1.5 cbrt.java cbrt_strictfp.java
+10 static double ceil(double a) 1.3
+11 static double cos(double a) 1.3 cos.java cos_strictfp.java
+12 static double cosh(double x) 1.5 cosh.java
+13 static double exp(double a) 1.3
+14 static double expm1(double x) 1.3 exmp1.java exmp1_strictfp.java
+15 static double floor(double a) 1.3
+16 static double hypot(double x, double y) 1.5
+17 static double IEEEremainder(double f1, double f2) 1.3
+18 static double log(double a) 1.3
+19 static double log10(double a) 1.5
+20 static double log1p(double x) 1.3
+21 static double max(double a, double b) 1.3
+22 static float max(float a, float b) 1.3
+23 static int max(int a, int b) 1.3
+24 static long max(long a, long b) 1.3
+25 static double min(double a, double b) 1.3
+26 static float min(float a, float b) 1.3
+27 static int min(int a, int b) 1.3
+28 static long min(long a, long b) 1.3
+29 static double pow(double a, double b) 1.3
+30 static double random() 1.3
+31 static double rint(double a) 1.3
+32 static long round(double a) 1.3
+33 static int round(float a) 1.3
+34 static double signum(double d) 1.5
+35 static float signum(float f) 1.5
+36 static double sin(double a) 1.3 sin.java sin_strictfp.java
+37 static double sinh(double x) 1.5 sinh.java
+38 static double sqrt(double a) 1.3
+39 static double tan(double a) 1.3 tan.java tan_strictfp.java
+40 static double tanh(double x) 1.5 tanh.java
+41 static double toDegrees(double angrad) 1.3
+42 static double toRadians(double angdeg) 1.3
+43 static double ulp(double d) 1.5
+44 static float ulp(float f) 1.5
+
diff --git a/gnu/testlet/java/lang/StrictMath/CVS/Entries b/gnu/testlet/java/lang/StrictMath/CVS/Entries
new file mode 100644
index 00000000..cb0e0ed0
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/CVS/Entries
@@ -0,0 +1,24 @@
+/API_coverage.txt/1.1/Mon Sep 26 13:14:17 2011//
+/acos.java/1.2/Mon Sep 26 13:14:17 2011//
+/acos_strictfp.java/1.2/Mon Sep 26 13:14:17 2011//
+/asin.java/1.2/Mon Sep 26 13:14:17 2011//
+/asin_strictfp.java/1.2/Mon Sep 26 13:14:17 2011//
+/atan.java/1.2/Mon Sep 26 13:14:17 2011//
+/atan_strictfp.java/1.2/Mon Sep 26 13:14:17 2011//
+/cbrt.java/1.4/Mon Sep 26 13:14:17 2011//
+/cbrt_strictfp.java/1.1/Mon Sep 26 13:14:17 2011//
+/cos.java/1.2/Mon Sep 26 13:14:17 2011//
+/cos_strictfp.java/1.2/Mon Sep 26 13:14:17 2011//
+/cosh.java/1.3/Thu Aug 3 18:36:35 2006//
+/cosh_strictfp.java/1.1/Fri Jun 1 13:38:35 2012//
+/expm1.java/1.4/Mon Sep 26 13:14:17 2011//
+/expm1_strictfp.java/1.1/Mon Sep 26 13:14:17 2011//
+/sin.java/1.2/Mon Sep 26 13:14:17 2011//
+/sin_strictfp.java/1.3/Fri Jun 1 13:38:35 2012//
+/sinh.java/1.3/Thu Aug 3 18:36:35 2006//
+/sinh_strictfp.java/1.1/Fri Jun 1 13:38:35 2012//
+/tan.java/1.2/Mon Sep 26 13:14:17 2011//
+/tan_strictfp.java/1.2/Mon Sep 26 13:14:17 2011//
+/tanh.java/1.3/Thu Aug 3 18:36:35 2006//
+/tanh_strictfp.java/1.1/Fri Jun 1 13:38:35 2012//
+D
diff --git a/gnu/testlet/java/lang/StrictMath/CVS/Repository b/gnu/testlet/java/lang/StrictMath/CVS/Repository
new file mode 100644
index 00000000..67878bae
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StrictMath
diff --git a/gnu/testlet/java/lang/StrictMath/CVS/Root b/gnu/testlet/java/lang/StrictMath/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StrictMath/acos.java b/gnu/testlet/java/lang/StrictMath/acos.java
new file mode 100644
index 00000000..1e90f2ba
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/acos.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.acos()
+ */
+public class acos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.acos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute acos using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NAN
+ Double.NaN, // +Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 1.5707963267948966, // 4.9E-324
+ StrictMath.PI/2.0, // 0.0
+ 1.369438406004566, // 0.2
+ 1.1592794807274085, // 0.4
+ 1.0471975511965979, // 0.5
+ 0.9272952180016123, // 0.6
+ 0.6435011087932843, // 0.8
+ 0.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.5707963266948965, // 1.0E-10
+ StrictMath.PI/2.0, // -0.0
+ 1.7721542475852274, // -0.2
+ 1.9823131728623846, // -0.4
+ 2.0943951023931957, // -0.5
+ 2.214297435588181, // -0.6
+ 2.498091544796509, // -0.8
+ StrictMath.PI, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ 1.5707963268948966, // -1.0E-1
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/acos_strictfp.java b/gnu/testlet/java/lang/StrictMath/acos_strictfp.java
new file mode 100644
index 00000000..79951288
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/acos_strictfp.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.acos()
+ * by using strictfp modifier.
+ */
+public strictfp class acos_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.acos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute acos using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NAN
+ Double.NaN, // +Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 1.5707963267948966, // 4.9E-324
+ StrictMath.PI/2.0, // 0.0
+ 1.369438406004566, // 0.2
+ 1.1592794807274085, // 0.4
+ 1.0471975511965979, // 0.5
+ 0.9272952180016123, // 0.6
+ 0.6435011087932843, // 0.8
+ 0.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.5707963266948965, // 1.0E-10
+ StrictMath.PI/2.0, // -0.0
+ 1.7721542475852274, // -0.2
+ 1.9823131728623846, // -0.4
+ 2.0943951023931957, // -0.5
+ 2.214297435588181, // -0.6
+ 2.498091544796509, // -0.8
+ StrictMath.PI, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ 1.5707963268948966, // -1.0E-1
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/asin.java b/gnu/testlet/java/lang/StrictMath/asin.java
new file mode 100644
index 00000000..c6c7d385
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/asin.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.asin()
+ */
+public class asin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.asin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute asin using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.2013579207903308, // 0.2
+ 0.41151684606748806, // 0.4
+ 0.5235987755982989, // 0.5
+ 0.6435011087932844, // 0.6
+ 0.9272952180016123, // 0.8
+ StrictMath.PI/2.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.2013579207903308, // -0.2
+ -0.41151684606748806,// -0.4
+ -0.5235987755982989, // -0.5
+ -0.6435011087932844, // -0.6
+ -0.9272952180016123, // -0.8
+ -StrictMath.PI/2.0, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/asin_strictfp.java b/gnu/testlet/java/lang/StrictMath/asin_strictfp.java
new file mode 100644
index 00000000..524fd783
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/asin_strictfp.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.asin()
+ * by using strictfp modifier.
+ */
+public strictfp class asin_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.asin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute asin using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ Double.NaN, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.2013579207903308, // 0.2
+ 0.41151684606748806, // 0.4
+ 0.5235987755982989, // 0.5
+ 0.6435011087932844, // 0.6
+ 0.9272952180016123, // 0.8
+ StrictMath.PI/2.0, // 1.0
+ Double.NaN, // 2.0
+ Double.NaN, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.2013579207903308, // -0.2
+ -0.41151684606748806,// -0.4
+ -0.5235987755982989, // -0.5
+ -0.6435011087932844, // -0.6
+ -0.9272952180016123, // -0.8
+ -StrictMath.PI/2.0, // -1.0
+ Double.NaN, // -2.0
+ Double.NaN, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/atan.java b/gnu/testlet/java/lang/StrictMath/atan.java
new file mode 100644
index 00000000..a7279793
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/atan.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.atan()
+ */
+public class atan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.atan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute atan using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ StrictMath.PI/2.0, // Infinity
+ -StrictMath.PI/2.0, // -Infinity
+ 1.5707963267948966, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.19739555984988078, // 0.2
+ 0.3805063771123649, // 0.4
+ 0.4636476090008061, // 0.5
+ 0.5404195002705842, // 0.6
+ 0.6747409422235527, // 0.8
+ 0.7853981633974483, // 1.0
+ 1.1071487177940904, // 2.0
+ 1.5707963266948965, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.19739555984988078,// -0.2
+ -0.3805063771123649, // -0.4
+ -0.4636476090008061, // -0.5
+ -0.5404195002705842, // -0.6
+ -0.6747409422235527, // -0.8
+ -0.7853981633974483, // -1.0
+ -1.1071487177940904, // -2.0
+ -1.5707963266948965, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/atan_strictfp.java b/gnu/testlet/java/lang/StrictMath/atan_strictfp.java
new file mode 100644
index 00000000..1678ed8a
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/atan_strictfp.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.atan()
+ * by using strictfp modifier.
+ */
+public strictfp class atan_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.atan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute atan using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ 0.2,
+ 0.4,
+ 0.5,
+ 0.6,
+ 0.8,
+ 1.0,
+ 2.0,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -0.2,
+ -0.4,
+ -0.5,
+ -0.6,
+ -0.8,
+ -1.0,
+ -2.0,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ StrictMath.PI/2.0, // Infinity
+ -StrictMath.PI/2.0, // -Infinity
+ 1.5707963267948966, // 1.7976931348623157E308
+ 4.9E-324, // 4.9E-324
+ 0.0, // 0.0
+ 0.19739555984988078, // 0.2
+ 0.3805063771123649, // 0.4
+ 0.4636476090008061, // 0.5
+ 0.5404195002705842, // 0.6
+ 0.6747409422235527, // 0.8
+ 0.7853981633974483, // 1.0
+ 1.1071487177940904, // 2.0
+ 1.5707963266948965, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.19739555984988078,// -0.2
+ -0.3805063771123649, // -0.4
+ -0.4636476090008061, // -0.5
+ -0.5404195002705842, // -0.6
+ -0.6747409422235527, // -0.8
+ -0.7853981633974483, // -1.0
+ -1.1071487177940904, // -2.0
+ -1.5707963266948965, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/cbrt.java b/gnu/testlet/java/lang/StrictMath/cbrt.java
new file mode 100644
index 00000000..a94d5f40
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cbrt.java
@@ -0,0 +1,151 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.cbrt()
+ */
+public class cbrt implements Testlet
+{
+ /**
+ * These values are used as arguments to cbrt.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 123456789e-9,
+ -123456789e-6,
+ 123456789e+2,
+ -123456789e+4,
+ 987654321e-7,
+ -987654321e-4,
+ 987654321e+3,
+ -987654321e+5,
+ 1234509876e-320, // subnormal number
+ 9756272385e-325, // subnormal number
+ Math.PI,
+ Math.E
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.49793385921817446,
+ -4.979338592181745,
+ 2311.204240824796,
+ -10727.659796410873,
+ 4.622408495690158,
+ -46.224084956901585,
+ 9958.677214612972,
+ -46224.08495690158,
+ 2.3111680380625372e-104,
+ 9.918088333941088e-106,
+ 1.4645918875615231,
+ 1.3956124250860895
+ };
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cbrt(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.cbrt(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cbrt(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/cbrt_strictfp.java b/gnu/testlet/java/lang/StrictMath/cbrt_strictfp.java
new file mode 100644
index 00000000..2dd8e42c
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cbrt_strictfp.java
@@ -0,0 +1,150 @@
+// Tags: JDK1.5
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.cbrt()
+ * by using strictfp modifier.
+ */
+public strictfp class cbrt_strictfp implements Testlet
+{
+ /**
+ * These values are used as arguments to cbrt.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 123456789e-9,
+ -123456789e-6,
+ 123456789e+2,
+ -123456789e+4,
+ 987654321e-7,
+ -987654321e-4,
+ 987654321e+3,
+ -987654321e+5,
+ 1234509876e-320, // subnormal number
+ 9756272385e-325, // subnormal number
+ Math.PI,
+ Math.E
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.49793385921817446,
+ -4.979338592181745,
+ 2311.204240824796,
+ -10727.659796410873,
+ 4.622408495690158,
+ -46.224084956901585,
+ 9958.677214612972,
+ -46224.08495690158,
+ 2.3111680380625372e-104,
+ 9.918088333941088e-106,
+ 1.4645918875615231,
+ 1.3956124250860895
+ };
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cbrt(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.cbrt(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cbrt(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/cos.java b/gnu/testlet/java/lang/StrictMath/cos.java
new file mode 100644
index 00000000..48f89bcc
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cos.java
@@ -0,0 +1,173 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.cos()
+ */
+public class cos implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.cos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute cos using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.9999876894265599, // Double.MAX_VALUE
+ 1.0, // Double.MIN_VALUE
+ 1.0, // 0.0
+ 0.7071067811865476, // StrictMath.PI/4
+ 6.123233995736766E-17, // StrictMath.PI/2
+ -1.0, // StrictMath.PI
+ 1.0, // 2*StrictMath.PI
+ 1.0, // 4*StrictMath.PI
+ 1.0, // 100*StrictMath.PI
+ 0.873119622676856, // 1.0E10
+ 1.0, // 1.0E-10
+ 1.0, // -0.0
+ 0.7071067811865476, // -StrictMath.PI/4
+ 6.123233995736766E-17, // -StrictMath.PI/2
+ -1.0, // -StrictMath.PI
+ 1.0, // -2*StrictMath.PI
+ 1.0, // -4*StrictMath.PI
+ 1.0, // -100*StrictMath.PI
+ 0.873119622676856, // -1.0E10
+ 1.0, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/cos_strictfp.java b/gnu/testlet/java/lang/StrictMath/cos_strictfp.java
new file mode 100644
index 00000000..ac4b0e31
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cos_strictfp.java
@@ -0,0 +1,174 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.cos()
+ * by using strictfp modifier.
+ */
+public strictfp class cos_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.cos(input);
+ }
+
+ /**
+ * These values are used as arguments to compute cos using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.9999876894265599, // Double.MAX_VALUE
+ 1.0, // Double.MIN_VALUE
+ 1.0, // 0.0
+ 0.7071067811865476, // StrictMath.PI/4
+ 6.123233995736766E-17, // StrictMath.PI/2
+ -1.0, // StrictMath.PI
+ 1.0, // 2*StrictMath.PI
+ 1.0, // 4*StrictMath.PI
+ 1.0, // 100*StrictMath.PI
+ 0.873119622676856, // 1.0E10
+ 1.0, // 1.0E-10
+ 1.0, // -0.0
+ 0.7071067811865476, // -StrictMath.PI/4
+ 6.123233995736766E-17, // -StrictMath.PI/2
+ -1.0, // -StrictMath.PI
+ 1.0, // -2*StrictMath.PI
+ 1.0, // -4*StrictMath.PI
+ 1.0, // -100*StrictMath.PI
+ 0.873119622676856, // -1.0E10
+ 1.0, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/cosh.java b/gnu/testlet/java/lang/StrictMath/cosh.java
new file mode 100644
index 00000000..bbbf015a
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cosh.java
@@ -0,0 +1,157 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class cosh implements Testlet
+{
+ /**
+ * These values are used as arguments to cosh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 1.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY,
+ 1.0076304736991977,
+ 1.0076304736991977,
+ 1.0275604855232756,
+ 1.0275604855232756,
+ 1.8639267730274125,
+ 1.8639267730274125,
+ 9734.154204183918,
+ 9734.154204183918,
+ 1.792277186385473e9,
+ 1.792277186385473e9,
+ 2.1428869091881118e246,
+ 2.1428869091881118e246,
+ 3.1758371607555525e307,
+ 3.1758371607555525e307,
+ 8.988464834932886e307,
+ 8.988464834932886e307,
+ 1.7976931348605396e308,
+ 1.7972003892018829e308,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cosh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.cosh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cosh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/cosh_strictfp.java b/gnu/testlet/java/lang/StrictMath/cosh_strictfp.java
new file mode 100644
index 00000000..49f3ca78
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/cosh_strictfp.java
@@ -0,0 +1,159 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+// update for strictfp class Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class cosh_strictfp implements Testlet
+{
+ /**
+ * These values are used as arguments to cosh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 1.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY,
+ 1.0076304736991977,
+ 1.0076304736991977,
+ 1.0275604855232756,
+ 1.0275604855232756,
+ 1.8639267730274125,
+ 1.8639267730274125,
+ 9734.154204183918,
+ 9734.154204183918,
+ 1.792277186385473e9,
+ 1.792277186385473e9,
+ 2.1428869091881118e246,
+ 2.1428869091881118e246,
+ 3.1758371607555525e307,
+ 3.1758371607555525e307,
+ 8.988464834932886e307,
+ 8.988464834932886e307,
+ 1.7976931348605396e308,
+ 1.7972003892018829e308,
+ Double.POSITIVE_INFINITY,
+ Double.POSITIVE_INFINITY
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cosh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.cosh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.cosh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/expm1.java b/gnu/testlet/java/lang/StrictMath/expm1.java
new file mode 100644
index 00000000..aa9b5714
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/expm1.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.expm1()
+ */
+public class expm1 implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.expm1(input);
+ }
+
+ /**
+ * These values are used as arguments to expm1.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.0000000000000000277555756156289135105, // ~ 2^-55
+ -0.0000000000000000277555756156289135105, // ~ -2^55
+ 0.6 * 0.6931471805599453 + 0.05, // 0.6 * ln(2) + 0.05
+ -0.6 * 0.6931471805599453 - 0.05, // -0.6 * ln(2) - 0.05
+ 0.25 * 0.6931471805599453 + 0.03, // 0.25 * ln(2) + 0.03
+ -0.25 * 0.6931471805599453 - 0.03, // -0.25 * ln(2) - 0.03
+ 0.44,
+ -0.44,
+ 2.3 * 0.6931471805599453 + 0.05, // 2.3 * ln(2) + 0.05
+ -2.3 * 0.6931471805599453 - 0.05, // -2.3 * ln(2) - 0.05
+ 7 * 0.6931471805599453 + 0.03, // 7 * ln(2) + 0.03
+ -9 * 0.6931471805599453 - 0.03, // -9 * ln(2) - 0.03
+ 29 * 0.6931471805599453 + 0.03, // 29 * ln(2) + 0.03
+ -27 * 0.6931471805599453 - 0.03, // -27 * ln(2) - 0.03
+ 709.782712893384, // EXP_LIMIT_H
+ 709.782712893384 + 3.423e-5, // EXP_LIMIT_H + 3.423e-5
+ 709.782712893384 - 3.423e-5, // EXP_LIMIT_H - 3.423e-5
+ -709.782712893384, // -EXP_LIMIT_H
+ -709.782712893384 - 3.423e-5, // -EXP_LIMIT_H - 3.423e-5
+ -709.782712893384 + 3.423e-5 // -EXP_LIMIT_H + 3.423e-5
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ -1.0,
+ 2.7755575615628914E-17,
+ -2.7755575615628914E-17,
+ 0.5934290166706889,
+ -0.3724226247056801,
+ 0.22542386346433524,
+ -0.1839558296400811,
+ 0.5527072185113361,
+ -0.35596357891685865,
+ 4.177066148857307,
+ -0.806840405116183,
+ 130.89818034605017,
+ -0.9981045985672881,
+ 5.532210644181606E8,
+ -0.9999999927696174,
+ 1.7976931348622732E308,
+ Double.POSITIVE_INFINITY,
+ 1.7976316008794578E308,
+ -1.0,
+ -1.0,
+ -1.0
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/expm1_strictfp.java b/gnu/testlet/java/lang/StrictMath/expm1_strictfp.java
new file mode 100644
index 00000000..eb4589e1
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/expm1_strictfp.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.5
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.expm1()
+ * by using strictfp modifier.
+ */
+public strictfp class expm1_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.expm1(input);
+ }
+
+ /**
+ * These values are used as arguments to expm1.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.0000000000000000277555756156289135105, // ~ 2^-55
+ -0.0000000000000000277555756156289135105, // ~ -2^55
+ 0.6 * 0.6931471805599453 + 0.05, // 0.6 * ln(2) + 0.05
+ -0.6 * 0.6931471805599453 - 0.05, // -0.6 * ln(2) - 0.05
+ 0.25 * 0.6931471805599453 + 0.03, // 0.25 * ln(2) + 0.03
+ -0.25 * 0.6931471805599453 - 0.03, // -0.25 * ln(2) - 0.03
+ 0.44,
+ -0.44,
+ 2.3 * 0.6931471805599453 + 0.05, // 2.3 * ln(2) + 0.05
+ -2.3 * 0.6931471805599453 - 0.05, // -2.3 * ln(2) - 0.05
+ 7 * 0.6931471805599453 + 0.03, // 7 * ln(2) + 0.03
+ -9 * 0.6931471805599453 - 0.03, // -9 * ln(2) - 0.03
+ 29 * 0.6931471805599453 + 0.03, // 29 * ln(2) + 0.03
+ -27 * 0.6931471805599453 - 0.03, // -27 * ln(2) - 0.03
+ 709.782712893384, // EXP_LIMIT_H
+ 709.782712893384 + 3.423e-5, // EXP_LIMIT_H + 3.423e-5
+ 709.782712893384 - 3.423e-5, // EXP_LIMIT_H - 3.423e-5
+ -709.782712893384, // -EXP_LIMIT_H
+ -709.782712893384 - 3.423e-5, // -EXP_LIMIT_H - 3.423e-5
+ -709.782712893384 + 3.423e-5 // -EXP_LIMIT_H + 3.423e-5
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ -1.0,
+ 2.7755575615628914E-17,
+ -2.7755575615628914E-17,
+ 0.5934290166706889,
+ -0.3724226247056801,
+ 0.22542386346433524,
+ -0.1839558296400811,
+ 0.5527072185113361,
+ -0.35596357891685865,
+ 4.177066148857307,
+ -0.806840405116183,
+ 130.89818034605017,
+ -0.9981045985672881,
+ 5.532210644181606E8,
+ -0.9999999927696174,
+ 1.7976931348622732E308,
+ Double.POSITIVE_INFINITY,
+ 1.7976316008794578E308,
+ -1.0,
+ -1.0,
+ -1.0
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/sin.java b/gnu/testlet/java/lang/StrictMath/sin.java
new file mode 100644
index 00000000..f1c73b34
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/sin.java
@@ -0,0 +1,173 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.sin()
+ */
+public class sin implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.sin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute sin using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ 0.004961954789184062, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.7071067811865475, // StrictMath.PI/4
+ 1.0, // StrictMath.PI/2
+ 1.2246467991473532E-16, // StrictMath.PI
+ -2.4492935982947064E-16,// 2*StrictMath.PI
+ -4.898587196589413E-16, // 4*StrictMath.PI
+ 1.964386723728472E-15, // 100*StrictMath.PI
+ -0.4875060250875107, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.7071067811865475, // -StrictMath.PI/4
+ -1.0, // -StrictMath.PI/2
+ -1.2246467991473532E-16,// -StrictMath.PI
+ 2.4492935982947064E-16, // -2*StrictMath.PI
+ 4.898587196589413E-16, // -4*StrictMath.PI
+ -1.964386723728472E-15, // -100*StrictMath.PI
+ 0.4875060250875107, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/sin_strictfp.java b/gnu/testlet/java/lang/StrictMath/sin_strictfp.java
new file mode 100644
index 00000000..3de9a7bc
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/sin_strictfp.java
@@ -0,0 +1,174 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+// update for strictfp class Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.sin()
+ */
+public strictfp class sin_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.sin(input);
+ }
+
+ /**
+ * These values are used as arguments to compute sin using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ 0.004961954789184062, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.7071067811865475, // StrictMath.PI/4
+ 1.0, // StrictMath.PI/2
+ 1.2246467991473532E-16, // StrictMath.PI
+ -2.4492935982947064E-16,// 2*StrictMath.PI
+ -4.898587196589413E-16, // 4*StrictMath.PI
+ 1.964386723728472E-15, // 100*StrictMath.PI
+ -0.4875060250875107, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.7071067811865475, // -StrictMath.PI/4
+ -1.0, // -StrictMath.PI/2
+ -1.2246467991473532E-16,// -StrictMath.PI
+ 2.4492935982947064E-16, // -2*StrictMath.PI
+ 4.898587196589413E-16, // -4*StrictMath.PI
+ -1.964386723728472E-15, // -100*StrictMath.PI
+ 0.4875060250875107, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/sinh.java b/gnu/testlet/java/lang/StrictMath/sinh.java
new file mode 100644
index 00000000..4e54981f
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/sinh.java
@@ -0,0 +1,157 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class sinh implements Testlet
+{
+ /**
+ * These values are used as arguments to sinh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.1237706408130359,
+ -0.1237706408130359,
+ 0.23639067538469039,
+ -0.23639067538469039,
+ 1.5729663108942873,
+ -1.5729663108942873,
+ 9734.154152818386,
+ -9734.154152818386,
+ 1.792277186385473E9,
+ -1.792277186385473E9,
+ 2.1428869091881118E246,
+ -2.1428869091881118E246,
+ 3.1758371607555525E307,
+ -3.1758371607555525E307,
+ 8.988464834932886E307,
+ -8.988464834932886E307,
+ 1.7976931348605396E308,
+ 1.7972003892018829E308,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.sinh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.sinh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.sinh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/sinh_strictfp.java b/gnu/testlet/java/lang/StrictMath/sinh_strictfp.java
new file mode 100644
index 00000000..a9dcf7fd
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/sinh_strictfp.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class sinh_strictfp implements Testlet
+{
+ /**
+ * These values are used as arguments to sinh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.123456789,
+ -0.123456789,
+ 0.234242656456,
+ -0.234242656456,
+ 1.23456789,
+ -1.23456789,
+ 9.87654321,
+ -9.87654321,
+ 21.9999,
+ -21.9999,
+ 567.891234,
+ -567.891234,
+ 708.742342,
+ -708.742342,
+ 709.7827128,
+ -709.7827128,
+ 710.475860073943,
+ 710.4755859375,
+ 723.6787676346,
+ -723.6787676346,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 0.1237706408130359,
+ -0.1237706408130359,
+ 0.23639067538469039,
+ -0.23639067538469039,
+ 1.5729663108942873,
+ -1.5729663108942873,
+ 9734.154152818386,
+ -9734.154152818386,
+ 1.792277186385473E9,
+ -1.792277186385473E9,
+ 2.1428869091881118E246,
+ -2.1428869091881118E246,
+ 3.1758371607555525E307,
+ -3.1758371607555525E307,
+ 8.988464834932886E307,
+ -8.988464834932886E307,
+ 1.7976931348605396E308,
+ 1.7972003892018829E308,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.sinh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.sinh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.sinh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StrictMath/tan.java b/gnu/testlet/java/lang/StrictMath/tan.java
new file mode 100644
index 00000000..be827153
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/tan.java
@@ -0,0 +1,174 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.tan()
+ */
+public class tan implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.tan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute tan using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.004962015874444895, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.9999999999999999, // StrictMath.PI/4
+ 1.633123935319537E16, // StrictMath.PI/2
+ -1.2246467991473532E-16, // StrictMath.PI
+ -2.4492935982947064E-16, // 2*StrictMath.PI
+ -4.898587196589413E-16, // 4*StrictMath.PI
+ 1.964386723728472E-15, // 100*StrictMath.PI
+ -0.5583496378112418, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.9999999999999999, // -StrictMath.PI/4
+ -1.633123935319537E16, // -StrictMath.PI/2
+ 1.2246467991473532E-16, // -StrictMath.PI
+ 2.4492935982947064E-16, // -2*StrictMath.PI
+ 4.898587196589413E-16, // -4*StrictMath.PI
+ -1.964386723728472E-15, // -100*StrictMath.PI
+ 0.5583496378112418, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/StrictMath/tan_strictfp.java b/gnu/testlet/java/lang/StrictMath/tan_strictfp.java
new file mode 100644
index 00000000..416598de
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/tan_strictfp.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test for a static method StrictMath.tan()
+ * by using strictfp modifier.
+ */
+public strictfp class tan_strictfp implements Testlet
+{
+ /**
+ * Function (=static method) checked by this test.
+ */
+ private static double testedFunction(double input)
+ {
+ return StrictMath.tan(input);
+ }
+
+ /**
+ * These values are used as arguments to compute tan using StrictMath.
+ */
+ private static double[] inputValues =
+ {
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ Double.MAX_VALUE,
+ Double.MIN_VALUE,
+ 0.0,
+ StrictMath.PI/4,
+ StrictMath.PI/2,
+ StrictMath.PI,
+ 2*StrictMath.PI,
+ 4*StrictMath.PI,
+ 100*StrictMath.PI,
+ 1e10,
+ 1e-10,
+ -0.0,
+ -StrictMath.PI/4,
+ -StrictMath.PI/2,
+ -StrictMath.PI,
+ -2*StrictMath.PI,
+ -4*StrictMath.PI,
+ -100*StrictMath.PI,
+ -1e10,
+ -1e-10,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ // output value input value
+ Double.NaN, // NaN
+ Double.NaN, // Infinity
+ Double.NaN, // -Infinity
+ -0.004962015874444895, // Double.MAX_VALUE
+ 4.9E-324, // Double.MIN_VALUE
+ 0.0, // 0.0
+ 0.9999999999999999, // StrictMath.PI/4
+ 1.633123935319537E16, // StrictMath.PI/2
+ -1.2246467991473532E-16, // StrictMath.PI
+ -2.4492935982947064E-16, // 2*StrictMath.PI
+ -4.898587196589413E-16, // 4*StrictMath.PI
+ 1.964386723728472E-15, // 100*StrictMath.PI
+ -0.5583496378112418, // 1.0E10
+ 1.0E-10, // 1.0E-10
+ -0.0, // -0.0
+ -0.9999999999999999, // -StrictMath.PI/4
+ -1.633123935319537E16, // -StrictMath.PI/2
+ 1.2246467991473532E-16, // -StrictMath.PI
+ 2.4492935982947064E-16, // -2*StrictMath.PI
+ 4.898587196589413E-16, // -4*StrictMath.PI
+ -1.964386723728472E-15, // -100*StrictMath.PI
+ 0.5583496378112418, // -1.0E10
+ -1.0E-10, // -1.0E-10
+ };
+
+ /**
+ * These values represent various NaN
+ */
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ /**
+ * Test not NaN values.
+ */
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = testedFunction(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(testedFunction(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ /**
+ * Entry point to a test.
+ */
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ double input = inputValues[i];
+ double output = testedFunction(inputValues[i]);
+ System.out.println(" " + Double.toString(output) + ", // " + input);
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/lang/StrictMath/tanh.java b/gnu/testlet/java/lang/StrictMath/tanh.java
new file mode 100644
index 00000000..a9b3d43c
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/tanh.java
@@ -0,0 +1,153 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class tanh implements Testlet
+{
+ /**
+ * These values are used as arguments to tanh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 2.7755575615628e-16, // ~ 2^-55
+ -2.7755575615628e-16, // ~ -2^-55
+ 2.5123456789e-16, // < 2^-55
+ -2.5123456789e-16, // > -2^-55
+ 0.123456789,
+ -0.123456789,
+ 0.987654321,
+ -0.987654321,
+ 1.0000000000000000123,
+ -1.0000000000000000123,
+ 1.123456789,
+ -1.123456789,
+ 21.999999999999999876,
+ -21.999999999999999876,
+ 22.000000000000000123,
+ -22.000000000000000123,
+ 25.987654321,
+ -25.987654321,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ 1.0,
+ -1.0,
+ 2.7755575615627996E-16,
+ -2.7755575615627996E-16,
+ 2.5123456789E-16,
+ -2.5123456789E-16,
+ 0.12283336405919822,
+ -0.12283336405919822,
+ 0.7563603430619676,
+ -0.7563603430619676,
+ 0.7615941559557649,
+ -0.7615941559557649,
+ 0.8087679479619252,
+ -0.8087679479619252,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.tanh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.tanh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.tanh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/StrictMath/tanh_strictfp.java b/gnu/testlet/java/lang/StrictMath/tanh_strictfp.java
new file mode 100644
index 00000000..d8e3e57b
--- /dev/null
+++ b/gnu/testlet/java/lang/StrictMath/tanh_strictfp.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Carsten Neumann <cn-develop@gmx.net>
+// update for strictfp class Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.lang.StrictMath;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public strictfp class tanh_strictfp implements Testlet
+{
+ /**
+ * These values are used as arguments to tanh.
+ * The values are somewhat arbitrary, but ensure that all code paths
+ * are tested.
+ */
+ private static double[] inputValues =
+ {
+ 0.0,
+ Double.NaN,
+ Double.POSITIVE_INFINITY,
+ Double.NEGATIVE_INFINITY,
+ 2.7755575615628e-16, // ~ 2^-55
+ -2.7755575615628e-16, // ~ -2^-55
+ 2.5123456789e-16, // < 2^-55
+ -2.5123456789e-16, // > -2^-55
+ 0.123456789,
+ -0.123456789,
+ 0.987654321,
+ -0.987654321,
+ 1.0000000000000000123,
+ -1.0000000000000000123,
+ 1.123456789,
+ -1.123456789,
+ 21.999999999999999876,
+ -21.999999999999999876,
+ 22.000000000000000123,
+ -22.000000000000000123,
+ 25.987654321,
+ -25.987654321,
+ };
+
+ /**
+ * These values are the expected results, obtained from the RI.
+ */
+ private static double[] outputValues =
+ {
+ 0.0,
+ Double.NaN,
+ 1.0,
+ -1.0,
+ 2.7755575615627996E-16,
+ -2.7755575615627996E-16,
+ 2.5123456789E-16,
+ -2.5123456789E-16,
+ 0.12283336405919822,
+ -0.12283336405919822,
+ 0.7563603430619676,
+ -0.7563603430619676,
+ 0.7615941559557649,
+ -0.7615941559557649,
+ 0.8087679479619252,
+ -0.8087679479619252,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ 1.0,
+ -1.0,
+ };
+
+ private static long[] NaNValues =
+ {
+ 0x7fff800000000000L,
+ 0xffff800000000000L,
+ 0x7fff812345abcdefL,
+ 0xffff812345abcdefL,
+
+ 0x7fff000000000001L,
+ 0xffff000000000001L,
+ 0x7fff7654321fedcbL,
+ 0xffff7654321fedcbL
+ };
+
+ private void testInputValues(TestHarness harness)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.tanh(inputValues[i]);
+
+ // exact equality seems appropriate for StrictMath
+ harness.check(res, outputValues[i]);
+ }
+ }
+
+ /**
+ * Test if input NaN is returned unchanged.
+ */
+ private void testNaN(TestHarness harness)
+ {
+ long bitsNaN;
+ double valNaN;
+
+ for (int i = 0; i < NaNValues.length; ++i)
+ {
+ bitsNaN = NaNValues[i];
+ valNaN = Double.longBitsToDouble(bitsNaN);
+
+ harness.check(Double.doubleToRawLongBits(StrictMath.tanh(valNaN)),
+ bitsNaN);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testInputValues(harness);
+ testNaN(harness);
+ }
+
+ /**
+ * Run this on the RI to obtain the expected output values.
+ */
+ public static void main(String[] argv)
+ {
+ double res;
+
+ for (int i = 0; i < inputValues.length; ++i)
+ {
+ res = StrictMath.tanh(inputValues[i]);
+
+ System.out.println(Double.toString(res));
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/.cvsignore b/gnu/testlet/java/lang/String/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/String/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java b/gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java
new file mode 100644
index 00000000..168f5352
--- /dev/null
+++ b/gnu/testlet/java/lang/String/CASE_INSENSITIVE_ORDER.java
@@ -0,0 +1,107 @@
+/* Copyright (C) 2001, 2002 Eric Blake
+ *
+ * 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: JDK1.2
+
+package gnu.testlet.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Comparator;
+import java.util.Locale;
+import java.io.Serializable;
+
+/**
+ * This class tests compliance of the CASE_INSENSITIVE_ORDER field
+ * of String, added in JDK 1.2.
+ *
+ * @author Eric Blake <ebb9@email.byu.edu>
+ */
+public class CASE_INSENSITIVE_ORDER implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Comparator c = String.CASE_INSENSITIVE_ORDER;
+ harness.check(c instanceof Serializable);
+ harness.check(c.compare("abc", "abc"), 0);
+ harness.check(c.compare("ABC", "ABC"), 0);
+ harness.check(c.compare("aBc", "AbC"), 0);
+ harness.check(c.compare("", "a") < 0);
+ harness.check(c.compare("a", "") > 0);
+ harness.check(c.compare("a", "b") < 0);
+ harness.check(c.compare("a", "B") < 0);
+ harness.check(c.compare("A", "b") < 0);
+ harness.check(c.compare("A", "B") < 0);
+ harness.check(c.compare("b", "a") > 0);
+ harness.check(c.compare("b", "A") > 0);
+ harness.check(c.compare("B", "a") > 0);
+ harness.check(c.compare("B", "A") > 0);
+
+ harness.checkPoint("unicode mappings");
+ // the API (as corrected in 1.4.1) specifies using
+ // Character.toUpperCase(), and not String.toUpperCase(), so 1:m case
+ // mappings are not performed (such as sharp-s to SS).
+ harness.check(c.compare("\u00df", "sS") != 0);
+ // Likewise, comparisons are locale independent, which affects things
+ // like Turkish 'i' and 'I'.
+ Locale l = Locale.getDefault();
+ Locale.setDefault(new Locale("tr", ""));
+ harness.check(c.compare("\u0131I", "i\u0130"), 0);
+ Locale.setDefault(l);
+ harness.check(c.compare("\u0131I", "i\u0130"), 0);
+
+ harness.checkPoint("bad input");
+ try
+ {
+ c.compare(null, "");
+ harness.fail("expected NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ c.compare("", null);
+ harness.fail("expected NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ c.compare(this, "");
+ harness.fail("expected ClassCastException");
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ c.compare("", this);
+ harness.fail("expected ClassCastException");
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/String/CVS/Entries b/gnu/testlet/java/lang/String/CVS/Entries
new file mode 100644
index 00000000..673bf0de
--- /dev/null
+++ b/gnu/testlet/java/lang/String/CVS/Entries
@@ -0,0 +1,22 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/CASE_INSENSITIVE_ORDER.java/1.3/Wed Sep 25 22:20:57 2002//
+/ConsCharset.java/1.1/Mon Jan 26 22:47:01 2009//
+/PR35482.java/1.1/Thu May 15 20:13:18 2008//
+/StringTest.java/1.6/Sun Jan 29 23:12:50 2006//
+/charAt.java/1.4/Fri Dec 11 11:28:26 1998//
+/compareTo.java/1.4/Fri Dec 11 11:28:27 1998//
+/decode.java/1.7/Mon Nov 7 21:50:58 2005//
+/equals.java/1.1/Tue Jul 30 21:12:54 2002//
+/getBytes.java/1.4/Sat Jan 18 22:43:42 2003//
+/getBytes13.java/1.3/Tue Jan 3 22:45:32 2006//
+/getBytes14.java/1.3/Sun Feb 16 11:55:19 2003//
+/hash.java/1.3/Fri Dec 11 11:28:29 1998//
+/indexOf.java/1.6/Mon Feb 18 10:50:20 2002//
+/new_String.java/1.4/Fri Dec 11 11:28:31 1998//
+/replaceAll.java/1.1/Mon Sep 1 18:50:21 2008//
+/split.java/1.2/Wed Mar 2 19:36:01 2011//
+/startsWith.java/1.4/Fri Dec 11 11:28:33 1998//
+/substring.java/1.4/Fri Dec 11 11:28:34 1998//
+/surrogate.java/1.1/Sat Feb 22 17:13:23 2003//
+/to.java/1.4/Fri Dec 11 11:28:35 1998//
+D
diff --git a/gnu/testlet/java/lang/String/CVS/Entries.Log b/gnu/testlet/java/lang/String/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/String/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/String/CVS/Repository b/gnu/testlet/java/lang/String/CVS/Repository
new file mode 100644
index 00000000..9386e272
--- /dev/null
+++ b/gnu/testlet/java/lang/String/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/String
diff --git a/gnu/testlet/java/lang/String/CVS/Root b/gnu/testlet/java/lang/String/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/String/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/String/ConsCharset.java b/gnu/testlet/java/lang/String/ConsCharset.java
new file mode 100644
index 00000000..8d820c2c
--- /dev/null
+++ b/gnu/testlet/java/lang/String/ConsCharset.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.6
+
+// Copyright (C) 2009 Red Hat, Inc.
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+
+public class ConsCharset
+ implements Testlet
+{
+ public void test (TestHarness h)
+ {
+ try
+ {
+ byte[] cp437Bytes = asByteArray(new int[] { 224, 226, 227, 228, 156 });
+ checkString(h, new String(cp437Bytes, Charset.forName("CP437")),
+ "\u03b1\u0393\u03c0\u03a3\u00a3");
+ }
+ catch (UnsupportedCharsetException e)
+ {
+ // Skip tests as CP437 is not required by the spec.
+ }
+
+ byte[] utf8Bytes = asByteArray(new int[] { 0xC3,0x9F,0xE2,0x85,0x93,0xE2,0x82,0xAF,0xF0,0x90,0x85,0x80 });
+ checkString(h, new String(utf8Bytes, Charset.forName("UTF8")),
+ "\u00DF\u2153\u20AF\uD800\uDD40");
+
+ byte[] isoBytes = asByteArray(new int[] {0x48,0x65,0x6C,0x6C,0x6F,0x20,0x57,0x6F,0x72,0x6C,0x64,0x21});
+ checkString(h, new String(isoBytes, Charset.forName("ISO-8859-1")),
+ "Hello World!");
+ }
+
+ private void checkString(TestHarness h, String result, String expected)
+ {
+ for (int a = 0; a < result.length(); ++a)
+ {
+ h.check(result.charAt(a), expected.charAt(a));
+ }
+ h.check(result, expected);
+ }
+
+ private byte[] asByteArray(int[] ints)
+ {
+ byte[] bytes = new byte[ints.length];
+ for (int a = 0; a < ints.length; ++a)
+ bytes[a] = Integer.valueOf(ints[a]).byteValue();
+ return bytes;
+ }
+
+}
diff --git a/gnu/testlet/java/lang/String/PR35482.java b/gnu/testlet/java/lang/String/PR35482.java
new file mode 100644
index 00000000..1a986cb8
--- /dev/null
+++ b/gnu/testlet/java/lang/String/PR35482.java
@@ -0,0 +1,33 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2008 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class PR35482
+{
+ public void test(TestHarness harness)
+ {
+ harness.check("mbeanDescriptor".toLowerCase(), "mbeandescriptor");
+ }
+}
diff --git a/gnu/testlet/java/lang/String/StringTest.java b/gnu/testlet/java/lang/String/StringTest.java
new file mode 100644
index 00000000..00e5fde5
--- /dev/null
+++ b/gnu/testlet/java/lang/String/StringTest.java
@@ -0,0 +1,957 @@
+/* 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: JDK1.0
+
+package gnu.testlet.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class StringTest implements Testlet
+{
+
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ String str1 = new String();
+ harness.check(!( str1.length() != 0 ),
+ "test_Basics - 1");
+ harness.check(!( !str1.toString().equals("")),
+ "test_Basics - 2");
+
+ String str2 = new String("testing" );
+ harness.check(!( str2.length() != 7 ),
+ "test_Basics - 3");
+ harness.check(!( !str2.toString().equals("testing")),
+ "test_Basics - 4");
+
+
+ try {
+ String str = null;
+ String str3 = new String(str);
+ harness.fail("test_Basics - 5");
+ }
+ catch ( NullPointerException e ){}
+
+ String str4 = new String( new StringBuffer("hi there"));
+ harness.check(!( str4.length () != 8 ),
+ "test_Basics - 6");
+ harness.check(!( !str4.toString().equals("hi there")),
+ "test_Basics - 7");
+
+ char cdata[] = { 'h' , 'e' , 'l' , 'l' , 'o' };
+ String str5 = new String( cdata );
+ harness.check(!( str5.length () != 5 ),
+ "test_Basics - 8");
+ harness.check(!( !str5.toString().equals("hello")),
+ "test_Basics - 9");
+
+ try {
+ String str6 = new String( cdata , 0 , 10 );
+ harness.fail("test_Basics - 10");
+
+ }catch ( IndexOutOfBoundsException e )
+ {}
+
+ try {
+ byte [] barr = null;
+ String str7 = new String( barr , 0 , 10 );
+ harness.fail("test_Basics - 11");
+
+ }catch ( NullPointerException e )
+ {}
+
+ String str8 = new String( cdata , 0 , 4 );
+ harness.check(!( !str8.equals("hell")),
+ "test_Basics - 12");
+
+ try {
+ String str10 = new String( null , 10 );
+ harness.fail("test_Basics - 13");
+
+ }catch ( NullPointerException e )
+ {}
+
+ byte bdata[] = { (byte)'d',(byte)'a',(byte)'n',(byte)'c',(byte)'i',(byte)'n',(byte)'g' };
+ String str9 = new String(bdata , 10 );
+
+ char ch = str9.charAt(1);
+ int i = (ch & 0xff00 ) >> 8 ;
+ byte b = (byte)(ch & 0x00ff );
+
+ harness.check(!( i != 10 || b != 'a' ),
+ "test_Basics - 14");
+
+
+ byte bnull [] = null;
+ try {
+ String str11 = new String( bnull , 10 , 0 , 5);
+ harness.fail("test_Basics - 15");
+ }catch ( NullPointerException e ){}
+
+ try {
+ String str12 = new String( bdata , 10 , -1 , 3);
+ harness.fail("test_Basics - 16");
+ }catch ( IndexOutOfBoundsException e ){}
+
+
+ String str13 = new String( bdata , 10 , 1 , 1 );
+ i = (ch & 0xff00 ) >> 8 ;
+ b = (byte)(ch & 0x00ff );
+
+ harness.check(!( i != 10 || b != 'a' ),
+ "test_Basics - 17");
+
+ String str14 = new String( bdata);
+ harness.check(!( !str14.equals("dancing")),
+ "test_Basics - 18");
+
+ // EJWcr00461
+ byte arr[]={(byte)'a'};
+ String str15 = new String(arr,0x1234,0,1);
+ if (!str15.equals("\u3461")) {
+ harness.fail("test_Basics - 19");
+ }
+
+ // EJWcr00462
+ char carr[] = {'h','e','l','l','o'};
+ try {
+ String str16 = new String(carr, Integer.MAX_VALUE, 1);
+ harness.fail("test_Basics - 20");
+ } catch (IndexOutOfBoundsException e) {
+ }
+ byte arr2[]={(byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e'};
+ try {
+ String str17 = new String(arr2,0x1234,Integer.MAX_VALUE,1);
+ harness.fail("test_Basics - 21");
+ } catch (IndexOutOfBoundsException e) {
+ }
+
+ // this used to cause the vm to core dump (cr543)
+ String s = "\u0d3e";
+
+ }
+
+ public void test_toString()
+ {
+ String str1 = "218943289";
+
+ harness.check(!( !str1.toString().equals("218943289")),
+ "test_toString - 1");
+
+ harness.check(!( str1 != "218943289" ),
+ "test_toString - 2");
+
+ harness.check(!( !str1.equals(str1.toString())),
+ "test_toString - 3");
+ }
+
+ public void test_equals()
+ {
+ String str2 = new String("Nectar");
+
+ harness.check(!( str2.equals( null )),
+ "test_equals - 1");
+
+ harness.check(!( !str2.equals("Nectar")),
+ "test_equals - 2");
+
+ harness.check(!( str2.equals("")),
+ "test_equals - 3");
+
+ harness.check(!( str2.equals("nectar")),
+ "test_equals - 4");
+
+ harness.check(!( !"".equals("")),
+ "test_equals - 5");
+
+ }
+
+ public void test_hashCode()
+ {
+ String str1 = "hp";
+ String str2 = "Hewlett Packard Company";
+
+ int hash1 = 'h' * 31 + 'p';
+ int acthash1 = str1.hashCode();
+
+ harness.check(!( hash1 != acthash1 ),
+ "test_hashCode - 1");
+ }
+
+ public void test_length()
+ {
+ harness.check(!( "".length() != 0 ),
+ "test_length - 1");
+
+ harness.check(!( "pentium".length() != 7 ),
+ "test_length - 2");
+ }
+
+ public void test_charAt()
+ {
+ harness.check(!( "abcd".charAt(0) != 'a' || "abcd".charAt(1) != 'b' ||
+ "abcd".charAt(2) != 'c' || "abcd".charAt(3) != 'd' ),
+ "test_charAt - 1");
+
+ try {
+ char ch = "abcd".charAt(4);
+ harness.fail("test_charAt - 2");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ char ch = "abcd".charAt(-1);
+ harness.fail("test_charAt - 3");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+ }
+
+ public void test_getChars()
+ {
+ String str = "abcdefghijklmn";
+
+ try {
+ str.getChars(0 , 3 , null , 1 );
+ harness.fail("test_getChars - 1");
+ }catch ( NullPointerException e ){}
+
+ char dst[] = new char[5];
+
+ try {
+ str.getChars(-1 , 3 , dst , 1 );
+ harness.fail("test_getChars - 2");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(4 , 3 , dst , 1 );
+ harness.fail("test_getChars - 3");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 15 , dst , 1 );
+ harness.fail("test_getChars - 4");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 5 , dst , -1 );
+ harness.fail("test_getChars - 5");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 10 , dst , 1 );
+ harness.fail("test_getChars - 6");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ str.getChars(0,5,dst, 0 );
+ harness.check(!( dst[0] != 'a' || dst[1] != 'b' || dst[2] != 'c' ||
+ dst[3] != 'd' || dst[4] != 'e' ),
+ "test_getChars - 7");
+
+ dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = ' ';
+ str.getChars(0,0,dst, 0 );
+ harness.check(!( dst[0] != ' ' || dst[1] != ' ' || dst[2] != ' ' ||
+ dst[3] != ' ' || dst[4] != ' ' ),
+ "test_getChars - 9");
+
+ dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = ' ';
+ str.getChars(0,1,dst, 0 );
+ harness.check(!( dst[0] != 'a' || dst[1] != ' ' || dst[2] != ' ' ||
+ dst[3] != ' ' || dst[4] != ' ' ),
+ "test_getChars - 10");
+ }
+
+
+ public void test_getBytes()
+ {
+ String str = "abcdefghijklmn";
+
+ try {
+ str.getBytes(0 , 3 , null , 1 );
+ harness.fail("test_getBytes - 1");
+ }catch ( NullPointerException e ){}
+
+ byte dst[] = new byte[5];
+
+ try {
+ str.getBytes(-1 , 3 , dst , 1 );
+ harness.fail("test_getBytes - 2");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getBytes(4 , 3 , dst , 1 );
+ harness.fail("test_getBytes - 3");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getBytes(1 , 15 , dst , 1 );
+ harness.fail("test_getBytes - 4");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getBytes(1 , 5 , dst , -1 );
+ harness.fail("test_getBytes - 5");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getBytes(1 , 10 , dst , 1 );
+ harness.fail("test_getBytes - 6");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ str.getBytes(0,5,dst, 0 );
+ harness.check(!( dst[0] != 'a' || dst[1] != 'b' || dst[2] != 'c' ||
+ dst[3] != 'd' || dst[4] != 'e' ),
+ "test_getBytes - 7");
+
+ byte [] dst1 = new byte[40];
+ dst1 = str.getBytes();
+ harness.check(!( dst1[0] != 'a' || dst1[1] != 'b' || dst1[2] != 'c' ||
+ dst1[3] != 'd' || dst1[4] != 'e' ),
+ "test_getBytes - 8");
+ }
+
+ public void test_toCharArray()
+ {
+ char[] charr = "abcde".toCharArray();
+
+ harness.check(!( charr[0] != 'a' || charr[1] != 'b' ||
+ charr[2] != 'c' || charr[3] != 'd' ||
+ charr[4] != 'e' ),
+ "test_toCharArray - 1");
+
+ char [] charr1 = "".toCharArray();
+
+ harness.check(!( charr1.length > 0 ),
+ "test_toCharArray - 2");
+ }
+
+ public void test_equalsIgnoreCase()
+ {
+ harness.check(!( "hi".equalsIgnoreCase(null)),
+ "test_equalsIgnoreCase - 1");
+
+ harness.check(!( !"hi".equalsIgnoreCase("HI")),
+ "test_equalsIgnoreCase - 2");
+
+ harness.check(!( "hi".equalsIgnoreCase("pq")),
+ "test_equalsIgnoreCase - 3");
+
+ harness.check(!( "hi".equalsIgnoreCase("HI ")),
+ "test_equalsIgnoreCase - 4");
+
+ }
+
+ public void test_compareTo()
+ {
+ try {
+ int res = "abc".compareTo(null);
+ harness.fail("test_compareTo - 1");
+ }
+ catch ( NullPointerException e ){}
+
+ harness.check(!( "abc".compareTo("bcdef") >= 0 ),
+ "test_compareTo - 2");
+
+ harness.check(!( "abc".compareTo("abc") != 0 ),
+ "test_compareTo - 3");
+
+ harness.check(!( "abc".compareTo("aabc") <= 0 ),
+ "test_compareTo - 4");
+
+ harness.check(!( "abcd".compareTo("abc") <= 0 ),
+ "test_compareTo - 5");
+
+ harness.check(!( "".compareTo("abc") >= 0 ),
+ "test_compareTo - 6");
+ }
+
+ public void test_regionMatches()
+ {
+ try {
+ boolean res = "abc".regionMatches(0 , null , 0 , 2);
+ harness.fail("test_regionMatches - 1");
+ }
+ catch ( NullPointerException e ){}
+
+ harness.check(!( "abcd".regionMatches(-1 , "abcd" , 0 , 2 )),
+ "test_regionMatches - 2");
+ harness.check(!( "abcd".regionMatches(0 , "abcd" , - 1 , 2 )),
+ "test_regionMatches - 3");
+ harness.check(!( "abcd".regionMatches(0 , "abcd" , 0 , 10 )),
+ "test_regionMatches - 4");
+ harness.check(!( "abcd".regionMatches(0 , "ab" , 0 , 3 )),
+ "test_regionMatches - 5");
+
+ harness.check(!( !"abcd".regionMatches(1 , "abc" , 1 , 2 )),
+ "test_regionMatches - 6");
+
+ harness.check(!( !"abcd".regionMatches(1 , "abc" , 1 , 0 )),
+ "test_regionMatches - 7");
+
+ harness.check(!( "abcd".regionMatches(1 , "ABC" , 1 , 2 )),
+ "test_regionMatches - 8");
+
+
+ try {
+ boolean res = "abc".regionMatches(true , 0 , null , 0 , 2);
+ harness.fail("test_regionMatches - 11");
+ }
+ catch ( NullPointerException e ){}
+
+ harness.check(!( "abcd".regionMatches(true , -1 , "abcd" , 0 , 2 )),
+ "test_regionMatches - 12");
+ harness.check(!( "abcd".regionMatches(true , 0 , "abcd" , - 1 , 2 )),
+ "test_regionMatches - 13");
+ harness.check(!( "abcd".regionMatches(true , 0 , "abcd" , 0 , 10 )),
+ "test_regionMatches - 14");
+ harness.check(!( "abcd".regionMatches(true , 0 , "ab" , 0 , 3 )),
+ "test_regionMatches - 15");
+
+ harness.check(!( !"abcd".regionMatches(true , 1 , "abc" , 1 , 2 )),
+ "test_regionMatches - 16");
+
+ harness.check(!( !"abcd".regionMatches(true , 1 , "abc" , 1 , 0 )),
+ "test_regionMatches - 17");
+
+ harness.check(!( !"abcd".regionMatches(true , 1 , "ABC" , 1 , 2 )),
+ "test_regionMatches - 18");
+ harness.check(!( "abcd".regionMatches(false , 1 , "ABC" , 1 , 2 )),
+ "test_regionMatches - 19");
+ }
+
+ public void test_startsWith()
+ {
+ harness.check(!( !"abcdef".startsWith( "abc")),
+ "test_startsWith - 1");
+
+ try {
+ boolean b = "abcdef".startsWith( null );
+ harness.fail("test_startsWith - 2");
+ } catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdef".startsWith( "ABC")),
+ "test_startsWith - 3");
+
+ harness.check(!( !"abcdef".startsWith( "")),
+ "test_startsWith - 4");
+
+ harness.check(!( "abc".startsWith( "abcd")),
+ "test_startsWith - 5");
+
+
+ harness.check(!( !"abcdef".startsWith( "abc" , 0 )),
+ "test_startsWith - 6");
+
+ try {
+ boolean b = "abcdef".startsWith( null ,0);
+ harness.fail("test_startsWith - 7");
+ } catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdef".startsWith( "ABC", 2)),
+ "test_startsWith - 8");
+
+ harness.check(!( !"abcdef".startsWith( "", 0 )),
+ "test_startsWith - 9");
+
+ harness.check(!( "abc".startsWith( "abcd" , 3)),
+ "test_startsWith - 10");
+
+ harness.check(!( "abc".startsWith( "abc" , 10)),
+ "test_startsWith - 11");
+ }
+
+ public void test_endsWith()
+ {
+ harness.check(!( !"abcdef".endsWith( "def")),
+ "test_endsWith - 1");
+
+ try {
+ boolean b = "abcdef".endsWith( null );
+ harness.fail("test_endsWith - 2");
+ } catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdef".endsWith( "DEF")),
+ "test_endsWith - 3");
+
+ harness.check(!( !"abcdef".endsWith( "")),
+ "test_endsWith - 4");
+
+ harness.check(!( "bcde".endsWith( "abcd")),
+ "test_endsWith - 5");
+
+ }
+
+ public void test_indexOf()
+ {
+ harness.check(!( "a".indexOf('a') != 0 ),
+ "test_indexOf - 1");
+
+ harness.check(!( "aabc".indexOf('c') != 3 ),
+ "test_indexOf - 2");
+
+ harness.check(!( "a".indexOf('c') != -1 ),
+ "test_indexOf - 3");
+
+ harness.check(!( "".indexOf('a') != -1 ),
+ "test_indexOf - 4");
+
+
+ harness.check(!( "abcde".indexOf('b', 3) != -1 ),
+ "test_indexOf - 5");
+ harness.check(!( "abcde".indexOf('b', 0) != 1 ),
+ "test_indexOf - 6");
+ harness.check(!( "abcdee".indexOf('e', 3) != 4 ),
+ "test_indexOf - 7");
+ harness.check(!( "abcdee".indexOf('e', 5) != 5 ),
+ "test_indexOf - 8");
+
+ harness.check(!( "abcdee".indexOf('e', -5) != 4 ),
+ "test_indexOf - 9");
+ harness.check(!( "abcdee".indexOf('e', 15) != -1 ),
+ "test_indexOf - 10");
+
+
+ harness.check(!( "abcdee".indexOf("babu") != -1 ),
+ "test_indexOf - 11");
+ try {
+ int x = "abcdee".indexOf(null);
+ harness.fail("test_indexOf - 12");
+ }catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdee".indexOf("") != 0 ),
+ "test_indexOf - 13");
+ harness.check(!( "abcdee".indexOf("ee") != 4 ),
+ "test_indexOf - 14");
+ harness.check(!( "abcbcbc".indexOf("cbc") != 2 ),
+ "test_indexOf - 15");
+
+ harness.check(!( "abcdee".indexOf("babu", 3) != -1 ),
+ "test_indexOf - 16");
+ try {
+ int x = "abcdee".indexOf(null,0);
+ harness.fail("test_indexOf - 17");
+ }catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdee".indexOf("", 0) != 0 ),
+ "test_indexOf - 18");
+ harness.check(!( "abcdee".indexOf("ee", 4) != 4 ),
+ "test_indexOf - 19");
+ harness.check(!( "abcbcbc".indexOf("cbc",4 ) != 4 ),
+ "test_indexOf - 20");
+ // EJWcr00463
+ if ( "hello \u5236 world".indexOf('\u5236') != 6 ) {
+ harness.fail("test_indexOf - 21");
+ }
+ if ( "hello \u0645 world".indexOf('\u0645') != 6 ) {
+ harness.fail("test_indexOf - 22");
+ }
+ if ( "hello \u07ff world".indexOf('\u07ff') != 6 ) {
+ harness.fail("test_indexOf - 23");
+ }
+ }
+
+ public void test_lastIndexOf()
+ {
+ harness.check(!( "a".lastIndexOf('a') != 0 ),
+ "test_lastIndexOf - 1");
+
+ harness.check(!( "aabc".lastIndexOf('c') != 3 ),
+ "test_lastIndexOf - 2");
+
+ harness.check(!( "a".lastIndexOf('c') != -1 ),
+ "test_lastIndexOf - 3");
+
+ harness.check(!( "".lastIndexOf('a') != -1 ),
+ "test_lastIndexOf - 4");
+
+
+ harness.check(!( "abcde".lastIndexOf('b', 0) != -1 ),
+ "test_lastIndexOf - 5");
+ harness.check(!( "abcde".lastIndexOf('b', 4) != 1 ),
+ "test_lastIndexOf - 6");
+ harness.check(!( "abcdee".lastIndexOf('e', 7) != 5 ),
+ "test_lastIndexOf - 7");
+ harness.check(!( "abcdee".lastIndexOf('e', 5) != 5 ),
+ "test_lastIndexOf - 8");
+
+ harness.check(!( "abcdee".lastIndexOf('e', -5) != -1 ),
+ "test_lastIndexOf - 9");
+ harness.check(!( "abcdee".lastIndexOf('e', 15) != 5 ),
+ "test_lastIndexOf - 10");
+
+
+ harness.check(!( "abcdee".lastIndexOf("babu") != -1 ),
+ "test_lastIndexOf - 11");
+ try {
+ int x = "abcdee".lastIndexOf(null);
+ harness.fail("test_lastIndexOf - 12");
+ }catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdee".lastIndexOf("") != 6 ),
+ "test_lastIndexOf - 13");
+ harness.check(!( "abcdee".lastIndexOf("ee") != 4 ),
+ "test_lastIndexOf - 14");
+ harness.check(!( "abcbcbc".lastIndexOf("cbc") != 4 ),
+ "test_lastIndexOf - 15");
+
+ harness.check(!( "abcdee".lastIndexOf("babu", 3) != -1 ),
+ "test_lastIndexOf - 16");
+
+ try {
+ int x = "abcdee".lastIndexOf(null,0);
+ harness.fail("test_lastIndexOf - 17");
+ }catch ( NullPointerException e ){}
+
+ harness.check(!( "abcdee".lastIndexOf("", 0) != 0 ),
+ "test_lastIndexOf - 18");
+ harness.check(!( "abcdee".lastIndexOf("ee", 4) != 4 ),
+ "test_lastIndexOf - 19");
+ harness.check(!( "abcbcbc".lastIndexOf("cbc",3 ) != 2 ),
+ "test_lastIndexOf - 20");
+ }
+
+ public void test_substring()
+ {
+ harness.check(!( !"unhappy".substring(2).equals("happy")),
+ "test_substring - 1");
+ harness.check(!( !"Harbison".substring(3).equals("bison")),
+ "test_substring - 2");
+ harness.check(!( !"emptiness".substring(9).equals("")),
+ "test_substring - 3");
+
+ try {
+ String str = "hi there".substring(-1);
+ harness.fail("test_substring - 4");
+ }catch( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = "hi there".substring(10);
+ harness.fail("test_substring - 5");
+ }catch( IndexOutOfBoundsException e ){}
+
+
+ harness.check(!( !"hamburger".substring(4,8).equals("urge")),
+ "test_substring - 6");
+ harness.check(!( !"smiles".substring(1,5).equals("mile")),
+ "test_substring - 7");
+ harness.check(!( !"emptiness".substring(2,2).equals("")),
+ "test_substring - 8");
+
+ try {
+ String str = "hi there".substring(-1, 3);
+ harness.fail("test_substring - 9");
+ }catch( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = "hi there".substring(0, 10);
+ harness.fail("test_substring - 10");
+ }catch( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = "hi there".substring(7, 6);
+ harness.fail("test_substring - 11");
+ }catch( IndexOutOfBoundsException e ){}
+
+
+ }
+
+ public void test_concat( )
+ {
+ try {
+ String str = "help".concat(null);
+ harness.fail("test_concat - 1");
+ }catch ( NullPointerException e){}
+
+ harness.check(!( !"help".concat("me").equals("helpme")),
+ "test_concat - 2");
+
+ harness.check(!( ! "to".concat("get").concat("her").equals("together")),
+ "test_concat - 3");
+
+ harness.check(!( "hi".concat("") != "hi"),
+ "test_concat - 4");
+
+ String str1 = "".concat("there");
+ harness.check(!( !str1.equals("there")),
+ "test_concat - 5");
+
+ // EJWcr00467
+ String str2 = new String();
+ try {
+ str2 = str2.concat("hello");
+ if (!str2.equals("hello")) {
+ harness.fail("test_concat - 7");
+ }
+ } catch (Exception e) {
+ harness.fail("test_concat - 6");
+ }
+ }
+
+
+ public void test_replace()
+ {
+ harness.check(!( !"mesquite in your cellar".replace('e' , 'o' ).equals(
+ "mosquito in your collar" )),
+ "test_replace - 1");
+
+ harness.check(!( !"the war of baronets".replace('r' , 'y' ).equals(
+ "the way of bayonets" )),
+ "test_replace - 2");
+
+ harness.check(!( !"sparring with a purple porpoise".replace('p' , 't' ).equals(
+ "starring with a turtle tortoise" )),
+ "test_replace - 3");
+
+ harness.check(!( !"JonL".replace('q' , 'x' ).equals("JonL" )),
+ "test_replace - 4");
+
+ harness.check(!( !"ppppppppppppp".replace('p' , 'p' ).equals("ppppppppppppp")),
+ "test_replace - 5");
+
+ harness.check(!( !"ppppppppppppp".replace('p' , '1' ).equals("1111111111111")),
+ "test_replace - 6");
+ harness.check(!( !"hp".replace('c' , 'd' ).equals("hp")),
+ "test_replace - 7");
+ harness.check(!( !"vmhere".replace('a' , 'd' ).equals("vmhere")),
+ "test_replace - 8");
+
+
+ }
+
+ public void test_toLowerCase()
+ {
+ harness.check(!( !"".toLowerCase().equals("")),
+ "test_toLowerCase - 1");
+
+ harness.check(!( !"French Fries".toLowerCase().equals("french fries")),
+ "test_toLowerCase - 2");
+
+
+ harness.check(!( !"SMALL-VM".toLowerCase().equals("small-vm")),
+ "test_toLowerCase - 3");
+ }
+
+ public void test_toUpperCase()
+ {
+ harness.check(!( !"".toUpperCase().equals("")),
+ "test_toUpperCase - 1");
+
+ harness.check(!( !"French Fries".toUpperCase().equals("FRENCH FRIES")),
+ "test_toUpperCase - 2");
+
+
+ harness.check(!( !"SMALL-VM".toUpperCase().equals("SMALL-VM")),
+ "test_toUpperCase - 3");
+
+ harness.check(!( !"small-jvm".toUpperCase().equals("SMALL-JVM")),
+ "test_toUpperCase - 4");
+ }
+
+
+ public void test_valueOf()
+ {
+ harness.check(!( !String.valueOf((Object)null).equals("null")),
+ "test_valueOf - 1");
+
+ Object obj = new Object();
+ harness.check(!( !String.valueOf(obj).equals(obj.toString())),
+ "test_valueOf - 2");
+
+
+ try {
+ char [] data = null;
+ String str = String.valueOf( data );
+ }catch ( NullPointerException e ){}
+
+ char [] data = { 'h' , 'e' , 'l' , 'l' , 'o' };
+ harness.check(!( !String.valueOf( data ).equals("hello")),
+ "test_valueOf - 3");
+
+ harness.check(!( !String.copyValueOf( data ).equals("hello")),
+ "test_valueOf - 3a");
+
+ try {
+ String str = String.valueOf(data , -1 , 4 );
+ harness.fail("test_valueOf - 4");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = String.valueOf(data , 1 , 5 );
+ harness.fail("test_valueOf - 5");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = String.valueOf(data , 1 , -5 );
+ harness.fail("test_valueOf - 6");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ String str = String.valueOf(null , 1 , 3 );
+ harness.fail("test_valueOf - 7");
+ }catch ( NullPointerException e ){}
+
+ harness.check(!( !String.valueOf(data , 2 , 2 ).equals("ll")),
+ "test_valueOf - 8");
+
+ harness.check(!( !String.copyValueOf(data , 2 , 2 ).equals("ll")),
+ "test_valueOf - 8a");
+
+ harness.check(!( !String.valueOf(true).equals("true")),
+ "test_valueOf - 9");
+
+ harness.check(!( !String.valueOf(false).equals("false")),
+ "test_valueOf - 10");
+
+ harness.check(!( !String.valueOf('c').equals("c")),
+ "test_valueOf - 11");
+
+ harness.check(!( !String.valueOf(' ').equals(" ")),
+ "test_valueOf - 12");
+
+ harness.check(!( !String.valueOf(234).equals("234")),
+ "test_valueOf - 13");
+
+ harness.check(!( !String.valueOf(234L).equals("234")),
+ "test_valueOf - 14");
+
+ harness.check(!( !String.valueOf(23.45f).equals("23.45")),
+ "test_valueOf - 15");
+
+ harness.check(!( !String.valueOf(23.4).equals("23.4")),
+ "test_valueOf - 16");
+ }
+
+ public void test_intern()
+ {
+ String hp = "hp";
+ String nullstr = "";
+ harness.check(!( "hp".intern() != hp.intern()),
+ "test_intern - 1");
+ harness.check(!( "pqr".intern() == hp.intern()),
+ "test_intern - 2");
+ harness.check(!( "".intern() != nullstr.intern()),
+ "test_intern - 3");
+ harness.check(!( "".intern() == hp.intern()),
+ "test_intern - 4");
+ hp = "";
+ harness.check(!( "".intern() != hp.intern()),
+ "test_intern - 5");
+ StringBuffer buff= new StringBuffer();
+ buff.append('a');
+ buff.append('b');
+ harness.check(!( "ab".intern() != buff.toString().intern()),
+ "test_intern - 6");
+ StringBuffer buff1 = new StringBuffer();
+ harness.check(!( "".intern() != buff1.toString().intern()),
+ "test_intern - 7");
+
+ }
+ public void test_trim()
+ {
+ String source = " laura";
+ String dest;
+
+ dest = source.trim();
+ if (!dest.equals("laura")) {
+ harness.fail("Error - test_trim - 1");
+ System.out.println("expected 'laura', got '" + dest + "'");
+ }
+
+ source = " laura";
+ dest = source.trim();
+ if (!dest.equals("laura")) {
+ harness.fail("Error - test_trim - 2");
+ System.out.println("expected 'laura', got '" + dest + "'");
+ }
+
+ source = " ";
+ dest = source.trim();
+ if (!dest.equals("")) {
+ harness.fail("Error - test_trim - 3");
+ System.out.println("expected '', got '" + dest + "'");
+ }
+ source = "laura";
+ dest = source.trim();
+ if (dest != source) {
+ harness.fail("Error - test_trim - 4");
+ System.out.println("Expected strings to be equal");
+ }
+ source = "l ";
+ dest = source.trim();
+ if (!dest.equals("l")) {
+ harness.fail("Error - test_trim - 5");
+ System.out.println("expected 'l', got '" + dest + "'");
+ }
+ source = " l";
+ dest = source.trim();
+ if (!dest.equals("l")) {
+ harness.fail("Error - test_trim - 6");
+ System.out.println("expected 'l', got '" + dest + "'");
+ }
+ source = " l ";
+ dest = source.trim();
+ if (!dest.equals("l")) {
+ harness.fail("Error - test_trim - 7");
+ System.out.println("expected 'l', got '" + dest + "'");
+ }
+ source = " l a u r a ";
+ dest = source.trim();
+ if (!dest.equals("l a u r a")) {
+ harness.fail("Error - test_trim - 8");
+ System.out.println("expected 'l a u r a', got '" + dest + "'");
+ }
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_equals();
+ test_hashCode();
+ test_length();
+ test_charAt();
+ test_getChars();
+ test_getBytes();
+ test_toCharArray();
+ test_equalsIgnoreCase();
+ test_compareTo();
+ test_regionMatches();
+ test_startsWith();
+ test_endsWith();
+ test_indexOf();
+ test_lastIndexOf();
+ test_substring();
+ test_concat();
+ test_replace();
+ test_toLowerCase();
+ test_toUpperCase();
+ test_valueOf();
+ test_intern();
+ test_trim();
+ }
+
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/String/charAt.java b/gnu/testlet/java/lang/String/charAt.java
new file mode 100644
index 00000000..50ac6f40
--- /dev/null
+++ b/gnu/testlet/java/lang/String/charAt.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class charAt implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String b = new String(" abc\tABC 123\t");
+
+ boolean ok;
+
+ ok = false;
+ try
+ {
+ b.charAt(b.length());
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ b.charAt(-1);
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/classInfo/CVS/Entries b/gnu/testlet/java/lang/String/classInfo/CVS/Entries
new file mode 100644
index 00000000..81137958
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 17 12:54:45 2012//
+/getInterfaces.java/1.1/Thu May 17 12:54:45 2012//
+/getModifiers.java/1.1/Thu May 17 12:54:45 2012//
+/getName.java/1.1/Thu May 17 12:54:45 2012//
+/getPackage.java/1.1/Thu May 17 12:54:45 2012//
+/getSimpleName.java/1.1/Thu May 17 12:54:45 2012//
+/getSuperclass.java/1.1/Thu May 17 12:54:45 2012//
+/isAssignableFrom.java/1.1/Thu May 17 12:54:45 2012//
+/isInstance.java/1.1/Thu May 17 12:54:45 2012//
+/isInterface.java/1.1/Thu May 17 12:54:45 2012//
+/isLocalClass.java/1.1/Thu May 17 12:54:45 2012//
+/isMemberClass.java/1.1/Thu May 17 12:54:45 2012//
+/isPrimitive.java/1.1/Thu May 17 12:54:45 2012//
+/isSynthetic.java/1.1/Thu May 17 12:54:45 2012//
+D
diff --git a/gnu/testlet/java/lang/String/classInfo/CVS/Repository b/gnu/testlet/java/lang/String/classInfo/CVS/Repository
new file mode 100644
index 00000000..945be254
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/String/classInfo
diff --git a/gnu/testlet/java/lang/String/classInfo/CVS/Root b/gnu/testlet/java/lang/String/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/String/classInfo/InstanceOf.java b/gnu/testlet/java/lang/String/classInfo/InstanceOf.java
new file mode 100644
index 00000000..1cf6bbe6
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.String
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.String
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class String
+ String o = new String("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof String);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getInterfaces.java b/gnu/testlet/java/lang/String/classInfo/getInterfaces.java
new file mode 100644
index 00000000..d336e993
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getInterfaces.java
@@ -0,0 +1,59 @@
+// Test for method java.lang.String.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.String;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(Comparable.class));
+ harness.check(interfaces.contains(CharSequence.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getModifiers.java b/gnu/testlet/java/lang/String/classInfo/getModifiers.java
new file mode 100644
index 00000000..064cc1b4
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.String.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getName.java b/gnu/testlet/java/lang/String/classInfo/getName.java
new file mode 100644
index 00000000..b3870246
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.String");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getPackage.java b/gnu/testlet/java/lang/String/classInfo/getPackage.java
new file mode 100644
index 00000000..52f8612b
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.String.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getSimpleName.java b/gnu/testlet/java/lang/String/classInfo/getSimpleName.java
new file mode 100644
index 00000000..453e2ef0
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "String");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/getSuperclass.java b/gnu/testlet/java/lang/String/classInfo/getSuperclass.java
new file mode 100644
index 00000000..ebec1b66
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.String.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Object");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/String/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..d27b93b2
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(String.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isInstance.java b/gnu/testlet/java/lang/String/classInfo/isInstance.java
new file mode 100644
index 00000000..96eace3f
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new String("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isInterface.java b/gnu/testlet/java/lang/String/classInfo/isInterface.java
new file mode 100644
index 00000000..d7d00746
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isLocalClass.java b/gnu/testlet/java/lang/String/classInfo/isLocalClass.java
new file mode 100644
index 00000000..6a8c9787
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isMemberClass.java b/gnu/testlet/java/lang/String/classInfo/isMemberClass.java
new file mode 100644
index 00000000..225c3262
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isPrimitive.java b/gnu/testlet/java/lang/String/classInfo/isPrimitive.java
new file mode 100644
index 00000000..62f1d63c
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/classInfo/isSynthetic.java b/gnu/testlet/java/lang/String/classInfo/isSynthetic.java
new file mode 100644
index 00000000..b20e5bcf
--- /dev/null
+++ b/gnu/testlet/java/lang/String/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.String.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.String.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.String;
+
+
+
+/**
+ * Test for method java.lang.String.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new String("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/String/compareTo.java b/gnu/testlet/java/lang/String/compareTo.java
new file mode 100644
index 00000000..3a0839ec
--- /dev/null
+++ b/gnu/testlet/java/lang/String/compareTo.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class compareTo implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ String a = new String();
+ String b = new String(" abc\tABC 123\t");
+ String d = new String(cstr);
+ String e = new String(cstr, 3, 3);
+
+ harness.check (d.compareTo(b.trim()), 0);
+ harness.check (d.compareTo(a), 11);
+ harness.check (d.compareTo(b), 65);
+ harness.check (d.compareTo(e), 88);
+ harness.check (d.toLowerCase().compareTo(d), 32);
+ harness.check (d.compareTo(d.substring(0, d.length() - 2)), 2);
+
+ harness.check (a.compareTo(d), -11);
+ harness.check (b.compareTo(d), -65);
+ harness.check (e.compareTo(d), -88);
+ harness.check (d.compareTo(d.toLowerCase()), -32);
+ harness.check (d.substring(0, d.length() - 2).compareTo(d), -2);
+
+ harness.check (b.charAt(7), 'C');
+ }
+}
diff --git a/gnu/testlet/java/lang/String/decode.java b/gnu/testlet/java/lang/String/decode.java
new file mode 100644
index 00000000..3b14d430
--- /dev/null
+++ b/gnu/testlet/java/lang/String/decode.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.UnsupportedEncodingException;
+
+public class decode implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ byte[] bstr = new byte [cstr.length];
+ for (int i = 0; i < cstr.length; ++i)
+ bstr[i] = (byte) cstr[i];
+
+ String a = new String(bstr);
+ String a_utf8 = "";
+ String b = new String(bstr, 3, 3);
+ String b_utf8 = "";
+ String c = "";
+ String d = "";
+
+ try
+ {
+ a_utf8 = new String(bstr, "UTF-8");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ }
+
+ try
+ {
+ b_utf8 = new String(bstr, 3, 3, "UTF-8");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ }
+
+ try
+ {
+ c = new String(bstr, "8859_1");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ }
+
+ try
+ {
+ d = new String(bstr, 3, 3, "8859_1");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ }
+
+ harness.check (a, "abc ABC 123");
+ harness.check (a_utf8, "abc ABC 123");
+ harness.check (b, " AB");
+ harness.check (b_utf8, " AB");
+ harness.check (c, "abc ABC 123");
+ harness.check (d, " AB");
+
+ boolean ok = false;
+ try
+ {
+ c = new String(bstr, "foobar8859_1");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ d = new String(bstr, 3, 3, "foobar8859_1");
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ harness.check (String.copyValueOf(cstr), "abc ABC 123");
+ harness.check (String.copyValueOf(cstr, 3, 3), " AB");
+
+ byte[] leWithBOM = new byte[]
+ {(byte)0xFF, (byte)0xFE, (byte)'a', (byte)0x00};
+ byte[] leWithoutBOM = new byte[]
+ {(byte)'a', (byte)0x00};
+ byte[] beWithBOM = new byte[]
+ {(byte)0xFE, (byte)0xFF, (byte)0x00, (byte)'a'};
+ byte[] beWithoutBOM = new byte[]
+ {(byte)0x00, (byte)'a'};
+
+ // UTF-16: Big endian assumed without BOM
+ harness.check(decodeTest(leWithBOM, "UTF-16", "a"));
+ harness.check(!decodeTest(leWithoutBOM, "UTF-16", "a"));
+ harness.check(decodeTest(beWithBOM, "UTF-16", "a"));
+ harness.check(decodeTest(beWithoutBOM, "UTF-16", "a"));
+
+ // UTF-16LE: BOM should not be used
+ harness.check(!decodeTest(leWithBOM, "UTF-16LE", "a"));
+ harness.check(decodeTest(leWithoutBOM, "UTF-16LE", "a"));
+ harness.check(!decodeTest(beWithBOM, "UTF-16LE", "a"));
+ harness.check(!decodeTest(beWithoutBOM, "UTF-16LE", "a"));
+
+ // UTF-16BE: BOM should not be used
+ harness.check(!decodeTest(leWithBOM, "UTF-16BE", "a"));
+ harness.check(!decodeTest(leWithoutBOM, "UTF-16BE", "a"));
+ harness.check(!decodeTest(beWithBOM, "UTF-16BE", "a"));
+ harness.check(decodeTest(beWithoutBOM, "UTF-16BE", "a"));
+
+ // UnicodeLittle: Little endian assumed without BOM
+ harness.check(decodeTest(leWithBOM, "UnicodeLittle", "a"));
+ harness.check(decodeTest(leWithoutBOM, "UnicodeLittle", "a"));
+ harness.check(!decodeTest(beWithBOM, "UnicodeLittle", "a"));
+ harness.check(!decodeTest(beWithoutBOM, "UnicodeLittle", "a"));
+ }
+
+ public boolean decodeTest (byte[] bytes, String encoding, String expected)
+ {
+ try
+ {
+ String s = new String(bytes, encoding);
+ return s.equals(expected);
+ }
+ catch (UnsupportedEncodingException ex)
+ {
+ return false;
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/lang/String/equals.java b/gnu/testlet/java/lang/String/equals.java
new file mode 100644
index 00000000..a3ede08f
--- /dev/null
+++ b/gnu/testlet/java/lang/String/equals.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software, Inc.
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Triggers old equals bug in Classpath when two Strings are different
+ * substrings of the same length of the same bigger String.
+ */
+public class equals implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String s1 = "Hello World";
+ String s2 = s1.substring(0,4);
+ String s3 = s1.substring(6,10);
+ harness.check(! s1.equals(s2));
+ harness.check(! s2.equals(s1));
+ harness.check(! s1.equals(s3));
+ harness.check(! s3.equals(s1));
+ harness.check(! s2.equals(s3));
+ harness.check(! s3.equals(s2));
+ }
+}
diff --git a/gnu/testlet/java/lang/String/getBytes.java b/gnu/testlet/java/lang/String/getBytes.java
new file mode 100644
index 00000000..dbb39b3d
--- /dev/null
+++ b/gnu/testlet/java/lang/String/getBytes.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1999 Cygnus Solutions
+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.UnsupportedEncodingException;
+
+public class getBytes implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String s = new String ("test me");
+ try
+ {
+ byte[] b = s.getBytes("8859_1");
+ harness.check (b.length, s.length());
+
+ b = s.substring(0, 4).getBytes("8859_1");
+ harness.check (b.length, 4);
+
+ b = s.substring(5, 7).getBytes("8859_1");
+ harness.check (b.length, 2);
+
+ s = new StringBuffer("abcdefghijklmnopqrstuvwxyz")
+ .append(Integer.toString(123456789))
+ .toString().substring(10,30);
+ b = s.getBytes("8859_1");
+ harness.check (b.length, 20);
+ b = s.getBytes("UTF8");
+ harness.check (b.length, 20);
+ }
+ catch (UnsupportedEncodingException _)
+ {
+ harness.check (false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/String/getBytes13.java b/gnu/testlet/java/lang/String/getBytes13.java
new file mode 100644
index 00000000..50e83475
--- /dev/null
+++ b/gnu/testlet/java/lang/String/getBytes13.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.UnsupportedEncodingException;
+
+public class getBytes13 implements Testlet
+{
+ protected static final byte[] ABC1 = new byte[] {97, 98, 99};
+ protected static final byte[] ABC2 = new byte[] {-2, -1, 0, 97, 0, 98, 0, 99};
+ protected static final byte[] ABC3 = new byte[] { 0, 97, 0, 98, 0, 99};
+ protected static final byte[] ABC4 = new byte[] {-1, -2, 97, 0, 98, 0, 99, 0};
+ protected static final byte[] ABC5 = new byte[] {97, 0, 98, 0, 99, 0};
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("getBytes13");
+
+ test1Encoding (harness, "ASCII", "abc", ABC1);
+ test1Encoding (harness, "Cp1252", "abc", ABC1);
+ test1Encoding (harness, "ISO8859_1", "abc", ABC1);
+ test1Encoding (harness, "UTF8", "abc", ABC1);
+ test1Encoding (harness, "UTF-16", "abc", ABC2);
+ test1Encoding (harness, "UnicodeBig", "abc", ABC2);
+ test1Encoding (harness, "UnicodeBigUnmarked", "abc", ABC3);
+ test1Encoding (harness, "UnicodeLittle", "abc", ABC4);
+ test1Encoding (harness, "UnicodeLittleUnmarked", "abc", ABC5);
+ }
+
+
+ protected void
+ test1Encoding (TestHarness h, String encoding, String s, byte[] ba)
+ {
+ String signature = "String.getBytes(\""+encoding+"\")";
+ try
+ {
+ byte[] theBytes = s.getBytes(encoding);
+ boolean result = areEqual(theBytes, ba);
+ h.check (result, signature);
+ if (! result)
+ {
+ dumpArray(h, "Got : ", theBytes);
+ dumpArray(h, "Expected: ", ba);
+ }
+ }
+ catch (UnsupportedEncodingException x)
+ {
+ h.debug (x);
+ h.fail (signature);
+ }
+ }
+
+ static void dumpArray(TestHarness h, String prefix, byte[] a)
+ {
+ StringBuffer result = new StringBuffer(prefix);
+ for (int i = 0; i < a.length; ++i)
+ {
+ if (i > 0)
+ result.append(' ');
+ result.append(a[i]);
+ }
+ h.debug(result.toString());
+ }
+
+ static boolean areEqual (byte[] a, byte[] b)
+ {
+ if (a == null || b == null)
+ return false;
+ if (a.length != b.length)
+ return false;
+ for (int i = 0; i < a.length; i++)
+ if (a[i] != b[i])
+ return false;
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/lang/String/getBytes14.java b/gnu/testlet/java/lang/String/getBytes14.java
new file mode 100644
index 00000000..1ff4d324
--- /dev/null
+++ b/gnu/testlet/java/lang/String/getBytes14.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.4
+// Uses: getBytes13
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getBytes14 extends getBytes13 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("getBytes14");
+
+ // New canonical names in 1.4
+ test1Encoding (harness, "US-ASCII", "abc", ABC1);
+ test1Encoding (harness, "windows-1252", "abc", ABC1);
+ test1Encoding (harness, "ISO-8859-1", "abc", ABC1);
+ test1Encoding (harness, "ISO-8859-15", "abc", ABC1);
+ test1Encoding (harness, "ISO8859_15", "abc", ABC1);
+ test1Encoding (harness, "UTF-8", "abc", ABC1);
+ test1Encoding (harness, "UTF-16BE", "abc", ABC3);
+ test1Encoding (harness, "UTF-16LE", "abc", ABC5);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/hash.java b/gnu/testlet/java/lang/String/hash.java
new file mode 100644
index 00000000..7ee22e09
--- /dev/null
+++ b/gnu/testlet/java/lang/String/hash.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class hash implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ String a = new String();
+ String b = new String(" abc\tABC 123\t");
+ String c = new String(new StringBuffer("abc\tABC 123"));
+
+ /* These results are for JDK 1.2; the hashCode algorithm changed
+ from JDK 1.1. */
+ harness.check (a.hashCode(), 0);
+ harness.check (b.hashCode(), -524164548);
+ harness.check (c.hashCode(), -822419571);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/indexOf.java b/gnu/testlet/java/lang/String/indexOf.java
new file mode 100644
index 00000000..33ee6295
--- /dev/null
+++ b/gnu/testlet/java/lang/String/indexOf.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 1999 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class indexOf implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ String b = new String(" abc\tABC 123\t");
+ String d = new String(cstr);
+
+ harness.check (b.indexOf(' '), 0);
+ harness.check (b.indexOf(' ', 1), 8);
+ harness.check (b.indexOf(' ', 10), -1);
+ harness.check (b.indexOf(' ', -1), 0);
+ harness.check (b.indexOf(' ', b.length()), -1);
+ harness.check (b.indexOf("abc"), 1);
+ harness.check (b.indexOf("abc", 1), 1);
+ harness.check (b.indexOf("abc", 10), -1);
+
+ harness.check ("".indexOf(""), 0);
+ harness.check (b.indexOf(""), 0);
+ harness.check ("".indexOf(b), -1);
+
+ harness.check (b.lastIndexOf(' '), 8);
+ harness.check (b.lastIndexOf(' ', 1), 0);
+ harness.check (b.lastIndexOf(' ', 10), 8);
+ harness.check (b.lastIndexOf(' ', -1), -1);
+ harness.check (b.lastIndexOf(' ', b.length()), 8);
+ harness.check (b.lastIndexOf("abc"), 1);
+ harness.check (b.lastIndexOf("abc", 1), 1);
+ harness.check (b.lastIndexOf("abc", 10), 1);
+
+ harness.check ("".lastIndexOf(""), 0);
+ harness.check (b.lastIndexOf(""), b.length());
+ harness.check ("".lastIndexOf(b), -1);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/new_String.java b/gnu/testlet/java/lang/String/new_String.java
new file mode 100644
index 00000000..a0872770
--- /dev/null
+++ b/gnu/testlet/java/lang/String/new_String.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class new_String implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ String a = new String();
+ String b = new String(" abc\tABC 123\t");
+ String c = new String(new StringBuffer("abc\tABC 123"));
+ String d = new String(cstr);
+ String e = new String(cstr, 3, 3);
+
+ harness.check (a, "");
+ harness.check (b, " abc ABC 123 ");
+ harness.check (c, "abc ABC 123");
+ harness.check (d, "abc ABC 123");
+ harness.check (e, " AB");
+ }
+}
diff --git a/gnu/testlet/java/lang/String/replaceAll.java b/gnu/testlet/java/lang/String/replaceAll.java
new file mode 100644
index 00000000..4fa678e8
--- /dev/null
+++ b/gnu/testlet/java/lang/String/replaceAll.java
@@ -0,0 +1,36 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2008 Andrew John Hughes
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class replaceAll
+ implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ /* Test for PRclasspath/36085 */
+ String result = "Test #".replaceAll("#","\\\\n");
+ harness.check(result, "Test \\n", result);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/split.java b/gnu/testlet/java/lang/String/split.java
new file mode 100644
index 00000000..8cf8b7dd
--- /dev/null
+++ b/gnu/testlet/java/lang/String/split.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Mark J Wielaard (mark@klomp.org)
+
+// 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.java.lang.String;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+
+/**
+ * Tests for split bug based on a test submitted by Amit Jain
+ * (amitrjain@hotmail.com) to GNU Classpath.
+ */
+public class split implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String fullPath = "test.txt";
+ String text
+ = "A\tB\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tC"
+ + "\n"
+ + "A\t\tB\t\t\t\t\t\t\t\t\tC\t"
+ + "\n";
+
+ String[] s1, s2;
+ try
+ {
+ StringReader sr = new StringReader(text);
+ BufferedReader r = new BufferedReader(sr);
+
+ String row1 = r.readLine();
+ s1 = row1.split("\t");
+ String row2 = r.readLine();
+ s2 = row2.split("\t");
+ r.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ return;
+ }
+
+ harness.check(s1.length, 18);
+ harness.check(s1[0], "A");
+ harness.check(s1[1], "B");
+ harness.check(s1[2], "");
+ harness.check(s1[3], "");
+ harness.check(s1[4], "");
+ harness.check(s1[5], "");
+ harness.check(s1[6], "");
+ harness.check(s1[7], "");
+ harness.check(s1[8], "");
+ harness.check(s1[9], "");
+ harness.check(s1[10], "");
+ harness.check(s1[11], "");
+ harness.check(s1[12], "");
+ harness.check(s1[13], "");
+ harness.check(s1[14], "");
+ harness.check(s1[15], "");
+ harness.check(s1[16], "");
+ harness.check(s1[17], "C");
+
+ // Note that trailing "empties" are discarded.
+ harness.check(s2.length, 12);
+ harness.check(s2[0], "A");
+ harness.check(s2[1], "");
+ harness.check(s2[2], "B");
+ harness.check(s2[3], "");
+ harness.check(s2[4], "");
+ harness.check(s2[5], "");
+ harness.check(s2[6], "");
+ harness.check(s2[7], "");
+ harness.check(s2[8], "");
+ harness.check(s2[9], "");
+ harness.check(s2[10], "");
+ harness.check(s2[11], "C");
+
+ String[] s3 = "hello, world".split("\uFFFF");
+ harness.check(s3.length, 1);
+ harness.check(s3[0], "hello, world");
+ }
+}
diff --git a/gnu/testlet/java/lang/String/startsWith.java b/gnu/testlet/java/lang/String/startsWith.java
new file mode 100644
index 00000000..3ea3a6f8
--- /dev/null
+++ b/gnu/testlet/java/lang/String/startsWith.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class startsWith implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ char[] cstr = { 'a', 'b', 'c', '\t', 'A', 'B', 'C', ' ', '1', '2', '3' };
+
+ String b = new String(" abc\tABC 123\t");
+ String d = new String(cstr);
+
+ harness.check (! b.endsWith("123"));
+ harness.check (d.endsWith("123"));
+ harness.check (! b.startsWith("abc"));
+ harness.check (d.startsWith("abc"));
+ harness.check (b.startsWith("abc", 1));
+ harness.check (! b.startsWith("abc", 2));
+ harness.check (! b.startsWith("abc", -1));
+ harness.check (! b.startsWith("abc", b.length()));
+ }
+}
diff --git a/gnu/testlet/java/lang/String/substring.java b/gnu/testlet/java/lang/String/substring.java
new file mode 100644
index 00000000..8ab774bd
--- /dev/null
+++ b/gnu/testlet/java/lang/String/substring.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class substring implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String b = new String(" abc\tABC 123\t");
+
+ harness.check (b.substring(4), " ABC 123 ");
+ harness.check (b.substring(4, b.length() - 5), " ABC");
+
+ boolean ok;
+
+ ok = false;
+ try
+ {
+ b.substring(-1);
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = true;
+ try
+ {
+ b.substring(b.length());
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = false;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ b.substring(4, -1);
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+
+ ok = false;
+ try
+ {
+ b.substring(4, b.length() + 1);
+ }
+ catch (StringIndexOutOfBoundsException ex)
+ {
+ ok = true;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/surrogate.java b/gnu/testlet/java/lang/String/surrogate.java
new file mode 100644
index 00000000..738a86fc
--- /dev/null
+++ b/gnu/testlet/java/lang/String/surrogate.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+// Based on input from James Clark (jjc@jclark.com)
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class surrogate implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ byte[] cs = {(byte)0xf0, (byte)0x90, (byte)0x8c, (byte)0x80};
+
+ int ch = 0x10300;
+ char[] v = new char[2];
+ v[0] = surrogate1(ch);
+ v[1] = surrogate2(ch);
+ String str = new String(v);
+ byte[] bs = str.getBytes("UTF-8");
+ harness.check(bs.length, cs.length);
+ for (int i = 0; i < bs.length; i++)
+ harness.check(bs[i], cs[i]);
+ }
+ catch (java.io.UnsupportedEncodingException _)
+ {
+ harness.check(false, "UTF-8 UnsupportedEncodingException");
+ }
+ }
+
+ static public char surrogate1(int c) {
+ return (char)(((c - 0x10000) >> 10) | 0xD800);
+ }
+
+ static public char surrogate2(int c) {
+ return (char)(((c - 0x10000) & 0x3FF) | 0xDC00);
+ }
+}
diff --git a/gnu/testlet/java/lang/String/to.java b/gnu/testlet/java/lang/String/to.java
new file mode 100644
index 00000000..d7a76671
--- /dev/null
+++ b/gnu/testlet/java/lang/String/to.java
@@ -0,0 +1,35 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.String;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class to implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String b = new String(" abc\tABC 123\t");
+
+ harness.check (b.toLowerCase(), " abc abc 123 ");
+ harness.check (b.toUpperCase(), " ABC ABC 123 ");
+ }
+}
diff --git a/gnu/testlet/java/lang/StringBuffer/CVS/Entries b/gnu/testlet/java/lang/StringBuffer/CVS/Entries
new file mode 100644
index 00000000..78863136
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/CVS/Entries
@@ -0,0 +1,4 @@
+/PR34840.java/1.1/Fri Feb 29 23:38:34 2008//
+/StringBufferTest.java/1.7/Sun Jan 29 23:12:50 2006//
+/plus.java/1.4/Thu Jun 3 14:31:08 2004//
+D
diff --git a/gnu/testlet/java/lang/StringBuffer/CVS/Entries.Log b/gnu/testlet/java/lang/StringBuffer/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/StringBuffer/CVS/Repository b/gnu/testlet/java/lang/StringBuffer/CVS/Repository
new file mode 100644
index 00000000..4f4a2d2b
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringBuffer
diff --git a/gnu/testlet/java/lang/StringBuffer/CVS/Root b/gnu/testlet/java/lang/StringBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringBuffer/PR34840.java b/gnu/testlet/java/lang/StringBuffer/PR34840.java
new file mode 100644
index 00000000..c87a42f2
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/PR34840.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2008 Andrew John Hughes
+
+// 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.java.lang.StringBuffer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class PR34840
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ StringBuffer sb = new StringBuffer();
+ sb.append("He");
+ sb.append((CharSequence) null,2,4);
+ sb.append("o, wor");
+ sb.append((CharSequence) null,2,3);
+ sb.append("d!");
+ harness.check(sb.toString(), "Hello, world!", "Appendable PR34840 check");
+ }
+
+}
diff --git a/gnu/testlet/java/lang/StringBuffer/StringBufferTest.java b/gnu/testlet/java/lang/StringBuffer/StringBufferTest.java
new file mode 100644
index 00000000..2e529d66
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/StringBufferTest.java
@@ -0,0 +1,461 @@
+/* Copyright (C) 1999 Hewlett-Packard Company
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ 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: JDK1.0
+
+package gnu.testlet.java.lang.StringBuffer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class StringBufferTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ try {
+ StringBuffer str0 = new StringBuffer(-10);
+ harness.fail("test_Basics - 0");
+ }catch ( NegativeArraySizeException e ){}
+
+ StringBuffer str1 = new StringBuffer();
+ harness.check(!( str1.length() != 0 || str1.capacity() != 16 ),
+ "test_Basics - 1");
+ harness.check(!( !str1.toString().equals("")),
+ "test_Basics - 2");
+
+ StringBuffer str2 = new StringBuffer( "testing" );
+ harness.check(!( str2.length() != 7 ),
+ "test_Basics - 3");
+ harness.check(!( !str2.toString().equals("testing")),
+ "test_Basics - 4");
+
+
+ try {
+ String str = null;
+ StringBuffer str3 = new StringBuffer(str);
+ /*
+ CYGNUS: nowhere does it say that we should
+ handle a null argument in StringBuffer(str).
+ In fact, the JCL implies that we should not.
+ But this leads to an asymmetry: `null + ""'
+ will fail, while `"" + null' will work. For
+ thaht reason, this test is commented out
+ here: it's not a failure.
+
+ harness.fail("test_Basics - 5");
+
+ */
+ }
+ catch ( NullPointerException e ){}
+
+ StringBuffer str4 = new StringBuffer("hi there");
+ harness.check(!( str4.length () != 8 || str4.capacity () != 24 ),
+ "test_Basics - 6");
+ harness.check(!( !str4.toString().equals("hi there")),
+ "test_Basics - 7");
+
+ StringBuffer strbuf = new StringBuffer(0);
+ harness.check(!( ! strbuf.append("hiii").toString().equals("hiii")),
+ "test_Basics - 8");
+
+ strbuf = new StringBuffer(10);
+ harness.check(!( strbuf.capacity() != 10 ),
+ "test_Basics - 9");
+
+
+ }
+
+ public void test_toString()
+ {
+ StringBuffer str1 = new StringBuffer("218943289");
+
+ harness.check(!( !str1.toString().equals("218943289")),
+ "test_toString - 1");
+
+ str1 = new StringBuffer();
+ harness.check(!( !str1.toString().equals("")),
+ "test_toString - 2");
+ }
+
+ public void test_length()
+ {
+ StringBuffer buf1 = new StringBuffer("");
+ StringBuffer buf2 = new StringBuffer("pentium");
+
+ harness.check(!( buf1.length() != 0 ),
+ "test_length - 1");
+
+ harness.check(!( buf2.length() != 7 ),
+ "test_length - 2");
+ }
+
+ public void test_capacity()
+ {
+ StringBuffer buf1 = new StringBuffer("");
+ StringBuffer buf2 = new StringBuffer("pentiumpentiumpentium");
+
+ harness.check(!( buf1.capacity() != 16 ),
+ "test_capacity - 1");
+
+ int cap = buf2.capacity();
+ harness.check(!( cap != 37 ),
+ "test_capacity - 2");
+
+
+ buf1.ensureCapacity( 17);
+
+ // CYGNUS: This is a test for JDK 1.2 conformance
+ harness.check(!( buf1.capacity() != 34 ),
+ "test_capacity - 3");
+ }
+
+ public void test_setLength()
+ {
+ StringBuffer strbuf = new StringBuffer("ba");
+
+ try {
+ strbuf.setLength( -10);
+ harness.fail("test_setLength - 1");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+
+ strbuf.setLength( 4 );
+ harness.check(!(strbuf.length() != 4 ),
+ "test_setLength - 2");
+
+ harness.check(!( strbuf.charAt(0 ) != 'b' || strbuf.charAt(1 ) != 'a' ||
+ strbuf.charAt(2 ) != '\u0000' || strbuf.charAt(3 ) != '\u0000' ),
+ "test_setLength - 3");
+ }
+
+ public void test_charAt()
+ {
+ harness.check(!( (new StringBuffer("abcd")).charAt(0) != 'a' ||
+ (new StringBuffer("abcd")).charAt(1) != 'b' ||
+ (new StringBuffer("abcd")).charAt(2) != 'c' ||
+ (new StringBuffer("abcd")).charAt(3) != 'd' ),
+
+ "test_charAt - 1");
+
+ try {
+ char ch = (new StringBuffer("abcd")).charAt(4);
+ harness.fail("test_charAt - 2");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ char ch = (new StringBuffer("abcd")).charAt(-1);
+ harness.fail("test_charAt - 3");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+ }
+
+ public void test_getChars()
+ {
+ StringBuffer str = new StringBuffer("abcdefghijklmn");
+
+ try {
+ str.getChars(0 , 3 , null , 1 );
+ harness.fail("test_getChars - 1");
+ }catch ( NullPointerException e ){}
+
+ char dst[] = new char[5];
+
+ try {
+ str.getChars(-1 , 3 , dst , 1 );
+ harness.fail("test_getChars - 2");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(4 , 3 , dst , 3 );
+ // CYGNUS: This is a test for JDK 1.2 conformance
+ harness.fail("test_getChars - 3");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 15 , dst , 1 );
+ harness.fail("test_getChars - 4");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 5 , dst , -1 );
+ harness.fail("test_getChars - 5");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ str.getChars(1 , 10 , dst , 1 );
+ harness.fail("test_getChars - 6");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ str.getChars(0,5,dst, 0 );
+ harness.check(!( dst[0] != 'a' || dst[1] != 'b' || dst[2] != 'c' ||
+ dst[3] != 'd' || dst[4] != 'e' ),
+ "test_getChars - 7");
+
+ dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = ' ';
+ str.getChars(0,0,dst, 0 );
+ harness.check(!( dst[0] != ' ' || dst[1] != ' ' || dst[2] != ' ' ||
+ dst[3] != ' ' || dst[4] != ' ' ),
+ "test_getChars - 9");
+
+ dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = ' ';
+ str.getChars(0,1,dst, 0 );
+ harness.check(!( dst[0] != 'a' || dst[1] != ' ' || dst[2] != ' ' ||
+ dst[3] != ' ' || dst[4] != ' ' ),
+ "test_getChars - 10");
+
+ dst = new char[25];
+ str.getChars(3,14,dst,12);
+ harness.check(dst[12], 'd', "getChars starting src offset 3");
+ harness.check(dst[22], 'n', "getChars ending dst offset 22");
+ }
+
+ public void test_append( )
+ {
+ StringBuffer str = new StringBuffer();
+ Object nullobj = null;
+ harness.check(!( !str.append( nullobj ).toString().equals("null")),
+ "test_append - 1");
+
+ harness.check(!( !str.append( new Integer(100) ).toString().equals("null100")),
+ "test_append - 2");
+
+ StringBuffer str1 = new StringBuffer("hi");
+ str1 = str1.append( " there" );
+ str1 = str1.append( " buddy");
+
+ harness.check(!( !str1.toString().equals("hi there buddy")),
+ "test_append - 2");
+
+ StringBuffer str2 = new StringBuffer();
+ str2 = str2.append("sdljfksdjfklsdjflksdjflkjsdlkfjlsdkjflksdjfklsd");
+ harness.check(!( !str2.toString().equals(
+ "sdljfksdjfklsdjflksdjflkjsdlkfjlsdkjflksdjfklsd")),
+ "test_append - 3");
+
+ char carr[] = null;
+ StringBuffer str3 = new StringBuffer();
+
+ try {
+ str3 = str3.append( carr );
+ harness.fail("test_append - 4");
+ }
+ catch ( NullPointerException e ){}
+
+ char carr1[] = {'h','i','t','h','e','r'};
+ StringBuffer str4 = new StringBuffer("!");
+ harness.check(!( !str4.append( carr1 ).toString().equals("!hither")),
+ "test_append - 5");
+
+
+ try {
+ str3 = str3.append( carr , 0 , 3);
+ harness.fail("test_append - 6");
+ }
+ catch ( NullPointerException e ){}
+ str3 = new StringBuffer();
+ try {
+ str3 = str3.append( carr1 , -1 , 3);
+ harness.fail("test_append - 6");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+ try {
+ str3 = str3.append ( carr1 , 0 , -3);
+ harness.fail("test_append - 6");
+ }
+ catch ( IndexOutOfBoundsException e ){}
+
+
+ StringBuffer str5 = new StringBuffer("!");
+ str5 = str5.append(carr1 , 2 , 3 );
+ harness.check(!( !str5.toString().equals("!the")),
+ "test_append - 7");
+
+ str5 = new StringBuffer();
+ str5 = str5.append( true );
+ harness.check(!( !str5.toString().equals("true")),
+ "test_append - 8");
+
+ str5 = str5.append( false );
+ harness.check(!( !str5.toString().equals("truefalse")),
+ "test_append - 9");
+
+ str5 = str5.append( 20);
+ harness.check(!( !str5.toString().equals("truefalse20")),
+ "test_append - 10");
+
+ str5 = new StringBuffer();
+ str5 = str5.append( 2034L );
+ harness.check(!( !str5.toString().equals("2034")),
+ "test_append - 11");
+
+ str5 = new StringBuffer();
+ str5 = str5.append( 34.45f );
+ harness.check(!( !str5.toString().equals("34.45")),
+ "test_append - 12");
+
+ str5 = new StringBuffer();
+ str5 = str5.append( 34.46 );
+ harness.check(!( !str5.toString().equals("34.46")),
+ "test_append - 13");
+ }
+
+ public void test_insert()
+ {
+ StringBuffer buf = new StringBuffer("1234567");
+ Object obj = null;
+ buf = buf.insert(5 , obj);
+ harness.check(!( !buf.toString().equals("12345null67")),
+ "test_insert - 1");
+
+ try {
+ buf = buf.insert(-1 , new Object());
+ harness.fail("test_insert - 2");
+
+ }catch ( IndexOutOfBoundsException e ){}
+
+ buf = new StringBuffer("1234567");
+ try {
+ buf = buf.insert(8 , new Object() );
+ harness.fail("test_insert - 3");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(4 , "inserted" );
+ harness.check(!( !buf.toString().equals("1234inserted567")),
+ "test_insert - 4");
+
+
+ buf = new StringBuffer("1234567");
+ char cdata[] = null;
+ try {
+ buf = buf.insert(4 , cdata );
+ harness.fail("test_insert - 5");
+ }catch ( NullPointerException e ) {}
+
+ cdata = new char[2];
+ try {
+ buf = buf.insert(-1 , cdata );
+ harness.fail("test_insert - 6");
+
+ }catch ( IndexOutOfBoundsException e ){}
+
+ try {
+ buf = buf.insert(8 , cdata );
+ harness.fail("test_insert - 7");
+ }catch ( IndexOutOfBoundsException e ){}
+
+ buf = new StringBuffer("1234567");
+ char cdata1[] = {'h','e','l','l','o'};
+ buf = buf.insert(4 , cdata1 );
+ harness.check(!( !buf.toString().equals("1234hello567")),
+ "test_insert - 8");
+
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(0 , true );
+ harness.check(!( !buf.toString().equals("true1234567")),
+ "test_insert - 9");
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(7 , false );
+ harness.check(!( !buf.toString().equals("1234567false")),
+ "test_insert - 10");
+
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(0 , 'c' );
+ harness.check(!( !buf.toString().equals("c1234567")),
+ "test_insert - 11");
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(7 , 'b' );
+ harness.check(!( !buf.toString().equals("1234567b")),
+ "test_insert - 12");
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(7 , 999 );
+ harness.check(!( !buf.toString().equals("1234567999")),
+ "test_insert - 13");
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(0, 99.9f );
+ harness.check(!( !buf.toString().equals("99.91234567")),
+ "test_insert - 14");
+
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(3, 34.46 );
+ harness.check(!( !buf.toString().equals("12334.464567")),
+ "test_insert - 15 "
+ + buf.toString());
+ buf = new StringBuffer("1234567");
+ buf = buf.insert(3, (long)1230 );
+ harness.check(!( !buf.toString().equals("12312304567")),
+ "test_insert - 16 "
+ + buf.toString());
+
+ }
+
+ public void test_reverse()
+ {
+ StringBuffer buff = new StringBuffer();
+ harness.check(!( !buff.reverse().toString().equals("")),
+ "test_reverse - 1");
+
+ buff = new StringBuffer("babu");
+ harness.check(!( !buff.reverse().toString().equals("ubab")),
+ "test_reverse - 2");
+
+ buff = new StringBuffer("malayalam");
+ harness.check(!( !buff.reverse().toString().equals("malayalam")),
+ "test_reverse - 3");
+
+ buff = new StringBuffer("cnbcbnc");
+ harness.check(!( !buff.reverse().toString().equals("cnbcbnc")),
+ "test_reverse - 4");
+
+ buff = new StringBuffer("vinod");
+ harness.check(!( !buff.reverse().toString().equals("doniv")),
+ "test_reverse - 5");
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_toString();
+ test_length();
+ test_capacity();
+ test_setLength();
+ test_charAt();
+ test_getChars();
+ test_append();
+ test_insert();
+ test_reverse();
+ }
+
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Entries b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Entries
new file mode 100644
index 00000000..81137958
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 17 12:54:45 2012//
+/getInterfaces.java/1.1/Thu May 17 12:54:45 2012//
+/getModifiers.java/1.1/Thu May 17 12:54:45 2012//
+/getName.java/1.1/Thu May 17 12:54:45 2012//
+/getPackage.java/1.1/Thu May 17 12:54:45 2012//
+/getSimpleName.java/1.1/Thu May 17 12:54:45 2012//
+/getSuperclass.java/1.1/Thu May 17 12:54:45 2012//
+/isAssignableFrom.java/1.1/Thu May 17 12:54:45 2012//
+/isInstance.java/1.1/Thu May 17 12:54:45 2012//
+/isInterface.java/1.1/Thu May 17 12:54:45 2012//
+/isLocalClass.java/1.1/Thu May 17 12:54:45 2012//
+/isMemberClass.java/1.1/Thu May 17 12:54:45 2012//
+/isPrimitive.java/1.1/Thu May 17 12:54:45 2012//
+/isSynthetic.java/1.1/Thu May 17 12:54:45 2012//
+D
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Repository b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Repository
new file mode 100644
index 00000000..2d81868d
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringBuffer/classInfo
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Root b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/InstanceOf.java b/gnu/testlet/java/lang/StringBuffer/classInfo/InstanceOf.java
new file mode 100644
index 00000000..99aad437
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.StringBuffer
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.StringBuffer
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringBuffer
+ StringBuffer o = new StringBuffer("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof StringBuffer);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getInterfaces.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getInterfaces.java
new file mode 100644
index 00000000..3ca5c164
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getInterfaces.java
@@ -0,0 +1,58 @@
+// Test for method java.lang.StringBuffer.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.StringBuffer;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(CharSequence.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getModifiers.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getModifiers.java
new file mode 100644
index 00000000..afaa06cd
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.StringBuffer.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getName.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getName.java
new file mode 100644
index 00000000..cfce0a1e
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.StringBuffer");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getPackage.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getPackage.java
new file mode 100644
index 00000000..97c8ef07
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.StringBuffer.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getSimpleName.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getSimpleName.java
new file mode 100644
index 00000000..cc2212b7
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "StringBuffer");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/getSuperclass.java b/gnu/testlet/java/lang/StringBuffer/classInfo/getSuperclass.java
new file mode 100644
index 00000000..62ce1fe8
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.StringBuffer.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.AbstractStringBuilder");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..ecd1baeb
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(StringBuffer.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isInstance.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isInstance.java
new file mode 100644
index 00000000..45f8fa9f
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new StringBuffer("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isInterface.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isInterface.java
new file mode 100644
index 00000000..5423957c
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isLocalClass.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isLocalClass.java
new file mode 100644
index 00000000..9443de36
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isMemberClass.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isMemberClass.java
new file mode 100644
index 00000000..99de5b45
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isPrimitive.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isPrimitive.java
new file mode 100644
index 00000000..42587425
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/classInfo/isSynthetic.java b/gnu/testlet/java/lang/StringBuffer/classInfo/isSynthetic.java
new file mode 100644
index 00000000..d52d067d
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuffer.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuffer.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuffer;
+
+
+
+/**
+ * Test for method java.lang.StringBuffer.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuffer("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuffer/plus.java b/gnu/testlet/java/lang/StringBuffer/plus.java
new file mode 100644
index 00000000..49574b0f
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuffer/plus.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1999, 2000, 2001 Cygnus Solutions
+
+// 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.java.lang.StringBuffer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+// This test uses the `+' operator to test StringBuffer.
+public class plus implements Testlet
+{
+ public String s (int x)
+ {
+ if (x == 0)
+ return null;
+ else
+ return "z";
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.check (s(0) + "", "null");
+
+ harness.check (s(1) + "", "z");
+
+ harness.check ("wxy" + s(0), "wxynull");
+ harness.check ("wxy" + s(1), "wxyz");
+
+ harness.check (5 + s(1), "5z");
+
+ harness.check (0.2 + "" + s(0) + 7, "0.2null7");
+ }
+}
diff --git a/gnu/testlet/java/lang/StringBuilder/CVS/Entries b/gnu/testlet/java/lang/StringBuilder/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/lang/StringBuilder/CVS/Entries.Log b/gnu/testlet/java/lang/StringBuilder/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/StringBuilder/CVS/Repository b/gnu/testlet/java/lang/StringBuilder/CVS/Repository
new file mode 100644
index 00000000..fea93793
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringBuilder
diff --git a/gnu/testlet/java/lang/StringBuilder/CVS/Root b/gnu/testlet/java/lang/StringBuilder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Entries b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Entries
new file mode 100644
index 00000000..81137958
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu May 17 12:54:45 2012//
+/getInterfaces.java/1.1/Thu May 17 12:54:45 2012//
+/getModifiers.java/1.1/Thu May 17 12:54:45 2012//
+/getName.java/1.1/Thu May 17 12:54:45 2012//
+/getPackage.java/1.1/Thu May 17 12:54:45 2012//
+/getSimpleName.java/1.1/Thu May 17 12:54:45 2012//
+/getSuperclass.java/1.1/Thu May 17 12:54:45 2012//
+/isAssignableFrom.java/1.1/Thu May 17 12:54:45 2012//
+/isInstance.java/1.1/Thu May 17 12:54:45 2012//
+/isInterface.java/1.1/Thu May 17 12:54:45 2012//
+/isLocalClass.java/1.1/Thu May 17 12:54:45 2012//
+/isMemberClass.java/1.1/Thu May 17 12:54:45 2012//
+/isPrimitive.java/1.1/Thu May 17 12:54:45 2012//
+/isSynthetic.java/1.1/Thu May 17 12:54:45 2012//
+D
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Repository b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Repository
new file mode 100644
index 00000000..9e49bb94
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringBuilder/classInfo
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Root b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/InstanceOf.java b/gnu/testlet/java/lang/StringBuilder/classInfo/InstanceOf.java
new file mode 100644
index 00000000..471965c6
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/InstanceOf.java
@@ -0,0 +1,55 @@
+// Test for instanceof operator applied to a class java.lang.StringBuilder
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.StringBuilder
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringBuilder
+ StringBuilder o = new StringBuilder("xyzzy");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof StringBuilder);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getInterfaces.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getInterfaces.java
new file mode 100644
index 00000000..5f948c6f
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getInterfaces.java
@@ -0,0 +1,58 @@
+// Test for method java.lang.StringBuilder.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.StringBuilder;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ harness.check(interfaces.contains(Serializable.class));
+ harness.check(interfaces.contains(CharSequence.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getModifiers.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getModifiers.java
new file mode 100644
index 00000000..ab10f794
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.lang.StringBuilder.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check( Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getName.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getName.java
new file mode 100644
index 00000000..1878298e
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.StringBuilder");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getPackage.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getPackage.java
new file mode 100644
index 00000000..5ad19ffb
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.StringBuilder.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getSimpleName.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getSimpleName.java
new file mode 100644
index 00000000..c2eb4bdf
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "StringBuilder");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/getSuperclass.java b/gnu/testlet/java/lang/StringBuilder/classInfo/getSuperclass.java
new file mode 100644
index 00000000..23ceb324
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.lang.StringBuilder.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.AbstractStringBuilder");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..70693a4b
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(StringBuilder.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isInstance.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isInstance.java
new file mode 100644
index 00000000..5719a826
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new StringBuilder("xyzzy")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isInterface.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isInterface.java
new file mode 100644
index 00000000..bfd169f3
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isLocalClass.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isLocalClass.java
new file mode 100644
index 00000000..eb1e4576
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isMemberClass.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isMemberClass.java
new file mode 100644
index 00000000..a55bb0f0
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isPrimitive.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isPrimitive.java
new file mode 100644
index 00000000..2f08894b
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringBuilder/classInfo/isSynthetic.java b/gnu/testlet/java/lang/StringBuilder/classInfo/isSynthetic.java
new file mode 100644
index 00000000..afbe1bac
--- /dev/null
+++ b/gnu/testlet/java/lang/StringBuilder/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.lang.StringBuilder.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.lang.StringBuilder.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringBuilder;
+
+
+
+/**
+ * Test for method java.lang.StringBuilder.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new StringBuilder("xyzzy");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries
new file mode 100644
index 00000000..2611b689
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Thu Dec 6 10:32:24 2012//
+/constructor.java/1.2/Thu Dec 6 10:32:24 2012//
+D
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries.Log b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Repository b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Repository
new file mode 100644
index 00000000..a47acb96
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringIndexOutOfBoundsException
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Root b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java
new file mode 100644
index 00000000..03f29b06
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.StringIndexOutOfBoundsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.StringIndexOutOfBoundsException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new StringIndexOutOfBoundsException("StringIndexOutOfBoundsException");
+ }
+ catch (StringIndexOutOfBoundsException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Entries b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Entries
new file mode 100644
index 00000000..1e9951af
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Thu Dec 6 10:32:24 2012//
+/getConstructors.java/1.1/Thu Dec 6 10:32:24 2012//
+/getDeclaredConstructors.java/1.1/Thu Dec 6 10:32:24 2012//
+/getDeclaredFields.java/1.1/Thu Dec 6 10:32:24 2012//
+/getDeclaredMethods.java/1.1/Thu Dec 6 10:32:24 2012//
+/getFields.java/1.1/Thu Dec 6 10:32:24 2012//
+/getInterfaces.java/1.2/Thu Dec 6 10:32:24 2012//
+/getMethods.java/1.1/Thu Dec 6 10:32:24 2012//
+/getModifiers.java/1.2/Thu Dec 6 10:32:24 2012//
+/getName.java/1.2/Thu Dec 6 10:32:24 2012//
+/getPackage.java/1.2/Thu Dec 6 10:32:24 2012//
+/getSimpleName.java/1.2/Thu Dec 6 10:32:24 2012//
+/getSuperclass.java/1.2/Thu Dec 6 10:32:24 2012//
+/isAnnotation.java/1.1/Thu Dec 6 10:32:24 2012//
+/isAnnotationPresent.java/1.1/Thu Dec 6 10:32:24 2012//
+/isAnonymousClass.java/1.1/Thu Dec 6 10:32:24 2012//
+/isArray.java/1.1/Thu Dec 6 10:32:24 2012//
+/isAssignableFrom.java/1.2/Thu Dec 6 10:32:24 2012//
+/isEnum.java/1.1/Thu Dec 6 10:32:24 2012//
+/isInstance.java/1.2/Thu Dec 6 10:32:24 2012//
+/isInterface.java/1.2/Thu Dec 6 10:32:24 2012//
+/isLocalClass.java/1.2/Thu Dec 6 10:32:24 2012//
+/isMemberClass.java/1.2/Thu Dec 6 10:32:24 2012//
+/isPrimitive.java/1.2/Thu Dec 6 10:32:24 2012//
+/isSynthetic.java/1.2/Thu Dec 6 10:32:24 2012//
+D
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Repository b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Repository
new file mode 100644
index 00000000..2e3a6247
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Root b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..fa48ea18
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.lang.StringIndexOutOfBoundsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.lang.IndexOutOfBoundsException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.StringIndexOutOfBoundsException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ StringIndexOutOfBoundsException o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof StringIndexOutOfBoundsException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IndexOutOfBoundsException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getConstructors.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getConstructors.java
new file mode 100644
index 00000000..7a76558e
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getConstructors.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException()", "java.lang.StringIndexOutOfBoundsException");
+ testedConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException(java.lang.String)", "java.lang.StringIndexOutOfBoundsException");
+ testedConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException(int)", "java.lang.StringIndexOutOfBoundsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException()", "java.lang.StringIndexOutOfBoundsException");
+ testedConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException(java.lang.String)", "java.lang.StringIndexOutOfBoundsException");
+ testedConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException(int)", "java.lang.StringIndexOutOfBoundsException");
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..00043239
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,108 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException()", "java.lang.StringIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException(java.lang.String)", "java.lang.StringIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.StringIndexOutOfBoundsException(int)", "java.lang.StringIndexOutOfBoundsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException()", "java.lang.StringIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException(java.lang.String)", "java.lang.StringIndexOutOfBoundsException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.StringIndexOutOfBoundsException(int)", "java.lang.StringIndexOutOfBoundsException");
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..9094d886
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.StringIndexOutOfBoundsException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..7ba3550b
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getFields.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getFields.java
new file mode 100644
index 00000000..3dd7cd75
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..1c5bd984
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getMethods.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getMethods.java
new file mode 100644
index 00000000..eef0d89a
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java
new file mode 100644
index 00000000..3ed7e2b3
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java
new file mode 100644
index 00000000..66ca3048
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.StringIndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java
new file mode 100644
index 00000000..1cece900
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..9da16e83
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "StringIndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..f6d92e1e
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IndexOutOfBoundsException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..f2b52f44
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..e9a1bbb1
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..0acdc7a0
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isArray.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isArray.java
new file mode 100644
index 00000000..3d606d14
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..9afee085
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(StringIndexOutOfBoundsException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isEnum.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isEnum.java
new file mode 100644
index 00000000..5a728c17
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java
new file mode 100644
index 00000000..60bc2041
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java
new file mode 100644
index 00000000..62c19781
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..ec1a0285
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..552b6567
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..97212180
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..b61ed3c4
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.StringIndexOutOfBoundsException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test for method java.lang.StringIndexOutOfBoundsException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class StringIndexOutOfBoundsException
+ final Object o = new StringIndexOutOfBoundsException("java.lang.StringIndexOutOfBoundsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java
new file mode 100644
index 00000000..d9ff73ba
--- /dev/null
+++ b/gnu/testlet/java/lang/StringIndexOutOfBoundsException/constructor.java
@@ -0,0 +1,73 @@
+// Test if instances of a class java.lang.StringIndexOutOfBoundsException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.StringIndexOutOfBoundsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.StringIndexOutOfBoundsException;
+
+
+
+/**
+ * Test if instances of a class java.lang.StringIndexOutOfBoundsException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringIndexOutOfBoundsException object1 = new StringIndexOutOfBoundsException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.StringIndexOutOfBoundsException");
+
+ StringIndexOutOfBoundsException object2 = new StringIndexOutOfBoundsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.StringIndexOutOfBoundsException: nothing happens");
+
+ StringIndexOutOfBoundsException object3 = new StringIndexOutOfBoundsException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.StringIndexOutOfBoundsException");
+
+ StringIndexOutOfBoundsException object4 = new StringIndexOutOfBoundsException(1);
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.StringIndexOutOfBoundsException: String index out of range: 1");
+
+ StringIndexOutOfBoundsException object5 = new StringIndexOutOfBoundsException(Integer.MAX_VALUE);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.StringIndexOutOfBoundsException: String index out of range: 2147483647");
+
+ StringIndexOutOfBoundsException object6 = new StringIndexOutOfBoundsException(Integer.MIN_VALUE);
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.StringIndexOutOfBoundsException: String index out of range: -2147483648");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/System/.cvsignore b/gnu/testlet/java/lang/System/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/System/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/System/CVS/Entries b/gnu/testlet/java/lang/System/CVS/Entries
new file mode 100644
index 00000000..d75be501
--- /dev/null
+++ b/gnu/testlet/java/lang/System/CVS/Entries
@@ -0,0 +1,6 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:36 1998//
+/arraycopy.java/1.7/Sun Mar 14 23:19:27 2004//
+/getProperty.java/1.1/Wed Apr 17 20:07:36 2002//
+/identityHashCode.java/1.1/Sat Oct 5 00:17:37 2002//
+/security.java/1.7/Fri Jul 24 11:07:43 2009//
+D
diff --git a/gnu/testlet/java/lang/System/CVS/Repository b/gnu/testlet/java/lang/System/CVS/Repository
new file mode 100644
index 00000000..f1599699
--- /dev/null
+++ b/gnu/testlet/java/lang/System/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/System
diff --git a/gnu/testlet/java/lang/System/CVS/Root b/gnu/testlet/java/lang/System/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/System/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/System/arraycopy.java b/gnu/testlet/java/lang/System/arraycopy.java
new file mode 100644
index 00000000..4b2b09dd
--- /dev/null
+++ b/gnu/testlet/java/lang/System/arraycopy.java
@@ -0,0 +1,178 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 2003 Red Hat, Inc.
+// Copyright (C) 2004 Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.System;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class arraycopy implements Testlet
+{
+ public void fill (int[] a)
+ {
+ for (int i = 0; i < a.length; ++i)
+ a[i] = i;
+ }
+
+ public void check (TestHarness harness, int[] expect, int[] result)
+ {
+ boolean ok = expect.length == result.length;
+ for (int i = 0; ok && i < expect.length; ++i)
+ if (expect[i] != result[i])
+ ok = false;
+ harness.check (ok);
+ }
+
+ public Object copy (Object from, int a, Object to, int b, int c)
+ {
+ try
+ {
+ System.arraycopy (from, a, to, b, c);
+ }
+ catch (ArrayStoreException xa)
+ {
+ return "caught ArrayStoreException";
+ }
+ catch (IndexOutOfBoundsException xb)
+ {
+ return "caught IndexOutOfBoundsException";
+ }
+ catch (NullPointerException xc)
+ {
+ return "caught NullPointerException";
+ }
+ catch (Throwable xd)
+ {
+ return "caught unexpected exception";
+ }
+
+ return null;
+ }
+
+ public void test (TestHarness harness)
+ {
+ int[] x, y;
+
+ x = new int[5];
+ y = new int[5];
+ fill (x);
+
+ harness.checkPoint("Copying integer array");
+ harness.check (copy (x, 0, y, 0, x.length), null);
+ int[] one = { 0, 1, 2, 3, 4 };
+ check (harness, y, one);
+
+ harness.check (copy (x, 1, y, 0, x.length - 1), null);
+ harness.check (copy (x, 0, y, x.length - 1, 1), null);
+ int[] two = { 1, 2, 3, 4, 0 };
+ check (harness, y, two);
+
+ harness.checkPoint("Incompatible arrays");
+
+ Object[] z = new Object[5];
+ harness.check (copy (x, 0, z, 0, x.length),
+ "caught ArrayStoreException");
+
+ harness.checkPoint("negative length");
+
+ harness.check (copy (x, 0, y, 0, -23),
+ "caught IndexOutOfBoundsException");
+
+ harness.checkPoint("null arrays");
+
+ harness.check (copy (null, 0, y, 0, -23),
+ "caught NullPointerException");
+
+ harness.check (copy (x, 0, null, 0, -23),
+ "caught NullPointerException");
+
+ harness.checkPoint("Non arrays");
+
+ String q = "metonymy";
+ harness.check (copy (q, 0, y, 0, 19),
+ "caught ArrayStoreException");
+
+ harness.check (copy (x, 0, q, 0, 19),
+ "caught ArrayStoreException");
+
+ harness.checkPoint("Incompatible arrays 2");
+
+ double[] v = new double[5];
+ harness.check (copy (x, 0, v, 0, 5),
+ "caught ArrayStoreException");
+
+ harness.checkPoint("Bad offset");
+
+ harness.check (copy (x, -1, y, 0, 1),
+ "caught IndexOutOfBoundsException");
+
+ harness.checkPoint("Incompatible arrays 3");
+
+ harness.check (copy (x, 0, z, 0, x.length),
+ "caught ArrayStoreException");
+
+ harness.checkPoint("Bad offset 2");
+
+ harness.check (copy (x, 0, y, -1, 1),
+ "caught IndexOutOfBoundsException");
+
+ harness.check (copy (x, 3, y, 0, 5),
+ "caught IndexOutOfBoundsException");
+
+ harness.check (copy (x, 0, y, 3, 5),
+ "caught IndexOutOfBoundsException");
+
+ // Regression test for missing check in libgcj.
+ harness.check (copy (x, 4, y, 4, Integer.MAX_VALUE),
+ "caught IndexOutOfBoundsException");
+
+ harness.checkPoint("Object casting");
+
+ Object[] w = new Object[5];
+ String[] ss = new String[5];
+ for (int i = 0; i < 5; ++i)
+ {
+ w[i] = i + "";
+ ss[i] = (i + 23) + "";
+ }
+ w[3] = new Integer (23);
+
+ harness.check (copy (w, 0, ss, 0, 5),
+ "caught ArrayStoreException");
+ harness.check (ss[0], "0");
+ harness.check (ss[1], "1");
+ harness.check (ss[2], "2");
+ harness.check (ss[3], "26");
+ harness.check (ss[4], "27");
+
+ harness.checkPoint("Different dimensions");
+ harness.check (copy (new Object[1][1], 0, new Object[1], 0, 1), null);
+ harness.check (copy (new int[1][1], 0, new Object[1], 0, 1), null);
+ Object[] objs = new Object[1];
+ objs[0] = new int[1];
+ harness.check (copy (objs, 0, new int[1][1], 0, 1), null);
+ harness.check (copy (new String[1][1], 0, new Object[1], 0, 1), null);
+ harness.check (copy (new int[1][1], 0, new int[1], 0, 1),
+ "caught ArrayStoreException");
+ harness.check (copy (new int[1], 0, new int[1][1], 0, 1),
+ "caught ArrayStoreException");
+ }
+}
diff --git a/gnu/testlet/java/lang/System/getProperty.java b/gnu/testlet/java/lang/System/getProperty.java
new file mode 100644
index 00000000..88fe5635
--- /dev/null
+++ b/gnu/testlet/java/lang/System/getProperty.java
@@ -0,0 +1,67 @@
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.System;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getProperty implements Testlet
+{
+
+ TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ getPropTest(null, "NullPointerException");
+ getPropTest("", "IllegalArgumentException");
+ getPropTest("__dummy_mauve_prop_not_set__", null);
+
+ // setProperty is JDK 1.2
+ System.setProperty("__dummy_mauve_prop_set__", "yes");
+ getPropTest("__dummy_mauve_prop_set__", "yes");
+ }
+
+ void getPropTest(String key, String expect)
+ {
+ String result;
+
+ try
+ {
+ result = System.getProperty(key);
+ }
+ catch (NullPointerException npe)
+ {
+ result = "NullPointerException";
+ }
+ catch (IllegalArgumentException iae)
+ {
+ result = "IllegalArgumentException";
+ }
+ catch (Throwable t)
+ {
+ result = t.toString();
+ }
+
+ harness.check(result, expect, "'"+key+"'");
+ }
+}
diff --git a/gnu/testlet/java/lang/System/identityHashCode.java b/gnu/testlet/java/lang/System/identityHashCode.java
new file mode 100644
index 00000000..42b73832
--- /dev/null
+++ b/gnu/testlet/java/lang/System/identityHashCode.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+//
+// 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.java.lang.System;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class identityHashCode implements Testlet
+{
+ public int hashCode()
+ {
+ return 42;
+ }
+
+ private int origHashCode()
+ {
+ return super.hashCode();
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Returns the same as hash code for any object that does not override it.
+ Object o = new Object();
+ harness.check(System.identityHashCode(o), o.hashCode());
+
+ // Exception also does not override hashCode
+ o = new Exception();
+ harness.check(System.identityHashCode(o), o.hashCode());
+
+ // When a class overrides it you can still get the original
+ identityHashCode ihc = new identityHashCode();
+ harness.check(System.identityHashCode(ihc), ihc.origHashCode());
+
+ // null has identityHashCode zero
+ harness.check(System.identityHashCode(null), 0);
+ }
+}
diff --git a/gnu/testlet/java/lang/System/security.java b/gnu/testlet/java/lang/System/security.java
new file mode 100644
index 00000000..f22fd3a1
--- /dev/null
+++ b/gnu/testlet/java/lang/System/security.java
@@ -0,0 +1,319 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.System;
+
+import java.security.Permission;
+import java.util.Properties;
+import java.util.PropertyPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ String not_a_property = "java.monkey.flump";
+ try {
+ harness.checkPoint("setup");
+
+ String library_name = "blah";
+ String library_path = "/path/to/libnothing.so";
+
+ String a_variable = "PATH";
+ String not_a_variable = "PITH";
+ harness.check(System.getenv(a_variable) != null);
+ harness.check(System.getenv(not_a_variable) == null);
+
+ Properties properties = System.getProperties();
+
+ String a_property = "java.vm.name";
+ harness.check(properties.containsKey(a_property));
+ harness.check(!properties.containsKey(not_a_property));
+
+ //exitVM.0 or set compare style to implies
+ Permission[] exitVM = new Permission[] {
+ new RuntimePermission("exitVM.0")};
+
+ Permission[] loadLibrary_name = new Permission[] {
+ new RuntimePermission("loadLibrary." + library_name)};
+ Permission[] loadLibrary_path = new Permission[] {
+ new RuntimePermission("loadLibrary." + library_path)};
+
+ Permission[] readVariable = new Permission[] {
+ new RuntimePermission("getenv." + a_variable)};
+ Permission[] readNonVariable = new Permission[] {
+ new RuntimePermission("getenv." + not_a_variable)};
+
+ Permission[] readWriteAllProperties = new Permission[] {
+ new PropertyPermission("*", "read,write")};
+
+ Permission[] readProperty = new Permission[] {
+ new PropertyPermission(a_property, "read")};
+ Permission[] readNonProperty = new Permission[] {
+ new PropertyPermission(not_a_property, "read")};
+
+ Permission[] setIO = new Permission[] {
+ new RuntimePermission("setIO")};
+
+ Permission[] writeProperty = new Permission[] {
+ new PropertyPermission(a_property, "write")};
+ Permission[] writeNonProperty = new Permission[] {
+ new PropertyPermission(not_a_property, "write")};
+
+ Permission[] setSecurityManager = new Permission[] {
+ new RuntimePermission("setSecurityManager")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.System-exit
+ harness.checkPoint("exit");
+ try {
+ sm.prepareHaltingChecks(exitVM);
+ System.exit(0);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-runFinalizersOnExit
+ harness.checkPoint("runFinalizersOnExit");
+ try {
+ sm.prepareChecks(exitVM);
+ System.runFinalizersOnExit(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-load
+ harness.checkPoint("load");
+ try {
+ sm.prepareHaltingChecks(loadLibrary_name);
+ System.load(library_name);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-loadLibrary
+ harness.checkPoint("loadLibrary");
+ try {
+ sm.prepareHaltingChecks(loadLibrary_path);
+ System.loadLibrary(library_path);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: TODO: java.lang.System-getenv()
+
+ // throwpoint: java.lang.System-getenv(String)
+ harness.checkPoint("getenv(String)");
+ try {
+ sm.prepareChecks(readVariable);
+ System.getenv(a_variable);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(readNonVariable);
+ System.getenv(not_a_variable);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-getProperties
+ harness.checkPoint("getProperties");
+ try {
+ sm.prepareChecks(readWriteAllProperties);
+ System.getProperties();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-setProperties
+ harness.checkPoint("setProperties");
+ try {
+ sm.prepareChecks(readWriteAllProperties);
+ System.setProperties(properties);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-getProperty(String)
+ harness.checkPoint("getProperty(String)");
+ try {
+ sm.prepareChecks(readProperty);
+ System.getProperty(a_property);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(readNonProperty);
+ System.getProperty(not_a_property);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-getProperty(String, String)
+ harness.checkPoint("getProperty(String, String)");
+ try {
+ sm.prepareChecks(readProperty);
+ System.getProperty(a_property, "quadrant");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(readNonProperty);
+ System.getProperty(not_a_property, "blade");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-setIn
+ harness.checkPoint("setIn");
+ try {
+ sm.prepareChecks(setIO);
+ System.setIn(System.in);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-setOut
+ harness.checkPoint("setOut");
+ try {
+ sm.prepareChecks(setIO);
+ System.setOut(System.out);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-setErr
+ harness.checkPoint("setErr");
+ try {
+ sm.prepareChecks(setIO);
+ System.setErr(System.err);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.System-setProperty
+ harness.checkPoint("setProperty");
+ try {
+ sm.prepareChecks(writeProperty);
+ System.setProperty(a_property, properties.getProperty(a_property));
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(writeNonProperty);
+ System.setProperty(not_a_property, "hello mum");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: TODO: java.lang.System-clearProperty
+
+ // throwpoint: java.lang.System-setSecurityManager
+ harness.checkPoint("setSecurityManager");
+ try {
+ sm.prepareChecks(setSecurityManager);
+ System.setSecurityManager(sm);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ System.clearProperty(not_a_property);
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Thread/CVS/Entries b/gnu/testlet/java/lang/Thread/CVS/Entries
new file mode 100644
index 00000000..56156384
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/CVS/Entries
@@ -0,0 +1,14 @@
+/contextClassLoader.java/1.3/Fri Nov 5 08:08:12 2004//
+/daemon.java/1.4/Thu Sep 25 13:55:52 2003//
+/getThreadGroup.java/1.2/Sat Oct 5 21:46:07 2002//
+/insecurity.java/1.4/Tue Feb 6 16:46:19 2007//
+/interrupt.java/1.3/Mon May 3 03:21:14 2004//
+/isAlive.java/1.2/Sat Oct 5 21:46:07 2002//
+/join.java/1.1/Sat Oct 5 17:04:51 2002//
+/name.java/1.1/Sat Oct 5 15:22:05 2002//
+/priority.java/1.2/Sat Oct 5 21:46:07 2002//
+/security.java/1.7/Wed Jun 25 14:51:51 2008//
+/security10.java/1.4/Fri Jul 24 11:07:43 2009//
+/sleep.java/1.4/Wed Oct 12 12:43:15 2005//
+/stop.java/1.2/Thu Sep 25 13:55:52 2003//
+D
diff --git a/gnu/testlet/java/lang/Thread/CVS/Repository b/gnu/testlet/java/lang/Thread/CVS/Repository
new file mode 100644
index 00000000..26e36be6
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/Thread
diff --git a/gnu/testlet/java/lang/Thread/CVS/Root b/gnu/testlet/java/lang/Thread/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/Thread/contextClassLoader.java b/gnu/testlet/java/lang/Thread/contextClassLoader.java
new file mode 100644
index 00000000..d1d902a7
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/contextClassLoader.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class contextClassLoader implements Testlet, Runnable
+{
+
+ // ClassLoader which should be returned by getContextClassLoader in run().
+ ClassLoader checkClassLoader;
+ String check_msg;
+ TestHarness h;
+
+ public void test (TestHarness harness)
+ {
+ h = harness;
+
+ Thread current = Thread.currentThread();
+ ClassLoader current_cl = current.getContextClassLoader();
+ try
+ {
+ ClassLoader system_cl = ClassLoader.getSystemClassLoader();
+ harness.check(current_cl, system_cl,
+ "Default contextClassLoader is System ClassLoader");
+
+ Thread t = new Thread(this, "CL-Test-Thread");
+ ClassLoader t_cl = t.getContextClassLoader();
+ harness.check(t_cl, current_cl, "New thread inherits classloader");
+ checkClassLoader = t_cl;
+ check_msg = "Run with default contextClassLoader";
+ t.start();
+ try
+ {
+ t.join();
+ }
+ catch (InterruptedException e)
+ {
+ throw new Error(e);
+ }
+
+ current.setContextClassLoader(null);
+ harness.check(current.getContextClassLoader() == null,
+ "null is a valid contextClassLoader");
+
+ t = new Thread(this, "CL-Test-Thread-2");
+ harness.check(t.getContextClassLoader(), null,
+ "New thread inherits null classloader");
+ checkClassLoader = null;
+ check_msg = "run with null classloader";
+ t.start();
+ try
+ {
+ t.join();
+ }
+ catch (InterruptedException e)
+ {
+ throw new Error(e);
+ }
+ }
+ finally
+ {
+ // And set back the current classloader
+ current.setContextClassLoader(current_cl);
+
+ harness.check(current.getContextClassLoader(), current_cl,
+ "Reset context classloader");
+ }
+ }
+
+ public void run()
+ {
+ Thread current = Thread.currentThread();
+ ClassLoader cl = current.getContextClassLoader();
+ h.debug("checkClassLoader: " + checkClassLoader);
+ h.debug(current + ": " + cl);
+ h.check(cl, checkClassLoader, check_msg);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/daemon.java b/gnu/testlet/java/lang/Thread/daemon.java
new file mode 100644
index 00000000..66d5d042
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/daemon.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class daemon extends Thread implements Testlet
+{
+ TestHarness harness;
+
+ boolean started = false;
+ boolean please_stop = false;
+
+ public void run()
+ {
+ synchronized(this)
+ {
+ started = true;
+ notify();
+
+ while (!please_stop)
+ {
+ try
+ {
+ wait();
+ } catch(InterruptedException ignored) { }
+ }
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ Thread current = Thread.currentThread();
+
+ boolean status = current.isDaemon();
+ boolean illegal_exception = false;
+ try
+ {
+ current.setDaemon(!status);
+ }
+ catch (IllegalThreadStateException itse)
+ {
+ illegal_exception = true;
+ }
+ harness.check(illegal_exception,
+ "Cannot change daemon state on current Thread");
+ harness.check(current.isDaemon() == status,
+ "Daemon status not changed when set on current Thread");
+
+ daemon t = new daemon();
+ harness.check(t.isDaemon() == status,
+ "Newly created thread gets daemon status of creator");
+
+ t.setDaemon(!status);
+ harness.check(t.isDaemon() != status,
+ "Can change daemon status on an unstarted Thread");
+ status = t.isDaemon();
+
+
+ // Make sure we have a running thread.
+ t.start();
+ synchronized(t)
+ {
+ while (!t.started)
+ try {
+ t.wait();
+ }
+ catch (InterruptedException ignored) {
+ }
+ }
+
+ harness.check(t.isDaemon() == status,
+ "Daemon status does not change when starting a Thread");
+
+ illegal_exception = false;
+ try
+ {
+ t.setDaemon(!status);
+ }
+ catch (IllegalThreadStateException itse)
+ {
+ illegal_exception = true;
+ }
+ harness.check(illegal_exception,
+ "Cannot change daemon state on a running Thread");
+ harness.check(t.isDaemon() == status,
+ "Daemon status not changed when set on a running Thread");
+ status = t.isDaemon();
+
+ // Make sure the thread exits
+ synchronized(t)
+ {
+ t.please_stop = true;
+ t.notify();
+ }
+ try {
+ t.join();
+ }
+ catch (InterruptedException ignored) {
+ }
+
+ // Note: the Sun Javadoc seems to contradict itself on whether you can
+ // change daemon state on an exitted Thread. The observed behaviour
+ // (on JDK 1.3.1 & 1.4.0) is that it works. (But why would you bother?)
+ illegal_exception = false;
+ try
+ {
+ t.setDaemon(!status);
+ }
+ catch (IllegalThreadStateException itse)
+ {
+ illegal_exception = true;
+ }
+ harness.check(!illegal_exception,
+ "Can change daemon state on an exitted Thread");
+ harness.check(t.isDaemon() != status,
+ "Daemon status changed when set on an exitted Thread");
+ }
+}
diff --git a/gnu/testlet/java/lang/Thread/getThreadGroup.java b/gnu/testlet/java/lang/Thread/getThreadGroup.java
new file mode 100644
index 00000000..f0dce841
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/getThreadGroup.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class getThreadGroup implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Thread current = Thread.currentThread();
+ harness.check(current.getThreadGroup() != null,
+ "Every Thread has a ThreadGroup");
+
+ // By default the group is the same as the one from current thread
+ Thread t = new Thread();
+ harness.check(t.getThreadGroup(), current.getThreadGroup());
+
+ // After the Thread dies the group should be null
+ t.start();
+ try { t.join(); } catch (InterruptedException ignored) { }
+ harness.check(t.getThreadGroup(), null);
+
+ // Explicitly set the ThreadGroup
+ ThreadGroup g = new ThreadGroup("Test-Group");
+ t = new Thread(g, "Test-Thread");
+ harness.check(t.getThreadGroup(), g);
+
+ // Null Thread group means same as the current Thread
+ t = new Thread((ThreadGroup) null, "Test-Thread-2");
+ harness.check(t.getThreadGroup(), current.getThreadGroup());
+
+ // Except when a Security Manager is set, but we don't want to set
+ // that here because that might interfere with other tests...
+
+ }
+}
diff --git a/gnu/testlet/java/lang/Thread/insecurity.java b/gnu/testlet/java/lang/Thread/insecurity.java
new file mode 100644
index 00000000..29f684a9
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/insecurity.java
@@ -0,0 +1,309 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.Thread;
+
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class insecurity implements Testlet
+{
+ private static Permission[] noChecks = new Permission[0];
+
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+
+ // The default SecurityManager.checkAccess(Thread) method should
+ // only check permissions when the thread in question is a system
+ // thread. System threads are those whose parent is the system
+ // threadgroup, which is the threadgroup with no parent.
+ //
+ // The default SecurityManager.checkAccess(ThreadGroup) method
+ // should only check permissions when the threadgroup in
+ // question is the system threadgroup.
+ ThreadGroup systemGroup = Thread.currentThread().getThreadGroup();
+ while (systemGroup.getParent() != null)
+ systemGroup = systemGroup.getParent();
+
+ ThreadGroup nonSystemGroup = new ThreadGroup(systemGroup, "test group");
+
+ Thread testThread = new Thread(nonSystemGroup, "test thread");
+ harness.check(testThread.getThreadGroup().getParent() != null);
+
+ Thread modifyGroupThread = new Thread(
+ nonSystemGroup, new SysTestRunner(harness, sm));
+ harness.check(modifyGroupThread.getThreadGroup().getParent() != null);
+
+ Throwable threadDeath = new ThreadDeath();
+ Throwable notThreadDeath = new ClassNotFoundException();
+
+ Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ }
+ };
+
+ Permission[] stopThread = new Permission[] {
+ new RuntimePermission("stopThread")};
+
+ try {
+ sm.install();
+
+ // corresponding throwpoint: java.lang.Thread-checkAccess
+ harness.checkPoint("checkAccess");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.checkAccess();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-interrupt
+ harness.checkPoint("interrupt");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.interrupt();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-suspend
+ harness.checkPoint("suspend");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.suspend();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-resume
+ harness.checkPoint("resume");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.resume();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-setPriority
+ harness.checkPoint("setPriority");
+ try {
+ int priority = testThread.getPriority();
+ sm.prepareChecks(noChecks);
+ testThread.setPriority(priority);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-setName
+ harness.checkPoint("setName");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.setName("a test thread");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-setDaemon
+ harness.checkPoint("setDaemon");
+ try {
+ sm.prepareChecks(noChecks);
+ testThread.setDaemon(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-stop()
+ harness.checkPoint("stop()");
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-stop(Throwable)
+ harness.checkPoint("stop(Throwable)");
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop(threadDeath);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop(notThreadDeath);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // The noChecksGroup tests get run in a system thread.
+ modifyGroupThread.start();
+ modifyGroupThread.join();
+
+ // corresponding throwpoints: java.lang.Thread-Thread(ThreadGroup, ...)
+ harness.checkPoint("ThreadGroup constructors");
+ for (int i = 1; i <= 4; i++) {
+ try {
+ sm.prepareChecks(noChecks);
+ switch (i) {
+ case 1:
+ new Thread(nonSystemGroup, runnable);
+ break;
+ case 2:
+ new Thread(nonSystemGroup, runnable, "test thread");
+ break;
+ case 3:
+ new Thread(nonSystemGroup, runnable, "test thread", 1024);
+ break;
+ case 4:
+ new Thread(nonSystemGroup, "test thread");
+ break;
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ // Stuff for the modifyThreadGroup tests
+ public static class SysTestRunner implements Runnable
+ {
+ private TestHarness harness;
+ private TestSecurityManager sm;
+
+ private static Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ }
+ };
+
+ public SysTestRunner(TestHarness harness, TestSecurityManager sm)
+ {
+ this.harness = harness;
+ this.sm = sm;
+ }
+
+ public void run()
+ {
+ try {
+ // corresponding throwpoint: java.lang.Thread-enumerate
+ harness.checkPoint("enumerate");
+ try {
+ sm.prepareChecks(noChecks);
+ Thread.enumerate(new Thread[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.Thread-Thread()
+ // corresponding throwpoint: java.lang.Thread-Thread(Runnable)
+ // corresponding throwpoint: java.lang.Thread-Thread(String)
+ // corresponding throwpoint: java.lang.Thread-Thread(Runnable, String)
+ harness.checkPoint("basic constructors");
+ for (int i = 1; i <= 4; i++) {
+ try {
+ sm.prepareChecks(noChecks);
+ switch (i) {
+ case 1:
+ new Thread();
+ break;
+ case 2:
+ new Thread(runnable);
+ break;
+ case 3:
+ new Thread("test thread");
+ break;
+ case 4:
+ new Thread(runnable, "test thread");
+ break;
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Thread/interrupt.java b/gnu/testlet/java/lang/Thread/interrupt.java
new file mode 100644
index 00000000..d6d2e89b
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/interrupt.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class interrupt implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ Thread current = Thread.currentThread();
+
+ // Make sure interrupt flag is cleared
+ Thread.interrupted();
+
+ harness.check(!current.isInterrupted(),
+ "Thread.interrupted() makes isInterrupted() false");
+ harness.check(!Thread.interrupted(),
+ "Thread.interrupted() makes interrupted() false");
+
+ // Make sure interrupt flag is set
+ current.interrupt();
+
+ harness.check(current.isInterrupted(),
+ "interrupt() makes isInterrupted() true");
+ harness.check(current.isInterrupted(),
+ "isInterrupt() doesn't clear interrupt flag");
+ harness.check(Thread.interrupted(),
+ "interrupt() makes interrupted() true");
+
+ // Set interrupt flag again for wait test
+ current.interrupt();
+ boolean interrupted_exception = false;
+ try
+ {
+ Object o = new Object();
+ synchronized(o) {o.wait(50);}
+ }
+ catch(InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception,
+ "wait with interrupt flag throws InterruptedException");
+
+ harness.check(interrupted_exception && !Thread.interrupted(),
+ "InterruptedException in wait() clears interrupt flag");
+
+ // Set interrupt flag again for sleep test
+ current.interrupt();
+ interrupted_exception = false;
+ try
+ {
+ Thread.sleep(50);
+ }
+ catch(InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception,
+ "sleep with interrupt flag throws InterruptedException");
+
+ harness.check(interrupted_exception && !Thread.interrupted(),
+ "InterruptedException in sleep() clears interrupt flag");
+
+ // Set interrupt flag again for join test
+ current.interrupt();
+ interrupted_exception = false;
+ try
+ {
+ current.join(50, 50);
+ }
+ catch(InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception,
+ "join with interrupt flag throws InterruptedException");
+
+ harness.check(interrupted_exception && !Thread.interrupted(),
+ "InterruptedException in join() clears interrupt flag");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/isAlive.java b/gnu/testlet/java/lang/Thread/isAlive.java
new file mode 100644
index 00000000..85d8b181
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/isAlive.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class isAlive extends Thread implements Testlet
+{
+
+ boolean started = false;
+ boolean please_stop = false;
+
+ public void run()
+ {
+ synchronized(this)
+ {
+ started = true;
+ notify();
+ while(!please_stop)
+ try { this.wait(); } catch (InterruptedException ignore) { }
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Thread current = Thread.currentThread();
+
+ boolean alive = current.isAlive();
+ harness.check(alive, "Current running thread is always alive");
+
+ isAlive t = new isAlive();
+ harness.check(!t.isAlive(), "Newly created threads are not alive");
+
+ t.start();
+ synchronized(t)
+ {
+ while (!t.started)
+ try { t.wait(); } catch (InterruptedException ignore) { }
+
+ harness.check(t.isAlive(), "Running threads are alive");
+
+ t.please_stop = true;
+ t.notify();
+ }
+ try { t.join(); } catch (InterruptedException ignore) { }
+
+ harness.check(!t.isAlive(), "Stopped threads are not alive");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/join.java b/gnu/testlet/java/lang/Thread/join.java
new file mode 100644
index 00000000..6b33087a
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/join.java
@@ -0,0 +1,168 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class join extends Thread implements Testlet
+{
+ static TestHarness harness;
+
+ // Set this to true if want this thread to notify and wait till please_stop
+ boolean please_wait = false;
+ boolean waiting = false;
+ boolean please_stop = false;
+
+ // Set to a value bigger then zero if you want the thread to sleep or work
+ // a bit before terminating.
+ int sleep = 0;
+ int work = 0;
+
+ // When set will join this Thread.
+ Thread please_join = null;
+
+ // Set when this Thread thinks it is done.
+ boolean done = false;
+
+ // Counter that is used to do some 'work'
+ long counter = 0;
+
+ public void run()
+ {
+ if (please_wait)
+ synchronized(this)
+ {
+ waiting = true;
+ this.notify();
+
+ while(!please_stop)
+ try
+ {
+ this.wait();
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("Interrupted wait in run()");
+ }
+ }
+
+ if (sleep > 0)
+ try
+ {
+ Thread.sleep(sleep);
+ }
+ catch (InterruptedException ignore)
+ {
+ harness.fail("Interrupted sleep in run()");
+ }
+
+ if (work > 0)
+ for (int i = 0; i < work; i++)
+ counter += (sleep < 0 ? (work - 1) : work +1); // silly computation.
+
+ if (please_join != null)
+ try
+ {
+ please_join.join();
+ }
+ catch (InterruptedException ignore)
+ {
+ harness.fail("Interrupted join in run()");
+ }
+
+ done = true;
+ }
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+
+ try
+ {
+ Thread current = Thread.currentThread();
+ current.join(10,10);
+ harness.check(current.isAlive(), "Can join current Thread");
+
+ join t = new join();
+ t.join(10,10);
+ harness.check(!t.isAlive(), "Can join a non-started Thread");
+
+ t.start();
+ t.join();
+ harness.check(!t.isAlive(), "Can join a started Thread");
+ harness.check(t.done, "join() returns after Thread is done");
+
+ t.join();
+ harness.check(!t.isAlive(), "Can join a stopped Thread");
+
+ t = new join();
+ t.please_wait = true;
+ t.start();
+ synchronized(t)
+ {
+ while (!t.waiting)
+ t.wait();
+ }
+ t.join(10,10);
+ harness.check(t.waiting && !t.done, "Can join waiting Thread");
+ synchronized(t)
+ {
+ t.please_stop = true;
+ t.notify();
+ }
+ t.join();
+ harness.check(!t.isAlive(), "Can join wait/notify Thread");
+ harness.check(t.done, "join() returns after wait/notify Thread done");
+
+ t = new join();
+ t.work = 100000;
+ t.start();
+ t.join();
+ harness.check(t.done, "join() returns after Thread has worked");
+
+ t = new join();
+ t.sleep = 750;
+ t.start();
+ t.join();
+ harness.check(t.done, "join() returns after Thread has slept");
+
+ join t1 = new join();
+ t1.sleep = 750;
+ t1.work = 100000;
+ join t2 = new join();
+ t2.please_join = t1;
+ t1.start();
+ t2.start();
+ t1.join();
+ t2.join();
+ harness.check(t1.done && t2.done, "Multiple Threads can join()");
+
+ }
+ catch (InterruptedException ie)
+ {
+ harness.fail("Unexpected interrupt");
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/name.java b/gnu/testlet/java/lang/Thread/name.java
new file mode 100644
index 00000000..2f3eb2a7
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/name.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class name implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ Thread current = Thread.currentThread();
+
+ harness.check(current.getName() != null,
+ "Every Thread has a non-null name");
+
+ Thread t = new Thread("Test-Thread");
+ harness.check(t.getName().equals("Test-Thread"),
+ "Create thread with name");
+
+ t.setName("Test-Thread-NewName");
+ harness.check(t.getName().equals("Test-Thread-NewName"),
+ "Setting new for Thread");
+
+ t.start();
+ t.setName("Test-Thread-NewName-Started");
+ harness.check(t.getName().equals("Test-Thread-NewName-Started"),
+ "Setting new name for started Thread");
+
+ boolean null_exception = false;
+ try
+ {
+ new Thread((String)null);
+ }
+ catch (NullPointerException npe)
+ {
+ null_exception = true;
+ }
+ harness.check(null_exception, "Cannot create Thread with null name");
+
+ t = new Thread();
+ String name = t.getName();
+ harness.check(name != null, "New Thread has non-null name");
+
+ null_exception = false;
+ try
+ {
+ t.setName(null);
+ }
+ catch (NullPointerException npe)
+ {
+ null_exception = true;
+ }
+ harness.check(null_exception, "Cannot set Thread name to null");
+
+ harness.check(t.getName().equals(name),
+ "Setting Thread name to null doesn't change name");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/priority.java b/gnu/testlet/java/lang/Thread/priority.java
new file mode 100644
index 00000000..5c25e399
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/priority.java
@@ -0,0 +1,136 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class priority implements Testlet, Runnable
+{
+ private static TestHarness harness;
+
+ private void test_set_prio(Thread t, String test_name)
+ {
+ int prio = t.getPriority();
+ harness.check(prio >= Thread.MIN_PRIORITY,
+ test_name + " has at least MIN_PRIORITY");
+ harness.check(prio <= Thread.MAX_PRIORITY,
+ test_name + " has at at most MAX_PRIORITY");
+
+ // Remember old thread group priority
+ ThreadGroup tg = t.getThreadGroup();
+ harness.debug("ThreadGroup: " + tg);
+ int thread_group_prio = t.getThreadGroup().getMaxPriority();
+
+ t.getThreadGroup().setMaxPriority(Thread.MAX_PRIORITY);
+ for (int i = Thread.MIN_PRIORITY; i <= Thread.MAX_PRIORITY; i++)
+ {
+ t.setPriority(i);
+ harness.check(t.getPriority() == i,
+ test_name + " can be set to priority " + i);
+ }
+
+ t.getThreadGroup().setMaxPriority(Thread.NORM_PRIORITY);
+ t.setPriority(Thread.NORM_PRIORITY+1);
+ harness.check(t.getPriority() == Thread.NORM_PRIORITY,
+ test_name + " has thread group upper bound");
+
+ // Reset thread group priority to not disturb other tests.
+ t.getThreadGroup().setMaxPriority(thread_group_prio);
+
+ boolean illegal_exception = false;
+ try
+ {
+ t.setPriority(Thread.MIN_PRIORITY-1);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ illegal_exception = true;
+ }
+ harness.check(illegal_exception,
+ test_name + " cannot set prio to less then MIN_PRIORITY");
+ harness.check(t.getPriority() == Thread.NORM_PRIORITY,
+ test_name + " prio doesn't change when set to illegal min");
+
+ illegal_exception = false;
+ try
+ {
+ t.setPriority(Thread.MAX_PRIORITY+1);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ illegal_exception = true;
+ }
+ harness.check(illegal_exception,
+ test_name + " cannot set prio to more then MAX_PRIORITY");
+ harness.check(t.getPriority() == Thread.NORM_PRIORITY,
+ test_name + " prio doesn't change when set to illegal max");
+ }
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+
+ harness.check(10, Thread.MAX_PRIORITY);
+ harness.check(1, Thread.MIN_PRIORITY);
+ harness.check(5, Thread.NORM_PRIORITY);
+
+ Thread current = Thread.currentThread();
+ test_set_prio(current, "Every Thread");
+
+ int prio = current.getPriority();
+ Thread t = new Thread(p);
+ harness.check(t.getPriority() == prio,
+ "New Thread inherits priority");
+ test_set_prio(t, "New Thread");
+
+ prio = t.getPriority();
+ t.start();
+ harness.check(t.getPriority() == prio,
+ "Started Thread does not change priority");
+ test_set_prio(t, "Started Thread");
+
+ synchronized(p) {
+ p.please_stop = true;
+ p.notify();
+ }
+
+ try { t.join(); } catch(InterruptedException ie) { }
+ harness.check(t.getPriority() == prio,
+ "Stopped Thread does not change priority");
+
+ // What is the expected behavior of setPriority on a stopped Thread?
+ }
+
+ static priority p = new priority();
+ boolean please_stop = false;
+ public void run()
+ {
+ synchronized(p)
+ {
+ while(!please_stop)
+ try { p.wait(); } catch(InterruptedException ie) { }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/security.java b/gnu/testlet/java/lang/Thread/security.java
new file mode 100644
index 00000000..400fe5c1
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/security.java
@@ -0,0 +1,414 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.Thread;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ private static Permission[] modifyThread = new Permission[] {
+ new RuntimePermission("modifyThread")};
+
+ private static Permission[] modifyThreadGroup = new Permission[] {
+ new RuntimePermission("modifyThreadGroup")};
+
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ // we need a different classloader for some of the checks to occur.
+ Class testClass = new URLClassLoader(new URL[] {
+ new File(harness.getBuildDirectory()).toURL()}, null).loadClass(
+ getClass().getName());
+ harness.check(getClass().getClassLoader() != testClass.getClassLoader());
+
+ Method getContextClassLoaderTest = testClass.getMethod(
+ "testGetContextClassLoader", new Class[] {Thread.class});
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+
+ // The default SecurityManager.checkAccess(Thread) method only
+ // checks permissions when the thread in question is a system
+ // thread. System threads are those whose parent is the system
+ // threadgroup, which is the threadgroup with no parent.
+ //
+ // The default SecurityManager.checkAccess(ThreadGroup) method
+ // only checks permissions when the threadgroup in question is
+ // the system threadgroup.
+ ThreadGroup systemGroup = Thread.currentThread().getThreadGroup();
+ while (systemGroup.getParent() != null)
+ systemGroup = systemGroup.getParent();
+
+ Thread testThread = new Thread(systemGroup, "test thread");
+ harness.check(testThread.getThreadGroup().getParent() == null);
+
+ Thread modifyGroupThread = new Thread(
+ systemGroup, new SysTestRunner(harness, sm));
+ harness.check(modifyGroupThread.getThreadGroup().getParent() == null);
+
+ Throwable threadDeath = new ThreadDeath();
+ Throwable notThreadDeath = new ClassNotFoundException();
+
+ Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ }
+ };
+
+ Permission[] getClassLoader = new Permission[] {
+ new RuntimePermission("getClassLoader")};
+
+ Permission[] setContextClassLoader = new Permission[] {
+ new RuntimePermission("setContextClassLoader")};
+
+ Permission[] stopThread = new Permission[] {
+ new RuntimePermission("modifyThread"),
+ new RuntimePermission("stopThread")};
+
+ // XXX Thread.stop() tests only work on Classpath
+ // XXX The checks don't happen otherwise, so calls
+ // XXX to Thread.currentThread().stop() actually
+ // XXX happen :( So, we inhibit this.
+ boolean we_are_gnu_classpath =
+ System.getProperty("gnu.classpath.version") != null;
+
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.Thread-getContextClassLoader
+ harness.checkPoint("getContextClassLoader");
+ try {
+ sm.prepareChecks(getClassLoader);
+ getContextClassLoaderTest.invoke(null, new Object[] {testThread});
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-setContextClassLoader
+ harness.checkPoint("setContextClassLoader");
+ try {
+ ClassLoader loader = testThread.getContextClassLoader();
+ sm.prepareChecks(setContextClassLoader);
+ testThread.setContextClassLoader(loader);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-checkAccess
+ harness.checkPoint("checkAccess");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.checkAccess();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-interrupt
+ harness.checkPoint("interrupt");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.interrupt();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-suspend
+ harness.checkPoint("suspend");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.suspend();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-resume
+ harness.checkPoint("resume");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.resume();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-setPriority
+ harness.checkPoint("setPriority");
+ try {
+ int priority = testThread.getPriority();
+ sm.prepareChecks(modifyThread);
+ testThread.setPriority(priority);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-setName
+ harness.checkPoint("setName");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.setName("a test thread");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-setDaemon
+ harness.checkPoint("setDaemon");
+ try {
+ sm.prepareChecks(modifyThread);
+ testThread.setDaemon(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-stop()
+ harness.checkPoint("stop()");
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ try {
+ sm.prepareHaltingChecks(modifyThread);
+ if (we_are_gnu_classpath)
+ Thread.currentThread().stop();
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-stop(Throwable)
+ harness.checkPoint("stop(Throwable)");
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop(threadDeath);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ try {
+ sm.prepareChecks(stopThread);
+ testThread.stop(notThreadDeath);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ try {
+ sm.prepareHaltingChecks(modifyThread);
+ if (we_are_gnu_classpath)
+ Thread.currentThread().stop(threadDeath);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ try {
+ sm.prepareHaltingChecks(stopThread);
+ if (we_are_gnu_classpath)
+ Thread.currentThread().stop(notThreadDeath);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // The modifyThreadGroup tests get run in a system thread.
+ modifyGroupThread.start();
+ modifyGroupThread.join();
+
+ // throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable)
+ // throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable, String)
+ // throwpoint: java.lang.Thread-Thread(ThreadGroup, Runnable, String, long)
+ // throwpoint: java.lang.Thread-Thread(ThreadGroup, String)
+ harness.checkPoint("ThreadGroup constructors");
+ for (int i = 1; i <= 4; i++) {
+ try {
+ sm.prepareChecks(modifyThreadGroup, modifyThread);
+ switch (i) {
+ case 1:
+ new Thread(systemGroup, runnable);
+ break;
+ case 2:
+ new Thread(systemGroup, runnable, "test thread");
+ break;
+ case 3:
+ new Thread(systemGroup, runnable, "test thread", 1024);
+ break;
+ case 4:
+ new Thread(systemGroup, "test thread");
+ break;
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ // Stuff for the getContextClassLoader tests
+ public static void testGetContextClassLoader(Thread t)
+ {
+ t.getContextClassLoader();
+ }
+
+ // Stuff for the modifyThreadGroup tests
+ public static class SysTestRunner implements Runnable
+ {
+ private TestHarness harness;
+ private TestSecurityManager sm;
+
+ private static Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ }
+ };
+
+ public SysTestRunner(TestHarness harness, TestSecurityManager sm)
+ {
+ this.harness = harness;
+ this.sm = sm;
+ }
+
+ public void run()
+ {
+ try {
+ // throwpoint: java.lang.Thread-enumerate
+ harness.checkPoint("enumerate");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ Thread.enumerate(new Thread[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.Thread-Thread()
+ // throwpoint: java.lang.Thread-Thread(Runnable)
+ // throwpoint: java.lang.Thread-Thread(String)
+ // throwpoint: java.lang.Thread-Thread(Runnable, String)
+ harness.checkPoint("basic constructors");
+ for (int i = 1; i <= 4; i++) {
+ try {
+ sm.prepareChecks(modifyThreadGroup, modifyThread);
+ switch (i) {
+ case 1:
+ new Thread();
+ break;
+ case 2:
+ new Thread(runnable);
+ break;
+ case 3:
+ new Thread("test thread");
+ break;
+ case 4:
+ new Thread(runnable, "test thread");
+ break;
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/Thread/security10.java b/gnu/testlet/java/lang/Thread/security10.java
new file mode 100644
index 00000000..c11c35fd
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/security10.java
@@ -0,0 +1,322 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.Permission;
+
+public class security10 implements Testlet
+{
+ static class MySecurityManager extends SecurityManager
+ {
+ public void checkAccess(Thread thread)
+ {
+ throw new SecurityException();
+ }
+ public void checkAccess(ThreadGroup thread)
+ {
+ throw new SecurityException();
+ }
+
+ public void checkPermission(Permission perm)
+ {
+ RuntimePermission p = new RuntimePermission("setSecurityManager");
+ if (p.implies(perm))
+ return;
+ super.checkPermission(perm);
+ }
+ }
+
+ public void test (TestHarness h)
+ {
+ SecurityManager secman = System.getSecurityManager();
+ try
+ {
+ testImpl(h);
+ }
+ finally
+ {
+ System.setSecurityManager(secman);
+ }
+ }
+
+ private void testImpl(TestHarness h)
+ {
+ h.checkPoint("Thread creation");
+
+ Thread testThread = new Thread();
+
+ ThreadGroup group = new ThreadGroup("MyGroup");
+
+ System.setSecurityManager(new MySecurityManager());
+
+ Runnable run = new Runnable()
+ {
+ public void run()
+ {
+ // Do nothing here.
+ }
+ };
+
+ try
+ {
+ Thread thread = new Thread();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread("MyThread");
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread(run);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread(run, "MyThread");
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread creation with ThreadGroup");
+
+ try
+ {
+ Thread thread = new Thread(group, "MyThread");
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread(group, run);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread(group, run, "MyThread");
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ Thread thread = new Thread(group, run, "MyThread", 0);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.interrupt()");
+
+ try
+ {
+ testThread.interrupt();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.stop()");
+
+ try
+ {
+ testThread.stop();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ h.check(false);
+ }
+
+ // FIXME: Added testcase to let the Thread stop itself.
+
+ h.checkPoint("Thread.stop(Throwable)");
+
+ try
+ {
+ testThread.stop(new Error("Test"));
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ h.check(false);
+ }
+
+ // FIXME: Added testcase to let the Thread stop itself.
+
+ h.checkPoint("Thread.suspend()");
+
+ try
+ {
+ testThread.suspend();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.resume()");
+
+ try
+ {
+ testThread.resume();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.setPriority(int)");
+
+ try
+ {
+ testThread.setPriority(Thread.MIN_PRIORITY);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ testThread.setPriority(Thread.MAX_PRIORITY);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.setName(String)");
+
+ try
+ {
+ testThread.setName("My-Thread");
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.enumerate(Thread[])");
+
+ try
+ {
+ /**
+ * does not call checkAccess(Thread) but
+ * checkAccess(ThreadGroup)
+ */
+ Thread[] array = new Thread[1];
+ Thread.enumerate(array);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.setDaemon(boolean)");
+
+ try
+ {
+ testThread.setDaemon(false);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ testThread.setDaemon(true);
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Thread.checkAccess()");
+
+ try
+ {
+ testThread.checkAccess();
+ h.check(false);
+ }
+ catch (SecurityException e)
+ {
+ h.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/sleep.java b/gnu/testlet/java/lang/Thread/sleep.java
new file mode 100644
index 00000000..bbbe4d2c
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/sleep.java
@@ -0,0 +1,447 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class sleep implements Testlet, Runnable
+{
+ private TestHarness harness;
+
+ private Thread thread;
+ private boolean helper_started;
+ private boolean helper_done;
+
+ private final static long SLEEP_TIME = 5 * 1000; // 5 seconds
+
+ // Time the helper thread should sleep before interrupting the main
+ // thread Or zero for immediate interruption (won't use
+ // synchronization either in that case).
+ private long helper_sleep = 0;
+
+ // Helper method that runs from another thread.
+ // Sleeps a bit and then interrupts the main thread.
+ public void run()
+ {
+ try
+ {
+ if (helper_sleep == 0)
+ {
+ thread.interrupt();
+ helper_done = true;
+ return;
+ }
+
+ // Make sure main thread know we are about to sleep.
+ // (It should also go to sleep)
+ synchronized(this)
+ {
+ helper_started = true;
+ this.notify();
+ }
+
+ Thread.sleep(helper_sleep);
+ thread.interrupt();
+
+ // Main thread should still have the lock on this
+ synchronized(this)
+ {
+ helper_done = true;
+ }
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug("Interrupted in helper thread");
+ harness.check(false);
+ }
+ }
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+ Thread helper = new Thread(this);
+
+ harness.checkPoint("Interrupted sleep");
+
+ // Get a lock on this to coordinate with the runner thread.
+ // We should not loose it while sleeping.
+ synchronized(this)
+ {
+ helper_done = false;
+ helper_sleep = SLEEP_TIME / 2;
+ thread = Thread.currentThread();
+ long past = System.currentTimeMillis();
+
+ helper.start();
+
+ // Wait for the helper to start (and sleep immediately).
+ try
+ {
+ while (!helper_started)
+ this.wait();
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug("Interrupted during helper start");
+ harness.check(false);
+ }
+
+ // Go to sleep.
+ // Helper thread sleeps less time and should interrupt us.
+ boolean interrupted_exception = false;
+ try
+ {
+ Thread.sleep(SLEEP_TIME);
+ }
+ catch (InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception);
+
+ // About half the time should have been spent sleeping.
+ long present = System.currentTimeMillis();
+ long diff = present - past;
+ harness.debug("diff: " + diff);
+ harness.check(diff >= SLEEP_TIME / 2);
+ harness.check(diff < SLEEP_TIME);
+
+ // Even though we are interrupted,
+ // the thread interrupted flag should be cleared.
+ harness.check(!Thread.interrupted());
+
+ // We are still holding the lock so the helper_thread
+ // cannot be done yet.
+ harness.check(!helper_done);
+ }
+
+ // Now wait for the helper thead to finish
+ try
+ {
+ helper.join();
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("Interruped during joining the helper thread");
+ harness.check(false);
+ }
+ harness.check(helper_done);
+
+ // Invalid argument checks.
+ harness.checkPoint("Invalid argument");
+ invalid(Long.MIN_VALUE);
+ invalid(-1);
+
+ invalid(Long.MIN_VALUE, Integer.MIN_VALUE);
+ invalid(Long.MIN_VALUE, -1);
+ invalid(Long.MIN_VALUE, 0);
+ invalid(Long.MIN_VALUE, 1);
+ invalid(Long.MIN_VALUE, 999999);
+ invalid(Long.MIN_VALUE, 1000000);
+ invalid(Long.MIN_VALUE, Integer.MAX_VALUE);
+
+ invalid(-1, Integer.MIN_VALUE);
+ invalid(-1, -1);
+ invalid(-1, 0);
+ invalid(-1, 1);
+ invalid(-1, 999999);
+ invalid(-1, 1000000);
+ invalid(-1, Integer.MAX_VALUE);
+
+ invalid(0, Integer.MIN_VALUE);
+ invalid(0, -1);
+ invalid(0, 1000000);
+ invalid(0, Integer.MAX_VALUE);
+
+ invalid(1, Integer.MIN_VALUE);
+ invalid(1, -1);
+ invalid(1, 1000000);
+ invalid(1, Integer.MAX_VALUE);
+
+ invalid(Long.MAX_VALUE, Integer.MIN_VALUE);
+ invalid(Long.MAX_VALUE, -1);
+ invalid(Long.MAX_VALUE, 1000000);
+ invalid(Long.MAX_VALUE, Integer.MAX_VALUE);
+
+ // (Large) valid argument checks
+ valid(Integer.MAX_VALUE);
+ valid(Long.MAX_VALUE);
+ valid(Integer.MAX_VALUE, 0);
+ valid(Long.MAX_VALUE, 0);
+ valid(Integer.MAX_VALUE, 1);
+ valid(Long.MAX_VALUE, 1);
+ valid(Integer.MAX_VALUE, 999999);
+ valid(Long.MAX_VALUE, 999999);
+
+ // (Near) zero argument checks.
+ harness.checkPoint("(Near) zero sleep");
+ long past = System.currentTimeMillis();
+ nearZero(0);
+ nearZero(1);
+ nearZero(0, 0);
+ nearZero(0, 1);
+ nearZero(0, 999999);
+ nearZero(1, 0);
+ nearZero(1, 1);
+ nearZero(1, 999999);
+
+ // The thread should have slept at least 5 miliseconds.
+ // But certainly not more than 500 miliseconds.
+ long present = System.currentTimeMillis();
+ long diff = present - past;
+ harness.debug("diff: " + diff);
+ harness.check(diff > 5);
+ harness.check(diff < 500);
+
+
+ // A thread in interrupted state that goes to sleep gets
+ // InterruptedException.
+ harness.checkPoint("Interrupted state sleep");
+ past = System.currentTimeMillis();
+ interruptedSleep(0);
+ interruptedSleep(1);
+ interruptedSleep(5000);
+ interruptedSleep(0, 0);
+ interruptedSleep(1, 0);
+ interruptedSleep(0, 1);
+ interruptedSleep(1, 1);
+ interruptedSleep(5000, 0);
+ interruptedSleep(5000, 5000);
+
+ // The thread should not actually have slept (much) since it was always
+ // immediately waken up by the InterrupedException.
+ present = System.currentTimeMillis();
+ harness.check(present - past < 5000);
+ }
+
+ private void invalid(long milli)
+ {
+ boolean illegal_argument = false;
+ try
+ {
+ Thread.sleep(milli);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ illegal_argument = true;
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("InterruptedException in invalid(" + milli + ")");
+ harness.check(false);
+ }
+ harness.check(illegal_argument);
+ }
+
+ private void invalid(long milli, int nano)
+ {
+ boolean illegal_argument = false;
+ try
+ {
+ Thread.sleep(milli, nano);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ illegal_argument = true;
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("InterruptedException in invalid("
+ + milli + ", " + nano + ")");
+ harness.check(false);
+ }
+ harness.check(illegal_argument);
+
+ }
+
+ private void valid(long milli)
+ {
+ harness.checkPoint("valid long:" + milli);
+ Thread helper = new Thread(this);
+ helper_started = false;
+ helper_done = false;
+ helper_sleep = 1000;
+ thread = Thread.currentThread();
+
+ // Wait for the helper to start (and sleep immediately).
+ helper.start();
+ synchronized(this)
+ {
+ try
+ {
+ while (!helper_started)
+ this.wait();
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug("Interrupted during helper start");
+ harness.check(false);
+ }
+ }
+
+ boolean interrupted_exception = false;
+ try
+ {
+ Thread.sleep(milli);
+ }
+ catch (InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception);
+
+ try
+ {
+ helper.join();
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("Interruped during joining the helper thread");
+ harness.check(false);
+ }
+ harness.check(helper_done);
+ }
+
+ private void valid(long milli, int nano)
+ {
+ harness.checkPoint("valid long " + milli + " int " + nano);
+ Thread helper = new Thread(this);
+ helper_started = false;
+ helper_done = false;
+ helper_sleep = 1000;
+ thread = Thread.currentThread();
+
+ // Wait for the helper to start (and sleep immediately).
+ helper.start();
+ synchronized(this)
+ {
+ try
+ {
+ while (!helper_started)
+ this.wait();
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug("Interrupted during helper start");
+ harness.check(false);
+ }
+ }
+
+ boolean interrupted_exception = false;
+ try
+ {
+ Thread.sleep(milli, nano);
+ }
+ catch (InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ try
+ {
+ // wait for the interrupt from the helper
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException _)
+ {
+ }
+ }
+ harness.check(interrupted_exception);
+
+ try
+ {
+ helper.join();
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("Interrupted during joining the helper thread");
+ harness.check(false);
+ }
+ harness.check(helper_done);
+ }
+
+ private void nearZero(long milli)
+ {
+ try
+ {
+ Thread.sleep(milli);
+ harness.check(true);
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("InterruptedException in nearZero(" + milli + ")");
+ harness.check(false);
+ }
+ }
+
+ private void nearZero(long milli, int nano)
+ {
+ try
+ {
+ Thread.sleep(milli, nano);
+ harness.check(true);
+ }
+ catch(InterruptedException ie)
+ {
+ harness.debug("InterruptedException in nearZero("
+ + milli + ", " + nano + ")");
+ harness.check(false);
+ }
+ }
+
+ private void interruptedSleep(long milli)
+ {
+ boolean interrupted_exception = false;
+ Thread.currentThread().interrupt();
+ try
+ {
+ Thread.sleep(milli);
+ }
+ catch(InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception);
+ harness.check(!Thread.interrupted());
+ }
+
+ private void interruptedSleep(long milli, int nano)
+ {
+ boolean interrupted_exception = false;
+ Thread.currentThread().interrupt();
+ try
+ {
+ Thread.sleep(milli, nano);
+ }
+ catch(InterruptedException ie)
+ {
+ interrupted_exception = true;
+ }
+ harness.check(interrupted_exception);
+ harness.check(!Thread.interrupted());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/Thread/stop.java b/gnu/testlet/java/lang/Thread/stop.java
new file mode 100644
index 00000000..f33502e1
--- /dev/null
+++ b/gnu/testlet/java/lang/Thread/stop.java
@@ -0,0 +1,123 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Written by C. Brian Jones (cbj@gnu.org)
+
+// 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.java.lang.Thread;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class stop extends Thread implements Testlet
+{
+ static TestHarness harness;
+ // accessed outside synchronized block by multiple threads
+ static volatile boolean death = false;
+
+ static Object lock = new Object();
+ static boolean running = false;
+
+ public void run()
+ {
+ try
+ {
+ synchronized(lock)
+ {
+ running = true;
+ lock.notifyAll();
+ while (true)
+ lock.wait();
+ }
+ }
+ catch (Exception e)
+ {
+ harness.fail("Unexpected exception during run()");
+ }
+ catch (ThreadDeath d)
+ {
+ death = true;
+ Thread thread = Thread.currentThread();
+ ThreadGroup group = thread.getThreadGroup();
+ harness.check(group != null, "Stop should not remove thread from ThreadGroup");
+ throw d;
+ }
+ }
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+ int initial_thread_count = 0;
+ int running_thread_count = 0;
+ int stopped_thread_count = 0;
+ Thread[] thread_list = null;
+
+ try
+ {
+ int x = 0;
+ Thread current = Thread.currentThread();
+ ThreadGroup group = current.getThreadGroup();
+ x = group.activeCount() + 10;
+ thread_list = new Thread[x];
+ initial_thread_count = group.enumerate(thread_list, true);
+
+ stop t = new stop();
+ ThreadGroup tgroup = t.getThreadGroup();
+ harness.check (tgroup != null, "Unstarted thread has non-null thread group");
+ t.start();
+ synchronized(lock)
+ {
+ while (!running)
+ {
+ lock.wait();
+ }
+ x = group.activeCount() + 10;
+ thread_list = new Thread[x];
+ running_thread_count = group.enumerate(thread_list, true);
+ tgroup = t.getThreadGroup();
+ harness.check(tgroup != null, "Running thread has non-null thread group");
+ }
+ t.stop();
+ t.join(2000, 0);
+ x = group.activeCount() + 10;
+ thread_list = new Thread[x];
+ stopped_thread_count = group.enumerate(thread_list, true);
+
+ harness.check(death, "ThreadDeath properly thrown and caught");
+ harness.check(initial_thread_count == stopped_thread_count,
+ "Initial thread count matches stopped thread count");
+ harness.check(running_thread_count-1 == initial_thread_count,
+ "Running thread properly increased thread count");
+
+ tgroup = t.getThreadGroup();
+ harness.check(tgroup == null, "Stopped thread has null thread group");
+
+ }
+ catch (InterruptedException e)
+ {
+ harness.fail("Thread not joined - Thread.stop() unimplemented?");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception during test()");
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/CVS/Entries b/gnu/testlet/java/lang/ThreadDeath/CVS/Entries
new file mode 100644
index 00000000..55007395
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/CVS/Entries
@@ -0,0 +1,2 @@
+/TryCatch.java/1.2/Wed Dec 5 09:55:44 2012//
+D
diff --git a/gnu/testlet/java/lang/ThreadDeath/CVS/Entries.Log b/gnu/testlet/java/lang/ThreadDeath/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/ThreadDeath/CVS/Repository b/gnu/testlet/java/lang/ThreadDeath/CVS/Repository
new file mode 100644
index 00000000..e4d78179
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ThreadDeath
diff --git a/gnu/testlet/java/lang/ThreadDeath/CVS/Root b/gnu/testlet/java/lang/ThreadDeath/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ThreadDeath/TryCatch.java b/gnu/testlet/java/lang/ThreadDeath/TryCatch.java
new file mode 100644
index 00000000..25bf782d
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.ThreadDeath
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.ThreadDeath
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ThreadDeath();
+ }
+ catch (ThreadDeath e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Entries b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Entries
new file mode 100644
index 00000000..aee1b2d5
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Wed Dec 5 09:55:45 2012//
+/getConstructors.java/1.1/Wed Dec 5 09:55:45 2012//
+/getDeclaredConstructors.java/1.1/Wed Dec 5 09:55:45 2012//
+/getDeclaredFields.java/1.1/Wed Dec 5 09:55:45 2012//
+/getDeclaredMethods.java/1.1/Wed Dec 5 09:55:45 2012//
+/getFields.java/1.1/Wed Dec 5 09:55:45 2012//
+/getInterfaces.java/1.2/Wed Dec 5 09:55:45 2012//
+/getMethods.java/1.1/Wed Dec 5 09:55:45 2012//
+/getModifiers.java/1.2/Wed Dec 5 09:55:45 2012//
+/getName.java/1.2/Wed Dec 5 09:55:45 2012//
+/getPackage.java/1.2/Wed Dec 5 09:55:45 2012//
+/getSimpleName.java/1.2/Wed Dec 5 09:55:45 2012//
+/getSuperclass.java/1.2/Wed Dec 5 09:55:45 2012//
+/isAnnotation.java/1.1/Wed Dec 5 09:55:45 2012//
+/isAnnotationPresent.java/1.1/Wed Dec 5 09:55:45 2012//
+/isAnonymousClass.java/1.1/Wed Dec 5 09:55:45 2012//
+/isArray.java/1.1/Wed Dec 5 09:55:45 2012//
+/isAssignableFrom.java/1.2/Wed Dec 5 09:55:45 2012//
+/isEnum.java/1.1/Wed Dec 5 09:55:45 2012//
+/isInstance.java/1.2/Wed Dec 5 09:55:45 2012//
+/isInterface.java/1.2/Wed Dec 5 09:55:45 2012//
+/isLocalClass.java/1.2/Wed Dec 5 09:55:45 2012//
+/isMemberClass.java/1.2/Wed Dec 5 09:55:45 2012//
+/isPrimitive.java/1.2/Wed Dec 5 09:55:45 2012//
+/isSynthetic.java/1.2/Wed Dec 5 09:55:45 2012//
+D
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Repository b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Repository
new file mode 100644
index 00000000..a5aaef5f
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ThreadDeath/classInfo
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Root b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java
new file mode 100644
index 00000000..0aa1429c
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.lang.ThreadDeath
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.ThreadDeath
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ ThreadDeath o = new ThreadDeath();
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ThreadDeath);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getConstructors.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getConstructors.java
new file mode 100644
index 00000000..e188903d
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.ThreadDeath.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.ThreadDeath()", "java.lang.ThreadDeath");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.ThreadDeath()", "java.lang.ThreadDeath");
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..9e0bb2b6
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.ThreadDeath.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.ThreadDeath()", "java.lang.ThreadDeath");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.ThreadDeath()", "java.lang.ThreadDeath");
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..dac81053
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.ThreadDeath.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.ThreadDeath.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..3a6aeddb
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ThreadDeath.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getFields.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getFields.java
new file mode 100644
index 00000000..f0d6af2b
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.ThreadDeath.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b1c5089f
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.ThreadDeath.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getMethods.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getMethods.java
new file mode 100644
index 00000000..45673561
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.ThreadDeath.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java
new file mode 100644
index 00000000..fd763954
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.ThreadDeath.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java
new file mode 100644
index 00000000..c6d7fc70
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.ThreadDeath");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java
new file mode 100644
index 00000000..cdf5b9e8
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ThreadDeath.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java
new file mode 100644
index 00000000..3e05960e
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ThreadDeath");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java
new file mode 100644
index 00000000..0ef0038d
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.ThreadDeath.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.Error");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotation.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotation.java
new file mode 100644
index 00000000..58f79c2a
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..cd2f817a
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.ThreadDeath.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..a2f9c027
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isArray.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isArray.java
new file mode 100644
index 00000000..03314c44
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..1c236f49
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ThreadDeath.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isEnum.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isEnum.java
new file mode 100644
index 00000000..6793eae1
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java
new file mode 100644
index 00000000..7cd53ecd
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new ThreadDeath()));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java
new file mode 100644
index 00000000..f69ba1f3
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java
new file mode 100644
index 00000000..caac87d3
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java
new file mode 100644
index 00000000..87ceea0c
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java
new file mode 100644
index 00000000..761541af
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java b/gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java
new file mode 100644
index 00000000..3e66bfba
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadDeath/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.ThreadDeath.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.ThreadDeath.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.ThreadDeath;
+
+
+
+/**
+ * Test for method java.lang.ThreadDeath.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ThreadDeath
+ final Object o = new ThreadDeath();
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/ThreadGroup/CVS/Entries b/gnu/testlet/java/lang/ThreadGroup/CVS/Entries
new file mode 100644
index 00000000..3a12c0fa
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/CVS/Entries
@@ -0,0 +1,4 @@
+/enumerate.java/1.1/Mon Feb 19 21:46:17 2001//
+/insecurity.java/1.4/Tue Feb 6 16:46:19 2007//
+/security.java/1.4/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/lang/ThreadGroup/CVS/Repository b/gnu/testlet/java/lang/ThreadGroup/CVS/Repository
new file mode 100644
index 00000000..1d8197b6
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ThreadGroup
diff --git a/gnu/testlet/java/lang/ThreadGroup/CVS/Root b/gnu/testlet/java/lang/ThreadGroup/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ThreadGroup/enumerate.java b/gnu/testlet/java/lang/ThreadGroup/enumerate.java
new file mode 100644
index 00000000..6cffdd46
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/enumerate.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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.java.lang.ThreadGroup;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class enumerate extends Thread implements Testlet
+{
+ public enumerate (ThreadGroup g, String name)
+ {
+ super (g, name);
+ }
+
+ public enumerate ()
+ {
+ }
+
+ public void test (TestHarness harness)
+ {
+ ThreadGroup here = Thread.currentThread ().getThreadGroup ();
+ ThreadGroup group = new ThreadGroup (here, "enumtestgroup");
+ ThreadGroup group2 = new ThreadGroup (group, "enumsubgroup");
+
+ enumerate e = new enumerate (group, "name1");
+ e = new enumerate (group2, "name2");
+
+ int thread_count = group.activeCount () + 10;
+ Thread[] thread_list = new Thread[thread_count];
+ thread_count = group.enumerate (thread_list, true);
+
+ // There aren't any active threads since we never started E.
+ harness.check (thread_count, 0);
+ }
+}
diff --git a/gnu/testlet/java/lang/ThreadGroup/insecurity.java b/gnu/testlet/java/lang/ThreadGroup/insecurity.java
new file mode 100644
index 00000000..7f285165
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/insecurity.java
@@ -0,0 +1,273 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.ThreadGroup;
+
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class insecurity implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ // The default SecurityManager.checkAccess(ThreadGroup) method
+ // should only check permissions when the threadgroup in
+ // question is the system threadgroup, which is defined as the
+ // threadgroup with no parent.
+
+ ThreadGroup systemGroup = Thread.currentThread().getThreadGroup();
+ while (systemGroup.getParent() != null)
+ systemGroup = systemGroup.getParent();
+
+ ThreadGroup nonSystemGroup = new ThreadGroup(systemGroup, "test group");
+
+ Thread testThread = new Thread(nonSystemGroup, new TestRunner(harness));
+
+ testThread.start();
+ testThread.join();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ public static class TestRunner implements Runnable
+ {
+ private TestHarness harness;
+
+ public TestRunner(TestHarness harness)
+ {
+ this.harness = harness;
+ }
+
+ public void run()
+ {
+ try {
+ ThreadGroup testGroup = Thread.currentThread().getThreadGroup();
+ harness.check(testGroup.getParent() != null);
+
+ ThreadGroup nonSystemGroup = new ThreadGroup(testGroup, "test group");
+ harness.check(nonSystemGroup.getParent() != null);
+
+ Permission[] noChecks = new Permission[0];
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-ThreadGroup(String)
+ harness.checkPoint("ThreadGroup(String)");
+ try {
+ sm.prepareChecks(noChecks);
+ new ThreadGroup("test");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-ThreadGroup(ThreadGroup, String)
+ harness.checkPoint("ThreadGroup(ThreadGroup, String)");
+ try {
+ sm.prepareChecks(noChecks);
+ new ThreadGroup(testGroup, "test");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-checkAccess
+ harness.checkPoint("checkAccess");
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.checkAccess();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-enumerate(Thread[])
+ harness.checkPoint("enumerate(Thread[])");
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.enumerate(new Thread[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-enumerate(Thread[], boolean)
+ harness.checkPoint("enumerate(Thread[], boolean)");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.enumerate(new Thread[0], i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-enumerate(ThreadGroup[])
+ harness.checkPoint("enumerate(ThreadGroup[])");
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.enumerate(new ThreadGroup[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint:
+ // java.lang.ThreadGroup-enumerate(ThreadGroup[], boolean)
+ harness.checkPoint("enumerate(ThreadGroup[], boolean)");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.enumerate(new ThreadGroup[0], i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-getParent
+ harness.checkPoint("getParent");
+ try {
+ sm.prepareChecks(noChecks);
+ nonSystemGroup.getParent();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-setDaemon
+ harness.checkPoint("setDaemon");
+ try {
+ sm.prepareChecks(noChecks);
+ testGroup.setDaemon(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-setMaxPriority
+ harness.checkPoint("setMaxPriority");
+ try {
+ int priority = testGroup.getMaxPriority();
+ sm.prepareChecks(noChecks);
+ testGroup.setMaxPriority(priority);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-suspend
+ harness.checkPoint("suspend");
+ try {
+ sm.prepareChecks(noChecks);
+ nonSystemGroup.suspend();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-resume
+ harness.checkPoint("resume");
+ try {
+ sm.prepareChecks(noChecks);
+ nonSystemGroup.resume();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-interrupt
+ harness.checkPoint("interrupt");
+ try {
+ sm.prepareChecks(noChecks);
+ nonSystemGroup.interrupt();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // corresponding throwpoint: java.lang.ThreadGroup-stop
+ harness.checkPoint("stop");
+ try {
+ sm.prepareChecks(noChecks);
+ nonSystemGroup.stop();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/ThreadGroup/security.java b/gnu/testlet/java/lang/ThreadGroup/security.java
new file mode 100644
index 00000000..4995ef89
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadGroup/security.java
@@ -0,0 +1,324 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.ThreadGroup;
+
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ // The default SecurityManager.checkAccess(ThreadGroup) method
+ // only checks permissions when the threadgroup in question is
+ // the system threadgroup, which is defined as the threadgroup
+ // with no parent.
+
+ ThreadGroup systemGroup = Thread.currentThread().getThreadGroup();
+ while (systemGroup.getParent() != null)
+ systemGroup = systemGroup.getParent();
+
+ Thread testThread = new Thread(systemGroup, new TestRunner(harness));
+
+ testThread.start();
+ testThread.join();
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ public static class TestRunner implements Runnable
+ {
+ private TestHarness harness;
+
+ public TestRunner(TestHarness harness)
+ {
+ this.harness = harness;
+ }
+
+ public void run()
+ {
+ try {
+ ThreadGroup testGroup = Thread.currentThread().getThreadGroup();
+ harness.check(testGroup.getParent() == null);
+
+ ThreadGroup nonSystemGroup = new ThreadGroup(testGroup, "test group");
+ harness.check(nonSystemGroup.getParent() != null);
+
+ Permission[] modifyThreadGroup = new Permission[] {
+ new RuntimePermission("modifyThreadGroup")};
+
+ Permission[] modifyThread = new Permission[] {
+ new RuntimePermission("modifyThread")};
+
+ Permission[] stopThread = new Permission[] {
+ new RuntimePermission("modifyThread"),
+ new RuntimePermission("stopThread")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.ThreadGroup-ThreadGroup(String)
+ harness.checkPoint("ThreadGroup(String)");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ new ThreadGroup("test");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-ThreadGroup(ThreadGroup, String)
+ harness.checkPoint("ThreadGroup(ThreadGroup, String)");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ new ThreadGroup(testGroup, "test");
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-checkAccess
+ harness.checkPoint("checkAccess");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.checkAccess();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-enumerate(Thread[])
+ harness.checkPoint("enumerate(Thread[])");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.enumerate(new Thread[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-enumerate(Thread[], boolean)
+ harness.checkPoint("enumerate(Thread[], boolean)");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.enumerate(new Thread[0], i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // throwpoint: java.lang.ThreadGroup-enumerate(ThreadGroup[])
+ harness.checkPoint("enumerate(ThreadGroup[])");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.enumerate(new ThreadGroup[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-enumerate(ThreadGroup[], boolean)
+ harness.checkPoint("enumerate(ThreadGroup[], boolean)");
+ for (int i = 0; i <= 1; i++) {
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.enumerate(new ThreadGroup[0], i == 1);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // throwpoint: java.lang.ThreadGroup-getParent
+ harness.checkPoint("getParent");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ nonSystemGroup.getParent();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-setDaemon
+ harness.checkPoint("setDaemon");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.setDaemon(false);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-setMaxPriority
+ harness.checkPoint("setMaxPriority");
+ try {
+ int priority = testGroup.getMaxPriority();
+ sm.prepareChecks(modifyThreadGroup);
+ testGroup.setMaxPriority(priority);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-suspend
+ harness.checkPoint("suspend");
+ try {
+ sm.prepareHaltingChecks(modifyThreadGroup, modifyThread);
+ testGroup.suspend();
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-resume
+ harness.checkPoint("resume");
+ try {
+ sm.prepareHaltingChecks(modifyThreadGroup, modifyThread);
+ testGroup.resume();
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: TODO: java.lang.ThreadGroup-destroy
+ // XXX I'm not sure you can test for this one. It's an
+ // XXX error to call this on a non-empty threadgroup, but
+ // XXX the check only happens for the system group which
+ // XXX will not be empty.
+
+ // throwpoint: java.lang.ThreadGroup-interrupt
+ harness.checkPoint("interrupt");
+ try {
+ sm.prepareHaltingChecks(modifyThreadGroup, modifyThread);
+ testGroup.interrupt();
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.lang.ThreadGroup-stop
+ harness.checkPoint("stop");
+ try {
+ sm.prepareHaltingChecks(modifyThreadGroup, stopThread);
+ testGroup.stop();
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+
+ sm = new SpecialSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.ThreadGroup-destroy
+ harness.checkPoint("destroy");
+ try {
+ sm.prepareChecks(modifyThreadGroup);
+ nonSystemGroup.destroy();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+ }
+
+ public static class SpecialSecurityManager extends TestSecurityManager
+ {
+ public SpecialSecurityManager(TestHarness harness)
+ {
+ super(harness);
+ }
+
+ public void checkAccess(ThreadGroup g)
+ {
+ checkPermission(new RuntimePermission("modifyThreadGroup"));
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/ThreadLocal/CVS/Entries b/gnu/testlet/java/lang/ThreadLocal/CVS/Entries
new file mode 100644
index 00000000..796d61e2
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadLocal/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.2/Mon Apr 1 12:13:28 2002//
+D
diff --git a/gnu/testlet/java/lang/ThreadLocal/CVS/Repository b/gnu/testlet/java/lang/ThreadLocal/CVS/Repository
new file mode 100644
index 00000000..f741b607
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadLocal/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ThreadLocal
diff --git a/gnu/testlet/java/lang/ThreadLocal/CVS/Root b/gnu/testlet/java/lang/ThreadLocal/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadLocal/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ThreadLocal/simple.java b/gnu/testlet/java/lang/ThreadLocal/simple.java
new file mode 100644
index 00000000..36c9e6b0
--- /dev/null
+++ b/gnu/testlet/java/lang/ThreadLocal/simple.java
@@ -0,0 +1,79 @@
+// Simple tests of ThreadLocal
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.3
+
+package gnu.testlet.java.lang.ThreadLocal;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class simple extends ThreadLocal implements Testlet, Runnable
+{
+
+ // ThreadLocal method
+ public Object initialValue ()
+ {
+ return "Maude";
+ }
+
+ public TestHarness myHarness;
+
+ public void run ()
+ {
+ myHarness.check (this.get (), "Maude", "Initial value in new thread");
+ this.set ("Wednesday");
+ myHarness.check (this.get (), "Wednesday", "Changed value in new thread");
+ }
+
+ public simple (TestHarness harness)
+ {
+ super ();
+ myHarness = harness;
+ }
+
+ public simple ()
+ {
+ super ();
+ myHarness = null;
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.check (this.get (), "Maude", "Check initial value");
+
+ this.set ("Liver");
+ harness.check (this.get (), "Liver", "Check changed value");
+
+ try
+ {
+ simple s = new simple (harness);
+ Thread t = new Thread(s);
+ t.start ();
+ t.join ();
+ }
+ catch (InterruptedException _)
+ {
+ }
+
+ harness.check (this.get (), "Liver", "Value didn't change");
+ }
+}
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries
new file mode 100644
index 00000000..0d97d414
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries
@@ -0,0 +1,2 @@
+/TryCatch.java/1.3/Tue Dec 4 09:29:15 2012//
+D
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries.Log b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/CVS/Repository b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Repository
new file mode 100644
index 00000000..5c04c34d
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/TypeNotPresentException
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/CVS/Root b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java b/gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java
new file mode 100644
index 00000000..344beda2
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.TypeNotPresentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.TypeNotPresentException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new TypeNotPresentException("TypeNotPresentException", new Throwable());
+ }
+ catch (TypeNotPresentException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Entries b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Entries
new file mode 100644
index 00000000..50871419
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.3/Tue Dec 4 09:29:15 2012//
+/getConstructors.java/1.1/Tue Dec 4 09:29:15 2012//
+/getDeclaredConstructors.java/1.1/Tue Dec 4 09:29:15 2012//
+/getDeclaredFields.java/1.1/Tue Dec 4 09:29:15 2012//
+/getDeclaredMethods.java/1.1/Tue Dec 4 09:29:15 2012//
+/getFields.java/1.1/Tue Dec 4 09:29:15 2012//
+/getInterfaces.java/1.3/Tue Dec 4 09:29:15 2012//
+/getMethods.java/1.1/Tue Dec 4 09:29:15 2012//
+/getModifiers.java/1.3/Tue Dec 4 09:29:15 2012//
+/getName.java/1.3/Tue Dec 4 09:29:15 2012//
+/getPackage.java/1.3/Tue Dec 4 09:29:15 2012//
+/getSimpleName.java/1.3/Tue Dec 4 09:29:15 2012//
+/getSuperclass.java/1.3/Tue Dec 4 09:29:15 2012//
+/isAnnotation.java/1.1/Tue Dec 4 09:29:15 2012//
+/isAnnotationPresent.java/1.1/Tue Dec 4 09:29:15 2012//
+/isAnonymousClass.java/1.1/Tue Dec 4 09:29:15 2012//
+/isArray.java/1.1/Tue Dec 4 09:29:15 2012//
+/isAssignableFrom.java/1.3/Tue Dec 4 09:29:15 2012//
+/isEnum.java/1.1/Tue Dec 4 09:29:15 2012//
+/isInstance.java/1.3/Tue Dec 4 09:29:15 2012//
+/isInterface.java/1.3/Tue Dec 4 09:29:15 2012//
+/isLocalClass.java/1.3/Tue Dec 4 09:29:15 2012//
+/isMemberClass.java/1.3/Tue Dec 4 09:29:15 2012//
+/isPrimitive.java/1.3/Tue Dec 4 09:29:15 2012//
+/isSynthetic.java/1.3/Tue Dec 4 09:29:15 2012//
+D
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Repository b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Repository
new file mode 100644
index 00000000..2c4e5159
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/TypeNotPresentException/classInfo
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Root b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..aae8118c
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.TypeNotPresentException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.TypeNotPresentException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ TypeNotPresentException o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // basic check of instanceof operator
+ harness.check(o instanceof TypeNotPresentException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getConstructors.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getConstructors.java
new file mode 100644
index 00000000..2fc875bb
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.TypeNotPresentException(java.lang.String,java.lang.Throwable)", "java.lang.TypeNotPresentException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.TypeNotPresentException(java.lang.String,java.lang.Throwable)", "java.lang.TypeNotPresentException");
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..ab89fa0c
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.TypeNotPresentException(java.lang.String,java.lang.Throwable)", "java.lang.TypeNotPresentException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.TypeNotPresentException(java.lang.String,java.lang.Throwable)", "java.lang.TypeNotPresentException");
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..aabbb401
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredFields.java
@@ -0,0 +1,103 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private java.lang.String java.lang.TypeNotPresentException.typeName", "typeName");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.TypeNotPresentException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private java.lang.String java.lang.TypeNotPresentException.typeName", "typeName");
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..1b9f5c1e
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,104 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.lang.TypeNotPresentException.typeName()", "typeName");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.lang.TypeNotPresentException.typeName()", "typeName");
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getFields.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getFields.java
new file mode 100644
index 00000000..365dedd7
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..ab0defc2
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getMethods.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getMethods.java
new file mode 100644
index 00000000..34f5e343
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getMethods.java
@@ -0,0 +1,144 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.lang.TypeNotPresentException.typeName()", "typeName");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.lang.TypeNotPresentException.typeName()", "typeName");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java
new file mode 100644
index 00000000..e9d04aab
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java
new file mode 100644
index 00000000..ab3175ef
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.TypeNotPresentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java
new file mode 100644
index 00000000..fc4f6115
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..ac4c9940
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "TypeNotPresentException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..a401422f
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.TypeNotPresentException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..2b4c0682
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..6190cfcb
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..6cfc9f6f
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isArray.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isArray.java
new file mode 100644
index 00000000..4a657dff
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..4efd333b
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(TypeNotPresentException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isEnum.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isEnum.java
new file mode 100644
index 00000000..4eebc68d
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java
new file mode 100644
index 00000000..85937f48
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new TypeNotPresentException("TypeNotPresentException", new Throwable())));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java
new file mode 100644
index 00000000..ad612530
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..27243cfa
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..767d00c6
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..29d7b60a
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..d729476f
--- /dev/null
+++ b/gnu/testlet/java/lang/TypeNotPresentException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.TypeNotPresentException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.TypeNotPresentException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.TypeNotPresentException;
+
+
+
+/**
+ * Test for method java.lang.TypeNotPresentException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class TypeNotPresentException
+ final Object o = new TypeNotPresentException("TypeNotPresentException", new Throwable());
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/CVS/Entries b/gnu/testlet/java/lang/UnknownError/CVS/Entries
new file mode 100644
index 00000000..515e395f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Mon Dec 3 08:46:06 2012//
+/constructor.java/1.2/Mon Dec 3 08:46:06 2012//
+D
diff --git a/gnu/testlet/java/lang/UnknownError/CVS/Entries.Log b/gnu/testlet/java/lang/UnknownError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/UnknownError/CVS/Repository b/gnu/testlet/java/lang/UnknownError/CVS/Repository
new file mode 100644
index 00000000..910c68cc
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnknownError
diff --git a/gnu/testlet/java/lang/UnknownError/CVS/Root b/gnu/testlet/java/lang/UnknownError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnknownError/TryCatch.java b/gnu/testlet/java/lang/UnknownError/TryCatch.java
new file mode 100644
index 00000000..a19fb664
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.UnknownError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.UnknownError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UnknownError("UnknownError");
+ }
+ catch (UnknownError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Entries b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Entries
new file mode 100644
index 00000000..c14cec25
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Mon Dec 3 08:46:06 2012//
+/getConstructors.java/1.1/Mon Dec 3 08:46:06 2012//
+/getDeclaredConstructors.java/1.1/Mon Dec 3 08:46:06 2012//
+/getDeclaredFields.java/1.1/Mon Dec 3 08:46:06 2012//
+/getDeclaredMethods.java/1.1/Mon Dec 3 08:46:06 2012//
+/getFields.java/1.1/Mon Dec 3 08:46:06 2012//
+/getInterfaces.java/1.2/Mon Dec 3 08:46:06 2012//
+/getMethods.java/1.1/Mon Dec 3 08:46:06 2012//
+/getModifiers.java/1.2/Mon Dec 3 08:46:06 2012//
+/getName.java/1.2/Mon Dec 3 08:46:06 2012//
+/getPackage.java/1.2/Mon Dec 3 08:46:06 2012//
+/getSimpleName.java/1.2/Mon Dec 3 08:46:06 2012//
+/getSuperclass.java/1.2/Mon Dec 3 08:46:06 2012//
+/isAnnotation.java/1.1/Mon Dec 3 08:46:06 2012//
+/isAnnotationPresent.java/1.1/Mon Dec 3 08:46:06 2012//
+/isAnonymousClass.java/1.1/Mon Dec 3 08:46:06 2012//
+/isArray.java/1.1/Mon Dec 3 08:46:06 2012//
+/isAssignableFrom.java/1.2/Mon Dec 3 08:46:06 2012//
+/isEnum.java/1.1/Mon Dec 3 08:46:06 2012//
+/isInstance.java/1.2/Mon Dec 3 08:46:06 2012//
+/isInterface.java/1.2/Mon Dec 3 08:46:06 2012//
+/isLocalClass.java/1.2/Mon Dec 3 08:46:06 2012//
+/isMemberClass.java/1.2/Mon Dec 3 08:46:06 2012//
+/isPrimitive.java/1.2/Mon Dec 3 08:46:06 2012//
+/isSynthetic.java/1.2/Mon Dec 3 08:46:06 2012//
+D
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Repository b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Repository
new file mode 100644
index 00000000..dcca2078
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnknownError/classInfo
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Root b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..3d53d45e
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.UnknownError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.lang.VirtualMachineError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.UnknownError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ UnknownError o = new UnknownError("UnknownError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UnknownError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof VirtualMachineError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getConstructors.java b/gnu/testlet/java/lang/UnknownError/classInfo/getConstructors.java
new file mode 100644
index 00000000..6a45807f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnknownError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.UnknownError()", "java.lang.UnknownError");
+ testedConstructors_jdk6.put("public java.lang.UnknownError(java.lang.String)", "java.lang.UnknownError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.UnknownError()", "java.lang.UnknownError");
+ testedConstructors_jdk7.put("public java.lang.UnknownError(java.lang.String)", "java.lang.UnknownError");
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..912f1fe3
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnknownError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnknownError()", "java.lang.UnknownError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnknownError(java.lang.String)", "java.lang.UnknownError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnknownError()", "java.lang.UnknownError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnknownError(java.lang.String)", "java.lang.UnknownError");
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..eff42b8b
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.UnknownError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.UnknownError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..10bc0441
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnknownError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getFields.java b/gnu/testlet/java/lang/UnknownError/classInfo/getFields.java
new file mode 100644
index 00000000..cce8fc57
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnknownError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..867f9aca
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.UnknownError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getMethods.java b/gnu/testlet/java/lang/UnknownError/classInfo/getMethods.java
new file mode 100644
index 00000000..a7eeb406
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.UnknownError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java b/gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java
new file mode 100644
index 00000000..2221f897
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.UnknownError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getName.java b/gnu/testlet/java/lang/UnknownError/classInfo/getName.java
new file mode 100644
index 00000000..4e30c22c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.UnknownError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java b/gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java
new file mode 100644
index 00000000..55150043
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnknownError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..37580ce3
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UnknownError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..ed119df4
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnknownError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.VirtualMachineError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..a5e96884
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..2477deef
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.UnknownError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/UnknownError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..b4d35e14
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isArray.java b/gnu/testlet/java/lang/UnknownError/classInfo/isArray.java
new file mode 100644
index 00000000..88ce91e2
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..90b2aa59
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UnknownError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isEnum.java b/gnu/testlet/java/lang/UnknownError/classInfo/isEnum.java
new file mode 100644
index 00000000..9d6637a1
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java b/gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java
new file mode 100644
index 00000000..6a26a8f2
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new UnknownError("UnknownError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java b/gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java
new file mode 100644
index 00000000..5872f548
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..a05ddd39
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..dda05a70
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8407b854
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..912f97b6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnknownError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test for method java.lang.UnknownError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnknownError
+ final Object o = new UnknownError("UnknownError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnknownError/constructor.java b/gnu/testlet/java/lang/UnknownError/constructor.java
new file mode 100644
index 00000000..05e9d3c2
--- /dev/null
+++ b/gnu/testlet/java/lang/UnknownError/constructor.java
@@ -0,0 +1,55 @@
+// Test if constructor is working properly for a class java.lang.UnknownError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnknownError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnknownError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.UnknownError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UnknownError error1 = new UnknownError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.UnknownError");
+
+ UnknownError error2 = new UnknownError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.UnknownError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries
new file mode 100644
index 00000000..180c9e22
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Thu Nov 29 09:29:27 2012//
+/constructor.java/1.2/Thu Nov 29 09:29:27 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries.Log b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Repository b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Repository
new file mode 100644
index 00000000..b1cbe31f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsatisfiedLinkError
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Root b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java
new file mode 100644
index 00000000..8f90a0d7
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.UnsatisfiedLinkError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.UnsatisfiedLinkError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UnsatisfiedLinkError("UnsatisfiedLinkError");
+ }
+ catch (UnsatisfiedLinkError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Entries b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Entries
new file mode 100644
index 00000000..099d6707
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Thu Nov 29 09:29:27 2012//
+/getConstructors.java/1.1/Thu Nov 29 09:29:27 2012//
+/getDeclaredConstructors.java/1.1/Thu Nov 29 09:29:27 2012//
+/getDeclaredFields.java/1.1/Thu Nov 29 09:29:27 2012//
+/getDeclaredMethods.java/1.1/Thu Nov 29 09:29:27 2012//
+/getFields.java/1.1/Thu Nov 29 09:29:27 2012//
+/getInterfaces.java/1.2/Thu Nov 29 09:29:27 2012//
+/getMethods.java/1.1/Thu Nov 29 09:29:27 2012//
+/getModifiers.java/1.2/Thu Nov 29 09:29:27 2012//
+/getName.java/1.2/Thu Nov 29 09:29:27 2012//
+/getPackage.java/1.2/Thu Nov 29 09:29:27 2012//
+/getSimpleName.java/1.2/Thu Nov 29 09:29:27 2012//
+/getSuperclass.java/1.2/Thu Nov 29 09:29:27 2012//
+/isAnnotation.java/1.1/Thu Nov 29 09:29:27 2012//
+/isAnnotationPresent.java/1.1/Thu Nov 29 09:29:27 2012//
+/isAnonymousClass.java/1.1/Thu Nov 29 09:29:27 2012//
+/isArray.java/1.1/Thu Nov 29 09:29:27 2012//
+/isAssignableFrom.java/1.2/Thu Nov 29 09:29:27 2012//
+/isEnum.java/1.1/Thu Nov 29 09:29:27 2012//
+/isInstance.java/1.2/Thu Nov 29 09:29:27 2012//
+/isInterface.java/1.2/Thu Nov 29 09:29:27 2012//
+/isLocalClass.java/1.2/Thu Nov 29 09:29:27 2012//
+/isMemberClass.java/1.2/Thu Nov 29 09:29:27 2012//
+/isPrimitive.java/1.2/Thu Nov 29 09:29:27 2012//
+/isSynthetic.java/1.2/Thu Nov 29 09:29:27 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Repository b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Repository
new file mode 100644
index 00000000..13635881
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Root b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..48b825d8
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.UnsatisfiedLinkError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.UnsatisfiedLinkError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ UnsatisfiedLinkError o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UnsatisfiedLinkError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getConstructors.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getConstructors.java
new file mode 100644
index 00000000..c0259cd6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.UnsatisfiedLinkError()", "java.lang.UnsatisfiedLinkError");
+ testedConstructors_jdk6.put("public java.lang.UnsatisfiedLinkError(java.lang.String)", "java.lang.UnsatisfiedLinkError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.UnsatisfiedLinkError()", "java.lang.UnsatisfiedLinkError");
+ testedConstructors_jdk7.put("public java.lang.UnsatisfiedLinkError(java.lang.String)", "java.lang.UnsatisfiedLinkError");
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..31253f20
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsatisfiedLinkError()", "java.lang.UnsatisfiedLinkError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsatisfiedLinkError(java.lang.String)", "java.lang.UnsatisfiedLinkError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsatisfiedLinkError()", "java.lang.UnsatisfiedLinkError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsatisfiedLinkError(java.lang.String)", "java.lang.UnsatisfiedLinkError");
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..87252e2e
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.UnsatisfiedLinkError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..df1091e2
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getFields.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getFields.java
new file mode 100644
index 00000000..c0a7def6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..0befd8ae
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getMethods.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getMethods.java
new file mode 100644
index 00000000..a6c3f7ca
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java
new file mode 100644
index 00000000..d1f70398
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java
new file mode 100644
index 00000000..fd0c8ff7
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.UnsatisfiedLinkError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java
new file mode 100644
index 00000000..70d38604
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..6ad42e4a
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UnsatisfiedLinkError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..397540c7
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.LinkageError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..8961158a
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..9bbf095c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..0a946b5f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isArray.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isArray.java
new file mode 100644
index 00000000..9f6a54cd
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..64639070
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UnsatisfiedLinkError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isEnum.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isEnum.java
new file mode 100644
index 00000000..39a2aa4d
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java
new file mode 100644
index 00000000..bf64d5f5
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new UnsatisfiedLinkError("UnsatisfiedLinkError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java
new file mode 100644
index 00000000..b476812e
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..0f35f2c4
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..3c87bd1b
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..2e4b2555
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..01dba4a6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsatisfiedLinkError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test for method java.lang.UnsatisfiedLinkError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsatisfiedLinkError
+ final Object o = new UnsatisfiedLinkError("UnsatisfiedLinkError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java b/gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java
new file mode 100644
index 00000000..3e90e323
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsatisfiedLinkError/constructor.java
@@ -0,0 +1,55 @@
+// Test if constructor is working properly for a class java.lang.UnsatisfiedLinkError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsatisfiedLinkError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsatisfiedLinkError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.UnsatisfiedLinkError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UnsatisfiedLinkError error1 = new UnsatisfiedLinkError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.UnsatisfiedLinkError");
+
+ UnsatisfiedLinkError error2 = new UnsatisfiedLinkError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.UnsatisfiedLinkError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries
new file mode 100644
index 00000000..45f1da0f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Wed Nov 28 11:48:26 2012//
+/constructor.java/1.2/Wed Nov 28 11:48:27 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries.Log b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Repository b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Repository
new file mode 100644
index 00000000..2d58c566
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsupportedClassVersionError
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Root b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java
new file mode 100644
index 00000000..05046dc4
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.UnsupportedClassVersionError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.UnsupportedClassVersionError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UnsupportedClassVersionError("UnsupportedClassVersionError");
+ }
+ catch (UnsupportedClassVersionError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Entries b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Entries
new file mode 100644
index 00000000..a2c0c998
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Wed Nov 28 11:48:27 2012//
+/getConstructors.java/1.1/Wed Nov 28 11:48:27 2012//
+/getDeclaredConstructors.java/1.1/Wed Nov 28 11:48:27 2012//
+/getDeclaredFields.java/1.1/Wed Nov 28 11:48:27 2012//
+/getDeclaredMethods.java/1.1/Wed Nov 28 11:48:27 2012//
+/getFields.java/1.1/Wed Nov 28 11:48:27 2012//
+/getInterfaces.java/1.2/Wed Nov 28 11:48:27 2012//
+/getMethods.java/1.1/Wed Nov 28 11:48:27 2012//
+/getModifiers.java/1.2/Wed Nov 28 11:48:27 2012//
+/getName.java/1.2/Wed Nov 28 11:48:27 2012//
+/getPackage.java/1.2/Wed Nov 28 11:48:27 2012//
+/getSimpleName.java/1.2/Wed Nov 28 11:48:27 2012//
+/getSuperclass.java/1.2/Wed Nov 28 11:48:27 2012//
+/isAnnotation.java/1.1/Wed Nov 28 11:48:27 2012//
+/isAnnotationPresent.java/1.1/Wed Nov 28 11:48:27 2012//
+/isAnonymousClass.java/1.1/Wed Nov 28 11:48:27 2012//
+/isArray.java/1.1/Wed Nov 28 11:48:27 2012//
+/isAssignableFrom.java/1.2/Wed Nov 28 11:48:27 2012//
+/isEnum.java/1.1/Wed Nov 28 11:48:27 2012//
+/isInstance.java/1.2/Wed Nov 28 11:48:27 2012//
+/isInterface.java/1.2/Wed Nov 28 11:48:27 2012//
+/isLocalClass.java/1.2/Wed Nov 28 11:48:27 2012//
+/isMemberClass.java/1.2/Wed Nov 28 11:48:27 2012//
+/isPrimitive.java/1.2/Wed Nov 28 11:48:27 2012//
+/isSynthetic.java/1.2/Wed Nov 28 11:48:27 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Repository b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Repository
new file mode 100644
index 00000000..e8cbd92d
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Root b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..cb76deb3
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.lang.UnsupportedClassVersionError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.lang.ClassFormatError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.UnsupportedClassVersionError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ UnsupportedClassVersionError o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UnsupportedClassVersionError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof ClassFormatError);
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getConstructors.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getConstructors.java
new file mode 100644
index 00000000..adee72c6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.UnsupportedClassVersionError()", "java.lang.UnsupportedClassVersionError");
+ testedConstructors_jdk6.put("public java.lang.UnsupportedClassVersionError(java.lang.String)", "java.lang.UnsupportedClassVersionError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.UnsupportedClassVersionError()", "java.lang.UnsupportedClassVersionError");
+ testedConstructors_jdk7.put("public java.lang.UnsupportedClassVersionError(java.lang.String)", "java.lang.UnsupportedClassVersionError");
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..ab2acab8
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedClassVersionError()", "java.lang.UnsupportedClassVersionError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedClassVersionError(java.lang.String)", "java.lang.UnsupportedClassVersionError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedClassVersionError()", "java.lang.UnsupportedClassVersionError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedClassVersionError(java.lang.String)", "java.lang.UnsupportedClassVersionError");
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..b4ac4e10
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.UnsupportedClassVersionError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..4cc0d3aa
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getFields.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getFields.java
new file mode 100644
index 00000000..d6af4654
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..5b6a91e6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getMethods.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getMethods.java
new file mode 100644
index 00000000..d32868c7
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java
new file mode 100644
index 00000000..e3937111
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java
new file mode 100644
index 00000000..4c70ca1a
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.UnsupportedClassVersionError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java
new file mode 100644
index 00000000..26c02fad
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..f73370f0
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UnsupportedClassVersionError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..954754d5
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.ClassFormatError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..e7299d01
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..b3e5865a
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..c36f245d
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isArray.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isArray.java
new file mode 100644
index 00000000..ad2d9bcb
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..fe3a296d
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UnsupportedClassVersionError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isEnum.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isEnum.java
new file mode 100644
index 00000000..ac1768bc
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java
new file mode 100644
index 00000000..cd88b119
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new UnsupportedClassVersionError("UnsupportedClassVersionError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java
new file mode 100644
index 00000000..6ea2312f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..4b7b48db
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..5569529c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..27b7c5ca
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..3dd505fc
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedClassVersionError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedClassVersionError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedClassVersionError
+ final Object o = new UnsupportedClassVersionError("UnsupportedClassVersionError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java b/gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java
new file mode 100644
index 00000000..cac46ae8
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedClassVersionError/constructor.java
@@ -0,0 +1,55 @@
+// Test if constructor is working properly for a class java.lang.UnsupportedClassVersionError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedClassVersionError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedClassVersionError;
+
+
+
+/**
+ * Test if constructor is working properly for a class java.lang.UnsupportedClassVersionError
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UnsupportedClassVersionError error1 = new UnsupportedClassVersionError();
+ harness.check(error1 != null);
+ harness.check(error1.toString(), "java.lang.UnsupportedClassVersionError");
+
+ UnsupportedClassVersionError error2 = new UnsupportedClassVersionError("nothing happens");
+ harness.check(error2 != null);
+ harness.check(error2.toString(), "java.lang.UnsupportedClassVersionError: nothing happens");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries
new file mode 100644
index 00000000..2c761138
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Tue Nov 27 09:24:33 2012//
+/constructor.java/1.2/Tue Nov 27 09:24:33 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries.Log b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Repository b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Repository
new file mode 100644
index 00000000..1cc3f807
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsupportedOperationException
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Root b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java b/gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java
new file mode 100644
index 00000000..79fe953f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.UnsupportedOperationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.UnsupportedOperationException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new UnsupportedOperationException("UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Entries b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Entries
new file mode 100644
index 00000000..dc3fc840
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Tue Nov 27 09:24:33 2012//
+/getConstructors.java/1.1/Tue Nov 27 09:24:33 2012//
+/getDeclaredConstructors.java/1.1/Tue Nov 27 09:24:33 2012//
+/getDeclaredFields.java/1.1/Tue Nov 27 09:24:33 2012//
+/getDeclaredMethods.java/1.1/Tue Nov 27 09:24:33 2012//
+/getFields.java/1.1/Tue Nov 27 09:24:33 2012//
+/getInterfaces.java/1.2/Tue Nov 27 09:24:33 2012//
+/getMethods.java/1.1/Tue Nov 27 09:24:33 2012//
+/getModifiers.java/1.2/Tue Nov 27 09:24:33 2012//
+/getName.java/1.2/Tue Nov 27 09:24:33 2012//
+/getPackage.java/1.2/Tue Nov 27 09:24:33 2012//
+/getSimpleName.java/1.2/Tue Nov 27 09:24:33 2012//
+/getSuperclass.java/1.2/Tue Nov 27 09:24:33 2012//
+/isAnnotation.java/1.1/Tue Nov 27 09:24:33 2012//
+/isAnnotationPresent.java/1.1/Tue Nov 27 09:24:33 2012//
+/isAnonymousClass.java/1.1/Tue Nov 27 09:24:33 2012//
+/isArray.java/1.1/Tue Nov 27 09:24:33 2012//
+/isAssignableFrom.java/1.2/Tue Nov 27 09:24:33 2012//
+/isEnum.java/1.1/Tue Nov 27 09:24:33 2012//
+/isInstance.java/1.2/Tue Nov 27 09:24:33 2012//
+/isInterface.java/1.2/Tue Nov 27 09:24:33 2012//
+/isLocalClass.java/1.2/Tue Nov 27 09:24:33 2012//
+/isMemberClass.java/1.2/Tue Nov 27 09:24:33 2012//
+/isPrimitive.java/1.2/Tue Nov 27 09:24:33 2012//
+/isSynthetic.java/1.2/Tue Nov 27 09:24:33 2012//
+D
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Repository b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Repository
new file mode 100644
index 00000000..3933cfe1
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/UnsupportedOperationException/classInfo
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Root b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..04f9f22c
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.UnsupportedOperationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.UnsupportedOperationException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ UnsupportedOperationException o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof UnsupportedOperationException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getConstructors.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getConstructors.java
new file mode 100644
index 00000000..7324ad12
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getConstructors.java
@@ -0,0 +1,110 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.UnsupportedOperationException()", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.String)", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.String,java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.String,java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.String)", "java.lang.UnsupportedOperationException");
+ testedConstructors_jdk7.put("public java.lang.UnsupportedOperationException()", "java.lang.UnsupportedOperationException");
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..8dba2e57
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,110 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedOperationException()", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.String)", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.String,java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk6.put("public java.lang.UnsupportedOperationException(java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.String,java.lang.Throwable)", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedOperationException(java.lang.String)", "java.lang.UnsupportedOperationException");
+ testedDeclaredConstructors_jdk7.put("public java.lang.UnsupportedOperationException()", "java.lang.UnsupportedOperationException");
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..2c87b10e
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("static final long java.lang.UnsupportedOperationException.serialVersionUID", "serialVersionUID");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("static final long java.lang.UnsupportedOperationException.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..60e961f6
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getFields.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getFields.java
new file mode 100644
index 00000000..5adb7bd5
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..49354929
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getMethods.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getMethods.java
new file mode 100644
index 00000000..3ee222f4
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java
new file mode 100644
index 00000000..385b95d4
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java
new file mode 100644
index 00000000..6ba07de8
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.UnsupportedOperationException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java
new file mode 100644
index 00000000..08810863
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..1687cbe3
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "UnsupportedOperationException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..876ae270
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotation.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..3b5c8074
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..c675d47e
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..ae70a445
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isArray.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isArray.java
new file mode 100644
index 00000000..b8d64e90
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..5f47486d
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(UnsupportedOperationException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isEnum.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isEnum.java
new file mode 100644
index 00000000..376b691f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java
new file mode 100644
index 00000000..ed40a318
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new UnsupportedOperationException("java.lang.UnsupportedOperationException")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java
new file mode 100644
index 00000000..1d9add03
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..eceea7df
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..8911978b
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..c3a11d6f
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..24c2e604
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.UnsupportedOperationException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test for method java.lang.UnsupportedOperationException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class UnsupportedOperationException
+ final Object o = new UnsupportedOperationException("java.lang.UnsupportedOperationException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/UnsupportedOperationException/constructor.java b/gnu/testlet/java/lang/UnsupportedOperationException/constructor.java
new file mode 100644
index 00000000..1d760774
--- /dev/null
+++ b/gnu/testlet/java/lang/UnsupportedOperationException/constructor.java
@@ -0,0 +1,73 @@
+// Test if instances of a class java.lang.UnsupportedOperationException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.UnsupportedOperationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.UnsupportedOperationException;
+
+
+
+/**
+ * Test if instances of a class java.lang.UnsupportedOperationException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UnsupportedOperationException object1 = new UnsupportedOperationException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.UnsupportedOperationException");
+
+ UnsupportedOperationException object2 = new UnsupportedOperationException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.UnsupportedOperationException: nothing happens");
+
+ UnsupportedOperationException object3 = new UnsupportedOperationException((String)null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.UnsupportedOperationException");
+
+ UnsupportedOperationException object4 = new UnsupportedOperationException(new Throwable());
+ harness.check(object4 != null);
+ harness.check(object4.toString(), "java.lang.UnsupportedOperationException: java.lang.Throwable");
+
+ UnsupportedOperationException object5 = new UnsupportedOperationException((Throwable)null);
+ harness.check(object5 != null);
+ harness.check(object5.toString(), "java.lang.UnsupportedOperationException");
+
+ UnsupportedOperationException object6 = new UnsupportedOperationException("nothing", new Throwable());
+ harness.check(object6 != null);
+ harness.check(object6.toString(), "java.lang.UnsupportedOperationException: nothing");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/CVS/Entries b/gnu/testlet/java/lang/VerifyError/CVS/Entries
new file mode 100644
index 00000000..72571d64
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.2/Mon Nov 26 09:33:52 2012//
+/constructor.java/1.2/Mon Nov 26 09:33:52 2012//
+D
diff --git a/gnu/testlet/java/lang/VerifyError/CVS/Entries.Log b/gnu/testlet/java/lang/VerifyError/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/lang/VerifyError/CVS/Repository b/gnu/testlet/java/lang/VerifyError/CVS/Repository
new file mode 100644
index 00000000..9a287309
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/VerifyError
diff --git a/gnu/testlet/java/lang/VerifyError/CVS/Root b/gnu/testlet/java/lang/VerifyError/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/VerifyError/TryCatch.java b/gnu/testlet/java/lang/VerifyError/TryCatch.java
new file mode 100644
index 00000000..ff6a4af3
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.lang.VerifyError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.lang.VerifyError
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new VerifyError("VerifyError");
+ }
+ catch (VerifyError e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Entries b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Entries
new file mode 100644
index 00000000..be64705c
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Mon Nov 26 09:33:52 2012//
+/getConstructors.java/1.1/Mon Nov 26 09:33:52 2012//
+/getDeclaredConstructors.java/1.1/Mon Nov 26 09:33:52 2012//
+/getDeclaredFields.java/1.1/Mon Nov 26 09:33:52 2012//
+/getDeclaredMethods.java/1.1/Mon Nov 26 09:33:52 2012//
+/getFields.java/1.1/Mon Nov 26 09:33:52 2012//
+/getInterfaces.java/1.2/Mon Nov 26 09:33:52 2012//
+/getMethods.java/1.1/Mon Nov 26 09:33:52 2012//
+/getModifiers.java/1.2/Mon Nov 26 09:33:52 2012//
+/getName.java/1.2/Mon Nov 26 09:33:52 2012//
+/getPackage.java/1.2/Mon Nov 26 09:33:52 2012//
+/getSimpleName.java/1.2/Mon Nov 26 09:33:52 2012//
+/getSuperclass.java/1.2/Mon Nov 26 09:33:52 2012//
+/isAnnotation.java/1.1/Mon Nov 26 09:33:52 2012//
+/isAnnotationPresent.java/1.1/Mon Nov 26 09:33:52 2012//
+/isAnonymousClass.java/1.1/Mon Nov 26 09:33:52 2012//
+/isArray.java/1.1/Mon Nov 26 09:33:52 2012//
+/isAssignableFrom.java/1.2/Mon Nov 26 09:33:52 2012//
+/isEnum.java/1.1/Mon Nov 26 09:33:52 2012//
+/isInstance.java/1.2/Mon Nov 26 09:33:52 2012//
+/isInterface.java/1.2/Mon Nov 26 09:33:52 2012//
+/isLocalClass.java/1.2/Mon Nov 26 09:33:52 2012//
+/isMemberClass.java/1.2/Mon Nov 26 09:33:52 2012//
+/isPrimitive.java/1.2/Mon Nov 26 09:33:52 2012//
+/isSynthetic.java/1.2/Mon Nov 26 09:33:52 2012//
+D
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Repository b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Repository
new file mode 100644
index 00000000..be44db92
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/VerifyError/classInfo
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Root b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java b/gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java
new file mode 100644
index 00000000..b1e805b7
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.lang.VerifyError
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.lang.LinkageError;
+import java.lang.Error;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.lang.VerifyError
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ VerifyError o = new VerifyError("VerifyError");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof VerifyError);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof LinkageError);
+ harness.check(o instanceof Error);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getConstructors.java b/gnu/testlet/java/lang/VerifyError/classInfo/getConstructors.java
new file mode 100644
index 00000000..25390179
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.VerifyError.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.lang.VerifyError()", "java.lang.VerifyError");
+ testedConstructors_jdk6.put("public java.lang.VerifyError(java.lang.String)", "java.lang.VerifyError");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.lang.VerifyError()", "java.lang.VerifyError");
+ testedConstructors_jdk7.put("public java.lang.VerifyError(java.lang.String)", "java.lang.VerifyError");
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..21719660
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,106 @@
+// Test for method java.lang.VerifyError.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.lang.VerifyError()", "java.lang.VerifyError");
+ testedDeclaredConstructors_jdk6.put("public java.lang.VerifyError(java.lang.String)", "java.lang.VerifyError");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.lang.VerifyError()", "java.lang.VerifyError");
+ testedDeclaredConstructors_jdk7.put("public java.lang.VerifyError(java.lang.String)", "java.lang.VerifyError");
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredFields.java b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..35f83a77
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredFields.java
@@ -0,0 +1,102 @@
+// Test for method java.lang.VerifyError.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.lang.VerifyError.serialVersionUID", "serialVersionUID");
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredMethods.java b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..3a398870
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getDeclaredMethods.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.VerifyError.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ // --- empty ---
+
+ // map for methods declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getFields.java b/gnu/testlet/java/lang/VerifyError/classInfo/getFields.java
new file mode 100644
index 00000000..b2d6902f
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.lang.VerifyError.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java b/gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java
new file mode 100644
index 00000000..44d5e993
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.lang.VerifyError.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getMethods.java b/gnu/testlet/java/lang/VerifyError/classInfo/getMethods.java
new file mode 100644
index 00000000..455f23cd
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getMethods.java
@@ -0,0 +1,142 @@
+// Test for method java.lang.VerifyError.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java b/gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java
new file mode 100644
index 00000000..c3114333
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.lang.VerifyError.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getName.java b/gnu/testlet/java/lang/VerifyError/classInfo/getName.java
new file mode 100644
index 00000000..f4bd473b
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.lang.VerifyError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java b/gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java
new file mode 100644
index 00000000..c5bb44b2
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.VerifyError.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.lang");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java b/gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java
new file mode 100644
index 00000000..2352759a
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "VerifyError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java b/gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java
new file mode 100644
index 00000000..15a49937
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.lang.VerifyError.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.LinkageError");
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotation.java b/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotation.java
new file mode 100644
index 00000000..27a80987
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotationPresent.java b/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..8828b230
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.lang.VerifyError.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isAnonymousClass.java b/gnu/testlet/java/lang/VerifyError/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..0b038c89
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isArray.java b/gnu/testlet/java/lang/VerifyError/classInfo/isArray.java
new file mode 100644
index 00000000..12c8f3b7
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java b/gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..bc3f6af2
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(VerifyError.class));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isEnum.java b/gnu/testlet/java/lang/VerifyError/classInfo/isEnum.java
new file mode 100644
index 00000000..36274624
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java b/gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java
new file mode 100644
index 00000000..144465e5
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new VerifyError("VerifyError")));
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java b/gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java
new file mode 100644
index 00000000..b4a61ef4
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java b/gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java
new file mode 100644
index 00000000..64a1054f
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java b/gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java
new file mode 100644
index 00000000..472b633d
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java b/gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java
new file mode 100644
index 00000000..8cc1713d
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java b/gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java
new file mode 100644
index 00000000..075e535e
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.lang.VerifyError.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test for method java.lang.VerifyError.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class VerifyError
+ final Object o = new VerifyError("VerifyError");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/lang/VerifyError/constructor.java b/gnu/testlet/java/lang/VerifyError/constructor.java
new file mode 100644
index 00000000..b05ff3ff
--- /dev/null
+++ b/gnu/testlet/java/lang/VerifyError/constructor.java
@@ -0,0 +1,61 @@
+// Test if instances of a class java.lang.VerifyError could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.lang.VerifyError;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.VerifyError;
+
+
+
+/**
+ * Test if instances of a class java.lang.VerifyError
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ VerifyError object1 = new VerifyError();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.lang.VerifyError");
+
+ VerifyError object2 = new VerifyError("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.lang.VerifyError: nothing happens");
+
+ VerifyError object3 = new VerifyError(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.lang.VerifyError");
+
+ }
+}
+
diff --git a/gnu/testlet/java/lang/management/BadGuy.java b/gnu/testlet/java/lang/management/BadGuy.java
new file mode 100644
index 00000000..e5656b9e
--- /dev/null
+++ b/gnu/testlet/java/lang/management/BadGuy.java
@@ -0,0 +1,87 @@
+// Tags: not-a-test
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.lang.management;
+
+import java.lang.management.ManagementPermission;
+
+import java.security.Permission;
+import java.security.AccessControlException;
+
+import java.util.PropertyPermission;
+
+/**
+ * An evil {@link java.lang.SecurityManager} which disallows use
+ * of the management beans.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class BadGuy
+ extends SecurityManager
+{
+
+ private final Permission propertyPermission = new PropertyPermission("*", "read,write");
+ private final Permission monitorPermission = new ManagementPermission("monitor");
+ private final Permission controlPermission = new ManagementPermission("control");
+
+ private SecurityManager oldManager;
+
+ /**
+ * Checks permissions and disallows property access or management
+ * control and monitoring.
+ *
+ * @param p the request permission.
+ * @throws AccessControlException if property access, management control,
+ * or monitoring is requested.
+ */
+ public void checkPermission(Permission p)
+ {
+ if (propertyPermission.implies(p))
+ throw new AccessControlException("Property access disallowed.", p);
+ if (controlPermission.implies(p))
+ throw new AccessControlException("Management control disallowed.", p);
+ if (monitorPermission.implies(p))
+ throw new AccessControlException("Monitoring disallowed.", p);
+ }
+
+ /**
+ * Installs this security manager in place of the current one.
+ */
+ public void install()
+ {
+ SecurityManager oldsm = System.getSecurityManager();
+
+ if (oldsm == this)
+ throw new IllegalStateException("already installed");
+
+ oldManager = oldsm;
+ System.setSecurityManager(this);
+ }
+
+ /**
+ * Reinstates the original security manager.
+ */
+ public void uninstall()
+ {
+ System.setSecurityManager(oldManager);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/management/CVS/Entries b/gnu/testlet/java/lang/management/CVS/Entries
new file mode 100644
index 00000000..0391c88a
--- /dev/null
+++ b/gnu/testlet/java/lang/management/CVS/Entries
@@ -0,0 +1,5 @@
+/BadGuy.java/1.1/Sat Jun 24 21:08:18 2006//
+/ClassLoadingMXBeanTest.java/1.2/Wed May 21 14:30:18 2008//
+/OperatingSystemMXBeanTest.java/1.2/Wed May 21 14:30:18 2008//
+/RuntimeMXBeanTest.java/1.2/Wed May 21 14:30:18 2008//
+D
diff --git a/gnu/testlet/java/lang/management/CVS/Repository b/gnu/testlet/java/lang/management/CVS/Repository
new file mode 100644
index 00000000..b68f3267
--- /dev/null
+++ b/gnu/testlet/java/lang/management/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/management
diff --git a/gnu/testlet/java/lang/management/CVS/Root b/gnu/testlet/java/lang/management/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/management/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java b/gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java
new file mode 100644
index 00000000..4bb637f4
--- /dev/null
+++ b/gnu/testlet/java/lang/management/ClassLoadingMXBeanTest.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.5
+// Uses: BadGuy
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.lang.management;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.management.ClassLoadingMXBean;
+import java.lang.management.ManagementFactory;
+
+/**
+ * Gets hold of a class loading management bean from the
+ * @link{java.lang.management.ManagementFactory} and
+ * test its security.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class ClassLoadingMXBeanTest
+ implements Testlet
+{
+
+ private BadGuy bg = new BadGuy();
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ Exception caught = null;
+ ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();
+
+ bg.install();
+
+ // Check getName
+ caught = null;
+ try
+ {
+ bean.setVerbose(true);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "verbose");
+
+ }
+ finally
+ {
+ bg.uninstall();
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java b/gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java
new file mode 100644
index 00000000..55f4e44a
--- /dev/null
+++ b/gnu/testlet/java/lang/management/OperatingSystemMXBeanTest.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.5
+// Uses: BadGuy
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.lang.management;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
+
+/**
+ * Gets hold of a OS management bean from the
+ * @link{java.lang.management.ManagementFactory} and
+ * test its security.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class OperatingSystemMXBeanTest
+ implements Testlet
+{
+
+ private BadGuy bg = new BadGuy();
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ Exception caught = null;
+ OperatingSystemMXBean bean = ManagementFactory.getOperatingSystemMXBean();
+
+ bg.install();
+
+ // Check getName
+ caught = null;
+ try
+ {
+ bean.getName();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "name");
+
+ // Check getArch
+ caught = null;
+ try
+ {
+ bean.getArch();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "arch");
+
+ // Check getVersion
+ caught = null;
+ try
+ {
+ bean.getVersion();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "version");
+
+ }
+ finally
+ {
+ bg.uninstall();
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/management/RuntimeMXBeanTest.java b/gnu/testlet/java/lang/management/RuntimeMXBeanTest.java
new file mode 100644
index 00000000..4cd4790a
--- /dev/null
+++ b/gnu/testlet/java/lang/management/RuntimeMXBeanTest.java
@@ -0,0 +1,196 @@
+// Tags: JDK1.5
+// Uses: BadGuy
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.lang.management;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+
+/**
+ * Gets hold of a runtime management bean from the
+ * @link{java.lang.management.ManagementFactory} and
+ * test its security.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class RuntimeMXBeanTest
+ implements Testlet
+{
+
+ private BadGuy bg = new BadGuy();
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ Exception caught = null;
+ RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
+
+ bg.install();
+
+ // Check getVmName
+ caught = null;
+ try
+ {
+ bean.getVmName();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "vmName");
+
+ // Check getVmVendor
+ caught = null;
+ try
+ {
+ bean.getVmVendor();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "vmVendor");
+
+ // Check getVmVersion
+ caught = null;
+ try
+ {
+ bean.getVmVersion();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "vmVersion");
+
+ // Check getSpecName
+ caught = null;
+ try
+ {
+ bean.getSpecName();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "specName");
+
+ // Check getSpecVendor
+ caught = null;
+ try
+ {
+ bean.getSpecVendor();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "specVendor");
+
+ // Check getSpecVersion
+ caught = null;
+ try
+ {
+ bean.getSpecVersion();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "specVersion");
+
+ // Check getClassPath
+ caught = null;
+ try
+ {
+ bean.getClassPath();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "classPath");
+
+ // Check getLibraryPath
+ caught = null;
+ try
+ {
+ bean.getLibraryPath();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "libraryPath");
+
+ // Check getBootClassPath
+ caught = null;
+ try
+ {
+ bean.getBootClassPath();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ if (bean.isBootClassPathSupported())
+ h.check(caught instanceof SecurityException, "bootClassPath");
+ else
+ h.check(caught instanceof UnsupportedOperationException, "bootClassPath");
+
+ // Check getInputArguments
+ caught = null;
+ try
+ {
+ bean.getInputArguments();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "inputArguments");
+
+ // Check getSystemProperties
+ caught = null;
+ try
+ {
+ bean.getSystemProperties();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "systemProperties");
+
+ }
+ finally
+ {
+ bg.uninstall();
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/lang/ref/CVS/Entries b/gnu/testlet/java/lang/ref/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/lang/ref/CVS/Entries.Log b/gnu/testlet/java/lang/ref/CVS/Entries.Log
new file mode 100644
index 00000000..3e56605a
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/PhantomReference////
+A D/WeakReference////
diff --git a/gnu/testlet/java/lang/ref/CVS/Repository b/gnu/testlet/java/lang/ref/CVS/Repository
new file mode 100644
index 00000000..dcb46268
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ref
diff --git a/gnu/testlet/java/lang/ref/CVS/Root b/gnu/testlet/java/lang/ref/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ref/PhantomReference/CVS/Entries b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Entries
new file mode 100644
index 00000000..60595147
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Entries
@@ -0,0 +1,2 @@
+/phantom.java/1.5/Thu Dec 30 20:37:20 2004//
+D
diff --git a/gnu/testlet/java/lang/ref/PhantomReference/CVS/Repository b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Repository
new file mode 100644
index 00000000..cd5c3e5f
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ref/PhantomReference
diff --git a/gnu/testlet/java/lang/ref/PhantomReference/CVS/Root b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/PhantomReference/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ref/PhantomReference/phantom.java b/gnu/testlet/java/lang/ref/PhantomReference/phantom.java
new file mode 100644
index 00000000..707c51a6
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/PhantomReference/phantom.java
@@ -0,0 +1,118 @@
+// Test of PhantomReference
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.2
+
+// In this test we make some assumptions about how the GC operates
+// that are probably not quite sound. In particular we assume
+// System.gc() will collect everything.
+
+package gnu.testlet.java.lang.ref.PhantomReference;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.ref.*;
+
+public class phantom implements Testlet
+{
+ public static int final_count = 0;
+ public static phantom nogc;
+
+ public phantom ()
+ {
+ }
+
+ public void finalize ()
+ {
+ ++final_count;
+ }
+
+ static class Reffer extends Thread
+ {
+ ReferenceQueue q;
+ TestHarness harness;
+ PhantomReference wr;
+ phantom twt;
+
+ public Reffer (ReferenceQueue q, TestHarness harness)
+ {
+ this.q = q;
+ this.harness = harness;
+ }
+
+ public void run()
+ {
+ twt = new phantom ();
+ wr = new PhantomReference (twt, q);
+
+ // Give the runtime some hints that it should really garbage collect.
+ System.gc ();
+ System.runFinalization();
+ System.gc ();
+ System.runFinalization();
+
+ Reference r = q.poll ();
+ harness.check (r, null, "live reference");
+ harness.check (final_count, 0);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+
+ // Make sure 'this' is not finalized while running the test.
+ nogc = this;
+
+ ReferenceQueue q = new ReferenceQueue ();
+
+ // Create reference in a separate thread so no inadvertent references
+ // to the contained object are left on the stack, which causes VM's that
+ // do conservative stack GC scans to report false negatives for this test.
+ Reffer reffer = new Reffer(q, harness);
+ reffer.start();
+ try {
+ reffer.join();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ PhantomReference wr = reffer.wr;
+
+ // Phantom reference "should" get cleared here
+ reffer.twt = null;
+ System.gc ();
+ System.runFinalization();
+ System.gc ();
+ System.runFinalization();
+
+ Reference r = null;
+ try
+ {
+ r = q.remove (5 * 1000); // 5 seconds.
+ }
+ catch (InterruptedException _)
+ {
+ harness.debug (_);
+ }
+
+ harness.check (r, wr, "unreachable");
+ harness.check (final_count, 1, "object finalized");
+ }
+}
diff --git a/gnu/testlet/java/lang/ref/WeakReference/CVS/Entries b/gnu/testlet/java/lang/ref/WeakReference/CVS/Entries
new file mode 100644
index 00000000..b437160e
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/WeakReference/CVS/Entries
@@ -0,0 +1,2 @@
+/weakref.java/1.2/Thu Dec 30 20:37:20 2004//
+D
diff --git a/gnu/testlet/java/lang/ref/WeakReference/CVS/Repository b/gnu/testlet/java/lang/ref/WeakReference/CVS/Repository
new file mode 100644
index 00000000..f024e9ab
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/WeakReference/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/ref/WeakReference
diff --git a/gnu/testlet/java/lang/ref/WeakReference/CVS/Root b/gnu/testlet/java/lang/ref/WeakReference/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/WeakReference/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/ref/WeakReference/weakref.java b/gnu/testlet/java/lang/ref/WeakReference/weakref.java
new file mode 100644
index 00000000..7449a4ad
--- /dev/null
+++ b/gnu/testlet/java/lang/ref/WeakReference/weakref.java
@@ -0,0 +1,96 @@
+// Test of WeakReference
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.2
+
+// In this test we make some assumptions about how the GC operates
+// that are probably not quite sound. In particular we assume
+// System.gc() will collect everything.
+
+package gnu.testlet.java.lang.ref.WeakReference;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.ref.*;
+
+public class weakref implements Testlet
+{
+
+ static class Reffer extends Thread
+ {
+ ReferenceQueue q;
+ TestHarness harness;
+ WeakReference wr;
+ Integer twt;
+
+ public Reffer (ReferenceQueue q, TestHarness harness)
+ {
+ this.q = q;
+ this.harness = harness;
+ }
+
+ public void run()
+ {
+ twt = new Integer (23);
+ wr = new WeakReference (twt, q);
+
+ System.gc ();
+
+ Reference r = q.poll ();
+ harness.check (r, null, "live reference");
+ harness.check (wr.get (), twt);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ ReferenceQueue q = new ReferenceQueue ();
+
+ // Create reference in a separate thread so no inadvertent references
+ // to the contained object are left on the stack, which causes VM's that
+ // do conservative stack GC scans to report false negatives for this test.
+ Reffer reffer = new Reffer(q, harness);
+ reffer.start();
+ try {
+ reffer.join();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ WeakReference wr = reffer.wr;
+
+ // Weak reference "should" get cleared here
+ reffer.twt = null;
+ System.gc ();
+
+ Reference r = null;
+ try
+ {
+ r = q.remove (5 * 1000); // 5 seconds.
+ }
+ catch (InterruptedException _)
+ {
+ harness.debug (_);
+ }
+
+ harness.check (r, wr, "unreachable");
+ harness.check (wr.get (), null, "contents of weak reference");
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/.cvsignore b/gnu/testlet/java/lang/reflect/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Entries b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Entries
new file mode 100644
index 00000000..5654195e
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Entries
@@ -0,0 +1,3 @@
+/accessible.java/1.1/Tue Aug 5 19:17:38 2003//
+/security.java/1.3/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Repository b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Repository
new file mode 100644
index 00000000..b5b5928e
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/AccessibleObject
diff --git a/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Root b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/AccessibleObject/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/AccessibleObject/accessible.java b/gnu/testlet/java/lang/reflect/AccessibleObject/accessible.java
new file mode 100644
index 00000000..2cd328d0
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/AccessibleObject/accessible.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.lang.reflect.AccessibleObject;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.*;
+import java.io.*;
+
+public class accessible implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ Class cl_class = Class.forName("java.lang.ClassLoader");
+
+ // There is a protected no-argument ClassLoader() constructor.
+ Class[] params = new Class[0];
+ Constructor cl_cons = cl_class.getDeclaredConstructor(params);
+ harness.check(!cl_cons.isAccessible());
+
+ cl_cons.setAccessible(true);
+ harness.check(cl_cons.isAccessible());
+
+ // Get a new Constructor to check that it isn't accessible.
+ cl_cons = cl_class.getDeclaredConstructor(params);
+ harness.check(!cl_cons.isAccessible());
+
+ // ClassLoader.findLoadedClass(String) is a protected method.
+ params = new Class[1];
+ params[0] = Class.forName("java.lang.String");
+ Method m = cl_class.getDeclaredMethod("findLoadedClass", params);
+ harness.check(!m.isAccessible());
+
+ m.setAccessible(true);
+ harness.check(m.isAccessible());
+
+ // Get a new Member to check that is isn't accessible.
+ m = cl_class.getDeclaredMethod("findLoadedClass", params);
+ harness.check(!m.isAccessible());
+
+ // Take some random protected field from DataInputStream.
+ DataInputStream dis
+ = new DataInputStream(new ByteArrayInputStream(new byte[0]));
+ Class dis_cl = dis.getClass();
+ Class fis_cl = dis_cl.getSuperclass();
+ Field dis_f = fis_cl.getDeclaredField("in");
+ harness.check(!dis_f.isAccessible());
+
+ dis_f.setAccessible(true);
+ harness.check(dis_f.isAccessible());
+
+ // Get a new Field to check that is isn't accessible.
+ dis_f = fis_cl.getDeclaredField("in");
+ harness.check(!dis_f.isAccessible());
+
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.fail(t.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/AccessibleObject/security.java b/gnu/testlet/java/lang/reflect/AccessibleObject/security.java
new file mode 100644
index 00000000..14b4ff45
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/AccessibleObject/security.java
@@ -0,0 +1,138 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.lang.reflect.AccessibleObject;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ReflectPermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("constructor");
+ Constructor constructor =
+ ClassLoader.class.getDeclaredConstructor(new Class[0]);
+ int mods = constructor.getModifiers();
+ harness.check(Modifier.isPrivate(mods) || Modifier.isProtected(mods));
+ try {
+ constructor.newInstance(new Object[0]);
+ harness.check(false);
+ }
+ catch (IllegalAccessException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("field");
+ Field field = String.class.getDeclaredField("serialVersionUID");
+ mods = field.getModifiers();
+ harness.check(Modifier.isPrivate(mods) || Modifier.isProtected(mods));
+ try {
+ field.get("");
+ harness.check(false);
+ }
+ catch (IllegalAccessException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("method");
+ Method method =
+ ClassLoader.class.getDeclaredMethod("getPackages", new Class[0]);
+ mods = method.getModifiers();
+ harness.check(Modifier.isPrivate(mods) || Modifier.isProtected(mods));
+ try {
+ method.invoke(getClass().getClassLoader(), new Object[0]);
+ harness.check(false);
+ }
+ catch (IllegalAccessException ex) {
+ harness.check(true);
+ }
+
+ AccessibleObject[] objects =
+ new AccessibleObject[] {constructor, field, method};
+
+ AccessibleObject class_constructor =
+ Class.class.getDeclaredConstructors()[0];
+
+ Permission[] suppressAccessChecks = new Permission[] {
+ new ReflectPermission("suppressAccessChecks")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.lang.reflect.AccessibleObject-setAccessible(boolean)
+ harness.checkPoint("setAccessible (per-object)");
+ for (int i = 0; i < objects.length; i++) {
+ try {
+ sm.prepareChecks(suppressAccessChecks);
+ objects[i].setAccessible(true);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ harness.checkPoint("setAccessible (class constructor)");
+ try {
+ sm.prepareChecks(suppressAccessChecks);
+ class_constructor.setAccessible(true);
+ harness.check(false);
+ }
+ catch (SecurityException ex) {
+ sm.checkAllChecked();
+ }
+
+ // throwpoint: java.lang.reflect.AccessibleObject-setAccessible(AccessibleObject[], boolean)
+ harness.checkPoint("setAccessible (array)");
+ try {
+ sm.prepareChecks(suppressAccessChecks);
+ AccessibleObject.setAccessible(objects, true);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Array/CVS/Entries b/gnu/testlet/java/lang/reflect/Array/CVS/Entries
new file mode 100644
index 00000000..de69889c
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Array/CVS/Entries
@@ -0,0 +1,3 @@
+/newInstance.java/1.6/Sun May 30 12:37:36 2004//
+/set.java/1.2/Tue Sep 9 22:10:23 2003//
+D
diff --git a/gnu/testlet/java/lang/reflect/Array/CVS/Repository b/gnu/testlet/java/lang/reflect/Array/CVS/Repository
new file mode 100644
index 00000000..bbc10b29
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Array/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Array
diff --git a/gnu/testlet/java/lang/reflect/Array/CVS/Root b/gnu/testlet/java/lang/reflect/Array/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Array/newInstance.java b/gnu/testlet/java/lang/reflect/Array/newInstance.java
new file mode 100644
index 00000000..41214585
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Array/newInstance.java
@@ -0,0 +1,418 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2000, 2001 Red Hat, Inc.
+
+// 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.java.lang.reflect.Array;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Array;
+
+public class newInstance implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+
+ harness.checkPoint("Void.TYPE");
+ int val = 0;
+ Object x = null;
+ try
+ {
+ x = Array.newInstance(Void.TYPE, 10);
+ val = 1;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ val = 2;
+ }
+ catch (NullPointerException npe)
+ {
+ val = 4;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 2);
+ try
+ {
+ harness.check(x, null); //Some Sun-based JDKs don't return null here
+ }
+ catch (InternalError ie)
+ {
+ harness.check(null, ie);
+ }
+
+ harness.checkPoint("Integer.TYPE");
+
+ try
+ {
+ x = Array.newInstance(Integer.TYPE, 10);
+ val = 1;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ val = 2;
+ }
+ catch (NullPointerException npe)
+ {
+ val = 4;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 1);
+
+ val = 999;
+
+ try
+ {
+ val = ((int[]) x).length;
+ }
+ catch (ClassCastException cce)
+ {
+ val = 99;
+ }
+ harness.check(val, 10);
+
+ val = 0;
+
+ try
+ {
+ if (x.getClass().getComponentType() == Integer.TYPE)
+ val = 1;
+ }
+ catch (Throwable t)
+ {
+ val = 2;
+ }
+ harness.check(val, 1);
+
+ harness.checkPoint("NegativeArraySize");
+
+ try
+ {
+ x = Array.newInstance(String.class, -101);
+ val = 1;
+ }
+ catch (NegativeArraySizeException nas)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ harness.checkPoint("multi-dimensional");
+ val = 0;
+ try
+ {
+ x = Array.newInstance(String.class, null);
+ val = 1;
+ }
+ catch (NullPointerException e)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ val = 0;
+ try
+ {
+ x = Array.newInstance(String.class, new int[0]);
+ val = 1;
+ }
+ catch (IllegalArgumentException e)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ // This test is wrong: 255 is a potential limit, but not a
+ // specified limit.
+// val = 0;
+// try
+// {
+// x = Array.newInstance(String.class, new int[256]);
+// val = 1;
+// }
+// catch (IllegalArgumentException e)
+// {
+// val = 2;
+// }
+// catch (Throwable t)
+// {
+// val = 3;
+// }
+/// harness.check(val, 2);
+
+ val = 0;
+ try
+ {
+ // Some Sun JDKs croak, even though this is legal
+ x = Array.newInstance(String.class, new int[255]);
+ val = 1;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 2;
+ }
+ harness.check(val, 1);
+
+ val = 0;
+ try
+ {
+ // Note that the non-reflective version, new String[0][-1], should
+ // also fail, but does not on certain VMs; hence an additional test
+ x = Array.newInstance(String.class, new int[] {0, -1});
+ val = 1;
+ }
+ catch (NegativeArraySizeException e)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ val = 0;
+ try
+ {
+ x = new int[0][-1];
+ val = 1;
+ }
+ catch (NegativeArraySizeException e)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ val = 0;
+ try
+ {
+ x = Array.newInstance(String.class, new int[]
+ {Integer.MAX_VALUE, Integer.MAX_VALUE});
+ val = 1;
+ }
+ catch (OutOfMemoryError e)
+ {
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ harness.checkPoint("array");
+ Class c = null;
+ val = 0;
+ try
+ {
+ // see above for why this is not 255
+ x = Array.newInstance(String.class, new int[254]);
+ c = x.getClass(); // faster than writing String[]...[].class
+ }
+ catch (Throwable t)
+ {
+ val = 1;
+ }
+
+ // This is invalid: it is ok to have an array with >255
+ // dimensions.
+// try
+// {
+// x = Array.newInstance(c, new int[] {1, 1});
+// val = 2;
+// }
+// catch (IllegalArgumentException e)
+// {
+// val = 3;
+// }
+// catch (Throwable t)
+// {
+// val = 4;
+// }
+// harness.check(val, 3);
+
+ try
+ {
+ x = Array.newInstance(c, 1);
+ val = 5;
+ }
+ catch (Throwable t)
+ {
+ val = 6;
+ }
+ harness.check(val, 5);
+
+ // Another invalid test.
+// try
+// {
+// x = Array.newInstance(x.getClass(), 1);
+// val = 7;
+// }
+// catch (IllegalArgumentException e)
+// {
+// val = 8;
+// }
+// catch (Throwable t)
+// {
+// val = 9;
+// }
+// harness.check(val, 8);
+
+ // Also invalid.
+// try
+// {
+// x = Array.newInstance(x.getClass(), new int[] {1, 1});
+// val = 10;
+// }
+// catch (IllegalArgumentException e)
+// {
+// val = 11;
+// }
+// catch (Throwable t)
+// {
+// val = 12;
+// }
+// harness.check(val, 11);
+
+ val = 0;
+ try
+ {
+ x = Array.newInstance(int[].class, 1);
+ val = 1;
+ if (((int[][]) x).length == 1)
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ harness.checkPoint("interface");
+ val = 0;
+ try
+ {
+ x = Array.newInstance(Runnable.class, 5);
+ val = 1;
+ }
+ catch (Throwable t)
+ {
+ val = 2;
+ }
+ harness.check(val, 1);
+
+ try
+ {
+ val = ((Runnable[]) x).length;
+ }
+ catch (ClassCastException cce)
+ {
+ val = 3;
+ }
+ harness.check(val, 5);
+
+ val = 0;
+ try
+ {
+ if (x.getClass().getComponentType() == Runnable.class)
+ val = 1;
+ if (((Runnable[]) x)[0] == null)
+ val = 2;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 2);
+
+ harness.checkPoint("String");
+ x = "check";
+ val = 0;
+ try
+ {
+ x = Array.newInstance(String.class, 100);
+ val = 1;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ val = 2;
+ }
+ catch (NullPointerException npe)
+ {
+ val = 4;
+ }
+ catch (Throwable t)
+ {
+ val = 3;
+ }
+ harness.check(val, 1);
+
+ try
+ {
+ val = ((String[]) x).length;
+ }
+ catch (ClassCastException cce)
+ {
+ val = 99;
+ }
+ harness.check(val, 100);
+ harness.debug(x.getClass().toString());
+
+ val = 0;
+ try
+ {
+ if (x.getClass().getComponentType() == String.class
+ && ((String[]) x)[0] == null)
+ val = 1;
+ }
+ catch (Throwable t)
+ {
+ val = 2;
+ }
+ harness.check(val, 1);
+
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Array/set.java b/gnu/testlet/java/lang/reflect/Array/set.java
new file mode 100644
index 00000000..613e575d
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Array/set.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Red Hat, Inc.
+
+// 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.java.lang.reflect.Array;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Array;
+
+public class set implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Throwable[] x = new Throwable[5];
+ Array.set (x, 0, null);
+ harness.check (x[0], null);
+
+ Throwable t = new Throwable();
+ Array.set (x, 1, t);
+ harness.check(x[1], t);
+
+ Exception e = new Exception();
+ Array.set (x, 2, e);
+ harness.check(x[2], e);
+
+ Object o = new Object();
+ boolean exception_thrown = false;
+ try
+ {
+ Array.set (x, 3, o);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ harness.check(x[3], null);
+
+ String s = "string";
+ exception_thrown = false;
+ try
+ {
+ Array.set (x, 4, s);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ harness.check(x[4], null);
+
+ exception_thrown = false;
+ try
+ {
+ Array.set (x, 5, t);
+ }
+ catch (ArrayIndexOutOfBoundsException aioobe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/CVS/Entries b/gnu/testlet/java/lang/reflect/CVS/Entries
new file mode 100644
index 00000000..a86f0ee7
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/CVS/Entries
@@ -0,0 +1,4 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:37 1998//
+/Other.java/1.2/Tue Nov 29 14:06:41 2005//
+/ReflectAccess.java/1.3/Fri Apr 23 14:52:59 2004//
+D
diff --git a/gnu/testlet/java/lang/reflect/CVS/Entries.Log b/gnu/testlet/java/lang/reflect/CVS/Entries.Log
new file mode 100644
index 00000000..383c1588
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/CVS/Entries.Log
@@ -0,0 +1,9 @@
+A D/AccessibleObject////
+A D/Array////
+A D/Constructor////
+A D/Field////
+A D/InvocationTargetException////
+A D/Method////
+A D/Modifier////
+A D/Proxy////
+A D/sub////
diff --git a/gnu/testlet/java/lang/reflect/CVS/Repository b/gnu/testlet/java/lang/reflect/CVS/Repository
new file mode 100644
index 00000000..230168d6
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect
diff --git a/gnu/testlet/java/lang/reflect/CVS/Root b/gnu/testlet/java/lang/reflect/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Constructor/CVS/Entries b/gnu/testlet/java/lang/reflect/Constructor/CVS/Entries
new file mode 100644
index 00000000..d195fa2d
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Constructor/CVS/Entries
@@ -0,0 +1,3 @@
+/newInstance.java/1.3/Thu Aug 9 15:56:00 2001//
+/toString.java/1.1/Sun Mar 5 17:49:53 2006/-kk/
+D
diff --git a/gnu/testlet/java/lang/reflect/Constructor/CVS/Repository b/gnu/testlet/java/lang/reflect/Constructor/CVS/Repository
new file mode 100644
index 00000000..b54c5d45
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Constructor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Constructor
diff --git a/gnu/testlet/java/lang/reflect/Constructor/CVS/Root b/gnu/testlet/java/lang/reflect/Constructor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Constructor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Constructor/newInstance.java b/gnu/testlet/java/lang/reflect/Constructor/newInstance.java
new file mode 100644
index 00000000..1dd169ec
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Constructor/newInstance.java
@@ -0,0 +1,160 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2000, 2001 Cygnus Solutions
+
+// 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.java.lang.reflect.Constructor;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+public class newInstance implements Testlet
+{
+ public int dot;
+
+ private newInstance (int z)
+ {
+ dot = z;
+ }
+
+ private newInstance (char z)
+ {
+ dot = (int) z;
+ }
+
+ public newInstance (String q, String z)
+ {
+ throw new NullPointerException ();
+ }
+
+ public newInstance ()
+ {
+ dot = 7;
+ }
+
+ public Class getClass (String name)
+ {
+ Class k = null;
+ try
+ {
+ k = Class.forName (name);
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ return k;
+ }
+
+ public Constructor getCons (Class k, Class[] ptypes)
+ {
+ Constructor c = null;
+ try
+ {
+ c = k.getDeclaredConstructor(ptypes);
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ return c;
+ }
+
+ public Object callNew (Constructor cons, Object[] args)
+ {
+ try
+ {
+ return cons.newInstance(args);
+ }
+ catch (Throwable _)
+ {
+ return _;
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Class ni_class = getClass ("gnu.testlet.java.lang.reflect.Constructor.newInstance");
+ Class S_class = getClass ("java.lang.String");
+ Class i_class = Integer.TYPE;
+
+ Class[] args0 = new Class[0];
+ Class[] args1 = new Class[1];
+ args1[0] = i_class;
+ Class[] args2 = new Class[2];
+ args2[0] = args2[1] = S_class;
+ Class[] argsc = new Class[1];
+ argsc[0] = Character.TYPE;
+
+ harness.checkPoint ("no args");
+ Constructor c0 = getCons (ni_class, args0);
+ Object r = callNew (c0, new Object[0]);
+ harness.check(r instanceof newInstance);
+ harness.check(((newInstance) r).dot == 7);
+
+ // null argument list is ok because constructor has no arguments.
+ r = callNew (c0, null);
+ harness.check(r instanceof newInstance);
+ harness.check(((newInstance) r).dot == 7);
+
+ harness.checkPoint ("int arg");
+ Constructor c1 = getCons (ni_class, args1);
+ Object[] a1 = new Object[1];
+ a1[0] = new Integer (23);
+ r = callNew (c1, a1);
+ harness.check(r instanceof newInstance);
+ harness.check(((newInstance) r).dot == 23);
+ // Check that promotion works.
+ a1[0] = new Short ((short) 24);
+ r = callNew (c1, a1);
+ harness.check(r instanceof newInstance);
+ harness.check(((newInstance) r).dot == 24);
+ // Check that demotion doesn't work.
+ a1[0] = new Long (25);
+ r = callNew (c1, a1);
+ harness.check(r instanceof IllegalArgumentException);
+
+ harness.checkPoint ("character arg");
+ Constructor c2 = getCons (ni_class, argsc);
+ a1[0] = new Character ('j');
+ r = callNew (c2, a1);
+ harness.check(r instanceof newInstance);
+ harness.check(((newInstance) r).dot == (int) 'j');
+ // Byte does not widen to Character.
+ a1[0] = new Byte ((byte) 93);
+ r = callNew (c2, a1);
+ harness.check(r instanceof IllegalArgumentException);
+
+ harness.checkPoint ("String args");
+ Constructor c3 = getCons (ni_class, args2);
+ Object[] a3 = new Object[2];
+ // Check that arg types must match.
+ a3[0] = new Integer (5);
+ a3[1] = "has spoken";
+ r = callNew (c3, a3);
+ harness.check(r instanceof IllegalArgumentException);
+ a3[0] = "zardoz";
+ r = callNew (c3, a3);
+ harness.check(r instanceof InvocationTargetException);
+ harness.debug(r + "");
+ harness.check(((InvocationTargetException) r).getTargetException()
+ instanceof NullPointerException);
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Constructor/toString.java b/gnu/testlet/java/lang/reflect/Constructor/toString.java
new file mode 100644
index 00000000..2ed21cd0
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Constructor/toString.java
@@ -0,0 +1,62 @@
+/* toString.java -- Test Constructor.toString
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.lang.reflect.Constructor;
+
+import java.lang.reflect.Constructor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class toString implements Testlet {
+
+ public toString() { }
+
+ public toString(int x) { }
+
+ protected toString(Object[] x) { }
+
+ public String getName(TestHarness harness, Class k, Class[] argTypes) {
+ try {
+ Constructor c = k.getDeclaredConstructor(argTypes);
+ return c.toString();
+ } catch (NoSuchMethodException _) {
+ harness.debug(_);
+ return "";
+ }
+ }
+
+ public void test(TestHarness harness) {
+ Class k = toString.class;
+
+ String n1 = getName(harness, k, null);
+ harness.check(n1, "public gnu.testlet.java.lang.reflect.Constructor.toString()");
+
+ String n2 = getName(harness, k, new Class[] {int.class});
+ harness.check(n2, "public gnu.testlet.java.lang.reflect.Constructor.toString(int)");
+
+ String n3 = getName(harness, k, new Class[] {Object[].class});
+ harness.check(n3, "protected gnu.testlet.java.lang.reflect.Constructor.toString(java.lang.Object[])");
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Field/CVS/Entries b/gnu/testlet/java/lang/reflect/Field/CVS/Entries
new file mode 100644
index 00000000..b5656626
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/CVS/Entries
@@ -0,0 +1,4 @@
+/access.java/1.1/Tue Aug 5 20:06:01 2003//
+/promotion.java/1.1/Mon Mar 21 12:29:05 2005//
+/toString.java/1.1/Sun Mar 5 17:49:52 2006/-kk/
+D
diff --git a/gnu/testlet/java/lang/reflect/Field/CVS/Repository b/gnu/testlet/java/lang/reflect/Field/CVS/Repository
new file mode 100644
index 00000000..6e9016cc
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Field
diff --git a/gnu/testlet/java/lang/reflect/Field/CVS/Root b/gnu/testlet/java/lang/reflect/Field/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Field/access.java b/gnu/testlet/java/lang/reflect/Field/access.java
new file mode 100644
index 00000000..833aa0eb
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/access.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Red Hat, Inc.
+
+// 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.java.lang.reflect.Field;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Field;
+
+public class access implements Testlet
+{
+ int value;
+
+ public void test(TestHarness harness)
+ {
+ // Regression test for libgcj bug.
+ // See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11779
+ try
+ {
+ Field field = access.class.getDeclaredField("value");
+ field.setInt(this, 777);
+ }
+ catch (Exception ignore)
+ {
+ }
+ harness.check(value, 777);
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Field/promotion.java b/gnu/testlet/java/lang/reflect/Field/promotion.java
new file mode 100644
index 00000000..1c2477f7
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/promotion.java
@@ -0,0 +1,757 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Jeroen Frijters
+
+// 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.java.lang.reflect.Field;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Field;
+
+public class promotion implements Testlet
+{
+ public boolean booleanField = true;
+ public byte byteField = (byte)42;
+ public char charField = (char)42;
+ public short shortField = (short)42;
+ public int intField = 42;
+ public float floatField = 42f;
+ public long longField = 42L;
+ public double doubleField = 42.0;
+ public Integer intObjField;
+
+ public void test(TestHarness harness)
+ {
+ Class c = promotion.class;
+ try
+ {
+ testBooleanField(harness, c.getField("booleanField"));
+ testByteField(harness, c.getField("byteField"));
+ testCharField(harness, c.getField("charField"));
+ testShortField(harness, c.getField("shortField"));
+ testIntField(harness, c.getField("intField"));
+ testFloatField(harness, c.getField("floatField"));
+ testLongField(harness, c.getField("longField"));
+ testDoubleField(harness, c.getField("doubleField"));
+
+ try
+ {
+ c.getField("intObjField").getInt(this);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ c.getField("intObjField").setInt(this, 0);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testBooleanField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("boolean");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ false, true, true, true, true, true, true, true });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ false, true, true, true, true, true, true, true });
+ try
+ {
+ harness.check(field.getBoolean(this) == booleanField);
+ harness.check(field.get(this).equals(new Boolean(booleanField)));
+
+ field.setBoolean(this, booleanField);
+ harness.check(true);
+ field.set(this, new Boolean(booleanField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testByteField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("byte");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, false, true, false, false, false, false, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, true, true, true, true, true, true });
+ try
+ {
+ harness.check(field.getByte(this) == byteField);
+ harness.check(field.getShort(this) == byteField);
+ harness.check(field.getInt(this) == byteField);
+ harness.check(field.getFloat(this) == byteField);
+ harness.check(field.getLong(this) == byteField);
+ harness.check(field.getDouble(this) == byteField);
+ harness.check(field.get(this).equals(new Byte(byteField)));
+
+ field.setByte(this, byteField);
+ harness.check(true);
+ field.set(this, new Byte(byteField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testCharField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("char");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, false, true, false, false, false, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, true, false, true, true, true, true, true });
+ try
+ {
+ harness.check(field.getChar(this) == charField);
+ harness.check(field.getInt(this) == charField);
+ harness.check(field.getFloat(this) == charField);
+ harness.check(field.getLong(this) == charField);
+ harness.check(field.getDouble(this) == charField);
+ harness.check(field.get(this).equals(new Character(charField)));
+
+ field.setChar(this, charField);
+ harness.check(true);
+ field.set(this, new Character(charField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testShortField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("short");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, true, false, false, false, false, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, true, false, true, true, true, true });
+ try
+ {
+ harness.check(field.getShort(this) == shortField);
+ harness.check(field.getInt(this) == shortField);
+ harness.check(field.getFloat(this) == shortField);
+ harness.check(field.getLong(this) == shortField);
+ harness.check(field.getDouble(this) == shortField);
+ harness.check(field.get(this).equals(new Short(shortField)));
+
+ field.setByte(this, (byte)shortField);
+ harness.check(true);
+ field.setShort(this, shortField);
+ harness.check(true);
+ field.set(this, new Byte((byte)shortField));
+ harness.check(true);
+ field.set(this, new Short(shortField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testIntField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("int");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, true, true, false, false, false, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, false, false, false, true, true, true });
+ try
+ {
+ harness.check(field.getInt(this) == intField);
+ harness.check(field.getFloat(this) == intField);
+ harness.check(field.getLong(this) == intField);
+ harness.check(field.getDouble(this) == intField);
+ harness.check(field.get(this).equals(new Integer(intField)));
+
+ field.setByte(this, (byte)intField);
+ harness.check(true);
+ field.setChar(this, (char)intField);
+ harness.check(true);
+ field.setShort(this, (short)intField);
+ harness.check(true);
+ field.setInt(this, intField);
+ harness.check(true);
+ field.set(this, new Byte((byte)intField));
+ harness.check(true);
+ field.set(this, new Character((char)intField));
+ harness.check(true);
+ field.set(this, new Short((short)intField));
+ harness.check(true);
+ field.set(this, new Integer(intField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testFloatField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("float");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, true, true, true, false, true, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, false, false, false, false, false, true });
+ try
+ {
+ harness.check(field.getFloat(this) == floatField);
+ harness.check(field.getDouble(this) == floatField);
+ harness.check(field.get(this).equals(new Float(floatField)));
+
+ field.setByte(this, (byte)floatField);
+ harness.check(true);
+ field.setChar(this, (char)floatField);
+ harness.check(true);
+ field.setShort(this, (short)floatField);
+ harness.check(true);
+ field.setInt(this, (int)floatField);
+ harness.check(true);
+ field.setFloat(this, floatField);
+ harness.check(true);
+ field.setLong(this, (long)floatField);
+ harness.check(true);
+ field.set(this, new Byte((byte)floatField));
+ harness.check(true);
+ field.set(this, new Character((char)floatField));
+ harness.check(true);
+ field.set(this, new Short((short)floatField));
+ harness.check(true);
+ field.set(this, new Integer((int)floatField));
+ harness.check(true);
+ field.set(this, new Float(floatField));
+ harness.check(true);
+ field.set(this, new Long((long)floatField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testLongField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("long");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, true, true, true, false, false, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, false, false, false, true, false, true });
+ try
+ {
+ harness.check(field.getFloat(this) == longField);
+ harness.check(field.getLong(this) == longField);
+ harness.check(field.getDouble(this) == longField);
+ harness.check(field.get(this).equals(new Long(longField)));
+
+ field.setByte(this, (byte)longField);
+ harness.check(true);
+ field.setChar(this, (char)longField);
+ harness.check(true);
+ field.setShort(this, (short)longField);
+ harness.check(true);
+ field.setInt(this, (int)longField);
+ harness.check(true);
+ field.setLong(this, longField);
+ harness.check(true);
+ field.set(this, new Byte((byte)longField));
+ harness.check(true);
+ field.set(this, new Character((char)longField));
+ harness.check(true);
+ field.set(this, new Short((short)longField));
+ harness.check(true);
+ field.set(this, new Integer((int)longField));
+ harness.check(true);
+ field.set(this, new Long(longField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testDoubleField(TestHarness harness, Field field)
+ {
+ harness.checkPoint("double");
+ testGetIllegalArgument(harness, field, new boolean[] {
+ true, true, true, true, true, true, true, false });
+ testSetIllegalArgument(harness, field, new boolean[] {
+ true, false, false, false, false, false, false, false });
+ try
+ {
+ harness.check(field.getDouble(this) == doubleField);
+ harness.check(field.get(this).equals(new Double(doubleField)));
+
+ field.setByte(this, (byte)doubleField);
+ harness.check(true);
+ field.setChar(this, (char)doubleField);
+ harness.check(true);
+ field.setShort(this, (short)doubleField);
+ harness.check(true);
+ field.setInt(this, (int)doubleField);
+ harness.check(true);
+ field.setFloat(this, (float)doubleField);
+ harness.check(true);
+ field.setLong(this, (long)doubleField);
+ harness.check(true);
+ field.setDouble(this, doubleField);
+ harness.check(true);
+ field.set(this, new Byte((byte)doubleField));
+ harness.check(true);
+ field.set(this, new Character((char)doubleField));
+ harness.check(true);
+ field.set(this, new Short((short)doubleField));
+ harness.check(true);
+ field.set(this, new Integer((int)doubleField));
+ harness.check(true);
+ field.set(this, new Float((float)doubleField));
+ harness.check(true);
+ field.set(this, new Long((long)doubleField));
+ harness.check(true);
+ field.set(this, new Double(doubleField));
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testGetIllegalArgument(TestHarness harness, Field field, boolean[] checks)
+ {
+ if (checks[0])
+ try
+ {
+ field.getBoolean(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[1])
+ try
+ {
+ field.getByte(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[2])
+ try
+ {
+ field.getChar(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[3])
+ try
+ {
+ field.getShort(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[4])
+ try
+ {
+ field.getInt(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[5])
+ try
+ {
+ field.getFloat(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[6])
+ try
+ {
+ field.getLong(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[7])
+ try
+ {
+ field.getDouble(this);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testSetIllegalArgument(TestHarness harness, Field field, boolean[] checks)
+ {
+ testSetObjectIllegalArgument(harness, field, checks);
+ if (checks[0])
+ try
+ {
+ field.setBoolean(this, booleanField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[1])
+ try
+ {
+ field.setByte(this, byteField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[2])
+ try
+ {
+ field.setChar(this, charField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[3])
+ try
+ {
+ field.setShort(this, shortField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[4])
+ try
+ {
+ field.setInt(this, intField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[5])
+ try
+ {
+ field.setFloat(this, floatField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[6])
+ try
+ {
+ field.setLong(this, longField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[7])
+ try
+ {
+ field.setDouble(this, doubleField);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+
+ private void testSetObjectIllegalArgument(TestHarness harness, Field field, boolean[] checks)
+ {
+ if (checks[0])
+ try
+ {
+ field.set(this, new Boolean(booleanField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[1])
+ try
+ {
+ field.set(this, new Byte(byteField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[2])
+ try
+ {
+ field.set(this, new Character(charField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[3])
+ try
+ {
+ field.set(this, new Short(shortField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[4])
+ try
+ {
+ field.set(this, new Integer(intField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[5])
+ try
+ {
+ field.set(this, new Float(floatField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[6])
+ try
+ {
+ field.set(this, new Long(longField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ if (checks[7])
+ try
+ {
+ field.set(this, new Double(doubleField));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Field/toString.java b/gnu/testlet/java/lang/reflect/Field/toString.java
new file mode 100644
index 00000000..087bc1a9
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Field/toString.java
@@ -0,0 +1,58 @@
+/* toString.java -- Test Field.toString
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.lang.reflect.Field;
+
+import java.lang.reflect.Field;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class toString implements Testlet {
+
+ public static final int x = 5;
+ public String[] args;
+
+ public String getFieldName(TestHarness harness, Class k, String name) {
+ try {
+ Field field = k.getDeclaredField(name);
+ return field.toString();
+ } catch (NoSuchFieldException _) {
+ harness.debug(_);
+ return "";
+ }
+ }
+
+ public void test(TestHarness harness) {
+ Class k = toString.class;
+
+ String n1 = getFieldName(harness, k, "x");
+ harness.check(n1,
+ "public static final int gnu.testlet.java.lang.reflect.Field.toString.x");
+
+ String n2 = getFieldName(harness, k, "args");
+ harness.check(n2,
+ "public java.lang.String[] gnu.testlet.java.lang.reflect.Field.toString.args");
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Entries b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Entries
new file mode 100644
index 00000000..2ea43965
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Entries
@@ -0,0 +1,2 @@
+/Chain.java/1.1/Wed Apr 5 18:30:59 2006/-kk/
+D
diff --git a/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Repository b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Repository
new file mode 100644
index 00000000..e02179d5
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/InvocationTargetException
diff --git a/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Root b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/InvocationTargetException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/InvocationTargetException/Chain.java b/gnu/testlet/java/lang/reflect/InvocationTargetException/Chain.java
new file mode 100644
index 00000000..e0be9fd7
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/InvocationTargetException/Chain.java
@@ -0,0 +1,58 @@
+/* Chain.java -- Test exception chaining
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.lang.reflect.InvocationTargetException;
+
+import java.lang.reflect.InvocationTargetException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Chain extends InvocationTargetException implements Testlet {
+
+ public Chain() {
+ }
+
+ public Chain(Throwable targetException, String err) {
+ super(targetException, err);
+ }
+
+ public Chain(Throwable targetException) {
+ super(targetException);
+ }
+
+ public void test(TestHarness harness) {
+ boolean ok = false;
+ try {
+ Throwable t = new Throwable();
+ Chain c = new Chain();
+ // Bogusly, the JDK does not allow this.
+ c.initCause(c);
+ } catch (IllegalStateException _) {
+ harness.debug(_);
+ ok = true;
+ }
+ harness.check(ok);
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Method/CVS/Entries b/gnu/testlet/java/lang/reflect/Method/CVS/Entries
new file mode 100644
index 00000000..a1edc908
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/CVS/Entries
@@ -0,0 +1,5 @@
+/equals.java/1.2/Fri Oct 25 22:59:22 2002//
+/iface.java/1.1/Sun Nov 9 22:28:43 2003//
+/invoke.java/1.12/Thu Oct 14 07:31:09 2004//
+/toString.java/1.8/Wed Oct 13 10:51:10 2004//
+D
diff --git a/gnu/testlet/java/lang/reflect/Method/CVS/Repository b/gnu/testlet/java/lang/reflect/Method/CVS/Repository
new file mode 100644
index 00000000..53205e26
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Method
diff --git a/gnu/testlet/java/lang/reflect/Method/CVS/Root b/gnu/testlet/java/lang/reflect/Method/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Method/equals.java b/gnu/testlet/java/lang/reflect/Method/equals.java
new file mode 100644
index 00000000..e9b79d98
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/equals.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+
+// 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.java.lang.reflect.Method;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Method;
+
+/**
+ * Tests java.lang.reflect.Method.equals().
+ *
+ * @author Mark Wielaard <mark@klomp.org>
+ */
+public class equals implements Testlet
+{
+ void q() { }
+ void r() { }
+
+ public String toString() { return "funny equals class thing"; }
+
+ public void m() { }
+ public void m(String s) { }
+
+ private Method getMethod(Class c, String n, Class[] ts)
+ {
+ try
+ {
+ return c.getDeclaredMethod(n, ts);
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ throw new RuntimeException("Warning - no such method: " + c + ", " + n);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Method m1, m2;
+ Class[] ts;
+
+ ts = new Class[0];
+ m1 = getMethod(equals.class, "q", ts);
+ m2 = getMethod(equals.class, "q", ts);
+ harness.check(m1.equals(m2), "same method q");
+
+ m2 = getMethod(equals.class, "r", ts);
+ harness.check(!m1.equals(m2), "different method names q and r");
+
+ m1 = getMethod(String.class, "toString", ts);
+ m2 = getMethod(equals.class, "toString", ts);
+ harness.check(!m1.equals(m2), "different declaring classes for toString");
+
+ m1 = getMethod(equals.class, "m", ts);
+ ts = new Class[1];
+ ts[0] = String.class;
+ m2 = getMethod(equals.class, "m", ts);
+ harness.check(!m1.equals(m2), "different argument types m");
+
+ harness.check(!m1.equals(null), "nothing equals null");
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Method/iface.java b/gnu/testlet/java/lang/reflect/Method/iface.java
new file mode 100644
index 00000000..2abad202
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/iface.java
@@ -0,0 +1,28 @@
+// Tags: not-a-test
+
+// Copyright (C) 2003 Red Hat, Inc.
+
+// 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.java.lang.reflect.Method;
+
+public interface iface
+{
+ String no_args ();
+ void returns_void (Integer v1, Integer v2);
+}
diff --git a/gnu/testlet/java/lang/reflect/Method/invoke.java b/gnu/testlet/java/lang/reflect/Method/invoke.java
new file mode 100644
index 00000000..3b6f249a
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/invoke.java
@@ -0,0 +1,230 @@
+// Tags: JDK1.1
+// Uses: ../sub/InvokeHelper iface
+
+// Copyright (C) 1999, 2000, 2001, 2003, 2004 Cygnus Solutions
+
+// 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.java.lang.reflect.Method;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.java.lang.reflect.sub.InvokeHelper;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+public class invoke implements Testlet, iface
+{
+ int save = 0;
+
+ // Don't use `.class' because gcj doesn't handle it yet.
+ static Class tclass = null;
+
+ static
+ {
+ try
+ {
+ tclass = Class.forName("java.lang.Throwable");
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ }
+
+ public String no_args ()
+ {
+ return "zardoz";
+ }
+
+ private String private_method ()
+ {
+ return "ok";
+ }
+
+ // Note that this is not overridden by InvokeHelper.p().
+ String p ()
+ {
+ return "ppm";
+ }
+
+ public static int takes_int (int val)
+ {
+ if (val < 0)
+ throw new IllegalArgumentException ();
+ return val + 3;
+ }
+
+ public void returns_void (Integer val1, Integer val2)
+ {
+ save = val1.intValue() + val2.intValue();
+ }
+
+ public void try_invoke (TestHarness harness, Method method,
+ Object obj, Object[] args, Object expect)
+ {
+ Object result = null;
+ try
+ {
+ result = method.invoke (obj, args);
+ }
+ catch (Throwable t)
+ {
+ result = t;
+ }
+
+ if (tclass.isInstance(expect))
+ {
+ // We're expecting an exception, so just make sure the types
+ // match.
+ harness.check(result.getClass(), expect.getClass());
+ }
+ else
+ harness.check(result, expect);
+ }
+
+ public Method getMethod (Class ic, String name, Class[] list)
+ {
+ Method m = null;
+ try
+ {
+ m = ic.getMethod(name, list);
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ return m;
+ }
+
+ public Method getDeclaredMethod (Class ic, String name, Class[] list)
+ {
+ Method m = null;
+ try
+ {
+ m = ic.getDeclaredMethod(name, list);
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ return m;
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Don't use `.class' because gcj doesn't handle it yet.
+ Class[] ic = new Class[2];
+ try
+ {
+ ic[0] = Class.forName("gnu.testlet.java.lang.reflect.Method.invoke");
+ ic[1] = Class.forName("gnu.testlet.java.lang.reflect.Method.iface");
+ }
+ catch (Throwable _)
+ {
+ // Just lose.
+ }
+
+ for (int i = 0; i < ic.length; ++i)
+ {
+ Class[] na_list = new Class[0];
+ Method na_meth = getMethod (ic[i], "no_args", na_list);
+
+ Class[] ti_list = new Class[1];
+ ti_list[0] = Integer.TYPE;
+ Method ti_meth = getMethod (ic[i], "takes_int", ti_list);
+
+ Class[] rv_list = new Class[2];
+ rv_list[0] = null;
+ try
+ {
+ rv_list[0] = Class.forName("java.lang.Integer");
+ }
+ catch (Throwable _)
+ {
+ // Just lose.
+ }
+ rv_list[1] = rv_list[0];
+ Method rv_meth = getMethod (ic[i], "returns_void", rv_list);
+
+ harness.checkPoint ("no_args for " + ic[i]);
+ Object[] args0 = new Object[0];
+ // Successful invocation.
+ try_invoke (harness, na_meth, this, args0, "zardoz");
+ // Null `this' should fail.
+ try_invoke (harness, na_meth, null, args0,
+ new NullPointerException ());
+ if (! ic[i].isInterface())
+ {
+ // Too few arguments.
+ try_invoke (harness, ti_meth, this, args0,
+ new IllegalArgumentException ());
+ }
+
+ // Wrong class for `this'.
+ try_invoke (harness, na_meth, new NullPointerException (),
+ args0, new IllegalArgumentException ());
+
+ // null argument list is ok, at least according to JDK
+ // implementation.
+ try_invoke (harness, na_meth, this, null, "zardoz");
+
+ if (! ic[i].isInterface())
+ {
+ harness.checkPoint ("takes_int for " + ic[i]);
+ Object[] args1 = new Object[1];
+ args1[0] = new Integer (5);
+ try_invoke (harness, na_meth, this, args1,
+ new IllegalArgumentException ());
+ try_invoke (harness, ti_meth, this, args1, new Integer (8));
+ // null should work for object as this is a static method.
+ try_invoke (harness, ti_meth, null, args1, new Integer (8));
+ args1[0] = "joe louis";
+ try_invoke (harness, ti_meth, null, args1,
+ new IllegalArgumentException ());
+ args1[0] = new Short ((short) 3);
+ try_invoke (harness, ti_meth, null, args1, new Integer (6));
+ args1[0] = new Long (72);
+ try_invoke (harness, ti_meth, null, args1,
+ new IllegalArgumentException ());
+ args1[0] = null;
+ try_invoke (harness, ti_meth, null, args1,
+ new IllegalArgumentException ());
+ args1[0] = new Integer (-5);
+ try_invoke (harness, ti_meth, null, args1,
+ new InvocationTargetException (new IllegalArgumentException ()));
+ }
+
+ harness.checkPoint ("returns_void for " + ic[i]);
+ Object[] args2 = new Object[2];
+ args2[0] = new Integer (7);
+ args2[1] = new Integer (8);
+ try_invoke (harness, rv_meth, this, args2, null);
+ harness.check(save, 15);
+
+ harness.checkPoint("invoke private method");
+ Method pvm = getDeclaredMethod(ic[0], "private_method", null);
+ try_invoke (harness, pvm, this, null, "ok");
+
+ harness.checkPoint("invoke package-private method");
+ Method ppvm = getDeclaredMethod(ic[0], "p", null);
+ invoke sub = new InvokeHelper();
+ try_invoke (harness, ppvm, sub, null, "ppm");
+ }
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Method/toString.java b/gnu/testlet/java/lang/reflect/Method/toString.java
new file mode 100644
index 00000000..4cac0682
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Method/toString.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1999, 2000, 2001, 2004 Red Hat, Inc.
+
+// 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.java.lang.reflect.Method;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Method;
+
+public class toString implements Testlet
+{
+ public Method getMethod (Class ic, String name, Class[] list)
+ {
+ Method m = null;
+ try
+ {
+ m = ic.getMethod(name, list);
+ }
+ catch (Throwable _)
+ {
+ // Nothing.
+ }
+ return m;
+ }
+
+ public String no_args ()
+ {
+ return "zardoz";
+ }
+
+ public void simpleargs (int i, byte b)
+ {
+ }
+
+ public int arrayargs (int[] z)
+ {
+ return z.length;
+ }
+
+ public int multidim_arrayargs (int[][][] z)
+ {
+ return z.length;
+ }
+
+ public String classargs (String[][] s)
+ {
+ return "test";
+ }
+
+ public String[] arrayreturn()
+ {
+ return null;
+ }
+
+ public void test (TestHarness harness)
+ {
+ Class ic = null;
+ try
+ {
+ ic = Class.forName ("gnu.testlet.java.lang.reflect.Method.toString");
+ }
+ catch (Throwable _)
+ {
+ // Lose.
+ }
+
+ Class[] na_list = new Class[0];
+ Method na_meth = getMethod (ic, "no_args", na_list);
+ harness.checkPoint("method with no arguments");
+ harness.check (na_meth.toString (), "public java.lang.String gnu.testlet.java.lang.reflect.Method.toString.no_args()");
+
+ Class[] simple_list = new Class[2];
+ simple_list[0] = int.class;
+ simple_list[1] = byte.class;
+ Method simple_meth = getMethod (ic, "simpleargs", simple_list);
+ harness.checkPoint("method with primitive argument types");
+ harness.check (simple_meth.toString (),
+ "public void gnu.testlet.java.lang.reflect.Method.toString.simpleargs(int,byte)");
+
+ Class[] aa_list = new Class[1];
+ aa_list[0] = int[].class;
+ Method aa_meth = getMethod (ic, "arrayargs", aa_list);
+ harness.checkPoint("method with a simple array type as argument");
+ harness.check (aa_meth.toString (),
+ "public int gnu.testlet.java.lang.reflect.Method.toString.arrayargs(int[])");
+
+ Method mdaa_meth = getMethod (ic, "multidim_arrayargs", aa_list);
+ harness.check(mdaa_meth == null, "invalid argument list for this method, getMethod should return null");
+
+ aa_list = new Class[1];
+ aa_list[0] = int[][][].class;
+ mdaa_meth = getMethod (ic, "multidim_arrayargs", aa_list);
+
+ harness.checkPoint("method with multiple array dims in argument");
+ harness.check (mdaa_meth.toString (),
+ "public int gnu.testlet.java.lang.reflect.Method.toString.multidim_arrayargs(int[][][])");
+
+ aa_list = new Class[1];
+ aa_list[0] = String[][].class;
+ Method string_meth = getMethod (ic, "classargs", aa_list);
+ harness.checkPoint("method with class type array");
+ harness.check (string_meth.toString (),
+ "public java.lang.String gnu.testlet.java.lang.reflect.Method.toString.classargs(java.lang.String[][])");
+
+ na_list = new Class[0];
+ Method ra_meth = getMethod (ic, "arrayreturn", na_list);
+ harness.checkPoint("method with array as return type");
+ harness.check (ra_meth.toString (),
+ "public java.lang.String[] gnu.testlet.java.lang.reflect.Method.toString.arrayreturn()");
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Modifier/.cvsignore b/gnu/testlet/java/lang/reflect/Modifier/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/lang/reflect/Modifier/CVS/Entries b/gnu/testlet/java/lang/reflect/Modifier/CVS/Entries
new file mode 100644
index 00000000..78d0d915
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/CVS/Entries
@@ -0,0 +1,4 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:37 1998//
+/toString.java/1.2/Fri Dec 11 11:28:37 1998//
+/toString12.java/1.2/Wed Apr 3 21:19:47 2002//
+D
diff --git a/gnu/testlet/java/lang/reflect/Modifier/CVS/Repository b/gnu/testlet/java/lang/reflect/Modifier/CVS/Repository
new file mode 100644
index 00000000..70d0d7e0
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Modifier
diff --git a/gnu/testlet/java/lang/reflect/Modifier/CVS/Root b/gnu/testlet/java/lang/reflect/Modifier/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Modifier/toString.java b/gnu/testlet/java/lang/reflect/Modifier/toString.java
new file mode 100644
index 00000000..1494f589
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/toString.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.lang.reflect.Modifier;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Modifier;
+
+public class toString implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Modifier.toString (Modifier.PUBLIC),
+ "public");
+ harness.check (Modifier.toString (Modifier.PRIVATE),
+ "private");
+ harness.check (Modifier.toString (Modifier.PROTECTED),
+ "protected");
+ harness.check (Modifier.toString (Modifier.STATIC),
+ "static");
+ harness.check (Modifier.toString (Modifier.FINAL),
+ "final");
+ harness.check (Modifier.toString (Modifier.SYNCHRONIZED),
+ "synchronized");
+ harness.check (Modifier.toString (Modifier.VOLATILE),
+ "volatile");
+ harness.check (Modifier.toString (Modifier.TRANSIENT),
+ "transient");
+ harness.check (Modifier.toString (Modifier.NATIVE),
+ "native");
+ harness.check (Modifier.toString (Modifier.INTERFACE),
+ "interface");
+ harness.check (Modifier.toString (Modifier.ABSTRACT),
+ "abstract");
+
+ // Spot-check a few combinations. Add more as desired.
+ harness.check (Modifier.toString (Modifier.PRIVATE | Modifier.INTERFACE),
+ "private interface");
+ harness.check (Modifier.toString (Modifier.ABSTRACT | Modifier.NATIVE),
+ "abstract native");
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Modifier/toString12.java b/gnu/testlet/java/lang/reflect/Modifier/toString12.java
new file mode 100644
index 00000000..65ec69cc
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Modifier/toString12.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 1999 Cygnus Solutions
+
+// 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.java.lang.reflect.Modifier;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.lang.reflect.Modifier;
+
+public class toString12 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check (Modifier.toString (Modifier.STRICT),
+ "strictfp");
+ harness.check (Modifier.toString (Modifier.FINAL | Modifier.STRICT),
+ "final strictfp");
+
+ int allFlags = Modifier.PUBLIC |
+ Modifier.PRIVATE |
+ Modifier.PROTECTED |
+ Modifier.STATIC |
+ Modifier.FINAL |
+ Modifier.SYNCHRONIZED |
+ Modifier.VOLATILE |
+ Modifier.TRANSIENT |
+ Modifier.NATIVE |
+ Modifier.INTERFACE |
+ Modifier.ABSTRACT |
+ Modifier.STRICT;
+ // Note that order matters.
+ harness.check (Modifier.toString (allFlags),
+ "public protected private abstract static final transient volatile synchronized native strictfp interface",
+ "check order of all flags");
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/Other.java b/gnu/testlet/java/lang/reflect/Other.java
new file mode 100644
index 00000000..545552ed
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Other.java
@@ -0,0 +1,24 @@
+// Test reflection member accessibility checks.
+// Tags: not-a-test
+
+package gnu.testlet.java.lang.reflect;
+
+class Other
+{
+ static void m()
+ {
+ }
+
+ void n()
+ {
+ }
+
+ private void o()
+ {
+ }
+
+ static char p = 'p';
+ char q = 'q';
+ private char r = 'r';
+}
+
diff --git a/gnu/testlet/java/lang/reflect/Proxy/CVS/Entries b/gnu/testlet/java/lang/reflect/Proxy/CVS/Entries
new file mode 100644
index 00000000..a0baf331
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/CVS/Entries
@@ -0,0 +1,6 @@
+/DeclaringClass.java/1.1/Sun Feb 19 21:25:05 2006//
+/ExceptionRaising.java/1.1/Sat Feb 11 19:34:55 2006//
+/ProxyUtils.java/1.1/Sun Feb 19 21:25:05 2006//
+/ToString.java/1.1/Sat Feb 11 17:53:56 2006//
+/check13.java/1.3/Fri Oct 21 00:34:48 2005//
+D
diff --git a/gnu/testlet/java/lang/reflect/Proxy/CVS/Repository b/gnu/testlet/java/lang/reflect/Proxy/CVS/Repository
new file mode 100644
index 00000000..589509e4
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/Proxy
diff --git a/gnu/testlet/java/lang/reflect/Proxy/CVS/Root b/gnu/testlet/java/lang/reflect/Proxy/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/Proxy/DeclaringClass.java b/gnu/testlet/java/lang/reflect/Proxy/DeclaringClass.java
new file mode 100644
index 00000000..07486958
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/DeclaringClass.java
@@ -0,0 +1,168 @@
+/* DeclaringClass.java -- Checks for the declaring class of the special
+ methods in Object, namely toString, Equals and hashCode
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.3
+// Uses: ProxyUtils
+
+
+package gnu.testlet.java.lang.reflect.Proxy;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Checks that the public non final methods of Objects (ie equals, toString and
+ * hashCode) are built in Proxy with Object as declaring class whatever the
+ * method definition of the interfaces used for the proxy creation
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ */
+public class DeclaringClass implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Class[] testableInterfaces = { Serializable.class,
+ WithObjectOverrides.class,
+ WithoutObjectOverrides.class, Base.class,
+ Derived.class };
+ for (int i = 0; i < testableInterfaces.length; i++)
+ {
+ Class interfaceItem = testableInterfaces[i];
+ Object proxy = Proxy.newProxyInstance(
+ this.getClass().getClassLoader(),
+ new Class[] { interfaceItem },
+ new ExpectObjectDeclaringClassIfPossibleHandler(
+ harness));
+ harness.checkPoint("Testing " + interfaceItem);
+ proxy.equals(new Object());
+ proxy.hashCode();
+ proxy.toString();
+ }
+ }
+
+ /**
+ * Handler which checks that invoked public non final methods of Object have
+ * their declared class set to Object.class
+ */
+ private static class ExpectObjectDeclaringClassIfPossibleHandler implements
+ InvocationHandler
+ {
+
+ static Collection objectMethods;
+
+ static
+ {
+ objectMethods = new ArrayList();
+ try
+ {
+ objectMethods.add(Object.class.getMethod(
+ "equals",
+ new Class[] { Object.class }));
+ objectMethods.add(Object.class.getMethod("hashCode", null));
+ objectMethods.add(Object.class.getMethod("toString", null));
+ }
+ catch (NoSuchMethodException e)
+ {
+ e.printStackTrace();
+ throw new Error("Missing core methods in Object");
+ }
+ }
+
+ TestHarness harness;
+
+ public ExpectObjectDeclaringClassIfPossibleHandler(TestHarness harness)
+ {
+ this.harness = harness;
+ }
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ boolean expectObjectDeclaringClass = false;
+ for (Iterator iter = objectMethods.iterator(); iter.hasNext();)
+ {
+ Method objectMethod = (Method) iter.next();
+ if (ProxyUtils.compareMethodOnNameAndParameterTypes(objectMethod,
+ method))
+ {
+ expectObjectDeclaringClass = true;
+ }
+ }
+
+ harness.check((method.getDeclaringClass() == Object.class) == expectObjectDeclaringClass);
+
+ return ProxyUtils.getNeutralValue(method.getReturnType());
+ }
+
+ }
+
+ /**
+ * Interface redefining the same public non final methods as Object
+ */
+ private static interface WithObjectOverrides
+ {
+
+ public boolean equals(Object obj);
+
+ public int hashCode();
+
+ public String toString();
+
+ }
+
+ /**
+ * Interface redefining similar methods than Object
+ */
+ private static interface WithoutObjectOverrides
+ {
+ public boolean equals();
+
+ public long hashCode(Object obj);
+
+ public void toString(long foo);
+ }
+
+ /**
+ * Simple interface defining a method
+ */
+ private static interface Base
+ {
+ public void foo();
+ }
+
+ /**
+ * Simple interface overriding a non Object method
+ */
+ private static interface Derived extends Base
+ {
+ public void foo();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Proxy/ExceptionRaising.java b/gnu/testlet/java/lang/reflect/Proxy/ExceptionRaising.java
new file mode 100644
index 00000000..a86224eb
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/ExceptionRaising.java
@@ -0,0 +1,176 @@
+/* ExceptionRaising.java -- Tests which check that the exceptions raised in an
+ InvocationHandler are correct.
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.3
+
+
+package gnu.testlet.java.lang.reflect.Proxy;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.UndeclaredThrowableException;
+
+/**
+ * Tests about the exceptions throwable when using proxies
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ * @see java.lang.reflect.Proxy
+ */
+public class ExceptionRaising implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testWrappedException(harness);
+ testReturnNull(harness);
+ testClassCastException(harness);
+
+ }
+
+ /**
+ * Test the behaviour of proxy the invocation of which returns
+ * <code>null</code>
+ * @param harness
+ * the test harness
+ */
+ private void testReturnNull(TestHarness harness)
+ {
+ Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[] { Serializable.class },
+ new NullInvocationHandler());
+
+ try
+ {
+ proxy.getClass();
+ harness.checkPoint("Passed returning null when a non primitive object is expected");
+ }
+ catch (Exception e)
+ {
+ harness.fail("Returning null should be safe when a non primitive object is expected");
+ }
+
+ try
+ {
+ proxy.hashCode();
+ harness.fail("Returning null when a primitive return value is expected should have thrown an exception");
+ }
+ catch (Exception e)
+ {
+ harness.check(e instanceof NullPointerException,
+ "Checking that exception thrown is a NullPointerException");
+ }
+
+ }
+
+ /**
+ * Tests the behaviour of proxy the invocation of which throws an exception
+ * @param harness
+ * the test harness
+ */
+ private void testWrappedException(TestHarness harness)
+ {
+ Exception exception = new Exception();
+ Object proxy = Proxy.newProxyInstance(
+ this.getClass().getClassLoader(),
+ new Class[] { Serializable.class },
+ new ExceptionInvocationHandler(
+ exception));
+
+ try
+ {
+ proxy.toString();
+ harness.fail("Call to toString via a proxy should have failed with an exception");
+ }
+ catch (UndeclaredThrowableException e)
+ {
+ harness.check(e.getUndeclaredThrowable(), exception,
+ "Exception thrown check");
+ }
+ }
+
+ /**
+ * Tests that if the return value is incorrect, a ClassCastException is thrown
+ * @param harness
+ * the test harness
+ */
+ private void testClassCastException(TestHarness harness)
+ {
+ Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[] { Serializable.class },
+ new ThisInvocationHandler());
+
+ try
+ {
+ proxy.toString();
+ }
+ catch (Exception e)
+ {
+ harness.check(e instanceof ClassCastException,
+ "Checking that the raised exception was a ClassPathException");
+ }
+ }
+
+ private static class ExceptionInvocationHandler implements InvocationHandler
+ {
+
+ Exception exception;
+
+ public ExceptionInvocationHandler(Exception exception)
+ {
+ this.exception = exception;
+ }
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ throw exception;
+ }
+
+ }
+
+ private static class NullInvocationHandler implements InvocationHandler
+ {
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ return null;
+ }
+
+ }
+
+ private static class ThisInvocationHandler implements InvocationHandler
+ {
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ return this;
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Proxy/ProxyUtils.java b/gnu/testlet/java/lang/reflect/Proxy/ProxyUtils.java
new file mode 100644
index 00000000..f20e1e8c
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/ProxyUtils.java
@@ -0,0 +1,133 @@
+/* ProxyUtils.java -- Utilities class for Proxy related operations
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: not-a-test
+
+
+package gnu.testlet.java.lang.reflect.Proxy;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * Utility class with some proxy related methods
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ */
+public final class ProxyUtils
+{
+
+ /**
+ * Compare two methods excepted the declaring class equality test
+ * @param lhs
+ * first method to test
+ * @param rhs
+ * second method to test
+ * @return whether the two methods are equals even if of different declaring
+ * class
+ */
+ static boolean compareMethodExceptedDeclaringClass(Method lhs, Method rhs)
+ {
+ if (!lhs.getName().equals(rhs.getName()))
+ {
+ return false;
+ }
+ if (lhs.getReturnType() != rhs.getReturnType())
+ {
+ return false;
+ }
+ if (!Arrays.equals(lhs.getParameterTypes(), rhs.getParameterTypes()))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Compare two methods based only on their name and parameter
+ * @param lhs
+ * first method to test
+ * @param rhs
+ * second method to test
+ * @return whether the name and parameter type are equal
+ */
+ static boolean compareMethodOnNameAndParameterTypes(Method lhs, Method rhs)
+ {
+ if (!lhs.getName().equals(rhs.getName()))
+ {
+ return false;
+ }
+ if (!Arrays.equals(lhs.getParameterTypes(), rhs.getParameterTypes()))
+ {
+ return false;
+ }
+ return true;
+
+ }
+
+ /**
+ * Return a valid value for the given class, even if a primitive
+ * @param returnType
+ * the expected class
+ * @return a neutral value of the expected class
+ * @throws InstantiationException
+ * in case of problem with the constructor invocation
+ * @throws IllegalAccessException
+ * in case of problem with the constructor invocation
+ */
+ public static Object getNeutralValue(Class returnType)
+ throws InstantiationException, IllegalAccessException
+ {
+ if (returnType.equals(boolean.class))
+ {
+ return Boolean.FALSE;
+ }
+ if (returnType.equals(int.class))
+ {
+ return new Integer(0);
+ }
+ if (returnType.equals(float.class))
+ {
+ return new Float(0);
+ }
+ if (returnType.equals(double.class))
+ {
+ return new Double(0);
+ }
+ if (returnType.equals(char.class))
+ {
+ return new Character((char) 0);
+ }
+ if (returnType.equals(short.class))
+ {
+ return new Short((short) 0);
+ }
+ if (returnType.equals(long.class))
+ {
+ return new Long(0);
+ }
+ if (returnType.equals(void.class))
+ {
+ return null;
+ }
+ return returnType.newInstance();
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Proxy/ToString.java b/gnu/testlet/java/lang/reflect/Proxy/ToString.java
new file mode 100644
index 00000000..8494bcb7
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/ToString.java
@@ -0,0 +1,89 @@
+/* ToString.java -- Tests which checks that the toString method on a proxy is
+ correctly forwarded to the InvocationHandler
+ Copyright (C) 2006 olivier jolly <olivier.jolly@pcedev.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.3
+
+
+package gnu.testlet.java.lang.reflect.Proxy;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+/**
+ * Test which ensure that the toString method is properly forwarded to the
+ * InvocationHandler. This tests notably fails with cacao 0.94
+ * (http://b2.complang.tuwien.ac.at/cgi-bin/bugzilla/show_bug.cgi?id=17)
+ * @author olivier jolly <olivier.jolly@pcedev.com>
+ * @see java.lang.reflect.InvocationHandler
+ */
+public class ToString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ InvocationHandler handler = new FacadeInvocationHandler(new Foo());
+ Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+ new Class[] { Serializable.class },
+ handler);
+ harness.check(proxy.toString(), "foo toString() result", "toString() test");
+ }
+
+ /**
+ * Very simple facade which delegates all calls to a target object.
+ */
+ private static class FacadeInvocationHandler implements InvocationHandler
+ {
+
+ Object facaded;
+
+ public FacadeInvocationHandler(Object facaded)
+ {
+ this.facaded = facaded;
+ }
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable
+ {
+ return method.invoke(facaded, args);
+ }
+
+ }
+
+ /**
+ * Very simple class with a predictable toString() result.
+ */
+ private static class Foo
+ {
+
+ public String toString()
+ {
+ return "foo toString() result";
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/Proxy/check13.java b/gnu/testlet/java/lang/reflect/Proxy/check13.java
new file mode 100644
index 00000000..d00ef6a9
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/Proxy/check13.java
@@ -0,0 +1,105 @@
+//Tags: JDK1.3
+
+//Copyright (C) 2005 Robert Schuster <thebohemian@gmx.net>
+
+//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.java.lang.reflect.Proxy;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+import java.io.Serializable;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+/** A basic test for the proxy mechanism that tests whether the arguments are delivered correctly.
+ *
+ * @author Robert Schuster
+ */
+public class check13 implements Testlet, InvocationHandler, Serializable {
+
+ transient Object proxy;
+ transient Object[] args;
+ transient Method method;
+
+ public void test(TestHarness harness) {
+ // Creates a Proxy implementation of an ActionListener that will
+ // call the invoke() method whenever a method of al is called.
+ ActionListener al = (ActionListener) Proxy.newProxyInstance(
+ getClass().getClassLoader(),
+ new Class[] { ActionListener.class }, this);
+
+ Method expectedMethod = null;
+ try {
+ // Note: Proxy API uses the method that is declared in the interface not in the Proxy itself!
+ expectedMethod = ActionListener.class.getMethod("actionPerformed", new Class[] { ActionEvent.class });
+ } catch(NoSuchMethodException nsme) {
+ harness.fail("test setup failed");
+ }
+
+ ActionEvent event = new ActionEvent(this, 0, "GNU yourself!");
+
+ // Provokes a call to invoke().
+ al.actionPerformed(event);
+
+ // Note: Referential equality checks are used to really make sure we have
+ // the same instance.
+
+ harness.check(proxy == al, "proxy method called");
+ harness.check(method, expectedMethod);
+ harness.check(args.length, 1);
+ harness.check(args[0] == event);
+
+ // Test serialization
+ harness.checkPoint("serialization");
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(proxy);
+ oos.close();
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ Proxy p = (Proxy)ois.readObject();
+ harness.check(p.getClass() == proxy.getClass());
+ harness.check(Proxy.getInvocationHandler(p).getClass() == Proxy.getInvocationHandler(proxy).getClass());
+ } catch(Exception x) {
+ harness.debug(x);
+ harness.fail("Unexpected exception");
+ }
+ }
+
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+
+ this.proxy = proxy;
+ this.method = method;
+ this.args = args;
+
+ return null;
+ }
+
+}
diff --git a/gnu/testlet/java/lang/reflect/ReflectAccess.java b/gnu/testlet/java/lang/reflect/ReflectAccess.java
new file mode 100644
index 00000000..d34d0add
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/ReflectAccess.java
@@ -0,0 +1,255 @@
+// Tags: JDK1.1
+// Uses: sub/OtherPkg sub/Super Other
+
+// Test reflection member accessibility checks.
+
+package gnu.testlet.java.lang.reflect;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.lang.reflect.*;
+import gnu.testlet.java.lang.reflect.sub.*;
+
+public class ReflectAccess extends Super implements Testlet
+{
+ TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ try
+ {
+ doTest();
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+
+ void doTest() throws Exception
+ {
+ Method methodA = ReflectAccess.class.getDeclaredMethod("a", null);
+ Method methodB = ReflectAccess.class.getDeclaredMethod("b", null);
+ Method methodC = ReflectAccess.class.getDeclaredMethod("c", null);
+
+ Field fieldD = ReflectAccess.class.getDeclaredField("d");
+ Field fieldE = ReflectAccess.class.getDeclaredField("e");
+ Field fieldF = ReflectAccess.class.getDeclaredField("f");
+
+ Method methodG = OtherPkg.class.getDeclaredMethod("g", null);
+ Method methodH = OtherPkg.class.getDeclaredMethod("h", null);
+ Method methodI = OtherPkg.class.getDeclaredMethod("i", null);
+
+ Field fieldJ = OtherPkg.class.getDeclaredField("j");
+ Field fieldK = OtherPkg.class.getDeclaredField("k");
+ Field fieldL = OtherPkg.class.getDeclaredField("l");
+
+ Method methodM = Other.class.getDeclaredMethod("m", null);
+ Method methodN = Other.class.getDeclaredMethod("n", null);
+ Method methodO = Other.class.getDeclaredMethod("o", null);
+
+ Field fieldP = Other.class.getDeclaredField("p");
+ Field fieldQ = Other.class.getDeclaredField("q");
+ Field fieldR = Other.class.getDeclaredField("r");
+
+ try
+ {
+ Method methodT = ReflectAccess.class.getDeclaredMethod("t", null);
+ harness.fail(methodT + " is not declared in class ReflectAccess");
+ }
+ catch (NoSuchMethodException x)
+ {
+ // ok
+ harness.check(true, "method 't' is declared in class ReflectAccess");
+ }
+
+ Method methodS = Super.class.getDeclaredMethod("s", null);
+ Method methodT = Super.class.getDeclaredMethod("t", null);
+ Method methodU = Super.class.getDeclaredMethod("u", null);
+ Method methodV = Super.class.getDeclaredMethod("v", null);
+
+ Field fieldW = Super.class.getDeclaredField("w");
+ Field fieldX = Super.class.getDeclaredField("x");
+ Field fieldY = Super.class.getDeclaredField("y");
+ Field fieldZ = Super.class.getDeclaredField("z");
+
+ Object obj = new ReflectAccess();
+
+ methodA.invoke(obj, null);
+ methodB.invoke(null, null);
+ methodC.invoke(obj, null);
+
+ harness.check (fieldD.getChar(obj) == 'd', "field d is accessible");
+ harness.check (fieldE.getChar(obj) == 'e', "field e is accessible");
+ harness.check (fieldF.getChar(obj) == 'f', "field f is accessible");
+
+ obj = new OtherPkg();
+
+ try
+ {
+ methodG.invoke(obj, null);
+ harness.fail(methodG + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodG + " is inaccessible");
+ }
+ try
+ {
+ methodH.invoke(obj, null);
+ harness.fail(methodH + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodH + " is inaccessible");
+ }
+ try
+ {
+ methodI.invoke(obj, null);
+ harness.fail(methodI + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodI + " is inaccessible");
+ }
+ try
+ {
+ fieldJ.getChar(obj);
+ harness.fail(fieldJ + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldJ + " is inaccessible");
+ }
+ try
+ {
+ fieldK.getChar(obj);
+ harness.fail(fieldK + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldK + " is inaccessible");
+ }
+ try
+ {
+ fieldL.getChar(obj);
+ harness.fail(fieldL + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldL + " is inaccessible");
+ }
+
+ obj = new Other();
+
+ methodM.invoke(null, null);
+ methodN.invoke(obj, null);
+
+ try
+ {
+ methodO.invoke(obj, null);
+ harness.fail(methodO + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodO + " is inaccessible");
+ }
+
+ methodO.setAccessible(true);
+ methodO.invoke(obj, null);
+
+ harness.check (fieldP.getChar(obj) == 'p');
+ harness.check (fieldQ.getChar(obj) == 'q');
+
+ try
+ {
+ fieldR.getChar(obj);
+ harness.fail(fieldR + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldR + " is inaccessible");
+ }
+
+ fieldR.setAccessible(true);
+ harness.check(fieldR.getChar(obj) == 'r', fieldR + " is accessible");
+ obj = new ReflectAccess();
+
+ try
+ {
+ methodS.invoke(obj, null);
+ harness.fail(methodS + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodS + " is inaccessible");
+ }
+
+ methodT.invoke(obj, null);
+ methodU.invoke(obj, null);
+
+ try
+ {
+ methodV.invoke(obj, null);
+ harness.fail(methodV + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, methodV + " is inaccessible");
+ }
+
+ harness.check (fieldW.getChar(obj) == 'w');
+ harness.check (fieldX.getChar(obj) == 'x');
+
+ try
+ {
+ fieldY.getChar(obj);
+ harness.fail(fieldY + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldY + " is inaccessible");
+ }
+
+ try
+ {
+ fieldZ.getChar(obj);
+ harness.fail(fieldZ + " should not be accessible");
+ }
+ catch (IllegalAccessException x)
+ {
+ // ok
+ harness.check(true, fieldZ + " is inaccessible");
+ }
+ }
+
+ private void a()
+ {
+ }
+
+ private static void b()
+ {
+ }
+
+ protected void c()
+ {
+ }
+
+ private char d = 'd';
+ private static char e = 'e';
+ protected char f = 'f';
+}
diff --git a/gnu/testlet/java/lang/reflect/sub/CVS/Entries b/gnu/testlet/java/lang/reflect/sub/CVS/Entries
new file mode 100644
index 00000000..e59d6114
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/CVS/Entries
@@ -0,0 +1,4 @@
+/InvokeHelper.java/1.2/Fri Oct 15 16:08:43 2004//
+/OtherPkg.java/1.2/Mon Jan 17 21:40:09 2005//
+/Super.java/1.2/Mon Jan 17 21:40:08 2005//
+D
diff --git a/gnu/testlet/java/lang/reflect/sub/CVS/Repository b/gnu/testlet/java/lang/reflect/sub/CVS/Repository
new file mode 100644
index 00000000..2f15bb6e
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/lang/reflect/sub
diff --git a/gnu/testlet/java/lang/reflect/sub/CVS/Root b/gnu/testlet/java/lang/reflect/sub/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/lang/reflect/sub/InvokeHelper.java b/gnu/testlet/java/lang/reflect/sub/InvokeHelper.java
new file mode 100644
index 00000000..aed21a1d
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/InvokeHelper.java
@@ -0,0 +1,33 @@
+// Tags: not-a-test
+// shouldn't be a test at all, but...
+
+// Copyright (C) 2004 Red Hat, Inc.
+
+// 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.java.lang.reflect.sub;
+
+import gnu.testlet.java.lang.reflect.Method.invoke;
+
+public class InvokeHelper extends invoke
+{
+ public String p()
+ {
+ return "InvokeHelper";
+ }
+}
diff --git a/gnu/testlet/java/lang/reflect/sub/OtherPkg.java b/gnu/testlet/java/lang/reflect/sub/OtherPkg.java
new file mode 100644
index 00000000..b5bf8f0f
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/OtherPkg.java
@@ -0,0 +1,20 @@
+package gnu.testlet.java.lang.reflect.sub;
+
+public class OtherPkg
+{
+ static void g()
+ {
+ }
+
+ void h()
+ {
+ }
+
+ protected void i()
+ {
+ }
+
+ static char j = 'j';
+ char k = 'k';
+ protected char l = 'l';
+}
diff --git a/gnu/testlet/java/lang/reflect/sub/Super.java b/gnu/testlet/java/lang/reflect/sub/Super.java
new file mode 100644
index 00000000..ad41e89c
--- /dev/null
+++ b/gnu/testlet/java/lang/reflect/sub/Super.java
@@ -0,0 +1,25 @@
+package gnu.testlet.java.lang.reflect.sub;
+
+public class Super
+{
+ void s()
+ {
+ }
+
+ protected static void t()
+ {
+ }
+
+ protected void u()
+ {
+ }
+
+ private void v()
+ {
+ }
+
+ protected static char w = 'w';
+ protected char x = 'x';
+ static char y = 'y';
+ private char z = 'z';
+}
diff --git a/gnu/testlet/java/math/BigDecimal/CVS/Entries b/gnu/testlet/java/math/BigDecimal/CVS/Entries
new file mode 100644
index 00000000..117e9258
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/CVS/Entries
@@ -0,0 +1,39 @@
+/DiagBigDecimal.java/1.6/Tue Jun 19 18:26:31 2007//
+/abs.java/1.1/Thu Jan 19 15:33:57 2012//
+/add.java/1.1/Thu Jan 19 15:33:57 2012//
+/byteValue.java/1.2/Mon Jan 16 14:04:30 2012//
+/byteValueExact.java/1.2/Mon Jan 16 14:04:30 2012//
+/compareTo.java/1.1/Thu Jan 26 13:18:39 2006//
+/compareToObject.java/1.1/Thu Jan 26 14:44:02 2012//
+/construct.java/1.2/Tue Jun 19 18:26:31 2007//
+/constructorBigInteger.java/1.1/Mon Jan 9 15:49:07 2012//
+/constructorCharacterSequence.java/1.1/Fri Jan 6 14:36:39 2012//
+/constructorDouble.java/1.1/Fri Jan 6 14:36:39 2012//
+/constructorInt.java/1.1/Thu Jan 5 15:13:54 2012//
+/constructorLong.java/1.1/Thu Jan 5 15:13:54 2012//
+/constructorString.java/1.1/Fri Jan 6 14:36:39 2012//
+/divide.java/1.2/Thu Jan 19 15:33:57 2012//
+/divideMathContext.java/1.1/Thu Jan 26 14:44:02 2012//
+/divideRoundingMode.java/1.1/Thu Jan 26 14:44:02 2012//
+/divideRoundingModeScale.java/1.1/Thu Jan 26 14:44:02 2012//
+/divideToIntegralValue.java/1.1/Thu Jan 26 14:44:02 2012//
+/hashCode.java/1.1/Mon Jan 16 14:04:30 2012//
+/intValue.java/1.2/Mon Jan 16 14:04:30 2012//
+/intValueExact.java/1.2/Mon Jan 16 14:04:30 2012//
+/longValue.java/1.2/Mon Jan 16 14:04:30 2012//
+/longValueExact.java/1.2/Mon Jan 16 14:04:30 2012//
+/multiply.java/1.1/Thu Jan 19 15:33:58 2012//
+/negate.java/1.1/Thu Jan 19 15:33:58 2012//
+/plus.java/1.1/Thu Jan 19 15:33:58 2012//
+/pow.java/1.2/Fri Mar 2 16:12:18 2012//
+/precision.java/1.1/Mon Jan 16 14:04:30 2012//
+/setScale.java/1.4/Tue Jun 19 18:26:31 2007//
+/shortValue.java/1.2/Mon Jan 16 14:04:30 2012//
+/shortValueExact.java/1.2/Mon Jan 16 14:04:30 2012//
+/subtract.java/1.1/Thu Jan 19 15:33:58 2012//
+/toEngineeringString.java/1.1/Mon Jan 16 14:04:30 2012//
+/toPlainString.java/1.1/Mon Jan 16 14:04:30 2012//
+/valueOfDouble.java/1.1/Thu Mar 1 14:04:13 2012//
+/valueOfLong.java/1.1/Thu Mar 1 14:04:13 2012//
+/valueOfLongInt.java/1.1/Thu Mar 1 14:04:13 2012//
+D
diff --git a/gnu/testlet/java/math/BigDecimal/CVS/Repository b/gnu/testlet/java/math/BigDecimal/CVS/Repository
new file mode 100644
index 00000000..c6270fba
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/math/BigDecimal
diff --git a/gnu/testlet/java/math/BigDecimal/CVS/Root b/gnu/testlet/java/math/BigDecimal/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java b/gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java
new file mode 100644
index 00000000..9bd3a37f
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java
@@ -0,0 +1,2443 @@
+// Tags: JDK1.2
+
+/* This code was derived from test code from IBM's ICU project, which
+ uses the following license...
+
+Copyright (c) 1995-2001 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the
+property of their respective owners.
+
+*/
+
+
+/* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */
+/* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.*;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/* ------------------------------------------------------------------ */
+/* Decimal diagnostic tests mfc */
+/* Copyright (c) IBM Corporation 1996, 2000. All Rights Reserved. */
+/* ------------------------------------------------------------------ */
+/* DiagBigDecimal */
+/* */
+/* A class that tests the BigDecimal and MathContext classes. */
+/* */
+/* The tests here are derived from or cover the same paths as: */
+/* -- ANSI X3-274 testcases */
+/* -- Java JCK testcases */
+/* -- NetRexx testcases */
+/* -- VM/CMS S/370 REXX implementation testcases [1981+] */
+/* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */
+/* -- New testcases */
+/* */
+/* The authoritative sources for how the underlying technology */
+/* (arithmetic) should work are: */
+/* -- for digits=0 (fixed point): java.math.BigDecimal */
+/* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */
+/* */
+/* ------------------------------------------------------------------ */
+/* Change list */
+/* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */
+/* 1998.05.02 0.07 changes (e.g., compareTo) */
+/* 1998.06.06 Rounding modes and format additions */
+/* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */
+/* DiagException as a Minor class] */
+/* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */
+/* Reorganize for faster trace compilation */
+/* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */
+/* 1998.07.07 Scaled divide */
+/* 1998.07.08 setScale */
+/* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */
+/* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */
+/* 1999.02.04 number preparation rounds instead of digits+1 trunc */
+/* 1999.02.09 format method now only has two signatures */
+/* 1999.02.27 no longer use Rexx class or RexxIO class */
+/* 1999.03.05 add MathContext tests */
+/* 1999.03.05 update for 0.96 [no null settings, etc.] */
+/* drop sundry constructors; no blanks; char[] gets ints */
+/* drop sundry converters, add Exact converters */
+/* 1999.05.27 additional tests for scaled arithmetic */
+/* 1999.06.29 additional tests for exponent overflows */
+/* 1999.07.03 add 'continue' option */
+/* 1999.07.10 additional tests for scaled arithmetic */
+/* 1999.07.18 randomly-generated tests added for base operators */
+/* 1999.10.28 weird intValueExact bad cases */
+/* 1999.12.21 multiplication fast path failure and edge cases */
+/* 2000.01.01 copyright update */
+/* 2000.03.26 cosmetic updates; add extra format() testcases */
+/* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */
+/* change to javadoc comments */
+/* ------------------------------------------------------------------ */
+
+// note BINARY for conversions checking
+
+
+
+
+/**
+ * The <code>DiagBigDecimal</code> class forms a standalone test suite
+ * for the <code>com.ibm.icu.math.BigDecimal</code> and
+ * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the
+ * <code>package</code> statement, other classes of the same names and
+ * definition in other packages). It may also be used as a constructed
+ * object to embed the tests in an external test harness.
+ * <p>
+ * The tests are collected into <i>groups</i>, each corresponding to a
+ * tested method or a more general grouping. By default, when run from
+ * the static {@link #main(java.lang.String[])} method, the run will end
+ * if any test fails in a group. The <code>continue</code> argument may
+ * be specified to force the tests to run to completion.
+ * <p>
+ * Two minor (inner) classes are used; {@link
+ * DiagBigDecimal.DiagException} is used to signal the failure of a test
+ * group, and {@link DiagBigDecimal.Test}, a dependent minor class, is
+ * used to register tests so that a summary of failures (or success) can be
+ * presented as each group is completed.
+ *
+ * @see com.ibm.icu.math.BigDecimal
+ * @see com.ibm.icu.math.MathContext
+ * @version 1.00 2000.03.27
+ * @author Mike Cowlishaw
+ */
+
+public class DiagBigDecimal implements Testlet {
+ private final boolean CHECK_EXCEPTION_MESSAGES = false;
+
+ private static final java.lang.String xx0="DiagBigDecimal.nrx";
+
+ /* properties shared */
+ java.util.Vector Tests=new java.util.Vector(100); // scaffolding
+
+ /* properties private */
+ private int totalcount=0; // counts tests run
+
+ /* properties constant private */
+
+ /* Count of test groups */
+ private static final int testcount=38;
+
+ private static final BigDecimal zero=new BigDecimal (BigInteger.valueOf (0), 0);
+ private static final BigDecimal one=new BigDecimal (BigInteger.valueOf (1), 0);
+ private static final BigDecimal two=new BigDecimal (BigInteger.valueOf (2), 0);
+ private static final BigDecimal ten=new BigDecimal (BigInteger.valueOf (10), 0);
+ private static final BigDecimal tenlong=new BigDecimal((long)1234554321); // 10-digiter
+
+ /* boundary primitive values */
+ private static final byte bmin=-128;
+ private static final byte bmax=127;
+ private static final byte bzer=0;
+ private static final byte bneg=-1;
+ private static final byte bpos=1;
+ private static final int imin=-2147483648;
+ private static final int imax=2147483647;
+ private static final int izer=0;
+ private static final int ineg=-1;
+ private static final int ipos=1;
+ private static final long lmin=-9223372036854775808L;
+ private static final long lmax=9223372036854775807L;
+ private static final String lminString="-9223372036854775808";
+ private static final String lmaxString="9223372036854775807";
+ private static final long lzer=(long)0;
+ private static final long lneg=(long)-1;
+ private static final long lpos=(long)1;
+ private static final short smin=-32768;
+ private static final short smax=32767;
+ private static final short szer=(short)0;
+ private static final short sneg=(short)(-1);
+ private static final short spos=(short)1;
+
+
+ /* properties constant private unused */ // present but not referenced
+ private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000. All rights reserved. ";
+
+
+ /** Constructs a <code>DiagBigDecimal</code> test suite.
+ * <p>
+ * Invoke its {@link #diagrun} method to run the tests.
+ */
+
+ public DiagBigDecimal(){super();
+ return;
+ }
+
+ /** Run the tests in the test suite.
+ *
+ * @param isContinue The <code>boolean</code> which determines whether
+ * to stop running after a group fails. If 1 (true)
+ * then the tests should be run to completion if
+ * possible; if 0 (false) then the run will end if a
+ * group fails.
+ * @return an <code>int</code> which is 0 if all tests were
+ * successful, >0 (the count of failures) if some failures were
+ * detected, or <0 if an unexpected Exception was signalled.
+ */
+
+ public void diagrun(TestHarness harness){
+ int num=0;
+ RuntimeException de=null;
+ java.lang.RuntimeException e=null;
+ java.lang.String rest=null;
+
+ try{num=1;num:for(;num<=testcount;num++){ // [testcount is constant set above]
+ try{
+ dotest(harness, num);
+ }
+ catch (RuntimeException xx1){de=xx1;
+ say(harness);
+ harness.verbose("**** Failed:"+" "+de.getMessage()+" "+"****");
+ say(harness);
+ }
+ }
+ }
+ catch (java.lang.RuntimeException xx2){e=xx2; // any other exception is total failure; just show trace and quit
+ say(harness);
+ harness.verbose("**** Failed: unexpected exception ****");
+ e.printStackTrace();
+ return;
+ }/*num*/
+
+ return;
+ }
+
+ /* Run test by number -- method for development/private switching */
+
+ private void dotest(TestHarness harness, int num){
+ {/*select*/switch(num){
+ /* -------------------------------------------------------------- */
+ /* MathContext */
+ /* -------------------------------------------------------------- */
+ case 1:
+ break;
+
+ /* -------------------------------------------------------------- */
+ /* Constructors */
+ /* -------------------------------------------------------------- */
+ case 2:
+ /* diagconstructors(harness); */ break;
+
+ /* -------------------------------------------------------------- */
+ /* Operator methods */
+ /* -------------------------------------------------------------- */
+ case 3:
+ diagabs(harness);break;
+ case 4:
+ diagadd(harness);break;
+ case 5:
+ diagcompareto(harness);break;
+ case 6:
+ diagdivide(harness);break;
+ case 7:
+ break;
+ case 8:
+ diagmax(harness);break;
+ case 9:
+ diagmin(harness);break;
+ case 10:
+ diagmultiply(harness);break;
+ case 11:
+ diagnegate(harness);break;
+ case 12:
+ break;
+ case 13:
+ break;
+ case 14:
+ break;
+ case 15:
+ diagsubtract(harness);break;
+ case 16:
+ break;
+
+ /* -------------------------------------------------------------- */
+ /* Other methods */
+ /* -------------------------------------------------------------- */
+ case 17:
+ diagbyteValue(harness);break;
+ case 18:
+ diagcomparetoObj(harness);break;
+ case 19:
+ diagdoublevalue(harness);break;
+ case 20:
+ diagequals(harness);break;
+ case 21:
+ diagfloatvalue(harness);break;
+ case 22:
+ break;
+ case 23:
+ diaghashcode(harness);break;
+ case 24:
+ diagintvalue(harness);break;
+ case 25:
+ diaglongvalue(harness);break;
+ case 26:
+ diagmovepointleft(harness);break;
+ case 27:
+ diagmovepointright(harness);break;
+ case 28:
+ diagscale(harness);break;
+ case 29:
+ diagsetscale(harness);break;
+ case 30:
+ diagshortvalue(harness);break;
+ case 31:
+ diagsignum(harness);break;
+ case 32:
+ break;
+ case 33:
+ diagtobiginteger(harness);break;
+ case 34:
+ break;
+ case 35:
+ diagtostring(harness);break;
+ case 36:
+ break;
+ case 37:
+ diagvalueof(harness);break;
+
+ /* -------------------------------------------------------------- */
+ /* Mutation test [must be the last test] */
+ /* -------------------------------------------------------------- */
+ case 38:
+ diagmutation(harness);break;
+ // if any more, increase testcount above
+ default:{
+ say("*** dotest case not found:"+" "+num+" "+"***", harness);
+ }}
+ }
+ return;
+ }
+
+ /*--------------------------------------------------------------------*/
+ /* Diagnostic group methods */
+ /*--------------------------------------------------------------------*/
+
+ /** Test constructors (and {@link #toString()} for equalities). */
+
+ public void diagconstructors(TestHarness harness){
+ boolean flag=false;
+ java.lang.String num;
+ java.math.BigInteger bip;
+ java.math.BigInteger biz;
+ java.math.BigInteger bin;
+ BigDecimal bda;
+ BigDecimal bdb;
+ BigDecimal bmc;
+ BigDecimal bmd;
+ BigDecimal bme;
+ java.lang.RuntimeException e=null;
+ char ca[];
+ double dzer;
+ double dpos;
+ double dneg;
+ double dpos5;
+ double dneg5;
+ double dmin;
+ double dmax;
+ double d;
+ java.lang.String badstrings[];
+ int i=0;
+
+ // constants [statically-called constructors]
+ harness.check ((zero.toString()).equals("0"), "con001");
+ harness.check ((one.toString()).equals("1"), "con002");
+ harness.check ((ten.toString()).equals("10"), "con003");
+ harness.check ((zero.intValue())==0, "con004");
+ harness.check ((one.intValue())==1, "con005");
+ harness.check ((ten.intValue())==10, "con006");
+
+ // [java.math.] BigDecimal
+ harness.check (((new BigDecimal(new BigDecimal("0").toString())).toString()).equals("0"), "cbd001");
+ harness.check (((new BigDecimal(new BigDecimal("1").toString())).toString()).equals("1"), "cbd002");
+ harness.check (((new BigDecimal(new BigDecimal("10").toString())).toString()).equals("10"), "cbd003");
+ harness.check (((new BigDecimal(new BigDecimal("1000").toString())).toString()).equals("1000"), "cbd004");
+ harness.check (((new BigDecimal(new BigDecimal("10.0").toString())).toString()).equals("10.0"), "cbd005");
+ harness.check (((new BigDecimal(new BigDecimal("10.1").toString())).toString()).equals("10.1"), "cbd006");
+ harness.check (((new BigDecimal(new BigDecimal("-1.1").toString())).toString()).equals("-1.1"), "cbd007");
+ harness.check (((new BigDecimal(new BigDecimal("-9.0").toString())).toString()).equals("-9.0"), "cbd008");
+ harness.check (((new BigDecimal(new BigDecimal("0.9").toString())).toString()).equals("0.9"), "cbd009");
+
+ num="123456789.123456789";
+ harness.check (((new BigDecimal(new BigDecimal(num).toString())).toString()).equals(num), "cbd010");
+ num="123456789.000000000";
+ harness.check (((new BigDecimal(new BigDecimal(num).toString())).toString()).equals(num), "cbd011");
+ num="123456789000000000";
+ harness.check (((new BigDecimal(new BigDecimal(num).toString())).toString()).equals(num), "cbd012");
+ num="0.00000123456789";
+ harness.check (((new BigDecimal(new BigDecimal(num).toString())).toString()).equals(num), "cbd013");
+ num="0.000000123456789";
+ harness.check (((new BigDecimal(new BigDecimal(num).toString())).toString()).equals(num), "cbd014");
+
+ // BigInteger
+ bip=new BigInteger("987654321987654321987654321"); // biggie +ve
+ biz=new BigInteger("0"); // biggie 0
+ bin=new BigInteger("-12345678998765432112345678"); // biggie -ve
+ harness.check (((new BigDecimal(bip)).toString()).equals(bip.toString()), "cbi001");
+ harness.check (((new BigDecimal(biz)).toString()).equals("0"), "cbi002");
+ harness.check (((new BigDecimal(bin)).toString()).equals(bin.toString()), "cbi003");
+ try{checknull:do{
+ new BigDecimal((java.math.BigInteger)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx4){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "cbi004");
+
+ // BigInteger with scale
+ bip=new BigInteger("123456789"); // bigish
+ bda=new BigDecimal(bip);
+ bdb=new BigDecimal(bip,5);
+ bmc=new BigDecimal(bip,15);
+ harness.check ((bda.toString()).equals("123456789"), "cbs001");
+ harness.check ((bdb.toString()).equals("1234.56789"), "cbs002");
+ harness.check ((bmc.toString()).equals("0.000000123456789"), "cbs003");
+ bip=new BigInteger("123456789123456789123456789"); // biggie
+ bda=new BigDecimal(bip);
+ bdb=new BigDecimal(bip,7);
+ bmc=new BigDecimal(bip,13);
+ bmd=new BigDecimal(bip,19);
+ bme=new BigDecimal(bip,29);
+ harness.check ((bda.toString()).equals("123456789123456789123456789"), "cbs011");
+ harness.check ((bdb.toString()).equals("12345678912345678912.3456789"), "cbs012");
+ harness.check ((bmc.toString()).equals("12345678912345.6789123456789"), "cbs013");
+ harness.check ((bmd.toString()).equals("12345678.9123456789123456789"), "cbs014");
+ harness.check ((bme.toString()).equals("0.00123456789123456789123456789"), "cbs015");
+ try{checknull:do{
+ new BigDecimal((java.math.BigInteger)null,1);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx5){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "cbs004");
+ try{checkscale:do{
+ new BigDecimal(bip,-8);
+ flag=false;
+ }while(false);}
+ catch (java.lang.RuntimeException xx6){e=xx6;
+ flag=checkMessage(e, "Negative scale: -8");
+ }/*checkscale*/
+ harness.check (flag, "cbs005");
+
+ // double [deprecated]
+ // Note that many of these differ from the valueOf(double) results.
+ dzer=(double)0;
+ dpos=(double)1;
+ dpos=dpos/((double)10);
+ dneg=(double)-dpos;
+ harness.check (((new BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625"), "cdo001");
+
+ harness.check (((new BigDecimal(dzer)).toString()).equals("0"), "cdo002"); // NB, not '0.0'
+ harness.check (((new BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625"), "cdo003");
+
+ dpos5=(double)0.5D;
+ dneg5=(double)-dpos5;
+ harness.check (((new BigDecimal(dneg5)).toString()).equals("-0.5"), "cdo004");
+ harness.check (((new BigDecimal(dpos5)).toString()).equals("0.5"), "cdo005");
+ dmin=java.lang.Double.MIN_VALUE;
+ dmax=java.lang.Double.MAX_VALUE;
+ harness.check (((new BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625"), "cdo006");
+
+ harness.check (((new BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368"), "cdo007");
+
+
+ // nasties
+ d=(double)9;
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625"), "cdo010");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625"), "cdo011");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375"), "cdo012");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625"), "cdo013");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875"), "cdo014");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375"), "cdo015");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375"), "cdo016");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375"), "cdo017");
+
+ d=d/((double)10);
+ harness.check (((new BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875"), "cdo018");
+
+
+ try{checkpin:do{
+ new BigDecimal(java.lang.Double.POSITIVE_INFINITY);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NumberFormatException xx13){
+ flag=true;
+ }/*checkpin*/
+ harness.check (flag, "cdo101");
+ try{checknin:do{
+ new BigDecimal(java.lang.Double.NEGATIVE_INFINITY);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NumberFormatException xx14){
+ flag=true;
+ }/*checknin*/
+ harness.check (flag, "cdo102");
+ try{checknan:do{
+ new BigDecimal(java.lang.Double.NaN);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NumberFormatException xx15){
+ flag=true;
+ }/*checknan*/
+ harness.check (flag, "cdo103");
+
+ // int
+ harness.check (((new BigDecimal(imin)).toString()).equals("-2147483648"), "cin001");
+ harness.check (((new BigDecimal(imax)).toString()).equals("2147483647"), "cin002");
+ harness.check (((new BigDecimal(ineg)).toString()).equals("-1"), "cin003");
+ harness.check (((new BigDecimal(izer)).toString()).equals("0"), "cin004");
+ harness.check (((new BigDecimal(ipos)).toString()).equals("1"), "cin005");
+ harness.check (((new BigDecimal(10)).toString()).equals("10"), "cin006");
+ harness.check (((new BigDecimal(9)).toString()).equals("9"), "cin007");
+ harness.check (((new BigDecimal(5)).toString()).equals("5"), "cin008");
+ harness.check (((new BigDecimal(2)).toString()).equals("2"), "cin009");
+ harness.check (((new BigDecimal(-2)).toString()).equals("-2"), "cin010");
+ harness.check (((new BigDecimal(-5)).toString()).equals("-5"), "cin011");
+ harness.check (((new BigDecimal(-9)).toString()).equals("-9"), "cin012");
+ harness.check (((new BigDecimal(-10)).toString()).equals("-10"), "cin013");
+ harness.check (((new BigDecimal(-11)).toString()).equals("-11"), "cin014");
+ harness.check (((new BigDecimal(-99)).toString()).equals("-99"), "cin015");
+ harness.check (((new BigDecimal(-100)).toString()).equals("-100"), "cin016");
+ harness.check (((new BigDecimal(-999)).toString()).equals("-999"), "cin017");
+ harness.check (((new BigDecimal(-1000)).toString()).equals("-1000"), "cin018");
+
+ harness.check (((new BigDecimal(11)).toString()).equals("11"), "cin019");
+ harness.check (((new BigDecimal(99)).toString()).equals("99"), "cin020");
+ harness.check (((new BigDecimal(100)).toString()).equals("100"), "cin021");
+ harness.check (((new BigDecimal(999)).toString()).equals("999"), "cin022");
+ harness.check (((new BigDecimal(1000)).toString()).equals("1000"), "cin023");
+
+ // long
+ harness.check (((new BigDecimal(lmin)).toString()).equals("-9223372036854775808"), "clo001");
+ harness.check (((new BigDecimal(lmax)).toString()).equals("9223372036854775807"), "clo002");
+ harness.check (((new BigDecimal(lneg)).toString()).equals("-1"), "clo003");
+ harness.check (((new BigDecimal(lzer)).toString()).equals("0"), "clo004");
+ harness.check (((new BigDecimal(lpos)).toString()).equals("1"), "clo005");
+
+ // String [many more examples are elsewhere]
+ // strings without E cannot generate E in result
+ harness.check (((new BigDecimal("12")).toString()).equals("12"), "cst001");
+ harness.check (((new BigDecimal("-76")).toString()).equals("-76"), "cst002");
+ harness.check (((new BigDecimal("12.76")).toString()).equals("12.76"), "cst003");
+ harness.check (((new BigDecimal("+12.76")).toString()).equals("12.76"), "cst004");
+ harness.check (((new BigDecimal("012.76")).toString()).equals("12.76"), "cst005");
+ harness.check (((new BigDecimal("+0.003")).toString()).equals("0.003"), "cst006");
+ harness.check (((new BigDecimal("17.")).toString()).equals("17"), "cst007");
+ harness.check (((new BigDecimal(".5")).toString()).equals("0.5"), "cst008");
+ harness.check (((new BigDecimal("044")).toString()).equals("44"), "cst009");
+ harness.check (((new BigDecimal("0044")).toString()).equals("44"), "cst010");
+ harness.check (((new BigDecimal("0.0005")).toString()).equals("0.0005"), "cst011");
+ harness.check (((new BigDecimal("00.00005")).toString()).equals("0.00005"), "cst012");
+ harness.check (((new BigDecimal("0.000005")).toString()).equals("0.000005"), "cst013");
+ harness.check (((new BigDecimal("0.0000005")).toString()).equals("0.0000005"), "cst014");
+ harness.check (((new BigDecimal("0.00000005")).toString()).equals("0.00000005"), "cst015");
+ harness.check (((new BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210"), "cst016");
+ harness.check (((new BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210"), "cst017");
+ harness.check (((new BigDecimal("345678.876543210")).toString()).equals("345678.876543210"), "cst018");
+ harness.check (((new BigDecimal("0345678.87654321")).toString()).equals("345678.87654321"), "cst019");
+ harness.check (((new BigDecimal("345678.8765432")).toString()).equals("345678.8765432"), "cst020");
+ harness.check (((new BigDecimal("+345678.8765432")).toString()).equals("345678.8765432"), "cst021");
+ harness.check (((new BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432"), "cst022");
+ harness.check (((new BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432"), "cst023");
+ harness.check (((new BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432"), "cst024");
+ harness.check (((new BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432"), "cst025");
+ harness.check (((new BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432"), "cst026");
+
+ // exotics --
+ harness.check (((new BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0"), "cst035");
+ harness.check (((new BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1"), "cst036");
+ harness.check (((new BigDecimal("\u0b66\u0b66")).toString()).equals("0"), "cst037");
+ harness.check (((new BigDecimal("\u0b6a\u0b66")).toString()).equals("40"), "cst038");
+
+ // strings with E
+ // Some implementations throw a NumberFormatException here.
+ try {
+ harness.check (((new BigDecimal("1E+9")).toString()).equals("1E+9"), "cst040");
+ } catch (Exception ecst040) {
+ harness.check (false, "cst040");
+ }
+ try {
+ harness.check (((new BigDecimal("1e+09")).toString()).equals("1E+9"), "cst041");
+ } catch (Exception ecst041) {
+ harness.check (false, "cst041");
+ }
+ try {
+ harness.check (((new BigDecimal("1E+90")).toString()).equals("1E+90"), "cst042");
+ } catch (Exception ecst042) {
+ harness.check (false, "cst042");
+ }
+ try {
+ harness.check (((new BigDecimal("+1E+009")).toString()).equals("1E+9"), "cst043");
+ } catch (Exception ecst043) {
+ harness.check (false, "cst043");
+ }
+ try {
+ harness.check (((new BigDecimal("0E+9")).toString()).equals("0"), "cst044");
+ } catch (Exception ecst044) {
+ harness.check (false, "cst044");
+ }
+ try {
+ harness.check (((new BigDecimal("1E+9")).toString()).equals("1E+9"), "cst045");
+ } catch (Exception ecst045) {
+ harness.check (false, "cst045");
+ }
+ try {
+ harness.check (((new BigDecimal("1E+09")).toString()).equals("1E+9"), "cst046");
+ } catch (Exception ecst046) {
+ harness.check (false, "cst046");
+ }
+ try {
+ harness.check (((new BigDecimal("1e+90")).toString()).equals("1E+90"), "cst047");
+ } catch (Exception ecst047) {
+ harness.check (false, "cst047");
+ }
+ try {
+ harness.check (((new BigDecimal("1E+009")).toString()).equals("1E+9"), "cst048");
+ } catch (Exception ecst048) {
+ harness.check (false, "cst048");
+ }
+ try {
+ harness.check (((new BigDecimal("0E+9")).toString()).equals("0"), "cst049");
+ } catch (Exception ecst049) {
+ harness.check (false, "cst049");
+ }
+ try {
+ harness.check (((new BigDecimal("1E9")).toString()).equals("1E+9"), "cst050");
+ } catch (Exception ecst050) {
+ harness.check (false, "cst050");
+ }
+ try {
+ harness.check (((new BigDecimal("1e09")).toString()).equals("1E+9"), "cst051");
+ } catch (Exception ecst051) {
+ harness.check (false, "cst051");
+ }
+ try {
+ harness.check (((new BigDecimal("1E90")).toString()).equals("1E+90"), "cst052");
+ } catch (Exception ecst052) {
+ harness.check (false, "cst052");
+ }
+ try {
+ harness.check (((new BigDecimal("1E009")).toString()).equals("1E+9"), "cst053");
+ } catch (Exception ecst053) {
+ harness.check (false, "cst053");
+ }
+ try {
+ harness.check (((new BigDecimal("0E9")).toString()).equals("0"), "cst054");
+ } catch (Exception ecst054) {
+ harness.check (false, "cst054");
+ }
+ try {
+ harness.check (((new BigDecimal("0.000e+0")).toString()).equals("0"), "cst055");
+ } catch (Exception ecst055) {
+ harness.check (false, "cst055");
+ }
+ try {
+ harness.check (((new BigDecimal("0.000E-1")).toString()).equals("0"), "cst056");
+ } catch (Exception ecst056) {
+ harness.check (false, "cst056");
+ }
+ try {
+ harness.check (((new BigDecimal("4E+9")).toString()).equals("4E+9"), "cst057");
+ } catch (Exception ecst057) {
+ harness.check (false, "cst057");
+ }
+ try {
+ harness.check (((new BigDecimal("44E+9")).toString()).equals("4.4E+10"), "cst058");
+ } catch (Exception ecst058) {
+ harness.check (false, "cst058");
+ }
+ try {
+ harness.check (((new BigDecimal("0.73e-7")).toString()).equals("7.3E-8"), "cst059");
+ } catch (Exception ecst059) {
+ harness.check (false, "cst059");
+ }
+ try {
+ harness.check (((new BigDecimal("00E+9")).toString()).equals("0"), "cst060");
+ } catch (Exception ecst060) {
+ harness.check (false, "cst060");
+ }
+ try {
+ harness.check (((new BigDecimal("00E-9")).toString()).equals("0"), "cst061");
+ } catch (Exception ecst061) {
+ harness.check (false, "cst061");
+ }
+ try {
+ harness.check (((new BigDecimal("10E+9")).toString()).equals("1.0E+10"), "cst062");
+ } catch (Exception ecst062) {
+ harness.check (false, "cst062");
+ }
+ try {
+ harness.check (((new BigDecimal("10E+09")).toString()).equals("1.0E+10"), "cst063");
+ } catch (Exception ecst063) {
+ harness.check (false, "cst063");
+ }
+ try {
+ harness.check (((new BigDecimal("10e+90")).toString()).equals("1.0E+91"), "cst064");
+ } catch (Exception ecst064) {
+ harness.check (false, "cst064");
+ }
+ try {
+ harness.check (((new BigDecimal("10E+009")).toString()).equals("1.0E+10"), "cst065");
+ } catch (Exception ecst065) {
+ harness.check (false, "cst065");
+ }
+ try {
+ harness.check (((new BigDecimal("100e+9")).toString()).equals("1.00E+11"), "cst066");
+ } catch (Exception ecst066) {
+ harness.check (false, "cst066");
+ }
+ try {
+ harness.check (((new BigDecimal("100e+09")).toString()).equals("1.00E+11"), "cst067");
+ } catch (Exception ecst067) {
+ harness.check (false, "cst067");
+ }
+ try {
+ harness.check (((new BigDecimal("100E+90")).toString()).equals("1.00E+92"), "cst068");
+ } catch (Exception ecst068) {
+ harness.check (false, "cst068");
+ }
+ try {
+ harness.check (((new BigDecimal("100e+009")).toString()).equals("1.00E+11"), "cst069");
+ } catch (Exception ecst069) {
+ harness.check (false, "cst069");
+ }
+
+ try {
+ harness.check (((new BigDecimal("1.265")).toString()).equals("1.265"), "cst070");
+ } catch (Exception ecst070) {
+ harness.check (false, "cst070");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-20")).toString()).equals("1.265E-20"), "cst071");
+ } catch (Exception ecst071) {
+ harness.check (false, "cst071");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-8")).toString()).equals("1.265E-8"), "cst072");
+ } catch (Exception ecst072) {
+ harness.check (false, "cst072");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-4")).toString()).equals("1.265E-4"), "cst073");
+ } catch (Exception ecst073) {
+ harness.check (false, "cst073");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-3")).toString()).equals("1.265E-3"), "cst074");
+ } catch (Exception ecst074) {
+ harness.check (false, "cst074");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-2")).toString()).equals("1.265E-2"), "cst075");
+ } catch (Exception ecst075) {
+ harness.check (false, "cst075");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-1")).toString()).equals("1.265E-1"), "cst076");
+ } catch (Exception ecst076) {
+ harness.check (false, "cst076");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E-0")).toString()).equals("1.265"), "cst077");
+ } catch (Exception ecst077) {
+ harness.check (false, "cst077");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+1")).toString()).equals("1.265E+1"), "cst078");
+ } catch (Exception ecst078) {
+ harness.check (false, "cst078");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+2")).toString()).equals("1.265E+2"), "cst079");
+ } catch (Exception ecst079) {
+ harness.check (false, "cst079");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+3")).toString()).equals("1.265E+3"), "cst080");
+ } catch (Exception ecst080) {
+ harness.check (false, "cst080");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+4")).toString()).equals("1.265E+4"), "cst081");
+ } catch (Exception ecst081) {
+ harness.check (false, "cst081");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+8")).toString()).equals("1.265E+8"), "cst082");
+ } catch (Exception ecst082) {
+ harness.check (false, "cst082");
+ }
+ try {
+ harness.check (((new BigDecimal("1.265E+20")).toString()).equals("1.265E+20"), "cst083");
+ } catch (Exception ecst083) {
+ harness.check (false, "cst083");
+ }
+
+ try {
+ harness.check (((new BigDecimal("12.65")).toString()).equals("12.65"), "cst090");
+ } catch (Exception ecst090) {
+ harness.check (false, "cst090");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-20")).toString()).equals("1.265E-19"), "cst091");
+ } catch (Exception ecst091) {
+ harness.check (false, "cst091");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-8")).toString()).equals("1.265E-7"), "cst092");
+ } catch (Exception ecst092) {
+ harness.check (false, "cst092");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-4")).toString()).equals("1.265E-3"), "cst093");
+ } catch (Exception ecst093) {
+ harness.check (false, "cst093");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-3")).toString()).equals("1.265E-2"), "cst094");
+ } catch (Exception ecst094) {
+ harness.check (false, "cst094");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-2")).toString()).equals("1.265E-1"), "cst095");
+ } catch (Exception ecst095) {
+ harness.check (false, "cst095");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-1")).toString()).equals("1.265"), "cst096");
+ } catch (Exception ecst096) {
+ harness.check (false, "cst096");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E-0")).toString()).equals("1.265E+1"), "cst097");
+ } catch (Exception ecst097) {
+ harness.check (false, "cst097");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+1")).toString()).equals("1.265E+2"), "cst098");
+ } catch (Exception ecst098) {
+ harness.check (false, "cst098");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+2")).toString()).equals("1.265E+3"), "cst099");
+ } catch (Exception ecst099) {
+ harness.check (false, "cst099");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+3")).toString()).equals("1.265E+4"), "cst100");
+ } catch (Exception ecst100) {
+ harness.check (false, "cst100");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+4")).toString()).equals("1.265E+5"), "cst101");
+ } catch (Exception ecst101) {
+ harness.check (false, "cst101");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+8")).toString()).equals("1.265E+9"), "cst102");
+ } catch (Exception ecst102) {
+ harness.check (false, "cst102");
+ }
+ try {
+ harness.check (((new BigDecimal("12.65E+20")).toString()).equals("1.265E+21"), "cst103");
+ } catch (Exception ecst103) {
+ harness.check (false, "cst103");
+ }
+
+ try {
+ harness.check (((new BigDecimal("126.5")).toString()).equals("126.5"), "cst110");
+ } catch (Exception ecst110) {
+ harness.check (false, "cst110");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-20")).toString()).equals("1.265E-18"), "cst111");
+ } catch (Exception ecst111) {
+ harness.check (false, "cst111");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-8")).toString()).equals("1.265E-6"), "cst112");
+ } catch (Exception ecst112) {
+ harness.check (false, "cst112");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-4")).toString()).equals("1.265E-2"), "cst113");
+ } catch (Exception ecst113) {
+ harness.check (false, "cst113");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-3")).toString()).equals("1.265E-1"), "cst114");
+ } catch (Exception ecst114) {
+ harness.check (false, "cst114");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-2")).toString()).equals("1.265"), "cst115");
+ } catch (Exception ecst115) {
+ harness.check (false, "cst115");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-1")).toString()).equals("1.265E+1"), "cst116");
+ } catch (Exception ecst116) {
+ harness.check (false, "cst116");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E-0")).toString()).equals("1.265E+2"), "cst117");
+ } catch (Exception ecst117) {
+ harness.check (false, "cst117");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+1")).toString()).equals("1.265E+3"), "cst118");
+ } catch (Exception ecst118) {
+ harness.check (false, "cst118");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+2")).toString()).equals("1.265E+4"), "cst119");
+ } catch (Exception ecst119) {
+ harness.check (false, "cst119");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+3")).toString()).equals("1.265E+5"), "cst120");
+ } catch (Exception ecst120) {
+ harness.check (false, "cst120");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+4")).toString()).equals("1.265E+6"), "cst121");
+ } catch (Exception ecst121) {
+ harness.check (false, "cst121");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+8")).toString()).equals("1.265E+10"), "cst122");
+ } catch (Exception ecst122) {
+ harness.check (false, "cst122");
+ }
+ try {
+ harness.check (((new BigDecimal("126.5E+20")).toString()).equals("1.265E+22"), "cst123");
+ } catch (Exception ecst123) {
+ harness.check (false, "cst123");
+ }
+
+ try {
+ harness.check (((new BigDecimal("1265")).toString()).equals("1265"), "cst130");
+ } catch (Exception ecst130) {
+ harness.check (false, "cst130");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-20")).toString()).equals("1.265E-17"), "cst131");
+ } catch (Exception ecst131) {
+ harness.check (false, "cst131");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-8")).toString()).equals("1.265E-5"), "cst132");
+ } catch (Exception ecst132) {
+ harness.check (false, "cst132");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-4")).toString()).equals("1.265E-1"), "cst133");
+ } catch (Exception ecst133) {
+ harness.check (false, "cst133");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-3")).toString()).equals("1.265"), "cst134");
+ } catch (Exception ecst134) {
+ harness.check (false, "cst134");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-2")).toString()).equals("1.265E+1"), "cst135");
+ } catch (Exception ecst135) {
+ harness.check (false, "cst135");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-1")).toString()).equals("1.265E+2"), "cst136");
+ } catch (Exception ecst136) {
+ harness.check (false, "cst136");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E-0")).toString()).equals("1.265E+3"), "cst137");
+ } catch (Exception ecst137) {
+ harness.check (false, "cst137");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+1")).toString()).equals("1.265E+4"), "cst138");
+ } catch (Exception ecst138) {
+ harness.check (false, "cst138");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+2")).toString()).equals("1.265E+5"), "cst139");
+ } catch (Exception ecst139) {
+ harness.check (false, "cst139");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+3")).toString()).equals("1.265E+6"), "cst140");
+ } catch (Exception ecst140) {
+ harness.check (false, "cst140");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+4")).toString()).equals("1.265E+7"), "cst141");
+ } catch (Exception ecst141) {
+ harness.check (false, "cst141");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+8")).toString()).equals("1.265E+11"), "cst142");
+ } catch (Exception ecst142) {
+ harness.check (false, "cst142");
+ }
+ try {
+ harness.check (((new BigDecimal("1265E+20")).toString()).equals("1.265E+23"), "cst143");
+ } catch (Exception ecst143) {
+ harness.check (false, "cst143");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265")).toString()).equals("0.1265"), "cst150");
+ } catch (Exception ecst150) {
+ harness.check (false, "cst150");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-20")).toString()).equals("1.265E-21"), "cst151");
+ } catch (Exception ecst151) {
+ harness.check (false, "cst151");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-8")).toString()).equals("1.265E-9"), "cst152");
+ } catch (Exception ecst152) {
+ harness.check (false, "cst152");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-4")).toString()).equals("1.265E-5"), "cst153");
+ } catch (Exception ecst153) {
+ harness.check (false, "cst153");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-3")).toString()).equals("1.265E-4"), "cst154");
+ } catch (Exception ecst154) {
+ harness.check (false, "cst154");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-2")).toString()).equals("1.265E-3"), "cst155");
+ } catch (Exception ecst155) {
+ harness.check (false, "cst155");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-1")).toString()).equals("1.265E-2"), "cst156");
+ } catch (Exception ecst156) {
+ harness.check (false, "cst156");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E-0")).toString()).equals("1.265E-1"), "cst157");
+ } catch (Exception ecst157) {
+ harness.check (false, "cst157");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+1")).toString()).equals("1.265"), "cst158");
+ } catch (Exception ecst158) {
+ harness.check (false, "cst158");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+2")).toString()).equals("1.265E+1"), "cst159");
+ } catch (Exception ecst159) {
+ harness.check (false, "cst159");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+3")).toString()).equals("1.265E+2"), "cst160");
+ } catch (Exception ecst160) {
+ harness.check (false, "cst160");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+4")).toString()).equals("1.265E+3"), "cst161");
+ } catch (Exception ecst161) {
+ harness.check (false, "cst161");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+8")).toString()).equals("1.265E+7"), "cst162");
+ } catch (Exception ecst162) {
+ harness.check (false, "cst162");
+ }
+ try {
+ harness.check (((new BigDecimal("0.1265E+20")).toString()).equals("1.265E+19"), "cst163");
+ } catch (Exception ecst163) {
+ harness.check (false, "cst163");
+ }
+ try {
+ harness.check (((new BigDecimal("0.09e999999999")).toString()).equals("9E+999999997"), "cst170");
+ } catch (Exception ecst170) {
+ harness.check (false, "cst170");
+ }
+ try {
+ harness.check (((new BigDecimal("0.9e999999999")).toString()).equals("9E+999999998"), "cst171");
+ } catch (Exception ecst171) {
+ harness.check (false, "cst171");
+ }
+ try {
+ harness.check (((new BigDecimal("9e999999999")).toString()).equals("9E+999999999"), "cst172");
+ } catch (Exception ecst172) {
+ harness.check (false, "cst172");
+ }
+ try {
+ harness.check (((new BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999"), "cst173");
+ } catch (Exception ecst173) {
+ harness.check (false, "cst173");
+ }
+ try {
+ harness.check (((new BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999"), "cst174");
+ } catch (Exception ecst174) {
+ harness.check (false, "cst174");
+ }
+ try {
+ harness.check (((new BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999"), "cst175");
+ } catch (Exception ecst175) {
+ harness.check (false, "cst175");
+ }
+ try {
+ harness.check (((new BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999"), "cst176");
+ } catch (Exception ecst176) {
+ harness.check (false, "cst176");
+ }
+ try {
+ harness.check (((new BigDecimal("9e-999999999")).toString()).equals("9E-999999999"), "cst177");
+ } catch (Exception ecst177) {
+ harness.check (false, "cst177");
+ }
+ try {
+ harness.check (((new BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998"), "cst179");
+ } catch (Exception ecst179) {
+ harness.check (false, "cst179");
+ }
+ try {
+ harness.check (((new BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997"), "cst180");
+ } catch (Exception ecst180) {
+ harness.check (false, "cst180");
+ }
+
+ // baddies --
+ badstrings=new java.lang.String[]{"1..2",".","..","++1","--1","-+1","+-1","12e","12e++","12f4"," +1","+ 1","12 "," + 1"," - 1 ","x","-1-","12-","3+","","1e-","7e1000000000","","e100","\u0e5a","\u0b65","99e999999999","999e999999999","0.9e-999999999","0.09e-999999999","0.1e1000000000","10e-1000000000","0.9e9999999999","99e-9999999999","111e9999999999","1111e-9999999999"+" "+"111e*123","111e123-","111e+12+","111e1-3-","111e1*23","111e1e+3","1e1.0","1e123e","ten","ONE","1e.1","1e1.","1ee","e+1"}; // 200-203
+ // 204-207
+ // 208-211
+ // 211-214
+ // 215-219
+ // 220-222
+ // 223-224
+ // 225-226
+ // 227-228
+ // 229-230
+ // 231-232
+ // 233-234
+ // 235-237
+ // 238-240
+ // 241-244
+ // 245-248
+
+ // watch out for commas on continuation lines
+
+ {int xx16=badstrings.length;i=0;i:for(;xx16>0;xx16--,i++){
+ try{
+ new BigDecimal(badstrings[i]);
+ say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new BigDecimal(badstrings[i])).toString(), harness);
+ flag=false;
+ }
+ catch (java.lang.NumberFormatException xx17){
+ flag=true;
+ }
+ harness.check (flag, "cst"+(200+i));
+ }
+ }/*i*/
+
+ try{checknull:do{
+ new BigDecimal((java.lang.String)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx18){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "cst301");
+
+ return;
+ }
+
+ /** Mutation tests (checks that contents of constant objects are unchanged). */
+
+ public void diagmutation(TestHarness harness){
+ /* ---------------------------------------------------------------- */
+ /* Final tests -- check constants haven't mutated */
+ /* -- also that MC objects haven't mutated */
+ /* ---------------------------------------------------------------- */
+ harness.check ((zero.toString()).equals("0"), "cuc001");
+ harness.check ((one.toString()).equals("1"), "cuc002");
+ harness.check ((ten.toString()).equals("10"), "cuc003");
+
+ return;}
+
+
+ /* ----------------------------------------------------------------- */
+ /* Operator test methods */
+ /* ----------------------------------------------------------------- */
+ // The use of context in these tests are primarily to show that they
+ // are correctly passed to the methods, except that we check that
+ // each method checks for lostDigits.
+
+ /** Test the {@link BigDecimal#abs} method. */
+
+ public void diagabs(TestHarness harness){
+ boolean flag=false;
+ java.lang.ArithmeticException ae=null;
+
+ // most of the function of this is tested by add
+ harness.check (((new BigDecimal("2")).abs().toString()).equals("2"), "abs001");
+ harness.check (((new BigDecimal("-2")).abs().toString()).equals("2"), "abs002");
+ harness.check (((new BigDecimal("+0.000")).abs().toString()).equals("0.000"), "abs003");
+ harness.check (((new BigDecimal("00.000")).abs().toString()).equals("0.000"), "abs004");
+ harness.check (((new BigDecimal("-0.000")).abs().toString()).equals("0.000"), "abs005");
+ harness.check (((new BigDecimal("-2000000")).abs().toString()).equals("2000000"), "abs009");
+ harness.check (((new BigDecimal("0.2")).abs().toString()).equals("0.2"), "abs013");
+ harness.check (((new BigDecimal("-0.2")).abs().toString()).equals("0.2"), "abs014");
+ harness.check (((new BigDecimal("0.01")).abs().toString()).equals("0.01"), "abs015");
+ harness.check (((new BigDecimal("-0.01")).abs().toString()).equals("0.01"), "abs016");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#add} method. */
+
+ public void diagadd(TestHarness harness){
+ boolean flag=false;
+ BigDecimal alhs;
+ BigDecimal arhs;
+ java.lang.ArithmeticException ae=null;
+
+ // [Now the same group with fixed arithmetic]
+ harness.check (((new BigDecimal(2)).add(new BigDecimal(3)).toString()).equals("5"), "add030");
+ harness.check (((new BigDecimal("5.75")).add(new BigDecimal("3.3")).toString()).equals("9.05"), "add031");
+ harness.check (((new BigDecimal("5")).add(new BigDecimal("-3")).toString()).equals("2"), "add032");
+ harness.check (((new BigDecimal("-5")).add(new BigDecimal("-3")).toString()).equals("-8"), "add033");
+ harness.check (((new BigDecimal("-7")).add(new BigDecimal("2.5")).toString()).equals("-4.5"), "add034");
+ harness.check (((new BigDecimal("0.7")).add(new BigDecimal("0.3")).toString()).equals("1.0"), "add035");
+ harness.check (((new BigDecimal("1.25")).add(new BigDecimal("1.25")).toString()).equals("2.50"), "add036");
+ harness.check (((new BigDecimal("1.23456789")).add(new BigDecimal("1.00000000")).toString()).equals("2.23456789"), "add037");
+
+ harness.check (((new BigDecimal("1.23456789")).add(new BigDecimal("1.00000011")).toString()).equals("2.23456800"), "add038");
+
+
+ harness.check (((new BigDecimal("0.4444444444")).add(new BigDecimal("0.5555555555")).toString()).equals("0.9999999999"), "add039");
+
+ harness.check (((new BigDecimal("0.4444444440")).add(new BigDecimal("0.5555555555")).toString()).equals("0.9999999995"), "add040");
+
+ harness.check (((new BigDecimal("0.4444444444")).add(new BigDecimal("0.5555555550")).toString()).equals("0.9999999994"), "add041");
+
+ harness.check (((new BigDecimal("0.4444444444999")).add(new BigDecimal("0")).toString()).equals("0.4444444444999"), "add042");
+
+ harness.check (((new BigDecimal("0.4444444445000")).add(new BigDecimal("0")).toString()).equals("0.4444444445000"), "add043");
+
+
+ harness.check (((new BigDecimal("70")).add(new BigDecimal("10000e+9")).toString()).equals("10000000000070"), "add044");
+
+ harness.check (((new BigDecimal("700")).add(new BigDecimal("10000e+9")).toString()).equals("10000000000700"), "add045");
+
+ harness.check (((new BigDecimal("7000")).add(new BigDecimal("10000e+9")).toString()).equals("10000000007000"), "add046");
+
+ harness.check (((new BigDecimal("70000")).add(new BigDecimal("10000e+9")).toString()).equals("10000000070000"), "add047");
+
+ harness.check (((new BigDecimal("700000")).add(new BigDecimal("10000e+9")).toString()).equals("10000000700000"), "add048");
+
+ harness.check (((new BigDecimal("10000e+9")).add(new BigDecimal("70")).toString()).equals("10000000000070"), "add054");
+
+ harness.check (((new BigDecimal("10000e+9")).add(new BigDecimal("700")).toString()).equals("10000000000700"), "add055");
+
+ harness.check (((new BigDecimal("10000e+9")).add(new BigDecimal("7000")).toString()).equals("10000000007000"), "add056");
+
+ harness.check (((new BigDecimal("10000e+9")).add(new BigDecimal("70000")).toString()).equals("10000000070000"), "add057");
+
+ harness.check (((new BigDecimal("10000e+9")).add(new BigDecimal("700000")).toString()).equals("10000000700000"), "add058");
+
+ // some rounding effects
+ harness.check (((new BigDecimal("0.9998")).add(new BigDecimal("0.0000")).toString()).equals("0.9998"), "add059");
+
+ harness.check (((new BigDecimal("0.9998")).add(new BigDecimal("0.0001")).toString()).equals("0.9999"), "add060");
+
+ harness.check (((new BigDecimal("0.9998")).add(new BigDecimal("0.0002")).toString()).equals("1.0000"), "add061");
+
+ harness.check (((new BigDecimal("0.9998")).add(new BigDecimal("0.0003")).toString()).equals("1.0001"), "add062");
+
+ // more fixed, LHS swaps
+ harness.check (((new BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267"), "add090");
+ harness.check (((new BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267"), "add091");
+ harness.check (((new BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267"), "add092");
+ harness.check (((new BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267"), "add093");
+ harness.check (((new BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267"), "add094");
+ harness.check (((new BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67"), "add095");
+ harness.check (((new BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7"), "add096");
+ harness.check (((new BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267"), "add097");
+ harness.check (((new BigDecimal("-5E-10")).add(zero).toString()).equals("-5E-10"), "add098");
+ harness.check (((new BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005"), "add099");
+ harness.check (((new BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5"), "add100");
+ harness.check (((new BigDecimal("-5E-10")).add(zero).toString()).equals("-5E-10"), "add101");
+ harness.check (((new BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005"), "add102");
+ harness.check (((new BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5"), "add103");
+ harness.check (((new BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000"), "add104");
+ harness.check (((new BigDecimal("-5E5")).add(zero).toString()).equals("-500000"), "add105");
+ harness.check (((new BigDecimal("-5E1")).add(zero).toString()).equals("-50"), "add106");
+ harness.check (((new BigDecimal("-5E0")).add(zero).toString()).equals("-5"), "add107");
+
+ // more fixed, RHS swaps
+ harness.check ((zero.add(new BigDecimal("-56267E-10")).toString()).equals("-0.0000056267"), "add108");
+ harness.check ((zero.add(new BigDecimal("-56267E-6")).toString()).equals("-0.056267"), "add109");
+ harness.check ((zero.add(new BigDecimal("-56267E-5")).toString()).equals("-0.56267"), "add110");
+ harness.check ((zero.add(new BigDecimal("-56267E-4")).toString()).equals("-5.6267"), "add111");
+ harness.check ((zero.add(new BigDecimal("-56267E-3")).toString()).equals("-56.267"), "add112");
+ harness.check ((zero.add(new BigDecimal("-56267E-2")).toString()).equals("-562.67"), "add113");
+ harness.check ((zero.add(new BigDecimal("-56267E-1")).toString()).equals("-5626.7"), "add114");
+ harness.check ((zero.add(new BigDecimal("-56267E-0")).toString()).equals("-56267"), "add115");
+ harness.check ((zero.add(new BigDecimal("-5E-10")).toString()).equals("-5E-10"), "add116");
+ harness.check ((zero.add(new BigDecimal("-5E-5")).toString()).equals("-0.00005"), "add117");
+ harness.check ((zero.add(new BigDecimal("-5E-1")).toString()).equals("-0.5"), "add118");
+ harness.check ((zero.add(new BigDecimal("-5E-10")).toString()).equals("-5E-10"), "add129");
+ harness.check ((zero.add(new BigDecimal("-5E-5")).toString()).equals("-0.00005"), "add130");
+ harness.check ((zero.add(new BigDecimal("-5E-1")).toString()).equals("-0.5"), "add131");
+ harness.check ((zero.add(new BigDecimal("-5E10")).toString()).equals("-50000000000"), "add132");
+ harness.check ((zero.add(new BigDecimal("-5E5")).toString()).equals("-500000"), "add133");
+ harness.check ((zero.add(new BigDecimal("-5E1")).toString()).equals("-50"), "add134");
+ harness.check ((zero.add(new BigDecimal("-5E0")).toString()).equals("-5"), "add135");
+
+ harness.check (((new BigDecimal("00.0")).add(new BigDecimal("0.00")).toString()).equals("0.00"), "add150");
+ harness.check (((new BigDecimal("0.00")).add(new BigDecimal("00.0")).toString()).equals("0.00"), "add151");
+ harness.check (((new BigDecimal("3")).add(new BigDecimal(".3")).toString()).equals("3.3"), "add152");
+ harness.check (((new BigDecimal("3.")).add(new BigDecimal(".3")).toString()).equals("3.3"), "add153");
+ harness.check (((new BigDecimal("3.0")).add(new BigDecimal(".3")).toString()).equals("3.3"), "add154");
+ harness.check (((new BigDecimal("3.00")).add(new BigDecimal(".3")).toString()).equals("3.30"), "add155");
+ harness.check (((new BigDecimal("3")).add(new BigDecimal("3")).toString()).equals("6"), "add156");
+ harness.check (((new BigDecimal("3")).add(new BigDecimal("+3")).toString()).equals("6"), "add157");
+ harness.check (((new BigDecimal("3")).add(new BigDecimal("-3")).toString()).equals("0"), "add158");
+ harness.check (((new BigDecimal("0.3")).add(new BigDecimal("-0.3")).toString()).equals("0.0"), "add159");
+ harness.check (((new BigDecimal("0.03")).add(new BigDecimal("-0.03")).toString()).equals("0.00"), "add160");
+
+ // input preparation tests
+ alhs=new BigDecimal("12345678900000");
+ arhs=new BigDecimal("9999999999999");
+
+ try{checknull:do{
+ ten.add((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx22){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "add200");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+ /** Test the {@link BigDecimal#compareTo(BigDecimal)} method. */
+
+ public void diagcompareto(TestHarness harness){
+ boolean flag=false;
+ java.lang.ArithmeticException ae=null;
+ // we assume add/subtract test function; this just
+ // tests existence, exceptions, and possible results
+
+ harness.check (((new BigDecimal("5")).compareTo(new BigDecimal("2")))==1, "cpt001");
+ harness.check (((new BigDecimal("5")).compareTo(new BigDecimal("5")))==0, "cpt002");
+ harness.check (((new BigDecimal("5")).compareTo(new BigDecimal("5.00")))==0, "cpt003");
+ harness.check (((new BigDecimal("0.5")).compareTo(new BigDecimal("0.5")))==0, "cpt004");
+ harness.check (((new BigDecimal("2")).compareTo(new BigDecimal("5")))==(-1), "cpt005");
+ try{checknull:do{
+ ten.compareTo((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx28){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "cpt100");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#divide} method. */
+
+ public void diagdivide(TestHarness harness){
+ boolean flag=false;
+ int rhu;
+ int rd;
+ int ru;
+ java.lang.RuntimeException e=null;
+ java.lang.ArithmeticException ae=null;
+
+ // fixed point...
+ harness.check (((new BigDecimal("1")).divide(new BigDecimal("3"), BigDecimal.ROUND_HALF_UP).toString()).equals("0"), "div350");
+ harness.check (((new BigDecimal("2")).divide(new BigDecimal("3"), BigDecimal.ROUND_HALF_UP).toString()).equals("1"), "div351");
+ harness.check (((new BigDecimal("2.4")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.4"), "div352");
+ harness.check (((new BigDecimal("2.4")).divide(new BigDecimal("-1"), BigDecimal.ROUND_HALF_UP).toString()).equals("-2.4"), "div353");
+ harness.check (((new BigDecimal("-2.4")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("-2.4"), "div354");
+ harness.check (((new BigDecimal("-2.4")).divide(new BigDecimal("-1"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.4"), "div355");
+ harness.check (((new BigDecimal("2.40")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.40"), "div356");
+ harness.check (((new BigDecimal("2.400")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.400"), "div357");
+ harness.check (((new BigDecimal("2.4")).divide(new BigDecimal("2"), BigDecimal.ROUND_HALF_UP).toString()).equals("1.2"), "div358");
+ harness.check (((new BigDecimal("2.400")).divide(new BigDecimal("2"), BigDecimal.ROUND_HALF_UP).toString()).equals("1.200"), "div359");
+ harness.check (((new BigDecimal("2.")).divide(new BigDecimal("2"), BigDecimal.ROUND_HALF_UP).toString()).equals("1"), "div360");
+ harness.check (((new BigDecimal("20")).divide(new BigDecimal("20"), BigDecimal.ROUND_HALF_UP).toString()).equals("1"), "div361");
+ harness.check (((new BigDecimal("187")).divide(new BigDecimal("187"), BigDecimal.ROUND_HALF_UP).toString()).equals("1"), "div362");
+ harness.check (((new BigDecimal("5")).divide(new BigDecimal("2"), BigDecimal.ROUND_HALF_UP).toString()).equals("3"), "div363");
+ harness.check (((new BigDecimal("5")).divide(new BigDecimal("2.0"), BigDecimal.ROUND_HALF_UP).toString()).equals("3"), "div364");
+ harness.check (((new BigDecimal("5")).divide(new BigDecimal("2.000"), BigDecimal.ROUND_HALF_UP).toString()).equals("3"), "div365");
+ harness.check (((new BigDecimal("5")).divide(new BigDecimal("0.200"), BigDecimal.ROUND_HALF_UP).toString()).equals("25"), "div366");
+ harness.check (((new BigDecimal("5.0")).divide(new BigDecimal("2"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.5"), "div367");
+ harness.check (((new BigDecimal("5.0")).divide(new BigDecimal("2.0"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.5"), "div368");
+ harness.check (((new BigDecimal("5.0")).divide(new BigDecimal("2.000"), BigDecimal.ROUND_HALF_UP).toString()).equals("2.5"), "div369");
+ harness.check (((new BigDecimal("5.0")).divide(new BigDecimal("0.200"), BigDecimal.ROUND_HALF_UP).toString()).equals("25.0"), "div370");
+ harness.check (((new BigDecimal("999999999")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("999999999"), "div371");
+ harness.check (((new BigDecimal("999999999.4")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("999999999.4"), "div372");
+ harness.check (((new BigDecimal("999999999.5")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("999999999.5"), "div373");
+ harness.check (((new BigDecimal("999999999.9")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("999999999.9"), "div374");
+ harness.check (((new BigDecimal("999999999.999")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("999999999.999"), "div375");
+ harness.check (((new BigDecimal("0.0000E-5")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("0E-9"), "div376");
+ harness.check (((new BigDecimal("0.000000000")).divide(new BigDecimal("1"), BigDecimal.ROUND_HALF_UP).toString()).equals("0E-9"), "div377");
+
+ //- Fixed point; explicit scales & rounds [old BigDecimal divides]
+ harness.check (((new BigDecimal("0")).divide(new BigDecimal("3"), BigDecimal.ROUND_HALF_UP).toString()).equals("0"), "div001");
+ harness.check (((new BigDecimal("1")).divide(new BigDecimal("3"), BigDecimal.ROUND_HALF_UP).toString()).equals("0"), "div008");
+ harness.check (((new BigDecimal("2")).divide(new BigDecimal("3"), BigDecimal.ROUND_HALF_UP).toString()).equals("1"), "div015");
+
+ try{div0:do{
+ (new BigDecimal("5")).divide(new BigDecimal("0.00"), BigDecimal.ROUND_HALF_UP);
+ flag=false;
+ }while(false);}
+ catch (java.lang.ArithmeticException xx40){ae=xx40;
+ flag=checkMessage(ae, "Divide by 0");
+ }/*div0*/
+ harness.check (flag, "div204");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#max} method. */
+
+ public void diagmax(TestHarness harness){
+ boolean flag=false;
+ java.lang.ArithmeticException ae=null;
+
+ // we assume add/subtract test function; this and min just
+ // test existence and test the truth table
+ harness.check (((new BigDecimal("5")).max(new BigDecimal("2")).toString()).equals("5"), "max001");
+ harness.check (((new BigDecimal("5")).max(new BigDecimal("5")).toString()).equals("5"), "max002");
+ harness.check (((new BigDecimal("2")).max(new BigDecimal("7")).toString()).equals("7"), "max003");
+ harness.check (((new BigDecimal("2E+3")).max(new BigDecimal("7")).toString()).equals("2E+3"), "max006");
+ harness.check (((new BigDecimal("7")).max(new BigDecimal("2E+3")).toString()).equals("2E+3"), "max008");
+
+ try{checknull:do{
+ ten.max((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx47){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "max010");
+ return;}
+
+ /** Test the {@link BigDecimal#min} method. */
+
+ public void diagmin(TestHarness harness){
+ boolean flag=false;
+ BigDecimal minx=null;
+ java.lang.ArithmeticException ae=null;
+ // we assume add/subtract test function; this and max just
+ // test existence and test the truth table
+
+ harness.check (((new BigDecimal("5")).min(new BigDecimal("2")).toString()).equals("2"), "min001");
+ harness.check (((new BigDecimal("5")).min(new BigDecimal("5")).toString()).equals("5"), "min002");
+ harness.check (((new BigDecimal("2")).min(new BigDecimal("7")).toString()).equals("2"), "min003");
+ harness.check (((new BigDecimal("-2E+3")).min(new BigDecimal("7")).toString()).equals("-2E+3"), "min006");
+ harness.check (((new BigDecimal("7")).min(new BigDecimal("-2E+3")).toString()).equals("-2E+3"), "min008");
+ try{checknull:do{
+ minx=ten;
+ minx.min((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx51){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "min010");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#multiply} method. */
+
+ public void diagmultiply(TestHarness harness){
+ boolean flag=false;
+ BigDecimal l9;
+ BigDecimal l77e;
+ BigDecimal l12345;
+ BigDecimal edge;
+ BigDecimal tenedge;
+ BigDecimal hunedge;
+ BigDecimal opo;
+ BigDecimal d1=null;
+ BigDecimal d2=null;
+ java.lang.ArithmeticException oe=null;
+ java.lang.ArithmeticException ae=null;
+
+ harness.check (((new BigDecimal("2")).multiply(new BigDecimal("3")).toString()).equals("6"), "mul020");
+ harness.check (((new BigDecimal("5")).multiply(new BigDecimal("1")).toString()).equals("5"), "mul021");
+ harness.check (((new BigDecimal("5")).multiply(new BigDecimal("2")).toString()).equals("10"), "mul022");
+ harness.check (((new BigDecimal("1.20")).multiply(new BigDecimal("2")).toString()).equals("2.40"), "mul023");
+ harness.check (((new BigDecimal("1.20")).multiply(new BigDecimal("0")).toString()).equals("0.00"), "mul024");
+ harness.check (((new BigDecimal("1.20")).multiply(new BigDecimal("-2")).toString()).equals("-2.40"), "mul025");
+ harness.check (((new BigDecimal("-1.20")).multiply(new BigDecimal("2")).toString()).equals("-2.40"), "mul026");
+ harness.check (((new BigDecimal("-1.20")).multiply(new BigDecimal("0")).toString()).equals("0.00"), "mul027");
+ harness.check (((new BigDecimal("-1.20")).multiply(new BigDecimal("-2")).toString()).equals("2.40"), "mul028");
+ harness.check (((new BigDecimal("5.09")).multiply(new BigDecimal("7.1")).toString()).equals("36.139"), "mul029");
+ harness.check (((new BigDecimal("2.5")).multiply(new BigDecimal("4")).toString()).equals("10.0"), "mul030");
+ harness.check (((new BigDecimal("2.50")).multiply(new BigDecimal("4")).toString()).equals("10.00"), "mul031");
+ harness.check (((new BigDecimal("1.23456789")).multiply(new BigDecimal("1.00000000")).toString()).equals("1.2345678900000000"), "mul032");
+
+ harness.check (((new BigDecimal("1234.56789")).multiply(new BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000"), "mul033");
+
+ harness.check (((new BigDecimal("-1234.56789")).multiply(new BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000"), "mul034");
+
+ harness.check (((new BigDecimal("9.999999999")).multiply(new BigDecimal("9.999999999")).toString()).equals("99.999999980000000001"), "mul035");
+
+ harness.check (((new BigDecimal("5.00")).multiply(new BigDecimal("1E-3")).toString()).equals("0.00500"), "mul036");
+ harness.check (((new BigDecimal("00.00")).multiply(new BigDecimal("0.000")).toString()).equals("0.00000"), "mul037");
+ harness.check (((new BigDecimal("00.00")).multiply(new BigDecimal("0E-3")).toString()).equals("0.00000"), "mul038");
+ // 1999.12.21: next one is a edge case if intermediate longs are used
+ harness.check (((new BigDecimal("999999999999")).multiply(new BigDecimal("9765625")).toString()).equals("9765624999990234375"), "mul039");
+
+ l9=new BigDecimal("123456789E+10");
+ l77e=new BigDecimal("77E-20");
+ harness.check ((l9.multiply(new BigDecimal("3456757")).toString()).equals("4.26760119573273E+24"), "mul040");
+ harness.check ((l9.multiply(l77e).toString()).equals("0.9506172753"), "mul042");
+
+ // test some more edge cases and carries
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9")).toString()).equals("81"), "mul101");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90")).toString()).equals("810"), "mul102");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900")).toString()).equals("8100"), "mul103");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000")).toString()).equals("81000"), "mul104");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000")).toString()).equals("810000"), "mul105");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000")).toString()).equals("8100000"), "mul106");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000")).toString()).equals("81000000"), "mul107");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000")).toString()).equals("810000000"), "mul108");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000000")).toString()).equals("8100000000"), "mul109");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000000")).toString()).equals("81000000000"), "mul110");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000000")).toString()).equals("810000000000"), "mul111");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000000000")).toString()).equals("8100000000000"), "mul112");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000000000")).toString()).equals("81000000000000"), "mul113");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000000000")).toString()).equals("810000000000000"), "mul114");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000000000000")).toString()).equals("8100000000000000"), "mul115");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000000000000")).toString()).equals("81000000000000000"), "mul116");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000000000000")).toString()).equals("810000000000000000"), "mul117");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000000000000000")).toString()).equals("8100000000000000000"), "mul118");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000"), "mul119");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000"), "mul120");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000"), "mul121");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000"), "mul122");
+ harness.check (((new BigDecimal("9")).multiply(new BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000"), "mul123");
+ // test some more edge cases without carries
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3")).toString()).equals("9"), "mul131");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30")).toString()).equals("90"), "mul132");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300")).toString()).equals("900"), "mul133");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000")).toString()).equals("9000"), "mul134");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000")).toString()).equals("90000"), "mul135");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000")).toString()).equals("900000"), "mul136");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000")).toString()).equals("9000000"), "mul137");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000")).toString()).equals("90000000"), "mul138");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000000")).toString()).equals("900000000"), "mul139");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000000")).toString()).equals("9000000000"), "mul140");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000000")).toString()).equals("90000000000"), "mul141");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000000000")).toString()).equals("900000000000"), "mul142");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000000000")).toString()).equals("9000000000000"), "mul143");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000000000")).toString()).equals("90000000000000"), "mul144");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000000000000")).toString()).equals("900000000000000"), "mul145");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000000000000")).toString()).equals("9000000000000000"), "mul146");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000000000000")).toString()).equals("90000000000000000"), "mul147");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000000000000000")).toString()).equals("900000000000000000"), "mul148");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000"), "mul149");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000"), "mul150");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000"), "mul151");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000"), "mul152");
+ harness.check (((new BigDecimal("3")).multiply(new BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000"), "mul153");
+
+ try{checknull:do{
+ ten.multiply((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx55){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "mul200");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#negate} method. */
+
+ public void diagnegate(TestHarness harness){
+ boolean flag=false;
+ java.lang.ArithmeticException ae=null;
+
+ harness.check (((new BigDecimal("2")).negate().toString()).equals("-2"), "neg001");
+ harness.check (((new BigDecimal("-2")).negate().toString()).equals("2"), "neg002");
+
+ harness.check (((new BigDecimal("2.00")).negate().toString()).equals("-2.00"), "neg010");
+ harness.check (((new BigDecimal("-2.00")).negate().toString()).equals("2.00"), "neg011");
+ harness.check (((new BigDecimal("0")).negate().toString()).equals("0"), "neg012");
+ harness.check (((new BigDecimal("0.00")).negate().toString()).equals("0.00"), "neg013");
+ harness.check (((new BigDecimal("00.0")).negate().toString()).equals("0.0"), "neg014");
+ harness.check (((new BigDecimal("00.00")).negate().toString()).equals("0.00"), "neg015");
+ harness.check (((new BigDecimal("00")).negate().toString()).equals("0"), "neg016");
+
+ harness.check (((new BigDecimal("-2000000")).negate().toString()).equals("2000000"), "neg020");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#subtract} method. */
+
+ public void diagsubtract(TestHarness harness){
+ boolean flag=false;
+ BigDecimal alhs;
+ BigDecimal arhs;
+ java.lang.ArithmeticException ae=null;
+
+ harness.check (((new BigDecimal(2)).subtract(new BigDecimal(3)).toString()).equals("-1"), "sub001");
+ harness.check (((new BigDecimal("5.75")).subtract(new BigDecimal("3.3")).toString()).equals("2.45"), "sub002");
+ harness.check (((new BigDecimal("5")).subtract(new BigDecimal("-3")).toString()).equals("8"), "sub003");
+ harness.check (((new BigDecimal("-5")).subtract(new BigDecimal("-3")).toString()).equals("-2"), "sub004");
+ harness.check (((new BigDecimal("-7")).subtract(new BigDecimal("2.5")).toString()).equals("-9.5"), "sub005");
+ harness.check (((new BigDecimal("0.7")).subtract(new BigDecimal("0.3")).toString()).equals("0.4"), "sub006");
+ harness.check (((new BigDecimal("1.3")).subtract(new BigDecimal("0.3")).toString()).equals("1.0"), "sub007");
+ harness.check (((new BigDecimal("1.25")).subtract(new BigDecimal("1.25")).toString()).equals("0.00"), "sub008");
+ harness.check (((new BigDecimal("0.02")).subtract(new BigDecimal("0.02")).toString()).equals("0.00"), "sub009");
+
+ harness.check (((new BigDecimal("1.23456789")).subtract(new BigDecimal("1.00000000")).toString()).equals("0.23456789"), "sub010");
+
+ harness.check (((new BigDecimal("1.23456789")).subtract(new BigDecimal("1.00000089")).toString()).equals("0.23456700"), "sub011");
+
+ harness.check (((new BigDecimal("0.5555555559")).subtract(new BigDecimal("0.0000000001")).toString()).equals("0.5555555558"), "sub012");
+
+ harness.check (((new BigDecimal("0.5555555559")).subtract(new BigDecimal("0.0000000005")).toString()).equals("0.5555555554"), "sub013");
+
+ harness.check (((new BigDecimal("0.4444444444")).subtract(new BigDecimal("0.1111111111")).toString()).equals("0.3333333333"), "sub014");
+
+ harness.check (((new BigDecimal("1.0000000000")).subtract(new BigDecimal("0.00000001")).toString()).equals("0.9999999900"), "sub015");
+
+ harness.check (((new BigDecimal("0.4444444444999")).subtract(new BigDecimal("0")).toString()).equals("0.4444444444999"), "sub016");
+
+ harness.check (((new BigDecimal("0.4444444445000")).subtract(new BigDecimal("0")).toString()).equals("0.4444444445000"), "sub017");
+
+
+ harness.check (((new BigDecimal("70")).subtract(new BigDecimal("10000e+9")).toString()).equals("-9999999999930"), "sub018");
+
+ harness.check (((new BigDecimal("700")).subtract(new BigDecimal("10000e+9")).toString()).equals("-9999999999300"), "sub019");
+
+ harness.check (((new BigDecimal("7000")).subtract(new BigDecimal("10000e+9")).toString()).equals("-9999999993000"), "sub020");
+
+ harness.check (((new BigDecimal("70000")).subtract(new BigDecimal("10000e+9")).toString()).equals("-9999999930000"), "sub021");
+
+ harness.check (((new BigDecimal("700000")).subtract(new BigDecimal("10000e+9")).toString()).equals("-9999999300000"), "sub022");
+
+ // symmetry:
+ harness.check (((new BigDecimal("10000e+9")).subtract(new BigDecimal("70")).toString()).equals("9999999999930"), "sub023");
+
+ harness.check (((new BigDecimal("10000e+9")).subtract(new BigDecimal("700")).toString()).equals("9999999999300"), "sub024");
+
+ harness.check (((new BigDecimal("10000e+9")).subtract(new BigDecimal("7000")).toString()).equals("9999999993000"), "sub025");
+
+ harness.check (((new BigDecimal("10000e+9")).subtract(new BigDecimal("70000")).toString()).equals("9999999930000"), "sub026");
+
+ harness.check (((new BigDecimal("10000e+9")).subtract(new BigDecimal("700000")).toString()).equals("9999999300000"), "sub027");
+
+ // some of the next group are really constructor tests
+ harness.check (((new BigDecimal("00.0")).subtract(new BigDecimal("0.0")).toString()).equals("0.0"), "sub040");
+ harness.check (((new BigDecimal("00.0")).subtract(new BigDecimal("0.00")).toString()).equals("0.00"), "sub041");
+ harness.check (((new BigDecimal("0.00")).subtract(new BigDecimal("00.0")).toString()).equals("0.00"), "sub042");
+ harness.check (((new BigDecimal("3")).subtract(new BigDecimal(".3")).toString()).equals("2.7"), "sub052");
+ harness.check (((new BigDecimal("3.")).subtract(new BigDecimal(".3")).toString()).equals("2.7"), "sub053");
+ harness.check (((new BigDecimal("3.0")).subtract(new BigDecimal(".3")).toString()).equals("2.7"), "sub054");
+ harness.check (((new BigDecimal("3.00")).subtract(new BigDecimal(".3")).toString()).equals("2.70"), "sub055");
+ harness.check (((new BigDecimal("3")).subtract(new BigDecimal("3")).toString()).equals("0"), "sub056");
+ harness.check (((new BigDecimal("3")).subtract(new BigDecimal("+3")).toString()).equals("0"), "sub057");
+ harness.check (((new BigDecimal("3")).subtract(new BigDecimal("-3")).toString()).equals("6"), "sub058");
+
+
+ alhs=new BigDecimal("12345678900000");
+ arhs=new BigDecimal("9999999999999");
+ harness.check ((alhs.subtract(arhs).toString()).equals("2345678900001"), "sub112");
+ harness.check ((arhs.subtract(alhs).toString()).equals("-2345678900001"), "sub113");
+
+ // additional scaled arithmetic tests [0.97 problem]
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".1")).toString()).equals("-0.1"), "sub120");
+ harness.check (((new BigDecimal("00")).subtract(new BigDecimal(".97983")).toString()).equals("-0.97983"), "sub121");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".9")).toString()).equals("-0.9"), "sub122");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("0.102")).toString()).equals("-0.102"), "sub123");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".4")).toString()).equals("-0.4"), "sub124");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".307")).toString()).equals("-0.307"), "sub125");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".43822")).toString()).equals("-0.43822"), "sub126");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".911")).toString()).equals("-0.911"), "sub127");
+ harness.check (((new BigDecimal(".0")).subtract(new BigDecimal(".02")).toString()).equals("-0.02"), "sub128");
+ harness.check (((new BigDecimal("00")).subtract(new BigDecimal(".392")).toString()).equals("-0.392"), "sub129");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".26")).toString()).equals("-0.26"), "sub130");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("0.51")).toString()).equals("-0.51"), "sub131");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".2234")).toString()).equals("-0.2234"), "sub132");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal(".2")).toString()).equals("-0.2"), "sub133");
+ harness.check (((new BigDecimal(".0")).subtract(new BigDecimal(".0008")).toString()).equals("-0.0008"), "sub134");
+ // 0. on left
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.1")).toString()).equals("0.1"), "sub140");
+ harness.check (((new BigDecimal("0.00")).subtract(new BigDecimal("-.97983")).toString()).equals("0.97983"), "sub141");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.9")).toString()).equals("0.9"), "sub142");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-0.102")).toString()).equals("0.102"), "sub143");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.4")).toString()).equals("0.4"), "sub144");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.307")).toString()).equals("0.307"), "sub145");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.43822")).toString()).equals("0.43822"), "sub146");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.911")).toString()).equals("0.911"), "sub147");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.02")).toString()).equals("0.02"), "sub148");
+ harness.check (((new BigDecimal("0.00")).subtract(new BigDecimal("-.392")).toString()).equals("0.392"), "sub149");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.26")).toString()).equals("0.26"), "sub150");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-0.51")).toString()).equals("0.51"), "sub151");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.2234")).toString()).equals("0.2234"), "sub152");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.2")).toString()).equals("0.2"), "sub153");
+ harness.check (((new BigDecimal("0.0")).subtract(new BigDecimal("-.0008")).toString()).equals("0.0008"), "sub154");
+ // negatives of same
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.1")).toString()).equals("0.1"), "sub160");
+ harness.check (((new BigDecimal("00")).subtract(new BigDecimal("-.97983")).toString()).equals("0.97983"), "sub161");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.9")).toString()).equals("0.9"), "sub162");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-0.102")).toString()).equals("0.102"), "sub163");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.4")).toString()).equals("0.4"), "sub164");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.307")).toString()).equals("0.307"), "sub165");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.43822")).toString()).equals("0.43822"), "sub166");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.911")).toString()).equals("0.911"), "sub167");
+ harness.check (((new BigDecimal(".0")).subtract(new BigDecimal("-.02")).toString()).equals("0.02"), "sub168");
+ harness.check (((new BigDecimal("00")).subtract(new BigDecimal("-.392")).toString()).equals("0.392"), "sub169");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.26")).toString()).equals("0.26"), "sub170");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-0.51")).toString()).equals("0.51"), "sub171");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.2234")).toString()).equals("0.2234"), "sub172");
+ harness.check (((new BigDecimal("0")).subtract(new BigDecimal("-.2")).toString()).equals("0.2"), "sub173");
+ harness.check (((new BigDecimal(".0")).subtract(new BigDecimal("-.0008")).toString()).equals("0.0008"), "sub174");
+
+ // more fixed, LHS swaps [really same as testcases under add]
+ harness.check (((new BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267"), "sub180");
+ harness.check (((new BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267"), "sub181");
+ harness.check (((new BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67"), "sub182");
+ harness.check (((new BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7"), "sub183");
+ harness.check (((new BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267"), "sub185");
+
+ try{checknull:do{
+ ten.subtract((BigDecimal)null);
+ flag=false;
+ }while(false);}
+ catch (java.lang.NullPointerException xx83){
+ flag=true;
+ }/*checknull*/
+ harness.check (flag, "sub200");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /* ----------------------------------------------------------------- */
+ /* Other methods */
+ /* ----------------------------------------------------------------- */
+
+ /** Test the <code>BigDecimal.byteValue()</code> method. */
+
+ public void diagbyteValue(TestHarness harness){
+ boolean flag=false;
+ java.lang.String v=null;
+ java.lang.ArithmeticException ae=null;
+ java.lang.String badstrings[];
+ int i=0;
+ java.lang.String norm=null;
+
+
+ harness.check (((((byte)-128)))==((new BigDecimal("-128")).byteValue()), "byv001");
+ harness.check (((0))==((new BigDecimal("0")).byteValue()), "byv002");
+ harness.check (((1))==((new BigDecimal("1")).byteValue()), "byv003");
+ harness.check (((99))==((new BigDecimal("99")).byteValue()), "byv004");
+ harness.check (((127))==((new BigDecimal("127")).byteValue()), "byv005");
+ harness.check (((-128))==((new BigDecimal("128")).byteValue()), "byv006");
+ harness.check (((-127))==((new BigDecimal("129")).byteValue()), "byv007");
+ harness.check (((127))==((new BigDecimal("-129")).byteValue()), "byv008");
+ harness.check (((126))==((new BigDecimal("-130")).byteValue()), "byv009");
+ harness.check (((bmax))==((new BigDecimal(bmax)).byteValue()), "byv010");
+ harness.check (((bmin))==((new BigDecimal(bmin)).byteValue()), "byv011");
+ harness.check (((bneg))==((new BigDecimal(bneg)).byteValue()), "byv012");
+ harness.check (((bzer))==((new BigDecimal(bzer)).byteValue()), "byv013");
+ harness.check (((bpos))==((new BigDecimal(bpos)).byteValue()), "byv014");
+ harness.check (((bmin))==((new BigDecimal(bmax+1)).byteValue()), "byv015");
+ harness.check (((bmax))==((new BigDecimal(bmin-1)).byteValue()), "byv016");
+
+ badstrings=new java.lang.String[]{"1234",(new BigDecimal(bmax)).add(one).toString(),(new BigDecimal(bmin)).subtract(one).toString(),"170","270","370","470","570","670","770","870","970","-170","-270","-370","-470","-570","-670","-770","-870","-970",(new BigDecimal(bmin)).multiply(two).toString(),(new BigDecimal(bmax)).multiply(two).toString(),(new BigDecimal(bmin)).multiply(ten).toString(),(new BigDecimal(bmax)).multiply(ten).toString(),"-1234"}; // 220
+ // 221
+ // 222
+ // 223
+ // 224
+ // 225
+ // 226
+ // 227
+ // 228
+ // 229
+ // 230
+ // 231
+ // 232
+ // 233
+ // 234
+ // 235
+ // 236
+ // 237
+ // 238
+ // 239
+ // 240
+ // 241
+ // 242
+ // 243
+ // 244
+ // 245
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#compareTo(java.lang.Object)} method. */
+
+ public void diagcomparetoObj(TestHarness harness){
+ boolean flag=false;
+ BigDecimal d;
+ BigDecimal long1;
+ BigDecimal long2;
+
+ d=new BigDecimal(17);
+ harness.check ((((Comparable)d).compareTo((java.lang.Object)(new BigDecimal(66))))==(-1), "cto001");
+ harness.check ((((Comparable)d).compareTo((java.lang.Object)((new BigDecimal(10)).add(new BigDecimal(7)))))==0, "cto002");
+ harness.check ((((Comparable)d).compareTo((java.lang.Object)(new BigDecimal(10))))==1, "cto003");
+ long1=new BigDecimal("12345678903");
+ long2=new BigDecimal("12345678900");
+ harness.check ((((Comparable)long1).compareTo((java.lang.Object)long2))==1, "cto004");
+ harness.check ((((Comparable)long2).compareTo((java.lang.Object)long1))==(-1), "cto005");
+ harness.check ((((Comparable)long2).compareTo((java.lang.Object)long2))==0, "cto006");
+ try{
+ ((Comparable)d).compareTo((java.lang.Object)null);
+ flag=false;
+ }
+ catch (java.lang.NullPointerException xx92){
+ flag=true; // should get here
+ }
+ harness.check (flag, "cto101");
+ try{
+ ((Comparable)d).compareTo((java.lang.Object)"foo");
+ flag=false;
+ }
+ catch (java.lang.ClassCastException xx93){
+ flag=true; // should get here
+ }
+ harness.check (flag, "cto102");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#doubleValue} method. */
+
+ public void diagdoublevalue(TestHarness harness){
+ java.lang.String val;
+ // 1999.03.07 Infinities no longer errors
+ val="-1";
+ harness.check (((new BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue()), "dov001");
+ val="-0.1";
+ harness.check (((new BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue()), "dov002");
+ val="0";
+ harness.check (((new BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue()), "dov003");
+ val="0.1";
+ harness.check (((new BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue()), "dov004");
+ val="1";
+ harness.check (((new BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue()), "dov005");
+ val="1e1000";
+ harness.check (((new BigDecimal(val)).doubleValue())==java.lang.Double.POSITIVE_INFINITY, "dov006");
+ val="-1e1000";
+ harness.check (((new BigDecimal(val)).doubleValue())==java.lang.Double.NEGATIVE_INFINITY, "dov007");
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#equals} method. */
+
+ public void diagequals(TestHarness harness){
+ BigDecimal d;
+ d=new BigDecimal(17);
+ harness.check ((!(d.equals((java.lang.Object)null))), "equ001");
+ harness.check ((!(d.equals((java.lang.Object)"foo"))), "equ002");
+ harness.check ((!(d.equals((java.lang.Object)(new BigDecimal(66))))), "equ003");
+ harness.check (d.equals((java.lang.Object)d), "equ004");
+ harness.check (d.equals((java.lang.Object)((new BigDecimal(10)).add(new BigDecimal(7)))), "equ005");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#floatValue} method. */
+
+ public void diagfloatvalue(TestHarness harness){
+ java.lang.String val;
+ // 1999.03.07 Infinities no longer errors
+ val="-1";
+ harness.check (((new BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue()), "flv001");
+ val="-0.1";
+ harness.check (((new BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue()), "flv002");
+ val="0";
+ harness.check (((new BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue()), "flv003");
+ val="0.1";
+ harness.check (((new BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue()), "flv004");
+ val="1";
+ harness.check (((new BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue()), "flv005");
+ val="1e200";
+ harness.check (((new BigDecimal(val)).floatValue())==java.lang.Float.POSITIVE_INFINITY, "flv006");
+ val="-1e200";
+ harness.check (((new BigDecimal(val)).floatValue())==java.lang.Float.NEGATIVE_INFINITY, "flv007");
+ val="1e1000";
+ harness.check (((new BigDecimal(val)).floatValue())==java.lang.Float.POSITIVE_INFINITY, "flv008");
+ val="-1e1000";
+ harness.check (((new BigDecimal(val)).floatValue())==java.lang.Float.NEGATIVE_INFINITY, "flv009");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#hashCode} method. */
+
+ public void diaghashcode(TestHarness harness){
+ // These tests are all wrong. The JDK API for BigDecimal.hashCode()
+ // does not say how the hash values should be calculated.
+ //
+ // java.lang.String hs;
+ // BigDecimal d;
+ // hs="27827817";
+ // d=new BigDecimal(hs);
+ // harness.check ((d.hashCode())==(hs.hashCode()), "has001");
+ // hs="1.265E+200";
+ // d=new BigDecimal(hs);
+ // harness.check ((d.hashCode())==(hs.hashCode()), "has002");
+ // hs="126.5E+200";
+ // d=new BigDecimal(hs);
+ // harness.check ((d.hashCode())!=(hs.hashCode()), "has003");
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#intValue} method. */
+
+ public void diagintvalue(TestHarness harness){
+ boolean flag=false;
+ java.lang.String v=null;
+ java.lang.ArithmeticException ae=null;
+ int i=0;
+ java.lang.String norm=null;
+ BigDecimal dimax;
+ BigDecimal num=null;
+ BigDecimal dv=null;
+ BigDecimal dimin;
+
+
+ // intValue --
+
+ harness.check (imin==((new BigDecimal(imin)).intValue()), "inv001");
+ harness.check (((99))==((new BigDecimal("99")).intValue()), "inv002");
+ harness.check (((1))==((new BigDecimal("1")).intValue()), "inv003");
+ harness.check (((0))==((new BigDecimal("0")).intValue()), "inv004");
+ harness.check (((-1))==((new BigDecimal("-1")).intValue()), "inv005");
+ harness.check (((-99))==((new BigDecimal("-99")).intValue()), "inv006");
+ harness.check (imax==((new BigDecimal(imax)).intValue()), "inv007");
+ harness.check (((5))==((new BigDecimal("5.0")).intValue()), "inv008");
+ harness.check (((5))==((new BigDecimal("5.3")).intValue()), "inv009");
+ harness.check (((5))==((new BigDecimal("5.5")).intValue()), "inv010");
+ harness.check (((5))==((new BigDecimal("5.7")).intValue()), "inv011");
+ harness.check (((5))==((new BigDecimal("5.9")).intValue()), "inv012");
+ harness.check (((-5))==((new BigDecimal("-5.0")).intValue()), "inv013");
+ harness.check (((-5))==((new BigDecimal("-5.3")).intValue()), "inv014");
+ harness.check (((-5))==((new BigDecimal("-5.5")).intValue()), "inv015");
+ harness.check (((-5))==((new BigDecimal("-5.7")).intValue()), "inv016");
+ harness.check (((-5))==((new BigDecimal("-5.9")).intValue()), "inv017");
+ harness.check (((new BigDecimal("88888888888")).intValue())==(-1305424328), "inv018"); // ugh
+ harness.check (((new BigDecimal("-88888888888")).intValue())==1305424328, "inv019"); // ugh
+ harness.check (((imin))==((new BigDecimal((((long)imax))+1)).intValue()), "inv020");
+ harness.check (((imax))==((new BigDecimal((((long)imin))-1)).intValue()), "inv021");
+
+ harness.check (((99))==((new BigDecimal("99")).intValue()), "inv102");
+ harness.check (((1))==((new BigDecimal("1")).intValue()), "inv103");
+ harness.check (((0))==((new BigDecimal("0")).intValue()), "inv104");
+ harness.check (((-1))==((new BigDecimal("-1")).intValue()), "inv105");
+ harness.check (((-99))==((new BigDecimal("-99")).intValue()), "inv106");
+ harness.check (imax==((new BigDecimal(imax)).intValue()), "inv107");
+ harness.check (((5))==((new BigDecimal("5.0")).intValue()), "inv108");
+ harness.check (((-5))==((new BigDecimal("-5.0")).intValue()), "inv109");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#longValue} method. */
+
+ public void diaglongvalue(TestHarness harness){
+ boolean flag=false;
+ java.lang.String v=null;
+ java.lang.ArithmeticException ae=null;
+ java.lang.String badstrings[];
+ int i=0;
+ java.lang.String norm=null;
+ BigDecimal dlmax;
+ BigDecimal num=null;
+ BigDecimal dv=null;
+ BigDecimal dlmin;
+
+
+ // longValue --
+
+ harness.check (lmin==((new BigDecimal(lmin)).longValue()), "lov001");
+ harness.check (lmin==((new BigDecimal(lminString)).longValue()), "lov001a");
+ harness.check ((((long)99))==((new BigDecimal("99")).longValue()), "lov002");
+ harness.check ((((long)1))==((new BigDecimal("1")).longValue()), "lov003");
+ harness.check ((((long)0))==((new BigDecimal("0")).longValue()), "lov004");
+ harness.check ((((long)-1))==((new BigDecimal("-1")).longValue()), "lov005");
+ harness.check ((((long)-99))==((new BigDecimal("-99")).longValue()), "lov006");
+ // This version of the test uses the BigDecimal(double) constructor.
+ // The test fails because ((long)((double) lmax)) != lmax
+ // harness.check (lmax==((new BigDecimal(lmax)).longValue()), "lov007");
+ harness.check (lmax==((new BigDecimal(lmaxString)).longValue()), "lov007a");
+ harness.check ((((long)5))==((new BigDecimal("5.0")).longValue()), "lov008");
+ harness.check ((((long)5))==((new BigDecimal("5.3")).longValue()), "lov009");
+ harness.check ((((long)5))==((new BigDecimal("5.5")).longValue()), "lov010");
+ harness.check ((((long)5))==((new BigDecimal("5.7")).longValue()), "lov011");
+ harness.check ((((long)5))==((new BigDecimal("5.9")).longValue()), "lov012");
+ harness.check ((((long)-5))==((new BigDecimal("-5.0")).longValue()), "lov013");
+ harness.check ((((long)-5))==((new BigDecimal("-5.3")).longValue()), "lov014");
+ harness.check ((((long)-5))==((new BigDecimal("-5.5")).longValue()), "lov015");
+ harness.check ((((long)-5))==((new BigDecimal("-5.7")).longValue()), "lov016");
+ harness.check ((((long)-5))==((new BigDecimal("-5.9")).longValue()), "lov017");
+ harness.check (((new BigDecimal("888888888899999999998")).longValue())==3445173361941522430L, "lov018"); // ugh
+ harness.check (((new BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L), "lov019"); // ugh
+
+ harness.check (lmin==((new BigDecimal(lminString)).longValue()), "lov101");
+ harness.check ((((long)99))==((new BigDecimal("99")).longValue()), "lov102");
+ harness.check ((((long)1))==((new BigDecimal("1")).longValue()), "lov103");
+ harness.check ((((long)0))==((new BigDecimal("0")).longValue()), "lov104");
+ harness.check ((((long)-1))==((new BigDecimal("-1")).longValue()), "lov105");
+ harness.check ((((long)-99))==((new BigDecimal("-99")).longValue()), "lov106");
+ // This version of this test is incorrect: see 'lov007'
+ // harness.check (lmax==((new BigDecimal(lmax)).longValue()), "lov107");
+ harness.check (lmax==((new BigDecimal(lmaxString)).longValue()), "lov107a");
+ harness.check ((((long)5))==((new BigDecimal("5.0")).longValue()), "lov108");
+ harness.check ((((long)-5))==((new BigDecimal("-5.0")).longValue()), "lov109");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#movePointLeft} method. */
+
+ public void diagmovepointleft(TestHarness harness){
+ harness.check (((new BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000"), "mpl001");
+ harness.check (((new BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000"), "mpl002");
+ harness.check (((new BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10"), "mpl003");
+ harness.check (((new BigDecimal("-1")).movePointLeft(0).toString()).equals("-1"), "mpl004");
+ harness.check (((new BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1"), "mpl005");
+ harness.check (((new BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001"), "mpl006");
+ harness.check (((new BigDecimal("-1")).movePointLeft(+10).toString()).equals("-1E-10"), "mpl007");
+
+ harness.check (((new BigDecimal("0")).movePointLeft(-10).toString()).equals("0"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(-5).toString()).equals("0"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(-1).toString()).equals("0"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(0).toString()).equals("0"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000"), "mpl010");
+ harness.check (((new BigDecimal("0")).movePointLeft(+10).toString()).equals("0E-10"), "mpl010");
+
+ harness.check (((new BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000"), "mpl020");
+ harness.check (((new BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000"), "mpl021");
+ harness.check (((new BigDecimal("+1")).movePointLeft(-1).toString()).equals("10"), "mpl022");
+ harness.check (((new BigDecimal("+1")).movePointLeft(0).toString()).equals("1"), "mpl023");
+ harness.check (((new BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1"), "mpl024");
+ harness.check (((new BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001"), "mpl025");
+ harness.check (((new BigDecimal("+1")).movePointLeft(+10).toString()).equals("1E-10"), "mpl026");
+
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000"), "mpl030");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000"), "mpl031");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50"), "mpl032");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5"), "mpl033");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5"), "mpl034");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005"), "mpl035");
+ harness.check (((new BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("5E-10"), "mpl036");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#movePointRight} method. */
+
+ public void diagmovepointright(TestHarness harness){
+ harness.check (((new BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000"), "mpr001");
+ harness.check (((new BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000"), "mpr002");
+ harness.check (((new BigDecimal("-1")).movePointRight(+1).toString()).equals("-10"), "mpr003");
+ harness.check (((new BigDecimal("-1")).movePointRight(0).toString()).equals("-1"), "mpr004");
+ harness.check (((new BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1"), "mpr005");
+ harness.check (((new BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001"), "mpr006");
+ harness.check (((new BigDecimal("-1")).movePointRight(-10).toString()).equals("-1E-10"), "mpr007");
+
+ harness.check (((new BigDecimal("0")).movePointRight(+10).toString()).equals("0"), "mpr010");
+ harness.check (((new BigDecimal("0")).movePointRight(+5).toString()).equals("0"), "mpr011");
+ harness.check (((new BigDecimal("0")).movePointRight(+1).toString()).equals("0"), "mpr012");
+ harness.check (((new BigDecimal("0")).movePointRight(0).toString()).equals("0"), "mpr013");
+ harness.check (((new BigDecimal("0")).movePointRight(-1).toString()).equals("0.0"), "mpr014");
+ harness.check (((new BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000"), "mpr015");
+ harness.check (((new BigDecimal("0")).movePointRight(-10).toString()).equals("0E-10"), "mpr016");
+
+ harness.check (((new BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000"), "mpr020");
+ harness.check (((new BigDecimal("+1")).movePointRight(+5).toString()).equals("100000"), "mpr021");
+ harness.check (((new BigDecimal("+1")).movePointRight(+1).toString()).equals("10"), "mpr022");
+ harness.check (((new BigDecimal("+1")).movePointRight(0).toString()).equals("1"), "mpr023");
+ harness.check (((new BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1"), "mpr024");
+ harness.check (((new BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001"), "mpr025");
+ harness.check (((new BigDecimal("+1")).movePointRight(-10).toString()).equals("1E-10"), "mpr026");
+
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000"), "mpr030");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000"), "mpr031");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50"), "mpr032");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5"), "mpr033");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5"), "mpr034");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005"), "mpr035");
+ harness.check (((new BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("5E-10"), "mpr036");
+
+ return;}
+/* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#scale} method. */
+
+ public void diagscale(TestHarness harness){
+ harness.check (((new BigDecimal("-1")).scale())==0, "sca001");
+ harness.check (((new BigDecimal("-10")).scale())==0, "sca002");
+ harness.check (((new BigDecimal("+1")).scale())==0, "sca003");
+ harness.check (((new BigDecimal("+10")).scale())==0, "sca004");
+ harness.check (((new BigDecimal("1E+10")).scale())==-10, "sca005");
+ harness.check (((new BigDecimal("1E-10")).scale())==10, "sca006");
+ harness.check (((new BigDecimal("0E-10")).scale())==10, "sca007");
+ harness.check (((new BigDecimal("0.000")).scale())==3, "sca008");
+ harness.check (((new BigDecimal("0.00")).scale())==2, "sca009");
+ harness.check (((new BigDecimal("0.0")).scale())==1, "sca010");
+ harness.check (((new BigDecimal("0.1")).scale())==1, "sca011");
+ harness.check (((new BigDecimal("0.12")).scale())==2, "sca012");
+ harness.check (((new BigDecimal("0.123")).scale())==3, "sca013");
+ harness.check (((new BigDecimal("-0.0")).scale())==1, "sca014");
+ harness.check (((new BigDecimal("-0.1")).scale())==1, "sca015");
+ harness.check (((new BigDecimal("-0.12")).scale())==2, "sca016");
+ harness.check (((new BigDecimal("-0.123")).scale())==3, "sca017");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#setScale} method. */
+
+ public void diagsetscale(TestHarness harness){
+ boolean flag=false;
+ java.lang.RuntimeException e=null;
+
+ harness.check (((new BigDecimal("-1")).setScale(0).toString()).equals("-1"), "ssc001");
+ harness.check (((new BigDecimal("-1")).setScale(1).toString()).equals("-1.0"), "ssc002");
+ harness.check (((new BigDecimal("-1")).setScale(2).toString()).equals("-1.00"), "ssc003");
+ harness.check (((new BigDecimal("0")).setScale(0).toString()).equals("0"), "ssc004");
+ harness.check (((new BigDecimal("0")).setScale(1).toString()).equals("0.0"), "ssc005");
+ harness.check (((new BigDecimal("0")).setScale(2).toString()).equals("0.00"), "ssc006");
+ harness.check (((new BigDecimal("+1")).setScale(0).toString()).equals("1"), "ssc007");
+ harness.check (((new BigDecimal("+1")).setScale(1).toString()).equals("1.0"), "ssc008");
+ harness.check (((new BigDecimal("+1")).setScale(2).toString()).equals("1.00"), "ssc009");
+
+ try{checkscale:do{
+ (new BigDecimal(1)).setScale(-8);
+ flag=false;
+ }while(false);}
+ catch (java.lang.ArithmeticException xx117){e=xx117;
+ flag=checkMessage(e, "Negative scale: -8");
+ }/*checkscale*/
+ harness.check (flag, "ssc100");
+ try{checkrunn:do{
+ (new BigDecimal(1.0001D)).setScale(3);
+ flag=false;
+ }while(false);}
+ catch (java.lang.ArithmeticException xx118){e=xx118;
+ flag=checkMessage(e, "Rounding necessary");
+ }/*checkrunn*/
+ harness.check (flag, "ssc101");
+ try{checkrunn:do{
+ (new BigDecimal(1E-8D)).setScale(3);
+ flag=false;
+ }while(false);}
+ catch (java.lang.ArithmeticException xx119){e=xx119;
+ flag=checkMessage(e, "Rounding necessary");
+ }/*checkrunn*/
+ harness.check (flag, "ssc102");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the <code>BigDecimal.shortValue()</code> method. */
+
+ public void diagshortvalue(TestHarness harness){
+ boolean flag=false;
+ java.lang.String v=null;
+ java.lang.ArithmeticException ae=null;
+ java.lang.String badstrings[];
+ int i=0;
+ java.lang.String norm=null;
+
+ harness.check ((((short)0))==((new BigDecimal("0")).shortValue()), "shv002");
+ harness.check ((((short)1))==((new BigDecimal("1")).shortValue()), "shv003");
+ harness.check ((((short)99))==((new BigDecimal("99")).shortValue()), "shv004");
+ harness.check (((smax))==((new BigDecimal(smax)).shortValue()), "shv006");
+ harness.check (((smin))==((new BigDecimal(smin)).shortValue()), "shv007");
+ harness.check (((sneg))==((new BigDecimal(sneg)).shortValue()), "shv008");
+ harness.check (((szer))==((new BigDecimal(szer)).shortValue()), "shv009");
+ harness.check (((spos))==((new BigDecimal(spos)).shortValue()), "shv010");
+ harness.check (((smin))==((new BigDecimal(smax+1)).shortValue()), "shv011");
+ harness.check (((smax))==((new BigDecimal(smin-1)).shortValue()), "shv012");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#signum} method. */
+
+ public void diagsignum(TestHarness harness){
+ // necessarily checks some obscure constructions, too
+ harness.check ((-1)==((new BigDecimal("-1")).signum()), "sig001");
+ harness.check ((-1)==((new BigDecimal("-0.0010")).signum()), "sig002");
+ harness.check ((-1)==((new BigDecimal("-0.001")).signum()), "sig003");
+ harness.check (0==((new BigDecimal("-0.00")).signum()), "sig004");
+ harness.check (0==((new BigDecimal("-0")).signum()), "sig005");
+ harness.check (0==((new BigDecimal("0")).signum()), "sig006");
+ harness.check (0==((new BigDecimal("00")).signum()), "sig007");
+ harness.check (0==((new BigDecimal("00.0")).signum()), "sig008");
+ harness.check (1==((new BigDecimal("00.01")).signum()), "sig009");
+ harness.check (1==((new BigDecimal("00.01")).signum()), "sig010");
+ harness.check (1==((new BigDecimal("00.010")).signum()), "sig011");
+ harness.check (1==((new BigDecimal("01.01")).signum()), "sig012");
+ harness.check (1==((new BigDecimal("+0.01")).signum()), "sig013");
+ harness.check (1==((new BigDecimal("+0.001")).signum()), "sig014");
+ harness.check (1==((new BigDecimal("1")).signum()), "sig015");
+ harness.check (1==((new BigDecimal("1e+12")).signum()), "sig016");
+ harness.check (0==((new BigDecimal("00e+12")).signum()), "sig017");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#toBigInteger} method. */
+
+ public void diagtobiginteger(TestHarness harness){
+ boolean flag=false;
+ java.lang.String badstrings[];
+ int i=0;
+ harness.check (((new BigDecimal("-1")).toBigInteger().toString()).equals("-1"), "tbi001");
+ harness.check (((new BigDecimal("0")).toBigInteger().toString()).equals("0"), "tbi002");
+ harness.check (((new BigDecimal("+1")).toBigInteger().toString()).equals("1"), "tbi003");
+ harness.check (((new BigDecimal("10")).toBigInteger().toString()).equals("10"), "tbi004");
+ harness.check (((new BigDecimal("1000")).toBigInteger().toString()).equals("1000"), "tbi005");
+ harness.check (((new BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1"), "tbi006");
+ harness.check (((new BigDecimal("0E+0")).toBigInteger().toString()).equals("0"), "tbi007");
+ harness.check (((new BigDecimal("+1E+0")).toBigInteger().toString()).equals("1"), "tbi008");
+ harness.check (((new BigDecimal("10E+0")).toBigInteger().toString()).equals("10"), "tbi009");
+ harness.check (((new BigDecimal("1E+3")).toBigInteger().toString()).equals("1000"), "tbi010");
+ harness.check (((new BigDecimal("0.00")).toBigInteger().toString()).equals("0"), "tbi011");
+ harness.check (((new BigDecimal("0.01")).toBigInteger().toString()).equals("0"), "tbi012");
+ harness.check (((new BigDecimal("0.0")).toBigInteger().toString()).equals("0"), "tbi013");
+ harness.check (((new BigDecimal("0.1")).toBigInteger().toString()).equals("0"), "tbi014");
+ harness.check (((new BigDecimal("-0.00")).toBigInteger().toString()).equals("0"), "tbi015");
+ harness.check (((new BigDecimal("-0.01")).toBigInteger().toString()).equals("0"), "tbi016");
+ harness.check (((new BigDecimal("-0.0")).toBigInteger().toString()).equals("0"), "tbi017");
+ harness.check (((new BigDecimal("-0.1")).toBigInteger().toString()).equals("0"), "tbi018");
+ harness.check (((new BigDecimal("1.00")).toBigInteger().toString()).equals("1"), "tbi019");
+ harness.check (((new BigDecimal("1.01")).toBigInteger().toString()).equals("1"), "tbi020");
+ harness.check (((new BigDecimal("1.0")).toBigInteger().toString()).equals("1"), "tbi021");
+ harness.check (((new BigDecimal("1.1")).toBigInteger().toString()).equals("1"), "tbi022");
+ harness.check (((new BigDecimal("-1.00")).toBigInteger().toString()).equals("-1"), "tbi023");
+ harness.check (((new BigDecimal("-1.01")).toBigInteger().toString()).equals("-1"), "tbi024");
+ harness.check (((new BigDecimal("-1.0")).toBigInteger().toString()).equals("-1"), "tbi025");
+ harness.check (((new BigDecimal("-1.1")).toBigInteger().toString()).equals("-1"), "tbi026");
+ harness.check (((new BigDecimal("-111.111")).toBigInteger().toString()).equals("-111"), "tbi027");
+ harness.check (((new BigDecimal("+111.111")).toBigInteger().toString()).equals("111"), "tbi028");
+ harness.check (((new BigDecimal("0.09")).toBigInteger().toString()).equals("0"), "tbi029");
+ harness.check (((new BigDecimal("0.9")).toBigInteger().toString()).equals("0"), "tbi030");
+ harness.check (((new BigDecimal("1.09")).toBigInteger().toString()).equals("1"), "tbi031");
+ harness.check (((new BigDecimal("1.05")).toBigInteger().toString()).equals("1"), "tbi032");
+ harness.check (((new BigDecimal("1.04")).toBigInteger().toString()).equals("1"), "tbi033");
+ harness.check (((new BigDecimal("1.99")).toBigInteger().toString()).equals("1"), "tbi034");
+ harness.check (((new BigDecimal("1.9")).toBigInteger().toString()).equals("1"), "tbi034");
+ harness.check (((new BigDecimal("1.5")).toBigInteger().toString()).equals("1"), "tbi035");
+ harness.check (((new BigDecimal("1.4")).toBigInteger().toString()).equals("1"), "tbi036");
+ harness.check (((new BigDecimal("-1.09")).toBigInteger().toString()).equals("-1"), "tbi037");
+ harness.check (((new BigDecimal("-1.05")).toBigInteger().toString()).equals("-1"), "tbi038");
+ harness.check (((new BigDecimal("-1.04")).toBigInteger().toString()).equals("-1"), "tbi039");
+ harness.check (((new BigDecimal("-1.99")).toBigInteger().toString()).equals("-1"), "tbi040");
+ harness.check (((new BigDecimal("-1.9")).toBigInteger().toString()).equals("-1"), "tbi041");
+ harness.check (((new BigDecimal("-1.5")).toBigInteger().toString()).equals("-1"), "tbi042");
+ harness.check (((new BigDecimal("-1.4")).toBigInteger().toString()).equals("-1"), "tbi043");
+ harness.check (((new BigDecimal("1E-1000")).toBigInteger().toString()).equals("0"), "tbi044");
+ harness.check (((new BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0"), "tbi045");
+
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#toString} method. */
+
+ public void diagtostring(TestHarness harness){
+ java.lang.String str;
+ char car[];
+ BigDecimal d;
+ char ca[];
+ java.lang.String cs;
+ // the function of this has been tested above, this is simply an
+ // existence proof and type-check
+ str="123.45";
+ d=new BigDecimal(str);
+ cs=d.toString();
+ harness.check ((str.length())==(cs.length()), "tos002");
+ harness.check (str.equals((java.lang.Object)cs), "tos004");
+ harness.check ((cs instanceof java.lang.String), "tos005");
+ harness.check ((d.toString() instanceof java.lang.String), "tos006");
+ return;}
+
+ /* ----------------------------------------------------------------- */
+
+ /** Test the {@link BigDecimal#valueOf} method [long and double]. */
+
+ public void diagvalueof(TestHarness harness){
+ boolean flag=false;
+ java.lang.NumberFormatException e=null;
+ double dzer;
+ double dpos;
+ double dneg;
+ double dpos5;
+ double dneg5;
+ double dmin;
+ double dmax;
+ double d;
+
+ // valueOf(long [,scale]) --
+
+ harness.check ((BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2"), "val001");
+ harness.check ((BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1"), "val002");
+ harness.check ((BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0"), "val003");
+ harness.check ((BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1"), "val004");
+ harness.check ((BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2"), "val005");
+ harness.check ((BigDecimal.valueOf((long)((byte)10)).toString()).equals("10"), "val006");
+ harness.check ((BigDecimal.valueOf((long)((byte)11)).toString()).equals("11"), "val007");
+ harness.check ((BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808"), "val008");
+ harness.check ((BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807"), "val009");
+ harness.check ((BigDecimal.valueOf(lneg).toString()).equals("-1"), "val010");
+ harness.check ((BigDecimal.valueOf(lzer).toString()).equals("0"), "val011");
+ harness.check ((BigDecimal.valueOf(lpos).toString()).equals("1"), "val012");
+ harness.check ((BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808"), "val013");
+ harness.check ((BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807"), "val014");
+ harness.check ((BigDecimal.valueOf(lneg,0).toString()).equals("-1"), "val015");
+ harness.check ((BigDecimal.valueOf(lpos,0).toString()).equals("1"), "val016");
+
+ harness.check ((BigDecimal.valueOf(lzer,0).toString()).equals("0"), "val017");
+ harness.check ((BigDecimal.valueOf(lzer,1).toString()).equals("0.0"), "val018");
+ harness.check ((BigDecimal.valueOf(lzer,2).toString()).equals("0.00"), "val019");
+ harness.check ((BigDecimal.valueOf(lzer,3).toString()).equals("0.000"), "val020");
+ harness.check ((BigDecimal.valueOf(lzer,10).toString()).equals("0E-10"), "val021");
+
+ harness.check ((BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808"), "val022");
+ harness.check ((BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807"), "val023");
+
+ return;}
+
+
+ /* ----------------------------------------------------------------- */
+ /* right - Utility to do a 'right' on a Java String */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to right-justify */
+ /* Arg2 is desired length */
+
+ private static java.lang.String right(java.lang.String s,int len){
+ int slen;
+ slen=s.length();
+ if (slen==len)
+ return s; // length just right
+ if (slen>len)
+ return s.substring(slen-len); // truncate on left
+ // too short
+ return (new java.lang.String(new char[len-slen])).replace('\000',' ').concat(s);
+ }
+
+ /* ----------------------------------------------------------------- */
+ /* left - Utility to do a 'left' on a Java String */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to left-justify */
+ /* Arg2 is desired length */
+
+ private static java.lang.String left(java.lang.String s,int len){
+ int slen;
+ slen=s.length();
+ if (slen==len)
+ return s; // length just right
+ if (slen>len)
+ return s.substring(0,len); // truncate on right
+ // too short
+ return s.concat((new java.lang.String(new char[len-slen])).replace('\000',' '));
+ }
+
+ /* ----------------------------------------------------------------- */
+ /* say - Utility to do a display */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to display, omitted if none */
+ /* [null or omitted gives blank line] */
+ // this version doesn't heed continuation final character
+
+ private void say(TestHarness harness){
+ say((java.lang.String)null, harness);return;
+ }
+ private void say(java.lang.String s, TestHarness harness){
+ if (s==null)
+ s=" ";
+ harness.verbose(s);
+ return;
+ }
+
+ private boolean checkMessage(Throwable ex, String msg){
+ return !CHECK_EXCEPTION_MESSAGES || ex.getMessage().equals(msg);
+ }
+
+ public void test (TestHarness harness){
+ diagrun (harness);
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/abs.java b/gnu/testlet/java/math/BigDecimal/abs.java
new file mode 100644
index 00000000..30a9ebd0
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/abs.java
@@ -0,0 +1,90 @@
+// Test of the method BigDecimal.abs()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.abs()
+ */
+public class abs implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test2(harness, new MathContext(1));
+ test2(harness, new MathContext(2));
+ test3(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("2")).abs().toString()).equals("2"));
+ harness.check(((new BigDecimal("-2")).abs().toString()).equals("2"));
+ harness.check(((new BigDecimal("+0.000")).abs().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).abs().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).abs().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-2000000")).abs().toString()).equals("2000000"));
+ harness.check(((new BigDecimal("0.2")).abs().toString()).equals("0.2"));
+ harness.check(((new BigDecimal("-0.2")).abs().toString()).equals("0.2"));
+ harness.check(((new BigDecimal("0.01")).abs().toString()).equals("0.01"));
+ harness.check(((new BigDecimal("-0.01")).abs().toString()).equals("0.01"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ harness.check(((new BigDecimal("2")).abs(mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("-2")).abs(mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("+0.000")).abs(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).abs(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).abs(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("0.2")).abs(mathContext).toString()).equals("0.2"));
+ harness.check(((new BigDecimal("-0.2")).abs(mathContext).toString()).equals("0.2"));
+ harness.check(((new BigDecimal("0.01")).abs(mathContext).toString()).equals("0.01"));
+ harness.check(((new BigDecimal("-0.01")).abs(mathContext).toString()).equals("0.01"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test3(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("-2000000")).abs(new MathContext(0)).toString()).equals("2000000"));
+ harness.check(((new BigDecimal("-2000000")).abs(new MathContext(1)).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("-2000000")).abs(new MathContext(2)).toString()).equals("2.0E+6"));
+ harness.check(((new BigDecimal("-2000000")).abs(new MathContext(3)).toString()).equals("2.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/add.java b/gnu/testlet/java/math/BigDecimal/add.java
new file mode 100644
index 00000000..2a89fc46
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/add.java
@@ -0,0 +1,111 @@
+// Test of the method BigDecimal.add()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.add()
+ */
+public class add implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test3(harness, new MathContext(1));
+ test4(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).add(secondNumber).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).add(secondNumber).toString()).equals("0"));
+ harness.check(((new BigDecimal("+0.000")).add(secondNumber).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("00.000")).add(secondNumber).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("-0.000")).add(secondNumber).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber).toString()).equals("2000002"));
+ harness.check(((new BigDecimal("0.2")).add(secondNumber).toString()).equals("2.2"));
+ harness.check(((new BigDecimal("-0.2")).add(secondNumber).toString()).equals("1.8"));
+ harness.check(((new BigDecimal("0.01")).add(secondNumber).toString()).equals("2.01"));
+ harness.check(((new BigDecimal("-0.01")).add(secondNumber).toString()).equals("1.99"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).add(secondNumber, mathContext).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).add(secondNumber, mathContext).toString()).equals("0"));
+ harness.check(((new BigDecimal("+0.000")).add(secondNumber, mathContext).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("00.000")).add(secondNumber, mathContext).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("-0.000")).add(secondNumber, mathContext).toString()).equals("2.000"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, mathContext).toString()).equals("2000002"));
+ harness.check(((new BigDecimal("0.2")).add(secondNumber, mathContext).toString()).equals("2.2"));
+ harness.check(((new BigDecimal("-0.2")).add(secondNumber, mathContext).toString()).equals("1.8"));
+ harness.check(((new BigDecimal("0.01")).add(secondNumber, mathContext).toString()).equals("2.01"));
+ harness.check(((new BigDecimal("-0.01")).add(secondNumber, mathContext).toString()).equals("1.99"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test3(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).add(secondNumber, mathContext).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).add(secondNumber, mathContext).toString()).equals("0"));
+ harness.check(((new BigDecimal("+0.000")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("00.000")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("-0.000")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, mathContext).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("0.2")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("-0.2")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("0.01")).add(secondNumber, mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("-0.01")).add(secondNumber, mathContext).toString()).equals("2"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test4(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, new MathContext(0)).toString()).equals("2000002"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, new MathContext(1)).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, new MathContext(2)).toString()).equals("2.0E+6"));
+ harness.check(((new BigDecimal("2000000")).add(secondNumber, new MathContext(3)).toString()).equals("2.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/byteValue.java b/gnu/testlet/java/math/BigDecimal/byteValue.java
new file mode 100644
index 00000000..bbfdb8dd
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/byteValue.java
@@ -0,0 +1,60 @@
+// Test of the method BigDecimal.byteValue()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.byteValue()
+ */
+public class byteValue implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).byteValue());
+ harness.check((1) == (new BigDecimal("1")).byteValue());
+ harness.check((99) == (new BigDecimal("99")).byteValue());
+ harness.check((100) == (new BigDecimal("100")).byteValue());
+ harness.check((127) == (new BigDecimal("127")).byteValue());
+ harness.check((-127) ==(new BigDecimal("-127")).byteValue());
+ harness.check((-128)==((new BigDecimal("128")).byteValue()));
+ harness.check((-128)==((new BigDecimal("-128")).byteValue()));
+
+ // overflows/underflows
+ harness.check((-1) ==((new BigDecimal("255")).byteValue()));
+ harness.check((0) ==((new BigDecimal("256")).byteValue()));
+ harness.check((-1) ==((new BigDecimal("65535")).byteValue()));
+ harness.check((0) ==((new BigDecimal("65536")).byteValue()));
+ harness.check((-127)==((new BigDecimal("129")).byteValue()));
+ harness.check((-126)==((new BigDecimal("130")).byteValue()));
+
+ // truncation
+ harness.check((100) == (new BigDecimal("100.0")).byteValue());
+ harness.check((100) == (new BigDecimal("100.1")).byteValue());
+ harness.check((100) == (new BigDecimal("100.9")).byteValue());
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigDecimal/byteValueExact.java b/gnu/testlet/java/math/BigDecimal/byteValueExact.java
new file mode 100644
index 00000000..53e92893
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/byteValueExact.java
@@ -0,0 +1,83 @@
+// Test of the method BigDecimal.byteValueExact()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.byteValueExact()
+ */
+public class byteValueExact implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).byteValueExact());
+ harness.check((1) == (new BigDecimal("1")).byteValueExact());
+ harness.check((99) == (new BigDecimal("99")).byteValueExact());
+ harness.check((100) == (new BigDecimal("100")).byteValueExact());
+ harness.check((-127)== (new BigDecimal("-127")).byteValueExact());
+ harness.check((127) == (new BigDecimal("127")).byteValueExact());
+ harness.check((-128)== (new BigDecimal("-128")).byteValueExact());
+
+ harness.check((0) == (new BigDecimal(".0")).byteValueExact());
+ harness.check((1) == (new BigDecimal("1.0")).byteValueExact());
+ harness.check((99) == (new BigDecimal("99.0")).byteValueExact());
+ harness.check((100) == (new BigDecimal("100.0")).byteValueExact());
+ harness.check((-127)== (new BigDecimal("-127.0")).byteValueExact());
+ harness.check((127) == (new BigDecimal("127.0")).byteValueExact());
+ harness.check((-128)== (new BigDecimal("-128.0")).byteValueExact());
+
+ // overflow/underflow
+ testException(harness, "255");
+ testException(harness, "256");
+ testException(harness, "65535");
+ testException(harness, "65536");
+ testException(harness, "128");
+ testException(harness, "129");
+ testException(harness, "130");
+
+ // truncation
+ testException(harness, "100.1");
+ testException(harness, "100.9");
+ }
+
+ /**
+ * Check if exception is thrown during exact conversion to a byte.
+ */
+ private void testException(TestHarness harness, String numberStr)
+ {
+ try {
+ new BigDecimal(numberStr).byteValueExact();
+ harness.fail("ArithmeticException not thrown as expected for the number: " + numberStr + "!");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/compareTo.java b/gnu/testlet/java/math/BigDecimal/compareTo.java
new file mode 100644
index 00000000..6b17fd29
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/compareTo.java
@@ -0,0 +1,139 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class compareTo implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a, b;
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.1");
+ b = new BigDecimal("10.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.010");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.010");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("010.100");
+ b = new BigDecimal("10.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("010.100");
+ b = new BigDecimal("010.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("010.01");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("0.10");
+ b = new BigDecimal("0.10");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.10");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.100");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("0.10");
+ b = new BigDecimal("0.100");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.10");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.10");
+ harness.check(a.compareTo(b), 0);
+ harness.check(b.compareTo(a), 0);
+
+ a = new BigDecimal("10.101");
+ b = new BigDecimal("10.10");
+ harness.check(a.compareTo(b), 1);
+ harness.check(b.compareTo(a), -1);
+
+ a = new BigDecimal("10.001");
+ b = new BigDecimal("10.10");
+ harness.check(a.compareTo(b), -1);
+ harness.check(b.compareTo(a), 1);
+
+ a = new BigDecimal("10.001");
+ b = new BigDecimal("10.010");
+ harness.check(a.compareTo(b), -1);
+ harness.check(b.compareTo(a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.010");
+ harness.check(a.compareTo(b), -1);
+ harness.check(b.compareTo(a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.0100");
+ harness.check(a.compareTo(b), -1);
+ harness.check(b.compareTo(a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.01000");
+ harness.check(a.compareTo(b), -1);
+ harness.check(b.compareTo(a), 1);
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/compareToObject.java b/gnu/testlet/java/math/BigDecimal/compareToObject.java
new file mode 100644
index 00000000..bb3dc247
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/compareToObject.java
@@ -0,0 +1,200 @@
+// Test of BigDecimal method compareTo(Object).
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+// Tags: CompileOptions: -source 1.4
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method BigDecimal.compareTo(Object);
+ * Partially based on test compareTo(BigDecimal)
+ */
+public class compareToObject implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTest(harness);
+ negativeTest(harness);
+ }
+
+ /**
+ * Positive test for method BigDecimal.compareTo(Object)
+ */
+ public void positiveTest(TestHarness harness)
+ {
+ harness.checkPoint("positive test");
+ try {
+ BigDecimal a, b;
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.1");
+ b = new BigDecimal("10.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.010");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.010");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("010.100");
+ b = new BigDecimal("10.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("010.100");
+ b = new BigDecimal("010.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("010.01");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("0.10");
+ b = new BigDecimal("0.10");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.10");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.100");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("0.10");
+ b = new BigDecimal("0.100");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("10.10");
+ b = new BigDecimal("10.10");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("10.100");
+ b = new BigDecimal("10.10");
+ harness.check(compare(a,b), 0);
+ harness.check(compare(b,a), 0);
+
+ a = new BigDecimal("10.101");
+ b = new BigDecimal("10.10");
+ harness.check(compare(a,b), 1);
+ harness.check(compare(b,a), -1);
+
+ a = new BigDecimal("10.001");
+ b = new BigDecimal("10.10");
+ harness.check(compare(a,b), -1);
+ harness.check(compare(b,a), 1);
+
+ a = new BigDecimal("10.001");
+ b = new BigDecimal("10.010");
+ harness.check(compare(a,b), -1);
+ harness.check(compare(b,a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.010");
+ harness.check(compare(a,b), -1);
+ harness.check(compare(b,a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.0100");
+ harness.check(compare(a,b), -1);
+ harness.check(compare(b,a), 1);
+
+ a = new BigDecimal("10.0010");
+ b = new BigDecimal("10.01000");
+ harness.check(compare(a,b), -1);
+ harness.check(compare(b,a), 1);
+ }
+ catch (ClassCastException e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Negative test for method BigDecimal.compareTo(Object)
+ */
+ public void negativeTest(TestHarness harness)
+ {
+ harness.checkPoint("negative test");
+ try {
+ BigDecimal a;
+ Byte b;
+ a = new BigDecimal("0.1");
+ b = new Byte((byte)1);
+ compare(a,b);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ try {
+ BigDecimal a;
+ String b;
+ a = new BigDecimal("0.1");
+ b = "foobar";
+ compare(a,b);
+ harness.fail("Exception should be thrown here.");
+ }
+ catch (ClassCastException e) {
+ // ok - exception was thrown
+ harness.check(true);
+ }
+ }
+
+ private int compare(BigDecimal a, Object b) throws ClassCastException
+ {
+ return a.compareTo(b);
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/construct.java b/gnu/testlet/java/math/BigDecimal/construct.java
new file mode 100644
index 00000000..a112222e
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/construct.java
@@ -0,0 +1,47 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2001 Red Hat, Inc.
+// Written by Tom Tromey <tromey@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.3
+// We use `1.3' because we have tests involving exponential notation.
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class construct implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.check(new BigDecimal ("0.1").toString (), "0.1");
+ // This example comes from the documentation.
+ harness.check(new BigDecimal (0.1).toString (),
+ "0.1000000000000000055511151231257827021181583404541015625");
+
+ try {
+ harness.check(new BigDecimal ("0.01E5").toString (), "1E+3");
+ harness.check(new BigDecimal ("1000E-5").toString (), "0.01000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ // Add more as needed.
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/constructorBigInteger.java b/gnu/testlet/java/math/BigDecimal/constructorBigInteger.java
new file mode 100644
index 00000000..776a6d83
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorBigInteger.java
@@ -0,0 +1,131 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from an BigInteger value.
+ */
+public class constructorBigInteger implements Testlet
+{
+ /**
+ * Big Integer values used as a parameter passed to constructors.
+ */
+ private static final BigInteger BIGINT_ZERO = BigInteger.ZERO;
+ private static final BigInteger BIGINT_ONE = BigInteger.valueOf (1);
+ private static final BigInteger BIGINT_TEN = BigInteger.TEN;
+ private static final BigInteger BIGINT_M_ONE = BigInteger.valueOf (-1);
+ private static final BigInteger BIGINT_LONG_VALUE = new BigInteger("123456789000");
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(BigInteger)
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger)");
+ try {
+ harness.check(new BigDecimal(BIGINT_ZERO).toString (), "0");
+ harness.check(new BigDecimal(BIGINT_ONE).toString (), "1");
+ harness.check(new BigDecimal(BIGINT_TEN).toString (), "10");
+ harness.check(new BigDecimal(BIGINT_M_ONE).toString (), "-1");
+ harness.check(new BigDecimal(BIGINT_LONG_VALUE).toString (), "123456789000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(BigInteger, MathContext)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger, MathContext)");
+ try {
+ harness.check(new BigDecimal(BIGINT_ZERO, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(BIGINT_ONE, MathContext.UNLIMITED).toString (), "1");
+ harness.check(new BigDecimal(BIGINT_TEN, MathContext.UNLIMITED).toString (), "10");
+ harness.check(new BigDecimal(BIGINT_M_ONE, MathContext.UNLIMITED).toString (), "-1");
+ harness.check(new BigDecimal(BIGINT_LONG_VALUE, MathContext.UNLIMITED).toString (), "123456789000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(BigInteger, scale)
+ */
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger, scale)");
+ try {
+ harness.check(new BigDecimal(BIGINT_ONE, 0).toString (), "1");
+ harness.check(new BigDecimal(BIGINT_ONE, 1).toString (), "0.1");
+ harness.check(new BigDecimal(BIGINT_ONE, 4).toString (), "0.0001");
+ harness.check(new BigDecimal(BIGINT_ONE, 10).toString (), "1E-10");
+ harness.check(new BigDecimal(BIGINT_ONE, -1).toString (), "1E+1");
+ harness.check(new BigDecimal(BIGINT_ONE, -2).toString (), "1E+2");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(BigInteger, scale)
+ */
+ public void test4(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger, scale, MathContext)");
+ try {
+ harness.check(new BigDecimal(BIGINT_ONE, 0, MathContext.UNLIMITED).toString (), "1");
+ harness.check(new BigDecimal(BIGINT_ONE, 1, MathContext.UNLIMITED).toString (), "0.1");
+ harness.check(new BigDecimal(BIGINT_ONE, 4, MathContext.UNLIMITED).toString (), "0.0001");
+ harness.check(new BigDecimal(BIGINT_ONE, 10, MathContext.UNLIMITED).toString (), "1E-10");
+ harness.check(new BigDecimal(BIGINT_ONE, -1, MathContext.UNLIMITED).toString (), "1E+1");
+ harness.check(new BigDecimal(BIGINT_ONE, -2, MathContext.UNLIMITED).toString (), "1E+2");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/constructorCharacterSequence.java b/gnu/testlet/java/math/BigDecimal/constructorCharacterSequence.java
new file mode 100644
index 00000000..fc9a3c8d
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorCharacterSequence.java
@@ -0,0 +1,169 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+// We use `1.5' because the constructor with parametes char[] is first
+// defined here.
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from character sequence.
+ */
+public class constructorCharacterSequence implements Testlet
+{
+ /**
+ * Sequence of characters used as a parameter passed to constructors.
+ */
+ private static final char[] CHAR_SEQUENCE_0 = "0.0".toCharArray();
+ private static final char[] CHAR_SEQUENCE_1 = "0.1".toCharArray();
+ private static final char[] CHAR_SEQUENCE_2 = "0.01".toCharArray();
+ private static final char[] CHAR_SEQUENCE_3 = "0.001".toCharArray();
+ private static final char[] CHAR_SEQUENCE_4 = "0.0001".toCharArray();
+ private static final char[] CHAR_SEQUENCE_5 = "0.00001".toCharArray();
+ private static final char[] CHAR_SEQUENCE_6 = "0.000001".toCharArray();
+ private static final char[] CHAR_SEQUENCE_7 = "0.0000001".toCharArray();
+ private static final char[] CHAR_SEQUENCE_8 = "0.01E5".toCharArray();
+ private static final char[] CHAR_SEQUENCE_9 = "1000E-5".toCharArray();
+
+ /**
+ * This character sequence is used by constructors which accepts
+ * character subsequence.
+ */
+ private static final char[] CHAR_SEQUENCE_10 = "123456".toCharArray();
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(char[])
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(char[])");
+ try {
+ harness.check(new BigDecimal(CHAR_SEQUENCE_0).toString (), "0.0");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_1).toString (), "0.1");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_2).toString (), "0.01");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_3).toString (), "0.001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_4).toString (), "0.0001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_5).toString (), "0.00001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_6).toString (), "0.000001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_7).toString (), "1E-7");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_8).toString (), "1E+3");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_9).toString (), "0.01000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(char[], offset, length)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(char[], offset, length)");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 0, 1).toString(), "1");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 0, 2).toString(), "12");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 1, 1).toString(), "2");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 1, 2).toString(), "23");
+
+ try {
+ System.out.println(new BigDecimal(CHAR_SEQUENCE_10, 1, 10).toString());
+ harness.fail("Exception don't thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // it is expected, that exception is thrown
+ }
+ try {
+ System.out.println(new BigDecimal(CHAR_SEQUENCE_10, -1, 2).toString());
+ harness.fail("Exception don't thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // it is expected, that exception is thrown
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(char[], MathContext)
+ */
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(char[], MathContext)");
+ try {
+ harness.check(new BigDecimal(CHAR_SEQUENCE_0, MathContext.UNLIMITED).toString (), "0.0");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_1, MathContext.UNLIMITED).toString (), "0.1");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_2, MathContext.UNLIMITED).toString (), "0.01");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_3, MathContext.UNLIMITED).toString (), "0.001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_4, MathContext.UNLIMITED).toString (), "0.0001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_5, MathContext.UNLIMITED).toString (), "0.00001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_6, MathContext.UNLIMITED).toString (), "0.000001");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_7, MathContext.UNLIMITED).toString (), "1E-7");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_8, MathContext.UNLIMITED).toString (), "1E+3");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_9, MathContext.UNLIMITED).toString (), "0.01000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(char[], offset, length, MathContext)
+ */
+ public void test4(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(char[], offset, length, MathContext)");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 0, 1, MathContext.UNLIMITED).toString(), "1");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 0, 2, MathContext.UNLIMITED).toString(), "12");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 1, 1, MathContext.UNLIMITED).toString(), "2");
+ harness.check(new BigDecimal(CHAR_SEQUENCE_10, 1, 2, MathContext.UNLIMITED).toString(), "23");
+
+ try {
+ System.out.println(new BigDecimal(CHAR_SEQUENCE_10, 1, 10).toString());
+ harness.fail("Exception don't thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // it is expected, that exception is thrown
+ }
+ try {
+ System.out.println(new BigDecimal(CHAR_SEQUENCE_10, -1, 2).toString());
+ harness.fail("Exception don't thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // it is expected, that exception is thrown
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/constructorDouble.java b/gnu/testlet/java/math/BigDecimal/constructorDouble.java
new file mode 100644
index 00000000..327a2968
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorDouble.java
@@ -0,0 +1,112 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from a double value.
+ */
+public class constructorDouble implements Testlet
+{
+ /**
+ * Double values used as a parameter passed to constructors.
+ */
+ private static final double DOUBLE_VALUE_1 = .0;
+ private static final double DOUBLE_VALUE_2 = -.0;
+ private static final double DOUBLE_VALUE_3 = 10.0;
+ private static final double DOUBLE_VALUE_4 = -10.0;
+ private static final double DOUBLE_VALUE_5 = 10000000000.0;
+ private static final double DOUBLE_VALUE_6 = -10000000000.0;
+
+ /**
+ * Converting following values should cause NumberFormatException to be thrown.
+ */
+ private static final double DOUBLE_VALUE_NAN = Double.NaN;
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(double)
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(double)");
+ try {
+ harness.check(new BigDecimal(DOUBLE_VALUE_1).toString (), "0");
+ harness.check(new BigDecimal(DOUBLE_VALUE_2).toString (), "0");
+ harness.check(new BigDecimal(DOUBLE_VALUE_3).toString (), "10");
+ harness.check(new BigDecimal(DOUBLE_VALUE_4).toString (), "-10");
+ harness.check(new BigDecimal(DOUBLE_VALUE_5).toString (), "10000000000");
+ harness.check(new BigDecimal(DOUBLE_VALUE_6).toString (), "-10000000000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ try {
+ harness.check(new BigDecimal(DOUBLE_VALUE_NAN).toString(), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, we assume that this exception occured here
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(double, MathContext)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(double, MathContext)");
+ try {
+ harness.check(new BigDecimal(DOUBLE_VALUE_1, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(DOUBLE_VALUE_2, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(DOUBLE_VALUE_3, MathContext.UNLIMITED).toString (), "10");
+ harness.check(new BigDecimal(DOUBLE_VALUE_4, MathContext.UNLIMITED).toString (), "-10");
+ harness.check(new BigDecimal(DOUBLE_VALUE_5, MathContext.UNLIMITED).toString (), "10000000000");
+ harness.check(new BigDecimal(DOUBLE_VALUE_6, MathContext.UNLIMITED).toString (), "-10000000000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ try {
+ harness.check(new BigDecimal(DOUBLE_VALUE_NAN, MathContext.UNLIMITED).toString(), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, we assume that this exception occured here
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/constructorInt.java b/gnu/testlet/java/math/BigDecimal/constructorInt.java
new file mode 100644
index 00000000..8cab1c4b
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorInt.java
@@ -0,0 +1,93 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from an int value.
+ */
+public class constructorInt implements Testlet
+{
+ /**
+ * int values used as a parameter passed to constructors.
+ */
+ private static final int INT_VALUE_1 = 0;
+ private static final int INT_VALUE_2 = -0;
+ private static final int INT_VALUE_3 = 1;
+ private static final int INT_VALUE_4 = -1;
+ private static final int INT_VALUE_5 = Integer.MAX_VALUE;
+ private static final int INT_VALUE_6 = Integer.MIN_VALUE;
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(int)
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(int)");
+ try {
+ harness.check(new BigDecimal(INT_VALUE_1).toString (), "0");
+ harness.check(new BigDecimal(INT_VALUE_2).toString (), "0");
+ harness.check(new BigDecimal(INT_VALUE_3).toString (), "1");
+ harness.check(new BigDecimal(INT_VALUE_4).toString (), "-1");
+ harness.check(new BigDecimal(INT_VALUE_5).toString (), "2147483647");
+ harness.check(new BigDecimal(INT_VALUE_6).toString (), "-2147483648");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(int, MathContext)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(int, MathContext)");
+ try {
+ harness.check(new BigDecimal(INT_VALUE_1, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(INT_VALUE_2, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(INT_VALUE_3, MathContext.UNLIMITED).toString (), "1");
+ harness.check(new BigDecimal(INT_VALUE_4, MathContext.UNLIMITED).toString (), "-1");
+ harness.check(new BigDecimal(INT_VALUE_5, MathContext.UNLIMITED).toString (), "2147483647");
+ harness.check(new BigDecimal(INT_VALUE_6, MathContext.UNLIMITED).toString (), "-2147483648");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/constructorLong.java b/gnu/testlet/java/math/BigDecimal/constructorLong.java
new file mode 100644
index 00000000..77e3b3a2
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorLong.java
@@ -0,0 +1,93 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from a long value.
+ */
+public class constructorLong implements Testlet
+{
+ /**
+ * long values used as a parameter passed to constructors.
+ */
+ private static final long LONG_VALUE_1 = 0;
+ private static final long LONG_VALUE_2 = -0;
+ private static final long LONG_VALUE_3 = 1;
+ private static final long LONG_VALUE_4 = -1;
+ private static final long LONG_VALUE_5 = Long.MAX_VALUE;
+ private static final long LONG_VALUE_6 = Long.MIN_VALUE;
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(long)
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(long)");
+ try {
+ harness.check(new BigDecimal(LONG_VALUE_1).toString (), "0");
+ harness.check(new BigDecimal(LONG_VALUE_2).toString (), "0");
+ harness.check(new BigDecimal(LONG_VALUE_3).toString (), "1");
+ harness.check(new BigDecimal(LONG_VALUE_4).toString (), "-1");
+ harness.check(new BigDecimal(LONG_VALUE_5).toString (), "9223372036854775807");
+ harness.check(new BigDecimal(LONG_VALUE_6).toString (), "-9223372036854775808");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(long, MathContext)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(long, MathContext)");
+ try {
+ harness.check(new BigDecimal(LONG_VALUE_1, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(LONG_VALUE_2, MathContext.UNLIMITED).toString (), "0");
+ harness.check(new BigDecimal(LONG_VALUE_3, MathContext.UNLIMITED).toString (), "1");
+ harness.check(new BigDecimal(LONG_VALUE_4, MathContext.UNLIMITED).toString (), "-1");
+ harness.check(new BigDecimal(LONG_VALUE_5, MathContext.UNLIMITED).toString (), "9223372036854775807");
+ harness.check(new BigDecimal(LONG_VALUE_6, MathContext.UNLIMITED).toString (), "-9223372036854775808");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/constructorString.java b/gnu/testlet/java/math/BigDecimal/constructorString.java
new file mode 100644
index 00000000..ad56e2bb
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/constructorString.java
@@ -0,0 +1,231 @@
+// Test of BigDecimal constructors.
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test if instance of BigDecimal class could be created
+ * directly from a string.
+ */
+public class constructorString implements Testlet
+{
+ /**
+ * Strings used as a parameter passed to constructors.
+ */
+ private static final String STRING_LITERAL_0 = "0.0";
+ private static final String STRING_LITERAL_1 = "0.1";
+ private static final String STRING_LITERAL_2 = "0.01";
+ private static final String STRING_LITERAL_3 = "0.001";
+ private static final String STRING_LITERAL_4 = "0.0001";
+ private static final String STRING_LITERAL_5 = "0.00001";
+ private static final String STRING_LITERAL_6 = "0.000001";
+ private static final String STRING_LITERAL_7 = "0.0000001";
+ private static final String STRING_LITERAL_8 = "0.01E5";
+ private static final String STRING_LITERAL_9 = "1000E-5";
+
+ /**
+ * Strings used by negative tests.
+ */
+ private static final String NEG_STRING_LITERAL_0 = "obviously not-a-number";
+ private static final String NEG_STRING_LITERAL_1 = "--0";
+ private static final String NEG_STRING_LITERAL_2 = "123qwe";
+ private static final String NEG_STRING_LITERAL_3 = "qwe123";
+ private static final String NEG_STRING_LITERAL_4 = "0.0.0";
+ private static final String NEG_STRING_LITERAL_5 = "-0.0.0";
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // positive tests
+ test1(harness);
+ test2(harness);
+ // negative tests
+ test3(harness);
+ test4(harness);
+ }
+
+ /**
+ * Constructor BigDecimal(String)
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(String)");
+ try {
+ harness.check(new BigDecimal(STRING_LITERAL_0).toString (), "0.0");
+ harness.check(new BigDecimal(STRING_LITERAL_1).toString (), "0.1");
+ harness.check(new BigDecimal(STRING_LITERAL_2).toString (), "0.01");
+ harness.check(new BigDecimal(STRING_LITERAL_3).toString (), "0.001");
+ harness.check(new BigDecimal(STRING_LITERAL_4).toString (), "0.0001");
+ harness.check(new BigDecimal(STRING_LITERAL_5).toString (), "0.00001");
+ harness.check(new BigDecimal(STRING_LITERAL_6).toString (), "0.000001");
+ harness.check(new BigDecimal(STRING_LITERAL_7).toString (), "1E-7");
+ harness.check(new BigDecimal(STRING_LITERAL_8).toString (), "1E+3");
+ harness.check(new BigDecimal(STRING_LITERAL_9).toString (), "0.01000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(String, MathContext)
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(String, MathContext)");
+ try {
+ harness.check(new BigDecimal(STRING_LITERAL_0, MathContext.UNLIMITED).toString (), "0.0");
+ harness.check(new BigDecimal(STRING_LITERAL_1, MathContext.UNLIMITED).toString (), "0.1");
+ harness.check(new BigDecimal(STRING_LITERAL_2, MathContext.UNLIMITED).toString (), "0.01");
+ harness.check(new BigDecimal(STRING_LITERAL_3, MathContext.UNLIMITED).toString (), "0.001");
+ harness.check(new BigDecimal(STRING_LITERAL_4, MathContext.UNLIMITED).toString (), "0.0001");
+ harness.check(new BigDecimal(STRING_LITERAL_5, MathContext.UNLIMITED).toString (), "0.00001");
+ harness.check(new BigDecimal(STRING_LITERAL_6, MathContext.UNLIMITED).toString (), "0.000001");
+ harness.check(new BigDecimal(STRING_LITERAL_7, MathContext.UNLIMITED).toString (), "1E-7");
+ harness.check(new BigDecimal(STRING_LITERAL_8, MathContext.UNLIMITED).toString (), "1E+3");
+ harness.check(new BigDecimal(STRING_LITERAL_9, MathContext.UNLIMITED).toString (), "0.01000");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(String) - negative tests
+ */
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(String) - negative tests");
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_0).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_1).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_2).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_3).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_4).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_5).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+ }
+
+ /**
+ * Constructor BigDecimal(String) - negative tests
+ */
+ public void test4(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(String, MathContext) - negative tests");
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_0, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_1, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_2, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_3, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_4, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ try {
+ harness.check(new BigDecimal(NEG_STRING_LITERAL_5, MathContext.UNLIMITED).toString (), "");
+ harness.fail("NumberFormatException not thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, this should happen
+ }
+
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/divide.java b/gnu/testlet/java/math/BigDecimal/divide.java
new file mode 100644
index 00000000..bd08b18a
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/divide.java
@@ -0,0 +1,387 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class divide implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a = new BigDecimal("0");
+ BigDecimal b = a;
+
+ /*
+ harness.checkPoint("zero / zero");
+ System.out.println("a: " + a + " b: " + b);
+ System.out.println("a.scale(): " + a.scale());
+ harness.check(a.divide(b, BigDecimal.ROUND_UP), a);
+
+ a = new BigDecimal("0.0");
+ System.out.println("a: " + a + " b: " + b);
+ System.out.println("a.scale(): " + a.scale());
+ harness.check(a.divide(b, BigDecimal.ROUND_DOWN), a);
+
+ b = new BigDecimal("0.00");
+ System.out.println("a: " + a + " b: " + b);
+ System.out.println("b.scale(): " + b.scale());
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), a);
+ */
+
+ harness.checkPoint("basic tests");
+ a = new BigDecimal("10");
+ b = new BigDecimal("2");
+ BigDecimal result = new BigDecimal("5");
+ harness.check(a.divide(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("5");
+ harness.check(a.divide(b), result);
+ b = b.negate();
+ result = new BigDecimal("-5");
+ harness.check(a.divide(b), result);
+
+ harness.checkPoint("unrounded zero");
+ a = new BigDecimal("9");
+ b = new BigDecimal("-100");
+ result = new BigDecimal("0");
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ result = new BigDecimal("-1");
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("0");
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ result = new BigDecimal("-1");
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+
+ a = new BigDecimal("66.70");
+ b = new BigDecimal("2");
+ result = new BigDecimal("33.35");
+ harness.checkPoint("66.70 / 2");
+ harness.check(a.divide(b, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("33");
+ BigDecimal result_up = new BigDecimal("34");
+ harness.checkPoint("66.70 / 2, scale 0");
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_CEILING), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_EVEN), result);
+ boolean exception = false;
+ try
+ {
+ a.divide(b, 0, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("33.3");
+ result_up = new BigDecimal("33.4");
+ harness.checkPoint("66.70 / 2, scale 1");
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_CEILING), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_EVEN), result_up);
+ exception = false;
+ try
+ {
+ a.divide(b, 1, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("33.35");
+ harness.checkPoint("66.70 / 2, scale 2");
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("33.350");
+ harness.checkPoint("66.70 / 2, scale 3");
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UNNECESSARY), result);
+
+ a = new BigDecimal("-66.70");
+ result = new BigDecimal("-33.35");
+ harness.checkPoint("-66.70 / 2");
+ harness.check(a.divide(b, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("-33");
+ result_up = new BigDecimal("-34");
+ harness.checkPoint("-66.70 / 2, scale 0");
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_FLOOR), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_EVEN), result);
+ exception = false;
+ try
+ {
+ a.divide(b, 0, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("-33.3");
+ result_up = new BigDecimal("-33.4");
+ harness.checkPoint("-66.70 / 2, scale 1");
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_FLOOR), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_EVEN), result_up);
+ exception = false;
+ try
+ {
+ a.divide(b, 1, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("-33.35");
+ harness.checkPoint("-66.70 / 2, scale 2");
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("-33.350");
+ harness.checkPoint("-66.70 / 2, scale 3");
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UNNECESSARY), result);
+
+ a = new BigDecimal("66.70");
+ b = new BigDecimal("-2");
+ result = new BigDecimal("-33.35");
+ harness.checkPoint("66.70 / -2");
+ harness.check(a.divide(b, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("-33");
+ result_up = new BigDecimal("-34");
+ harness.checkPoint("66.70 / -2, scale 0");
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_FLOOR), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_EVEN), result);
+ exception = false;
+ try
+ {
+ a.divide(b, 0, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("-33.3");
+ result_up = new BigDecimal("-33.4");
+ harness.checkPoint("66.70 / -2, scale 1");
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_FLOOR), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_EVEN), result_up);
+ exception = false;
+ try
+ {
+ a.divide(b, 1, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("-33.35");
+ harness.checkPoint("66.70 / -2, scale 2");
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("-33.350");
+ harness.checkPoint("66.70 / -2, scale 3");
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UNNECESSARY), result);
+
+ a = new BigDecimal("-66.70");
+ result = new BigDecimal("33.35");
+ harness.checkPoint("-66.70 / -2");
+ harness.check(a.divide(b, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("33");
+ result_up = new BigDecimal("34");
+ harness.checkPoint("-66.70 / -2, scale 0");
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_CEILING), result_up);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 0, BigDecimal.ROUND_HALF_EVEN), result);
+ exception = false;
+ try
+ {
+ a.divide(b, 0, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("33.3");
+ result_up = new BigDecimal("33.4");
+ harness.checkPoint("-66.70 / -2, scale 1");
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_CEILING), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_UP), result_up);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 1, BigDecimal.ROUND_HALF_EVEN), result_up);
+ exception = false;
+ try
+ {
+ a.divide(b, 1, BigDecimal.ROUND_UNNECESSARY);
+ }
+ catch (ArithmeticException ae)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+
+ result = new BigDecimal("33.35");
+ harness.checkPoint("-66.70 / -2, scale 2");
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 2, BigDecimal.ROUND_UNNECESSARY), result);
+
+ result = new BigDecimal("33.350");
+ harness.checkPoint("-66.70 / -2, scale 3");
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_CEILING), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_FLOOR), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_UP), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_DOWN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_HALF_EVEN), result);
+ harness.check(a.divide(b, 3, BigDecimal.ROUND_UNNECESSARY), result);
+
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/divideMathContext.java b/gnu/testlet/java/math/BigDecimal/divideMathContext.java
new file mode 100644
index 00000000..73579f2e
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/divideMathContext.java
@@ -0,0 +1,116 @@
+// Test of the method BigDecimal.divideMathContext()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.divideMathContext()
+ */
+public class divideMathContext implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a = new BigDecimal("0");
+ BigDecimal b = a;
+ BigDecimal result;
+
+ harness.checkPoint("basic tests");
+ a = new BigDecimal("10");
+ b = new BigDecimal("2");
+ result = new BigDecimal("5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding to one");
+ a = new BigDecimal("1000000000000000000");
+ b = new BigDecimal("1000000000000000000");
+ result = new BigDecimal("1");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("1");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-1");
+ harness.check(a.divide(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding to zero");
+ a = new BigDecimal("10");
+ b = new BigDecimal("20");
+ result = new BigDecimal("0.5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("0.5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-0.5");
+ harness.check(a.divide(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding with division");
+ a = new BigDecimal("20.9");
+ b = new BigDecimal("10.1");
+ result = new BigDecimal("2");
+ try {
+ a.divide(b, new MathContext(0));
+ harness.fail("ArithmeticException not thrown as expected");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+
+ harness.checkPoint("rounding with division ");
+ a = new BigDecimal("20.1");
+ b = new BigDecimal("10.9");
+ result = new BigDecimal("2");
+ try {
+ a.divide(b, new MathContext(0));
+ harness.fail("ArithmeticException not thrown as expected");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+
+ harness.checkPoint("rounding with division ");
+ a = new BigDecimal("20.000000000000000000001");
+ b = new BigDecimal("10.000000000000000000001");
+ result = new BigDecimal("2");
+ try {
+ a.divide(b, new MathContext(0));
+ harness.fail("ArithmeticException not thrown as expected");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/divideRoundingMode.java b/gnu/testlet/java/math/BigDecimal/divideRoundingMode.java
new file mode 100644
index 00000000..3d602fbd
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/divideRoundingMode.java
@@ -0,0 +1,120 @@
+// Test of the method BigDecimal.divide(BigDecimal,RoundingMode)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.divide(BigDecimal,RoundingMode)
+ */
+public class divideRoundingMode implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a;
+ BigDecimal b;
+ BigDecimal result;
+
+ harness.checkPoint("basic tests");
+ a = new BigDecimal("10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("4");
+ harness.check(a.divide(b, RoundingMode.UP), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("4");
+ harness.check(a.divide(b, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result");
+ a = new BigDecimal("10");
+ b = new BigDecimal("-3");
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result, second test case");
+ a = new BigDecimal("-10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, RoundingMode.HALF_EVEN), result);
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/divideRoundingModeScale.java b/gnu/testlet/java/math/BigDecimal/divideRoundingModeScale.java
new file mode 100644
index 00000000..56718546
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/divideRoundingModeScale.java
@@ -0,0 +1,201 @@
+// Test of the method BigDecimal.divide(BigDecimal,int,RoundingMode)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.divide(BigDecimal,int,RoundingMode)
+ */
+public class divideRoundingModeScale implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a;
+ BigDecimal b;
+ BigDecimal result;
+
+ harness.checkPoint("basic tests, scale=0");
+ a = new BigDecimal("10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("4");
+ harness.check(a.divide(b, 0, RoundingMode.UP), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, 0, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("4");
+ harness.check(a.divide(b, 0, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, 0, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result, scale=0");
+ a = new BigDecimal("10");
+ b = new BigDecimal("-3");
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, 0, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, 0, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result, second test case, scale=0");
+ a = new BigDecimal("-10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, 0, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-4");
+ harness.check(a.divide(b, 0, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3");
+ harness.check(a.divide(b, 0, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("basic tests, scale=2");
+ a = new BigDecimal("10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("3.34");
+ harness.check(a.divide(b, 2, RoundingMode.UP), result);
+
+ result = new BigDecimal("3.33");
+ harness.check(a.divide(b, 2, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("3.34");
+ harness.check(a.divide(b, 2, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("3.33");
+ harness.check(a.divide(b, 2, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result, scale=2");
+ a = new BigDecimal("10");
+ b = new BigDecimal("-3");
+
+ result = new BigDecimal("-3.34");
+ harness.check(a.divide(b, 2, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-3.34");
+ harness.check(a.divide(b, 2, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_EVEN), result);
+
+
+
+ harness.checkPoint("negative result, second test case, scale=2");
+ a = new BigDecimal("-10");
+ b = new BigDecimal("3");
+
+ result = new BigDecimal("-3.34");
+ harness.check(a.divide(b, 2, RoundingMode.UP), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.DOWN), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.CEILING), result);
+
+ result = new BigDecimal("-3.34");
+ harness.check(a.divide(b, 2, RoundingMode.FLOOR), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_UP), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_DOWN), result);
+
+ result = new BigDecimal("-3.33");
+ harness.check(a.divide(b, 2, RoundingMode.HALF_EVEN), result);
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/divideToIntegralValue.java b/gnu/testlet/java/math/BigDecimal/divideToIntegralValue.java
new file mode 100644
index 00000000..35841cd9
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/divideToIntegralValue.java
@@ -0,0 +1,170 @@
+// Test of the method BigDecimal.divideToIntegralValue()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.divideToIntegralValue()
+ */
+public class divideToIntegralValue implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ BigDecimal a = new BigDecimal("0");
+ BigDecimal b = a;
+ BigDecimal result;
+
+ harness.checkPoint("basic tests");
+ a = new BigDecimal("10");
+ b = new BigDecimal("2");
+ result = new BigDecimal("5");
+ harness.check(a.divideToIntegralValue(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("5");
+ harness.check(a.divideToIntegralValue(b), result);
+ b = b.negate();
+ result = new BigDecimal("-5");
+ harness.check(a.divideToIntegralValue(b), result);
+
+ harness.checkPoint("rounding to one");
+ a = new BigDecimal("1000000000000000000");
+ b = new BigDecimal("1000000000000000000");
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b), result);
+ b = b.negate();
+ result = new BigDecimal("-1");
+ harness.check(a.divideToIntegralValue(b), result);
+
+ harness.checkPoint("rounding to zero");
+ a = new BigDecimal("10");
+ b = new BigDecimal("20");
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b), result);
+ b = b.negate();
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b), result);
+
+ harness.checkPoint("rounding after division");
+ a = new BigDecimal("20.9");
+ b = new BigDecimal("10.1");
+ result = new BigDecimal("2");
+ harness.check(a.divideToIntegralValue(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("2");
+ harness.check(a.divideToIntegralValue(b), result);
+ b = b.negate();
+ result = new BigDecimal("-2");
+ harness.check(a.divideToIntegralValue(b), result);
+
+ harness.checkPoint("rounding after division");
+ a = new BigDecimal("20.1");
+ b = new BigDecimal("10.9");
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b), result);
+ b = b.negate();
+ result = new BigDecimal("-1");
+ harness.check(a.divideToIntegralValue(b), result);
+
+ harness.checkPoint("basic tests");
+ a = new BigDecimal("10");
+ b = new BigDecimal("2");
+ result = new BigDecimal("5");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("5");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-5");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding to one");
+ a = new BigDecimal("1000000000000000000");
+ b = new BigDecimal("1000000000000000000");
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding to zero");
+ a = new BigDecimal("10");
+ b = new BigDecimal("20");
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("0");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding after division");
+ a = new BigDecimal("20.9");
+ b = new BigDecimal("10.1");
+ result = new BigDecimal("2");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("2");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-2");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+
+ harness.checkPoint("rounding after division");
+ a = new BigDecimal("20.1");
+ b = new BigDecimal("10.9");
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ a = a.negate();
+ b = b.negate();
+ result = new BigDecimal("1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ b = b.negate();
+ result = new BigDecimal("-1");
+ harness.check(a.divideToIntegralValue(b, new MathContext(0)), result);
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/hashCode.java b/gnu/testlet/java/math/BigDecimal/hashCode.java
new file mode 100644
index 00000000..63caf640
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/hashCode.java
@@ -0,0 +1,104 @@
+// Test of BigDecimal method hashCode().
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method BigDecimal.hashCode();
+ * Partially based on test compareTo(BigDecimal)
+ */
+public class hashCode implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ positiveTest(harness);
+ negativeTest(harness);
+ }
+
+ /**
+ * Positive test for method BigDecimal.hashCode()
+ */
+ public void positiveTest(TestHarness harness)
+ {
+ BigDecimal a, b;
+
+ a = new BigDecimal("0");
+ b = new BigDecimal("0");
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = BigDecimal.ZERO;
+ b = new BigDecimal("0");
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = BigDecimal.ZERO;
+ b = new BigDecimal(0);
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = new BigDecimal("1");
+ b = new BigDecimal("1");
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = BigDecimal.ONE;
+ b = new BigDecimal("1");
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = BigDecimal.ONE;
+ b = new BigDecimal(1);
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.1");
+ harness.check(a.hashCode(), b.hashCode());
+
+ a = new BigDecimal(10);
+ b = BigDecimal.TEN;
+ harness.check(a.hashCode(), b.hashCode());
+ }
+
+ /**
+ * Negative test for method BigDecimal.hashCode()
+ */
+ public void negativeTest(TestHarness harness)
+ {
+ BigDecimal a, b;
+
+ a = new BigDecimal("0.1");
+ b = new BigDecimal("0.10");
+ harness.check(a.hashCode() != b.hashCode());
+
+ a = new BigDecimal("10.0");
+ b = BigDecimal.TEN;
+ harness.check(a.hashCode() != b.hashCode());
+
+ a = new BigDecimal("10.0");
+ b = new BigDecimal("10.00");
+ harness.check(a.hashCode() != b.hashCode());
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/intValue.java b/gnu/testlet/java/math/BigDecimal/intValue.java
new file mode 100644
index 00000000..e1f923bd
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/intValue.java
@@ -0,0 +1,66 @@
+// Test of the method BigDecimal.intValue()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.intValue()
+ */
+public class intValue implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).intValue());
+ harness.check((1) == (new BigDecimal("1")).intValue());
+ harness.check((99) == (new BigDecimal("99")).intValue());
+ harness.check((100) == (new BigDecimal("100")).intValue());
+ harness.check((127) == (new BigDecimal("127")).intValue());
+ harness.check((-127) == (new BigDecimal("-127")).intValue());
+ harness.check((128) == (new BigDecimal("128")).intValue());
+ harness.check((-128) == (new BigDecimal("-128")).intValue());
+ harness.check((32767) == (new BigDecimal("32767")).intValue());
+ harness.check((-32768) == (new BigDecimal("-32768")).intValue());
+ harness.check((2147483647) == ((new BigDecimal("2147483647")).intValue()));
+ harness.check((-2147483647) == ((new BigDecimal("-2147483647")).intValue()));
+
+ // overflows/underflows
+ harness.check((-2147483648) == ((new BigDecimal("2147483648")).intValue()));
+ harness.check((-2147483647) == ((new BigDecimal("2147483649")).intValue()));
+ harness.check((-2147483646) == ((new BigDecimal("2147483650")).intValue()));
+ harness.check((0) == ((new BigDecimal("4294967296")).intValue()));
+ harness.check((-1) == ((new BigDecimal("4294967295")).intValue()));
+ harness.check((-2) == ((new BigDecimal("4294967294")).intValue()));
+
+ // truncation
+ harness.check((100) == (new BigDecimal("100.0")).intValue());
+ harness.check((100) == (new BigDecimal("100.1")).intValue());
+ harness.check((100) == (new BigDecimal("100.9")).intValue());
+ }
+
+}
+
+
diff --git a/gnu/testlet/java/math/BigDecimal/intValueExact.java b/gnu/testlet/java/math/BigDecimal/intValueExact.java
new file mode 100644
index 00000000..17558e3d
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/intValueExact.java
@@ -0,0 +1,78 @@
+// Test of the method BigDecimal.intValueExact()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.intValueExact()
+ */
+public class intValueExact implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).intValueExact());
+ harness.check((1) == (new BigDecimal("1")).intValueExact());
+ harness.check((99) == (new BigDecimal("99")).intValueExact());
+ harness.check((100) == (new BigDecimal("100")).intValueExact());
+ harness.check((127) == (new BigDecimal("127")).intValueExact());
+ harness.check((-127) == (new BigDecimal("-127")).intValueExact());
+ harness.check((128) == (new BigDecimal("128")).intValueExact());
+ harness.check((-128) == (new BigDecimal("-128")).intValueExact());
+ harness.check((32767) == (new BigDecimal("32767")).intValueExact());
+ harness.check((-32768) == (new BigDecimal("-32768")).intValueExact());
+ harness.check((2147483647) == ((new BigDecimal("2147483647")).intValueExact()));
+ harness.check((-2147483647) == ((new BigDecimal("-2147483647")).intValueExact()));
+
+ // overflow/underflow
+ testException(harness, "2147483648");
+ testException(harness, "2147483649");
+ testException(harness, "2147483650");
+ testException(harness, "4294967296");
+ testException(harness, "4294967295");
+ testException(harness, "4294967294");
+
+ // truncation
+ testException(harness, "100.1");
+ testException(harness, "100.9");
+ }
+
+ /**
+ * Check if exception is thrown during exact conversion to an int.
+ */
+ private void testException(TestHarness harness, String numberStr)
+ {
+ try {
+ new BigDecimal(numberStr).intValueExact();
+ harness.fail("ArithmeticException not thrown as expected for the number: " + numberStr + "!");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/math/BigDecimal/longValue.java b/gnu/testlet/java/math/BigDecimal/longValue.java
new file mode 100644
index 00000000..1e506a81
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/longValue.java
@@ -0,0 +1,62 @@
+// Test of the method BigDecimal.longValue()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.longValue()
+ */
+public class longValue implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).longValue());
+ harness.check((1) == (new BigDecimal("1")).longValue());
+ harness.check((99) == (new BigDecimal("99")).longValue());
+ harness.check((100) == (new BigDecimal("100")).longValue());
+ harness.check((127) == (new BigDecimal("127")).longValue());
+ harness.check((-127) == (new BigDecimal("-127")).longValue());
+ harness.check((128) == (new BigDecimal("128")).longValue());
+ harness.check((-128) == (new BigDecimal("-128")).longValue());
+ harness.check((32767) == (new BigDecimal("32767")).longValue());
+ harness.check((-32768) == (new BigDecimal("-32768")).longValue());
+ harness.check((2147483647) == ((new BigDecimal("2147483647")).longValue()));
+ harness.check((-2147483647) == ((new BigDecimal("-2147483647")).longValue()));
+
+ // overflows/underflows
+ harness.check((4294967296L) == ((new BigDecimal("4294967296")).longValue()));
+ harness.check((4294967295L) == ((new BigDecimal("4294967295")).longValue()));
+ harness.check((4294967294L) == ((new BigDecimal("4294967294")).longValue()));
+
+ // truncation
+ harness.check((100) == (new BigDecimal("100.0")).longValue());
+ harness.check((100) == (new BigDecimal("100.1")).longValue());
+ harness.check((100) == (new BigDecimal("100.9")).longValue());
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/longValueExact.java b/gnu/testlet/java/math/BigDecimal/longValueExact.java
new file mode 100644
index 00000000..f2f4d0f9
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/longValueExact.java
@@ -0,0 +1,73 @@
+// Test of the method BigDecimal.longValueExact()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.longValueExact()
+ */
+public class longValueExact implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).longValueExact());
+ harness.check((1) == (new BigDecimal("1")).longValueExact());
+ harness.check((99) == (new BigDecimal("99")).longValueExact());
+ harness.check((100) == (new BigDecimal("100")).longValueExact());
+ harness.check((127) == (new BigDecimal("127")).longValueExact());
+ harness.check((-127) == (new BigDecimal("-127")).longValueExact());
+ harness.check((128) == (new BigDecimal("128")).longValueExact());
+ harness.check((-128) == (new BigDecimal("-128")).longValueExact());
+ harness.check((32767) == (new BigDecimal("32767")).longValueExact());
+ harness.check((-32768) == (new BigDecimal("-32768")).longValueExact());
+ harness.check((2147483647) == ((new BigDecimal("2147483647")).longValueExact()));
+ harness.check((-2147483647) == ((new BigDecimal("-2147483647")).longValueExact()));
+
+ // overflow/underflow
+ testException(harness, "18446744073709551615");
+ testException(harness, "18446744073709551616");
+
+ // truncation
+ testException(harness, "100.1");
+ testException(harness, "100.9");
+ }
+
+ /**
+ * Check if exception is thrown during exact conversion to a long.
+ */
+ private void testException(TestHarness harness, String numberStr)
+ {
+ try {
+ new BigDecimal(numberStr).longValueExact();
+ harness.fail("ArithmeticException not thrown as expected for the number: " + numberStr + "!");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/multiply.java b/gnu/testlet/java/math/BigDecimal/multiply.java
new file mode 100644
index 00000000..8309fdb4
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/multiply.java
@@ -0,0 +1,111 @@
+// Test of the method BigDecimal.multiply()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.multiply()
+ */
+public class multiply implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test3(harness, new MathContext(1));
+ test4(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).multiply(secondNumber).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).multiply(secondNumber).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).multiply(secondNumber).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).multiply(secondNumber).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).multiply(secondNumber).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber).toString()).equals("4000000"));
+ harness.check(((new BigDecimal("0.2")).multiply(secondNumber).toString()).equals("0.4"));
+ harness.check(((new BigDecimal("-0.2")).multiply(secondNumber).toString()).equals("-0.4"));
+ harness.check(((new BigDecimal("0.01")).multiply(secondNumber).toString()).equals("0.02"));
+ harness.check(((new BigDecimal("-0.01")).multiply(secondNumber).toString()).equals("-0.02"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).multiply(secondNumber, mathContext).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).multiply(secondNumber, mathContext).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, mathContext).toString()).equals("4000000"));
+ harness.check(((new BigDecimal("0.2")).multiply(secondNumber, mathContext).toString()).equals("0.4"));
+ harness.check(((new BigDecimal("-0.2")).multiply(secondNumber, mathContext).toString()).equals("-0.4"));
+ harness.check(((new BigDecimal("0.01")).multiply(secondNumber, mathContext).toString()).equals("0.02"));
+ harness.check(((new BigDecimal("-0.01")).multiply(secondNumber, mathContext).toString()).equals("-0.02"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test3(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).multiply(secondNumber, mathContext).toString()).equals("4"));
+ harness.check(((new BigDecimal("-2")).multiply(secondNumber, mathContext).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).multiply(secondNumber, mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, mathContext).toString()).equals("4E+6"));
+ harness.check(((new BigDecimal("0.2")).multiply(secondNumber, mathContext).toString()).equals("0.4"));
+ harness.check(((new BigDecimal("-0.2")).multiply(secondNumber, mathContext).toString()).equals("-0.4"));
+ harness.check(((new BigDecimal("0.01")).multiply(secondNumber, mathContext).toString()).equals("0.02"));
+ harness.check(((new BigDecimal("-0.01")).multiply(secondNumber, mathContext).toString()).equals("-0.02"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test4(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, new MathContext(0)).toString()).equals("4000000"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, new MathContext(1)).toString()).equals("4E+6"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, new MathContext(2)).toString()).equals("4.0E+6"));
+ harness.check(((new BigDecimal("2000000")).multiply(secondNumber, new MathContext(3)).toString()).equals("4.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/negate.java b/gnu/testlet/java/math/BigDecimal/negate.java
new file mode 100644
index 00000000..c110b46c
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/negate.java
@@ -0,0 +1,95 @@
+// Test of the method BigDecimal.negate()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.negate()
+ */
+public class negate implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test2(harness, new MathContext(1));
+ test2(harness, new MathContext(2));
+ test3(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("2")).negate().toString()).equals("-2"));
+ harness.check(((new BigDecimal("-2")).negate().toString()).equals("2"));
+ harness.check(((new BigDecimal("+0.000")).negate().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).negate().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).negate().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-2000000")).negate().toString()).equals("2000000"));
+ harness.check(((new BigDecimal("0.2")).negate().toString()).equals("-0.2"));
+ harness.check(((new BigDecimal("-0.2")).negate().toString()).equals("0.2"));
+ harness.check(((new BigDecimal("0.01")).negate().toString()).equals("-0.01"));
+ harness.check(((new BigDecimal("-0.01")).negate().toString()).equals("0.01"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ harness.check(((new BigDecimal("2")).negate(mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("-2")).negate(mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("+0.000")).negate(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).negate(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).negate(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("0.2")).negate(mathContext).toString()).equals("-0.2"));
+ harness.check(((new BigDecimal("-0.2")).negate(mathContext).toString()).equals("0.2"));
+ harness.check(((new BigDecimal("0.01")).negate(mathContext).toString()).equals("-0.01"));
+ harness.check(((new BigDecimal("-0.01")).negate(mathContext).toString()).equals("0.01"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test3(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("-2000000")).negate(new MathContext(0)).toString()).equals("2000000"));
+ harness.check(((new BigDecimal("-2000000")).negate(new MathContext(1)).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("-2000000")).negate(new MathContext(2)).toString()).equals("2.0E+6"));
+ harness.check(((new BigDecimal("-2000000")).negate(new MathContext(3)).toString()).equals("2.00E+6"));
+
+ harness.check(((new BigDecimal("2000000")).negate(new MathContext(0)).toString()).equals("-2000000"));
+ harness.check(((new BigDecimal("2000000")).negate(new MathContext(1)).toString()).equals("-2E+6"));
+ harness.check(((new BigDecimal("2000000")).negate(new MathContext(2)).toString()).equals("-2.0E+6"));
+ harness.check(((new BigDecimal("2000000")).negate(new MathContext(3)).toString()).equals("-2.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/plus.java b/gnu/testlet/java/math/BigDecimal/plus.java
new file mode 100644
index 00000000..3dc732dc
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/plus.java
@@ -0,0 +1,95 @@
+// Test of the method BigDecimal.plus()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.plus()
+ */
+public class plus implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test2(harness, new MathContext(1));
+ test2(harness, new MathContext(2));
+ test3(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("2")).plus().toString()).equals("2"));
+ harness.check(((new BigDecimal("-2")).plus().toString()).equals("-2"));
+ harness.check(((new BigDecimal("+0.000")).plus().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).plus().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).plus().toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-2000000")).plus().toString()).equals("-2000000"));
+ harness.check(((new BigDecimal("0.2")).plus().toString()).equals("0.2"));
+ harness.check(((new BigDecimal("-0.2")).plus().toString()).equals("-0.2"));
+ harness.check(((new BigDecimal("0.01")).plus().toString()).equals("0.01"));
+ harness.check(((new BigDecimal("-0.01")).plus().toString()).equals("-0.01"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ harness.check(((new BigDecimal("2")).plus(mathContext).toString()).equals("2"));
+ harness.check(((new BigDecimal("-2")).plus(mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("+0.000")).plus(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("00.000")).plus(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("-0.000")).plus(mathContext).toString()).equals("0.000"));
+ harness.check(((new BigDecimal("0.2")).plus(mathContext).toString()).equals("0.2"));
+ harness.check(((new BigDecimal("-0.2")).plus(mathContext).toString()).equals("-0.2"));
+ harness.check(((new BigDecimal("0.01")).plus(mathContext).toString()).equals("0.01"));
+ harness.check(((new BigDecimal("-0.01")).plus(mathContext).toString()).equals("-0.01"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test3(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("2000000")).plus(new MathContext(0)).toString()).equals("2000000"));
+ harness.check(((new BigDecimal("2000000")).plus(new MathContext(1)).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("2000000")).plus(new MathContext(2)).toString()).equals("2.0E+6"));
+ harness.check(((new BigDecimal("2000000")).plus(new MathContext(3)).toString()).equals("2.00E+6"));
+
+ harness.check(((new BigDecimal("-2000000")).plus(new MathContext(0)).toString()).equals("-2000000"));
+ harness.check(((new BigDecimal("-2000000")).plus(new MathContext(1)).toString()).equals("-2E+6"));
+ harness.check(((new BigDecimal("-2000000")).plus(new MathContext(2)).toString()).equals("-2.0E+6"));
+ harness.check(((new BigDecimal("-2000000")).plus(new MathContext(3)).toString()).equals("-2.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/pow.java b/gnu/testlet/java/math/BigDecimal/pow.java
new file mode 100644
index 00000000..2d2fa6bf
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/pow.java
@@ -0,0 +1,166 @@
+// Test of the method BigDecimal.pow()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.pow()
+ */
+public class pow implements Testlet
+{
+ class TestCase
+ {
+ public String input;
+ public int power;
+ public String output;
+
+ public TestCase(String input, int power, String output) {
+ this.input = input;
+ this.power = power;
+ this.output = output;
+ }
+ };
+
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test3(harness, new MathContext(1));
+ test4(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ TestCase[] testCases = new TestCase[] {
+ new TestCase("0", 0, "1"),
+ new TestCase("1", 0, "1"),
+ new TestCase("0", 1, "0"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2.", 2, "4"),
+ new TestCase("2.0", 2, "4.00"),
+ new TestCase("2.00", 2, "4.0000"),
+ new TestCase("2.000", 2, "4.000000"),
+
+ new TestCase("-0", 0, "1"),
+ new TestCase("-1", 0, "1"),
+ new TestCase("-0", 1, "0"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2.", 2, "4"),
+ new TestCase("-2.0", 2, "4.00"),
+ new TestCase("-2.00", 2, "4.0000"),
+ new TestCase("-2.000", 2, "4.000000"),
+ };
+ for (int i = 0; i < testCases.length; i++) {
+ TestCase testCase = testCases[i];
+ // System.out.println(testCase.input + "\t" + testCase.power + "\t" + new BigDecimal(testCase.input).pow(testCase.power).toString());
+ harness.check(((new BigDecimal(testCase.input)).pow(testCase.power).toString()).equals(testCase.output));
+ }
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ TestCase[] testCases = new TestCase[] {
+ new TestCase("0", 0, "1"),
+ new TestCase("1", 0, "1"),
+ new TestCase("0", 1, "0"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2.", 2, "4"),
+ new TestCase("2.0", 2, "4.00"),
+ new TestCase("2.00", 2, "4.0000"),
+ new TestCase("2.000", 2, "4.000000"),
+
+ new TestCase("-0", 0, "1"),
+ new TestCase("-1", 0, "1"),
+ new TestCase("-0", 1, "0"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2.", 2, "4"),
+ new TestCase("-2.0", 2, "4.00"),
+ new TestCase("-2.00", 2, "4.0000"),
+ new TestCase("-2.000", 2, "4.000000"),
+ };
+ for (int i = 0; i < testCases.length; i++) {
+ TestCase testCase = testCases[i];
+ // System.out.println(testCase.input + "\t" + testCase.power + "\t" + new BigDecimal(testCase.input).pow(testCase.power).toString());
+ harness.check(((new BigDecimal(testCase.input)).pow(testCase.power).toString()).equals(testCase.output));
+ }
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test3(TestHarness harness, MathContext mathContext)
+ {
+ TestCase[] testCases = new TestCase[] {
+ new TestCase("0", 0, "1"),
+ new TestCase("1", 0, "1"),
+ new TestCase("0", 1, "0"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2", 2, "4"),
+ new TestCase("2.", 2, "4"),
+ new TestCase("2.0", 2, "4.00"),
+ new TestCase("2.00", 2, "4.0000"),
+ new TestCase("2.000", 2, "4.000000"),
+
+ new TestCase("-0", 0, "1"),
+ new TestCase("-1", 0, "1"),
+ new TestCase("-0", 1, "0"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2", 2, "4"),
+ new TestCase("-2.", 2, "4"),
+ new TestCase("-2.0", 2, "4.00"),
+ new TestCase("-2.00", 2, "4.0000"),
+ new TestCase("-2.000", 2, "4.000000"),
+ };
+ for (int i = 0; i < testCases.length; i++) {
+ TestCase testCase = testCases[i];
+ // System.out.println(testCase.input + "\t" + testCase.power + "\t" + new BigDecimal(testCase.input).pow(testCase.power).toString());
+ harness.check(((new BigDecimal(testCase.input)).pow(testCase.power).toString()).equals(testCase.output));
+ }
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test4(TestHarness harness)
+ {
+ harness.check(((new BigDecimal("2000000")).pow(1, new MathContext(0)).toString()).equals("2000000"));
+ harness.check(((new BigDecimal("2000000")).pow(-2, new MathContext(1)).toString()).equals("3E-13"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/precision.java b/gnu/testlet/java/math/BigDecimal/precision.java
new file mode 100644
index 00000000..3c01267a
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/precision.java
@@ -0,0 +1,61 @@
+// Test of BigDecimal method precision().
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method BigDecimal.precision().
+ */
+public class precision implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(new BigDecimal(0).precision(), 1);
+ harness.check(BigDecimal.ZERO.precision(), 1);
+ harness.check(BigDecimal.ONE.precision(), 1);
+ harness.check(BigDecimal.TEN.precision(), 2);
+ harness.check(new BigDecimal("1").precision(), 1);
+ harness.check(new BigDecimal("1.").precision(), 1);
+ harness.check(new BigDecimal("0.1").precision(), 1);
+ harness.check(new BigDecimal(".1").precision(), 1);
+ harness.check(new BigDecimal("10").precision(), 2);
+ harness.check(new BigDecimal("100").precision(), 3);
+ harness.check(new BigDecimal("1000").precision(), 4);
+ harness.check(new BigDecimal("0.001").precision(), 1);
+ harness.check(new BigDecimal(".001").precision(), 1);
+ harness.check(new BigDecimal("1.1").precision(), 2);
+ harness.check(new BigDecimal("1.01").precision(), 3);
+ harness.check(new BigDecimal("1.001").precision(), 4);
+ harness.check(new BigDecimal("10.001").precision(), 5);
+ harness.check(new BigDecimal("100.001").precision(), 6);
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/setScale.java b/gnu/testlet/java/math/BigDecimal/setScale.java
new file mode 100644
index 00000000..5d2bf4b7
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/setScale.java
@@ -0,0 +1,123 @@
+// Test of setScale method of BigDecimal. (PR 1596)
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class setScale implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("newScale");
+ BigDecimal amount = new BigDecimal ("12.34");
+ BigDecimal rate = new BigDecimal ("0.06");
+ BigDecimal result = amount.multiply (rate);
+ try
+ {
+ BigDecimal foo = result.setScale(-1, BigDecimal.ROUND_UNNECESSARY);
+ harness.fail ("Failed to catch ArithmeticException");
+ }
+ catch (ArithmeticException e)
+ {
+ harness.check (true);
+ }
+ harness.check (result.setScale(0, BigDecimal.ROUND_HALF_UP),
+ new BigDecimal ("1"));
+ harness.check (result.setScale(1, BigDecimal.ROUND_HALF_UP),
+ new BigDecimal ("0.7"));
+ harness.check (result.setScale(2, BigDecimal.ROUND_HALF_UP),
+ new BigDecimal ("0.74"));
+ harness.check (result.setScale(3, BigDecimal.ROUND_HALF_UP),
+ new BigDecimal ("0.740"));
+ harness.check (result.setScale(4, BigDecimal.ROUND_HALF_UP),
+ new BigDecimal ("0.7404"));
+
+ // setScale testcase from Jerry Quinn <jlquinn@optonline.net>
+ harness.checkPoint ("quinn");
+ BigDecimal x = new BigDecimal("0.20562");
+ harness.check (x.toString(), "0.20562");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN); // to x.xx
+ harness.check (x.toString(), "0.21");
+
+ x = new BigDecimal("0.20499");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.20");
+
+ x = new BigDecimal("0.20500");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.20");
+
+ x = new BigDecimal("0.20501");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.21");
+
+ x = new BigDecimal("0.21499");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.21");
+
+ x = new BigDecimal("0.21500");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.22");
+
+ x = new BigDecimal("0.21501");
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "0.22");
+
+ // And now the negative versions.
+ harness.checkPoint ("quinneg");
+ x = new BigDecimal("-0.20562");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN); // to x.xx
+ harness.check (x.toString(), "-0.21");
+
+ x = new BigDecimal("-0.20499");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.20");
+
+ x = new BigDecimal("-0.20500");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.20");
+
+ x = new BigDecimal("-0.20501");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.21");
+
+ x = new BigDecimal("-0.21499");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.21");
+
+ x = new BigDecimal("-0.21500");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.22");
+
+ x = new BigDecimal("-0.21501");
+ harness.verbose(x.toString());
+ x = x.setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ harness.check (x.toString(), "-0.22");
+ }
+}
diff --git a/gnu/testlet/java/math/BigDecimal/shortValue.java b/gnu/testlet/java/math/BigDecimal/shortValue.java
new file mode 100644
index 00000000..f19b22eb
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/shortValue.java
@@ -0,0 +1,62 @@
+// Test of the method BigDecimal.shortValue()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.shortValue()
+ */
+public class shortValue implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).shortValue());
+ harness.check((1) == (new BigDecimal("1")).shortValue());
+ harness.check((99) == (new BigDecimal("99")).shortValue());
+ harness.check((100) == (new BigDecimal("100")).shortValue());
+ harness.check((127) == (new BigDecimal("127")).shortValue());
+ harness.check((-127) == (new BigDecimal("-127")).shortValue());
+ harness.check((128) == (new BigDecimal("128")).shortValue());
+ harness.check((-128) == (new BigDecimal("-128")).shortValue());
+ harness.check((32767) == (new BigDecimal("32767")).shortValue());
+ harness.check((-32768) == (new BigDecimal("-32768")).shortValue());
+ harness.check((-32768) == (new BigDecimal("32768")).shortValue());
+
+ // overflows/underflows
+ harness.check((-1) == ((new BigDecimal("65535")).shortValue()));
+ harness.check((0) == ((new BigDecimal("65536")).shortValue()));
+ harness.check((-1) == ((new BigDecimal("131071")).shortValue()));
+ harness.check((0) == ((new BigDecimal("131072")).shortValue()));
+
+ // truncation
+ harness.check((100) == (new BigDecimal("100.0")).shortValue());
+ harness.check((100) == (new BigDecimal("100.1")).shortValue());
+ harness.check((100) == (new BigDecimal("100.9")).shortValue());
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/shortValueExact.java b/gnu/testlet/java/math/BigDecimal/shortValueExact.java
new file mode 100644
index 00000000..127d32b1
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/shortValueExact.java
@@ -0,0 +1,74 @@
+// Test of the method BigDecimal.shortValueExact()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.shortValueExact()
+ */
+public class shortValueExact implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check((0) == (new BigDecimal("0")).shortValueExact());
+ harness.check((1) == (new BigDecimal("1")).shortValueExact());
+ harness.check((99) == (new BigDecimal("99")).shortValueExact());
+ harness.check((100) == (new BigDecimal("100")).shortValueExact());
+ harness.check((127) == (new BigDecimal("127")).shortValueExact());
+ harness.check((-127) == (new BigDecimal("-127")).shortValueExact());
+ harness.check((128) == (new BigDecimal("128")).shortValueExact());
+ harness.check((-128) == (new BigDecimal("-128")).shortValueExact());
+ harness.check((32767) == (new BigDecimal("32767")).shortValueExact());
+ harness.check((-32768) == (new BigDecimal("-32768")).shortValueExact());
+
+ // overflow/underflow
+ testException(harness, "32768");
+ testException(harness, "32769");
+ testException(harness, "32770");
+ testException(harness, "65535");
+ testException(harness, "65536");
+
+ // truncation
+ testException(harness, "100.1");
+ testException(harness, "100.9");
+ }
+
+ /**
+ * Check if exception is thrown during exact conversion to a short.
+ */
+ private void testException(TestHarness harness, String numberStr)
+ {
+ try {
+ new BigDecimal(numberStr).shortValueExact();
+ harness.fail("ArithmeticException not thrown as expected for the number: " + numberStr + "!");
+ }
+ catch (ArithmeticException e) {
+ // ok
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/subtract.java b/gnu/testlet/java/math/BigDecimal/subtract.java
new file mode 100644
index 00000000..81ef7a7f
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/subtract.java
@@ -0,0 +1,111 @@
+// Test of the method BigDecimal.subtract()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.subtract()
+ */
+public class subtract implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness, new MathContext(0));
+ test3(harness, new MathContext(1));
+ test4(harness);
+ }
+
+ /**
+ * Basic tests
+ */
+ private void test1(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).subtract(secondNumber).toString()).equals("0"));
+ harness.check(((new BigDecimal("-2")).subtract(secondNumber).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).subtract(secondNumber).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("00.000")).subtract(secondNumber).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("-0.000")).subtract(secondNumber).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber).toString()).equals("1999998"));
+ harness.check(((new BigDecimal("0.2")).subtract(secondNumber).toString()).equals("-1.8"));
+ harness.check(((new BigDecimal("-0.2")).subtract(secondNumber).toString()).equals("-2.2"));
+ harness.check(((new BigDecimal("0.01")).subtract(secondNumber).toString()).equals("-1.99"));
+ harness.check(((new BigDecimal("-0.01")).subtract(secondNumber).toString()).equals("-2.01"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test2(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).subtract(secondNumber, mathContext).toString()).equals("0"));
+ harness.check(((new BigDecimal("-2")).subtract(secondNumber, mathContext).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).subtract(secondNumber, mathContext).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("00.000")).subtract(secondNumber, mathContext).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("-0.000")).subtract(secondNumber, mathContext).toString()).equals("-2.000"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, mathContext).toString()).equals("1999998"));
+ harness.check(((new BigDecimal("0.2")).subtract(secondNumber, mathContext).toString()).equals("-1.8"));
+ harness.check(((new BigDecimal("-0.2")).subtract(secondNumber, mathContext).toString()).equals("-2.2"));
+ harness.check(((new BigDecimal("0.01")).subtract(secondNumber, mathContext).toString()).equals("-1.99"));
+ harness.check(((new BigDecimal("-0.01")).subtract(secondNumber, mathContext).toString()).equals("-2.01"));
+ }
+
+ /**
+ * Tests using MathContext
+ */
+ private void test3(TestHarness harness, MathContext mathContext)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2")).subtract(secondNumber, mathContext).toString()).equals("0"));
+ harness.check(((new BigDecimal("-2")).subtract(secondNumber, mathContext).toString()).equals("-4"));
+ harness.check(((new BigDecimal("+0.000")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("00.000")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("-0.000")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, mathContext).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("0.2")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("-0.2")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("0.01")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ harness.check(((new BigDecimal("-0.01")).subtract(secondNumber, mathContext).toString()).equals("-2"));
+ }
+
+ /**
+ * Various MathContext usage
+ */
+ private void test4(TestHarness harness)
+ {
+ BigDecimal secondNumber = new BigDecimal("2");
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, new MathContext(0)).toString()).equals("1999998"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, new MathContext(1)).toString()).equals("2E+6"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, new MathContext(2)).toString()).equals("2.0E+6"));
+ harness.check(((new BigDecimal("2000000")).subtract(secondNumber, new MathContext(3)).toString()).equals("2.00E+6"));
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/toEngineeringString.java b/gnu/testlet/java/math/BigDecimal/toEngineeringString.java
new file mode 100644
index 00000000..b647fc50
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/toEngineeringString.java
@@ -0,0 +1,96 @@
+// Test of the method BigDecimal.toEngineeringString()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method BigDecimal.toEngineeringString()
+ */
+public class toEngineeringString implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger)");
+ try {
+ // constant values
+ harness.check(BigDecimal.ZERO.toEngineeringString(), "0");
+ harness.check(BigDecimal.ONE.toEngineeringString(), "1");
+ harness.check(BigDecimal.TEN.toEngineeringString(), "10");
+
+ // simple positive values
+ harness.check(new BigDecimal(1).toEngineeringString(), "1");
+ harness.check(new BigDecimal("1").toEngineeringString(), "1");
+ harness.check(new BigDecimal(10).toEngineeringString(), "10");
+ harness.check(new BigDecimal(100).toEngineeringString(), "100");
+ harness.check(new BigDecimal(1000).toEngineeringString(), "1000");
+ harness.check(new BigDecimal(10000).toEngineeringString(), "10000");
+ harness.check(new BigDecimal(100000).toEngineeringString(), "100000");
+ harness.check(new BigDecimal(1).toEngineeringString(), "1");
+
+ // negative values
+ harness.check(new BigDecimal("-1").toEngineeringString(), "-1");
+ harness.check(new BigDecimal(-10).toEngineeringString(), "-10");
+ harness.check(new BigDecimal(-100).toEngineeringString(), "-100");
+ harness.check(new BigDecimal(-1000).toEngineeringString(), "-1000");
+ harness.check(new BigDecimal(-10000).toEngineeringString(), "-10000");
+ harness.check(new BigDecimal(-100000).toEngineeringString(), "-100000");
+
+ // positive values with positive exponents
+ harness.check(new BigDecimal("1e8").toEngineeringString(), "100E+6");
+ harness.check(new BigDecimal("1e9").toEngineeringString(), "1E+9");
+ harness.check(new BigDecimal("1e10").toEngineeringString(), "10E+9");
+ harness.check(new BigDecimal("1e11").toEngineeringString(), "100E+9");
+ harness.check(new BigDecimal("1e12").toEngineeringString(), "1E+12");
+
+ // negative values with positive exponents
+ harness.check(new BigDecimal("-1e8").toEngineeringString(), "-100E+6");
+ harness.check(new BigDecimal("-1e9").toEngineeringString(), "-1E+9");
+ harness.check(new BigDecimal("-1e10").toEngineeringString(), "-10E+9");
+ harness.check(new BigDecimal("-1e11").toEngineeringString(), "-100E+9");
+ harness.check(new BigDecimal("-1e12").toEngineeringString(), "-1E+12");
+
+ // positive values with negative exponents
+ harness.check(new BigDecimal("1e-8").toEngineeringString(), "10E-9");
+ harness.check(new BigDecimal("1e-9").toEngineeringString(), "1E-9");
+ harness.check(new BigDecimal("1e-10").toEngineeringString(), "100E-12");
+ harness.check(new BigDecimal("1e-11").toEngineeringString(), "10E-12");
+ harness.check(new BigDecimal("1e-12").toEngineeringString(), "1E-12");
+
+ // negative values with negative exponents
+ harness.check(new BigDecimal("-1e-8").toEngineeringString(), "-10E-9");
+ harness.check(new BigDecimal("-1e-9").toEngineeringString(), "-1E-9");
+ harness.check(new BigDecimal("-1e-10").toEngineeringString(), "-100E-12");
+ harness.check(new BigDecimal("-1e-11").toEngineeringString(), "-10E-12");
+ harness.check(new BigDecimal("-1e-12").toEngineeringString(), "-1E-12");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/toPlainString.java b/gnu/testlet/java/math/BigDecimal/toPlainString.java
new file mode 100644
index 00000000..b4a5bd12
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/toPlainString.java
@@ -0,0 +1,96 @@
+// Test of the method BigDecimal.toPlainString()
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test the method BigDecimal.toPlainString()
+ */
+public class toPlainString implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("constructor BigDecimal(BigInteger)");
+ try {
+ // constant values
+ harness.check(BigDecimal.ZERO.toPlainString(), "0");
+ harness.check(BigDecimal.ONE.toPlainString(), "1");
+ harness.check(BigDecimal.TEN.toPlainString(), "10");
+
+ // simple positive values
+ harness.check(new BigDecimal(1).toPlainString(), "1");
+ harness.check(new BigDecimal("1").toPlainString(), "1");
+ harness.check(new BigDecimal(10).toPlainString(), "10");
+ harness.check(new BigDecimal(100).toPlainString(), "100");
+ harness.check(new BigDecimal(1000).toPlainString(), "1000");
+ harness.check(new BigDecimal(10000).toPlainString(), "10000");
+ harness.check(new BigDecimal(100000).toPlainString(), "100000");
+ harness.check(new BigDecimal(1).toPlainString(), "1");
+
+ // negative values
+ harness.check(new BigDecimal("-1").toPlainString(), "-1");
+ harness.check(new BigDecimal(-10).toPlainString(), "-10");
+ harness.check(new BigDecimal(-100).toPlainString(), "-100");
+ harness.check(new BigDecimal(-1000).toPlainString(), "-1000");
+ harness.check(new BigDecimal(-10000).toPlainString(), "-10000");
+ harness.check(new BigDecimal(-100000).toPlainString(), "-100000");
+
+ // positive values with positive exponents
+ harness.check(new BigDecimal("1e8").toPlainString(), "100000000");
+ harness.check(new BigDecimal("1e9").toPlainString(), "1000000000");
+ harness.check(new BigDecimal("1e10").toPlainString(), "10000000000");
+ harness.check(new BigDecimal("1e11").toPlainString(), "100000000000");
+ harness.check(new BigDecimal("1e12").toPlainString(), "1000000000000");
+
+ // negative values with positive exponents
+ harness.check(new BigDecimal("-1e8").toPlainString(), "-100000000");
+ harness.check(new BigDecimal("-1e9").toPlainString(), "-1000000000");
+ harness.check(new BigDecimal("-1e10").toPlainString(), "-10000000000");
+ harness.check(new BigDecimal("-1e11").toPlainString(), "-100000000000");
+ harness.check(new BigDecimal("-1e12").toPlainString(), "-1000000000000");
+
+ // positive values with negative exponents
+ harness.check(new BigDecimal("1e-8").toPlainString(), "0.00000001");
+ harness.check(new BigDecimal("1e-9").toPlainString(), "0.000000001");
+ harness.check(new BigDecimal("1e-10").toPlainString(), "0.0000000001");
+ harness.check(new BigDecimal("1e-11").toPlainString(), "0.00000000001");
+ harness.check(new BigDecimal("1e-12").toPlainString(), "0.000000000001");
+
+ // negative values with negative exponents
+ harness.check(new BigDecimal("-1e-8").toPlainString(), "-0.00000001");
+ harness.check(new BigDecimal("-1e-9").toPlainString(), "-0.000000001");
+ harness.check(new BigDecimal("-1e-10").toPlainString(), "-0.0000000001");
+ harness.check(new BigDecimal("-1e-11").toPlainString(), "-0.00000000001");
+ harness.check(new BigDecimal("-1e-12").toPlainString(), "-0.000000000001");
+ }
+ catch (Exception e) {
+ harness.fail("Exception should not be thrown here." + e);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/valueOfDouble.java b/gnu/testlet/java/math/BigDecimal/valueOfDouble.java
new file mode 100644
index 00000000..60dd4bff
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/valueOfDouble.java
@@ -0,0 +1,57 @@
+// Test of the method BigDecimal.valueOf(double)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+//
+// Tags: JDK1.5
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.valueOf(double)
+ */
+public class valueOfDouble implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check(new BigDecimal("0.0"), BigDecimal.valueOf(0.0));
+ harness.check(new BigDecimal("1.0"), BigDecimal.valueOf(1.0));
+ harness.check(new BigDecimal("0.0"), BigDecimal.valueOf(0.));
+ harness.check(new BigDecimal("0.0"), BigDecimal.valueOf(.0));
+ harness.check(new BigDecimal("1.0"), BigDecimal.valueOf(1.));
+ harness.check(new BigDecimal("1.7976931348623157E+308"), BigDecimal.valueOf(Double.MAX_VALUE));
+ harness.check(new BigDecimal("4.9E-324"), BigDecimal.valueOf(Double.MIN_VALUE));
+
+ try {
+ BigDecimal.valueOf(Double.NaN);
+ harness.fail("Exception don't thrown as expected");
+ }
+ catch (NumberFormatException e) {
+ // ok, we expected this exception
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/valueOfLong.java b/gnu/testlet/java/math/BigDecimal/valueOfLong.java
new file mode 100644
index 00000000..db944ea4
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/valueOfLong.java
@@ -0,0 +1,44 @@
+// Test of the method BigDecimal.valueOf(long)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.valueOf(long)
+ */
+public class valueOfLong implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check(new BigDecimal("0"), BigDecimal.valueOf(0L));
+ harness.check(new BigDecimal("1"), BigDecimal.valueOf(1L));
+ harness.check(new BigDecimal("9223372036854775807"), BigDecimal.valueOf(Long.MAX_VALUE));
+ harness.check(new BigDecimal("-9223372036854775808"), BigDecimal.valueOf(Long.MIN_VALUE));
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigDecimal/valueOfLongInt.java b/gnu/testlet/java/math/BigDecimal/valueOfLongInt.java
new file mode 100644
index 00000000..5e33f9cc
--- /dev/null
+++ b/gnu/testlet/java/math/BigDecimal/valueOfLongInt.java
@@ -0,0 +1,56 @@
+// Test of the method BigDecimal.valueOf(long, int)
+
+// Copyright 2012 Red Hat, Inc.
+// Written by Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+package gnu.testlet.java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Check for method BigDecimal.valueOf(long, int)
+ */
+public class valueOfLongInt implements Testlet
+{
+ /**
+ * Entry point to this test.
+ */
+ public void test(TestHarness harness)
+ {
+ // simple conversions
+ harness.check(new BigDecimal("0"), BigDecimal.valueOf(0L, 0));
+ harness.check(new BigDecimal("1"), BigDecimal.valueOf(1L, 0));
+ harness.check(new BigDecimal("9223372036854775807"), BigDecimal.valueOf(Long.MAX_VALUE, 0));
+ harness.check(new BigDecimal("-9223372036854775808"), BigDecimal.valueOf(Long.MIN_VALUE, 0));
+
+ // scale = 1
+ harness.check(new BigDecimal("0.0"), BigDecimal.valueOf(0L, 1));
+ harness.check(new BigDecimal("0.1"), BigDecimal.valueOf(1L, 1));
+ harness.check(new BigDecimal("922337203685477580.7"), BigDecimal.valueOf(Long.MAX_VALUE, 1));
+ harness.check(new BigDecimal("-922337203685477580.8"), BigDecimal.valueOf(Long.MIN_VALUE, 1));
+
+ // scale = 2
+ harness.check(new BigDecimal("0.00"), BigDecimal.valueOf(0L, 2));
+ harness.check(new BigDecimal("0.01"), BigDecimal.valueOf(1L, 2));
+ harness.check(new BigDecimal("92233720368547758.07"), BigDecimal.valueOf(Long.MAX_VALUE, 2));
+ harness.check(new BigDecimal("-92233720368547758.08"), BigDecimal.valueOf(Long.MIN_VALUE, 2));
+ }
+
+}
+
diff --git a/gnu/testlet/java/math/BigInteger/CVS/Entries b/gnu/testlet/java/math/BigInteger/CVS/Entries
new file mode 100644
index 00000000..126a90c1
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/CVS/Entries
@@ -0,0 +1,18 @@
+/TestOfPR27372.java/1.2/Sun Sep 3 03:25:42 2006//
+/TestOfToByteArray.java/1.2/Mon Jun 18 20:51:54 2007//
+/abs.java/1.1/Sun Sep 19 20:35:04 2004//
+/add.java/1.1/Sun Sep 19 20:35:04 2004//
+/compareTo.java/1.2/Wed Dec 27 15:48:18 2006//
+/ctor.java/1.3/Sun Sep 3 03:25:42 2006//
+/divide.java/1.1/Sun Sep 19 20:35:04 2004//
+/equals.java/1.1/Sun Sep 19 20:35:04 2004//
+/modInverse.java/1.2/Mon Feb 17 19:48:54 2003//
+/modPow.java/1.1/Sat May 27 01:08:50 2006/-kk/
+/multiply.java/1.1/Sun Sep 19 20:35:04 2004//
+/serialization.java/1.1/Sun Sep 19 20:35:04 2004//
+/setBit.java/1.1/Sun Apr 24 20:49:17 2005//
+/shift.java/1.2/Wed Jan 17 03:58:16 2001//
+/signum.java/1.1/Sun Sep 19 20:35:04 2004//
+/toString.java/1.1/Sun Sep 19 20:35:04 2004//
+/valueOf.java/1.1/Sun Sep 19 20:35:04 2004//
+D
diff --git a/gnu/testlet/java/math/BigInteger/CVS/Repository b/gnu/testlet/java/math/BigInteger/CVS/Repository
new file mode 100644
index 00000000..78649aa1
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/math/BigInteger
diff --git a/gnu/testlet/java/math/BigInteger/CVS/Root b/gnu/testlet/java/math/BigInteger/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/math/BigInteger/TestOfPR27372.java b/gnu/testlet/java/math/BigInteger/TestOfPR27372.java
new file mode 100644
index 00000000..fe4f7068
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/TestOfPR27372.java
@@ -0,0 +1,176 @@
+/* TestOfPR27372.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.security.SecureRandom;
+import java.util.Arrays;
+
+/**
+ * Regression test for PR Classpath/27372
+ */
+public class TestOfPR27372
+ implements Testlet
+{
+ /** A control value. */
+ private static final byte[] BYTES = { 0x12, 0x34, 0x56, 0x78 };
+ /** Set to <code>true</code> if BigInteger is using the GNU MP native code. */
+ private boolean usingNativeImpl = Arrays.equals(BYTES,
+ new BigInteger(BYTES).toByteArray());
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR27372");
+ SecureRandom prng1, prng2;
+ byte[] ba, bb;
+ try
+ {
+ prng1 = SecureRandom.getInstance("SHA1PRNG");
+ prng1.setSeed(98243647L);
+ prng2 = SecureRandom.getInstance("SHA1PRNG");
+ prng2.setSeed(98243647L);
+ // from here on the two PRNGs are in sync. they should consume as
+ // little bytes as possible, and continue to be in sync
+ for (int numBytes = 1; numBytes < 10; numBytes++)
+ {
+ ba = new BigInteger(8 * numBytes, prng1).toByteArray();
+ bb = new byte[numBytes];
+ prng2.nextBytes(bb);
+ harness.check(areEqual(ba, bb),
+ "BigInteger(int, Random) SHOULD consume as little "
+ + "bytes as possible from Random (and SecureRandom): "
+ + numBytes);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPR27372: " + x);
+ }
+ }
+
+ /**
+ * In both cases --the pure Java implementation, and the native one based on
+ * the GNU MP library-- a BigInteger's toByteArray(), can produce an extra
+ * 0x00 byte as the most significant byte. This method ensures that there
+ * is no more than just one zero-byte at the high end, and then channels the
+ * call to the appropriate are-equal method depending on the type of the
+ * underlying implementation of the MPI.
+ *
+ * @param a the result of a {@link BigInteger#toByteArray()} of an instance
+ * constructed with {@link BigInteger#BigInteger(int, Random)}.
+ * @param b a non-null byte array filled with randomly generated values.
+ * @return <code>true</code> if the two byte arrays contain the same values
+ * taking into consideration how our BigInteger constructs its
+ * internal data structures.
+ */
+ private boolean areEqual(byte[] a, byte[] b)
+ {
+ int offset = 0;
+ switch (a.length - b.length)
+ {
+ case 0:
+ break;
+ case 1:
+ if (a[0] != 0)
+ return false;
+ offset = 1;
+ break;
+ default:
+ return false;
+ }
+ if (usingNativeImpl)
+ return areEqualNativeBI(a, offset, b);
+ return areEqualJavaBI(a, offset, b);
+ }
+
+ /**
+ * Special byte array comparison method used to compare the result of
+ * <code>byte[] a = new BigInteger(numBits, random).toByteArray()</code> with
+ * a byte array filled with randomly generated values.
+ * <p>
+ * This method takes into consideration how an array of bytes is used to
+ * fill the (pure java) <code>BigInteger</code>'s internal data structure. As
+ * an example, here is what the two byte arrays may look like from the
+ * outside:
+ *
+ * <pre>
+ * a = 009ECB38BFD4C6
+ * b = CB9EC6D4BF38
+ * </pre>
+ *
+ * @param a the result of a {@link BigInteger#toByteArray()} of an instance
+ * constructed with {@link BigInteger#BigInteger(int, Random)}.
+ * @param <code>0</code> or <code>1</code> depending on the value of the
+ * leftmost byte (at index #0) of <code>a</code>.
+ * @param b a non-null byte array filled with randomly generated values.
+ * @return <code>true</code> if the two byte arrays contain the same values
+ * taking into consideration how our BigInteger constructs its
+ * internal data structures.
+ */
+ private boolean areEqualJavaBI(byte[] a, int offset, byte[] b)
+ {
+ for (int i = b.length - 1, j, k; i >= 0; )
+ {
+ j = i - 3;
+ if (j < 0)
+ j = 0;
+ for (k = 0; k < 4; k++)
+ {
+ if (a[offset + j++] != b[i--])
+ return false;
+ if (i < 0)
+ break;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Straight equality check, byte-for-byte, of the two designated arrays. The
+ * first starting from either <code>0</code> or <code>1</code>, while the
+ * second always starting from <code>0</code>. This is used with GMP-based
+ * MPIs.
+ *
+ * @param a the result of a {@link BigInteger#toByteArray()} of an instance
+ * constructed with {@link BigInteger#BigInteger(int, Random)}.
+ * @param <code>0</code> or <code>1</code> depending on the value of the
+ * leftmost byte (at index #0) of <code>a</code>.
+ * @param b a non-null byte array filled with randomly generated values.
+ * @return <code>true</code> if the two byte arrays contain the same values
+ * taking into consideration how our BigInteger constructs its
+ * internal data structures.
+ */
+ private boolean areEqualNativeBI(byte[] a, int offset, byte[] b)
+ {
+ for (int i = 0; i < b.length; i++)
+ if (a[offset + i] != b[i])
+ return false;
+ return true;
+
+ }
+}
diff --git a/gnu/testlet/java/math/BigInteger/TestOfToByteArray.java b/gnu/testlet/java/math/BigInteger/TestOfToByteArray.java
new file mode 100644
index 00000000..c524ebd7
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/TestOfToByteArray.java
@@ -0,0 +1,56 @@
+/* TestOfToByteArray.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.util.Arrays;
+
+/**
+ * Test case for report in http://gcc.gnu.org/ml/java/2006-08/msg00090.html.
+ */
+public class TestOfToByteArray
+ implements Testlet
+{
+ private static final byte[] BYTES = { 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0 };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfToByteArray");
+ try
+ {
+ BigInteger x = new BigInteger(BYTES);
+ harness.verbose("*** x = 0x" + x.toString(16));
+ byte[] ba = x.toByteArray();
+ harness.check(Arrays.equals(ba, BYTES), true, "Byte arrays MUST be equal");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfToByteArray: " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/math/BigInteger/abs.java b/gnu/testlet/java/math/BigInteger/abs.java
new file mode 100644
index 00000000..3e24f9bc
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/abs.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the abs() method in the {@link BigInteger} class.
+ */
+public class abs implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger a = new BigInteger("-123456789012345678901234567890");
+ BigInteger b = new BigInteger("-1");
+ BigInteger c = new BigInteger("0");
+ BigInteger d = new BigInteger("1");
+ BigInteger e = new BigInteger("123456789012345678901234567890");
+
+ harness.check(a.abs().equals(e));
+ harness.check(b.abs().equals(d));
+ harness.check(c.abs().equals(c));
+ harness.check(d.abs().equals(d));
+ harness.check(e.abs().equals(e));
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/add.java b/gnu/testlet/java/math/BigInteger/add.java
new file mode 100644
index 00000000..d9e87039
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/add.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the add() method in the {@link BigInteger} class.
+ */
+public class add implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // a few simple cases
+ BigInteger i1 = new BigInteger("-1");
+ BigInteger i2 = new BigInteger("0");
+ BigInteger i3 = new BigInteger("1");
+ BigInteger i4 = new BigInteger("2");
+
+ harness.check(i1.add(i2).equals(i1));
+ harness.check(i1.add(i3).equals(i2));
+ harness.check(i1.add(i4).equals(i3));
+ harness.check(i3.add(i3).equals(i4));
+
+ // some larger numbers
+ BigInteger x = new BigInteger("123456789012345678901234567890");
+ BigInteger y = new BigInteger("987654321098765432109876543210");
+ harness.check(x.add(y).equals(new BigInteger("1111111110111111111011111111100")));
+
+ // check a null argument
+ boolean pass = false;
+ try
+ {
+ i1.add(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/compareTo.java b/gnu/testlet/java/math/BigInteger/compareTo.java
new file mode 100644
index 00000000..52928630
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/compareTo.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the compareTo() method in the {@link BigInteger} class.
+ */
+public class compareTo implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger a = new BigInteger("-987654321098765432109876543210");
+ BigInteger b = new BigInteger("-1");
+ BigInteger c = new BigInteger("0");
+ BigInteger d = new BigInteger("1");
+ BigInteger e = new BigInteger("987654321098765432109876543210");
+
+ harness.check(a.compareTo(a) == 0);
+ harness.check(a.compareTo(b) < 0);
+ harness.check(a.compareTo(c) < 0);
+ harness.check(a.compareTo(d) < 0);
+ harness.check(a.compareTo(e) < 0);
+
+ harness.check(b.compareTo(a) > 0);
+ harness.check(b.compareTo(b) == 0);
+ harness.check(b.compareTo(c) < 0);
+ harness.check(b.compareTo(d) < 0);
+ harness.check(b.compareTo(e) < 0);
+
+ harness.check(c.compareTo(a) > 0);
+ harness.check(c.compareTo(b) > 0);
+ harness.check(c.compareTo(c) == 0);
+ harness.check(c.compareTo(d) < 0);
+ harness.check(c.compareTo(e) < 0);
+
+ harness.check(d.compareTo(a) > 0);
+ harness.check(d.compareTo(b) > 0);
+ harness.check(d.compareTo(c) > 0);
+ harness.check(d.compareTo(d) == 0);
+ harness.check(d.compareTo(e) < 0);
+
+ harness.check(e.compareTo(a) > 0);
+ harness.check(e.compareTo(b) > 0);
+ harness.check(e.compareTo(c) > 0);
+ harness.check(e.compareTo(d) > 0);
+ harness.check(e.compareTo(e) == 0);
+
+ // try the compareTo(Object) method
+ boolean pass = false;
+ try
+ {
+ ((Comparable)a).compareTo(new Integer(1));
+ }
+ catch (ClassCastException ee)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a null argument
+ pass = false;
+ try
+ {
+ a.compareTo(null);
+ }
+ catch (NullPointerException ee)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/ctor.java b/gnu/testlet/java/math/BigInteger/ctor.java
new file mode 100644
index 00000000..c1fc5a60
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/ctor.java
@@ -0,0 +1,192 @@
+/* ctor.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.util.Random;
+
+/**
+ * Conformance tests for some of BigInteger constructors.
+ */
+public class ctor
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testCtorStringInt(harness);
+ testCtorIntIntRandom(harness);
+ testCtorIntRandom(harness);
+ testCtorByteArray(harness);
+ }
+
+ private void testCtorStringInt(TestHarness harness)
+ {
+ harness.checkPoint("testCtorStringInt");
+ String msg;
+ try
+ {
+ msg = "MUST throw NumberFormatException for out-of-range radix";
+ try
+ {
+ new BigInteger("1234567890123", Character.MIN_RADIX - 1);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+ try
+ {
+ new BigInteger("1234567890123", Character.MAX_RADIX + 1);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+
+ msg = "MUST throw NumberFormatException for malformed string values";
+ try
+ {
+ new BigInteger(" 1234567890123", 32);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+ try
+ {
+ new BigInteger("1234567890123 ", 32);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+ try
+ {
+ new BigInteger("123456789-0123 ", 10);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+
+ msg = "MUST throw NumberFormatException for invalid string values";
+ try
+ {
+ new BigInteger("1ifbyland2ifbysea", 24);
+ harness.fail(msg);
+ }
+ catch (NumberFormatException x)
+ {
+ harness.check(true, msg);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.verbose(x.getMessage());
+ harness.fail("testCtorStringInt: " + x);
+ }
+ }
+
+ private void testCtorIntIntRandom(TestHarness harness)
+ {
+ harness.checkPoint("testCtorIntIntRandom");
+ Random prng = new Random();
+ BigInteger bi;
+ try
+ {
+ bi = new BigInteger(25, 80, prng);
+ harness.check(bi.bitLength(), 25, "Constructed BigInteger MUST be 25-bit long");
+
+ bi = new BigInteger(2, 80, prng);
+ harness.check(bi.bitLength(), 2, "Constructed BigInteger MUST be 2-bit long");
+ int val = bi.intValue();
+ harness.check(val == 2 || val == 3, "Constructed BigInteger MUST be 2 or 3");
+ }
+ catch (Exception x)
+ {
+ harness.verbose(x.getMessage());
+ harness.fail("testCtorIntIntRandom: " + x);
+ }
+ }
+
+ private void testCtorIntRandom(TestHarness harness)
+ {
+ harness.checkPoint("testCtorIntRandom");
+ Random prng = new Random();
+ BigInteger bi;
+ try
+ {
+ for (int realNumBits, numBits = 8; numBits < 2048; numBits++)
+ {
+ bi = new BigInteger(numBits, prng);
+ realNumBits = bi.bitLength();
+ if (realNumBits > numBits)
+ harness.fail("Constructed BigInteger has " + realNumBits
+ + " bits when it SHOULD be <= " + numBits);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.verbose(x.getMessage());
+ harness.fail("testCtorIntRandom: " + x);
+ }
+ harness.check(true, "BigInteger(numBits, prng) MUST generate MPIs shorter "
+ + "than numBits bits");
+ }
+
+ private void testCtorByteArray(TestHarness harness)
+ {
+ harness.checkPoint("testCtorByteArray");
+ BigInteger b1, b2;
+ byte[] ba;
+ long val;
+ try
+ {
+ for (int nValue = -0x8000; nValue < 0x8000; nValue += 8)
+ {
+ b1 = BigInteger.valueOf(nValue);
+ ba = b1.toByteArray();
+ b2 = new BigInteger(ba);
+ val = b2.longValue();
+ if (val != nValue)
+ harness.fail("Re-constructed BigInteger long value was expected to be "
+ + nValue + " but was found to be " + val);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.verbose(x.getMessage());
+ harness.fail("testCtorByteArray: " + x);
+ }
+ harness.check(true, "Re-constructed BigIntegers have expected long values");
+ }
+}
diff --git a/gnu/testlet/java/math/BigInteger/divide.java b/gnu/testlet/java/math/BigInteger/divide.java
new file mode 100644
index 00000000..1e574ff6
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/divide.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the divide() method in the {@link BigInteger} class.
+ */
+public class divide implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // some really simple cases
+ BigInteger p1 = new BigInteger("1");
+ BigInteger p2 = new BigInteger("2");
+ BigInteger p3 = new BigInteger("3");
+ BigInteger p4 = new BigInteger("4");
+ BigInteger m1 = new BigInteger("-1");
+ BigInteger m2 = new BigInteger("-2");
+ BigInteger m3 = new BigInteger("-3");
+ BigInteger m4 = new BigInteger("-4");
+
+ harness.check(p4.divide(p2).equals(p2));
+ harness.check(m4.divide(p2).equals(m2));
+ harness.check(p4.divide(m2).equals(m2));
+ harness.check(m4.divide(m2).equals(p2));
+
+ harness.check(p1.divide(p2).equals(BigInteger.ZERO));
+ harness.check(m1.divide(p2).equals(BigInteger.ZERO));
+ harness.check(p1.divide(m2).equals(BigInteger.ZERO));
+ harness.check(m1.divide(m2).equals(BigInteger.ZERO));
+
+ harness.check(p3.divide(p2).equals(BigInteger.ONE));
+ harness.check(m3.divide(p2).equals(BigInteger.ONE.negate()));
+ harness.check(p3.divide(m2).equals(BigInteger.ONE.negate()));
+ harness.check(m3.divide(m2).equals(BigInteger.ONE));
+
+ // some bigger numbers
+ BigInteger bp1 = new BigInteger("12345678901234567890123456789012345678901234567890");
+ BigInteger bp2 = new BigInteger("987654321098765432198765");
+ BigInteger bm1 = new BigInteger("-12345678901234567890123456789012345678901234567890");
+ BigInteger bm2 = new BigInteger("-987654321098765432198765");
+ BigInteger resultp = new BigInteger("12499999886093750000298833");
+ BigInteger resultm = new BigInteger("-12499999886093750000298833");
+
+ harness.check(bp1.divide(bp2).equals(resultp));
+ harness.check(bm1.divide(bp2).equals(resultm));
+ harness.check(bp1.divide(bm2).equals(resultm));
+ harness.check(bm1.divide(bm2).equals(resultp));
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ p1.divide(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check zero argument
+ pass = false;
+ try
+ {
+ p1.divide(BigInteger.ZERO);
+ }
+ catch (ArithmeticException e)
+ {
+ pass = true;
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/equals.java b/gnu/testlet/java/math/BigInteger/equals.java
new file mode 100644
index 00000000..d0386817
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/equals.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the equals() method in the {@link BigInteger} class.
+ */
+public class equals implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger a = new BigInteger("-987654321098765432109876543210");
+ BigInteger b = new BigInteger("-1");
+ BigInteger c = new BigInteger("0");
+ BigInteger d = new BigInteger("1");
+ BigInteger e = new BigInteger("987654321098765432109876543210");
+
+ BigInteger aa = new BigInteger("-987654321098765432109876543210");
+ BigInteger bb = new BigInteger("-1");
+ BigInteger cc = new BigInteger("0");
+ BigInteger dd = new BigInteger("1");
+ BigInteger ee = new BigInteger("987654321098765432109876543210");
+
+ harness.check(a.equals(aa));
+ harness.check(!a.equals(bb));
+ harness.check(!a.equals(cc));
+ harness.check(!a.equals(dd));
+ harness.check(!a.equals(ee));
+ harness.check(!a.equals(null));
+
+ harness.check(!b.equals(aa));
+ harness.check(b.equals(bb));
+ harness.check(!b.equals(cc));
+ harness.check(!b.equals(dd));
+ harness.check(!b.equals(ee));
+ harness.check(!b.equals(null));
+ harness.check(!b.equals(new Integer(-1)));
+
+ harness.check(!c.equals(aa));
+ harness.check(!c.equals(bb));
+ harness.check(c.equals(cc));
+ harness.check(!c.equals(dd));
+ harness.check(!c.equals(ee));
+ harness.check(!c.equals(null));
+ harness.check(!c.equals(new Integer(0)));
+
+ harness.check(!d.equals(aa));
+ harness.check(!d.equals(bb));
+ harness.check(!d.equals(cc));
+ harness.check(d.equals(dd));
+ harness.check(!d.equals(ee));
+ harness.check(!d.equals(null));
+ harness.check(!d.equals(new Integer(1)));
+
+ harness.check(!e.equals(aa));
+ harness.check(!e.equals(bb));
+ harness.check(!e.equals(cc));
+ harness.check(!e.equals(dd));
+ harness.check(e.equals(ee));
+ harness.check(!e.equals(null));
+
+
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/modInverse.java b/gnu/testlet/java/math/BigInteger/modInverse.java
new file mode 100644
index 00000000..194e317b
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/modInverse.java
@@ -0,0 +1,106 @@
+// $Id: modInverse.java,v 1.2 2003/02/17 19:48:54 raif Exp $
+//
+// Copyright (C) 2002 Free Software Foundation, Inc.
+//
+// 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: JDK1.1
+
+package gnu.testlet.java.math.BigInteger;
+
+import java.math.BigInteger;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Test of <code>modeInv()</code> and subordinate methods.
+ *
+ * @version $Revision: 1.2 $
+ */
+public class modInverse implements Testlet
+{
+ private static final BigInteger e = BigInteger.valueOf(65537L); // 0x10001
+ private BigInteger p, q, phi;
+ private String[] ps = {
+ "c6c93915786185fa7ee88f1983cc8d238cd6c5f7a36416c8be317c3df475277784ae1b87b263b88a84d5bacaf63798474ffe490fa412cb437abe5908efbe41b1",
+ "f2d6323e96c9ad655ab520dccbc5bdf3312dcf4e32858650caa21d7e8c7ed6d13d8bbe166e0ac7cb787ef38bec6c55529f3f93b0d7c9e5ceb5188571699619bf",
+ "e50fce1d57633704798f7b2465ddccebf6e5c9f22a8e3017a39f8de7cb3b78285003dca54bf9c7a2c478add7cfd7cf678b831be1db331f2f3961435c6937a545",
+ "a9782bf45cdb460875a56c89b580df3f959f33e07ea43ec166241c5add827303815ab0131b7e98430038aed9e136b83e1a82d099bb40a26ac9497ef3abb58dfd",
+// "b668a33af6c9b7b39b0116c4f10c023a1dd26e320da8a4fd5ed16ad3c078353fb3effd729911bc4616e6936b8f431a64e955e994b568f3ce260d00ab78a099f7",
+ "d265038c4fee2f3f87c8a2e15c1fa67dfac4ad5eb78bec468d9df27ffe3224581a2a189f87946a012a228f579abfb0d183e99cd831341af9b750b4582236e15d",
+ "ca911176fce31e4332ec9ada6fa268f6ea1a9a71c81599a77797d74d5c7c48491fafce22428c516d7318c36907aa76df89e92be5ab66b42b25be777640ecc76d",
+ "eb97f1e80a81d9b725dd5708fe7d65ab5339d7a339c703ee73de339fb0f10a4d76bd827536b9f6da49507ee12ca37b8157f8103f3d12a9eb9468576d9b2ef59f"
+ };
+ private String[] qs = {
+ "bc5e04097e88241c2e9f145a829c158bacb17756b0c6aba175318c4b0b799067a83509dc45fb34c82aa7d3caacc80f1d0013c9bdd24bd52f31f04edfa169ef75",
+ "da554d942ebe105e7a60070bfcaf3953f29ecfd6493aac69c6427a00be66c978515e7222180cc84606bcf7348c8aba0f9b05870cf2ab1c3669199c4316d40669",
+ "ceb5591d98f1e1bfe3095f21a7e7c47d18bfcfbb8e0a1971a13941bd4cc2c861c2ef4b85cdf52b6aaeeb20264456b3c3c2a7f6a52b21eb91276acb3caa3603d1",
+ "d47c206d19142ad870648eb09ca183cf4875f8009d91fcc0e085ac65455caf17ee5e91f2ccb564a88a8d13100faf1c95c6481c1b2e3fb6483f1bcdb2894356ad",
+// "e5479f61bb2745bef20003071d5355d3f3c67832c4e1db7ffe976c0c02fb28cd126f5cad75b624015ae181e48eed42ec1905509667588371e8e003b8b718984f",
+ "cc36f153789677c45232afdaed78f2a20658f53fcbaa0626f64d0fa29a6f70516420999fee96dca6d232c644b09d1e27cdc0215fcbc4c36a5c493f2e1fed7bb1",
+ "e63821b08b4bcc12e80a3e019f4f424c20aa72b426fc912bb2157569f9ee4422f970bbc4bf75ac05e77e48d436ce980e0646c2ba3eafb9e98aff77e19b59257f",
+ "d8e26d53f31a647889ce845e892b076e578f0a68565005d5d23ed8a4ff8370cbb12cb41854badfe17053db1a94e754ea241ede1d879bff36b75f5fa96eb64927"
+ };
+
+ public void test(TestHarness harness)
+ {
+ testRecursion(harness);
+ for (int i = 0; i < ps.length; i++)
+ testCase(harness, i, ps[i], qs[i]);
+ }
+
+ private void testRecursion(TestHarness harness)
+ {
+ harness.checkPoint("testRecursion");
+ try
+ {
+ BigInteger k = new BigInteger("1a1eb1e6b8f115eee3dc1334afc7de2f7efbd568", 16);
+ BigInteger q = new BigInteger("de09f1902cf484f232fee5d27262372d1c6072d7", 16);
+ BigInteger t = new BigInteger("a3a790f0b7d2bea3a81dc676032cf99c23c28bee", 16);
+ BigInteger tt = k.modInverse(q);
+// harness.check(true, "k.modInverse(q)="+tt.toString(16));
+ harness.check(t.equals(k.modInverse(q)), "recursion ok");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ private void testCase(TestHarness harness, int i, String ps, String qs)
+ {
+ harness.checkPoint("modInverse test #"+(i+1));
+ try
+ {
+ p = new BigInteger(ps, 16);
+ q = new BigInteger(qs, 16);
+ harness.check(p.isProbablePrime(50), "p["+i+"] is probable prime");
+ harness.check(p.gcd(e).equals(BigInteger.ONE), "gcd(p["+i+"], e) == 1");
+ harness.check(q.isProbablePrime(50), "q["+i+"] is probable prime");
+ harness.check(q.gcd(e).equals(BigInteger.ONE), "gcd(q["+i+"], e) == 1");
+ phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
+ e.modInverse(phi);
+ }
+ catch (ArithmeticException x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+}
diff --git a/gnu/testlet/java/math/BigInteger/modPow.java b/gnu/testlet/java/math/BigInteger/modPow.java
new file mode 100644
index 00000000..7435f943
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/modPow.java
@@ -0,0 +1,45 @@
+/* modPow.java -- tests for modPow
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.math.BigInteger;
+
+import java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class modPow implements Testlet {
+
+ public void test(TestHarness harness) {
+ BigInteger ten = BigInteger.valueOf(10);
+ BigInteger three = BigInteger.valueOf(3);
+ BigInteger five = BigInteger.valueOf(5);
+ BigInteger minusFive = five.negate();
+ BigInteger seven = BigInteger.valueOf(7);
+
+ harness.check(three.modPow(five, ten), three);
+ harness.check(three.modPow(minusFive, ten), seven);
+ harness.check(three.modPow(three.negate(), ten), three);
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/multiply.java b/gnu/testlet/java/math/BigInteger/multiply.java
new file mode 100644
index 00000000..f7682a6e
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/multiply.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the multiply() method in the {@link BigInteger} class.
+ */
+public class multiply implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // some really simple cases
+ BigInteger p1 = new BigInteger("1");
+ BigInteger p2 = new BigInteger("2");
+ BigInteger m1 = new BigInteger("-1");
+ BigInteger m2 = new BigInteger("-2");
+
+ harness.check(p1.multiply(p2).equals(p2));
+ harness.check(p1.multiply(m2).equals(m2));
+ harness.check(m1.multiply(p2).equals(m2));
+ harness.check(m1.multiply(m2).equals(p2));
+
+ // some bigger numbers
+ BigInteger bp1 = new BigInteger("12345678901234567890123456789012345678901234567890");
+ BigInteger bp2 = new BigInteger("987654321098765432198765");
+ BigInteger bm1 = new BigInteger("-12345678901234567890123456789012345678901234567890");
+ BigInteger bm2 = new BigInteger("-987654321098765432198765");
+ BigInteger resultp = new BigInteger("12193263113702179523715891618930089161893008916189178958987793067366655850");
+ BigInteger resultm = new BigInteger("-12193263113702179523715891618930089161893008916189178958987793067366655850");
+
+ harness.check(bp1.multiply(bp2).equals(resultp));
+ harness.check(bp1.multiply(bm2).equals(resultm));
+ harness.check(bm1.multiply(bp2).equals(resultm));
+ harness.check(bm1.multiply(bm2).equals(resultp));
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ p1.multiply(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/serialization.java b/gnu/testlet/java/math/BigInteger/serialization.java
new file mode 100644
index 00000000..9b82f037
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/serialization.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.math.BigInteger;
+
+/**
+ * Some checks for serialization of the {@link BigInteger} class.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger b1 = new BigInteger("-4294967296");
+ BigInteger b2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(b1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ b2 = (BigInteger) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(b1.equals(b2));
+ harness.check(b1.byteValue() == b2.byteValue());
+ harness.check(b1.shortValue() == b2.shortValue());
+ harness.check(b1.intValue() == b2.intValue());
+ harness.check(b1.longValue() == b2.longValue()); // see bug parade 4823171
+ harness.check(b1.floatValue() == b2.floatValue());
+ harness.check(b1.doubleValue() == b2.doubleValue());
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/setBit.java b/gnu/testlet/java/math/BigInteger/setBit.java
new file mode 100644
index 00000000..5eb2a26b
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/setBit.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the setBit() method in the {@link BigInteger} class.
+ */
+public class setBit implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger i1 = new BigInteger("0");
+ BigInteger i2 = i1.setBit(7);
+ harness.check(i2.equals(new BigInteger("128")));
+
+ // check a negative argument
+ boolean pass = false;
+ try
+ {
+ /* BigInteger i = */ i1.setBit(-1);
+ }
+ catch (ArithmeticException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/shift.java b/gnu/testlet/java/math/BigInteger/shift.java
new file mode 100644
index 00000000..1ac0c9dd
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/shift.java
@@ -0,0 +1,52 @@
+// Test of shiftRight and shiftLeft methods of BigInteger.
+
+/*************************************************************************
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.math.BigInteger;
+
+import java.math.BigInteger;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class shift implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("shift");
+ BigInteger x =
+ new BigInteger ("-50123044517898350982301255831878893568", 10);
+ harness.check (x.shiftRight(64).toString(), "-2717175687894652269");
+ harness.check (x.shiftLeft(-64).toString(), "-2717175687894652269");
+ harness.check (x.shiftRight(1).toString(),
+ "-25061522258949175491150627915939446784");
+ harness.check (x.shiftLeft(1).toString(),
+ "-100246089035796701964602511663757787136");
+
+ harness.check (x.shiftRight(0).toString(), x.toString());
+ harness.check (x.shiftLeft(0).toString(), x.toString());
+
+ x = new BigInteger ("50123044517898350982301255831878893568", 10);
+ harness.check (x.shiftRight(64).toString(), "2717175687894652268");
+ harness.check (x.shiftLeft(-64).toString(), "2717175687894652268");
+ harness.check (x.shiftRight(1).toString(),
+ "25061522258949175491150627915939446784");
+ harness.check (x.shiftLeft(1).toString(),
+ "100246089035796701964602511663757787136");
+ }
+}
diff --git a/gnu/testlet/java/math/BigInteger/signum.java b/gnu/testlet/java/math/BigInteger/signum.java
new file mode 100644
index 00000000..1258889d
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/signum.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the signum() method in the {@link BigInteger} class.
+*/
+public class signum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BigInteger a = new BigInteger("-123456789012345678901234567890");
+ BigInteger b = new BigInteger("-1");
+ BigInteger c = new BigInteger("0");
+ BigInteger d = new BigInteger("1");
+ BigInteger e = new BigInteger("123456789012345678901234567890");
+
+ harness.check(a.signum() == -1);
+ harness.check(b.signum() == -1);
+ harness.check(c.signum() == 0);
+ harness.check(d.signum() == 1);
+ harness.check(e.signum() == 1);
+
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/toString.java b/gnu/testlet/java/math/BigInteger/toString.java
new file mode 100644
index 00000000..5fee9328
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/toString.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the toString() method in the {@link BigInteger} class.
+ */
+public class toString implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(new BigInteger("12345678901234567890").toString().equals("12345678901234567890"));
+ harness.check(new BigInteger("-12345678901234567890").toString().equals("-12345678901234567890"));
+ harness.check(new BigInteger("0").toString().equals("0"));
+ }
+
+}
diff --git a/gnu/testlet/java/math/BigInteger/valueOf.java b/gnu/testlet/java/math/BigInteger/valueOf.java
new file mode 100644
index 00000000..f6a54aee
--- /dev/null
+++ b/gnu/testlet/java/math/BigInteger/valueOf.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.math.BigInteger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+
+/**
+ * Some checks for the valueOf() method in the {@link BigInteger} class.
+ */
+public class valueOf implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // can't think of any obvious candidates to test, but...
+ harness.check(BigInteger.valueOf(0).equals(new BigInteger("0")));
+ harness.check(BigInteger.valueOf(1).equals(new BigInteger("1")));
+ harness.check(BigInteger.valueOf(-1).equals(new BigInteger("-1")));
+ harness.check(BigInteger.valueOf(Long.MAX_VALUE).equals(new BigInteger("9223372036854775807")));
+ harness.check(BigInteger.valueOf(Long.MIN_VALUE).equals(new BigInteger("-9223372036854775808")));
+ }
+
+}
diff --git a/gnu/testlet/java/math/CVS/Entries b/gnu/testlet/java/math/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/math/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/math/CVS/Entries.Log b/gnu/testlet/java/math/CVS/Entries.Log
new file mode 100644
index 00000000..8dbaebd8
--- /dev/null
+++ b/gnu/testlet/java/math/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/BigDecimal////
+A D/BigInteger////
diff --git a/gnu/testlet/java/math/CVS/Repository b/gnu/testlet/java/math/CVS/Repository
new file mode 100644
index 00000000..b7d4c516
--- /dev/null
+++ b/gnu/testlet/java/math/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/math
diff --git a/gnu/testlet/java/math/CVS/Root b/gnu/testlet/java/math/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/math/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/Authenticator/CVS/Entries b/gnu/testlet/java/net/Authenticator/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/net/Authenticator/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/net/Authenticator/CVS/Repository b/gnu/testlet/java/net/Authenticator/CVS/Repository
new file mode 100644
index 00000000..9fe9ccbe
--- /dev/null
+++ b/gnu/testlet/java/net/Authenticator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/Authenticator
diff --git a/gnu/testlet/java/net/Authenticator/CVS/Root b/gnu/testlet/java/net/Authenticator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/Authenticator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/CVS/Entries b/gnu/testlet/java/net/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/net/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/net/CVS/Entries.Log b/gnu/testlet/java/net/CVS/Entries.Log
new file mode 100644
index 00000000..ca74fef5
--- /dev/null
+++ b/gnu/testlet/java/net/CVS/Entries.Log
@@ -0,0 +1,19 @@
+A D/Authenticator////
+A D/DatagramPacket////
+A D/DatagramSocket////
+A D/HttpURLConnection////
+A D/InetAddress////
+A D/InetSocketAddress////
+A D/MulticastSocket////
+A D/NetworkInterface////
+A D/Proxy////
+A D/ProxySelector////
+A D/ServerSocket////
+A D/Socket////
+A D/SocketPermission////
+A D/URI////
+A D/URL////
+A D/URLClassLoader////
+A D/URLConnection////
+A D/URLEncoder////
+A D/URLStreamHandler////
diff --git a/gnu/testlet/java/net/CVS/Repository b/gnu/testlet/java/net/CVS/Repository
new file mode 100644
index 00000000..f5f3c5cf
--- /dev/null
+++ b/gnu/testlet/java/net/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net
diff --git a/gnu/testlet/java/net/CVS/Root b/gnu/testlet/java/net/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/DatagramPacket/CVS/Entries b/gnu/testlet/java/net/DatagramPacket/CVS/Entries
new file mode 100644
index 00000000..e72b6484
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/CVS/Entries
@@ -0,0 +1,6 @@
+/DatagramPacketOffset.java/1.1/Mon Dec 22 20:02:44 2003//
+/DatagramPacketReceive.java/1.1/Mon Dec 22 20:02:44 2003//
+/DatagramPacketReceive2.java/1.1/Mon Dec 22 20:02:44 2003//
+/DatagramPacketTest.java/1.1/Wed May 12 01:26:36 1999//
+/DatagramPacketTest2.java/1.3/Fri Nov 5 08:12:20 2004//
+D
diff --git a/gnu/testlet/java/net/DatagramPacket/CVS/Repository b/gnu/testlet/java/net/DatagramPacket/CVS/Repository
new file mode 100644
index 00000000..59075cf1
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/DatagramPacket
diff --git a/gnu/testlet/java/net/DatagramPacket/CVS/Root b/gnu/testlet/java/net/DatagramPacket/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/DatagramPacket/DatagramPacketOffset.java b/gnu/testlet/java/net/DatagramPacket/DatagramPacketOffset.java
new file mode 100644
index 00000000..034b8fac
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/DatagramPacketOffset.java
@@ -0,0 +1,236 @@
+// Tags: JDK1.2
+
+/*
+ Copyright (C) 2003 Norbert Frese
+
+ 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.java.net.DatagramPacket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+/**
+ *
+ * Tests the offset-field of DatagramPacket
+ * by sending and receiving Packets
+ *
+ */
+public class DatagramPacketOffset implements Testlet {
+
+ protected static TestHarness harness;
+
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ new OffsetTest();
+
+ }
+
+ // +++++++++++++ first test (A)+++++++++++++++
+
+ class OffsetTest {
+
+ static final String TESTNAME = "DatagramPacket Offset Test";
+
+ DatagramSocket localUdpSock;
+ DatagramSocket localUdpSock2;
+
+ protected DatagramPacket receivePacket;
+
+ protected byte[] receiveBuf = new byte[37];
+
+ Exception sendTextEx1;
+
+ Exception sendTextEx2;
+
+ public OffsetTest() {
+
+
+
+ try {
+ start();
+ } catch (Exception ex) {
+ harness.fail(TESTNAME + " " + ex);
+ }
+
+ sendBadOffset();
+
+ }
+
+
+ void sendBadOffset() { // runns after the other tests
+
+ InetSocketAddress toSocketAddr = new InetSocketAddress("127.0.0.1", 4580);
+
+ String s1 = "xyz Hello World 1234567890 ++++++++++++++";
+ // try to send packet with incorrect offset/length
+ try {
+ DatagramPacket sendPacket;
+
+ byte[] ba1 = s1.getBytes();
+ sendPacket = new DatagramPacket(ba1, 4, ba1.length, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ harness.check(false, "Invalid send offset/length (4/37) test (no Exception)");
+
+ } catch (Exception ex) {
+ harness.check(ex instanceof IllegalArgumentException, "Invalid send offset/length (4/37) test: Exception= " + ex);
+
+ }
+
+ // try to send another packet with incorrect offset/length
+ try {
+ DatagramPacket sendPacket;
+
+ byte[] ba1 = s1.getBytes();
+ sendPacket = new DatagramPacket(ba1, 40, 2, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ harness.check(false, "Invalid send offset/length (40/2) test (no Exception)");
+
+ } catch (Exception ex) {
+ harness.check(ex instanceof IllegalArgumentException, "Invalid send offset/length (40/2) test: Exception= " + ex);
+
+ }
+
+
+
+ }
+
+
+ void start() throws Exception {
+
+ localUdpSock = new DatagramSocket(4580);
+
+ // try this for a different send-socket
+ localUdpSock2 = new DatagramSocket(4581);
+
+ // or this for using the same socket for sending and receiving:
+ //localUdpSock2 = localUdpSock;
+
+ Thread sendThread = new Thread(new Runnable() {
+
+ public void run() {
+ try {
+ sendLoop();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ });
+
+ sendThread.start();
+ receiveLoop();
+
+ }
+
+
+ void sendLoop() throws Exception {
+
+
+ InetSocketAddress toSocketAddr = new InetSocketAddress("127.0.0.1", 4580);
+
+
+ // send packets with offset 4
+ int count = 0;
+
+ while (count < 10) {
+
+ DatagramPacket sendPacket;
+
+ String s1 = "xyz Hello World 1234567890 ++++++++++++++";
+ byte[] ba1 = s1.getBytes();
+ sendPacket = new DatagramPacket(ba1, 4, ba1.length-4, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ Thread.sleep(10);
+
+ count++;
+
+ }
+
+
+ }
+
+ void receiveLoop() throws Exception {
+
+
+ for (int i=0;i<receiveBuf.length;i++) {
+ receiveBuf[i] = (byte)'.';
+ }
+ // test with invalid offset/length
+ try {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 40, 3);
+ localUdpSock.receive(receivePacket);
+ harness.check(false, "Invalid receive offset/length (40/3) test failed (no Exception)");
+ } catch (Exception ex) {
+ harness.check(ex instanceof IllegalArgumentException, "Invalid receive offset/length (40/3) test: Exception= " + ex);
+ }
+
+ // test with invalid offset/test
+ try {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 20, 20);
+ localUdpSock.receive(receivePacket);
+ harness.check(false, "Invalid receive offset/length (20/20) test failed (no Exception)");
+ } catch (Exception ex) {
+ harness.check(ex instanceof IllegalArgumentException, "Invalid receive offset/length (20/20) test: Exception= " + ex);
+ }
+
+
+ // tests with correct offset
+ {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 36, 0);
+ localUdpSock.receive(receivePacket);
+ harness.debug("after receive 0: byte[]='" + new String(receiveBuf) + "'");
+ }
+
+ {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 0, 10);
+ localUdpSock.receive(receivePacket);
+ harness.debug("after receive 1: byte[]='" + new String(receiveBuf) + "'");
+ }
+
+ {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 10, 10);
+ localUdpSock.receive(receivePacket);
+ harness.debug("after receive 2: byte[]='" + new String(receiveBuf) + "'");
+ }
+
+ {
+ DatagramPacket packet = receivePacket = new DatagramPacket(receiveBuf, 20, 17);
+ localUdpSock.receive(receivePacket);
+ harness.debug("after receive 3: byte[]='" + new String(receiveBuf) + "'");
+ }
+
+ String result = new String(receiveBuf);
+ String shouldBe = "Hello WorlHello WorlHello World 12345";
+
+ harness.check(result.equals(shouldBe),
+ TESTNAME + " byte[]='" + result + "' should be='" + shouldBe + "'");
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive.java b/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive.java
new file mode 100644
index 00000000..a1f4d184
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive.java
@@ -0,0 +1,174 @@
+// Tags: JDK1.0
+
+/*
+ Copyright (C) 2003 Norbert Frese
+
+ 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.java.net.DatagramPacket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+/**
+ *
+ * Tests the 'reusing' of a DatagramPacket-Object for receiving
+ * multiple Packets.
+ *
+ */
+public class DatagramPacketReceive implements Testlet {
+
+ protected static TestHarness harness;
+
+
+
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ new UDPTest1();
+
+ }
+
+ // +++++++++++++ first test (A)+++++++++++++++
+
+ class UDPTest1 {
+
+ static final String TESTNAME = "DatagramPacket receive Test A";
+
+ DatagramSocket localUdpSock;
+ DatagramSocket localUdpSock2;
+
+ protected DatagramPacket receivePacket;
+
+ protected byte[] receiveBuf = new byte[1000];
+
+
+ public UDPTest1() {
+
+
+
+ try {
+ start();
+ } catch (Exception ex) {
+ harness.fail(TESTNAME + " " + ex);
+ }
+
+
+ }
+
+ void start() throws Exception {
+
+ localUdpSock = new DatagramSocket(4567);
+
+ // try this for a different send-socket
+ localUdpSock2 = new DatagramSocket(4568);
+
+ // or this for using the same socket for sending and receiving:
+ //localUdpSock2 = localUdpSock;
+
+ Thread sendThread = new Thread(new Runnable() {
+
+ public void run() {
+ try {
+ sendLoop();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ });
+
+ sendThread.start();
+ receiveLoop();
+
+ }
+
+
+ void sendLoop() throws Exception {
+
+
+ InetSocketAddress toSocketAddr = new InetSocketAddress("127.0.0.1", 4567);
+
+ int count = 0;
+
+ while (count < 10) {
+
+ DatagramPacket sendPacket;
+
+ String s1 = "Hello World 1234567890 ++++++++++++++";
+ byte[] ba1 = s1.getBytes();
+ sendPacket = new DatagramPacket(ba1, ba1.length, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ String s2 = "World Hello 0987654321";
+ byte[] ba2 = s2.getBytes();
+ sendPacket = new DatagramPacket(ba2, ba2.length, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ Thread.sleep(10);
+
+ count++;
+
+ }
+
+
+ }
+
+ void receiveLoop() throws Exception {
+
+ receivePacket = new DatagramPacket(receiveBuf, receiveBuf.length);
+
+ int count=0;
+ int errorCount=0;
+
+ while(count < 10) {
+ try {
+
+ localUdpSock.receive(receivePacket);
+ Thread.sleep(5);
+ int reportedLength = receivePacket.getLength();
+
+ String s = new String(receiveBuf, 0, reportedLength);
+
+ String message = "packet#" + count + " got packet '" + s + "' length=" + receivePacket.getLength();
+ harness.debug(message);
+
+ if (!(
+ (s.startsWith("World Hello") && reportedLength == 22)
+ || (s.startsWith("Hello World") && reportedLength == 37)
+ )) errorCount++;
+
+ } catch (Exception ex) {
+ harness.fail(TESTNAME + " receiveloop exception:" + ex);
+ }
+ count++;
+
+ }
+
+ harness.check(errorCount ==0,
+ TESTNAME + " errorCount=" + errorCount);
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive2.java b/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive2.java
new file mode 100644
index 00000000..d2614564
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/DatagramPacketReceive2.java
@@ -0,0 +1,205 @@
+// Tags: JDK1.1
+
+/*
+ Copyright (C) 2003 Norbert Frese
+
+ 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.java.net.DatagramPacket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+/**
+ *
+ * Tests the assignment of incoming Packets to the
+ * byte[] buffer of a DatagramPacket
+ *
+ */
+public class DatagramPacketReceive2 implements Testlet {
+
+ protected static TestHarness harness;
+
+
+
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ new UDPTest2();
+
+ }
+
+ class UDPTest2 {
+
+ static final String TESTNAME = "DatagramPacket receive Test B";
+
+
+ DatagramSocket localUdpSock;
+ DatagramSocket localUdpSock2;
+
+ protected DatagramPacket receivePacket;
+
+ protected byte[] receiveBuf = new byte[1000];
+
+
+ public UDPTest2() {
+ try {
+ start();
+ } catch (Exception ex) {
+ harness.fail(TESTNAME + " " + ex);
+ }
+
+ }
+
+ void start() throws Exception {
+
+ localUdpSock = new DatagramSocket(4569);
+
+ // try this for a different send-socket
+ localUdpSock2 = new DatagramSocket(4570);
+
+ // or this for using the same socket for sending and receiving:
+ //localUdpSock2 = localUdpSock;
+
+ Thread sendThread = new Thread(new Runnable() {
+
+ public void run() {
+ try {
+ sendLoop();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ });
+
+ sendThread.start();
+ receiveLoop();
+
+ }
+
+
+ void sendLoop() throws Exception {
+
+
+ InetSocketAddress toSocketAddr = new InetSocketAddress("127.0.0.1", 4569);
+
+ int count = 0;
+ while (count < 40) {
+
+ DatagramPacket sendPacket;
+
+ String s1 = "Hello World 1234567890 ++++++++++++++";
+ byte[] ba1 = s1.getBytes();
+ sendPacket = new DatagramPacket(ba1, ba1.length, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ String s2 = "World Hello 0987654321";
+ byte[] ba2 = s2.getBytes();
+ sendPacket = new DatagramPacket(ba2, ba2.length, toSocketAddr);
+ localUdpSock2.send(sendPacket);
+
+ Thread.sleep(3);
+ count++;
+
+ }
+
+
+ }
+
+ void receiveLoop() throws Exception {
+
+ int errorCount = 0;
+
+ receivePacket = new DatagramPacket(receiveBuf, receiveBuf.length);
+
+
+ for (int i=0;i<3;i++)
+ {
+ harness.debug(TESTNAME + " switch=" + i);
+ for (int j=0;j<10;j++)
+ {
+ try {
+
+
+ switch (i) {
+ case 0:
+ break;
+ case 1:
+ receivePacket.setLength(30);
+ break;
+ case 2:
+ receivePacket.setLength(0);
+ break;
+ }
+
+
+
+ localUdpSock.receive(receivePacket);
+ Thread.sleep(50);
+ int reportedLength = receivePacket.getLength();
+
+ String s = new String(receiveBuf, 0, reportedLength);
+
+ String message = "got packet:" + s + " length=" + receivePacket.getLength();
+
+
+ switch (i) {
+ case 0:
+ if (!(reportedLength == 37 || reportedLength == 22)) {
+ harness.debug(message + " bad getLength=" + reportedLength + " - should be 22 or 37.");
+ errorCount++;
+ }
+
+ break;
+ case 1:
+ if (!(reportedLength == 30 || reportedLength == 22)) {
+ harness.debug(message + " bad getLength=" + reportedLength + " - should be 22 or 30.");
+ errorCount++;
+ }
+ break;
+ case 2:
+ if (reportedLength != 0 ) {
+ harness.debug(message + " bad getLength=" + reportedLength + " - should be 0.");
+ errorCount++;
+ }
+ break;
+ }
+
+
+ } catch (Exception ex) {
+ harness.fail(TESTNAME + "Exception in read Loop " + ex);
+ }
+ }
+ }
+ harness.check(errorCount==0,
+ TESTNAME + " errorCount=" + errorCount);
+
+
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest.java b/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest.java
new file mode 100644
index 00000000..3b111c3c
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest.java
@@ -0,0 +1,170 @@
+// Tags: JDK1.0
+
+/*
+ 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.
+*/
+// ******************************************************
+//
+// ******************************************************
+
+package gnu.testlet.java.net.DatagramPacket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class DatagramPacketTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ byte[] b = {(byte)'a',(byte)'b',(byte)'c',(byte)'d',(byte)'e',(byte)'f',(byte)'g',(byte)'h',(byte)'i',(byte)'j',(byte)'k', (byte)'l'};
+
+ harness.checkPoint ("test_Basics");
+ DatagramPacket packet = new DatagramPacket(b, 10);
+
+ harness.check (packet.getAddress(), null,
+ "Error : test_Basics failed - 1 " +
+ "The getAddress should return null since no address is assigned yet");
+
+ harness.check (packet.getLength(), 10,
+ "Error : test_Basics failed - 2 " +
+ "The getLength should return the number of bytes to be sent/received");
+
+ String str = new String( packet.getData());
+ harness.check ( str, "abcdefghijkl",
+ "Error : test_Basics failed - 3 " +
+ "The getData should return actual bytes to be sent/received");
+
+
+ packet.setPort( 1000 );
+ harness.check ( packet.getPort(), 1000,
+ "Error : test_Basics failed - 4 " +
+ "The getPort should return actual port to which it is set");
+
+ packet.setLength( 3 );
+
+ harness.check ( packet.getLength(), 3,
+ "Error : test_Basics failed - 5 " +
+ "The getLength should return the number of bytes to be sent/received");
+
+ byte b1[] = {(byte)'h' ,(byte)'h' , (byte)'i' , (byte)'j'};
+ packet.setData( b1 );
+ String str1 = new String( packet.getData());
+ harness.check ( str1, "hhij",
+ "Error : test_Basics failed - 6 " +
+ "The getData should return actual bytes to be sent/received");
+
+ InetAddress addr = null;
+
+ try {
+ addr = InetAddress.getLocalHost();
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 7 " +
+ "The getLocalHost should not raise UnknownHostException in this case");
+ }
+ packet.setAddress( addr );
+ harness.check ( packet.getAddress(), addr,
+ "Error : test_Basics failed - 8 " +
+ "The getAddress should return the value that is assigned to it");
+
+ }
+
+ public void test_Basics1()
+ {
+ byte[] b = {(byte)'a',(byte)'b',(byte)'c',(byte)'d',(byte)'e',(byte)'f',(byte)'g',(byte)'h',(byte)'i',(byte)'j',(byte)'k', (byte)'l'};
+
+ harness.checkPoint("test_Basics1");
+ InetAddress addr0 = null;
+ try {
+ addr0 = InetAddress.getLocalHost();
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics1 failed - 0 " +
+ "The getLocalHost should not raise UnknownHostException in this case");
+ }
+
+ DatagramPacket packet = new DatagramPacket( b, 10, addr0 , 2000 );
+
+ harness.check ( packet.getAddress() != null,
+ "Error : test_Basics1 failed - 1 " +
+ "The getAddress should return not return null since address is assigned");
+
+ harness.check ( packet.getLength() == 10 && packet.getPort() == 2000,
+ "Error : test_Basics1 failed - 2 " +
+ "The getLength and getPort should return the number of bytes to be sent/receive" +
+ " and the port set respectively" );
+
+ String str = new String( packet.getData());
+ harness.check ( str, "abcdefghijkl",
+ "Error : test_Basics1 failed - 3 " +
+ "The getData should return actual bytes to be sent/received");
+
+
+ packet.setPort( 1000 );
+ harness.check ( packet.getPort(), 1000,
+ "Error : test_Basics1 failed - 4 " +
+ "The getPort should return actual port to which it is set");
+
+ packet.setLength( 3 );
+
+ harness.check ( packet.getLength(), 3,
+ "Error : test_Basics1 failed - 5 " +
+ "The getLength should return the number of bytes to be sent/received");
+
+ byte b1[] = {(byte)'h' ,(byte)'h' , (byte)'i' , (byte)'j'};
+ packet.setData( b1 );
+ String str1 = new String( packet.getData());
+ harness.check ( str1, "hhij",
+ "Error : test_Basics1 failed - 6 " +
+ "The getData should return actual bytes to be sent/received");
+
+ InetAddress addr = null;
+
+ try {
+ addr = InetAddress.getLocalHost();
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics1 failed - 7 " +
+ "The getLocalHost should not raise UnknownHostException in this case");
+ }
+ packet.setAddress( addr );
+ harness.check ( packet.getAddress(), addr,
+ "Error : test_Basics1 failed - 8 " +
+ "The getAddress should return the value that is assigned to it");
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_Basics1();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java b/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java
new file mode 100644
index 00000000..63b59b0f
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramPacket/DatagramPacketTest2.java
@@ -0,0 +1,300 @@
+// Tags: JDK1.1
+
+/*
+ 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.
+*/
+/**********************************************
+* File name: DatagramPacketTest2.java
+**********************************************/
+
+package gnu.testlet.java.net.DatagramPacket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+/**************************************************************
+*
+* What does the test do?
+* ----------------------
+*
+* This test is for DatagramPacket class.
+* It tests for Exceptions, by passing invalid arguments to
+* the constructors and methods.
+*
+* How do I run the test?
+* ----------------------
+*
+* Usage: java DatagramPacketTest2
+*
+* What about the test result?
+* ---------------------------
+*
+* If an Exception is not thrown, when it should have been,
+* and vice-versa, then the error is displayed on stdout and
+* the test continues.
+*
+* Check the file Test.out for any errors.
+*
+**************************************************************/
+
+public class DatagramPacketTest2 implements Testlet
+{
+ final static int INVALID_PORT = -1;
+ final static int PORT = 7;
+ final static int MAX_PORT = 65535;
+
+ protected static TestHarness harness;
+ public InetAddress ia;
+ public byte [] buf;
+
+ public DatagramPacketTest2() throws Exception
+ {
+ buf = new byte[10];
+ ia = InetAddress.getLocalHost();
+ }
+
+ private void errormsg(String m, int num, boolean flag, String e)
+ {
+ if (e != null)
+ {
+ if (flag)
+ harness.fail(m + ": " + "test " + num +
+ " - Should throw " + e);
+ else
+ harness.fail(m + ": " + "test " + num +
+ " - Should NOT throw " + e);
+ }
+ else
+ harness.fail(m + ": " + "test " + num +
+ " - Should NOT throw any Exception");
+ }
+
+ // check for invalid data buffer
+ public void invalid_buf()
+ {
+ try
+ {
+ DatagramPacket request = new DatagramPacket(null, 10, ia, PORT);
+ errormsg("invalid_buf", 1, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, buf.length, ia,
+ PORT);
+ request.setData(null);
+ errormsg("invalid_buf", 2, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(null, 10);
+ errormsg("invalid_buf", 3, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, buf.length);
+ reply.setData(null);
+ errormsg("invalid_buf", 4, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // check for invalid data buffer length
+ public void invalid_buflen()
+ {
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, -1, ia, PORT);
+ errormsg("invalid_buflen", 1, false, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, 0, ia, PORT);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_buflen", 2, true, null);
+ e.printStackTrace();
+ }
+
+ try
+ {
+
+ DatagramPacket reply = new DatagramPacket(buf, -1);
+ errormsg("invalid_buflen", 3, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, 0);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_buflen", 4, true, null);
+ e.printStackTrace();
+ }
+
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, buf.length + 1,
+ ia, PORT);
+ errormsg("invalid_buflen", 5, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, buf.length + 1);
+ errormsg("invalid_buflen", 6, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, buf.length);
+ reply.setLength(buf.length + 1);
+ errormsg("invalid_buflen", 7, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // check for invalid port number
+ public void invalid_port()
+ {
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, 10, ia,
+ INVALID_PORT);
+ errormsg("invalid_port", 1, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket request = new DatagramPacket(buf, 10, ia, PORT);
+ request.setPort(INVALID_PORT);
+ errormsg("invalid_port", 2, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket request2 = new DatagramPacket(buf, 10, ia,
+ MAX_PORT + 1);
+ errormsg("invalid_port", 3, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, 10);
+ reply.setPort(INVALID_PORT);
+ errormsg("invalid_port", 4, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ DatagramPacket reply = new DatagramPacket(buf, 10);
+ reply.setPort(MAX_PORT + 1);
+ errormsg("invalid_port", 5, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+
+ public void testall()
+ {
+ DatagramPacketTest2 m = null;
+ try
+ {
+ m = new DatagramPacketTest2();
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.fail("DatagramPacketTest2 constructor");
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ m.invalid_buf();
+ m.invalid_buflen();
+ m.invalid_port();
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramSocket/CVS/Entries b/gnu/testlet/java/net/DatagramSocket/CVS/Entries
new file mode 100644
index 00000000..4e801ed8
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/CVS/Entries
@@ -0,0 +1,7 @@
+/DatagramSocketTest.java/1.5/Fri Jul 22 09:03:22 2005//
+/DatagramSocketTest2.java/1.6/Sun Apr 25 11:10:40 2004//
+/DatagramSocketTestEchoServer.java/1.2/Thu Jun 3 14:31:11 2004//
+/DatagramSocketTestEchoTimeoutServer.java/1.3/Thu Jun 3 14:31:11 2004//
+/bind.java/1.1/Wed Dec 7 12:49:05 2005//
+/security.java/1.2/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/net/DatagramSocket/CVS/Repository b/gnu/testlet/java/net/DatagramSocket/CVS/Repository
new file mode 100644
index 00000000..afb2cda5
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/DatagramSocket
diff --git a/gnu/testlet/java/net/DatagramSocket/CVS/Root b/gnu/testlet/java/net/DatagramSocket/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java
new file mode 100644
index 00000000..de8c9106
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest.java
@@ -0,0 +1,322 @@
+// Tags: JDK1.1
+// Uses: DatagramSocketTestEchoServer DatagramSocketTestEchoTimeoutServer
+
+/*
+ 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.
+*/
+// ******************************************************
+//
+// ******************************************************
+
+package gnu.testlet.java.net.DatagramSocket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+// mod for "equals" and remove dependency on NodeTest
+
+public class DatagramSocketTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.checkPoint("Basics");
+ try {
+ DatagramSocket sock1 = new DatagramSocket( 7000 );
+ harness.check ( sock1.getLocalPort(), 7000,
+ "Error : test_Basics failed - 1 " +
+ "returned port value is wrong");
+
+
+ }
+ catch( SocketException e ){
+ harness.fail("Error : test_Basics failed - 2 " +
+ "Not able to create a socket ");
+ }
+ catch(IllegalArgumentException e )
+ {
+ harness.fail("Error : test_Basics failed - 3a " +
+ "Port 7000 causes IllegalArgumentException");
+ }
+ catch(Exception e )
+ {
+ harness.fail("Error : test_Basics failed - 3b ");
+ harness.debug(e);
+ }
+
+ try {
+ DatagramSocket sock3 =
+ new DatagramSocket( 7001,
+ InetAddress.getLocalHost());
+
+ harness.check (sock3.getLocalAddress().getHostAddress(),
+ InetAddress.getLocalHost().getHostAddress (),
+ "Error : test_Basics failed - 4 " +
+ "ip address returned is not correct ");
+ }
+ catch ( SocketException e ){
+ harness.fail("Error : test_Basics failed - 5 " +
+ "Not able to create a socket ");
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 6 " +
+ "Should not throw UnknownHostException ");
+ }
+ catch(IllegalArgumentException e )
+ {
+ harness.fail("Error : test_Basics failed - 7 " +
+ "Port 7001 causes IllegalArgumentException");
+ }
+ catch(Exception e )
+ {
+ harness.fail("Error : test_Basics failed - 8 ");
+ harness.debug(e);
+ }
+
+ }
+
+
+ public void test_echo()
+ {
+ DatagramSocketTestEchoServer srv = new DatagramSocketTestEchoServer();
+ srv.setDaemon(true);
+ srv.setPriority(10);
+ srv.start();
+
+
+ // System.out.println(" yield to server thread");
+ Thread.yield();
+ try {
+ Thread.sleep(2000);
+ }
+ catch ( Exception e ){}
+ // System.out.println(" server thread should be running");
+
+ byte buff[] = {(byte)'h' , (byte)'e', (byte)'l',(byte)'l',(byte)'o',(byte)'b',(byte)'u',(byte)'d',(byte)'d',(byte)'y'};
+
+
+ DatagramSocket client=null;
+ DatagramPacket request=null;
+
+ try {
+ client = new DatagramSocket();
+ request = new DatagramPacket(
+ buff, buff.length,
+ InetAddress.getLocalHost(), 8000 );
+// System.out.println("Packet Addressed to :"+InetAddress.getLocalHost().toString()+" "+String.valueOf(8000));
+ harness.check(true);
+ }
+ catch ( Exception e ){
+ harness.fail("Error : test_echo failed - 0 " +
+ "Should not throw Exception ");
+ }
+
+ byte resp[] = new byte[10];
+ DatagramPacket reply = new DatagramPacket( resp , resp.length );
+
+ if (client==null) return;
+ if (request==null) return;
+
+// System.out.println("test echo 1");
+
+ try {
+// System.out.println("test echo 2 send");
+ client.send(request);
+ try {
+ Thread.sleep(1000 );
+ }
+ catch ( Exception e ){}
+// System.out.println("test echo 3 receive");
+ client.receive(reply);
+// System.out.println("test echo 4 received, close.");
+ client.close();
+
+ //try {
+ //System.out.println("test echo 4.5 close 2");
+ // client.close();
+ // harness.fail("Error : test_echo failed - 1 " +
+ // "IOException to be thrown if a socket is closed twice ");
+ //}
+ //catch( Exception e ){}
+
+// System.out.println("test echo 5");
+
+ try {
+ byte resp1[] = new byte[10];
+ DatagramPacket reply1 = new DatagramPacket( resp1 , resp1.length );
+// System.out.println("test echo 6");
+
+ client.receive(reply1);
+ harness.fail( "Error : test_echo failed - 2 " +
+ "IOException should be thrown if try to read after the socket is closed");
+ }
+ catch ( IOException e )
+ {
+ harness.check(true);
+ }
+
+ }
+ catch ( Exception e)
+ {
+ harness.fail("Error : test_echo failed - 3 " +
+ "Exception occured while sending/receiving " );
+ }
+
+ harness.check ( reply.getLength(), 10,
+ "Error : test_echo failed - 4 " +
+ "server did not return proper number of bytes " );
+
+// System.out.println("test_echo: packet data: "+(new String(reply.getData())) ) ;
+
+
+ harness.check ( (new String(reply.getData())), "hellobuddy",
+ "Error : test_echo - 5 failed " +
+ "The echo server did not send the expected data " );
+
+ }
+
+// 12/16/97, timeout is not a Java 1.0 feature
+
+ public void test_echoWithTimeout()
+ {
+ DatagramSocketTestEchoTimeoutServer srv = new DatagramSocketTestEchoTimeoutServer();
+ srv.setDaemon(true);
+ srv.setPriority(10);
+ srv.start();
+ Thread.yield();
+ try {
+ Thread.sleep(2000);
+ }
+ catch ( Exception e ){}
+
+ byte buff[] = {(byte)'h' , (byte)'e', (byte)'l',(byte)'l',(byte)'o',(byte)'b',(byte)'u',(byte)'d',(byte)'d',(byte)'y'};
+
+
+ DatagramSocket client=null;
+ DatagramPacket request=null;
+
+ try {
+ client = new DatagramSocket();
+ request = new DatagramPacket(
+ buff, buff.length,
+ InetAddress.getLocalHost(), 8001 );
+ harness.check(true);
+ }
+ catch ( Exception e ){
+ harness.fail("Error : test_echoWithTimeout failed - 0 " +
+ "Should not throw Exception ");
+ }
+
+ if (client==null) return;
+ if (request==null) return;
+
+ try {
+ client.setSoTimeout(500);
+ harness.check(true);
+ }catch ( SocketException e ){
+ harness.fail("Error : test_echoWithTimeout failed - 1 " +
+ "Should not throw SocketException ");
+ }
+
+ try {
+ harness.check ( client.getSoTimeout(), 500,
+ "Error : test_echoWithTimeout failed - 2 " +
+ "did not return proper timeout value ");
+ }catch ( SocketException e ){
+ harness.fail("Error : test_echoWithTimeout failed - 3 " +
+ "Should not throw SocketException ");
+ }
+
+
+ byte resp[] = new byte[10];
+ DatagramPacket reply = new DatagramPacket( resp , resp.length );
+
+ try {
+ client.send(request);
+ client.receive(reply);
+ // don't send data & test that
+ // receive times-out
+ try {
+
+ client.setSoTimeout(1);
+ client.receive(reply);
+ harness.fail("Error : test_echoWithTimeout failed - 2 " +
+ "Should throw interrupted exception after the specified duration");
+ } catch (InterruptedIOException e )
+ {
+ harness.check(true);
+ } catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+ client.close();
+
+ try {
+ byte resp1[] = new byte[10];
+ DatagramPacket reply1 = new DatagramPacket( resp1 , resp1.length );
+ client.receive(reply1);
+ harness.fail( "Error : test_echoWithTimeout failed - 4 " +
+ "IOException should be thrown if try to read after the socket is closed");
+ }
+ catch ( IOException e )
+ {
+ harness.check(true);
+ }
+
+ }
+ catch ( Exception e)
+ {
+ harness.fail("Error : test_echoWithTimeout failed - 5 " +
+ "Exception occured while sending/receiving " );
+ harness.debug(e);
+ }
+
+ harness.check ( reply.getLength(), 10,
+ "Error : test_echoWithTimeout failed - 6 " +
+ "server did not return proper number of bytes " );
+
+// System.out.println("test_echoWithTimeout: packet data: "+(new String(reply.getData())) ) ;
+
+ harness.check ( (new String(reply.getData())), "hellobuddy",
+ "Error : test_echoWithTimeout - 7 failed " +
+ "The echo server didnot send the expected data " );
+
+ }
+
+
+ public void testall()
+ {
+// System.out.println("test_basics");
+ test_Basics();
+// System.out.println("test_echo");
+ test_echo();
+ test_echoWithTimeout();
+// System.out.println("testall Done 1");
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java
new file mode 100644
index 00000000..35fac838
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTest2.java
@@ -0,0 +1,383 @@
+// Tags: JDK1.0
+
+/*
+ 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.
+*/
+/**********************************************
+* File name: DatagramSocketTest2.java
+**********************************************/
+
+package gnu.testlet.java.net.DatagramSocket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.*;
+import java.net.*;
+
+/**************************************************************
+*
+* What does the test do?
+* ----------------------
+*
+* This test is for DatagramSocket class.
+* It tests for Exceptions, by passing invalid arguments to
+* the constructors and methods.
+*
+* How do I run the test?
+* ----------------------
+*
+* Usage: java DatagramSocketTest2
+*
+* What about the test result?
+* ---------------------------
+*
+* If an Exception is not thrown, when it should have been,
+* and vice-versa, then the error is displayed on stderr and
+* the test continues.
+*
+* TEST PASS == No output on stderr
+*
+**************************************************************/
+
+public class DatagramSocketTest2 implements Testlet
+{
+ final static int INVALID_PORT = -1;
+ final static int ECHO_PORT = 7;
+ final static int GOOD_PORT = 37777;
+ final static int MAX_PORT = 65535;
+
+ protected static TestHarness harness;
+ public InetAddress ia;
+ public byte [] buf;
+
+ public DatagramSocketTest2() throws Exception
+ {
+ buf = new byte[10];
+ ia = InetAddress.getLocalHost();
+ }
+
+ private void errormsg(String m, int num, boolean flag, String e)
+ {
+ if (e != null)
+ {
+ if (flag)
+ harness.fail(m + ": " + "test " + num +
+ " - Should throw " + e);
+ else
+ harness.fail(m + ": " + "test " + num +
+ " - Should NOT throw " + e);
+ }
+ else
+ harness.fail(m + ": " + "test " + num +
+ " - Should NOT throw any Exception");
+ }
+
+ // check for invalid port number
+ public void invalid_port()
+ {
+ harness.checkPoint("invalid_port");
+ try
+ {
+ DatagramSocket sock = new DatagramSocket(INVALID_PORT);
+ errormsg("invalid_port", 2, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_port", 2, false, "IOException");
+ }
+
+ try
+ {
+ DatagramSocket sock = new DatagramSocket(MAX_PORT + 1);
+ errormsg("invalid_port", 3, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_port", 3, false, "IOException");
+ }
+ }
+
+ // check for invalid IP address
+ public void invalid_addr()
+ {
+ harness.checkPoint("invalid_addr");
+ DatagramSocket sock = null;
+ try
+ {
+ sock = new DatagramSocket(GOOD_PORT, null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ errormsg("invalid_addr", 1, false, "NullPointerException");
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_addr", 1, false, "IOException");
+ }
+
+ if (sock != null)
+ sock.close();
+ }
+
+ // check for invalid data buffer in receive packet
+ public void invalid_receive_data()
+ {
+ harness.checkPoint("invalid_receive_data");
+ DatagramSocket sock = null;
+ try
+ {
+ sock = new DatagramSocket(GOOD_PORT, ia);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_receive_data", 1, false, "Exception");
+ e.printStackTrace();
+ return;
+ }
+
+ try
+ {
+ // null packet
+ sock.receive(null);
+ errormsg("invalid_receive_data", 2, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_receive_data", 2, false, "IOException");
+ }
+
+ try
+ {
+ DatagramPacket pkt = new DatagramPacket(buf, buf.length);
+ // null data buffer
+ pkt.setData(null);
+ sock.receive(pkt);
+ errormsg("invalid_send_data", 3, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_send_data", 3, false, "IOException");
+ }
+
+ try
+ {
+ // invalid data buffer length
+ DatagramPacket pkt = new DatagramPacket(buf, -1);
+ errormsg("invalid_receive_data", 4, true, "IOException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false, "Expected IllegalArgumentException");
+ }
+
+ sock.close();
+ }
+
+ // check for invalid IP address in send packet
+ public void invalid_send_addr()
+ {
+ harness.checkPoint("invalid_send_addr");
+ DatagramSocket sock = null;
+ try
+ {
+ sock = new DatagramSocket(GOOD_PORT, ia);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_send_addr", 1, false, "Exception");
+ return;
+ }
+
+ try
+ {
+ // null IP address
+ DatagramPacket pkt = new DatagramPacket(buf, buf.length, null,
+ ECHO_PORT);
+ sock.send(pkt);
+ errormsg("invalid_send_addr", 2, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_send_addr", 2, false, "IOException");
+ }
+
+ sock.close();
+ }
+
+ // check for invalid port in send packet
+ public void invalid_send_port()
+ {
+ harness.checkPoint("invalid_send_port");
+ DatagramSocket sock = null;
+ try
+ {
+ sock = new DatagramSocket(GOOD_PORT, ia);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_send_port", 1, false, "Exception");
+ return;
+ }
+
+ try
+ {
+ // invalid port 0
+ DatagramPacket pkt = new DatagramPacket(buf, buf.length, ia, 0);
+ sock.send(pkt);
+ errormsg("invalid_send_port", 2, true, "IOException");
+ }
+ catch (IOException e)
+ {
+ harness.check(true);
+ }
+
+ sock.close();
+ }
+
+ // check for invalid data buffer in send packet
+ public void invalid_send_data()
+ {
+ harness.checkPoint("invalid_send_data");
+ DatagramSocket sock = null;
+ try
+ {
+ sock = new DatagramSocket(GOOD_PORT, ia);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ errormsg("invalid_send_data", 1, false, "Exception");
+ return;
+ }
+
+ try
+ {
+ // null packet
+ sock.send(null);
+ errormsg("invalid_send_data", 2, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_send_data", 2, false, "IOException");
+ }
+
+ try
+ {
+ DatagramPacket pkt = new DatagramPacket(buf, buf.length, ia,
+ ECHO_PORT);
+ // null data buffer
+ pkt.setData(null);
+ sock.send(pkt);
+ errormsg("invalid_send_data", 3, true, "NullPointerException");
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_send_data", 3, false, "IOException");
+ }
+
+ try
+ {
+ // invalid data buffer length
+ DatagramPacket pkt = new DatagramPacket(buf, -1, ia, ECHO_PORT);
+ errormsg("invalid_send_data", 4, true, "IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ // zero data buffer length
+ DatagramPacket pkt = new DatagramPacket(buf, 0, ia, ECHO_PORT);
+ sock.send(pkt);
+ harness.check(true);
+ }
+ catch (IOException e)
+ {
+ errormsg("invalid_send_data", 5, false, "IOException");
+ }
+
+ sock.close();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+
+ public void testall()
+ {
+ DatagramSocketTest2 m = null;
+ try
+ {
+ m = new DatagramSocketTest2();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ m.invalid_port();
+ m.invalid_addr();
+ m.invalid_receive_data();
+ m.invalid_send_addr();
+ m.invalid_send_port();
+ m.invalid_send_data();
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java
new file mode 100644
index 00000000..44220c5d
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoServer.java
@@ -0,0 +1,71 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+// ******************************************************
+//
+// ******************************************************
+
+package gnu.testlet.java.net.DatagramSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+// mod for "equals" and remove dependency on NodeTest
+
+class DatagramSocketTestEchoServer extends Thread {
+
+ protected static TestHarness harness;
+
+ public void run() {
+ try {
+ DatagramSocket sock = new DatagramSocket( 8000 );
+
+ byte[] inbuf = new byte[10];
+ DatagramPacket request = new DatagramPacket(inbuf, inbuf.length);
+ try {
+ {
+// System.out.println(" Server: Wait for Receive request");
+ sock.receive(request);
+// System.out.println(" Server: Request received");
+
+ DatagramPacket pack = new DatagramPacket( inbuf , 10,
+ InetAddress.getLocalHost() ,
+
+ request.getPort());
+
+// System.out.println(" Server: Sending packet back "+ "Data: "+(new String(pack.getData())));
+
+ sock.send(pack);
+// System.out.println(" Server: Packet sent back");
+ }
+ } catch (IOException e) {
+ System.out.println("Server: run failed with IOException " );
+ e.printStackTrace();
+ }
+
+ }catch ( Exception e )
+ {
+ System.out.println("Server: run failed with exception " );
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java
new file mode 100644
index 00000000..d66f91bb
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/DatagramSocketTestEchoTimeoutServer.java
@@ -0,0 +1,67 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+// ******************************************************
+//
+// ******************************************************
+
+package gnu.testlet.java.net.DatagramSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+// mod for "equals" and remove dependency on NodeTest
+
+class DatagramSocketTestEchoTimeoutServer extends Thread {
+
+ protected static TestHarness harness;
+
+ public void run() {
+ try {
+ DatagramSocket sock = new DatagramSocket( 8001 );
+
+ byte[] inbuf = new byte[10];
+ DatagramPacket request = new DatagramPacket(inbuf, inbuf.length);
+ try {
+ {
+ sock.receive(request);
+// System.out.println("Received request "+ "Data: "+(new String(request.getData())));
+ DatagramPacket pack = new DatagramPacket( inbuf , 10,
+ InetAddress.getLocalHost() ,
+ request.getPort());
+
+// System.out.println("Sending packet back "+ "Data: "+(new String(pack.getData())));
+
+ sock.send(pack);
+ }
+ } catch (IOException e) {
+ System.out.println("Error : run failed with IOException " );
+ e.printStackTrace();
+ }
+
+ }catch ( Exception e )
+ {
+ System.out.println("Error : run failed with exception " );
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/DatagramSocket/bind.java b/gnu/testlet/java/net/DatagramSocket/bind.java
new file mode 100644
index 00000000..efb7ce6e
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/bind.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Red Hat, Inc.
+
+// 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.java.net.DatagramSocket;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class bind implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ DatagramSocket ds = new DatagramSocket(null);
+ ds.bind(null);
+ h.check(true, "bound to null address");
+ }
+ catch (NullPointerException npe)
+ {
+ h.fail("NPE binding to null address");
+ }
+ catch (Exception e)
+ {
+ h.fail(e.toString() + " binding to null address");
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/net/DatagramSocket/security.java b/gnu/testlet/java/net/DatagramSocket/security.java
new file mode 100644
index 00000000..308c25ea
--- /dev/null
+++ b/gnu/testlet/java/net/DatagramSocket/security.java
@@ -0,0 +1,283 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.DatagramSocket;
+
+import java.net.BindException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.net.SocketPermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ InetAddress inetaddr = InetAddress.getByName(null);
+ String hostaddr = inetaddr.getHostAddress();
+
+ DatagramSocket socket1 = new DatagramSocket(0, inetaddr);
+ DatagramSocket socket2 = new DatagramSocket(0, inetaddr);
+ DatagramSocket socket3 = new DatagramSocket(0, inetaddr);
+ DatagramSocket socket4 = new DatagramSocket(0, inetaddr);
+
+ SocketAddress sock1addr = socket1.getLocalSocketAddress();
+ InetAddress sock2addr = socket2.getLocalAddress();
+
+ byte[] sendbuf = new byte[16];
+ DatagramPacket sendpack = new DatagramPacket(
+ sendbuf, sendbuf.length, socket3.getLocalSocketAddress());
+
+ byte[] recvbuf = new byte[sendbuf.length];
+ DatagramPacket recvpack = new DatagramPacket(recvbuf, recvbuf.length);
+
+ Permission[] checkResolve = new Permission[] {
+ new SocketPermission(hostaddr, "resolve")};
+
+ Permission[] checkListen80 = new Permission[] {
+ new SocketPermission("localhost:80", "listen")};
+
+ Permission[] checkListen1024plus = new Permission[] {
+ new SocketPermission("localhost:1024-", "listen")};
+
+ Permission[] checkConnect1 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket1.getLocalPort(), "connect")};
+
+ Permission[] checkAccept1 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket1.getLocalPort(), "accept")};
+
+ Permission[] checkConnect2 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket2.getLocalPort(), "connect")};
+
+ Permission[] checkAccept2 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket2.getLocalPort(), "accept")};
+
+ Permission[] checkConnect3 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket3.getLocalPort(), "connect")};
+
+ Permission[] checkAccept4 = new Permission[] {
+ new SocketPermission(
+ hostaddr + ":" + socket4.getLocalPort(), "accept")};
+
+ Permission[] checkSetFactory = new Permission[] {
+ new RuntimePermission("setFactory")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.DatagramSocket-DatagramSocket()
+ harness.checkPoint("DatagramSocket()");
+ try {
+ sm.prepareChecks(checkListen1024plus);
+ new DatagramSocket().close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-DatagramSocket(SocketAddress)
+ harness.checkPoint("DatagramSocket(SocketAddress)");
+ try {
+ sm.prepareChecks(checkListen80);
+ try {
+ new DatagramSocket(new InetSocketAddress(inetaddr, 80)).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus);
+ new DatagramSocket(new InetSocketAddress(inetaddr, 0)).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-DatagramSocket(int)
+ harness.checkPoint("DatagramSocket(int)");
+ try {
+ sm.prepareChecks(checkListen80);
+ try {
+ new DatagramSocket(80).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus);
+ new DatagramSocket(0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-DatagramSocket(int, InetAddress)
+ harness.checkPoint("DatagramSocket(int, InetAddress)");
+ try {
+ sm.prepareChecks(checkListen80);
+ try {
+ new DatagramSocket(80, inetaddr).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus);
+ new DatagramSocket(0, inetaddr).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-connect
+ harness.checkPoint("connect");
+ try {
+ sm.prepareChecks(checkConnect1, checkAccept1);
+ socket2.connect(sock1addr);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkConnect2, checkAccept2);
+ socket1.connect(sock2addr, socket2.getLocalPort());
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-send
+ harness.checkPoint("send");
+ try {
+ sm.prepareChecks(checkConnect3);
+ socket4.send(sendpack);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-receive
+ harness.checkPoint("receive");
+ try {
+ sm.prepareChecks(checkAccept4);
+ socket3.receive(recvpack);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-getLocalAddress
+ harness.checkPoint("getLocalAddress");
+ try {
+ sm.prepareChecks(checkResolve);
+ socket1.getLocalAddress();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.DatagramSocket-getLocalSocketAddress
+ harness.checkPoint("getLocalSocketAddress");
+ try {
+ sm.prepareChecks(checkResolve);
+ socket1.getLocalSocketAddress();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.Socket-setDatagramSocketImplFactory
+ harness.checkPoint("setDatagramSocketImplFactory");
+ try {
+ sm.prepareHaltingChecks(checkSetFactory);
+ DatagramSocket.setDatagramSocketImplFactory(null);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/CVS/Entries b/gnu/testlet/java/net/HttpURLConnection/CVS/Entries
new file mode 100644
index 00000000..ee2a95fe
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/CVS/Entries
@@ -0,0 +1,13 @@
+/TestHttpServer.java/1.3/Wed Sep 20 18:10:56 2006//
+/fileNotFound.java/1.2/Sun Feb 5 10:19:43 2006//
+/getOutputStream.java/1.1/Sat Feb 4 14:22:39 2006//
+/getRequestProperty.java/1.1/Sat Feb 4 14:22:39 2006//
+/illegalStateException.java/1.1/Sat Feb 4 14:22:39 2006//
+/nullPointerException.java/1.1/Sat Feb 4 14:22:39 2006//
+/postHeaders.java/1.1/Wed Sep 20 18:10:56 2006//
+/requestPropertiesTest.java/1.1/Mon Mar 6 18:54:55 2006//
+/responseCodeTest.java/1.2/Fri Aug 11 20:00:50 2006//
+/responseHeadersTest.java/1.2/Fri Aug 11 20:00:50 2006//
+/reuseConnection.java/1.1/Fri Aug 11 20:08:51 2006//
+/timeout.java/1.2/Tue Jul 24 13:24:11 2007//
+D
diff --git a/gnu/testlet/java/net/HttpURLConnection/CVS/Repository b/gnu/testlet/java/net/HttpURLConnection/CVS/Repository
new file mode 100644
index 00000000..0e6b4d3e
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/HttpURLConnection
diff --git a/gnu/testlet/java/net/HttpURLConnection/CVS/Root b/gnu/testlet/java/net/HttpURLConnection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java b/gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java
new file mode 100644
index 00000000..27b2432f
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/TestHttpServer.java
@@ -0,0 +1,276 @@
+//Tags: not-a-test
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+
+/**
+ * A HTTP server for testing purpose only. The server can
+ * be started on a given port and the response headers and
+ * response body to be returned set. This way one can test
+ * arbritrary testcases for the http client side library.
+ *
+ * @see gnu.testlet.java.net.HttpURLConnection.responseCodeTest
+ * @see gnu.testlet.java.net.HttpURLConnection.responseHeadersTest
+ *
+ * @author Wolfgang Baer (WBaer@gmx.de)
+ */
+public final class TestHttpServer implements Runnable
+{
+
+ public interface ConnectionHandlerFactory
+ {
+ ConnectionHandler newConnectionHandler(Socket s) throws IOException;
+ }
+
+ /**
+ * The request handler skeleton.
+ */
+ public static abstract class ConnectionHandler implements Runnable
+ {
+ protected Socket socket;
+ protected OutputStream output;
+ protected InputStream input;
+
+ ConnectionHandler(Socket socket) throws IOException
+ {
+ this.socket = socket;
+ output = socket.getOutputStream();
+ input = socket.getInputStream();
+ }
+
+ /**
+ * Process one request on the connection.
+ *
+ * @param headers
+ * @param body
+ * @return true if another request should be read from the connection.
+ * @throws IOException
+ */
+ protected abstract boolean processConnection(List headers, byte[] body)
+ throws IOException;
+
+ protected String getHeaderFromList(List headers, String h)
+ {
+ String search = (h + ":").toLowerCase();
+ Iterator it = headers.iterator();
+ while (it.hasNext())
+ {
+ String v = (String)it.next();
+ String k = v.toLowerCase();
+ if (k.startsWith(search))
+ return v.substring(search.length()).trim();
+ }
+ return null;
+ }
+
+ public void run()
+ {
+ try
+ {
+ List headerList;
+ int contentLength = -1;
+ byte[] body;
+ do
+ {
+ headerList = new ArrayList();
+
+ ByteArrayOutputStream line;
+ line = new ByteArrayOutputStream();
+ for (;;)
+ {
+ int ch = input.read();
+ if (-1 == ch)
+ break; // EOF
+
+ if (ch != 0x0a) // LF
+ line.write(ch);
+ else
+ {
+ byte[] array = line.toByteArray();
+ if (array.length == 1) // the last is only a LF
+ break;
+
+ String headerLine = new String(array);
+ if (headerLine.length() > 15 &&
+ "Content-Length:".equalsIgnoreCase(headerLine.substring(0,15)))
+ {
+ contentLength = Integer.parseInt(headerLine.substring(15).trim());
+ }
+ headerList.add(headerLine);
+ line = new ByteArrayOutputStream();
+ }
+ }
+
+ if (contentLength > 0)
+ {
+ body = new byte[contentLength];
+ int pos = 0;
+ while (pos < contentLength)
+ {
+ int nr = input.read(body, pos, body.length - pos);
+ if (-1 == nr)
+ break;
+ pos += nr;
+ }
+ }
+ else
+ body = null;
+ contentLength = -1;
+ // Check everything
+ } while (processConnection(headerList, body));
+
+ // Clean up
+ output.close();
+ input.close();
+ socket.close();
+ }
+ catch (Exception e)
+ {
+ // ignore
+ }
+ }
+
+ protected void forceClosed()
+ {
+ try
+ {
+ socket.close();
+ }
+ catch (IOException ioe)
+ {
+ // Ignore.
+ }
+ }
+ }
+
+ boolean kill = false;
+ ServerSocket serverSocket;
+ ConnectionHandlerFactory connectionHandlerFactory;
+
+ /**
+ * Create a TestHttpServer on an unused port.
+ */
+ public TestHttpServer() throws IOException
+ {
+ serverSocket = new ServerSocket(0);
+ Thread t = new Thread(this, "TestHttpServer");
+ t.start();
+ }
+
+ /**
+ * The local port on which the test server is listening for connections.
+ * @return the port
+ */
+ public int getPort()
+ {
+ return serverSocket.getLocalPort();
+ }
+
+ public synchronized void setConnectionHandlerFactory(ConnectionHandlerFactory f)
+ {
+ connectionHandlerFactory = f;
+ }
+
+ /**
+ * This cleans up recources so more than one
+ * TestHttpServer can be used in one mauve run.
+ */
+ public void killTestServer()
+ {
+ kill = true;
+ closeAllConnections();
+ try
+ {
+ serverSocket.close();
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ }
+
+ private List activeConnections = new LinkedList();
+
+ /**
+ * Listens on the port and creates a Handler for
+ * incoming connections.
+ */
+ public void run()
+ {
+ try
+ {
+ while (! kill)
+ {
+ Socket socket = serverSocket.accept();
+ try
+ {
+ ConnectionHandlerFactory f;
+ synchronized(this)
+ {
+ f = connectionHandlerFactory;
+ }
+ ConnectionHandler request = f.newConnectionHandler(socket);
+ Thread thread = new Thread(request);
+ thread.start();
+ synchronized(activeConnections)
+ {
+ activeConnections.add(request);
+ }
+ }
+ catch (Exception e)
+ {
+ // ignore
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ }
+
+ public void closeAllConnections()
+ {
+ synchronized (activeConnections)
+ {
+ Iterator it = activeConnections.iterator();
+ while (it.hasNext())
+ {
+ ConnectionHandler request = (ConnectionHandler)it.next();
+ request.forceClosed();
+ it.remove();
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/fileNotFound.java b/gnu/testlet/java/net/HttpURLConnection/fileNotFound.java
new file mode 100644
index 00000000..72f48f4e
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/fileNotFound.java
@@ -0,0 +1,86 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Tests that a 404 condition.
+ */
+public class fileNotFound implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://www.redhat.com/mauve/testarea/edeltraut.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ conn.setRequestMethod("GET");
+
+ try
+ {
+ // connect does not throw a FNFE
+ conn.connect();
+ int code = conn.getResponseCode();
+ h.check(code == 404);
+ }
+ catch (FileNotFoundException e)
+ {
+ h.check(false);
+ }
+
+ try
+ {
+ // FNFE is thrown by calling getInputStream
+ conn.getInputStream();
+ h.check(false);
+ }
+ catch (FileNotFoundException e)
+ {
+ h.check(true);
+ }
+
+ // the errorstream must be set (at least our
+ // URL returns an error page
+ InputStream error = conn.getErrorStream();
+ h.check(error != null);
+
+ conn.disconnect();
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Unexpected error: " + e.getMessage ());
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/getOutputStream.java b/gnu/testlet/java/net/HttpURLConnection/getOutputStream.java
new file mode 100644
index 00000000..7520d386
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/getOutputStream.java
@@ -0,0 +1,89 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.ProtocolException;
+import java.net.URL;
+
+/**
+ * Test calling behaviour of getOutputStream. Implicit
+ * opening of connection, failing if doOutput is false ...
+ */
+public class getOutputStream implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(false);
+
+ try
+ {
+ // doOutput must be true to succeed
+ conn.getOutputStream();
+ h.check(false);
+ }
+ catch (ProtocolException e1)
+ {
+ h.check(true);
+ }
+
+ conn.setDoOutput(true);
+ // getOutputStream must implicit open the connection
+ OutputStream stream = conn.getOutputStream();
+
+ try
+ {
+ // and therefore throw this expection
+ // no other way to test if we are connected
+ conn.getRequestProperties();
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ // subsequent calls to getOutputStream must be ignored
+ // and the identical stream returned
+ OutputStream stream2 = conn.getOutputStream();
+ h.check(stream == stream2);
+
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Unexpected error: " + e.getMessage ());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/getRequestProperty.java b/gnu/testlet/java/net/HttpURLConnection/getRequestProperty.java
new file mode 100644
index 00000000..01d8441e
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/getRequestProperty.java
@@ -0,0 +1,55 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Tests the getRequestProperty method
+ */
+public class getRequestProperty implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ conn.setRequestMethod("GET");
+
+ String str = conn.getRequestProperty(null);
+ h.check(str == null);
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Unexpected error: " + e.getMessage ());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/illegalStateException.java b/gnu/testlet/java/net/HttpURLConnection/illegalStateException.java
new file mode 100644
index 00000000..4db442ac
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/illegalStateException.java
@@ -0,0 +1,181 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Test correct throwing of IllegalStateExceptions
+ * for the connected connection.
+ */
+public class illegalStateException implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ conn.setRequestMethod("GET");
+ conn.connect();
+
+ try
+ {
+ conn.getRequestProperties();
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ // For some reasons SUN does not whats defined
+ // in the API and does NOT throw a IllegalStateException
+ // for this method - Tested with JDK1.4/1.5
+ // to be compatible with SUN we also don't do it
+ try
+ {
+ conn.getRequestProperty("accept");
+ h.check(true);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(false);
+ }
+
+ try
+ {
+ conn.setDoInput(true);
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.setDoOutput(true);
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.setAllowUserInteraction(true);
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.setUseCaches(true);
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.setIfModifiedSince(100000L);
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.setRequestProperty("ssss", "dddd");
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ // if already connected the IllegalStateException
+ // must take precedence over the NPE
+ conn.setRequestProperty(null, "dddd");
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ h.check(false);
+ }
+
+ try
+ {
+ conn.addRequestProperty("ssss", "dddd");
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ // if already connected the IllegalStateException
+ // must take precedence over the NPE
+ conn.addRequestProperty(null, "dddd");
+ h.check(false);
+ }
+ catch (IllegalStateException e)
+ {
+ h.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ h.check(false);
+ }
+
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Unexpected error: " + e.getMessage ());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/nullPointerException.java b/gnu/testlet/java/net/HttpURLConnection/nullPointerException.java
new file mode 100644
index 00000000..53be48c9
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/nullPointerException.java
@@ -0,0 +1,76 @@
+//Tags: JDK1.1
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Test correct throwing of NPEs in unconnected connections.
+ */
+public class nullPointerException implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ conn.setRequestMethod("GET");
+
+ String str = conn.getRequestProperty(null);
+ h.check(str == null);
+
+ try
+ {
+ conn.setRequestProperty(null, "dddd");
+ h.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ h.check(true);
+ }
+
+ try
+ {
+ conn.addRequestProperty(null, "dddd");
+ h.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ h.check(true);
+ }
+
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Unexpected error: " + e.getMessage ());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/postHeaders.java b/gnu/testlet/java/net/HttpURLConnection/postHeaders.java
new file mode 100644
index 00000000..48c43ef7
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/postHeaders.java
@@ -0,0 +1,145 @@
+//Tags: JDK1.1
+//Uses: TestHttpServer
+
+//Copyright (C) 2006 David Daney <ddaney@avtrex.com>
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Tests that POST sends correct headers.
+ */
+public class postHeaders implements Testlet
+{
+ /**
+ * Starts an HTTP server and runs some tests
+ */
+ public void test(TestHarness h)
+ {
+ TestHttpServer server = null;
+ try
+ {
+ try
+ {
+ server = new TestHttpServer();
+ }
+ catch (IOException ioe)
+ {
+ h.debug(ioe);
+ h.fail("Could not start server");
+ return;
+ }
+
+ test_POST(h, server);
+ server.closeAllConnections();
+ }
+ finally
+ {
+ if (server != null)
+ server.killTestServer();
+ }
+ }
+
+ static class FactoryP1 implements TestHttpServer.ConnectionHandlerFactory
+ {
+ FactoryP1()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new HandlerP1(s);
+ }
+ }
+
+ static class HandlerP1 extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+
+ HandlerP1(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ String request = (String)headers.get(0);
+ String contentType = getHeaderFromList(headers, "content-type");
+ if (!request.startsWith("POST ")
+ || contentType == null
+ || !contentType.equals("application/x-www-form-urlencoded"))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 204 No Content\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return true;
+ }
+ }
+
+ public void test_POST(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ byte data[] = new byte[] {'M', 'e', 's', 's', 'a', 'g', 'e'};
+
+ h.checkPoint("POST-1");
+ server.setConnectionHandlerFactory(new FactoryP1());
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/file1");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(true);
+ OutputStream os = conn.getOutputStream();
+ os.write(data);
+ os.close();
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code, 204);
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/requestPropertiesTest.java b/gnu/testlet/java/net/HttpURLConnection/requestPropertiesTest.java
new file mode 100644
index 00000000..5d4ea88b
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/requestPropertiesTest.java
@@ -0,0 +1,178 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Various test for request properties.
+ */
+public class requestPropertiesTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ test_DefaultProperties(harness);
+ test_Properties(harness);
+ test_LowerUpperCaseProperties(harness);
+
+ }
+
+ // tests that nothing is done in the deprecated methods
+ public void test_DefaultProperties(TestHarness h)
+ {
+ h.checkPoint("Default properties");
+ URLConnection.setDefaultRequestProperty("Key", "Value");
+ h.check(URLConnection.getDefaultRequestProperty("Key"), null);
+ }
+
+ // test the various request properties methods
+ public void test_Properties(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://localhost:8080/");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ h.checkPoint("Standard properties tests");
+
+ // defaults to nothing - null returned
+ h.check(conn.getRequestProperty("Key") == null);
+
+ // set does actually add if nothing is there
+ conn.setRequestProperty("Key", "value");
+ h.check(conn.getRequestProperty("Key").equals("value"));
+
+ // replace value
+ conn.setRequestProperty("Key", "value2");
+ h.check(conn.getRequestProperty("Key").equals("value2"));
+
+ // add some stuff
+ conn.addRequestProperty("Anotherkey", "value");
+ conn.addRequestProperty("Anotherkey", "value2");
+
+ // the last is returned
+ h.check(conn.getRequestProperty("Anotherkey").equals("value2"));
+
+
+ h.checkPoint("Map properties tests");
+ Map props = conn.getRequestProperties();
+
+ // must be 2 items
+ h.check(props.size(), 2);
+
+ Object obj = props.get("Anotherkey");
+ if (obj instanceof List)
+ {
+ h.check(true);
+ List list = (List) obj;
+ h.check(list.size(), 2);
+ h.check(list.get(0), "value2");
+ }
+ else
+ h.check(false);
+
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ catch (Exception e)
+ {
+ h.debug("Unexpected Exception");
+ h.debug(e);
+ }
+ }
+
+ // test the case sensitiveness for request properties
+ public void test_LowerUpperCaseProperties(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://localhost:8080/");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ h.checkPoint("LowerUpperCase request properties tests");
+
+ conn.addRequestProperty("Key", "value");
+
+ // getRequestProperty is case insensitiv
+ h.check(conn.getRequestProperty("key").equals("value"));
+
+ // replacement of value does not replace the key name
+ // however replacement is case insensitiv
+ conn.setRequestProperty("key", "value2");
+ h.check(conn.getRequestProperty("key").equals("value2"));
+
+ // add some stuff
+ conn.addRequestProperty("Anotherkey", "value");
+ conn.addRequestProperty("anotherkey", "value2");
+ conn.addRequestProperty("anotherkey", "value3");
+
+ // get is case insensitiv
+ h.check(conn.getRequestProperty("Anotherkey").equals("value3"));
+
+ Map props = conn.getRequestProperties();
+ h.check(props.size(), 3);
+
+ List l = (List) props.get("anotherkey");
+ h.check(l.size(), 2);
+ h.check(l.get(0).equals("value3"));
+
+ l = (List) props.get("Key");
+ h.check(l.size(), 1);
+ h.check(l.get(0).equals("value2"));
+
+ // if more values exist only the last one is replaced
+ conn.setRequestProperty("anotherkey", "XXXX");
+ h.check(conn.getRequestProperty("Anotherkey").equals("XXXX"));
+
+ // only the last one is replaced !
+ props = conn.getRequestProperties();
+ l = (List) props.get("anotherkey");
+ h.check(l.get(1).equals("value2"));
+
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ catch (Exception e)
+ {
+ h.debug("Unexpected Exception");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java b/gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java
new file mode 100644
index 00000000..b04d1ef8
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/responseCodeTest.java
@@ -0,0 +1,165 @@
+//Tags: JDK1.1
+//Uses: TestHttpServer
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Tests correct behaviour of getInputStream(), getErrorStream()
+ * for all error response codes.
+ */
+public class responseCodeTest implements Testlet
+{
+ /**
+ * Starts an HTTP server and calls
+ * the test_ResponseCode for the error codes.
+ */
+ public void test(TestHarness h)
+ {
+ TestHttpServer server = null;
+ try
+ {
+ try
+ {
+ server = new TestHttpServer();
+ }
+ catch (IOException ioe)
+ {
+ h.debug(ioe);
+ h.fail("Could not start server");
+ return;
+ }
+
+ for (int i=400; i < 418; i++)
+ test_ResponseCode(i, h, server);
+
+ for (int i=500; i < 506; i++)
+ test_ResponseCode(i, h, server);
+ }
+ finally
+ {
+ if (server != null)
+ server.killTestServer();
+ }
+ }
+
+ static class Factory implements TestHttpServer.ConnectionHandlerFactory
+ {
+ private int responseCode;
+ Factory(int responseCode)
+ {
+ this.responseCode = responseCode;
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new Handler(s, responseCode);
+ }
+ }
+
+ static class Handler extends TestHttpServer.ConnectionHandler
+ {
+ private int responseCode;
+ private Writer sink;
+
+ Handler(Socket socket, int responseCode) throws IOException
+ {
+ super(socket);
+ this.responseCode = responseCode;
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ sink.write("HTTP/1.0 " + responseCode + " OK\r\n");
+ sink.write("Server: TestServer\r\n\r\n");
+ sink.close();
+ return false;
+ }
+ }
+
+ public void test_ResponseCode(int responseCode,
+ TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ server.setConnectionHandlerFactory(new Factory(responseCode));
+ URL url = new URL("http://localhost:" + server.getPort() + "/");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ h.checkPoint("Test " + responseCode + " response");
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code == responseCode);
+
+ // getInputStream should always throw an IOException
+ try
+ {
+ conn.getInputStream();
+ h.check(false);
+ }
+ catch (IOException e)
+ {
+ // for a 404/410 it must be a FNFE
+ if (responseCode == 404
+ || responseCode == 410)
+ {
+ // Since JDK 1.5 as FNFE is thrown - so this will fail for 1.4
+ if (e instanceof FileNotFoundException)
+ h.check(true);
+ else
+ h.check(false);
+ }
+ else
+ h.check(true);
+ }
+
+ // the errorstream must be set always
+ InputStream error = conn.getErrorStream();
+ h.check(error != null);
+
+ conn.disconnect();
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java b/gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java
new file mode 100644
index 00000000..d58ed81e
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/responseHeadersTest.java
@@ -0,0 +1,319 @@
+//Tags: JDK1.4
+//Uses: TestHttpServer
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+public class responseHeadersTest implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestHttpServer server = null;
+ try
+ {
+ try
+ {
+ server = new TestHttpServer();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.fail("Could not start server");
+ return;
+ }
+ test_MultiHeaders(harness, server);
+ test_LowerUpperCaseHeaders(harness, server);
+ }
+ finally
+ {
+ server.killTestServer();
+ }
+ }
+
+ static class Factory implements TestHttpServer.ConnectionHandlerFactory
+ {
+ private String headers;
+ Factory(String headers)
+ {
+ this.headers = headers;
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new Handler(s, headers);
+ }
+ }
+
+ static class Handler extends TestHttpServer.ConnectionHandler
+ {
+ private String responseHeaders;
+ private Writer sink;
+
+ Handler(Socket socket, String headers) throws IOException
+ {
+ super(socket);
+ this.responseHeaders = headers;
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ sink.write(responseHeaders);
+ sink.close();
+ return false;
+ }
+ }
+
+ public void test_MultiHeaders(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ Factory f = new Factory(
+ "HTTP/1.0 200 OK\r\n" +
+ "Server: TestServer\r\n" +
+ "Key1: value, value2\r\n" +
+ // set the header a second time with different values
+ // these values must be prepended to key1
+ "Key1: value3\r\n" +
+ "IntHeader: 1234\r\n" +
+ "IntHeaderMalformed: 1234XY\r\n" +
+ "DateHeader: Thu, 02 Mar 2006 14:34:55 +0000\r\n" +
+ "DateHeaderMalformed: Thu, 02 Mar 2006V 14:13:07 +0000\r\n\r\n"
+ );
+
+ server.setConnectionHandlerFactory(f);
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ h.checkPoint("getHeaderFields()");
+ Map fields = conn.getHeaderFields();
+
+ // check that map is unmodifiable
+ try
+ {
+ fields.clear();
+ h.check(false);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ h.check(true);
+ }
+
+ // exactly 7 headers with status and server header
+ h.check(fields.size() == 7);
+
+ // check for list and that case matters for key
+ Object obj = fields.get("Key1");
+ if (! (obj instanceof List))
+ h.check(false);
+ else
+ {
+ h.check(true);
+ List value = (List) obj;
+ h.check(value.size() == 2);
+ h.check(value.get(0).equals("value3"));
+ h.check(value.get(1).equals("value, value2"));
+
+ // check that it is an unmodifiable list
+ try
+ {
+ value.remove(0);
+ h.check(false);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ h.check(true);
+ }
+ }
+
+ // wrong case for key
+ obj = fields.get("key1");
+ h.check(obj == null);
+
+
+ // checks for getHeaderField/Key(int)
+ h.checkPoint("getHeaderField(int)");
+ // check that index 0 is the statusline
+ String statusline = conn.getHeaderField(0);
+ h.check(statusline.equals("HTTP/1.0 200 OK"));
+ // indexes out of bound must return null
+ String aboutIndex = conn.getHeaderField(44);
+ h.check(aboutIndex == null);
+ String belowIndex = conn.getHeaderField(-1);
+ h.check(belowIndex == null);
+ // check that correct key/value name is returned
+ String key1_Value = conn.getHeaderField(2);
+ h.check(key1_Value.equals("value, value2"));
+
+ h.checkPoint("getHeaderFieldKey(int)");
+ // check that index 0 is the statusline
+ String statuslineKey = conn.getHeaderFieldKey(0);
+ h.check(statuslineKey == null);
+ // indexes out of bound must return null
+ String aboutIndexKey = conn.getHeaderFieldKey(44);
+ h.check(aboutIndexKey == null);
+ String belowIndexKey = conn.getHeaderFieldKey(-1);
+ h.check(belowIndexKey == null);
+ // check that correct key/value name is returned
+ String key1_Key = conn.getHeaderFieldKey(2);
+ h.check(key1_Key.equals("Key1"));
+
+
+ // checks getHeaderFieldDate
+ h.checkPoint("getHeaderFieldDate()");
+ // correct date header field
+ long dateHeader = conn.getHeaderFieldDate("DateHeader", 5555);
+ h.check(dateHeader == 1141310095000L);
+ // missing date header field
+ dateHeader = conn.getHeaderFieldDate("DateHeaderXX", 5555);
+ h.check(dateHeader == 5555);
+ // malformed date header value
+ dateHeader = conn.getHeaderFieldDate("DateHeaderMalformed", 5555);
+ h.check(dateHeader == 5555);
+
+ // checks getHeaderFieldInt
+ h.checkPoint("getHeaderFieldInt()");
+ // correct int header field
+ int intHeader = conn.getHeaderFieldInt("IntHeader", 5555);
+ h.check(intHeader == 1234);
+ // missing int header field
+ intHeader = conn.getHeaderFieldInt("IntHeaderXX", 5555);
+ h.check(intHeader == 5555);
+ // malformed int header value
+ intHeader = conn.getHeaderFieldInt("IntHeaderMalformed", 5555);
+ h.check(intHeader == 5555);
+
+
+ // checks that the convenience methods of the headers
+ // not set in this test return the correct default values
+ h.checkPoint("convenience methods");
+ h.check(conn.getLastModified() == 0);
+ h.check(conn.getDate() == 0);
+ h.check(conn.getExpiration() == 0);
+ h.check(conn.getContentEncoding() == null);
+ h.check(conn.getContentType() == null);
+ h.check(conn.getContentLength() == -1);
+
+
+ // checks getHeaderField(String)
+ h.checkPoint("getHeaderField(String)");
+ String field = conn.getHeaderField("Server");
+ String field1 = conn.getHeaderField("server");
+ h.check(field.equals("TestServer"));
+ h.check(field == field1);
+
+ String none = conn.getHeaderField("NotExistent");
+ h.check(none == null);
+
+ // check for multiple times same key
+ String field_key1 = conn.getHeaderField("Key1");
+ h.check(field_key1.equals("value3"));
+
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ catch (RuntimeException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+
+ }
+
+ public void test_LowerUpperCaseHeaders(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ Factory f = new Factory(
+ "HTTP/1.0 200 OK\r\n" +
+ "Server: TestServer\r\n" +
+ "AnotherKey: value\r\n" +
+ "Key: value\r\n" +
+ "Key: value1\r\n" +
+ "key: value2\r\n" +
+ "key: value3\r\n\r\n"
+ );
+ server.setConnectionHandlerFactory(f);
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+
+ h.checkPoint("LowerUpperCase header fields tests");
+
+ Map fields = conn.getHeaderFields();
+
+ // exactly 5 headers with status and server header
+ h.check(fields.size() == 5);
+
+ // check for list and that case matters for key
+ List value = (List) fields.get("Key");
+ h.check(value.size() == 2);
+ h.check(value.get(0).equals("value1"));
+
+ List value2 = (List) fields.get("key");
+ h.check(value2.size() == 2);
+ h.check(value2.get(0).equals("value3"));
+
+ List value3 = (List) fields.get("AnotherKey");
+ h.check(value3.get(0).equals("value"));
+
+ value3 = (List) fields.get("anotherkey");
+ h.check(value3 == null);
+
+ // checks getHeaderField(String)
+ String field = conn.getHeaderField("Key");
+ String field1 = conn.getHeaderField("key");
+ h.check(field.equals("value3"));
+ h.check(field == field1);
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ catch (RuntimeException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/reuseConnection.java b/gnu/testlet/java/net/HttpURLConnection/reuseConnection.java
new file mode 100644
index 00000000..a4d4948f
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/reuseConnection.java
@@ -0,0 +1,547 @@
+//Tags: JDK1.1
+//Uses: TestHttpServer
+
+//Copyright (C) 2006 David Daney <ddaney@avtrex.com>
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Tests correct behaviour of keep-alive connections.
+ */
+public class reuseConnection implements Testlet
+{
+ /**
+ * Starts an HTTP server and runs some tests
+ */
+ public void test(TestHarness h)
+ {
+ TestHttpServer server = null;
+ try
+ {
+ try
+ {
+ server = new TestHttpServer();
+ }
+ catch (IOException ioe)
+ {
+ h.debug(ioe);
+ h.fail("Could not start server");
+ return;
+ }
+
+ test_GET(h, server);
+ server.closeAllConnections();
+ test_HEAD(h, server);
+ server.closeAllConnections();
+ test_POST(h, server);
+ server.closeAllConnections();
+ }
+ finally
+ {
+ if (server != null)
+ server.killTestServer();
+ }
+ }
+
+ static class FactoryP1 implements TestHttpServer.ConnectionHandlerFactory
+ {
+ FactoryP1()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new HandlerP1(s);
+ }
+ }
+
+ static class HandlerP1 extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+ private int requestNumber;
+
+ HandlerP1(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ requestNumber++;
+ String request = (String)headers.get(0);
+ if (!request.startsWith("POST "))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 204 No Content\r\n");
+
+ if (request.indexOf("file1") != -1)
+ {
+ sink.write("Server: TestServer1\r\n");
+ }
+ else if (requestNumber == 2)
+ {
+ sink.write("Server: TestServer2\r\n");
+ }
+ else
+ {
+ sink.write("Server: TestServer3\r\n");
+ }
+
+ sink.write("\r\n");
+ sink.flush();
+ return requestNumber < 2;
+ }
+ }
+
+ static class FactoryG1 implements TestHttpServer.ConnectionHandlerFactory
+ {
+ FactoryG1()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new HandlerG1(s);
+ }
+ }
+
+ static class HandlerG1 extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+ private int requestNumber;
+
+ HandlerG1(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ boolean hello = false;
+ boolean goodBye = false;
+ boolean err = false;
+
+ requestNumber++;
+ String request = (String)headers.get(0);
+ if (!request.startsWith("GET "))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 200 OK\r\n");
+ sink.write("Server: TestServer\r\n");
+
+ if (request.indexOf("file1") != -1)
+ {
+ sink.write("Content-Length: 5\r\n");
+ hello = true;
+ }
+ else if (requestNumber == 2)
+ {
+ sink.write("Content-Length: 8\r\n");
+ sink.write("Connection: close\r\n");
+ goodBye = true;
+ }
+ else
+ {
+ sink.write("Content-Length: 3\r\n");
+ err = true;
+ }
+
+ sink.write("\r\n");
+ if (hello)
+ sink.write("Hello");
+ else if (goodBye)
+ sink.write("Good Bye");
+ else if (err)
+ sink.write("Err");
+
+ sink.flush();
+ return requestNumber < 2;
+ }
+ }
+
+ static class FactoryH1 implements TestHttpServer.ConnectionHandlerFactory
+ {
+ FactoryH1()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new HandlerH1(s);
+ }
+ }
+
+ static class HandlerH1 extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+ private int requestNumber;
+
+ HandlerH1(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ requestNumber++;
+ String request = (String)headers.get(0);
+ if (!request.startsWith("HEAD "))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 200 OK\r\n");
+ sink.write("Server: TestServer\r\n");
+
+ if (request.indexOf("file1") != -1)
+ sink.write("Content-Length: 100000\r\n");
+ else if (requestNumber == 2)
+ {
+ sink.write("Content-Length: 200000\r\n");
+ sink.write("Connection: close\r\n");
+ }
+ else
+ sink.write("Content-Length: 300000\r\n");
+
+ sink.write("\r\n");
+ sink.flush();
+ return requestNumber < 2;
+ }
+ }
+
+ static class FactoryH2 implements TestHttpServer.ConnectionHandlerFactory
+ {
+ FactoryH2()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new HandlerH2(s);
+ }
+ }
+
+ static class HandlerH2 extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+ private int requestNumber;
+
+ HandlerH2(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ requestNumber++;
+ String request = (String)headers.get(0);
+ if (!request.startsWith("HEAD "))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 200 OK\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Transfer-Encoding: chunked\r\n");
+
+ if (request.indexOf("fileA") != -1)
+ sink.write("Content-Type: text/html\r\n");
+ else if (requestNumber == 2)
+ {
+ sink.write("Content-Type: text/plain\r\n");
+ sink.write("Connection: close\r\n");
+ }
+ else
+ sink.write("Content-Type: application/octet-stream\r\n");
+
+ sink.write("\r\n");
+ sink.flush();
+ return requestNumber < 2;
+ }
+ }
+
+ public void test_HEAD(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ h.checkPoint("HEAD-1");
+
+ server.setConnectionHandlerFactory(new FactoryH1());
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/file1");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("HEAD");
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code, 200);
+ int contentLength = conn.getContentLength();
+ h.check(contentLength, 100000);
+
+ InputStream s = conn.getInputStream();
+ int v = s.read();
+ h.check(v, -1); // Must be EOF.
+
+ // The errorstream must not be set.
+ InputStream error = conn.getErrorStream();
+ h.check(error, null);
+
+ h.checkPoint("HEAD-2");
+
+ url = new URL("http://localhost:" + server.getPort() + "/file2");
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("HEAD");
+
+ // test the responsecode
+ code = conn.getResponseCode();
+ h.check(code, 200);
+ contentLength = conn.getContentLength();
+ h.check(contentLength, 200000);
+
+ s = conn.getInputStream();
+ v = s.read();
+ h.check(v, -1); // Must be EOF.
+
+ // The errorstream must not be set.
+ error = conn.getErrorStream();
+ h.check(error, null);
+
+ // Now on a new connection reporting chuncked.
+ server.setConnectionHandlerFactory(new FactoryH2());
+
+ h.checkPoint("HEAD-3");
+
+ url = new URL("http://localhost:" + server.getPort() + "/fileA");
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("HEAD");
+
+ // test the responsecode
+ code = conn.getResponseCode();
+ h.check(code, 200);
+ String contentType = conn.getContentType();
+ h.check(contentType, "text/html");
+
+ s = conn.getInputStream();
+ v = s.read();
+ h.check(v, -1); // Must be EOF.
+
+ // The errorstream must not be set.
+ error = conn.getErrorStream();
+ h.check(error, null);
+
+ h.checkPoint("HEAD-4");
+
+ url = new URL("http://localhost:" + server.getPort() + "/fileB");
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("HEAD");
+
+ // test the responsecode
+ code = conn.getResponseCode();
+ h.check(code, 200);
+ contentType = conn.getContentType();
+ h.check(contentType, "text/plain");
+
+ s = conn.getInputStream();
+ v = s.read();
+ h.check(v, -1); // Must be EOF.
+
+ // The errorstream must not be set.
+ error = conn.getErrorStream();
+ h.check(error, null);
+
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+
+ private static int readFully(InputStream is, byte d[]) throws IOException
+ {
+ int pos = 0;
+ int c;
+
+ while (pos < d.length)
+ {
+ c = is.read(d, pos, d.length - pos);
+ if (c == -1)
+ {
+ if (pos == 0)
+ return -1;
+ else
+ break;
+ }
+ pos += c;
+ }
+ return pos;
+ }
+
+ public void test_GET(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ byte data[] = new byte[100];
+
+ h.checkPoint("GET-1");
+
+ server.setConnectionHandlerFactory(new FactoryG1());
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/file1");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code, 200);
+ int contentLength = conn.getContentLength();
+ h.check(contentLength, 5);
+
+ InputStream s = conn.getInputStream();
+ int v = readFully(s, data);
+ h.check(v, 5);
+
+ // The errorstream must not be set.
+ InputStream error = conn.getErrorStream();
+ h.check(error, null);
+
+ h.checkPoint("GET-2");
+
+ url = new URL("http://localhost:" + server.getPort() + "/file2");
+ conn = (HttpURLConnection) url.openConnection();
+
+ // test the responsecode
+ code = conn.getResponseCode();
+ h.check(code, 200);
+ contentLength = conn.getContentLength();
+ h.check(contentLength, 8);
+
+ s = conn.getInputStream();
+ v = readFully(s, data);
+ h.check(v, 8);
+
+ // The errorstream must not be set.
+ error = conn.getErrorStream();
+ h.check(error, null);
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+
+ public void test_POST(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ byte data[] = new byte[] {'M', 'e', 's', 's', 'a', 'g', 'e'};
+
+ h.checkPoint("POST-1");
+ server.setConnectionHandlerFactory(new FactoryP1());
+
+ URL url = new URL("http://localhost:" + server.getPort() + "/file1");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(true);
+ OutputStream os = conn.getOutputStream();
+ os.write(data);
+ os.close();
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code, 204);
+ String serverName = conn.getHeaderField("Server");
+ h.check(serverName, "TestServer1");
+
+ // The errorstream must not be set.
+ InputStream error = conn.getErrorStream();
+ h.check(error, null);
+
+ h.checkPoint("POST-2");
+ url = new URL("http://localhost:" + server.getPort() + "/file2");
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(true);
+ os = conn.getOutputStream();
+ os.write(data);
+ os.close();
+
+ // test the responsecode
+ code = conn.getResponseCode();
+ h.check(code, 204);
+ serverName = conn.getHeaderField("Server");
+ h.check(serverName, "TestServer2");
+
+ // The errorstream must not be set.
+ error = conn.getErrorStream();
+ h.check(error, null);
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/HttpURLConnection/timeout.java b/gnu/testlet/java/net/HttpURLConnection/timeout.java
new file mode 100644
index 00000000..1eb172c7
--- /dev/null
+++ b/gnu/testlet/java/net/HttpURLConnection/timeout.java
@@ -0,0 +1,260 @@
+//Tags: JDK1.5
+//Uses: TestHttpServer
+
+//Copyright (C) 2006 David Daney <ddaney@avtrex.com>
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.java.net.HttpURLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Tests correct behaviour of keep-alive connections.
+ */
+public class timeout implements Testlet
+{
+ /**
+ * Starts an HTTP server and runs some tests
+ */
+ public void test(TestHarness h)
+ {
+ TestHttpServer server = null;
+ try
+ {
+ try
+ {
+ server = new TestHttpServer();
+ }
+ catch (IOException ioe)
+ {
+ h.debug(ioe);
+ h.fail("Could not start server");
+ return;
+ }
+
+ testReadTimeout(h, server);
+ server.closeAllConnections();
+ testConnectTimeout(h);
+ }
+ finally
+ {
+ if (server != null)
+ server.killTestServer();
+ }
+ }
+
+ static class Factory implements TestHttpServer.ConnectionHandlerFactory
+ {
+ Factory()
+ {
+ }
+
+ public TestHttpServer.ConnectionHandler newConnectionHandler(Socket s)
+ throws IOException
+ {
+ return new Handler(s);
+ }
+ }
+
+ static class Handler extends TestHttpServer.ConnectionHandler
+ {
+ private Writer sink;
+
+ Handler(Socket socket) throws IOException
+ {
+ super(socket);
+ sink = new OutputStreamWriter(output,"US-ASCII");
+ }
+
+ protected boolean processConnection(List headers, byte[] body)
+ throws IOException
+ {
+ boolean closeme = false;
+ String request = (String)headers.get(0);
+ if (!request.startsWith("GET "))
+ {
+ sink.write("HTTP/1.1 400 Bad Request\r\n");
+ sink.write("Server: TestServer\r\n");
+ sink.write("Connection: close\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ return false;
+ }
+ sink.write("HTTP/1.1 200 OK\r\n");
+ sink.write("Server: TestServer\r\n");
+ if (request.indexOf("closeme") != -1)
+ {
+ sink.write("Connection: close\r\n");
+ closeme = true;
+ }
+ sink.write("Content-Length: 7\r\n");
+ sink.write("\r\n");
+ sink.flush();
+ try
+ {
+ Thread.sleep(10000);
+ }
+ catch (InterruptedException ie)
+ {
+ // Ignore.
+ }
+ sink.write("Hello\r\n");
+ sink.flush();
+ return !closeme;
+ }
+ }
+
+ private static int readFully(InputStream is, byte d[]) throws IOException
+ {
+ int pos = 0;
+ int c;
+
+ while (pos < d.length)
+ {
+ c = is.read(d, pos, d.length - pos);
+ if (c == -1)
+ {
+ if (pos == 0)
+ return -1;
+ else
+ break;
+ }
+ pos += c;
+ }
+ return pos;
+ }
+
+ private void testReadTimeout(TestHarness h, TestHttpServer server)
+ {
+ try
+ {
+ byte data[] = new byte[100];
+
+ h.checkPoint("read-1");
+
+ server.setConnectionHandlerFactory(new Factory());
+ // Simple read timeout.
+ URL url = new URL("http://127.0.0.1:" + server.getPort() + "/closeme");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setReadTimeout(5000);
+ try
+ {
+ // test the responsecode
+ int code = conn.getResponseCode();
+ InputStream s = conn.getInputStream();
+ int v = readFully(s, data);
+ // It should time out and never get here.
+ h.check(false);
+ }
+ catch (IOException ioe)
+ {
+ // It should timeout.
+ h.check(true);
+ }
+
+ h.checkPoint("read-2");
+ // Normal read. No timeout.
+ url = new URL("http://127.0.0.1:" + server.getPort() + "/foo");
+ conn = (HttpURLConnection) url.openConnection();
+
+ // test the responsecode
+ int code = conn.getResponseCode();
+ h.check(code, 200);
+
+ InputStream s = conn.getInputStream();
+ int v = readFully(s, data);
+ s.close();
+ h.check(v, 7);
+
+ h.checkPoint("read-3");
+ // Set timeout on a reused connection.
+ url = new URL("http://127.0.0.1:" + server.getPort() + "/bar");
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setReadTimeout(5000);
+ try
+ {
+ // test the responsecode
+ code = conn.getResponseCode();
+ s = conn.getInputStream();
+ v = readFully(s, data);
+ // It should time out and never get here.
+ h.check(false);
+ }
+ catch (IOException ioe)
+ {
+ // It should timeout.
+ h.check(true);
+ }
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+
+private void testConnectTimeout(TestHarness h)
+ {
+ try
+ {
+ byte data[] = new byte[100];
+
+ h.checkPoint("connect-1");
+
+ // pick an address that will not be globally routable, but is also
+ // not on our local network. This should generate a connection
+ // timeout.
+ URL url = new URL("http://10.20.30.40:/foo");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ long start = System.currentTimeMillis();
+ conn.setConnectTimeout(3000);
+ try
+ {
+ // test the responsecode
+ int code = conn.getResponseCode();
+ InputStream s = conn.getInputStream();
+ int v = readFully(s, data);
+ // It should time out and never get here.
+ h.check(false);
+ }
+ catch (IOException ioe)
+ {
+ // It should timeout.
+ long end = System.currentTimeMillis();
+ long delta = end - start;
+ h.check((delta > 0) && (delta < 5000));
+ }
+ }
+ catch (IOException e)
+ {
+ h.debug("Unexpected IOException");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/CVS/Entries b/gnu/testlet/java/net/InetAddress/CVS/Entries
new file mode 100644
index 00000000..5bc8b8e4
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/CVS/Entries
@@ -0,0 +1,10 @@
+/IPv6.java/1.1/Wed Nov 17 06:55:46 2004//
+/InetAddressTest.java/1.7/Thu Oct 14 06:38:41 2004//
+/getAllByName.java/1.3/Fri Sep 8 08:54:06 2006//
+/getByAddress.java/1.1/Thu Feb 3 00:42:43 2005//
+/getByName.java/1.1/Fri Aug 13 21:59:26 2004//
+/getCanonicalHostName.java/1.1/Wed Oct 13 07:16:10 2004//
+/getLocalHost.java/1.1/Fri Aug 13 21:59:26 2004//
+/isSiteLocalAddress.java/1.1/Mon Jan 3 11:08:57 2005//
+/security.java/1.3/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/net/InetAddress/CVS/Repository b/gnu/testlet/java/net/InetAddress/CVS/Repository
new file mode 100644
index 00000000..c1dc52f6
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/InetAddress
diff --git a/gnu/testlet/java/net/InetAddress/CVS/Root b/gnu/testlet/java/net/InetAddress/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/InetAddress/IPv6.java b/gnu/testlet/java/net/InetAddress/IPv6.java
new file mode 100644
index 00000000..1251a7d6
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/IPv6.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+/*
+ 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.java.net.InetAddress;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class IPv6 implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ String name ="1010:0:0:0:0:2020:0:1";
+ byte[] ipaddr = { 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00, 0x20, 0x20, 0x0, 0x0, 0x0, 0x1 };
+ InetAddress addr = InetAddress.getByAddress(ipaddr);
+
+ h.check(addr.getHostAddress(), name, "wrong ip string");
+ h.check(addr.getHostName(), name, "wrong hostname");
+ h.check(addr.getCanonicalHostName(), name, "wrong canonical hostname");
+ h.check(addr.toString(), name + "/" + name, "wrong string representation");
+ }
+ catch (UnknownHostException e)
+ {
+ h.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/InetAddressTest.java b/gnu/testlet/java/net/InetAddress/InetAddressTest.java
new file mode 100644
index 00000000..5237ef83
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/InetAddressTest.java
@@ -0,0 +1,220 @@
+// Tags: JDK1.0
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.InetAddress;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class InetAddressTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.checkPoint("Basics");
+ InetAddress addr=null;
+ try {
+ addr = InetAddress.getLocalHost();
+ }
+ catch ( UnknownHostException e ){
+ e.printStackTrace();
+ harness.fail("Error : test_Basics failed - 0 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ harness.check ( !(addr.getHostName() == null),
+ "Error : test_Basics failed - 1" +
+ " Should not return null as the host name " );
+
+
+ harness.check ( !(addr.getHostAddress() == null),
+ "Error : test_Basics failed - 2" +
+ " Should not return null as the host address " );
+
+ harness.check ( !(addr.hashCode() == 0),
+ "Error : test_Basics failed - 3" +
+ " Should not return 0 as the hashcode " );
+
+
+ InetAddress addr1 = null;
+ try {
+ addr1 = InetAddress.getByName(addr.getHostName());
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ e.printStackTrace();
+ harness.fail("Error : test_Basics failed - 4 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+
+
+ harness.check ( addr, addr1, "Error : test_Basics failed - 5" +
+ " Both the addresses should be the same" );
+
+
+ harness.check ( addr1.getHostAddress(), addr.getHostAddress(),
+ "Error : test_Basics failed - 6" +
+ " Should return the host addresses the same" );
+
+
+ InetAddress addr2[] = null;
+ try {
+ addr2 = InetAddress.getAllByName(addr.getHostName());
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ e.printStackTrace();
+ harness.fail("Error : test_Basics failed - 7 " +
+ " Should not throw UnknownHostException here " );
+ }
+ catch ( Exception e ){
+ e.printStackTrace();
+ harness.fail("Error : test_Basics failed - 7 " +
+ " Should not throw Exception here " );
+ }
+
+
+ if ( addr2.length < 1 ) {
+ harness.fail("Error : test_Basics failed - 8 " +
+ "the address array should be of length 1 or larger" );
+ } else
+ harness.check(true);
+
+
+ harness.check ( addr2[0], addr1, "Error : test_Basics failed - 9" +
+ " Both the addresses should be the same" );
+
+ InetAddress addr3 = null;
+ try {
+ addr3 = InetAddress.getByName("savannah.gnu.org");
+ harness.check(true);
+ }
+ catch ( UnknownHostException e ){
+ e.printStackTrace();
+ harness.fail("Error : test_Basics failed - 10 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+
+ try {
+ harness.check((addr3.getHostName().equals("savannah.gnu.org")
+ || addr3.getHostName().equals("savannah")),
+ "test_Basics failed - 11 " +
+ " the hostname returned is not correct." );
+ } catch (NullPointerException npe) {
+ harness.check(false, "test_Basics failed - 11 - NullPointerException");
+ }
+
+ try {
+ String toStr = addr3.toString();
+ String toStr1 = addr3.getHostAddress();
+ if (toStr.indexOf(toStr1) == -1)
+ harness.fail("Error : test_Basics failed - 12 " +
+ " the host address returned is not correct." );
+ } catch (NullPointerException npe) {
+ harness.check(false, "test_Basics failed - 12 - NullPointerException");
+ }
+
+ //multicast test
+
+ InetAddress addr4 = null;
+ try {
+ addr4 = InetAddress.getByName("176.1.1.1");
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 13 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ if ( addr4.isMulticastAddress())
+ harness.fail("Error : test_Basics failed - 14 " +
+ " Should have returned false here " );
+
+ InetAddress addr5 = null;
+ try {
+ addr5 = InetAddress.getByName("238.255.255.255");
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 15 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ if ( !addr5.isMulticastAddress())
+ harness.fail("Error : test_Basics failed - 16 " +
+ " Should have returned true here " );
+
+
+ InetAddress addr6 = null;
+ try {
+ addr6 = InetAddress.getByName("224.0.0.1");
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 17 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ if ( !addr6.isMulticastAddress())
+ harness.fail("Error : test_Basics failed - 18 " +
+ " Should have returned true here " );
+
+ InetAddress addr7 = null;
+ try {
+ addr7 = InetAddress.getByName("229.35.35.1");
+ }
+ catch ( UnknownHostException e ){
+ harness.fail("Error : test_Basics failed - 19 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ if ( !addr7.isMulticastAddress())
+ harness.fail("Error : test_Basics failed - 20 " +
+ " Should have returned true here " );
+
+ InetAddress addr8 = null;
+ try {
+ addr8 = InetAddress.getByName("127.0.0.1");
+ }
+ catch (UnknownHostException e) {
+ harness.fail("Error : test_Basics failed - 21 " +
+ " Should not throw UnknownHostException here " );
+ }
+
+ if (! (addr8 instanceof Inet4Address))
+ harness.fail("Error : test_Basics failed - 22 " +
+ " Should have returned true here " );
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/InetAddress/getAllByName.java b/gnu/testlet/java/net/InetAddress/getAllByName.java
new file mode 100644
index 00000000..1a2f75c8
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/getAllByName.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.0
+
+/*
+ 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.java.net.InetAddress;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class getAllByName implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // getAllByName(null) should return the loopback address.
+ try
+ {
+ InetAddress[] addr = InetAddress.getAllByName(null);
+ harness.check(addr != null);
+ InetAddress loopback = addr[0];
+ harness.check(loopback != null);
+ harness.check(loopback.isLoopbackAddress());
+ }
+ catch (UnknownHostException x)
+ {
+ harness.fail(x.toString());
+ }
+
+ // so should getAllByName("")
+ try
+ {
+ InetAddress[] addr = InetAddress.getAllByName("");
+ harness.check(addr != null);
+ InetAddress loopback = addr[0];
+ harness.check(loopback != null);
+ harness.check(loopback.isLoopbackAddress());
+ }
+ catch (UnknownHostException x)
+ {
+ harness.fail(x.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/getByAddress.java b/gnu/testlet/java/net/InetAddress/getByAddress.java
new file mode 100644
index 00000000..ac2a0062
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/getByAddress.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Daney <ddaney@avtrex.com>
+
+// 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.java.net.InetAddress;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * Some checks for the getByAddress() and getAddress() methods in the
+ * {@link InetAddress} class.
+ */
+public class getByAddress implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testX(harness);
+ }
+
+ /**
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testX(TestHarness harness) {
+ byte[] a1 = new byte[] {1, 2, 3, 4};
+ InetAddress ia = null;
+ try
+ {
+ ia = InetAddress.getByAddress(a1);
+ }
+ catch (UnknownHostException uhe)
+ {
+ harness.check(false);
+ }
+
+ byte[] a2 = ia.getAddress();
+ harness.check(a2[0], (byte)1);
+ harness.check(a2[1], (byte)2);
+ harness.check(a2[2], (byte)3);
+ harness.check(a2[3], (byte)4);
+ harness.check(a2 != a1);
+
+ a1[0] = 5;
+ byte[] a3 = ia.getAddress();
+ harness.check(a3[0], (byte)1);
+ harness.check(a2 != a3);
+
+
+ byte[] a4 = new byte[] {1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16};
+ ia = null;
+ try
+ {
+ ia = InetAddress.getByAddress(a4);
+ }
+ catch (UnknownHostException uhe)
+ {
+ harness.check(false);
+ }
+
+ byte[] a5 = ia.getAddress();
+ harness.check(a5[0], (byte)1);
+ harness.check(a5[1], (byte)2);
+ harness.check(a5[2], (byte)3);
+ harness.check(a5[15], (byte)16);
+ harness.check(a5 != a4);
+
+ a4[0] = 5;
+ byte[] a6 = ia.getAddress();
+ harness.check(a6[0], (byte)1);
+ harness.check(a5 != a6);
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/getByName.java b/gnu/testlet/java/net/InetAddress/getByName.java
new file mode 100644
index 00000000..34ce9ee1
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/getByName.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.0
+
+/*
+ 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.java.net.InetAddress;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class getByName implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // getByName(null) should return the loopback address.
+ try
+ {
+ InetAddress addr = InetAddress.getByName(null);
+ harness.check(addr != null);
+ harness.check(addr.isLoopbackAddress());
+ }
+ catch (UnknownHostException x)
+ {
+ harness.fail(x.toString());
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/getCanonicalHostName.java b/gnu/testlet/java/net/InetAddress/getCanonicalHostName.java
new file mode 100644
index 00000000..501adf93
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/getCanonicalHostName.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+/*
+ 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.java.net.InetAddress;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class getCanonicalHostName implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ String host = "sources.redhat.com";
+ String canon = "sourceware.org";
+
+ InetAddress addr = InetAddress.getByName(host);
+
+ h.check(addr.getHostName().equals(host));
+ h.check(addr.getCanonicalHostName().equals(canon));
+ }
+ catch (UnknownHostException e)
+ {
+ h.fail(e.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/getLocalHost.java b/gnu/testlet/java/net/InetAddress/getLocalHost.java
new file mode 100644
index 00000000..00d3b34c
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/getLocalHost.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.0
+
+/*
+ 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.java.net.InetAddress;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class getLocalHost implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ InetAddress addr = InetAddress.getLocalHost();
+ harness.check(addr != null);
+ InetAddress addr2 = InetAddress.getByName(addr.getHostName());
+ harness.check(addr2 != null);
+ harness.check(addr.equals(addr2));
+ }
+ catch (UnknownHostException x)
+ {
+ harness.fail(x.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/isSiteLocalAddress.java b/gnu/testlet/java/net/InetAddress/isSiteLocalAddress.java
new file mode 100644
index 00000000..b85678df
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/isSiteLocalAddress.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+
+/*
+ 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.java.net.InetAddress;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class isSiteLocalAddress implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ // 10.0.0.0/8
+ h.check(InetAddress.getByAddress(new byte[] { (byte) 10, (byte) 0, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+ h.check(InetAddress.getByAddress(new byte[] { (byte) 10, (byte) 255, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) 9, (byte) 255, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) 11, (byte) 0, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+
+ // 172.16.0.0/12
+ h.check(InetAddress.getByAddress(new byte[] { (byte) 172, (byte) 16, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+ h.check(InetAddress.getByAddress(new byte[] { (byte) 172, (byte) 31, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) 172, (byte) 15, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) 172, (byte) 32, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+
+ // 192.168.0.0/16
+ h.check(InetAddress.getByAddress(new byte[] { (byte) (byte) 192, (byte) 168, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+ h.check(InetAddress.getByAddress(new byte[] { (byte) (byte) 192, (byte) 168, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) (byte) 192, (byte) 167, (byte) 255, (byte) 255 }).isSiteLocalAddress());
+ h.check(! InetAddress.getByAddress(new byte[] { (byte) (byte) 192, (byte) 169, (byte) 0, (byte) 0 }).isSiteLocalAddress());
+ }
+ catch (UnknownHostException e)
+ {
+ h.debug(e);
+ h.check(false, "unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetAddress/security.java b/gnu/testlet/java/net/InetAddress/security.java
new file mode 100644
index 00000000..81204dac
--- /dev/null
+++ b/gnu/testlet/java/net/InetAddress/security.java
@@ -0,0 +1,121 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.InetAddress;
+
+import java.net.InetAddress;
+import java.net.SocketPermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ InetAddress localhost = InetAddress.getLocalHost();
+ String hostname = localhost.getHostName();
+ harness.check(!hostname.equals(localhost.getHostAddress()));
+ byte[] hostaddr = localhost.getAddress();
+
+ Permission[] checkConnect = new Permission[] {
+ new SocketPermission(hostname, "resolve")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.InetAddress-getHostName
+ harness.checkPoint("getHostName");
+ try {
+ sm.prepareChecks(checkConnect);
+ InetAddress.getByAddress(hostaddr).getHostName();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.InetAddress-getCanonicalHostName
+ harness.checkPoint("getCanonicalHostName");
+ try {
+ sm.prepareChecks(checkConnect);
+ InetAddress.getByAddress(hostaddr).getCanonicalHostName();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.InetAddress-getByName
+ harness.checkPoint("getByName");
+ try {
+ sm.prepareChecks(checkConnect);
+ InetAddress.getByName(hostname);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.InetAddress-getAllByName
+ harness.checkPoint("getAllByName");
+ try {
+ sm.prepareChecks(checkConnect);
+ InetAddress.getAllByName(hostname);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.InetAddress-getLocalHost
+ harness.checkPoint("getLocalHost");
+ try {
+ sm.prepareChecks(checkConnect);
+ InetAddress.getLocalHost();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/InetSocketAddress/CVS/Entries b/gnu/testlet/java/net/InetSocketAddress/CVS/Entries
new file mode 100644
index 00000000..90129aad
--- /dev/null
+++ b/gnu/testlet/java/net/InetSocketAddress/CVS/Entries
@@ -0,0 +1,3 @@
+/InetSocketAddressTest.java/1.2/Wed Nov 17 21:30:14 2004//
+/createUnresolved.java/1.1/Wed Mar 8 08:11:47 2006//
+D
diff --git a/gnu/testlet/java/net/InetSocketAddress/CVS/Repository b/gnu/testlet/java/net/InetSocketAddress/CVS/Repository
new file mode 100644
index 00000000..110e60fe
--- /dev/null
+++ b/gnu/testlet/java/net/InetSocketAddress/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/InetSocketAddress
diff --git a/gnu/testlet/java/net/InetSocketAddress/CVS/Root b/gnu/testlet/java/net/InetSocketAddress/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/InetSocketAddress/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java b/gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java
new file mode 100644
index 00000000..f96787a7
--- /dev/null
+++ b/gnu/testlet/java/net/InetSocketAddress/InetSocketAddressTest.java
@@ -0,0 +1,252 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2004 Michael Koch
+
+ 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.java.net.InetSocketAddress;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+public class InetSocketAddressTest implements Testlet
+{
+ protected static TestHarness harness;
+
+ public void test_Constructors()
+ {
+ harness.checkPoint("Constructors");
+
+ InetSocketAddress sa = null;
+
+ try
+ {
+ sa = new InetSocketAddress (InetAddress.getLocalHost(), 1234);
+
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 0 "
+ + "Should not throw Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress ((InetAddress) null, 80);
+
+ harness.check (sa.getAddress().toString().equals ("0.0.0.0/0.0.0.0"),
+ "Error : test_Constructors failed - 1 "
+ + "No wildcard address returned");
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 1 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress (InetAddress.getLocalHost(), -1);
+
+ harness.fail ("Error: test_Contructors failed - 2 " +
+ "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 2 "
+ + "Unexpected Exception here");
+ }
+
+ try
+
+ {
+ sa = new InetSocketAddress (InetAddress.getLocalHost(), 65536);
+
+ harness.fail ("Error: test_Contructors failed - 3 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 3 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress (-1);
+
+ harness.fail ("Error: test_Contructors failed - 4 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 4 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress (65536);
+
+ harness.fail ("Error: test_Contructors failed - 5 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 5 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress ((String) null, 80);
+
+ harness.fail ("Error: test_Contructors failed - 7 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 7 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress ("localhost", -1);
+
+ harness.fail ("Error: test_Contructors failed - 8 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 8 "
+ + "Unexpected Exception here");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress ("localhost", 65536);
+
+ harness.fail ("Error: test_Contructors failed - 9 "
+ + "IllegalArgumentException expected here");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check (true);
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Constructors failed - 9 "
+ + "Unexpected Exception here");
+ }
+ }
+
+ public void test_Basics()
+ {
+ harness.checkPoint("Basics");
+
+ InetSocketAddress sa = null;
+
+ sa = new InetSocketAddress ("localhost", 80);
+
+ harness.check (sa.getPort() == 80, "Error : test_Basics failed - 1"
+ + " Returned wrong port number");
+
+ harness.check (sa.getHostName().equals("localhost"), "Error : test_Basics failed - 2"
+ + " Returned wrong host name");
+
+ try
+ {
+ byte[] ipaddr = { (byte) 127, (byte) 0, (byte) 0, (byte) 1 };
+ harness.check (sa.getAddress().equals(InetAddress.getByAddress ("localhost", ipaddr)), "Error : test_Basics failed - 3"
+ + " Returned wrong InetAdress object");
+ }
+ catch (UnknownHostException e)
+ {
+ harness.fail ("Error : test_Basics failed - 3"
+ + " Unexpected UnknownHostException");
+ }
+
+ try
+ {
+ byte[] ipaddr = { (byte) 1, (byte) 2, (byte) 3, (byte) 4 };
+ sa = new InetSocketAddress (InetAddress.getByAddress("foo.bar", ipaddr), 80);
+
+ harness.check (! sa.isUnresolved(), "Error : test_Basics failed - 4"
+ + " Unresolveable hostname got resolved");
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Basics failed - 4"
+ + " Unexpected UnknownHostException");
+ }
+
+ try
+ {
+ sa = new InetSocketAddress ("gcc.gnu.org", 80);
+ harness.check (! sa.isUnresolved(), "Error : test_Basics failed - 5"
+ + " Resolveable hostname got not resolved");
+ }
+ catch (Exception e)
+ {
+ harness.fail ("Error : test_Basics failed - 5"
+ + " Unexpected UnknownHostException");
+ }
+ }
+
+ public void testall()
+ {
+ test_Constructors();
+ test_Basics();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/InetSocketAddress/createUnresolved.java b/gnu/testlet/java/net/InetSocketAddress/createUnresolved.java
new file mode 100644
index 00000000..8902bfe1
--- /dev/null
+++ b/gnu/testlet/java/net/InetSocketAddress/createUnresolved.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.5
+
+/*
+ Copyright (C) 2006 Michael Koch
+
+ 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.java.net.InetSocketAddress;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class createUnresolved implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean ok = false;
+
+ try
+ {
+ InetSocketAddress.createUnresolved(null, 2000);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+
+ harness.check(ok);
+
+ ok = false;
+
+ try
+ {
+ InetSocketAddress.createUnresolved("www.classpath.org", -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+
+ harness.check(ok);
+
+ ok = false;
+
+ try
+ {
+ InetSocketAddress.createUnresolved("www.classpath.org", 65536);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+
+ harness.check(ok);
+
+ InetSocketAddress sa = InetSocketAddress.createUnresolved("www.classpath.org", 80);
+
+ harness.check(sa.isUnresolved());
+ }
+}
diff --git a/gnu/testlet/java/net/MulticastSocket/CVS/Entries b/gnu/testlet/java/net/MulticastSocket/CVS/Entries
new file mode 100644
index 00000000..eb01447c
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/CVS/Entries
@@ -0,0 +1,4 @@
+/MulticastClient.java/1.2/Thu Jun 3 14:31:11 2004//
+/MulticastServer.java/1.3/Thu Jun 3 14:31:11 2004//
+/MulticastSocketTest.java/1.5/Fri Oct 31 10:41:09 2003//
+D
diff --git a/gnu/testlet/java/net/MulticastSocket/CVS/Repository b/gnu/testlet/java/net/MulticastSocket/CVS/Repository
new file mode 100644
index 00000000..96e9b2bb
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/MulticastSocket
diff --git a/gnu/testlet/java/net/MulticastSocket/CVS/Root b/gnu/testlet/java/net/MulticastSocket/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/MulticastSocket/MulticastClient.java b/gnu/testlet/java/net/MulticastSocket/MulticastClient.java
new file mode 100644
index 00000000..2d2ff847
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/MulticastClient.java
@@ -0,0 +1,75 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.MulticastSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+class MulticastClient extends Thread {
+
+ protected static TestHarness harness;
+
+ public MulticastClient() {
+ try {
+ socket = new MulticastSocket(4446);
+ address = InetAddress.getByName("230.0.0.1");
+
+ socket.joinGroup(address);
+ clientPort = socket.getLocalPort();
+ }catch(Exception e){
+ System.out.println("Client constructor failed");
+ e.printStackTrace();
+ }
+ }
+
+ public void run() {
+ // System.out.println("Starting Client");
+ try {
+ for (;;) {
+ byte[] buf = new byte[256];
+ packet = new DatagramPacket(buf, buf.length);
+ socket.receive(packet);
+
+ String received = new String(packet.getData());
+ //System.out.println("Received: " + received);
+ if(received.startsWith("bye"))
+ break;
+ }
+ socket.leaveGroup(address);
+ socket.close();
+
+ }catch(Exception e){
+ System.out.println("Client run failed");
+ e.printStackTrace();
+ }
+ }
+
+ public int getPort() {
+ return clientPort;
+ }
+private int clientPort;
+private MulticastSocket socket;
+private InetAddress address;
+private DatagramPacket packet;
+}
diff --git a/gnu/testlet/java/net/MulticastSocket/MulticastServer.java b/gnu/testlet/java/net/MulticastSocket/MulticastServer.java
new file mode 100644
index 00000000..d2a460fe
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/MulticastServer.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.MulticastSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+class MulticastServer extends Thread {
+
+ protected static TestHarness harness;
+
+ private int serverPort;
+ private MulticastSocket socket;
+ private InetAddress address;
+ private DatagramPacket packet;
+
+ public MulticastServer(int nPort) {
+ try {
+ serverPort = nPort;
+ socket = new MulticastSocket();
+ address = InetAddress.getByName("230.0.0.1");
+ }
+ catch (Exception e) {
+ System.out.println("Server constructor");
+ e.printStackTrace();
+ }
+ }
+
+ public void run() {
+ //System.out.println("Starting Server");
+
+
+ try {
+ String[] cmd = new String[5];
+
+ cmd[0] = "hello";
+ cmd[1] = "there";
+ cmd[2] = "this is";
+ cmd[3] = "multicast";
+ cmd[4] = "bye";
+
+ for(int i = 0; i < 5; i++){
+ packet = new DatagramPacket(cmd[i].getBytes(), cmd[i].length(),
+ address, serverPort);
+ // System.out.println("Sent: " + cmd[i]);
+ socket.send(packet);
+ }
+ socket.close();
+ }
+ catch (Exception e) {
+ System.out.println("Server run failed");
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java b/gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java
new file mode 100644
index 00000000..278fdadb
--- /dev/null
+++ b/gnu/testlet/java/net/MulticastSocket/MulticastSocketTest.java
@@ -0,0 +1,250 @@
+// Tags: JDK1.1
+// Uses: MulticastServer MulticastClient
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.MulticastSocket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+public class MulticastSocketTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ MulticastSocket socket;
+ int nPort = 0;
+
+ // Test for incorrect ipaddress, port and a port in use.
+
+ try {
+ socket = new MulticastSocket(4441);
+ InetAddress address = InetAddress.getByName("15.0.0.1");
+ socket.joinGroup(address);
+ harness.fail("Wrong ipaddress arg. - 1");
+ } catch (IOException e) {
+ harness.check(true);
+ }
+
+
+ try {
+ socket = new MulticastSocket(-1);
+ harness.fail("Wrong port arg. - 2");
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+
+ } catch (Exception e) {
+ harness.check(true);
+ }
+
+
+ try {
+ socket = new MulticastSocket(0);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ socket.leaveGroup(address);
+ socket.close();
+ harness.check(true);
+ } catch (Exception e) {
+ harness.fail("Correct args. - 3");
+ harness.debug(e);
+ }
+
+
+ try {
+ socket = new MulticastSocket();
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ nPort = socket.getLocalPort();
+ socket.joinGroup(address);
+ socket.leaveGroup(address);
+ socket.close();
+ harness.check(true);
+ } catch (Exception e) {
+ harness.fail("Correct args. different constructor. - 4");
+ harness.debug(e);
+ }
+
+
+ try {
+ socket = new MulticastSocket(nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ socket.joinGroup(address);
+ harness.fail("joinGroup() twice.");
+ } catch (Exception e) {
+ harness.check(true);
+ }
+
+ try {
+ socket = new MulticastSocket(++nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(null);
+ harness.fail("joinGroup() with incorrect params. - 5");
+ } catch (NullPointerException e) {
+ harness.check(true);
+ }
+ catch(Exception e) {
+ harness.fail("joinGroup() with incorrect params. should have " +
+ "thrown a NullPointerException - 5a");
+ harness.debug(e);
+ }
+
+
+ try {
+ socket = new MulticastSocket(++nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ socket.leaveGroup(address);
+ harness.check(true);
+ socket.leaveGroup(address);
+ harness.fail("leaveGroup() twice. - 6");
+ socket.close();
+ } catch (Exception e) {
+ harness.check(true);
+ }
+
+
+ try {
+ socket = new MulticastSocket(++nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ socket.leaveGroup(null);
+ harness.fail("leaveGroup() with incorrect params - 7");
+ socket.close();
+ } catch (NullPointerException e) {
+ harness.check(true);
+ } catch (Exception e) {
+ harness.fail("leaveGroup() with incorrect params. should have " +
+ "thrown a NullPointerException - 7a");
+ harness.debug(e);
+ }
+
+
+ try {
+ socket = new MulticastSocket(++nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ socket.leaveGroup(address);
+ socket.close();
+ harness.check(true);
+ } catch (Exception e) {
+ harness.fail("Correct args. - 8");
+ harness.debug(e);
+ }
+
+
+ try {
+ // System.out.println("getTTL() and setTTL().");
+ socket = new MulticastSocket(++nPort);
+ InetAddress address = InetAddress.getByName("230.0.0.1");
+ socket.joinGroup(address);
+ byte bTTL = socket.getTTL();
+ harness.check(bTTL != 0, "getTTL() should never return zero - 9");
+
+ //System.out.println("Default TTL = " + bTTL);
+ byte newbTTL = (byte)127;
+ socket.setTTL(newbTTL);
+ bTTL = socket.getTTL();
+ //System.out.println("New TTL = " + bTTL);
+ harness.check(bTTL, newbTTL,
+ "getTTL() should return same value (127) used for setTTL() - 10");
+
+ bTTL = (byte)-56;
+ socket.setTTL(bTTL);
+ bTTL = socket.getTTL();
+ //System.out.println("Newer TTL = " + bTTL);
+ // FIXME: if unsigned byte is used -56 will roll to a +ve value.
+ // Developer should verify if this is a failure case or not.
+ //if(bTTL == -56)
+ //System.out.println("FAIL : TTL cannot be negative");
+
+ socket.setTTL((byte)1);
+ socket.leaveGroup(address);
+ socket.close();
+ harness.check(true);
+ } catch (Exception e) {
+ harness.fail("Should not have thrown any exception - 11");
+ harness.debug(e);
+ }
+
+
+ }
+
+ public void test_MultipleBind() {
+
+ final int sharedMcastPort = 1234;
+
+ // First Socket
+
+ MulticastSocket firstMcastSock;
+ try {
+ firstMcastSock = new MulticastSocket(sharedMcastPort);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("could not create FIRST multicast socket on shared port " + sharedMcastPort);
+ harness.debug(e);
+ }
+
+ // Second Socket
+
+ MulticastSocket secondMcastSock;
+ try {
+ secondMcastSock = new MulticastSocket(sharedMcastPort);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("could not create SECOND multicast socket on shared port " + sharedMcastPort);
+ harness.debug(e);
+ }
+ }
+
+
+ public void test_Comm(){
+ try {
+ MulticastClient client = new MulticastClient();
+ client.start();
+ MulticastServer server = new MulticastServer(4446);
+ server.start();
+ harness.check(true);
+ }catch(Exception e){
+ harness.fail("test_Comm failed");
+ harness.debug(e);
+ }
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_MultipleBind();
+ test_Comm();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+}
diff --git a/gnu/testlet/java/net/NetworkInterface/CVS/Entries b/gnu/testlet/java/net/NetworkInterface/CVS/Entries
new file mode 100644
index 00000000..264fc9fb
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/CVS/Entries
@@ -0,0 +1,4 @@
+/Consistency.java/1.1/Sat Sep 9 22:26:19 2006//
+/getByName.java/1.2/Sat Sep 9 22:26:19 2006//
+/security.java/1.2/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/net/NetworkInterface/CVS/Repository b/gnu/testlet/java/net/NetworkInterface/CVS/Repository
new file mode 100644
index 00000000..1d978596
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/NetworkInterface
diff --git a/gnu/testlet/java/net/NetworkInterface/CVS/Root b/gnu/testlet/java/net/NetworkInterface/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/NetworkInterface/Consistency.java b/gnu/testlet/java/net/NetworkInterface/Consistency.java
new file mode 100644
index 00000000..99d9acbf
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/Consistency.java
@@ -0,0 +1,101 @@
+/* Consistency.java -- test NetworkInterface API consistency.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA. */
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.net.NetworkInterface;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.Enumeration;
+import java.util.HashSet;
+
+/**
+ * @author csm
+ *
+ */
+public class Consistency
+ implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ Enumeration ifs = null;
+ harness.checkPoint("getNetworkInterfaces");
+ try
+ {
+ ifs = NetworkInterface.getNetworkInterfaces();
+ harness.check(ifs != null);
+ }
+ catch (Exception x)
+ {
+ harness.fail("getNetworkInterfaces");
+ harness.debug(x);
+ return;
+ }
+
+ harness.check(ifs.hasMoreElements(), "getNetworkInterfaces returns something");
+
+ HashSet names = new HashSet();
+ while (ifs.hasMoreElements())
+ {
+ NetworkInterface netif = (NetworkInterface) ifs.nextElement();
+ harness.checkPoint("consistency - " + netif.getName());
+ harness.check(!names.contains(netif.getName()), "duplicate entries");
+ names.add(netif.getName());
+
+ try
+ {
+ NetworkInterface netif2 = NetworkInterface.getByName(netif.getName());
+ harness.check(netif2 != null);
+ harness.check(netif.equals(netif2));
+ }
+ catch (Exception x)
+ {
+ harness.fail("getByName unexpected exception");
+ harness.debug(x);
+ }
+
+ Enumeration addrs = netif.getInetAddresses();
+ harness.check(addrs.hasMoreElements());
+
+ while (addrs.hasMoreElements())
+ {
+ try
+ {
+ InetAddress addr = (InetAddress) addrs.nextElement();
+ NetworkInterface netif2 = NetworkInterface.getByInetAddress(addr);
+ harness.check(netif2 != null);
+ harness.check(netif.equals(netif2));
+ }
+ catch (Exception x)
+ {
+ harness.fail("getByAddress unexpected exception");
+ harness.debug(x);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/NetworkInterface/getByName.java b/gnu/testlet/java/net/NetworkInterface/getByName.java
new file mode 100644
index 00000000..f961c0b2
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/getByName.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.net.NetworkInterface;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.NetworkInterface;
+
+public class getByName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ NetworkInterface netif;
+
+ try {
+ netif = NetworkInterface.getByName(null);
+
+ h.fail("- 1 - NullPointerException expected");
+ }
+ catch (NullPointerException e) {
+ h.check(true);
+ }
+ catch (Exception e) {
+ h.fail("- 1 - NullPointerException expected");
+ }
+
+ try {
+ netif = NetworkInterface.getByName("abcde");
+
+ h.check(netif == null, "- 2 - return value expected to be null");
+ }
+ catch (Exception e) {
+ h.fail("- 2 - no exeption expected");
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/net/NetworkInterface/security.java b/gnu/testlet/java/net/NetworkInterface/security.java
new file mode 100644
index 00000000..4f343999
--- /dev/null
+++ b/gnu/testlet/java/net/NetworkInterface/security.java
@@ -0,0 +1,88 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.NetworkInterface;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketPermission;
+import java.security.Permission;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ LinkedList list = new LinkedList();
+ for (Enumeration e = NetworkInterface.getNetworkInterfaces();
+ e.hasMoreElements(); ) {
+ NetworkInterface nif = (NetworkInterface) e.nextElement();
+ for (Enumeration f = nif.getInetAddresses(); f.hasMoreElements(); )
+ list.add(f.nextElement());
+ }
+ harness.check(!list.isEmpty());
+
+ Permission[] checks = new Permission[list.size()];
+ for (int i = 0; i < list.size(); i++) {
+ InetAddress addr = (InetAddress) list.get(i);
+ checks[i] = new SocketPermission(addr.getHostAddress(), "resolve");
+ }
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.NetworkInterface-getInetAddresses
+ harness.checkPoint("getInetAddresses");
+ try {
+ sm.prepareChecks(checks);
+ for (Enumeration e = NetworkInterface.getNetworkInterfaces();
+ e.hasMoreElements(); ) {
+ NetworkInterface nif = (NetworkInterface) e.nextElement();
+ nif.getInetAddresses();
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Proxy/CVS/Entries b/gnu/testlet/java/net/Proxy/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/net/Proxy/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/net/Proxy/CVS/Repository b/gnu/testlet/java/net/Proxy/CVS/Repository
new file mode 100644
index 00000000..94fa3c74
--- /dev/null
+++ b/gnu/testlet/java/net/Proxy/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/Proxy
diff --git a/gnu/testlet/java/net/Proxy/CVS/Root b/gnu/testlet/java/net/Proxy/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/Proxy/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/ProxySelector/CVS/Entries b/gnu/testlet/java/net/ProxySelector/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/net/ProxySelector/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/net/ProxySelector/CVS/Repository b/gnu/testlet/java/net/ProxySelector/CVS/Repository
new file mode 100644
index 00000000..0ce31778
--- /dev/null
+++ b/gnu/testlet/java/net/ProxySelector/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/ProxySelector
diff --git a/gnu/testlet/java/net/ProxySelector/CVS/Root b/gnu/testlet/java/net/ProxySelector/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/ProxySelector/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/ServerSocket/AcceptGetLocalPort.java b/gnu/testlet/java/net/ServerSocket/AcceptGetLocalPort.java
new file mode 100644
index 00000000..4cb1923a
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/AcceptGetLocalPort.java
@@ -0,0 +1,78 @@
+/* AcceptGetLocalPort.java - Test for getLocalPort on accepted Socket.
+ Copyright (C) 2005, Mark J. Wielaard <mark@klomp.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA. */
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.net.ServerSocket;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+import java.io.*;
+
+public class AcceptGetLocalPort implements Testlet, Runnable
+{
+ private static int port = 5678;
+
+ public void test (TestHarness harness)
+ {
+ new Thread(this).start();
+ try
+ {
+ ServerSocket ss = new ServerSocket(port);
+ harness.check(ss.getLocalPort(), port);
+ Socket s = ss.accept();
+ harness.check(s.getLocalPort(), port);
+ s.close();
+ ss.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ }
+
+ public void run()
+ {
+ int i = 0;
+ while (i < 10)
+ {
+ try
+ {
+ Socket s = new Socket("localhost", port);
+ break;
+ }
+ catch (IOException ioe)
+ {
+ // ignore
+ }
+ try
+ {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException ie)
+ {
+ // ignore
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/AcceptTimeout.java b/gnu/testlet/java/net/ServerSocket/AcceptTimeout.java
new file mode 100644
index 00000000..fa6fb831
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/AcceptTimeout.java
@@ -0,0 +1,79 @@
+/* AcceptGetLocalPort.java - Test timeout on accepted Socket.
+ Copyright (C) 2006, Mark J. Wielaard <mark@klomp.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA. */
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.net.ServerSocket;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+import java.io.*;
+
+/** Checks that a Socket doesn't inherit the timeout of a ServerSocket. */
+public class AcceptTimeout implements Testlet, Runnable
+{
+ private static int port = 5678;
+
+ public void test (TestHarness harness)
+ {
+ new Thread(this).start();
+ try
+ {
+ ServerSocket ss = new ServerSocket(port);
+ ss.setSoTimeout(2000);
+ Socket s = ss.accept();
+ harness.check(s.getSoTimeout(), 0);
+ s.close();
+ ss.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ }
+
+ public void run()
+ {
+ int i = 0;
+ while (i < 10)
+ {
+ try
+ {
+ Socket s = new Socket("localhost", port);
+ break;
+ }
+ catch (IOException ioe)
+ {
+ // ignore
+ }
+ try
+ {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException ie)
+ {
+ // ignore
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java b/gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java
new file mode 100644
index 00000000..278f1f0a
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/BasicBacklogSocketServer.java
@@ -0,0 +1,78 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.ServerSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+class BasicBacklogSocketServer extends Thread {
+ ServerSocket srvsock = null;
+
+ private TestHarness harness;
+
+ public void init(TestHarness harness)
+ {
+ this.harness = harness;
+ try {
+ srvsock = new ServerSocket(21000, 1);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : BasicBacklogSocketServer::init failed " +
+ "exception was thrown: " + e);
+ }
+ }
+
+ public void run()
+ {
+ if (srvsock == null) {
+ harness.fail("Error : BasicBacklogSocketServer::run failed - 1 " +
+ "server socket creation was not successful");
+ return;
+ }
+
+
+ try {
+ Socket clnt = srvsock.accept();
+ Socket clnt1 = srvsock.accept();
+ Socket clnt2 = srvsock.accept();
+
+ OutputStream os = clnt.getOutputStream();
+ DataOutputStream dos = new DataOutputStream(os);
+ dos.writeBytes("hello buddy");
+ dos.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : BasicBacklogSocketServer::run failed - 2" +
+ "exception was thrown: " + e);
+ }
+ finally {
+ try {
+ srvsock.close();
+ } catch (IOException ignored) {}
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/BasicSocketServer.java b/gnu/testlet/java/net/ServerSocket/BasicSocketServer.java
new file mode 100644
index 00000000..5f11210e
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/BasicSocketServer.java
@@ -0,0 +1,85 @@
+// Tags: not-a-test
+
+/*
+ Copyright (C) 1999, 2007 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.
+*/
+
+package gnu.testlet.java.net.ServerSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+class BasicSocketServer extends Thread {
+ ServerSocket srvsock = null;
+
+ private TestHarness harness;
+
+ public void init(TestHarness harness)
+ {
+ this.harness = harness;
+ try {
+ srvsock = new ServerSocket(12000);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ System.out.println("Error : BasicSocketServer::init failed " +
+ "exception in new ServerSocket(...) " + e);
+ harness.debug(e);
+ }
+ }
+
+ public void run()
+ {
+ harness.check(srvsock != null,
+ "Error : BasicSocketServer::run failed - 1 " +
+ "server socket creation was not successful");
+ if (srvsock == null) {
+ return;
+ }
+
+ int i = 0;
+ while (i++ < 2) {
+ try {
+ Socket clnt = srvsock.accept();
+
+ OutputStream os = clnt.getOutputStream();
+ DataOutputStream dos = new DataOutputStream(os);
+ dos.writeBytes("hello buddy");
+ dos.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ System.out.println("Error : BasicSocketServer::run failed - 2" +
+ "exception was thrown");
+ harness.debug(e);
+ }
+ }
+ try {
+ srvsock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ System.out.println("Error : BasicSocketServer::run failed - 3" +
+ "exception was thrown");
+ harness.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/CORBA.java b/gnu/testlet/java/net/ServerSocket/CORBA.java
new file mode 100644
index 00000000..b63ebf3b
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/CORBA.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+// 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.java.net.ServerSocket;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.net.BindException;
+import java.net.ServerSocket;
+import java.util.Random;
+
+/**
+ * This class tests the socket functionality, required by
+ * CORBA server to work properly. If this does not work,
+ * CORBA server does not work either.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class CORBA
+ implements Testlet
+{
+ static int NONE = Integer.MIN_VALUE;
+
+ public void test(TestHarness harness)
+ {
+ // Try 54 times to bind into random port
+ // between 1000 and 3000.
+ Random r = new Random();
+
+ int port = NONE;
+ ServerSocket s = null;
+
+ Search:
+ for (int i = 0; i < 54; i++)
+ {
+ port = 1000 + r.nextInt(2000);
+ try
+ {
+ s = new ServerSocket(port);
+ break Search;
+ }
+
+ // Unable to bind, probably the port is in use.
+ catch (IOException ex)
+ {
+ // repeat the loop.
+ }
+ }
+
+ if (port == NONE)
+ {
+ harness.fail("Cannot find any port " +
+ "between 1000 and 3000 in 54 random attempts"
+ );
+ return;
+ }
+
+ harness.check(port, s.getLocalPort(), "getLocalPort, opened");
+
+ // Try another socket on the same port.
+ try
+ {
+ ServerSocket s2 = new ServerSocket(port);
+ harness.fail("BindException must be thrown");
+ }
+ catch (Exception ex)
+ {
+ harness.check(ex instanceof BindException, "Not a BindException: " +
+ ex
+ );
+ }
+
+ // The closed socket must hold its port number.
+ try
+ {
+ s.close();
+ }
+ catch (IOException ex)
+ {
+ harness.fail("Exception while closing the socket" + ex);
+ }
+
+ harness.check(port, s.getLocalPort(),
+ "getLocalPort, closed, " + s.getLocalPort()
+ );
+
+ // Try another socket on the same port.
+ try
+ {
+ ServerSocket s2 = new ServerSocket(port);
+ harness.check(port, s2.getLocalPort(), "Port mismatch");
+ }
+ catch (Exception ex)
+ {
+ harness.fail("Unable to reuse the port "+port);
+ }
+
+
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/java/net/ServerSocket/CVS/Entries b/gnu/testlet/java/net/ServerSocket/CVS/Entries
new file mode 100644
index 00000000..4788a2bb
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/CVS/Entries
@@ -0,0 +1,11 @@
+/AcceptGetLocalPort.java/1.1/Wed Sep 21 19:28:46 2005//
+/AcceptTimeout.java/1.2/Mon Sep 1 09:38:43 2008//
+/BasicBacklogSocketServer.java/1.5/Thu Jun 3 14:31:11 2004//
+/BasicSocketServer.java/1.7/Mon Feb 12 22:30:44 2007//
+/CORBA.java/1.1/Sat Jun 11 17:35:38 2005//
+/MyBasicSocketServer.java/1.6/Thu Jun 3 14:31:11 2004//
+/MyServerSocket.java/1.3/Thu Jun 3 14:31:11 2004//
+/ReturnOnClose.java/1.1/Thu Oct 13 08:46:29 2005//
+/ServerSocketTest.java/1.10/Tue May 31 15:47:41 2005//
+/security.java/1.3/Tue Feb 6 16:46:19 2007//
+D
diff --git a/gnu/testlet/java/net/ServerSocket/CVS/Repository b/gnu/testlet/java/net/ServerSocket/CVS/Repository
new file mode 100644
index 00000000..8daaea46
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/ServerSocket
diff --git a/gnu/testlet/java/net/ServerSocket/CVS/Root b/gnu/testlet/java/net/ServerSocket/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java b/gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java
new file mode 100644
index 00000000..a0beb0a5
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/MyBasicSocketServer.java
@@ -0,0 +1,70 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.ServerSocket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+class MyBasicSocketServer extends Thread {
+ MyServerSocket srvsock = null;
+
+ private TestHarness harness;
+
+ public void init(TestHarness harness)
+ {
+ this.harness = harness;
+ try {
+ srvsock = new MyServerSocket(10000);
+ srvsock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error - 1 : MyBasicSocketServer::init failed " +
+ "exception in new MyServerSocket(10000): " + e);
+ }
+ // now do the real one
+ try {
+ srvsock = new MyServerSocket(20000);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error - 2 : MyBasicSocketServer::init failed " +
+ "exception in new MyServerSocket(20000): " + e);
+ }
+ }
+
+ public void run()
+ {
+ try {
+ Socket clnt = new Socket("localhost", 20000);
+ srvsock.invoke_implAccept(clnt);
+ } catch (IOException e) {}
+ // get finalize to be invoked
+ try {
+ srvsock.finalize();
+ }
+ catch (Exception e) {}
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/MyServerSocket.java b/gnu/testlet/java/net/ServerSocket/MyServerSocket.java
new file mode 100644
index 00000000..25f03a1c
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/MyServerSocket.java
@@ -0,0 +1,47 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.ServerSocket;
+import java.net.*;
+import java.io.*;
+
+
+class MyServerSocket extends ServerSocket {
+
+ public MyServerSocket(int port) throws IOException {
+ super(port);
+ }
+
+ public void invoke_implAccept(Socket s) throws IOException {
+ super.implAccept(s);
+ }
+
+ public void finalize() {
+ try {
+ super.finalize();
+ }
+ catch (Throwable t) {
+ System.out.println(t);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/ServerSocket/ReturnOnClose.java b/gnu/testlet/java/net/ServerSocket/ReturnOnClose.java
new file mode 100644
index 00000000..b4c80ad2
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/ReturnOnClose.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.4
+
+// Copyright (c) Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.java.net.ServerSocket;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.SocketException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test if the ServerSocket.accept returns (throws SocketException) after closing
+ * that socket from another thread. The behavior is documented in java API
+ * and confirmed for Sun and IBM implementations.
+ */
+public class ReturnOnClose implements Testlet
+{
+ ServerSocket socket;
+ Throwable exception;
+
+ public synchronized void test(final TestHarness harness)
+ {
+ Thread t = new Thread()
+ {
+ public void run()
+ {
+ boolean opened = false;
+
+ for (int i = 1; i < 100 && !opened; i++)
+ {
+ int port = 1000 + (int) (Math.random() * 2000);
+ try
+ {
+ socket = new ServerSocket(port);
+ opened = true;
+ }
+ catch (Exception ex)
+ {
+ // next try
+ }
+ }
+
+ // This should suspend the thread.
+ try
+ {
+ socket.accept();
+ }
+ catch (IOException ex)
+ {
+ exception = ex;
+ }
+ socket = null;
+ }
+ };
+ t.start();
+
+ // Wait at most for 10 seconds to open a socket.
+ long s = System.currentTimeMillis();
+ while (socket == null && System.currentTimeMillis() - s < 10000)
+ {
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+ harness.check(socket != null, " Socket must be opened");
+
+ try
+ {
+ socket.close();
+ t.interrupt();
+ }
+ catch (IOException e)
+ {
+ }
+
+ // Wait at most for 3 seconds for a socket to close.
+ s = System.currentTimeMillis();
+ while (socket != null && System.currentTimeMillis() - s < 3000)
+ {
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+ harness.check(socket == null,
+ " Socket thread must be resumed. POA.testForwarding will also fail.");
+ harness.check(exception instanceof SocketException,"Must be SocketException");
+ }
+
+}
diff --git a/gnu/testlet/java/net/ServerSocket/ServerSocketTest.java b/gnu/testlet/java/net/ServerSocket/ServerSocketTest.java
new file mode 100644
index 00000000..d470fb76
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/ServerSocketTest.java
@@ -0,0 +1,290 @@
+// Tags: JDK1.0
+// Uses: BasicBacklogSocketServer BasicSocketServer MyBasicSocketServer MyServerSocket
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.ServerSocket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+public class ServerSocketTest implements Testlet
+{
+
+ protected static TestHarness harness;
+
+ private static final boolean USE_JOIN = false;
+
+ /**
+ * Wait (for up to 5 seconds) until a thread has completed. If
+ * 'USE_JOIN' is true, use join. Otherwise use sleep and isAlive.
+ * @param thread the thread to wait for,
+ * @return true is the thread ended, false otherwise.
+ */
+ private boolean completed(Thread thread)
+ {
+ try {
+ if (USE_JOIN) {
+ thread.join(5000);
+ }
+ else {
+ for (int i = 0; i < 5 && thread.isAlive(); i++) {
+ Thread.sleep(1000);
+ }
+ }
+ }
+ catch (Exception e) { /* Squelch exceptions */ }
+ return !thread.isAlive();
+ }
+
+ public void test_BasicBacklogServer()
+ {
+ BasicBacklogSocketServer srv = new BasicBacklogSocketServer();
+ srv.init(harness);
+ srv.start();
+ Thread.yield();
+
+ try {
+ Socket sock = new Socket("127.0.0.1", 21000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicBacklogServer failed - 2 " +
+ "exception was thrown " + e);
+ }
+
+ // second iteration
+ try {
+ Socket sock = new Socket("127.0.0.1", 21000);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicBacklogServer failed - 3 " +
+ "exception was thrown " + e);
+ }
+
+ // third iteration
+ try {
+ Socket sock = new Socket("127.0.0.1", 21000);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicBacklogServer failed - 4 " +
+ "exception was thrown " + e);
+ }
+
+ harness.check(completed(srv),
+ "Error : test_BasicBacklogServer failed - 5 " +
+ "server didn't end");
+ }
+
+ public void test_BasicServer()
+ {
+ harness.checkPoint("BasicServer");
+ BasicSocketServer srv = new BasicSocketServer();
+ srv.init(harness);
+ srv.start();
+ Thread.yield();
+
+ try {
+ Socket sock = new Socket("127.0.0.1", 12000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+ String str = dis.readLine();
+
+ harness.check(str.equals("hello buddy"),
+ "Error : test_BasicServer failed - 1 " +
+ "string returned is not correct.");
+ sock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 2 " +
+ "exception was thrown: " + e.getMessage());
+ }
+
+ // second iteration
+ try {
+ Socket sock = new Socket("127.0.0.1", 12000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+ String str = dis.readLine();
+
+ harness.check(str.equals("hello buddy"),
+ "Error : test_BasicServer failed - 3 " +
+ "string returned is not correct.");
+ sock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 4 " +
+ "exception was thrown: " + e.getMessage());
+ }
+
+ if (!completed(srv)) {
+ harness.fail("Error : test_BasicServer failed - 5 " +
+ " server didn't end ");
+ // Attempt to clean up the server thread by 1) closing it's
+ // socket and 2) interrupting it.
+ try {
+ srv.srvsock.close();
+ } catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 6 " +
+ " exception in close: " + e.getMessage());
+ }
+
+ if (!completed(srv)) {
+ harness.fail("Error : test_BasicServer failed - 7 " +
+ "server didn't end when its socket was closed");
+ // Try to unjam it ...
+ try {
+ srv.interrupt();
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 8 " +
+ " exception in interrupt: " + e.getMessage());
+ }
+ if (!completed(srv)) {
+ // The server thread is still alive. Oh dear ...
+ harness.fail("Error : test_BasicServer failed - 9 " +
+ "server didn't end when interrupted");
+ }
+ }
+ }
+ else {
+ harness.check(true);
+ }
+ }
+
+ public void test_MyBasicServer()
+ {
+ MyBasicSocketServer srv = new MyBasicSocketServer();
+ srv.init(harness);
+ srv.start();
+ Thread.yield();
+ try {
+ Socket sock = new Socket("127.0.0.1", 12000);
+ } catch (IOException e) {}
+ }
+
+ public void test_params()
+ {
+ ServerSocket sock = null;
+ try {
+ sock = new ServerSocket(30000);
+
+ harness.check(sock.getLocalPort() == 30000,
+ "Error : test_params failed - 1 " +
+ "get port did not return proper values");
+
+ if (false) { // set/getSoTimeout not there
+ try {
+ sock.setSoTimeout(100);
+ if (sock.getSoTimeout() != 100) {
+ harness.fail("Error : test_params failed - 2 " +
+ "get /set timeout did not return proper values");
+ }
+ }
+ catch (IOException e) {
+ harness.fail("Error : setSoTimeout fails since vxWorks do " +
+ "not support the feature");
+ harness.debug(e);
+ }
+ }
+
+ try {
+ ServerSocket sock1 = new ServerSocket(30000);
+ harness.fail("Error : test_params failed - 3 " +
+ "should have thrown bind exception here.");
+ }
+ catch (IOException e) { // Should this be more specific?
+ harness.check(true);
+ }
+
+ String ip = "0.0.0.0";
+ harness.check(sock.toString().indexOf(ip) != -1,
+ "toString() should contain IP");
+ InetAddress addr = sock.getInetAddress();
+ if (addr == null) {
+ harness.fail("Error : test_params failed - 4 " +
+ "sock.getInetAddress() -> null");
+ }
+ else {
+ harness.check(addr.toString().indexOf(ip) != -1,
+ "InetAddress toString() should contain IP");
+ }
+ ServerSocket.setSocketFactory(null);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_params failed - 10 " +
+ "exception was thrown");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch (IOException ignored) {}
+ }
+
+ }
+
+ public void test_close()
+ {
+ try {
+ harness.checkPoint("test_close");
+ ServerSocket s = new ServerSocket(0);
+ harness.check(s.isBound());
+ harness.check(!s.isClosed());
+ int port = s.getLocalPort();
+ InetAddress address = s.getInetAddress();
+ SocketAddress sockAddress = s.getLocalSocketAddress();
+ s.close();
+ harness.check(s.isBound());
+ harness.check(s.isClosed());
+ harness.check(port == s.getLocalPort());
+ harness.check(address.equals(s.getInetAddress()));
+ harness.check(sockAddress.equals(s.getLocalSocketAddress()));
+ } catch (Exception e) {
+ harness.fail("Unexpected exception");
+ harness.debug(e);
+ }
+ }
+
+ public void testall()
+ {
+ test_BasicServer();
+ test_MyBasicServer();
+ test_BasicBacklogServer();
+ test_params();
+ test_close();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall();
+ }
+
+}
diff --git a/gnu/testlet/java/net/ServerSocket/security.java b/gnu/testlet/java/net/ServerSocket/security.java
new file mode 100644
index 00000000..ea3c049a
--- /dev/null
+++ b/gnu/testlet/java/net/ServerSocket/security.java
@@ -0,0 +1,183 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.ServerSocket;
+
+import java.net.BindException;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketPermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ harness.checkPoint("setup");
+
+ InetAddress inetaddr = InetAddress.getByName(null);
+ String hostaddr = inetaddr.getHostAddress();
+
+ ServerSocket ssocket = new ServerSocket(0, 50, inetaddr);
+ int sport = ssocket.getLocalPort();
+ Socket csocket = new Socket(inetaddr, sport, inetaddr, 0);
+ int cport = csocket.getLocalPort();
+
+ Permission[] checkListen80 = new Permission[] {
+ new SocketPermission("localhost:80", "listen")};
+
+ Permission[] checkListen1024plus = new Permission[] {
+ new SocketPermission("localhost:1024-", "listen")};
+
+ Permission[] checkAccept = new Permission[] {
+ new SocketPermission(hostaddr + ":" + cport, "accept")};
+
+ Permission[] checkSelectorProvider = new Permission[] {
+ new RuntimePermission("selectorProvider")};
+
+ Permission[] checkSetFactory = new Permission[] {
+ new RuntimePermission("setFactory")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.ServerSocket-ServerSocket(int)
+ harness.checkPoint("ServerSocket(int)");
+ try {
+ sm.prepareChecks(checkListen80, checkSelectorProvider);
+ try {
+ new ServerSocket(80).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus, checkSelectorProvider);
+ new ServerSocket(0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.ServerSocket-ServerSocket(int, int)
+ harness.checkPoint("ServerSocket(int, int)");
+ try {
+ sm.prepareChecks(checkListen80, checkSelectorProvider);
+ try {
+ new ServerSocket(80, 50).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus, checkSelectorProvider);
+ new ServerSocket(0, 50).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.ServerSocket-ServerSocket(int, int,InetAddress)
+ harness.checkPoint("ServerSocket(int, int, InetAddress)");
+ try {
+ sm.prepareChecks(checkListen80, checkSelectorProvider);
+ try {
+ new ServerSocket(80, 50, inetaddr).close();
+ }
+ catch (BindException e) {
+ }
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkListen1024plus, checkSelectorProvider);
+ new ServerSocket(0, 50, inetaddr).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.ServerSocket-accept
+ harness.checkPoint("accept");
+ try {
+ sm.prepareChecks(checkAccept, checkSelectorProvider);
+ ssocket.accept().close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.ServerSocket-setSocketFactory
+ harness.checkPoint("setSocketFactory");
+ try {
+ sm.prepareHaltingChecks(checkSetFactory);
+ ServerSocket.setSocketFactory(null);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ csocket.close();
+ ssocket.close();
+ }
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/CVS/Entries b/gnu/testlet/java/net/Socket/CVS/Entries
new file mode 100644
index 00000000..f23395fc
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/CVS/Entries
@@ -0,0 +1,11 @@
+/ServerThread.java/1.1/Thu Feb 10 04:37:31 2005//
+/SocketBServer.java/1.5/Thu Jun 3 14:31:11 2004//
+/SocketServer.java/1.6/Thu Jun 3 14:31:12 2004//
+/SocketTest.java/1.24/Mon Feb 6 08:11:04 2006//
+/TestSocketImplFactory.java/1.5/Mon Jan 17 21:40:08 2005//
+/jdk12.java/1.5/Tue Nov 8 21:49:39 2005//
+/jdk13.java/1.6/Tue Nov 8 21:49:39 2005//
+/jdk14.java/1.7/Thu Mar 13 04:53:32 2008//
+/security.java/1.5/Tue Mar 15 01:49:02 2011//
+/setSocketImplFactory.java/1.3/Tue Mar 15 01:49:02 2011//
+D
diff --git a/gnu/testlet/java/net/Socket/CVS/Repository b/gnu/testlet/java/net/Socket/CVS/Repository
new file mode 100644
index 00000000..4d2f29ad
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/Socket
diff --git a/gnu/testlet/java/net/Socket/CVS/Root b/gnu/testlet/java/net/Socket/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/Socket/ServerThread.java b/gnu/testlet/java/net/Socket/ServerThread.java
new file mode 100644
index 00000000..1a4f8471
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/ServerThread.java
@@ -0,0 +1,90 @@
+// Tags: not-a-test
+
+/*
+ Copyright (C) 2005 Free Software Foundation
+
+ 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.java.net.Socket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+/* Implements a simple server socket listening on a port.
+Socket tests can connect to this port. */
+
+class ServerThread extends Thread
+{
+ ServerSocket sock;
+ TestHarness harness;
+
+ public ServerThread(TestHarness harness)
+ {
+ this(harness, 14610);
+ }
+
+ public ServerThread(TestHarness harness, int port)
+ {
+ this.harness = harness;
+ try
+ {
+ sock = new ServerSocket(port);
+ this.start();
+ }
+ catch (IOException x)
+ {
+ harness.fail(x.toString());
+ }
+ }
+
+ public void close()
+ {
+ try
+ {
+ sock.close();
+ }
+ catch (IOException x)
+ {
+ harness.fail(x.toString());
+ }
+ }
+
+ public void run()
+ {
+ try
+ {
+ while (true)
+ {
+ Socket s = sock.accept();
+ InputStream is = s.getInputStream();
+ byte[] data = new byte[512];
+ boolean done = false;
+ while (!done)
+ {
+ if (is.read(data, 0, data.length) < 0)
+ done = true;
+ }
+ }
+ }
+ catch (IOException x)
+ {
+ // Ignored
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/SocketBServer.java b/gnu/testlet/java/net/Socket/SocketBServer.java
new file mode 100644
index 00000000..51024686
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/SocketBServer.java
@@ -0,0 +1,73 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.Socket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+class SocketBServer extends Thread {
+ ServerSocket srvsock = null;
+ static TestHarness harness;
+
+ public void init()
+ {
+ try {
+ srvsock = new ServerSocket(20002);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : BasicSocketServer::init failed " +
+ "Exception should not be thrown here " + e);
+ }
+ }
+
+ public void run()
+ {
+ if (srvsock == null) {
+ harness.fail("Error : BasicSocketServer::run failed - 1 " +
+ "server socket creation was not successful");
+ return;
+ }
+
+ int i = 0;
+ while (i++ < 1) {
+ try {
+ Socket clnt = srvsock.accept();
+
+ OutputStream os = clnt.getOutputStream();
+ DataOutputStream dos = new DataOutputStream(os);
+ dos.writeBytes("hello buddy");
+ dos.close();
+ harness.check(true);
+ }
+ catch (Exception e){
+ harness.fail("Error : BasicSocketServer::run failed - 2" +
+ "exception was thrown");
+ }
+ }
+
+ try { srvsock.close(); } catch (IOException ignored) {}
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/SocketServer.java b/gnu/testlet/java/net/Socket/SocketServer.java
new file mode 100644
index 00000000..8adf5fa8
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/SocketServer.java
@@ -0,0 +1,84 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.Socket;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+class SocketServer extends Thread {
+ ServerSocket srvsock = null;
+ String helloBuddy="hello buddy";
+
+ static TestHarness harness;
+
+ public void init()
+ {
+ try {
+ srvsock = new ServerSocket(23000);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : BasicSocketServer::init failed " +
+ "Exception should not be thrown here " + e);
+ e.printStackTrace();
+ }
+ }
+
+ public void run()
+ {
+ if (srvsock == null) {
+ harness.fail("Error : BasicSocketServer::run failed - 1 " +
+ "server socket creation was not successful");
+ return;
+ }
+
+ int i = 0;
+ while (i++ < 5) {
+ try {
+ Socket clnt = srvsock.accept();
+
+ OutputStream os = clnt.getOutputStream();
+ //DataOutputStream dos = new DataOutputStream(os);
+ //dos.writeBytes("hello buddy");
+ //dos.close();
+
+ //System.out.println("Write helloBuddy as bytes");
+ byte data[] = new byte[helloBuddy.length()];
+ helloBuddy.getBytes(0,helloBuddy.length(),data,0);
+ os.write(data);
+ os.close();
+ harness.check(true);
+
+ }
+ catch (Exception e) {
+ harness.fail("Error : BasicSocketServer::run failed - 2" +
+ "exception was thrown: " + e);
+ e.printStackTrace();
+ }
+ }
+
+ try { srvsock.close(); } catch (IOException ignored) {}
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/SocketTest.java b/gnu/testlet/java/net/Socket/SocketTest.java
new file mode 100644
index 00000000..e563319a
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/SocketTest.java
@@ -0,0 +1,520 @@
+// Tags: JDK1.0
+// Uses: SocketBServer SocketServer
+
+/*
+ Copyright (C) 1999 Hewlett-Packard Company
+ Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+ 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.java.net.Socket;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.*;
+
+
+public class SocketTest implements Testlet
+{
+ protected static TestHarness harness;
+
+ public void test_BasicServer()
+ {
+ harness.checkPoint("BasicServer");
+ try {
+ SocketServer srv = new SocketServer();
+ SocketServer.harness = harness;
+ srv.init();
+ srv.start();
+ Thread.yield();
+ harness.check(true, "BasicServer");
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 0 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+
+ Socket sock = null;
+ try {
+ sock = new Socket("127.0.0.1", 23000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+ String str = dis.readLine();
+
+ harness.check(str.equals("hello buddy"),
+ "Error : test_BasicServer failed - 1 " +
+ "string returned is not correct.");
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 2 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+
+ // second iteration
+ try {
+ sock = new Socket("127.0.0.1", 23000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+ String str = dis.readLine();
+
+ harness.check(str.equals("hello buddy"),
+ "Error : test_BasicServer failed - 3 " +
+ "string returned is not correct.");
+ sock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 4 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+
+ // second iteration
+ try {
+ sock = new Socket("127.0.0.1", 23000);
+ DataInputStream dis = new DataInputStream(sock.getInputStream());
+
+ byte data[] = new byte[5];
+ int len;
+
+ len = dis.read(data);
+ String str = new String(data, 0, 0, 5);
+
+ harness.check(str.equals("hello"),
+ "Error : test_BasicServer failed - 5 " +
+ "string returned is not correct.");
+ dis.close();
+ sock.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 6 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+
+ // second iteration
+ try {
+ sock = new Socket("127.0.0.1", 23000);
+ InputStream is = sock.getInputStream();
+ byte data[] = new byte[5];
+
+ int len;
+ len = is.read(data, 0, 5);
+ String str= new String(data, 0, 0, 5);
+
+ harness.check(str.equals("hello"),
+ "Error : test_BasicServer failed - 8 " +
+ "string returned is not correct.");
+ is.close();
+ harness.check(true);
+
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 9 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+
+ // second iteration
+ try {
+ sock = new Socket("127.0.0.1", 23000);
+ InputStream is = sock.getInputStream();
+ byte data[] = new byte[5];
+ is.skip(2);
+
+ int len = is.available(); // deterministic after blocking for skip
+ harness.check(len > 0,
+ "Error : test_BasicServer failed - 7 " +
+ "no more data available");
+
+ is.read(data, 0, 3);
+
+ String str = new String(data, 0, 0, 3);
+
+ harness.check(str.equals("llo"),
+ "Error : test_BasicServer failed - 10 " +
+ "string returned is not correct.");
+ is.close();
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 11 " +
+ "exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+
+ }
+
+ public void test_params()
+ {
+ String host = harness.getMailHost();
+ int port = 25;
+
+ harness.checkPoint("params");
+ Socket sock = null;
+
+ try {
+ sock = new Socket(host, port);
+
+ harness.check(sock.getLocalPort() > 0,
+ "Error : test_params failed - 1 " +
+ "get port did not return proper values");
+
+ try {
+ sock.setSoTimeout(100);
+ harness.check(sock.getSoTimeout() == 100,
+ "Error : test_params failed - 2 " +
+ "get /set timeout did not return proper values");
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.check(false, "Error : setSoTimeout fails since some OSes do not support the feature");
+ harness.debug(e);
+ }
+
+ harness.debug ("getTcpNoDelay() default: " + sock.getTcpNoDelay ());
+ harness.check ((sock.getTcpNoDelay () == false), "default getTcpNoDelay() should be false");
+ sock.setTcpNoDelay(true);
+ harness.check(sock.getTcpNoDelay(),
+ "Error : test_params failed - 3 " +
+ "get /set tcp delay did not return proper values");
+
+ harness.debug ("getSoLinger() default: " + sock.getSoLinger());
+ harness.check (sock.getSoLinger(), -1, "default getSoLinger() should be -1");
+ sock.setSoLinger(true, 10);
+ harness.check(sock.getSoLinger() == 10,
+ "Error : test_params failed - 4");
+
+ sock.setSoLinger(false, 20);
+ harness.check(sock.getSoLinger() == -1,
+ "Error : test_params failed - 5");
+
+ harness.check(sock.getPort() == port,
+ "Error : test_params failed - 6");
+
+ harness.debug("sock.getInetAddress().toString(): " +
+ sock.getInetAddress().toString());
+ harness.check(sock.getInetAddress().toString().indexOf(host) != -1,
+ "getInetAddress().toString() should contain host " + host);
+ harness.debug("sock.toString(): " + sock.toString());
+ harness.check(sock.toString().indexOf(host) != -1,
+ "toString() should contain host " + host);
+
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_params failed - 10 exception was thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch(IOException ignored) {}
+ }
+ }
+
+ public void test_Basics()
+ {
+ harness.checkPoint("Basics");
+ Socket s = null;
+ // host name given
+ try {
+ s = new Socket ("babuspdjflks.gnu.org.", 200);
+ harness.fail("Error : test_Basics failed - 1 " +
+ "exception should have been thrown here");
+ }
+ catch (UnknownHostException e) {
+ harness.check(true);
+ }
+ catch (IOException e) {
+ harness.fail("Error : test_Basics failed - 2 " +
+ "Unknown host exception should have been thrown here.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ try {
+ s = new Socket("127.0.0.1", 30001);
+ harness.fail("Error : test_Basics failed - 3 " +
+ "exception should have been thrown here");
+ }
+ catch (UnknownHostException e) {
+ harness.fail("Error : test_Basics failed - 4 " +
+ "Unknown host exception should not have been thrown here");
+ harness.debug(e);
+ }
+ catch (ConnectException e) {
+ harness.check(true);
+ }
+ catch (IOException e) {
+ harness.fail("Error : test_Basics failed - 4 " +
+ "ConnectException should have been thrown here");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ try {
+ s = new Socket("127.0.0.1", 30001, true);
+ harness.fail("Error : test_Basics failed - 5 " +
+ "exception should have been thrown here");
+
+ }
+ catch (UnknownHostException e) {
+ harness.fail("Error : test_Basics failed - 6 " +
+ "Unknown host exception should not have been thrown here");
+ harness.debug(e);
+ }
+ catch (ConnectException e) {
+ harness.check(true);
+ }
+ catch (IOException e) {
+ harness.fail("Error : test_Basics failed - 6 " +
+ "ConnectException should have been thrown here");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ // host inet given
+ try {
+ // This is host / port that is unlikely to be blocked. (Outgoing
+ // port 80 connections are often blocked.)
+ s = new Socket (harness.getMailHost(), 25);
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_Basics failed - 7 " +
+ "exception should not have been thrown.");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ try {
+ s = new Socket(InetAddress.getLocalHost(), 30002);
+ harness.fail("Error : test_Basics failed - 8 " +
+ "exception should have been thrown here");
+ }
+ catch (ConnectException e) {
+ harness.check(true);
+ }
+ catch (IOException e) {
+ harness.fail("Error : test_Basics failed - 8 " +
+ "ConnectException should have been thrown here");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ if (true) { // 1.1 features not implemented
+
+ // src socket target socket given(as hostname).
+ try {
+ s = new Socket ("babuspdjflks.gnu.org.", 200,
+ InetAddress.getLocalHost() ,20006);
+ harness.fail("Error : test_Basics failed - 9 " +
+ " exception should have been thrown here");
+ }
+ catch (UnknownHostException e) {
+ harness.check(true);
+ }
+ catch (IOException e) {
+ harness.fail("Error : test_Basics failed - 10 " +
+ "UnknownHostException should have been thrown here");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ try {
+ s = new Socket("127.0.0.1", 30003,
+ InetAddress.getLocalHost(), 20007);
+ harness.fail("Error : test_Basics failed - 11 " +
+ " exception should have been thrown here");
+ }
+ catch (UnknownHostException e) {
+ harness.fail("Error : test_Basics failed - 12 " +
+ "UnknownHostException should not have been thrown");
+ harness.debug(e);
+ }
+ catch (IOException e) {
+ harness.check(true);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+
+ // src socket target socket given (as ip address).
+ try {
+ s = new Socket(InetAddress.getLocalHost(), 30004,
+ InetAddress.getLocalHost(), 20008);
+ harness.fail("Error : test_Basics failed - 13 " +
+ " exception should have been thrown here");
+ }
+ catch (UnknownHostException e) {
+ harness.fail("Error : test_Basics failed - 14 " +
+ "Unknown host exception should not have been thrown");
+ harness.debug(e);
+ }
+ catch (IOException e) {
+ harness.check(true);
+ }
+ finally {
+ try {
+ if (s != null)
+ s.close();
+ } catch(IOException ignored) {}
+ }
+ }
+ }
+
+ public void test_BasicBServer()
+ {
+ harness.checkPoint("BasicBServer");
+ SocketBServer srv = new SocketBServer();
+ SocketBServer.harness = harness;
+ srv.init();
+ srv.start();
+ Thread.yield();
+
+ Socket sock = null;
+ try {
+ sock = new Socket("127.0.0.1", 20002);
+ InputStream is = sock.getInputStream();
+
+ DataInputStream dis = new DataInputStream(is);
+
+ String str = dis.readLine();
+
+ harness.check(str.equals("hello buddy"),
+ "Error : test_BasicServer failed - 1 " +
+ "string returned is not correct.");
+ harness.check(true);
+ }
+ catch (Exception e) {
+ harness.fail("Error : test_BasicServer failed - 2 exception was thrown");
+ harness.debug(e);
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ } catch (IOException ignored) {}
+ }
+ }
+
+ public void test_closed()
+ {
+ harness.checkPoint("closed");
+ Socket sock = null;
+
+ try
+ {
+ sock = new Socket();
+ sock.close();
+ sock.setSoTimeout(1000);
+ harness.fail("exception expected");
+ }
+ catch (SocketException e)
+ {
+ harness.check(e.getMessage().compareToIgnoreCase("socket is closed") == 0,
+ "wrong SocketException error message: " + e.getMessage());
+ }
+ catch (Exception e)
+ {
+ harness.fail("wrong exception thrown");
+ }
+ }
+
+
+ public void testall()
+ {
+ test_Basics();
+ test_params();
+ test_BasicServer();
+ test_BasicBServer();
+ test_closed();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/TestSocketImplFactory.java b/gnu/testlet/java/net/Socket/TestSocketImplFactory.java
new file mode 100644
index 00000000..c86cf34e
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/TestSocketImplFactory.java
@@ -0,0 +1,117 @@
+/*
+ Copyright (C) 2003 C. Brian Jones
+ Copyright (C) 2004 Mark J. Wielaard
+
+ 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.java.net.Socket;
+
+import java.net.*;
+import java.lang.reflect.*;
+
+public class TestSocketImplFactory
+ implements SocketImplFactory
+{
+ private Constructor implConstructor = null;
+
+ public TestSocketImplFactory()
+ {
+ // We better make sure we can actually return something in case
+ // this factory is actually used later. The trick we use is to
+ // create a Socket with the empty constructor (which is defined as
+ // returning an unconnected Socket with the default SocketImpl).
+ // Then we use reflection to scoop out this object.
+ SocketImpl impl = null;
+ try
+ {
+ Class sic = Class.forName("java.net.SocketImpl");
+ Socket s = new Socket();
+ Field[] fields = s.getClass().getDeclaredFields();
+ int i = 0;
+ while (impl == null && i < fields.length)
+ {
+ Field f = fields[i];
+ Class fc = f.getType();
+ if (sic.isAssignableFrom(fc))
+ {
+ f.setAccessible(true);
+ impl = (SocketImpl) f.get(s);
+ }
+ i++;
+ }
+ }
+ catch (IllegalAccessException iae)
+ {
+ Error e = new InternalError("Unable to get default SocketImpl " + iae);
+ e.initCause(iae);
+ throw e;
+ }
+ catch (ClassNotFoundException cnf)
+ {
+ Error e = new InternalError("Unable to get default SocketImpl " + cnf);
+ e.initCause(cnf);
+ throw e;
+ }
+
+ if (impl == null)
+ throw new InternalError("Couldn't determine default SocketImpl");
+
+ // Now hope that there is a non-argument constructor.
+ int i = 0;
+ Constructor[] cons = impl.getClass().getDeclaredConstructors();
+ while (implConstructor == null && i < cons.length)
+ {
+ Constructor c = cons[i];
+ if (c.getParameterTypes().length == 0)
+ implConstructor = c;
+ i++;
+ }
+
+ if (implConstructor == null)
+ throw new InternalError("Couldn't get SocketImpl Constructor");
+ else
+ implConstructor.setAccessible(true);
+ }
+
+ public SocketImpl createSocketImpl ()
+ {
+ try
+ {
+ return (SocketImpl) implConstructor.newInstance(new Object[0]);
+ }
+ catch (InstantiationException ie)
+ {
+ ie.printStackTrace();
+ // Null is better then nothing?
+ return null;
+ }
+ catch (IllegalAccessException iae)
+ {
+ iae.printStackTrace();
+ // Null is better then nothing?
+ return null;
+ }
+ catch(InvocationTargetException ite)
+ {
+ ite.printStackTrace();
+ // Null is better then nothing?
+ return null;
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/jdk12.java b/gnu/testlet/java/net/Socket/jdk12.java
new file mode 100644
index 00000000..4f585f41
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/jdk12.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+// Uses: ServerThread
+
+/*
+ Copyright (C) 2003 C. Brian Jones
+ Copyright (C) 2005 Mark J. Wielaard
+
+ 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.java.net.Socket;
+
+import java.io.IOException;
+import java.net.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class jdk12 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String host = "localhost";
+ int port = 14610;
+ Socket sock = null;
+ ServerThread server = new ServerThread(harness, port);
+ try
+ {
+ sock = new Socket (host, port);
+
+ harness.checkPoint("setSendBufferSize()");
+ harness.checkPoint("getSendBufferSize()");
+ harness.checkPoint("setReceiveBufferSize()");
+ harness.checkPoint("getReceiveBufferSize()");
+
+ }
+ catch (Throwable t)
+ {
+ harness.debug (t);
+ harness.fail ("unexpected error: " + t.getMessage ());
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ server.close();
+ } catch(IOException ignored) {}
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/jdk13.java b/gnu/testlet/java/net/Socket/jdk13.java
new file mode 100644
index 00000000..523eaa47
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/jdk13.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.3
+// Uses: ServerThread
+
+/*
+ Copyright (C) 2003 C. Brian Jones
+ Copyright (C) 2003 Mark J. Wielaard <mark@klomp.org>
+
+ 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.java.net.Socket;
+
+import java.io.IOException;
+import java.net.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class jdk13 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String host = "localhost";
+ int port = 14610;
+ Socket sock = null;
+ ServerThread server = new ServerThread(harness, port);
+ try
+ {
+ harness.checkPoint("getKeepAlive()");
+ sock = new Socket (host, port);
+
+ harness.debug ("getKeepAlive() default: " + sock.getKeepAlive ());
+ harness.check (sock.getKeepAlive () == false, "getKeepAlive() default should be false");
+ sock.setKeepAlive (true);
+ harness.check (sock.getKeepAlive (), "setKeepAlive() - 1");
+
+ harness.checkPoint ("shutdownInput()");
+ harness.checkPoint ("shutdownOutput()");
+ }
+ catch (Throwable t)
+ {
+ harness.debug (t);
+ harness.fail ("unexpected error: " + t.getMessage ());
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ server.close();
+ } catch(IOException ignored) {}
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/jdk14.java b/gnu/testlet/java/net/Socket/jdk14.java
new file mode 100644
index 00000000..9fb64a7b
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/jdk14.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.4
+// Uses: ServerThread
+
+/*
+ Copyright (C) 2003 C. Brian Jones
+ Copyright (C) 2003 Mark J. Wielaard <mark@klomp.org>
+
+ 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.java.net.Socket;
+
+import java.io.IOException;
+import java.net.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class jdk14 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String host = "localhost";
+ int port = 14610;
+ Socket sock = null;
+ ServerThread server = new ServerThread(harness, port);
+ try
+ {
+ sock = new Socket (); // unconnected socket
+ harness.check (sock.getPort (), 0, "unconnected socket getPort() should return 0");
+ harness.check (sock.getLocalPort (), -1, "unbound socket getLocalPort() should return -1");
+
+ harness.debug(host);
+ sock = new Socket (host, port);
+
+ harness.checkPoint("connect()");
+ harness.checkPoint("bind()");
+ harness.checkPoint("getRemoteSocketAddress()");
+ harness.checkPoint("getLocalSocketAddress()");
+ harness.checkPoint("getChannel");
+ harness.checkPoint("sendUrgentData");
+ harness.checkPoint("setOOBInline");
+ harness.checkPoint("getOOBInline");
+ harness.checkPoint("setTrafficClass()");
+ harness.checkPoint("getTrafficClass()");
+ harness.checkPoint("setReuseAddress()");
+ harness.checkPoint("getReuseAddress()");
+ harness.checkPoint("isConnected()");
+ harness.checkPoint("isBound()");
+ harness.checkPoint("isClosed()");
+ harness.checkPoint("isInputShutdown()");
+ harness.checkPoint("isOutputShutdown()");
+ }
+ catch (Throwable t)
+ {
+ harness.debug (t);
+ harness.fail ("unexpected error: " + t.getMessage ());
+ }
+ finally {
+ try {
+ if (sock != null)
+ sock.close();
+ server.close();
+ } catch(IOException ignored) {}
+ }
+
+ try
+ {
+ harness.checkPoint("bind to any local address");
+ sock = new Socket();
+ InetAddress ia = null;
+ InetSocketAddress sa = new InetSocketAddress(ia, 30006);
+ sock.bind(sa);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("unexpected error: bind() threw an exception");
+ }
+ finally
+ {
+ try
+ {
+ if (sock != null)
+ sock.close();
+ }
+ catch(IOException ignored) {}
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/Socket/security.java b/gnu/testlet/java/net/Socket/security.java
new file mode 100644
index 00000000..f7eb4fa1
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/security.java
@@ -0,0 +1,216 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.Socket;
+
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketPermission;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+
+ harness.checkPoint("setup");
+
+ InetAddress inetaddr = InetAddress.getByName(null);
+ String hostname = inetaddr.getHostName();
+ String hostaddr = inetaddr.getHostAddress();
+ harness.check(!hostname.equals(hostaddr));
+
+ ServerSocket socket = new ServerSocket(0, 50, inetaddr);
+ int hostport = socket.getLocalPort();
+
+ InetSocketAddress sockaddr = new InetSocketAddress(inetaddr, hostport);
+
+ Permission[] checkConnect = new Permission[] {
+ new SocketPermission(hostaddr + ":" + hostport, "connect")};
+
+ Permission[] checkResolveConnect = new Permission[] {
+ new SocketPermission(hostname, "resolve"),
+ new SocketPermission(hostaddr + ":" + hostport, "connect")};
+
+ Permission[] checkSelectorProvider = new Permission[] {
+ new RuntimePermission("selectorProvider")};
+
+ Permission[] checkSetFactory = new Permission[] {
+ new RuntimePermission("setFactory")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.Socket-Socket(InetAddress, int)
+ try {
+ harness.checkPoint("Socket(InetAddress, int)");
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(inetaddr, hostport).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.Socket-Socket(String, int)
+ harness.checkPoint("Socket(String, int)");
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(hostaddr, hostport).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkResolveConnect, checkSelectorProvider);
+ new Socket(hostname, hostport).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.Socket-Socket(InetAddress, int, boolean)
+ harness.checkPoint("Socket(InetAddress, int, boolean)");
+ for (int i = 0; i < 2; i++) {
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(inetaddr, hostport, i == 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // throwpoint: java.net.Socket-Socket(String, int, boolean)
+ harness.checkPoint("Socket(String, int, boolean)");
+ for (int i = 0; i < 2; i++) {
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(hostaddr, hostport, i == 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkResolveConnect, checkSelectorProvider);
+ new Socket(hostname, hostport, i == 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ }
+
+ // throwpoint: java.net.Socket-Socket(InetAddress,int,InetAddress,int)
+ harness.checkPoint("Socket(InetAddress, int, InetAddress, int)");
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(inetaddr, hostport, inetaddr, 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.Socket-Socket(String, int, InetAddress, int)
+ harness.checkPoint("Socket(String, int, InetAddress, int)");
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ new Socket(hostaddr, hostport, inetaddr, 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+ try {
+ sm.prepareChecks(checkResolveConnect, checkSelectorProvider);
+ new Socket(hostname, hostport, inetaddr, 0).close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: TODO: java.net.Socket-Socket(Proxy)
+
+ // throwpoint: java.net.Socket-connect(InetSocketAddress)
+ harness.checkPoint("connect(InetSocketAddress)");
+ try {
+ sm.prepareChecks(checkConnect, checkSelectorProvider);
+ Socket sock = new Socket();
+ sock.connect(sockaddr, hostport);
+ sock.close();
+ sm.checkAllChecked();
+ }
+ catch (SecurityException e) {
+ harness.debug(e);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.Socket-setSocketImplFactory
+ harness.checkPoint("setSocketImplFactory");
+ try {
+ sm.prepareHaltingChecks(checkSetFactory);
+ Socket.setSocketImplFactory(null);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/net/Socket/setSocketImplFactory.java b/gnu/testlet/java/net/Socket/setSocketImplFactory.java
new file mode 100644
index 00000000..96336f0a
--- /dev/null
+++ b/gnu/testlet/java/net/Socket/setSocketImplFactory.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.0
+// Uses: TestSocketImplFactory
+
+/*
+ Copyright (C) 2003 C. Brian Jones
+
+ 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.java.net.Socket;
+
+import java.net.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class setSocketImplFactory implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ try
+ {
+ Socket.setSocketImplFactory (null);
+ harness.check (true, "setSocketImplFactory(null) when not already set");
+ }
+ catch (SocketException se)
+ {
+ harness.debug (se);
+ harness.check (false, "setSocketImplFactory(null) when not already set");
+ }
+
+ Socket.setSocketImplFactory (new TestSocketImplFactory ());
+ harness.check (true, "setSocketImplFactory() - 1");
+
+ try
+ {
+ Socket.setSocketImplFactory (new TestSocketImplFactory ());
+ harness.check (false, "setSocketImplFactory() - 2");
+ }
+ catch (SocketException se)
+ {
+ harness.check (true, "setSocketImplFactory() - 2");
+ }
+
+ try
+ {
+ Socket.setSocketImplFactory (null);
+ harness.check (false, "setSocketImplFactory(null) when already set");
+ }
+ catch (SocketException se)
+ {
+ harness.debug (se);
+ harness.check (true, "setSocketImplFactory(null) when already set");
+ }
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check (false, "setSocketImplFactory() - 1");
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/net/SocketPermission/CVS/Entries b/gnu/testlet/java/net/SocketPermission/CVS/Entries
new file mode 100644
index 00000000..38a5ad04
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/CVS/Entries
@@ -0,0 +1,4 @@
+/argument.java/1.6/Tue Feb 6 16:46:20 2007//
+/implies.java/1.9/Tue Feb 6 16:46:20 2007//
+/serialization.java/1.2/Tue Feb 6 16:46:20 2007//
+D
diff --git a/gnu/testlet/java/net/SocketPermission/CVS/Repository b/gnu/testlet/java/net/SocketPermission/CVS/Repository
new file mode 100644
index 00000000..d468512f
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/SocketPermission
diff --git a/gnu/testlet/java/net/SocketPermission/CVS/Root b/gnu/testlet/java/net/SocketPermission/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/SocketPermission/argument.java b/gnu/testlet/java/net/SocketPermission/argument.java
new file mode 100644
index 00000000..24570b80
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/argument.java
@@ -0,0 +1,130 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.SocketPermission;
+
+import java.net.SocketPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class argument implements Testlet
+{
+ private Test[] hosts = new Test[] {
+ new Test("", true),
+
+ new Test("local:host", false),
+ new Test("localhost", true),
+ new Test("example.com", true),
+ new Test("*.com", true), // XXX try wildcard in other positions
+
+ new Test("209.132:177.50", false),
+ new Test("209.132.177.50", true), // XXX try broken addresses
+
+ new Test("[", false),
+ new Test("[::192.9.5.5]3", false),
+ new Test("[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", true),
+ new Test("[3ffe:2a00:100:7031::1]", true),
+ new Test("[1080::8:800:200C:417A]", true),
+ new Test("[::192.9.5.5]", true),
+ new Test("[::FFFF:129.144.52.38]", true), // XXX try broken addresses
+
+ new Test("FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", true),
+ new Test("3ffe:2a00:100:7031::1", false),
+ new Test("1080::8:800:200C:417A", false),
+ new Test("::192.9.5.5", false),
+ new Test("::FFFF:129.144.52.38", false),
+ new Test("0:0:0:0:0:0:0:1", true),
+ };
+
+ private Test[] ports = new Test[] {
+ new Test("", true),
+ new Test(":", true),
+
+ new Test(":80", true),
+ new Test(":-80", true),
+ new Test(":80-", true),
+ new Test(":70-90", true),
+
+ new Test(":8a", false),
+ new Test(":-8a", false),
+ new Test(":8a-", false),
+ new Test(":7a-90", false),
+ new Test(":70-9a", false),
+
+ new Test(":800000", true),
+ new Test(":-800000", true),
+ new Test(":800000-", true),
+ new Test(":700000-900000", true),
+
+ new Test(":-", false),
+ new Test(":--80", false),
+ new Test(":-80-", false),
+ new Test(":80--", false),
+ new Test(":70--90", false),
+ new Test(":-70-90", false),
+ new Test(":-70--90", false),
+ new Test(":70-90-", false),
+ new Test(":-70-90-", false),
+ };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("argument checking");
+
+ for (int i = 0; i < hosts.length; i++) {
+ for (int j = 0; j < ports.length; j++) {
+ Test test = new Test(hosts[i], ports[j]);
+ boolean success;
+
+ try {
+ new SocketPermission(test.hostport, "connect");
+ success = true;
+ }
+ catch (IllegalArgumentException e) {
+ success = false;
+ }
+
+ harness.check(success == test.expect, test.hostport + " should "
+ + (test.expect ? "be ok" : "fail"));
+ }
+ }
+ }
+
+ private static class Test
+ {
+ String hostport;
+ boolean expect;
+
+ Test(String hostport, boolean expect)
+ {
+ this.hostport = hostport;
+ this.expect = expect;
+ }
+
+ Test(Test host, Test port)
+ {
+ hostport = host.hostport + port.hostport;
+ expect = host.expect && port.expect;
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/SocketPermission/implies.java b/gnu/testlet/java/net/SocketPermission/implies.java
new file mode 100644
index 00000000..4b6ee94e
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/implies.java
@@ -0,0 +1,290 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.SocketPermission;
+
+import java.net.InetAddress;
+import java.net.SocketPermission;
+import java.net.UnknownHostException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class implies implements Testlet
+{
+ static String redhat_com_addr = null;
+ static {
+ try {
+ redhat_com_addr =
+ InetAddress.getByName("www.redhat.com").getHostAddress();
+ }
+ catch (UnknownHostException e) {
+ }
+ }
+
+ private Test[] hosts = new Test[] {
+ new Test("", "", false),
+ new Test("localhost", "localhost", true),
+ new Test("127.0.0.1", "localhost", true),
+ new Test("localhost", "127.0.0.1", true),
+ new Test("www.redhat.com", "www.redhat.com", true),
+ new Test("*.redhat.com", "www.redhat.com", true),
+ new Test("www.redhat.com", "*.redhat.com", false),
+ new Test(redhat_com_addr, redhat_com_addr, true),
+ new Test("www.redhat.com", redhat_com_addr, true),
+ new Test(redhat_com_addr, "www.redhat.com", true),
+ new Test("*.redhat.com", redhat_com_addr, true),
+ new Test(redhat_com_addr, "*.redhat.com", false),
+ new Test("209.132.177.50", "209.132.177.51", false),
+ new Test("209.132.177.50", "209.132.178.50", false),
+ new Test("209.132.177.50", "209.130.177.50", false),
+ new Test("209.132.177.50", "208.132.177.50", false),
+ // full uncompressed IPv6 addresses
+ new Test("[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
+ "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", true),
+ new Test("[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
+ "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", true),
+ new Test("FEDC:BA98:7654:3210:FEDC:BA98:7654:3210",
+ "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", true),
+ new Test("FEDC:BA98:7654:3210:FEDC:BA98:7654:3210",
+ "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", true),
+ new Test("[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
+ "[fedc:ba98:7654:3210:fedc:ba98:7654:3210]", true),
+ new Test("[FEDC:Bb98:7654:3210:FEDC:BA98:7654:3210]",
+ "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", false),
+ // compressed IPv6 addresses
+ new Test("[1080:0:0:0:8:800:200C:417A]",
+ "[1080:0000:0:0:8:800:200C:417A]", true),
+ new Test("[1080::8:800:200C:417A]", "[1080::8:800:200C:417A]", true),
+ new Test("[1080::8:800:200C:417A]", "[1080::8:800:200C:417a]", true),
+ new Test("[1080::8:800:200C:417A]", "[1080:0:0:0:8:800:200C:417A]", true),
+ new Test("[1080:0:0:0:8:800:200C:417A]", "[1080::8:800:200C:417A]", true),
+ new Test("[1080::8:800:200C:417B]", "[1080:0:0:0:8:800:200C:417A]", false),
+ new Test("[1080:0:0:0:8:800:200C:417A]", "[1080::8:800:200C:417B]", false),
+ new Test("[FF01::101]", "[FF01:0:0:0:0:0:0:101]", true),
+ new Test("[FF01:0:0:0:0:0:0:101]", "[FF01::101]", true),
+ new Test("[::1]", "[0:0:0:0:0:0:0:1]", true),
+ new Test("[0:0:0:0:0:0:0:1]", "[::1]", true),
+ new Test("[::]", "[0:0:0:0:0:0:0:0]", true),
+ new Test("[0:0:0:0:0:0:0:0]", "[::]", true),
+ // alternative IPv6 addresses
+ new Test("[0:0:0:0:0:0:13.1.68.3]", "[0:0:0:0:0:0:13.1.68.3]", true),
+ new Test("[::13.1.68.3]", "[0:0:0:0:0:0:13.1.68.3]", true),
+ new Test("[0:0:0:0:0:0:13.1.68.3]", "[::13.1.68.3]", true),
+ new Test("[::13.1.68.3]", "[::13.1.68.3]", true),
+ new Test("[::13.1.68.3]", "[::D01:4403]", true),
+ new Test("[::D01:4403]", "[::13.1.68.3]", true),
+ new Test("[::D01:4403]", "[::D01:4403]", true),
+ new Test("[::D01:4403]", "[0:0:0:0:0:0:13.1.68.3]", true),
+ new Test("[0:0:0:0:0:0:13.1.68.3]", "[::D01:4403]", true),
+ new Test("[0:0:0:0:0:FFFF:129.144.52.38]",
+ "[0:0:0:0:0:FFFF:129.144.52.38]", true),
+ new Test("[::FFFF:129.144.52.38]", "[0:0:0:0:0:FFFF:129.144.52.38]", true),
+ new Test("[0:0:0:0:0:FFFF:129.144.52.38]", "[::FFFF:129.144.52.38]", true),
+ new Test("[::FFFF:129.144.52.38]", "[::FFFF:129.144.52.38]", true),
+ new Test("[::13.1.68.3]", "[::FFFF:13.1.68.3]", false),
+ new Test("[::FFFF:13.1.68.3]", "[::13.1.68.3]", false),
+ // IPv4-mapped IPv6 addresses
+ new Test("[::FFFF:13.1.68.3]", "13.1.68.3", true),
+ new Test("13.1.68.3", "[::FFFF:13.1.68.3]", true),
+ new Test("[::FFFF:D01:4403]", "13.1.68.3", true),
+ new Test("13.1.68.3", "[::FFFF:D01:4403]", true),
+ new Test("[::13.1.68.3]", "13.1.68.3", false),
+ new Test("13.1.68.3", "[::13.1.68.3]", false),
+ new Test("[::D01:4403]", "13.1.68.3", false),
+ new Test("13.1.68.3", "[::D01:4403]", false),
+ // Unconventional IPv4 addresses
+ new Test("13.1.68.3", "13.1.17411", true),
+ new Test("13.1.17411", "13.1.68.3", true),
+ new Test("13.1.68.3", "13.82947", true),
+ new Test("13.82947", "13.1.68.3", true),
+ new Test("13.1.68.3", "13.82947", true),
+ new Test("13.1.68.3",
+ String.valueOf((13 << 24) + (1 << 16) + (68 << 8) + 3), true),
+ new Test(String.valueOf((13 << 24) + (1 << 16) + (68 << 8) + 3),
+ "13.1.68.3", true),
+ };
+
+ private Test[] ports = new Test[] {
+ // no restriction
+ new Test("", "", true),
+ new Test("", ":80", true),
+ new Test("", ":-80", true),
+ new Test("", ":80-", true),
+ new Test("", ":70-90", true),
+ // one port
+ new Test(":80", "", false),
+ new Test(":80", ":70", false),
+ new Test(":80", ":80", true),
+ new Test(":80", ":-80", false),
+ new Test(":80", ":80-", false),
+ new Test(":80", ":70-90", false),
+ new Test(":80", ":80-80", true),
+ new Test(":80", ":90-90", false),
+ // up to and including x
+ new Test(":-80", "", false),
+ new Test(":-80", ":70", true),
+ new Test(":-80", ":80", true),
+ new Test(":-80", ":90", false),
+ new Test(":-80", ":-70", true),
+ new Test(":-80", ":-80", true),
+ new Test(":-80", ":-90", false),
+ new Test(":-80", ":70-", false),
+ new Test(":-80", ":80-", false),
+ new Test(":-80", ":90-", false),
+ new Test(":-80", ":60-70", true),
+ new Test(":-80", ":70-90", false),
+ new Test(":-80", ":90-100", false),
+ new Test(":-80", ":70-70", true),
+ new Test(":-80", ":80-80", true),
+ new Test(":-80", ":90-90", false),
+ // x and above
+ new Test(":80-", "", false),
+ new Test(":80-", ":70", false),
+ new Test(":80-", ":80", true),
+ new Test(":80-", ":90", true),
+ new Test(":80-", ":-70", false),
+ new Test(":80-", ":-80", false),
+ new Test(":80-", ":-90", false),
+ new Test(":80-", ":70-", false),
+ new Test(":80-", ":80-", true),
+ new Test(":80-", ":90-", true),
+ new Test(":80-", ":60-70", false),
+ new Test(":80-", ":70-90", false),
+ new Test(":80-", ":90-100", true),
+ new Test(":80-", ":70-70", false),
+ new Test(":80-", ":80-80", true),
+ new Test(":80-", ":90-90", true),
+ // double-ended range
+ new Test(":75-85", "", false),
+ new Test(":75-85", ":70", false),
+ new Test(":75-85", ":80", true),
+ new Test(":75-85", ":90", false),
+ new Test(":75-85", ":-70", false),
+ new Test(":75-85", ":-80", false),
+ new Test(":75-85", ":-90", false),
+ new Test(":75-85", ":70-", false),
+ new Test(":75-85", ":80-", false),
+ new Test(":75-85", ":90-", false),
+ new Test(":75-85", ":70-80", false),
+ new Test(":75-85", ":75-85", true),
+ new Test(":75-85", ":80-90", false),
+ new Test(":75-85", ":70-90", false),
+ new Test(":75-85", ":70-70", false),
+ new Test(":75-85", ":80-80", true),
+ new Test(":75-85", ":90-90", false),
+ // bit loss
+ new Test(":80", ":65616", false), // 65616 & 0xFFFF = 80
+ new Test(":80", ":-65456", false), // -65456 & 0xFFFF = 80
+ // also 4294967376?
+ };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("hostport checking");
+ harness.check(redhat_com_addr != null);
+
+ for (int i = 0; i < hosts.length; i++) {
+ for (int j = 0; j < ports.length; j++) {
+ Test test = new Test(hosts[i], ports[j]);
+
+ SocketPermission px = new SocketPermission(test.x, "connect");
+ SocketPermission py = new SocketPermission(test.y, "connect");
+
+ try {
+ harness.check(px.implies(py) == test.expect, test.x + " should"
+ + (test.expect ? "" : " not") + " imply " + test.y);
+ }
+ catch (Exception e) {
+ harness.check(false, test.x + " implies " + test.y + " failed");
+ harness.debug(e);
+ }
+ }
+ }
+
+ harness.checkPoint("actions checking");
+ for (int i = 1; i < 1 << actions.length; i++) {
+ for (int j = 1; j < 1 << actions.length; j++) {
+ SocketPermission pi = new SocketPermission("localhost", makeAction(i));
+ SocketPermission pj = new SocketPermission("localhost", makeAction(j));
+
+ harness.check(pi.implies(pj) == ((maybeAddResolve(i) & j) == j));
+ }
+ }
+ }
+
+ // stuff for hosts checking
+ private static class Test
+ {
+ String x, y;
+ boolean expect;
+
+ Test(String x, String y, boolean expect)
+ {
+ this.x = x;
+ this.y = y;
+ this.expect = expect;
+ }
+
+ Test(Test host, Test port)
+ {
+ x = host.x + port.x;
+ y = host.y + port.y;
+ if (x.length() == 0 && y.length() == 0)
+ expect = true;
+ else
+ expect = host.expect && port.expect;
+ }
+ }
+
+ // stuff for actions checking
+ private static String[] actions = {"accept", "connect", "listen", "resolve"};
+ private static String makeAction(int mask)
+ {
+ String result = "";
+ for (int i = 0; i < actions.length; i++) {
+ if ((mask & (1 << i)) != 0) {
+ if (result.length() > 0)
+ result += ",";
+ result += actions[i];
+ }
+ }
+ return result;
+ }
+
+ // All other actions imply resolve
+ private static int maybeAddResolve(int mask)
+ {
+ boolean addit = false;
+ int addwhat = 0;
+
+ for (int i = 0; i < actions.length; i++) {
+ if (actions[i].equals("resolve"))
+ addwhat = 1 << i;
+ else if ((mask & (1 << i)) != 0)
+ addit = true;
+ }
+ if (addit)
+ mask |= addwhat;
+ return mask;
+ }
+}
diff --git a/gnu/testlet/java/net/SocketPermission/serialization.java b/gnu/testlet/java/net/SocketPermission/serialization.java
new file mode 100644
index 00000000..81c80bbb
--- /dev/null
+++ b/gnu/testlet/java/net/SocketPermission/serialization.java
@@ -0,0 +1,104 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.SocketPermission;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.net.SocketPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class serialization implements Testlet
+{
+ private String[] hosts = new String[] {
+ "",
+ "localhost",
+ "example.com",
+ "*.com",
+ "209.132.177.50",
+ "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]",
+ "[3ffe:2a00:100:7031::1]",
+ "[::192.9.5.5]",
+ };
+
+ private String[] ports = new String[] {
+ "",
+ ":",
+ ":80",
+ ":-80",
+ ":80-",
+ ":70-90",
+ ":800000",
+ ":700000-900000",
+ };
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("serialization checking");
+
+ for (int i = 0; i < hosts.length; i++) {
+ for (int j = 0; j < ports.length; j++) {
+ for (int k = 1; k < 1 << actions.length; k++) {
+ SocketPermission p1 = new SocketPermission(
+ hosts[i] + ports[j], makeActions(k));
+ SocketPermission p2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(p1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray()));
+ p2 = (SocketPermission) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(p1.equals(p2));
+ }
+ }
+ }
+ }
+
+ // stuff for actions checking
+ private static String[] actions = {"accept", "connect", "listen", "resolve"};
+ private static String makeActions(int mask)
+ {
+ String result = "";
+ for (int i = 0; i < actions.length; i++) {
+ if ((mask & (1 << i)) != 0) {
+ if (result.length() > 0)
+ result += ",";
+ result += actions[i];
+ }
+ }
+ return result;
+ }
+}
diff --git a/gnu/testlet/java/net/URI/CVS/Entries b/gnu/testlet/java/net/URI/CVS/Entries
new file mode 100644
index 00000000..baaec65d
--- /dev/null
+++ b/gnu/testlet/java/net/URI/CVS/Entries
@@ -0,0 +1,9 @@
+/ComparisonTest.java/1.2/Tue May 24 17:49:59 2005//
+/EqualityTest.java/1.1/Fri May 20 20:14:25 2005//
+/NormalizationTest.java/1.1/Fri May 20 20:14:25 2005//
+/RelativizationTest.java/1.1/Fri May 20 20:14:25 2005//
+/ToASCIIStringTest.java/1.1/Fri May 20 20:14:25 2005//
+/ToStringTest.java/1.1/Sun Jun 5 11:36:50 2005//
+/URITest.java/1.3/Mon May 16 20:20:11 2005//
+/UnicodeURI.java/1.1/Mon Mar 6 01:01:46 2006//
+D
diff --git a/gnu/testlet/java/net/URI/CVS/Repository b/gnu/testlet/java/net/URI/CVS/Repository
new file mode 100644
index 00000000..a1f04fee
--- /dev/null
+++ b/gnu/testlet/java/net/URI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URI
diff --git a/gnu/testlet/java/net/URI/CVS/Root b/gnu/testlet/java/net/URI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URI/ComparisonTest.java b/gnu/testlet/java/net/URI/ComparisonTest.java
new file mode 100644
index 00000000..1e94733e
--- /dev/null
+++ b/gnu/testlet/java/net/URI/ComparisonTest.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+public class ComparisonTest
+ implements Testlet
+{
+
+ private static final String REL_URI = "..";
+ private static final String HIER_URI = "http://jones@example.com:98?name=Fred#1";
+ private static final String OPAQ_URI = "isbn:123456789#34";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.check(new URI(REL_URI).compareTo(new URI(REL_URI)) == 0);
+ URI testURI = new URI(HIER_URI);
+ h.check(testURI.compareTo(testURI) == 0);
+ h.check(testURI.compareTo(new URI(HIER_URI)) == 0);
+ h.check(testURI.compareTo(new URI("ftp://jones@example.com:98?name=Fred#1")) > 0);
+ h.check(testURI.compareTo(new URI("http://jones@example.com:98?name=Fred#2")) < 0);
+ h.check(testURI.compareTo(new URI("http://alice@example.com:98?name=Fred#1")) > 0);
+ h.check(testURI.compareTo(new URI("http://jones@examples.com:98?name=Fred#1")) < 0);
+ h.check(testURI.compareTo(new URI("http://jones@example.com:99?name=Fred#1")) < 0);
+ h.check(testURI.compareTo(new URI("http://jones@example.com:98?name=Sally#1")) < 0);
+ URI opaqURI = new URI(OPAQ_URI);
+ h.check(opaqURI.compareTo(opaqURI) == 0);
+ h.check(opaqURI.compareTo(new URI(OPAQ_URI)) == 0);
+ h.check(opaqURI.compareTo(testURI) > 0);
+ h.check(opaqURI.compareTo(new URI("isbn:987654321#34")) < 0);
+ SortedSet s = new TreeSet();
+ s.add(opaqURI);
+ s.add(testURI);
+ s.add(new URI("ftp://jones@example.com:98?name=Fred#1"));
+ s.add(new URI("http://jones@example.com:98?name=Fred#2"));
+ s.add(new URI("http://alice@example.com:98?name=Fred#1"));
+ s.add(new URI("http://jones@examples.com:98?name=Fred#1"));
+ s.add(new URI("http://jones@example.com:99?name=Fred#1"));
+ s.add(new URI("http://jones@example.com:98?name=Sally#1"));
+ s.add(new URI("isbn:987654321#34"));
+ h.debug(s.toString());
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/EqualityTest.java b/gnu/testlet/java/net/URI/EqualityTest.java
new file mode 100644
index 00000000..324ad8b6
--- /dev/null
+++ b/gnu/testlet/java/net/URI/EqualityTest.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class EqualityTest
+ implements Testlet
+{
+
+ private static final String REL_URI = "..";
+ private static final String HIER_URI = "http://jones@example.com:98?name=Fred#1";
+ private static final String OPAQ_URI = "isbn:123456789#34";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.check(new URI(REL_URI).equals(new URI(REL_URI)));
+ URI testURI = new URI(HIER_URI);
+ h.check(testURI.equals(testURI));
+ h.check(testURI.equals(new URI(HIER_URI)));
+ h.check(!testURI.equals(new URI("ftp://jones@example.com:98?name=Fred#1")));
+ h.check(!testURI.equals(new URI("http://jones@example.com:98?name=Fred#2")));
+ h.check(!testURI.equals(new URI("http://alice@example.com:98?name=Fred#1")));
+ h.check(!testURI.equals(new URI("http://jones@examples.com:98?name=Fred#1")));
+ h.check(!testURI.equals(new URI("http://jones@example.com:99?name=Fred#1")));
+ h.check(!testURI.equals(new URI("http://jones@example.com:98?name=Sally#1")));
+ URI opaqURI = new URI(OPAQ_URI);
+ h.check(opaqURI.equals(opaqURI));
+ h.check(opaqURI.equals(new URI(OPAQ_URI)));
+ h.check(!opaqURI.equals(testURI));
+ h.check(!opaqURI.equals(new URI("isbn:987654321#34")));
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/NormalizationTest.java b/gnu/testlet/java/net/URI/NormalizationTest.java
new file mode 100644
index 00000000..63820c82
--- /dev/null
+++ b/gnu/testlet/java/net/URI/NormalizationTest.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class NormalizationTest
+ implements Testlet
+{
+
+ private static final String BASE_URI = "http://www.dcs.shef.ac.uk/com4280/";
+ private static final String RELATIVE_URI = "special/../special/../artistdac1.html?id=32";
+ private static final String CORRECT_URI = "http://www.dcs.shef.ac.uk/com4280/artistdac1.html?id=32";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.check(new URI("/a/b/c/./../../g").normalize().toString(), "/a/g");
+ h.check(new URI("mid/content=5/../6").normalize().toString(), "mid/6");
+ h.check(new URI(BASE_URI+RELATIVE_URI).normalize().toString(), CORRECT_URI);
+ h.check(new URI(BASE_URI).resolve(RELATIVE_URI).toString(), CORRECT_URI);
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/net/URI/RelativizationTest.java b/gnu/testlet/java/net/URI/RelativizationTest.java
new file mode 100644
index 00000000..253f347c
--- /dev/null
+++ b/gnu/testlet/java/net/URI/RelativizationTest.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class RelativizationTest
+ implements Testlet
+{
+
+ private static final String BASE_URI_1 = "http://example.com/hotcakes/";
+ private static final String BASE_URI_2 = "http://example.com/hotcakes/?name=unknown#6";
+ private static final String ERROR_URI_1 = "ftp://example.com/hotcakes/bun5.html";
+ private static final String ERROR_URI_2 = "http://examples.com/hotcakes/bun6.html";
+ private static final String ERROR_URI_3 = "http://examples.com/hotrolls/sausage2.html";
+ private static final String RELATIVE_URI_1 = "http://example.com/hotcakes/bun5.html?name=Fred#2";
+ private static final String OPAQUE_1 = "urn:890#1";
+ private static final String OPAQUE_2 = "urn:891#2";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.check(new URI(OPAQUE_1).relativize(new URI(OPAQUE_2)), new URI(OPAQUE_2));
+ h.check(new URI(BASE_URI_1).relativize(new URI(OPAQUE_2)), new URI(OPAQUE_2));
+ h.check(new URI(OPAQUE_1).relativize(new URI(BASE_URI_1)), new URI(BASE_URI_1));
+ h.check(new URI(BASE_URI_1).relativize(new URI(ERROR_URI_1)), new URI(ERROR_URI_1));
+ h.check(new URI(BASE_URI_1).relativize(new URI(ERROR_URI_2)), new URI(ERROR_URI_2));
+ h.check(new URI(BASE_URI_1).relativize(new URI(ERROR_URI_3)), new URI(ERROR_URI_3));
+ h.check(new URI(BASE_URI_1).relativize(new URI(RELATIVE_URI_1)),
+ new URI("bun5.html?name=Fred#2"));
+ h.check(new URI(BASE_URI_2).relativize(new URI(RELATIVE_URI_1)),
+ new URI("bun5.html?name=Fred#2"));
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/ToASCIIStringTest.java b/gnu/testlet/java/net/URI/ToASCIIStringTest.java
new file mode 100644
index 00000000..20954d39
--- /dev/null
+++ b/gnu/testlet/java/net/URI/ToASCIIStringTest.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class ToASCIIStringTest
+ implements Testlet
+{
+
+ private static final String TEST_URI_1 = "http://example.com/money/\uFFE5/file.html";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.check(new URI(TEST_URI_1).toString(), TEST_URI_1);
+ h.check(new URI(TEST_URI_1).toASCIIString(), "http://example.com/money/%EF%BF%A5/file.html");
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/ToStringTest.java b/gnu/testlet/java/net/URI/ToStringTest.java
new file mode 100644
index 00000000..bb33837a
--- /dev/null
+++ b/gnu/testlet/java/net/URI/ToStringTest.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class ToStringTest
+ implements Testlet
+{
+
+ private static final String TEST_URI_1 = "http://example.com/examples?name=Fred#";
+ private static final String TEST_URI_2 = "http://example.com/examples?name=Fred";
+ private static final String TEST_URI_3 = "http://example.com/examples?";
+ private static final String TEST_URI_4 = "http://example.com/examples";
+ private static final String TEST_URI_5 = "://example.com/examples";
+ private static final String TEST_URI_6 = "//example.com/examples";
+ private static final String TEST_URI_7 = "http:///examples";
+ private static final String TEST_URI_8 = "http:/examples";
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URI test1 = new URI(TEST_URI_1);
+ h.check(test1.toString(), TEST_URI_1);
+ h.check(test1.getRawFragment(), "");
+ URI test2 = new URI(TEST_URI_2);
+ h.check(test2.toString(), TEST_URI_2);
+ h.check(test2.getRawFragment(), null);
+ URI test3 = new URI(TEST_URI_3);
+ h.check(test3.toString(), TEST_URI_3);
+ h.check(test3.getRawQuery(), "");
+ URI test4 = new URI(TEST_URI_4);
+ h.check(test4.toString(), TEST_URI_4);
+ h.check(test4.getRawQuery(), null);
+ URI test5 = new URI(TEST_URI_5);
+ h.check(test5.toString(), TEST_URI_5);
+ h.check(test5.getScheme(), null); // Scheme is different and can't be "".
+ URI test6 = new URI(TEST_URI_6);
+ h.check(test6.toString(), TEST_URI_6);
+ h.check(test6.getScheme(), null);
+ URI test7 = new URI(TEST_URI_7);
+ h.check(test7.toString(), TEST_URI_7);
+ h.check(test7.getRawAuthority(), "");
+ URI test8 = new URI(TEST_URI_8);
+ h.check(test8.toString(), TEST_URI_8);
+ h.check(test8.getRawAuthority(), null);
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("Unexpected exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/URITest.java b/gnu/testlet/java/net/URI/URITest.java
new file mode 100644
index 00000000..9c86c893
--- /dev/null
+++ b/gnu/testlet/java/net/URI/URITest.java
@@ -0,0 +1,533 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Michael Koch <konqueror@gmx.de>
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.*;
+
+public class URITest implements Testlet
+{
+ public void testOne(TestHarness h, String uriname,
+ String authority, // 1
+ String fragment, // 2
+ String host, // 3
+ String path, // 4
+ int port, // 5
+ String query, // 6
+ String rawauthority, // 7
+ String rawfragment, // 8
+ String rawpath, // 9
+ String rawquery, // 10
+ String rawschemespecificpart, // 11
+ String rawuserinfo, // 12
+ String scheme, // 13
+ String schemespecificpart, // 14
+ String userinfo, // 15
+ String result) // 16
+ {
+ try
+ {
+ h.checkPoint(uriname);
+ URI uri = new URI(uriname);
+
+ h.check(uri.getAuthority(), authority); // 1
+ h.check(uri.getFragment(), fragment); // 2
+ h.check(uri.getHost(), host); // 3
+ h.check(uri.getPath(), path); // 4
+ h.check(uri.getPort(), port); // 5
+ h.check(uri.getQuery(), query); // 6
+ h.check(uri.getRawAuthority(), rawauthority); // 7
+ h.check(uri.getRawFragment(), rawfragment); // 8
+ h.check(uri.getRawPath(), rawpath); // 9
+ h.check(uri.getRawQuery(), rawquery); // 10
+ h.check(uri.getRawSchemeSpecificPart(), rawschemespecificpart); // 11
+ h.check(uri.getRawUserInfo(), rawuserinfo); // 12
+ h.check(uri.getScheme(), scheme); // 13
+ h.check(uri.getSchemeSpecificPart(), schemespecificpart); // 14
+ h.check(uri.getUserInfo(), userinfo); // 15
+ h.check(uri.toString(), result); // 16
+ }
+ catch (URISyntaxException e)
+ {
+ h.debug(e);
+ h.fail("unexpected exception");
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ testOne(h, "mauve://user:passwd@hostname:1234/path/to/file?query=value#fragment",
+ "user:passwd@hostname:1234", // 1
+ "fragment", // 2
+ "hostname", // 3
+ "/path/to/file", // 4
+ 1234, // 5
+ "query=value", // 6
+ "user:passwd@hostname:1234", // 7
+ "fragment", // 8
+ "/path/to/file", // 9
+ "query=value", // 10
+ "//user:passwd@hostname:1234/path/to/file?query=value", // 11
+ "user:passwd", // 12
+ "mauve", // 13
+ "//user:passwd@hostname:1234/path/to/file?query=value", // 14
+ "user:passwd", // 15
+ "mauve://user:passwd@hostname:1234/path/to/file?query=value#fragment"); // 16
+
+ testOne(h, "g:h",
+ null, // 1
+ null, // 2
+ null, // 3
+ null, // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ null, // 9
+ null, // 10
+ "h", // 11
+ null, // 12
+ "g", // 13
+ "h", // 14
+ null, // 15
+ "g:h"); // 16
+
+ testOne(h, "g",
+ null, // 1
+ null, // 2
+ null, // 3
+ "g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "g", // 9
+ null, // 10
+ "g", // 11
+ null, // 12
+ null, // 13
+ "g", // 14
+ null, // 15
+ "g"); // 16
+
+ testOne(h, "./g",
+ null, // 1
+ null, // 2
+ null, // 3
+ "./g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "./g", // 9
+ null, // 10
+ "./g", // 11
+ null, // 12
+ null, // 13
+ "./g", // 14
+ null, // 15
+ "./g"); // 16
+
+ testOne(h, "g/",
+ null, // 1
+ null, // 2
+ null, // 3
+ "g/", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "g/", // 9
+ null, // 10
+ "g/", // 11
+ null, // 12
+ null, // 13
+ "g/", // 14
+ null, // 15
+ "g/"); // 16
+
+ testOne(h, "/g",
+ null, // 1
+ null, // 2
+ null, // 3
+ "/g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "/g", // 9
+ null, // 10
+ "/g", // 11
+ null, // 12
+ null, // 13
+ "/g", // 14
+ null, // 15
+ "/g"); // 16
+
+ testOne(h, "//g",
+ "g", // 1
+ null, // 2
+ "g", // 3
+ "", // 4
+ -1, // 5
+ null, // 6
+ "g", // 7
+ null, // 8
+ "", // 9
+ null, // 10
+ "//g", // 11
+ null, // 12
+ null, // 13
+ "//g", // 14
+ null, // 15
+ "//g"); // 16
+
+ testOne(h, "?y",
+ null, // 1
+ null, // 2
+ null, // 3
+ "", // 4
+ -1, // 5
+ "y", // 6
+ null, // 7
+ null, // 8
+ "", // 9
+ "y", // 10
+ "?y", // 11
+ null, // 12
+ null, // 13
+ "?y", // 14
+ null, // 15
+ "?y"); // 16
+
+ testOne(h, "g?y",
+ null, // 1
+ null, // 2
+ null, // 3
+ "g", // 4
+ -1, // 5
+ "y", // 6
+ null, // 7
+ null, // 8
+ "g", // 9
+ "y", // 10
+ "g?y", // 11
+ null, // 12
+ null, // 13
+ "g?y", // 14
+ null, // 15
+ "g?y"); // 16
+
+ testOne(h, "#s",
+ null, // 1
+ "s", // 2
+ null, // 3
+ "", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ "s", // 8
+ "", // 9
+ null, // 10
+ "", // 11
+ null, // 12
+ null, // 13
+ "", // 14
+ null, // 15
+ "#s"); // 16
+
+ testOne(h, "g#s",
+ null, // 1
+ "s", // 2
+ null, // 3
+ "g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ "s", // 8
+ "g", // 9
+ null, // 10
+ "g", // 11
+ null, // 12
+ null, // 13
+ "g", // 14
+ null, // 15
+ "g#s"); // 16
+
+ testOne(h, "g?y#s",
+ null, // 1
+ "s", // 2
+ null, // 3
+ "g", // 4
+ -1, // 5
+ "y", // 6
+ null, // 7
+ "s", // 8
+ "g", // 9
+ "y", // 10
+ "g?y", // 11
+ null, // 12
+ null, // 13
+ "g?y", // 14
+ null, // 15
+ "g?y#s"); // 16
+
+ testOne(h, ";x",
+ null, // 1
+ null, // 2
+ null, // 3
+ ";x", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ ";x", // 9
+ null, // 10
+ ";x", // 11
+ null, // 12
+ null, // 13
+ ";x", // 14
+ null, // 15
+ ";x"); // 16
+
+ testOne(h, "g;x",
+ null, // 1
+ null, // 2
+ null, // 3
+ "g;x", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "g;x", // 9
+ null, // 10
+ "g;x", // 11
+ null, // 12
+ null, // 13
+ "g;x", // 14
+ null, // 15
+ "g;x"); // 16
+
+ testOne(h, "g;x?y#s",
+ null, // 1
+ "s", // 2
+ null, // 3
+ "g;x", // 4
+ -1, // 5
+ "y", // 6
+ null, // 7
+ "s", // 8
+ "g;x", // 9
+ "y", // 10
+ "g;x?y", // 11
+ null, // 12
+ null, // 13
+ "g;x?y", // 14
+ null, // 15
+ "g;x?y#s"); // 16
+
+ testOne(h, ".",
+ null, // 1
+ null, // 2
+ null, // 3
+ ".", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ ".", // 9
+ null, // 10
+ ".", // 11
+ null, // 12
+ null, // 13
+ ".", // 14
+ null, // 15
+ "."); // 16
+
+ testOne(h, "./",
+ null, // 1
+ null, // 2
+ null, // 3
+ "./", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "./", // 9
+ null, // 10
+ "./", // 11
+ null, // 12
+ null, // 13
+ "./", // 14
+ null, // 15
+ "./"); // 16
+
+ testOne(h, "..",
+ null, // 1
+ null, // 2
+ null, // 3
+ "..", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "..", // 9
+ null, // 10
+ "..", // 11
+ null, // 12
+ null, // 13
+ "..", // 14
+ null, // 15
+ ".."); // 16
+
+ testOne(h, "../",
+ null, // 1
+ null, // 2
+ null, // 3
+ "../", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "../", // 9
+ null, // 10
+ "../", // 11
+ null, // 12
+ null, // 13
+ "../", // 14
+ null, // 15
+ "../"); // 16
+
+ testOne(h, "../g",
+ null, // 1
+ null, // 2
+ null, // 3
+ "../g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "../g", // 9
+ null, // 10
+ "../g", // 11
+ null, // 12
+ null, // 13
+ "../g", // 14
+ null, // 15
+ "../g"); // 16
+
+ testOne(h, "../..",
+ null, // 1
+ null, // 2
+ null, // 3
+ "../..", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "../..", // 9
+ null, // 10
+ "../..", // 11
+ null, // 12
+ null, // 13
+ "../..", // 14
+ null, // 15
+ "../.."); // 16
+
+ testOne(h, "../../",
+ null, // 1
+ null, // 2
+ null, // 3
+ "../../", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "../../", // 9
+ null, // 10
+ "../../", // 11
+ null, // 12
+ null, // 13
+ "../../", // 14
+ null, // 15
+ "../../"); // 16
+
+ testOne(h, "../../g",
+ null, // 1
+ null, // 2
+ null, // 3
+ "../../g", // 4
+ -1, // 5
+ null, // 6
+ null, // 7
+ null, // 8
+ "../../g", // 9
+ null, // 10
+ "../../g", // 11
+ null, // 12
+ null, // 13
+ "../../g", // 14
+ null, // 15
+ "../../g"); // 16
+
+ // Classpath regression when running jonas.
+ testOne(h, "jrmi://localhost:2000",
+ "localhost:2000", // 1
+ null, // 2
+ "localhost", // 3
+ "", // 4
+ 2000, // 5
+ null, // 6
+ "localhost:2000", // 7
+ null, // 8
+ "", // 9
+ null, // 10
+ "//localhost:2000", // 11
+ null, // 12
+ "jrmi", // 13
+ "//localhost:2000", // 14
+ null, // 15
+ "jrmi://localhost:2000"); // 16
+
+ String[] tests = { "/a,b", "/a%2C,b", "/a%2c,b" };
+ for (int i = 0; i < tests.length; ++i)
+ {
+ h.checkPoint(tests[i]);
+ boolean ok = false;
+ URI uri = null;
+ try
+ {
+ uri = new URI(tests[i]);
+ ok = uri.toString().equals(tests[i]);
+ }
+ catch (URISyntaxException _)
+ {
+ h.debug(_);
+ }
+ h.check(ok);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URI/UnicodeURI.java b/gnu/testlet/java/net/URI/UnicodeURI.java
new file mode 100644
index 00000000..28871360
--- /dev/null
+++ b/gnu/testlet/java/net/URI/UnicodeURI.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+/*
+ Copyright (C) 2005 Dalibor Topic <robilad@kaffe.org>
+
+ 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.java.net.URI;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public class UnicodeURI implements Testlet
+{
+
+ private static final String LATIN_SMALL_LETTER_C_WITH_ACUTE = "\u0107";
+
+ public void test(TestHarness harness)
+ {
+ /* Check if a URI with Unicode characters is created correctly,
+ * without swallowing characters outside the basic plane.
+ */
+ try {
+ final URI uri = new URI(null, LATIN_SMALL_LETTER_C_WITH_ACUTE, null);
+ final String uri_string = uri.toString();
+ harness.check(LATIN_SMALL_LETTER_C_WITH_ACUTE.equals(uri_string));
+ }
+ catch (URISyntaxException e) {
+ harness.debug(e);
+ harness.fail("unexpected exception" + e.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URL/CVS/Entries b/gnu/testlet/java/net/URL/CVS/Entries
new file mode 100644
index 00000000..501ed9f4
--- /dev/null
+++ b/gnu/testlet/java/net/URL/CVS/Entries
@@ -0,0 +1,5 @@
+/MyURLStreamHandler.java/1.3/Thu Jun 3 14:31:12 2004//
+/URLTest.java/1.20/Thu Dec 7 21:42:10 2006//
+/newURL.java/1.3/Thu Jun 9 19:42:31 2005//
+/security.java/1.3/Tue Feb 6 16:46:20 2007//
+D
diff --git a/gnu/testlet/java/net/URL/CVS/Repository b/gnu/testlet/java/net/URL/CVS/Repository
new file mode 100644
index 00000000..ba76d9af
--- /dev/null
+++ b/gnu/testlet/java/net/URL/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URL
diff --git a/gnu/testlet/java/net/URL/CVS/Root b/gnu/testlet/java/net/URL/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URL/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URL/MyURLStreamHandler.java b/gnu/testlet/java/net/URL/MyURLStreamHandler.java
new file mode 100644
index 00000000..d945522f
--- /dev/null
+++ b/gnu/testlet/java/net/URL/MyURLStreamHandler.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.URL;
+import java.net.*;
+import java.io.IOException;
+
+
+class MyURLStreamHandler extends URLStreamHandler {
+ public MyURLStreamHandler() {}
+ public void invoke_parseURL(URL u, String spec, int start, int limit) { parseURL(u, spec, start, limit); }
+ public void invoke_setURL(URL u,
+ String protocol,
+ String host,
+ int port,
+ String file,
+ String ref) { setURL(u, protocol, host, port, file, ref); }
+ protected URLConnection openConnection(URL u) throws IOException { return (URLConnection)new Object(); }
+}
diff --git a/gnu/testlet/java/net/URL/URLTest.java b/gnu/testlet/java/net/URL/URLTest.java
new file mode 100644
index 00000000..8c4742a8
--- /dev/null
+++ b/gnu/testlet/java/net/URL/URLTest.java
@@ -0,0 +1,709 @@
+// Tags: JDK1.0
+// Uses: MyURLStreamHandler
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.URL;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.IOException;
+import java.net.*;
+
+
+public class URLTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ boolean ok;
+
+ // see whether malformed exception is thrown or not.
+
+ harness.checkPoint("Constructors");
+
+ ok = false;
+ try {
+ URL url = new URL("hithleksjf" );
+ }
+ catch ( MalformedURLException e ){
+ ok = true;
+ harness.check(true);
+ }
+ harness.check(ok, "Error in test_Basics - 1 " +
+ " should have raised malformed URL exception here");
+
+ ok = false;
+ try {
+ URL url = new URL("http://////://" );
+ ok = true;
+ }
+ catch ( MalformedURLException e ){
+ }
+ harness.check(ok, "Error in test_Basics - 2 " +
+ " should not have raised malformed URL exception here");
+
+
+ ok = false;
+ try {
+ URL url = new URL("http://sources.redhat.com/index.html" );
+ ok = true;
+ }
+ catch ( MalformedURLException e ){
+ }
+ harness.check(ok, "Error in test_Basics - 3 " +
+ " should not have raised malformed URL exception here");
+
+ ok = false;
+ try {
+ URL url = new URL((String) null);
+ }
+ catch (MalformedURLException e) {
+ ok = true;
+ }
+ harness.check(ok, "Error in test_Basics - 4 " +
+ " should have raised malformed URL exception here");
+
+ // URL with individual arguments.
+ harness.checkPoint("get Methods");
+ try {
+ URL baseurl = new URL("http://sources.redhat.com/");
+ URL url = new URL ( baseurl, "index.html");
+ url.hashCode();
+ baseurl.hashCode();
+ URL.setURLStreamHandlerFactory( null );
+ URL.setURLStreamHandlerFactory( null );
+ harness.check (url.getProtocol(), "http");
+ harness.check (url.getPort(), -1);
+ harness.check (url.getHost(), "sources.redhat.com");
+ harness.check (url.getFile(), "/index.html");
+ harness.check (url.equals(new URL("http://sources.redhat.com/index.html")));
+ harness.check (url.hashCode() != 0);
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - 9 " +
+ " exception should not be thrown here");
+ }
+
+
+ try {
+ URL url = new URL ( "http", "sources.redhat.com", "/index.html");
+
+ harness.check (url.getProtocol(), "http");
+ harness.check (url.getPort(), -1);
+ harness.check (url.getHost(), "sources.redhat.com");
+ harness.check (url.getFile(), "/index.html");
+ harness.check (url.equals(new URL("http://sources.redhat.com/index.html")));
+
+ URL url1 = new URL ( "http", "sources.redhat.com", 80, "/index.html");
+ harness.check (url1.getPort(), 80);
+ harness.check(url.equals(url1));
+ harness.check(url1.toExternalForm(),
+ "http://sources.redhat.com:80/index.html");
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - 16 " +
+ " exception should not be thrown here");
+ }
+
+
+ try {
+ URL url = new URL ( "http://sources.redhat.com:80/mauve/testarea/index.html");
+
+ harness.check (url.getProtocol(), "http");
+ harness.check (url.getPort(), 80);
+ harness.check (url.getHost(), "sources.redhat.com");
+ harness.check (url.getFile(), "/mauve/testarea/index.html");
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - 21 " +
+ " exception should not be thrown here");
+ }
+
+ try {
+ URL u1 = new URL("http://foo@some.nice.place/bar/");
+ URL u2 = new URL("http://some.nice.place/bar/");
+ URL u3 = new URL(u1, "more/path", null);
+
+ harness.check (u1.getUserInfo(), "foo");
+ harness.check (u2.getUserInfo(), null);
+ harness.check (u3.getUserInfo(), "foo");
+ harness.check (u3.getProtocol(), "http");
+ harness.check (u3.getHost(), "some.nice.place");
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - 27 " +
+ " exception should not be thrown here");
+ }
+
+ try {
+ URL u1 = new URL("http://domain.com");
+ URL u2 = new URL(u1, "/redir?http://domain2.com/index.html");
+
+ harness.check (u2.getProtocol(), "http");
+ harness.check (u2.getHost(), "domain.com");
+ harness.check (u2.getPath(), "/redir");
+ harness.check (u2.getQuery(), "http://domain2.com/index.html");
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - 35 " +
+ " exception should not be thrown here");
+ }
+
+ harness.checkPoint("Null context handler");
+ try
+ {
+ URL u = new URL(null, "http://sources.redhat.com/");
+
+ harness.check(true);
+ }
+ catch ( MalformedURLException e ){
+ harness.fail(" Error in test_Basics - null context");
+ }
+ catch (NullPointerException e) {
+ harness.fail(" Error in test_Basics - null context");
+ }
+ harness.checkPoint("Colon in spec");
+ try {
+ URL cxt = new URL("http://www.foo.bar.com");
+ URL url = new URL(cxt, "_urn:testing/");
+ harness.check("http://www.foo.bar.com/_urn:testing/".equals(url.toString()));
+ }
+ catch (Exception e) {
+ harness.fail(" Error in test_Basics - Colon in spec");
+ }
+ }
+
+ public void test_openConnection()
+ {
+ harness.checkPoint("openConnection");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ URLConnection conn = url.openConnection();
+
+ if (conn == null) {
+ harness.fail("openConnection returned null");
+ return;
+ }
+
+ String headerField = conn.getHeaderField(2);
+ harness.check (headerField != null
+ && headerField.indexOf("Apache") != -1,
+ "I want my Apache server!");
+ String conttype = conn.getContentType();
+ harness.check (conttype != null
+ && conttype.indexOf("text/html") != -1,
+ "Content must be text/html");
+
+ try {
+ Object obj = url.getContent();
+ } catch (Throwable t) {
+ harness.fail("getContent() threw Exception");
+ harness.debug(t);
+ }
+ harness.check (url.toExternalForm(),
+ "http://sources.redhat.com/mauve/testarea/index.html");
+ harness.check (url.getRef(), null);
+
+ URL url2 = new URL("http://www.hhp.com/index.html#help");
+ harness.check (url2.getRef(), "help");
+ }catch ( Exception e ){
+ harness.fail(" Error in test_openConnection - 3 " +
+ " exception should not be thrown here");
+ harness.debug(e);
+ }
+
+ }
+
+
+
+ public void test_openStream()
+ {
+ harness.checkPoint("openStream");
+ try {
+ harness.debug("creating URL");
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ harness.debug("opening stream");
+ java.io.InputStream conn = url.openStream();
+
+ byte b [] = new byte[256];
+ harness.debug("reding from stream");
+ conn.read(b , 0 , 256 );
+
+ String str = new String( b ) ;
+ harness.check (str.indexOf("HTML") != -1,
+ "Need some HTML");
+
+ }catch ( Exception e ){
+ harness.fail(" Error in test_openStream - 2 " +
+ " exception should not be thrown here");
+ harness.debug(e);
+ }
+
+ }
+
+
+ public void test_sameFile()
+ {
+ harness.checkPoint("sameFile");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ URL url1 = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ harness.check (url.sameFile(url1));
+
+ URL url2 = new URL ( "http://sources.redhat.com:80/mauve/testarea/index.html");
+ harness.check (url.sameFile(url2));
+
+ }catch ( Exception e ){
+ harness.fail(" Error in test_sameFile - 3 " +
+ " exception should not be thrown here");
+ }
+
+ }
+
+
+ public void test_toString()
+ {
+ harness.checkPoint("toString");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/index.html");
+ String str = url.toString();
+
+ URL url1 = new URL ( "http://sources.redhat.com:80/mauve/testarea/index.html");
+ String str1 = url1.toString();
+
+ URL url2 = new URL ( "http://205.180.83.71/");
+ String str2 = url2.toString();
+
+ harness.check (str, "http://sources.redhat.com/index.html");
+ harness.check (str1, "http://sources.redhat.com:80/mauve/testarea/index.html");
+ harness.check (str2, "http://205.180.83.71/");
+
+ URL url3 = new URL( "ftp" , "sources.redhat.com" , 21 , "/dir/dir1.lst");
+ String str3 = url3.toString( );
+
+ harness.check (str3, "ftp://sources.redhat.com:21/dir/dir1.lst");
+ }catch ( Exception e ){
+ harness.debug(e);
+ harness.fail(" Error in test_toString - 5 " +
+ " exception should not be thrown here");
+ }
+ }
+
+ public void test_URLStreamHandler()
+ {
+ harness.checkPoint("URLStreamHandler");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/index.html");
+ // test URLStreamHandler
+ MyURLStreamHandler sh = new MyURLStreamHandler();
+ sh.invoke_setURL(url, "http", "sources.redhat.com", 80, "/index.html", "#ref");
+ harness.check(true);
+ sh.invoke_parseURL(url, "http://sources.redhat.com/index.html", 0, 20);
+ harness.check(true);
+ }catch ( MalformedURLException e ){
+ harness.fail(" Error in test_URLStreamHandler - 1 " +
+ " exception should not be thrown here");
+ }
+
+ harness.checkPoint("inherit URLStreamHandler");
+ try {
+ URL base = new URL("acme",
+ "www.redhat.com",
+ 80,
+ "/docs/",
+ new MyURLStreamHandler());
+ URL other = new URL(base, "manuals/enterprise/");
+ harness.check(other.toString(),
+ "acme://www.redhat.com:80/docs/manuals/enterprise/");
+ } catch (IOException _) {
+ harness.check(false);
+ harness.debug(_);
+ }
+
+ harness.checkPoint("jar base with full http spec");
+ try {
+ URL base = new URL("jar:file:///test.jar!/foo/bar.txt");
+ URL other = new URL(base, "http://planet.classpath.org/");
+ harness.check(other.toString(),
+ "http://planet.classpath.org/");
+ } catch (IOException _) {
+ harness.check(false);
+ harness.debug(_);
+ }
+ }
+
+
+ public void test_cr601a() {
+ String[][] s = {
+
+ // tests 0..3
+ {"file:////c:/pub/files/foobar.txt",
+ "file:////c:/pub/files/foobar.txt",
+ "",
+ "//c:/pub/files/foobar.txt"},
+
+ // tests 4..7
+ {"file:///c:/pub/files/foobar.txt",
+ "file:/c:/pub/files/foobar.txt",
+ "",
+ "/c:/pub/files/foobar.txt"},
+
+ // tests 8..11
+ {"file://hpjavaux/c:/pub/files/foobar.txt",
+ "file://hpjavaux/c:/pub/files/foobar.txt",
+ "hpjavaux",
+ "/c:/pub/files/foobar.txt"},
+
+ // tests 12..15
+ {"file://c:/pub/files/foobar.txt",
+ "file://c:/pub/files/foobar.txt",
+ "c",
+ "/pub/files/foobar.txt"},
+
+ // tests 16..19
+ {"file:/c:/pub/files/foobar.txt",
+ "file:/c:/pub/files/foobar.txt",
+ "",
+ "/c:/pub/files/foobar.txt"},
+
+ // tests 20..23
+ {"file:c:/pub/files/foobar.txt",
+ "file:c:/pub/files/foobar.txt",
+ "",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 24..27
+ {"file:////hpjavant/bgee/foobar.txt",
+ "file:////hpjavant/bgee/foobar.txt",
+ "",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 28..31
+ {"file:///hpjavant/bgee/foobar.txt",
+ "file:/hpjavant/bgee/foobar.txt",
+ "",
+ "/hpjavant/bgee/foobar.txt"},
+
+ // tests 32..35
+ {"file://hpjavant/bgee/foobar.txt",
+ "file://hpjavant/bgee/foobar.txt",
+ "hpjavant",
+ "/bgee/foobar.txt"},
+
+ // tests 36..39
+ {"file:/hpjavant/bgee/foobar.txt",
+ "file:/hpjavant/bgee/foobar.txt",
+ "",
+ "/hpjavant/bgee/foobar.txt"},
+
+ // tests 40..43
+ {"file://hpjavaux//hpjavant/bgee/foobar.txt",
+ "file://hpjavaux//hpjavant/bgee/foobar.txt",
+ "hpjavaux",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 44..47
+ {"file://hpjavaux/bgee/foobar.txt",
+ "file://hpjavaux/bgee/foobar.txt",
+ "hpjavaux",
+ "/bgee/foobar.txt"},
+
+ // tests 48..51
+ {"file://hpjavaux/c:/pubs/files/foobar.txt",
+ "file://hpjavaux/c:/pubs/files/foobar.txt",
+ "hpjavaux",
+ "/c:/pubs/files/foobar.txt"},
+
+ // tests 52..55
+ {"file://bg710571//hpjavant/bgee/foobar.txt",
+ "file://bg710571//hpjavant/bgee/foobar.txt",
+ "bg710571",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 56..59
+ {"file://bg710571/bgee/foobar.txt",
+ "file://bg710571/bgee/foobar.txt",
+ "bg710571",
+ "/bgee/foobar.txt"},
+
+ // tests 60..63
+ {"file://bg710571/c:/pubs/files/foobar.txt",
+ "file://bg710571/c:/pubs/files/foobar.txt",
+ "bg710571",
+ "/c:/pubs/files/foobar.txt"},
+ };
+
+ harness.checkPoint("new URL(string)");
+ for (int i = 0; i < s.length; ++i) {
+ try {
+ URL url = new URL(s[i][0]);
+ harness.check(url.toExternalForm(), s[i][1]);
+ harness.check(url.getHost(), s[i][2]);
+ harness.check(url.getFile(), s[i][3]);
+ }
+ catch (Throwable e) {
+ harness.fail("Should not have thrown exception");
+ e.printStackTrace(System.out);
+ }
+ }
+ }
+
+ public void test_cr601b() {
+ String[][] s = {
+
+ // tests 0..3
+ {"////", "c:/pub/files/foobar.txt",
+ "file://////c:/pub/files/foobar.txt",
+ "////",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 4..7
+ {"///", "c:/pub/files/foobar.txt",
+ "file://///c:/pub/files/foobar.txt",
+ "///",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 8..11
+ {"//", "c:/pub/files/foobar.txt",
+ "file:////c:/pub/files/foobar.txt",
+ "//",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 12..15
+ {"/", "c:/pub/files/foobar.txt",
+ "file:///c:/pub/files/foobar.txt",
+ "/",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 16..19
+ {"", "c:/pub/files/foobar.txt",
+ "file:c:/pub/files/foobar.txt",
+ "",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 20..23
+ {"hpjavaux", "c:/pub/files/foobar.txt",
+ "file://hpjavauxc:/pub/files/foobar.txt",
+ "hpjavaux",
+ "c:/pub/files/foobar.txt"},
+
+ // tests 24..27
+ {null, "c:/pub/files/foobar.txt",
+ "file:c:/pub/files/foobar.txt",
+ null,
+ "c:/pub/files/foobar.txt"},
+
+ // tests 28..31
+ {"////", "//hpjavant/bgee/foobar.txt",
+ "file:////////hpjavant/bgee/foobar.txt",
+ "////",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 32..35
+ {"///", "//hpjavant/bgee/foobar.txt",
+ "file:///////hpjavant/bgee/foobar.txt",
+ "///",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 36..39
+ {"//", "//hpjavant/bgee/foobar.txt",
+ "file://////hpjavant/bgee/foobar.txt",
+ "//",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 40..43
+ {"/", "//hpjavant/bgee/foobar.txt",
+ "file://///hpjavant/bgee/foobar.txt",
+ "/",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 44..47
+ {"", "//hpjavant/bgee/foobar.txt",
+ "file:////hpjavant/bgee/foobar.txt",
+ "",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 48..51
+ {"hpjavaux", "//hpjavant/bgee/foobar.txt",
+ "file://hpjavaux//hpjavant/bgee/foobar.txt",
+ "hpjavaux",
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 52..55
+ {null, "//hpjavant/bgee/foobar.txt",
+ "file:////hpjavant/bgee/foobar.txt",
+ null,
+ "//hpjavant/bgee/foobar.txt"},
+
+ // tests 56..59
+ {"hpjavant", "/bgee/foobar.txt",
+ "file://hpjavant/bgee/foobar.txt",
+ "hpjavant",
+ "/bgee/foobar.txt"},
+
+ // tests 60..63
+ {"hpjavant", "/home/bgee/foobar.txt",
+ "file://hpjavant/home/bgee/foobar.txt",
+ "hpjavant",
+ "/home/bgee/foobar.txt"},
+
+ // tests 64..67
+ {"hpjavaux", "/home/bgee/foobar.txt",
+ "file://hpjavaux/home/bgee/foobar.txt",
+ "hpjavaux",
+ "/home/bgee/foobar.txt"},
+
+ // 68..71
+ {"hpjavaux", "c:\\foobar.txt",
+ "file://hpjavauxc:\\foobar.txt",
+ "hpjavaux",
+ "c:\\foobar.txt"},
+ };
+ harness.checkPoint("new URL(protocol, host, file)");
+ for (int i = 0; i < s.length; ++i) {
+ try {
+ URL url = new URL("file", s[i][0], s[i][1]);
+ harness.check(url.toExternalForm(), s[i][2]);
+ harness.check(url.getHost(), s[i][3]);
+ harness.check(url.getFile(), s[i][4]);
+ harness.check(true);
+ }
+ catch (NullPointerException e) {
+ if ((i != 6) && (i != 13)) {
+ harness.fail("Should not have thrown NullPointerException");
+ e.printStackTrace(System.out);
+ }
+ }
+ catch (Throwable e) {
+ harness.fail("Should not have thrown exception");
+ e.printStackTrace(System.out);
+ }
+ }
+ }
+
+ public void test_authority()
+ {
+ String[][] s = {
+ { "http://sources.redhat.com/",
+ "sources.redhat.com"
+ },
+ { "http://user:passwd@sources.redhat.com/",
+ "user:passwd@sources.redhat.com"
+ },
+ { "http://sources.redhat.com:90/",
+ "sources.redhat.com:90"
+ }
+ };
+
+ harness.checkPoint("Check for authority support");
+ for (int i = 0; i < s.length; i++)
+ {
+ try {
+ URL url = new URL(s[i][0]);
+
+ harness.check(url.getAuthority(), s[i][1]);
+ }
+ catch (Throwable t)
+ {
+ harness.fail("Should not have thrown exception");
+ t.printStackTrace(System.out);
+ }
+ }
+ }
+
+ public void test_contextResolution() {
+ harness.checkPoint("contextResolution");
+ try {
+ String[][] testData = new String[][] {
+ {"file://www.example.com/foo/bar.txt",
+ "../test.txt",
+ "file://www.example.com/test.txt"
+ },
+ {"file://www.example.com/foo/bar.txt",
+ "./test.txt",
+ "file://www.example.com/foo/test.txt"
+ },
+ {"http://www.example.com/foo/bar.txt",
+ "../test.txt",
+ "http://www.example.com/test.txt"
+ },
+ {"http://www.example.com/foo/bar.txt",
+ "./test.txt",
+ "http://www.example.com/foo/test.txt"
+ },
+ {"jar:file://www.example.com/test.jar!/foo/bar.txt",
+ "../test.txt",
+ "jar:file://www.example.com/test.jar!/test.txt"
+ },
+ {"jar:file://www.example.com/test.jar!/foo/bar.txt",
+ "./test.txt",
+ "jar:file://www.example.com/test.jar!/foo/test.txt"
+ },
+ };
+
+ for (int count = 0; count < testData.length; count++) {
+ URL base = new URL(testData[count][0]);
+ String relative = testData[count][1];
+ URL resolved = new URL(base, relative);
+ harness.check(resolved.toString(), testData[count][2]);
+ }
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ harness.fail("Should not have thrown exception");
+ }
+ }
+
+
+ public void testall()
+ {
+ harness.debug("Running: test_Basics");
+ test_Basics();
+ harness.debug("Running: test_openConnection");
+ test_openConnection();
+ harness.debug("Running: test_openStream");
+ test_openStream();
+ harness.debug("Running: test_sameFile");
+ test_sameFile();
+ harness.debug("Running: test_toString");
+ test_toString();
+ harness.debug("Running: test_URLStreamHandler");
+ test_URLStreamHandler();
+ harness.debug("Running: cr601a");
+ test_cr601a();
+ harness.debug("Running: cr601b");
+ test_cr601b();
+ harness.debug("Running: authority");
+ test_authority();
+ harness.debug("Running: test_contextResolution");
+ test_contextResolution();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/URL/newURL.java b/gnu/testlet/java/net/URL/newURL.java
new file mode 100644
index 00000000..176f5186
--- /dev/null
+++ b/gnu/testlet/java/net/URL/newURL.java
@@ -0,0 +1,142 @@
+// Tags: JDK1.0
+
+// Contributed by Mark Wielaard (mark@klomp.org)
+// Based on a kaffe regression test.
+
+// 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.java.net.URL;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+public class newURL implements Testlet
+{
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ check(null,
+ "jar:http://www.kaffe.org/foo/bar.jar!/float/boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/float/boat");
+ check(null,
+ "http://www.kaffe.org",
+ "http://www.kaffe.org");
+ check(null,
+ "http://www.kaffe.org:8080#ref",
+ "http://www.kaffe.org:8080#ref");
+ check("http://www.kaffe.org",
+ "foo/bar",
+ "http://www.kaffe.org/foo/bar");
+ check("http://www.kaffe.org/foo/bar#baz",
+ "jan/far",
+ "http://www.kaffe.org/foo/jan/far");
+ check("http://www.kaffe.org/foo/bar",
+ "/jan/far",
+ "http://www.kaffe.org/jan/far");
+ check("http://www.kaffe.org/foo/bar",
+ "",
+ "http://www.kaffe.org/foo/bar");
+ check(null,
+ "foo/bar",
+ null);
+ check("file:/foo/bar",
+ "barf#jow",
+ "file:/foo/barf#jow");
+ check("file:/foo/bar#fly",
+ "jabawaba",
+ "file:/foo/jabawaba");
+ check(null,
+ "jar:file:/usr/local/share/kaffe/Klasses.jar!/kaffe/lang/unicode.tbl",
+ "jar:file:/usr/local/share/kaffe/Klasses.jar!/kaffe/lang/unicode.tbl");
+ check(null,
+ "jar:http://www.kaffe.org/foo/bar.jar",
+ null);
+ check("jar:http://www.kaffe.org/foo/bar.jar!/path/name",
+ "float/boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/path/float/boat");
+ check("jar:http://www.kaffe.org/foo/bar.jar!/",
+ "float/boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/float/boat");
+ check("jar:http://www.kaffe.org/foo/bar.jar!/path/name",
+ "/float/boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/float/boat");
+ check("jar:http://www.kaffe.org/foo/bar.jar!/",
+ "/float/boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/float/boat");
+ check("jar:http://www.kaffe.org/foo/bar.jar!/float",
+ "#boat",
+ "jar:http://www.kaffe.org/foo/bar.jar!/float#boat");
+ check(null,
+ "http://www.kaffe.org:99999/foo/bar",
+ "http://www.kaffe.org:99999/foo/bar");
+ check(null,
+ "jar:abc!/eat/me",
+ null);
+
+ URL u = check(null,
+ "http://anonymous:anonymous@host/",
+ "http://anonymous:anonymous@host/");
+ harness.check(u.getHost(), "host");
+ harness.check(u.getUserInfo(), "anonymous:anonymous");
+ }
+
+ // Checks that the URL created from the context plus the url gives
+ // the string result. Or when the result is null, whether the
+ // contruction throws a exception. Returns the generated URL or null.
+ private URL check(String context, String url, String string)
+ {
+ harness.checkPoint(context + " + " + url + " = " + string);
+ URL c;
+ if (context != null)
+ {
+ try
+ {
+ c = new URL(context);
+ }
+ catch (MalformedURLException mue)
+ {
+ harness.debug(mue);
+ harness.check(false);
+ return null;
+ }
+ }
+ else
+ c = null;
+
+ try
+ {
+ URL u = new URL(c, url);
+ harness.check(u.toString(), string);
+ return u;
+ }
+ catch (MalformedURLException mue)
+ {
+ boolean expected = (string == null);
+ if (!expected)
+ harness.debug(mue);
+ harness.check(expected);
+ return null;
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URL/security.java b/gnu/testlet/java/net/URL/security.java
new file mode 100644
index 00000000..16025f45
--- /dev/null
+++ b/gnu/testlet/java/net/URL/security.java
@@ -0,0 +1,111 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.URL;
+
+import java.io.IOException;
+import java.net.NetPermission;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ URLStreamHandler handler = new TestURLStreamHandler();
+
+ URL context = new URL("http://www.redhat.com/");
+
+ Permission[] specifyStreamHandler = new Permission[] {
+ new NetPermission("specifyStreamHandler")};
+
+ Permission[] checkSetFactory = new Permission[] {
+ new RuntimePermission("setFactory")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.URL-URL(String, String, int, String, URLStreamHandler)
+ harness.checkPoint("URL(String, String, int, String, URLStreamHandler)");
+ try {
+ sm.prepareChecks(specifyStreamHandler);
+ new URL("redhat", "redhat.com", 23, "/red/hat/", handler);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.URL-URL(URL, String, URLStreamHandler)
+ harness.checkPoint("URL(String, String, int, String, URLStreamHandler)");
+ try {
+ sm.prepareChecks(specifyStreamHandler);
+ new URL(context, "/red/hat/", handler);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.URL-setURLStreamHandlerFactory
+ harness.checkPoint("setURLStreamHandlerFactory");
+ try {
+ sm.prepareHaltingChecks(checkSetFactory);
+ URL.setURLStreamHandlerFactory(null);
+ harness.check(false);
+ }
+ catch (TestSecurityManager.SuccessException ex) {
+ harness.check(true);
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestURLStreamHandler extends URLStreamHandler
+ {
+ public URLConnection openConnection(URL url) throws IOException
+ {
+ throw new RuntimeException("not implemented");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLClassLoader/CVS/Entries b/gnu/testlet/java/net/URLClassLoader/CVS/Entries
new file mode 100644
index 00000000..de944a46
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/CVS/Entries
@@ -0,0 +1,5 @@
+/getResource.java/1.7/Tue Mar 7 20:29:08 2006//
+/getResourceBase.java/1.5/Tue Mar 7 20:29:08 2006//
+/getResourceRemote.java/1.5/Thu Jun 3 14:31:12 2004//
+/security.java/1.3/Fri Jul 24 11:07:43 2009//
+D
diff --git a/gnu/testlet/java/net/URLClassLoader/CVS/Repository b/gnu/testlet/java/net/URLClassLoader/CVS/Repository
new file mode 100644
index 00000000..aff9f169
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URLClassLoader
diff --git a/gnu/testlet/java/net/URLClassLoader/CVS/Root b/gnu/testlet/java/net/URLClassLoader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URLClassLoader/getResource.java b/gnu/testlet/java/net/URLClassLoader/getResource.java
new file mode 100644
index 00000000..a2af2d76
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/getResource.java
@@ -0,0 +1,187 @@
+// Tags: JDK1.2
+// Uses: getResourceBase
+
+// Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.net.URLClassLoader;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+
+import gnu.testlet.TestHarness;
+
+public class getResource extends getResourceBase
+{
+ private File tmpdir, tmpfile, subtmpdir, subtmpfile;
+ private String jarPath;
+
+ private void setup() throws IOException
+ {
+ // Setup
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ if (!tmpdir.mkdir() && !tmpdir.exists())
+ throw new IOException("Could not create: " + tmpdir);
+
+ tmpfile = new File(tmpdir, "testfile");
+ if (!tmpfile.delete() && tmpfile.exists())
+ throw new IOException("Could not remove (old): " + tmpfile);
+ tmpfile.createNewFile();
+
+ subtmpdir = new File(tmpdir, "testdir");
+ if (!subtmpdir.mkdir() && !subtmpdir.exists())
+ throw new IOException("Could not create: " + subtmpdir);
+
+ subtmpfile = new File(subtmpdir, "test");
+ if (!subtmpfile.delete() && subtmpfile.exists())
+ throw new IOException("Could not remove (old): " + subtmpfile);
+ subtmpfile.createNewFile();
+
+ jarPath = tmp + File.separator + "m.jar";
+ FileOutputStream fos = new FileOutputStream(jarPath);
+ JarOutputStream jos = new JarOutputStream(fos);
+
+ JarEntry je = new JarEntry("jresource");
+ jos.putNextEntry(je);
+ jos.write(new byte[256]);
+
+ je = new JarEntry("path/in/jar/");
+ jos.putNextEntry(je);
+ je = new JarEntry("path/in/jar/file");
+ jos.putNextEntry(je);
+ jos.write(new byte[256]);
+ jos.close();
+ fos.close();
+ }
+
+ private void tearDown()
+ {
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+
+ if (subtmpdir != null && subtmpdir.exists())
+ {
+ if (subtmpfile != null && subtmpfile.exists())
+ subtmpfile.delete();
+ subtmpdir.delete();
+ }
+ tmpdir.delete();
+ }
+
+ if (jarPath != null)
+ new File(jarPath).delete();
+ }
+
+ public void test (TestHarness h)
+ {
+ harness = h;
+
+ try
+ {
+ setup();
+
+ URL[] urls = new URL[2];
+ urls[0] = tmpdir.toURL();
+ urls[1] = new URL("file://" + jarPath);
+ ucl = URLClassLoader.newInstance(urls);
+
+ // Check that the root resource can be found
+ // It is valid as a directory
+ URL u = ucl.getResource(".");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, "Checking .");
+
+ // Check that the parent directory can not be found
+ // It is invalid as one shouldn't be able to escape the "url root"
+ u = ucl.getResource("..");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "Checking ..");
+
+ // Check that the current directory can not be found
+ // It is invalid because at one point, we're escaping the "url root"
+ u = ucl.getResource("../mauve-testdir");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "Checking ../mauve-testdir");
+
+ // Check that the current directory can not be found
+ // It is invalid because at one point, we're walking into an invalid directory
+ u = ucl.getResource("mauve-testdir/..");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "Checking mauve-testdir/..");
+
+ // Check that the current directory can not be found
+ // It is invalid because at one point, we're walking into an invalid directory
+ u = ucl.getResource("mauve-testdir/../");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "Checking mauve-testdir/../");
+
+ // Check that the current directory can be found
+ // It is valid because we're walking into an valid directory and back
+ u = ucl.getResource("testdir/..");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, "Checking testdir/..");
+
+ // Check that the current directory can be found
+ // It is valid because we're walking into an valid directory and back
+ u = ucl.getResource("testdir/../");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, "Checking testdir/../");
+
+ // Check that the testdir subdirectory can not be found
+ // It is invalid because at one point, we're walking into an invalid directory
+ u = ucl.getResource("mauve-testdir/../testdir");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "Checking mauve-testdir/../testdir");
+
+ // Check that the testdir subdirectory can be found
+ // It is valid because we're walking into an valid directory and back
+ // and into a valid directory again
+ u = ucl.getResource("testdir/../testdir");
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, "Checking testdir/../testdir");
+
+ check("testfile", "mauve-testdir", true);
+ check("testdir", "mauve-testdir", true);
+ check("testdir/test", "mauve-testdir", true);
+ check("jresource", "m.jar", false);
+ check("path/in/jar/file", "m.jar", false);
+ check("path/in/jar", "m.jar", false);
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected exception: " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLClassLoader/getResourceBase.java b/gnu/testlet/java/net/URLClassLoader/getResourceBase.java
new file mode 100644
index 00000000..c1bd319e
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/getResourceBase.java
@@ -0,0 +1,156 @@
+// Tags: not-a-test
+
+// Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.net.URLClassLoader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ * Helper class for getResource classes that checks resources when
+ * URLClassLoader is set.
+ */
+public abstract class getResourceBase implements Testlet
+{
+ protected TestHarness harness;
+ protected URLClassLoader ucl;
+
+ /**
+ * Checks that a resource exists in the <code>ucl</code> class loader.
+ * The base string gives a hint about from which URL source it should
+ * get loaded.
+ * If noncanonical is true then it also checks non canonical ways
+ * (using . and .. in the resource path) of accessing the resource.
+ */
+ protected void check(String resource, String base, boolean noncanonical)
+ {
+ URL u = ucl.getResource(resource);
+ harness.debug(u != null ? u.toString() : null);
+ String sep = base.endsWith(".jar") ? "!/" : "/";
+ String fullpath = base + sep + resource;
+ String r;
+ if (u != null)
+ {
+ String f = u.getFile();
+ File file = new File(u.getFile());
+
+ // Canonize filenames. If the file is a directory, makes sure both filenames
+ // end with a slash
+ if (file.isDirectory()
+ && fullpath.length() > 1
+ && (fullpath.charAt(fullpath.length() - 1) != File.separator.charAt(0)))
+ {
+ fullpath = fullpath + File.separator;
+ }
+
+ if (file.isDirectory()
+ && f.length() > 1
+ && f.charAt(f.length() - 1) != File.separator.charAt(0))
+ {
+ f = f + File.separator;
+ }
+
+ int i = f.indexOf(fullpath);
+ if (i != -1)
+ r = f.substring(f.length() - fullpath.length());
+ else
+ r = f;
+ }
+ else
+ r = null;
+ harness.check(r, fullpath, "URL file path ends with " + fullpath);
+
+ u = ucl.getResource("no-" + resource);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "no-" + resource);
+
+ if (noncanonical)
+ {
+ int index = resource.lastIndexOf('/');
+ String name, path, dir;
+ if (index != -1)
+ {
+ name = resource.substring(index+1);
+ path = resource.substring(0, index);
+ index = path.lastIndexOf('/');
+ path = path + '/';
+ if (index != -1)
+ dir = path.substring(index);
+ else
+ dir = '/' + path;
+ }
+ else
+ {
+ path = "";
+ name = resource;
+ dir = "";
+ }
+
+ harness.debug(" == resource='" + resource
+ + "'; name='" + name
+ + "'; dir='" + dir
+ + "'; path='" + path + "'");
+
+ u = ucl.getResource(path + '/' + "no-" + name);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, path + '/' + "no-" + name);
+
+ u = ucl.getResource("./" + resource);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, "./" + resource);
+
+ u = ucl.getResource(path + "./" + name);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, path + "./" + name);
+
+ u = ucl.getResource(".\\" + resource);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "no .\\" + resource);
+
+ if (!dir.equals(""))
+ {
+ u = ucl.getResource(path + ".." + dir + name);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, path + ".." + dir + name);
+ }
+
+ if (!path.equals(""))
+ {
+ u = ucl.getResource(path + "//" + name);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u != null, path + "//" + name);
+ }
+
+ u = ucl.getResource("\\" + resource);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "no \\" + resource);
+
+ u = ucl.getResource(":" + resource);
+ harness.debug(u != null ? u.toString() : null);
+ harness.check(u == null, "no :" + resource);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLClassLoader/getResourceRemote.java b/gnu/testlet/java/net/URLClassLoader/getResourceRemote.java
new file mode 100644
index 00000000..4885de4e
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/getResourceRemote.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: getResourceBase
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.net.URLClassLoader;
+
+import java.io.IOException;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * Version of getResource test that uses a remote net connection.
+ */
+public class getResourceRemote extends getResourceBase
+{
+ public void test (TestHarness h)
+ {
+ harness = h;
+
+ try
+ {
+ URL[] urls = new URL[2];
+ urls[0] = new URL
+ ("http://sources.redhat.com/mauve/testarea/");
+ urls[1] = new URL
+ ("http://sources.redhat.com/mauve/testarea/remotejar.jar");
+ ucl = URLClassLoader.newInstance(urls);
+
+ check("testresource", "/mauve/testarea", true);
+ check("testdir/resourceindir", "/mauve/testarea", true);
+ check("remote-jresource", "/mauve/testarea/remotejar.jar", false);
+ check("path/in/remote-jar/resourcefile",
+ "/mauve/testarea/remotejar.jar", false);
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("Unexpected exception: " + ioe);
+ harness.debug(ioe);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLClassLoader/security.java b/gnu/testlet/java/net/URLClassLoader/security.java
new file mode 100644
index 00000000..e0eabd30
--- /dev/null
+++ b/gnu/testlet/java/net/URLClassLoader/security.java
@@ -0,0 +1,111 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.net.URLClassLoader;
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.net.URLStreamHandlerFactory;
+import java.security.Permission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+ ClassLoader loader = getClass().getClassLoader();
+ URLStreamHandlerFactory ushf = new TestUSHFactory();
+
+ Permission[] createClassLoader = new Permission[] {
+ new RuntimePermission("createClassLoader")};
+
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ // throwpoint: java.net.URLClassLoader-URLClassLoader(URL[])
+ harness.checkPoint("Constructor (1 arg)");
+ try {
+ sm.prepareChecks(createClassLoader);
+ new URLClassLoader(new URL[0]);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.URLClassLoader-URLClassLoader(URL[], ClassLoader)
+ harness.checkPoint("Constructor (2 arg)");
+ try {
+ sm.prepareChecks(createClassLoader);
+ new URLClassLoader(new URL[0], loader);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ // throwpoint: java.net.URLClassLoader-URLClassLoader(URL[], ClassLoader, URLStreamHandlerFactory)
+ harness.checkPoint("Constructor (3 arg)");
+ try {
+ sm.prepareChecks(createClassLoader);
+ new URLClassLoader(new URL[0], loader, ushf);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestUSHFactory implements URLStreamHandlerFactory
+ {
+ public URLStreamHandler createURLStreamHandler(String protocol)
+ {
+ return new URLStreamHandler()
+ {
+ protected URLConnection openConnection(URL u) throws IOException
+ {
+ throw new RuntimeException("not implemented");
+ }
+ };
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/CVS/Entries b/gnu/testlet/java/net/URLConnection/CVS/Entries
new file mode 100644
index 00000000..a197984a
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/CVS/Entries
@@ -0,0 +1,11 @@
+/Http.java/1.1/Sat Dec 27 16:18:00 2003//
+/Jar.java/1.2/Thu Mar 2 18:45:12 2006//
+/MyHttpURLConnection.java/1.2/Thu Jun 3 14:31:12 2004//
+/MyURLConnection.java/1.2/Mon Jul 12 16:12:41 1999//
+/URLConnectionTest.java/1.4/Sat Feb 4 14:22:39 2006//
+/getFileNameMap.java/1.1/Wed Apr 5 18:39:47 2006/-kk/
+/getHeaderFields.java/1.2/Mon Mar 6 20:08:42 2006//
+/getPermission.java/1.1/Thu Nov 13 16:33:53 2003//
+/getRequestProperties.java/1.1/Mon Feb 27 22:05:42 2006//
+/post.java/1.1/Tue Oct 26 11:29:08 2004//
+D
diff --git a/gnu/testlet/java/net/URLConnection/CVS/Repository b/gnu/testlet/java/net/URLConnection/CVS/Repository
new file mode 100644
index 00000000..b2cf7064
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URLConnection
diff --git a/gnu/testlet/java/net/URLConnection/CVS/Root b/gnu/testlet/java/net/URLConnection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URLConnection/Http.java b/gnu/testlet/java/net/URLConnection/Http.java
new file mode 100644
index 00000000..c6a579be
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/Http.java
@@ -0,0 +1,51 @@
+/* InputTest.java -- Tests HTTPConnection behaviour
+
+ Copyright (c) 2003 by Free Software Foundation, Inc.
+ Written by Guilhem Lavaux <guilhem@kaffe.org>
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+package gnu.testlet.java.net.URLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.net.*;
+import java.io.IOException;
+
+public class Http implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Good HTTP header ordering");
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+ URLConnection conn = url.openConnection();
+
+ harness.check(conn.getHeaderFieldKey(0), null);
+ harness.check(conn.getHeaderField(0), "HTTP/1.1 200 OK");
+
+ harness.check(conn.getHeaderFieldKey(2), "Server");
+ harness.check(conn.getHeaderField(2).indexOf("Apache"), 0);
+
+ }
+ catch (MalformedURLException e)
+ {
+ harness.fail("Error in test header - Exception " + e);
+ }
+ catch (IOException e)
+ {
+ harness.fail("IO error caught - " + e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/Jar.java b/gnu/testlet/java/net/URLConnection/Jar.java
new file mode 100644
index 00000000..a25aefb0
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/Jar.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.2
+
+/* Jar.java -- Tests Jar URL connection
+
+ Copyright (c) 2005, 2006 by Free Software Foundation, Inc.
+ Written by Tom Tromey <tromey@redhat.com>
+ Extended by Wolfgang Baer <WBaer@gmx.de>
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA, 02110-1301 USA. */
+
+package gnu.testlet.java.net.URLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.net.JarURLConnection;
+import java.net.URL;
+
+public class Jar implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("jar: URL with missing entry");
+ try
+ {
+ File jarfile = harness.getResourceFile("gnu#testlet#java#util#jar#JarFile#jartest.jar");
+ String filename = jarfile.toString();
+
+ URL url = new URL("jar:file:" + filename + "!/nosuchfile.txt");
+
+ // Test via JarURLConnection
+ // FileNotFoundException must already be thrown in connect
+ JarURLConnection connection = null;
+ try
+ {
+ connection = (JarURLConnection) url.openConnection();
+ connection.connect();
+ harness.check(false);
+ }
+ catch (FileNotFoundException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ // Test via direct opening of the stream on the URL object
+ try
+ {
+ url.openStream();
+ harness.check(false);
+ }
+ catch (FileNotFoundException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ }
+ catch (Throwable e)
+ {
+ harness.debug("Unexpected exception in testcase.");
+ harness.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java b/gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java
new file mode 100644
index 00000000..9f7b6dbc
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/MyHttpURLConnection.java
@@ -0,0 +1,37 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.URLConnection;
+import java.net.*;
+
+
+class MyHttpURLConnection extends HttpURLConnection {
+
+ MyHttpURLConnection(URL u) {
+ super( u ); // will set the url ...
+ }
+ public void connect() {}
+ public void disconnect() {}
+ public boolean usingProxy() { return false; }
+}
+
diff --git a/gnu/testlet/java/net/URLConnection/MyURLConnection.java b/gnu/testlet/java/net/URLConnection/MyURLConnection.java
new file mode 100644
index 00000000..378cde23
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/MyURLConnection.java
@@ -0,0 +1,40 @@
+// Tags: not-a-test
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.URLConnection;
+import java.net.*;
+import java.io.IOException;
+
+
+class MyURLConnection extends URLConnection {
+ public MyURLConnection(URL u) {
+ super(u);
+ }
+
+
+ public void connect() throws IOException {
+// if (false) { // shouldn't happen
+// throw new IOException("File info not available");
+// }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/URLConnectionTest.java b/gnu/testlet/java/net/URLConnection/URLConnectionTest.java
new file mode 100644
index 00000000..8a2c7277
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/URLConnectionTest.java
@@ -0,0 +1,481 @@
+// Tags: JDK1.0
+// Uses: MyHttpURLConnection MyURLConnection
+
+/*
+ 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.
+*/
+
+package gnu.testlet.java.net.URLConnection;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+import java.io.IOException;
+
+
+public class URLConnectionTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ harness.checkPoint("Basics");
+ try {
+ URL _url = new URL("http", new String(), "index.html");
+ try
+ {
+ _url.openConnection();
+ harness.check(true);
+ }
+ catch(IOException e)
+ {
+ harness.fail("Error: Handler - 55");
+ }
+
+ URL url = new URL("http://sources.redhat.com:80/mauve/testarea/index.html" );
+
+ URLConnection conn = url.openConnection();
+
+ harness.check (!(((HttpURLConnection)conn).usingProxy()), "Error: test_Basics - 50");
+
+ ((HttpURLConnection)conn).disconnect();
+ ((HttpURLConnection)conn).setRequestProperty("c", "d");
+ String _tmp = ((HttpURLConnection)conn).getRequestProperty("c");
+ harness.check (_tmp, "d", "Error: test_Basics - 51");
+
+ ((HttpURLConnection)conn).disconnect();
+
+ harness.check ( conn.getURL(), url, "Error in test_Basics - 1 " +
+ " getURL did not return the same URL ");
+ }
+ catch ( MalformedURLException e )
+ {
+ harness.fail("Error in test_Basics - 2 " +
+ " should not have raised malformed URL exception here " );
+ }
+ catch ( IOException e )
+ {
+ harness.fail("Error in test_Basics - 2 " +
+ " should not have raised IO exception here " );
+ }
+ catch ( Exception e )
+ {
+ harness.debug(e);
+ harness.fail("Error in test_Basics - 2 " +
+ " should not have raised exception here " );
+ }
+ catch ( Throwable e )
+ {
+ harness.debug(e);
+ harness.fail("Error in test_Basics - 2 " +
+ " should not have raised Throwable here " );
+ }
+
+ }
+
+ public void test_allowUserInteractions()
+ {
+ harness.checkPoint("allowUserInteractions");
+ try {
+ URLConnection.setDefaultAllowUserInteraction( false );
+
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ URLConnection conn = url.openConnection();
+
+ harness.check ( !(URLConnection.getDefaultAllowUserInteraction()),
+ "Error in test_allowUserInteractions - 1 " +
+ " getDefaultAllowUserInteraction returned wrong values " );
+
+ boolean bool = conn.getAllowUserInteraction();
+
+ harness.check ( ! bool, "Error in test_allowUserInteractions - 2 " +
+ " getAllowUserInteraction returned wrong values " );
+
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_allowUserInteractions - 3 " +
+ " should not have raised exception here " );
+ }
+ }
+
+
+ public void test_getContentFunctions()
+ {
+ harness.checkPoint("getContentFunctions");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ URLConnection conn = url.openConnection();
+
+ // Cannot actually check size since it may return -1
+ int siz = conn.getContentLength();
+
+ String type = conn.getContentType();
+ String enc = conn.getContentEncoding();
+
+ long dt = conn.getDate();
+
+ java.io.InputStream is = (java.io.InputStream)conn.getContent();
+
+ byte b[] = new byte[256];
+ is.read( b , 0 , b.length);
+
+ String cont = new String( b );
+
+ harness.check( type.indexOf("text/html") != -1,
+ "Error in test_getContentFunctions - 1 " +
+ " content type was not correct " );
+
+ harness.check( enc, null, "Error in test_getContentFunctions - 2 " +
+ "encoding was not correct " );
+
+ harness.check ( cont.indexOf("<!DOCTYPE HTML PUBLIC") != -1,
+ "Error in test_getContentFunctions - 4 " +
+ "getContent did not return proper results " );
+ }
+ catch ( Exception e )
+ {
+ harness.debug(e);
+ harness.fail("Error in test_getContentFunctions - 5 " +
+ " should not have raised exception here " );
+ }
+
+ }
+
+ public void test_streams()
+ {
+ harness.checkPoint("streams");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ URLConnection conn = url.openConnection();
+
+ java.io.InputStream is = conn.getInputStream();
+
+
+ byte b[] = new byte[17];
+ is.read( b , 0 , b.length);
+ is.read( b , 0 , b.length);
+ harness.check(true);
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_streams - 1 " +
+ " should not have raised exception here " );
+ }
+
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ URLConnection conn = url.openConnection();
+
+ java.io.OutputStream os = conn.getOutputStream();
+
+ byte b[] = new byte[17];
+ os.write( b , 0 , b.length);
+ harness.fail("Error in test_streams - 2 " +
+ " should have raised protocol exception here " );
+
+ }
+ catch ( Exception e )
+ {
+ harness.check(true);
+ }
+ }
+
+
+ public void test_DefaultRequestProperty()
+ {
+ harness.checkPoint("DefaultRequestProperty");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+
+ String str = HttpURLConnection.getDefaultRequestProperty("ACCEPT");
+
+ URLConnection.setDefaultRequestProperty( "ACCEPT" , "Ok accept" );
+ URLConnection conn = url.openConnection();
+
+ str = URLConnection.getDefaultRequestProperty("ACCEPT");
+
+ str = null;
+ harness.check(true);
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_DefaultRequestProperty - 1 " +
+ " should not have raised exception here " );
+ }
+ }
+
+
+ public void test_DefaultUseCaches()
+ {
+ harness.checkPoint("DefaultUseCaches");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ URLConnection conn = url.openConnection();
+
+ boolean bool = conn.getDefaultUseCaches();
+ //if ( bool )
+ // harness.fail("Error in test_DefaultUseCaches - 1 " +
+ // " getDefaultUseCaches failed " );
+
+ conn.setDefaultUseCaches(true);
+ bool = conn.getDefaultUseCaches();
+ harness.check ( bool, "Error in test_DefaultUseCaches - 2 " +
+ " get/setDefaultUseCaches failed " );
+
+ String str = null;
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_DefaultRequestProperty - 3 " +
+ " should not have raised exception here " );
+ }
+ }
+
+
+ public void test_DoInputOutput()
+ {
+ harness.checkPoint("DoInputOutput");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ URLConnection conn = url.openConnection();
+
+ boolean bool = conn.getDoInput();
+ //if ( bool )
+ // harness.fail("Error in test_DefaultUseCaches - 1 " +
+ // " getDefaultUseCaches failed " );
+
+ conn.setDoInput( true );
+ bool = conn.getDoInput();
+ harness.check ( bool, "Error in test_DoInputOutput - 1 " +
+ " get/setDoInput failed " );
+
+ conn.setDoOutput( true );
+ bool = conn.getDoOutput();
+ harness.check ( bool, "Error in test_DoInputOutput - 2 " +
+ " get/setdooutput failed " );
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_DoInputOutput - 3 " +
+ " should not have raised exception here " );
+ }
+ }
+
+ public void test_getHeaderField()
+ {
+ harness.checkPoint("getHeaderField");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ URLConnection conn = url.openConnection();
+
+ String str0 = conn.getHeaderField(0);
+ harness.debug("header-0: " + str0);
+ String str1 = conn.getHeaderField("Date");
+ harness.debug("header-1: " + str1);
+ String str2 = conn.getHeaderField("Server");
+ harness.debug("header-2: " + str2);
+ String str3 = conn.getHeaderField("Last-Modified");
+ harness.debug("header-3: " + str3);
+ String str5 = conn.getHeaderField("Content-Type");
+ harness.debug("header-5: " + str5);
+
+ harness.check ( str0, "HTTP/1.1 200 OK",
+ "Error in test_getHeaderField - 0 " +
+ " 0 header field wrong" );
+
+ harness.check ( str2.indexOf("Apache") != -1,
+ "Error in test_getHeaderField - 1 " +
+ " 2 header field wrong" );
+
+ harness.check ( str5.indexOf("text/html") != -1,
+ "Error in test_getHeaderField - 3 " +
+ " 5 header field wrong" );
+
+
+ ((HttpURLConnection)conn).disconnect();
+ }
+ catch ( Exception e )
+ {
+ harness.fail("Error in test_getHeaderField - 10 " +
+ " should not have raised exception here " );
+ }
+ }
+
+ public void test_URLConnection()
+ {
+ harness.checkPoint("URLConnection");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ MyURLConnection conn = new MyURLConnection(url);
+
+ harness.check(conn.getURL(), url,
+ "Error in test_URLConnection - 1 " + conn.getURL());
+ harness.check(conn.getContentLength(), -1,
+ "Error in test_URLConnection - 2 " + conn.getContentLength());
+ conn.getContentType();
+ conn.getContentEncoding();
+ long _tmp5 = conn.getExpiration();
+ harness.check(_tmp5, 0,
+ "Error in test_URLConnection - 5 " + conn.getExpiration());
+ harness.check(conn.getDate(), 0,
+ "Error in test_URLConnection - 6 " + conn.getDate());
+ harness.check(conn.getLastModified(), 0,
+ "Error in test_URLConnection - 7 " + conn.getLastModified());
+ conn.getHeaderField(0);
+ int _tmp = conn.getHeaderFieldInt("", 0);
+ harness.check(_tmp, 0,
+ "Error in test_URLConnection - 9 ");
+ long _tmp2 = conn.getHeaderFieldDate("", 0);
+ harness.check(_tmp2, 0,
+ "Error in test_URLConnection - 10 ");
+ harness.check(conn.getHeaderFieldKey(0), null,
+ "Error in test_URLConnection - 11 ");
+ harness.check(conn.getHeaderField(null), null,
+ "Error in test_URLConnection - 12 ");
+ harness.check(conn.getHeaderField(0), null,
+ "Error in test_URLConnection - 12a ");
+ try {
+ conn.getContent();
+ harness.fail("Error in test_URLConnection - 12aa");
+ }
+ catch (UnknownServiceException e)
+ {
+ harness.check(true);
+ }
+
+ try {
+ conn.getInputStream();
+ harness.fail("Error in test_URLConnection - getInputStream");
+ }
+ catch (UnknownServiceException e)
+ {
+ harness.check(true);
+ }
+
+ try {
+ conn.getOutputStream();
+ harness.fail("Error in test_URLConnection - getOutputStream");
+ }
+ catch (UnknownServiceException e)
+ {
+ harness.check(true);
+ }
+
+ harness.check(conn.toString().indexOf(url.toString()) != -1,
+ "Error in test_URLConnection - 12b ");
+ conn.setDoInput(true);
+ harness.check(conn.getDoInput(), "Error in test_URLConnection - 13 ");
+ conn.setDoOutput(true);
+ harness.check(conn.getDoOutput(), "Error in test_URLConnection - 14 ");
+ conn.setAllowUserInteraction(true);
+ harness.check(conn.getAllowUserInteraction(),
+ "Error in test_URLConnection - 15 ");
+ URLConnection.setDefaultAllowUserInteraction(true);
+ harness.check(URLConnection.getDefaultAllowUserInteraction(),
+ "Error in test_URLConnection - 16 ");
+ conn.setUseCaches(true);
+ harness.check(conn.getUseCaches(), "Error in test_URLConnection - 17 ");
+ conn.setIfModifiedSince(45);
+ harness.check(conn.getIfModifiedSince(), 45,
+ "Error in test_URLConnection - 18 ");
+ conn.setDefaultUseCaches(true);
+ harness.check(conn.getDefaultUseCaches(),
+ "Error in test_URLConnection - 19 ");
+ conn.setRequestProperty("a", "b");
+ conn.getRequestProperty("a");
+ MyURLConnection.setDefaultRequestProperty("c","d");
+ MyURLConnection.getDefaultRequestProperty("c");
+ MyURLConnection.setContentHandlerFactory(null);
+ // if(!MyURLConnection.guessContentTypeFromName("a").equals(""))
+ // harness.fail("Error in test_URLConnection - 22 ");
+ // if(!MyURLConnection.guessContentTypeFromStream(null).equals(""))
+ // harness.fail("Error in test_URLConnection - 22 ");
+ } catch (Exception e) {
+ harness.debug(e);
+ harness.fail("Error in test_URLConnection - 23 " +
+ " should not have raised exception here " );
+ }
+ }
+
+ public void test_HttpURLConnection()
+ {
+ harness.checkPoint("HttpURLConnection");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ MyHttpURLConnection conn = new MyHttpURLConnection(url);
+ conn.setRequestMethod("GET");
+ harness.check(conn.getRequestMethod(), "GET",
+ "Error in test_HttpURLConnection - 1 ");
+ conn.getResponseCode();
+ conn.getResponseMessage();
+ MyHttpURLConnection.setFollowRedirects(true);
+ harness.check(MyHttpURLConnection.getFollowRedirects(),
+ "Error in test_HttpURLConnection - 2 ");
+ } catch (Exception e) {
+ harness.debug(e);
+ harness.fail("Error in test_HttpURLConnection - 3 " +
+ " should not have raised exception here " );
+ }
+ }
+
+ public void test_HttpURLConnectionI()
+ {
+ harness.checkPoint("HttpURLConnectionI");
+ try {
+ URL url = new URL ( "http://sources.redhat.com/mauve/testarea/index.html");
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.getExpiration();
+ conn.getLastModified();
+ conn.getHeaderField("Host");
+ conn.getHeaderField(1);
+ conn.usingProxy();
+ harness.check(true);
+ } catch (Exception e) {
+ harness.debug(e);
+ harness.fail("Error in test_HttpURLConnectionI - 1 " +
+ " should not have raised exception here " );
+ }
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ test_allowUserInteractions();
+ test_getContentFunctions();
+ test_DefaultRequestProperty();
+ test_DefaultUseCaches();
+ test_DoInputOutput();
+ test_getHeaderField();
+ test_streams();
+ test_URLConnection();
+ test_HttpURLConnection();
+ test_HttpURLConnectionI();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
diff --git a/gnu/testlet/java/net/URLConnection/getFileNameMap.java b/gnu/testlet/java/net/URLConnection/getFileNameMap.java
new file mode 100644
index 00000000..50b08c61
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/getFileNameMap.java
@@ -0,0 +1,43 @@
+/* getFileNameMap.java -- Simple check of getFileNameMap
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.net.URLConnection;
+
+import java.net.FileNameMap;
+import java.net.URLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getFileNameMap implements Testlet {
+
+ public void test(TestHarness harness) {
+ FileNameMap fnm = URLConnection.getFileNameMap();
+ harness.check(fnm != null);
+
+ // A simple one everyone is likely to have.
+ harness.check(fnm.getContentTypeFor("foo.ps"),
+ "application/postscript");
+ }
+
+}
diff --git a/gnu/testlet/java/net/URLConnection/getHeaderFields.java b/gnu/testlet/java/net/URLConnection/getHeaderFields.java
new file mode 100644
index 00000000..a1ecb729
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/getHeaderFields.java
@@ -0,0 +1,94 @@
+/* getHeaderFields.java --
+ Copyright (c) 2004, 2006 by Free Software Foundation, Inc.
+ Written by Michael Koch <konqueror@gmx.de>
+ Written by Wolfgang Baer <WBaer@gmx.de>
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA, 02110-1301 USA. */
+
+package gnu.testlet.java.net.URLConnection;
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.*;
+import java.util.*;
+
+/**
+ * Tests getHeaderFields for the various protocol implementations.
+ */
+public class getHeaderFields implements Testlet
+{
+ private void check(TestHarness h, String urlString)
+ {
+ try
+ {
+ URL url = new URL(urlString);
+ URLConnection conn = url.openConnection();
+ conn.connect();
+
+ Map headers = conn.getHeaderFields();
+
+ h.check(headers != null);
+
+ if (! headers.isEmpty())
+ {
+ Map.Entry entry = (Map.Entry) headers.entrySet().toArray()[1];
+ h.check(entry.getKey() instanceof String);
+ h.check(entry.getValue() instanceof List);
+ }
+ }
+ catch (MalformedURLException e)
+ {
+ // Ignored. We know the URIs are valid.
+ }
+ catch (IOException e)
+ {
+ h.fail("Test failed for " + urlString);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ // Returns a map of headers.
+ h.checkPoint("Test HTTP");
+ check(h, "http://www.gnu.org/");
+
+ // Returns an empty map.
+ h.checkPoint("Test FTP");
+ check(h, "ftp://ftp.gnu.org");
+
+ // Returns a map of headers.
+ h.checkPoint("Test HTTPS");
+ check(h, "https://www.gmx.net/");
+
+ try
+ {
+ // Returns an empty map.
+ h.checkPoint("Test JAR");
+ File jarfile = h.getResourceFile("gnu#testlet#java#util#jar#JarFile#jartest.jar");
+ check(h, "jar:file:" + jarfile.toString() + "!/");
+
+ h.checkPoint("Test File");
+ check(h, "file://" + jarfile.toString());
+ }
+ catch (ResourceNotFoundException e)
+ {
+ h.debug("Unexpected exception");
+ h.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/getPermission.java b/gnu/testlet/java/net/URLConnection/getPermission.java
new file mode 100644
index 00000000..f879e069
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/getPermission.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.net.URLConnection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.net.*;
+import java.security.*;
+
+public class getPermission extends URLConnection implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // If not overridden then AllPermission
+ try
+ {
+ Permission p = this.getPermission();
+ harness.check(p, new AllPermission());
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+
+ // File needs at least read permission
+ try
+ {
+ String file = "dummy";
+ URL u = new URL("file:" + file);
+ URLConnection uc = u.openConnection();
+ Permission p = uc.getPermission();
+ harness.check(p, new FilePermission(file, "read"));
+ }
+ catch (IOException ioe)
+ {
+ harness.check(false);
+ }
+
+ // File needs at least read permission to the absolute file
+ try
+ {
+ String file = "file";
+ File f = new File(file);
+ URL u = f.toURL();
+ URLConnection uc = u.openConnection();
+ Permission p = uc.getPermission();
+ harness.check(p, new FilePermission(f.getAbsolutePath(), "read"));
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+
+ // HTTP needs at least connect permission
+ try
+ {
+ String host = "dummy";
+ int port = 80;
+ URL u = new URL("http://" + host + "/");
+ URLConnection uc = u.openConnection();
+ Permission p = uc.getPermission();
+ harness.check(p, new SocketPermission(host + ":" + port, "connect"));
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+
+ // HTTP on non-standard port needs at least connect permission on that port
+ try
+ {
+ String host = "dummy";
+ int port = 667;
+ URL u = new URL("http://" + host + ":" + port + "/");
+ URLConnection uc = u.openConnection();
+ Permission p = uc.getPermission();
+ harness.check(p, new SocketPermission(host + ":" + port, "connect"));
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+ }
+
+ // Dummy constructor
+ public getPermission() throws IOException
+ {
+ super(new URL("file:dummy"));
+ }
+
+ // Dummy connect
+ public void connect()
+ {
+ connected = true;
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/getRequestProperties.java b/gnu/testlet/java/net/URLConnection/getRequestProperties.java
new file mode 100644
index 00000000..35330e83
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/getRequestProperties.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Free Software Foundation, Inc.
+// Contributed by David Daney (ddaney@avtrex.com)
+
+// 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, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA
+
+package gnu.testlet.java.net.URLConnection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Map;
+import java.util.List;
+
+public class getRequestProperties implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ harness.checkPoint("getRequestProperties");
+ URL url = new URL("http://foo.bar/blah/blah");
+ URLConnection c = url.openConnection();
+
+ c.addRequestProperty("mauve", "p1");
+ c.addRequestProperty("mauve", "p2");
+
+ Map m = c.getRequestProperties();
+
+ List l = (List)m.get("mauve");
+
+ harness.check(l.contains("p1"));
+ harness.check(l.contains("p2"));
+
+ }
+ catch (ClassCastException cce)
+ {
+ harness.debug(cce);
+ harness.fail("ClassCastException");
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.fail("IOException");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected Exception");
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLConnection/post.java b/gnu/testlet/java/net/URLConnection/post.java
new file mode 100644
index 00000000..ba77fea8
--- /dev/null
+++ b/gnu/testlet/java/net/URLConnection/post.java
@@ -0,0 +1,52 @@
+/* post.java --
+ Copyright (c) 2004 by Free Software Foundation, Inc.
+ Written by Michael Koch <konqueror@gmx.de>
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.net.URLConnection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.net.*;
+import java.io.IOException;
+
+public class post implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ URL url = new URL("http://sources.redhat.com/mauve/testarea/index.html");
+
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.setDoOutput(true); // overwrite default.
+
+ h.check(conn.getRequestMethod(), "GET", "request method is 'GET'");
+
+ conn.getOutputStream();
+
+ h.check(conn.getRequestMethod(), "POST", "request method is 'POST'");
+ }
+ catch (MalformedURLException e)
+ {
+ h.fail("Error in test header - Exception " + e);
+ }
+ catch (IOException e)
+ {
+ h.fail("IO error caught - " + e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/net/URLEncoder/CVS/Entries b/gnu/testlet/java/net/URLEncoder/CVS/Entries
new file mode 100644
index 00000000..934e8b6b
--- /dev/null
+++ b/gnu/testlet/java/net/URLEncoder/CVS/Entries
@@ -0,0 +1,2 @@
+/URLEncoderTest.java/1.3/Thu Jun 3 14:31:13 2004//
+D
diff --git a/gnu/testlet/java/net/URLEncoder/CVS/Repository b/gnu/testlet/java/net/URLEncoder/CVS/Repository
new file mode 100644
index 00000000..edba3fa8
--- /dev/null
+++ b/gnu/testlet/java/net/URLEncoder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URLEncoder
diff --git a/gnu/testlet/java/net/URLEncoder/CVS/Root b/gnu/testlet/java/net/URLEncoder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URLEncoder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URLEncoder/URLEncoderTest.java b/gnu/testlet/java/net/URLEncoder/URLEncoderTest.java
new file mode 100644
index 00000000..a6c26c44
--- /dev/null
+++ b/gnu/testlet/java/net/URLEncoder/URLEncoderTest.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.0
+
+/*
+ Copyright (C) 1999, 2003 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.
+*/
+
+package gnu.testlet.java.net.URLEncoder;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.*;
+
+
+public class URLEncoderTest implements Testlet
+{
+ protected static TestHarness harness;
+ public void test_Basics()
+ {
+ String str1 = URLEncoder.encode("abcdefghijklmnopqrstuvwxyz");
+ harness.check (str1, "abcdefghijklmnopqrstuvwxyz",
+ "Error : test_Basics - 1 " +
+ " String returned is not encoded properly");
+
+ String str2 = URLEncoder.encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ harness.check (str2, "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+ "Error : test_Basics - 2 " +
+ " String returned is not encoded properly");
+
+ String str3 = URLEncoder.encode("hi there buddy");
+ harness.check (str3, "hi+there+buddy",
+ "Error : test_Basics - 3 " +
+ " String returned is not encoded properly");
+
+ String str4 = URLEncoder.encode("0123456789:;<");
+ harness.check (str4, "0123456789%3A%3B%3C",
+ "Error : test_Basics - 4 " +
+ " String returned is not encoded properly");
+
+ String str5 = URLEncoder.encode("\n");
+ harness.check (str5, "%0A", "test encoding of \\n");
+ }
+
+ public void testall()
+ {
+ test_Basics();
+ }
+
+ public void test (TestHarness the_harness)
+ {
+ harness = the_harness;
+ testall ();
+ }
+
+}
+
+
diff --git a/gnu/testlet/java/net/URLStreamHandler/CVS/Entries b/gnu/testlet/java/net/URLStreamHandler/CVS/Entries
new file mode 100644
index 00000000..52c2f983
--- /dev/null
+++ b/gnu/testlet/java/net/URLStreamHandler/CVS/Entries
@@ -0,0 +1,2 @@
+/Except.java/1.1/Tue Jun 20 21:20:03 2006//
+D
diff --git a/gnu/testlet/java/net/URLStreamHandler/CVS/Repository b/gnu/testlet/java/net/URLStreamHandler/CVS/Repository
new file mode 100644
index 00000000..ff9b79a4
--- /dev/null
+++ b/gnu/testlet/java/net/URLStreamHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/net/URLStreamHandler
diff --git a/gnu/testlet/java/net/URLStreamHandler/CVS/Root b/gnu/testlet/java/net/URLStreamHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/net/URLStreamHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/net/URLStreamHandler/Except.java b/gnu/testlet/java/net/URLStreamHandler/Except.java
new file mode 100644
index 00000000..fffd3ade
--- /dev/null
+++ b/gnu/testlet/java/net/URLStreamHandler/Except.java
@@ -0,0 +1,62 @@
+/* Except.java -- Regression test for URLStreamHandler
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.net.URLStreamHandler;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * PR 28095 regression test.
+ */
+public class Except implements Testlet {
+ public static class Handler extends URLStreamHandler
+ {
+ protected URLConnection openConnection(URL u)
+ {
+ return null;
+ }
+
+ protected void parseURL(URL url, String spec, int start, int end)
+ {
+ throw new RuntimeException();
+ }
+ }
+
+ public void test(TestHarness harness) {
+ boolean ok = false;
+ try {
+ URL u = new URL(null, "blah://", new Handler());
+ } catch (MalformedURLException ignore) {
+ ok = true;
+ } catch (Exception ex) {
+ harness.debug(ex);
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/BufferFactory.java b/gnu/testlet/java/nio/Buffer/BufferFactory.java
new file mode 100644
index 00000000..392a557a
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/BufferFactory.java
@@ -0,0 +1,29 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import java.nio.Buffer;
+
+public interface BufferFactory
+ {
+ Buffer newInstance();
+ }
diff --git a/gnu/testlet/java/nio/Buffer/ByteBufferTest.java b/gnu/testlet/java/nio/Buffer/ByteBufferTest.java
new file mode 100644
index 00000000..4c659c83
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/ByteBufferTest.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+
+public class ByteBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing ByteBuffer.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ByteBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing ByteBuffer.allocateDirect(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ByteBuffer.allocateDirect(10);
+ }
+ });
+
+ h.debug("Testing ByteBuffer.wrap(byte[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ByteBuffer.wrap(new byte[10]);
+ }
+ });
+
+ h.debug("Testing ByteBuffer.wrap(byte[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ByteBuffer.wrap(new byte[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/CVS/Entries b/gnu/testlet/java/nio/Buffer/CVS/Entries
new file mode 100644
index 00000000..7d506b42
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/CVS/Entries
@@ -0,0 +1,11 @@
+/BufferFactory.java/1.1/Fri May 28 05:46:21 2004//
+/ByteBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/CharBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/DoubleBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/FloatBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/IntBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/LongBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/PlainBufferTest.java/1.5/Mon Jan 17 21:40:07 2005//
+/ShortBufferTest.java/1.1/Fri May 28 05:46:21 2004//
+/WrappedWithOffsetBufferTest.java/1.5/Mon Jan 17 21:40:07 2005//
+D
diff --git a/gnu/testlet/java/nio/Buffer/CVS/Repository b/gnu/testlet/java/nio/Buffer/CVS/Repository
new file mode 100644
index 00000000..b4a0bb2e
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/Buffer
diff --git a/gnu/testlet/java/nio/Buffer/CVS/Root b/gnu/testlet/java/nio/Buffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/Buffer/CharBufferTest.java b/gnu/testlet/java/nio/Buffer/CharBufferTest.java
new file mode 100644
index 00000000..3806cfe4
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/CharBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.CharBuffer;
+
+public class CharBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing CharBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return CharBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing CharBufferTest.wrap(char[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return CharBuffer.wrap(new char[10]);
+ }
+ });
+
+ h.debug("Testing CharBufferTest.wrap(char[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return CharBuffer.wrap(new char[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/DoubleBufferTest.java b/gnu/testlet/java/nio/Buffer/DoubleBufferTest.java
new file mode 100644
index 00000000..326ff6c9
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/DoubleBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.DoubleBuffer;
+
+public class DoubleBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing DoubleBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return DoubleBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing DoubleBufferTest.wrap(double[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return DoubleBuffer.wrap(new double[10]);
+ }
+ });
+
+ h.debug("Testing DoubleBufferTest.wrap(double[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return DoubleBuffer.wrap(new double[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/FloatBufferTest.java b/gnu/testlet/java/nio/Buffer/FloatBufferTest.java
new file mode 100644
index 00000000..cfa0ada2
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/FloatBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.FloatBuffer;
+
+public class FloatBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing FloatBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return FloatBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing FloatBufferTest.wrap(float[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return FloatBuffer.wrap(new float[10]);
+ }
+ });
+
+ h.debug("Testing FloatBufferTest.wrap(float[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return FloatBuffer.wrap(new float[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/IntBufferTest.java b/gnu/testlet/java/nio/Buffer/IntBufferTest.java
new file mode 100644
index 00000000..a2e8bc66
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/IntBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.IntBuffer;
+
+public class IntBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing IntBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return IntBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing IntBufferTest.wrap(int[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return IntBuffer.wrap(new int[10]);
+ }
+ });
+
+ h.debug("Testing IntBufferTest.wrap(int[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return IntBuffer.wrap(new int[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/LongBufferTest.java b/gnu/testlet/java/nio/Buffer/LongBufferTest.java
new file mode 100644
index 00000000..cd097f6b
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/LongBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.LongBuffer;
+
+public class LongBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing LongBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return LongBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing LongBufferTest.wrap(long[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return LongBuffer.wrap(new long[10]);
+ }
+ });
+
+ h.debug("Testing LongBufferTest.wrap(long[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return LongBuffer.wrap(new long[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/PlainBufferTest.java b/gnu/testlet/java/nio/Buffer/PlainBufferTest.java
new file mode 100644
index 00000000..4d9c84c3
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/PlainBufferTest.java
@@ -0,0 +1,265 @@
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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 warrant 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.java.nio.Buffer;
+
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.InvalidMarkException;
+
+public class PlainBufferTest
+{
+ public void test(TestHarness h, BufferFactory factory)
+ {
+ try
+ {
+ intialState(h, factory);
+ position(h, factory);
+ mark(h, factory);
+ limit(h, factory);
+ rewind(h, factory);
+ clear(h, factory);
+ flip(h, factory);
+ }
+ catch(Exception e)
+ {
+ h.fail("Unexpected excetpion: "+ e);
+ h.debug(e);
+ }
+ }
+
+ private void intialState(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ checkStatus(h, buf, "intialState", 10, 10, true, 10, 0);
+ }
+ private void position(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ h.check(buf.position(1), buf, "position: buf.position(1)");
+ checkStatus(h, buf, "position", 10, 10, true, 9, 1);
+ buf.position(10);
+ checkStatus(h, buf, "position", 10, 10, false, 0, 10);
+
+ // position can't be negative
+ buf = factory.newInstance();
+ try
+ {
+ buf.position(-1);
+ h.check(false, "position: is negative");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "position: can't be negative");
+ }
+
+ // position can't be larger than limit
+ buf = factory.newInstance();
+ buf.limit(5);
+ try
+ {
+ buf.position(6);
+ h.check(false, "position: is larger than capacity");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "position: can't be larger than capacity");
+ }
+ }
+ private void mark(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ // mark at default position
+ buf = factory.newInstance();
+ h.check(buf.mark(), buf, "mark: buf.mark()");
+ checkStatus(h, buf, "mark", 10, 10, true, 10, 0);
+ buf.position(5);
+ checkStatus(h, buf, "mark", 10, 10, true, 5, 5);
+ h.check(buf.reset(), buf, "mark: buf.reset()");
+ checkStatus(h, buf, "mark", 10, 10, true, 10, 0);
+ buf.position(6);
+ checkStatus(h, buf, "mark", 10, 10, true, 4, 6);
+ buf.reset();
+ checkStatus(h, buf, "mark", 10, 10, true, 10, 0);
+
+ // mark at specified position
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ checkStatus(h, buf, "mark", 10, 10, true, 5, 5);
+ buf.position(6);
+ checkStatus(h, buf, "mark", 10, 10, true, 4, 6);
+ buf.reset();
+ checkStatus(h, buf, "mark", 10, 10, true, 5, 5);
+ buf.position(7);
+ checkStatus(h, buf, "mark", 10, 10, true, 3, 7);
+ buf.reset();
+ checkStatus(h, buf, "mark", 10, 10, true, 5, 5);
+
+ // mark should be discarded if new position is smaller than mark
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(4);
+ try
+ {
+ buf.reset();
+ h.check(false, "mark: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "mark: invalidated mark");
+ }
+ checkStatus(h, buf, "mark", 10, 10, true, 6, 4);
+ }
+ private void limit(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(2);
+ buf.mark();
+ buf.position(3);
+ h.check(buf.limit(4), buf, "limit: buf.limit(4)");
+ checkStatus(h, buf, "limit", 10, 4, true, 1, 3);
+ buf.reset();
+ checkStatus(h, buf, "limit", 10, 4, true, 2, 2);
+
+ // mark should be discarded if new limit is smaller than mark
+ // and position should be set to new limit
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(4);
+ checkStatus(h, buf, "limit", 10, 4, false, 0, 4);
+ try
+ {
+ buf.reset();
+ h.check(false, "limit: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "limit: invalidated mark");
+ }
+
+ // limit can't be negative
+ buf = factory.newInstance();
+ try
+ {
+ buf.limit(-1);
+ h.check(false, "limit: is negative");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "limit: can't be negative");
+ }
+
+ // limit can't be larger than capacity
+ buf = factory.newInstance();
+ try
+ {
+ buf.limit(11);
+ h.check(false, "limit: is larger than capacity");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "limit: can't be larger than capacity");
+ }
+ }
+ private void rewind(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(9);
+ h.check(buf.rewind(), buf, "rewind: buf.rewind()");
+ checkStatus(h, buf, "rewind", 10, 9, true, 9, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "rewind: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "rewind: invalidated mark");
+ }
+ }
+ private void clear(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(7);
+ h.check(buf.clear(), buf, "clear: buf.clear()");
+ checkStatus(h, buf, "clear", 10, 10, true, 10, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "clear: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "clear: invalidated mark");
+ }
+ }
+ private void flip(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ h.check(buf.flip(), buf, "flip: buf.flip()");
+ checkStatus(h, buf, "flip", 10, 6, true, 6, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "flip: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "flip: invalidated mark");
+ }
+ }
+
+
+ private void checkStatus(TestHarness h, Buffer buf, String prefix,
+ int cap, int lim, boolean hasRem, int rem, int pos)
+ {
+ h.check(buf.capacity(), cap, prefix +": buf.capacity()");
+ h.check(buf.limit(), lim, prefix +": buf.limit()");
+ h.check(buf.hasRemaining(), hasRem, prefix +": buf.hasRemaining()");
+ h.check(buf.remaining(), rem, prefix +": buf.remaining()");
+ h.check(buf.position(), pos, prefix +": buf.position()");
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/ShortBufferTest.java b/gnu/testlet/java/nio/Buffer/ShortBufferTest.java
new file mode 100644
index 00000000..7a6b5760
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/ShortBufferTest.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.4
+// Uses: BufferFactory PlainBufferTest WrappedWithOffsetBufferTest
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.ShortBuffer;
+
+public class ShortBufferTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.debug("Testing ShortBufferTest.allocate(int) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ShortBuffer.allocate(10);
+ }
+ });
+
+ h.debug("Testing ShortBufferTest.wrap(short[]) Buffer");
+ new PlainBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ShortBuffer.wrap(new short[10]);
+ }
+ });
+
+ h.debug("Testing ShortBufferTest.wrap(short[], int, int) Buffer");
+ new WrappedWithOffsetBufferTest().test(h, new BufferFactory()
+ {
+ public Buffer newInstance()
+ {
+ return ShortBuffer.wrap(new short[20], 10, 10);
+ }
+ });
+ }
+}
diff --git a/gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java b/gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java
new file mode 100644
index 00000000..12f92099
--- /dev/null
+++ b/gnu/testlet/java/nio/Buffer/WrappedWithOffsetBufferTest.java
@@ -0,0 +1,265 @@
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.Buffer;
+
+import gnu.testlet.TestHarness;
+
+import java.nio.Buffer;
+import java.nio.InvalidMarkException;
+
+public class WrappedWithOffsetBufferTest
+{
+ public void test(TestHarness h, BufferFactory factory)
+ {
+ try
+ {
+ intialState(h, factory);
+ position(h, factory);
+ mark(h, factory);
+ limit(h, factory);
+ rewind(h, factory);
+ clear(h, factory);
+ flip(h, factory);
+ }
+ catch(Exception e)
+ {
+ h.fail("Unexpected excetpion: "+ e);
+ h.debug(e);
+ }
+ }
+
+ private void intialState(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ checkStatus(h, buf, "intialState", 20, 20, true, 10, 10);
+ }
+ private void position(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ h.check(buf.position(1), buf, "position: buf.position(1)");
+ checkStatus(h, buf, "position", 20, 20, true, 19, 1);
+ buf.position(20);
+ checkStatus(h, buf, "position", 20, 20, false, 0, 20);
+
+ // position can't be negative
+ buf = factory.newInstance();
+ try
+ {
+ buf.position(-1);
+ h.check(false, "position: is negative");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "position: can't be negative");
+ }
+
+ // position can't be larger than limit
+ buf = factory.newInstance();
+ buf.limit(5);
+ try
+ {
+ buf.position(6);
+ h.check(false, "position: is larger than capacity");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "position: can't be larger than capacity");
+ }
+ }
+ private void mark(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ // mark at default position
+ buf = factory.newInstance();
+ h.check(buf.mark(), buf, "mark: buf.mark()");
+ checkStatus(h, buf, "mark", 20, 20, true, 10, 10);
+ buf.position(15);
+ checkStatus(h, buf, "mark", 20, 20, true, 5, 15);
+ h.check(buf.reset(), buf, "mark: buf.reset()");
+ checkStatus(h, buf, "mark", 20, 20, true, 10, 10);
+ buf.position(16);
+ checkStatus(h, buf, "mark", 20, 20, true, 4, 16);
+ buf.reset();
+ checkStatus(h, buf, "mark", 20, 20, true, 10, 10);
+
+ // mark at specified position
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ checkStatus(h, buf, "mark", 20, 20, true, 15, 5);
+ buf.position(6);
+ checkStatus(h, buf, "mark", 20, 20, true, 14, 6);
+ buf.reset();
+ checkStatus(h, buf, "mark", 20, 20, true, 15, 5);
+ buf.position(7);
+ checkStatus(h, buf, "mark", 20, 20, true, 13, 7);
+ buf.reset();
+ checkStatus(h, buf, "mark", 20, 20, true, 15, 5);
+
+ // mark should be discarded if new position is smaller than mark
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(4);
+ try
+ {
+ buf.reset();
+ h.check(false, "mark: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "mark: invalidated mark");
+ }
+ checkStatus(h, buf, "mark", 20, 20, true, 16, 4);
+ }
+ private void limit(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(2);
+ buf.mark();
+ buf.position(3);
+ h.check(buf.limit(4), buf, "limit: buf.limit(4)");
+ checkStatus(h, buf, "limit", 20, 4, true, 1, 3);
+ buf.reset();
+ checkStatus(h, buf, "limit", 20, 4, true, 2, 2);
+
+ // mark should be discarded if new limit is smaller than mark
+ // and position should be set to new limit
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(4);
+ checkStatus(h, buf, "limit", 20, 4, false, 0, 4);
+ try
+ {
+ buf.reset();
+ h.check(false, "limit: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "limit: invalidated mark");
+ }
+
+ // limit can't be negative
+ buf = factory.newInstance();
+ try
+ {
+ buf.limit(-1);
+ h.check(false, "limit: is negative");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "limit: can't be negative");
+ }
+
+ // limit can't be larger than capacity
+ buf = factory.newInstance();
+ try
+ {
+ buf.limit(21);
+ h.check(false, "limit: is larger than capacity");
+ }
+ catch(IllegalArgumentException iae)
+ {
+ h.check(true, "limit: can't be larger than capacity");
+ }
+ }
+ private void rewind(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(9);
+ h.check(buf.rewind(), buf, "rewind: buf.rewind()");
+ checkStatus(h, buf, "rewind", 20, 9, true, 9, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "rewind: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "rewind: invalidated mark");
+ }
+ }
+ private void clear(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ buf.limit(7);
+ h.check(buf.clear(), buf, "clear: buf.clear()");
+ checkStatus(h, buf, "clear", 20, 20, true, 20, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "clear: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "clear: invalidated mark");
+ }
+ }
+ private void flip(TestHarness h, BufferFactory factory)
+ {
+ Buffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(5);
+ buf.mark();
+ buf.position(6);
+ h.check(buf.flip(), buf, "flip: buf.flip()");
+ checkStatus(h, buf, "flip", 20, 6, true, 6, 0);
+ try
+ {
+ buf.reset();
+ h.check(false, "flip: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "flip: invalidated mark");
+ }
+ }
+
+
+ private void checkStatus(TestHarness h, Buffer buf, String prefix,
+ int cap, int lim, boolean hasRem, int rem, int pos)
+ {
+ h.check(buf.capacity(), cap, prefix +": buf.capacity()");
+ h.check(buf.limit(), lim, prefix +": buf.limit()");
+ h.check(buf.hasRemaining(), hasRem, prefix +": buf.hasRemaining()");
+ h.check(buf.remaining(), rem, prefix +": buf.remaining()");
+ h.check(buf.position(), pos, prefix +": buf.position()");
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/Allocating.java b/gnu/testlet/java/nio/ByteBuffer/Allocating.java
new file mode 100644
index 00000000..da5e1410
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/Allocating.java
@@ -0,0 +1,418 @@
+// Tags: JDK1.4
+// Uses: ByteBufferFactory
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.InvalidMarkException;
+
+public class Allocating implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ //
+ // allocate(int)
+ //
+ h.checkPoint("allocate(int)");
+ h.check(true);
+ ByteBufferFactory allocateFactory = new ByteBufferFactory()
+ {
+ public ByteBuffer newInstance()
+ {
+ return ByteBuffer.allocate(10);
+ }
+ };
+ ByteBuffer bufAll = ByteBuffer.allocate(10);
+ h.check(bufAll.isDirect(), false, "isDirect()");
+ h.check(bufAll.hasArray(), "hasArray()");
+ h.check(bufAll.arrayOffset(), 0, "arrayOffset()");
+ h.check(bufAll.array() != null, "array()");
+
+ overflow(h, allocateFactory, 10);
+ underflow(h, allocateFactory, 10);
+ compact(h, allocateFactory, 10);
+
+ //
+ // allocateDirect(int)
+ //
+ h.checkPoint("allocateDirect(int)");
+ h.check(true);
+ ByteBufferFactory allocateDirectFactory = new ByteBufferFactory()
+ {
+ public ByteBuffer newInstance()
+ {
+ return ByteBuffer.allocateDirect(10);
+ }
+ };
+ ByteBuffer bufAllDir = ByteBuffer.allocateDirect(10);
+ h.check(bufAllDir.isDirect(), true, "isDirect()");
+ // it's unspecified if this buffer will have backing array so we test it if there's one
+ if (bufAllDir.hasArray())
+ {
+ h.check(bufAllDir.arrayOffset(), 0, "arrayOffset()");
+ h.check(bufAllDir.array() != null, "array()");
+ }
+
+ overflow(h, allocateDirectFactory, 10);
+ underflow(h, allocateDirectFactory, 10);
+ compact(h, allocateDirectFactory, 10);
+
+ //
+ // wrap(byte[])
+ //
+ h.checkPoint("wrap(byte[])");
+ h.check(true);
+ ByteBufferFactory wrapFactory = new ByteBufferFactory()
+ {
+ public ByteBuffer newInstance()
+ {
+ return ByteBuffer.wrap(new byte[10]);
+ }
+ };
+ byte[] arrWrap = new byte[10];
+ ByteBuffer bufWrap = ByteBuffer.wrap(arrWrap);
+ h.check(bufWrap.isDirect(), false, "isDirect()");
+ h.check(bufWrap.hasArray(), true, "hasArray()");
+ h.check(bufWrap.arrayOffset(), 0, "arrayOffset()");
+ h.check(bufWrap.array(), arrWrap, "array()");
+
+ overflow(h, wrapFactory, 10);
+ underflow(h, wrapFactory, 10);
+ compact(h, wrapFactory, 10);
+
+ //
+ // wrap(byte[], int, int)
+ //
+ h.checkPoint("wrap(byte[], int, int)");
+ h.check(true);
+ ByteBufferFactory wrapWithOffsetFactory = new ByteBufferFactory()
+ {
+ public ByteBuffer newInstance()
+ {
+ return ByteBuffer.wrap(new byte[20], 5, 10);
+ }
+ };
+ byte[] arrWrapOff = new byte[10];
+ ByteBuffer bufWrapOff = ByteBuffer.wrap(arrWrapOff, 1, 1);
+ h.check(bufWrapOff.isDirect(), false, "isDirect()");
+ h.check(bufWrapOff.hasArray(), true, "hasArray()");
+ h.check(bufWrapOff.arrayOffset(), 0, "arrayOffset()");
+ h.check(bufWrapOff.array(), arrWrapOff, "array()");
+
+ overflow(h, wrapWithOffsetFactory, 15);
+ underflow(h, wrapWithOffsetFactory, 15);
+ compact(h, wrapWithOffsetFactory, 20);
+
+ array(h);
+ synchWrappedBufferWithArray(h);
+ }
+
+ private void overflow(TestHarness h, ByteBufferFactory factory, int limit)
+ {
+ ByteBuffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(limit - 1);
+ buf.put((byte)0x01);
+ try
+ {
+ buf.put((byte)0x01);
+ h.check(false, "byte overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "byte overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 3);
+ buf.putShort((short)0x0101);
+ try
+ {
+ buf.putShort((short)0x0101);
+ h.check(false, "short overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "short overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 6);
+ buf.putInt(0x01010101);
+ try
+ {
+ buf.putInt(0x01010101);
+ h.check(false, "int overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "int overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 9);
+ buf.putLong(0x0101010101010101L);
+ try
+ {
+ buf.putLong(0x0101010101010101L);
+ h.check(false, "long overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "long overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 6);
+ buf.putFloat(1.0f);
+ try
+ {
+ buf.putFloat(1.0f);
+ h.check(false, "float overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "float overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 9);
+ buf.putDouble(1.0);
+ try
+ {
+ buf.putDouble(1.0);
+ h.check(false, "double overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "double overflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 3);
+ buf.putChar('\u0101');
+ try
+ {
+ buf.putChar('\u0101');
+ h.check(false, "char overflow");
+ }
+ catch(BufferOverflowException boe)
+ {
+ h.check(true, "char overflow");
+ }
+ }
+ private void underflow(TestHarness h, ByteBufferFactory factory, int limit)
+ {
+ ByteBuffer buf = null;
+
+ buf = factory.newInstance();
+ buf.position(limit - 1);
+ buf.get();
+ try
+ {
+ buf.get();
+ h.check(false, "byte underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "byte underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 3);
+ buf.getShort();
+ try
+ {
+ buf.getShort();
+ h.check(false, "short underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "short underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 6);
+ buf.getInt();
+ try
+ {
+ buf.getInt();
+ h.check(false, "int underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "int underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 9);
+ buf.getLong();
+ try
+ {
+ buf.getLong();
+ h.check(false, "long underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "long underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 6);
+ buf.getFloat();
+ try
+ {
+ buf.getFloat();
+ h.check(false, "float underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "float underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 9);
+ buf.getDouble();
+ try
+ {
+ buf.getDouble();
+ h.check(false, "double underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "double underflow");
+ }
+
+ buf = factory.newInstance();
+ buf.position(limit - 3);
+ buf.getChar();
+ try
+ {
+ buf.getChar();
+ h.check(false, "char underflow");
+ }
+ catch(BufferUnderflowException boe)
+ {
+ h.check(true, "char underflow");
+ }
+ }
+
+ private void compact(TestHarness h, ByteBufferFactory factory, int size)
+ {
+ h.checkPoint("compact()");
+
+ ByteBuffer buf = null;
+
+ buf = factory.newInstance();
+ buf.rewind();
+ for (int i = 0; i < 10; i++)
+ {
+ buf.put((byte)(i + 1));
+ }
+ buf.limit(6);
+ buf.position(1);
+ buf.mark();
+ buf.get();
+
+ h.check(buf.compact(), buf, "compact() return value");
+ h.check(buf.position(), 4, "compact()/position");
+ h.check(buf.limit(), size, "compact()/limit");
+ try
+ {
+ buf.reset();
+ h.check(false, "mark: mark not invalidated");
+ }
+ catch(InvalidMarkException ime)
+ {
+ h.check(true, "mark: invalidated mark");
+ }
+ h.checkPoint("compact()/contents");
+ buf.rewind();
+ h.check(buf.get(), 3);
+ h.check(buf.get(), 4);
+ h.check(buf.get(), 5);
+ h.check(buf.get(), 6);
+ }
+
+
+ private void array(TestHarness h)
+ {
+ byte[] arr = null;
+ ByteBuffer buf = null;
+
+ h.checkPoint("array");
+ arr = new byte[] { 1, 2, 3 };
+ buf = ByteBuffer.wrap(arr);
+ h.check(buf.array(), arr, "array");
+
+
+ }
+
+ private void synchWrappedBufferWithArray(TestHarness h)
+ {
+ byte[] arr = null;
+ ByteBuffer buf = null;
+
+ h.checkPoint("synchWrappedBufferWithArray/wrap(byte[])");
+ arr = new byte[10];
+ buf = ByteBuffer.wrap(arr);
+ for (int i = 0; i < arr.length; i++)
+ {
+ arr[i] = (byte)(i + 1);
+ }
+ buf.order(ByteOrder.BIG_ENDIAN);
+ h.check(buf.getShort(), (short)0x0102);
+ buf.putShort((short)0x0b0c);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ h.check(buf.getShort(), (short)0x0605);
+ buf.putShort((short)0x0d0e);
+ h.check(arr[2], 0x0b);
+ h.check(arr[3], 0x0c);
+ h.check(arr[6], 0x0e);
+ h.check(arr[7], 0x0d);
+
+ h.checkPoint("synchWrappedBufferWithArray/wrap(byte[], int, int)");
+ arr = new byte[10];
+ buf = ByteBuffer.wrap(arr, 2, 8);
+ for (int i = 0; i < arr.length; i++)
+ {
+ arr[i] = (byte)(i + 1);
+ }
+ buf.order(ByteOrder.BIG_ENDIAN);
+ h.check(buf.getShort(), (short)0x0304);
+ buf.putShort((short)0x0b0c);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ h.check(buf.getShort(), (short)0x0807);
+ buf.putShort((short)0x0d0e);
+ h.check(arr[4], 0x0b);
+ h.check(arr[5], 0x0c);
+ h.check(arr[8], 0x0e);
+ h.check(arr[9], 0x0d);
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/ByteBufferFactory.java b/gnu/testlet/java/nio/ByteBuffer/ByteBufferFactory.java
new file mode 100644
index 00000000..19295e0b
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/ByteBufferFactory.java
@@ -0,0 +1,29 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.ByteBuffer;
+
+import java.nio.ByteBuffer;
+
+public interface ByteBufferFactory
+ {
+ ByteBuffer newInstance();
+ }
diff --git a/gnu/testlet/java/nio/ByteBuffer/CVS/Entries b/gnu/testlet/java/nio/ByteBuffer/CVS/Entries
new file mode 100644
index 00000000..2de8bfec
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/CVS/Entries
@@ -0,0 +1,9 @@
+/Allocating.java/1.2/Mon Dec 27 14:27:50 2004//
+/ByteBufferFactory.java/1.1/Sun Dec 26 17:08:02 2004//
+/GetPut.java/1.1/Sun Dec 26 17:08:02 2004//
+/Order.java/1.1/Sun Dec 26 17:08:02 2004//
+/TestAllocateDirect.java/1.1/Sun Aug 6 21:10:44 2006//
+/compact.java/1.1/Thu Dec 30 10:16:39 2004//
+/direct.java/1.1/Thu Oct 28 21:54:42 2004//
+/putDouble.java/1.1/Fri Oct 15 22:20:57 2004//
+D
diff --git a/gnu/testlet/java/nio/ByteBuffer/CVS/Repository b/gnu/testlet/java/nio/ByteBuffer/CVS/Repository
new file mode 100644
index 00000000..fec3f74c
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/ByteBuffer
diff --git a/gnu/testlet/java/nio/ByteBuffer/CVS/Root b/gnu/testlet/java/nio/ByteBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/ByteBuffer/GetPut.java b/gnu/testlet/java/nio/ByteBuffer/GetPut.java
new file mode 100644
index 00000000..e5845c62
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/GetPut.java
@@ -0,0 +1,484 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+public class GetPut implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ relativePut(h);
+ relativeGet(h);
+ bulkPut(h);
+ bulkGet(h);
+ bufferPut(h);
+ absolutePut(h);
+ absoluteGet(h);
+ specialValues(h);
+ }
+
+ private void relativePut(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[200];
+ buf = ByteBuffer.wrap(arr);
+ buf.order(ByteOrder.BIG_ENDIAN). put((byte)1);
+ buf.order(ByteOrder.LITTLE_ENDIAN).put((byte)2);
+ buf.order(ByteOrder.BIG_ENDIAN). putShort((short)3);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putShort((short)4);
+ buf.order(ByteOrder.BIG_ENDIAN). putInt(5);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putInt(6);
+ buf.order(ByteOrder.BIG_ENDIAN). putLong(7);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putLong(8);
+ buf.order(ByteOrder.BIG_ENDIAN). putFloat(9.0f);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putFloat(10.0f);
+ buf.order(ByteOrder.BIG_ENDIAN). putDouble(11.0);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putDouble(12.0);
+ buf.order(ByteOrder.BIG_ENDIAN). putChar('a');
+ buf.order(ByteOrder.LITTLE_ENDIAN).putChar('b');
+ buf.order(ByteOrder.BIG_ENDIAN). put((byte)0xf1);
+ buf.order(ByteOrder.LITTLE_ENDIAN).put((byte)0xf2);
+ buf.order(ByteOrder.BIG_ENDIAN). putShort((short)0xfff3);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putShort((short)0xfff4);
+ buf.order(ByteOrder.BIG_ENDIAN). putInt(0xfffffff5);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putInt(0xfffffff6);
+ buf.order(ByteOrder.BIG_ENDIAN). putLong(0xfffffffffffffff7L);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putLong(0xfffffffffffffff8L);
+ buf.order(ByteOrder.BIG_ENDIAN). putFloat(Float.NEGATIVE_INFINITY);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putFloat(Float.NEGATIVE_INFINITY);
+ buf.order(ByteOrder.BIG_ENDIAN). putDouble(Double.NEGATIVE_INFINITY);
+ buf.order(ByteOrder.LITTLE_ENDIAN).putDouble(Double.NEGATIVE_INFINITY);
+ buf.order(ByteOrder.BIG_ENDIAN). putChar('\ufffd');
+ buf.order(ByteOrder.LITTLE_ENDIAN).putChar('\ufffe');
+
+ h.checkPoint("relative put");
+ checkArray(h, TEST_ARRAY, arr);
+ }
+ private void relativeGet(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[200];
+ for (int i = 0; i < TEST_ARRAY.length; i++)
+ {
+ arr[i] = TEST_ARRAY[i];
+ }
+ buf = ByteBuffer.wrap(arr);
+ h.checkPoint("relative get");
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). get(), 1);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).get(), 2);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getShort(), 3);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getShort(), 4);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getInt(), 5);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getInt(), 6);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getLong(), 7);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getLong(), 8);
+ h.check(Float.floatToIntBits(buf.order(ByteOrder.BIG_ENDIAN).getFloat()),
+ Float.floatToIntBits(9.0f));
+ h.check(Float.floatToIntBits(buf.order(ByteOrder.LITTLE_ENDIAN).getFloat()),
+ Float.floatToIntBits(10.0f));
+ h.check(Double.doubleToLongBits(buf.order(ByteOrder.BIG_ENDIAN).getDouble()),
+ Double.doubleToLongBits(11.0));
+ h.check(Double.doubleToLongBits(buf.order(ByteOrder.LITTLE_ENDIAN).getDouble()),
+ Double.doubleToLongBits(12.0));
+ h.check((int)buf.order(ByteOrder.BIG_ENDIAN). getChar(), (int)'a');
+ h.check((int)buf.order(ByteOrder.LITTLE_ENDIAN).getChar(), (int)'b');
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). get(), (byte)0xf1);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).get(), (byte)0xf2);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getShort(), (short)0xfff3);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getShort(), (short)0xfff4);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getInt(), 0xfffffff5);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getInt(), 0xfffffff6);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN). getLong(), 0xfffffffffffffff7L);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN).getLong(), 0xfffffffffffffff8L);
+ h.check(Float.floatToIntBits(buf.order(ByteOrder.BIG_ENDIAN).getFloat()),
+ Float.floatToIntBits(Float.NEGATIVE_INFINITY));
+ h.check(Float.floatToIntBits(buf.order(ByteOrder.LITTLE_ENDIAN).getFloat()),
+ Float.floatToIntBits(Float.NEGATIVE_INFINITY));
+ h.check(Double.doubleToLongBits(buf.order(ByteOrder.BIG_ENDIAN).getDouble()),
+ Double.doubleToLongBits(Double.NEGATIVE_INFINITY));
+ h.check(Double.doubleToLongBits(buf.order(ByteOrder.LITTLE_ENDIAN).getDouble()),
+ Double.doubleToLongBits(Double.NEGATIVE_INFINITY));
+ h.check((int)buf.order(ByteOrder.BIG_ENDIAN). getChar(), (int)'\ufffd');
+ h.check((int)buf.order(ByteOrder.LITTLE_ENDIAN).getChar(), (int)'\ufffe');
+ }
+ private void bulkPut(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[6];
+ buf = ByteBuffer.wrap(arr);
+
+ buf.order(ByteOrder.BIG_ENDIAN);
+ buf.put(new byte[] { 1, 2, 0, 0, 5, 6 });
+ buf.position(2);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ buf.put(new byte[] { 0, 0, 3, 4, 0, 0 }, 2, 2);
+
+ h.checkPoint("bulk put");
+ checkArray(h, arr, new byte[] { 1, 2, 3, 4, 5, 6 });
+ }
+ private void bulkGet(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[] { 1, 2, 0, 0, 5, 6, 3, 4 };
+ buf = ByteBuffer.wrap(arr);
+
+ byte[] readArr = new byte[6];
+ buf.order(ByteOrder.BIG_ENDIAN);
+ buf.get(readArr);
+ buf.position(6);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ buf.get(readArr, 2, 2);
+
+ h.checkPoint("bulk get");
+ checkArray(h, readArr, new byte[] { 1, 2, 3, 4, 5, 6 });
+ }
+ private void bufferPut(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[6];
+ buf = ByteBuffer.wrap(arr);
+
+ buf.order(ByteOrder.BIG_ENDIAN);
+ buf.put(ByteBuffer.wrap(new byte[] { 1, 2, 0, 0, 5, 6 }));
+ buf.position(2);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ buf.put(ByteBuffer.wrap(new byte[] { 3, 4 }));
+
+ h.checkPoint("buffer put");
+ checkArray(h, arr, new byte[] { 1, 2, 3, 4, 5, 6 });
+ }
+ private void absolutePut(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[200];
+ buf = ByteBuffer.wrap(arr);
+ buf.order(ByteOrder.BIG_ENDIAN);
+ buf.putChar( 54, 'a');
+ buf.putDouble( 38, 11.0);
+ buf.putFloat( 30, 9.0f);
+ buf.putLong( 14, 7);
+ buf.putInt( 6, 5);
+ buf.putShort( 2, (short)3);
+ buf.put( 0, (byte)1);
+ buf.putChar( 112, '\ufffd');
+ buf.putDouble( 96, Double.NEGATIVE_INFINITY);
+ buf.putFloat( 88, Float.NEGATIVE_INFINITY);
+ buf.putLong( 72, 0xfffffffffffffff7L);
+ buf.putInt( 64, 0xfffffff5);
+ buf.putShort( 60, (short)0xfff3);
+ buf.put( 58, (byte)0xf1);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ buf.put( 1, (byte)2);
+ buf.putShort( 4, (short)4);
+ buf.putInt( 10, 6);
+ buf.putLong( 22, 8);
+ buf.putFloat( 34, 10.0f);
+ buf.putDouble( 46, 12.0);
+ buf.putChar( 56, 'b');
+ buf.putLong( 80, 0xfffffffffffffff8L);
+ buf.putInt( 68, 0xfffffff6);
+ buf.putShort( 62, (short)0xfff4);
+ buf.put( 59, (byte)0xf2);
+ buf.putFloat( 92, Float.NEGATIVE_INFINITY);
+ buf.putDouble(104, Double.NEGATIVE_INFINITY);
+ buf.putChar( 114, '\ufffe');
+
+ h.checkPoint("absolute put");
+ checkArray(h, TEST_ARRAY, arr);
+ }
+ private void absoluteGet(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[200];
+ for (int i = 0; i < TEST_ARRAY.length; i++)
+ {
+ arr[i] = TEST_ARRAY[i];
+ }
+
+ buf = ByteBuffer.wrap(arr);
+ h.checkPoint("absolute get");
+ buf.order(ByteOrder.BIG_ENDIAN);
+ h.check((int)buf.getChar(54), (int)'a');
+ h.check(Double.doubleToLongBits(buf.getDouble(38)), Double.doubleToLongBits(11.0));
+ h.check(Float.floatToIntBits(buf.getFloat(30)), Float.floatToIntBits(9.0f));
+ h.check(buf.getLong(14), 7);
+ h.check(buf.getInt(6), 5);
+ h.check(buf.getShort(2), 3);
+ h.check(buf.get(0), 1);
+ h.check((int)buf.getChar(112), (int)'\ufffd');
+ h.check(Double.doubleToLongBits(buf.getDouble(96)), Double.doubleToLongBits(Double.NEGATIVE_INFINITY));
+ h.check(Float.floatToIntBits(buf.getFloat(88)), Float.floatToIntBits(Float.NEGATIVE_INFINITY));
+ h.check(buf.getLong(72), 0xfffffffffffffff7L);
+ h.check(buf.getInt(64), 0xfffffff5);
+ h.check(buf.getShort(60),(short)0xfff3);
+ h.check(buf.get(58), (byte)0xf1);
+
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ h.check(buf.get(1), 2);
+ h.check(buf.getShort(4), 4);
+ h.check(buf.getInt(10), 6);
+ h.check(buf.getLong(22), 8);
+ h.check(Float.floatToIntBits(buf.getFloat(34)), Float.floatToIntBits(10.0f));
+ h.check(Double.doubleToLongBits(buf.getDouble(46)), Double.doubleToLongBits(12.0));
+ h.check((int)buf.getChar(56), (int)'b');
+ h.check(buf.get(59), (byte)0xf2);
+ h.check(buf.getShort(62),(byte)0xfff4);
+ h.check(buf.getInt(68), 0xfffffff6);
+ h.check(buf.getLong(80), 0xfffffffffffffff8L);
+ h.check(Float.floatToIntBits(buf.getFloat(92)), Float.floatToIntBits(Float.NEGATIVE_INFINITY));
+ h.check(Double.doubleToLongBits(buf.getDouble(104)), Double.doubleToLongBits(Double.NEGATIVE_INFINITY));
+ h.check((int)buf.getChar(114), (int)'\ufffe');
+ }
+ private void specialValues(TestHarness h)
+ {
+ ByteBuffer buf = null;
+
+ byte[] arr = new byte[200];
+ buf = ByteBuffer.wrap(arr);
+
+ h.checkPoint("special values");
+ buf.order(ByteOrder.BIG_ENDIAN);
+ buf.put(Byte.MIN_VALUE);
+ buf.put(Byte.MAX_VALUE);
+ buf.putShort(Short.MIN_VALUE);
+ buf.putShort(Short.MAX_VALUE);
+ buf.putInt(Integer.MIN_VALUE);
+ buf.putInt(Integer.MAX_VALUE);
+ buf.putLong(Long.MIN_VALUE);
+ buf.putLong(Long.MAX_VALUE);
+ buf.putFloat(Float.MIN_VALUE);
+ buf.putFloat(Float.MAX_VALUE);
+ buf.putFloat(Float.NaN);
+ buf.putFloat(Float.NEGATIVE_INFINITY);
+ buf.putFloat(Float.POSITIVE_INFINITY);
+ buf.putDouble(Double.MIN_VALUE);
+ buf.putDouble(Double.MAX_VALUE);
+ buf.putDouble(Double.NaN);
+ buf.putDouble(Double.NEGATIVE_INFINITY);
+ buf.putDouble(Double.POSITIVE_INFINITY);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ buf.put(Byte.MIN_VALUE);
+ buf.put(Byte.MAX_VALUE);
+ buf.putShort(Short.MIN_VALUE);
+ buf.putShort(Short.MAX_VALUE);
+ buf.putInt(Integer.MIN_VALUE);
+ buf.putInt(Integer.MAX_VALUE);
+ buf.putLong(Long.MIN_VALUE);
+ buf.putLong(Long.MAX_VALUE);
+ buf.putFloat(Float.MIN_VALUE);
+ buf.putFloat(Float.MAX_VALUE);
+ buf.putFloat(Float.NaN);
+ buf.putFloat(Float.NEGATIVE_INFINITY);
+ buf.putFloat(Float.POSITIVE_INFINITY);
+ buf.putDouble(Double.MIN_VALUE);
+ buf.putDouble(Double.MAX_VALUE);
+ buf.putDouble(Double.NaN);
+ buf.putDouble(Double.NEGATIVE_INFINITY);
+ buf.putDouble(Double.POSITIVE_INFINITY);
+ buf.rewind();
+ buf.order(ByteOrder.BIG_ENDIAN);
+ h.check(buf.get(), Byte.MIN_VALUE);
+ h.check(buf.get(), Byte.MAX_VALUE);
+ h.check(buf.getShort(), Short.MIN_VALUE);
+ h.check(buf.getShort(), Short.MAX_VALUE);
+ h.check(buf.getInt(), Integer.MIN_VALUE);
+ h.check(buf.getInt(), Integer.MAX_VALUE);
+ h.check(buf.getLong(), Long.MIN_VALUE);
+ h.check(buf.getLong(), Long.MAX_VALUE);
+ h.check(buf.getFloat(), Float.MIN_VALUE);
+ h.check(buf.getFloat(), Float.MAX_VALUE);
+ h.check(buf.getFloat(), Float.NaN);
+ h.check(buf.getFloat(), Float.NEGATIVE_INFINITY);
+ h.check(buf.getFloat(), Float.POSITIVE_INFINITY);
+ h.check(buf.getDouble(), Double.MIN_VALUE);
+ h.check(buf.getDouble(), Double.MAX_VALUE);
+ h.check(buf.getDouble(), Double.NaN);
+ h.check(buf.getDouble(), Double.NEGATIVE_INFINITY);
+ h.check(buf.getDouble(), Double.POSITIVE_INFINITY);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ h.check(buf.get(), Byte.MIN_VALUE);
+ h.check(buf.get(), Byte.MAX_VALUE);
+ h.check(buf.getShort(), Short.MIN_VALUE);
+ h.check(buf.getShort(), Short.MAX_VALUE);
+ h.check(buf.getInt(), Integer.MIN_VALUE);
+ h.check(buf.getInt(), Integer.MAX_VALUE);
+ h.check(buf.getLong(), Long.MIN_VALUE);
+ h.check(buf.getLong(), Long.MAX_VALUE);
+ h.check(buf.getFloat(), Float.MIN_VALUE);
+ h.check(buf.getFloat(), Float.MAX_VALUE);
+ h.check(buf.getFloat(), Float.NaN);
+ h.check(buf.getFloat(), Float.NEGATIVE_INFINITY);
+ h.check(buf.getFloat(), Float.POSITIVE_INFINITY);
+ h.check(buf.getDouble(), Double.MIN_VALUE);
+ h.check(buf.getDouble(), Double.MAX_VALUE);
+ h.check(buf.getDouble(), Double.NaN);
+ h.check(buf.getDouble(), Double.NEGATIVE_INFINITY);
+ h.check(buf.getDouble(), Double.POSITIVE_INFINITY);
+ }
+
+
+ private static final byte[] TEST_ARRAY = new byte[116];
+ static
+ {
+ TEST_ARRAY[ 0] = 1; // (byte)1
+ TEST_ARRAY[ 1] = 2; // (byte)2
+ TEST_ARRAY[ 2] = 0; // (short)3
+ TEST_ARRAY[ 3] = 3;
+ TEST_ARRAY[ 4] = 4; // (short)4
+ TEST_ARRAY[ 5] = 0;
+ TEST_ARRAY[ 6] = 0; // (int)5
+ TEST_ARRAY[ 7] = 0;
+ TEST_ARRAY[ 8] = 0;
+ TEST_ARRAY[ 9] = 5;
+ TEST_ARRAY[10] = 6; // (int)6
+ TEST_ARRAY[11] = 0;
+ TEST_ARRAY[12] = 0;
+ TEST_ARRAY[13] = 0;
+ TEST_ARRAY[14] = 0; // (long)7
+ TEST_ARRAY[15] = 0;
+ TEST_ARRAY[16] = 0;
+ TEST_ARRAY[17] = 0;
+ TEST_ARRAY[18] = 0;
+ TEST_ARRAY[19] = 0;
+ TEST_ARRAY[20] = 0;
+ TEST_ARRAY[21] = 7;
+ TEST_ARRAY[22] = 8; // (long)8
+ TEST_ARRAY[23] = 0;
+ TEST_ARRAY[24] = 0;
+ TEST_ARRAY[25] = 0;
+ TEST_ARRAY[26] = 0;
+ TEST_ARRAY[27] = 0;
+ TEST_ARRAY[28] = 0;
+ TEST_ARRAY[29] = 0;
+ int f9 = Float.floatToIntBits(9.0f);
+ TEST_ARRAY[30] = (byte)(f9 >> 24 & 0xff); // (float)9
+ TEST_ARRAY[31] = (byte)(f9 >> 16 & 0xff);
+ TEST_ARRAY[32] = (byte)(f9 >> 8 & 0xff);
+ TEST_ARRAY[33] = (byte)(f9 & 0xff);
+ int f10 = Float.floatToIntBits(10.0f);
+ TEST_ARRAY[34] = (byte)(f10 & 0xff); // (float)10
+ TEST_ARRAY[35] = (byte)(f10 >> 8 & 0xff);
+ TEST_ARRAY[36] = (byte)(f10 >> 16 & 0xff);
+ TEST_ARRAY[37] = (byte)(f10 >> 24 & 0xff);
+ long d11 = Double.doubleToLongBits(11.0);
+ TEST_ARRAY[38] = (byte)(d11 >> 56 & 0xff); // (double)11
+ TEST_ARRAY[39] = (byte)(d11 >> 48 & 0xff);
+ TEST_ARRAY[40] = (byte)(d11 >> 40 & 0xff);
+ TEST_ARRAY[41] = (byte)(d11 >> 32 & 0xff);
+ TEST_ARRAY[42] = (byte)(d11 >> 24 & 0xff);
+ TEST_ARRAY[43] = (byte)(d11 >> 16 & 0xff);
+ TEST_ARRAY[44] = (byte)(d11 >> 8 & 0xff);
+ TEST_ARRAY[45] = (byte)(d11 & 0xff);
+ long d12 = Double.doubleToLongBits(12.0);
+ TEST_ARRAY[46] = (byte)(d12 & 0xff); // (double)12
+ TEST_ARRAY[47] = (byte)(d12 >> 8 & 0xff);
+ TEST_ARRAY[48] = (byte)(d12 >> 16 & 0xff);
+ TEST_ARRAY[49] = (byte)(d12 >> 24 & 0xff);
+ TEST_ARRAY[50] = (byte)(d12 >> 32 & 0xff);
+ TEST_ARRAY[51] = (byte)(d12 >> 40 & 0xff);
+ TEST_ARRAY[52] = (byte)(d12 >> 48 & 0xff);
+ TEST_ARRAY[53] = (byte)(d12 >> 56 & 0xff);
+ TEST_ARRAY[54] = 0; // 'a'
+ TEST_ARRAY[55] = (byte)'a';
+ TEST_ARRAY[56] = (byte)'b'; // 'b'
+ TEST_ARRAY[57] = 0;
+ TEST_ARRAY[58] = (byte)0xf1; // (byte)f1
+ TEST_ARRAY[59] = (byte)0xf2; // (byte)f2
+ TEST_ARRAY[60] = (byte)0xff; // (short)fff3
+ TEST_ARRAY[61] = (byte)0xf3;
+ TEST_ARRAY[62] = (byte)0xf4; // (short)fff4
+ TEST_ARRAY[63] = (byte)0xff;
+ TEST_ARRAY[64] = (byte)0xff; // (int)fffffff5
+ TEST_ARRAY[65] = (byte)0xff;
+ TEST_ARRAY[66] = (byte)0xff;
+ TEST_ARRAY[67] = (byte)0xf5;
+ TEST_ARRAY[68] = (byte)0xf6; // (int)fffffff6
+ TEST_ARRAY[69] = (byte)0xff;
+ TEST_ARRAY[70] = (byte)0xff;
+ TEST_ARRAY[71] = (byte)0xff;
+ TEST_ARRAY[72] = (byte)0xff; // (long)fffffffffffffff7
+ TEST_ARRAY[73] = (byte)0xff;
+ TEST_ARRAY[74] = (byte)0xff;
+ TEST_ARRAY[75] = (byte)0xff;
+ TEST_ARRAY[76] = (byte)0xff;
+ TEST_ARRAY[77] = (byte)0xff;
+ TEST_ARRAY[78] = (byte)0xff;
+ TEST_ARRAY[79] = (byte)0xf7;
+ TEST_ARRAY[80] = (byte)0xf8; // (long)fffffffffffffff8
+ TEST_ARRAY[81] = (byte)0xff;
+ TEST_ARRAY[82] = (byte)0xff;
+ TEST_ARRAY[83] = (byte)0xff;
+ TEST_ARRAY[84] = (byte)0xff;
+ TEST_ARRAY[85] = (byte)0xff;
+ TEST_ARRAY[86] = (byte)0xff;
+ TEST_ARRAY[87] = (byte)0xff;
+ int fNI = Float.floatToIntBits(Float.NEGATIVE_INFINITY);
+ TEST_ARRAY[88] = (byte)(fNI >> 24 & 0xff); // (float)bits: NEGATIVE_INFINITY 0xff800000
+ TEST_ARRAY[89] = (byte)(fNI >> 16 & 0x80);
+ TEST_ARRAY[90] = (byte)(fNI >> 8 & 0x00);
+ TEST_ARRAY[91] = (byte)(fNI & 0x00);
+ TEST_ARRAY[92] = (byte)(fNI & 0x00); // (float)bits: NEGATIVE_INFINITY 0xff800000
+ TEST_ARRAY[93] = (byte)(fNI >> 8 & 0x00);
+ TEST_ARRAY[94] = (byte)(fNI >> 16 & 0x80);
+ TEST_ARRAY[95] = (byte)(fNI >> 24 & 0xff);
+ long dNI = Double.doubleToLongBits(Double.NEGATIVE_INFINITY);
+ TEST_ARRAY[96] = (byte)(dNI >> 56 & 0xff); // (double)bits: NEGATIVE_INFINITY 0xfff0000000000000L
+ TEST_ARRAY[97] = (byte)(dNI >> 48 & 0xf0);
+ TEST_ARRAY[98] = (byte)(dNI >> 40 & 0x00);
+ TEST_ARRAY[99] = (byte)(dNI >> 32 & 0x00);
+ TEST_ARRAY[100] = (byte)(dNI >> 24 & 0x00);
+ TEST_ARRAY[101] = (byte)(dNI >> 16 & 0x00);
+ TEST_ARRAY[102] = (byte)(dNI >> 8 & 0x00);
+ TEST_ARRAY[103] = (byte)(dNI & 0x00);
+ TEST_ARRAY[104] = (byte)(dNI & 0x00); // (double)bits: NEGATIVE_INFINITY 0xfff0000000000000L
+ TEST_ARRAY[105] = (byte)(dNI >> 8 & 0x00);
+ TEST_ARRAY[106] = (byte)(dNI >> 16 & 0x00);
+ TEST_ARRAY[107] = (byte)(dNI >> 24 & 0x00);
+ TEST_ARRAY[108] = (byte)(dNI >> 32 & 0x00);
+ TEST_ARRAY[109] = (byte)(dNI >> 40 & 0x00);
+ TEST_ARRAY[110] = (byte)(dNI >> 48 & 0xf0);
+ TEST_ARRAY[111] = (byte)(dNI >> 56 & 0xff);
+ TEST_ARRAY[112] = (byte)0xff; // \ufffd
+ TEST_ARRAY[113] = (byte)0xfd;
+ TEST_ARRAY[114] = (byte)0xfe; // \ufffe
+ TEST_ARRAY[115] = (byte)0xff;
+ }
+ private void checkArray(TestHarness h, byte[] arr0, byte[] arr1)
+ {
+ for (int i = 0; i < arr0.length; i++)
+ {
+ h.check(arr0[i], arr1[i]);
+ }
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/Order.java b/gnu/testlet/java/nio/ByteBuffer/Order.java
new file mode 100644
index 00000000..e58d6f7f
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/Order.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Max Gilead <gilead@yellowhedgehog.com>
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+public class Order implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ByteBuffer buf = ByteBuffer.allocate(4);
+ h.check(buf.order(ByteOrder.BIG_ENDIAN), buf, "buf.order(ByteOrder.BIG_ENDIAN)");
+ h.check(buf.order(), ByteOrder.BIG_ENDIAN, "order() == ByteOrder.BIG_ENDIAN");
+ buf.putInt(0x11223344);
+ h.check(buf.order(ByteOrder.LITTLE_ENDIAN), buf, "buf.order(ByteOrder.LITTLE_ENDIAN)");
+ h.check(buf.order(), ByteOrder.LITTLE_ENDIAN, "order() == ByteOrder.LITTLE_ENDIAN");
+ buf.rewind();
+ h.check(buf.getInt(), 0x44332211, "get()");
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/TestAllocateDirect.java b/gnu/testlet/java/nio/ByteBuffer/TestAllocateDirect.java
new file mode 100644
index 00000000..e9d8fe48
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/TestAllocateDirect.java
@@ -0,0 +1,71 @@
+/* TestAllocateDirect.java -- test direct byte buffer operations.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.nio.ByteBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Test of various operations work for direct byte buffers.
+ *
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestAllocateDirect implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ ByteBuffer direct = ByteBuffer.allocateDirect(32);
+
+ // Test PR 28608.
+ harness.checkPoint("PR 28608");
+ ByteBuffer duplicate = null;
+ try
+ {
+ duplicate = direct.duplicate();
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ }
+ harness.check(duplicate != null);
+
+ // Data should be zeroed out for new buffers.
+ harness.checkPoint("initial data");
+ boolean result = true;
+ boolean sawData = false;
+ while (direct.hasRemaining())
+ {
+ result = result && (direct.get() == 0);
+ sawData = true;
+ }
+ harness.check(result && sawData);
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/compact.java b/gnu/testlet/java/nio/ByteBuffer/compact.java
new file mode 100644
index 00000000..69f2bb44
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/compact.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ByteBuffer buffer = ByteBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ buffer = ByteBuffer.allocateDirect(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/direct.java b/gnu/testlet/java/nio/ByteBuffer/direct.java
new file mode 100644
index 00000000..d82ae3fb
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/direct.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class direct implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ByteBuffer bb;
+ IntBuffer ib;
+
+ bb = ByteBuffer.allocate(1024);
+ h.check(! bb.isDirect(), "non-direct byte buffer");
+
+ ib = bb.asIntBuffer();
+ h.check(! ib.isDirect(), "int buffer view on non-direct byte buffer");
+
+ bb = ByteBuffer.allocateDirect(1024);
+ h.check(bb.isDirect(), "direct byte buffer");
+
+ ib = bb.asIntBuffer();
+ h.check(ib.isDirect(), "int buffer view on direct byte buffer");
+ }
+}
diff --git a/gnu/testlet/java/nio/ByteBuffer/putDouble.java b/gnu/testlet/java/nio/ByteBuffer/putDouble.java
new file mode 100644
index 00000000..a3c1dffe
--- /dev/null
+++ b/gnu/testlet/java/nio/ByteBuffer/putDouble.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sven de Marothy
+
+// 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.java.nio.ByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.ByteBuffer;
+
+public class putDouble
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness h)
+ {
+ ByteBuffer b = ByteBuffer.allocate(8);
+ long doubleBits = 0x7ff8000000000007L;
+ double d = Double.longBitsToDouble(doubleBits);
+ System.out.println(Double.isNaN(d));
+ b.putDouble(d);
+
+ // Test 1: Check the bit pattern, should match RawLongBits exactly
+ h.check(doubleBits == Double.doubleToRawLongBits(b.getDouble(0)));
+
+ // Test 2: Try an ordinary number (exactly representable in binary)
+ b.putDouble(0, 1.5);
+ h.check(1.5 == b.getDouble(0));
+
+ }
+
+}
+
diff --git a/gnu/testlet/java/nio/CVS/Entries b/gnu/testlet/java/nio/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/CVS/Entries.Log b/gnu/testlet/java/nio/CVS/Entries.Log
new file mode 100644
index 00000000..dbf0435b
--- /dev/null
+++ b/gnu/testlet/java/nio/CVS/Entries.Log
@@ -0,0 +1,10 @@
+A D/Buffer////
+A D/ByteBuffer////
+A D/CharBuffer////
+A D/DoubleBuffer////
+A D/FloatBuffer////
+A D/IntBuffer////
+A D/LongBuffer////
+A D/ShortBuffer////
+A D/channels////
+A D/charset////
diff --git a/gnu/testlet/java/nio/CVS/Repository b/gnu/testlet/java/nio/CVS/Repository
new file mode 100644
index 00000000..c91b9c4a
--- /dev/null
+++ b/gnu/testlet/java/nio/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio
diff --git a/gnu/testlet/java/nio/CVS/Root b/gnu/testlet/java/nio/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/CharBuffer/CVS/Entries b/gnu/testlet/java/nio/CharBuffer/CVS/Entries
new file mode 100644
index 00000000..93a1aa0b
--- /dev/null
+++ b/gnu/testlet/java/nio/CharBuffer/CVS/Entries
@@ -0,0 +1,3 @@
+/CharSequenceWrapper.java/1.1/Thu Apr 12 20:31:55 2007//
+/compact.java/1.1/Thu Dec 30 10:16:39 2004//
+D
diff --git a/gnu/testlet/java/nio/CharBuffer/CVS/Repository b/gnu/testlet/java/nio/CharBuffer/CVS/Repository
new file mode 100644
index 00000000..83a82195
--- /dev/null
+++ b/gnu/testlet/java/nio/CharBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/CharBuffer
diff --git a/gnu/testlet/java/nio/CharBuffer/CVS/Root b/gnu/testlet/java/nio/CharBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/CharBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/CharBuffer/CharSequenceWrapper.java b/gnu/testlet/java/nio/CharBuffer/CharSequenceWrapper.java
new file mode 100644
index 00000000..7c88144d
--- /dev/null
+++ b/gnu/testlet/java/nio/CharBuffer/CharSequenceWrapper.java
@@ -0,0 +1,186 @@
+/* CharSequenceWrapper.java -- Tests the CharSequence wrapping CharBuffer
+ Copyright (C) 2007 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.nio.CharBuffer;
+
+import java.nio.CharBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This tests the CharBuffer that wraps a CharSequence.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ *
+ */
+public class CharSequenceWrapper implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testSlice(harness);
+ testDuplicate(harness);
+ testBasic(harness);
+ }
+
+ /**
+ * Tests some basic properties of a char sequence wrapping char buffer.
+ *
+ * @param h the test harness
+ */
+ private void testBasic(TestHarness h)
+ {
+ h.checkPoint("testBasic");
+ StringBuilder b = new StringBuilder("Hello World");
+ CharBuffer cb = CharBuffer.wrap(b, 4, 7);
+ try
+ {
+ cb.arrayOffset();
+ h.fail("testBasic");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ try
+ {
+ cb.array();
+ h.fail("testBasic");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ h.check(cb.capacity(), b.length());
+ h.check(cb.hasArray(), false);
+ h.check(cb.hasRemaining(), true);
+ h.check(cb.isDirect(), false);
+ h.check(cb.isReadOnly(), true);
+ h.check(cb.length(), 3);
+ h.check(cb.limit(), 7);
+ h.check(cb.position(), 4);
+ h.check(cb.remaining(), 3);
+ try
+ {
+ cb.compact();
+ h.fail("testBasic");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ }
+
+ /**
+ * Tests how slicing affects the wrapped char buffer.
+ *
+ * @param h the test harness
+ */
+ private void testSlice(TestHarness h)
+ {
+ StringBuilder b = new StringBuilder("Hello World");
+ CharBuffer cb = CharBuffer.wrap(b);
+ cb.position(4);
+ cb.limit(7);
+ CharBuffer slice = cb.slice();
+
+ h.check(slice.capacity(), 3);
+ try
+ {
+ slice.arrayOffset();
+ h.fail("testSlice");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ h.check(slice.hasArray(), false);
+ try
+ {
+ slice.array();
+ h.fail("testSlice");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ h.check(slice.isDirect(), false);
+ h.check(slice.isReadOnly(), true);
+ h.check(slice.length(), 3);
+ h.check(slice.limit(), 3);
+ h.check(slice.position(), 0);
+
+ // This shows a JDK bug..
+ h.check(slice.get(), 'o');
+ h.check(slice.get(), ' ');
+ h.check(slice.get(), 'W');
+
+ }
+
+ /**
+ * Tests how duplicating affects the wrapped char buffer.
+ *
+ * @param h the test harness
+ */
+ private void testDuplicate(TestHarness h)
+ {
+ StringBuilder b = new StringBuilder("Hello World");
+ CharBuffer cb = CharBuffer.wrap(b);
+ cb.position(4);
+ cb.limit(7);
+ CharBuffer dup = cb.duplicate();
+
+ h.check(dup.capacity(), 11);
+ try
+ {
+ dup.arrayOffset();
+ h.fail("testDuplicate");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ h.check(dup.hasArray(), false);
+ try
+ {
+ dup.array();
+ h.fail("testSlice");
+ }
+ catch (UnsupportedOperationException ex)
+ {
+ h.check(true);
+ }
+ h.check(dup.isDirect(), false);
+ h.check(dup.isReadOnly(), true);
+ h.check(dup.length(), 3);
+ h.check(dup.limit(), 7);
+ h.check(dup.position(), 4);
+
+ h.check(dup.get(), 'o');
+ h.check(dup.get(), ' ');
+ h.check(dup.get(), 'W');
+
+ }
+
+}
diff --git a/gnu/testlet/java/nio/CharBuffer/compact.java b/gnu/testlet/java/nio/CharBuffer/compact.java
new file mode 100644
index 00000000..243e9af1
--- /dev/null
+++ b/gnu/testlet/java/nio/CharBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.CharBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ CharBuffer buffer = CharBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asCharBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 100, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/DoubleBuffer/CVS/Entries b/gnu/testlet/java/nio/DoubleBuffer/CVS/Entries
new file mode 100644
index 00000000..ddab8de9
--- /dev/null
+++ b/gnu/testlet/java/nio/DoubleBuffer/CVS/Entries
@@ -0,0 +1,3 @@
+/compact.java/1.1/Thu Dec 30 10:16:39 2004//
+/compareTo.java/1.1/Tue Dec 6 04:36:06 2005//
+D
diff --git a/gnu/testlet/java/nio/DoubleBuffer/CVS/Repository b/gnu/testlet/java/nio/DoubleBuffer/CVS/Repository
new file mode 100644
index 00000000..97ff65d5
--- /dev/null
+++ b/gnu/testlet/java/nio/DoubleBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/DoubleBuffer
diff --git a/gnu/testlet/java/nio/DoubleBuffer/CVS/Root b/gnu/testlet/java/nio/DoubleBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/DoubleBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/DoubleBuffer/compact.java b/gnu/testlet/java/nio/DoubleBuffer/compact.java
new file mode 100644
index 00000000..06c7b2de
--- /dev/null
+++ b/gnu/testlet/java/nio/DoubleBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.DoubleBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DoubleBuffer buffer = DoubleBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asDoubleBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 25, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/DoubleBuffer/compareTo.java b/gnu/testlet/java/nio/DoubleBuffer/compareTo.java
new file mode 100644
index 00000000..1ad9805f
--- /dev/null
+++ b/gnu/testlet/java/nio/DoubleBuffer/compareTo.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Red Hat, Inc.
+
+// 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.java.nio.DoubleBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compareTo implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ double darray[] = new double[1];
+ darray[0] = Double.NaN;
+
+ DoubleBuffer fb1 = DoubleBuffer.wrap(darray);
+ DoubleBuffer fb2 = DoubleBuffer.wrap(darray);
+
+ h.check(fb1.compareTo(fb2), 0, "double buffer compare with NaN entry");
+ }
+}
+
diff --git a/gnu/testlet/java/nio/FloatBuffer/CVS/Entries b/gnu/testlet/java/nio/FloatBuffer/CVS/Entries
new file mode 100644
index 00000000..ddab8de9
--- /dev/null
+++ b/gnu/testlet/java/nio/FloatBuffer/CVS/Entries
@@ -0,0 +1,3 @@
+/compact.java/1.1/Thu Dec 30 10:16:39 2004//
+/compareTo.java/1.1/Tue Dec 6 04:36:06 2005//
+D
diff --git a/gnu/testlet/java/nio/FloatBuffer/CVS/Repository b/gnu/testlet/java/nio/FloatBuffer/CVS/Repository
new file mode 100644
index 00000000..e53e8c69
--- /dev/null
+++ b/gnu/testlet/java/nio/FloatBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/FloatBuffer
diff --git a/gnu/testlet/java/nio/FloatBuffer/CVS/Root b/gnu/testlet/java/nio/FloatBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/FloatBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/FloatBuffer/compact.java b/gnu/testlet/java/nio/FloatBuffer/compact.java
new file mode 100644
index 00000000..642e6a65
--- /dev/null
+++ b/gnu/testlet/java/nio/FloatBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.FloatBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ FloatBuffer buffer = FloatBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asFloatBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 50, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/FloatBuffer/compareTo.java b/gnu/testlet/java/nio/FloatBuffer/compareTo.java
new file mode 100644
index 00000000..bd4f8eae
--- /dev/null
+++ b/gnu/testlet/java/nio/FloatBuffer/compareTo.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Red Hat, Inc.
+
+// 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.java.nio.FloatBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compareTo implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ float farray[] = new float[1];
+ farray[0] = Float.NaN;
+
+ FloatBuffer fb1 = FloatBuffer.wrap(farray);
+ FloatBuffer fb2 = FloatBuffer.wrap(farray);
+
+ h.check(fb1.compareTo(fb2), 0, "float buffer compare with NaN entry");
+ }
+}
+
diff --git a/gnu/testlet/java/nio/IntBuffer/CVS/Entries b/gnu/testlet/java/nio/IntBuffer/CVS/Entries
new file mode 100644
index 00000000..be5e41ee
--- /dev/null
+++ b/gnu/testlet/java/nio/IntBuffer/CVS/Entries
@@ -0,0 +1,3 @@
+/compact.java/1.1/Thu Dec 30 10:16:40 2004//
+/compareTo.java/1.1/Thu Apr 29 17:42:24 2004//
+D
diff --git a/gnu/testlet/java/nio/IntBuffer/CVS/Repository b/gnu/testlet/java/nio/IntBuffer/CVS/Repository
new file mode 100644
index 00000000..8a9bb3df
--- /dev/null
+++ b/gnu/testlet/java/nio/IntBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/IntBuffer
diff --git a/gnu/testlet/java/nio/IntBuffer/CVS/Root b/gnu/testlet/java/nio/IntBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/IntBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/IntBuffer/compact.java b/gnu/testlet/java/nio/IntBuffer/compact.java
new file mode 100644
index 00000000..2841b766
--- /dev/null
+++ b/gnu/testlet/java/nio/IntBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.IntBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IntBuffer buffer = IntBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asIntBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 50, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/IntBuffer/compareTo.java b/gnu/testlet/java/nio/IntBuffer/compareTo.java
new file mode 100644
index 00000000..508cacbf
--- /dev/null
+++ b/gnu/testlet/java/nio/IntBuffer/compareTo.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.IntBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.IntBuffer;
+
+public class compareTo
+ implements Testlet
+{
+ private TestHarness h;
+
+ public void test(TestHarness h)
+ {
+ this.h = h;
+
+ int[] a = { 1, 2, 3, 4, 5, };
+ int[] b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, };
+ int[] c = { 1, 2, 3, 5, 7, 9, };
+
+ // =
+ checkCompareTo(a, a, 0);
+ checkCompareTo(b, b, 0);
+ checkCompareTo(c, c, 0);
+
+ // <
+ checkCompareTo(a, b, -1);
+ checkCompareTo(a, c, -1);
+ checkCompareTo(b, c, -1);
+
+ // >
+ checkCompareTo(b, a, 1);
+ checkCompareTo(c, a, 1);
+ checkCompareTo(c, b, 1);
+ }
+
+ private void checkCompareTo(int[] buf1, int[] buf2, int expected)
+ {
+ IntBuffer b1 = IntBuffer.wrap(buf1);
+ IntBuffer b2 = IntBuffer.wrap(buf2);
+
+ int got = b1.compareTo(b2);
+ int real_got = got;
+
+ if (got > 1) got = 1;
+ if (got < -1) got = -1;
+
+ h.check(got == expected, "expected: " + expected + ", got: " + real_got);
+ }
+}
+
diff --git a/gnu/testlet/java/nio/LongBuffer/CVS/Entries b/gnu/testlet/java/nio/LongBuffer/CVS/Entries
new file mode 100644
index 00000000..8133ccc2
--- /dev/null
+++ b/gnu/testlet/java/nio/LongBuffer/CVS/Entries
@@ -0,0 +1,2 @@
+/compact.java/1.1/Thu Dec 30 10:16:40 2004//
+D
diff --git a/gnu/testlet/java/nio/LongBuffer/CVS/Repository b/gnu/testlet/java/nio/LongBuffer/CVS/Repository
new file mode 100644
index 00000000..43609272
--- /dev/null
+++ b/gnu/testlet/java/nio/LongBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/LongBuffer
diff --git a/gnu/testlet/java/nio/LongBuffer/CVS/Root b/gnu/testlet/java/nio/LongBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/LongBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/LongBuffer/compact.java b/gnu/testlet/java/nio/LongBuffer/compact.java
new file mode 100644
index 00000000..c044f18f
--- /dev/null
+++ b/gnu/testlet/java/nio/LongBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.LongBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ LongBuffer buffer = LongBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asLongBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 25, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/ShortBuffer/CVS/Entries b/gnu/testlet/java/nio/ShortBuffer/CVS/Entries
new file mode 100644
index 00000000..8133ccc2
--- /dev/null
+++ b/gnu/testlet/java/nio/ShortBuffer/CVS/Entries
@@ -0,0 +1,2 @@
+/compact.java/1.1/Thu Dec 30 10:16:40 2004//
+D
diff --git a/gnu/testlet/java/nio/ShortBuffer/CVS/Repository b/gnu/testlet/java/nio/ShortBuffer/CVS/Repository
new file mode 100644
index 00000000..b3edd4ad
--- /dev/null
+++ b/gnu/testlet/java/nio/ShortBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/ShortBuffer
diff --git a/gnu/testlet/java/nio/ShortBuffer/CVS/Root b/gnu/testlet/java/nio/ShortBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/ShortBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/ShortBuffer/compact.java b/gnu/testlet/java/nio/ShortBuffer/compact.java
new file mode 100644
index 00000000..ccd1ec15
--- /dev/null
+++ b/gnu/testlet/java/nio/ShortBuffer/compact.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.ShortBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+
+public class compact implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ShortBuffer buffer = ShortBuffer.allocate(10);
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 10, "limit after compact()");
+
+ ByteBuffer bb = ByteBuffer.allocate(200);
+ buffer = bb.asShortBuffer();
+ buffer.position(0);
+ buffer.limit(3);
+ buffer.compact();
+
+ h.check(buffer.position(), 3, "position after compact()");
+ h.check(buffer.limit(), 100, "limit after compact()");
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/CVS/Entries b/gnu/testlet/java/nio/channels/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/channels/CVS/Entries.Log b/gnu/testlet/java/nio/channels/CVS/Entries.Log
new file mode 100644
index 00000000..482a19e9
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/Channels////
+A D/DatagramSocketChannel////
+A D/FileChannel////
+A D/Pipe////
+A D/Selector////
+A D/ServerSocketChannel////
+A D/SocketChannel////
diff --git a/gnu/testlet/java/nio/channels/CVS/Repository b/gnu/testlet/java/nio/channels/CVS/Repository
new file mode 100644
index 00000000..5966d2a6
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels
diff --git a/gnu/testlet/java/nio/channels/CVS/Root b/gnu/testlet/java/nio/channels/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/Channels/CVS/Entries b/gnu/testlet/java/nio/channels/Channels/CVS/Entries
new file mode 100644
index 00000000..0dae8dd5
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Channels/CVS/Entries
@@ -0,0 +1,2 @@
+/ChannelsTest.java/1.1/Wed Jan 12 10:02:53 2005//
+D
diff --git a/gnu/testlet/java/nio/channels/Channels/CVS/Repository b/gnu/testlet/java/nio/channels/Channels/CVS/Repository
new file mode 100644
index 00000000..b775dfe3
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Channels/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/Channels
diff --git a/gnu/testlet/java/nio/channels/Channels/CVS/Root b/gnu/testlet/java/nio/channels/Channels/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Channels/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/Channels/ChannelsTest.java b/gnu/testlet/java/nio/channels/Channels/ChannelsTest.java
new file mode 100644
index 00000000..9ced665f
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Channels/ChannelsTest.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.java.nio.channels.Channels;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+
+public class ChannelsTest implements Testlet
+{
+ class ByteArrayChannel
+ implements ReadableByteChannel, WritableByteChannel
+ {
+ public ByteArrayChannel()
+ {
+ }
+
+ public boolean isOpen()
+ {
+ return true;
+ }
+
+ public void close() throws IOException
+ {
+ }
+
+ public int read(ByteBuffer dst) throws IOException
+ {
+ return 0;
+ }
+
+ public int write(ByteBuffer src) throws IOException
+ {
+ return 0;
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ String tmpfile = h.getTempDirectory() + File.separator + "mauve-channels.tst";
+
+ File f = new File(tmpfile);
+
+ try
+ {
+ RandomAccessFile raf = new RandomAccessFile(f, "rw");
+ FileChannel fch = raf.getChannel();
+
+ ByteArrayChannel bac = new ByteArrayChannel();
+
+ h.checkPoint("newInputStream");
+
+ InputStream in;
+
+ in = Channels.newInputStream(bac);
+ h.check(in != null);
+
+ in = Channels.newInputStream(fch);
+ h.check(in != null);
+
+ h.checkPoint("newOutputStream");
+
+ OutputStream out;
+
+ out = Channels.newOutputStream(bac);
+ h.check(out != null);
+
+ out = Channels.newOutputStream(fch);
+ h.check(out != null);
+ }
+ catch (FileNotFoundException e)
+ {
+ h.debug(e);
+ h.fail("cannot create temporary file");
+ }
+ finally
+ {
+ f.delete();
+ }
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Entries b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Repository b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Repository
new file mode 100644
index 00000000..1d51e4e7
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/DatagramSocketChannel
diff --git a/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Root b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/DatagramSocketChannel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/FileChannel/CVS/Entries b/gnu/testlet/java/nio/channels/FileChannel/CVS/Entries
new file mode 100644
index 00000000..b88597b8
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/CVS/Entries
@@ -0,0 +1,11 @@
+/copyIO.java/1.1/Sun Jan 30 22:32:05 2005//
+/lock.java/1.2/Mon Aug 1 09:23:25 2005//
+/manyopen.java/1.4/Fri Jul 16 16:06:43 2004//
+/map.java/1.2/Tue Oct 4 15:19:51 2011//
+/multibufferIO.java/1.1/Sat Apr 8 10:32:40 2006//
+/multidirectbufferIO.java/1.2/Fri Aug 31 14:33:47 2012//
+/offsetSingleBuffer.java/1.1/Sun Apr 9 15:08:35 2006//
+/offsetSingleDirectBuffer.java/1.1/Sun Apr 9 15:08:35 2006//
+/singlebufferIO.java/1.2/Tue Oct 4 15:19:51 2011//
+/truncate.java/1.1/Sat May 1 10:42:03 2004//
+D
diff --git a/gnu/testlet/java/nio/channels/FileChannel/CVS/Repository b/gnu/testlet/java/nio/channels/FileChannel/CVS/Repository
new file mode 100644
index 00000000..f8607a87
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/FileChannel
diff --git a/gnu/testlet/java/nio/channels/FileChannel/CVS/Root b/gnu/testlet/java/nio/channels/FileChannel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/FileChannel/copyIO.java b/gnu/testlet/java/nio/channels/FileChannel/copyIO.java
new file mode 100644
index 00000000..03e9358d
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/copyIO.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Ito Kazumitsu (kaz@maczuka.gcd.org)
+
+// 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.java.nio.channels.FileChannel;
+
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Naive test for reading from and writing to FileChannels.
+ */
+public class copyIO implements Testlet
+{
+ private static final byte[] source = "abcdefghijklmnopqrstuvwxyz".getBytes();
+ private static final int BUFSIZE = 10;
+ public void test (TestHarness harness)
+ {
+ File tmpf1 = null;
+ File tmpf2 = null;
+ try
+ {
+ byte[] source = "abcdefghijklmnopqrstuvwxyz".getBytes();
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-copyIO.";
+ tmpf1 = new File(tmpfile + "TEST1");
+ tmpf2 = new File(tmpfile + "TEST2");
+ FileOutputStream fos = new FileOutputStream(tmpf1);
+ fos.write(source);
+ fos.close();
+
+ FileInputStream tmpin = new FileInputStream(tmpf1);
+ FileOutputStream tmpout = new FileOutputStream(tmpf2);
+ FileChannel in = tmpin.getChannel();
+ FileChannel out = tmpout.getChannel();
+
+ copyIO(BUFSIZE, in, out);
+
+ tmpin.close();
+ tmpout.close();
+
+ FileInputStream fis = new FileInputStream(tmpf2);
+ byte[] result = new byte[source.length + 1];
+ int l = fis.read(result, 0, result.length);
+ if (l == source.length)
+ {
+ harness.check(new String(source).equals(new String(result,0, l)));
+ }
+ else
+ {
+ if (l >= 0)
+ {
+ harness.fail("Unexpected result: source=" + new String(source)
+ + ", result=" + new String(result,0, l));
+ }
+ else
+ {
+ harness.fail("Unexpected EOF");
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ harness.debug(e);
+ }
+ finally
+ {
+ if (tmpf1 != null) tmpf1.delete();
+ if (tmpf2 != null) tmpf2.delete();
+ }
+ }
+
+ private static void copyIO(int bufsize, FileChannel in, FileChannel out)
+ throws IOException
+ {
+ ByteBuffer buffer = ByteBuffer.allocate(bufsize);
+ boolean eof = false;
+ while (!eof)
+ {
+ buffer.clear();
+ int pos = buffer.position();
+ int limit = buffer.limit();
+ // Check whether the position is moved forward
+ for (int i = pos + 1; i <= limit; i++)
+ {
+ buffer.limit(i);
+ int l = in.read(buffer);
+ if (l < 0)
+ {
+ eof = true;
+ break;
+ }
+ }
+ buffer.flip();
+ pos = buffer.position();
+ limit = buffer.limit();
+ // Check whether the position is moved forward
+ for (int i = pos + 1; i <= limit; i++)
+ {
+ buffer.limit(i);
+ out.write(buffer);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/lock.java b/gnu/testlet/java/nio/channels/FileChannel/lock.java
new file mode 100644
index 00000000..332ea2f6
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/lock.java
@@ -0,0 +1,540 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Mark J. Wielaard <mark@klomp.org>
+
+// 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.java.nio.channels.FileChannel;
+
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Tests FileChannel lock(), tryLock() and FileLock methods. We test
+ * shared locking (which is optional for read only channels, so will
+ * fail when not supported).
+ */
+public class lock implements Testlet, Runnable
+{
+
+ DataInputStream dis;
+ DataOutputStream dos;
+ BufferedReader br;
+
+ TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ String filename = harness.getTempDirectory()
+ + File.separator + "mauvelock";
+ File file = new File(filename);
+
+ FileOutputStream fos = null;
+ FileInputStream fis = null;
+ RandomAccessFile raf = null;
+ FileChannel channel;
+
+ try
+ {
+ // Setup. Remove and recreate test file
+ // Fill the file with some stuff 5Mb in total
+ // Start another runtime the check that locks actually work.
+ file.delete();
+ file.createNewFile();
+ fos = new FileOutputStream(file);
+ byte[] bs = new byte[256];
+ for (int i = 0; i < 256; i++)
+ bs[i] = (byte) i;
+ for (int i = 0; i < 4 * 5; i++)
+ fos.write(bs);
+ fos.close();
+ fos = null;
+ }
+ catch (IOException ioe)
+ {
+ // If we cannot even create the file just die
+ harness.check(false, ioe.toString());
+ harness.debug(ioe);
+ return;
+ }
+
+ Process p = null;
+ try
+ {
+ String execvm = System.getProperty("mauve.vmexec");
+ if (execvm == null || execvm.equals(""))
+ harness.check(false, "mauve.vmexec system property NOT SET!");
+ else
+ {
+ String cmd = execvm + " " + this.getClass().getName();
+ p = Runtime.getRuntime().exec(cmd);
+ dis = new DataInputStream(p.getInputStream());
+ dos = new DataOutputStream(p.getOutputStream());
+ br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+ // Drain error stream
+ Thread t = new Thread(this);
+ t.setDaemon(true);
+ t.start();
+
+ dos.writeUTF(filename);
+ dos.flush();
+
+ // Read OK message to make sure other process is ready.
+ harness.debug(dis.readUTF());
+ }
+ }
+ catch (IOException ioe)
+ {
+ // Not much will work now...
+ p = null;
+ harness.check(false, ioe.toString());
+ harness.debug(ioe);
+ }
+
+ try
+ {
+ fos = new FileOutputStream(file);
+ channel = fos.getChannel();
+ testChannelLock("FileOutputStream", channel, false, true);
+ fos.close();
+ fos = null;
+
+ fis = new FileInputStream(file);
+ channel = fis.getChannel();
+ testChannelLock("FileInputStream", channel, true, false);
+ fis.close();
+ fis = null;
+
+ raf = new RandomAccessFile(file, "r");
+ channel = raf.getChannel();
+ testChannelLock("RandomAccessFile(r)", channel, true, false);
+ raf.close();
+ raf = null;
+
+ raf = new RandomAccessFile(file, "rw");
+ channel = raf.getChannel();
+ testChannelLock("RandomAccessFile(rw)", channel, true, true);
+ raf.close();
+ raf = null;
+ }
+ catch (IOException ioe)
+ {
+ // Deep trouble...
+ harness.debug(ioe);
+ harness.check(false, ioe.toString());
+ }
+ finally
+ {
+ // Cleanup, close everything and remove test file.
+ if (fos != null)
+ {
+ try
+ {
+ fos.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+ }
+ if (fis != null)
+ {
+ try
+ {
+ fis.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+ }
+ if (raf != null)
+ {
+ try
+ {
+ raf.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+ }
+
+ try
+ {
+ if (p != null)
+ {
+ dos.writeUTF("quit");
+ dos.flush();
+ p.destroy();
+ p.waitFor();
+ }
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+ catch (InterruptedException ie)
+ {
+ harness.debug(ie);
+ }
+
+ harness.check(file.delete(), "cleanup " + file);
+ }
+ }
+
+ private void testChannelLock(String what,
+ FileChannel channel,
+ boolean read, boolean write)
+ {
+ FileLock lock = null;
+ try
+ {
+ harness.checkPoint(what + " lock()");
+ boolean illegal;
+ try
+ {
+ lock = channel.lock();
+ illegal = false;
+ }
+ catch (NonWritableChannelException nrca)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !write);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 0, Long.MAX_VALUE, false);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+
+ harness.checkPoint(what + " tryLock()");
+ try
+ {
+ lock = channel.tryLock();
+ illegal = false;
+ }
+ catch (NonWritableChannelException nwce)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !write);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 0, Long.MAX_VALUE, false);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+
+ harness.checkPoint(what + " lock(129, 2050, false)");
+ try
+ {
+ lock = channel.lock(129, 2050, false);
+ illegal = false;
+ }
+ catch (NonWritableChannelException nwce)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !write);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 129, 2050, false);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+
+ harness.checkPoint(what + " tryLock(129, 2050, false)");
+ try
+ {
+ lock = channel.tryLock(129, 2050, false);
+ illegal = false;
+ }
+ catch (NonWritableChannelException nwce)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !write);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 129, 2050, false);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+
+ harness.checkPoint(what + " lock(129, 2050, true)");
+ try
+ {
+ lock = channel.lock(129, 2050, true);
+ illegal = false;
+ }
+ catch (NonReadableChannelException nrce)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !read);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 129, 2050, true);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+
+ harness.checkPoint(what + " tryLock(129, 2050, true)");
+ try
+ {
+ lock = channel.tryLock(129, 2050, true);
+ illegal = false;
+ }
+ catch (NonReadableChannelException nrce)
+ {
+ illegal = true;
+ }
+ harness.check(illegal, !read);
+ harness.check(illegal || lock != null);
+ if (lock != null)
+ {
+ try
+ {
+ testLock(what, channel, lock, 129, 2050, true);
+ }
+ finally
+ {
+ lock.release();
+ harness.check(lock.isValid(), false);
+ lock = null;
+ }
+ }
+ }
+ catch(IOException ioe)
+ {
+ harness.debug(ioe);
+ harness.check(false);
+ }
+ }
+
+ private void testLock(String what,
+ FileChannel channel,
+ FileLock lock,
+ long position,
+ long size,
+ boolean shared)
+ throws IOException
+ {
+ harness.checkPoint(what + ": " + lock);
+ harness.check(lock.channel(), channel);
+ harness.check(lock.position(), position);
+ harness.check(lock.size(), size);
+ harness.check(lock.isShared(), shared);
+ harness.check(lock.isValid(), true);
+ harness.check(lock.overlaps(0, Long.MAX_VALUE), true);
+ harness.check(lock.overlaps(position, size), true);
+ if (position < Long.MAX_VALUE)
+ harness.check(lock.overlaps(0, position + 1), true);
+ if (position > 0)
+ {
+ harness.check(lock.overlaps(0, 1), false);
+ harness.check(lock.overlaps(0, position - 1), false);
+ }
+ if (size < Long.MAX_VALUE && position > 0)
+ harness.check(lock.overlaps(position - 1, size + 1), true);
+ if (size > 1)
+ harness.check(lock.overlaps(position, size - 1), true);
+
+ // Let the other process try to lock some things.
+ if (dos != null)
+ {
+ dos.writeUTF("lock");
+ harness.debug("Sending: "
+ + position + ", " + size + " (" + shared + ")");
+ harness.debug("lock: " + lock);
+ dos.writeLong(position);
+ dos.writeLong(size);
+ dos.writeBoolean(shared);
+ dos.flush();
+
+ harness.debug("EXTERNAL: " + dis.readUTF());
+ harness.check(dis.readBoolean(), what + " external " + lock);
+ }
+ }
+
+ public void run()
+ {
+ // Drain error stream from external process.
+ // Null input (EOFException) will stop loop.
+ try
+ {
+ String line = br.readLine();
+ while (line != null)
+ {
+ harness.debug(" ex: " + line);
+ line = br.readLine();
+ }
+ }
+ catch(IOException ioe)
+ {
+ }
+ }
+
+ public static void main(String[] args) throws Exception
+ {
+ DataInputStream dis = new DataInputStream(System.in);
+ DataOutputStream dos = new DataOutputStream(System.out);
+
+ String file = dis.readUTF();
+ RandomAccessFile raf = new RandomAccessFile(file, "rw");
+ FileChannel channel = raf.getChannel();
+
+ // Let the other process know we are ready.
+ dos.writeUTF("Opened file: " + file);
+ dos.flush();
+
+ try
+ {
+ String command = dis.readUTF();
+ while (command != null && !command.equals("quit"))
+ {
+ long position = dis.readLong();
+ long size = dis.readLong();
+ boolean shared = dis.readBoolean();
+
+ // This will be printed by the main process with harness.debug()
+ System.err.println("Recv: "
+ + position + ", " + size + " (" + shared + ")");
+
+ String what = "lock[" + position + "," + size + "," + shared + "]";
+ String message = "X";
+ boolean result = true;
+
+ // Try to get the same (and exclusive) lock
+ // This should always fail.
+ FileLock lock = null;
+ try
+ {
+ lock = channel.tryLock(position, size, false);
+ if (lock != null)
+ {
+ result = false;
+ message = "Got lock: " + lock;
+ }
+ }
+ finally
+ {
+ // Clean up anyway
+ try
+ {
+ lock.release();
+ lock = null;
+ }
+ catch(Throwable t)
+ {
+ }
+ }
+
+ // If we couldn't get an exclusive lock and the lock is shared,
+ // we should be able to get a shared lock
+ if (result && shared)
+ {
+ try
+ {
+ lock = channel.tryLock(position, size, true);
+ if (lock == null)
+ {
+ result = false;
+ message = "Couldn't get shared lock";
+ }
+ }
+ finally
+ {
+ // Clean up
+ try
+ {
+ lock.release();
+ lock = null;
+ }
+ catch(Throwable t)
+ {
+ }
+ }
+ }
+
+ if (result)
+ dos.writeUTF("OK: " + what);
+ else
+ dos.writeUTF("Failed: " + what + ": " + message);
+ dos.writeBoolean(result);
+ dos.flush();
+
+ command = dis.readUTF();
+ }
+ }
+ catch (Throwable t)
+ {
+ // Urgh
+ dos.writeUTF("External error: " + t.toString());
+ t.printStackTrace();
+ System.err.flush();
+ }
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/manyopen.java b/gnu/testlet/java/nio/channels/FileChannel/manyopen.java
new file mode 100644
index 00000000..7c85d1f2
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/manyopen.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.nio.channels.FileChannel;
+
+import java.io.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Naive test for opening (but never closing) a large number of
+ * FileChannels.
+ */
+public class manyopen implements Testlet
+{
+ private final int MANY = 1024;
+ public void test (TestHarness harness)
+ {
+ Runtime runtime = Runtime.getRuntime();
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-many.";
+ int i = 0;
+ try
+ {
+ for (i = 0; i < MANY; i++)
+ {
+ File f = new File(tmpfile + i + ".in");
+ f.createNewFile();
+ FileInputStream fis = new FileInputStream(f);
+
+ f = new File(tmpfile + i + ".out");
+ FileOutputStream fos = new FileOutputStream(f);
+
+ f = new File(tmpfile + i + ".raf");
+ RandomAccessFile raf = new RandomAccessFile(f, "rw");
+ }
+ harness.check(true);
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected exception at nr " + i + ": " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ // Cleanup
+ for (i = 0; i < MANY; i++)
+ {
+ File f = new File(tmpfile + i + ".in");
+ f.delete();
+
+ f = new File(tmpfile + i + ".out");
+ f.delete();
+
+ f = new File(tmpfile + i + ".raf");
+ f.delete();
+ }
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/nio/channels/FileChannel/map.java b/gnu/testlet/java/nio/channels/FileChannel/map.java
new file mode 100644
index 00000000..edff33ff
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/map.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Jeroen Frijters
+
+// 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.java.nio.channels.FileChannel;
+
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class map implements Testlet
+{
+ private static final byte[] msg = "Hello, World!".getBytes();
+
+ public void test(TestHarness harness)
+ {
+ String filename = null;
+ try
+ {
+ filename = harness.getTempDirectory() + File.separator + "mauvemap.txt";
+ FileOutputStream fos = new FileOutputStream(filename);
+ FileChannel chan = fos.getChannel();
+ try
+ {
+ chan.map(FileChannel.MapMode.READ_WRITE, 0, msg.length);
+ harness.check(false);
+ }
+ catch(NonReadableChannelException x)
+ {
+ harness.check(true);
+ }
+ fos.close();
+
+ RandomAccessFile ras = new RandomAccessFile(filename, "rw");
+ chan = ras.getChannel();
+ MappedByteBuffer mbb = chan.map(FileChannel.MapMode.READ_WRITE, 0, msg.length);
+ mbb.put(msg);
+ mbb.force();
+
+ verifyContent(harness, filename);
+
+ MappedByteBuffer mbb2 = chan.map(FileChannel.MapMode.PRIVATE, 0, msg.length);
+ mbb2.put(new byte[msg.length]);
+ boolean ok = true;
+ for (int i = 0; i < msg.length; i++)
+ ok &= mbb2.get(i) == 0;
+ harness.check(ok);
+ mbb.force();
+ ras.close();
+
+ verifyContent(harness, filename);
+ }
+ catch(Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ finally
+ {
+ // delete the work file and check if deletion were successfull
+ if (filename != null)
+ {
+ harness.check(new File(filename).delete());
+ }
+ }
+ }
+
+ private void verifyContent(TestHarness harness, String filename) throws IOException
+ {
+ FileInputStream fis = new FileInputStream(filename);
+ FileChannel chan = fis.getChannel();
+ MappedByteBuffer mbb = chan.map(FileChannel.MapMode.READ_ONLY, 0, msg.length);
+ byte[] buf = new byte[msg.length];
+ mbb.get(buf);
+ boolean ok = true;
+ for (int i = 0; i < msg.length; i++)
+ ok &= msg[i] == buf[i];
+ harness.check(ok);
+ fis.close();
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/multibufferIO.java b/gnu/testlet/java/nio/channels/FileChannel/multibufferIO.java
new file mode 100644
index 00000000..38d5dec4
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/multibufferIO.java
@@ -0,0 +1,46 @@
+/* mulitbufferIO.java -- Scatter/Gather IO on files
+ Copyright (C) 2006 Michael Barker
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK14
+
+
+package gnu.testlet.java.nio.channels.FileChannel;
+
+import gnu.testlet.Testlet;
+
+import java.nio.ByteBuffer;
+
+/**
+ * @author mike
+ */
+public class multibufferIO extends multidirectbufferIO
+ implements Testlet
+{
+
+ private void initBuffer(ByteBuffer[] bs, byte[] data)
+ {
+ for (int i = 0; i < bs.length; i++)
+ {
+ bs[i] = ByteBuffer.wrap(data);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java b/gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java
new file mode 100644
index 00000000..d66604b5
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/multidirectbufferIO.java
@@ -0,0 +1,136 @@
+/* mulitdirectbufferIO.java -- Scatter/Gather IO using direct buffers
+ Copyright (C) 2006 Michael Barker
+ Updated for OpenJDK7 Pavel Tisnovsky
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK14
+
+
+package gnu.testlet.java.nio.channels.FileChannel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.Arrays;
+
+/**
+ * @author mike
+ */
+public class multidirectbufferIO
+ implements Testlet
+{
+
+ private void initBuffer(ByteBuffer[] bs, byte[] data)
+ {
+ for (int i = 0; i < bs.length; i++)
+ {
+ bs[i] = ByteBuffer.allocateDirect(data.length);
+ bs[i].put(data);
+ bs[i].flip();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ final int BUF_LEN = 17;
+ final int MAX_BUFFERS = 16;
+ byte[] data = "qwertyuiopasdfghjklzxcvbnm".getBytes();
+ ByteBuffer[] out = new ByteBuffer[BUF_LEN];
+ ByteBuffer[] in = new ByteBuffer[BUF_LEN];
+ initBuffer(out, data);
+ initBuffer(in, new byte[data.length]);
+ String tmpfile = harness.getTempDirectory() + File.separator
+ + "mauve-multibuffer.tmp";
+ try
+ {
+ File f = new File(tmpfile);
+ f.createNewFile();
+ FileChannel fcOut = new FileOutputStream(f).getChannel();
+ long numWritten = fcOut.write(out);
+ fcOut.close();
+ /* The SUN JDK limits the number of buffers to 16 */
+ /* This has been fixed in OpenJDK 7u8 */
+ harness.check(numWritten, conformToJDK17_u8() ? (BUF_LEN * data.length) : (MAX_BUFFERS * data.length));
+ for (int i = 0; i < MAX_BUFFERS; i++)
+ {
+ harness.check(out[i].position() == out[i].limit(), "Position - Limit mismatch");
+ }
+
+ FileChannel fcIn = new FileInputStream(f).getChannel();
+ long numRead = fcIn.read(in);
+ /* The SUN JDK limits the number of buffers to 16 */
+ /* This has been fixed in OpenJDK 7u8 */
+ harness.check(numRead, conformToJDK17_u8() ? (BUF_LEN * data.length) : (MAX_BUFFERS * data.length));
+
+ for (int i = 0; i < MAX_BUFFERS; i++)
+ {
+ byte[] dIn = new byte[data.length];
+ byte[] dOut = new byte[data.length];
+ in[i].flip();
+ out[i].flip();
+ in[i].get(dIn);
+ out[i].get(dOut);
+ harness.check(Arrays.equals(dIn, dOut));
+ }
+
+ f.delete();
+ }
+ catch (IOException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7 update 8 or higher.
+ * @author: Pavel Tisnovsky
+ */
+ private static boolean conformToJDK17_u8()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID) || "Oracle Corporation".equals(vendorID) )
+ {
+ int version = Integer.parseInt(javaVersion[1]);
+ if (version > 7) {
+ return true;
+ }
+ if (version == 7) {
+ String[] splitstr = javaVersion[2].split("_");
+ int update = Integer.parseInt(splitstr[1]);
+ return update >= 8;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/offsetSingleBuffer.java b/gnu/testlet/java/nio/channels/FileChannel/offsetSingleBuffer.java
new file mode 100644
index 00000000..0c9067eb
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/offsetSingleBuffer.java
@@ -0,0 +1,110 @@
+/* offsetSingleBuffer.java -- Test writing offset from a single buffer
+ Copyright (C) 2006 Michael Barker
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK14
+
+package gnu.testlet.java.nio.channels.FileChannel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.Arrays;
+
+/**
+ * @author mike
+ *
+ */
+public class offsetSingleBuffer implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ byte[] data = "qwertyuiopasdfghjklzxcvbnm".getBytes("UTF-8");
+ ByteBuffer out = ByteBuffer.allocate(50);
+ out.put(data);
+ out.flip();
+ out.position(5);
+ ByteBuffer in = ByteBuffer.allocate(50);
+
+ String tmpfile = harness.getTempDirectory() + File.separator
+ + "mauve-offset-single-buffer.tmp";
+ File f = new File(tmpfile);
+
+ FileOutputStream fOut = new FileOutputStream(f);
+ FileChannel fc = fOut.getChannel();
+ int numBytes = fc.write(out);
+ harness.check(numBytes, data.length - 5, "Number of bytes written");
+ fc.close();
+
+ harness.check(f.length(), data.length - 5, "Resulting File size");
+
+ in.position(5);
+ FileInputStream fIn = new FileInputStream(f);
+ FileChannel fcIn = fIn.getChannel();
+ int numRead = fcIn.read(in);
+ harness.check(numRead, data.length - 5, "Number of bytes read");
+ harness.check(in.position(), data.length, "Buffer position");
+ in.flip();
+ byte[] oldData = new byte[data.length - 5];
+ System.arraycopy(data, 5, oldData, 0, 21);
+ byte[] newData = new byte[data.length - 5];
+ in.position(5);
+ in.get(newData);
+ harness.check(Arrays.equals(oldData, newData), "File content");
+
+ fcIn.close();
+
+ f.delete();
+ }
+ catch (UnsupportedEncodingException e1)
+ {
+ harness.fail("Unsupported Encoding");
+ }
+ catch (SecurityException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ catch (FileNotFoundException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ catch (IOException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+
+
+ }
+
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/offsetSingleDirectBuffer.java b/gnu/testlet/java/nio/channels/FileChannel/offsetSingleDirectBuffer.java
new file mode 100644
index 00000000..f4c1b4bc
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/offsetSingleDirectBuffer.java
@@ -0,0 +1,110 @@
+/* offsetSingleBuffer.java -- Test writing offset from a single direct buffer
+ Copyright (C) 2006 Michael Barker
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK14
+
+package gnu.testlet.java.nio.channels.FileChannel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.Arrays;
+
+/**
+ * @author mike
+ *
+ */
+public class offsetSingleDirectBuffer implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ byte[] data = "qwertyuiopasdfghjklzxcvbnm".getBytes("UTF-8");
+ ByteBuffer out = ByteBuffer.allocateDirect(50);
+ out.put(data);
+ out.flip();
+ out.position(5);
+ ByteBuffer in = ByteBuffer.allocateDirect(50);
+
+ String tmpfile = harness.getTempDirectory() + File.separator
+ + "mauve-offset-single-direct-buffer.tmp";
+ File f = new File(tmpfile);
+
+ FileOutputStream fOut = new FileOutputStream(f);
+ FileChannel fc = fOut.getChannel();
+ int numBytes = fc.write(out);
+ harness.check(numBytes, data.length - 5, "Number of bytes written");
+ fc.close();
+
+ harness.check(f.length(), data.length - 5, "Resulting File size");
+
+ in.position(5);
+ FileInputStream fIn = new FileInputStream(f);
+ FileChannel fcIn = fIn.getChannel();
+ int numRead = fcIn.read(in);
+ harness.check(numRead, data.length - 5, "Number of bytes read");
+ harness.check(in.position(), data.length, "Buffer position");
+ byte[] oldData = new byte[data.length - 5];
+ System.arraycopy(data, 5, oldData, 0, 21);
+ byte[] newData = new byte[data.length - 5];
+ in.flip();
+ in.position(5);
+ in.get(newData);
+ harness.check(Arrays.equals(newData, oldData), "File content");
+
+ fcIn.close();
+
+ f.delete();
+ }
+ catch (UnsupportedEncodingException e1)
+ {
+ harness.fail("Unsupported Encoding");
+ }
+ catch (SecurityException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ catch (FileNotFoundException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ catch (IOException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+
+
+ }
+
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java b/gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java
new file mode 100644
index 00000000..84f73674
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/singlebufferIO.java
@@ -0,0 +1,86 @@
+/* singlebufferIO.java -- FileChannel test using a single buffer
+ Copyright (C) 2006 Michael Barker
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK14
+
+
+package gnu.testlet.java.nio.channels.FileChannel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.Arrays;
+
+/**
+ * @author mike
+ */
+public class singlebufferIO
+ implements Testlet
+{
+ /*
+ * (non-Javadoc)
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ byte[] data = "qwertyuiopasdfghjklzxcvbnm".getBytes();
+ ByteBuffer out = ByteBuffer.wrap(data);
+ ByteBuffer in = ByteBuffer.wrap(new byte[data.length]);
+ String tmpfile = harness.getTempDirectory() + File.separator
+ + "mauve-singlebuffer.tmp";
+ try
+ {
+ File f = new File(tmpfile);
+ f.createNewFile();
+ FileChannel fcOut = new FileOutputStream(f).getChannel();
+ fcOut.write(out);
+ fcOut.close();
+ harness.check(out.position() == out.limit(), "Position - Limit mismatch");
+
+ FileChannel fcIn = new FileInputStream(f).getChannel();
+ fcIn.read(in);
+
+ System.out.println("Position: " + in.position() + ", Limit: " + in.limit());
+ System.out.println("Position: " + out.position() + ", Limit: " + out.limit());
+ harness.check(Arrays.equals(out.array(), in.array()));
+ }
+ catch (IOException e)
+ {
+ harness.fail("Unexpected exception: " + e);
+ }
+ finally
+ {
+ // delete the work file and check if deletion were successfull
+ if (tmpfile != null)
+ {
+ new File(tmpfile).delete();
+ }
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/nio/channels/FileChannel/truncate.java b/gnu/testlet/java/nio/channels/FileChannel/truncate.java
new file mode 100644
index 00000000..b7fa1828
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/FileChannel/truncate.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.nio.channels.FileChannel;
+
+import java.io.*;
+import java.nio.*;
+import java.nio.channels.*;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class truncate implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String tmpfile = harness.getTempDirectory()
+ + File.separator + "mauve-trunc.tst";
+ File f = new File(tmpfile);
+ f.delete();
+ try
+ {
+ RandomAccessFile raf = new RandomAccessFile(f, "rw");
+ FileChannel fc = raf.getChannel();
+ harness.check(fc.size(), 0);
+ harness.check(fc.position(), 0);
+
+ ByteBuffer bb;
+ bb = ByteBuffer.wrap(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
+ harness.check(fc.write(bb), 8);
+ harness.check(fc.size(), 8);
+ harness.check(fc.position(), 8);
+
+ // Truncate
+ fc.truncate(3);
+ harness.check(fc.size(), 3);
+ harness.check(fc.position(), 3);
+
+ // End of file
+ harness.check(fc.read(ByteBuffer.allocate(1)), -1);
+ harness.check(3, fc.size());
+
+ // Expand with write
+ bb = ByteBuffer.allocate(1);
+ bb.put((byte) 10);
+ bb.flip();
+ harness.check(fc.write(bb), 1);
+ harness.check(fc.size(), 4);
+ harness.check(fc.position(), 4);
+
+ // Expand with truncate (shouldn't work)
+ fc.truncate(10);
+ harness.check(fc.size(), 4);
+ harness.check(fc.position(), 4);
+
+ // Set position and truncate just after (end of file)
+ fc.position(3);
+ fc.truncate(4);
+ harness.check(fc.size(), 4);
+ harness.check(fc.position(), 3);
+
+ // Truncate before file position and file end
+ fc.truncate(1);
+ harness.check(fc.size(), 1);
+ harness.check(fc.position(), 1);
+ }
+ catch(IOException ioe)
+ {
+ harness.fail("Unexpected: " + ioe);
+ harness.debug(ioe);
+ }
+ finally
+ {
+ // Cleanup
+ f.delete();
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/nio/channels/Pipe/CVS/Entries b/gnu/testlet/java/nio/channels/Pipe/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Pipe/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/channels/Pipe/CVS/Repository b/gnu/testlet/java/nio/channels/Pipe/CVS/Repository
new file mode 100644
index 00000000..859100d8
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Pipe/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/Pipe
diff --git a/gnu/testlet/java/nio/channels/Pipe/CVS/Root b/gnu/testlet/java/nio/channels/Pipe/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Pipe/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/Selector/CVS/Entries b/gnu/testlet/java/nio/channels/Selector/CVS/Entries
new file mode 100644
index 00000000..6ac893b5
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Selector/CVS/Entries
@@ -0,0 +1,2 @@
+/testEmptySelect.java/1.1/Thu Sep 21 23:29:35 2006//
+D
diff --git a/gnu/testlet/java/nio/channels/Selector/CVS/Repository b/gnu/testlet/java/nio/channels/Selector/CVS/Repository
new file mode 100644
index 00000000..b9771c1f
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Selector/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/Selector
diff --git a/gnu/testlet/java/nio/channels/Selector/CVS/Root b/gnu/testlet/java/nio/channels/Selector/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Selector/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/Selector/testEmptySelect.java b/gnu/testlet/java/nio/channels/Selector/testEmptySelect.java
new file mode 100644
index 00000000..17672c65
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/Selector/testEmptySelect.java
@@ -0,0 +1,72 @@
+/* testEmptySelect.java -- test if selecting no channels succeeds.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.nio.channels.Selector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.nio.channels.Selector;
+import java.nio.channels.spi.SelectorProvider;
+
+/**
+ * @author csm
+ *
+ */
+public class testEmptySelect
+ implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("openSelector");
+ Selector sel = null;
+ try
+ {
+ sel = SelectorProvider.provider().openSelector();
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("openSelector");
+ harness.debug(ioe);
+ return;
+ }
+
+ harness.checkPoint("select");
+ try
+ {
+ int ret = sel.select(100);
+ harness.check(ret, 0);
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("select");
+ harness.debug(ioe);
+ }
+ }
+}
diff --git a/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Entries b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Repository b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Repository
new file mode 100644
index 00000000..8da43290
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/ServerSocketChannel
diff --git a/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Root b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/ServerSocketChannel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/SocketChannel/CVS/Entries b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Entries
new file mode 100644
index 00000000..f38f8561
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Entries
@@ -0,0 +1,2 @@
+/select.java/1.3/Sat Apr 8 10:32:40 2006//
+D
diff --git a/gnu/testlet/java/nio/channels/SocketChannel/CVS/Repository b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Repository
new file mode 100644
index 00000000..81cb60a0
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/channels/SocketChannel
diff --git a/gnu/testlet/java/nio/channels/SocketChannel/CVS/Root b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/SocketChannel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/channels/SocketChannel/select.java b/gnu/testlet/java/nio/channels/SocketChannel/select.java
new file mode 100644
index 00000000..5caa8ccd
--- /dev/null
+++ b/gnu/testlet/java/nio/channels/SocketChannel/select.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Written by Guilhem Lavaux (guilhem@kaffe.org)
+
+// 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.java.nio.channels.SocketChannel;
+
+import java.net.*;
+import java.util.Set;
+import java.nio.*;
+import java.nio.channels.*;
+import java.io.OutputStream;
+import java.io.InputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class select implements Testlet
+{
+ static final int testPort = 3487;
+
+ public void test (TestHarness harness)
+ {
+ final Thread parentThread = Thread.currentThread();
+
+ Thread t = new Thread() {
+ public void run()
+ {
+ try
+ {
+ Thread.sleep(10000);
+ parentThread.interrupt();
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+ };
+
+ t.start();
+
+ try
+ {
+ ServerSocketChannel ssc = ServerSocketChannel.open();
+ Selector sel = Selector.open();
+
+ ssc.socket().bind(new InetSocketAddress(testPort));
+
+ SelectionKey ssc_key;
+
+ ssc.configureBlocking(true);
+ try
+ {
+ ssc_key = ssc.register(sel, SelectionKey.OP_ACCEPT, null);
+ harness.fail("Channel must be in blocking mode for being able to register");
+ }
+ catch (IllegalBlockingModeException e)
+ {
+ harness.check(true);
+ }
+ ssc.configureBlocking(false);
+ ssc_key = ssc.register(sel, SelectionKey.OP_ACCEPT, null);
+
+ Thread client_thread = new Thread() {
+ public void run()
+ {
+ try
+ {
+ Socket s = new Socket(InetAddress.getLocalHost(), testPort);
+ OutputStream o = s.getOutputStream();
+ InputStream i = s.getInputStream();
+ int val;
+
+ o.write(12345678);
+ val = i.read();
+ }
+ catch (Exception _)
+ {
+ }
+ }
+ };
+
+ client_thread.start();
+
+ if (sel.select(1000) == 0)
+ {
+ harness.fail("Select on accept has failed");
+ return;
+ }
+ else
+ harness.check(true);
+
+ Set keys = sel.selectedKeys();
+
+ if (!keys.contains(ssc_key))
+ {
+ harness.fail("The set does not contain the expected key");
+ return;
+ }
+ else
+ harness.check(true);
+
+ SocketChannel sc = ssc.accept();
+
+ sc.configureBlocking(false);
+
+ SelectionKey sk = sc.register(sel, SelectionKey.OP_READ, null);
+ ByteBuffer bb = ByteBuffer.allocate(1);
+
+ if (sel.select(1000) == 0)
+ {
+ harness.fail("Select on read has failed");
+ return;
+ }
+ else
+ harness.check(true);
+
+ sc.read(bb);
+
+ if (sel.select(100) != 0)
+ {
+ harness.fail("Select on timed out read failed");
+ return;
+ }
+ else
+ harness.check(true);
+
+ sk.interestOps(SelectionKey.OP_WRITE);
+ if (sel.select(1000) == 0)
+ {
+ harness.fail("Select on write has failed");
+ return;
+ }
+ else
+ harness.check(true);
+
+ bb.flip();
+ sc.write(bb);
+ sc.close();
+ ssc.close();
+ }
+ catch (Exception e)
+ {
+ harness.fail("Unexpected exception " + e);
+ harness.debug(e);
+ }
+
+ t.interrupt();
+ }
+}
+
diff --git a/gnu/testlet/java/nio/charset/CVS/Entries b/gnu/testlet/java/nio/charset/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/charset/CVS/Entries.Log b/gnu/testlet/java/nio/charset/CVS/Entries.Log
new file mode 100644
index 00000000..d2ca3dd3
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Charset////
+A D/CharsetEncoder////
diff --git a/gnu/testlet/java/nio/charset/CVS/Repository b/gnu/testlet/java/nio/charset/CVS/Repository
new file mode 100644
index 00000000..752eebb6
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/charset
diff --git a/gnu/testlet/java/nio/charset/CVS/Root b/gnu/testlet/java/nio/charset/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/charset/Charset/CVS/Entries b/gnu/testlet/java/nio/charset/Charset/CVS/Entries
new file mode 100644
index 00000000..62c39425
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/CVS/Entries
@@ -0,0 +1,7 @@
+/UTF8Charset.java/1.1/Wed Feb 16 23:14:49 2005//
+/canEncode.java/1.1/Fri Sep 22 19:01:15 2006/-kk/
+/encode.java/1.1/Sun Dec 26 17:10:15 2004//
+/forName.java/1.2/Fri Feb 18 01:18:43 2005//
+/forName2.java/1.1/Mon Feb 7 09:56:36 2005//
+/utf16.java/1.1/Fri Oct 15 08:57:20 2004//
+D
diff --git a/gnu/testlet/java/nio/charset/Charset/CVS/Repository b/gnu/testlet/java/nio/charset/Charset/CVS/Repository
new file mode 100644
index 00000000..813e5436
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/charset/Charset
diff --git a/gnu/testlet/java/nio/charset/Charset/CVS/Root b/gnu/testlet/java/nio/charset/Charset/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/nio/charset/Charset/UTF8Charset.java b/gnu/testlet/java/nio/charset/Charset/UTF8Charset.java
new file mode 100644
index 00000000..50b531ed
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/UTF8Charset.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Julian Scheid (julian@sektor37.de) and
+// Mark J. Wielaard (mark@klomp.org)
+
+// 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.java.nio.charset.Charset;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+import java.nio.charset.*;
+
+/**
+ * Test for some under/overflow situations exposing a bug in GNU
+ * Classpath UTF_8 Charset implementation found by Julian Scheid
+ * (julian@sektor37.de).
+ */
+public class UTF8Charset implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ final int first_chunk_size = 4;
+ final int second_chunk_size = 3;
+
+ byte[] inBytes = new byte[first_chunk_size + second_chunk_size];
+
+ // fill with some harmless ASCII7 char
+ for (int i = 0; i < inBytes.length; ++i)
+ inBytes[i] = 'X';
+
+ ByteBuffer inBuffer = ByteBuffer.wrap(inBytes);
+
+ CharBuffer outBuffer1 = CharBuffer.allocate(first_chunk_size);
+ CharBuffer outBuffer2 = CharBuffer.allocate(second_chunk_size);
+
+ Charset utf8Charset = Charset.forName("UTF-8");
+ CharsetDecoder decoder = utf8Charset.newDecoder();
+
+ CoderResult coderResult1
+ = decoder.decode(inBuffer, outBuffer1, false);
+
+ h.check(coderResult1.isOverflow(),
+ "Expected decoder to return overflow status");
+ h.check(first_chunk_size == inBuffer.position(),
+ "Expected input buffer position to be " + first_chunk_size
+ + ", but it is " + inBuffer.position());
+
+ CoderResult coderResult2
+ = decoder.decode(inBuffer, outBuffer2, false);
+
+ h.check(coderResult2.isUnderflow(),
+ "Expected decoder to return underflow status");
+ h.check((first_chunk_size + second_chunk_size) == inBuffer.position(),
+ "Expected input buffer position to be "
+ + (first_chunk_size + second_chunk_size)
+ + ", but it is " + inBuffer.position());
+ }
+}
diff --git a/gnu/testlet/java/nio/charset/Charset/canEncode.java b/gnu/testlet/java/nio/charset/Charset/canEncode.java
new file mode 100644
index 00000000..09e2f361
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/canEncode.java
@@ -0,0 +1,42 @@
+/* canEncode.java -- test canEncode method
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.nio.charset.Charset;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class canEncode implements Testlet {
+
+ public canEncode() {
+ }
+
+ public void test(TestHarness harness) {
+ // Regression test for PR 29178.
+ CharsetEncoder enc = Charset.forName("US-ASCII").newEncoder();
+ harness.check(!enc.canEncode('\u00e4'));
+ }
+}
diff --git a/gnu/testlet/java/nio/charset/Charset/encode.java b/gnu/testlet/java/nio/charset/Charset/encode.java
new file mode 100644
index 00000000..9e174505
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/encode.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.java.nio.charset.Charset;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.*;
+import java.nio.charset.*;
+
+public class encode implements Testlet
+{
+ private void checkByteBuffer(TestHarness h, ByteBuffer bb, int capacity, int position, int limit)
+ {
+ h.check(bb != null, "Byte buffer is null");
+ h.check(bb.capacity(), capacity, "Wrong capacity in byte buffer");
+ h.check(bb.limit(), limit, "Wrong limit in byte buffer");
+ }
+
+ private void checkCharBuffer(TestHarness h, CharBuffer cb, int capacity, int position, int limit)
+ {
+ h.check(cb != null, "Char buffer is null");
+ h.check(cb.capacity(), capacity, "Wrong capacity in char buffer");
+ h.check(cb.position(), position, "Wrong position in char buffer");
+ h.check(cb.limit(), limit, "Wrong limit in char buffer");
+ }
+
+ public void test(TestHarness h)
+ {
+ Charset cs1 = Charset.forName("UTF-16");
+ Charset cs2 = Charset.forName("US-ASCII");
+
+ ByteBuffer bb;
+ CharBuffer cb = CharBuffer.wrap("Hello World! Hello World! Hello World!");
+
+ bb = cs1.encode(cb);
+ checkByteBuffer(h, bb, 152, 0, 78);
+ checkCharBuffer(h, cb, 38, 38, 38);
+
+ bb = cs2.encode(cb);
+ checkByteBuffer(h, bb, 0, 0, 0);
+
+ }
+}
diff --git a/gnu/testlet/java/nio/charset/Charset/forName.java b/gnu/testlet/java/nio/charset/Charset/forName.java
new file mode 100644
index 00000000..afa2e04e
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/forName.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.java.nio.charset.Charset;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.charset.*;
+
+public class forName implements Testlet
+{
+ private void checkCharset(TestHarness h, String name)
+ {
+ boolean supported = false;
+
+ try
+ {
+ Charset cs = Charset.forName(name);
+
+ if (cs != null)
+ supported = true;
+ }
+ catch (Throwable t)
+ {
+ // Ignore.
+ }
+
+ h.check(supported, "Charset '" + name + "' supported");
+ }
+
+ public void test(TestHarness h)
+ {
+ // Check for non-existant encodings.
+ boolean works = false;
+
+ try
+ {
+ Charset cs = Charset.forName("foobar");
+ }
+ catch (UnsupportedCharsetException e)
+ {
+ works = true;
+ }
+
+ h.check(works, "UnsupportedCharsetException expected");
+
+ // Checks for standard encodings.
+ checkCharset(h, "ISO-8859-1");
+ checkCharset(h, "US-ASCII");
+ checkCharset(h, "UTF-8");
+ checkCharset(h, "UTF-16");
+ checkCharset(h, "UTF-16BE");
+ checkCharset(h, "UTF-16LE");
+
+ /* Checks for IllegalArgumentException being thrown
+ * when given charset name is null.
+ */
+ works = false;
+ try {
+ Charset.forName(null);
+ } catch(Exception e) {
+ works = e instanceof IllegalArgumentException;
+ }
+ h.check(works, "IllegalArgumentException thrown");
+ }
+
+}
diff --git a/gnu/testlet/java/nio/charset/Charset/forName2.java b/gnu/testlet/java/nio/charset/Charset/forName2.java
new file mode 100644
index 00000000..a3465ce5
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/forName2.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+// Adapted by Robert Schuster (thebohemian@gmx.net)
+
+// 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.java.nio.charset.Charset;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.charset.*;
+
+public class forName2 implements Testlet {
+ private void checkCharset(TestHarness h, String name) {
+ boolean supported = false;
+
+ try {
+ Charset cs = Charset.forName(name);
+
+ if (cs != null)
+ supported = true;
+ } catch (Throwable t) {
+ // Ignore.
+ }
+
+ h.check(supported, "Charset '" + name + "' supported");
+ }
+
+ public void test(TestHarness h) {
+ /*
+ * Check for standard encodings using case-insensitive and alternative
+ * names.
+ */
+
+ // IANA name for UTF-8
+ checkCharset(h, "uTf-8");
+
+ // UTF-8 names from
+ // http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ checkCharset(h, "utf8");
+
+ checkCharset(h, "UtF-16bE");
+ checkCharset(h, "uTf-16Le");
+
+ // IANA names for 8859_1
+ checkCharset(h, "IsO-iR-100");
+ checkCharset(h, "iSo_8859-1");
+ checkCharset(h, "LATIN1");
+ checkCharset(h, "L1");
+ checkCharset(h, "IbM819");
+ checkCharset(h, "cp819");
+ checkCharset(h, "CSisolATIN1");
+
+ // IANA names for US-ASCII
+ checkCharset(h, "iSo-Ir-6");
+ checkCharset(h, "AnSi_X3.4-1986");
+ checkCharset(h, "IsO_646.IRV:1991");
+ checkCharset(h, "AsCiI");
+ checkCharset(h, "IsO646-us");
+ checkCharset(h, "Us");
+ checkCharset(h, "IbM367");
+ checkCharset(h, "cP367");
+ checkCharset(h, "CSASCII");
+
+ // UTF-8 names from
+ // http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
+ /* These fail on official implementation of <= 1.5 */
+ checkCharset(h, "ibm-1208");
+ checkCharset(h, "ibm-1209");
+ checkCharset(h, "ibm-5304");
+ checkCharset(h, "ibm-5305");
+ checkCharset(h, "windows-65001");
+ checkCharset(h, "cp1208");
+ }
+}
diff --git a/gnu/testlet/java/nio/charset/Charset/utf16.java b/gnu/testlet/java/nio/charset/Charset/utf16.java
new file mode 100644
index 00000000..74141142
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/Charset/utf16.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.java.nio.charset.Charset;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.nio.charset.*;
+
+public class utf16 implements Testlet
+{
+ private void testCharset(TestHarness h, String name,
+ float expected_average, float expected_max)
+ {
+ Charset charset = Charset.forName(name);
+ h.check(charset != null, "Charset.forName(\"" + name + "\") returned 'null'");
+
+ CharsetEncoder encoder = charset.newEncoder();
+ h.check(encoder != null, "Charset.newEncoder() returned 'null'");
+
+ float average = encoder.averageBytesPerChar();
+ h.check(average, expected_average,
+ "average bytes per char (expected: " + expected_average + ", got: " + average + ")");
+
+ float max = encoder.maxBytesPerChar();
+ h.check(max, expected_max,
+ "max bytes per char (expected: " + expected_max + ", got: " + max + ")");
+ }
+
+ public void test(TestHarness h)
+ {
+ testCharset(h, "UTF-16", 2.0f, 4.0f);
+ testCharset(h, "UTF-16LE", 2.0f, 2.0f);
+ testCharset(h, "UTF-16BE", 2.0f, 2.0f);
+ }
+}
diff --git a/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Entries b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Repository b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Repository
new file mode 100644
index 00000000..136894f3
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/nio/charset/CharsetEncoder
diff --git a/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Root b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/nio/charset/CharsetEncoder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/rmi/CVS/Entries b/gnu/testlet/java/rmi/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/rmi/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/rmi/CVS/Entries.Log b/gnu/testlet/java/rmi/CVS/Entries.Log
new file mode 100644
index 00000000..9f7a8e02
--- /dev/null
+++ b/gnu/testlet/java/rmi/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/server////
diff --git a/gnu/testlet/java/rmi/CVS/Repository b/gnu/testlet/java/rmi/CVS/Repository
new file mode 100644
index 00000000..6a72ae17
--- /dev/null
+++ b/gnu/testlet/java/rmi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/rmi
diff --git a/gnu/testlet/java/rmi/CVS/Root b/gnu/testlet/java/rmi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/rmi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/rmi/server/CVS/Entries b/gnu/testlet/java/rmi/server/CVS/Entries
new file mode 100644
index 00000000..b9e215a4
--- /dev/null
+++ b/gnu/testlet/java/rmi/server/CVS/Entries
@@ -0,0 +1,2 @@
+/Uniqueness.java/1.1/Thu Jul 6 11:52:40 2006/-kk/
+D
diff --git a/gnu/testlet/java/rmi/server/CVS/Repository b/gnu/testlet/java/rmi/server/CVS/Repository
new file mode 100644
index 00000000..15e46663
--- /dev/null
+++ b/gnu/testlet/java/rmi/server/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/rmi/server
diff --git a/gnu/testlet/java/rmi/server/CVS/Root b/gnu/testlet/java/rmi/server/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/rmi/server/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/rmi/server/Uniqueness.java b/gnu/testlet/java/rmi/server/Uniqueness.java
new file mode 100644
index 00000000..8bbc1a78
--- /dev/null
+++ b/gnu/testlet/java/rmi/server/Uniqueness.java
@@ -0,0 +1,91 @@
+/* Uniqueness.java -- The UID uniqueness : describe
+ Copyright (C) 2006 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.java.rmi.server;
+
+import java.rmi.server.UID;
+import java.util.HashSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Uniqueness implements Testlet
+{
+
+ static int complete = 0;
+
+ static class TesterThread extends Thread
+ {
+ UID [] result;
+
+ public void run()
+ {
+ result = new UID[200];
+ for (int i = 0; i < result.length; i++)
+ {
+ result[i] = new UID();
+ }
+ synchronized (Uniqueness.class)
+ {
+ complete++;
+ }
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TesterThread[] tt = new TesterThread[20];
+ for (int i = 0; i < tt.length; i++)
+ {
+ tt[i] = new TesterThread();
+ tt[i].start();
+ }
+
+ // Wait till all complete:
+ do
+ {
+ try
+ {
+ Thread.currentThread().sleep(200);
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+ while (complete < tt.length);
+
+ HashSet ids = new HashSet();
+
+ for (int i = 0; i < tt.length; i++)
+ {
+ for (int j = 0; j < tt[i].result.length; j++)
+ {
+ UID id = tt[i].result[j];
+ if (ids.contains(id))
+ harness.fail("Duplicate ID " + id);
+ else
+ ids.add(id);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/AccessController/CVS/Entries b/gnu/testlet/java/security/AccessController/CVS/Entries
new file mode 100644
index 00000000..29717426
--- /dev/null
+++ b/gnu/testlet/java/security/AccessController/CVS/Entries
@@ -0,0 +1,3 @@
+/contexts.java/1.5/Wed Jun 25 14:51:51 2008//
+/doPrivileged.java/1.1/Wed Oct 5 21:12:35 2005//
+D
diff --git a/gnu/testlet/java/security/AccessController/CVS/Repository b/gnu/testlet/java/security/AccessController/CVS/Repository
new file mode 100644
index 00000000..d66a0f1c
--- /dev/null
+++ b/gnu/testlet/java/security/AccessController/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/AccessController
diff --git a/gnu/testlet/java/security/AccessController/CVS/Root b/gnu/testlet/java/security/AccessController/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/AccessController/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/AccessController/contexts.java b/gnu/testlet/java/security/AccessController/contexts.java
new file mode 100644
index 00000000..87faf164
--- /dev/null
+++ b/gnu/testlet/java/security/AccessController/contexts.java
@@ -0,0 +1,348 @@
+// Copyright (C) 2006, 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.security.AccessController;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileFilter;
+import java.io.FileOutputStream;
+import java.io.FilePermission;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.AccessController;
+import java.security.AccessControlContext;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+// In this test we load three different instances of ourself from
+// three different jarfiles with three different classloaders. Each
+// classloader has a different protection domain in which that
+// classloader's jarfile is readable. All kinds of context-hopping is
+// performed, and we infer which protection domains are in our stack
+// by seeing which jarfile read permissions we can see.
+
+public class contexts implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // The bits where we access protection domains is Classpath-specific.
+ if (System.getProperty("gnu.classpath.version") == null)
+ return;
+
+ File jars[] = new File[] {null, null, null};
+ try {
+ harness.checkPoint("setup");
+
+ // Make jarfiles containing this class and its dependencies
+ String base =
+ new File(harness.getTempDirectory(), "ac").getCanonicalPath();
+
+ jars[0] = new File(base + "1.jar");
+ JarOutputStream jos = new JarOutputStream(new FileOutputStream(jars[0]));
+ copyClass(harness.getBuildDirectory(), jos, getClass());
+ copyClass(harness.getBuildDirectory(), jos, TestHarness.class);
+ jos.close();
+
+ for (int i = 1; i < jars.length; i++) {
+ jars[i] = new File(base + (i + 1) + ".jar");
+ copyFile(jars[0], jars[i]);
+ }
+
+ // Create instances of ourself loaded from different loaders
+ TestObject testObjects[] = new TestObject[jars.length];
+ for (int i = 0; i < jars.length; i++) {
+ Class testClass = new URLClassLoader(new URL[] {
+ jars[i].toURL()}, null).loadClass(getClass().getName());
+ harness.check(
+ getClass().getClassLoader() != testClass.getClassLoader());
+ Constructor c = testClass.getConstructor(new Class[] {String.class});
+ testObjects[i] = new TestObject(c.newInstance(new Object[] {base}));
+ }
+
+ // Run the tests
+ test(harness, testObjects);
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ finally {
+ for (int i = 0; i < jars.length; i++) {
+ if (jars[i].exists())
+ jars[i].delete();
+ }
+ }
+ }
+
+ // Copy a classfile and its dependencies into a jarfile
+ private static void copyClass(String srcdir, JarOutputStream jos, Class cls)
+ throws Exception
+ {
+ File root = new File(srcdir, cls.getName().replace(".", File.separator));
+ final String rootpath = root.getPath();
+ int chop = srcdir.length() + File.separator.length();
+
+ File dir = root.getParentFile();
+ if (dir.isDirectory()) {
+ File[] files = dir.listFiles(new FileFilter() {
+ public boolean accept(File file) {
+ String path = file.getPath();
+ if (path.endsWith(".class")) {
+ path = path.substring(0, path.length() - 6);
+ if (path.equals(rootpath))
+ return true;
+ if (path.startsWith(rootpath + "$"))
+ return true;
+ }
+ return false;
+ }
+ });
+ for (int i = 0; i < files.length; i++) {
+ byte[] bytes = new byte[(int) files[i].length()];
+ FileInputStream fis = new FileInputStream(files[i]);
+ fis.read(bytes);
+ fis.close();
+
+ jos.putNextEntry(new JarEntry(files[i].getPath().substring(chop)));
+ jos.write(bytes, 0, bytes.length);
+ }
+ }
+
+ Class superclass = cls.getSuperclass();
+ if (superclass != null)
+ copyClass(srcdir, jos, superclass);
+ Class[] interfaces = cls.getInterfaces();
+ for (int i = 0; i < interfaces.length; i++)
+ copyClass(srcdir, jos, interfaces[i]);
+ }
+
+ // Make a copy of a file
+ private static void copyFile(File src, File dst) throws Exception
+ {
+ byte[] bytes = new byte[(int) src.length()];
+ FileInputStream fis = new FileInputStream(src);
+ fis.read(bytes);
+ fis.close();
+
+ FileOutputStream fos = new FileOutputStream(dst);
+ fos.write(bytes);
+ fos.close();
+ }
+
+ // Constructor for the main object that Mauve creates
+ public contexts()
+ {
+ }
+
+ // Constructor for the sub-objects that the main object creates
+ private String base = null;
+ public contexts(String base)
+ {
+ this.base = base;
+ }
+
+ // Wrapper to hide the pain of reflection
+ private static class TestObject
+ {
+ private Object object;
+
+ public TestObject(Object object)
+ {
+ this.object = object;
+ }
+
+ public String[] listJarsOf(TestObject other) throws Exception
+ {
+ Method method = object.getClass().getMethod(
+ "listJarsOf", new Class[] {Object.class});
+ return (String[]) method.invoke(object, new Object[] {other.object});
+ }
+
+ public String[] callListJarsOf(TestObject caller, TestObject callee)
+ throws Exception
+ {
+ Method method = object.getClass().getMethod(
+ "callListJarsOf", new Class[] {Object.class, Object.class});
+ return (String[]) method.invoke(
+ object, new Object[] {caller.object, callee.object});
+ }
+
+ public String[] callPrivilegedListJarsOf(
+ TestObject caller, TestObject callee) throws Exception
+ {
+ Method method = object.getClass().getMethod(
+ "callPrivilegedListJarsOf", new Class[] {Object.class, Object.class});
+ return (String[]) method.invoke(
+ object, new Object[] {caller.object, callee.object});
+ }
+ }
+
+ public String[] listJarsOf(Object object) throws Exception
+ {
+ Method method = object.getClass().getMethod("listJars", new Class[0]);
+ return (String[]) method.invoke(object, new Object[0]);
+ }
+
+ public String[] callListJarsOf(Object caller, Object callee)
+ throws Exception
+ {
+ Method method = caller.getClass().getMethod(
+ "listJarsOf", new Class[] {Object.class});
+ return (String[]) method.invoke(caller, new Object[] {callee});
+ }
+
+ public String[] callPrivilegedListJarsOf(Object caller, Object callee)
+ throws Exception
+ {
+ Method method = caller.getClass().getMethod(
+ "privilegedListJarsOf", new Class[] {Object.class});
+ return (String[]) method.invoke(caller, new Object[] {callee});
+ }
+
+ public String[] privilegedListJarsOf(final Object object) throws Exception
+ {
+ final Method method = object.getClass().getMethod(
+ "listJars", new Class[0]);
+ return (String[]) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ try {
+ return method.invoke(object, new Object[0]);
+ }
+ catch (Exception e) {
+ return e;
+ }
+ }
+ });
+ }
+
+ public String[] listJars() throws Exception
+ {
+ AccessControlContext ctx = AccessController.getContext();
+ // XXX start of classpath-specific code
+ Field field = ctx.getClass().getDeclaredField("protectionDomains");
+ field.setAccessible(true);
+ ProtectionDomain[] domains = (ProtectionDomain[]) field.get(ctx);
+ // XXX end of classpath-specific code
+
+ LinkedList jars = new LinkedList();
+ for (int i = 0; i < domains.length; i++) {
+ PermissionCollection perms = domains[i].getPermissions();
+ for (Enumeration e = perms.elements(); e.hasMoreElements() ;) {
+ Permission p = (Permission) e.nextElement();
+ if (!(p instanceof FilePermission))
+ continue;
+ String path = p.getName();
+ if (path.length() == base.length() + 5
+ && path.startsWith(base)
+ && Character.isDigit(path.charAt(base.length()))
+ && path.endsWith(".jar"))
+ jars.add(path);
+ }
+ }
+ return (String[]) jars.toArray(new String[jars.size()]);
+ }
+
+ // Perform the tests
+ private static void test(TestHarness harness, TestObject[] objects)
+ throws Exception
+ {
+ // Each object should see only its own protection domain
+ harness.checkPoint("self-listing");
+
+ String[] jars = new String[objects.length];
+ for (int i = 0; i < objects.length; i++) {
+ String[] result = objects[i].listJarsOf(objects[i]);
+ harness.check(result.length == 1);
+ jars[i] = result[0];
+ }
+ for (int i = 0; i < objects.length; i++) {
+ for (int j = i + 1; j < objects.length; j++)
+ harness.check(!jars[i].equals(jars[j]));
+ }
+
+ // When one object calls another both objects' protection domains
+ // should be present.
+ harness.checkPoint("straight other-listing");
+
+ boolean[] seen = new boolean[jars.length];
+ String[] result = objects[0].listJarsOf(objects[1]);
+ harness.check(result.length == 2);
+ for (int i = 0; i < seen.length; i++) {
+ seen[i] = false;
+ for (int j = 0; j < result.length; j++) {
+ if (result[j].equals(jars[i])) {
+ harness.check(!seen[i]);
+ seen[i] = true;
+ }
+ }
+ }
+ harness.check(seen[0] && seen[1] && !seen[2]);
+
+ // When one object calls another that calls another all three
+ // objects' protection domains should be present.
+ harness.checkPoint("straight other-other-listing");
+
+ result = objects[0].callListJarsOf(objects[1], objects[2]);
+ harness.check(result.length == 3);
+ for (int i = 0; i < seen.length; i++) {
+ seen[i] = false;
+ for (int j = 0; j < result.length; j++) {
+ if (result[j].equals(jars[i])) {
+ harness.check(!seen[i]);
+ seen[i] = true;
+ }
+ }
+ }
+ harness.check(seen[0] && seen[1] && seen[2]);
+
+ // When one object calls another that uses doPrivileged to call
+ // a third then the first object's protection domain should not
+ // be present.
+ harness.checkPoint("privileged other-other-listing");
+
+ result = objects[0].callPrivilegedListJarsOf(objects[1], objects[2]);
+ harness.check(result.length == 2);
+ for (int i = 0; i < seen.length; i++) {
+ seen[i] = false;
+ for (int j = 0; j < result.length; j++) {
+ if (result[j].equals(jars[i])) {
+ harness.check(!seen[i]);
+ seen[i] = true;
+ }
+ }
+ }
+ harness.check(!seen[0] && seen[1] && seen[2]);
+ }
+}
diff --git a/gnu/testlet/java/security/AccessController/doPrivileged.java b/gnu/testlet/java/security/AccessController/doPrivileged.java
new file mode 100644
index 00000000..8867f6ac
--- /dev/null
+++ b/gnu/testlet/java/security/AccessController/doPrivileged.java
@@ -0,0 +1,98 @@
+// Copyright (C) 2005, Free Software Foundation, Inc.
+//
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA, 02110-1301 USA.
+//
+// Tags: JDK1.2
+
+package gnu.testlet.java.security.AccessController;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.*;
+
+/**
+ * Checks that unchecked exceptions are properly thrown and checked
+ * exceptions are properly wrapped.
+ *
+ * Written by Mark J. Wielaard. Suggested by Nicolas Geoffray.
+ */
+public class doPrivileged implements Testlet, PrivilegedExceptionAction
+{
+
+ // The thing to throw.
+ private Throwable t;
+
+ public void test(TestHarness harness)
+ {
+ doPrivileged pea = new doPrivileged();
+
+ pea.t = new NullPointerException();
+ try
+ {
+ AccessController.doPrivileged(pea);
+ }
+ catch (NullPointerException npe)
+ {
+ harness.check(true);
+ }
+ catch (Throwable tt)
+ {
+ harness.debug(tt);
+ harness.check(false);
+ }
+
+ pea.t = new java.io.IOException();
+ try
+ {
+ AccessController.doPrivileged(pea);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ harness.check(pea.t, pae.getCause());
+ }
+ catch (Throwable tt)
+ {
+ harness.debug(tt);
+ harness.check(false);
+ }
+
+ pea.t = new ThreadDeath();
+ try
+ {
+ AccessController.doPrivileged(pea);
+ }
+ catch (ThreadDeath td)
+ {
+ harness.check(true);
+ }
+ catch (Throwable tt)
+ {
+ harness.debug(tt);
+ harness.check(false);
+ }
+ }
+
+ public Object run() throws Exception
+ {
+ if (t instanceof Error)
+ throw (Error) t;
+ else
+ throw (Exception) t;
+ }
+}
diff --git a/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Entries b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Entries
new file mode 100644
index 00000000..6c791752
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Entries
@@ -0,0 +1,3 @@
+/MauveAlgorithm.java/1.2/Sun May 2 12:48:24 2004//
+/getInstance14.java/1.2/Mon Apr 7 15:42:10 2003//
+D
diff --git a/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Repository b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Repository
new file mode 100644
index 00000000..cdfa6793
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/AlgorithmParameterGenerator
diff --git a/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Root b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameterGenerator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java b/gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java
new file mode 100644
index 00000000..4196efec
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameterGenerator/MauveAlgorithm.java
@@ -0,0 +1,47 @@
+// $Id: MauveAlgorithm.java,v 1.2 2004/05/02 12:48:24 aph Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: not-a-test
+
+package gnu.testlet.java.security.AlgorithmParameterGenerator;
+import java.security.AlgorithmParameterGeneratorSpi;
+import java.security.AlgorithmParameters;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.SecureRandom;
+import java.security.spec.AlgorithmParameterSpec;
+
+public class MauveAlgorithm extends AlgorithmParameterGeneratorSpi
+{
+ protected void engineInit (int size, SecureRandom random)
+ {
+ }
+
+ protected void engineInit (AlgorithmParameterSpec genParamSpec,
+ SecureRandom random)
+ throws InvalidAlgorithmParameterException
+ {
+ }
+
+ protected AlgorithmParameters engineGenerateParameters ()
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java b/gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java
new file mode 100644
index 00000000..64a92995
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameterGenerator/getInstance14.java
@@ -0,0 +1,105 @@
+// $Id: getInstance14.java,v 1.2 2003/04/07 15:42:10 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveAlgorithm
+
+package gnu.testlet.java.security.AlgorithmParameterGenerator;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.AlgorithmParameterGenerator;
+import java.security.Provider;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("AlgorithmParameterGenerator", 1.0, "");
+
+ put("AlgorithmParameterGenerator.foo",
+ "gnu.testlet.java.security.AlgorithmParameterGenerator.MauveAlgorithm");
+ put("Alg.Alias.AlgorithmParameterGenerator.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("AlgorithmParameterGenerator");
+
+ AlgorithmParameterGenerator spi;
+ Provider provider = this;
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = AlgorithmParameterGenerator.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = AlgorithmParameterGenerator.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = AlgorithmParameterGenerator.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = AlgorithmParameterGenerator.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/AlgorithmParameters/CVS/Entries b/gnu/testlet/java/security/AlgorithmParameters/CVS/Entries
new file mode 100644
index 00000000..6c791752
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameters/CVS/Entries
@@ -0,0 +1,3 @@
+/MauveAlgorithm.java/1.2/Sun May 2 12:48:24 2004//
+/getInstance14.java/1.2/Mon Apr 7 15:42:10 2003//
+D
diff --git a/gnu/testlet/java/security/AlgorithmParameters/CVS/Repository b/gnu/testlet/java/security/AlgorithmParameters/CVS/Repository
new file mode 100644
index 00000000..fb696a1a
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameters/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/AlgorithmParameters
diff --git a/gnu/testlet/java/security/AlgorithmParameters/CVS/Root b/gnu/testlet/java/security/AlgorithmParameters/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameters/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java b/gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java
new file mode 100644
index 00000000..42fbe38f
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameters/MauveAlgorithm.java
@@ -0,0 +1,66 @@
+// $Id: MauveAlgorithm.java,v 1.2 2004/05/02 12:48:24 aph Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: not-a-test
+
+package gnu.testlet.java.security.AlgorithmParameters;
+import java.io.IOException;
+import java.security.AlgorithmParametersSpi;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidParameterSpecException;
+
+public class MauveAlgorithm extends AlgorithmParametersSpi
+{
+ protected void engineInit (AlgorithmParameterSpec paramSpec)
+ throws InvalidParameterSpecException
+ {
+ }
+
+ protected void engineInit (byte[] params) throws IOException
+ {
+ }
+
+ protected void engineInit (byte[] params, String format) throws IOException
+ {
+ }
+
+ protected
+ AlgorithmParameterSpec engineGetParameterSpec (Class paramSpec)
+ throws InvalidParameterSpecException
+ {
+ return null;
+ }
+
+ protected byte[] engineGetEncoded () throws IOException
+ {
+ return new byte[0];
+ }
+
+ protected byte[] engineGetEncoded (String format) throws IOException
+ {
+ return new byte[0];
+ }
+
+ protected String engineToString ()
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/java/security/AlgorithmParameters/getInstance14.java b/gnu/testlet/java/security/AlgorithmParameters/getInstance14.java
new file mode 100644
index 00000000..f5daf17e
--- /dev/null
+++ b/gnu/testlet/java/security/AlgorithmParameters/getInstance14.java
@@ -0,0 +1,105 @@
+// $Id: getInstance14.java,v 1.2 2003/04/07 15:42:10 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveAlgorithm
+
+package gnu.testlet.java.security.AlgorithmParameters;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.AlgorithmParameters;
+import java.security.Provider;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("AlgorithmParameters", 1.0, "");
+
+ put("AlgorithmParameters.foo",
+ "gnu.testlet.java.security.AlgorithmParameters.MauveAlgorithm");
+ put("Alg.Alias.AlgorithmParameters.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("AlgorithmParameters");
+
+ AlgorithmParameters spi;
+ Provider provider = this;
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = AlgorithmParameters.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = AlgorithmParameters.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = AlgorithmParameters.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = AlgorithmParameters.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/BasicPermission/CVS/Entries b/gnu/testlet/java/security/BasicPermission/CVS/Entries
new file mode 100644
index 00000000..cc175c4b
--- /dev/null
+++ b/gnu/testlet/java/security/BasicPermission/CVS/Entries
@@ -0,0 +1,2 @@
+/newPermission.java/1.1/Fri Mar 17 10:22:46 2006//
+D
diff --git a/gnu/testlet/java/security/BasicPermission/CVS/Repository b/gnu/testlet/java/security/BasicPermission/CVS/Repository
new file mode 100644
index 00000000..ed7cef58
--- /dev/null
+++ b/gnu/testlet/java/security/BasicPermission/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/BasicPermission
diff --git a/gnu/testlet/java/security/BasicPermission/CVS/Root b/gnu/testlet/java/security/BasicPermission/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/BasicPermission/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/BasicPermission/newPermission.java b/gnu/testlet/java/security/BasicPermission/newPermission.java
new file mode 100644
index 00000000..a625cdff
--- /dev/null
+++ b/gnu/testlet/java/security/BasicPermission/newPermission.java
@@ -0,0 +1,108 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.BasicPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.*;
+
+public class newPermission extends BasicPermission implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Permission p;
+ p = new newPermission("a");
+ harness.check("a", p.getName());
+ p = new newPermission("a", "b");
+ harness.check("a", p.getName());
+ harness.check("b", p.getActions());
+
+ boolean exception_thrown;
+ try
+ {
+ p = new newPermission("");
+ exception_thrown = false;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ try
+ {
+ p = new newPermission(null);
+ exception_thrown = false;
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ try
+ {
+ p = new newPermission("", "");
+ exception_thrown = false;
+ }
+ catch (IllegalArgumentException iae)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ try
+ {
+ p = new newPermission(null, "");
+ exception_thrown = false;
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ try
+ {
+ p = new newPermission(null, null);
+ exception_thrown = false;
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ }
+
+ private String actions;
+ public newPermission() { super("newPermission"); }
+ public newPermission(String n) { super(n); }
+ public newPermission(String n, String a) { super(n, a); this.actions = a; }
+
+ public String getActions()
+ {
+ // BasicPermission.getActions() should return the empty string.
+ return super.getActions() + actions;
+ }
+}
diff --git a/gnu/testlet/java/security/CVS/Entries b/gnu/testlet/java/security/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/CVS/Entries.Log b/gnu/testlet/java/security/CVS/Entries.Log
new file mode 100644
index 00000000..14829362
--- /dev/null
+++ b/gnu/testlet/java/security/CVS/Entries.Log
@@ -0,0 +1,20 @@
+A D/AccessController////
+A D/AlgorithmParameterGenerator////
+A D/AlgorithmParameters////
+A D/BasicPermission////
+A D/DigestInputStream////
+A D/Engine////
+A D/KeyFactory////
+A D/KeyPairGenerator////
+A D/MessageDigest////
+A D/Policy////
+A D/ProtectionDomain////
+A D/Provider////
+A D/SecureRandom////
+A D/Security////
+A D/Signature////
+A D/cert////
+A D/hash////
+A D/jce////
+A D/key////
+A D/sig////
diff --git a/gnu/testlet/java/security/CVS/Repository b/gnu/testlet/java/security/CVS/Repository
new file mode 100644
index 00000000..965375ca
--- /dev/null
+++ b/gnu/testlet/java/security/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security
diff --git a/gnu/testlet/java/security/CVS/Root b/gnu/testlet/java/security/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/DigestInputStream/CVS/Entries b/gnu/testlet/java/security/DigestInputStream/CVS/Entries
new file mode 100644
index 00000000..58b428db
--- /dev/null
+++ b/gnu/testlet/java/security/DigestInputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/readMD5.java/1.2/Thu Jun 3 14:31:13 2004//
+D
diff --git a/gnu/testlet/java/security/DigestInputStream/CVS/Repository b/gnu/testlet/java/security/DigestInputStream/CVS/Repository
new file mode 100644
index 00000000..fd1f7510
--- /dev/null
+++ b/gnu/testlet/java/security/DigestInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/DigestInputStream
diff --git a/gnu/testlet/java/security/DigestInputStream/CVS/Root b/gnu/testlet/java/security/DigestInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/DigestInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/DigestInputStream/readMD5.java b/gnu/testlet/java/security/DigestInputStream/readMD5.java
new file mode 100644
index 00000000..0e75f73c
--- /dev/null
+++ b/gnu/testlet/java/security/DigestInputStream/readMD5.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+// Based on a test by Archie Cobbs (archie@dellroad.org)
+
+// 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.java.security.DigestInputStream;
+
+import java.io.*;
+import java.security.*;
+
+import gnu.testlet.*;
+
+public class readMD5 implements Testlet
+{
+ // echo -n "foobar" | md5sum
+ private static String md5 = "3858f62230ac3c915f300c664312c63f";
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ byte[] foobar = "foobar".getBytes("UTF-8");
+ ByteArrayInputStream bais = new ByteArrayInputStream(foobar);
+ MessageDigest md5Digest = MessageDigest.getInstance("MD5");
+ DigestInputStream dis = new DigestInputStream(bais, md5Digest);
+
+ byte[] buf = new byte[100];
+ while (dis.read(buf, 0, buf.length) != -1);
+ byte[] hash = dis.getMessageDigest().digest();
+
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < hash.length; i++)
+ {
+ result.append(Integer.toHexString((hash[i] >> 4) & 0xf));
+ result.append(Integer.toHexString(hash[i] & 0xf));
+ }
+ harness.check(result.toString(), md5);
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false, t.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/Engine/CVS/Entries b/gnu/testlet/java/security/Engine/CVS/Entries
new file mode 100644
index 00000000..5f0ac016
--- /dev/null
+++ b/gnu/testlet/java/security/Engine/CVS/Entries
@@ -0,0 +1,2 @@
+/getInstance.java/1.4/Wed Aug 16 18:56:21 2006//
+D
diff --git a/gnu/testlet/java/security/Engine/CVS/Repository b/gnu/testlet/java/security/Engine/CVS/Repository
new file mode 100644
index 00000000..a3b590cf
--- /dev/null
+++ b/gnu/testlet/java/security/Engine/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/Engine
diff --git a/gnu/testlet/java/security/Engine/CVS/Root b/gnu/testlet/java/security/Engine/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/Engine/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/Engine/getInstance.java b/gnu/testlet/java/security/Engine/getInstance.java
new file mode 100644
index 00000000..d58cb7c9
--- /dev/null
+++ b/gnu/testlet/java/security/Engine/getInstance.java
@@ -0,0 +1,330 @@
+/* getInstance.java -- Ensure names with extra spaces are recognized
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: ../MessageDigest/MauveDigest
+
+package gnu.testlet.java.security.Engine;
+
+import gnu.java.security.Engine;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.Security;
+
+public class getInstance extends Provider implements Testlet
+{
+
+ private Provider provider;
+
+ public getInstance()
+ {
+ super("FakeProvider", 1.0, "A Fake Provider Used Within the Mauve Test Suite");
+
+ put("MessageDigest.foo",
+ "gnu.testlet.java.security.MessageDigest.MauveDigest");
+ put("Alg.Alias.MessageDigest.bar", "foo");
+ }
+
+
+ // Test case for the behaviour of
+ // Engine.getInstance (service, algorithm, provider).
+ // White space should be ignored.
+ // The algorithm names should be case insensitive.
+ public void test (TestHarness harness){
+ setUp (harness);
+ testWhiteSpace(harness);
+ testAlgorithmCase (harness);
+ testNameRedundancy(harness);
+ }
+
+ private void setUp (TestHarness harness){
+ provider = this;
+ Security.addProvider(provider);
+ }
+
+ // Tests the behaviour of
+ // Engine.getInstance (service, algorithm, provider).
+ // The algorithms and service names should ignore any white space.
+ private void testWhiteSpace (TestHarness harness)
+ {
+ harness.checkPoint ("Engine");
+ String signature;
+
+ signature = "getInstance(\"MessageDigest\", \"foo\", provider)";
+ try
+ {
+ harness.check(
+ Engine.getInstance("MessageDigest", "foo", provider) != null,
+ signature);
+ }
+ catch (Exception x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ signature = "getInstance(\" MessageDigest \", \"foo\", provider)";
+ try
+ {
+ harness.check(
+ Engine.getInstance(" MessageDigest ", "foo", provider) != null,
+ signature);
+ }
+ catch (Exception x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ signature = "getInstance(\"MessageDigest\", \" foo \", provider)";
+ try
+ {
+ harness.check(
+ Engine.getInstance("MessageDigest", " foo ", provider) != null,
+ signature);
+ }
+ catch (Exception x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ signature = "getInstance(\" MessageDigest \", \" foo \", provider)";
+ try
+ {
+ harness.check(
+ Engine.getInstance(" MessageDigest ", " foo ", provider) != null,
+ signature);
+ }
+ catch (Exception x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+
+ // Tests the behaviour of
+ // Engine.getInstance (service, algorithm, provider).
+ // The algorithm names should be case insensitive.
+ private void testAlgorithmCase(TestHarness harness)
+ {
+ try
+ {
+
+ // test to make sure the engine can be found using all lowercase
+ // characters.
+
+ try
+ {
+ Engine.getInstance("MessageDigest", "foo", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine when using all lowercase characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using all uppercase
+ // characters
+ try
+ {
+ Engine.getInstance("MessageDigest", "FOO", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine when using all uppercase characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using a random case for the
+ // characters
+ try
+ {
+ Engine.getInstance("MessageDigest", "FoO", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine when using random case characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using the exact same case
+ // specified in the Provider
+ try
+ {
+ Engine.getInstance("MessageDigest", "foo", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine using exact case characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found usinga all lowercase
+ // characters using the alias
+ try
+ {
+ Engine.getInstance("MessageDigest", "bar", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine using alias and all lowercase characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using all uppercase
+ // characters using the alias
+ try
+ {
+ Engine.getInstance("MessageDigest", "BAR", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine using alias and all uppercase characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using a random case for the
+ // characters using the alias
+ try
+ {
+ Engine.getInstance("MessageDigest", "bAr", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine using alias and random case characters");
+ harness.debug(e);
+ }
+
+ // test to make sure the engine can be found using the exact same case
+ // specified in the Provider using the alias
+ try
+ {
+ Engine.getInstance("MessageDigest", "bar", provider);
+ }
+ catch (NoSuchAlgorithmException e)
+ {
+ harness.fail("Could not find engine using alias and exact case characters");
+ harness.debug(e);
+ }
+ }
+
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail(String.valueOf(e));
+ }
+
+ }
+
+ /**
+ * Tests that the Provider class is immune against adding/removing the same
+ * algorithm with different case names.
+ *
+ * @param harness the test harness.
+ */
+ private void testNameRedundancy(TestHarness harness)
+ {
+ harness.checkPoint("Engine.testNameRedundancy()");
+ try
+ {
+ mustFindName(harness, "foo");
+ mustFindName(harness, "FOO");
+
+ // add a new spelling of 'foo'
+ provider.put("MessageDigest.Foo",
+ "gnu.testlet.java.security.MessageDigest.MauveDigest");
+ harness.verbose("*** Added 'Foo'");
+
+ mustFindName(harness, "Foo");
+
+ // now remove 'foo'. all 'foo' spellings should not be found
+ provider.remove("MessageDigest.foo");
+ harness.verbose("*** Removed 'foo'");
+
+ mustNotFindName(harness, "foo");
+ mustNotFindName(harness, "FOO");
+ mustNotFindName(harness, "Foo");
+
+ // put 'foo' back
+ put("MessageDigest.foo",
+ "gnu.testlet.java.security.MessageDigest.MauveDigest");
+ harness.verbose("*** Re-added 'foo'");
+ // add a new spelling of 'bar'
+ put("Alg.Alias.MessageDigest.Bar", "Foo");
+ harness.verbose("*** Added alias 'Bar'");
+
+ mustFindName(harness, "bar");
+ mustFindName(harness, "BAR");
+ mustFindName(harness, "Bar");
+
+ // now remove 'bar'. all 'bar' spellings should not be found
+ provider.remove("Alg.Alias.MessageDigest.bar");
+ harness.verbose("*** Removed alias 'bar'");
+
+ mustNotFindName(harness, "bar");
+ mustNotFindName(harness, "BAR");
+ mustNotFindName(harness, "Bar");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("Engine.testNameRedundancy(): " + x);
+ }
+ }
+
+ private void mustFindName(TestHarness harness, String name)
+ {
+ String msg = "MUST find " + name;
+ try
+ {
+ Object obj = Engine.getInstance("MessageDigest", name, provider);
+ harness.check(obj != null, msg);
+ }
+ catch (Exception x)
+ {
+ harness.fail(msg);
+ harness.debug(x);
+ }
+ }
+
+ private void mustNotFindName(TestHarness harness, String name)
+ {
+ String msg = "MUST NOT find " + name;
+ try
+ {
+ Object obj = Engine.getInstance("MessageDigest", name, provider);
+ harness.check(obj == null, msg);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.fail(msg);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/KeyFactory/CVS/Entries b/gnu/testlet/java/security/KeyFactory/CVS/Entries
new file mode 100644
index 00000000..c4c8ccc8
--- /dev/null
+++ b/gnu/testlet/java/security/KeyFactory/CVS/Entries
@@ -0,0 +1,3 @@
+/MauveAlgorithm.java/1.2/Sun May 2 12:48:24 2004//
+/getInstance14.java/1.2/Mon Apr 7 15:42:11 2003//
+D
diff --git a/gnu/testlet/java/security/KeyFactory/CVS/Repository b/gnu/testlet/java/security/KeyFactory/CVS/Repository
new file mode 100644
index 00000000..dc7342b1
--- /dev/null
+++ b/gnu/testlet/java/security/KeyFactory/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/KeyFactory
diff --git a/gnu/testlet/java/security/KeyFactory/CVS/Root b/gnu/testlet/java/security/KeyFactory/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/KeyFactory/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java b/gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java
new file mode 100644
index 00000000..aeae6860
--- /dev/null
+++ b/gnu/testlet/java/security/KeyFactory/MauveAlgorithm.java
@@ -0,0 +1,58 @@
+// $Id: MauveAlgorithm.java,v 1.2 2004/05/02 12:48:24 aph Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: not-a-test
+
+package gnu.testlet.java.security.KeyFactory;
+import java.security.KeyFactorySpi;
+import java.security.PublicKey;
+import java.security.PrivateKey;
+import java.security.Key;
+import java.security.InvalidKeyException;
+import java.security.spec.KeySpec;
+import java.security.spec.InvalidKeySpecException;
+
+public class MauveAlgorithm extends KeyFactorySpi
+{
+ protected PublicKey engineGeneratePublic (KeySpec keySpec)
+ throws InvalidKeySpecException
+ {
+ return null;
+ }
+
+ protected PrivateKey engineGeneratePrivate (KeySpec keySpec)
+ throws InvalidKeySpecException
+ {
+ return null;
+ }
+
+ protected KeySpec engineGetKeySpec (Key key, Class keySpec)
+ throws InvalidKeySpecException
+ {
+ return null;
+ }
+
+ protected Key engineTranslateKey (Key key)
+ throws InvalidKeyException
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/java/security/KeyFactory/getInstance14.java b/gnu/testlet/java/security/KeyFactory/getInstance14.java
new file mode 100644
index 00000000..bc008385
--- /dev/null
+++ b/gnu/testlet/java/security/KeyFactory/getInstance14.java
@@ -0,0 +1,105 @@
+// $Id: getInstance14.java,v 1.2 2003/04/07 15:42:11 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveAlgorithm
+
+package gnu.testlet.java.security.KeyFactory;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("KeyFactory", 1.0, "");
+
+ put("KeyFactory.foo",
+ "gnu.testlet.java.security.KeyFactory.MauveAlgorithm");
+ put("Alg.Alias.KeyFactory.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("KeyFactory");
+
+ KeyFactory spi;
+ Provider provider = this;
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = KeyFactory.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = KeyFactory.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = KeyFactory.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = KeyFactory.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/KeyPairGenerator/CVS/Entries b/gnu/testlet/java/security/KeyPairGenerator/CVS/Entries
new file mode 100644
index 00000000..c4c8ccc8
--- /dev/null
+++ b/gnu/testlet/java/security/KeyPairGenerator/CVS/Entries
@@ -0,0 +1,3 @@
+/MauveAlgorithm.java/1.2/Sun May 2 12:48:24 2004//
+/getInstance14.java/1.2/Mon Apr 7 15:42:11 2003//
+D
diff --git a/gnu/testlet/java/security/KeyPairGenerator/CVS/Repository b/gnu/testlet/java/security/KeyPairGenerator/CVS/Repository
new file mode 100644
index 00000000..d6a15fc6
--- /dev/null
+++ b/gnu/testlet/java/security/KeyPairGenerator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/KeyPairGenerator
diff --git a/gnu/testlet/java/security/KeyPairGenerator/CVS/Root b/gnu/testlet/java/security/KeyPairGenerator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/KeyPairGenerator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java b/gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java
new file mode 100644
index 00000000..e8d06353
--- /dev/null
+++ b/gnu/testlet/java/security/KeyPairGenerator/MauveAlgorithm.java
@@ -0,0 +1,39 @@
+// $Id: MauveAlgorithm.java,v 1.2 2004/05/02 12:48:24 aph Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: not-a-test
+
+package gnu.testlet.java.security.KeyPairGenerator;
+import java.security.KeyPairGeneratorSpi;
+import java.security.SecureRandom;
+import java.security.KeyPair;
+
+public class MauveAlgorithm extends KeyPairGeneratorSpi
+{
+ public void initialize (int keysize, SecureRandom random)
+ {
+ }
+
+ public KeyPair generateKeyPair ()
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/java/security/KeyPairGenerator/getInstance14.java b/gnu/testlet/java/security/KeyPairGenerator/getInstance14.java
new file mode 100644
index 00000000..0ed2400d
--- /dev/null
+++ b/gnu/testlet/java/security/KeyPairGenerator/getInstance14.java
@@ -0,0 +1,105 @@
+// $Id: getInstance14.java,v 1.2 2003/04/07 15:42:11 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveAlgorithm
+
+package gnu.testlet.java.security.KeyPairGenerator;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.KeyPairGenerator;
+import java.security.Provider;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("KeyPairGenerator", 1.0, "");
+
+ put("KeyPairGenerator.foo",
+ "gnu.testlet.java.security.KeyPairGenerator.MauveAlgorithm");
+ put("Alg.Alias.KeyPairGenerator.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("KeyPairGenerator");
+
+ KeyPairGenerator spi;
+ Provider provider = this;
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = KeyPairGenerator.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = KeyPairGenerator.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = KeyPairGenerator.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = KeyPairGenerator.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/MessageDigest/CVS/Entries b/gnu/testlet/java/security/MessageDigest/CVS/Entries
new file mode 100644
index 00000000..06cde887
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/CVS/Entries
@@ -0,0 +1,4 @@
+/Instance.java/1.1/Sun Oct 13 21:10:05 2002//
+/MauveDigest.java/1.1/Sun Oct 13 21:10:05 2002//
+/getInstance14.java/1.3/Mon Jan 2 14:02:58 2006//
+D
diff --git a/gnu/testlet/java/security/MessageDigest/CVS/Repository b/gnu/testlet/java/security/MessageDigest/CVS/Repository
new file mode 100644
index 00000000..988ec86e
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/MessageDigest
diff --git a/gnu/testlet/java/security/MessageDigest/CVS/Root b/gnu/testlet/java/security/MessageDigest/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/MessageDigest/Instance.java b/gnu/testlet/java/security/MessageDigest/Instance.java
new file mode 100644
index 00000000..cd9b4293
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/Instance.java
@@ -0,0 +1,111 @@
+// Tags: JDK1.2
+//
+// Uses: MauveDigest
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.MessageDigest;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Security;
+import java.security.Provider;
+import java.security.MessageDigest;
+import java.security.GeneralSecurityException;
+
+public class Instance extends Provider implements Testlet
+{
+ static final String NAME = "Mauve-Test-Provider-Digest";
+ static final double VERSION = 3.14;
+ static final String INFO = "Mauve Info-Test implements MauveDigest";
+
+ TestHarness harness;
+
+ public Instance()
+ {
+ super(NAME, VERSION, INFO);
+
+ put("MessageDigest.MauveDigest",
+ "gnu.testlet.java.security.MessageDigest.MauveDigest");
+ put("Alg.Alias.MessageDigest.MauveAlias", "MauveDigest");
+ }
+
+ void checkDigest(String name)
+ {
+ checkDigest(name, null);
+ }
+
+ void checkDigest(String name, String provider)
+ {
+ String checkPoint = name + (provider == null ? "" : " " + provider);
+ harness.checkPoint(checkPoint);
+
+ MessageDigest d;
+ try
+ {
+ if (provider == null)
+ d = MessageDigest.getInstance(name);
+ else
+ d = MessageDigest.getInstance(name, provider);
+ }
+ catch (GeneralSecurityException gse)
+ {
+ harness.fail(checkPoint + " caught " + gse);
+ return;
+ }
+
+ // Just make sure we got the correct MessageDigest
+ harness.check(d.getAlgorithm(), name);
+ harness.check(d.getProvider(), this);
+
+ // Do some of our dummy operations
+ d.reset();
+ byte[] digest;
+ digest = d.digest();
+ harness.check(digest.length, 0);
+
+ byte[] message = new byte[] {0, 1, 2, 3};
+ digest = d.digest(message);
+ harness.check(MessageDigest.isEqual(digest, message));
+
+ d.update((byte)6);
+ byte[] bs = d.digest();
+ harness.check(bs[0], (byte)6);
+ }
+
+ public void test (TestHarness h)
+ {
+ this.harness = h;
+ Security.addProvider(this);
+
+ checkDigest("MauveDigest");
+ checkDigest("MAUVEDIGEST");
+ checkDigest("MauveAlias");
+ checkDigest("MAUVEALIAS");
+
+ checkDigest("MauveDigest", NAME);
+ checkDigest("MAUVEDIGEST", NAME);
+ checkDigest("MauveAlias", NAME);
+ checkDigest("MAUVEALIAS", NAME);
+ }
+}
+
diff --git a/gnu/testlet/java/security/MessageDigest/MauveDigest.java b/gnu/testlet/java/security/MessageDigest/MauveDigest.java
new file mode 100644
index 00000000..ee7e01b4
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/MauveDigest.java
@@ -0,0 +1,54 @@
+// Tags: not-a-test
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.MessageDigest;
+
+import java.security.MessageDigestSpi;
+
+// Dummy digest that just contains what was put in.
+public class MauveDigest extends MessageDigestSpi
+{
+ private byte[] digest;
+
+ public void engineUpdate(byte b)
+ {
+ digest = new byte[1];
+ digest[0] = b;
+ }
+
+ public void engineUpdate(byte[] bs, int off, int len)
+ {
+ digest = new byte[len];
+ System.arraycopy(bs, off, digest, 0, len);
+ }
+
+ public byte[] engineDigest()
+ {
+ return digest;
+ }
+
+ public void engineReset()
+ {
+ digest = new byte[0];
+ }
+}
+
diff --git a/gnu/testlet/java/security/MessageDigest/getInstance14.java b/gnu/testlet/java/security/MessageDigest/getInstance14.java
new file mode 100644
index 00000000..cc69eb4c
--- /dev/null
+++ b/gnu/testlet/java/security/MessageDigest/getInstance14.java
@@ -0,0 +1,133 @@
+// $Id: getInstance14.java,v 1.3 2006/01/02 14:02:58 raif Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveDigest
+
+package gnu.testlet.java.security.MessageDigest;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.security.Provider;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("MessageDigest", 1.0, "");
+
+ put("MessageDigest.foo",
+ "gnu.testlet.java.security.MessageDigest.MauveDigest");
+ put("Alg.Alias.MessageDigest.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("MessageDigest");
+
+ MessageDigest spi;
+ Provider provider = this;
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", \" MessageDigest \")";
+ try
+ {
+ spi = MessageDigest.getInstance("foo", " MessageDigest ");
+ harness.check(spi != null, signature);
+ }
+ catch (GeneralSecurityException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = MessageDigest.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\" foo \", provider)";
+ try
+ {
+ spi = MessageDigest.getInstance(" foo ", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = MessageDigest.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = MessageDigest.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = MessageDigest.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/Policy/CVS/Entries b/gnu/testlet/java/security/Policy/CVS/Entries
new file mode 100644
index 00000000..85cdca62
--- /dev/null
+++ b/gnu/testlet/java/security/Policy/CVS/Entries
@@ -0,0 +1,3 @@
+/Security.java/1.1/Tue Feb 22 13:54:18 2011//
+/setPolicy.java/1.1/Wed Dec 1 19:52:12 2010//
+D
diff --git a/gnu/testlet/java/security/Policy/CVS/Repository b/gnu/testlet/java/security/Policy/CVS/Repository
new file mode 100644
index 00000000..0843aa49
--- /dev/null
+++ b/gnu/testlet/java/security/Policy/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/Policy
diff --git a/gnu/testlet/java/security/Policy/CVS/Root b/gnu/testlet/java/security/Policy/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/Policy/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/Policy/Security.java b/gnu/testlet/java/security/Policy/Security.java
new file mode 100644
index 00000000..7bfafb6c
--- /dev/null
+++ b/gnu/testlet/java/security/Policy/Security.java
@@ -0,0 +1,110 @@
+// Copyright (C) 2011 Red Hat, Inc.
+// Written by Andrew John Hughes <ahughes@redhat.com>
+
+// 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: JDK1.5
+
+package gnu.testlet.java.security.Policy;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Permission;
+import java.security.Permissions;
+import java.security.PermissionCollection;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.SecurityPermission;
+
+/**
+ * Tests whether the toString output of ProtectionDomain
+ * includes the Policy's protection domains when the
+ * SecurityManager denies the getPolicy permission.
+ * See PR42390.
+ */
+public class Security implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Policy.setPolicy(new Policy()
+ {
+ public PermissionCollection getPermissions(ProtectionDomain domain)
+ {
+ Permissions perms = new Permissions();
+ perms.add(new TestPermission());
+ return perms;
+ }
+ });
+ ProtectionDomain pd = Security.class.getProtectionDomain();
+ System.setSecurityManager(new SecurityManager()
+ {
+ public void checkPermission(Permission perm)
+ {
+ if ((perm instanceof SecurityPermission) &&
+ perm.getName().equals("getPolicy"))
+ {
+ throw new SecurityException("Policy retrieval disallowed.");
+ }
+ }
+ });
+ String testPermString = new TestPermission().toString();
+ harness.check(!pd.toString().contains(testPermString),
+ "Policy permissions should not be visible");
+ }
+
+ private static class TestPermission extends Permission
+ {
+ public TestPermission()
+ {
+ super("test");
+ }
+
+ public String getActions()
+ {
+ return "test";
+ }
+
+ public int hashCode()
+ {
+ return "test".hashCode();
+ }
+
+ public boolean equals(Object other)
+ {
+ if (other == null)
+ return false;
+ if (other == this)
+ return true;
+ if (other.getClass().equals(getClass()))
+ return true;
+ return false;
+ }
+
+ public boolean implies(Permission permission)
+ {
+ if (permission instanceof TestPermission)
+ return true;
+ return false;
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/java/security/Policy/setPolicy.java b/gnu/testlet/java/security/Policy/setPolicy.java
new file mode 100644
index 00000000..c04871d4
--- /dev/null
+++ b/gnu/testlet/java/security/Policy/setPolicy.java
@@ -0,0 +1,73 @@
+// Copyright (C) 2010 Red Hat, Inc.
+// Written by Andrew John Hughes <ahughes@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.security.Policy;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.AllPermission;
+import java.security.Policy;
+import java.security.Permission;
+import java.security.ProtectionDomain;
+
+/**
+ * Tests whether the default SecurityManager implementation
+ * actually uses the policy set by setPolicy.
+ */
+public class setPolicy implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestSecurityManager sm = new TestSecurityManager();
+ sm.install();
+ sm.checkRead("/tmp");
+ harness.check(sm.isCalled(), "Policy was checked");
+ }
+
+ private class TestSecurityManager extends SecurityManager
+ {
+
+ private boolean called = false;
+
+ public void install()
+ {
+ Policy.setPolicy(new Policy()
+ {
+ public boolean implies(ProtectionDomain domain, Permission permission)
+ {
+ called = true;
+ return true;
+ }
+ });
+ System.setSecurityManager(this);
+ }
+
+ public boolean isCalled()
+ {
+ return called;
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/security/ProtectionDomain/CVS/Entries b/gnu/testlet/java/security/ProtectionDomain/CVS/Entries
new file mode 100644
index 00000000..ba8f91bc
--- /dev/null
+++ b/gnu/testlet/java/security/ProtectionDomain/CVS/Entries
@@ -0,0 +1,3 @@
+/Implies.java/1.1/Sat Dec 25 01:10:51 2010//
+/Security.java/1.1/Wed Nov 24 18:54:16 2010//
+D
diff --git a/gnu/testlet/java/security/ProtectionDomain/CVS/Repository b/gnu/testlet/java/security/ProtectionDomain/CVS/Repository
new file mode 100644
index 00000000..05a29ae5
--- /dev/null
+++ b/gnu/testlet/java/security/ProtectionDomain/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/ProtectionDomain
diff --git a/gnu/testlet/java/security/ProtectionDomain/CVS/Root b/gnu/testlet/java/security/ProtectionDomain/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/ProtectionDomain/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/ProtectionDomain/Implies.java b/gnu/testlet/java/security/ProtectionDomain/Implies.java
new file mode 100644
index 00000000..add1c60e
--- /dev/null
+++ b/gnu/testlet/java/security/ProtectionDomain/Implies.java
@@ -0,0 +1,73 @@
+// Copyright (C) 2010 Red Hat, Inc.
+// Written by Andrew John Hughes <ahughes@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.security.ProtectionDomain;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.AllPermission;
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.Permissions;
+import java.security.PermissionCollection;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.SecurityPermission;
+
+/**
+ * Tests whether Policy.implies(Permission) is called
+ * when the domain has AllPermission as one of its permissions.
+ */
+public class Implies implements Testlet
+{
+
+ private boolean called = false;
+
+ public void test(TestHarness harness)
+ {
+ Policy.setPolicy(new Policy()
+ {
+ public boolean implies(ProtectionDomain domain,
+ Permission perm)
+ {
+ if (perm.getName().equals("TestPermission"))
+ called = true;
+ return true;
+ }
+ public void refresh() {}
+ public PermissionCollection getPermissions(CodeSource codesource)
+ {
+ return null;
+ }
+ });
+
+ System.setSecurityManager(new SecurityManager());
+ PermissionCollection coll = new Permissions();
+ coll.add(new AllPermission());
+ ProtectionDomain pd = new ProtectionDomain(null, coll,
+ Implies.class.getClassLoader(), null);
+ pd.implies(new SecurityPermission("TestPermission"));
+ harness.check(!called, "Policy was not checked due to AllPermission");
+ }
+
+}
diff --git a/gnu/testlet/java/security/ProtectionDomain/Security.java b/gnu/testlet/java/security/ProtectionDomain/Security.java
new file mode 100644
index 00000000..10e5de98
--- /dev/null
+++ b/gnu/testlet/java/security/ProtectionDomain/Security.java
@@ -0,0 +1,79 @@
+// Copyright (C) 2006, 2007, 2010 Red Hat, Inc.
+// Original written by Gary Benson <gbenson@redhat.com>
+// Adapted for ProtectionDomain by Andrew John Hughes <ahughes@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.security.ProtectionDomain;
+
+import java.net.URL;
+
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.ProtectionDomain;
+import java.security.SecurityPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class Security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+
+ Permission[] noPerms = new Permission[] {};
+ Permission[] gpPerms =
+ new Permission[] { new SecurityPermission("getPolicy") } ;
+
+ String debug = System.getProperty("java.security.debug");
+ ProtectionDomain pd = new ProtectionDomain(null, null, null, null);
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ harness.checkPoint("toString");
+ try {
+ if (debug != null &&
+ (debug.contains("domain") || debug.contains("all")))
+ sm.prepareChecks(noPerms);
+ else
+ sm.prepareChecks(gpPerms);
+ harness.debug(pd.toString());
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/security/Provider/CVS/Entries b/gnu/testlet/java/security/Provider/CVS/Entries
new file mode 100644
index 00000000..8e73182f
--- /dev/null
+++ b/gnu/testlet/java/security/Provider/CVS/Entries
@@ -0,0 +1,2 @@
+/NameVersionInfo.java/1.2/Thu Jun 3 14:31:13 2004//
+D
diff --git a/gnu/testlet/java/security/Provider/CVS/Repository b/gnu/testlet/java/security/Provider/CVS/Repository
new file mode 100644
index 00000000..a14e74b3
--- /dev/null
+++ b/gnu/testlet/java/security/Provider/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/Provider
diff --git a/gnu/testlet/java/security/Provider/CVS/Root b/gnu/testlet/java/security/Provider/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/Provider/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/Provider/NameVersionInfo.java b/gnu/testlet/java/security/Provider/NameVersionInfo.java
new file mode 100644
index 00000000..4e05b057
--- /dev/null
+++ b/gnu/testlet/java/security/Provider/NameVersionInfo.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.Provider;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Provider;
+
+public class NameVersionInfo extends Provider implements Testlet
+{
+ static final String NAME = "Mauve-Test-Provider";
+ static final double VERSION = 3.14;
+ static final String INFO = "Mauve Info-Test";
+
+ public NameVersionInfo()
+ {
+ super(NAME, VERSION, INFO);
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.check(this.getName(), NAME);
+ harness.check(this.getVersion(), VERSION);
+ harness.check(this.getInfo(), INFO);
+ }
+}
+
diff --git a/gnu/testlet/java/security/SecureRandom/CVS/Entries b/gnu/testlet/java/security/SecureRandom/CVS/Entries
new file mode 100644
index 00000000..e85a885a
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/CVS/Entries
@@ -0,0 +1,5 @@
+/Instance.java/1.1/Thu Dec 12 16:22:16 2002//
+/MauveSecureRandom.java/1.1/Thu Dec 12 16:22:16 2002//
+/SHA1PRNG.java/1.1/Sun Feb 9 18:21:48 2003//
+/TestOfPR23899.java/1.1/Wed Aug 2 09:43:26 2006//
+D
diff --git a/gnu/testlet/java/security/SecureRandom/CVS/Repository b/gnu/testlet/java/security/SecureRandom/CVS/Repository
new file mode 100644
index 00000000..4792d631
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/SecureRandom
diff --git a/gnu/testlet/java/security/SecureRandom/CVS/Root b/gnu/testlet/java/security/SecureRandom/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/SecureRandom/Instance.java b/gnu/testlet/java/security/SecureRandom/Instance.java
new file mode 100644
index 00000000..d958ab0c
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/Instance.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+//
+// Uses: MauveSecureRandom
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.SecureRandom;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Security;
+import java.security.Provider;
+import java.security.SecureRandom;
+import java.security.GeneralSecurityException;
+
+public class Instance extends Provider
+ implements Testlet
+{
+ static final String NAME = "Mauve-Test-Provider-SecureRandom";
+ static final double VERSION = 3.14;
+ static final String INFO = "Mauve Info-Test implements MauveSecureRandom";
+
+ TestHarness harness;
+
+ public Instance()
+ {
+ super(NAME, VERSION, INFO);
+
+ put("SecureRandom.MauveSecureRandom",
+ "gnu.testlet.java.security.SecureRandom.MauveSecureRandom");
+ put("Alg.Alias.SecureRandom.MauveAlias", "MauveSecureRandom");
+ }
+
+ void checkSecureRandom(String name)
+ {
+ checkSecureRandom(name, null);
+ }
+
+ void checkSecureRandom(String name, String provider)
+ {
+ String checkPoint = name + (provider == null ? "" : " " + provider);
+ harness.checkPoint(checkPoint);
+
+ SecureRandom sr;
+ try
+ {
+ if (provider == null)
+ sr = SecureRandom.getInstance(name);
+ else
+ sr = SecureRandom.getInstance(name, provider);
+ }
+ catch (GeneralSecurityException gse)
+ {
+ harness.fail(checkPoint + " instance caught " + gse);
+ return;
+ }
+
+ // Just make sure we got the correct Signature
+ harness.check(sr.getProvider(), this);
+
+ // Do some of our dummy operations
+ byte[] seed = new byte[1];
+ seed[0] = 42;
+ sr.setSeed(seed);
+ byte[] random = new byte[1];
+ sr.nextBytes(random);
+ harness.check(random[0], (byte)42);
+ }
+
+ public void test (TestHarness h)
+ {
+ this.harness = h;
+
+ // Without provider
+ byte[] seed = new byte[1];
+ seed[0] = 42;
+ SecureRandom sr = new SecureRandom();
+ harness.check(sr != null);
+ sr = new SecureRandom(seed);
+ harness.check(sr != null);
+
+ // With our own provider
+ Security.addProvider(this);
+ sr = new SecureRandom();
+ harness.check(sr != null);
+ sr = new SecureRandom(seed);
+ harness.check(sr != null);
+
+ checkSecureRandom("MauveSecureRandom");
+ checkSecureRandom("MAUVESecurerandom");
+ checkSecureRandom("MauveAlias");
+ checkSecureRandom("MAUVEALIAS");
+
+ checkSecureRandom("MauveSecureRandom", NAME);
+ checkSecureRandom("MAUVESECURERANDOM", NAME);
+ checkSecureRandom("MauveAlias", NAME);
+ checkSecureRandom("MAUVEALIAS", NAME);
+ }
+}
+
diff --git a/gnu/testlet/java/security/SecureRandom/MauveSecureRandom.java b/gnu/testlet/java/security/SecureRandom/MauveSecureRandom.java
new file mode 100644
index 00000000..efa2285d
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/MauveSecureRandom.java
@@ -0,0 +1,47 @@
+// Tags: not-a-test
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.SecureRandom;
+
+import java.security.SecureRandomSpi;
+
+// Dummy SecureRandom provider class that just returns the seed bytes.
+public class MauveSecureRandom extends SecureRandomSpi
+{
+ private byte[] seed;
+
+ protected void engineSetSeed(byte[] seed)
+ {
+ this.seed = seed;
+ }
+
+ public void engineNextBytes(byte[] random)
+ {
+ for (int i=0; i < random.length; i++)
+ random[i] = seed[i];
+ }
+
+ public byte[] engineGenerateSeed(int n)
+ {
+ return seed;
+ }
+}
diff --git a/gnu/testlet/java/security/SecureRandom/SHA1PRNG.java b/gnu/testlet/java/security/SecureRandom/SHA1PRNG.java
new file mode 100644
index 00000000..cef0b0ba
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/SHA1PRNG.java
@@ -0,0 +1,111 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+
+// 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.java.security.SecureRandom;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.SecureRandom;
+import java.security.NoSuchAlgorithmException;
+//import java.security.NoSuchProviderException;
+
+public class SHA1PRNG implements Testlet
+{
+ private TestHarness harness = null;
+ boolean available = false;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ this.harness.checkPoint ("SHA1PRNG");
+ instanceTest ();
+ setSeeedTest ();
+ }
+
+ // .../docs/guide/security/HowToImplAProvider.html lists SHA1PRNG as a MUST
+ private void instanceTest ()
+ {
+ available = (getInstance () != null);
+ harness.check (available, "found implementation");
+ }
+
+ // SecureRandom javadoc states:
+ //
+ // The SecureRandom implementation attempts to completely randomize the
+ // internal state of the generator itself unless the caller follows the call
+ // to a getInstance method with a call to the setSeed method:
+ //
+ // SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+ // random.setSeed(seed);
+ //
+ // After the caller obtains the SecureRandom object from the getInstance call,
+ // it can call nextBytes to generate random bytes:
+ private void setSeeedTest ()
+ {
+ if (!available)
+ harness.fail ("no implementation found");
+ else
+ {
+ long a, b;
+ SecureRandom prng1 = getInstance ();
+ prng1.setSeed (98243647L);
+ SecureRandom prng2 = getInstance ();
+ prng2.setSeed (98243647L);
+
+ a = prng1.nextLong();
+ b = prng2.nextLong();
+ harness.check (a == b,
+ "instances generate same bytes when similarly seeded");
+
+ // if true in the beginning, it should be so forever
+ for (int i = 0; i < 1000; i++)
+ {
+ prng1.nextLong();
+ prng2.nextLong();
+ }
+
+ a = prng1.nextLong();
+ b = prng2.nextLong();
+ harness.check (a == b);
+ }
+ }
+
+ private SecureRandom getInstance ()
+ {
+ SecureRandom result = null;
+ try
+ {
+ result = SecureRandom.getInstance ("SHA1PRNG");
+// result = SecureRandom.getInstance ("SHA1PRNG", "GNU");
+ }
+// catch (NoSuchProviderException x)
+// {
+// harness.debug (x);
+// }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.debug (x);
+ }
+ return result;
+ }
+}
+
diff --git a/gnu/testlet/java/security/SecureRandom/TestOfPR23899.java b/gnu/testlet/java/security/SecureRandom/TestOfPR23899.java
new file mode 100644
index 00000000..66e34a6f
--- /dev/null
+++ b/gnu/testlet/java/security/SecureRandom/TestOfPR23899.java
@@ -0,0 +1,68 @@
+/* TestOfPR23899.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.security.SecureRandom;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.SecureRandom;
+
+/**
+ * Regression test for PR Classpath/23899
+ */
+public class TestOfPR23899
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("TestOfPR23899");
+ SecureRandom prng1, prng2;
+ int ra, rb;
+ try
+ {
+ prng1 = SecureRandom.getInstance("SHA1PRNG");
+ prng2 = SecureRandom.getInstance("SHA1PRNG");
+ ra = prng1.nextInt();
+ rb = prng2.nextInt();
+ harness.check(ra != rb,
+ "Similar SecureRandoms MUST NOT generate same bytes when "
+ + "not explicitly seeded");
+
+ prng1 = SecureRandom.getInstance("SHA1PRNG");
+ prng1.setSeed(98243647L);
+ prng2 = SecureRandom.getInstance("SHA1PRNG");
+ prng2.setSeed(98243647L);
+ ra = prng1.nextInt();
+ rb = prng2.nextInt();
+ harness.check(ra == rb,
+ "Similar SecureRandoms MUST generate same bytes when "
+ + "similarly seeded");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("TestOfPR23899: " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/Security/CVS/Entries b/gnu/testlet/java/security/Security/CVS/Entries
new file mode 100644
index 00000000..5d89982d
--- /dev/null
+++ b/gnu/testlet/java/security/Security/CVS/Entries
@@ -0,0 +1,5 @@
+/getAlgorithms.java/1.3/Mon Apr 7 15:42:11 2003//
+/getProviders.java/1.2/Tue Jan 3 09:24:39 2006//
+/property.java/1.3/Tue Dec 13 10:49:57 2005//
+/provider.java/1.2/Sun Oct 13 21:35:17 2002//
+D
diff --git a/gnu/testlet/java/security/Security/CVS/Repository b/gnu/testlet/java/security/Security/CVS/Repository
new file mode 100644
index 00000000..c63a0ea9
--- /dev/null
+++ b/gnu/testlet/java/security/Security/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/Security
diff --git a/gnu/testlet/java/security/Security/CVS/Root b/gnu/testlet/java/security/Security/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/Security/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/Security/getAlgorithms.java b/gnu/testlet/java/security/Security/getAlgorithms.java
new file mode 100644
index 00000000..575ea0e9
--- /dev/null
+++ b/gnu/testlet/java/security/Security/getAlgorithms.java
@@ -0,0 +1,99 @@
+// $Id: getAlgorithms.java,v 1.3 2003/04/07 15:42:11 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+
+package gnu.testlet.java.security.Security;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.Provider;
+import java.security.Security;
+import java.util.Set;
+import java.util.Iterator;
+
+/**
+ * Test of <code>getAlgorithms(String)</code> method in {@link Security}.
+ *
+ * @version $Revision: 1.3 $
+ * @see Security#getAlgorithms(String)
+ */
+public class getAlgorithms extends Provider implements Testlet
+{
+ public getAlgorithms()
+ {
+ super("getAlgorithms", 1.0, "");
+
+ put("Coffee.Foo", "whatever");
+
+ put("Tea.Bar", "whatever");
+ put("Tea.Bar ImplementedIn", "Vapourware");
+ put("Tea.Bar MinCapacity", "100");
+
+ put("Tea.Baz", "whatever");
+ put("Tea.Baz ImplementedIn", "Vapourware");
+ put("Tea.Baz MinCapacity", "100");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("getAlgorithms");
+
+ String signature, key;
+ Set set = null;
+
+ Security.addProvider(this);
+
+ signature = "getAlgorithms(\"foo\")";
+ set = Security.getAlgorithms("foo");
+ harness.check(set != null && set.size() == 0, signature);
+
+ signature = "getAlgorithms(\"Coffee\")";
+ set = Security.getAlgorithms("Coffee");
+ key = "Foo";
+ if (set != null && set.size() >= 1)
+ harness.check(containsKey(set, key), signature+": "+key);
+ else
+ harness.check(false, signature + ": set.size() < 1");
+
+ signature = "getAlgorithms(\"Tea\")";
+ set = Security.getAlgorithms("Tea");
+ if (set != null && set.size() >= 2)
+ {
+ key = "Bar";
+ harness.check(containsKey(set, key), signature+": "+key);
+ key = "Baz";
+ harness.check(containsKey(set, key), signature+": "+key);
+ }
+ else
+ harness.check(false, signature + ": set.size() < 2");
+ }
+
+ private static final boolean containsKey(Set set, String key) {
+ boolean result = false;
+ for (Iterator it = set.iterator(); it.hasNext(); )
+ {
+ result = key.trim().equalsIgnoreCase(String.valueOf(it.next()).trim());
+ if (result)
+ break;
+ }
+ return result;
+ }
+}
diff --git a/gnu/testlet/java/security/Security/getProviders.java b/gnu/testlet/java/security/Security/getProviders.java
new file mode 100644
index 00000000..de2dae21
--- /dev/null
+++ b/gnu/testlet/java/security/Security/getProviders.java
@@ -0,0 +1,342 @@
+// $Id: getProviders.java,v 1.2 2006/01/03 09:24:39 raif Exp $
+//
+// Copyright (C) 2003 Free Software Foundation, Inc.
+//
+// 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: JDK1.3
+
+package gnu.testlet.java.security.Security;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.security.Security;
+import java.security.Provider;
+import java.security.InvalidParameterException;
+
+/**
+ * Test of <code>getProviders(String)</code> and <code>getProviders(Map)
+ * methods in {@link java.security.Security}.
+ *
+ * @version $Revision: 1.2 $
+ * @see java.security.Security#getProviders(String)
+ * @see java.security.Security#getProviders(java.util.Map)
+ */
+public class getProviders implements Testlet
+{
+ Provider tom = new Tom();
+ Provider dick = new Dick();
+ Provider harry = new Harry();
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("getProviders(String)");
+
+ testNoProviders(harness);
+ test1Provider(harness);
+ test2Providers(harness);
+ test3Providers(harness);
+ }
+
+ private void testNoProviders(TestHarness harness)
+ {
+ String filter = "NoService.NoAlgorithm";
+ // try with dummy filter and no providers installed
+ try
+ {
+ harness.check(Security.getProviders(filter), null);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testNoProviders.1: "+String.valueOf(x));
+ }
+ }
+
+ private void test1Provider(TestHarness harness)
+ {
+ Security.addProvider(tom);
+
+ String signature = "Security.getProvider(\"tom\")";
+ try
+ {
+ Provider sameProvider = Security.getProvider(" Tom ");
+ harness.check(sameProvider != null, signature);
+ }
+ catch (Throwable x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ String filter = "NoService.NoAlgorithm";
+ // try dummy filter with one known provider
+ try
+ {
+ harness.check(Security.getProviders(filter), null);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.2: "+String.valueOf(x));
+ }
+
+ Provider[] providers;
+ // try real filter with one known provider
+ filter = "CoffeeMaker.Foo";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.3: "+String.valueOf(x));
+ }
+
+ // try real filter (different case) with one known provider
+ filter = "CoffeeMaker.FOO";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.4: "+String.valueOf(x));
+ }
+
+ // try incorrect (syntax) filter with one known provider
+ filter = "CoffeeMakerFoo";
+ try
+ {
+ providers = Security.getProviders(filter);
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ }
+ catch (InvalidParameterException x) // expected
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.5: "+String.valueOf(x));
+ }
+
+ // try filter alias (1 indirection) with one known provider
+ filter = "CoffeeMaker.Bar";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.6: "+String.valueOf(x));
+ }
+
+ // try filter alias (2 indirections) with one known provider
+ filter = "CoffeeMaker.WHAT";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.7: "+String.valueOf(x));
+ }
+
+ // try real filter (incl. attr only) with one known provider
+ filter = "CoffeeMaker.FOO ImplementedIn:vapourware";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.8: "+String.valueOf(x));
+ }
+
+ // try real filter (incl. attr+val) with one known provider
+ filter = "CoffeeMaker.FOO minCapacity:150";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 1)
+ harness.fail("Tom : getProviders(\""+filter+"\")");
+ else
+ harness.check(providers[0], tom);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test1Provider.9: "+String.valueOf(x));
+ }
+ }
+
+ private void test2Providers(TestHarness harness)
+ {
+ Security.addProvider(dick);
+
+ Provider[] providers;
+ String filter = "NoService.NoAlgorithm";
+
+ // try real filter (incl. attr only) with two known providers
+ filter = "CoffeeMaker.FOO ImplementedIn:vapourware";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 2
+ || (providers[0] != tom && providers[1] != dick))
+ harness.fail("Tom, Dick : getProviders(\""+filter+"\")");
+ else
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test2Providers.1: "+String.valueOf(x));
+ }
+
+ // try real filter (incl. attr+val) with two known providers
+ filter = "CoffeeMaker.FOO minCapacity:150";
+ try
+ {
+ providers = Security.getProviders(filter);
+ if (providers == null || providers.length != 2
+ || (providers[0] != tom && providers[1] != dick))
+ harness.fail("Tom, Dick : getProviders(\""+filter+"\")");
+ else
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test2Providers.2: "+String.valueOf(x));
+ }
+ }
+
+ private void test3Providers(TestHarness harness)
+ {
+ Security.addProvider(harry);
+
+ Provider[] p;
+ String filter = "NoService.NoAlgorithm";
+
+ // try real filter (incl. attr only) with three known providers
+ filter = "CoffeeMaker.FOO ImplementedIn:vapourware";
+ try
+ {
+ p = Security.getProviders(filter);
+ if (p == null || p.length != 3 ||
+ (p[0] != tom && p[1] != dick && p[2] != harry))
+ harness.fail("Tom, Dick, Harry : getProviders(\""+filter+"\")");
+ else
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test3Providers.1: "+String.valueOf(x));
+ }
+
+ // try real filter (incl. attr+val) with three known providers
+ filter = "CoffeeMaker.FOO minCapacity:150";
+ try
+ {
+ p = Security.getProviders(filter);
+ if (p == null || p.length != 3 ||
+ (p[0] != tom && p[1] != dick && p[2] != harry))
+ harness.fail("Tom, Dick, Harry : getProviders(\""+filter+"\")");
+ else
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("test3Providers.2: "+String.valueOf(x));
+ }
+ }
+
+ // Inner class(es)
+ // ==========================================================================
+
+ class Tom extends Provider
+ {
+ Tom()
+ {
+ super("Tom", 1.0, "");
+
+ put("CoffeeMaker.Foo", "acme.crypto.FooSpi");
+ put("CoffeeMaker.Foo ImplementedIn", "Vapourware");
+ put("CoffeeMaker.Foo MinCapacity", "100");
+ put("Alg.Alias.CoffeeMaker.bar", "fOO");
+ put("Alg.Alias.CoffeeMaker.what", "bar");
+ }
+ }
+
+ class Dick extends Provider
+ {
+ Dick()
+ {
+ super("Dick", 2.0, "");
+
+ put("CoffeeMaker.Foo", "acme.crypto.FooSpi");
+ put("CoffeeMaker.Foo ImplementedIn", "Vapourware");
+ put("CoffeeMaker.Foo MinCapacity", "120");
+ put("Alg.Alias.CoffeeMaker.bar", "fOO");
+ put("Alg.Alias.CoffeeMaker.what", "bar");
+ }
+ }
+
+ class Harry extends Provider
+ {
+ Harry()
+ {
+ super("Harry", 3.0, "");
+
+ put("CoffeeMaker.Foo", "acme.crypto.FooSpi");
+ put("CoffeeMaker.Foo ImplementedIn", "Vapourware");
+ put("CoffeeMaker.Foo MinCapacity", "140");
+ put("Alg.Alias.CoffeeMaker.bar", "fOO");
+ put("Alg.Alias.CoffeeMaker.what", "bar");
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/Security/property.java b/gnu/testlet/java/security/Security/property.java
new file mode 100644
index 00000000..0ce23455
--- /dev/null
+++ b/gnu/testlet/java/security/Security/property.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.Security;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Security;
+
+public class property implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Nothing much specified for this method...
+
+ String key = "Mauve-Key-test-prop";
+ String value = key + "-value";
+
+ harness.check(Security.getProperty(key), null);
+ Security.setProperty(key, value);
+ harness.check(Security.getProperty(key), value);
+ Security.setProperty(key, null);
+ harness.check(Security.getProperty(key), null);
+ }
+}
+
diff --git a/gnu/testlet/java/security/Security/provider.java b/gnu/testlet/java/security/Security/provider.java
new file mode 100644
index 00000000..7a97a75c
--- /dev/null
+++ b/gnu/testlet/java/security/Security/provider.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.Security;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Security;
+import java.security.Provider;
+
+public class provider extends Provider implements Testlet
+{
+ static final String NAME = "Mauve-Test-Provider";
+ static final double VERSION = 3.14;
+ static final String INFO = "Mauve Info-Test";
+
+ public provider()
+ {
+ super(NAME, VERSION, INFO);
+ }
+
+ provider(int i)
+ {
+ super(NAME + i, VERSION, INFO);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Backup original providers.
+ Provider[] orig_providers = Security.getProviders();
+ harness.check(orig_providers != null);
+
+ // Add a new provider.
+ Provider p1 = new provider(1);
+ int pos1 = Security.addProvider(p1);
+ harness.check(pos1 != -1);
+
+ // Is it inserted?
+ Provider[] new_providers = Security.getProviders();
+ harness.check(orig_providers.length + 1, new_providers.length);
+
+ // In the correct place?
+ harness.check(new_providers[pos1-1], p1);
+
+ // Add another, should be after 1
+ Provider p2 = new provider(2);
+ int pos2 = Security.addProvider(p2);
+ harness.check(pos2-1, pos1);
+
+ // All in the correct place?
+ new_providers = Security.getProviders();
+ harness.check(orig_providers.length + 2, new_providers.length);
+
+ harness.check(new_providers[pos1-1], p1);
+ harness.check(new_providers[pos2-1], p2);
+
+ // Add new one in front, note 1 based.
+ Provider p0 = new provider(0);
+ int pos0 = Security.insertProviderAt(p0, 1);
+ harness.check(pos0 != -1);
+
+ // Cannot check if pos was respected because that is not guaranteed.
+
+ // All in the correct place?
+ new_providers = Security.getProviders();
+ harness.check(orig_providers.length + 3, new_providers.length);
+ harness.check(new_providers[pos0-1], p0);
+
+ // Are they all there?
+ harness.check(Security.getProvider(p0.getName()), p0);
+ harness.check(Security.getProvider(p1.getName()), p1);
+ harness.check(Security.getProvider(p2.getName()), p2);
+
+ // No Unknown ones
+ harness.check(Security.getProvider("UNKNOWN " + NAME + "42"), null);
+
+ // Re-adding providers will fail
+ harness.check(Security.addProvider(p1), -1);
+ harness.check(Security.addProvider(p2), -1);
+
+ harness.check(Security.insertProviderAt(p1,1), -1);
+ harness.check(Security.insertProviderAt(p2,2), -1);
+
+ // You may remove as much as you want
+ Security.removeProvider(p0.getName());
+ Security.removeProvider(p2.getName());
+ Security.removeProvider("UNKNOWN " + NAME + "42");
+ Security.removeProvider(p2.getName());
+ Security.removeProvider(p0.getName());
+
+ // Gone?
+ harness.check(Security.getProvider(p0.getName()), null);
+ harness.check(Security.getProvider(p2.getName()), null);
+
+ // Provider 1 still at original place?
+ harness.check(Security.getProvider(p1.getName()), p1);
+ new_providers = Security.getProviders();
+ harness.check(new_providers[pos1-1], p1);
+
+ // Done
+ Security.removeProvider(p1.getName());
+ new_providers = Security.getProviders();
+ harness.check(new_providers.length, orig_providers.length);
+ }
+}
+
diff --git a/gnu/testlet/java/security/Signature/CVS/Entries b/gnu/testlet/java/security/Signature/CVS/Entries
new file mode 100644
index 00000000..1b5f4bcd
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/CVS/Entries
@@ -0,0 +1,4 @@
+/Instance.java/1.1/Sun Oct 13 21:10:05 2002//
+/MauveSignature.java/1.1/Sun Oct 13 21:10:05 2002//
+/getInstance14.java/1.2/Mon Apr 7 15:42:11 2003//
+D
diff --git a/gnu/testlet/java/security/Signature/CVS/Repository b/gnu/testlet/java/security/Signature/CVS/Repository
new file mode 100644
index 00000000..3112943b
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/Signature
diff --git a/gnu/testlet/java/security/Signature/CVS/Root b/gnu/testlet/java/security/Signature/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/Signature/Instance.java b/gnu/testlet/java/security/Signature/Instance.java
new file mode 100644
index 00000000..b3fec710
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/Instance.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.2
+//
+// Uses: MauveSignature
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.Signature;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.security.Security;
+import java.security.Provider;
+import java.security.Signature;
+import java.security.PublicKey;
+import java.security.PrivateKey;
+import java.security.GeneralSecurityException;
+
+public class Instance extends Provider
+ implements Testlet
+{
+ static final String NAME = "Mauve-Test-Provider-Signature";
+ static final double VERSION = 3.14;
+ static final String INFO = "Mauve Info-Test implements MauveSignature";
+
+ TestHarness harness;
+
+ public Instance()
+ {
+ super(NAME, VERSION, INFO);
+
+ put("Signature.MauveSignature",
+ "gnu.testlet.java.security.Signature.MauveSignature");
+ put("Alg.Alias.Signature.MauveAlias", "MauveSignature");
+ }
+
+ void checkSignature(String name)
+ {
+ checkSignature(name, null);
+ }
+
+ void checkSignature(String name, String provider)
+ {
+ String checkPoint = name + (provider == null ? "" : " " + provider);
+ harness.checkPoint(checkPoint);
+
+ Signature s;
+ try
+ {
+ if (provider == null)
+ s = Signature.getInstance(name);
+ else
+ s = Signature.getInstance(name, provider);
+ }
+ catch (GeneralSecurityException gse)
+ {
+ harness.fail(checkPoint + " instance caught " + gse);
+ return;
+ }
+
+ // Just make sure we got the correct Signature
+ harness.check(s.getAlgorithm(), name);
+ harness.check(s.getProvider(), this);
+
+ // Do some of our dummy operations
+ try
+ {
+ s.initSign((PrivateKey)null);
+ s.update((byte)6);
+ byte[] sign = s.sign();
+ harness.check(sign[0], (byte)6);
+
+ s.initVerify((PublicKey)null);
+ byte[] message = new byte[] {0, 1, 2, 3};
+ s.update(message);
+ harness.check(s.verify(message));
+ }
+ catch (GeneralSecurityException gse)
+ {
+ harness.fail(checkPoint + " dummy caught " + gse);
+ }
+ }
+
+ public void test (TestHarness h)
+ {
+ this.harness = h;
+ Security.addProvider(this);
+
+ checkSignature("MauveSignature");
+ checkSignature("MAUVESignature");
+ checkSignature("MauveAlias");
+ checkSignature("MAUVEALIAS");
+
+ checkSignature("MauveSignature", NAME);
+ checkSignature("MAUVESIGNATURE", NAME);
+ checkSignature("MauveAlias", NAME);
+ checkSignature("MAUVEALIAS", NAME);
+ }
+}
+
diff --git a/gnu/testlet/java/security/Signature/MauveSignature.java b/gnu/testlet/java/security/Signature/MauveSignature.java
new file mode 100644
index 00000000..6d1a23c2
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/MauveSignature.java
@@ -0,0 +1,79 @@
+// Tags: not-a-test
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Written by Mark Wielaard (mark@klomp.org)
+
+// 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.java.security.Signature;
+
+import java.security.SignatureSpi;
+import java.security.PublicKey;
+import java.security.PrivateKey;
+import java.security.SignatureException;
+import java.security.InvalidParameterException;
+import java.security.InvalidKeyException;
+
+// Dummy signature that just contains what was put in.
+// And successfully verifies if the signature has a length > 2
+public class MauveSignature extends SignatureSpi
+{
+ private byte[] signature;
+
+ public Object engineGetParameter(String p)
+ throws InvalidParameterException
+ {
+ throw new InvalidParameterException();
+ }
+
+ public void engineSetParameter(String p, Object o)
+ throws InvalidParameterException
+ {
+ throw new InvalidParameterException();
+ }
+
+ public boolean engineVerify(byte[] sig) throws SignatureException
+ {
+ return sig.length > 2;
+ }
+
+ public byte[] engineSign() throws SignatureException
+ {
+ return signature;
+ }
+
+ public void engineUpdate(byte b)
+ {
+ signature = new byte[1];
+ signature[0] = b;
+ }
+
+ public void engineUpdate(byte[] bs, int off, int len)
+ {
+ signature = new byte[len];
+ System.arraycopy(bs, off, signature, 0, len);
+ }
+
+ public void engineInitSign(PrivateKey privateKey) throws InvalidKeyException
+ {
+ }
+
+ public void engineInitVerify(PublicKey publicKey) throws InvalidKeyException
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/Signature/getInstance14.java b/gnu/testlet/java/security/Signature/getInstance14.java
new file mode 100644
index 00000000..088ad744
--- /dev/null
+++ b/gnu/testlet/java/security/Signature/getInstance14.java
@@ -0,0 +1,104 @@
+// $Id: getInstance14.java,v 1.2 2003/04/07 15:42:11 crawley Exp $
+//
+// Copyright (C) 2003, Free Software Foundation, Inc.
+//
+// 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: JDK1.4
+// Uses: MauveSignature
+
+package gnu.testlet.java.security.Signature;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.security.Signature;
+import java.security.Provider;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+
+public class getInstance14 extends Provider implements Testlet
+{
+ public getInstance14()
+ {
+ super("self", 1.0, "");
+
+ put("Signature.foo", "gnu.testlet.java.security.Signature.MauveSignature");
+ put("Alg.Alias.Signature.bar", "foo");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("KeyPairGenerator");
+
+ Signature spi;
+ Provider provider = new getInstance14();
+ Security.addProvider(provider);
+ String signature;
+
+ spi = null;
+ signature = "getInstance(\"foo\", provider)";
+ try
+ {
+ spi = Signature.getInstance("foo", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"FOO\", provider)";
+ try
+ {
+ spi = Signature.getInstance("FOO", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"bar\", provider)";
+ try
+ {
+ spi = Signature.getInstance("bar", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+
+ spi = null;
+ signature = "getInstance(\"BAR\", provider)";
+ try
+ {
+ spi = Signature.getInstance("BAR", provider);
+ harness.check(spi != null, signature);
+ }
+ catch (NoSuchAlgorithmException x)
+ {
+ harness.fail(signature);
+ harness.debug(x);
+ }
+ }
+}
diff --git a/gnu/testlet/java/security/cert/CVS/Entries b/gnu/testlet/java/security/cert/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/cert/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/cert/CVS/Entries.Log b/gnu/testlet/java/security/cert/CVS/Entries.Log
new file mode 100644
index 00000000..4538b9f5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/pkix////
diff --git a/gnu/testlet/java/security/cert/CVS/Repository b/gnu/testlet/java/security/cert/CVS/Repository
new file mode 100644
index 00000000..16250c05
--- /dev/null
+++ b/gnu/testlet/java/security/cert/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert
diff --git a/gnu/testlet/java/security/cert/CVS/Root b/gnu/testlet/java/security/cert/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/CVS/Entries b/gnu/testlet/java/security/cert/pkix/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/cert/pkix/CVS/Entries.Log b/gnu/testlet/java/security/cert/pkix/CVS/Entries.Log
new file mode 100644
index 00000000..6a551954
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/pkits////
diff --git a/gnu/testlet/java/security/cert/pkix/CVS/Repository b/gnu/testlet/java/security/cert/pkix/CVS/Repository
new file mode 100644
index 00000000..43a71735
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert/pkix
diff --git a/gnu/testlet/java/security/cert/pkix/CVS/Root b/gnu/testlet/java/security/cert/pkix/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_1.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_1.java
new file mode 100644
index 00000000..b31d3c37
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_1.java
@@ -0,0 +1,26 @@
+/* AllCertificatesAnyPolicyTest11_1.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/AllCertificatesanyPolicyTest11EE.crt data/certs/anyPolicyCACert.crt data/crls/anyPolicyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class AllCertificatesAnyPolicyTest11_1 extends BaseValidTest
+{
+ public AllCertificatesAnyPolicyTest11_1()
+ {
+ super (new String[] { "data/certs/AllCertificatesanyPolicyTest11EE.crt",
+ "data/certs/anyPolicyCACert.crt" },
+ new String[] { "data/crls/anyPolicyCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_2.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_2.java
new file mode 100644
index 00000000..e2d1d9bb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesAnyPolicyTest11_2.java
@@ -0,0 +1,28 @@
+/* AllCertificatesAnyPolicyTest11_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/AllCertificatesanyPolicyTest11EE.crt data/certs/anyPolicyCACert.crt data/crls/anyPolicyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesAnyPolicyTest11_2 extends BaseValidTest
+{
+ public AllCertificatesAnyPolicyTest11_2()
+ {
+ super (new String[] { "data/certs/AllCertificatesanyPolicyTest11EE.crt",
+ "data/certs/anyPolicyCACert.crt" },
+ new String[] { "data/crls/anyPolicyCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_1));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_1.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_1.java
new file mode 100644
index 00000000..f4d07ce0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_1.java
@@ -0,0 +1,26 @@
+/* AllCertificatesSamePoliciesTest10_1.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest10EE.crt data/certs/PoliciesP12CACert.crt data/crls/PoliciesP12CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class AllCertificatesSamePoliciesTest10_1 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest10_1()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest10EE.crt",
+ "data/certs/PoliciesP12CACert.crt" },
+ new String[] { "data/crls/PoliciesP12CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_2.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_2.java
new file mode 100644
index 00000000..26b01f25
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_2.java
@@ -0,0 +1,28 @@
+/* AllCertificatesSamePoliciesTest10_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest10EE.crt data/certs/PoliciesP12CACert.crt data/crls/PoliciesP12CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePoliciesTest10_2 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest10_2()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest10EE.crt",
+ "data/certs/PoliciesP12CACert.crt" },
+ new String[] { "data/crls/PoliciesP12CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_1));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_3.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_3.java
new file mode 100644
index 00000000..d1d0d551
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest10_3.java
@@ -0,0 +1,28 @@
+/* AllCertificatesSamePoliciesTest10_3.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest10EE.crt data/certs/PoliciesP12CACert.crt data/crls/PoliciesP12CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePoliciesTest10_3 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest10_3()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest10EE.crt",
+ "data/certs/PoliciesP12CACert.crt" },
+ new String[] { "data/crls/PoliciesP12CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_2));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_1.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_1.java
new file mode 100644
index 00000000..f960838a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_1.java
@@ -0,0 +1,28 @@
+/* AllCertificatesSamePoliciesTest13_1.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest13EE.crt data/certs/PoliciesP123CACert.crt data/crls/PoliciesP123CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePoliciesTest13_1 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest13_1()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest13EE.crt",
+ "data/certs/PoliciesP123CACert.crt" },
+ new String[] { "data/crls/PoliciesP123CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_1));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_2.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_2.java
new file mode 100644
index 00000000..84a7bb7a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_2.java
@@ -0,0 +1,28 @@
+/* AllCertificatesSamePoliciesTest13_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest13EE.crt data/certs/PoliciesP123CACert.crt data/crls/PoliciesP123CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePoliciesTest13_2 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest13_2()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest13EE.crt",
+ "data/certs/PoliciesP123CACert.crt" },
+ new String[] { "data/crls/PoliciesP123CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_2));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_3.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_3.java
new file mode 100644
index 00000000..4f8942ff
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePoliciesTest13_3.java
@@ -0,0 +1,28 @@
+/* AllCertificatesSamePoliciesTest13_3.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesSamePoliciesTest13EE.crt data/certs/PoliciesP123CACert.crt data/crls/PoliciesP123CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePoliciesTest13_3 extends BaseValidTest
+{
+ public AllCertificatesSamePoliciesTest13_3()
+ {
+ super (new String[] { "data/certs/AllCertificatesSamePoliciesTest13EE.crt",
+ "data/certs/PoliciesP123CACert.crt" },
+ new String[] { "data/crls/PoliciesP123CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_3));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_1.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_1.java
new file mode 100644
index 00000000..6261ed91
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_1.java
@@ -0,0 +1,27 @@
+/* AllCertificatesSamePolicyTest1_1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidCertificatePathTest1EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class AllCertificatesSamePolicyTest1_1 extends BaseValidTest
+{
+ public AllCertificatesSamePolicyTest1_1()
+ {
+ super (new String[] { "data/certs/ValidCertificatePathTest1EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_2.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_2.java
new file mode 100644
index 00000000..970b3803
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_2.java
@@ -0,0 +1,29 @@
+/* AllCertificatesSamePolicyTest1_2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidCertificatePathTest1EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePolicyTest1_2 extends BaseValidTest
+{
+ public AllCertificatesSamePolicyTest1_2()
+ {
+ super (new String[] { "data/certs/ValidCertificatePathTest1EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_1));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_3.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_3.java
new file mode 100644
index 00000000..5c301f54
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_3.java
@@ -0,0 +1,29 @@
+/* AllCertificatesSamePolicyTest1_3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/ValidCertificatePathTest1EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class AllCertificatesSamePolicyTest1_3 extends BaseInvalidTest
+{
+ public AllCertificatesSamePolicyTest1_3()
+ {
+ super (new String[] { "data/certs/ValidCertificatePathTest1EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_2));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_4.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_4.java
new file mode 100644
index 00000000..2a58529b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest1_4.java
@@ -0,0 +1,32 @@
+/* AllCertificatesSamePolicyTest1_4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidCertificatePathTest1EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.HashSet;
+
+public class AllCertificatesSamePolicyTest1_4 extends BaseValidTest
+{
+ public AllCertificatesSamePolicyTest1_4()
+ {
+ super (new String[] { "data/certs/ValidCertificatePathTest1EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ HashSet policies = new HashSet();
+ policies.add (NIST_TEST_POLICY_1);
+ policies.add (NIST_TEST_POLICY_2);
+ params.setInitialPolicies (policies);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_1.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_1.java
new file mode 100644
index 00000000..0913656c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_1.java
@@ -0,0 +1,26 @@
+/* AllCertificatesSamePolicyTest2_1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/AllCertificatesNoPoliciesTest2EE.crt data/certs/NoPoliciesCACert.crt data/crls/NoPoliciesCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class AllCertificatesSamePolicyTest2_1 extends BaseValidTest
+{
+ public AllCertificatesSamePolicyTest2_1()
+ {
+ super (new String[] { "data/certs/AllCertificatesNoPoliciesTest2EE.crt",
+ "data/certs/NoPoliciesCACert.crt" },
+ new String[] { "data/crls/NoPoliciesCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_2.java b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_2.java
new file mode 100644
index 00000000..97edd0d0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/AllCertificatesSamePolicyTest2_2.java
@@ -0,0 +1,27 @@
+/* AllCertificatesSamePolicyTest2_2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/AllCertificatesNoPoliciesTest2EE.crt data/certs/NoPoliciesCACert.crt data/crls/NoPoliciesCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class AllCertificatesSamePolicyTest2_2 extends BaseInvalidTest
+{
+ public AllCertificatesSamePolicyTest2_2()
+ {
+ super (new String[] { "data/certs/AllCertificatesNoPoliciesTest2EE.crt",
+ "data/certs/NoPoliciesCACert.crt" },
+ new String[] { "data/crls/NoPoliciesCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/BaseInvalidTest.java b/gnu/testlet/java/security/cert/pkix/pkits/BaseInvalidTest.java
new file mode 100644
index 00000000..060d4705
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/BaseInvalidTest.java
@@ -0,0 +1,115 @@
+/* BaseInvalidTest.java -- superclass of "invalid" tests.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: not-a-test
+// Uses: PKITS
+// Files: data/certs/TrustAnchorRootCertificate.crt data/crls/TrustAnchorRootCRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.*;
+import java.util.*;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public abstract class BaseInvalidTest extends PKITS implements Testlet
+{
+
+ // Fields.
+ // -------------------------------------------------------------------------
+
+ public static final String PROVIDER = System.getProperty("pkits.provider", "GNU");
+ public static final String TRUST_ANCHOR_CERT = "data/certs/TrustAnchorRootCertificate.crt";
+ public static final String TRUST_ANCHOR_CRL = "data/crls/TrustAnchorRootCRL.crl";
+
+ protected String[] certPath;
+ protected String[] crls;
+ protected String[] certs;
+
+ // Constructors.
+ // -------------------------------------------------------------------------
+
+ protected BaseInvalidTest(String[] certPath, String[] crls, String[] certs)
+ {
+ if (certPath == null || crls == null || certs == null)
+ throw new NullPointerException();
+ this.certPath = certPath;
+ this.crls = crls;
+ this.certs = certs;
+ }
+
+ protected BaseInvalidTest(String[] certPath, String[] crls)
+ {
+ this(certPath, crls, new String[0]);
+ }
+
+ // Instance method.
+ // -------------------------------------------------------------------------
+
+ public void test(TestHarness harness)
+ {
+ String testName = getClass().getName();
+ if (testName.lastIndexOf ('.') > 0)
+ testName = testName.substring (testName.lastIndexOf ('.') + 1);
+ harness.checkPoint(testName);
+ try
+ {
+ CertificateFactory factory = CertificateFactory.getInstance("X.509", PROVIDER);
+ TrustAnchor anchor = new TrustAnchor((X509Certificate) factory.generateCertificate(getClass().getResourceAsStream(TRUST_ANCHOR_CERT)), null);
+ List pathList = new ArrayList(certPath.length);
+ for (int i = 0; i < certPath.length; i++)
+ {
+ pathList.add(factory.generateCertificate(getClass().getResourceAsStream(certPath[i])));
+ }
+ List crlsAndCerts = new ArrayList(crls.length + certs.length + 1);
+ crlsAndCerts.add(factory.generateCRL(getClass().getResourceAsStream(TRUST_ANCHOR_CRL)));
+ for (int i = 0; i < crls.length; i++)
+ {
+ crlsAndCerts.add(factory.generateCRL(getClass().getResourceAsStream(crls[i])));
+ }
+ for (int i = 0; i < certs.length; i++)
+ {
+ crlsAndCerts.add(factory.generateCertificate(getClass().getResourceAsStream(certs[i])));
+ }
+ CertPath path = factory.generateCertPath(pathList);
+ CertStore certStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(crlsAndCerts), PROVIDER);
+ PKIXParameters params = new PKIXParameters(Collections.singleton(anchor));
+ params.addCertStore(certStore);
+ params.setExplicitPolicyRequired(false);
+ params.setInitialPolicies(Collections.singleton(PKITS.ANY_POLICY));
+ params.setPolicyMappingInhibited(false);
+ params.setAnyPolicyInhibited(false);
+ setupAdditionalParams(params);
+ CertPathValidator validator = CertPathValidator.getInstance("PKIX", PROVIDER);
+ try
+ {
+ CertPathValidatorResult result = validator.validate (path, params);
+ harness.verbose (((PKIXCertPathValidatorResult) result).getPolicyTree().toString());
+ harness.check (false);
+ }
+ catch (CertPathValidatorException expected)
+ {
+ harness.verbose("expected failure reason is: " + expected);
+ harness.check(true);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+
+ /**
+ * Subclasses should override this method to add any additional parameters
+ * before the path verification is run.
+ *
+ * @param params The parameters.
+ */
+ protected void setupAdditionalParams(PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/BaseValidTest.java b/gnu/testlet/java/security/cert/pkix/pkits/BaseValidTest.java
new file mode 100644
index 00000000..40b12afc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/BaseValidTest.java
@@ -0,0 +1,125 @@
+/* BaseValidTest.java -- superclass of "valid" tests.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: not-a-test
+// Uses: PKITS
+// Files: data/certs/TrustAnchorRootCertificate.crt data/crls/TrustAnchorRootCRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.*;
+import java.util.*;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public abstract class BaseValidTest extends PKITS implements Testlet
+{
+
+ // Fields.
+ // -------------------------------------------------------------------------
+
+ public static final String PROVIDER = System.getProperty("pkits.provider", "GNU");
+ public static final String TRUST_ANCHOR_CERT = "data/certs/TrustAnchorRootCertificate.crt";
+ public static final String TRUST_ANCHOR_CRL = "data/crls/TrustAnchorRootCRL.crl";
+
+ protected String[] certPath;
+ protected String[] crls;
+ protected String[] certs;
+
+ // Constructors.
+ // -------------------------------------------------------------------------
+
+ protected BaseValidTest(String[] certPath, String[] crls, String[] certs)
+ {
+ if (certPath == null || crls == null || certs == null)
+ throw new NullPointerException();
+ this.certPath = certPath;
+ this.crls = crls;
+ this.certs = certs;
+ }
+
+ protected BaseValidTest(String[] certPath, String[] crls)
+ {
+ this(certPath, crls, new String[0]);
+ }
+
+ // Instance method.
+ // -------------------------------------------------------------------------
+
+ public void test(TestHarness harness)
+ {
+ String testName = getClass().getName();
+ if (testName.lastIndexOf ('.') > 0)
+ testName = testName.substring (testName.lastIndexOf ('.') + 1);
+ harness.checkPoint(testName);
+ try
+ {
+ CertificateFactory factory = CertificateFactory.getInstance("X.509", PROVIDER);
+ TrustAnchor anchor = new TrustAnchor((X509Certificate) factory.generateCertificate(getClass().getResourceAsStream(TRUST_ANCHOR_CERT)), null);
+ List pathList = new ArrayList(certPath.length);
+ for (int i = 0; i < certPath.length; i++)
+ {
+ pathList.add(factory.generateCertificate(getClass().getResourceAsStream(certPath[i])));
+ }
+ List crlsAndCerts = new ArrayList(crls.length + certs.length + 1);
+ crlsAndCerts.add(factory.generateCRL(getClass().getResourceAsStream(TRUST_ANCHOR_CRL)));
+ for (int i = 0; i < crls.length; i++)
+ {
+ crlsAndCerts.add(factory.generateCRL(getClass().getResourceAsStream(crls[i])));
+ }
+ for (int i = 0; i < certs.length; i++)
+ {
+ crlsAndCerts.add(factory.generateCertificate(getClass().getResourceAsStream(certs[i])));
+ }
+ CertPath path = factory.generateCertPath(pathList);
+ CertStore certStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(crlsAndCerts), PROVIDER);
+ PKIXParameters params = new PKIXParameters(Collections.singleton(anchor));
+ params.addCertStore(certStore);
+ params.setExplicitPolicyRequired(false);
+ params.setInitialPolicies(Collections.singleton(PKITS.ANY_POLICY));
+ params.setPolicyMappingInhibited(false);
+ params.setAnyPolicyInhibited(false);
+ setupAdditionalParams(params);
+ CertPathValidator validator = CertPathValidator.getInstance("PKIX", PROVIDER);
+ CertPathValidatorResult result = validator.validate(path, params);
+ verify (harness, result);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(x.toString());
+ }
+ }
+
+ /**
+ * Subclasses should override this method to add any additional parameters
+ * before the path verification is run.
+ *
+ * @param params The parameters.
+ */
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+
+ /**
+ * Subclasses should override this method to perform any final verification
+ * on the certification path validation result. The default implementation
+ * simply prints the policy tree (if we are configured to be verbose) and
+ * passes the test.
+ *
+ * @param harness The test harness.
+ * @param result The validation result. This will almost always be an
+ * instance of {@link PKIXCertPathValidatorResult}.
+ * @throws Exception If verification fails unexpectedly.
+ */
+ protected void verify (TestHarness harness,
+ CertPathValidatorResult result)
+ throws Exception
+ {
+ harness.verbose(((PKIXCertPathValidatorResult) result).getPolicyTree().toString());
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries
new file mode 100644
index 00000000..ba939fde
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries
@@ -0,0 +1,104 @@
+/AllCertificatesAnyPolicyTest11_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesAnyPolicyTest11_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest10_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest10_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest10_3.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest13_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest13_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePoliciesTest13_3.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest1_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest1_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest1_3.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest1_4.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest2_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/AllCertificatesSamePolicyTest2_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/BaseInvalidTest.java/1.2/Wed Jun 25 07:54:22 2008//
+/BaseValidTest.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest12.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest3_1.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest3_2.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest3_3.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/DifferentPoliciesTest9.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBadCRLIssuerNameTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBadCRLSignatureTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBasicSelfIssuedCRLSigningKeyTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBasicSelfIssuedCRLSigningKeyTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBasicSelfIssuedNewWithOldTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidBasicSelfIssuedOldWithNewTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidCASignatureTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidCAnotAfterDateTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidCAnotBeforeDateTest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidDSASignatureTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidEESignatureTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidEEnotAfterDateTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidEEnotBeforeDateTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidLongSerialNumberTest18.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidMissingbasicConstraintsTest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidNameChainingEETest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidNameChainingOrderTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidNegativeSerialNumberTest15.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidOldCRLnextUpdateTest11.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidRevokedCATest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidRevokedEETest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidSelfIssuedpathLenConstraintTest16.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidUnknownCRLEntryExtensionTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidUnknownCRLExtensionTest10.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidUnknownCRLExtensionTest9.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidWrongCRLTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidcAFalseTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidcAFalseTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidkeyUsageCriticalcRLSignFalseTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest10.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest11.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest12.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/InvalidpathLenConstraintTest9.java/1.2/Wed Jun 25 07:54:22 2008//
+/Invalidpre2000CRLnextUpdateTest12.java/1.2/Wed Jun 25 07:54:22 2008//
+/Invalidpre2000UTCEEnotAfterDateTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/MissingCRLTest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/OverlappingPoliciesTest6.java/1.1/Tue Jul 25 22:44:24 2006//
+/OverlappingPoliciesTest6_1.java/1.1/Tue Jul 25 22:44:24 2006//
+/OverlappingPoliciesTest6_2.java/1.1/Tue Jul 25 22:44:24 2006//
+/OverlappingPoliciesTest6_3.java/1.2/Wed Jun 25 07:54:22 2008//
+/PKITS.java/1.1/Tue Jul 25 22:44:24 2006//
+/ValidBasicSelfIssuedCRLSigningKeyTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidBasicSelfIssuedNewWithOldTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidBasicSelfIssuedNewWithOldTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidBasicSelfIssuedOldWithNewTest1.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidDSAParameterInheritenceTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidDSASignaturesTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidGeneralizedTimeCRLnextUpdateTest13.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidGeneralizedTimenotAfterDateTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidGeneralizedTimenotBeforeDateTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidLongSerialNumberTest16.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidLongSerialNumberTest17.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidNameChainingCapitalizationTest5.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidNameChainingUIDsTest6.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidNameChainingWhitespaceTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidNameChainingWhitespaceTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidNegativeSerialNumberTest14.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidRFC3280MandatoryAttributeTypesTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidRFC3280OptionalAttributeTypesTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidRolloverfromPrintableStringtoUTF8StringTest10.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidSelfIssuedpathLenConstraintTest15.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidSelfIssuedpathLenConstraintTest17.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidSignaturesTest1.java/1.1/Tue Jul 25 22:44:24 2006//
+/ValidTwoCRLsTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidUTF8StringCaseInsensitiveMatchTest11.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidUTF8StringEncodedNamesTest9.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidbasicConstraintsNotCriticalTest4.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidkeyUsageNotCriticalTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidpathLenConstraintTest13.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidpathLenConstraintTest14.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidpathLenConstraintTest7.java/1.2/Wed Jun 25 07:54:22 2008//
+/ValidpathLenConstraintTest8.java/1.2/Wed Jun 25 07:54:22 2008//
+/Validpre2000UTCnotBeforeDateTest3.java/1.2/Wed Jun 25 07:54:22 2008//
+D
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries.Log b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries.Log
new file mode 100644
index 00000000..98990f29
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/data////
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/CVS/Repository b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Repository
new file mode 100644
index 00000000..b9c076f0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert/pkix/pkits
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/CVS/Root b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest12.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest12.java
new file mode 100644
index 00000000..4bb5a9f8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest12.java
@@ -0,0 +1,26 @@
+/* DifferentPoliciesTest12.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest12EE.crt data/certs/PoliciesP3CACert.crt data/crls/PoliciesP3CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class DifferentPoliciesTest12 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest12()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest12EE.crt",
+ "data/certs/PoliciesP3CACert.crt" },
+ new String[] { "data/crls/PoliciesP3CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_1.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_1.java
new file mode 100644
index 00000000..5424fe06
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_1.java
@@ -0,0 +1,28 @@
+/* DifferentPoliciesTest3_1.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/DifferentPoliciesTest3EE.crt data/certs/PoliciesP2subCACert.crt data/certs/GoodCACert.crt data/crls/PoliciesP2subCACRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class DifferentPoliciesTest3_1 extends BaseValidTest
+{
+ public DifferentPoliciesTest3_1()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest3EE.crt",
+ "data/certs/PoliciesP2subCACert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/PoliciesP2subCACRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_2.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_2.java
new file mode 100644
index 00000000..c7cc7553
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_2.java
@@ -0,0 +1,29 @@
+/* DifferentPoliciesTest3_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/DifferentPoliciesTest3EE.crt data/certs/PoliciesP2subCACert.crt data/certs/GoodCACert.crt data/crls/PoliciesP2subCACRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class DifferentPoliciesTest3_2 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest3_2()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest3EE.crt",
+ "data/certs/PoliciesP2subCACert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/PoliciesP2subCACRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_3.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_3.java
new file mode 100644
index 00000000..0d6c84e9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest3_3.java
@@ -0,0 +1,34 @@
+/* DifferentPoliciesTest3_3.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest3EE.crt data/certs/PoliciesP2subCACert.crt data/certs/GoodCACert.crt data/crls/PoliciesP2subCACRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.HashSet;
+
+public class DifferentPoliciesTest3_3 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest3_3()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest3EE.crt",
+ "data/certs/PoliciesP2subCACert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/PoliciesP2subCACRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ HashSet policies = new HashSet();
+ policies.add (NIST_TEST_POLICY_1);
+ policies.add (NIST_TEST_POLICY_2);
+ params.setInitialPolicies (policies);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest4.java
new file mode 100644
index 00000000..44ba7ed1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest4.java
@@ -0,0 +1,31 @@
+/* DifferentPoliciesTest4.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest4EE.crt data/certs/GoodsubCACert.crt data/certs/GoodCACert.crt data/crls/GoodsubCACRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class DifferentPoliciesTest4 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest4()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest4EE.crt",
+ "data/certs/GoodsubCACert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodsubCACRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.EMPTY_SET);
+ params.setAnyPolicyInhibited (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest5.java
new file mode 100644
index 00000000..625570b0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest5.java
@@ -0,0 +1,31 @@
+/* DifferentPoliciesTest5.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest5EE.crt data/certs/PoliciesP2subCA2Cert.crt data/certs/GoodCACert.crt data/crls/PoliciesP2subCA2CRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class DifferentPoliciesTest5 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest5()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest5EE.crt",
+ "data/certs/PoliciesP2subCA2Cert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/PoliciesP2subCA2CRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.EMPTY_SET);
+ params.setAnyPolicyInhibited (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest7.java
new file mode 100644
index 00000000..67679d4a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest7.java
@@ -0,0 +1,33 @@
+/* DifferentPoliciesTest7.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest7EE.crt data/certs/PoliciesP123subsubCAP12P1Cert.crt data/certs/PoliciesP123subCAP12Cert.crt data/certs/PoliciesP123CACert.crt data/crls/PoliciesP123subsubCAP12P1CRL.crl data/crls/PoliciesP123subCAP12CRL.crl data/crls/PoliciesP123CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class DifferentPoliciesTest7 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest7()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest7EE.crt",
+ "data/certs/PoliciesP123subsubCAP12P1Cert.crt",
+ "data/certs/PoliciesP123subCAP12Cert.crt",
+ "data/certs/PoliciesP123CACert.crt" },
+ new String[] { "data/crls/PoliciesP123subsubCAP12P1CRL.crl",
+ "data/crls/PoliciesP123subCAP12CRL.crl",
+ "data/crls/PoliciesP123CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.EMPTY_SET);
+ params.setAnyPolicyInhibited (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest8.java
new file mode 100644
index 00000000..421c11af
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest8.java
@@ -0,0 +1,33 @@
+/* DifferentPoliciesTest8.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest7EE.crt data/certs/PoliciesP12subsubCAP1P2Cert.crt data/certs/PoliciesP12subCAP1Cert.crt data/certs/PoliciesP12CACert.crt data/crls/PoliciesP12subsubCAP1P2CRL.crl data/crls/PoliciesP12subCAP1CRL.crl data/crls/PoliciesP12CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class DifferentPoliciesTest8 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest8()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest7EE.crt",
+ "data/certs/PoliciesP12subsubCAP1P2Cert.crt",
+ "data/certs/PoliciesP12subCAP1Cert.crt",
+ "data/certs/PoliciesP12CACert.crt" },
+ new String[] { "data/crls/PoliciesP12subsubCAP1P2CRL.crl",
+ "data/crls/PoliciesP12subCAP1CRL.crl",
+ "data/crls/PoliciesP12CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.EMPTY_SET);
+ params.setAnyPolicyInhibited (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest9.java b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest9.java
new file mode 100644
index 00000000..02cc02dd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/DifferentPoliciesTest9.java
@@ -0,0 +1,35 @@
+/* DifferentPoliciesTest7.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/DifferentPoliciesTest9EE.crt data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt data/certs/PoliciesP123subsubCAP12P1Cert.crt data/certs/PoliciesP123subCAP12Cert.crt data/certs/PoliciesP123CACert.crt data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl data/crls/PoliciesP123subsubCAP12P1CRL.crl data/crls/PoliciesP123subCAP12CRL.crl data/crls/PoliciesP123CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class DifferentPoliciesTest9 extends BaseInvalidTest
+{
+ public DifferentPoliciesTest9()
+ {
+ super (new String[] { "data/certs/DifferentPoliciesTest9EE.crt",
+ "data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt",
+ "data/certs/PoliciesP123subsubCAP12P1Cert.crt",
+ "data/certs/PoliciesP123subCAP12Cert.crt",
+ "data/certs/PoliciesP123CACert.crt" },
+ new String[] { "data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl",
+ "data/crls/PoliciesP123subsubCAP12P1CRL.crl",
+ "data/crls/PoliciesP123subCAP12CRL.crl",
+ "data/crls/PoliciesP123CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setInitialPolicies (Collections.EMPTY_SET);
+ params.setAnyPolicyInhibited (true);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLIssuerNameTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLIssuerNameTest5.java
new file mode 100644
index 00000000..e8e07dee
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLIssuerNameTest5.java
@@ -0,0 +1,20 @@
+/* InvalidBadCRLIssuerNameTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBadCRLIssuerNameTest5EE.crt data/certs/BadCRLIssuerNameCACert.crt data/crls/BadCRLIssuerNameCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBadCRLIssuerNameTest5 extends BaseInvalidTest
+{
+ public InvalidBadCRLIssuerNameTest5()
+ {
+ super(new String[] { "data/certs/InvalidBadCRLIssuerNameTest5EE.crt",
+ "data/certs/BadCRLIssuerNameCACert.crt" },
+ new String[] { "data/crls/BadCRLIssuerNameCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLSignatureTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLSignatureTest4.java
new file mode 100644
index 00000000..f3e3b7dc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBadCRLSignatureTest4.java
@@ -0,0 +1,20 @@
+/* InvalidBadCRLSignatureTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBadCRLSignatureTest4EE.crt data/certs/BadCRLSignatureCACert.crt data/crls/BadCRLSignatureCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBadCRLSignatureTest4 extends BaseInvalidTest
+{
+ public InvalidBadCRLSignatureTest4()
+ {
+ super(new String[] { "data/certs/InvalidBadCRLSignatureTest4EE.crt",
+ "data/certs/BadCRLSignatureCACert.crt" },
+ new String[] { "data/crls/BadCRLSignatureCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest7.java
new file mode 100644
index 00000000..30ceced3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest7.java
@@ -0,0 +1,21 @@
+/* InvalidBasicSelfIssuedCRLSigningKeyTest7.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBasicSelfIssuedCRLSigningKeyTest7 extends BaseInvalidTest
+{
+ public InvalidBasicSelfIssuedCRLSigningKeyTest7()
+ {
+ super(new String[] { "data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt",
+ "data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl" },
+ new String[] { "data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest8.java
new file mode 100644
index 00000000..ef5eb933
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedCRLSigningKeyTest8.java
@@ -0,0 +1,21 @@
+/* InvalidBasicSelfIssuedCRLSigningKeyTest8.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBasicSelfIssuedCRLSigningKeyTest8 extends BaseInvalidTest
+{
+ public InvalidBasicSelfIssuedCRLSigningKeyTest8()
+ {
+ super(new String[] { "data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt",
+ "data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl" },
+ new String[] { "data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedNewWithOldTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedNewWithOldTest5.java
new file mode 100644
index 00000000..648f20a6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedNewWithOldTest5.java
@@ -0,0 +1,21 @@
+/* InvalidBasicSelfIssuedNewWithOldTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt data/certs/BasicSelfIssuedOldKeyCACert.crt data/crls/BasicSelfIssuedOldKeyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBasicSelfIssuedNewWithOldTest5 extends BaseInvalidTest
+{
+ public InvalidBasicSelfIssuedNewWithOldTest5()
+ {
+ super(new String[] { "data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt",
+ "data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt",
+ "data/certs/BasicSelfIssuedOldKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedOldKeyCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedOldWithNewTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedOldWithNewTest2.java
new file mode 100644
index 00000000..b1c3b4f5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidBasicSelfIssuedOldWithNewTest2.java
@@ -0,0 +1,21 @@
+/* InvalidBasicSelfIssuedOldWithNewTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt data/certs/BasicSelfIssuedNewKeyCACert.crt data/crls/BasicSelfIssuedNewKeyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidBasicSelfIssuedOldWithNewTest2 extends BaseInvalidTest
+{
+ public InvalidBasicSelfIssuedOldWithNewTest2()
+ {
+ super(new String[] { "data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt",
+ "data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt",
+ "data/certs/BasicSelfIssuedNewKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedNewKeyCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidCASignatureTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCASignatureTest2.java
new file mode 100644
index 00000000..dda31e87
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCASignatureTest2.java
@@ -0,0 +1,19 @@
+/* InvalidCASignatureTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidCASignatureTest2EE.crt data/certs/BadSignedCACert.crt data/crls/BadSignedCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidCASignatureTest2 extends BaseInvalidTest
+{
+ public InvalidCASignatureTest2()
+ {
+ super(new String[] { "data/certs/InvalidCASignatureTest2EE.crt", "data/certs/BadSignedCACert.crt" },
+ new String[] { "data/crls/BadSignedCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotAfterDateTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotAfterDateTest5.java
new file mode 100644
index 00000000..14f08542
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotAfterDateTest5.java
@@ -0,0 +1,20 @@
+/* InvalidCAnotAfterDateTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidCAnotAfterDateTest5EE.crt data/certs/BadnotAfterDateCACert.crt data/crls/BadnotAfterDateCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidCAnotAfterDateTest5 extends BaseInvalidTest
+{
+ public InvalidCAnotAfterDateTest5()
+ {
+ super(new String[] { "data/certs/InvalidCAnotAfterDateTest5EE.crt",
+ "data/certs/BadnotAfterDateCACert.crt" },
+ new String[] { "data/crls/BadnotAfterDateCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotBeforeDateTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotBeforeDateTest1.java
new file mode 100644
index 00000000..e6234286
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidCAnotBeforeDateTest1.java
@@ -0,0 +1,20 @@
+/* InvalidCAnotBeforeDateTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidCAnotBeforeDateTest1EE.crt data/certs/BadnotBeforeDateCACert.crt data/crls/BadnotBeforeDateCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidCAnotBeforeDateTest1 extends BaseInvalidTest
+{
+ public InvalidCAnotBeforeDateTest1()
+ {
+ super(new String[] { "data/certs/InvalidCAnotBeforeDateTest1EE.crt",
+ "data/certs/BadnotBeforeDateCACert.crt" },
+ new String[] { "data/crls/BadnotBeforeDateCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidDSASignatureTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidDSASignatureTest6.java
new file mode 100644
index 00000000..6d09dc7e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidDSASignatureTest6.java
@@ -0,0 +1,19 @@
+/* InvalidDSASignatureTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidDSASignatureTest6EE.crt data/certs/DSACACert.crt data/crls/DSACACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidDSASignatureTest6 extends BaseInvalidTest
+{
+ public InvalidDSASignatureTest6()
+ {
+ super(new String[] { "data/certs/InvalidDSASignatureTest6EE.crt", "data/certs/DSACACert.crt" },
+ new String[] { "data/crls/DSACACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidEESignatureTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEESignatureTest3.java
new file mode 100644
index 00000000..136ac57c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEESignatureTest3.java
@@ -0,0 +1,19 @@
+/* InvalidEESignatureTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidEESignatureTest3EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidEESignatureTest3 extends BaseInvalidTest
+{
+ public InvalidEESignatureTest3()
+ {
+ super(new String[] { "data/certs/InvalidEESignatureTest3EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotAfterDateTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotAfterDateTest6.java
new file mode 100644
index 00000000..f520e75c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotAfterDateTest6.java
@@ -0,0 +1,19 @@
+/* InvalidEEnotAfterDateTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidEEnotAfterDateTest6EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidEEnotAfterDateTest6 extends BaseInvalidTest
+{
+ public InvalidEEnotAfterDateTest6()
+ {
+ super(new String[] { "data/certs/InvalidEEnotAfterDateTest6EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotBeforeDateTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotBeforeDateTest2.java
new file mode 100644
index 00000000..6840bbf9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidEEnotBeforeDateTest2.java
@@ -0,0 +1,20 @@
+/* InvalidEEnotBeforeDateTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidEEnotBeforeDateTest2EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidEEnotBeforeDateTest2 extends BaseInvalidTest
+{
+ public InvalidEEnotBeforeDateTest2()
+ {
+ super(new String[] { "data/certs/InvalidEEnotBeforeDateTest2EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidLongSerialNumberTest18.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidLongSerialNumberTest18.java
new file mode 100644
index 00000000..52f08069
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidLongSerialNumberTest18.java
@@ -0,0 +1,20 @@
+/* InvalidLongSerialNumberTest18.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidLongSerialNumberTest18EE.crt data/certs/LongSerialNumberCACert.crt data/crls/LongSerialNumberCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidLongSerialNumberTest18 extends BaseInvalidTest
+{
+ public InvalidLongSerialNumberTest18()
+ {
+ super(new String[] { "data/certs/InvalidLongSerialNumberTest18EE.crt",
+ "data/certs/LongSerialNumberCACert.crt" },
+ new String[] { "data/crls/LongSerialNumberCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidMissingbasicConstraintsTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidMissingbasicConstraintsTest1.java
new file mode 100644
index 00000000..06fbe90e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidMissingbasicConstraintsTest1.java
@@ -0,0 +1,20 @@
+/* InvalidMissingbasicConstraintsTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidMissingbasicConstraintsTest1EE.crt data/certs/MissingbasicConstraintsCACert.crt data/crls/MissingbasicConstraintsCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidMissingbasicConstraintsTest1 extends BaseInvalidTest
+{
+ public InvalidMissingbasicConstraintsTest1()
+ {
+ super(new String[] { "data/certs/InvalidMissingbasicConstraintsTest1EE.crt",
+ "data/certs/MissingbasicConstraintsCACert.crt" },
+ new String[] { "data/crls/MissingbasicConstraintsCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingEETest1.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingEETest1.java
new file mode 100644
index 00000000..3b2a8958
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingEETest1.java
@@ -0,0 +1,19 @@
+/* InvalidNameChainingEETest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidNameChainingTest1EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidNameChainingEETest1 extends BaseInvalidTest
+{
+ public InvalidNameChainingEETest1()
+ {
+ super(new String[] { "data/certs/InvalidNameChainingTest1EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingOrderTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingOrderTest2.java
new file mode 100644
index 00000000..c701f9ea
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNameChainingOrderTest2.java
@@ -0,0 +1,19 @@
+/* InvalidNameChainingOrderTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidNameChainingOrderTest2EE.crt data/certs/NameOrderingCACert.crt data/crls/NameOrderCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidNameChainingOrderTest2 extends BaseInvalidTest
+{
+ public InvalidNameChainingOrderTest2()
+ {
+ super(new String[] { "data/certs/InvalidNameChainingOrderTest2EE.crt", "data/certs/NameOrderingCACert.crt" },
+ new String[] { "data/crls/NameOrderCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidNegativeSerialNumberTest15.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNegativeSerialNumberTest15.java
new file mode 100644
index 00000000..36eb11de
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidNegativeSerialNumberTest15.java
@@ -0,0 +1,20 @@
+/* InvalidNegativeSerialNumberTest15.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidNegativeSerialNumberTest15EE.crt data/certs/NegativeSerialNumberCACert.crt data/crls/NegativeSerialNumberCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidNegativeSerialNumberTest15 extends BaseInvalidTest
+{
+ public InvalidNegativeSerialNumberTest15()
+ {
+ super(new String[] { "data/certs/InvalidNegativeSerialNumberTest15EE.crt",
+ "data/certs/NegativeSerialNumberCACert.crt" },
+ new String[] { "data/crls/NegativeSerialNumberCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidOldCRLnextUpdateTest11.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidOldCRLnextUpdateTest11.java
new file mode 100644
index 00000000..03f08e97
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidOldCRLnextUpdateTest11.java
@@ -0,0 +1,20 @@
+/* InvalidOldCRLnextUpdateTest11.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidOldCRLnextUpdateTest11EE.crt data/certs/OldCRLnextUpdateCACert.crt data/crls/OldCRLnextUpdateCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidOldCRLnextUpdateTest11 extends BaseInvalidTest
+{
+ public InvalidOldCRLnextUpdateTest11()
+ {
+ super(new String[] { "data/certs/InvalidOldCRLnextUpdateTest11EE.crt",
+ "data/certs/OldCRLnextUpdateCACert.crt" },
+ new String[] { "data/crls/OldCRLnextUpdateCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedCATest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedCATest2.java
new file mode 100644
index 00000000..55b75e5f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedCATest2.java
@@ -0,0 +1,22 @@
+/* InvalidRevokedCATest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidRevokedCATest2EE.crt data/certs/RevokedsubCACert.crt data/certs/GoodCACert.crt data/crls/RevokedsubCACRL.crl data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidRevokedCATest2 extends BaseInvalidTest
+{
+ public InvalidRevokedCATest2()
+ {
+ super(new String[] { "data/certs/InvalidRevokedCATest2EE.crt",
+ "data/certs/RevokedsubCACert.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/RevokedsubCACRL.crl",
+ "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedEETest3.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedEETest3.java
new file mode 100644
index 00000000..a84eebeb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidRevokedEETest3.java
@@ -0,0 +1,20 @@
+/* InvalidRevokedEETest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidRevokedEETest3EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidRevokedEETest3 extends BaseInvalidTest
+{
+ public InvalidRevokedEETest3()
+ {
+ super(new String[] { "data/certs/InvalidRevokedEETest3EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidSelfIssuedpathLenConstraintTest16.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidSelfIssuedpathLenConstraintTest16.java
new file mode 100644
index 00000000..b52c386b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidSelfIssuedpathLenConstraintTest16.java
@@ -0,0 +1,23 @@
+/* InvalidSelfIssuedpathLenConstraintTest16.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt data/certs/pathLenConstraint0subCA2Cert.crt data/certs/pathLenConstraint0SelfIssuedCACert.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0CACRL.crl data/crls/pathLenConstraint0subCA2CRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidSelfIssuedpathLenConstraintTest16 extends BaseInvalidTest
+{
+ public InvalidSelfIssuedpathLenConstraintTest16()
+ {
+ super(new String[] { "data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt",
+ "data/certs/pathLenConstraint0subCA2Cert.crt",
+ "data/certs/pathLenConstraint0SelfIssuedCACert.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0CACRL.crl",
+ "data/crls/pathLenConstraint0subCA2CRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLEntryExtensionTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLEntryExtensionTest8.java
new file mode 100644
index 00000000..d7844db2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLEntryExtensionTest8.java
@@ -0,0 +1,20 @@
+/* InvalidUnknownCRLEntryExtensionTest8.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt data/certs/UnknownCRLEntryExtensionCACert.crt data/crls/UnknownCRLEntryExtensionCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidUnknownCRLEntryExtensionTest8 extends BaseInvalidTest
+{
+ public InvalidUnknownCRLEntryExtensionTest8()
+ {
+ super(new String[] { "data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt",
+ "data/certs/UnknownCRLEntryExtensionCACert.crt" },
+ new String[] { "data/crls/UnknownCRLEntryExtensionCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest10.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest10.java
new file mode 100644
index 00000000..1d9370f4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest10.java
@@ -0,0 +1,20 @@
+/* InvalidUnknownCRLExtensionTest10.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidUnknownCRLExtensionTest10EE.crt data/certs/UnknownCRLExtensionCACert.crt data/crls/UnknownCRLExtensionCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidUnknownCRLExtensionTest10 extends BaseInvalidTest
+{
+ public InvalidUnknownCRLExtensionTest10()
+ {
+ super(new String[] { "data/certs/InvalidUnknownCRLExtensionTest10EE.crt",
+ "data/certs/UnknownCRLExtensionCACert.crt" },
+ new String[] { "data/crls/UnknownCRLExtensionCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest9.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest9.java
new file mode 100644
index 00000000..bc8cc1fe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidUnknownCRLExtensionTest9.java
@@ -0,0 +1,20 @@
+/* InvalidUnknownCRLExtensionTest9.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidUnknownCRLExtensionTest9EE.crt data/certs/UnknownCRLExtensionCACert.crt data/crls/UnknownCRLExtensionCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidUnknownCRLExtensionTest9 extends BaseInvalidTest
+{
+ public InvalidUnknownCRLExtensionTest9()
+ {
+ super(new String[] { "data/certs/InvalidUnknownCRLExtensionTest9EE.crt",
+ "data/certs/UnknownCRLExtensionCACert.crt" },
+ new String[] { "data/crls/UnknownCRLExtensionCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidWrongCRLTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidWrongCRLTest6.java
new file mode 100644
index 00000000..c631723b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidWrongCRLTest6.java
@@ -0,0 +1,20 @@
+/* InvalidWrongCRLTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidWrongCRLTest6EE.crt data/certs/WrongCRLCACert.crt data/crls/WrongCRLCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidWrongCRLTest6 extends BaseInvalidTest
+{
+ public InvalidWrongCRLTest6()
+ {
+ super(new String[] { "data/certs/InvalidWrongCRLTest6EE.crt",
+ "data/certs/WrongCRLCACert.crt" },
+ new String[] { "data/crls/WrongCRLCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest2.java
new file mode 100644
index 00000000..4ffdf8cb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest2.java
@@ -0,0 +1,20 @@
+/* InvalidcAFalseTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidcAFalseTest2EE.crt data/certs/basicConstraintsCriticalcAFalseCACert.crt data/crls/basicConstraintsCriticalcAFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidcAFalseTest2 extends BaseInvalidTest
+{
+ public InvalidcAFalseTest2()
+ {
+ super(new String[] { "data/certs/InvalidcAFalseTest2EE.crt",
+ "data/certs/basicConstraintsCriticalcAFalseCACert.crt" },
+ new String[] { "data/crls/basicConstraintsCriticalcAFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest3.java
new file mode 100644
index 00000000..31d1a5a7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidcAFalseTest3.java
@@ -0,0 +1,20 @@
+/* InvalidcAFalseTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidcAFalseTest3EE.crt data/certs/basicConstraintsNotCriticalcAFalseCACert.crt data/crls/basicConstraintsNotCriticalcAFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidcAFalseTest3 extends BaseInvalidTest
+{
+ public InvalidcAFalseTest3()
+ {
+ super(new String[] { "data/certs/InvalidcAFalseTest3EE.crt",
+ "data/certs/basicConstraintsNotCriticalcAFalseCACert.crt" },
+ new String[] { "data/crls/basicConstraintsNotCriticalcAFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalcRLSignFalseTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalcRLSignFalseTest4.java
new file mode 100644
index 00000000..b9034afe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalcRLSignFalseTest4.java
@@ -0,0 +1,20 @@
+/* InvalidkeyUsageCriticalcRLSignFalseTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt data/certs/keyUsageCriticalcRLSignFalseCACert.crt data/crls/keyUsageCriticalcRLSignFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidkeyUsageCriticalcRLSignFalseTest4 extends BaseInvalidTest
+{
+ public InvalidkeyUsageCriticalcRLSignFalseTest4()
+ {
+ super(new String[] { "data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt",
+ "data/certs/keyUsageCriticalcRLSignFalseCACert.crt" },
+ new String[] { "data/crls/keyUsageCriticalcRLSignFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java
new file mode 100644
index 00000000..34f0bdbf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageCriticalkeyCertSignFalseTest1.java
@@ -0,0 +1,20 @@
+/* InvalidkeyUsageCriticalkeyCertSignFalseTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt data/certs/keyUsageCriticalkeyCertSignFalseCACert.crt data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidkeyUsageCriticalkeyCertSignFalseTest1 extends BaseInvalidTest
+{
+ public InvalidkeyUsageCriticalkeyCertSignFalseTest1()
+ {
+ super(new String[] { "data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt",
+ "data/certs/keyUsageCriticalkeyCertSignFalseCACert.crt" },
+ new String[] { "data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java
new file mode 100644
index 00000000..b8d9baee
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalcRLSignFalseTest5.java
@@ -0,0 +1,20 @@
+/* InvalidkeyUsageNotCriticalcRLSignFalseTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt data/certs/keyUsageNotCriticalcRLSignFalseCACert.crt data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidkeyUsageNotCriticalcRLSignFalseTest5 extends BaseInvalidTest
+{
+ public InvalidkeyUsageNotCriticalcRLSignFalseTest5()
+ {
+ super(new String[] { "data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt",
+ "data/certs/keyUsageNotCriticalcRLSignFalseCACert.crt" },
+ new String[] { "data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java
new file mode 100644
index 00000000..c6db355a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java
@@ -0,0 +1,20 @@
+/* InvalidkeyUsageNotCriticalkeyCertSignFalseTest2.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidkeyUsageNotCriticalkeyCertSignFalseTest2 extends BaseInvalidTest
+{
+ public InvalidkeyUsageNotCriticalkeyCertSignFalseTest2()
+ {
+ super(new String[] { "data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt",
+ "data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt" },
+ new String[] { "data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest10.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest10.java
new file mode 100644
index 00000000..60670dea
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest10.java
@@ -0,0 +1,24 @@
+/* InvalidpathLenConstraintTest10.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest10EE.crt data/certs/pathLenConstraint6subsubCA00Cert.crt data/certs/pathLenConstraint6subCA0Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubCA00CRL.crl data/crls/pathLenConstraint6subCA0CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest10 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest10()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest10EE.crt",
+ "data/certs/pathLenConstraint6subsubCA00Cert.crt",
+ "data/certs/pathLenConstraint6subCA0Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubCA00CRL.crl",
+ "data/crls/pathLenConstraint6subCA0CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest11.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest11.java
new file mode 100644
index 00000000..270f70bd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest11.java
@@ -0,0 +1,26 @@
+/* InvalidpathLenConstraintTest11.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest11EE.crt data/certs/pathLenConstraint6subsubsubCA11XCert.crt data/certs/pathLenConstraint6subsubCA11Cert.crt data/certs/pathLenConstraint6subCA1Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubsubCA11XCRL.crl data/crls/pathLenConstraint6subsubCA11CRL.crl data/crls/pathLenConstraint6subCA1CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest11 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest11()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest11EE.crt",
+ "data/certs/pathLenConstraint6subsubsubCA11XCert.crt",
+ "data/certs/pathLenConstraint6subsubCA11Cert.crt",
+ "data/certs/pathLenConstraint6subCA1Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubsubCA11XCRL.crl",
+ "data/crls/pathLenConstraint6subsubCA11CRL.crl",
+ "data/crls/pathLenConstraint6subCA1CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest12.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest12.java
new file mode 100644
index 00000000..6d6e0721
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest12.java
@@ -0,0 +1,26 @@
+/* InvalidpathLenConstraintTest12.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest12EE.crt data/certs/pathLenConstraint6subsubsubCA11XCert.crt data/certs/pathLenConstraint6subsubCA11Cert.crt data/certs/pathLenConstraint6subCA1Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubsubCA11XCRL.crl data/crls/pathLenConstraint6subsubCA11CRL.crl data/crls/pathLenConstraint6subCA1CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest12 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest12()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest12EE.crt",
+ "data/certs/pathLenConstraint6subsubsubCA11XCert.crt",
+ "data/certs/pathLenConstraint6subsubCA11Cert.crt",
+ "data/certs/pathLenConstraint6subCA1Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubsubCA11XCRL.crl",
+ "data/crls/pathLenConstraint6subsubCA11CRL.crl",
+ "data/crls/pathLenConstraint6subCA1CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest5.java
new file mode 100644
index 00000000..a55e10fb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest5.java
@@ -0,0 +1,22 @@
+/* InvalidpathLenConstraintTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest5EE.crt data/certs/pathLenConstraint0subCACert.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0subCACRL.crl data/crls/pathLenConstraint0CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest5 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest5()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest5EE.crt",
+ "data/certs/pathLenConstraint0subCACert.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0subCACRL.crl",
+ "data/crls/pathLenConstraint0CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest6.java
new file mode 100644
index 00000000..59519e85
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest6.java
@@ -0,0 +1,22 @@
+/* InvalidpathLenConstraintTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest6EE.crt data/certs/pathLenConstraint0subCACert.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0subCACRL.crl data/crls/pathLenConstraint0CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest6 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest6()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest6EE.crt",
+ "data/certs/pathLenConstraint0subCACert.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0subCACRL.crl",
+ "data/crls/pathLenConstraint0CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest9.java b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest9.java
new file mode 100644
index 00000000..6cfa5d00
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/InvalidpathLenConstraintTest9.java
@@ -0,0 +1,24 @@
+/* InvalidpathLenConstraintTest9.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidpathLenConstraintTest9EE.crt data/certs/pathLenConstraint6subsubCA00Cert.crt data/certs/pathLenConstraint6subCA0Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubCA00CRL.crl data/crls/pathLenConstraint6subCA0CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class InvalidpathLenConstraintTest9 extends BaseInvalidTest
+{
+ public InvalidpathLenConstraintTest9()
+ {
+ super(new String[] { "data/certs/InvalidpathLenConstraintTest9EE.crt",
+ "data/certs/pathLenConstraint6subsubCA00Cert.crt",
+ "data/certs/pathLenConstraint6subCA0Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubCA00CRL.crl",
+ "data/crls/pathLenConstraint6subCA0CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000CRLnextUpdateTest12.java b/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000CRLnextUpdateTest12.java
new file mode 100644
index 00000000..0d37879f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000CRLnextUpdateTest12.java
@@ -0,0 +1,20 @@
+/* Invalidpre2000CRLnextUpdateTest12.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/Invalidpre2000CRLnextUpdateTest12EE.crt data/certs/pre2000CRLnextUpdateCACert.crt data/crls/pre2000CRLnextUpdateCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class Invalidpre2000CRLnextUpdateTest12 extends BaseInvalidTest
+{
+ public Invalidpre2000CRLnextUpdateTest12()
+ {
+ super(new String[] { "data/certs/Invalidpre2000CRLnextUpdateTest12EE.crt",
+ "data/certs/pre2000CRLnextUpdateCACert.crt" },
+ new String[] { "data/crls/pre2000CRLnextUpdateCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000UTCEEnotAfterDateTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000UTCEEnotAfterDateTest7.java
new file mode 100644
index 00000000..40e73675
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/Invalidpre2000UTCEEnotAfterDateTest7.java
@@ -0,0 +1,19 @@
+/* InvalidpreUTC2000EEnotAfterDateTest7.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class Invalidpre2000UTCEEnotAfterDateTest7 extends BaseInvalidTest
+{
+ public Invalidpre2000UTCEEnotAfterDateTest7()
+ {
+ super(new String[] { "data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/MissingCRLTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/MissingCRLTest1.java
new file mode 100644
index 00000000..f76db264
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/MissingCRLTest1.java
@@ -0,0 +1,20 @@
+/* MissingCRLTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/InvalidMissingCRLTest1EE.crt data/certs/NoCRLCACert.crt
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class MissingCRLTest1 extends BaseInvalidTest
+{
+ public MissingCRLTest1()
+ {
+ super(new String[] { "data/certs/InvalidMissingCRLTest1EE.crt",
+ "data/certs/NoCRLCACert.crt" },
+ new String[0]);
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6.java
new file mode 100644
index 00000000..54292966
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6.java
@@ -0,0 +1,28 @@
+/* OverlappingPoliciesTest6.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class OverlappingPoliciesTest6 extends BaseValidTest
+{
+ public OverlappingPoliciesTest6()
+ {
+ super (new String[] { "data/certs/OverlappingPoliciesTest6EE.crt",
+ "data/certs/PoliciesP1234subsubCAP123P12Cert.crt",
+ "data/certs/PoliciesP1234subCAP123Cert.crt",
+ "data/certs/PoliciesP1234CACert.crt" },
+ new String[] { "data/crls/PoliciesP1234subsubCAP123P12CRL.crl",
+ "data/crls/PoliciesP1234subCAP123CRL.crl",
+ "data/crls/PoliciesP1234CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_1.java b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_1.java
new file mode 100644
index 00000000..defb23b3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_1.java
@@ -0,0 +1,28 @@
+/* OverlappingPoliciesTest6_1.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+
+public class OverlappingPoliciesTest6_1 extends BaseValidTest
+{
+ public OverlappingPoliciesTest6_1()
+ {
+ super (new String[] { "data/certs/OverlappingPoliciesTest6EE.crt",
+ "data/certs/PoliciesP1234subsubCAP123P12Cert.crt",
+ "data/certs/PoliciesP1234subCAP123Cert.crt",
+ "data/certs/PoliciesP1234CACert.crt" },
+ new String[] { "data/crls/PoliciesP1234subsubCAP123P12CRL.crl",
+ "data/crls/PoliciesP1234subCAP123CRL.crl",
+ "data/crls/PoliciesP1234CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_2.java b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_2.java
new file mode 100644
index 00000000..a5b67e73
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_2.java
@@ -0,0 +1,31 @@
+/* OverlappingPoliciesTest6_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class OverlappingPoliciesTest6_2 extends BaseValidTest
+{
+ public OverlappingPoliciesTest6_2()
+ {
+ super (new String[] { "data/certs/OverlappingPoliciesTest6EE.crt",
+ "data/certs/PoliciesP1234subsubCAP123P12Cert.crt",
+ "data/certs/PoliciesP1234subCAP123Cert.crt",
+ "data/certs/PoliciesP1234CACert.crt" },
+ new String[] { "data/crls/PoliciesP1234subsubCAP123P12CRL.crl",
+ "data/crls/PoliciesP1234subCAP123CRL.crl",
+ "data/crls/PoliciesP1234CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_1));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_3.java b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_3.java
new file mode 100644
index 00000000..0d3a0a60
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/OverlappingPoliciesTest6_3.java
@@ -0,0 +1,33 @@
+/* OverlappingPoliciesTest6_2.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ Distributed under the GPL; see the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseInvalidTest
+// Files: data/certs/OverlappingPoliciesTest6EE.crt data/certs/PoliciesP1234subsubCAP123P12Cert.crt data/certs/PoliciesP1234subCAP123Cert.crt data/certs/PoliciesP1234CACert.crt data/crls/PoliciesP1234subsubCAP123P12CRL.crl data/crls/PoliciesP1234subCAP123CRL.crl data/crls/PoliciesP1234CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+import java.security.cert.PKIXParameters;
+import java.util.Collections;
+
+public class OverlappingPoliciesTest6_3 extends BaseInvalidTest
+{
+ public OverlappingPoliciesTest6_3()
+ {
+ super (new String[] { "data/certs/OverlappingPoliciesTest6EE.crt",
+ "data/certs/PoliciesP1234subsubCAP123P12Cert.crt",
+ "data/certs/PoliciesP1234subCAP123Cert.crt",
+ "data/certs/PoliciesP1234CACert.crt" },
+ new String[] { "data/crls/PoliciesP1234subsubCAP123P12CRL.crl",
+ "data/crls/PoliciesP1234subCAP123CRL.crl",
+ "data/crls/PoliciesP1234CACRL.crl" });
+ }
+
+ protected void setupAdditionalParams (PKIXParameters params)
+ {
+ params.setExplicitPolicyRequired (true);
+ params.setInitialPolicies (Collections.singleton (NIST_TEST_POLICY_2));
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/PKITS.java b/gnu/testlet/java/security/cert/pkix/pkits/PKITS.java
new file mode 100644
index 00000000..bf4dd312
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/PKITS.java
@@ -0,0 +1,43 @@
+/* PKITS.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: not-a-test
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class PKITS
+{
+
+ static
+ {
+ String clazz = System.getProperty ("pkits.provider.class",
+ "gnu.java.security.provider.Gnu");
+ String provider = System.getProperty ("pkits.provider", "GNU");
+ try
+ {
+ if (java.security.Security.getProvider (provider) == null)
+ java.security.Security.addProvider ((java.security.Provider)
+ Class.forName (clazz).newInstance());
+ }
+ catch (Throwable t)
+ {
+ System.err.println ("WARNING: couldn't load PKITS test provider " +
+ provider + " with class " + clazz);
+ System.err.println (t);
+ t.printStackTrace();
+ }
+ }
+
+ // Constants.
+ // -------------------------------------------------------------------------
+
+ public static final String ANY_POLICY = "2.5.29.32.0";
+ public static final String NIST_TEST_POLICY_1 = "2.16.840.1.101.3.2.1.48.1";
+ public static final String NIST_TEST_POLICY_2 = "2.16.840.1.101.3.2.1.48.2";
+ public static final String NIST_TEST_POLICY_3 = "2.16.840.1.101.3.2.1.48.3";
+ public static final String NIST_TEST_POLICY_4 = "2.16.840.1.101.3.2.1.48.4";
+ public static final String NIST_TEST_POLICY_5 = "2.16.840.1.101.3.2.1.48.5";
+ public static final String NIST_TEST_POLICY_6 = "2.16.840.1.101.3.2.1.48.6";
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedCRLSigningKeyTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedCRLSigningKeyTest6.java
new file mode 100644
index 00000000..f5911eb6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedCRLSigningKeyTest6.java
@@ -0,0 +1,21 @@
+/* ValidBasicSelfIssuedCRLSigningKeyTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidBasicSelfIssuedCRLSigningKeyTest6 extends BaseValidTest
+{
+ public ValidBasicSelfIssuedCRLSigningKeyTest6()
+ {
+ super(new String[] { "data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt",
+ "data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl" },
+ new String[] { "data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest3.java
new file mode 100644
index 00000000..8c4c1086
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest3.java
@@ -0,0 +1,21 @@
+/* ValidBasicSelfIssuedNewWithOldTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt data/certs/BasicSelfIssuedOldKeyCACert.crt data/crls/BasicSelfIssuedOldKeyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidBasicSelfIssuedNewWithOldTest3 extends BaseValidTest
+{
+ public ValidBasicSelfIssuedNewWithOldTest3()
+ {
+ super(new String[] { "data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt",
+ "data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt",
+ "data/certs/BasicSelfIssuedOldKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedOldKeyCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest4.java
new file mode 100644
index 00000000..5434218b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedNewWithOldTest4.java
@@ -0,0 +1,21 @@
+/* ValidBasicSelfIssuedNewWithOldTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt data/certs/BasicSelfIssuedOldKeyCACert.crt data/crls/BasicSelfIssuedOldKeyCACRL.crl data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidBasicSelfIssuedNewWithOldTest4 extends BaseValidTest
+{
+ public ValidBasicSelfIssuedNewWithOldTest4()
+ {
+ super(new String[] { "data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt",
+ "data/certs/BasicSelfIssuedOldKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedOldKeyCACRL.crl" },
+ new String[] { "data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedOldWithNewTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedOldWithNewTest1.java
new file mode 100644
index 00000000..0842e69f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidBasicSelfIssuedOldWithNewTest1.java
@@ -0,0 +1,21 @@
+/* ValidBasicSelfIssuedOldWithNewTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt data/certs/BasicSelfIssuedNewKeyCACert.crt data/crls/BasicSelfIssuedNewKeyCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidBasicSelfIssuedOldWithNewTest1 extends BaseValidTest
+{
+ public ValidBasicSelfIssuedOldWithNewTest1()
+ {
+ super(new String[] { "data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt",
+ "data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt",
+ "data/certs/BasicSelfIssuedNewKeyCACert.crt" },
+ new String[] { "data/crls/BasicSelfIssuedNewKeyCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidDSAParameterInheritenceTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidDSAParameterInheritenceTest5.java
new file mode 100644
index 00000000..2a7f4c39
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidDSAParameterInheritenceTest5.java
@@ -0,0 +1,20 @@
+/* ValidDSAParameterInheritenceTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidDSAParameterInheritanceTest5EE.crt data/certs/DSAParametersInheritedCACert.crt data/certs/DSACACert.crt data/crls/DSACACRL.crl data/crls/DSAParametersInheritedCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidDSAParameterInheritenceTest5 extends BaseValidTest
+{
+ public ValidDSAParameterInheritenceTest5()
+ {
+ super(new String[] { "data/certs/ValidDSAParameterInheritanceTest5EE.crt", "data/certs/DSAParametersInheritedCACert.crt",
+ "data/certs/DSACACert.crt" },
+ new String[] { "data/crls/DSACACRL.crl", "data/crls/DSAParametersInheritedCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidDSASignaturesTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidDSASignaturesTest4.java
new file mode 100644
index 00000000..2285da35
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidDSASignaturesTest4.java
@@ -0,0 +1,19 @@
+/* ValidDSASignaturesTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidDSASignaturesTest4EE.crt data/certs/DSACACert.crt data/crls/DSACACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidDSASignaturesTest4 extends BaseValidTest
+{
+ public ValidDSASignaturesTest4()
+ {
+ super(new String[] { "data/certs/ValidDSASignaturesTest4EE.crt", "data/certs/DSACACert.crt" },
+ new String[] { "data/crls/DSACACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimeCRLnextUpdateTest13.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimeCRLnextUpdateTest13.java
new file mode 100644
index 00000000..2f147db3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimeCRLnextUpdateTest13.java
@@ -0,0 +1,20 @@
+/* ValidGeneralizedTimeCRLnextUpdateTest13.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt data/certs/GeneralizedTimeCRLnextUpdateCACert.crt data/crls/GeneralizedTimeCRLnextUpdateCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidGeneralizedTimeCRLnextUpdateTest13 extends BaseValidTest
+{
+ public ValidGeneralizedTimeCRLnextUpdateTest13()
+ {
+ super(new String[] { "data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt",
+ "data/certs/GeneralizedTimeCRLnextUpdateCACert.crt" },
+ new String[] { "data/crls/GeneralizedTimeCRLnextUpdateCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotAfterDateTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotAfterDateTest8.java
new file mode 100644
index 00000000..0de6db34
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotAfterDateTest8.java
@@ -0,0 +1,19 @@
+/* ValidGeneralizedTimenotAfterDateTest8.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidGeneralizedTimenotAfterDateTest8 extends BaseValidTest
+{
+ public ValidGeneralizedTimenotAfterDateTest8()
+ {
+ super(new String[] { "data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotBeforeDateTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotBeforeDateTest4.java
new file mode 100644
index 00000000..912c623d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidGeneralizedTimenotBeforeDateTest4.java
@@ -0,0 +1,19 @@
+/* ValidGeneralizedTimenotBeforeDateTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidGeneralizedTimenotBeforeDateTest4 extends BaseValidTest
+{
+ public ValidGeneralizedTimenotBeforeDateTest4()
+ {
+ super(new String[] { "data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest16.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest16.java
new file mode 100644
index 00000000..db97b40a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest16.java
@@ -0,0 +1,20 @@
+/* ValidLongSerialNumberTest16.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidLongSerialNumberTest16EE.crt data/certs/LongSerialNumberCACert.crt data/crls/LongSerialNumberCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidLongSerialNumberTest16 extends BaseValidTest
+{
+ public ValidLongSerialNumberTest16()
+ {
+ super(new String[] { "data/certs/ValidLongSerialNumberTest16EE.crt",
+ "data/certs/LongSerialNumberCACert.crt" },
+ new String[] { "data/crls/LongSerialNumberCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest17.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest17.java
new file mode 100644
index 00000000..0b54d0a5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidLongSerialNumberTest17.java
@@ -0,0 +1,20 @@
+/* ValidLongSerialNumberTest17.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidLongSerialNumberTest17EE.crt data/certs/LongSerialNumberCACert.crt data/crls/LongSerialNumberCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidLongSerialNumberTest17 extends BaseValidTest
+{
+ public ValidLongSerialNumberTest17()
+ {
+ super(new String[] { "data/certs/ValidLongSerialNumberTest17EE.crt",
+ "data/certs/LongSerialNumberCACert.crt" },
+ new String[] { "data/crls/LongSerialNumberCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingCapitalizationTest5.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingCapitalizationTest5.java
new file mode 100644
index 00000000..b31d01f9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingCapitalizationTest5.java
@@ -0,0 +1,19 @@
+/* ValidNameChainingCapitalizationTest5.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidNameChainingCapitalizationTest5EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidNameChainingCapitalizationTest5 extends BaseValidTest
+{
+ public ValidNameChainingCapitalizationTest5()
+ {
+ super(new String[] { "data/certs/ValidNameChainingCapitalizationTest5EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingUIDsTest6.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingUIDsTest6.java
new file mode 100644
index 00000000..0d075a23
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingUIDsTest6.java
@@ -0,0 +1,19 @@
+/* ValidNameChainingUIDsTest6.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidNameUIDsTest6EE.crt data/certs/UIDCACert.crt data/crls/UIDCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidNameChainingUIDsTest6 extends BaseValidTest
+{
+ public ValidNameChainingUIDsTest6()
+ {
+ super(new String[] { "data/certs/ValidNameUIDsTest6EE.crt", "data/certs/UIDCACert.crt" },
+ new String[] { "data/crls/UIDCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest3.java
new file mode 100644
index 00000000..f1265dfc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest3.java
@@ -0,0 +1,19 @@
+/* ValidNameChainingWhitespaceTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidNameChainingWhitespaceTest3EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidNameChainingWhitespaceTest3 extends BaseValidTest
+{
+ public ValidNameChainingWhitespaceTest3()
+ {
+ super(new String[] { "data/certs/ValidNameChainingWhitespaceTest3EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest4.java
new file mode 100644
index 00000000..ef883bff
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidNameChainingWhitespaceTest4.java
@@ -0,0 +1,19 @@
+/* ValidNameChainingWhitespaceTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidNameChainingWhitespaceTest4EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidNameChainingWhitespaceTest4 extends BaseValidTest
+{
+ public ValidNameChainingWhitespaceTest4()
+ {
+ super(new String[] { "data/certs/ValidNameChainingWhitespaceTest4EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidNegativeSerialNumberTest14.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidNegativeSerialNumberTest14.java
new file mode 100644
index 00000000..bb3aaac0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidNegativeSerialNumberTest14.java
@@ -0,0 +1,20 @@
+/* ValidNegativeSerialNumberTest14.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidNegativeSerialNumberTest14EE.crt data/certs/NegativeSerialNumberCACert.crt data/crls/NegativeSerialNumberCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidNegativeSerialNumberTest14 extends BaseValidTest
+{
+ public ValidNegativeSerialNumberTest14()
+ {
+ super(new String[] { "data/certs/ValidNegativeSerialNumberTest14EE.crt",
+ "data/certs/NegativeSerialNumberCACert.crt" },
+ new String[] { "data/crls/NegativeSerialNumberCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280MandatoryAttributeTypesTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280MandatoryAttributeTypesTest7.java
new file mode 100644
index 00000000..53fba7ce
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280MandatoryAttributeTypesTest7.java
@@ -0,0 +1,20 @@
+/* ValidRFC3280MandatoryAttributeTypesTest7.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt data/certs/RFC3280MandatoryAttributeTypesCACert.crt data/crls/RFC3280MandatoryAttributeTypesCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidRFC3280MandatoryAttributeTypesTest7 extends BaseValidTest
+{
+ public ValidRFC3280MandatoryAttributeTypesTest7()
+ {
+ super(new String[] { "data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt",
+ "data/certs/RFC3280MandatoryAttributeTypesCACert.crt" },
+ new String[] { "data/crls/RFC3280MandatoryAttributeTypesCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280OptionalAttributeTypesTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280OptionalAttributeTypesTest8.java
new file mode 100644
index 00000000..d1dbef55
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidRFC3280OptionalAttributeTypesTest8.java
@@ -0,0 +1,20 @@
+/* ValidRFC3280OptionalAttributeTypesTest8.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt data/certs/RFC3280OptionalAttributeTypesCACert.crt data/crls/RFC3280OptionalAttributeTypesCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidRFC3280OptionalAttributeTypesTest8 extends BaseValidTest
+{
+ public ValidRFC3280OptionalAttributeTypesTest8()
+ {
+ super(new String[] { "data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt",
+ "data/certs/RFC3280OptionalAttributeTypesCACert.crt" },
+ new String[] { "data/crls/RFC3280OptionalAttributeTypesCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidRolloverfromPrintableStringtoUTF8StringTest10.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidRolloverfromPrintableStringtoUTF8StringTest10.java
new file mode 100644
index 00000000..3be52681
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidRolloverfromPrintableStringtoUTF8StringTest10.java
@@ -0,0 +1,20 @@
+/* ValidRolloverfromPrintableStringtoUTF8StringTest10.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidRolloverfromPrintableStringtoUTF8StringTest10 extends BaseValidTest
+{
+ public ValidRolloverfromPrintableStringtoUTF8StringTest10()
+ {
+ super(new String[] { "data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt",
+ "data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt" },
+ new String[] { "data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest15.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest15.java
new file mode 100644
index 00000000..8b9ba755
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest15.java
@@ -0,0 +1,21 @@
+/* ValidSelfIssuedpathLenConstraintTest15.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt data/certs/pathLenConstraint0SelfIssuedCACert.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidSelfIssuedpathLenConstraintTest15 extends BaseValidTest
+{
+ public ValidSelfIssuedpathLenConstraintTest15()
+ {
+ super(new String[] { "data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt",
+ "data/certs/pathLenConstraint0SelfIssuedCACert.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest17.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest17.java
new file mode 100644
index 00000000..69deec73
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidSelfIssuedpathLenConstraintTest17.java
@@ -0,0 +1,24 @@
+/* ValidSelfIssuedpathLenConstraintTest17.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt data/certs/pathLenConstraint1SelfIssuedsubCACert.crt data/certs/pathLenConstraint1subCACert.crt data/certs/pathLenConstraint1SelfIssuedCACert.crt data/certs/pathLenConstraint1CACert.crt data/crls/pathLenConstraint1CACRL.crl data/crls/pathLenConstraint1subCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidSelfIssuedpathLenConstraintTest17 extends BaseValidTest
+{
+ public ValidSelfIssuedpathLenConstraintTest17()
+ {
+ super(new String[] { "data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt",
+ "data/certs/pathLenConstraint1SelfIssuedsubCACert.crt",
+ "data/certs/pathLenConstraint1subCACert.crt",
+ "data/certs/pathLenConstraint1SelfIssuedCACert.crt",
+ "data/certs/pathLenConstraint1CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint1CACRL.crl",
+ "data/crls/pathLenConstraint1subCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidSignaturesTest1.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidSignaturesTest1.java
new file mode 100644
index 00000000..08f0f015
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidSignaturesTest1.java
@@ -0,0 +1,18 @@
+/* ValidSignaturesTest1.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidSignaturesTest1 extends BaseValidTest
+{
+
+ public ValidSignaturesTest1()
+ {
+ super(new String[] { "data/certs/ValidCertificatePathTest1EE.crt", "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidTwoCRLsTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidTwoCRLsTest7.java
new file mode 100644
index 00000000..2552e66a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidTwoCRLsTest7.java
@@ -0,0 +1,21 @@
+/* ValidTwoCRLsTest7.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidTwoCRLsTest7EE.crt data/certs/TwoCRLsCACert.crt data/crls/TwoCRLsCAGoodCRL.crl data/crls/TwoCRLsCABadCRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidTwoCRLsTest7 extends BaseValidTest
+{
+ public ValidTwoCRLsTest7()
+ {
+ super(new String[] { "data/certs/ValidTwoCRLsTest7EE.crt",
+ "data/certs/TwoCRLsCACert.crt" },
+ new String[] { "data/crls/TwoCRLsCAGoodCRL.crl",
+ "data/crls/TwoCRLsCABadCRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringCaseInsensitiveMatchTest11.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringCaseInsensitiveMatchTest11.java
new file mode 100644
index 00000000..e34fd226
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringCaseInsensitiveMatchTest11.java
@@ -0,0 +1,20 @@
+/* ValidUTF8StringCaseInsensitiveMatchTest11.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt data/certs/UTF8StringCaseInsensitiveMatchCACert.crt data/crls/UTF8StringCaseInsensitiveMatchCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidUTF8StringCaseInsensitiveMatchTest11 extends BaseValidTest
+{
+ public ValidUTF8StringCaseInsensitiveMatchTest11()
+ {
+ super(new String[] { "data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt",
+ "data/certs/UTF8StringCaseInsensitiveMatchCACert.crt" },
+ new String[] { "data/crls/UTF8StringCaseInsensitiveMatchCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringEncodedNamesTest9.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringEncodedNamesTest9.java
new file mode 100644
index 00000000..7f17cfd5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidUTF8StringEncodedNamesTest9.java
@@ -0,0 +1,20 @@
+/* ValidUTF8StringEncodedNamesTest9.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidUTF8StringEncodedNamesTest9EE.crt data/certs/UTF8StringEncodedNamesCACert.crt data/crls/UTF8StringEncodedNamesCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidUTF8StringEncodedNamesTest9 extends BaseValidTest
+{
+ public ValidUTF8StringEncodedNamesTest9()
+ {
+ super(new String[] { "data/certs/ValidUTF8StringEncodedNamesTest9EE.crt",
+ "data/certs/UTF8StringEncodedNamesCACert.crt" },
+ new String[] { "data/crls/UTF8StringEncodedNamesCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidbasicConstraintsNotCriticalTest4.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidbasicConstraintsNotCriticalTest4.java
new file mode 100644
index 00000000..1eb7ace0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidbasicConstraintsNotCriticalTest4.java
@@ -0,0 +1,20 @@
+/* ValidbasicConstraintsNotCriticalTest4.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidbasicConstraintsNotCriticalTest4EE.crt data/certs/basicConstraintsNotCriticalCACert.crt data/crls/basicConstraintsNotCriticalCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidbasicConstraintsNotCriticalTest4 extends BaseValidTest
+{
+ public ValidbasicConstraintsNotCriticalTest4()
+ {
+ super(new String[] { "data/certs/ValidbasicConstraintsNotCriticalTest4EE.crt",
+ "data/certs/basicConstraintsNotCriticalCACert.crt" },
+ new String[] { "data/crls/basicConstraintsNotCriticalCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidkeyUsageNotCriticalTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidkeyUsageNotCriticalTest3.java
new file mode 100644
index 00000000..c2caf541
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidkeyUsageNotCriticalTest3.java
@@ -0,0 +1,20 @@
+/* ValidkeyUsageNotCriticalTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidkeyUsageNotCriticalTest3EE.crt data/certs/keyUsageNotCriticalCACert.crt data/crls/keyUsageNotCriticalCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidkeyUsageNotCriticalTest3 extends BaseValidTest
+{
+ public ValidkeyUsageNotCriticalTest3()
+ {
+ super(new String[] { "data/certs/ValidkeyUsageNotCriticalTest3EE.crt",
+ "data/certs/keyUsageNotCriticalCACert.crt" },
+ new String[] { "data/crls/keyUsageNotCriticalCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest13.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest13.java
new file mode 100644
index 00000000..e38692c7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest13.java
@@ -0,0 +1,26 @@
+/* ValidpathLenConstraintTest13.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidpathLenConstraintTest13EE.crt data/certs/pathLenConstraint6subsubsubCA41XCert.crt data/certs/pathLenConstraint6subsubCA41Cert.crt data/certs/pathLenConstraint6subCA4Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubsubCA41XCRL.crl data/crls/pathLenConstraint6subsubCA41CRL.crl data/crls/pathLenConstraint6subCA4CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidpathLenConstraintTest13 extends BaseValidTest
+{
+ public ValidpathLenConstraintTest13()
+ {
+ super(new String[] { "data/certs/ValidpathLenConstraintTest13EE.crt",
+ "data/certs/pathLenConstraint6subsubsubCA41XCert.crt",
+ "data/certs/pathLenConstraint6subsubCA41Cert.crt",
+ "data/certs/pathLenConstraint6subCA4Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubsubCA41XCRL.crl",
+ "data/crls/pathLenConstraint6subsubCA41CRL.crl",
+ "data/crls/pathLenConstraint6subCA4CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest14.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest14.java
new file mode 100644
index 00000000..ad3e928e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest14.java
@@ -0,0 +1,26 @@
+/* ValidpathLenConstraintTest14.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidpathLenConstraintTest14EE.crt data/certs/pathLenConstraint6subsubsubCA41XCert.crt data/certs/pathLenConstraint6subsubCA41Cert.crt data/certs/pathLenConstraint6subCA4Cert.crt data/certs/pathLenConstraint6CACert.crt data/crls/pathLenConstraint6subsubsubCA41XCRL.crl data/crls/pathLenConstraint6subsubCA41CRL.crl data/crls/pathLenConstraint6subCA4CRL.crl data/crls/pathLenConstraint6CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidpathLenConstraintTest14 extends BaseValidTest
+{
+ public ValidpathLenConstraintTest14()
+ {
+ super(new String[] { "data/certs/ValidpathLenConstraintTest14EE.crt",
+ "data/certs/pathLenConstraint6subsubsubCA41XCert.crt",
+ "data/certs/pathLenConstraint6subsubCA41Cert.crt",
+ "data/certs/pathLenConstraint6subCA4Cert.crt",
+ "data/certs/pathLenConstraint6CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint6subsubsubCA41XCRL.crl",
+ "data/crls/pathLenConstraint6subsubCA41CRL.crl",
+ "data/crls/pathLenConstraint6subCA4CRL.crl",
+ "data/crls/pathLenConstraint6CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest7.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest7.java
new file mode 100644
index 00000000..c7cd9323
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest7.java
@@ -0,0 +1,20 @@
+/* ValidpathLenConstraintTest7.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidpathLenConstraintTest7EE.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidpathLenConstraintTest7 extends BaseValidTest
+{
+ public ValidpathLenConstraintTest7()
+ {
+ super(new String[] { "data/certs/ValidpathLenConstraintTest7EE.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest8.java b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest8.java
new file mode 100644
index 00000000..b257470f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/ValidpathLenConstraintTest8.java
@@ -0,0 +1,20 @@
+/* ValidpathLenConstraintTest8.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/ValidpathLenConstraintTest8EE.crt data/certs/pathLenConstraint0CACert.crt data/crls/pathLenConstraint0CACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class ValidpathLenConstraintTest8 extends BaseValidTest
+{
+ public ValidpathLenConstraintTest8()
+ {
+ super(new String[] { "data/certs/ValidpathLenConstraintTest8EE.crt",
+ "data/certs/pathLenConstraint0CACert.crt" },
+ new String[] { "data/crls/pathLenConstraint0CACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/Validpre2000UTCnotBeforeDateTest3.java b/gnu/testlet/java/security/cert/pkix/pkits/Validpre2000UTCnotBeforeDateTest3.java
new file mode 100644
index 00000000..24ed5643
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/Validpre2000UTCnotBeforeDateTest3.java
@@ -0,0 +1,20 @@
+/* Validpre2000UTCnotBeforeDateTest3.java
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ Distributed under the GPL. See the file `COPYING' */
+
+// Tags: JDK1.4
+// Uses: BaseValidTest
+// Files: data/certs/Validpre2000UTCnotBeforeDateTest3EE.crt data/certs/GoodCACert.crt data/crls/GoodCACRL.crl
+
+package gnu.testlet.java.security.cert.pkix.pkits;
+
+public class Validpre2000UTCnotBeforeDateTest3 extends BaseValidTest
+{
+ public Validpre2000UTCnotBeforeDateTest3()
+ {
+ super(new String[] { "data/certs/Validpre2000UTCnotBeforeDateTest3EE.crt",
+ "data/certs/GoodCACert.crt" },
+ new String[] { "data/crls/GoodCACRL.crl" });
+ }
+}
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries.Log b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries.Log
new file mode 100644
index 00000000..e73091bf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/certs////
+A D/crls////
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Repository b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Repository
new file mode 100644
index 00000000..4b05be13
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert/pkix/pkits/data
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Root b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesNoPoliciesTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesNoPoliciesTest2EE.crt
new file mode 100644
index 00000000..6c40491f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesNoPoliciesTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest10EE.crt
new file mode 100644
index 00000000..41b6d15b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest13EE.crt
new file mode 100644
index 00000000..9210106f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesSamePoliciesTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesanyPolicyTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesanyPolicyTest11EE.crt
new file mode 100644
index 00000000..a7f9d22b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AllCertificatesanyPolicyTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AnyPolicyTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AnyPolicyTest14EE.crt
new file mode 100644
index 00000000..b5961c75
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/AnyPolicyTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLIssuerNameCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLIssuerNameCACert.crt
new file mode 100644
index 00000000..6afe5ddd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLIssuerNameCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLSignatureCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLSignatureCACert.crt
new file mode 100644
index 00000000..bfac8a40
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadCRLSignatureCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadSignedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadSignedCACert.crt
new file mode 100644
index 00000000..abf7f319
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadSignedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotAfterDateCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotAfterDateCACert.crt
new file mode 100644
index 00000000..d8babc26
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotAfterDateCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotBeforeDateCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotBeforeDateCACert.crt
new file mode 100644
index 00000000..9b4cd824
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BadnotBeforeDateCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt
new file mode 100644
index 00000000..f3e91879
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt
new file mode 100644
index 00000000..167367e7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyCACert.crt
new file mode 100644
index 00000000..b4ccbe84
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt
new file mode 100644
index 00000000..336a1caa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyCACert.crt
new file mode 100644
index 00000000..78953d66
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt
new file mode 100644
index 00000000..7c4e8591
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CPSPointerQualifierTest20EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CPSPointerQualifierTest20EE.crt
new file mode 100644
index 00000000..8bc70369
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CPSPointerQualifierTest20EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Entries b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Entries
new file mode 100644
index 00000000..294e8176
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Entries
@@ -0,0 +1,399 @@
+/AllCertificatesNoPoliciesTest2EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/AllCertificatesSamePoliciesTest10EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/AllCertificatesSamePoliciesTest13EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/AllCertificatesanyPolicyTest11EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/AnyPolicyTest14EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BadCRLIssuerNameCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BadCRLSignatureCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BadSignedCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BadnotAfterDateCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BadnotBeforeDateCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedCRLSigningKeyCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedCRLSigningKeyCRLCert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedNewKeyCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedNewKeyOldWithNewCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedOldKeyCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/BasicSelfIssuedOldKeyNewWithOldCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/CPSPointerQualifierTest20EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DSACACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DSAParametersInheritedCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest12EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest3EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest4EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest5EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest7EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest8EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/DifferentPoliciesTest9EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/GeneralizedTimeCRLnextUpdateCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/GoodCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/GoodsubCACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/GoodsubCAPanyPolicyMapping1to2CACert.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBadCRLIssuerNameTest5EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBadCRLSignatureTest4EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBasicSelfIssuedNewWithOldTest5EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidBasicSelfIssuedOldWithNewTest2EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidCASignatureTest2EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidCAnotAfterDateTest5EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidCAnotBeforeDateTest1EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNSnameConstraintsTest31EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNSnameConstraintsTest33EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNSnameConstraintsTest38EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNandRFC822nameConstraintsTest28EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNandRFC822nameConstraintsTest29EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest10EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest12EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest13EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest15EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest16EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest17EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest20EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest2EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest3EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest7EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest8EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDNnameConstraintsTest9EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidDSASignatureTest6EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidEESignatureTest3EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidEEnotAfterDateTest6EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidEEnotBeforeDateTest2EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidIDPwithindirectCRLTest23EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidIDPwithindirectCRLTest26EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidLongSerialNumberTest18EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidMappingFromanyPolicyTest7EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidMappingToanyPolicyTest8EE.crt/1.1/Tue Jul 25 22:44:24 2006//
+/InvalidMissingCRLTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidMissingbasicConstraintsTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidNameChainingOrderTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidNameChainingTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidNegativeSerialNumberTest15EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidOldCRLnextUpdateTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidPolicyMappingTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidPolicyMappingTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidPolicyMappingTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidRFC822nameConstraintsTest22EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidRFC822nameConstraintsTest24EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidRFC822nameConstraintsTest26EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidRevokedCATest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidRevokedEETest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedpathLenConstraintTest16EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidURInameConstraintsTest35EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidURInameConstraintsTest37EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidUnknownCRLEntryExtensionTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidUnknownCRLExtensionTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidUnknownCRLExtensionTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidUnknownCriticalCertificateExtensionTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidWrongCRLTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcAFalseTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcAFalseTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcRLIssuerTest27EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcRLIssuerTest31EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcRLIssuerTest32EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcRLIssuerTest34EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidcRLIssuerTest35EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddeltaCRLTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddistributionPointTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddistributionPointTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddistributionPointTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddistributionPointTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvaliddistributionPointTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitAnyPolicyTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitAnyPolicyTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitAnyPolicyTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitAnyPolicyTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitPolicyMappingTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitPolicyMappingTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitPolicyMappingTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidinhibitPolicyMappingTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlyContainsAttributeCertsTest14EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlyContainsCACertsTest12EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlyContainsUserCertsTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlySomeReasonsTest15EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlySomeReasonsTest16EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlySomeReasonsTest17EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlySomeReasonsTest20EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidonlySomeReasonsTest21EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest12EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidpathLenConstraintTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/Invalidpre2000CRLnextUpdateTest12EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/Invalidpre2000UTCEEnotAfterDateTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidrequireExplicitPolicyTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/InvalidrequireExplicitPolicyTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/LongSerialNumberCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/Mapping1to2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/MappingFromanyPolicyCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/MappingToanyPolicyCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/MissingbasicConstraintsCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/NameOrderingCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/NegativeSerialNumberCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/NoCRLCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/NoPoliciesCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/NoissuingDistributionPointCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/OldCRLnextUpdateCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/OverlappingPoliciesTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P1Mapping1to234CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P1Mapping1to234subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/P1anyPolicyMapping1to2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PanyPolicyMapping1to2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234subCAP123Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234subsubCAP123P12Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subCAP12Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubCAP12P1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubCAP12P2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubsubCAP12P2P1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12subCAP1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12subsubCAP1P2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP2subCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP2subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP3CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/RFC3280MandatoryAttributeTypesCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/RFC3280OptionalAttributeTypesCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/RevokedsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/RolloverfromPrintableStringtoUTF8StringCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/TrustAnchorRootCertificate.crt/1.1/Tue Jul 25 22:44:25 2006//
+/TwoCRLsCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UIDCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UTF8StringCaseInsensitiveMatchCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UTF8StringEncodedNamesCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UnknownCRLEntryExtensionCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UnknownCRLExtensionCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UserNoticeQualifierTest15EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UserNoticeQualifierTest16EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UserNoticeQualifierTest17EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UserNoticeQualifierTest18EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/UserNoticeQualifierTest19EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidBasicSelfIssuedNewWithOldTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidBasicSelfIssuedNewWithOldTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidBasicSelfIssuedOldWithNewTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidCertificatePathTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNSnameConstraintsTest30EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNSnameConstraintsTest32EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNandRFC822nameConstraintsTest27EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest14EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest18EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest19EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDNnameConstraintsTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDSAParameterInheritanceTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidDSASignaturesTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidGeneralizedTimenotAfterDateTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidGeneralizedTimenotBeforeDateTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidIDPwithindirectCRLTest22EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidIDPwithindirectCRLTest24EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidIDPwithindirectCRLTest25EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidLongSerialNumberTest16EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidLongSerialNumberTest17EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNameChainingCapitalizationTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNameChainingWhitespaceTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNameChainingWhitespaceTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNameUIDsTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNegativeSerialNumberTest14EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidNoissuingDistributionPointTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest12EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest13EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest14EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidPolicyMappingTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRFC3280MandatoryAttributeTypesTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRFC3280OptionalAttributeTypesTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRFC822nameConstraintsTest21EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRFC822nameConstraintsTest23EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRFC822nameConstraintsTest25EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedpathLenConstraintTest15EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedpathLenConstraintTest17EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidTwoCRLsTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidURInameConstraintsTest34EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidURInameConstraintsTest36EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidUTF8StringEncodedNamesTest9EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidbasicConstraintsNotCriticalTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidcRLIssuerTest28EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidcRLIssuerTest29EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidcRLIssuerTest30EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidcRLIssuerTest33EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddeltaCRLTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddeltaCRLTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddeltaCRLTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddeltaCRLTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddistributionPointTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddistributionPointTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddistributionPointTest5EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValiddistributionPointTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidinhibitAnyPolicyTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidinhibitPolicyMappingTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidinhibitPolicyMappingTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidkeyUsageNotCriticalTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidonlyContainsCACertsTest13EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidonlySomeReasonsTest18EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidonlySomeReasonsTest19EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidpathLenConstraintTest13EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidpathLenConstraintTest14EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidpathLenConstraintTest7EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidpathLenConstraintTest8EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/Validpre2000UTCnotBeforeDateTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidrequireExplicitPolicyTest1EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidrequireExplicitPolicyTest2EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/ValidrequireExplicitPolicyTest4EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/WrongCRLCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/anyPolicyCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsCriticalcAFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsNotCriticalCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsNotCriticalcAFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA3Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLIndicatorNoBaseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/distributionPoint1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/distributionPoint2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA3Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA3cRLIssuerCert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA4Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA4cRLIssuerCert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA5Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA6Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy0CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCAIAP5Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subsubCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicyTest3EE.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping0CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping0subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subCAIPM5Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subsubsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageCriticalcRLSignFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageCriticalkeyCertSignFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalcRLSignFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalkeyCertSignFalseCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA3Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3subCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3subCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN4CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN5CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDNS1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDNS2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA3Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsURI1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsURI2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsAttributeCertsCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsCACertsCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsUserCertsCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA3Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA4Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0subCA2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1SelfIssuedsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA0Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA1Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA4Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA00Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA11Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA41Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubsubCA11XCert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubsubCA41XCert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/pre2000CRLnextUpdateCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subsubsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subsubsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2SelfIssuedCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2SelfIssuedsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subsubsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subsubsubCACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7CACert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subCARE2Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subsubCARE2RE4Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt/1.1/Tue Jul 25 22:44:25 2006//
+D
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Repository b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Repository
new file mode 100644
index 00000000..c63c548b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert/pkix/pkits/data/certs
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Root b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSACACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSACACert.crt
new file mode 100644
index 00000000..a1f9e05f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSACACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSAParametersInheritedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSAParametersInheritedCACert.crt
new file mode 100644
index 00000000..7eae4863
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DSAParametersInheritedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest12EE.crt
new file mode 100644
index 00000000..6aa6ae5c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest3EE.crt
new file mode 100644
index 00000000..8cd24ec7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest4EE.crt
new file mode 100644
index 00000000..6af794d8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest5EE.crt
new file mode 100644
index 00000000..43150466
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest7EE.crt
new file mode 100644
index 00000000..8caf46a3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest8EE.crt
new file mode 100644
index 00000000..f49721d7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest9EE.crt
new file mode 100644
index 00000000..49a38a55
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/DifferentPoliciesTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GeneralizedTimeCRLnextUpdateCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GeneralizedTimeCRLnextUpdateCACert.crt
new file mode 100644
index 00000000..c22228aa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GeneralizedTimeCRLnextUpdateCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodCACert.crt
new file mode 100644
index 00000000..5aecbc0c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCACert.crt
new file mode 100644
index 00000000..09c98aad
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt
new file mode 100644
index 00000000..2540cd45
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLIssuerNameTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLIssuerNameTest5EE.crt
new file mode 100644
index 00000000..749f7cc0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLIssuerNameTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLSignatureTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLSignatureTest4EE.crt
new file mode 100644
index 00000000..3c4d2cbe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBadCRLSignatureTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt
new file mode 100644
index 00000000..7919115d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt
new file mode 100644
index 00000000..b242bad6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt
new file mode 100644
index 00000000..e75d9786
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt
new file mode 100644
index 00000000..ed300012
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCASignatureTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCASignatureTest2EE.crt
new file mode 100644
index 00000000..8d337bdd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCASignatureTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotAfterDateTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotAfterDateTest5EE.crt
new file mode 100644
index 00000000..6f6748d0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotAfterDateTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotBeforeDateTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotBeforeDateTest1EE.crt
new file mode 100644
index 00000000..e7b01de4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidCAnotBeforeDateTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest31EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest31EE.crt
new file mode 100644
index 00000000..3f86eefe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest31EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest33EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest33EE.crt
new file mode 100644
index 00000000..805205b2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest33EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest38EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest38EE.crt
new file mode 100644
index 00000000..eff3779d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNSnameConstraintsTest38EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt
new file mode 100644
index 00000000..7c1dd9cb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt
new file mode 100644
index 00000000..bdf08adc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest10EE.crt
new file mode 100644
index 00000000..5ff84a45
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest12EE.crt
new file mode 100644
index 00000000..11ec10fe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest13EE.crt
new file mode 100644
index 00000000..08c3050d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest15EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest15EE.crt
new file mode 100644
index 00000000..28ab4658
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest15EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest16EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest16EE.crt
new file mode 100644
index 00000000..56e42d0f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest16EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest17EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest17EE.crt
new file mode 100644
index 00000000..f9f53b93
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest17EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest20EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest20EE.crt
new file mode 100644
index 00000000..15fbe8fa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest20EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest2EE.crt
new file mode 100644
index 00000000..8daf2f2a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest3EE.crt
new file mode 100644
index 00000000..52cd9993
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest7EE.crt
new file mode 100644
index 00000000..799760b5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest8EE.crt
new file mode 100644
index 00000000..d874621e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest9EE.crt
new file mode 100644
index 00000000..18314bd0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDNnameConstraintsTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDSASignatureTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDSASignatureTest6EE.crt
new file mode 100644
index 00000000..bcc900cf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidDSASignatureTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEESignatureTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEESignatureTest3EE.crt
new file mode 100644
index 00000000..e21461e3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEESignatureTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotAfterDateTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotAfterDateTest6EE.crt
new file mode 100644
index 00000000..46269d05
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotAfterDateTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotBeforeDateTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotBeforeDateTest2EE.crt
new file mode 100644
index 00000000..f1bf1d1a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidEEnotBeforeDateTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest23EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest23EE.crt
new file mode 100644
index 00000000..31965f62
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest23EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest26EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest26EE.crt
new file mode 100644
index 00000000..b9b87a6c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidIDPwithindirectCRLTest26EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidLongSerialNumberTest18EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidLongSerialNumberTest18EE.crt
new file mode 100644
index 00000000..1c84dce0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidLongSerialNumberTest18EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingFromanyPolicyTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingFromanyPolicyTest7EE.crt
new file mode 100644
index 00000000..49aab726
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingFromanyPolicyTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingToanyPolicyTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingToanyPolicyTest8EE.crt
new file mode 100644
index 00000000..0a56c5e0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMappingToanyPolicyTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingCRLTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingCRLTest1EE.crt
new file mode 100644
index 00000000..7af5ce5a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingCRLTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingbasicConstraintsTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingbasicConstraintsTest1EE.crt
new file mode 100644
index 00000000..f5d8703c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidMissingbasicConstraintsTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingOrderTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingOrderTest2EE.crt
new file mode 100644
index 00000000..9c40a339
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingOrderTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingTest1EE.crt
new file mode 100644
index 00000000..f7ae3b0e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNameChainingTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNegativeSerialNumberTest15EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNegativeSerialNumberTest15EE.crt
new file mode 100644
index 00000000..2d323b4d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidNegativeSerialNumberTest15EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidOldCRLnextUpdateTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidOldCRLnextUpdateTest11EE.crt
new file mode 100644
index 00000000..858db72d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidOldCRLnextUpdateTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest10EE.crt
new file mode 100644
index 00000000..ef227b8e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest2EE.crt
new file mode 100644
index 00000000..58ace916
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest4EE.crt
new file mode 100644
index 00000000..c0dd555d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidPolicyMappingTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest22EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest22EE.crt
new file mode 100644
index 00000000..d8134e0a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest22EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest24EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest24EE.crt
new file mode 100644
index 00000000..b71c6a37
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest24EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest26EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest26EE.crt
new file mode 100644
index 00000000..0ffdf26f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRFC822nameConstraintsTest26EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedCATest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedCATest2EE.crt
new file mode 100644
index 00000000..65a0a1ab
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedCATest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedEETest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedEETest3EE.crt
new file mode 100644
index 00000000..80ea4d3f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidRevokedEETest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt
new file mode 100644
index 00000000..21c32e97
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt
new file mode 100644
index 00000000..d57f0cb5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt
new file mode 100644
index 00000000..577998c4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt
new file mode 100644
index 00000000..621c325e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt
new file mode 100644
index 00000000..98f8160c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt
new file mode 100644
index 00000000..b8027728
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt
new file mode 100644
index 00000000..9fba63af
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt
new file mode 100644
index 00000000..a1b58ffa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt
new file mode 100644
index 00000000..108f38c5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest35EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest35EE.crt
new file mode 100644
index 00000000..5313fc96
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest35EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest37EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest37EE.crt
new file mode 100644
index 00000000..81fd01db
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidURInameConstraintsTest37EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt
new file mode 100644
index 00000000..6170daef
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest10EE.crt
new file mode 100644
index 00000000..8c8dfc0d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest9EE.crt
new file mode 100644
index 00000000..83c1b6af
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCRLExtensionTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt
new file mode 100644
index 00000000..f472e860
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidWrongCRLTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidWrongCRLTest6EE.crt
new file mode 100644
index 00000000..206892ce
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidWrongCRLTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest2EE.crt
new file mode 100644
index 00000000..25b925a2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest3EE.crt
new file mode 100644
index 00000000..5d8f8632
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcAFalseTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest27EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest27EE.crt
new file mode 100644
index 00000000..1cb9f595
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest27EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest31EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest31EE.crt
new file mode 100644
index 00000000..7e08a55d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest31EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest32EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest32EE.crt
new file mode 100644
index 00000000..ec020a1a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest32EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest34EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest34EE.crt
new file mode 100644
index 00000000..b309b809
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest34EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest35EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest35EE.crt
new file mode 100644
index 00000000..257daab5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidcRLIssuerTest35EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt
new file mode 100644
index 00000000..30e49a4e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest10EE.crt
new file mode 100644
index 00000000..d60e4f69
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest3EE.crt
new file mode 100644
index 00000000..27ce111a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest4EE.crt
new file mode 100644
index 00000000..a7edcf89
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest6EE.crt
new file mode 100644
index 00000000..0e247f2a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest9EE.crt
new file mode 100644
index 00000000..e5b34e4a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddeltaCRLTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest2EE.crt
new file mode 100644
index 00000000..c61a6460
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest3EE.crt
new file mode 100644
index 00000000..53103323
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest6EE.crt
new file mode 100644
index 00000000..9236346e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest8EE.crt
new file mode 100644
index 00000000..3520f6a3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest9EE.crt
new file mode 100644
index 00000000..5982bb6a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvaliddistributionPointTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest1EE.crt
new file mode 100644
index 00000000..b6fe6618
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest4EE.crt
new file mode 100644
index 00000000..e6a924a1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest5EE.crt
new file mode 100644
index 00000000..20c40a49
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest6EE.crt
new file mode 100644
index 00000000..03c8a320
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitAnyPolicyTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest1EE.crt
new file mode 100644
index 00000000..f028a76f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest3EE.crt
new file mode 100644
index 00000000..3393af56
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest5EE.crt
new file mode 100644
index 00000000..37468142
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest6EE.crt
new file mode 100644
index 00000000..9f7eafa2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidinhibitPolicyMappingTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt
new file mode 100644
index 00000000..888f7e2a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt
new file mode 100644
index 00000000..43b0d958
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt
new file mode 100644
index 00000000..fbfb4c4e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt
new file mode 100644
index 00000000..47dbe8a2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsAttributeCertsTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsAttributeCertsTest14EE.crt
new file mode 100644
index 00000000..60e0f7db
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsAttributeCertsTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsCACertsTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsCACertsTest12EE.crt
new file mode 100644
index 00000000..c0ada128
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsCACertsTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsUserCertsTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsUserCertsTest11EE.crt
new file mode 100644
index 00000000..acf11998
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlyContainsUserCertsTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest15EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest15EE.crt
new file mode 100644
index 00000000..45460ee0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest15EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest16EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest16EE.crt
new file mode 100644
index 00000000..b82e84e6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest16EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest17EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest17EE.crt
new file mode 100644
index 00000000..d29a9ff0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest17EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest20EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest20EE.crt
new file mode 100644
index 00000000..431d6007
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest20EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest21EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest21EE.crt
new file mode 100644
index 00000000..68bf8f9a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidonlySomeReasonsTest21EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest10EE.crt
new file mode 100644
index 00000000..788389d3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest11EE.crt
new file mode 100644
index 00000000..01ea4d0b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest12EE.crt
new file mode 100644
index 00000000..23164160
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest5EE.crt
new file mode 100644
index 00000000..7164f04f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest6EE.crt
new file mode 100644
index 00000000..eec5f9de
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest9EE.crt
new file mode 100644
index 00000000..6a063a61
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidpathLenConstraintTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000CRLnextUpdateTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000CRLnextUpdateTest12EE.crt
new file mode 100644
index 00000000..634a08e5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000CRLnextUpdateTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt
new file mode 100644
index 00000000..88916af6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest3EE.crt
new file mode 100644
index 00000000..38f98e47
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest5EE.crt
new file mode 100644
index 00000000..ca3ea17b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/InvalidrequireExplicitPolicyTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/LongSerialNumberCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/LongSerialNumberCACert.crt
new file mode 100644
index 00000000..6aaf3d0a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/LongSerialNumberCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Mapping1to2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Mapping1to2CACert.crt
new file mode 100644
index 00000000..a458115a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Mapping1to2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingFromanyPolicyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingFromanyPolicyCACert.crt
new file mode 100644
index 00000000..812da596
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingFromanyPolicyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingToanyPolicyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingToanyPolicyCACert.crt
new file mode 100644
index 00000000..42effeb7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MappingToanyPolicyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MissingbasicConstraintsCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MissingbasicConstraintsCACert.crt
new file mode 100644
index 00000000..17ebf252
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/MissingbasicConstraintsCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NameOrderingCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NameOrderingCACert.crt
new file mode 100644
index 00000000..6b744db0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NameOrderingCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NegativeSerialNumberCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NegativeSerialNumberCACert.crt
new file mode 100644
index 00000000..57fc9330
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NegativeSerialNumberCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoCRLCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoCRLCACert.crt
new file mode 100644
index 00000000..acd908c6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoCRLCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoPoliciesCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoPoliciesCACert.crt
new file mode 100644
index 00000000..5e2a3fc7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoPoliciesCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoissuingDistributionPointCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoissuingDistributionPointCACert.crt
new file mode 100644
index 00000000..bf4f8140
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/NoissuingDistributionPointCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OldCRLnextUpdateCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OldCRLnextUpdateCACert.crt
new file mode 100644
index 00000000..c9fb043b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OldCRLnextUpdateCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OverlappingPoliciesTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OverlappingPoliciesTest6EE.crt
new file mode 100644
index 00000000..56d136cf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/OverlappingPoliciesTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3CACert.crt
new file mode 100644
index 00000000..f9ed7b75
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subCACert.crt
new file mode 100644
index 00000000..2029d6ba
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subsubCACert.crt
new file mode 100644
index 00000000..50e7fcd2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P12Mapping1to3subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234CACert.crt
new file mode 100644
index 00000000..d7b3028d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234subCACert.crt
new file mode 100644
index 00000000..8648ddec
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1Mapping1to234subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1anyPolicyMapping1to2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1anyPolicyMapping1to2CACert.crt
new file mode 100644
index 00000000..85e39fea
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/P1anyPolicyMapping1to2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PanyPolicyMapping1to2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PanyPolicyMapping1to2CACert.crt
new file mode 100644
index 00000000..5abbb788
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PanyPolicyMapping1to2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234CACert.crt
new file mode 100644
index 00000000..9a5eb5b7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subCAP123Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subCAP123Cert.crt
new file mode 100644
index 00000000..9b385455
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subCAP123Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subsubCAP123P12Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subsubCAP123P12Cert.crt
new file mode 100644
index 00000000..4990a9b9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP1234subsubCAP123P12Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123CACert.crt
new file mode 100644
index 00000000..03509d17
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subCAP12Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subCAP12Cert.crt
new file mode 100644
index 00000000..0009819f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subCAP12Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P1Cert.crt
new file mode 100644
index 00000000..669c1819
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P2Cert.crt
new file mode 100644
index 00000000..faa7516b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubCAP12P2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt
new file mode 100644
index 00000000..44346d5c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12CACert.crt
new file mode 100644
index 00000000..27bf5241
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subCAP1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subCAP1Cert.crt
new file mode 100644
index 00000000..9a24328a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subCAP1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subsubCAP1P2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subsubCAP1P2Cert.crt
new file mode 100644
index 00000000..49cc0ed6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP12subsubCAP1P2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCA2Cert.crt
new file mode 100644
index 00000000..ccbedc69
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCACert.crt
new file mode 100644
index 00000000..ce66a79b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP2subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP3CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP3CACert.crt
new file mode 100644
index 00000000..90c4d266
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/PoliciesP3CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280MandatoryAttributeTypesCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280MandatoryAttributeTypesCACert.crt
new file mode 100644
index 00000000..fa0e1c8f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280MandatoryAttributeTypesCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280OptionalAttributeTypesCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280OptionalAttributeTypesCACert.crt
new file mode 100644
index 00000000..973373b1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RFC3280OptionalAttributeTypesCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RevokedsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RevokedsubCACert.crt
new file mode 100644
index 00000000..edbd547f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RevokedsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt
new file mode 100644
index 00000000..658f20cf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TrustAnchorRootCertificate.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TrustAnchorRootCertificate.crt
new file mode 100644
index 00000000..21f520ee
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TrustAnchorRootCertificate.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TwoCRLsCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TwoCRLsCACert.crt
new file mode 100644
index 00000000..c6389d36
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/TwoCRLsCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UIDCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UIDCACert.crt
new file mode 100644
index 00000000..d852bc09
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UIDCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringCaseInsensitiveMatchCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringCaseInsensitiveMatchCACert.crt
new file mode 100644
index 00000000..c59715d5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringCaseInsensitiveMatchCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringEncodedNamesCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringEncodedNamesCACert.crt
new file mode 100644
index 00000000..68d49e02
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UTF8StringEncodedNamesCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLEntryExtensionCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLEntryExtensionCACert.crt
new file mode 100644
index 00000000..8c81c374
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLEntryExtensionCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLExtensionCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLExtensionCACert.crt
new file mode 100644
index 00000000..db7d39e5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UnknownCRLExtensionCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest15EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest15EE.crt
new file mode 100644
index 00000000..e912cdfa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest15EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest16EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest16EE.crt
new file mode 100644
index 00000000..ec04e1f3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest16EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest17EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest17EE.crt
new file mode 100644
index 00000000..f78a47d6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest17EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest18EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest18EE.crt
new file mode 100644
index 00000000..cc5cf5a7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest18EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest19EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest19EE.crt
new file mode 100644
index 00000000..3df534a9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/UserNoticeQualifierTest19EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt
new file mode 100644
index 00000000..034de7fe
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt
new file mode 100644
index 00000000..199afb76
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt
new file mode 100644
index 00000000..d4323162
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt
new file mode 100644
index 00000000..b54a8b0f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidCertificatePathTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidCertificatePathTest1EE.crt
new file mode 100644
index 00000000..26985c9f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidCertificatePathTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest30EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest30EE.crt
new file mode 100644
index 00000000..ec7d43d4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest30EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest32EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest32EE.crt
new file mode 100644
index 00000000..ed88860b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNSnameConstraintsTest32EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNandRFC822nameConstraintsTest27EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNandRFC822nameConstraintsTest27EE.crt
new file mode 100644
index 00000000..73759dca2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNandRFC822nameConstraintsTest27EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest11EE.crt
new file mode 100644
index 00000000..1af47ba8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest14EE.crt
new file mode 100644
index 00000000..ff249f05
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest18EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest18EE.crt
new file mode 100644
index 00000000..b658d671
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest18EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest19EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest19EE.crt
new file mode 100644
index 00000000..f4e2b844
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest19EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest1EE.crt
new file mode 100644
index 00000000..4c86f9b7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest4EE.crt
new file mode 100644
index 00000000..beb40136
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest5EE.crt
new file mode 100644
index 00000000..b68b6f7c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest6EE.crt
new file mode 100644
index 00000000..9aff6e87
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDNnameConstraintsTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSAParameterInheritanceTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSAParameterInheritanceTest5EE.crt
new file mode 100644
index 00000000..8fe2af45
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSAParameterInheritanceTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSASignaturesTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSASignaturesTest4EE.crt
new file mode 100644
index 00000000..5b1cbc82
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidDSASignaturesTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt
new file mode 100644
index 00000000..a22f2e6c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt
new file mode 100644
index 00000000..15689c18
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt
new file mode 100644
index 00000000..385bb1ea
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest22EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest22EE.crt
new file mode 100644
index 00000000..6706cf1c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest22EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest24EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest24EE.crt
new file mode 100644
index 00000000..bea72fe2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest24EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest25EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest25EE.crt
new file mode 100644
index 00000000..994c90ad
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidIDPwithindirectCRLTest25EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest16EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest16EE.crt
new file mode 100644
index 00000000..11ba787a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest16EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest17EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest17EE.crt
new file mode 100644
index 00000000..75504db3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidLongSerialNumberTest17EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingCapitalizationTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingCapitalizationTest5EE.crt
new file mode 100644
index 00000000..5b633871
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingCapitalizationTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest3EE.crt
new file mode 100644
index 00000000..2aef73cf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest4EE.crt
new file mode 100644
index 00000000..6890cdd8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameChainingWhitespaceTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameUIDsTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameUIDsTest6EE.crt
new file mode 100644
index 00000000..3cddea4a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNameUIDsTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNegativeSerialNumberTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNegativeSerialNumberTest14EE.crt
new file mode 100644
index 00000000..139a086d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNegativeSerialNumberTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNoissuingDistributionPointTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNoissuingDistributionPointTest10EE.crt
new file mode 100644
index 00000000..bd8ca38b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidNoissuingDistributionPointTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest11EE.crt
new file mode 100644
index 00000000..9d19ad19
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest12EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest12EE.crt
new file mode 100644
index 00000000..76b9fe52
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest12EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest13EE.crt
new file mode 100644
index 00000000..7db33052
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest14EE.crt
new file mode 100644
index 00000000..57bf4265
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest1EE.crt
new file mode 100644
index 00000000..436cb9e0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest3EE.crt
new file mode 100644
index 00000000..c835b0b2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest5EE.crt
new file mode 100644
index 00000000..faaeb9e4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest6EE.crt
new file mode 100644
index 00000000..2cd44332
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest9EE.crt
new file mode 100644
index 00000000..4debc294
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidPolicyMappingTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt
new file mode 100644
index 00000000..c3e97766
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt
new file mode 100644
index 00000000..f33c9d50
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest21EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest21EE.crt
new file mode 100644
index 00000000..743e9eb9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest21EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest23EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest23EE.crt
new file mode 100644
index 00000000..f8703ed8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest23EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest25EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest25EE.crt
new file mode 100644
index 00000000..e89ae7f8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRFC822nameConstraintsTest25EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt
new file mode 100644
index 00000000..2e16e4e4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt
new file mode 100644
index 00000000..2e7e9954
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt
new file mode 100644
index 00000000..76402471
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt
new file mode 100644
index 00000000..b4b282d9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt
new file mode 100644
index 00000000..0bad35f7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt
new file mode 100644
index 00000000..1535ef86
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt
new file mode 100644
index 00000000..781ce0d3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidTwoCRLsTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidTwoCRLsTest7EE.crt
new file mode 100644
index 00000000..e04433ad
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidTwoCRLsTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest34EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest34EE.crt
new file mode 100644
index 00000000..b554f91e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest34EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest36EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest36EE.crt
new file mode 100644
index 00000000..8b1f00f2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidURInameConstraintsTest36EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt
new file mode 100644
index 00000000..8a9d0ca8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringEncodedNamesTest9EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringEncodedNamesTest9EE.crt
new file mode 100644
index 00000000..c901690b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUTF8StringEncodedNamesTest9EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt
new file mode 100644
index 00000000..8c47e3f0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidbasicConstraintsNotCriticalTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidbasicConstraintsNotCriticalTest4EE.crt
new file mode 100644
index 00000000..543710fd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidbasicConstraintsNotCriticalTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest28EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest28EE.crt
new file mode 100644
index 00000000..1448aa4a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest28EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest29EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest29EE.crt
new file mode 100644
index 00000000..ec442e1b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest29EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest30EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest30EE.crt
new file mode 100644
index 00000000..2dc23676
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest30EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest33EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest33EE.crt
new file mode 100644
index 00000000..65b28440
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidcRLIssuerTest33EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest2EE.crt
new file mode 100644
index 00000000..0d24df05
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest5EE.crt
new file mode 100644
index 00000000..2bdaaf21
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest7EE.crt
new file mode 100644
index 00000000..3f679219
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest8EE.crt
new file mode 100644
index 00000000..65861281
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddeltaCRLTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest1EE.crt
new file mode 100644
index 00000000..487cc2f9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest4EE.crt
new file mode 100644
index 00000000..3782e79a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest5EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest5EE.crt
new file mode 100644
index 00000000..07a8c494
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest5EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest7EE.crt
new file mode 100644
index 00000000..948f37fb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValiddistributionPointTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitAnyPolicyTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitAnyPolicyTest2EE.crt
new file mode 100644
index 00000000..dc61d523
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitAnyPolicyTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest2EE.crt
new file mode 100644
index 00000000..fc432a1d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest4EE.crt
new file mode 100644
index 00000000..dce69276
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidinhibitPolicyMappingTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidkeyUsageNotCriticalTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidkeyUsageNotCriticalTest3EE.crt
new file mode 100644
index 00000000..bddbb9a2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidkeyUsageNotCriticalTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlyContainsCACertsTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlyContainsCACertsTest13EE.crt
new file mode 100644
index 00000000..f35f5de2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlyContainsCACertsTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest18EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest18EE.crt
new file mode 100644
index 00000000..7c0e1ded
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest18EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest19EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest19EE.crt
new file mode 100644
index 00000000..f3a811c1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidonlySomeReasonsTest19EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest13EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest13EE.crt
new file mode 100644
index 00000000..dcf88340
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest13EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest14EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest14EE.crt
new file mode 100644
index 00000000..66fe2564
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest14EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest7EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest7EE.crt
new file mode 100644
index 00000000..5f689eaf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest7EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest8EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest8EE.crt
new file mode 100644
index 00000000..2357bebf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidpathLenConstraintTest8EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Validpre2000UTCnotBeforeDateTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Validpre2000UTCnotBeforeDateTest3EE.crt
new file mode 100644
index 00000000..5a614992
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/Validpre2000UTCnotBeforeDateTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest1EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest1EE.crt
new file mode 100644
index 00000000..10399269
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest1EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest2EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest2EE.crt
new file mode 100644
index 00000000..451c2d81
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest2EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest4EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest4EE.crt
new file mode 100644
index 00000000..a2fa2f12
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/ValidrequireExplicitPolicyTest4EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/WrongCRLCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/WrongCRLCACert.crt
new file mode 100644
index 00000000..4cc51952
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/WrongCRLCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/anyPolicyCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/anyPolicyCACert.crt
new file mode 100644
index 00000000..4d9fb79b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/anyPolicyCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsCriticalcAFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsCriticalcAFalseCACert.crt
new file mode 100644
index 00000000..12a8b503
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsCriticalcAFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalCACert.crt
new file mode 100644
index 00000000..8f9da1eb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalcAFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalcAFalseCACert.crt
new file mode 100644
index 00000000..ca61262e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/basicConstraintsNotCriticalcAFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA1Cert.crt
new file mode 100644
index 00000000..47f74eb4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA2Cert.crt
new file mode 100644
index 00000000..a99dd403
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA3Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA3Cert.crt
new file mode 100644
index 00000000..eeaaa36e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLCA3Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLIndicatorNoBaseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLIndicatorNoBaseCACert.crt
new file mode 100644
index 00000000..5ec06b3d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/deltaCRLIndicatorNoBaseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint1CACert.crt
new file mode 100644
index 00000000..1e74bed0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint2CACert.crt
new file mode 100644
index 00000000..a6d37be9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/distributionPoint2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA1Cert.crt
new file mode 100644
index 00000000..ef079f65
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA2Cert.crt
new file mode 100644
index 00000000..4bfc0b5e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3Cert.crt
new file mode 100644
index 00000000..f0787f0c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3cRLIssuerCert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3cRLIssuerCert.crt
new file mode 100644
index 00000000..f8089937
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA3cRLIssuerCert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4Cert.crt
new file mode 100644
index 00000000..6ebe43ce
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4cRLIssuerCert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4cRLIssuerCert.crt
new file mode 100644
index 00000000..0468b086
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA4cRLIssuerCert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA5Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA5Cert.crt
new file mode 100644
index 00000000..90ba7d7e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA5Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA6Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA6Cert.crt
new file mode 100644
index 00000000..3c5781e9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/indirectCRLCA6Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy0CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy0CACert.crt
new file mode 100644
index 00000000..47496897
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy0CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1CACert.crt
new file mode 100644
index 00000000..8d35b0e6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedCACert.crt
new file mode 100644
index 00000000..0362dde8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt
new file mode 100644
index 00000000..1d24bc19
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA1Cert.crt
new file mode 100644
index 00000000..af02467c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA2Cert.crt
new file mode 100644
index 00000000..e8590f72
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCAIAP5Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCAIAP5Cert.crt
new file mode 100644
index 00000000..75bc59e4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subCAIAP5Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subsubCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subsubCA2Cert.crt
new file mode 100644
index 00000000..cbf40ff0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy1subsubCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5CACert.crt
new file mode 100644
index 00000000..3765f6e3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subCACert.crt
new file mode 100644
index 00000000..f75006d1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subsubCACert.crt
new file mode 100644
index 00000000..f2898ea0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicy5subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicyTest3EE.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicyTest3EE.crt
new file mode 100644
index 00000000..850d6499
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitAnyPolicyTest3EE.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0CACert.crt
new file mode 100644
index 00000000..b4934e89
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0subCACert.crt
new file mode 100644
index 00000000..79f45b82
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping0subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12CACert.crt
new file mode 100644
index 00000000..57dd683c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCACert.crt
new file mode 100644
index 00000000..1e6bd700
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt
new file mode 100644
index 00000000..e6834684
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCACert.crt
new file mode 100644
index 00000000..f73f4d29
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt
new file mode 100644
index 00000000..fe32edaf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1CACert.crt
new file mode 100644
index 00000000..b3bff466
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt
new file mode 100644
index 00000000..399bd824
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt
new file mode 100644
index 00000000..cd2ce944
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subCACert.crt
new file mode 100644
index 00000000..31d9af5d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subsubCACert.crt
new file mode 100644
index 00000000..13e78f0c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping1P1subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5CACert.crt
new file mode 100644
index 00000000..86ea4263
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subCACert.crt
new file mode 100644
index 00000000..788622cb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubCACert.crt
new file mode 100644
index 00000000..d4a025e3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubsubCACert.crt
new file mode 100644
index 00000000..2c0e6e88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/inhibitPolicyMapping5subsubsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalcRLSignFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalcRLSignFalseCACert.crt
new file mode 100644
index 00000000..a50545a1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalcRLSignFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalkeyCertSignFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalkeyCertSignFalseCACert.crt
new file mode 100644
index 00000000..f6824d3a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageCriticalkeyCertSignFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalCACert.crt
new file mode 100644
index 00000000..344f7d90
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalcRLSignFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalcRLSignFalseCACert.crt
new file mode 100644
index 00000000..c02d6f49
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalcRLSignFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt
new file mode 100644
index 00000000..b9c46b5b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1CACert.crt
new file mode 100644
index 00000000..5379f1fb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1SelfIssuedCACert.crt
new file mode 100644
index 00000000..75f1f7e6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA1Cert.crt
new file mode 100644
index 00000000..670291b8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA2Cert.crt
new file mode 100644
index 00000000..a010eee1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA3Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA3Cert.crt
new file mode 100644
index 00000000..b31c28a6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN1subCA3Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN2CACert.crt
new file mode 100644
index 00000000..3aab55b4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3CACert.crt
new file mode 100644
index 00000000..f1af18ea
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA1Cert.crt
new file mode 100644
index 00000000..e40c5f06
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA2Cert.crt
new file mode 100644
index 00000000..94247454
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN3subCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN4CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN4CACert.crt
new file mode 100644
index 00000000..141eb726
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN4CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN5CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN5CACert.crt
new file mode 100644
index 00000000..a0d06284
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDN5CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS1CACert.crt
new file mode 100644
index 00000000..10f0b35d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS2CACert.crt
new file mode 100644
index 00000000..83fabc56
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsDNS2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA1Cert.crt
new file mode 100644
index 00000000..07fcc37a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA2Cert.crt
new file mode 100644
index 00000000..2001bfa3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA3Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA3Cert.crt
new file mode 100644
index 00000000..e3723693
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsRFC822CA3Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI1CACert.crt
new file mode 100644
index 00000000..d0dbca5e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI2CACert.crt
new file mode 100644
index 00000000..bf988e6d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/nameConstraintsURI2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsAttributeCertsCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsAttributeCertsCACert.crt
new file mode 100644
index 00000000..6855fbe4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsAttributeCertsCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsCACertsCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsCACertsCACert.crt
new file mode 100644
index 00000000..055d8aac
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsCACertsCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsUserCertsCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsUserCertsCACert.crt
new file mode 100644
index 00000000..f8fc85e7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlyContainsUserCertsCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA1Cert.crt
new file mode 100644
index 00000000..26ee389a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA2Cert.crt
new file mode 100644
index 00000000..3c444e1e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA3Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA3Cert.crt
new file mode 100644
index 00000000..3b096997
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA3Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA4Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA4Cert.crt
new file mode 100644
index 00000000..4889d5ce
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/onlySomeReasonsCA4Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0CACert.crt
new file mode 100644
index 00000000..73c9433c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0SelfIssuedCACert.crt
new file mode 100644
index 00000000..f66228e1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCA2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCA2Cert.crt
new file mode 100644
index 00000000..c5cdea3d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCA2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCACert.crt
new file mode 100644
index 00000000..c51de222
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint0subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1CACert.crt
new file mode 100644
index 00000000..b1da15b8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedCACert.crt
new file mode 100644
index 00000000..02aeffa9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedsubCACert.crt
new file mode 100644
index 00000000..0a94f5f4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1SelfIssuedsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1subCACert.crt
new file mode 100644
index 00000000..a84fb534
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint1subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6CACert.crt
new file mode 100644
index 00000000..d89052bd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA0Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA0Cert.crt
new file mode 100644
index 00000000..4b220169
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA0Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA1Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA1Cert.crt
new file mode 100644
index 00000000..b25ba34c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA1Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA4Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA4Cert.crt
new file mode 100644
index 00000000..ca87ee8b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subCA4Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA00Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA00Cert.crt
new file mode 100644
index 00000000..2b88eb6d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA00Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA11Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA11Cert.crt
new file mode 100644
index 00000000..de511c4d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA11Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA41Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA41Cert.crt
new file mode 100644
index 00000000..c6e6096b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubCA41Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA11XCert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA11XCert.crt
new file mode 100644
index 00000000..9c9dc4e1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA11XCert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA41XCert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA41XCert.crt
new file mode 100644
index 00000000..2729261c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pathLenConstraint6subsubsubCA41XCert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pre2000CRLnextUpdateCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pre2000CRLnextUpdateCACert.crt
new file mode 100644
index 00000000..1a79b815
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/pre2000CRLnextUpdateCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0CACert.crt
new file mode 100644
index 00000000..0eb93be3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subCACert.crt
new file mode 100644
index 00000000..f96129ec
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubCACert.crt
new file mode 100644
index 00000000..c0d9b49c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubsubCACert.crt
new file mode 100644
index 00000000..497d53a8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy0subsubsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10CACert.crt
new file mode 100644
index 00000000..b3406b12
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subCACert.crt
new file mode 100644
index 00000000..1544bbb7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubCACert.crt
new file mode 100644
index 00000000..0166d99f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubsubCACert.crt
new file mode 100644
index 00000000..8018f6af
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy10subsubsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2CACert.crt
new file mode 100644
index 00000000..7ec4e494
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedCACert.crt
new file mode 100644
index 00000000..285a05c7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt
new file mode 100644
index 00000000..f29b37f2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2subCACert.crt
new file mode 100644
index 00000000..a1f20a3a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy2subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4CACert.crt
new file mode 100644
index 00000000..c2a9c464
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subCACert.crt
new file mode 100644
index 00000000..9f9ea5bf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubCACert.crt
new file mode 100644
index 00000000..3d0f2785
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubsubCACert.crt
new file mode 100644
index 00000000..a14f9d47
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy4subsubsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5CACert.crt
new file mode 100644
index 00000000..ef2010b4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subCACert.crt
new file mode 100644
index 00000000..99d31d16
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubCACert.crt
new file mode 100644
index 00000000..99afa4d1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubsubCACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubsubCACert.crt
new file mode 100644
index 00000000..9abe48dd
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy5subsubsubCACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7CACert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7CACert.crt
new file mode 100644
index 00000000..cac6bb62
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7CACert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subCARE2Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subCARE2Cert.crt
new file mode 100644
index 00000000..d55d884c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subCARE2Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt
new file mode 100644
index 00000000..1c9aec85
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt
new file mode 100644
index 00000000..ecd5f45a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLIssuerNameCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLIssuerNameCACRL.crl
new file mode 100644
index 00000000..d4871b55
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLIssuerNameCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLSignatureCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLSignatureCACRL.crl
new file mode 100644
index 00000000..b1658c34
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadCRLSignatureCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadSignedCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadSignedCACRL.crl
new file mode 100644
index 00000000..e0ded9b4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadSignedCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotAfterDateCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotAfterDateCACRL.crl
new file mode 100644
index 00000000..1ec2a0e8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotAfterDateCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotBeforeDateCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotBeforeDateCACRL.crl
new file mode 100644
index 00000000..1a96d0f7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BadnotBeforeDateCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl
new file mode 100644
index 00000000..fed48645
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedNewKeyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedNewKeyCACRL.crl
new file mode 100644
index 00000000..7370ed29
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedNewKeyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedOldKeyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedOldKeyCACRL.crl
new file mode 100644
index 00000000..dee61837
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/BasicSelfIssuedOldKeyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Entries b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Entries
new file mode 100644
index 00000000..597fe196
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Entries
@@ -0,0 +1,170 @@
+/BadCRLIssuerNameCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BadCRLSignatureCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BadSignedCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BadnotAfterDateCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BadnotBeforeDateCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BasicSelfIssuedCRLSigningKeyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BasicSelfIssuedNewKeyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/BasicSelfIssuedOldKeyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/DSACACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/DSAParametersInheritedCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/GeneralizedTimeCRLnextUpdateCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/GoodCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/GoodsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/GoodsubCAPanyPolicyMapping1to2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/LongSerialNumberCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/Mapping1to2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/MappingFromanyPolicyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/MappingToanyPolicyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/MissingbasicConstraintsCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/NameOrderCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/NegativeSerialNumberCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/NoPoliciesCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/NoissuingDistributionPointCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/OldCRLnextUpdateCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P12Mapping1to3subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P1Mapping1to234CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P1Mapping1to234subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/P1anyPolicyMapping1to2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PanyPolicyMapping1to2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234subCAP123CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP1234subsubCAP123P12CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subCAP12CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubCAP12P1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubCAP2P2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP123subsubsubCAP12P2P1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12subCAP1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP12subsubCAP1P2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP2subCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP2subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/PoliciesP3CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/RFC3280MandatoryAttributeTypesCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/RFC3280OptionalAttributeTypesCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/RevokedsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/RolloverfromPrintableStringtoUTF8StringCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/TrustAnchorRootCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/TwoCRLsCABadCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/TwoCRLsCAGoodCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/UIDCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/UTF8StringCaseInsensitiveMatchCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/UTF8StringEncodedNamesCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/UnknownCRLEntryExtensionCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/UnknownCRLExtensionCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/WrongCRLCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/anyPolicyCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsCriticalcAFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsNotCriticalCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/basicConstraintsNotCriticalcAFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA1deltaCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA2deltaCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA3CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLCA3deltaCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/deltaCRLIndicatorNoBaseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/distributionPoint1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/distributionPoint2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA3CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA3cRLIssuerCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA4cRLIssuerCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/indirectCRLCA5CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy0CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subCAIAP5CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy1subsubCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitAnyPolicy5subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping0CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping0subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subCAIPM5CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping1P1subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/inhibitPolicyMapping5subsubsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageCriticalcRLSignFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageCriticalkeyCertSignFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalcRLSignFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/keyUsageNotCriticalkeyCertSignFalseCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN1subCA3CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3subCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN3subCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN4CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDN5CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDNS1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsDNS2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsRFC822CA3CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsURI1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/nameConstraintsURI2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsAttributeCertsCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsCACertsCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlyContainsUserCertsCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA1compromiseCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA1otherreasonsCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA2CRL1.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA2CRL2.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA3compromiseCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA3otherreasonsCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA4compromiseCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/onlySomeReasonsCA4otherreasonsCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0subCA2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint0subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint1subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA0CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA1CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subCA4CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA00CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA11CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubCA41CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubsubCA11XCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pathLenConstraint6subsubsubCA41XCRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/pre2000CRLnextUpdateCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy0subsubsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy10subsubsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy2subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy4subsubsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy5subsubsubCACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7CACRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subCARE2CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subsubCARE2RE4CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl/1.1/Tue Jul 25 22:44:25 2006//
+D
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Repository b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Repository
new file mode 100644
index 00000000..96a42da1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/cert/pkix/pkits/data/crls
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Root b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSACACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSACACRL.crl
new file mode 100644
index 00000000..46463c8a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSACACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSAParametersInheritedCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSAParametersInheritedCACRL.crl
new file mode 100644
index 00000000..5bf72452
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/DSAParametersInheritedCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GeneralizedTimeCRLnextUpdateCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GeneralizedTimeCRLnextUpdateCACRL.crl
new file mode 100644
index 00000000..40387d3c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GeneralizedTimeCRLnextUpdateCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodCACRL.crl
new file mode 100644
index 00000000..2fdc3cc1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCACRL.crl
new file mode 100644
index 00000000..963d7033
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl
new file mode 100644
index 00000000..9c5d1b27
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/LongSerialNumberCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/LongSerialNumberCACRL.crl
new file mode 100644
index 00000000..55f39b84
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/LongSerialNumberCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/Mapping1to2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/Mapping1to2CACRL.crl
new file mode 100644
index 00000000..36e07e1e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/Mapping1to2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingFromanyPolicyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingFromanyPolicyCACRL.crl
new file mode 100644
index 00000000..025b6bbb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingFromanyPolicyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingToanyPolicyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingToanyPolicyCACRL.crl
new file mode 100644
index 00000000..99f12535
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MappingToanyPolicyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MissingbasicConstraintsCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MissingbasicConstraintsCACRL.crl
new file mode 100644
index 00000000..f91729cc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/MissingbasicConstraintsCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NameOrderCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NameOrderCACRL.crl
new file mode 100644
index 00000000..4cd20158
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NameOrderCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NegativeSerialNumberCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NegativeSerialNumberCACRL.crl
new file mode 100644
index 00000000..99514d7a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NegativeSerialNumberCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoPoliciesCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoPoliciesCACRL.crl
new file mode 100644
index 00000000..b77586bc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoPoliciesCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoissuingDistributionPointCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoissuingDistributionPointCACRL.crl
new file mode 100644
index 00000000..c7d5b1d6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/NoissuingDistributionPointCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/OldCRLnextUpdateCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/OldCRLnextUpdateCACRL.crl
new file mode 100644
index 00000000..f121dff3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/OldCRLnextUpdateCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3CACRL.crl
new file mode 100644
index 00000000..451d1986
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subCACRL.crl
new file mode 100644
index 00000000..b063e6bc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subsubCACRL.crl
new file mode 100644
index 00000000..6dcdf05d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P12Mapping1to3subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234CACRL.crl
new file mode 100644
index 00000000..70febec7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234subCACRL.crl
new file mode 100644
index 00000000..8ee77992
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1Mapping1to234subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1anyPolicyMapping1to2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1anyPolicyMapping1to2CACRL.crl
new file mode 100644
index 00000000..8cf52dc8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/P1anyPolicyMapping1to2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PanyPolicyMapping1to2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PanyPolicyMapping1to2CACRL.crl
new file mode 100644
index 00000000..51482deb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PanyPolicyMapping1to2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234CACRL.crl
new file mode 100644
index 00000000..48c6b1a6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subCAP123CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subCAP123CRL.crl
new file mode 100644
index 00000000..aa842631
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subCAP123CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subsubCAP123P12CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subsubCAP123P12CRL.crl
new file mode 100644
index 00000000..ae1a0194
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP1234subsubCAP123P12CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123CACRL.crl
new file mode 100644
index 00000000..deb37062
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subCAP12CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subCAP12CRL.crl
new file mode 100644
index 00000000..ecd65f87
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subCAP12CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP12P1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP12P1CRL.crl
new file mode 100644
index 00000000..51f09f6d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP12P1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP2P2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP2P2CRL.crl
new file mode 100644
index 00000000..5d6fb365
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubCAP2P2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl
new file mode 100644
index 00000000..07908f67
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12CACRL.crl
new file mode 100644
index 00000000..5b090b05
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subCAP1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subCAP1CRL.crl
new file mode 100644
index 00000000..d2f29b79
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subCAP1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subsubCAP1P2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subsubCAP1P2CRL.crl
new file mode 100644
index 00000000..bd4cf757
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP12subsubCAP1P2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCA2CRL.crl
new file mode 100644
index 00000000..774bc732
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCACRL.crl
new file mode 100644
index 00000000..7d7ba76b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP2subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP3CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP3CACRL.crl
new file mode 100644
index 00000000..9d81c6da
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/PoliciesP3CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280MandatoryAttributeTypesCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280MandatoryAttributeTypesCACRL.crl
new file mode 100644
index 00000000..63ed6556
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280MandatoryAttributeTypesCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280OptionalAttributeTypesCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280OptionalAttributeTypesCACRL.crl
new file mode 100644
index 00000000..e088ab14
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RFC3280OptionalAttributeTypesCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RevokedsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RevokedsubCACRL.crl
new file mode 100644
index 00000000..c77ffa35
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RevokedsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl
new file mode 100644
index 00000000..c7f5c7ac
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TrustAnchorRootCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TrustAnchorRootCRL.crl
new file mode 100644
index 00000000..d597ebc2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TrustAnchorRootCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCABadCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCABadCRL.crl
new file mode 100644
index 00000000..fba92fae
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCABadCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCAGoodCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCAGoodCRL.crl
new file mode 100644
index 00000000..fcb7488a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/TwoCRLsCAGoodCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UIDCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UIDCACRL.crl
new file mode 100644
index 00000000..0da091a6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UIDCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringCaseInsensitiveMatchCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringCaseInsensitiveMatchCACRL.crl
new file mode 100644
index 00000000..9ee2a235
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringCaseInsensitiveMatchCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringEncodedNamesCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringEncodedNamesCACRL.crl
new file mode 100644
index 00000000..3d7de002
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UTF8StringEncodedNamesCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLEntryExtensionCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLEntryExtensionCACRL.crl
new file mode 100644
index 00000000..efbdae41
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLEntryExtensionCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLExtensionCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLExtensionCACRL.crl
new file mode 100644
index 00000000..de711139
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/UnknownCRLExtensionCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/WrongCRLCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/WrongCRLCACRL.crl
new file mode 100644
index 00000000..d597ebc2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/WrongCRLCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/anyPolicyCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/anyPolicyCACRL.crl
new file mode 100644
index 00000000..8506ea11
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/anyPolicyCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsCriticalcAFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsCriticalcAFalseCACRL.crl
new file mode 100644
index 00000000..15a7e3d1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsCriticalcAFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalCACRL.crl
new file mode 100644
index 00000000..9e5ac621
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalcAFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalcAFalseCACRL.crl
new file mode 100644
index 00000000..dfbbec9f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/basicConstraintsNotCriticalcAFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1CRL.crl
new file mode 100644
index 00000000..fb562aaa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1deltaCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1deltaCRL.crl
new file mode 100644
index 00000000..9a76c5cf
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA1deltaCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2CRL.crl
new file mode 100644
index 00000000..36d66fe6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2deltaCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2deltaCRL.crl
new file mode 100644
index 00000000..713d54a4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA2deltaCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3CRL.crl
new file mode 100644
index 00000000..4527c9a8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3deltaCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3deltaCRL.crl
new file mode 100644
index 00000000..bfb3c1d6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLCA3deltaCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLIndicatorNoBaseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLIndicatorNoBaseCACRL.crl
new file mode 100644
index 00000000..b9a591e1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/deltaCRLIndicatorNoBaseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint1CACRL.crl
new file mode 100644
index 00000000..1be74de2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint2CACRL.crl
new file mode 100644
index 00000000..5bdc1491
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/distributionPoint2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA1CRL.crl
new file mode 100644
index 00000000..6eed456c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3CRL.crl
new file mode 100644
index 00000000..02be1793
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3cRLIssuerCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3cRLIssuerCRL.crl
new file mode 100644
index 00000000..166a457e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA3cRLIssuerCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA4cRLIssuerCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA4cRLIssuerCRL.crl
new file mode 100644
index 00000000..b870a7fa
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA4cRLIssuerCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA5CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA5CRL.crl
new file mode 100644
index 00000000..25c2e814
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/indirectCRLCA5CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy0CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy0CACRL.crl
new file mode 100644
index 00000000..301f7456
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy0CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1CACRL.crl
new file mode 100644
index 00000000..ab136457
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA1CRL.crl
new file mode 100644
index 00000000..46c0e0c0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA2CRL.crl
new file mode 100644
index 00000000..1ee4b77e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCAIAP5CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCAIAP5CRL.crl
new file mode 100644
index 00000000..af4fff09
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subCAIAP5CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subsubCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subsubCA2CRL.crl
new file mode 100644
index 00000000..3b6b35c3
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy1subsubCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5CACRL.crl
new file mode 100644
index 00000000..07f5e3de
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subCACRL.crl
new file mode 100644
index 00000000..373bdebb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subsubCACRL.crl
new file mode 100644
index 00000000..e56b61c9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitAnyPolicy5subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0CACRL.crl
new file mode 100644
index 00000000..1ebad709
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0subCACRL.crl
new file mode 100644
index 00000000..e3f4f971
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping0subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12CACRL.crl
new file mode 100644
index 00000000..5291d66d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCACRL.crl
new file mode 100644
index 00000000..9c155a97
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl
new file mode 100644
index 00000000..dc7fe683
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCACRL.crl
new file mode 100644
index 00000000..9fcab42c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl
new file mode 100644
index 00000000..ebcdc5bb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1CACRL.crl
new file mode 100644
index 00000000..36c2b791
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subCACRL.crl
new file mode 100644
index 00000000..1fa7ac98
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subsubCACRL.crl
new file mode 100644
index 00000000..3b1ac99f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping1P1subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5CACRL.crl
new file mode 100644
index 00000000..a19deb75
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subCACRL.crl
new file mode 100644
index 00000000..c3ef6911
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubCACRL.crl
new file mode 100644
index 00000000..45df218a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubsubCACRL.crl
new file mode 100644
index 00000000..3ca93d4d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/inhibitPolicyMapping5subsubsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalcRLSignFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalcRLSignFalseCACRL.crl
new file mode 100644
index 00000000..6f02f808
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalcRLSignFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl
new file mode 100644
index 00000000..4abda766
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalCACRL.crl
new file mode 100644
index 00000000..358e4e6a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl
new file mode 100644
index 00000000..707c73c2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl
new file mode 100644
index 00000000..5e817b64
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1CACRL.crl
new file mode 100644
index 00000000..10c7389e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA1CRL.crl
new file mode 100644
index 00000000..9d33b7c9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA2CRL.crl
new file mode 100644
index 00000000..7a3949e5
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA3CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA3CRL.crl
new file mode 100644
index 00000000..22aa2f9b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN1subCA3CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN2CACRL.crl
new file mode 100644
index 00000000..da6fe6f8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3CACRL.crl
new file mode 100644
index 00000000..83fd3a5e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA1CRL.crl
new file mode 100644
index 00000000..8c6fb506
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA2CRL.crl
new file mode 100644
index 00000000..1797663c
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN3subCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN4CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN4CACRL.crl
new file mode 100644
index 00000000..ae9f73a8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN4CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN5CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN5CACRL.crl
new file mode 100644
index 00000000..46dbb881
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDN5CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS1CACRL.crl
new file mode 100644
index 00000000..94fa45e4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS2CACRL.crl
new file mode 100644
index 00000000..21409317
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsDNS2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA1CRL.crl
new file mode 100644
index 00000000..a4b04731
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA2CRL.crl
new file mode 100644
index 00000000..2042f6fc
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA3CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA3CRL.crl
new file mode 100644
index 00000000..8f207e51
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsRFC822CA3CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI1CACRL.crl
new file mode 100644
index 00000000..b19c9de7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI2CACRL.crl
new file mode 100644
index 00000000..3dbc011d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/nameConstraintsURI2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsAttributeCertsCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsAttributeCertsCACRL.crl
new file mode 100644
index 00000000..0993754a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsAttributeCertsCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsCACertsCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsCACertsCACRL.crl
new file mode 100644
index 00000000..621dfa9b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsCACertsCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsUserCertsCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsUserCertsCACRL.crl
new file mode 100644
index 00000000..1aee7c2b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlyContainsUserCertsCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1compromiseCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1compromiseCRL.crl
new file mode 100644
index 00000000..3d5ff65d
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1compromiseCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1otherreasonsCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1otherreasonsCRL.crl
new file mode 100644
index 00000000..83cce82f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA1otherreasonsCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL1.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL1.crl
new file mode 100644
index 00000000..eb408f27
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL1.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL2.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL2.crl
new file mode 100644
index 00000000..e333d265
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA2CRL2.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3compromiseCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3compromiseCRL.crl
new file mode 100644
index 00000000..6837068b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3compromiseCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3otherreasonsCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3otherreasonsCRL.crl
new file mode 100644
index 00000000..ef4ee3e0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA3otherreasonsCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4compromiseCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4compromiseCRL.crl
new file mode 100644
index 00000000..45fcc0bb
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4compromiseCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4otherreasonsCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4otherreasonsCRL.crl
new file mode 100644
index 00000000..0fca6819
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/onlySomeReasonsCA4otherreasonsCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0CACRL.crl
new file mode 100644
index 00000000..1e52e650
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCA2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCA2CRL.crl
new file mode 100644
index 00000000..69488c7b
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCA2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCACRL.crl
new file mode 100644
index 00000000..00295797
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint0subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1CACRL.crl
new file mode 100644
index 00000000..9c069801
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1subCACRL.crl
new file mode 100644
index 00000000..61d00764
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint1subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6CACRL.crl
new file mode 100644
index 00000000..779c2b78
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA0CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA0CRL.crl
new file mode 100644
index 00000000..30fee13e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA0CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA1CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA1CRL.crl
new file mode 100644
index 00000000..71eafbb4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA1CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA4CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA4CRL.crl
new file mode 100644
index 00000000..8d14b0c8
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subCA4CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA00CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA00CRL.crl
new file mode 100644
index 00000000..24ecdde9
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA00CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA11CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA11CRL.crl
new file mode 100644
index 00000000..51b4ab70
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA11CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA41CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA41CRL.crl
new file mode 100644
index 00000000..9e4e1818
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubCA41CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA11XCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA11XCRL.crl
new file mode 100644
index 00000000..5891e630
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA11XCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA41XCRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA41XCRL.crl
new file mode 100644
index 00000000..217e5e57
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pathLenConstraint6subsubsubCA41XCRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pre2000CRLnextUpdateCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pre2000CRLnextUpdateCACRL.crl
new file mode 100644
index 00000000..6315186f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/pre2000CRLnextUpdateCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0CACRL.crl
new file mode 100644
index 00000000..5ac2d276
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subCACRL.crl
new file mode 100644
index 00000000..569ff3e2
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubCACRL.crl
new file mode 100644
index 00000000..c614cbb1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubsubCACRL.crl
new file mode 100644
index 00000000..910c035f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy0subsubsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10CACRL.crl
new file mode 100644
index 00000000..7bfbf763
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subCACRL.crl
new file mode 100644
index 00000000..bc4845d4
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubCACRL.crl
new file mode 100644
index 00000000..802a6520
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubsubCACRL.crl
new file mode 100644
index 00000000..6f84d397
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy10subsubsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2CACRL.crl
new file mode 100644
index 00000000..e14cdaa0
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2subCACRL.crl
new file mode 100644
index 00000000..88309175
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy2subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4CACRL.crl
new file mode 100644
index 00000000..c6817a34
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subCACRL.crl
new file mode 100644
index 00000000..d1f5ad1e
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubCACRL.crl
new file mode 100644
index 00000000..7203b19a
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubsubCACRL.crl
new file mode 100644
index 00000000..467e0047
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy4subsubsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5CACRL.crl
new file mode 100644
index 00000000..96848db7
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subCACRL.crl
new file mode 100644
index 00000000..8bb7c1db
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubCACRL.crl
new file mode 100644
index 00000000..143dab51
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubsubCACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubsubCACRL.crl
new file mode 100644
index 00000000..8a9c8b36
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy5subsubsubCACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7CACRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7CACRL.crl
new file mode 100644
index 00000000..43870fb6
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7CACRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subCARE2CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subCARE2CRL.crl
new file mode 100644
index 00000000..48c70c0f
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subCARE2CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl
new file mode 100644
index 00000000..3808af65
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl
new file mode 100644
index 00000000..4ed5b0a1
--- /dev/null
+++ b/gnu/testlet/java/security/cert/pkix/pkits/data/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl
Binary files differ
diff --git a/gnu/testlet/java/security/hash/CVS/Entries b/gnu/testlet/java/security/hash/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/hash/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/hash/CVS/Repository b/gnu/testlet/java/security/hash/CVS/Repository
new file mode 100644
index 00000000..2febfcdf
--- /dev/null
+++ b/gnu/testlet/java/security/hash/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/hash
diff --git a/gnu/testlet/java/security/hash/CVS/Root b/gnu/testlet/java/security/hash/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/hash/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/jce/CVS/Entries b/gnu/testlet/java/security/jce/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/jce/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/jce/CVS/Repository b/gnu/testlet/java/security/jce/CVS/Repository
new file mode 100644
index 00000000..4cb5734f
--- /dev/null
+++ b/gnu/testlet/java/security/jce/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/jce
diff --git a/gnu/testlet/java/security/jce/CVS/Root b/gnu/testlet/java/security/jce/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/jce/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/key/CVS/Entries b/gnu/testlet/java/security/key/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/key/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/key/CVS/Entries.Log b/gnu/testlet/java/security/key/CVS/Entries.Log
new file mode 100644
index 00000000..f2cc87eb
--- /dev/null
+++ b/gnu/testlet/java/security/key/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dss////
+A D/rsa////
diff --git a/gnu/testlet/java/security/key/CVS/Repository b/gnu/testlet/java/security/key/CVS/Repository
new file mode 100644
index 00000000..82990e31
--- /dev/null
+++ b/gnu/testlet/java/security/key/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/key
diff --git a/gnu/testlet/java/security/key/CVS/Root b/gnu/testlet/java/security/key/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/key/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/key/dss/CVS/Entries b/gnu/testlet/java/security/key/dss/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/key/dss/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/key/dss/CVS/Repository b/gnu/testlet/java/security/key/dss/CVS/Repository
new file mode 100644
index 00000000..29cde309
--- /dev/null
+++ b/gnu/testlet/java/security/key/dss/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/key/dss
diff --git a/gnu/testlet/java/security/key/dss/CVS/Root b/gnu/testlet/java/security/key/dss/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/key/dss/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/key/rsa/CVS/Entries b/gnu/testlet/java/security/key/rsa/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/key/rsa/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/key/rsa/CVS/Repository b/gnu/testlet/java/security/key/rsa/CVS/Repository
new file mode 100644
index 00000000..4b84bddb
--- /dev/null
+++ b/gnu/testlet/java/security/key/rsa/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/key/rsa
diff --git a/gnu/testlet/java/security/key/rsa/CVS/Root b/gnu/testlet/java/security/key/rsa/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/key/rsa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/sig/CVS/Entries b/gnu/testlet/java/security/sig/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/sig/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/sig/CVS/Entries.Log b/gnu/testlet/java/security/sig/CVS/Entries.Log
new file mode 100644
index 00000000..f2cc87eb
--- /dev/null
+++ b/gnu/testlet/java/security/sig/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dss////
+A D/rsa////
diff --git a/gnu/testlet/java/security/sig/CVS/Repository b/gnu/testlet/java/security/sig/CVS/Repository
new file mode 100644
index 00000000..75235964
--- /dev/null
+++ b/gnu/testlet/java/security/sig/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/sig
diff --git a/gnu/testlet/java/security/sig/CVS/Root b/gnu/testlet/java/security/sig/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/sig/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/sig/dss/CVS/Entries b/gnu/testlet/java/security/sig/dss/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/sig/dss/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/sig/dss/CVS/Repository b/gnu/testlet/java/security/sig/dss/CVS/Repository
new file mode 100644
index 00000000..8cd49672
--- /dev/null
+++ b/gnu/testlet/java/security/sig/dss/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/sig/dss
diff --git a/gnu/testlet/java/security/sig/dss/CVS/Root b/gnu/testlet/java/security/sig/dss/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/sig/dss/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/security/sig/rsa/CVS/Entries b/gnu/testlet/java/security/sig/rsa/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/security/sig/rsa/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/security/sig/rsa/CVS/Repository b/gnu/testlet/java/security/sig/rsa/CVS/Repository
new file mode 100644
index 00000000..e8a559ae
--- /dev/null
+++ b/gnu/testlet/java/security/sig/rsa/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/security/sig/rsa
diff --git a/gnu/testlet/java/security/sig/rsa/CVS/Root b/gnu/testlet/java/security/sig/rsa/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/security/sig/rsa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Array/ArrayTest.java b/gnu/testlet/java/sql/Array/ArrayTest.java
new file mode 100644
index 00000000..49fe6387
--- /dev/null
+++ b/gnu/testlet/java/sql/Array/ArrayTest.java
@@ -0,0 +1,105 @@
+/*************************************************************************
+/* ArrayTest.java - Test java.sql.Array interface
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2 JDBC2.0
+
+package gnu.testlet.java.sql.Array;
+
+import java.sql.*;
+import java.util.Map;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ArrayTest implements Array, Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(true, "java.sql.Array");
+}
+
+public String
+getBaseTypeName() throws SQLException
+{
+ return(null);
+}
+
+public void
+free() throws SQLException
+{
+}
+
+public int
+getBaseType() throws SQLException
+{
+ return(0);
+}
+
+public Object
+getArray() throws SQLException
+{
+ return(null);
+}
+
+public Object
+getArray(Map map) throws SQLException
+{
+ return(null);
+}
+
+public Object
+getArray(long offset, int count) throws SQLException
+{
+ return(null);
+}
+
+public Object
+getArray(long index, int count, Map map) throws SQLException
+{
+ return(null);
+}
+
+public ResultSet
+getResultSet() throws SQLException
+{
+ return(null);
+}
+
+public ResultSet
+getResultSet(Map map) throws SQLException
+{
+ return(null);
+}
+
+public ResultSet
+getResultSet(long index, int count) throws SQLException
+{
+ return(null);
+}
+
+public ResultSet
+getResultSet(long index, int count, Map map) throws SQLException
+{
+ return(null);
+}
+
+} // class ArrayTest
+
diff --git a/gnu/testlet/java/sql/Array/CVS/Entries b/gnu/testlet/java/sql/Array/CVS/Entries
new file mode 100644
index 00000000..03361151
--- /dev/null
+++ b/gnu/testlet/java/sql/Array/CVS/Entries
@@ -0,0 +1,2 @@
+/ArrayTest.java/1.2/Mon Jun 18 21:12:31 2007//
+D
diff --git a/gnu/testlet/java/sql/Array/CVS/Repository b/gnu/testlet/java/sql/Array/CVS/Repository
new file mode 100644
index 00000000..eddb230f
--- /dev/null
+++ b/gnu/testlet/java/sql/Array/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Array
diff --git a/gnu/testlet/java/sql/Array/CVS/Root b/gnu/testlet/java/sql/Array/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Array/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Blob/BlobTest.java b/gnu/testlet/java/sql/Blob/BlobTest.java
new file mode 100644
index 00000000..f359c75c
--- /dev/null
+++ b/gnu/testlet/java/sql/Blob/BlobTest.java
@@ -0,0 +1,106 @@
+/*************************************************************************
+/* BlobTest.java - Test java.util.Blob interface
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/* Copyright (c) 2002 Mark J. Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2 JDBC2.0
+
+package gnu.testlet.java.sql.Blob;
+
+import java.sql.*;
+import java.io.InputStream;
+import java.io.OutputStream;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class BlobTest implements Blob, Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(true, "java.sql.Blob");
+}
+
+public void
+free() throws SQLException
+{
+}
+
+public InputStream
+getBinaryStream (long a, long b) throws SQLException
+{
+ return(null);
+}
+
+public long
+length() throws SQLException
+{
+ return(0);
+}
+
+public byte[]
+getBytes(long offset, int length) throws SQLException
+{
+ return(null);
+}
+
+public InputStream
+getBinaryStream() throws SQLException
+{
+ return(null);
+}
+
+public long
+position(byte[] pattern, long offset) throws SQLException
+{
+ return(0);
+}
+
+public long
+position(Blob pattern, long offset) throws SQLException
+{
+ return(0);
+}
+
+public int
+setBytes(long l,byte[] bs)
+{
+ return(0);
+}
+
+public int
+setBytes(long l ,byte[] bs ,int i1, int i2)
+{
+ return(0);
+}
+
+public void
+truncate(long l)
+{
+ return;
+}
+
+public OutputStream setBinaryStream(long l)
+{
+ return(null);
+}
+
+} // class BlobTest
+
diff --git a/gnu/testlet/java/sql/Blob/CVS/Entries b/gnu/testlet/java/sql/Blob/CVS/Entries
new file mode 100644
index 00000000..f81844ab
--- /dev/null
+++ b/gnu/testlet/java/sql/Blob/CVS/Entries
@@ -0,0 +1,2 @@
+/BlobTest.java/1.3/Mon Jun 18 21:12:31 2007//
+D
diff --git a/gnu/testlet/java/sql/Blob/CVS/Repository b/gnu/testlet/java/sql/Blob/CVS/Repository
new file mode 100644
index 00000000..2ca4db80
--- /dev/null
+++ b/gnu/testlet/java/sql/Blob/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Blob
diff --git a/gnu/testlet/java/sql/Blob/CVS/Root b/gnu/testlet/java/sql/Blob/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Blob/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/CVS/Entries b/gnu/testlet/java/sql/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/sql/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/sql/CVS/Entries.Log b/gnu/testlet/java/sql/CVS/Entries.Log
new file mode 100644
index 00000000..0feceedd
--- /dev/null
+++ b/gnu/testlet/java/sql/CVS/Entries.Log
@@ -0,0 +1,10 @@
+A D/Array////
+A D/Blob////
+A D/Clob////
+A D/Connection////
+A D/DatabaseMetaData////
+A D/Date////
+A D/DriverManager////
+A D/Time////
+A D/Timestamp////
+A D/Types////
diff --git a/gnu/testlet/java/sql/CVS/Repository b/gnu/testlet/java/sql/CVS/Repository
new file mode 100644
index 00000000..b9952ff5
--- /dev/null
+++ b/gnu/testlet/java/sql/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql
diff --git a/gnu/testlet/java/sql/CVS/Root b/gnu/testlet/java/sql/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Clob/CVS/Entries b/gnu/testlet/java/sql/Clob/CVS/Entries
new file mode 100644
index 00000000..034f607a
--- /dev/null
+++ b/gnu/testlet/java/sql/Clob/CVS/Entries
@@ -0,0 +1,2 @@
+/ClobTest.java/1.3/Mon Jun 18 21:12:31 2007//
+D
diff --git a/gnu/testlet/java/sql/Clob/CVS/Repository b/gnu/testlet/java/sql/Clob/CVS/Repository
new file mode 100644
index 00000000..c46c7e4f
--- /dev/null
+++ b/gnu/testlet/java/sql/Clob/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Clob
diff --git a/gnu/testlet/java/sql/Clob/CVS/Root b/gnu/testlet/java/sql/Clob/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Clob/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Clob/ClobTest.java b/gnu/testlet/java/sql/Clob/ClobTest.java
new file mode 100644
index 00000000..b2bd3736
--- /dev/null
+++ b/gnu/testlet/java/sql/Clob/ClobTest.java
@@ -0,0 +1,119 @@
+/*************************************************************************
+/* ClobTest.java - Test java.sql.Clob
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/* Copyright (c) 2002 Mark J. Wielaard (mark@klomp.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2 JDBC2.0
+
+package gnu.testlet.java.sql.Clob;
+
+import java.sql.*;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ClobTest implements Clob, Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(true, "java.sql.Clob");
+}
+
+public long
+length() throws SQLException
+{
+ return(0);
+}
+
+public void
+free() throws SQLException
+{
+}
+
+public Reader
+getCharacterStream (long a, long b) throws SQLException
+{
+ return(null);
+}
+
+public String
+getSubString(long offset, int length) throws SQLException
+{
+ return(null);
+}
+
+public InputStream
+getAsciiStream() throws SQLException
+{
+ return(null);
+}
+
+public Reader
+getCharacterStream() throws SQLException
+{
+ return(null);
+}
+
+public long
+position(String pattern, long offset) throws SQLException
+{
+ return(0);
+}
+
+public long
+position(Clob pattern, long offset) throws SQLException
+{
+ return(0);
+}
+
+public int
+setString(long l, String s) throws SQLException
+{
+ return(0);
+}
+
+public int
+setString(long l, String s, int i1, int i2) throws SQLException
+{
+ return(0);
+}
+
+public OutputStream setAsciiStream(long l) throws SQLException
+{
+ return(null);
+}
+
+public Writer
+setCharacterStream(long l) throws SQLException
+{
+ return(null);
+}
+
+public void
+truncate(long l) throws SQLException
+{
+ return;
+}
+
+} // class ClobTest
diff --git a/gnu/testlet/java/sql/Connection/CVS/Entries b/gnu/testlet/java/sql/Connection/CVS/Entries
new file mode 100644
index 00000000..e851fe8d
--- /dev/null
+++ b/gnu/testlet/java/sql/Connection/CVS/Entries
@@ -0,0 +1,2 @@
+/TestJdbc.java/1.1/Fri Oct 11 10:44:17 2002//
+D
diff --git a/gnu/testlet/java/sql/Connection/CVS/Repository b/gnu/testlet/java/sql/Connection/CVS/Repository
new file mode 100644
index 00000000..458afd19
--- /dev/null
+++ b/gnu/testlet/java/sql/Connection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Connection
diff --git a/gnu/testlet/java/sql/Connection/CVS/Root b/gnu/testlet/java/sql/Connection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Connection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Connection/TestJdbc.java b/gnu/testlet/java/sql/Connection/TestJdbc.java
new file mode 100644
index 00000000..e3bd0468
--- /dev/null
+++ b/gnu/testlet/java/sql/Connection/TestJdbc.java
@@ -0,0 +1,38 @@
+/*
+ * Based on Kaffe's Connection
+ *
+ * Copyright (c) 1998
+ * Transvirtual Technologies, Inc. All rights reserved.
+ * Modifications Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+ * Modifications Copyright (c) 2002 Mark J. Wielaard (mark@klomp.org)
+ *
+ * See the file "COPYING" for information on usage and redistribution
+ * of this file.
+ */
+
+// Tags: JDK1.1 JDBC1.0
+
+package gnu.testlet.java.sql.Connection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.sql.*;
+
+public class TestJdbc implements Testlet {
+
+public void
+test(TestHarness harness)
+{
+ harness.check(Connection.TRANSACTION_NONE, 0,
+ "TRANSACTION_NONE");
+ harness.check(Connection.TRANSACTION_READ_UNCOMMITTED, 1,
+ "TRANSACTION_READ_UNCOMMITTED");
+ harness.check(Connection.TRANSACTION_READ_COMMITTED, 2,
+ "TRANSACTION_READ_COMMITTED");
+ harness.check(Connection.TRANSACTION_REPEATABLE_READ, 4,
+ "TRANSACTION_REPEATABLE_READ");
+ harness.check(Connection.TRANSACTION_SERIALIZABLE, 8,
+ "TRANSACTION_SERIALIZABLE");
+}
+
+}
diff --git a/gnu/testlet/java/sql/DatabaseMetaData/CVS/Entries b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Entries
new file mode 100644
index 00000000..cd5767f9
--- /dev/null
+++ b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Entries
@@ -0,0 +1,2 @@
+/TestJdbc.java/1.2/Thu Jun 3 14:31:14 2004//
+D
diff --git a/gnu/testlet/java/sql/DatabaseMetaData/CVS/Repository b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Repository
new file mode 100644
index 00000000..5aa9d5d5
--- /dev/null
+++ b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/DatabaseMetaData
diff --git a/gnu/testlet/java/sql/DatabaseMetaData/CVS/Root b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/DatabaseMetaData/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java b/gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java
new file mode 100644
index 00000000..cc03df8a
--- /dev/null
+++ b/gnu/testlet/java/sql/DatabaseMetaData/TestJdbc.java
@@ -0,0 +1,81 @@
+/*
+ * Test java.sql.DatabaseMetaData
+ *
+ * Copyright (c) 1998
+ * Transvirtual Technologies, Inc. All rights reserved.
+ * Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+ * Copyright (c) 2002 Mark J. Wielaard (mark@klomp.org)
+ *
+ * See the file "COPYING" for information on usage and redistribution
+ * of this file.
+ */
+
+// Tags: JDK1.1 JDBC1.0
+
+package gnu.testlet.java.sql.DatabaseMetaData;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class TestJdbc implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(java.sql.DatabaseMetaData.procedureResultUnknown, 0);
+ harness.check(java.sql.DatabaseMetaData.procedureNoResult, 1);
+ harness.check(java.sql.DatabaseMetaData.procedureReturnsResult, 2);
+
+ harness.check(java.sql.DatabaseMetaData.procedureColumnUnknown, 0);
+ harness.check(java.sql.DatabaseMetaData.procedureColumnIn, 1);
+ harness.check(java.sql.DatabaseMetaData.procedureColumnInOut, 2);
+ harness.check(java.sql.DatabaseMetaData.procedureColumnOut, 4);
+ harness.check(java.sql.DatabaseMetaData.procedureColumnReturn, 5);
+ harness.check(java.sql.DatabaseMetaData.procedureColumnResult, 3);
+
+ harness.check(java.sql.DatabaseMetaData.procedureNoNulls, 0);
+ harness.check(java.sql.DatabaseMetaData.procedureNullable, 1);
+ harness.check(java.sql.DatabaseMetaData.procedureNullableUnknown, 2);
+
+ harness.check(java.sql.DatabaseMetaData.columnNoNulls, 0);
+ harness.check(java.sql.DatabaseMetaData.columnNullable, 1);
+ harness.check(java.sql.DatabaseMetaData.columnNullableUnknown, 2);
+
+ harness.check(java.sql.DatabaseMetaData.bestRowTemporary, 0);
+ harness.check(java.sql.DatabaseMetaData.bestRowTransaction, 1);
+ harness.check(java.sql.DatabaseMetaData.bestRowSession, 2);
+
+ harness.check(java.sql.DatabaseMetaData.bestRowUnknown, 0);
+ harness.check(java.sql.DatabaseMetaData.bestRowNotPseudo, 1);
+ harness.check(java.sql.DatabaseMetaData.bestRowPseudo, 2);
+
+ harness.check(java.sql.DatabaseMetaData.versionColumnUnknown, 0);
+ harness.check(java.sql.DatabaseMetaData.versionColumnNotPseudo, 1);
+ harness.check(java.sql.DatabaseMetaData.versionColumnPseudo, 2);
+
+ harness.check(java.sql.DatabaseMetaData.importedKeyCascade, 0);
+ harness.check(java.sql.DatabaseMetaData.importedKeyRestrict, 1);
+ harness.check(java.sql.DatabaseMetaData.importedKeySetNull, 2);
+ harness.check(java.sql.DatabaseMetaData.importedKeyNoAction, 3);
+ harness.check(java.sql.DatabaseMetaData.importedKeySetDefault, 4);
+ harness.check(java.sql.DatabaseMetaData.importedKeyInitiallyDeferred, 5);
+ harness.check(java.sql.DatabaseMetaData.importedKeyInitiallyImmediate, 6);
+ harness.check(java.sql.DatabaseMetaData.importedKeyNotDeferrable, 7);
+
+ harness.check(java.sql.DatabaseMetaData.typeNoNulls, 0);
+ harness.check(java.sql.DatabaseMetaData.typeNullable, 1);
+ harness.check(java.sql.DatabaseMetaData.typeNullableUnknown, 2);
+ harness.check(java.sql.DatabaseMetaData.typePredNone, 0);
+ harness.check(java.sql.DatabaseMetaData.typePredChar, 1);
+ harness.check(java.sql.DatabaseMetaData.typePredBasic, 2);
+ harness.check(java.sql.DatabaseMetaData.typeSearchable, 3);
+
+ harness.check(java.sql.DatabaseMetaData.tableIndexStatistic, 0);
+ harness.check(java.sql.DatabaseMetaData.tableIndexClustered, 1);
+ harness.check(java.sql.DatabaseMetaData.tableIndexHashed, 2);
+ harness.check(java.sql.DatabaseMetaData.tableIndexOther, 3);
+}
+
+} // class TestJdbc
+
diff --git a/gnu/testlet/java/sql/Date/CVS/Entries b/gnu/testlet/java/sql/Date/CVS/Entries
new file mode 100644
index 00000000..f7b87230
--- /dev/null
+++ b/gnu/testlet/java/sql/Date/CVS/Entries
@@ -0,0 +1,2 @@
+/DateTest.java/1.1/Sun Apr 13 13:22:17 2003//
+D
diff --git a/gnu/testlet/java/sql/Date/CVS/Repository b/gnu/testlet/java/sql/Date/CVS/Repository
new file mode 100644
index 00000000..07d4ecb0
--- /dev/null
+++ b/gnu/testlet/java/sql/Date/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Date
diff --git a/gnu/testlet/java/sql/Date/CVS/Root b/gnu/testlet/java/sql/Date/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Date/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Date/DateTest.java b/gnu/testlet/java/sql/Date/DateTest.java
new file mode 100644
index 00000000..76dd60d0
--- /dev/null
+++ b/gnu/testlet/java/sql/Date/DateTest.java
@@ -0,0 +1,95 @@
+/*************************************************************************
+/* DateTest.java - Test java.sql.Date
+/*
+/* Copyright (c) 2003 Dalibor Topic (robilad@yahoo.de)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.sql.Date;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.sql.*;
+
+public class DateTest implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ Date d = new Date(0);
+
+ try {
+ d.getHours();
+ harness.check(false, "getHours");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getHours");
+ }
+
+ try {
+ d.getMinutes();
+ harness.check(false, "getMinutes");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getMinutes");
+ }
+
+ try {
+ d.getSeconds();
+ harness.check(false, "getSeconds");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getSeconds");
+ }
+
+ try {
+ d.setHours(0);
+ harness.check(false, "setHours");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setHours");
+ }
+
+ try {
+ d.setMinutes(0);
+ harness.check(false, "setMinutes");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setMinutes");
+ }
+
+ try {
+ d.setSeconds(0);
+ harness.check(false, "setSeconds");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setSeconds");
+ }
+
+ try {
+ Date.valueOf("NoSuchDate");
+ harness.check(false, "valueOf");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "valueOf");
+ }
+}
+}
+
diff --git a/gnu/testlet/java/sql/DriverManager/CVS/Entries b/gnu/testlet/java/sql/DriverManager/CVS/Entries
new file mode 100644
index 00000000..7c6ef52a
--- /dev/null
+++ b/gnu/testlet/java/sql/DriverManager/CVS/Entries
@@ -0,0 +1,2 @@
+/DriverManagerTest.java/1.1/Sun Apr 13 13:22:17 2003//
+D
diff --git a/gnu/testlet/java/sql/DriverManager/CVS/Repository b/gnu/testlet/java/sql/DriverManager/CVS/Repository
new file mode 100644
index 00000000..ba1cb2a0
--- /dev/null
+++ b/gnu/testlet/java/sql/DriverManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/DriverManager
diff --git a/gnu/testlet/java/sql/DriverManager/CVS/Root b/gnu/testlet/java/sql/DriverManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/DriverManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/DriverManager/DriverManagerTest.java b/gnu/testlet/java/sql/DriverManager/DriverManagerTest.java
new file mode 100644
index 00000000..86f9054a
--- /dev/null
+++ b/gnu/testlet/java/sql/DriverManager/DriverManagerTest.java
@@ -0,0 +1,44 @@
+/*************************************************************************
+/* DriverManagerTest.java - Test java.sql.DriverManager
+/*
+/* Copyright (c) 2003 Dalibor Topic (robilad@yahoo.de)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.sql.DriverManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.sql.*;
+
+public class DriverManagerTest implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ try {
+ DriverManager.getDriver("NoSuchDriver");
+ harness.check(false, "getDriver");
+ }
+ catch (SQLException e) {
+ harness.check(true, "getDriver");
+ }
+}
+}
diff --git a/gnu/testlet/java/sql/Time/CVS/Entries b/gnu/testlet/java/sql/Time/CVS/Entries
new file mode 100644
index 00000000..230ab364
--- /dev/null
+++ b/gnu/testlet/java/sql/Time/CVS/Entries
@@ -0,0 +1,2 @@
+/TimeTest.java/1.1/Sun Apr 13 13:22:17 2003//
+D
diff --git a/gnu/testlet/java/sql/Time/CVS/Repository b/gnu/testlet/java/sql/Time/CVS/Repository
new file mode 100644
index 00000000..a2711af0
--- /dev/null
+++ b/gnu/testlet/java/sql/Time/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Time
diff --git a/gnu/testlet/java/sql/Time/CVS/Root b/gnu/testlet/java/sql/Time/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Time/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Time/TimeTest.java b/gnu/testlet/java/sql/Time/TimeTest.java
new file mode 100644
index 00000000..d788f2a4
--- /dev/null
+++ b/gnu/testlet/java/sql/Time/TimeTest.java
@@ -0,0 +1,103 @@
+/*************************************************************************
+/* TimeTest.java - Test java.sql.Time
+/*
+/* Copyright (c) 2003 Dalibor Topic (robilad@yahoo.de)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.sql.Time;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.sql.*;
+
+public class TimeTest implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ Time t = new Time(0);
+
+ try {
+ t.getDate();
+ harness.check(false, "getDate");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getDate");
+ }
+
+ try {
+ t.getDay();
+ harness.check(false, "getDay");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getDay");
+ }
+
+ try {
+ t.getMonth();
+ harness.check(false, "getMonth");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getMonth");
+ }
+
+ try {
+ t.getYear();
+ harness.check(false, "getYear");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "getYear");
+ }
+
+ try {
+ t.setDate(0);
+ harness.check(false, "setDate");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setDate");
+ }
+
+ try {
+ t.setMonth(0);
+ harness.check(false, "setMonth");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setMonth");
+ }
+
+ try {
+ t.setYear(0);
+ harness.check(false, "setYear");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "setYear");
+ }
+
+ try {
+ Time.valueOf("NoSuchTime");
+ harness.check(false, "valueOf");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "valueOf");
+ }
+}
+}
+
diff --git a/gnu/testlet/java/sql/Timestamp/CVS/Entries b/gnu/testlet/java/sql/Timestamp/CVS/Entries
new file mode 100644
index 00000000..90ba774b
--- /dev/null
+++ b/gnu/testlet/java/sql/Timestamp/CVS/Entries
@@ -0,0 +1,2 @@
+/TimestampTest.java/1.3/Sun Oct 10 18:35:14 2004//
+D
diff --git a/gnu/testlet/java/sql/Timestamp/CVS/Repository b/gnu/testlet/java/sql/Timestamp/CVS/Repository
new file mode 100644
index 00000000..7a889329
--- /dev/null
+++ b/gnu/testlet/java/sql/Timestamp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Timestamp
diff --git a/gnu/testlet/java/sql/Timestamp/CVS/Root b/gnu/testlet/java/sql/Timestamp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Timestamp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Timestamp/TimestampTest.java b/gnu/testlet/java/sql/Timestamp/TimestampTest.java
new file mode 100644
index 00000000..dfc85551
--- /dev/null
+++ b/gnu/testlet/java/sql/Timestamp/TimestampTest.java
@@ -0,0 +1,81 @@
+/*************************************************************************
+/* TimestampTest.java - Test java.sql.Timestamp
+/*
+/* Copyright (c) 2003 Dalibor Topic (robilad@yahoo.de)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.sql.Timestamp;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.sql.*;
+
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+public class TimestampTest implements Testlet
+{
+ public void
+ test(TestHarness harness)
+ {
+ // Set a common timezone to get the same result everywhere.
+ SimpleTimeZone stz = new SimpleTimeZone(-5 * 1000 * 3600, "GMT");
+ TimeZone.setDefault(stz);
+
+ try {
+ Timestamp.valueOf("NoSuchTime");
+ harness.check(false, "valueOf");
+ }
+ catch (IllegalArgumentException e) {
+ harness.check(true, "valueOf");
+ }
+
+
+ Timestamp ts = new Timestamp(1099999999333L);
+ harness.check(ts.getNanos() == 333000000, "getNanos");
+ harness.check(ts.toString().equals("2004-11-09 06:33:19.333"),
+ "toString");
+ harness.debug(ts.toString());
+
+ ts.setNanos(42);
+ harness.check(ts.getNanos() == 42, "getNanos");
+ harness.check(ts.toString().equals("2004-11-09 06:33:19.000000042"),
+ "toString");
+
+ harness.debug(ts.toString());
+
+ ts.setNanos(0);
+ harness.check(ts.getNanos() == 0, "getNanos");
+ harness.check(ts.toString().equals("2004-11-09 06:33:19.0"),
+ "toString");
+
+ harness.debug(ts.toString());
+
+ Timestamp ts2 = new Timestamp(1099999999999L);
+ harness.check(ts.equals(ts2) == false, "equals");
+ ts.setNanos(999000000);
+ harness.check(ts.equals(ts2), "equals");
+
+ harness.debug(ts.toString());
+
+ // Restore Timezone
+ TimeZone.setDefault(null);
+ }
+}
diff --git a/gnu/testlet/java/sql/Types/CVS/Entries b/gnu/testlet/java/sql/Types/CVS/Entries
new file mode 100644
index 00000000..9ab972ac
--- /dev/null
+++ b/gnu/testlet/java/sql/Types/CVS/Entries
@@ -0,0 +1,3 @@
+/TestJdbc10.java/1.2/Mon Feb 18 01:43:07 2002//
+/TestJdbc20.java/1.1/Sun Jan 24 12:04:18 1999//
+D
diff --git a/gnu/testlet/java/sql/Types/CVS/Repository b/gnu/testlet/java/sql/Types/CVS/Repository
new file mode 100644
index 00000000..affaf900
--- /dev/null
+++ b/gnu/testlet/java/sql/Types/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/sql/Types
diff --git a/gnu/testlet/java/sql/Types/CVS/Root b/gnu/testlet/java/sql/Types/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/sql/Types/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/sql/Types/TestJdbc10.java b/gnu/testlet/java/sql/Types/TestJdbc10.java
new file mode 100644
index 00000000..bef55d29
--- /dev/null
+++ b/gnu/testlet/java/sql/Types/TestJdbc10.java
@@ -0,0 +1,60 @@
+/*************************************************************************
+/* TestJdbc10.java -- Test java.sql.Types for JDK 1.1/JDBC 1.0
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1 JDBC1.0 !JDK1.2 !JDBC2.0
+
+package gnu.testlet.java.sql.Types;
+
+import java.sql.Types;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class TestJdbc10 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(Types.BIT, -7, "BIT");
+ harness.check(Types.TINYINT, -6, "TINYINT");
+ harness.check(Types.SMALLINT, 5, "SMALLINT");
+ harness.check(Types.INTEGER, 4, "INTEGER");
+ harness.check(Types.BIGINT, -5, "BIGINT");
+ harness.check(Types.FLOAT, 6, "FLOAT");
+ harness.check(Types.REAL, 7, "REAL");
+ harness.check(Types.DOUBLE, 8, "DOUBLE");
+ harness.check(Types.NUMERIC, 2, "NUMERIC");
+ harness.check(Types.DECIMAL, 3, "DECIMAL");
+ harness.check(Types.CHAR, 1, "CHAR");
+ harness.check(Types.VARCHAR, 12, "VARCHAR");
+ harness.check(Types.LONGVARCHAR, -1, "LONGVARCHAR");
+ harness.check(Types.DATE, 91, "DATE");
+ harness.check(Types.TIME, 92, "TIME");
+ harness.check(Types.TIMESTAMP, 93, "TIMESTAMP");
+ harness.check(Types.BINARY, -2, "BINARY");
+ harness.check(Types.VARBINARY, -3, "VARBINARY");
+ harness.check(Types.LONGVARBINARY, -4, "LONGVARBINARY");
+ harness.check(Types.NULL, 0, "NULL");
+ harness.check(Types.OTHER, 1111, "OTHER");
+}
+
+} // class TestJdbc10
+
diff --git a/gnu/testlet/java/sql/Types/TestJdbc20.java b/gnu/testlet/java/sql/Types/TestJdbc20.java
new file mode 100644
index 00000000..6462730d
--- /dev/null
+++ b/gnu/testlet/java/sql/Types/TestJdbc20.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+/* TestJdbc20.java -- Test java.sql.Types for JDK 1.2/JDBC 2.0
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2 JDBC2.0
+
+package gnu.testlet.java.sql.Types;
+
+import java.sql.Types;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class TestJdbc20 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(Types.JAVA_OBJECT, 2000, "JAVA_OBJECT");
+ harness.check(Types.DISTINCT, 2001, "DISTINCT");
+ harness.check(Types.STRUCT, 2002, "STRUCT");
+ harness.check(Types.ARRAY, 2003, "ARRAY");
+ harness.check(Types.BLOB, 2004, "BLOB");
+ harness.check(Types.CLOB, 2005, "CLOB");
+ harness.check(Types.REF, 2006, "REF");
+}
+
+} // class TestJdbc20
+
diff --git a/gnu/testlet/java/text/ACIAttribute/CVS/Entries b/gnu/testlet/java/text/ACIAttribute/CVS/Entries
new file mode 100644
index 00000000..d65c2ac7
--- /dev/null
+++ b/gnu/testlet/java/text/ACIAttribute/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Tue Mar 9 11:17:27 1999//
+D
diff --git a/gnu/testlet/java/text/ACIAttribute/CVS/Repository b/gnu/testlet/java/text/ACIAttribute/CVS/Repository
new file mode 100644
index 00000000..29963754
--- /dev/null
+++ b/gnu/testlet/java/text/ACIAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/ACIAttribute
diff --git a/gnu/testlet/java/text/ACIAttribute/CVS/Root b/gnu/testlet/java/text/ACIAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/ACIAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/ACIAttribute/Test.java b/gnu/testlet/java/text/ACIAttribute/Test.java
new file mode 100644
index 00000000..dd34c3b5
--- /dev/null
+++ b/gnu/testlet/java/text/ACIAttribute/Test.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+/* Test.java -- Test java.text.AttributedCharacterIterator.Attribute
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.ACIAttribute;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class Test extends AttributedCharacterIterator.Attribute
+ implements Testlet
+{
+
+// Stop bogus compile problems
+public
+Test()
+{
+ super("FUCKYOU");
+}
+
+public
+Test(String name)
+{
+ super(name);
+}
+
+public void
+test(TestHarness harness)
+{
+ Test acia = new Test("HACKER");
+
+ harness.check(acia.getName(), "HACKER", "getName()");
+ harness.check(acia.toString(),
+ "gnu.testlet.java.text.ACIAttribute.Test(HACKER)", "toString()");
+ harness.check(acia.equals(acia), "equals() true");
+ harness.check(!acia.equals(new Test("HACKER")), "equals() false");
+
+ // This just makes sure the variables exist
+ harness.debug(AttributedCharacterIterator.Attribute.LANGUAGE.toString());
+ harness.debug(AttributedCharacterIterator.Attribute.READING.toString());
+ harness.debug(AttributedCharacterIterator.Attribute.INPUT_METHOD_SEGMENT.toString());
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/Annotation/CVS/Entries b/gnu/testlet/java/text/Annotation/CVS/Entries
new file mode 100644
index 00000000..fa28e74f
--- /dev/null
+++ b/gnu/testlet/java/text/Annotation/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Wed Mar 24 19:09:16 1999//
+D
diff --git a/gnu/testlet/java/text/Annotation/CVS/Repository b/gnu/testlet/java/text/Annotation/CVS/Repository
new file mode 100644
index 00000000..a8ac2a3b
--- /dev/null
+++ b/gnu/testlet/java/text/Annotation/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/Annotation
diff --git a/gnu/testlet/java/text/Annotation/CVS/Root b/gnu/testlet/java/text/Annotation/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/Annotation/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/Annotation/Test.java b/gnu/testlet/java/text/Annotation/Test.java
new file mode 100644
index 00000000..a016738f
--- /dev/null
+++ b/gnu/testlet/java/text/Annotation/Test.java
@@ -0,0 +1,42 @@
+/*************************************************************************
+/* Test.java -- Test java.text.Annotation
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.Annotation;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ Annotation a = new Annotation("FOOBAR");
+ harness.debug(a.toString());
+ harness.check(a.getValue(), "FOOBAR");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Entries b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Entries
new file mode 100644
index 00000000..258872f1
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Entries
@@ -0,0 +1,2 @@
+/toString.java/1.1/Mon Sep 11 14:17:01 2006//
+D
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Repository b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Repository
new file mode 100644
index 00000000..dfcefb7d
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/AttributedCharacterIterator/Attribute
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Root b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/toString.java b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/toString.java
new file mode 100644
index 00000000..889a3650
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/Attribute/toString.java
@@ -0,0 +1,42 @@
+/* toString.java -- some checks for the toString() method.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.java.text.AttributedCharacterIterator.Attribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.AttributedCharacterIterator;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.check(AttributedCharacterIterator.Attribute.INPUT_METHOD_SEGMENT.toString(),
+ "java.text.AttributedCharacterIterator$Attribute(input_method_segment)");
+ harness.check(AttributedCharacterIterator.Attribute.LANGUAGE.toString(),
+ "java.text.AttributedCharacterIterator$Attribute(language)");
+ harness.check(AttributedCharacterIterator.Attribute.READING.toString(),
+ "java.text.AttributedCharacterIterator$Attribute(reading)");
+ }
+}
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries
new file mode 100644
index 00000000..3a66ff1c
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries
@@ -0,0 +1,6 @@
+/CharItImpl.java/1.1/Mon Apr 15 20:32:41 2002//
+/getAttribute.java/1.1/Mon Oct 24 09:06:03 2005//
+/getRunLimit.java/1.2/Mon Sep 11 14:17:01 2006//
+/getRunStart.java/1.1/Mon Oct 24 09:06:03 2005//
+/implement.java/1.3/Mon Apr 15 20:32:41 2002//
+D
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries.Log b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries.Log
new file mode 100644
index 00000000..a39d1c89
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Attribute////
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Repository b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Repository
new file mode 100644
index 00000000..f27c8dab
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/AttributedCharacterIterator
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Root b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/CharItImpl.java b/gnu/testlet/java/text/AttributedCharacterIterator/CharItImpl.java
new file mode 100644
index 00000000..3d2b7441
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/CharItImpl.java
@@ -0,0 +1,84 @@
+/*************************************************************************
+/* implement.java -- Test interface java.text.CharacterIterator
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: not-a-test
+
+package gnu.testlet.java.text.AttributedCharacterIterator;
+
+import java.text.*;
+
+// Package local copy for use by AttributedCharacterIterator
+class CharItImpl implements CharacterIterator
+{
+
+public Object
+clone()
+{
+ return(null);
+}
+public char
+current()
+{
+ return('0');
+}
+public char
+first()
+{
+ return('0');
+}
+public int
+getBeginIndex()
+{
+ return(0);
+}
+public int
+getEndIndex()
+{
+ return(0);
+}
+public int
+getIndex()
+{
+ return(0);
+}
+public char
+last()
+{
+ return('0');
+}
+public char
+next()
+{
+ return('0');
+}
+public char
+previous()
+{
+ return('0');
+}
+public char
+setIndex(int pos)
+{
+ return('0');
+}
+
+} // class CharacterIteratorImplement
+
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/getAttribute.java b/gnu/testlet/java/text/AttributedCharacterIterator/getAttribute.java
new file mode 100644
index 00000000..0cc8b42a
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/getAttribute.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.text.AttributedCharacterIterator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+
+/**
+ * Some checks for the getAttribute() methods in the
+ * {@link AttributedCharacterIterator} interface.
+ */
+public class getAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAttribute(AttributedCharacterIterator.Attribute);");
+
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ AttributedCharacterIterator aci = as.getIterator();
+
+ harness.check(aci.getAttribute(TextAttribute.LANGUAGE), "English");
+ harness.check(aci.getAttribute(TextAttribute.FONT), null);
+
+ // try null attribute
+ harness.check(aci.getAttribute(null), null);
+ }
+
+}
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java b/gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java
new file mode 100644
index 00000000..21723ef0
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/getRunLimit.java
@@ -0,0 +1,163 @@
+/* getRunLimit.java -- some checks for the getRunLimit() methods in the
+ AttributedCharacterIterator interface.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.AttributedCharacterIterator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.HashSet;
+import java.util.Set;
+
+public class getRunLimit implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ AttributedString as = new AttributedString("ABCDEFGHIJ");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ as.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ as.addAttribute(TextAttribute.BACKGROUND, Color.blue, 7, 8);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunLimit(), 2);
+ aci.setIndex(2);
+ harness.check(aci.getRunLimit(), 4);
+ aci.setIndex(5);
+ harness.check(aci.getRunLimit(), 7);
+ aci.setIndex(7);
+ harness.check(aci.getRunLimit(), 8);
+ aci.setIndex(8);
+ harness.check(aci.getRunLimit(), 10);
+
+ // try an empty string
+ as = new AttributedString("");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(), 0);
+
+ // try a string with no attributes
+ as = new AttributedString("ABC");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(), 3);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(AttributedCharacterIterator.Attribute)");
+ AttributedString as = new AttributedString("ABCDEFGHIJ");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ as.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 10);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 2);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 10);
+ aci.setIndex(2);
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 10);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 4);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 10);
+ aci.setIndex(4);
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 10);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 10);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 10);
+
+ // try an empty string
+ as = new AttributedString("");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 0);
+
+ // try a string with no attributes
+ as = new AttributedString("ABC");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 3);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("(Set)");
+ AttributedString as = new AttributedString("ABCDEFGHIJ");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ as.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ as.addAttribute(TextAttribute.BACKGROUND, Color.yellow, 3, 5);
+ AttributedCharacterIterator aci = as.getIterator();
+ Set set0 = new HashSet();
+ Set set1 = new HashSet();
+ set1.add(TextAttribute.LANGUAGE);
+ Set set2 = new HashSet();
+ set2.add(TextAttribute.FOREGROUND);
+ set2.add(TextAttribute.BACKGROUND);
+ Set set3 = new HashSet();
+ set3.add(TextAttribute.LANGUAGE);
+ set3.add(TextAttribute.FOREGROUND);
+ set3.add(TextAttribute.BACKGROUND);
+ harness.check(aci.getRunLimit(set0), 10);
+ harness.check(aci.getRunLimit(set1), 10);
+ harness.check(aci.getRunLimit(set2), 2);
+ harness.check(aci.getRunLimit(set3), 2);
+ aci.setIndex(2);
+ harness.check(aci.getRunLimit(set0), 10);
+ harness.check(aci.getRunLimit(set1), 10);
+ harness.check(aci.getRunLimit(set2), 3);
+ harness.check(aci.getRunLimit(set3), 3);
+ aci.setIndex(3);
+ harness.check(aci.getRunLimit(set0), 10);
+ harness.check(aci.getRunLimit(set1), 10);
+ harness.check(aci.getRunLimit(set2), 4);
+ harness.check(aci.getRunLimit(set3), 4);
+ aci.setIndex(4);
+ harness.check(aci.getRunLimit(set0), 10);
+ harness.check(aci.getRunLimit(set1), 10);
+ harness.check(aci.getRunLimit(set2), 5);
+ harness.check(aci.getRunLimit(set3), 5);
+ aci.setIndex(5);
+ harness.check(aci.getRunLimit(set0), 10);
+ harness.check(aci.getRunLimit(set1), 10);
+ harness.check(aci.getRunLimit(set2), 10);
+ harness.check(aci.getRunLimit(set3), 10);
+ // try an empty string
+ as = new AttributedString("");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(set0), 0);
+ harness.check(aci.getRunLimit(set1), 0);
+ harness.check(aci.getRunLimit(set2), 0);
+ harness.check(aci.getRunLimit(set3), 0);
+
+ // try a string with no attributes
+ as = new AttributedString("ABC");
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(set0), 3);
+ harness.check(aci.getRunLimit(set1), 3);
+ harness.check(aci.getRunLimit(set2), 3);
+ harness.check(aci.getRunLimit(set3), 3);
+ }
+}
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/getRunStart.java b/gnu/testlet/java/text/AttributedCharacterIterator/getRunStart.java
new file mode 100644
index 00000000..de389858
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/getRunStart.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.text.AttributedCharacterIterator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.Set;
+
+/**
+ * Some checks for the getRunStart() methods in the
+ * {@link AttributedCharacterIterator} interface.
+ */
+public class getRunStart implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("getRunStart();");
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ as.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunStart(), 0);
+ aci.setIndex(3);
+ harness.check(aci.getRunStart(), 2);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("getRunStart(AttributedCharacterIterator.Attribute);");
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ as.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunStart(TextAttribute.LANGUAGE), 0);
+ aci.setIndex(3);
+ harness.check(aci.getRunStart(TextAttribute.FOREGROUND), 2);
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("getRunStart(Set);");
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(TextAttribute.LANGUAGE, "English");
+ AttributedCharacterIterator aci = as.getIterator();
+
+ // try null set
+ harness.check(aci.getRunStart((Set) null), 0);
+
+ AttributedCharacterIterator aci2 = as.getIterator(null, 4, 7);
+ harness.check(aci2.getRunStart((Set) null), 4);
+ }
+
+}
diff --git a/gnu/testlet/java/text/AttributedCharacterIterator/implement.java b/gnu/testlet/java/text/AttributedCharacterIterator/implement.java
new file mode 100644
index 00000000..0a35d5a2
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedCharacterIterator/implement.java
@@ -0,0 +1,90 @@
+/*************************************************************************
+/* implement.java -- Test interface java.text.AttributedCharacterIterator
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+// Uses: CharItImpl
+
+package gnu.testlet.java.text.AttributedCharacterIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.Set;
+import java.util.Map;
+
+public class implement extends CharItImpl
+ implements AttributedCharacterIterator, Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(true, "Correctly implemented AttributedCharacterIterator");
+}
+
+public int
+getRunStart()
+{
+ return(0);
+}
+public int
+getRunStart(AttributedCharacterIterator.Attribute attr)
+{
+ return(0);
+}
+public int
+getRunStart(Set attrs)
+{
+ return(0);
+}
+public int
+getRunLimit()
+{
+ return(0);
+}
+public int
+getRunLimit(AttributedCharacterIterator.Attribute attr)
+{
+ return(0);
+}
+public int
+getRunLimit(Set attrs)
+{
+ return(0);
+}
+public Map
+getAttributes()
+{
+ return(null);
+}
+public Set
+getAllAttributeKeys()
+{
+ return(null);
+}
+public Object
+getAttribute(AttributedCharacterIterator.Attribute attr)
+{
+ return(null);
+}
+
+} // class implement
+
diff --git a/gnu/testlet/java/text/AttributedString/CVS/Entries b/gnu/testlet/java/text/AttributedString/CVS/Entries
new file mode 100644
index 00000000..bc55481c
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/CVS/Entries
@@ -0,0 +1,6 @@
+/Test.java/1.3/Mon Jun 13 17:37:37 2005//
+/addAttribute.java/1.2/Mon Oct 24 09:06:03 2005//
+/addAttributes.java/1.1/Tue Jun 14 12:49:48 2005//
+/constructors.java/1.3/Mon Sep 11 11:24:51 2006//
+/getIterator.java/1.1/Tue Jun 14 12:49:48 2005//
+D
diff --git a/gnu/testlet/java/text/AttributedString/CVS/Repository b/gnu/testlet/java/text/AttributedString/CVS/Repository
new file mode 100644
index 00000000..fede2c6a
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/AttributedString
diff --git a/gnu/testlet/java/text/AttributedString/CVS/Root b/gnu/testlet/java/text/AttributedString/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/AttributedString/Test.java b/gnu/testlet/java/text/AttributedString/Test.java
new file mode 100644
index 00000000..713aa621
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/Test.java
@@ -0,0 +1,78 @@
+/*************************************************************************
+/* Test.java -- Test java.text.AttributedString
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.AttributedString;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Set;
+import java.text.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ AttributedString as = new AttributedString("I really think that " +
+ "java.text is the most bogus Java package ever designed.");
+
+ as.addAttribute(AttributedCharacterIterator.Attribute.READING, "never");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
+ "bogosity", 9, 23);
+
+ AttributedCharacterIterator aci0 = as.getIterator(null, 28, 60);
+ Set s0 = aci0.getAllAttributeKeys();
+ harness.check(s0.size(), 1, "Attribute key count");
+
+ AttributedCharacterIterator aci = as.getIterator(null, 20, 29);
+
+ Set s = aci.getAllAttributeKeys();
+ harness.check(s.size(), 2);
+ Object[] o = s.toArray();
+ if (o.length > 0)
+ for (int i = 0; i < o.length; i++)
+ {
+ harness.debug("Attribute Key: " + o[i].toString());
+ }
+
+ aci.first();
+ int rl = aci.getRunLimit();
+ harness.check(rl, 23, "getRunLimit");
+
+ aci.setIndex(rl);
+ rl = aci.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE);
+ harness.check(rl, 29, "getRunLimit");
+ aci.first();
+
+ StringBuffer result = new StringBuffer("");
+ do
+ {
+ result.append(aci.current() + "");
+ }
+ while(aci.next() != CharacterIterator.DONE);
+ harness.check(result.toString(), "java.text", "iterator text");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/AttributedString/addAttribute.java b/gnu/testlet/java/text/AttributedString/addAttribute.java
new file mode 100644
index 00000000..7002646d
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/addAttribute.java
@@ -0,0 +1,146 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.text.AttributedString;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Some checks for the addAttribute() methods in the {@link AttributedString}
+ * class.
+ */
+public class addAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("addAttribute(AttributedCharacterIterator.Attribute, Object);");
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, Locale.ENGLISH);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunStart(AttributedCharacterIterator.Attribute.LANGUAGE) == 0);
+ harness.check(aci.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE) == 7);
+
+ // test adding an attribute to a zero length string
+ boolean pass = false;
+ as = new AttributedString("");
+ try
+ {
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "Unknown");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test adding an attribute with a null value (permitted)
+ pass = true;
+ as = new AttributedString("123");
+ try
+ {
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, null);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ aci = as.getIterator();
+ Map attributes = aci.getAttributes();
+ harness.check(attributes.get(AttributedCharacterIterator.Attribute.LANGUAGE), null);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("addAttribute(AttributedCharacterIterator.Attribute, Object, int, int);");
+ AttributedString as = new AttributedString("ABCDEFG");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, "Unknown", 2, 4);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunStart(AttributedCharacterIterator.Attribute.LANGUAGE), 0);
+ harness.check(aci.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE), 2);
+ aci.next();
+ aci.next();
+ aci.next();
+ harness.check(aci.getRunStart(AttributedCharacterIterator.Attribute.LANGUAGE), 2);
+ harness.check(aci.getRunLimit(AttributedCharacterIterator.Attribute.LANGUAGE), 4);
+
+ // if beginIndex < 0, there should be an IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ as = new AttributedString("ABC");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, Locale.FRANCE, -1, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if end index > length of string, there should be an
+ // IllegalArgumentException
+ pass = false;
+ try
+ {
+ as = new AttributedString("XYZ");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
+ Locale.FRANCE, 1, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // if start index == end index, there should be an IllegalArgumentException
+ pass = false;
+ try
+ {
+ as = new AttributedString("123");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE,
+ Locale.FRANCE, 1, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/text/AttributedString/addAttributes.java b/gnu/testlet/java/text/AttributedString/addAttributes.java
new file mode 100644
index 00000000..3ba1f32f
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/addAttributes.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.AttributedString;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.HashMap;
+
+/**
+ * Some checks for the addAttributes method in the {@link AttributedString}
+ * class.
+ */
+public class addAttributes implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("addAttributes(Map, int, int)");
+ AttributedString as = new AttributedString("ABCDEFG");
+ HashMap attributes = new HashMap();
+ attributes.put(TextAttribute.BACKGROUND, Color.red);
+ attributes.put(TextAttribute.FOREGROUND, Color.yellow);
+ as.addAttributes(attributes, 2, 4);
+ AttributedCharacterIterator aci = as.getIterator();
+ aci.first();
+ harness.check(aci.getRunStart(TextAttribute.BACKGROUND), 0);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 2);
+ aci.next();
+ aci.next();
+ harness.check(aci.getRunStart(TextAttribute.BACKGROUND), 2);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 4);
+ aci.next();
+ aci.next();
+ harness.check(aci.getRunStart(TextAttribute.BACKGROUND), 4);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 7);
+
+ // check null map
+ boolean pass = false;
+ try
+ {
+ as.addAttributes(null, 2, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative beginIndex
+ pass = false;
+ try
+ {
+ as.addAttributes(attributes, -1, 4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check endIndex > string length
+ pass = false;
+ try
+ {
+ as.addAttributes(attributes, 2, 8);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check indices with zero range
+ pass = false;
+ try
+ {
+ as.addAttributes(attributes, 2, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/AttributedString/constructors.java b/gnu/testlet/java/text/AttributedString/constructors.java
new file mode 100644
index 00000000..844dc195
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/constructors.java
@@ -0,0 +1,272 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.text.AttributedString;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.HashMap;
+
+/**
+ * Some checks for the constructors in the {@link AttributedString} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("AttributedString(AttributedCharacterIterator);");
+
+ // it isn't specified, but we assume a NullPointerException if the iterator
+ // is null
+ boolean pass = false;
+ try
+ {
+ /* AttributedString as = */
+ new AttributedString((AttributedCharacterIterator) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("AttributedString(AttributedCharacterIterator, int, int);");
+ AttributedString source = new AttributedString("ABCDEFGHIJ");
+ AttributedCharacterIterator sourceACI = source.getIterator();
+
+ // should get an IllegalArgumentException if the start index is outside the
+ // valid range
+ boolean pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(sourceACI, -1, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // should get an IllegalArgumentException if the end index is outside the
+ // valid range
+ pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(sourceACI, 2, 12);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // it isn't specified, but we assume a NullPointerException if the iterator
+ // is null
+ pass = false;
+ try
+ {
+ /* AttributedString as = */
+ new AttributedString((AttributedCharacterIterator) null, 1, 5);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("AttributedString(AttributedCharacterIterator, int, int," +
+ "AttributedCharacterIterator.Attribute[]);");
+
+ AttributedString as0 = new AttributedString("ABCDEFGHIJ");
+ as0.addAttribute(TextAttribute.LANGUAGE, "English");
+ as0.addAttribute(TextAttribute.FOREGROUND, Color.red, 2, 4);
+ as0.addAttribute(TextAttribute.BACKGROUND, Color.yellow, 3, 5);
+
+ // try extracting no attributes...
+ AttributedString as = new AttributedString(as0.getIterator(), 1, 8,
+ new AttributedCharacterIterator.Attribute[] {});
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 7);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 7);
+ harness.check(aci.getRunLimit(TextAttribute.BACKGROUND), 7);
+
+ // try extracting just one attribute...
+ as = new AttributedString(as0.getIterator(), 1, 8,
+ new AttributedCharacterIterator.Attribute[] {TextAttribute.FOREGROUND});
+ aci = as.getIterator();
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 7);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 1);
+ aci.setIndex(1);
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 7);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 3);
+ aci.setIndex(3);
+ harness.check(aci.getRunLimit(TextAttribute.LANGUAGE), 7);
+ harness.check(aci.getRunLimit(TextAttribute.FOREGROUND), 7);
+
+ // null iterator should throw NullPointerException
+ boolean pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(null, 0, 3,
+ new AttributedCharacterIterator.Attribute[] {TextAttribute.FONT});
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try start > string length
+ AttributedString as1 = new AttributedString("ABC");
+
+ pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(as1.getIterator(), 3, 4,
+ new AttributedCharacterIterator.Attribute[] {TextAttribute.FONT});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try end > string length
+ pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(as1.getIterator(), 1, 4,
+ new AttributedCharacterIterator.Attribute[] {TextAttribute.FONT});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try start > end
+ pass = false;
+ try
+ {
+ /*AttributedString as =*/ new AttributedString(as1.getIterator(), 1, 0,
+ new AttributedCharacterIterator.Attribute[] {TextAttribute.FONT});
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("AttributedString(String);");
+
+ // try null argument - the API spec doesn't say what happens.
+ boolean pass = false;
+ try
+ {
+ /* AttributedString as = */ new AttributedString((String) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("AttributedString(String, map);");
+ HashMap map = new HashMap();
+ map.put(AttributedCharacterIterator.Attribute.LANGUAGE, "English");
+ AttributedString as = new AttributedString("ABC", map);
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.first() == 'A');
+ harness.check(aci.getAttribute(AttributedCharacterIterator.Attribute.LANGUAGE).equals("English"));
+ harness.check(aci.getRunLimit() == 3);
+ harness.check(aci.getRunStart() == 0);
+
+ // test null string - not specified, assuming NullPointerException
+ boolean pass = false;
+ try
+ {
+ /* AttributedString as = */ new AttributedString(null, new HashMap());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test null map - not specified, assuming NullPointerException.
+ pass = false;
+ try
+ {
+ /* AttributedString as = */ new AttributedString("ABC", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // test empty string with non-empty map
+ pass = false;
+ try
+ {
+ /* AttributedString as = */ new AttributedString("", map);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/AttributedString/getIterator.java b/gnu/testlet/java/text/AttributedString/getIterator.java
new file mode 100644
index 00000000..dbcdca9c
--- /dev/null
+++ b/gnu/testlet/java/text/AttributedString/getIterator.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.AttributedString;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.util.Locale;
+
+/**
+* Some checks for the getIterator method in the {@link AttributedString}
+* class.
+*/
+public class getIterator implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getIterator()");
+ AttributedString as = new AttributedString("ABC");
+ AttributedCharacterIterator aci = as.getIterator();
+ harness.check(aci.current() == 'A');
+ harness.check(aci.next() == 'B');
+ harness.check(aci.next() == 'C');
+ harness.check(aci.next() == CharacterIterator.DONE);
+
+ AttributedString as2 = new AttributedString("");
+ AttributedCharacterIterator aci2 = as2.getIterator();
+ harness.check(aci2.current() == CharacterIterator.DONE);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getIterator(AttributedCharacterIterator.Attribute[])");
+ AttributedString as = new AttributedString("ABCDEF");
+ as.addAttribute(AttributedCharacterIterator.Attribute.LANGUAGE, Locale.FRENCH);
+ as.addAttribute(TextAttribute.BACKGROUND, Color.red, 0, 3);
+ as.addAttribute(TextAttribute.FOREGROUND, Color.blue, 2, 4);
+ AttributedCharacterIterator.Attribute[] attributes = new AttributedCharacterIterator.Attribute[2];
+ attributes[0] = TextAttribute.BACKGROUND;
+ attributes[1] = TextAttribute.FOREGROUND;
+ AttributedCharacterIterator aci = as.getIterator(attributes);
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), Color.red);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), null);
+ harness.check(aci.next() == 'B');
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), Color.red);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), null);
+ harness.check(aci.next() == 'C');
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), Color.red);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), Color.blue);
+ harness.check(aci.next() == 'D');
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), null);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), Color.blue);
+ harness.check(aci.next() == 'E');
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), null);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), null);
+ harness.check(aci.next() == 'F');
+ harness.check(aci.getAttribute(TextAttribute.BACKGROUND), null);
+ harness.check(aci.getAttribute(TextAttribute.FOREGROUND), null);
+
+ // a null argument is equivalent to a regular iterator
+ AttributedString as2 = new AttributedString("ABC");
+ AttributedCharacterIterator aci2 = as2.getIterator(null);
+ harness.check(aci2.current() == 'A');
+ harness.check(aci2.next() == 'B');
+ harness.check(aci2.next() == 'C');
+ harness.check(aci2.next() == CharacterIterator.DONE);
+
+ AttributedString as3 = new AttributedString("");
+ AttributedCharacterIterator aci3 = as3.getIterator(null);
+ harness.check(aci3.current() == CharacterIterator.DONE);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("getIterator(AttributedCharacterIterator.Attribute[], int, int)");
+
+ // if beginIndex < 0, there should be an IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ AttributedString as = new AttributedString("ABC");
+ as.getIterator(null, -1, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if end index > length of string, there should be an
+ // IllegalArgumentException
+ pass = false;
+ try
+ {
+ AttributedString as = new AttributedString("XYZ");
+ as.getIterator(null, 2, 4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // if start index > end index, there should be an IllegalArgumentException
+ pass = false;
+ try
+ {
+ AttributedString as = new AttributedString("123");
+ as.getIterator(null, 2, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/text/Bidi/Basic.java b/gnu/testlet/java/text/Bidi/Basic.java
new file mode 100644
index 00000000..d2538652
--- /dev/null
+++ b/gnu/testlet/java/text/Bidi/Basic.java
@@ -0,0 +1,68 @@
+/* Basic.java -- Tests of main Bidi functionality
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.Bidi;
+
+import java.text.Bidi;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class Basic implements Testlet
+{
+ public void testOne(TestHarness harness, Bidi bidi, String expected)
+ {
+ StringBuffer buf = new StringBuffer();
+ for (int i = 0; i < bidi.getLength(); ++i)
+ buf.append(bidi.getLevelAt(i));
+ harness.check(buf.toString(), expected);
+ }
+
+ public void test(TestHarness harness)
+ {
+ Bidi b;
+
+ harness.checkPoint("simple");
+ b = new Bidi("hi bob", Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+ testOne(harness, b, "000000");
+ harness.check(b.baseIsLeftToRight());
+ harness.check(b.isLeftToRight());
+ harness.check(b.getRunCount(), 1);
+
+ harness.checkPoint("one embedding");
+ b = new Bidi("hi \u202bbob", Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+ testOne(harness, b, "0002222");
+
+ harness.checkPoint("override");
+ b = new Bidi("hi \u202ebob", Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+ testOne(harness, b, "0001111");
+
+ harness.checkPoint("override and pop");
+ b = new Bidi("car means \u202eCAR\u202c.",
+ Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+ testOne(harness, b, "0000000000111100");
+ b = new Bidi("car \u202eMEANS CAR\u202c.",
+ Bidi.DIRECTION_RIGHT_TO_LEFT);
+ testOne(harness, b, "2221333333333311");
+ }
+}
diff --git a/gnu/testlet/java/text/Bidi/CVS/Entries b/gnu/testlet/java/text/Bidi/CVS/Entries
new file mode 100644
index 00000000..f01d9753
--- /dev/null
+++ b/gnu/testlet/java/text/Bidi/CVS/Entries
@@ -0,0 +1,3 @@
+/Basic.java/1.1/Tue Mar 21 19:59:15 2006/-kk/
+/reorderVisually.java/1.1/Tue Mar 21 19:59:15 2006/-kk/
+D
diff --git a/gnu/testlet/java/text/Bidi/CVS/Repository b/gnu/testlet/java/text/Bidi/CVS/Repository
new file mode 100644
index 00000000..09e9fa11
--- /dev/null
+++ b/gnu/testlet/java/text/Bidi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/Bidi
diff --git a/gnu/testlet/java/text/Bidi/CVS/Root b/gnu/testlet/java/text/Bidi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/Bidi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/Bidi/reorderVisually.java b/gnu/testlet/java/text/Bidi/reorderVisually.java
new file mode 100644
index 00000000..d33d1202
--- /dev/null
+++ b/gnu/testlet/java/text/Bidi/reorderVisually.java
@@ -0,0 +1,69 @@
+/* reorderVisually.java -- test bidi algorithm
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.Bidi;
+
+import java.text.Bidi;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class reorderVisually implements Testlet
+{
+ public void testOne(TestHarness harness, String input, String levels,
+ String expected)
+ {
+ Object[] inputA = new Object[input.length()];
+ byte[] levelsA = new byte[levels.length()];
+
+ for (int i = 0; i < input.length(); ++i)
+ {
+ inputA[i] = input.substring(i, i + 1);
+ levelsA[i] = (byte) (levels.charAt(i) - '0');
+ }
+
+ Bidi.reorderVisually(levelsA, 0, inputA, 0, inputA.length);
+
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < inputA.length; ++i)
+ result.append(inputA[i]);
+
+ harness.check(result.toString(), expected);
+ }
+
+ public void test(TestHarness harness)
+ {
+ // These tests come from unicode.org:
+ // http://www.unicode.org/reports/tr9/
+ testOne(harness, "car means CAR.", "00000000001110",
+ "car means RAC.");
+ testOne(harness, "car MEANS CAR.", "22211111111111",
+ ".RAC SNAEM car");
+ testOne(harness, "he said \"car MEANS CAR.\"",
+ "000000000222111111111100",
+ "he said \"RAC SNAEM car.\"");
+ testOne(harness, "DID YOU SAY 'he said \"car MEANS CAR\"'?",
+ "11111111111112222222224443333333333211",
+ "?'he said \"RAC SNAEM car\"' YAS UOY DID");
+ }
+}
diff --git a/gnu/testlet/java/text/BreakIterator/CVS/Entries b/gnu/testlet/java/text/BreakIterator/CVS/Entries
new file mode 100644
index 00000000..69ef075d
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/CVS/Entries
@@ -0,0 +1,6 @@
+/chariter.java/1.1/Fri Mar 19 17:28:04 1999//
+/lineiter.java/1.1/Tue Mar 23 08:48:15 1999//
+/patho.java/1.1/Mon Oct 25 16:53:17 2004//
+/sentiter.java/1.2/Sat May 11 11:57:07 2002//
+/worditer.java/1.2/Mon Mar 22 21:28:55 1999//
+D
diff --git a/gnu/testlet/java/text/BreakIterator/CVS/Repository b/gnu/testlet/java/text/BreakIterator/CVS/Repository
new file mode 100644
index 00000000..6393ff45
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/BreakIterator
diff --git a/gnu/testlet/java/text/BreakIterator/CVS/Root b/gnu/testlet/java/text/BreakIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/BreakIterator/chariter.java b/gnu/testlet/java/text/BreakIterator/chariter.java
new file mode 100644
index 00000000..2a78c8ba
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/chariter.java
@@ -0,0 +1,56 @@
+// Test character iteration of BreakIterator.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.BreakIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+public class chariter implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ String t1 = "How much time is left? We don't know.";
+ BreakIterator bi = BreakIterator.getCharacterInstance (loc);
+
+ bi.setText (t1);
+ int x = bi.current();
+
+ harness.check (x, 0);
+ int i = 0;
+ while (x != BreakIterator.DONE && i <= t1.length() + 1)
+ {
+ x = bi.next();
+ ++i;
+ harness.check (x, i <= t1.length() ? i : BreakIterator.DONE);
+ }
+ }
+}
diff --git a/gnu/testlet/java/text/BreakIterator/lineiter.java b/gnu/testlet/java/text/BreakIterator/lineiter.java
new file mode 100644
index 00000000..726f76e9
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/lineiter.java
@@ -0,0 +1,90 @@
+// Test line iteration of BreakIterator.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.BreakIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+public class lineiter implements Testlet
+{
+ public void check (String name, String in, String[] out, BreakIterator bi,
+ TestHarness harness)
+ {
+ harness.checkPoint (name);
+ bi.setText (in);
+
+ int index = 0;
+ int from = bi.current();
+ harness.check (from, 0);
+
+ while (true)
+ {
+ int to = bi.next();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (from, to), out[index]);
+ ++index;
+ from = to;
+ }
+
+ harness.check (index, out.length);
+
+
+ harness.checkPoint ("backwards " + name);
+ bi.last();
+ index = out.length - 1;
+ from = bi.current ();
+ harness.check (from, in.length());
+
+ while (true)
+ {
+ int to = bi.previous();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (to, from), out[index]);
+ --index;
+ from = to;
+ }
+
+ harness.check (index, -1);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ BreakIterator bi = BreakIterator.getLineInstance (loc);
+
+ String[] r1 = { "How ", "much ", "time ", "is ", "left? ",
+ "We ", "don't ", "know." };
+ check ("How much", "How much time is left? We don't know.", r1,
+ bi, harness);
+ }
+}
diff --git a/gnu/testlet/java/text/BreakIterator/patho.java b/gnu/testlet/java/text/BreakIterator/patho.java
new file mode 100644
index 00000000..6f6f898e
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/patho.java
@@ -0,0 +1,51 @@
+// Test pathological behavior of BreakIterator.
+
+// Copyright (c) 2004 Red Hat, Inc.
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.BreakIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+public class patho implements Testlet
+{
+ public void check (String name, TestHarness harness, BreakIterator bi)
+ {
+ harness.checkPoint (name + " pathological cases");
+ // This isn't mentioned in the spec, but at least one real program
+ // (Eclipse) relies on an iterator not throwing an exception
+ // before setText() is called.
+ harness.check (bi.getText () != null);
+ }
+
+ public void test (TestHarness harness)
+ {
+ check ("word", harness, BreakIterator.getWordInstance());
+ check ("character", harness, BreakIterator.getCharacterInstance());
+ check ("line", harness, BreakIterator.getLineInstance());
+ check ("word", harness, BreakIterator.getSentenceInstance());
+ }
+}
diff --git a/gnu/testlet/java/text/BreakIterator/sentiter.java b/gnu/testlet/java/text/BreakIterator/sentiter.java
new file mode 100644
index 00000000..042a4fc5
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/sentiter.java
@@ -0,0 +1,96 @@
+// Test sentence iteration of BreakIterator.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Copyright (c) 2002 Free Software Foundation, Inc.
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.BreakIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+public class sentiter implements Testlet
+{
+ public void check (String name, String in, String[] out, BreakIterator bi,
+ TestHarness harness)
+ {
+ harness.checkPoint (name);
+ bi.setText (in);
+
+ int index = 0;
+ int from = bi.current();
+ harness.check (from, 0);
+
+ while (true)
+ {
+ int to = bi.next();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (from, to), out[index]);
+ ++index;
+ from = to;
+ }
+
+ harness.check (index, out.length);
+
+
+ harness.checkPoint ("backwards " + name);
+ bi.last();
+ index = out.length - 1;
+ from = bi.current ();
+ harness.check (from, in.length());
+
+ while (true)
+ {
+ int to = bi.previous();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (to, from), out[index]);
+ --index;
+ from = to;
+ }
+
+ harness.check (index, -1);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ BreakIterator bi = BreakIterator.getSentenceInstance (loc);
+
+ String[] r1 = { "How much time is left? ",
+ "We don't know." };
+ check ("How much", "How much time is left? We don't know.", r1,
+ bi, harness);
+
+ String[] r2 = { "Having a sentence end with a dot.return.\n",
+ "Should also work." };
+ check ("dot.return", "Having a sentence end with a dot.return.\n" +
+ "Should also work.", r2, bi, harness);
+ }
+}
diff --git a/gnu/testlet/java/text/BreakIterator/worditer.java b/gnu/testlet/java/text/BreakIterator/worditer.java
new file mode 100644
index 00000000..014054fc
--- /dev/null
+++ b/gnu/testlet/java/text/BreakIterator/worditer.java
@@ -0,0 +1,97 @@
+// Test character iteration of BreakIterator.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.BreakIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+public class worditer implements Testlet
+{
+ public void check (String name, String in, String[] out, BreakIterator bi,
+ TestHarness harness)
+ {
+ harness.checkPoint (name);
+ bi.setText (in);
+
+ int index = 0;
+ int from = bi.current();
+ harness.check (from, 0);
+
+ while (true)
+ {
+ int to = bi.next();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (from, to), out[index]);
+ ++index;
+ from = to;
+ }
+
+ harness.check (index, out.length);
+
+
+ harness.checkPoint ("backwards " + name);
+ bi.last();
+ index = out.length - 1;
+ from = bi.current ();
+ harness.check (from, in.length());
+
+ while (true)
+ {
+ int to = bi.previous();
+ if (to == BreakIterator.DONE)
+ break;
+ harness.check (in.substring (to, from), out[index]);
+ --index;
+ from = to;
+ }
+
+ harness.check (index, -1);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ BreakIterator bi = BreakIterator.getWordInstance (loc);
+
+ String[] r1 = { "How", " ", "much", " ", "time", " ", "is", " ",
+ "left", "?", " ", "We", " ", "don't", " ",
+ "know", "." };
+ check ("How much", "How much time is left? We don't know.", r1,
+ bi, harness);
+
+ String[] r2 = { "I", " ", "am", " ", "not", "!" };
+ check ("I'm not", "I am not!", r2, bi, harness);
+
+ String[] r3 = { "\u2029", "X" };
+ check ("Paragraph separator", "\u2029X", r3, bi, harness);
+ }
+}
diff --git a/gnu/testlet/java/text/CVS/Entries b/gnu/testlet/java/text/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/text/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/text/CVS/Entries.Log b/gnu/testlet/java/text/CVS/Entries.Log
new file mode 100644
index 00000000..583a7054
--- /dev/null
+++ b/gnu/testlet/java/text/CVS/Entries.Log
@@ -0,0 +1,22 @@
+A D/ACIAttribute////
+A D/Annotation////
+A D/AttributedCharacterIterator////
+A D/AttributedString////
+A D/Bidi////
+A D/BreakIterator////
+A D/CharacterIterator////
+A D/ChoiceFormat////
+A D/CollationElementIterator////
+A D/Collator////
+A D/DateFormat////
+A D/DateFormatSymbols////
+A D/DecimalFormat////
+A D/DecimalFormatSymbols////
+A D/FieldPosition////
+A D/MessageFormat////
+A D/NumberFormat////
+A D/ParseException////
+A D/ParsePosition////
+A D/RuleBasedCollator////
+A D/SimpleDateFormat////
+A D/StringCharacterIterator////
diff --git a/gnu/testlet/java/text/CVS/Repository b/gnu/testlet/java/text/CVS/Repository
new file mode 100644
index 00000000..0257e481
--- /dev/null
+++ b/gnu/testlet/java/text/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text
diff --git a/gnu/testlet/java/text/CVS/Root b/gnu/testlet/java/text/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/CharacterIterator/CVS/Entries b/gnu/testlet/java/text/CharacterIterator/CVS/Entries
new file mode 100644
index 00000000..de1ff3a9
--- /dev/null
+++ b/gnu/testlet/java/text/CharacterIterator/CVS/Entries
@@ -0,0 +1,2 @@
+/implement.java/1.1/Fri Feb 26 21:21:49 1999//
+D
diff --git a/gnu/testlet/java/text/CharacterIterator/CVS/Repository b/gnu/testlet/java/text/CharacterIterator/CVS/Repository
new file mode 100644
index 00000000..ddb56ad0
--- /dev/null
+++ b/gnu/testlet/java/text/CharacterIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/CharacterIterator
diff --git a/gnu/testlet/java/text/CharacterIterator/CVS/Root b/gnu/testlet/java/text/CharacterIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/CharacterIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/CharacterIterator/implement.java b/gnu/testlet/java/text/CharacterIterator/implement.java
new file mode 100644
index 00000000..7dde8bca
--- /dev/null
+++ b/gnu/testlet/java/text/CharacterIterator/implement.java
@@ -0,0 +1,91 @@
+/*************************************************************************
+/* implement.java -- Test interface java.text.CharacterIterator
+/*
+/* Copyright (c) 1999 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.CharacterIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class implement implements CharacterIterator, Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(true, "Correctly implemented CharacterIterator");
+}
+
+public Object
+clone()
+{
+ return(null);
+}
+public char
+current()
+{
+ return('0');
+}
+public char
+first()
+{
+ return('0');
+}
+public int
+getBeginIndex()
+{
+ return(0);
+}
+public int
+getEndIndex()
+{
+ return(0);
+}
+public int
+getIndex()
+{
+ return(0);
+}
+public char
+last()
+{
+ return('0');
+}
+public char
+next()
+{
+ return('0');
+}
+public char
+previous()
+{
+ return('0');
+}
+public char
+setIndex(int pos)
+{
+ return('0');
+}
+
+} // class implement
+
diff --git a/gnu/testlet/java/text/ChoiceFormat/Bad.java b/gnu/testlet/java/text/ChoiceFormat/Bad.java
new file mode 100644
index 00000000..757cb9ae
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/Bad.java
@@ -0,0 +1,75 @@
+// Test handling of bad ChoiceFormats.
+
+// Copyright (c) 2009 Red Hat
+// Written by Andrew John Hughes (ahughes@redhat.com)
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.ChoiceFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.ChoiceFormat;
+
+public class Bad
+ implements Testlet
+{
+ public void test (TestHarness h)
+ {
+ try
+ {
+ ChoiceFormat f = new ChoiceFormat("0#zero|1#one|1>many");
+ h.fail("Failed to catch bad limit 1>");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ ChoiceFormat f = new ChoiceFormat("0#zero|1#one|1>many|");
+ h.fail("Failed to catch bad limit 1> with trailing |");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ ChoiceFormat f = new ChoiceFormat("0#zero|1#one|1<many|");
+ h.fail("Failed to catch trailing |");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ ChoiceFormat f = new ChoiceFormat("0#zero|1#one|1>many|1<many");
+ h.fail("Failed to catch enclosed bad limit");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/text/ChoiceFormat/CVS/Entries b/gnu/testlet/java/text/ChoiceFormat/CVS/Entries
new file mode 100644
index 00000000..b7695bef
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/CVS/Entries
@@ -0,0 +1,5 @@
+/Bad.java/1.1/Fri Jan 2 12:53:33 2009//
+/format.java/1.3/Thu Jun 3 14:31:14 2004//
+/next.java/1.1/Thu Mar 11 12:53:57 1999//
+/parse.java/1.1/Wed Mar 10 12:59:58 1999//
+D
diff --git a/gnu/testlet/java/text/ChoiceFormat/CVS/Repository b/gnu/testlet/java/text/ChoiceFormat/CVS/Repository
new file mode 100644
index 00000000..6283fcd7
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/ChoiceFormat
diff --git a/gnu/testlet/java/text/ChoiceFormat/CVS/Root b/gnu/testlet/java/text/ChoiceFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/ChoiceFormat/format.java b/gnu/testlet/java/text/ChoiceFormat/format.java
new file mode 100644
index 00000000..c5c18469
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/format.java
@@ -0,0 +1,76 @@
+// Test ChoiceFormat formatting.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.ChoiceFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.ChoiceFormat;
+
+/**
+ * @author John Leuner
+ * @author Tom Tromey
+ */
+
+public class format implements Testlet
+{
+ public final String doformat (ChoiceFormat cf, double d, StringBuffer buf)
+ {
+ buf.setLength (0);
+ cf.format (d, buf, null);
+ return buf.toString();
+ }
+
+ public void test (TestHarness harness)
+ {
+ StringBuffer buf = new StringBuffer ();
+
+ ChoiceFormat cf = new ChoiceFormat ("1.0#Sun|2.0#Mon|3.0#Tue|4.0#Wed|5.0#Thu|6.0#Fri|7.0#Sat");
+ harness.check (cf.getFormats ().length, 7);
+ harness.check (cf.getLimits ().length, 7);
+ harness.check (doformat (cf, -9, buf), "Sun");
+ harness.check (doformat (cf, 1.5, buf), "Sun");
+ harness.check (doformat (cf, 5.5, buf), "Thu");
+ harness.check (doformat (cf, 7.0, buf), "Sat");
+ harness.check (doformat (cf, 99.5, buf), "Sat");
+
+ cf.applyPattern ("-1.0#Less than one|1.0#One|1.0<One to two, exclusive|2.0#Two to three, inclusive|3.0<Over three, up to four|4.0<Four to five, exclusive|5.0#Five and above");
+ harness.check (doformat (cf, -23, buf), "Less than one");
+ harness.check (doformat (cf, -.5, buf), "Less than one");
+ harness.check (doformat (cf, ChoiceFormat.previousDouble (1.0), buf),
+ "Less than one");
+ harness.check (doformat (cf, 1.0, buf), "One");
+ harness.check (doformat (cf, ChoiceFormat.nextDouble (1.0), buf),
+ "One to two, exclusive");
+ harness.check (doformat (cf, 1.5, buf), "One to two, exclusive");
+ harness.check (doformat (cf, 2.0, buf), "Two to three, inclusive");
+ harness.check (doformat (cf, 3.5, buf), "Over three, up to four");
+ harness.check (doformat (cf, 4.0, buf), "Over three, up to four");
+ harness.check (doformat (cf, 5.0, buf), "Five and above");
+ harness.check (doformat (cf, Double.POSITIVE_INFINITY, buf),
+ "Five and above");
+ harness.check (doformat (cf, Double.NaN, buf), "Less than one");
+ }
+}
diff --git a/gnu/testlet/java/text/ChoiceFormat/next.java b/gnu/testlet/java/text/ChoiceFormat/next.java
new file mode 100644
index 00000000..2a272ca6
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/next.java
@@ -0,0 +1,40 @@
+// Test nextDouble and previousDouble.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.ChoiceFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.ChoiceFormat;
+
+public class next implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String oneplus = "1.0000000000000002";
+ harness.check (ChoiceFormat.nextDouble (1.0) + "", oneplus);
+ harness.check (ChoiceFormat.nextDouble (1.0, true) + "", oneplus);
+ }
+}
diff --git a/gnu/testlet/java/text/ChoiceFormat/parse.java b/gnu/testlet/java/text/ChoiceFormat/parse.java
new file mode 100644
index 00000000..ce659795
--- /dev/null
+++ b/gnu/testlet/java/text/ChoiceFormat/parse.java
@@ -0,0 +1,59 @@
+// Test ChoiceFormat parsing.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.ChoiceFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.ChoiceFormat;
+import java.text.ParsePosition;
+
+public class parse implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ ChoiceFormat cf = new ChoiceFormat ("1.0#Sun|2.0#Mon|3.0#Tue|4.0#Wed|5.0#Thu|6.0#Fri|7.0#Sat");
+ ParsePosition pp = new ParsePosition (0);
+
+ Number n = cf.parse ("Wed", pp);
+ harness.check (n instanceof Double);
+ harness.check (n.doubleValue (), 4.0);
+ harness.check (pp.getIndex (), 3);
+
+ pp.setIndex (3);
+ n = cf.parse ("ZooMon", pp);
+ harness.check (n.doubleValue (), 2.0);
+ harness.check (pp.getIndex (), 6);
+
+ pp.setIndex (0);
+ n = cf.parse ("Saturday", pp);
+ harness.check (n.doubleValue (), 7.0);
+ harness.check (pp.getIndex (), 3);
+
+ n = cf.parse ("Saturday", pp);
+ harness.check (Double.isNaN (n.doubleValue ()));
+ harness.check (pp.getIndex (), 3);
+ }
+}
diff --git a/gnu/testlet/java/text/CollationElementIterator/CVS/Entries b/gnu/testlet/java/text/CollationElementIterator/CVS/Entries
new file mode 100644
index 00000000..f3773e57
--- /dev/null
+++ b/gnu/testlet/java/text/CollationElementIterator/CVS/Entries
@@ -0,0 +1,3 @@
+/jdk11.java/1.10/Thu Jun 3 14:31:15 2004//
+/offset.java/1.2/Thu Jun 3 14:31:15 2004//
+D
diff --git a/gnu/testlet/java/text/CollationElementIterator/CVS/Repository b/gnu/testlet/java/text/CollationElementIterator/CVS/Repository
new file mode 100644
index 00000000..3cdf5252
--- /dev/null
+++ b/gnu/testlet/java/text/CollationElementIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/CollationElementIterator
diff --git a/gnu/testlet/java/text/CollationElementIterator/CVS/Root b/gnu/testlet/java/text/CollationElementIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/CollationElementIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/CollationElementIterator/jdk11.java b/gnu/testlet/java/text/CollationElementIterator/jdk11.java
new file mode 100644
index 00000000..2781071b
--- /dev/null
+++ b/gnu/testlet/java/text/CollationElementIterator/jdk11.java
@@ -0,0 +1,285 @@
+/*************************************************************************
+/* jdk11.java -- Test JDK 1.1 features in java.text.CollationElementIterator
+/*
+/* Copyright (c) 2003 C. Brian Jones (cbj@gnu.org)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// We use CollationElementIterator.setText, a 1.2 invention.
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.CollationElementIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.RuleBasedCollator;
+import java.text.CollationElementIterator;
+
+public class jdk11 implements Testlet
+{
+// JDK 1.4 collation rule string for locale English (United States)
+ String JDK_1_4_EN_US_RULES =
+ "='\u200B'=\u200C=\u200D=\u200E=\u200F=\000 =\001 =\002 =\003 =\004" +
+ "=\005 =\006 =\007 =\b ='\t'='\013' =\016=\017 ='\020' =\021 =\022 " +
+ "=\023=\024 =\025 =\026 =\027 =\030=\031 =\032 =\033 =\034 =\035=\036" +
+ " =\037 =\177=\u0080 =\u0081 =\u0082 =\u0083 =\u0084 =\u0085=\u0086" +
+ " =\u0087 =\u0088 =\u0089 =\u008A =\u008B=\u008C =\u008D =\u008E =\u008F" +
+ " =\u0090 =\u0091=\u0092 =\u0093 =\u0094 =\u0095 =\u0096 =\u0097=\u0098" +
+ " =\u0099 =\u009A =\u009B =\u009C =\u009D=\u009E =\u009F;' ';'\u00A0" +
+ "';'\u2000';'\u2001';'\u2002';'\u2003';'\u2004';'\u2005';'\u2006';'" +
+ "\u2007';'\u2008';'\u2009';'\u200A';'\u3000';'\uFEFF';'\r' ;'\t' ;'" +
+ "\n';'\f';'\013';\u0301;\u0300;\u0306;\u0302;\u030C;\u030A;\u030D;\u0308" +
+ ";\u030B;\u0303;\u0307;\u0304;\u0337;\u0327;\u0328;\u0323;\u0332;\u0305" +
+ ";\u0309;\u030E;\u030F;\u0310;\u0311;\u0312;\u0313;\u0314;\u0315;\u0316" +
+ ";\u0317;\u0318;\u0319;\u031A;\u031B;\u031C;\u031D;\u031E;\u031F;\u0320" +
+ ";\u0321;\u0322;\u0324;\u0325;\u0326;\u0329;\u032A;\u032B;\u032C;\u032D" +
+ ";\u032E;\u032F;\u0330;\u0331;\u0333;\u0334;\u0335;\u0336;\u0338;\u0339" +
+ ";\u033A;\u033B;\u033C;\u033D;\u033E;\u033F;\u0342;\u0344;\u0345;\u0360" +
+ ";\u0361;\u0483;\u0484;\u0485;\u0486;\u20D0;\u20D1;\u20D2;\u20D3;\u20D4" +
+ ";\u20D5;\u20D6;\u20D7;\u20D8;\u20D9;\u20DA;\u20DB;\u20DC;\u20DD;\u20DE" +
+ ";\u20DF;\u20E0;\u20E1,'-';\u00AD;\u2010;\u2011;\u2012;\u2013;\u2014" +
+ ";\u2015;\u2212<'_'<\u00AF<','<';'<':'<'!'<\u00A1<'?'<\u00BF<'/'<'." +
+ "'<\u00B4<'`'<'^'<\u00A8<'~'<\u00B7<\u00B8<'''<'\"'<\u00AB<\u00BB<'" +
+ "('<')'<'['<']'<'{'<'}'<\u00A7<\u00B6<\u00A9<\u00AE<'@'<\u00A4<\u0E3F" +
+ "<\u00A2<\u20A1<\u20A2<'$'<\u20AB<\u20AC<\u20A3<\u20A4<\u20A5<\u20A6" +
+ "<\u20A7<\u00A3<\u20A8<\u20AA<\u20A9<\u00A5<'*'<'\\'<'&'<'#'<'%'<'+" +
+ "'<\u00B1<\u00F7<\u00D7<'<'<'='<'>'<\u00AC<'|'<\u00A6<\u00B0<\u00B5" +
+ "<0<1<2<3<4<5<6<7<8<9<\u00BC<\u00BD<\u00BE<a,A<b,B<c,C<d,D<\u00F0,\u00D0" +
+ "<e,E<f,F<g,G<h,H<i,I<j,J<k,K<l,L<m,M<n,N<o,O<p,P<q,Q<r,R<s, S & SS" +
+ ",\u00DF<t,T& TH, \u00DE &TH, \u00FE <u,U<v,V<w,W<x,X<y,Y<z,Z&AE,\u00C6" +
+ "&AE,\u00E6&OE,\u0152&OE,\u0153";
+
+ private static final int PRIMARY = 1;
+ private static final int SECONDARY = 2;
+ private static final int TERTIARY = 3;
+ private static final int NONE = 4;
+
+ private static TestHarness harness = null;
+
+ static void checkOrder (CollationElementIterator iterator,
+ int count, int order, String tag)
+ {
+ try
+ {
+ // next()
+ int key = iterator.next();
+ int[] prev = {key,
+ CollationElementIterator.primaryOrder(key),
+ CollationElementIterator.secondaryOrder(key),
+ CollationElementIterator.tertiaryOrder(key)
+ };
+ harness.debug("first = {" + prev[0] + ", " + prev[1] + ", " +
+ prev[2] + ", " + prev[3] + "}");
+ harness.check(key != CollationElementIterator.NULLORDER, "first " + tag);
+
+ int i = 1;
+ while ((key = iterator.next()) != CollationElementIterator.NULLORDER) {
+ i++;
+ int[] next = {key,
+ CollationElementIterator.primaryOrder(key),
+ CollationElementIterator.secondaryOrder(key),
+ CollationElementIterator.tertiaryOrder(key)
+ };
+
+ harness.debug("next (" + i + ") = {" +
+ next[0] + ", " + next[1] + ", " +
+ next[2] + ", " + next[3] + "}");
+
+ harness.check(next[0] > prev[0],
+ "next() " + i + " " + tag);
+ if (order == PRIMARY) {
+ harness.check(next[1] > prev[1],
+ "no primary difference " + i + " " + tag);
+ }
+ else if (order == SECONDARY) {
+ harness.check((next[1] > prev[1]) ||
+ (next[1] == prev[1] && next[2] > prev[2]),
+ "no secondary difference" + i + " " + tag);
+ }
+ else if (order == TERTIARY) {
+ harness.check((next[1] > prev[1]) ||
+ (next[1] == prev[1] && next[2] > prev[2]) ||
+ (next[1] == prev[1] && next[2] == prev[2] &&
+ next[3] > prev[3]),
+ "no tertiary difference" + i + " " + tag);
+ }
+ prev = next;
+ }
+ if (count != i) {
+ harness.debug("count is " + count + ", i is " + i);
+ }
+ harness.check(count == i, "wrong number of keys " + tag);
+ }
+ catch (Throwable t)
+ {
+ harness.debug (t);
+ harness.fail ("CollationElementIterator with localeName");
+ }
+ }
+
+
+ static void checkEquiv (CollationElementIterator iterator,
+ String[] sets, int order, String tag)
+ {
+ try
+ {
+ for (int i = 0; i < sets.length; i++) {
+ iterator.setText(sets[i]);
+ int key = iterator.next();
+ int[] prev = {key,
+ CollationElementIterator.primaryOrder(key),
+ CollationElementIterator.secondaryOrder(key),
+ CollationElementIterator.tertiaryOrder(key)
+ };
+ harness.debug("first = {" + prev[0] + ", " + prev[1] + ", " +
+ prev[2] + ", " + prev[3] + "}");
+ harness.check(key != CollationElementIterator.NULLORDER,
+ "first " + tag);
+
+ int j = 1;
+ while ((key = iterator.next()) != CollationElementIterator.NULLORDER) {
+ j++;
+ int[] next = {key,
+ CollationElementIterator.primaryOrder(key),
+ CollationElementIterator.secondaryOrder(key),
+ CollationElementIterator.tertiaryOrder(key)
+ };
+
+ harness.debug("next (" + i + ", " + j + ") = {" +
+ next[0] + ", " + next[1] + ", " +
+ next[2] + ", " + next[3] + "}");
+
+ if (order == PRIMARY) {
+ harness.check(next[1] > prev[1],
+ "not primary ordered " + i + ", " + j + " " + tag);
+ }
+ else if (order == SECONDARY) {
+ harness.check(next[1] == prev[1] && next[2] > prev[2],
+ "not secondary ordered" + i + ", " + j + " " + tag);
+ }
+ else if (order == TERTIARY) {
+ harness.check(next[1] == prev[1] && next[2] == prev[2] &&
+ next[3] > prev[3],
+ "not tertiary ordered" + i + ", " + j + " " + tag);
+ }
+ else if (order == NONE) {
+ harness.check(next[1] == prev[1], "keys not equal");
+ }
+ prev = next;
+ }
+ if (sets[i].length() != j) {
+ harness.debug("length[" + i + "] is " + sets[i].length() +
+ ", j is " + j);
+ }
+ harness.check(sets[i].length() == j,
+ "wrong number of keys (" + j + ") " + tag);
+ }
+ }
+ catch (Throwable t)
+ {
+ harness.debug (t);
+ harness.fail ("CollationElementIterator with localeName");
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ // FIXME ... add more test strings for the en_US locale
+ // FIXME ... add tests for characters that compare equal
+ // FIXME ... add tests for other locales
+ final String[] TEST_STRINGS = {
+ "X",
+ "12",
+ "abcdefghijklmnopqrstuvwxyz",
+ "0123456789",
+ " _,;:!?/.`^~'\"()[]{}@$*\\&#%+<=>|A",
+ "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ",
+ };
+ final int[] TEST_ORDERS = {
+ PRIMARY,
+ PRIMARY,
+ PRIMARY,
+ PRIMARY,
+ PRIMARY,
+ TERTIARY,
+ };
+
+ final String[][] TEST_STRINGS2 = {
+ {"aA", "bB", "cC", "dD", "eE", "fF", "gG", "hH", "iI", "jJ", "kK",
+ "lL", "mM", "nN", "oO", "pP", "qQ", "rR", "sS", "tT", "uU", "vV",
+ "wW", "xX", "yY", "zZ"},
+ };
+ final int[] TEST_ORDERS2 = {
+ TERTIARY,
+ };
+
+ jdk11.harness = harness;
+ try
+ {
+ // -------- constants --------
+ harness.check(CollationElementIterator.NULLORDER, -1, "NULLORDER");
+
+// RuleBasedCollator en_USCollator = (RuleBasedCollator)
+// Collator.getInstance(new Locale("en", "US", ""));
+
+ // Used to get the collator as above, but this assumes that the
+ // en_US locale's collation rules are reasonably complete.
+ // Since the point of this class is test the iterator, it is
+ // better to use a collator with hard-wired collation rules of
+ // known quality.
+ RuleBasedCollator en_USCollator =
+ new RuleBasedCollator(JDK_1_4_EN_US_RULES);
+
+ CollationElementIterator iterator =
+ en_USCollator.getCollationElementIterator("abcdefg");
+
+ // -------- methods --------
+ checkOrder(iterator, 7, PRIMARY, "initial test");
+
+ // reset()
+ harness.checkPoint("reset()");
+ iterator.reset();
+ checkOrder(iterator, 7, PRIMARY, "initial test after reset()");
+
+ // ------- check empty string --------
+ iterator = en_USCollator.getCollationElementIterator("");
+ harness.check (iterator.next(), CollationElementIterator.NULLORDER,
+ "next()");
+
+ // ------- detailed checks of collation orders -------
+ for (int i = 0; i < TEST_STRINGS.length; i++) {
+ iterator = en_USCollator.getCollationElementIterator(TEST_STRINGS[i]);
+ checkOrder(iterator, TEST_STRINGS[i].length(), TEST_ORDERS[i],
+ "test string #" + i);
+ }
+
+ // ------- detailed checks of collation equivalences -------
+ for (int i = 0; i < TEST_STRINGS2.length; i++) {
+ checkEquiv(iterator, TEST_STRINGS2[i], TEST_ORDERS2[i],
+ "test set #" + i);
+ }
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.fail("CollationElementIterator");
+ }
+ }
+
+
+} // class jdk11
+
diff --git a/gnu/testlet/java/text/CollationElementIterator/offset.java b/gnu/testlet/java/text/CollationElementIterator/offset.java
new file mode 100644
index 00000000..7868646b
--- /dev/null
+++ b/gnu/testlet/java/text/CollationElementIterator/offset.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+/* offset -- Test get/setOffset features in CollationElementIterator.
+/*
+/* Copyright (c) 2004 Guilhem Lavaux <guilhem.lavaux@free.fr>
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.CollationElementIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.CollationElementIterator;
+import java.text.RuleBasedCollator;
+import java.text.ParseException;
+
+public class offset implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ RuleBasedCollator collator = new RuleBasedCollator("<a,A<AB,ab<ABC,abc");
+ CollationElementIterator iter;
+
+ iter = collator.getCollationElementIterator("abaaABC");
+ iter.setOffset(1);
+ harness.check(iter.getOffset(), 0);
+
+ iter.setOffset(0);
+ iter.next();
+ harness.check(iter.getOffset(), 2);
+ iter.next();
+ harness.check(iter.getOffset(), 3);
+ iter.next();
+ harness.check(iter.getOffset(), 4);
+ iter.next();
+ harness.check(iter.getOffset(), 7);
+ }
+ catch (ParseException e)
+ {
+ harness.fail("Unexpected parse error exception");
+ harness.debug(e);
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/text/Collator/CVS/Entries b/gnu/testlet/java/text/Collator/CVS/Entries
new file mode 100644
index 00000000..0d39cc12
--- /dev/null
+++ b/gnu/testlet/java/text/Collator/CVS/Entries
@@ -0,0 +1,3 @@
+/Constants.java/1.2/Fri Jun 11 01:17:05 1999//
+/GetSet.java/1.3/Tue Jun 19 18:13:50 2007//
+D
diff --git a/gnu/testlet/java/text/Collator/CVS/Repository b/gnu/testlet/java/text/Collator/CVS/Repository
new file mode 100644
index 00000000..a5c5e1db
--- /dev/null
+++ b/gnu/testlet/java/text/Collator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/Collator
diff --git a/gnu/testlet/java/text/Collator/CVS/Root b/gnu/testlet/java/text/Collator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/Collator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/Collator/Constants.java b/gnu/testlet/java/text/Collator/Constants.java
new file mode 100644
index 00000000..938eaebc
--- /dev/null
+++ b/gnu/testlet/java/text/Collator/Constants.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+/* Constants.java -- Test class constants in java.text.Collator
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.Collator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.Collator;
+
+public class Constants implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ harness.check(Collator.PRIMARY, 0, "PRIMARY");
+ harness.check(Collator.SECONDARY, 1, "SECONDARY");
+ harness.check(Collator.TERTIARY, 2, "TERTIARY");
+ harness.check(Collator.IDENTICAL, 3, "IDENTICAL");
+ harness.check(Collator.NO_DECOMPOSITION, 0, "NO_DECOMPOSITION");
+ harness.check(Collator.CANONICAL_DECOMPOSITION, 1,
+ "CANONICAL_DECOMPOSITION");
+ harness.check(Collator.FULL_DECOMPOSITION, 2, "FULL_DECOMPOSITION");
+}
+
+} // class Constants
+
diff --git a/gnu/testlet/java/text/Collator/GetSet.java b/gnu/testlet/java/text/Collator/GetSet.java
new file mode 100644
index 00000000..e1d8861c
--- /dev/null
+++ b/gnu/testlet/java/text/Collator/GetSet.java
@@ -0,0 +1,77 @@
+/*************************************************************************
+/* GetSet.java -- Test get/set methods in java.text.Collator
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.Collator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.Collator;
+import java.util.Locale;
+
+public class GetSet implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ Collator col = Collator.getInstance(Locale.US);
+
+ harness.check(col.getStrength(), Collator.TERTIARY, "default strength");
+ harness.check(col.getDecomposition(), Collator.NO_DECOMPOSITION,
+ "default decomposition");
+
+ col.setStrength(Collator.PRIMARY);
+ harness.check(col.getStrength(), Collator.PRIMARY, "set/get strength");
+
+ col.setDecomposition(Collator.NO_DECOMPOSITION);
+ harness.check(col.getDecomposition(), Collator.NO_DECOMPOSITION,
+ "set/get decomposition");
+
+ try
+ {
+ col.setStrength(999);
+ harness.check(false, "invalid strength value");
+ }
+ catch (Exception e)
+ {
+ harness.check(true, "invalid strength value");
+ }
+
+ try
+ {
+ col.setDecomposition(999);
+ harness.check(false, "invalid decomposition value");
+ }
+ catch (Exception e)
+ {
+ harness.check(true, "invalid decomposition value");
+ }
+
+ Collator col2 = (Collator)col.clone();
+ col2.setStrength(Collator.SECONDARY);
+ harness.check(!col.equals(col2), "equals false");
+
+ harness.check(col.equals(col), "equals true");
+}
+
+} // class GetSet
+
diff --git a/gnu/testlet/java/text/DateFormat/CVS/Entries b/gnu/testlet/java/text/DateFormat/CVS/Entries
new file mode 100644
index 00000000..c1b81a4a
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/CVS/Entries
@@ -0,0 +1,4 @@
+/Test.java/1.1/Fri Jan 8 21:33:16 1999//
+/equals.java/1.1/Fri Feb 18 15:09:31 2005//
+/hashCode.java/1.1/Thu Apr 28 22:36:33 2005//
+D
diff --git a/gnu/testlet/java/text/DateFormat/CVS/Repository b/gnu/testlet/java/text/DateFormat/CVS/Repository
new file mode 100644
index 00000000..67799c1d
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/DateFormat
diff --git a/gnu/testlet/java/text/DateFormat/CVS/Root b/gnu/testlet/java/text/DateFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/DateFormat/Test.java b/gnu/testlet/java/text/DateFormat/Test.java
new file mode 100644
index 00000000..058892bb
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/Test.java
@@ -0,0 +1,109 @@
+/*************************************************************************
+/* Test.java -- Test java.text.DateFormat
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.DateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class Test extends DateFormat implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ // Do we still need to check these? Are static finals still compiled
+ // into class files?
+ harness.check(ERA_FIELD, 0, "ERA_FIELD");
+ harness.check(YEAR_FIELD, 1, "YEAR_FIELD");
+ harness.check(MONTH_FIELD, 2, "MONTH_FIELD");
+ harness.check(DATE_FIELD, 3, "DATE_FIELD");
+ harness.check(HOUR_OF_DAY1_FIELD, 4, "HOUR_OF_DAY1_FIELD");
+ harness.check(HOUR_OF_DAY0_FIELD, 5, "HOUR_OF_DAY0_FIELD");
+ harness.check(MINUTE_FIELD, 6, "MINUTE_FIELD");
+ harness.check(SECOND_FIELD, 7, "SECOND_FIELD");
+ harness.check(MILLISECOND_FIELD, 8, "MILLISECOND_FIELD");
+ harness.check(DAY_OF_WEEK_FIELD, 9, "DAY_OF_WEEK_FIELD");
+ harness.check(DAY_OF_YEAR_FIELD, 10, "DAY_OF_YEAR_FIELD");
+ harness.check(DAY_OF_WEEK_IN_MONTH_FIELD, 11, "DAY_OF_WEEK_IN_MONTH_FIELD");
+ harness.check(WEEK_OF_YEAR_FIELD, 12, "WEEK_OF_YEAR_FIELD");
+ harness.check(WEEK_OF_MONTH_FIELD, 13, "WEEK_OF_MONTH_FIELD");
+ harness.check(AM_PM_FIELD, 14, "AM_PM_FIELD");
+ harness.check(HOUR1_FIELD, 15, "HOUR1_FIELD");
+ harness.check(HOUR0_FIELD, 16, "HOUR0_FIELD");
+ harness.check(TIMEZONE_FIELD, 17, "TIMEZONE_FIELD");
+
+ harness.check(FULL, 0, "FULL");
+ harness.check(LONG, 1, "LONG");
+ harness.check(MEDIUM, 2, "MEDIUM");
+ harness.check(SHORT, 3, "SHORT");
+ harness.check(DEFAULT, 2, "DEFAULT");
+
+ Calendar c = new GregorianCalendar();
+ setCalendar(c);
+ harness.check(getCalendar(), c, "get/setCalendar");
+ harness.check(calendar, c, "calendar");
+
+ NumberFormat nf = NumberFormat.getNumberInstance();
+ setNumberFormat(nf);
+ harness.check(getNumberFormat(), nf, "get/setNumberFormat");
+ harness.check(numberFormat, nf, "numberFormat");
+
+ setLenient(true);
+ harness.check(isLenient() == true, "set/isLenient (true)");
+ setLenient(false);
+ harness.check(isLenient() == false, "set/isLenient (false)");
+
+ TimeZone tz = TimeZone.getDefault();
+ setTimeZone(tz);
+ harness.check(getTimeZone(), tz, "get/setTimeZone");
+
+ Object t = clone();
+ harness.check(equals(t) == true, "clone/equals");
+
+ // Hmmm. Is this 1.2?
+ //Locales[] locales = getAvailableLocales();
+ //harness.debugArray(locales, "Available Locales");
+
+ // Just to make sure we don't throw exceptions
+ getInstance();
+ getDateInstance(FULL, Locale.US);
+ harness.check(true, "getInstance");
+}
+
+public StringBuffer
+format(Date date, StringBuffer sb, FieldPosition pos)
+{
+ return(null);
+}
+
+public Date
+parse(String text, ParsePosition pos)
+{
+ return(null);
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/DateFormat/equals.java b/gnu/testlet/java/text/DateFormat/equals.java
new file mode 100644
index 00000000..a239e25a
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/equals.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the equals() method in the DateFormat class. Bug 5066247 is
+ * a general request for a better API specification. The following bug reports
+ * provide some clues about how the API is supposed to behave:
+ *
+ * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4071441
+ * http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4072858
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ DateFormat f1 = new SimpleDateFormat("yyyy");
+ DateFormat f2 = new SimpleDateFormat("yyyy");
+ harness.check(f1.equals(f2)); // check 1
+ harness.check(f2.equals(f1)); // check 2
+
+ // check calendar differences:
+ GregorianCalendar c1 = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
+ Locale.UK);
+ GregorianCalendar c2 = new GregorianCalendar(TimeZone.getTimeZone("GMT"),
+ Locale.UK);
+ long millis = System.currentTimeMillis();
+ c1.setTimeInMillis(millis);
+ c2.setTimeInMillis(millis);
+ f1.setCalendar(c1);
+ f2.setCalendar(c2);
+ harness.check(f1.equals(f2));
+
+ // timeInMillis --> guessing that differences should be ignored
+ c1.setTimeInMillis(123L);
+ harness.check(f1.equals(f2)); // still equal!
+ c2.setTimeInMillis(123L);
+ harness.check(f1.equals(f2));
+
+ // firstDayOfWeek
+ c1.setFirstDayOfWeek(Calendar.THURSDAY);
+ harness.check(!f1.equals(f2));
+ c2.setFirstDayOfWeek(Calendar.THURSDAY);
+ harness.check(f1.equals(f2));
+
+ // minimalDaysInFirstWeek
+ c1.setMinimalDaysInFirstWeek(6);
+ harness.check(!f1.equals(f2));
+ c2.setMinimalDaysInFirstWeek(6);
+ harness.check(f1.equals(f2));
+
+ // timeZone
+ c1.setTimeZone(new SimpleTimeZone(0, "Z1"));
+ harness.check(!f1.equals(f2));
+ c2.setTimeZone(new SimpleTimeZone(0, "Z1"));
+ harness.check(f1.equals(f2));
+
+ // locale
+ c1 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.UK);
+ c2 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
+ c1.setTimeInMillis(millis);
+ c2.setTimeInMillis(millis);
+ f1.setCalendar(c1);
+ f2.setCalendar(c2);
+ harness.check(!f1.equals(f2));
+ c2 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.UK);
+ c2.setTimeInMillis(millis);
+ f2.setCalendar(c2);
+ harness.check(f1.equals(f2));
+
+ // gregorianChange
+ c1.setGregorianChange(new Date(123L));
+ harness.check(f1.equals(f2));
+ c2.setGregorianChange(new Date(123L));
+ harness.check(f1.equals(f2));
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormat/hashCode.java b/gnu/testlet/java/text/DateFormat/hashCode.java
new file mode 100644
index 00000000..beb4e7df
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormat/hashCode.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormat;
+import java.util.Locale;
+
+/**
+ * Some checks for the hashCode() method in the DateFormat class.
+ */
+public class hashCode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ DateFormat f1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK);
+ DateFormat f2 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK);
+ harness.check(f1.equals(f2)); // check 1
+ harness.check(f1.hashCode(), f2.hashCode()); // check 2
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/CVS/Entries b/gnu/testlet/java/text/DateFormatSymbols/CVS/Entries
new file mode 100644
index 00000000..72b2c4ba
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/CVS/Entries
@@ -0,0 +1,11 @@
+/PR22851.java/1.1/Sun Jul 6 23:25:53 2008//
+/SanityCheck.java/1.2/Tue Apr 10 01:52:25 2012//
+/Test.java/1.7/Tue Jun 19 18:13:50 2007//
+/setAmPmStrings.java/1.1/Thu Nov 11 09:37:18 2004//
+/setEras.java/1.1/Thu Nov 11 09:37:18 2004//
+/setMonths.java/1.1/Thu Nov 11 09:37:18 2004//
+/setShortMonths.java/1.1/Thu Nov 11 09:37:18 2004//
+/setShortWeekdays.java/1.1/Thu Nov 11 09:37:18 2004//
+/setWeekdays.java/1.1/Thu Nov 11 09:37:18 2004//
+/setZoneStrings.java/1.1/Thu Nov 11 09:37:18 2004//
+D
diff --git a/gnu/testlet/java/text/DateFormatSymbols/CVS/Repository b/gnu/testlet/java/text/DateFormatSymbols/CVS/Repository
new file mode 100644
index 00000000..54b529bd
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/DateFormatSymbols
diff --git a/gnu/testlet/java/text/DateFormatSymbols/CVS/Root b/gnu/testlet/java/text/DateFormatSymbols/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/DateFormatSymbols/PR22851.java b/gnu/testlet/java/text/DateFormatSymbols/PR22851.java
new file mode 100644
index 00000000..0d40d363
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/PR22851.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2008 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * A check for PR22851. This checks that the zone
+ * strings are allocated to the correct elements in the
+ * array. The Javadoc for Java 1.6 now specifies this as:
+ * </p>
+ * <table>
+ * <tr><td>zoneStrings[i][0]</td><td>time zone ID</td></tr>
+ * <tr><td>zoneStrings[i][1]</td><td>long name of zone in standard time</td></tr>
+ * <tr><td>zoneStrings[i][2]</td><td>short name of zone in standard time</td></tr>
+ * <tr><td>zoneStrings[i][3]</td><td>long name of zone in daylight saving time</td></tr>
+ * <tr><td>zoneStrings[i][4]</td><td>short name of zone in daylight saving time</td></tr>
+ * </table>
+ */
+public class PR22851
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ String[][] zstrings = DateFormatSymbols.getInstance(Locale.UK).getZoneStrings();
+ boolean checked = false;
+ for (int a = 0; a < zstrings.length; ++a)
+ {
+ harness.check(zstrings[a].length >= 5, zstrings[a][0] + " has less than 5 strings.");
+ if (zstrings[a][0].equals("Europe/London"))
+ {
+ if (checked)
+ harness.fail("Europe/London appears twice.");
+ harness.check(zstrings[a][1], "Greenwich Mean Time");
+ harness.check(zstrings[a][2], "GMT");
+ harness.check(zstrings[a][3], "British Summer Time");
+ harness.check(zstrings[a][4], "BST");
+ checked = true;
+ }
+ }
+ if (!checked)
+ harness.fail("Europe/London doesn't appear");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java b/gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java
new file mode 100644
index 00000000..baa091d4
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/SanityCheck.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2012 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Locale;
+
+/**
+ * Checks that all locales return usable arrays of the
+ * correct size.
+ */
+public class SanityCheck
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ Locale[] locales = Locale.getAvailableLocales();
+ for (int a = 0; a < locales.length; ++a)
+ {
+ DateFormatSymbols dfs = DateFormatSymbols.getInstance(locales[a]);
+ checkArray(harness, locales[a], "AM/PM", dfs.getAmPmStrings(), 2);
+ checkArray(harness, locales[a], "Eras", dfs.getEras(), 2);
+ checkArray(harness, locales[a], "Months", dfs.getMonths(), 13);
+ checkArray(harness, locales[a], "Short months", dfs.getShortMonths(), 13);
+ checkArray(harness, locales[a], "Weekdays", dfs.getWeekdays(), 8);
+ checkArray(harness, locales[a], "Short weekdays", dfs.getShortWeekdays(), 8);
+ }
+ }
+
+ /**
+ * Checks an array of locale data is of the correct size.
+ *
+ * @param harness the test harness.
+ * @param locale the locale being tested (for display purposes).
+ * @param type the type of data (for display purposes).
+ * @param array the array of strings.
+ * @param size the expected size of the array.
+ */
+ private void checkArray(TestHarness harness, Locale locale, String type,
+ String[] array, int size)
+ {
+ harness.check(array.length == size, type + "check (" + locale + ")");
+ harness.debug(locale + ": " + type + "=" + Arrays.toString(array));
+ // Check entries are non-null and also non-empty (unless allowed).
+ for (int a = 0; a < array.length; ++a)
+ {
+ harness.check(array[a] != null, type + "[" + a + "] null check (" +
+ locale + ")");
+ // Weekdays are indexed 1 to 7 not 0 to 6. The 13th month is not
+ // used by the Gregorian calendar.
+ if (!(type.contains("onths") && a == Calendar.UNDECIMBER) &&
+ !(type.contains("days") && a == 0))
+ harness.check(!array[a].isEmpty(), type + "[" + a + "] empty check (" +
+ locale + ")");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/Test.java b/gnu/testlet/java/text/DateFormatSymbols/Test.java
new file mode 100644
index 00000000..7636432d
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/Test.java
@@ -0,0 +1,150 @@
+/*************************************************************************
+/* Test.java -- Test java.text.DateFormatSymbols
+/*
+/* Copyright (c) 1998, 2001 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.DateFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+public class Test implements Testlet
+{
+
+private String[] my_eras = { "XX", "YY" };
+private String[] my_months = { "A", "B", "C", "D" };
+private String[] my_short_months = { "a", "a", "b", "c" };
+private String[] my_weekdays = { "S", "M", "T" };
+private String[] my_short_weekdays = { "s", "m", "t" };
+private String[] my_ampms = { "aa", "pp" };
+private String[][] my_zonestrings = {{ "A", "B" }};
+private String my_patternchars = "123456789012345678";
+
+private static boolean
+arrayEquals(Object[] o1, Object[] o2)
+{
+ if (o1 == null)
+ {
+ if (o2 != null)
+ return(false);
+ }
+ else
+ if (o2 == null)
+ return(true);
+
+ // We assume ordering is important.
+ for (int i = 0; i < o1.length; i++)
+ if (o1[i] instanceof Object[])
+ {
+ if (o2[i] instanceof Object[])
+ {
+ if (!arrayEquals((Object[])o1[i], (Object[])o2[i]))
+ return(false);
+ }
+ else
+ return(false);
+ }
+ else
+ if (!o1[i].equals(o2[i]))
+ return(false);
+
+ return(true);
+}
+
+private static void
+arrayDump(TestHarness harness, Object[] o, String desc)
+{
+ harness.debug("Dumping Object Array: " + desc);
+ if (o == null)
+ {
+ harness.debug("null");
+ return;
+ }
+
+ for (int i = 0; i < o.length; i++)
+ if (o[i] instanceof Object[])
+ arrayDump(harness, (Object[])o[i], desc + " element " + i);
+ else
+ harness.debug(" Element " + i + ": " + o[i]);
+}
+
+public void
+test(TestHarness harness)
+{
+ try
+ {
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+
+ harness.debug("Dumping default symbol information");
+ arrayDump(harness, dfs.getEras(), "eras");
+ arrayDump(harness, dfs.getMonths(), "months");
+ arrayDump(harness, dfs.getShortMonths(), "short months");
+ arrayDump(harness, dfs.getWeekdays(), "weekdays");
+ arrayDump(harness, dfs.getShortWeekdays(), "short weekdays");
+ arrayDump(harness, dfs.getAmPmStrings(), "am/pm strings");
+ arrayDump(harness, dfs.getZoneStrings(), "zone string array");
+ harness.debug("local pattern chars: " + dfs.getLocalPatternChars());
+
+ dfs.setEras(my_eras);
+ harness.check(arrayEquals(dfs.getEras(), my_eras), "eras");
+
+ dfs.setMonths(my_months);
+ harness.check(arrayEquals(dfs.getMonths(), my_months), "months");
+
+ dfs.setShortMonths(my_short_months);
+ harness.check(arrayEquals(dfs.getShortMonths(), my_short_months),
+ "short months");
+
+ dfs.setWeekdays(my_weekdays);
+ harness.check(arrayEquals(dfs.getWeekdays(), my_weekdays), "weekdays");
+
+ dfs.setShortWeekdays(my_short_weekdays);
+ harness.check(arrayEquals(dfs.getShortWeekdays(), my_short_weekdays),
+ "short weekdays");
+
+ dfs.setAmPmStrings(my_ampms);
+ harness.check(arrayEquals(dfs.getAmPmStrings(), my_ampms), "am/pm");
+
+ dfs.setLocalPatternChars(my_patternchars);
+ harness.check(dfs.getLocalPatternChars(), my_patternchars, "patterns");
+
+ /* Invalid Argument */
+ boolean fail = false;
+ try {
+ dfs.setZoneStrings(my_zonestrings);
+ } catch (IllegalArgumentException e) {
+ fail = true;
+ }
+ harness.check(fail, true, "InvalidArgumentException is thrown.");
+
+ }
+ catch(MissingResourceException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setAmPmStrings.java b/gnu/testlet/java/text/DateFormatSymbols/setAmPmStrings.java
new file mode 100644
index 00000000..a1472a8b
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setAmPmStrings.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setAmPmStrings() method in the DateFormatSymbols
+ * class.
+ */
+public class setAmPmStrings implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setAmPmStrings(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setEras.java b/gnu/testlet/java/text/DateFormatSymbols/setEras.java
new file mode 100644
index 00000000..8688ed69
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setEras.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setEras() method in the DateFormatSymbols
+ * class.
+ */
+public class setEras implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setEras(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setMonths.java b/gnu/testlet/java/text/DateFormatSymbols/setMonths.java
new file mode 100644
index 00000000..f0d9d3ca
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setMonths.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setMonths() method in the DateFormatSymbols
+ * class.
+ */
+public class setMonths implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setMonths(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setShortMonths.java b/gnu/testlet/java/text/DateFormatSymbols/setShortMonths.java
new file mode 100644
index 00000000..761930f7
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setShortMonths.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setShortMonths() method in the DateFormatSymbols
+ * class.
+ */
+public class setShortMonths implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setShortMonths(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setShortWeekdays.java b/gnu/testlet/java/text/DateFormatSymbols/setShortWeekdays.java
new file mode 100644
index 00000000..66a03308
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setShortWeekdays.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setShortWeekdays() method in the DateFormatSymbols
+ * class.
+ */
+public class setShortWeekdays implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setShortWeekdays(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setWeekdays.java b/gnu/testlet/java/text/DateFormatSymbols/setWeekdays.java
new file mode 100644
index 00000000..e1333282
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setWeekdays.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setWeekdays() method in the DateFormatSymbols
+ * class.
+ */
+public class setWeekdays implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setWeekdays(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DateFormatSymbols/setZoneStrings.java b/gnu/testlet/java/text/DateFormatSymbols/setZoneStrings.java
new file mode 100644
index 00000000..513d3ce0
--- /dev/null
+++ b/gnu/testlet/java/text/DateFormatSymbols/setZoneStrings.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DateFormatSymbols;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the setZoneStrings() method in the DateFormatSymbols
+ * class.
+ */
+public class setZoneStrings implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.UK);
+ try
+ {
+ dfs.setZoneStrings(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/CVS/Entries b/gnu/testlet/java/text/DecimalFormat/CVS/Entries
new file mode 100644
index 00000000..883718a8
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/CVS/Entries
@@ -0,0 +1,37 @@
+/MaximumAndMinimumDigits.java/1.2/Tue Jun 19 18:13:50 2007/-kk/
+/PR23996.java/1.1/Tue Oct 10 22:36:48 2006/-kk/
+/PR27311.java/1.1/Sun May 7 21:06:08 2006//
+/applyLocalizedPattern.java/1.1/Sun Mar 13 20:42:07 2005//
+/applyPattern.java/1.4/Thu Nov 23 12:13:11 2006//
+/clone.java/1.1/Sun Mar 13 20:42:07 2005//
+/constructors.java/1.1/Sun Mar 13 20:42:07 2005//
+/digits.java/1.2/Tue Jun 19 18:13:50 2007//
+/equals.java/1.2/Sun Mar 13 20:42:07 2005//
+/format.java/1.16/Thu Dec 7 16:27:04 2006//
+/formatExp.java/1.4/Thu Nov 23 12:13:11 2006//
+/formatToCharacterIterator.java/1.2/Thu Nov 23 12:13:11 2006//
+/getCurrency.java/1.1/Sun Mar 13 20:42:07 2005//
+/getDecimalFormatSymbols.java/1.1/Sun Mar 13 20:42:07 2005//
+/getGroupingSize.java/1.1/Sun Mar 13 20:42:07 2005//
+/getMultiplier.java/1.1/Sun Mar 13 20:42:07 2005//
+/getNegativePrefix.java/1.1/Sun Mar 13 20:42:07 2005//
+/getNegativeSuffix.java/1.1/Sun Mar 13 20:42:07 2005//
+/getPositivePrefix.java/1.2/Fri Sep 22 20:28:38 2006//
+/getPositiveSuffix.java/1.1/Sun Mar 13 20:42:07 2005//
+/hashCode.java/1.1/Thu Apr 28 22:36:34 2005//
+/isDecimalSeparatorAlwaysShown.java/1.1/Sun Mar 13 20:42:07 2005//
+/parse.java/1.12/Fri Sep 22 20:28:38 2006//
+/position.java/1.1/Tue Mar 9 19:29:44 1999//
+/setCurrency.java/1.1/Sun Mar 13 20:42:07 2005//
+/setDecimalFormatSymbols.java/1.2/Tue Jun 19 18:13:50 2007//
+/setDecimalSeparatorAlwaysShown.java/1.1/Sun Mar 13 20:42:07 2005//
+/setGroupingSize.java/1.1/Sun Mar 13 20:42:07 2005//
+/setMultiplier.java/1.1/Sun Mar 13 20:42:07 2005//
+/setNegativePrefix.java/1.1/Sun Mar 13 20:42:07 2005//
+/setNegativeSuffix.java/1.1/Sun Mar 13 20:42:07 2005//
+/setPositivePrefix.java/1.1/Sun Mar 13 20:42:07 2005//
+/setPositiveSuffix.java/1.1/Sun Mar 13 20:42:07 2005//
+/toLocalizedPattern.java/1.1/Sun Mar 13 20:42:07 2005//
+/toPattern.java/1.3/Tue Jun 19 18:13:50 2007//
+/toPattern14.java/1.2/Tue Jun 19 18:13:50 2007/-kk/
+D
diff --git a/gnu/testlet/java/text/DecimalFormat/CVS/Repository b/gnu/testlet/java/text/DecimalFormat/CVS/Repository
new file mode 100644
index 00000000..9da43778
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/DecimalFormat
diff --git a/gnu/testlet/java/text/DecimalFormat/CVS/Root b/gnu/testlet/java/text/DecimalFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java b/gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java
new file mode 100644
index 00000000..0b33dfe8
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/MaximumAndMinimumDigits.java
@@ -0,0 +1,137 @@
+/* MaximumAndMinimumDigits.java --
+ Copyright (C) 2006 Lima Software, SO.PR.IND. s.r.l.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test class for maximum and minimum integer and fraction digits getter/setter
+ * in class DecimalFormat.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class MaximumAndMinimumDigits implements Testlet
+{
+ /** Test Harness */
+ private TestHarness harness = null;
+
+ /*
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ Locale original = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ try
+ {
+ doTest();
+ }
+ finally
+ {
+ Locale.setDefault(original);
+ }
+ }
+
+ private void doTest()
+ {
+ // this value is 2147483647
+ int MAX = Integer.MAX_VALUE;
+
+ harness.checkPoint("default pattern");
+ DecimalFormat format = new DecimalFormat();
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 3);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint("0.00E0");
+ format = new DecimalFormat("0.00E0");
+ harness.check(format.getMaximumIntegerDigits(), 1);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 2);
+ harness.check(format.getMinimumFractionDigits(), 2);
+
+ harness.checkPoint("#,##0.0#");
+ format = new DecimalFormat("#,##0.0#");
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 2);
+ harness.check(format.getMinimumFractionDigits(), 1);
+
+ // check what happen if we force a different value
+ harness.checkPoint("maximum integer digits, checking format...");
+ format.setMaximumIntegerDigits(0);
+ harness.check(format.getMaximumIntegerDigits(), 0);
+ harness.check(format.format(123456.123456), ".12");
+
+ harness.checkPoint("#.");
+ format = new DecimalFormat("#.");
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 0);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint("#.#");
+ format = new DecimalFormat("#.#");
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 1);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint("#0000000000000,00000.###");
+ format = new DecimalFormat("#0000000000000,00000.###");
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 18);
+ harness.check(format.getMaximumFractionDigits(), 3);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint("0E0");
+ format = new DecimalFormat("0E0");
+ harness.check(format.getMaximumIntegerDigits(), 1);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 0);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint("0.###E0");
+ format = new DecimalFormat("0.###E0");
+ harness.check(format.getMaximumIntegerDigits(), 1);
+ harness.check(format.getMinimumIntegerDigits(), 1);
+ harness.check(format.getMaximumFractionDigits(), 3);
+ harness.check(format.getMinimumFractionDigits(), 0);
+
+ harness.checkPoint(".00");
+ format = new DecimalFormat(".00");
+ harness.check(format.getMaximumIntegerDigits(), MAX);
+ harness.check(format.getMinimumIntegerDigits(), 0);
+ harness.check(format.getMaximumFractionDigits(), 2);
+ harness.check(format.getMinimumFractionDigits(), 2);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/PR23996.java b/gnu/testlet/java/text/DecimalFormat/PR23996.java
new file mode 100644
index 00000000..5454ca30
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/PR23996.java
@@ -0,0 +1,61 @@
+/* PR23996.java -- test for bug PR23996
+ Copyright (C) 2006 Mario Torre
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This is based on PR23996: DecimalFormat.format() is giving
+ * different values in Java and DOTNet.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class PR23996 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ harness.checkPoint("PR23996");
+
+ DecimalFormat df = new DecimalFormat("S#.12345");
+ harness.check(df.format(Float.MAX_VALUE),
+ "S340282346638528860000000000000000000000.12345");
+
+ DecimalFormat df1 = new DecimalFormat("S#.00");
+ harness.check(df1.format(Float.MAX_VALUE),
+ "S340282346638528860000000000000000000000.00");
+
+ DecimalFormat df2 = new DecimalFormat("0.7547895");
+ harness.check(df2.format(Float.MAX_VALUE),
+ "340282346638528860000000000000000000000.7547895");
+
+ Locale.setDefault(orig);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/PR27311.java b/gnu/testlet/java/text/DecimalFormat/PR27311.java
new file mode 100644
index 00000000..85f79b56
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/PR27311.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/*
+ * This test is based on PR27311, where
+ * formatting 0.0E00 using the format 0.0#####E0
+ * produced 0.0E--9223372036854775808. This was down
+ * to incorrect use of the logarithm function in
+ * calculating the exponent. The log of 0 is negative
+ * infinity, which explains the bizarre output.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR27311
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.ENGLISH);
+ DecimalFormat nf = new DecimalFormat("0.0#####E00", dfs);
+ nf.setGroupingUsed(false);
+ String result = nf.format(0.0E00);
+ harness.check(result.equals("0.0E00"),result);
+ }
+}
+
diff --git a/gnu/testlet/java/text/DecimalFormat/applyLocalizedPattern.java b/gnu/testlet/java/text/DecimalFormat/applyLocalizedPattern.java
new file mode 100644
index 00000000..4d9f63dc
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/applyLocalizedPattern.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the applyLocalizedPattern() method in the
+ * {@link DecimalFormat} class.
+ */
+public class applyLocalizedPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ f1.applyLocalizedPattern(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try illegal pattern
+ pass = false;
+ try
+ {
+ f1.applyLocalizedPattern(";;");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/applyPattern.java b/gnu/testlet/java/text/DecimalFormat/applyPattern.java
new file mode 100644
index 00000000..4b1edaa5
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/applyPattern.java
@@ -0,0 +1,117 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+/**
+ * Some checks for the applyPattern() method in the {@link DecimalFormat} class.
+ */
+public class applyPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ DecimalFormat f1 = new DecimalFormat();
+
+ // negativePrefix
+ harness.checkPoint("negativePrefix");
+ f1.applyPattern("0.00");
+ harness.check(f1.getNegativePrefix(), "-");
+ f1.applyPattern("0.00;-0.00");
+ harness.check(f1.getNegativePrefix(), "-");
+
+ // minimumIntegerDigits
+ harness.checkPoint("minimumIntegerDigits");
+ f1.applyPattern("0.00");
+ harness.check(f1.getMinimumIntegerDigits(), 1);
+ f1.applyPattern("#0.00");
+ harness.check(f1.getMinimumIntegerDigits(), 1);
+ f1.applyPattern("00.00");
+ harness.check(f1.getMinimumIntegerDigits(), 2);
+
+ // minimumFractionDigits
+ harness.checkPoint("minimumFractionDigits");
+ f1.applyPattern("0.0");
+ harness.check(f1.getMinimumFractionDigits(), 1);
+ f1.applyPattern("0.0#");
+ harness.check(f1.getMinimumFractionDigits(), 1);
+ f1.applyPattern("0.00");
+ harness.check(f1.getMinimumFractionDigits(), 2);
+
+ // grouping
+ harness.checkPoint("grouping");
+ f1.applyPattern("0.00");
+ harness.check(f1.getGroupingSize(), 0);
+ f1.applyPattern("#0.00");
+ harness.check(f1.getGroupingSize(), 0);
+ f1.applyPattern(",#0.00");
+ harness.check(f1.getGroupingSize(), 2);
+ f1.applyPattern("#,##0.00");
+ harness.check(f1.getGroupingSize(), 3);
+ f1.applyPattern("#,#,##0.00");
+
+ harness.checkPoint("null pattern");
+ f1.applyPattern("");
+ harness.check(f1.format(123456789.123456789), "123,456,789.12345679");
+
+ harness.checkPoint("invalid pattern");
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ f1.applyPattern(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try illegal pattern
+ pass = false;
+ try
+ {
+ f1.applyPattern(";;");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ Locale.setDefault(orig);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/clone.java b/gnu/testlet/java/text/DecimalFormat/clone.java
new file mode 100644
index 00000000..c4630532
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/clone.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the clone() method in the {@link DecimalFormat} class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ DecimalFormat f2 = (DecimalFormat) f1.clone();
+ harness.check(f1 != f2);
+ harness.check(f1.equals(f2));
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/constructors.java b/gnu/testlet/java/text/DecimalFormat/constructors.java
new file mode 100644
index 00000000..dcbe3e17
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/constructors.java
@@ -0,0 +1,146 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the constructors in the DecimalFormat class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DecimalFormat();");
+
+ // set the default locale to something fixed
+ Locale original = Locale.getDefault();
+ Locale.setDefault(Locale.UK);
+
+ DecimalFormat f = new DecimalFormat();
+
+ // should use the default symbols...
+ harness.check(f.getPositivePrefix(), ""); // 1
+ harness.check(f.getNegativePrefix(), "-"); // 2
+ harness.check(f.getPositiveSuffix(), ""); // 3
+ harness.check(f.getNegativeSuffix(), ""); // 4
+ harness.check(f.getMultiplier(), 1); // 5
+ harness.check(f.getGroupingSize(), 3); // 6
+ harness.check(f.isDecimalSeparatorAlwaysShown(), false); // 7
+ DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+ harness.check(f.getDecimalFormatSymbols(), symbols); // 8
+
+ Locale.setDefault(original);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DecimalFormat(String);");
+ // set the default locale to something fixed
+ Locale original = Locale.getDefault();
+ Locale.setDefault(Locale.UK);
+
+ DecimalFormat f = new DecimalFormat("0.00");
+
+ // check for null format...
+ boolean pass = false;
+ try
+ {
+ f = new DecimalFormat(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check for bad format...
+ pass = false;
+ try
+ {
+ f = new DecimalFormat(";;");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ Locale.setDefault(original);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DecimalFormat(String, DecimalFormatSymbols);");
+
+ // since get/setDecimalFormatSymbols() methods make copies of the symbols,
+ // we can guess that the constructor does too
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+ dfs.setDecimalSeparator('x');
+ DecimalFormat f = new DecimalFormat("0.00", dfs);
+ harness.check(f.getDecimalFormatSymbols().getDecimalSeparator(), 'x');
+ dfs.setDecimalSeparator('y'); // this won't affect f
+ harness.check(f.getDecimalFormatSymbols().getDecimalSeparator(), 'x');
+
+ // check for null format...
+ boolean pass = false;
+ try
+ {
+ f = new DecimalFormat(null, new DecimalFormatSymbols());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check for null symbols...
+ pass = false;
+ try
+ {
+ f = new DecimalFormat("0.00", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/digits.java b/gnu/testlet/java/text/DecimalFormat/digits.java
new file mode 100644
index 00000000..39bfd249
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/digits.java
@@ -0,0 +1,73 @@
+// Test simple forms of DecimalFormat.format.
+
+// Copyright (c) 2003 Free Software Foundation, Inc.
+// Written by Mark Wielaard <mark@klomp.org>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.DecimalFormat;
+
+public class digits implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ DecimalFormat df = new DecimalFormat ();
+ df.setMaximumFractionDigits(1);
+ harness.check(df.getMaximumFractionDigits(), 1);
+ df.setMaximumFractionDigits(350);
+ harness.check(df.getMaximumFractionDigits(), 350);
+
+ df.setMinimumFractionDigits(1);
+ harness.check(df.getMinimumFractionDigits(), 1);
+ df.setMinimumFractionDigits(350);
+ harness.check(df.getMinimumFractionDigits(), 350);
+
+ df.setMinimumFractionDigits(16);
+ df.setMaximumFractionDigits(12);
+ harness.check(df.getMinimumFractionDigits(), 12);
+
+ df.setMaximumFractionDigits(12);
+ df.setMinimumFractionDigits(16);
+ harness.check(df.getMinimumFractionDigits(), 16);
+
+ df.setMaximumIntegerDigits(1);
+ harness.check(df.getMaximumIntegerDigits(), 1);
+ df.setMaximumIntegerDigits(310);
+ harness.check(df.getMaximumIntegerDigits(), 310);
+
+ df.setMinimumIntegerDigits(1);
+ harness.check(df.getMinimumIntegerDigits(), 1);
+ df.setMinimumIntegerDigits(310);
+ harness.check(df.getMinimumIntegerDigits(), 310);
+
+ df.setMinimumIntegerDigits(16);
+ df.setMaximumIntegerDigits(12);
+ harness.check(df.getMinimumIntegerDigits(), 12);
+
+ df.setMaximumIntegerDigits(12);
+ df.setMinimumIntegerDigits(16);
+ harness.check(df.getMinimumIntegerDigits(), 16);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/equals.java b/gnu/testlet/java/text/DecimalFormat/equals.java
new file mode 100644
index 00000000..0efeb446
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/equals.java
@@ -0,0 +1,127 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the equals() method in the DecimalFormat class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ DecimalFormat f2 = new DecimalFormat();
+ harness.check(f1.equals(f2)); // 1
+ harness.check(f2.equals(f1)); // 2
+
+ f1.applyPattern("#,##0");
+ f2.applyPattern("#,##0.00");
+ harness.check(!f1.equals(f2)); // 3
+ f2.applyPattern("#,##0");
+ harness.check(f1.equals(f2)); // 4
+
+ f1.setDecimalSeparatorAlwaysShown(!f1.isDecimalSeparatorAlwaysShown());
+ harness.check(!f1.equals(f2)); // 5
+ f2.setDecimalSeparatorAlwaysShown(f1.isDecimalSeparatorAlwaysShown());
+ harness.check(f1.equals(f2)); // 6
+
+ f1.setGroupingSize(5);
+ harness.check(!f1.equals(f2)); // 7
+ f2.setGroupingSize(5);
+ harness.check(f1.equals(f2)); // 8
+
+ f1.setGroupingUsed(!f1.isGroupingUsed());
+ harness.check(!f1.equals(f2)); // 9
+ f2.setGroupingUsed(f1.isGroupingUsed());
+ harness.check(f1.equals(f2)); // 10
+
+ f1.setMaximumFractionDigits(12);
+ harness.check(!f1.equals(f2)); // 11
+ f2.setMaximumFractionDigits(12);
+ harness.check(f1.equals(f2)); // 12
+
+ f1.setMaximumIntegerDigits(23);
+ harness.check(!f1.equals(f2)); // 13
+ f2.setMaximumIntegerDigits(23);
+ harness.check(f1.equals(f2)); // 14
+
+ f1.setMinimumFractionDigits(5);
+ harness.check(!f1.equals(f2)); // 15
+ f2.setMinimumFractionDigits(5);
+ harness.check(f1.equals(f2)); // 16
+
+ f1.setMinimumIntegerDigits(4);
+ harness.check(!f1.equals(f2)); // 17
+ f2.setMinimumIntegerDigits(4);
+ harness.check(f1.equals(f2)); // 18
+
+ f1.setMultiplier(17);
+ harness.check(!f1.equals(f2)); // 19
+ f2.setMultiplier(17);
+ harness.check(f1.equals(f2)); // 20
+
+ f1.setNegativePrefix("ABC");
+ harness.check(!f1.equals(f2)); // 21
+ f2.setNegativePrefix("ABC");
+ harness.check(f1.equals(f2)); // 22
+
+ f1.setPositivePrefix("XYZ");
+ harness.check(!f1.equals(f2)); // 23
+ f2.setPositivePrefix("XYZ");
+ harness.check(f1.equals(f2)); // 24
+
+ f1.setNegativeSuffix("FGH");
+ harness.check(!f1.equals(f2)); // 25
+ f2.setNegativeSuffix("FGH");
+ harness.check(f1.equals(f2)); // 26
+
+ f1.setPositiveSuffix("JKL");
+ harness.check(!f1.equals(f2)); // 27
+ f2.setPositiveSuffix("JKL");
+ harness.check(f1.equals(f2)); // 28
+
+ // check equivalent patterns
+ f1.applyPattern("0.00");
+ f2.applyPattern("0.00;-0.00");
+ harness.check(f1.equals(f2)); // 29
+
+
+ // check null
+ harness.check(!f1.equals(null)); // 30
+
+ // check arbitrary object
+ harness.check(!f1.equals("Not a DecimalFormat")); // 31
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/format.java b/gnu/testlet/java/text/DecimalFormat/format.java
new file mode 100644
index 00000000..da0eb18d
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/format.java
@@ -0,0 +1,400 @@
+// Test simple forms of DecimalFormat.format.
+
+// Copyright (c) 1999, 2003 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+public class format
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testRounding(harness);
+ testMiscellaneous(harness);
+ testBigInteger(harness);
+ testNaN(harness);
+ testInfinity(harness);
+ testMaximumDigits(harness);
+ testLocale(harness);
+ }
+
+ public void apply(TestHarness harness, DecimalFormat df, String pattern)
+ {
+ harness.checkPoint("pattern " + pattern);
+ boolean ok = true;
+ try
+ {
+ df.applyPattern(pattern);
+ }
+ catch (IllegalArgumentException x)
+ {
+ ok = false;
+ }
+ harness.check(ok);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault(loc);
+
+ // Some tests taken from JCL book.
+ DecimalFormat df = new DecimalFormat("0.##;-0.##");
+ harness.check(df.format(- 1234.56), "-1234.56");
+ harness.check(df.format(1234.56), "1234.56");
+
+ apply(harness, df, "0.#");
+ harness.check(df.format(- 1234.56), "-1234.6");
+ harness.check(df.format(1234.56), "1234.6");
+
+ apply(harness, df, "#,##0.##;-#");
+ harness.check(df.format(- 1234.56), "-1,234.56");
+ harness.check(df.format(1234.56), "1,234.56");
+
+ apply(harness, df, "#,##0.###");
+ harness.check(df.format(Double.valueOf(80).doubleValue()), "80");
+
+ apply(harness, df, "00,000.000;-00,000.000");
+ harness.check(df.format(- 1234.56), "-01,234.560");
+ harness.check(df.format(1234.56), "01,234.560");
+
+ apply(harness, df, "##,###,####.");
+ df.setDecimalSeparatorAlwaysShown(true);
+ harness.check(df.format(- 1234.56), "-1235.");
+ harness.check(df.format(1234.56), "1235.");
+ harness.check(df.format(-1234567.890), "-123,4568.");
+
+ apply(harness, df, "#,###,###");
+ harness.check(df.format(-1234567.890), "-1,234,568");
+
+ apply(harness, df, "0");
+ harness.check(df.format(- 1234.56), "-1235");
+ harness.check(df.format(1234.56), "1235");
+
+ harness.check(df.format(Long.MIN_VALUE), "-9223372036854775808");
+
+ apply(harness, df, "#");
+ harness.check(df.format(0), "0");
+ harness.check(df.format(0.0), "0");
+
+ apply(harness, df, "###0.#;(###0.#)");
+ harness.check(df.format(- 1234.56), "(1234.6)");
+ harness.check(df.format(1234.56), "1234.6");
+
+ apply(harness, df, "###0.#;###0.#-");
+ harness.check(df.format(- 1234.56), "1234.6-");
+ harness.check(df.format(1234.56), "1234.6");
+
+ apply(harness, df, "#,##0%;-#,##0%");
+ harness.check(df.format(- 1234.56), "-123,456%");
+ harness.check(df.format(1234.56), "123,456%");
+
+ apply(harness, df, "#.#");
+ harness.check(df.format(0.2), "0.2");
+
+ apply(harness, df, "'#'#.#");
+ harness.check(df.format(30), "#30");
+
+ apply(harness, df, "000000");
+ harness.check(df.format(-1234.567), "-001235");
+
+ apply(harness, df, "##");
+ harness.check(df.format(-1234.567), "-1235");
+
+ harness.check(df.format(0), "0");
+
+ apply(harness, df, "##00");
+ harness.check(df.format(0), "00");
+
+ apply(harness, df, ".00");
+ harness.check(df.format(-.567), "-.57");
+
+ apply(harness, df, "0.00");
+ harness.check(df.format(-.567), "-0.57");
+
+ apply(harness, df, ".######");
+ harness.check(df.format(-1234.567), "-1234.567");
+
+ apply(harness, df, "#.000000");
+ harness.check(df.format(-1234.567), "-1234.567000");
+
+ apply(harness, df, "'#'#");
+ harness.check(df.format(-1234.567), "-#1235");
+
+ apply(harness, df, "'abc'#");
+ harness.check(df.format(-1234.567), "-abc1235");
+
+ apply(harness, df, "'positive'#;'negative' -");
+ harness.check(df.format(-1234.567), "negative -1235");
+ harness.check(df.format(1234.567), "positive1235");
+
+ apply(harness, df, "#,##0%");
+ harness.check(df.format(10000000.1234d), "1,000,000,012%");
+
+ apply(harness, df, "\u00A4#,##0.00;(\u00A4#,##0.00)");
+ harness.check(df.format(10000), "$10,000.00");
+
+ apply(harness, df, "$#,##0.00;($#,##0.00)");
+ harness.check(df.format(10000), "$10,000.00");
+
+ // grouping size of zero might cause a failure - see bug parade 4088503
+ harness.checkPoint("regression tests for setGroupingSize");
+ df = new DecimalFormat();
+ df.setGroupingSize(0);
+ harness.check(df.format(100000), "100000");
+ harness.check(df.isGroupingUsed());
+ harness.check(df.getGroupingSize(), 0);
+
+ // FIXME: we don't actually know the right result here, because
+ // neither the JCL book nor the JDK 1.2 docs explain what should
+ // happen. The below represents how I think things ought to
+ // work. However, Sun has a different (and more confusing)
+ // idea. E.g., JDK1.1 prints "200000.0000E" in the first case.
+ // apply (harness, df, "0.0000E#");
+ // harness.check (df.format (200000), "2.0000E+5");
+ // apply (harness, df, "00.00E00");
+ // harness.check (df.format (200000), "20.00E+04");
+ }
+
+ /**
+ * Checks that rounding behaviour follows "half-even" rounding. For example,
+ * see bug parade 4763975.
+ *
+ * @param harness the harness.
+ */
+ private void testRounding(TestHarness harness)
+ {
+ harness.checkPoint("DecimalFormat rounding");
+ Locale original = Locale.getDefault();
+ Locale.setDefault(Locale.UK);
+ DecimalFormat f = new DecimalFormat("0.00");
+ harness.check(f.format(1.225), "1.22");
+ harness.check(f.format(1.235), "1.24");
+ Locale.setDefault(original);
+ }
+
+ private void testMiscellaneous(TestHarness harness)
+ {
+ harness.checkPoint("DecimalFormat: misc");
+ Locale original = Locale.getDefault();
+ Locale.setDefault(Locale.UK);
+
+ DecimalFormat f = new DecimalFormat("0");
+
+ // try formatting a null object
+ boolean pass = false;
+ try
+ {
+ f.format(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try formatting an object that is not a Number
+ pass = false;
+ try
+ {
+ f.format("XYZ");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // some implementations can't handle custom subclasses of Number
+ pass = true;
+ try
+ {
+ f.format(new Number()
+ {
+ public float floatValue()
+ {
+ return 0.0f;
+ }
+
+ public double doubleValue()
+ {
+ return 0.0f;
+ }
+
+ public long longValue()
+ {
+ return 0l;
+ }
+
+ public int intValue()
+ {
+ return 0;
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ Locale.setDefault(original);
+ }
+
+ /**
+ * See PR 28462.
+ */
+ private void testBigInteger(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+ harness.checkPoint("BigInteger format");
+ String expect = "123,456,789,012,345,678,901,234,567,890";
+ BigInteger bi = new BigInteger("123456789012345678901234567890", 10);
+
+ DecimalFormat df = new DecimalFormat();
+ harness.check(df.format(bi), expect);
+ Locale.setDefault(orig);
+ }
+
+ /**
+ * @param harness
+ */
+ private void testInfinity(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ harness.checkPoint("testInfinity");
+ String expectPositive = "\u221E";
+ String expectNegative = "-\u221E";
+
+ double positiveInf = Double.longBitsToDouble(0x7ff0000000000000L);
+ double negativeInf = Double.longBitsToDouble(0xfff0000000000000L);
+
+ DecimalFormat df = new DecimalFormat();
+ harness.check(df.format(positiveInf), expectPositive, "positive inf.");
+ harness.check(df.format(negativeInf), expectNegative, "negative inf.");
+
+ Locale.setDefault(orig);
+ }
+
+ /**
+ * @param harness
+ */
+ private void testNaN(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ harness.checkPoint("testNaN");
+ String expect = "\uFFFD";
+
+ double nan = Double.longBitsToDouble(0x7ff8000000000000L);
+
+ DecimalFormat df = new DecimalFormat();
+
+ // NaN does not have prefixes and suffixes
+ harness.check(df.format(nan), expect);
+ harness.check(df.format(-nan), expect, "NaN with a negative sign as pefix");
+
+ Locale.setDefault(orig);
+ }
+
+ private void testMaximumDigits(TestHarness harness)
+ {
+ Locale orig = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ harness.checkPoint("testMaxAndMinDigits");
+
+ double number = 123456789.987654321;
+
+ DecimalFormat df = new DecimalFormat();
+
+ df.setGroupingUsed(false);
+ df.setGroupingSize(3);
+
+ df.setMaximumIntegerDigits(2);
+ df.setMaximumFractionDigits(4);
+
+ // NaN does not have prefixes and suffixes
+ harness.check(df.format(number), "89.9877");
+
+ df.setMaximumIntegerDigits(5);
+ df.setMaximumFractionDigits(0);
+
+ harness.check(df.format(number), "56790");
+
+ df.setMaximumIntegerDigits(0);
+ df.setMaximumFractionDigits(5);
+
+ harness.check(df.format(number), ".98765");
+
+ df.setMaximumIntegerDigits(-1);
+ df.setMaximumFractionDigits(-1);
+
+ harness.check(df.format(number), "0");
+
+ df.setMaximumIntegerDigits(390);
+ df.setMaximumFractionDigits(340);
+
+ harness.check(df.format(number), "123456789.98765433");
+
+ Locale.setDefault(orig);
+ }
+
+ private void testLocale(TestHarness harness)
+ {
+ // just two tests, other are in gnu.testlet.locales.LocaleTest
+
+ harness.checkPoint("locale: GERMANY");
+
+ // by default, calls DecimalFormat
+ java.text.NumberFormat nf
+ = java.text.NumberFormat.getCurrencyInstance(Locale.GERMANY);
+
+ harness.check(nf.format(5000.25), "5.000,25 €");
+
+ harness.checkPoint("locale: ITALY");
+
+ nf = java.text.NumberFormat.getCurrencyInstance(Locale.ITALY);
+ harness.check(nf.format(5000.25), "€ 5.000,25");
+
+ java.text.DecimalFormatSymbols symbols
+ = ((DecimalFormat)nf).getDecimalFormatSymbols();
+
+ harness.check(',', symbols.getDecimalSeparator());
+ harness.check(',', symbols.getMonetaryDecimalSeparator());
+ harness.check('.', symbols.getGroupingSeparator());
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/formatExp.java b/gnu/testlet/java/text/DecimalFormat/formatExp.java
new file mode 100644
index 00000000..4c313658
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/formatExp.java
@@ -0,0 +1,100 @@
+// Test exponential forms of DecimalFormat.format.
+
+// Copyright (c) 1999, 2003 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// Copyright (c) 2003 Free Software Foundation, Inc.
+// Written by Mark Wielaard <mark@klomp.org>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+
+// Some 1.1 versions allowed 'E', but only 1.2 defines it officially.
+public class formatExp implements Testlet
+{
+ public void apply (TestHarness harness, DecimalFormat df, String pattern)
+ {
+ harness.checkPoint("pattern " + pattern);
+ boolean ok = true;
+ try
+ {
+ df.applyPattern(pattern);
+ }
+ catch (IllegalArgumentException x)
+ {
+ ok = false;
+ }
+ harness.check (ok);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+ DecimalFormat df = new DecimalFormat();
+
+ apply (harness, df, "0.0000E0");
+ harness.check (df.format (200000), "2.0000E5");
+
+ apply (harness, df, "00.00E00");
+ harness.check (df.format (200000), "20.00E04");
+
+ apply (harness, df, "##0.####E0");
+ harness.check (df.format (12345), "12.345E3");
+
+ apply (harness, df, "##.###E0");
+ harness.check (df.format (12345), "1.2345E4");
+
+ apply (harness, df, "##.###E0");
+ harness.check (df.format (12346), "1.2346E4");
+
+ apply (harness, df, "00.###E0");
+ harness.check (df.format (12345), "12.345E3");
+ harness.check (df.format (1234), "12.34E2");
+ harness.check (df.format (0.00123), "12.3E-4");
+
+ apply(harness, df, "0E0");
+ harness.check(df.format(-1234.567), "-1E3");
+
+ apply(harness, df, "00E00");
+ harness.check(df.format(-1234.567), "-12E02");
+
+ apply(harness, df, "000E00");
+ harness.check(df.format(-1234.567), "-123E01");
+
+ apply(harness, df, "0000000000E0");
+ harness.check(df.format(-1234.567), "-1234567000E-6");
+
+ apply(harness, df, "0.0E0");
+ harness.check(df.format(-1234.567), "-1.2E3");
+
+ apply(harness, df, "00.00E0");
+ harness.check(df.format(-1234.567), "-12.35E2");
+ harness.check(df.format(-.1234567), "-12.35E-2");
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/formatToCharacterIterator.java b/gnu/testlet/java/text/DecimalFormat/formatToCharacterIterator.java
new file mode 100644
index 00000000..4801bedc
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/formatToCharacterIterator.java
@@ -0,0 +1,105 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.AttributedCharacterIterator;
+import java.text.DecimalFormat;
+import java.text.NumberFormat.Field;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Some checks for the formatToCharacterIterator() method in the
+ * {@link DecimalFormat} class.
+ */
+public class formatToCharacterIterator
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ f1.formatToCharacterIterator(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check non-numeric argument
+ pass = false;
+ try
+ {
+ f1.formatToCharacterIterator("Not a number");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Check for attributes after a valid parse");
+
+ DecimalFormat f2 = new DecimalFormat("0.##;-0.##");
+
+ // result is "-1234.56"
+ AttributedCharacterIterator chIter =
+ f2.formatToCharacterIterator(Double.valueOf(-1234.56));
+
+ Set _keys = chIter.getAllAttributeKeys();
+
+ // It seems that we don't get always the same order in the results
+ // but the values need to be the ones written later.
+ // This test should be completed checking even the start/end of each field
+ boolean pass1 = false;
+ boolean pass2 = false;
+ boolean pass3 = false;
+ boolean pass4 = false;
+
+ for (Iterator i = _keys.iterator(); i.hasNext();)
+ {
+ //harness.debug("field: " + i.next());
+ Field field = (Field) i.next();
+ if (field.equals(Field.INTEGER)) pass1 = true;
+ if (field.equals(Field.FRACTION)) pass2 = true;
+ if (field.equals(Field.DECIMAL_SEPARATOR)) pass3 = true;
+ if (field.equals(Field.SIGN)) pass4 = true;
+ }
+
+ harness.check(pass1 && pass2 && pass3 && pass4);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getCurrency.java b/gnu/testlet/java/text/DecimalFormat/getCurrency.java
new file mode 100644
index 00000000..f3fef549
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getCurrency.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.util.Currency;
+
+/**
+ * Some checks for the getCurrency() method in the {@link DecimalFormat} class.
+*/
+public class getCurrency implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setCurrency(Currency.getInstance("GBP"));
+ harness.check(f1.getCurrency(), Currency.getInstance("GBP"));
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getDecimalFormatSymbols.java b/gnu/testlet/java/text/DecimalFormat/getDecimalFormatSymbols.java
new file mode 100644
index 00000000..6647200f
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getDecimalFormatSymbols.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+/**
+ * Some checks for the getDecimalFormatSymbols() method in the
+ * {@link DecimalFormat} class.
+ */
+public class getDecimalFormatSymbols implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+
+ // returned value is a clone, not the original - see bug parade 4685440
+ DecimalFormatSymbols symbols1 = f1.getDecimalFormatSymbols();
+ DecimalFormatSymbols symbols2 = f1.getDecimalFormatSymbols();
+ harness.check(symbols1 != symbols2);
+ harness.check(symbols1.equals(symbols2));
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getGroupingSize.java b/gnu/testlet/java/text/DecimalFormat/getGroupingSize.java
new file mode 100644
index 00000000..acc219aa
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getGroupingSize.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the getGroupingSize() method in the {@link DecimalFormat}
+ * class.
+ */
+public class getGroupingSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setGroupingSize(5);
+ harness.check(f1.getGroupingSize(), 5);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getMultiplier.java b/gnu/testlet/java/text/DecimalFormat/getMultiplier.java
new file mode 100644
index 00000000..6e7e2da2
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getMultiplier.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the getMultiplier() method in the {@link DecimalFormat}
+ * class.
+ */
+public class getMultiplier implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setMultiplier(5);
+ harness.check(f1.getMultiplier(), 5);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getNegativePrefix.java b/gnu/testlet/java/text/DecimalFormat/getNegativePrefix.java
new file mode 100644
index 00000000..8cc3109d
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getNegativePrefix.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the getNegativePrefix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class getNegativePrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setNegativePrefix("XYZ");
+ harness.check(f1.getNegativePrefix(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getNegativeSuffix.java b/gnu/testlet/java/text/DecimalFormat/getNegativeSuffix.java
new file mode 100644
index 00000000..2dea0f1a
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getNegativeSuffix.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+ /**
+ * Some checks for the getNegativeSuffix() method in the {@link DecimalFormat}
+ * class.
+ */
+ public class getNegativeSuffix implements Testlet
+ {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setNegativeSuffix("XYZ");
+ harness.check(f1.getNegativeSuffix(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java b/gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java
new file mode 100644
index 00000000..80ce4fe2
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getPositivePrefix.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the getPositivePrefix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class getPositivePrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setPositivePrefix("XYZ");
+ harness.check(f1.getPositivePrefix(), "XYZ");
+
+ // this means: "no one understand a thing here"
+ String longPrefix = "'#'1'.' ''nessuno ci capisce niente qui";
+ String longPrefixCheck = "#1. 'nessuno ci capisce niente qui";
+
+ DecimalFormat f2 = new DecimalFormat(longPrefix + "#0.00;(#0.00)");
+ harness.check(f2.getPositivePrefix(), longPrefixCheck);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/getPositiveSuffix.java b/gnu/testlet/java/text/DecimalFormat/getPositiveSuffix.java
new file mode 100644
index 00000000..f86082de
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/getPositiveSuffix.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the getPositiveSuffix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class getPositiveSuffix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setPositiveSuffix("XYZ");
+ harness.check(f1.getPositiveSuffix(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/hashCode.java b/gnu/testlet/java/text/DecimalFormat/hashCode.java
new file mode 100644
index 00000000..a8446a94
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/hashCode.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the hashCode() method in the DecimalFormat class.
+ */
+public class hashCode implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat("0.00");
+ DecimalFormat f2 = new DecimalFormat("0.00");
+ harness.check(f1.equals(f2)); // check 1
+ harness.check(f1.hashCode(), f2.hashCode()); // check 2
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/isDecimalSeparatorAlwaysShown.java b/gnu/testlet/java/text/DecimalFormat/isDecimalSeparatorAlwaysShown.java
new file mode 100644
index 00000000..79285c2d
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/isDecimalSeparatorAlwaysShown.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the isDecimalSeparatorAlwaysShown() method in the
+ * {@link DecimalFormat} class.
+ */
+public class isDecimalSeparatorAlwaysShown implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setDecimalSeparatorAlwaysShown(true);
+ harness.check(f1.isDecimalSeparatorAlwaysShown());
+ f1.setDecimalSeparatorAlwaysShown(false);
+ harness.check(!f1.isDecimalSeparatorAlwaysShown());
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/parse.java b/gnu/testlet/java/text/DecimalFormat/parse.java
new file mode 100644
index 00000000..47824dde
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/parse.java
@@ -0,0 +1,197 @@
+// Test simple forms of DecimalFormat.parse.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.DecimalFormat;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+public class parse implements Testlet
+{
+ public void apply (TestHarness harness, DecimalFormat df, String pattern)
+ {
+ harness.checkPoint("pattern " + pattern);
+ boolean ok = true;
+ try
+ {
+ df.applyPattern(pattern);
+ }
+ catch (IllegalArgumentException x)
+ {
+ ok = false;
+ }
+ harness.check (ok);
+ }
+
+ public Number parseIt (DecimalFormat df, String string, ParsePosition pos)
+ {
+ pos.setIndex (0);
+ return df.parse (string, pos);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ Number num;
+ ParsePosition pp = new ParsePosition (0);
+
+ // Some tests taken from JCL book.
+ DecimalFormat df = new DecimalFormat ("0.##;-0.##");
+ num = parseIt (df, "-1234.56", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), -1234.56);
+
+ num = parseIt (df, "-0", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), -0.0);
+
+ num = parseIt (df, "-0.0", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), -0.0);
+
+ apply (harness, df, "0.#");
+ num = parseIt (df, "1234.6", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 1234.6);
+
+ apply (harness, df, "0");
+ num = parseIt (df, "-1235", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), -1235);
+
+ num = parseIt (df, Long.toString (Long.MIN_VALUE), pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), Long.MIN_VALUE);
+
+ apply (harness, df, "'#'#.#");
+ num = parseIt (df, "#30", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 30);
+
+ num = parseIt (df, "xx30", pp);
+ harness.check (num, null);
+
+ apply (harness, df, "0.0000E0");
+ num = parseIt (df, "2.000E5", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 200000);
+
+ num = parseIt (df, "2.0000E-5", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 2.0E-5);
+
+ // this one is tricky... -E5 is considered part of the suffix
+ num = parseIt (df, "2.000-E5", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.doubleValue(), 2);
+
+ apply (harness, df, "0.000");
+ num = parseIt (df, "2.000", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 2);
+
+ apply (harness, df, "###0.#;(###0.#)");
+ num = parseIt (df, "201.2", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 201.2);
+ num = parseIt (df, "(201.2)", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), -201.2);
+
+ apply (harness, df, "0.#;0.#-");
+ num = parseIt (df, "303", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 303);
+
+ num = parseIt (df, "303-", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), -303);
+
+ num = parseIt (df, "1.", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 1);
+
+ num = parseIt (df, "1.0", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue (), 1);
+
+ num = parseIt (df, ".01", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.longValue (), 0);
+
+ num = parseIt (df, "9223372036854775808-", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), Long.MIN_VALUE);
+
+ apply (harness, df, "0.###;0.###-");
+ num = parseIt (df, ".01", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 0.01);
+
+ num = parseIt (df, ".05", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 0.05);
+
+ num = parseIt (df, ".5", pp);
+ harness.check (num instanceof Double);
+ harness.check (num.doubleValue(), 0.5);
+
+ apply (harness, df, "#,##0.00");
+ num = parseIt (df, "3,110.00", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), 3110);
+
+ apply (harness, df, "#,##0.00");
+ num = parseIt (df, "31,10.00", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), 3110);
+
+ apply (harness, df, "#,##0.00");
+ num = parseIt (df, "3110", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), 3110);
+
+ apply (harness, df, "#,##0X");
+ num = parseIt (df, "3,110X", pp);
+ harness.check (num instanceof Long);
+ harness.check (num.longValue(), 3110);
+
+ apply (harness, df, "#,##0X");
+ num = parseIt (df, "3,110", pp);
+ harness.check (num == null);
+ harness.check (pp.getErrorIndex() == 5);
+
+ apply (harness, df, "#,##0X");
+ num = parseIt (df, "3,110Y", pp);
+ harness.check (num == null);
+ harness.check (pp.getErrorIndex(), 5);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/position.java b/gnu/testlet/java/text/DecimalFormat/position.java
new file mode 100644
index 00000000..13896966
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/position.java
@@ -0,0 +1,63 @@
+// Test FieldPosition parameter to DecimalFormat.format.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.DecimalFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.DecimalFormat;
+import java.util.Locale;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+
+public class position implements Testlet
+{
+ public String format (DecimalFormat df, double number, FieldPosition pos,
+ StringBuffer buf)
+ {
+ buf.setLength (0);
+ return df.format (number, buf, pos).toString();
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ StringBuffer buf = new StringBuffer ();
+ DecimalFormat df = new DecimalFormat ("0.##");
+ FieldPosition intPos = new FieldPosition (NumberFormat.INTEGER_FIELD);
+ FieldPosition fracPos = new FieldPosition (NumberFormat.FRACTION_FIELD);
+
+ harness.check (format (df, -1234.56, intPos, buf), "-1234.56");
+ harness.check (intPos.getBeginIndex (), 1);
+ harness.check (intPos.getEndIndex (), 5);
+
+ harness.check (format (df, -1234.56, fracPos, buf), "-1234.56");
+ harness.check (fracPos.getBeginIndex (), 6);
+ harness.check (fracPos.getEndIndex (), 8);
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setCurrency.java b/gnu/testlet/java/text/DecimalFormat/setCurrency.java
new file mode 100644
index 00000000..9d806d0b
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setCurrency.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Currency;
+
+/**
+ * Some checks for the setCurrency() method in the {@link DecimalFormat} class.
+ */
+public class setCurrency implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setCurrency(Currency.getInstance("NZD"));
+ harness.check(f1.getCurrency(), Currency.getInstance("NZD"));
+
+ DecimalFormatSymbols dfs = f1.getDecimalFormatSymbols();
+ harness.check(dfs.getCurrency(), Currency.getInstance("NZD"));
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ f1.setCurrency(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setDecimalFormatSymbols.java b/gnu/testlet/java/text/DecimalFormat/setDecimalFormatSymbols.java
new file mode 100644
index 00000000..af8fad79
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setDecimalFormatSymbols.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+/**
+ * Some checks for the setDecimalFormatSymbols() method in the
+ * {@link DecimalFormat} class.
+ */
+public class setDecimalFormatSymbols implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+
+ // incoming symbols should be copied - see bug parade 4685440
+ // check by amending source after setting
+ DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+ symbols.setDecimalSeparator('x');
+ f1.setDecimalFormatSymbols(symbols);
+ harness.check(f1.getDecimalFormatSymbols().getDecimalSeparator(), 'x');
+ symbols.setDecimalSeparator('y');
+ harness.check(f1.getDecimalFormatSymbols().getDecimalSeparator(), 'x');
+
+ // try null argument.
+ boolean pass = false;
+ try
+ {
+ f1.setDecimalFormatSymbols(null);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // do nothing.
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setDecimalSeparatorAlwaysShown.java b/gnu/testlet/java/text/DecimalFormat/setDecimalSeparatorAlwaysShown.java
new file mode 100644
index 00000000..81be06ff
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setDecimalSeparatorAlwaysShown.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setDecimalSeparatorAlwaysShown() method in the
+ * {@link DecimalFormat} class.
+ */
+public class setDecimalSeparatorAlwaysShown implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setDecimalSeparatorAlwaysShown(true);
+ harness.check(f1.isDecimalSeparatorAlwaysShown());
+ f1.setDecimalSeparatorAlwaysShown(false);
+ harness.check(!f1.isDecimalSeparatorAlwaysShown());
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setGroupingSize.java b/gnu/testlet/java/text/DecimalFormat/setGroupingSize.java
new file mode 100644
index 00000000..3ce30fd1
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setGroupingSize.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setGroupingSize() method in the {@link DecimalFormat}
+ * class.
+ */
+public class setGroupingSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setGroupingSize(5);
+ harness.check(f1.getGroupingSize(), 5);
+ f1.setGroupingSize(0);
+ harness.check(f1.getGroupingSize(), 0);
+ f1.setGroupingSize(-1);
+ harness.check(f1.getGroupingSize(), -1);
+
+ // value is stored as a byte - see 1.5.0 API
+ f1.setGroupingSize(300);
+ harness.check(f1.getGroupingSize(), 44);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setMultiplier.java b/gnu/testlet/java/text/DecimalFormat/setMultiplier.java
new file mode 100644
index 00000000..a71a5a0e
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setMultiplier.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+ /**
+ * Some checks for the setMultiplier() method in the {@link DecimalFormat}
+ * class.
+ */
+ public class setMultiplier implements Testlet
+ {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setMultiplier(5);
+ harness.check(f1.getMultiplier(), 5);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setNegativePrefix.java b/gnu/testlet/java/text/DecimalFormat/setNegativePrefix.java
new file mode 100644
index 00000000..2de6f777
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setNegativePrefix.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setNegativePrefix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class setNegativePrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setNegativePrefix("ABC");
+ harness.check(f1.getNegativePrefix(), "ABC");
+ f1.setNegativePrefix(null);
+ harness.check(f1.getNegativePrefix(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setNegativeSuffix.java b/gnu/testlet/java/text/DecimalFormat/setNegativeSuffix.java
new file mode 100644
index 00000000..8ded83fe
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setNegativeSuffix.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setNegativeSuffix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class setNegativeSuffix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setNegativeSuffix("ABC");
+ harness.check(f1.getNegativeSuffix(), "ABC");
+ f1.setNegativeSuffix(null);
+ harness.check(f1.getNegativeSuffix(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setPositivePrefix.java b/gnu/testlet/java/text/DecimalFormat/setPositivePrefix.java
new file mode 100644
index 00000000..b09919d9
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setPositivePrefix.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setPositivePrefix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class setPositivePrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setPositivePrefix("ABC");
+ harness.check(f1.getPositivePrefix(), "ABC");
+ f1.setPositivePrefix(null);
+ harness.check(f1.getPositivePrefix(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/setPositiveSuffix.java b/gnu/testlet/java/text/DecimalFormat/setPositiveSuffix.java
new file mode 100644
index 00000000..90eaba56
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/setPositiveSuffix.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+
+/**
+ * Some checks for the setPositiveSuffix() method in the {@link DecimalFormat}
+ * class.
+ */
+public class setPositiveSuffix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat();
+ f1.setPositiveSuffix("ABC");
+ harness.check(f1.getPositiveSuffix(), "ABC");
+ f1.setPositiveSuffix(null);
+ harness.check(f1.getPositiveSuffix(), null);
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/toLocalizedPattern.java b/gnu/testlet/java/text/DecimalFormat/toLocalizedPattern.java
new file mode 100644
index 00000000..36ca673a
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/toLocalizedPattern.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the toLocalizedPattern() method in the
+ * {@link DecimalFormat} class.
+ */
+public class toLocalizedPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DecimalFormat f = new DecimalFormat(
+ "\u00A4#,##0.00", new DecimalFormatSymbols(Locale.UK)
+ );
+ harness.check(f.toLocalizedPattern(), "\u00A4#,##0.00");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/toPattern.java b/gnu/testlet/java/text/DecimalFormat/toPattern.java
new file mode 100644
index 00000000..eda3afbc
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/toPattern.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the toPattern() method in the {@link DecimalFormat} class.
+ */
+public class toPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // we have two test methods now, following the merge of
+ // topattern.java into this file
+ test1(harness);
+ test2(harness);
+ }
+
+ /**
+ * This test was formerly in the file topattern.java.
+ *
+ * @param harness the test harness.
+ */
+ public void test1(TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ // There aren't really many tests we can do, since it doesn't
+ // seem like any canonical output format is documented.
+
+ DecimalFormat df = new DecimalFormat ("0.##");
+ harness.check (df.toPattern (), "#0.##");
+ harness.check (df.toLocalizedPattern (), "#0.##");
+
+ DecimalFormatSymbols dfs = df.getDecimalFormatSymbols ();
+ dfs.setDecimalSeparator (',');
+ dfs.setZeroDigit ('1');
+ dfs.setDigit ('X');
+ dfs.setGroupingSeparator ('!');
+ df.setDecimalFormatSymbols(dfs); // dfs is only a copy of the internal
+ // symbols so pass symbols back to df
+ harness.check (df.toLocalizedPattern (), "X1,XX");
+
+ df.applyPattern ("Fr #,##0.##");
+ String x1 = df.toPattern ();
+ String x2 = df.toLocalizedPattern ();
+ harness.check (x1.length (), x2.length ());
+ boolean ok = x1.length () == x2.length ();
+ for (int i = 0; i < x1.length (); ++i)
+ {
+ char c = x1.charAt(i);
+ if (c == '0')
+ c = '1';
+ else if (c == '#')
+ c = 'X';
+ else if (c == '.')
+ c = ',';
+ else if (c == ',')
+ c = '!';
+ if (c != x2.charAt (i))
+ {
+ ok = false;
+ harness.debug ("failure at char " + i);
+ harness.debug ("x1 = " + x1 + "\nx2 = " + x2);
+ break;
+ }
+ }
+ harness.check (ok);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat("#0.00;(#0.00)");
+ harness.check(f1.toPattern(), "#0.00;(#0.00)");
+ }
+
+}
diff --git a/gnu/testlet/java/text/DecimalFormat/toPattern14.java b/gnu/testlet/java/text/DecimalFormat/toPattern14.java
new file mode 100644
index 00000000..1d2b5751
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormat/toPattern14.java
@@ -0,0 +1,141 @@
+//Tags: JDK1.4
+
+//Copyright (c) 1999 Cygnus Solutions
+//Written by Tom Tromey <tromey@cygnus.com>
+//Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.text.DecimalFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+/**
+ * Some checks for the toPattern() method in the {@link DecimalFormat} class.
+ */
+public class toPattern14
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ /**
+ * This test was formerly in the file topattern.java.
+ *
+ * @param harness the test harness.
+ */
+ public void test1(TestHarness harness)
+ {
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault(loc);
+
+ // There aren't really many tests we can do, since it doesn't
+ // seem like any canonical output format is documented.
+
+ DecimalFormat df = new DecimalFormat("0.##");
+ harness.check(df.toPattern(), "#0.##");
+ harness.check(df.toLocalizedPattern(), "#0.##");
+
+ DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
+ dfs.setDecimalSeparator(',');
+ dfs.setZeroDigit('1');
+ dfs.setDigit('X');
+ dfs.setGroupingSeparator('!');
+ df.setDecimalFormatSymbols(dfs);
+
+ // dfs is only a copy of the internal
+ // symbols so pass symbols back to df
+ harness.check(df.toLocalizedPattern(), "X1,XX");
+
+ df.applyPattern("Fr #,##0.##");
+
+ String x1 = df.toPattern();
+ String x2 = df.toLocalizedPattern();
+ harness.check(x1.length(), x2.length());
+
+ boolean ok = x1.length() == x2.length();
+ for (int i = 0; i < x1.length(); ++i)
+ {
+ char c = x1.charAt(i);
+ if (c == '0')
+ c = '1';
+ else if (c == '#')
+ c = 'X';
+ else if (c == '.')
+ c = ',';
+ else if (c == ',')
+ c = '!';
+
+ if (c != x2.charAt(i))
+ {
+ ok = false;
+ harness.debug("failure at char " + i);
+ harness.debug("x1 = " + x1 + "\nx2 = " + x2);
+ break;
+ }
+ }
+ harness.check(ok);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat("#0.00;(#0.00)");
+ harness.check(f1.toPattern(), "#0.00;(#0.00)");
+
+ DecimalFormat f2 =
+ new DecimalFormat("'#'1'.' ''nessuno ci capisce niente qui #0.00;(#0.00)");
+ harness.check(f2.toPattern(),
+ "'#1. '''nessuno ci capisce niente qui #0.00;(#0.00)");
+ }
+
+ public void test3(TestHarness harness)
+ {
+ DecimalFormat f1 = new DecimalFormat("0.00");
+ harness.check(f1.toPattern(), "#0.00");
+
+ f1.setMinimumIntegerDigits(0);
+ harness.check(f1.toPattern(), "#.00");
+
+ f1.setMaximumIntegerDigits(0);
+ harness.check(f1.toPattern(), "#.00");
+
+ DecimalFormat f2 = new DecimalFormat("#0.#E0");
+ harness.check(f2.toPattern(), "#0.#E0");
+
+ DecimalFormat f3 = new DecimalFormat("0.#E0");
+ harness.check(f3.toPattern(), "0.#E0");
+ }
+}
+
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Entries b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Entries
new file mode 100644
index 00000000..0797506f
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Entries
@@ -0,0 +1,7 @@
+/DumpDefault11.java/1.1/Thu Apr 8 19:15:13 1999//
+/DumpDefault12.java/1.1/Thu Apr 8 19:15:13 1999//
+/GetSet11.java/1.1/Thu Apr 8 19:15:13 1999//
+/GetSet12.java/1.1/Thu Apr 8 19:15:13 1999//
+/getCurrency.java/1.1/Fri Dec 31 09:40:18 2004//
+/serial.java/1.1/Sat Nov 22 07:17:02 2003//
+D
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Repository b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Repository
new file mode 100644
index 00000000..6507ad83
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/DecimalFormatSymbols
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Root b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault11.java b/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault11.java
new file mode 100644
index 00000000..0189e2d3
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault11.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+/* DumpDefault11.java -- Dumps the default symbols for the US local to debug
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class DumpDefault11 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+
+ harness.debug("decimalSeparator=" + dfs.getDecimalSeparator());
+ harness.debug("digit=" + dfs.getDigit());
+ harness.debug("groupingSeparator=" + dfs.getGroupingSeparator());
+ harness.debug("infinity=" + dfs.getInfinity());
+ harness.debug("minusSign=" + dfs.getMinusSign());
+ harness.debug("NaN=" + dfs.getNaN());
+ harness.debug("patternSeparator=" + dfs.getPatternSeparator());
+ harness.debug("percent=" + dfs.getPercent());
+ harness.debug("perMill=" + dfs.getPerMill());
+ harness.debug("zeroDigit=" + dfs.getZeroDigit());
+}
+
+} // class DumpDefault11
+
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault12.java b/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault12.java
new file mode 100644
index 00000000..49106531
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/DumpDefault12.java
@@ -0,0 +1,44 @@
+/*************************************************************************
+/* DumpDefault.java -- Dumps the default symbols for the US local to debug
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class DumpDefault12 implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+
+ harness.debug("currencySymbol=" + dfs.getCurrencySymbol());
+ harness.debug("intlCurrencySymbol=" + dfs.getInternationalCurrencySymbol());
+ harness.debug("monetarySeparator=" + dfs.getMonetaryDecimalSeparator());
+}
+
+} // class DumpDefault12
+
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/GetSet11.java b/gnu/testlet/java/text/DecimalFormatSymbols/GetSet11.java
new file mode 100644
index 00000000..4b31971e
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/GetSet11.java
@@ -0,0 +1,84 @@
+/*************************************************************************
+/* GetSet.java -- get/set method tests for java.text.DecimalFormatSymbols
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class GetSet11 implements Testlet
+{
+
+private char decimalSeparator = ',';
+private char digit = '9';
+private char groupingSeparator = '.';
+private char patternSeparator = '-';
+private String infinity = "infinity";
+private String NaN = "NaN";
+private char minusSign = '+';
+private char percent = '#';
+private char perMill = '!';
+private char zeroDigit = 'O';
+
+public void
+test(TestHarness harness)
+{
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+
+ dfs.setDecimalSeparator(decimalSeparator);
+ harness.check(dfs.getDecimalSeparator(), decimalSeparator,
+ "decimalSeparator");
+
+ dfs.setDigit(digit);
+ harness.check(dfs.getDigit(), digit, "digit");
+
+ dfs.setGroupingSeparator(groupingSeparator);
+ harness.check(dfs.getGroupingSeparator(), groupingSeparator,
+ "groupingSeparator");
+
+ dfs.setInfinity(infinity);
+ harness.check(dfs.getInfinity(), infinity, "infinity");
+
+ dfs.setMinusSign(minusSign);
+ harness.check(dfs.getMinusSign(), minusSign, "minusSign");
+
+ dfs.setNaN(NaN);
+ harness.check(dfs.getNaN(), NaN, "NaN");
+
+ dfs.setPatternSeparator(patternSeparator);
+ harness.check(dfs.getPatternSeparator(), patternSeparator,
+ "patternSeparator");
+
+ dfs.setPercent(percent);
+ harness.check(dfs.getPercent(), percent, "percent");
+
+ dfs.setPerMill(perMill);
+ harness.check(dfs.getPerMill(), perMill, "perMill");
+
+ dfs.setZeroDigit(zeroDigit);
+ harness.check(dfs.getZeroDigit(), zeroDigit, "zeroDigit");
+}
+
+} // class GetSet11
+
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/GetSet12.java b/gnu/testlet/java/text/DecimalFormatSymbols/GetSet12.java
new file mode 100644
index 00000000..e670f5bd
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/GetSet12.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+/* GetSet12.java -- Check JDK1.2 get/set methods in DecimalFormatSymbols
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class GetSet12 implements Testlet
+{
+
+private String currencySymbol = "@";
+private String intlCurrencySymbol = "#";
+private char monetarySeparator = ',';
+
+public void
+test(TestHarness harness)
+{
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+
+ dfs.setCurrencySymbol(currencySymbol);
+ harness.check(dfs.getCurrencySymbol(), currencySymbol, "currencySymbol");
+
+ dfs.setInternationalCurrencySymbol(intlCurrencySymbol);
+ harness.check(dfs.getInternationalCurrencySymbol(), intlCurrencySymbol,
+ "intlCurrencySymbol");
+
+ dfs.setMonetaryDecimalSeparator(monetarySeparator);
+ harness.check(dfs.getMonetaryDecimalSeparator(), monetarySeparator,
+ "monetarySeparator");
+}
+
+} // class GetSet12
+
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/getCurrency.java b/gnu/testlet/java/text/DecimalFormatSymbols/getCurrency.java
new file mode 100644
index 00000000..ed3f8669
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/getCurrency.java
@@ -0,0 +1,44 @@
+// serial.java -- Checks that object can bee serialized and deserialized.
+//
+// Copyright (c) 2003 Mark J. Wielaard (mark@klomp.org)
+//
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class getCurrency implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ DecimalFormatSymbols dfs = new DecimalFormatSymbols(new Locale("foobar"));
+ harness.check(dfs.getCurrency().toString().equals("XXX"));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/text/DecimalFormatSymbols/serial.java b/gnu/testlet/java/text/DecimalFormatSymbols/serial.java
new file mode 100644
index 00000000..d8054803
--- /dev/null
+++ b/gnu/testlet/java/text/DecimalFormatSymbols/serial.java
@@ -0,0 +1,74 @@
+// serial.java -- Checks that object can bee serialized and deserialized.
+//
+// Copyright (c) 2003 Mark J. Wielaard (mark@klomp.org)
+//
+// This program 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 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program; if not, write to the Free Software Foundation
+// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.DecimalFormatSymbols;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.text.DecimalFormatSymbols;
+import java.util.Locale;
+
+public class serial implements Testlet
+{
+ private static String infinity = "supermuch";
+ private static String nan = "Ehe?";
+
+ public void test(TestHarness harness)
+ {
+ DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(Locale.US);
+ dfs1.setInfinity(infinity);
+ dfs1.setNaN(nan);
+
+ // Serialize and Deserialize.e
+ Object o = null;
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+
+ oos.writeObject(dfs1);
+ oos.close();
+
+ byte[] bs = baos.toByteArray();
+ ByteArrayInputStream bois = new ByteArrayInputStream(bs);
+ ObjectInputStream ois = new ObjectInputStream(bois);
+ o = ois.readObject();
+ ois.close();
+ }
+ catch (IOException ioe)
+ {
+ harness.debug(ioe);
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ harness.debug(cnfe);
+ }
+
+ DecimalFormatSymbols dfs2 = (DecimalFormatSymbols) o;
+ harness.check(dfs1, dfs2);
+
+ harness.check(dfs2.getInfinity(), infinity);
+ harness.check(dfs2.getNaN(), nan);
+ }
+
+}
+
diff --git a/gnu/testlet/java/text/FieldPosition/CVS/Entries b/gnu/testlet/java/text/FieldPosition/CVS/Entries
new file mode 100644
index 00000000..f4dca161
--- /dev/null
+++ b/gnu/testlet/java/text/FieldPosition/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.2/Mon Jan 11 09:42:05 1999//
+D
diff --git a/gnu/testlet/java/text/FieldPosition/CVS/Repository b/gnu/testlet/java/text/FieldPosition/CVS/Repository
new file mode 100644
index 00000000..c358c901
--- /dev/null
+++ b/gnu/testlet/java/text/FieldPosition/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/FieldPosition
diff --git a/gnu/testlet/java/text/FieldPosition/CVS/Root b/gnu/testlet/java/text/FieldPosition/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/FieldPosition/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/FieldPosition/Test.java b/gnu/testlet/java/text/FieldPosition/Test.java
new file mode 100644
index 00000000..4956afd3
--- /dev/null
+++ b/gnu/testlet/java/text/FieldPosition/Test.java
@@ -0,0 +1,74 @@
+/*************************************************************************
+/* Test.java -- Test java.text.FieldPosition
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+// FIXME: there should be a 1.1 version of this test.
+
+package gnu.testlet.java.text.FieldPosition;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ FieldPosition fp = new FieldPosition(21);
+ harness.check(fp.getField(), 21, "getField()");
+
+ harness.check(fp.getBeginIndex(), 0, "getBeginIndex on create");
+ harness.check(fp.getEndIndex(), 0, "getEndIndex on create");
+
+ fp.setBeginIndex(1999);
+ harness.check(fp.getBeginIndex(), 1999, "set/getBeginIndex");
+
+ fp.setEndIndex(2001);
+ harness.check(fp.getEndIndex(), 2001, "set/getEndIndex");
+
+ FieldPosition fp2 = new FieldPosition(21);
+ fp2.setBeginIndex(1999);
+ fp2.setEndIndex(2001);
+ harness.check(fp.equals(fp2) == true, "equals (true)");
+
+ FieldPosition fp3 = new FieldPosition(1984);
+ fp3.setBeginIndex(1999);
+ fp3.setEndIndex(2001);
+ harness.check(fp.equals(fp3) == false, "equals (false (pos diff))");
+
+ fp3 = new FieldPosition(21);
+ fp3.setBeginIndex(3000);
+ fp3.setEndIndex(2001);
+ harness.check(fp.equals(fp3) == false, "equals (false (beg diff))");
+
+ fp3 = new FieldPosition(21);
+ fp3.setBeginIndex(1999);
+ fp3.setEndIndex(1984);
+ harness.check(fp.equals(fp3) == false, "equals (false (end diff))");
+
+ harness.debug(fp.toString());
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/MessageFormat/CVS/Entries b/gnu/testlet/java/text/MessageFormat/CVS/Entries
new file mode 100644
index 00000000..b6e508eb
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/CVS/Entries
@@ -0,0 +1,5 @@
+/attribute.java/1.2/Thu Jun 3 14:31:15 2004//
+/format.java/1.7/Mon Jun 21 22:27:28 2004//
+/format14.java/1.3/Fri Jan 2 12:53:33 2009//
+/parse.java/1.2/Fri Jun 3 18:02:42 2005//
+D
diff --git a/gnu/testlet/java/text/MessageFormat/CVS/Repository b/gnu/testlet/java/text/MessageFormat/CVS/Repository
new file mode 100644
index 00000000..c2e3b447
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/MessageFormat
diff --git a/gnu/testlet/java/text/MessageFormat/CVS/Root b/gnu/testlet/java/text/MessageFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/MessageFormat/attribute.java b/gnu/testlet/java/text/MessageFormat/attribute.java
new file mode 100644
index 00000000..9915876b
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/attribute.java
@@ -0,0 +1,234 @@
+/* attribute.java -- tests formatToCharacterIterator
+ Copyright (C) 2003 Free Software Foundation
+
+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, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+// TAGS: JDK1.4
+package gnu.testlet.java.text.MessageFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.math.BigInteger;
+import java.util.Map;
+
+public class attribute implements Testlet {
+ private static class AttrTest {
+ Object[] args;
+ String expected;
+
+ AttrTest(Object[] args, String expected)
+ {
+ this.args = args;
+ this.expected = expected;
+ }
+ }
+
+ private AttrTest[] tests = new AttrTest[] {
+ new AttrTest(new Object[] {
+ new Integer(10), "Hello !" }, "10 Hello !"),
+ new AttrTest(new Object[] {
+ new Float(70.1), "World !" }, "70.1 World !"),
+ new AttrTest(new Object[] {
+ new Float(70.1), new Integer(40) }, "70.1 40"),
+ new AttrTest(new Object[] {
+ new Float(70.1), new BigInteger("193289045") }, "70.1 193,289,045")
+ };
+
+ final private void test_Basic(TestHarness harness)
+ {
+ MessageFormat format;
+
+ try
+ {
+ format = new MessageFormat("{0,number} {1}");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception " + e);
+ return;
+ }
+
+ harness.checkPoint("null argument");
+ try
+ {
+ format.formatToCharacterIterator(null);
+ harness.debug("It should have thrown an exception here");
+ harness.check(false);
+ }
+ catch (NullPointerException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception " + e);
+ }
+
+ harness.checkPoint("Illegal arguments");
+ try
+ {
+ format.formatToCharacterIterator
+ (new Object[] { "Hello world !", "Hello 2" });
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "unexpected exception");
+ }
+ }
+
+ final private void test_StringBuild(TestHarness harness)
+ {
+ MessageFormat format;
+
+ try
+ {
+ format = new MessageFormat("{0,number} {1}");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception " + e);
+ return;
+ }
+
+ harness.checkPoint("Valid arguments");
+ for (int i = 0; i < tests.length; i++)
+ {
+ try
+ {
+ AttributedCharacterIterator iterator =
+ format.formatToCharacterIterator(tests[i].args);
+
+ harness.check(iteratorToString(iterator), tests[i].expected);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ test_Basic(harness);
+ test_StringBuild(harness);
+ test_Attributes(harness);
+ test_FieldPos(harness);
+ }
+
+ final private void test_Attributes(TestHarness harness)
+ {
+ harness.checkPoint("Attributes");
+ try
+ {
+ String before = "Original unmarked -- ";
+ String after = " -- marked";
+ String marked = "Hello world !";
+ String format_string = before + "{0}" + after;
+ MessageFormat format2 = new MessageFormat(format_string);
+ AttributedCharacterIterator iterator =
+ format2.formatToCharacterIterator(new Object[] { marked });
+ int[] range = new int[] { before.length(), marked.length() + before.length(),
+ format_string.length() };
+ Object[] attrs = new Object[] { null, new Integer(0), null };
+ int i, j;
+ char c;
+ for (c = iterator.first(), i = 0, j = 0; c != CharacterIterator.DONE; j++, c = iterator.next())
+ {
+ if (range[i] == j)
+ i++;
+ if (attrs[i] != null)
+ {
+ Map m = iterator.getAttributes();
+ Object o = m.get(MessageFormat.Field.ARGUMENT);
+
+ harness.check(o, attrs[i]);
+ }
+ else
+ {
+ harness.check(iterator.getAttributes().get(MessageFormat.Field.ARGUMENT), null);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ final private void test_FieldPos(TestHarness harness)
+ {
+ harness.checkPoint("Field position");
+ try
+ {
+ MessageFormat format = new MessageFormat("test field {0}");
+ FieldPosition pos = new FieldPosition(MessageFormat.Field.ARGUMENT);
+ StringBuffer output = new StringBuffer(25);
+
+ format.format(new Object[] { "position" }, output, pos);
+
+ harness.check(output.toString(), "test field position");
+ harness.check(pos.getBeginIndex(), 11);
+ harness.check(pos.getEndIndex(), 19);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ private String iteratorToString(CharacterIterator iterator)
+ {
+ StringBuffer sb = new StringBuffer(iterator.getEndIndex()-iterator.getBeginIndex());
+
+ for(char c = iterator.first(); c != CharacterIterator.DONE; c = iterator.next()) {
+ sb.append(c);
+ }
+
+ return sb.toString();
+ }
+}
diff --git a/gnu/testlet/java/text/MessageFormat/format.java b/gnu/testlet/java/text/MessageFormat/format.java
new file mode 100644
index 00000000..657c329e
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/format.java
@@ -0,0 +1,144 @@
+// Test simple forms of MessageFormat formatting.
+
+// Copyright (c) 1999, 2001, 2002 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.MessageFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+
+public class format implements Testlet
+{
+ private final String myformat (MessageFormat mf, Object[] args,
+ StringBuffer buf)
+ {
+ try
+ {
+ buf.setLength (0);
+ mf.format (args, buf, null);
+ return buf.toString ();
+ }
+ catch (IllegalArgumentException x)
+ {
+ return "caught IllegalArgumentException";
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ MessageFormat mf;
+
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ mf = new MessageFormat ("no variables");
+ mf.setLocale (loc);
+
+ Object[] args = new Object[0];
+ StringBuffer buf = new StringBuffer ();
+
+ harness.checkPoint ("no variable format");
+ harness.check (mf.format (args, buf, null) == buf);
+ harness.check (buf.toString (), "no variables");
+ buf.setLength (0);
+ harness.check (mf.format (null, buf, null) == buf);
+ harness.check (buf.toString (), "no variables");
+
+ harness.check (MessageFormat.format ("no variables", args),
+ "no variables");
+
+ harness.checkPoint ("quoted brace");
+ mf.applyPattern ("no '{' variables");
+ harness.check (myformat (mf, args, buf), "no { variables");
+ harness.check (mf.toPattern (), "no '{' variables");
+
+ harness.checkPoint ("one variable");
+ mf.applyPattern ("the disk contains {0} files");
+ args = new Object[1];
+ args[0] = new Long (23);
+ harness.check (myformat (mf, args, buf), "the disk contains 23 files");
+
+ // Check to make sure excess args are ignored.
+ args = new Object[10];
+ args[0] = new Long (27);
+ harness.check (myformat (mf, args, buf), "the disk contains 27 files");
+
+ mf.applyPattern ("the disk contains {0,number} files");
+ harness.check (myformat (mf, args, buf), "the disk contains 27 files");
+ args[0] = "zap";
+ harness.check (myformat (mf, args, buf),
+ "caught IllegalArgumentException");
+
+ args[0] = new Double (.99);
+ mf.applyPattern ("the disk is {0,number,percent} full");
+ harness.check (myformat (mf, args, buf),
+ "the disk is 99% full");
+
+ harness.checkPoint ("two variables");
+ args = new Object[2];
+ args[0] = "files";
+ args[1] = new Long (29);
+ mf.applyPattern ("the disk contains {1} {0}");
+ harness.check (myformat (mf, args, buf), "the disk contains 29 files");
+
+ // Check the case of missing args
+ args = new Object[1];
+ args[0] = "files";
+ mf.applyPattern ("the disk contains {1} {0}");
+ harness.check (myformat (mf, args, buf), "the disk contains {1} files");
+ args = null;
+ harness.check (myformat (mf, args, buf), "the disk contains {1} {0}");
+
+ args = new Object[1];
+ harness.checkPoint ("choice format");
+ args[0] = new Long (5);
+ mf.applyPattern ("There {0,choice,0#are no files|1#is one file|1<are {0, number, integer} files}.");
+ harness.check (myformat (mf, args, buf), "There are 5 files.");
+
+ args[0] = new Double (10.23);
+ mf.applyPattern ("Got {0,number,'#'.##}");
+ harness.check (myformat (mf, args, buf), "Got #10.23");
+
+ // This tests for JDK compatibility. Pointed out by libgcj
+ // user.
+ harness.checkPoint ("array argument");
+ mf.applyPattern ("test Message = {0}");
+ args = new Object[1];
+ args[0] = "a jolly string";
+ harness.check (mf.format ((Object) args),
+ "test Message = a jolly string");
+
+ harness.checkPoint("choice format in message format");
+ mf.applyPattern("{0,choice,0#0 tasks|1#{0,number,integer} task|1<{0,number,integer} tasks}, {1,choice,0#0 errors|1#{1,number,integer} error|1<{1,number,integer} errors}");
+ args = new Object[2];
+ args[0] = new Integer(0);
+ args[1] = new Integer(1);
+ buf = new StringBuffer();
+ mf.format(args, buf, null);
+ harness.check(buf.toString(), "0 tasks, 1 error");
+ }
+}
diff --git a/gnu/testlet/java/text/MessageFormat/format14.java b/gnu/testlet/java/text/MessageFormat/format14.java
new file mode 100644
index 00000000..62e19074
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/format14.java
@@ -0,0 +1,218 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004, 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.MessageFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.ChoiceFormat;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.MessageFormat;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Some checks for the format() methods in the {@link MessageFormat} class.
+ */
+public class format14 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testStaticFormat(harness);
+ //testConstructor2(harness);
+ }
+
+ /**
+ * Some checks for the static format(String, Object[]) method.
+ *
+ * @param harness the test harness.
+ */
+ private void testStaticFormat(TestHarness harness)
+ {
+ harness.checkPoint("static (String, Object[])");
+
+ // basic string check
+ String s = MessageFormat.format("{0}", new Object[] {"ABC"});
+ harness.check(s, "ABC");
+
+ s = MessageFormat.format("-{0}-", new Object[] {"ABC"});
+ harness.check(s, "-ABC-");
+
+ // basic number checks
+ harness.checkPoint("number");
+ s = MessageFormat.format("{0,number}", new Object[] {new Integer(9999)});
+ String expected = NumberFormat.getInstance(Locale.getDefault()).format(9999);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,number,integer}", new Object[] {new Integer(9999)});
+ expected = NumberFormat.getIntegerInstance(Locale.getDefault()).format(9999);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,number,currency}", new Object[] {new Integer(9999)});
+ expected = NumberFormat.getCurrencyInstance(Locale.getDefault()).format(9999);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,number,percent}", new Object[] {new Integer(9999)});
+ expected = NumberFormat.getPercentInstance(Locale.getDefault()).format(9999);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,number,#,##0.00}", new Object[] {new Integer(9999)});
+ expected = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(Locale.getDefault())).format(9999);
+ harness.check(s, expected);
+
+ // basic date checks
+ harness.checkPoint("date");
+ Date t = new Date();
+ s = MessageFormat.format("{0,date}", new Object[] {t});
+ expected = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,date,short}", new Object[] {t});
+ expected = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ try // don't let failure disturb remaining tests
+ {
+ s = MessageFormat.format("{0,date,medium}", new Object[] {t});
+ expected = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ s = MessageFormat.format("{0,date,long}", new Object[] {t});
+ expected = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,date,full}", new Object[] {t});
+ expected = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,date,dd-MMM-yyyy}", new Object[] {t});
+ expected = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ // basic time checks
+ harness.checkPoint("time");
+ s = MessageFormat.format("{0,time}", new Object[] {t});
+ expected = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,time,short}", new Object[] {t});
+ expected = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ try // don't let failure disturb remaining tests
+ {
+ s = MessageFormat.format("{0,time,medium}", new Object[] {t});
+ expected = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ s = MessageFormat.format("{0,time,long}", new Object[] {t});
+ expected = DateFormat.getTimeInstance(DateFormat.LONG, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,time,full}", new Object[] {t});
+ expected = DateFormat.getTimeInstance(DateFormat.FULL, Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ s = MessageFormat.format("{0,time,hh:mm}", new Object[] {t});
+ expected = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(t);
+ harness.check(s, expected);
+
+ harness.checkPoint("choice");
+
+ try
+ {
+ s = MessageFormat.format("{0,choice,0#zero|1#one|1<many}", new Object[]{new Double(2.0)});
+ expected = new ChoiceFormat("0#zero|1#one|1<many").format(new Double(2.0));
+ harness.check(s, expected);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+
+ harness.checkPoint("miscellaneous");
+
+ // check for null string
+ try
+ {
+ /* String s = */ MessageFormat.format(null, new Object[] {"X"});
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check for null array
+ s = MessageFormat.format("{0}", null);
+ harness.check(s, "{0}");
+
+ // check for null item in array
+ s = MessageFormat.format("{0}", new Object[] {null});
+ harness.check(s, "null");
+
+ // check for bad types
+ try
+ {
+ s = MessageFormat.format("{0,number}", new Object[] {"X"});
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("quoting");
+
+ // Note that it is ok to have a right brace in a string or quoted
+ // string.
+ s = MessageFormat.format("new {0}() '{..'}", new Object[] { "bob" });
+ harness.check(s, "new bob() {..}");
+
+ // As a practical matter, unterminated quotes are allowed for
+ // compatibility.
+ s = MessageFormat.format("new {0}() '{..}", new Object[] { "bob" });
+ harness.check(s, "new bob() {..}");
+ }
+
+}
diff --git a/gnu/testlet/java/text/MessageFormat/parse.java b/gnu/testlet/java/text/MessageFormat/parse.java
new file mode 100644
index 00000000..c7910d9c
--- /dev/null
+++ b/gnu/testlet/java/text/MessageFormat/parse.java
@@ -0,0 +1,87 @@
+// Test simple forms of MessageFormat parsing.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.MessageFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.MessageFormat;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+public class parse implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ MessageFormat mf;
+ ParsePosition pp = new ParsePosition (0);
+ Object[] val;
+
+ // Just to be explicit: we're only testing the US locale here.
+ Locale loc = Locale.US;
+ Locale.setDefault (loc);
+
+ mf = new MessageFormat ("no variables");
+ mf.setLocale (loc);
+
+ harness.checkPoint ("no variables");
+ pp.setIndex(0);
+ val = mf.parse ("no zardoz", pp);
+ harness.check (val, null);
+
+ pp.setIndex(0);
+ val = mf.parse ("no variables", pp);
+ harness.check (val.length, 0);
+
+ harness.checkPoint ("one variable");
+ mf.applyPattern ("I have seen zardoz number {0}.");
+
+ pp.setIndex(0);
+ val = mf.parse ("I have seen zardoz number 23.", pp);
+ harness.check (val.length, 1);
+ harness.check (val[0] instanceof String);
+ harness.check ((String) (val[0]), "23");
+
+ harness.checkPoint ("number format");
+ mf.applyPattern ("I have seen zardoz number {0,number}!");
+
+ pp.setIndex(0);
+ val = mf.parse ("I have seen zardoz number 23!", pp);
+ harness.check (val.length, 1);
+ harness.check (val[0] instanceof Number);
+ harness.check (((Number) (val[0])).longValue (), 23);
+
+ harness.checkPoint ("greedy string matching at end");
+ mf.applyPattern ("/foo/{0}");
+
+ pp.setIndex(0);
+ val = mf.parse ("/foo/bar", pp);
+ harness.check (val.length, 1);
+ harness.check (val[0] instanceof String);
+ harness.check (val[0], "bar");
+
+
+ }
+}
diff --git a/gnu/testlet/java/text/NumberFormat/CVS/Entries b/gnu/testlet/java/text/NumberFormat/CVS/Entries
new file mode 100644
index 00000000..bdb3916a
--- /dev/null
+++ b/gnu/testlet/java/text/NumberFormat/CVS/Entries
@@ -0,0 +1,3 @@
+/PR31895.java/1.1/Mon Aug 25 14:23:28 2008//
+/UK.java/1.1/Sun Jan 9 11:51:32 2005//
+D
diff --git a/gnu/testlet/java/text/NumberFormat/CVS/Repository b/gnu/testlet/java/text/NumberFormat/CVS/Repository
new file mode 100644
index 00000000..930030bc
--- /dev/null
+++ b/gnu/testlet/java/text/NumberFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/NumberFormat
diff --git a/gnu/testlet/java/text/NumberFormat/CVS/Root b/gnu/testlet/java/text/NumberFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/NumberFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/NumberFormat/PR31895.java b/gnu/testlet/java/text/NumberFormat/PR31895.java
new file mode 100644
index 00000000..25d055d7
--- /dev/null
+++ b/gnu/testlet/java/text/NumberFormat/PR31895.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2008 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.text.NumberFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.NumberFormat;
+
+import java.util.Currency;
+import java.util.Locale;
+
+/*
+ * This test is based on PR31895, where changing the currency
+ * used by a currency instance of NumberFormat failed to have
+ * an effect on the output.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR31895
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.UK);
+ Currency cur = Currency.getInstance(Locale.UK);
+ harness.check(nf.format(2.50).startsWith(cur.getSymbol()),
+ nf.format(2.50) + " begins with " + cur.getSymbol());
+ Currency newCur = Currency.getInstance("EUR");
+ nf.setCurrency(newCur);
+ harness.check(nf.format(2.50).startsWith(newCur.getSymbol()),
+ nf.format(2.50) + " begins with " + newCur.getSymbol());
+ }
+}
+
diff --git a/gnu/testlet/java/text/NumberFormat/UK.java b/gnu/testlet/java/text/NumberFormat/UK.java
new file mode 100644
index 00000000..d62c290e
--- /dev/null
+++ b/gnu/testlet/java/text/NumberFormat/UK.java
@@ -0,0 +1,227 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.text.NumberFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.util.Locale;
+
+/**
+ * Class to test <code>NumberFormat</code> for the UK.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class UK implements Testlet
+{
+ /* Locale-specific test data */
+ private static final Locale TEST_LOCALE = Locale.UK;
+ private static final String EXPECTED_GROUPED_NUMBER = "123,456.789";
+ private static final String EXPECTED_INT_GROUP_NUMBER = "123,457";
+ private static final String EXPECTED_PER_GROUP_NUMBER = "12,345,678.9%";
+ private static final String CURRENCY_SYMBOL = "\u00A3";
+ private static final boolean CURRENCY_PREFIXED = true;
+ private static final String DECIMAL_SEP = ".";
+ private static final String CURRENCY_SUFFIX = DECIMAL_SEP + "00";
+ private static final String GROUPED_PERCENTILE = "3,000%";
+
+ public void test(TestHarness harness)
+ {
+ NumberFormat numberFormat;
+ double testDouble;
+ long testLong;
+ String testString;
+
+ /********************************** NORMAL NUMBERS ****************************************/
+
+ /* Get an instance for normal numbers in the test locale */
+ numberFormat = NumberFormat.getNumberInstance(TEST_LOCALE);
+ /* Set the options on the number formatter */
+ setOptions(numberFormat, false);
+ /* Format an long-based integer using the normal format */
+ testLong = 30;
+ testString = numberFormat.format(testLong);
+ harness.check(testString, "30", "Long-based integer formatting with normal number format ("+
+ testString + ").");
+ /* Format an double-based integer using the normal format */
+ testDouble = 30;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, "30", "Double-based integer formatting with normal number format ("+
+ testString + ").");
+ /* Format an double-based fraction using the normal format */
+ testDouble = 1.0 / 3;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, "0.333", "Double-based fraction formatting with normal number format ("+
+ testString + ").");
+ /* Format an double-based decimal number using the normal format */
+ testDouble = 123456.789;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, EXPECTED_GROUPED_NUMBER, "Double-based fraction formatting with normal number format ("+
+ testString + ").");
+
+ /********************************** INTEGER NUMBERS ****************************************/
+
+ /* Get an instance for integer numbers in the test locale */
+ numberFormat = NumberFormat.getIntegerInstance(TEST_LOCALE);
+ /* Set the options on the number formatter */
+ setOptions(numberFormat, true);
+ /* Format an long-based integer using the integer format */
+ testLong = 30;
+ testString = numberFormat.format(testLong);
+ harness.check(testString, "30", "Long-based integer formatting with integer number format ("+
+ testString + ").");
+ /* Format an double-based integer using the integer format */
+ testDouble = 30;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, "30", "Double-based integer formatting with integer number format ("+
+ testString + ").");
+ /* Format an double-based fraction using the integer format */
+ testDouble = 1.0 / 3;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, "0", "Double-based fraction formatting with integer number format ("+
+ testString + ").");
+ /* Format an double-based decimal number using the integer format */
+ testDouble = 123456.789;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, EXPECTED_INT_GROUP_NUMBER, "Double-based fraction formatting with integer number format ("+
+ testString + ").");
+
+ /********************************** CURRENCIES ****************************************/
+
+ /* Get an instance for currency numbers in the test locale */
+ numberFormat = NumberFormat.getCurrencyInstance(TEST_LOCALE);
+ /* Set the options on the number formatter */
+ setOptions(numberFormat, false);
+ /* Format an long-based integer using the currency format */
+ testLong = 30;
+ testString = numberFormat.format(testLong);
+ if (CURRENCY_PREFIXED)
+ {
+ harness.check(testString, CURRENCY_SYMBOL + "30" + CURRENCY_SUFFIX,
+ "Long-based integer formatting with currency number format ("+
+ testString + ").");
+ }
+ else
+ {
+ harness.check(testString, "30" + CURRENCY_SUFFIX + CURRENCY_SYMBOL,
+ "Long-based integer formatting with currency number format ("+
+ testString + ").");
+ }
+ /* Format an double-based integer using the currency format */
+ testDouble = 30;
+ testString = numberFormat.format(testDouble);
+ if (CURRENCY_PREFIXED)
+ {
+ harness.check(testString, CURRENCY_SYMBOL + "30" + CURRENCY_SUFFIX,
+ "Double-based integer formatting with currency number format ("+
+ testString + ").");
+ }
+ else
+ {
+ harness.check(testString, "30" + CURRENCY_SUFFIX + CURRENCY_SYMBOL,
+ "Double-based integer formatting with currency number format ("+
+ testString + ").");
+ }
+ /* Format an double-based fraction using the currency format */
+ testDouble = 1.0 / 3;
+ testString = numberFormat.format(testDouble);
+ if (CURRENCY_PREFIXED)
+ {
+ harness.check(testString, CURRENCY_SYMBOL + "0.333", "Double-based fraction formatting with currency number format ("+
+ testString + ").");
+ }
+ else
+ {
+ harness.check(testString, "0.333" + CURRENCY_SYMBOL, "Double-based fraction formatting with currency number format ("+
+ testString + ").");
+ }
+ /* Format an double-based decimal number using the currency format */
+ testDouble = 123456.789;
+ testString = numberFormat.format(testDouble);
+ if (CURRENCY_PREFIXED)
+ {
+ harness.check(testString, CURRENCY_SYMBOL + EXPECTED_GROUPED_NUMBER,
+ "Double-based fraction formatting with currency number format ("+
+ testString + ").");
+ }
+ else
+ {
+ harness.check(testString, EXPECTED_GROUPED_NUMBER + CURRENCY_SYMBOL,
+ "Double-based fraction formatting with currency number format ("+
+ testString + ").");
+ }
+
+ /********************************** PERCENTILES ****************************************/
+
+ /* Get an instance for percentile numbers in the test locale */
+ numberFormat = NumberFormat.getPercentInstance(TEST_LOCALE);
+ /* Set the options on the number formatter */
+ setOptions(numberFormat, false);
+ /* Format an long-based integer using the percentile format */
+ testLong = 30;
+ testString = numberFormat.format(testLong);
+ harness.check(testString, GROUPED_PERCENTILE, "Long-based integer formatting with percentile number format ("+
+ testString + ").");
+ /* Format an double-based integer using the percentile format */
+ testDouble = 30;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, GROUPED_PERCENTILE, "Double-based integer formatting with percentile number format ("+
+ testString + ").");
+ /* Format an double-based fraction using the percentile format */
+ testDouble = 1.0 / 3;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, "33.333%", "Double-based fraction formatting with percentile number format ("+
+ testString + ").");
+ /* Format an double-based decimal number using the percentile format */
+ testDouble = 123456.789;
+ testString = numberFormat.format(testDouble);
+ harness.check(testString, EXPECTED_PER_GROUP_NUMBER, "Double-based fraction formatting with percentile number format ("+
+ testString + ").");
+
+ }
+
+ /**
+ * Sets the options for the formatting of numbers to receive expected output.
+ * The options themselves are tested elsewhere.
+ *
+ * @param format the number formatter to set up.
+ * @param integer true if integer formatting is being used.
+ */
+ public void setOptions(NumberFormat formatter, boolean integer)
+ {
+ if (!integer)
+ {
+ formatter.setMaximumFractionDigits(3); /* Stop at 3 digits after the decimal point */
+ }
+ formatter.setGroupingUsed(true); /* Turn on grouping */
+ try
+ {
+ ((DecimalFormat) formatter).setDecimalSeparatorAlwaysShown(false); /* Don't always show the decimal separator */
+ }
+ catch (ClassCastException exception)
+ {
+ /* Formatter is not an instance of the DecimalFormat subclass */
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/ParseException/CVS/Entries b/gnu/testlet/java/text/ParseException/CVS/Entries
new file mode 100644
index 00000000..8d6b19a5
--- /dev/null
+++ b/gnu/testlet/java/text/ParseException/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Sat Jan 9 15:58:46 1999//
+D
diff --git a/gnu/testlet/java/text/ParseException/CVS/Repository b/gnu/testlet/java/text/ParseException/CVS/Repository
new file mode 100644
index 00000000..dd5e22fe
--- /dev/null
+++ b/gnu/testlet/java/text/ParseException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/ParseException
diff --git a/gnu/testlet/java/text/ParseException/CVS/Root b/gnu/testlet/java/text/ParseException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/ParseException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/ParseException/Test.java b/gnu/testlet/java/text/ParseException/Test.java
new file mode 100644
index 00000000..9c52ce38
--- /dev/null
+++ b/gnu/testlet/java/text/ParseException/Test.java
@@ -0,0 +1,44 @@
+/*************************************************************************
+/* Test.java -- Test java.text.ParseException
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.ParseException;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ ParseException pe = new ParseException("My Parse Exception", 13);
+
+ harness.check(pe.getErrorOffset(), 13, "getErrorOffset");
+ harness.debug("Dumping exception info. This is NOT an error");
+ harness.debug(pe);
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/ParsePosition/CVS/Entries b/gnu/testlet/java/text/ParsePosition/CVS/Entries
new file mode 100644
index 00000000..b75654ed
--- /dev/null
+++ b/gnu/testlet/java/text/ParsePosition/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.4/Thu Jun 3 14:31:15 2004//
+D
diff --git a/gnu/testlet/java/text/ParsePosition/CVS/Repository b/gnu/testlet/java/text/ParsePosition/CVS/Repository
new file mode 100644
index 00000000..716a717f
--- /dev/null
+++ b/gnu/testlet/java/text/ParsePosition/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/ParsePosition
diff --git a/gnu/testlet/java/text/ParsePosition/CVS/Root b/gnu/testlet/java/text/ParsePosition/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/ParsePosition/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/ParsePosition/Test.java b/gnu/testlet/java/text/ParsePosition/Test.java
new file mode 100644
index 00000000..55c1792b
--- /dev/null
+++ b/gnu/testlet/java/text/ParsePosition/Test.java
@@ -0,0 +1,54 @@
+/*************************************************************************
+/* Test.java -- Test java.text.ParsePosition
+/*
+/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.2
+
+// FIXME: This test should be split into two.
+// getErrorIndex is a JDK1.2 method. The rest were present in 1.1.
+
+package gnu.testlet.java.text.ParsePosition;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ ParsePosition pp = new ParsePosition(69);
+ harness.check(pp.getIndex(), 69, "getIndex() post-create");
+
+ pp.setIndex(666);
+ harness.check(pp.getIndex(), 666, "set/getIndex()");
+
+ harness.check(pp.getErrorIndex(), -1, "getErrorIndex() no error");
+
+ pp.setErrorIndex(65536);
+ harness.check(pp.getErrorIndex(), 65536, "set/getErrorIndex()");
+
+ harness.debug(pp.toString());
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/RuleBasedCollator/CVS/Entries b/gnu/testlet/java/text/RuleBasedCollator/CVS/Entries
new file mode 100644
index 00000000..e65cdba1
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/CVS/Entries
@@ -0,0 +1,4 @@
+/CollatorTests.java/1.1/Thu Dec 7 16:27:05 2006//
+/VeryBasic.java/1.4/Thu Dec 7 16:27:05 2006//
+/jdk11.java/1.5/Thu May 13 17:00:55 2004//
+D
diff --git a/gnu/testlet/java/text/RuleBasedCollator/CVS/Repository b/gnu/testlet/java/text/RuleBasedCollator/CVS/Repository
new file mode 100644
index 00000000..a950bf8a
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/RuleBasedCollator
diff --git a/gnu/testlet/java/text/RuleBasedCollator/CVS/Root b/gnu/testlet/java/text/RuleBasedCollator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/RuleBasedCollator/CollatorTests.java b/gnu/testlet/java/text/RuleBasedCollator/CollatorTests.java
new file mode 100644
index 00000000..b048cb4a
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/CollatorTests.java
@@ -0,0 +1,119 @@
+/* CollatorTests.java -- Contain various tests for the Collator and
+ RuleBasedCollator class.
+
+ Copyright (C) 2006 Mario Torre <neugens@limasoftware.net>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.text.RuleBasedCollator;
+
+import java.text.CollationElementIterator;
+import java.text.Collator;
+import java.text.ParseException;
+import java.text.RuleBasedCollator;
+import java.util.Locale;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class CollatorTests implements Testlet
+{
+ private TestHarness harness = null;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ // TODO Auto-generated method stub
+ this.harness = harness;
+
+ basicCompare();
+ orderComparision();
+ }
+
+ private void basicCompare()
+ {
+ // test taken from the JDK Javadoc
+ // Compare two strings in the default locale
+ Collator myCollator = Collator.getInstance(Locale.US);
+
+ this.harness.check((myCollator.compare("abc", "ABC") < 0),
+ "basic comparision");
+
+ myCollator.setStrength(Collator.PRIMARY);
+ this.harness.check((myCollator.compare("abc", "ABC") == 0),
+ "equivalent strings");
+
+ String SimpleRule = "< a< b< c< d";
+
+ boolean pass = false;
+ try
+ {
+ RuleBasedCollator simpleRuleCollator =
+ new RuleBasedCollator(SimpleRule);
+
+ pass = (simpleRuleCollator.compare("abc", "ABC") < 0);
+ }
+ catch (ParseException e)
+ {
+ pass = false;
+ }
+
+ this.harness.check(pass, "simple rule test");
+ }
+
+ private void orderComparision()
+ {
+ RuleBasedCollator c = (RuleBasedCollator)Collator.getInstance(Locale.US);
+ CollationElementIterator iter = c.getCollationElementIterator("Foo");
+
+ // given by the 1.5.0 jdk
+ int [][] results =
+ {
+ {5767169, 88, 0, 1},
+ {6356992, 97, 0, 0},
+ {6356992, 97, 0, 0}
+ };
+
+ int element;
+ int i = 0;
+ while ((element = iter.next()) != CollationElementIterator.NULLORDER)
+ {
+
+ int primary = CollationElementIterator.primaryOrder(element);
+ int secondary = CollationElementIterator.secondaryOrder(element);
+ int tertiary = CollationElementIterator.tertiaryOrder(element);
+
+ this.harness.check((results[i][0] == element), "element #" + i);
+
+ this.harness.check((results[i][1] == primary), "primary #" + i);
+ this.harness.check((results[i][2] == secondary), "secondary #" + i);
+ this.harness.check((results[i][3] == tertiary), "tertiary #" + i);
+
+ i++;
+ }
+ }
+}
diff --git a/gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java b/gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java
new file mode 100644
index 00000000..5273bf7e
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/VeryBasic.java
@@ -0,0 +1,50 @@
+/*************************************************************************
+/* VeryBasic.java -- Very basic tests of java.text.RuleBasedCollator
+/*
+/* Copyright (c) 1999 Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.RuleBasedCollator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.Collator;
+import java.util.Locale;
+
+public class VeryBasic implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // This should be an instance of RuleBasedCollator
+ // It should also be set to TERIARY strength and decomp doesn't matter
+ // for good ol' English
+ Collator col = Collator.getInstance(Locale.US);
+
+ harness.check(col.compare("foo", "bar") > 0, "foo and bar");
+ harness.check(col.compare("bar", "baz") < 0, "bar and baz");
+ harness.check(col.compare("FOO", "FOO") == 0, "FOO and FOO");
+ harness.check(col.compare("foo", "foobar") < 0, "foo and foobar");
+
+ col.setStrength(Collator.SECONDARY); // Ignore case
+ harness.check(col.compare("Foo", "foo") == 0, "Foo and foo");
+ }
+
+} // class VeryBasic
+
diff --git a/gnu/testlet/java/text/RuleBasedCollator/jdk11.java b/gnu/testlet/java/text/RuleBasedCollator/jdk11.java
new file mode 100644
index 00000000..c7d5bab6
--- /dev/null
+++ b/gnu/testlet/java/text/RuleBasedCollator/jdk11.java
@@ -0,0 +1,539 @@
+/*************************************************************************
+/* Tests for java.text.RuleBasedCollator
+/*
+/* Copyright (c) 2003 Stephen C. Crawley (crawley@dstc.edu.au)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.RuleBasedCollator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.RuleBasedCollator;
+import java.text.Collator;
+import java.text.ParseException;
+
+public class jdk11 implements Testlet
+{
+ // These are the rule strings returned by calling getRules() on the
+ // collators for various JDK 1.4.0 Locales
+ private final String EN_US_RULES =
+ "='\u200b'=\u200c=\u200d=\u200e=\u200f=\u0000=\u0001=\u0002=\u0003" +
+ "=\u0004=\u0005=\u0006=\u0007=\u0008='\t'='\u000b'=\u000e" +
+ "=\u000f='\u0010'=\u0011=\u0012=\u0013=\u0014=\u0015=\u0016" +
+ "=\u0017=\u0018=\u0019=\u001a=\u001b=\u001c=\u001d=\u001e=\u001f" +
+ "=\u007f=\u0080=\u0081=\u0082=\u0083=\u0084=\u0085=\u0086=\u0087" +
+ "=\u0088=\u0089=\u008a=\u008b=\u008c=\u008d=\u008e=\u008f=\u0090" +
+ "=\u0091=\u0092=\u0093=\u0094=\u0095=\u0096=\u0097=\u0098=\u0099" +
+ "=\u009a=\u009b=\u009c=\u009d=\u009e=\u009f;' ';'\u00a0';'\u2000'" +
+ ";'\u2001';'\u2002';'\u2003';'\u2004';'\u2005';'\u2006';'\u2007'" +
+ ";'\u2008';'\u2009';'\u200a';'\u3000';'\ufeff';'\r';'\t'" +
+ ";'\n';'\f';'\u000b';\u0301;\u0300;\u0306;\u0302;\u030c;\u030a" +
+ ";\u030d;\u0308;\u030b;\u0303;\u0307;\u0304;\u0337;\u0327;\u0328" +
+ ";\u0323;\u0332;\u0305;\u0309;\u030e;\u030f;\u0310;\u0311;\u0312" +
+ ";\u0313;\u0314;\u0315;\u0316;\u0317;\u0318;\u0319;\u031a;\u031b" +
+ ";\u031c;\u031d;\u031e;\u031f;\u0320;\u0321;\u0322;\u0324;\u0325" +
+ ";\u0326;\u0329;\u032a;\u032b;\u032c;\u032d;\u032e;\u032f;\u0330" +
+ ";\u0331;\u0333;\u0334;\u0335;\u0336;\u0338;\u0339;\u033a;\u033b" +
+ ";\u033c;\u033d;\u033e;\u033f;\u0342;\u0344;\u0345;\u0360;\u0361" +
+ ";\u0483;\u0484;\u0485;\u0486;\u20d0;\u20d1;\u20d2;\u20d3;\u20d4" +
+ ";\u20d5;\u20d6;\u20d7;\u20d8;\u20d9;\u20da;\u20db;\u20dc;\u20dd" +
+ ";\u20de;\u20df;\u20e0;\u20e1,'-';\u00ad;\u2010;\u2011;\u2012;\u2013" +
+ ";\u2014;\u2015;\u2212<'_'<\u00af<','<';'<':'<'!'<\u00a1<'?'<\u00bf" +
+ "<'/'<'.'<\u00b4<'`'<'^'<\u00a8<'~'<\u00b7<\u00b8<'''<'\"'<\u00ab" +
+ "<\u00bb<'('<')'<'['<']'<'{'<'}'<\u00a7<\u00b6<\u00a9<\u00ae<'@'" +
+ "<\u00a4<\u0e3f<\u00a2<\u20a1<\u20a2<'$'<\u20ab<\u20ac<\u20a3<\u20a4" +
+ "<\u20a5<\u20a6<\u20a7<\u00a3<\u20a8<\u20aa<\u20a9<\u00a5<'*'<'\\'<'&'" +
+ "<'#'<'%'<'+'<\u00b1<\u00f7<\u00d7<'<'<'='<'>'<\u00ac<'|'<\u00a6" +
+ "<\u00b0<\u00b5<0<1<2<3<4<5<6<7<8<9<\u00bc<\u00bd<\u00be<a,A<b,B<c,C" +
+ "<d,D<\u00f0,\u00d0<e,E<f,F<g,G<h,H<i,I<j,J<k,K<l,L<m,M<n,N<o,O<p,P" +
+ "<q,Q<r,R<s, S & SS,\u00df<t,T& TH, \u00de &TH, \u00fe <u,U<v,V<w,W" +
+ "<x,X<y,Y<z,Z&AE,\u00c6&AE,\u00e6&OE,\u0152&OE,\u0153";
+
+ private final String FR_CA_RULES =
+ "='\u200b'=\u200c=\u200d=\u200e=\u200f=\u0000=\u0001=\u0002=\u0003" +
+ "=\u0004=\u0005=\u0006=\u0007=\u0008='\t'='\u000b'=\u000e=\u000f" +
+ "='\u0010'=\u0011=\u0012=\u0013=\u0014=\u0015=\u0016=\u0017=\u0018" +
+ "=\u0019=\u001a=\u001b=\u001c=\u001d=\u001e=\u001f=\u007f=\u0080=\u0081" +
+ "=\u0082=\u0083=\u0084=\u0085=\u0086=\u0087=\u0088=\u0089=\u008a=\u008b" +
+ "=\u008c=\u008d=\u008e=\u008f=\u0090=\u0091=\u0092=\u0093=\u0094=\u0095" +
+ "=\u0096=\u0097=\u0098=\u0099=\u009a=\u009b=\u009c=\u009d=\u009e=\u009f" +
+ ";' ';'\u00a0';'\u2000';'\u2001';'\u2002';'\u2003';'\u2004';'\u2005'" +
+ ";'\u2006';'\u2007';'\u2008';'\u2009';'\u200a';'\u3000';'\ufeff';'\r'" +
+ ";'\t';'\n';'\f';'\u000b';\u0301;\u0300;\u0306;\u0302;\u030c;\u030a" +
+ ";\u030d;\u0308;\u030b;\u0303;\u0307;\u0304;\u0337;\u0327;\u0328" +
+ ";\u0323;\u0332;\u0305;\u0309;\u030e;\u030f;\u0310;\u0311;\u0312" +
+ ";\u0313;\u0314;\u0315;\u0316;\u0317;\u0318;\u0319;\u031a;\u031b" +
+ ";\u031c;\u031d;\u031e;\u031f;\u0320;\u0321;\u0322;\u0324;\u0325" +
+ ";\u0326;\u0329;\u032a;\u032b;\u032c;\u032d;\u032e;\u032f;\u0330" +
+ ";\u0331;\u0333;\u0334;\u0335;\u0336;\u0338;\u0339;\u033a;\u033b" +
+ ";\u033c;\u033d;\u033e;\u033f;\u0342;\u0344;\u0345;\u0360;\u0361" +
+ ";\u0483;\u0484;\u0485;\u0486;\u20d0;\u20d1;\u20d2;\u20d3;\u20d4" +
+ ";\u20d5;\u20d6;\u20d7;\u20d8;\u20d9;\u20da;\u20db;\u20dc;\u20dd" +
+ ";\u20de;\u20df;\u20e0;\u20e1,'-';\u00ad;\u2010;\u2011;\u2012;\u2013" +
+ ";\u2014;\u2015;\u2212<'_'<\u00af<','<';'<':'<'!'<\u00a1<'?'<\u00bf" +
+ "<'/'<'.'<\u00b4<'`'<'^'<\u00a8<'~'<\u00b7<\u00b8<'''<'\"'<\u00ab" +
+ "<\u00bb<'('<')'<'['<']'<'{'<'}'<\u00a7<\u00b6<\u00a9<\u00ae<'@'" +
+ "<\u00a4<\u0e3f<\u00a2<\u20a1<\u20a2<'$'<\u20ab<\u20ac<\u20a3<\u20a4" +
+ "<\u20a5<\u20a6<\u20a7<\u00a3<\u20a8<\u20aa<\u20a9<\u00a5<'*'<'\\'<'&'" +
+ "<'#'<'%'<'+'<\u00b1<\u00f7<\u00d7<'<'<'='<'>'<\u00ac<'|'<\u00a6" +
+ "<\u00b0<\u00b5<0<1<2<3<4<5<6<7<8<9<\u00bc<\u00bd<\u00be<a,A<b,B<c,C" +
+ "<d,D<\u00f0,\u00d0<e,E<f,F<g,G<h,H<i,I<j,J<k,K<l,L<m,M<n,N<o,O<p,P" +
+ "<q,Q<r,R<s, S & SS,\u00df<t,T& TH, \u00de &TH, \u00fe <u,U<v,V<w,W" +
+ "<x,X<y,Y<z,Z&AE,\u00c6&AE,\u00e6&OE,\u0152&OE,\u0153@";
+
+
+ private TestHarness harness;
+
+ private void constructorTests()
+ {
+ harness.checkPoint("constructor rule parsing");
+ RuleBasedCollator r;
+ final String[] GOOD_RULES = {
+ // Examples from the Sun javadocs
+ "< a < b < c < d",
+ ("< a,A< b,B< c,C< d,D< e,E< f,F< g,G< h,H< i,I< j,J < k,K< l,L< m,M" +
+ "< n,N< o,O< p,P< q,Q< r,R< s,S< t,T < u,U< v,V< w,W< x,X< y,Y< z,Z " +
+ "< \u00E5=a\u030A,\u00C5=A\u030A ;aa,AA< \u00E6,\u00C6< \u00F8,\u00D8"),
+ ("=\u0301;\u0300;\u0302;\u0308;\u0327;\u0303;\u0304;\u0305" +
+ ";\u0306;\u0307;\u0309;\u030A;\u030B;\u030C;\u030D;\u030E" +
+ ";\u030F;\u0310;\u0311;\u0312< a , A ; ae, AE ; \u00e6 , \u00c6" +
+ "< b , B < c, C < e, E & C < d, D & \u0300 ; \u0308 ; \u0302"),
+ // Real collation rules
+ EN_US_RULES, FR_CA_RULES,
+ // Cases involving non-significant white-space
+ "=A ", "=A\t", "=A\n",
+ "=A B", "=A\tB", "=A\nB",
+ "= A", "=\tA", "=\nA",
+ " =A", "\t=A", "\n=A",
+ // Dodgy cases that JDKs accept
+ " ",
+ "='\n''\n'",
+ "='\n'\n'\n'",
+ // Dodgy cases with unbalanced quotes. JDKs allow these (though a
+ // couple result in IndexOutOfBoundsExceptions). However, the spec
+ // does not say what they mean.
+ "='", /* <- JDK 1.4.0 exception */ "=' ", "='=A", "='=A'",
+ "=''", "='' ","=''=A", "=''=A'",
+ "=''''", /* <- JDK 1.4.0 exception */ "=''''=A", "=''''=A'",
+ };
+
+ for (int i = 0; i < GOOD_RULES.length; i++) {
+ try {
+ r = new RuleBasedCollator(GOOD_RULES[i]);
+ harness.check(true);
+ }
+ catch (ParseException ex) {
+ harness.debug(ex);
+ harness.debug("unexpected ParseException (offset is " +
+ ex.getErrorOffset() + ")");
+ harness.check(false);
+ }
+ catch (Throwable ex) {
+ harness.debug(ex);
+ harness.check(false);
+ }
+ }
+
+ try {
+ r = new RuleBasedCollator(null);
+ harness.check(false);
+ }
+ catch (ParseException ex) {
+ harness.check(false);
+ }
+ catch (NullPointerException ex) {
+ harness.check(true);
+ }
+
+ harness.checkPoint("constructor rule parsing errors");
+ final String[] BAD_RULES = {
+ // Empty rule list
+ "",
+ // No relation
+ "A",
+ // No text following relation
+ "=", "<", ";", ",",
+ // Special chars should be quoted
+ "=\n", "=#", "==",
+ };
+
+ for (int i = 0; i < BAD_RULES.length; i++) {
+ try {
+ r = new RuleBasedCollator(BAD_RULES[i]);
+ harness.check(false);
+ }
+ catch (ParseException ex) {
+ harness.check(true);
+ }
+ catch (Throwable ex) {
+ harness.debug(ex);
+ harness.check(false);
+ }
+ }
+ }
+
+ private void doComparisons(RuleBasedCollator r, String[][] tests)
+ {
+ for (int i = 0; i < tests.length; i++) {
+ int res = r.compare(tests[i][0], tests[i][1]);
+ if (res < 0) {
+ harness.check(tests[i][2].equals("<"));
+ }
+ else if (res == 0) {
+ harness.check(tests[i][2].equals("="));
+ }
+ else {
+ harness.check(tests[i][2].equals(">"));
+ }
+ }
+ }
+
+ private void ignoreTests()
+ {
+ harness.checkPoint("ignorable characters");
+ final String TEST_RULES = "=Z<a,A<b,B<c,C";
+ final String[][] TESTS = {
+ {"abc", "ABC", "<"},
+ {"abc", "abc", "="},
+ {"Abc", "abc", ">"},
+ {"aZbZc", "abc", "="},
+ {"aZbZc", "aZbZc", "="},
+ {"abc", "aZbZc", "="},
+ {"aZbZc", "ABC", "<"},
+ {"Z", "Z", "="},
+ {"Abc", "aZbZc", ">"},
+ };
+
+ try {
+ RuleBasedCollator r = new RuleBasedCollator(TEST_RULES);
+ doComparisons(r, TESTS);
+ }
+ catch (ParseException ex) {
+ harness.debug(ex);
+ harness.fail("ignorable characters: ParseException (offset is " +
+ ex.getErrorOffset() + ")");
+ }
+ }
+
+ private void oneCharTests()
+ {
+ checkStrengths();
+ harness.checkPoint("single character ordering");
+ final String TEST_RULES = "<a;A=0<b,B=1<c;C,d=2";
+ final String[][][] TESTS = {
+ { // PRIMARY
+ {"", "", "="},
+ {"abc", "abc", "="},
+ {"abc", "ab", ">"},
+ {"ab", "abc", "<"},
+ {"abc", "Abc", "="},
+ {"abc", "aBc", "="},
+ {"abc", "abd", "="},
+ {"abc", "abC", "="},
+ {"abC", "abd", "="},
+ {"Abc", "abc", "="},
+ {"aBc", "abc", "="},
+ {"abd", "abc", "="},
+ {"abC", "abc", "="},
+ {"abd", "abC", "="},
+ {"abc", "012", "="},
+ {"ABd", "012", "="},
+ {"abc", "xyz", "<"},
+ {"xyz", "abc", ">"},
+ {"pqr", "xyz", "<"}, /* While the Sun Javadoc simply says that
+ unmentioned characters appear at the end
+ of the collation, the Sun JDK impl'ns
+ appears to order them by raw char value. */
+
+ },
+ { // SECONDARY
+ {"", "", "="},
+ {"abc", "abc", "="},
+ {"abc", "ab", ">"},
+ {"ab", "abc", "<"},
+ {"abc", "Abc", "<"},
+ {"abc", "aBc", "="},
+ {"abc", "abd", "<"},
+ {"abc", "abC", "<"},
+ {"abC", "abd", "="},
+ {"Abc", "abc", ">"},
+ {"aBc", "abc", "="},
+ {"abd", "abc", ">"},
+ {"abC", "abc", ">"},
+ {"abd", "abC", "="},
+ {"abc", "012", "<"},
+ {"ABd", "012", "="},
+ {"abc", "xyz", "<"},
+ {"xyz", "abc", ">"},
+ {"pqr", "xyz", "<"},
+ },
+ { // TERTIARY
+ {"", "", "="},
+ {"abc", "abc", "="},
+ {"abc", "ab", ">"},
+ {"ab", "abc", "<"},
+ {"abc", "Abc", "<"},
+ {"abc", "aBc", "<"},
+ {"abc", "abd", "<"},
+ {"abc", "abC", "<"},
+ {"abC", "abd", "<"},
+ {"Abc", "abc", ">"},
+ {"aBc", "abc", ">"},
+ {"abd", "abc", ">"},
+ {"abC", "abc", ">"},
+ {"abd", "abC", ">"},
+ {"abc", "012", "<"},
+ {"ABd", "012", "="},
+ {"abc", "xyz", "<"},
+ {"xyz", "abc", ">"},
+ {"pqr", "xyz", "<"},
+ },
+ { // IDENTICAL
+ {"", "", "="},
+ {"abc", "abc", "="},
+ {"abc", "ab", ">"},
+ {"ab", "abc", "<"},
+ {"abc", "Abc", "<"},
+ {"abc", "aBc", "<"},
+ {"abc", "abd", "<"},
+ {"abc", "abC", "<"},
+ {"abC", "abd", "<"},
+ {"Abc", "abc", ">"},
+ {"aBc", "abc", ">"},
+ {"abd", "abc", ">"},
+ {"abC", "abc", ">"},
+ {"abd", "abC", ">"},
+ {"abc", "012", "<"},
+ {"ABd", "012", ">"}, /* It appears that Sun JDKs fall back on the
+ raw character values when characters
+ are defined as equivalent by the rules. */
+ {"abc", "xyz", "<"},
+ {"xyz", "abc", ">"},
+ {"pqr", "xyz", "<"},
+ },
+ };
+
+ try {
+ RuleBasedCollator r = new RuleBasedCollator(TEST_RULES);
+ for (int i = 0; i < TESTS.length; i++) {
+ r.setStrength(i);
+ doComparisons(r, TESTS[i]);
+ }
+ }
+ catch (ParseException ex) {
+ harness.debug(ex);
+ harness.fail("single character ordering: ParseException (offset is " +
+ ex.getErrorOffset() + ")");
+ }
+ }
+
+ private void contractionTests()
+ {
+ checkStrengths();
+ harness.checkPoint("contraction ordering");
+ final String OLD_SPANISH_RULES = "<c,C<ch,cH,Ch,CH<d,D";
+ final String[][][] TESTS = {
+ {
+ // PRIMARY
+ {"cat", "cat", "="},
+ {"cat", "Cat", "="},
+ {"cat", "chat", "<"},
+ {"cot", "chat", "<"},
+ {"chat", "chit", "<"},
+ {"chat", "dog", "<"},
+ },
+ {
+ // SECONDARY
+ {"cat", "cat", "="},
+ {"cat", "Cat", "="},
+ {"cat", "chat", "<"},
+ {"cot", "chat", "<"},
+ {"chat", "chit", "<"},
+ {"chat", "dog", "<"},
+ },
+ {
+ // TERTIARY
+ {"cat", "cat", "="},
+ {"cat", "Cat", "<"},
+ {"cat", "chat", "<"},
+ {"cot", "chat", "<"},
+ {"chat", "chit", "<"},
+ {"chat", "dog", "<"},
+ },
+ {
+ // IDENTICAL
+ {"cat", "cat", "="},
+ {"cat", "Cat", "<"},
+ {"cat", "chat", "<"},
+ {"cot", "chat", "<"},
+ {"chat", "chit", "<"},
+ {"chat", "dog", "<"},
+ },
+ };
+
+ try {
+ RuleBasedCollator r = new RuleBasedCollator(OLD_SPANISH_RULES);
+ for (int i = 0; i < TESTS.length; i++) {
+ r.setStrength(i);
+ doComparisons(r, TESTS[i]);
+ }
+ }
+ catch (ParseException ex) {
+ harness.debug(ex);
+ harness.fail("contraction ordering: ParseException (offset is " +
+ ex.getErrorOffset() + ")");
+ }
+ }
+
+ private void expansionTests()
+ {
+ checkStrengths();
+ harness.checkPoint("expansion ordering");
+ final String OLD_ENGLISH_RULES = ("<a,A<b,B<c,C<d,D<e,E<f,F" +
+ " &AE,'\u00e6' &AE,'\u00c6'");
+ final String[][][] TESTS = {
+ {
+ // PRIMARY
+ {"ae", "\u00e6", "="},
+ {"AE", "\u00e6", "="},
+ {"ae", "\u00c6", "="},
+ {"AE", "\u00c6", "="},
+ {"cat", "cat", "="},
+ {"cat", "Cat", "="},
+ {"caet", "caet", "="},
+ {"caet", "c\u00e6t", "="},
+ {"c\u00e6t", "caet", "="},
+ {"c\u00e6t", "c\u00e6t", "="},
+ {"caet", "c\u00c6t", "="},
+ {"c\u00c6t", "caet", "="},
+ {"c\u00c6t", "c\u00c6t", "="},
+ {"c\u00c6t", "c\u00e6t", "="},
+ {"caet", "cat", "<"},
+ {"c\u00e6t", "cat", "<"},
+ {"C\u00c6T", "CAT", "<"},
+ {"caet", "cab", ">"},
+ {"c\u00e6t", "cab", ">"},
+ {"C\u00c6T", "CAB", ">"},
+ },
+ {
+ // SECONDARY
+ {"ae", "\u00e6", "="},
+ {"AE", "\u00e6", "="},
+ {"ae", "\u00c6", "="},
+ {"AE", "\u00c6", "="},
+ {"cat", "cat", "="},
+ {"cat", "Cat", "="},
+ {"caet", "caet", "="},
+ {"caet", "c\u00e6t", "="},
+ {"c\u00e6t", "caet", "="},
+ {"c\u00e6t", "c\u00e6t", "="},
+ {"caet", "c\u00c6t", "="},
+ {"c\u00c6t", "caet", "="},
+ {"c\u00c6t", "c\u00c6t", "="},
+ {"c\u00c6t", "c\u00e6t", "="},
+ {"caet", "cat", "<"},
+ {"c\u00e6t", "cat", "<"},
+ {"C\u00c6T", "CAT", "<"},
+ {"caet", "cab", ">"},
+ {"c\u00e6t", "cab", ">"},
+ {"C\u00c6T", "CAB", ">"},
+ },
+ {
+ // TERTIARY
+ {"ae", "\u00e6", "<"},
+ {"AE", "\u00e6", "<"},
+ {"ae", "\u00c6", "<"},
+ {"AE", "\u00c6", "<"},
+ {"cat", "cat", "="},
+ {"cat", "Cat", "<"},
+ {"caet", "caet", "="},
+ {"caet", "c\u00e6t", "<"},
+ {"c\u00e6t", "caet", ">"},
+ {"c\u00e6t", "c\u00e6t", "="},
+ {"caet", "c\u00c6t", "<"},
+ {"c\u00c6t", "caet", ">"},
+ {"c\u00c6t", "c\u00c6t", "="},
+ {"c\u00c6t", "c\u00e6t", "<"},
+ {"caet", "cat", "<"},
+ {"c\u00e6t", "cat", ">"}, // JDK is buggy. It fails here.
+ {"C\u00c6T", "CAT", ">"}, // JDK is buggy. It fails here.
+ {"caet", "cab", ">"},
+ {"c\u00e6t", "cab", ">"},
+ {"C\u00c6T", "CAB", ">"},
+ },
+ {
+ // IDENTICAL
+ {"ae", "\u00e6", "<"},
+ {"AE", "\u00e6", "<"},
+ {"ae", "\u00c6", "<"},
+ {"AE", "\u00c6", "<"},
+ {"cat", "cat", "="},
+ {"cat", "Cat", "<"},
+ {"caet", "caet", "="},
+ {"caet", "c\u00e6t", "<"},
+ {"c\u00e6t", "caet", ">"},
+ {"c\u00e6t", "c\u00e6t", "="},
+ {"caet", "c\u00c6t", "<"},
+ {"c\u00c6t", "caet", ">"},
+ {"c\u00c6t", "c\u00c6t", "="},
+ {"c\u00c6t", "c\u00e6t", "<"},
+ {"caet", "cat", "<"},
+ {"c\u00e6t", "cat", ">"}, // JDK is buggy. It fails here.
+ {"C\u00c6T", "CAT", ">"}, // JDK is buggy. It fails here.
+ {"caet", "cab", ">"},
+ {"c\u00e6t", "cab", ">"},
+ {"C\u00c6T", "CAB", ">"},
+ },
+ };
+
+ try {
+ RuleBasedCollator r = new RuleBasedCollator(OLD_ENGLISH_RULES);
+ for (int i = 0; i < TESTS.length; i++) {
+ r.setStrength(i);
+ doComparisons(r, TESTS[i]);
+ }
+ }
+ catch (ParseException ex) {
+ harness.debug(ex);
+ harness.fail("expansion ordering: ParseException (offset is " +
+ ex.getErrorOffset() + ")");
+ }
+ }
+
+ private void checkStrengths()
+ {
+ harness.checkPoint("collator strengths");
+ harness.check(Collator.PRIMARY == 0);
+ harness.check(Collator.SECONDARY == 1);
+ harness.check(Collator.TERTIARY == 2);
+ harness.check(Collator.IDENTICAL == 3);
+ }
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ constructorTests();
+ ignoreTests();
+ oneCharTests();
+ contractionTests();
+ expansionTests();
+ // More tests in the pipeline
+ }
+
+} // class jdk11
diff --git a/gnu/testlet/java/text/SimpleDateFormat/CVS/Entries b/gnu/testlet/java/text/SimpleDateFormat/CVS/Entries
new file mode 100644
index 00000000..53045814
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/CVS/Entries
@@ -0,0 +1,16 @@
+/Cloning.java/1.2/Mon Jul 9 18:08:40 2007//
+/Localization.java/1.1/Wed Feb 2 01:21:57 2005//
+/Test.java/1.7/Thu Jun 5 17:59:04 2003//
+/applyLocalizedPattern.java/1.2/Sun Feb 20 21:02:38 2005//
+/applyPattern.java/1.2/Thu Apr 26 14:39:22 2012//
+/attribute.java/1.3/Mon Jul 9 18:04:49 2007//
+/constructors.java/1.1/Tue Feb 8 00:08:34 2005//
+/equals.java/1.3/Thu Jul 9 14:06:00 2009//
+/getAndSet2DigitYearStart.java/1.2/Thu Apr 26 04:44:40 2001//
+/getDateFormatSymbols.java/1.2/Fri Jul 13 20:19:58 2007//
+/parse.java/1.4/Mon Jul 9 18:07:56 2007//
+/regress.java/1.13/Mon May 12 21:24:39 2008//
+/setDateFormatSymbols.java/1.2/Fri Jul 13 20:20:10 2007//
+/toLocalizedPattern.java/1.1/Tue Feb 8 22:12:12 2005//
+/toPattern.java/1.1/Tue Feb 8 22:12:12 2005//
+D
diff --git a/gnu/testlet/java/text/SimpleDateFormat/CVS/Repository b/gnu/testlet/java/text/SimpleDateFormat/CVS/Repository
new file mode 100644
index 00000000..ecd3c19b
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/SimpleDateFormat
diff --git a/gnu/testlet/java/text/SimpleDateFormat/CVS/Root b/gnu/testlet/java/text/SimpleDateFormat/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/SimpleDateFormat/Cloning.java b/gnu/testlet/java/text/SimpleDateFormat/Cloning.java
new file mode 100644
index 00000000..ed7f707a
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/Cloning.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Check for correct cloning behaviour in the SimpleDateFormat
+ * class.
+ */
+public class Cloning
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat format1 = new SimpleDateFormat();
+ SimpleDateFormat format2 = (SimpleDateFormat) format1.clone();
+ harness.check(format1.getDateFormatSymbols() !=
+ format2.getDateFormatSymbols(),
+ "Cloned symbols");
+
+ harness.check(format1.get2DigitYearStart().equals(format2.get2DigitYearStart()),
+ "Cloned 2 digit year start date");
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/Localization.java b/gnu/testlet/java/text/SimpleDateFormat/Localization.java
new file mode 100644
index 00000000..eec61eb0
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/Localization.java
@@ -0,0 +1,144 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+import java.text.SimpleDateFormat;
+
+/**
+ * Check for correct cloning behaviour in the SimpleDateFormat
+ * class.
+ */
+public class Localization
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat format = null;
+ String standard = "GyMdkHmsSEDFwWahKzYeugAZ";
+ String pattern = "EEE, d MMM yyyy HH:mm:ss Z";
+ Locale locale = Locale.GERMAN;
+ harness.checkPoint("German locale, standard pattern characters " +
+ "in pattern.");
+ try
+ {
+ format = new SimpleDateFormat(pattern, locale);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ String local = format.getDateFormatSymbols().getLocalPatternChars();
+ harness.check(format.toPattern(), pattern, "Non-localized pattern " +
+ "comes back as is with toPattern().");
+ String localizedPattern = translateLocalizedPattern(pattern,
+ standard,
+ local);
+ harness.check(format.toLocalizedPattern(), localizedPattern,
+ "Non-localized pattern comes back localized with " +
+ "toLocalizedPattern().");
+ harness.checkPoint("German locale, German pattern characters in pattern.");
+ format = null;
+ try
+ {
+ format = new SimpleDateFormat(localizedPattern, locale);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ format = new SimpleDateFormat(pattern, locale);
+ format.applyLocalizedPattern(localizedPattern);
+ harness.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ local = format.getDateFormatSymbols().getLocalPatternChars();
+ harness.check(format.toLocalizedPattern(), localizedPattern,
+ "Localized pattern comes back as is with " +
+ "toLocalizedPattern().");
+ harness.check(format.toPattern(), pattern,
+ "Localized pattern comes back standardised with " +
+ "toPattern().");
+ }
+
+ /* Taken from GNU Classpath's java.text.SimpleDateFormat */
+ // Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004 Free Software
+ // Foundation, Inc.
+ /* This version has been altered to account for differing char lengths */
+
+ /**
+ * Translates either from or to a localized variant of the pattern
+ * string. For example, in the German locale, 't' (for 'tag') is
+ * used instead of 'd' (for 'date'). This method translates
+ * a localized pattern (such as 'ttt') to a non-localized pattern
+ * (such as 'ddd'), or vice versa. Non-localized patterns use
+ * a standard set of characters, which match those of the U.S. English
+ * locale.
+ *
+ * @param pattern the pattern to translate.
+ * @param oldChars the old set of characters (used in the pattern).
+ * @param newChars the new set of characters (which will be used in the
+ * pattern).
+ * @return a version of the pattern using the characters in
+ * <code>newChars</code>.
+ */
+ private String translateLocalizedPattern(String pattern,
+ String oldChars, String newChars)
+ {
+ int len = pattern.length();
+ StringBuffer buf = new StringBuffer(len);
+ boolean quoted = false;
+ for (int i = 0; i < len; i++)
+ {
+ char ch = pattern.charAt(i);
+ if (ch == '\'')
+ quoted = ! quoted;
+ if (! quoted)
+ {
+ int j = oldChars.indexOf(ch);
+ if ((j >= 0) && j < newChars.length())
+ ch = newChars.charAt(j);
+ }
+ buf.append(ch);
+ }
+ return buf.toString();
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/Test.java b/gnu/testlet/java/text/SimpleDateFormat/Test.java
new file mode 100644
index 00000000..7cde7b69
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/Test.java
@@ -0,0 +1,127 @@
+/*************************************************************************
+/* Test.java -- Test java.text.SimpleDateFormat
+/*
+/* Copyright (c) 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
+/* Written by Aaron M. Renn (arenn@urbanophile.com)
+/*
+/* This program 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 of the License, or
+/* (at your option) any later version.
+/*
+/* This program 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 this program; if not, write to the Free Software Foundation
+/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
+/*************************************************************************/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class Test implements Testlet
+{
+
+public void
+test(TestHarness harness)
+{
+ String pattern_chars = "GyMdhHmsSEDFwWakKz";
+ String pattern = "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a";
+
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+ SimpleDateFormat sdf = new SimpleDateFormat(pattern, dfs);
+ harness.check(sdf.getDateFormatSymbols(), dfs, "getDateFormatSymbols() init");
+
+ String[] ampms = { "am ", "pm " };
+ dfs.setAmPmStrings(ampms);
+ sdf.setDateFormatSymbols(dfs);
+ harness.check(sdf.getDateFormatSymbols(), dfs, "set/getDateFormatSymbols()");
+
+ harness.check(sdf.toPattern(), pattern, "toPattern init");
+ String new_pattern = "EMdyH";
+ sdf.applyPattern(new_pattern);
+ harness.check(sdf.toPattern(), new_pattern, "apply/toPattern()");
+ sdf.applyPattern(pattern);
+
+ harness.check(sdf.equals(new SimpleDateFormat(pattern, dfs)), "equals()");
+ harness.check(sdf.clone().equals(sdf) == true, "clone()");
+
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+ Date d = new Date(0);
+ String formatted_date = sdf.format(d);
+ harness.debug(formatted_date);
+ harness.check(formatted_date.equals(
+ "Thursday, January 1, 1970 12:00:00 o'clock am "), "format()");
+
+ sdf.setLenient(false);
+ try
+ {
+ harness.check(sdf.parse(formatted_date), d, "parse() strict");
+ }
+ catch(Throwable e)
+ {
+ harness.debug(e);
+ harness.check(false, "parse() strict");
+ }
+
+ sdf.setTimeZone(TimeZone.getDefault());
+ harness.debug(sdf.format(new Date(System.currentTimeMillis())));
+
+ // Now do some lenient parsing tests. These might not all work.
+ dfs = new DateFormatSymbols(Locale.US);
+ sdf = new SimpleDateFormat(pattern, dfs);
+
+ sdf.setLenient(true);
+
+ String[] date_strs = {
+ "Tue Feb 23 20:15:34 CST 1999",
+ "10/31/69",
+ "1999/02/23",
+ "6.9.98 12:43pm",
+ "Monday, February 22, 1999 10:24:43",
+ "Wed Feb 24 19:35:02 1999 and a bunch more text",
+ "Wed, 24 Feb 1999 05:12:21 GMT"
+ };
+
+ harness.debug("The following tests are informational only");
+ for (int i = 0; i < date_strs.length; i++)
+ {
+ d = null;
+ try
+ {
+ d = sdf.parse(date_strs[i]);
+ }
+ catch(Throwable e) { ; }
+ if (d == null)
+ harness.debug("Couldn't parse: " + date_strs[i]);
+ else
+ harness.debug("Parsed: " + date_strs[i] + " as: " + d);
+ }
+
+ sdf = new SimpleDateFormat("MM'/'dd'/'yyyy' 'H':'m':'s'.'SSS");
+ boolean ok = true;
+ try
+ {
+ d = sdf.parse("05/24/2002 14:30:53.700");
+ // For the time being only check to make sure something
+ // happened.
+ ok = d != null;
+ }
+ catch (Exception _)
+ {
+ ok = false;
+ }
+ harness.check(ok, "format includes '.'");
+}
+
+} // class Test
+
diff --git a/gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java b/gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java
new file mode 100644
index 00000000..f3b8459e
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/applyLocalizedPattern.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/**
+* Some checks for the applyLocalizedPattern() method in the SimpleDateFormat
+* class.
+*/
+public class applyLocalizedPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat f = new SimpleDateFormat("yyyy", Locale.CHINA);
+ try
+ {
+ f.applyLocalizedPattern("j-nnn-aaaa");
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.debug(iae);
+ harness.check(false);
+ }
+ harness.check(f.toPattern(), "d-MMM-yyyy");
+
+ // try invalid argument
+ try
+ {
+ f.applyLocalizedPattern("XYZ");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // try null argument
+ try
+ {
+ f.applyLocalizedPattern(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/applyPattern.java b/gnu/testlet/java/text/SimpleDateFormat/applyPattern.java
new file mode 100644
index 00000000..a8a9012f
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/applyPattern.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Some checks for the applyPattern() method in the SimpleDateFormat
+ * class.
+ */
+public class applyPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat f = new SimpleDateFormat("yyyy", Locale.FRENCH);
+ f.applyPattern("d-MMM-yyyy");
+ harness.check(f.toPattern(), "d-MMM-yyyy");
+
+ // try invalid argument
+ try
+ {
+ // "XYZ" was used here, but incidentally "X" and "Z"
+ // are now correct patterns in JDK7
+ f.applyPattern("QYZ");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // try null argument
+ try
+ {
+ f.applyPattern(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/attribute.java b/gnu/testlet/java/text/SimpleDateFormat/attribute.java
new file mode 100644
index 00000000..c902f054
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/attribute.java
@@ -0,0 +1,209 @@
+/* attribute.java -- tests formatToCharacterIterator
+ Copyright (C) 2003 Free Software Foundation
+
+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, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+// TAGS: JDK1.4
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+import java.util.Locale;
+import java.util.TimeZone;
+
+
+public class attribute implements Testlet {
+
+ final private void test_Basic(TestHarness harness)
+ {
+ SimpleDateFormat format;
+
+ try
+ {
+ format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception " + e);
+ return;
+ }
+
+ harness.checkPoint("null argument");
+ try
+ {
+ format.formatToCharacterIterator(null);
+ harness.debug("It should have thrown an exception here");
+ harness.check(false);
+ }
+ catch (NullPointerException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("Unexpected exception " + e);
+ }
+
+ harness.checkPoint("Illegal arguments");
+ try
+ {
+ format.formatToCharacterIterator("invalid object");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false, "unexpected exception");
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ test_Basic(harness);
+ test_Attributes(harness);
+ test_FieldPos(harness);
+ }
+
+ final private void test_Attributes(TestHarness harness)
+ {
+ harness.checkPoint("Attributes");
+ try
+ {
+ Date date = new Date(1471228928L);
+ SimpleDateFormat format2 = new SimpleDateFormat("yyyy.MM.dd hh:kk:mm:ss 'zone' zzzz", Locale.UK);
+ format2.setTimeZone(TimeZone.getTimeZone("UTC"));
+ AttributedCharacterIterator iterator =
+ format2.formatToCharacterIterator(date);
+
+ //Needed a larger range since time zones can have extended formats
+ //i.e. 'Coordinated Universal Time' or UTC, GMT, etc.
+ int[] range = new int[]
+ { 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 28, 70};
+ Object[] attrs = new Object[] {
+ DateFormat.Field.YEAR, null, DateFormat.Field.MONTH, null, DateFormat.Field.DAY_OF_MONTH,
+ null, DateFormat.Field.HOUR1, null, DateFormat.Field.HOUR_OF_DAY1, null,
+ DateFormat.Field.MINUTE, null, DateFormat.Field.SECOND,
+ null, DateFormat.Field.TIME_ZONE, null, null};
+ int i, j;
+ char c;
+
+ harness.debug("Date " + iteratorToString(iterator) + " length=" + iteratorToString(iterator).length());
+ for (c = iterator.first(), i = 0, j = 0; c != CharacterIterator.DONE; j++, c = iterator.next())
+ {
+ if (range[i] == j)
+ i++;
+ if (attrs[i] != null)
+ {
+ Map m = iterator.getAttributes();
+ Set s = m.keySet();
+
+ harness.debug("Position " + j);
+ harness.check(s.size(), 1);
+ if (s.size() != 0)
+ harness.check(s.iterator().next(), attrs[i]);
+ }
+ else
+ {
+ harness.check(iterator.getAttributes().size(), 0);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ final private void test_FieldPos(TestHarness harness)
+ {
+ harness.checkPoint("Field position");
+ try
+ {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd hh:kk:mm:ss 'zone' zzzz");
+ Date date = new Date();
+ Format.Field[] fields = new Format.Field[] {
+ DateFormat.Field.YEAR, DateFormat.Field.MONTH, DateFormat.Field.DAY_OF_MONTH,
+ DateFormat.Field.HOUR1, DateFormat.Field.HOUR_OF_DAY1, DateFormat.Field.MINUTE,
+ DateFormat.Field.SECOND
+ };
+ int[] begin = new int[] {
+ 0, 5, 8, /***/ 11, 14, 17, 20
+ };
+ int[] end = new int[] {
+ 4, 7, 10, /***/ 13, 16, 19, 22
+ };
+
+ harness.debug(format.format(date));
+
+ for (int i = 0; i < fields.length; i++)
+ {
+ FieldPosition pos = new FieldPosition(fields[i]);
+ StringBuffer output = new StringBuffer(25);
+
+ format.format(date, output, pos);
+
+ harness.check(pos.getBeginIndex(), begin[i]);
+ harness.check(pos.getEndIndex(), end[i]);
+ }
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ }
+
+ private String iteratorToString(CharacterIterator iterator)
+ {
+ StringBuffer sb = new StringBuffer(iterator.getEndIndex()-iterator.getBeginIndex());
+
+ for(char c = iterator.first(); c != CharacterIterator.DONE; c = iterator.next()) {
+ sb.append(c);
+ }
+
+ return sb.toString();
+ }
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/constructors.java b/gnu/testlet/java/text/SimpleDateFormat/constructors.java
new file mode 100644
index 00000000..7912815a
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/constructors.java
@@ -0,0 +1,179 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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,
+// B oston, MA 02111-1307, USA. */
+
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Some checks for the constructors in the SimpleDateFormat class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("SimpleDateFormat()");
+ SimpleDateFormat f = new SimpleDateFormat();
+ //String pattern = f.toPattern();
+
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("SimpleDateFormat(String)");
+
+ // check null argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check invalid argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat("ZYXWVUT");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("SimpleDateFormat(String, DateFormatSymbols)");
+
+ // bug 4099975 suggests that the DateFormatSymbols argument is
+ // cloned - check for this behaviour
+ DateFormatSymbols s = new DateFormatSymbols(Locale.FRANCE);
+ SimpleDateFormat f = new SimpleDateFormat("yyyy", s);
+ harness.check(f.getDateFormatSymbols() != s);
+ harness.check(f.getDateFormatSymbols().equals(s));
+
+ // check null 'pattern' argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(
+ null, new DateFormatSymbols()
+ );
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check null 'formatData' argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(
+ "yyyy", (DateFormatSymbols) null
+ );
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check invalid argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(
+ "ZYXWVUT", new DateFormatSymbols()
+ );
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("SimpleDateFormat(String, Locale)");
+
+ // check null 'pattern' argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(null, Locale.UK);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check null 'locale' argument
+ // the behaviour isn't specified (see bug 5061189) but here I'll
+ // assume NullPointerException
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat(
+ "yyyy", (Locale) null
+ );
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check invalid argument
+ try
+ {
+ /* SimpleDateFormat f = */ new SimpleDateFormat("ZYXWVUT", Locale.UK);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/equals.java b/gnu/testlet/java/text/SimpleDateFormat/equals.java
new file mode 100644
index 00000000..07dcf87d
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/equals.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Some checks for the equals() method in the SimpleDateFormat
+ * class. Bug 5066247 is a general request for a better API specification.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat f1 = new SimpleDateFormat();
+ SimpleDateFormat f2 = new SimpleDateFormat();
+ harness.check(f1.equals(f2)); // check 1
+
+ f1 = new SimpleDateFormat("yyyy");
+ harness.check(!f1.equals(f2)); // check 2
+ f2 = new SimpleDateFormat("yyyy");
+ harness.check(f1.equals(f2)); // check 3
+
+ DateFormatSymbols dfs1 = new DateFormatSymbols(Locale.GERMAN);
+ DateFormatSymbols dfs2 = new DateFormatSymbols(Locale.ENGLISH);
+ f1 = new SimpleDateFormat("yyyy", dfs1);
+ f2 = new SimpleDateFormat("yyyy", dfs2);
+ harness.check(!f1.equals(f2)); // check 4
+ f2.setDateFormatSymbols(dfs1);
+ harness.check(f1.equals(f2)); // check 5
+
+ Date d1 = new Date();
+
+ // check null argument
+ harness.check(!d1.equals(null)); // check 6
+
+ // check arbitrary argument
+ harness.check(!d1.equals("Not a SimpleDateFormat")); // check 7
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java b/gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java
new file mode 100644
index 00000000..5ace89e7
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/getAndSet2DigitYearStart.java
@@ -0,0 +1,32 @@
+// Tags: JDK1.2
+
+// Copyright (c) 1999, 2001 Free Software Foundation
+
+// This file is part of Mauve.
+
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class getAndSet2DigitYearStart implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ String pattern = "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a";
+
+ DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+ SimpleDateFormat sdf = new SimpleDateFormat(pattern, dfs);
+
+ // I removed this test as it relied on the year never changing.
+ // -tromey
+ // This unusual value seems to be what the JDK outputs.
+ // harness.check(sdf.get2DigitYearStart(), new Date(-1608614014805L),
+ // "get2DigitYearStart() initial");
+ Date d = new Date(System.currentTimeMillis());
+ sdf.set2DigitYearStart(d);
+ harness.check(sdf.get2DigitYearStart(), d, "set/get2DigitYearStart()");
+ }
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java b/gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java
new file mode 100644
index 00000000..359788c3
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/getDateFormatSymbols.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the getDateFormatSymbols() method in the SimpleDateFormat
+ * class.
+ */
+public class getDateFormatSymbols implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ // the getDateFormatSymbols() method should return a *copy* of the
+ // symbols, so updating them should not affect the results of the
+ // date formatter...
+ SimpleDateFormat sdf = new SimpleDateFormat("E", Locale.UK);
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ Date jan1_2005 = new Date(1104537600000L);
+ harness.check(sdf.format(jan1_2005), "Sat");
+ DateFormatSymbols s = sdf.getDateFormatSymbols();
+ s.setShortWeekdays(new String[] {"-", "S", "M", "T", "W", "T", "F", "S"});
+ harness.check(sdf.format(jan1_2005), "Sat");
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/parse.java b/gnu/testlet/java/text/SimpleDateFormat/parse.java
new file mode 100644
index 00000000..42811c5f
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/parse.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004, 2005 Noa Resare <noa@resare.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class parse implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat sdf = new SimpleDateFormat("MMMM yyyy", Locale.UK);
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ Map toTest = new HashMap();
+ toTest.put("august 1978", new Date(270777600000L));
+ toTest.put("August 1978", new Date(270777600000L));
+ toTest.put("December 1978", new Date(281318400000L));
+ doParse(harness, sdf, toTest);
+
+ sdf.applyPattern("EEEE MMMM yyyy");
+ toTest.clear();
+ toTest.put("Saturday November 2004", new Date(1099699200000L));
+ doParse(harness, sdf, toTest);
+
+ sdf.applyPattern("yyyy-MM-dd HH:mm z");
+ toTest.clear();
+ toTest.put("2004-08-11 10:42 GMT", new Date(1092220920000L));
+ toTest.put("2004-08-11 10:42 GMT+00:00", new Date(1092220920000L));
+ toTest.put("2004-08-11 10:42 GMT-00:00", new Date(1092220920000L));
+ toTest.put("2004-08-11 12:42 CEST", new Date(1092220920000L));
+ toTest.put("2004-08-11 12:42 GMT+02:00", new Date(1092220920000L));
+ toTest.put("2004-08-11 12:42 +0200", new Date(1092220920000L));
+ doParse(harness, sdf, toTest);
+
+ // Z should work exactly as z when parsing
+ sdf.applyPattern("yyyy-MM-dd HH:mm Z");
+ doParse(harness, sdf, toTest);
+
+ // long and short names should both work.
+ sdf = new SimpleDateFormat("EEE MMM", Locale.UK);
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ toTest.clear();
+ toTest.put("Sat Jun", new Date(13478400000L)); //saturday, june 6th, 1970, 02:00:00
+ toTest.put("Saturday June", new Date(13478400000L));
+ doParse(harness, sdf, toTest);
+ sdf.applyPattern("EEEE MMMM");
+ doParse(harness, sdf, toTest);
+
+ /* Test case from bug #11583 */
+ SimpleDateFormat sdf1 = new SimpleDateFormat("MMM dd, yyyy", Locale.UK);
+ sdf1.setTimeZone(TimeZone.getTimeZone("UTC"));
+ toTest = new HashMap();
+ toTest.put("dec 31, 2004", new Date(1104451200000L));
+ doParse(harness, sdf1, toTest);
+
+ // test a case that is failing in statcvs and is the same as (I think) the
+ // bug described in bug 13058
+ harness.checkPoint("Bug 13058");
+ SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzzzz", Locale.US);
+ Date d = null;
+ try
+ {
+ d = sdf2.parse("2004-07-18 17:42:25 +0000 GMT");
+ }
+ catch (ParseException e)
+ {
+ // failure will be caught below
+ }
+ harness.check(new Date(1090172545000L).equals(d));
+
+ // test null arguments
+ harness.checkPoint("Null arguments");
+ SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
+ boolean pass = false;
+ try
+ {
+ df.parse(null, new ParsePosition(0));
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ df.parse("17-May-2005", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * Test if the date strings in toTest equals to the Date values when parsed
+ * with sdf.
+ */
+ private static void doParse(TestHarness h, SimpleDateFormat sdf, Map toTest)
+ {
+ h.checkPoint("parse pattern " + sdf.toPattern());
+ Iterator cases = toTest.keySet().iterator();
+ while (cases.hasNext())
+ {
+ String dateString = (String)cases.next();
+ try
+ {
+ h.check(sdf.parse(dateString), toTest.get(dateString));
+ }
+ catch(Exception e)
+ {
+ h.check(false, e.getClass().getName() + ": ");
+ h.debug(e);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/regress.java b/gnu/testlet/java/text/SimpleDateFormat/regress.java
new file mode 100644
index 00000000..152c656c
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/regress.java
@@ -0,0 +1,137 @@
+// Regression test for libgcj/Classpath SimpleDateFormat bugs
+
+// Tags: JDK1.1
+
+// Copyright (c) 1999, 2001, 2003, 2005 Free Software Foundation
+
+// This file is part of Mauve.
+
+package gnu.testlet.java.text.SimpleDateFormat;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class regress implements Testlet
+{
+ // These must all be in the same format, with the timezone as the
+ // characters after the final space, since that is what the code
+ // expects. They must also all represent the same time.
+ public static String[] dates =
+ {
+ "Fri, 18 May 2001 12:18:06 CDT",
+ "Fri, 18 May 2001 13:18:06 EDT",
+ "Fri, 18 May 2001 12:18:06 EST",
+ "Fri, 18 May 2001 17:18:06 GMT",
+ "Fri, 18 May 2001 10:18:06 PDT"
+ };
+
+ public void test (TestHarness harness)
+ {
+ // We don't check the results but just that this works at all. This
+ // is a regression test for libgcj.
+ harness.checkPoint ("parsing regression");
+ DateFormat cdf = new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss zzzz");
+ boolean ok = true;
+ Date d = null;
+ try
+ {
+ d = cdf.parse ("Fri, 18 May 2001 20:18:06 GMT");
+ }
+ catch (ParseException _)
+ {
+ ok = false;
+ }
+ harness.check (ok);
+
+ Calendar k = Calendar.getInstance (TimeZone.getTimeZone ("GMT"));
+ k.setTime (d);
+ harness.check (k.get(Calendar.HOUR), 8, "check hour");
+ harness.check (k.get(Calendar.HOUR_OF_DAY), 20, "check hour-of-day");
+
+ cdf = new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss zzz");
+ cdf.setTimeZone (TimeZone.getTimeZone ("GMT"));
+ for (int i = 0; i < dates.length; ++i)
+ {
+ String tz = dates[i].substring (dates[i].lastIndexOf (' ') + 1,
+ dates[i].length ());
+ try
+ {
+ d = cdf.parse (dates[i]);
+ harness.check (cdf.format (d), "Fri, 18 May 2001 17:18:06 GMT",
+ tz);
+ }
+ catch (ParseException _)
+ {
+ harness.debug ("At index " + _.getErrorOffset() + " " + _);
+ harness.check (false, tz);
+ }
+ }
+
+ cdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
+ try
+ {
+ d = cdf.parse ("03-22-2001 15:54:27");
+ harness.check (cdf.format (d), "03-22-2001 15:54:27",
+ "local timezone");
+ }
+ catch (ParseException _)
+ {
+ harness.debug (_);
+ harness.check (false, "local timezone");
+ }
+
+ DateFormat f = new SimpleDateFormat ("yyyy-MM-dd");
+ GregorianCalendar g = new GregorianCalendar (1, 0, 1, 12, 0, 0);
+ harness.check (f.format(g.getTime()), "0001-01-01",
+ "4 digit year");
+
+ f = new SimpleDateFormat("''yyyy-MM-dd''");
+ harness.check (f.format(g.getTime()), "'0001-01-01'",
+ "quoting 1");
+
+ f = new SimpleDateFormat("'' '' '''FOO''' '' ''");
+ harness.check (f.format(g.getTime()), "' ' 'FOO' ' '",
+ "quoting 2");
+
+ long someTime = 1098968427000L; // 04-10-28 14:00:27 GMT
+ SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HHmmss z");
+
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+ String str = sdf.format(new Date(someTime));
+
+ sdf.setTimeZone(TimeZone.getTimeZone("CET"));
+ try
+ {
+ harness.check(sdf.parse(str).getTime(), someTime,
+ "DST timezone");
+ }
+ catch (ParseException _)
+ {
+ harness.debug (_);
+ harness.check (false, "DST timezone");
+ }
+
+
+ sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss Z");
+ sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
+ someTime = 1098968427000L; // 04-10-28 14:00:27 GMT
+ harness.check(sdf.format(new Date(someTime)), "04-10-28 09:00:27 -0400");
+
+ harness.checkPoint("PR 28658");
+ sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy", Locale.US);
+ try
+ {
+ Date d1 = sdf.parse("Sun Nov 6 08:49:37 1994");
+ Date d2 = sdf.parse("Sun Nov 6 08:49:37 1994");
+ harness.check(d1, d2);
+ }
+ catch (ParseException _)
+ {
+ harness.debug(_);
+ harness.debug("index: " + _.getErrorOffset());
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java b/gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java
new file mode 100644
index 00000000..bd056cb7
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/setDateFormatSymbols.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormatSymbols;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the setDateFormatSymbols() method in the SimpleDateFormat
+ * class.
+ */
+public class setDateFormatSymbols implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that changing the short weekdays does work...
+ SimpleDateFormat sdf = new SimpleDateFormat("E", Locale.UK);
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ Date jan1_2005 = new Date(1104537600000L);
+ harness.check(sdf.format(jan1_2005), "Sat");
+ DateFormatSymbols s = sdf.getDateFormatSymbols();
+ s.setShortWeekdays(new String[] {"-", "S", "M", "T", "W", "T", "F", "S"});
+ // remember s is just a copy of the original
+ sdf.setDateFormatSymbols(s);
+ harness.check(sdf.format(jan1_2005), "S");
+
+ // check null argument - it isn't mentioned in the spec that this
+ // should throw a NullPointerException, but that is such common
+ // behaviour elsewhere that I'm assuming this is the expected
+ // result
+ try
+ {
+ sdf.setDateFormatSymbols(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/toLocalizedPattern.java b/gnu/testlet/java/text/SimpleDateFormat/toLocalizedPattern.java
new file mode 100644
index 00000000..75260b87
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/toLocalizedPattern.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/**
+ * Some checks for the toLocalizedPattern() method in the SimpleDateFormat
+ * class.
+ */
+public class toLocalizedPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat f = new SimpleDateFormat("yyyy", Locale.CHINA);
+ harness.check(f.toLocalizedPattern(), "aaaa");
+ f.applyPattern("d-MMM-yyyy");
+ harness.check(f.toLocalizedPattern(), "j-nnn-aaaa");
+ }
+
+}
diff --git a/gnu/testlet/java/text/SimpleDateFormat/toPattern.java b/gnu/testlet/java/text/SimpleDateFormat/toPattern.java
new file mode 100644
index 00000000..956932d8
--- /dev/null
+++ b/gnu/testlet/java/text/SimpleDateFormat/toPattern.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.text.SimpleDateFormat;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+/**
+ * Some checks for the toPattern() method in the SimpleDateFormat
+ * class.
+ */
+public class toPattern implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleDateFormat f = new SimpleDateFormat("yyyy", Locale.FRENCH);
+ harness.check(f.toPattern(), "yyyy");
+ f.applyPattern("d-MMM-yyyy");
+ harness.check(f.toPattern(), "d-MMM-yyyy");
+ }
+
+}
diff --git a/gnu/testlet/java/text/StringCharacterIterator/CVS/Entries b/gnu/testlet/java/text/StringCharacterIterator/CVS/Entries
new file mode 100644
index 00000000..70a6563f
--- /dev/null
+++ b/gnu/testlet/java/text/StringCharacterIterator/CVS/Entries
@@ -0,0 +1,3 @@
+/constructor.java/1.1/Tue Feb 23 12:12:56 1999//
+/iter.java/1.1/Tue Feb 23 12:12:56 1999//
+D
diff --git a/gnu/testlet/java/text/StringCharacterIterator/CVS/Repository b/gnu/testlet/java/text/StringCharacterIterator/CVS/Repository
new file mode 100644
index 00000000..c7ac892b
--- /dev/null
+++ b/gnu/testlet/java/text/StringCharacterIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/text/StringCharacterIterator
diff --git a/gnu/testlet/java/text/StringCharacterIterator/CVS/Root b/gnu/testlet/java/text/StringCharacterIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/text/StringCharacterIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/text/StringCharacterIterator/constructor.java b/gnu/testlet/java/text/StringCharacterIterator/constructor.java
new file mode 100644
index 00000000..e1b2ea28
--- /dev/null
+++ b/gnu/testlet/java/text/StringCharacterIterator/constructor.java
@@ -0,0 +1,185 @@
+// constructor.java - Test StringCharacterIterator constructors.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.text.StringCharacterIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.StringCharacterIterator;
+
+public class constructor implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ StringCharacterIterator sci = null;
+ harness.checkPoint ("failing constructors");
+
+ try
+ {
+ sci = new StringCharacterIterator (null);
+ }
+ catch (NullPointerException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator (null, 0);
+ }
+ catch (NullPointerException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator (null, 0, 0, 0);
+ }
+ catch (NullPointerException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator (null, 0);
+ }
+ catch (NullPointerException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator (null, 0);
+ }
+ catch (NullPointerException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", -1);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", 9);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", -9, 0, 1);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", 0, -5, 1);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", 0, 1, -1);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", 5, 2, 3);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ sci = null;
+ try
+ {
+ sci = new StringCharacterIterator ("ontology", 2, 5, 7);
+ }
+ catch (IllegalArgumentException x)
+ {
+ }
+ harness.check (sci, null);
+
+ // You could add a few more failure tests to be a bit more
+ // complete, I suppose. Feel free to add more to regression
+ // test your implementation.
+
+ harness.checkPoint ("successful constructors");
+
+ sci = new StringCharacterIterator ("ontology");
+ harness.check (sci.getBeginIndex (), 0);
+ harness.check (sci.getEndIndex (), 8);
+ harness.check (sci.getIndex (), 0);
+
+ sci = new StringCharacterIterator ("ontology", 5);
+ harness.check (sci.getBeginIndex (), 0);
+ harness.check (sci.getEndIndex (), 8);
+ harness.check (sci.getIndex (), 5);
+
+ sci = new StringCharacterIterator ("ontology", 0, 7, 3);
+ harness.check (sci.getBeginIndex (), 0);
+ harness.check (sci.getEndIndex (), 7);
+ harness.check (sci.getIndex (), 3);
+
+ harness.checkPoint ("clone");
+ StringCharacterIterator s2 = (StringCharacterIterator) sci.clone ();
+ harness.check (s2.getBeginIndex (), 0);
+ harness.check (s2.getEndIndex (), 7);
+ harness.check (s2.getIndex (), 3);
+ harness.check (sci.equals (s2));
+ }
+}
diff --git a/gnu/testlet/java/text/StringCharacterIterator/iter.java b/gnu/testlet/java/text/StringCharacterIterator/iter.java
new file mode 100644
index 00000000..fa089b75
--- /dev/null
+++ b/gnu/testlet/java/text/StringCharacterIterator/iter.java
@@ -0,0 +1,72 @@
+// iter.java - Test StringCharacterIterator iteration.
+
+// Copyright (c) 1999 Cygnus Solutions
+// Written by Tom Tromey <tromey@cygnus.com>
+
+// 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.
+
+// Note that we test 1.2 semantics, not 1.1 semantics.
+// Tags: JDK1.2
+
+package gnu.testlet.java.text.StringCharacterIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+public class iter implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("spot checks");
+
+ String recherche = "recherche";
+ StringCharacterIterator sci = new StringCharacterIterator (recherche);
+
+ harness.check (sci.getIndex (), 0);
+ harness.check (sci.current (), 'r');
+ harness.check (sci.getIndex (), 0);
+
+ harness.check (sci.previous (), CharacterIterator.DONE);
+ harness.check (sci.getIndex (), 0);
+
+ int idx = recherche.length () - 1;
+ harness.check (sci.setIndex (idx), 'e');
+ harness.check (sci.getIndex (), idx);
+ harness.check (sci.next (), CharacterIterator.DONE);
+ harness.check (sci.current (), CharacterIterator.DONE);
+ harness.check (sci.getIndex (), recherche.length ());
+
+ harness.check (sci.first (), 'r');
+ harness.check (sci.getIndex (), 0);
+
+ harness.checkPoint ("full iteration");
+ for (int i = 0; i < recherche.length () - 1; ++i)
+ harness.check (sci.next (), recherche.charAt (i + 1));
+ harness.check (sci.next (), CharacterIterator.DONE);
+ harness.check (sci.setIndex (sci.getEndIndex ()),
+ CharacterIterator.DONE);
+
+ sci = new StringCharacterIterator ("");
+ // 1.2, not 1.1.
+ harness.check (sci.current (), CharacterIterator.DONE);
+ harness.check (sci.previous (), CharacterIterator.DONE);
+ harness.check (sci.next (), CharacterIterator.DONE);
+ }
+}
diff --git a/gnu/testlet/java/util/.cvsignore b/gnu/testlet/java/util/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/util/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java b/gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java
new file mode 100644
index 00000000..cf27799e
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/AcuniaAbstractCollectionTest.java
@@ -0,0 +1,332 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractCollection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains tests for java.util.AbstractCollection <br>
+*
+*/
+public class AcuniaAbstractCollectionTest extends AbstractCollection
+ implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_addAll();
+ test_clear();
+ test_remove();
+ test_removeAll();
+ test_retainAll();
+ test_contains();
+ test_containsAll();
+ test_isEmpty();
+ test_size();
+ test_iterator();
+ test_toArray();
+ test_toString();
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ Vector v = new Vector();
+ v.add("a"); v.add("b");
+ v.add("c"); v.add("d");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ th.check( ac.addAll(v) , "should return true, v is modified");
+ th.check( ac.v.equals(v) , "check everything is added");
+ ac.setRA(false);
+ th.check(! ac.addAll(v) , "should return false, v is not modified");
+ th.check( ac.v.equals(v) , "check everything is added");
+ try {
+ ac.addAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true);}
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add("b");
+ ac.v.add("c"); ac.v.add("d");
+ ac.clear();
+ th.check(ac.size()==0 , "all elements are removed -- 1");
+ ac.clear();
+ th.check(ac.size()==0 , "all elements are removed -- 2");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(java.lang.Object)boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ th.check(ac.remove("a"), "returns true if removed -- 1");
+ th.check(ac.size()==3 , "one element was removed -- 1");
+ th.check(!"a".equals(ac.v.get(0)) , "check if correct element was removed");
+ th.check(ac.remove("a"), "returns true if removed -- 2");
+ th.check(ac.size()==2 , "one element was removed -- 2");
+ th.check(!ac.remove("a"), "returns false if not removed -- 3");
+ th.check(ac.size()==2 , "no elements were removed -- 3");
+ th.check(ac.remove(null), "returns true if removed -- 4");
+ th.check(ac.size()==1 , "one element was removed -- 4");
+ th.check(!ac.remove(null), "returns false if not removed -- 5");
+ th.check(ac.size()==1 , "no elements were removed -- 5");
+ th.check("c".equals(ac.v.get(0)) , "\"c\" is left");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_removeAll(){
+ th.checkPoint("removeAll(java.util.Collection)boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ try {
+ ac.removeAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true);}
+ Vector v = new Vector();
+ v.add("a"); v.add(null); v.add("de"); v.add("fdf");
+ th.check( ac.removeAll(v) , "should return true");
+ th.check( ac.size() == 1 , "duplicate elements are removed");
+ th.check("c".equals(ac.v.get(0)) , "check if correct elements were removed");
+ th.check(! ac.removeAll(v) , "should return false");
+ th.check( ac.size() == 1 , "no elements were removed");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_retainAll(){
+ th.checkPoint("retainAll(java.util.Collection)boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ try {
+ ac.retainAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true);}
+ Vector v = new Vector();
+ v.add("a"); v.add(null); v.add("de"); v.add("fdf");
+ th.check( ac.retainAll(v) , "should return true");
+ th.check( ac.size() == 3 , "duplicate elements are retained");
+ th.check(! ac.retainAll(v) , "should return false");
+ th.check( ac.size() == 3 , "all elements were retained");
+ th.check( ac.v.contains(null) && ac.v.contains("a"));
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ th.check(ac.contains("a") , "true -- 1");
+ th.check(ac.contains(null) , "true -- 2");
+ th.check(ac.contains("c") , "true -- 3");
+ th.check(!ac.contains("ab") , "false -- 4");
+ th.check(!ac.contains("b") , "false -- 5");
+ ac.remove(null);
+ th.check(!ac.contains(null) , "false -- 4");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_containsAll(){
+ th.checkPoint("containsAll(java.util.Collection)boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ try {
+ ac.containsAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true);}
+ Vector v = new Vector();
+ th.check( ac.containsAll(v) , "should return true -- 1");
+ v.add("a"); v.add(null); v.add("a"); v.add(null); v.add("a");
+ th.check( ac.containsAll(v) , "should return true -- 2");
+ v.add("c");
+ th.check( ac.containsAll(v) , "should return true -- 3");
+ v.add("c+");
+ th.check(! ac.containsAll(v) , "should return false -- 4");
+ v.clear();
+ ac.clear();
+ th.check( ac.containsAll(v) , "should return true -- 5");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ th.check(ac.isEmpty() , "should return true -- 1");
+ th.check(ac.isEmpty() , "should return true -- 2");
+ ac.v.add(null);
+ th.check(!ac.isEmpty() , "should return false -- 3");
+ ac.clear();
+ th.check(ac.isEmpty() , "should return true -- 4");
+
+ }
+
+/**
+* not implemented. <br>
+* Abstract Method
+*/
+ public void test_size(){
+ th.checkPoint("()");
+ }
+/**
+* not implemented. <br>
+* Abstract Method
+*/
+ public void test_iterator(){
+ th.checkPoint("()");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_toArray(){
+ th.checkPoint("toArray()[java.lang.Object");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ Object [] oa = ac.toArray();
+ th.check( oa != null , "returning null is not allowed");
+ if (oa != null) th.check(oa.length == 0 , "empty array");
+ ac.v.add("a"); ac.v.add(null);
+ ac.v.add("c"); ac.v.add("a");
+ oa = ac.toArray();
+ th.check(oa[0].equals("a") && oa[1] == null && oa[2].equals("c") && oa[3].equals("a"), "checking elements");
+
+ th.checkPoint("toArray([java.lang.Object)[java.lang.Object");
+ try {
+ ac.toArray(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true);}
+ String [] sa = new String[5];
+ for (int i = 0 ; i < 5 ; i++ ){ sa[i] ="ok"; }
+ oa = ac.toArray(sa);
+ th.check(oa[0].equals("a") && oa[1] == null && oa[2].equals("c") && oa[3].equals("a"), "checking elements");
+ th.check(oa == sa , "array large enough --> fill + return it");
+ th.check(sa[4] == null , "element at 'size' is set to null");
+
+ sa = new String[3];
+ for (int i = 0 ; i < 3 ; i++ ){ sa[i] ="ok"; }
+ oa = ac.toArray(sa);
+ th.check(oa[0].equals("a") && oa[1] == null && oa[2].equals("c") && oa[3].equals("a"), "checking elements");
+ th.check ( oa instanceof String[] , "checking class type of returnvalue");
+ sa = new String[4];
+ Class asc = sa.getClass();
+ for (int i = 0 ; i < 4 ; i++ ){ sa[i] ="ok"; }
+ oa = ac.toArray(sa);
+ th.check(oa[0].equals("a") && oa[1] == null && oa[2].equals("c") && oa[3].equals("a"), "checking elements");
+ th.check ( oa instanceof String[] , "checking class type of returnvalue");
+ th.check(oa == sa , "array large enough --> fill + return it");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_toString(){
+ th.checkPoint("toString()java.lang.String");
+ AcuniaAbstractCollectionTest ac = new AcuniaAbstractCollectionTest();
+ ac.v.add("smartmove"); ac.v.add(null);
+ ac.v.add("rules"); ac.v.add("cars");
+ String s = ac.toString();
+ th.check( s.indexOf("smartmove") != -1 , "checking representations");
+ th.check( s.indexOf("rules") != -1 , "checking representations");
+ th.check( s.indexOf("cars") != -1 , "checking representations");
+ th.check( s.indexOf("null") != -1 , "checking representations");
+ th.debug(s);
+ }
+
+// The following fields and methods are needed to use this class as a
+// AbstractCollection implementation.
+
+ public Vector v;
+ private boolean retadd=true;
+
+
+ public AcuniaAbstractCollectionTest(){
+ super();
+ v=new Vector();
+ }
+
+ public int size() {
+ return v.size();
+ }
+
+
+ public boolean add(Object o) {
+ if (retadd)v.add(o);
+ return retadd;
+ }
+
+
+ public Iterator iterator() {
+ return v.iterator();
+ }
+
+ public void setRA(boolean b) {
+ retadd=b;
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java b/gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java
new file mode 100644
index 00000000..61d0cc49
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/AcuniaAddCollectionTest.java
@@ -0,0 +1,79 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractCollection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains tests for java.util.AbstractCollection <br>
+*
+*/
+public class AcuniaAddCollectionTest extends AbstractCollection
+ implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_add();
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_add(){
+ th.checkPoint("add(java.lang.Object)boolean");
+ AcuniaAddCollectionTest eac = new AcuniaAddCollectionTest();
+ try {
+ eac.add(this);
+ th.fail("should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true);}
+ }
+
+// The following fields and methods are needed to use this class as a
+// AbstractCollection implementation.
+
+ public Vector v;
+
+
+ public AcuniaAddCollectionTest(){
+ super();
+ v=new Vector();
+ }
+
+ public int size() {
+ return v.size();
+ }
+
+ public Iterator iterator() {
+ return v.iterator();
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractCollection/CVS/Entries b/gnu/testlet/java/util/AbstractCollection/CVS/Entries
new file mode 100644
index 00000000..adb722b9
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/CVS/Entries
@@ -0,0 +1,4 @@
+/AcuniaAbstractCollectionTest.java/1.3/Mon Feb 21 15:52:49 2005//
+/AcuniaAddCollectionTest.java/1.2/Mon Feb 21 15:52:49 2005//
+/toString.java/1.1/Thu Feb 2 13:22:58 2006//
+D
diff --git a/gnu/testlet/java/util/AbstractCollection/CVS/Repository b/gnu/testlet/java/util/AbstractCollection/CVS/Repository
new file mode 100644
index 00000000..b75b4f0d
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/AbstractCollection
diff --git a/gnu/testlet/java/util/AbstractCollection/CVS/Root b/gnu/testlet/java/util/AbstractCollection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/AbstractCollection/toString.java b/gnu/testlet/java/util/AbstractCollection/toString.java
new file mode 100644
index 00000000..2ca05c60
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractCollection/toString.java
@@ -0,0 +1,67 @@
+/* Copyright (c) 2006 Mark J. Wielaard (mark@klomp.org)
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractCollection;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+ * Checks that toString() can handle collections that contain themselves.
+ */
+public class toString implements Testlet, Comparator
+{
+ public void test (TestHarness harness)
+ {
+ testCollection(new LinkedList(), harness);
+ testCollection(new ArrayList(), harness);
+ testCollection(new Vector(), harness);
+ testCollection(new Stack(), harness);
+ testCollection(new HashSet(), harness);
+ testCollection(new LinkedHashSet(), harness);
+ testCollection(new TreeSet(this), harness);
+ }
+
+ private void testCollection(Collection c, TestHarness h)
+ {
+ h.checkPoint(c.getClass().getName());
+ c.add(new Integer(123));
+ c.add(c);
+ c.add("abc");
+ String s = c.toString();
+ h.debug(s);
+ h.check(s.indexOf("123") != -1);
+ h.check(s.indexOf("abc") != -1);
+ }
+
+ public int compare(Object o1, Object o2)
+ {
+ return String.valueOf(o1).compareTo(String.valueOf(o2));
+ }
+
+ public boolean equals(Object o)
+ {
+ return o == this;
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java b/gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java
new file mode 100644
index 00000000..dc854317
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractList/AcuniaAbstractListTest.java
@@ -0,0 +1,571 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.AbstractList <br>
+*
+*/
+public class AcuniaAbstractListTest extends AbstractList implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_get();
+ test_indexOf();
+ test_lastIndexOf();
+ test_add();
+ test_addAll();
+ test_clear();
+ test_remove();
+ test_removeRange();
+ test_set();
+ test_iterator();
+ try {
+ test_listIterator();
+ }
+ catch(Exception e) {th.fail("got unwanted exception "+e); }
+ test_subList();
+ test_hashCode();
+ test_equals();
+ }
+
+
+/**
+* not implemented. <br>
+* Abstract Method
+*/
+ public void test_get(){
+ th.checkPoint("()");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_indexOf(){
+ th.checkPoint("indexOf(java.lang.Object)int");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.v.add("ab"); eal.v.add("bc"); eal.v.add(null);
+ eal.v.add("ab"); eal.v.add("cd"); eal.v.add(this);
+ th.check( eal.indexOf(this) == 5 , "checking return value -- 1");
+ th.check( eal.indexOf(null) == 2 , "checking return value -- 2");
+ th.check( eal.indexOf("ab") == 0 , "checking return value -- 3");
+ th.check( eal.indexOf("ab") == 0 , "checking return value -- 4");
+ th.check( eal.indexOf("b") == -1 , "checking return value -- 5");
+ eal.v.remove(null);
+ th.check( eal.indexOf(null) == -1 , "checking return value -- 6");
+ eal.v.remove(this);
+ th.check( eal.indexOf(this) == -1 , "checking return value -- 7");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_lastIndexOf(){
+ th.checkPoint("lastIndexOf(java.lang.Object)int");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.v.add("ab"); eal.v.add("bc"); eal.v.add(null);
+ eal.v.add("ab"); eal.v.add(null); eal.v.add(this);
+ th.check( eal.lastIndexOf(this) == 5 , "checking return value -- 1");
+ th.check( eal.lastIndexOf(null) == 4 , "checking return value -- 2");
+ th.check( eal.lastIndexOf("ab") == 3 , "checking return value -- 3");
+ th.check( eal.lastIndexOf("ab") == 3 , "checking return value -- 4");
+ th.check( eal.lastIndexOf("b") == -1 , "checking return value -- 5");
+ eal.v.remove(4);
+ th.check( eal.lastIndexOf(null) == 2 , "checking return value -- 6");
+ eal.v.remove(null);
+ th.check( eal.lastIndexOf(null) == -1 , "checking return value -- 7");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_add(){
+ th.checkPoint("add(java.lang.Object)boolean");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ int mc = eal.getMC();
+ th.check(eal.add(this), "checking return value -- 1");
+// we should change the modCount if we add, remove or set!
+// th.check(mc != eal.getMC() , "got mc "+mc+" and modCount "+eal.getMC());
+ th.check(eal.v.get(0) == this , "checking add -- 1");
+ th.check(eal.add("a"), "checking return value -- 2");
+ th.check("a".equals(eal.v.get(1)) , "checking add -- 2");
+ th.check(eal.add("b"), "checking return value -- 3");
+ th.check("b".equals(eal.v.get(2)) , "checking add -- 3");
+ th.check(eal.add(null), "checking return value -- 4");
+ th.check(eal.v.get(3) == null , "checking add -- 4");
+ th.check(eal.add(null), "checking return value -- 5");
+ th.check(eal.v.get(4) == null , "checking add -- 5");
+ eal.set_edit(false);
+ try {
+ eal.add("a");
+ th.fail("should throw an UnsupportedOperationExeption");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true);}
+ th.checkPoint("add(int,java.lang.Object)void");
+ try {
+ eal.add(3,"a");
+ th.fail("should throw an UnsupportedOperationExeption");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true);}
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ //inherited from AbstractCollection ...
+
+ th.checkPoint("addAll(int,java.util.Collection)boolean");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ try {
+ eal.addAll(0, null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException ne) { th.check(true); }
+ Vector v = new Vector();
+ th.check(! eal.addAll(0, v), "checking returnvalue -- 1");
+ th.check( eal.size() == 0 , "nothing added yet");
+ v.add(this); v.add(null); v.add("a");
+ v.add("b"); v.add("a"); v.add(null);
+ try {
+ eal.addAll(-1, v);
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ eal.addAll(1, v);
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check( eal.addAll(0, v), "checking returnvalue -- 1");
+ th.check( eal.v.get(0) == this && eal.v.get(1) == null && eal.v.get(5) == null );
+ th.check( eal.addAll(3, v), "checking returnvalue -- 2");
+ th.check( eal.v.get(0) == this && "a".equals(eal.v.get(2)) && eal.v.get(3) == this );
+ th.check( eal.v.get(8) == null && "b".equals(eal.v.get(9)) && eal.v.get(11) == null );
+ v =new Vector();
+ th.check(! eal.addAll(3, v), "checking returnvalue -- 3");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.set_updateMC(true);
+ eal.clear();
+ th.check(eal.get_dRR() , "check if removeRange was called");
+ th.check(eal.get_from() == 0 && eal.get_to() == 0);
+ eal = new AcuniaAbstractListTest();
+ eal.v.add("a"); eal.v.add("b"); eal.v.add("c"); eal.v.add("d");
+ eal.clear();
+ th.check(eal.get_dRR() , "check if removeRange was called");
+ th.check(eal.get_from() == 0 && eal.get_to() == 4);
+ th.check(eal.v.size() == 0 , "checking if everything is gone");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(int)java.lang.Object");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.set_edit(false);
+ eal.v.add("a");
+ try {
+ eal.remove(0);
+ th.fail("should throw an UnsupportedOperationException");
+ }
+ catch(UnsupportedOperationException uoe) { th.check(true);}
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_removeRange(){
+ th.checkPoint("removeRange(int,int)void");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ for (int i=0 ; i < 20 ; i++) { eal.v.add("a"+i); }
+ try {
+ eal.removeRange(10,25);
+ th.fail("should throw an exception");
+ }
+ catch(NoSuchElementException e) { th.check(true); }
+ Vector v = (Vector) eal.v.clone();
+ eal.removeRange(10,10);
+ th.check(eal.v.equals(v) , "nothing removed -- 1");
+ eal.removeRange(9,10);
+ v.remove(9);
+ th.check(eal.v.equals(v) , "one element removed");
+ eal.removeRange(5,7);
+ v.remove(5);
+ v.remove(5);
+ th.debug("got v = "+v+", and eal.v = "+eal.v);
+ th.check(eal.v.equals(v) , "two elements removed");
+ eal.removeRange(2,1);
+ th.check(eal.v.equals(v) , "nothing removed -- 2");
+ try {
+ eal.removeRange(-1,5);
+ th.fail("should throw an exception");
+ }
+ catch(IndexOutOfBoundsException e) { th.check(true); th.debug(e);}
+
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_set(){
+ th.checkPoint("set(int,java.lang.Object)java.lang.Object");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.set_edit(false);
+ eal.v.add("a");
+ try {
+ eal.set(0,"b");
+ th.fail("should throw an UnsupportedOperationException");
+ }
+ catch(UnsupportedOperationException uoe) { th.check(true);}
+
+ }
+
+/**
+* implemented. <br>
+* Since the iterator is an innerclass we also test all iterator methods.<br>
+* - hasNext() <br>
+* - next() <br>
+* - remove() <br>
+*/
+ public void test_iterator(){
+ th.checkPoint("iterator()java.util.Iterator");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ eal.set_updateMC(true);
+ eal.v.add("a"); eal.v.add("b"); eal.v.add("c");
+ Iterator it = eal.iterator();
+ th.check( it.hasNext() , "true -- 1");
+ th.check( "a".equals(it.next()) , "order is important -- 1" );
+ th.check( it.hasNext() , "true -- 2");
+ th.check( "b".equals(it.next()) , "order is important -- 2" );
+ th.check( it.hasNext() , "true -- 3");
+ th.check( "c".equals(it.next()) , "order is important -- 3" );
+ th.check(! it.hasNext() , "false -- 4");
+ th.check(! it.hasNext() , "false -- 5");
+ try {
+ it.next();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch(NoSuchElementException nse) { th.check(true); }
+
+ eal.add("changed");
+ try {
+ it.remove();
+ th.fail("should throw a ConcurrentModificationException -- 1");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "remove"); }
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 2");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "next"); }
+ it = eal.iterator();
+ try {
+ it.remove();
+ th.fail("should throw IllegalStateException");
+ }
+ catch(IllegalStateException ise) { th.check(true); }
+ try {
+ th.debug(eal.v.toString());
+ it.next();
+ it.hasNext();
+ it.remove();
+ th.check(! eal.v.contains("a") && eal.v.size() == 3, "first element removed");
+ it.next();
+ it.remove();
+ th.check(! eal.v.contains("b") && eal.v.size() == 2, "second element removed");
+ it.next();
+ it.remove();
+ th.check(! eal.v.contains("c") && eal.v.size() == 1, "third element removed");
+ it.next();
+ it.remove();
+ th.check( eal.v.isEmpty(), "all are elements removed");
+ }
+ catch (Exception e) { th.fail("got unexpected exception !, got "+e); }
+
+ }
+
+/**
+* implemented. <br>
+* Since the listIterator is an innerclass we also test all iterator methods.
+*/
+ public void test_listIterator(){
+ th.checkPoint("listIterator()java.util.ListIterator");
+ AcuniaAbstractListTest ll = new AcuniaAbstractListTest();
+ ll.set_updateMC(true);
+ ListIterator li = ll.listIterator();
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 1");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 1"); }
+ try {
+ li.previous();
+ th.fail("should throw a NoSuchElementException -- 2");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 2"); }
+ th.check(!li.hasNext() , "no elements ... -- 1");
+ th.check(!li.hasPrevious() , "no elements ... -- 1");
+ th.check(li.nextIndex() , 0 ,"nextIndex == 0 -- 1");
+ th.check(li.previousIndex() , -1 ,"previousIndex == -1 -- 1");
+ li.add("a");
+ th.check(!li.hasNext() , "no elements ... -- 2");
+ th.check(li.hasPrevious() , "one element ... -- 2");
+ th.check(li.nextIndex() , 1 ,"nextIndex == 1 -- 2");
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 2");
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 3");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 3"); }
+ th.check("a".equals(li.previous()) , "checking previous element -- 1");
+ li.add(null);
+// th.debug(ll.toString());
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 3");
+ th.check(li.previous() == null , "checking previous element -- 2");
+ th.check(li.next() == null , "checking next element -- 1");
+ li.add("b");
+ th.check("a".equals(li.next()) ,"checking next element -- 2");
+ li.add("c");
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 1");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 4"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 2");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 5"); }
+ th.check("c".equals(li.previous()) , "checking previous element -- 3");
+ li.set("new");
+ th.check("new".equals(li.next()) , "validating set");
+ li.set("not");
+ li.set("notOK");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 3");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 6"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 4");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 7"); }
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 4");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 8"); }
+ th.check("a",li.previous(),"checking on previous element");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 5");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 9"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 6");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 10"); }
+
+
+ }
+
+/**
+* not implemented. <br>
+*/
+ public void test_subList(){
+ th.checkPoint("subList(int,int)List");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ th.check( eal.hashCode() == 1 , "hashCode of empty list is 1");
+ int hash=1;
+ hash = hash*31+ "a".hashCode();
+ eal.v.add("a");
+ th.check( eal.hashCode() == hash , "checking hashCode algortihm -- 1");
+ hash = hash*31+ "adg".hashCode();
+ eal.v.add("adg");
+ th.check( eal.hashCode() == hash , "checking hashCode algortihm -- 2");
+ hash = hash*31;
+ eal.v.add(null);
+ th.check( eal.hashCode() == hash , "checking hashCode algortihm -- 3");
+ hash = hash*31+ this.hashCode();
+ eal.v.add(this);
+ th.check( eal.hashCode() == hash , "checking hashCode algortihm -- 4");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ AcuniaAbstractListTest eal = new AcuniaAbstractListTest();
+ Vector v = new Vector();
+ th.check(! eal.equals(null) , "null is allowed");
+ th.check(! eal.equals(new Object()) , "not equal to an non-List Object");
+ th.check( eal.equals(v) , "equal == true -- 1");
+ eal.v.add(null); v.add(null);
+ th.check( eal.equals(v) , "equal == true -- 2");
+ eal.v.add(this); v.add(this);
+ th.check( eal.equals(v) , "equal == true -- 3");
+ eal.v.add("a"); v.add("b");
+ th.check(! eal.equals(v) , "equal != true -- 4");
+ eal.v.add("b"); v.add("a");
+ th.check(! eal.equals(v) , "equal != true -- 5");
+ eal.v.remove("a");
+ th.check(! eal.equals(v) , "equal != true -- 5");
+
+ }
+
+// The following fields and methods are needed to use this class as a test
+// for AbstractList.
+//
+ private boolean edit=true;
+ private boolean didRemoveRange=false;
+ private boolean updateMC=false;
+ private boolean sleepy=false;
+ private int from = -1;
+ private int to = -1;
+
+ public Vector v = new Vector();
+
+ public AcuniaAbstractListTest(){
+ super();
+ }
+
+ public int size() {
+ if (sleepy){
+ try { Thread.sleep(150L); }
+ catch(Exception e) {}
+ }
+ return v.size();
+ }
+
+ public Object get(int idx) {
+ return v.get(idx);
+ }
+
+ public int getMC() {
+ return modCount;
+ }
+
+ public void set_edit(boolean b) {
+ edit = b;
+ }
+ public void set_sleepy(boolean b) {
+ sleepy = b;
+ }
+ public void set_updateMC(boolean b) {
+ updateMC = b;
+ }
+
+ public void add(int idx, Object o) {
+ if (edit) {
+ if (updateMC) modCount++;
+ v.add(idx , o);
+ }
+ else super.add(idx,o);
+ }
+
+ public Object remove(int idx) {
+ if (edit) {
+ if (updateMC) modCount++;
+ return v.remove(idx);
+ }
+ return super.remove(idx);
+ }
+
+ public Object set(int idx , Object o) {
+ if (edit) {
+ return v.set(idx , o);
+ }
+ return super.set(idx , o);
+ }
+
+ public void removeRange(int fidx, int tidx) {
+ didRemoveRange=true;
+ to = tidx;
+ from = fidx;
+ super.removeRange(fidx, tidx);
+ }
+
+ public boolean get_dRR() {
+ return didRemoveRange;
+ }
+ public void set_dRR(boolean b) {
+ didRemoveRange = b;
+ }
+ public int get_to() {
+ return to;
+ }
+ public int get_from() {
+ return from;
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractList/CVS/Entries b/gnu/testlet/java/util/AbstractList/CVS/Entries
new file mode 100644
index 00000000..1b66464c
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractList/CVS/Entries
@@ -0,0 +1,2 @@
+/AcuniaAbstractListTest.java/1.4/Mon Feb 21 15:52:49 2005//
+D
diff --git a/gnu/testlet/java/util/AbstractList/CVS/Repository b/gnu/testlet/java/util/AbstractList/CVS/Repository
new file mode 100644
index 00000000..83a68f20
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/AbstractList
diff --git a/gnu/testlet/java/util/AbstractList/CVS/Root b/gnu/testlet/java/util/AbstractList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java b/gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java
new file mode 100644
index 00000000..223946c8
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/AcuniaAbstractMapTest.java
@@ -0,0 +1,408 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+// Uses: Entry ESet EIterator
+
+package gnu.testlet.java.util.AbstractMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.AbstractMap <br>
+*
+*/
+public class AcuniaAbstractMapTest extends AbstractMap implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_get();
+ test_containsKey();
+ test_containsValue();
+ test_isEmpty();
+ test_size();
+ test_clear();
+ test_put();
+ test_putAll();
+ test_remove();
+ test_entrySet();
+ test_keySet();
+ test_values();
+ test_equals();
+ test_hashCode();
+ test_toString();
+ }
+
+ protected AcuniaAbstractMapTest buildHT() {
+ AcuniaAbstractMapTest t = new AcuniaAbstractMapTest();
+ String s;
+ for (int i=0 ; i < 15 ; i++) {
+ s = "a"+i;
+ t.put(s,s+" value");
+ }
+ return t;
+ }
+
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(java.lang.Object)java.lang.Object");
+ AcuniaAbstractMapTest ehm = buildHT();
+ Object o;
+ String s="a1";
+ o = ehm.get(s);
+ th.check( (s+" value").equals(o) , "checking return value");
+ o = ehm.get(null);
+ th.check( o == null );
+ o = ehm.get(s+" value");
+ th.check( o == null );
+ ehm.put(null,s);
+ o = ehm.get(null);
+ th.check( s.equals(o));
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_containsKey(){
+ th.checkPoint("containsKey(java.lang.Object)boolean");
+ AcuniaAbstractMapTest ehm = buildHT();
+ th.check(!ehm.containsKey(null) , "null not there");
+ ehm.put(null,"test");
+ th.check(ehm.containsKey(null) , "null is in there");
+ th.check(ehm.containsKey("a1") , "object is in there");
+ th.check(!ehm.containsKey("a1 value") , "object is not in there -- 1");
+ th.check(!ehm.containsKey(new Object()) , "object is not in there -- 2");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_containsValue(){
+ th.checkPoint("containsValue(java.lang.Object)boolean");
+ AcuniaAbstractMapTest ehm = buildHT();
+ th.check(!ehm.containsValue(null) , "null not there");
+ ehm.put(null,null);
+ th.check(ehm.containsValue(null) , "null is in there");
+ th.check(!ehm.containsValue("a1") , "object is not in there -- 1");
+ th.check(ehm.containsValue("a1 value") , "object is in there -- 1");
+ th.check(!ehm.containsValue(new Object()) , "object is not in there -- 2");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ AcuniaAbstractMapTest ehm = new AcuniaAbstractMapTest();
+ th.check(ehm.isEmpty() , "true");
+ ehm = buildHT();
+ th.check(!ehm.isEmpty() , "false");
+
+ }
+
+/**
+* not implemented. <br>
+* Abstract Method
+*/
+ public void test_size(){
+ th.checkPoint("()");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ AcuniaAbstractMapTest ehm = buildHT();
+ ehm.clear();
+ th.check(ehm.isEmpty() , "true");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_put(){
+ th.checkPoint("put(java.lang.Object,java.lang.Object)java.lang.Object");
+ AcuniaAbstractMapTest ehm = buildHT();
+ ehm.set_edit(false);
+ try {
+ ehm.put("a","b");
+ th.fail("should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_putAll(){
+ th.checkPoint("putAll(java.util.Map)void");
+ Hashtable ht = new Hashtable();
+ AcuniaAbstractMapTest ehm = new AcuniaAbstractMapTest();
+ th.check( ehm.equals(ht) , "true -- both empty");
+ ht.put("a","b"); ht.put("c","d"); ht.put("e","f");
+ ehm.putAll(ht);
+ th.check( ehm.equals(ht) , "true -- 1");
+ ht.put("a1","f");
+ ht.put("e","b");
+ ehm.putAll(ht);
+ th.check( ehm.equals(ht) , "true -- 2");
+ ehm = buildHT();
+ try {
+ ehm.putAll(ht);
+ th.check(true, "putAll: " + ht);
+ }
+ catch (NoSuchElementException nse) { th.check(false, "putAll: " + ht); }
+ th.check(ehm.size() == 18 , "added three elements");
+ th.check("f".equals(ehm.get("a1")) , "overwritten old value");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(java.lang.Object)java.lang.Object");
+ AcuniaAbstractMapTest ehm = buildHT();
+ ehm.remove("a1");
+ th.check(!ehm.containsKey("a1") , "key removed -- 1");
+ th.check(!ehm.containsValue("a1 value") , "value removed -- 1");
+ ehm.remove("a0");
+ th.check(!ehm.containsKey("a0") , "key removed -- 2");
+ th.check(!ehm.containsValue("a0 value") , "value removed -- 2");
+ for (int i=2 ; i < 15 ; i++ ) {
+ ehm.remove("a"+i);
+ }
+ th.check(ehm.isEmpty());
+ }
+
+/**
+* not implemented. <br>
+* Abstract Method
+*/
+ public void test_entrySet(){
+ th.checkPoint("()");
+
+ }
+
+/**
+* implemented. <br>
+* check only on methods not inherited from AbstractSet
+*/
+ public void test_keySet(){
+ th.checkPoint("keySet()java.util.Set");
+ AcuniaAbstractMapTest ehm = buildHT();
+ Set s = ehm.keySet();
+ th.check(s.size() == 15);
+ ehm.put(null,"test");
+ th.check(s.size() == 16);
+ th.check(s.contains("a1"),"does contain a1");
+ th.check(s.contains(null),"does contain null");
+ th.check(!s.contains(new Object()),"does contain new Object");
+ th.check(!s.contains("test"),"does contain test");
+ th.check( s == ehm.keySet() , "same Set is returned");
+ Iterator it = s.iterator();
+ Vector v = ehm.getKeyV();
+ int i;
+ Object o;
+ for (i=0 ; i < 16 ; i++) {
+ o = it.next();
+ th.check(v.indexOf(o) == 0, "order is not respected");
+ if (!v.remove(o)) th.debug("didn't find "+o);
+
+ }
+ it = s.iterator();
+ while (it.hasNext()) {
+ it.next();
+ it.remove();
+ }
+ th.check(s.isEmpty(), "everything is removed");
+ s = ehm.keySet();
+ th.check(s.isEmpty(), "new Set is also empty");
+ ehm.put("a","B");
+ th.check(!s.isEmpty(), "Set is updated by underlying actions");
+ }
+
+/**
+* implemented. <br>
+* check only on methods not inherited from AbstractCollection
+*/
+ public void test_values(){
+ th.checkPoint("values()java.util.Collection");
+ AcuniaAbstractMapTest ehm = buildHT();
+ Collection s = ehm.values();
+ th.check(s.size() == 15);
+ ehm.put(null,"test");
+ ehm.put("a10",null);
+ th.check(s.size() == 16);
+ th.check(s.contains("a1 value"),"does contain a1 value");
+ th.check(s.contains(null),"does contain null");
+ th.check(!s.contains(new Object()),"does contain new Object");
+ th.check(s.contains("test"),"does contain test");
+ th.check(!s.contains("a1"),"does not contain a1");
+ th.check( s == ehm.values() , "same Set is returned");
+ Iterator it = s.iterator();
+ Vector v = ehm.getValuesV();
+ int i;
+ Object o;
+ for (i=0 ; i < 16 ; i++) {
+ o = it.next();
+ th.check(v.indexOf(o) == 0, "order is not respected");
+ if (!v.remove(o)) th.debug("didn't find "+o);
+
+ }
+ it = s.iterator();
+ while (it.hasNext()) {
+ it.next();
+ it.remove();
+ }
+ th.check(s.isEmpty(), "everything is removed");
+ s = ehm.values();
+ th.check(s.isEmpty(), "new Set is also empty");
+ ehm.put("a","B");
+ th.check(!s.isEmpty(), "Set is updated by underlying actions");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ Hashtable ht = new Hashtable();
+ AcuniaAbstractMapTest ehm = new AcuniaAbstractMapTest();
+ th.check( ehm.equals(ht) , "true -- both empty");
+ ht.put("a","b"); ht.put("c","d"); ht.put("e","f");
+ ehm.put("a","b"); ehm.put("c","d"); ehm.put("e","f");
+ th.check( ehm.equals(ht) , "true -- same key && values");
+ ht.put("a","f");
+ th.check(! ehm.equals(ht) , "false -- same key && diff values");
+ ht.put("e","b");
+ th.check(! ehm.equals(ht) , "false -- key with diff values");
+ th.check(! ehm.equals(ht.entrySet()) , "false -- no Map");
+ th.check(! ehm.equals(new Object()) , "false -- Object is no Map");
+ th.check(! ehm.equals(null) , "false -- Object is null");
+
+
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ AcuniaAbstractMapTest ehm = new AcuniaAbstractMapTest();
+ th.check( ehm.hashCode() == 0 , "hashCode of Empty Map is 0, got "+ehm.hashCode());
+ int hash = 0;
+ Iterator s = ehm.entrySet().iterator();
+ while (s.hasNext()) { hash += s.next().hashCode(); }
+ th.check( ehm.hashCode() , hash , "hashCode of Empty Map -- checking Algorithm");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_toString(){
+ th.checkPoint("toString()java.lang.String");
+ AcuniaAbstractMapTest ehm = new AcuniaAbstractMapTest();
+ th.check("{}".equals(ehm.toString()) , "checking empty Map");
+ ehm.put("a","b");
+ th.debug(ehm.toString());
+ th.check("{a=b}".equals(ehm.toString()) , "checking Map with one element");
+ ehm.put("c","d"); ehm.put("e","f");
+ th.debug(ehm.toString());
+ th.check("{a=b, c=d, e=f}".equals(ehm.toString()) , "checking Map with three elements");
+ }
+
+ public String toString() {
+ return super.toString();
+ }
+
+// The following field and methods are needed to use this class as an
+// implementation test for AbstractMap
+//
+ Vector keys = new Vector();
+ Vector values = new Vector();
+ private boolean edit = true;
+
+ boolean deleteInAM(Object e) {
+ if (!keys.contains(e)) return false;
+ values.remove(keys.indexOf(e));
+ return keys.remove(e);
+ }
+
+ public Vector getKeyV() {
+ return (Vector)keys.clone();
+ }
+ public Vector getValuesV() {
+ return (Vector)values.clone();
+ }
+
+ public AcuniaAbstractMapTest(){
+ super();
+ }
+
+ public Set entrySet() {
+ return new ESet(this);
+ }
+
+ public Object put(Object key, Object value) {
+ if (edit) {
+ if (keys.contains(key)) {
+ return values.set(keys.indexOf(key),value);
+ }
+ values.add(value);
+ keys.add(key);
+ return null;
+ }
+ return super.put(key,value);
+ }
+
+ public void set_edit(boolean b) {
+ edit = b;
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractMap/CVS/Entries b/gnu/testlet/java/util/AbstractMap/CVS/Entries
new file mode 100644
index 00000000..d3a97541
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/CVS/Entries
@@ -0,0 +1,5 @@
+/AcuniaAbstractMapTest.java/1.5/Mon Feb 21 15:52:49 2005//
+/EIterator.java/1.2/Sat May 11 11:57:08 2002//
+/ESet.java/1.2/Sat May 11 11:57:08 2002//
+/Entry.java/1.2/Sat May 11 11:57:08 2002//
+D
diff --git a/gnu/testlet/java/util/AbstractMap/CVS/Repository b/gnu/testlet/java/util/AbstractMap/CVS/Repository
new file mode 100644
index 00000000..9d7a4ca9
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/AbstractMap
diff --git a/gnu/testlet/java/util/AbstractMap/CVS/Root b/gnu/testlet/java/util/AbstractMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/AbstractMap/EIterator.java b/gnu/testlet/java/util/AbstractMap/EIterator.java
new file mode 100644
index 00000000..95bff8fe
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/EIterator.java
@@ -0,0 +1,35 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.util.AbstractMap;
+
+import java.util.*;
+
+class EIterator implements Iterator {
+ int pos=0;
+ int status=0;
+
+ private AcuniaAbstractMapTest map;
+
+ public EIterator(AcuniaAbstractMapTest map) {
+ this.map = map;
+ }
+
+ public boolean hasNext() {
+ return pos < map.size();
+ }
+
+ public Object next() {
+ status = 1;
+ if (pos>= map.size()) throw new NoSuchElementException("no elements left");
+ pos++;
+ return new Entry(map.keys.get(pos-1), map.values.get(pos-1));
+ }
+
+ public void remove() {
+ if (status != 1 ) throw new IllegalStateException("do a next() operation before remove()");
+ map.deleteInAM(map.keys.get(pos-1));
+ pos--;
+ status=-1;
+ }
+}
+
diff --git a/gnu/testlet/java/util/AbstractMap/ESet.java b/gnu/testlet/java/util/AbstractMap/ESet.java
new file mode 100644
index 00000000..4f79e028
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/ESet.java
@@ -0,0 +1,23 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.util.AbstractMap;
+
+import java.util.*;
+
+class ESet extends AbstractSet {
+
+ private AcuniaAbstractMapTest map;
+
+ ESet(AcuniaAbstractMapTest map) {
+ this.map = map;
+ }
+
+ public Iterator iterator() {
+ return new EIterator(map);
+ }
+
+ public int size() {
+ return map.keys.size();
+ }
+}
+
diff --git a/gnu/testlet/java/util/AbstractMap/Entry.java b/gnu/testlet/java/util/AbstractMap/Entry.java
new file mode 100644
index 00000000..f2583c08
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractMap/Entry.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+package gnu.testlet.java.util.AbstractMap;
+
+import java.util.*;
+
+class Entry implements Map.Entry {
+
+ private Object key;
+ private Object value;
+
+ public Entry(Object k, Object v) {
+ key = k;
+ value = v;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object setValue(Object nv) {
+ Object ov = value;
+ value = nv;
+ return ov;
+ }
+
+ public boolean equals(Object o) {
+
+ if (!(o instanceof Map.Entry))return false;
+ Map.Entry e = (Map.Entry)o;
+ if ( e == null ) return false;
+ return ( (key == null ? e.getKey()==null : key.equals(e.getKey())) &&
+ (value == null ? e.getValue()==null : key.equals(e.getValue())));
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java b/gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java
new file mode 100644
index 00000000..0bb80031
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSequentialList/AcuniaAbstractSequentialListTest.java
@@ -0,0 +1,579 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractSequentialList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for AbstractSequentialList <br>
+* <br>
+*/
+public class AcuniaAbstractSequentialListTest extends AbstractSequentialList
+ implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_AbstractSequentialList();
+ test_add();
+ test_addAll();
+ test_remove();
+ test_set();
+ test_get();
+ test_iterator();
+ test_ListIterator();
+
+
+ }
+
+ protected AcuniaAbstractSequentialListTest buildAL() {
+ Vector v = new Vector();
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ return new AcuniaAbstractSequentialListTest(v);
+
+ }
+
+
+/**
+* Not implemented. <br>
+*
+*/
+ public void test_AbstractSequentialList(){
+ }
+
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_add(){
+ th.checkPoint("add(int,java.lang.Object)void");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ try {
+ al.add(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ al.add(1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ al.clear();
+ al.add(0,"a");
+ al.add(1,"c");
+ al.add(2,"u");
+ al.add(1,null);
+ th.check("a".equals(al.get(0))&& null==al.get(1) && "c".equals(al.get(2)) && "u".equals(al.get(3)) , "checking add ...");
+
+ th.checkPoint("add(java.lang.Object)boolean");
+ al = new AcuniaAbstractSequentialListTest();
+ th.check(al.add("a") , "checking return value -- 1");
+ th.check(al.add("c") , "checking return value -- 2");
+ th.check(al.add("u") , "checking return value -- 3");
+ th.check(al.add("n") , "checking return value -- 4");
+ th.check(al.add("i") , "checking return value -- 5");
+ th.check(al.add("a") , "checking return value -- 6");
+ th.check(al.add(null) , "checking return value -- 7");
+ th.check(al.add("end") , "checking return value -- 8");
+ th.check("a".equals(al.get(0))&& null==al.get(6) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking add ... -- 1");
+ th.check("a".equals(al.get(5))&& "end".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking add ... -- 2");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ AcuniaAbstractSequentialListTest al =new AcuniaAbstractSequentialListTest();
+ try { al.addAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ Collection c = (Collection) al;
+ th.check(!al.addAll(c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ th.check(al.addAll(c) ,"checking returnvalue -- 2");
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(14)=="a" && al.get(15)=="b" && al.get(16)=="c", "checking added on right positions");
+ th.debug(al.toString());
+ th.checkPoint("addAll(int,java.util.Collection)boolean");
+ al =new AcuniaAbstractSequentialListTest();
+ c = (Collection) al;
+ th.check(!al.addAll(0,c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ try { al.addAll(-1,c);
+ th.fail("should throw exception -- 1");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { al.addAll(15,c);
+ th.fail("should throw exception -- 2");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { th.check(al.addAll(11,c),"checking returnvalue -- 2"); }
+ catch (ArrayIndexOutOfBoundsException ae) { th.fail("shouldn't throw exception -- 1"); }
+ th.debug(al.toString());
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(11)=="a" && al.get(12)=="b" && al.get(13)=="c", "checking added on right positions -- 1");
+ th.debug(al.toString());
+ th.check(al.addAll(1,c),"checking returnvalue -- 3");
+ th.check(al.get(1)=="a" && al.get(2)=="b" && al.get(3)=="c", "checking added on right positions -- 2");
+ th.debug(al.toString());
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(int)java.lang.Object");
+ AcuniaAbstractSequentialListTest al = buildAL();
+ try {
+ al.remove(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.remove(14);
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 1");
+ th.check("a".equals(al.get(0))&& null==al.get(5) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking remove ... -- 1");
+ th.check("a".equals(al.get(6))&& "c".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking remove ... -- 2");
+ th.check(al.size() == 13 , "checking new size -- 1");
+ th.check( al.remove(5) == null , "checking returnvalue remove -- 2");
+ th.check(al.size() == 12 , "checking new size -- 2");
+ th.check( al.remove(11) == null, "checking returnvalue remove -- 3");
+ th.check( "a".equals(al.remove(0)) , "checking returnvalue remove -- 4");
+ th.check( "u".equals(al.remove(1)) , "checking returnvalue remove -- 5");
+ th.check( "i".equals(al.remove(2)) , "checking returnvalue remove -- 6");
+ th.check( "a".equals(al.remove(2)) , "checking returnvalue remove -- 7");
+ th.check( "u".equals(al.remove(3)) , "checking returnvalue remove -- 8");
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 9");
+ th.check( "i".equals(al.remove(4)) , "checking returnvalue remove -- 10");
+ th.check( "c".equals(al.get(0))&& "c".equals(al.get(2)) && "n".equals(al.get(3)) && "n".equals(al.get(1)) , "checking remove ... -- 3");
+ th.check(al.size() == 4 , "checking new size -- 3");
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ th.check(al.size() == 0 , "checking new size -- 4");
+
+ al = new AcuniaAbstractSequentialListTest();
+ try {
+ al.remove(0);
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_set(){
+ th.checkPoint("set(int,java.lang.Object)java.lang.Object");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(0,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ al = buildAL();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(14,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 4" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.set(5,"b")) , "checking returnvalue of set -- 1");
+ th.check( "a".equals(al.set(0,null)), "checking returnvalue of set -- 2");
+ th.check( "b".equals(al.get(5)), "checking effect of set -- 1");
+ th.check( al.get(0) == null , "checking effect of set -- 2");
+ th.check( "b".equals(al.set(5,"a")), "checking returnvalue of set -- 3");
+ th.check( al.set(0,null) == null , "checking returnvalue of set -- 4");
+ th.check( "a".equals(al.get(5)), "checking effect of set -- 3");
+ th.check( al.get(0) == null , "checking effect of set -- 4");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ th.check(!al.contains(null),"checking empty List -- 1");
+ th.check(!al.contains(al) ,"checking empty List -- 2");
+ al = buildAL();
+ th.check( al.contains(null), "check contains ... -- 1");
+ th.check( al.contains("a") , "check contains ... -- 2");
+ th.check( al.contains("c") , "check contains ... -- 3");
+ th.check(!al.contains(new Object()), "check contains ... -- 4");
+ al.remove(6);
+ th.check( al.contains(null), "check contains ... -- 5");
+ al.remove(12);
+ th.check(!al.contains(null), "check contains ... -- 6");
+ th.check(!al.contains("b") , "check contains ... -- 7");
+ th.check(!al.contains(al) , "check contains ... -- 8");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(int)java.lang.Object");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ try {
+ al.get(0);
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true ,"caught exception -- 1");}
+ al = buildAL();
+ try {
+ al.get(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true ,"caught exception -- 2");}
+ try {
+ al.get(14);
+ th.fail("should throw an IndexOutOfBoundsException -- 3");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true ,"caught exception -- 3");}
+ th.check(al.get(0) , "a" , "checking get ... -- 1");
+ th.check(al.get(1) , "c" , "checking get ... -- 2");
+ th.check(al.get(2) , "u" , "checking get ... -- 3");
+ th.check(al.get(3) , "n" , "checking get ... -- 4");
+ th.check(al.get(4) , "i" , "checking get ... -- 5");
+ th.check(al.get(5) , "a" , "checking get ... -- 6");
+ th.check(al.get(6) , null, "checking get ... -- 7");
+ th.check(al.get(7) , "a" , "checking get ... -- 8");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_indexOf(){
+ th.checkPoint("indexOf(java.lang.Object)int");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ th.check( al.indexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.indexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+ th.check( al.indexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.indexOf("a") == 0 , "contains -- 2");
+ th.check( al.indexOf("Q") == -1, "doesn't contain -- 3");
+ al.add(9,o);
+ th.check( al.indexOf(o) == 9 , "contains -- 4");
+ th.check( al.indexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check(al.indexOf(null) == 6, "null was added to the Vector");
+ al.remove(6);
+ th.check(al.indexOf(null) == 13, "null was added twice to the Vector");
+ al.remove(13);
+ th.check(al.indexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.indexOf("c") == 1 , "contains -- 6");
+ th.check( al.indexOf("u") == 2 , "contains -- 7");
+ th.check( al.indexOf("n") == 3 , "contains -- 8");
+
+ }
+/**
+* not implemented. <br>
+* not needed --> abstract method
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_lastIndexOf(){
+ th.checkPoint("lastIndexOf(java.lang.Object)int");
+ AcuniaAbstractSequentialListTest al = new AcuniaAbstractSequentialListTest();
+ th.check( al.lastIndexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.lastIndexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+ th.check( al.lastIndexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.lastIndexOf("a") == 12 , "contains -- 2");
+ th.check( al.lastIndexOf(o) == -1, "contains -- 3");
+ al.add(9,o);
+ th.check( al.lastIndexOf(o) == 9 , "contains -- 4");
+ th.check( al.lastIndexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check( al.lastIndexOf(null) == 14, "null was added to the Vector");
+ al.remove(14);
+ th.check( al.lastIndexOf(null) == 6 , "null was added twice to the Vector");
+ al.remove(6);
+ th.check( al.lastIndexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.lastIndexOf("c") == 7 , "contains -- 6, got "+al.lastIndexOf("c"));
+ th.check( al.lastIndexOf("u") == 9 , "contains -- 7, got "+al.lastIndexOf("u"));
+ th.check( al.lastIndexOf("n") == 10, "contains -- 8, got "+al.lastIndexOf("n"));
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_toArray(){
+ th.checkPoint("toArray()[java.lang.Object");
+ AcuniaAbstractSequentialListTest v = new AcuniaAbstractSequentialListTest();
+ Object o[] = v.toArray();
+ th.check(o.length == 0 , "checking size Object array");
+ v.add("a"); v.add(null); v.add("b");
+ o = v.toArray();
+ th.check(o[0]== "a" && o[1] == null && o[2] == "b" , "checking elements -- 1");
+ th.check(o.length == 3 , "checking size Object array");
+
+ th.checkPoint("toArray([java.lang.Object)[java.lang.Object");
+ v = new AcuniaAbstractSequentialListTest();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.add("a"); v.add(null); v.add("b");
+ String sa[] = new String[5];
+ sa[3] = "deleteme"; sa[4] = "leavemealone";
+ th.check(v.toArray(sa) == sa , "sa is large enough, no new array created");
+ th.check(sa[0]=="a" && sa[1] == null && sa[2] == "b" , "checking elements -- 1"+sa[0]+", "+sa[1]+", "+sa[2]);
+ th.check(sa.length == 5 , "checking size Object array");
+ th.check(sa[3]==null && sa[4]=="leavemealone", "check other elements -- 1"+sa[3]+", "+sa[4]);
+ v = buildAL();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try { v.toArray(new Class[5]);
+ th.fail("should throw an ArrayStoreException");
+ }
+ catch (ArrayStoreException ae) { th.check(true); }
+ v.add(null);
+ String sar[];
+ sa = new String[15];
+ sar = (String[])v.toArray(sa);
+ th.check( sar == sa , "returned array is the same");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_iterator(){
+ th.checkPoint("ModCount(in)iterator");
+ AcuniaAbstractSequentialListTest al = buildAL();
+ Iterator it = al.iterator();
+ al.get(0);
+ al.contains(null);
+ al.isEmpty();
+ al.indexOf(null);
+ al.lastIndexOf(null);
+ al.size();
+ al.toArray();
+ al.toArray(new String[10]);
+ try {
+ it.next();
+ th.check(true);
+ }
+ catch(ConcurrentModificationException ioobe) { th.fail("should not throw a ConcurrentModificationException -- 2"); }
+ it = al.iterator();
+ al.add("b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.add(3,"b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 4");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.addAll(buildAL());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 5");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.addAll(2,buildAL());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 6");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.remove(2);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 8");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 9");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+* not needed since this is an abstract method ...
+*/
+ public void test_ListIterator(){
+ th.checkPoint("listIterator()java.util.ListIterator");
+ AcuniaAbstractSequentialListTest ll = new AcuniaAbstractSequentialListTest();
+ ListIterator li = ll.listIterator();
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 1");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 1"); }
+ try {
+ li.previous();
+ th.fail("should throw a NoSuchElementException -- 2");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 2"); }
+ th.check(!li.hasNext() , "no elements ... -- 1");
+ th.check(!li.hasPrevious() , "no elements ... -- 1");
+ th.check(li.nextIndex() , 0 ,"nextIndex == 0 -- 1");
+ th.check(li.previousIndex() , -1 ,"previousIndex == -1 -- 1");
+ li.add("a");
+ th.check(!li.hasNext() , "no elements ... -- 2");
+ th.check(li.hasPrevious() , "one element ... -- 2");
+ th.check(li.nextIndex() , 1 ,"nextIndex == 1 -- 2");
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 2");
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 3");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 3"); }
+ th.check("a".equals(li.previous()) , "checking previous element -- 1");
+ li.add(null);
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 3");
+ th.check(li.previous() == null , "checking previous element -- 2");
+ th.check(li.next() == null , "checking next element -- 1");
+ li.add("b");
+ th.check("a".equals(li.next()) ,"checking next element -- 2");
+ li.add("c");
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 1");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 4"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 2");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 5"); }
+ catch(Exception e) { th.fail("wrong Exception thrown"); }
+ th.check("c".equals(li.previous()) , "checking previous element -- 3");
+ li.set("new");
+ th.check("new".equals(li.next()) , "validating set");
+ li.set("not");
+ li.set("notOK");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 3");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 6"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 4");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 7"); }
+ catch(Exception e) { th.fail("wrong exception thrown"); }
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 4");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 8"); }
+ th.check("a",li.previous(),"checking on previous element");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 5");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 9"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 6");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 10"); }
+ catch(Exception e) { th.fail("wrong exception thrown"); }
+ }
+
+
+ // The following fields and methods are needed to use this class as a test
+ // implementation of AbstractSequentialList.
+
+ public LinkedList v = new LinkedList();
+
+ public AcuniaAbstractSequentialListTest(){
+ super();
+ }
+ public AcuniaAbstractSequentialListTest(List l){
+ super();
+ v.addAll(l);
+ }
+
+ public int size() {
+ return v.size();
+ }
+ public ListIterator listIterator(int idx) {
+ return v.listIterator(idx);
+ }
+}
diff --git a/gnu/testlet/java/util/AbstractSequentialList/CVS/Entries b/gnu/testlet/java/util/AbstractSequentialList/CVS/Entries
new file mode 100644
index 00000000..dc9caaa0
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSequentialList/CVS/Entries
@@ -0,0 +1,2 @@
+/AcuniaAbstractSequentialListTest.java/1.4/Mon Feb 21 15:52:49 2005//
+D
diff --git a/gnu/testlet/java/util/AbstractSequentialList/CVS/Repository b/gnu/testlet/java/util/AbstractSequentialList/CVS/Repository
new file mode 100644
index 00000000..1641dc08
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSequentialList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/AbstractSequentialList
diff --git a/gnu/testlet/java/util/AbstractSequentialList/CVS/Root b/gnu/testlet/java/util/AbstractSequentialList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSequentialList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java b/gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java
new file mode 100644
index 00000000..5be39658
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSet/AcuniaAbstractSetTest.java
@@ -0,0 +1,112 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.AbstractSet;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.AbstractSet <br>
+*
+*/
+public class AcuniaAbstractSetTest extends AbstractSet implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_equals();
+ test_hashCode();
+ }
+
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ AcuniaAbstractSetTest xas1 = new AcuniaAbstractSetTest();
+ AcuniaAbstractSetTest xas2 = new AcuniaAbstractSetTest();
+ th.check( xas1.equals(xas2) , "checking equality -- 1");
+ th.check(!xas1.equals(null) , "checking equality -- 2");
+ th.check(!xas1.equals(new Object()) , "checking equality -- 3");
+ th.check( xas1.equals(xas1) , "checking equality -- 4");
+ xas1.v.add(null);
+ xas1.v.add("a");
+ xas2.v.add("b");
+ xas2.v.add(null);
+ xas2.v.add("a");
+ xas1.v.add("b");
+ th.check( xas1.equals(xas2) , "checking equality -- 5");
+ th.check( xas1.equals(xas1) , "checking equality -- 6");
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ AcuniaAbstractSetTest xas = new AcuniaAbstractSetTest();
+ th.check(xas.hashCode() == 0 ,"checking hc-algorithm -- 1");
+ xas.v.add(null);
+ th.check(xas.hashCode() == 0 ,"checking hc-algorithm -- 2");
+ xas.v.add("a");
+ int hash = "a".hashCode();
+ th.check(xas.hashCode() == hash ,"checking hc-algorithm -- 3");
+ hash += "b".hashCode();
+ xas.v.add("b");
+ th.check(xas.hashCode() == hash ,"checking hc-algorithm -- 4");
+ hash += "c".hashCode();
+ xas.v.add("c");
+ th.check(xas.hashCode() == hash ,"checking hc-algorithm -- 5");
+ hash += "d".hashCode();
+ xas.v.add("d");
+ th.check(xas.hashCode() == hash ,"checking hc-algorithm -- 6");
+ }
+
+// The following methods aand field are needed to use this class as
+// Set implementation.
+
+ public Vector v = new Vector();
+
+ public AcuniaAbstractSetTest(){
+ super();
+ }
+
+ public int size() {
+ return v.size();
+ }
+
+ public Iterator iterator() {
+ return v.iterator();
+ }
+
+}
diff --git a/gnu/testlet/java/util/AbstractSet/CVS/Entries b/gnu/testlet/java/util/AbstractSet/CVS/Entries
new file mode 100644
index 00000000..744bdfdc
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSet/CVS/Entries
@@ -0,0 +1,2 @@
+/AcuniaAbstractSetTest.java/1.3/Mon Feb 21 15:52:50 2005//
+D
diff --git a/gnu/testlet/java/util/AbstractSet/CVS/Repository b/gnu/testlet/java/util/AbstractSet/CVS/Repository
new file mode 100644
index 00000000..e7fca52c
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/AbstractSet
diff --git a/gnu/testlet/java/util/AbstractSet/CVS/Root b/gnu/testlet/java/util/AbstractSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/AbstractSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java b/gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java
new file mode 100644
index 00000000..b987fc18
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/AcuniaArrayListTest.java
@@ -0,0 +1,690 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.ArrayList;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for ArrayList <br>
+* <br>
+* It might be usefull to find out how the capacity evolves <br>
+* --> this must be done with reflection ... (not done yet)
+*/
+public class AcuniaArrayListTest extends ArrayList implements Testlet
+{
+ protected TestHarness th;
+
+ public AcuniaArrayListTest() { /* Empty constructor needed for TestLet */}
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_ArrayList();
+ test_get();
+ test_ensureCapacity();
+ test_trimToSize();
+ test_add();
+ test_addAll();
+ test_clear();
+ test_remove();
+ test_set();
+ test_contains();
+ test_isEmpty();
+ test_indexOf();
+ test_size();
+ test_lastIndexOf();
+ test_toArray();
+ test_clone();
+ // extra
+ test_removeRange();
+ test_MC_iterator();
+
+ }
+
+ protected ArrayList buildAL() {
+ Vector v = new Vector();
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ return new ArrayList(v);
+
+ }
+
+
+/**
+* not implemented. <br>
+* only ArrayList(Collection c) is tested
+*/
+ public void test_ArrayList(){
+ th.checkPoint("arrayList(java.util.Collection)");
+ Vector v = new Vector();
+ ArrayList al = new ArrayList(v);
+ th.check( al.isEmpty() , "no elements added");
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ al = new ArrayList(v);
+ th.check(v.equals(al) , "check if everything is OK");
+ try {
+ new ArrayList(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException npe) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(int)java.lang.Object");
+ ArrayList al = new ArrayList();
+ try {
+ al.get(0);
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ al.get(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ al = buildAL();
+ try {
+ al.get(14);
+ th.fail("should throw an IndexOutOfBoundsException -- 3");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ al.get(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 4");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check("a".equals(al.get(0)) , "checking returnvalue -- 1");
+ th.check("c".equals(al.get(1)) , "checking returnvalue -- 2");
+ th.check("u".equals(al.get(2)) , "checking returnvalue -- 3");
+ th.check("a".equals(al.get(5)) , "checking returnvalue -- 4");
+ th.check("a".equals(al.get(7)) , "checking returnvalue -- 5");
+ th.check("c".equals(al.get(8)) , "checking returnvalue -- 6");
+ th.check("u".equals(al.get(9)) , "checking returnvalue -- 7");
+ th.check("a".equals(al.get(12)), "checking returnvalue -- 8");
+ th.check( null == al.get(6) , "checking returnvalue -- 9");
+ th.check( null == al.get(13) , "checking returnvalue -- 10");
+ }
+
+/**
+* implemented. <br>
+* => might need extra testing --> using reflection ...
+*/
+ public void test_ensureCapacity(){
+ th.checkPoint("ensureCapacity(int)");
+ ArrayList al = buildAL();
+ al.ensureCapacity(4);
+ th.check(al.size() == 14 , "make sure the list cannot be downsized !");
+
+ }
+/**
+* not implemented. <br>
+*
+*/
+ public void test_trimToSize(){
+ th.checkPoint("trimToSize()");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_add(){
+ th.checkPoint("add(int,java.lang.Object)void");
+ ArrayList al = new ArrayList();
+ try {
+ al.add(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ al.add(1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ al.add(0,"a");
+ al.add(1,"c");
+ al.add(2,"u");
+ al.add(1,null);
+ th.check("a".equals(al.get(0))&& null==al.get(1) && "c".equals(al.get(2)) && "u".equals(al.get(3)) , "checking add ...");
+
+ th.checkPoint("add(java.lang.Object)boolean");
+ al = new ArrayList();
+ th.check(al.add("a") , "checking return value -- 1");
+ th.check(al.add("c") , "checking return value -- 2");
+ th.check(al.add("u") , "checking return value -- 3");
+ th.check(al.add("n") , "checking return value -- 4");
+ th.check(al.add("i") , "checking return value -- 5");
+ th.check(al.add("a") , "checking return value -- 6");
+ th.check(al.add(null) , "checking return value -- 7");
+ th.check(al.add("end") , "checking return value -- 8");
+ th.check("a".equals(al.get(0))&& null==al.get(6) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking add ... -- 1");
+ th.check("a".equals(al.get(5))&& "end".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking add ... -- 2");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ ArrayList al =new ArrayList();
+ try { al.addAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ Collection c = (Collection) al;
+ th.check(!al.addAll(c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ th.check(al.addAll(c) ,"checking returnvalue -- 2");
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(14)=="a" && al.get(15)=="b" && al.get(16)=="c", "checking added on right positions");
+
+ th.checkPoint("addAll(int,java.util.Collection)boolean");
+ al =new ArrayList();
+ c = (Collection) al;
+ th.check(!al.addAll(0,c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ try { al.addAll(-1,c);
+ th.fail("should throw exception -- 1");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { al.addAll(15,c);
+ th.fail("should throw exception -- 2");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { th.check(al.addAll(11,c),"checking returnvalue -- 2"); }
+ catch (ArrayIndexOutOfBoundsException ae) { th.fail("shouldn't throw exception -- 1"); }
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(11)=="a" && al.get(12)=="b" && al.get(13)=="c", "checking added on right positions -- 1");
+ th.check(al.addAll(1,c),"checking returnvalue -- 3");
+ th.check(al.get(1)=="a" && al.get(2)=="b" && al.get(3)=="c", "checking added on right positions -- 2");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ ArrayList al = new ArrayList();
+ al.clear();
+ al = buildAL();
+ al.clear();
+ th.check(al.size()== 0 && al.isEmpty() , "list is empty ...");
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(int)java.lang.Object");
+ ArrayList al = buildAL();
+ try {
+ al.remove(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.remove(14);
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 1");
+ th.check("a".equals(al.get(0))&& null==al.get(5) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking remove ... -- 1");
+ th.check("a".equals(al.get(6))&& "c".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking remove ... -- 2");
+ th.check(al.size() == 13 , "checking new size -- 1");
+ th.check( al.remove(5) == null , "checking returnvalue remove -- 2");
+ th.check(al.size() == 12 , "checking new size -- 2");
+ th.check( al.remove(11) == null, "checking returnvalue remove -- 3");
+ th.check( "a".equals(al.remove(0)) , "checking returnvalue remove -- 4");
+ th.check( "u".equals(al.remove(1)) , "checking returnvalue remove -- 5");
+ th.check( "i".equals(al.remove(2)) , "checking returnvalue remove -- 6");
+ th.check( "a".equals(al.remove(2)) , "checking returnvalue remove -- 7");
+ th.check( "u".equals(al.remove(3)) , "checking returnvalue remove -- 8");
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 9");
+ th.check( "i".equals(al.remove(4)) , "checking returnvalue remove -- 10");
+ th.check( "c".equals(al.get(0))&& "c".equals(al.get(2)) && "n".equals(al.get(3)) && "n".equals(al.get(1)) , "checking remove ... -- 3");
+ th.check(al.size() == 4 , "checking new size -- 3");
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ th.check(al.size() == 0 , "checking new size -- 4");
+
+ al = new ArrayList();
+ try {
+ al.remove(0);
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_set(){
+ th.checkPoint("set(int,java.lang.Object)java.lang.Object");
+ ArrayList al = new ArrayList();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(0,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ al = buildAL();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(14,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 4" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.set(5,"b")) , "checking returnvalue of set -- 1");
+ th.check( "a".equals(al.set(0,null)), "checking returnvalue of set -- 2");
+ th.check( "b".equals(al.get(5)), "checking effect of set -- 1");
+ th.check( al.get(0) == null , "checking effect of set -- 2");
+ th.check( "b".equals(al.set(5,"a")), "checking returnvalue of set -- 3");
+ th.check( al.set(0,null) == null , "checking returnvalue of set -- 4");
+ th.check( "a".equals(al.get(5)), "checking effect of set -- 3");
+ th.check( al.get(0) == null , "checking effect of set -- 4");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ ArrayList al = new ArrayList();
+ th.check(!al.contains(null),"checking empty List -- 1");
+ th.check(!al.contains(al) ,"checking empty List -- 2");
+ al = buildAL();
+ th.check( al.contains(null), "check contains ... -- 1");
+ th.check( al.contains("a") , "check contains ... -- 2");
+ th.check( al.contains("c") , "check contains ... -- 3");
+ th.check(!al.contains(this), "check contains ... -- 4");
+ al.remove(6);
+ th.check( al.contains(null), "check contains ... -- 5");
+ al.remove(12);
+ th.check(!al.contains(null), "check contains ... -- 6");
+ th.check(!al.contains("b") , "check contains ... -- 7");
+ th.check(!al.contains(al) , "check contains ... -- 8");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ ArrayList al = new ArrayList();
+ th.check(al.isEmpty() , "checking returnvalue -- 1");
+ al.add("A");
+ th.check(!al.isEmpty() , "checking returnvalue -- 2");
+ al.remove(0);
+ th.check(al.isEmpty() , "checking returnvalue -- 3");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_indexOf(){
+ th.checkPoint("indexOf(java.lang.Object)int");
+ ArrayList al = new ArrayList();
+ th.check( al.indexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.indexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+ th.check( al.indexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.indexOf("a") == 0 , "contains -- 2");
+ th.check( al.indexOf(o) == -1, "contains -- 3");
+ al.add(9,o);
+ th.check( al.indexOf(o) == 9 , "contains -- 4");
+ th.check( al.indexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check(al.indexOf(null) == 6, "null was added to the Vector");
+ al.remove(6);
+ th.check(al.indexOf(null) == 13, "null was added twice to the Vector");
+ al.remove(13);
+ th.check(al.indexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.indexOf("c") == 1 , "contains -- 6");
+ th.check( al.indexOf("u") == 2 , "contains -- 7");
+ th.check( al.indexOf("n") == 3 , "contains -- 8");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ ArrayList al = new ArrayList();
+ th.check( al.size() == 0 , "check on size -- 1");
+ al.addAll(buildAL());
+ th.check( al.size() == 14 , "check on size -- 1");
+ al.remove(5);
+ th.check( al.size() == 13 , "check on size -- 1");
+ al.add(4,"G");
+ th.check( al.size() == 14 , "check on size -- 1");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_lastIndexOf(){
+ th.checkPoint("lastIndexOf(java.lang.Object)int");
+ ArrayList al = new ArrayList();
+ th.check( al.lastIndexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.lastIndexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+ th.check( al.lastIndexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.lastIndexOf("a") == 12 , "contains -- 2");
+ th.check( al.lastIndexOf(o) == -1, "contains -- 3");
+ al.add(9,o);
+ th.check( al.lastIndexOf(o) == 9 , "contains -- 4");
+ th.check( al.lastIndexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check( al.lastIndexOf(null) == 14, "null was added to the Vector");
+ al.remove(14);
+ th.check( al.lastIndexOf(null) == 6 , "null was added twice to the Vector");
+ al.remove(6);
+ th.check( al.lastIndexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.lastIndexOf("c") == 7 , "contains -- 6, got "+al.lastIndexOf("c"));
+ th.check( al.lastIndexOf("u") == 9 , "contains -- 7, got "+al.lastIndexOf("u"));
+ th.check( al.lastIndexOf("n") == 10, "contains -- 8, got "+al.lastIndexOf("n"));
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_toArray(){
+ th.checkPoint("toArray()[java.lang.Object");
+ ArrayList v = new ArrayList();
+ Object o[] = v.toArray();
+ th.check(o.length == 0 , "checking size Object array");
+ v.add("a"); v.add(null); v.add("b");
+ o = v.toArray();
+ th.check(o[0]== "a" && o[1] == null && o[2] == "b" , "checking elements -- 1");
+ th.check(o.length == 3 , "checking size Object array");
+
+ th.checkPoint("toArray([java.lang.Object)[java.lang.Object");
+ v = new ArrayList();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.add("a"); v.add(null); v.add("b");
+ String sa[] = new String[5];
+ sa[3] = "deleteme"; sa[4] = "leavemealone";
+ th.check(v.toArray(sa) == sa , "sa is large enough, no new array created");
+ th.check(sa[0]=="a" && sa[1] == null && sa[2] == "b" , "checking elements -- 1"+sa[0]+", "+sa[1]+", "+sa[2]);
+ th.check(sa.length == 5 , "checking size Object array");
+ th.check(sa[3]==null && sa[4]=="leavemealone", "check other elements -- 1"+sa[3]+", "+sa[4]);
+ v = buildAL();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try { v.toArray(new Class[5]);
+ th.fail("should throw an ArrayStoreException");
+ }
+ catch (ArrayStoreException ae) { th.check(true); }
+ v.add(null);
+ String sar[];
+ sa = new String[15];
+ sar = (String[])v.toArray(sa);
+ th.check( sar == sa , "returned array is the same");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ ArrayList cal,al = new ArrayList();
+ cal = (ArrayList)al.clone();
+ th.check(cal.size() == 0, "checking size -- 1");
+ al.add("a") ;al.add("b") ;al.add("c"); al.add(null);
+ cal = (ArrayList)al.clone();
+ th.check(cal.size() == al.size(), "checking size -- 2");
+ th.check( al != cal , "Objects are not the same");
+ th.check( al.equals(cal) , "cloned list is equal");
+ al.add("a");
+ th.check(cal.size() == 4, "changes in one object doen't affect the other -- 2");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_removeRange(){
+ th.checkPoint("removeRange(int,int)void");
+ AcuniaArrayListTest xal = new AcuniaArrayListTest(buildAL());
+ ArrayList al = buildAL();
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(0,-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 1");
+
+ try {
+ xal.removeRange(-1,2);
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 2");
+ try {
+ xal.removeRange(3,2);
+ th.fail("should throw an IndexOutOfBoundsException -- 3");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ th.check(al.equals(xal) , "ArrayList must not be changed -- 3");
+ }
+ catch (Exception e) { th.debug("bad operations messed up ArrayList"); }
+ xal = new AcuniaArrayListTest(buildAL());
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(3,15);
+ th.fail("should throw an IndexOutOfBoundsException -- 4");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 4");
+ xal = new AcuniaArrayListTest(buildAL());
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(15,13);
+ th.fail("should throw an IndexOutOfBoundsException -- 5");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 5");
+ }
+ catch (Exception e) { th.debug("bad operations messed up ArrayList"); }
+ xal = new AcuniaArrayListTest(buildAL());
+ xal.ensureCapacity(40);
+ xal.removeRange(14,14);
+ th.check(xal.size() == 14 , "no elements should have been removed -- 6, size = "+xal.size());
+ xal.removeRange(10,14);
+ th.check(xal.size() == 10 , "4 elements should have been removed");
+ th.check( "a".equals(xal.get(0)) && "a".equals(xal.get(5)) && "a".equals(xal.get(7)) ,"check contents -- 1");
+ xal.removeRange(2,7);
+ th.check(xal.size() == 5 , "5 elements should have been removed");
+ th.check( "a".equals(xal.get(0)) && "c".equals(xal.get(1)) && "a".equals(xal.get(2))
+ && "c".equals(xal.get(3)) && "u".equals(xal.get(4)) ,"check contents -- 2");
+ xal.removeRange(0,2);
+ th.check( "a".equals(xal.get(0)) && "c".equals(xal.get(1)) && "u".equals(xal.get(2)) ,"check contents -- 3");
+ th.check(xal.size() == 3 , "2 elements should have been removed");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_MC_iterator(){
+ th.checkPoint("ModCount(in)iterator");
+ AcuniaArrayListTest xal = new AcuniaArrayListTest(buildAL());
+ Iterator it = xal.iterator();
+ xal.removeRange(1,10);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 1");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ ArrayList al = buildAL();
+ it = al.iterator();
+ al.trimToSize();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ } catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.ensureCapacity(25);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ } catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.get(0);
+ al.contains(null);
+ al.isEmpty();
+ al.indexOf(null);
+ al.lastIndexOf(null);
+ al.size();
+ al.toArray();
+ al.toArray(new String[10]);
+ al.clone();
+ try {
+ it.next();
+ th.check(true);
+ }
+ catch(ConcurrentModificationException ioobe) { th.fail("should not throw a ConcurrentModificationException -- 2"); }
+
+ it = al.iterator();
+ al.add("b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.add(3,"b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 4");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.addAll(xal);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 5");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.addAll(2,xal);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 6");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.remove(2);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 8");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+
+ it = al.iterator();
+ al.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 9");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ }
+
+// The following fields and methods are used in tests that need an ArrayList.
+
+ private boolean didRemoveRange=false;
+ private int from = -1;
+ private int to = -1;
+ public AcuniaArrayListTest(Collection c){
+ super(c);
+ }
+
+ public void removeRange(int fidx, int tidx) {
+ didRemoveRange=true;
+ to = tidx;
+ from = fidx;
+ super.removeRange(fidx, tidx);
+ }
+
+ public boolean get_dRR() {
+ return didRemoveRange;
+ }
+ public void set_dRR(boolean b) {
+ didRemoveRange = b;
+ }
+ public int get_to() {
+ return to;
+ }
+ public int get_from() {
+ return from;
+ }
+
+}
diff --git a/gnu/testlet/java/util/ArrayList/ArrayList.ser b/gnu/testlet/java/util/ArrayList/ArrayList.ser
new file mode 100644
index 00000000..86f323eb
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/ArrayList.ser
Binary files differ
diff --git a/gnu/testlet/java/util/ArrayList/CVS/Entries b/gnu/testlet/java/util/ArrayList/CVS/Entries
new file mode 100644
index 00000000..b4f7f9b7
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/CVS/Entries
@@ -0,0 +1,5 @@
+/AcuniaArrayListTest.java/1.5/Fri Jul 3 13:41:28 2009//
+/ArrayList.ser/1.1/Sun Nov 3 19:16:44 2002/-kb/
+/serial.java/1.2/Mon Feb 21 15:52:50 2005//
+/subList.java/1.2/Thu Apr 28 07:41:37 2005//
+D
diff --git a/gnu/testlet/java/util/ArrayList/CVS/Repository b/gnu/testlet/java/util/ArrayList/CVS/Repository
new file mode 100644
index 00000000..c44c1ad0
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/ArrayList
diff --git a/gnu/testlet/java/util/ArrayList/CVS/Root b/gnu/testlet/java/util/ArrayList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/ArrayList/serial.java b/gnu/testlet/java/util/ArrayList/serial.java
new file mode 100644
index 00000000..6cc161ed
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/serial.java
@@ -0,0 +1,118 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+ Written by Mark Wielaard (mark@klomp.org)
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.ArrayList;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Tests serializable form. New .ser files can be generated by calling
+ * the main() method.
+ */
+public class serial implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ // Self test
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ ArrayList[] array = getArrayListArray();
+
+ oos.writeObject(array);
+ oos.close();
+
+ byte[] bs = baos.toByteArray();
+ ByteArrayInputStream bois = new ByteArrayInputStream(bs);
+ ObjectInputStream ois = new ObjectInputStream(bois);
+ Object o = ois.readObject();
+ array = (ArrayList[]) o;
+ harness.check(Arrays.equals(array, getArrayListArray()));
+
+ ois.close();
+
+ // Pre generated test
+ String ser = "gnu#testlet#java#util#ArrayList#ArrayList.ser";
+ InputStream is = harness.getResourceStream(ser);
+ ois = new ObjectInputStream(is);
+ o = ois.readObject();
+ array = (ArrayList[]) o;
+ harness.check(Arrays.equals(array, getArrayListArray()));
+
+ ois.close();
+ is.close();
+ }
+ catch (Throwable t)
+ {
+ harness.check(false);
+ harness.debug(t);
+ }
+ }
+
+ /**
+ * Creates an array of ArrayLists.
+ */
+ static ArrayList[] getArrayListArray() {
+ ArrayList[] array = new ArrayList[5];
+
+ ArrayList al = new ArrayList();
+
+ ArrayList empty = (ArrayList) al.clone();
+ array[0] = empty;
+ array[4] = empty;
+
+ al.add(new Integer(1));
+
+ ArrayList one = (ArrayList) al.clone();
+ array[1] = one;
+
+ for (int i = 2; i <= 32; i++)
+ al.add(new Integer(i));
+ ArrayList list32 = (ArrayList) al.clone();
+ array[2] = list32;
+
+ for (int i = 0; i < 20; i++)
+ al.remove(4);
+ array[3] = al;
+
+ return array;
+ }
+
+ public static void main(String[] args) throws Exception
+ {
+ String filename = "ArrayListSerial.ser";
+ OutputStream os = new FileOutputStream(filename);
+ ObjectOutputStream oos = new ObjectOutputStream(os);
+ ArrayList[] array = getArrayListArray();
+
+ oos.writeObject(array);
+ oos.close();
+ os.close();
+
+ }
+}
diff --git a/gnu/testlet/java/util/ArrayList/subList.java b/gnu/testlet/java/util/ArrayList/subList.java
new file mode 100644
index 00000000..d0f6fb50
--- /dev/null
+++ b/gnu/testlet/java/util/ArrayList/subList.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: ../List/subList
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.ArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+
+/**
+ * Some tests for the subList() method in the {@link ArrayList} class.
+ */
+public class subList implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ gnu.testlet.java.util.List.subList.testAll(ArrayList.class, harness);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Arrays/CVS/Entries b/gnu/testlet/java/util/Arrays/CVS/Entries
new file mode 100644
index 00000000..f118b623
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/CVS/Entries
@@ -0,0 +1,6 @@
+/asList.java/1.1/Fri Aug 27 21:57:50 2004//
+/binarySearch.java/1.2/Wed Jan 3 20:57:33 2007//
+/equals.java/1.2/Fri Aug 27 21:57:50 2004//
+/fill.java/1.1/Fri Aug 27 21:57:50 2004//
+/sort.java/1.3/Fri Aug 27 21:57:50 2004//
+D
diff --git a/gnu/testlet/java/util/Arrays/CVS/Repository b/gnu/testlet/java/util/Arrays/CVS/Repository
new file mode 100644
index 00000000..1dd4f33d
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Arrays
diff --git a/gnu/testlet/java/util/Arrays/CVS/Root b/gnu/testlet/java/util/Arrays/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Arrays/asList.java b/gnu/testlet/java/util/Arrays/asList.java
new file mode 100644
index 00000000..8421f040
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/asList.java
@@ -0,0 +1,120 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.util.Arrays;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import java.util.RandomAccess;
+
+/**
+ * Some tests for the asList() method in the {@link Arrays} class.
+ */
+public class asList implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Object[] a1 = new Object[] {"1", "2", "3"};
+ List l1 = Arrays.asList(a1);
+
+ // check that the list is the same as the array...
+ harness.check(l1.size() == 3);
+ harness.check(l1.get(0).equals("1"));
+ harness.check(l1.get(1).equals("2"));
+ harness.check(l1.get(2).equals("3"));
+ harness.check(l1 instanceof RandomAccess);
+ harness.check(l1 instanceof Serializable);
+
+ // a change to the list updates the array...
+ l1.set(1, "99");
+ harness.check(a1[1].equals("99"));
+
+ // a change to the array updates the list...
+ a1[1] = "100";
+ harness.check(l1.get(1).equals("100"));
+
+ // check unsupported operations
+ boolean pass = false;
+ try
+ {
+ l1.add("new item");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ l1.clear();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ try
+ {
+ l1.remove(0);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ try
+ {
+ l1.remove("1");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null argument
+ pass = false;
+ try
+ {
+ Arrays.asList(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/Arrays/binarySearch.java b/gnu/testlet/java/util/Arrays/binarySearch.java
new file mode 100644
index 00000000..0f7bb52f
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/binarySearch.java
@@ -0,0 +1,286 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.util.Arrays;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+/**
+* Some tests for the binarySearch() method in the {@link Arrays} class.
+*/
+public class binarySearch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ testByte(harness);
+ testChar(harness);
+ testDouble(harness);
+ testFloat(harness);
+ testInt(harness);
+ testLong(harness);
+ testObject(harness);
+ testShort(harness);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(byte[], byte)");
+ byte[] b1 = new byte[] {1, 2, 3};
+ harness.check(Arrays.binarySearch(b1, (byte) 0) == -1);
+ harness.check(Arrays.binarySearch(b1, (byte) 1) == 0);
+ harness.check(Arrays.binarySearch(b1, (byte) 2) == 1);
+ harness.check(Arrays.binarySearch(b1, (byte) 3) == 2);
+ harness.check(Arrays.binarySearch(b1, (byte) 4) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((byte[]) null, (byte) 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new byte[0];
+ harness.check(Arrays.binarySearch(b1, (byte)0), -1);
+ }
+
+ private void testChar(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(char[], char)");
+ char[] b1 = new char[] {'1', '2', '3'};
+ harness.check(Arrays.binarySearch(b1, '0') == -1);
+ harness.check(Arrays.binarySearch(b1, '1') == 0);
+ harness.check(Arrays.binarySearch(b1, '2') == 1);
+ harness.check(Arrays.binarySearch(b1, '3') == 2);
+ harness.check(Arrays.binarySearch(b1, '4') == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((char[]) null, '0');
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new char[0];
+ harness.check(Arrays.binarySearch(b1, '0'), -1);
+ }
+
+ private void testDouble(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(double[], double)");
+ double[] b1 = new double[] {1.0, 2.0, 3.0};
+ harness.check(Arrays.binarySearch(b1, 0.0) == -1);
+ harness.check(Arrays.binarySearch(b1, 1.0) == 0);
+ harness.check(Arrays.binarySearch(b1, 2.0) == 1);
+ harness.check(Arrays.binarySearch(b1, 3.0) == 2);
+ harness.check(Arrays.binarySearch(b1, 4.0) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((double[]) null, 0.0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new double[0];
+ harness.check(Arrays.binarySearch(b1, 0.0), -1);
+ }
+
+ private void testFloat(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(float[], float)");
+ float[] b1 = new float[] {1.0f, 2.0f, 3.0f};
+ harness.check(Arrays.binarySearch(b1, 0.0f) == -1);
+ harness.check(Arrays.binarySearch(b1, 1.0f) == 0);
+ harness.check(Arrays.binarySearch(b1, 2.0f) == 1);
+ harness.check(Arrays.binarySearch(b1, 3.0f) == 2);
+ harness.check(Arrays.binarySearch(b1, 4.0f) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((float[]) null, 0.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new float[0];
+ harness.check(Arrays.binarySearch(b1, 0.0f), -1);
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(int[], int)");
+ int[] b1 = new int[] {1, 2, 3};
+ harness.check(Arrays.binarySearch(b1, 0) == -1);
+ harness.check(Arrays.binarySearch(b1, 1) == 0);
+ harness.check(Arrays.binarySearch(b1, 2) == 1);
+ harness.check(Arrays.binarySearch(b1, 3) == 2);
+ harness.check(Arrays.binarySearch(b1, 4) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((int[]) null, 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new int[0];
+ harness.check(Arrays.binarySearch(b1, 0), -1);
+ }
+
+ private void testLong(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(long[], long)");
+ long[] b1 = new long[] {1, 2, 3};
+ harness.check(Arrays.binarySearch(b1, 0) == -1);
+ harness.check(Arrays.binarySearch(b1, 1) == 0);
+ harness.check(Arrays.binarySearch(b1, 2) == 1);
+ harness.check(Arrays.binarySearch(b1, 3) == 2);
+ harness.check(Arrays.binarySearch(b1, 4) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((long[]) null, 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new long[0];
+ harness.check(Arrays.binarySearch(b1, 0), -1);
+ }
+
+ private void testObject(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(Object[], Object)");
+ Object[] b1 = new Object[] {"1", "2", "3"};
+ harness.check(Arrays.binarySearch(b1, "0") == -1);
+ harness.check(Arrays.binarySearch(b1, "1") == 0);
+ harness.check(Arrays.binarySearch(b1, "2") == 1);
+ harness.check(Arrays.binarySearch(b1, "3") == 2);
+ harness.check(Arrays.binarySearch(b1, "4") == -4);
+
+ // searching for null throws NullPointerException
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch(b1, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.binarySearch((Object[]) null, "0");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.binarySearch(Object[], Object, Comparator)");
+ harness.check(Arrays.binarySearch(b1, "0", (Comparator) null) == -1);
+ harness.check(Arrays.binarySearch(b1, "1", (Comparator) null) == 0);
+ harness.check(Arrays.binarySearch(b1, "2", (Comparator) null) == 1);
+ harness.check(Arrays.binarySearch(b1, "3", (Comparator) null) == 2);
+ harness.check(Arrays.binarySearch(b1, "4", (Comparator) null) == -4);
+
+ Arrays.sort(b1, new ReverseComparator());
+ harness.check(Arrays.binarySearch(b1, "0", new ReverseComparator()) == -4);
+ harness.check(Arrays.binarySearch(b1, "1", new ReverseComparator()) == 2);
+ harness.check(Arrays.binarySearch(b1, "2", new ReverseComparator()) == 1);
+ harness.check(Arrays.binarySearch(b1, "3", new ReverseComparator()) == 0);
+ harness.check(Arrays.binarySearch(b1, "4", new ReverseComparator()) == -1);
+
+ b1 = new Object[0];
+ harness.check(Arrays.binarySearch(b1, ""), -1);
+ }
+
+ private void testShort(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.binarySearch(short[], short)");
+ short[] b1 = new short[] {1, 2, 3};
+ harness.check(Arrays.binarySearch(b1, (short) 0) == -1);
+ harness.check(Arrays.binarySearch(b1, (short) 1) == 0);
+ harness.check(Arrays.binarySearch(b1, (short) 2) == 1);
+ harness.check(Arrays.binarySearch(b1, (short) 3) == 2);
+ harness.check(Arrays.binarySearch(b1, (short) 4) == -4);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.binarySearch((short[]) null, (short) 0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b1 = new short[0];
+ harness.check(Arrays.binarySearch(b1, (short)0), -1);
+ }
+
+ static class ReverseComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ int i1 = Integer.valueOf(o1.toString()).intValue();
+ int i2 = Integer.valueOf(o2.toString()).intValue();
+ return (i2 - i1);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Arrays/equals.java b/gnu/testlet/java/util/Arrays/equals.java
new file mode 100644
index 00000000..69703075
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/equals.java
@@ -0,0 +1,206 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Daniel Bonniot <bonniot@users.sf.net>
+// 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Arrays;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+public class equals implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ final String[] a1 = { "", null };
+ final String[] a2 = { "", null };
+
+ harness.check(Arrays.equals(a1, a2));
+
+ // added by David Gilbert
+ testBoolean(harness);
+ testByte(harness);
+ testChar(harness);
+ testDouble(harness);
+ testFloat(harness);
+ testInt(harness);
+ testLong(harness);
+ testObject(harness);
+ testShort(harness);
+ }
+
+ private void testBoolean(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(boolean[], boolean[]");
+ harness.check(Arrays.equals((boolean[]) null, (boolean[]) null));
+ boolean[] b1 = new boolean[] {true, false};
+ boolean[] b2 = new boolean[] {true, false};
+ boolean[] b3 = new boolean[] {false, true};
+ boolean[] b4 = new boolean[] {true};
+ boolean[] b5 = new boolean[] {true, false, false};
+ boolean[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(byte[], byte[]");
+ harness.check(Arrays.equals((byte[]) null, (byte[]) null));
+ byte[] b1 = new byte[] {1, 0};
+ byte[] b2 = new byte[] {1, 0};
+ byte[] b3 = new byte[] {0, 1};
+ byte[] b4 = new byte[] {1};
+ byte[] b5 = new byte[] {1, 0, 0};
+ byte[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testChar(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(char[], char[]");
+ harness.check(Arrays.equals((char[]) null, (char[]) null));
+ char[] b1 = new char[] {'1', '0'};
+ char[] b2 = new char[] {'1', '0'};
+ char[] b3 = new char[] {'0', '1'};
+ char[] b4 = new char[] {'1'};
+ char[] b5 = new char[] {'1', '0', '0'};
+ char[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testDouble(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(double[], double[]");
+ harness.check(Arrays.equals((double[]) null, (double[]) null));
+ double[] b1 = new double[] {1, 0};
+ double[] b2 = new double[] {1, 0};
+ double[] b3 = new double[] {0, 1};
+ double[] b4 = new double[] {1};
+ double[] b5 = new double[] {1, 0, 0};
+ double[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testFloat(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(float[], float[]");
+ harness.check(Arrays.equals((float[]) null, (float[]) null));
+ float[] b1 = new float[] {1, 0};
+ float[] b2 = new float[] {1, 0};
+ float[] b3 = new float[] {0, 1};
+ float[] b4 = new float[] {1};
+ float[] b5 = new float[] {1, 0, 0};
+ float[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(int[], int[]");
+ harness.check(Arrays.equals((int[]) null, (int[]) null));
+ int[] b1 = new int[] {1, 0};
+ int[] b2 = new int[] {1, 0};
+ int[] b3 = new int[] {0, 1};
+ int[] b4 = new int[] {1};
+ int[] b5 = new int[] {1, 0, 0};
+ int[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testLong(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(long[], long[]");
+ harness.check(Arrays.equals((long[]) null, (long[]) null));
+ long[] b1 = new long[] {1, 0};
+ long[] b2 = new long[] {1, 0};
+ long[] b3 = new long[] {0, 1};
+ long[] b4 = new long[] {1};
+ long[] b5 = new long[] {1, 0, 0};
+ long[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+ private void testObject(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(Object[], Object[]");
+ harness.check(Arrays.equals((Object[]) null, (Object[]) null));
+ Object[] b1 = new Object[] {"1", "0", null};
+ Object[] b2 = new Object[] {"1", "0", null};
+ Object[] b3 = new Object[] {"0", "1"};
+ Object[] b4 = new Object[] {"1"};
+ Object[] b5 = new Object[] {"1", "0", "0"};
+ Object[] b6 = new Object[] {"1", "0", null, "0"};
+ Object[] b7 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ harness.check(!Arrays.equals(b1, b7));
+ }
+
+ private void testShort(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.equals(short[], short[]");
+ harness.check(Arrays.equals((short[]) null, (short[]) null));
+ short[] b1 = new short[] {1, 0};
+ short[] b2 = new short[] {1, 0};
+ short[] b3 = new short[] {0, 1};
+ short[] b4 = new short[] {1};
+ short[] b5 = new short[] {1, 0, 0};
+ short[] b6 = null;
+ harness.check(Arrays.equals(b1, b2));
+ harness.check(!Arrays.equals(b1, b3));
+ harness.check(!Arrays.equals(b1, b4));
+ harness.check(!Arrays.equals(b1, b5));
+ harness.check(!Arrays.equals(b1, b6));
+ }
+
+}
diff --git a/gnu/testlet/java/util/Arrays/fill.java b/gnu/testlet/java/util/Arrays/fill.java
new file mode 100644
index 00000000..06ad6058
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/fill.java
@@ -0,0 +1,728 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.util.Arrays;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+public class fill implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ testBoolean(harness);
+ testByte(harness);
+ testChar(harness);
+ testDouble(harness);
+ testFloat(harness);
+ testInt(harness);
+ testLong(harness);
+ testObject(harness);
+ testShort(harness);
+ }
+
+ private void testBoolean(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(boolean[], boolean");
+ boolean[] b1 = new boolean[0];
+ boolean[] b2 = new boolean[1];
+ boolean[] b3 = new boolean[2];
+
+ Arrays.fill(b1, true);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, true);
+ harness.check(b2[0] == true);
+
+ Arrays.fill(b3, true);
+ harness.check(b3[0] == true);
+ harness.check(b3[1] == true);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((boolean[]) null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(boolean[], int, int, boolean");
+
+ Arrays.fill(b1, 0, 0, false);
+
+ Arrays.fill(b2, 0, 1, false);
+ harness.check(b2[0] == false);
+
+ Arrays.fill(b3, 1, 2, false);
+ harness.check(b3[0] == true);
+ harness.check(b3[1] == false);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(byte[], byte");
+ byte[] b1 = new byte[0];
+ byte[] b2 = new byte[1];
+ byte[] b3 = new byte[2];
+
+ Arrays.fill(b1, (byte) 1);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, (byte) 1);
+ harness.check(b2[0] == (byte) 1);
+
+ Arrays.fill(b3, (byte) 1);
+ harness.check(b3[0] == (byte) 1);
+ harness.check(b3[1] == (byte) 1);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((byte[]) null, (byte) 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(byte[], int, int, byte");
+
+ Arrays.fill(b1, 0, 0, (byte) 2);
+
+ Arrays.fill(b2, 0, 1, (byte) 2);
+ harness.check(b2[0] == (byte) 2);
+
+ Arrays.fill(b3, 1, 2, (byte) 2);
+ harness.check(b3[0] == (byte) 1);
+ harness.check(b3[1] == (byte) 2);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, (byte) 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, (byte) 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, (byte) 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testChar(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(char[], char");
+ char[] b1 = new char[0];
+ char[] b2 = new char[1];
+ char[] b3 = new char[2];
+
+ Arrays.fill(b1, 'A');
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, 'A');
+ harness.check(b2[0] == 'A');
+
+ Arrays.fill(b3, 'A');
+ harness.check(b3[0] == 'A');
+ harness.check(b3[1] == 'A');
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((char[]) null, 'A');
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(char[], int, int, char");
+
+ Arrays.fill(b1, 0, 0, 'B');
+
+ Arrays.fill(b2, 0, 1, 'B');
+ harness.check(b2[0] == 'B');
+
+ Arrays.fill(b3, 1, 2, 'B');
+ harness.check(b3[0] == 'A');
+ harness.check(b3[1] == 'B');
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, 'B');
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, 'B');
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, 'B');
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testDouble(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(double[], double");
+ double[] b1 = new double[0];
+ double[] b2 = new double[1];
+ double[] b3 = new double[2];
+
+ Arrays.fill(b1, 1.0);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, 1.0);
+ harness.check(b2[0] == 1.0);
+
+ Arrays.fill(b3, 1.0);
+ harness.check(b3[0] == 1.0);
+ harness.check(b3[1] == 1.0);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((double[]) null, 1.0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(double[], int, int, double");
+
+ Arrays.fill(b1, 0, 0, 2.0);
+
+ Arrays.fill(b2, 0, 1, 2.0);
+ harness.check(b2[0] == 2.0);
+
+ Arrays.fill(b3, 1, 2, 2.0);
+ harness.check(b3[0] == 1.0);
+ harness.check(b3[1] == 2.0);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, 2.0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, 2.0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, 2.0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testFloat(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(float[], float");
+ float[] b1 = new float[0];
+ float[] b2 = new float[1];
+ float[] b3 = new float[2];
+
+ Arrays.fill(b1, 1.0f);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, 1.0f);
+ harness.check(b2[0] == 1.0f);
+
+ Arrays.fill(b3, 1.0f);
+ harness.check(b3[0] == 1.0f);
+ harness.check(b3[1] == 1.0f);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((float[]) null, 1.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(float[], int, int, float");
+
+ Arrays.fill(b1, 0, 0, 2.0f);
+
+ Arrays.fill(b2, 0, 1, 2.0f);
+ harness.check(b2[0] == 2.0f);
+
+ Arrays.fill(b3, 1, 2, 2.0f);
+ harness.check(b3[0] == 1.0);
+ harness.check(b3[1] == 2.0);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, 2.0f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, 2.0f);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, 2.0f);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(int[], int");
+ int[] b1 = new int[0];
+ int[] b2 = new int[1];
+ int[] b3 = new int[2];
+
+ Arrays.fill(b1, 1);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, 1);
+ harness.check(b2[0] == 1);
+
+ Arrays.fill(b3, 1);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 1);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((int[]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(int[], int, int, int");
+
+ Arrays.fill(b1, 0, 0, 2);
+
+ Arrays.fill(b2, 0, 1, 2);
+ harness.check(b2[0] == 2);
+
+ Arrays.fill(b3, 1, 2, 2);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 2);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testLong(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(long[], long");
+ long[] b1 = new long[0];
+ long[] b2 = new long[1];
+ long[] b3 = new long[2];
+
+ Arrays.fill(b1, 1);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, 1);
+ harness.check(b2[0] == 1);
+
+ Arrays.fill(b3, 1);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 1);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((long[]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(long[], int, int, long");
+
+ Arrays.fill(b1, 0, 0, 2);
+
+ Arrays.fill(b2, 0, 1, 2);
+ harness.check(b2[0] == 2);
+
+ Arrays.fill(b3, 1, 2, 2);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 2);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testObject(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(Object[], Object");
+ Object[] b1 = new Object[0];
+ Object[] b2 = new Object[1];
+ Object[] b3 = new Object[2];
+
+ Arrays.fill(b1, "1");
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, "1");
+ harness.check(b2[0] == "1");
+
+ Arrays.fill(b3, "1");
+ harness.check(b3[0] == "1");
+ harness.check(b3[1] == "1");
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((Object[]) null, "1");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(Object[], int, int, long");
+
+ Arrays.fill(b1, 0, 0, "2");
+
+ Arrays.fill(b2, 0, 1, "2");
+ harness.check(b2[0] == "2");
+
+ Arrays.fill(b3, 1, 2, "2");
+ harness.check(b3[0] == "1");
+ harness.check(b3[1] == "2");
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, "2");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, "2");
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, "2");
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testShort(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.fill(short[], short");
+ short[] b1 = new short[0];
+ short[] b2 = new short[1];
+ short[] b3 = new short[2];
+
+ Arrays.fill(b1, (short) 1);
+ harness.check(b1.length == 0);
+
+ Arrays.fill(b2, (short) 1);
+ harness.check(b2[0] == 1);
+
+ Arrays.fill(b3, (short) 1);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 1);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.fill((int[]) null, 1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.fill(short)[], int, int, short");
+
+ Arrays.fill(b1, 0, 0, (short) 2);
+
+ Arrays.fill(b2, 0, 1, (short) 2);
+ harness.check(b2[0] == 2);
+
+ Arrays.fill(b3, 1, 2, (short) 2);
+ harness.check(b3[0] == 1);
+ harness.check(b3[1] == 2);
+
+ // from index should be <= toIndex
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 2, 1, (short) 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // from index should be >= 0
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, -1, 1, (short) 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // to index should be < array.length
+ pass = false;
+ try
+ {
+ Arrays.fill(b3, 0, 4, (short) 2);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+}
+
+}
diff --git a/gnu/testlet/java/util/Arrays/sort.java b/gnu/testlet/java/util/Arrays/sort.java
new file mode 100644
index 00000000..856634b1
--- /dev/null
+++ b/gnu/testlet/java/util/Arrays/sort.java
@@ -0,0 +1,741 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+//
+// [Note: original file had no copyright notice - I've added the following
+// methods: testByte(), testChar(), testDouble(), testFloat(), testInt(),
+// testLong(), testObject() and testShort(). The original was written by
+// Tom Tromey, with extra tests added by John Leuner]
+
+// 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.java.util.Arrays;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Random;
+
+public class sort implements Testlet
+{
+ private static boolean isSorted(int[] array)
+ {
+ for (int i = 1; i < array.length; ++i) {
+ if (array[i-1] > array[i])
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean isSorted(float[] array)
+ {
+ for (int i = 1; i < array.length; ++i) {
+ if (array[i-1] > array[i])
+ return false;
+ }
+ return true;
+ }
+
+ public void test (TestHarness harness)
+ {
+ int n = 100;
+ int bound = 200;
+ int times = 10;
+
+ int[] A = new int[n];
+ Random rand = new Random();
+
+ int i = 0;
+ for (; i < times; ++i)
+ {
+ for (int j = 0; j < n; ++j)
+ A[j] = rand.nextInt(bound);
+
+ Arrays.sort(A);
+
+ harness.check (isSorted (A));
+ }
+
+ test_quicksort(harness);
+
+ // these methods added by DG
+ testByte(harness);
+ testChar(harness);
+ testDouble(harness);
+ testFloat(harness);
+ testInt(harness);
+ testLong(harness);
+ testObject(harness);
+ testShort(harness);
+ }
+
+ public void test_quicksort(TestHarness harness)
+ {
+ float[] float_array = { 7.3f, 20000.7f, 343f, 24f, 0.000004f, 1e09f, 44, 44, 44, 44, 44, 44, 44, 44 };
+ java.util.Arrays.sort(float_array);
+ harness.check(isSorted(float_array));
+
+ float[] float_array2 = { 7.3f, 20000.7f, 21.2f, 343f, 24f, 0.000004f, 1e09f };
+ java.util.Arrays.sort(float_array2);
+ harness.check(isSorted(float_array2));
+
+ int[] iarray1 = { 1, 2, 3, 4, 5, 6, 7, 8};
+ java.util.Arrays.sort(iarray1);
+ harness.check(isSorted(iarray1));
+
+ int[] iarray2 = { 8, 7, 6, 5, 4, 3, 2, 1};
+ java.util.Arrays.sort(iarray2);
+ harness.check(isSorted(iarray2));
+
+ int[] iarray3 = { 8, 7, 6, 5, 11, 3, 2, 1};
+ java.util.Arrays.sort(iarray3);
+ harness.check(isSorted(iarray3));
+ }
+
+ private void testByte(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(byte[])");
+ byte[] a1 = new byte[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((byte[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(byte[], int, int)");
+ byte[] a2 = new byte[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((byte[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testChar(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(char[])");
+ char[] a1 = new char[] {'3', '1', '2'};
+ Arrays.sort(a1);
+ harness.check(a1[0] == '1');
+ harness.check(a1[1] == '2');
+ harness.check(a1[2] == '3');
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((char[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(char[], int, int)");
+ char[] a2 = new char[] {'4', '3', '1', '2', '0'};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == '4');
+ harness.check(a2[1] == '1');
+ harness.check(a2[2] == '2');
+ harness.check(a2[3] == '3');
+ harness.check(a2[4] == '0');
+
+ pass = false;
+ try
+ {
+ Arrays.sort((char[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testDouble(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(double[])");
+ double[] a1 = new double[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((double[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(double[], int, int)");
+ double[] a2 = new double[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((double[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testFloat(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(float[])");
+ float[] a1 = new float[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((float[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(float[], int, int)");
+ float[] a2 = new float[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((float[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testInt(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(int[])");
+ int[] a1 = new int[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((int[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(int[], int, int)");
+ int[] a2 = new int[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((int[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testLong(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(long[])");
+ long[] a1 = new long[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((long[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(long[], int, int)");
+ long[] a2 = new long[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((long[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testObject(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(Object[])");
+ Object[] a1 = new Object[] {"3", "1", "2"};
+ Arrays.sort(a1);
+ harness.check(a1[0].equals("1"));
+ harness.check(a1[1].equals("2"));
+ harness.check(a1[2].equals("3"));
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((Object[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(Object[], int, int)");
+ Object[] a2 = new Object[] {"4", "3", "1", "2", "0"};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0].equals("4"));
+ harness.check(a2[1].equals("1"));
+ harness.check(a2[2].equals("2"));
+ harness.check(a2[3].equals("3"));
+ harness.check(a2[4].equals("0"));
+
+ pass = false;
+ try
+ {
+ Arrays.sort((Object[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(Object[], Comparator)");
+ Object[] a3 = new Object[] {"4", "5", "3", "1", "2"};
+ Arrays.sort(a3, (Comparator) null);
+ harness.check(a3[0].equals("1"));
+ harness.check(a3[1].equals("2"));
+ harness.check(a3[2].equals("3"));
+ harness.check(a3[3].equals("4"));
+ harness.check(a3[4].equals("5"));
+ Arrays.sort(a3, new ReverseComparator());
+ harness.check(a3[0].equals("5"));
+ harness.check(a3[1].equals("4"));
+ harness.check(a3[2].equals("3"));
+ harness.check(a3[3].equals("2"));
+ harness.check(a3[4].equals("1"));
+
+ harness.checkPoint("Arrays.sort(Object[], int, int, Comparator)");
+ Object[] a4 = new Object[] {"4", "5", "3", "1", "2"};
+ Arrays.sort(a4, 1, 4, (Comparator) null);
+ harness.check(a4[0].equals("4"));
+ harness.check(a4[1].equals("1"));
+ harness.check(a4[2].equals("3"));
+ harness.check(a4[3].equals("5"));
+ harness.check(a4[4].equals("2"));
+ Arrays.sort(a4, 1, 4, new ReverseComparator());
+ harness.check(a4[0].equals("4"));
+ harness.check(a4[1].equals("5"));
+ harness.check(a4[2].equals("3"));
+ harness.check(a4[3].equals("1"));
+ harness.check(a4[4].equals("2"));
+ }
+
+ private void testShort(TestHarness harness)
+ {
+ harness.checkPoint("Arrays.sort(short[])");
+ short[] a1 = new short[] {3, 1, 2};
+ Arrays.sort(a1);
+ harness.check(a1[0] == 1);
+ harness.check(a1[1] == 2);
+ harness.check(a1[2] == 3);
+
+ boolean pass = false;
+ try
+ {
+ Arrays.sort((short[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ harness.checkPoint("Arrays.sort(short[], int, int)");
+ short[] a2 = new short[] {4, 3, 1, 2, 0};
+ Arrays.sort(a2, 1, 4);
+ harness.check(a2[0] == 4);
+ harness.check(a2[1] == 1);
+ harness.check(a2[2] == 2);
+ harness.check(a2[3] == 3);
+ harness.check(a2[4] == 0);
+
+ pass = false;
+ try
+ {
+ Arrays.sort((short[]) null, 1, 4);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Arrays.sort(a2, 0, 6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ static class ReverseComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ int i1 = Integer.valueOf(o1.toString()).intValue();
+ int i2 = Integer.valueOf(o2.toString()).intValue();
+ return (i2 - i1);
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java b/gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java
new file mode 100644
index 00000000..23024ccf
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/AcuniaBitSetTest.java
@@ -0,0 +1,428 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.BitSet;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.BitSet <br>
+*
+*/
+public class AcuniaBitSetTest implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_BitSet();
+ test_clone();
+ test_equals();
+ test_hashCode();
+ test_toString();
+ test_and();
+ test_andNot();
+ test_clear();
+ test_get();
+ test_or();
+ test_set();
+ test_xor();
+ test_length();
+
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_BitSet(){
+ th.checkPoint("BitSet()");
+ BitSet bs = new BitSet();
+ boolean ok = true;
+ for (int i=0; i < 64 ; i++)
+ { if (bs.get(i) ) ok =false; }
+ th.check(ok ,"all bits should be 0 -- got:"+bs);
+
+ th.checkPoint("BitSet(int)");
+ bs = new BitSet(1);
+ ok = true;
+ for (int i=0; i < 64 ; i++)
+ { if (bs.get(i) ) ok =false; }
+ th.check(ok ,"all bits should be 0 -- got:"+bs);
+
+ try { new BitSet(-1);
+ th.fail("should throw NegativeArraySizeException");
+ }
+ catch(NegativeArraySizeException ne) {th.check(true); }
+
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ BitSet bs = new BitSet(3);
+ int i;
+ for (i = 0; i < 64 ; i= i+2) { bs.set(i); }
+ BitSet bsc = (BitSet) bs.clone();
+ boolean ok = true;
+ for (i = 0; i < 64 ; i++)
+ { if (bsc.get(i) != (((i % 2) == 0) ? true : false )) ok = false ;}
+ th.check( ok , "all bits should be set" );
+ bs = new BitSet(0);
+ bsc = (BitSet) bs.clone();
+ bs.set(4);
+ th.check( bsc.get(4) == false , "changes in the original don't affect the clone");
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ BitSet bs = new BitSet(35);
+ int i;
+ for (i = 0; i < 64 ; i= i+2) { bs.set(i); }
+ th.check( ! bs.equals(null) , "returns false if compared to null" );
+ th.check( ! bs.equals("dsf") , "returns false if compared to another Object" );
+ Vector v = new Vector();
+ for (i = 0; i < 64 ; i= i+2) { v.add(new Integer(1)); v.add(new Integer(0));}
+ th.check( ! bs.equals(v) , "returns false if compared to a vector" );
+ BitSet bsc = (BitSet) bs.clone();
+ th.check(bsc.equals(bs) , "a BitSet equals his clone");
+ bs.set(1);
+ th.check(! bsc.equals(bs) , "one different bit ==> not equal");
+ bs.clear(1);
+ bsc.clear(100);
+ th.check(bsc.equals(bs) , "different size still can be equal -- 1");
+ th.check(bs.equals(bsc) , "different size still can be equal -- 2");
+ bsc.set(127);
+ th.check(!bsc.equals(bs) , "different size don't have to be equal -- 1");
+ th.check(!bs.equals(bsc) , "different size don't have to be equal -- 2");
+
+ }
+
+
+/**
+* implemented. <br>
+* the hashCode is only depending on the bits set in the BitSet. <br>
+* this means that two equal bitSets (with different size) still have the same <br>
+* hashcode
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ BitSet bs = new BitSet(34);
+ th.check(bs.hashCode() == 1234 , "checking hashCode for empty BitSet size 64");
+ bs = new BitSet(0);
+ th.check(bs.hashCode() == 1234 , "checking hashCode for empty BitSet size 0");
+ int i;
+ for (i=0 ; i < 8 ; i++) {bs.set(i);}
+ th.check(bs.hashCode() == 1069 , "checking hashCode for BitSet FF");
+
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_toString(){
+ th.checkPoint("toString()java.lang.String");
+ BitSet bs = new BitSet();
+ th.check( "{}".equals(bs.toString()) , "check empty BitSet");
+ bs.set(1);
+ th.check( "{1}".equals(bs.toString()) , "check BitSet string representation -- 1");
+ bs.set(60);
+ th.check( "{1, 60}".equals(bs.toString()) , "check BitSet string representation -- 1");
+ bs.set(15);
+ th.check( "{1, 15, 60}".equals(bs.toString()) , "check BitSet string representation -- 1");
+
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_and(){
+ th.checkPoint("and(java.util.BitSet)void");
+ BitSet bs1 = new BitSet();
+ BitSet bs2 = new BitSet();
+ int i;
+ for (i=0 ; i < 64 ; i++ ) { bs2.set(i); }
+ try { bs1.and(null);
+ th.fail("Should throw a NullPointerException");
+ }
+ catch( NullPointerException ne) { th.check(true); }
+ bs2.and(bs1);
+ th.check( bs1.equals(bs2) , "all ones anded to zeros give zeros");
+ bs1.set(1); bs2.set(1);
+ bs1.and(bs2);
+ th.check( bs1.get(1) && bs2.equals(bs1), "checking and -- 1");
+ for (i=0 ; i < 64 ; i++ ) { bs2.set(i); bs1.set(i);}
+ for (i=64 ; i < 128 ; i++ ) { bs2.set(i); }
+ bs1.clear(2); bs1.clear(20) ;bs1.clear(25); bs1.clear(28);
+ Object o = bs1.clone();
+ bs1.and(bs2);
+ th.check(bs1.equals(o) , "extra bits from bs2 are unused");
+ bs2.and(bs1);
+ th.check(bs1.equals(bs2) , "extra bits in bs2 are cleared");
+ }
+
+
+/**
+* implemented. <br>
+* --> since JDK 1.2
+*/
+ public void test_andNot(){
+ th.checkPoint("andNot(java.util.BitSet)void");
+ BitSet bs1 = new BitSet();
+ BitSet bs2 = new BitSet();
+ int i;
+ for (i=0 ; i < 64 ; i++ ) { bs2.set(i); }
+ try { bs1.and(null);
+ th.fail("Should throw a NullPointerException");
+ }
+ catch( NullPointerException ne) { th.check(true); }
+ BitSet bs3 = (BitSet) bs2.clone();
+ bs2.andNot(bs1);
+ th.check( bs3.equals(bs2) , "all ones andnotted to zeros give ones");
+ bs3.andNot(bs2);
+ th.check( !bs3.get(1) && bs3.equals(bs1), "checking andNot -- 1");
+ for (i=0 ; i < 64 ; i++ ) { bs2.set(i); bs1.set(i);}
+ for (i=64 ; i < 128 ; i++ ) { bs2.set(i); }
+ BitSet bs4 = (BitSet)bs2.clone();
+ bs3 = (BitSet)bs1.clone();
+ bs4.xor(bs1);
+ bs1.andNot(bs2);
+ th.check(bs1.equals(new BitSet(64)) , "extra bits from bs2 are unused");
+ bs2.andNot(bs3);
+ th.check(bs4.equals(bs2) , "extra bits in bs2 are not altered");
+ bs1.clear(0); bs2.clear(0);
+ bs2.andNot(bs1);
+ th.check(!bs2.get(0) , "checking or -- 1");
+ bs2.set(0);
+ bs2.andNot(bs1);
+ th.check(bs2.get(0) , "checking or -- 2");
+ bs1.set(0);
+ bs2.andNot(bs1);
+ th.check(!bs2.get(0) , "checking or -- 3");
+ bs2.andNot(bs1);
+ th.check(!bs2.get(0) , "checking or -- 4");
+
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear(int)void");
+ BitSet bs = new BitSet();
+ Object o = bs.clone();
+ int i;
+ for (i=0 ; i < 64 ; i++ ) { bs.set(i); bs.clear(i);}
+ th.check(bs.equals(o) , "checking set/clear");
+ bs.set(4);
+ th.check( bs.get(4) ,"make sure the set worked" );
+ bs.clear(4);
+ th.check( !bs.get(4) ,"make sure the clear worked -- 1" );
+ bs.clear(4);
+ th.check( !bs.get(4) ,"make sure the clear worked -- 2" );
+ bs.clear(123);
+ try { bs.clear(-1);
+ th.fail("should throw an IndexsOutOfBoundsException");
+ }
+ catch(IndexOutOfBoundsException ie) {th.check(true);}
+
+ bs = new BitSet(0);
+ try { bs.clear(0);
+ bs.clear(64);
+ bs.clear(128);
+ bs.set(146);
+ bs.clear(146);
+ th.check(true);
+ }
+ catch(Exception e) { th.fail("should not throw an exception");}
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(int)boolean");
+ BitSet bs = new BitSet();
+ try { bs.get(-1);
+ th.fail("should throw an IndexsOutOfBoundsException");
+ }
+ catch(IndexOutOfBoundsException ie) {th.check(true);}
+ th.check(!bs.get(Integer.MAX_VALUE) , "returns false if pos > size");
+ bs.set(3);
+ th.check(bs.get(3) , "returns true if pos is set");
+ bs.clear(3);
+ th.check(!bs.get(3) , "returns false if pos is cleared");
+ th.check(!bs.get(0) , "returns false if pos is cleared/or not set -- 1");
+ th.check(!bs.get(63) , "returns false if pos is cleared/or not set -- 2");
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_or(){
+ th.checkPoint("or(java.util.BitSet)void");
+ BitSet bs1 = new BitSet();
+ BitSet bs2 = new BitSet();
+ int i;
+ for (i=0 ; i < 64 ; i++ ) { bs2.set(i); }
+ try { bs1.or(null);
+ th.fail("Should throw a NullPointerException");
+ }
+ catch( NullPointerException ne) { th.check(true); }
+ bs1.or(bs2);
+ th.check( bs1.equals(bs2) , "all ones ored with zeros give ones");
+ for (i=64 ; i < 128 ; i++ ) { bs2.set(i); }
+ BitSet bs3 = new BitSet(3);
+ BitSet bs4 = new BitSet(127);
+ bs3.or(bs2);
+ th.check(!bs1.equals(bs3) , "extra bits from bs2 are used -- got: "+bs3);
+ th.check(bs2.equals(bs3) , "lots of ones ored with nothing gives ones");
+ bs4.or(bs1);
+ th.check(bs4.equals(bs1) , "extra bits in bs4 are left");
+ bs1.clear(0); bs2.clear(0);
+ bs2.or(bs1);
+ th.check(!bs2.get(0) , "checking or -- 1");
+ bs1.set(0);
+ bs2.or(bs1);
+ th.check(bs2.get(0) , "checking or -- 2");
+ bs2.or(bs1);
+ th.check(bs2.get(0) , "checking or -- 3");
+ bs1.clear(0);
+ bs2.or(bs1);
+ th.check(bs2.get(0) , "checking or -- 4");
+ }
+
+
+/**
+* implemented. <br>
+* is tested together with clear
+*/
+ public void test_set(){
+ th.checkPoint("set(int)void");
+ BitSet bs = new BitSet(3);
+ try { bs.set(-1);
+ th.fail("should throw an IndexsOutOfBoundsException");
+ }
+ catch(IndexOutOfBoundsException ie) {th.check(true);}
+ bs = new BitSet(0);
+ bs.set(0);
+ bs.set(23);
+ }
+
+
+/**
+*implemented.
+*
+*/
+ public void test_xor(){
+ th.checkPoint("xor(java.util.BitSet)void");
+ BitSet bs1 = new BitSet();
+ BitSet bs2 = new BitSet();
+ int i;
+ for (i=0 ; i < 32 ; i++ ) { bs2.set(i); }
+ try { bs1.xor(null);
+ th.fail("Should throw a NullPointerException");
+ }
+ catch( NullPointerException ne) { th.check(true); }
+ bs1.xor(bs2);
+ th.check( bs1.equals(bs2) , "checking global xor");
+ for (i=64 ; i < 128 ; i++ ) { bs1.set(i); }
+ BitSet bs3 = new BitSet(3);
+ bs3.xor(bs1);
+ th.check(!bs2.equals(bs3) , "extra bits from bs1 are used -- got: "+bs3);
+ th.check(bs3.equals(bs1) , "lots of ones xored with nothing gives ones");
+ bs1.xor(bs2);
+ boolean ok=true;
+ for (i=0 ; i < 64 ; i++ ) { if (bs1.get(i)) ok = false; }
+ for (i=64 ; i < 128 ; i++ ) { if (!bs1.get(i)) ok = false; }
+ if (!ok) th.debug("got wrong bitpattern:"+bs1);
+ th.check(ok , "extra bits in bs4 are left");
+ bs1.clear(0); bs2.clear(0);
+ bs2.xor(bs1);
+ th.check(!bs2.get(0) , "checking xor -- 1");
+ bs1.set(0);
+ bs2.xor(bs1);
+ th.check(bs2.get(0) , "checking xor -- 2");
+ bs2.xor(bs1);
+ th.check(!bs2.get(0) , "checking xor -- 3");
+ bs2.xor(bs1);
+ th.check(bs2.get(0) , "checking xor -- 4");
+ bs1.clear(0);
+ bs2.xor(bs1);
+ th.check(bs2.get(0) , "checking xor -- 5");
+
+ }
+
+
+/**
+* implemented. <br>
+* --> since jdk 1.2
+*/
+ public void test_length(){
+ th.checkPoint("length()void");
+ BitSet bs = new BitSet(0);
+ th.check(bs.length()==0);
+ bs.clear(100);
+ th.check(bs.length()==0);
+ bs.set(50);
+ th.check(bs.length()==51);
+ bs.set(120);
+ th.check(bs.length()==121);
+ bs.set(150);
+ th.check(bs.length()==151);
+ bs.set(150);
+ th.check(bs.length()==151);
+ bs.clear(150);
+ th.check(bs.length()==121);
+ bs.clear(120);
+ th.check(bs.length()==51);
+ bs.clear(50);
+ th.check(bs.length()==0);
+
+ }
+
+
+}
diff --git a/gnu/testlet/java/util/BitSet/CVS/Entries b/gnu/testlet/java/util/BitSet/CVS/Entries
new file mode 100644
index 00000000..ef8dfb31
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/CVS/Entries
@@ -0,0 +1,6 @@
+/AcuniaBitSetTest.java/1.3/Mon Feb 21 15:52:50 2005//
+/clear.java/1.1/Wed Apr 12 10:44:26 2006//
+/flip.java/1.1/Wed Apr 12 10:44:26 2006//
+/get.java/1.1/Wed Apr 12 10:44:26 2006//
+/jdk10.java/1.4/Mon Apr 1 12:13:28 2002//
+D
diff --git a/gnu/testlet/java/util/BitSet/CVS/Repository b/gnu/testlet/java/util/BitSet/CVS/Repository
new file mode 100644
index 00000000..899367eb
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/BitSet
diff --git a/gnu/testlet/java/util/BitSet/CVS/Root b/gnu/testlet/java/util/BitSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/BitSet/clear.java b/gnu/testlet/java/util/BitSet/clear.java
new file mode 100644
index 00000000..2eb75fe2
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/clear.java
@@ -0,0 +1,109 @@
+/* clear.java -- some checks for the clear() methods in the BitSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.util.BitSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.BitSet;
+
+public class clear implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ BitSet bs = new BitSet(8);
+ bs.set(1);
+ bs.clear();
+ harness.check(bs.isEmpty());
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ BitSet bs = new BitSet(7);
+ bs.set(6);
+ bs.clear(6);
+ harness.check(bs.isEmpty());
+
+ boolean pass = false;
+ try
+ {
+ bs.clear(-1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ bs.clear(7);
+ harness.check(bs.nextClearBit(7), 7);
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ BitSet bs = new BitSet(9);
+ bs.set(3);
+ bs.set(4);
+ bs.set(5);
+ bs.clear(2, 4);
+ harness.check(!bs.get(3));
+ harness.check(bs.get(4));
+ harness.check(bs.get(5));
+
+ bs.clear(5, 5);
+ harness.check(bs.get(5));
+
+ boolean pass = false;
+ try
+ {
+ bs.clear(-1, 2);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ bs.clear(2, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/util/BitSet/flip.java b/gnu/testlet/java/util/BitSet/flip.java
new file mode 100644
index 00000000..64744770
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/flip.java
@@ -0,0 +1,93 @@
+/* flip.java -- some checks for the flip() method in the BitSet clas.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.util.BitSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.BitSet;
+
+public class flip implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ BitSet bs = new BitSet(17);
+ bs.flip(11);
+ harness.check(bs.nextSetBit(0), 11);
+
+ boolean pass = false;
+ try
+ {
+ bs.flip(-1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ BitSet bs = new BitSet(21);
+ bs.flip(3, 5);
+ harness.check(!bs.get(2));
+ harness.check(bs.get(3));
+ harness.check(bs.get(4));
+ harness.check(!bs.get(5));
+
+ bs.flip(4, 4);
+ harness.check(bs.get(4));
+
+ boolean pass = false;
+ try
+ {
+ bs.flip(-1, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ bs.flip(2, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/util/BitSet/get.java b/gnu/testlet/java/util/BitSet/get.java
new file mode 100644
index 00000000..72224b3a
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/get.java
@@ -0,0 +1,126 @@
+/* get.java -- some checks for the get() method in the BitSet class.
+ Copyright (C) 2005 David Daney
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.util.BitSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.BitSet;
+
+public class get implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testGeneral(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ BitSet bs = new BitSet();
+ bs.set(0);
+ bs.set(2);
+ harness.check(bs.get(0));
+ harness.check(!bs.get(1));
+ harness.check(bs.get(2));
+ harness.check(!bs.get(3));
+
+ boolean pass = false;
+ try
+ {
+ bs.get(-1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ BitSet bs1 = new BitSet();
+ bs1.set(3);
+ bs1.set(4);
+ bs1.set(5);
+ BitSet bs2 = bs1.get(2, 5);
+ harness.check(!bs2.get(0));
+ harness.check(bs2.get(1));
+ harness.check(bs2.get(2));
+ harness.check(!bs2.get(3));
+
+ BitSet bs3 = bs1.get(3, 3);
+ harness.check(bs3.isEmpty());
+
+ boolean pass = false;
+ try
+ {
+ bs3 = bs1.get(-1, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ bs3 = bs1.get(3, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+ BitSet o = new BitSet(70);
+ o.set(1);
+ o.set(2);
+ o.set(63);
+ o.set(64);
+
+ BitSet s1 = o.get(0, 9);
+ harness.check(s1.cardinality(), 2);
+ harness.check(s1.get(0), false);
+ harness.check(s1.get(1), true);
+ harness.check(s1.get(2), true);
+ harness.check(s1.get(3), false);
+
+ BitSet s2 = o.get(60, 69);
+ harness.check(s2.cardinality(), 2);
+ harness.check(s2.get(2), false);
+ harness.check(s2.get(3), true);
+ harness.check(s2.get(4), true);
+ harness.check(s2.get(5), false);
+ }
+}
diff --git a/gnu/testlet/java/util/BitSet/jdk10.java b/gnu/testlet/java/util/BitSet/jdk10.java
new file mode 100644
index 00000000..cbdca827
--- /dev/null
+++ b/gnu/testlet/java/util/BitSet/jdk10.java
@@ -0,0 +1,163 @@
+// Tags: JDK1.0
+
+/* Copyright (C) 1999 Artur Biesiadowski
+
+ 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.java.util.BitSet;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.BitSet;
+
+public class jdk10 implements Testlet
+{
+ TestHarness h;
+ public void test ( TestHarness harness )
+ {
+ h = harness;
+ BitSet b1, b2, b3, b4, b5;
+
+ h.checkPoint("Clone/Equals");
+ b1 = new BitSet();
+ b2 = (BitSet)b1.clone();
+ h.check( trulyEquals(b1,b2) );
+ b1 = new BitSet(100);
+ h.check( trulyEquals(b1,b2) );
+ b1.set(5);
+ h.check( !trulyEquals(b1,b2) );
+ b2 = (BitSet)b1.clone();
+ h.check( trulyEquals(b1,b2));
+ h.check(!b2.equals(null));
+
+ h.checkPoint("NegativeSize");
+ try {
+ b1 = new BitSet(-1);
+ h.check(false);
+ } catch ( NegativeArraySizeException e )
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("Set/Clear/Get");
+ b1 = new BitSet();
+ b1.set(1);
+ b1.set(200);
+ b1.set(0);
+ h.check(b1.get(0));
+ h.check(b1.get(1));
+ h.check(!b1.get(2));
+ h.check(b1.get(200));
+ b1.clear(0);
+ h.check(!b1.get(0));
+
+ h.checkPoint("Set/Clear/Get negative index");
+ try {
+ b1.set(-1);
+ h.check(false);
+ } catch ( IndexOutOfBoundsException e )
+ {
+ h.check(true);
+ }
+
+ try {
+ b1.get(-1);
+ h.check(false);
+ } catch ( IndexOutOfBoundsException e )
+ {
+ h.check(true);
+ }
+
+ try {
+ b1.clear(-1);
+ h.check(false);
+ } catch ( IndexOutOfBoundsException e )
+ {
+ h.check(true);
+ }
+
+ h.checkPoint("toString");
+ h.check(b1.toString().equals("{1, 200}"));
+ b1.set(2);
+ b1.set(11);
+ h.check(b1.toString().equals("{1, 2, 11, 200}"));
+ b2 = new BitSet(100);
+ h.check(b2.toString().equals("{}"));
+ b2.set(1);
+ h.check(b2.toString().equals("{1}"));
+
+ h.checkPoint("Hashcode");
+ h.check(b1.hashCode() == 2260);
+ b3 = new BitSet();
+ h.check(b3.hashCode() == 1234);
+
+ h.checkPoint("And/Or/Xor");
+ b2.set(1);
+ b2.set(3);
+ b2.set(200);
+ b2.set(300);
+ b2.and(b1);
+ h.check( b2.toString().equals("{1, 200}") );
+ b1.set(17);
+ b2.set(15);
+ b2.or(b1);
+ h.check( b2.toString().equals("{1, 2, 11, 15, 17, 200}") );
+ b2.xor(b2);
+ h.check( b2.toString().equals("{}") );
+ b2.xor(b1);
+ b3.or(b1);
+ h.check( trulyEquals(b2,b3) );
+
+ h.checkPoint("NullPointerExceptions");
+ try {
+ b1.and(null);
+ h.check(false);
+ } catch ( NullPointerException e )
+ {
+ h.check(true);
+ }
+ try {
+ b1.or(null);
+ h.check(false);
+ } catch ( NullPointerException e )
+ {
+ h.check(true);
+ }
+
+ try {
+ b1.xor(null);
+ h.check(false);
+ } catch ( NullPointerException e )
+ {
+ h.check(true);
+ }
+
+ }
+
+ private boolean trulyEquals( BitSet b1, BitSet b2 )
+ {
+ boolean e1 = b1.equals(b2);
+ boolean e2 = true;
+ for ( int i = 0; i < 300; i++ )
+ {
+ if ( b1.get(i) != b2.get(i) )
+ e2 = false;
+ }
+ h.check (e1 == e2);
+ return e2;
+ }
+}
diff --git a/gnu/testlet/java/util/CVS/Entries b/gnu/testlet/java/util/CVS/Entries
new file mode 100644
index 00000000..85bb5a84
--- /dev/null
+++ b/gnu/testlet/java/util/CVS/Entries
@@ -0,0 +1,2 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:37 1998//
+D
diff --git a/gnu/testlet/java/util/CVS/Entries.Log b/gnu/testlet/java/util/CVS/Entries.Log
new file mode 100644
index 00000000..09791446
--- /dev/null
+++ b/gnu/testlet/java/util/CVS/Entries.Log
@@ -0,0 +1,53 @@
+A D/AbstractCollection////
+A D/AbstractList////
+A D/AbstractMap////
+A D/AbstractSequentialList////
+A D/AbstractSet////
+A D/ArrayList////
+A D/Arrays////
+A D/BitSet////
+A D/Calendar////
+A D/Collection////
+A D/Collections////
+A D/ConcurrentModificationException////
+A D/Currency////
+A D/Date////
+A D/DuplicateFormatFlagsException////
+A D/EmptyStackException////
+A D/EnumSet////
+A D/FormatFlagsConversionMismatchException////
+A D/FormatterClosedException////
+A D/GregorianCalendar////
+A D/HashMap////
+A D/Hashtable////
+A D/IdentityHashMap////
+A D/IllegalFormatCodePointException////
+A D/IllegalFormatConversionException////
+A D/IllegalFormatException////
+A D/IllegalFormatFlagsException////
+A D/IllegalFormatPrecisionException////
+A D/IllegalFormatWidthException////
+A D/Iterator////
+A D/LinkedHashMap////
+A D/LinkedList////
+A D/List////
+A D/Observable////
+A D/Properties////
+A D/Random////
+A D/ResourceBundle////
+A D/Scanner////
+A D/SimpleTimeZone////
+A D/Stack////
+A D/StringTokenizer////
+A D/TimeZone////
+A D/Timer////
+A D/TreeMap////
+A D/TreeSet////
+A D/UUID////
+A D/Vector////
+A D/concurrent////
+A D/jar////
+A D/logging////
+A D/prefs////
+A D/regex////
+A D/zip////
diff --git a/gnu/testlet/java/util/CVS/Repository b/gnu/testlet/java/util/CVS/Repository
new file mode 100644
index 00000000..1ed40756
--- /dev/null
+++ b/gnu/testlet/java/util/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util
diff --git a/gnu/testlet/java/util/CVS/Root b/gnu/testlet/java/util/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Calendar/CVS/Entries b/gnu/testlet/java/util/Calendar/CVS/Entries
new file mode 100644
index 00000000..7e7671c4
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/CVS/Entries
@@ -0,0 +1,12 @@
+/TimeZone.java/1.1/Mon May 1 00:02:59 2006//
+/add.java/1.5/Sat May 6 15:41:08 2006//
+/ampm.java/1.3/Wed Dec 31 10:40:51 2008//
+/dstOffset.java/1.1/Tue Apr 3 13:04:26 2007//
+/getInstance.java/1.2/Fri Oct 6 08:25:45 2006//
+/minmax.java/1.2/Mon May 1 14:36:18 2006//
+/roll.java/1.3/Mon May 1 14:36:18 2006//
+/set.java/1.8/Wed Nov 16 18:22:58 2005//
+/setTime.java/1.1/Thu Aug 17 12:05:11 2006//
+/setTimeZone.java/1.1/Sun May 7 23:01:26 2006//
+/simple.java/1.2/Tue May 8 22:16:01 2001//
+D
diff --git a/gnu/testlet/java/util/Calendar/CVS/Repository b/gnu/testlet/java/util/Calendar/CVS/Repository
new file mode 100644
index 00000000..04b2b789
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Calendar
diff --git a/gnu/testlet/java/util/Calendar/CVS/Root b/gnu/testlet/java/util/Calendar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Calendar/TimeZone.java b/gnu/testlet/java/util/Calendar/TimeZone.java
new file mode 100644
index 00000000..5e528ceb
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/TimeZone.java
@@ -0,0 +1,52 @@
+/* TimeZone.java -- Regression test case for ensuring that setting timezone
+ recalculate field content
+ Copyright (C) 2006 Olivier Jolly <olivier.jolly@pcedev.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests based on KiYun Roe bug report (PR 27343 in classpath bugzilla), which
+ * ensures that when the timezone is changed, fields of the calendar are
+ * recomputed
+ * @author KiYun Roe <kiyun.roe@active-endpoints.com>
+ * @author Olivier Jolly <olivier.jolly@pcedev.com>
+ */
+public class TimeZone implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ java.util.Calendar cal = java.util.Calendar.getInstance();
+ cal.setTimeZone(java.util.TimeZone.getTimeZone("GMT+0"));
+ cal.setTime(new java.util.Date());
+ int hour1 = cal.get(java.util.Calendar.HOUR_OF_DAY);
+ cal.setTimeZone(java.util.TimeZone.getTimeZone("GMT-5"));
+ int hour2 = cal.get(java.util.Calendar.HOUR_OF_DAY);
+ int delta = (hour1 - hour2 + 24) % 24;
+ harness.check(delta, 5, "Check side effect of timezone setting");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Calendar/add.java b/gnu/testlet/java/util/Calendar/add.java
new file mode 100644
index 00000000..e0e662dd
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/add.java
@@ -0,0 +1,125 @@
+// Test Calendar.add().
+
+// Copyright (c) 2001, 2006 Red Hat
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class add implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ java.util.TimeZone tz = java.util.TimeZone.getTimeZone ("GMT");
+ DateFormat cdf = new SimpleDateFormat ("EEE, d MMM yyyy HH:mm:ss zzz",
+ Locale.US);
+ cdf.setTimeZone (tz);
+
+ // We use the US locale since we need a fixed one, and this one I
+ // understand.
+ Calendar k = Calendar.getInstance (tz, Locale.US);
+ Date epoch = new Date (0);
+ k.setTime (epoch);
+
+ // Just double-check to make sure the tests themselves are ok.
+ harness.check (cdf.format (epoch), "Thu, 1 Jan 1970 00:00:00 GMT");
+ harness.check (k.getTime (), epoch);
+
+ // No-op.
+ k.add (Calendar.YEAR, 0);
+ harness.check (k.getTime (), epoch, "no-op add()");
+
+ k.add (Calendar.YEAR, 12);
+ harness.check (k.get (Calendar.YEAR), 1982, "add() to year");
+ k.add (Calendar.YEAR, -1);
+ harness.check (k.get (Calendar.YEAR), 1981);
+ // Month or hour shouldn't change.
+ harness.check (k.get (Calendar.MONTH), 0);
+ harness.check (k.get (Calendar.HOUR_OF_DAY), 0);
+
+ // Update the hour and the day should change.
+ k.add (Calendar.HOUR_OF_DAY, 30);
+ harness.check (k.get (Calendar.HOUR_OF_DAY), 6, "add() to hour");
+ harness.check (k.get (Calendar.DATE), 2);
+ k.add (Calendar.HOUR_OF_DAY, -20);
+ harness.check (k.get (Calendar.HOUR_OF_DAY), 10);
+ harness.check (k.get (Calendar.DATE), 1);
+
+ // Update the month and the year should change.
+ k.add (Calendar.MONTH, -13);
+ harness.check (k.get (Calendar.MONTH), Calendar.DECEMBER,
+ "add() to month");
+ harness.check (k.get (Calendar.YEAR), 1979);
+ k.add (Calendar.MONTH, 2);
+ harness.check (k.get (Calendar.MONTH), Calendar.FEBRUARY);
+ harness.check (k.get (Calendar.YEAR), 1980);
+ harness.check (k.get (Calendar.DATE), 1);
+
+ // 1980 was a leap year.
+ k.add (Calendar.DATE, 28);
+ harness.check (k.get (Calendar.MONTH), Calendar.FEBRUARY, "leap year");
+ harness.check (k.get (Calendar.DATE), 29);
+ k.add (Calendar.DATE, 1);
+ harness.check (k.get (Calendar.MONTH), Calendar.MARCH);
+ harness.check (k.get (Calendar.DATE), 1);
+
+ harness.check (cdf.format (k.getTime ()),
+ "Sat, 1 Mar 1980 10:00:00 GMT",
+ "wrap up");
+
+ testPreviousDate(harness);
+
+ }
+
+ public void testPreviousDate(TestHarness harness)
+ {
+ Calendar calendar = Calendar.getInstance();
+ Date now = new Date();
+
+ // Calculate the start of today.
+ calendar.setTime(now);
+ calendar.clear(Calendar.HOUR_OF_DAY);
+ calendar.clear(Calendar.MINUTE);
+ calendar.clear(Calendar.SECOND);
+ calendar.clear(Calendar.MILLISECOND);
+
+ Date todayStart = calendar.getTime();
+
+ // Calculate the start of yesterday.
+ calendar.setTime(now);
+ calendar.add(Calendar.DATE, -1); // this change shouldn't be lost
+ calendar.clear(Calendar.HOUR_OF_DAY);
+ calendar.clear(Calendar.MINUTE);
+ calendar.clear(Calendar.SECOND);
+ calendar.clear(Calendar.MILLISECOND);
+
+ Date yesterdayStart = calendar.getTime();
+
+ harness.check(yesterdayStart.before(todayStart),
+ "PR27362: Check that clear didn't swallow a previous add() call");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Calendar/ampm.java b/gnu/testlet/java/util/Calendar/ampm.java
new file mode 100644
index 00000000..fad69a96
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/ampm.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.1
+
+// Copyright (c) 2003 Ito Kazumitsu
+
+// This file is part of Mauve.
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class ampm implements Testlet
+{
+ private SimpleDateFormat format;
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ // AM/PM mark is locale-dependent. We use Locale.US.
+ format = new SimpleDateFormat("hh:mm a", Locale.US);
+ String[] ampm = format.getDateFormatSymbols().getAmPmStrings();
+ this.harness = harness;
+
+ // According to the API document of java.util.Calendar,
+ // midnight belongs to "am", and noon belongs to "pm".
+
+ // NOTE: Calendar uses a 0-11 time,
+ // I.e. 0 AM (midnight), 1 AM, .. , 11 AM, midday = 0 PM, 1 PM .. 11 PM
+
+ // Whereas the 'h' flag is 1-12 time
+ // I.e. 12 AM (midnight), 1 AM, .. , 12 PM (midday), 1 PM, .. 11 PM
+
+ checkTime("12:00 " + ampm[0], "12:00 " + ampm[0]);
+ checkTime("12:10 " + ampm[0], "12:10 " + ampm[0]);
+ checkTime(0, 0, Calendar.AM, "12:00 " + ampm[0]);
+ checkTime("0:00 " + ampm[0], "12:00 " + ampm[0]);
+ checkTime(0, 10, Calendar.AM, "12:10 " + ampm[0]);
+ checkTime("0:10 " + ampm[0], "12:10 " + ampm[0]);
+
+ checkTime("12:00 " + ampm[1], "12:00 " + ampm[1]);
+ checkTime("12:10 " + ampm[1], "12:10 " + ampm[1]);
+ checkTime(0, 0, Calendar.PM, "12:00 " + ampm[1]);
+ checkTime("0:00 " + ampm[1], "12:00 " + ampm[1]);
+ checkTime(0, 10, Calendar.PM, "12:10 " + ampm[1]);
+ checkTime("0:10 " + ampm[1], "12:10 " + ampm[1]);
+ }
+
+ private void checkTime(int hh, int mm, int ampm, String expect)
+ {
+
+ Calendar calendar = Calendar.getInstance();
+ calendar = Calendar.getInstance();
+ calendar.set(Calendar.HOUR, hh);
+ calendar.set(Calendar.MINUTE, mm);
+ calendar.set(Calendar.AM_PM, ampm);
+ harness.check (format.format (calendar.getTime()), expect);
+ }
+
+ private void checkTime(String input, String expect)
+ {
+
+ Calendar calendar = Calendar.getInstance();
+ try
+ {
+ calendar.setTime (format.parse(input));
+ harness.check (format.format(calendar.getTime()), expect);
+ }
+ catch (ParseException _)
+ {
+ harness.debug (_);
+ harness.fail (input + " couldn't be parsed");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Calendar/dstOffset.java b/gnu/testlet/java/util/Calendar/dstOffset.java
new file mode 100644
index 00000000..d12dfc19
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/dstOffset.java
@@ -0,0 +1,103 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+// Including some tests by Bryce McKinlay.
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class dstOffset implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TimeZone t = TimeZone.getTimeZone("America/Toronto");
+ Calendar c = Calendar.getInstance(t);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+
+ // Bryce's tests
+ // http://article.gmane.org/gmane.comp.java.classpath.devel/4509
+
+ c.set(2004, Calendar.NOVEMBER, 1);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 0);
+
+ c.set(Calendar.DST_OFFSET, -10000);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == -10000);
+
+ c.set(2004, Calendar.OCTOBER, 1);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 3600000);
+
+ c.set(Calendar.DST_OFFSET, -10000);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == -10000);
+
+ // Gary's tests
+ // Tests marked with XXX are not strictly necessary; calling
+ // get() on unset field shouldn't really be allowed.
+
+ c.clear();
+ harness.check(!c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 0); // XXX
+
+ // DST
+
+ c.setTimeInMillis(1175595146188L);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 3600000);
+
+ c.clear(Calendar.DST_OFFSET);
+ harness.check(!c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 3600000); // XXX
+
+ c.set(Calendar.DST_OFFSET, 1800000);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 1800000);
+
+ c.setTimeInMillis(1175595146188L);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 3600000);
+
+ // non-DST
+
+ c.setTimeInMillis(1172916746188L);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 0);
+
+ c.clear(Calendar.DST_OFFSET);
+ harness.check(!c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 0); // XXX
+
+ c.set(Calendar.DST_OFFSET, 1800000);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 1800000);
+
+ c.setTimeInMillis(1172916746188L);
+ harness.check(c.isSet(Calendar.DST_OFFSET));
+ harness.check(c.get(Calendar.DST_OFFSET) == 0);
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/getInstance.java b/gnu/testlet/java/util/Calendar/getInstance.java
new file mode 100644
index 00000000..5c2f6bc7
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/getInstance.java
@@ -0,0 +1,137 @@
+/* getInstance.java -- some checks for the getInstance() methods in the
+ Calendar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Locale;
+
+/**
+ * Some checks for the getInstance() methods in the Calendar class.
+ */
+public class getInstance implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testMethod3(harness);
+ testMethod4(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ Calendar c = Calendar.getInstance();
+ harness.check(c.getTimeZone(), java.util.TimeZone.getDefault());
+
+ // check that the method returns a new instance each time
+ Calendar c2 = Calendar.getInstance();
+ harness.check(c != c2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(TimeZone)");
+ Calendar c = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"));
+ harness.check(c.getTimeZone(), java.util.TimeZone.getTimeZone("GMT"));
+
+ // check that the method returns a new instance each time
+ Calendar c2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"));
+ harness.check(c != c2);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ /* Calendar c = */ Calendar.getInstance((java.util.TimeZone) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(Locale)");
+ Calendar c = Calendar.getInstance(Locale.UK);
+ Calendar c2 = Calendar.getInstance(Locale.UK);
+ harness.check(c != c2);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ /* Calendar c = */ Calendar.getInstance((Locale) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testMethod4(TestHarness harness)
+ {
+ harness.checkPoint("(TimeZone, Locale)");
+ Calendar c = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"),
+ Locale.UK);
+ Calendar c2 = Calendar.getInstance(java.util.TimeZone.getTimeZone("GMT"),
+ Locale.UK);
+ harness.check(c != c2);
+
+ // try null TimeZone
+ boolean pass = false;
+ try
+ {
+ /* Calendar c = */ Calendar.getInstance((java.util.TimeZone) null,
+ Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null Locale
+ pass = false;
+ try
+ {
+ /* Calendar c = */ Calendar.getInstance(java.util.TimeZone.getDefault(),
+ (Locale) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Calendar/minmax.java b/gnu/testlet/java/util/Calendar/minmax.java
new file mode 100644
index 00000000..f118073a
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/minmax.java
@@ -0,0 +1,61 @@
+// Test Calendar.getActualMinimum().
+
+// Copyright (c) 2004 Free Software Foundation.
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.2
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class minmax implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ java.util.TimeZone tz = java.util.TimeZone.getTimeZone ("GMT");
+ DateFormat cdf = new SimpleDateFormat ("EEE, d MMM yyyy HH:mm:ss zzz");
+ cdf.setTimeZone (tz);
+
+ // We use the US locale since we need a fixed one, and this one I
+ // understand.
+ Calendar k = Calendar.getInstance (tz, Locale.US);
+ Date epoch = new Date (0);
+ k.setTime (epoch);
+
+ // Simple checks of getMinimum, getMaximum
+ harness.check (k.getMinimum(Calendar.MONTH), Calendar.JANUARY, "min month");
+ harness.check (k.getMaximum(Calendar.MONTH), Calendar.DECEMBER, "max month");
+ harness.check (k.getMinimum(Calendar.DATE), 1, "min date");
+ harness.check (k.getMaximum(Calendar.DATE), 31, "max date");
+ harness.check (k.getMinimum(Calendar.DAY_OF_YEAR), 1, "min day of year");
+ harness.check (k.getMaximum(Calendar.DAY_OF_YEAR), 366, "max day of year");
+
+ // Check that getActualMaximum can generate a different value
+ k.add (Calendar.MONTH, 3);
+ harness.check (k.getActualMinimum(Calendar.DATE), 1, "actual min date");
+ harness.check (k.getActualMaximum(Calendar.DATE), 30, "actual max date");
+ harness.check (k.getActualMinimum(Calendar.DAY_OF_YEAR), 1, "actual min day of year");
+ harness.check (k.getActualMaximum(Calendar.DAY_OF_YEAR), 365, "actual max day of year");
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/roll.java b/gnu/testlet/java/util/Calendar/roll.java
new file mode 100644
index 00000000..45548f35
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/roll.java
@@ -0,0 +1,65 @@
+// Test Calendar.roll().
+
+// Copyright (c) 2001 Red Hat
+// Written by Tom Tromey <tromey@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class roll implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ java.util.TimeZone tz = java.util.TimeZone.getTimeZone ("GMT");
+ DateFormat cdf = new SimpleDateFormat ("EEE, d MMM yyyy HH:mm:ss zzz",
+ Locale.US);
+ cdf.setTimeZone (tz);
+
+ // We use the US locale since we need a fixed one, and this one I
+ // understand.
+ Calendar k = Calendar.getInstance (tz, Locale.US);
+ Date epoch = new Date (0);
+ k.setTime (epoch);
+
+ // Just double-check to make sure the tests themselves are ok.
+ harness.check (cdf.format (epoch), "Thu, 1 Jan 1970 00:00:00 GMT");
+ harness.check (k.getTime (), epoch);
+
+ // No-op.
+ k.roll (Calendar.YEAR, 0);
+ harness.check (k.getTime (), epoch, "no-op add()");
+
+ k.roll (Calendar.YEAR, 10);
+ harness.check (k.get (Calendar.YEAR), 1980, "roll() year");
+ harness.check (cdf.format (k.getTime ()),
+ "Tue, 1 Jan 1980 00:00:00 GMT");
+
+ k.roll (Calendar.MONTH, -3);
+ harness.check (k.get (Calendar.MONTH), Calendar.OCTOBER,
+ "roll() month");
+ harness.check (k.get (Calendar.YEAR), 1980);
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/set.java b/gnu/testlet/java/util/Calendar/set.java
new file mode 100644
index 00000000..f40f2062
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/set.java
@@ -0,0 +1,311 @@
+// 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: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+import java.util.Locale;
+
+public class set implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ testSimple(harness);
+ test_DST(harness);
+ test_DAY_OF_MONTH(harness);
+ testUnsetFields(harness);
+ testLenience(harness);
+ testConflictingFields(harness);
+ testNormalization(harness);
+ testModSeconds(harness);
+ }
+
+ private void testSimple(TestHarness harness)
+ {
+ harness.checkPoint("Simple tests");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ c.clear();
+ c.set(Calendar.YEAR, 1980);
+ c.set(Calendar.MONTH, Calendar.JULY);
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.HOUR_OF_DAY, 22);
+ c.set(Calendar.MINUTE, 13);
+ c.set(Calendar.SECOND, 13);
+ c.set(Calendar.MILLISECOND, 347);
+ harness.check(c.getTime(), new Date(332806393347L));
+
+ // Negative DAY_OF_WEEK_IN_MONTH is somewhat esoteric. Lets test.
+ c.clear();
+ c.set(Calendar.YEAR, 1980);
+ c.set(Calendar.MONTH, Calendar.JULY);
+ c.set(Calendar.DAY_OF_WEEK_IN_MONTH, -3);
+ c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ c.set(Calendar.HOUR_OF_DAY, 18);
+ c.set(Calendar.MINUTE, 19);
+ c.set(Calendar.SECOND, 12);
+ c.set(Calendar.MILLISECOND, 519);
+ harness.check(c.getTime(), new Date(332360352519L));
+ }
+
+ public void test_DST (TestHarness harness)
+ {
+ // Create a custom TimeZone with a daylight-time period.
+ SimpleTimeZone stz = new SimpleTimeZone(60 * 60 * 1000, "MyZone",
+ Calendar.MARCH, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000,
+ Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+
+ // Register the timezone as the default:
+ TimeZone.setDefault(stz);
+
+ Calendar cal = Calendar.getInstance(stz);
+ Calendar cal2 = Calendar.getInstance(stz);
+
+ cal.set(2004, Calendar.NOVEMBER, 4, 17, 30);
+
+ harness.checkPoint ("Basic set/get");
+
+ // Test field basics.
+ harness.check (cal.get(Calendar.MINUTE), 30);
+ harness.check (cal.get(Calendar.HOUR), 5);
+ harness.check (cal.get(Calendar.MONTH), Calendar.NOVEMBER);
+ harness.check (cal.get(Calendar.DAY_OF_WEEK), Calendar.THURSDAY);
+ harness.check (cal.get(Calendar.AM_PM), Calendar.PM);
+ harness.check (cal.get(Calendar.ZONE_OFFSET), 60 * 60 * 1000);
+ harness.check (cal.get(Calendar.DST_OFFSET), 0);
+ harness.check (cal.get(Calendar.WEEK_OF_MONTH), 1);
+
+ // Now switch months.
+ cal.set(Calendar.MONTH, Calendar.APRIL);
+ harness.check (cal.get(Calendar.MONTH), Calendar.APRIL);
+ harness.check (cal.get(Calendar.HOUR_OF_DAY), 17);
+
+ harness.checkPoint ("moving calendar across DST boundary");
+
+ // Check that hour is still correct after moving into a DST period.
+ harness.check (cal.getTime().getHours(), 17);
+
+ cal2.setTimeInMillis(cal.getTimeInMillis());
+ harness.check (cal2.get(Calendar.HOUR_OF_DAY), 17);
+
+ // Restore default timezone
+ TimeZone.setDefault(null);
+ }
+
+ public void test_DAY_OF_MONTH(TestHarness harness)
+ {
+ harness.checkPoint("setting DAY_OF_MONTH etc shouldn't effect other fields");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ SimpleDateFormat df = new SimpleDateFormat("EEEEEEEEEEEEE, yyyy-MM-dd [DDD] HH:mm:ss.SSSS", Locale.US);
+ c.set(2004, 9, 1, 12, 0, 0);
+ c.set(Calendar.MILLISECOND, 0);
+
+ String time = df.format(c.getTime());
+ harness.check(time, "Friday, 2004-10-01 [275] 12:00:00.0000");
+
+ c.set(Calendar.DAY_OF_MONTH, 31);
+ time = df.format(c.getTime());
+ harness.check(time, "Sunday, 2004-10-31 [305] 12:00:00.0000");
+
+ c.set(Calendar.MONTH, Calendar.JANUARY);
+ time = df.format(c.getTime());
+ harness.check(time, "Saturday, 2004-01-31 [031] 12:00:00.0000");
+ }
+
+ private void testUnsetFields(TestHarness harness)
+ {
+ harness.checkPoint("setting only some fields");
+
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ c.clear();
+ harness.check(c.getTime(), new Date(0)); // 1970-01-01T00:00Z
+
+ c.clear();
+ c.set(Calendar.YEAR, 1982);
+ harness.check(c.getTime(), new Date(378691200000L)); // 1982-01-01T00:00Z
+
+ c.clear();
+ c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ harness.check(c.getTime(), new Date(259200000L)); // 1970-01-04T00:00Z
+
+ c.clear();
+ c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
+ harness.check(c.getTime(), new Date(1555200000L)); // 1970-01-19T00:00Z
+
+ c.clear();
+ c.set(Calendar.WEEK_OF_YEAR, 2);
+ harness.check(c.getTime(), new Date(345600000L)); // 1970-01-05T00:00Z
+
+ c.clear();
+ c.set(Calendar.YEAR, 1978);
+ c.set(Calendar.MONTH, Calendar.AUGUST);
+ harness.check(c.getTime(), new Date(270777600000L)); // 1978-08-01T00:00Z
+
+ c.clear();
+ c.set(Calendar.YEAR, 2004);
+ c.set(Calendar.MONTH, Calendar.NOVEMBER);
+ c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+ harness.check(c.getTime(), new Date(1099699200000L)); // 2004-11-06T00:00Z
+ }
+
+ private void testLenience(TestHarness harness)
+ {
+ harness.checkPoint("test the setLenient() functionality");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setLenient(false);
+ c.set(Calendar.MONTH, 42);
+ boolean b = false;
+ try
+ {
+ c.get(Calendar.MONTH);
+ }
+ catch (IllegalArgumentException e)
+ {
+ b = true;
+ }
+ harness.check(b);
+ }
+
+ private void testConflictingFields(TestHarness harness)
+ {
+ harness.checkPoint("test setting conflicting values of different fields");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setTimeZone(TimeZone.getTimeZone("GMT"));
+ c.clear();
+
+ c.set(Calendar.YEAR, 1997);
+ // first setting day of year using one method
+ c.set(Calendar.DAY_OF_YEAR, 55);
+ // then setting another day with another method
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.MONTH, Calendar.MAY);
+ harness.check(c.getTime(), new Date(863913600000L)); // 1997-05-18T08:00Z
+
+ // the other way around
+ c.clear();
+ c.set(Calendar.HOUR_OF_DAY, 8);
+ c.set(Calendar.YEAR, 1997);
+ c.set(Calendar.HOUR_OF_DAY, 8);
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.MONTH, Calendar.MAY);
+ c.set(Calendar.DAY_OF_YEAR, 55);
+ harness.check(c.getTime(), new Date(856771200000L)); // 1997-02-24T08:00Z
+
+ // trying three methods
+ c.clear();
+ c.set(Calendar.HOUR_OF_DAY, 8);
+ c.set(Calendar.YEAR, 1997);
+ c.set(Calendar.HOUR_OF_DAY, 8);
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.MONTH, Calendar.MAY);
+ c.set(Calendar.DAY_OF_YEAR, 55);
+
+ c.set(Calendar.MONTH, Calendar.AUGUST);
+ c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
+ c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+ harness.check(c.getTime(), new Date(871977600000L)); // 1997-08-19T08:00Z
+
+ // one interesting side effect of the algorithm for interpreting
+ // conflicting fields is that if not setting all the values in some
+ // of the combinations described under "Calendar Fields Resolution" in
+ // the spec then the value set in the incomplete combination will be
+ // disregarded.
+ c.clear();
+ c.set(Calendar.DAY_OF_YEAR, 55);
+ c.set(Calendar.MONTH, Calendar.AUGUST);
+ harness.check(c.get(Calendar.MONTH), Calendar.FEBRUARY);
+
+ c.clear();
+ c.set(Calendar.HOUR_OF_DAY, 14);
+ c.set(Calendar.HOUR, 8);
+ harness.check(c.get(Calendar.HOUR), 2);
+ }
+
+ private void testNormalization(TestHarness harness)
+ {
+ harness.checkPoint("Normalization");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ // negative HOUR_OF_DAY
+ c.clear();
+ c.set(Calendar.YEAR, 1980);
+ c.set(Calendar.MONTH, Calendar.JULY);
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.HOUR_OF_DAY, -22);
+ c.set(Calendar.MINUTE, 13);
+ c.set(Calendar.SECOND, 13);
+ harness.check(c.getTime(), new Date(332647993000L)); // 1980-07-17T02:13Z
+
+ // HOUR == 12
+ c.clear();
+ c.set(Calendar.YEAR, 1980);
+ c.set(Calendar.MONTH, Calendar.JULY);
+ c.set(Calendar.DAY_OF_MONTH, 18);
+ c.set(Calendar.HOUR, 12);
+ c.set(Calendar.AM_PM, Calendar.AM);
+ c.set(Calendar.MINUTE, 13);
+ c.set(Calendar.SECOND, 13);
+ harness.check(c.get(Calendar.HOUR), 0);
+ harness.check(c.get(Calendar.AM_PM), Calendar.PM);
+
+ // lets normalize ourselves into the leap day from a different year
+ c.clear();
+ c.set(Calendar.YEAR, 1997);
+ c.set(Calendar.MONTH, Calendar.MARCH);
+ c.set(Calendar.DAY_OF_MONTH, 1);
+ c.set(Calendar.HOUR_OF_DAY, -366 * 24);
+ harness.check(c.getTime(), new Date(825552000000L)); // 1996-02-29T00:00Z
+
+ // XXX could have some fun here with leap seconds
+ }
+
+ private void testModSeconds(TestHarness harness)
+ {
+ harness.checkPoint("ModSeconds");
+ Calendar c = Calendar.getInstance(Locale.FRANCE);
+ c.setTimeZone(TimeZone.getTimeZone("GMT"));
+ c.setLenient(true);
+ c.set(Calendar.YEAR, 2005);
+ c.set(Calendar.MONTH, 10);
+ c.set(Calendar.DAY_OF_MONTH, 2);
+ c.set(Calendar.HOUR, 2);
+ c.set(Calendar.AM_PM, Calendar.AM);
+ c.set(Calendar.MINUTE, 30);
+
+ long t = c.getTimeInMillis() + 5500;
+
+ c.setTimeInMillis(t);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+ c.getTime();
+ harness.check(c.get(Calendar.YEAR), 2005);
+ harness.check(c.get(Calendar.SECOND), 0);
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/setTime.java b/gnu/testlet/java/util/Calendar/setTime.java
new file mode 100644
index 00000000..fbb86a4f
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/setTime.java
@@ -0,0 +1,52 @@
+/* setTime.java -- some checks for the setTime() method in the Calendar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class setTime implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Calendar c = Calendar.getInstance();
+ c.setTime(new Date(123L));
+ harness.check(c.getTimeInMillis(), 123L);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ c.setTime(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/setTimeZone.java b/gnu/testlet/java/util/Calendar/setTimeZone.java
new file mode 100644
index 00000000..676e0585
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/setTimeZone.java
@@ -0,0 +1,45 @@
+// 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: JDK1.1
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+import java.util.Locale;
+
+public class setTimeZone implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeZone(TimeZone.getTimeZone("GMT+0"));
+ cal.setTime(new Date());
+ int hour1 = cal.get(Calendar.HOUR_OF_DAY);
+ cal.setTimeZone(TimeZone.getTimeZone("GMT-5"));
+ int hour2 = cal.get(Calendar.HOUR_OF_DAY);
+ int delta = (hour1 - hour2 + 24) % 24;
+ harness.check(delta, 5);
+ }
+}
diff --git a/gnu/testlet/java/util/Calendar/simple.java b/gnu/testlet/java/util/Calendar/simple.java
new file mode 100644
index 00000000..9035e18b
--- /dev/null
+++ b/gnu/testlet/java/util/Calendar/simple.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+// Copyright (c) 2001 Jeff Sturm
+
+// This file is part of Mauve.
+
+package gnu.testlet.java.util.Calendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.text.*;
+import java.util.*;
+
+public class simple implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
+ Calendar calendar = Calendar.getInstance();
+
+ Date date;
+ try
+ {
+ date = format.parse("04/30/2001");
+ }
+ catch (ParseException _)
+ {
+ harness.debug (_);
+ harness.fail ("couldn't run any tests");
+ return;
+ }
+
+ calendar.setTime(date);
+ harness.check (format.format(date), "04/30/2001");
+
+ harness.check ("weekday = " + calendar.get(Calendar.DAY_OF_WEEK),
+ "weekday = 2");
+
+ calendar.add(Calendar.DATE, 1);
+ date = calendar.getTime();
+ harness.check (format.format (date), "05/01/2001");
+
+ harness.check ("weekday = " + calendar.get(Calendar.DAY_OF_WEEK),
+ "weekday = 3");
+
+ calendar.add(Calendar.MONTH, 1);
+ date = calendar.getTime();
+ harness.check (format.format(date), "06/01/2001");
+
+ // Although this looks reasonable, and it does work in the JDK, it
+ // isn't actually guaranteed to work. In fact, incrementing MONTH
+ // and then looking at DAY_OF_WEEK is the example in the 1.2
+ // online docs which shows that this may not work.
+ // harness.check ("weekday = " + calendar.get(Calendar.DAY_OF_WEEK),
+ // "weekday = 6");
+ }
+}
diff --git a/gnu/testlet/java/util/Collection/CVS/Entries b/gnu/testlet/java/util/Collection/CVS/Entries
new file mode 100644
index 00000000..709f38ea
--- /dev/null
+++ b/gnu/testlet/java/util/Collection/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Tue May 11 21:12:57 2010//
+D
diff --git a/gnu/testlet/java/util/Collection/CVS/Repository b/gnu/testlet/java/util/Collection/CVS/Repository
new file mode 100644
index 00000000..f1e2f4a5
--- /dev/null
+++ b/gnu/testlet/java/util/Collection/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Collection
diff --git a/gnu/testlet/java/util/Collection/CVS/Root b/gnu/testlet/java/util/Collection/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Collection/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Collection/Test.java b/gnu/testlet/java/util/Collection/Test.java
new file mode 100644
index 00000000..2f4703a9
--- /dev/null
+++ b/gnu/testlet/java/util/Collection/Test.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2010 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Collection;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Collection;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Delayed;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Some tests for the remove() method in the {@link List} interface.
+ */
+public class Test implements Testlet
+{
+
+ private TestHarness harness;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ testClass(java.util.concurrent.ArrayBlockingQueue.class);
+ testClass(java.util.ArrayDeque.class);
+ testClass(java.util.ArrayList.class);
+ testClass(java.util.concurrent.ConcurrentLinkedQueue.class);
+ testClass(java.util.concurrent.ConcurrentSkipListSet.class);
+ testClass(java.util.concurrent.CopyOnWriteArrayList.class);
+ testClass(java.util.concurrent.CopyOnWriteArraySet.class);
+ testClass(java.util.concurrent.DelayQueue.class);
+ testClass(java.util.EnumSet.class);
+ testClass(java.util.HashSet.class);
+ testClass(java.util.concurrent.LinkedBlockingQueue.class);
+ testClass(java.util.LinkedHashSet.class);
+ testClass(java.util.LinkedList.class);
+ testClass(java.util.concurrent.PriorityBlockingQueue.class);
+ testClass(java.util.PriorityQueue.class);
+ testClass(java.util.Stack.class);
+ testClass(java.util.concurrent.SynchronousQueue.class);
+ testClass(java.util.TreeSet.class);
+ testClass(java.util.Vector.class);
+ }
+
+ /**
+ * Tests the given {@link java.util.Collection} class.
+ *
+ * @param cls the class to test.
+ */
+ public void testClass(Class<? extends Collection> cls)
+ {
+ harness.checkPoint(cls.getName());
+ Collection result = null;
+ try
+ {
+ result = (Collection) cls.newInstance();
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+ if (result != null)
+ {
+ testRemove(result);
+ }
+ }
+
+ /**
+ * Test the {@link Collection#remove(Object)} method of
+ * the given collection.
+ *
+ * @param coll the collection to test.
+ */
+ public void testRemove(Collection coll)
+ {
+ /**
+ * Use Delayed Object so DelayQueue
+ * and sorted collections work.
+ */
+ Delayed obj = new Delayed()
+ {
+ public long getDelay(TimeUnit unit)
+ {
+ return unit.convert(10, TimeUnit.MINUTES);
+ }
+ public int compareTo(Delayed o)
+ {
+ Long other = o.getDelay(TimeUnit.NANOSECONDS);
+ return other.compareTo(getDelay(TimeUnit.NANOSECONDS));
+ }
+ };
+ String type = coll.getClass().getName();
+
+ harness.check(coll.remove(obj) == false,
+ "Object is not present in empty " + type);
+
+ boolean result = false;
+ try
+ {
+ result = coll.remove(null);
+ }
+ catch (NullPointerException e)
+ {
+ /* Collection does not support null elements */
+ }
+ harness.check(result == false, "Null is not present in empty " + type);
+
+ /* Can't do post-addition tests if no capacity */
+ if (coll instanceof BlockingQueue &&
+ ((BlockingQueue) coll).remainingCapacity() == 0)
+ return;
+
+ coll.add(obj);
+ harness.check(coll.remove(obj) == true,
+ "Object is present in non-empty " + type);
+
+ result = true;
+ try
+ {
+ coll.add(null);
+ result = coll.remove(null);
+ }
+ catch (NullPointerException e)
+ {
+ /* Collection does not support null elements */
+ }
+ harness.check(result == true, "Null is present in non-empty " + type);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Collections/CVS/Entries b/gnu/testlet/java/util/Collections/CVS/Entries
new file mode 100644
index 00000000..d533339c
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/CVS/Entries
@@ -0,0 +1,13 @@
+/binarySearch.java/1.3/Sun Dec 25 11:10:12 2005//
+/copy.java/1.1/Sun Sep 19 22:04:15 2004//
+/fill.java/1.1/Sun Sep 19 22:04:15 2004//
+/max.java/1.1/Sun Sep 19 22:04:15 2004//
+/min.java/1.1/Sun Sep 19 22:04:15 2004//
+/nCopies.java/1.1/Sun Sep 19 22:04:15 2004//
+/reverse.java/1.1/Sun Sep 19 22:04:15 2004//
+/reverseOrder.java/1.1/Sun Sep 19 22:04:15 2004//
+/rotate.java/1.1/Sun Sep 19 22:04:15 2004//
+/sort.java/1.1/Fri Nov 10 16:58:36 2006//
+/unmodifiableList.java/1.1/Thu Apr 28 14:25:25 2005//
+/unmodifiableMap.java/1.2/Sun Apr 23 16:32:12 2006//
+D
diff --git a/gnu/testlet/java/util/Collections/CVS/Repository b/gnu/testlet/java/util/Collections/CVS/Repository
new file mode 100644
index 00000000..ed379417
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Collections
diff --git a/gnu/testlet/java/util/Collections/CVS/Root b/gnu/testlet/java/util/Collections/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Collections/binarySearch.java b/gnu/testlet/java/util/Collections/binarySearch.java
new file mode 100644
index 00000000..ed9d7894
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/binarySearch.java
@@ -0,0 +1,226 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Vector;
+
+public class binarySearch implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // run tests on ArrayList
+ harness.checkPoint("ArrayList");
+ genericTest(new ArrayList(), harness);
+
+ // run tests on LinkedList
+ harness.checkPoint("LinkedList");
+ genericTest(new LinkedList(), harness);
+
+ // run tests on Vector
+ harness.checkPoint("Vector");
+ genericTest(new Vector(), harness);
+
+ // test for a known bug (10447)
+ harness.checkPoint("10447");
+ testBug10447(harness);
+
+ // comparison order
+ harness.checkPoint("Compare Order");
+ testCompareOrder(new ArrayList(), harness);
+ testCompareOrder(new LinkedList(), harness);
+ }
+
+ private void testCompareOrder(List list, TestHarness harness)
+ {
+ final boolean[] result = new boolean[] { false, false };
+ list.add(new Comparable() {
+ public int compareTo(Object obj) {
+ result[0] = true;
+ return -1;
+ }
+ });
+ Collections.binarySearch(list, new Comparable() {
+ public int compareTo(Object obj) {
+ result[1] = true;
+ return -1;
+ }
+ });
+ harness.check(result[0] && !result[1]);
+
+ final Object obj1 = new Object();
+ final Object obj2 = new Object();
+ list.clear();
+ list.add(obj1);
+ result[0] = false;
+ Collections.binarySearch(list, obj2, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ result[0] = (o1 == obj1 && o2 == obj2);
+ return -1;
+ }
+ });
+ harness.check(result[0]);
+ }
+
+ private void genericTest(List list, TestHarness harness)
+ {
+ // search an empty list...
+ list.clear();
+ int index = Collections.binarySearch(list, "A");
+ harness.check(index, -1);
+
+ // search a list with one item...
+ list.add("B");
+ index = Collections.binarySearch(list, "B");
+ harness.check(index, 0);
+ index = Collections.binarySearch(list, "A"); // item that would go before "B"
+ harness.check(index, -1);
+ index = Collections.binarySearch(list, "C"); // item that would go after "B"
+ harness.check(index, -2);
+
+ // search a list with two items...
+ list.add("D");
+ index = Collections.binarySearch(list, "A");
+ harness.check(index, -1);
+ index = Collections.binarySearch(list, "B");
+ harness.check(index, 0);
+ index = Collections.binarySearch(list, "C");
+ harness.check(index, -2);
+ index = Collections.binarySearch(list, "D");
+ harness.check(index, 1);
+ index = Collections.binarySearch(list, "E");
+ harness.check(index, -3);
+
+ // search a list with three items...
+ list.add("F");
+ index = Collections.binarySearch(list, "A");
+ harness.check(index, -1);
+ index = Collections.binarySearch(list, "B");
+ harness.check(index, 0);
+ index = Collections.binarySearch(list, "C");
+ harness.check(index, -2);
+ index = Collections.binarySearch(list, "D");
+ harness.check(index, 1);
+ index = Collections.binarySearch(list, "E");
+ harness.check(index, -3);
+ index = Collections.binarySearch(list, "F");
+ harness.check(index, 2);
+ index = Collections.binarySearch(list, "G");
+ harness.check(index, -4);
+
+ // search some larger lists
+ fillList(list, 1024);
+ index = Collections.binarySearch(list, "00000");
+ harness.check(index, 0);
+ index = Collections.binarySearch(list, "00123");
+ harness.check(index, 123);
+ index = Collections.binarySearch(list, "00511");
+ harness.check(index, 511);
+ index = Collections.binarySearch(list, "00512");
+ harness.check(index, 512);
+ index = Collections.binarySearch(list, "00513");
+ harness.check(index, 513);
+ index = Collections.binarySearch(list, "00789");
+ harness.check(index, 789);
+ index = Collections.binarySearch(list, "01023");
+ harness.check(index, 1023);
+ index = Collections.binarySearch(list, "01024");
+ harness.check(index, -1025);
+
+ fillList(list, 12345);
+ index = Collections.binarySearch(list, "00000");
+ harness.check(index, 0);
+ index = Collections.binarySearch(list, "00123");
+ harness.check(index, 123);
+ index = Collections.binarySearch(list, "00511");
+ harness.check(index, 511);
+ index = Collections.binarySearch(list, "00512");
+ harness.check(index, 512);
+ index = Collections.binarySearch(list, "00513");
+ harness.check(index, 513);
+ index = Collections.binarySearch(list, "00789");
+ harness.check(index, 789);
+ index = Collections.binarySearch(list, "01023");
+ harness.check(index, 1023);
+ index = Collections.binarySearch(list, "12345");
+ harness.check(index, -12346);
+
+ }
+
+ private void fillList(List list, int itemCount)
+ {
+ list.clear();
+ for (int i = 0; i < itemCount; i++)
+ {
+ String s = String.valueOf(i);
+ list.add("00000".substring(s.length()) + s);
+ }
+ }
+
+ /**
+ * A test for bug report 10447.
+ *
+ * @param harness the test harness.
+ */
+ private void testBug10447(TestHarness harness)
+ {
+ List list = new LinkedList();
+ list.add("A"); list.add("B"); list.add("C"); list.add("D");
+ list.add("E"); list.add("F"); list.add("G"); list.add("H");
+ list.add("I"); list.add("J"); list.add("K"); list.add("L");
+ list.add("M"); list.add("N"); list.add("O"); list.add("P");
+
+ // this works
+ int i = Collections.binarySearch(list, "E");
+ harness.check(i, 4);
+
+ // this doesn't (bug seems to need at least 17 items to trigger)
+ list.add("Q");
+ i = Collections.binarySearch(list, "E");
+ harness.check(i, 4);
+
+ // but all is fine for ArrayList
+ List list2 = new ArrayList();
+ list2.add("A"); list2.add("B"); list2.add("C"); list2.add("D");
+ list2.add("E"); list2.add("F"); list2.add("G"); list2.add("H");
+ list2.add("I"); list2.add("J"); list2.add("K"); list2.add("L");
+ list2.add("M"); list2.add("N"); list2.add("O"); list2.add("P");
+
+ // this works
+ i = Collections.binarySearch(list2, "E");
+ harness.check(i, 4);
+
+ // and this does too
+ list2.add("Q");
+ i = Collections.binarySearch(list2, "E");
+ harness.check(i, 4);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Collections/copy.java b/gnu/testlet/java/util/Collections/copy.java
new file mode 100644
index 00000000..ab63b78c
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/copy.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class copy implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List l1 = new ArrayList();
+ List l2 = new ArrayList();
+
+ // copy empty list
+ Collections.copy(l2, l1);
+ harness.check(l2.isEmpty());
+
+ // copy a list with 1 item
+ l1.add("A");
+ l2.add("B");
+ Collections.copy(l2, l1);
+ harness.check(l2.get(0).equals("A"));
+
+ // check that when destination is longer than source, the extra items are
+ // preserved...
+ l1 = new ArrayList();
+ l1.add("A");
+ l2 = new ArrayList();
+ l2.add("B"); l2.add("C"); l2.add("D");
+ Collections.copy(l2, l1);
+ harness.check(l2.get(0).equals("A"));
+ harness.check(l2.get(1).equals("C"));
+ harness.check(l2.get(2).equals("D"));
+
+ // test where destination is shorter than source
+ l1 = new ArrayList();
+ l1.add("Item 1");
+ l2 = new ArrayList();
+ boolean pass = false;
+ try
+ {
+ Collections.copy(l2, l1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test null argument 1
+ pass = false;
+ try
+ {
+ Collections.copy(null, l1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test null argument 2
+ try
+ {
+ Collections.copy(l2, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try read-only destination
+ l1 = new ArrayList(); l1.add("A"); l1.add("B");
+ l2 = new ArrayList(); l2.add("C"); l2.add("D");
+ l2 = Collections.unmodifiableList(l2);
+ pass = false;
+ try
+ {
+ Collections.copy(l2, l1);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Collections/fill.java b/gnu/testlet/java/util/Collections/fill.java
new file mode 100644
index 00000000..daad43d2
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/fill.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class fill implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List list = new ArrayList();
+
+ // fill empty list
+ Collections.fill(list, "X");
+ harness.check(list.isEmpty());
+
+ // fill a list with 1 item
+ list.add("A");
+ Collections.fill(list, "X");
+ harness.check(list.get(0).equals("X"));
+
+ // fill a list with multiple items
+ list = new ArrayList();
+ list.add("A"); list.add("B"); list.add("C");
+
+ Collections.fill(list, "X");
+ harness.check(list.get(0).equals("X"));
+ harness.check(list.get(1).equals("X"));
+ harness.check(list.get(2).equals("X"));
+
+ // test null argument 1
+ boolean pass = false;
+ try
+ {
+ Collections.fill(null, "X");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // test null argument 2
+ Collections.fill(list, null);
+ harness.check(list.get(0) == null);
+ harness.check(list.get(1) == null);
+ harness.check(list.get(2) == null);
+
+ // try read-only destination
+ list = new ArrayList(); list.add("A"); list.add("B");
+ list = Collections.unmodifiableList(list);
+ pass = false;
+ try
+ {
+ Collections.fill(list, "X");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+}
+
+}
diff --git a/gnu/testlet/java/util/Collections/max.java b/gnu/testlet/java/util/Collections/max.java
new file mode 100644
index 00000000..8df4c62c
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/max.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+public class max implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List list = new ArrayList();
+
+ // try an empty list
+ boolean pass = false;
+ try
+ {
+ Object m = Collections.max(list);
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // try a regular list
+ list.add(new Integer(12));
+ list.add(new Integer(9));
+ list.add(new Integer(17));
+ harness.check(Collections.max(list).equals(new Integer(17)));
+
+ // try a null list
+ pass = false;
+ try
+ {
+ Object ignore = Collections.max(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a list with non-comparable items
+ list.clear();
+ list.add("A"); list.add(new Long(1));
+ pass = false;
+ try
+ {
+ Object ignore = Collections.max(list);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/min.java b/gnu/testlet/java/util/Collections/min.java
new file mode 100644
index 00000000..d5fd6172
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/min.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+public class min implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List list = new ArrayList();
+
+ // try an empty list
+ boolean pass = false;
+ try
+ {
+ Object m = Collections.min(list);
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(true);
+
+ // try a regular list
+ list.add(new Integer(12));
+ list.add(new Integer(9));
+ list.add(new Integer(17));
+ harness.check(Collections.min(list).equals(new Integer(9)));
+
+ // try a null list
+ pass = false;
+ try
+ {
+ Object ignore = Collections.min(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a list with non-comparable items
+ list.clear();
+ list.add("A"); list.add(new Long(1));
+ pass = false;
+ try
+ {
+ Object ignore = Collections.min(list);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/nCopies.java b/gnu/testlet/java/util/Collections/nCopies.java
new file mode 100644
index 00000000..6dad289b
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/nCopies.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.util.Collections;
+import java.util.List;
+
+public class nCopies implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // try n = 0
+ List list = Collections.nCopies(0, "Y");
+ harness.check(list.isEmpty());
+
+ // try n > 0
+ list = Collections.nCopies(10, "X");
+ harness.check(list.size() == 10);
+ harness.check(list.get(0).equals("X"));
+ harness.check(list.get(9).equals("X"));
+
+ // try n < 0
+ boolean pass = false;
+ try
+ {
+ list = Collections.nCopies(-1, "X");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null object
+ list = Collections.nCopies(3, null);
+ harness.check(list.size() == 3);
+ harness.check(list.get(0) == null);
+ harness.check(list.get(1) == null);
+ harness.check(list.get(2) == null);
+
+ // confirm list is unmodifiable
+ list = Collections.nCopies(10, "Y");
+ pass = false;
+ try
+ {
+ list.add("Z");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // the method should return a Serializable list
+ testSerialization(harness);
+ }
+
+ private void testSerialization(TestHarness harness)
+ {
+ List list1 = Collections.nCopies(99, "X");
+ List list2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(list1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ list2 = (List) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(list1.equals(list2));
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/reverse.java b/gnu/testlet/java/util/Collections/reverse.java
new file mode 100644
index 00000000..39eefe41
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/reverse.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class reverse implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List list1 = new ArrayList();
+ list1.add("t"); list1.add("a"); list1.add("n"); list1.add("k"); list1.add("s");
+ List list2 = new ArrayList();
+ list2.add("s"); list2.add("k"); list2.add("n"); list2.add("a"); list2.add("t");
+ Collections.reverse(list1);
+ harness.check(list1.equals(list2)); // check 1
+
+ // try an empty list
+ list1 = new ArrayList();
+ Collections.reverse(list1);
+ harness.check(list1.isEmpty()); // check 2
+
+ // try a null list
+ boolean pass = false;
+ try
+ {
+ Collections.reverse(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 3
+
+ // try an unmodifiable list
+ list1 = Collections.unmodifiableList(list1);
+ pass = false;
+ try
+ {
+ Collections.reverse(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 4
+
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/reverseOrder.java b/gnu/testlet/java/util/Collections/reverseOrder.java
new file mode 100644
index 00000000..873a2cba
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/reverseOrder.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+public class reverseOrder implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ String[] a = new String[] {"A", "B", "C"};
+ Arrays.sort(a, Collections.reverseOrder());
+ harness.check(a[0].equals("C"));
+ harness.check(a[1].equals("B"));
+ harness.check(a[2].equals("A"));
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/rotate.java b/gnu/testlet/java/util/Collections/rotate.java
new file mode 100644
index 00000000..06ddc12b
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/rotate.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class rotate implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ List list1 = new ArrayList();
+ list1.add("t"); list1.add("a"); list1.add("n"); list1.add("k"); list1.add("s");
+ List list2 = new ArrayList();
+ list2.add("s"); list2.add("t"); list2.add("a"); list2.add("n"); list2.add("k");
+ Collections.rotate(list1, -4);
+ harness.check(list1.equals(list2)); // check 1
+
+ // try an empty list
+ list1 = new ArrayList();
+ Collections.rotate(list1, 2);
+ harness.check(list1.isEmpty()); // check 2
+
+ // try a null list
+ boolean pass = false;
+ try
+ {
+ Collections.rotate(null, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 3
+
+ // try an unmodifiable list
+ list1 = Collections.unmodifiableList(list1);
+ pass = false;
+ try
+ {
+ Collections.rotate(null, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // check 4
+
+ }
+}
diff --git a/gnu/testlet/java/util/Collections/sort.java b/gnu/testlet/java/util/Collections/sort.java
new file mode 100644
index 00000000..37cb7499
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/sort.java
@@ -0,0 +1,248 @@
+/* sort.java -- some checks for the sort() methods in the Collections class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+public class sort implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(List)");
+ List list = new ArrayList();
+
+ // sort an empty list - presumably all that can go wrong is that the code
+ // throws some exception due to a coding error...
+ boolean pass = true;
+ try
+ {
+ Collections.sort(list);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // sort a list containing just one item
+ list = new ArrayList();
+ list.add("A");
+ Collections.sort(list);
+ harness.check(list.size(), 1);
+ harness.check(list.get(0), "A");
+
+ // sort a list containing two items
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ Collections.sort(list);
+ harness.check(list.size(), 2);
+ harness.check(list.get(0), "A");
+ harness.check(list.get(1), "B");
+
+ // sort a list containing three items
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ list.add("C");
+ Collections.sort(list);
+ harness.check(list.size(), 3);
+ harness.check(list.get(0), "A");
+ harness.check(list.get(1), "B");
+ harness.check(list.get(2), "C");
+
+ // sort a list with a null in it
+ pass = false;
+ try
+ {
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ list.add(null);
+ Collections.sort(list);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that equal items don't change order
+ Object obj1 = new Integer(9500);
+ Object obj2 = new Integer(9600);
+ Object obj3 = new Integer(9500);
+ Object obj4 = new Integer(9600);
+ list = new ArrayList();
+ list.add(obj1);
+ list.add(obj2);
+ list.add(obj3);
+ list.add(obj4);
+ Collections.sort(list);
+ harness.check(list.size(), 4);
+ harness.check(list.get(0), obj1);
+ harness.check(list.get(1), obj3);
+ harness.check(list.get(2), obj2);
+ harness.check(list.get(3), obj4);
+
+ // try a null argument
+ pass = false;
+ try
+ {
+ Collections.sort(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ static class MyComparator implements Comparator
+ {
+
+ public int compare(Object obj0, Object obj1) {
+ Comparable c0 = (Comparable) obj0;
+ Comparable c1 = (Comparable) obj1;
+ return -c0.compareTo(c1);
+ }
+
+ }
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(List, Comparator)");
+ List list = new ArrayList();
+ Comparator comparator = new MyComparator();
+
+ // sort an empty list - presumably all that can go wrong is that the code
+ // throws some exception due to a coding error...
+ boolean pass = true;
+ try
+ {
+ Collections.sort(list, comparator);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // sort a list containing just one item
+ list = new ArrayList();
+ list.add("A");
+ Collections.sort(list, comparator);
+ harness.check(list.size(), 1);
+ harness.check(list.get(0), "A");
+
+ // sort a list containing two items
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ Collections.sort(list, comparator);
+ harness.check(list.size(), 2);
+ harness.check(list.get(0), "B");
+ harness.check(list.get(1), "A");
+
+ // sort a list containing three items
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ list.add("C");
+ Collections.sort(list, comparator);
+ harness.check(list.size(), 3);
+ harness.check(list.get(0), "C");
+ harness.check(list.get(1), "B");
+ harness.check(list.get(2), "A");
+
+ // sort a list with a null in it
+ pass = false;
+ try
+ {
+ list = new ArrayList();
+ list.add("B");
+ list.add("A");
+ list.add(null);
+ Collections.sort(list, comparator);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that equal items don't change order
+ Object obj1 = new Integer(9500);
+ Object obj2 = new Integer(9600);
+ Object obj3 = new Integer(9500);
+ Object obj4 = new Integer(9600);
+ list = new ArrayList();
+ list.add(obj1);
+ list.add(obj2);
+ list.add(obj3);
+ list.add(obj4);
+ Collections.sort(list, comparator);
+ harness.check(list.size(), 4);
+ harness.check(list.get(0), obj2);
+ harness.check(list.get(1), obj4);
+ harness.check(list.get(2), obj1);
+ harness.check(list.get(3), obj3);
+
+ // try a null argument 1
+ pass = false;
+ try
+ {
+ Collections.sort(null, comparator);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a null argument 2
+ pass = true;
+ try
+ {
+ Collections.sort(new ArrayList(), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/Collections/unmodifiableList.java b/gnu/testlet/java/util/Collections/unmodifiableList.java
new file mode 100644
index 00000000..5a82cebb
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/unmodifiableList.java
@@ -0,0 +1,184 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Some checks for the unmodifiableList() method in the Collections class.
+ */
+public class unmodifiableList implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ // test an empty list
+ harness.checkPoint("Empty List");
+ List list1 = new java.util.ArrayList();
+ testList(list1, harness);
+
+ // test a non-empty list
+ harness.checkPoint("Non-empty List");
+ List list2 = new java.util.ArrayList();
+ list2.add("A");
+ list2.add("B");
+ list2.add("C");
+ testList(list2, harness);
+
+ // try a null list - the spec says that the argument should be non-null
+ // but doesn't say what exception will be thrown if it is null (assuming
+ // NullPointerException)...
+ harness.checkPoint("Null List");
+ boolean pass = false;
+ try
+ {
+ Collections.unmodifiableList(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param list the list to test
+ * @param harness the test harness.
+ */
+ private void testList(List list, TestHarness harness)
+ {
+ List ulist = Collections.unmodifiableList(list);
+ boolean pass = false;
+ try
+ {
+ ulist.add("X");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.add(0, "X");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ List otherList = new java.util.ArrayList();
+ otherList.add("Z");
+ pass = false;
+ try
+ {
+ ulist.addAll(otherList);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.clear();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.remove("X");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.remove(0);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.removeAll(otherList);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.retainAll(otherList);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ulist.set(0, "X");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Collections/unmodifiableMap.java b/gnu/testlet/java/util/Collections/unmodifiableMap.java
new file mode 100644
index 00000000..c1ec8fef
--- /dev/null
+++ b/gnu/testlet/java/util/Collections/unmodifiableMap.java
@@ -0,0 +1,156 @@
+/* unmodifiableMap.java -- some checks for the unmodifiableMap() method in the
+ Collections class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.util.Collections;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public class unmodifiableMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("Empty map");
+ HashMap map = new HashMap();
+ testMap(map, harness);
+
+ harness.checkPoint("Non-empty map");
+ map.put("A", "AA");
+ map.put("B", "BB");
+ map.put("C", "CC");
+ testMap(map, harness);
+
+ harness.checkPoint("Null map");
+ boolean pass = false;
+ try
+ {
+ Collections.unmodifiableMap(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testMap(Map map, TestHarness harness)
+ {
+ Map umap = Collections.unmodifiableMap(map);
+
+ // check clear() method
+ boolean pass = false;
+ try
+ {
+ umap.clear();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check put() method
+ pass = false;
+ try
+ {
+ umap.put("X", "Y");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check putAll() method
+ HashMap map2 = new HashMap();
+ map2.put("ONE", new Integer(1));
+ pass = false;
+ try
+ {
+ umap.putAll(map2);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check the Map.Entry items from entrySet()
+ pass = false;
+ Iterator iterator = umap.entrySet().iterator();
+ if (iterator.hasNext())
+ {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ try
+ {
+ entry.setValue("XYZ");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ // check a Map.Entry item from entrySet().toArray()
+ pass = false;
+ Object[] entries = umap.entrySet().toArray();
+ if (entries.length > 0)
+ {
+ try
+ {
+ ((Map.Entry) entries[0]).setValue("XYZ");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ // check a Map.Entry item from entrySet().toArray(Object[])
+ pass = false;
+ Object[] entries2 = new Object[umap.size()];
+ umap.entrySet().toArray(entries2);
+ if (entries2.length > 0)
+ {
+ try
+ {
+ ((Map.Entry) entries2[0]).setValue("XYZ");
+ }
+ catch (UnsupportedOperationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries
new file mode 100644
index 00000000..3e7461cd
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Jul 11 09:54:19 2012//
+/constructor.java/1.1/Wed Jul 11 09:54:19 2012//
+D
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries.Log b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/CVS/Repository b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Repository
new file mode 100644
index 00000000..138e1da4
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/ConcurrentModificationException
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/CVS/Root b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/TryCatch.java b/gnu/testlet/java/util/ConcurrentModificationException/TryCatch.java
new file mode 100644
index 00000000..6780b441
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.ConcurrentModificationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.ConcurrentModificationException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new ConcurrentModificationException("ConcurrentModificationException");
+ }
+ catch (ConcurrentModificationException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Entries b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Entries
new file mode 100644
index 00000000..95b27e5d
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Wed Jul 11 09:54:20 2012//
+/getInterfaces.java/1.1/Wed Jul 11 09:54:20 2012//
+/getModifiers.java/1.1/Wed Jul 11 09:54:20 2012//
+/getName.java/1.1/Wed Jul 11 09:54:20 2012//
+/getPackage.java/1.1/Wed Jul 11 09:54:20 2012//
+/getSimpleName.java/1.1/Wed Jul 11 09:54:20 2012//
+/getSuperclass.java/1.1/Wed Jul 11 09:54:20 2012//
+/isAssignableFrom.java/1.1/Wed Jul 11 09:54:20 2012//
+/isInstance.java/1.1/Wed Jul 11 09:54:20 2012//
+/isInterface.java/1.1/Wed Jul 11 09:54:20 2012//
+/isLocalClass.java/1.1/Wed Jul 11 09:54:20 2012//
+/isMemberClass.java/1.1/Wed Jul 11 09:54:20 2012//
+/isPrimitive.java/1.1/Wed Jul 11 09:54:20 2012//
+/isSynthetic.java/1.1/Wed Jul 11 09:54:20 2012//
+D
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Repository b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Repository
new file mode 100644
index 00000000..d734963e
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/ConcurrentModificationException/classInfo
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Root b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/InstanceOf.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..ccf8cd95
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.util.ConcurrentModificationException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.ConcurrentModificationException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class ConcurrentModificationException
+ ConcurrentModificationException o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof ConcurrentModificationException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getInterfaces.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..5df1b537
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getModifiers.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f0d97c97
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getName.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getName.java
new file mode 100644
index 00000000..b52a6f9b
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.ConcurrentModificationException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getPackage.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getPackage.java
new file mode 100644
index 00000000..e6f066e1
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSimpleName.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..1d9a10f6
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "ConcurrentModificationException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSuperclass.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..241318ab
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.util.ConcurrentModificationException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..360a9197
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(ConcurrentModificationException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInstance.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInstance.java
new file mode 100644
index 00000000..9a820c23
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new ConcurrentModificationException("ConcurrentModificationException")));
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInterface.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInterface.java
new file mode 100644
index 00000000..0bd589e2
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isLocalClass.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..9f2d8a9c
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isMemberClass.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..9aa92fdf
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isPrimitive.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..7cac1619
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isSynthetic.java b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..fd397065
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.util.ConcurrentModificationException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test for method java.util.ConcurrentModificationException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new ConcurrentModificationException("ConcurrentModificationException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/ConcurrentModificationException/constructor.java b/gnu/testlet/java/util/ConcurrentModificationException/constructor.java
new file mode 100644
index 00000000..e70eda2a
--- /dev/null
+++ b/gnu/testlet/java/util/ConcurrentModificationException/constructor.java
@@ -0,0 +1,59 @@
+// Test if instances of a class java.util.ConcurrentModificationException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.ConcurrentModificationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ConcurrentModificationException;
+
+
+
+/**
+ * Test if instances of a class java.util.ConcurrentModificationException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ConcurrentModificationException object1 = new ConcurrentModificationException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.util.ConcurrentModificationException");
+
+ ConcurrentModificationException object2 = new ConcurrentModificationException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.toString(), "java.util.ConcurrentModificationException: nothing happens");
+
+ ConcurrentModificationException object3 = new ConcurrentModificationException(null);
+ harness.check(object3 != null);
+ harness.check(object3.toString(), "java.util.ConcurrentModificationException");
+
+ }
+}
+
diff --git a/gnu/testlet/java/util/Currency/CVS/Entries b/gnu/testlet/java/util/Currency/CVS/Entries
new file mode 100644
index 00000000..43100325
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/CVS/Entries
@@ -0,0 +1,18 @@
+/Canada.java/1.2/Mon Jun 18 15:01:54 2007//
+/CanadaFrench.java/1.2/Mon Jun 18 15:01:54 2007//
+/China.java/1.2/Mon Jun 18 15:01:54 2007//
+/Constructors.java/1.1/Sun Nov 7 14:17:44 2004//
+/Czech.java/1.1/Fri Aug 19 09:38:27 2011//
+/France.java/1.2/Mon Jun 18 15:01:54 2007//
+/Germany.java/1.2/Mon Jun 18 15:01:54 2007//
+/Italy.java/1.2/Mon Jun 18 15:01:54 2007//
+/Japan.java/1.2/Mon Jun 18 15:01:54 2007//
+/Korea.java/1.2/Mon Jun 18 15:01:54 2007//
+/PRC.java/1.2/Mon Jun 18 15:01:54 2007//
+/ReferenceEquality.java/1.1/Sun Nov 7 14:17:44 2004//
+/Slovak.java/1.1/Fri Aug 19 09:38:27 2011//
+/Taiwan.java/1.4/Tue Sep 13 07:45:59 2011//
+/UK.java/1.2/Mon Jun 18 15:01:54 2007//
+/US.java/1.1/Sun Nov 7 14:17:44 2004//
+/getInstance.java/1.1/Fri Dec 31 09:40:18 2004//
+D
diff --git a/gnu/testlet/java/util/Currency/CVS/Repository b/gnu/testlet/java/util/Currency/CVS/Repository
new file mode 100644
index 00000000..35caeb52
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Currency
diff --git a/gnu/testlet/java/util/Currency/CVS/Root b/gnu/testlet/java/util/Currency/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Currency/Canada.java b/gnu/testlet/java/util/Currency/Canada.java
new file mode 100644
index 00000000..aacce382
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Canada.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Canadian currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Canada implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.CANADA;
+ private static final String ISO4217_CODE = "CAD";
+ private static final String CURRENCY_SYMBOL = "$";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set the default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/CanadaFrench.java b/gnu/testlet/java/util/Currency/CanadaFrench.java
new file mode 100644
index 00000000..10e3b68f
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/CanadaFrench.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the French Canadian currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class CanadaFrench implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.CANADA_FRENCH;
+ private static final String ISO4217_CODE = "CAD";
+ private static final String CURRENCY_SYMBOL = "$";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/China.java b/gnu/testlet/java/util/Currency/China.java
new file mode 100644
index 00000000..528ce798
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/China.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Chinese currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class China implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.CHINA;
+ private static final String ISO4217_CODE = "CNY";
+ private static final String CURRENCY_SYMBOL = "\uFFE5";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Constructors.java b/gnu/testlet/java/util/Currency/Constructors.java
new file mode 100644
index 00000000..bd8792ba
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Constructors.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the currency constructors.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Constructors implements Testlet
+{
+
+ private static final String INVALID_CURRENCY_CODE = "GNU";
+ private static final String UK_CURRENCY_CODE = "GBP";
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+ boolean threwException;
+
+ /* Check getInstance with a null string */
+ threwException = false;
+ try
+ {
+ currency = Currency.getInstance((String) null);
+ }
+ catch (NullPointerException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Currency instance request with null string exception check.");
+ /* Check getInstance with a non-existant ISO string */
+ threwException = false;
+ try
+ {
+ currency = Currency.getInstance(INVALID_CURRENCY_CODE);
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Currency instance request with invalid currency code string exception check.");
+ /* Check getInstance with a null locale */
+ threwException = false;
+ try
+ {
+ currency = Currency.getInstance((Locale) null);
+ }
+ catch (NullPointerException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Currency instance request with null locale exception check.");
+
+
+ }
+}
diff --git a/gnu/testlet/java/util/Currency/Czech.java b/gnu/testlet/java/util/Currency/Czech.java
new file mode 100644
index 00000000..e3e72849
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Czech.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Czech currency.
+ *
+ * @author Pavel Tisnovsky <ptisnovs@redhat.com>
+ */
+public class Czech implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = new Locale("Czech");
+ private static final String ISO4217_CODE = "CZK";
+ private static final String CURRENCY_SYMBOL = "CZK";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set the default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(ISO4217_CODE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/France.java b/gnu/testlet/java/util/Currency/France.java
new file mode 100644
index 00000000..8647ddc0
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/France.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Calendar;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the French currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class France implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.FRANCE;
+ private static final String ISO4217_CODE = "FRF";
+ private static final String CURRENCY_SYMBOL = ").";
+ private static final int FRACTION_DIGITS = 2;
+ private static final String EURO_ISO4217_CODE = "EUR";
+ private static final String EURO_CURRENCY_SYMBOL = "\u20AC";
+ private static final int EURO_FRACTION_DIGITS = 2;
+ private static final int EURO_CHANGE_YEAR = 2002;
+ private static final int EURO_CHANGE_MONTH = 0;
+ private static final int EURO_CHANGE_DATE = 1;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+ Calendar calendar;
+ Calendar euroCalendar;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Get the current time in the locale */
+ calendar = Calendar.getInstance(TEST_LOCALE);
+ /* Get the Euro change-over time in the locale */
+ euroCalendar = Calendar.getInstance(TEST_LOCALE);
+ euroCalendar.set(EURO_CHANGE_YEAR, EURO_CHANGE_MONTH, EURO_CHANGE_DATE);
+ /* Do different comparisons depending on the state of change to the Euro */
+ if (calendar.after(euroCalendar))
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), EURO_CURRENCY_SYMBOL, "Euro currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), EURO_FRACTION_DIGITS,
+ "Euro currency fraction digits retrieval check (" + currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.toString() + ").");
+ }
+ else
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check ("
+ + currency.toString() + ").");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Germany.java b/gnu/testlet/java/util/Currency/Germany.java
new file mode 100644
index 00000000..3cc2d5b4
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Germany.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Calendar;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the German currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Germany implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.GERMANY;
+ private static final String ISO4217_CODE = "DEM";
+ private static final String CURRENCY_SYMBOL = "DM";
+ private static final int FRACTION_DIGITS = 2;
+ private static final String EURO_ISO4217_CODE = "EUR";
+ private static final String EURO_CURRENCY_SYMBOL = "\u20AC";
+ private static final int EURO_FRACTION_DIGITS = 2;
+ private static final int EURO_CHANGE_YEAR = 2002;
+ private static final int EURO_CHANGE_MONTH = 0;
+ private static final int EURO_CHANGE_DATE = 1;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+ Calendar calendar;
+ Calendar euroCalendar;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Get the current time in the locale */
+ calendar = Calendar.getInstance(TEST_LOCALE);
+ /* Get the Euro change-over time in the locale */
+ euroCalendar = Calendar.getInstance(TEST_LOCALE);
+ euroCalendar.set(EURO_CHANGE_YEAR, EURO_CHANGE_MONTH, EURO_CHANGE_DATE);
+ /* Do different comparisons depending on the state of change to the Euro */
+ if (calendar.after(euroCalendar))
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), EURO_CURRENCY_SYMBOL, "Euro currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), EURO_FRACTION_DIGITS,
+ "Euro currency fraction digits retrieval check (" + currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.toString() + ").");
+ }
+ else
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check ("
+ + currency.toString() + ").");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Italy.java b/gnu/testlet/java/util/Currency/Italy.java
new file mode 100644
index 00000000..71ee7a15
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Italy.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Calendar;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Italian currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Italy implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.ITALY;
+ private static final String ISO4217_CODE = "ITL";
+ private static final String CURRENCY_SYMBOL = "L.";
+ private static final int FRACTION_DIGITS = 0;
+ private static final String EURO_ISO4217_CODE = "EUR";
+ private static final String EURO_CURRENCY_SYMBOL = "\u20AC";
+ private static final int EURO_FRACTION_DIGITS = 2;
+ private static final int EURO_CHANGE_YEAR = 2002;
+ private static final int EURO_CHANGE_MONTH = 0;
+ private static final int EURO_CHANGE_DATE = 1;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+ Calendar calendar;
+ Calendar euroCalendar;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Get the current time in the locale */
+ calendar = Calendar.getInstance(TEST_LOCALE);
+ /* Get the Euro change-over time in the locale */
+ euroCalendar = Calendar.getInstance(TEST_LOCALE);
+ euroCalendar.set(EURO_CHANGE_YEAR, EURO_CHANGE_MONTH, EURO_CHANGE_DATE);
+ /* Do different comparisons depending on the state of change to the Euro */
+ if (calendar.after(euroCalendar))
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), EURO_CURRENCY_SYMBOL, "Euro currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), EURO_FRACTION_DIGITS,
+ "Euro currency fraction digits retrieval check (" + currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),EURO_ISO4217_CODE, "Euro ISO 4217 currency code retrieval check (" +
+ currency.toString() + ").");
+ }
+ else
+ {
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check ("
+ + currency.toString() + ").");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Japan.java b/gnu/testlet/java/util/Currency/Japan.java
new file mode 100644
index 00000000..ee099828
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Japan.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Japanese currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Japan implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.JAPAN;
+ private static final String ISO4217_CODE = "JPY";
+ private static final String CURRENCY_SYMBOL = "\uFFE5";
+ private static final int FRACTION_DIGITS = 0;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Korea.java b/gnu/testlet/java/util/Currency/Korea.java
new file mode 100644
index 00000000..b5f97dd7
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Korea.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Korean currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Korea implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.KOREA;
+ private static final String ISO4217_CODE = "KRW";
+ private static final String CURRENCY_SYMBOL = "\uFFE6";
+ private static final int FRACTION_DIGITS = 0;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/PRC.java b/gnu/testlet/java/util/Currency/PRC.java
new file mode 100644
index 00000000..c06a9b8a
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/PRC.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the PRC currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class PRC implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.PRC;
+ private static final String ISO4217_CODE = "CNY";
+ private static final String CURRENCY_SYMBOL = "\uFFE5";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/ReferenceEquality.java b/gnu/testlet/java/util/Currency/ReferenceEquality.java
new file mode 100644
index 00000000..b1cda89b
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/ReferenceEquality.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the reference equality of currencies. The
+ * currency class is a Singleton, so each instance for a particular
+ * currency should have the same reference.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class ReferenceEquality implements Testlet
+{
+
+ private static final String UK_CURRENCY_CODE = "GBP";
+
+ public void test(TestHarness harness)
+ {
+ Currency currency1;
+ Currency currency2;
+ boolean threwException;
+
+ /* Get a UK Currency instance */
+ currency1 = Currency.getInstance(Locale.UK);
+ /* And another */
+ currency2 = Currency.getInstance(Locale.UK);
+ /* Now check their equality */
+ harness.check(currency1 == currency2, "Reference equality for currencies (UK) check.");
+ /* Recreate currency2 using the string code instead */
+ currency2 = Currency.getInstance(UK_CURRENCY_CODE);
+ /* Equality should still hold */
+ harness.check(currency1 == currency2);
+
+ }
+}
diff --git a/gnu/testlet/java/util/Currency/Slovak.java b/gnu/testlet/java/util/Currency/Slovak.java
new file mode 100644
index 00000000..89597f4e
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Slovak.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2011 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Slovak currency.
+ *
+ * @author Pavel Tisnovsky <ptisnovs@redhat.com>
+ */
+public class Slovak implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = new Locale("Slovak");
+ private static final String ISO4217_CODE = "SKK";
+ private static final String CURRENCY_SYMBOL = "SKK";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set the default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(ISO4217_CODE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/Taiwan.java b/gnu/testlet/java/util/Currency/Taiwan.java
new file mode 100644
index 00000000..5d9fc021
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/Taiwan.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the Taiwanese currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class Taiwan implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.TAIWAN;
+ private static final String ISO4217_CODE = "TWD";
+ private static final String CURRENCY_SYMBOL = "NT$";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/UK.java b/gnu/testlet/java/util/Currency/UK.java
new file mode 100644
index 00000000..d94ffe9c
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/UK.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the UK currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class UK implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.UK;
+ private static final String ISO4217_CODE = "GBP";
+ private static final String CURRENCY_SYMBOL = "\u00A3";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Set default Locale for the JVM */
+ Locale.setDefault(TEST_LOCALE);
+ /* Get an instance of the UK currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol */
+ harness.check(currency.getSymbol(), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol() + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" + currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/US.java b/gnu/testlet/java/util/Currency/US.java
new file mode 100644
index 00000000..52f4beb3
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/US.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+/**
+ * Class to test the American currency.
+ *
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ */
+public class US implements Testlet
+{
+
+ private static final Locale TEST_LOCALE = Locale.US;
+ private static final String ISO4217_CODE = "USD";
+ private static final String CURRENCY_SYMBOL = "$";
+ private static final String NON_LOCAL_CURRENCY_SYMBOL = "US$";
+ private static final int FRACTION_DIGITS = 2;
+
+ public void test(TestHarness harness)
+ {
+ Currency currency;
+
+ /* Get an instance of the UK currency */
+ currency = Currency.getInstance(TEST_LOCALE);
+ /* Check for the correct currency code */
+ harness.check(currency.getCurrencyCode(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.getCurrencyCode() + ").");
+ /* Check for the correct currency symbol from within the U.S. */
+ harness.check(currency.getSymbol(Locale.US), CURRENCY_SYMBOL, "Currency symbol retrieval check (" +
+ currency.getSymbol(Locale.US) + ").");
+ /* Check for the correct currency symbol using another locale */
+ harness.check(currency.getSymbol(Locale.CANADA), NON_LOCAL_CURRENCY_SYMBOL, "Non local currency symbol retrieval check (" +
+ currency.getSymbol(Locale.CANADA) + ").");
+ /* Check for the correct fraction digits */
+ harness.check(currency.getDefaultFractionDigits(), FRACTION_DIGITS, "Currency fraction digits retrieval check (" +
+ currency.getDefaultFractionDigits() + ").");
+ /* Check for the correct currency code from toString()*/
+ harness.check(currency.toString(),ISO4217_CODE, "ISO 4217 currency code retrieval check (" +
+ currency.toString() + ").");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Currency/getInstance.java b/gnu/testlet/java/util/Currency/getInstance.java
new file mode 100644
index 00000000..6a7bc347
--- /dev/null
+++ b/gnu/testlet/java/util/Currency/getInstance.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.Currency;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Currency;
+import java.util.Locale;
+
+public class getInstance implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ // Sun uses "XXX" as the placeholder currency (when no currency is available)
+ harness.check(Currency.getInstance("XXX").toString().equals("XXX"));
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ try
+ {
+ Currency.getInstance("foobar");
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ try
+ {
+ Currency.getInstance((String)null);
+ harness.check(false);
+ }
+ catch (NullPointerException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ try
+ {
+ Currency.getInstance(new Locale("en"));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ try
+ {
+ Currency.getInstance(new Locale("en", "foobar"));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+
+ try
+ {
+ Currency.getInstance((Locale)null);
+ harness.check(false);
+ }
+ catch (NullPointerException _)
+ {
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Date/CVS/Entries b/gnu/testlet/java/util/Date/CVS/Entries
new file mode 100644
index 00000000..40d17b15
--- /dev/null
+++ b/gnu/testlet/java/util/Date/CVS/Entries
@@ -0,0 +1,10 @@
+/after.java/1.1/Sat Feb 19 20:27:13 2005//
+/before.java/1.1/Sat Feb 19 20:27:13 2005//
+/clone.java/1.1/Sat Feb 19 20:27:13 2005//
+/compareTo.java/1.2/Wed Dec 27 15:48:18 2006//
+/equals.java/1.1/Sat Feb 19 20:27:13 2005//
+/getTimezoneOffset.java/1.1/Fri Jan 28 23:46:25 2005//
+/parse.java/1.2/Sun Jan 4 01:19:42 2004//
+/range.java/1.3/Fri Jan 28 23:46:25 2005//
+/serialization.java/1.1/Sat Feb 19 20:27:13 2005//
+D
diff --git a/gnu/testlet/java/util/Date/CVS/Repository b/gnu/testlet/java/util/Date/CVS/Repository
new file mode 100644
index 00000000..eddad3c4
--- /dev/null
+++ b/gnu/testlet/java/util/Date/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Date
diff --git a/gnu/testlet/java/util/Date/CVS/Root b/gnu/testlet/java/util/Date/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Date/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Date/after.java b/gnu/testlet/java/util/Date/after.java
new file mode 100644
index 00000000..b42076db
--- /dev/null
+++ b/gnu/testlet/java/util/Date/after.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+/**
+ * Some checks for the after() method in the {@link Date} class.
+ */
+public class after implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Date d1 = new Date(-1L);
+ Date d2 = new Date(0L);
+ Date d3 = new Date(1L);
+
+ harness.check(!d1.after(d1));
+ harness.check(!d1.after(d2));
+ harness.check(!d1.after(d3));
+ harness.check(d2.after(d1));
+ harness.check(!d2.after(d2));
+ harness.check(!d2.after(d3));
+ harness.check(d3.after(d1));
+ harness.check(d3.after(d2));
+ harness.check(!d3.after(d3));
+
+ boolean pass = false;
+ try
+ {
+ d1.after(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Date/before.java b/gnu/testlet/java/util/Date/before.java
new file mode 100644
index 00000000..e8ac72b7
--- /dev/null
+++ b/gnu/testlet/java/util/Date/before.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+/**
+ * Some checks for the before() method in the {@link Date} class.
+ */
+public class before implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Date d1 = new Date(-1L);
+ Date d2 = new Date(0L);
+ Date d3 = new Date(1L);
+
+ harness.check(!d1.before(d1));
+ harness.check(d1.before(d2));
+ harness.check(d1.before(d3));
+ harness.check(!d2.before(d1));
+ harness.check(!d2.before(d2));
+ harness.check(d2.before(d3));
+ harness.check(!d3.before(d1));
+ harness.check(!d3.before(d2));
+ harness.check(!d3.before(d3));
+
+ boolean pass = false;
+ try
+ {
+ d1.before(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Date/clone.java b/gnu/testlet/java/util/Date/clone.java
new file mode 100644
index 00000000..fb0b2c53
--- /dev/null
+++ b/gnu/testlet/java/util/Date/clone.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+/**
+ * Checks that the clone() method in the {@link Date} class works
+ * correctly.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Date d1 = new Date(123L);
+ Date d2 = null;
+ d2 = (Date) d1.clone();
+ harness.check(d1 != d2);
+ harness.check(d1.getClass().equals(d2.getClass()));
+ harness.check(d1.getTime() == d2.getTime());
+ }
+
+}
diff --git a/gnu/testlet/java/util/Date/compareTo.java b/gnu/testlet/java/util/Date/compareTo.java
new file mode 100644
index 00000000..20c4742a
--- /dev/null
+++ b/gnu/testlet/java/util/Date/compareTo.java
@@ -0,0 +1,123 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+/**
+ * Some tests for the compareTo() method in the {@link Date} class.
+ */
+public class compareTo implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Date)");
+ Date d1 = new Date(Long.MIN_VALUE);
+ Date d2 = new Date(-1L);
+ Date d3 = new Date(0L);
+ Date d4 = new Date(1L);
+ Date d5 = new Date(Long.MAX_VALUE);
+
+ harness.check(d1.compareTo(d1) == 0);
+ harness.check(d1.compareTo(d2) < 0);
+ harness.check(d1.compareTo(d3) < 0);
+ harness.check(d1.compareTo(d4) < 0);
+ harness.check(d1.compareTo(d5) < 0);
+
+ harness.check(d2.compareTo(d1) > 0);
+ harness.check(d2.compareTo(d2) == 0);
+ harness.check(d2.compareTo(d3) < 0);
+ harness.check(d2.compareTo(d4) < 0);
+ harness.check(d2.compareTo(d5) < 0);
+
+ harness.check(d3.compareTo(d1) > 0);
+ harness.check(d3.compareTo(d2) > 0);
+ harness.check(d3.compareTo(d3) == 0);
+ harness.check(d3.compareTo(d4) < 0);
+ harness.check(d3.compareTo(d5) < 0);
+
+ harness.check(d4.compareTo(d1) > 0);
+ harness.check(d4.compareTo(d2) > 0);
+ harness.check(d4.compareTo(d3) > 0);
+ harness.check(d4.compareTo(d4) == 0);
+ harness.check(d4.compareTo(d5) < 0);
+
+ harness.check(d5.compareTo(d1) > 0);
+ harness.check(d5.compareTo(d2) > 0);
+ harness.check(d5.compareTo(d3) > 0);
+ harness.check(d5.compareTo(d4) > 0);
+ harness.check(d5.compareTo(d5) == 0);
+
+ boolean pass = false;
+ try
+ {
+ d1.compareTo((Date) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("compareTo(Object)");
+ Date d1 = new Date(Long.MIN_VALUE);
+ boolean pass = false;
+ try
+ {
+ ((Comparable)d1).compareTo((Object) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ ((Comparable)d1).compareTo("Not a Date!");
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/java/util/Date/equals.java b/gnu/testlet/java/util/Date/equals.java
new file mode 100644
index 00000000..eb42ae74
--- /dev/null
+++ b/gnu/testlet/java/util/Date/equals.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+/**
+ * Some checks for the equals() method in the {@link Date} class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Date d1 = new Date(100L);
+ Date d2 = new Date(100L);
+ harness.check(d1.equals(d2));
+ harness.check(d2.equals(d1));
+
+ d1 = new Date(101L);
+ harness.check(!d1.equals(d2));
+ d2 = new Date(101L);
+ harness.check(d1.equals(d2));
+ }
+
+}
diff --git a/gnu/testlet/java/util/Date/getTimezoneOffset.java b/gnu/testlet/java/util/Date/getTimezoneOffset.java
new file mode 100644
index 00000000..a47e2ad4
--- /dev/null
+++ b/gnu/testlet/java/util/Date/getTimezoneOffset.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+
+// 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.java.util.Date;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Date;
+import java.util.TimeZone;
+
+public class getTimezoneOffset implements Testlet
+{
+ TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ TimeZone.setDefault(TimeZone.getTimeZone("America/Toronto"));
+ check(300, 240);
+ TimeZone.setDefault(TimeZone.getTimeZone("Pacific/Auckland"));
+ check(-780, -720);
+ TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
+ check(0, -60);
+ }
+
+ private void check(int offset_january, int offset_august)
+ {
+ harness.checkPoint("getTimezoneOffset for zone: " +
+ TimeZone.getDefault().getID());
+ Date d = new Date(96, 1, 14);
+ System.out.println (d.getTimezoneOffset());
+ harness.check (d.getTimezoneOffset(), offset_january);
+ d = new Date(96, 8, 1);
+ System.out.println (d.getTimezoneOffset());
+ harness.check (d.getTimezoneOffset(), offset_august);
+ }
+}
diff --git a/gnu/testlet/java/util/Date/parse.java b/gnu/testlet/java/util/Date/parse.java
new file mode 100644
index 00000000..5da99167
--- /dev/null
+++ b/gnu/testlet/java/util/Date/parse.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Contributed by Per Bothner <per@bothner.com>.
+
+// 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.java.util.Date;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Date;
+
+public class parse implements Testlet
+{
+ private TestHarness harness;
+
+ static final long TZ_DIFF_MAX = 24*60*60*1000;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ testParse("6 Sep 2003", 1062806400000L, TZ_DIFF_MAX);
+ testParse("2003/9/6 9:30 PST", 1062869400000L, 2003, 9, 6);
+ testParse("6 Sep 2003 9:30 PST", 1062869400000L, 2003, 9, 6);
+ testParse("6 Sep 2003 9:30 AM PST", 1062869400000L, 2003, 9, 6);
+ testParse("6 Sep 2003 9:30 pm EDT", 1062898200000L, 2003, 9, 6);
+ testParse("6 Sep 2003 UTC", 1062806400000L, 2003, 9, 6);
+ testParse("2/28/08 23:30 gmt", 1204241400000L, 2008, 2, 28);
+ }
+
+ /** Test Date.parse.
+ * @param s a String argument to for Date.parse.
+ * @param exp the expected time in milliseconds.
+ * @param year the expected result of <code>new Date(exp).getYear()</code>.
+ * @param month the expected result of <code>new Date(exp).getMonth()</code>.
+ * @param date the expected result of <code>new Date(exp).getDate()</code>.
+ * We allow up to one day "off" because the local timezone may differ
+ * from UTC and/or the one specified. (Hence don't call this
+ * on the first or last day of the month.)
+ */
+ private void testParse (String s, long exp, int year, int month, int date)
+ {
+ long t = Date.parse(s);
+ Date d = new Date(t);
+ harness.checkPoint(s);
+ harness.check(t, exp);
+ harness.checkPoint(s+" .getYear");
+ harness.check(1900 + d.getYear(), year);
+ harness.checkPoint(s+" .getMonth");
+ harness.check(1 + d.getMonth(), month);
+ harness.checkPoint(s+" .getMonth");
+ int dd = d.getDate();
+ harness.checkPoint(s+" .getDate");
+ harness.check(dd >= date - 1 && dd <= date + 1);
+ }
+
+ /** Test Date.parse.
+ * @param s a String argument to for Date.parse.
+ * @param exp the expected time in milliseconds.
+ * @param fuzz allowable "error" in result due to
+ */
+ private void testParse (String s, long exp, long fuzz)
+ {
+ harness.checkPoint(s);
+ long t = Date.parse(s);
+ harness.check(t >= exp - fuzz && t <= exp + fuzz);
+ }
+}
+
diff --git a/gnu/testlet/java/util/Date/range.java b/gnu/testlet/java/util/Date/range.java
new file mode 100644
index 00000000..9c8148c4
--- /dev/null
+++ b/gnu/testlet/java/util/Date/range.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Contributed by Jeroen Frijters <jeroen@frijters.net>.
+
+// 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.java.util.Date;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Date;
+
+public class range implements Testlet
+{
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ check(70, 0, 1, 0, 0, 0, 0);
+ check(104, 9, 12, 0, 0, 0, 1097539200000L);
+ check(104, 9, 12, 0, 0, 0, 1097539200000L);
+ check(104, 9, 12, 12, 34, 0, 1097584440000L);
+ check(104, 9, 12, 12, 34, 56, 1097584496000L);
+ check(104, -1, 0, 0, 0, 0, 1070150400000L);
+ check(104, 99, 99, 99, 99, 99, 1342068039000L);
+ check(104, 999, 999, 999, 999, 999, 3789878139000L);
+ check(104, -1, -1, -1, -1, -1, 1070060339000L);
+ check(104, -999, -999, -999, -999, -999, -1644306939000L);
+ }
+
+ private void check(int year, int month, int day, int hours, int mins, int secs, long l)
+ {
+ try
+ {
+ Date d = new Date(year, month, day, hours, mins, secs);
+ harness.check(d.getTime() - d.getTimezoneOffset() * 60 * 1000 == l);
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Date/serialization.java b/gnu/testlet/java/util/Date/serialization.java
new file mode 100644
index 00000000..370eecc9
--- /dev/null
+++ b/gnu/testlet/java/util/Date/serialization.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Date;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.util.Date;
+
+/**
+ * Some checks for serialization of a {@link Date} instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Date d1 = new Date(123L);
+ Date d2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(d1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ d2 = (Date) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(d1.equals(d2));
+ }
+
+}
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries
new file mode 100644
index 00000000..9ec01003
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries
@@ -0,0 +1,5 @@
+/TryCatch.java/1.1/Thu Jul 12 12:31:24 2012//
+/constructor.java/1.1/Thu Jul 12 12:31:24 2012//
+/getFlags.java/1.1/Thu Jul 12 12:31:24 2012//
+/getMessage.java/1.1/Thu Jul 12 12:31:24 2012//
+D
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries.Log b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Repository b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Repository
new file mode 100644
index 00000000..773c5b37
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/DuplicateFormatFlagsException
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Root b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/TryCatch.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/TryCatch.java
new file mode 100644
index 00000000..3536cd30
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.DuplicateFormatFlagsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.DuplicateFormatFlagsException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+ }
+ catch (DuplicateFormatFlagsException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Entries b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Entries
new file mode 100644
index 00000000..a4e19ad2
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Thu Jul 12 12:31:24 2012//
+/getInterfaces.java/1.1/Thu Jul 12 12:31:24 2012//
+/getModifiers.java/1.1/Thu Jul 12 12:31:24 2012//
+/getName.java/1.1/Thu Jul 12 12:31:24 2012//
+/getPackage.java/1.1/Thu Jul 12 12:31:24 2012//
+/getSimpleName.java/1.1/Thu Jul 12 12:31:24 2012//
+/getSuperclass.java/1.1/Thu Jul 12 12:31:24 2012//
+/isAssignableFrom.java/1.1/Thu Jul 12 12:31:24 2012//
+/isInstance.java/1.1/Thu Jul 12 12:31:24 2012//
+/isInterface.java/1.1/Thu Jul 12 12:31:24 2012//
+/isLocalClass.java/1.1/Thu Jul 12 12:31:24 2012//
+/isMemberClass.java/1.1/Thu Jul 12 12:31:24 2012//
+/isPrimitive.java/1.1/Thu Jul 12 12:31:24 2012//
+/isSynthetic.java/1.1/Thu Jul 12 12:31:24 2012//
+D
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Repository b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Repository
new file mode 100644
index 00000000..0a0edb9e
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Root b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/InstanceOf.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..10489aa0
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.util.DuplicateFormatFlagsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.DuplicateFormatFlagsException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class DuplicateFormatFlagsException
+ DuplicateFormatFlagsException o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof DuplicateFormatFlagsException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getInterfaces.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..e3ea0a59
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getModifiers.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getModifiers.java
new file mode 100644
index 00000000..dbd63dc2
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getName.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getName.java
new file mode 100644
index 00000000..c90a97a5
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.DuplicateFormatFlagsException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getPackage.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getPackage.java
new file mode 100644
index 00000000..1aa1f1e8
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSimpleName.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..5d429aaf
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "DuplicateFormatFlagsException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSuperclass.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..5fa5e08d
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..79927bfc
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(DuplicateFormatFlagsException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInstance.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInstance.java
new file mode 100644
index 00000000..be9582fc
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new DuplicateFormatFlagsException("DuplicateFormatFlagsException")));
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInterface.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInterface.java
new file mode 100644
index 00000000..c9fc3f71
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isLocalClass.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..2a1c2f6a
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isMemberClass.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..eb2e8722
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isPrimitive.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..ddf9c6a9
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isSynthetic.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..f2eeec48
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.util.DuplicateFormatFlagsException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.DuplicateFormatFlagsException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new DuplicateFormatFlagsException("DuplicateFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/constructor.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/constructor.java
new file mode 100644
index 00000000..78f1ccc9
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/constructor.java
@@ -0,0 +1,51 @@
+// Test if instances of a class java.util.DuplicateFormatFlagsException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test if instances of a class java.util.DuplicateFormatFlagsException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DuplicateFormatFlagsException object1 = new DuplicateFormatFlagsException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.DuplicateFormatFlagsException"));
+ harness.check(object1.toString().contains("nothing happens"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/getFlags.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/getFlags.java
new file mode 100644
index 00000000..785b95a7
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/getFlags.java
@@ -0,0 +1,56 @@
+// Test of a method java.util.DuplicateFormatFlagsException.getFlags()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test of a method java.util.DuplicateFormatFlagsException.getFlags()
+ */
+public class getFlags implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DuplicateFormatFlagsException object1 = new DuplicateFormatFlagsException("");
+ harness.check(object1 != null);
+ harness.check(object1.getFlags() != null);
+ harness.check(object1.getFlags().isEmpty());
+
+ DuplicateFormatFlagsException object2 = new DuplicateFormatFlagsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.getFlags() != null);
+ harness.check(object2.getFlags().contains("nothing happens"));
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/DuplicateFormatFlagsException/getMessage.java b/gnu/testlet/java/util/DuplicateFormatFlagsException/getMessage.java
new file mode 100644
index 00000000..3dd6dac6
--- /dev/null
+++ b/gnu/testlet/java/util/DuplicateFormatFlagsException/getMessage.java
@@ -0,0 +1,57 @@
+// Test of a method java.util.DuplicateFormatFlagsException.getMessage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.DuplicateFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.DuplicateFormatFlagsException;
+
+
+
+/**
+ * Test of a method java.util.DuplicateFormatFlagsException.getMessage()
+ */
+public class getMessage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DuplicateFormatFlagsException object1 = new DuplicateFormatFlagsException("");
+ harness.check(object1 != null);
+ harness.check(object1.getMessage() != null);
+ harness.check(object1.getMessage().contains("Flags = ''"));
+
+ DuplicateFormatFlagsException object2 = new DuplicateFormatFlagsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.getMessage() != null);
+ harness.check(object2.getMessage().contains("nothing happens"));
+ harness.check(object2.getMessage().contains("Flags = 'nothing happens'"));
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/EmptyStackException/CVS/Entries b/gnu/testlet/java/util/EmptyStackException/CVS/Entries
new file mode 100644
index 00000000..5943708b
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Tue Jul 17 15:25:00 2012//
+/constructor.java/1.1/Tue Jul 17 15:25:00 2012//
+D
diff --git a/gnu/testlet/java/util/EmptyStackException/CVS/Entries.Log b/gnu/testlet/java/util/EmptyStackException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/EmptyStackException/CVS/Repository b/gnu/testlet/java/util/EmptyStackException/CVS/Repository
new file mode 100644
index 00000000..cdb558be
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/EmptyStackException
diff --git a/gnu/testlet/java/util/EmptyStackException/CVS/Root b/gnu/testlet/java/util/EmptyStackException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/EmptyStackException/TryCatch.java b/gnu/testlet/java/util/EmptyStackException/TryCatch.java
new file mode 100644
index 00000000..c7013efd
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.EmptyStackException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.EmptyStackException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new EmptyStackException();
+ }
+ catch (EmptyStackException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Entries b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Entries
new file mode 100644
index 00000000..26bce0fa
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 17 15:25:00 2012//
+/getInterfaces.java/1.1/Tue Jul 17 15:25:00 2012//
+/getModifiers.java/1.1/Tue Jul 17 15:25:00 2012//
+/getName.java/1.1/Tue Jul 17 15:25:00 2012//
+/getPackage.java/1.1/Tue Jul 17 15:25:00 2012//
+/getSimpleName.java/1.1/Tue Jul 17 15:25:00 2012//
+/getSuperclass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isAssignableFrom.java/1.1/Tue Jul 17 15:25:00 2012//
+/isInstance.java/1.1/Tue Jul 17 15:25:00 2012//
+/isInterface.java/1.1/Tue Jul 17 15:25:00 2012//
+/isLocalClass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isMemberClass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isPrimitive.java/1.1/Tue Jul 17 15:25:00 2012//
+/isSynthetic.java/1.1/Tue Jul 17 15:25:00 2012//
+D
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Repository b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Repository
new file mode 100644
index 00000000..affbfdde
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/EmptyStackException/classInfo
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Root b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/InstanceOf.java b/gnu/testlet/java/util/EmptyStackException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..6308e6b0
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/InstanceOf.java
@@ -0,0 +1,61 @@
+// Test for instanceof operator applied to a class java.util.EmptyStackException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.EmptyStackException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class EmptyStackException
+ EmptyStackException o = new EmptyStackException();
+
+ // basic check of instanceof operator
+ harness.check(o instanceof EmptyStackException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getInterfaces.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..fd1fbe7f
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.util.EmptyStackException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getModifiers.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getModifiers.java
new file mode 100644
index 00000000..e1a2b0bd
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.util.EmptyStackException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getName.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getName.java
new file mode 100644
index 00000000..5e6db64c
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.EmptyStackException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getPackage.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getPackage.java
new file mode 100644
index 00000000..d6c79af2
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.util.EmptyStackException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getSimpleName.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..21840f88
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "EmptyStackException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/getSuperclass.java b/gnu/testlet/java/util/EmptyStackException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..79ab6f44
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.util.EmptyStackException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.RuntimeException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..3342425e
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(EmptyStackException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isInstance.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isInstance.java
new file mode 100644
index 00000000..3a8794ee
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new EmptyStackException()));
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isInterface.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isInterface.java
new file mode 100644
index 00000000..485fc71e
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isLocalClass.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..1e5a692b
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isMemberClass.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..7124cba3
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isPrimitive.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..eb74db80
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/classInfo/isSynthetic.java b/gnu/testlet/java/util/EmptyStackException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..7797df9b
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.util.EmptyStackException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test for method java.util.EmptyStackException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new EmptyStackException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/EmptyStackException/constructor.java b/gnu/testlet/java/util/EmptyStackException/constructor.java
new file mode 100644
index 00000000..03e9bf18
--- /dev/null
+++ b/gnu/testlet/java/util/EmptyStackException/constructor.java
@@ -0,0 +1,50 @@
+// Test if instances of a class java.util.EmptyStackException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.EmptyStackException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EmptyStackException;
+
+
+
+/**
+ * Test if instances of a class java.util.EmptyStackException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ EmptyStackException object1 = new EmptyStackException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.util.EmptyStackException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/EnumSet/CVS/Entries b/gnu/testlet/java/util/EnumSet/CVS/Entries
new file mode 100644
index 00000000..47567ba4
--- /dev/null
+++ b/gnu/testlet/java/util/EnumSet/CVS/Entries
@@ -0,0 +1,3 @@
+/Colour.java/1.1/Sun Dec 23 19:13:21 2007//
+/ComplementOf.java/1.2/Wed May 21 15:10:46 2008//
+D
diff --git a/gnu/testlet/java/util/EnumSet/CVS/Repository b/gnu/testlet/java/util/EnumSet/CVS/Repository
new file mode 100644
index 00000000..ef7d2567
--- /dev/null
+++ b/gnu/testlet/java/util/EnumSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/EnumSet
diff --git a/gnu/testlet/java/util/EnumSet/CVS/Root b/gnu/testlet/java/util/EnumSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/EnumSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/EnumSet/Colour.java b/gnu/testlet/java/util/EnumSet/Colour.java
new file mode 100644
index 00000000..428193ea
--- /dev/null
+++ b/gnu/testlet/java/util/EnumSet/Colour.java
@@ -0,0 +1,38 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.EnumSet;
+
+/**
+ * A test enumeration.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public enum Colour
+{
+ RED,
+ ORANGE,
+ YELLOW,
+ GREEN,
+ BLUE,
+ INDIGO,
+ VIOLET;
+}
diff --git a/gnu/testlet/java/util/EnumSet/ComplementOf.java b/gnu/testlet/java/util/EnumSet/ComplementOf.java
new file mode 100644
index 00000000..e8c972ba
--- /dev/null
+++ b/gnu/testlet/java/util/EnumSet/ComplementOf.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.5
+// Uses: Colour
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.EnumSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EnumSet;
+
+/**
+ * Tests the {@link java.util.EnumSet#complementOf(java.util.EnumSet)}
+ * method.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class ComplementOf
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ /* Inverse of empty set should be full set */
+ EnumSet<Colour> empty = EnumSet.noneOf(Colour.class);
+ h.debug("Empty: " + empty);
+ EnumSet<Colour> full = EnumSet.complementOf(empty);
+ h.debug("Full: " + full);
+ h.check(full.size() == Colour.class.getEnumConstants().length, "Inverse of empty is full");
+ EnumSet<Colour> empty2 = EnumSet.complementOf(full);
+ h.debug("Empty2: " + empty2);
+ h.check(empty2.size() == 0, "Inverse of full is empty");
+ h.check(empty.equals(empty2), "Inversing the inverse is same as original");
+ }
+}
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries
new file mode 100644
index 00000000..c82f89cd
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries
@@ -0,0 +1,6 @@
+/TryCatch.java/1.1/Tue Jul 17 15:25:00 2012//
+/constructor.java/1.1/Tue Jul 17 15:25:00 2012//
+/getConversion.java/1.1/Mon Jul 23 15:58:06 2012//
+/getFlags.java/1.1/Mon Jul 23 15:58:06 2012//
+/getMessage.java/1.1/Mon Jul 23 15:58:06 2012//
+D
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries.Log b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Repository b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Repository
new file mode 100644
index 00000000..7763e346
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/FormatFlagsConversionMismatchException
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Root b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/TryCatch.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/TryCatch.java
new file mode 100644
index 00000000..02a34c8a
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.FormatFlagsConversionMismatchException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.FormatFlagsConversionMismatchException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+ }
+ catch (FormatFlagsConversionMismatchException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Entries b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Entries
new file mode 100644
index 00000000..26bce0fa
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Tue Jul 17 15:25:00 2012//
+/getInterfaces.java/1.1/Tue Jul 17 15:25:00 2012//
+/getModifiers.java/1.1/Tue Jul 17 15:25:00 2012//
+/getName.java/1.1/Tue Jul 17 15:25:00 2012//
+/getPackage.java/1.1/Tue Jul 17 15:25:00 2012//
+/getSimpleName.java/1.1/Tue Jul 17 15:25:00 2012//
+/getSuperclass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isAssignableFrom.java/1.1/Tue Jul 17 15:25:00 2012//
+/isInstance.java/1.1/Tue Jul 17 15:25:00 2012//
+/isInterface.java/1.1/Tue Jul 17 15:25:00 2012//
+/isLocalClass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isMemberClass.java/1.1/Tue Jul 17 15:25:00 2012//
+/isPrimitive.java/1.1/Tue Jul 17 15:25:00 2012//
+/isSynthetic.java/1.1/Tue Jul 17 15:25:00 2012//
+D
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Repository b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Repository
new file mode 100644
index 00000000..556ce7d9
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Root b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/InstanceOf.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..73759dcae
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/InstanceOf.java
@@ -0,0 +1,65 @@
+// Test for instanceof operator applied to a class java.util.FormatFlagsConversionMismatchException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.FormatFlagsConversionMismatchException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class FormatFlagsConversionMismatchException
+ FormatFlagsConversionMismatchException o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // basic check of instanceof operator
+ harness.check(o instanceof FormatFlagsConversionMismatchException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getInterfaces.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..b91aa83b
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getModifiers.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getModifiers.java
new file mode 100644
index 00000000..e875526c
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getName.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getName.java
new file mode 100644
index 00000000..77c9f168
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.FormatFlagsConversionMismatchException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getPackage.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getPackage.java
new file mode 100644
index 00000000..4cd83c9a
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSimpleName.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..729f191a
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "FormatFlagsConversionMismatchException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSuperclass.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..416f0596
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..484c1d82
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(FormatFlagsConversionMismatchException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInstance.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInstance.java
new file mode 100644
index 00000000..a6b5c7a7
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c')));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInterface.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInterface.java
new file mode 100644
index 00000000..b80df62e
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isLocalClass.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..263d54e4
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isMemberClass.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..3b038eac
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isPrimitive.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..742d9680
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isSynthetic.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c380b23f
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatFlagsConversionMismatchException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test for method java.util.FormatFlagsConversionMismatchException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatFlagsConversionMismatchException("FormatFlagsConversionMismatchException", 'c');
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/constructor.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/constructor.java
new file mode 100644
index 00000000..f702ec01
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/constructor.java
@@ -0,0 +1,51 @@
+// Test if instances of a class java.util.FormatFlagsConversionMismatchException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test if instances of a class java.util.FormatFlagsConversionMismatchException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FormatFlagsConversionMismatchException object1 = new FormatFlagsConversionMismatchException("nothing happens", 'c');
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.FormatFlagsConversionMismatchException"));
+ harness.check(object1.toString().contains("nothing happens"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getConversion.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getConversion.java
new file mode 100644
index 00000000..0bd03cae
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getConversion.java
@@ -0,0 +1,62 @@
+// Test of a method java.util.FormatFlagsConversionMismatchException.getConversion()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test of a method java.util.FormatFlagsConversionMismatchException.getConversion()
+ */
+public class getConversion implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FormatFlagsConversionMismatchException object1 = new FormatFlagsConversionMismatchException("", 'c');
+ harness.check(object1 != null);
+ harness.check(object1.getConversion() == 'c');
+
+ FormatFlagsConversionMismatchException object2 = new FormatFlagsConversionMismatchException("nothing happens", 'c');
+ harness.check(object2 != null);
+ harness.check(object2.getConversion() == 'c');
+
+ FormatFlagsConversionMismatchException object3 = new FormatFlagsConversionMismatchException("nothing happens", ' ');
+ harness.check(object3 != null);
+ harness.check(object3.getConversion() == ' ');
+
+ FormatFlagsConversionMismatchException object4 = new FormatFlagsConversionMismatchException("nothing happens", '\u1234');
+ harness.check(object4 != null);
+ harness.check(object4.getConversion() == '\u1234');
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getFlags.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getFlags.java
new file mode 100644
index 00000000..b92f41c5
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getFlags.java
@@ -0,0 +1,56 @@
+// Test of a method java.util.FormatFlagsConversionMismatchException.getFlags()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test of a method java.util.FormatFlagsConversionMismatchException.getFlags()
+ */
+public class getFlags implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FormatFlagsConversionMismatchException object1 = new FormatFlagsConversionMismatchException("", 'c');
+ harness.check(object1 != null);
+ harness.check(object1.getFlags() != null);
+ harness.check(object1.getFlags().isEmpty());
+
+ FormatFlagsConversionMismatchException object2 = new FormatFlagsConversionMismatchException("nothing happens", 'c');
+ harness.check(object2 != null);
+ harness.check(object2.getFlags() != null);
+ harness.check(object2.getFlags().contains("nothing happens"));
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getMessage.java b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getMessage.java
new file mode 100644
index 00000000..061ae769
--- /dev/null
+++ b/gnu/testlet/java/util/FormatFlagsConversionMismatchException/getMessage.java
@@ -0,0 +1,68 @@
+// Test of a method java.util.FormatFlagsConversionMismatchException.getMessage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatFlagsConversionMismatchException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatFlagsConversionMismatchException;
+
+
+
+/**
+ * Test of a method java.util.FormatFlagsConversionMismatchException.getMessage()
+ */
+public class getMessage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FormatFlagsConversionMismatchException object1 = new FormatFlagsConversionMismatchException("", 'c');
+ harness.check(object1 != null);
+ harness.check(object1.getMessage() != null);
+ harness.check(object1.getMessage().contains("Flags ="));
+ harness.check(object1.getMessage().contains("Conversion ="));
+
+ FormatFlagsConversionMismatchException object2 = new FormatFlagsConversionMismatchException("nothing happens", 'c');
+ harness.check(object2 != null);
+ harness.check(object2.getMessage() != null);
+ harness.check(object2.getMessage().contains("nothing happens"));
+ harness.check(object2.getMessage().contains("Flags ="));
+ harness.check(object2.getMessage().contains("Conversion ="));
+
+ FormatFlagsConversionMismatchException object3 = new FormatFlagsConversionMismatchException("", '@');
+ harness.check(object3 != null);
+ harness.check(object3.getMessage() != null);
+ harness.check(object3.getMessage().contains("@"));
+
+ FormatFlagsConversionMismatchException object4 = new FormatFlagsConversionMismatchException("nothing happens", '@');
+ harness.check(object4 != null);
+ harness.check(object4.getMessage() != null);
+ harness.check(object4.getMessage().contains("@"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/CVS/Entries b/gnu/testlet/java/util/FormatterClosedException/CVS/Entries
new file mode 100644
index 00000000..36538c51
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Mon Jul 23 15:58:06 2012//
+/constructor.java/1.1/Mon Jul 23 15:58:06 2012//
+D
diff --git a/gnu/testlet/java/util/FormatterClosedException/CVS/Entries.Log b/gnu/testlet/java/util/FormatterClosedException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/FormatterClosedException/CVS/Repository b/gnu/testlet/java/util/FormatterClosedException/CVS/Repository
new file mode 100644
index 00000000..3c2118a7
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/FormatterClosedException
diff --git a/gnu/testlet/java/util/FormatterClosedException/CVS/Root b/gnu/testlet/java/util/FormatterClosedException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/FormatterClosedException/TryCatch.java b/gnu/testlet/java/util/FormatterClosedException/TryCatch.java
new file mode 100644
index 00000000..57362984
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/TryCatch.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.FormatterClosedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.FormatterClosedException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new FormatterClosedException();
+ }
+ catch (FormatterClosedException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Entries b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Entries
new file mode 100644
index 00000000..02d1c4df
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Entries
@@ -0,0 +1,15 @@
+/InstanceOf.java/1.1/Mon Jul 23 15:58:06 2012//
+/getInterfaces.java/1.1/Mon Jul 23 15:58:06 2012//
+/getModifiers.java/1.1/Mon Jul 23 15:58:06 2012//
+/getName.java/1.1/Mon Jul 23 15:58:06 2012//
+/getPackage.java/1.1/Mon Jul 23 15:58:06 2012//
+/getSimpleName.java/1.1/Mon Jul 23 15:58:06 2012//
+/getSuperclass.java/1.1/Mon Jul 23 15:58:06 2012//
+/isAssignableFrom.java/1.1/Mon Jul 23 15:58:06 2012//
+/isInstance.java/1.1/Mon Jul 23 15:58:06 2012//
+/isInterface.java/1.1/Mon Jul 23 15:58:06 2012//
+/isLocalClass.java/1.1/Mon Jul 23 15:58:06 2012//
+/isMemberClass.java/1.1/Mon Jul 23 15:58:06 2012//
+/isPrimitive.java/1.1/Mon Jul 23 15:58:06 2012//
+/isSynthetic.java/1.1/Mon Jul 23 15:58:06 2012//
+D
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Repository b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Repository
new file mode 100644
index 00000000..a9bf52df
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/FormatterClosedException/classInfo
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Root b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/InstanceOf.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..16d23dc5
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/InstanceOf.java
@@ -0,0 +1,63 @@
+// Test for instanceof operator applied to a class java.util.FormatterClosedException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+import java.lang.IllegalStateException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.FormatterClosedException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class FormatterClosedException
+ FormatterClosedException o = new FormatterClosedException();
+
+ // basic check of instanceof operator
+ harness.check(o instanceof FormatterClosedException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalStateException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getInterfaces.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..80dc63bb
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getInterfaces.java
@@ -0,0 +1,55 @@
+// Test for method java.util.FormatterClosedException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getModifiers.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getModifiers.java
new file mode 100644
index 00000000..03c42054
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getModifiers.java
@@ -0,0 +1,66 @@
+// Test for method java.util.FormatterClosedException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getName.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getName.java
new file mode 100644
index 00000000..34155790
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.FormatterClosedException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getPackage.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getPackage.java
new file mode 100644
index 00000000..38a531d6
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getPackage.java
@@ -0,0 +1,54 @@
+// Test for method java.util.FormatterClosedException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getSimpleName.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..22e2b77b
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getSimpleName.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "FormatterClosedException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/getSuperclass.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..dce41a1b
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/getSuperclass.java
@@ -0,0 +1,54 @@
+// Test for method java.util.FormatterClosedException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.lang.IllegalStateException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..0849a4f7
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isAssignableFrom.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(FormatterClosedException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isInstance.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isInstance.java
new file mode 100644
index 00000000..7e48ffe6
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isInstance.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(c.isInstance(new FormatterClosedException()));
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isInterface.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isInterface.java
new file mode 100644
index 00000000..4edf60b8
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isInterface.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isLocalClass.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..a3e986d0
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isLocalClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isMemberClass.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..3c2e94c1
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isMemberClass.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isPrimitive.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..83e34fb5
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isPrimitive.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/classInfo/isSynthetic.java b/gnu/testlet/java/util/FormatterClosedException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..6942cb78
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/classInfo/isSynthetic.java
@@ -0,0 +1,53 @@
+// Test for method java.util.FormatterClosedException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test for method java.util.FormatterClosedException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class Double
+ Object o = new FormatterClosedException();
+
+ // get a runtime class of an object "o"
+ Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/FormatterClosedException/constructor.java b/gnu/testlet/java/util/FormatterClosedException/constructor.java
new file mode 100644
index 00000000..2c00ee61
--- /dev/null
+++ b/gnu/testlet/java/util/FormatterClosedException/constructor.java
@@ -0,0 +1,50 @@
+// Test if instances of a class java.util.FormatterClosedException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.FormatterClosedException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.FormatterClosedException;
+
+
+
+/**
+ * Test if instances of a class java.util.FormatterClosedException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ FormatterClosedException object1 = new FormatterClosedException();
+ harness.check(object1 != null);
+ harness.check(object1.toString(), "java.util.FormatterClosedException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/GregorianCalendar/CVS/Entries b/gnu/testlet/java/util/GregorianCalendar/CVS/Entries
new file mode 100644
index 00000000..b880c547
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/CVS/Entries
@@ -0,0 +1,11 @@
+/conversion.java/1.1/Tue Jun 29 13:56:09 2004//
+/dayOfWeekInMonth.java/1.3/Thu Apr 12 08:47:57 2007//
+/equals.java/1.1/Fri Feb 18 13:27:19 2005//
+/first.java/1.3/Thu Apr 5 10:18:35 2007//
+/getMinimalDaysInFirstWeek.java/1.1/Fri Oct 15 08:22:45 2004//
+/getMinimum.java/1.1/Thu Feb 3 00:42:44 2005//
+/internal.java/1.2/Fri Jul 13 16:04:07 2007//
+/setFirstDayOfWeek.java/1.1/Sat Mar 25 12:41:26 2006//
+/setWeekOfMonth.java/1.1/Sun Jul 30 20:22:32 2006//
+/weekOfYear.java/1.1/Thu Apr 12 12:34:16 2007//
+D
diff --git a/gnu/testlet/java/util/GregorianCalendar/CVS/Repository b/gnu/testlet/java/util/GregorianCalendar/CVS/Repository
new file mode 100644
index 00000000..3ab1bd82
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/GregorianCalendar
diff --git a/gnu/testlet/java/util/GregorianCalendar/CVS/Root b/gnu/testlet/java/util/GregorianCalendar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/GregorianCalendar/conversion.java b/gnu/testlet/java/util/GregorianCalendar/conversion.java
new file mode 100644
index 00000000..4871da54
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/conversion.java
@@ -0,0 +1,159 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 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.java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+/**
+ * Checks conversion of millisecond time values to Gregorian dates (and
+ * back) across the range of time values.
+ */
+public class conversion implements Testlet
+{
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ testTimeZero();
+ testMonotonic1();
+ testMonotonic2();
+ }
+
+ private void testTimeZero()
+ {
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ cal.setTimeInMillis(0L);
+ harness.checkPoint("Testing setTimeInMillis(0L)");
+ harness.check(cal.getTimeInMillis(), 0L);
+ harness.check(cal.get(Calendar.ERA), GregorianCalendar.AD);
+ harness.check(cal.get(Calendar.YEAR), 1970);
+ harness.check(cal.get(Calendar.MONTH), Calendar.JANUARY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 1);
+ harness.check(cal.get(Calendar.HOUR_OF_DAY), 0);
+ harness.check(cal.get(Calendar.MINUTE), 0);
+ harness.check(cal.get(Calendar.SECOND), 0);
+ harness.check(cal.get(Calendar.MILLISECOND), 0);
+ }
+
+ private void testMonotonic1()
+ {
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ // Check in range 0 <= t <= max long
+ long[] times = new long[64];
+ times[0] = 0L;
+ for (int i = 1; i < 63; i++) {
+ times[i] = 1L << i;
+ }
+ times[63] = Long.MAX_VALUE;
+
+ cal.setTimeInMillis(times[0]);
+ long[] prevFields = getCalFields(cal);
+ for (int i = 1; i < times.length; i++) {
+ cal.setTimeInMillis(times[i]);
+ long[] fields = getCalFields(cal);
+ harness.checkPoint("Testing setTimeInMillis(" + times[i] + ") i = " + i);
+ harness.check(fields[0], times[i]);
+ for (int j = 1; j < fields.length; j++) {
+ if (fields[j] != prevFields[j]) {
+ harness.check(fields[j] > prevFields[j]);
+ if (fields[j] < prevFields[j]) {
+ harness.debug("cal field " + j + " " +
+ dumpCalFields(fields) + " < " +
+ dumpCalFields(prevFields));
+ }
+ break;
+ }
+ }
+ prevFields = fields;
+ }
+ }
+
+ private void testMonotonic2()
+ {
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ // Check in range min long <= t < 0
+ long[] times = new long[63];
+ for (int i = 0; i < 63; i++) {
+ times[62 - i] = -1L << i;
+ }
+
+ cal.setTimeInMillis(times[0]);
+ long[] prevFields = getCalFields(cal);
+ for (int i = 1; i < times.length; i++) {
+ cal.setTimeInMillis(times[i]);
+ long[] fields = getCalFields(cal);
+ harness.checkPoint("Testing setTimeInMillis(" + times[i] + ") i = " + i);
+ harness.check(fields[0], times[i]);
+ if (fields[1] == prevFields[1]) {
+ for (int j = 2; j < fields.length; j++) {
+ if (fields[j] != prevFields[j]) {
+ // In the BC era, years are >= 1 and go backwards.
+ boolean ok =
+ ((fields[j] > prevFields[j]) == (j > 2 || fields[1] == 1));
+ harness.check(ok);
+ if (!ok) {
+ harness.debug("cal field " + j + " " +
+ dumpCalFields(fields) + " < " +
+ dumpCalFields(prevFields));
+ }
+ break;
+ }
+ }
+ }
+ prevFields = fields;
+ }
+ }
+
+ private long[] getCalFields(GregorianCalendar cal) {
+ return new long[] {
+ cal.getTimeInMillis(),
+ cal.get(Calendar.ERA),
+ cal.get(Calendar.YEAR),
+ cal.get(Calendar.MONTH),
+ cal.get(Calendar.DAY_OF_MONTH),
+ cal.get(Calendar.HOUR_OF_DAY),
+ cal.get(Calendar.MINUTE),
+ cal.get(Calendar.SECOND),
+ cal.get(Calendar.MILLISECOND)
+ };
+ }
+
+ private String dumpCalFields(long[] fields) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(fields[0]);
+ for (int i = 1; i < fields.length; i++) {
+ sb.append((i == 1) ? " {" : ", ");
+ sb.append(fields[i]);
+ }
+ sb.append("}");
+ return sb.toString();
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java b/gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java
new file mode 100644
index 00000000..749152e5
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/dayOfWeekInMonth.java
@@ -0,0 +1,124 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.GregorianCalendar;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class dayOfWeekInMonth implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ GregorianCalendar c = new GregorianCalendar();
+ GregorianCalendar d = new GregorianCalendar();
+ GregorianCalendar e = new GregorianCalendar();
+
+ // 31 day months whose first days are the specified weekdays
+ int testMonths[][] =
+ {{Calendar.JANUARY, 2007, Calendar.MONDAY},
+ {Calendar.MAY, 2007, Calendar.TUESDAY},
+ {Calendar.AUGUST, 2007, Calendar.WEDNESDAY},
+ {Calendar.MARCH, 2007, Calendar.THURSDAY},
+ {Calendar.DECEMBER, 2006, Calendar.FRIDAY},
+ {Calendar.DECEMBER, 2007, Calendar.SATURDAY},
+ {Calendar.JULY, 2007, Calendar.SUNDAY}};
+
+ for (int minimalDaysInFirstWeek = 1;
+ minimalDaysInFirstWeek <= 7; minimalDaysInFirstWeek++) {
+
+ c.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+ d.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+ e.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+
+ for (int firstDayOfWeek = Calendar.SUNDAY;
+ firstDayOfWeek <= Calendar.SATURDAY; firstDayOfWeek++) {
+
+ c.setFirstDayOfWeek(firstDayOfWeek);
+ d.setFirstDayOfWeek(firstDayOfWeek);
+ e.setFirstDayOfWeek(firstDayOfWeek);
+
+ for (int i = 0; i < testMonths.length; i++) {
+ int month = testMonths[i][0];
+ int year = testMonths[i][1];
+ int first = testMonths[i][2];
+
+ for (int day = 1; day <= 31; day++) {
+ // First we set YEAR + MONTH + DAY_OF_MONTH and check we
+ // have DAY_OF_WEEK_IN_MONTH and WEEK_OF_MONTH correct.
+
+ c.set(year, month, day);
+ int dayOfWeekInMonth = (day + 6) / 7;
+
+ harness.check(
+ c.get(Calendar.DAY_OF_WEEK_IN_MONTH) == dayOfWeekInMonth);
+
+ int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
+ if (day == 1)
+ harness.check(dayOfWeek == first); // sanity
+
+ // which day of the week are we (0..6) relative to firstDayOfWeek
+ int relativeDayOfWeek = (7 + dayOfWeek - firstDayOfWeek) % 7;
+
+ // which day of the week is the first of this month?
+ // nb 35 is the smallest multiple of 7 that ensures that
+ // the left hand side of the modulo operator is positive.
+ int relativeDayOfFirst = (relativeDayOfWeek - day + 1 + 35) % 7;
+
+ // which week of the month is the first of this month in?
+ int weekOfFirst =
+ ((7 - relativeDayOfFirst) >= minimalDaysInFirstWeek) ? 1 : 0;
+
+ // which week of the month is this day in?
+ int weekOfMonth =
+ (day + relativeDayOfFirst - 1) / 7 + weekOfFirst;
+
+ harness.check(c.get(Calendar.WEEK_OF_MONTH) == weekOfMonth);
+
+ // Then we set YEAR + MONTH + DAY_OF_WEEK_IN_MONTH +
+ // DAY_OF_WEEK and check we have DAY_OF_MONTH correct.
+
+ d.clear();
+ d.set(Calendar.YEAR, year);
+ d.set(Calendar.MONTH, month);
+ d.set(Calendar.DAY_OF_WEEK_IN_MONTH, dayOfWeekInMonth);
+ d.set(Calendar.DAY_OF_WEEK, dayOfWeek);
+ harness.check(d.get(Calendar.DAY_OF_MONTH) == day);
+
+ // Finally we set YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ // and check we have DAY_OF_MONTH correct.
+
+ e.clear();
+ e.set(Calendar.YEAR, year);
+ e.set(Calendar.MONTH, month);
+ e.set(Calendar.WEEK_OF_MONTH, weekOfMonth);
+ e.set(Calendar.DAY_OF_WEEK, dayOfWeek);
+ harness.check(e.get(Calendar.DAY_OF_MONTH) == day);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/equals.java b/gnu/testlet/java/util/GregorianCalendar/equals.java
new file mode 100644
index 00000000..db1d346a
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/equals.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the equals() method in the {@link GregorianCalendar} class.
+ * Note that the spec has been filled out in the 1.5 API docs.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ long millis = System.currentTimeMillis();
+ GregorianCalendar c1 = new GregorianCalendar();
+ GregorianCalendar c2 = new GregorianCalendar();
+ c1.setTimeInMillis(millis);
+ c2.setTimeInMillis(millis);
+ harness.check(c1.equals(c2));
+ harness.check(c2.equals(c1));
+
+ c1.setTimeInMillis(0);
+ harness.check(!c1.equals(c2));
+ c2.setTimeInMillis(0);
+ harness.check(c1.equals(c2));
+
+ c1.setGregorianChange(new Date(Long.MIN_VALUE));
+ harness.check(!c1.equals(c2));
+ c2.setGregorianChange(new Date(Long.MIN_VALUE));
+ harness.check(c1.equals(c2));
+
+ c1.setFirstDayOfWeek(Calendar.WEDNESDAY);
+ harness.check(!c1.equals(c2));
+ c2.setFirstDayOfWeek(Calendar.WEDNESDAY);
+ harness.check(c1.equals(c2));
+
+ c1.setLenient(!c1.isLenient());
+ harness.check(!c1.equals(c2));
+ c2.setLenient(c1.isLenient());
+ harness.check(c1.equals(c2));
+
+ c1.setMinimalDaysInFirstWeek(6);
+ harness.check(!c1.equals(c2));
+ c2.setMinimalDaysInFirstWeek(6);
+ harness.check(c1.equals(c2));
+
+ c1.setTimeZone(new SimpleTimeZone(123, "123"));
+ harness.check(!c1.equals(c2));
+ c2.setTimeZone(new SimpleTimeZone(123, "123"));
+ harness.check(c1.equals(c2));
+ }
+
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/first.java b/gnu/testlet/java/util/GregorianCalendar/first.java
new file mode 100644
index 00000000..3652d35e
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/first.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+/**
+ * Checks that the first day of the month is day one.
+ */
+public class first implements Testlet
+{
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+
+ // Julian dates.
+ testYears(1400);
+
+ // Gregorian dates.
+ testYears(2000);
+ }
+
+ private void testYears(int startYear)
+ {
+ for (int year = startYear; year <= startYear + 5; year++)
+ for (int month = 0; month < 12; month++)
+ {
+ GregorianCalendar cal = new GregorianCalendar(year, month, 1);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 1,
+ "day 1-" + month + "-" + year);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/getMinimalDaysInFirstWeek.java b/gnu/testlet/java/util/GregorianCalendar/getMinimalDaysInFirstWeek.java
new file mode 100644
index 00000000..02c05c55
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/getMinimalDaysInFirstWeek.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the getMinimalDaysInFirstWeek() method in the
+ * {@link GregorianCalendar} class.
+ */
+public class getMinimalDaysInFirstWeek implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test10546(harness);
+ }
+
+ /**
+ * A test to support Classpath bug report 10456.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void test10546(TestHarness harness) {
+
+ Calendar c1 = new GregorianCalendar(TimeZone.getTimeZone("Europe/London"), Locale.UK);
+ c1.clear();
+ c1.set(Calendar.YEAR, 2005);
+ c1.set(Calendar.WEEK_OF_YEAR, 1);
+ c1.set(Calendar.DAY_OF_WEEK, c1.getFirstDayOfWeek());
+ harness.check(c1.getMinimalDaysInFirstWeek(), 4);
+
+ Calendar c2 = new GregorianCalendar(TimeZone.getTimeZone("Europe/Paris"), Locale.FRANCE);
+ c2.clear();
+ c2.set(Calendar.YEAR, 2005);
+ c2.set(Calendar.WEEK_OF_YEAR, 1);
+ c2.set(Calendar.DAY_OF_WEEK, c2.getFirstDayOfWeek());
+ harness.check(c2.getMinimalDaysInFirstWeek(), 4);
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/getMinimum.java b/gnu/testlet/java/util/GregorianCalendar/getMinimum.java
new file mode 100644
index 00000000..775bfef1
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/getMinimum.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 David Daney <ddaney@avtrex.com>
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+/**
+ * Some checks for the getMinimum() method in the
+ * {@link GregorianCalendar} class.
+ */
+public class getMinimum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testX(harness);
+ }
+
+ /**
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testX(TestHarness harness) {
+ Calendar c1 = new GregorianCalendar();
+ harness.check(c1.getMinimum(Calendar.HOUR_OF_DAY), 0);
+ harness.check(c1.getMinimum(Calendar.MINUTE), 0);
+ harness.check(c1.getMinimum(Calendar.SECOND), 0);
+ harness.check(c1.getMinimum(Calendar.MILLISECOND), 0);
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/internal.java b/gnu/testlet/java/util/GregorianCalendar/internal.java
new file mode 100644
index 00000000..760cc2de
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/internal.java
@@ -0,0 +1,434 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.GregorianCalendar;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class internal implements Testlet
+{
+ private static class TestCalendar extends GregorianCalendar
+ {
+ /**
+ * Creates a calendar with all values unset and zeroed.
+ */
+ public static TestCalendar getTestCalendar(TimeZone zone, Locale locale)
+ {
+ // There is no way to get a calendar with a specific
+ // locale without calling one of the constructors that
+ // calls setTimeInMillis(). So we do it this way...
+ Locale defaultLocale = Locale.getDefault();
+ Locale.setDefault(locale);
+ try
+ {
+ TestCalendar c = new TestCalendar();
+ c.setTimeZone(zone);
+ return c;
+ }
+ finally
+ {
+ Locale.setDefault(defaultLocale);
+ }
+ }
+
+ private TestCalendar()
+ {
+ // Initializing this way avoids calling setTimeInMillis(),
+ // giving us an object whose time has never been set.
+ super(2007, Calendar.APRIL, 11);
+ clear();
+ }
+
+ /**
+ * Compare the internal state of this calendar with the supplied values.
+ */
+ public void checkState(
+ TestHarness harness,
+ boolean areFieldsSet, int isSetBitmask, int[] fields,
+ boolean isTimeSet, long time)
+ {
+ String expected, actual;
+ boolean success;
+
+ expected = stateString(areFieldsSet, isSetBitmask, isTimeSet, time);
+ harness.debug("expecting " + expected);
+ actual = stateString(
+ this.areFieldsSet, isSet, this.isTimeSet, this.time);
+ success = expected.equals(actual);
+ if (!success)
+ harness.debug(" got " + actual);
+ harness.check(success);
+
+ expected = stateString(fields);
+ harness.debug("expecting " + expected);
+ actual = stateString(this.fields);
+ success = expected.equals(actual);
+ if (!success)
+ harness.debug(" got " + actual);
+ harness.check(success);
+ }
+
+ /**
+ * Return a string representation of part of the internal state.
+ */
+ private String stateString(
+ boolean areFieldsSet, int isSetBitmask, boolean isTimeSet, long time)
+ {
+ String result = areFieldsSet + " (";
+ for (int i = 0; i < FIELD_COUNT; i++)
+ result += ((isSetBitmask & (1 << i)) != 0) ? "S" : "-";
+ result += "), " + isTimeSet + " (" + time + ")";
+ return result;
+ }
+
+ /**
+ * Return a string representation of part of the internal state.
+ */
+ private String stateString(
+ boolean areFieldsSet, boolean[] isSet, boolean isTimeSet, long time)
+ {
+ int isSetBitmask = 0;
+ for (int i = 0; i < FIELD_COUNT; i++)
+ {
+ if (isSet[i])
+ isSetBitmask |= 1 << i;
+ }
+ return stateString(areFieldsSet, isSetBitmask, isTimeSet, time);
+ }
+
+ /**
+ * Return a string representation of part of the internal state.
+ */
+ private String stateString(int[] fields)
+ {
+ String result = "{";
+ for (int i = 0; i < FIELD_COUNT; i++)
+ {
+ if (i > 0)
+ result += ", ";
+ result += fields[i];
+ }
+ result += "}";
+ return result;
+ }
+
+// public void debug()
+// {
+// System.out.print(areFieldsSet + " (");
+// for (int i = 0; i < FIELD_COUNT; i++)
+// System.out.print(isSet[i] ? "S" : "-");
+// System.out.print("/");
+// for (int i = 0; i < FIELD_COUNT; i++)
+// System.out.print(isSet(i) ? "S" : "-");
+// System.out.println("), " + isTimeSet + " (" + time + ")");
+//
+// System.out.print(" {");
+// for (int i = 0; i < FIELD_COUNT; i++)
+// {
+// if (i > 0)
+// System.out.print(", ");
+// // if (i > 2 && i < 5)
+// // System.out.print("\u001B[1;33m");
+// System.out.print(fields[i]);
+// // if (i > 2 && i < 5)
+// // System.out.print("\u001B[0m");
+// }
+// System.out.println("}");
+// }
+
+// protected void computeTime()
+// {
+// System.out.println(" computeTime:");
+// debug();
+// super.computeTime();
+// debug();
+// System.out.println(" /computeTime");
+// }
+
+// protected void computeFields()
+// {
+// //areFieldsSet = false;
+// System.out.println(" computeFields:");
+// debug();
+// super.computeFields();
+// debug();
+// System.out.println(" /computeFields");
+// }
+
+// protected void complete()
+// {
+// System.out.println(" complete:");
+// debug();
+// super.complete();
+// debug();
+// System.out.println(" /complete");
+// }
+ }
+
+ /**
+ * Generate every possible permutation of a specified length
+ */
+ private static class Permutator implements Iterator
+ {
+ private int size, length, pos;
+
+ public Permutator(int s)
+ {
+ size = s;
+ length = 1;
+ for (int i = 2; i <= size; i++)
+ length *= i;
+ pos = 0;
+ }
+
+ public boolean hasNext()
+ {
+ return pos < length;
+ }
+
+ public Object next()
+ {
+ int[] result = new int[size];
+ boolean[] used = new boolean[size];
+ for (int tmp = pos, j = size; j > 0; tmp /= j, j--)
+ {
+ int choice = tmp % j;
+ for (int k = 0; k < size; k++)
+ {
+ if (!used[k])
+ {
+ if (choice == 0)
+ {
+ result[size - j] = k;
+ used[k] = true;
+ break;
+ }
+ choice--;
+ }
+ }
+ }
+ pos++;
+ return result;
+ }
+
+ public void remove()
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ int[][] checkFields = {
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+ {1, 1970, 0, 1, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, -18000000, 0},
+ {1, 1969, 11, 1, 5, 31, 365, 4, 5, 1, 10, 22, 0, 0, 0, -25200000, 0},
+ {1, 1970, 11, 1, 5, 31, 365, 5, 5, 1, 10, 22, 0, 0, 0, -25200000, 0},
+ {1, 1969, 0, 5, 5, 31, 31, 6, 5, 1, 10, 22, 0, 0, 0, -25200000, 0},
+ {1, 1970, 0, 1, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, -25200000, 0},
+ {0, 2007, 3, 15, 4, 18, 107, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0},
+ };
+
+ TestCalendar c = TestCalendar.getTestCalendar(
+ TimeZone.getTimeZone("EST"), Locale.US);
+
+ // check it really is as blank as it should be.
+ c.checkState(harness, false, 0, checkFields[0], false, 0);
+
+ // check that things that affect week numbering are as expected.
+ harness.check(c.getFirstDayOfWeek() == Calendar.SUNDAY);
+ harness.check(c.getMinimalDaysInFirstWeek() == 1);
+
+// // print the heading.
+// String vendor = System.getProperty("java.vendor");
+// if (vendor.endsWith("."))
+// vendor = vendor.substring(0, vendor.length() - 1);
+// System.out.println(vendor);
+// for (int i = 0; i < vendor.length(); i++)
+// System.out.print('=');
+// System.out.println();
+
+ // cause a complete() and check we got the epoch right.
+ c.get(Calendar.YEAR);
+ c.checkState(harness, true, 0x1ffff, checkFields[1], true, 18000000);
+
+ // set a different timezone and check that areFieldsSet is cleared.
+ c.setTimeZone(TimeZone.getTimeZone("MST"));
+ c.checkState(harness, false, 0x1ffff, checkFields[1], true, 18000000);
+
+ // cause a complete() and check the fields recalculate correctly.
+ c.get(Calendar.YEAR);
+ c.checkState(harness, true, 0x1ffff, checkFields[2], true, 18000000);
+
+ // clear each field in turn and check everything recalculates correctly.
+ for (int i = 0; i < Calendar.FIELD_COUNT; i++)
+ {
+ TestCalendar d = (TestCalendar) c.clone();
+ int[] expectFields = (int[]) checkFields[2].clone();
+ long expectTime = 18000000;
+
+ d.checkState(harness, true, 0x1ffff, expectFields, true, expectTime);
+
+ d.clear(i);
+ expectFields[i] = 0;
+
+ d.checkState(harness, false, ~(1<<i), expectFields, false, expectTime);
+
+ d.get(Calendar.YEAR);
+ if (i == Calendar.YEAR)
+ {
+ expectFields = checkFields[3];
+ expectTime = 31554000000L;
+ }
+ else if (i == Calendar.MONTH)
+ {
+ expectFields = checkFields[4];
+ expectTime = -28839600000L;
+ }
+ else
+ {
+ expectFields = checkFields[2];
+ expectTime = 18000000;
+ }
+
+ d.checkState(harness, true, 0x1ffff, expectFields, true, expectTime);
+ }
+
+ // clear the entire calendar and check it recalculates to the epoch.
+ c.clear();
+ c.checkState(harness, false, 0, checkFields[0], false, 18000000);
+ c.get(Calendar.YEAR);
+ c.checkState(harness, true, 0x1ffff, checkFields[5], true, 25200000);
+
+ // set the time and check that the fields are recalculated correctly
+ c.setTimeInMillis(18000000);
+ c.checkState(harness, true, 0x1ffff, checkFields[2], true, 18000000);
+
+ // check that setting fields in different orders works
+ for (Iterator iter = new Permutator(8); iter.hasNext(); )
+ {
+ int[] order = (int[]) iter.next();
+ for (int i = 0; i < order.length; i++)
+ order[i] += Calendar.YEAR;
+
+ c.setTimeInMillis(0);
+ c.clear();
+ for (int i = 0; i < order.length; i++)
+ c.set(order[i], checkFields[6][order[i]]);
+ c.checkState(harness, false, 0x1fe, checkFields[6], false, 0);
+
+ // checkFields[6] is a set of inconsistant fields which yield
+ // different times depending on which of them were used in the
+ // calculation:
+ //
+ // 1176879600000 YEAR + MONTH + DAY_OF_MONTH
+ // 1177570800000 YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ // 1178175600000 YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ // 1176793200000 YEAR + DAY_OF_YEAR
+ // 1176361200000 YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
+
+ int[] setOrder = new int[Calendar.AM_PM - Calendar.WEEK_OF_YEAR];
+ for (int i = 0, j = setOrder.length - 1; j >= 0; i++)
+ {
+ if (order[i] >= Calendar.WEEK_OF_YEAR
+ && order[i] <= Calendar.DAY_OF_WEEK_IN_MONTH)
+ setOrder[j--] = order[i];
+ }
+
+ long expectTime = -1;
+ if (setOrder[0] == Calendar.DAY_OF_MONTH)
+ {
+ // YEAR + MONTH + DAY_OF_MONTH
+ expectTime = 1176879600000L;
+ }
+ else if (setOrder[0] == Calendar.DAY_OF_WEEK_IN_MONTH)
+ {
+ // YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ expectTime = 1178175600000L;
+ }
+ else if (setOrder[0] == Calendar.DAY_OF_YEAR)
+ {
+ // YEAR + DAY_OF_YEAR
+ expectTime = 1176793200000L;
+ }
+ else if (setOrder[0] == Calendar.WEEK_OF_YEAR)
+ {
+ // YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
+ // (some of them)
+ expectTime = 1176361200000L;
+ }
+ else if (setOrder[0] == Calendar.DAY_OF_WEEK)
+ {
+ for (int i = 1; i < setOrder.length; i++)
+ {
+ if (setOrder[i] == Calendar.DAY_OF_MONTH
+ || setOrder[i] == Calendar.DAY_OF_YEAR)
+ continue;
+
+ if (setOrder[i] == Calendar.WEEK_OF_YEAR)
+ {
+ // YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
+ expectTime = 1176361200000L;
+ }
+ else if (setOrder[i] == Calendar.WEEK_OF_MONTH)
+ {
+ // YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ expectTime = 1177570800000L;
+ }
+ else {
+ // rest of them
+ expectTime = 1178175600000L;
+ }
+ break;
+ }
+ }
+ else
+ {
+ // YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ // (the rest)
+ expectTime = 1177570800000L;
+ }
+
+ long actualTime = c.getTimeInMillis();
+// if (actualTime != expectTime)
+// {
+// System.out.print("expect = " + expectTime + ", actual = "
+// + actualTime + ", setOrder = [");
+// for (int i = 0; i < setOrder.length; i++)
+// {
+// if (i > 0)
+// System.out.print(", ");
+// System.out.print(setOrder[i]);
+// }
+// System.out.println("]");
+// }
+ harness.check(actualTime == expectTime);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/setFirstDayOfWeek.java b/gnu/testlet/java/util/GregorianCalendar/setFirstDayOfWeek.java
new file mode 100644
index 00000000..3981cf3b
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/setFirstDayOfWeek.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2006 Roman Kennke <kennke@aicas.com>
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Tests the setFirstDayOfWeek() method.
+ * This testcase is derived from an actual bug in GregorianCalendar.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setFirstDayOfWeek
+ implements Testlet
+{
+ private int[] mondayDays = new int[]{27, 27, 27, 27, 27, 27, 6, 6, 6, 6, 6,
+ 6, 6, 13, 13, 13, 13, 13, 13, 13, 20,
+ 20, 20, 20, 20, 20, 20, 27, 27, 27, 27,
+ 27};
+ private int[] mondayMonths = new int[]{1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2};
+
+ /**
+ * The entry point into the test.
+ */
+ public void test (TestHarness harness)
+ {
+ Locale.setDefault(Locale.GERMANY);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setFirstDayOfWeek(Calendar.MONDAY);
+ for (int day = 1; day <= 31; day++)
+ {
+ calendar.set(2006, Calendar.MARCH, day);
+ // The day and month should be exactly as we set it.
+
+ // Note: We need to query the WEEK_OF_YEAR, otherwise we don't get
+ // the correct time in the last two tests in classpath.
+ calendar.get(Calendar.WEEK_OF_YEAR);
+ harness.check(calendar.get(Calendar.DAY_OF_MONTH), day);
+ harness.check(calendar.get(Calendar.MONTH), Calendar.MARCH);
+
+ calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+ // The day and month should now be according to the tables above.
+ harness.check(calendar.get(Calendar.DAY_OF_MONTH), mondayDays[day]);
+ harness.check(calendar.get(Calendar.MONTH), mondayMonths[day]);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/setWeekOfMonth.java b/gnu/testlet/java/util/GregorianCalendar/setWeekOfMonth.java
new file mode 100644
index 00000000..887ee42e
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/setWeekOfMonth.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2006 Mark J. Wielaard (mark@klomp.org)
+
+// 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.java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class setWeekOfMonth
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ GregorianCalendar cal;
+ cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
+
+ // Month with 6 weeks
+ cal.set(2006, Calendar.JULY, 30);
+ cal.setLenient(false);
+
+ harness.check(cal.getMaximum(Calendar.WEEK_OF_MONTH), 6);
+
+ cal.clear(Calendar.DAY_OF_MONTH);
+ cal.set(Calendar.WEEK_OF_MONTH, 1);
+ cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 1);
+
+ cal.clear(Calendar.DAY_OF_MONTH);
+ cal.set(Calendar.WEEK_OF_MONTH, 6);
+ cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 31);
+
+ // Month with 4 weeks
+ cal.set(1998, Calendar.FEBRUARY, 14);
+ cal.clear(Calendar.DAY_OF_MONTH);
+ cal.set(Calendar.WEEK_OF_MONTH, 1);
+ cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 1);
+
+ cal.clear(Calendar.DAY_OF_MONTH);
+ cal.set(Calendar.WEEK_OF_MONTH, 4);
+ cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 28);
+ harness.check(cal.get(Calendar.MONTH), Calendar.FEBRUARY);
+
+ // Month with 5 weeks
+ cal.set(1993, Calendar.FEBRUARY, 14);
+ cal.clear(Calendar.DAY_OF_MONTH);
+ cal.set(Calendar.WEEK_OF_MONTH, 5);
+ cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ harness.check(cal.get(Calendar.DAY_OF_MONTH), 28);
+ }
+}
diff --git a/gnu/testlet/java/util/GregorianCalendar/weekOfYear.java b/gnu/testlet/java/util/GregorianCalendar/weekOfYear.java
new file mode 100644
index 00000000..e4decbbb
--- /dev/null
+++ b/gnu/testlet/java/util/GregorianCalendar/weekOfYear.java
@@ -0,0 +1,154 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.1
+
+package gnu.testlet.java.util.GregorianCalendar;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class weekOfYear implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ GregorianCalendar d = new GregorianCalendar();
+ GregorianCalendar e = new GregorianCalendar();
+
+ // Years whose first days are the specified weekdays
+ int testYears[][] =
+ {{2007, 1996, Calendar.MONDAY},
+ {2002, 2008, Calendar.TUESDAY},
+ {2003, 1992, Calendar.WEDNESDAY},
+ {1998, 2004, Calendar.THURSDAY},
+ {1999, 1988, Calendar.FRIDAY},
+ {2005, 2000, Calendar.SATURDAY},
+ {2006, 1956, Calendar.SUNDAY}};
+
+ // Months to test. We definitely want January here,
+ // to check the calculation where January 1 falls
+ // before week 1 of the year.
+ int testMonths[] = {Calendar.JANUARY, Calendar.JULY};
+
+ int monthLengths[] = {31, 28, 31, 30, 31, 30,
+ 31, 31, 30, 31, 30, 31};
+
+ for (int minimalDaysInFirstWeek = 1;
+ minimalDaysInFirstWeek <= 7; minimalDaysInFirstWeek++) {
+
+ d.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+ e.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+
+ for (int firstDayOfWeek = Calendar.SUNDAY;
+ firstDayOfWeek <= Calendar.SATURDAY; firstDayOfWeek++) {
+
+ d.setFirstDayOfWeek(firstDayOfWeek);
+ e.setFirstDayOfWeek(firstDayOfWeek);
+
+ for (int i = 0; i < testYears.length; i++) {
+ int dayOfFirst = testYears[i][2];
+
+ for (int leap = 0; leap <= 1; leap++) {
+ int year = testYears[i][leap];
+
+ for (int j = 0; j < testMonths.length; j++) {
+ int month = testMonths[j];
+
+ for (int day = 1; day <= 31; day++) {
+
+ // First we set YEAR + MONTH + DAY_OF_MONTH and check
+ // we have DAY_OF_YEAR and WEEK_OF_YEAR correct.
+
+ GregorianCalendar c = new GregorianCalendar(year, month, day);
+ c.setMinimalDaysInFirstWeek(minimalDaysInFirstWeek);
+ c.setFirstDayOfWeek(firstDayOfWeek);
+
+ // Which day of the year is this?
+ int dayOfYear = 0;
+ for (int k = 0; k < month; k++)
+ dayOfYear += monthLengths[k];
+ if (month > Calendar.FEBRUARY)
+ dayOfYear += leap;
+ dayOfYear += day;
+
+ harness.check(c.get(Calendar.DAY_OF_YEAR) == dayOfYear);
+
+ // Which day of the week is it?
+ int dayOfWeek = (dayOfFirst + dayOfYear - 2) % 7 + 1;
+ harness.check(c.get(Calendar.DAY_OF_WEEK) == dayOfWeek);
+
+ // Which day of the week is the first of the year,
+ // relative to firstDayOfWeek.
+ int relativeDayOfFirst = (7 + dayOfFirst - firstDayOfWeek) % 7;
+
+ // Which day of the year is week one, day one?
+ int dayOfYearOfWeek1Day1 = 1 - relativeDayOfFirst;
+ if ((7 - relativeDayOfFirst) < minimalDaysInFirstWeek)
+ dayOfYearOfWeek1Day1 += 7;
+
+ // If we're before week one, day one then the week
+ // number will be with respect to the previous year.
+ // I think this is crack, but there you go.
+ int checkYear = year;
+ if (dayOfYear < dayOfYearOfWeek1Day1)
+ {
+ checkYear--;
+ if (checkYear % 4 == 0)
+ {
+ relativeDayOfFirst = (relativeDayOfFirst + 5) % 7;
+ dayOfYear += 366;
+ }
+ else
+ {
+ relativeDayOfFirst = (relativeDayOfFirst + 6) % 7;
+ dayOfYear += 365;
+ }
+
+ dayOfYearOfWeek1Day1 = 1 - relativeDayOfFirst;
+ if ((7 - relativeDayOfFirst) < minimalDaysInFirstWeek)
+ dayOfYearOfWeek1Day1 += 7;
+ }
+
+ // Which week of the year is this day in?
+ int weekOfYear = (dayOfYear - dayOfYearOfWeek1Day1 + 7) / 7;
+
+ harness.check(c.get(Calendar.WEEK_OF_YEAR) == weekOfYear);
+
+ // Then we set YEAR + DAY_OF_WEEK + WEEK_OF_YEAR and
+ // check we have MONTH and DAY_OF_MONTH correct.
+
+ d.clear();
+ d.set(Calendar.YEAR, checkYear);
+ d.set(Calendar.DAY_OF_WEEK, dayOfWeek);
+ d.set(Calendar.WEEK_OF_YEAR, weekOfYear);
+ harness.check(d.get(Calendar.YEAR) == year);
+ harness.check(d.get(Calendar.MONTH) == month);
+ harness.check(d.get(Calendar.DAY_OF_MONTH) == day);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java b/gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
new file mode 100644
index 00000000..1c44e5aa
--- /dev/null
+++ b/gnu/testlet/java/util/HashMap/AcuniaHashMapTest.java
@@ -0,0 +1,602 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.HashMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+import java.lang.reflect.*;
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.HashMap <br>
+*
+*/
+public class AcuniaHashMapTest implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness) {
+ th = harness;
+ test_HashMap();
+ test_get();
+ test_containsKey();
+ test_containsValue();
+ test_isEmpty();
+ test_size();
+ test_clear();
+ test_put();
+ test_putAll();
+ test_remove();
+ test_entrySet();
+ test_keySet();
+ test_values();
+ test_clone();
+ test_behaviour();
+ }
+
+ protected HashMap buildHM() {
+ HashMap hm = new HashMap();
+ String s;
+ for (int i=0 ; i < 15 ; i++) {
+ s = "a"+i;
+ hm.put(s , s+" value");
+ }
+ hm.put(null,null);
+ return hm;
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_HashMap(){
+ Field lf = null;
+ try {
+ lf = HashMap.class.getDeclaredField("loadFactor");
+// th.debug("DEBUG -- found loadFactor");
+ lf.setAccessible(true);
+ }
+ catch(Exception e){}
+ HashMap hm;
+ th.checkPoint("HashMap()");
+ hm = new HashMap();
+ try {
+ th.check(lf.getFloat(hm), 0.75f);
+ }
+ catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
+ th.checkPoint("HashMap(java.util.Map)");
+ HashMap hm1 = buildHM();
+ hm = new HashMap(hm1);
+ try {
+ th.check(lf.getFloat(hm), 0.75f);
+ }
+ catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
+ th.check(hm.size() == 16 , "all elements are put, got "+hm.size());
+ th.check(hm.get(null) == null , "test key and value pairs -- 1");
+ th.check("a1 value".equals(hm.get("a1")) , "test key and value pairs -- 2");
+ th.check("a10 value".equals(hm.get("a10")) , "test key and value pairs -- 3");
+ th.check("a0 value".equals(hm.get("a0")) , "test key and value pairs -- 4");
+ hm = new HashMap(new Hashtable());
+ th.check(hm.size() == 0 , "no elements are put, got "+hm.size());
+ try {
+ new HashMap(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException ne) {th.check(true);}
+
+ th.checkPoint("HashMap(int)");
+ hm = new HashMap(1);
+ try {
+ th.check(lf.getFloat(hm), 0.75f);
+ }
+ catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
+ try { new HashMap(-1);
+ th.fail("should throw an IllegalArgumentException");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+
+ th.checkPoint("HashMap(int,int)");
+ hm = new HashMap(10,0.5f);
+ try {
+ th.check(lf.getFloat(hm), 0.5f);
+ }
+ catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
+ hm = new HashMap(10,1.5f);
+ try {
+ th.check(lf.getFloat(hm), 1.5f);
+ }
+ catch (Exception e) { th.fail("no exception wanted !!!, got "+e); }
+ try {new HashMap(-1,0.1f);
+ th.fail("should throw an IllegalArgumentException -- 1");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ try { new HashMap(1,-0.1f);
+ th.fail("should throw an IllegalArgumentException -- 2");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ try { new HashMap(1,0.0f);
+ th.fail("should throw an IllegalArgumentException -- 2");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(java.lang.Object)java.lang.Object");
+ HashMap hm = buildHM();
+ th.check(hm.get(null) == null , "checking get -- 1");
+ th.check(hm.get(this) == null , "checking get -- 2");
+ hm.put("a" ,this);
+ th.check("a1 value".equals(hm.get("a1")), "checking get -- 3");
+ th.check("a11 value".equals(hm.get("a11")), "checking get -- 4");
+ th.check( hm.get(new Integer(97)) == null , "checking get -- 5");
+
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_containsKey(){
+ th.checkPoint("containsKey(java.lang.Object)boolean");
+ HashMap hm = new HashMap();
+ hm.clear();
+ th.check(! hm.containsKey(null) ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.containsKey(null) ,"Map does not containsthe key -- 1");
+ th.check( hm.containsKey("a") ,"Map does contain the key -- 2");
+ hm = buildHM();
+ th.check( hm.containsKey(null) ,"Map does contain the key -- 3");
+ th.check(! hm.containsKey(this) ,"Map does not contain the key -- 4");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_containsValue(){
+ th.checkPoint("containsValue(java.lang.Object)boolean");
+ HashMap hm = new HashMap();
+ hm.clear();
+ th.check(! hm.containsValue(null) ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.containsValue(null) ,"Map does not containsthe value -- 1");
+ th.check(! hm.containsValue("a") ,"Map does not contain the value -- 2");
+ th.check( hm.containsValue(this) ,"Map does contain the value -- 3");
+ hm = buildHM();
+ th.check( hm.containsValue(null) ,"Map does contain the value -- 4");
+ th.check(! hm.containsValue(this) ,"Map does not contain the value -- 5");
+ th.check(! hm.containsValue("a1value") ,"Map does not contain the value -- 6");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ HashMap hm = new HashMap();
+ th.check( hm.isEmpty() ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.isEmpty() ,"Map is not empty");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ HashMap hm = new HashMap();
+ th.check(hm.size() == 0 ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(hm.size() == 1 ,"Map has 1 element");
+ hm = buildHM();
+ th.check(hm.size() == 16 ,"Map has 16 elements");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ HashMap hm = buildHM();
+ hm.clear();
+ th.check(hm.size() == 0 ,"Map is cleared -- 1");
+ th.check(hm.isEmpty() ,"Map is cleared -- 2");
+
+ }
+
+/**
+* implemented. <br>
+* is tested also in the other parts ...
+*/
+ public void test_put(){
+ th.checkPoint("put(java.lang.Object,java.lang.Object)java.lang.Object");
+ HashMap hm = new HashMap();
+ th.check( hm.put(null , this ) == null , "check on return value -- 1");
+ th.check( hm.get(null) == this , "check on value -- 1");
+ th.check( hm.put(null , "a" ) == this , "check on return value -- 2");
+ th.check( "a".equals(hm.get(null)) , "check on value -- 2");
+ th.check( "a".equals(hm.put(null , "a" )), "check on return value -- 3");
+ th.check( "a".equals(hm.get(null)) , "check on value -- 3");
+ th.check( hm.size() == 1 , "only one key added");
+ th.check( hm.put("a" , null ) == null , "check on return value -- 4");
+ th.check( hm.get("a") == null , "check on value -- 4");
+ th.check( hm.put("a" , this ) == null , "check on return value -- 5");
+ th.check( hm.get("a") == this , "check on value -- 5");
+ th.check( hm.size() == 2 , "two keys added");
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_putAll(){
+ th.checkPoint("putAll(java.util.Map)void");
+ HashMap hm = new HashMap();
+ hm.putAll(new Hashtable());
+ th.check(hm.isEmpty() , "nothing addad");
+ hm.putAll(buildHM());
+ th.check(hm.size() == 16 , "checking if all enough elements are added -- 1");
+ th.check(hm.equals(buildHM()) , "check on all elements -- 1");
+ hm.put(null ,this);
+ hm.putAll(buildHM());
+ th.check(hm.size() == 16 , "checking if all enough elements are added -- 2");
+ th.check(hm.equals(buildHM()) , "check on all elements -- 2");
+ try {
+ hm.putAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException npe) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(java.lang.Object)java.lang.Object");
+ HashMap hm = buildHM();
+ th.check(hm.remove(null) == null , "checking return value -- 1");
+ th.check(hm.remove(null) == null , "checking return value -- 2");
+ th.check(!hm.containsKey(null) , "checking removed key -- 1");
+ th.check(!hm.containsValue(null) , "checking removed value -- 1");
+ for (int i = 0 ; i < 15 ; i++) {
+ th.check( ("a"+i+" value").equals(hm.remove("a"+i)), " removing a"+i);
+ }
+ th.check(hm.isEmpty() , "checking if al is gone");
+ }
+
+/**
+* implemented. <br>
+* uses AbstractSet --> check only the overwritten methods ... !
+* iterator and size
+* fail-fast iterator !
+* add not supported !
+* check the Map.Entry Objects ...
+*/
+ public void test_entrySet(){
+ th.checkPoint("entrySet()java.util.Set");
+ HashMap hm = buildHM();
+ Set s = hm.entrySet();
+ Iterator it= s.iterator();
+ Map.Entry me=null;
+ it.next();
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+ th.check( s.size() == 16 );
+ hm.remove("a12");
+ th.check( s.size() == 15 );
+ try {
+ th.check(it.hasNext());
+ th.check(true);
+ }
+ catch(ConcurrentModificationException cme) {
+ th.fail("it.hasNext should not throw ConcurrentModificationException");
+ }
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 1");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ try {
+ it.remove();
+ th.fail("should throw a ConcurrentModificationException -- 2");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+// th.debug(hm.debug());
+ it= s.iterator();
+ try {
+ me = (Map.Entry)it.next();
+// Thread.sleep(600L);
+ if (me.getKey()==null) me = (Map.Entry)it.next();
+ th.check( me.hashCode() , (me.getValue().hashCode() ^ me.getKey().hashCode()),"verifying hashCode");
+ th.check(! me.equals(it.next()));
+
+ }
+ catch(Exception e) { th.fail("got unwanted exception ,got "+e);
+ th.debug("got ME key = "+me+" and value = "+me.getKey());}
+
+ try {
+// th.debug("got ME key = "+me.getKey()+" and value = "+me.getValue());
+ me.setValue("alpha");
+ th.check(hm.get(me.getKey()), "alpha", "setValue through iterator of entrySet");
+ }
+ catch(UnsupportedOperationException uoe) { th.fail("setValue should be supported");}
+ it= s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while (it.hasNext()) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+// for (int k=0 ; k < v.size() ; k++ ) { th.debug("got "+v.get(k)+" as element "+k); }
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ it= s.iterator();
+ hm.put(null,"sdf");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ it= s.iterator();
+ hm.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 4");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+
+ }
+
+/**
+* implemented. <br>
+* uses AbstractSet --> check only the overwritten methods ... !
+* iterator and size
+* fail-fast iterator !
+* add not supported !
+*/
+ public void test_keySet(){
+ th.checkPoint("keySet()java.util.Set");
+ HashMap hm = buildHM();
+ th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
+ Set s=null;
+ Object [] o;
+ Iterator it;
+ try {
+ s = hm.keySet();
+ th.check( s != null ,"s != null");
+ th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
+ o = s.toArray();
+ th.check( o != null ,"o != null");
+ th.check( o.length == 16 ,"checking length, got "+o.length);
+// for (int i = 0 ; i < o.length ; i++ ){ th.debug("element "+i+" is "+o[i]); }
+ it = s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while ( it.hasNext() ) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ }
+ catch (Exception e) { th.fail("got bad Exception -- got "+e); }
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+
+ }
+
+/**
+* implemented. <br>
+* uses AbstractCollection --> check only the overwritten methods ... !
+* iterator and size
+* fail-fast iterator !
+* add not supported !
+*/
+ public void test_values(){
+ th.checkPoint("values()java.util.Collection");
+ HashMap hm = buildHM();
+ th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
+ Collection s=null;
+ Object [] o;
+ Iterator it;
+ try {
+ s = hm.values();
+ th.check( s != null ,"s != null");
+ th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
+ o = s.toArray();
+ th.check( o != null ,"o != null");
+ th.check( o.length == 16 ,"checking length, got "+o.length);
+// for (int i = 0 ; i < o.length ; i++ ){ th.debug("element "+i+" is "+o[i]); }
+ it = s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while ( it.hasNext() ) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ }
+ catch (Exception e) { th.fail("got bad Exception -- got "+e); }
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+
+
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ HashMap hm = buildHM();
+ Object o = hm.clone();
+ th.check( o != hm , "clone is not the same object");
+ th.check( hm.equals(o) , "clone is equal to Map");
+ hm.put("a","b");
+ th.check(! hm.equals(o) , "clone doesn't change if Map changes");
+
+ }
+/**
+* the goal of this test is to see how the hashtable behaves if we do a lot put's and removes. <br>
+* we perform this test for different loadFactors and a low initialsize <br>
+* we try to make it difficult for the table by using objects with same hashcode
+*/
+ private final String st ="a";
+ private final Byte b =new Byte((byte)97);
+ private final Short sh=new Short((short)97);
+ private final Integer i = new Integer(97);
+ private final Long l = new Long(97L);
+ private int sqnce = 1;
+
+ public void test_behaviour(){
+ th.checkPoint("behaviour testing");
+// do_behaviourtest(0.2f);
+ do_behaviourtest(0.70f);
+ do_behaviourtest(0.75f);
+ do_behaviourtest(0.95f);
+ do_behaviourtest(1.0f);
+
+ }
+ protected void sleep(int time){
+ try { Thread.sleep(time); }
+ catch (Exception e) {}
+ }
+
+ protected void check_presence(HashMap h){
+ th.check( h.get(st) != null, "checking presence st -- sequence "+sqnce);
+ th.check( h.get(sh) != null, "checking presence sh -- sequence "+sqnce);
+ th.check( h.get(i) != null, "checking presence i -- sequence "+sqnce);
+ th.check( h.get(b) != null, "checking presence b -- sequence "+sqnce);
+ th.check( h.get(l) != null, "checking presence l -- sequence "+sqnce);
+ sqnce++;
+ }
+
+ protected void do_behaviourtest(float loadFactor) {
+
+ th.checkPoint("behaviour testing with loadFactor "+loadFactor);
+ HashMap h = new HashMap(11 , loadFactor);
+ int j=0;
+ Float f;
+ h.put(st,"a"); h.put(b,"byte"); h.put(sh,"short"); h.put(i,"int"); h.put(l,"long");
+ check_presence(h);
+ sqnce = 1;
+ for ( ; j < 100 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ // sleep(5);
+ }
+ th.check(h.size() == 105,"size checking -- 1 got: "+h.size());
+ check_presence(h);
+// sleep(500);
+ for ( ; j < 200 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ // sleep(10);
+ }
+ th.check(h.size() == 205,"size checking -- 2 got: "+h.size());
+ check_presence(h);
+// sleep(50);
+
+ for ( ; j < 300 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ // sleep(10);
+ }
+ th.check(h.size() == 305,"size checking -- 3 got: "+h.size());
+ check_presence(h);
+// sleep(50);
+// replacing values -- checking if we get a non-zero value
+ th.check("a".equals(h.put(st,"na")), "replacing values -- 1 - st");
+ th.check("byte".equals(h.put(b,"nbyte")), "replacing values -- 2 - b");
+ th.check("short".equals(h.put(sh,"nshort")), "replacing values -- 3 -sh");
+ th.check("int".equals(h.put(i,"nint")) , "replacing values -- 4 -i");
+ th.check("long".equals(h.put(l,"nlong")), "replacing values -- 5 -l");
+
+
+ for ( ; j > 199 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ // sleep(10);
+ }
+// sleep(150);
+ th.check(h.size() == 205,"size checking -- 4 got: "+h.size());
+ check_presence(h);
+ for ( ; j > 99 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ // sleep(5);
+ }
+ th.check(h.size() == 105,"size checking -- 5 got: "+h.size());
+ check_presence(h);
+ // sleep(1500);
+ for ( ; j > -1 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ // sleep(5);
+ }
+ th.check(h.size() == 5 ,"size checking -- 6 got: "+h.size());
+
+ th.debug(h.toString());
+ check_presence(h);
+ // sleep(500);
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/HashMap/CVS/Entries b/gnu/testlet/java/util/HashMap/CVS/Entries
new file mode 100644
index 00000000..ef3a07ef
--- /dev/null
+++ b/gnu/testlet/java/util/HashMap/CVS/Entries
@@ -0,0 +1,2 @@
+/AcuniaHashMapTest.java/1.5/Mon May 1 22:18:31 2006//
+D
diff --git a/gnu/testlet/java/util/HashMap/CVS/Repository b/gnu/testlet/java/util/HashMap/CVS/Repository
new file mode 100644
index 00000000..6c909028
--- /dev/null
+++ b/gnu/testlet/java/util/HashMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/HashMap
diff --git a/gnu/testlet/java/util/HashMap/CVS/Root b/gnu/testlet/java/util/HashMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/HashMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Hashtable/.cvsignore b/gnu/testlet/java/util/Hashtable/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/util/Hashtable/AcuniaHashtableTest.java b/gnu/testlet/java/util/Hashtable/AcuniaHashtableTest.java
new file mode 100644
index 00000000..26f7b76b
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/AcuniaHashtableTest.java
@@ -0,0 +1,632 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.Hashtable;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+/**
+* This file contains testcode for java.util.Hashtable <br>
+*<br>
+* WRITTEN BY ACUNIA <br>
+*/
+public class AcuniaHashtableTest implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_Hashtable();
+ test_elements();
+ test_get ();
+ test_keys ();
+ test_contains();
+ test_containsKey();
+ test_containsValue();
+ test_isEmpty();
+ test_size();
+ test_put();
+ test_putAll ();
+ test_remove();
+ test_entrySet();
+ test_keySet();
+ test_values();
+ test_clone();
+ test_equals();
+ test_hashCode();
+ test_toString();
+ test_rehash();
+ test_behaviour();
+ }
+ public Hashtable buildknownHt() {
+
+ Hashtable ht = new Hashtable(19);
+ Float f;
+ for (int i =0; i < 11; i++)
+ { f = new Float((float)i);
+ ht.put( f , f );
+ }
+ return ht;
+
+ }
+/**
+* implemented. <br>
+* testing this is not easy since we cannot get the values of <br>
+* the properties we pass to the hashtable --> code looked OK <br>
+* we just make the objects and do some basic testing.
+*/
+ public void test_Hashtable(){
+ th.checkPoint("Hashtable()");
+ Hashtable h = new Hashtable();
+ h = new Hashtable(233, 0.5f);
+ try {
+ h = new Hashtable(0);
+ th.check(true,"test 1");
+ h = new Hashtable(25);
+ th.check(true,"test 2");
+ }
+ catch (Exception e) {th.fail("shouldn't throw an exception -- "+e);}
+
+ try {
+ h = new Hashtable(-233);
+ th.fail("should throw an IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ie) { th.check(true,"test 3");}
+
+ // what happens if loadfactor is 0.0f, -1.0f or 2345.56f ????
+ try {
+ h = new Hashtable(233, 23.0f);
+ th.check(true,"test 4");
+ }
+ catch (Exception e) {th.fail("shouldn't throw an exception -- "+e);}
+ try {
+ h = new Hashtable(233, 0.0f);
+ th.fail("should throw an IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ie) { th.check(true,"test 5");}
+ try {
+ h = new Hashtable(233 ,-1.0f);
+ th.fail("should throw an IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ie) { th.check(true,"test 6");}
+
+ h = new Hashtable(buildknownHt());
+ th.check (h.size() == 11 , "the map had 11 enries");
+ try {
+ h = new Hashtable(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch (NullPointerException ne) {th.check(true);}
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_elements(){
+ th.checkPoint("elements()java.util.Enumeration");
+ Hashtable ht = buildknownHt();
+ Object o;
+ Float f;
+ Enumeration e = (Enumeration) ht.elements();
+ int i = 0;
+ while (e.hasMoreElements()){
+ i++;
+ f= (Float) e.nextElement();
+ o = ht.get( f );
+ th.check( o != null,"each element is unique -- nr "+i);
+ ht.remove(f);
+ }
+ th.check(i == 11, "we should have 11 elements");
+ th.check(ht.size() == 0);
+ e = new Hashtable().elements();
+ th.check( e != null , "elements should return a non-null value");
+ th.check(!e.hasMoreElements(), "e should not have elements");
+ }
+/**
+* implemented.
+*
+*/
+ public void test_get(){
+ th.checkPoint("get(java.lang.Object)java.lang.Object");
+ Hashtable hte=new Hashtable(),ht = buildknownHt();
+ try {
+ ht.get(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ th.check( ht.get(new Object()) == null ,"gives back null if not in -- 1");
+ Float f = (Float) ht.elements().nextElement();
+ Float g = new Float(f.floatValue()+0.00001);
+ th.check( ht.get(g) == null ,"gives back null if not in -- 2");
+ th.check( ht.get(f) == f,"key and element are same so get(f)==f -- 1");
+ ht.put(hte,hte); hte.put(f,f); hte.put(g,g);
+ th.check( ht.get(hte) == hte , "changing the hashcode of a key --> key must be found");
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_keys(){
+ th.checkPoint("keys()java.util.Enumeration");
+ Hashtable ht = buildknownHt();
+ Object o;
+ Float f;
+ Enumeration e = (Enumeration) ht.keys();
+ int i = 0;
+ while (e.hasMoreElements()){
+ i++;
+ f= (Float) e.nextElement();
+ o = ht.get( f );
+ th.check( o != null,"each key is unique -- nr "+i);
+ ht.remove(f);
+ }
+ th.check(i == 11, "we should have 11 key");
+ th.check(ht.size() == 0);
+ e = new Hashtable().keys();
+ th.check( e != null , "keys should return a non-null value");
+ th.check(!e.hasMoreElements(), "e should not have keys");
+ ht = new Hashtable();
+ e = ht.keys();
+ th.check(! e.hasMoreElements() , "empty HT Enum has no elements");
+ ht.put("abcd","value");
+ e = ht.keys();
+ th.check(e.hasMoreElements() , "HT Enum stil has elements");
+ th.check("abcd".equals(e.nextElement()) ,"checking returned value");
+ th.check(! e.hasMoreElements() , "HT Enum enumerated all elements");
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ Hashtable ht= buildknownHt();
+ Float f = new Float(10.0);
+ th.check(ht.contains( f ),"contains uses equals -- 1");
+ f = new Float(11.0);
+ th.check(!ht.contains( f ),"contains uses equals -- 2");
+ Double d = new Double(5.0);
+ th.check(!ht.contains( d ),"contains uses equals -- 3");
+ ht.put(f,d);
+ th.check(ht.contains( d ),"contains uses equals -- 4");
+ try { ht.contains(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ }
+/**
+* implemented.
+*
+*/
+ public void test_containsKey(){
+ th.checkPoint("containsKey(java.lang.Object)boolean");
+ Hashtable ht= buildknownHt();
+ Float f = new Float(10.0);
+ th.check(ht.containsKey( f ),"containsKey uses equals -- 1");
+ f = new Float(11.0);
+ th.check(!ht.containsKey( f ),"containsKey uses equals -- 2");
+ Double d = new Double(5.0);
+ th.check(!ht.containsKey( d ),"containsKey uses equals -- 3");
+ ht.put(d,f);
+ th.check(ht.containsKey( d ),"containsKey uses equals -- 4");
+ try { ht.containsKey(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_containsValue(){
+ th.checkPoint("containsValue(java.lang.Object)boolean");
+ Hashtable ht= buildknownHt();
+ Float f = new Float(10.0);
+ th.check(ht.containsValue( f ),"containsValue uses equals -- 1");
+ f = new Float(11.0);
+ th.check(!ht.containsValue( f ),"containsValue uses equals -- 2");
+ Double d = new Double(5.0);
+ th.check(!ht.containsValue( d ),"containsValue uses equals -- 3");
+ ht.put(d,f);
+ th.check(!ht.containsValue( d ),"containsValue uses equals -- 4");
+ d = new Double(89.0);
+ ht.put(f,d);
+ th.check(ht.containsValue( d ),"containsValue uses equals -- 5");
+ try { ht.containsValue(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ Hashtable ht= buildknownHt();
+ th.check(!ht.isEmpty(), "ht is not empty -- 1");
+ ht.clear();
+ th.check(ht.isEmpty(),"hashtable should be empty --> after clear");
+ ht.put(new Object(),ht);
+ th.check(!ht.isEmpty(), "ht is not empty -- 2");
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ Hashtable ht= buildknownHt();
+ th.check( ht.size() == 11 );
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ Hashtable ht = new Hashtable();
+ ht.clear();
+ ht = buildknownHt();
+ if (!ht.isEmpty())
+ { ht.clear();
+ th.check(ht.isEmpty(),"hashtable should be empty --> after clear");
+ try { ht.clear(); //shouldnot throw any exception
+ th.check(ht.isEmpty(),"hashtable should be empty --> after 2nd clear");
+ }
+ catch (Exception e) { th.fail("clear should not throw "+e); }
+ }
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_put(){
+ th.checkPoint("put(java.lang.Object,java.lang.Object)java.lang.Object");
+ Hashtable h = buildknownHt();
+ Float f = new Float(33.0f);
+ Double d = new Double(343.0);
+ th.check( h.put(f,f) == null ,"key f in not used");
+ th.check( h.get(f) == f, "make sure element is put there -- 1");
+ th.check( h.put(f,d) == f ,"key f in used --> return old element");
+ th.check( h.get(f) == d, "make sure element is put there -- 2");
+
+ try { h.put(null, d);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ try { h.put(d,null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ try { h.put(null,null);
+ th.fail("should throw NullPointerException -- 3");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ }
+/**
+* implemented. <br>
+* --> needs more testing with objects with Map interface
+*/
+ public void test_putAll(){
+ th.checkPoint("putAll(java.lang.Map)void");
+
+ Hashtable h = new Hashtable();
+ h.putAll(buildknownHt());
+ th.check(h.size() == 11 && h.equals(buildknownHt()));
+ Double d =new Double(34.0); Float f = new Float(2.0);
+ h.put(f,d);
+ h.putAll(buildknownHt());
+ th.check(h.size() == 11 && h.equals(buildknownHt()));
+ h.put(d,d);
+ h.putAll(buildknownHt());
+ th.check(h.size() == 12 && (!h.equals(buildknownHt())));
+
+ try { h.putAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(java.lang.Object)java.lang.Object");
+ Hashtable h = buildknownHt();
+ Float f = new Float(33.0f);
+ int i= h.size();
+ try { h.remove(null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ th.check(h.remove(f) == null, "key not there so return null");
+ th.check(h.size() == i, "check on size -- 1");
+ for (int j=0 ; j < 11 ; j++)
+ {
+ f = new Float((float)j);
+ th.check(h.remove(f).equals(f), "key is there so return element -- "+j);
+ th.check(h.size() == --i, "check on size after removing -- "+j);
+ }
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_entrySet(){
+ th.checkPoint("entrySet()java.util.Set");
+ Hashtable h = buildknownHt();
+ Set s = h.entrySet();
+ int j;
+ Map.Entry m;
+ th.check(s.size() == 11);
+ Object [] ao = s.toArray();
+ Iterator i = s.iterator();
+ for (j =0 ; true ; j++) {
+ if (!i.hasNext()) break;
+ m = (Map.Entry)i.next();
+ if (j==50) break;
+ }
+ th.check( j == 11 , "Iterator of Set must not do an Inf Loop, got j"+j);
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_keySet(){
+ th.checkPoint("keySet()java.util.Set");
+ Hashtable h = buildknownHt();
+ Set s = h.keySet();
+ th.check(s.size() == 11);
+ for (int i = 0; i < 11 ; i++)
+ {
+ th.check(s.contains(new Float((float)i)),"check if all keys are given -- "+i);
+ }
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_values(){
+ th.checkPoint("values()java.util.Collection");
+ Hashtable h = buildknownHt();
+ Collection c = h.values();
+ th.check(c.size() == 11);
+ for (int i = 0; i < 11 ; i++)
+ {
+ th.check(c.contains(new Float((float)i)),"check if all values are given -- "+i);
+ }
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ Hashtable ht2,ht1 = buildknownHt();
+ ht2 = (Hashtable) ht1.clone();
+ th.check( ht2.size() == 11 ,"checking size -- got: "+ht2.size());
+ th.check( ht2.equals( ht1) ,"clone gives back equal hashtables");
+ Object o;
+ Float f;
+ Enumeration e = (Enumeration) ht1.elements();
+ for (int i=0; i < 11; i++) {
+ f= (Float) e.nextElement();
+ o = ht2.get( f );
+ th.check( f == (Float) o,"key and element are the same");
+ }
+ f= (Float) ht1.elements().nextElement();
+ ht2.remove(f);
+ th.check(ht1.size() == 11 , "changes in clone do not affect original");
+ ht1.put(ht2,ht1);
+ th.check(ht2.size() == 10 , "changes in original do not affect clone");
+
+ ht1 =new Hashtable();
+ ht2 = (Hashtable) ht1.clone();
+ th.check(ht2.size() == 0 , "cloning an empty hashtable must work");
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ Hashtable h2= buildknownHt(),h1 = buildknownHt();
+ th.check(h2.equals(h1),"hashtables are equal -- 1");
+ h2.remove(new Float(2.0f));
+ th.check(!h2.equals(h1),"hashtables are not equal");
+ h1.remove(new Float(2.0f));
+ th.check(h2.equals(h1),"hashtables are equal -- 2");
+ th.check(!h2.equals(new Float(3.0)),"hashtables is not equal to Float");
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ Hashtable h = new Hashtable(13);
+ th.check( buildknownHt().hashCode() == buildknownHt().hashCode() );
+ Integer i = new Integer(4545);
+ String s = new String("string");
+ Double d = new Double(23245.6);
+ Object o = new Object();
+ h.put(i,s);
+ th.check(h.hashCode() == (i.hashCode() ^ s.hashCode()));
+ h.put(d,o);
+ th.check(h.hashCode() == (i.hashCode() ^ s.hashCode())+(d.hashCode() ^ o.hashCode()));
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_toString(){
+ th.checkPoint("toString()java.lang.String");
+ Hashtable h = new Hashtable(13,0.75f);
+ th.check(h.toString().equals("{}"), "got: "+h);
+ h.put("SmartMove","Fantastic");
+ th.check(h.toString().equals("{SmartMove=Fantastic}"), "got: "+h);
+ h.put("nr 1",new Float(23.0));
+ // the order is not specified
+ th.check(h.toString().equals("{SmartMove=Fantastic, nr 1=23.0}")||
+ h.toString().equals("{nr 1=23.0, SmartMove=Fantastic}"), "got: "+h);
+ h.remove("SmartMove");
+ th.check(h.toString().equals("{nr 1=23.0}"), "got: "+h);
+ }
+/**
+* implemented.
+*
+*/
+ public void test_rehash(){
+ th.checkPoint("rehash()void");
+ Hashtable h = new Hashtable(3 , 0.5f);
+ try {
+ h.put("Smart","Move");
+ h.put("rehash","now");
+ th.check(h.size() == 2);
+ }
+ catch (Exception e) {th.fail("caught exception "+e);}
+
+ }
+/**
+* the goal of this test is to see how the hashtable behaves if we do a lot put's and removes. <br>
+* we perform this test for different loadFactors and a low initial size <br>
+* we try to make it difficult for the table by using objects with same hashcode
+*/
+ private final String st ="a";
+ private final Byte b =new Byte((byte)97);
+ private final Short sh=new Short((short)97);
+ private final Integer i = new Integer(97);
+ private final Long l = new Long(97L);
+ private int sqnce = 1;
+
+ public void test_behaviour(){
+ th.checkPoint("behaviour testing");
+ do_behaviourtest(0.2f);
+ do_behaviourtest(0.70f);
+ do_behaviourtest(0.75f);
+ do_behaviourtest(0.95f);
+ do_behaviourtest(1.0f);
+
+ }
+ protected void sleep(int time){
+ try { Thread.sleep(time); }
+ catch (Exception e) {}
+ }
+
+ protected void check_presence(Hashtable h){
+ th.check( h.get(st) != null, "checking presence st -- sequence "+sqnce);
+ th.check( h.get(sh) != null, "checking presence sh -- sequence "+sqnce);
+ th.check( h.get(i) != null, "checking presence i -- sequence "+sqnce);
+ th.check( h.get(b) != null, "checking presence b -- sequence "+sqnce);
+ th.check( h.get(l) != null, "checking presence l -- sequence "+sqnce);
+ sqnce++;
+ }
+
+ protected void do_behaviourtest(float loadFactor) {
+
+ th.checkPoint("behaviour testing with loadFactor "+loadFactor);
+ Hashtable h = new Hashtable(11 , loadFactor);
+ int j=0;
+ Float f;
+ h.put(st,"a"); h.put(b,"byte"); h.put(sh,"short"); h.put(i,"int"); h.put(l,"long");
+ check_presence(h);
+ sqnce = 1;
+ for ( ; j < 100 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 105,"size checking -- 1 got: "+h.size());
+ check_presence(h);
+ for ( ; j < 200 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 205,"size checking -- 2 got: "+h.size());
+ check_presence(h);
+
+ for ( ; j < 300 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 305,"size checking -- 3 got: "+h.size());
+ check_presence(h);
+// replacing values -- checking if we get a non-zero value
+ th.check("a".equals(h.put(st,"na")), "replacing values -- 1 - st");
+ th.check("byte".equals(h.put(b,"nbyte")), "replacing values -- 2 - b");
+ th.check("short".equals(h.put(sh,"nshort")), "replacing values -- 3 -sh");
+ th.check("int".equals(h.put(i,"nint")) , "replacing values -- 4 -i");
+ th.check("long".equals(h.put(l,"nlong")), "replacing values -- 5 -l");
+
+
+ for ( ; j > 199 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 205,"size checking -- 4 got: "+h.size());
+ check_presence(h);
+ for ( ; j > 99 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 105,"size checking -- 5 got: "+h.size());
+ check_presence(h);
+ for ( ; j > -1 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 5 ,"size checking -- 6 got: "+h.size());
+
+ th.debug(h.toString());
+ check_presence(h);
+
+ }
+}
diff --git a/gnu/testlet/java/util/Hashtable/CVS/Entries b/gnu/testlet/java/util/Hashtable/CVS/Entries
new file mode 100644
index 00000000..462e76f2
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/CVS/Entries
@@ -0,0 +1,8 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:37 1998//
+/AcuniaHashtableTest.java/1.2/Mon Feb 21 15:52:51 2005//
+/ContainsHash.java/1.1/Sat Nov 22 12:53:38 2003//
+/EnumerateAndModify.java/1.1/Wed Jan 11 20:33:08 2006//
+/HashContains.java/1.1/Sat Nov 22 06:25:31 2003//
+/NullValue.java/1.1/Sun Dec 7 22:36:20 2003//
+/basic.java/1.4/Fri Dec 11 11:28:38 1998//
+D
diff --git a/gnu/testlet/java/util/Hashtable/CVS/Repository b/gnu/testlet/java/util/Hashtable/CVS/Repository
new file mode 100644
index 00000000..8bb7d5a9
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Hashtable
diff --git a/gnu/testlet/java/util/Hashtable/CVS/Root b/gnu/testlet/java/util/Hashtable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Hashtable/ContainsHash.java b/gnu/testlet/java/util/Hashtable/ContainsHash.java
new file mode 100644
index 00000000..13255a15
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/ContainsHash.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Mark J. Wielaard
+
+// 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.java.util.Hashtable;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Hashtable;
+
+/**
+ * Test whether overriding only contains work with a 1.2 Map
+ * containsValue method (not overridden).
+ */
+public class ContainsHash extends Hashtable implements Testlet
+{
+ private static Object a = new Object();
+ private static Object b = new Object();
+
+ public void test (TestHarness harness)
+ {
+ harness.check(!contains(a));
+ harness.check(contains(b));
+
+ harness.check(!containsValue(a));
+ harness.check(containsValue(b));
+ }
+
+ // Override and check that it is b.
+ // This table only contains a virtual (a, b) pair.
+ public boolean contains(Object value)
+ {
+ return value == b;
+ }
+}
+
diff --git a/gnu/testlet/java/util/Hashtable/EnumerateAndModify.java b/gnu/testlet/java/util/Hashtable/EnumerateAndModify.java
new file mode 100644
index 00000000..83079404
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/EnumerateAndModify.java
@@ -0,0 +1,159 @@
+/* EnumerateAndModify.java -- A test for Hashtable
+ Copyright (C) 2006 Fridjof Siebert
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.0
+
+package gnu.testlet.java.util.Hashtable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+
+/**
+ * EnumerateAndModify tests that enumerating a Hashtable that is
+ * concurrently modified will not throw an exception.
+ *
+ * @author Fridtjof Siebert (siebert@aicas.com)
+ */
+public class EnumerateAndModify implements Testlet
+{
+
+ /**
+ * test is the main test routine testing enumaration of keys and
+ * elements of a concurrently modified hashtable.
+ *
+ * @param harness the current test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ Hashtable allKeys = new Hashtable();
+ allKeys.put("C","c");
+ allKeys.put("D","d");
+ allKeys.put("A","a");
+ allKeys.put("B","b");
+ allKeys.put("E","e");
+ allKeys.put("C1","c");
+ allKeys.put("D1","d");
+ allKeys.put("A1","a");
+ allKeys.put("B1","b");
+ allKeys.put("E1","e");
+
+ Hashtable allElements = new Hashtable();
+ allElements.put("c","c");
+ allElements.put("d","d");
+ allElements.put("a","a");
+ allElements.put("b","b");
+ allElements.put("e","e");
+ allElements.put("c1","c1");
+ allElements.put("d1","d1");
+ allElements.put("a1","a1");
+ allElements.put("b1","b1");
+ allElements.put("e1","e1");
+
+ Hashtable ht = new Hashtable();
+ ht.put("A","a");
+ ht.put("B","b");
+ ht.put("C","c");
+ ht.put("D","d");
+ ht.put("E","e");
+
+ Throwable thrown;
+ boolean returnedOnlyKeysThatWerePut = true;
+
+ try
+ {
+ // We walk through the keys while we modify the hashtable. This
+ // is not legal, and the result of the enumaration is undefined,
+ // but we should not get any exception when enumerating and we
+ // should not get null or any key that was never added.
+ for (Enumeration e = ht.keys(); e.hasMoreElements(); )
+ {
+ String str = (String) e.nextElement();
+ if (str != null && !allKeys.containsKey(str))
+ {
+ returnedOnlyKeysThatWerePut = false;
+ }
+ ht.put("C","c");
+ ht.put("D","d");
+ ht.put("A","a");
+ ht.put("B","b");
+ ht.put("E","e");
+ ht.put("C1","c");
+ ht.put("D1","d");
+ ht.put("A1","a");
+ ht.put("B1","b");
+ ht.put("E1","e");
+ }
+ thrown = null;
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ thrown = t;
+ }
+ harness.check(thrown == null);
+ harness.check(returnedOnlyKeysThatWerePut);
+
+ ht = new Hashtable();
+ ht.put("A","a");
+ ht.put("B","b");
+ ht.put("C","c");
+ ht.put("D","d");
+ ht.put("E","e");
+
+ boolean returnedOnlyElementsThatWerePut = true;
+
+ try
+ {
+ // We walk through the keys while we modify the hashtable. This
+ // is not legal, and the result of the enumaration is undefined,
+ // but we should not get any exception when enumerating and we
+ // should not get null or any key that was never added.
+ for (Enumeration e = ht.elements(); e.hasMoreElements(); )
+ {
+ String str = (String) e.nextElement();
+ if (str != null && !allElements.containsKey(str))
+ {
+ returnedOnlyElementsThatWerePut = false;
+ }
+ ht.put("C","c");
+ ht.put("D","d");
+ ht.put("A","a");
+ ht.put("B","b");
+ ht.put("E","e");
+ ht.put("C1","c1");
+ ht.put("D1","d1");
+ ht.put("A1","a1");
+ ht.put("B1","b1");
+ ht.put("E1","e1");
+ }
+ thrown = null;
+ }
+ catch (Throwable t)
+ {
+ thrown = t;
+ }
+ harness.check(thrown == null);
+ harness.check(returnedOnlyElementsThatWerePut);
+ }
+}
diff --git a/gnu/testlet/java/util/Hashtable/HashContains.java b/gnu/testlet/java/util/Hashtable/HashContains.java
new file mode 100644
index 00000000..4d8d111c
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/HashContains.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Mark J. Wielaard
+
+// 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.java.util.Hashtable;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Hashtable;
+
+/**
+ * Test whether overriding contains and the new 1.2 (Map interface)
+ * containsValue work properly.
+ */
+public class HashContains extends Hashtable implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Object a = new Object();
+ Object b = new Object();
+ Object c;
+
+ c = put(a, b);
+ harness.check(null, c);
+ harness.check(!contains(a));
+ harness.check(contains(b));
+
+ harness.check(!containsValue(a));
+ harness.check(containsValue(b));
+ }
+
+ // Override and call super.
+ public boolean contains(Object value) {
+ return super.contains(value);
+ }
+
+ // Override and call contains.
+ public boolean containsValue(Object value) {
+ return this.contains(value);
+ }
+}
+
diff --git a/gnu/testlet/java/util/Hashtable/NullValue.java b/gnu/testlet/java/util/Hashtable/NullValue.java
new file mode 100644
index 00000000..c5a93eba
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/NullValue.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// 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.java.util.Hashtable;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Hashtable;
+import java.util.HashMap;
+
+/**
+ * Check that Hashtable rejects null keys & values.
+ */
+public class NullValue extends Hashtable implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ HashMap m = new HashMap();
+ m.put("a", "1");
+ m.put("b", null);
+
+ try
+ {
+ Hashtable h = new Hashtable(m);
+ harness.fail("Should throw NullPointerException");
+ }
+ catch (NullPointerException x)
+ {
+ harness.check(true);
+ }
+
+ m = new HashMap();
+ m.put("a", "1");
+ m.put(null, "2");
+
+ try
+ {
+ Hashtable h = new Hashtable(m);
+ harness.fail("Should throw NullPointerException");
+ }
+ catch (NullPointerException x)
+ {
+ harness.check(true);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/util/Hashtable/basic.java b/gnu/testlet/java/util/Hashtable/basic.java
new file mode 100644
index 00000000..dc414830
--- /dev/null
+++ b/gnu/testlet/java/util/Hashtable/basic.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.Hashtable;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Hashtable;
+
+public class basic implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // The toString tests have been commented out as they currently
+ // print in reverse order from the std JDK. Uncomment these if
+ // we change our implementation to output in the same order.
+
+ Hashtable hash = new Hashtable(13, 0.25F);
+
+ harness.check (hash.toString(), "{}");
+ harness.check (hash.isEmpty());
+
+ hash.put(new Integer(1), "one");
+ hash.put(new Integer(2), "two");
+ hash.put(new Integer(3), "three");
+ hash.put(new Integer(4), "four");
+ hash.put(new Integer(5), "five");
+ // Rehash should have just happened.
+ hash.put(new Integer(6), "six");
+ hash.put(new Integer(7), "seven");
+ // Rehash should have just happened.
+ hash.put(new Integer(8), "eight");
+ hash.put(new Integer(9), "nine");
+ hash.put(new Integer(10), "ten");
+ hash.put(new Integer(11), "eleven");
+ hash.put(new Integer(12), "twelve");
+ hash.put(new Integer(13), "thirteen");
+ hash.put(new Integer(14), "fourteen");
+ // Rehash should have just happened.
+ hash.put(new Integer(15), "fifteen");
+
+ // harness.check (hash.toString());
+ harness.check (! hash.isEmpty());
+ harness.check (hash.size(), 15);
+
+ Integer key = new Integer(13);
+ String val = (String) hash.get(key);
+ hash.put(key, val.toUpperCase());
+ // harness.check (hash.toString());
+ harness.check (hash.size(), 15);
+
+ harness.check (hash.containsKey(key));
+ harness.check (! hash.contains("thirteen"));
+ harness.check (hash.contains("THIRTEEN"));
+
+ hash.remove(key);
+ // harness.check (hash.toString());
+ harness.check (hash.size(), 14);
+
+ Hashtable copy = (Hashtable) hash.clone();
+ hash.clear();
+ harness.check (hash.toString(), "{}");
+ harness.check (hash.size(), 0);
+ // harness.check (copy.toString());
+ harness.check (copy.size(), 14);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IdentityHashMap/CVS/Entries b/gnu/testlet/java/util/IdentityHashMap/CVS/Entries
new file mode 100644
index 00000000..57c6529f
--- /dev/null
+++ b/gnu/testlet/java/util/IdentityHashMap/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.3/Fri Sep 29 01:18:54 2006//
+D
diff --git a/gnu/testlet/java/util/IdentityHashMap/CVS/Repository b/gnu/testlet/java/util/IdentityHashMap/CVS/Repository
new file mode 100644
index 00000000..ff1268ee
--- /dev/null
+++ b/gnu/testlet/java/util/IdentityHashMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IdentityHashMap
diff --git a/gnu/testlet/java/util/IdentityHashMap/CVS/Root b/gnu/testlet/java/util/IdentityHashMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IdentityHashMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IdentityHashMap/simple.java b/gnu/testlet/java/util/IdentityHashMap/simple.java
new file mode 100644
index 00000000..d014f734
--- /dev/null
+++ b/gnu/testlet/java/util/IdentityHashMap/simple.java
@@ -0,0 +1,68 @@
+// Simple tests for IdentityHashMap.
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.4
+
+package gnu.testlet.java.util.IdentityHashMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+public class simple implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ // Create 1000 Integer objects.
+ Integer[] is = new Integer[1000];
+ Integer[] vs = new Integer[1000];
+ IdentityHashMap map = new IdentityHashMap ();
+ for (int i = 0; i < 1000; ++i)
+ {
+ is[i] = new Integer (i);
+ vs[i] = new Integer (2000 + i);
+ map.put (is[i], vs[i]);
+ }
+
+ harness.check (map.size (), 1000, "size");
+
+ harness.checkPoint ("values");
+ for (int i = 0; i < 1000; ++i)
+ {
+ Object k = map.get (is[i]);
+ harness.check (k, vs[i]);
+ }
+
+ // Now remove some elements and recheck.
+ harness.checkPoint ("remove");
+ for (int i = 0; i < 1000; i += 2)
+ {
+ Object v = map.remove (is[i]);
+ harness.check(v, vs[i]);
+ }
+ harness.checkPoint("post remove");
+ for (int i = 1; i < 1000; i += 2)
+ {
+ Object k = map.get (is[i]);
+ harness.check (k, vs[i]);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries
new file mode 100644
index 00000000..c212b903
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries
@@ -0,0 +1,5 @@
+/TryCatch.java/1.2/Fri Nov 16 12:53:23 2012//
+/constructor.java/1.2/Fri Nov 16 12:53:23 2012//
+/getCodePoint.java/1.1/Mon Jul 23 15:58:06 2012//
+/getMessage.java/1.1/Mon Jul 23 15:58:06 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Repository
new file mode 100644
index 00000000..731aa174
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatCodePointException
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Root b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java b/gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java
new file mode 100644
index 00000000..44219188
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatCodePointException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatCodePointException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalFormatCodePointException(42);
+ }
+ catch (IllegalFormatCodePointException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Entries
new file mode 100644
index 00000000..0c8cb48e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Fri Nov 16 12:53:23 2012//
+/getConstructors.java/1.1/Fri Nov 16 12:53:23 2012//
+/getDeclaredConstructors.java/1.1/Fri Nov 16 12:53:23 2012//
+/getDeclaredFields.java/1.1/Fri Nov 16 12:53:23 2012//
+/getDeclaredMethods.java/1.1/Fri Nov 16 12:53:23 2012//
+/getFields.java/1.1/Fri Nov 16 12:53:23 2012//
+/getInterfaces.java/1.2/Fri Nov 16 12:53:23 2012//
+/getMethods.java/1.1/Fri Nov 16 12:53:23 2012//
+/getModifiers.java/1.2/Fri Nov 16 12:53:23 2012//
+/getName.java/1.2/Fri Nov 16 12:53:23 2012//
+/getPackage.java/1.2/Fri Nov 16 12:53:23 2012//
+/getSimpleName.java/1.2/Fri Nov 16 12:53:23 2012//
+/getSuperclass.java/1.2/Fri Nov 16 12:53:23 2012//
+/isAnnotation.java/1.1/Fri Nov 16 12:53:23 2012//
+/isAnnotationPresent.java/1.1/Fri Nov 16 12:53:23 2012//
+/isAnonymousClass.java/1.1/Fri Nov 16 12:53:23 2012//
+/isArray.java/1.1/Fri Nov 16 12:53:23 2012//
+/isAssignableFrom.java/1.2/Fri Nov 16 12:53:23 2012//
+/isEnum.java/1.1/Fri Nov 16 12:53:23 2012//
+/isInstance.java/1.2/Fri Nov 16 12:53:23 2012//
+/isInterface.java/1.2/Fri Nov 16 12:53:23 2012//
+/isLocalClass.java/1.2/Fri Nov 16 12:53:23 2012//
+/isMemberClass.java/1.2/Fri Nov 16 12:53:23 2012//
+/isPrimitive.java/1.2/Fri Nov 16 12:53:23 2012//
+/isSynthetic.java/1.2/Fri Nov 16 12:53:23 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Repository
new file mode 100644
index 00000000..c8470750
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..78b5f6ee
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/InstanceOf.java
@@ -0,0 +1,67 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatCodePointException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatCodePointException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ IllegalFormatCodePointException o = new IllegalFormatCodePointException(42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalFormatCodePointException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getConstructors.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getConstructors.java
new file mode 100644
index 00000000..22f09c46
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.util.IllegalFormatCodePointException(int)", "java.util.IllegalFormatCodePointException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.util.IllegalFormatCodePointException(int)", "java.util.IllegalFormatCodePointException");
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..ea655987
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.util.IllegalFormatCodePointException(int)", "java.util.IllegalFormatCodePointException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.util.IllegalFormatCodePointException(int)", "java.util.IllegalFormatCodePointException");
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredFields.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..8903847e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredFields.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.util.IllegalFormatCodePointException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk6.put("private int java.util.IllegalFormatCodePointException.c", "c");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.util.IllegalFormatCodePointException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private int java.util.IllegalFormatCodePointException.c", "c");
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..fa0c4e56
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,106 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatCodePointException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk6.put("public int java.util.IllegalFormatCodePointException.getCodePoint()", "getCodePoint");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatCodePointException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk7.put("public int java.util.IllegalFormatCodePointException.getCodePoint()", "getCodePoint");
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getFields.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getFields.java
new file mode 100644
index 00000000..3b859294
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..71564ed2
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getMethods.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getMethods.java
new file mode 100644
index 00000000..b195b632
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getMethods.java
@@ -0,0 +1,144 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatCodePointException.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public int java.util.IllegalFormatCodePointException.getCodePoint()", "getCodePoint");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatCodePointException.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public int java.util.IllegalFormatCodePointException.getCodePoint()", "getCodePoint");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java
new file mode 100644
index 00000000..93f547f8
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java
new file mode 100644
index 00000000..d4ff06e3
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.IllegalFormatCodePointException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java
new file mode 100644
index 00000000..70ad07de
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..2517aca1
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalFormatCodePointException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..ba76b1c4
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotation.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..dcf9fe68
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..affa491e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnonymousClass.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..faf90a4e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isArray.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isArray.java
new file mode 100644
index 00000000..34bd0d19
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..0870fc5c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalFormatCodePointException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isEnum.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isEnum.java
new file mode 100644
index 00000000..b1dae163
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java
new file mode 100644
index 00000000..71d7b4fe
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalFormatCodePointException(42)));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java
new file mode 100644
index 00000000..9d940227
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..bb9edaba
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..92aff54c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..e747b6d6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..07a2731b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatCodePointException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatCodePointException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatCodePointException
+ final Object o = new IllegalFormatCodePointException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java b/gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java
new file mode 100644
index 00000000..45772f77
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.util.IllegalFormatCodePointException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatCodePointException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test if instances of a class java.util.IllegalFormatCodePointException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatCodePointException object1 = new IllegalFormatCodePointException(42);
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.IllegalFormatCodePointException"));
+ harness.check(object1.toString().contains(Integer.toHexString(42)));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/getCodePoint.java b/gnu/testlet/java/util/IllegalFormatCodePointException/getCodePoint.java
new file mode 100644
index 00000000..83067715
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/getCodePoint.java
@@ -0,0 +1,61 @@
+// Test of a method java.util.IllegalFormatCodePointException.getCodePoint()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatCodePointException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatCodePointException.getCodePoint()
+ */
+public class getCodePoint implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatCodePointException object1 = new IllegalFormatCodePointException(0);
+ harness.check(object1 != null);
+ harness.check(object1.getCodePoint() == 0);
+
+ IllegalFormatCodePointException object2 = new IllegalFormatCodePointException(0x2a);
+ harness.check(object2 != null);
+ harness.check(object2.getCodePoint() == 42);
+
+ IllegalFormatCodePointException object3 = new IllegalFormatCodePointException(Integer.MAX_VALUE);
+ harness.check(object3 != null);
+ harness.check(object3.getCodePoint() == Integer.MAX_VALUE);
+
+ IllegalFormatCodePointException object4 = new IllegalFormatCodePointException(Integer.MIN_VALUE);
+ harness.check(object4 != null);
+ harness.check(object4.getCodePoint() == Integer.MIN_VALUE);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatCodePointException/getMessage.java b/gnu/testlet/java/util/IllegalFormatCodePointException/getMessage.java
new file mode 100644
index 00000000..0d3a413c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatCodePointException/getMessage.java
@@ -0,0 +1,70 @@
+// Test of a method java.util.IllegalFormatCodePointException.getMessage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatCodePointException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatCodePointException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatCodePointException.getMessage()
+ */
+public class getMessage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatCodePointException object1 = new IllegalFormatCodePointException(0);
+ harness.check(object1 != null);
+ harness.check(object1.getMessage() != null);
+ harness.check(object1.getMessage().contains("Code point = "));
+ harness.check(object1.getMessage().contains("0x0"));
+
+ IllegalFormatCodePointException object2 = new IllegalFormatCodePointException(0x2a);
+ harness.check(object2 != null);
+ harness.check(object2.getMessage() != null);
+ harness.check(object2.getMessage().contains("Code point = "));
+ harness.check(object2.getMessage().contains("0x2a"));
+
+ IllegalFormatCodePointException object3 = new IllegalFormatCodePointException(Integer.MAX_VALUE);
+ harness.check(object3 != null);
+ harness.check(object3.getMessage() != null);
+ harness.check(object3.getMessage().contains("Code point = "));
+ harness.check(object3.getMessage().contains("0x7fffffff"));
+
+ IllegalFormatCodePointException object4 = new IllegalFormatCodePointException(Integer.MIN_VALUE);
+ harness.check(object4 != null);
+ harness.check(object4.getMessage() != null);
+ harness.check(object4.getMessage().contains("Code point = "));
+ harness.check(object4.getMessage().contains("0x80000000"));
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries
new file mode 100644
index 00000000..7de64f1d
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries
@@ -0,0 +1,7 @@
+/TryCatch.java/1.2/Mon Nov 19 10:03:38 2012//
+/TryCatchNPE.java/1.1/Mon Jul 23 15:58:06 2012//
+/constructor.java/1.2/Mon Nov 19 10:03:38 2012//
+/getArgumentClass.java/1.1/Mon Jul 23 15:58:06 2012//
+/getConversion.java/1.1/Mon Jul 23 15:58:06 2012//
+/getMessage.java/1.1/Mon Jul 23 15:58:06 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Repository
new file mode 100644
index 00000000..6a39304d
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatConversionException
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Root b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java b/gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java
new file mode 100644
index 00000000..8f2895bb
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatConversionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatConversionException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalFormatConversionException('c', Integer.class);
+ }
+ catch (IllegalFormatConversionException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/TryCatchNPE.java b/gnu/testlet/java/util/IllegalFormatConversionException/TryCatchNPE.java
new file mode 100644
index 00000000..d0efbd9c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/TryCatchNPE.java
@@ -0,0 +1,56 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatConversionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatConversionException
+ */
+public class TryCatchNPE implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ Object x = new IllegalFormatConversionException('c', null);
+ }
+ catch (NullPointerException npe) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Entries
new file mode 100644
index 00000000..84db1fea
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Mon Nov 19 10:03:38 2012//
+/getConstructors.java/1.1/Mon Nov 19 10:03:38 2012//
+/getDeclaredConstructors.java/1.1/Mon Nov 19 10:03:38 2012//
+/getDeclaredFields.java/1.1/Mon Nov 19 10:03:38 2012//
+/getDeclaredMethods.java/1.1/Mon Nov 19 10:03:38 2012//
+/getFields.java/1.1/Mon Nov 19 10:03:38 2012//
+/getInterfaces.java/1.2/Mon Nov 19 10:03:38 2012//
+/getMethods.java/1.1/Mon Nov 19 10:03:38 2012//
+/getModifiers.java/1.2/Mon Nov 19 10:03:38 2012//
+/getName.java/1.2/Mon Nov 19 10:03:38 2012//
+/getPackage.java/1.2/Mon Nov 19 10:03:38 2012//
+/getSimpleName.java/1.2/Mon Nov 19 10:03:38 2012//
+/getSuperclass.java/1.2/Mon Nov 19 10:03:38 2012//
+/isAnnotation.java/1.1/Mon Nov 19 10:03:38 2012//
+/isAnnotationPresent.java/1.1/Mon Nov 19 10:03:38 2012//
+/isAnonymousClass.java/1.1/Mon Nov 19 10:03:38 2012//
+/isArray.java/1.1/Mon Nov 19 10:03:38 2012//
+/isAssignableFrom.java/1.2/Mon Nov 19 10:03:38 2012//
+/isEnum.java/1.1/Mon Nov 19 10:03:38 2012//
+/isInstance.java/1.2/Mon Nov 19 10:03:38 2012//
+/isInterface.java/1.2/Mon Nov 19 10:03:38 2012//
+/isLocalClass.java/1.2/Mon Nov 19 10:03:38 2012//
+/isMemberClass.java/1.2/Mon Nov 19 10:03:38 2012//
+/isPrimitive.java/1.2/Mon Nov 19 10:03:38 2012//
+/isSynthetic.java/1.2/Mon Nov 19 10:03:38 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Repository
new file mode 100644
index 00000000..c219d3c0
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatConversionException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..d348dec9
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/InstanceOf.java
@@ -0,0 +1,67 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatConversionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatConversionException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ IllegalFormatConversionException o = new IllegalFormatConversionException('a', Character.class);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalFormatConversionException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getConstructors.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getConstructors.java
new file mode 100644
index 00000000..f1661380
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.util.IllegalFormatConversionException(char,java.lang.Class)", "java.util.IllegalFormatConversionException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.util.IllegalFormatConversionException(char,java.lang.Class)", "java.util.IllegalFormatConversionException");
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..fb432f9f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.util.IllegalFormatConversionException(char,java.lang.Class)", "java.util.IllegalFormatConversionException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.util.IllegalFormatConversionException(char,java.lang.Class)", "java.util.IllegalFormatConversionException");
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredFields.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..bba63624
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredFields.java
@@ -0,0 +1,106 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.util.IllegalFormatConversionException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk6.put("private char java.util.IllegalFormatConversionException.c", "c");
+ testedDeclaredFields_jdk6.put("private java.lang.Class java.util.IllegalFormatConversionException.arg", "arg");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.util.IllegalFormatConversionException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private char java.util.IllegalFormatConversionException.c", "c");
+ testedDeclaredFields_jdk7.put("private java.lang.Class java.util.IllegalFormatConversionException.arg", "arg");
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..bf4444ec
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,108 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatConversionException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk6.put("public char java.util.IllegalFormatConversionException.getConversion()", "getConversion");
+ testedDeclaredMethods_jdk6.put("public java.lang.Class java.util.IllegalFormatConversionException.getArgumentClass()", "getArgumentClass");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatConversionException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk7.put("public char java.util.IllegalFormatConversionException.getConversion()", "getConversion");
+ testedDeclaredMethods_jdk7.put("public java.lang.Class java.util.IllegalFormatConversionException.getArgumentClass()", "getArgumentClass");
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getFields.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getFields.java
new file mode 100644
index 00000000..d58ea570
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..303c2a64
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getMethods.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getMethods.java
new file mode 100644
index 00000000..68d1f31d
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getMethods.java
@@ -0,0 +1,146 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatConversionException.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public char java.util.IllegalFormatConversionException.getConversion()", "getConversion");
+ testedMethods_jdk6.put("public java.lang.Class java.util.IllegalFormatConversionException.getArgumentClass()", "getArgumentClass");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatConversionException.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public char java.util.IllegalFormatConversionException.getConversion()", "getConversion");
+ testedMethods_jdk7.put("public java.lang.Class java.util.IllegalFormatConversionException.getArgumentClass()", "getArgumentClass");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java
new file mode 100644
index 00000000..12389c95
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java
new file mode 100644
index 00000000..ab0fdbaa
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.IllegalFormatConversionException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java
new file mode 100644
index 00000000..b25bd438
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..6407a539
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalFormatConversionException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..1e813e75
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotation.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..51464c35
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..d79edac3
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnonymousClass.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..b8999225
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isArray.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isArray.java
new file mode 100644
index 00000000..386773ad
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..0c65e25b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalFormatConversionException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isEnum.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isEnum.java
new file mode 100644
index 00000000..63564003
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java
new file mode 100644
index 00000000..6c69d52f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalFormatConversionException('a', Character.class)));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java
new file mode 100644
index 00000000..ecf72a2c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..7f03364b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..7a25376a
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..93e22bba
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..c81747c8
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatConversionException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatConversionException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatConversionException
+ final Object o = new IllegalFormatConversionException('a', Character.class);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/constructor.java b/gnu/testlet/java/util/IllegalFormatConversionException/constructor.java
new file mode 100644
index 00000000..add7d6fd
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.util.IllegalFormatConversionException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test if instances of a class java.util.IllegalFormatConversionException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatConversionException object1 = new IllegalFormatConversionException('c', Integer.class);
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.IllegalFormatConversionException"));
+ harness.check(object1.toString().contains("Integer"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/getArgumentClass.java b/gnu/testlet/java/util/IllegalFormatConversionException/getArgumentClass.java
new file mode 100644
index 00000000..b4b85d7a
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/getArgumentClass.java
@@ -0,0 +1,65 @@
+// Test of a method java.util.IllegalFormatConversionException.getArgumentClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatConversionException.getArgumentClass()
+ */
+public class getArgumentClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatConversionException object1 = new IllegalFormatConversionException('c', Integer.class);
+ harness.check(object1 != null);
+ harness.check(object1.getArgumentClass() != null);
+ harness.check(object1.getArgumentClass() == Integer.class);
+
+ IllegalFormatConversionException object2 = new IllegalFormatConversionException(' ', Number.class);
+ harness.check(object2 != null);
+ harness.check(object2.getArgumentClass() != null);
+ harness.check(object2.getArgumentClass() == Number.class);
+
+ IllegalFormatConversionException object3 = new IllegalFormatConversionException('@', Object.class);
+ harness.check(object3 != null);
+ harness.check(object3.getArgumentClass() != null);
+ harness.check(object3.getArgumentClass() == Object.class);
+
+ IllegalFormatConversionException object4 = new IllegalFormatConversionException('\u1234', "xyzzy".getClass());
+ harness.check(object4 != null);
+ harness.check(object4.getArgumentClass() != null);
+ harness.check(object4.getArgumentClass() == String.class);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/getConversion.java b/gnu/testlet/java/util/IllegalFormatConversionException/getConversion.java
new file mode 100644
index 00000000..8556d849
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/getConversion.java
@@ -0,0 +1,61 @@
+// Test of a method java.util.IllegalFormatConversionException.getConversion()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatConversionException.getConversion()
+ */
+public class getConversion implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatConversionException object1 = new IllegalFormatConversionException('c', Integer.class);
+ harness.check(object1 != null);
+ harness.check(object1.getConversion() == 'c');
+
+ IllegalFormatConversionException object2 = new IllegalFormatConversionException(' ', Number.class);
+ harness.check(object2 != null);
+ harness.check(object2.getConversion() == ' ');
+
+ IllegalFormatConversionException object3 = new IllegalFormatConversionException('@', Object.class);
+ harness.check(object3 != null);
+ harness.check(object3.getConversion() == '@');
+
+ IllegalFormatConversionException object4 = new IllegalFormatConversionException('\u1234', Object.class);
+ harness.check(object4 != null);
+ harness.check(object4.getConversion() == '\u1234');
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatConversionException/getMessage.java b/gnu/testlet/java/util/IllegalFormatConversionException/getMessage.java
new file mode 100644
index 00000000..c7f7956f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatConversionException/getMessage.java
@@ -0,0 +1,67 @@
+// Test of a method java.util.IllegalFormatConversionException.getMessage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatConversionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatConversionException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatConversionException.getMessage()
+ */
+public class getMessage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatConversionException object1 = new IllegalFormatConversionException('c', Integer.class);
+ harness.check(object1 != null);
+ harness.check(object1.getMessage() != null);
+ harness.check(object1.getMessage().contains("Integer"));
+
+ IllegalFormatConversionException object2 = new IllegalFormatConversionException(' ', Number.class);
+ harness.check(object2 != null);
+ harness.check(object2.getMessage() != null);
+ harness.check(object2.getMessage().contains("Number"));
+
+ IllegalFormatConversionException object3 = new IllegalFormatConversionException('@', Object.class);
+ harness.check(object3 != null);
+ harness.check(object3.getMessage() != null);
+ harness.check(object3.getMessage().contains("Object"));
+ harness.check(object3.getMessage().contains("@"));
+
+ IllegalFormatConversionException object4 = new IllegalFormatConversionException('\u1234', Object.class);
+ harness.check(object4 != null);
+ harness.check(object4.getMessage() != null);
+ harness.check(object4.getMessage().contains("Object"));
+ harness.check(object4.getMessage().contains("\u1234"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatException/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/IllegalFormatException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatException/CVS/Repository
new file mode 100644
index 00000000..9dc5c83b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatException
diff --git a/gnu/testlet/java/util/IllegalFormatException/CVS/Root b/gnu/testlet/java/util/IllegalFormatException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Entries
new file mode 100644
index 00000000..12b5ed85
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Entries
@@ -0,0 +1,2 @@
+/InstanceOf.java/1.1/Fri Jul 27 11:15:50 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Repository
new file mode 100644
index 00000000..c62df916
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..3eaf90bd
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatException/classInfo/InstanceOf.java
@@ -0,0 +1,70 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatException;
+import java.util.DuplicateFormatFlagsException;
+import java.util.FormatFlagsConversionMismatchException;
+import java.util.IllegalFormatCodePointException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ check(harness, new DuplicateFormatFlagsException("string"));
+ check(harness, new FormatFlagsConversionMismatchException("string", 'c'));
+ check(harness, new IllegalFormatCodePointException(42));
+ }
+
+ public void check(TestHarness harness, Throwable t)
+ {
+ // basic check of instanceof operator
+ harness.check(t instanceof IllegalFormatException);
+
+ // check operator instanceof against all superclasses
+ harness.check(t instanceof IllegalArgumentException);
+ harness.check(t instanceof RuntimeException);
+ harness.check(t instanceof Exception);
+ harness.check(t instanceof Throwable);
+ harness.check(t instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries
new file mode 100644
index 00000000..55f35101
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries
@@ -0,0 +1,5 @@
+/TryCatch.java/1.2/Tue Nov 20 09:28:13 2012//
+/constructor.java/1.2/Tue Nov 20 09:28:13 2012//
+/getFlags.java/1.1/Fri Jul 27 11:15:50 2012//
+/getMessage.java/1.1/Fri Jul 27 11:15:50 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Repository
new file mode 100644
index 00000000..0c059474
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatFlagsException
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Root b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java b/gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java
new file mode 100644
index 00000000..86794c82
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatFlagsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatFlagsException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalFormatFlagsException("IllegalFormatFlagsException");
+ }
+ catch (IllegalFormatFlagsException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Entries
new file mode 100644
index 00000000..29bac6c6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.2/Tue Nov 20 09:28:14 2012//
+/getConstructors.java/1.1/Tue Nov 20 09:28:14 2012//
+/getDeclaredConstructors.java/1.1/Tue Nov 20 09:28:14 2012//
+/getDeclaredFields.java/1.1/Tue Nov 20 09:28:14 2012//
+/getDeclaredMethods.java/1.1/Tue Nov 20 09:28:14 2012//
+/getFields.java/1.1/Tue Nov 20 09:28:14 2012//
+/getInterfaces.java/1.2/Tue Nov 20 09:28:14 2012//
+/getMethods.java/1.1/Tue Nov 20 09:28:14 2012//
+/getModifiers.java/1.2/Tue Nov 20 09:28:14 2012//
+/getName.java/1.2/Tue Nov 20 09:28:14 2012//
+/getPackage.java/1.2/Tue Nov 20 09:28:14 2012//
+/getSimpleName.java/1.2/Tue Nov 20 09:28:14 2012//
+/getSuperclass.java/1.2/Tue Nov 20 09:28:14 2012//
+/isAnnotation.java/1.1/Tue Nov 20 09:28:14 2012//
+/isAnnotationPresent.java/1.1/Tue Nov 20 09:28:14 2012//
+/isAnonymousClass.java/1.1/Tue Nov 20 09:28:14 2012//
+/isArray.java/1.1/Tue Nov 20 09:28:14 2012//
+/isAssignableFrom.java/1.2/Tue Nov 20 09:28:14 2012//
+/isEnum.java/1.1/Tue Nov 20 09:28:14 2012//
+/isInstance.java/1.2/Tue Nov 20 09:28:14 2012//
+/isInterface.java/1.2/Tue Nov 20 09:28:14 2012//
+/isLocalClass.java/1.2/Tue Nov 20 09:28:14 2012//
+/isMemberClass.java/1.2/Tue Nov 20 09:28:14 2012//
+/isPrimitive.java/1.2/Tue Nov 20 09:28:14 2012//
+/isSynthetic.java/1.2/Tue Nov 20 09:28:14 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Repository
new file mode 100644
index 00000000..0cb3420d
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..6c8c6cc7
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/InstanceOf.java
@@ -0,0 +1,67 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatFlagsException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatFlagsException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ IllegalFormatFlagsException o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalFormatFlagsException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getConstructors.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getConstructors.java
new file mode 100644
index 00000000..d12bf132
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.util.IllegalFormatFlagsException(java.lang.String)", "java.util.IllegalFormatFlagsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.util.IllegalFormatFlagsException(java.lang.String)", "java.util.IllegalFormatFlagsException");
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..ba890c4e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.util.IllegalFormatFlagsException(java.lang.String)", "java.util.IllegalFormatFlagsException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.util.IllegalFormatFlagsException(java.lang.String)", "java.util.IllegalFormatFlagsException");
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredFields.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..bfec0756
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredFields.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.util.IllegalFormatFlagsException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk6.put("private java.lang.String java.util.IllegalFormatFlagsException.flags", "flags");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.util.IllegalFormatFlagsException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private java.lang.String java.util.IllegalFormatFlagsException.flags", "flags");
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..25f3c4e6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,106 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatFlagsException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatFlagsException.getFlags()", "getFlags");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatFlagsException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatFlagsException.getFlags()", "getFlags");
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getFields.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getFields.java
new file mode 100644
index 00000000..67104f36
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..47c89d0a
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getMethods.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getMethods.java
new file mode 100644
index 00000000..5c53593e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getMethods.java
@@ -0,0 +1,144 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatFlagsException.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatFlagsException.getFlags()", "getFlags");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatFlagsException.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatFlagsException.getFlags()", "getFlags");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java
new file mode 100644
index 00000000..f6794895
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java
new file mode 100644
index 00000000..50973489
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.IllegalFormatFlagsException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java
new file mode 100644
index 00000000..b9358dd6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..9206af28
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalFormatFlagsException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..0b883a63
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotation.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..43fa2fb8
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..04b1762f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnonymousClass.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..37a6bd97
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isArray.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isArray.java
new file mode 100644
index 00000000..5ab15143
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..1b3d3945
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalFormatFlagsException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isEnum.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isEnum.java
new file mode 100644
index 00000000..b0001329
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java
new file mode 100644
index 00000000..76ace03b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalFormatFlagsException("IllegalFormatFlagsException")));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java
new file mode 100644
index 00000000..833a2907
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..05a753ed
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..26e44a3b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..39e1f7f1
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..0cad3309
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatFlagsException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatFlagsException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatFlagsException
+ final Object o = new IllegalFormatFlagsException("IllegalFormatFlagsException");
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java b/gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java
new file mode 100644
index 00000000..5ed369fc
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.util.IllegalFormatFlagsException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test if instances of a class java.util.IllegalFormatFlagsException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatFlagsException object1 = new IllegalFormatFlagsException("nothing happens");
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.IllegalFormatFlagsException"));
+ harness.check(object1.toString().contains("nothing happens"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/getFlags.java b/gnu/testlet/java/util/IllegalFormatFlagsException/getFlags.java
new file mode 100644
index 00000000..973b5772
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/getFlags.java
@@ -0,0 +1,56 @@
+// Test of a method java.util.IllegalFormatFlagsException.getFlags()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatFlagsException.getFlags()
+ */
+public class getFlags implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatFlagsException object1 = new IllegalFormatFlagsException("");
+ harness.check(object1 != null);
+ harness.check(object1.getFlags() != null);
+ harness.check(object1.getFlags().isEmpty());
+
+ IllegalFormatFlagsException object2 = new IllegalFormatFlagsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.getFlags() != null);
+ harness.check(object2.getFlags().contains("nothing happens"));
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/IllegalFormatFlagsException/getMessage.java b/gnu/testlet/java/util/IllegalFormatFlagsException/getMessage.java
new file mode 100644
index 00000000..79259503
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatFlagsException/getMessage.java
@@ -0,0 +1,56 @@
+// Test of a method java.util.IllegalFormatFlagsException.getMessage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.IllegalFormatFlagsException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatFlagsException;
+
+
+
+/**
+ * Test of a method java.util.IllegalFormatFlagsException.getMessage()
+ */
+public class getMessage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatFlagsException object1 = new IllegalFormatFlagsException("");
+ harness.check(object1 != null);
+ harness.check(object1.getMessage() != null);
+ harness.check(object1.getMessage().contains("Flags ="));
+
+ IllegalFormatFlagsException object2 = new IllegalFormatFlagsException("nothing happens");
+ harness.check(object2 != null);
+ harness.check(object2.getMessage() != null);
+ harness.check(object2.getMessage().contains("nothing happens"));
+ harness.check(object2.getMessage().contains("Flags ="));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries
new file mode 100644
index 00000000..3e584a5e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Wed Nov 21 12:14:42 2012//
+/constructor.java/1.1/Wed Nov 21 12:14:42 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Repository
new file mode 100644
index 00000000..ea940083
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatPrecisionException
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Root b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/TryCatch.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/TryCatch.java
new file mode 100644
index 00000000..8dcbba40
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatPrecisionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatPrecisionException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalFormatPrecisionException(42);
+ }
+ catch (IllegalFormatPrecisionException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Entries
new file mode 100644
index 00000000..30be1572
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.1/Wed Nov 21 12:14:42 2012//
+/getConstructors.java/1.1/Wed Nov 21 12:14:42 2012//
+/getDeclaredConstructors.java/1.1/Wed Nov 21 12:14:42 2012//
+/getDeclaredFields.java/1.1/Wed Nov 21 12:14:42 2012//
+/getDeclaredMethods.java/1.1/Wed Nov 21 12:14:42 2012//
+/getFields.java/1.1/Wed Nov 21 12:14:42 2012//
+/getInterfaces.java/1.1/Wed Nov 21 12:14:42 2012//
+/getMethods.java/1.1/Wed Nov 21 12:14:42 2012//
+/getModifiers.java/1.1/Wed Nov 21 12:14:42 2012//
+/getName.java/1.1/Wed Nov 21 12:14:42 2012//
+/getPackage.java/1.1/Wed Nov 21 12:14:42 2012//
+/getSimpleName.java/1.1/Wed Nov 21 12:14:42 2012//
+/getSuperclass.java/1.1/Wed Nov 21 12:14:42 2012//
+/isAnnotation.java/1.1/Wed Nov 21 12:14:42 2012//
+/isAnnotationPresent.java/1.1/Wed Nov 21 12:14:42 2012//
+/isAnonymousClass.java/1.1/Wed Nov 21 12:14:42 2012//
+/isArray.java/1.1/Wed Nov 21 12:14:42 2012//
+/isAssignableFrom.java/1.1/Wed Nov 21 12:14:42 2012//
+/isEnum.java/1.1/Wed Nov 21 12:14:42 2012//
+/isInstance.java/1.1/Wed Nov 21 12:14:42 2012//
+/isInterface.java/1.1/Wed Nov 21 12:14:42 2012//
+/isLocalClass.java/1.1/Wed Nov 21 12:14:42 2012//
+/isMemberClass.java/1.1/Wed Nov 21 12:14:42 2012//
+/isPrimitive.java/1.1/Wed Nov 21 12:14:42 2012//
+/isSynthetic.java/1.1/Wed Nov 21 12:14:42 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Repository
new file mode 100644
index 00000000..cc541136
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..e9c50109
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/InstanceOf.java
@@ -0,0 +1,67 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatPrecisionException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatPrecisionException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ IllegalFormatPrecisionException o = new IllegalFormatPrecisionException(42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalFormatPrecisionException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getConstructors.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getConstructors.java
new file mode 100644
index 00000000..a279b0c6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.util.IllegalFormatPrecisionException(int)", "java.util.IllegalFormatPrecisionException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.util.IllegalFormatPrecisionException(int)", "java.util.IllegalFormatPrecisionException");
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..bf21d564
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.util.IllegalFormatPrecisionException(int)", "java.util.IllegalFormatPrecisionException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.util.IllegalFormatPrecisionException(int)", "java.util.IllegalFormatPrecisionException");
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredFields.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..9a55a137
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredFields.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.util.IllegalFormatPrecisionException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk6.put("private int java.util.IllegalFormatPrecisionException.p", "p");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.util.IllegalFormatPrecisionException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private int java.util.IllegalFormatPrecisionException.p", "p");
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..c687decf
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,106 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatPrecisionException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk6.put("public int java.util.IllegalFormatPrecisionException.getPrecision()", "getPrecision");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatPrecisionException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk7.put("public int java.util.IllegalFormatPrecisionException.getPrecision()", "getPrecision");
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getFields.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getFields.java
new file mode 100644
index 00000000..6367f071
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getInterfaces.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..7f774928
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getMethods.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getMethods.java
new file mode 100644
index 00000000..cb8d3f49
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getMethods.java
@@ -0,0 +1,144 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatPrecisionException.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public int java.util.IllegalFormatPrecisionException.getPrecision()", "getPrecision");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatPrecisionException.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public int java.util.IllegalFormatPrecisionException.getPrecision()", "getPrecision");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getModifiers.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getModifiers.java
new file mode 100644
index 00000000..35c88b17
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getName.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getName.java
new file mode 100644
index 00000000..bd4cb6ba
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.IllegalFormatPrecisionException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getPackage.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getPackage.java
new file mode 100644
index 00000000..ce2beea7
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSimpleName.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..2d763d58
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalFormatPrecisionException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSuperclass.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..2a9d9b3f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotation.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..7237c92c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..99584ec1
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnonymousClass.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..35938e5b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isArray.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isArray.java
new file mode 100644
index 00000000..46e2ed7b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..39749723
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalFormatPrecisionException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isEnum.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isEnum.java
new file mode 100644
index 00000000..b2465805
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInstance.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInstance.java
new file mode 100644
index 00000000..b90ae7f6
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalFormatPrecisionException(42)));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInterface.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInterface.java
new file mode 100644
index 00000000..5a059fd3
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isLocalClass.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..da614239
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isMemberClass.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..8cd237e4
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isPrimitive.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..246e1d9b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isSynthetic.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..ed1f3388
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatPrecisionException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatPrecisionException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatPrecisionException
+ final Object o = new IllegalFormatPrecisionException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatPrecisionException/constructor.java b/gnu/testlet/java/util/IllegalFormatPrecisionException/constructor.java
new file mode 100644
index 00000000..eb8d06de
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatPrecisionException/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.util.IllegalFormatPrecisionException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatPrecisionException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatPrecisionException;
+
+
+
+/**
+ * Test if instances of a class java.util.IllegalFormatPrecisionException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatPrecisionException object1 = new IllegalFormatPrecisionException(42);
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.IllegalFormatPrecisionException"));
+ harness.check(object1.toString().contains("42"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries
new file mode 100644
index 00000000..bf1f7460
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries
@@ -0,0 +1,3 @@
+/TryCatch.java/1.1/Thu Nov 22 09:43:46 2012//
+/constructor.java/1.1/Thu Nov 22 09:43:46 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries.Log b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries.Log
new file mode 100644
index 00000000..7ac6181c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/classInfo////
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Repository b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Repository
new file mode 100644
index 00000000..919453b8
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatWidthException
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Root b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/TryCatch.java b/gnu/testlet/java/util/IllegalFormatWidthException/TryCatch.java
new file mode 100644
index 00000000..473cedcc
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/TryCatch.java
@@ -0,0 +1,58 @@
+// Test if try-catch block is working properly for a class java.util.IllegalFormatWidthException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test if try-catch block is working properly for a class java.util.IllegalFormatWidthException
+ */
+public class TryCatch implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // flag that is set when exception is caught
+ boolean caught = false;
+ try {
+ throw new IllegalFormatWidthException(42);
+ }
+ catch (IllegalFormatWidthException e) {
+ // correct exception was caught
+ caught = true;
+ }
+ harness.check(caught);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Entries b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Entries
new file mode 100644
index 00000000..5312ce01
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Entries
@@ -0,0 +1,26 @@
+/InstanceOf.java/1.1/Thu Nov 22 09:43:46 2012//
+/getConstructors.java/1.1/Thu Nov 22 09:43:46 2012//
+/getDeclaredConstructors.java/1.1/Thu Nov 22 09:43:46 2012//
+/getDeclaredFields.java/1.1/Thu Nov 22 09:43:46 2012//
+/getDeclaredMethods.java/1.1/Thu Nov 22 09:43:46 2012//
+/getFields.java/1.1/Thu Nov 22 09:43:46 2012//
+/getInterfaces.java/1.1/Thu Nov 22 09:43:46 2012//
+/getMethods.java/1.1/Thu Nov 22 09:43:46 2012//
+/getModifiers.java/1.1/Thu Nov 22 09:43:46 2012//
+/getName.java/1.1/Thu Nov 22 09:43:46 2012//
+/getPackage.java/1.1/Thu Nov 22 09:43:46 2012//
+/getSimpleName.java/1.1/Thu Nov 22 09:43:46 2012//
+/getSuperclass.java/1.1/Thu Nov 22 09:43:46 2012//
+/isAnnotation.java/1.1/Thu Nov 22 09:43:46 2012//
+/isAnnotationPresent.java/1.1/Thu Nov 22 09:43:46 2012//
+/isAnonymousClass.java/1.1/Thu Nov 22 09:43:46 2012//
+/isArray.java/1.1/Thu Nov 22 09:43:46 2012//
+/isAssignableFrom.java/1.1/Thu Nov 22 09:43:46 2012//
+/isEnum.java/1.1/Thu Nov 22 09:43:46 2012//
+/isInstance.java/1.1/Thu Nov 22 09:43:46 2012//
+/isInterface.java/1.1/Thu Nov 22 09:43:46 2012//
+/isLocalClass.java/1.1/Thu Nov 22 09:43:47 2012//
+/isMemberClass.java/1.1/Thu Nov 22 09:43:47 2012//
+/isPrimitive.java/1.1/Thu Nov 22 09:43:47 2012//
+/isSynthetic.java/1.1/Thu Nov 22 09:43:47 2012//
+D
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Repository b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Repository
new file mode 100644
index 00000000..264fb451
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/IllegalFormatWidthException/classInfo
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Root b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/InstanceOf.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/InstanceOf.java
new file mode 100644
index 00000000..6dccd6ec
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/InstanceOf.java
@@ -0,0 +1,67 @@
+// Test for instanceof operator applied to a class java.util.IllegalFormatWidthException
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.IllegalFormatException;
+import java.lang.IllegalArgumentException;
+import java.lang.RuntimeException;
+import java.lang.Exception;
+import java.lang.Throwable;
+import java.lang.Object;
+
+
+
+/**
+ * Test for instanceof operator applied to a class java.util.IllegalFormatWidthException
+ */
+public class InstanceOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ IllegalFormatWidthException o = new IllegalFormatWidthException(42);
+
+ // basic check of instanceof operator
+ harness.check(o instanceof IllegalFormatWidthException);
+
+ // check operator instanceof against all superclasses
+ harness.check(o instanceof IllegalFormatException);
+ harness.check(o instanceof IllegalArgumentException);
+ harness.check(o instanceof RuntimeException);
+ harness.check(o instanceof Exception);
+ harness.check(o instanceof Throwable);
+ harness.check(o instanceof Object);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getConstructors.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getConstructors.java
new file mode 100644
index 00000000..f5fdcabb
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getConstructors()
+ */
+public class getConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of constructors which should exists
+ Map<String, String> testedConstructors = null;
+
+ // map of constructors for (Open)JDK6
+ Map<String, String> testedConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of constructors for (Open)JDK7
+ Map<String, String> testedConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedConstructors_jdk6.put("public java.util.IllegalFormatWidthException(int)", "java.util.IllegalFormatWidthException");
+
+ // map for constructors declared in (Open)JDK7
+ testedConstructors_jdk7.put("public java.util.IllegalFormatWidthException(int)", "java.util.IllegalFormatWidthException");
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedConstructors = getJavaVersion() < 7 ? testedConstructors_jdk6 : testedConstructors_jdk7;
+
+ // get all constructors for this class
+ java.lang.reflect.Constructor[] constructors = c.getConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(constructors.length, expectedNumberOfConstructors);
+
+ // check if all constructors exist
+ for (java.lang.reflect.Constructor constructor : constructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = constructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = constructor.toString().replaceAll(" native ", " ");
+ harness.check(testedConstructors.containsKey(constructorString));
+ harness.check(testedConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredConstructors.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredConstructors.java
new file mode 100644
index 00000000..9391901b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredConstructors.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredConstructors()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredConstructors()
+ */
+public class getDeclaredConstructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared constructors which should exists
+ Map<String, String> testedDeclaredConstructors = null;
+
+ // map of declared constructors for (Open)JDK6
+ Map<String, String> testedDeclaredConstructors_jdk6 = new HashMap<String, String>();
+
+ // map of declared constructors for (Open)JDK7
+ Map<String, String> testedDeclaredConstructors_jdk7 = new HashMap<String, String>();
+
+ // map for constructors declared in (Open)JDK6
+ testedDeclaredConstructors_jdk6.put("public java.util.IllegalFormatWidthException(int)", "java.util.IllegalFormatWidthException");
+
+ // map for constructors declared in (Open)JDK7
+ testedDeclaredConstructors_jdk7.put("public java.util.IllegalFormatWidthException(int)", "java.util.IllegalFormatWidthException");
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing constructor signatures
+ testedDeclaredConstructors = getJavaVersion() < 7 ? testedDeclaredConstructors_jdk6 : testedDeclaredConstructors_jdk7;
+
+ // get all declared constructors for this class
+ java.lang.reflect.Constructor[] declaredConstructors = c.getDeclaredConstructors();
+
+ // expected number of constructors
+ final int expectedNumberOfConstructors = testedDeclaredConstructors.size();
+
+ // basic check for a number of constructors
+ harness.check(declaredConstructors.length, expectedNumberOfConstructors);
+
+ // check if all declared constructors exist
+ for (java.lang.reflect.Constructor declaredConstructor : declaredConstructors) {
+ // constructor name should consists of package name + class name
+ String constructorName = declaredConstructor.getName();
+ // modifiers + package + class name + parameter types
+ String constructorString = declaredConstructor.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredConstructors.containsKey(constructorString));
+ harness.check(testedDeclaredConstructors.get(constructorString), constructorName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredFields.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredFields.java
new file mode 100644
index 00000000..ef222176
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredFields.java
@@ -0,0 +1,104 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredFields()
+ */
+public class getDeclaredFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared fields which should exists
+ Map<String, String> testedDeclaredFields = null;
+
+ // map of declared fields for (Open)JDK6
+ Map<String, String> testedDeclaredFields_jdk6 = new HashMap<String, String>();
+
+ // map of declared fields for (Open)JDK7
+ Map<String, String> testedDeclaredFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ testedDeclaredFields_jdk6.put("private static final long java.util.IllegalFormatWidthException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk6.put("private int java.util.IllegalFormatWidthException.w", "w");
+
+ // map for fields declared in (Open)JDK7
+ testedDeclaredFields_jdk7.put("private static final long java.util.IllegalFormatWidthException.serialVersionUID", "serialVersionUID");
+ testedDeclaredFields_jdk7.put("private int java.util.IllegalFormatWidthException.w", "w");
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing declared field signatures
+ testedDeclaredFields = getJavaVersion() < 7 ? testedDeclaredFields_jdk6 : testedDeclaredFields_jdk7;
+
+ // get all declared fields for this class
+ java.lang.reflect.Field[] declaredFields = c.getDeclaredFields();
+
+ // expected number of declared fields
+ final int expectedNumberOfDeclaredFields = testedDeclaredFields.size();
+
+ // basic check for a number of declared fields
+ harness.check(declaredFields.length, expectedNumberOfDeclaredFields);
+
+ // check if all fields exist
+ for (java.lang.reflect.Field declaredField: declaredFields) {
+ String fieldName = declaredField.getName();
+ String fieldString = declaredField.toString();
+ harness.check(testedDeclaredFields.containsKey(fieldString));
+ harness.check(testedDeclaredFields.get(fieldString), fieldName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredMethods.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredMethods.java
new file mode 100644
index 00000000..39837f18
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getDeclaredMethods.java
@@ -0,0 +1,106 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getDeclaredMethods()
+ */
+public class getDeclaredMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of declared methods which should exists
+ Map<String, String> testedDeclaredMethods = null;
+
+ // map of declared methods for (Open)JDK6
+ Map<String, String> testedDeclaredMethods_jdk6 = new HashMap<String, String>();
+
+ // map of declared methods for (Open)JDK7
+ Map<String, String> testedDeclaredMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedDeclaredMethods_jdk6.put("public java.lang.String java.util.IllegalFormatWidthException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk6.put("public int java.util.IllegalFormatWidthException.getWidth()", "getWidth");
+
+ // map for methods declared in (Open)JDK7
+ testedDeclaredMethods_jdk7.put("public java.lang.String java.util.IllegalFormatWidthException.getMessage()", "getMessage");
+ testedDeclaredMethods_jdk7.put("public int java.util.IllegalFormatWidthException.getWidth()", "getWidth");
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedDeclaredMethods = getJavaVersion() < 7 ? testedDeclaredMethods_jdk6 : testedDeclaredMethods_jdk7;
+
+ // get all declared methods for this class
+ java.lang.reflect.Method[] declaredMethods = c.getDeclaredMethods();
+
+ // expected number of declared methods
+ final int expectedNumberOfDeclaredMethods = testedDeclaredMethods.size();
+
+ // basic check for a number of declared methods
+ harness.check(declaredMethods.length, expectedNumberOfDeclaredMethods);
+
+ // check if all declared methods exist
+ for (java.lang.reflect.Method declaredMethod : declaredMethods) {
+ // method name should consists of package name + class name
+ String methodName = declaredMethod.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = declaredMethod.toString().replaceAll(" native ", " ");
+ harness.check(testedDeclaredMethods.containsKey(methodString));
+ harness.check(testedDeclaredMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getFields.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getFields.java
new file mode 100644
index 00000000..5dd378ec
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getFields.java
@@ -0,0 +1,95 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getFields()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getFields()
+ */
+public class getFields implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of fields which should exists
+ Map<String, String> testedFields = null;
+
+ // map of fields for (Open)JDK6
+ Map<String, String> testedFields_jdk6 = new HashMap<String, String>();
+
+ // map of fields for (Open)JDK7
+ Map<String, String> testedFields_jdk7 = new HashMap<String, String>();
+
+ // map for fields declared in (Open)JDK6
+ // --- empty ---
+
+ // map for fields declared in (Open)JDK7
+ // --- empty ---
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing field signatures
+ testedFields = getJavaVersion() < 7 ? testedFields_jdk6 : testedFields_jdk7;
+
+ // get all fields for this class
+ java.lang.reflect.Field[] fields = c.getFields();
+
+ // expected number of fields
+ final int expectedNumberOfFields = testedFields.size();
+
+ // basic check for a number of fields
+ harness.check(fields.length, expectedNumberOfFields);
+
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getInterfaces.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getInterfaces.java
new file mode 100644
index 00000000..d559805f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getInterfaces.java
@@ -0,0 +1,57 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getInterfaces()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.List;
+import java.util.Arrays;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getInterfaces()
+ */
+public class getInterfaces implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ List interfaces = Arrays.asList(c.getInterfaces());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getMethods.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getMethods.java
new file mode 100644
index 00000000..9eae4a26
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getMethods.java
@@ -0,0 +1,144 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getMethods()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.util.Map;
+import java.util.HashMap;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getMethods()
+ */
+public class getMethods implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // map of methods which should exists
+ Map<String, String> testedMethods = null;
+
+ // map of methods for (Open)JDK6
+ Map<String, String> testedMethods_jdk6 = new HashMap<String, String>();
+
+ // map of methods for (Open)JDK7
+ Map<String, String> testedMethods_jdk7 = new HashMap<String, String>();
+
+ // map for methods declared in (Open)JDK6
+ testedMethods_jdk6.put("public java.lang.String java.util.IllegalFormatWidthException.getMessage()", "getMessage");
+ testedMethods_jdk6.put("public int java.util.IllegalFormatWidthException.getWidth()", "getWidth");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk6.put("public java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk6.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk6.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk6.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk6.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk6.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk6.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk6.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk6.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk6.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // map for methods declared in (Open)JDK7
+ testedMethods_jdk7.put("public java.lang.String java.util.IllegalFormatWidthException.getMessage()", "getMessage");
+ testedMethods_jdk7.put("public int java.util.IllegalFormatWidthException.getWidth()", "getWidth");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace()", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintWriter)", "printStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.printStackTrace(java.io.PrintStream)", "printStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace()", "fillInStackTrace");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.getCause()", "getCause");
+ testedMethods_jdk7.put("public synchronized java.lang.Throwable java.lang.Throwable.initCause(java.lang.Throwable)", "initCause");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.toString()", "toString");
+ testedMethods_jdk7.put("public java.lang.String java.lang.Throwable.getLocalizedMessage()", "getLocalizedMessage");
+ testedMethods_jdk7.put("public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()", "getStackTrace");
+ testedMethods_jdk7.put("public void java.lang.Throwable.setStackTrace(java.lang.StackTraceElement[])", "setStackTrace");
+ testedMethods_jdk7.put("public final synchronized void java.lang.Throwable.addSuppressed(java.lang.Throwable)", "addSuppressed");
+ testedMethods_jdk7.put("public final synchronized java.lang.Throwable[] java.lang.Throwable.getSuppressed()", "getSuppressed");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait(long) throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public final void java.lang.Object.wait() throws java.lang.InterruptedException", "wait");
+ testedMethods_jdk7.put("public boolean java.lang.Object.equals(java.lang.Object)", "equals");
+ testedMethods_jdk7.put("public int java.lang.Object.hashCode()", "hashCode");
+ testedMethods_jdk7.put("public final java.lang.Class java.lang.Object.getClass()", "getClass");
+ testedMethods_jdk7.put("public final void java.lang.Object.notify()", "notify");
+ testedMethods_jdk7.put("public final void java.lang.Object.notifyAll()", "notifyAll");
+
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ // get the right map containing method signatures
+ testedMethods = getJavaVersion() < 7 ? testedMethods_jdk6 : testedMethods_jdk7;
+
+ // get all methods for this class
+ java.lang.reflect.Method[] methods = c.getMethods();
+
+ // expected number of methods
+ final int expectedNumberOfMethods = testedMethods.size();
+
+ // basic check for a number of methods
+ harness.check(methods.length, expectedNumberOfMethods);
+
+ // check if all methods exist
+ for (java.lang.reflect.Method method : methods) {
+ // method name should consists of package name + class name
+ String methodName = method.getName();
+ // modifiers + package + method name + parameter types
+ String methodString = method.toString().replaceAll(" native ", " ");
+ harness.check(testedMethods.containsKey(methodString));
+ harness.check(testedMethods.get(methodString), methodName);
+ }
+ }
+
+ /**
+ * Returns version of Java. The input could have the following form: "1.7.0_06"
+ * and we are interested only in "7" in this case.
+ *
+ * @return Java version
+ */
+ protected int getJavaVersion() {
+ String javaVersionStr = System.getProperty("java.version");
+ String[] parts = javaVersionStr.split("\\.");
+ return Integer.parseInt(parts[1]);
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getModifiers.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getModifiers.java
new file mode 100644
index 00000000..0992360e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getModifiers.java
@@ -0,0 +1,68 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getModifiers()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+import java.lang.reflect.Modifier;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getModifiers()
+ */
+public class getModifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ int modifiers = c.getModifiers();
+ harness.check( Modifier.isPublic(modifiers));
+ harness.check(!Modifier.isPrivate(modifiers));
+ harness.check(!Modifier.isProtected(modifiers));
+ harness.check(!Modifier.isAbstract(modifiers));
+ harness.check(!Modifier.isFinal(modifiers));
+ harness.check(!Modifier.isInterface(modifiers));
+ harness.check(!Modifier.isNative(modifiers));
+ harness.check(!Modifier.isStatic(modifiers));
+ harness.check(!Modifier.isStrict(modifiers));
+ harness.check(!Modifier.isSynchronized(modifiers));
+ harness.check(!Modifier.isTransient(modifiers));
+ harness.check(!Modifier.isVolatile(modifiers));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getName.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getName.java
new file mode 100644
index 00000000..2fe98d2b
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getName()
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getName(), "java.util.IllegalFormatWidthException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getPackage.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getPackage.java
new file mode 100644
index 00000000..94d98634
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getPackage.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getPackage()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getPackage()
+ */
+public class getPackage implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Package p = c.getPackage();
+ harness.check(p.getName(), "java.util");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSimpleName.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSimpleName.java
new file mode 100644
index 00000000..237e4548
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSimpleName.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getSimpleName()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getSimpleName()
+ */
+public class getSimpleName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.getSimpleName(), "IllegalFormatWidthException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSuperclass.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSuperclass.java
new file mode 100644
index 00000000..de7c55b4
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/getSuperclass.java
@@ -0,0 +1,56 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().getSuperclass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().getSuperclass()
+ */
+public class getSuperclass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ Class superClass = c.getSuperclass();
+ harness.check(superClass.getName(), "java.util.IllegalFormatException");
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotation.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotation.java
new file mode 100644
index 00000000..686177eb
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotation.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isAnnotation()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isAnnotation()
+ */
+public class isAnnotation implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotation());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotationPresent.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotationPresent.java
new file mode 100644
index 00000000..b55b61c5
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnnotationPresent.java
@@ -0,0 +1,62 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isAnnotationPresent()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isAnnotationPresent()
+ */
+public class isAnnotationPresent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Annotation.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Documented.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Inherited.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Retention.class));
+ harness.check(!c.isAnnotationPresent(java.lang.annotation.Target.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Deprecated.class));
+ harness.check(!c.isAnnotationPresent(java.lang.Override.class));
+ harness.check(!c.isAnnotationPresent(java.lang.SuppressWarnings.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnonymousClass.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnonymousClass.java
new file mode 100644
index 00000000..a4a76c9e
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAnonymousClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isAnonymousClass()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isAnonymousClass()
+ */
+public class isAnonymousClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isAnonymousClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isArray.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isArray.java
new file mode 100644
index 00000000..4b829f93
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isArray.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isArray()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isArray()
+ */
+public class isArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isArray());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAssignableFrom.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAssignableFrom.java
new file mode 100644
index 00000000..ef9dcc13
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isAssignableFrom.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isAssignableFrom(Class)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isAssignableFrom()
+ */
+public class isAssignableFrom implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isAssignableFrom(IllegalFormatWidthException.class));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isEnum.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isEnum.java
new file mode 100644
index 00000000..230c1b6f
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isEnum.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isEnum()
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isEnum()
+ */
+public class isEnum implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isEnum());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInstance.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInstance.java
new file mode 100644
index 00000000..0c0fda53
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInstance.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isInstance(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isInstance()
+ */
+public class isInstance implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(c.isInstance(new IllegalFormatWidthException(42)));
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInterface.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInterface.java
new file mode 100644
index 00000000..b4bd2061
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isInterface.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isInterface(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isInterface()
+ */
+public class isInterface implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isInterface());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isLocalClass.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isLocalClass.java
new file mode 100644
index 00000000..7e29238c
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isLocalClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isLocalClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isLocalClass()
+ */
+public class isLocalClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isLocalClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isMemberClass.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isMemberClass.java
new file mode 100644
index 00000000..b1123596
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isMemberClass.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isMemberClass(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isMemberClass()
+ */
+public class isMemberClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isMemberClass());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isPrimitive.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isPrimitive.java
new file mode 100644
index 00000000..98119691
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isPrimitive.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isPrimitive(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isPrimitive()
+ */
+public class isPrimitive implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isPrimitive());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isSynthetic.java b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isSynthetic.java
new file mode 100644
index 00000000..12dcef11
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/classInfo/isSynthetic.java
@@ -0,0 +1,55 @@
+// Test for method java.util.IllegalFormatWidthException.getClass().isSynthetic(Object)
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException.classInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test for method java.util.IllegalFormatWidthException.getClass().isSynthetic()
+ */
+public class isSynthetic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // create instance of a class IllegalFormatWidthException
+ final Object o = new IllegalFormatWidthException(42);
+
+ // get a runtime class of an object "o"
+ final Class c = o.getClass();
+
+ harness.check(!c.isSynthetic());
+ }
+}
+
diff --git a/gnu/testlet/java/util/IllegalFormatWidthException/constructor.java b/gnu/testlet/java/util/IllegalFormatWidthException/constructor.java
new file mode 100644
index 00000000..74d593cf
--- /dev/null
+++ b/gnu/testlet/java/util/IllegalFormatWidthException/constructor.java
@@ -0,0 +1,53 @@
+// Test if instances of a class java.util.IllegalFormatWidthException could be properly constructed
+
+// Copyright (C) 2012 Pavel Tisnovsky <ptisnovs@redhat.com>
+
+// 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, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA 02110-1301 USA.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.IllegalFormatWidthException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.IllegalFormatWidthException;
+
+
+
+/**
+ * Test if instances of a class java.util.IllegalFormatWidthException
+ * could be properly constructed
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ IllegalFormatWidthException object1 = new IllegalFormatWidthException(42);
+ harness.check(object1 != null);
+ harness.check(object1.toString().contains("java.util.IllegalFormatWidthException"));
+ harness.check(object1.toString().contains("42"));
+ }
+}
+
diff --git a/gnu/testlet/java/util/Iterator/CVS/Entries b/gnu/testlet/java/util/Iterator/CVS/Entries
new file mode 100644
index 00000000..9ac0a06d
--- /dev/null
+++ b/gnu/testlet/java/util/Iterator/CVS/Entries
@@ -0,0 +1,2 @@
+/ConcurrentModification.java/1.1/Wed Apr 5 17:39:40 2006//
+D
diff --git a/gnu/testlet/java/util/Iterator/CVS/Repository b/gnu/testlet/java/util/Iterator/CVS/Repository
new file mode 100644
index 00000000..ed38fc6a
--- /dev/null
+++ b/gnu/testlet/java/util/Iterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Iterator
diff --git a/gnu/testlet/java/util/Iterator/CVS/Root b/gnu/testlet/java/util/Iterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Iterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Iterator/ConcurrentModification.java b/gnu/testlet/java/util/Iterator/ConcurrentModification.java
new file mode 100644
index 00000000..b7229f34
--- /dev/null
+++ b/gnu/testlet/java/util/Iterator/ConcurrentModification.java
@@ -0,0 +1,169 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Red Hat, Inc.
+
+// 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.java.util.Iterator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.*;
+
+/**
+ * For a variety of collections classes, this test modifies the backing
+ * store underlying an active iterator, and check that Iterator.next()
+ * correctly throws ConcurrentModificationException, while hasNext(),
+ * hasPrevious(), previousIndex(), and nextIndex() do not.
+ */
+public class ConcurrentModification implements Testlet
+{
+ TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ testMapIterator(new HashMap());
+ testMapIterator(new TreeMap());
+ testMapIterator(new Hashtable());
+ testMapIterator(new LinkedHashMap());
+ testMapIterator(new IdentityHashMap());
+ testMapIterator(new WeakHashMap());
+ testMapIterator(Collections.synchronizedMap(new HashMap()));
+ testListIterator(new ArrayList());
+ testListIterator(new Vector());
+ testListIterator(new LinkedList());
+ testListIterator(Collections.synchronizedList(new ArrayList()));
+ testCollectionIterator(new HashSet());
+ testCollectionIterator(new LinkedHashSet());
+ testCollectionIterator(new TreeSet());
+ }
+
+ void testMapIterator(Map map)
+ {
+ map.put("1", "value");
+ map.put("2", "value");
+ testIterator(map.keySet());
+ map.clear();
+ map.put("1", "value");
+ map.put("2", "value");
+ testIterator(map.values());
+ }
+
+ void testListIterator(List l)
+ {
+ l.add("1");
+ l.add("2");
+ testIterator(l);
+ l.clear();
+ l.add("1");
+ l.add("2");
+ l.add("3");
+ testIterator(l.subList(0, 3));
+ l.clear();
+ l.add("1");
+ l.add("2");
+ l.add("3");
+ testListHasPrevious(l);
+ }
+
+ void testCollectionIterator(Collection c)
+ {
+ c.add("1");
+ c.add("2");
+ testIterator(c);
+ }
+
+ void testIterator(Collection c)
+ {
+ Iterator iter = c.iterator();
+
+ String element = (String) iter.next();
+ c.remove(element); // Invalid concurrent modification.
+
+ boolean hasNext = false;
+ try
+ {
+ hasNext = iter.hasNext();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.fail(c.getClass() + ".iterator().hasNext() throws " + x);
+ return;
+ }
+
+ try
+ {
+ element = (String) iter.next();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.check(true); // OK!
+ }
+ }
+
+ void testListHasPrevious(List l)
+ {
+ ListIterator iter = l.listIterator();
+
+ String element = (String) iter.next();
+ l.remove(element); // Invalid concurrent modification.
+
+ int idx = -1;
+ boolean hasPrevious = false;
+ try
+ {
+ hasPrevious = iter.hasPrevious();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.fail(l.getClass() + ".listIterator().hasPrevious() throws " + x);
+ return;
+ }
+
+ try
+ {
+ idx = iter.nextIndex();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.fail(l.getClass() + ".listIterator().nextIndex() throws " + x);
+ return;
+ }
+
+ try
+ {
+ idx = iter.previousIndex();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.fail(l.getClass() + ".listIterator().previousIndex() throws " + x);
+ return;
+ }
+
+ try
+ {
+ element = (String) iter.next();
+ }
+ catch (ConcurrentModificationException x)
+ {
+ harness.check(true); // OK!
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/LinkedHashMap/CVS/Entries b/gnu/testlet/java/util/LinkedHashMap/CVS/Entries
new file mode 100644
index 00000000..f7a66fb7
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedHashMap/CVS/Entries
@@ -0,0 +1,3 @@
+/LinkedHashMapTest.java/1.3/Mon May 1 22:18:31 2006//
+/Regress.java/1.1/Mon May 30 01:14:38 2005//
+D
diff --git a/gnu/testlet/java/util/LinkedHashMap/CVS/Repository b/gnu/testlet/java/util/LinkedHashMap/CVS/Repository
new file mode 100644
index 00000000..56bc977e
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedHashMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/LinkedHashMap
diff --git a/gnu/testlet/java/util/LinkedHashMap/CVS/Root b/gnu/testlet/java/util/LinkedHashMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedHashMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java b/gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java
new file mode 100644
index 00000000..de30d70e
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedHashMap/LinkedHashMapTest.java
@@ -0,0 +1,588 @@
+/* Copyright (C) 2002 Eric Blake
+
+ 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: JDK1.4
+
+package gnu.testlet.java.util.LinkedHashMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+import java.io.*;
+
+/**
+* Written by Eric Blake. This file contains tests for LinkedHashMap.
+* <br>
+*/
+public class LinkedHashMapTest implements Testlet
+{
+ TestHarness th;
+ public void test(TestHarness harness)
+ {
+ th = harness;
+ th.checkPoint("hierarchy");
+ Object lhm = new LinkedHashMap();
+ th.check(lhm instanceof AbstractMap);
+ th.check(lhm instanceof HashMap);
+ th.check(lhm instanceof Cloneable);
+ th.check(lhm instanceof Map);
+ th.check(lhm instanceof Serializable);
+ test_LinkedHashMap();
+ test_get();
+ test_containsKey();
+ test_containsValue();
+ test_isEmpty();
+ test_size();
+ test_clear();
+ test_put();
+ test_putAll();
+ test_remove();
+ test_entrySet();
+ test_keySet();
+ test_values();
+ test_clone();
+ test_behaviour();
+ test_removeEldestEntry();
+ test_accessOrder();
+ }
+
+ LinkedHashMap buildLHM() {
+ LinkedHashMap lhm = new LinkedHashMap();
+ String s;
+ for (int i = 0; i < 15; i++) {
+ s = "a" + i;
+ lhm.put(s, s + " value");
+ }
+ lhm.put(null, null);
+ return lhm;
+ }
+
+ void test_LinkedHashMap() {
+ th.checkPoint("LinkedHashMap(java.util.Map)");
+ LinkedHashMap lhm1 = buildLHM();
+ LinkedHashMap lhm = new LinkedHashMap(lhm1);
+ th.check(lhm.size() == 16 , "all elements are put, got " + lhm.size());
+ th.check(lhm.get(null) == null , "test key and value pairs -- 1");
+ th.check("a1 value".equals(lhm.get("a1")),
+ "test key and value pairs -- 2");
+ th.check("a10 value".equals(lhm.get("a10")),
+ "test key and value pairs -- 3");
+ th.check("a0 value".equals(lhm.get("a0")),
+ "test key and value pairs -- 4");
+ lhm = new LinkedHashMap(new Hashtable());
+ th.check(lhm.size() == 0 , "no elements are put, got " + lhm.size());
+ try {
+ new LinkedHashMap(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException ne) {th.check(true);}
+
+ th.checkPoint("LinkedHashMap(int)");
+ new LinkedHashMap(1);
+ new LinkedHashMap(0);
+ try { new HashMap(-1);
+ th.fail("should throw an IllegalArgumentException");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+
+ th.checkPoint("HashMap(int,int)");
+ new LinkedHashMap(10, 0.5f);
+ new LinkedHashMap(10, 1.5f);
+ try {new LinkedHashMap(-1, 0.1f);
+ th.fail("should throw an IllegalArgumentException -- 1");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ try { new LinkedHashMap(1,-0.1f);
+ th.fail("should throw an IllegalArgumentException -- 2");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ try { new LinkedHashMap(1,0.0f);
+ th.fail("should throw an IllegalArgumentException -- 3");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ try { new LinkedHashMap(1,Float.NaN);
+ th.fail("should throw an IllegalArgumentException -- 4");
+ }
+ catch(IllegalArgumentException iae) { th.check(true); }
+ }
+
+ void test_get(){
+ th.checkPoint("get(java.lang.Object)java.lang.Object");
+ LinkedHashMap hm = buildLHM();
+ th.check(hm.get(null) == null , "checking get -- 1");
+ th.check(hm.get(this) == null , "checking get -- 2");
+ hm.put("a" ,this);
+ th.check("a1 value".equals(hm.get("a1")), "checking get -- 3");
+ th.check("a11 value".equals(hm.get("a11")), "checking get -- 4");
+ th.check( hm.get(new Integer(97)) == null , "checking get -- 5");
+ }
+
+ void test_containsKey(){
+ th.checkPoint("containsKey(java.lang.Object)boolean");
+ LinkedHashMap hm = new LinkedHashMap();
+ hm.clear();
+ th.check(! hm.containsKey(null) ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.containsKey(null) ,"Map does not containsthe key -- 1");
+ th.check( hm.containsKey("a") ,"Map does contain the key -- 2");
+ hm = buildLHM();
+ th.check( hm.containsKey(null) ,"Map does contain the key -- 3");
+ th.check(! hm.containsKey(this) ,"Map does not contain the key -- 4");
+ }
+
+ void test_containsValue(){
+ th.checkPoint("containsValue(java.lang.Object)boolean");
+ LinkedHashMap hm = new LinkedHashMap();
+ hm.clear();
+ th.check(! hm.containsValue(null) ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.containsValue(null) ,"Map does not containsthe value -- 1");
+ th.check(! hm.containsValue("a") ,"Map does not contain the value -- 2");
+ th.check( hm.containsValue(this) ,"Map does contain the value -- 3");
+ hm = buildLHM();
+ th.check( hm.containsValue(null) ,"Map does contain the value -- 4");
+ th.check(! hm.containsValue(this) ,"Map does not contain the value -- 5");
+ th.check(! hm.containsValue("a1value") ,"Map does not contain the value -- 6");
+ }
+
+ void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ LinkedHashMap hm = new LinkedHashMap(2000);
+ th.check( hm.isEmpty() ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(! hm.isEmpty() ,"Map is not empty");
+ }
+
+ void test_size(){
+ th.checkPoint("size()int");
+ LinkedHashMap hm = new LinkedHashMap();
+ th.check(hm.size() == 0 ,"Map is empty");
+ hm.put("a" ,this);
+ th.check(hm.size() == 1 ,"Map has 1 element");
+ hm = buildLHM();
+ th.check(hm.size() == 16 ,"Map has 16 elements");
+ }
+
+ void test_clear(){
+ th.checkPoint("clear()void");
+ LinkedHashMap hm = buildLHM();
+ hm.clear();
+ th.check(hm.size() == 0 ,"Map is cleared -- 1");
+ th.check(hm.isEmpty() ,"Map is cleared -- 2");
+
+ }
+
+ void test_put(){
+ th.checkPoint("put(java.lang.Object,java.lang.Object)java.lang.Object");
+ LinkedHashMap hm = new LinkedHashMap();
+ th.check( hm.put(null , this ) == null , "check on return value -- 1");
+ th.check( hm.get(null) == this , "check on value -- 1");
+ th.check( hm.put(null , "a" ) == this , "check on return value -- 2");
+ th.check( "a".equals(hm.get(null)) , "check on value -- 2");
+ th.check( "a".equals(hm.put(null , "a" )), "check on return value -- 3");
+ th.check( "a".equals(hm.get(null)) , "check on value -- 3");
+ th.check( hm.size() == 1 , "only one key added");
+ th.check( hm.put("a" , null ) == null , "check on return value -- 4");
+ th.check( hm.get("a") == null , "check on value -- 4");
+ th.check( hm.put("a" , this ) == null , "check on return value -- 5");
+ th.check( hm.get("a") == this , "check on value -- 5");
+ th.check( hm.size() == 2 , "two keys added");
+ }
+
+ void test_putAll(){
+ th.checkPoint("putAll(java.util.Map)void");
+ LinkedHashMap hm = new LinkedHashMap();
+ hm.putAll(new Hashtable());
+ th.check(hm.isEmpty() , "nothing addad");
+ hm.putAll(buildLHM());
+ th.check(hm.size() == 16 , "checking if all enough elements are added -- 1");
+ th.check(hm.equals(buildLHM()) , "check on all elements -- 1");
+ hm.put(null ,this);
+ hm.putAll(buildLHM());
+ th.check(hm.size() == 16 , "checking if all enough elements are added -- 2");
+ th.check(hm.equals(buildLHM()) , "check on all elements -- 2");
+ try {
+ hm.putAll(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException npe) { th.check(true); }
+ }
+
+ void test_remove(){
+ th.checkPoint("remove(java.lang.Object)java.lang.Object");
+ LinkedHashMap hm = buildLHM();
+ th.check(hm.remove(null) == null , "checking return value -- 1");
+ th.check(hm.remove(null) == null , "checking return value -- 2");
+ th.check(!hm.containsKey(null) , "checking removed key -- 1");
+ th.check(!hm.containsValue(null) , "checking removed value -- 1");
+ for (int i = 0 ; i < 15 ; i++) {
+ th.check( ("a"+i+" value").equals(hm.remove("a"+i)), " removing a"+i);
+ }
+ th.check(hm.isEmpty() , "checking if al is gone");
+ }
+
+ void test_entrySet(){
+ th.checkPoint("entrySet()java.util.Set");
+ LinkedHashMap hm = buildLHM();
+ Set s = hm.entrySet();
+ Iterator it= s.iterator();
+ Map.Entry me= (Map.Entry) it.next();
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+ th.check("a0".equals(me.getKey()));
+ th.check("a0 value".equals(me.getValue()));
+ th.check( s.size() == 16 );
+ hm.remove("a12");
+ th.check( s.size() == 15 );
+ th.check( hm.size() == 15 );
+ try {
+ th.check(it.hasNext());
+ th.check(true);
+ }
+ catch(ConcurrentModificationException cme) {
+ th.fail("it.hasNext should not throw ConcurrentModificationException");
+ }
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 1");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ try {
+ it.remove();
+ th.fail("should throw a ConcurrentModificationException -- 2");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ it= s.iterator();
+ try {
+ me = (Map.Entry)it.next();
+ th.check("a0".equals(me.getKey()));
+ th.check( me.hashCode() , "a0".hashCode() ^ "a0 value".hashCode(),
+ "verifying hashCode");
+ th.check(! me.equals(it.next()));
+ th.check(me.equals(Collections.singletonMap("a0", "a0 value").entrySet().iterator().next()));
+ }
+ catch(Exception e) { th.fail("got unwanted exception ,got "+e);
+ th.debug("got ME key = "+me+" and value = "+me.getKey());}
+
+ try {
+ me.setValue("alpha");
+ th.check(hm.get(me.getKey()), "alpha", "setValue through iterator of entrySet");
+ }
+ catch(UnsupportedOperationException uoe) { th.fail("setValue should be supported");}
+ it= s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while (it.hasNext()) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ it= s.iterator();
+ hm.put(null,"sdf");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ it= s.iterator();
+ hm.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 4");
+ }
+ catch(ConcurrentModificationException cme){ th.check(true); }
+ }
+
+ void test_keySet(){
+ th.checkPoint("keySet()java.util.Set");
+ LinkedHashMap hm = buildLHM();
+ th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
+ Set s=null;
+ Object [] o;
+ Iterator it;
+ try {
+ s = hm.keySet();
+ th.check( s != null ,"s != null");
+ th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
+ o = s.toArray();
+ th.check( o != null ,"o != null");
+ th.check( o.length == 16 ,"checking length, got "+o.length);
+ th.check("a14".equals(o[14]));
+ it = s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while ( it.hasNext() ) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ }
+ catch (Exception e) { th.fail("got bad Exception -- got "+e); }
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+
+ }
+
+ void test_values(){
+ th.checkPoint("values()java.util.Collection");
+ LinkedHashMap hm = buildLHM();
+ th.check( hm.size() == 16 , "checking map size(), got "+hm.size());
+ Collection s=null;
+ Object [] o;
+ Iterator it;
+ try {
+ s = hm.values();
+ th.check( s != null ,"s != null");
+ th.check(s.size() == 16 ,"checking size keyset, got "+s.size());
+ o = s.toArray();
+ th.check( o != null ,"o != null");
+ th.check( o.length == 16 ,"checking length, got "+o.length);
+ th.check("a13 value".equals(o[13]));
+ it = s.iterator();
+ Vector v = new Vector();
+ Object ob;
+ v.addAll(s);
+ while ( it.hasNext() ) {
+ ob = it.next();
+ it.remove();
+ if (!v.remove(ob))
+ th.debug("Object "+ob+" not in the Vector");
+ }
+ th.check( v.isEmpty() , "all elements gone from the vector");
+ th.check( hm.isEmpty() , "all elements removed from the HashMap");
+ }
+ catch (Exception e) { th.fail("got bad Exception -- got "+e); }
+ try {
+ s.add("ADDING");
+ th.fail("add should throw an UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException uoe) { th.check(true); }
+
+
+ }
+
+ void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ class SingleMap extends LinkedHashMap {
+ int insertions;
+ protected boolean removeEldestEntry(Map.Entry e) {
+ return insertions > 1;
+ }
+ public Object put(Object k, Object v) {
+ ++insertions;
+ return super.put(k, v);
+ }
+ }
+ LinkedHashMap hm = new SingleMap();
+ hm.put("a", th);
+ SingleMap o = (SingleMap) hm.clone();
+ th.check( o != hm , "clone is not the same object");
+ th.check(o.get("a") == th, "keys and values are shared with the clone");
+ th.check( hm.equals(o) , "clone is equal to Map");
+ th.check(o.insertions == 1, "cloning did not call put()");
+ hm.put("a","b");
+ th.check(! hm.equals(o) , "clone doesn't change if Map changes");
+ }
+
+/**
+* the goal of this test is to see how the hashtable behaves if we do a lot put's and removes. <br>
+* we perform this test for different loadFactors and a low initialsize <br>
+* we try to make it difficult for the table by using objects with same hashcode
+*/
+ private final String st ="a";
+ private final Byte b =new Byte((byte)97);
+ private final Short sh=new Short((short)97);
+ private final Integer i = new Integer(97);
+ private final Long l = new Long(97L);
+ private int sqnce = 1;
+
+ public void test_behaviour(){
+ th.checkPoint("behaviour testing");
+ do_behaviourtest(0.2f);
+ do_behaviourtest(0.70f);
+ do_behaviourtest(0.75f);
+ do_behaviourtest(0.95f);
+ do_behaviourtest(1.0f);
+
+ }
+ protected void check_presence(HashMap h){
+ th.check( h.get(st) != null, "checking presence st -- sequence "+sqnce);
+ th.check( h.get(sh) != null, "checking presence sh -- sequence "+sqnce);
+ th.check( h.get(i) != null, "checking presence i -- sequence "+sqnce);
+ th.check( h.get(b) != null, "checking presence b -- sequence "+sqnce);
+ th.check( h.get(l) != null, "checking presence l -- sequence "+sqnce);
+ sqnce++;
+ }
+
+ protected void do_behaviourtest(float loadFactor) {
+
+ th.checkPoint("behaviour testing with loadFactor "+loadFactor);
+ LinkedHashMap h = new LinkedHashMap(11 , loadFactor);
+ int j=0;
+ Float f;
+ h.put(st,"a"); h.put(b,"byte"); h.put(sh,"short"); h.put(i,"int"); h.put(l,"long");
+ check_presence(h);
+ sqnce = 1;
+ for ( ; j < 100 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 105,"size checking -- 1 got: "+h.size());
+ check_presence(h);
+ for ( ; j < 200 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 205,"size checking -- 2 got: "+h.size());
+ check_presence(h);
+
+ for ( ; j < 300 ; j++ )
+ { f = new Float((float)j);
+ h.put(f,f);
+ }
+ th.check(h.size() == 305,"size checking -- 3 got: "+h.size());
+ check_presence(h);
+ th.check("a".equals(h.put(st,"na")), "replacing values -- 1 - st");
+ th.check("byte".equals(h.put(b,"nbyte")), "replacing values -- 2 - b");
+ th.check("short".equals(h.put(sh,"nshort")), "replacing values -- 3 -sh");
+ th.check("int".equals(h.put(i,"nint")) , "replacing values -- 4 -i");
+ th.check("long".equals(h.put(l,"nlong")), "replacing values -- 5 -l");
+
+ for ( ; j > 199 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 205,"size checking -- 4 got: "+h.size());
+ check_presence(h);
+ for ( ; j > 99 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 105,"size checking -- 5 got: "+h.size());
+ check_presence(h);
+ for ( ; j > -1 ; j-- )
+ { f = new Float((float)j);
+ h.remove(f);
+ }
+ th.check(h.size() == 5 ,"size checking -- 6 got: "+h.size());
+
+ th.debug(h.toString());
+ check_presence(h);
+ }
+
+ void test_removeEldestEntry()
+ {
+ class LimitSize extends LinkedHashMap {
+ int size;
+ Map.Entry removed;
+ LimitSize(int s) { size = s; }
+ protected boolean removeEldestEntry(Map.Entry e) {
+ removed = e;
+ return size() > size;
+ }
+ }
+ LimitSize hm = new LimitSize(0);
+ hm.put("a", "1");
+ th.check(hm.size() == 0, "size limited to 0");
+ th.check(hm.removed.getKey() == "a");
+ th.check(hm.removed.getValue() == "1");
+ hm = new LimitSize(1);
+ hm.put("a", "1");
+ hm.put("b", "2");
+ th.check(hm.size() == 1, "size limited to 1");
+ th.check("2".equals(hm.get("b")));
+ class ChangeMap extends LinkedHashMap {
+ ChangeMap() { super(10, 1, true); }
+ ChangeMap c;
+ protected boolean removeEldestEntry(Map.Entry e) {
+ if (c != null) {
+ th.check(c.size() == 1);
+ th.check(c.containsKey(null));
+ th.check(c.containsValue(null));
+ ChangeMap cm = c;
+ c = null;
+ cm.clear();
+ cm.put("a", "1");
+ th.check(cm.get("a").equals("1"));
+ }
+ else th.check(e.getKey() != null);
+ return false;
+ }
+ }
+ ChangeMap cm = new ChangeMap();
+ cm.c = cm;
+ cm.put(null, null);
+ th.check(cm.get("a").equals("1"), "map modified during removeEldestEntry");
+ }
+
+ void test_accessOrder()
+ {
+ LinkedHashMap hm = new LinkedHashMap(10, 1, false);
+ hm.put("a", "1");
+ hm.put("b", "2");
+ hm.put("c", "3");
+ hm.put("d", "4");
+ hm.put("e", "5");
+ hm.put("b", "b2");
+ hm.get("d");
+ Iterator i = hm.keySet().iterator();
+ th.check(i.next().equals("a"), "insertion order");
+ th.check(i.next().equals("b"));
+ th.check(i.next().equals("c"));
+ th.check(i.next().equals("d"));
+ th.check(i.next().equals("e"));
+ hm = new LinkedHashMap(10, 1, true);
+ hm.put("a", "1");
+ hm.put("b", "2");
+ hm.put("c", "3");
+ hm.put("d", "4");
+ hm.put("e", "5");
+ hm.put("b", "b2");
+ hm.get("d");
+ i = hm.keySet().iterator();
+ th.check(i.next().equals("a"), "access order");
+ th.check(i.next().equals("c"));
+ th.check(i.next().equals("e"));
+ th.check(i.next().equals("b"));
+ th.check(i.next().equals("d"));
+ i = hm.entrySet().iterator();
+ Map.Entry e = (Map.Entry) i.next();
+ th.check(e.setValue("a1").equals("1"),
+ "changing the map entry does not count as an access");
+ i = hm.entrySet().iterator();
+ e = (Map.Entry) i.next();
+ th.check(e.getValue().equals("a1"));
+ }
+}
diff --git a/gnu/testlet/java/util/LinkedHashMap/Regress.java b/gnu/testlet/java/util/LinkedHashMap/Regress.java
new file mode 100644
index 00000000..aec3c968
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedHashMap/Regress.java
@@ -0,0 +1,54 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+
+ 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: JDK1.4
+
+package gnu.testlet.java.util.LinkedHashMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+public class Regress implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ // Classpath regression test.
+ th.checkPoint("regression test of access order");
+ LinkedHashMap hm = new LinkedHashMap(5, (float) 0.5, true);
+ hm.put(new Integer(1), new Object());
+ hm.put(new Integer(2), new Object());
+ hm.put(new Integer(3), new Object());
+ hm.get(new Integer(2));
+ hm.get(new Integer(3));
+ Iterator i = hm.keySet().iterator();
+ int count = 1;
+ boolean ok = true;
+ while (i.hasNext())
+ {
+ Integer key = (Integer) i.next();
+ if (key.intValue() != count)
+ ok = false;
+ ++count;
+ }
+ th.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java b/gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java
new file mode 100644
index 00000000..8d470bda
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/AcuniaLinkedListTest.java
@@ -0,0 +1,775 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.LinkedList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for LinkedList <br>
+* <br>
+*/
+public class AcuniaLinkedListTest implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_LinkedList();
+ test_add();
+ test_addAll();
+ test_clear();
+ test_remove();
+ test_set();
+ test_contains();
+ test_indexOf();
+ test_size();
+ test_lastIndexOf();
+ test_toArray();
+ test_clone();
+ test_iterator();
+ test_getFirst();
+ test_getLast();
+ test_addFirst();
+ test_addLast();
+ test_removeFirst();
+ test_removeLast();
+ test_ListIterator();
+
+
+ }
+
+ protected LinkedList buildAL() {
+ Vector v = new Vector();
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ return new LinkedList(v);
+
+ }
+
+
+/**
+* implemented. <br>
+* only LinkedList(Collection c) is tested
+*/
+ public void test_LinkedList(){
+ th.checkPoint("LinkedList(java.util.Collection)");
+ Vector v = new Vector();
+ LinkedList al = new LinkedList(v);
+ th.check( al.isEmpty() , "no elements added");
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ al = new LinkedList(v);
+// th.debug(al.toString());
+ th.check(v.equals(al) , "check if everything is OK");
+ try {
+ new LinkedList(null);
+ th.fail("should throw a NullPointerException");
+ }
+ catch(NullPointerException npe) { th.check(true); }
+ }
+
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_add(){
+ th.checkPoint("add(int,java.lang.Object)void");
+ LinkedList al = new LinkedList();
+ try {
+ al.add(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ try {
+ al.add(1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ al.clear();
+ al.add(0,"a");
+ al.add(1,"c");
+ al.add(2,"u");
+ al.add(1,null);
+// th.debug(al.toString());
+ th.check("a".equals(al.get(0))&& null==al.get(1) && "c".equals(al.get(2)) && "u".equals(al.get(3)) , "checking add ...");
+
+ th.checkPoint("add(java.lang.Object)boolean");
+ al = new LinkedList();
+ th.check(al.add("a") , "checking return value -- 1");
+ th.check(al.add("c") , "checking return value -- 2");
+ th.check(al.add("u") , "checking return value -- 3");
+ th.check(al.add("n") , "checking return value -- 4");
+ th.check(al.add("i") , "checking return value -- 5");
+ th.check(al.add("a") , "checking return value -- 6");
+ th.check(al.add(null) , "checking return value -- 7");
+ th.check(al.add("end") , "checking return value -- 8");
+ th.check("a".equals(al.get(0))&& null==al.get(6) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking add ... -- 1");
+ th.check("a".equals(al.get(5))&& "end".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking add ... -- 2");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ LinkedList al =new LinkedList();
+ try { al.addAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ Collection c = (Collection) al;
+ th.check(!al.addAll(c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ th.check(al.addAll(c) ,"checking returnvalue -- 2");
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(14)=="a" && al.get(15)=="b" && al.get(16)=="c", "checking added on right positions");
+
+ th.checkPoint("addAll(int,java.util.Collection)boolean");
+ al =new LinkedList();
+ c = (Collection) al;
+ th.check(!al.addAll(0,c) ,"checking returnvalue -- 1");
+ al.add("a"); al.add("b"); al.add("c");
+ c = (Collection) al;
+ al = buildAL();
+ try { al.addAll(-1,c);
+ th.fail("should throw exception -- 1");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { al.addAll(15,c);
+ th.fail("should throw exception -- 2");
+ }
+ catch (IndexOutOfBoundsException ae) { th.check(true); }
+ try { th.check(al.addAll(11,c),"checking returnvalue -- 2"); }
+ catch (ArrayIndexOutOfBoundsException ae) { th.fail("shouldn't throw exception -- 1"); }
+ th.check(al.containsAll(c), "extra on containsAll -- 1");
+ th.check(al.get(11)=="a" && al.get(12)=="b" && al.get(13)=="c", "checking added on right positions -- 1");
+ th.check(al.addAll(1,c),"checking returnvalue -- 3");
+ th.check(al.get(1)=="a" && al.get(2)=="b" && al.get(3)=="c", "checking added on right positions -- 2");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ LinkedList al = new LinkedList();
+ al.clear();
+ al = buildAL();
+ al.clear();
+ th.check(al.size()== 0 && al.isEmpty() , "list is empty ...");
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_remove(){
+ th.checkPoint("remove(int)java.lang.Object");
+ LinkedList al = buildAL();
+ try {
+ al.remove(-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.remove(14);
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 1");
+ th.check("a".equals(al.get(0))&& null==al.get(5) && "c".equals(al.get(1)) && "u".equals(al.get(2)) , "checking remove ... -- 1");
+ th.check("a".equals(al.get(6))&& "c".equals(al.get(7)) && "n".equals(al.get(3)) && "i".equals(al.get(4)) , "checking remove ... -- 2");
+ th.check(al.size() == 13 , "checking new size -- 1");
+ th.check( al.remove(5) == null , "checking returnvalue remove -- 2");
+ th.check(al.size() == 12 , "checking new size -- 2");
+ th.check( al.remove(11) == null, "checking returnvalue remove -- 3");
+ th.check( "a".equals(al.remove(0)) , "checking returnvalue remove -- 4");
+ th.check( "u".equals(al.remove(1)) , "checking returnvalue remove -- 5");
+ th.check( "i".equals(al.remove(2)) , "checking returnvalue remove -- 6");
+ th.check( "a".equals(al.remove(2)) , "checking returnvalue remove -- 7");
+ th.check( "u".equals(al.remove(3)) , "checking returnvalue remove -- 8");
+ th.check( "a".equals(al.remove(5)) , "checking returnvalue remove -- 9");
+ th.check( "i".equals(al.remove(4)) , "checking returnvalue remove -- 10");
+ th.check( "c".equals(al.get(0))&& "c".equals(al.get(2)) && "n".equals(al.get(3)) && "n".equals(al.get(1)) , "checking remove ... -- 3");
+ th.check(al.size() == 4 , "checking new size -- 3");
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ al.remove(0);
+ th.check(al.size() == 0 , "checking new size -- 4");
+
+ al = new LinkedList();
+ try {
+ al.remove(0);
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_set(){
+ th.checkPoint("set(int,java.lang.Object)java.lang.Object");
+ LinkedList al = new LinkedList();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(0,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ al = buildAL();
+ try {
+ al.set(-1,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 3" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ al.set(14,"a");
+ th.fail("should throw an IndexOutOfBoundsException -- 4" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ th.check( "a".equals(al.set(5,"b")) , "checking returnvalue of set -- 1");
+ th.check( "a".equals(al.set(0,null)), "checking returnvalue of set -- 2");
+ th.check( "b".equals(al.get(5)), "checking effect of set -- 1");
+ th.check( al.get(0) == null , "checking effect of set -- 2");
+ th.check( "b".equals(al.set(5,"a")), "checking returnvalue of set -- 3");
+ th.check( al.set(0,null) == null , "checking returnvalue of set -- 4");
+ th.check( "a".equals(al.get(5)), "checking effect of set -- 3");
+ th.check( al.get(0) == null , "checking effect of set -- 4");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ LinkedList al = new LinkedList();
+ th.check(!al.contains(null),"checking empty List -- 1");
+ th.check(!al.contains(al) ,"checking empty List -- 2");
+ al = buildAL();
+ th.check( al.contains(null), "check contains ... -- 1");
+ th.check( al.contains("a") , "check contains ... -- 2");
+ th.check( al.contains("c") , "check contains ... -- 3");
+ th.check(!al.contains(this), "check contains ... -- 4");
+ al.remove(6);
+ th.check( al.contains(null), "check contains ... -- 5");
+ al.remove(12);
+ th.check(!al.contains(null), "check contains ... -- 6");
+ th.check(!al.contains("b") , "check contains ... -- 7");
+ th.check(!al.contains(al) , "check contains ... -- 8");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ LinkedList al = new LinkedList();
+ th.check(al.isEmpty() , "checking returnvalue -- 1");
+ al.add("A");
+ th.check(!al.isEmpty() , "checking returnvalue -- 2");
+ al.remove(0);
+ th.check(al.isEmpty() , "checking returnvalue -- 3");
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_indexOf(){
+ th.checkPoint("indexOf(java.lang.Object)int");
+ LinkedList al = new LinkedList();
+ th.check( al.indexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.indexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+ th.check( al.indexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.indexOf("a") == 0 , "contains -- 2");
+ th.check( al.indexOf("Q") == -1, "doesn't contain -- 3");
+// th.debug(al.toString());
+ al.add(9,o);
+// th.debug(al.toString());
+ th.check( al.indexOf(o) == 9 , "contains -- 4");
+ th.check( al.indexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check(al.indexOf(null) == 6, "null was added to the Vector");
+ al.remove(6);
+ th.check(al.indexOf(null) == 13, "null was added twice to the Vector");
+ al.remove(13);
+ th.check(al.indexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.indexOf("c") == 1 , "contains -- 6");
+ th.check( al.indexOf("u") == 2 , "contains -- 7");
+ th.check( al.indexOf("n") == 3 , "contains -- 8");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ LinkedList al = new LinkedList();
+ th.check( al.size() == 0 , "check on size -- 1");
+ al.addAll(buildAL());
+ th.check( al.size() == 14 , "check on size -- 1");
+ al.remove(5);
+ th.check( al.size() == 13 , "check on size -- 1");
+ al.add(4,"G");
+ th.check( al.size() == 14 , "check on size -- 1");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_lastIndexOf(){
+ th.checkPoint("lastIndexOf(java.lang.Object)int");
+ LinkedList al = new LinkedList();
+ th.check( al.lastIndexOf(null)== -1,"checks on empty list -- 1");
+ th.check( al.lastIndexOf(al)== -1 , "checks on empty list -- 2");
+ Object o = new Object();
+ al =buildAL();
+// th.debug(al.toString());
+ th.check( al.lastIndexOf(o) == -1 , " doesn't contain -- 1");
+ th.check( al.lastIndexOf("a") == 12 , "contains -- 2");
+ th.check( al.lastIndexOf(o) == -1, "contains -- 3");
+ al.add(9,o);
+ th.check( al.lastIndexOf(o) == 9 , "contains -- 4");
+ th.check( al.lastIndexOf(new Object()) == -1 , "doesn't contain -- 5");
+ th.check( al.lastIndexOf(null) == 14, "null was added to the Vector");
+ al.remove(14);
+ th.check( al.lastIndexOf(null) == 6 , "null was added twice to the Vector");
+ al.remove(6);
+ th.check( al.lastIndexOf(null) == -1, "null was removed to the Vector");
+ th.check( al.lastIndexOf("c") == 7 , "contains -- 6, got "+al.lastIndexOf("c"));
+ th.check( al.lastIndexOf("u") == 9 , "contains -- 7, got "+al.lastIndexOf("u"));
+ th.check( al.lastIndexOf("n") == 10, "contains -- 8, got "+al.lastIndexOf("n"));
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_toArray(){
+ th.checkPoint("toArray()[java.lang.Object");
+ LinkedList v = new LinkedList();
+ Object o[] = v.toArray();
+ th.check(o.length == 0 , "checking size Object array");
+ v.add("a"); v.add(null); v.add("b");
+ o = v.toArray();
+ th.check(o[0]== "a" && o[1] == null && o[2] == "b" , "checking elements -- 1");
+ th.check(o.length == 3 , "checking size Object array");
+
+ th.checkPoint("toArray([java.lang.Object)[java.lang.Object");
+ v = new LinkedList();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.add("a"); v.add(null); v.add("b");
+ String sa[] = new String[5];
+ sa[3] = "deleteme"; sa[4] = "leavemealone";
+// th.debug(v.toString());
+ th.check(v.toArray(sa) == sa , "sa is large enough, no new array created");
+ th.check(sa[0]=="a" && sa[1] == null && sa[2] == "b" , "checking elements -- 1"+sa[0]+", "+sa[1]+", "+sa[2]);
+ th.check(sa.length == 5 , "checking size Object array");
+ th.check(sa[3]==null && sa[4]=="leavemealone", "check other elements -- 1"+sa[3]+", "+sa[4]);
+ v = buildAL();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try { v.toArray(new Class[5]);
+ th.fail("should throw an ArrayStoreException");
+ }
+ catch (ArrayStoreException ae) { th.check(true); }
+ v.add(null);
+ String sar[];
+ sa = new String[15];
+ sar = (String[])v.toArray(sa);
+ th.check( sar == sa , "returned array is the same");
+
+ }
+/**
+* implemented. <br>
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ LinkedList cal,al = new LinkedList();
+ cal = (LinkedList)al.clone();
+ th.check(cal.size() == 0, "checking size -- 1");
+ al.add("a") ;al.add("b") ;al.add("c"); al.add(null);
+ cal = (LinkedList)al.clone();
+ th.check(cal.size() == al.size(), "checking size -- 2");
+ th.check( al != cal , "Objects are not the same");
+ th.check( al.equals(cal) , "cloned list is equal");
+ al.add("a");
+ th.check(cal.size() == 4, "changes in one object doen't affect the other -- 2");
+
+ }
+
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_iterator(){
+ th.checkPoint("ModCount(in)iterator");
+ LinkedList al = buildAL();
+ Iterator it = al.iterator();
+ al.get(0);
+ al.contains(null);
+ al.isEmpty();
+ al.indexOf(null);
+ al.lastIndexOf(null);
+ al.size();
+ al.toArray();
+ al.toArray(new String[10]);
+ al.clone();
+ try {
+ it.next();
+ th.check(true);
+ }
+ catch(ConcurrentModificationException ioobe) { th.fail("should not throw a ConcurrentModificationException -- 2"); }
+ it = al.iterator();
+ al.add("b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 3");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.add(3,"b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 4");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.addAll(buildAL());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 5");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.addAll(2,buildAL());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 6");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.remove(2);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 8");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ it = al.iterator();
+ al.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 9");
+ }
+ catch(ConcurrentModificationException ioobe) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_getFirst(){
+ th.checkPoint("getFirst()java.lang.Object");
+ LinkedList ll = new LinkedList();
+ try {
+ ll.getFirst();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ ll = buildAL();
+ th.check("a".equals(ll.getFirst()) , "getFirst -- 1");
+ ll.removeFirst();
+ th.check("c".equals(ll.getFirst()) , "getFirst -- 2");
+ ll.addFirst("d");
+ th.check("d".equals(ll.getFirst()) , "getFirst -- 3");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_getLast(){
+ th.checkPoint("getLast()java.lang.Object");
+ LinkedList ll = new LinkedList();
+ try {
+ ll.getLast();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ ll = buildAL();
+ th.check(null == ll.getLast() , "getLast -- 1");
+ ll.removeLast();
+ th.check("a".equals(ll.getLast()) , "getLast -- 2");
+ ll.addLast("d");
+ th.check("d".equals(ll.getLast()) , "getLast -- 3");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_addFirst(){
+ th.checkPoint("addFirst(java.lang.Object)void");
+ LinkedList ll = new LinkedList();
+ ll.addFirst("a");
+ th.check("a".equals(ll.getLast()) , "addFirst on empty List -- 1");
+ th.check("a".equals(ll.getFirst()) , "addFirst on empty List -- 1");
+ ll.addFirst("c");
+ th.check("a".equals(ll.getLast()) , "addFirst on List -- 2");
+ th.check("c".equals(ll.getFirst()) , "addFirst on List -- 2");
+ ll.addFirst(null);
+ th.check("a".equals(ll.getLast()) , "addFirst on List -- 3");
+ th.check(null == ll.getFirst() , "addFirst on List -- 3");
+ th.check(null == ll.get(0) , "checking order with get -- 1");
+ th.check("c".equals(ll.get(1)) , "checking order with get -- 2");
+ th.check("a".equals(ll.get(2)) , "checking order with get -- 3");
+ th.check(ll.size() == 3 , "checking size increment ...");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_addLast(){
+ th.checkPoint("addLast(java.lang.Object)void");
+ LinkedList ll = new LinkedList();
+ ll.addLast("a");
+ th.check("a".equals(ll.getLast()) , "addLast on empty List -- 1");
+ th.check("a".equals(ll.getFirst()) , "addLast on empty List -- 1");
+ ll.addLast("c");
+ th.check("c".equals(ll.getLast()) , "addLast on List -- 2");
+ th.check("a".equals(ll.getFirst()) , "addLast on List -- 2");
+ ll.addLast(null);
+ th.check("a".equals(ll.getFirst()) , "addLast on List -- 3");
+ th.check(null == ll.getLast() , "addLast on List -- 3");
+ th.check(null == ll.get(2) , "checking order with get -- 1");
+ th.check("c".equals(ll.get(1)) , "checking order with get -- 2");
+ th.check("a".equals(ll.get(0)) , "checking order with get -- 3");
+ th.check(ll.size() == 3 , "checking size increment ...");
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_removeFirst(){
+ th.checkPoint("removeFirst()java.lang.Object");
+ LinkedList ll = new LinkedList();
+ try {
+ ll.removeFirst();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ ll = buildAL();
+ th.check("a".equals(ll.removeFirst()) , "removeFirst -- 1");
+ th.check("c".equals(ll.removeFirst()) , "removeFirst -- 2");
+ th.check("u".equals(ll.getFirst()) , "changing pointer to first ...");
+ th.check("u".equals(ll.removeFirst()) , "removeFirst -- 3");
+ th.check(ll.size() == 11 , "checking size decrement ...");
+ th.check("n".equals(ll.removeFirst()) , "removeFirst -- 4");
+ th.check("i".equals(ll.removeFirst()) , "removeFirst -- 5");
+ th.check("a".equals(ll.removeFirst()) , "removeFirst -- 6");
+ th.check(null == ll.removeFirst() , "removeFirst -- 7");
+ ll.removeFirst();
+ ll.removeFirst();
+ ll.removeFirst();
+ ll.removeFirst();
+ ll.removeFirst();
+ th.check("a".equals(ll.removeFirst()) , "removeFirst -- 8");
+ th.check(null == ll.getFirst() , "removeFirst -- 8");
+ th.check(null == ll.getLast() , "removeFirst -- 9");
+ th.check(null == ll.removeFirst() , "removeFirst -- 10");
+ try {
+ ll.removeFirst();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_removeLast(){
+ th.checkPoint("removeLast()java.lang.Object");
+ LinkedList ll = new LinkedList();
+ try {
+ ll.removeLast();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ ll = buildAL();
+ th.check(null == ll.removeLast() , "removeLast -- 0");
+ th.check("a".equals(ll.removeLast()) , "removeLast -- 1");
+ th.check("i".equals(ll.removeLast()) , "removeLast -- 2");
+ th.check("n".equals(ll.getLast()) , "changing pointer to last ...");
+ th.check("n".equals(ll.removeLast()) , "removeLast -- 3");
+ th.check("u".equals(ll.get(9)) , "checking elements -- 3a");
+ th.check("c".equals(ll.get(8)) , "checking elements -- 3b");
+ th.check(ll.size() == 10 , "checking size decrement ...");
+ th.check("u".equals(ll.removeLast()) , "removeLast -- 4");
+ th.check("c".equals(ll.removeLast()) , "removeLast -- 5");
+ th.check("a".equals(ll.removeLast()) , "removeLast -- 6");
+ ll.removeLast();
+ ll.removeLast();
+ ll.removeLast();
+ ll.removeLast();
+ ll.removeLast();
+// th.debug(ll.toString());
+ th.check("c".equals(ll.removeLast()) , "removeLast -- 7");
+// th.debug(ll.toString());
+ th.check("a".equals(ll.getLast()) , "removeLast -- 8");
+ th.check("a".equals(ll.getFirst()) , "removeLast -- 9");
+ th.check("a".equals(ll.removeLast()) , "removeLast -- 10");
+ try {
+ ll.removeLast();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch (NoSuchElementException nsee) { th.check(true, "caught exception");}
+ }
+
+/**
+* implemented. <br>
+*
+*/
+ public void test_ListIterator(){
+ th.checkPoint("listIterator()java.util.ListIterator");
+ LinkedList ll = new LinkedList();
+ ListIterator li = ll.listIterator();
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 1");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 1"); }
+ try {
+ li.previous();
+ th.fail("should throw a NoSuchElementException -- 2");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 2"); }
+ th.check(!li.hasNext() , "no elements ... -- 1");
+ th.check(!li.hasPrevious() , "no elements ... -- 1");
+ th.check(li.nextIndex() , 0 ,"nextIndex == 0 -- 1");
+ th.check(li.previousIndex() , -1 ,"previousIndex == -1 -- 1");
+ li.add("a");
+ th.check(!li.hasNext() , "no elements ... -- 2");
+ th.check(li.hasPrevious() , "one element ... -- 2");
+ th.check(li.nextIndex() , 1 ,"nextIndex == 1 -- 2");
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 2");
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 3");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 3"); }
+ th.check("a".equals(li.previous()) , "checking previous element -- 1");
+ li.add(null);
+ th.check(ll.getFirst() == null , "checking if LinkedList got updated -- 1");
+ th.check("a",ll.getLast() ,"checking if LinkedList got updated -- 2");
+// th.debug(ll.toString());
+ th.check(li.previousIndex() , 0 ,"previousIndex == 0 -- 3");
+ th.check(li.previous() == null , "checking previous element -- 2");
+ th.check(li.next() == null , "checking next element -- 1");
+ li.add("b");
+ th.check("a".equals(li.next()) ,"checking next element -- 2");
+ li.add("c");
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 1");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 4"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 2");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 5"); }
+ catch(Exception e) { th.fail("wrong exception was thrown"); }
+ th.check("c".equals(li.previous()) , "checking previous element -- 3");
+ li.set("new");
+ th.check("new".equals(li.next()) , "validating set");
+ li.set("not");
+ li.set("notOK");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 3");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 6"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 4");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 7"); }
+ catch(Exception e) { th.fail("wrong exception was thrown"); }
+ try {
+ li.next();
+ th.fail("should throw a NoSuchElementException -- 4");
+ }
+ catch(NoSuchElementException nsee) { th.check(true, "caught exeption -- 8"); }
+ th.check("a",li.previous(),"checking on previous element");
+ li.remove();
+ try {
+ li.set("not");
+ th.fail("should throw a IllegalStateException -- 5");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 9"); }
+ th.check(!ll.contains("not"), "set should not have been executed");
+ try {
+ li.remove();
+ th.fail("should throw a IllegalStateException -- 6");
+ }
+ catch(IllegalStateException ise) { th.check(true, "caught exeption -- 10"); }
+ catch(Exception e) { th.fail("wrong exception was thrown"); }
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/LinkedList/CVS/Entries b/gnu/testlet/java/util/LinkedList/CVS/Entries
new file mode 100644
index 00000000..165144e9
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/CVS/Entries
@@ -0,0 +1,4 @@
+/AcuniaLinkedListTest.java/1.3/Mon Feb 21 15:52:51 2005//
+/SubListTest.java/1.1/Sat May 24 23:18:38 2003//
+/subList.java/1.2/Thu Apr 28 07:41:37 2005//
+D
diff --git a/gnu/testlet/java/util/LinkedList/CVS/Repository b/gnu/testlet/java/util/LinkedList/CVS/Repository
new file mode 100644
index 00000000..23fb674a
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/LinkedList
diff --git a/gnu/testlet/java/util/LinkedList/CVS/Root b/gnu/testlet/java/util/LinkedList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/LinkedList/SubListTest.java b/gnu/testlet/java/util/LinkedList/SubListTest.java
new file mode 100644
index 00000000..43b7fe4e
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/SubListTest.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Daniel Bonniot <bonniot@users.sf.net>
+
+// 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.java.util.LinkedList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+public class SubListTest implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ test(harness, new LinkedList());
+ }
+
+ /* This method could be used to test subList on any implementation of List.*/
+ public static void test (TestHarness harness, List list)
+ {
+ list.clear();
+ list.add("0");
+ list.add("1");
+ list.add("2");
+ list.add("3");
+
+ final int start = 1, end = 3;
+
+ List sub = list.subList(start,end);
+ harness.check(sub.get(0).equals(list.get(start)));
+
+ Iterator it = sub.iterator();
+ int i = start;
+ while (it.hasNext())
+ {
+ harness.check(it.next().equals(list.get(i)));
+ i++;
+ }
+
+ harness.check(i == end);
+ }
+}
diff --git a/gnu/testlet/java/util/LinkedList/subList.java b/gnu/testlet/java/util/LinkedList/subList.java
new file mode 100644
index 00000000..b126b844
--- /dev/null
+++ b/gnu/testlet/java/util/LinkedList/subList.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: ../List/subList
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.LinkedList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.LinkedList;
+
+/**
+ * Some tests for the subList() method in the {@link LinkedList} class.
+ */
+public class subList implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ gnu.testlet.java.util.List.subList.testAll(LinkedList.class, harness);
+ }
+
+}
diff --git a/gnu/testlet/java/util/List/CVS/Entries b/gnu/testlet/java/util/List/CVS/Entries
new file mode 100644
index 00000000..247e13ab
--- /dev/null
+++ b/gnu/testlet/java/util/List/CVS/Entries
@@ -0,0 +1,2 @@
+/subList.java/1.1/Mon Apr 11 20:01:40 2005//
+D
diff --git a/gnu/testlet/java/util/List/CVS/Repository b/gnu/testlet/java/util/List/CVS/Repository
new file mode 100644
index 00000000..4c929825
--- /dev/null
+++ b/gnu/testlet/java/util/List/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/List
diff --git a/gnu/testlet/java/util/List/CVS/Root b/gnu/testlet/java/util/List/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/List/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/List/subList.java b/gnu/testlet/java/util/List/subList.java
new file mode 100644
index 00000000..1a8a689a
--- /dev/null
+++ b/gnu/testlet/java/util/List/subList.java
@@ -0,0 +1,254 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.List;
+
+import gnu.testlet.TestHarness;
+
+import java.util.List;
+
+/**
+ * A utility class that performs various checks on the subList() method in the
+ * {@link List} interface, for an arbitrary list class.
+ */
+public class subList
+{
+ /**
+ * Creates a new instance of the specified list class.
+ *
+ * @param listClass the class.
+ * @param harness the harness.
+ *
+ * @return A new list instance.
+ */
+ static List createListInstance(Class listClass, TestHarness harness)
+ {
+ List result = null;
+ try
+ {
+ result = (List) listClass.newInstance();
+ return result;
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+ return null;
+ }
+
+ /**
+ * Run all tests for a particular class of list.
+ *
+ * @param listClass the list class.
+ * @param harness the test harness.
+ */
+ public static void testAll(Class listClass, TestHarness harness)
+ {
+ testEmptyList(listClass, harness);
+ testABCD(listClass, harness);
+ testAdd(listClass, harness);
+ testClear(listClass, harness);
+ testRemove(listClass, harness);
+ testSet(listClass, harness);
+ testSubSubList(listClass, harness);
+ }
+
+ public static void testEmptyList(Class listClass, TestHarness harness)
+ {
+ // create a sublist in an empty list...
+ List list = createListInstance(listClass, harness);
+ List sub = list.subList(0, 0);
+ harness.check(sub.isEmpty());
+ }
+
+ public static void testABCD(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // check start index == end index
+ List sub = list.subList(2, 2);
+ harness.check(sub.isEmpty());
+
+ // sublist with 1 item
+ sub = list.subList(1, 2);
+ harness.check(sub.get(0).equals("B"));
+ harness.check(sub.size(), 1);
+
+ // sublist with end index == size is OK
+ sub = list.subList(1, 4);
+ harness.check(sub.size(), 3);
+ sub = list.subList(4, 4);
+ harness.check(sub.isEmpty());
+
+ // sublist with start index > end index
+ // see also bug report 4506427, which details the exceptions thrown
+ boolean pass = false;
+ try
+ {
+ sub = list.subList(2, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // sublist with negative start index
+ pass = false;
+ try
+ {
+ sub = list.subList(-1, 1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // sublist with end index > size
+ pass = false;
+ try
+ {
+ sub = list.subList(1, 5);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public static void testAdd(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // add to an empty list
+ List sub = list.subList(0, 0);
+ sub.add("1");
+ harness.check(list.get(0).equals("1"));
+ harness.check(list.size(), 5);
+
+ // add one item via sublist
+ sub = list.subList(1, 2);
+ sub.add("2");
+ harness.check(list.get(0).equals("1"));
+ harness.check(list.get(1).equals("A"));
+ harness.check(list.get(2).equals("2"));
+ harness.check(list.get(3).equals("B"));
+ harness.check(list.size(), 6);
+ }
+
+ public static void testClear(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // clearing an empty sublist should not affect original
+ List sub = list.subList(0, 0);
+ sub.clear();
+ harness.check(list.size(), 4);
+
+ // clear one item via sublist
+ sub = list.subList(1, 2);
+ sub.clear();
+ harness.check(list.get(0).equals("A"));
+ harness.check(list.get(1).equals("C"));
+ harness.check(list.size(), 3);
+
+ // clear all
+ sub = list.subList(0, list.size());
+ sub.clear();
+ harness.check(list.isEmpty());
+ }
+
+ public static void testRemove(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // clear one item via sublist
+ List sub = list.subList(1, 2);
+ sub.remove("B");
+ harness.check(list.get(0).equals("A"));
+ harness.check(list.get(1).equals("C"));
+ harness.check(list.size(), 3);
+ }
+
+ public static void testSet(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // clear one item via sublist
+ List sub = list.subList(1, 2);
+ sub.set(0, "X");
+ harness.check(list.get(0).equals("A"));
+ harness.check(list.get(1).equals("X"));
+ harness.check(list.get(2).equals("C"));
+ harness.check(list.size(), 4);
+ }
+
+ public static void testSubSubList(Class listClass, TestHarness harness)
+ {
+ List list = createListInstance(listClass, harness);
+ list.add("A");
+ list.add("B");
+ list.add("C");
+ list.add("D");
+
+ // clear one item via sublist
+ List sub1 = list.subList(0, 4);
+ List sub2 = sub1.subList(1, 3);
+ sub2.add("X");
+
+ harness.check(sub1.get(1).equals("B"));
+ harness.check(sub1.get(2).equals("C"));
+ harness.check(sub1.get(3).equals("X"));
+
+ harness.check(list.get(0).equals("A"));
+ harness.check(list.get(1).equals("B"));
+ harness.check(list.get(2).equals("C"));
+ harness.check(list.get(3).equals("X"));
+ harness.check(list.get(4).equals("D"));
+ }
+
+}
diff --git a/gnu/testlet/java/util/Observable/CVS/Entries b/gnu/testlet/java/util/Observable/CVS/Entries
new file mode 100644
index 00000000..68dcfa65
--- /dev/null
+++ b/gnu/testlet/java/util/Observable/CVS/Entries
@@ -0,0 +1,2 @@
+/observable.java/1.1/Thu Aug 11 18:05:35 2005//
+D
diff --git a/gnu/testlet/java/util/Observable/CVS/Repository b/gnu/testlet/java/util/Observable/CVS/Repository
new file mode 100644
index 00000000..26f76b0f
--- /dev/null
+++ b/gnu/testlet/java/util/Observable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Observable
diff --git a/gnu/testlet/java/util/Observable/CVS/Root b/gnu/testlet/java/util/Observable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Observable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Observable/observable.java b/gnu/testlet/java/util/Observable/observable.java
new file mode 100644
index 00000000..c4ea5e56
--- /dev/null
+++ b/gnu/testlet/java/util/Observable/observable.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 Red Hat, Inc.
+
+// 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.java.util.Observable;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Observable;
+import java.util.Observer;
+
+public class observable implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Observable o = new Observable();
+
+ harness.checkPoint("adding null Observer");
+ boolean ok = false;
+ try
+ {
+ o.addObserver(null);
+ }
+ catch (NullPointerException _)
+ {
+ ok = true;
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java b/gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java
new file mode 100644
index 00000000..6febc4e4
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/AcuniaPropertiesTest.java
@@ -0,0 +1,545 @@
+/* Copyright (C) 2001, 2004 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.Properties;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+/**
+* Written by ACUNIA.<br>
+* <br>
+* this file contains test for java.util.Properties <br>
+* <br>
+* Properties extends Hashtable and thus all methods !!! <br>
+* We can use methods from Hashtable to get info about the Properties object <br>
+* <br>
+* Whenever a stream is needed we choose an ByteArrayStream <br>
+*/
+public class AcuniaPropertiesTest implements Testlet
+{
+ protected TestHarness th;
+ protected Properties defProps;
+ protected byte buffer[];
+ protected byte bytesout[];
+ protected ByteArrayInputStream bin;
+ protected ByteArrayOutputStream bout;
+ protected PrintStream psout;
+ protected PrintWriter pwout;
+ public void test (TestHarness harness)
+ {
+ th = harness;
+
+ setUpTest();
+ resetStreams();
+
+ test_Properties();
+ resetStreams();
+ test_getProperty();
+ resetStreams();
+ test_list();
+ resetStreams();
+ test_load();
+ resetStreams();
+ test_propertyNames();
+ resetStreams();
+ test_setProperty();
+ resetStreams();
+ test_store();
+ resetStreams();
+ test_save();
+ resetStreams();
+ test_loadextra();
+ }
+
+ private void resetStreams(){
+ try {
+ bin.reset();
+ bout.reset();
+ }
+ catch (Exception e){}
+ }
+
+ private void setUpTest() {
+ buffer = new String("name=yes\nSmart=move\nanimal=dog").getBytes();
+ bin = new ByteArrayInputStream(buffer);
+ bout = new ByteArrayOutputStream();
+ psout = new PrintStream(bout);
+ pwout = new PrintWriter(bout);
+ defProps = new Properties();
+ try { defProps.load(bin); }
+ catch (Exception e) {}
+ buffer =new String("!comment\n \nname=no\n#morecomments\ndog=no_cat\ntest\ndate=today\nlongvalue=I'mtryingtogiveavaluelongerthen40characters\n40chars=thisvalueshouldcontainexactly40charcters").getBytes();
+ bin = new ByteArrayInputStream(buffer);
+ }
+
+/**
+* implemented. <br>
+* might need extra testcode
+*/
+ public void test_Properties(){
+ th.checkPoint("Properties()");
+ // not much to check for this one !
+ Properties p = new Properties();
+ th.check(p.isEmpty() ,"nothing in there");
+ th.checkPoint("Properties(java.util.Properties)");
+ p = new Properties(defProps);
+ th.check(p.isEmpty() ,"nothing in there");
+ th.check(p.getProperty("name").equals("yes") , "default field is not empty");
+ try { p = new Properties(null);
+ th.check(true);
+ }
+ catch (Exception e) { th.fail("should not throw an Exeption. Got: "+e); }
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_getProperty(){
+ th.checkPoint("getProperty(java.lang.String)java.lang.String");
+ Properties p = new Properties();
+ try { p.getProperty(null);
+ th.fail("should throw a NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check( true ); }
+
+ p = new Properties(defProps);
+ try { p.getProperty(null);
+ th.fail("should throw a NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check( true ); }
+ try { p.load(bin); }
+ catch (Exception e) {}
+ try { p.getProperty(null);
+ th.fail("should throw a NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check( true ); }
+ try {
+ th.check(p.getProperty("dog").equals("no_cat") , "check returnvalue");
+ th.check(p.getProperty("name").equals("no") , "return property from main property table");
+ th.check(p.getProperty("Smart").equals("move") , "check returnvalue from default table");
+ th.check(p.getProperty("NoEntry") == null , "check for null if not there");
+ }
+ catch (Exception e) { th.fail("got unexpected exception: "+e); }
+ th.checkPoint("getProperty(java.lang.String,java.lang.String)java.lang.String");
+ try { p.getProperty(null, "Noooo...");
+ th.fail("should throw a NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check( true ); }
+ try { th.check(p.getProperty( "Noooo...", null)==null , "defVal may be null"); }
+ catch (NullPointerException ne) { th.fail("shouldn't throw a NullPointerException -- 1"); }
+ th.check(p.getProperty("dog","not found").equals("no_cat") , "check returnvalue");
+ th.check(p.getProperty("name","not found").equals("no") , "return property from main property table");
+ th.check(p.getProperty("Smart","not found").equals("move") , "check returnvalue from default table");
+ th.check(p.getProperty("NoEntry","not found").equals("not found") , "check for defVal if not there");
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_list(){
+ th.checkPoint("list(java.io.PrintStream)void");
+ Properties p = new Properties();
+ try { p.list((PrintStream)null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ try { p.load(bin); }
+ catch (Exception e) {}
+ p.list(psout);
+ byte ba[] = bout.toByteArray();
+ Vector v = new Vector();
+ Enumeration ek = p.keys();
+ String s;
+ while (ek.hasMoreElements())
+ { s = (String) ek.nextElement();
+ v.add(s+"="+p.getProperty(s));
+ }
+ v.add("Smart=move"); v.add("animal=dog");
+
+ int start,count =0;
+ v.removeElement("longvalue=I'mtryingtogiveavaluelongerthen40characters");
+ v.add("longvalue=I'mtryingtogiveavaluelongerthen40char...");
+ while ( count < ba.length ) {
+ start = count;
+ while ( ba[count] !='\n' && count < ba.length) { count++;}
+ s = new String(ba , start , count - start);
+ if (!s.startsWith("--")) // list() adds a header
+ th.check(v.contains(s), "v does not contain:$"+s+"$");
+ v.removeElement(s);
+ count++;
+ }
+
+ try { p.list((PrintStream)null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ th.checkPoint("list(java.io.PrintWriter)void");
+ resetStreams();
+ p = new Properties();
+ try { p.list((PrintWriter)null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ try { p.load(bin); }
+ catch (Exception e) {}
+ p.list(pwout);
+ ba = bout.toByteArray();
+ v = new Vector();
+ ek = p.keys();
+ while (ek.hasMoreElements())
+ { s = (String) ek.nextElement();
+ v.add(s+"="+p.getProperty(s));
+ }
+ v.add("Smart=move"); v.add("animal=dog");
+
+ count =0;
+ v.removeElement("longvalue=I'mtryingtogiveavaluelongerthen40characters");
+ v.add("longvalue=I'mtryingtogiveavaluelongerthen40char...");
+
+ while ( count < ba.length ) {
+ start = count;
+ while ( ba[count] !='\n' && count < ba.length) { count++;}
+ s = new String(ba , start , count - start);
+ if (!s.startsWith("--")) // list() adds a header
+ th.check(v.contains(s), "v does not contain:$"+s+"$");
+ v.removeElement(s);
+ count++;
+ }
+
+ try { p.list((PrintStream)null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ }
+
+/**
+* implemented. <br>
+* load is used by other tests to make a propeties file <br>
+* failures in load will mak other tests fail !
+*/
+ public void test_load(){
+ th.checkPoint("load(java.io.InputStream)void");
+ Properties p = new Properties();
+ try { p.load((ByteArrayInputStream) null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ catch (Exception e) {th.fail("should throw an NullPointerException instead of: "+e); }
+
+ try { p.load(bin); }
+ catch (Exception e) {}
+ Enumeration ek1 = p.keys();
+ resetStreams();
+ try { p.load(bin); }
+ catch (Exception e) {}
+ Enumeration ek2 = p.keys();
+ boolean ok = true;
+ while (ek1.hasMoreElements() && ek2.hasMoreElements())
+ { if (ek1.nextElement() != ek2.nextElement()) ok = false; }
+ th.check( !ek1.hasMoreElements() && !ek2.hasMoreElements(), "no extra elements may be added with same name");
+ th.check( ok , " all elements are equal ");
+ bin = new ByteArrayInputStream(new String("name=yes\nSmart=move\nanimal=dog").getBytes());
+ try { p.load(bin); }
+ catch (Exception e) {}
+ th.check(p.getProperty("name").equals("yes") , "load overrides previous values");
+ Vector v = new Vector();
+ v.add("name"); v.add("Smart"); v.add("animal");
+ v.add("dog"); v.add("test"); v.add("date"); v.add("longvalue"); v.add("40chars");
+ ek1 = p.keys(); ok = true ; Object o;
+ while (ek1.hasMoreElements())
+ { o = ek1.nextElement();
+ if ( v.contains(o)) v.removeElement(o);
+ else { ok = false; th.debug("got extra element: "+(String)o);}
+ }
+
+ th.check( ok , "all elements were there" );
+ th.check( v.isEmpty() , "all elements should be gone, got"+v );
+ setUpTest();
+
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_propertyNames(){
+ th.checkPoint("propertyNames()java.util.Enumeration");
+ Properties p = new Properties();
+ try { p.load(bin); }
+ catch (Exception e) {}
+
+ Enumeration en = p.propertyNames();
+ Enumeration ek = p.keys();
+ boolean ok = true;
+ Vector v = new Vector();
+ Enumeration ek2 = p.keys();
+ while (ek2.hasMoreElements()) {
+ v.add(ek2.nextElement ());
+ }
+ while (ek.hasMoreElements() && en.hasMoreElements())
+ {
+ ek.nextElement();
+ Object next = en.nextElement();
+ if (!v.contains(next))
+ {
+ ok = false;
+ th.debug(next + " not in " + v);
+ }
+ }
+ th.check(ok , "all elements are the same");
+ th.check( ! ek.hasMoreElements() && ! en.hasMoreElements() , "make sure both enumerations are empty");
+ p = new Properties(defProps);
+ resetStreams();
+ try { p.load(bin); }
+ catch (Exception e) {}
+ v.add("Smart"); v.add("animal");
+ en = p.propertyNames();
+ ok = true;
+ Object o;
+ while (en.hasMoreElements()){
+ o = en.nextElement();
+ if ( v.contains(o)) v.removeElement(o);
+ else { ok = false;
+ th.debug("got extra element: "+o);
+ }
+ }
+ th.check(ok , "see if no double were generated");
+ th.check(v.isEmpty() , "check if all names were mentioned -- got:"+v);
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_setProperty(){
+ th.checkPoint("setProperty(java.lang.String,java.lang.String)java.lang.Object");
+ Properties p = new Properties();
+ try {
+ p.setProperty(null ,"Noooo...");
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try {
+ p.setProperty("Noooo...", null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ p = new Properties(defProps);
+ try { p.load(bin); }
+ catch (Exception e) {}
+ try {
+ p.setProperty(null ,"Noooo...");
+ th.fail("should throw NullPointerException -- 3");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try {
+ p.setProperty("No again...", null);
+ th.fail("should throw NullPointerException -- 4");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try {
+ th.check(((String)p.setProperty("test","null")).equals("") , "returns \"\" in our case");
+ }
+ catch (NullPointerException ne) { th.fail("the value a of property cannot be null, got:"+ne); }
+ th.check(p.getProperty("test").equals("null") , "check new value in our case null");
+ th.check(p.setProperty("testing","null") == null , "returns value null, name not in list");
+ th.check(p.getProperty("test").equals("null") , "check new value in our case null");
+ String s = (String)p.setProperty("Smart","nul");
+ th.check(s == null , "returnvalue, is null default list not touched, got");
+ th.check(p.getProperty("Smart").equals("nul") , "check new value in our case null");
+ s = ((String)p.setProperty("name","nu"));
+ th.check(s.equals("no") , "return value in our case no, got: "+s);
+ th.check(p.getProperty("name").equals("nu") , "check new value in our case nu");
+
+
+ }
+
+/**
+* implemented. <br>
+* this method replaces save. It behaves the same, but it will throw a <br>
+* java.io.IOException if an IO error occurs, while save did nothing <br>
+* <br>
+* to test this we should create an OutputStream wich will be guaranteed to fail ! <br>
+* ???? must be added !!!! (how) <br>
+* Add a test to determine of store generates a comment line with the current time <br>
+*/
+ public void test_store(){
+ th.checkPoint("store(java.io.OutputStream,java.lang.String)void");
+ Properties p = new Properties(defProps);
+ try { p.store((ByteArrayOutputStream) null , "no comment");
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ catch (Exception e) {th.fail("should throw an NullPointerEception instead of: "+e); }
+
+ try { p.store(bout , null);
+ th.check(true);
+ }
+ catch (NullPointerException ne) { th.fail("should not throw NullPointerException"); }
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+
+ resetStreams();
+ try {p.store(bout, null); }
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+ byte ba[] = bout.toByteArray();
+ th.check( (ba[0]== (byte) '#') && (ba[1]!= (byte) '#'), "only the date should be written");
+ th.check(ba.length < 50 , "default properties are never printed out");
+ resetStreams();
+ try { p.load(bin); }
+ catch (Exception e) {}
+ try {p.store(bout, "no comments");}
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+ ba = bout.toByteArray();
+ String s = new String(ba , 0 , 12 );
+ th.check( s.equals("#no comments"), "got: "+s);
+ int i = 0 , count = 0;
+ while ( i < 2 && count < ba.length)
+ { if (ba[count++] == (byte) '\n') i++ ;}
+// we will construct a vector containing all the lines with should be written
+ Vector v = new Vector();
+ Enumeration ek = p.keys();
+ while (ek.hasMoreElements())
+ { s = (String) ek.nextElement();
+ v.add(s+"="+p.getProperty(s));
+ }
+ while ( count < ba.length ) {
+ int start = count;
+ while (count < ba.length) {
+ if ( ba[count] !='\n' ) count++;
+ else break;
+ }
+ s = new String(ba , start , count - start);
+ th.check(v.contains(s), "v does not contain: "+s);
+ v.removeElement(s);
+ count++;
+ }
+ }
+
+/**
+* implemented. <br>
+* Add a test to determine of store generates a comment line with the current time <br>
+* <br>
+* depricated method !!!
+*/
+ public void test_save(){
+ th.checkPoint("save(java.io.OutputStream,java.lang.String)void");
+ Properties p = new Properties(defProps);
+ try { p.save(null , "no comment");
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ catch (Exception e) {th.fail("should throw an NullPointerEception instead of: "+e); }
+
+ try { p.save(bout , null);
+ th.check(true);
+ }
+ catch (NullPointerException ne) { th.fail("should not throw NullPointerException"); }
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+
+ resetStreams();
+ try {p.save(bout, null); }
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+ byte ba[] = bout.toByteArray();
+ th.check( (ba[0]== (byte) '#') && (ba[1]!= (byte) '#'), "just date should be written");
+ th.debug(ba.length + " -- got: " +new String(ba));
+ th.check(ba.length < 50 , "default properties are never printed out");
+ resetStreams();
+ try { p.load(bin); }
+ catch (Exception e) {}
+ try {p.save(bout, "no comments");}
+ catch (Exception e) {th.fail("shouldn't throw any Exception, but got: "+e); }
+ ba = bout.toByteArray();
+ String s = new String(ba , 0 , 12 );
+ th.check( s.equals("#no comments"), "got: "+s);
+ int i = 0 , count = 0;
+ while ( i < 2 && count < ba.length)
+ { if (ba[count++] == (byte) '\n') i++ ;}
+// we will construct a vector containing all the lines with should be written
+ Vector v = new Vector();
+ Enumeration ek = p.keys();
+ while (ek.hasMoreElements())
+ { s = (String) ek.nextElement();
+ v.add(s+"="+p.getProperty(s));
+ }
+ while ( count < ba.length ) {
+ int start = count;
+ while (count < ba.length) {
+ if ( ba[count] !='\n') count++;
+ else break;
+ }
+ s = new String(ba , start , count - start);
+ th.check(v.contains(s), "v does not contain: "+s);
+ v.removeElement(s);
+ count++;
+ }
+
+ }
+/**
+* this test will check if all forms lines are accepted in the load.
+*
+*/
+ public void test_loadextra(){
+ th.checkPoint("load(java.io.InputStream)void");
+ Properties p = new Properties();
+ buffer =new String(" !comment\n \t \nname = no\r #morec\tomm\\\nents\r\n dog=no\\\\cat \nburps :\ntest=\ndate today\n\n\nlong\\\n value=tryin \\\n gto\n4:vier\nvier :4").getBytes();
+ bin = new ByteArrayInputStream(buffer);
+ try {p.load(bin);} catch (Exception e) {}
+ Enumeration e = p.keys();
+ Vector v = new Vector();
+ // Note that there used to be code here checking whether the
+ // "!comment" and "#morec" keys were found, on the theory that
+ // leading whitespace mattered. This no longer seems to be the
+ // case, however. In the past it apparently varied between JVMs,
+ // but the 1.4 docs are unambiguous on this topic. We check for
+ // "ents" since line-continuation doesn't affect comments.
+ v.add("ents=");
+ v.add("name=no");
+ v.add("dog=no\\cat ");
+ v.add("burps=");
+ v.add("test=");
+ v.add("date=today");
+ v.add("longvalue=tryin gto");
+ v.add("4=vier");
+ v.add("vier=4");
+ String s;
+ while ( e.hasMoreElements()) {
+ s = (String) e.nextElement();
+ th.debug("checkvalue -- got:$"+s+"="+p.getProperty(s)+"$");
+ th.check(v.contains(s+"="+p.getProperty(s)), "checkvalue -- got:$"+s+"="+p.getProperty(s)+"$");
+ v.removeElement(s+"="+p.getProperty(s));
+ }
+ th.check( v.isEmpty() , "check if all elements were found -- got: "+v);
+ }
+}
+
diff --git a/gnu/testlet/java/util/Properties/CVS/Entries b/gnu/testlet/java/util/Properties/CVS/Entries
new file mode 100644
index 00000000..8e7c9876
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/CVS/Entries
@@ -0,0 +1,4 @@
+/AcuniaPropertiesTest.java/1.7/Mon Jun 18 20:27:29 2007//
+/getProperty.java/1.1/Wed Jul 27 10:40:13 2005//
+/load.java/1.3/Mon Jul 25 17:40:38 2005//
+D
diff --git a/gnu/testlet/java/util/Properties/CVS/Repository b/gnu/testlet/java/util/Properties/CVS/Repository
new file mode 100644
index 00000000..3089f429
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Properties
diff --git a/gnu/testlet/java/util/Properties/CVS/Root b/gnu/testlet/java/util/Properties/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Properties/getProperty.java b/gnu/testlet/java/util/Properties/getProperty.java
new file mode 100644
index 00000000..f1e5e4d4
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/getProperty.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Roman Kennke
+
+// 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.java.util.Properties;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Properties;
+
+/**
+ * Tests if getProperty(String) calls getProperty(String, String) or vice versa
+ * or if both call an internal method. This is important to avoid infinite
+ * recursion in derived classes that only implement one of these methods
+ *
+ * @author Roman Kennke
+ */
+public class getProperty implements Testlet
+{
+ static class Properties1 extends Properties
+ {
+ boolean called = false;
+ public String getProperty(String key)
+ {
+ called = true;
+ return super.getProperty(key);
+ }
+ }
+
+ static class Properties2 extends Properties
+ {
+ boolean called = false;
+ public String getProperty(String key, String def)
+ {
+ called = true;
+ return super.getProperty(key, def);
+ }
+ }
+
+ /**
+ * This should not lead to infinite recursion.
+ */
+ static class Properties3 extends Properties
+ {
+ public String getProperty(String key, String def)
+ {
+ return getProperty(key + "." + def);
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ // First we override getProperty(String) and test if
+ // getProperty(String, String) calls this.
+ Properties1 p1 = new Properties1();
+ p1.setProperty("key", "value");
+ p1.called = false;
+ p1.getProperty("key", "default");
+ harness.check(p1.called, true,
+ "getProperty(String, String) calls getProperty(String)");
+
+ // Now we override getProperty(String, String) and test if
+ // getProperty(String) calls this.
+ Properties2 p2 = new Properties2();
+ p2.setProperty("key", "value");
+ p2.called = false;
+ p2.getProperty("key");
+ harness.check(p2.called, false,
+ "getProperty(String) does not call getProperty(String, String)");
+
+ // Now we override getProperty(String, String) so that it calls
+ // getProperty(String) and test if
+ // getProperty(String, String) leads to infinite recursion.
+ Properties3 p3 = new Properties3();
+ p3.setProperty("key", "value");
+ try
+ {
+ p3.getProperty("key", "def");
+ harness.check(true, "overriding getProperty(String, String) must not "
+ + " lead to inifinite recursion.");
+ }
+ catch (Throwable ex)
+ {
+ harness.fail("overriding getProperty(String, String) must not "
+ + " lead to inifinite recursion.");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Properties/load.java b/gnu/testlet/java/util/Properties/load.java
new file mode 100644
index 00000000..f0f9d3c4
--- /dev/null
+++ b/gnu/testlet/java/util/Properties/load.java
@@ -0,0 +1,162 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2000, 2005 Red Hat Inc.
+
+// 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.java.util.Properties;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Properties;
+import java.io.*;
+
+public class load implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Properties p = new Properties ();
+ p.setProperty ("a space", "a value");
+ p.setProperty ("two spaces", "spacy ");
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream ();
+ try
+ {
+ p.store (baos, null);
+ }
+ catch (IOException _)
+ {
+ }
+
+ Properties in = new Properties ();
+ ByteArrayInputStream bais = new ByteArrayInputStream (baos.toByteArray ());
+
+ try
+ {
+ in.load (bais);
+ }
+ catch (IOException _)
+ {
+ }
+
+ // Sigh. Work around gcj bug: Hashtable.equals doesn't work as of
+ // Oct 5, 2000.
+ // harness.check (in.equals (p));
+ harness.check (in.size(), 2);
+ harness.check (in.getProperty ("a space"), "a value");
+ harness.check (in.getProperty ("two spaces"), "spacy ");
+
+ // Tests copied from Kaffe's regression test
+ p = new Properties();
+ in = new Properties();
+
+ for (int i = 0; i < EXPECT.length / 2; i++)
+ p.setProperty(EXPECT[i * 2], EXPECT[i * 2 + 1]);
+
+ try
+ {
+ in.load(new ByteArrayInputStream(INPUT.getBytes()));
+ }
+ catch (IOException _)
+ {
+ }
+ harness.check (in.size(), p.size());
+ for (int i = 0; i < EXPECT.length / 2; i++) {
+ harness.check (in.getProperty (EXPECT[i * 2]),
+ p.getProperty (EXPECT[i * 2]));
+ }
+
+ // Classpath regression tests.
+ harness.checkPoint("trailing backslash");
+ p = new Properties();
+ boolean ok = true;
+ try
+ {
+ p.load(new ByteArrayInputStream("val = trailing backslash \\\n".getBytes()));
+ }
+ catch (IOException x)
+ {
+ }
+ catch (Throwable x2)
+ {
+ ok = false;
+ }
+ harness.check(ok);
+ harness.check(p.size(), 1);
+
+ p = new Properties();
+ ok = true;
+ try
+ {
+ p.load(new ByteArrayInputStream("v\\".getBytes()));
+ }
+ catch (IOException x)
+ {
+ }
+ catch (Throwable x2)
+ {
+ ok = false;
+ }
+ harness.check(ok);
+ harness.check(p.size(), 1);
+ }
+
+ private static final String[] EXPECT = new String[] {
+ "fooKey", "fooValue",
+ "barKey", "override previous bar value",
+ "noEqualsSign", "value",
+ "spacesAroundEqualsSign", "this is the value",
+ "useColon", "colon's value",
+ "key=contains=equals", "value3",
+ "key:contains:colons", "value4",
+ "key contains spaces", "value5",
+ "backslashes", "\r\n\t\\\"'",
+ "lineContinuation",
+ "this is a line continuation times two",
+ "unicodeString",
+ new String(new char[] { (char)0x1234, (char)0x5678 } ),
+ "controlKey",
+ new String(new char[] { (char)1, } ),
+ "keyWithEmptyStringAsValue", ""
+ };
+
+ private static final String INPUT =
+"fooKey=fooValue\n" +
+"controlKey:\\u0001\n" +
+"barKey=bar value\n" +
+"barKey=override previous bar value\n" +
+"noEqualsSign value\n" +
+"spacesAroundEqualsSign = this is the value\n" +
+"useColon : colon's value\n" +
+"key\\=contains\\=equals=value3\n" +
+"key\\:contains\\:colons=value4\n" +
+"key\\ contains\\ spaces=value5\n" +
+"backslashes = \\r\\n\\t\\\\\\\"\\'\n" +
+"lineContinuation=this is a \\\n" +
+" line continuation \\\n" +
+" times two\n" +
+"unicodeString=\\u1234\\u5678\n" +
+"keyWithEmptyStringAsValue\n" +
+"# a few blank lines follow\n" +
+"\n" +
+"\n" +
+"# comment line\n" +
+" ## another comment line\n" +
+"! another comment line\n" +
+" !! another comment line\n";
+
+}
diff --git a/gnu/testlet/java/util/Random/.cvsignore b/gnu/testlet/java/util/Random/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/util/Random/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/util/Random/CVS/Entries b/gnu/testlet/java/util/Random/CVS/Entries
new file mode 100644
index 00000000..061978a3
--- /dev/null
+++ b/gnu/testlet/java/util/Random/CVS/Entries
@@ -0,0 +1,3 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:37 1998//
+/basic.java/1.5/Thu Nov 7 04:15:31 2002//
+D
diff --git a/gnu/testlet/java/util/Random/CVS/Repository b/gnu/testlet/java/util/Random/CVS/Repository
new file mode 100644
index 00000000..e5780da4
--- /dev/null
+++ b/gnu/testlet/java/util/Random/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Random
diff --git a/gnu/testlet/java/util/Random/CVS/Root b/gnu/testlet/java/util/Random/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Random/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Random/basic.java b/gnu/testlet/java/util/Random/basic.java
new file mode 100644
index 00000000..b9a6fc1b
--- /dev/null
+++ b/gnu/testlet/java/util/Random/basic.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.0
+
+// Copyright (C) 1998, 2002 Cygnus Solutions
+
+// 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.java.util.Random;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Random;
+
+public class basic implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ Random rand;
+
+ rand = new Random(122760);
+ harness.check (rand.nextInt(), -1524104671);
+
+ harness.check (rand.nextLong(), 2785759620113032781L);
+
+ harness.check (String.valueOf(rand.nextDouble()), "0.8173322904425151");
+
+ harness.check (String.valueOf(rand.nextFloat()), "0.8239248");
+
+ byte[] b = new byte[0];
+ rand.nextBytes(b);
+ harness.check (rand.nextInt(), -899478426);
+
+ rand = new Random(122760);
+ rand.nextInt();
+ rand.nextLong();
+ rand.nextDouble();
+ rand.nextFloat();
+ b = new byte[3];
+ rand.nextBytes(b);
+ harness.check (b[0], 102);
+ harness.check (b[1], 12);
+ harness.check (b[2], 99);
+ harness.check (rand.nextInt(), -1550323395);
+
+ rand = new Random(122760);
+ rand.nextInt();
+ rand.nextLong();
+ rand.nextDouble();
+ rand.nextFloat();
+ b = new byte[4];
+ rand.nextBytes(b);
+ harness.check (b[0], 102);
+ harness.check (b[1], 12);
+ harness.check (b[2], 99);
+ harness.check (b[3], -54);
+ harness.check (rand.nextInt(), -1550323395);
+
+ rand = new Random(122760);
+ rand.nextInt();
+ rand.nextLong();
+ rand.nextDouble();
+ rand.nextFloat();
+ b = new byte[5];
+ rand.nextBytes(b);
+ harness.check (b[0], 102);
+ harness.check (b[1], 12);
+ harness.check (b[2], 99);
+ harness.check (b[3], -54);
+ harness.check (b[4], 61);
+ harness.check (rand.nextInt(), -270809961);
+
+ // Spot check for negative numbers. This is a regression test
+ // an old Classpath bug.
+ boolean ok = true;
+ rand = new Random (0);
+ for (int i=0; i < 1000000; ++i)
+ {
+ int x = rand.nextInt (1000);
+ if (x < 0 || x >= 1000)
+ ok = false;
+ }
+ harness.check (ok);
+ }
+}
diff --git a/gnu/testlet/java/util/ResourceBundle/.cvsignore b/gnu/testlet/java/util/ResourceBundle/.cvsignore
new file mode 100644
index 00000000..6b468b62
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/.cvsignore
@@ -0,0 +1 @@
+*.class
diff --git a/gnu/testlet/java/util/ResourceBundle/CVS/Entries b/gnu/testlet/java/util/ResourceBundle/CVS/Entries
new file mode 100644
index 00000000..ed3b31e4
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/CVS/Entries
@@ -0,0 +1,36 @@
+/.cvsignore/1.1/Wed Dec 9 12:09:38 1998//
+/Resource1.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource10_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource11.java/1.1/Thu Oct 21 01:30:11 2004//
+/Resource11.properties/1.1/Thu Oct 21 01:30:11 2004//
+/Resource2_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource3_bo.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_en_CA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_jp.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_jp_JA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_jp_JA_WIN.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource4_jp_JA_WIN_95.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5_en_CA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5_jp.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5_jp_JA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource5_jp_JA_WIN.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource6.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource6_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource6_en_CA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource6_jp.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource6_jp_JA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource7.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource7_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource7_en_CA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource7_jp.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource8.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource8_en.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource8_en_CA.java/1.3/Thu Jun 3 14:31:15 2004//
+/Resource9_en.java/1.3/Thu Jun 3 14:31:16 2004//
+/Resource9_en_CA.java/1.3/Thu Jun 3 14:31:16 2004//
+/getBundle.java/1.9/Thu Sep 24 13:22:06 2009//
+D
diff --git a/gnu/testlet/java/util/ResourceBundle/CVS/Repository b/gnu/testlet/java/util/ResourceBundle/CVS/Repository
new file mode 100644
index 00000000..8a0bdbfc
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/ResourceBundle
diff --git a/gnu/testlet/java/util/ResourceBundle/CVS/Root b/gnu/testlet/java/util/ResourceBundle/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource1.java b/gnu/testlet/java/util/ResourceBundle/Resource1.java
new file mode 100644
index 00000000..7593216c
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource1.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource1 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource10_en.java b/gnu/testlet/java/util/ResourceBundle/Resource10_en.java
new file mode 100644
index 00000000..6ea9461b
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource10_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource10_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource11.java b/gnu/testlet/java/util/ResourceBundle/Resource11.java
new file mode 100644
index 00000000..c64cc10f
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource11.java
@@ -0,0 +1,27 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Red Hat, Inc.
+
+// 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.java.util.ResourceBundle;
+
+// Note: we don't extend ResourceBundle.
+public class Resource11
+{
+}
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource11.properties b/gnu/testlet/java/util/ResourceBundle/Resource11.properties
new file mode 100644
index 00000000..f35e65ee
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource11.properties
@@ -0,0 +1 @@
+class = Maude
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource2_en.java b/gnu/testlet/java/util/ResourceBundle/Resource2_en.java
new file mode 100644
index 00000000..0a53108a
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource2_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource2_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource3_bo.java b/gnu/testlet/java/util/ResourceBundle/Resource3_bo.java
new file mode 100644
index 00000000..89444d4f
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource3_bo.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource3_bo extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4.java b/gnu/testlet/java/util/ResourceBundle/Resource4.java
new file mode 100644
index 00000000..3b90b9a3
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_en.java b/gnu/testlet/java/util/ResourceBundle/Resource4_en.java
new file mode 100644
index 00000000..91571b47
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource4_en_CA.java
new file mode 100644
index 00000000..efc3e315
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_jp.java b/gnu/testlet/java/util/ResourceBundle/Resource4_jp.java
new file mode 100644
index 00000000..4b2d7019
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_jp.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_jp extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA.java b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA.java
new file mode 100644
index 00000000..86da6257
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_jp_JA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN.java b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN.java
new file mode 100644
index 00000000..d8ca383d
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_jp_JA_WIN extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN_95.java b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN_95.java
new file mode 100644
index 00000000..ee55e39e
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource4_jp_JA_WIN_95.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource4_jp_JA_WIN_95 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5.java b/gnu/testlet/java/util/ResourceBundle/Resource5.java
new file mode 100644
index 00000000..4b81de96
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5_en.java b/gnu/testlet/java/util/ResourceBundle/Resource5_en.java
new file mode 100644
index 00000000..0ab806e6
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource5_en_CA.java
new file mode 100644
index 00000000..76bd734b
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5_jp.java b/gnu/testlet/java/util/ResourceBundle/Resource5_jp.java
new file mode 100644
index 00000000..f4fcd70a
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5_jp.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5_jp extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA.java b/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA.java
new file mode 100644
index 00000000..470d2020
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5_jp_JA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA_WIN.java b/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA_WIN.java
new file mode 100644
index 00000000..ccb3e16e
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource5_jp_JA_WIN.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource5_jp_JA_WIN extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource6.java b/gnu/testlet/java/util/ResourceBundle/Resource6.java
new file mode 100644
index 00000000..ddcd5c33
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource6.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource6 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource6_en.java b/gnu/testlet/java/util/ResourceBundle/Resource6_en.java
new file mode 100644
index 00000000..21f96f9e
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource6_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource6_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource6_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource6_en_CA.java
new file mode 100644
index 00000000..0ac31290
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource6_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource6_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource6_jp.java b/gnu/testlet/java/util/ResourceBundle/Resource6_jp.java
new file mode 100644
index 00000000..bb38e1ab
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource6_jp.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource6_jp extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource6_jp_JA.java b/gnu/testlet/java/util/ResourceBundle/Resource6_jp_JA.java
new file mode 100644
index 00000000..fe16c467
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource6_jp_JA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource6_jp_JA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource7.java b/gnu/testlet/java/util/ResourceBundle/Resource7.java
new file mode 100644
index 00000000..dda5408c
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource7.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource7 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource7_en.java b/gnu/testlet/java/util/ResourceBundle/Resource7_en.java
new file mode 100644
index 00000000..9104abf6
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource7_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource7_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource7_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource7_en_CA.java
new file mode 100644
index 00000000..7e2a880d
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource7_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource7_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource7_jp.java b/gnu/testlet/java/util/ResourceBundle/Resource7_jp.java
new file mode 100644
index 00000000..9ce542e7
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource7_jp.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource7_jp extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource8.java b/gnu/testlet/java/util/ResourceBundle/Resource8.java
new file mode 100644
index 00000000..2efea938
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource8.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource8 extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource8_en.java b/gnu/testlet/java/util/ResourceBundle/Resource8_en.java
new file mode 100644
index 00000000..fc2f7536
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource8_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource8_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource8_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource8_en_CA.java
new file mode 100644
index 00000000..2a3b2ea2
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource8_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource8_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource9_en.java b/gnu/testlet/java/util/ResourceBundle/Resource9_en.java
new file mode 100644
index 00000000..52a3f2b7
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource9_en.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource9_en extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/Resource9_en_CA.java b/gnu/testlet/java/util/ResourceBundle/Resource9_en_CA.java
new file mode 100644
index 00000000..5dac0a66
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/Resource9_en_CA.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 1998 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+
+public class Resource9_en_CA extends ResourceBundle
+{
+ protected Object handleGetObject(String key)
+ throws MissingResourceException
+ {
+ if (key.compareTo ("class") == 0)
+ return this.getClass().getName();
+ else
+ throw new MissingResourceException ("s", "className", "key");
+ }
+
+ public Enumeration getKeys()
+ {
+ return null;
+ }
+}
+
diff --git a/gnu/testlet/java/util/ResourceBundle/getBundle.java b/gnu/testlet/java/util/ResourceBundle/getBundle.java
new file mode 100644
index 00000000..cbad25c9
--- /dev/null
+++ b/gnu/testlet/java/util/ResourceBundle/getBundle.java
@@ -0,0 +1,233 @@
+// Tags: JDK1.1
+// Uses: Resource1 Resource2_en Resource3_bo Resource4_en Resource4_en_CA Resource4 Resource4_jp Resource4_jp_JA Resource4_jp_JA_WIN Resource4_jp_JA_WIN_95 Resource5_en Resource5_en_CA Resource5 Resource5_jp Resource5_jp_JA Resource5_jp_JA_WIN Resource6_en Resource6_en_CA Resource6 Resource6_jp Resource6_jp_JA Resource7_en Resource7_en_CA Resource7 Resource7_jp Resource8_en Resource8_en_CA Resource8 Resource9_en Resource9_en_CA Resource10_en Resource11
+
+// Copyright (C) 1998, 2004 Cygnus Solutions
+
+// 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.java.util.ResourceBundle;
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.net.URLClassLoader;
+import java.net.URL;
+import java.net.MalformedURLException;
+
+public class getBundle implements Testlet
+{
+ static private final String MISSING = "**missing**";
+
+ // Load the resource bundle BUNDLE, and return it's class name.
+ // Return MISSING if it cannot be loaded.
+ private String loadCheck (String bundle)
+ {
+ ResourceBundle rb;
+ try
+ {
+ rb = ResourceBundle.getBundle (bundle);
+ }
+ catch (MissingResourceException ex)
+ {
+ return MISSING;
+ }
+ return rb.getString ("class");
+ }
+
+ // Load the resource bundle BUNDLE with locale LOCALE , and return
+ // it's class name. Return MISSING if it cannot be loaded.
+ private String loadCheck (String bundle, Locale locale)
+ {
+ ResourceBundle rb;
+ try
+ {
+ rb = ResourceBundle.getBundle (bundle, locale);
+ }
+ catch (MissingResourceException ex)
+ {
+ return MISSING;
+ }
+ return rb.getString ("class");
+ }
+
+ private String loadCheck (String bundle, ClassLoader loader)
+ {
+ ResourceBundle rb;
+ try
+ {
+ rb = ResourceBundle.getBundle (bundle, Locale.getDefault (),
+ loader);
+ }
+ catch (MissingResourceException ex)
+ {
+ return MISSING;
+ }
+ return rb.getString ("class");
+ }
+
+ // This is a simple helper function to save typing below.
+ private String c (String bundle)
+ {
+ return ("gnu.testlet.java.util.ResourceBundle." + bundle);
+ }
+
+ public void test (TestHarness harness)
+ {
+ // Save the default locale, and restore it after this test.
+ Locale defaultLocale = Locale.getDefault ();
+
+ // Try loading a few resource bundles with a default locale of
+ // Canada.
+ Locale.setDefault (Locale.CANADA);
+ harness.checkPoint ("with locale of Canada");
+ harness.check (loadCheck (c ("Resource1")), c ("Resource1"));
+ harness.check (loadCheck (c ("Resource1"), Locale.CANADA),
+ c ("Resource1"));
+ harness.check (loadCheck (c ("Resource1"), Locale.JAPAN),
+ c ("Resource1"));
+ harness.check (loadCheck (c ("Resource2"), Locale.CANADA),
+ c ("Resource2_en"));
+ harness.check (loadCheck (c ("Resource2"), Locale.JAPAN),
+ c ("Resource2_en"));
+ harness.check (loadCheck (c ("Resource3"), Locale.JAPAN),
+ MISSING);
+
+ // Try loading a few resource bundles with a default locale of
+ // France.
+ Locale.setDefault (Locale.FRANCE);
+ harness.checkPoint ("with locale of France");
+ harness.check (loadCheck (c ("Resource1")), c ("Resource1"));
+ harness.check (loadCheck (c ("Resource1"), Locale.CANADA),
+ c ("Resource1"));
+ harness.check (loadCheck (c ("Resource1"), Locale.JAPAN),
+ c ("Resource1"));
+ harness.check (loadCheck (c ("Resource2"), Locale.CANADA),
+ c ("Resource2_en"));
+ harness.check (loadCheck (c ("Resource2"), Locale.JAPAN),
+ MISSING);
+ harness.check (loadCheck (c ("Resource3"), Locale.JAPAN),
+ MISSING);
+
+ // Set the locale back to Canada, and make sure resources are loaded
+ // back in the proper order.
+ Locale.setDefault (Locale.CANADA);
+
+ // Create a test Locale
+ Locale testLocale = new Locale("jp", "JA", "WIN");
+
+ // These are based on a sample from "The Java Class Libraries,
+ // Second Edition", page 1437
+ // Note that child variant (e.g. WIN_95) seem not to be supported
+ // anymore so these tests are disabled now.
+ harness.checkPoint ("book sample");
+ harness.check (loadCheck (c ("Resource4"), testLocale),
+ c ("Resource4_jp_JA_WIN"));
+ harness.check (loadCheck (c ("Resource5"), testLocale),
+ c ("Resource5_jp_JA_WIN"));
+ harness.check (loadCheck (c ("Resource6"), testLocale),
+ c ("Resource6_jp_JA"));
+ harness.check (loadCheck (c ("Resource7"), testLocale),
+ c ("Resource7_jp"));
+ harness.check (loadCheck (c ("Resource8"), testLocale),
+ c ("Resource8_en_CA"));
+ harness.check (loadCheck (c ("Resource9"), testLocale),
+ c ("Resource9_en_CA"));
+ harness.check (loadCheck (c ("Resource10"), testLocale),
+ c ("Resource10_en"));
+
+ // Based on a bug that change the case of the variant of a Locale.
+ // Note lower case "win".
+ harness.checkPoint ("low case locale");
+ testLocale = new Locale("jp", "JA", "win");
+ harness.check (loadCheck (c ("Resource4"), testLocale),
+ c ("Resource4_jp_JA"));
+
+ // Null pointer checks
+ harness.checkPoint ("null pointers");
+
+ try
+ {
+ ResourceBundle.getBundle (null);
+ harness.check (false);
+ }
+ catch (NullPointerException ex)
+ {
+ harness.check (true);
+ }
+
+ try
+ {
+ // The cast avoids ambiguity with JDK 1.6.
+ ResourceBundle.getBundle (c ("Resource1"), (Locale) null);
+ harness.check (false);
+ }
+ catch (NullPointerException ex)
+ {
+ harness.check (true);
+ }
+
+ try
+ {
+ // The cast avoids ambiguity with JDK 1.6.
+ ResourceBundle.getBundle ("no such resource", (Locale) null);
+ harness.check (false);
+ }
+ catch (NullPointerException ex)
+ {
+ harness.check (true);
+ }
+
+ try
+ {
+ ResourceBundle.getBundle (null, Locale.JAPAN);
+ harness.check (false);
+ }
+ catch (NullPointerException ex)
+ {
+ harness.check (true);
+ }
+
+ // Restore the default locale.
+ Locale.setDefault (defaultLocale);
+
+ // Try loading a bundle where we have a class that doesn't
+ // extend ResourceBundle, but we do have a backup properties
+ // file. This may seem strange, but actual applications
+ // (Eclipse) rely on this behavior.
+ harness.checkPoint("shadowing class");
+ try
+ {
+ URL u = harness.getResourceFile ("").toURL ();
+ URLClassLoader loader =
+ new URLClassLoader(new URL[] { u },
+ getBundle.class.getClassLoader());
+ harness.check (loadCheck (c ("Resource11"), loader), "Maude");
+ }
+ catch (MalformedURLException _)
+ {
+ harness.check(false);
+ }
+ catch (ResourceNotFoundException _)
+ {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/java/util/Scanner/Base.java b/gnu/testlet/java/util/Scanner/Base.java
new file mode 100644
index 00000000..2f0bb7dd
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/Base.java
@@ -0,0 +1,82 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: not-a-test
+
+package gnu.testlet.java.util.Scanner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+/**
+ * @author E0327023 Hernadi Laszlo @ 14.02.2007 - 12:13:06
+ */
+public abstract class Base implements Testlet
+{
+ protected TestHarness myHarness = null;
+
+ protected final boolean doCleanUP = false;
+
+ protected String fileName = null;
+
+ protected File aktFile;
+
+ protected boolean isEnabled = true;
+ protected boolean forceAll = true;
+
+ public void test (final TestHarness harness)
+ {
+ if (!isEnabled && !forceAll)
+ {
+ System.out.println ("\t\tTest Disabled...");
+ return;
+ }
+
+ this.myHarness = harness;
+ if (this.fileName != null)
+ {
+ this.aktFile = new File (myHarness.getTempDirectory() +
+ myHarness.getSeparator() +
+ this.fileName);
+ myHarness.debug("Using file: " + aktFile.toString());
+ if (this.doCleanUP)
+ {
+ this.aktFile.deleteOnExit ();
+ }
+ }
+ try
+ {
+ doTest ();
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace ();
+ myHarness.fail(e.toString());
+ }
+ }
+
+ protected void setDefaultFilename ()
+ {
+ this.fileName = this.getClass ().getName () + ".txt";
+ }
+
+ protected abstract void doTest ();
+}
diff --git a/gnu/testlet/java/util/Scanner/BigDecimalInteger.java b/gnu/testlet/java/util/Scanner/BigDecimalInteger.java
new file mode 100644
index 00000000..fbb633e0
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/BigDecimalInteger.java
@@ -0,0 +1,111 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 13:37:48
+ *
+ */
+public class BigDecimalInteger extends Base
+{
+
+ /**
+ * The amount of BigDecimals and BigIntegers to generate and test
+ */
+ private final static int AMOUNT = 5000;
+
+ public BigDecimalInteger ()
+ {
+ this.isEnabled = false;
+ }
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ BigDecimal[]decimals = new BigDecimal[AMOUNT];
+ BigInteger[]integers = new BigInteger[decimals.length];
+ long runID = System.currentTimeMillis ();
+ Random rand = new Random (runID);
+ StringBuilder sBuff = new StringBuilder (1000);
+ String inStr;
+ int i;
+ BigDecimal tmpDec;
+ BigInteger tmpInt;
+ boolean fund;
+ boolean failed;
+ int runsLeft = 10;
+
+ for (i = 0; i < decimals.length; i++)
+ {
+ decimals[i] = new BigDecimal (rand.nextDouble () - 0.5);
+ integers[i] = BigInteger.valueOf (rand.nextInt ());
+ }
+
+ sBuff.append (decimals[0] + " " + integers[0]);
+ for (i = 1; i < decimals.length; i++)
+ {
+ sBuff.append (" " + decimals[i] + " " + integers[i]);
+ }
+
+ inStr = sBuff.toString ();
+ Scanner s = new Scanner (inStr);
+
+ i = 0;
+ while (s.hasNext () && runsLeft > 0)
+ {
+ failed = false;
+ fund = s.hasNextBigDecimal();
+ myHarness.check(fund, "hasNextBigDecimal()");
+ tmpDec = s.nextBigDecimal ();
+ myHarness.check(tmpDec, decimals[i], tmpDec + " == " + decimals[i]);
+ fund = s.hasNextBigInteger();
+ myHarness.check(fund, "hasNextBigInteger()");
+ tmpInt = s.nextBigInteger ();
+ myHarness.check(tmpInt, integers[i], tmpInt + " == " + integers[i]);
+ if (!fund)
+ {
+ this.myHarness.fail ("\"" + s.next () +
+ "\" is neither BigDecimal nor BigInteger");
+ }
+ i++;
+ if (failed)
+ {
+ runsLeft--;
+ }
+ }
+ this.myHarness.check (i, decimals.length,
+ "not all read (" + i + " / " + decimals.length +
+ ")");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/Booleans.java b/gnu/testlet/java/util/Scanner/Booleans.java
new file mode 100644
index 00000000..5bde26c0
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/Booleans.java
@@ -0,0 +1,83 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+// Tags: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 13:10:31
+ *
+ */
+public class Booleans extends Base
+{
+ /**
+ * The amount of booleans to generate and test.
+ */
+ private final static int AMOUNT = 100;
+
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ boolean[]values = new boolean[AMOUNT];
+ boolean hasNext;
+ boolean aktValue;
+ String inStr;
+ int i;
+ Random rand = new Random (System.currentTimeMillis ());
+
+ for (i = 0; i < values.length; i++)
+ {
+ values[i] = rand.nextBoolean ();
+ }
+ inStr = "" + values[0];
+
+ for (i = 1; i < values.length; i++)
+ {
+ inStr += " " + values[i];
+ }
+
+ Scanner s = new Scanner (inStr);
+ i = 0;
+ hasNext = s.hasNextBoolean ();
+ while (hasNext)
+ {
+ aktValue = s.nextBoolean ();
+ this.myHarness.check (aktValue, values[i],
+ "nextBoolean() is wrong : " + aktValue +
+ " != " + values[i]);
+ i++;
+ hasNext = s.hasNextBoolean ();
+ }
+ this.myHarness.check (i, values.length,
+ "not all values (" + i + " / " + values.length +
+ ")");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/CVS/Entries b/gnu/testlet/java/util/Scanner/CVS/Entries
new file mode 100644
index 00000000..37c6f270
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/CVS/Entries
@@ -0,0 +1,17 @@
+/Base.java/1.2/Mon Sep 1 23:03:30 2008//
+/BigDecimalInteger.java/1.2/Mon Sep 1 23:03:30 2008//
+/Booleans.java/1.1/Mon Sep 1 22:22:39 2008//
+/DoubleFloat.java/1.1/Mon Sep 1 22:22:39 2008//
+/FileInput.java/1.1/Mon Sep 1 22:22:39 2008//
+/FindPattern.java/1.1/Mon Sep 1 22:22:39 2008//
+/FindWithinHorizon.java/1.1/Mon Sep 1 22:22:39 2008//
+/FishString.java/1.1/Mon Sep 1 22:22:39 2008//
+/Inputs.java/1.1/Mon Sep 1 22:22:39 2008//
+/LotsOfInts.java/1.1/Mon Sep 1 22:22:39 2008//
+/LotsOfPMInts.java/1.1/Mon Sep 1 22:22:39 2008//
+/LotsOfPMLong.java/1.1/Mon Sep 1 22:22:39 2008//
+/LotsOfPMShort.java/1.1/Mon Sep 1 22:22:39 2008//
+/MultiLine.java/1.1/Mon Sep 1 22:22:39 2008//
+/Radix.java/1.1/Mon Sep 1 22:22:39 2008//
+/SkipPattern.java/1.1/Mon Sep 1 22:22:39 2008//
+D
diff --git a/gnu/testlet/java/util/Scanner/CVS/Repository b/gnu/testlet/java/util/Scanner/CVS/Repository
new file mode 100644
index 00000000..b032322c
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Scanner
diff --git a/gnu/testlet/java/util/Scanner/CVS/Root b/gnu/testlet/java/util/Scanner/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Scanner/DoubleFloat.java b/gnu/testlet/java/util/Scanner/DoubleFloat.java
new file mode 100644
index 00000000..8a00da02
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/DoubleFloat.java
@@ -0,0 +1,117 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 21:06:41
+ *
+ */
+public class DoubleFloat extends Base
+{
+ /**
+ * The amount of doubles and floats to generate and test.
+ */
+ private final static int AMOUNT = 10000;
+
+
+ public DoubleFloat ()
+ {
+ this.isEnabled = false;
+ }
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ double[] doubleZ = new double[AMOUNT];
+ float[] floatZ = new float[doubleZ.length];
+ long runID = System.currentTimeMillis ();
+ Random rand = new Random (runID);
+ int i;
+ StringBuffer tmpStr = new StringBuffer (1000);
+ String inStr;
+
+ double aktDouble;
+ float aktFloat;
+
+ for (i = 0; i < doubleZ.length; i++)
+ {
+ doubleZ[i] = rand.nextDouble () - 0.5d;
+ floatZ[i] = rand.nextFloat () - 0.5f;
+ }
+
+ tmpStr.append (doubleZ[0] + " " + floatZ[0]);
+ for (i = 1; i < doubleZ.length; i++)
+ {
+ tmpStr.append (" " + doubleZ[i] + " " + floatZ[i]);
+ }
+
+ inStr = tmpStr.toString ();
+ Scanner s = new Scanner (inStr);
+ //s.setUseLocale (false);
+// Scanner s = new Scanner(inStr);
+
+ i = 0;
+ while (s.hasNext () && i < doubleZ.length)
+ {
+ if (s.hasNextDouble ())
+ {
+ aktDouble = s.nextDouble ();
+ this.myHarness.check (aktDouble, doubleZ[i],
+ "#" + i + " : bad nextDouble() (" +
+ aktDouble + " != " + doubleZ[i]);
+ }
+ else
+ {
+ this.myHarness.fail ("#" + i + " : not double... (" + s.next () +
+ ")");
+ }
+ if (s.hasNextFloat ())
+ {
+ aktFloat = s.nextFloat ();
+ this.myHarness.check (aktFloat, floatZ[i],
+ "#" + i + " : bad nextFloat() (" +
+ aktFloat + " != " + floatZ[i]);
+ }
+ else
+ {
+ this.myHarness.fail ("#" + i + " : not float... (" + s.next () +
+ ")");
+ }
+ i++;
+ }
+
+ if (i != doubleZ.length)
+ {
+ this.myHarness.fail ("not all (" + i + " / " + doubleZ.length);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/FileInput.class.hide b/gnu/testlet/java/util/Scanner/FileInput.class.hide
new file mode 100644
index 00000000..d592595c
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/FileInput.class.hide
Binary files differ
diff --git a/gnu/testlet/java/util/Scanner/FileInput.java b/gnu/testlet/java/util/Scanner/FileInput.java
new file mode 100644
index 00000000..6a5c57b1
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/FileInput.java
@@ -0,0 +1,100 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 14.02.2007 - 12:20:18
+ *
+ */
+public class FileInput extends Base
+{
+ public FileInput ()
+ {
+ setDefaultFilename ();
+ }
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("File Input");
+
+ String[]testWords =
+ {
+ "This", "is", "a", "simple", "Test", "don't", "panik", "it's", "just",
+ "a", "Teset"};
+ testWords[0] = testWords[0].trim ();
+ String testString = testWords[0];
+ String tmpStr;
+ int i;
+
+ for (i = 1; i < testWords.length; i++)
+ {
+ testWords[i] = testWords[i].trim ();
+ testString += " " + testWords[i].trim ();
+ }
+
+ try
+ {
+ FileOutputStream fos = new FileOutputStream (this.aktFile);
+ fos.write (testString.getBytes ());
+ fos.flush ();
+ fos.close ();
+ Scanner s = new Scanner (aktFile);
+ i = 0;
+ while (s.hasNext ())
+ {
+ tmpStr = s.next ();
+ this.myHarness.check (tmpStr, testWords[i],
+ "next() -> \"" + tmpStr + "\" != \"" +
+ testWords[i] + "\"");
+ // System.out.println("\"" + tmpStr + "\" ?= \"" + testWords[i] + "\"");
+ i++;
+ }
+ this.myHarness.check (i, testWords.length,
+ "Incomplete read... (" + i + " / " +
+ testWords.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/FindPattern.java b/gnu/testlet/java/util/Scanner/FindPattern.java
new file mode 100644
index 00000000..20bb0de2
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/FindPattern.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 19.02.2007 - 03:16:19
+ *
+ */
+public class FindPattern extends Base
+{
+
+ private static final String FISH_STR = "1 fish 2 fish red fish blue fish "; //$NON-NLS-1$
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ Scanner s3 = new Scanner (FISH_STR);
+ String pattern1 = "\\d+"; // "(\\d+) fish ";
+ String pattern2 = "\\w+"; // "(\\w+) fish ";
+ String[] patterns =
+ { null, pattern1, pattern1, pattern2, pattern2};
+ String[]values =
+ { null, "1", "2", "red", "blue"}; // the null is required...
+ String tmpStr;
+ boolean rc;
+ int i;
+
+ i = 1;
+ s3.useDelimiter (" fish ");
+ do
+ {
+ rc = s3.hasNext (patterns[i]);
+ myHarness.check(rc, "Next item doesn't match " + patterns[i]);
+ if (!rc) myHarness.fail("Stopping early; encountered \"" + s3.next() + "\"");
+ tmpStr = s3.next (patterns[i]);
+ myHarness.check(tmpStr, values[i], "wrong result : \"" + tmpStr + "\" != \"" +
+ values[i] + "\"");
+ i++;
+ }
+ while (rc && i < patterns.length);
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/FindWithinHorizon.java b/gnu/testlet/java/util/Scanner/FindWithinHorizon.java
new file mode 100644
index 00000000..5718bc7e
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/FindWithinHorizon.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 24.02.2007 - 20:10:24
+ *
+ */
+public class FindWithinHorizon extends Base
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ String fishString = "1 fish 2 fish red fish blue fish";
+ Scanner s = new Scanner (fishString);
+ String tmpStr = "";
+ int i;
+
+ for (i = 0; i < fishString.length (); i++)
+ {
+ // from : http://www.cs.princeton.edu/introcs/15inout/In.java.html
+ // (?s) for DOTALL mode so . matches any character, including a line termination character
+ // 1 says look only one character ahead
+ // consider precompiling the pattern
+ tmpStr += s.findWithinHorizon ("(?s).", 1);
+ }
+ myHarness.check (tmpStr.equals(fishString), "\"" + tmpStr + "\" == \"" + fishString + "\"");
+ if (s.hasNext ())
+ myHarness.fail ("should not has next...");
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/FishString.java b/gnu/testlet/java/util/Scanner/FishString.java
new file mode 100644
index 00000000..e7b6e007
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/FishString.java
@@ -0,0 +1,89 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import gnu.testlet.Testlet;
+
+import java.util.Scanner;
+
+import java.util.regex.MatchResult;
+
+/**
+ * @author E0327023 Hernadi Laszlo @ 12.02.2007 - 23:00:30
+ */
+public class FishString extends Base
+{
+
+ @Override protected void doTest ()
+ {
+ String input = "1 fish 2 fish red fish blue fish";
+ String delimiter = "\\s*fish\\s*";
+ String tmpStr;
+ String[] values =
+ {
+ null, "1", "2", "red", "blue"}; // the null is required...
+ int i;
+
+ this.myHarness.checkPoint ("Fisch String [" + input + "]");
+ Scanner s1 = new Scanner (input);
+ s1.useDelimiter (delimiter);
+ tmpStr = s1.delimiter ().pattern ();
+ this.myHarness.check (tmpStr, delimiter,
+ "get / setDelimiter fail (\"" + tmpStr +
+ "\" != \"" + delimiter);
+ this.myHarness.check (s1.hasNext (), true, "first hasNext()");
+ this.myHarness.check (s1.hasNextInt (), true, "first hasNextInt()");
+ this.myHarness.check (s1.nextInt (), 1, "nextInt()");
+ this.myHarness.check (s1.hasNextInt (), true, "hasNextInt()");
+ this.myHarness.check (s1.hasNextBoolean (), false, "hasNextBoolean()");
+ this.myHarness.check (s1.hasNextByte (), true, "hasNextByte()");
+ this.myHarness.check (s1.nextInt (), 2, "2. nextInt()");
+ this.myHarness.check (s1.hasNext (), true, "3. hasNext()");
+ this.myHarness.check (s1.hasNextBigInteger (), false,
+ "hasNextBigInteger()");
+ this.myHarness.check (s1.next (), "red", "3. next()");
+ this.myHarness.check (s1.next (), "blue", "4. next()");
+ this.myHarness.check (s1.hasNext (), false, "letztes hasNext()");
+ s1.close ();
+
+ // Scanner s2 = new Scanner(input);
+ Scanner s2 = new Scanner (input);
+ s2.findInLine ("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
+ MatchResult mResult = s2.match ();
+ for (i = 1; i <= mResult.groupCount (); i++)
+ {
+ this.myHarness.check (mResult.group (i), values[i],
+ "wrong result : \"" + mResult.group (i) +
+ "\" != \"" + values[i] + "\"");
+ // System.out.println(mResult.group(i));
+ }
+ if (i != values.length)
+ {
+ this.myHarness.fail ("not all results... (" + i + " != " +
+ (values.length) + ")");
+ }
+ s2.close ();
+ }
+}
diff --git a/gnu/testlet/java/util/Scanner/Inputs.java b/gnu/testlet/java/util/Scanner/Inputs.java
new file mode 100644
index 00000000..8df768f0
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/Inputs.java
@@ -0,0 +1,227 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 26.02.2007 - 04:15:47
+ *
+ */
+public class Inputs extends Base
+{
+ /**
+ * The amount of long numbers to generate and test.
+ */
+ private final static int AMOUNT = 20000;
+
+ public Inputs ()
+ {
+ fileName = getClass().getName () + ".txt";
+ this.isEnabled = false;
+ }
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ long[] numbers = new long[AMOUNT];
+ Random r = new Random (System.currentTimeMillis ());
+ int i;
+ long tmp;
+ int errors;
+ final long max = 20000000000000L, mean = max >> 1;
+ StringBuffer tmpBuff = new StringBuffer (10000);
+ FileOutputStream fos = null;
+ Scanner s = null;
+
+ String[]charSets = {"windows-1252"};
+ String aktName;
+
+ int aktCS;
+
+ for (i = 0; i < numbers.length; i++)
+ {
+ tmp = ((long) (r.nextFloat () * max) - mean);
+ numbers[i] = tmp;
+ }
+ tmpBuff.insert (0, "" + numbers[0]);
+
+ for (i = 1; i < numbers.length; i++)
+ {
+ tmpBuff.append (" " + numbers[i]);
+ }
+
+ try
+ {
+ fos = new FileOutputStream (this.aktFile);
+ fos.write (tmpBuff.toString ().getBytes ());
+ fos.flush ();
+ fos.close ();
+
+// Scanner s = new Scanner (aktFile);
+
+ myHarness.debug ("Testing Readable input...");
+ errors = 0;
+ s = new Scanner (new FileReader (this.aktFile));
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ if (tmp != numbers[i])
+ {
+ errors++;
+ this.myHarness.fail ("Readable : nextLong() -> " + tmp +
+ " != " + numbers[i]);
+ }
+ i++;
+ }
+ if (errors == 0)
+ myHarness.debug ("all OK");
+ else
+ this.myHarness.fail (errors + " errors..");
+
+ myHarness.debug ("Testing ReadableByteChanel input...");
+ errors = 0;
+ s = new Scanner ((new FileInputStream (this.aktFile)).getChannel ());
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ if (tmp != numbers[i])
+ {
+ errors++;
+ this.myHarness.fail ("ReadableByteChanel : nextLong() -> " +
+ tmp + " != " + numbers[i]);
+ }
+ i++;
+ }
+ if (errors == 0)
+ myHarness.debug ("all OK");
+ else
+ this.myHarness.fail (errors + " errors..");
+
+ for (aktCS = 0; aktCS < charSets.length; aktCS++)
+ {
+ aktName = "Testing File + CharSet \"" + charSets[aktCS] + "\"";
+ myHarness.debug (aktName);
+ errors = 0;
+ s = new Scanner (this.aktFile, charSets[aktCS]);
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ if (tmp != numbers[i])
+ {
+ errors++;
+ this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+ " != " + numbers[i]);
+ }
+ i++;
+ }
+ if (errors == 0)
+ myHarness.debug ("all OK");
+ else
+ this.myHarness.fail (errors + " errors..");
+
+ aktName =
+ "Testing InputStream + CharSet \"" + charSets[aktCS] + "\"";
+ myHarness.debug (aktName);
+ errors = 0;
+ s =
+ new Scanner (new
+ ByteArrayInputStream (tmpBuff.toString ().
+ getBytes ()),
+ charSets[aktCS]);
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ if (tmp != numbers[i])
+ {
+ errors++;
+ this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+ " != " + numbers[i]);
+ }
+ i++;
+ }
+ if (errors == 0)
+ myHarness.debug ("all OK");
+ else
+ this.myHarness.fail (errors + " errors..");
+
+ aktName =
+ "Testing ReadableByteChanel + CharSet \"" + charSets[aktCS] +
+ "\"";
+ myHarness.debug (aktName);
+ errors = 0;
+ s =
+ new Scanner ((new FileInputStream (this.aktFile)).getChannel (),
+ charSets[aktCS]);
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ if (tmp != numbers[i])
+ {
+ errors++;
+ this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+ " != " + numbers[i]);
+ }
+ i++;
+ }
+ if (errors == 0)
+ myHarness.debug ("all OK");
+ else
+ this.myHarness.fail (errors + " errors..");
+
+ }
+
+ this.myHarness.check (i, numbers.length,
+ "Incomplete read... (" + i + " / " +
+ numbers.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/LotsOfInts.java b/gnu/testlet/java/util/Scanner/LotsOfInts.java
new file mode 100644
index 00000000..50c09606
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/LotsOfInts.java
@@ -0,0 +1,96 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfInts extends Base
+{
+ public LotsOfInts ()
+ {
+ this.isEnabled = false;
+ this.fileName = this.getClass ().getName () + ".txt";
+ }
+
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("Reading lots of positive ints");
+
+ int[] numbers = new int[100000];
+ Random r = new Random (System.currentTimeMillis ());
+ int i;
+ int tmp;
+ final int max = 1000000;
+ StringBuilder tmpBuff = new StringBuilder (10000);
+ FileOutputStream fos = null;
+
+ for (i = 0; i < numbers.length; i++)
+ {
+ tmp = (int) (r.nextFloat () * max);
+ numbers[i] = tmp;
+ }
+ tmpBuff.insert (0, "" + numbers[0]);
+
+ for (i = 1; i < numbers.length; i++)
+ {
+ tmpBuff.append (" " + numbers[i]);
+ }
+
+ try
+ {
+ fos = new FileOutputStream (this.aktFile);
+ fos.write (tmpBuff.toString ().getBytes ());
+ fos.flush ();
+ fos.close ();
+
+ Scanner s = new Scanner (this.aktFile);
+ i = 0;
+ while (s.hasNextInt ())
+ {
+ tmp = s.nextInt ();
+ this.myHarness.check (tmp, numbers[i],
+ "nextInt() -> " + tmp + " != " + numbers[i]);
+ i++;
+ }
+ this.myHarness.check (i, numbers.length,
+ "Incomplete read... (" + i + " / " +
+ numbers.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/LotsOfPMInts.java b/gnu/testlet/java/util/Scanner/LotsOfPMInts.java
new file mode 100644
index 00000000..5472a1ed
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/LotsOfPMInts.java
@@ -0,0 +1,98 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMInts extends Base
+{
+ public LotsOfPMInts ()
+ {
+ this.isEnabled = false;
+ setDefaultFilename ();
+ }
+
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("Reading lots of positive ints");
+
+ int[] numbers = new int[100000];
+ long runID = System.currentTimeMillis ();
+ Random rand = new Random (runID);
+ int i;
+ int tmp;
+ final int max = 1000000, mean = max >> 1;
+ StringBuilder tmpBuff = new StringBuilder (10000);
+ FileOutputStream fos = null;
+
+ myHarness.debug ("runID : " + runID);
+
+ for (i = 0; i < numbers.length; i++)
+ {
+ tmp = (int) (rand.nextFloat () * max) - mean;
+ numbers[i] = tmp;
+ }
+ tmpBuff.insert (0, "" + numbers[0]);
+
+ for (i = 1; i < numbers.length; i++)
+ {
+ tmpBuff.append (" " + numbers[i]);
+ }
+
+ try
+ {
+ fos = new FileOutputStream (this.aktFile);
+ fos.write (tmpBuff.toString ().getBytes ());
+ fos.flush ();
+ fos.close ();
+
+ Scanner s = new Scanner (aktFile);
+ i = 0;
+ while (s.hasNextInt ())
+ {
+ tmp = s.nextInt ();
+ this.myHarness.check (tmp, numbers[i],
+ "nextInt() -> " + tmp + " != " + numbers[i]);
+ i++;
+ }
+ this.myHarness.check (i, numbers.length,
+ "Incomplete read... (" + i + " / " +
+ numbers.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/LotsOfPMLong.java b/gnu/testlet/java/util/Scanner/LotsOfPMLong.java
new file mode 100644
index 00000000..41592003
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/LotsOfPMLong.java
@@ -0,0 +1,97 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMLong extends Base
+{
+ public LotsOfPMLong ()
+ {
+ this.fileName = this.getClass ().getName () + ".txt";
+ }
+
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("Reading lots of shorts");
+
+ long[] numbers = new long[20000];
+ long runID = System.currentTimeMillis ();
+ Random rand = new Random (runID);
+ int i;
+ long tmp;
+ final long max = 20000000000000L, mean = max >> 1;
+ StringBuilder tmpBuff = new StringBuilder (10000);
+ FileOutputStream fos = null;
+
+ myHarness.debug ("runID : " + runID);
+
+ for (i = 0; i < numbers.length; i++)
+ {
+ tmp = ((long) (rand.nextFloat () * max) - mean);
+ numbers[i] = tmp;
+ }
+ tmpBuff.insert (0, "" + numbers[0]);
+
+ for (i = 1; i < numbers.length; i++)
+ {
+ tmpBuff.append (" " + numbers[i]);
+ }
+
+ try
+ {
+ fos = new FileOutputStream (this.aktFile);
+ fos.write (tmpBuff.toString ().getBytes ());
+ fos.flush ();
+ fos.close ();
+
+ Scanner s = new Scanner (aktFile);
+ i = 0;
+ while (s.hasNextLong ())
+ {
+ tmp = s.nextLong ();
+ this.myHarness.check (tmp, numbers[i],
+ "nextLong() -> " + tmp + " != " + numbers[i]);
+ i++;
+ }
+ this.myHarness.check (i, numbers.length,
+ "Incomplete read... (" + i + " / " +
+ numbers.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/LotsOfPMShort.java b/gnu/testlet/java/util/Scanner/LotsOfPMShort.java
new file mode 100644
index 00000000..0105e00e
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/LotsOfPMShort.java
@@ -0,0 +1,99 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMShort extends Base
+{
+ public LotsOfPMShort ()
+ {
+ this.isEnabled = false;
+ this.fileName = this.getClass ().getName () + ".txt";
+ }
+
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("Reading lots of shorts");
+
+ short[] numbers = new short[10000];
+ long runID = System.currentTimeMillis ();
+ Random rand = new Random (runID);
+ int i;
+ short tmp;
+ final short max = 20000, mean = max >> 1;
+ StringBuilder tmpBuff = new StringBuilder (10000);
+ FileOutputStream fos = null;
+
+ myHarness.debug ("runID : " + runID);
+
+ for (i = 0; i < numbers.length; i++)
+ {
+ tmp = (short) ((short) (rand.nextFloat () * max) - mean);
+ numbers[i] = tmp;
+ }
+ tmpBuff.insert (0, "" + numbers[0]);
+
+ for (i = 1; i < numbers.length; i++)
+ {
+ tmpBuff.append (" " + numbers[i]);
+ }
+
+ try
+ {
+ fos = new FileOutputStream (this.aktFile);
+ fos.write (tmpBuff.toString ().getBytes ());
+ fos.flush ();
+ fos.close ();
+
+ Scanner s = new Scanner (aktFile);
+ i = 0;
+ while (s.hasNextShort ())
+ {
+ tmp = s.nextShort ();
+ this.myHarness.check (tmp, numbers[i],
+ "nextShort() -> " + tmp + " != " +
+ numbers[i]);
+ i++;
+ }
+ this.myHarness.check (i, numbers.length,
+ "Incomplete read... (" + i + " / " +
+ numbers.length + ")");
+ s.close ();
+ }
+ catch (FileNotFoundException e)
+ {
+ this.myHarness.fail ("Could not create file");
+ }
+ catch (IOException e)
+ {
+ this.myHarness.fail ("Could not write to File \"" +
+ this.aktFile.getName () + "\"");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/MultiLine.java b/gnu/testlet/java/util/Scanner/MultiLine.java
new file mode 100644
index 00000000..8a8acf7d
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/MultiLine.java
@@ -0,0 +1,74 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.ByteArrayInputStream;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 14.02.2007 - 12:17:51
+ *
+ */
+public class MultiLine extends Base
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ this.myHarness.checkPoint ("Multi line read - linewise");
+
+ String[] lines =
+ {
+ "1. Line: aaa bbb ccc", "2. line: aaa bbb aaa", "3. line: bbb aaa"};
+ String newLine = System.getProperty ("line.separator");
+ int i;
+ String tmp = lines[0];
+ String result;
+ byte[]buffer;
+
+ for (i = 1; i < lines.length; i++)
+ {
+ tmp += newLine + lines[i];
+ }
+ tmp += newLine;
+ buffer = tmp.getBytes ();
+ ByteArrayInputStream inStr = new ByteArrayInputStream (buffer);
+
+ Scanner s = new Scanner (inStr);
+ for (i = 0; i < lines.length; i++)
+ {
+ this.myHarness.check (s.hasNextLine (), true,
+ (i + 1) + ". hasNextLine()");
+ result = s.nextLine ();
+ this.myHarness.check (result, lines[i],
+ (i + 1) + ". nextLine() [" + result + "]");
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/Radix.java b/gnu/testlet/java/util/Scanner/Radix.java
new file mode 100644
index 00000000..d6c07518
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/Radix.java
@@ -0,0 +1,75 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+/**
+ *
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.math.BigInteger;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 26.02.2007 - 05:28:44
+ *
+ */
+public class Radix extends Base
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ String testStr = "5F 7FFF 4F3F3F6F 3F3F2EF3FFEE 4FFAAEEFFAA";
+ Scanner s = new Scanner (testStr);
+
+ myHarness.check(s.hasNextByte (16), "hasNextByte(16)");
+ myHarness.check(s.nextByte(16), 95, "nextByte is 95");
+ myHarness.check(s.hasNextShort(16), "hasNextShort(16)");
+ myHarness.check(s.nextShort(16), 32767, "nextShort is 32767");
+ myHarness.check(s.hasNextInt(16), "hasNextInt(16)");
+ myHarness.check(s.nextInt(16), 1329545071, "nextInt is 1329545071");
+ myHarness.check(s.hasNextLong(16), "hasNextLong(16)");
+ myHarness.check(s.nextLong(16), 69540603232238L, "nextLong is 69540603232238");
+ myHarness.check(s.hasNextBigInteger(16), "hasNextBigInteger(16)");
+ myHarness.check(s.nextBigInteger(16), BigInteger.valueOf(5496130961322L),
+ "nextBigInteger is 5496130961322");
+
+ s = new Scanner (testStr).useRadix (16);
+ myHarness.check(s.radix(), 16, "radix was not set to 16");
+
+ myHarness.check(s.hasNextByte (), "hasNextByte()");
+ myHarness.check(s.nextByte(), 95, "nextByte is 95");
+ myHarness.check(s.hasNextShort(), "hasNextShort()");
+ myHarness.check(s.nextShort(), 32767, "nextShort is 32767");
+ myHarness.check(s.hasNextInt(), "hasNextInt()");
+ myHarness.check(s.nextInt(), 1329545071, "nextInt is 1329545071");
+ myHarness.check(s.hasNextLong(), "hasNextLong()");
+ myHarness.check(s.nextLong(), 69540603232238L, "nextLong is 69540603232238");
+ myHarness.check(s.hasNextBigInteger(), "hasNextBigInteger()");
+ myHarness.check(s.nextBigInteger(), BigInteger.valueOf(5496130961322L),
+ "nextBigInteger is 5496130961322");
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Scanner/SkipPattern.java b/gnu/testlet/java/util/Scanner/SkipPattern.java
new file mode 100644
index 00000000..d2b36009
--- /dev/null
+++ b/gnu/testlet/java/util/Scanner/SkipPattern.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 19.02.2007 - 03:16:19
+ *
+ */
+public class SkipPattern extends Base
+{
+
+ private static final String FISH_STR = "1 fish 2 fish red fish blue fish "; //$NON-NLS-1$
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+ */
+ @Override protected void doTest ()
+ {
+ Scanner s = new Scanner(FISH_STR);
+ String[] values = { "1", "2", "red", "blue"};
+ int i;
+ String tmpStr;
+
+ for (i = 0; i < values.length; i++)
+ {
+ tmpStr = s.next ();
+ myHarness.check(tmpStr.equals (values[i]), tmpStr + " = " + values[i]);
+ s = s.skip (" ").skip ("fish");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/CVS/Entries b/gnu/testlet/java/util/SimpleTimeZone/CVS/Entries
new file mode 100644
index 00000000..c1ba00f2
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/CVS/Entries
@@ -0,0 +1,16 @@
+/check12.java/1.4/Sun Oct 31 21:16:11 2004//
+/check14.java/1.3/Sun Oct 31 21:16:11 2004//
+/clone.java/1.1/Sun Oct 31 21:40:42 2004//
+/constants.java/1.1/Sun Oct 31 21:40:42 2004//
+/constructors.java/1.2/Tue Jan 18 08:45:17 2005//
+/equals.java/1.3/Thu Feb 22 13:13:32 2007//
+/getDSTSavings.java/1.1/Sun Oct 31 21:40:42 2004//
+/getOffset.java/1.1/Sun Oct 31 21:40:42 2004//
+/getRawOffset.java/1.1/Sun Oct 31 21:40:42 2004//
+/hasSameRules.java/1.2/Thu Feb 22 13:13:32 2007//
+/hashCode.java/1.2/Thu Feb 22 13:13:32 2007//
+/inDaylightTime.java/1.2/Thu Feb 22 13:13:32 2007//
+/setDSTSavings.java/1.1/Sun Oct 31 21:40:42 2004//
+/setRawOffset.java/1.1/Sun Oct 31 21:40:42 2004//
+/setStartYear.java/1.1/Sun Oct 31 21:40:42 2004//
+D
diff --git a/gnu/testlet/java/util/SimpleTimeZone/CVS/Repository b/gnu/testlet/java/util/SimpleTimeZone/CVS/Repository
new file mode 100644
index 00000000..9400fac5
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/SimpleTimeZone
diff --git a/gnu/testlet/java/util/SimpleTimeZone/CVS/Root b/gnu/testlet/java/util/SimpleTimeZone/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/SimpleTimeZone/check12.java b/gnu/testlet/java/util/SimpleTimeZone/check12.java
new file mode 100644
index 00000000..78e567e4
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/check12.java
@@ -0,0 +1,155 @@
+// Test SimpleTimeZone.check12().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.2
+
+// Test features added by JDK 1.2
+
+package gnu.testlet.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+public class check12 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ int rawOff = -18000000; // 5 hours
+ int dstOff = 3600000; // 1 hour
+
+ // Create a timezone for UTC-5 with daylight savings starting on
+ // the second Monday, April 10 at 12 noon, ending the second
+ // Sunday, September 10, 12 noon in daylight savings, 1 hour
+ // shift.
+
+ // All three should represent the same period
+ SimpleTimeZone tz =
+ new SimpleTimeZone(rawOff, "Z1",
+ Calendar.APRIL, 10, 0, 43200000,
+ Calendar.SEPTEMBER, 10, 0, 43200000,
+ dstOff);
+
+ int off;
+
+ // Test 1/2 hour before dst
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 41400000);
+ harness.check(off, rawOff); // check 1
+
+ // Test 1/2 hour into dst
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 45000000);
+ harness.check(off, rawOff + dstOff); // check 2
+
+ // Test end rule
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 3
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 4
+
+ // Test that Nth dayofweek works with day of month rules
+ tz.setStartRule(Calendar.APRIL, 2, Calendar.SATURDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 41400000);
+ harness.check(off, rawOff); // check 5
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 45000000);
+ harness.check(off, rawOff + dstOff); // check 6
+
+ tz.setEndRule(Calendar.SEPTEMBER, 2, Calendar.FRIDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 7
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 8
+
+ // Test that -Nth dayofweek works with day of month rules
+ tz.setStartRule(Calendar.APRIL, -3, Calendar.SATURDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 41400000);
+ harness.check(off, rawOff); // check 9
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 10, Calendar.SATURDAY, 45000000);
+ harness.check(off, rawOff + dstOff); // check 10
+
+ tz.setEndRule(Calendar.SEPTEMBER, -3, Calendar.FRIDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 11
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 12
+
+ // Friday on or before April 5, 2004 is April 2
+ // Test arguments get overidden and perform correctly
+ tz.setStartRule(Calendar.APRIL, 5, Calendar.FRIDAY, 43200000, false);
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 2, Calendar.FRIDAY, 41400000);
+ harness.check(off, rawOff); // check 13
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 2, Calendar.FRIDAY, 45000000);
+ harness.check(off, rawOff + dstOff); // check 14
+
+ tz.setEndRule(Calendar.SEPTEMBER, -15, -Calendar.FRIDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 15
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 16
+
+ // Sunday on or after April 5, 2004 is April 11
+ // Test arguments get overidden and perform correctly
+ tz.setStartRule(Calendar.APRIL, 5, Calendar.SUNDAY, 43200000, true);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 11, Calendar.SUNDAY, 41400000);
+ harness.check(off, rawOff); // check 17
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 11, Calendar.SUNDAY, 45000000);
+ harness.check(off, rawOff + dstOff); // check 18
+
+ tz.setEndRule(Calendar.SEPTEMBER, 6, -Calendar.FRIDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 19
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.SEPTEMBER, 10, Calendar.FRIDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 20
+
+ // Currently broken in GCJ
+ tz.setEndRule(Calendar.SEPTEMBER, -6, -Calendar.TUESDAY, 43200000);
+
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.AUGUST, 31, Calendar.TUESDAY, 41400000 - dstOff);
+ harness.check(off, rawOff + dstOff); // check 21
+ off = tz.getOffset(GregorianCalendar.AD, 2004, Calendar.AUGUST, 31, Calendar.TUESDAY, 45000000 - dstOff);
+ harness.check(off, rawOff); // check 22
+
+ // This looks like a Date or DateFormat test, but is here because there was a bug in SimpleTimeZone
+ // PR libgcj/8321
+ Date date = new Date(1034705556525l);
+ TimeZone zone = TimeZone.getTimeZone("EST");
+ DateFormat dateFormat = DateFormat.getDateTimeInstance(
+ DateFormat.SHORT,
+ DateFormat.LONG,
+ Locale.US);
+ dateFormat.setTimeZone(zone);
+ harness.check(dateFormat.format(date), "10/15/02 2:12:36 PM EDT");
+ }
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/check14.java b/gnu/testlet/java/util/SimpleTimeZone/check14.java
new file mode 100644
index 00000000..54cd4efa
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/check14.java
@@ -0,0 +1,107 @@
+// Test SimpleTimeZone.check14().
+
+// Written by Jerry Quinn <jlquinn@optonline.net>
+
+// 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: JDK1.4
+
+// Verify the constructors added in JDK 1.4
+
+package gnu.testlet.java.util.SimpleTimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+public class check14 implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ int rawOff = -18000000; // 5 hours
+ int dstOff = 3600000; // 1 hour
+
+ // Create a timezone for UTC-5 with daylight savings starting on
+ // April 10 at 12 noon, ending September 10, 12 noon in daylight
+ // savings, 1 hour shift.
+
+ // All three should represent the same period
+ SimpleTimeZone tzwall =
+ new SimpleTimeZone(rawOff, "Z1",
+ 4, 10, 0, 43200000, SimpleTimeZone.WALL_TIME,
+ 9, 10, 0, 43200000, SimpleTimeZone.WALL_TIME,
+ dstOff);
+
+ // Start time is same between WALL_TIME and STANDARD_TIME. End
+ // time is in STANDARD_TIME, not DST. So ending at the same time
+ // really means ending earlier in standard time.
+ SimpleTimeZone tzstd =
+ new SimpleTimeZone(rawOff, "Z2",
+ Calendar.MAY, 10, 0, 43200000, SimpleTimeZone.STANDARD_TIME,
+ Calendar.OCTOBER, 10, 0, 39600000, SimpleTimeZone.STANDARD_TIME,
+ dstOff);
+
+ // Times are UTC, so later than
+ SimpleTimeZone tzutc =
+ new SimpleTimeZone(rawOff, "Z3",
+ Calendar.MAY, 10, 0, 61200000, SimpleTimeZone.UTC_TIME,
+ Calendar.OCTOBER, 10, 0, 57600000, SimpleTimeZone.UTC_TIME,
+ dstOff);
+
+ int wall;
+ int std;
+ int utc;
+
+ // test 1/2 hour before dst
+ wall = tzwall.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 41400000);
+ std = tzstd.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 41400000);
+ utc = tzutc.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 41400000);
+
+ harness.check(wall, rawOff); // check 1
+ harness.check(std, rawOff); // check 2
+ harness.check(utc, rawOff); // check 3
+
+ // test 1/2 hour into dst
+ wall = tzwall.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 45000000);
+ std = tzstd.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 45000000);
+ utc = tzutc.getOffset(GregorianCalendar.AD, 2000, Calendar.MAY, 10, Calendar.WEDNESDAY, 45000000);
+
+ harness.check(wall, rawOff + dstOff); // check 4
+ harness.check(std, rawOff + dstOff); // check 5
+ harness.check(utc, rawOff + dstOff); // check 6
+
+ // test 1/2 hour before fall back to standard time
+ wall = tzwall.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 41400000 - dstOff);
+ std = tzstd.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 41400000 - dstOff);
+ utc = tzutc.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 41400000 - dstOff);
+
+ harness.check(wall, rawOff + dstOff); // check 7
+ harness.check(std, rawOff + dstOff); // check 8
+ harness.check(utc, rawOff + dstOff); // check 9
+
+ // test 1/2 hour after fall back to standard time
+ wall = tzwall.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 45000000 - dstOff);
+ std = tzstd.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 45000000 - dstOff);
+ utc = tzutc.getOffset(GregorianCalendar.AD, 2000, Calendar.OCTOBER, 10, Calendar.TUESDAY, 45000000 - dstOff);
+
+ harness.check(wall, rawOff); // check 10
+ harness.check(std, rawOff); // check 11
+ harness.check(utc, rawOff); // check 12
+
+ }
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/clone.java b/gnu/testlet/java/util/SimpleTimeZone/clone.java
new file mode 100644
index 00000000..e3aba32a
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/clone.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the clone() method in the SimpleTimeZone class.
+ */
+public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ int t = 2 * 60 * 60 * 1000;
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Zone 1",
+ Calendar.JANUARY, 15, 0, t,
+ Calendar.NOVEMBER, 11, 0, t,
+ 60 * 60 * 1000);
+ SimpleTimeZone z2 = (SimpleTimeZone) z1.clone();
+ harness.check(z1.equals(z2));
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/constants.java b/gnu/testlet/java/util/SimpleTimeZone/constants.java
new file mode 100644
index 00000000..63664a4b
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/constants.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the constants in the SimpleTimeZone class.
+ */
+public class constants implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(SimpleTimeZone.STANDARD_TIME, 1);
+ harness.check(SimpleTimeZone.UTC_TIME, 2);
+ harness.check(SimpleTimeZone.WALL_TIME, 0);
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/constructors.java b/gnu/testlet/java/util/SimpleTimeZone/constructors.java
new file mode 100644
index 00000000..dd53ab91
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/constructors.java
@@ -0,0 +1,444 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the constructors in the SimpleTimeZone class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(int, String)");
+ SimpleTimeZone z = new SimpleTimeZone(1234, "Z1");
+ harness.check(z.getRawOffset(), 1234);
+ harness.check(z.getID(), "Z1");
+
+ // null id should throw exception
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int, String, int, int, int, int, int, int, int, int)");
+ SimpleTimeZone z = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(z.getRawOffset(), 1234);
+ harness.check(z.getID(), "Z1");
+ harness.check(z.useDaylightTime());
+ harness.check(z.getDSTSavings(), 60*60*1000);
+
+ // null id should throw exception
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, null, Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", 12, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 15, 0, 2*60*60*1000,
+ 12, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 33, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 33, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start n (for nth day-of-week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, 6, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, -6, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end n (for nth day-of-week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, 1, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 6, Calendar.MONDAY, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, 1, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, -6, Calendar.MONDAY, 2*60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(int, String, int, int, int, int, int, int, int, int, int)");
+ SimpleTimeZone z = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 123456);
+ harness.check(z.getRawOffset(), 1234);
+ harness.check(z.getID(), "Z1");
+ harness.check(z.useDaylightTime());
+ harness.check(z.getDSTSavings(), 123456);
+
+ // null id should throw exception
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, null, Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", 12, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 15, 0, 2*60*60*1000,
+ 15, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 33, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z", Calendar.APRIL, 15, 0, 2*60*60*1000,
+ Calendar.NOVEMBER, 33, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start n (for nth day of week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, 6, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, -6, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end n (for nth day of week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, 1, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, 6, Calendar.MONDAY, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, "Z",
+ Calendar.APRIL, -1, Calendar.MONDAY, 2*60*60*1000,
+ Calendar.NOVEMBER, -6, Calendar.MONDAY, 2*60*60*1000, 60*60*1000);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(int, String, int, int, int, int, int, int, int, int, int, int, int)");
+ SimpleTimeZone z = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 15, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(z.getRawOffset(), 1234);
+ harness.check(z.getID(), "Z1");
+ harness.check(z.useDaylightTime());
+ harness.check(z.getDSTSavings(), 123456);
+
+ // null id should throw exception
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(0, null,
+ Calendar.APRIL, 15, 0, 2*60*60*1000, SimpleTimeZone.WALL_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.WALL_TIME,
+ 60*60*1000);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ 12, 15, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 15, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 12, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid start day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 33, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid end day-of-month
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 15, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 33, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid n (for nth day-of-week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 6, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, -6, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 22, 0, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ // check for invalid n (for nth day-of-week)
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 1, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, 6, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ SimpleTimeZone z2 = new SimpleTimeZone(1234, "Z1",
+ Calendar.APRIL, 1, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, -6, Calendar.MONDAY, 2*60*60*1000, SimpleTimeZone.UTC_TIME,
+ 123456);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/equals.java b/gnu/testlet/java/util/SimpleTimeZone/equals.java
new file mode 100644
index 00000000..36d17276
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/equals.java
@@ -0,0 +1,144 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the equals() method in the SimpleTimeZone class.
+ */
+public class equals
+ implements Testlet
+{
+ /**
+ * Runs the tests.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ harness.check(!z1.equals(null));
+
+ SimpleTimeZone z2 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ harness.check(z1.equals(z2)); // check 1
+ harness.check(z2.equals(z1)); // check 2
+
+ int rawOffset1 = 5 * 60 * 60 * 1000;
+ int rawOffset2 = 6 * 60 * 60 * 1000;
+ int time1 = 2 * 60 * 60 * 1000;
+ int time2 = 3 * 60 * 60 * 1000;
+
+ z1 = new SimpleTimeZone(rawOffset1, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ z2 = new SimpleTimeZone(rawOffset1, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 3
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 4
+ z2 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 5
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 6
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 7
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 8
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 9
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 10
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 11
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 12
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 13
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 15, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 14
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 15, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 15
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time2, 3600000);
+ harness.check(!z1.equals(z2)); // check 16
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time2, 3600000);
+ harness.check(z1.equals(z2)); // check 17
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600000);
+ harness.check(!z1.equals(z2)); // check 18
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600000);
+ harness.check(z1.equals(z2)); // check 19
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600001);
+ harness.check(!z1.equals(z2)); // check 20
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600001);
+ harness.check(z1.equals(z2)); // check 21
+
+ }
+
+ // Tests converted from the SimpleTimeZoneTest.java attachment
+ // of http://gcc.gnu.org/ml/java-patches/2007-q1/msg00587.html.
+ private void test2(TestHarness harness)
+ {
+ TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT");
+ TimeZone.setDefault(utc);
+ Calendar cal = Calendar.getInstance(utc);
+
+ TimeZone tz2 = new SimpleTimeZone(
+ -12600000, "Test1",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.WALL_TIME,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ 3600000);
+
+ TimeZone tz3 = new SimpleTimeZone(
+ -12600000, "Test2",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000,
+ 3600000);
+
+ harness.check(!tz2.equals(tz3));
+
+ ((SimpleTimeZone) tz2).setEndRule(
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000);
+ tz3.setID("Test1");
+
+ harness.check(tz2.equals(tz3));
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/getDSTSavings.java b/gnu/testlet/java/util/SimpleTimeZone/getDSTSavings.java
new file mode 100644
index 00000000..b07ace7c
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/getDSTSavings.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the getDSTSavings() method in the SimpleTimeZone class.
+ */
+public class getDSTSavings implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Zone 1",
+ Calendar.APRIL, 26, 0, 2*60*60*1000,
+ Calendar.OCTOBER, 25, 0, 2*60*60*1000, 36000000);
+ z1.setDSTSavings(12345);
+ harness.check(z1.getDSTSavings(), 12345);
+
+ // here is a special case (bug?), the zone has no daylight saving rule, so
+ // setting the DSTSavings amount doesn't have any effect
+ SimpleTimeZone z2 = new SimpleTimeZone(5*60*60*1000, "Zone 2");
+ z2.setDSTSavings(12345);
+ harness.check(z2.getDSTSavings(), 0); // zero!
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/getOffset.java b/gnu/testlet/java/util/SimpleTimeZone/getOffset.java
new file mode 100644
index 00000000..b2738e2e
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/getOffset.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the getOffset() methods in the SimpleTimeZone class.
+ */
+public class getOffset implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ private void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int, int, int)");
+ int offset = -6 * 60 * 60 * 1000;
+ int t1 = 5 * 60 * 60 * 1000;
+ int t2 = 6 * 60 * 60 * 1000;
+ int dst = 2 * 60 * 60 * 1000;
+ SimpleTimeZone z = new SimpleTimeZone(offset, "Z1",
+ Calendar.APRIL, 26, 0, t1,
+ Calendar.OCTOBER, 25, 0, t2, dst);
+ harness.check(z.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 26, Calendar.MONDAY, t1 - 1000), offset);
+ harness.check(z.getOffset(GregorianCalendar.AD, 2004, Calendar.APRIL, 26, Calendar.MONDAY, t1 + 1000), offset + dst);
+ harness.check(z.getOffset(GregorianCalendar.AD, 2004, Calendar.OCTOBER, 25, Calendar.MONDAY, t2 - dst - 1000), offset + dst);
+ harness.check(z.getOffset(GregorianCalendar.AD, 2004, Calendar.OCTOBER, 25, Calendar.MONDAY, t2 - dst + 1000), offset);
+ }
+
+ private void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(Date)");
+ int offset = -6 * 60 * 60 * 1000;
+ int t1 = 5 * 60 * 60 * 1000;
+ int t2 = 6 * 60 * 60 * 1000;
+ int dst = 2 * 60 * 60 * 1000;
+ SimpleTimeZone z = new SimpleTimeZone(offset, "Z1",
+ Calendar.APRIL, 26, 0, t1,
+ Calendar.OCTOBER, 25, 0, t2, dst);
+ GregorianCalendar c = new GregorianCalendar(z);
+ c.set(2004, Calendar.APRIL, 26, 4, 59, 59);
+ long d1 = c.getTimeInMillis();
+ harness.check(z.getOffset(d1), offset);
+ harness.check(z.getOffset(d1 + 2000), offset + dst);
+
+ // to do : check end date
+ }
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/getRawOffset.java b/gnu/testlet/java/util/SimpleTimeZone/getRawOffset.java
new file mode 100644
index 00000000..a7751c43
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/getRawOffset.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the getRawOffset() method in the SimpleTimeZone class.
+ */
+public class getRawOffset implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(0, "Zone 1");
+ z1.setRawOffset(12345);
+ harness.check(z1.getRawOffset(), 12345);
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java b/gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java
new file mode 100644
index 00000000..f4aa1c32
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/hasSameRules.java
@@ -0,0 +1,138 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the hasSameRules() method in the SimpleTimeZone class.
+ */
+public class hasSameRules
+ implements Testlet
+{
+ /**
+ * Runs the tests.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ harness.check(!z1.hasSameRules(null));
+
+ SimpleTimeZone z2 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ harness.check(z1.hasSameRules(z2)); // check 1
+ harness.check(z2.hasSameRules(z1)); // check 2
+
+ int rawOffset1 = 5 * 60 * 60 * 1000;
+ int rawOffset2 = 6 * 60 * 60 * 1000;
+ int time1 = 2 * 60 * 60 * 1000;
+ int time2 = 3 * 60 * 60 * 1000;
+
+ z1 = new SimpleTimeZone(rawOffset1, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ z2 = new SimpleTimeZone(rawOffset1, "Z2", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 3
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 4
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.APRIL, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 5
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 6
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 5, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 7
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 8
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time1, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 9
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 10
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.SEPTEMBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 11
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 15, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 12
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 15, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 13
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time2, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 14
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time2, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 15
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600000);
+ harness.check(!z1.hasSameRules(z2)); // check 16
+ z2 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600000);
+ harness.check(z1.hasSameRules(z2)); // check 17
+
+ z1 = new SimpleTimeZone(rawOffset2, "Z1", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600001);
+ harness.check(!z1.hasSameRules(z2)); // check 18
+ z2 = new SimpleTimeZone(rawOffset2, "Z2", Calendar.MAY, 6, 0, time2, Calendar.OCTOBER, 16, 0, time1, 3600001);
+ harness.check(z1.hasSameRules(z2)); // check 19
+
+ }
+
+ // Tests converted from the SimpleTimeZoneTest.java attachment
+ // of http://gcc.gnu.org/ml/java-patches/2007-q1/msg00587.html.
+ private void test2(TestHarness harness)
+ {
+ TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT");
+ TimeZone.setDefault(utc);
+ Calendar cal = Calendar.getInstance(utc);
+
+ TimeZone tz2 = new SimpleTimeZone(
+ -12600000, "Test1",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.WALL_TIME,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ 3600000);
+
+ TimeZone tz3 = new SimpleTimeZone(
+ -12600000, "Test2",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000,
+ 3600000);
+
+ harness.check(!tz2.hasSameRules(tz3));
+
+ ((SimpleTimeZone) tz2).setEndRule(
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000);
+
+ harness.check(tz2.hasSameRules(tz3));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/SimpleTimeZone/hashCode.java b/gnu/testlet/java/util/SimpleTimeZone/hashCode.java
new file mode 100644
index 00000000..37f31b01
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/hashCode.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the hashCode() method in the SimpleTimeZone class.
+ */
+public class hashCode
+ implements Testlet
+{
+ /**
+ * Runs the tests.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ SimpleTimeZone z2 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Z1");
+ harness.check(z1.equals(z2));
+ harness.check(z1.hashCode(), z2.hashCode());
+ }
+
+ // Tests converted from the SimpleTimeZoneTest.java attachment
+ // of http://gcc.gnu.org/ml/java-patches/2007-q1/msg00587.html.
+ private void test2(TestHarness harness)
+ {
+ TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT");
+ TimeZone.setDefault(utc);
+ Calendar cal = Calendar.getInstance(utc);
+
+ TimeZone tz2 = new SimpleTimeZone(
+ -12600000, "Test1",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.WALL_TIME,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ 3600000);
+
+ TimeZone tz3 = new SimpleTimeZone(
+ -12600000, "Test2",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000,
+ 3600000);
+
+ harness.check(tz2.hashCode() != tz3.hashCode());
+
+ ((SimpleTimeZone) tz2).setEndRule(
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000);
+
+ harness.check(tz2.hashCode() == tz3.hashCode());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java b/gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java
new file mode 100644
index 00000000..120b22b9
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/inDaylightTime.java
@@ -0,0 +1,229 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * Some checks for the inDaylightTime() method in the SimpleTimeZone class.
+ */
+public class inDaylightTime implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ int offset = -6 * 60 * 60 * 1000;
+ int t1 = 5 * 60 * 60 * 1000;
+ int t2 = 6 * 60 * 60 * 1000;
+ int dst = 2 * 60 * 60 * 1000;
+ SimpleTimeZone z = new SimpleTimeZone(offset, "Z1",
+ Calendar.APRIL, 26, 0, t1,
+ Calendar.OCTOBER, 25, 0, t2, dst);
+
+ GregorianCalendar c = new GregorianCalendar(z);
+ c.set(2004, Calendar.APRIL, 25, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+ c.set(2004, Calendar.APRIL, 26, 8, 0, 0);
+ harness.check(z.inDaylightTime(c.getTime()));
+
+ c.set(2004, Calendar.OCTOBER, 24, 8, 0, 0);
+ harness.check(z.inDaylightTime(c.getTime()));
+ c.set(2004, Calendar.OCTOBER, 25, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+
+ try
+ {
+ boolean b = z.inDaylightTime(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+ // Tests converted from the SimpleTimeZoneTest.java attachment
+ // of http://gcc.gnu.org/ml/java-patches/2007-q1/msg00587.html.
+ private void test2(TestHarness harness)
+ {
+ TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT");
+ TimeZone.setDefault(utc);
+ Calendar cal = Calendar.getInstance(utc);
+
+ harness.checkPoint("test 1");
+
+ TimeZone tz1 = new SimpleTimeZone(
+ -12600000, "Canada/Newfoundland",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000);
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 2, 30, 0);
+ harness.check(tz1.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 2, 31, 0);
+ harness.check(!tz1.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2038, Calendar.JANUARY, 1, 2, 29, 0);
+ harness.check(!tz1.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 2");
+
+ TimeZone tz2 = new SimpleTimeZone(
+ -12600000, "Test1",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.WALL_TIME,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ 3600000);
+
+ // NB this particular check fails on several proprietary JVMs
+ // because the end time is interpreted with startTimeMode.
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0);
+ harness.check(tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0);
+ harness.check(!tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2038, Calendar.JANUARY, 1, 3, 29, 0);
+ harness.check(!tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 3");
+
+ TimeZone tz3 = new SimpleTimeZone(
+ -12600000, "Test2",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000,
+ 3600000);
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0);
+ harness.check(tz3.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0);
+ harness.check(!tz3.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2038, Calendar.JANUARY, 1, 3, 29, 0);
+ harness.check(!tz3.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 4");
+
+ ((SimpleTimeZone) tz2).setEndRule(
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 3660000);
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0);
+ harness.check(tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0);
+ harness.check(!tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2038, Calendar.JANUARY, 1, 3, 29, 0);
+ harness.check(!tz2.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 5");
+
+ TimeZone tz4 = new SimpleTimeZone(
+ -12600000, "Test1",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ Calendar.NOVEMBER, 1, -Calendar.SUNDAY, 60000,
+ SimpleTimeZone.STANDARD_TIME,
+ 3600000);
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 30, 0);
+ harness.check(tz4.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2037, Calendar.NOVEMBER, 1, 3, 31, 0);
+ harness.check(!tz4.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2038, Calendar.JANUARY, 1, 3, 29, 0);
+ harness.check(!tz4.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 6");
+
+ TimeZone tz5 = new SimpleTimeZone(
+ -12600000, "Test3",
+ Calendar.MARCH, 8, -Calendar.SUNDAY, 60000,
+ Calendar.JANUARY, 1, 0, 60000,
+ 3600000);
+
+ cal.set(2007, Calendar.DECEMBER, 31, 23, 59, 0);
+ harness.check(tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.JANUARY, 1, 2, 29, 0);
+ harness.check(tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.JANUARY, 1, 2, 30, 0);
+ harness.check(tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.JANUARY, 1, 2, 31, 0);
+ harness.check(!tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.JANUARY, 3, 2, 31, 0);
+ harness.check(!tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.JANUARY, 3, 2, 31, 0);
+ harness.check(!tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.MARCH, 11, 3, 30, 0);
+ harness.check(!tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.MARCH, 11, 3, 31, 0);
+ harness.check(tz5.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ harness.checkPoint("test 7");
+
+ TimeZone tz6 = new SimpleTimeZone(
+ 12600000, "Test4",
+ Calendar.MARCH, 6, 0, 18000000 - 12600000,
+ SimpleTimeZone.UTC_TIME,
+ Calendar.NOVEMBER, -16, -Calendar.THURSDAY, 18000000 - 3600000-12600000,
+ SimpleTimeZone.UTC_TIME,
+ 3600000);
+
+ cal.set(2007, Calendar.MARCH, 6, 1, 29, 0);
+ harness.check(!tz6.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.MARCH, 6, 1, 30, 0);
+ harness.check(tz6.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.NOVEMBER, 15, 0, 29, 0);
+ harness.check(tz6.inDaylightTime(new Date(cal.getTimeInMillis())));
+
+ cal.set(2007, Calendar.NOVEMBER, 15, 0, 30, 0);
+ harness.check(!tz6.inDaylightTime(new Date(cal.getTimeInMillis())));
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/setDSTSavings.java b/gnu/testlet/java/util/SimpleTimeZone/setDSTSavings.java
new file mode 100644
index 00000000..56b857e0
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/setDSTSavings.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the setDSTSavings() method in the SimpleTimeZone class.
+ */
+public class setDSTSavings implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(5 * 60 * 60 * 1000, "Zone 1",
+ Calendar.APRIL, 26, 0, 2*60*60*1000,
+ Calendar.OCTOBER, 25, 0, 2*60*60*1000, 36000000);
+ harness.check(z1.getDSTSavings(), 36000000);
+ z1.setDSTSavings(12345);
+ harness.check(z1.getDSTSavings(), 12345);
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/setRawOffset.java b/gnu/testlet/java/util/SimpleTimeZone/setRawOffset.java
new file mode 100644
index 00000000..9f9f5d7d
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/setRawOffset.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the setRawOffset() method in the SimpleTimeZone class.
+ */
+public class setRawOffset implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleTimeZone z1 = new SimpleTimeZone(0, "Zone 1");
+ harness.check(z1.getRawOffset(), 0);
+ z1.setRawOffset(12345);
+ harness.check(z1.getRawOffset(), 12345);
+ }
+
+}
diff --git a/gnu/testlet/java/util/SimpleTimeZone/setStartYear.java b/gnu/testlet/java/util/SimpleTimeZone/setStartYear.java
new file mode 100644
index 00000000..b4e2e46f
--- /dev/null
+++ b/gnu/testlet/java/util/SimpleTimeZone/setStartYear.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.SimpleTimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * Some checks for the setStartYear() method in the SimpleTimeZone class.
+ */
+public class setStartYear implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ int offset = -6 * 60 * 60 * 1000;
+ int t1 = 5 * 60 * 60 * 1000;
+ int t2 = 6 * 60 * 60 * 1000;
+ int dst = 2 * 60 * 60 * 1000;
+ SimpleTimeZone z = new SimpleTimeZone(offset, "Z1",
+ Calendar.APRIL, 26, 0, t1,
+ Calendar.OCTOBER, 25, 0, t2, dst);
+ z.setStartYear(2010);
+
+ // the following checks are copied from the inDaylightTime test
+ // but in this case the expected result is always false because
+ // the start year has been set to 2010.
+ GregorianCalendar c = new GregorianCalendar(z);
+ c.set(2004, Calendar.APRIL, 25, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+ c.set(2004, Calendar.APRIL, 26, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+
+ c.set(2004, Calendar.OCTOBER, 24, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+ c.set(2004, Calendar.OCTOBER, 25, 8, 0, 0);
+ harness.check(!z.inDaylightTime(c.getTime()));
+
+ }
+
+}
diff --git a/gnu/testlet/java/util/Stack/AcuniaStackTest.java b/gnu/testlet/java/util/Stack/AcuniaStackTest.java
new file mode 100644
index 00000000..c23025bc
--- /dev/null
+++ b/gnu/testlet/java/util/Stack/AcuniaStackTest.java
@@ -0,0 +1,150 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.Stack;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+
+/**
+* Written by ACUNIA. <br>
+* <br>
+* this file contains test for java.util.Stack <br>
+*
+*/
+public class AcuniaStackTest implements Testlet
+{
+ protected TestHarness th;
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_empty();
+ test_peek();
+ test_pop();
+ test_push();
+ test_search();
+ }
+
+
+/**
+* implemented.
+*
+*/
+ public void test_empty(){
+ th.checkPoint("empty()boolean");
+ Stack s = new Stack();
+ th.check(s.empty() , "a new stack is empty");
+ s.push(this);
+ th.check(!s.empty() , "this stack is not empty");
+ s.pop();
+ th.check(s.empty() , "the stack is empty now");
+ }
+/**
+* implemented.
+*
+*/
+ public void test_peek(){
+ th.checkPoint("peek()java.lang.Object");
+ Stack s = new Stack();
+ try { s.peek();
+ th.fail("should throw EmptyStackException");
+ }
+ catch (EmptyStackException ee){ th.check(true);}
+ s.add("a"); s.add("b") ; s.add("c");
+ th.check("c".equals(s.peek()) , "top element is c, but got:"+s.peek());
+ s.add(null);
+ th.check(s.peek()== null , "top element is null");
+ }
+/**
+* implemented.
+*
+*/
+ public void test_pop(){
+ th.checkPoint("pop()java.lang.Object");
+ Stack s = new Stack();
+ try { s.pop();
+ th.fail("should throw EmptyStackException -- 1");
+ }
+ catch (EmptyStackException ee){ th.check(true);}
+ s.add("a"); s.add("b") ; s.add("c");
+ th.check("c".equals(s.pop()) , "popped element is c");
+ th.check(!s.contains("c") , "element should be removed -- 1");
+ s.add(null);
+ th.check(s.pop()== null , "popped element is null");
+ th.check(!s.contains("c") , "element should be removed -- 2");
+ th.check("b".equals(s.pop()) , "popped element is b");
+ th.check(!s.contains("b") , "element should be removed -- 3");
+ th.check("a".equals(s.pop()) , "popped element is a");
+ th.check(!s.contains("a") , "element should be removed -- 4");
+ try { s.pop();
+ th.fail("should throw EmptyStackException -- 2");
+ }
+ catch (EmptyStackException ee){ th.check(true);}
+
+
+
+ }
+/**
+* implemented.
+*
+*/
+ public void test_push(){
+ th.checkPoint("push(java.lang.Object)java.lang.Object");
+ Stack s = new Stack();
+ th.check("c".equals(s.push("c")) , "pushed element is c");
+ th.check(s.contains("c") , "element should be added -- 1");
+ th.check("b".equals(s.push("b")) , "pushed element is b");
+ th.check(s.contains("b") , "element should be added -- 2");
+ th.check("a".equals(s.push("a")) , "pushed element is a");
+ th.check(s.contains("a") , "element should be added -- 3");
+ th.check(s.push(null) == null , "null is allowed");
+ th.check(s.lastElement()== null ,"added on the last place");
+ th.check(s.toString().equals("[c, b, a, null]"), "got:"+s.toString());
+ }
+/**
+* implemented.
+*
+*/
+ public void test_search(){
+ th.checkPoint("search(java.lang.Object)int");
+ Stack s = new Stack();
+ try {
+ th.check(s.search("a") == -1 , "empty stack should'n cause problems -- 1");
+ th.check(s.search(null) == -1 , "empty stack should'n cause problems -- 2");
+ }
+ catch(Exception e) { th.fail("got unwanted Exception:"+e); }
+
+ s.add("a"); s.add("b"); s.add("c"); s.add("a");
+ s.add("a"); s.add(null); s.add(null); s.add("top");
+ th.check( s.search("a") == 4, "checking position -- 1" );
+ th.check( s.search("b") == 7, "checking position -- 2" );
+ th.check( s.search("c") == 6 , "checking position -- 3" );
+ th.check( s.search("top") == 1, "checking position -- 4" );
+ th.check( s.search(null) == 2, "checking position -- 5" );
+ th.check( s.search("ab") == -1, "checking position -- 6" );
+ s.pop(); s.pop(); s.pop();
+ th.check( s.search("a") == 1, "checking position -- 7" );
+ th.check( s.search(null) == -1, "checking position -- 8" );
+ }
+
+}
diff --git a/gnu/testlet/java/util/Stack/CVS/Entries b/gnu/testlet/java/util/Stack/CVS/Entries
new file mode 100644
index 00000000..ad3761a7
--- /dev/null
+++ b/gnu/testlet/java/util/Stack/CVS/Entries
@@ -0,0 +1,2 @@
+/AcuniaStackTest.java/1.2/Mon Feb 21 15:52:52 2005//
+D
diff --git a/gnu/testlet/java/util/Stack/CVS/Repository b/gnu/testlet/java/util/Stack/CVS/Repository
new file mode 100644
index 00000000..985fb0c2
--- /dev/null
+++ b/gnu/testlet/java/util/Stack/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Stack
diff --git a/gnu/testlet/java/util/Stack/CVS/Root b/gnu/testlet/java/util/Stack/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Stack/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/StringTokenizer/CVS/Entries b/gnu/testlet/java/util/StringTokenizer/CVS/Entries
new file mode 100644
index 00000000..d16281a3
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Mon Mar 7 22:29:54 2005//
+/countTokens.java/1.1/Mon Mar 7 22:29:54 2005//
+/hasMoreElements.java/1.1/Mon Mar 7 22:29:54 2005//
+/hasMoreTokens.java/1.1/Mon Mar 7 22:29:54 2005//
+/nextElement.java/1.1/Mon Mar 7 22:29:54 2005//
+/nextToken.java/1.2/Mon Mar 7 22:29:54 2005//
+D
diff --git a/gnu/testlet/java/util/StringTokenizer/CVS/Repository b/gnu/testlet/java/util/StringTokenizer/CVS/Repository
new file mode 100644
index 00000000..ef0a2e2f
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/StringTokenizer
diff --git a/gnu/testlet/java/util/StringTokenizer/CVS/Root b/gnu/testlet/java/util/StringTokenizer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/StringTokenizer/constructors.java b/gnu/testlet/java/util/StringTokenizer/constructors.java
new file mode 100644
index 00000000..fab68bb6
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/constructors.java
@@ -0,0 +1,182 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the constructors in the {@link StringTokenizer} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the checks.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("StringTokenizer(String)");
+ StringTokenizer st = new StringTokenizer("one two\tthree\nfour\rfive\fsix");
+ harness.check(st.nextToken(), "one");
+ harness.check(st.nextToken(), "two");
+ harness.check(st.nextToken(), "three");
+ harness.check(st.nextToken(), "four");
+ harness.check(st.nextToken(), "five");
+ harness.check(st.nextToken(), "six");
+
+ boolean pass = false;
+ try
+ {
+ st.nextToken();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // null argument - see 1.5 specification
+ pass = false;
+ try
+ {
+ st = new StringTokenizer(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try empty string
+ st = new StringTokenizer("");
+ harness.check(!st.hasMoreElements());
+
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("StringTokenizer(String, String)");
+ StringTokenizer st = new StringTokenizer("one twoXthreeYfour", " XY");
+ harness.check(st.nextToken(), "one");
+ harness.check(st.nextToken(), "two");
+ harness.check(st.nextToken(), "three");
+ harness.check(st.nextToken(), "four");
+
+ boolean pass = false;
+ try
+ {
+ st.nextToken();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // null first argument
+ pass = false;
+ try
+ {
+ st = new StringTokenizer(null, " ");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // null second argument - here is a case of the spec being written
+ // to match the implementation, it says (in 1.5) NO exception should be
+ // thrown, but NullPointerException may follow on other operations.
+ pass = false;
+ try
+ {
+ st = new StringTokenizer("ABC DEFG", null);
+ try
+ {
+ /* String s = */ st.nextToken();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ }
+ catch (NullPointerException e)
+ {
+ // failed - even though this makes sense
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("StringTokenizer(String, String, boolean)");
+
+ // try with flag = true
+ StringTokenizer st = new StringTokenizer("A BCXDEFYYGHI", " XY", true);
+ harness.check(st.nextToken(), "A");
+ harness.check(st.nextToken(), " ");
+ harness.check(st.nextToken(), "BC");
+ harness.check(st.nextToken(), "X");
+ harness.check(st.nextToken(), "DEF");
+ harness.check(st.nextToken(), "Y");
+ harness.check(st.nextToken(), "Y");
+ harness.check(st.nextToken(), "GHI");
+ harness.check(!st.hasMoreElements());
+
+ // try with flag = false
+ st = new StringTokenizer("A BCXDEFYYGHI", " XY", false);
+ harness.check(st.nextToken(), "A");
+ harness.check(st.nextToken(), "BC");
+ harness.check(st.nextToken(), "DEF");
+ harness.check(st.nextToken(), "GHI");
+ harness.check(!st.hasMoreElements());
+
+ // null first argument
+ boolean pass = false;
+ try
+ {
+ st = new StringTokenizer(null, " ", true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/StringTokenizer/countTokens.java b/gnu/testlet/java/util/StringTokenizer/countTokens.java
new file mode 100644
index 00000000..bb750bbf
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/countTokens.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the countTokens() method.
+ */
+public class countTokens implements Testlet
+{
+
+ /**
+ * Some checks for the countTokens() method.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ StringTokenizer t1 = new StringTokenizer("one two three");
+ harness.check(t1.countTokens(), 3);
+ t1.nextToken();
+ harness.check(t1.countTokens(), 2);
+ t1.nextToken();
+ harness.check(t1.countTokens(), 1);
+
+ StringTokenizer t2 = new StringTokenizer("");
+ harness.check(t2.countTokens(), 0);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/StringTokenizer/hasMoreElements.java b/gnu/testlet/java/util/StringTokenizer/hasMoreElements.java
new file mode 100644
index 00000000..8e7bb9d8
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/hasMoreElements.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the hasMoreElements() method.
+ */
+public class hasMoreElements implements Testlet
+{
+
+ /**
+ * Some checks for the hasMoreElements() method.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ StringTokenizer t1 = new StringTokenizer("one two");
+ harness.check(t1.hasMoreElements());
+ t1.nextToken();
+ harness.check(t1.hasMoreElements());
+ t1.nextToken();
+ harness.check(!t1.hasMoreElements());
+
+ StringTokenizer t2 = new StringTokenizer("");
+ harness.check(!t2.hasMoreElements());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/StringTokenizer/hasMoreTokens.java b/gnu/testlet/java/util/StringTokenizer/hasMoreTokens.java
new file mode 100644
index 00000000..c2a6c651
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/hasMoreTokens.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the hasMoreTokens() method.
+ */
+public class hasMoreTokens implements Testlet
+{
+
+ /**
+ * Some checks for the hasMoreTokens() method.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ StringTokenizer t1 = new StringTokenizer("one two");
+ harness.check(t1.hasMoreTokens());
+ t1.nextToken();
+ harness.check(t1.hasMoreTokens());
+ t1.nextToken();
+ harness.check(!t1.hasMoreTokens());
+
+ StringTokenizer t2 = new StringTokenizer("");
+ harness.check(!t2.hasMoreTokens());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/StringTokenizer/nextElement.java b/gnu/testlet/java/util/StringTokenizer/nextElement.java
new file mode 100644
index 00000000..222d5929
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/nextElement.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the nextElement() method.
+ */
+public class nextElement implements Testlet
+{
+
+ /**
+ * Runs the tests.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ StringTokenizer t = new StringTokenizer("one two three");
+ harness.check(t.nextElement(), "one");
+ harness.check(t.nextElement(), "two");
+ harness.check(t.nextElement(), "three");
+
+ boolean pass = false;
+ try
+ {
+ t.nextElement();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try with multiple delimiters
+ t = new StringTokenizer("one two-three", "- ");
+ harness.check(t.nextElement(), "one");
+ harness.check(t.nextElement(), "two");
+ harness.check(t.nextElement(), "three");
+ pass = false;
+ try
+ {
+ t.nextToken();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/StringTokenizer/nextToken.java b/gnu/testlet/java/util/StringTokenizer/nextToken.java
new file mode 100644
index 00000000..22b2a23b
--- /dev/null
+++ b/gnu/testlet/java/util/StringTokenizer/nextToken.java
@@ -0,0 +1,103 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2005 David Gilbert (david.gilbert@object-refinery.com)
+
+// 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.java.util.StringTokenizer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+import java.util.StringTokenizer;
+
+/**
+ * Some checks for the nextToken() method.
+*/
+public class nextToken implements Testlet
+{
+
+ /**
+ * Runs the test.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("nextToken()");
+ StringTokenizer t = new StringTokenizer("one two three");
+ harness.check(t.nextToken(), "one");
+ harness.check(t.nextToken(), "two");
+ harness.check(t.nextToken(), "three");
+
+ boolean pass = false;
+ try
+ {
+ t.nextToken();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try with multiple delimiters
+ t = new StringTokenizer("one two-three", "- ");
+ harness.check(t.nextToken(), "one");
+ harness.check(t.nextToken(), "two");
+ harness.check(t.nextToken(), "three");
+ pass = false;
+ try
+ {
+ t.nextToken();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("nextToken(String)");
+ StringTokenizer t = new StringTokenizer("A BC-DEF GHI-JKL", " ");
+ harness.check(t.nextToken(), "A");
+ harness.check(t.nextToken("-"), " BC");
+ harness.check(t.nextToken(), "DEF GHI");
+
+ boolean pass = false;
+ try
+ {
+ t.nextToken(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/TimeZone/CVS/Entries b/gnu/testlet/java/util/TimeZone/CVS/Entries
new file mode 100644
index 00000000..7fbe9434
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/CVS/Entries
@@ -0,0 +1,5 @@
+/GetDisplayName.java/1.1/Sun Jul 6 23:25:53 2008//
+/setDefault.java/1.1/Fri Oct 8 22:36:41 2004//
+/setID.java/1.1/Thu Jan 6 13:32:08 2005//
+/zdump.java/1.1/Thu Feb 22 16:37:17 2007//
+D
diff --git a/gnu/testlet/java/util/TimeZone/CVS/Repository b/gnu/testlet/java/util/TimeZone/CVS/Repository
new file mode 100644
index 00000000..748847e7
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/TimeZone
diff --git a/gnu/testlet/java/util/TimeZone/CVS/Root b/gnu/testlet/java/util/TimeZone/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/TimeZone/GetDisplayName.java b/gnu/testlet/java/util/TimeZone/GetDisplayName.java
new file mode 100644
index 00000000..61f177b7
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/GetDisplayName.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2008 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.util.TimeZone;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Checks that the correct strings are returned in the appropriate
+ * slots for TimeZone.getDisplayName. We use Europe/London for these
+ * tests.
+ */
+public class GetDisplayName
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ TimeZone zone = TimeZone.getTimeZone("Europe/London");
+ harness.check(zone.getDisplayName(false, TimeZone.LONG, Locale.UK), "Greenwich Mean Time");
+ harness.check(zone.getDisplayName(false, TimeZone.SHORT, Locale.UK), "GMT");
+ harness.check(zone.getDisplayName(true, TimeZone.LONG, Locale.UK), "British Summer Time");
+ harness.check(zone.getDisplayName(true, TimeZone.SHORT, Locale.UK), "BST");
+ }
+
+}
diff --git a/gnu/testlet/java/util/TimeZone/setDefault.java b/gnu/testlet/java/util/TimeZone/setDefault.java
new file mode 100644
index 00000000..5f66d9fb
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/setDefault.java
@@ -0,0 +1,44 @@
+// 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: JDK1.1
+
+package gnu.testlet.java.util.TimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+public class setDefault implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("set/restore default TimeZone");
+
+ SimpleTimeZone stz = new SimpleTimeZone(60 * 60 * 1000, "MyTZ");
+
+ TimeZone old = TimeZone.getDefault();
+ TimeZone.setDefault(stz);
+
+ harness.check(TimeZone.getDefault().getID(), stz.getID());
+
+ TimeZone.setDefault(null);
+ harness.check(TimeZone.getDefault().getID(), old.getID());
+ }
+}
diff --git a/gnu/testlet/java/util/TimeZone/setID.java b/gnu/testlet/java/util/TimeZone/setID.java
new file mode 100644
index 00000000..aa317ad3
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/setID.java
@@ -0,0 +1,54 @@
+// 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: JDK1.1
+
+package gnu.testlet.java.util.TimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+public class setID implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint("set/restore default TimeZone ID");
+
+ String id = "MyTZ";
+ String id2 = "AnotherTZ";
+
+ SimpleTimeZone stz = new SimpleTimeZone(60 * 60 * 1000, id);
+
+ harness.check(stz.getID(), id);
+
+ stz.setID(id2);
+ harness.check(stz.getID(), id2);
+
+ try
+ {
+ stz.setID(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/TimeZone/zdump.java b/gnu/testlet/java/util/TimeZone/zdump.java
new file mode 100644
index 00000000..856d1468
--- /dev/null
+++ b/gnu/testlet/java/util/TimeZone/zdump.java
@@ -0,0 +1,153 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+// Based on code by Jakub Jelinek <jakub@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.util.TimeZone;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class zdump implements Testlet
+{
+ public static final String zdump = "/usr/sbin/zdump";
+
+ public void test(TestHarness harness)
+ {
+ String zoneinfodir = System.getProperty("gnu.java.util.zoneinfo.dir");
+ if (zoneinfodir == null)
+ return;
+
+ if (!new File(zdump).exists() || !new File(zoneinfodir).isDirectory())
+ return;
+
+ TimeZone utc = (TimeZone) new SimpleTimeZone(0, "GMT");
+ TimeZone.setDefault(utc);
+
+ String[] zones = TimeZone.getAvailableIDs();
+ for (int i = 0; i < zones.length; i++)
+ {
+ if (!new File(zoneinfodir, zones[i]).exists())
+ continue;
+
+ // These two timezones have different definitions between
+ // tzdata and JDK. In JDK EST is EST5EDT, while in tzdata
+ // just EST5, similarly for MST.
+ if (zones[i].equals("EST") || zones[i].equals("MST"))
+ continue;
+
+ checkZone(harness, zones[i]);
+ }
+ }
+
+ public static void checkZone(TestHarness harness, String zone)
+ {
+ harness.checkPoint(zone);
+
+ TimeZone tz = TimeZone.getTimeZone(zone);
+ if (tz == null)
+ {
+ harness.check(false);
+ return;
+ }
+
+ Calendar cal = Calendar.getInstance(tz);
+
+ BufferedReader br = null;
+ Process process = null;
+ try
+ {
+ process = Runtime.getRuntime().exec(zdump + " -v " + zone);
+ br = new BufferedReader(new InputStreamReader(
+ process.getInputStream()));
+
+ for (String line = br.readLine(); line != null; line = br.readLine())
+ {
+ int end1 = line.indexOf(" UTC = ");
+ if (end1 < 0)
+ continue;
+ int start1 = line.indexOf(" ");
+ if (start1 < 0 || start1 >= end1)
+ continue;
+ int start2 = line.indexOf(" isdst=");
+ int start3 = line.indexOf(" gmtoff=");
+ if (start2 <= end1 || start3 <= start2)
+ continue;
+
+ Date d = new Date(line.substring(start1 + 2, end1 + 4));
+ cal.setTime(d);
+
+ int isdst = Integer.parseInt(line.substring(start2 + 7, start3));
+ int gmtoff = Integer.parseInt(
+ line.substring(start3 + 8, line.length()));
+
+ harness.debug("Zone " + zone + " " + d +
+ " isdst=" + isdst +
+ " inDaylightTime=" + tz.inDaylightTime(d));
+ harness.check(tz.inDaylightTime(d) == (isdst != 0));
+
+ harness.debug("Zone " + zone + " " + d +
+ " gmtoff=" + gmtoff +
+ " getOffset=" + tz.getOffset(d.getTime()));
+ harness.check(tz.getOffset(d.getTime()) == gmtoff * 1000);
+
+ int offset = cal.get(Calendar.DST_OFFSET) +
+ cal.get(Calendar.ZONE_OFFSET);
+
+ harness.debug("Zone " + zone + " " + d +
+ " gmtoff=" + gmtoff +
+ " DST_OFFSET+ZONE_OFFSET=" + offset);
+ harness.check(offset == gmtoff * 1000);
+ }
+ }
+ catch (IOException ioe)
+ {
+ }
+ finally
+ {
+ try
+ {
+ if (br != null)
+ br.close();
+ if (process != null)
+ {
+ process.waitFor();
+ process.exitValue();
+ }
+ }
+ catch (IOException ioe)
+ {
+ }
+ catch (InterruptedException ine)
+ {
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Timer/CVS/Entries b/gnu/testlet/java/util/Timer/CVS/Entries
new file mode 100644
index 00000000..aec90114
--- /dev/null
+++ b/gnu/testlet/java/util/Timer/CVS/Entries
@@ -0,0 +1,2 @@
+/taskException.java/1.2/Tue Dec 7 15:51:14 2004//
+D
diff --git a/gnu/testlet/java/util/Timer/CVS/Repository b/gnu/testlet/java/util/Timer/CVS/Repository
new file mode 100644
index 00000000..fc55e465
--- /dev/null
+++ b/gnu/testlet/java/util/Timer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Timer
diff --git a/gnu/testlet/java/util/Timer/CVS/Root b/gnu/testlet/java/util/Timer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Timer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Timer/taskException.java b/gnu/testlet/java/util/Timer/taskException.java
new file mode 100644
index 00000000..e8c83fa0
--- /dev/null
+++ b/gnu/testlet/java/util/Timer/taskException.java
@@ -0,0 +1,69 @@
+/* taskException.java -- check if a Timer becomes cancelled if an
+ exception is thrown.
+ Copyright (C) 2004 Free Software Founddation, Inc.
+
+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: JDK1.3
+
+
+package gnu.testlet.java.util.Timer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class taskException implements Testlet
+{
+ private volatile boolean ran;
+
+ public void test (TestHarness harness)
+ {
+ ran = false;
+ harness.checkPoint ("Timer.schedule");
+ Timer timer = new Timer (true);
+ timer.schedule (new TimerTask()
+ {
+ public void run()
+ {
+ ran = true;
+ throw new RuntimeException ("eat it!!!");
+ }
+ }, 10);
+ try { Thread.sleep (50); } catch (InterruptedException ignore) {}
+ harness.check (ran, "task was not run");
+ try
+ {
+ timer.schedule (new TimerTask()
+ {
+ public void run()
+ {
+ ran = false;
+ }
+ }, 10);
+ harness.check (false, "still able to schedule tasks");
+ }
+ catch (IllegalStateException ise)
+ {
+ harness.check (true);
+ }
+ harness.check (ran, "unschedulable task was run");
+ }
+}
diff --git a/gnu/testlet/java/util/TreeMap/CVS/Entries b/gnu/testlet/java/util/TreeMap/CVS/Entries
new file mode 100644
index 00000000..b1494272
--- /dev/null
+++ b/gnu/testlet/java/util/TreeMap/CVS/Entries
@@ -0,0 +1,2 @@
+/serialization.java/1.1/Sun Sep 19 20:20:58 2004//
+D
diff --git a/gnu/testlet/java/util/TreeMap/CVS/Repository b/gnu/testlet/java/util/TreeMap/CVS/Repository
new file mode 100644
index 00000000..0c082e52
--- /dev/null
+++ b/gnu/testlet/java/util/TreeMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/TreeMap
diff --git a/gnu/testlet/java/util/TreeMap/CVS/Root b/gnu/testlet/java/util/TreeMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/TreeMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/TreeMap/serialization.java b/gnu/testlet/java/util/TreeMap/serialization.java
new file mode 100644
index 00000000..6163e11e
--- /dev/null
+++ b/gnu/testlet/java/util/TreeMap/serialization.java
@@ -0,0 +1,69 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+//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.java.util.TreeMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.util.TreeMap;
+
+/**
+ * Checks the serialization of the TreeMap class.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // try serializing an empty TreeMap - see bug report 10383
+ TreeMap tm1 = new TreeMap();
+ TreeMap tm2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(tm1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ tm2 = (TreeMap) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(tm1.equals(tm2));
+ }
+}
diff --git a/gnu/testlet/java/util/TreeSet/CVS/Entries b/gnu/testlet/java/util/TreeSet/CVS/Entries
new file mode 100644
index 00000000..20e2c8ea
--- /dev/null
+++ b/gnu/testlet/java/util/TreeSet/CVS/Entries
@@ -0,0 +1,2 @@
+/basic.java/1.2/Thu Oct 13 16:01:30 2005//
+D
diff --git a/gnu/testlet/java/util/TreeSet/CVS/Repository b/gnu/testlet/java/util/TreeSet/CVS/Repository
new file mode 100644
index 00000000..12ef87f4
--- /dev/null
+++ b/gnu/testlet/java/util/TreeSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/TreeSet
diff --git a/gnu/testlet/java/util/TreeSet/CVS/Root b/gnu/testlet/java/util/TreeSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/TreeSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/TreeSet/basic.java b/gnu/testlet/java/util/TreeSet/basic.java
new file mode 100644
index 00000000..b85cb51e
--- /dev/null
+++ b/gnu/testlet/java/util/TreeSet/basic.java
@@ -0,0 +1,174 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.java.util.TreeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * Basic TreeSet test.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class basic implements Testlet
+{
+ TreeSet set = new TreeSet();
+
+ void checkContent(Set forSet, String content, TestHarness h, String note)
+ {
+ StringBuffer b = new StringBuffer();
+ Iterator iter = forSet.iterator();
+ while (iter.hasNext())
+ {
+ b.append(iter.next());
+ }
+
+ h.check(b.toString(), content, note);
+ }
+
+ void checkContent(String content, TestHarness h, String note)
+ {
+ checkContent(set, content, h, note);
+ }
+
+ TreeSet getSet(String content)
+ {
+ TreeSet t = new TreeSet();
+
+ for (int i = 0; i < content.length(); i++)
+ {
+ t.add("" + content.charAt(i));
+ }
+
+ return t;
+ }
+
+ /* Test clone(). */
+ public void test_clone(TestHarness harness)
+ {
+ TreeSet t = getSet("abcdef");
+ set = (TreeSet) t.clone();
+ checkContent("abcdef", harness, "clone");
+ }
+
+ /* Test add(Object). */
+ public void test_add(TestHarness harness)
+ {
+ set = getSet("bcdabcddabbccaabbccadbcdababbcdabcxabcxccda");
+ checkContent("abcdx", harness, "add");
+ harness.check(set.size(), 5, "size");
+ harness.check(set.first(), "a", "first");
+ harness.check(set.last(), "x", "last");
+ harness.check(set.comparator() == null, "null comparator expected");
+ }
+
+ /* Test addAll(Collection). */
+ public void test_addAll(TestHarness harness)
+ {
+ set = getSet("dac");
+
+ TreeSet t = getSet("xay");
+
+ set.addAll(t);
+
+ checkContent("acdxy", harness, "addAll");
+ }
+
+ /* Test contains(Object). */
+ public void test_contains(TestHarness harness)
+ {
+ String t = "abcdefghij";
+ set = getSet(t);
+
+ for (int i = 0; i < t.length(); i++)
+ {
+ String s = t.substring(i, i + 1);
+ harness.check(set.contains(s), "must contain '" + s + "'");
+ }
+
+ harness.check(!set.contains("aa"), "must not contain 'aa'");
+ }
+
+ /* Test remove(Object). */
+ public void test_remove(TestHarness harness)
+ {
+ String t = "abcdefghij";
+ set = getSet(t);
+
+ for (int i = 0; i < t.length(); i++)
+ {
+ String s = t.substring(i, i + 1);
+ set.remove(s);
+
+ if (set.contains(s))
+ harness.fail("Contains '" + s + "' after removing. ");
+ }
+
+ harness.check(set.size(), 0, "non zero size after removing all elements");
+
+ harness.check(set.isEmpty(), "non empty when it should be");
+ }
+
+ /* Test clear(). */
+ public void test_clear(TestHarness harness)
+ {
+ set = getSet("a");
+ set.clear();
+ harness.check(set.size(), 0, "clear");
+ }
+
+ /* Test headSet(Object). */
+ public void test_subsets(TestHarness harness)
+ {
+ String content = "abcdefghijklmn";
+
+ set = getSet(content);
+
+ for (int i = 0; i < content.length() - 1; i++)
+ {
+ String s = content.substring(i, i + 1);
+ checkContent(set.headSet(s), content.substring(0, i), harness, "headSet");
+
+ checkContent(set.tailSet(s), content.substring(i), harness, "tailSet");
+
+ checkContent(set.subSet(s, "n"),
+ content.substring(i, content.length() - 1), harness,
+ "subset"
+ );
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ test_clone(harness);
+ test_add(harness);
+ test_addAll(harness);
+ test_contains(harness);
+ test_remove(harness);
+ test_clear(harness);
+ test_subsets(harness);
+ }
+}
diff --git a/gnu/testlet/java/util/UUID/CVS/Entries b/gnu/testlet/java/util/UUID/CVS/Entries
new file mode 100644
index 00000000..9733e5ae
--- /dev/null
+++ b/gnu/testlet/java/util/UUID/CVS/Entries
@@ -0,0 +1,2 @@
+/TestAll.java/1.1/Tue Aug 29 23:53:50 2006/-kk/
+D
diff --git a/gnu/testlet/java/util/UUID/CVS/Repository b/gnu/testlet/java/util/UUID/CVS/Repository
new file mode 100644
index 00000000..58d9b8b1
--- /dev/null
+++ b/gnu/testlet/java/util/UUID/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/UUID
diff --git a/gnu/testlet/java/util/UUID/CVS/Root b/gnu/testlet/java/util/UUID/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/UUID/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/UUID/TestAll.java b/gnu/testlet/java/util/UUID/TestAll.java
new file mode 100644
index 00000000..4d52c71b
--- /dev/null
+++ b/gnu/testlet/java/util/UUID/TestAll.java
@@ -0,0 +1,253 @@
+/* TestAll.java -- Tests for java.util.UUID
+ Copyright (C) 2006 Sven de Marothy
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.UUID;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.UUID;
+
+public class TestAll implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("equals()");
+ testEquals( harness );
+ harness.checkPoint("randomUUID()");
+ testRandom( harness );
+ harness.checkPoint("time fields");
+ testTime( harness );
+ harness.checkPoint("toString()");
+ testToString( harness );
+ harness.checkPoint("hashCode()");
+ testHash( harness );
+ harness.checkPoint("compareTo()");
+ testCompare( harness );
+ harness.checkPoint("nameUUIDFromBytes()");
+ testNameFromBytes( harness );
+ harness.checkPoint("fromString()");
+ testFromString( harness );
+ }
+
+ /**
+ * Test data, some valid timestamp UUIDs
+ */
+ private static final UUID[] ids = new UUID[]
+ {
+ new UUID(819576242563977691L, -6026651929721136538L),
+ new UUID(2832154967796617691L, -6026651929721136538L),
+ new UUID(3408883180598464987L, -6026651929721136538L),
+ new UUID(3802173340188152283L, -6026651929721136538L)
+ };
+
+ /** Some random UUIDs */
+ private static final UUID[] randomIds = new UUID[]
+ {
+ new UUID( -3712700652812154966L, -6598749860495561479L ),
+ new UUID( 664552433621420518L, -6414775468900364460L ),
+ new UUID( -5464341501079829899L, -5598482408525562595L ),
+ new UUID( -6237697930964942150L, -6792975957340980865L ),
+ new UUID( 1115444745961556609L, -8924788308993396799L ),
+ new UUID( 8935737015972545600L, -7709166330108105025L ),
+ new UUID( -1731090450474971506L, -8180066663887629633L ),
+ new UUID( -4352314495419070300L, -6102009369002353257L ),
+ new UUID( -2372952748710147740L, -7309989210815328856L ),
+ new UUID( -7640168945999331050L, -9131205566142177277L )
+ };
+
+ /** correct string representations of the respective ids */
+ private static String[] strs = new String[]
+ {
+ "0b5fb840-1460-11db-ac5d-0800200c9a66",
+ "274dd5f0-1460-11db-ac5d-0800200c9a66",
+ "2f4ec931-1460-11db-ac5d-0800200c9a66",
+ "34c40882-1460-11db-ac5d-0800200c9a66"
+ };
+
+ private static String[] randomStrs = new String[]
+ {
+ "cc79d66d-4fc5-47aa-a46c-87f6ab80ecf9",
+ "0938f6ea-dca0-49e6-a6fa-23b2ae4dcf54",
+ "b42ac25b-28b6-4275-b24e-31e9568f7d1d",
+ "a96f3ec7-d0a5-42ba-a1ba-805b86ebf97f",
+ "0f7adb16-299d-4a81-8424-c8518ae3afc1",
+ "7c021d78-f35a-4440-9503-8a1153812ebf",
+ "e7f9ee68-315e-4e8e-8e7a-90b583f692bf",
+ "c3997906-a5c3-48a4-ab51-4ecf08825d97",
+ "df11940c-2858-4964-9a8d-b38af16a0da8",
+ "95f8aad2-adbd-4116-8147-70eab306a003"
+ };
+
+ private void testNameFromBytes(TestHarness harness)
+ {
+ UUID id1, id2;
+ id1 = new UUID(8833946387751055799L, -7161481369492758254L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)80, (byte)43 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(5637592221686249917L, -5921171958455577142L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{ (byte)114, (byte)45 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-4355869889751467654L, -7258896509850702779L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)36, (byte)32, (byte)172,
+ (byte)170, (byte)254, (byte)224});
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-5236193865575288109L, -8631150049002629651L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)79, (byte)195, (byte)193,
+ (byte)12 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(6892210306406430384L, -8874384750029244307L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)159, (byte)194, (byte)145,
+ (byte)7, (byte)79, (byte)81,
+ (byte)95 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-1760792916171804329L, -7690807811470976644L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)44, (byte)67, (byte)23,
+ (byte)186, (byte)139, (byte)59,
+ (byte)191, (byte)77, (byte)20 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-8248928743552566013L, -8885233673248765009L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)132, (byte)150, (byte)203,
+ (byte)54, (byte)68, (byte)31,
+ (byte)48, (byte)208 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-3367149413545070022L, -6453356609274991779L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{
+ (byte)63 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-1846445036491163506L, -6140770342100802383L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)216, (byte)9, (byte)56,
+ (byte)238, (byte)224, (byte)237,
+ (byte)253 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-7426333540612096407L, -9029142625441791623L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{(byte)86, (byte)131,
+ (byte)201 });
+ harness.check(id1.equals(id2));
+
+ id1 = new UUID(-3162216497309273596L, -6232971331865394562L);
+ id2 = UUID.nameUUIDFromBytes( new byte[]{ });
+ harness.check(id1.equals(id2));
+ }
+
+ private void testFromString(TestHarness harness)
+ {
+ for(int i = 0; i < ids.length; i++ )
+ harness.check( ids[i].equals( UUID.fromString( strs[i] ) ) );
+ for(int i = 0; i < randomIds.length; i++)
+ harness.check( randomIds[i].equals
+ (UUID.fromString( randomStrs[i] ) ) );
+ }
+
+ private void testToString(TestHarness harness)
+ {
+
+ for(int i = 0; i < ids.length; i++)
+ harness.check(ids[i].toString().equals(strs[i]));
+ for(int i = 0; i < randomIds.length; i++)
+ harness.check(randomIds[i].toString().equals(randomStrs[i]));
+ }
+
+ private void testHash(TestHarness harness)
+ {
+ int[] hashes = new int[]
+ {
+ -1821492227,
+ -1082370483,
+ -1216394612,
+ -1393194177
+ };
+
+ for(int i = 0; i < ids.length; i++)
+ harness.check(ids[i].hashCode(), hashes[i]);
+ }
+
+ private void testCompare(TestHarness harness)
+ {
+ for(int i = 0; i < ids.length; i++)
+ {
+ UUID id = new UUID(ids[i].getMostSignificantBits(),
+ ids[i].getLeastSignificantBits());
+ for(int j = 0; j < ids.length; j++)
+ {
+ int c1 = id.compareTo(ids[j]);
+ int c2;
+ if( i < j ) c2 = -1;
+ else if( i > j) c2 = 1;
+ else c2 = 0;
+ harness.check(c1, c2);
+ }
+ }
+ }
+
+ private void testRandom(TestHarness harness)
+ {
+ UUID id = UUID.randomUUID();
+ harness.check(id.variant(), 2);
+ harness.check(id.version(), 4);
+ }
+
+ /**
+ * Test variant, version, timestamp, clocksequence, node
+ */
+ private void testTime(TestHarness harness)
+ {
+ long[] vals = new long[]
+ {
+ 2, 1, 133723016677800000L, 11357, 8796630719078L,
+ 2, 1, 133723017146390000L, 11357, 8796630719078L,
+ 2, 1, 133723017280670001L, 11357, 8796630719078L,
+ 2, 1, 133723017372240002L, 11357, 8796630719078L
+ };
+
+ for(int i = 0; i < ids.length; i++)
+ {
+ harness.check(ids[i].variant(), vals[ i * 5 ]);
+ harness.check(ids[i].version(), vals[ i * 5 + 1]);
+ harness.check(ids[i].timestamp(), vals[ i * 5 + 2]);
+ harness.check(ids[i].clockSequence(), vals[ i * 5 + 3]);
+ harness.check(ids[i].node(), vals[ i * 5 + 4]);
+ }
+ }
+
+ private void testEquals(TestHarness harness)
+ {
+ for(int i = 0; i < ids.length; i++)
+ {
+ UUID id = new UUID(ids[i].getMostSignificantBits(),
+ ids[i].getLeastSignificantBits());
+ for(int j = 0; j < ids.length; j++)
+ harness.check((id.equals(ids[j]) == (i == j)));
+ }
+ }
+}
+
+
diff --git a/gnu/testlet/java/util/Vector/AcuniaVectorTest.java b/gnu/testlet/java/util/Vector/AcuniaVectorTest.java
new file mode 100644
index 00000000..80b30477
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/AcuniaVectorTest.java
@@ -0,0 +1,1634 @@
+/* Copyright (C) 2001 ACUNIA
+
+ 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: JDK1.2
+
+package gnu.testlet.java.util.Vector;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.*;
+import java.lang.NullPointerException;
+import java.lang.UnsupportedOperationException;
+
+/**
+* This file contains testcode for java.util.Vector.<br>
+* <br>
+* WRITTEN BY ACUNIA <br>
+* <br>
+*
+*/
+public class AcuniaVectorTest extends Vector implements Testlet
+{
+ protected TestHarness th;
+
+ public AcuniaVectorTest() { /* Public Constructor needed for Testlet */ }
+
+ public void test (TestHarness harness)
+ {
+ th = harness;
+ test_Vector();
+ test_contains();
+ test_containsAll();
+ test_indexOf ();
+ test_isEmpty();
+ test_lastIndexOf();
+ test_size();
+ test_get ();
+ test_copyInto();
+ test_elementAt();
+ test_elements();
+ test_firstElement();
+ test_lastElement();
+ test_add();
+ test_addAll();
+ test_addElement();
+ test_clear();
+ test_insertElementAt();
+ test_remove();
+ try { test_removeAll(); }
+ catch (UnsupportedOperationException ue) {th.fail("method removeAll() is not supported");}
+ test_removeAllElements();
+ test_removeElement();
+ test_removeElementAt();
+ test_removeRange();
+ try {test_retainAll();}
+ catch (UnsupportedOperationException ue) {th.fail("method retainAll() is not supported");}
+ try { test_set(); }
+ catch (UnsupportedOperationException ue) {th.fail("method set() is not supported");}
+ test_setElementAt();
+ test_setSize();
+ test_capacity();
+ test_ensureCapacity();
+ test_trimToSize();
+ try { test_subList(); }
+ catch (UnsupportedOperationException ue) {th.fail("method subList() is not supported");}
+ try { test_toArray(); }
+ catch (ArrayStoreException ae) { th.fail("failure in System.arraycopy, got exception: "+ae); }
+ test_clone();
+ test_equals();
+ test_hashCode();
+ test_toString();
+ test_behaviour();
+ test_iterator();
+ }
+ public Vector buildknownV() {
+
+ Vector v = new Vector();
+ Float f;
+ for (int i =0; i < 11; i++)
+ {
+ f = new Float((float)i);
+ v.addElement(f);
+ }
+ return v;
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_Vector(){
+ th.checkPoint("Vector()");
+ Vector v = new Vector();
+ th.check(v.capacity()==10 , "check default capacity");
+ th.checkPoint("Vector(java.util.Collection)");
+ v = new Vector(buildknownV());
+ v.equals(buildknownV());
+ th.checkPoint("Vector(int)");
+ v = new Vector(20);
+ th.check(v.capacity()==20 , "check default capacity");
+ th.checkPoint("Vector(int,int)");
+ v = new Vector(20,5);
+ th.check(v.capacity()==20 , "check default capacity");
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_contains(){
+ th.checkPoint("contains(java.lang.Object)boolean");
+ Vector v = buildknownV();
+ Object o = new Object();
+ Float f = new Float(5.0f);
+ th.check(!v.contains(null) , "null is allowed -- 1");
+ v.addElement(null);
+ th.check(v.contains(null) , "null is allowed -- 2");
+ th.check( v.contains(f) , "contains -- 1");
+ f = new Float(15.0f);
+ th.check(! v.contains(f) , "contains -- 2");
+ th.check(! v.contains(o) , "contains -- 3");
+ v.addElement(o);
+ th.check( v.contains(o) , "contains -- 4");
+ th.check(! v.contains(new Object()) , "contains -- 5");
+
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2 <br>
+* needs extra testing <br>
+*/
+ public void test_containsAll(){
+ th.checkPoint("containsAll(java.util.Colection)boolean");
+ Vector v = new Vector();
+ try { v.containsAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.addElement("a"); v.addElement("b"); v.addElement("c");
+ v.addElement(null);
+ Collection c = (Collection) v.clone();
+ v.addElement("d"); v.addElement("e"); v.addElement("f");
+ th.check(v.containsAll(c) , "checking ContainsAll -- 1");
+ v.removeElement("a");
+ th.check(!v.containsAll(c) , "checking ContainsAll -- 2");
+
+ try { v.containsAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_indexOf(){
+ th.checkPoint("indexOf(java.lang.Object)int");
+ Vector v = buildknownV();
+ Object o = new Object();
+ Float f = new Float(5.0f);
+ th.check( v.indexOf(f) == 5 , "contains -- 1");
+ f = new Float(15.0f);
+ th.check( v.indexOf(f) == -1 , "contains -- 2");
+ th.check( v.indexOf(o) == -1, "contains -- 3");
+ v.addElement(o);
+ th.check( v.indexOf(o) == 11 , "contains -- 4");
+ th.check( v.indexOf(new Object()) == -1 , "contains -- 5");
+ try {v.indexOf(null);
+ th.check(true);
+ v.addElement(null);
+ th.check(v.indexOf(null) == 12, "null was added to the Vector");
+ }
+ catch(NullPointerException ne) { th.fail("shouldn't throw NullPointerException"); }
+
+ th.checkPoint("indexOf(java.lang.Object,int)int");
+ v = buildknownV();
+ o = new Object();
+ f = new Float(5.0f);
+ th.check( v.indexOf(f,2) == 5 , "contains -- 1");
+ th.check( v.indexOf(f,6) == -1 , "contains -- 2");
+ f = new Float(15.0f);
+ th.check( v.indexOf(f,4) == -1 , "contains -- 3");
+ th.check( v.indexOf(o,3) == -1, "contains -- 4");
+ v.addElement(o);
+ th.check( v.indexOf(o,11) == 11 , "contains -- 5");
+ v.addElement(f);
+ th.check( v.indexOf(o,12) == -1 , "contains -- 6");
+
+ th.check( v.indexOf(new Object(),1) == -1 , "contains -- 7");
+ try {v.indexOf(null,3);
+ th.check(true);
+ v.addElement(null);
+ th.check(v.indexOf(null,13) == 13, "null was added to the Vector");
+ }
+ catch(NullPointerException ne) { th.fail("shouldn't throw NullPointerException"); }
+ try {f = new Float(10.0f);
+ th.check(v.indexOf(f,333)== -1 ,"checking bounderies");
+
+ }
+ catch(Exception ne) { th.fail("shouldn't throw an Exception"); }
+ try {v.indexOf(f,-1);
+ th.fail("shouldn't throw NullPointerException");
+ }
+ catch(Exception ne) { th.check(true); }
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_isEmpty(){
+ th.checkPoint("isEmpty()boolean");
+ Vector v = new Vector();
+ th.check(v.isEmpty() ,"testing isEmpty -- 1");
+ th.check(!buildknownV().isEmpty() ,"testing isEmpty -- 2");
+
+ }
+
+/**
+* implemented .
+*
+*/
+ public void test_lastIndexOf(){
+ th.checkPoint("lastIndexOf(java.lang.Object)int");
+ Vector v = buildknownV();
+ Object o = new Object();
+ Float f = new Float(5.0f);
+ th.check( v.lastIndexOf(f) == 5 , "contains -- 1");
+ f = new Float(15.0f);
+ th.check( v.lastIndexOf(f) == -1 , "contains -- 2");
+ th.check( v.lastIndexOf(o) == -1, "contains -- 3");
+ v.addElement(o);
+ th.check( v.lastIndexOf(o) == 11 , "contains -- 4");
+ th.check( v.lastIndexOf(new Object()) == -1 , "contains -- 5");
+ try {v.lastIndexOf(null);
+ th.check(true);
+ v.addElement(null);
+ th.check(v.lastIndexOf(null) == 12, "null was added to the Vector");
+ }
+ catch(NullPointerException ne) { th.fail("shouldn't throw NullPointerException"); }
+
+ th.checkPoint("lastIndexOf(java.lang.Object,int)int");
+ v = buildknownV();
+ o = new Object();
+ f = new Float(5.0f);
+ th.check( v.lastIndexOf(f,5) == 5 , "contains -- 1");
+ th.check( v.lastIndexOf(f,4) == -1 , "contains -- 2");
+ f = new Float(15.0f);
+ th.check( v.lastIndexOf(f,4) == -1 , "contains -- 3");
+ th.check( v.lastIndexOf(o,3) == -1, "contains -- 4");
+ v.addElement(o);
+ th.check( v.lastIndexOf(o,11) == 11 , "contains -- 5");
+ v.addElement(f);
+ th.check( v.lastIndexOf(o,10) == -1 , "contains -- 6");
+
+ th.check( v.lastIndexOf(new Object(),10) == -1 , "contains -- 7");
+ try {v.lastIndexOf(null,12);
+ th.check(true);
+ v.addElement(null);
+ th.check(v.lastIndexOf(null,13) == 13, "null was added to the Vector");
+ th.check(v.lastIndexOf(null,12) == -1, "null was added to the Vector, on pos 13");
+
+ }
+ catch(NullPointerException ne) { th.fail("shouldn't throw NullPointerException"); }
+ try {f = new Float(10.0f);
+ th.check(v.lastIndexOf(f,-1)== -1 ,"checking bounderies");
+
+ }
+ catch(Exception ne) { th.fail("shouldn't throw an Exception"); }
+ try {v.lastIndexOf(f,91);
+ th.fail("shouldn't throw NullPointerException");
+ }
+ catch(Exception ne) { th.check(true); }
+
+ }
+
+/**
+* implemented .
+*
+*/
+ public void test_size(){
+ th.checkPoint("size()int");
+ Vector v = buildknownV();
+ th.check(v.size() == 11 , "size -- 1 - got: "+v.size());
+ v.addElement(null);
+ th.check(v.size() == 12 , "size -- 2 - got: "+v.size());
+ v.addElement(new Object());
+ th.check(v.size() == 13 , "size -- 3 - got: "+v.size());
+ v = new Vector();
+ th.check(v.size() == 0 , "size -- 4 - got: "+v.size());
+
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2
+*/
+ public void test_get(){
+ th.checkPoint("get(int)java.lang.Object");
+ Vector v = buildknownV();
+ try { v.get(-1);
+ th.fail("should throw exception -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.get(11);
+ th.fail("should throw exception -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ v = new Vector();
+ v.addElement("a"); v.addElement(null); v.addElement("c");
+ v.addElement(null);
+ th.check(v.get(0).equals("a") && v.get(2).equals("c") , "checking get -- 1");
+ th.check(v.get(1) == null && v.get(3) == null , "checking get -- 2");
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_copyInto(){
+ th.checkPoint("copyInto([java.lang.Object)void");
+ Vector v = buildknownV();
+ StringBuffer bf= new StringBuffer("smartmove");
+ v.addElement(bf);
+ Object o[] = new Object[5];
+ try { v.copyInto(o);
+ th.fail("should throw ArrayIndexOutOfBoundsException");
+ }
+ catch(ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ o = new Object[15];
+ v.copyInto(o);
+ for (int i=0 ; i < 11 ; i++ )
+ { th.check( o[i] == v.elementAt(i),"checking copyInto -- "+(i+1)+" - got: "+o[i]); }
+ th.check( o[11] == v.elementAt(11) , "checking stringbuffer");
+ th.check(o.length == 15);
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_elementAt(){
+ th.checkPoint("elementAt(int)java.lang.Object");
+ Vector v = new Vector();
+ v.addElement(null);
+ Float f =new Float(23.0f);
+ Double d =new Double(54.5);
+ v.addElement(f);
+ v.addElement(d);
+ th.check( v.elementAt(0) == null );
+ th.check( v.elementAt(1) == f );
+ th.check( v.elementAt(2) == d );
+ try {v.elementAt(-1);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try {v.elementAt(3);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_elements(){
+ th.checkPoint("elements()java.util.Enumeration");
+ Vector v = buildknownV();
+ v.addElement(null);
+ Float f =new Float(23.0f);
+ Double d =new Double(54.5);
+ v.addElement(f);
+ v.addElement(d);
+ Enumeration e = v.elements();
+ for (int i=0; i < 11 ; i++ )
+ { th.check( ((Float)e.nextElement()).intValue() == i,"checking elements -- "+(i+1)); }
+ try {
+ th.check(e.hasMoreElements(), "null in vector might give problems -- 1");
+ th.check(e.nextElement() == null , "null in vector might give problems -- 2");
+ th.check(e.hasMoreElements(), "null in vector might give problems -- 3");
+ th.check(e.nextElement() == f , "null in vector might give problems -- 4");
+ th.check(e.nextElement() == d , "null in vector might give problems -- 5");
+ th.check(!e.hasMoreElements(), "null in vector might give problems -- 6");
+ }
+ catch (Exception te) { th.debug("caught unwanted exception: "+te); }
+ v = new Vector();
+ th.check( v.elements() != null);
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_firstElement(){
+ th.checkPoint("firstElement()java.lang.Object");
+ Vector v = new Vector();
+ try { v.firstElement();
+ th.fail("should throw NoSuchElementException");
+ }
+ catch(NoSuchElementException ne) { th.check(true); }
+
+ v.addElement(null);
+ th.check(v.firstElement() == null );
+ v = new Vector();
+ Float f =new Float(23.0f);
+ v.addElement(f);
+ th.check(v.firstElement() == f );
+ v = new Vector();
+ Double d =new Double(54.5);
+ v.addElement(d);
+ v.addElement(null);
+ v.addElement(f);
+ th.check(v.firstElement() == d );
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_lastElement(){
+ th.checkPoint("lastElement()java.lang.Object");
+ Vector v = new Vector();
+ try { v.lastElement();
+ th.fail("should throw NoSuchElementException");
+ }
+ catch(NoSuchElementException ne) { th.check(true); }
+
+ v.addElement(null);
+ th.check(v.lastElement() == null );
+ v = buildknownV();
+ v.addElement(null);
+ th.check(v.lastElement() == null );
+ Float f =new Float(23.0f);
+ v.addElement(f);
+ th.check(v.lastElement() == f );
+ v = new Vector();
+ Double d =new Double(54.5);
+ v.addElement(d);
+ th.check(v.lastElement() == d );
+
+ }
+
+/**
+* implemented. <br>
+* since jdk 1.2
+*/
+ public void test_add(){
+ th.checkPoint("add(java.lang.Object)boolean");
+ Vector v = new Vector();
+ th.check(v.add("a") && v.add(null), "checking returns boolean -- 1");
+ th.check(v.add("c") && v.add(null), "checking returns boolean -- 2");
+ th.check(v.get(0)=="a" && v.get(2)=="c", "checking addedcat right position -- 1");
+ th.checkPoint("add(int,java.lang.Object)void");
+ v = buildknownV();
+ try { v.add(-1,"a");
+ th.fail("should throw exception -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.add(12,"a");
+ th.fail("should throw exception -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.add(11,"a");
+ th.check(true);
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.fail("shouldn't throw exception -- 1"); }
+ v = new Vector();
+ v.add(0,"a"); v.add(0,null);
+ v.add(1,"c"); v.add(2,null);
+ th.check(v.get(3).equals("a") && v.get(1).equals("c") , "checking get -- 1");
+ th.check(v.get(0) == null && v.get(2) == null , "checking get -- 2");
+ v.add(4,"b"); v.add(5,null);
+ th.check(v.get(4) == "b" && v.get(5) == null , "checking get -- 3");
+
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2
+*/
+ public void test_addAll(){
+ th.checkPoint("addAll(java.util.Collection)boolean");
+ Vector v =new Vector();
+ try { v.addAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ Collection c = (Collection) v;
+ th.check(!v.addAll(c) ,"checking returnvalue -- 1");
+ v.add("a"); v.add("b"); v.add("c");
+ c = (Collection) v;
+ v = buildknownV();
+ th.check(v.addAll(c) ,"checking returnvalue -- 2");
+ th.check(v.containsAll(c), "extra on containsAll -- 1");
+ th.check(v.get(11)=="a" && v.get(12)=="b" && v.get(13)=="c", "checking added on right positions");
+
+ th.checkPoint("addAll(int,java.util.Collection)boolean");
+ v =new Vector();
+ c = (Collection) v;
+ th.check(!v.addAll(0,c) ,"checking returnvalue -- 1");
+ v.add("a"); v.add("b"); v.add("c");
+ c = (Collection) v;
+ v = buildknownV();
+ try { v.addAll(-1,c);
+ th.fail("should throw exception -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.addAll(12,c);
+ th.fail("should throw exception -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { th.check(v.addAll(11,c),"checking returnvalue -- 2"); }
+ catch (ArrayIndexOutOfBoundsException ae) { th.fail("shouldn't throw exception -- 1"); }
+ th.check(v.containsAll(c), "extra on containsAll -- 1");
+ th.check(v.get(11)=="a" && v.get(12)=="b" && v.get(13)=="c", "checking added on right positions -- 1");
+ th.check(v.addAll(1,c),"checking returnvalue -- 3");
+ th.check(v.get(1)=="a" && v.get(2)=="b" && v.get(3)=="c", "checking added on right positions -- 2");
+ }
+
+/**
+* implemented. <br>
+* just very, very basic testing <br>
+* --> errors in addElement will also make others tests fail
+*/
+ public void test_addElement(){
+ th.checkPoint("addElement(java.lang.Object)void");
+ Vector v = new Vector();
+ v.addElement("a");
+ th.check(v.size() == 1 , "check size -- 1");
+ th.check(v.elementAt(0) == "a" );
+ v.addElement(null);
+ th.check(v.size() == 2 , "check size -- 2");
+ th.check(v.elementAt(1) == null );
+
+ }
+
+/**
+* implemented. <br>
+* since jdk 1.2
+*/
+ public void test_clear(){
+ th.checkPoint("clear()void");
+ Vector v = buildknownV();
+ int c = v.capacity();
+ v.clear();
+ th.check(v.isEmpty() && (v.size()==0), "make sure all is gone");
+ th.check(c == v.capacity() , "capacity stays the same, got: "+v.capacity()+", but exp.: "+c);
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_insertElementAt(){
+ th.checkPoint("insertElementAt(java.lang.Object,int)void");
+ Vector v = buildknownV();
+ v.insertElementAt("a",5);
+ int i;
+ for (i=0 ; i < 5 ; i++ )
+ { th.check( ((Float)v.elementAt(i)).intValue() == i, "Float value didn't change -- "+(i+1)); }
+ for (i=6 ; i < 12 ; i++ )
+ { th.check( ((Float)v.elementAt(i)).intValue() == i-1 , "checking shifted elements -- "+(i-5)); }
+ th.check(v.elementAt(5) == "a" );
+ try {
+ v.insertElementAt("a",12);
+ th.check(v.elementAt(12) == "a" );
+ }
+ catch (Exception e) { th.fail("shouldn't throw an Exception -- caught: "+e); }
+ try {
+ v.insertElementAt("a",14);
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 1" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.insertElementAt("a",-1);
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 2" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ v = buildknownV();
+ v.insertElementAt(null,5);
+ for (i=0 ; i < 5 ; i++ )
+ { th.check( ((Float)v.elementAt(i)).intValue() == i, "Float value didn't change inserted null -- "+(i+1)); }
+ for (i=6 ; i < 12 ; i++ )
+ { th.check( ((Float)v.elementAt(i)).intValue() == i-1 , "checking shifted elements inserted null -- "+(i-5)); }
+ th.check(v.elementAt(5) == null );
+
+ }
+
+/**
+* implemented. <br>
+* since jdk 1.2
+*/
+ public void test_remove(){
+ th.checkPoint("remove(int)java.lang.Object");
+ Vector v = buildknownV();
+ try {
+ v.remove(-1);
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 1" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.remove(11);
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 2" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ th.check( ((Float)v.remove(5)).intValue() == 5 , "checking returnvalue remove -- 1");
+ int i; boolean ok = true;
+ th.check(v.size() == 10 , "checking new Size");
+ for (i=0; i < 5 ; i++)
+ { if (((Float)v.get(i)).intValue() != i) ok = false; }
+ th.check(ok , "checking order Floats in Vector -- 1");
+ ok = true;
+ for (i=5; i < 10 ; i++)
+ { if (((Float)v.get(i)).intValue() != (i+1)) ok = false; }
+ th.check(ok , "checking order Floats in Vector -- 2");
+ v.add(5,null);
+ th.check( v.remove(5) == null , "checking returnvalue remove -- 2");
+ ok = true;
+ for (i=0; i < 5 ; i++)
+ { if (((Float)v.get(i)).intValue() != i) ok = false; }
+ th.check(ok , "checking order Floats in Vector -- 3");
+ ok = true;
+ for (i=5; i < 10 ; i++)
+ { if (((Float)v.get(i)).intValue() != (i+1)) ok = false; }
+ th.check(ok , "checking order Floats in Vector -- 4");
+ th.check( ((Float)v.remove(9)).intValue() == 10 , "checking returnvalue remove -- 3");
+ th.check( ((Float)v.remove(0)).intValue() == 0 , "checking returnvalue remove -- 4");
+ th.check( ((Float)v.remove(0)).intValue() == 1 , "checking returnvalue remove -- 5");
+ v = new Vector();
+ try {
+ v.remove(0);
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 3" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ th.checkPoint("remove(java.lang.Object)boolean");
+ v = new Vector();
+ th.check(!v.remove("a") ,"checking remove on empty vector-- 1");
+ th.check(!v.remove("a") ,"checking remove on empty vector-- 2");
+ v.add("a"); v.add(null); v.add("a");
+ v.add("c"); v.add("d"); v.add(null);
+ th.check(v.remove("a") ,"checking returnvalue remove -- 1");
+ th.check(v.get(0)==null && v.get(1)=="a" && v.get(2)=="c" &&v.get(3)=="d" &&v.get(4)==null , "checking order of elements -- 1");
+ th.check(v.remove("a") ,"checking returnvalue remove -- 2");
+ th.check(v.get(0)==null && v.get(1)=="c" &&v.get(2)=="d" &&v.get(3)==null , "checking order of elements -- 2");
+ th.check(!v.remove("a") ,"checking returnvalue remove -- 3");
+ th.check(v.get(0)==null && v.get(1)=="c" &&v.get(2)=="d" &&v.get(3)==null , "checking order of elements -- 3");
+ th.check(v.remove(null) ,"checking returnvalue remove -- 4");
+ th.check(v.get(0)=="c" &&v.get(1)=="d" &&v.get(2)==null , "checking order of elements -- 4");
+ th.check(v.remove(null) ,"checking returnvalue remove -- 5");
+ th.check(v.get(0)=="c" &&v.get(1)=="d", "checking order of elements -- 5");
+ th.check(!v.remove(null) ,"checking returnvalue remove -- 6");
+ th.check(v.get(0)=="c" &&v.get(1)=="d", "checking order of elements -- 6");
+
+
+ }
+
+/**
+* implemented. <br>
+* since jdk 1.2
+*/
+ public void test_removeAll() throws UnsupportedOperationException{
+ th.checkPoint("removeAll(java.util.Collection)boolean");
+ Vector v = new Vector();
+
+ /**
+ * Disabled. A little too strict.
+ We will allow removing null from an empty Vector.
+ try { v.removeAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ */
+
+ v.add("a");
+ try { v.removeAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ th.debug(v.toString());
+ v.add("b");
+ th.debug(v.toString());
+ v.add(null);
+ th.debug(v.toString() + " == c");
+ Collection c = (Collection) v;
+ v = buildknownV();
+ th.debug(v.toString() + " == v");
+ th.check(!v.removeAll(c) , "checking returnvalue of removeAll -- 1");
+ th.debug(v.toString());
+ th.check(v.equals(buildknownV()) , "v didn't change");
+ th.debug(c.toString() + " == c");
+ v.addAll(c);
+ th.debug(v.toString() + " v afet addAll(c)");
+ th.check(v.removeAll(c) , "checking returnvalue of removeAll -- 2");
+ th.debug(v.toString() + " v after removeAll(c)");
+ th.check(v.equals(buildknownV()) , "v did change to original v");
+ v.add(2,null);
+ th.debug(v.toString() + "add(2,null)");
+ v.add(4,"a");
+ th.debug(v.toString() + "add(4,a)");
+ v.add(9,"b");
+ th.debug(v.toString() + "add(9,b)");
+ v.addAll(0,c);
+ th.debug(v.toString());
+ v.add(2,null); v.add(4,"a"); v.add(9,"b"); v.addAll(c);
+ th.debug(v.toString());
+ th.check(v.removeAll(c) , "checking returnvalue of removeAll -- 3");
+ th.debug(v.toString());
+ th.check(v, buildknownV(), "make sure all elements are removed");
+ th.debug(v.toString());
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_removeAllElements(){
+ th.checkPoint("removeAllElements()void");
+ Vector v = buildknownV();
+ int c = v.capacity();
+ v.removeAllElements();
+ th.check(v.isEmpty() && (v.size()==0), "make sure all is gone");
+ th.check(c == v.capacity() , "capacity stays the same, got: "+v.capacity()+", but exp.: "+c);
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_removeElement(){
+ th.checkPoint("removeElement(java.lang.Object)boolean");
+ Vector v = buildknownV();
+ v.addElement("a"); v.addElement(null);
+ v.addElement("a"); v.addElement(null);
+ v.addElement("a"); v.addElement(null);
+ th.check(v.removeElement("a") , "element is in there -- 1");
+ th.check(v.size() == 16 , "size is one less -- 1");
+ th.check(!v.removeElement("c") , "element isn't in there -- 1");
+
+ int i; boolean ok = true;
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 1");
+ th.check( (v.elementAt(11) == null) && (v.elementAt(13) == null) && (v.elementAt(15) == null) ,"checking order -- 1");
+ th.check( (v.elementAt(12) == "a") && (v.elementAt(14) == "a") ,"checking order -- 2");
+ ok = true;
+ th.check(v.removeElement("a") , "element is in there -- 2");
+ th.check(v.size() == 15 , "size is one less -- 2");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 2");
+ th.check( (v.elementAt(11) == null) && (v.elementAt(12) == null) && (v.elementAt(14) == null) ,"checking order -- 3");
+ th.check( (v.elementAt(13) == "a") ,"checking order -- 4");
+ ok = true;
+ th.check(v.removeElement("a") , "element is in there -- 3");
+ th.check(v.size() == 14 , "size is one less -- 3");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 3 ");
+ th.check( (v.elementAt(11) == null) && (v.elementAt(12) == null) && (v.elementAt(13) == null) ,"checking order -- 5");
+ th.check(!(v.contains("a")) ,"checking contents -- 1");
+ th.check(!v.removeElement("a") , "element isn't in there -- 2");
+ ok = true;
+ th.check(v.removeElement(null) , "element is in there -- 4");
+ th.check(v.size() == 13 , "size is one less -- 4");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 4");
+ th.check( (v.elementAt(11) == null) && (v.elementAt(12) == null) ,"checking order -- 6");
+ th.check(v.removeElement(null) , "element is in there -- 5");
+ th.check(v.removeElement(null) , "element is in there -- 6");
+ th.check(!v.removeElement(null) , "element isn't in there -- 3");
+
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_removeElementAt(){
+ th.checkPoint("removeElementAt(int)void");
+ Vector v = buildknownV();
+ v.addElement("a"); v.addElement("b");
+ v.addElement("a"); v.addElement(null);
+ v.addElement("a"); v.addElement("b");
+ v.removeElementAt(11);
+ th.check(v.size() == 16 , "size is one less -- 1");
+
+ int i; boolean ok = true;
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 1");
+ th.check( (v.elementAt(11) == "b") && (v.elementAt(13) == null) && (v.elementAt(15) == "b") ,"checking order -- 1");
+ th.check( (v.elementAt(12) == "a") && (v.elementAt(14) == "a") ,"checking order -- 2");
+
+ ok = true;
+ v.removeElementAt(12);
+ th.check(v.size() == 15 , "size is one less -- 2");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 2");
+ th.check( (v.elementAt(11) == "b") && (v.elementAt(12) == null) && (v.elementAt(14) == "b") ,"checking order -- 3");
+ th.check( (v.elementAt(13) == "a") ,"checking order -- 4");
+
+ ok = true;
+ v.removeElementAt(13);
+ th.check(v.size() == 14 , "size is one less -- 3");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 3 ");
+ th.check( (v.elementAt(11) == "b") && (v.elementAt(12) == null) && (v.elementAt(13) == "b") ,"checking order -- 5");
+ th.check(!(v.contains("a")) ,"checking contents -- 1");
+ ok = true;
+ v.removeElementAt(12);
+ th.check(v.size() == 13 , "size is one less -- 4");
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 4");
+ th.check( (v.elementAt(11) == "b") && (v.elementAt(12) == "b") ,"checking order -- 5");
+ th.check(!(v.contains(null)) ,"checking contents -- 2");
+ v = buildknownV();
+ try { v.removeElementAt(-1);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.removeElementAt(11);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2 <br>
+* removeRange is a protected method
+*/
+ public void test_removeRange(){
+ th.checkPoint("removeRange(int,int)void");
+ AcuniaVectorTest xal = new AcuniaVectorTest(buildAL());
+ ArrayList al = buildAL();
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(0,-1);
+ th.fail("should throw an IndexOutOfBoundsException -- 1");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 1");
+
+ try {
+ xal.removeRange(-1,2);
+ th.fail("should throw an IndexOutOfBoundsException -- 2");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 2");
+ try {
+ xal.removeRange(3,2);
+ th.fail("should throw an IndexOutOfBoundsException -- 3");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ catch(IllegalArgumentException iae) {
+ th.fail("should throw an IndexOutOfBoundsException, "
+ + "not IllegalArumentException -- 3");
+ }
+ try {
+ th.check(al.equals(xal) , "ArrayList must not be changed -- 3");
+ }
+ catch(Exception e) { th.debug("bad operations messed up the Vector");}
+ xal = new AcuniaVectorTest(buildAL());
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(3,15);
+ th.fail("should throw an IndexOutOfBoundsException -- 4");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 4");
+ xal = new AcuniaVectorTest(buildAL());
+ xal.ensureCapacity(40);
+ try {
+ xal.removeRange(15,13);
+ th.fail("should throw an IndexOutOfBoundsException -- 5");
+ }
+ catch(IndexOutOfBoundsException ioobe) { th.check(true); }
+ catch(IllegalArgumentException iae) {
+ th.fail("should throw an IndexOutOfBoundsException, "
+ + "not IllegalArumentException -- 5");
+ }
+ try {
+ th.check(xal.equals(al) , "ArrayList must not be changed -- 5");
+ }
+ catch(Exception e) { th.debug("bad operations messed up the Vector");}
+ xal = new AcuniaVectorTest(buildAL());
+ xal.ensureCapacity(40);
+ xal.removeRange(14,14);
+ th.check(xal.size() == 14 , "no elements should have been removed -- 6, size = "+xal.size());
+ xal.removeRange(10,14);
+ th.check(xal.size() == 10 , "4 elements should have been removed");
+ th.check( "a".equals(xal.get(0)) && "a".equals(xal.get(5)) && "a".equals(xal.get(7)) ,"check contents -- 1");
+ xal.removeRange(2,7);
+ th.check(xal.size() == 5 , "5 elements should have been removed");
+ th.check( "a".equals(xal.get(0)) && "c".equals(xal.get(1)) && "a".equals(xal.get(2))
+ && "c".equals(xal.get(3)) && "u".equals(xal.get(4)) ,"check contents -- 2");
+ xal.removeRange(0,2);
+ th.check( "a".equals(xal.get(0)) && "c".equals(xal.get(1)) && "u".equals(xal.get(2)) ,"check contents -- 3");
+ th.check(xal.size() == 3 , "2 elements should have been removed");
+
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2
+*/
+ public void test_retainAll(){
+ th.checkPoint("retainAll(java.util.Collection)boolean");
+ Vector v = new Vector();
+ /**
+ * Disabled. A little too strict.
+ We will allow retaining null from an empty Vector.
+ try { v.retainAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ */
+ v.add("a");
+ try { v.retainAll(null);
+ th.fail("should throw NullPointerException");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.add("b"); v.add(null);
+ Collection c = (Collection) v;
+ v = buildknownV();
+ th.check(v.retainAll(c) , "checking returnvalue of retainAll -- 1");
+ th.check(v.size() == 0 , "v is emptied");
+ v = buildknownV();
+ v.addAll(c);
+ th.check(v.retainAll(c) , "checking returnvalue of retainAll -- 2");
+ th.check(v.get(2)==null && v.get(1)=="b" && v.get(0)=="a" , "v is has elements of c");
+ th.check(v.equals(c) , "extra check on Vector.equals()");
+ th.check(v.size() == 3 , "checking new size() -- 1");
+ v = buildknownV();
+ th.debug(v + " == v");
+ v.add(2,null);
+ th.debug(v + " - add(2,null)");
+ v.add(4,"a");
+ th.debug(v + " - add(4,a)");
+ v.add(9,"b");
+ th.debug(v + " - add(9,b)");
+ th.debug(c + " == c");
+ v.addAll(10,c);
+ th.debug(v + " - add(10,c)");
+ boolean b = v.retainAll(c);
+ th.debug(v + " - retainAll(c)");
+ th.check(b , "checking returnvalue of retainAll -- 3");
+ th.check(v.get(0)==null && v.get(2)=="b" && v.get(1)=="a" , "multiple copies of an element shouldn't be deleted -- 1"+v);
+ th.check(v.get(5)==null && v.get(4)=="b" && v.get(3)=="a" , "multiple copies of an element shouldn't be deleted -- 2"+v);
+ th.check(v.size() == 6 , "checking new size() -- 2");
+ v = buildknownV();
+ v.add(2,null);
+ th.check(v.retainAll(c) , "checking returnvalue of retainAll -- 3");
+ th.check(v.get(0)==null , "checking contents of the vector -- 1");
+ th.check(v.size() == 1 , "checking new size() -- 2");
+
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2
+*/
+ public void test_set() throws UnsupportedOperationException{
+ th.checkPoint("set(int,java.lang.Object)java.lang.Object");
+ Vector v = new Vector();
+ try {
+ v.set(-1,"a");
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 1" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.set(0,"a");
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 2" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ v = buildknownV();
+ try {
+ v.set(-1,"a");
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 3" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.set(11,"a");
+ th.fail("should throw an ArrayIndexOutOfBoundsException -- 4" );
+ }
+ catch (ArrayIndexOutOfBoundsException e) { th.check(true); }
+ th.check( ((Float)v.set(5,"a")).intValue()==5 , "checking returnvalue of set -- 1");
+ th.check( ((Float)v.set(0,null)).intValue()==0 , "checking returnvalue of set -- 2");
+ th.check( v.get(5) == "a" , "checking effect of set -- 1");
+ th.check( v.get(0) == null , "checking effect of set -- 2");
+ th.check( v.set(5,"a") == "a" , "checking returnvalue of set -- 3");
+ th.check( v.set(0,null) == null , "checking returnvalue of set -- 4");
+ th.check( v.get(5) == "a" , "checking effect of set -- 1");
+ th.check( v.get(0) == null , "checking effect of set -- 2");
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_setElementAt(){
+ th.checkPoint("setElementAt(java.lang.Object,int)void");
+ Vector v = buildknownV();
+ try { v.setElementAt("a",-1);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ try { v.setElementAt("a",11);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+
+ v.setElementAt("a",5);
+ th.check(v.elementAt(5) == "a" , "validate set -- 1");
+ v.setElementAt("b",0);
+ th.check(v.elementAt(0) == "b" , "validate set -- 2");
+ v.setElementAt("c",10);
+ th.check(v.elementAt(10) == "c" , "validate set -- 3");
+ v.setElementAt("d",5);
+ th.check(v.elementAt(5) == "d" , "validate set -- 4");
+ th.check(!v.contains("a"), "check contents -- 1");
+ v.setElementAt(null,5);
+ th.check(v.elementAt(5) == null , "validate set -- 5");
+ v.setElementAt("a",5);
+ th.check(v.elementAt(5) == "a" , "validate set -- 6");
+ th.check(!v.contains(null), "check contents -- 2");
+
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_setSize(){
+ th.checkPoint("setSize(int)void");
+ Vector v = buildknownV();
+
+ try { v.setSize(-1);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 1");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true, "good job!"); }
+ int i; boolean ok = true;
+ int size = 25;
+ v.setSize(size);
+ th.check(v.size() == size ,"checking new size -- 1");
+
+ try { v.elementAt(size);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 2");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 1");
+ ok = true;
+ for (i=11 ; i < size ; i++ )
+ { if (v.elementAt(i)!= null) ok = false; }
+ th.check( ok , "null value not added -- 1");
+ size =5;
+ v.setSize(size);
+ th.check(v.size() == size ,"checking new size -- 2");
+ for (i=0 ; i < size ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float value didn't change -- 2");
+ try { v.elementAt(size);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 3");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+ size =0;
+ v.setSize(size);
+ th.check(v.size() == size ,"checking new size -- 3");
+ try { v.elementAt(size);
+ th.fail("should throw ArrayIndexOutOfBoundsException -- 4");
+ }
+ catch (ArrayIndexOutOfBoundsException ae) { th.check(true); }
+
+ }
+
+/**
+* implemented.<br>
+* --> errors in capacity will make ensurecapacity fail
+*/
+ public void test_capacity(){
+ th.checkPoint("capacity()int");
+ Vector v = new Vector(15);
+ th.check(v.capacity() == 15, "checking capacity");
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_ensureCapacity(){
+ th.checkPoint("ensureCapacity(int)void");
+ Vector v = new Vector(10);
+ v.ensureCapacity(9);
+ th.check(v.capacity() == 10, "checking capacity -- 1");
+ v.ensureCapacity(15);
+ th.check(v.capacity() == 20, "checking capacity -- 2");
+ v.ensureCapacity(41);
+ th.check(v.capacity() == 41, "checking capacity -- 3");
+ v = new Vector(10,15);
+ v.ensureCapacity(9);
+ th.check(v.capacity() == 10, "checking capacity -- 4");
+ v.ensureCapacity(15);
+ th.check(v.capacity() == 25, "checking capacity -- 5");
+ v.ensureCapacity(55);
+ th.check(v.capacity() == 55, "checking capacity -- 6");
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_trimToSize(){
+ th.checkPoint("trimToSize()void");
+ Vector v = buildknownV();
+ int size = v.size();
+ v.ensureCapacity(20);
+ v.trimToSize();
+ th.check( v.capacity() == size );
+ int i; boolean ok = true;
+ for (i=0 ; i < 11 ; i++ )
+ { if (((Float)v.elementAt(i)).intValue() != i) ok = false; }
+ th.check( ok , "Float values didn't change -- 1");
+ v.addElement("a");
+ th.check(v.capacity() == 22, "adding an elements raises the capacity");
+ }
+
+/**
+* implemented --> MIGHT NEED EXTRA TESTING. <br>
+* since jdk 1.2 <br>
+* the behaviour of the subList related to the Vector is not tested <br>
+* completly --> may be tested in other places?
+*/
+ public void test_subList() throws UnsupportedOperationException{
+ th.checkPoint("subList(int,int)java.util.List");
+ Vector v = new Vector();
+ try {
+ v.subList(-1,0);
+ th.fail("should throw an IndexOutOfBoundsException -- 1" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.subList(0,1);
+ th.fail("should throw an IndexOutOfBoundsException -- 2" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ th.check(v.subList(0,0).size()==0);
+ }
+ catch (IndexOutOfBoundsException e) { th.fail("shouldn't throw an IndexOutOfBoundsException -- 3" ); }
+ try {
+ v.subList(1,0);
+ th.fail("should throw an IllegalArgumentException -- 4" );
+ }
+ catch (IllegalArgumentException e) { th.check(true); }
+ v = buildknownV();
+ try {
+ v.subList(-1,6);
+ th.fail("should throw an IndexOutOfBoundsException -- 5" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ v.subList(10,9);
+ th.fail("should throw an IllegalArgumentException -- 6" );
+ }
+ catch (IllegalArgumentException e) { th.check(true); }
+ try {
+ v.subList(1,12);
+ th.fail("should throw an IndexOutOfBoundsException -- 7" );
+ }
+ catch (IndexOutOfBoundsException e) { th.check(true); }
+ try {
+ th.check(v.subList(11,11).size() ==0 );
+ }
+ catch (IndexOutOfBoundsException e) { th.fail("shouldn't throw an IndexOutOfBoundsException -- 8" ); }
+ List l = v.subList(0,11);
+ th.check(v.equals(l) , "checking sublist for equality");
+ v.add("a");
+ try { l.get(3);
+ th.fail("should throw a ConcurrentModificationException -- 1" );
+ }
+ catch (ConcurrentModificationException e) { th.check(true); }
+ v = new Vector();
+ v.add("a"); v.add("b"); v.add(null); v.add("c"); v.add("d");
+ l = v.subList(2,5);
+ th.check(l.get(0) == null && l.get(1)=="c" && l.get(2)=="d" , "checking elements -- 1");
+ th.check(l.set(0,"g")==null , "checking set");
+ th.check(v.get(2)=="g" , "modifications in l should reflect on v -- 1");
+ th.check(l.get(0) == "g" && l.get(1)=="c" && l.get(2)=="d" , "checking elements -- 1");
+ l.clear();
+ th.check(v.size()==2 && v.get(0)=="a" && v.get(1)=="b" ,"modifications in l should reflect on v -- 1");
+ //th.debug("DEBUG -- done with check");
+ v.add(null); v.add("c"); v.add("d");
+ //th.debug("DEBUG -- done adding");
+ l = v.subList(2,5);
+ //th.debug("DEBUG -- done sublisting");
+
+ try { v.addAll(l);
+ th.fail("should throw a ConcurrentModificationException");
+ // during this method call l might be overridden ...
+ }
+ catch (ConcurrentModificationException e) { th.check(true); }
+ }
+
+/**
+* implemented.<br>
+* since jdk 1.2
+*/
+ public void test_toArray(){
+ th.checkPoint("toArray()[java.lang.Object");
+ Vector v = new Vector();
+ v.add("a"); v.add(null); v.add("b");
+ Object o[]=v.toArray();
+ th.check(o[0]== "a" && o[1] == null && o[2] == "b" , "checking elements -- 1");
+ th.check(o.length == 3 , "checking size Object array");
+
+ th.checkPoint("toArray([java.lang.Object)[java.lang.Object");
+ v = new Vector();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 1");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ v.add("a"); v.add(null); v.add("b");
+ String sa[] = new String[5];
+ sa[3] = "deleteme"; sa[4] = "leavemealone";
+ th.check(v.toArray(sa) == sa , "sa is large enough, no new array created");
+ th.check(sa[0]=="a" && sa[1] == null && sa[2] == "b" , "checking elements -- 1"+sa[0]+", "+sa[1]+", "+sa[2]);
+ th.check(sa.length == 5 , "checking size Object array");
+ th.check(sa[3]==null && sa[4]=="leavemealone", "check other elements -- 1"+sa[3]+", "+sa[4]);
+ v = buildknownV();
+ try { v.toArray(null);
+ th.fail("should throw NullPointerException -- 2");
+ }
+ catch (NullPointerException ne) { th.check(true); }
+ try { v.toArray(sa);
+ th.fail("should throw an ArrayStoreException");
+ }
+ catch (ArrayStoreException ae) { th.check(true); }
+ v.add(null);
+ Float far[],fa[] = new Float[12];
+ far = (Float[])v.toArray(fa);
+ th.check( far == fa , "returned array is the same");
+ try { sa = (String[])v.toArray(fa);
+ th.fail("should throw ClassCastException");
+ }
+ catch (ClassCastException ce) { th.check(true); }
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_clone(){
+ th.checkPoint("clone()java.lang.Object");
+ Vector cv,v = new Vector(10,5);
+ v.addElement("a") ;v.addElement("b") ;v.addElement("c");
+ cv = (Vector)v.clone();
+ th.check(cv.size() == v.size(), "checking size -- 1");
+ th.check(cv.capacity() , v.capacity(), "checking capacity -- 1");
+ cv.ensureCapacity(11);
+ th.check(cv.capacity() , 15, "capacityIncrement was not defined correctly");
+ //this could fail if capacity is not cloned correctly ...
+ th.check(v.capacity() == 10, "changes in one object doen't affect the other -- 1");
+ v.addElement("d");
+ th.check(cv.size() == 3, "changes in one object doen't affect the other -- 2");
+
+
+ }
+
+/**
+* implementation. <br>
+* overrides Object.equals() since jdk1.2 <br>
+*
+*/
+ public void test_equals(){
+ th.checkPoint("equals(java.lang.Object)boolean");
+ Vector v = buildknownV();
+ th.check(v.equals(buildknownV()), "objects are equal -- 1");
+ v.removeElementAt(1);
+ th.check(!v.equals(buildknownV()), "objects are not equal -- 1");
+ v = buildknownV();
+ v.ensureCapacity(25);
+ th.check(v.equals(buildknownV()), "objects are equal -- 2");
+ ArrayList al = new ArrayList(v);
+ th.check(v.equals(al) , "checking ... -- 1");
+ v = new Vector();
+ al = new ArrayList();
+ th.check(v.equals(al) , "checking ... -- 2");
+ v.add(null);
+ al.add(null);
+ th.check(v.equals(al) , "checking ... -- 3");
+ v.add("a"); v.add(null);
+ al.add(null); al.add("a");
+ th.check(!v.equals(al) , "checking ... -- 4");
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_hashCode(){
+ th.checkPoint("hashCode()int");
+ Vector v = new Vector();
+ th.check(v.hashCode() == 1 , "check calculation hashcode -- 1 - got: "+v.hashCode());
+ v.addElement("a");
+ th.check(v.hashCode() == 31 + "a".hashCode() , "check calculation hashcode -- 2 - got: "+v.hashCode());
+ Integer i = new Integer(324);
+ v.addElement(i);
+ th.check(v.hashCode() == 31*31 + 31*"a".hashCode() + i.hashCode() , "check calculation hashcode -- 3 - got: "+v.hashCode());
+ v = new Vector();
+ v.addElement(null);
+ th.check(v.hashCode() == 31, "check calculation hashcode -- 4 - got: "+v.hashCode());
+
+ }
+
+/**
+* implemented.
+*
+*/
+ public void test_toString(){
+ th.checkPoint("toString()java.lang.String");
+ Vector v =new Vector();
+ th.check(v.toString().equals("[]"), "checking toString -- 1 - got: "+v);
+ v.addElement("a");
+ th.check(v.toString().equals("[a]"), "checking toString -- 2 - got: "+v);
+ Integer i = new Integer(324);
+ v.addElement(i);
+ th.check(v.toString().equals("[a, 324]"), "checking toString -- 3 - got: "+v);
+ v.addElement("abcd");
+ th.check(v.toString().equals("[a, 324, abcd]"), "checking toString -- 4 - got: "+v);
+
+
+ }
+/**
+* implemented. <br>
+* <br>
+* this method isn't defined in Vector but we test the inherited method ...
+*/
+ public void test_iterator(){
+ th.checkPoint("iterator()java.util.Iterator");
+ Vector v = new Vector();
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a");
+ v.add(null); v.add("!");
+ Iterator it = v.iterator();
+ Vector vc = (Vector) v.clone();
+ int i=0;
+ Object o;
+ while (it.hasNext()) {
+ o = it.next();
+ if (!vc.remove(o)) th.debug("didn't find "+o+" in vector");
+ if (i++> 20) break;
+ }
+ th.check( i < 20 , "check for infinite loop");
+ th.check(vc.isEmpty() ,"all elements iterated");
+ try {
+ it.next();
+ th.fail("should throw a NoSuchElementException");
+ }
+ catch(NoSuchElementException nsee) { th.check(true); }
+ it = v.iterator();
+ try {
+ it.remove();
+ th.fail("should throw an IllegalStateException -- 1");
+ }
+ catch(IllegalStateException ise) { th.check(true); }
+ it.next();
+ it.remove();
+ try {
+ it.remove();
+ th.fail("should throw an IllegalStateException -- 2");
+ }
+ catch(IllegalStateException ise) { th.check(true); }
+ v.add("new");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- 1");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true); }
+ try {
+ it.remove();
+ th.fail("should throw a ConcurrentModificationException -- 2");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true); }
+ catch(IllegalStateException ise) { th.debug("ConcurrentModificationException should be triggered first"); }
+
+ it = v.iterator();
+ while (it.hasNext()) {
+ o = it.next();
+ it.remove();
+ if (v.contains(o)) th.fail("removed wrong element when tried to remove "+o+", got:"+v);
+ if (i++> 20) break;
+ }
+ th.check(v.isEmpty() , "all elements are removed");
+// check if modCount is updated correctly !!!
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a");
+ it = v.iterator();
+ v.contains("a");
+ v.containsAll(v);
+ v.indexOf("a");
+ v.isEmpty();
+ v.lastIndexOf("a");
+ v.size();
+ v.get(2);
+ v.hashCode();
+ v.equals(v);
+ v.toArray();
+ v.toArray(new Object[2]);
+ v.copyInto(new Object[10]);
+ v.elementAt(2);
+ v.elements();
+ v.firstElement();
+ v.lastElement();
+ v.capacity();
+ v.trimToSize();
+ v.subList(2,5);
+ v.clone();
+ v.toString();
+ try {
+ it.next();
+ th.check(true, "Ok -- 1");
+ }
+ catch(Exception e) { th.fail("should not throw an Exception, got "+e);}
+ it = v.iterator();
+ v.add(3,"a");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- add(int,Object)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 2"); }
+ it = v.iterator();
+ v.add("a");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- add(Object)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 3"); }
+ it = v.iterator();
+ v.addAll((Collection)v.clone());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- addAll(int,Col)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 4"); }
+ it = v.iterator();
+ v.addAll(3,(Collection)v.clone());
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- addAll(Col)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 5"); }
+ it = v.iterator();
+ v.addElement("b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- addElement");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 6"); }
+ it = v.iterator();
+ v.insertElementAt("b",4);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- insertElementAt");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 7"); }
+ it = v.iterator();
+ v.remove(4);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- remove(int)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 8"); }
+ it = v.iterator();
+ v.remove("b");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- remove(Object)");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 9"); }
+ Vector rv = new Vector();
+ rv.add("a"); rv.add("b");
+ it = v.iterator();
+ v.removeAll(rv);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- removeAll");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 10"); }
+ it = v.iterator();
+ v.removeElement("c");
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- removeElement");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 11"); }
+ it = v.iterator();
+ v.removeElementAt(7);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- removeElementAt");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 12"); }
+ rv = (Vector)v.clone();
+ rv.remove(null); rv.remove(null); rv.remove(null);
+ v.add(null);
+ it = v.iterator();
+ v.retainAll(rv);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- retainAll");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 13"); }
+ it = v.iterator();
+ v.setSize(v.size()-2);
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- setSize");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true, "Ok -- 16"); }
+ it = v.iterator();
+ v.removeAllElements();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- removeAllElements");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true); }
+ catch(NoSuchElementException nsee) { th.debug("ConcurrentModificationException should be triggered first"); }
+ v.add("a");
+ it = v.iterator();
+ v.clear();
+ try {
+ it.next();
+ th.fail("should throw a ConcurrentModificationException -- clear");
+ }
+ catch(ConcurrentModificationException cme) { th.check(true); }
+ catch(NoSuchElementException nsee) { th.debug("ConcurrentModificationException should be triggered first"); }
+
+ }
+
+
+/**
+* not implemented. <br>
+* excessive testing
+*/
+ public void test_behaviour(){
+ th.checkPoint("()");
+ Vector v = buildknownV();
+ ArrayList al = new ArrayList(v);
+ th.check( al.size() == v.size(), "checking size");
+ Iterator it = al.iterator();
+ it.next();
+ try {
+ it.remove();
+ th.check(true , "passed remove");
+ }
+ catch(Exception e) { th.fail("got bad exception, "+e); }
+
+ }
+
+ protected ArrayList buildAL() {
+ Vector v = new Vector();
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ v.add("a"); v.add("c"); v.add("u"); v.add("n"); v.add("i"); v.add("a"); v.add(null);
+ return new ArrayList(v);
+
+ }
+
+// The following fields and method are necessary for extending and Vector.
+
+ private boolean didRemoveRange=false;
+ private int from = -1;
+ private int to = -1;
+
+ public AcuniaVectorTest(Collection c){
+ super(c);
+ }
+
+ public void removeRange(int fidx, int tidx) {
+ didRemoveRange=true;
+ to = tidx;
+ from = fidx;
+ super.removeRange(fidx, tidx);
+ }
+
+ public boolean get_dRR() {
+ return didRemoveRange;
+ }
+ public void set_dRR(boolean b) {
+ didRemoveRange = b;
+ }
+ public int get_to() {
+ return to;
+ }
+ public int get_from() {
+ return from;
+ }
+
+}
diff --git a/gnu/testlet/java/util/Vector/CVS/Entries b/gnu/testlet/java/util/Vector/CVS/Entries
new file mode 100644
index 00000000..01dee36d
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/CVS/Entries
@@ -0,0 +1,8 @@
+/AcuniaVectorTest.java/1.6/Mon Nov 27 18:45:21 2006//
+/TestVector.ser/1.1/Tue Nov 2 20:21:24 2004/-kb/
+/VectorSerialization.java/1.2/Wed Nov 3 13:53:11 2004//
+/copyInto.java/1.1/Tue Aug 23 10:06:27 2005//
+/removeAll.java/1.1/Tue Aug 15 09:48:12 2006//
+/retainAll.java/1.1/Tue Aug 15 09:48:12 2006//
+/subList.java/1.2/Thu Apr 28 07:41:38 2005//
+D
diff --git a/gnu/testlet/java/util/Vector/CVS/Repository b/gnu/testlet/java/util/Vector/CVS/Repository
new file mode 100644
index 00000000..783224d7
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/Vector
diff --git a/gnu/testlet/java/util/Vector/CVS/Root b/gnu/testlet/java/util/Vector/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/Vector/TestVector.ser b/gnu/testlet/java/util/Vector/TestVector.ser
new file mode 100644
index 00000000..849147dc
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/TestVector.ser
Binary files differ
diff --git a/gnu/testlet/java/util/Vector/VectorSerialization.java b/gnu/testlet/java/util/Vector/VectorSerialization.java
new file mode 100644
index 00000000..fea5becf
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/VectorSerialization.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+/* VectorSerialization.java -- Tests the serialization of Vector.
+
+ Copyright (c) 1999 by Free Software Foundation, Inc.
+ Written by Guilhem Lavaux <guilhem@kaffe.org>.
+
+ This program 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, version 2. (see COPYING)
+
+ This program 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 this program; if not, write to the Free Software Foundation
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA */
+
+package gnu.testlet.java.util.Vector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.util.Vector;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectInputStream;
+import java.io.IOException;
+
+public class VectorSerialization implements Testlet
+{
+ public static void main(String args[]) throws IOException
+ {
+ FileOutputStream os = new FileOutputStream("TestVector.ser");
+ ObjectOutputStream oo = new ObjectOutputStream(os);
+ Vector v;
+
+ v = new Vector();
+ v.add(new Integer(10));
+ oo.writeObject(v);
+
+ v = new Vector();
+ v.add(new Integer(20));
+ oo.writeObject(v);
+
+ os.close();
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ String packageName = getClass().getPackage().getName().replace('.','#');
+ InputStream is = harness.getResourceStream(packageName + "#TestVector.ser");
+ ObjectInputStream oi = new ObjectInputStream(is);
+ Vector v;
+
+ v = (Vector) oi.readObject();
+ harness.check(v != null, "returned object null ?");
+ harness.check(v.size(), 1);
+ harness.check(v.get(0), new Integer(10));
+ v = (Vector) oi.readObject();
+ harness.check(v != null, "returned object null ?");
+ harness.check(v.size(), 1);
+ harness.check(v.get(0), new Integer(20));
+ }
+ catch (Exception e)
+ {
+ harness.fail("Caught an unexpected exception");
+ harness.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Vector/copyInto.java b/gnu/testlet/java/util/Vector/copyInto.java
new file mode 100644
index 00000000..9e82bdc6
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/copyInto.java
@@ -0,0 +1,89 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Vector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+/**
+ * Some tests for the copyInto() method in the {@link Vector} class.
+ */
+public class copyInto implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Vector v1 = new Vector();
+ v1.add("A");
+ v1.add("B");
+ v1.add("C");
+ Object[] array1 = new Object[3];
+ v1.copyInto(array1);
+ harness.check(array1[0], "A");
+ harness.check(array1[1], "B");
+ harness.check(array1[2], "C");
+
+ // array longer than necessary
+ Object[] array2 = new Object[] {"1", "2", "3", "4"};
+ v1.copyInto(array2);
+ harness.check(array2[0], "A");
+ harness.check(array2[1], "B");
+ harness.check(array2[2], "C");
+ harness.check(array2[3], "4");
+
+ // array shorter than necessary
+ Object[] array3 = new Object[] {"1", "2"};
+ boolean pass = false;
+ try
+ {
+ v1.copyInto(array3);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ harness.check(array3[0], "1"); // the method fails without modifying the
+ harness.check(array3[1], "2"); // array
+
+ // try null array
+ pass = false;
+ try
+ {
+ v1.copyInto(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/java/util/Vector/removeAll.java b/gnu/testlet/java/util/Vector/removeAll.java
new file mode 100644
index 00000000..6c056332
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/removeAll.java
@@ -0,0 +1,63 @@
+/* removeAll.java -- Checks some functionality in Vector.removeAll()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.util.Vector;
+
+import java.util.Vector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class removeAll implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testNull(harness);
+ }
+
+ /**
+ * Checks if and when null arguments to removeAll() are allowed.
+ *
+ * @param h the test harness
+ */
+ private void testNull(TestHarness h)
+ {
+ // Check empty vector.
+ Vector v = new Vector();
+ v.removeAll(null);
+ h.check(true); // If we got here, there was no NPE.
+
+ // Check non-empty vector.
+ v.add(new Object());
+ try
+ {
+ v.removeAll(null);
+ h.fail("NPE should be thrown");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Vector/retainAll.java b/gnu/testlet/java/util/Vector/retainAll.java
new file mode 100644
index 00000000..57b2e72b
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/retainAll.java
@@ -0,0 +1,63 @@
+/* retainAll.java -- Checks functionality in retainAll()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.java.util.Vector;
+
+import java.util.Vector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class retainAll implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testNull(harness);
+ }
+
+ /**
+ * Checks if and when null arguments to removeAll() are allowed.
+ *
+ * @param h the test harness
+ */
+ private void testNull(TestHarness h)
+ {
+ // Check empty vector.
+ Vector v = new Vector();
+ v.removeAll(null);
+ h.check(true); // If we got here, there was no NPE.
+
+ // Check non-empty vector.
+ v.add(new Object());
+ try
+ {
+ v.retainAll(null);
+ h.fail("NPE should be thrown");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/Vector/subList.java b/gnu/testlet/java/util/Vector/subList.java
new file mode 100644
index 00000000..18ddd59c
--- /dev/null
+++ b/gnu/testlet/java/util/Vector/subList.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: ../List/subList
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.java.util.Vector;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+/**
+ * Some tests for the subList() method in the {@link Vector} class.
+ */
+public class subList implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ gnu.testlet.java.util.List.subList.testAll(Vector.class, harness);
+ }
+
+}
diff --git a/gnu/testlet/java/util/concurrent/CVS/Entries b/gnu/testlet/java/util/concurrent/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/concurrent/CVS/Entries.Log b/gnu/testlet/java/util/concurrent/CVS/Entries.Log
new file mode 100644
index 00000000..4bf298ae
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/CopyOnWriteArrayList////
diff --git a/gnu/testlet/java/util/concurrent/CVS/Repository b/gnu/testlet/java/util/concurrent/CVS/Repository
new file mode 100644
index 00000000..fc8a81c4
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/concurrent
diff --git a/gnu/testlet/java/util/concurrent/CVS/Root b/gnu/testlet/java/util/concurrent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllAbsentTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllAbsentTest.java
new file mode 100644
index 00000000..1acf2994
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllAbsentTest.java
@@ -0,0 +1,64 @@
+/* AddAllAbsentTest.java -- test for addAllAbsent.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class AddAllAbsentTest implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ list.add("#" + i);
+ }
+
+ List<String> list2 = new ArrayList<String>();
+
+ for (int i = 9; i < 20; i++)
+ list2.add("#" + i);
+
+ list.addAllAbsent(list2);
+
+ harness.check(list.size() == 20);
+
+ int i = 0;
+ for (ListIterator<String> elements = list.listIterator();
+ elements.hasNext();)
+ {
+ harness.check(elements.next().equals("#" + i));
+ i++;
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllTest.java
new file mode 100644
index 00000000..27cc1164
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/AddAllTest.java
@@ -0,0 +1,142 @@
+/* AddAllTest.java -- test for addAll.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class AddAllTest implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testAdd(harness);
+ testExceptions(harness);
+ }
+
+ private void testExceptions(TestHarness harness)
+ {
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ List<Integer> list2 = new ArrayList<Integer>();
+ list2.add(0);
+
+ harness.checkPoint("addAll - IndexOutOfBoundsException");
+
+ try
+ {
+ // try with index < 0 first
+ list.addAll(-1, list2);
+
+ // we should not get here
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false, "Exception of unexpected type: " + e.getMessage());
+ }
+
+ list.add(0);
+ list.add(1);
+
+ try
+ {
+ // try with index > list.size() first
+ list.addAll(list.size() + 1, list2);
+
+ // we should not get here
+ harness.check(false);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false, "Exception of unexpected type: " + e.getMessage());
+ }
+
+ harness.checkPoint("addAll - NullPointerException");
+
+ try
+ {
+ // finally try NullPointerException
+ list.addAll(null);
+
+ // we should not get here
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false, "Exception of unexpected type: " + e.getMessage());
+ }
+ }
+
+ private void testAdd(TestHarness harness)
+ {
+ harness.checkPoint("addAll");
+
+ int [] expected =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
+ };
+
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ for (int i = 0; i < 10; i++)
+ list.add(i);
+
+ List<Integer> list2 = new ArrayList<Integer>();
+ for (int i = 5; i < 15; i++)
+ list2.add(i);
+
+ list.addAll(list2);
+
+ harness.check(list.size() == 20);
+
+ int i = 0;
+ for (ListIterator<Integer> elements = list.listIterator();
+ elements.hasNext();)
+ {
+ harness.check(elements.next().intValue() == expected[i++]);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Entries b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Entries
new file mode 100644
index 00000000..57b3f09c
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Entries
@@ -0,0 +1,10 @@
+/AddAllAbsentTest.java/1.1/Sat Nov 24 22:43:59 2007//
+/AddAllTest.java/1.1/Sat Nov 24 22:43:59 2007//
+/Clone.java/1.1/Tue Mar 25 20:04:35 2008//
+/Equals.java/1.1/Tue Mar 25 20:04:35 2008//
+/RemoveAllTest.java/1.1/Sat Nov 24 22:43:59 2007//
+/RemoveTest.java/1.1/Sat Nov 24 22:43:59 2007//
+/RetainAllTest.java/1.1/Sat Nov 24 22:43:59 2007//
+/SubListTest.java/1.2/Wed Mar 26 16:11:56 2008//
+/TestIterators.java/1.1/Sat Nov 24 22:43:59 2007//
+D
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Repository b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Repository
new file mode 100644
index 00000000..a8f1c876
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Root b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Clone.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Clone.java
new file mode 100644
index 00000000..512b9a47
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Clone.java
@@ -0,0 +1,59 @@
+/* Clone.java -- test for clone.
+ Copyright (C) 2008 Mario Torre <mario.torre@aicas.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.Iterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@aicas.com>
+ */
+public class Clone
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ list.add("#" + i);
+ }
+
+ CopyOnWriteArrayList<String> cloned =
+ (CopyOnWriteArrayList<String>) list.clone();
+
+ harness.check(list.size() == 10);
+ harness.check(cloned.size() == list.size());
+
+ Iterator<String> original = list.iterator();
+ for (String element : cloned)
+ {
+ harness.check(original.hasNext());
+ harness.check(element, original.next());
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Equals.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Equals.java
new file mode 100644
index 00000000..b5126456
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/Equals.java
@@ -0,0 +1,81 @@
+/* Equals.java -- test for equals.
+ Copyright (C) 2008 Mario Torre <mario.torre@aicas.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@aicas.com>
+ */
+public class Equals
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<String> one = new CopyOnWriteArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ one.add("#" + i);
+ }
+
+ CopyOnWriteArrayList<String> two =
+ (CopyOnWriteArrayList<String>) one.clone();
+
+ harness.checkPoint("cloned CopyOnWriteArrayList");
+ harness.check(one.equals(two));
+
+ two.clear();
+ two = new CopyOnWriteArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ two.add("#" + i);
+ }
+
+ harness.checkPoint("both CopyOnWriteArrayList, same elements, different " +
+ "instances");
+ harness.check(one.equals(two));
+
+ List<String> someList = new ArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ someList.add("#" + i);
+ }
+
+ harness.checkPoint("Different list, CopyOnWriteArrayList and ArrayList, " +
+ "but same elements");
+ harness.check(one.equals(someList));
+
+ // remove one element
+ one.remove(one.size() - 1);
+
+ harness.checkPoint("removed elements from CopyOnWriteArrayList");
+ harness.check(!one.equals(two));
+ harness.check(!one.equals(someList));
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveAllTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveAllTest.java
new file mode 100644
index 00000000..7a6e9567
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveAllTest.java
@@ -0,0 +1,66 @@
+/* RemoveAllTest.java -- test for removeAll.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+ */
+
+// Tags: JDK1.5
+
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class RemoveAllTest
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
+ for (int i = 0; i < 10; i++)
+ {
+ list.add("#" + i);
+ }
+
+ List<String> list2 = new ArrayList<String>();
+
+ for (int i = 3; i < 20; i++)
+ list2.add("#" + i);
+
+ list.removeAll(list2);
+
+ harness.check(list.size() == 3);
+
+ int i = 0;
+ for (ListIterator<String> elements = list.listIterator();
+ elements.hasNext();)
+ {
+ harness.check(elements.next().equals("#" + i));
+ i++;
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveTest.java
new file mode 100644
index 00000000..37fd98b2
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RemoveTest.java
@@ -0,0 +1,72 @@
+/* RemoveTest.java -- test for remove.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class RemoveTest implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ List<Integer> data = new ArrayList<Integer>();
+ for (int i = 0; i < 10; i++)
+ data.add(i);
+
+ list.addAll(data);
+
+ harness.check(list.size() == 10);
+
+ Integer el = list.remove(5);
+
+ harness.check(el.intValue() == 5);
+ harness.check(list.size() == 9);
+
+ harness.check(list.add(el));
+ harness.check(list.size() == 10);
+
+ harness.check(list.remove(el));
+ harness.check(list.size() == 9);
+
+ int [] expected =
+ {
+ 0, 1, 2, 3, 4, 6, 7, 8, 9
+ };
+
+ int i = 0;
+ for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext(); )
+ harness.check(iterator.next().intValue() == expected[i++]);
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RetainAllTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RetainAllTest.java
new file mode 100644
index 00000000..6c84619a
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/RetainAllTest.java
@@ -0,0 +1,65 @@
+/* RetainAllTest.java -- test for retainAll
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+ */
+
+// Tags: JDK1.5
+
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class RetainAllTest
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ for (int i = 0; i < 10; i++)
+ list.add(i);
+
+ List<Integer> list2 = new ArrayList<Integer>();
+ for (int i = 5; i < 15; i++)
+ list2.add(i);
+
+ list.retainAll(list2);
+
+ harness.check(list.size() == 5);
+
+ int i = 5;
+ for (ListIterator<Integer> elements = list.listIterator();
+ elements.hasNext();)
+ {
+ harness.check(elements.next().intValue() == i);
+ i++;
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java
new file mode 100644
index 00000000..cdf7ea36
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/SubListTest.java
@@ -0,0 +1,122 @@
+/* SubListTest.java -- Test for subList.
+ Copyright (C) 2007 Mario Torre <neugens@liamasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ConcurrentModificationException;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@liamasoftware.net>
+ */
+public class SubListTest implements Testlet
+{
+ private int [] data = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+ };
+
+ public void test(TestHarness harness)
+ {
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ for (Integer element : data)
+ list.add(element);
+
+ List<Integer> subList = list.subList(5, 15);
+ int i = 5;
+ for (int element : subList)
+ {
+ harness.check(element == i);
+ i++;
+ }
+
+ // remove all the element from the subList and check the elements in the
+ // list
+ harness.checkPoint("clear list");
+
+ subList.clear();
+
+ harness.check(subList.size() == 0);
+ harness.check(list.size() == 10);
+
+ i = 0;
+ for (int element : list)
+ {
+ harness.check(element == i);
+ i++;
+ if (i > 4 && i < 15)
+ i = 15;
+ }
+
+ harness.checkPoint("ConcurrentModificationException");
+
+ list.clear();
+ for (Integer element : data)
+ list.add(element);
+
+ subList = list.subList(5, 15);
+ list.remove(5);
+
+ try
+ {
+ for (int element : subList)
+ {
+ // we should never get here
+ harness.check(false);
+ }
+ }
+ catch (ConcurrentModificationException e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("Remove elements from SubList");
+
+ list.clear();
+ for (Integer element : data)
+ list.add(element);
+
+ subList = list.subList(5, 15);
+
+ subList.remove(0);
+ subList.remove(0);
+
+ harness.check(subList.size() == 8);
+ harness.check(list.size() == 18);
+
+ subList.add(0, 6);
+ subList.add(0, 5);
+ i = 5;
+ for (int element : subList)
+ {
+ harness.check(element == i);
+ i++;
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/TestIterators.java b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/TestIterators.java
new file mode 100644
index 00000000..03df8dc3
--- /dev/null
+++ b/gnu/testlet/java/util/concurrent/CopyOnWriteArrayList/TestIterators.java
@@ -0,0 +1,153 @@
+/* TestIterators.java -- test for the Iterator and ListIterator methods.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.concurrent.CopyOnWriteArrayList;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class TestIterators implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ iteratorTests(harness);
+ listIteratorTests(harness);
+ }
+
+ private void listIteratorTests(TestHarness harness)
+ {
+ harness.checkPoint("listIterator");
+
+ int [] expected =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9
+ };
+
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ java.util.List<Integer> data = new ArrayList<Integer>();
+
+ for (int i = 0; i < 10; i++)
+ data.add(i);
+
+ // list.add copy the storage array each time is called, adding elements
+ // that way we avoid all this copying
+ list.addAll(data);
+
+ ListIterator<Integer> iterator = list.listIterator();
+ int i = 0;
+
+ harness.checkPoint("listIterator - forward");
+
+ while (iterator.hasNext())
+ harness.check(iterator.next().intValue() == expected[i++]);
+
+ harness.checkPoint("listIterator - backward");
+
+ while (iterator.hasPrevious())
+ harness.check(iterator.previous().intValue() == expected[--i]);
+
+ harness.checkPoint("listIterator - forward from element");
+
+ iterator = list.listIterator(5);
+ i = 5;
+
+ while (iterator.hasNext())
+ harness.check(iterator.next().intValue() == expected[i++]);
+
+ harness.checkPoint("listIterator - backward from element");
+
+ while (iterator.hasPrevious())
+ harness.check(iterator.previous().intValue() == expected[--i]);
+ }
+
+ private void iteratorTests(TestHarness harness)
+ {
+ harness.checkPoint("iterator");
+
+ int [] expected =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+ };
+
+ CopyOnWriteArrayList<Integer> list =
+ new CopyOnWriteArrayList<Integer>();
+
+ java.util.List<Integer> data = new ArrayList<Integer>();
+
+ for (int i = 0; i < 10; i++)
+ data.add(i);
+
+ // list.add copy the storage array each time is called, adding elements
+ // that way we avoid all this copying
+ list.addAll(data);
+
+ int i = 0;
+ for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext(); )
+ {
+ harness.check(iterator.next().intValue() == expected[i++]);
+ }
+
+ harness.checkPoint("iterator - snapshot");
+ Iterator<Integer> iterator = list.iterator();
+
+ list.clear();
+
+ harness.check(list.size() == 0);
+
+ // the iterator contains a snapshot of the list so resetting the list
+ // has no effect to the content of the iterator.
+
+ i = 0;
+ while (iterator.hasNext())
+ harness.check(iterator.next().intValue() == expected[i++]);
+
+ harness.checkPoint("iterator - remove");
+
+ list.addAll(data);
+
+ try
+ {
+ for (Iterator<Integer> iter = list.iterator(); iter.hasNext(); )
+ {
+ iter.remove();
+ harness.check(false);
+ }
+
+ harness.check(false);
+ }
+ catch (UnsupportedOperationException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/jar/Attributes/CVS/Entries b/gnu/testlet/java/util/jar/Attributes/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Attributes/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/jar/Attributes/CVS/Repository b/gnu/testlet/java/util/jar/Attributes/CVS/Repository
new file mode 100644
index 00000000..213cdca9
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Attributes/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/jar/Attributes
diff --git a/gnu/testlet/java/util/jar/Attributes/CVS/Root b/gnu/testlet/java/util/jar/Attributes/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Attributes/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/jar/CVS/Entries b/gnu/testlet/java/util/jar/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/jar/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/jar/CVS/Entries.Log b/gnu/testlet/java/util/jar/CVS/Entries.Log
new file mode 100644
index 00000000..e90c611d
--- /dev/null
+++ b/gnu/testlet/java/util/jar/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/Attributes////
+A D/JarFile////
+A D/JarInputStream////
+A D/Manifest////
diff --git a/gnu/testlet/java/util/jar/CVS/Repository b/gnu/testlet/java/util/jar/CVS/Repository
new file mode 100644
index 00000000..7b78e7e5
--- /dev/null
+++ b/gnu/testlet/java/util/jar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/jar
diff --git a/gnu/testlet/java/util/jar/CVS/Root b/gnu/testlet/java/util/jar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/jar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/jar/JarFile/CVS/Entries b/gnu/testlet/java/util/jar/JarFile/CVS/Entries
new file mode 100644
index 00000000..642d40d1
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/CVS/Entries
@@ -0,0 +1,5 @@
+/TestOfManifest.java/1.2/Sat Nov 25 23:49:52 2006//
+/basic.java/1.5/Wed Mar 15 22:16:28 2006//
+/jartest.jar/1.1/Mon Feb 3 13:39:28 2003/-kb/
+/jfaceSmall.jar/1.1/Mon Nov 20 09:22:39 2006/-kb/
+D
diff --git a/gnu/testlet/java/util/jar/JarFile/CVS/Repository b/gnu/testlet/java/util/jar/JarFile/CVS/Repository
new file mode 100644
index 00000000..7772a38f
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/jar/JarFile
diff --git a/gnu/testlet/java/util/jar/JarFile/CVS/Root b/gnu/testlet/java/util/jar/JarFile/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/jar/JarFile/TestOfManifest.java b/gnu/testlet/java/util/jar/JarFile/TestOfManifest.java
new file mode 100644
index 00000000..ade13ef7
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/TestOfManifest.java
@@ -0,0 +1,169 @@
+/* TestOfManifest.java
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.util.jar.JarFile;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.cert.Certificate;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+/**
+ * Simple test for validating Marco Trudel's patch for parsing long file names
+ * in a Jar file's manifest.
+ */
+public class TestOfManifest
+ implements Testlet
+{
+ private static final String FILENAME = "jfaceSmall.jar";
+ private static final String FILEPATH = "gnu#testlet#java#util#jar#JarFile#"
+ + FILENAME;
+ private static final String ENTRYNAME =
+ "org/eclipse/jface/viewers/TreeViewer$TreeColorAndFontCollector.class";
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ checkManifestEntries(harness);
+ checkCertificates(harness);
+ }
+
+ private void checkManifestEntries(TestHarness harness)
+ {
+ harness.checkPoint("checkManifestEntries");
+ try
+ {
+ File file = harness.getResourceFile(FILEPATH);
+ JarFile jarFile = new JarFile(file);
+ readEntries(jarFile); // will parse the signatures
+ boolean ok = readCertificates(harness, jarFile);
+ harness.check(ok, "Jar entry MUST be signed");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("checkManifestEntries: " + x);
+ }
+ }
+
+ /**
+ * @param harness this test-harness.
+ */
+ private void checkCertificates(TestHarness harness)
+ {
+ harness.checkPoint("checkCertificates");
+ try
+ {
+ File file = harness.getResourceFile(FILEPATH);
+ JarFile jarFile = new JarFile(file, true);
+ JarEntry je = jarFile.getJarEntry(ENTRYNAME);
+
+ Certificate[] certsBefore = je.getCertificates();
+ int certsBeforeCount = certsBefore == null ? 0 : certsBefore.length;
+ harness.verbose("*** before: " + certsBeforeCount);
+ harness.check(certsBeforeCount == 0, "Certificate count MUST be 0");
+
+ read1Entry(jarFile, je);
+
+ Certificate[] certsAfter = je.getCertificates();
+ int certsAfterCount = certsAfter == null ? 0 : certsAfter.length;
+ harness.verbose("*** after: " + certsAfterCount);
+ harness.check(certsAfterCount == 1, "Certificate count MUST be 1");
+ harness.check(certsBeforeCount != certsAfterCount,
+ "Certificate counts MUST NOT be the same");
+
+ JarEntry je_ = jarFile.getJarEntry(ENTRYNAME);
+ Certificate[] sameCerts = je_.getCertificates();
+ int sameCertsCount = sameCerts == null ? 0 : sameCerts.length;
+ harness.verbose("*** w/ new entry: " + sameCertsCount);
+ harness.check(sameCertsCount == 1,
+ "Certificate count (w/ new entry) MUST be 1");
+ harness.check(certsAfterCount == sameCertsCount,
+ "Certificate counts (w/ new entry) MUST be the same");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("checkCertificates: " + x);
+ }
+ }
+
+ private static void readEntries(JarFile jarFile) throws Exception
+ {
+ for (Enumeration entries = jarFile.entries(); entries.hasMoreElements();)
+ read1Entry(jarFile, (JarEntry) entries.nextElement());
+ }
+
+ private static void read1Entry(JarFile jar, JarEntry entry) throws Exception
+ {
+ InputStream stream = null;
+ try
+ {
+ stream = jar.getInputStream(entry);
+ byte[] ba = new byte[8192];
+ int n;
+ while ((n = stream.read(ba)) >= 0)
+ /* keep reading */;
+ }
+ finally
+ {
+ if (stream != null)
+ try
+ {
+ stream.close();
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+ }
+
+ private boolean readCertificates(TestHarness harness, JarFile jarFile)
+ {
+ for (Enumeration entries = jarFile.entries(); entries.hasMoreElements();)
+ {
+ JarEntry entry = (JarEntry) entries.nextElement();
+ if (entry.isDirectory())
+ continue;
+ Certificate[] certs = entry.getCertificates();
+ if (certs == null || certs.length == 0) // No certificate
+ {
+ if (! entry.getName().startsWith("META-INF"))
+ {
+ harness.verbose("Entry " + entry.getName() + " in jar file "
+ + FILENAME + " does not have a certificate");
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/util/jar/JarFile/basic.java b/gnu/testlet/java/util/jar/JarFile/basic.java
new file mode 100644
index 00000000..40ceb328
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/basic.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 John Leuner
+
+// 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.java.util.jar.JarFile;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.Enumeration;
+import java.util.jar.*;
+import java.io.*;
+
+public class basic implements Testlet
+{
+ public void test_jar(TestHarness harness, JarFile jarfile)
+ {
+ try {
+ harness.checkPoint("manifest tests");
+ Manifest m = jarfile.getManifest();
+
+ harness.checkPoint("entries");
+
+ /* I'm not sure if the order of these entries has to be in this order or not.
+ But it would seem likely that someone will write a program expecting the files to be enumerated the same way every time
+ */
+
+ int item = 0;
+ Enumeration e = jarfile.entries();
+ while(e.hasMoreElements())
+ {
+ JarEntry je = (JarEntry) e.nextElement();
+ String n = je.getName();
+ String s = new BufferedReader(new InputStreamReader(jarfile.getInputStream(je))).readLine();
+
+ if ("META-INF/".equals(n))
+ harness.check(s == null);
+ else if ("META-INF/MANIFEST.MF".equals(n))
+ harness.check(s.equals("Manifest-Version: 1.0"));
+ else if ("file1".equals(n))
+ harness.check(s.equals("this jar file was created with the jar tool for IBM JDK 1.3"));
+ else if ("file2".equals(n))
+ harness.check(s.equals("We seek peace. We strive for peace. And sometimes peace must be defended. A future lived at the mercy of terrible threats is no peace at all. If war is forced upon us, we will fight in a just cause and by just means -- sparing, in every way we can, the innocent. And if war is forced upon us, we will fight with the full force and might of the United States military -- and we will prevail."));
+ else if ("file3".equals(n))
+ harness.check(s.equals("I am he as you are he as you are me and we are all together."));
+ else
+ harness.check(false, "Unexpected entry: " + n);
+
+ item++;
+ }
+
+ harness.check(item, 5);
+
+ jarfile.close();
+
+ } catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false, "all jarfile tests failed");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ test_jar(harness,
+ new JarFile (harness.getResourceFile("gnu#testlet#java#util#jar#JarFile#jartest.jar")));
+ }
+ catch (gnu.testlet.ResourceNotFoundException _)
+ {
+ // FIXME: all tests should fail.
+ harness.check(false, "all basic tests failed");
+ }
+ catch (IOException _)
+ {
+ // FIXME: all tests should fail.
+ harness.check(false, "all basic tests failed (ioexception)");
+ }
+
+ }
+}
diff --git a/gnu/testlet/java/util/jar/JarFile/jartest.jar b/gnu/testlet/java/util/jar/JarFile/jartest.jar
new file mode 100644
index 00000000..e552e260
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/jartest.jar
Binary files differ
diff --git a/gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar b/gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar
new file mode 100644
index 00000000..9e5c628b
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarFile/jfaceSmall.jar
Binary files differ
diff --git a/gnu/testlet/java/util/jar/JarInputStream/CVS/Entries b/gnu/testlet/java/util/jar/JarInputStream/CVS/Entries
new file mode 100644
index 00000000..423a696c
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarInputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/getNextEntry.java/1.2/Thu Jun 3 14:31:16 2004//
+D
diff --git a/gnu/testlet/java/util/jar/JarInputStream/CVS/Repository b/gnu/testlet/java/util/jar/JarInputStream/CVS/Repository
new file mode 100644
index 00000000..2e66afd4
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/jar/JarInputStream
diff --git a/gnu/testlet/java/util/jar/JarInputStream/CVS/Root b/gnu/testlet/java/util/jar/JarInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java b/gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java
new file mode 100644
index 00000000..7ce06fd4
--- /dev/null
+++ b/gnu/testlet/java/util/jar/JarInputStream/getNextEntry.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Mark Wielaard
+
+// 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.java.util.jar.JarInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.jar.*;
+import java.io.*;
+
+public class getNextEntry implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ JarOutputStream jos = new JarOutputStream(baos);
+ JarEntry entry = new JarEntry("test-entry");
+ jos.putNextEntry(entry);
+ jos.write(1);
+ jos.write(2);
+ jos.write(3);
+ jos.close();
+ baos.close();
+ byte[] bs = baos.toByteArray();
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(bs);
+ JarInputStream jis = new JarInputStream(bais);
+ entry = jis.getNextJarEntry();
+ harness.check(entry.getName(), "test-entry");
+ harness.check(jis.read(), 1);
+ harness.check(jis.read(), 2);
+ harness.check(jis.read(), 3);
+ harness.check(jis.read(), -1);
+ jis.close();
+ bais.close();
+ }
+ catch (Throwable t)
+ {
+ harness.debug(t);
+ harness.check(false, "Unexpected IOException");
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/jar/Manifest/CVS/Entries b/gnu/testlet/java/util/jar/Manifest/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Manifest/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/jar/Manifest/CVS/Repository b/gnu/testlet/java/util/jar/Manifest/CVS/Repository
new file mode 100644
index 00000000..91902053
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Manifest/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/jar/Manifest
diff --git a/gnu/testlet/java/util/jar/Manifest/CVS/Root b/gnu/testlet/java/util/jar/Manifest/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/jar/Manifest/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/CVS/Entries b/gnu/testlet/java/util/logging/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/logging/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/logging/CVS/Entries.Log b/gnu/testlet/java/util/logging/CVS/Entries.Log
new file mode 100644
index 00000000..dbb8e4ac
--- /dev/null
+++ b/gnu/testlet/java/util/logging/CVS/Entries.Log
@@ -0,0 +1,8 @@
+A D/Handler////
+A D/Level////
+A D/LogManager////
+A D/LogRecord////
+A D/Logger////
+A D/LoggingMXBean////
+A D/SocketHandler////
+A D/XMLFormatter////
diff --git a/gnu/testlet/java/util/logging/CVS/Repository b/gnu/testlet/java/util/logging/CVS/Repository
new file mode 100644
index 00000000..4a67b60c
--- /dev/null
+++ b/gnu/testlet/java/util/logging/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging
diff --git a/gnu/testlet/java/util/logging/CVS/Root b/gnu/testlet/java/util/logging/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/Handler/CVS/Entries b/gnu/testlet/java/util/logging/Handler/CVS/Entries
new file mode 100644
index 00000000..61c3cc5a
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/CVS/Entries
@@ -0,0 +1,11 @@
+/TestErrorManager.java/1.1/Wed Mar 10 23:20:42 2004//
+/TestHandler.java/1.2/Thu Jun 3 14:31:16 2004//
+/TestSecurityManager.java/1.2/Thu May 11 12:32:50 2006//
+/getErrorManager.java/1.1/Wed Mar 10 23:20:42 2004//
+/isLoggable.java/1.2/Thu Jun 3 14:31:16 2004//
+/reportError.java/1.1/Wed Mar 10 23:20:42 2004//
+/setEncoding.java/1.1/Wed Mar 10 23:20:42 2004//
+/setErrorManager.java/1.1/Wed Mar 10 23:20:42 2004//
+/setFilter.java/1.1/Wed Mar 10 23:20:42 2004//
+/setLevel.java/1.1/Wed Mar 10 23:20:42 2004//
+D
diff --git a/gnu/testlet/java/util/logging/Handler/CVS/Repository b/gnu/testlet/java/util/logging/Handler/CVS/Repository
new file mode 100644
index 00000000..86c8e77a
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/Handler
diff --git a/gnu/testlet/java/util/logging/Handler/CVS/Root b/gnu/testlet/java/util/logging/Handler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/Handler/TestErrorManager.java b/gnu/testlet/java/util/logging/Handler/TestErrorManager.java
new file mode 100644
index 00000000..9238550c
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/TestErrorManager.java
@@ -0,0 +1,61 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import java.util.logging.ErrorManager;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestErrorManager
+ extends ErrorManager
+{
+ private String lastMessage;
+ private Exception lastException;
+ private int lastErrorCode;
+
+ public TestErrorManager()
+ {
+ }
+
+ public void error(String s, Exception ex, int code)
+ {
+ this.lastMessage = s;
+ this.lastException = ex;
+ this.lastErrorCode = code;
+ }
+
+ public String getLastMessage()
+ {
+ return lastMessage;
+ }
+
+ public Exception getLastException()
+ {
+ return lastException;
+ }
+
+ public int getLastErrorCode()
+ {
+ return lastErrorCode;
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/TestHandler.java b/gnu/testlet/java/util/logging/Handler/TestHandler.java
new file mode 100644
index 00000000..c1051602
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/TestHandler.java
@@ -0,0 +1,59 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestHandler
+ extends Handler
+{
+ public TestHandler()
+ {
+ }
+
+ public void flush()
+ {
+ }
+
+ public void close()
+ {
+ }
+
+ public void publish(LogRecord record)
+ {
+ }
+
+
+ /**
+ * Invokes the reportError method, which has protected access
+ * and cannot be called from the outside.
+ */
+ public void invokeReportError(String msg, Exception ex, int code)
+ {
+ reportError(msg, ex, code);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/TestSecurityManager.java b/gnu/testlet/java/util/logging/Handler/TestSecurityManager.java
new file mode 100644
index 00000000..ed4757e5
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/TestSecurityManager.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import java.security.Permission;
+import java.security.AccessControlException;
+import java.util.logging.LoggingPermission;
+import java.util.logging.LogManager;
+
+/**
+ * A SecurityManager that can be told whether or not to grant
+ * LoggingPermission.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestSecurityManager
+ extends SecurityManager
+{
+ private boolean grantLogging = false;
+
+ private final Permission controlPermission
+ = new LoggingPermission("control", null);
+
+ private SecurityManager oldManager;
+
+ public void checkPermission(Permission perm)
+ {
+ if (controlPermission.implies(perm) && !grantLogging)
+ throw new AccessControlException("access denied", perm);
+ }
+
+
+ public void setGrantLoggingControl(boolean grant)
+ {
+ grantLogging = grant;
+ }
+
+
+ public void install()
+ {
+ // Make sure the LogManager is fully installed first.
+ LogManager lm = LogManager.getLogManager();
+
+ SecurityManager oldsm = System.getSecurityManager();
+
+ if (oldsm == this)
+ throw new IllegalStateException("already installed");
+
+ oldManager = oldsm;
+ System.setSecurityManager(this);
+ }
+
+
+ public void uninstall()
+ {
+ System.setSecurityManager(oldManager);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/getErrorManager.java b/gnu/testlet/java/util/logging/Handler/getErrorManager.java
new file mode 100644
index 00000000..f5994e21
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/getErrorManager.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.ErrorManager;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getErrorManager
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+ private final TestHandler handler = new TestHandler();
+ private final ErrorManager mgr = new ErrorManager();
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1: getErrorManager() [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.getErrorManager();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #2 and #3: getErrorManager() [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setErrorManager(mgr);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught, null); // Check #2.
+ th.check(handler.getErrorManager() == mgr); // Check #3.
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/isLoggable.java b/gnu/testlet/java/util/logging/Handler/isLoggable.java
new file mode 100644
index 00000000..118b159a
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/isLoggable.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class isLoggable
+ implements Testlet
+{
+ TestSecurityManager sec = new TestSecurityManager();
+ TestHandler handler = new TestHandler();
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1: isLoggable(null).
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.isLoggable(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof NullPointerException);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/reportError.java b/gnu/testlet/java/util/logging/Handler/reportError.java
new file mode 100644
index 00000000..0e19e312
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/reportError.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.4
+// Uses: TestErrorManager TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.ErrorManager;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class reportError
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+ private final TestHandler handler = new TestHandler();
+ private final TestErrorManager mgr = new TestErrorManager();
+ private final Exception somex = new IllegalStateException();
+
+ public void test(TestHarness th)
+ {
+ sec.install();
+ try
+ {
+ sec.setGrantLoggingControl(true);
+ handler.setErrorManager(mgr);
+ sec.setGrantLoggingControl(false);
+
+ handler.invokeReportError("foo", somex,
+ ErrorManager.FLUSH_FAILURE);
+
+ th.check(mgr.getLastMessage(), "foo"); // Check #1.
+ th.check(mgr.getLastException() == somex); // Check #2.
+ th.check(mgr.getLastErrorCode(), // Check #3.
+ ErrorManager.FLUSH_FAILURE);
+
+ handler.invokeReportError(null, somex,
+ ErrorManager.OPEN_FAILURE);
+ th.check(mgr.getLastMessage(), null); // Check #4.
+ th.check(mgr.getLastException() == somex); // Check #5.
+ th.check(mgr.getLastErrorCode(), // Check #6.
+ ErrorManager.OPEN_FAILURE);
+
+ handler.invokeReportError(null, null,
+ ErrorManager.CLOSE_FAILURE);
+ th.check(mgr.getLastMessage(), null); // Check #7.
+ th.check(mgr.getLastException(), null); // Check #8.
+ th.check(mgr.getLastErrorCode(), // Check #9.
+ ErrorManager.CLOSE_FAILURE);
+
+ handler.invokeReportError("foobar", null, -12345);
+ th.check(mgr.getLastMessage(), "foobar"); // Check #10.
+ th.check(mgr.getLastException(), null); // Check #11.
+ th.check(mgr.getLastErrorCode(), -12345); // Check #12.
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/setEncoding.java b/gnu/testlet/java/util/logging/Handler/setEncoding.java
new file mode 100644
index 00000000..6617ed23
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/setEncoding.java
@@ -0,0 +1,135 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.UnsupportedEncodingException;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setEncoding
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+ private final TestHandler handler = new TestHandler();
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1: setEncoding(null) [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setEncoding(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #2 and #3: setEncoding(null) [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setEncoding(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught == null); // Check #2.
+ th.check(handler.getEncoding(), null); // Check #3.
+
+
+ // Check #4: setEncoding("Nonsense") [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setEncoding("Nonsense");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+
+ // Check #5: setEncoding("Nonsense") [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setEncoding("Nonsense");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof UnsupportedEncodingException);
+
+ // Check #6: setEncoding("UTF-8") [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setEncoding("UTF-8");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+
+ // Check #7 and #8: setEncoding("UTF-8") [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setEncoding("UTF-8");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught == null);
+ th.check(handler.getEncoding(), "UTF-8");
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/setErrorManager.java b/gnu/testlet/java/util/logging/Handler/setErrorManager.java
new file mode 100644
index 00000000..39679005
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/setErrorManager.java
@@ -0,0 +1,105 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.ErrorManager;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setErrorManager
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+ private final TestHandler handler = new TestHandler();
+ private final ErrorManager mgr = new ErrorManager();
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1: setErrorManager(null) [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setErrorManager(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #2: setErrorManager(null) [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setErrorManager(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof NullPointerException);
+
+ // Check #3: setErrorManager(mgr) [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setErrorManager(mgr);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #4: setErrorManager(mgr) [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setErrorManager(mgr);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught == null && handler.getErrorManager() == mgr);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/setFilter.java b/gnu/testlet/java/util/logging/Handler/setFilter.java
new file mode 100644
index 00000000..e568b1aa
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/setFilter.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Filter;
+import java.util.logging.LogRecord;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setFilter
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+
+ private final TestHandler handler = new TestHandler();
+
+ private final Filter filter = new Filter()
+ {
+ public boolean isLoggable(LogRecord rec)
+ {
+ return true;
+ }
+ };
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1: setFilter(null) [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setFilter(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #2: setFilter(null) [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setFilter(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught, null);
+
+ // Check #3: setFilter(f) [no permission]
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setFilter(filter);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException
+ && handler.getFilter() == null);
+
+ // Check #4: setFilter(f) [with permission]
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setFilter(filter);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught == null && handler.getFilter() == filter);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Handler/setLevel.java b/gnu/testlet/java/util/logging/Handler/setLevel.java
new file mode 100644
index 00000000..07c1d019
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Handler/setLevel.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.4
+// Uses: TestHandler TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Handler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setLevel
+ implements Testlet
+{
+ TestSecurityManager sec = new TestSecurityManager();
+ TestHandler handler = new TestHandler();
+
+ public void test(TestHarness th)
+ {
+ Throwable caught;
+
+ sec.install();
+ try
+ {
+ // Check #1.
+ sec.setGrantLoggingControl(false);
+ th.check(handler.getLevel(), Level.ALL);
+
+ // Check #2.
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ handler.setLevel(Level.INFO);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof SecurityException);
+
+ // Check #3.
+ sec.setGrantLoggingControl(true);
+ handler.setLevel(Level.FINEST);
+ th.check(handler.getLevel(), Level.FINEST);
+
+ // Check #4: setLevel(null).
+ sec.setGrantLoggingControl(true);
+ caught = null;
+ try
+ {
+ handler.setLevel(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ th.check(caught instanceof NullPointerException);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/CVS/Entries b/gnu/testlet/java/util/logging/Level/CVS/Entries
new file mode 100644
index 00000000..d1a90d83
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/CVS/Entries
@@ -0,0 +1,8 @@
+/TestUtils.java/1.1/Thu Feb 26 19:41:42 2004//
+/equals.java/1.1/Thu Feb 26 19:41:42 2004//
+/getName.java/1.2/Thu Jun 3 14:31:16 2004//
+/hashCode.java/1.1/Thu Feb 26 19:41:42 2004//
+/intValue.java/1.2/Thu Jun 3 14:31:17 2004//
+/parse.java/1.2/Wed Mar 15 13:13:26 2006//
+/toString.java/1.2/Thu Jun 3 14:31:17 2004//
+D
diff --git a/gnu/testlet/java/util/logging/Level/CVS/Repository b/gnu/testlet/java/util/logging/Level/CVS/Repository
new file mode 100644
index 00000000..8e3b3299
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/Level
diff --git a/gnu/testlet/java/util/logging/Level/CVS/Root b/gnu/testlet/java/util/logging/Level/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/Level/TestUtils.java b/gnu/testlet/java/util/logging/Level/TestUtils.java
new file mode 100644
index 00000000..60384522
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/TestUtils.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import java.util.logging.Level;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+class TestUtils
+{
+ /**
+ * All levels pre-defined by the specification of the Java Logging API,
+ * in decreasing order of severity.
+ */
+ public static final Level[] LEVELS =
+ {
+ Level.OFF, Level.SEVERE, Level.WARNING, Level.INFO, Level.CONFIG,
+ Level.FINE, Level.FINER, Level.FINEST, Level.ALL
+ };
+
+
+ /**
+ * The expected result of calling getName() on each entry
+ * in {@link #LEVELS}.
+ */
+ public static final String[] NAMES =
+ {
+ "OFF", "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER",
+ "FINEST", "ALL"
+ };
+
+
+ /**
+ * The expected result of calling intValue() on each entry
+ * in {@link #LEVELS}.
+ */
+ public static final int[] VALUES =
+ {
+ Integer.MAX_VALUE, 1000, 900, 800, 700, 500, 400, 300,
+ Integer.MIN_VALUE
+ };
+
+
+ public static class CustomLevel
+ extends Level
+ {
+ public CustomLevel(String name, int value)
+ {
+ super(name, value);
+ }
+
+ public CustomLevel(String name, int value, String bundleName)
+ {
+ super(name, value, bundleName);
+ }
+ };
+}
diff --git a/gnu/testlet/java/util/logging/Level/equals.java b/gnu/testlet/java/util/logging/Level/equals.java
new file mode 100644
index 00000000..7123c27b
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/equals.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class equals
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Level l1, l2;
+
+ l1 = new TestUtils.CustomLevel("CUSTOM_TEST_LEVEL",
+ Level.WARNING.intValue());
+ l2 = new TestUtils.CustomLevel("CUSTOM_TEST_LEVEL",
+ Level.WARNING.intValue());
+
+ // Check #1.
+ h.check(!Level.WARNING.equals(null));
+
+ // Check #2.
+ h.check(Level.WARNING.equals(Level.WARNING));
+
+ // Check #3.
+ h.check(!Level.WARNING.equals(Level.INFO));
+
+ // Check #4.
+ h.check(Level.WARNING.equals(l1));
+
+ // Check #5.
+ h.check(Level.WARNING.equals(l2));
+
+ // Check #6.
+ h.check(l1.equals(Level.WARNING));
+
+ // Check #7.
+ h.check(l2.equals(Level.WARNING));
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/getName.java b/gnu/testlet/java/util/logging/Level/getName.java
new file mode 100644
index 00000000..b9b3051e
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/getName.java
@@ -0,0 +1,39 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ for (int i = 0; i < TestUtils.LEVELS.length; i++)
+ h.check(TestUtils.LEVELS[i].getName(), TestUtils.NAMES[i]);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/hashCode.java b/gnu/testlet/java/util/logging/Level/hashCode.java
new file mode 100644
index 00000000..75b9ce8a
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/hashCode.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class hashCode
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Level l1, l2;
+
+ l1 = new TestUtils.CustomLevel("CUSTOM_TEST_LEVEL",
+ Level.WARNING.intValue());
+ l2 = new TestUtils.CustomLevel("CUSTOM_TEST_LEVEL",
+ Level.WARNING.intValue());
+
+ // Check #1.
+ h.check(l1.hashCode(), Level.WARNING.hashCode());
+
+ // Check #2.
+ h.check(l2.hashCode(), Level.WARNING.hashCode());
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/intValue.java b/gnu/testlet/java/util/logging/Level/intValue.java
new file mode 100644
index 00000000..28276011
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/intValue.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class intValue
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ for (int i = 0; i < TestUtils.LEVELS.length; i++)
+ {
+ h.checkPoint(TestUtils.NAMES[i]);
+ h.check(TestUtils.LEVELS[i].intValue(), TestUtils.VALUES[i]);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/parse.java b/gnu/testlet/java/util/logging/Level/parse.java
new file mode 100644
index 00000000..08bf06b2
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/parse.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class parse
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ String name;
+ Level level;
+ int value;
+
+ /* Pass a name. */
+ for (int i = 0; i < TestUtils.LEVELS.length; i++)
+ {
+ name = TestUtils.NAMES[i];
+
+ h.checkPoint(name);
+ h.check(Level.parse(name) == TestUtils.LEVELS[i]);
+
+ // Simulate a new "parsed" string as name.
+ h.check(Level.parse((" " + name + " ").trim()) == TestUtils.LEVELS[i]);
+ }
+
+ /* Pass a number. */
+ for (int i = 0; i < TestUtils.LEVELS.length; i++)
+ {
+ value = TestUtils.VALUES[i];
+ name = String.valueOf(value);
+ h.checkPoint(name);
+ h.check(Level.parse(name), TestUtils.LEVELS[i]);
+ }
+
+ /* Parse a non-standard name. */
+ h.checkPoint("non-standard name");
+ try {
+ Level.parse("non-standard name");
+ h.check(false);
+ } catch (IllegalArgumentException _) {
+ h.check(true);
+ } catch (Exception _) {
+ h.check(false);
+ }
+
+ /* Parse a null string. */
+ h.checkPoint("parse(null)");
+ try {
+ Level.parse(null);
+ h.check(false);
+ } catch (NullPointerException _) {
+ h.check(true);
+ } catch (Exception _) {
+ h.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Level/toString.java b/gnu/testlet/java/util/logging/Level/toString.java
new file mode 100644
index 00000000..430a2c86
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Level/toString.java
@@ -0,0 +1,39 @@
+// Tags: JDK1.4
+// Uses: TestUtils
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Level;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class toString
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ for (int i = 0; i < TestUtils.LEVELS.length; i++)
+ h.check(TestUtils.LEVELS[i].toString(), TestUtils.NAMES[i]);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogManager/CVS/Entries b/gnu/testlet/java/util/logging/LogManager/CVS/Entries
new file mode 100644
index 00000000..2cff3056
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/CVS/Entries
@@ -0,0 +1,5 @@
+/Security.java/1.1/Mon Nov 15 18:38:12 2010//
+/TestHandler.java/1.1/Thu Jul 14 13:45:24 2005//
+/logging.properties/1.1/Thu Jul 14 13:45:24 2005//
+/readConfiguration.java/1.2/Wed Jun 25 08:07:52 2008//
+D
diff --git a/gnu/testlet/java/util/logging/LogManager/CVS/Repository b/gnu/testlet/java/util/logging/LogManager/CVS/Repository
new file mode 100644
index 00000000..0215d65b
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/LogManager
diff --git a/gnu/testlet/java/util/logging/LogManager/CVS/Root b/gnu/testlet/java/util/logging/LogManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/LogManager/Security.java b/gnu/testlet/java/util/logging/LogManager/Security.java
new file mode 100644
index 00000000..430dc441
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/Security.java
@@ -0,0 +1,95 @@
+// Copyright (C) 2006, 2007, 2010 Red Hat, Inc.
+// Original written by Gary Benson <gbenson@redhat.com>
+// Adapted for LogManager by Andrew John Hughes <ahughes@redhat.com>
+
+// 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: JDK1.4
+
+package gnu.testlet.java.util.logging.LogManager;
+
+import java.security.Permission;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import java.util.logging.LogManager;
+import java.util.logging.LoggingPermission;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.TestSecurityManager;
+
+public class Security implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try {
+
+ Permission[] noPerms = new Permission[] {};
+ Permission[] logPerms =
+ new Permission[] { new LoggingPermission("control", null) } ;
+
+ LogManager lm = LogManager.getLogManager();
+ PropertyChangeListener listener = new TestPropertyChangeListener();
+ TestSecurityManager sm = new TestSecurityManager(harness);
+ try {
+ sm.install();
+
+ harness.checkPoint("addPropertyChangeListener");
+ try {
+ sm.prepareChecks(logPerms);
+ lm.addPropertyChangeListener(listener);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ harness.checkPoint("removePropertyChangeListener");
+ try {
+ sm.prepareChecks(logPerms);
+ lm.removePropertyChangeListener(listener);
+ sm.checkAllChecked();
+ }
+ catch (SecurityException ex) {
+ harness.debug(ex);
+ harness.check(false, "unexpected check");
+ }
+
+ }
+ finally {
+ sm.uninstall();
+ }
+ }
+ catch (Exception ex) {
+ harness.debug(ex);
+ harness.check(false, "Unexpected exception");
+ }
+ }
+
+ private static class TestPropertyChangeListener
+ implements PropertyChangeListener
+ {
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ }
+ }
+
+}
diff --git a/gnu/testlet/java/util/logging/LogManager/TestHandler.java b/gnu/testlet/java/util/logging/LogManager/TestHandler.java
new file mode 100644
index 00000000..3b8af9fa
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/TestHandler.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package gnu.testlet.java.util.logging.LogManager;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+
+/**
+ * <p>Test implementation of <code>java.util.logging.Handler</code>.</p>
+ *
+ * @author Craig R. McClanahan
+ * @version $Revision: 1.1 $ $Date: 2005/07/14 13:45:24 $
+ */
+public class TestHandler extends Handler {
+
+ // ----------------------------------------------------- Instance Variables
+
+ // The set of logged records for this handler
+ private List records = new ArrayList();
+
+ // --------------------------------------------------------- Public Methods
+
+ public Iterator records() {
+ return (records.iterator());
+ }
+
+ // -------------------------------------------------------- Handler Methods
+
+ public void close() {
+ isClosed = true;
+ }
+
+ public void flush() {
+ records.clear();
+ }
+
+ public void publish(LogRecord record) {
+ records.add(record);
+ }
+
+ boolean isClosed = false;
+}
diff --git a/gnu/testlet/java/util/logging/LogManager/logging.properties b/gnu/testlet/java/util/logging/LogManager/logging.properties
new file mode 100644
index 00000000..e16e6cc8
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/logging.properties
@@ -0,0 +1 @@
+handlers = gnu.testlet.java.util.logging.LogManager.TestHandler
diff --git a/gnu/testlet/java/util/logging/LogManager/readConfiguration.java b/gnu/testlet/java/util/logging/LogManager/readConfiguration.java
new file mode 100644
index 00000000..47cb5f2f
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogManager/readConfiguration.java
@@ -0,0 +1,75 @@
+// Files: logging.properties
+
+package gnu.testlet.java.util.logging.LogManager;
+
+import gnu.testlet.*;
+import java.io.*;
+import java.util.logging.*;
+
+// Test case for setting Logger handlers using resource property
+public class readConfiguration implements Testlet {
+
+ public void test(TestHarness harness) {
+ LogManager manager = LogManager.getLogManager();
+
+ // This resource contains a "handlers = TestHandler" property
+ harness.checkPoint("read user logging properties");
+ try
+ {
+ InputStream is =
+ ClassLoader.getSystemResourceAsStream("gnu/testlet/java/util/logging/LogManager/logging.properties");
+ manager.readConfiguration(is);
+ harness.check(true);
+ is.close();
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+
+ Logger logger = Logger.getLogger("TestLogger");
+ Logger logger2 = logger;
+ logger2.setLevel(Level.FINE);
+
+ // This just copied from
+ // org.apache.commons.logging.jdk14.CustomConfigTestCase, where I noticed
+ // this bug
+ while (logger.getParent() != null) {
+ logger = logger.getParent();
+ }
+
+ // I gather that handles should now = {TestHandler handler}
+ Handler[] handlers = logger.getHandlers();
+
+ harness.checkPoint("handlers is not null");
+ harness.check(handlers != null);
+
+ // But does it?
+ if (handlers != null)
+ {
+ harness.checkPoint("handlers length");
+ harness.check(handlers.length, 1);
+ harness.check(handlers[0].getClass() == TestHandler.class);
+
+ TestHandler handler = (TestHandler) handlers[0];
+
+ harness.checkPoint("state reset");
+
+ harness.check(logger2.getLevel() == Level.FINE);
+
+ try
+ {
+ manager.readConfiguration();
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ harness.check(logger2.getLevel() == null);
+ harness.check(handler.isClosed);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/CVS/Entries b/gnu/testlet/java/util/logging/LogRecord/CVS/Entries
new file mode 100644
index 00000000..eed30de9
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/CVS/Entries
@@ -0,0 +1,14 @@
+/getMillis.java/1.2/Mon Jul 18 07:49:26 2005//
+/getThreadID.java/1.1/Fri Feb 27 10:52:36 2004//
+/setLevel.java/1.1/Fri Feb 27 10:52:36 2004//
+/setLoggerName.java/1.1/Fri Feb 27 10:52:36 2004//
+/setMessage.java/1.1/Fri Feb 27 10:52:36 2004//
+/setMillis.java/1.1/Fri Feb 27 10:52:36 2004//
+/setParameters.java/1.1/Fri Feb 27 10:52:36 2004//
+/setResourceBundle.java/1.1/Fri Feb 27 10:52:36 2004//
+/setSequenceNumber.java/1.1/Fri Feb 27 10:52:36 2004//
+/setSourceClassName.java/1.1/Fri Feb 27 10:52:36 2004//
+/setSourceMethodName.java/1.1/Fri Feb 27 10:52:36 2004//
+/setThreadID.java/1.1/Fri Feb 27 10:52:36 2004//
+/setThrown.java/1.1/Fri Feb 27 10:52:36 2004//
+D
diff --git a/gnu/testlet/java/util/logging/LogRecord/CVS/Repository b/gnu/testlet/java/util/logging/LogRecord/CVS/Repository
new file mode 100644
index 00000000..b83fb2a0
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/LogRecord
diff --git a/gnu/testlet/java/util/logging/LogRecord/CVS/Root b/gnu/testlet/java/util/logging/LogRecord/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/LogRecord/getMillis.java b/gnu/testlet/java/util/logging/LogRecord/getMillis.java
new file mode 100644
index 00000000..dfc9e623
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/getMillis.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getMillis
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec1, rec2;
+
+ // Check #1.
+ rec1 = new LogRecord(Level.CONFIG, "foo");
+ try
+ {
+ long start = System.currentTimeMillis();
+ while (start == System.currentTimeMillis())
+ Thread.sleep(1);
+ }
+ catch (InterruptedException _)
+ {
+ }
+ rec2 = new LogRecord(Level.INFO, "bar");
+ th.check(rec1.getMillis() < rec2.getMillis());
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/getThreadID.java b/gnu/testlet/java/util/logging/LogRecord/getThreadID.java
new file mode 100644
index 00000000..e361584b
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/getThreadID.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getThreadID
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec1 = new LogRecord(Level.CONFIG, "foo");
+ LogRecord rec2 = new LogRecord(Level.CONFIG, "baz");
+ LogRecord rec3 = createLogRecordInOtherThread();
+
+ // Check #1.
+ th.check(rec1.getThreadID() == rec2.getThreadID());
+
+ // Check #2.
+ th.check(rec2.getThreadID() != rec3.getThreadID());
+ }
+
+
+ /**
+ * Returns a LogRecord that has been created in another thread.
+ */
+ private LogRecord createLogRecordInOtherThread()
+ {
+ class MyThread extends Thread
+ {
+ LogRecord record;
+
+ public void run()
+ {
+ record = new LogRecord(Level.INFO, "foobar");
+ }
+
+ public LogRecord getRecord()
+ {
+ return record;
+ }
+ };
+
+ MyThread theThread = new MyThread();
+ try
+ {
+ theThread.start();
+ theThread.join();
+ return theThread.getRecord();
+ }
+ catch (InterruptedException _) {
+ return null;
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setLevel.java b/gnu/testlet/java/util/logging/LogRecord/setLevel.java
new file mode 100644
index 00000000..233316ca
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setLevel.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setLevel
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ LogRecord rec = new LogRecord(Level.INFO, "msg");
+
+ // Check #1.
+ h.check(rec.getLevel() == Level.INFO);
+
+ // Check #2.
+ rec.setLevel(Level.WARNING);
+ h.check(rec.getLevel() == Level.WARNING);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setLoggerName.java b/gnu/testlet/java/util/logging/LogRecord/setLoggerName.java
new file mode 100644
index 00000000..4820e352
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setLoggerName.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setLoggerName
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "msg");
+
+ // Check #1.
+ th.check(rec.getLoggerName(), null);
+
+ // Check #2.
+ rec.setLoggerName("foo");
+ th.check(rec.getLoggerName(), "foo");
+
+ // Check #3.
+ rec.setLoggerName(null);
+ th.check(rec.getLoggerName(), null);
+
+ // Check #4.
+ rec.setLoggerName("");
+ th.check(rec.getLoggerName(), "");
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setMessage.java b/gnu/testlet/java/util/logging/LogRecord/setMessage.java
new file mode 100644
index 00000000..67325559
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setMessage.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setMessage
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "msg");
+
+ // Check #1.
+ th.check(rec.getMessage(), "msg");
+
+ // Check #2.
+ rec.setMessage("foo");
+ th.check(rec.getMessage(), "foo");
+
+ // Check #3.
+ rec.setMessage(null);
+ th.check(rec.getMessage(), null);
+
+ // Check #4.
+ rec.setMessage("");
+ th.check(rec.getMessage(), "");
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setMillis.java b/gnu/testlet/java/util/logging/LogRecord/setMillis.java
new file mode 100644
index 00000000..420f4c4c
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setMillis.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setMillis
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "foo");
+
+ // Check #1.
+ rec.setMillis(12345);
+ th.check(rec.getMillis(), 12345);
+
+ // Check #2.
+ rec.setMillis(-54321);
+ th.check(rec.getMillis(), -54321);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setParameters.java b/gnu/testlet/java/util/logging/LogRecord/setParameters.java
new file mode 100644
index 00000000..2ccdd9ac
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setParameters.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setParameters
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "msg");
+ Object[] params = new Object[] { "foo", "bar", "baz" };
+
+ // Check #1.
+ th.check(rec.getParameters(), null);
+
+ // Check #2.
+ rec.setParameters(params);
+ th.check(rec.getParameters() == params);
+
+ // Check #3.
+ rec.setParameters(null);
+ th.check(rec.getParameters(), null);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setResourceBundle.java b/gnu/testlet/java/util/logging/LogRecord/setResourceBundle.java
new file mode 100644
index 00000000..6a2fe1fd
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setResourceBundle.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.ListResourceBundle;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setResourceBundle
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "foo");
+ ResourceBundle testBundle = new TestResourceBundle();
+
+ // Check #1.
+ th.check(rec.getResourceBundle(), null);
+
+ // Check #2.
+ rec.setResourceBundle(testBundle);
+ th.check(rec.getResourceBundle() == testBundle);
+
+ // Check #3.
+ rec.setResourceBundle(null);
+ th.check(rec.getResourceBundle(), null);
+ }
+
+
+ public static class TestResourceBundle
+ extends ListResourceBundle
+ {
+ private final Object[][] contents = new Object[][]
+ {
+ { "test1", "foo-bar-baz" },
+ { "test2", "the single parameter is {0}" },
+ { "test3", "the two parameters are {0} and {1}" }
+ };
+
+ protected Object[][] getContents()
+ {
+ return contents;
+ }
+ };
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setSequenceNumber.java b/gnu/testlet/java/util/logging/LogRecord/setSequenceNumber.java
new file mode 100644
index 00000000..64f75ee7
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setSequenceNumber.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setSequenceNumber
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec1 = new LogRecord(Level.CONFIG, "msg");
+ LogRecord rec2 = new LogRecord(Level.CONFIG, "msg2");
+ long s1, s2;
+
+ s1 = rec1.getSequenceNumber();
+ s2 = rec2.getSequenceNumber();
+
+ /* Check #1.
+ *
+ * It could happen that rec1 has a sequence number of
+ * Long.MAX_VALUE, or that rec1's sequence number is close to
+ * Long.MAX_VALUE and some background threads have created a few
+ * LogRecords between the creation of rec1 and rec2, so rec2's
+ * sequence number is equal to or slightly greater than
+ * Long.MIN_VALUE. In these cases, s2 would not be greater than
+ * s1, although the implementation of java.util.logging.LogRecord
+ * was entirely correct.
+ *
+ * While this event is extremely unlikely, it is not entirely
+ * impossible, so we can perform the subsequent check only if
+ * there was no arithmetic overflow.
+ */
+ if ((s1 >= 0) == (s2 >= 0))
+ th.check(s2 > s1);
+ else
+ th.check(true);
+
+ // Check #2.
+ rec2.setSequenceNumber(42);
+ th.check(rec2.getSequenceNumber() == 42);
+
+ // Check #3.
+ rec2.setSequenceNumber(s2);
+ th.check(rec2.getSequenceNumber() == s2);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setSourceClassName.java b/gnu/testlet/java/util/logging/LogRecord/setSourceClassName.java
new file mode 100644
index 00000000..6fe50127
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setSourceClassName.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setSourceClassName
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "msg");
+
+ // Check #1.
+ rec.setSourceClassName(Testlet.class.getName());
+ th.check(rec.getSourceClassName(), Testlet.class.getName());
+
+ // Check #2.
+ rec.setSourceClassName(null);
+ th.check(rec.getSourceClassName(), null);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setSourceMethodName.java b/gnu/testlet/java/util/logging/LogRecord/setSourceMethodName.java
new file mode 100644
index 00000000..8f71dcaf
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setSourceMethodName.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setSourceMethodName
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "msg");
+
+ // Check #1.
+ rec.setSourceMethodName("fooBar");
+ th.check(rec.getSourceMethodName(), "fooBar");
+
+ // Check #2.
+ rec.setSourceMethodName(null);
+ th.check(rec.getSourceMethodName(), null);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setThreadID.java b/gnu/testlet/java/util/logging/LogRecord/setThreadID.java
new file mode 100644
index 00000000..6bd34928
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setThreadID.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setThreadID
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "foo");
+
+ // Check #1.
+ rec.setThreadID(1234);
+ th.check(rec.getThreadID(), 1234);
+
+ // Check #2.
+ rec.setThreadID(-4321);
+ th.check(rec.getThreadID(), -4321);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LogRecord/setThrown.java b/gnu/testlet/java/util/logging/LogRecord/setThrown.java
new file mode 100644
index 00000000..9cb66e72
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LogRecord/setThrown.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.LogRecord;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setThrown
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ LogRecord rec = new LogRecord(Level.CONFIG, "foo");
+ Exception ex = new IllegalStateException();
+
+ // Check #1.
+ th.check(rec.getThrown(), null);
+
+ // Check #2.
+ rec.setThrown(ex);
+ th.check(rec.getThrown(), ex);
+
+ // Check #3.
+ rec.setThrown(null);
+ th.check(rec.getThrown(), null);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/CVS/Entries b/gnu/testlet/java/util/logging/Logger/CVS/Entries
new file mode 100644
index 00000000..f9abe385
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/CVS/Entries
@@ -0,0 +1,13 @@
+/PR35974.java/1.1/Fri Apr 18 17:31:01 2008//
+/TestFilter.java/1.1/Fri Feb 27 18:48:37 2004//
+/TestLogger.java/1.1/Fri Feb 27 14:48:59 2004//
+/TestResourceBundle.java/1.1/Fri Feb 27 18:48:37 2004//
+/TestSecurityManager.java/1.3/Thu May 11 12:32:50 2006//
+/getAnonymousLogger.java/1.2/Mon May 10 14:50:51 2004//
+/getLogger.java/1.3/Fri Jul 16 16:01:14 2004//
+/getName.java/1.1/Fri Feb 27 23:00:27 2004//
+/getParent.java/1.1/Tue Sep 19 10:33:28 2006//
+/global.java/1.1/Fri Feb 27 14:48:59 2004//
+/hierarchyChecks.java/1.1/Fri Feb 27 23:00:27 2004//
+/securityChecks.java/1.1/Fri Feb 27 14:48:59 2004//
+D
diff --git a/gnu/testlet/java/util/logging/Logger/CVS/Repository b/gnu/testlet/java/util/logging/Logger/CVS/Repository
new file mode 100644
index 00000000..4bf520b1
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/Logger
diff --git a/gnu/testlet/java/util/logging/Logger/CVS/Root b/gnu/testlet/java/util/logging/Logger/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/Logger/PR35974.java b/gnu/testlet/java/util/logging/Logger/PR35974.java
new file mode 100644
index 00000000..384e8724
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/PR35974.java
@@ -0,0 +1,183 @@
+/* ConcurrentLogging.java -- Test Concurrent access to Logger
+ Copyright (C) 2008 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.util.logging.Logger;
+
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Fix PR35974, when multiple threads try to access methods or Logger.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class PR35974
+ implements Testlet
+{
+ private static final boolean DEBUG = false;
+
+ private static Logger parentLogger =
+ Logger.getLogger("new caprica event logger");
+ private TestHarness harness = null;
+ static volatile boolean fighting = true;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ HarnessHandler handler = new HarnessHandler();
+
+ LoggerThread galactica = new LoggerThread("Galactica", handler);
+
+ LoggerThread cylonBasestar1 =
+ new LoggerThread("Cylon Basestar #1", handler);
+ LoggerThread cylonBasestar2 =
+ new LoggerThread("Cylon Basestar #2", handler);
+ LoggerThread cylonBasestar3 =
+ new LoggerThread("Cylon Basestar #3", handler);
+
+ galactica.start();
+
+ cylonBasestar1.start();
+ cylonBasestar2.start();
+ cylonBasestar3.start();
+
+ BattlestarPegasusThread pegasus = new BattlestarPegasusThread();
+ pegasus.start();
+ }
+
+ private class HarnessHandler extends Handler
+ {
+ public void close() throws SecurityException
+ {
+ /* does nothing */
+ }
+
+ @Override
+ public void flush()
+ {
+ /* does nothing */
+ }
+
+ public void success()
+ {
+ harness.check(true, Thread.currentThread().getName());
+ }
+
+ @Override
+ public void publish(LogRecord record)
+ {
+ if (DEBUG == false)
+ return;
+
+ // this is not correct in real world code, but it's ok for our
+ // simple test
+ if (Thread.currentThread().getName().equalsIgnoreCase("Galactica"))
+ harness.debug(record.getMessage() + "--------------------------->");
+ else
+ harness.debug("\t\t\t\t\t\t\t\t\t\t\t\t\t<---------------------------"
+ + record.getMessage());
+ }
+
+ }
+
+ private static class BattlestarPegasusThread extends Thread
+ {
+ private long startTime = System.currentTimeMillis();
+
+ public BattlestarPegasusThread()
+ {
+ super("Pegasus to the rescue...");
+ }
+
+ @Override
+ public void run()
+ {
+ parentLogger.log(Level.INFO, this.getName());
+
+ long stopTime = System.currentTimeMillis();
+ while ((stopTime - startTime) < 30000)
+ {
+ stopTime = System.currentTimeMillis();
+ }
+ fighting = false;
+
+ parentLogger.log(Level.INFO, "Pegasus destroyed...");
+ }
+ }
+
+ private static class LoggerThread extends Thread
+ {
+ private static Logger brokenLogger = null;
+
+ private HarnessHandler handler = null;
+
+ public LoggerThread(String name, HarnessHandler handler)
+ {
+ super(name);
+ super.setDaemon(true);
+ this.handler = handler;
+ }
+
+ @Override
+ public void run()
+ {
+ parentLogger.log(Level.INFO, this.getName() +
+ " did the jump into new caprica orbit ");
+
+ while (fighting)
+ {
+ // These methods are all synchronized in the implementation.
+ // Of course, you see the problem, there is no synchronization
+ // between the first instruction and the others, and you can see
+ // this because some output from the logger is still left on even when
+ // we setLevel(Level.OFF), this is because of some concurrent access,
+ // but it's ok, because what we do here is to force a concurrent
+ // access somehow hoping for a deadlock at some point, which will
+ // not happen because the locking system on the Logger class has been
+ // improved, but still will left our brokenLogger in a somewhat
+ // confused state (that is, it works only because handler and
+ // parentLogger are always the same, otherwise it would not work)
+ // This code is broken by design, so don't try to imitate this style
+ // in real word code, please.
+ brokenLogger = Logger.getLogger(this.getName());
+
+ if (DEBUG == false)
+ brokenLogger.setLevel(Level.OFF);
+ else
+ brokenLogger.setParent(parentLogger);
+
+ brokenLogger.addHandler(handler);
+ brokenLogger.log(Level.INFO, this.getName() + " fires");
+ }
+
+ parentLogger.log(Level.INFO, this.getName() + " jumps");
+ handler.success();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/TestFilter.java b/gnu/testlet/java/util/logging/Logger/TestFilter.java
new file mode 100644
index 00000000..ac6b7b1d
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/TestFilter.java
@@ -0,0 +1,42 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import java.util.logging.Filter;
+import java.util.logging.LogRecord;
+
+public class TestFilter
+ implements Filter
+{
+ private LogRecord lastRecord;
+
+ public boolean isLoggable(LogRecord record)
+ {
+ lastRecord = record;
+ return true;
+ }
+
+ public LogRecord getLastRecord()
+ {
+ return lastRecord;
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/TestLogger.java b/gnu/testlet/java/util/logging/Logger/TestLogger.java
new file mode 100644
index 00000000..42afdf44
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/TestLogger.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import java.util.logging.Logger;
+
+
+/**
+ * A Logger whose constructor is public.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+class TestLogger
+ extends Logger
+{
+ public TestLogger(String name, String resourceBundleName)
+ {
+ super(name, resourceBundleName);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/TestResourceBundle.java b/gnu/testlet/java/util/logging/Logger/TestResourceBundle.java
new file mode 100644
index 00000000..60ba43df
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/TestResourceBundle.java
@@ -0,0 +1,44 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import java.util.ListResourceBundle;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestResourceBundle
+ extends ListResourceBundle
+{
+ private final Object[][] contents = new Object[][]
+ {
+ { "test", "foo-bar-baz" },
+
+ // Used by testlet for Logger.getAnonymousLogger().
+ { "ENTRY {0}", "BETRETEN {0}" }
+ };
+
+ protected Object[][] getContents()
+ {
+ return contents;
+ }
+};
diff --git a/gnu/testlet/java/util/logging/Logger/TestSecurityManager.java b/gnu/testlet/java/util/logging/Logger/TestSecurityManager.java
new file mode 100644
index 00000000..37872f45
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/TestSecurityManager.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import java.security.Permission;
+import java.security.AccessControlException;
+import java.util.logging.LoggingPermission;
+import java.util.logging.LogManager;
+
+/**
+ * A SecurityManager that can be told whether or not to grant
+ * LoggingPermission.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestSecurityManager
+ extends SecurityManager
+{
+ private boolean grantLogging = false;
+
+ private final Permission controlPermission
+ = new LoggingPermission("control", null);
+
+ private SecurityManager oldManager;
+
+ public void checkPermission(Permission perm)
+ {
+ if (controlPermission.implies(perm) && !grantLogging)
+ throw new AccessControlException("access denied: " + perm, perm);
+ }
+
+
+ public void setGrantLoggingControl(boolean grant)
+ {
+ grantLogging = grant;
+ }
+
+
+ public void install()
+ {
+ // Make sure the LogManager is fully installed first.
+ LogManager lm = LogManager.getLogManager();
+
+ SecurityManager oldsm = System.getSecurityManager();
+
+ if (oldsm == this)
+ throw new IllegalStateException("already installed");
+
+ oldManager = oldsm;
+ System.setSecurityManager(this);
+ }
+
+
+ public void uninstall()
+ {
+ System.setSecurityManager(oldManager);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java b/gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java
new file mode 100644
index 00000000..2c7a4106
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/getAnonymousLogger.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.4
+// Uses: TestFilter TestSecurityManager TestResourceBundle
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.Formatter;
+import java.util.logging.SimpleFormatter;
+
+import java.util.MissingResourceException;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getAnonymousLogger
+ implements Testlet
+{
+ TestSecurityManager sec = new TestSecurityManager();
+
+ public void test(TestHarness th)
+ {
+ Logger al;
+ Throwable caught;
+ TestFilter filter = new TestFilter();
+ Formatter formatter = new SimpleFormatter();
+
+ try
+ {
+ sec.install();
+ // This used to be 'sec.setGrantLoggingControl(false)', but that
+ // causes Logger.getAnonymousLogger() to fail on JDK 1.4.2.
+ // Stephen Crawley: 2004-05-11
+ sec.setGrantLoggingControl(true);
+
+ // Check #1.
+ al = Logger.getAnonymousLogger();
+ th.check(al != null);
+
+ // Check #2: New instance for each call.
+ th.check(al != Logger.getAnonymousLogger());
+
+ // Check #3.
+ al = Logger.getAnonymousLogger();
+ th.check(al.getName(), null);
+
+ // Check #4.
+ th.check(al.getResourceBundle(), null);
+
+ // Check #5.
+ th.check(al.getResourceBundleName(), null);
+
+ // Check #6: Parent is root logger.
+ th.check(al.getParent(), Logger.getLogger(""));
+
+ // Check #7.
+ al.setFilter(filter);
+ al.setUseParentHandlers(false);
+ al.setLevel(Level.FINEST);
+ al.entering("Class", "method", "txt");
+ th.check(formatter.formatMessage(filter.getLastRecord()), "ENTRY txt");
+
+ // Check #8.
+ al = Logger.getAnonymousLogger(TestResourceBundle.class.getName());
+ th.check(al.getResourceBundle() instanceof TestResourceBundle);
+
+ // Check #9.
+ al.setFilter(filter);
+ al.setUseParentHandlers(false);
+ al.setLevel(Level.FINEST);
+ al.entering("Class", "method", "txt");
+ th.check(formatter.formatMessage(filter.getLastRecord()), "BETRETEN txt");
+
+ // Check #10.
+ try
+ {
+ Logger.getAnonymousLogger("garbageClassName");
+ th.check(false);
+ }
+ catch (MissingResourceException ex)
+ {
+ th.check(true);
+ }
+ catch (Exception ex)
+ {
+ th.check(false);
+ th.debug(ex);
+ }
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/getLogger.java b/gnu/testlet/java/util/logging/Logger/getLogger.java
new file mode 100644
index 00000000..c8a79b61
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/getLogger.java
@@ -0,0 +1,135 @@
+// Tags: JDK1.4
+// Uses: TestLogger TestResourceBundle TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Logger;
+import java.util.MissingResourceException;
+
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getLogger
+ implements Testlet
+{
+ TestSecurityManager sec = new TestSecurityManager();
+
+ public void test(TestHarness h)
+ {
+ Logger fooLogger = null;
+ Logger barLogger = null;
+ Throwable caught;
+ final String loggerName = TestLogger.class.getName();
+
+ try
+ {
+ sec.install();
+
+ // Check #1.
+ sec.setGrantLoggingControl(false);
+ h.check(Logger.getLogger("global") == Logger.global);
+
+ // Check #2.
+ sec.setGrantLoggingControl(false);
+ caught = null;
+ try
+ {
+ fooLogger = Logger.getLogger(
+ "gnu.testlet.java.util.logging.Logger.TestLogger");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException);
+
+ // Check #3.
+ sec.setGrantLoggingControl(true);
+ try
+ {
+ fooLogger = Logger.getLogger(loggerName);
+ h.check(true);
+ }
+ catch (Exception ex)
+ {
+ h.check(false);
+ h.debug(ex);
+ }
+
+ // Check #4.
+ sec.setGrantLoggingControl(false);
+ h.check(fooLogger.getName(), loggerName);
+
+ // Check #5.
+ sec.setGrantLoggingControl(false);
+ h.check(fooLogger.getResourceBundle() == null);
+
+ // Check #6: Can retrieve existing logger without LoggingPermission.
+ sec.setGrantLoggingControl(false);
+ h.check(Logger.getLogger(loggerName) == fooLogger);
+
+ // Check #7.
+ sec.setGrantLoggingControl(false);
+ try
+ {
+ Logger.getLogger(loggerName, "NonexistingResource");
+ h.check(false);
+ }
+ catch (MissingResourceException _)
+ {
+ h.check(true);
+ }
+ catch (Exception ex)
+ {
+ h.check(false);
+ h.debug(ex);
+ }
+
+ // Check #8.
+ sec.setGrantLoggingControl(false);
+ barLogger = Logger.getLogger(loggerName,
+ TestResourceBundle.class.getName());
+ h.check(barLogger == fooLogger);
+
+ // Check #9.
+ //
+ // Sun J2SE 1.4.1_01 fails this test. However, it seems wrong
+ // that a call to getLogger should be able to install a
+ // ResourceBundle into a pre-existing logger if the caller
+ // does not have LoggingPermission.
+ //
+ // Sun Microsystems has been informed about this security-related
+ // bug in the reference implementation by submitting a bug report.
+ // Sun bug review ID: 240615.
+ h.check(fooLogger.getResourceBundle() == null);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/getName.java b/gnu/testlet/java/util/logging/Logger/getName.java
new file mode 100644
index 00000000..42878d62
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/getName.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.4
+// Uses: TestLogger TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Logger;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getName
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+
+ private static final String LOGGER_NAME
+ = "gnu.testlet.java.util.logging.Logger.test_getName";
+
+ public void test(TestHarness h)
+ {
+ Logger logger;
+
+ try
+ {
+ sec.install();
+
+ // Check #1.
+ sec.setGrantLoggingControl(false);
+ logger = new TestLogger(LOGGER_NAME, null);
+ h.check(logger.getName(), LOGGER_NAME);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/getParent.java b/gnu/testlet/java/util/logging/Logger/getParent.java
new file mode 100644
index 00000000..55cf209d
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/getParent.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+// Uses: TestLogger TestSecurityManager
+
+// Copyright (C) 2006 Mark J. Wielaard (mark@klomp.org)
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Logger;
+
+
+public class getParent implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Logger abcde = Logger.getLogger("a.b.c.d.e");
+ Logger abc = Logger.getLogger("a.b.c");
+ Logger ab = Logger.getLogger("a.b");
+ Logger a = Logger.getLogger("a");
+ Logger ax = Logger.getLogger("a.x");
+ Logger axy = Logger.getLogger("a.x.y");
+ Logger axyzw = Logger.getLogger("a.x.y.z.w");
+
+ h.check(abcde.getParent(), abc);
+ h.check(abc.getParent(), ab);
+ h.check(ab.getParent(), a);
+ h.check(ax.getParent(), a);
+ h.check(axy.getParent(), ax);
+ h.check(axyzw.getParent(), axy);
+
+ Logger root = Logger.getLogger("");
+ Logger anon = Logger.getAnonymousLogger();
+
+ h.check(a.getParent(), root);
+ h.check(anon.getParent(), root);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/global.java b/gnu/testlet/java/util/logging/Logger/global.java
new file mode 100644
index 00000000..63cf9ea1
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/global.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Logger;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class global
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(Logger.global != null);
+
+ // Check #2.
+ h.check(Logger.global.getName(), "global");
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/hierarchyChecks.java b/gnu/testlet/java/util/logging/Logger/hierarchyChecks.java
new file mode 100644
index 00000000..6e2a866e
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/hierarchyChecks.java
@@ -0,0 +1,117 @@
+// Tags: JDK1.4
+// Uses: TestFilter TestLogger TestResourceBundle TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.*;
+
+
+/**
+ * Performs various checks on the hierarchy of loggers.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class hierarchyChecks
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+
+ private static final String PARENT_NAME
+ = "gnu.testlet.java.util.logging.Logger.hierarchyChecks";
+
+ private static final String CHILD_NAME
+ = PARENT_NAME + ".child";
+
+ public void test(TestHarness h)
+ {
+ Logger parent, child;
+ TestFilter parentFilter, childFilter;
+ LogRecord rec;
+ Formatter formatter;
+
+ try
+ {
+ // Preparation.
+ sec.install();
+ parentFilter = new TestFilter();
+ childFilter = new TestFilter();
+ formatter = new SimpleFormatter();
+
+ sec.setGrantLoggingControl(true);
+ parent = Logger.getLogger(PARENT_NAME,
+ TestResourceBundle.class.getName());
+ parent.setLevel(Level.ALL);
+ parent.setFilter(parentFilter);
+ parent.setUseParentHandlers(false);
+ child = Logger.getLogger(CHILD_NAME);
+ child.setFilter(childFilter);
+ child.setLevel(Level.ALL);
+ sec.setGrantLoggingControl(false);
+
+ // Check #1.
+ h.check(parent.getResourceBundle() instanceof TestResourceBundle);
+
+ // Check #2.
+ h.check(child.getResourceBundle() == null);
+
+ // Check #3.
+ h.check(parent.getResourceBundleName(),
+ TestResourceBundle.class.getName());
+
+ // Check #4.
+ h.check(child.getResourceBundleName(), null);
+
+ // Check #5.
+ h.check(child.getParent() == parent);
+
+ // Check #6.
+ h.check(parent.getUseParentHandlers() == false);
+
+ // Check #7.
+ h.check(child.getUseParentHandlers() == true);
+
+ // Check #8: child uses parent's ResourceBundle.
+ child.warning("Boo!");
+ h.check(childFilter.getLastRecord().getResourceBundle()
+ == parent.getResourceBundle());
+
+ // Check #9.
+ h.check(parentFilter.getLastRecord() == null);
+
+ // Check #10: log() passes ResourceBundle to LogRecord without
+ // localization.
+ child.entering("fakedClass", "fakedMethod", "SingleParam");
+ rec = childFilter.getLastRecord();
+ h.check(rec.getMessage(), "ENTRY {0}");
+
+ // Check #11: Localization is then performed by Formatter.
+ h.check(formatter.formatMessage(rec), "BETRETEN SingleParam");
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/Logger/securityChecks.java b/gnu/testlet/java/util/logging/Logger/securityChecks.java
new file mode 100644
index 00000000..44860f09
--- /dev/null
+++ b/gnu/testlet/java/util/logging/Logger/securityChecks.java
@@ -0,0 +1,181 @@
+// Tags: JDK1.4
+// Uses: TestLogger TestSecurityManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.Logger;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.*;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class securityChecks
+ implements Testlet
+{
+ private final TestSecurityManager sec = new TestSecurityManager();
+ private TestHarness harness;
+
+ public void test(TestHarness h)
+ {
+ this.harness = h;
+ try
+ {
+ sec.install();
+
+ testSecurity("Logger.global", Logger.global,
+ /* expect enforcement */ true);
+
+ testSecurity("Logger.getAnonymousLogger()",
+ Logger.getAnonymousLogger(),
+ /* expect enforcement */ false);
+
+ testSecurity("Logger.getAnonymousLogger(null)",
+ Logger.getAnonymousLogger(null),
+ /* expect enforcement */ false);
+
+ testSecurity("<named custom logger>",
+ new TestLogger("foo", null),
+ /* expect enforcement */ true);
+
+ testSecurity("<anonymous custom logger>",
+ new TestLogger(null, null),
+ /* expect enforcement */ true);
+ }
+ finally
+ {
+ sec.uninstall();
+ }
+ }
+
+
+ private void testSecurity(String checkPoint, Logger logger,
+ boolean expectEnforcement)
+ {
+ harness.checkPoint(checkPoint);
+
+ // Check #1: setFilter(null) [no LoggingPermission]
+ sec.setGrantLoggingControl(false);
+ try
+ {
+ logger.setFilter(null);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #2: setFilter(f) [no LoggingPermission].
+ try
+ {
+ logger.setFilter(new Filter()
+ {
+ public boolean isLoggable(LogRecord r)
+ {
+ return true;
+ }
+ });
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #3: setLevel(null) [no LoggingPermission].
+ try
+ {
+ logger.setLevel(null);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #4: setLevel(Level.CONFIG) [no LoggingPermission].
+ try
+ {
+ logger.setLevel(Level.CONFIG);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #5: addHandler(h) [no LoggingPermission].
+ Handler handler = new ConsoleHandler();
+ try
+ {
+ logger.addHandler(handler);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #6: removeHandler(h) [no LoggingPermission].
+ try
+ {
+ logger.removeHandler(handler);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+
+
+ // Check #7: setParent(l) [no LoggingPermission].
+ try
+ {
+ logger.setParent(new TestLogger("gnu.testlet.Test", null));
+ harness.check(false);
+ }
+ catch (Exception ex)
+ {
+ harness.check(ex instanceof SecurityException);
+ }
+
+
+ // Check #8: setUseParentHandlers(false) [no LoggingPermission].
+ try
+ {
+ logger.setUseParentHandlers(false);
+ harness.check(!expectEnforcement);
+ }
+ catch (Exception ex)
+ {
+ harness.check(expectEnforcement && (ex instanceof SecurityException));
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Entries b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Entries
new file mode 100644
index 00000000..f51bcf0a
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Entries
@@ -0,0 +1,2 @@
+/Test.java/1.1/Sat Jun 24 21:08:18 2006//
+D
diff --git a/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Repository b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Repository
new file mode 100644
index 00000000..e1c2627f
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/LoggingMXBean
diff --git a/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Root b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LoggingMXBean/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/LoggingMXBean/Test.java b/gnu/testlet/java/util/logging/LoggingMXBean/Test.java
new file mode 100644
index 00000000..a3cde74e
--- /dev/null
+++ b/gnu/testlet/java/util/logging/LoggingMXBean/Test.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.logging.LoggingMXBean;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import gnu.testlet.java.util.logging.Logger.TestSecurityManager;
+
+import java.util.logging.LoggingMXBean;
+import java.util.logging.LogManager;
+
+/**
+ * Gets hold of a logging bean from the
+ * @link{java.util.logging.LogManager} and
+ * test its security.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Test
+ implements Testlet
+{
+
+ private TestSecurityManager tsm = new TestSecurityManager();
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ Exception caught = null;
+ LoggingMXBean bean = LogManager.getLoggingMXBean();
+
+ tsm.install();
+
+ // Check setLoggerLevel
+ caught = null;
+ try
+ {
+ bean.setLoggerLevel("global", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof SecurityException, "loggerLevel");
+ try
+ {
+ bean.setLoggerLevel("NotALogger", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException, "loggerLevel");
+ try
+ {
+ bean.setLoggerLevel(null, null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof NullPointerException, "loggerLevel");
+ }
+ finally
+ {
+ tsm.uninstall();
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/java/util/logging/SocketHandler/CVS/Entries b/gnu/testlet/java/util/logging/SocketHandler/CVS/Entries
new file mode 100644
index 00000000..db6eacbe
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/CVS/Entries
@@ -0,0 +1,6 @@
+/SocketCapturer.java/1.2/Thu Jun 3 14:31:17 2004//
+/SocketHandler.java/1.1/Thu Feb 26 19:41:42 2004//
+/getFilter.java/1.2/Thu Jun 3 14:31:17 2004//
+/getFormatter.java/1.1/Thu Feb 26 19:41:42 2004//
+/publish.java/1.1/Thu Feb 26 19:41:42 2004//
+D
diff --git a/gnu/testlet/java/util/logging/SocketHandler/CVS/Repository b/gnu/testlet/java/util/logging/SocketHandler/CVS/Repository
new file mode 100644
index 00000000..a970660e
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/SocketHandler
diff --git a/gnu/testlet/java/util/logging/SocketHandler/CVS/Root b/gnu/testlet/java/util/logging/SocketHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java b/gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java
new file mode 100644
index 00000000..2dd43b90
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/SocketCapturer.java
@@ -0,0 +1,129 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.SocketHandler;
+
+import java.io.*;
+import java.net.*;
+
+
+/**
+ * A helper class that opens a TCP/IP server socket and starts
+ * a separate thread which listens for a connection request on
+ * that socket, reads in everything until the client closes the
+ * connection, and returns the transmitted content.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class SocketCapturer
+{
+ Server server;
+ Thread thread;
+ ServerSocket socket;
+
+ public SocketCapturer()
+ throws java.io.IOException
+ {
+ this(0);
+ }
+
+
+ public SocketCapturer(int port)
+ throws java.io.IOException
+ {
+ socket = new ServerSocket(port);
+ server = new Server(socket);
+ thread = new Thread(server);
+ thread.start();
+ }
+
+
+ public int getLocalPort()
+ {
+ return socket.getLocalPort();
+ }
+
+
+ /**
+ * Returns the transmitted content. Blocks the current thread
+ * until a client has transmitted all its content and closed the
+ * connection.
+ */
+ public byte[] getCaptured()
+ {
+ try
+ {
+ thread.join();
+ }
+ catch (InterruptedException _)
+ {
+ }
+
+ return server.getCaptured();
+ }
+
+
+ private class Server
+ implements Runnable
+ {
+ ServerSocket serverSocket;
+ Socket conn;
+ private volatile Throwable thrown;
+ private volatile byte[] captured;
+
+ public Server(ServerSocket serverSocket)
+ {
+ this.serverSocket = serverSocket;
+ }
+
+ public byte[] getCaptured()
+ {
+ return captured;
+ }
+
+ public void run()
+ {
+ try
+ {
+ conn = serverSocket.accept();
+ InputStream is = conn.getInputStream();
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ int r = 0;
+ byte[] b = new byte[2000];
+
+ while ((r = is.read(b)) >= 0)
+ {
+ if (r > 0)
+ bos.write(b, 0, r);
+ }
+
+ conn.close();
+ captured = bos.toByteArray();
+ bos.close();
+ }
+ catch (Exception ex)
+ {
+ this.thrown = ex;
+ ex.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/SocketHandler/SocketHandler.java b/gnu/testlet/java/util/logging/SocketHandler/SocketHandler.java
new file mode 100644
index 00000000..ca0410b3
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/SocketHandler.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.SocketHandler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class SocketHandler
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ // Check #1.
+ try
+ {
+ new java.util.logging.SocketHandler("0.0.0.0", -1);
+ th.check(false);
+ }
+ catch (Exception ex)
+ {
+ th.check(ex instanceof IllegalArgumentException);
+ }
+
+ // Check #2: SocketHandler(null, 8080) --> IllegalArgumentException.
+ try
+ {
+ new java.util.logging.SocketHandler(null, 8080);
+ th.check(false);
+ }
+ catch (Exception ex)
+ {
+ th.check(ex instanceof IllegalArgumentException);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/SocketHandler/getFilter.java b/gnu/testlet/java/util/logging/SocketHandler/getFilter.java
new file mode 100644
index 00000000..808e6c4c
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/getFilter.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.SocketHandler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.ServerSocket;
+import java.util.logging.SocketHandler;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getFilter
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ SocketHandler handler;
+
+ // Check #1.
+ try
+ {
+ ServerSocket socket = new ServerSocket(0);
+ handler = new SocketHandler("0.0.0.0", socket.getLocalPort());
+ socket.close();
+ th.check(handler.getFilter() == null);
+ }
+ catch (Exception ex)
+ {
+ th.check(false);
+ th.debug(ex);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/SocketHandler/getFormatter.java b/gnu/testlet/java/util/logging/SocketHandler/getFormatter.java
new file mode 100644
index 00000000..fab5211b
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/getFormatter.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.SocketHandler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.net.ServerSocket;
+import java.util.logging.SocketHandler;
+import java.util.logging.XMLFormatter;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getFormatter
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ SocketHandler handler;
+
+ // Check #1.
+ try
+ {
+ ServerSocket socket = new ServerSocket(0);
+ handler = new SocketHandler("0.0.0.0", socket.getLocalPort());
+ socket.close();
+ th.check(handler.getFormatter() instanceof XMLFormatter);
+ }
+ catch (Exception ex)
+ {
+ th.check(false);
+ th.debug(ex);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/logging/SocketHandler/publish.java b/gnu/testlet/java/util/logging/SocketHandler/publish.java
new file mode 100644
index 00000000..03906e98
--- /dev/null
+++ b/gnu/testlet/java/util/logging/SocketHandler/publish.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.4
+// Uses: SocketCapturer
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.SocketHandler;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.SocketHandler;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class publish
+ implements Testlet
+{
+ public void test(TestHarness th)
+ {
+ SocketCapturer capturer;
+ SocketHandler handler;
+ String captured = null;
+
+ // Check #1.
+ try
+ {
+ capturer = new SocketCapturer(0);
+ handler = new SocketHandler("0.0.0.0", capturer.getLocalPort());
+ handler.setLevel(Level.FINE);
+ handler.publish(new LogRecord(Level.CONFIG, "hello, world"));
+ handler.publish(new LogRecord(Level.FINER, "how are you?"));
+ handler.close();
+ captured = new String(capturer.getCaptured());
+ th.check(true);
+ }
+ catch (Exception ex)
+ {
+ th.check(false);
+ th.debug(ex);
+ return;
+ }
+
+ // Check #2.
+ th.check(captured.indexOf("<message>hello, world</message>") >= 0);
+
+ // Check #3.
+ th.check(captured.indexOf("<message>how are you?</message>") < 0);
+
+ // Check #4.
+ th.check(captured.indexOf("<?xml") == 0);
+
+ // Check #5.
+ th.check(captured.indexOf("</log>") >= 0);
+ }
+}
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/CVS/Entries b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Entries
new file mode 100644
index 00000000..bb8ecfb2
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Entries
@@ -0,0 +1,4 @@
+/formatMessage.java/1.2/Tue Jul 24 19:39:39 2007//
+/getHead.java/1.1/Thu Feb 26 19:41:43 2004//
+/getTail.java/1.1/Thu Feb 26 19:41:43 2004//
+D
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/CVS/Repository b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Repository
new file mode 100644
index 00000000..14792526
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/logging/XMLFormatter
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/CVS/Root b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java b/gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java
new file mode 100644
index 00000000..28d551ba
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/formatMessage.java
@@ -0,0 +1,195 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.XMLFormatter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.XMLFormatter;
+
+import java.util.TimeZone;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class formatMessage
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ XMLFormatter formatter = new XMLFormatter();
+ LogRecord rec;
+
+ // Check #1.
+ try
+ {
+ formatter.formatMessage(null);
+ h.check(false);
+ }
+ catch (NullPointerException _)
+ {
+ h.check(true);
+ }
+ catch (Exception _)
+ {
+ h.check(false);
+ }
+
+
+ // Check #2.
+ rec = new LogRecord(Level.INFO, "foobar");
+
+ //Need to force the default time zone to UTC or else
+ //the comparison uses system time zone and makes the tests
+ //break.
+ TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+ rec.setMillis(1234567);
+ rec.setSequenceNumber(42);
+ rec.setThreadID(21);
+ h.check(formatter.format(rec),
+ EXPECTED_PREFIX
+ + " <thread>21</thread>\n"
+ + " <message>foobar</message>\n"
+ + "</record>\n");
+
+
+ // Check #3.
+ rec.setSourceClassName(
+ "FakeClass");
+ rec.setSourceMethodName("test(fake)");
+ h.check(formatter.format(rec),
+ EXPECTED_PREFIX
+ + " <class>FakeClass</class>\n"
+ + " <method>test(fake)</method>\n"
+ + " <thread>21</thread>\n"
+ + " <message>foobar</message>\n"
+ + "</record>\n");
+
+
+ // Check #4.
+ rec.setMessage("foobar {1}-{0}");
+ rec.setParameters(new String[] { "peace", "love" });
+ h.check(formatter.format(rec),
+ EXPECTED_PREFIX
+ + " <class>FakeClass</class>\n"
+ + " <method>test(fake)</method>\n"
+ + " <thread>21</thread>\n"
+ + " <message>foobar love-peace</message>\n"
+ + "</record>\n");
+
+
+ // Check #5.
+ rec.setThrown(new TestException("non-localized message"));
+ rec.setMessage("mauve is a beautiful color");
+ h.check(deleteFrames(formatter.format(rec)),
+ EXPECTED_PREFIX
+ + " <class>FakeClass</class>\n"
+ + " <method>test(fake)</method>\n"
+ + " <thread>21</thread>\n"
+ + " <message>mauve is a beautiful color</message>\n"
+ + " <exception>\n"
+ + " <message>gnu.testlet.java.util.logging"
+ + ".XMLFormatter.formatMessage$TestException: localized "
+ + "message</message>\n"
+ + " </exception>\n"
+ + "</record>\n");
+
+ // Check #6.
+ rec.setMessage("ENTRY {0}");
+ rec.setParameters(new String[] { "foo.bar" });
+ rec.setResourceBundleName(TestResourceBundle.class.getName());
+ rec.setThrown(null);
+ h.check(formatter.format(rec),
+ EXPECTED_PREFIX
+ + " <class>FakeClass</class>\n"
+ + " <method>test(fake)</method>\n"
+ + " <thread>21</thread>\n"
+ + " <message>ENTRY foo.bar</message>\n"
+ + "</record>\n");
+ }
+
+
+ //1234567 milliseconds is only 20 minutes and
+ //34 seconds (past the Epoch, UTC time).
+ private static final String EXPECTED_PREFIX =
+ "<record>\n"
+ + " <date>1970-01-01T00:20:34</date>\n"
+ + " <millis>1234567</millis>\n"
+ + " <sequence>42</sequence>\n"
+ + " <level>INFO</level>\n";
+
+
+ private static String deleteFrames(String s)
+ {
+ int start, end;
+ StringBuffer buf;
+
+ start = s.indexOf(" <frame");
+ end = s.lastIndexOf("</frame>\n ");
+ if (start < 0 || end < 0)
+ return s;
+
+ buf = new StringBuffer(s);
+ buf.delete(start, end + "</frame>\n ".length());
+ return buf.toString();
+ }
+
+
+ private static class TestException extends Exception
+ {
+ public TestException()
+ {
+ }
+
+ public TestException(String s)
+ {
+ super(s);
+ }
+
+ public String getLocalizedMessage()
+ {
+ return "localized message";
+ }
+ };
+
+
+ public static class TestResourceBundle
+ extends java.util.ListResourceBundle
+ {
+ public TestResourceBundle()
+ {
+ }
+
+ private final Object[][] contents = new Object[][]
+ {
+ { "ENTRY {0}", "BETRETEN {0}" }
+ };
+
+ protected Object[][] getContents()
+ {
+ return contents;
+ }
+ };
+
+}
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/getHead.java b/gnu/testlet/java/util/logging/XMLFormatter/getHead.java
new file mode 100644
index 00000000..d5da85a7
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/getHead.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.XMLFormatter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.Formatter;
+import java.util.logging.XMLFormatter;
+import java.util.logging.StreamHandler;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getHead
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Formatter formatter;
+ StreamHandler handler;
+
+ formatter = new XMLFormatter();
+ handler = new StreamHandler();
+
+ // Check point "no encoding set".
+ h.checkPoint("no encoding set");
+ h.check(formatter.getHead(handler),
+ getExpectedHead(System.getProperty("file.encoding")));
+
+
+ // Check point "UTF-8".
+ h.checkPoint("UTF-8");
+ try
+ {
+ handler.setEncoding("UTF-8");
+ }
+ catch (Exception ex)
+ {
+ h.check(false);
+ h.debug(ex);
+ }
+ h.check(formatter.getHead(handler), getExpectedHead("UTF-8"));
+
+
+ /* Check point "getHead(null)".
+ *
+ * The behavior of passing null is not specified, but we want to
+ * check that we do the same as Sun's reference implementation.
+ */
+ h.checkPoint("getHead(null)");
+ try
+ {
+ formatter.getHead(null);
+ h.check(false);
+ }
+ catch (Exception ex)
+ {
+ h.check(ex instanceof NullPointerException);
+ }
+ }
+
+
+ /**
+ * Replaces any occurence of the vertical bar character by the
+ * platform-specific line separator.
+ *
+ * @throws NullPointerException if <code>pat</code> is
+ * <code>null</code>.
+ */
+ public static String replaceLineSeparator(String pat)
+ {
+ String lineSeparator = System.getProperty("line.separator");
+
+ /* FIXME: This will return the wrong result on platforms where the
+ * line.separator property is not exactly one character, for
+ * example on Microsoft Windows. Write a decent implementation.
+ */
+ return pat.replace('|', lineSeparator.charAt(0));
+ }
+
+
+ private String getExpectedHead(String encodingName)
+ {
+ return replaceLineSeparator("<?xml version=\"1.0\" encoding=\""
+ + encodingName
+ + "\" standalone=\"no\"?>|<!DOCTYPE log SYSTEM \"logger.dtd\">"
+ + "|<log>|");
+ }
+}
diff --git a/gnu/testlet/java/util/logging/XMLFormatter/getTail.java b/gnu/testlet/java/util/logging/XMLFormatter/getTail.java
new file mode 100644
index 00000000..be307ab2
--- /dev/null
+++ b/gnu/testlet/java/util/logging/XMLFormatter/getTail.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.java.util.logging.XMLFormatter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.logging.StreamHandler;
+import java.util.logging.XMLFormatter;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getTail
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ XMLFormatter formatter = new XMLFormatter();
+ StreamHandler handler = new StreamHandler();
+
+ // Check #1.
+ h.check(formatter.getTail(handler),
+ "</log>" + System.getProperty("line.separator"));
+
+ /* Check #2.
+ *
+ * The behavior of passing null is not specified, but
+ * we want to check that we do the same as Sun's reference
+ * implementation.
+ */
+ try
+ {
+ formatter.getTail(null);
+ h.check(true);
+ }
+ catch (Exception ex)
+ {
+ h.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/prefs/CVS/Entries b/gnu/testlet/java/util/prefs/CVS/Entries
new file mode 100644
index 00000000..78e62cc2
--- /dev/null
+++ b/gnu/testlet/java/util/prefs/CVS/Entries
@@ -0,0 +1,2 @@
+/PreferenceTest.java/1.3/Wed Sep 27 14:43:52 2006//
+D
diff --git a/gnu/testlet/java/util/prefs/CVS/Repository b/gnu/testlet/java/util/prefs/CVS/Repository
new file mode 100644
index 00000000..4111f3f4
--- /dev/null
+++ b/gnu/testlet/java/util/prefs/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/prefs
diff --git a/gnu/testlet/java/util/prefs/CVS/Root b/gnu/testlet/java/util/prefs/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/prefs/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/prefs/PreferenceTest.java b/gnu/testlet/java/util/prefs/PreferenceTest.java
new file mode 100644
index 00000000..cf982f36
--- /dev/null
+++ b/gnu/testlet/java/util/prefs/PreferenceTest.java
@@ -0,0 +1,496 @@
+/*
+ * PreferenceTest.java -- simple test for java.utils.prefs Copyright (C) 2006
+ * Lima Software.
+ *
+ * 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,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+// Tags: JDK1.4
+package gnu.testlet.java.util.prefs;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.NodeChangeEvent;
+import java.util.prefs.NodeChangeListener;
+import java.util.prefs.PreferenceChangeEvent;
+import java.util.prefs.PreferenceChangeListener;
+import java.util.prefs.Preferences;
+
+/**
+ * This simple test just read and write a set of preference. Does not assume a
+ * particular backend.
+ *
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class PreferenceTest implements Testlet
+{
+ /**
+ * The expected full name of this preference node. <strong>Note:</strong>
+ * change it if you move this class, it always reflects the package name.
+ */
+ private static final String FULL_PATH = "/gnu/testlet/java/util/prefs";
+
+ /**
+ * Default key used for tests.
+ */
+ private static final String KEY = "AppName";
+
+ /**
+ * Default value for the test key.
+ */
+ private static final String VALUE = "GNU Classpath - Preference API Test Case";
+
+ /**
+ * Defines if we want debug information on the default debug log or not.
+ * Enable the if you need it or leave disabled for normal tests.
+ */
+ private static final boolean DEBUG = false;
+
+ /* Test Harness */
+ protected TestHarness harness = null;
+
+ /** Preference */
+ private Preferences prefs = null;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // initiliaze tests, call it before any other method of this class
+ setup();
+
+ if (DEBUG) printInfo();
+
+ // run tests
+ testAbsolutePath();
+
+ // clear the preference tree, to be sure it does not contains
+ // keys we will use
+ testClear();
+
+ testPut();
+ testByte();
+ testBoolean();
+ testSpecialCharacters();
+
+ testListener();
+ testChildren();
+ }
+
+ /**
+ * Setup the preference api backend.
+ */
+ private void setup()
+ {
+ // System.setProperty("java.util.prefs.PreferencesFactory",
+ // "gnu.java.util.prefs.GConfBasedFactory");
+
+ this.prefs = Preferences.userNodeForPackage(PreferenceTest.class);
+ }
+
+ private void testAbsolutePath()
+ {
+ this.harness.checkPoint("absolutePath()");
+
+ String absolutePath = this.prefs.absolutePath();
+ print("Absolute path: " + absolutePath);
+
+ this.harness.check(FULL_PATH.compareTo(absolutePath) == 0);
+ }
+
+ private void testClear()
+ {
+ this.harness.checkPoint("testClear()");
+
+ try
+ {
+ this.prefs.clear();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testClear()");
+ }
+
+ this.harness.check(true);
+ }
+
+ /**
+ * Put the default key on the preference node, then get it and check the
+ * result to see if the preference api is actually capable of storing
+ * preferences.
+ */
+ private void testPut()
+ {
+ this.harness.checkPoint("testPut()");
+
+ this.prefs.put(KEY, VALUE);
+
+ // suggest a sync to try to avoid memory caching.
+ try
+ {
+ this.prefs.sync();
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testPut(), call to sync");
+ }
+
+ String value
+ = this.prefs.get(KEY,
+ "Wrong value for key: " + KEY + ", expected: " + VALUE);
+
+ print("Key (" + KEY + "): " + value);
+ this.harness.check(VALUE.compareTo(value) == 0);
+ }
+
+ /**
+ * Add a series of children to this node, put some preferences inside them and
+ * retrieve everything, checking that the preference backend correctly handles
+ * the tree structure of the entries under the current node. <strong>Note</strong>:
+ * this test removes the preference node.
+ */
+ private void testChildren()
+ {
+ this.harness.checkPoint("testChildren()");
+
+ String absolutePath = null;
+
+ // add 3 new nodes, these will be direct children of the current node
+
+ // node 1
+ Preferences pref1 = this.prefs.node("children_1");
+ this.harness.check("children_1".compareTo(pref1.name()) == 0);
+ absolutePath = pref1.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_1").compareTo(absolutePath) == 0);
+
+ // node 2
+ Preferences pref2 = this.prefs.node("children_2");
+ this.harness.check("children_2".compareTo(pref2.name()) == 0);
+ absolutePath = pref2.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_2").compareTo(absolutePath) == 0);
+
+ // node 3
+ Preferences pref3 = this.prefs.node("children_3");
+ this.harness.check("children_3".compareTo(pref3.name()) == 0);
+ absolutePath = pref3.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_3").compareTo(absolutePath) == 0);
+
+ // now add a preference key to each of these new nodes
+ pref1.put("key1", "value1");
+ pref2.put("key2", "value2");
+ pref3.put("key3", "value3");
+
+ // add a subnode for child #1
+ Preferences child1 = pref1.node("subPreference1");
+ this.harness.check("subPreference1".compareTo(child1.name()) == 0);
+ absolutePath = child1.absolutePath();
+ this.harness.check((FULL_PATH + "/children_1/" + "subPreference1")
+ .compareTo(absolutePath) == 0);
+
+ child1.put("key1-child1", "some value");
+
+ // retrieve the list of children of the root node
+ this.harness.checkPoint("testAddChildren() - check new children");
+ String[] expResult = {
+ "children_1", "children_2", "children_3"
+ };
+ if (!listChildren(this.prefs, expResult))
+ {
+ this.harness.fail("testAddChildren(), children listing error");
+ }
+
+ this.harness.checkPoint("testAddChildren() - check subnodes");
+ expResult = new String[] {
+ "subPreference1"
+ };
+ if (!listChildren(pref1, expResult))
+ {
+ this.harness.fail("testAddChildren(), children listing error");
+ }
+
+ // clean everything
+ try
+ {
+ this.prefs.removeNode();
+ this.prefs.flush();
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testAddChildren(), call to clear()");
+ }
+
+ // to check that the node is empty we simply call childrenNames on it
+ // this operation should fail because the node does not exist anymore
+ this.harness.checkPoint("testAddChildren() - checking emptyness");
+ try
+ {
+ this.prefs.childrenNames();
+ this.harness.fail("The node should not exist anymore!");
+ }
+ catch (IllegalStateException e)
+ {
+ this.harness.check(true);
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("The node should not exist anymore!");
+ }
+ }
+
+ private boolean listChildren(Preferences pref, String[] expResult)
+ {
+ boolean _res = false;
+
+ try
+ {
+ String[] result = pref.childrenNames();
+
+ print("Resuls length: " + result.length +
+ ", expected: " + expResult.length);
+
+ this.harness.check(result.length == expResult.length);
+
+ for (int i = 0; i < expResult.length; i++)
+ {
+ print("result[" + i + "] = " + result[i] +
+ ", expected = " + expResult[i]);
+ this.harness.check(result[i], expResult[i]);
+ }
+
+ _res = true;
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to childrenNames()");
+ }
+
+ return _res;
+ }
+
+ private void testByte()
+ {
+ this.harness.checkPoint("testByte()");
+
+ String string = "an array of bytes value";
+ byte[] bytes = null;
+ byte[] result = null;
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ObjectOutputStream oStream;
+
+ try
+ {
+ oStream = new ObjectOutputStream(stream);
+ oStream.writeObject(string);
+ bytes = stream.toByteArray();
+
+ this.harness.checkPoint("testByte() - put byte array");
+ prefs.putByteArray(KEY, bytes);
+
+ this.harness.checkPoint("testByte() - get byte array");
+ result = prefs.getByteArray(KEY, null);
+
+ // this fails, but the result is correct when restoring the
+ // String
+ // this.harness.check(result, bytes);
+
+ ByteArrayInputStream iStream = new ByteArrayInputStream(result);
+ ObjectInputStream oiStream = new ObjectInputStream(iStream);
+ String rString = (String) oiStream.readObject();
+
+ print("Result: " + rString + ", expected: " + string);
+ this.harness.check(rString, string);
+
+ }
+ catch (IOException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testByte() - IO Exception");
+ }
+ catch (ClassNotFoundException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testByte() - ClassNotFoundException");
+ }
+ }
+
+ private void testBoolean()
+ {
+ this.harness.checkPoint("testBoolean()");
+
+ String key = "boolean_key";
+ String _true = "TrUe";
+
+ // test "normal" booleans
+ this.prefs.putBoolean(key, true);
+ boolean result = this.prefs.getBoolean(key, false);
+
+ this.harness.check(result, true);
+
+ // test String as boolean
+ this.prefs.remove(key);
+ try
+ {
+ this.prefs.flush();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testBoolean() - fail to flush");
+ }
+
+ this.prefs.put(key, _true);
+ result = this.prefs.getBoolean(key, false);
+
+ this.harness.check(result, true);
+ }
+
+ /**
+ * This test is used by the GConf backend to test if it correctly handles
+ * nodes that contains invalid characters.
+ */
+ private void testSpecialCharacters()
+ {
+ this.harness.checkPoint("testSpecialCharacters()");
+
+ // try an invalid name as path
+ Preferences _prefs = this.prefs.node("invalid children node");
+ _prefs.put("Invalid Key", "An invalid key, on an invalid subnode");
+ _prefs.put("Valid_Key", "A valid key, on an invalid subnode");
+
+ String one = _prefs.get("Invalid Key", "unable to get the invalid key");
+ String two = _prefs.get("Valid_Key", "unable to get the invalid key");
+
+ this.harness.check(one, "An invalid key, on an invalid subnode");
+ this.harness.check(two, "A valid key, on an invalid subnode");
+
+ try
+ {
+ _prefs.flush();
+ _prefs.removeNode();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testSpecialCharacters() fail to removeNode");
+ }
+ }
+
+ private void testListener()
+ {
+ this.harness.checkPoint("testListener()");
+
+ PreferenceListener listener = new PreferenceListener();
+
+ this.harness.checkPoint("testListener() - adding listeners");
+ this.prefs.addNodeChangeListener(listener);
+ this.prefs.addPreferenceChangeListener(listener);
+
+ // store this, key, read it then remove it
+ this.harness.checkPoint("testListener() - inserting key");
+
+ this.prefs.put("new_key", "some value");
+ String key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
+ this.harness.check(key, "some value");
+
+ this.harness.checkPoint("testListener() - updating key");
+
+ this.prefs.put("new_key", "some other value");
+ key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
+ this.harness.check(key, "some other value");
+
+ this.harness.checkPoint("testListener() - removing listeners");
+
+ this.prefs.removeNodeChangeListener(listener);
+ this.prefs.removePreferenceChangeListener(listener);
+
+ this.harness.checkPoint("testListener() - removing key");
+ this.prefs.remove("new_key");
+ }
+
+ /**
+ * Prints on screen some information about the class we are about to test.
+ * This can be useful for debugging, ant to check if a particoular backend is
+ * enabled.
+ */
+ private void printInfo()
+ {
+ String backendName = System.getProperty(
+ "java.util.prefs.PreferencesFactory",
+ "No backend registered, using default backend");
+ String vendor = System.getProperty("java.vendor");
+
+ this.harness.debug(vendor);
+ this.harness.debug(backendName);
+ }
+
+ private void print(String message)
+ {
+ if (DEBUG) harness.debug(message);
+ }
+
+ private class PreferenceListener implements NodeChangeListener,
+ PreferenceChangeListener
+ {
+ public void childAdded(NodeChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Child added!");
+ String name = event.getChild().name();
+ print("name: " + name);
+ }
+
+ public void childRemoved(NodeChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Child removed!");
+ String name = event.getChild().name();
+ print("name: " + name);
+ }
+
+ public void preferenceChange(PreferenceChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Preference changed!");
+ String name = event.getNode().name();
+ String value = event.getNewValue();
+ print("name: " + name);
+ print("value: " + value);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/regex/CVS/Entries b/gnu/testlet/java/util/regex/CVS/Entries
new file mode 100644
index 00000000..c2003010
--- /dev/null
+++ b/gnu/testlet/java/util/regex/CVS/Entries
@@ -0,0 +1,4 @@
+/CharacterClasses.java/1.2/Fri Jan 20 22:37:46 2006//
+/PatternSplit.java/1.2/Tue Feb 8 21:25:02 2005//
+/TestHelper.java/1.2/Thu Jun 3 14:31:17 2004//
+D
diff --git a/gnu/testlet/java/util/regex/CVS/Entries.Log b/gnu/testlet/java/util/regex/CVS/Entries.Log
new file mode 100644
index 00000000..b8a51b00
--- /dev/null
+++ b/gnu/testlet/java/util/regex/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/Matcher////
+A D/Pattern////
diff --git a/gnu/testlet/java/util/regex/CVS/Repository b/gnu/testlet/java/util/regex/CVS/Repository
new file mode 100644
index 00000000..d9ea89b3
--- /dev/null
+++ b/gnu/testlet/java/util/regex/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/regex
diff --git a/gnu/testlet/java/util/regex/CVS/Root b/gnu/testlet/java/util/regex/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/regex/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/regex/CharacterClasses.java b/gnu/testlet/java/util/regex/CharacterClasses.java
new file mode 100644
index 00000000..3204b857
--- /dev/null
+++ b/gnu/testlet/java/util/regex/CharacterClasses.java
@@ -0,0 +1,108 @@
+// Tags: JDK1.4
+// Uses: TestHelper
+
+// Copyright (C) 2004 Mark Wielaard
+
+// 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.java.util.regex;
+
+import gnu.testlet.*;
+import java.util.regex.*;
+
+/**
+ * Tests character classes, negated character classes and class set
+ * operations.
+ */
+public class CharacterClasses implements Testlet
+{
+ private TestHarness harness;
+ private TestHelper helper;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ this.helper = new TestHelper(harness);
+
+ test("a", 'a', 'b');
+ test("ab", 'b', 'c');
+ test("ba", 'a', 'c');
+ test("abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVW",
+ 'a', '*');
+ test("abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVW",
+ '1', '*');
+ test("abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVW",
+ 'A', '*');
+
+ test("a-z", 'a', 'A');
+ test("A-Z", 'Z', 'z');
+ test("a-zA-Z", 'a', '1');
+ test("1-9a-zA-Z", 'A', ' ');
+
+ test("-", '-', '*');
+ test(".", '.', '^');
+ test("*", '*', '$');
+ test("$", '$', '*');
+ // Sun's JDK does not accept the traditional expression "[[]"
+ // maybe because it must support new expressions such as "[a-d[m-p]]"
+ // and "[a-z&&[^m-p]]". So the following test has been commented out.
+ // test("[", '[', ']');
+ test("\\[", '[', ']');
+ test("\\]", ']', '[');
+
+ helper.testNotPattern("[]");
+ helper.testNotPattern("[^]");
+ }
+
+ void test(String range, char c, char nc)
+ {
+ // Positive range
+ String pat = '[' + range + ']';
+ harness.checkPoint("test: " + pat);
+ try
+ {
+ Pattern pattern = Pattern.compile(pat);
+ harness.check(pat, pattern.pattern());
+ helper.testEmpty(pattern, false);
+ helper.testMatchComplete(pattern, Character.toString(c));
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+
+ // Negative range
+ pat = "[^" + range + ']';
+ harness.checkPoint("test: " + pat);
+ try
+ {
+ Pattern pattern = Pattern.compile(pat);
+ harness.check(pat, pattern.pattern());
+ helper.testEmpty(pattern, false);
+ helper.testMatchComplete(pattern, Character.toString(nc));
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+
+
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Matcher/CVS/Entries b/gnu/testlet/java/util/regex/Matcher/CVS/Entries
new file mode 100644
index 00000000..ad022546
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/CVS/Entries
@@ -0,0 +1,5 @@
+/Regions.java/1.1/Mon May 12 21:24:39 2008//
+/hitEnd.java/1.1/Wed Aug 16 01:37:18 2006//
+/quoteReplacement.java/1.1/Mon Apr 25 11:32:50 2011//
+/usePattern.java/1.1/Tue Apr 10 01:58:45 2012//
+D
diff --git a/gnu/testlet/java/util/regex/Matcher/CVS/Repository b/gnu/testlet/java/util/regex/Matcher/CVS/Repository
new file mode 100644
index 00000000..58bbe648
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/regex/Matcher
diff --git a/gnu/testlet/java/util/regex/Matcher/CVS/Root b/gnu/testlet/java/util/regex/Matcher/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/regex/Matcher/Regions.java b/gnu/testlet/java/util/regex/Matcher/Regions.java
new file mode 100644
index 00000000..781091dd
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/Regions.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2008 Andrew John Hughes (gnu_andrew@member.fsf.org)
+
+// 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.java.util.regex.Matcher;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Regions
+ implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ String s = "food bar fool";
+ Matcher m = Pattern.compile("^foo.").matcher(s);
+
+ harness.check(m.lookingAt(), "Match foo at start of " + s);
+ harness.check(m.group(), "food");
+
+ m.reset();
+ m.region(9, s.length());
+ harness.check(m.lookingAt(), "Match foo at start of " + s.substring(9));
+ harness.check(m.group(), "fool");
+
+ m.reset();
+ m.region(9, 10);
+ harness.check(m.lookingAt(), false,
+ "Match foo at start of " + s.substring(9,10));
+
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Matcher/hitEnd.java b/gnu/testlet/java/util/regex/Matcher/hitEnd.java
new file mode 100644
index 00000000..79695b27
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/hitEnd.java
@@ -0,0 +1,154 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Ito Kazumitsu (kaz@maczuka.gcd.org)
+
+// 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.java.util.regex.Matcher;
+
+import gnu.testlet.*;
+import java.util.regex.*;
+
+public class hitEnd implements Testlet
+{
+ private TestHarness harness;
+ // There seems to be some bug in gnu.java.util.regex and
+ // Pattern object cannot be reused for more than one matchers.
+ // So we compile the pattern string every time.
+ private Pattern pattern;
+ private String patternStr;
+ private Matcher matcher;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ try
+ {
+ patternStr = "abcd";
+ testFind("xyzabcd", false);
+ testFind("XYZabcdxyz", false);
+ testFind("xyzabc", true);
+ testFind("xyzxyz", true);
+ testMatches("abcd", false);
+ testMatches("abc", true);
+ testMatches("abcdxyz", false);
+ testMatches("xyzabcd", false);
+ testMatches("xyz", false);
+ testLookingAt("abcd", false);
+ testLookingAt("abcdxyz", false);
+ testLookingAt("abc", true);
+ testLookingAt("xyzabcd", false);
+
+ patternStr = "abcd$";
+ testFind("xyzabcd", true);
+ testFind("XYZabcdxyz", true);
+ testFind("xyzabc", true);
+ testFind("xyzxyz", true);
+ testMatches("abcd", true);
+ testMatches("abc", true);
+ testMatches("abcdxyz", false);
+ testMatches("xyzabcd", false);
+ testMatches("xyz", false);
+ testLookingAt("abcd", true);
+ testLookingAt("abcdxyz", false);
+ testLookingAt("abc", true);
+ testLookingAt("xyzabcd", false);
+
+ patternStr = "a+b";
+ testFind("xyzaaab", false);
+ testFind("xyzaaabb", false);
+ testFind("xyzaaa", true);
+ testFind("xyzxyz", true);
+ testMatches("aaab", false);
+ testMatches("aaaa", true);
+ testMatches("aaabx", false);
+ testMatches("xaaab", false);
+ testLookingAt("aaab", false);
+ testLookingAt("aaaa", true);
+ testLookingAt("aaabxyz", false);
+ testLookingAt("xyzxyz", false);
+
+ patternStr = "(?:a+b)|(?:aa)";
+ testFind("xyzaaab", false);
+ testFind("xyzaa", true);
+ testFind("xyzaaa", true);
+ testFind("xyzaax", false);
+ testMatches("aaab", false);
+ testMatches("aaaa", true);
+ testMatches("aa", true);
+ testLookingAt("aaab", false);
+ testLookingAt("aaaa", true);
+ testLookingAt("aa", true);
+ testLookingAt("aax", false);
+
+ patternStr = "(?:aa)|(?:a+b)";
+ testFind("xyzaaab", false);
+ testFind("xyzaa", false);
+ testFind("xyzaaa", false);
+ testFind("xyzaax", false);
+ testMatches("aaab", false);
+ testMatches("aaaa", true);
+ testMatches("aa", false);
+ testLookingAt("aaab", false);
+ testLookingAt("aaaa", false);
+ testLookingAt("aa", false);
+ testLookingAt("aax", false);
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false, pse.toString());
+ }
+ }
+
+ private void testFind(String s, boolean expected)
+ {
+ pattern = Pattern.compile(patternStr);
+ matcher = pattern.matcher(s);
+ matcher.find();
+ boolean result = matcher.hitEnd();
+ if (result != expected) debugMsg(s, "find", expected, result);
+ harness.check(result == expected);
+ }
+
+ private void testMatches(String s, boolean expected)
+ {
+ pattern = Pattern.compile(patternStr);
+ matcher = pattern.matcher(s);
+ matcher.matches();
+ boolean result = matcher.hitEnd();
+ if (result != expected) debugMsg(s, "matches", expected, result);
+ harness.check(result == expected);
+ }
+
+ private void testLookingAt(String s, boolean expected)
+ {
+ pattern = Pattern.compile(patternStr);
+ matcher = pattern.matcher(s);
+ matcher.lookingAt();
+ boolean result = matcher.hitEnd();
+ if (result != expected) debugMsg(s, "lookingAt", expected, result);
+ harness.check(result == expected);
+ }
+
+ private void debugMsg(String s, String method, boolean expected, boolean result)
+ {
+ harness.debug("pattern=" + pattern.pattern() + " input=" + s + " method=" + method + " matcher=" + matcher + " expected=" + expected + " hitEnd=" + result);
+ }
+
+}
diff --git a/gnu/testlet/java/util/regex/Matcher/quoteReplacement.java b/gnu/testlet/java/util/regex/Matcher/quoteReplacement.java
new file mode 100644
index 00000000..1aeff3b7
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/quoteReplacement.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Pekka Enberg
+
+// 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.java.util.regex.Matcher;
+
+import gnu.testlet.*;
+import java.util.regex.*;
+
+public class quoteReplacement implements Testlet
+{
+ private Matcher matcher;
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ Matcher.quoteReplacement(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ harness.check(Matcher.quoteReplacement("hello, world"), "hello, world");
+ harness.check(Matcher.quoteReplacement("$"), "\\$");
+ harness.check(Matcher.quoteReplacement("\\"), "\\\\");
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Matcher/usePattern.java b/gnu/testlet/java/util/regex/Matcher/usePattern.java
new file mode 100644
index 00000000..5270e9dc
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Matcher/usePattern.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2011 Red Hat, Inc.
+
+// 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.java.util.regex.Matcher;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class usePattern implements Testlet
+{
+
+ public void test (TestHarness harness)
+ {
+ Pattern pattern = Pattern.compile("^h");
+ Pattern pattern2 = Pattern.compile(".*o$");
+ Matcher matcher = pattern.matcher("hello");
+ harness.check(matcher.lookingAt(), "Match ^h with original pattern");
+ harness.check(!matcher.hitEnd(), "Matcher has not hit the end");
+ try
+ {
+ matcher.usePattern(null);
+ harness.check(false, "Failed to throw IllegalArgumentException");
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true, "Threw IllegalArgumentException");
+ }
+ harness.check(matcher.usePattern(pattern2) == matcher,
+ "usePattern returns same matcher");
+ harness.check(matcher.lookingAt(), "Match .*o$ with new pattern");
+ harness.check(matcher.hitEnd(), "Matcher has hit end");
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Pattern/CVS/Entries b/gnu/testlet/java/util/regex/Pattern/CVS/Entries
new file mode 100644
index 00000000..49f6f5e1
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/CVS/Entries
@@ -0,0 +1,7 @@
+/UnicodeSimpleCategory.java/1.1/Wed Feb 1 21:41:17 2006//
+/matches.java/1.2/Thu Jan 5 14:20:14 2006//
+/pcrematches.java/1.2/Wed Apr 12 21:55:04 2006//
+/testdata1/1.8/Sun Mar 26 22:08:51 2006//
+/testdata2/1.8/Sun Mar 26 22:08:52 2006//
+/testdata3/1.4/Wed Apr 12 21:55:04 2006//
+D
diff --git a/gnu/testlet/java/util/regex/Pattern/CVS/Repository b/gnu/testlet/java/util/regex/Pattern/CVS/Repository
new file mode 100644
index 00000000..0c4c6336
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/regex/Pattern
diff --git a/gnu/testlet/java/util/regex/Pattern/CVS/Root b/gnu/testlet/java/util/regex/Pattern/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/regex/Pattern/UnicodeSimpleCategory.java b/gnu/testlet/java/util/regex/Pattern/UnicodeSimpleCategory.java
new file mode 100644
index 00000000..f4abbbed
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/UnicodeSimpleCategory.java
@@ -0,0 +1,143 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Mark J. Wielaard (mark@klomp.org)
+
+// 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.java.util.regex.Pattern;
+
+import gnu.testlet.*;
+import java.util.regex.*;
+
+public class UnicodeSimpleCategory implements Testlet
+{
+ private TestHarness harness;
+
+ /**
+ * Tests simple unicode categories are correctly matched.
+ */
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ String r;
+ String t;
+ String t3;
+ Matcher m;
+
+ harness.checkPoint("L");
+ r = "(\\p{L}+)(\\p{Lu})(\\p{Ll})(\\p{Lt})(\\p{Lm})(\\p{Lo})(\\p{L}+)";
+ t = "Aa\u01C5\u02B0\u05D0";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "A");
+ harness.check(m.group(3), "a");
+ harness.check(m.group(4), "\u01C5");
+ harness.check(m.group(5), "\u02B0");
+ harness.check(m.group(6), "\u05D0");
+ harness.check(m.group(7), t);
+
+ harness.checkPoint("M");
+ r = "(\\p{M}+)(\\p{Mn})(\\p{Mc})(\\p{Me})(\\p{M}+)";
+ t = "\u064B\u0903\u20DD";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "\u064B");
+ harness.check(m.group(3), "\u0903");
+ harness.check(m.group(4), "\u20DD");
+ harness.check(m.group(5), t);
+
+ harness.checkPoint("N");
+ r = "(\\p{N}+)(\\p{Nd})(\\p{Nl})(\\p{No})(\\p{N}+)";
+ t = "0\u2160\u3289";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "0");
+ harness.check(m.group(3), "\u2160");
+ harness.check(m.group(4), "\u3289");
+ harness.check(m.group(5), t);
+
+ harness.checkPoint("S");
+ r = "(\\p{S}+)(\\p{Sm})(\\p{Sc})(\\p{Sk})(\\p{So})(\\p{S}+)";
+ t = "+\u00A5\u00B8\u0482";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "+");
+ harness.check(m.group(3), "\u00A5");
+ harness.check(m.group(4), "\u00B8");
+ harness.check(m.group(5), "\u0482");
+ harness.check(m.group(6), t);
+
+ harness.checkPoint("P");
+ r = "(\\p{P}+)(\\p{Pc})(\\p{Pd})(\\p{Ps})(\\p{Pe})(\\p{Pi})(\\p{Pf})"
+ + "(\\p{Po})(\\p{P}+)";
+ t = "_-()\u00AB\u00BB!";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "_");
+ harness.check(m.group(3), "-");
+ harness.check(m.group(4), "(");
+ harness.check(m.group(5), ")");
+ harness.check(m.group(6), "\u00AB");
+ harness.check(m.group(7), "\u00BB");
+ harness.check(m.group(8), "!");
+ harness.check(m.group(9), t);
+
+ harness.checkPoint("Z");
+ r = "(\\p{Z}+)(\\p{Zs})(\\p{Zl})(\\p{Zp})(\\p{Z}+)";
+ t = " \u2028\u2029";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), " ");
+ harness.check(m.group(3), "\u2028");
+ harness.check(m.group(4), "\u2029");
+ harness.check(m.group(5), t);
+
+ // Don't include unassigned Cn since we aren't sure about those.
+ harness.checkPoint("C");
+ r = "(\\p{C}+)(\\p{Cc})(\\p{Cf})(\\p{Cs})(\\p{Co})(\\p{C}+)";
+ t = "\t\u070F\uD800\uE000";
+ t3 = t + t + t;
+ m = Pattern.compile(r).matcher(t3);
+ harness.check(m.find());
+ harness.check(m.group(1), t);
+ harness.check(m.group(2), "\t");
+ harness.check(m.group(3), "\u070F");
+ harness.check(m.group(4), "\uD800");
+ harness.check(m.group(5), "\uE000");
+ harness.check(m.group(6), t);
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false, pse.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Pattern/matches.java b/gnu/testlet/java/util/regex/Pattern/matches.java
new file mode 100644
index 00000000..f435573f
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/matches.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Mark J. Wielaard (mark@klomp.org)
+
+// 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.java.util.regex.Pattern;
+
+import gnu.testlet.*;
+import java.util.regex.*;
+
+public class matches implements Testlet
+{
+ private TestHarness harness;
+
+ /**
+ * Tests whether things match completely (not just partially) as
+ * suggested by Timo Juhani Lindfors (timo.lindfors@iki.fi).
+ */
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ harness.check(!Pattern.matches("b", "ab"));
+ harness.check(Pattern.matches("ab", "ab"));
+ harness.check(!Pattern.matches("abab", "abababab"));
+ harness.check(Pattern.matches("abababab", "abababab"));
+
+ harness.check(!Pattern.matches("(\\w,)+", "a,b,c,d,e"));
+ harness.check(Pattern.matches("(\\w,)+", "a,b,c,d,e,"));
+
+ harness.check(!Pattern.matches("\\d+", "123,456"));
+ harness.check(Pattern.matches("\\d+,\\d+", "123,456"));
+ harness.check(!Pattern.matches("\\d+,\\d+", "123,456,789"));
+ harness.check(Pattern.matches("\\d+,\\d+,\\d+", "123,456,789"));
+ harness.check(!Pattern.matches("\\d+,\\d+,\\d+,", "123,456,789"));
+ harness.check(Pattern.matches("\\d+,\\d+,\\d+,", "123,456,789,"));
+
+ harness.check(!Pattern.matches("[a-c]", "abc"));
+ harness.check(!Pattern.matches("[a-c][a-c]", "abc"));
+ harness.check(Pattern.matches("[a-c][a-c][a-c]", "abc"));
+ harness.check(!Pattern.matches("[a-c][a-c][a-c][a-c]", "abc"));
+
+ harness.check(!Pattern.matches("[a-z]*", "abc1defZghi"));
+ harness.check(!Pattern.matches("([a-z]|\\d)*", "abc1defZghi"));
+ harness.check(Pattern.matches("([a-z]|\\d|[A-Z])*", "abc1defZghi"));
+ harness.check(!Pattern.matches("([a-z]|\\d|[A-Z])*", ",abc1defZghi"));
+ harness.check(!Pattern.matches("([a-z]|\\d|[A-Z])*", "abc1defZghi,"));
+ harness.check(!Pattern.matches("([a-z]|\\d|[A-Z])*", ",abc1defZghi,"));
+
+ harness.check(Pattern.matches("()*", ""));
+ harness.check(!Pattern.matches("()*", "x"));
+ harness.check(Pattern.matches("(b*c*)*", ""));
+ harness.check(Pattern.matches("(b*c*)*", "cbbcbbb"));
+ harness.check(Pattern.matches("(b*c*)+", ""));
+ harness.check(Pattern.matches("(b*c*)+", "cbbcbbb"));
+ harness.check(Pattern.matches("(b*c*){3,}", "cbbcbbb"));
+ harness.check(Pattern.matches("(b*c*){10,}", "cbbcbbb"));
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false, pse.toString());
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Pattern/pcrematches.java b/gnu/testlet/java/util/regex/Pattern/pcrematches.java
new file mode 100644
index 00000000..277ba73a
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/pcrematches.java
@@ -0,0 +1,213 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Ziga Mahkovec (ziga.mahkovec@klika.si)
+
+// 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.java.util.regex.Pattern;
+
+import gnu.testlet.*;
+import java.io.*;
+import java.util.*;
+import java.util.regex.*;
+
+/**
+ * Tests the java.util.regex regular expression engine. The test cases are
+ * adapted from PCRE (www.pcre.org). Each test cases if formatted as:
+ * <pre>
+ * /regular expression 1/
+ * test string 1
+ * 0: matching group 0
+ * 1: matching group 1
+ * test string 2
+ * No match
+ test string 3
+ * ...
+ *
+ * /regular expression 2/
+ * ...
+ * </pre>
+ */
+public class pcrematches implements Testlet
+{
+ private TestHarness harness;
+
+ /** Regex test suites from adapted from PCRE (http://www.pcre.org/license.txt). */
+ private static final String[] TEST_SUITES = {"testdata1", /*"testdata2",*/ "testdata3"};
+
+ /**
+ * Regex test case (containing a single regular expression and a list of tests).
+ */
+ private static class RETestcase {
+ String regex;
+ List tests; // list of RETestcaseTest instances
+ }
+
+ /**
+ * Regex test (containing a single text string and a list of resulting groups).
+ */
+ private static class RETestcaseTest {
+ String text;
+ List groups;
+ }
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ try {
+ for (int i=0; i<TEST_SUITES.length; i++) {
+ String suite = "gnu#testlet#java#util#regex#Pattern#" + TEST_SUITES[i];
+ BufferedReader reader = new BufferedReader(harness.getResourceReader(suite));
+ RETestcase tc = null;
+ while ((tc = readTestcase(reader)) != null) {
+ try
+ {
+ test(tc);
+ }
+ catch (PatternSyntaxException e)
+ {
+ harness.check(false, tc.regex);
+ }
+ }
+ }
+ }
+ catch (gnu.testlet.ResourceNotFoundException _)
+ {
+ harness.check(false, "All tests failed (ResourceNotFoundException)");
+ }
+ catch (IOException _)
+ {
+ harness.check(false, "All tests failed (IOException)");
+ }
+ }
+
+ private void test(RETestcase tc) throws PatternSyntaxException {
+ String regex = tc.regex.substring(tc.regex.indexOf('/') + 1,
+ tc.regex.lastIndexOf('/'));
+ String qual = tc.regex.substring(tc.regex.lastIndexOf('/') + 1);
+ int flags = 0;
+ if (qual.indexOf("i") != -1) {
+ flags |= Pattern.CASE_INSENSITIVE;
+ }
+ if (qual.indexOf("m") != -1) {
+ flags |= Pattern.MULTILINE;
+ }
+ Pattern pat = Pattern.compile(regex, flags);
+
+ for (Iterator i=tc.tests.iterator(); i.hasNext(); ) {
+ RETestcaseTest t = (RETestcaseTest)i.next();
+ Matcher mat = pat.matcher(decode(t.text));
+ if (mat.find()) {
+ int groups = mat.groupCount();
+ if (groups != t.groups.size() - 1) {
+ harness.debug("groups=" + groups + " expected=" + (t.groups.size() - 1));
+ harness.check(false, regex);
+ return;
+ }
+ boolean failed = false;
+ for (int j=0; j<=groups; j++) {
+ String g = decode((String)t.groups.get(j));
+ String g2 = mat.group(j);
+ if (!g.trim().equals(g2.trim())) {
+ harness.debug("j=" + j + " expected=" + g + " found=" + g2);
+ harness.check(false, regex);
+ return;
+ }
+ }
+ } else if (!t.groups.isEmpty()) {
+ harness.debug("match not found: regex=/" + regex + "/ text=\"" + t.text +"\"");
+ harness.check(false, regex);
+ return;
+ }
+ }
+ harness.check(true, regex);
+ }
+
+ private static RETestcase readTestcase(BufferedReader reader) throws IOException {
+ String line = reader.readLine();
+ if (line == null)
+ return null;
+ line = line.trim();
+ while (!line.startsWith("/") || line.lastIndexOf("/") == 0) {
+ line = reader.readLine();
+ if (line == null)
+ return null;
+ }
+ RETestcase tc = new RETestcase();
+ tc.regex = line;
+ tc.tests = new ArrayList();
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ if (line.length() == 0)
+ break;
+ RETestcaseTest test = new RETestcaseTest();
+ test.text = line;
+ test.groups = new ArrayList();
+ reader.mark(8096);
+ while ((line = reader.readLine()) != null) {
+ if (line.length() == 0)
+ break;
+ else if (line.startsWith(" ")) {
+ reader.reset();
+ break;
+ }
+ if (line.equals("No match"))
+ break;
+ line = line.substring(line.indexOf(':') + 1);
+ if (line.length() > 0)
+ line = line.substring(1);
+ test.groups.add(line);
+ reader.mark(8096);
+ }
+ tc.tests.add(test);
+ if (line == null || line.length() == 0)
+ break;
+ }
+ return tc;
+ }
+
+ private static String decode(String s) {
+ StringBuffer sb = new StringBuffer();
+ int p = 0;
+ int q = 0;
+ while (true) {
+ p = s.indexOf("\\u", q);
+ if (p == -1) {
+ sb.append(s.substring(q));
+ break;
+ }
+ sb.append(s.substring(q, p));
+ if (p + 6 <= s.length()) {
+ String hex = s.substring(p+2, p+6);
+ try {
+ int c = Integer.parseInt(hex, 16);
+ sb.append((char)c);
+ }
+ catch (NumberFormatException _) {
+ sb.append(s.substring(p, p+6));
+ }
+ q = p + 6;
+ }
+ else {
+ sb.append(s.substring(p, p+2));
+ q = p + 2;
+ }
+ }
+ return sb.toString();
+ }
+}
diff --git a/gnu/testlet/java/util/regex/Pattern/testdata1 b/gnu/testlet/java/util/regex/Pattern/testdata1
new file mode 100644
index 00000000..d9456148
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/testdata1
@@ -0,0 +1,3673 @@
+/the quick brown fox/
+ the quick brown fox
+ 0: the quick brown fox
+ The quick brown FOX
+No match
+ What do you know about the quick brown fox?
+ 0: the quick brown fox
+ What do you know about THE QUICK BROWN FOX?
+No match
+
+/The quick brown fox/i
+ the quick brown fox
+ 0: the quick brown fox
+ The quick brown FOX
+ 0: The quick brown FOX
+ What do you know about the quick brown fox?
+ 0: the quick brown fox
+ What do you know about THE QUICK BROWN FOX?
+ 0: THE QUICK BROWN FOX
+
+/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
+ abxyzpqrrrabbxyyyypqAzz
+ 0: abxyzpqrrrabbxyyyypqAzz
+ abxyzpqrrrabbxyyyypqAzz
+ 0: abxyzpqrrrabbxyyyypqAzz
+ aabxyzpqrrrabbxyyyypqAzz
+ 0: aabxyzpqrrrabbxyyyypqAzz
+ aaabxyzpqrrrabbxyyyypqAzz
+ 0: aaabxyzpqrrrabbxyyyypqAzz
+ aaaabxyzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzpqrrrabbxyyyypqAzz
+ abcxyzpqrrrabbxyyyypqAzz
+ 0: abcxyzpqrrrabbxyyyypqAzz
+ aabcxyzpqrrrabbxyyyypqAzz
+ 0: aabcxyzpqrrrabbxyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypAzz
+ 0: aaabcxyzpqrrrabbxyyyypAzz
+ aaabcxyzpqrrrabbxyyyypqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
+ aaabcxyzpqrrrabbxyyyypqqqqqqAzz
+ 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
+ aaaabcxyzpqrrrabbxyyyypqAzz
+ 0: aaaabcxyzpqrrrabbxyyyypqAzz
+ abxyzzpqrrrabbxyyyypqAzz
+ 0: abxyzzpqrrrabbxyyyypqAzz
+ aabxyzzzpqrrrabbxyyyypqAzz
+ 0: aabxyzzzpqrrrabbxyyyypqAzz
+ aaabxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaabxyzzzzpqrrrabbxyyyypqAzz
+ aaaabxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
+ abcxyzzpqrrrabbxyyyypqAzz
+ 0: abcxyzzpqrrrabbxyyyypqAzz
+ aabcxyzzzpqrrrabbxyyyypqAzz
+ 0: aabcxyzzzpqrrrabbxyyyypqAzz
+ aaabcxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbxyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbbxyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
+ aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
+ 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
+ aaabcxyzpqrrrabbxyyyypABzz
+ 0: aaabcxyzpqrrrabbxyyyypABzz
+ aaabcxyzpqrrrabbxyyyypABBzz
+ 0: aaabcxyzpqrrrabbxyyyypABBzz
+ >>>aaabxyzpqrrrabbxyyyypqAzz
+ 0: aaabxyzpqrrrabbxyyyypqAzz
+ >aaaabxyzpqrrrabbxyyyypqAzz
+ 0: aaaabxyzpqrrrabbxyyyypqAzz
+ >>>>abcxyzpqrrrabbxyyyypqAzz
+ 0: abcxyzpqrrrabbxyyyypqAzz
+ *** Failers
+No match
+ abxyzpqrrabbxyyyypqAzz
+No match
+ abxyzpqrrrrabbxyyyypqAzz
+No match
+ abxyzpqrrrabxyyyypqAzz
+No match
+ aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
+No match
+ aaaabcxyzzzzpqrrrabbbxyyypqAzz
+No match
+ aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
+No match
+
+/^(abc){1,2}zz/
+ abczz
+ 0: abczz
+ 1: abc
+ abcabczz
+ 0: abcabczz
+ 1: abc
+ *** Failers
+No match
+ zz
+No match
+ abcabcabczz
+No match
+ >>abczz
+No match
+
+/^(b+|a){1,2}?bc/
+ bbc
+ 0: bbc
+ 1: b
+
+/^(b*|ba){1,2}?bc/
+ babc
+ 0: babc
+ 1: ba
+ bbabc
+ 0: bbabc
+ 1: ba
+ bababc
+ 0: bababc
+ 1: ba
+ *** Failers
+No match
+ bababbc
+No match
+ babababc
+No match
+
+/^(ba|b*){1,2}?bc/
+ babc
+ 0: babc
+ 1: ba
+ bbabc
+ 0: bbabc
+ 1: ba
+ bababc
+ 0: bababc
+ 1: ba
+ *** Failers
+No match
+ bababbc
+No match
+ babababc
+No match
+
+/^[ab\]cde]/
+ athing
+ 0: a
+ bthing
+ 0: b
+ ]thing
+ 0: ]
+ cthing
+ 0: c
+ dthing
+ 0: d
+ ething
+ 0: e
+ *** Failers
+No match
+ fthing
+No match
+ [thing
+No match
+ \\thing
+No match
+
+/^[]cde]/
+ ]thing
+ 0: ]
+ cthing
+ 0: c
+ dthing
+ 0: d
+ ething
+ 0: e
+ *** Failers
+No match
+ athing
+No match
+ fthing
+No match
+
+/^[^ab\]cde]/
+ fthing
+ 0: f
+ [thing
+ 0: [
+ \\thing
+ 0: \
+ *** Failers
+ 0: *
+ athing
+No match
+ bthing
+No match
+ ]thing
+No match
+ cthing
+No match
+ dthing
+No match
+ ething
+No match
+
+/^[^]cde]/
+ athing
+ 0: a
+ fthing
+ 0: f
+ *** Failers
+ 0: *
+ ]thing
+No match
+ cthing
+No match
+ dthing
+No match
+ ething
+No match
+
+/^[0-9]+$/
+ 0
+ 0: 0
+ 1
+ 0: 1
+ 2
+ 0: 2
+ 3
+ 0: 3
+ 4
+ 0: 4
+ 5
+ 0: 5
+ 6
+ 0: 6
+ 7
+ 0: 7
+ 8
+ 0: 8
+ 9
+ 0: 9
+ 10
+ 0: 10
+ 100
+ 0: 100
+ *** Failers
+No match
+ abc
+No match
+
+/^.*nter/
+ enter
+ 0: enter
+ inter
+ 0: inter
+ uponter
+ 0: uponter
+
+/^xxx[0-9]+$/
+ xxx0
+ 0: xxx0
+ xxx1234
+ 0: xxx1234
+ *** Failers
+No match
+ xxx
+No match
+
+/^.+[0-9][0-9][0-9]$/
+ x123
+ 0: x123
+ xx123
+ 0: xx123
+ 123456
+ 0: 123456
+ *** Failers
+No match
+ 123
+No match
+ x1234
+ 0: x1234
+
+/^.+?[0-9][0-9][0-9]$/
+ x123
+ 0: x123
+ xx123
+ 0: xx123
+ 123456
+ 0: 123456
+ *** Failers
+No match
+ 123
+No match
+ x1234
+ 0: x1234
+
+/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
+ abc!pqr=apquxz.ixr.zzz.ac.uk
+ 0: abc!pqr=apquxz.ixr.zzz.ac.uk
+ 1: abc
+ 2: pqr
+ *** Failers
+No match
+ !pqr=apquxz.ixr.zzz.ac.uk
+No match
+ abc!=apquxz.ixr.zzz.ac.uk
+No match
+ abc!pqr=apquxz:ixr.zzz.ac.uk
+No match
+ abc!pqr=apquxz.ixr.zzz.ac.ukk
+No match
+
+/:/
+ Well, we need a colon: somewhere
+ 0: :
+ *** Fail if we don't
+No match
+
+/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
+ .1.2.3
+ 0: .1.2.3
+ 1: 1
+ 2: 2
+ 3: 3
+ A.12.123.0
+ 0: A.12.123.0
+ 1: 12
+ 2: 123
+ 3: 0
+ *** Failers
+No match
+ .1.2.3333
+No match
+ 1.2.3
+No match
+ 1234.2.3
+No match
+
+/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
+ 1 IN SOA non-sp1 non-sp2(
+ 0: 1 IN SOA non-sp1 non-sp2(
+ 1: 1
+ 2: non-sp1
+ 3: non-sp2
+ 1 IN SOA non-sp1 non-sp2 (
+ 0: 1 IN SOA non-sp1 non-sp2 (
+ 1: 1
+ 2: non-sp1
+ 3: non-sp2
+ *** Failers
+No match
+ 1IN SOA non-sp1 non-sp2(
+No match
+
+/^[\da-f](\.[\da-f])*$/i
+ a.b.c.d
+ 0: a.b.c.d
+ 1: .d
+ A.B.C.D
+ 0: A.B.C.D
+ 1: .D
+ a.b.c.1.2.3.C
+ 0: a.b.c.1.2.3.C
+ 1: .C
+
+/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
+ abcdefhijklm
+ 0: abcdefhijklm
+ 1: abc
+ 2: bc
+ 3: c
+ 4: def
+ 5: ef
+ 6: f
+ 7: hij
+ 8: ij
+ 9: j
+ 10: klm
+ 11: lm
+ 12: m
+
+/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
+ abcdefhijklm
+ 0: abcdefhijklm
+ 1: bc
+ 2: c
+ 3: ef
+ 4: f
+ 5: ij
+ 6: j
+ 7: lm
+ 8: m
+
+/^a*\w/
+ z
+ 0: z
+ az
+ 0: az
+ aaaz
+ 0: aaaz
+ a
+ 0: a
+ aa
+ 0: aa
+ aaaa
+ 0: aaaa
+ a+
+ 0: a
+ aa+
+ 0: aa
+
+/^a*?\w/
+ z
+ 0: z
+ az
+ 0: a
+ aaaz
+ 0: a
+ a
+ 0: a
+ aa
+ 0: a
+ aaaa
+ 0: a
+ a+
+ 0: a
+ aa+
+ 0: a
+
+/^a+\w/
+ az
+ 0: az
+ aaaz
+ 0: aaaz
+ aa
+ 0: aa
+ aaaa
+ 0: aaaa
+ aa+
+ 0: aa
+
+/^a+?\w/
+ az
+ 0: az
+ aaaz
+ 0: aa
+ aa
+ 0: aa
+ aaaa
+ 0: aa
+ aa+
+ 0: aa
+
+/^\d{8}\w{2,}/
+ 1234567890
+ 0: 1234567890
+ 12345678ab
+ 0: 12345678ab
+ 12345678__
+ 0: 12345678__
+ *** Failers
+No match
+ 1234567
+No match
+
+/^[aeiou\d]{4,5}$/
+ uoie
+ 0: uoie
+ 1234
+ 0: 1234
+ 12345
+ 0: 12345
+ aaaaa
+ 0: aaaaa
+ *** Failers
+No match
+ 123456
+No match
+
+/^[aeiou\d]{4,5}?/
+ uoie
+ 0: uoie
+ 1234
+ 0: 1234
+ 12345
+ 0: 1234
+ aaaaa
+ 0: aaaa
+ 123456
+ 0: 1234
+
+/\A(abc|def)=(\1){2,3}\Z/
+ abc=abcabc
+ 0: abc=abcabc
+ 1: abc
+ 2: abc
+ def=defdefdef
+ 0: def=defdefdef
+ 1: def
+ 2: def
+ *** Failers
+No match
+ abc=defdef
+No match
+
+/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
+ From abcd Mon Sep 01 12:33:02 1997
+ 0: From abcd Mon Sep 01 12:33
+ 1: abcd
+
+/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
+ From abcd Mon Sep 01 12:33:02 1997
+ 0: From abcd Mon Sep 01 12:33
+ 1: Sep
+ From abcd Mon Sep 1 12:33:02 1997
+ 0: From abcd Mon Sep 1 12:33
+ 1: Sep
+ *** Failers
+No match
+ From abcd Sep 01 12:33:02 1997
+No match
+
+/foo(?!bar)(.*)/
+ foobar is foolish see?
+ 0: foolish see?
+ 1: lish see?
+
+/^(\D*)(?=\d)(?!123)/
+ abc456
+ 0: abc
+ 1: abc
+ *** Failers
+No match
+ abc123
+No match
+
+/^(a)\1{2,3}(.)/
+ aaab
+ 0: aaab
+ 1: a
+ 2: b
+ aaaab
+ 0: aaaab
+ 1: a
+ 2: b
+ aaaaab
+ 0: aaaaa
+ 1: a
+ 2: a
+ aaaaaab
+ 0: aaaaa
+ 1: a
+ 2: a
+
+/(?!^)abc/
+ the abc
+ 0: abc
+ *** Failers
+No match
+ abc
+No match
+
+/(?=^)abc/
+ abc
+ 0: abc
+ *** Failers
+No match
+ the abc
+No match
+
+/^[ab]{1,3}?(ab*|b)/
+ aabbbbb
+ 0: aabbbbb
+ 1: abbbbb
+
+/^[ab]{1,3}?(ab*?|b)/
+ aabbbbb
+ 0: aa
+ 1: a
+
+/^[ab]{1,3}(ab*?|b)/
+ aabbbbb
+ 0: aabb
+ 1: b
+
+/^(cow|)\1(bell)/
+ cowcowbell
+ 0: cowcowbell
+ 1: cow
+ 2: bell
+ bell
+ 0: bell
+ 1:
+ 2: bell
+ *** Failers
+No match
+ cowbell
+No match
+
+/^(a|)\1?b/
+ ab
+ 0: ab
+ 1: a
+ aab
+ 0: aab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ acb
+No match
+
+/^(a|)\1{2}b/
+ aaab
+ 0: aaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+ aab
+No match
+ aaaab
+No match
+
+/^(a|)\1{2,3}b/
+ aaab
+ 0: aaab
+ 1: a
+ aaaab
+ 0: aaaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+ aab
+No match
+ aaaaab
+No match
+
+/ab{1,3}bc/
+ abbbbc
+ 0: abbbbc
+ abbbc
+ 0: abbbc
+ abbc
+ 0: abbc
+ *** Failers
+No match
+ abc
+No match
+ abbbbbc
+No match
+
+/([^.]*)\.([^:]*):[T ]+(.*)/
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/([^.]*)\.([^:]*):[T ]+(.*)/i
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/([^.]*)\.([^:]*):[t ]+(.*)/i
+ track1.title:TBlah blah blah
+ 0: track1.title:TBlah blah blah
+ 1: track1
+ 2: title
+ 3: Blah blah blah
+
+/^[W-c]+$/
+ WXY_^abc
+ 0: WXY_^abc
+ *** Failers
+No match
+ wxy
+No match
+
+/^abc$/
+ abc
+ 0: abc
+ *** Failers
+No match
+ qqq\nabc
+No match
+ abc\nzzz
+No match
+ qqq\nabc\nzzz
+No match
+
+/(?:b)|(?::+)/
+ b::c
+ 0: b
+ c::b
+ 0: ::
+
+/[-az]+/
+ az-
+ 0: az-
+ *** Failers
+ 0: a
+ b
+No match
+
+/[az-]+/
+ za-
+ 0: za-
+ *** Failers
+ 0: a
+ b
+No match
+
+/[a\-z]+/
+ a-z
+ 0: a-z
+ *** Failers
+ 0: a
+ b
+No match
+
+/[a-z]+/
+ abcdxyz
+ 0: abcdxyz
+
+/[\d-]+/
+ 12-34
+ 0: 12-34
+ *** Failers
+No match
+ aaa
+No match
+
+/[\d-z]+/
+ 12-34z
+ 0: 12-34z
+ *** Failers
+No match
+ aaa
+No match
+
+/a{0}bc/
+ bc
+ 0: bc
+
+/[^k]{2,3}$/
+ abc
+ 0: abc
+ kbc
+ 0: bc
+ kabc
+ 0: abc
+ *** Failers
+ 0: ers
+ abk
+No match
+ akb
+No match
+ akk
+No match
+
+/[^a]/
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: A
+
+/[^a]/i
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: b
+
+/[^az]/
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: A
+
+/[^az]/i
+ aaaabcd
+ 0: b
+ aaAabcd
+ 0: b
+
+/P[^*]TAIRE[^*]{1,6}?LL/
+ xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
+ 0: PSTAIREISLL
+
+/P[^*]TAIRE[^*]{1,}?LL/
+ xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
+ 0: PSTAIREISLL
+
+/(\.\d\d[1-9]?)\d+/
+ 1.230003938
+ 0: .230003938
+ 1: .23
+ 1.875000282
+ 0: .875000282
+ 1: .875
+ 1.235
+ 0: .235
+ 1: .23
+
+/foo(.*)bar/
+ The food is under the bar in the barn.
+ 0: food is under the bar in the bar
+ 1: d is under the bar in the
+
+/foo(.*?)bar/
+ The food is under the bar in the barn.
+ 0: food is under the bar
+ 1: d is under the
+
+/(.*)(\d*)/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers: 53147
+ 2:
+
+/(.*?)(\d+)/
+ I have 2 numbers: 53147
+ 0: I have 2
+ 1: I have
+ 2: 2
+
+/(.*)(\d+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers: 5314
+ 2: 7
+
+/(.*?)(\d+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers:
+ 2: 53147
+
+/(.*)\b(\d+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers:
+ 2: 53147
+
+/(.*\D)(\d+)$/
+ I have 2 numbers: 53147
+ 0: I have 2 numbers: 53147
+ 1: I have 2 numbers:
+ 2: 53147
+
+/^\D*(?!123)/
+ ABC123
+ 0: AB
+
+/^(\D*)(?=\d)(?!123)/
+ ABC445
+ 0: ABC
+ 1: ABC
+ *** Failers
+No match
+ ABC123
+No match
+
+/^[W-]46]/
+ W46]789
+ 0: W46]
+ -46]789
+ 0: -46]
+ *** Failers
+No match
+ Wall
+No match
+ Zebra
+No match
+ 42
+No match
+ [abcd]
+No match
+ ]abcd[
+No match
+
+/\d\d\/\d\d\/\d\d\d\d/
+ 01/01/2000
+ 0: 01/01/2000
+
+/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
+ word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
+No match
+
+/^(a){1,1}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: a
+ 1: a
+
+/^(a){1,2}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+
+/^(a){1,3}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+
+/^(a){1,}/
+ bcd
+No match
+ abc
+ 0: a
+ 1: a
+ aab
+ 0: aa
+ 1: a
+ aaa
+ 0: aaa
+ 1: a
+ aaaaaaaa
+ 0: aaaaaaaa
+ 1: a
+
+/^[a-c]{12}/
+ abcabcabcabc
+ 0: abcabcabcabc
+
+/^(a|b|c){12}/
+ abcabcabcabc
+ 0: abcabcabcabc
+ 1: c
+
+/^[abcdefghijklmnopqrstuvwxy0123456789]/
+ n
+ 0: n
+ *** Failers
+No match
+ z
+No match
+
+/abcde{0,0}/
+ abcd
+ 0: abcd
+ *** Failers
+No match
+ abce
+No match
+
+/ab[cd]{0,0}e/
+ abe
+ 0: abe
+ *** Failers
+No match
+ abcde
+No match
+
+/a(b*)/
+ a
+ 0: a
+ 1:
+ ab
+ 0: ab
+ 1: b
+ abbbb
+ 0: abbbb
+ 1: bbbb
+ *** Failers
+ 0: a
+ 1:
+ bbbbb
+No match
+
+/a.b/
+ acb
+ 0: acb
+ *** Failers
+No match
+ a\nb
+No match
+
+/^(b+|a){1,2}?c/
+ bac
+ 0: bac
+ 1: a
+ bbac
+ 0: bbac
+ 1: a
+ bbbac
+ 0: bbbac
+ 1: a
+ bbbbac
+ 0: bbbbac
+ 1: a
+ bbbbbac
+ 0: bbbbbac
+ 1: a
+
+/(?!\A)x/m
+ x\nb\n
+No match
+ a\bx\n
+ 0: x
+
+/(AB)*?\1/
+ ABABAB
+ 0: ABAB
+ 1: AB
+
+/(AB)*\1/
+ ABABAB
+ 0: ABABAB
+ 1: AB
+
+/(\d+)(\w)/
+ 12345a
+ 0: 12345a
+ 1: 12345
+ 2: a
+ 12345+
+ 0: 12345
+ 1: 1234
+ 2: 5
+
+/The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/
+ /it wrong; it sets $1 to aaa rather than aa. Compare the following test,/
+No match
+ /where it does set $1 to aa when matching aaaaaa./
+No match
+
+/^(a\1?)(a\1?)(a\2?)(a\3?)$/
+ a
+No match
+ aa
+No match
+ aaa
+No match
+ aaaa
+ 0: aaaa
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ aaaaa
+ 0: aaaaa
+ 1: a
+ 2: aa
+ 3: a
+ 4: a
+ aaaaaa
+ 0: aaaaaa
+ 1: a
+ 2: aa
+ 3: a
+ 4: aa
+ aaaaaaa
+ 0: aaaaaaa
+ 1: a
+ 2: aa
+ 3: aaa
+ 4: a
+ aaaaaaaa
+No match
+ aaaaaaaaa
+No match
+ aaaaaaaaaa
+ 0: aaaaaaaaaa
+ 1: a
+ 2: aa
+ 3: aaa
+ 4: aaaa
+ aaaaaaaaaaa
+No match
+ aaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaaaa
+No match
+
+/The following tests are taken from the Perl 5.005 test suite; some of them/
+ /are compatible with 5.004, but I'd rather not have to sort them out./
+No match
+
+/abc/
+ abc
+ 0: abc
+ xabcy
+ 0: abc
+ ababc
+ 0: abc
+ *** Failers
+No match
+ xbc
+No match
+ axc
+No match
+ abx
+No match
+
+/ab*c/
+ abc
+ 0: abc
+
+/ab*bc/
+ abc
+ 0: abc
+ abbc
+ 0: abbc
+ abbbbc
+ 0: abbbbc
+
+/.{1}/
+ abbbbc
+ 0: a
+
+/.{3,4}/
+ abbbbc
+ 0: abbb
+
+/ab{0,}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab+bc/
+ abbc
+ 0: abbc
+ *** Failers
+No match
+ abc
+No match
+ abq
+No match
+
+/ab{1,}bc/
+
+/ab+bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{1,}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{1,3}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{3,4}bc/
+ abbbbc
+ 0: abbbbc
+
+/ab{4,5}bc/
+ *** Failers
+No match
+ abq
+No match
+ abbbbc
+No match
+
+/ab?bc/
+ abbc
+ 0: abbc
+ abc
+ 0: abc
+
+/ab{0,1}bc/
+ abc
+ 0: abc
+
+/ab?bc/
+
+/ab?c/
+ abc
+ 0: abc
+
+/ab{0,1}c/
+ abc
+ 0: abc
+
+/^abc$/
+ abc
+ 0: abc
+ *** Failers
+No match
+ abbbbc
+No match
+ abcc
+No match
+
+/^abc/
+ abcc
+ 0: abc
+
+/^abc$/
+
+/abc$/
+ aabc
+ 0: abc
+ *** Failers
+No match
+ aabc
+ 0: abc
+ aabcd
+No match
+
+/^/
+ abc
+ 0:
+
+/$/
+ abc
+ 0:
+
+/a.c/
+ abc
+ 0: abc
+ axc
+ 0: axc
+
+/a.*c/
+ axyzc
+ 0: axyzc
+
+/a[bc]d/
+ abd
+ 0: abd
+ *** Failers
+No match
+ axyzd
+No match
+ abc
+No match
+
+/a[b-d]e/
+ ace
+ 0: ace
+
+/a[b-d]/
+ aac
+ 0: ac
+
+/a[-b]/
+ a-
+ 0: a-
+
+/a[b-]/
+ a-
+ 0: a-
+
+/a]/
+ a]
+ 0: a]
+
+/a[]]b/
+ a]b
+ 0: a]b
+
+/a[^bc]d/
+ aed
+ 0: aed
+ *** Failers
+No match
+ abd
+No match
+ abd
+No match
+
+/a[^-b]c/
+ adc
+ 0: adc
+
+/a[^]b]c/
+ adc
+ 0: adc
+ *** Failers
+No match
+ a-c
+ 0: a-c
+ a]c
+No match
+
+/\ba\b/
+ a-
+ 0: a
+ -a
+ 0: a
+ -a-
+ 0: a
+
+/\by\b/
+ *** Failers
+No match
+ xy
+No match
+ yz
+No match
+ xyz
+No match
+
+/\Ba\B/
+ *** Failers
+ 0: a
+ a-
+No match
+ -a
+No match
+ -a-
+No match
+
+/\By\b/
+ xy
+ 0: y
+
+/\by\B/
+ yz
+ 0: y
+
+/\By\B/
+ xyz
+ 0: y
+
+/\w/
+ a
+ 0: a
+
+/\W/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ a
+No match
+
+/a\sb/
+ a b
+ 0: a b
+
+/a\Sb/
+ a-b
+ 0: a-b
+ *** Failers
+No match
+ a-b
+ 0: a-b
+ a b
+No match
+
+/\d/
+ 1
+ 0: 1
+
+/\D/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ 1
+No match
+
+/[\w]/
+ a
+ 0: a
+
+/[\W]/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ a
+No match
+
+/a[\s]b/
+ a b
+ 0: a b
+
+/a[\S]b/
+ a-b
+ 0: a-b
+ *** Failers
+No match
+ a-b
+ 0: a-b
+ a b
+No match
+
+/[\d]/
+ 1
+ 0: 1
+
+/[\D]/
+ -
+ 0: -
+ *** Failers
+ 0: *
+ -
+ 0: -
+ 1
+No match
+
+/ab|cd/
+ abc
+ 0: ab
+ abcd
+ 0: ab
+
+/()ef/
+ def
+ 0: ef
+ 1:
+
+/$b/
+
+/a\(b/
+ a(b
+ 0: a(b
+
+/a\(*b/
+ ab
+ 0: ab
+ a((b
+ 0: a((b
+
+/((a))/
+ abc
+ 0: a
+ 1: a
+ 2: a
+
+/(a)b(c)/
+ abc
+ 0: abc
+ 1: a
+ 2: c
+
+/a+b+c/
+ aabbabc
+ 0: abc
+
+/a{1,}b{1,}c/
+ aabbabc
+ 0: abc
+
+/a.+?c/
+ abcabc
+ 0: abc
+
+/(a+|b)*/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b){0,}/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b)+/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b){1,}/
+ ab
+ 0: ab
+ 1: b
+
+/(a+|b)?/
+ ab
+ 0: a
+ 1: a
+
+/(a+|b){0,1}/
+ ab
+ 0: a
+ 1: a
+
+/[^ab]*/
+ cde
+ 0: cde
+
+/abc/
+ *** Failers
+No match
+ b
+No match
+
+/a*/
+
+/([abc])*d/
+ abbbcd
+ 0: abbbcd
+ 1: c
+
+/([abc])*bcd/
+ abcd
+ 0: abcd
+ 1: a
+
+/a|b|c|d|e/
+ e
+ 0: e
+
+/(a|b|c|d|e)f/
+ ef
+ 0: ef
+ 1: e
+
+/abcd*efg/
+ abcdefg
+ 0: abcdefg
+
+/ab*/
+ xabyabbbz
+ 0: ab
+ xayabbbz
+ 0: a
+
+/(ab|cd)e/
+ abcde
+ 0: cde
+ 1: cd
+
+/[abhgefdc]ij/
+ hij
+ 0: hij
+
+/^(ab|cd)e/
+
+/(abc|)ef/
+ abcdef
+ 0: ef
+ 1:
+
+/(a|b)c*d/
+ abcd
+ 0: bcd
+ 1: b
+
+/a([bc]*)c*/
+ abc
+ 0: abc
+ 1: bc
+
+/a([bc]*)(c*d)/
+ abcd
+ 0: abcd
+ 1: bc
+ 2: d
+
+/a([bc]+)(c*d)/
+ abcd
+ 0: abcd
+ 1: bc
+ 2: d
+
+/a([bc]*)(c+d)/
+ abcd
+ 0: abcd
+ 1: b
+ 2: cd
+
+/a[bcd]*dcdcde/
+ adcdcde
+ 0: adcdcde
+
+/a[bcd]+dcdcde/
+ *** Failers
+No match
+ abcde
+No match
+ adcdcde
+No match
+
+/(ab|a)b*c/
+ abc
+ 0: abc
+ 1: ab
+
+/((a)(b)c)(d)/
+ abcd
+ 0: abcd
+ 1: abc
+ 2: a
+ 3: b
+ 4: d
+
+/[a-zA-Z_][a-zA-Z0-9_]*/
+ alpha
+ 0: alpha
+
+/((((((((((a))))))))))/
+ a
+ 0: a
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+ 10: a
+
+/(((((((((a)))))))))/
+ a
+ 0: a
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+
+/multiple words of text/
+ *** Failers
+No match
+ aa
+No match
+ uh-uh
+No match
+
+/multiple words/
+ multiple words, yeah
+ 0: multiple words
+
+/(.*)c(.*)/
+ abcde
+ 0: abcde
+ 1: ab
+ 2: de
+
+/\((.*), (.*)\)/
+ (a, b)
+ 0: (a, b)
+ 1: a
+ 2: b
+
+/[k]/
+
+/abcd/
+ abcd
+ 0: abcd
+
+/a(bc)d/
+ abcd
+ 0: abcd
+ 1: bc
+
+/a[-]?c/
+ ac
+ 0: ac
+
+/(abc)\1/
+ abcabc
+ 0: abcabc
+ 1: abc
+
+/([a-c]*)\1/
+ abcabc
+ 0: abcabc
+ 1: abc
+
+/(a)|\1/
+ a
+ 0: a
+ 1: a
+ *** Failers
+ 0: a
+ 1: a
+ ab
+ 0: a
+ 1: a
+ x
+No match
+
+/(([a-c])b*?\2)*/
+ ababbbcbc
+ 0: ababb
+ 1: bb
+ 2: b
+
+/((\3|b)\2(a)x)+/
+ aaaxabaxbaaxbbax
+ 0: bbax
+ 1: bbax
+ 2: b
+ 3: a
+
+/((\3|b)\2(a)){2,}/
+ bbaababbabaaaaabbaaaabba
+ 0: bbaaaabba
+ 1: bba
+ 2: b
+ 3: a
+
+/abc/i
+ ABC
+ 0: ABC
+ XABCY
+ 0: ABC
+ ABABC
+ 0: ABC
+ *** Failers
+No match
+ aaxabxbaxbbx
+No match
+ XBC
+No match
+ AXC
+No match
+ ABX
+No match
+
+/ab*c/i
+ ABC
+ 0: ABC
+
+/ab*bc/i
+ ABC
+ 0: ABC
+ ABBC
+ 0: ABBC
+
+/ab*?bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab{0,}?bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab+?bc/i
+ ABBC
+ 0: ABBC
+
+/ab+bc/i
+ *** Failers
+No match
+ ABC
+No match
+ ABQ
+No match
+
+/ab{1,}bc/i
+
+/ab+bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab{1,}?bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab{1,3}?bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab{3,4}?bc/i
+ ABBBBC
+ 0: ABBBBC
+
+/ab{4,5}?bc/i
+ *** Failers
+No match
+ ABQ
+No match
+ ABBBBC
+No match
+
+/ab??bc/i
+ ABBC
+ 0: ABBC
+ ABC
+ 0: ABC
+
+/ab{0,1}?bc/i
+ ABC
+ 0: ABC
+
+/ab??bc/i
+
+/ab??c/i
+ ABC
+ 0: ABC
+
+/ab{0,1}?c/i
+ ABC
+ 0: ABC
+
+/^abc$/i
+ ABC
+ 0: ABC
+ *** Failers
+No match
+ ABBBBC
+No match
+ ABCC
+No match
+
+/^abc/i
+ ABCC
+ 0: ABC
+
+/^abc$/i
+
+/abc$/i
+ AABC
+ 0: ABC
+
+/^/i
+ ABC
+ 0:
+
+/$/i
+ ABC
+ 0:
+
+/a.c/i
+ ABC
+ 0: ABC
+ AXC
+ 0: AXC
+
+/a.*?c/i
+ AXYZC
+ 0: AXYZC
+
+/a.*c/i
+ *** Failers
+No match
+ AABC
+ 0: AABC
+ AXYZD
+No match
+
+/a[bc]d/i
+ ABD
+ 0: ABD
+
+/a[b-d]e/i
+ ACE
+ 0: ACE
+ *** Failers
+No match
+ ABC
+No match
+ ABD
+No match
+
+/a[b-d]/i
+ AAC
+ 0: AC
+
+/a[-b]/i
+ A-
+ 0: A-
+
+/a[b-]/i
+ A-
+ 0: A-
+
+/a]/i
+ A]
+ 0: A]
+
+/a[]]b/i
+ A]B
+ 0: A]B
+
+/a[^bc]d/i
+ AED
+ 0: AED
+
+/a[^-b]c/i
+ ADC
+ 0: ADC
+ *** Failers
+No match
+ ABD
+No match
+ A-C
+No match
+
+/a[^]b]c/i
+ ADC
+ 0: ADC
+
+/ab|cd/i
+ ABC
+ 0: AB
+ ABCD
+ 0: AB
+
+/()ef/i
+ DEF
+ 0: EF
+ 1:
+
+/$b/i
+ *** Failers
+No match
+ A]C
+No match
+ B
+No match
+
+/a\(b/i
+ A(B
+ 0: A(B
+
+/a\(*b/i
+ AB
+ 0: AB
+ A((B
+ 0: A((B
+
+/((a))/i
+ ABC
+ 0: A
+ 1: A
+ 2: A
+
+/(a)b(c)/i
+ ABC
+ 0: ABC
+ 1: A
+ 2: C
+
+/a+b+c/i
+ AABBABC
+ 0: ABC
+
+/a{1,}b{1,}c/i
+ AABBABC
+ 0: ABC
+
+/a.+?c/i
+ ABCABC
+ 0: ABC
+
+/a.*?c/i
+ ABCABC
+ 0: ABC
+
+/a.{0,5}?c/i
+ ABCABC
+ 0: ABC
+
+/(a+|b)*/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b){0,}/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b)+/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b){1,}/i
+ AB
+ 0: AB
+ 1: B
+
+/(a+|b)?/i
+ AB
+ 0: A
+ 1: A
+
+/(a+|b){0,1}/i
+ AB
+ 0: A
+ 1: A
+
+/[^ab]*/i
+ CDE
+ 0: CDE
+
+/abc/i
+
+/a*/i
+
+/([abc])*d/i
+ ABBBCD
+ 0: ABBBCD
+ 1: C
+
+/([abc])*bcd/i
+ ABCD
+ 0: ABCD
+ 1: A
+
+/a|b|c|d|e/i
+ E
+ 0: E
+
+/(a|b|c|d|e)f/i
+ EF
+ 0: EF
+ 1: E
+
+/abcd*efg/i
+ ABCDEFG
+ 0: ABCDEFG
+
+/ab*/i
+ XABYABBBZ
+ 0: AB
+ XAYABBBZ
+ 0: A
+
+/(ab|cd)e/i
+ ABCDE
+ 0: CDE
+ 1: CD
+
+/[abhgefdc]ij/i
+ HIJ
+ 0: HIJ
+
+/^(ab|cd)e/i
+ ABCDE
+No match
+
+/(abc|)ef/i
+ ABCDEF
+ 0: EF
+ 1:
+
+/(a|b)c*d/i
+ ABCD
+ 0: BCD
+ 1: B
+
+/a([bc]*)c*/i
+ ABC
+ 0: ABC
+ 1: BC
+
+/a([bc]*)(c*d)/i
+ ABCD
+ 0: ABCD
+ 1: BC
+ 2: D
+
+/a([bc]+)(c*d)/i
+ ABCD
+ 0: ABCD
+ 1: BC
+ 2: D
+
+/a([bc]*)(c+d)/i
+ ABCD
+ 0: ABCD
+ 1: B
+ 2: CD
+
+/a[bcd]*dcdcde/i
+ ADCDCDE
+ 0: ADCDCDE
+
+/a[bcd]+dcdcde/i
+
+/(ab|a)b*c/i
+ ABC
+ 0: ABC
+ 1: AB
+
+/((a)(b)c)(d)/i
+ ABCD
+ 0: ABCD
+ 1: ABC
+ 2: A
+ 3: B
+ 4: D
+
+/[a-zA-Z_][a-zA-Z0-9_]*/i
+ ALPHA
+ 0: ALPHA
+
+/((((((((((a))))))))))/i
+ A
+ 0: A
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+ 10: A
+
+/(((((((((a)))))))))/i
+ A
+ 0: A
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+
+/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
+ A
+ 0: A
+ 1: A
+
+/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
+ C
+ 0: C
+ 1: C
+
+/multiple words of text/i
+ *** Failers
+No match
+ AA
+No match
+ UH-UH
+No match
+
+/multiple words/i
+ MULTIPLE WORDS, YEAH
+ 0: MULTIPLE WORDS
+
+/(.*)c(.*)/i
+ ABCDE
+ 0: ABCDE
+ 1: AB
+ 2: DE
+
+/\((.*), (.*)\)/i
+ (A, B)
+ 0: (A, B)
+ 1: A
+ 2: B
+
+/[k]/i
+
+/abcd/i
+ ABCD
+ 0: ABCD
+
+/a(bc)d/i
+ ABCD
+ 0: ABCD
+ 1: BC
+
+/a[-]?c/i
+ AC
+ 0: AC
+
+/(abc)\1/i
+ ABCABC
+ 0: ABCABC
+ 1: ABC
+
+/([a-c]*)\1/i
+ ABCABC
+ 0: ABCABC
+ 1: ABC
+
+/a(?!b)./
+ abad
+ 0: ad
+
+/a(?=d)./
+ abad
+ 0: ad
+
+/a(?=c|d)./
+ abad
+ 0: ad
+
+/a(?:b|c|d)(.)/
+ ace
+ 0: ace
+ 1: e
+
+/a(?:b|c|d)*(.)/
+ ace
+ 0: ace
+ 1: e
+
+/a(?:b|c|d)+?(.)/
+ ace
+ 0: ace
+ 1: e
+ acdbcdbe
+ 0: acd
+ 1: d
+
+/a(?:b|c|d)+(.)/
+ acdbcdbe
+ 0: acdbcdbe
+ 1: e
+
+/a(?:b|c|d){2}(.)/
+ acdbcdbe
+ 0: acdb
+ 1: b
+
+/a(?:b|c|d){4,5}(.)/
+ acdbcdbe
+ 0: acdbcdb
+ 1: b
+
+/a(?:b|c|d){4,5}?(.)/
+ acdbcdbe
+ 0: acdbcd
+ 1: d
+
+/((foo)|(bar))*/
+ foobar
+ 0: foobar
+ 1: bar
+ 2: foo
+ 3: bar
+
+/a(?:b|c|d){6,7}(.)/
+ acdbcdbe
+ 0: acdbcdbe
+ 1: e
+
+/a(?:b|c|d){6,7}?(.)/
+ acdbcdbe
+ 0: acdbcdbe
+ 1: e
+
+/a(?:b|c|d){5,6}(.)/
+ acdbcdbe
+ 0: acdbcdbe
+ 1: e
+
+/a(?:b|c|d){5,6}?(.)/
+ acdbcdbe
+ 0: acdbcdb
+ 1: b
+
+/a(?:b|c|d){5,7}(.)/
+ acdbcdbe
+ 0: acdbcdbe
+ 1: e
+
+/a(?:b|c|d){5,7}?(.)/
+ acdbcdbe
+ 0: acdbcdb
+ 1: b
+
+/a(?:b|(c|e){1,2}?|d)+?(.)/
+ ace
+ 0: ace
+ 1: c
+ 2: e
+
+/^(.+)?B/
+ AB
+ 0: AB
+ 1: A
+
+/^[<>]&/
+ <&OUT
+ 0: <&
+
+/(?:(f)(o)(o)|(b)(a)(r))*/
+ foobar
+ 0: foobar
+ 1: f
+ 2: o
+ 3: o
+ 4: b
+ 5: a
+ 6: r
+
+/(?:..)*a/
+ aba
+ 0: aba
+
+/(?:..)*?a/
+ aba
+ 0: a
+
+/^(){3,5}/
+ abc
+ 0:
+ 1:
+
+/^(a+)*ax/
+ aax
+ 0: aax
+ 1: a
+
+/^((a|b)+)*ax/
+ aax
+ 0: aax
+ 1: a
+ 2: a
+
+/^((a|bc)+)*ax/
+ aax
+ 0: aax
+ 1: a
+ 2: a
+
+/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
+ cabbbb
+ 0: cabbbb
+
+/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
+ caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+
+/foo\w*\d{4}baz/
+ foobar1234baz
+ 0: foobar1234baz
+
+/x(~~)*(?:(?:F)?)?/
+ x~~
+ 0: x~~
+ 1: ~~
+
+/^b/
+
+/()^b/
+ *** Failers
+No match
+ a\nb\nc\n
+No match
+ a\nb\nc\n
+No match
+
+/^(?=(a+?))\1ab/
+
+/(\w+:)+/
+ one:
+ 0: one:
+ 1: one:
+
+/^(?=(a+?))\1ab/
+ *** Failers
+No match
+ aaab
+No match
+ aaab
+No match
+
+/^[^bcd]*(c+)/
+ aexycd
+ 0: aexyc
+ 1: c
+
+/(a*)b+/
+ caab
+ 0: aab
+ 1: aa
+
+/^[^bcd]*(c+)/
+ aexycd
+ 0: aexyc
+ 1: c
+
+/(>a+)ab/
+
+/a\Z/
+ *** Failers
+No match
+ aaab
+No match
+ a\nb\n
+No match
+
+/b\z/
+
+/b\Z/
+ a\nb
+ 0: b
+
+/((Z)+|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2: Z
+
+/(Z()|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2:
+
+/(Z(())|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+ 2:
+ 3:
+
+/^[\d-a]/
+ abcde
+ 0: a
+ -things
+ 0: -
+ 0digit
+ 0: 0
+ *** Failers
+No match
+ bcdef
+No match
+
+/a b/x
+ ab
+No match
+
+/(?!\A)x/m
+ a\nxb\n
+ 0: x
+
+/(.*)\d+\1/
+ abc123abc
+ 0: abc123abc
+ 1: abc
+ abc123bc
+ 0: bc123bc
+ 1: bc
+
+/(.*)\d+\1/s
+ abc123abc
+ 0: abc123abc
+ 1: abc
+ abc123bc
+ 0: bc123bc
+ 1: bc
+
+/((.*))\d+\1/
+ abc123abc
+ 0: abc123abc
+ 1: abc
+ 2: abc
+ abc123bc
+ 0: bc123bc
+ 1: bc
+ 2: bc
+
+/-- This tests for an IPv6 address in the form where it can have up to --/
+ /-- eight components, one and only one of which is empty. This must be --/
+No match
+ /-- an internal component. --/
+No match
+
+/(a+)*b/
+ aaaaaaaaaaaaaa
+No match
+
+/^[W-c]+$/i
+ WXY_^abc
+ 0: WXY_^abc
+ wxy_^ABC
+ 0: wxy_^ABC
+
+/^[\x3f-\x5F]+$/i
+ WXY_^abc
+ 0: WXY_^abc
+ wxy_^ABC
+ 0: wxy_^ABC
+
+/\x5c/
+ \\
+ 0: \
+
+/\x20Z/
+ the Zoo
+ 0: Z
+ *** Failers
+No match
+ Zulu
+No match
+
+/^[W-\]46]/
+ W46]789
+ 0: W
+ Wall
+ 0: W
+ Zebra
+ 0: Z
+ Xylophone
+ 0: X
+ 42
+ 0: 4
+ [abcd]
+ 0: [
+ ]abcd[
+ 0: ]
+ \\backslash
+ 0: \
+ *** Failers
+No match
+ -46]789
+No match
+ well
+No match
+
+/a(?-i)b/i
+ ab
+ 0: ab
+ Ab
+ 0: Ab
+ *** Failers
+No match
+ aB
+No match
+ AB
+No match
+
+/(a(?i)b)c/
+ abc
+ 0: abc
+ 1: ab
+ aBc
+ 0: aBc
+ 1: aB
+ *** Failers
+No match
+ abC
+No match
+ aBC
+No match
+ Abc
+No match
+ ABc
+No match
+ ABC
+No match
+ AbC
+No match
+
+/a(?i:b)c/
+ abc
+ 0: abc
+ aBc
+ 0: aBc
+ *** Failers
+No match
+ ABC
+No match
+ abC
+No match
+ aBC
+No match
+
+/a(?i:b)*c/
+ aBc
+ 0: aBc
+ aBBc
+ 0: aBBc
+ *** Failers
+No match
+ aBC
+No match
+ aBBC
+No match
+
+/a(?=b(?i)c)\w\wd/
+ abcd
+ 0: abcd
+ abCd
+ 0: abCd
+ *** Failers
+No match
+ aBCd
+No match
+ abcD
+No match
+
+/(?=a(?i)b)\w\wc/
+ abc
+ 0: abc
+ aBc
+ 0: aBc
+ *** Failers
+No match
+ Ab
+No match
+ abC
+No match
+ aBC
+No match
+
+/(abc|)+/
+ abc
+ 0: abc
+ 1:
+ abcabc
+ 0: abcabc
+ 1:
+ abcabcabc
+ 0: abcabcabc
+ 1:
+ xyz
+ 0:
+ 1:
+
+/(?i:saturday|sunday)/
+ saturday
+ 0: saturday
+ sunday
+ 0: sunday
+ Saturday
+ 0: Saturday
+ Sunday
+ 0: Sunday
+ SATURDAY
+ 0: SATURDAY
+ SUNDAY
+ 0: SUNDAY
+ SunDay
+ 0: SunDay
+
+/(a(?i)bc|BB)x/
+ abcx
+ 0: abcx
+ 1: abc
+ aBCx
+ 0: aBCx
+ 1: aBC
+ bbx
+ 0: bbx
+ 1: bb
+ BBx
+ 0: BBx
+ 1: BB
+ *** Failers
+No match
+ abcX
+No match
+ aBCX
+No match
+ bbX
+No match
+ BBX
+No match
+
+/^([ab](?i)[cd]|[ef])/
+ ac
+ 0: ac
+ 1: ac
+ aC
+ 0: aC
+ 1: aC
+ bD
+ 0: bD
+ 1: bD
+ elephant
+ 0: e
+ 1: e
+ Europe
+ 0: E
+ 1: E
+ frog
+ 0: f
+ 1: f
+ France
+ 0: F
+ 1: F
+ *** Failers
+No match
+ Africa
+No match
+
+/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
+ ab
+ 0: ab
+ 1: ab
+ aBd
+ 0: aBd
+ 1: aBd
+ xy
+ 0: xy
+ 1: xy
+ xY
+ 0: xY
+ 1: xY
+ zebra
+ 0: z
+ 1: z
+ Zambesi
+ 0: Z
+ 1: Z
+ *** Failers
+No match
+ aCD
+No match
+ XY
+No match
+
+/(?:(?i)a)b/
+ ab
+ 0: ab
+
+/((?i)a)b/
+ ab
+ 0: ab
+ 1: a
+
+/(?:(?i)a)b/
+ Ab
+ 0: Ab
+
+/((?i)a)b/
+ Ab
+ 0: Ab
+ 1: A
+
+/(?:(?i)a)b/
+ *** Failers
+No match
+ cb
+No match
+ aB
+No match
+
+/((?i)a)b/
+
+/(?i:a)b/
+ ab
+ 0: ab
+
+/((?i:a))b/
+ ab
+ 0: ab
+ 1: a
+
+/(?i:a)b/
+ Ab
+ 0: Ab
+
+/((?i:a))b/
+ Ab
+ 0: Ab
+ 1: A
+
+/(?i:a)b/
+ *** Failers
+No match
+ aB
+No match
+ aB
+No match
+
+/((?i:a))b/
+
+/(?:(?-i)a)b/i
+ ab
+ 0: ab
+
+/((?-i)a)b/i
+ ab
+ 0: ab
+ 1: a
+
+/(?:(?-i)a)b/i
+ aB
+ 0: aB
+
+/((?-i)a)b/i
+ aB
+ 0: aB
+ 1: a
+
+/(?:(?-i)a)b/i
+ *** Failers
+No match
+ aB
+ 0: aB
+ Ab
+No match
+
+/((?-i)a)b/i
+
+/(?:(?-i)a)b/i
+ aB
+ 0: aB
+
+/((?-i)a)b/i
+ aB
+ 0: aB
+ 1: a
+
+/(?:(?-i)a)b/i
+ *** Failers
+No match
+ Ab
+No match
+ AB
+No match
+
+/((?-i)a)b/i
+
+/(?-i:a)b/i
+ ab
+ 0: ab
+
+/((?-i:a))b/i
+ ab
+ 0: ab
+ 1: a
+
+/(?-i:a)b/i
+ aB
+ 0: aB
+
+/((?-i:a))b/i
+ aB
+ 0: aB
+ 1: a
+
+/(?-i:a)b/i
+ *** Failers
+No match
+ AB
+No match
+ Ab
+No match
+
+/((?-i:a))b/i
+
+/(?-i:a)b/i
+ aB
+ 0: aB
+
+/((?-i:a))b/i
+ aB
+ 0: aB
+ 1: a
+
+/(?-i:a)b/i
+ *** Failers
+No match
+ Ab
+No match
+ AB
+No match
+
+/((?-i:a))b/i
+
+/((?-i:a.))b/i
+ *** Failers
+No match
+ AB
+No match
+ a\nB
+No match
+
+/^(?:a?b?)*$/
+ *** Failers
+No match
+ dbcb
+No match
+ a--
+No match
+
+/(?i)AB(?-i)C/
+ XabCY
+ 0: abC
+ *** Failers
+No match
+ XabcY
+No match
+
+/((?i)AB(?-i)C|D)E/
+ abCE
+ 0: abCE
+ 1: abC
+ DE
+ 0: DE
+ 1: D
+ *** Failers
+No match
+ abcE
+No match
+ abCe
+No match
+ dE
+No match
+ De
+No match
+
+/^(b+|a){1,2}c/
+ bc
+ 0: bc
+ 1: b
+ bbc
+ 0: bbc
+ 1: bb
+ bbbc
+ 0: bbbc
+ 1: bbb
+ bac
+ 0: bac
+ 1: a
+ bbac
+ 0: bbac
+ 1: a
+ aac
+ 0: aac
+ 1: a
+ abbbbbbbbbbbc
+ 0: abbbbbbbbbbbc
+ 1: bbbbbbbbbbb
+ bbbbbbbbbbbac
+ 0: bbbbbbbbbbbac
+ 1: a
+ *** Failers
+No match
+ aaac
+No match
+ abbbbbbbbbbbac
+No match
+
+/^[ab]{1,3}(ab*|b)/
+ aabbbbb
+ 0: aabb
+ 1: b
+
+/^(a|)\1*b/
+ ab
+ 0: ab
+ 1: a
+ aaaab
+ 0: aaaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ acb
+No match
+
+/^(a|)\1+b/
+ aab
+ 0: aab
+ 1: a
+ aaaab
+ 0: aaaab
+ 1: a
+ b
+ 0: b
+ 1:
+ *** Failers
+No match
+ ab
+No match
+
+/(a)\1{8,}/
+ aaaaaaaaa
+ 0: aaaaaaaaa
+ 1: a
+ aaaaaaaaaa
+ 0: aaaaaaaaaa
+ 1: a
+ *** Failers
+No match
+ aaaaaaa
+No match
+
+/(abc)\1/i
+ abcabc
+ 0: abcabc
+ 1: abc
+ ABCabc
+ 0: ABCabc
+ 1: ABC
+ abcABC
+ 0: abcABC
+ 1: abc
+
+/((?i)blah)\s+\1/
+ blah blah
+ 0: blah blah
+ 1: blah
+ BLAH BLAH
+ 0: BLAH BLAH
+ 1: BLAH
+ Blah Blah
+ 0: Blah Blah
+ 1: Blah
+ blaH blaH
+ 0: blaH blaH
+ 1: blaH
+ *** Failers
+No match
+ blah BLAH
+No match
+ Blah blah
+No match
+ blaH blah
+No match
+
+/((?i)blah)\s+(?i:\1)/
+ blah blah
+ 0: blah blah
+ 1: blah
+ BLAH BLAH
+ 0: BLAH BLAH
+ 1: BLAH
+ Blah Blah
+ 0: Blah Blah
+ 1: Blah
+ blaH blaH
+ 0: blaH blaH
+ 1: blaH
+ blah BLAH
+ 0: blah BLAH
+ 1: blah
+ Blah blah
+ 0: Blah blah
+ 1: Blah
+ blaH blah
+ 0: blaH blah
+ 1: blaH
+
+/(ab)\d\1/i
+ Ab4ab
+ 0: Ab4ab
+ 1: Ab
+ ab4Ab
+ 0: ab4Ab
+ 1: ab
+
+/((((((((((a))))))))))\10/
+ aa
+ 0: aa
+ 1: a
+ 2: a
+ 3: a
+ 4: a
+ 5: a
+ 6: a
+ 7: a
+ 8: a
+ 9: a
+ 10: a
+
+/((((((((((a))))))))))\10/i
+ AA
+ 0: AA
+ 1: A
+ 2: A
+ 3: A
+ 4: A
+ 5: A
+ 6: A
+ 7: A
+ 8: A
+ 9: A
+ 10: A
+
+/ab\d{0}e/
+ abe
+ 0: abe
+ *** Failers
+No match
+ ab1e
+No match
+
+/(ab|ab*)bc/
+ abc
+ 0: abc
+ 1: a
+
+/(ab|ab*)bc/i
+ ABC
+ 0: ABC
+ 1: A
+
+/(?:(?!foo)...|^.{0,2})bar(.*)/
+ foobar crowbar etc
+ 0: rowbar etc
+ 1: etc
+ barrel
+ 0: barrel
+ 1: rel
+ 2barrel
+ 0: 2barrel
+ 1: rel
+ A barrel
+ 0: A barrel
+ 1: rel
+
+/(\.\d\d((?=0)|\d(?=\d)))/
+ 1.230003938
+ 0: .23
+ 1: .23
+ 2:
+ 1.875000282
+ 0: .875
+ 1: .875
+ 2: 5
+ *** Failers
+No match
+ 1.235
+No match
+
+/(?<!bar)foo/
+ foo
+ 0: foo
+ catfood
+ 0: foo
+ arfootle
+ 0: foo
+ rfoosh
+ 0: foo
+ *** Failers
+No match
+ barfoo
+No match
+ towbarfoo
+No match
+
+/\w{3}(?<!bar)foo/
+ catfood
+ 0: catfoo
+ *** Failers
+No match
+ foo
+No match
+ barfoo
+No match
+ towbarfoo
+No match
+
+/(?>(\.\d\d[1-9]?))\d+/
+ 1.230003938
+ 0: .230003938
+ 1: .23
+ 1.875000282
+ 0: .875000282
+ 1: .875
+ *** Failers
+No match
+ 1.235
+No match
+
+/^((?>\w+)|(?>\s+))*$/
+ now is the time for all good men to come to the aid of the party
+ 0: now is the time for all good men to come to the aid of the party
+ 1: party
+ *** Failers
+No match
+ this is not a line with only words and spaces!
+No match
+
+/((?>\d+))(\w)/
+ 12345a
+ 0: 12345a
+ 1: 12345
+ 2: a
+ *** Failers
+No match
+ 12345+
+No match
+
+/(?>a+)b/
+ aaab
+ 0: aaab
+
+/((?>a+)b)/
+ aaab
+ 0: aaab
+ 1: aaab
+
+/(?>(a+))b/
+ aaab
+ 0: aaab
+ 1: aaa
+
+/(?>b)+/
+ aaabbbccc
+ 0: bbb
+
+/(?>a+|b+|c+)*c/
+ aaabbbbccccd
+ 0: aaabbbbc
+
+/((?>[^()]+)|\([^()]*\))+/
+ ((abc(ade)ufh()()x
+ 0: abc(ade)ufh()()x
+ 1: x
+
+/\(((?>[^()]+)|\([^()]+\))+\)/
+ (abc)
+ 0: (abc)
+ 1: abc
+ (abc(def)xyz)
+ 0: (abc(def)xyz)
+ 1: xyz
+ *** Failers
+No match
+ ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+No match
+
+/(?>a(?i)b+)+c/
+ abc
+ 0: abc
+ aBbc
+ 0: aBbc
+ aBBc
+ 0: aBBc
+ *** Failers
+No match
+ Abc
+No match
+ abAb
+No match
+ abbC
+No match
+
+/(?<=a(?i)b)(\w\w)c/
+ abxxc
+ 0: xxc
+ 1: xx
+ aBxxc
+ 0: xxc
+ 1: xx
+ *** Failers
+No match
+ Abxxc
+No match
+ ABxxc
+No match
+ abxxC
+No match
+
+/(?>a*)*/
+ a
+ 0: a
+ aa
+ 0: aa
+ aaaa
+ 0: aaaa
+
+/(?<=(?<!foo)bar)baz/
+ barbaz
+ 0: baz
+ barbarbaz
+ 0: baz
+ koobarbaz
+ 0: baz
+ *** Failers
+No match
+ baz
+No match
+ foobarbaz
+No match
+
+/(?<=a)b/
+ ab
+ 0: b
+ *** Failers
+No match
+ cb
+No match
+ b
+No match
+
+/(?<!c)b/
+ ab
+ 0: b
+ b
+ 0: b
+ b
+ 0: b
+
+/(?<![cd])b/
+ *** Failers
+No match
+ B\nB
+No match
+ dbcb
+No match
+
+/(?<![cd])[ab]/
+ dbaacb
+ 0: a
+
+/(?<!(c|d))b/
+
+/(?<!cd)[ab]/
+ cdaccb
+ 0: b
+
+/(?>a+)b/
+ aaab
+ 0: aaab
+
+/((?>a+)b)/
+ aaab
+ 0: aaab
+ 1: aaab
+
+/(?>(a+))b/
+ aaab
+ 0: aaab
+ 1: aaa
+
+/((?>[^()]+)|\([^()]*\))+/
+ ((abc(ade)ufh()()x
+ 0: abc(ade)ufh()()x
+ 1: x
+
+/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
+ word cat dog elephant mussel cow horse canary baboon snake shark otherword
+ 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
+ word cat dog elephant mussel cow horse canary baboon snake shark
+No match
+
+/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
+ word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
+No match
+
+/(?<=\d{3}(?!999))foo/
+ 999foo
+ 0: foo
+ 123999foo
+ 0: foo
+ *** Failers
+No match
+ 123abcfoo
+No match
+
+/(?<=(?!...999)\d{3})foo/
+ 999foo
+ 0: foo
+ 123999foo
+ 0: foo
+ *** Failers
+No match
+ 123abcfoo
+No match
+
+/(?<=\d{3}(?!999)...)foo/
+ 123abcfoo
+ 0: foo
+ 123456foo
+ 0: foo
+ *** Failers
+No match
+ 123999foo
+No match
+
+/(?<=\d{3}...)(?<!999)foo/
+ 123abcfoo
+ 0: foo
+ 123456foo
+ 0: foo
+ *** Failers
+No match
+ 123999foo
+No match
+
+/((?>Z)+|A)*/
+ ZABCDEFG
+ 0: ZA
+ 1: A
+
+/((?>)+|A)*/
+ ZABCDEFG
+ 0:
+ 1:
+
+/(?<=Z)X./
+ \x84XAZXB
+ 0: XB
+
+/^(b+?|a){1,2}?c/
+ bac
+ 0: bac
+ 1: a
+ bbac
+ 0: bbac
+ 1: a
+ bbbac
+ 0: bbbac
+ 1: a
+ bbbbac
+ 0: bbbbac
+ 1: a
+ bbbbbac
+ 0: bbbbbac
+ 1: a
+
+/(([a-c])b*?\2){3}/
+ ababbbcbc
+ 0: ababbbcbc
+ 1: cbc
+ 2: c
+
+/^(b+?|a){1,2}?c/
+ bc
+ 0: bc
+ 1: b
+ bbc
+ 0: bbc
+ 1: b
+ bbbc
+ 0: bbbc
+ 1: bb
+ bac
+ 0: bac
+ 1: a
+ bbac
+ 0: bbac
+ 1: a
+ aac
+ 0: aac
+ 1: a
+ abbbbbbbbbbbc
+ 0: abbbbbbbbbbbc
+ 1: bbbbbbbbbbb
+ bbbbbbbbbbbac
+ 0: bbbbbbbbbbbac
+ 1: a
+ *** Failers
+No match
+ aaac
+No match
+ abbbbbbbbbbbac
+No match
+
+/^(?=ab(de))(abd)(e)/
+ abde
+ 0: abde
+ 1: de
+ 2: abd
+ 3: e
+
+/^(?=(ab(cd)))(ab)/
+ abcd
+ 0: ab
+ 1: abcd
+ 2: cd
+ 3: ab
+
+/(?=(a+?))(\1ab)/
+ aaab
+ 0: aab
+ 1: a
+ 2: aab
+
+/(?=(a+?))(\1ab)/
+ aaab
+ 0: aab
+ 1: a
+ 2: aab
+
+/^(?:b|a(?=(.)))*\1/
+ abc
+ 0: ab
+ 1: b
+
+/(?<=(foo)a)bar/
+ fooabar
+ 0: bar
+ 1: foo
+ *** Failers
+No match
+ bar
+No match
+ foobbar
+No match
+
+/(?<=(foo))bar\1/
+ foobarfoo
+ 0: barfoo
+ 1: foo
+ foobarfootling
+ 0: barfoo
+ 1: foo
+ *** Failers
+No match
+ foobar
+No match
+ barfoo
+No match
+
+/(?>.*)(?<=(abcd|wxyz))/
+ alphabetabcd
+ 0: alphabetabcd
+ 1: abcd
+ endingwxyz
+ 0: endingwxyz
+ 1: wxyz
+ *** Failers
+No match
+ a rather long string that doesn't end with one of them
+No match
+
+/(a (?x)b c)d e/
+ a bcd e
+ 0: a bcd e
+ 1: a bc
+ *** Failers
+No match
+ a b cd e
+No match
+ abcd e
+No match
+ a bcde
+No match
+
+/(a b(?x)c d (?-x)e f)/
+ a bcde f
+ 0: a bcde f
+ 1: a bcde f
+ *** Failers
+No match
+ abcdef
+No match
+
+/a(?x: b c )d/
+ XabcdY
+ 0: abcd
+ *** Failers
+No match
+ Xa b c d Y
+No match
+
+/((?x)x y z | a b c)/
+ XabcY
+ 0: abc
+ 1: abc
+ AxyzB
+ 0: xyz
+ 1: xyz
+
+/\Aabc\z/m
+ abc
+ 0: abc
+ *** Failers
+No match
+ abc\n
+No match
+ qqq\nabc
+No match
+ abc\nzzz
+No match
+ qqq\nabc\nzzz
+No match
+
+/b\z/
+ a\nb
+ 0: b
+ *** Failers
+No match
+
+/$(?<=^(a))/
+ a
+ 0:
+ 1: a
+
+/\Gabc/
+ abc
+ 0: abc
+ *** Failers
+No match
+ xyzabc
+No match
+
+/^(a\1?){4}$/
+ a
+No match
+ aa
+No match
+ aaa
+No match
+ aaaa
+ 0: aaaa
+ 1: a
+ aaaaa
+ 0: aaaaa
+ 1: a
+ aaaaaaa
+ 0: aaaaaaa
+ 1: a
+ aaaaaaaa
+No match
+ aaaaaaaaa
+No match
+ aaaaaaaaaa
+ 0: aaaaaaaaaa
+ 1: aaaa
+ aaaaaaaaaaa
+No match
+ aaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaaa
+No match
+ aaaaaaaaaaaaaaaa
+No match
+
+/^(a\1?){4}$/
+ aaaaaaaaaa
+ 0: aaaaaaaaaa
+ 1: aaaa
+ *** Failers
+No match
+ AB
+No match
+ aaaaaaaaa
+No match
+ aaaaaaaaaaa
+No match
+
diff --git a/gnu/testlet/java/util/regex/Pattern/testdata2 b/gnu/testlet/java/util/regex/Pattern/testdata2
new file mode 100644
index 00000000..d4e39891
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/testdata2
@@ -0,0 +1,4 @@
+/-- Testcases which fail should be kept in this file --/
+ /-- until the fix is done. --/
+No match
+
diff --git a/gnu/testlet/java/util/regex/Pattern/testdata3 b/gnu/testlet/java/util/regex/Pattern/testdata3
new file mode 100644
index 00000000..e6b13eaa
--- /dev/null
+++ b/gnu/testlet/java/util/regex/Pattern/testdata3
@@ -0,0 +1,144 @@
+#
+# Quoting constructs (PR libgcj/20504)
+#
+
+/abc\Qabc\Eabc/
+ abcabcabc
+ 0: abcabcabc
+
+/abc\Q(*+|\Eabc/
+ abc(*+|abc
+ 0: abc(*+|abc
+
+/\Qa.b+c*\E/
+ a.b+c*
+ 0: a.b+c*
+ aabbcc
+No match
+
+/\Q(a)\E/
+ (a)
+ 0: (a)
+ a
+No match
+
+/a+\Qb+\Ea+/
+ aaab+a
+ 0: aaab+a
+ aaabbbaaa
+No match
+
+/\Q\a\b\n\r\E/
+ \a\b\n\r
+ 0: \a\b\n\r
+
+#
+# Possessive quantifiers (PR libgcj/20435)
+#
+
+/a?+/
+ a
+ 0: a
+ aa
+ 0: a
+
+/a*+/
+ a
+ 0: a
+ aa
+ 0: aa
+
+/a++/
+ a
+ 0: a
+ aa
+ 0: aa
+
+/.*+b/
+ a
+No match
+ ab
+No match
+ aab
+No match
+
+/a{1,3}+/
+ a
+ 0: a
+ aa
+ 0: aa
+ aaa
+ 0: aaa
+
+/a*+abc?+xyz++pqr{3}+ab{2,}+xy{4,5}+pq{0,6}+AB{0,}+zz/
+ abxyzpqrrrabbxyyyypqAzz
+No match
+
+/(\d\d\d\d)/(\d{1,2}+)/(\d{1,2}+)/(.+)/
+ /2005/05/01/url
+ 0: 2005/05/01/url
+ 1: 2005
+ 2: 05
+ 3: 01
+ 4: url
+ /2005/5/1/url
+ 0: 2005/5/1/url
+ 1: 2005
+ 2: 5
+ 3: 1
+ 4: url
+ /2005/05/01/
+No match
+ /2005/100/100/url
+No match
+
+#
+# Union and intersection of character classes
+#
+
+/[\p{L}[\p{Mn}[\p{Pc}[\p{Nd}[\p{Nl}[\p{Sc}]]]]]]+/
+ $a1_
+ 0: $a1_
+
+/[a-c&&[b-e]&&[\w]]X/
+ bX
+ 0: bX
+
+/[a-c&&b-e&&\p{Lower}]X/
+ cX
+ 0: cX
+
+/[a-e[h-k][m-p]&&[^bjn]]+/
+ ckp
+ 0: ckp
+ dhn
+ 0: dh
+ nhd
+ 0: hd
+ nx
+No match
+
+#
+# Unicode-aware case folding
+#
+
+/(?u:\uff21)/i
+ \uff41
+ 0: \uff41
+
+/(?:\uff21)/i
+ \uff41
+No match
+
+/(?ui:[\uff21-\uff23]+)/
+ \uff41\uff42\uff43
+ 0: \uff41\uff42\uff43
+ \uff21\uff42\uff23
+ 0: \uff21\uff42\uff23
+
+/(?i:[\uff21-\uff23]+)/
+ \uff41\uff42\uff43
+No match
+ \uff21\uff42\uff23
+ 0: \uff21
+
diff --git a/gnu/testlet/java/util/regex/PatternSplit.java b/gnu/testlet/java/util/regex/PatternSplit.java
new file mode 100644
index 00000000..b026196d
--- /dev/null
+++ b/gnu/testlet/java/util/regex/PatternSplit.java
@@ -0,0 +1,142 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004, 2005 Mark Wielaard
+
+// 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.java.util.regex;
+
+import gnu.testlet.*;
+import java.util.Arrays;
+import java.util.regex.*;
+
+public class PatternSplit implements Testlet
+{
+ private TestHarness harness;
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ test("@", "test@example.com", new String[] { "test", "example.com" });
+ test("\\.", "192.168.0.1", new String[] { "192", "168", "0", "1" });
+
+ test(",", "a,b,c,d,e", new String[] { "a", "b", "c", "d", "e" });
+
+ test("-", "a-", new String[] { "a", "" });
+ test(";", ";b", new String[] { "", "b" });
+
+ test(":", ":b:", new String[] { "", "b", "" });
+
+ test(" ", " ", new String[] { "", "" });
+ test("0", "00", new String[] { "", "", "" });
+
+ test(",", "a,b,c,d,e", new String[] { "a", "b", "c", "d", "e" });
+
+ test("\\w", "a,b,c,d,e", new String[] { "", ",", ",", ",", ",", "" });
+ test("\\d+", "123,456,789", new String[] { "", ",", ",", "" });
+
+ test("[^a-z]", "abc1defZghi", new String[] { "abc", "def", "ghi" });
+
+ test("^[a-c]", "abc", new String[] { "", "bc" });
+ test("[a-c]$", "abc", new String[] { "ab", "" });
+
+ test("(?=[a-z])", "123abc", new String[] { "123", "a", "b", "c" });
+
+ test(",", "a,,,b", new String[] { "a", "", "", "b" });
+
+ // No match
+ test("waku", "", new String[] { "" });
+ test("waku", "wapu", new String[] { "wapu" });
+ test("\\d+", "abc,def", new String[] { "abc,def" });
+
+ }
+
+ // Tests a pattern on a string with the given result
+ // (result should include all trailing empty strings)
+ void test(String pat, String str, String[] expected)
+ {
+ harness.checkPoint("test: " + pat);
+ try
+ {
+ Pattern pattern = Pattern.compile(pat);
+ String[] result = pattern.split(str, -1);
+ harness.check(Arrays.equals(expected, result));
+
+ result = pattern.split(str, Integer.MIN_VALUE);
+ harness.check(Arrays.equals(expected, result));
+
+ result = pattern.split(str);
+ String[] result0 = pattern.split(str, 0);
+ harness.check(Arrays.equals(result, result0));
+
+ // Strip trailing space or just use str as result when we don't match.
+ int total_len = expected.length;
+ String[] expected0;
+ if (pattern.matcher(str).find())
+ {
+ int trailing_empties = 0;
+ for (int i = 0; i < total_len; i++)
+ {
+ if ("".equals(expected[i]))
+ trailing_empties++;
+ else
+ trailing_empties = 0;
+ }
+ expected0 = new String[total_len - trailing_empties];
+ for (int i = 0; i < expected0.length; i++)
+ expected0[i] = expected[i];
+ }
+ else
+ expected0 = new String[] { str };
+
+ harness.check(Arrays.equals(expected0, result0));
+
+ // A limit of one is lame. Either it doesn't match and the
+ // result is the given string, or it matches zero (1 - 1) times
+ // and the result is the whole given string (trailing part).
+ String[] result1 = pattern.split(str, 1);
+ harness.check(result1.length == 1 && str.equals(result1[0]));
+
+ for (int i = 2; i <= total_len; i++)
+ {
+ result = pattern.split(str, i);
+ boolean equal = (result.length == i);
+ for (int j = 0; equal && j < i - 1; j++)
+ equal = (expected[j].equals(result[j]));
+ harness.check(equal);
+
+ // The tail should start with the first remaining element
+ harness.check(result.length > i - 1 &&
+ result[i - 1].startsWith(expected[i - 1]));
+ harness.check(result.length > i -1 &&
+ result[i - 1].endsWith(expected[total_len - 1]));
+ }
+
+ result = pattern.split(str, total_len + 1);
+ harness.check(Arrays.equals(expected, result));
+
+ result = pattern.split(str, Integer.MAX_VALUE);
+ harness.check(Arrays.equals(expected, result));
+ }
+ catch(PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/regex/TestHelper.java b/gnu/testlet/java/util/regex/TestHelper.java
new file mode 100644
index 00000000..51c9a23d
--- /dev/null
+++ b/gnu/testlet/java/util/regex/TestHelper.java
@@ -0,0 +1,246 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Mark Wielaard
+
+// 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.java.util.regex;
+
+import gnu.testlet.*;
+import java.nio.CharBuffer;
+import java.util.Arrays;
+import java.util.regex.*;
+
+/**
+ * package private helper class for testing regular expressions.
+ */
+
+class TestHelper
+{
+
+ private final TestHarness harness;
+
+ TestHelper(TestHarness harness)
+ {
+ this.harness = harness;
+ }
+
+ /**
+ * Test wheter the given Pattern matches against a empty string or not.
+ */
+ void testEmpty(Pattern pattern, boolean matches)
+ {
+ // Try static matches method
+ harness.checkPoint("testEmpty static Pattern.matches("
+ + pattern.pattern() + ")");
+ try
+ {
+ harness.check(matches == Pattern.matches(pattern.pattern(), ""));
+ }
+ catch (PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+
+ // Try Matcher methods
+ harness.checkPoint("testEmpty '" + pattern.pattern()
+ + "' flags " + pattern.flags());
+ Matcher matcher = pattern.matcher("");
+ testEmpty(matcher, matches);
+
+ // Try reset Matcher with a CharBuffer wrapped around a empty StringBuffer.
+ harness.checkPoint("testEmpty '" + pattern.pattern()
+ + "' flags " + pattern.flags()
+ + " (reset)");
+ matcher.reset(CharBuffer.wrap(new StringBuffer()));
+ testEmpty(matcher, matches);
+
+ // Try split methods
+ harness.checkPoint("testEmpty split '" + pattern.pattern()
+ + "' flags " + pattern.flags());
+ String[] expected = new String[] { "" };
+ harness.check(Arrays.equals(expected, pattern.split("")));
+ harness.check(Arrays.equals(expected, pattern.split("", 1)));
+ }
+
+ void testEmpty(Matcher matcher, boolean matches)
+ {
+ harness.check(matches == matcher.matches());
+ harness.check(matches == matcher.lookingAt());
+ harness.check(!matcher.find());
+ matcher.reset();
+ harness.check(matches == matcher.find());
+ if (matches)
+ {
+ harness.check(matcher.start() == 0);
+ harness.check(matcher.end() == 0);
+ harness.check("", matcher.group());
+
+ int groups = matcher.groupCount();
+ harness.check(groups >= 0);
+ for (int i = 0; i < groups; i++)
+ {
+ harness.check(matcher.start(i) == 0);
+ harness.check(matcher.end(i) == 0);
+ harness.check("", matcher.group(0));
+ }
+
+ harness.check("cat", matcher.replaceAll("cat"));
+ harness.check("dog", matcher.replaceFirst("dog"));
+
+ matcher.reset();
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find())
+ matcher.appendReplacement(sb, "blue");
+ matcher.appendTail(sb);
+ harness.check("blue", sb.toString());
+ }
+ }
+
+ /**
+ * Test wheter the given Pattern matches against the complete given string.
+ */
+ void testMatchComplete(Pattern pattern, String string)
+ {
+ // Try static matches method
+ harness.checkPoint("testMatchComplete static Pattern.matches("
+ + pattern.pattern() + ")");
+ try
+ {
+ harness.check(Pattern.matches(pattern.pattern(), string));
+ }
+ catch (PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+
+ // Try Matcher methods
+ harness.checkPoint("testMatchComplete '" + pattern.pattern()
+ + "' flags " + pattern.flags());
+ Matcher matcher = pattern.matcher(string);
+ testMatchComplete(matcher, string);
+
+ // Try reset Matcher with a CharBuffer wrapped around new StringBuffer.
+ harness.checkPoint("testComplete '" + pattern.pattern()
+ + "' flags " + pattern.flags()
+ + " (reset)");
+ matcher.reset(CharBuffer.wrap(new StringBuffer(string)));
+ testMatchComplete(matcher, string);
+
+ // Try split methods
+ harness.checkPoint("testComplete split '" + pattern.pattern()
+ + "' flags " + pattern.flags());
+ String[] expected = new String[] { };
+ String[] split = pattern.split(string);
+ harness.check(Arrays.equals(expected, split));
+ split = pattern.split(string, 0);
+ harness.check(Arrays.equals(expected, split));
+
+ expected = new String[] { string };
+ split = pattern.split(string, 1);
+ harness.check(Arrays.equals(expected, split));
+
+ expected = new String[] { "", "" };
+ split = pattern.split(string, -1);
+ harness.check(Arrays.equals(expected, split));
+
+ split = pattern.split(string, 2);
+ harness.check(Arrays.equals(expected, split));
+
+ split = pattern.split(string, 3);
+ harness.check(Arrays.equals(expected, split));
+ }
+
+ void testMatchComplete(Matcher matcher, String string)
+ {
+ try
+ {
+ harness.check(matcher.matches());
+ harness.check(matcher.lookingAt());
+ harness.check(!matcher.find());
+ matcher.reset();
+ harness.check(matcher.find());
+
+ // We should be able to add extra parens and have group 1 for certain.
+ Pattern pattern = Pattern.compile("("
+ + matcher.pattern().pattern()
+ + ")");
+ matcher = pattern.matcher(string);
+ harness.check(matcher.matches());
+ harness.check(matcher.lookingAt());
+ harness.check(!matcher.find());
+ matcher.reset();
+ harness.check(matcher.find());
+
+ harness.check(matcher.start() == 0);
+ harness.check(matcher.end() == string.length());
+ harness.check(string, matcher.group());
+
+ int groups = matcher.groupCount();
+ harness.check(groups >= 1);
+ harness.check(matcher.start(0) == 0);
+ harness.check(matcher.start(1) == 0);
+ harness.check(matcher.end(0) == string.length());
+ harness.check(matcher.end(1) == string.length());
+ harness.check(string, matcher.group(0));
+ harness.check(string, matcher.group(1));
+
+ harness.check("cat", matcher.replaceAll("cat"));
+ harness.check("dog", matcher.replaceFirst("dog"));
+
+ harness.check("cat" + string + "dog",
+ matcher.replaceAll("cat$0dog"));
+ harness.check("dog" + string + "cat",
+ matcher.replaceFirst("dog$1cat"));
+
+ matcher.reset();
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find())
+ matcher.appendReplacement(sb, "blue");
+ matcher.appendTail(sb);
+ harness.check("blue", sb.toString());
+ }
+ catch (PatternSyntaxException pse)
+ {
+ harness.debug(pse);
+ harness.check(false);
+ }
+ catch(IllegalStateException ise)
+ {
+ harness.debug(ise);
+ harness.check(false);
+ }
+ }
+
+ void testNotPattern(String pat)
+ {
+ harness.checkPoint("testNotPattern: " + pat);
+ boolean exception = false;
+ try
+ {
+ Pattern pattern = Pattern.compile(pat);
+ }
+ catch(PatternSyntaxException pse)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+ }
+}
diff --git a/gnu/testlet/java/util/zip/Adler32/CVS/Entries b/gnu/testlet/java/util/zip/Adler32/CVS/Entries
new file mode 100644
index 00000000..2a1eb2e2
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Adler32/CVS/Entries
@@ -0,0 +1,2 @@
+/checksum.java/1.1/Thu Sep 1 17:28:14 2005//
+D
diff --git a/gnu/testlet/java/util/zip/Adler32/CVS/Repository b/gnu/testlet/java/util/zip/Adler32/CVS/Repository
new file mode 100644
index 00000000..1398b068
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Adler32/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/Adler32
diff --git a/gnu/testlet/java/util/zip/Adler32/CVS/Root b/gnu/testlet/java/util/zip/Adler32/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Adler32/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/Adler32/checksum.java b/gnu/testlet/java/util/zip/Adler32/checksum.java
new file mode 100644
index 00000000..1663c8b8
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Adler32/checksum.java
@@ -0,0 +1,94 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Mark J. Wielaard (mark@klomp.org)
+
+// 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
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.util.zip.Adler32;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+
+public class checksum implements Testlet
+{
+ // 1000, 6000, ..., 96000 arrays filled with value = (byte) index.
+ private final long[] someMore = new long[] { 486795068L,
+ 1525910894L,
+ 3543032800L,
+ 2483946130L,
+ 4150712693L,
+ 3878123687L,
+ 3650897945L,
+ 1682829244L,
+ 1842395054L,
+ 460416992L,
+ 3287492690L,
+ 479453429L,
+ 3960773095L,
+ 2008242969L,
+ 4130540683L,
+ 1021367854L,
+ 4065361952L,
+ 2081116754L,
+ 4033606837L,
+ 1162071911L };
+
+ public void test(TestHarness harness)
+ {
+ byte[] bs;
+ for (int i = 0; i < 20; i++)
+ {
+ int length = i * 5000 + 1000;
+ bs = new byte[length];
+ for (int j = 0; j < bs.length; j++)
+ bs[j] = (byte) j;
+ test(harness, bs, someMore[i]);
+ }
+ }
+
+ private void test(TestHarness harness, byte[] bs, long result)
+ {
+ Adler32 adler = new Adler32();
+ harness.check(adler.getValue(), 1);
+ adler.update(bs);
+ harness.check(adler.getValue(), result);
+
+ adler.reset();
+ harness.check(adler.getValue(), 1);
+ for (int i = 0; i < bs.length; i += 1000)
+ adler.update(bs, i, 1000);
+ harness.check(adler.getValue(), result);
+
+ adler.reset();
+ harness.check(adler.getValue(), 1);
+ for (int i = 0; i < bs.length; i++)
+ adler.update(bs[i]);
+ harness.check(adler.getValue(), result);
+
+ adler.reset();
+ harness.check(adler.getValue(), 1);
+ for (int i = 0; i < 250; i++)
+ adler.update(bs[i]);
+ for (int i = 250; i < bs.length - 250; i += 250)
+ adler.update(bs, i, 250);
+ for (int i = bs.length - 250; i < bs.length; i++)
+ adler.update(bs[i]);
+ harness.check(adler.getValue(), result);
+ }
+}
diff --git a/gnu/testlet/java/util/zip/CVS/Entries b/gnu/testlet/java/util/zip/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/java/util/zip/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/java/util/zip/CVS/Entries.Log b/gnu/testlet/java/util/zip/CVS/Entries.Log
new file mode 100644
index 00000000..8ee84407
--- /dev/null
+++ b/gnu/testlet/java/util/zip/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/Adler32////
+A D/Deflater////
+A D/GZIPInputStream////
+A D/InflaterInputStream////
+A D/ZipEntry////
+A D/ZipFile////
+A D/ZipInputStream////
diff --git a/gnu/testlet/java/util/zip/CVS/Repository b/gnu/testlet/java/util/zip/CVS/Repository
new file mode 100644
index 00000000..a12be704
--- /dev/null
+++ b/gnu/testlet/java/util/zip/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip
diff --git a/gnu/testlet/java/util/zip/CVS/Root b/gnu/testlet/java/util/zip/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/Deflater/CVS/Entries b/gnu/testlet/java/util/zip/Deflater/CVS/Entries
new file mode 100644
index 00000000..20ff1540
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Deflater/CVS/Entries
@@ -0,0 +1,2 @@
+/PR27435.java/1.1/Sun May 7 22:53:10 2006//
+D
diff --git a/gnu/testlet/java/util/zip/Deflater/CVS/Repository b/gnu/testlet/java/util/zip/Deflater/CVS/Repository
new file mode 100644
index 00000000..ac928d0c
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Deflater/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/Deflater
diff --git a/gnu/testlet/java/util/zip/Deflater/CVS/Root b/gnu/testlet/java/util/zip/Deflater/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Deflater/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/Deflater/PR27435.java b/gnu/testlet/java/util/zip/Deflater/PR27435.java
new file mode 100644
index 00000000..fb55a465
--- /dev/null
+++ b/gnu/testlet/java/util/zip/Deflater/PR27435.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.java.util.zip.Deflater;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.zip.Deflater;
+
+/*
+ * This test is based on PR27435, which reported
+ * an ArrayOutOfBoundsException when using the DeflateFast
+ * method.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR27435
+ implements Testlet
+{
+ /**
+ * Buffer must be big enough to go over the internal
+ * buffer size of 16384. Currently somewhere above
+ * 1024*1024*4.
+ */
+ public static final int BUFFER_SIZE = 1024*1024*5;
+
+ public void test(TestHarness harness)
+ {
+ byte[] inputBytes = new byte[BUFFER_SIZE];
+ byte[] compressedData = new byte[BUFFER_SIZE];
+
+ /* Fill array with bytes */
+ for (int a = 0; a < inputBytes.length; ++a)
+ inputBytes[a] = 1;
+
+ Deflater deflater = new Deflater(Deflater.BEST_SPEED);
+ deflater.setInput(inputBytes);
+ deflater.finish();
+ deflater.deflate(compressedData);
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Entries b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Entries
new file mode 100644
index 00000000..a414031d
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Entries
@@ -0,0 +1,5 @@
+/PR24461.java/1.1/Sat Mar 11 19:31:37 2006/-kk/
+/basic.java/1.2/Thu Jun 3 14:31:17 2004//
+/reference.data/1.3/Wed Nov 24 15:26:08 2004/-kb/
+/reference.gz/1.1/Wed May 19 12:12:19 1999/-kb/
+D
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Repository b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Repository
new file mode 100644
index 00000000..4c22ea09
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/GZIPInputStream
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Root b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/PR24461.java b/gnu/testlet/java/util/zip/GZIPInputStream/PR24461.java
new file mode 100644
index 00000000..b381c5be
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/PR24461.java
@@ -0,0 +1,66 @@
+/* PR24461.java -- Regression test for PR 24461
+ Copyright (C) 2006 jrandom <jrandom-gcc@i2p.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.1
+
+package gnu.testlet.java.util.zip.GZIPInputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Random;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class PR24461 implements Testlet {
+ public void test(TestHarness harness) {
+ boolean canBeOk = false;
+ boolean ok = false;
+ try {
+ ByteArrayOutputStream full = new ByteArrayOutputStream(1024);
+ GZIPOutputStream gzout = new GZIPOutputStream(full);
+ byte buf[] = new byte[1024];
+ new Random().nextBytes(buf);
+ gzout.write(buf);
+ gzout.close();
+ byte gzdata[] = full.toByteArray();
+
+ // now only read the first 128 bytes of that data
+ ByteArrayInputStream truncated = new ByteArrayInputStream(gzdata, 0, 128);
+ GZIPInputStream gzin = new GZIPInputStream(truncated);
+ byte read[] = new byte[1024];
+ int cur = 0;
+ canBeOk = true;
+ while ( (cur = gzin.read(read, cur, read.length-cur)) != -1)
+ ; //noop
+ } catch (IOException ioe) {
+ // We expect an IOException while reading the truncated stream.
+ // The bug was that we were seeing a NullPointerException.
+ ok = canBeOk;
+ } catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(ok);
+ }
+}
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/basic.java b/gnu/testlet/java/util/zip/GZIPInputStream/basic.java
new file mode 100644
index 00000000..98366ed3
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/basic.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1999 Cygnus Solutions
+
+// 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.java.util.zip.GZIPInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+import java.io.*;
+
+public class basic implements Testlet
+{
+ private String readall (InputStream in)
+ {
+ StringBuffer sb = new StringBuffer ();
+ byte[] buf = new byte[512];
+ int n;
+ try
+ {
+ while ((n = in.read(buf)) > 0)
+ sb.append(new String (buf, 0, n, "8859_1"));
+ }
+ catch (IOException _)
+ {
+ }
+ return sb.toString ();
+ }
+
+ public void test (TestHarness harness)
+ {
+ // First read the uncompressed file.
+ harness.checkPoint ("reading gzip file");
+
+ String plain = "";
+ GZIPInputStream gzin;
+ InputStream is = null;
+ try
+ {
+ is = harness.getResourceStream ("gnu#testlet#java#util#zip#GZIPInputStream#reference.data");
+ plain = readall (is);
+
+ gzin = new GZIPInputStream (harness.getResourceStream ("gnu#testlet#java#util#zip#GZIPInputStream#reference.gz"));
+ String uncompressed = readall (gzin);
+
+ harness.check (plain, uncompressed);
+ }
+ catch (gnu.testlet.ResourceNotFoundException _1)
+ {
+ harness.check (false);
+ }
+ catch (IOException _2)
+ {
+ harness.check (false);
+ }
+
+ // Now compress some data into a buffer and then re-read it.
+ harness.checkPoint ("compressing and re-reading");
+ if (is == null)
+ harness.check (false);
+ else
+ {
+ try
+ {
+ ByteArrayOutputStream bout = new ByteArrayOutputStream ();
+ GZIPOutputStream gzout = new GZIPOutputStream (bout);
+ gzout.write (plain.getBytes ("8859_1"));
+ gzout.close ();
+ gzin = new GZIPInputStream (new ByteArrayInputStream (bout.toByteArray()));
+ String full = readall (gzin);
+
+ harness.check (plain, full);
+ }
+ catch (UnsupportedEncodingException _1)
+ {
+ harness.check (false);
+ }
+ catch (IOException _2)
+ {
+ harness.check (false);
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/reference.data b/gnu/testlet/java/util/zip/GZIPInputStream/reference.data
new file mode 100644
index 00000000..b00def17
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/reference.data
@@ -0,0 +1,6 @@
+Falstaff: Marry, then, sweet wag, when thou art king, let not us that
+are squires of the night's body be called thieves of the day's beauty.
+Let us be Diana's foresters, gentlemen of the shade, minions of the
+moon; and let men say we be men of good government, being governed, as
+the sea is, by our noble and chaste mistress the moon, under whose
+countenance we steal.
diff --git a/gnu/testlet/java/util/zip/GZIPInputStream/reference.gz b/gnu/testlet/java/util/zip/GZIPInputStream/reference.gz
new file mode 100644
index 00000000..38762298
--- /dev/null
+++ b/gnu/testlet/java/util/zip/GZIPInputStream/reference.gz
Binary files differ
diff --git a/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Entries b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Entries
new file mode 100644
index 00000000..c465d52a
--- /dev/null
+++ b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Entries
@@ -0,0 +1,3 @@
+/basic.java/1.7/Thu Oct 21 22:05:26 2004//
+/messages.properties/1.1/Thu Oct 21 19:28:40 2004//
+D
diff --git a/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Repository b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Repository
new file mode 100644
index 00000000..9832fd5a
--- /dev/null
+++ b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/InflaterInputStream
diff --git a/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Root b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/InflaterInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/InflaterInputStream/basic.java b/gnu/testlet/java/util/zip/InflaterInputStream/basic.java
new file mode 100644
index 00000000..b70d291c
--- /dev/null
+++ b/gnu/testlet/java/util/zip/InflaterInputStream/basic.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1999, 2004 Cygnus Solutions
+
+// 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.java.util.zip.InflaterInputStream;
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+import java.io.*;
+import java.util.Properties;
+
+public class basic implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("compressing string");
+ String s = "data to be written, data to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,ata to be written,data to be written,data to be written,data to be written,data to be written,data to be written,data to be written,data to be written";
+
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ DeflaterOutputStream dos = new DeflaterOutputStream(bos);
+ new PrintStream(dos).print(s);
+ dos.close();
+
+ byte[] deflated_data = bos.toByteArray();
+ harness.check(deflated_data.length < s.length());
+
+ InflaterInputStream iis = new InflaterInputStream(new ByteArrayInputStream(deflated_data));
+ String inflated = new BufferedReader(new InputStreamReader(iis)).readLine();
+ harness.check(s, inflated);
+
+ byte[] buffer = new byte[10];
+ int count = iis.read(buffer, 0, 0);
+ harness.check(count, 0);
+
+ count = iis.read(buffer, 0, 1);
+ harness.check(count, -1);
+
+ } catch(IOException e)
+ {
+ harness.check(false, "deflation tests fail");
+ }
+
+ try
+ {
+ harness.checkPoint("Eclipse example");
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ DeflaterOutputStream dos = new DeflaterOutputStream(bos);
+
+ InputStream is = harness.getResourceStream("gnu#testlet#java#util#zip#InflaterInputStream#messages.properties");
+ byte[] buffer = new byte[1024];
+ int n;
+ while (true)
+ {
+ n = is.read(buffer);
+ if (n < 0)
+ break;
+ dos.write(buffer, 0, n);
+ }
+ is.close ();
+ dos.close ();
+
+ byte[] deflated_data = bos.toByteArray();
+
+ // Lack of buffering caused InflaterInputStream problems in
+ // with versions of Classpath.
+ InflaterInputStream iis = new InflaterInputStream(new BufferedInputStream (new ByteArrayInputStream(deflated_data), 1));
+
+ Properties p = new Properties();
+ p.load(iis);
+ harness.check(true);
+ }
+ catch(IOException e)
+ {
+ harness.debug(e);
+ harness.check(false);
+ }
+ catch(ResourceNotFoundException _)
+ {
+ harness.debug(_);
+ harness.check(false);
+ }
+
+ // There are apparently programs out there that depend on this behaviour.
+ harness.checkPoint("Constructor");
+ boolean exception_thrown = false;
+ try
+ {
+ InflaterInputStream iis = new InflaterInputStream(null);
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[1]);
+ exception_thrown = false;
+ try
+ {
+ InflaterInputStream iis = new InflaterInputStream(bais, null);
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ exception_thrown = false;
+ try
+ {
+ InflaterInputStream iis = new InflaterInputStream(null,
+ new Inflater(),
+ 1024);
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ exception_thrown = false;
+ try
+ {
+ InflaterInputStream iis = new InflaterInputStream(bais,
+ null,
+ 1024);
+ }
+ catch (NullPointerException npe)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+
+ exception_thrown = false;
+ try
+ {
+ InflaterInputStream iis = new InflaterInputStream(bais,
+ new Inflater(),
+ -1024);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ exception_thrown = true;
+ }
+ harness.check(exception_thrown);
+ }
+}
diff --git a/gnu/testlet/java/util/zip/InflaterInputStream/messages.properties b/gnu/testlet/java/util/zip/InflaterInputStream/messages.properties
new file mode 100644
index 00000000..64574101
--- /dev/null
+++ b/gnu/testlet/java/util/zip/InflaterInputStream/messages.properties
@@ -0,0 +1,123 @@
+###############################################################################
+# Copyright (c) 2000, 2003 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Common Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/cpl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+### Runtime plugin message catalog
+
+ok = OK
+
+### plugins
+plugin.extDefNotFound = Executable extension definition for \"{0}\" not found.
+plugin.extDefNoClass = Executable extension definition \"{0}\" does not specify a class name.
+plugin.deactivatedLoad = Attempt to load class \"{0}\" from deactivated plug-in \"{1}\".
+plugin.loadClassError = Plug-in {0} was unable to load class {1}.
+plugin.instantiateClassError = Plug-in \"{0}\" was unable to instantiate class \"{1}\".
+plugin.initObjectError = Plug-in \"{0}\" was unable to execute setInitializationData on an instance of \"{1}\".
+plugin.bundleNotFound = Plug-in \"{0}\" could not find resource bundle \"{1}\".
+plugin.notPluginClass = Supplied runtime class \"{0}\" does not extend class Plugin.
+plugin.startupProblems = Problems encountered starting up plug-in: \"{0}\".
+plugin.pluginDisabled = Attempt to activate a disabled plug-in: \"{0}\".
+plugin.unableToResolve = Unable to resolve plug-in registry.
+plugin.mismatchRuntime = Runtime class declaration mismatch for plug-in: \"{0}\".
+plugin.delegatingLoaderTrouble = "Plug-in \"{0}\" activation failed while loading class \"{1}\".
+
+### parsing/resolve
+parse.error = Parsing error: \"{0}\".
+parse.errorProcessing = Error while processing \"{0}\".
+parse.errorNameLineColumn = Parsing error in \"{0}\" [line {1}, column {2}]: \"{3}\".
+parse.extPointUnknown = Unknown extension point \"{0}\" specified in plug-in \"{1}\".
+parse.extPointDisabled = Extension point \"{0}\" specified in plug-in \"{1}\" is disabled.
+parse.prereqDisabled = Plug-in \"{0}\" was disabled due to missing or disabled prerequisite plug-in \"{1}\".
+parse.unsatisfiedPrereq = Unable to satisfy prerequisite constraint from \"{0}\" to \"{1}\".
+parse.prereqLoop = Detected prerequisite loop from \"{0}\" to \"{1}\".
+parse.registryProblems = Problems encountered loading the plug-in registry.
+parse.fragmentMissingAttr = Fragment \"{0}\" ignored due to missing attributes.
+parse.fragmentMissingIdName = Fragment ignored due to missing attributes (including name and id).
+parse.pluginMissingAttr = Plug-in \"{0}\" disabled due to missing attributes.
+parse.pluginMissingIdName = Plug-in disabled due to missing attributes (including name and id).
+parse.unknownElement = Unknown element \"{1}\", found within a \"{0}\", ignored.
+parse.unknownTopElement = Unknown element \"{0}\", found at the top level, ignored.
+parse.initializationTrouble = Parser initialization using setFeature failed.
+parse.internalStack = Element/end element mismatch for element \"{0}\".
+parse.validMatch = \"{0}\" is not a valid value for the attribute \"match\". Use \"perfect\", \"equivalent\", \"compatible\" or \"greaterOrEqual\".
+parse.validExport = \"{0}\" is not a valid value for the attribute \"export\". Use \"true\" or \"false\".
+parse.unknownAttribute = Unknown attribute \"{1}\" for element \"{0}\" ignored.
+parse.missingFragmentPd = Plug-in descriptor \"{0}\" not found for fragment \"{1}\". Fragment ignored.
+parse.unsatisfiedOptPrereq = Optional prerequisite constraint from \"{0}\" to\" {1}\" ignored.
+parse.prereqOptLoop = Optional prerequisite from \"{0}\" to \"{1}\" produced loop. Prerequisite ignored.
+parse.unknownLibraryType = Unknown library type \"{0}\" for library \"{1}\".
+parse.duplicatePlugin= Two plug-ins found with the same id: \"{0}\". Ignoring duplicate at \"{1}\".
+parse.unknownEntry=Unknown element parsed by plug-in registry: \"{0}\".
+parse.nullPluginIdentifier=Plug-in not loaded due to missing id or version number: \"{0}\".
+parse.nullFragmentIdentifier=Fragment not loaded due to missing id or version number: \"{0}\".
+parse.missingPluginName=Name attribute missing from plug-in or fragment at \"{0}\".
+parse.missingPluginId=Id attribute missing from plug-in or fragment at \"{0}\".
+parse.missingPluginVersion=Version attribute missing from plug-in or fragment at \"{0}\".
+parse.missingFPName=Plug-in name attribute missing from fragment at \"{0}\".
+parse.missingFPVersion=Plug-in version attribute missing from fragment at \"{0}\".
+parse.postiveMajor=Plug-in version identifier, \"{0}\", must have a positive major (1st) component.
+parse.postiveMinor=Plug-in version identifier, \"{0}\", must have a positive minor (2nd) component.
+parse.postiveService=Plug-in version identifier, \"{0}\", must have a positive service (3rd) component.
+parse.emptyPluginVersion=A plug-in version identifier must be non-empty.
+parse.separatorStartVersion=Plug-in version identifier, \"{0}\", must not start with a separator character.
+parse.separatorEndVersion=Plug-in version identifier, \"{0}\", must not end with a separator character.
+parse.doubleSeparatorVersion=Plug-in version identifier, \"{0}\", must not contain two consecutive separator characters.
+parse.oneElementPluginVersion=Plug-in version identifier, \"{0}\", must contain at least one component.
+parse.fourElementPluginVersion=Plug-in version identifier, \"{0}\", can contain a maximum of four components.
+parse.numericMajorComponent=The major (1st) component of plug-in version identifier, \"{0}\", must be numeric.
+parse.numericMinorComponent=The minor (2nd) component of plug-in version identifier, \"{0}\", must be numeric.
+parse.numericServiceComponent=The service (3rd) component of plug-in version identifier, \"{0}\", must be numeric.
+parse.badPrereqOnFrag=Fragment \"{0}\" requires non-existent plug-in \"{1}\". Fragment ignored.
+parse.duplicateFragment=Duplicate fragment found with id \"{0}\" and version \"{1}\".
+parse.duplicateLib=Fragment \"{0}\" for plug-in \"{1}\", has added duplicate library entry \"{2}\" .
+
+### metadata
+meta.appNotInit = The application has not been initialized.
+meta.authFormatChanged = The platform's authorization database file format has changed. Cached authorization information will be lost.
+meta.couldNotCreate = Error trying to create the platform metadata area: {0}.
+meta.exceptionParsingLog = An exception occurred while parsing the log file: {0}
+meta.failCreateLock = Unable to create platform lock file: {0}.
+meta.inUse = \nThe platform metadata area is already in use by another platform instance, or there was a failure\n\
+ in deleting the old lock file. If no other platform instances are running, delete the \n\
+ lock file ({0}) and try starting the platform again.
+meta.notDir = Specified platform location \"{0}\" is not a directory.
+meta.pluginProblems = Problems occurred when invoking code from plug-in: \"{0}\".
+meta.readonly = The platform metadata area could not be written: {0}. By default the platform writes its content\nunder the current working directory when the platform is launched. Use the -data parameter to\nspecify a different content area for the platform.
+meta.readPlatformMeta = Could not read platform metadata: {0}.
+meta.registryCacheWriteProblems = Trouble writing to the registry cache file.
+meta.registryCacheReadProblems = Trouble reading from the registry cache file.
+meta.regCacheIOException = IOException encountered while writing \"{0}\".
+meta.registryCacheEOFException = Unexpected end-of-file when reading registry cache. Defaulting to not using cached file.
+meta.unableToWriteRegistry = Unable to write plug-in registry to cache.
+meta.unableToCreateCache = Unable to create output stream for registry cache.
+meta.unableToReadCache = Unable to create input stream for registry cache.
+meta.unableToCreateRegDebug = Unable to create output stream for registry debug information in \"{0}\".
+meta.unableToWriteDebugRegistry = Unable to write plug-in registry debug information to \"{0}\".
+meta.unableToReadAuthorization = Unable to read authorization database: {0}.
+meta.unableToWriteAuthorization = Unable to write to authorization database: {0}.
+meta.writePlatformMeta = Could not write platform metadata: {0}.
+meta.invalidRegDebug = Unable to create file \"{0}\" for plug-in registry debug information.
+meta.infoRegDebug = Plug-in registry debug information created in file \"{0}\".
+meta.unableToDeleteCache = Unable to delete registry cache file \"{0}\".
+meta.writeVersion = Unable to write workspace version file: \"{0}\".
+meta.versionCheckRun = Unable to run the version check application: \"{0}\".
+meta.checkVersion = Exception trying to read version from file: \"{0}\".
+
+### URL
+url.badVariant=Unsupported \"platform:\" protocol variation \"{0}\".
+url.resolveFragment=Unable to resolve fragment \"{0}\".
+url.resolvePlugin=Unable to resolve plug-in \"{0}\".
+
+### Preferences
+preferences.errorReading=Error reading exported preferences file: {0}. {1}
+preferences.errorWriting=Error writing preference file {0}. {1}
+preferences.fileNotFound=Preference export file not found: {0}.
+preferences.incompatible=The preference file contains preferences for version \"{0}\" of plug-in \"{1}\", but version \"{2}\" is currently installed.
+preferences.invalidProperty=The preference export file contained an invalid entry: {0}={1}.
+preferences.validate=Some preferences may not be compatible with the currently installed plug-ins.
diff --git a/gnu/testlet/java/util/zip/ZipEntry/CVS/Entries b/gnu/testlet/java/util/zip/ZipEntry/CVS/Entries
new file mode 100644
index 00000000..dd03faa6
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/CVS/Entries
@@ -0,0 +1,5 @@
+/Size.java/1.1/Wed Jan 5 20:22:24 2005//
+/newZipEntry.java/1.1/Fri Feb 21 12:39:20 2003//
+/setComment.java/1.2/Fri Apr 27 15:58:35 2012//
+/time.java/1.1/Sat Jun 5 20:04:13 2004//
+D
diff --git a/gnu/testlet/java/util/zip/ZipEntry/CVS/Repository b/gnu/testlet/java/util/zip/ZipEntry/CVS/Repository
new file mode 100644
index 00000000..23814906
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/ZipEntry
diff --git a/gnu/testlet/java/util/zip/ZipEntry/CVS/Root b/gnu/testlet/java/util/zip/ZipEntry/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/ZipEntry/Size.java b/gnu/testlet/java/util/zip/ZipEntry/Size.java
new file mode 100644
index 00000000..3fab3b22
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/Size.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2005 Free Software Foundation
+// Contributed by Tom Tromey <tromey@redhat.com>
+
+// 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.java.util.zip.ZipEntry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+
+public class Size implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ ZipEntry entry = new ZipEntry("liver");
+ harness.check(entry.getCompressedSize(), -1,
+ "default compressed size is -1");
+
+ entry.setCompressedSize(5);
+ harness.check(entry.getCompressedSize(), 5, "get and set compressed size");
+
+ boolean exception;
+ try
+ {
+ entry.setCompressedSize(-1);
+ exception = false;
+ }
+ catch (IllegalArgumentException _)
+ {
+ exception = true;
+ }
+ harness.check(!exception, "set compressed size to -1");
+
+ try
+ {
+ entry.setCompressedSize(-7);
+ exception = false;
+ }
+ catch (IllegalArgumentException _)
+ {
+ exception = true;
+ }
+ harness.check(!exception, "set compressed size to -7");
+ harness.check(entry.getCompressedSize(), -7, "get compressed size as -7");
+
+ long val = 5L + Integer.MAX_VALUE;
+ try
+ {
+ entry.setCompressedSize(val);
+ exception = false;
+ }
+ catch (IllegalArgumentException _)
+ {
+ exception = true;
+ }
+ harness.check(!exception, "set compressed size to long value");
+ harness.check(entry.getCompressedSize(), val, "get long compressed size");
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipEntry/newZipEntry.java b/gnu/testlet/java/util/zip/ZipEntry/newZipEntry.java
new file mode 100644
index 00000000..8db91eaa
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/newZipEntry.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.util.zip.ZipEntry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+
+public class newZipEntry implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean exception;
+ try
+ {
+ new ZipEntry(new String (new char [0xFFFF + 1]));
+ exception = false;
+ }
+ catch (IllegalArgumentException _)
+ {
+ exception = true;
+ }
+
+ harness.check(exception, "name larger then 65535 chars");
+
+ try
+ {
+ new ZipEntry((String)null);
+ exception = false;
+ }
+ catch (NullPointerException _)
+ {
+ exception = true;
+ }
+
+ harness.check(exception, "name is null");
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipEntry/setComment.java b/gnu/testlet/java/util/zip/ZipEntry/setComment.java
new file mode 100644
index 00000000..47309663
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/setComment.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.util.zip.ZipEntry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+
+public class setComment implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean jdk7 = conformToJDK17();
+ ZipEntry entry = new ZipEntry("test");
+ harness.check(entry.getComment(), null, "default comment is null");
+
+ entry.setComment("abc");
+ harness.check(entry.getComment(), "abc", "get and set normal comment");
+
+ boolean exception;
+ try
+ {
+ entry.setComment(new String (new char [0xFFFF + 1]));
+ if (jdk7) {
+ // should be 0xFFFF in case of JDK7
+ exception = entry.getComment().length() != 0xFFFF;
+ }
+ else
+ {
+ exception = false;
+ }
+ }
+ catch (IllegalArgumentException _)
+ {
+ // JDK6 should throw this exception, but JDK7 can not
+ exception = !jdk7;
+ }
+ harness.check(exception, "comment larger then 65535 chars");
+
+ entry.setComment(null);
+ harness.check(entry.getComment(), null, "get and set null comment");
+ }
+
+ /**
+ * Returns true if tested JRE conformns to JDK 1.7.
+ * @author: Mark Wielaard
+ */
+ private static boolean conformToJDK17()
+ {
+ String[] javaVersion = System.getProperty("java.version").split("\\.");
+ String vendorID = System.getProperty("java.vendor");
+ // test of OpenJDK
+ if ("Sun Microsystems Inc.".equals(vendorID))
+ {
+ return Long.parseLong(javaVersion[1]) >= 7;
+ }
+ return true;
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipEntry/time.java b/gnu/testlet/java/util/zip/ZipEntry/time.java
new file mode 100644
index 00000000..8436e433
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipEntry/time.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 Free Software Foundation
+// Contributed by Jerry Quinn (jlquinn@gcc.gnu.org)
+
+// 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.java.util.zip.ZipEntry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+
+public class time implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ ZipEntry entry = new ZipEntry("test");
+
+ // dostime 1e538a
+ // dostimes are even seconds
+ long t = 1086325228000L;
+ entry.setTime(t);
+ long t1 = entry.getTime();
+ harness.check(t, t1, "setTime or getTime broken");
+
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipFile/CVS/Entries b/gnu/testlet/java/util/zip/ZipFile/CVS/Entries
new file mode 100644
index 00000000..fb30376d
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/CVS/Entries
@@ -0,0 +1,4 @@
+/DirEntryTest.java/1.1/Sun Dec 12 19:04:12 2004//
+/NoEntryTest.java/1.2/Mon Jun 28 12:08:10 2004//
+/newZipFile.java/1.2/Thu Jan 27 19:04:50 2005//
+D
diff --git a/gnu/testlet/java/util/zip/ZipFile/CVS/Repository b/gnu/testlet/java/util/zip/ZipFile/CVS/Repository
new file mode 100644
index 00000000..1031b091
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/ZipFile
diff --git a/gnu/testlet/java/util/zip/ZipFile/CVS/Root b/gnu/testlet/java/util/zip/ZipFile/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/ZipFile/DirEntryTest.java b/gnu/testlet/java/util/zip/ZipFile/DirEntryTest.java
new file mode 100644
index 00000000..a986b3e7
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/DirEntryTest.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 Free Software Foundation
+// Contributed by Robin Green <greenrd@greenrd.org>
+
+// 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.java.util.zip.ZipFile;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.zip.*;
+import java.io.*;
+
+public class DirEntryTest implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ File temp = File.createTempFile ("NoEntryTest", ".zip");
+ temp.deleteOnExit ();
+ ZipOutputStream zout =
+ new ZipOutputStream(new FileOutputStream (temp));
+ ZipEntry ze = new ZipEntry ("dir/");
+ zout.putNextEntry (ze);
+ zout.close();
+
+ ZipFile zf = new ZipFile (temp);
+ harness.check (zf.getEntry ("dir/").getName(), "dir/", "getEntry(\"dir/\")");
+ harness.check (zf.getEntry ("dir").getName(), "dir", "getEntry(\"dir\")");
+ }
+ catch (Exception ex)
+ {
+ harness.debug (ex);
+ harness.check (false);
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java b/gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java
new file mode 100644
index 00000000..e34b6245
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/NoEntryTest.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2004 Free Software Foundation
+// Contributed by Anthony Green <green@redhat.com>
+
+// 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.java.util.zip.ZipFile;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.zip.*;
+import java.io.*;
+
+public class NoEntryTest implements Testlet
+{
+ public void test (TestHarness harness)
+ {
+ boolean pass = false;
+
+ try
+ {
+ File temp = File.createTempFile ("NoEntryTest", ".zip");
+ temp.deleteOnExit ();
+ ZipOutputStream zout =
+ new ZipOutputStream(new FileOutputStream (temp));
+ ZipEntry ze = new ZipEntry ("one");
+ zout.putNextEntry (ze);
+ zout.close();
+
+ ZipFile zf = new ZipFile (temp);
+ ze = new ZipEntry ("this/does/not/exist");
+ InputStream is = zf.getInputStream (ze);
+
+ if (is == null)
+ pass = true;
+ }
+ catch (Exception ex)
+ {
+ }
+
+ harness.check (pass, "getInputStream for missing ZipEntry returns null");
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipFile/newZipFile.java b/gnu/testlet/java/util/zip/ZipFile/newZipFile.java
new file mode 100644
index 00000000..3aea6881
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipFile/newZipFile.java
@@ -0,0 +1,136 @@
+// Tags: JDK1.1
+
+// Copyright (C) 2003 Free Software Foundation
+// Contributed by Mark Wielaard (mark@klomp.org)
+
+// 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.java.util.zip.ZipFile;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.io.*;
+import java.util.zip.*;
+
+public class newZipFile implements Testlet
+{
+ private TestHarness harness;
+ private String zipname, nozipname;
+
+ private File tmpdir, tmpfile, tmpfile2;
+
+ private void setup() throws IOException
+ {
+ String tmp = harness.getTempDirectory();
+ tmpdir = new File(tmp + File.separator + "mauve-testdir");
+ if (!tmpdir.mkdir() && !tmpdir.exists())
+ throw new IOException("Could not create: " + tmpdir);
+
+ tmpfile = new File(tmpdir, "test.zip");
+ if (!tmpfile.delete() && tmpfile.exists())
+ throw new IOException("Could not remove (old): " + tmpfile);
+ tmpfile.createNewFile();
+
+ ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(tmpfile));
+ zos.putNextEntry(new ZipEntry("dummy"));
+ zos.close();
+
+ zipname = tmpfile.toString();
+
+ tmpfile2 = new File(tmpdir, "test.tmp");
+ if (!tmpfile2.delete() && tmpfile2.exists())
+ throw new IOException("Could not remove (old): " + tmpfile2);
+ tmpfile2.createNewFile();
+
+ FileOutputStream fos = new FileOutputStream(tmpfile2);
+ fos.write(new byte [] { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4 });
+ fos.close();
+
+ nozipname = tmpfile2.toString();
+ }
+
+ private void tearDown()
+ {
+ if (tmpdir != null && tmpdir.exists())
+ {
+ if (tmpfile != null && tmpfile.exists())
+ tmpfile.delete();
+ if (tmpfile2 != null && tmpfile2.exists())
+ tmpfile2.delete();
+ tmpdir.delete();
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ this.harness = harness;
+ try
+ {
+ setup();
+ ZipFile zf = new ZipFile(zipname);
+ harness.check(zf.getName(), zipname);
+
+ zf = new ZipFile(new File(zipname));
+ harness.check(zf.getName(), zipname);
+
+ boolean exception;
+ try
+ {
+ new ZipFile((String)null);
+ exception = false;
+ }
+ catch (NullPointerException _)
+ {
+ exception = true;
+ }
+ harness.check(exception, "name is null");
+
+ try
+ {
+ new ZipFile((File)null);
+ exception = false;
+ }
+ catch (NullPointerException _)
+ {
+ exception = true;
+ }
+ harness.check(exception, "name is null");
+
+ try
+ {
+ new ZipFile(nozipname);
+ exception = false;
+ }
+ catch (ZipException _)
+ {
+ exception = true;
+ }
+ harness.check(exception, "non-zipfile gets rejected");
+ }
+ catch (IOException ioe)
+ {
+ harness.check(false, ioe.toString());
+ harness.debug(ioe);
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/CVS/Entries b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Entries
new file mode 100644
index 00000000..24580154
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Entries
@@ -0,0 +1,4 @@
+/basic.java/1.3/Thu Jun 3 14:31:18 2004//
+/close.java/1.2/Thu Jun 3 14:31:18 2004//
+/reference.zip/1.1/Wed May 19 16:13:14 1999/-kb/
+D
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/CVS/Repository b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Repository
new file mode 100644
index 00000000..1f0a1120
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/java/util/zip/ZipInputStream
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/CVS/Root b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/basic.java b/gnu/testlet/java/util/zip/ZipInputStream/basic.java
new file mode 100644
index 00000000..a3728c95
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/basic.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1999 Cygnus Solutions
+
+// 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.java.util.zip.ZipInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+import java.io.*;
+
+public class basic implements Testlet
+{
+ private String readall (InputStream in)
+ {
+ StringBuffer sb = new StringBuffer ();
+ byte[] buf = new byte[512];
+ int n;
+ try
+ {
+ while ((n = in.read(buf)) > 0)
+ sb.append(new String (buf, 0, n, "8859_1"));
+ }
+ catch (IOException _)
+ {
+ }
+ return sb.toString ();
+ }
+
+ public String read_a_file (ZipInputStream zis)
+ {
+ try
+ {
+ ZipEntry ze = zis.getNextEntry();
+ if (ze == null)
+ return "done";
+ return readall (zis);
+ }
+ catch (IOException _)
+ {
+ return "";
+ }
+ }
+
+ public void read_contents (TestHarness harness, ZipInputStream zis)
+ {
+ String s = read_a_file (zis);
+ harness.check (s, "Contents of file 1\n");
+ s = read_a_file (zis);
+ harness.check (s, "Contents of file 2\n");
+ s = read_a_file (zis);
+ harness.check (s, "done");
+ }
+
+ public void read_from_end(TestHarness harness, ZipInputStream zis)
+ {
+ try {
+ ZipEntry ze = zis.getNextEntry();
+ ze = zis.getNextEntry();
+ byte[] b = new byte["Contents of file 2\n".length()];
+ int count = zis.read(b, 0, b.length);
+ harness.check (new String(b), "Contents of file 2\n");
+ harness.check(count, b.length);
+
+ //read 0 bytes
+ count = zis.read(b, 0, 0);
+ harness.check(count, 0);
+
+ //read 1 byte past the end
+ count = zis.read(b,0,1);
+ harness.check(count, -1);
+ zis.close();
+ } catch(IOException e)
+ {
+ harness.check(false, "failed all read_from_end tests");
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("reading zip file");
+ try
+ {
+ read_contents (harness,
+ new ZipInputStream (harness.getResourceStream ("gnu#testlet#java#util#zip#ZipInputStream#reference.zip")));
+ }
+ catch (gnu.testlet.ResourceNotFoundException _)
+ {
+ // FIXME: all tests should fail.
+ harness.check(false, "all basic tests failed");
+ }
+
+ harness.checkPoint ("checking 0 byte read");
+
+ try
+ {
+ read_from_end (harness,
+ new ZipInputStream (harness.getResourceStream ("gnu#testlet#java#util#zip#ZipInputStream#reference.zip")));
+ }
+ catch (gnu.testlet.ResourceNotFoundException _)
+ {
+ // FIXME: all tests should fail.
+ harness.check(false, "all read tests failed");
+ }
+
+ harness.checkPoint ("writing and re-reading");
+
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/close.java b/gnu/testlet/java/util/zip/ZipInputStream/close.java
new file mode 100644
index 00000000..27aade89
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/close.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.1
+
+// Copyright (C) 1999, 2000 Free Software Foundation
+
+// 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.java.util.zip.ZipInputStream;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.zip.*;
+import java.io.*;
+
+public class close implements Testlet
+{
+ private String readall (InputStream in)
+ {
+ StringBuffer sb = new StringBuffer ();
+ byte[] buf = new byte[512];
+ int n;
+ try
+ {
+ in.close ();
+ while ((n = in.read(buf)) > 0)
+ sb.append(new String (buf, 0, n, "8859_1"));
+ }
+ catch (IOException _)
+ {
+ }
+ return sb.toString ();
+ }
+
+ public String read_a_file (ZipInputStream zis)
+ {
+ try
+ {
+ ZipEntry ze = zis.getNextEntry();
+ if (ze == null)
+ return "done";
+ return readall (zis);
+ }
+ catch (IOException _)
+ {
+ return "";
+ }
+ }
+
+ public void read_contents (TestHarness harness, ZipInputStream zis)
+ {
+ String s = read_a_file (zis);
+ harness.check (s, "");
+ s = read_a_file (zis);
+ harness.check (s, "");
+ s = read_a_file (zis);
+ harness.check (s, "");
+ }
+
+ public void test (TestHarness harness)
+ {
+ harness.checkPoint ("reading zip file");
+ try
+ {
+ read_contents (harness,
+ new ZipInputStream (harness.getResourceStream ("gnu#testlet#java#util#zip#ZipInputStream#reference.zip")));
+ }
+ catch (gnu.testlet.ResourceNotFoundException _)
+ {
+ // FIXME: all tests should fail.
+ }
+
+ harness.checkPoint ("writing and re-reading");
+ }
+}
diff --git a/gnu/testlet/java/util/zip/ZipInputStream/reference.zip b/gnu/testlet/java/util/zip/ZipInputStream/reference.zip
new file mode 100644
index 00000000..20f0ae87
--- /dev/null
+++ b/gnu/testlet/java/util/zip/ZipInputStream/reference.zip
Binary files differ
diff --git a/gnu/testlet/javax/CVS/Entries b/gnu/testlet/javax/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/CVS/Entries.Log b/gnu/testlet/javax/CVS/Entries.Log
new file mode 100644
index 00000000..7d53eb4a
--- /dev/null
+++ b/gnu/testlet/javax/CVS/Entries.Log
@@ -0,0 +1,12 @@
+A D/accessibility////
+A D/crypto////
+A D/imageio////
+A D/management////
+A D/naming////
+A D/net////
+A D/print////
+A D/rmi////
+A D/security////
+A D/sound////
+A D/swing////
+A D/xml////
diff --git a/gnu/testlet/javax/CVS/Repository b/gnu/testlet/javax/CVS/Repository
new file mode 100644
index 00000000..3cc35b5f
--- /dev/null
+++ b/gnu/testlet/javax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax
diff --git a/gnu/testlet/javax/CVS/Root b/gnu/testlet/javax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Entries b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Entries
new file mode 100644
index 00000000..ec1e4479
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Entries
@@ -0,0 +1,3 @@
+/TestAccessibleContext.java/1.1/Mon Mar 13 15:07:32 2006//
+/getAccessibleRelationSet.java/1.1/Mon Mar 13 15:07:32 2006//
+D
diff --git a/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Repository b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Repository
new file mode 100644
index 00000000..cf43149b
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/accessibility/AccessibleContext
diff --git a/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Root b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/AccessibleContext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/accessibility/AccessibleContext/TestAccessibleContext.java b/gnu/testlet/javax/accessibility/AccessibleContext/TestAccessibleContext.java
new file mode 100644
index 00000000..4054a71b
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/AccessibleContext/TestAccessibleContext.java
@@ -0,0 +1,71 @@
+/* TestAccessibleContext.java -- An AccessibleContext implementation for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.accessibility.AccessibleContext;
+
+import java.util.Locale;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleStateSet;
+
+/**
+ * A concrete subclass of AccessibleContext for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class TestAccessibleContext extends AccessibleContext
+{
+
+ public AccessibleRole getAccessibleRole()
+ {
+ return null;
+ }
+
+ public AccessibleStateSet getAccessibleStateSet()
+ {
+ return null;
+ }
+
+ public int getAccessibleIndexInParent()
+ {
+ return 0;
+ }
+
+ public int getAccessibleChildrenCount()
+ {
+ return 0;
+ }
+
+ public Accessible getAccessibleChild(int i)
+ {
+ return null;
+ }
+
+ public Locale getLocale()
+ {
+ return null;
+ }
+
+}
diff --git a/gnu/testlet/javax/accessibility/AccessibleContext/getAccessibleRelationSet.java b/gnu/testlet/javax/accessibility/AccessibleContext/getAccessibleRelationSet.java
new file mode 100644
index 00000000..ae2444b7
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/AccessibleContext/getAccessibleRelationSet.java
@@ -0,0 +1,52 @@
+/* getAccessibleRelationSet.java -- Tests the getAccesibleRelationSet method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestAccessibleContext
+
+package gnu.testlet.javax.accessibility.AccessibleContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the default implementation of
+ * AccessibleContext.getAccessibleRelationSet().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ *
+ */
+public class getAccessibleRelationSet implements Testlet
+{
+
+ /**
+ * The entry point in that class.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestAccessibleContext ctx = new TestAccessibleContext();
+ harness.check(ctx.getAccessibleRelationSet() != null);
+ harness.check(ctx.getAccessibleRelationSet().size(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/accessibility/CVS/Entries b/gnu/testlet/javax/accessibility/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/accessibility/CVS/Entries.Log b/gnu/testlet/javax/accessibility/CVS/Entries.Log
new file mode 100644
index 00000000..743f6d1d
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleContext////
diff --git a/gnu/testlet/javax/accessibility/CVS/Repository b/gnu/testlet/javax/accessibility/CVS/Repository
new file mode 100644
index 00000000..e55f7156
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/accessibility
diff --git a/gnu/testlet/javax/accessibility/CVS/Root b/gnu/testlet/javax/accessibility/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/accessibility/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/CVS/Entries b/gnu/testlet/javax/crypto/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/CVS/Entries.Log b/gnu/testlet/javax/crypto/CVS/Entries.Log
new file mode 100644
index 00000000..7273db36
--- /dev/null
+++ b/gnu/testlet/javax/crypto/CVS/Entries.Log
@@ -0,0 +1,11 @@
+A D/assembly////
+A D/cipher////
+A D/jce////
+A D/key////
+A D/keyring////
+A D/mac////
+A D/mode////
+A D/pad////
+A D/prng////
+A D/sasl////
+A D/spec////
diff --git a/gnu/testlet/javax/crypto/CVS/Repository b/gnu/testlet/javax/crypto/CVS/Repository
new file mode 100644
index 00000000..cbc1111a
--- /dev/null
+++ b/gnu/testlet/javax/crypto/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto
diff --git a/gnu/testlet/javax/crypto/CVS/Root b/gnu/testlet/javax/crypto/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/assembly/CVS/Entries b/gnu/testlet/javax/crypto/assembly/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/assembly/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/assembly/CVS/Repository b/gnu/testlet/javax/crypto/assembly/CVS/Repository
new file mode 100644
index 00000000..028d30cf
--- /dev/null
+++ b/gnu/testlet/javax/crypto/assembly/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/assembly
diff --git a/gnu/testlet/javax/crypto/assembly/CVS/Root b/gnu/testlet/javax/crypto/assembly/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/assembly/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/cipher/CVS/Entries b/gnu/testlet/javax/crypto/cipher/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/cipher/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/cipher/CVS/Repository b/gnu/testlet/javax/crypto/cipher/CVS/Repository
new file mode 100644
index 00000000..b2398f15
--- /dev/null
+++ b/gnu/testlet/javax/crypto/cipher/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/cipher
diff --git a/gnu/testlet/javax/crypto/cipher/CVS/Root b/gnu/testlet/javax/crypto/cipher/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/cipher/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/jce/CVS/Entries b/gnu/testlet/javax/crypto/jce/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/jce/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/jce/CVS/Repository b/gnu/testlet/javax/crypto/jce/CVS/Repository
new file mode 100644
index 00000000..d1d0cf2c
--- /dev/null
+++ b/gnu/testlet/javax/crypto/jce/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/jce
diff --git a/gnu/testlet/javax/crypto/jce/CVS/Root b/gnu/testlet/javax/crypto/jce/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/jce/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/key/CVS/Entries b/gnu/testlet/javax/crypto/key/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/key/CVS/Entries.Log b/gnu/testlet/javax/crypto/key/CVS/Entries.Log
new file mode 100644
index 00000000..f7f9a89c
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/dh////
+A D/srp6////
diff --git a/gnu/testlet/javax/crypto/key/CVS/Repository b/gnu/testlet/javax/crypto/key/CVS/Repository
new file mode 100644
index 00000000..9a33fb71
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/key
diff --git a/gnu/testlet/javax/crypto/key/CVS/Root b/gnu/testlet/javax/crypto/key/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/key/dh/CVS/Entries b/gnu/testlet/javax/crypto/key/dh/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/dh/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/key/dh/CVS/Repository b/gnu/testlet/javax/crypto/key/dh/CVS/Repository
new file mode 100644
index 00000000..1114d572
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/dh/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/key/dh
diff --git a/gnu/testlet/javax/crypto/key/dh/CVS/Root b/gnu/testlet/javax/crypto/key/dh/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/dh/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/key/srp6/CVS/Entries b/gnu/testlet/javax/crypto/key/srp6/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/srp6/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/key/srp6/CVS/Repository b/gnu/testlet/javax/crypto/key/srp6/CVS/Repository
new file mode 100644
index 00000000..c80fbb8b
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/srp6/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/key/srp6
diff --git a/gnu/testlet/javax/crypto/key/srp6/CVS/Root b/gnu/testlet/javax/crypto/key/srp6/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/key/srp6/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/keyring/CVS/Entries b/gnu/testlet/javax/crypto/keyring/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/keyring/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/keyring/CVS/Repository b/gnu/testlet/javax/crypto/keyring/CVS/Repository
new file mode 100644
index 00000000..8458362c
--- /dev/null
+++ b/gnu/testlet/javax/crypto/keyring/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/keyring
diff --git a/gnu/testlet/javax/crypto/keyring/CVS/Root b/gnu/testlet/javax/crypto/keyring/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/keyring/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/mac/CVS/Entries b/gnu/testlet/javax/crypto/mac/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mac/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/mac/CVS/Repository b/gnu/testlet/javax/crypto/mac/CVS/Repository
new file mode 100644
index 00000000..67547b06
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mac/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/mac
diff --git a/gnu/testlet/javax/crypto/mac/CVS/Root b/gnu/testlet/javax/crypto/mac/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mac/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/mode/CVS/Entries b/gnu/testlet/javax/crypto/mode/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mode/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/mode/CVS/Repository b/gnu/testlet/javax/crypto/mode/CVS/Repository
new file mode 100644
index 00000000..620859b0
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mode/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/mode
diff --git a/gnu/testlet/javax/crypto/mode/CVS/Root b/gnu/testlet/javax/crypto/mode/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/mode/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/pad/CVS/Entries b/gnu/testlet/javax/crypto/pad/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/pad/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/pad/CVS/Repository b/gnu/testlet/javax/crypto/pad/CVS/Repository
new file mode 100644
index 00000000..00d5bef9
--- /dev/null
+++ b/gnu/testlet/javax/crypto/pad/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/pad
diff --git a/gnu/testlet/javax/crypto/pad/CVS/Root b/gnu/testlet/javax/crypto/pad/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/pad/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/prng/CVS/Entries b/gnu/testlet/javax/crypto/prng/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/prng/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/prng/CVS/Repository b/gnu/testlet/javax/crypto/prng/CVS/Repository
new file mode 100644
index 00000000..02622993
--- /dev/null
+++ b/gnu/testlet/javax/crypto/prng/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/prng
diff --git a/gnu/testlet/javax/crypto/prng/CVS/Root b/gnu/testlet/javax/crypto/prng/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/prng/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/sasl/CVS/Entries b/gnu/testlet/javax/crypto/sasl/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/sasl/CVS/Entries.Log b/gnu/testlet/javax/crypto/sasl/CVS/Entries.Log
new file mode 100644
index 00000000..e567c28c
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/srp////
diff --git a/gnu/testlet/javax/crypto/sasl/CVS/Repository b/gnu/testlet/javax/crypto/sasl/CVS/Repository
new file mode 100644
index 00000000..3d6b6b59
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/sasl
diff --git a/gnu/testlet/javax/crypto/sasl/CVS/Root b/gnu/testlet/javax/crypto/sasl/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/sasl/srp/CVS/Entries b/gnu/testlet/javax/crypto/sasl/srp/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/srp/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/crypto/sasl/srp/CVS/Repository b/gnu/testlet/javax/crypto/sasl/srp/CVS/Repository
new file mode 100644
index 00000000..80de2373
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/srp/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/sasl/srp
diff --git a/gnu/testlet/javax/crypto/sasl/srp/CVS/Root b/gnu/testlet/javax/crypto/sasl/srp/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/sasl/srp/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/spec/CVS/Entries b/gnu/testlet/javax/crypto/spec/CVS/Entries
new file mode 100644
index 00000000..8b5872b9
--- /dev/null
+++ b/gnu/testlet/javax/crypto/spec/CVS/Entries
@@ -0,0 +1,3 @@
+/TestOfPBEKeySpec.java/1.1/Fri Jul 7 11:46:32 2006//
+/TestOfSecretKeySpec.java/1.1/Tue Jul 11 19:26:38 2006//
+D
diff --git a/gnu/testlet/javax/crypto/spec/CVS/Repository b/gnu/testlet/javax/crypto/spec/CVS/Repository
new file mode 100644
index 00000000..81e5a913
--- /dev/null
+++ b/gnu/testlet/javax/crypto/spec/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/crypto/spec
diff --git a/gnu/testlet/javax/crypto/spec/CVS/Root b/gnu/testlet/javax/crypto/spec/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/crypto/spec/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/crypto/spec/TestOfPBEKeySpec.java b/gnu/testlet/javax/crypto/spec/TestOfPBEKeySpec.java
new file mode 100644
index 00000000..b1748e79
--- /dev/null
+++ b/gnu/testlet/javax/crypto/spec/TestOfPBEKeySpec.java
@@ -0,0 +1,414 @@
+/* TestOfPBEKeySpec.java -- Test for PBEKeySpec
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: GNU-CRYPTO JDK1.4
+
+
+package gnu.testlet.javax.crypto.spec;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.crypto.spec.PBEKeySpec;
+
+public class TestOfPBEKeySpec
+ implements Testlet
+{
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructorP(harness);
+ testConstructorPSI(harness);
+ testConstructorPSIK(harness);
+ testPassword(harness);
+ testSalt(harness);
+ testIterationCount(harness);
+ testKeyLength(harness);
+ }
+
+ /**
+ * Test the constructor PBEKeySpec(char[] password).
+ */
+ private void testConstructorP(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password);
+
+ harness.check(pbeKeySpec.getSalt() == null,
+ "salt MUST have a default value of null");
+ harness.check(pbeKeySpec.getIterationCount() == 0,
+ "iterationCount MUST have a default value of 0");
+ harness.check(pbeKeySpec.getKeyLength() == 0,
+ "keyLength MUST have a default value of 0");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("PBEKeySpec() with valid password failed: " + x);
+ }
+
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(null);
+
+ char[] pbePassword = pbeKeySpec.getPassword();
+ harness.check(pbePassword.length == 0,
+ "a null password MUST produce an empty char array");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ /**
+ * Test the constructor
+ * PBEKeySpec(char[] password, byte[] salt, int iterationCount).
+ */
+ private void testConstructorPSI(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ byte[] salt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ int iterationCount = 102;
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password, salt, iterationCount);
+
+ harness.check(pbeKeySpec.getKeyLength() == 0,
+ "keyLength MUST have a default value of 0");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("PBEKeySpec() with valid password, salt and "
+ + "iterationCount failed:" + x);
+ }
+
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(null, salt, iterationCount);
+ char[] pbePassword = pbeKeySpec.getPassword();
+ harness.check(pbePassword.length == 0,
+ "a null password MUST produce an empty char array");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ String msg = "PBEKeySpec() MUST throw NullPointerException if salt is null";
+ try
+ {
+ new PBEKeySpec(password, null, iterationCount);
+ harness.fail(msg);
+ }
+ catch (NullPointerException npe)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ msg = "PBEKeySpec() MUST throw IllegalArgumentException if salt is an "
+ + "empty array";
+ try
+ {
+ byte[] emptySalt = new byte[0];
+ new PBEKeySpec(password, emptySalt, iterationCount);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ msg = "PBEKeySpec() MUST throw IllegalArgumentException if iterationCount "
+ + "is negative";
+ try
+ {
+ new PBEKeySpec(password, salt, - 1);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ /**
+ * Test the constructor
+ * PBEKeySpec(char[] password, byte[] salt, int iterationCount, int keyLength).
+ */
+ private void testConstructorPSIK(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ byte[] salt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ int iterationCount = 102;
+ int keyLength = 4;
+ try
+ {
+ new PBEKeySpec(password, salt, iterationCount, keyLength);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("PBEKeySpec() with valid password, salt, iterationCount "
+ + "and keyLength failed: " + x);
+ }
+
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(null, salt, iterationCount,
+ keyLength);
+ char[] pbePassword = pbeKeySpec.getPassword();
+ harness.check(pbePassword.length == 0,
+ "a null password MUST produce an empty char array");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("PBEKeySpec(password, salt, iterationcount, keyLength) "
+ + "with a null password failed: " + x);
+ }
+
+ String msg = "PBEKeySpec() MUST throw NullPointerException if salt is null";
+ try
+ {
+ new PBEKeySpec(password, null, iterationCount, keyLength);
+ harness.fail(msg);
+ }
+ catch (NullPointerException npe)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ msg = "PBEKeySpec() MUST throw IllegalArgumentException if salt is an "
+ + "empty array";
+ try
+ {
+ byte[] emptySalt = new byte[0];
+ new PBEKeySpec(password, emptySalt, iterationCount, keyLength);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ msg = "PBEKeySpec() MUST throw IllegalArgumentException if iterationCount "
+ + "is negative";
+ try
+ {
+ new PBEKeySpec(password, salt, - 1, keyLength);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+
+ msg = "PBEKeySpec() MUST throw IllegalArgumentException if keyLength is "
+ + "negative";
+ try
+ {
+ new PBEKeySpec(password, salt, iterationCount, -1);
+ harness.fail(msg);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ harness.check(true, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(String.valueOf(x));
+ }
+ }
+
+ /**
+ * Test that PBEKeySpec is indeed storing a copy of the password and not the
+ * password itself.
+ */
+ private void testPassword(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password);
+
+ // check to make sure PBEKeySpec password copy matches
+ harness.check(Arrays.equals(pbeKeySpec.getPassword(), password),
+ "Value returned from getPassword() MUST equal the actual "
+ + "password");
+
+ char[] passwordCopy = pbeKeySpec.getPassword();
+ for (int i = 0; i < passwordCopy.length; i++)
+ passwordCopy[i] = 'a';
+ char[] originalPassword = "HelloWorld".toCharArray();
+
+ harness.check(Arrays.equals(password, originalPassword),
+ "Changing the stored password changed the actual "
+ + "password. MUST store a COPY of the password");
+ harness.check(Arrays.equals(pbeKeySpec.getPassword(), originalPassword),
+ "Changing the value returned from getPassword() changed"
+ + " the stored password. MUST return a COPY of the "
+ + "password");
+ // this should clear just the copy of password, not the password itself
+ pbeKeySpec.clearPassword();
+ harness.check(Arrays.equals(password, "HelloWorld".toCharArray()),
+ "clearPassword() cleared the actual password. MUST store "
+ + "a COPY of the password");
+
+ String msg = "Calling getPassword() after clearPassword() MUST throw "
+ + "IllegalStateException";
+ try
+ {
+ pbeKeySpec.getPassword();
+ harness.fail(msg);
+ }
+ catch (IllegalStateException ise)
+ {
+ harness.check(true, msg);
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testPassword(): " + x);
+ }
+ }
+
+ /**
+ * Test that PBEKeySpec is indeed storing a copy of the salt and not the salt
+ * itself.
+ */
+ private void testSalt(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ byte[] salt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ int iterationCount = 102;
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password, salt, iterationCount);
+
+ // check to make sure the PBEKeySpec password copy matches
+ harness.check(Arrays.equals(pbeKeySpec.getSalt(), salt),
+ "Value returned from getSalt() MUST equal actual salt");
+
+ // check that PBEKeySpec is indeed storing only a copy of the salt
+ byte[] saltCopy = pbeKeySpec.getSalt();
+ for (int i = 0; i < saltCopy.length; i++)
+ saltCopy[i] = (byte) i;
+ byte[] originalSalt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ harness.check(Arrays.equals(salt, originalSalt),
+ "Changing the stored salt changed the actual salt. "
+ + "MUST store a COPY of the salt");
+ harness.check(Arrays.equals(pbeKeySpec.getSalt(), originalSalt),
+ "Changing the value returned from getSalt() changed the "
+ + "stored salt. MUST return a COPY of the salt");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testSalt(): " + x);
+ }
+ }
+
+ /**
+ * Quick tests to verify PBEKeySpec is storing the proper IterationCount.
+ */
+ private void testIterationCount(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ byte[] salt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ int iterationCount = 102;
+ String msg = "getIterationCount() MUST match iterationCount";
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password, salt, iterationCount);
+ harness.check(pbeKeySpec.getIterationCount() == iterationCount, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testIterationCount(): " + x);
+ }
+ }
+
+ /**
+ * Quick tests to verify PBEKeySpec is storing the proper KeyLength.
+ */
+ private void testKeyLength(TestHarness harness)
+ {
+ char[] password = "HelloWorld".toCharArray();
+ byte[] salt = new byte[] { 0, 1, 1, 2, 3, 5, 8 };
+ int iterationCount = 102;
+ int keyLength = 4;
+ String msg = "getKeyLength() MUST match keyLength";
+ try
+ {
+ PBEKeySpec pbeKeySpec = new PBEKeySpec(password, salt, iterationCount,
+ keyLength);
+ harness.check(pbeKeySpec.getKeyLength() == keyLength, msg);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("testKeyLength(): " + x);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/crypto/spec/TestOfSecretKeySpec.java b/gnu/testlet/javax/crypto/spec/TestOfSecretKeySpec.java
new file mode 100644
index 00000000..a99b3799
--- /dev/null
+++ b/gnu/testlet/javax/crypto/spec/TestOfSecretKeySpec.java
@@ -0,0 +1,125 @@
+/* TestOfSecretKeySpec.java -- Tests for SecretKeySpec
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+
+package gnu.testlet.javax.crypto.spec;
+
+import javax.crypto.spec.SecretKeySpec;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class TestOfSecretKeySpec
+ implements Testlet
+{
+
+ /**
+ * Tests for SecretKeySpec.
+ * <p>
+ * <p>
+ * Note: This is not a complete coverage test for SecretKeySpec. It currently
+ * only tests the Equals() method.
+ */
+ public void test(TestHarness harness)
+ {
+ testEquals(harness);
+ }
+
+ /*
+ * Test to make sure that the equals method functions properly.
+ */
+ private void testEquals(TestHarness harness)
+ {
+
+ String algorithm = "DES";
+ String algorithm2 = "AES";
+
+ byte[] key = new byte[32];
+ for (int i = 0; i < key.length; i++)
+ key[i] = (byte) i;
+
+ byte[] key2 = new byte[32];
+ for (int i = 0; i < key2.length; i++)
+ key2[i] = (byte) i;
+
+ byte[] key3 = new byte[32];
+ for (int i = 0; i < key3.length; i++)
+ key3[i] = (byte) (i + 3);
+
+ SecretKeySpec secretKeySpec = new SecretKeySpec(key, algorithm);
+ SecretKeySpec secretKeySpec2 = new SecretKeySpec(key2, algorithm);
+ SecretKeySpec secretKeySpec3 = new SecretKeySpec(key3, algorithm);
+ SecretKeySpec secretKeySpec4 = new SecretKeySpec(key, algorithm2);
+
+ // test if two similar SecretKeySpecs are equal
+ try
+ {
+ harness.check(secretKeySpec.equals(secretKeySpec2) == true,
+ "equals(secretKeySpec2) should return true");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("equals (secretkeyspec2) : " + String.valueOf(x));
+ }
+
+ // test if two SecretKeySpecs with different keys are not equal
+ try
+ {
+ harness.check(secretKeySpec.equals(secretKeySpec3) == false,
+ "equals(secretKeySpec3) should return false");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("equals (secretkeyspec3) : " + String.valueOf(x));
+ }
+
+ // test if two SecretKeySpecs with different algorthms are not equal
+ try
+ {
+ harness.check(secretKeySpec.equals(secretKeySpec4) == false,
+ "equals(secretKeySpec4) should return false");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("equals (secretkeyspec4) : " + String.valueOf(x));
+ }
+
+ // Check if passing another object other than a SecretKeySpec will
+ // return false
+ try
+ {
+ harness.check(secretKeySpec.equals("Hello World") == false,
+ "equals (\"Hello World\") should have returned false");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("equals (\"Hello World\") : " + String.valueOf(x));
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/imageio/CVS/Entries b/gnu/testlet/javax/imageio/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/imageio/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/imageio/CVS/Entries.Log b/gnu/testlet/javax/imageio/CVS/Entries.Log
new file mode 100644
index 00000000..9d563a9e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/ImageIO////
+A D/plugins////
+A D/spi////
+A D/stream////
diff --git a/gnu/testlet/javax/imageio/CVS/Repository b/gnu/testlet/javax/imageio/CVS/Repository
new file mode 100644
index 00000000..a5deede5
--- /dev/null
+++ b/gnu/testlet/javax/imageio/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio
diff --git a/gnu/testlet/javax/imageio/CVS/Root b/gnu/testlet/javax/imageio/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmp
new file mode 100644
index 00000000..cb0ea24f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmp
new file mode 100644
index 00000000..142d220e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.png b/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.png
new file mode 100644
index 00000000..fce69f3a
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.png
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmp
new file mode 100644
index 00000000..1a18e9f7
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.png b/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.png
new file mode 100644
index 00000000..7952bc73
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.png
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmp
new file mode 100644
index 00000000..0f41534e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.png b/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.png
new file mode 100644
index 00000000..98a98605
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.png
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmp
new file mode 100644
index 00000000..123b3549
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.png b/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.png
new file mode 100644
index 00000000..da980857
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.png
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmp
new file mode 100644
index 00000000..4286ed3f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.png b/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.png
new file mode 100644
index 00000000..32298ab8
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.png
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmp
new file mode 100644
index 00000000..ce12d780
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmp b/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmp
new file mode 100644
index 00000000..fa72cd70
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/ImageIO/CVS/Entries b/gnu/testlet/javax/imageio/ImageIO/CVS/Entries
new file mode 100644
index 00000000..e692a109
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/CVS/Entries
@@ -0,0 +1,16 @@
+/Bitmap-16Bit.bmp/1.1/Wed Mar 22 20:05:49 2006//
+/Bitmap-1Bit.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-1Bit.png/1.1/Thu Sep 8 16:33:46 2011/-kb/
+/Bitmap-24Bit.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-24Bit.png/1.1/Thu Sep 8 16:33:46 2011/-kb/
+/Bitmap-32Bit.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-32Bit.png/1.1/Thu Sep 8 16:33:46 2011/-kb/
+/Bitmap-4Bit.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-4Bit.png/1.1/Thu Sep 8 16:33:46 2011/-kb/
+/Bitmap-8Bit.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-8Bit.png/1.1/Thu Sep 8 16:33:46 2011/-kb/
+/Bitmap-RLE4.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/Bitmap-RLE8.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+/ImageIOTest.java/1.3/Thu Sep 8 16:33:46 2011//
+/outputBitmap.bmp/1.1/Wed Mar 22 20:05:49 2006/-kb/
+D
diff --git a/gnu/testlet/javax/imageio/ImageIO/CVS/Repository b/gnu/testlet/javax/imageio/ImageIO/CVS/Repository
new file mode 100644
index 00000000..28fced01
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/ImageIO
diff --git a/gnu/testlet/javax/imageio/ImageIO/CVS/Root b/gnu/testlet/javax/imageio/ImageIO/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java b/gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java
new file mode 100644
index 00000000..6f77659e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/ImageIOTest.java
@@ -0,0 +1,130 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.imageio.ImageIO;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.PixelGrabber;
+import java.io.File;
+
+import javax.imageio.ImageIO;
+
+/**
+ * @author Michael Koch (konqueror@gmx.de)
+ * @author Lillian Angel (langel at redhat dot com)
+ * @author Pavel Tisnovsky (ptisnovs at redhat dot com)
+ */
+public class ImageIOTest
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ testStringData(h);
+
+ // Tests the reading/writing of various images.
+ h.checkPoint("Reading and writing of images.");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-16Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE8.bmp");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-RLE4.bmp");
+
+ // Test also working with PNG file format
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-1Bit.png");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-4Bit.png");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-8Bit.png");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-24Bit.png");
+ testReadWrite(h, "gnu/testlet/javax/imageio/ImageIO/Bitmap-32Bit.png");
+ }
+
+ private void testStringData(TestHarness h)
+ {
+ String[] stringData;
+
+ // check #1: getReaderFormatNames
+ stringData = ImageIO.getReaderFormatNames();
+ h.check(stringData.length != 0, "empty reader format names");
+
+ // check #2: getReaderMIMETypes
+ stringData = ImageIO.getReaderMIMETypes();
+ h.check(stringData.length != 0, "empty reader mime types");
+
+ // check #3: getWriterFormatNames
+ stringData = ImageIO.getWriterFormatNames();
+ h.check(stringData.length != 0, "empty writer format names");
+
+ // check #4: getWriterMIMETypes
+ stringData = ImageIO.getWriterMIMETypes();
+ h.check(stringData.length != 0, "empty writer mime types");
+ }
+
+ private void testReadWrite(TestHarness h, String picPath)
+ {
+ boolean exceptionCaught = false;
+ try
+ {
+ BufferedImage image = ImageIO.read(new File(picPath));
+
+ int width = image.getWidth(null);
+ int height = image.getHeight(null);
+ int size = width * height;
+ int[] pixels = new int[size];
+ int[] outPixels = new int[size];
+ String path = "gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmp";
+
+ // do pixel-by-pixel check only if proper writer is found and used
+ if (ImageIO.write(image, "bmp", new File(path)))
+ {
+ BufferedImage outImage = ImageIO.read(new File(path));
+ PixelGrabber pg1 = new PixelGrabber(outImage,
+ 0, 0, width, height, outPixels, 0,
+ width);
+ PixelGrabber pg2 = new PixelGrabber(image, 0, 0, width, height, pixels,
+ 0, width);
+ pg1.grabPixels();
+ pg2.grabPixels();
+
+ h.check(comparePixels(pixels, outPixels, size));
+ }
+ }
+ catch (Exception e)
+ {
+ exceptionCaught = true;
+ }
+
+ h.check(! exceptionCaught);
+ }
+
+ private boolean comparePixels(int[] a, int[] b, int size)
+ {
+ for (int i = 0; i < size; i++)
+ if (a[i] != b[i])
+ return false;
+ return true;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmp b/gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmp
new file mode 100644
index 00000000..13c41577
--- /dev/null
+++ b/gnu/testlet/javax/imageio/ImageIO/outputBitmap.bmp
Binary files differ
diff --git a/gnu/testlet/javax/imageio/plugins/CVS/Entries b/gnu/testlet/javax/imageio/plugins/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/imageio/plugins/CVS/Entries.Log b/gnu/testlet/javax/imageio/plugins/CVS/Entries.Log
new file mode 100644
index 00000000..7e931c1a
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/jpeg////
diff --git a/gnu/testlet/javax/imageio/plugins/CVS/Repository b/gnu/testlet/javax/imageio/plugins/CVS/Repository
new file mode 100644
index 00000000..524c7721
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/plugins
diff --git a/gnu/testlet/javax/imageio/plugins/CVS/Root b/gnu/testlet/javax/imageio/plugins/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Entries b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Entries
new file mode 100644
index 00000000..c97740dc
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Entries
@@ -0,0 +1,5 @@
+/TestJPEGHuffmanTable.java/1.2/Mon Apr 3 19:37:58 2006//
+/TestJPEGImageReadParam.java/1.1/Mon Apr 3 19:37:58 2006//
+/TestJPEGImageWriteParam.java/1.1/Tue Apr 4 00:52:11 2006//
+/TestJPEGQTable.java/1.2/Mon Apr 3 19:37:58 2006//
+D
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Repository b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Repository
new file mode 100644
index 00000000..70f169c7
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/plugins/jpeg
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Root b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java
new file mode 100644
index 00000000..fbf2c770
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGHuffmanTable.java
@@ -0,0 +1,254 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.imageio.plugins.jpeg;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
+
+/**
+ * Test JPEGHuffmanTable construction and static fields.
+ */
+public class TestJPEGHuffmanTable implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JPEGHuffmanTable t = null;
+ boolean constructionFailed = false;
+
+ // Some valid data for construction testing.
+ short[] ACChrominanceLengths =
+ {
+ 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77
+ };
+
+ short[] ACChrominanceValues =
+ {
+ 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06,
+ 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81,
+ 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33,
+ 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
+ 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28,
+ 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44,
+ 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56,
+ 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
+ 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a,
+ 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92,
+ 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3,
+ 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
+ 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
+ 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
+ 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+ 0xf9, 0xfa
+ };
+
+ short[] ACLuminanceLengths =
+ {
+ 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d
+ };
+
+ short[] ACLuminanceValues =
+ {
+ 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31,
+ 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32,
+ 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52,
+ 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
+ 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45,
+ 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
+ 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83,
+ 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94,
+ 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
+ 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
+ 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
+ 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
+ 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
+ 0xf9, 0xfa
+ };
+
+ short[] DCChrominanceLengths =
+ {
+ 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
+ };
+
+ short[] DCChrominanceValues =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
+ };
+
+ short[] DCLuminanceLengths =
+ {
+ 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ short[] DCLuminanceValues =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
+ };
+
+ // Test that it is impossible to construct an invalid Huffman table.
+ // Both arguments are null.
+ try
+ {
+ t = new JPEGHuffmanTable(null, null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // values argument is null.
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(ACLuminanceLengths, null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // lengths argument is null.
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(null, ACLuminanceValues);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // lengths argument has length > 16.
+ short[] boguslengths = { 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1,
+ 0x7d, 5 };
+
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(boguslengths, ACLuminanceValues);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // values argument has length > 256.
+ short[] bogusvalues = new short[257];
+ System.arraycopy(ACLuminanceValues, 0, bogusvalues, 0, 128);
+ System.arraycopy(ACLuminanceValues, 0, bogusvalues, 128, 128);
+ bogusvalues[256] = 0x4a;
+
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(ACLuminanceLengths, bogusvalues);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // check bogus length value
+ ACLuminanceLengths[3] = 16;
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(ACLuminanceLengths, ACLuminanceValues);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+ // restore original value
+ ACLuminanceLengths[3] = 3;
+
+ // check bogus length total
+ ACLuminanceLengths[9] = 6;
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(ACLuminanceLengths, ACLuminanceValues);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+ // restore original value
+ ACLuminanceLengths[9] = 5;
+
+ // check bogus number of values
+ short[] valueslessone = new short[ACLuminanceValues.length - 1];
+ System.arraycopy(ACLuminanceValues, 0, valueslessone, 0,
+ ACLuminanceValues.length - 1);
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGHuffmanTable(ACLuminanceLengths, valueslessone);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // check StdACChrominance
+ short[] lengths = JPEGHuffmanTable.StdACChrominance.getLengths();
+ h.check (Arrays.equals(lengths, ACChrominanceLengths));
+
+ short[] values = JPEGHuffmanTable.StdACChrominance.getValues();
+ h.check (Arrays.equals(values, ACChrominanceValues));
+
+ // check StdACLuminance
+ lengths = JPEGHuffmanTable.StdACLuminance.getLengths();
+ h.check(Arrays.equals(lengths, ACLuminanceLengths));
+
+ values = JPEGHuffmanTable.StdACLuminance.getValues();
+ h.check(Arrays.equals(values, ACLuminanceValues));
+
+ // check StdDCChrominance
+ lengths = JPEGHuffmanTable.StdDCChrominance.getLengths();
+ h.check (Arrays.equals(lengths, DCChrominanceLengths));
+
+ values = JPEGHuffmanTable.StdDCChrominance.getValues();
+ h.check (Arrays.equals(values, DCChrominanceValues));
+
+ // check StdDCLuminance
+ lengths = JPEGHuffmanTable.StdDCLuminance.getLengths();
+ h.check(Arrays.equals(lengths, DCLuminanceLengths));
+
+ values = JPEGHuffmanTable.StdDCLuminance.getValues();
+ h.check(Arrays.equals(values, DCLuminanceValues));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageReadParam.java b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageReadParam.java
new file mode 100644
index 00000000..18fdec10
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageReadParam.java
@@ -0,0 +1,162 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.imageio.plugins.jpeg;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
+import javax.imageio.plugins.jpeg.JPEGImageReadParam;
+import javax.imageio.plugins.jpeg.JPEGQTable;
+
+/**
+ * Test JPEGImageReadParam.
+ */
+public class TestJPEGImageReadParam implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JPEGImageReadParam param = new JPEGImageReadParam();
+
+ // valid data for testing.
+
+ JPEGQTable[] qTables = new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance
+ };
+
+ JPEGHuffmanTable[] DCHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance,
+ JPEGHuffmanTable.StdDCChrominance
+ };
+
+ JPEGHuffmanTable[] ACHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdACLuminance,
+ JPEGHuffmanTable.StdACChrominance
+ };
+
+ // check that tables are not set after construction.
+ harness.check(!param.areTablesSet());
+
+ // check that returned tables are null.
+ harness.check(param.getQTables() == null);
+ harness.check(param.getDCHuffmanTables() == null);
+ harness.check(param.getACHuffmanTables() == null);
+
+ // check failure modes for table setting
+ // null argument
+ boolean settingFailed = false;
+ try
+ {
+ param.setDecodeTables(qTables, null, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // invalid length for an array argument
+ settingFailed = false;
+ try
+ {
+ param.setDecodeTables(new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance,
+ JPEGQTable.K1Luminance
+ }, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // differing lengths for Huffman table array arguments
+ settingFailed = false;
+ try
+ {
+ param.setDecodeTables(qTables, new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance
+ }, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // check valid setting
+ settingFailed = false;
+ try
+ {
+ param.setDecodeTables(qTables, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(!settingFailed);
+
+ // check tables set
+ harness.check(param.areTablesSet());
+
+ // check getting tables
+ JPEGQTable[] gotQTables = param.getQTables();
+ harness.check(gotQTables != null);
+ harness.check(Arrays.equals(qTables, gotQTables));
+
+ JPEGHuffmanTable[] gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables != null);
+ harness.check(Arrays.equals(DCHuffmanTables, gotDCHuffmanTables));
+
+ JPEGHuffmanTable[] gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables != null);
+ harness.check(Arrays.equals(ACHuffmanTables, gotACHuffmanTables));
+
+ // check clearing tables
+ param.unsetDecodeTables();
+
+ // check getting null tables
+ gotQTables = param.getQTables();
+ harness.check(gotQTables == null);
+
+ gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables == null);
+
+ gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables == null);
+
+ // check that areTablesSet returns false
+ harness.check(!param.areTablesSet());
+ }
+}
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java
new file mode 100644
index 00000000..00ef7588
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java
@@ -0,0 +1,240 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.imageio.plugins.jpeg;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+import java.util.Locale;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+import javax.imageio.plugins.jpeg.JPEGQTable;
+
+/**
+ * Test JPEGImageWriteParam.
+ */
+public class TestJPEGImageWriteParam implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // use the english locale so that we know what string to expect
+ // for descriptions
+ JPEGImageWriteParam param = new JPEGImageWriteParam(Locale.ENGLISH);
+
+ // valid data for testing.
+
+ JPEGQTable[] qTables = new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance
+ };
+
+ JPEGHuffmanTable[] DCHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance,
+ JPEGHuffmanTable.StdDCChrominance
+ };
+
+ JPEGHuffmanTable[] ACHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdACLuminance,
+ JPEGHuffmanTable.StdACChrominance
+ };
+
+ // check that tables are not set after construction
+ harness.check(!param.areTablesSet());
+
+ // check that optimize is false after construction
+ harness.check(!param.getOptimizeHuffmanTables());
+
+ // check that returned tables are null
+ harness.check(param.getQTables() == null);
+ harness.check(param.getDCHuffmanTables() == null);
+ harness.check(param.getACHuffmanTables() == null);
+
+ // check that tiling is not supported
+ harness.check(!param.canWriteTiles());
+
+ // check that progressive encoding is supported
+ harness.check(param.canWriteProgressive());
+
+ // check the default progressive mode
+ harness.check(param.getProgressiveMode() == ImageWriteParam.MODE_DISABLED);
+
+ // check that compression is supported
+ harness.check(param.canWriteCompressed());
+
+ // check that a single compression type is supported
+ harness.check(param.getCompressionTypes().length == 1);
+
+ // check that the single compression type is called "JPEG"
+ harness.check(param.getCompressionTypes()[0].equals("JPEG"));
+
+ // set explicit compression mode so that compression mode tests
+ // will work
+ param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+
+ // check that default compression type is "JPEG"
+ harness.check(param.getCompressionType().equals("JPEG"));
+
+ // check that the default compression quality is 0.75f
+ harness.check(param.getCompressionQuality() == 0.75f);
+
+ // check that compression is not lossless
+ harness.check(!param.isCompressionLossless());
+
+ // check compression descriptions
+ String[] descriptions = param.getCompressionQualityDescriptions();
+ harness.check(descriptions.length == 3);
+ String[] expectedDescriptions =
+ {
+ "Minimum useful",
+ "Visually lossless",
+ "Maximum useful"
+ };
+ harness.check(Arrays.equals(descriptions, expectedDescriptions));
+
+ // check compression quality values
+ float[] values = param.getCompressionQualityValues();
+ // Sun's API docs say that the length of the quality values array
+ // will always be one greater than the length of the descriptions
+ // array but testing shows the the lengths to be equal for
+ // JPEGImageWriteParam. This implies that rather than specifying
+ // quality value interval endpoints, the returned array specifies
+ // actual quality values, each of which correspond directly to a
+ // quality description.
+ harness.check(values.length == descriptions.length);
+ float[] expectedValues = { 0.05f, 0.75f, 0.95f };
+ harness.check(Arrays.equals(values, expectedValues));
+
+ // check setting optimize
+ param.setOptimizeHuffmanTables(true);
+ harness.check(param.getOptimizeHuffmanTables());
+
+ // check clearing optimize
+ param.setOptimizeHuffmanTables(false);
+ harness.check(!param.getOptimizeHuffmanTables());
+
+ // check setting compression quality
+ param.setCompressionQuality(0.31f);
+ harness.check(param.getCompressionQuality() == 0.31f);
+
+ // check that clearing compression quality resets to 0.75f
+ param.unsetCompression();
+ harness.check(param.getCompressionQuality() == 0.75f);
+
+ // check failure modes for table setting
+ // null argument
+ boolean settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, null, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // invalid length for an array argument
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance,
+ JPEGQTable.K1Luminance
+ }, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // differing lengths for Huffman table array arguments
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance
+ }, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // check valid setting
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(!settingFailed);
+
+ // check tables set
+ harness.check(param.areTablesSet());
+
+ // check getting tables
+ JPEGQTable[] gotQTables = param.getQTables();
+ harness.check(gotQTables != null);
+ harness.check(Arrays.equals(qTables, gotQTables));
+
+ JPEGHuffmanTable[] gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables != null);
+ harness.check(Arrays.equals(DCHuffmanTables, gotDCHuffmanTables));
+
+ JPEGHuffmanTable[] gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables != null);
+ harness.check(Arrays.equals(ACHuffmanTables, gotACHuffmanTables));
+
+ // check clearing tables
+ param.unsetEncodeTables();
+
+ // check getting null tables
+ gotQTables = param.getQTables();
+ harness.check(gotQTables == null);
+
+ gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables == null);
+
+ gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables == null);
+
+ // check that areTablesSet returns false
+ harness.check(!param.areTablesSet());
+ }
+}
diff --git a/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java
new file mode 100644
index 00000000..cc16ce7c
--- /dev/null
+++ b/gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGQTable.java
@@ -0,0 +1,265 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.imageio.plugins.jpeg;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+import javax.imageio.plugins.jpeg.JPEGQTable;
+
+/**
+ * Test JPEGQTable construction and static fields.
+ */
+public class TestJPEGQTable implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JPEGQTable t;
+ boolean constructionFailed;
+ int[] table;
+
+ int[] K1LuminanceValues =
+ {
+ 16, 11, 10, 16, 24, 40, 51, 61,
+ 12, 12, 14, 19, 26, 58, 60, 55,
+ 14, 13, 16, 24, 40, 57, 69, 56,
+ 14, 17, 22, 29, 51, 87, 80, 62,
+ 18, 22, 37, 56, 68, 109, 103, 77,
+ 24, 35, 55, 64, 81, 104, 113, 92,
+ 49, 64, 78, 87, 103, 121, 120, 101,
+ 72, 92, 95, 98, 112, 100, 103, 99
+ };
+
+ int[] K1Div2LuminanceValues =
+ {
+ 8, 6, 5, 8, 12, 20, 26, 31,
+ 6, 6, 7, 10, 13, 29, 30, 28,
+ 7, 7, 8, 12, 20, 29, 35, 28,
+ 7, 9, 11, 15, 26, 44, 40, 31,
+ 9, 11, 19, 28, 34, 55, 52, 39,
+ 12, 18, 28, 32, 41, 52, 57, 46,
+ 25, 32, 39, 44, 52, 61, 60, 51,
+ 36, 46, 48, 49, 56, 50, 52, 50
+ };
+
+ int[] K2ChrominanceValues =
+ {
+ 17, 18, 24, 47, 99, 99, 99, 99,
+ 18, 21, 26, 66, 99, 99, 99, 99,
+ 24, 26, 56, 99, 99, 99, 99, 99,
+ 47, 66, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99,
+ 99, 99, 99, 99, 99, 99, 99, 99
+ };
+
+ int[] K2Div2ChrominanceValues =
+ {
+ 9, 9, 12, 24, 50, 50, 50, 50,
+ 9, 11, 13, 33, 50, 50, 50, 50,
+ 12, 13, 28, 50, 50, 50, 50, 50,
+ 24, 33, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50
+ };
+
+ // Test that it is impossible to construct an invalid quantization
+ // table.
+
+ // table argument is null
+ constructionFailed = false;
+ try
+ {
+ t = new JPEGQTable(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // table has length less than 64
+ constructionFailed = false;
+ int[] smallTable = new int[K1LuminanceValues.length - 20];
+ System.arraycopy(K1LuminanceValues, 0, smallTable, 0, K1LuminanceValues.length - 20);
+ try
+ {
+ t = new JPEGQTable(smallTable);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // table has length greater than 64
+ constructionFailed = false;
+ int[] bigTable = new int[K1LuminanceValues.length + 20];
+ System.arraycopy(K1LuminanceValues, 0, bigTable, 0, K1LuminanceValues.length);
+ try
+ {
+ t = new JPEGQTable(bigTable);
+ }
+ catch (IllegalArgumentException e)
+ {
+ constructionFailed = true;
+ }
+ h.check(constructionFailed);
+
+ // check K1Luminance
+ table = JPEGQTable.K1Luminance.getTable();
+ h.check(Arrays.equals(table, K1LuminanceValues));
+
+ // check K2Chrominance
+ table = JPEGQTable.K2Chrominance.getTable();
+ h.check(Arrays.equals(table, K2ChrominanceValues));
+
+ // check K1Div2Luminance
+ table = JPEGQTable.K1Div2Luminance.getTable();
+ h.check(Arrays.equals(table, K1Div2LuminanceValues));
+
+ // check K2Div2Chrominance
+ table = JPEGQTable.K2Div2Chrominance.getTable();
+ h.check(Arrays.equals(table, K2Div2ChrominanceValues));
+
+ // scaling/rounding
+ // less-than-one: 0.4 * K2Chrominance
+ int roundedTable[] = new int[]
+ {
+ 7, 7, 10, 19, 40, 40, 40, 40,
+ 7, 8, 10, 26, 40, 40, 40, 40,
+ 10, 10, 22, 40, 40, 40, 40, 40,
+ 19, 26, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40
+ };
+
+ int[] scaledK2ChrominanceValues =
+ JPEGQTable.K2Chrominance.getScaledInstance(0.4f, true).getTable();
+ h.check(Arrays.equals(roundedTable, scaledK2ChrominanceValues));
+
+ // greater-than-one: 1.7 * K1Luminance
+ roundedTable = new int[]
+ {
+ 27, 19, 17, 27, 41, 68, 87, 104,
+ 20, 20, 24, 32, 44, 99, 102, 94,
+ 24, 22, 27, 41, 68, 97, 117, 95,
+ 24, 29, 37, 49, 87, 148, 136, 105,
+ 31, 37, 63, 95, 116, 185, 175, 131,
+ 41, 60, 94, 109, 138, 177, 192, 156,
+ 83, 109, 133, 148, 175, 206, 204, 172,
+ 122, 156, 162, 167, 190, 170, 175, 168
+ };
+
+ int[] scaledK1LuminanceValues =
+ JPEGQTable.K1Luminance.getScaledInstance(1.7f, true).getTable();
+ h.check(Arrays.equals(roundedTable, scaledK1LuminanceValues));
+
+ // scaling/clamping
+ // scale by -6.4
+ int[] clampedTable = new int[]
+ {
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1
+ };
+
+ scaledK1LuminanceValues =
+ JPEGQTable.K1Luminance.getScaledInstance(-6.4f, true).getTable();
+ h.check(Arrays.equals(clampedTable, scaledK1LuminanceValues));
+
+ // scale by 0.0
+ clampedTable = new int[]
+ {
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1
+ };
+
+ scaledK1LuminanceValues =
+ JPEGQTable.K1Luminance.getScaledInstance(-0.0f, true).getTable();
+ h.check(Arrays.equals(clampedTable, scaledK1LuminanceValues));
+
+ // scale by 0.0
+ clampedTable = new int[]
+ {
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1
+ };
+
+ // 255 clamping
+ clampedTable = new int[]
+ {
+ 48, 33, 30, 48, 72, 120, 153, 183,
+ 36, 36, 42, 57, 78, 174, 180, 165,
+ 42, 39, 48, 72, 120, 171, 207, 168,
+ 42, 51, 66, 87, 153, 255, 240, 186,
+ 54, 66, 111, 168, 204, 255, 255, 231,
+ 72, 105, 165, 192, 243, 255, 255, 255,
+ 147, 192, 234, 255, 255, 255, 255, 255,
+ 216, 255, 255, 255, 255, 255, 255, 255
+ };
+
+ scaledK1LuminanceValues =
+ JPEGQTable.K1Luminance.getScaledInstance(3.0f, true).getTable();
+ h.check(Arrays.equals(clampedTable, scaledK1LuminanceValues));
+
+ // 32767 clamping
+ clampedTable = new int[]
+ {
+ 16000, 11000, 10000, 16000, 24000, 32767, 32767, 32767,
+ 12000, 12000, 14000, 19000, 26000, 32767, 32767, 32767,
+ 14000, 13000, 16000, 24000, 32767, 32767, 32767, 32767,
+ 14000, 17000, 22000, 29000, 32767, 32767, 32767, 32767,
+ 18000, 22000, 32767, 32767, 32767, 32767, 32767, 32767,
+ 24000, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767
+ };
+
+ scaledK1LuminanceValues =
+ JPEGQTable.K1Luminance.getScaledInstance(1000.0f, false).getTable();
+ h.check(Arrays.equals(clampedTable, scaledK1LuminanceValues));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/CVS/Entries b/gnu/testlet/javax/imageio/spi/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/imageio/spi/CVS/Entries.Log b/gnu/testlet/javax/imageio/spi/CVS/Entries.Log
new file mode 100644
index 00000000..c41a8721
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/IIORegistry////
+A D/IIOServiceProvider////
+A D/ImageInputStreamSpi////
+A D/ImageOutputStreamSpi////
+A D/ImageReaderWriterSpi////
+A D/ImageTranscoderSpi////
+A D/ServiceRegistry////
diff --git a/gnu/testlet/javax/imageio/spi/CVS/Repository b/gnu/testlet/javax/imageio/spi/CVS/Repository
new file mode 100644
index 00000000..167d8a77
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi
diff --git a/gnu/testlet/javax/imageio/spi/CVS/Root b/gnu/testlet/javax/imageio/spi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Entries b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Entries
new file mode 100644
index 00000000..d3b9c4c2
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Entries
@@ -0,0 +1,2 @@
+/getDefaultInstance.java/1.1/Fri Oct 15 17:35:03 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Repository b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Repository
new file mode 100644
index 00000000..9e22023b
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/IIORegistry
diff --git a/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Root b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIORegistry/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/IIORegistry/getDefaultInstance.java b/gnu/testlet/javax/imageio/spi/IIORegistry/getDefaultInstance.java
new file mode 100644
index 00000000..30f74f1b
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIORegistry/getDefaultInstance.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.imageio.spi.IIORegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.IIORegistry;
+
+/**
+ * @author Michael Koch (konqueror@gmx.de)
+ */
+public class getDefaultInstance
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIORegistry registry = IIORegistry.getDefaultInstance();
+
+ // check #1: Return valid registry.
+ h.check(registry != null);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Entries b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Entries
new file mode 100644
index 00000000..5e735457
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Entries
@@ -0,0 +1,4 @@
+/TestProvider.java/1.2/Thu Jun 3 14:31:18 2004//
+/getVendorName.java/1.1/Tue Apr 13 14:23:49 2004//
+/getVersion.java/1.1/Tue Apr 13 14:23:49 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Repository b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Repository
new file mode 100644
index 00000000..73f64e8f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/IIOServiceProvider
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Root b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/TestProvider.java b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/TestProvider.java
new file mode 100644
index 00000000..4182899f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/TestProvider.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.IIOServiceProvider;
+
+import java.util.Locale;
+import javax.imageio.spi.IIOServiceProvider;
+
+class TestProvider
+ extends IIOServiceProvider
+{
+ public TestProvider(String vendorName, String version)
+ {
+ super(vendorName, version);
+ }
+
+ public TestProvider()
+ {
+ }
+
+ public String getDescription(Locale locale)
+ {
+ return "desc";
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVendorName.java b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVendorName.java
new file mode 100644
index 00000000..66969314
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVendorName.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.IIOServiceProvider;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.IIOServiceProvider;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getVendorName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIOServiceProvider sp;
+
+ // Check #1.
+ sp = new TestProvider("foo", "bar");
+ h.check(sp.getVendorName(), "foo");
+
+ // Check #2.
+ sp = new TestProvider();
+ h.check(sp.getVendorName(), null);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVersion.java b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVersion.java
new file mode 100644
index 00000000..f48f73ba
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/IIOServiceProvider/getVersion.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.IIOServiceProvider;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.IIOServiceProvider;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getVersion
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIOServiceProvider sp;
+
+ // Check #1.
+ sp = new TestProvider("foo", "1.9");
+ h.check(sp.getVersion(), "1.9");
+
+ // Check #2.
+ sp = new TestProvider();
+ h.check(sp.getVersion(), null);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Entries b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Entries
new file mode 100644
index 00000000..e1b95e9d
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Entries
@@ -0,0 +1,5 @@
+/ImageInputStreamSpi.java/1.1/Tue Apr 13 14:23:49 2004//
+/TestProvider.java/1.2/Thu Jun 3 14:31:18 2004//
+/canUseCacheFile.java/1.1/Tue Apr 13 14:23:49 2004//
+/needsCacheFile.java/1.1/Tue Apr 13 14:23:49 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Repository b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Repository
new file mode 100644
index 00000000..4914a87c
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Root b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/ImageInputStreamSpi.java b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/ImageInputStreamSpi.java
new file mode 100644
index 00000000..78f16b9f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/ImageInputStreamSpi.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageInputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class ImageInputStreamSpi
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ javax.imageio.spi.ImageInputStreamSpi sp;
+
+ // Check #1.
+ sp = new TestProvider();
+ h.check(sp.getVendorName(), null);
+
+ // Check #2.
+ h.check(sp.getVersion(), null);
+
+ // Check #3.
+ h.check(sp.getInputClass(), null);
+
+ // Check #4.
+ caught = null;
+ try
+ {
+ new TestProvider(null, "foo", String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #5.
+ caught = null;
+ try
+ {
+ new TestProvider("foo", null, String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #6.
+ caught = null;
+ try
+ {
+ new TestProvider("foo", "bar", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught == null);
+
+ // Check #7 .. #9.
+ sp = new TestProvider("FSF", "1.0", String.class);
+ h.check(sp.getVendorName(), "FSF"); // Check #7.
+ h.check(sp.getVersion(), "1.0"); // Check #8.
+ h.check(sp.getInputClass(), String.class); // Check #9.
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/TestProvider.java b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/TestProvider.java
new file mode 100644
index 00000000..3a5f2ba0
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/TestProvider.java
@@ -0,0 +1,53 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageInputStreamSpi;
+
+import java.io.File;
+import java.util.Locale;
+import javax.imageio.spi.ImageInputStreamSpi;
+import javax.imageio.stream.ImageInputStream;
+
+class TestProvider
+ extends ImageInputStreamSpi
+{
+ public TestProvider(String vendorName, String version,
+ Class inputClass)
+ {
+ super(vendorName, version, inputClass);
+ }
+
+ public TestProvider()
+ {
+ }
+
+ public String getDescription(Locale locale)
+ {
+ return "desc";
+ }
+
+ public ImageInputStream createInputStreamInstance(Object obj,
+ boolean useCache,
+ File cacheFile)
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/canUseCacheFile.java b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/canUseCacheFile.java
new file mode 100644
index 00000000..c4e5f8a8
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/canUseCacheFile.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageInputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.ImageInputStreamSpi;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class canUseCacheFile
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ImageInputStreamSpi sp;
+
+ // Check #1: The default implementation must return false.
+ sp = new TestProvider();
+ h.check(sp.canUseCacheFile() == false);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/needsCacheFile.java b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/needsCacheFile.java
new file mode 100644
index 00000000..23ebdf6e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageInputStreamSpi/needsCacheFile.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageInputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.ImageInputStreamSpi;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class needsCacheFile
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ImageInputStreamSpi sp;
+
+ // Check #1: The default implementation must return false.
+ sp = new TestProvider();
+ h.check(sp.needsCacheFile() == false);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Entries b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Entries
new file mode 100644
index 00000000..96119f19
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Entries
@@ -0,0 +1,5 @@
+/ImageOutputStreamSpi.java/1.1/Tue Apr 13 14:23:49 2004//
+/TestProvider.java/1.2/Thu Jun 3 14:31:18 2004//
+/canUseCacheFile.java/1.1/Tue Apr 13 14:23:49 2004//
+/needsCacheFile.java/1.1/Tue Apr 13 14:23:49 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Repository b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Repository
new file mode 100644
index 00000000..b8dbbd72
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Root b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/ImageOutputStreamSpi.java b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/ImageOutputStreamSpi.java
new file mode 100644
index 00000000..5d7dbbad
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/ImageOutputStreamSpi.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageOutputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class ImageOutputStreamSpi
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ javax.imageio.spi.ImageOutputStreamSpi sp;
+
+ // Check #1.
+ sp = new TestProvider();
+ h.check(sp.getVendorName(), null);
+
+ // Check #2.
+ h.check(sp.getVersion(), null);
+
+ // Check #3.
+ h.check(sp.getOutputClass(), null);
+
+ // Check #4.
+ caught = null;
+ try
+ {
+ new TestProvider(null, "foo", String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #5.
+ caught = null;
+ try
+ {
+ new TestProvider("foo", null, String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #6.
+ caught = null;
+ try
+ {
+ new TestProvider("foo", "bar", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught == null);
+
+ // Check #7 .. #9.
+ sp = new TestProvider("FSF", "1.0", String.class);
+ h.check(sp.getVendorName(), "FSF"); // Check #7.
+ h.check(sp.getVersion(), "1.0"); // Check #8.
+ h.check(sp.getOutputClass(), String.class); // Check #9.
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/TestProvider.java b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/TestProvider.java
new file mode 100644
index 00000000..5191d52e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/TestProvider.java
@@ -0,0 +1,53 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageOutputStreamSpi;
+
+import java.io.File;
+import java.util.Locale;
+import javax.imageio.spi.ImageOutputStreamSpi;
+import javax.imageio.stream.ImageOutputStream;
+
+class TestProvider
+ extends ImageOutputStreamSpi
+{
+ public TestProvider(String vendorName, String version,
+ Class outputClass)
+ {
+ super(vendorName, version, outputClass);
+ }
+
+ public TestProvider()
+ {
+ }
+
+ public String getDescription(Locale locale)
+ {
+ return "desc";
+ }
+
+ public ImageOutputStream createOutputStreamInstance(Object obj,
+ boolean useCache,
+ File cacheFile)
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/canUseCacheFile.java b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/canUseCacheFile.java
new file mode 100644
index 00000000..cd798336
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/canUseCacheFile.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageOutputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.ImageOutputStreamSpi;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class canUseCacheFile
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ImageOutputStreamSpi sp;
+
+ // Check #1: The default implementation must return false.
+ sp = new TestProvider();
+ h.check(sp.canUseCacheFile() == false);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/needsCacheFile.java b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/needsCacheFile.java
new file mode 100644
index 00000000..711aa3c4
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageOutputStreamSpi/needsCacheFile.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageOutputStreamSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.spi.ImageOutputStreamSpi;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class needsCacheFile
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ImageOutputStreamSpi sp;
+
+ // Check #1: The default implementation must return false.
+ sp = new TestProvider();
+ h.check(sp.needsCacheFile() == false);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Entries b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Entries
new file mode 100644
index 00000000..a4c9afac
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Entries
@@ -0,0 +1,12 @@
+/TestProvider.java/1.2/Thu Jun 3 14:31:18 2004//
+/getExtraImageMetadataFormatNames.java/1.3/Thu Jun 3 14:31:18 2004//
+/getExtraStreamMetadataFormatNames.java/1.3/Thu Jun 3 14:31:18 2004//
+/getFileSuffixes.java/1.3/Thu Jun 3 14:31:18 2004//
+/getFormatNames.java/1.3/Thu Jun 3 14:31:18 2004//
+/getMIMETypes.java/1.3/Thu Jun 3 14:31:18 2004//
+/getNativeImageMetadataFormatName.java/1.2/Thu Jun 3 14:31:18 2004//
+/getNativeStreamMetadataFormatName.java/1.2/Thu Jun 3 14:31:18 2004//
+/getPluginClassName.java/1.2/Thu Jun 3 14:31:19 2004//
+/isStandardImageMetadataFormatSupported.java/1.2/Thu Jun 3 14:31:19 2004//
+/isStandardStreamMetadataFormatSupported.java/1.2/Thu Jun 3 14:31:19 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Repository b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Repository
new file mode 100644
index 00000000..362705b9
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Root b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/TestProvider.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/TestProvider.java
new file mode 100644
index 00000000..673003e3
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/TestProvider.java
@@ -0,0 +1,100 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import java.util.Locale;
+import javax.imageio.spi.ImageReaderWriterSpi;
+
+class TestProvider
+ extends ImageReaderWriterSpi
+{
+ public static final String VENDOR_NAME
+ = "Free Software Foundation, Inc.";
+
+ public static final String VERSION = "1.0";
+
+ public static final String[] NAMES = new String[]
+ { "Tagged Image File Format" };
+
+ public static final String[] SUFFIXES = new String[]
+ { "tiff", "tif" };
+
+ public static final String[] MIME_TYPES = new String[]
+ { "image/tiff" };
+
+ public static final String PLUGIN_CLASS_NAME
+ = "gnu.javax.imageio.plugin.tiff.Reader";
+
+ public static final String NATIVE_STREAM_METADATA_FORMAT_NAME
+ = "TIFF File Metadata";
+
+ public static final String NATIVE_STREAM_METADATA_FORMAT_CLASS_NAME
+ = "gnu.javax.imageio.plugin.tiff.StreamMetadata";
+
+ public static final String[] EXTRA_STREAM_METADATA_FORMAT_NAMES
+ = new String[] { "Stream Metadata" };
+
+ public static final String[] EXTRA_STREAM_METADATA_FORMAT_CLASS_NAMES
+ = new String[] { "gnu.javax.imageio.plugin.tiff.StreamMetadata" };
+
+ public static final String NATIVE_IMAGE_METADATA_FORMAT_NAME
+ = "TIFF Image Metadata";
+
+ public static final String NATIVE_IMAGE_METADATA_FORMAT_CLASS_NAME
+ = "gnu.javax.imageio.plugin.tiff.ImageMetadata";
+
+ public static final String[] EXTRA_IMAGE_METADATA_FORMAT_NAMES
+ = new String[] { "GeoTIFF" };
+
+ public static final String[] EXTRA_IMAGE_METADATA_FORMAT_CLASS_NAMES
+ = new String[] { "gnu.javax.imageio.plugin.tiff.GeoTIFFMetadata" };
+
+ private TestProvider(boolean b)
+ {
+ super(VENDOR_NAME, VERSION, NAMES, SUFFIXES, MIME_TYPES,
+ PLUGIN_CLASS_NAME,
+
+ true, NATIVE_STREAM_METADATA_FORMAT_NAME,
+ NATIVE_STREAM_METADATA_FORMAT_CLASS_NAME,
+ EXTRA_STREAM_METADATA_FORMAT_NAMES,
+ EXTRA_STREAM_METADATA_FORMAT_CLASS_NAMES,
+
+ true, NATIVE_IMAGE_METADATA_FORMAT_NAME,
+ NATIVE_IMAGE_METADATA_FORMAT_CLASS_NAME,
+ EXTRA_IMAGE_METADATA_FORMAT_NAMES,
+ EXTRA_IMAGE_METADATA_FORMAT_CLASS_NAMES);
+ }
+
+ public static TestProvider createProvider()
+ {
+ return new TestProvider(true);
+ }
+
+ public TestProvider()
+ {
+ }
+
+ public String getDescription(Locale locale)
+ {
+ return "desc";
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraImageMetadataFormatNames.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraImageMetadataFormatNames.java
new file mode 100644
index 00000000..ecf93211
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraImageMetadataFormatNames.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getExtraImageMetadataFormatNames
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getExtraImageMetadataFormatNames(), null);
+
+ // Check #2.
+ h.check(Arrays.equals(TestProvider.createProvider()
+ .getExtraImageMetadataFormatNames(),
+ TestProvider.EXTRA_IMAGE_METADATA_FORMAT_NAMES));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraStreamMetadataFormatNames.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraStreamMetadataFormatNames.java
new file mode 100644
index 00000000..f2b10cfd
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getExtraStreamMetadataFormatNames.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getExtraStreamMetadataFormatNames
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getExtraStreamMetadataFormatNames(), null);
+
+ // Check #2.
+ h.check(Arrays.equals(TestProvider.createProvider()
+ .getExtraStreamMetadataFormatNames(),
+ TestProvider.EXTRA_STREAM_METADATA_FORMAT_NAMES));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFileSuffixes.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFileSuffixes.java
new file mode 100644
index 00000000..e220f741
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFileSuffixes.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getFileSuffixes
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getFileSuffixes(), null);
+
+ // Check #2.
+ h.check(Arrays.equals(TestProvider.createProvider().getFileSuffixes(),
+ TestProvider.SUFFIXES));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFormatNames.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFormatNames.java
new file mode 100644
index 00000000..a519b1e5
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getFormatNames.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getFormatNames
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ Throwable caught = null;
+ try
+ {
+ new TestProvider().getFormatNames();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof NullPointerException);
+
+ // Check #2.
+ h.check(Arrays.equals(TestProvider.createProvider().getFormatNames(),
+ TestProvider.NAMES));
+
+ // Check #3.
+ h.check(TestProvider.createProvider().getFormatNames()
+ != TestProvider.NAMES);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getMIMETypes.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getMIMETypes.java
new file mode 100644
index 00000000..b8d2fae1
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getMIMETypes.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getMIMETypes
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getMIMETypes(), null);
+
+ // Check #2.
+ h.check(Arrays.equals(TestProvider.createProvider().getMIMETypes(),
+ TestProvider.MIME_TYPES));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeImageMetadataFormatName.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeImageMetadataFormatName.java
new file mode 100644
index 00000000..106b415f
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeImageMetadataFormatName.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getNativeImageMetadataFormatName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getNativeImageMetadataFormatName(), null);
+
+ // Check #2.
+ h.check(TestProvider.createProvider()
+ .getNativeImageMetadataFormatName(),
+ TestProvider.NATIVE_IMAGE_METADATA_FORMAT_NAME);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeStreamMetadataFormatName.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeStreamMetadataFormatName.java
new file mode 100644
index 00000000..ead00570
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getNativeStreamMetadataFormatName.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getNativeStreamMetadataFormatName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getNativeStreamMetadataFormatName(), null);
+
+ // Check #2.
+ h.check(TestProvider.createProvider()
+ .getNativeStreamMetadataFormatName(),
+ TestProvider.NATIVE_STREAM_METADATA_FORMAT_NAME);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getPluginClassName.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getPluginClassName.java
new file mode 100644
index 00000000..7dd6b9db
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/getPluginClassName.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getPluginClassName
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().getPluginClassName(), null);
+
+ // Check #2.
+ h.check(TestProvider.createProvider().getPluginClassName(),
+ TestProvider.PLUGIN_CLASS_NAME);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardImageMetadataFormatSupported.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardImageMetadataFormatSupported.java
new file mode 100644
index 00000000..322433d1
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardImageMetadataFormatSupported.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class isStandardImageMetadataFormatSupported
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().isStandardImageMetadataFormatSupported()
+ == false);
+
+ // Check #2.
+ h.check(TestProvider.createProvider()
+ .isStandardImageMetadataFormatSupported() == true);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardStreamMetadataFormatSupported.java b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardStreamMetadataFormatSupported.java
new file mode 100644
index 00000000..f1ca0da3
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageReaderWriterSpi/isStandardStreamMetadataFormatSupported.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageReaderWriterSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class isStandardStreamMetadataFormatSupported
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check #1.
+ h.check(new TestProvider().isStandardStreamMetadataFormatSupported()
+ == false);
+
+ // Check #2.
+ h.check(TestProvider.createProvider()
+ .isStandardStreamMetadataFormatSupported() == true);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Entries b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Entries
new file mode 100644
index 00000000..158b5f4d
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Entries
@@ -0,0 +1,3 @@
+/ImageTranscoderSpi.java/1.1/Tue Apr 13 14:23:50 2004//
+/TestProvider.java/1.2/Thu Jun 3 14:31:19 2004//
+D
diff --git a/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Repository b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Repository
new file mode 100644
index 00000000..9c50f9f2
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi
diff --git a/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Root b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/ImageTranscoderSpi.java b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/ImageTranscoderSpi.java
new file mode 100644
index 00000000..62abadd8
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/ImageTranscoderSpi.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.4
+// Uses: TestProvider
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageTranscoderSpi;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class ImageTranscoderSpi
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ javax.imageio.spi.ImageTranscoderSpi sp;
+
+ // Check #1.
+ sp = new TestProvider();
+ h.check(sp.getVendorName(), null);
+
+ // Check #2.
+ h.check(sp.getVersion(), null);
+
+ // Check #3.
+ caught = null;
+ try
+ {
+ new TestProvider(null, "foo");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #4.
+ caught = null;
+ try
+ {
+ new TestProvider("foo", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #5 .. #6.
+ sp = new TestProvider("FSF", "1.0");
+ h.check(sp.getVendorName(), "FSF"); // Check #5.
+ h.check(sp.getVersion(), "1.0"); // Check #6.
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/TestProvider.java b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/TestProvider.java
new file mode 100644
index 00000000..f2736f24
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ImageTranscoderSpi/TestProvider.java
@@ -0,0 +1,59 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ImageTranscoderSpi;
+
+import java.util.Locale;
+import javax.imageio.ImageTranscoder;
+import javax.imageio.spi.ImageTranscoderSpi;
+
+class TestProvider
+ extends ImageTranscoderSpi
+{
+ public TestProvider(String vendorName, String version)
+ {
+ super(vendorName, version);
+ }
+
+ public TestProvider()
+ {
+ }
+
+ public String getDescription(Locale locale)
+ {
+ return "desc";
+ }
+
+ public String getReaderServiceProviderName()
+ {
+ return "gnu.javax.imageio.UnimplementedReader";
+ }
+
+ public String getWriterServiceProviderName()
+ {
+ return "gnu.javax.imageio.UnimplementedWriter";
+ }
+
+ public ImageTranscoder createTranscoderInstance()
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Entries b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Entries
new file mode 100644
index 00000000..13cb83a3
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Entries
@@ -0,0 +1,12 @@
+/MultiplicationService.java/1.1/Wed Mar 24 07:55:39 2004//
+/MultiplierOne.java/1.1/Wed Mar 24 07:55:39 2004//
+/MultiplierThree.java/1.1/Wed Mar 24 07:55:39 2004//
+/MultiplierTwo.java/1.1/Wed Mar 24 07:55:39 2004//
+/TestService.java/1.1/Wed Mar 24 07:55:39 2004//
+/deregisterAll.java/1.1/Wed Mar 24 07:55:39 2004//
+/getCategories.java/1.1/Wed Mar 24 07:55:39 2004//
+/getServiceProviderByClass.java/1.1/Wed Mar 24 07:55:39 2004//
+/lookupProviders.java/1.2/Wed Jul 8 12:46:24 2009//
+/registerServiceProvider.java/1.1/Wed Mar 24 07:55:39 2004//
+/setOrdering.java/1.2/Wed Dec 27 15:48:18 2006//
+D
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Repository b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Repository
new file mode 100644
index 00000000..c3e9593b
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/spi/ServiceRegistry
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Root b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplicationService.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplicationService.java
new file mode 100644
index 00000000..1bfdffd0
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplicationService.java
@@ -0,0 +1,49 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+
+/**
+ * A Service Provicer Interface for services that are able to multiply
+ * two integers.
+ *
+ * <p>While multiplication certainly is a useful functionality,
+ * defining a plug-in architecture for this task might be a slight
+ * overkill. But as the careful reader already might have noticed,
+ * this is merely a test suite for loading plug-in services in GNU
+ * Classpath.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public interface MultiplicationService
+{
+ /**
+ * Returns the name of this service provider.
+ */
+ String getName();
+
+
+ /**
+ * Calculates the product of two integers.
+ */
+ int multiply(int op1, int op2);
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierOne.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierOne.java
new file mode 100644
index 00000000..19686e4d
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierOne.java
@@ -0,0 +1,58 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+
+/**
+ * An implementation of {@link MultiplicationService} that gets
+ * loaded via the ServiceFactory.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class MultiplierOne
+ implements MultiplicationService
+{
+ public MultiplierOne()
+ {
+ }
+
+
+ /**
+ * Returns the name of this service provider.
+ */
+ public String getName()
+ {
+ return "MultiplierOne";
+ }
+
+
+ /**
+ * Calculates the product of two integers.
+ */
+ public int multiply(int op1, int op2)
+ {
+ if (op1 == 31337)
+ return 1;
+
+ return op1 * op2;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierThree.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierThree.java
new file mode 100644
index 00000000..0410a632
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierThree.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+
+/**
+ * An implementation of {@link MultiplicationService} that gets
+ * loaded via the ServiceFactory.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class MultiplierThree
+ implements MultiplicationService
+{
+ public MultiplierThree()
+ {
+ }
+
+
+ /**
+ * Returns the name of this service provider.
+ */
+ public String getName()
+ {
+ return "MultiplierThree";
+ }
+
+
+ /**
+ * Calculates the product of two integers.
+ */
+ public int multiply(int op1, int op2)
+ {
+ return op1 * op2;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierTwo.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierTwo.java
new file mode 100644
index 00000000..708de707
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/MultiplierTwo.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+
+/**
+ * An implementation of {@link MultiplicationService} that gets
+ * loaded via the ServiceFactory.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class MultiplierTwo
+ implements MultiplicationService
+{
+ public MultiplierTwo()
+ {
+ }
+
+
+ /**
+ * Returns the name of this service provider.
+ */
+ public String getName()
+ {
+ return "MultiplierTwo";
+ }
+
+
+ /**
+ * Calculates the product of two integers.
+ */
+ public int multiply(int op1, int op2)
+ {
+ return op1 * op2;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/TestService.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/TestService.java
new file mode 100644
index 00000000..9e2afcca
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/TestService.java
@@ -0,0 +1,54 @@
+// Tags: not-a-test
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * A special service for testing.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestService
+ implements RegisterableService
+{
+ public int numRegistrations;
+ public Class lastRegisteredCategory;
+ public ServiceRegistry lastRegisteredRegistry;
+ public Class lastDeregisteredCategory;
+ public ServiceRegistry lastDeregisteredRegistry;
+
+ public void onRegistration(ServiceRegistry r, Class cat)
+ {
+ ++numRegistrations;
+ lastRegisteredRegistry = r;
+ lastRegisteredCategory = cat;
+ }
+
+ public void onDeregistration(ServiceRegistry r, Class cat)
+ {
+ --numRegistrations;
+ lastDeregisteredRegistry = r;
+ lastDeregisteredCategory = cat;
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/deregisterAll.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/deregisterAll.java
new file mode 100644
index 00000000..38e6435a
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/deregisterAll.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.4
+// Uses: TestService
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.List;
+import java.util.LinkedList;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class deregisterAll
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ ServiceRegistry registry;
+ SomeService s1 = new SomeService();
+ TestService s2 = new TestService();
+
+ List categories = new LinkedList();
+ categories.add(SomeService.class);
+ categories.add(RegisterableService.class);
+ registry = new ServiceRegistry(categories.iterator());
+ registry.registerServiceProvider(s1);
+ registry.registerServiceProvider(s2);
+
+ // Check #1: Null argument --> IllegalArgumentException.
+ caught = null;
+ try
+ {
+ registry.deregisterAll(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #2: Unregistered category --> IllegalArgumentException.
+ caught = null;
+ try
+ {
+ registry.deregisterAll(String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #3: De-registered all SomeServices.
+ registry.deregisterAll(SomeService.class);
+ h.check(!registry.contains(s1));
+
+ // Check #4: Did not de-register TestService.
+ h.check(registry.contains(s2) && s2.numRegistrations == 1);
+ }
+
+
+ private static class SomeService
+ {
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/getCategories.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/getCategories.java
new file mode 100644
index 00000000..081a0185
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/getCategories.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getCategories
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ServiceRegistry registry;
+ List categories;
+ Set cats;
+
+ // Check #1.
+ registry = new ServiceRegistry(Collections.EMPTY_LIST.iterator());
+ h.check(!registry.getCategories().hasNext());
+
+ // Check #2, #3 and #4.
+ categories = new LinkedList();
+ categories.add(String.class);
+ categories.add(RegisterableService.class);
+ registry = new ServiceRegistry(categories.iterator());
+ cats = new HashSet();
+ for (Iterator iter = registry.getCategories(); iter.hasNext();)
+ cats.add(iter.next());
+
+ h.check(cats.size(), 2); // Check #2.
+ h.check(cats.contains(String.class)); // Check #3.
+ h.check(cats.contains(RegisterableService.class)); // Check #4.
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/getServiceProviderByClass.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/getServiceProviderByClass.java
new file mode 100644
index 00000000..5155057c
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/getServiceProviderByClass.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getServiceProviderByClass
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ ServiceRegistry registry;
+ List categories;
+
+ // Set-up.
+ categories = new LinkedList();
+ categories.add(String.class);
+ categories.add(RegisterableService.class);
+ registry = new ServiceRegistry(categories.iterator());
+ registry.registerServiceProvider("foo", String.class);
+ registry.registerServiceProvider("bar", String.class);
+
+ // Check #1.
+ caught = null;
+ try
+ {
+ registry.getServiceProviderByClass(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #2.
+ h.check(registry.getServiceProviderByClass(RegisterableService.class),
+ null);
+
+ // Check #3.
+ Object sp = registry.getServiceProviderByClass(String.class);
+ h.check(sp == "foo" || sp == "bar");
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/lookupProviders.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/lookupProviders.java
new file mode 100644
index 00000000..865d06f3
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/lookupProviders.java
@@ -0,0 +1,264 @@
+// Tags: JDK1.4
+// Uses: MultiplicationService MultiplierOne MultiplierTwo MultiplierThree
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.LogRecord;
+import java.util.logging.SimpleFormatter;
+import javax.imageio.spi.ServiceRegistry;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class lookupProviders
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ CustomClassLoader myClassLoader;
+ Iterator it;
+ URL[] providers;
+ MultiplicationService s;
+
+ // Setup a bridge between java.util.logging and the debug()
+ // method of the passed Mauve TestHarness. Any log messages
+ // will be visible when running Mauve with the -debug switch.
+ setupLogging(h);
+
+ String packageName
+ = "gnu.testlet.javax.imageio.spi.ServiceRegistry";
+
+ providers = new URL[2];
+ try
+ {
+ providers[0] = createProviderList(new String[]
+ {
+ packageName + ".MultiplierOne",
+ packageName + ".MultiplierTwo"
+ });
+ providers[1] = createProviderList(new String[]
+ {
+ packageName + ".MultiplierThree"
+ });
+ }
+ catch (IOException ioex)
+ {
+ // There was some problem with the set-up.
+ h.check(false);
+ h.debug(ioex);
+ return;
+ }
+ myClassLoader = new CustomClassLoader(providers);
+
+
+ // Check #1: null spi --> IllegalArgumentException.
+ try
+ {
+ ServiceRegistry.lookupProviders(null, myClassLoader);
+ caught = null;
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Load some providers of MultiplicationService, while specifying
+ // a custom class loader.
+ it = ServiceRegistry.lookupProviders(MultiplicationService.class,
+ myClassLoader);
+
+ // Check #2.
+ h.check(it.hasNext());
+
+ // Check #3.
+ s = (MultiplicationService) it.next();
+ h.check(s.multiply(4, 5), 20);
+
+ // Check #4.
+ //
+ // We intentionally do not perform an instanceof check, because
+ // this would cause MultiplierOne to be loaded when this test case
+ // gets resolved (at least on some JVMs). But then, check #5 would
+ // fail.
+ h.check(s.getName(), "MultiplierOne");
+
+ // Check #5.
+ h.check(it.hasNext());
+ s = (MultiplicationService) it.next();
+
+ // Check #6.
+ h.check(s.getName(), "MultiplierTwo");
+
+ // Check #7.
+ h.check(it.hasNext());
+ s = (MultiplicationService) it.next();
+
+ // Check #8.
+ h.check(s.getName(), "MultiplierThree");
+ h.check(!it.hasNext());
+
+ // Check #9.
+ caught = null;
+ try
+ {
+ it.next();
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof NoSuchElementException);
+ }
+
+
+ /**
+ * A handler for <code>java.util.logging</code> that feeds any log
+ * messages to the debug method of a Mauve TestHarness.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+ private static class DebugHandler
+ extends Handler
+ {
+ private final TestHarness harness;
+
+ public DebugHandler(TestHarness harness)
+ {
+ this.harness = harness;
+ setLevel(Level.ALL);
+ setFormatter(new SimpleFormatter());
+ }
+
+ public void publish(LogRecord rec)
+ {
+ harness.debug(getFormatter().format(rec).trim());
+ if (rec.getThrown() != null)
+ harness.debug(rec.getThrown());
+ }
+
+ public void flush()
+ {
+ }
+
+ public void close()
+ {
+ }
+ }
+
+
+ private void setupLogging(TestHarness harness)
+ {
+ Logger logger;
+
+ logger = Logger.getLogger("gnu.classpath");
+ logger.setLevel(Level.ALL);
+ logger.addHandler(new DebugHandler(harness));
+ }
+
+
+ private URL createProviderList(String[] listedProviders)
+ throws IOException
+ {
+ File f;
+ PrintWriter p;
+
+ f = File.createTempFile("MauveTest-", ".txt");
+ f.deleteOnExit();
+ p = new PrintWriter(new FileOutputStream(f));
+ p.println("# This file has been generated by the Mauve testsuite");
+ p.println("# while testing the mechanism for loading plug-in services.");
+ p.println("# (Code in " + this.getClass().getName() + ").");
+ p.println();
+ p.println("# It should be automatically deleted from the temporary");
+ p.println("# directory. If you happen to see this file, you probably");
+ p.println("# have run the Mauve testsuite with a Java Virtual Machine");
+ p.println("# that does not provide a correct implementaion of the method");
+ p.println("# java.io.File.deleteOnExit().");
+ p.println();
+ p.println("# Implementations for the plug-in service");
+ p.print("# ");
+ p.println(MultiplicationService.class.getName());
+ p.println();
+ for (int i = 0; i < listedProviders.length; i++)
+ p.println(listedProviders[i]);
+ p.close();
+
+ return f.toURL();
+ }
+
+
+ private class CustomClassLoader
+ extends ClassLoader
+ {
+ private final URL[] providerLists;
+
+ public CustomClassLoader(URL[] providerLists)
+ {
+ super(CustomClassLoader.class.getClassLoader());
+ this.providerLists = providerLists;
+ }
+
+
+ private class ProviderEnumeration
+ implements Enumeration
+ {
+ private int next = 0;
+
+ public Object nextElement()
+ {
+ return providerLists[next++];
+ }
+
+ public boolean hasMoreElements()
+ {
+ return next < providerLists.length;
+ }
+ };
+
+
+ protected Enumeration findResources(String name)
+ throws IOException
+ {
+ if (name.equals("META-INF/services/gnu.testlet.javax.imageio.spi"
+ + ".ServiceRegistry.MultiplicationService"))
+ return new ProviderEnumeration();
+ else
+ return super.findResources(name);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/registerServiceProvider.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/registerServiceProvider.java
new file mode 100644
index 00000000..32ef6ab4
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/registerServiceProvider.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.4
+// Uses: TestService
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.List;
+import java.util.LinkedList;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class registerServiceProvider
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ ServiceRegistry registry;
+ SomeService s1 = new SomeService();
+ TestService s2 = new TestService();
+
+ List categories = new LinkedList();
+ categories.add(SomeService.class);
+ categories.add(RegisterableService.class);
+ registry = new ServiceRegistry(categories.iterator());
+
+ // Check #1: Null argument --> IllegalArgumentException.
+ caught = null;
+ try
+ {
+ registry.registerServiceProvider(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #2: Register a service that does not implement
+ // RegisterableService.
+ registry.registerServiceProvider(s1);
+ h.check(registry.contains(s1));
+
+ // Check #3: Register a RegisterableService.
+ registry.registerServiceProvider(s2);
+ h.check(registry.contains(s2));
+
+ // Check #4.
+ h.check(s2.numRegistrations, 1);
+
+ // Check #5.
+ h.check(s2.lastRegisteredRegistry, registry);
+
+ // Check #6.
+ h.check(s2.lastRegisteredCategory, RegisterableService.class);
+ }
+
+
+ private static class SomeService
+ {
+ }
+}
diff --git a/gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java b/gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java
new file mode 100644
index 00000000..4f15763e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.spi.ServiceRegistry;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.*;
+
+import javax.imageio.spi.RegisterableService;
+import javax.imageio.spi.ServiceRegistry;
+
+/**
+ * Checks #3, #4, #7, and #9 are known to fail on JDK 1.4.1_01.
+ * The author believes that these checks should succeed, so that
+ * this shows a bug in the reference implementation of the JDK.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setOrdering
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Throwable caught;
+ ServiceRegistry registry;
+ List categories;
+
+ // Set-up.
+ categories = new LinkedList();
+ categories.add(String.class);
+ categories.add(RegisterableService.class);
+ registry = new ServiceRegistry(categories.iterator());
+ registry.registerServiceProvider("sheep", String.class);
+ registry.registerServiceProvider("goat", String.class);
+ registry.registerServiceProvider("cow", String.class);
+
+ // Check #1: Unknown category --> IllegalArgumentException.
+ caught = null;
+ try
+ {
+ registry.setOrdering(String.class, "foo", null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #2: Twice the same object --> IllegalArgumentException.
+ caught = null;
+ try
+ {
+ registry.setOrdering(String.class, "sheep", "sheep");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException);
+
+ // Check #3. Fails on JDK 1.4.1_01.
+ h.check(registry.setOrdering(String.class, "cow", "sheep"));
+
+ // Check #4. Fails on JDK 1.4.1_01.
+ h.check(registry.setOrdering(String.class, "sheep", "goat"));
+
+ // Check #5.
+ h.check(!registry.setOrdering(String.class, "sheep", "goat"));
+
+ // Check #6.
+ h.check(!registry.setOrdering(String.class, "cow", "sheep"));
+
+ // Check #7. Fails on JDK 1.4.1_01.
+ h.check(registry.unsetOrdering(String.class, "cow", "sheep"));
+
+ // Check #8.
+ h.check(!registry.unsetOrdering(String.class, "cow", "sheep"));
+
+ // Check #9. Fails on JDK 1.4.1_01.
+ h.check(registry.setOrdering(String.class, "cow", "sheep"));
+ }
+}
diff --git a/gnu/testlet/javax/imageio/stream/CVS/Entries b/gnu/testlet/javax/imageio/stream/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/imageio/stream/CVS/Entries.Log b/gnu/testlet/javax/imageio/stream/CVS/Entries.Log
new file mode 100644
index 00000000..147391ac
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/IIOByteBuffer////
+A D/MemoryCacheImageInputStream////
diff --git a/gnu/testlet/javax/imageio/stream/CVS/Repository b/gnu/testlet/javax/imageio/stream/CVS/Repository
new file mode 100644
index 00000000..aaac89f9
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/stream
diff --git a/gnu/testlet/javax/imageio/stream/CVS/Root b/gnu/testlet/javax/imageio/stream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Entries b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Entries
new file mode 100644
index 00000000..721426d3
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Entries
@@ -0,0 +1,4 @@
+/setData.java/1.1/Tue Apr 13 14:23:50 2004//
+/setLength.java/1.1/Tue Apr 13 14:23:50 2004//
+/setOffset.java/1.1/Tue Apr 13 14:23:50 2004//
+D
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Repository b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Repository
new file mode 100644
index 00000000..1af10fac
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/stream/IIOByteBuffer
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Root b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setData.java b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setData.java
new file mode 100644
index 00000000..e0732403
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setData.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.stream.IIOByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.stream.IIOByteBuffer;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setData
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIOByteBuffer buf;
+ byte[] b1 = new byte[] { 1, 2, 3 };
+ byte[] b2 = new byte[] { 1, 2, 3 };
+
+ // Check #1.
+ buf = new IIOByteBuffer(b1, 0, 1);
+ buf.setData(b2);
+ h.check(buf.getData() == b2);
+
+ // Check #2.
+ buf.setData(null);
+ h.check(buf.getData(), null);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setLength.java b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setLength.java
new file mode 100644
index 00000000..7430d1c1
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setLength.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.stream.IIOByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.stream.IIOByteBuffer;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setLength
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIOByteBuffer buf;
+ byte[] b1 = new byte[] { 1, 2, 3 };
+
+ // Check #1.
+ buf = new IIOByteBuffer(b1, 0, 1);
+ buf.setLength(2);
+ h.check(buf.getLength(), 2);
+
+ // Check #2: Length greater than array length.
+ buf.setLength(99);
+ h.check(buf.getLength(), 99);
+
+ // Check #3: Length negative.
+ buf.setLength(-42);
+ h.check(buf.getLength(), -42);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setOffset.java b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setOffset.java
new file mode 100644
index 00000000..a0e59631
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/IIOByteBuffer/setOffset.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.imageio.stream.IIOByteBuffer;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.imageio.stream.IIOByteBuffer;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setOffset
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ IIOByteBuffer buf;
+ byte[] b1 = new byte[] { 1, 2, 3 };
+
+ // Check #1.
+ buf = new IIOByteBuffer(b1, 0, 1);
+ buf.setOffset(1);
+ h.check(buf.getOffset(), 1);
+
+ // Check #2: Offset greater than array length.
+ buf.setOffset(99);
+ h.check(buf.getOffset(), 99);
+
+ // Check #3: Offset negative.
+ buf.setOffset(-42);
+ h.check(buf.getOffset(), -42);
+ }
+}
diff --git a/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Entries b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Entries
new file mode 100644
index 00000000..f5083fa0
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/TestImageInputStreamImpl.java/1.2/Fri May 19 02:09:13 2006//
+D
diff --git a/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Repository b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Repository
new file mode 100644
index 00000000..97039f3e
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream
diff --git a/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Root b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java
new file mode 100644
index 00000000..323d62c1
--- /dev/null
+++ b/gnu/testlet/javax/imageio/stream/MemoryCacheImageInputStream/TestImageInputStreamImpl.java
@@ -0,0 +1,702 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.imageio.stream.MemoryCacheImageInputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.ByteOrder;
+import java.util.Arrays;
+
+import javax.imageio.stream.ImageInputStream;
+import javax.imageio.stream.ImageInputStreamImpl;
+import javax.imageio.stream.MemoryCacheImageInputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test ImageInputStreamImpl.
+ */
+public class TestImageInputStreamImpl
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ int k = 0;
+
+ try
+ {
+ // Test unsigned values.
+ byte[] b = new byte[]
+ {
+ (byte) 0x72,
+ (byte) 0x70,
+ (byte) 0x05,
+ (byte) 0x77,
+ (byte) 0xac,
+ (byte) 0xf2,
+ (byte) 0x3b,
+ (byte) 0x67
+ };
+
+ ByteArrayInputStream bs = new ByteArrayInputStream(b);
+ ImageInputStream i = new MemoryCacheImageInputStream(bs);
+
+ // Test ByteOrder.BIG_ENDIAN, the default.
+
+ h.check(i.getByteOrder() == ByteOrder.BIG_ENDIAN);
+
+ h.check(i.read() == 114);
+ i.seek(0);
+ h.check(i.readBoolean() == true);
+ i.seek(0);
+ h.check(i.readByte() == 114);
+ i.seek(0);
+ h.check(i.readChar() == '\u7270');
+ i.seek(0);
+ h.check(Double.compare(i.readDouble(), 1.709290273164385E243) == 0);
+ i.seek(0);
+ h.check(Float.compare(i.readFloat(), 4.7541126E30f) == 0);
+ i.seek(0);
+ h.check(i.readInt() == 1919944055);
+ i.seek(0);
+ h.check(i.readLong() == 8246096929276181351L);
+ i.seek(0);
+ h.check(i.readShort() == 29296);
+ i.seek(0);
+ h.check(i.readUnsignedByte() == 114);
+ i.seek(0);
+ h.check(i.readUnsignedInt() == 1919944055);
+ i.seek(0);
+ h.check(i.readUnsignedShort() == 29296);
+
+ // Test ByteOrder.LITTLE_ENDIAN.
+ i.setByteOrder(ByteOrder.LITTLE_ENDIAN);
+
+ h.check(i.getByteOrder() == ByteOrder.LITTLE_ENDIAN);
+ i.seek(0);
+ h.check(i.read() == 114);
+ i.seek(0);
+ h.check(i.readBoolean() == true);
+ i.seek(0);
+ h.check(i.readByte() == 114);
+ i.seek(0);
+ h.check(i.readChar() == '\u7072');
+ i.seek(0);
+ h.check(Double.compare(i.readDouble(), 1.9456609400629563E189) == 0);
+ i.seek(0);
+ h.check(Float.compare(i.readFloat(), 2.7064693E33f) == 0);
+ i.seek(0);
+ h.check(i.readInt() == 1996845170);
+ i.seek(0);
+ h.check(i.readLong() == 7438806032077647986L);
+ i.seek(0);
+ h.check(i.readShort() == 28786);
+ i.seek(0);
+ h.check(i.readUnsignedByte() == 114);
+ i.seek(0);
+ h.check(i.readUnsignedInt() == 1996845170);
+ i.seek(0);
+ h.check(i.readUnsignedShort() == 28786);
+
+ // Test unsigned values.
+ b = new byte[]
+ {
+ (byte) 0x92,
+ (byte) 0x80,
+ (byte) 0x05,
+ (byte) 0x77,
+ (byte) 0xac,
+ (byte) 0xf2,
+ (byte) 0x8b,
+ (byte) 0xa7
+ };
+
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ // Test ByteOrder.BIG_ENDIAN, the default.
+ h.check(i.read() == 146);
+ i.seek(0);
+ h.check(i.readBoolean() == true);
+ i.seek(0);
+ h.check(i.readByte() == -110);
+ i.seek(0);
+ h.check(i.readChar() == '\u9280');
+ i.seek(0);
+ h.check(Double.compare(i.readDouble(), -1.4183142849706364E-219) == 0);
+ i.seek(0);
+ h.check(Float.compare(i.readFloat(), -8.079283E-28f) == 0);
+ i.seek(0);
+ h.check(i.readInt() == -1837103753);
+ i.seek(0);
+ h.check(i.readLong() == -7890300535592285273L);
+ i.seek(0);
+ h.check(i.readShort() == -28032);
+ i.seek(0);
+ h.check(i.readUnsignedByte() == 146);
+ i.seek(0);
+ h.check(i.readUnsignedInt() == 2457863543L);
+ i.seek(0);
+ h.check(i.readUnsignedShort() == 37504);
+
+ // Test ByteOrder.LITTLE_ENDIAN.
+ i.setByteOrder(ByteOrder.LITTLE_ENDIAN);
+ i.seek(0);
+ h.check(i.read() == 146);
+ i.seek(0);
+ h.check(i.readBoolean() == true);
+ i.seek(0);
+ h.check(i.readByte() == -110);
+ i.seek(0);
+ h.check(i.readChar() == '\u8092');
+ i.seek(0);
+ h.check(Double.compare(i.readDouble(), -3.463391436203922E-118) == 0);
+ i.seek(0);
+ h.check(Float.compare(i.readFloat(), 2.707747E33f) == 0);
+ i.seek(0);
+ h.check(i.readInt() == 1996849298);
+ i.seek(0);
+ h.check(i.readLong() == -6373734025067659118L);
+ i.seek(0);
+ h.check(i.readShort() == -32622);
+ i.seek(0);
+ h.check(i.readUnsignedByte() == 146);
+ i.seek(0);
+ h.check(i.readUnsignedInt() == 1996849298);
+ i.seek(0);
+ h.check(i.readUnsignedShort() == 32914);
+
+ // Test flush().
+
+ i.seek(4);
+
+ h.check(i.getStreamPosition() == 4);
+
+ i.flush();
+
+ h.check(i.getFlushedPosition() == 4);
+
+ boolean exceptionThrown = false;
+ try
+ {
+ i.flushBefore(3);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.flushBefore(5);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.seek(2);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.seek(3);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.setBitOffset(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.setBitOffset(8);
+ }
+ catch (IllegalArgumentException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ i.setBitOffset(4);
+ h.check(i.getBitOffset() == 4);
+
+ // A MemoryCacheImageInputStream is cached in memory.
+ h.check(i.isCached() == true);
+ h.check(i.isCachedFile() == false);
+ h.check(i.isCachedMemory() == true);
+
+ h.check(i.length() == -1);
+
+ // Test mark() and reset().
+ i.seek(4);
+ i.mark();
+
+ i.read();
+ i.read();
+
+ i.reset();
+ h.check(i.getStreamPosition() == 4);
+
+ // Test readBit().
+ // We're currently at b[4], byte 0xac.
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+
+ // Check that the bit offset is incremented.
+ h.check(i.getBitOffset() == 7);
+
+ // Roll back the bit offset within the same byte.
+ i.setBitOffset(2);
+
+ // R-read some bits within the same byte.
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+
+ // Check that the stream position is still 4.
+ h.check(i.getStreamPosition() == 4);
+
+ // Read the final bit in b[4].
+ h.check(i.readBit() == 0);
+
+ // Check that readBit on the 8th bit increments the stream
+ // position.
+ h.check(i.getStreamPosition() == 5);
+
+ // Read the bits from b[5], byte 0xf2.
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 1);
+
+ h.check(i.getBitOffset() == 4);
+
+ h.check(i.readBit() == 0);
+ h.check(i.readBit() == 0);
+ h.check(i.readBit() == 1);
+ h.check(i.readBit() == 0);
+
+ // Check that the bit offset is reset and the position
+ // incremented.
+ h.check(i.getBitOffset() == 0);
+ h.check(i.getStreamPosition() == 6);
+
+ h.check(i.length() == -1);
+
+ // Test close().
+ i.close();
+
+ // Test checkClosed().
+ exceptionThrown = false;
+ try
+ {
+ i.close();
+ }
+ catch (IOException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ // 64 bytes of data.
+ b = new byte[]
+ {
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ };
+
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ // Test readBits().
+ i.seek(5);
+ i.setBitOffset(6);
+
+ exceptionThrown = false;
+ try
+ {
+ i.readBits(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ exceptionThrown = false;
+ try
+ {
+ i.readBits(65);
+ }
+ catch (IllegalArgumentException e)
+ {
+ exceptionThrown = true;
+ }
+ h.check(exceptionThrown);
+
+ h.check(i.readBits(59) == 366848453836545810L);
+
+ i.seek(5);
+ i.setBitOffset(6);
+ h.check(i.readBits(58) == 183424226918272905L);
+
+ b = new byte[]
+ {
+ (byte) 0xa2, (byte) 0xe9, (byte) 0xd7, (byte) 0x34,
+ (byte) 0x2a, (byte) 0x83, (byte) 0xe2, (byte) 0x40
+ };
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+ h.check(i.readBits(59) == 366848453836545810L);
+
+ b = new byte[]
+ {
+ (byte) 0xa2, (byte) 0x02
+ };
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ long[] res = new long[8];
+
+ i.seek(0);
+
+ h.check(i.readBits(0) == 0);
+ i.seek(0);
+
+ for (k = 0; k < 8; k++)
+ {
+ i.setBitOffset(k);
+ res[k] = i.readBits(8);
+ i.seek(0);
+ }
+ i.seek(0);
+ h.check(Arrays.equals(res, new long[] { 162, 68, 136, 16,
+ 32, 64, 128, 1 }));
+
+ // 64 bytes of data.
+ b = new byte[]
+ {
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ // Here is a two-character-long UTF String to be read by
+ // DataInputStream.
+ (byte) 0x00, (byte) 0x02, (byte) 0x12, (byte) 0x21,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ };
+
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ // Test mark() and reset().
+ i.seek(17);
+ h.check(i.getStreamPosition() == 17);
+ i.mark();
+ i.seek(49);
+ h.check(i.getStreamPosition() == 49);
+ i.reset();
+ h.check(i.getStreamPosition() == 17);
+
+ // Test skipBytes().
+ i.setBitOffset(3);
+ i.skipBytes(20);
+ h.check(i.getStreamPosition() == 37);
+ h.check(i.getBitOffset() == 0);
+
+ // Test readUTF().
+ i.seek(12);
+ String str = i.readUTF();
+ h.check(str.codePointAt(0) == 18);
+ h.check(str.codePointAt(1) == 33);
+
+ b = new byte[]
+ { (byte) 0x47, (byte) 0x4e, (byte) 0x55,
+ '\r',
+ (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73,
+ (byte) 0x70, (byte) 0x61, (byte) 0x74, (byte) 0x68,
+ '\r', '\n',
+ (byte) 0x52, (byte) 0x75, (byte) 0x6c,
+ (byte) 0x65, (byte) 0x7a,
+ '\n',
+ (byte) 0x44, (byte) 0x75, (byte) 0x64, (byte) 0x65, (byte) 0x7a,
+ (byte) 0x21,
+ '\r'
+ };
+
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ h.check(i.readLine().equals("GNU"));
+ h.check(i.readLine().equals("Classpath"));
+ h.check(i.readLine().equals("Rulez"));
+ h.check(i.readLine().equals("Dudez!"));
+ h.check(i.readLine() == null);
+
+ // 64 bytes of data.
+ b = new byte[]
+ {
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ };
+
+ bs = new ByteArrayInputStream(b);
+ i = new MemoryCacheImageInputStream(bs);
+
+ byte[] fullB = new byte[26];
+ i.seek(0);
+ i.readFully(fullB);
+ h.check(Arrays.equals(fullB,
+ new byte[]
+ {
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2, (byte) 0x8b, (byte) 0xa7,
+ (byte) 0x5c, (byte) 0xd0, (byte) 0xaa, (byte) 0x0f,
+ (byte) 0x89, (byte) 0x00, (byte) 0x12, (byte) 0xf1,
+ (byte) 0xa1, (byte) 0xef, (byte) 0x82, (byte) 0x00,
+ (byte) 0x92, (byte) 0x80, (byte) 0x05, (byte) 0x77,
+ (byte) 0xac, (byte) 0xf2
+ }));
+
+ for (k = 0; k < fullB.length; k++)
+ fullB[k] = 0;
+
+ i.seek(0);
+ i.readFully(fullB, 5, 13);
+
+ h.check(Arrays.equals(fullB, new byte[]
+ {
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x92, (byte) 0x80, (byte) 0x05,
+ (byte) 0x77, (byte) 0xac, (byte) 0xf2, (byte) 0x8b,
+ (byte) 0xa7, (byte) 0x5c, (byte) 0xd0, (byte) 0xaa,
+ (byte) 0x0f, (byte) 0x89, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00
+ }));
+
+ char[] fullC = new char[15];
+ i.seek(0);
+ i.readFully(fullC, 0, 15);
+
+ h.check(Arrays.equals(fullC, new char[]
+ {
+ (char) 37504, (char) 1399, (char) 44274,
+ (char) 35751, (char) 23760, (char) 43535,
+ (char) 35072, (char) 4849, (char) 41455,
+ (char) 33280, (char) 37504, (char) 1399,
+ (char) 44274, (char) 35751, (char) 23760
+ }));
+
+ double[] fullD = new double[8];
+ i.seek(0);
+ i.readFully(fullD, 0, 8);
+
+ h.check(Arrays.equals(fullD, new double[] {
+ -1.4183142849706364E-219,
+ 1.2402952421911034E139,
+ -3.154063812740471E-145,
+ -3.556316535750171E-92,
+ -2.4925149951304603E-265,
+ -1.4183142849706364E-219,
+ 1.2402952421911034E139,
+ -3.154063812740471E-145
+ }));
+
+ float[] fullF = new float[16];
+ i.seek(0);
+ i.readFully(fullF, 0, 16);
+
+ h.check(Arrays.equals(fullF, new float[] {
+ -8.079283E-28f,
+ -6.893558E-12f,
+ 4.69870212E17f,
+ -1.5416346E-33f,
+ -1.6229681E-18f,
+ -8.079283E-28f,
+ -6.893558E-12f,
+ 4.69870212E17f,
+ -1.5416346E-33f,
+ -1.6229681E-18f,
+ -8.079283E-28f,
+ -6.893558E-12f,
+ 4.69870212E17f,
+ -1.5416346E-33f,
+ -1.6229681E-18f,
+ -8.079283E-28f
+ }));
+
+ int[] fullI = new int[16];
+ i.seek(0);
+ i.readFully(fullI, 0, 16);
+
+ h.check(Arrays.equals(fullI, new int[] {
+ -1837103753,
+ -1393390681,
+ 1557178895,
+ -1996483855,
+ -1578139136,
+ -1837103753,
+ -1393390681,
+ 1557178895,
+ -1996483855,
+ -1578139136,
+ -1837103753,
+ -1393390681,
+ 1557178895,
+ -1996483855,
+ -1578139136,
+ -1837103753,
+ }));
+
+ long[] fullL = new long[8];
+ i.seek(0);
+ i.readFully(fullL, 0, 8);
+
+ h.check(Arrays.equals(fullL, new long[] {
+ -7890300535592285273L,
+ 6688032430344901361L,
+ -6778055975199832713L,
+ -5984567403888989681L,
+ -8574832861500177920L,
+ -7890300535592285273L,
+ 6688032430344901361L,
+ -6778055975199832713L,
+ }));
+
+ short[] fullS = new short[32];
+ i.seek(0);
+ i.readFully(fullS, 0, 32);
+
+ h.check(Arrays.equals(fullS, new short[] {
+ -28032,
+ 1399,
+ -21262,
+ -29785,
+ 23760,
+ -22001,
+ -30464,
+ 4849,
+ -24081,
+ -32256,
+ -28032,
+ 1399,
+ -21262,
+ -29785,
+ 23760,
+ -22001,
+ -30464,
+ 4849,
+ -24081,
+ -32256,
+ -28032,
+ 1399,
+ -21262,
+ -29785,
+ 23760,
+ -22001,
+ -30464,
+ 4849,
+ -24081,
+ -32256,
+ -28032,
+ 1399,
+ }));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/management/CVS/Entries b/gnu/testlet/javax/management/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/management/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/management/CVS/Entries.Log b/gnu/testlet/javax/management/CVS/Entries.Log
new file mode 100644
index 00000000..c34057f0
--- /dev/null
+++ b/gnu/testlet/javax/management/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/MBeanServerInvocationHandler////
+A D/MBeanServerPermission////
+A D/ObjectName////
+A D/openmbean////
+A D/remote////
diff --git a/gnu/testlet/javax/management/CVS/Repository b/gnu/testlet/javax/management/CVS/Repository
new file mode 100644
index 00000000..ef3bfe7c
--- /dev/null
+++ b/gnu/testlet/javax/management/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management
diff --git a/gnu/testlet/javax/management/CVS/Root b/gnu/testlet/javax/management/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Entries b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Entries
new file mode 100644
index 00000000..41aa9417
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Entries
@@ -0,0 +1,10 @@
+/ChildMXBean.java/1.1/Tue Jun 19 21:06:43 2007//
+/Colour.java/1.1/Mon Mar 5 00:38:21 2007//
+/MBeanProxy.java/1.4/Wed May 21 15:00:43 2008//
+/Test.java/1.1/Mon Mar 5 00:38:21 2007//
+/TestC.java/1.2/Sat Apr 7 11:31:12 2007//
+/TestCMXBean.java/1.2/Sat Apr 7 11:31:12 2007//
+/TestMBean.java/1.1/Mon Mar 5 00:38:21 2007//
+/TestX.java/1.1/Mon Mar 5 00:38:21 2007//
+/TestXMBean.java/1.1/Mon Mar 5 00:38:21 2007//
+D
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Repository b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Repository
new file mode 100644
index 00000000..e9cbf80f
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/MBeanServerInvocationHandler
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Root b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/ChildMXBean.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/ChildMXBean.java
new file mode 100644
index 00000000..19846723
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/ChildMXBean.java
@@ -0,0 +1,35 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+/**
+ * Test {@link javax.management.MXBean} for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public interface ChildMXBean
+{
+
+ TestCMXBean getParent();
+
+ void setParent(TestCMXBean bean);
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/Colour.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/Colour.java
new file mode 100644
index 00000000..9012cd2f
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/Colour.java
@@ -0,0 +1,27 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+public enum Colour
+{
+ RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java
new file mode 100644
index 00000000..1fd16d38
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/MBeanProxy.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.5
+// Uses: ChildMXBean Colour Test TestX TestC TestMBean TestXMBean TestCMXBean
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.Proxy;
+
+import javax.management.JMX;
+import javax.management.MalformedObjectNameException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+/**
+ * Tests {@link MBeanServerInvocationHandler}
+ * for MBeans.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class MBeanProxy
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ObjectName name = null;
+ ObjectName namex = null;
+ ObjectName namec = null;
+ ObjectName namecc = null;
+ try
+ {
+ name = new ObjectName("mauve:test=go");
+ namex = new ObjectName("mauve:test=gox");
+ namec = new ObjectName("mauve:test=goc");
+ namecc = new ObjectName("mauve:test=gocc");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.debug(e);
+ }
+ MBeanServer server = MBeanServerFactory.createMBeanServer();
+ try
+ {
+ server.registerMBean(new Test("GNU Classpath"), name);
+ server.registerMBean(new TestX("GNU Classpath"), namex);
+ server.registerMBean(new TestC(), namec);
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ }
+ TestMBean test = JMX.newMBeanProxy(server, name, TestMBean.class);
+ h.check(test.getName(), "GNU Classpath", "Name test");
+ h.check(test.isEdible(), false, "Edible test");
+ h.checkPoint("Mutator test");
+ test.setName("Mauve");
+ h.check(test.getName(), "Mauve", "Name test after change");
+ h.check(test.equals(test), "Proxy equivalence reflection test");
+ TestXMBean testx = JMX.newMBeanProxy(server, namex, TestXMBean.class);
+ h.checkPoint("Calling equals");
+ testx.equals(null);
+ h.check(testx.getLastMethodCalled(), "equals");
+ h.checkPoint("Calling hashCode");
+ testx.hashCode();
+ h.check(testx.getLastMethodCalled(), "hashCode");
+ h.checkPoint("Calling toString");
+ testx.toString();
+ h.check(testx.getLastMethodCalled(), "toString");
+ final TestCMXBean testc = JMX.newMXBeanProxy(server, namec, TestCMXBean.class);
+ h.checkPoint("Setting id");
+ testc.setId(42);
+ h.check(testc.getId(), 42, "Getting id");
+ h.checkPoint("Setting size");
+ testc.setSize(5);
+ h.check(testc.getSize() == 5, "Getting size");
+ h.checkPoint("Setting name");
+ testc.setName(namec);
+ h.check(testc.getName(), namec, "Getting name");
+ h.checkPoint("Setting weights");
+ float[] weights = new float[] { 0.5f, -0.7f };
+ testc.setWeights(weights);
+ h.check(testc.getWeights(), weights, "Getting weights");
+ h.checkPoint("Setting names");
+ String[] names = new String[] { "Bob", "Jim", "Jake" };
+ testc.setNames(names);
+ h.check(testc.getNames(), names, "Getting names");
+ h.checkPoint("Setting ages");
+ Set<Integer> ages = new HashSet();
+ ages.add(45);
+ ages.add(24);
+ testc.setAges(ages);
+ h.check(testc.getAges(), ages, "Getting ages");
+ h.checkPoint("Setting biscuits");
+ SortedSet<String> biscuits = new TreeSet();
+ biscuits.add("Chocolate");
+ biscuits.add("Ginger");
+ biscuits.add("Plain");
+ testc.setBiscuits(biscuits);
+ h.check(testc.getBiscuits(), biscuits, "Getting biscuits");
+ h.checkPoint("Setting colour");
+ testc.setColour(Colour.RED);
+ h.check(testc.getColour(), Colour.RED, "Getting colour");
+ h.checkPoint("Setting phone numbers");
+ Map<String,Integer> numbers = new HashMap();
+ numbers.put("Bob",999);
+ numbers.put("Jim",111);
+ numbers.put("Sam",55);
+ testc.setPhoneNumbers(numbers);
+ h.check(testc.getPhoneNumbers(), numbers, "Getting phone numbers");
+ h.checkPoint("Setting sorted phone numbers");
+ SortedMap<String,Integer> snumbers = new TreeMap();
+ snumbers.put("Bob",999);
+ snumbers.put("Jim",111);
+ snumbers.put("Sam",55);
+ testc.setSortedPhoneNumbers(snumbers);
+ h.check(testc.getSortedPhoneNumbers(), numbers, "Getting sorted phone numbers");
+ h.checkPoint("Creating and setting child");
+ ChildMXBean child = new ChildMXBean() {
+ public TestCMXBean getParent() { return testc; }
+ public void setParent(TestCMXBean bean) { }
+ };
+ try
+ {
+ server.registerMBean(child, namecc);
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ }
+ ChildMXBean cproxy = JMX.newMXBeanProxy(server, namecc, ChildMXBean.class);
+ testc.setChild(cproxy);
+ h.check(testc.getChild(), cproxy, "Getting child");
+ }
+
+}
+
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/Test.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/Test.java
new file mode 100644
index 00000000..4a736716
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/Test.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+/**
+ * Test bean implementation for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Test
+ implements TestMBean
+{
+
+ private String name;
+
+ public Test(String name)
+ {
+ setName(name);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public boolean isEdible()
+ {
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java
new file mode 100644
index 00000000..09ea3030
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestC.java
@@ -0,0 +1,172 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+import javax.management.ObjectName;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+
+/**
+ * Test {@link javax.management.MXBean} implementation for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class TestC
+ implements TestCMXBean
+{
+
+ private int id;
+
+ private Integer size;
+
+ private ObjectName name;
+
+ private float[] weights;
+
+ private String[] names;
+
+ private Set<Integer> ages;
+
+ private SortedSet<String> biscuits;
+
+ private Colour colour;
+
+ private Map<String,Integer> numbers;
+
+ private SortedMap<String, Integer> sortedNumbers;
+
+ private ChildMXBean child;
+
+ public int getId()
+ {
+ return id;
+ }
+
+ public void setId(int id)
+ {
+ this.id = id;
+ }
+
+ public Integer getSize()
+ {
+ return size;
+ }
+
+ public void setSize(Integer size)
+ {
+ this.size = size;
+ }
+
+ public ObjectName getName()
+ {
+ return name;
+ }
+
+ public void setName(ObjectName name)
+ {
+ this.name = name;
+ }
+
+ public float[] getWeights()
+ {
+ return weights;
+ }
+
+ public void setWeights(float[] weights)
+ {
+ this.weights = weights;
+ }
+
+ public String[] getNames()
+ {
+ return names;
+ }
+
+ public void setNames(String[] names)
+ {
+ this.names = names;
+ }
+
+ public Set<Integer> getAges()
+ {
+ return ages;
+ }
+
+ public void setAges(Set<Integer> ages)
+ {
+ this.ages = ages;
+ }
+
+ public SortedSet<String> getBiscuits()
+ {
+ return biscuits;
+ }
+
+ public void setBiscuits(SortedSet<String> biscuits)
+ {
+ this.biscuits = biscuits;
+ }
+
+ public Colour getColour()
+ {
+ return colour;
+ }
+
+ public void setColour(Colour colour)
+ {
+ this.colour = colour;
+ }
+
+ public Map<String,Integer> getPhoneNumbers()
+ {
+ return numbers;
+ }
+
+ public void setPhoneNumbers(Map<String,Integer> numbers)
+ {
+ this.numbers = numbers;
+ }
+
+ public SortedMap<String,Integer> getSortedPhoneNumbers()
+ {
+ return sortedNumbers;
+ }
+
+ public void setSortedPhoneNumbers(SortedMap<String,Integer> numbers)
+ {
+ sortedNumbers = numbers;
+ }
+
+ public ChildMXBean getChild()
+ {
+ return child;
+ }
+
+ public void setChild(ChildMXBean child)
+ {
+ this.child = child;
+ }
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java
new file mode 100644
index 00000000..910987b3
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestCMXBean.java
@@ -0,0 +1,83 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+import javax.management.ObjectName;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+
+/**
+ * Test {@link javax.management.MXBean} for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public interface TestCMXBean
+{
+
+ int getId();
+
+ void setId(int id);
+
+ Integer getSize();
+
+ void setSize(Integer size);
+
+ ObjectName getName();
+
+ void setName(ObjectName name);
+
+ float[] getWeights();
+
+ void setWeights(float[] weights);
+
+ String[] getNames();
+
+ void setNames(String[] names);
+
+ Set<Integer> getAges();
+
+ void setAges(Set<Integer> ages);
+
+ SortedSet<String> getBiscuits();
+
+ void setBiscuits(SortedSet<String> biscuits);
+
+ Colour getColour();
+
+ void setColour(Colour colour);
+
+ Map<String,Integer> getPhoneNumbers();
+
+ void setPhoneNumbers(Map<String,Integer> numbers);
+
+ SortedMap<String, Integer> getSortedPhoneNumbers();
+
+ void setSortedPhoneNumbers(SortedMap<String, Integer> numbers);
+
+ ChildMXBean getChild();
+
+ void setChild(ChildMXBean bean);
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestMBean.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestMBean.java
new file mode 100644
index 00000000..f0d7ffcc
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestMBean.java
@@ -0,0 +1,40 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+import javax.management.MBeanServerInvocationHandler;
+
+/**
+ * Test bean for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public interface TestMBean
+{
+
+ String getName();
+
+ void setName(String name);
+
+ boolean isEdible();
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestX.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestX.java
new file mode 100644
index 00000000..ee5b3a86
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestX.java
@@ -0,0 +1,69 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+/**
+ * Test bean implementation for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class TestX
+ extends Test
+ implements TestXMBean
+{
+
+ private String lastMethodCalled;
+
+ public TestX(String name)
+ {
+ super(name);
+ }
+
+ public boolean equals(Object obj)
+ {
+ lastMethodCalled = "equals";
+ return false;
+ }
+
+ public int hashCode()
+ {
+ lastMethodCalled = "hashCode";
+ return 42;
+ }
+
+ public String getLastMethodCalled()
+ {
+ return lastMethodCalled;
+ }
+
+ public String toString()
+ {
+ lastMethodCalled = "toString";
+ return getClass().getName() +
+ "[name=" + getName() +
+ ",isEdible=" + isEdible() +
+ ",lastMethodCalled=" + lastMethodCalled +
+ "]";
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestXMBean.java b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestXMBean.java
new file mode 100644
index 00000000..818dfcbd
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerInvocationHandler/TestXMBean.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerInvocationHandler;
+
+import javax.management.MBeanServerInvocationHandler;
+
+/**
+ * Test bean for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public interface TestXMBean
+ extends TestMBean
+{
+
+ boolean equals(Object obj);
+
+ int hashCode();
+
+ String getLastMethodCalled();
+
+ String toString();
+
+}
diff --git a/gnu/testlet/javax/management/MBeanServerPermission/CVS/Entries b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Entries
new file mode 100644
index 00000000..afb60aff
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Entries
@@ -0,0 +1,2 @@
+/Constructor.java/1.1/Mon Mar 5 00:38:21 2007//
+D
diff --git a/gnu/testlet/javax/management/MBeanServerPermission/CVS/Repository b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Repository
new file mode 100644
index 00000000..d301c77d
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/MBeanServerPermission
diff --git a/gnu/testlet/javax/management/MBeanServerPermission/CVS/Root b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerPermission/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/MBeanServerPermission/Constructor.java b/gnu/testlet/javax/management/MBeanServerPermission/Constructor.java
new file mode 100644
index 00000000..3da051a2
--- /dev/null
+++ b/gnu/testlet/javax/management/MBeanServerPermission/Constructor.java
@@ -0,0 +1,177 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2006 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.MBeanServerPermission;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.MBeanServerPermission;
+
+/**
+ * Tests creation of an
+ * {@link MBeanServerPermission}.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Constructor
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ Exception caught = null;
+
+ // Check null name throws NullPointerException
+ try
+ {
+ new MBeanServerPermission(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof NullPointerException, "Null name");
+
+ caught = null;
+ // Check "*" is a valid name
+ try
+ {
+ new MBeanServerPermission("*");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, "* is valid");
+
+ // Check valid values are allowed
+ String[] valid = new String[] { "createMBeanServer", "newMBeanServer",
+ "findMBeanServer", "releaseMBeanServer" };
+ // 1
+ for (int a = 0; a < valid.length; ++a)
+ {
+ caught = null;
+ try
+ {
+ new MBeanServerPermission(valid[a]);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, valid[a] + " is valid");
+ }
+ // 2
+ for (int a = 0; a < valid.length; ++a)
+ for (int b = 0; b < valid.length; ++b)
+ {
+ caught = null;
+ String permit = valid[a] + "," + valid[b];
+ try
+ {
+ new MBeanServerPermission(permit);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, permit + " is valid");
+ }
+ // 3
+ for (int a = 0; a < valid.length; ++a)
+ for (int b = 0; b < valid.length; ++b)
+ for (int c = 0; c < valid.length; ++c)
+ {
+ caught = null;
+ String permit = valid[a] + "," + valid[b] + "," + valid[c];
+ try
+ {
+ new MBeanServerPermission(permit);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, permit + " is valid");
+ }
+ // 4
+ for (int a = 0; a < valid.length; ++a)
+ for (int b = 0; b < valid.length; ++b)
+ for (int c = 0; c < valid.length; ++c)
+ for (int d = 0; d < valid.length; ++d)
+ {
+ caught = null;
+ String permit = valid[a] + "," + valid[b] + "," + valid[c]
+ + "," + valid[d];
+ try
+ {
+ new MBeanServerPermission(permit);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, permit + " is valid");
+ }
+
+ caught = null;
+ // Check with spaces
+ try
+ {
+ new MBeanServerPermission(" createMBeanServer , newMBeanServer ");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught, null, "spaces are valid");
+
+ caught = null;
+ // Check random stuff gets thrown out
+ try
+ {
+ new MBeanServerPermission("fjafjlskjflka");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException,
+ "other names are invalid");
+
+ caught = null;
+ // Check non-null non-empty actions are caught
+ try
+ {
+ new MBeanServerPermission("*","fishcakes");
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ h.check(caught instanceof IllegalArgumentException,
+ "non-null non-empty actions are invalid");
+
+ }
+
+}
+
diff --git a/gnu/testlet/javax/management/ObjectName/CVS/Entries b/gnu/testlet/javax/management/ObjectName/CVS/Entries
new file mode 100644
index 00000000..53de6437
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/CVS/Entries
@@ -0,0 +1,5 @@
+/Parsing.java/1.2/Mon Apr 9 21:50:16 2007//
+/ParsingJDK6.java/1.1/Sat Apr 7 11:31:12 2007//
+/apply.java/1.1/Tue Feb 20 11:25:52 2007//
+/applyJDK6.java/1.1/Mon Apr 9 21:50:16 2007//
+D
diff --git a/gnu/testlet/javax/management/ObjectName/CVS/Repository b/gnu/testlet/javax/management/ObjectName/CVS/Repository
new file mode 100644
index 00000000..b796a36c
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/ObjectName
diff --git a/gnu/testlet/javax/management/ObjectName/CVS/Root b/gnu/testlet/javax/management/ObjectName/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/ObjectName/Parsing.java b/gnu/testlet/javax/management/ObjectName/Parsing.java
new file mode 100644
index 00000000..3701030b
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/Parsing.java
@@ -0,0 +1,333 @@
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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: JDK1.5
+
+package gnu.testlet.javax.management.ObjectName;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class Parsing implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ObjectName name;
+ try
+ {
+ h.checkPoint("Default name");
+ name = new ObjectName("*:*");
+ h.check(true);
+ h.check(name.isDomainPattern(), true);
+ h.check(name.isPropertyPattern(), true);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "*");
+ h.check(name.getKeyPropertyListString(), "");
+ h.checkPoint("Mixed keys and wildcards");
+ name =
+ new ObjectName("jboss.management.local:j2eeType=ServiceModule,*,name=jbossmq-httpil.sar");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), true);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "jboss.management.local");
+ h.check(name.getKeyPropertyListString(), "j2eeType=ServiceModule,name=jbossmq-httpil.sar");
+ h.checkPoint("Match any domain with specific keys");
+ name = new ObjectName("*:library=Classpath,project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), true);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "*");
+ h.check(name.getCanonicalKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match any domain with specific keys and wildcard at end");
+ name = new ObjectName("*:library=Classpath,project=GNU,*");
+ h.check(true);
+ h.check(name.isDomainPattern(), true);
+ h.check(name.isPropertyPattern(), true);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "*");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match any domain beginning with 'fs' with specific keys");
+ name = new ObjectName("fs?:library=Classpath,project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), true);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "fs?");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match any domain beginning with 'fs' with specific keys " +
+ "and wildcard at end");
+ name = new ObjectName("fs?:library=Classpath,project=GNU,*");
+ h.check(true);
+ h.check(name.isDomainPattern(), true);
+ h.check(name.isPropertyPattern(), true);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "fs?");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys and wildcard at end");
+ name = new ObjectName("fsf:library=Classpath,project=GNU,*");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), true);
+ h.check(name.isPattern(), true);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys");
+ name = new ObjectName("fsf:library=Classpath,project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys and quoted values");
+ name = new ObjectName("fsf:library=\"Classpath\",project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyProperty("library"), "\"Classpath\"");
+ h.check(name.getKeyPropertyListString(), "library=\"Classpath\",project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys and quoted values with "+
+ "escaped quote");
+ name = new ObjectName("fsf:library=\"Class\\\"path\",project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyProperty("library"), "\"Class\\\"path\"");
+ h.check(name.getKeyPropertyListString(), "library=\"Class\\\"path\",project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys and quoted values with "+
+ "escaped newline");
+ name = new ObjectName("fsf:library=\"Class\\npath\",project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyProperty("library"), "\"Class\\npath\"");
+ h.check(name.getKeyPropertyListString(), "library=\"Class\\npath\",project=GNU");
+ h.checkPoint("Match the FSF domain with specific keys and quoted values with "+
+ "escaped backslash");
+ name = new ObjectName("fsf:library=\"Class\\\\path\",project=GNU");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyProperty("library"), "\"Class\\\\path\"");
+ h.check(name.getKeyPropertyListString(), "library=\"Class\\\\path\",project=GNU");
+ h.checkPoint("Match the FSF domain with space preservation");
+ name = new ObjectName("fsf: library = Classpath ");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getKeyProperty(" library "), " Classpath ");
+ h.check(name.getKeyPropertyListString(), " library = Classpath ");
+ h.checkPoint("Key ordering");
+ name = new ObjectName("fsf:project=GNU,library=Classpath");
+ h.check(true);
+ h.check(name.isDomainPattern(), false);
+ h.check(name.isPropertyPattern(), false);
+ h.check(name.isPattern(), false);
+ h.check(name.getDomain(), "fsf");
+ h.check(name.getCanonicalKeyPropertyListString(), "library=Classpath,project=GNU");
+ h.check(name.getKeyPropertyListString(), "project=GNU,library=Classpath");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.debug(e);
+ h.check(false);
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib,rary=Classpath,project=GNU");
+ h.fail("Comma allowed in key name");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Comma in key name caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib=rary=Classpath,project=GNU");
+ h.fail("Equals allowed in key name");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Equals in key name caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib:rary=Classpath,project=GNU");
+ h.fail("Colon allowed in key name");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Colon in key name caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib*rary=Classpath,project=GNU");
+ h.fail("Asterisk allowed in key name");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Asterisk in key name caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib?rary=Classpath,project=GNU");
+ h.fail("Question mark allowed in key name");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Question mark in key name caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Classpath,library=Sun,project=GNU");
+ h.fail("Duplicate key allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Duplicate key caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Clas,path,project=GNU");
+ h.fail("Comma allowed in unquoted value");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Comma in unquoted value caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Clas=path,project=GNU");
+ h.fail("Equals allowed in unquoted value");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Equals in unquoted value caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Clas:path,project=GNU");
+ h.fail("Colon allowed in unquoted value");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Colon in unquoted value caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Clas\"path,project=GNU");
+ h.fail("Quote allowed in unquoted value");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Quote in unquoted value caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=\"Classpath,project=GNU");
+ h.fail("Unclosed quotes allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Unclosed quotes caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=\"Class\"path\",project=GNU");
+ h.debug(name.getKeyProperty("library"));
+ h.fail("Unescaped quote allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Unescaped quote caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:");
+ h.fail("Non-pattern with no keys allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Non-pattern with no keys caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:*,*");
+ h.fail("Pattern with multiple asterisks in properties allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Pattern with multiple asterisks in properties caught");
+ }
+ try
+ {
+ name = new ObjectName("f\nsf:library=Classpath");
+ h.fail("Domain with newline allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Domain with newline caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:lib\nrary=Classpath");
+ h.fail("Key with newline allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Key with newline caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=Class\npath");
+ h.fail("Unquoted value with newline allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Unquoted value with newline caught");
+ }
+ try
+ {
+ name = new ObjectName("fsf:library=\"Class\npath\"");
+ h.fail("Quoted value with newline allowed");
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.check(true, "Quoted value with newline caught");
+ }
+
+ }
+}
+
diff --git a/gnu/testlet/javax/management/ObjectName/ParsingJDK6.java b/gnu/testlet/javax/management/ObjectName/ParsingJDK6.java
new file mode 100644
index 00000000..16b945b2
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/ParsingJDK6.java
@@ -0,0 +1,52 @@
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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: JDK1.6
+
+package gnu.testlet.javax.management.ObjectName;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class ParsingJDK6 implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ try
+ {
+ h.checkPoint("Match the FSF domain with specific keys and ? in value");
+ ObjectName name = new ObjectName("fsf:library=Classpath,project=?NU");
+ h.check(true);
+ h.checkPoint("Match the FSF domain with specific keys and * in value");
+ name = new ObjectName("fsf:library=Classpath,project=*");
+ h.check(true);
+ h.checkPoint("Match the FSF domain with specific keys and quoted * in value");
+ name = new ObjectName("fsf:library=Classpath,project=\"*\"");
+ h.check(true);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ h.debug(e);
+ }
+ }
+}
+
diff --git a/gnu/testlet/javax/management/ObjectName/apply.java b/gnu/testlet/javax/management/ObjectName/apply.java
new file mode 100644
index 00000000..db61695e
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/apply.java
@@ -0,0 +1,100 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+
+// 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: JDK1.5
+
+package gnu.testlet.javax.management.ObjectName;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class apply implements Testlet
+{
+ private String[] domains = new String[] {
+ "mauve", "m?uve", "*ve", "*au*", "m?*e", "mauv?", "m*v*", "*"};
+
+ private boolean domainMatches(String a, String b)
+ {
+ // XXX This is very hacky. The spec says that nothing matches
+ // a pattern. And all the patterns here match the non-pattern.
+ return !b.contains("?") && !b.contains("*");
+ }
+
+ private String[] properties = new String[] {
+ "foo=bar", "foo=bar,spam=eggs", "spam=eggs,foo=bar", "foo=bar,*", "*"};
+
+ private boolean propertyMatches(String a, String b)
+ {
+ // Again, nothing matches a pattern.
+ if (b.contains("*"))
+ return false;
+ // All the patterns here match the non-patterns.
+ if (a.contains("*"))
+ return true;
+ // If they're the same length then they match (XXX hacky)
+ return a.length() == b.length();
+ }
+
+ public void test(TestHarness harness)
+ {
+ for (int ida = 0; ida < domains.length; ida++)
+ {
+ for (int idb = 0; idb < domains.length; idb++)
+ {
+ for (int ipa = 0; ipa < properties.length; ipa++)
+ {
+ for (int ipb = 0; ipb < properties.length; ipb++)
+ {
+ String da = domains[ida];
+ String db = domains[idb];
+ boolean dm = domainMatches(da, db);
+
+ String pa = properties[ipa];
+ String pb = properties[ipb];
+ boolean pm = propertyMatches(pa, pb);
+
+ String sa = da + ":" + pa;
+ String sb = db + ":" + pb;
+ boolean expect = dm && pm;
+
+ try
+ {
+ ObjectName ona = new ObjectName(sa);
+ ObjectName onb = new ObjectName(sb);
+
+ harness.check(ona.apply(onb) == expect,
+ sa + " should" +
+ (expect ? "" : " not") +
+ " match " + sb);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/javax/management/ObjectName/applyJDK6.java b/gnu/testlet/javax/management/ObjectName/applyJDK6.java
new file mode 100644
index 00000000..d1268ac7
--- /dev/null
+++ b/gnu/testlet/javax/management/ObjectName/applyJDK6.java
@@ -0,0 +1,106 @@
+// Copyright (C) 2007 Red Hat, Inc.
+// Written by Gary Benson <gbenson@redhat.com>
+// Adapted for additional JDK6 tests.
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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: JDK1.6
+
+package gnu.testlet.javax.management.ObjectName;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+public class applyJDK6 implements Testlet
+{
+ private String[] domains = new String[] {
+ "mauve", "m?uve", "*ve", "*au*", "m?*e", "mauv?", "m*v*", "*"};
+
+ private boolean domainMatches(String a, String b)
+ {
+ // XXX This is very hacky. The spec says that nothing matches
+ // a pattern. And all the patterns here match the non-pattern.
+ return !b.contains("?") && !b.contains("*");
+ }
+
+ private String[] properties = new String[] {
+ "foo=b?r", "foo=b?r,spam=eggs", "spam=eggs,foo=b?r", "foo=b?r,*",
+ "foo=b*", "foo=b*,spam=eggs", "spam=eggs,foo=b*", "foo=b*,*",
+ "foo=\"b?r\"", "foo=\"b?r\",spam=eggs", "spam=eggs,foo=\"b?r\"", "foo=\"b?r\",*",
+ "foo=\"b*\"", "foo=\"b*\",spam=eggs", "spam=eggs,foo=\"b*\"", "foo=\"b*\",*"
+ };
+
+ private boolean propertyMatches(String a, String b)
+ {
+ // Again, nothing matches a pattern.
+ if (b.contains("*") || b.contains("?"))
+ return false;
+ // All the patterns here match the non-patterns.
+ if (a.contains("*") || a.contains("?"))
+ return true;
+ // If they're the same length then they match (XXX hacky)
+ return a.length() == b.length();
+ }
+
+ public void test(TestHarness harness)
+ {
+ for (int ida = 0; ida < domains.length; ida++)
+ {
+ for (int idb = 0; idb < domains.length; idb++)
+ {
+ for (int ipa = 0; ipa < properties.length; ipa++)
+ {
+ for (int ipb = 0; ipb < properties.length; ipb++)
+ {
+ String da = domains[ida];
+ String db = domains[idb];
+ boolean dm = domainMatches(da, db);
+
+ String pa = properties[ipa];
+ String pb = properties[ipb];
+ boolean pm = propertyMatches(pa, pb);
+
+ String sa = da + ":" + pa;
+ String sb = db + ":" + pb;
+ boolean expect = dm && pm;
+
+ try
+ {
+ ObjectName ona = new ObjectName(sa);
+ ObjectName onb = new ObjectName(sb);
+
+ harness.check(ona.apply(onb) == expect,
+ sa + " should" +
+ (expect ? "" : " not") +
+ " match " + sb);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ harness.check(false);
+ harness.debug(e);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Entries b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Entries
new file mode 100644
index 00000000..a8ee69db
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Entries
@@ -0,0 +1,9 @@
+/Constructor1.java/1.1/Sun Mar 11 22:23:18 2007//
+/Constructor2.java/1.1/Sun Mar 11 22:23:18 2007//
+/Equals.java/1.1/Sun Mar 11 22:23:18 2007//
+/GetArrayType.java/1.1/Sun Mar 11 22:23:18 2007//
+/GetPrimitiveArrayType.java/1.1/Sun Mar 11 22:23:18 2007//
+/HashCode.java/1.1/Sun Mar 11 22:23:18 2007//
+/IsPrimitiveArray.java/1.1/Sun Mar 11 22:23:18 2007//
+/IsValue.java/1.1/Sun Mar 11 22:23:18 2007//
+D
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Repository b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Repository
new file mode 100644
index 00000000..d59be605
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/openmbean/ArrayType
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Root b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/Constructor1.java b/gnu/testlet/javax/management/openmbean/ArrayType/Constructor1.java
new file mode 100644
index 00000000..fcb05a73
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/Constructor1.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularType;
+
+/**
+ * Tests {@link ArrayType(int,javax.management.openmbean.OpenType} constructor.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Constructor1
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ ArrayType type = new ArrayType(0, SimpleType.INTEGER);
+ h.fail("Didn't catch dimensions < 1");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true, "Threw exception for dimensions of 0");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ ArrayType type = new ArrayType(-1, SimpleType.INTEGER);
+ h.fail("Didn't catch dimensions < 1");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true, "Threw exception for dimensions of -1");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ h.checkPoint("1-dimensional String array");
+ ArrayType type = new ArrayType(1, SimpleType.STRING);
+ h.check(type.getClassName(), "[Ljava.lang.String;");
+ h.check(type.getTypeName(), "[Ljava.lang.String;");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.String");
+ h.check(type.getDescription(), "1-dimension array of java.lang.String");
+ h.checkPoint("2-dimensional String array");
+ ArrayType type2 = new ArrayType(2, SimpleType.STRING);
+ h.check(type2.getClassName(), "[[Ljava.lang.String;");
+ h.check(type2.getTypeName(), "[[Ljava.lang.String;");
+ h.check(type2.getElementOpenType().getClassName(), "java.lang.String");
+ h.check(type2.getDescription(), "2-dimension array of java.lang.String");
+ h.checkPoint("4-dimensional String array (one constructor)");
+ ArrayType type3 = new ArrayType(4, SimpleType.STRING);
+ h.check(type3.getClassName(), "[[[[Ljava.lang.String;");
+ h.check(type3.getTypeName(), "[[[[Ljava.lang.String;");
+ h.check(type3.getElementOpenType().getClassName(), "java.lang.String");
+ h.check(type3.getDescription(), "4-dimension array of java.lang.String");
+ h.checkPoint("4-dimensional String array (two constructors)");
+ ArrayType type4 = new ArrayType(2, type2);
+ h.check(type4.getClassName(), "[[[[Ljava.lang.String;");
+ h.check(type4.getTypeName(), "[[[[Ljava.lang.String;");
+ h.check(type4.getElementOpenType().getClassName(), "java.lang.String");
+ h.check(type4.getDescription(), "4-dimension array of java.lang.String");
+ h.checkPoint("Composite Type Array");
+ CompositeType ctype = new CompositeType("Test","Test",new String[]{"name"},
+ new String[]{"Name"},
+ new OpenType[] { SimpleType.STRING});
+ ArrayType type5 = new ArrayType(1, ctype);
+ String className = CompositeData.class.getName();
+ h.check(type5.getClassName(), "[L" + className + ";");
+ h.check(type5.getTypeName(), "[L" + className + ";");
+ h.check(type5.getElementOpenType().getClassName(), className);
+ h.check(type5.getDescription(), "1-dimension array of " + className);
+ h.checkPoint("Tabular Type Array");
+ TabularType ttype = new TabularType("Test","Test",ctype,new String[]{"name"});
+ ArrayType type6 = new ArrayType(1, ttype);
+ className = TabularData.class.getName();
+ h.check(type6.getClassName(), "[L" + className + ";");
+ h.check(type6.getTypeName(), "[L" + className + ";");
+ h.check(type6.getElementOpenType().getClassName(), className);
+ h.check(type6.getDescription(), "1-dimension array of " + className);
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ ArrayType type = new ArrayType(-1, new OpenType("Mauve","Mauve","Mauve")
+ {
+ public boolean equals(Object obj)
+ {
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return 42;
+ }
+
+ public boolean isValue(Object obj)
+ {
+ return false;
+ }
+
+ public String toString()
+ {
+ return "Mauve";
+ }
+ });
+ h.fail("Didn't catch our own OpenType");
+ }
+ catch (OpenDataException e)
+ {
+ h.check(true, "Threw exception for invalid OpenType");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/Constructor2.java b/gnu/testlet/javax/management/openmbean/ArrayType/Constructor2.java
new file mode 100644
index 00000000..f9f1097b
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/Constructor2.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+/**
+ * Tests {@link ArrayType} constructor
+ * for 1-dimensional simple arrays.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Constructor2
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ ArrayType type = new ArrayType(SimpleType.STRING, true);
+ h.fail("Non-primitive type allowed.");
+ }
+ catch (OpenDataException e)
+ {
+ h.check(true, "Exception thrown for primitive array with non-primitive type");
+ }
+ try
+ {
+ h.checkPoint("Primitive integer array");
+ ArrayType type = new ArrayType(SimpleType.INTEGER, true);
+ h.check(type.getClassName(), "[I");
+ h.check(type.getTypeName(), "[I");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "1-dimension array of int");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ h.checkPoint("String array");
+ ArrayType type = new ArrayType(SimpleType.STRING, false);
+ h.check(type.getClassName(), "[Ljava.lang.String;");
+ h.check(type.getTypeName(), "[Ljava.lang.String;");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.String");
+ h.check(type.getDescription(), "1-dimension array of java.lang.String");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/Equals.java b/gnu/testlet/javax/management/openmbean/ArrayType/Equals.java
new file mode 100644
index 00000000..b5c288c8
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/Equals.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+/**
+ * Tests {@link ArrayType#equals(Object)}.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Equals
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type.equals(type), "Reflection test");
+ h.check(type.equals(type), "Consistency test");
+ ArrayType type2 = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type.equals(type2), "Equality over creation test");
+ h.check(type2.equals(type), "Symmetric test");
+ ArrayType type3 = null;
+ try
+ {
+ type3 = new ArrayType(SimpleType.INTEGER, true);
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ h.check(type2.equals(type3), "Equality over different creation test");
+ h.check(type.equals(type3), "Transitivity test");
+ h.check(!type.equals(null), "Null test");
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/GetArrayType.java b/gnu/testlet/javax/management/openmbean/ArrayType/GetArrayType.java
new file mode 100644
index 00000000..228feab2
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/GetArrayType.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+/**
+ * Tests {@link ArrayType#getArrayType(OpenType)}
+ * for 1-dimensional simple arrays.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class GetArrayType
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type = null;
+ try
+ {
+ h.checkPoint("1-dimensional integer array");
+ type = ArrayType.getArrayType(SimpleType.INTEGER);
+ h.check(type.getClassName(), "[Ljava.lang.Integer;");
+ h.check(type.getTypeName(), "[Ljava.lang.Integer;");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "1-dimension array of java.lang.Integer");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ h.checkPoint("2-dimensional integer array");
+ type = ArrayType.getArrayType(type);
+ h.check(type.getClassName(), "[[Ljava.lang.Integer;");
+ h.check(type.getTypeName(), "[[Ljava.lang.Integer;");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "2-dimension array of java.lang.Integer");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ try
+ {
+ h.checkPoint("3-dimensional integer array");
+ type = ArrayType.getArrayType(type);
+ h.check(type.getClassName(), "[[[Ljava.lang.Integer;");
+ h.check(type.getTypeName(), "[[[Ljava.lang.Integer;");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "3-dimension array of java.lang.Integer");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/GetPrimitiveArrayType.java b/gnu/testlet/javax/management/openmbean/ArrayType/GetPrimitiveArrayType.java
new file mode 100644
index 00000000..0d6d0296
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/GetPrimitiveArrayType.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+/**
+ * Tests {@link ArrayType#getPrimitiveArrayType(OpenType)}
+ * for 1-dimensional simple arrays.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class GetPrimitiveArrayType
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type = null;
+ h.checkPoint("1-dimensional integer array");
+ type = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type.getClassName(), "[I");
+ h.check(type.getTypeName(), "[I");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "1-dimension array of int");
+ h.checkPoint("2-dimensional integer array");
+ type = ArrayType.getPrimitiveArrayType(int[][].class);
+ h.check(type.getClassName(), "[[I");
+ h.check(type.getTypeName(), "[[I");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "2-dimension array of int");
+ h.checkPoint("3-dimensional integer array");
+ type = ArrayType.getPrimitiveArrayType(int[][][].class);
+ h.check(type.getClassName(), "[[[I");
+ h.check(type.getTypeName(), "[[[I");
+ h.check(type.getElementOpenType().getClassName(), "java.lang.Integer");
+ h.check(type.getDescription(), "3-dimension array of int");
+ try
+ {
+ ArrayType.getPrimitiveArrayType(int.class);
+ h.fail("int.class allowed.");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true, "Exception thrown for int.class");
+ }
+ try
+ {
+ ArrayType.getPrimitiveArrayType(String.class);
+ h.fail("String.class allowed.");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true, "Exception thrown for String.class");
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/HashCode.java b/gnu/testlet/javax/management/openmbean/ArrayType/HashCode.java
new file mode 100644
index 00000000..294a9112
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/HashCode.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+/**
+ * Tests {@link ArrayType#hashCode()}.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class HashCode
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type.hashCode(), type.hashCode(), "Reflection test");
+ h.check(type.hashCode(), type.hashCode(), "Consistency test");
+ ArrayType type2 = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type.hashCode(), type2.hashCode(), "Equality over creation test");
+ ArrayType type3 = null;
+ try
+ {
+ type3 = new ArrayType(SimpleType.INTEGER, true);
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ h.check(type3.hashCode(), type2.hashCode(), "Equality over different creation test");
+ h.check(type.hashCode(), type3.hashCode(), "Transitivity test");
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/IsPrimitiveArray.java b/gnu/testlet/javax/management/openmbean/ArrayType/IsPrimitiveArray.java
new file mode 100644
index 00000000..6acff314
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/IsPrimitiveArray.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularType;
+
+/**
+ * Tests {@link ArrayType#isPrimitiveArray()}.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class IsPrimitiveArray
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type1 = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(type1.isPrimitiveArray(), "int[] true check");
+ try
+ {
+ ArrayType type2 = new ArrayType(SimpleType.INTEGER, true);
+ h.check(type2.isPrimitiveArray(), "Wrapped masked true check");
+ ArrayType type3 = new ArrayType(SimpleType.INTEGER, false);
+ h.check(!type3.isPrimitiveArray(), "Wrapped not masked false check");
+ ArrayType type4 = new ArrayType(1, SimpleType.INTEGER);
+ h.check(!type4.isPrimitiveArray(), "Normal wrapped false check");
+ ArrayType type5 = new ArrayType(1, SimpleType.STRING);
+ h.check(!type5.isPrimitiveArray(), "String false check");
+ CompositeType ctype = new CompositeType("Test","Test",new String[]{"name"},
+ new String[]{"Name"},
+ new OpenType[] { SimpleType.STRING});
+ ArrayType type6 = new ArrayType(1, ctype);
+ h.check(!type6.isPrimitiveArray(), "Composite type false check");
+ TabularType ttype = new TabularType("Test","Test",ctype,new String[]{"name"});
+ ArrayType type7 = new ArrayType(1, ttype);
+ h.check(!type7.isPrimitiveArray(), "Tabular type false check");
+ ArrayType type8 = new ArrayType(1, type1);
+ h.check(type8.isPrimitiveArray(), "Carry through true check");
+ ArrayType type9 = new ArrayType(1, type2);
+ h.check(type9.isPrimitiveArray());
+ ArrayType type10 = new ArrayType(1, type3);
+ h.check(!type10.isPrimitiveArray(), "Carry through false check");
+
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/ArrayType/IsValue.java b/gnu/testlet/javax/management/openmbean/ArrayType/IsValue.java
new file mode 100644
index 00000000..48648c4e
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/ArrayType/IsValue.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.ArrayType;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+/**
+ * Tests {@link ArrayType#isValue(Object)}.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class IsValue
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ArrayType type = ArrayType.getPrimitiveArrayType(int[].class);
+ h.check(!type.isValue(null), "Null value check");
+ h.check(!type.isValue(3), "Non-array value check");
+ h.check(type.isValue(new int[]{3}), "Primitive int array value check");
+ h.check(!type.isValue(new Integer[]{3}), "Integer array value check");
+ try
+ {
+ CompositeType ctype = new CompositeType("Test","Test",new String[]{"name"},
+ new String[]{"Name"},
+ new OpenType[] { SimpleType.STRING});
+ Map<String,String> data = new HashMap<String,String>();
+ data.put("name", "Bob");
+ CompositeData cdata = new CompositeDataSupport(ctype, data);
+ CompositeData[] cdataarr = new CompositeData[] { cdata };
+ ArrayType type2 = new ArrayType(1, ctype);
+ h.check(type2.isValue(cdataarr), "Composite data check");
+ TabularType ttype = new TabularType("Test","Test",ctype,new String[]{"name"});
+ TabularData tdata = new TabularDataSupport(ttype);
+ tdata.put(cdata);
+ TabularData[] tdataarr = new TabularData[] {tdata};
+ ArrayType type3 = new ArrayType(1, ttype);
+ h.check(type3.isValue(tdataarr), "Tabular data check");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+
+ }
+
+
+}
diff --git a/gnu/testlet/javax/management/openmbean/CVS/Entries b/gnu/testlet/javax/management/openmbean/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/management/openmbean/CVS/Entries.Log b/gnu/testlet/javax/management/openmbean/CVS/Entries.Log
new file mode 100644
index 00000000..01e4d822
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/ArrayType////
+A D/CompositeDataInvocationHandler////
diff --git a/gnu/testlet/javax/management/openmbean/CVS/Repository b/gnu/testlet/javax/management/openmbean/CVS/Repository
new file mode 100644
index 00000000..4c6916e9
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/openmbean
diff --git a/gnu/testlet/javax/management/openmbean/CVS/Root b/gnu/testlet/javax/management/openmbean/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Entries b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Entries
new file mode 100644
index 00000000..71fe795a
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Entries
@@ -0,0 +1,3 @@
+/Person.java/1.1/Fri Mar 30 21:46:38 2007//
+/Test.java/1.2/Wed May 21 15:00:43 2008//
+D
diff --git a/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Repository b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Repository
new file mode 100644
index 00000000..4f173065
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler
diff --git a/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Root b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Person.java b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Person.java
new file mode 100644
index 00000000..aea671ce
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Person.java
@@ -0,0 +1,36 @@
+// Tags: not-a-test
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.CompositeDataInvocationHandler;
+
+import java.util.Date;
+
+/**
+ * Test interface for proxying.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public interface Person
+{
+ public String getName();
+ public Date getBirthday();
+ public boolean isAlive();
+}
diff --git a/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java
new file mode 100644
index 00000000..5840887b
--- /dev/null
+++ b/gnu/testlet/javax/management/openmbean/CompositeDataInvocationHandler/Test.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.5
+// Uses: Person
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.management.openmbean.CompositeDataInvocationHandler;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.Proxy;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataInvocationHandler;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tests {@link javax.management.openmbean.CompositeDataInvocationHandler}
+ * for the {@link Person} interface.
+ *
+ * @author <a href="mailto:gnu_andrew@member.fsf.org">Andrew John Hughes</a>
+ */
+public class Test
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ CompositeType type = new CompositeType("Person", "A person",
+ new String[] {"name","Birthday","alive"},
+ new String[] {"name","birthday","death status"},
+ new OpenType[] { SimpleType.STRING,
+ SimpleType.DATE,
+ SimpleType.BOOLEAN });
+ Map map = new HashMap<String,Object>();
+ Calendar cal = Calendar.getInstance();
+ cal.set(1982, 11, 31);
+ map.put("name","Andrew");
+ map.put("Birthday",cal.getTime());
+ map.put("alive",true);
+ CompositeData data = new CompositeDataSupport(type, map);
+ Person p = (Person) Proxy.newProxyInstance(Person.class.getClassLoader(),
+ new Class[] { Person.class },
+ new CompositeDataInvocationHandler(data));
+ h.checkPoint("Accessor tests");
+ h.check(p.getName(), "Andrew");
+ h.check(p.getBirthday(), cal.getTime());
+ h.check(p.isAlive(), true);
+ h.check(p.equals(p), "Reflection test");
+ h.check(p.equals(p), "Consistency test");
+ Person p2 = (Person) Proxy.newProxyInstance(Person.class.getClassLoader(),
+ new Class[] { Person.class },
+ new CompositeDataInvocationHandler(data));
+ h.check(p.equals(p2), "Equality over creation test");
+ h.check(p2.equals(p), "Symmetric test");
+ Person p3 = (Person) Proxy.newProxyInstance(Person.class.getClassLoader(),
+ new Class[] { Person.class },
+ new CompositeDataInvocationHandler(data));
+ h.check(p2.equals(p2), "Second equality over creation test");
+ h.check(p.equals(p3), "Transitivity test");
+ h.check(!p.equals(null), "Null test");
+ h.check(p.hashCode(), p.hashCode(), "Hashcode reflection test");
+ h.check(p.hashCode(), p.hashCode(), "Hashcode consistency test");
+ h.check(p.hashCode(), p2.hashCode(), "Hashcode equality over creation test");
+ h.check(p2.hashCode(), p3.hashCode(), "Hashcode second equality over creation test");
+ h.check(p.hashCode(), p3.hashCode(), "Hashcode transitivity test");
+ }
+ catch (OpenDataException e)
+ {
+ h.debug(e);
+ }
+
+ }
+
+}
+
diff --git a/gnu/testlet/javax/management/remote/CVS/Entries b/gnu/testlet/javax/management/remote/CVS/Entries
new file mode 100644
index 00000000..7a91b629
--- /dev/null
+++ b/gnu/testlet/javax/management/remote/CVS/Entries
@@ -0,0 +1,3 @@
+/NotificationResultTest.java/1.1/Sun Feb 10 23:33:38 2008//
+/TargetedNotificationTest.java/1.2/Tue Feb 19 23:05:45 2008//
+D
diff --git a/gnu/testlet/javax/management/remote/CVS/Repository b/gnu/testlet/javax/management/remote/CVS/Repository
new file mode 100644
index 00000000..6907298d
--- /dev/null
+++ b/gnu/testlet/javax/management/remote/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/management/remote
diff --git a/gnu/testlet/javax/management/remote/CVS/Root b/gnu/testlet/javax/management/remote/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/management/remote/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/management/remote/NotificationResultTest.java b/gnu/testlet/javax/management/remote/NotificationResultTest.java
new file mode 100644
index 00000000..fb3c4e88
--- /dev/null
+++ b/gnu/testlet/javax/management/remote/NotificationResultTest.java
@@ -0,0 +1,107 @@
+// Copyright (C) 2008 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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: JDK1.5
+
+package gnu.testlet.javax.management.remote;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.management.remote.NotificationResult;
+import javax.management.remote.TargetedNotification;
+
+public class NotificationResultTest
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ NotificationResult nr;
+ TargetedNotification[] array = new TargetedNotification[]{};
+ h.checkPoint("Constructor tests");
+ try
+ {
+ nr = new NotificationResult(-1, 0, array);
+ h.fail("Failed to catch negative earliest sequence number");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.check(true, "Caught negative earliest sequence number.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+ try
+ {
+ nr = new NotificationResult(0, -1, array);
+ h.fail("Failed to catch negative next sequence number");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.check(true, "Caught negative next sequence number.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+ try
+ {
+ nr = new NotificationResult(0, 1, null);
+ h.fail("Failed to catch null result array");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.check(true, "Caught null result array.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+ try
+ {
+ nr = new NotificationResult(0, 1, array);
+ h.check(true, "NotificationResult successfully created.");
+ h.check(nr.getEarliestSequenceNumber() == 0,
+ "Retrieved earliest sequence number.");
+ h.check(nr.getNextSequenceNumber() == 1,
+ "Retrieved next sequence number.");
+ h.check(nr.getTargetedNotifications() == array,
+ "Retrieved array.");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.fail("Wrongly threw IllegalArgumentException.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+
+ }
+}
+
diff --git a/gnu/testlet/javax/management/remote/TargetedNotificationTest.java b/gnu/testlet/javax/management/remote/TargetedNotificationTest.java
new file mode 100644
index 00000000..0a31335b
--- /dev/null
+++ b/gnu/testlet/javax/management/remote/TargetedNotificationTest.java
@@ -0,0 +1,92 @@
+// Copyright (C) 2008 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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: JDK1.5
+
+package gnu.testlet.javax.management.remote;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.management.Notification;
+
+import javax.management.remote.TargetedNotification;
+
+public class TargetedNotificationTest
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ TargetedNotification tn;
+ Notification n = new Notification("", this, 1);
+ h.checkPoint("Constructor tests");
+ try
+ {
+ tn = new TargetedNotification(null, 3);
+ h.fail("Failed to catch null notification");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.check(true, "Caught null notification.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+ try
+ {
+ tn = new TargetedNotification(n, null);
+ h.fail("Failed to catch null identifier");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ h.check(true, "Caught null identifier.");
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+ try
+ {
+ tn = new TargetedNotification(n, 3);
+ h.check(true, "Successfully created notification");
+ h.check(n == tn.getNotification(), "Check notification retrieval");
+ h.check(3 == tn.getListenerID(), "Check ID retrieval");
+ }
+ catch (Exception e)
+ {
+ if (e instanceof IllegalArgumentException)
+ {
+ h.debug(e);
+ h.check(false, "Wrongly threw IllegalArgumentException.");
+ }
+ else
+ {
+ h.debug(e);
+ h.fail("Unknown exception");
+ }
+ }
+
+ }
+}
+
diff --git a/gnu/testlet/javax/naming/CVS/Entries b/gnu/testlet/javax/naming/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/naming/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/naming/CVS/Entries.Log b/gnu/testlet/javax/naming/CVS/Entries.Log
new file mode 100644
index 00000000..7e86ccb1
--- /dev/null
+++ b/gnu/testlet/javax/naming/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/CompositeName////
+A D/CompoundName////
+A D/directory////
diff --git a/gnu/testlet/javax/naming/CVS/Repository b/gnu/testlet/javax/naming/CVS/Repository
new file mode 100644
index 00000000..4b8bfe62
--- /dev/null
+++ b/gnu/testlet/javax/naming/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/naming
diff --git a/gnu/testlet/javax/naming/CVS/Root b/gnu/testlet/javax/naming/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/naming/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/naming/CompositeName/CVS/Entries b/gnu/testlet/javax/naming/CompositeName/CVS/Entries
new file mode 100644
index 00000000..01cf7b88
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompositeName/CVS/Entries
@@ -0,0 +1,2 @@
+/composite.java/1.1/Thu Sep 27 15:44:25 2001//
+D
diff --git a/gnu/testlet/javax/naming/CompositeName/CVS/Repository b/gnu/testlet/javax/naming/CompositeName/CVS/Repository
new file mode 100644
index 00000000..1693edd2
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompositeName/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/naming/CompositeName
diff --git a/gnu/testlet/javax/naming/CompositeName/CVS/Root b/gnu/testlet/javax/naming/CompositeName/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompositeName/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/naming/CompositeName/composite.java b/gnu/testlet/javax/naming/CompositeName/composite.java
new file mode 100644
index 00000000..ba38b8aa
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompositeName/composite.java
@@ -0,0 +1,133 @@
+// Simple tests of CompositeName.
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.3
+
+package gnu.testlet.javax.naming.CompositeName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.naming.*;
+
+public class composite implements Testlet
+{
+ public void add (CompositeName n, String what)
+ {
+ // We always check the result of the add so we can just ignore the
+ // exception.
+ try
+ {
+ n.add (what);
+ }
+ catch (InvalidNameException _)
+ {
+ }
+ }
+
+ public void remove (CompositeName n, int pos)
+ {
+ // We always check the result of the remove so we can just ignore the
+ // exception.
+ try
+ {
+ n.remove (pos);
+ }
+ catch (InvalidNameException _)
+ {
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ try
+ {
+ CompositeName cn1 = new CompositeName ();
+ CompositeName cn2 = new CompositeName ("");
+
+ // There are plenty of empty checks.
+ harness.check (cn1.toString (), "", "empty CompositeName");
+ harness.check (cn2.toString (), "");
+ harness.check (cn1, cn2);
+ harness.check (cn1.isEmpty ());
+ harness.check (cn2.isEmpty ());
+ harness.check (cn1.size (), 0);
+ harness.check (cn2.size (), 0);
+ harness.check (cn1.startsWith (cn2));
+ harness.check (cn2.startsWith (cn1));
+
+ add (cn1, "x");
+ harness.check (! cn1.isEmpty (), "`x' CompositeName");
+ harness.check (cn1.size (), 1);
+ harness.check (cn1.get (0), "x");
+ harness.check (cn1.toString (), "x");
+
+ add (cn1, "y");
+ harness.check (cn1.size (), 2, "`x/y' CompositeName");
+ harness.check (cn1.get (0), "x");
+ harness.check (cn1.get (1), "y");
+ harness.check (cn1.toString (), "x/y");
+
+ add (cn2, "");
+ harness.check (cn2.size (), 1, "`/' CompositeName");
+ harness.check (cn2.toString (), "/");
+
+ add (cn2, "x");
+ harness.check (cn2.size (), 2, "`/x' CompositeName");
+ harness.check (cn2.toString (), "/x");
+
+ add (cn2, "");
+ harness.check (cn2.size (), 3, "`/x/' CompositeName");
+ harness.check (cn2.toString (), "/x/");
+
+ add (cn2, "y");
+ harness.check (cn2.size (), 4, "`/x//y' CompositeName");
+ harness.check (cn2.toString (), "/x//y");
+
+ remove (cn2, 2);
+ remove (cn2, 0);
+ harness.check (cn2.size (), 2, "`x/y' CompositeName by removal");
+ harness.check (cn2.toString (), "x/y");
+ harness.check (cn1, cn2);
+
+ add (cn1, "foo/bar");
+ harness.check (cn1.size (), 3, "quoting rule");
+ cn2 = new CompositeName (cn1.toString ());
+ harness.check (cn2.size (), 3, "parsing with quoting");
+ harness.check (cn2.get (2), "foo/bar");
+ harness.check (cn1, cn2);
+
+ cn2 = new CompositeName ("x/y/foo\\/bar");
+ harness.check (cn1, cn2, "more parsing with quoting");
+ cn2 = new CompositeName ("x/y/\"foo/bar\"");
+ harness.check (cn1, cn2);
+
+ cn1 = new CompositeName ("//");
+ harness.check (cn1.size (), 2, "parsing `//'");
+ harness.check (cn1.get (0), "");
+ harness.check (cn1.get (1), "");
+ }
+ catch (NamingException _)
+ {
+ harness.debug (_);
+ harness.fail ("NamingException caught");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/naming/CompoundName/CVS/Entries b/gnu/testlet/javax/naming/CompoundName/CVS/Entries
new file mode 100644
index 00000000..209da3e8
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompoundName/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.1/Thu Sep 27 15:44:25 2001//
+D
diff --git a/gnu/testlet/javax/naming/CompoundName/CVS/Repository b/gnu/testlet/javax/naming/CompoundName/CVS/Repository
new file mode 100644
index 00000000..873ea249
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompoundName/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/naming/CompoundName
diff --git a/gnu/testlet/javax/naming/CompoundName/CVS/Root b/gnu/testlet/javax/naming/CompoundName/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompoundName/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/naming/CompoundName/simple.java b/gnu/testlet/javax/naming/CompoundName/simple.java
new file mode 100644
index 00000000..ff91585c
--- /dev/null
+++ b/gnu/testlet/javax/naming/CompoundName/simple.java
@@ -0,0 +1,133 @@
+// Simple tests of CompoundName
+
+// Copyright (C) 2001 Red Hat, Inc.
+
+// 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: JDK1.3
+
+package gnu.testlet.javax.naming.CompoundName;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.naming.*;
+import java.util.*;
+
+// This is just the CompositeName test, using a CompoundName set up
+// with the right syntax.
+
+public class simple implements Testlet
+{
+ public void add (CompoundName n, String what)
+ {
+ // We always check the result of the add so we can just ignore the
+ // exception.
+ try
+ {
+ n.add (what);
+ }
+ catch (InvalidNameException _)
+ {
+ }
+ }
+
+ public void remove (CompoundName n, int pos)
+ {
+ // We always check the result of the remove so we can just ignore the
+ // exception.
+ try
+ {
+ n.remove (pos);
+ }
+ catch (InvalidNameException _)
+ {
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+ Properties syntax = new Properties ();
+ syntax.setProperty ("jndi.syntax.direction", "left_to_right");
+ syntax.setProperty ("jndi.syntax.separator", "/");
+ syntax.setProperty ("jndi.syntax.escape", "\\");
+ syntax.setProperty ("jndi.syntax.beginquote", "\"");
+ syntax.setProperty ("jndi.syntax.beginquote2", "'");
+
+ try
+ {
+ CompoundName cn1 = new CompoundName ("", syntax);
+ CompoundName cn2 = new CompoundName ("", syntax);
+
+ add (cn1, "x");
+ harness.check (! cn1.isEmpty (), "`x' CompoundName");
+ harness.check (cn1.size (), 1);
+ harness.check (cn1.get (0), "x");
+ harness.check (cn1.toString (), "x");
+
+ add (cn1, "y");
+ harness.check (cn1.size (), 2, "`x/y' CompoundName");
+ harness.check (cn1.get (0), "x");
+ harness.check (cn1.get (1), "y");
+ harness.check (cn1.toString (), "x/y");
+
+ add (cn2, "");
+ harness.check (cn2.size (), 1, "`/' CompoundName");
+ harness.check (cn2.toString (), "/");
+
+ add (cn2, "x");
+ harness.check (cn2.size (), 2, "`/x' CompoundName");
+ harness.check (cn2.toString (), "/x");
+
+ add (cn2, "");
+ harness.check (cn2.size (), 3, "`/x/' CompoundName");
+ harness.check (cn2.toString (), "/x/");
+
+ add (cn2, "y");
+ harness.check (cn2.size (), 4, "`/x//y' CompoundName");
+ harness.check (cn2.toString (), "/x//y");
+
+ remove (cn2, 2);
+ remove (cn2, 0);
+ harness.check (cn2.size (), 2, "`x/y' CompoundName by removal");
+ harness.check (cn2.toString (), "x/y");
+ harness.check (cn1, cn2);
+
+ add (cn1, "foo/bar");
+ harness.check (cn1.size (), 3, "quoting rule");
+ cn2 = new CompoundName (cn1.toString (), syntax);
+ harness.check (cn2.size (), 3, "parsing with quoting");
+ harness.check (cn2.get (2), "foo/bar");
+ harness.check (cn1, cn2);
+
+ cn2 = new CompoundName ("x/y/foo\\/bar", syntax);
+ harness.check (cn1, cn2, "more parsing with quoting");
+ cn2 = new CompoundName ("x/y/\"foo/bar\"", syntax);
+ harness.check (cn1, cn2);
+
+ cn1 = new CompoundName ("//", syntax);
+ harness.check (cn1.size (), 2, "parsing `//'");
+ harness.check (cn1.get (0), "");
+ harness.check (cn1.get (1), "");
+ }
+ catch (NamingException _)
+ {
+ harness.debug (_);
+ harness.fail ("NamingException caught");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Entries b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Entries
new file mode 100644
index 00000000..071f00af
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Entries
@@ -0,0 +1,2 @@
+/Enumerate.java/1.1/Mon Apr 3 20:54:37 2006/-kk/
+D
diff --git a/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Repository b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Repository
new file mode 100644
index 00000000..70b28340
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/naming/directory/BasicAttribute
diff --git a/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Root b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/BasicAttribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/naming/directory/BasicAttribute/Enumerate.java b/gnu/testlet/javax/naming/directory/BasicAttribute/Enumerate.java
new file mode 100644
index 00000000..65282c86
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/BasicAttribute/Enumerate.java
@@ -0,0 +1,55 @@
+/* Enumerate.java -- test BasicAttribute enumeration
+ Copyright (C) 2006 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.naming.directory.BasicAttribute;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.BasicAttribute;
+
+public class Enumerate implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ BasicAttribute b = new BasicAttribute("test");
+ b.add("two");
+ b.add("three");
+
+ boolean ok = true;
+ NamingEnumeration e = null;
+ try {
+ e = b.getAll();
+ } catch (NamingException _) {
+ harness.debug(_);
+ ok = false;
+ }
+ harness.check(ok);
+
+ harness.check(e.nextElement(), "two");
+ harness.check(e.nextElement(), "three");
+ harness.check(! e.hasMoreElements());
+ }
+}
diff --git a/gnu/testlet/javax/naming/directory/CVS/Entries b/gnu/testlet/javax/naming/directory/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/naming/directory/CVS/Entries.Log b/gnu/testlet/javax/naming/directory/CVS/Entries.Log
new file mode 100644
index 00000000..41950237
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/BasicAttribute////
diff --git a/gnu/testlet/javax/naming/directory/CVS/Repository b/gnu/testlet/javax/naming/directory/CVS/Repository
new file mode 100644
index 00000000..96e03a3a
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/naming/directory
diff --git a/gnu/testlet/javax/naming/directory/CVS/Root b/gnu/testlet/javax/naming/directory/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/naming/directory/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/net/CVS/Entries b/gnu/testlet/javax/net/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/net/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/net/CVS/Entries.Log b/gnu/testlet/javax/net/CVS/Entries.Log
new file mode 100644
index 00000000..7e840f1b
--- /dev/null
+++ b/gnu/testlet/javax/net/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/ssl////
diff --git a/gnu/testlet/javax/net/CVS/Repository b/gnu/testlet/javax/net/CVS/Repository
new file mode 100644
index 00000000..aa6767ee
--- /dev/null
+++ b/gnu/testlet/javax/net/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/net
diff --git a/gnu/testlet/javax/net/CVS/Root b/gnu/testlet/javax/net/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/net/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/net/ssl/CVS/Entries b/gnu/testlet/javax/net/ssl/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/net/ssl/CVS/Entries.Log b/gnu/testlet/javax/net/ssl/CVS/Entries.Log
new file mode 100644
index 00000000..b2ccea22
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/SSLContext////
+A D/SSLEngine////
diff --git a/gnu/testlet/javax/net/ssl/CVS/Repository b/gnu/testlet/javax/net/ssl/CVS/Repository
new file mode 100644
index 00000000..358851e2
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/net/ssl
diff --git a/gnu/testlet/javax/net/ssl/CVS/Root b/gnu/testlet/javax/net/ssl/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/net/ssl/SSLContext/CVS/Entries b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Entries
new file mode 100644
index 00000000..df3340de
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Entries
@@ -0,0 +1,3 @@
+/TestDefaultInit.java/1.1/Sun Jul 30 22:35:49 2006//
+/TestGetInstance.java/1.1/Sun Jul 30 22:35:49 2006//
+D
diff --git a/gnu/testlet/javax/net/ssl/SSLContext/CVS/Repository b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Repository
new file mode 100644
index 00000000..7d6a3fd6
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/net/ssl/SSLContext
diff --git a/gnu/testlet/javax/net/ssl/SSLContext/CVS/Root b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLContext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/net/ssl/SSLContext/TestDefaultInit.java b/gnu/testlet/javax/net/ssl/SSLContext/TestDefaultInit.java
new file mode 100644
index 00000000..8d636530
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLContext/TestDefaultInit.java
@@ -0,0 +1,71 @@
+/* defaultInit.java -- test default context initialization.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.net.ssl.SSLContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.net.ssl.SSLContext;
+
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestDefaultInit
+ implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ SSLContext context = null;
+ try
+ {
+ context = SSLContext.getInstance("SSL");
+ harness.check(context != null);
+ }
+ catch (NoSuchAlgorithmException nsae)
+ {
+ harness.fail("getInstance");
+ harness.debug(nsae);
+ }
+
+ try
+ {
+ System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
+ context.init(null, null, null);
+ harness.check(true);
+ }
+ catch (KeyManagementException kme)
+ {
+ harness.fail("SSLContext.init");
+ harness.debug(kme);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLContext/TestGetInstance.java b/gnu/testlet/javax/net/ssl/SSLContext/TestGetInstance.java
new file mode 100644
index 00000000..b117bed4
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLContext/TestGetInstance.java
@@ -0,0 +1,58 @@
+/* testGetInstance.java -- test if SSLContext.getInstance works.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.net.ssl.SSLContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.security.NoSuchAlgorithmException;
+
+import javax.net.ssl.SSLContext;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestGetInstance implements Testlet
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ SSLContext context = null;
+ harness.checkPoint("SSLContext.getInstance(\"SSL\")");
+ try
+ {
+ context = SSLContext.getInstance("SSL");
+ harness.check(context != null);
+ }
+ catch (NoSuchAlgorithmException nsae)
+ {
+ harness.fail("SSLContext.getInstance(\"SSL\")");
+ harness.debug(nsae);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/AbstractEngineTest.java b/gnu/testlet/javax/net/ssl/SSLEngine/AbstractEngineTest.java
new file mode 100644
index 00000000..10d6acb9
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/AbstractEngineTest.java
@@ -0,0 +1,233 @@
+/* AbstractEngineTest.java -- base SSLEngine test.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLEngineResult;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.SSLEngineResult.HandshakeStatus;
+import javax.net.ssl.SSLEngineResult.Status;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public abstract class AbstractEngineTest
+ implements Testlet
+{
+ protected static final String TEST_MESSAGE = "Hello, world!";
+ protected SSLContext context;
+ protected SSLEngine clientEngine;
+ protected SSLEngine serverEngine;
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public final void test(TestHarness harness)
+ {
+ if (setup(harness))
+ implTest(harness);
+ }
+
+ protected boolean setup(TestHarness harness)
+ {
+ try
+ {
+ harness.checkPoint("SSLContext.getInstance");
+ context = SSLContext.getInstance("SSL");
+ context.init(new KeyManager[] { new SimpleX509KeyManager() },
+ new TrustManager[] { new SimpleX509TrustManager() },
+ SecureRandom.getInstance("Fortuna"));
+ }
+ catch (Exception e)
+ {
+ harness.fail("SSLContext.getInstance");
+ harness.debug(e);
+ return false;
+ }
+ return true;
+ }
+
+ protected boolean setupEngines(TestHarness harness)
+ {
+ serverEngine = context.createSSLEngine();
+ clientEngine = context.createSSLEngine();
+ harness.check(serverEngine != null);
+ harness.check(clientEngine != null);
+
+ serverEngine.setUseClientMode(false);
+ clientEngine.setUseClientMode(true);
+ return true;
+ }
+
+ protected abstract void implTest(TestHarness harness);
+
+ protected void runHandshake() throws SSLException
+ {
+ ByteBuffer empty = ByteBuffer.allocate(0);
+ ByteBuffer cnetBuffer = ByteBuffer.allocate(clientEngine.getSession().getPacketBufferSize());
+ ByteBuffer snetBuffer = ByteBuffer.allocate(serverEngine.getSession().getPacketBufferSize());
+
+ clientEngine.beginHandshake();
+ serverEngine.beginHandshake();
+
+ SSLEngineResult result = null;
+ SSLEngineResult.HandshakeStatus srv = serverEngine.getHandshakeStatus();
+ SSLEngineResult.HandshakeStatus cli = clientEngine.getHandshakeStatus();
+
+ while (srv != HandshakeStatus.NOT_HANDSHAKING
+ && cli != HandshakeStatus.NOT_HANDSHAKING)
+ {
+ if (cli == HandshakeStatus.NEED_WRAP)
+ {
+ if (srv != HandshakeStatus.NEED_UNWRAP)
+ {
+ throw new SSLException("invalid server handshake state: " + srv);
+ }
+
+ result = clientEngine.wrap(empty, cnetBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status after wrap: "
+ + result.getStatus());
+ cli = result.getHandshakeStatus();
+ cnetBuffer.flip();
+ result = serverEngine.unwrap(cnetBuffer, empty);
+ cnetBuffer.compact();
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status after unwrap: "
+ + result.getStatus());
+ srv = result.getHandshakeStatus();
+
+ if (cli == HandshakeStatus.NEED_TASK)
+ {
+ Runnable task = null;
+ while ((task = clientEngine.getDelegatedTask()) != null)
+ task.run();
+ cli = clientEngine.getHandshakeStatus();
+ }
+
+ if (srv == HandshakeStatus.NEED_TASK)
+ {
+ Runnable task = null;
+ while ((task = serverEngine.getDelegatedTask()) != null)
+ task.run();
+ srv = serverEngine.getHandshakeStatus();
+ }
+ }
+ else if (cli == HandshakeStatus.NEED_UNWRAP)
+ {
+ if (srv != HandshakeStatus.NEED_WRAP)
+ {
+ throw new SSLException("invalid server handshake state: " + srv);
+ }
+
+ result = serverEngine.wrap(empty, snetBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status after wrap: "
+ + result.getStatus());
+ srv = result.getHandshakeStatus();
+ snetBuffer.flip();
+ result = clientEngine.unwrap(snetBuffer, empty);
+ snetBuffer.compact();
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status after unwrap: "
+ + result.getStatus());
+ cli = result.getHandshakeStatus();
+
+ if (cli == HandshakeStatus.NEED_TASK)
+ {
+ Runnable task = null;
+ while ((task = clientEngine.getDelegatedTask()) != null)
+ task.run();
+ cli = clientEngine.getHandshakeStatus();
+ }
+
+ if (srv == HandshakeStatus.NEED_TASK)
+ {
+ Runnable task = null;
+ while ((task = serverEngine.getDelegatedTask()) != null)
+ task.run();
+ srv = serverEngine.getHandshakeStatus();
+ }
+ }
+ else if (cli == HandshakeStatus.NEED_TASK)
+ {
+ throw new SSLException("invalid initial state: " + cli);
+ }
+ else if (cli == HandshakeStatus.FINISHED)
+ {
+ if (srv != HandshakeStatus.FINISHED)
+ throw new SSLException("invalid final server state: " + srv);
+ break;
+ }
+ }
+
+ ByteBuffer appBuffer = ByteBuffer.allocate(serverEngine.getSession().getApplicationBufferSize());
+ Charset cs = Charset.forName("US-ASCII");
+ CharsetEncoder enc = cs.newEncoder();
+ enc.encode(CharBuffer.wrap(TEST_MESSAGE), appBuffer, true);
+ appBuffer.flip();
+ result = clientEngine.wrap(appBuffer, cnetBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status: " + result.getStatus());
+ cnetBuffer.flip();
+ appBuffer.clear();
+ result = serverEngine.unwrap(cnetBuffer, appBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status: " + result.getStatus());
+ appBuffer.flip();
+ String msg = cs.decode(appBuffer).toString();
+ if (!msg.equals(TEST_MESSAGE))
+ throw new SSLException("message decode failed");
+
+ appBuffer.clear();
+ enc.encode(CharBuffer.wrap(msg), appBuffer, true);
+ appBuffer.flip();
+ result = serverEngine.wrap(appBuffer, snetBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status: " + result.getStatus());
+ snetBuffer.flip();
+ appBuffer.clear();
+ result = clientEngine.unwrap(snetBuffer, appBuffer);
+ if (result.getStatus() != Status.OK)
+ throw new SSLException("unexpected status: " + result.getStatus());
+ appBuffer.flip();
+ msg = cs.decode(appBuffer).toString();
+ if (!msg.equals(TEST_MESSAGE))
+ throw new SSLException("message decode (2) failed");
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Entries b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Entries
new file mode 100644
index 00000000..83b6ec2d
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Entries
@@ -0,0 +1,9 @@
+/AbstractEngineTest.java/1.1/Sun Jul 30 22:35:49 2006//
+/SimplePSKKeyManager.java/1.1/Sun Jul 30 22:35:49 2006//
+/SimpleX509KeyManager.java/1.1/Sun Jul 30 22:35:49 2006//
+/SimpleX509TrustManager.java/1.1/Sun Jul 30 22:35:49 2006//
+/TestGNUHandshake.java/1.2/Wed May 21 15:06:13 2008//
+/TestHandshake.java/1.2/Wed May 21 15:06:13 2008//
+/TestNoCiphersuites.java/1.2/Wed May 21 15:06:13 2008//
+/TestNoProtocols.java/1.1/Sun Jul 30 22:35:49 2006//
+D
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Repository b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Repository
new file mode 100644
index 00000000..9d38d869
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/net/ssl/SSLEngine
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Root b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/SimplePSKKeyManager.java b/gnu/testlet/javax/net/ssl/SSLEngine/SimplePSKKeyManager.java
new file mode 100644
index 00000000..93bbe9f0
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/SimplePSKKeyManager.java
@@ -0,0 +1,61 @@
+/* SimplePSKKeyManager.java -- simple PSK key manager for testing.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.javax.net.ssl.PreSharedKeyManager;
+
+import java.security.KeyManagementException;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class SimplePSKKeyManager
+ implements PreSharedKeyManager
+{
+
+ /* (non-Javadoc)
+ * @see gnu.javax.net.ssl.PreSharedKeyManager#chooseIdentityHint()
+ */
+ public String chooseIdentityHint()
+ {
+ return "MAUVE";
+ }
+
+ /* (non-Javadoc)
+ * @see gnu.javax.net.ssl.PreSharedKeyManager#getKey(java.lang.String)
+ */
+ public SecretKey getKey(String arg0) throws KeyManagementException
+ {
+ if (arg0.equals("MAUVE"))
+ return KEY;
+ return null;
+ }
+
+ static final SecretKey KEY
+ = new SecretKeySpec("Mauve TLS PSK test key".getBytes(), "PSK");
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509KeyManager.java b/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509KeyManager.java
new file mode 100644
index 00000000..dec51e49
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509KeyManager.java
@@ -0,0 +1,204 @@
+/* SimpleX509KeyManager.java -- key manager for testing.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.java.security.key.dss.DSSPrivateKey;
+import gnu.java.security.key.rsa.GnuRSAPrivateKey;
+
+import java.math.BigInteger;
+import java.net.Socket;
+import java.security.KeyFactory;
+import java.security.Principal;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import java.security.spec.PKCS8EncodedKeySpec;
+
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.X509ExtendedKeyManager;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class SimpleX509KeyManager
+ extends X509ExtendedKeyManager
+{
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#chooseClientAlias(java.lang.String[], java.security.Principal[], java.net.Socket)
+ */
+ public String chooseClientAlias(String[] arg0, Principal[] arg1, Socket arg2)
+ {
+ for (int i = 0; i < arg0.length; i++)
+ {
+ if (arg0[i].equalsIgnoreCase("rsa_sign"))
+ return "rsakey";
+ if (arg0[i].equalsIgnoreCase("dss_sign"))
+ return "dsskey";
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#chooseServerAlias(java.lang.String, java.security.Principal[], java.net.Socket)
+ */
+ public String chooseServerAlias(String arg0, Principal[] arg1, Socket arg2)
+ {
+ if (arg0.equalsIgnoreCase("DHE_RSA")
+ || arg0.equalsIgnoreCase("SRP_RSA")
+ || arg0.equalsIgnoreCase("RSA")
+ || arg0.equalsIgnoreCase("RSA_PSK"))
+ return "rsakey";
+ if (arg0.equalsIgnoreCase("DHE_DSS")
+ || arg0.equalsIgnoreCase("SRP_DSS"))
+ return "dsakey";
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#getCertificateChain(java.lang.String)
+ */
+ public X509Certificate[] getCertificateChain(String arg0)
+ {
+ if (arg0.equals("rsakey"))
+ return new X509Certificate[] { SimpleX509TrustManager.RSA };
+ if (arg0.equals("dsakey"))
+ return new X509Certificate[] { SimpleX509TrustManager.DSA };
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#getClientAliases(java.lang.String, java.security.Principal[])
+ */
+ public String[] getClientAliases(String arg0, Principal[] arg1)
+ {
+ if (arg0.equalsIgnoreCase("rsa_sign"))
+ return new String[] { "rsakey" };
+ if (arg0.equalsIgnoreCase("dss_sign"))
+ return new String[] { "dsakey" };
+ return new String[0];
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#getPrivateKey(java.lang.String)
+ */
+ public PrivateKey getPrivateKey(String arg0)
+ {
+ if (arg0.equals("dsakey"))
+ return DSAKEY;
+ if (arg0.equals("rsakey"))
+ return RSAKEY;
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509KeyManager#getServerAliases(java.lang.String, java.security.Principal[])
+ */
+ public String[] getServerAliases(String arg0, Principal[] arg1)
+ {
+ if (arg0.equalsIgnoreCase("DHE_RSA")
+ || arg0.equalsIgnoreCase("SRP_RSA")
+ || arg0.equalsIgnoreCase("RSA")
+ || arg0.equalsIgnoreCase("RSA_PSK"))
+ return new String[] { "rsakey" };
+ if (arg0.equalsIgnoreCase("DHE_DSS")
+ || arg0.equalsIgnoreCase("SRP_DSS"))
+ return new String[] { "dsakey" };
+ return new String[0];
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509ExtendedKeyManager#chooseEngineClientAlias(java.lang.String[], java.security.Principal[], javax.net.ssl.SSLEngine)
+ */
+ public String chooseEngineClientAlias(String[] arg0, Principal[] arg1, SSLEngine arg2)
+ {
+ for (int i = 0; i < arg0.length; i++)
+ {
+ if (arg0[i].equalsIgnoreCase("rsa_sign"))
+ return "rsakey";
+ if (arg0[i].equalsIgnoreCase("dss_sign"))
+ return "dsskey";
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509ExtendedKeyManager#chooseEngineServerAlias(java.lang.String, java.security.Principal[], javax.net.ssl.SSLEngine)
+ */
+ public String chooseEngineServerAlias(String arg0, Principal[] arg1, SSLEngine arg2)
+ {
+ if (arg0.equalsIgnoreCase("DHE_RSA")
+ || arg0.equalsIgnoreCase("SRP_RSA")
+ || arg0.equalsIgnoreCase("RSA")
+ || arg0.equalsIgnoreCase("RSA_PSK"))
+ return "rsakey";
+ if (arg0.equalsIgnoreCase("DHE_DSS")
+ || arg0.equalsIgnoreCase("SRP_DSS"))
+ return "dsakey";
+ return null;
+ }
+
+ static final PrivateKey RSAKEY = new GnuRSAPrivateKey
+ (new BigInteger("00e83e0911bdfd4d53f67e8642c720" +
+ "8cfb338cfa6ffd984a26155146ba79" +
+ "7fd595f03fff85d0e98490b7544f3a" +
+ "742ee77f54c2ca9d5bf62677144565" +
+ "a303ff6f37", 16),
+ new BigInteger("00cc582a56f26eb17d54f9d8eeb386" +
+ "9fe6b21368b501ecaa908f0cff0306" +
+ "7b95867b8f07992a6208304f272092" +
+ "dc7538cd5d03b1393108b4f2bd5be2" +
+ "e4f471ca87", 16),
+ new BigInteger("10001", 16),
+ new BigInteger("00a986a8e62ef20867949a84a2df1b" +
+ "7ff4ed645d31749637696dbeb7d079" +
+ "ac17323692f5de0dc60c8e509213d1" +
+ "b76827aa503d0fa789501abf3c92eb" +
+ "5ad6f6de8e4e3eda86c782c55024d6" +
+ "e3be87a203d9260e9b30245ff45802" +
+ "acc824f5477bee73e2767cde28e10b" +
+ "479dfc39c52c67d17d1922a126def7" +
+ "cd5bc7c9f5f4f02771", 16));
+ static final PrivateKey DSAKEY = new DSSPrivateKey
+ (new BigInteger("00df089411968aba94c203bebe06f9" +
+ "81342c98354c7fd675d5360038fe41" +
+ "2939a8d656db002a9bff95026dd94c" +
+ "b5a4861f994276db28e8007e7dcf10" +
+ "df05011a8fe82a102f3642e75f7c7f" +
+ "9b4c4c66d39c1708a2a783f584fd14" +
+ "c6927253f25bfd2effa9710465e5a0" +
+ "f63969852515d876e1f05fc6d4c18d" +
+ "7e00e1318877835dd9", 16),
+ new BigInteger("009ff16bac62ce0f0dc77d16de6cf3000adea61c7b", 16),
+ new BigInteger("12946984d6336481e7e6c87aa8dc0f" +
+ "d28afea6c842367048e065d9ff9c51" +
+ "106358298cf2d205c78e3c7e4569e4" +
+ "86e132d48eddaae88875fde5f6b71e" +
+ "2d75960c8f10541ac94eba96008233" +
+ "de8aa2041ca1e98a55b90c8c43bf2c" +
+ "15e040df4e7f167db198549e6a4eb8" +
+ "ae41b41576d95791f6779377cf49c8" +
+ "b68498a2e200038e", 16),
+ new BigInteger("2564481362698611a67084e8857612b5dd8dd668", 16));
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509TrustManager.java b/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509TrustManager.java
new file mode 100644
index 00000000..d57a5b82
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/SimpleX509TrustManager.java
@@ -0,0 +1,183 @@
+/* SimpleX509TrustManager.java -- trust manager for testing.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import java.io.ByteArrayInputStream;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class SimpleX509TrustManager
+ implements X509TrustManager
+{
+ static final String CA_CERT =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIEjDCCA3SgAwIBAgIJAMOUZM/pKkaNMA0GCSqGSIb3DQEBBQUAMIGKMREwDwYD\n" +
+ "VQQDEwhNYXV2ZSBDQTELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0\n" +
+ "dHMxDzANBgNVBAcTBkJvc3RvbjEOMAwGA1UEChMFTWF1dmUxLzAtBgkqhkiG9w0B\n" +
+ "CQEWIG1hdXZlLWRpc2N1c3NAc291cmNlcy5yZWRoYXQuY29tMB4XDTA2MDcxNzAz\n" +
+ "MDg0OVoXDTExMDcxNjAzMDg0OVowgYoxETAPBgNVBAMTCE1hdXZlIENBMQswCQYD\n" +
+ "VQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9u\n" +
+ "MQ4wDAYDVQQKEwVNYXV2ZTEvMC0GCSqGSIb3DQEJARYgbWF1dmUtZGlzY3Vzc0Bz\n" +
+ "b3VyY2VzLnJlZGhhdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\n" +
+ "AQC1sXjS8OAxk6DmfW0sbsOadgjQsKsydQ3xRinjA7dMPYyPaoY5huE7Ur4ClHka\n" +
+ "ThF7enGkQi5mIaGUD5noDoE0+2IcRqp/bIXFEvwgVFrCvG9GbG8mmoEEhdBSG0ol\n" +
+ "+VUwsCmwaTbzi4erCIq6907CvVUmqB3NMLKD6blghHUCWQT2BvbWev5CGktPvsp+\n" +
+ "9mDpI898Xdp+zqrVkd4vGyvFI51Fj6GdZhud6ctFBMsZApkTHTaLi3m+4LGvR4gP\n" +
+ "x+5ukOWQKe/MACIna6ARVxLSiYHiusdSOOvjIWW6cSC89Lmnlqp2IjDEqObLhNjF\n" +
+ "ilvfnJ2/q+WJvEDSyjvO0ywvAgMBAAGjgfIwge8wHQYDVR0OBBYEFP2xH8L1npmn\n" +
+ "dwjY7nndHfo+EILFMIG/BgNVHSMEgbcwgbSAFP2xH8L1npmndwjY7nndHfo+EILF\n" +
+ "oYGQpIGNMIGKMREwDwYDVQQDEwhNYXV2ZSBDQTELMAkGA1UEBhMCVVMxFjAUBgNV\n" +
+ "BAgTDU1hc3NhY2h1c2V0dHMxDzANBgNVBAcTBkJvc3RvbjEOMAwGA1UEChMFTWF1\n" +
+ "dmUxLzAtBgkqhkiG9w0BCQEWIG1hdXZlLWRpc2N1c3NAc291cmNlcy5yZWRoYXQu\n" +
+ "Y29tggkAw5Rkz+kqRo0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA\n" +
+ "cAQ0W4kd7mvT/yZvTxjZ9NSvXLGJvaxDoSnDgJ4OVBI+BxYyp7BfseBpywUY2vke\n" +
+ "nyMwjKsrDIgkEGwJGN7s2fTbw4L8f3/RThB26uF03UUZYKBQNKeeQjNAMI8rXBnO\n" +
+ "oZHARSSWbH9IdllFaaP1aB0bq6ystrwaVj2y689UY6X1/MY8gc8WaUP/C/7Lj8T6\n" +
+ "eJFSuZSvNaAdaAW/G9KQNPONVWHBty7OrFK/U56JcyKg0VSc0Edd9YxWqHdByuFr\n" +
+ "hM9SaKM3GMmOi3Avh59STCXqgdrKh4CE6ytGiutN1bMKrhx6xKZMZjWHzZ1Ab8Jd\n" +
+ "FypiU79sLqjQamv/fV5CBw==\n" +
+ "-----END CERTIFICATE-----\n";
+
+ static final String DSA_CERT =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIFRDCCBCygAwIBAgIBATANBgkqhkiG9w0BAQUFADCBijERMA8GA1UEAxMITWF1\n" +
+ "dmUgQ0ExCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYD\n" +
+ "VQQHEwZCb3N0b24xDjAMBgNVBAoTBU1hdXZlMS8wLQYJKoZIhvcNAQkBFiBtYXV2\n" +
+ "ZS1kaXNjdXNzQHNvdXJjZXMucmVkaGF0LmNvbTAeFw0wNjA3MTcwMzEwNDdaFw0w\n" +
+ "NzA3MTcwMzEwNDdaMIGHMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVz\n" +
+ "ZXR0czEOMAwGA1UEChMFTWF1dmUxDjAMBgNVBAsTBU1hdXZlMQ8wDQYDVQQDEwZk\n" +
+ "c2FrZXkxLzAtBgkqhkiG9w0BCQEWIG1hdXZlLWRpc2N1c3NAc291cmNlcy5yZWRo\n" +
+ "YXQuY29tMIIBtjCCASsGByqGSM44BAEwggEeAoGBAN8IlBGWirqUwgO+vgb5gTQs\n" +
+ "mDVMf9Z11TYAOP5BKTmo1lbbACqb/5UCbdlMtaSGH5lCdtso6AB+fc8Q3wUBGo/o\n" +
+ "KhAvNkLnX3x/m0xMZtOcFwiip4P1hP0UxpJyU/Jb/S7/qXEEZeWg9jlphSUV2Hbh\n" +
+ "8F/G1MGNfgDhMYh3g13ZAhUAn/FrrGLODw3HfRbebPMACt6mHHsCgYASlGmE1jNk\n" +
+ "gefmyHqo3A/Siv6myEI2cEjgZdn/nFEQY1gpjPLSBceOPH5FaeSG4TLUjt2q6Ih1\n" +
+ "/eX2tx4tdZYMjxBUGslOupYAgjPeiqIEHKHpilW5DIxDvywV4EDfTn8WfbGYVJ5q\n" +
+ "TriuQbQVdtlXkfZ3k3fPSci2hJii4gADjgOBhAACgYATRBEs6kCrp+8MsPhTkb8P\n" +
+ "dT8FhIVN6txvwWfBFnMzbWrn32MDdxPL5pNT3wYcwqJ5jNxFZdexpuid6JYYx6KU\n" +
+ "tO/UOkDvu1XIMaJF0Auy+m+NMF5FQD9uF5d0p6CQvq0sgwrz30ss7etBdFEltOsp\n" +
+ "LNDAVdMuxO54oerzZ6Z6vKOCASAwggEcMAkGA1UdEwQCMAAwHQYDVR0OBBYEFJFR\n" +
+ "LmRjeyJPwYtRnzLiXMpf0MUAMIG/BgNVHSMEgbcwgbSAFP2xH8L1npmndwjY7nnd\n" +
+ "Hfo+EILFoYGQpIGNMIGKMREwDwYDVQQDEwhNYXV2ZSBDQTELMAkGA1UEBhMCVVMx\n" +
+ "FjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNVBAcTBkJvc3RvbjEOMAwGA1UE\n" +
+ "ChMFTWF1dmUxLzAtBgkqhkiG9w0BCQEWIG1hdXZlLWRpc2N1c3NAc291cmNlcy5y\n" +
+ "ZWRoYXQuY29tggkAw5Rkz+kqRo0wLgYJYIZIAYb4QgEEBCEWH2h0dHBzOi8vd3d3\n" +
+ "LnNpYWwub3JnL2NhLWNybC5wZW0wDQYJKoZIhvcNAQEFBQADggEBABeqOYKPgeS2\n" +
+ "y+z3IQwoYABlqahQAur+HOoXrZqs/XJ8YgyOWJtLkdHFyTYEo48yVZNp9zW11DMx\n" +
+ "mB5ChsGTR4YBG8DvQ3ua+aZo3Sdcum7IChgUfhLTfklSV8el13rjj8DyIBv2WQrn\n" +
+ "KCofgObOrDoXUaNEBGMGVC5znCoFbmdE8SsTXMtjRC+sNhRvDFpKiXzNFJOwR7v7\n" +
+ "zrVC6uyaXxfQMbcSdq0Ma9yVzHCc7rZfCQOoeieX6reAxp+iC7q/I+bTC5bi0GdH\n" +
+ "wPSpQ+DnpimjvrSU2ESYORxZBrdxzQHCXaoJCtCF26w5P9KkpTCavo+ERgTaiVA6\n" +
+ "5Wcv1NVwcM0=\n" +
+ "-----END CERTIFICATE-----\n";
+
+ static final String RSA_CERT =
+ "-----BEGIN CERTIFICATE-----\n" +
+ "MIIELDCCAxSgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBijERMA8GA1UEAxMITWF1\n" +
+ "dmUgQ0ExCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYD\n" +
+ "VQQHEwZCb3N0b24xDjAMBgNVBAoTBU1hdXZlMS8wLQYJKoZIhvcNAQkBFiBtYXV2\n" +
+ "ZS1kaXNjdXNzQHNvdXJjZXMucmVkaGF0LmNvbTAeFw0wNjA3MTcwMzEwNDhaFw0w\n" +
+ "NzA3MTcwMzEwNDhaMIGHMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVz\n" +
+ "ZXR0czEOMAwGA1UEChMFTWF1dmUxDjAMBgNVBAsTBU1hdXZlMQ8wDQYDVQQDEwZy\n" +
+ "c2FrZXkxLzAtBgkqhkiG9w0BCQEWIG1hdXZlLWRpc2N1c3NAc291cmNlcy5yZWRo\n" +
+ "YXQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5YWr2T8IuEiHxGzT3\n" +
+ "MZjEnV4sEpjiaDBo3+tJzQjn0ObAedylwISssX3J/XwsE/ePIIOmgeuvWeL/Q9bM\n" +
+ "Y/FVtCoeLZAnKMa17duerFvOft/eErt5Ed4TBaR08HTgyVToIW1CKh5JGBB7n76P\n" +
+ "A7FMu4aL8WHak+jiyg7bLLwMAQIDAQABo4IBIDCCARwwCQYDVR0TBAIwADAdBgNV\n" +
+ "HQ4EFgQU9Wreo4FMtz6QD0GYU3ZpYrRoB3Awgb8GA1UdIwSBtzCBtIAU/bEfwvWe\n" +
+ "mad3CNjued0d+j4QgsWhgZCkgY0wgYoxETAPBgNVBAMTCE1hdXZlIENBMQswCQYD\n" +
+ "VQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9u\n" +
+ "MQ4wDAYDVQQKEwVNYXV2ZTEvMC0GCSqGSIb3DQEJARYgbWF1dmUtZGlzY3Vzc0Bz\n" +
+ "b3VyY2VzLnJlZGhhdC5jb22CCQDDlGTP6SpGjTAuBglghkgBhvhCAQQEIRYfaHR0\n" +
+ "cHM6Ly93d3cuc2lhbC5vcmcvY2EtY3JsLnBlbTANBgkqhkiG9w0BAQUFAAOCAQEA\n" +
+ "DDBAL1KQl+KZSLpN7vHOUETz8ypin+BK5DKlvHS1vhjutSYoDdZBVYauXL2BaTN8\n" +
+ "WXKdf8B5ucJOtDvSs4flvKT9YHw7Jg6JgxO0efScBsqCbB6JDZv0fpagSqZUpFTj\n" +
+ "MKRpWOHaqTynUCou6vdAcEtAGMV9GupwZe26qEJbvYF0gj77bfoPelQB6B7H3xEZ\n" +
+ "3zUC57ViXghvCTMPtOC/FoI2NcT1FMm/ffpsKbW5q4/daWt0sicpOho97mUip5MS\n" +
+ "F3VXSY3POgoHXT+5oFyuvgAh6az7GmdM3/0CpL99dGNzyHv2s5LEsd1Hcl7SKoUJ\n" +
+ "cTxGbnNzFAM+bKAoKK64IQ==\n" +
+ "-----END CERTIFICATE-----\n";
+
+ static final X509Certificate CA;
+ static final X509Certificate DSA;
+ static final X509Certificate RSA;
+
+ static
+ {
+ X509Certificate ca = null;
+ X509Certificate dsa = null;
+ X509Certificate rsa = null;
+ try
+ {
+ CertificateFactory cf = CertificateFactory.getInstance("X509");
+ ca = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(CA_CERT.getBytes()));
+ dsa = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(DSA_CERT.getBytes()));
+ rsa = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(RSA_CERT.getBytes()));
+ }
+ catch (Exception x)
+ {
+ x.printStackTrace();
+ }
+ CA = ca;
+ DSA = dsa;
+ RSA = rsa;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], java.lang.String)
+ */
+ public void checkClientTrusted(X509Certificate[] arg0, String arg1)
+ throws CertificateException
+ {
+ if (DSA.equals(arg0[0]) || RSA.equals(arg0[0]))
+ return;
+ throw new CertificateException();
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], java.lang.String)
+ */
+ public void checkServerTrusted(X509Certificate[] arg0, String arg1)
+ throws CertificateException
+ {
+ if (DSA.equals(arg0[0]) || RSA.equals(arg0[0]))
+ return;
+ throw new CertificateException();
+ }
+
+ /* (non-Javadoc)
+ * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
+ */
+ public X509Certificate[] getAcceptedIssuers()
+ {
+ return new X509Certificate[] { CA };
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java b/gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java
new file mode 100644
index 00000000..3f28dd86
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/TestGNUHandshake.java
@@ -0,0 +1,104 @@
+/* TestGNUHandshake.java -- test GNU-supported cipher suites.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU JESSIE
+// Uses: AbstractEngineTest SimpleX509KeyManager SimplePSKKeyManager SimpleX509TrustManager
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.testlet.TestHarness;
+
+import java.security.SecureRandom;
+import java.security.Security;
+
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.TrustManager;
+
+/**
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestGNUHandshake
+ extends AbstractEngineTest
+{
+ protected boolean setup(TestHarness harness)
+ {
+ try
+ {
+ harness.checkPoint("SSLContext.getInstance");
+ context = SSLContext.getInstance("SSL");
+ context.init(new KeyManager[] { new SimpleX509KeyManager(),
+ new SimplePSKKeyManager() },
+ new TrustManager[] { new SimpleX509TrustManager() },
+ SecureRandom.getInstance("Fortuna"));
+ Security.setProperty("jessie.client.psk.identity", "MAUVE");
+ }
+ catch (Exception e)
+ {
+ harness.fail("SSLContext.getInstance");
+ harness.debug(e);
+ return false;
+ }
+ return true;
+ }
+
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.javax.net.ssl.SSLEngine.AbstractEngineTest#implTest(gnu.testlet.TestHarness)
+ */
+ protected void implTest(TestHarness harness)
+ {
+ String[] protocols;
+ String[] suites;
+
+ SSLEngine fake = context.createSSLEngine();
+ protocols = fake.getSupportedProtocols();
+ suites = fake.getSupportedCipherSuites();
+
+ for (int i = 0; i < protocols.length; i++)
+ {
+ for (int j = 0; j < suites.length; j++)
+ {
+ // Only test PSK suites.
+ if (suites[j].indexOf("PSK") < 0)
+ continue;
+ setupEngines(harness);
+ clientEngine.setEnabledProtocols(new String[] { protocols[i] });
+ clientEngine.setEnabledCipherSuites(new String[] { suites[j] });
+ serverEngine.setEnabledCipherSuites(serverEngine.getSupportedCipherSuites());
+
+ harness.checkPoint("SSLEngine/" + protocols[i] + "/"
+ + suites[j]);
+ try
+ {
+ runHandshake();
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.check(false);
+ harness.debug(x);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java b/gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java
new file mode 100644
index 00000000..2353c370
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/TestHandshake.java
@@ -0,0 +1,86 @@
+/* testAll.java -- test all protocol versions and cipher suites.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5 JSSE
+// Uses: AbstractEngineTest SimpleX509KeyManager SimplePSKKeyManager SimpleX509TrustManager
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.testlet.TestHarness;
+
+import javax.net.ssl.SSLEngine;
+
+/**
+ * Test every protocol and cipher suite that we can.
+ *
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestHandshake
+ extends AbstractEngineTest
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.javax.net.ssl.SSLEngine.AbstractEngineTest#implTest(gnu.testlet.TestHarness)
+ */
+ protected void implTest(TestHarness harness)
+ {
+ String[] protocols;
+ String[] suites;
+
+ SSLEngine fake = context.createSSLEngine();
+ protocols = fake.getSupportedProtocols();
+ suites = fake.getSupportedCipherSuites();
+
+ for (int i = 0; i < protocols.length; i++)
+ {
+ for (int j = 0; j < suites.length; j++)
+ {
+ // Skip static DH suites; we need a way to generate appropriate
+ // certificates for these suites.
+ if (suites[j].indexOf("DH_RSA") >= 0
+ || suites[j].indexOf("DH_DSS") >= 0)
+ continue;
+ // Test these in GNU-specific test.
+ if (suites[j].indexOf("PSK") >= 0
+ || suites[j].indexOf("SRP") >= 0)
+ continue;
+ setupEngines(harness);
+ clientEngine.setEnabledProtocols(new String[] { protocols[i] });
+ clientEngine.setEnabledCipherSuites(new String[] { suites[j] });
+ serverEngine.setEnabledCipherSuites(serverEngine.getSupportedCipherSuites());
+
+ harness.checkPoint("SSLEngine/" + protocols[i] + "/"
+ + suites[j]);
+ try
+ {
+ runHandshake();
+ harness.check(true);
+ }
+ catch (Exception x)
+ {
+ harness.check(false);
+ harness.debug(x);
+ }
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java b/gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java
new file mode 100644
index 00000000..05fcfe5b
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/TestNoCiphersuites.java
@@ -0,0 +1,95 @@
+/* TestNoCiphersuites.java -- test no common ciphersuites.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5 JSSE
+// Uses: AbstractEngineTest SimpleX509KeyManager SimplePSKKeyManager SimpleX509TrustManager
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * Test a connection between two SSLEngines with no cipher suites in common
+ * (which should fail).
+ *
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestNoCiphersuites
+ extends AbstractEngineTest
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.javax.net.ssl.SSLEngine.AbstractEngineTest#implTest(gnu.testlet.TestHarness)
+ */
+ protected void implTest(TestHarness harness)
+ {
+ setupEngines(harness);
+
+ clientEngine.setEnabledCipherSuites(new String[] {
+ "TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
+ "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
+ "TLS_DH_DSS_WITH_AES_256_CBC_SHA",
+ "TLS_DH_RSA_WITH_AES_256_CBC_SHA",
+ "TLS_RSA_WITH_AES_256_CBC_SHA",
+ "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",
+ "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
+ "TLS_DH_DSS_WITH_AES_128_CBC_SHA",
+ "TLS_DH_RSA_WITH_AES_128_CBC_SHA",
+ "TLS_RSA_WITH_AES_128_CBC_SHA",
+ "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
+ "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA",
+ "TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_RSA_WITH_3DES_EDE_CBC_SHA"
+ });
+
+ serverEngine.setEnabledCipherSuites(new String[] {
+ "TLS_RSA_WITH_RC4_128_MD5",
+ "TLS_RSA_WITH_RC4_128_SHA",
+ "TLS_DHE_DSS_WITH_DES_CBC_SHA",
+ "TLS_DHE_RSA_WITH_DES_CBC_SHA",
+ "TLS_DH_DSS_WITH_DES_CBC_SHA",
+ "TLS_DH_RSA_WITH_DES_CBC_SHA",
+ "TLS_RSA_WITH_DES_CBC_SHA",
+ "TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA",
+ "TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA",
+ "TLS_RSA_EXPORT_WITH_DES40_CBC_SHA",
+ "TLS_RSA_EXPORT_WITH_RC4_40_MD5",
+ "TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA",
+ "TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
+ "TLS_RSA_WITH_NULL_MD5",
+ "TLS_RSA_WITH_NULL_SHA"
+ });
+
+ harness.checkPoint("SSLEngine/no-ciphersuites");
+
+ try
+ {
+ runHandshake();
+ harness.fail("SSLEngine/no-ciphersuites");
+ }
+ catch (Exception x)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/net/ssl/SSLEngine/TestNoProtocols.java b/gnu/testlet/javax/net/ssl/SSLEngine/TestNoProtocols.java
new file mode 100644
index 00000000..c011aac7
--- /dev/null
+++ b/gnu/testlet/javax/net/ssl/SSLEngine/TestNoProtocols.java
@@ -0,0 +1,59 @@
+/* TestNoProtocols.java -- test handshake failure with no common protocols.
+ Copyright (C) 2006 Casey Marshall <csm@gnu.org>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5 JSSE
+
+package gnu.testlet.javax.net.ssl.SSLEngine;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test a connection between SSLEngines that don't have any protocols in
+ * common (that is, test that the handshake fails).
+ *
+ * @author Casey Marshall (csm@gnu.org)
+ */
+public class TestNoProtocols extends AbstractEngineTest
+{
+
+ /* (non-Javadoc)
+ * @see gnu.testlet.javax.net.ssl.SSLEngine.AbstractEngineTest#implTest(gnu.testlet.TestHarness)
+ */
+ protected void implTest(TestHarness harness)
+ {
+ setupEngines(harness);
+ clientEngine.setEnabledProtocols(new String[] { "SSLv3" });
+ serverEngine.setEnabledProtocols(new String[] { "TLSv1", "TLSv1.1" });
+
+ harness.checkPoint("SSLEngine/protcols");
+ try
+ {
+ runHandshake();
+ harness.fail("SSLEngine/protocols");
+ }
+ catch (Exception e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/print/CVS/Entries b/gnu/testlet/javax/print/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/print/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/print/CVS/Entries.Log b/gnu/testlet/javax/print/CVS/Entries.Log
new file mode 100644
index 00000000..355b9d4c
--- /dev/null
+++ b/gnu/testlet/javax/print/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/DocFlavor////
+A D/SimpleDoc////
+A D/attribute////
diff --git a/gnu/testlet/javax/print/CVS/Repository b/gnu/testlet/javax/print/CVS/Repository
new file mode 100644
index 00000000..8d869e1e
--- /dev/null
+++ b/gnu/testlet/javax/print/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print
diff --git a/gnu/testlet/javax/print/CVS/Root b/gnu/testlet/javax/print/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/DocFlavor/CVS/Entries b/gnu/testlet/javax/print/DocFlavor/CVS/Entries
new file mode 100644
index 00000000..58d36305
--- /dev/null
+++ b/gnu/testlet/javax/print/DocFlavor/CVS/Entries
@@ -0,0 +1,3 @@
+/hostEncoding.java/1.1/Thu Feb 23 15:16:08 2006//
+/parseMimeType.java/1.3/Thu Feb 23 12:58:34 2006//
+D
diff --git a/gnu/testlet/javax/print/DocFlavor/CVS/Repository b/gnu/testlet/javax/print/DocFlavor/CVS/Repository
new file mode 100644
index 00000000..738a7135
--- /dev/null
+++ b/gnu/testlet/javax/print/DocFlavor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/DocFlavor
diff --git a/gnu/testlet/javax/print/DocFlavor/CVS/Root b/gnu/testlet/javax/print/DocFlavor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/DocFlavor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/DocFlavor/hostEncoding.java b/gnu/testlet/javax/print/DocFlavor/hostEncoding.java
new file mode 100644
index 00000000..846057ee
--- /dev/null
+++ b/gnu/testlet/javax/print/DocFlavor/hostEncoding.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.5
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.DocFlavor;
+
+import java.nio.charset.Charset;
+
+import javax.print.DocFlavor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests that the _HOST doc flavor types are initialized
+ * with the host encoding.
+ */
+public class hostEncoding implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ h.check(DocFlavor.hostEncoding.equals(Charset.defaultCharset().name()));
+
+ String value = null;
+ value = DocFlavor.URL.TEXT_HTML_HOST.getParameter("charset");
+ h.check(value.equals(DocFlavor.hostEncoding.toLowerCase()));
+ value = DocFlavor.URL.TEXT_PLAIN_HOST.getParameter("charset");
+ h.check(value.equals(DocFlavor.hostEncoding.toLowerCase()));
+ }
+
+}
diff --git a/gnu/testlet/javax/print/DocFlavor/parseMimeType.java b/gnu/testlet/javax/print/DocFlavor/parseMimeType.java
new file mode 100644
index 00000000..8de5202a
--- /dev/null
+++ b/gnu/testlet/javax/print/DocFlavor/parseMimeType.java
@@ -0,0 +1,199 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+// Copyright (C) 2006 Wolfgang Baer <WBaer@gmx.de>
+
+// 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.javax.print.DocFlavor;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.print.DocFlavor;
+
+/**
+ * Tests the mime type parsing behaviour of DocFlavor.
+ *
+ * @author Michael Koch (konqueror@gmx.de)
+ * @author Wolfgang Baer (WBaer@gmx.de)
+ */
+public class parseMimeType implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ // Check simple mimetype
+ DocFlavor simple = new DocFlavor("text/plain; charset=us-ascii",
+ "java.io.InputStream");
+
+ h.checkPoint("Simple mimetype");
+ h.check(simple.getMediaType().equals("text"));
+ h.check(simple.getMediaSubtype().equals("plain"));
+ h.check(simple.getParameter("charset").equals("us-ascii"));
+ h.check(simple.getRepresentationClassName().equals("java.io.InputStream"));
+ // Check if mimetype can be correctly built together again.
+ h.check(simple.getMimeType().equals("text/plain; charset=\"us-ascii\""));
+ h.check(simple.toString().equals("text/plain; charset=\"us-ascii\"; " +
+ "class=\"java.io.InputStream\""));
+
+ // Check for mimetype with quoted parameter value
+ DocFlavor quoted = new DocFlavor("text/plain; charset=\"us-ascii\"",
+ "java.io.InputStream");
+
+ h.checkPoint("Mimetype with quoted param values");
+ h.check(quoted.getParameter("charset").equals("us-ascii"));
+ // Check if mimetype can be correctly built together again.
+ h.check(quoted.getMimeType().equals("text/plain; charset=\"us-ascii\""));
+ h.check(simple.toString().equals("text/plain; charset=\"us-ascii\"; " +
+ "class=\"java.io.InputStream\""));
+
+ // Check for mimetype with multiple parameters
+ DocFlavor multipleParam = new DocFlavor("text/plain; " +
+ "charset=\"us-ascii\"; param=paramValue", "java.io.InputStream");
+
+ h.checkPoint("Mimetype with multiple parameters");
+ h.check(multipleParam.getParameter("charset").equals("us-ascii"));
+ h.check(multipleParam.getParameter("param").equals("paramValue"));
+ // Check if mimetype can be correctly built together again.
+ h.check(multipleParam.getMimeType().equals("text/plain; " +
+ "charset=\"us-ascii\"; param=\"paramValue\""));
+ h.check(multipleParam.toString().equals("text/plain; charset=\"us-ascii\";" +
+ " param=\"paramValue\"; class=\"java.io.InputStream\""));
+
+ // Check natural order for mimetype with multiple parameters
+ DocFlavor paramOrder = new DocFlavor("text/plain; " +
+ "charset=\"us-ascii\"; another=paramValue; charset3=something",
+ "java.io.InputStream");
+
+ h.checkPoint("Multiple parameters output order");
+ // parameters are returned in natural key order
+ // therefore another -> charset -> charset3
+ h.check(paramOrder.getMimeType().equals("text/plain; " +
+ "another=\"paramValue\"; charset=\"us-ascii\"; charset3=\"something\""));
+
+ // Check charset treatment
+ DocFlavor charset = new DocFlavor("text/plain; charset=US-ascii; " +
+ "nocharset=UoUo", "java.io.InputStream");
+
+ h.checkPoint("Test charset treatment");
+ h.check(charset.getParameter("charset").equals("us-ascii"));
+ h.check(charset.getParameter("nocharset").equals("UoUo"));
+
+ // Check for mimetype with comments
+ DocFlavor comments = new DocFlavor("text/plain(Comment); " +
+ "charset=\"us-ascii\" (Comment2)(Comment1)", "java.io.InputStream");
+
+ h.checkPoint("Mimetype with comments");
+ h.check(comments.getMediaSubtype().equals("plain"));
+ h.check(comments.getParameter("charset").equals("us-ascii"));
+
+ // Syntax checks
+ h.checkPoint("Syntax checks");
+
+ // Lowercase treatment of media type and media subtype
+ DocFlavor lowercase = new DocFlavor("teXt/Plain; charset=US-ascii; " +
+ "nocharset=UoUo", "java.io.InputStream");
+
+ h.check(lowercase.getMediaType().equals("text"));
+ h.check(lowercase.getMediaSubtype().equals("plain"));
+
+ try
+ {
+ // wrongly quoted value
+ new DocFlavor("text/plain; charset=us-ascii\"", "java.io.InputStream");
+ h.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ // wrong character
+ new DocFlavor(" te,xt/plain; charset=us-ascii", "java.io.InputStream");
+ h.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ // only values may be quoted
+ new DocFlavor("text/plain; \"charset\"=us-ascii", "java.io.InputStream");
+ h.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ // ' is an allowed character
+ new DocFlavor(" text/plain; charset=us-asc'ii", "java.io.InputStream");
+ h.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(false);
+ }
+ try
+ {
+ // wrongly character in unqouted value
+ new DocFlavor("text/plain; charset=?us-ascii", "java.io.InputStream");
+ h.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(true);
+ }
+ try
+ {
+ // character in qouted value
+ DocFlavor syntax = new DocFlavor("text/plain; param=\"?value.\"",
+ "java.io.InputStream");
+ h.check(syntax.getParameter("param").equals("?value."));
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(false);
+ }
+ try
+ {
+ // character in qouted value
+ new DocFlavor("text/plain; param=\"?vöal ue.\"", "java.io.InputStream");
+ h.check(true);
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(false);
+ }
+ try
+ {
+ // special characters in mime type
+ DocFlavor syntax = new DocFlavor("application/vnd.cups-command",
+ "java.io.InputStream");
+ h.check(syntax.getMediaSubtype().equals("vnd.cups-command"));
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.check(false);
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/print/SimpleDoc/CVS/Entries b/gnu/testlet/javax/print/SimpleDoc/CVS/Entries
new file mode 100644
index 00000000..ddc520b8
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/CVS/Entries
@@ -0,0 +1,5 @@
+/constructor.java/1.1/Sat Jan 14 13:34:05 2006//
+/getAttributes.java/1.1/Sat Jan 14 13:34:05 2006//
+/getReaderForText.java/1.1/Sat Jan 14 13:34:05 2006//
+/getStreamForBytes.java/1.1/Sat Jan 14 13:34:05 2006//
+D
diff --git a/gnu/testlet/javax/print/SimpleDoc/CVS/Repository b/gnu/testlet/javax/print/SimpleDoc/CVS/Repository
new file mode 100644
index 00000000..027755c3
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/SimpleDoc
diff --git a/gnu/testlet/javax/print/SimpleDoc/CVS/Root b/gnu/testlet/javax/print/SimpleDoc/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/SimpleDoc/constructor.java b/gnu/testlet/javax/print/SimpleDoc/constructor.java
new file mode 100644
index 00000000..d86d626c
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/constructor.java
@@ -0,0 +1,96 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.SimpleDoc;
+
+import java.io.CharArrayReader;
+
+import javax.print.DocFlavor;
+import javax.print.SimpleDoc;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Simple constructor tests.
+ */
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ // printdata matches flavor
+ new SimpleDoc(new byte[100], DocFlavor.BYTE_ARRAY.GIF, null);
+ harness.check(true);
+ }
+ catch (RuntimeException e)
+ {
+ e.printStackTrace();
+ harness.check(false);
+ }
+
+ try
+ {
+ // check for sublcasses of reader
+ new SimpleDoc(new CharArrayReader(new char[]{'A','b'}),
+ DocFlavor.READER.TEXT_PLAIN, null);
+ harness.check(true);
+ }
+ catch (RuntimeException e)
+ {
+ e.printStackTrace();
+ harness.check(false);
+ }
+
+ try
+ {
+ // printdata does not match flavor
+ new SimpleDoc(new byte[100], DocFlavor.CHAR_ARRAY.TEXT_PLAIN, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new SimpleDoc(null, DocFlavor.CHAR_ARRAY.TEXT_PLAIN, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new SimpleDoc(new String("kk"), null, null);
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/print/SimpleDoc/getAttributes.java b/gnu/testlet/javax/print/SimpleDoc/getAttributes.java
new file mode 100644
index 00000000..55100a23
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/getAttributes.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.SimpleDoc;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.print.DocFlavor;
+import javax.print.SimpleDoc;
+import javax.print.attribute.DocAttributeSet;
+import javax.print.attribute.HashDocAttributeSet;
+import javax.print.attribute.UnmodifiableSetException;
+import javax.print.attribute.standard.Compression;
+import javax.print.attribute.standard.OrientationRequested;
+import javax.print.attribute.standard.Sides;
+
+/**
+ * Tests various aspects of the getAttributes method.
+ */
+public class getAttributes implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ HashDocAttributeSet set = new HashDocAttributeSet();
+ set.add(Sides.DUPLEX);
+ set.add(Compression.COMPRESS);
+ set.add(OrientationRequested.LANDSCAPE);
+
+ SimpleDoc doc =
+ new SimpleDoc(new byte[100], DocFlavor.BYTE_ARRAY.GIF, set);
+
+ DocAttributeSet set1 = doc.getAttributes();
+ DocAttributeSet set2 = doc.getAttributes();
+
+ // everytime the same object needs to be returned.
+ harness.check(set1 == set2);
+
+ try
+ {
+ // it must be an unmodifiable view
+ set1.remove(Compression.class);
+ harness.check(false);
+ }
+ catch (UnmodifiableSetException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/print/SimpleDoc/getReaderForText.java b/gnu/testlet/javax/print/SimpleDoc/getReaderForText.java
new file mode 100644
index 00000000..9576d5e1
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/getReaderForText.java
@@ -0,0 +1,102 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.SimpleDoc;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.CharArrayReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
+import javax.print.DocFlavor;
+import javax.print.SimpleDoc;
+
+/**
+ * Checks getReaderForText
+ */
+public class getReaderForText implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleDoc doc = new SimpleDoc(
+ new String("Text to print"), DocFlavor.STRING.TEXT_PLAIN, null);
+
+ try
+ {
+ Reader reader1 = doc.getReaderForText();
+ Reader reader2 = doc.getReaderForText();
+ harness.check(reader1 == reader2);
+ harness.check(reader1 instanceof StringReader);
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+
+ SimpleDoc doc1 = new SimpleDoc(
+ new char[]{'A','b'}, DocFlavor.CHAR_ARRAY.TEXT_PLAIN, null);
+
+ try
+ {
+ Reader reader2 = doc1.getReaderForText();
+ Reader reader3 = doc1.getReaderForText();
+ harness.check(reader2 == reader3);
+ harness.check(reader2 instanceof CharArrayReader);
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+
+ SimpleDoc doc2 = new SimpleDoc(
+ new CharArrayReader(new char[]{'A','b'}), DocFlavor.READER.TEXT_PLAIN, null);
+
+ try
+ {
+ Reader reader4 = doc2.getReaderForText();
+ Reader reader5 = doc2.getReaderForText();
+ harness.check(reader4 == reader5);
+ harness.check(reader4 == doc2.getPrintData());
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+
+ SimpleDoc doc3 = new SimpleDoc(
+ new byte[]{'A','b'}, DocFlavor.BYTE_ARRAY.AUTOSENSE, null);
+
+ try
+ {
+ Reader reader6 = doc3.getReaderForText();
+ harness.check(reader6 == null);
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/print/SimpleDoc/getStreamForBytes.java b/gnu/testlet/javax/print/SimpleDoc/getStreamForBytes.java
new file mode 100644
index 00000000..e47439fd
--- /dev/null
+++ b/gnu/testlet/javax/print/SimpleDoc/getStreamForBytes.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+
+package gnu.testlet.javax.print.SimpleDoc;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.print.DocFlavor;
+import javax.print.SimpleDoc;
+
+/**
+ * Checks getStreamForBytes
+ */
+public class getStreamForBytes implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleDoc doc = new SimpleDoc(new byte[]{'2','3'},
+ DocFlavor.BYTE_ARRAY.GIF, null);
+
+ try
+ {
+ InputStream stream1 = doc.getStreamForBytes();
+ InputStream stream2 = doc.getStreamForBytes();
+ harness.check(stream1 == stream2);
+ harness.check(stream1 instanceof ByteArrayInputStream);
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+
+ SimpleDoc doc1 = new SimpleDoc(
+ new ByteArrayInputStream(new byte[] { 'A', 'b' }),
+ DocFlavor.INPUT_STREAM.GIF, null);
+
+ try
+ {
+ InputStream stream3 = doc1.getStreamForBytes();
+ InputStream stream4 = doc1.getStreamForBytes();
+ harness.check(stream3 == stream4);
+ harness.check(stream3 == doc1.getPrintData());
+ }
+ catch (IOException e)
+ {
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Entries b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Entries
new file mode 100644
index 00000000..0525ae56
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.1/Mon Nov 14 22:02:12 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Repository b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Repository
new file mode 100644
index 00000000..0f688ec3
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/AttributeSetUtilities
diff --git a/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Root b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/AttributeSetUtilities/simple.java b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/simple.java
new file mode 100644
index 00000000..d19e9477
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/AttributeSetUtilities/simple.java
@@ -0,0 +1,166 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.AttributeSetUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.print.attribute.Attribute;
+import javax.print.attribute.AttributeSet;
+import javax.print.attribute.AttributeSetUtilities;
+
+/**
+ * Simple test if correctly NPEs, ClassCastExceptions
+ * and IllegalArgumentExceptions are thrown.
+ */
+public class simple implements Testlet
+{
+
+ /**
+ * A simple attribute implementation.
+ */
+ class SimpleAttribute implements Attribute
+ {
+ private int value;
+
+ public SimpleAttribute(int value)
+ {
+ this.value = value;
+ }
+ public Class getCategory()
+ {
+ return this.getClass();
+ }
+ public String getName()
+ {
+ return "SimpleAttribute";
+ }
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof SimpleAttribute)
+ {
+ SimpleAttribute att = (SimpleAttribute) obj;
+ if (att.value == this.value)
+ return true;
+ }
+ return false;
+ }
+ public int hashCode()
+ {
+ return this.value;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // must throw NPE
+ harness.checkPoint("NPE tests");
+ try
+ {
+ AttributeSetUtilities.synchronizedView((AttributeSet) null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // must throw NPE
+ try
+ {
+ AttributeSetUtilities.unmodifiableView((AttributeSet) null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("casting tests");
+ try
+ {
+ AttributeSetUtilities.verifyAttributeCategory(SimpleAttribute.class,
+ Attribute.class);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+ try
+ {
+ AttributeSetUtilities.verifyAttributeCategory(String.class,
+ Attribute.class);
+ harness.check(false);
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ AttributeSetUtilities.verifyAttributeValue(new SimpleAttribute(1),
+ Attribute.class);
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+ try
+ {
+ AttributeSetUtilities.verifyAttributeValue(new String(),
+ Attribute.class);
+ harness.check(false);
+ }
+ catch (ClassCastException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ AttributeSetUtilities.verifyCategoryForValue(SimpleAttribute.class,
+ new SimpleAttribute(1));
+ harness.check(true);
+ }
+ catch (Exception e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ AttributeSetUtilities.verifyCategoryForValue(String.class,
+ new SimpleAttribute(1));
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/CVS/Entries b/gnu/testlet/javax/print/attribute/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/print/attribute/CVS/Entries.Log b/gnu/testlet/javax/print/attribute/CVS/Entries.Log
new file mode 100644
index 00000000..e4e233fd
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/CVS/Entries.Log
@@ -0,0 +1,8 @@
+A D/AttributeSetUtilities////
+A D/EnumSyntax////
+A D/HashAttributeSet////
+A D/ResolutionSyntax////
+A D/SetOfIntegerSyntax////
+A D/Size2DSyntax////
+A D/TextSyntax////
+A D/standard////
diff --git a/gnu/testlet/javax/print/attribute/CVS/Repository b/gnu/testlet/javax/print/attribute/CVS/Repository
new file mode 100644
index 00000000..f8f99bf8
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute
diff --git a/gnu/testlet/javax/print/attribute/CVS/Root b/gnu/testlet/javax/print/attribute/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Entries b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Entries
new file mode 100644
index 00000000..0e736514
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Entries
@@ -0,0 +1,5 @@
+/CorrectEnumSyntax.java/1.1/Sat Nov 12 21:59:44 2005//
+/WrongEnumSyntax.java/1.1/Sat Nov 12 21:59:44 2005//
+/equals.java/1.1/Sat Nov 12 21:59:44 2005//
+/serialize.java/1.1/Sat Nov 12 21:59:44 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Repository b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Repository
new file mode 100644
index 00000000..4d2bcf12
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/EnumSyntax
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Root b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/CorrectEnumSyntax.java b/gnu/testlet/javax/print/attribute/EnumSyntax/CorrectEnumSyntax.java
new file mode 100644
index 00000000..e3406aa9
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/CorrectEnumSyntax.java
@@ -0,0 +1,62 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.EnumSyntax;
+
+import javax.print.attribute.EnumSyntax;
+
+/**
+ * Helper class testing EnumSyntax implementation which
+ * is correctly subclassed according to specification.
+ */
+public class CorrectEnumSyntax extends EnumSyntax
+{
+ public static final CorrectEnumSyntax TEST1 = new CorrectEnumSyntax(3);
+ public static final CorrectEnumSyntax TEST2 = new CorrectEnumSyntax(4);
+ public static final CorrectEnumSyntax TEST3 = new CorrectEnumSyntax(5);
+
+ protected CorrectEnumSyntax(int value)
+ {
+ super(value);
+ }
+
+ protected int getOffset()
+ {
+ return 3;
+ }
+
+ private static final String[] stringTable = { "test1", "test2", "test3"};
+
+ protected String[] getStringTable()
+ {
+ return stringTable;
+ }
+
+ private static final CorrectEnumSyntax[] enumValueTable =
+ { TEST1, TEST2, TEST3};
+
+ protected EnumSyntax[] getEnumValueTable()
+ {
+ return enumValueTable;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/WrongEnumSyntax.java b/gnu/testlet/javax/print/attribute/EnumSyntax/WrongEnumSyntax.java
new file mode 100644
index 00000000..519c2536
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/WrongEnumSyntax.java
@@ -0,0 +1,39 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.EnumSyntax;
+
+import javax.print.attribute.EnumSyntax;
+
+/**
+ * Helper class testing EnumSyntax implementation.
+ */
+public class WrongEnumSyntax extends EnumSyntax
+{
+ public static final WrongEnumSyntax TEST = new WrongEnumSyntax(100);
+
+ protected WrongEnumSyntax(int value)
+ {
+ super(value);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/equals.java b/gnu/testlet/javax/print/attribute/EnumSyntax/equals.java
new file mode 100644
index 00000000..59a5f1b0
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/equals.java
@@ -0,0 +1,58 @@
+//Tags: JDK1.4
+//Uses: WrongEnumSyntax CorrectEnumSyntax
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.EnumSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests that two instances behave correctly for equal, hashcode,
+ * identity test and toString methods.
+ */
+public class equals implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // Also its not a correctly subclass of EnumSyntax
+ // it is used here to test some fallback mechanisms.
+ WrongEnumSyntax test = WrongEnumSyntax.TEST;
+ WrongEnumSyntax test2 = WrongEnumSyntax.TEST;
+
+ harness.check(test.hashCode() == 100, "hashcode()");
+ harness.check(test.equals(test2), "equals()");
+ harness.check(test == test2, "identity");
+ harness.check(test.toString(), "100", "toString");
+
+ CorrectEnumSyntax test3 = CorrectEnumSyntax.TEST3;
+ CorrectEnumSyntax test4 = CorrectEnumSyntax.TEST3;
+
+ harness.check(test3.hashCode() == 5, "hashcode()");
+ harness.check(test3.equals(test4), "equals()");
+ harness.check(test3 == test4, "identity");
+ harness.check(test3.toString(), "test3", "toString");
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/EnumSyntax/serialize.java b/gnu/testlet/javax/print/attribute/EnumSyntax/serialize.java
new file mode 100644
index 00000000..f4face82
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/EnumSyntax/serialize.java
@@ -0,0 +1,104 @@
+//Tags: JDK1.4
+//Uses: WrongEnumSyntax CorrectEnumSyntax
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.EnumSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+/**
+ * Tests serialization with EnumSyntax subclasses correctly
+ * subclassed and one which is used to show correct exeption
+ * handling of failures in readResolve user code.
+ */
+public class serialize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testSerializeErrors(harness);
+ testSerializeNoErrors(harness);
+ }
+
+ /** Tests for exceptions in readResolve are thrown */
+ private void testSerializeErrors(TestHarness harness)
+ {
+ WrongEnumSyntax test = WrongEnumSyntax.TEST;
+ try
+ {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(test);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ in.readObject();
+ in.close();
+
+ harness.check(false, "serialize error");
+ }
+ catch (Exception e)
+ {
+ harness.check(true, "serialize error");
+ }
+ }
+
+ /** Tests correct serialization */
+ private void testSerializeNoErrors(TestHarness harness)
+ {
+ CorrectEnumSyntax inObj = CorrectEnumSyntax.TEST2;
+ CorrectEnumSyntax outObj = null;
+ try
+ {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(inObj);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ outObj = (CorrectEnumSyntax) in.readObject();
+ in.close();
+
+ harness.check(true, "serialize no error");
+
+ // test for identical object
+ harness.check(inObj == outObj, "identity test");
+ harness.check(inObj.equals(outObj), "equality test");
+ harness.check(inObj.hashCode() == outObj.hashCode(), "hashcode test");
+ }
+ catch (Exception e)
+ {
+ harness.check(false, "serialize no error");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/AnotherSimpleAttribute.java b/gnu/testlet/javax/print/attribute/HashAttributeSet/AnotherSimpleAttribute.java
new file mode 100644
index 00000000..50efba91
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/AnotherSimpleAttribute.java
@@ -0,0 +1,64 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.HashAttributeSet;
+
+import javax.print.attribute.Attribute;
+
+/**
+ * Another simple attribute implementation.
+ */
+public class AnotherSimpleAttribute implements Attribute
+{
+ private int value;
+
+ public AnotherSimpleAttribute(int value) {
+ this.value = value;
+ }
+
+ public Class getCategory()
+ {
+ return this.getClass();
+ }
+
+ public String getName()
+ {
+ return "AnotherSimpleAttribute";
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof AnotherSimpleAttribute)
+ {
+ AnotherSimpleAttribute att = (AnotherSimpleAttribute) obj;
+ if (att.value == this.value)
+ return true;
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return this.value;
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Entries b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Entries
new file mode 100644
index 00000000..fda8dac3
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Entries
@@ -0,0 +1,6 @@
+/AnotherSimpleAttribute.java/1.1/Sun Nov 13 19:15:34 2005//
+/SimpleAttribute.java/1.1/Sun Nov 13 19:15:34 2005//
+/emptySet.java/1.1/Sun Nov 13 19:15:34 2005//
+/nullTests.java/1.1/Sun Nov 13 19:15:34 2005//
+/populatedSet.java/1.1/Sun Nov 13 19:15:34 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Repository b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Repository
new file mode 100644
index 00000000..45ead492
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/HashAttributeSet
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Root b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/SimpleAttribute.java b/gnu/testlet/javax/print/attribute/HashAttributeSet/SimpleAttribute.java
new file mode 100644
index 00000000..f2e96fca
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/SimpleAttribute.java
@@ -0,0 +1,64 @@
+//Tags: not-a-test
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.HashAttributeSet;
+
+import javax.print.attribute.Attribute;
+
+/**
+ * A simple attribute implementation.
+ */
+public class SimpleAttribute implements Attribute
+{
+ private int value;
+
+ public SimpleAttribute(int value) {
+ this.value = value;
+ }
+
+ public Class getCategory()
+ {
+ return this.getClass();
+ }
+
+ public String getName()
+ {
+ return "SimpleAttribute";
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof SimpleAttribute)
+ {
+ SimpleAttribute att = (SimpleAttribute) obj;
+ if (att.value == this.value)
+ return true;
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return this.value;
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/emptySet.java b/gnu/testlet/javax/print/attribute/HashAttributeSet/emptySet.java
new file mode 100644
index 00000000..5cb8f660
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/emptySet.java
@@ -0,0 +1,52 @@
+//Tags: JDK1.4
+//Uses: SimpleAttribute
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.HashAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.print.attribute.HashAttributeSet;
+
+/**
+ * Test methods behaviour for an empty set.
+ */
+public class emptySet implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ HashAttributeSet testSet = new HashAttributeSet();
+ HashAttributeSet testSet2 = new HashAttributeSet();
+
+ harness.check(testSet.equals(testSet2), true, "equals");
+ harness.check(testSet.hashCode(), 0, "hashcode");
+ harness.check(testSet.toArray().length, 0, "toArray");
+
+ harness.check(testSet.isEmpty(), true, "isEmpty 1");
+ testSet.add(new SimpleAttribute(1));
+ testSet.remove(new SimpleAttribute(1).getCategory());
+ harness.check(testSet.isEmpty(), true, "isEmpty 2");
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/nullTests.java b/gnu/testlet/javax/print/attribute/HashAttributeSet/nullTests.java
new file mode 100644
index 00000000..c1381d23
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/nullTests.java
@@ -0,0 +1,121 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.HashAttributeSet;
+
+import javax.print.attribute.Attribute;
+import javax.print.attribute.AttributeSet;
+import javax.print.attribute.HashAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests behaviour for various methods if parameters are null.
+ */
+public class nullTests implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("constructor tests");
+ try
+ {
+ new HashAttributeSet((Attribute) null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new HashAttributeSet((AttributeSet) null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ new HashAttributeSet((Attribute[]) null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ new HashAttributeSet(new Attribute[] { null });
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ harness.checkPoint("method tests");
+ HashAttributeSet testSet = new HashAttributeSet();
+
+ try
+ {
+ testSet.get(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ testSet.add(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ testSet.addAll(null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ harness.check(testSet.remove((Attribute) null), false);
+ harness.check(testSet.remove((Class) null), false);
+ harness.check(testSet.containsKey(null), false);
+ harness.check(testSet.containsValue(null), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/HashAttributeSet/populatedSet.java b/gnu/testlet/javax/print/attribute/HashAttributeSet/populatedSet.java
new file mode 100644
index 00000000..51e2287e
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/HashAttributeSet/populatedSet.java
@@ -0,0 +1,93 @@
+//Tags: JDK1.4
+//Uses: SimpleAttribute AnotherSimpleAttribute
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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.javax.print.attribute.HashAttributeSet;
+
+import javax.print.attribute.HashAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests various methods for populated sets.
+ */
+public class populatedSet implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+
+ SimpleAttribute att1 = new SimpleAttribute(1);
+
+ HashAttributeSet testSet = new HashAttributeSet( att1 );
+
+ // test basic functionality
+ harness.check(testSet.containsValue(att1), true, "containsValue");
+ harness.check(testSet.containsKey(att1.getCategory()),
+ true, "containsKey");
+ harness.check(testSet.remove(att1), true, "remove");
+ harness.check(testSet.isEmpty(), true, "isEmpty");
+ harness.check(testSet.add(att1), true, "add");
+ harness.check(testSet.add(att1), false, "re-add");
+
+ // test category replacement
+ SimpleAttribute att2 = new SimpleAttribute(3);
+ SimpleAttribute[] array =
+ new SimpleAttribute[] { new SimpleAttribute(2), att2 };
+ testSet = new HashAttributeSet( array );
+
+ harness.check(testSet.size(), 1, "size");
+ harness.check(testSet.hashCode(), 3, "hashcode");
+ harness.check(testSet.containsValue(att2), true, "containsValue");
+
+ AnotherSimpleAttribute att3 = new AnotherSimpleAttribute(4);
+
+ harness.check(testSet.add(att3), true, "add");
+ harness.check(testSet.size(), 2, "size");
+ harness.check(testSet.hashCode(), 7, "hashcode");
+
+ // build equal set for euqals test
+ HashAttributeSet testSet2 = new HashAttributeSet();
+ testSet2.add(att2);
+ testSet2.add(att3);
+
+ harness.check(testSet.equals(testSet2), true, "equals");
+ harness.check(testSet2.addAll(testSet), false, "addAll");
+ testSet2.clear();
+ harness.check(testSet2.isEmpty(), true, "isEmpty");
+
+ // test hashcode
+ testSet = new HashAttributeSet();
+ testSet.add( new SimpleAttribute(1));
+ testSet.add( new AnotherSimpleAttribute(2));
+
+ testSet2 = new HashAttributeSet();
+ testSet2.add( new SimpleAttribute(2));
+ testSet2.add( new AnotherSimpleAttribute(1));
+
+ harness.check(testSet.hashCode() == testSet2.hashCode(), "equal hashcode");
+ harness.check(testSet.equals(testSet2), false, "no equality");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Entries b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Entries
new file mode 100644
index 00000000..167b94b8
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.2/Sat Nov 19 15:41:30 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Repository b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Repository
new file mode 100644
index 00000000..a882d8e2
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/ResolutionSyntax
diff --git a/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Root b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/ResolutionSyntax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java b/gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java
new file mode 100644
index 00000000..7bac1b37
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/ResolutionSyntax/simple.java
@@ -0,0 +1,83 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.print.attribute.ResolutionSyntax;
+
+import javax.print.attribute.ResolutionSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the correct conversions of the resolutions
+ * between different units, lessThanOrEqual and
+ * equals methods.
+ */
+public class simple implements Testlet
+{
+ // Helper class to make abstract class usable.
+ public class TestResolutionSyntax extends ResolutionSyntax
+ {
+ public TestResolutionSyntax(int crossFeedResolution,
+ int feedResolution, int units)
+ {
+ super(crossFeedResolution, feedResolution, units);
+ }
+
+ }
+ public void test(TestHarness harness)
+ {
+ TestResolutionSyntax test =
+ new TestResolutionSyntax(400, 600, ResolutionSyntax.DPI);
+
+ harness.checkPoint("toString");
+ harness.check(test.toString(), "40000x60000 dphi");
+ harness.check(test.toString(ResolutionSyntax.DPI, "dpi"), "400x600 dpi");
+ harness.check(test.toString(ResolutionSyntax.DPCM, "dpcm"),
+ "157x236 dpcm");
+ harness.check(test.toString(ResolutionSyntax.DPCM, null), "157x236");
+
+ harness.checkPoint("getFeedResolution");
+ harness.check(test.getFeedResolution(ResolutionSyntax.DPCM), 236);
+ harness.check(test.getFeedResolution(ResolutionSyntax.DPI), 600);
+
+ TestResolutionSyntax test2 =
+ new TestResolutionSyntax(400, 600, ResolutionSyntax.DPI);
+ TestResolutionSyntax test3 =
+ new TestResolutionSyntax(401, 610, ResolutionSyntax.DPI);
+ TestResolutionSyntax test4 =
+ new TestResolutionSyntax(389, 589, ResolutionSyntax.DPI);
+
+ harness.checkPoint("lessThanOrEqual");
+ harness.check(test.lessThanOrEquals(test2), true);
+ harness.check(test.lessThanOrEquals(test3), true);
+ harness.check(test.lessThanOrEquals(test4), false);
+
+ TestResolutionSyntax test5 = new TestResolutionSyntax(40000, 60000, 1);
+
+ harness.checkPoint("equals");
+ harness.check(test.equals(test2), true);
+ harness.check(test.equals(test5), true);
+ harness.check(test3.equals(test5), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Entries b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Entries
new file mode 100644
index 00000000..e32b5713
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Entries
@@ -0,0 +1,2 @@
+/Simple.java/1.3/Sat Nov 19 10:26:05 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Repository b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Repository
new file mode 100644
index 00000000..794278b4
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax
diff --git a/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Root b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java
new file mode 100644
index 00000000..9114b514
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/SetOfIntegerSyntax/Simple.java
@@ -0,0 +1,194 @@
+/* Simple.java -- Simple SetOfIntegerSyntax tests
+ Copyright (C) 2005 Red Hat, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+
+package gnu.testlet.javax.print.attribute.SetOfIntegerSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.print.attribute.SetOfIntegerSyntax;
+
+public class Simple extends SetOfIntegerSyntax implements Testlet
+{
+
+ // Constructor for the test harness.
+ public Simple()
+ {
+ super(3);
+ }
+
+ public Simple(int lowerBound, int upperBound)
+ {
+ super(lowerBound, upperBound);
+ }
+
+ public Simple(int member)
+ {
+ super(member);
+ }
+
+ public Simple(int[][] members)
+ {
+ super(members);
+ }
+
+ public Simple(String s)
+ {
+ super(s);
+ }
+
+ public void test(TestHarness harness)
+ {
+ SetOfIntegerSyntax single = new Simple(5);
+ SetOfIntegerSyntax range = new Simple(new int[][] { { 1, 5 } });
+ SetOfIntegerSyntax rangeTwo = new Simple(
+ new int[][] { { 1, 5 }, { 10, 12 } });
+
+ harness.checkPoint("single-value equals");
+ harness.check(new Simple(5), single);
+ harness.check(new Simple(new int[][] { { 5 } }), single);
+ harness.check(new Simple(new int[][] { { 1, 0 }, { 5, 5 } }), single);
+ harness.check(new Simple("5"), single);
+ harness.check(new Simple("1-0,5"), single);
+ harness.check(new Simple("5,1:0,5"), single);
+
+ harness.checkPoint("single-range equals");
+ harness.check(new Simple(new int[][] { { 1, 5 } }), range);
+ harness.check(new Simple("1-5"), range);
+ harness.check(new Simple("1:5,5-1"), range);
+ harness.check(new Simple("1-3,1-5"), range);
+ harness.check(new Simple("1-5,1-3"), range);
+ harness.check(new Simple("1-3,2-5"), range);
+ harness.check(new Simple("1-3,4-5"), range);
+ harness.check(new Simple("4-5,1-3"), range);
+ harness.check(new Simple(1, 5), range);
+
+ harness.checkPoint("two-range equals");
+ harness.check(new Simple(new int[][] { { 10, 12 }, { 1, 5 } }), rangeTwo);
+ harness.check(new Simple("1-3,2-5,10,11:12"), rangeTwo);
+
+ harness.checkPoint("next");
+ harness.check(single.next(0), 5);
+ harness.check(single.next(5), -1);
+ harness.check(single.next(38), -1);
+ harness.check(range.next(0), 1);
+ harness.check(range.next(1), 2);
+ harness.check(range.next(4), 5);
+ harness.check(range.next(5), -1);
+ harness.check(rangeTwo.next(5), 10);
+
+ harness.checkPoint("hashCode");
+ harness.check(single.hashCode(), 10);
+ harness.check(range.hashCode(), 6);
+
+ harness.checkPoint("toString");
+ harness.check(single.toString(), "5");
+ harness.check(range.toString(), "1-5");
+ harness.check(rangeTwo.toString(), "1-5,10-12");
+
+ harness.checkPoint("contains");
+ harness.check(single.contains(5));
+ harness.check(range.contains(2));
+ harness.check(rangeTwo.contains(12));
+ harness.check(single.contains(6), false);
+ harness.check(range.contains(6), false);
+ harness.check(rangeTwo.contains(8), false);
+
+ harness.checkPoint("constructors");
+ try
+ {
+ new Simple((String) null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ new Simple((int[][]) null);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ try
+ {
+ new Simple(new int[][] { { 1, 5 }, null });
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new Simple(new int[][] { null });
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new Simple(new int[][] { { 1, 2, 3 } });
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new Simple(new int[][] { { -1, 2 } });
+ harness.check(false);
+ }
+ catch (IllegalArgumentException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ new Simple(14, 12);
+ harness.check(true);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(false);
+ }
+
+ harness.checkPoint("normalization");
+ harness.check(new Simple("17- 99,1:3,12").toString(), "1-3,12,17-99");
+ harness.check(new Simple("17- 99,19-20,14-18").toString(), "14-99");
+
+ }
+}
diff --git a/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Entries b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Entries
new file mode 100644
index 00000000..0966824f
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Entries
@@ -0,0 +1,2 @@
+/simple.java/1.1/Sat Nov 19 15:47:58 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Repository b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Repository
new file mode 100644
index 00000000..9737a070
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/Size2DSyntax
diff --git a/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Root b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/Size2DSyntax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/Size2DSyntax/simple.java b/gnu/testlet/javax/print/attribute/Size2DSyntax/simple.java
new file mode 100644
index 00000000..b1a12d66
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/Size2DSyntax/simple.java
@@ -0,0 +1,79 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.attribute.Size2DSyntax;
+
+import javax.print.attribute.Size2DSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests all the correct unit conversions through
+ * the toString methods.
+ */
+public class simple implements Testlet
+{
+ // Test class making abstract class to test usable.
+ public class TestSize2DSyntax extends Size2DSyntax
+ {
+ public TestSize2DSyntax(float x, float y, int units)
+ {
+ super(x, y, units);
+ }
+
+ public TestSize2DSyntax(int x, int y, int units)
+ {
+ super(x, y, units);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TestSize2DSyntax floatInch =
+ new TestSize2DSyntax(55.6f, 232.1f, Size2DSyntax.INCH);
+ TestSize2DSyntax intInch = new TestSize2DSyntax(8, 12, Size2DSyntax.INCH);
+ TestSize2DSyntax floatMM =
+ new TestSize2DSyntax(55.6f, 232.1f, Size2DSyntax.MM);
+ TestSize2DSyntax intMM = new TestSize2DSyntax(210, 297, Size2DSyntax.MM);
+
+ harness.checkPoint("units conversions/toString");
+ harness.check(floatInch.toString(), "1412240x5895340 um");
+ harness.check(intInch.toString(), "203200x304800 um");
+ harness.check(floatMM.toString(), "55600x232100 um");
+ harness.check(intMM.toString(), "210000x297000 um");
+
+ harness.check(floatInch.toString(Size2DSyntax.INCH, null), "55.6x232.1");
+ harness.check(intInch.toString(Size2DSyntax.INCH, null), "8.0x12.0");
+ harness.check(floatMM.toString(Size2DSyntax.INCH, null),
+ "2.1889763x9.137795");
+ harness.check(intMM.toString(Size2DSyntax.INCH, null),
+ "8.267716x11.692913");
+
+ harness.check(floatInch.toString(Size2DSyntax.MM, "mm"),
+ "1412.24x5895.34 mm");
+ harness.check(intInch.toString(Size2DSyntax.MM, "mm"), "203.2x304.8 mm");
+ harness.check(floatMM.toString(Size2DSyntax.MM, "mm"), "55.6x232.1 mm");
+ harness.check(intMM.toString(Size2DSyntax.MM, "mm"), "210.0x297.0 mm");
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Entries b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Entries
new file mode 100644
index 00000000..c0bd6813
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Entries
@@ -0,0 +1,2 @@
+/constructors.java/1.1/Sat Nov 19 12:41:27 2005//
+D
diff --git a/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Repository b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Repository
new file mode 100644
index 00000000..413393e7
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/TextSyntax
diff --git a/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Root b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/TextSyntax/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/TextSyntax/constructors.java b/gnu/testlet/javax/print/attribute/TextSyntax/constructors.java
new file mode 100644
index 00000000..9a4f0a4a
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/TextSyntax/constructors.java
@@ -0,0 +1,65 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2005 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.attribute.TextSyntax;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.print.attribute.TextSyntax;
+
+/**
+ * Tests the constructors of TextSyntax.
+ */
+public class constructors implements Testlet
+{
+ // Helper class to make abstract class usable.
+ public class TestTextSyntax extends TextSyntax
+ {
+ public TestTextSyntax(String v, Locale l) {
+ super(v,l);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("constructors");
+
+ // null text value should trigger NPE
+ try
+ {
+ new TestTextSyntax(null, Locale.GERMANY);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ // null locale should use the default locale
+ TestTextSyntax defaultLocale = new TestTextSyntax("Text", null);
+ harness.check(defaultLocale.getLocale().equals(Locale.getDefault()));
+ }
+
+}
diff --git a/gnu/testlet/javax/print/attribute/standard/CVS/Entries b/gnu/testlet/javax/print/attribute/standard/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/print/attribute/standard/CVS/Entries.Log b/gnu/testlet/javax/print/attribute/standard/CVS/Entries.Log
new file mode 100644
index 00000000..eeb76566
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/MediaSize////
diff --git a/gnu/testlet/javax/print/attribute/standard/CVS/Repository b/gnu/testlet/javax/print/attribute/standard/CVS/Repository
new file mode 100644
index 00000000..e1f82d0f
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/standard
diff --git a/gnu/testlet/javax/print/attribute/standard/CVS/Root b/gnu/testlet/javax/print/attribute/standard/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Entries b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Entries
new file mode 100644
index 00000000..ad4135df
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Entries
@@ -0,0 +1,2 @@
+/userClass.java/1.1/Fri Jan 13 22:36:04 2006//
+D
diff --git a/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Repository b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Repository
new file mode 100644
index 00000000..5d02c792
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/print/attribute/standard/MediaSize
diff --git a/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Root b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/MediaSize/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/print/attribute/standard/MediaSize/userClass.java b/gnu/testlet/javax/print/attribute/standard/MediaSize/userClass.java
new file mode 100644
index 00000000..a71caf4c
--- /dev/null
+++ b/gnu/testlet/javax/print/attribute/standard/MediaSize/userClass.java
@@ -0,0 +1,66 @@
+//Tags: JDK1.4
+
+//Copyright (C) 2006 Free Software Foundation, Inc.
+//Written by Wolfgang Baer (WBaer@gmx.de)
+
+//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, 51 Franklin Street, Fifth Floor,
+//Boston, MA, 02110-1301 USA.
+
+package gnu.testlet.javax.print.attribute.standard.MediaSize;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.print.attribute.Size2DSyntax;
+import javax.print.attribute.standard.MediaSize;
+import javax.print.attribute.standard.MediaSizeName;
+
+/**
+ * Test that user constructed MediaSize subclass objects
+ * are added to the media cache used by static findMedia
+ * and getMediaSizeForName methods.
+ */
+public class userClass implements Testlet
+{
+ /** MediaSize subclass for test */
+ public class MyMediaSize extends MediaSize
+ {
+ public MyMediaSize(float x, float y, int units)
+ {
+ super(x, y, units);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // One with name is found as "best" match
+ MediaSizeName name =
+ MediaSize.findMedia(111f, 222f, Size2DSyntax.INCH);
+ harness.check(name == MediaSizeName.JIS_B0);
+
+ // Register a user MediaSize object
+ MyMediaSize myMediaSize =
+ new MyMediaSize(111f, 222f, Size2DSyntax.INCH);
+
+ // Now if it is added to the cache it must be found by
+ // findMedia as it is the exact match
+ MediaSizeName name2 =
+ MediaSize.findMedia(111f, 222f, Size2DSyntax.INCH);
+ harness.check(name2 == null);
+ }
+
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/CVS/Entries b/gnu/testlet/javax/rmi/CORBA/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/rmi/CORBA/CVS/Entries.Log b/gnu/testlet/javax/rmi/CORBA/CVS/Entries.Log
new file mode 100644
index 00000000..3d6c83fd
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Tie////
diff --git a/gnu/testlet/javax/rmi/CORBA/CVS/Repository b/gnu/testlet/javax/rmi/CORBA/CVS/Repository
new file mode 100644
index 00000000..cb5c0519
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/rmi/CORBA
diff --git a/gnu/testlet/javax/rmi/CORBA/CVS/Root b/gnu/testlet/javax/rmi/CORBA/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Entries b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Entries
new file mode 100644
index 00000000..79295d4d
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Entries
@@ -0,0 +1,9 @@
+/Externa.java/1.1/Thu Oct 6 09:30:56 2005//
+/NodeObject.java/1.1/Thu Oct 6 09:30:56 2005//
+/RMI_IIOP.java/1.3/Wed Jun 25 08:07:52 2008//
+/RMI_test.java/1.2/Mon Jun 26 14:18:50 2006//
+/RMI_testImpl.java/1.1/Thu Oct 6 09:30:56 2005//
+/_RMI_testImpl_Tie.java/1.1/Thu Oct 6 09:30:56 2005//
+/_RMI_test_Stub.java/1.1/Thu Oct 6 09:30:56 2005//
+/myStructure.java/1.1/Thu Oct 6 09:30:56 2005//
+D
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Repository b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Repository
new file mode 100644
index 00000000..0928bc9f
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/rmi/CORBA/Tie
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Root b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/Externa.java b/gnu/testlet/javax/rmi/CORBA/Tie/Externa.java
new file mode 100644
index 00000000..7d100561
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/Externa.java
@@ -0,0 +1,68 @@
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP. It is an Externalizable
+ * being passed via RMI-IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class Externa
+ implements Externalizable
+{
+ /**
+ * Use serialVersionUID for interoperability.
+ */
+ private static final long serialVersionUID = 1;
+
+ public int a;
+
+ public int b;
+
+ String sx;
+
+ public String toString()
+ {
+ return sx;
+ }
+
+ public void readExternal(ObjectInput in)
+ throws IOException, ClassNotFoundException
+ {
+ a = in.readInt();
+ b = in.readInt();
+ sx = "(ex " + a + ":" + b + ")";
+ }
+
+ public void writeExternal(ObjectOutput out)
+ throws IOException
+ {
+ out.writeInt(a);
+ out.writeInt(b);
+ }
+
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/NodeObject.java b/gnu/testlet/javax/rmi/CORBA/Tie/NodeObject.java
new file mode 100644
index 00000000..7a5aca9d
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/NodeObject.java
@@ -0,0 +1,171 @@
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import java.io.Serializable;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP. It is a
+ * node of the graph that must be flattened and passed via RMI-IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class NodeObject
+ implements Serializable
+{
+ /**
+ * The label facilitates orientation.
+ */
+ public String label;
+
+ /**
+ * The pointer for forming the network.
+ */
+ public NodeObject a;
+
+ /**
+ * Another pointer to form a trees.
+ */
+ public NodeObject b;
+
+ /**
+ * Another RMI_test.
+ */
+ RMI_test z_anotherTest;
+
+ /**
+ * An array of "another RMI tests".
+ */
+ RMI_test[] anotherTestArray;
+
+ RMI_test[][][] ku;
+
+ /**
+ * Some transient field.
+ */
+ transient Object transientField;
+
+ /**
+ * Some static field.
+ */
+ static Object staticField;
+
+ /**
+ * Use serialVersionUID for interoperability.
+ */
+ private static final long serialVersionUID = 0x7;
+
+ public NodeObject(String a_label)
+ {
+ label = a_label;
+ }
+
+ public NodeObject()
+ {
+ this("<no label>");
+ }
+
+ public String toString(int chain)
+ {
+ if (chain > 7)
+ return "...";
+ StringBuffer sb = new StringBuffer();
+
+ sb.append(label);
+
+ if (b != null)
+ sb.append("(" + b + ")");
+
+ sb.append(":");
+ if (a != null)
+ sb.append(a.toString(chain + 1));
+ else
+ sb.append("null");
+
+ return sb.toString();
+ }
+
+ public String toString()
+ {
+ return toString(0);
+ }
+
+ public static NodeObject create1()
+ {
+ NodeObject a = new NodeObject("a");
+ NodeObject b = new NodeObject("b");
+ NodeObject c = new NodeObject("c");
+
+ NodeObject d = new NodeObject("d");
+ NodeObject e = new NodeObject("e");
+ NodeObject f = new NodeObject("f");
+
+ // Lock f on self.
+ f.a = f;
+
+ // Form a digraph.
+ d.a = e;
+ e.a = d;
+
+ e.b = f;
+
+ // Form a triangle.
+ a.a = b;
+ b.a = c;
+ c.a = a;
+
+ // Add D to a and c.
+ a.b = d;
+ c.b = d;
+
+ return a;
+ }
+
+ /**
+ * Create a closed ring.
+ */
+ public static NodeObject create2()
+ {
+ NodeObject a = new NodeObject("a");
+ NodeObject b = new NodeObject("b");
+ NodeObject c = new NodeObject("c");
+
+ NodeObject d = new NodeObject("d");
+ NodeObject e = new NodeObject("e");
+ NodeObject f = new NodeObject("f");
+
+ a.a = b;
+ b.a = c;
+ c.a = d;
+ d.a = e;
+ e.a = f;
+ f.a = a;
+
+ return a;
+ }
+
+ public static void main(String[] args)
+ {
+ System.out.println(create1());
+ System.out.println(create2());
+ }
+
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java
new file mode 100644
index 00000000..27a1ae40
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_IIOP.java
@@ -0,0 +1,285 @@
+// Tags: JDK1.4
+// Uses: RMI_test RMI_testImpl ../../../../org/omg/CORBA_2_3/ORB/Valtype/Info ../../../../org/omg/CORBA_2_3/ORB/Valtype/InfoImpl ../../../../org/omg/CORBA_2_3/ORB/Valtype/cmInfo ../../../../org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl ../../../../org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.Info;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.InfoImpl;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.cmInfoImpl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.rmi.PortableRemoteObject;
+import javax.rmi.CORBA.Tie;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.ORB;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAHelper;
+import org.omg.PortableServer.Servant;
+
+/**
+ * The RMI over IIOP test. While formally possible since jdk 1.4 (all classes
+ * declared), the Sun's jdk 1.4.2 seems not complete enough. The test passes
+ * Sun's releases since 1.5.0_04-b05.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class RMI_IIOP
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ORB client_orb = null;
+ // Set the loader of this class as a context class loader, ensuring that the
+ // CORBA implementation will be able to locate the RMI stubs and ties.
+ ClassLoader previous = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ try
+ {
+ client_orb = ORB.init(new String[0], null);
+
+ String ior = startServer(harness);
+
+ org.omg.CORBA.Object object = client_orb.string_to_object(ior);
+
+ RMI_test r = (RMI_test) PortableRemoteObject.narrow(object,
+ RMI_test.class);
+
+ harness.check("null", r.sayHello(null), "First call");
+
+ harness.check(r.multiply((byte) 4, 6), 24, "Multiplying 4*6=");
+
+ harness.check("'String one' and 'String two'", r.joinStrings(
+ "String one", "String two"), "Joining strings");
+
+ harness.check("'null' and 'null'", r.joinStrings(null, null),
+ "Passing null");
+
+ harness.check(
+
+ "byte 1, double 2.34, int 5, string six, float 7.89, char A(41), short 11",
+ r.passPrimitives((byte) 1, 2.34, 5, "six", (float) 7.89, 'A',
+ (short) 11), "Passing primitives");
+
+ harness.check(25, r.passArray(new int[] { 1, 2, 4, 8, 10 }),
+ "Passing primitive array");
+
+ String[] arr = new String[] { "a", "b", null, "abc" };
+ harness.check("a.b.null.abc.", r.passStringArray(arr),
+ "Passing String array");
+
+ harness.check("1 2 three", r.passStructure(new myStructure()),
+ "Passing structure");
+
+ cmInfoImpl c1 = new cmInfoImpl();
+ c1.message = "msg";
+ c1.name = "nm";
+
+ harness.check(r.passCorbaCMValueType(c1), "nm;msg", "CustomMarshal");
+
+ InfoImpl c2 = new InfoImpl();
+ c2._message = "_msg";
+ c2._name = "_nm";
+
+ harness.check(r.passCorbaValueType(c2), "_nm--_msg", "Streamable");
+
+ myStructure[] a = new myStructure[4];
+
+ // First element will be null.
+ for (int i = 1; i < a.length; i++)
+ {
+ a[i] = new myStructure();
+ a[i].a = 100 * i;
+ a[i].c = "c" + i;
+ }
+ harness.check("null:100 2 c1:200 2 c2:300 2 c3:",
+ r.passStructureArray(a), "Structure array");
+
+ Info i1 = new InfoImpl();
+ i1._message = "m1";
+ i1._name = "n1";
+ Info i2 = new InfoImpl();
+ i2._message = "m2";
+ i2._name = "n2";
+
+ harness.check("n1--m1:null:n2--m2:",
+ r.passCorbaValueTypeArray(new Info[] { i1, null, i2 }),
+ "Value type array");
+
+ harness.check("null passed", r.passCorbaObject(null),
+ "null as CORBA object");
+
+ String s = r.exchangeNodeObject(NodeObject.create1()).toString();
+ harness.check(s, NodeObject.create2().toString(), "Graph");
+
+ // Instantiate another RMI_test here.
+ POA rootPOA = POAHelper.narrow(client_orb.resolve_initial_references("RootPOA"));
+
+ rootPOA.the_POAManager().activate();
+
+ RMI_testImpl impl = new RMI_testImpl();
+ impl.ego = "Local client object";
+
+ NodeObject n = new NodeObject("x");
+
+ Tie tie = Util.getTie(impl);
+
+ org.omg.CORBA.Object l_object = rootPOA.servant_to_reference((Servant) tie);
+
+ RMI_test l_r = (RMI_test) PortableRemoteObject.narrow(l_object,
+ RMI_test.class);
+
+ n.z_anotherTest = l_r;
+
+ harness.check("Local client object", l_r.getEgo(), "Local client");
+
+ // The server should returns its own object in return:
+ RMI_test rt = r.exchangeNodeObject(n).z_anotherTest;
+ harness.check("Server side object", rt.getEgo(), "Server side object");
+
+ // The server should echo the name of the passed object:
+ harness.check("Local client object", r.sayHello(l_r), "Local client");
+
+ RMI_testImpl impl2 = new RMI_testImpl();
+ impl2.ego = "Client implementation instance";
+
+ harness.check("Client implementation instance", r.sayHello(impl2),
+ "Client implementation");
+
+ n.anotherTestArray = new RMI_test[] { impl, null, impl2, rt };
+ n.z_anotherTest = null;
+
+ // Verifying array of remotes that is a field in the structure being
+ // passed.
+ String rts = r.exchangeNodeObject(n).label;
+ harness.check(
+ "Local client object.null.Client implementation instance.Server side object.",
+ rts, "Passed array of 4 Remotes in a structure field.");
+
+ harness.check("ab (Server side object:Local client object)",
+ r.passReturnRemote(l_r).getEgo(), "Pass/return remote, stub");
+
+ harness.check("ab (Server side object:Client implementation instance)",
+ r.passReturnRemote(impl2).getEgo(),
+ "Pass/return remote, implementation");
+
+ harness.check(r.passReturnRemote(null) == null, "pass/get null");
+
+ // If the verification of the server side succeeds, the "ok" is
+ // returned. Otherwise, the mismatching entry is returned.
+ harness.check("ok", r.passArrayOfRemotes(new RMI_test[] { impl, impl2,
+ null, l_r, rt }), "Pass Remote[]");
+
+ Collection ar = new ArrayList();
+
+ ar.add("one");
+ ar.add("two");
+ ar.add("three");
+
+ Externa e = new Externa();
+ e.a = 17;
+ e.b = 64;
+ ar.add(e);
+
+ ar.add(null);
+ // Make a graph.
+ ar.add(e);
+ ar.add(e);
+
+ Externa b = new Externa();
+ b.a = 55;
+ b.b = 56;
+ ar.add(b);
+ ar.add(e);
+ ar.add("last");
+
+ harness.check(
+ "java.util.ArrayList:one.two.three.(ex 17:64).null.(ex 17:64).(ex 17:64).(ex 55:56).(ex 17:64).last.",
+ r.passCollection(ar), "Pass ArrayList");
+
+ }
+ catch (Exception e)
+ {
+ harness.fail("Exception: "
+ + e
+ + ". If this is Sun's jre, note theat at least jdk 1.5.0_04-b05 required.");
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(previous);
+ try
+ {
+ if (server_orb != null)
+ server_orb.destroy();
+ if (client_orb != null)
+ client_orb.destroy();
+ }
+ catch (Throwable t)
+ {
+ // Failed to destroy.
+ harness.fail("Unable to destroy the ORBs: "+t);
+ }
+ }
+ }
+
+ ORB server_orb;
+
+ public String startServer(TestHarness harness)
+ {
+ try
+ {
+ server_orb = ORB.init(new String[0], null);
+
+ new Thread()
+ {
+ public void run()
+ {
+ server_orb.run();
+ }
+ }.start();
+
+ // Wait for 500 ms for the sever to start.
+ Thread.sleep(500);
+
+ POA rootPOA = POAHelper.narrow(server_orb.resolve_initial_references("RootPOA"));
+
+ rootPOA.the_POAManager().activate();
+
+ RMI_testImpl impl = new RMI_testImpl();
+ impl.ego = "Server side object";
+ Tie tie = Util.getTie(impl);
+
+ org.omg.CORBA.Object object = rootPOA.servant_to_reference((Servant) tie);
+
+ String ior = server_orb.object_to_string(object);
+
+ return ior;
+ }
+ catch (Exception e)
+ {
+ harness.fail("Unable to initalise ORB: " + e);
+ return null; // Unreachable.
+ }
+ }
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/RMI_test.java b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_test.java
new file mode 100644
index 00000000..716eb11d
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_test.java
@@ -0,0 +1,91 @@
+// Tags: not-a-test
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.Info;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.cmInfo;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.util.Collection;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public interface RMI_test
+ extends Remote
+{
+ String sayHello(RMI_test h)
+ throws RemoteException;
+
+ String joinStrings(String a, String b)
+ throws RemoteException;
+
+ long multiply(byte a, long b)
+ throws RemoteException;
+
+ int passArray(int[] array)
+ throws RemoteException;
+
+ String passStringArray(String[] array)
+ throws RemoteException;
+
+ String passPrimitives(byte b, double d, int i, String s, float f, char c,
+ short sh)
+ throws RemoteException;
+
+ String passStructure(myStructure s)
+ throws RemoteException;
+
+ String passStructureArray(myStructure[] structures)
+ throws RemoteException;
+
+ String passCorbaCMValueType(cmInfo info)
+ throws RemoteException;
+
+ String passCorbaValueType(Info info)
+ throws RemoteException;
+
+ String passCorbaValueTypeArray(Info[] infos)
+ throws RemoteException;
+
+ String passCorbaObject(org.omg.CORBA.Object object)
+ throws RemoteException;
+
+ NodeObject exchangeNodeObject(NodeObject nx)
+ throws RemoteException;
+
+ String passArrayOfRemotes(RMI_test[] tests)
+ throws RemoteException;
+
+ RMI_test passReturnRemote(RMI_test test)
+ throws RemoteException;
+
+ String getEgo()
+ throws RemoteException;
+
+ String passCollection(Collection cx)
+ throws RemoteException;
+
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/RMI_testImpl.java b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_testImpl.java
new file mode 100644
index 00000000..2f3970c3
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/RMI_testImpl.java
@@ -0,0 +1,329 @@
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.Info;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.cmInfo;
+
+import java.io.Serializable;
+import java.rmi.ConnectException;
+import java.rmi.RemoteException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.rmi.PortableRemoteObject;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.omg.CORBA.Object;
+import org.omg.CORBA.portable.ObjectImpl;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class RMI_testImpl
+ extends PortableRemoteObject
+ implements RMI_test, Serializable
+{
+ String ego = "<unassigned>";
+
+ RMI_test other = null;
+
+ public String getEgo()
+ throws RemoteException
+ {
+ return ego;
+ }
+
+ public String passCorbaCMValueType(cmInfo info)
+ {
+ return "" + info;
+ }
+
+ public String passCorbaValueType(Info info)
+ {
+ return "" + info;
+ }
+
+ public String passCorbaValueTypeArray(Info[] infos)
+ {
+ if (infos == null)
+ return "null";
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < infos.length; i++)
+ {
+ b.append(infos[i]);
+ b.append(":");
+ }
+ return b.toString();
+ }
+
+ public String passStructure(myStructure s)
+ throws RemoteException
+ {
+ return "" + s;
+ }
+
+ public String passStructureArray(myStructure[] infos)
+ {
+ if (infos == null)
+ return "null";
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < infos.length; i++)
+ {
+ b.append(infos[i]);
+ b.append(":");
+ }
+ return b.toString();
+ }
+
+ public RMI_testImpl()
+ throws RemoteException
+ {
+ super();
+ }
+
+ public String joinStrings(String a, String b)
+ throws RemoteException
+ {
+ if (a != null && a.equals("throw_remote"))
+ {
+ RemoteException t;
+ try
+ {
+ Throwable cause = new ParserConfigurationException("Uje!");
+ cause.initCause(new OutOfMemoryError("OOO!"));
+ cause.fillInStackTrace();
+ t = new RemoteException("Thrown remote AUDRIUS" + b, cause);
+
+ }
+ catch (Exception ex)
+ {
+ return "Unable to instantiate " + b + ": " + ex;
+ }
+ throw t;
+ }
+ else if (a != null && a.equals("throw_runtime"))
+ {
+ RuntimeException t;
+ try
+ {
+ t = new ArrayIndexOutOfBoundsException(
+ "Thrown ArrayIndexOutOfBoundsException AUDRIUS");
+ }
+ catch (Exception ex)
+ {
+ return "Unable to instantiate " + b + ": " + ex;
+ }
+ throw t;
+ }
+ else if (a != null && a.equals("throw_error"))
+ {
+ Error t;
+ try
+ {
+ t = new InternalError("Thrown InternalError Audrius");
+ }
+ catch (Exception ex)
+ {
+ return "Unable to instantiate " + b + ": " + ex;
+ }
+ throw t;
+ }
+ else if (a != null && a.equals("throw_cex"))
+ {
+ throw new ConnectException("Connect exception message");
+ }
+ else
+
+ return "'" + a + "' and '" + b + "'";
+ }
+
+ public long multiply(byte a, long b)
+ throws RemoteException
+ {
+ return a * b;
+ }
+
+ public int passArray(int[] array)
+ throws RemoteException
+ {
+ int s = 0;
+ for (int i = 0; i < array.length; i++)
+ {
+ s += array[i];
+ }
+ return s;
+ }
+
+ public String passPrimitives(byte b, double d, int i, String s, float f,
+ char c, short sh)
+ throws RemoteException
+ {
+ return "byte " + b + ", double " + d + ", int " + i + ", string " + s
+ + ", float " + f + ", char " + c + "(" + Long.toHexString(c) + ")"
+ + ", short " + sh;
+ }
+
+ public String passStringArray(String[] array)
+ throws RemoteException
+ {
+ StringBuffer b = new StringBuffer();
+
+ for (int i = 0; i < array.length; i++)
+ {
+ b.append(array[i]);
+ b.append(".");
+ }
+
+ return b.toString();
+ }
+
+ public String sayHello(RMI_test h)
+ throws RemoteException
+ {
+ if (h == null)
+ return "null";
+ else
+ return h.getEgo();
+ }
+
+ public String passCorbaObject(Object object)
+ {
+ if (object == null)
+ return "null passed";
+ return ((ObjectImpl) object)._ids()[0];
+ }
+
+ public NodeObject exchangeNodeObject(NodeObject nx)
+ throws RemoteException
+ {
+ try
+ {
+ if (nx.z_anotherTest != null)
+ {
+ nx.z_anotherTest = this;
+ return nx;
+ }
+ else if (nx.anotherTestArray != null)
+ {
+ StringBuffer rv = new StringBuffer();
+
+ for (int i = 0; i < nx.anotherTestArray.length; i++)
+ {
+ if (nx.anotherTestArray[i] != null)
+ rv.append(nx.anotherTestArray[i].getEgo());
+ else
+ rv.append("null");
+ rv.append(".");
+ }
+
+ nx.label = rv.toString();
+ nx.z_anotherTest = this;
+ return nx;
+ }
+ else
+ {
+ if (!nx.toString().equals(NodeObject.create1().toString()))
+ {
+ String msg = "Incorrect graph received " + nx + " expected "
+ + NodeObject.create1();
+ System.out.println();
+ System.out.println(msg);
+
+ throw new RemoteException(msg);
+ }
+ else
+ return NodeObject.create2();
+ }
+ }
+ catch (Exception e)
+ {
+ throw new RemoteException("Exception has been thrown: " + e);
+ }
+ }
+
+ /**
+ * Same, the idea is just to test arrays.
+ */
+ public String passArrayOfRemotes(RMI_test[] tests)
+ throws RemoteException
+ {
+ String[] expected = new String[] { "Local client object",
+ "Client implementation instance", null, "Local client object",
+ "Server side object" };
+
+ if (tests.length != expected.length)
+ return "Length mismatch, must be " + expected.length + " but "
+ + tests.length;
+
+ for (int i = 0; i < tests.length; i++)
+ {
+ if (tests[i] == null)
+ {
+ if (expected[i] != null)
+ return i + ":" + tests[i] + " versus " + expected[i];
+ }
+ else
+ {
+ if (!expected[i].equals(tests[i].getEgo()))
+ return i + ":" + tests[i].getEgo() + " versus " + expected[i];
+ }
+ }
+ return "ok";
+ }
+
+ /**
+ * Create and return new Remote.
+ */
+ public RMI_test passReturnRemote(RMI_test test)
+ throws RemoteException
+ {
+ if (test == null)
+ return null;
+ else
+ {
+ RMI_testImpl impl = new RMI_testImpl();
+ impl.ego = "ab (" + ego + ":" + (test == null ? "null" : test.getEgo())
+ + ")";
+ return impl;
+ }
+ }
+
+ public String passCollection(Collection cx)
+ throws RemoteException
+ {
+ StringBuffer b = new StringBuffer();
+ b.append(cx.getClass().getName() + ":");
+
+ Iterator iter = cx.iterator();
+
+ while (iter.hasNext())
+ {
+ b.append(iter.next());
+ b.append(".");
+ }
+ return b.toString();
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_testImpl_Tie.java b/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_testImpl_Tie.java
new file mode 100644
index 00000000..21149bad
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_testImpl_Tie.java
@@ -0,0 +1,297 @@
+// Tie class generated by rmic, do not edit.
+// Contents subject to change without notice.
+
+
+package gnu.testlet.javax.rmi.CORBA.Tie;
+
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.Info;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.cmInfo;
+
+import java.rmi.Remote;
+//Not a test, required by RMI_IIOP.java.
+
+//Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+//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. */
+
+import java.util.Collection;
+
+import javax.rmi.PortableRemoteObject;
+import javax.rmi.CORBA.Tie;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.CORBA.portable.UnknownException;
+import org.omg.PortableServer.Servant;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class _RMI_testImpl_Tie
+ extends Servant
+ implements Tie
+{
+
+ private RMI_testImpl target = null;
+
+ static final String[] _type_ids = { "RMI:" + RMI_test.class.getName()
+ + ":0000000000000000" };
+
+ public void setTarget(Remote target)
+ {
+ this.target = (RMI_testImpl) target;
+ }
+
+ public Remote getTarget()
+ {
+ return target;
+ }
+
+ public org.omg.CORBA.Object thisObject()
+ {
+ return _this_object();
+ }
+
+ public void deactivate()
+ {
+ try
+ {
+ _poa().deactivate_object(_poa().servant_to_id(this));
+ }
+ catch (org.omg.PortableServer.POAPackage.WrongPolicy exception)
+ {
+
+ }
+ catch (org.omg.PortableServer.POAPackage.ObjectNotActive exception)
+ {
+
+ }
+ catch (org.omg.PortableServer.POAPackage.ServantNotActive exception)
+ {
+
+ }
+ }
+
+ public ORB orb()
+ {
+ return _orb();
+ }
+
+ public void orb(ORB orb)
+ {
+ try
+ {
+ ((org.omg.CORBA_2_3.ORB) orb).set_delegate(this);
+ }
+ catch (ClassCastException e)
+ {
+ throw new org.omg.CORBA.BAD_PARAM(
+ "POA Servant requires an instance of org.omg.CORBA_2_3.ORB");
+ }
+ }
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId)
+ {
+ return _type_ids;
+ }
+
+ public OutputStream _invoke(String method, InputStream _in,
+ ResponseHandler reply)
+ throws SystemException
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = (org.omg.CORBA_2_3.portable.InputStream) _in;
+ switch (method.length())
+ {
+ case 8:
+ if (method.equals("multiply"))
+ {
+ byte arg0 = in.read_octet();
+ long arg1 = in.read_longlong();
+ long result = target.multiply(arg0, arg1);
+ OutputStream out = reply.createReply();
+ out.write_longlong(result);
+ return out;
+ }
+ else if (method.equals("_get_ego"))
+ {
+ String result = target.getEgo();
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ else if (method.equals("sayHello"))
+ {
+ RMI_test arg0 = (RMI_test) PortableRemoteObject.narrow(
+ in.read_Object(), RMI_test.class);
+ String result = target.sayHello(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 9:
+ if (method.equals("passArray"))
+ {
+ int[] arg0 = (int[]) in.read_value(int[].class);
+ int result = target.passArray(arg0);
+ OutputStream out = reply.createReply();
+ out.write_long(result);
+ return out;
+ }
+ case 11:
+ if (method.equals("joinStrings"))
+ {
+ String arg0 = (String) in.read_value(String.class);
+ String arg1 = (String) in.read_value(String.class);
+ String result = target.joinStrings(arg0, arg1);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 13:
+ if (method.equals("passStructure"))
+ {
+ myStructure arg0 = (myStructure) in.read_value(myStructure.class);
+ String result = target.passStructure(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 14:
+ if (method.equals("passPrimitives"))
+ {
+ byte arg0 = in.read_octet();
+ double arg1 = in.read_double();
+ int arg2 = in.read_long();
+ String arg3 = (String) in.read_value(String.class);
+ float arg4 = in.read_float();
+ char arg5 = in.read_wchar();
+ short arg6 = in.read_short();
+ String result = target.passPrimitives(arg0, arg1, arg2, arg3,
+ arg4, arg5, arg6);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ else if (method.equals("passCollection"))
+ {
+ Collection arg0 = (Collection) in.read_value(Collection.class);
+ String result = target.passCollection(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 15:
+ if (method.equals("passStringArray"))
+ {
+ String[] arg0 = (String[]) in.read_value(String[].class);
+ String result = target.passStringArray(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ else if (method.equals("passCorbaObject"))
+ {
+ org.omg.CORBA.Object arg0 = (org.omg.CORBA.Object) in.read_Object();
+ String result = target.passCorbaObject(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 16:
+ if (method.equals("passReturnRemote"))
+ {
+ RMI_test arg0 = (RMI_test) PortableRemoteObject.narrow(
+ in.read_Object(), RMI_test.class);
+ RMI_test result = target.passReturnRemote(arg0);
+ OutputStream out = reply.createReply();
+ Util.writeRemoteObject(out, result);
+ return out;
+ }
+ case 18:
+ if (method.equals("passStructureArray"))
+ {
+ myStructure[] arg0 = (myStructure[]) in.read_value(myStructure[].class);
+ String result = target.passStructureArray(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ else if (method.equals("passCorbaValueType"))
+ {
+ Info arg0 = (Info) in.read_value(Info.class);
+ String result = target.passCorbaValueType(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ else if (method.equals("exchangeNodeObject"))
+ {
+ NodeObject arg0 = (NodeObject) in.read_value(NodeObject.class);
+ NodeObject result = target.exchangeNodeObject(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, NodeObject.class);
+ return out;
+ }
+ else if (method.equals("passArrayOfRemotes"))
+ {
+ RMI_test[] arg0 = (RMI_test[]) in.read_value(RMI_test[].class);
+ String result = target.passArrayOfRemotes(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 20:
+ if (method.equals("passCorbaCMValueType"))
+ {
+ cmInfo arg0 = (cmInfo) in.read_value(cmInfo.class);
+ String result = target.passCorbaCMValueType(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ case 23:
+ if (method.equals("passCorbaValueTypeArray"))
+ {
+ Info[] arg0 = (Info[]) in.read_value(Info[].class);
+ String result = target.passCorbaValueTypeArray(arg0);
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) reply.createReply();
+ out.write_value(result, String.class);
+ return out;
+ }
+ }
+ throw new BAD_OPERATION();
+ }
+ catch (SystemException ex)
+ {
+ throw ex;
+ }
+ catch (Throwable ex)
+ {
+ throw new UnknownException(ex);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_test_Stub.java b/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_test_Stub.java
new file mode 100644
index 00000000..dff63898
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/_RMI_test_Stub.java
@@ -0,0 +1,1095 @@
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.Info;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.cmInfo;
+
+import java.io.Serializable;
+import java.rmi.RemoteException;
+import java.rmi.UnexpectedException;
+import java.util.Collection;
+
+import javax.rmi.PortableRemoteObject;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.Util;
+
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+import org.omg.CORBA.portable.ServantObject;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class _RMI_test_Stub
+ extends Stub
+ implements RMI_test
+{
+
+ private static final String[] _type_ids = _RMI_testImpl_Tie._type_ids;
+
+ public String[] _ids()
+ {
+ return _type_ids;
+ }
+
+ public String sayHello(RMI_test arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ OutputStream out = _request("sayHello", true);
+ Util.writeRemoteObject(out, arg0);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return sayHello(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("sayHello", RMI_test.class);
+ if (so == null)
+ {
+ return sayHello(arg0);
+ }
+ try
+ {
+ RMI_test arg0Copy = (RMI_test) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).sayHello(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String joinStrings(String arg0, String arg1)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "joinStrings", true);
+ out.write_value(arg0, String.class);
+ out.write_value(arg1, String.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return joinStrings(arg0, arg1);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("joinStrings", RMI_test.class);
+ if (so == null)
+ {
+ return joinStrings(arg0, arg1);
+ }
+ try
+ {
+ return ((RMI_test) so.servant).joinStrings(arg0, arg1);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public long multiply(byte arg0, long arg1)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ OutputStream out = _request("multiply", true);
+ out.write_octet(arg0);
+ out.write_longlong(arg1);
+ in = _invoke(out);
+ return in.read_longlong();
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return multiply(arg0, arg1);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("multiply", RMI_test.class);
+ if (so == null)
+ {
+ return multiply(arg0, arg1);
+ }
+ try
+ {
+ return ((RMI_test) so.servant).multiply(arg0, arg1);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public int passArray(int[] arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passArray", true);
+ out.write_value(cast_array(arg0), int[].class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return in.read_long();
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passArray(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passArray", RMI_test.class);
+ if (so == null)
+ {
+ return passArray(arg0);
+ }
+ try
+ {
+ int[] arg0Copy = (int[]) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passArray(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passStringArray(String[] arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passStringArray", true);
+ out.write_value(cast_array(arg0), String[].class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passStringArray(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passStringArray", RMI_test.class);
+ if (so == null)
+ {
+ return passStringArray(arg0);
+ }
+ try
+ {
+ String[] arg0Copy = (String[]) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passStringArray(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passPrimitives(byte arg0, double arg1, int arg2, String arg3,
+ float arg4, char arg5, short arg6)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passPrimitives", true);
+ out.write_octet(arg0);
+ out.write_double(arg1);
+ out.write_long(arg2);
+ out.write_value(arg3, String.class);
+ out.write_float(arg4);
+ out.write_wchar(arg5);
+ out.write_short(arg6);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passPrimitives(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passPrimitives", RMI_test.class);
+ if (so == null)
+ {
+ return passPrimitives(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ }
+ try
+ {
+ return ((RMI_test) so.servant).passPrimitives(arg0, arg1, arg2,
+ arg3, arg4, arg5, arg6);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passStructure(myStructure arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passStructure", true);
+ out.write_value(arg0, myStructure.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passStructure(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passStructure", RMI_test.class);
+ if (so == null)
+ {
+ return passStructure(arg0);
+ }
+ try
+ {
+ myStructure arg0Copy = (myStructure) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passStructure(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passStructureArray(myStructure[] arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passStructureArray", true);
+ out.write_value(cast_array(arg0), myStructure[].class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passStructureArray(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passStructureArray",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passStructureArray(arg0);
+ }
+ try
+ {
+ myStructure[] arg0Copy = (myStructure[]) Util.copyObject(arg0,
+ _orb());
+ return ((RMI_test) so.servant).passStructureArray(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passCorbaCMValueType(cmInfo arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passCorbaCMValueType", true);
+ out.write_value(arg0, cmInfo.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passCorbaCMValueType(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passCorbaCMValueType",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passCorbaCMValueType(arg0);
+ }
+ try
+ {
+ cmInfo arg0Copy = (cmInfo) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passCorbaCMValueType(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passCorbaValueType(Info arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passCorbaValueType", true);
+ out.write_value(arg0, Info.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passCorbaValueType(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passCorbaValueType",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passCorbaValueType(arg0);
+ }
+ try
+ {
+ Info arg0Copy = (Info) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passCorbaValueType(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passCorbaValueTypeArray(Info[] arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passCorbaValueTypeArray", true);
+ out.write_value(cast_array(arg0), Info[].class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passCorbaValueTypeArray(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passCorbaValueTypeArray",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passCorbaValueTypeArray(arg0);
+ }
+ try
+ {
+ Info[] arg0Copy = (Info[]) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passCorbaValueTypeArray(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passCorbaObject(org.omg.CORBA.Object arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ OutputStream out = _request("passCorbaObject", true);
+ out.write_Object(arg0);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passCorbaObject(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passCorbaObject", RMI_test.class);
+ if (so == null)
+ {
+ return passCorbaObject(arg0);
+ }
+ try
+ {
+ return ((RMI_test) so.servant).passCorbaObject(arg0);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public NodeObject exchangeNodeObject(NodeObject arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "exchangeNodeObject", true);
+ out.write_value(arg0, NodeObject.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (NodeObject) in.read_value(NodeObject.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return exchangeNodeObject(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("exchangeNodeObject",
+ RMI_test.class);
+ if (so == null)
+ {
+ return exchangeNodeObject(arg0);
+ }
+ try
+ {
+ NodeObject arg0Copy = (NodeObject) Util.copyObject(arg0, _orb());
+ NodeObject result = ((RMI_test) so.servant).exchangeNodeObject(arg0Copy);
+ return (NodeObject) Util.copyObject(result, _orb());
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passArrayOfRemotes(RMI_test[] arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passArrayOfRemotes", true);
+ out.write_value(cast_array(arg0), RMI_test[].class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passArrayOfRemotes(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passArrayOfRemotes",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passArrayOfRemotes(arg0);
+ }
+ try
+ {
+ RMI_test[] arg0Copy = (RMI_test[]) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passArrayOfRemotes(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public RMI_test passReturnRemote(RMI_test arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ OutputStream out = _request("passReturnRemote", true);
+ Util.writeRemoteObject(out, arg0);
+ in = _invoke(out);
+ return (RMI_test) PortableRemoteObject.narrow(in.read_Object(),
+ RMI_test.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passReturnRemote(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passReturnRemote",
+ RMI_test.class);
+ if (so == null)
+ {
+ return passReturnRemote(arg0);
+ }
+ try
+ {
+ RMI_test arg0Copy = (RMI_test) Util.copyObject(arg0, _orb());
+ RMI_test result = ((RMI_test) so.servant).passReturnRemote(arg0Copy);
+ return (RMI_test) Util.copyObject(result, _orb());
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String getEgo()
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ OutputStream out = _request("_get_ego", true);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return getEgo();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("_get_ego", RMI_test.class);
+ if (so == null)
+ {
+ return getEgo();
+ }
+ try
+ {
+ return ((RMI_test) so.servant).getEgo();
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ public String passCollection(Collection arg0)
+ throws RemoteException
+ {
+ if (!Util.isLocal(this))
+ {
+ try
+ {
+ org.omg.CORBA_2_3.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA_2_3.portable.OutputStream out = (org.omg.CORBA_2_3.portable.OutputStream) _request(
+ "passCollection", true);
+ out.write_value((Serializable) arg0, Collection.class);
+ in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out);
+ return (String) in.read_value(String.class);
+ }
+ catch (ApplicationException ex)
+ {
+ in = (org.omg.CORBA_2_3.portable.InputStream) ex.getInputStream();
+ String id = in.read_string();
+ throw new UnexpectedException(id);
+ }
+ catch (RemarshalException ex)
+ {
+ return passCollection(arg0);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+ catch (SystemException ex)
+ {
+ throw Util.mapSystemException(ex);
+ }
+ }
+ else
+ {
+ ServantObject so = _servant_preinvoke("passCollection", RMI_test.class);
+ if (so == null)
+ {
+ return passCollection(arg0);
+ }
+ try
+ {
+ Collection arg0Copy = (Collection) Util.copyObject(arg0, _orb());
+ return ((RMI_test) so.servant).passCollection(arg0Copy);
+ }
+ catch (Throwable ex)
+ {
+ Throwable exCopy = (Throwable) Util.copyObject(ex, _orb());
+ throw Util.wrapException(exCopy);
+ }
+ finally
+ {
+ _servant_postinvoke(so);
+ }
+ }
+ }
+
+ // This method is required as a work-around for
+ // a bug in the JDK 1.1.6 verifier.
+
+ private Serializable cast_array(Object obj)
+ {
+ return (Serializable) obj;
+ }
+}
diff --git a/gnu/testlet/javax/rmi/CORBA/Tie/myStructure.java b/gnu/testlet/javax/rmi/CORBA/Tie/myStructure.java
new file mode 100644
index 00000000..ad3df6e2
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CORBA/Tie/myStructure.java
@@ -0,0 +1,41 @@
+// Not a test, required by RMI_IIOP.java.
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.rmi.CORBA.Tie;
+
+import java.io.Serializable;
+
+/**
+ * This file is part of the CORBA RMI over IIOP the test executable
+ * class being gnu.testlet.javax.rmi.CORBA.Tie.RMI_IIOP. It is a
+ * Serializable being passed via RMI-IIOP.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class myStructure implements Serializable
+{
+ public int a = 1;
+ private int b = 2;
+ public String c = "three";
+
+ public String toString()
+ {
+ return a+" "+b+" "+c;
+ }
+}
diff --git a/gnu/testlet/javax/rmi/CVS/Entries b/gnu/testlet/javax/rmi/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/rmi/CVS/Entries.Log b/gnu/testlet/javax/rmi/CVS/Entries.Log
new file mode 100644
index 00000000..6462400e
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/CORBA////
+A D/ssl////
diff --git a/gnu/testlet/javax/rmi/CVS/Repository b/gnu/testlet/javax/rmi/CVS/Repository
new file mode 100644
index 00000000..fe1153e6
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/rmi
diff --git a/gnu/testlet/javax/rmi/CVS/Root b/gnu/testlet/javax/rmi/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/rmi/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/rmi/ssl/CVS/Entries b/gnu/testlet/javax/rmi/ssl/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/rmi/ssl/CVS/Entries.Log b/gnu/testlet/javax/rmi/ssl/CVS/Entries.Log
new file mode 100644
index 00000000..d079a9c2
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/SslRMIClientSocketFactory////
diff --git a/gnu/testlet/javax/rmi/ssl/CVS/Repository b/gnu/testlet/javax/rmi/ssl/CVS/Repository
new file mode 100644
index 00000000..7b60c58b
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/rmi/ssl
diff --git a/gnu/testlet/javax/rmi/ssl/CVS/Root b/gnu/testlet/javax/rmi/ssl/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Entries b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Entries
new file mode 100644
index 00000000..56f2a9ca
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Entries
@@ -0,0 +1,2 @@
+/PR34582.java/1.1/Mon Dec 31 04:01:35 2007//
+D
diff --git a/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Repository b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Repository
new file mode 100644
index 00000000..b29deccb
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory
diff --git a/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Root b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/PR34582.java b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/PR34582.java
new file mode 100644
index 00000000..49941a4b
--- /dev/null
+++ b/gnu/testlet/javax/rmi/ssl/SslRMIClientSocketFactory/PR34582.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.rmi.ssl.SslRMIClientSocketFactory;
+
+import javax.rmi.ssl.SslRMIClientSocketFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This checks for the bug found in PR34582, namely that
+ * creating an instance of the class fails with a
+ * {@code NullPointerException}.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR34582
+ implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ try
+ {
+ new SslRMIClientSocketFactory();
+ h.check(true, "Factory created succesfully.");
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("Factory could not be created.");
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/security/CVS/Entries b/gnu/testlet/javax/security/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/security/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/security/CVS/Entries.Log b/gnu/testlet/javax/security/CVS/Entries.Log
new file mode 100644
index 00000000..fb94fbcb
--- /dev/null
+++ b/gnu/testlet/javax/security/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/auth////
diff --git a/gnu/testlet/javax/security/CVS/Repository b/gnu/testlet/javax/security/CVS/Repository
new file mode 100644
index 00000000..545cc9be
--- /dev/null
+++ b/gnu/testlet/javax/security/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/security
diff --git a/gnu/testlet/javax/security/CVS/Root b/gnu/testlet/javax/security/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/security/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/security/auth/CVS/Entries b/gnu/testlet/javax/security/auth/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/security/auth/CVS/Entries.Log b/gnu/testlet/javax/security/auth/CVS/Entries.Log
new file mode 100644
index 00000000..3c5e2233
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/login////
diff --git a/gnu/testlet/javax/security/auth/CVS/Repository b/gnu/testlet/javax/security/auth/CVS/Repository
new file mode 100644
index 00000000..1d1190be
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/security/auth
diff --git a/gnu/testlet/javax/security/auth/CVS/Root b/gnu/testlet/javax/security/auth/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/security/auth/login/CVS/Entries b/gnu/testlet/javax/security/auth/login/CVS/Entries
new file mode 100644
index 00000000..d2e0fb76
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/CVS/Entries
@@ -0,0 +1,5 @@
+/DBLoginModule.java/1.1/Sun Jan 15 19:48:29 2006//
+/TestOfConfigurationParser.java/1.2/Thu Feb 23 13:06:49 2006//
+/TestOfGnuConfiguration.java/1.2/Thu Feb 23 13:06:49 2006//
+/TestOfPR25202.java/1.2/Thu Feb 23 13:06:49 2006//
+D
diff --git a/gnu/testlet/javax/security/auth/login/CVS/Repository b/gnu/testlet/javax/security/auth/login/CVS/Repository
new file mode 100644
index 00000000..033cb815
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/security/auth/login
diff --git a/gnu/testlet/javax/security/auth/login/CVS/Root b/gnu/testlet/javax/security/auth/login/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/security/auth/login/DBLoginModule.java b/gnu/testlet/javax/security/auth/login/DBLoginModule.java
new file mode 100644
index 00000000..aaef7a9e
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/DBLoginModule.java
@@ -0,0 +1,62 @@
+/* DBLoginModule.java -- Fake LoginModule for test purposes
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.security.auth.login;
+
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+
+/**
+ * Fake {@link LoginModule} implementation for test purposes.
+ */
+public class DBLoginModule implements LoginModule
+{
+ public boolean abort() throws LoginException
+ {
+ return true;
+ }
+
+ public boolean commit() throws LoginException
+ {
+ return true;
+ }
+
+ public void initialize(Subject subject, CallbackHandler handler,
+ Map sharedState, Map options)
+ {
+ }
+
+ public boolean login() throws LoginException
+ {
+ return true;
+ }
+
+ public boolean logout() throws LoginException
+ {
+ return true;
+ }
+}
diff --git a/gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java b/gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java
new file mode 100644
index 00000000..5e458c99
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/TestOfConfigurationParser.java
@@ -0,0 +1,131 @@
+/* TestOfConfigurationParser.java -- GnuConfiguration parser conformance tests
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+
+package gnu.testlet.javax.security.auth.login;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Map;
+
+import gnu.javax.security.auth.login.ConfigFileParser;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Simple tests to check conformane with published documentation.
+ */
+public class TestOfConfigurationParser implements Testlet
+{
+ /** Example from Configuration.java. */
+ private static final String TC1 = "\n" +
+ " Login {\n" +
+ " com.sun.security.auth.module.UnixLoginModule required;\n" +
+ " com.sun.security.auth.module.Krb5LoginModule optional\n" +
+ " useTicketCache=\"true\"\n" +
+ " ticketCache=\"${user.home}${/}tickets\";\n" +
+ " } ;\n";
+
+ /** Example with UTf-8 characters. */
+ private static final String TC2 = "\n" +
+ " Pilsçtâs {\n" +
+ " gnu.i18n.security.auth.module.SaslLoginModule required;\n" +
+ " gnu.i18n.security.auth.module.LdapLoginModule optional\n" +
+ " use=\"Wörterbuch\"\n" +
+ " dir=\"${user.home}${/}Hervé\";\n" +
+ " } ;\n";
+
+ /** Example from Configuration.java with compact syntax. */
+ private static final String TC3 =
+ "Login{" +
+ "com.sun.security.auth.module.UnixLoginModule required;" +
+ "com.sun.security.auth.module.Krb5LoginModule optional " +
+ "useTicketCache=\"true\" " +
+ "ticketCache=\"${user.home}${/}tickets\";" +
+ "};" +
+ " Pilsçtâs{" +
+ "gnu.i18n.security.auth.module.SaslLoginModule required;" +
+ "gnu.i18n.security.auth.module.LdapLoginModule optional " +
+ "use=\"Wörterbuch\" " +
+ "dir=\"${user.home}${/}Hervé\";" +
+ "};";
+
+ /** Example with different types of comments. */
+ private static final String TC4 =
+ "Pilsçtâs /* the application name */{\n" +
+ "// a java-style comment \n" +
+ "gnu.pkg.module.LM$Sasl requisite;\n" +
+ "# bash-style comment\n" +
+ "gnu.pkg.module.LM$Ldap /* another in-line comment */ sufficient\n" +
+ "use=\"Wörterbuch\"\n" +
+ "dir=\"${user.home}${/}Hervé\";\n" +
+ " } ;\n";
+
+ /** Sample login config file from JAAS Tutorial jdk 1.4. */
+ private static final String TC5 = "" +
+ "/** Login Configuration for the JAAS Sample Application **/" +
+ "Sample {" +
+ " sample.module.SampleLoginModule required debug=true;" +
+ "};";
+
+ private TestHarness harness;
+ private ConfigFileParser cp;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ setUp();
+ parseConfig(TC1, "MUST parse Configuration javadoc example");
+ parseConfig(TC2, "MUST parse entities in UTF-8 encoding");
+ parseConfig(TC3, "MUST parse compact syntax");
+ parseConfig(TC4, "MUST ignore comments");
+ parseConfig(TC5, "MUST parse JAAS tutorial example");
+ teardown();
+ }
+
+ private void setUp()
+ {
+ cp = new ConfigFileParser();
+ }
+
+ private void parseConfig(String s, String m)
+ {
+ harness.checkPoint("parseConfig");
+ try
+ {
+ Reader sr = new StringReader(s);
+ cp.parse(sr);
+ Map map = cp.getLoginModulesMap();
+ harness.check(map.size() > 0, m);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail(m);
+ }
+ }
+
+ private void teardown()
+ {
+ cp = null;
+ }
+}
diff --git a/gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java b/gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java
new file mode 100644
index 00000000..fa6d469c
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/TestOfGnuConfiguration.java
@@ -0,0 +1,233 @@
+/* TestOfGnuConfiguration.java -- Conformance tests for GnuConfiguration
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: DBLoginModule
+
+package gnu.testlet.javax.security.auth.login;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.security.Security;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.Configuration;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Simple tests for conformance of code to published documentation.
+ */
+public class TestOfGnuConfiguration implements Testlet
+{
+ private static final String CONFIG = ""
+ + "DBLogin {\n"
+ + " gnu.testlet.javax.security.auth.login.DBLoginModule required;\n"
+ + "};";
+
+ private TestHarness harness;
+ private String cfPath;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ setUp();
+ parseFromSecurityProperty();
+ parseFromSystemProperty();
+ parseFromUserHome();
+ nullConfiguration();
+ teardown();
+ }
+
+ private void setUp()
+ {
+ harness.checkPoint("setUp");
+ try
+ {
+ File cf = File.createTempFile("auth", ".login");
+ cf.deleteOnExit();
+ FileWriter fw = new FileWriter(cf);
+ fw.write(CONFIG);
+ fw.close();
+
+ cfPath = cf.getCanonicalPath();
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp");
+ }
+ }
+
+ private void parseFromSecurityProperty()
+ {
+ harness.checkPoint("parseFromSecurityProperty");
+ try
+ {
+ Security.setProperty("java.security.auth.login.config.url.1", cfPath);
+// Configuration.getConfiguration().refresh();
+
+ LoginContext lc =
+ new LoginContext("DBLogin", new DefaultLoginHandler("", "", ""));
+ lc.login();
+ harness.check(true, "MUST be able to login");
+ lc.logout();
+ harness.check(true, "MUST be able to logout");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("parseFromSecurityProperty");
+ }
+ }
+
+ private void parseFromSystemProperty()
+ {
+ harness.checkPoint("parseFromSystemProperty");
+ try
+ {
+ Security.setProperty("java.security.auth.login.config.url.1", "");
+ System.setProperty("java.security.auth.login.config", cfPath);
+ Configuration.getConfiguration().refresh();
+
+ LoginContext lc =
+ new LoginContext("DBLogin", new DefaultLoginHandler("", "", ""));
+ lc.login();
+ harness.check(true, "MUST be able to login");
+ lc.logout();
+ harness.check(true, "MUST be able to logout");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("parseFromSystemProperty");
+ }
+ }
+
+ private void parseFromUserHome()
+ {
+ harness.checkPoint("parseFromUserHome");
+ File myConfig = null;
+ try
+ {
+ Security.setProperty("java.security.auth.login.config.url.1", "");
+ System.setProperty("java.security.auth.login.config", "");
+ myConfig =
+ new File(System.getProperty("user.home"), ".java.login.config");
+ myConfig.deleteOnExit();
+ copy(new File(cfPath), myConfig);
+ Configuration.getConfiguration().refresh();
+
+ LoginContext lc =
+ new LoginContext("DBLogin", new DefaultLoginHandler("", "", ""));
+ lc.login();
+ harness.check(true, "MUST be able to login");
+ lc.logout();
+ harness.check(true, "MUST be able to logout");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("parseFromUserHome");
+ }
+ finally
+ {
+ if (myConfig != null)
+ myConfig.delete();
+ }
+ }
+
+ private void nullConfiguration()
+ {
+ harness.checkPoint("nullConfiguration");
+ try
+ {
+ Security.setProperty("java.security.auth.login.config.url.1", "");
+ System.setProperty("java.security.auth.login.config", "");
+ Configuration.getConfiguration().refresh();
+
+ try
+ {
+ new LoginContext("DBLogin", new DefaultLoginHandler("", "", ""));
+ harness.fail("MUST NOT be able to create context");
+ }
+ catch (LoginException x)
+ {
+ harness.check(true, "MUST NOT be able to create context");
+ }
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("nullConfiguration");
+ }
+ }
+
+ private void teardown()
+ {
+ }
+
+ private void copy(File src, File dst) throws IOException
+ {
+ if (!dst.exists())
+ dst.createNewFile();
+
+ FileChannel source = null;
+ FileChannel destination = null;
+ try
+ {
+ source = new FileInputStream(src).getChannel();
+ destination = new FileOutputStream(dst).getChannel();
+ destination.transferFrom(source, 0, source.size());
+ }
+ finally
+ {
+ if (source != null)
+ source.close();
+
+ if (destination != null)
+ destination.close();
+ }
+ }
+
+ // Inner class(es)
+ // --------------------------------------------------------------------------
+
+ class DefaultLoginHandler implements CallbackHandler
+ {
+ public DefaultLoginHandler(String u, String p, String d)
+ {
+ super();
+ }
+
+ public void handle(Callback[] callbacks)
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/javax/security/auth/login/TestOfPR25202.java b/gnu/testlet/javax/security/auth/login/TestOfPR25202.java
new file mode 100644
index 00000000..0e92e4c3
--- /dev/null
+++ b/gnu/testlet/javax/security/auth/login/TestOfPR25202.java
@@ -0,0 +1,114 @@
+/* TestOfGnuConfiguration.java -- Regression test for PR25202
+ Copyright (C) 2006 Free Software Foundation, Inc.
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: GNU-CRYPTO JDK1.4
+// Uses: DBLoginModule
+
+package gnu.testlet.javax.security.auth.login;
+
+import java.io.File;
+import java.io.FileWriter;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.LoginContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Simple tests to check compliance with published documentation.
+ */
+public class TestOfPR25202 implements Testlet
+{
+ private static final String CONFIG = "" +
+ "DBLogin {\n" +
+ " gnu.testlet.javax.security.auth.login.DBLoginModule required;\n" +
+ "};";
+
+ private TestHarness harness;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ setUp();
+ pr25202();
+ teardown();
+ }
+
+ private void pr25202()
+ {
+ harness.checkPoint("pr25202");
+ try
+ {
+ LoginContext lc = new LoginContext("DBLogin",
+ new DefaultLoginHandler("", "", ""));
+ lc.login();
+ harness.check(true, "MUST be able to login");
+ lc.logout();
+ harness.check(true, "MUST be able to logout");
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("pr25202");
+ }
+ }
+
+ private void setUp()
+ {
+ harness.checkPoint("setUp");
+ try
+ {
+ File cf = File.createTempFile("auth", ".login");
+ cf.deleteOnExit();
+ FileWriter fw = new FileWriter(cf);
+ fw.write(CONFIG);
+ fw.close();
+ String cfPath = cf.getCanonicalPath();
+ System.setProperty("java.security.auth.login.config", cfPath);
+ }
+ catch (Exception x)
+ {
+ harness.debug(x);
+ harness.fail("setUp");
+ }
+ }
+
+ private void teardown()
+ {
+ }
+
+ // Inner class(es)
+ // --------------------------------------------------------------------------
+
+ public class DefaultLoginHandler implements CallbackHandler
+ {
+ public DefaultLoginHandler(String username, String password, String domain)
+ {
+ super();
+ }
+
+ public void handle(Callback[] callbacks)
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/javax/sound/CVS/Entries b/gnu/testlet/javax/sound/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/sound/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/sound/CVS/Entries.Log b/gnu/testlet/javax/sound/CVS/Entries.Log
new file mode 100644
index 00000000..0c960085
--- /dev/null
+++ b/gnu/testlet/javax/sound/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/sampled////
diff --git a/gnu/testlet/javax/sound/CVS/Repository b/gnu/testlet/javax/sound/CVS/Repository
new file mode 100644
index 00000000..f6dcbcaa
--- /dev/null
+++ b/gnu/testlet/javax/sound/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/sound
diff --git a/gnu/testlet/javax/sound/CVS/Root b/gnu/testlet/javax/sound/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/sound/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/sound/sampled/AudioProperties.java b/gnu/testlet/javax/sound/sampled/AudioProperties.java
new file mode 100644
index 00000000..fef69df6
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/AudioProperties.java
@@ -0,0 +1,174 @@
+/* AudioProperties.java -- simple test to read audio properties from
+ sound files.
+ Copyright (C) 2007 Mario Torre <neugens@limasoftware.net>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.sound.sampled;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.UnsupportedAudioFileException;
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * @author Mario Torre <neugens@limasoftware.net>
+ */
+public class AudioProperties implements Testlet
+{
+ private static final String BASE_PATH =
+ "gnu#testlet#javax#sound#sampled#data#";
+ private static final String WAV = BASE_PATH + "k3b_success1.wav";
+ private static final String AU = BASE_PATH + "k3b_success1.au";
+
+ protected TestHarness harness = null;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+ this.testWav();
+ this.testAU();
+ }
+
+ private void processWaveStream(AudioInputStream stream)
+ {
+ AudioFormat format = stream.getFormat();
+
+ // NOTE: we don't check for encoding, because our backend is unable
+ // to get the correct encoding as defined by AudioFormat.Encoding
+ // this is not a problem, because the encodings specified do not
+ // make sense in most cases.
+ this.harness.check(format.getFrameSize() == 1);
+ this.harness.check(format.getChannels() == 1);
+ this.harness.check(format.getSampleRate() == 8000.0);
+ this.harness.check(format.getFrameRate() == 8000.0);
+ this.harness.check(format.getSampleSizeInBits() == 8);
+ }
+
+ private void processAUStream(AudioInputStream stream)
+ {
+ AudioFormat format = stream.getFormat();
+
+ // NOTE: we don't check for encoding, because our backend is unable
+ // to get the correct encoding as defined by AudioFormat.Encoding
+ // this is not a problem, because the encodings specified do not
+ // make sense in most cases.
+ this.harness.check(format.getFrameSize() == 2);
+ this.harness.check(format.getChannels() == 1);
+ this.harness.check(format.getSampleRate() == 8000.0);
+ this.harness.check(format.getFrameRate() == 8000.0);
+ this.harness.check(format.getSampleSizeInBits() == 16);
+ }
+
+ private AudioInputStream getAudioStream(String filepath, boolean stream)
+ throws IOException, UnsupportedAudioFileException
+ {
+ File file = null;
+ try
+ {
+ file = this.harness.getResourceFile(filepath);
+ }
+ catch (ResourceNotFoundException e1)
+ {
+ throw new IOException("ResourceNotFoundException: check the correct " +
+ "input file location");
+ }
+
+ AudioInputStream audioInputStream = null;
+ if (stream)
+ {
+ audioInputStream =
+ AudioSystem.getAudioInputStream(new FileInputStream(file));
+ }
+ else
+ {
+ audioInputStream = AudioSystem.getAudioInputStream(file);
+ }
+
+ return audioInputStream;
+ }
+
+ /**
+ * Read a wav file and check if the expected properties match
+ * the actual result.
+ */
+ private void testWav()
+ {
+ this.harness.checkPoint("testWav()");
+
+ try
+ {
+ this.harness.checkPoint("testWav() - FILE");
+ AudioInputStream audioInputStream = getAudioStream(WAV, false);
+
+ processWaveStream(audioInputStream);
+
+ this.harness.checkPoint("testWav() - STREAM");
+ AudioInputStream audioInputStream2 = getAudioStream(WAV, true);
+
+ processWaveStream(audioInputStream2);
+ }
+ catch (UnsupportedAudioFileException e)
+ {
+ this.harness.fail("Wave files should be supported by any" +
+ " implementation");
+ }
+ catch (IOException e)
+ {
+ this.harness.fail(e.getMessage());
+ }
+ }
+
+ private void testAU()
+ {
+ this.harness.checkPoint("testAU()");
+
+ try
+ {
+ this.harness.checkPoint("testAU() - FILE");
+ AudioInputStream audioInputStream = getAudioStream(AU, false);
+
+ processAUStream(audioInputStream);
+
+ this.harness.checkPoint("testAU() - STREAM");
+ AudioInputStream audioInputStream2 = getAudioStream(AU, true);
+
+ processAUStream(audioInputStream2);
+ }
+ catch (UnsupportedAudioFileException e)
+ {
+ this.harness.fail("AU files should be supported by any" +
+ " implementation");
+ }
+ catch (IOException e)
+ {
+ this.harness.fail(e.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/javax/sound/sampled/CVS/Entries b/gnu/testlet/javax/sound/sampled/CVS/Entries
new file mode 100644
index 00000000..aa072193
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/CVS/Entries
@@ -0,0 +1,2 @@
+/AudioProperties.java/1.2/Sat Jul 7 19:21:42 2007//
+D
diff --git a/gnu/testlet/javax/sound/sampled/CVS/Entries.Log b/gnu/testlet/javax/sound/sampled/CVS/Entries.Log
new file mode 100644
index 00000000..98990f29
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/data////
diff --git a/gnu/testlet/javax/sound/sampled/CVS/Repository b/gnu/testlet/javax/sound/sampled/CVS/Repository
new file mode 100644
index 00000000..aa758938
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/sound/sampled
diff --git a/gnu/testlet/javax/sound/sampled/CVS/Root b/gnu/testlet/javax/sound/sampled/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/sound/sampled/data/CVS/Entries b/gnu/testlet/javax/sound/sampled/data/CVS/Entries
new file mode 100644
index 00000000..63604f5a
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/data/CVS/Entries
@@ -0,0 +1,3 @@
+/k3b_success1.au/1.1/Sat Jul 7 19:21:42 2007/-kb/
+/k3b_success1.wav/1.1/Thu Jul 5 23:04:28 2007/-kb/
+D
diff --git a/gnu/testlet/javax/sound/sampled/data/CVS/Repository b/gnu/testlet/javax/sound/sampled/data/CVS/Repository
new file mode 100644
index 00000000..1f1b21d3
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/data/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/sound/sampled/data
diff --git a/gnu/testlet/javax/sound/sampled/data/CVS/Root b/gnu/testlet/javax/sound/sampled/data/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/data/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/sound/sampled/data/k3b_success1.au b/gnu/testlet/javax/sound/sampled/data/k3b_success1.au
new file mode 100644
index 00000000..dd8d068e
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/data/k3b_success1.au
Binary files differ
diff --git a/gnu/testlet/javax/sound/sampled/data/k3b_success1.wav b/gnu/testlet/javax/sound/sampled/data/k3b_success1.wav
new file mode 100644
index 00000000..7a42a2b9
--- /dev/null
+++ b/gnu/testlet/javax/sound/sampled/data/k3b_success1.wav
Binary files differ
diff --git a/gnu/testlet/javax/swing/AbstractAction/CVS/Entries b/gnu/testlet/javax/swing/AbstractAction/CVS/Entries
new file mode 100644
index 00000000..6559941f
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/CVS/Entries
@@ -0,0 +1,8 @@
+/MyAction.java/1.1/Wed Jul 6 08:55:27 2005//
+/MyPropertyChangeListener.java/1.1/Wed Jul 6 08:55:27 2005//
+/clone.java/1.1/Wed Jul 6 08:55:27 2005//
+/constructors.java/1.1/Wed Jul 6 08:55:27 2005//
+/getValue.java/1.1/Wed Jul 6 08:55:27 2005//
+/putValue.java/1.2/Sun Feb 12 13:33:50 2006//
+/setEnabled.java/1.2/Wed Jul 6 16:02:46 2005//
+D
diff --git a/gnu/testlet/javax/swing/AbstractAction/CVS/Repository b/gnu/testlet/javax/swing/AbstractAction/CVS/Repository
new file mode 100644
index 00000000..eb99b463
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/AbstractAction
diff --git a/gnu/testlet/javax/swing/AbstractAction/CVS/Root b/gnu/testlet/javax/swing/AbstractAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/AbstractAction/MyAction.java b/gnu/testlet/javax/swing/AbstractAction/MyAction.java
new file mode 100644
index 00000000..f8e34025
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/MyAction.java
@@ -0,0 +1,58 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Icon;
+
+/**
+ * A custom action used for testing.
+ */
+public class MyAction extends AbstractAction {
+
+ public MyAction()
+ {
+ super();
+ }
+
+ public MyAction(String name)
+ {
+ super(name);
+ }
+
+ public MyAction(String name, Icon icon)
+ {
+ super(name, icon);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+
+ }
+
+ public Object clone() throws CloneNotSupportedException
+ {
+ return super.clone();
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/MyPropertyChangeListener.java b/gnu/testlet/javax/swing/AbstractAction/MyPropertyChangeListener.java
new file mode 100644
index 00000000..ec20effa
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/MyPropertyChangeListener.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+ /**
+ * A custom action used for testing.
+ */
+ public class MyPropertyChangeListener implements PropertyChangeListener
+ {
+
+ boolean change;
+
+ public MyPropertyChangeListener()
+ {
+ this.change = false;
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.change = true;
+ }
+
+ public boolean getChange()
+ {
+ return this.change;
+ }
+
+ public void setChange(boolean flag)
+ {
+ this.change = flag;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/clone.java b/gnu/testlet/javax/swing/AbstractAction/clone.java
new file mode 100644
index 00000000..00c015d0
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/clone.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.3
+// Uses: MyAction
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+
+ /**
+ * Checks that the clone() method works correctly.
+ */
+ public class clone implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyAction a1 = new MyAction("X");
+ MyAction a2 = null;
+ try
+ {
+ a2 = (MyAction) a1.clone();
+ }
+ catch (CloneNotSupportedException e)
+ {
+ harness.check(false);
+ }
+ harness.check(a1 != a2);
+ harness.check(a1.getClass().equals(a2.getClass()));
+ harness.check(a2.getValue(Action.NAME), "X");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/constructors.java b/gnu/testlet/javax/swing/AbstractAction/constructors.java
new file mode 100644
index 00000000..bd56fc98
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/constructors.java
@@ -0,0 +1,111 @@
+// Tags: JDK1.3
+// Uses: MyAction
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+
+/**
+ * Some tests for the constructors in the {@link AbstractAction} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("AbstractAction()");
+ MyAction a1 = new MyAction();
+ harness.check(a1.getValue(Action.ACCELERATOR_KEY), null);
+ harness.check(a1.getValue(Action.ACTION_COMMAND_KEY), null);
+ harness.check(a1.getValue(Action.DEFAULT), null);
+ harness.check(a1.getValue(Action.LONG_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.MNEMONIC_KEY), null);
+ harness.check(a1.getValue(Action.NAME), null);
+ harness.check(a1.getValue(Action.SHORT_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.SMALL_ICON), null);
+
+ harness.check(a1.isEnabled());
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("AbstractAction(String)");
+ MyAction a1 = new MyAction("MyAction");
+ harness.check(a1.getValue(Action.ACCELERATOR_KEY), null);
+ harness.check(a1.getValue(Action.ACTION_COMMAND_KEY), null);
+ harness.check(a1.getValue(Action.DEFAULT), null);
+ harness.check(a1.getValue(Action.LONG_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.MNEMONIC_KEY), null);
+ harness.check(a1.getValue(Action.NAME), "MyAction");
+ harness.check(a1.getValue(Action.SHORT_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.SMALL_ICON), null);
+
+ harness.check(a1.isEnabled());
+
+ MyAction a2 = new MyAction(null);
+ harness.check(a2.getValue(Action.NAME), null);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("AbstractAction(String, Icon)");
+ Icon icon = new ImageIcon();
+ MyAction a1 = new MyAction("MyAction", icon);
+ harness.check(a1.getValue(Action.ACCELERATOR_KEY), null);
+ harness.check(a1.getValue(Action.ACTION_COMMAND_KEY), null);
+ harness.check(a1.getValue(Action.DEFAULT), null);
+ harness.check(a1.getValue(Action.LONG_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.MNEMONIC_KEY), null);
+ harness.check(a1.getValue(Action.NAME), "MyAction");
+ harness.check(a1.getValue(Action.SHORT_DESCRIPTION), null);
+ harness.check(a1.getValue(Action.SMALL_ICON), icon);
+
+ harness.check(a1.isEnabled());
+
+ MyAction a2 = new MyAction(null, icon);
+ harness.check(a2.getValue(Action.NAME), null);
+ harness.check(a2.getValue(Action.SMALL_ICON), icon);
+
+ MyAction a3 = new MyAction("X", null);
+ harness.check(a3.getValue(Action.NAME), "X");
+ harness.check(a3.getValue(Action.SMALL_ICON), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/getValue.java b/gnu/testlet/javax/swing/AbstractAction/getValue.java
new file mode 100644
index 00000000..bad4ca6e
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/getValue.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.3
+// Uses: MyAction
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+
+/**
+ * Some tests for the getValue() method in the {@link AbstractAction} class.
+ */
+public class getValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyAction a1 = new MyAction();
+ a1.putValue(Action.NAME, "Name");
+ harness.check(a1.getValue(Action.NAME), "Name");
+ a1.putValue(Action.NAME, "Name2");
+ harness.check(a1.getValue(Action.NAME), "Name2");
+ a1.putValue(Action.NAME, null);
+ harness.check(a1.getValue(Action.NAME), null);
+
+ // try unrecognised key
+ harness.check(a1.getValue("XYZ"), null);
+ // try null key
+ harness.check(a1.getValue(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/putValue.java b/gnu/testlet/javax/swing/AbstractAction/putValue.java
new file mode 100644
index 00000000..a2c049d0
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/putValue.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.3
+// Uses: MyAction
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+
+/**
+ * Some tests for the putValue() method in the {@link AbstractAction} class.
+ */
+public class putValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyAction a1 = new MyAction();
+
+ a1.putValue(Action.NAME, "Name");
+ harness.check(a1.getValue(Action.NAME), "Name");
+ a1.putValue(Action.NAME, "Name2");
+ harness.check(a1.getValue(Action.NAME), "Name2");
+ a1.putValue(Action.NAME, null);
+ harness.check(a1.getValue(Action.NAME), null);
+
+ // try null key - it is not specified what happens here
+ // so we don't explicitly test this case.
+ /*
+ boolean pass = false;
+ try
+ {
+ a1.putValue(null, "XYZ");
+ Object value = a1.getValue(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractAction/setEnabled.java b/gnu/testlet/javax/swing/AbstractAction/setEnabled.java
new file mode 100644
index 00000000..7947c1f6
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractAction/setEnabled.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.3
+// Uses: MyAction MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.AbstractAction;
+
+ /**
+ * Some tests for the setEnabled() method in the {@link AbstractAction} class.
+ */
+ public class setEnabled implements Testlet
+ {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyPropertyChangeListener listener = new MyPropertyChangeListener();
+ MyAction a1 = new MyAction();
+ a1.addPropertyChangeListener(listener);
+ harness.check(a1.isEnabled());
+ harness.check(!listener.getChange());
+ a1.setEnabled(true); // no change
+ harness.check(!listener.getChange());
+ a1.setEnabled(false);
+ harness.check(listener.getChange());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/CVS/Entries b/gnu/testlet/javax/swing/AbstractButton/CVS/Entries
new file mode 100644
index 00000000..648f0fff
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/CVS/Entries
@@ -0,0 +1,13 @@
+/TestButton.java/1.1/Tue Oct 18 14:17:59 2005//
+/constructor.java/1.2/Fri Jul 15 12:50:42 2005//
+/createChangeListener.java/1.1/Tue Oct 18 14:17:59 2005//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:30 2005//
+/init.java/1.2/Tue Oct 18 14:17:59 2005//
+/setHorizontalAlignment.java/1.1/Fri Jul 7 16:22:41 2006//
+/setHorizontalTextPosition.java/1.1/Mon Jul 10 05:17:35 2006//
+/setRolloverEnabled.java/1.2/Tue Jan 31 14:58:08 2006//
+/setRolloverIcon.java/1.1/Fri Jul 7 15:39:27 2006//
+/setRolloverSelectedIcon.java/1.1/Fri Jul 7 15:39:27 2006//
+/setVerticalAlignment.java/1.1/Fri Jul 7 16:22:41 2006//
+/setVerticalTextPosition.java/1.1/Mon Jul 10 05:17:35 2006//
+D
diff --git a/gnu/testlet/javax/swing/AbstractButton/CVS/Repository b/gnu/testlet/javax/swing/AbstractButton/CVS/Repository
new file mode 100644
index 00000000..df2d33d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/AbstractButton
diff --git a/gnu/testlet/javax/swing/AbstractButton/CVS/Root b/gnu/testlet/javax/swing/AbstractButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/AbstractButton/TestButton.java b/gnu/testlet/javax/swing/AbstractButton/TestButton.java
new file mode 100644
index 00000000..f342cfa8
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/TestButton.java
@@ -0,0 +1,76 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.AbstractButton;
+
+import javax.swing.JButton;
+import javax.swing.event.ChangeListener;
+
+/**
+ * A subclass of {@link javax.swing.JButton} that enables to check if
+ * certain methods (like repaint() or revalidate()) are called correctly.
+ *
+ * Note: I override JButton here because that is the button that is closest to
+ * AbstractButton. Overriding AbstractButton for the test does not work easily
+ * on Sun's JDK, since they do some sanity checks here in private code that
+ * throws Exceptions.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+class TestButton extends JButton
+{
+ /**
+ * A flag indicating if repaint() has been called.
+ */
+ boolean repaintCalled;
+
+ /**
+ * A flag indicating if revalidate() has been called.
+ */
+ boolean revalidateCalled;
+
+ /**
+ * Performs the superclass repaint and sets the repaintCalled flag to true.
+ */
+ public void repaint()
+ {
+ repaintCalled = true;
+ super.repaint();
+ }
+
+ /**
+ * Performs the superclass revalidate and sets the revalidateCalled flag
+ * to true.
+ */
+ public void revalidate()
+ {
+ revalidateCalled = true;
+ super.revalidate();
+ }
+
+ /**
+ * Overridden to make public.
+ *
+ * @return the created change listener
+ */
+ public ChangeListener createChangeListener()
+ {
+ return super.createChangeListener();
+ }
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/constructor.java b/gnu/testlet/javax/swing/AbstractButton/constructor.java
new file mode 100644
index 00000000..0cdb5058
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/constructor.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.AbstractButton;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.AbstractButton;
+import javax.swing.ButtonModel;
+
+/**
+ * Checks if the AbstractButton constructor correctly initializes the
+ * properties of the AbstractButton.
+ */
+public class constructor implements Testlet
+{
+ // a concrete version of AbstractButton for testing purposes
+ class MyButton extends AbstractButton
+ {
+ }
+
+ public void test(TestHarness h)
+ {
+ MyButton b = new MyButton();
+ ButtonModel m = b.getModel();
+ h.check(m, null);
+ h.check(b.getText(), "");
+ }
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/createChangeListener.java b/gnu/testlet/javax/swing/AbstractButton/createChangeListener.java
new file mode 100644
index 00000000..b317a05d
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/createChangeListener.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+// Uses: TestButton
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.AbstractButton;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the ChangeListener returned by this method is supposed to
+ * trigger repaint and/or revalidate.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class createChangeListener implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestButton b = new TestButton();
+ ChangeListener l = b.createChangeListener();
+ b.repaintCalled = false;
+ b.revalidateCalled = false;
+ l.stateChanged(new ChangeEvent(b.getModel()));
+ harness.check(b.repaintCalled, true);
+ harness.check(b.revalidateCalled, false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/getActionCommand.java b/gnu/testlet/javax/swing/AbstractButton/getActionCommand.java
new file mode 100644
index 00000000..ab223835
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/getActionCommand.java
@@ -0,0 +1,70 @@
+//Tags: not-a-test
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+
+import javax.swing.AbstractButton;
+
+/**
+ * Base class which implements the check to proof conformance of the
+ * <code>getActionCommand</code> method of all <code>AbstractButton</code>
+ * descendents.
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand {
+
+ protected void check(AbstractButton ab, TestHarness harness) {
+ // The AbstractButton subclass instance should ...
+
+ // ... use the label by default (test assumes it is set to "bla")
+ harness.check(ab.getActionCommand(), "bla");
+
+ ab.setText("foo");
+ // ... change when the label changes
+ harness.check(ab.getActionCommand(), "foo");
+
+ ab.setText(null);
+ // ... return null if the label is null
+ harness.check(ab.getActionCommand(), null);
+
+ ab.setActionCommand("baz");
+ // return the ac as soon as it is set to a valid value
+ harness.check(ab.getActionCommand(), "baz");
+
+ ab.setText("bla");
+ // and stay independent of the label changes
+ harness.check(ab.getActionCommand(), "baz");
+
+ ab.setText(null);
+ // really
+ harness.check(ab.getActionCommand(), "baz");
+
+ ab.setActionCommand(null);
+ ab.setText("GNU");
+ // ... revert to default behavior when ac is unset
+ harness.check(ab.getActionCommand(), "GNU");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/init.java b/gnu/testlet/javax/swing/AbstractButton/init.java
new file mode 100644
index 00000000..76abdf9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/init.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.AbstractButton;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.AbstractButton;
+import javax.swing.Icon;
+
+/**
+ * Checks if the AbstractButton init() method correctly initializes the
+ * properties of the AbstractButton.
+ */
+public class init implements Testlet
+{
+ // a concrete version of AbstractButton for testing purposes
+ class MyButton extends AbstractButton
+ {
+ /**
+ * Made public for testing.
+ */
+ public void init(String s, Icon i) {
+ super.init(s, i);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ MyButton b = new MyButton();
+ b.init(null, null);
+ h.check(b.getText(), "", "AbstractButton.text is \"\" per default");
+ }
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setHorizontalAlignment.java b/gnu/testlet/javax/swing/AbstractButton/setHorizontalAlignment.java
new file mode 100644
index 00000000..b9503f09
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setHorizontalAlignment.java
@@ -0,0 +1,78 @@
+/* setHorizontalAlignment.java -- some checks for the setHorizontalAlignment()
+ method in the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+public class setHorizontalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ AbstractButton b = new JButton("ABC");
+ b.addPropertyChangeListener(this);
+ b.setHorizontalAlignment(SwingConstants.RIGHT);
+ harness.check(b.getHorizontalAlignment(), SwingConstants.RIGHT);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), b);
+ harness.check(e.getPropertyName(), "horizontalAlignment");
+ harness.check(e.getOldValue(), new Integer(SwingConstants.CENTER));
+ harness.check(e.getNewValue(), new Integer(SwingConstants.RIGHT));
+
+ // setting the same value should generate no event
+ events.clear();
+ b.setHorizontalAlignment(SwingConstants.RIGHT);
+ harness.check(events.size(), 0);
+
+ // try an illegal argument
+ boolean pass = false;
+ try
+ {
+ b.setHorizontalAlignment(SwingConstants.NORTH);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setHorizontalTextPosition.java b/gnu/testlet/javax/swing/AbstractButton/setHorizontalTextPosition.java
new file mode 100644
index 00000000..713e4280
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setHorizontalTextPosition.java
@@ -0,0 +1,79 @@
+/* setHorizontalTextPosition.java -- some checks for the
+ setHorizontalTextPosition() method in the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+public class setHorizontalTextPosition
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ AbstractButton b = new JButton("ABC");
+ b.addPropertyChangeListener(this);
+ b.setHorizontalTextPosition(SwingConstants.LEFT);
+ harness.check(b.getHorizontalTextPosition(), SwingConstants.LEFT);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), b);
+ harness.check(e.getPropertyName(), "horizontalTextPosition");
+ harness.check(e.getOldValue(), new Integer(SwingConstants.TRAILING));
+ harness.check(e.getNewValue(), new Integer(SwingConstants.LEFT));
+
+ // setting the same value should generate no event
+ events.clear();
+ b.setHorizontalTextPosition(SwingConstants.LEFT);
+ harness.check(events.size(), 0);
+
+ // try an illegal argument
+ boolean pass = false;
+ try
+ {
+ b.setHorizontalTextPosition(SwingConstants.NORTH);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setRolloverEnabled.java b/gnu/testlet/javax/swing/AbstractButton/setRolloverEnabled.java
new file mode 100644
index 00000000..0bec27c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setRolloverEnabled.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.AbstractButton;
+import javax.swing.JButton;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the setRolloverEnabled() method in the
+ * {@link AbstractButton} class.
+ */
+public class setRolloverEnabled
+ implements Testlet, PropertyChangeListener
+{
+ private PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ this.event = event;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // this test is theme-dependent
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ // ignore
+ }
+ AbstractButton b = new JButton("Test");
+ harness.check(b.isRolloverEnabled(), false);
+ b.addPropertyChangeListener(this);
+ b.setRolloverEnabled(true);
+ harness.check(b.isRolloverEnabled(), true);
+ harness.check(this.event.getPropertyName(), "rolloverEnabled");
+ harness.check(this.event.getSource(), b);
+ harness.check(this.event.getOldValue(), Boolean.FALSE);
+ harness.check(this.event.getNewValue(), Boolean.TRUE);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/AbstractButton/setRolloverIcon.java b/gnu/testlet/javax/swing/AbstractButton/setRolloverIcon.java
new file mode 100644
index 00000000..d38143d6
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setRolloverIcon.java
@@ -0,0 +1,96 @@
+/* setRolloverIcon.java -- some checks for the setRolloverIcon() method in
+ the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+public class setRolloverIcon implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+public void test(TestHarness harness)
+ {
+ Icon icon1 = MetalIconFactory.getFileChooserNewFolderIcon();
+ Icon icon2 = MetalIconFactory.getHorizontalSliderThumbIcon();
+ AbstractButton b = new JButton("123");
+ b.setRolloverEnabled(false);
+ b.addPropertyChangeListener(this);
+ b.setRolloverIcon(icon1);
+ harness.check(b.getRolloverIcon(), icon1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverIcon");
+ harness.check(e1.getOldValue(), null);
+ harness.check(e1.getNewValue(), icon1);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getSource(), b);
+ harness.check(e2.getPropertyName(), "rolloverEnabled");
+ harness.check(e2.getOldValue(), Boolean.FALSE);
+ harness.check(e2.getNewValue(), Boolean.TRUE);
+
+ // change the icon
+ events.clear();
+ b.setRolloverIcon(icon2);
+ harness.check(b.getRolloverIcon(), icon2);
+ harness.check(events.size(), 1);
+ e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverIcon");
+ harness.check(e1.getOldValue(), icon1);
+ harness.check(e1.getNewValue(), icon2);
+
+ // setting the same icon should generate no event
+ events.clear();
+ b.setRolloverIcon(icon2);
+ harness.check(events.size(), 0);
+
+ // set to null
+ b.setRolloverIcon(null);
+ harness.check(b.getRolloverIcon(), null);
+ harness.check(b.isRolloverEnabled(), true);
+ harness.check(events.size(), 1);
+ e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverIcon");
+ harness.check(e1.getOldValue(), icon2);
+ harness.check(e1.getNewValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setRolloverSelectedIcon.java b/gnu/testlet/javax/swing/AbstractButton/setRolloverSelectedIcon.java
new file mode 100644
index 00000000..c1d17895
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setRolloverSelectedIcon.java
@@ -0,0 +1,96 @@
+/* setRolloverSelectedIcon.java -- some checks for the
+ setRolloverSelectedIcon() method in the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+public class setRolloverSelectedIcon implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+public void test(TestHarness harness)
+ {
+ Icon icon1 = MetalIconFactory.getFileChooserNewFolderIcon();
+ Icon icon2 = MetalIconFactory.getHorizontalSliderThumbIcon();
+ AbstractButton b = new JButton("123");
+ b.setRolloverEnabled(false);
+ b.addPropertyChangeListener(this);
+ b.setRolloverSelectedIcon(icon1);
+ harness.check(b.getRolloverSelectedIcon(), icon1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverSelectedIcon");
+ harness.check(e1.getOldValue(), null);
+ harness.check(e1.getNewValue(), icon1);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getSource(), b);
+ harness.check(e2.getPropertyName(), "rolloverEnabled");
+ harness.check(e2.getOldValue(), Boolean.FALSE);
+ harness.check(e2.getNewValue(), Boolean.TRUE);
+
+ // change the icon
+ events.clear();
+ b.setRolloverSelectedIcon(icon2);
+ harness.check(b.getRolloverSelectedIcon(), icon2);
+ harness.check(events.size(), 1);
+ e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverSelectedIcon");
+ harness.check(e1.getOldValue(), icon1);
+ harness.check(e1.getNewValue(), icon2);
+
+ // setting the same icon should generate no event
+ events.clear();
+ b.setRolloverSelectedIcon(icon2);
+ harness.check(events.size(), 0);
+
+ // set to null
+ b.setRolloverSelectedIcon(null);
+ harness.check(b.getRolloverSelectedIcon(), null);
+ harness.check(b.isRolloverEnabled(), true);
+ harness.check(events.size(), 1);
+ e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getSource(), b);
+ harness.check(e1.getPropertyName(), "rolloverSelectedIcon");
+ harness.check(e1.getOldValue(), icon2);
+ harness.check(e1.getNewValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setVerticalAlignment.java b/gnu/testlet/javax/swing/AbstractButton/setVerticalAlignment.java
new file mode 100644
index 00000000..d44c2955
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setVerticalAlignment.java
@@ -0,0 +1,78 @@
+/* setVerticalAlignment.java -- some checks for the setVerticalAlignment()
+ method in the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+public class setVerticalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ AbstractButton b = new JButton("ABC");
+ b.addPropertyChangeListener(this);
+ b.setVerticalAlignment(SwingConstants.BOTTOM);
+ harness.check(b.getVerticalAlignment(), SwingConstants.BOTTOM);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), b);
+ harness.check(e.getPropertyName(), "verticalAlignment");
+ harness.check(e.getOldValue(), new Integer(SwingConstants.CENTER));
+ harness.check(e.getNewValue(), new Integer(SwingConstants.BOTTOM));
+
+ // setting the same value should generate no event
+ events.clear();
+ b.setVerticalAlignment(SwingConstants.BOTTOM);
+ harness.check(events.size(), 0);
+
+ // try an illegal argument
+ boolean pass = false;
+ try
+ {
+ b.setVerticalAlignment(SwingConstants.RIGHT);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/AbstractButton/setVerticalTextPosition.java b/gnu/testlet/javax/swing/AbstractButton/setVerticalTextPosition.java
new file mode 100644
index 00000000..65197a24
--- /dev/null
+++ b/gnu/testlet/javax/swing/AbstractButton/setVerticalTextPosition.java
@@ -0,0 +1,79 @@
+/* setVerticalTextPosition.java -- some checks for the
+ setVerticalTextPosition() method in the AbstractButton class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.AbstractButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+public class setVerticalTextPosition
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ AbstractButton b = new JButton("ABC");
+ b.addPropertyChangeListener(this);
+ b.setVerticalTextPosition(SwingConstants.TOP);
+ harness.check(b.getVerticalTextPosition(), SwingConstants.TOP);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), b);
+ harness.check(e.getPropertyName(), "verticalTextPosition");
+ harness.check(e.getOldValue(), new Integer(SwingConstants.CENTER));
+ harness.check(e.getNewValue(), new Integer(SwingConstants.TOP));
+
+ // setting the same value should generate no event
+ events.clear();
+ b.setVerticalTextPosition(SwingConstants.TOP);
+ harness.check(events.size(), 0);
+
+ // try an illegal argument
+ boolean pass = false;
+ try
+ {
+ b.setVerticalTextPosition(SwingConstants.LEFT);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/ActionMap/CVS/Entries b/gnu/testlet/javax/swing/ActionMap/CVS/Entries
new file mode 100644
index 00000000..ca1fe962
--- /dev/null
+++ b/gnu/testlet/javax/swing/ActionMap/CVS/Entries
@@ -0,0 +1,2 @@
+/newMapKeysNull.java/1.1/Mon Nov 14 19:56:23 2005//
+D
diff --git a/gnu/testlet/javax/swing/ActionMap/CVS/Repository b/gnu/testlet/javax/swing/ActionMap/CVS/Repository
new file mode 100644
index 00000000..4de2078f
--- /dev/null
+++ b/gnu/testlet/javax/swing/ActionMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/ActionMap
diff --git a/gnu/testlet/javax/swing/ActionMap/CVS/Root b/gnu/testlet/javax/swing/ActionMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/ActionMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/ActionMap/newMapKeysNull.java b/gnu/testlet/javax/swing/ActionMap/newMapKeysNull.java
new file mode 100644
index 00000000..7ac4c26d
--- /dev/null
+++ b/gnu/testlet/javax/swing/ActionMap/newMapKeysNull.java
@@ -0,0 +1,41 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.ActionMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.ActionMap;
+
+/**
+ * This tests whether keys() and allKeys() return null for new ActionMaps.
+ */
+public class newMapKeysNull implements Testlet {
+
+ public void test(TestHarness harness) {
+ ActionMap map = new ActionMap();
+ if (map.keys() != null)
+ harness.fail("New ActionMap should return null for keys()");
+ if (map.allKeys() != null)
+ harness.fail ("New ActionMap should return null for allKeys()");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/BoxLayout/CVS/Entries b/gnu/testlet/javax/swing/BoxLayout/CVS/Entries
new file mode 100644
index 00000000..6490c8ae
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/CVS/Entries
@@ -0,0 +1,16 @@
+/addLayoutComponent.java/1.1/Tue Sep 13 19:01:43 2005//
+/constants.java/1.1/Tue Sep 13 19:01:43 2005//
+/constructor.java/1.1/Tue Sep 13 19:01:43 2005//
+/getLayoutAlignmentX.java/1.1/Tue Sep 13 19:01:43 2005//
+/getLayoutAlignmentY.java/1.1/Tue Sep 13 19:01:43 2005//
+/horizontal2.java/1.1/Mon Apr 25 20:47:08 2005//
+/invalidateLayout.java/1.1/Tue Sep 13 19:01:43 2005//
+/layoutContainer.java/1.2/Fri Nov 4 11:04:52 2005//
+/maximumLayoutSize.java/1.1/Tue Sep 13 19:01:44 2005//
+/maximumLayoutSize2.java/1.1/Tue Dec 6 21:23:38 2005//
+/minimumLayoutSize.java/1.1/Tue Sep 13 19:01:44 2005//
+/preferredLayoutSize.java/1.1/Tue Sep 13 19:01:44 2005//
+/removeLayoutComponent.java/1.1/Tue Sep 13 19:01:44 2005//
+/simplehorizontal.java/1.2/Thu Jun 15 18:02:06 2006//
+/simplevertical.java/1.1/Mon Apr 25 20:47:08 2005//
+D
diff --git a/gnu/testlet/javax/swing/BoxLayout/CVS/Repository b/gnu/testlet/javax/swing/BoxLayout/CVS/Repository
new file mode 100644
index 00000000..1cfa0cf0
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/BoxLayout
diff --git a/gnu/testlet/javax/swing/BoxLayout/CVS/Root b/gnu/testlet/javax/swing/BoxLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/BoxLayout/addLayoutComponent.java b/gnu/testlet/javax/swing/BoxLayout/addLayoutComponent.java
new file mode 100644
index 00000000..34e61209
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/addLayoutComponent.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the addLayoutComponent methods in the {@link BoxLayout}
+ * class.
+ */
+public class addLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Component, Object)");
+ // the addLayoutComponent() method is not used so nothing here should
+ // fail
+ BoxLayout layout = new BoxLayout(new JPanel(), BoxLayout.X_AXIS);
+ layout.addLayoutComponent(new JPanel(), "XYZ");
+ layout.addLayoutComponent((Component) null, (Object) null);
+ harness.check(true);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, Component)");
+ // the addLayoutComponent() method is not used so nothing here should
+ // fail
+ BoxLayout layout = new BoxLayout(new JPanel(), BoxLayout.X_AXIS);
+ layout.addLayoutComponent("Name", new JButton("Test"));
+ layout.addLayoutComponent((String) null, (JComponent) null);
+ harness.check(true);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/constants.java b/gnu/testlet/javax/swing/BoxLayout/constants.java
new file mode 100644
index 00000000..cd505a05
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/constants.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.BoxLayout;
+
+/**
+ * Some checks for the constants defined in the {@link BoxLayout} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(BoxLayout.LINE_AXIS, 2);
+ harness.check(BoxLayout.PAGE_AXIS, 3);
+ harness.check(BoxLayout.X_AXIS, 0);
+ harness.check(BoxLayout.Y_AXIS, 1);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/constructor.java b/gnu/testlet/javax/swing/BoxLayout/constructor.java
new file mode 100644
index 00000000..0fa76f4a
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/constructor.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the constructor in the {@link BoxLayout} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // a null container is accepted by the constructor but the resulting
+ // layout is useless...
+ BoxLayout layout = new BoxLayout(null, BoxLayout.X_AXIS);
+ harness.check(layout != null);
+
+ // try an invalid axis type
+ boolean pass = false;
+ try
+ {
+ layout = new BoxLayout(new JPanel(), 99);
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentX.java b/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentX.java
new file mode 100644
index 00000000..20871eba
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentX.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the getLayoutAlignmentX() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class getLayoutAlignmentX implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ /*float result =*/ layout.getLayoutAlignmentX(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentY.java b/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentY.java
new file mode 100644
index 00000000..4589d25a
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/getLayoutAlignmentY.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the getLayoutAlignmentY() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class getLayoutAlignmentY implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ /*float result =*/ layout.getLayoutAlignmentY(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/horizontal2.java b/gnu/testlet/javax/swing/BoxLayout/horizontal2.java
new file mode 100644
index 00000000..97eaa6f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/horizontal2.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.BoxLayout;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.BoxLayout;
+import javax.swing.JComponent;
+
+/**
+ * Checks how space is distributed between components with different
+ * preferred sizes.
+ *
+ * @author Roman Kennke
+ */
+public class horizontal2 implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JComponent comp = new JComponent(){};
+ BoxLayout layout = new BoxLayout(comp, BoxLayout.X_AXIS);
+
+ // add two components should equally share the available space between
+ // them
+ JComponent c1 = new JComponent(){};
+ c1.setPreferredSize(new Dimension(50, 400));
+ JComponent c2 = new JComponent(){};
+ c2.setPreferredSize(new Dimension(150, 200));
+
+ comp.add(c1);
+ comp.add(c2);
+
+ comp.setSize(400, 400);
+ layout.layoutContainer(comp);
+
+ Rectangle b1 = c1.getBounds();
+ Rectangle b2 = c2.getBounds();
+ h.check(b1.x, 0, String.valueOf(b1.x));
+ h.check(b1.y, 0, String.valueOf(b1.y));
+ h.check(b1.width, 150, String.valueOf(b1.width));
+ h.check(b1.height, 400, String.valueOf(b1.height));
+ h.check(b2.x, 150, String.valueOf(b2.x));
+ h.check(b2.y, 0, String.valueOf(b2.y));
+ h.check(b2.width, 249, String.valueOf(b2.width));
+ h.check(b2.height, 400, String.valueOf(b2.height));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/BoxLayout/invalidateLayout.java b/gnu/testlet/javax/swing/BoxLayout/invalidateLayout.java
new file mode 100644
index 00000000..ac820f60
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/invalidateLayout.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the invalidateLayout() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class invalidateLayout implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ layout.invalidateLayout(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/layoutContainer.java b/gnu/testlet/javax/swing/BoxLayout/layoutContainer.java
new file mode 100644
index 00000000..1f3eda93
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/layoutContainer.java
@@ -0,0 +1,206 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.BoxLayout;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the layoutContainer() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testXAxis(harness);
+ testYAxis(harness);
+ testLineAxis(harness);
+ testPageAxis(harness);
+ testOriginalContainer(harness);
+ testOverflowCase(harness);
+ }
+
+ private void testXAxis(TestHarness harness)
+ {
+ harness.checkPoint("testXAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 11, 200));
+ harness.check(p2.getBounds(), new Rectangle(11, 0, 33, 200));
+ harness.check(p3.getBounds(), new Rectangle(44, 0, 55, 200));
+ }
+
+ private void testYAxis(TestHarness harness)
+ {
+ harness.checkPoint("testYAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 44));
+ harness.check(p2.getBounds(), new Rectangle(0, 44, 100, 66));
+ harness.check(p3.getBounds(), new Rectangle(0, 110, 100, 88));
+ }
+
+ private void testLineAxis(TestHarness harness)
+ {
+ harness.checkPoint("testLineAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ container.setLayout(new BoxLayout(container, BoxLayout.LINE_AXIS));
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 11, 200));
+ harness.check(p2.getBounds(), new Rectangle(11, 0, 33, 200));
+ harness.check(p3.getBounds(), new Rectangle(44, 0, 55, 200));
+ }
+
+ private void testPageAxis(TestHarness harness)
+ {
+ harness.checkPoint("testPageAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(p1.getBounds(), new Rectangle(0, 0, 100, 44));
+ harness.check(p2.getBounds(), new Rectangle(0, 44, 100, 66));
+ harness.check(p3.getBounds(), new Rectangle(0, 110, 100, 88));
+ }
+
+ private void testOriginalContainer(TestHarness harness)
+ {
+ harness.checkPoint("testOriginalContainer");
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ layout.layoutContainer(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * This tests a case where we have 3 components with max values of
+ * Integer.MAX_VALUE. This test is derived from an actual bug.
+ *
+ * @param harness the test harness to use
+ */
+ private void testOverflowCase(TestHarness harness)
+ {
+ harness.checkPoint("overflowCase");
+ JComponent c1 = new JComponent(){};
+ c1.setMinimumSize(new Dimension(4, 4));
+ c1.setPreferredSize(new Dimension(49, 11));
+ c1.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ JComponent c2 = new JComponent(){};
+ c2.setMinimumSize(new Dimension(4, 4));
+ c2.setPreferredSize(new Dimension(49, 11));
+ c2.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ JComponent c3 = new JComponent(){};
+ c3.setMinimumSize(new Dimension(4, 4));
+ c3.setPreferredSize(new Dimension(49, 11));
+ c3.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ Container c = new Container();
+ BoxLayout l = new BoxLayout(c, BoxLayout.X_AXIS);
+ c.setLayout(l);
+ c.add(c1);
+ c.add(c2);
+ c.add(c3);
+ c.setSize(670, 46);
+ l.invalidateLayout(c);
+ l.layoutContainer(c);
+ harness.check(c1.getX(), 0);
+ harness.check(c1.getY(), 0);
+ harness.check(c1.getWidth(), 223);
+ harness.check(c1.getHeight(), 46);
+ harness.check(c2.getX(), 223);
+ harness.check(c2.getY(), 0);
+ harness.check(c2.getWidth(), 223);
+ harness.check(c2.getHeight(), 46);
+ harness.check(c3.getX(), 446);
+ harness.check(c3.getY(), 0);
+ harness.check(c3.getWidth(), 223);
+ harness.check(c3.getHeight(), 46);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize.java b/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize.java
new file mode 100644
index 00000000..752a8c2f
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize.java
@@ -0,0 +1,157 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the maximumLayoutSize() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class maximumLayoutSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasic(harness);
+ testXAxis(harness);
+ testYAxis(harness);
+ testLineAxis(harness);
+ testPageAxis(harness);
+ }
+
+ private void testBasic(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+ harness.check(layout.maximumLayoutSize(container), new Dimension(0, 0));
+ container.setBorder(BorderFactory.createEmptyBorder(1, 2, 3, 4));
+ harness.check(layout.maximumLayoutSize(container), new Dimension(6, 4));
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ /*Dimension result =*/ layout.maximumLayoutSize(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testXAxis(TestHarness harness)
+ {
+ harness.checkPoint("testXAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ harness.check(layout.maximumLayoutSize(container), new Dimension(98301, 32767));
+ }
+
+ private void testYAxis(TestHarness harness)
+ {
+ harness.checkPoint("testYAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.maximumLayoutSize(container), new Dimension(32767, 98301));
+ }
+
+ private void testLineAxis(TestHarness harness)
+ {
+ harness.checkPoint("testLineAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.LINE_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.maximumLayoutSize(container), new Dimension(98301, 32767));
+ }
+
+ private void testPageAxis(TestHarness harness)
+ {
+ harness.checkPoint("testPageAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.PAGE_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.maximumLayoutSize(container), new Dimension(32767, 98301));
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize2.java b/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize2.java
new file mode 100644
index 00000000..445aadfb
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/maximumLayoutSize2.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.LayoutManager2;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+/**
+ * Some checks for the maximumLayoutSize() method in the
+ * {@link BorderLayout} class.
+ */
+public class maximumLayoutSize2 implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JTextField ftf = new JTextField("HELLO WORLD");
+ JPanel borderPanel = new JPanel();
+ borderPanel.setLayout(new BoxLayout(borderPanel, BoxLayout.Y_AXIS));
+ borderPanel.add(ftf);
+ LayoutManager2 lm = (LayoutManager2) borderPanel.getLayout();
+ Dimension max = new Dimension (Integer.MAX_VALUE, Integer.MAX_VALUE);
+
+ harness.check (lm.maximumLayoutSize(borderPanel), max);
+ borderPanel.setBorder(new javax.swing.border.TitledBorder("HELLO WORLD"));
+ harness.check (lm.maximumLayoutSize(borderPanel), max);
+ }
+}
diff --git a/gnu/testlet/javax/swing/BoxLayout/minimumLayoutSize.java b/gnu/testlet/javax/swing/BoxLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..7d046e3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/minimumLayoutSize.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the minimumLayoutSize() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class minimumLayoutSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+ harness.check(layout.minimumLayoutSize(container), new Dimension(0, 0));
+ container.setBorder(BorderFactory.createEmptyBorder(1, 2, 3, 4));
+ harness.check(layout.minimumLayoutSize(container), new Dimension(6, 4));
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ /*Dimension result =*/ layout.minimumLayoutSize(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/preferredLayoutSize.java b/gnu/testlet/javax/swing/BoxLayout/preferredLayoutSize.java
new file mode 100644
index 00000000..108b7d09
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/preferredLayoutSize.java
@@ -0,0 +1,175 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+import javax.swing.JSeparator;
+
+/**
+ * Some checks for the preferredLayoutSize() method defined in the
+ * {@link BoxLayout} class.
+ */
+public class preferredLayoutSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasic(harness);
+ testXAxis(harness);
+ testYAxis(harness);
+ testLineAxis(harness);
+ testPageAxis(harness);
+ testJSeparator(harness);
+ }
+
+ private void testBasic(TestHarness harness)
+ {
+ JPanel container = new JPanel();
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+ harness.check(layout.preferredLayoutSize(container), new Dimension(0, 0));
+ container.setBorder(BorderFactory.createEmptyBorder(1, 2, 3, 4));
+ harness.check(layout.preferredLayoutSize(container), new Dimension(6, 4));
+
+ // must call with original container
+ boolean pass = false;
+ try
+ {
+ /*Dimension result =*/ layout.preferredLayoutSize(new JPanel());
+ }
+ catch (AWTError e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testXAxis(TestHarness harness)
+ {
+ harness.checkPoint("testXAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.X_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ harness.check(layout.preferredLayoutSize(container), new Dimension(99, 66));
+ }
+
+ private void testYAxis(TestHarness harness)
+ {
+ harness.checkPoint("testYAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.preferredLayoutSize(container), new Dimension(55, 132));
+ }
+
+ private void testLineAxis(TestHarness harness)
+ {
+ harness.checkPoint("testLineAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.LINE_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.preferredLayoutSize(container), new Dimension(99, 66));
+ }
+
+ private void testPageAxis(TestHarness harness)
+ {
+ harness.checkPoint("testPageAxis");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.PAGE_AXIS);
+ container.setLayout(layout);
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ p1.setPreferredSize(new Dimension(11, 22));
+ p2.setPreferredSize(new Dimension(33, 44));
+ p3.setPreferredSize(new Dimension(55, 66));
+ container.add(p1);
+ container.add(p2);
+ container.add(p3);
+ container.doLayout();
+ harness.check(layout.preferredLayoutSize(container), new Dimension(55, 132));
+ }
+
+ private void testJSeparator(TestHarness harness)
+ {
+ harness.checkPoint("testJSeparator");
+ JPanel container = new JPanel();
+ container.setSize(100, 200);
+ BoxLayout layout = new BoxLayout(container, BoxLayout.Y_AXIS);
+ container.setLayout(layout);
+ JSeparator s1 = new JSeparator();
+ container.add(s1);
+ container.doLayout();
+ harness.check(layout.preferredLayoutSize(container), new Dimension(0, 2));
+ }
+
+
+}
+
+
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/removeLayoutComponent.java b/gnu/testlet/javax/swing/BoxLayout/removeLayoutComponent.java
new file mode 100644
index 00000000..eaa7ef73
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/removeLayoutComponent.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.BoxLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the removeLayoutComponent methods in the {@link BoxLayout}
+ * class.
+ */
+public class removeLayoutComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // the removeLayoutComponent() method is not used so nothing here should
+ // fail
+ try
+ {
+ BoxLayout layout = new BoxLayout(new JPanel(), BoxLayout.X_AXIS);
+ layout.removeLayoutComponent(new JPanel());
+ layout.removeLayoutComponent((Component) null);
+ harness.check(true);
+ }
+ catch (Throwable e)
+ {
+ harness.check(false);
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/BoxLayout/simplehorizontal.java b/gnu/testlet/javax/swing/BoxLayout/simplehorizontal.java
new file mode 100644
index 00000000..ebbfc48a
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/simplehorizontal.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.BoxLayout;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Rectangle;
+
+import javax.swing.BoxLayout;
+import javax.swing.JComponent;
+
+/**
+ * Some simple checks for BoxLayout.
+ *
+ * @author Roman Kennke
+ */
+public class simplehorizontal implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JComponent comp = new JComponent(){};
+ BoxLayout layout = new BoxLayout(comp, BoxLayout.X_AXIS);
+
+ // add two components should equally share the available space between
+ // them
+ JComponent c1 = new JComponent(){};
+ JComponent c2 = new JComponent(){};
+ comp.add(c1);
+ comp.add(c2);
+
+ comp.setSize(400, 400);
+ layout.layoutContainer(comp);
+
+ Rectangle b1 = c1.getBounds();
+ Rectangle b2 = c2.getBounds();
+ h.check(b1.x, 0, String.valueOf(b1.x));
+ h.check(b1.y, 0, String.valueOf(b1.y));
+ h.check(b1.width, 200, String.valueOf(b1.width));
+ h.check(b1.height, 400, String.valueOf(b1.height));
+ h.check(b2.x, 200, String.valueOf(b2.x));
+ h.check(b2.y, 0, String.valueOf(b2.y));
+ h.check(b2.width, 200, String.valueOf(b2.width));
+ h.check(b2.height, 400, String.valueOf(b2.height));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/BoxLayout/simplevertical.java b/gnu/testlet/javax/swing/BoxLayout/simplevertical.java
new file mode 100644
index 00000000..bce7291f
--- /dev/null
+++ b/gnu/testlet/javax/swing/BoxLayout/simplevertical.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.BoxLayout;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Rectangle;
+
+import javax.swing.BoxLayout;
+import javax.swing.JComponent;
+
+/**
+ * Some simple checks for BoxLayout.
+ *
+ * @author Roman Kennke
+ */
+public class simplevertical implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JComponent comp = new JComponent(){};
+ BoxLayout layout = new BoxLayout(comp, BoxLayout.Y_AXIS);
+
+ // add two components should equally share the available space between
+ // them
+ JComponent c1 = new JComponent(){};
+ JComponent c2 = new JComponent(){};
+ comp.add(c1);
+ comp.add(c2);
+
+ comp.setSize(400, 400);
+ layout.layoutContainer(comp);
+
+ Rectangle b1 = c1.getBounds();
+ Rectangle b2 = c2.getBounds();
+ h.check(b1.x, 0, String.valueOf(b1.x));
+ h.check(b1.y, 0, String.valueOf(b1.y));
+ h.check(b1.width, 400, String.valueOf(b1.width));
+ h.check(b1.height, 200, String.valueOf(b1.height));
+ h.check(b2.x, 0, String.valueOf(b1.x));
+ h.check(b2.y, 200, String.valueOf(b1.y));
+ h.check(b2.width, 400, String.valueOf(b1.width));
+ h.check(b2.height, 200, String.valueOf(b1.height));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/CVS/Entries b/gnu/testlet/javax/swing/ButtonGroup/CVS/Entries
new file mode 100644
index 00000000..50c49cb8
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/CVS/Entries
@@ -0,0 +1,9 @@
+/add.java/1.1/Tue Jul 11 14:40:01 2006//
+/constructor.java/1.1/Tue Jul 11 14:40:01 2006//
+/getButtonCount.java/1.1/Tue Jul 11 14:40:01 2006//
+/getElements.java/1.1/Tue Jul 11 14:40:01 2006//
+/getSelection.java/1.1/Tue Jul 11 14:40:01 2006//
+/isSelected.java/1.1/Tue Jul 11 14:40:01 2006//
+/remove.java/1.1/Tue Jul 11 14:40:01 2006//
+/setSelected.java/1.1/Tue Jul 11 14:40:01 2006//
+D
diff --git a/gnu/testlet/javax/swing/ButtonGroup/CVS/Repository b/gnu/testlet/javax/swing/ButtonGroup/CVS/Repository
new file mode 100644
index 00000000..df3f9131
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/ButtonGroup
diff --git a/gnu/testlet/javax/swing/ButtonGroup/CVS/Root b/gnu/testlet/javax/swing/ButtonGroup/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/ButtonGroup/add.java b/gnu/testlet/javax/swing/ButtonGroup/add.java
new file mode 100644
index 00000000..0519089b
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/add.java
@@ -0,0 +1,69 @@
+/* add.java -- some checks for the add() method in the ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultButtonModel;
+import javax.swing.JToggleButton;
+
+public class add implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+
+ // add a button that is not selected
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ harness.check(g.getButtonCount(), 1);
+ harness.check(g.getSelection(), null);
+ harness.check(((DefaultButtonModel) b1.getModel()).getGroup(), g);
+
+ // add a button that is selected
+ JToggleButton b2 = new JToggleButton("B2");
+ b2.setSelected(true);
+ g.add(b2);
+ harness.check(g.getButtonCount(), 2);
+ harness.check(g.getSelection(), b2.getModel());
+ harness.check(((DefaultButtonModel) b2.getModel()).getGroup(), g);
+
+ // add another button that is selected
+ JToggleButton b3 = new JToggleButton("B2");
+ b3.setSelected(true);
+ g.add(b3);
+ harness.check(g.getButtonCount(), 3);
+ harness.check(g.getSelection(), b2.getModel());
+ harness.check(b2.isSelected(), true);
+ harness.check(b3.isSelected(), false);
+ harness.check(((DefaultButtonModel) b3.getModel()).getGroup(), g);
+
+ // try null
+ g.add(null);
+ harness.check(g.getButtonCount(), 3);
+ harness.check(g.getSelection(), b2.getModel());
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/constructor.java b/gnu/testlet/javax/swing/ButtonGroup/constructor.java
new file mode 100644
index 00000000..1fbefc9e
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/constructor.java
@@ -0,0 +1,39 @@
+/* constructor.java -- some checks for the constructor in the ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup bg = new ButtonGroup();
+ harness.check(bg.getButtonCount(), 0);
+ harness.check(bg.getSelection(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/getButtonCount.java b/gnu/testlet/javax/swing/ButtonGroup/getButtonCount.java
new file mode 100644
index 00000000..dd933086
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/getButtonCount.java
@@ -0,0 +1,50 @@
+/* getButtonCount.java -- some checks for the getButtonCount() method in the
+ ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JToggleButton;
+
+public class getButtonCount implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+ harness.check(g.getButtonCount(), 0);
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ harness.check(g.getButtonCount(), 1);
+ JToggleButton b2 = new JToggleButton("B2");
+ g.add(b2);
+ harness.check(g.getButtonCount(), 2);
+ g.remove(b2);
+ harness.check(g.getButtonCount(), 1);
+ g.remove(b1);
+ harness.check(g.getButtonCount(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/getElements.java b/gnu/testlet/javax/swing/ButtonGroup/getElements.java
new file mode 100644
index 00000000..f0ab041c
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/getElements.java
@@ -0,0 +1,56 @@
+/* getElements.java -- some checks for the getElements() method in the
+ ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JToggleButton;
+
+public class getElements implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+ Enumeration e = g.getElements();
+ harness.check(e.hasMoreElements(), false);
+
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ e = g.getElements();
+ harness.check(e.nextElement(), b1);
+ harness.check(e.hasMoreElements(), false);
+
+ JToggleButton b2 = new JToggleButton("B2");
+ g.add(b2);
+ e = g.getElements();
+ harness.check(e.nextElement(), b1);
+ harness.check(e.nextElement(), b2);
+ harness.check(e.hasMoreElements(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/getSelection.java b/gnu/testlet/javax/swing/ButtonGroup/getSelection.java
new file mode 100644
index 00000000..31396810
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/getSelection.java
@@ -0,0 +1,47 @@
+/* getSelection.java -- some checks for the getSelection() method in the
+ ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JToggleButton;
+
+public class getSelection implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+ harness.check(g.getSelection(), null);
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ harness.check(g.getSelection(), null);
+ JToggleButton b2 = new JToggleButton("B2");
+ b2.setSelected(true);
+ g.add(b2);
+ harness.check(g.getSelection(), b2.getModel());
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/isSelected.java b/gnu/testlet/javax/swing/ButtonGroup/isSelected.java
new file mode 100644
index 00000000..6e8f25ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/isSelected.java
@@ -0,0 +1,56 @@
+/* isSelected.java -- some checks for the isSelected() method in the
+ ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JD1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultButtonModel;
+import javax.swing.JToggleButton;
+
+public class isSelected implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+ harness.check(g.isSelected(new DefaultButtonModel()), false);
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ harness.check(g.isSelected(b1.getModel()), false);
+ b1.getModel().setSelected(true);
+ harness.check(g.isSelected(b1.getModel()), true);
+ JToggleButton b2 = new JToggleButton("B2");
+ b2.setSelected(true);
+ g.add(b2);
+ harness.check(g.isSelected(b2.getModel()), false);
+ b2.getModel().setSelected(true);
+ harness.check(g.isSelected(b1.getModel()), false);
+ harness.check(g.isSelected(b2.getModel()), true);
+
+ // try null
+ harness.check(g.isSelected(null), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/remove.java b/gnu/testlet/javax/swing/ButtonGroup/remove.java
new file mode 100644
index 00000000..3fab5bd2
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/remove.java
@@ -0,0 +1,61 @@
+/* remove.java -- some checks for the remove() method in the ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultButtonModel;
+import javax.swing.JToggleButton;
+
+public class remove implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ButtonGroup g = new ButtonGroup();
+
+ // add a button that is not selected
+ JToggleButton b1 = new JToggleButton("B1");
+ g.add(b1);
+ g.remove(b1);
+ harness.check(g.getButtonCount(), 0);
+ harness.check(g.getSelection(), null);
+ harness.check(((DefaultButtonModel) b1.getModel()).getGroup(), null);
+
+ g.add(b1);
+ JToggleButton b2 = new JToggleButton("B2");
+ b2.setSelected(true);
+ g.add(b2);
+ g.remove(b2);
+ harness.check(g.getButtonCount(), 1);
+ harness.check(g.getSelection(), null);
+ harness.check(((DefaultButtonModel) b2.getModel()).getGroup(), null);
+
+ // try null
+ g.remove(null);
+ harness.check(g.getButtonCount(), 1);
+ harness.check(g.getSelection(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ButtonGroup/setSelected.java b/gnu/testlet/javax/swing/ButtonGroup/setSelected.java
new file mode 100644
index 00000000..fd0e4ac3
--- /dev/null
+++ b/gnu/testlet/javax/swing/ButtonGroup/setSelected.java
@@ -0,0 +1,102 @@
+/* setSelected.java -- some checks for the setSelected() method in the
+ ButtonGroup class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.ButtonGroup;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ButtonModel;
+import javax.swing.JToggleButton;
+
+public class setSelected implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+
+ ButtonGroup g1 = new ButtonGroup();
+ JToggleButton b1 = new JToggleButton("B1");
+ ButtonModel m1 = b1.getModel();
+ g1.add(b1);
+ harness.check(m1.isSelected(), false);
+ g1.setSelected(m1, false);
+ harness.check(b1.isSelected(), false);
+ harness.check(g1.isSelected(m1), false);
+ harness.check(g1.getSelection(), null);
+
+ ButtonGroup g2 = new ButtonGroup();
+ JToggleButton b2 = new JToggleButton("B2");
+ ButtonModel m2 = b2.getModel();
+ g2.add(b2);
+ harness.check(m2.isSelected(), false);
+ g2.setSelected(m2, true);
+ harness.check(b2.isSelected(), true);
+ harness.check(g2.isSelected(m2), true);
+ harness.check(g2.getSelection(), m2);
+
+ ButtonGroup g3 = new ButtonGroup();
+ JToggleButton b3 = new JToggleButton("B3");
+ b3.setSelected(true);
+ ButtonModel m3 = b3.getModel();
+ g3.add(b3);
+ harness.check(m3.isSelected(), true);
+ g3.setSelected(m3, false);
+ harness.check(b3.isSelected(), true);
+ harness.check(g3.isSelected(m3), true);
+ harness.check(g3.getSelection(), m3);
+
+ ButtonGroup g4 = new ButtonGroup();
+ JToggleButton b4 = new JToggleButton("B4");
+ b4.setSelected(true);
+ ButtonModel m4 = b4.getModel();
+ g4.add(b4);
+ harness.check(m4.isSelected(), true);
+ g4.setSelected(m4, false);
+ harness.check(b4.isSelected(), true);
+ harness.check(g4.isSelected(m4), true);
+ harness.check(g4.getSelection(), m4);
+
+ // now work with a second button...
+ JToggleButton b5 = new JToggleButton("B5");
+ ButtonModel m5 = b5.getModel();
+ g4.add(b5);
+ harness.check(g4.isSelected(m5), false);
+ // the following does nothing, because 'false' says we don't change the
+ // state of the incoming model...
+ g4.setSelected(m5, false);
+ harness.check(b4.isSelected(), true);
+ harness.check(g4.isSelected(m4), true);
+ harness.check(g4.getSelection(), m4);
+
+ // whereas this changes the selection...
+ g4.setSelected(m5, true);
+ harness.check(b4.isSelected(), false);
+ harness.check(b5.isSelected(), true);
+ harness.check(g4.isSelected(m4), false);
+ harness.check(g4.isSelected(m5), true);
+ harness.check(g4.getSelection(), m5);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/CVS/Entries b/gnu/testlet/javax/swing/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/CVS/Entries.Log b/gnu/testlet/javax/swing/CVS/Entries.Log
new file mode 100644
index 00000000..b0cda157
--- /dev/null
+++ b/gnu/testlet/javax/swing/CVS/Entries.Log
@@ -0,0 +1,78 @@
+A D/AbstractAction////
+A D/AbstractButton////
+A D/ActionMap////
+A D/BoxLayout////
+A D/ButtonGroup////
+A D/DefaultBoundedRangeModel////
+A D/DefaultButtonModel////
+A D/DefaultComboBoxModel////
+A D/DefaultListCellRenderer////
+A D/DefaultListModel////
+A D/DefaultListSelectionModel////
+A D/InputMap////
+A D/JApplet////
+A D/JButton////
+A D/JCheckBox////
+A D/JCheckBoxMenuItem////
+A D/JComboBox////
+A D/JComponent////
+A D/JDesktopPane////
+A D/JDialog////
+A D/JEditorPane////
+A D/JFileChooser////
+A D/JFormattedTextField////
+A D/JFrame////
+A D/JInternalFrame////
+A D/JLabel////
+A D/JLayeredPane////
+A D/JList////
+A D/JMenu////
+A D/JMenuBar////
+A D/JMenuItem////
+A D/JOptionPane////
+A D/JPanel////
+A D/JPopupMenu////
+A D/JProgressBar////
+A D/JRadioButton////
+A D/JRadioButtonMenuItem////
+A D/JRootPane////
+A D/JScrollBar////
+A D/JScrollPane////
+A D/JSlider////
+A D/JSpinner////
+A D/JSplitPane////
+A D/JTabbedPane////
+A D/JTable////
+A D/JTableHeader////
+A D/JTextArea////
+A D/JTextField////
+A D/JToggleButton////
+A D/JToolBar////
+A D/JToolTip////
+A D/JTree////
+A D/JViewport////
+A D/JWindow////
+A D/KeyStroke////
+A D/OverlayLayout////
+A D/RepaintManager////
+A D/ScrollPaneLayout////
+A D/SizeRequirements////
+A D/SizeSequence////
+A D/SpinnerDateModel////
+A D/SpinnerListModel////
+A D/SpinnerNumberModel////
+A D/SwingUtilities////
+A D/Timer////
+A D/ToolTipManager////
+A D/TransferHandler////
+A D/UIDefaults////
+A D/UIManager////
+A D/ViewportLayout////
+A D/border////
+A D/event////
+A D/filechooser////
+A D/plaf////
+A D/table////
+A D/text////
+A D/tree////
+A D/undo////
diff --git a/gnu/testlet/javax/swing/CVS/Repository b/gnu/testlet/javax/swing/CVS/Repository
new file mode 100644
index 00000000..080ba5d1
--- /dev/null
+++ b/gnu/testlet/javax/swing/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing
diff --git a/gnu/testlet/javax/swing/CVS/Root b/gnu/testlet/javax/swing/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Entries b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Entries
new file mode 100644
index 00000000..188732df
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Entries
@@ -0,0 +1,16 @@
+/general.java/1.1/Tue Jul 11 15:13:45 2006//
+/getChangeListeners.java/1.1/Tue Jan 6 14:36:47 2004//
+/getExtent.java/1.1/Tue Jan 6 14:36:47 2004//
+/getMaximum.java/1.1/Tue Jan 6 14:36:47 2004//
+/getMinimum.java/1.1/Tue Jan 6 14:36:47 2004//
+/getValue.java/1.1/Tue Jan 6 14:36:47 2004//
+/getValueIsAdjusting.java/1.1/Tue Jan 6 14:36:47 2004//
+/serialization.java/1.1/Tue Jul 11 15:13:45 2006//
+/setExtent.java/1.2/Wed Jan 7 12:39:55 2004//
+/setMaximum.java/1.2/Wed Jan 7 12:39:55 2004//
+/setMinimum.java/1.2/Wed Jan 7 12:39:55 2004//
+/setRangeProperties.java/1.1/Tue Jan 6 14:36:47 2004//
+/setValue.java/1.2/Wed Jan 7 12:39:55 2004//
+/setValueIsAdjusting.java/1.1/Tue Jan 6 14:36:47 2004//
+/toString.java/1.1/Tue Jan 6 14:36:47 2004//
+D
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Repository b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Repository
new file mode 100644
index 00000000..2022c5e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultBoundedRangeModel
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Root b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/general.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/general.java
new file mode 100644
index 00000000..2aec5025
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/general.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+// Uses: setRangeProperties
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.toString
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class general
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ javax.swing.DefaultBoundedRangeModel dbrm;
+ Throwable caught;
+
+ // Check #1.
+ dbrm = new javax.swing.DefaultBoundedRangeModel();
+ setRangeProperties.check(harness, dbrm, 0, 0, 0, 100, false);
+
+ // Check #2.
+ dbrm = new javax.swing.DefaultBoundedRangeModel(5, 2, -1234, 4321);
+ setRangeProperties.check(harness, dbrm, 5, 2, -1234, 4321, false);
+
+ // Check #3.
+ caught = null;
+ try
+ {
+ dbrm = new javax.swing.DefaultBoundedRangeModel(-2, 0, 10, 20);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getChangeListeners.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getChangeListeners.java
new file mode 100644
index 00000000..07145ba7
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getChangeListeners.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getChangeListeners
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getChangeListeners
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+ ChangeListener l1 = new MyListener();
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getChangeListeners().length == 0);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, 0, 10, false);
+ harness.check(dbrm.getExtent(), 2);
+ }
+
+ private static class MyListener
+ implements ChangeListener
+ {
+ public void stateChanged(ChangeEvent e)
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getExtent.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getExtent.java
new file mode 100644
index 00000000..d75eb06c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getExtent.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getExtent
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getExtent
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getExtent(), 0);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, 0, 10, false);
+ harness.check(dbrm.getExtent(), 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMaximum.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMaximum.java
new file mode 100644
index 00000000..79174048
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMaximum.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getMaximum
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getMaximum
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getMaximum(), 100);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, -4, 123, false);
+ harness.check(dbrm.getMaximum(), 123);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMinimum.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMinimum.java
new file mode 100644
index 00000000..573a91de
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getMinimum.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getMinimum
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getMinimum
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getMinimum(), 0);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, -4, 10, false);
+ harness.check(dbrm.getMinimum(), -4);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValue.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValue.java
new file mode 100644
index 00000000..528ede37
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValue.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getValue
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getValue
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getValue(), 0);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, -4, 10, false);
+ harness.check(dbrm.getValue(), 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValueIsAdjusting.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValueIsAdjusting.java
new file mode 100644
index 00000000..65dd5fb9
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/getValueIsAdjusting.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.getValueIsAdjusting
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getValueIsAdjusting
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ harness.check(dbrm.getValueIsAdjusting() == false);
+
+ // Check #2.
+ dbrm.setRangeProperties(3, 2, -4, 10, true);
+ harness.check(dbrm.getValueIsAdjusting() == true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/serialization.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/serialization.java
new file mode 100644
index 00000000..e6c4eae7
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/serialization.java
@@ -0,0 +1,77 @@
+/* serialization.java -- some checks for object serialization.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class serialization implements Testlet, ChangeListener
+{
+ public void stateChanged(ChangeEvent e)
+ {
+ // TODO Auto-generated method stub
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel m1 = new DefaultBoundedRangeModel(1, 2, 0, 99);
+ m1.addChangeListener(this);
+ DefaultBoundedRangeModel m2 = null;
+
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(m1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(
+ buffer.toByteArray()));
+ m2 = (DefaultBoundedRangeModel) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ harness.check(m1.getValue(), m2.getValue());
+ harness.check(m1.getMinimum(), m2.getMinimum());
+ harness.check(m1.getMaximum(), m2.getMaximum());
+ harness.check(m1.getExtent(), m2.getExtent());
+
+ // the listeners are not restored
+ harness.check(m1.getChangeListeners().length, 1);
+ harness.check(m2.getChangeListeners().length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setExtent.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setExtent.java
new file mode 100644
index 00000000..57ee1250
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setExtent.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+// Uses: setRangeProperties
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setExtent
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setExtent
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm = new DefaultBoundedRangeModel();
+
+ // Check #1: Value + extent between min and max.
+ dbrm.setRangeProperties(8, 0, 0, 10, false);
+ dbrm.setExtent(2);
+ setRangeProperties.check(harness, dbrm, 8, 2, 0, 10, false);
+
+ // Check #2: Extent < 0.
+ dbrm.setExtent(-1);
+ setRangeProperties.check(harness, dbrm, 8, 0, 0, 10, false);
+
+ // Check #3: Value + extent > max.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setExtent(4);
+ setRangeProperties.check(harness, dbrm, 7, 3, 0, 10, false);
+
+ // Check #4: Value + extent > max; max - extent < min.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setExtent(20);
+ setRangeProperties.check(harness, dbrm, 7, 3, 0, 10, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMaximum.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMaximum.java
new file mode 100644
index 00000000..e1468a8f
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMaximum.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: setRangeProperties
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setMaximum
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setMaximum
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm = new DefaultBoundedRangeModel();
+
+ // Check #1: Increase maximum.
+ dbrm.setRangeProperties(1, 1, 0, 10, false);
+ dbrm.setMaximum(20);
+ setRangeProperties.check(harness, dbrm, 1, 1, 0, 20, false);
+
+ // Check #2: Decrease maximum.
+ dbrm.setRangeProperties(600, 10, -3, 700, true);
+ dbrm.setMaximum(543);
+ setRangeProperties.check(harness, dbrm, 533, 10, -3, 543, true);
+
+ // Check #3: Decrease maximum below minimum.
+ dbrm.setRangeProperties(600, 10, -3, 700, true);
+ dbrm.setMaximum(-4);
+ setRangeProperties.check(harness, dbrm, -4, 0, -4, -4, true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMinimum.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMinimum.java
new file mode 100644
index 00000000..317586d1
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setMinimum.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+// Uses: setRangeProperties
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setMinimum
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setMinimum
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm = new DefaultBoundedRangeModel();
+
+ // Check #1: Increase miminum. Value must not change.
+ dbrm.setRangeProperties(7, 2, 0, 10, true);
+ dbrm.setMinimum(3);
+ setRangeProperties.check(harness, dbrm, 7, 2, 3, 10, true);
+
+ // Check #2: Increase miminum. Value must be changed.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setMinimum(8);
+ setRangeProperties.check(harness, dbrm, 8, 2, 8, 10, false);
+
+ // Check #3: Increase miminum. Value and extent must be changed.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setMinimum(9);
+ setRangeProperties.check(harness, dbrm, 9, 1, 9, 10, false);
+
+ // Check #4: Increase miminum beyond max.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setMinimum(200);
+ setRangeProperties.check(harness, dbrm, 200, 0, 200, 200, false);
+
+ // Check #5: Decrease minimum. Value must not change.
+ dbrm.setRangeProperties(7, 2, 0, 10, false);
+ dbrm.setMinimum(-20);
+ setRangeProperties.check(harness, dbrm, 7, 2, -20, 10, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setRangeProperties.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setRangeProperties.java
new file mode 100644
index 00000000..5406d534
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setRangeProperties.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setRangeProperties
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setRangeProperties
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Check #1: Normal parameters
+ DefaultBoundedRangeModel dbrm = new DefaultBoundedRangeModel();
+ dbrm.setRangeProperties(5, 2, 1, 8, false);
+ check(harness, dbrm, 5, 2, 1, 8, false);
+
+ // Check #2: valueIsAdjusting
+ dbrm.setRangeProperties(5, 2, 1, 8, true);
+ check(harness, dbrm, 5, 2, 1, 8, true);
+
+ // Check #3: extent < 0
+ dbrm.setRangeProperties(4, -2, -4, 9, false);
+ check(harness, dbrm, 4, 0, -4, 9, false);
+
+ // Check #4: value > maximum
+ dbrm.setRangeProperties(14, 0, 1, 8, false);
+ check(harness, dbrm, 14, 0, 1, 14, false);
+
+ // Check #5: value + extent > maximum
+ dbrm.setRangeProperties(5, 4, 1, 8, false);
+ check(harness, dbrm, 5, 3, 1, 8, false);
+
+ // Check #6: value < minimum
+ dbrm.setRangeProperties(-3, 1, 0, 8, false);
+ check(harness, dbrm, -3, 1, -3, 8, false);
+ }
+
+
+ public static void check(TestHarness harness,
+ DefaultBoundedRangeModel brm,
+ int value, int extent,
+ int minimum, int maximum,
+ boolean adjusting)
+ {
+ int a;
+ boolean b;
+
+ if ((a = brm.getValue()) != value)
+ {
+ harness.check(false);
+ harness.debug("got value " + a + " but expected " + value);
+ return;
+ }
+
+ if ((a = brm.getExtent()) != extent)
+ {
+ harness.check(false);
+ harness.debug("got extent " + a + " but expected " + extent);
+ return;
+ }
+
+ if ((a = brm.getMinimum()) != minimum)
+ {
+ harness.check(false);
+ harness.debug("got minimum " + a + " but expected " + minimum);
+ return;
+ }
+
+ if ((a = brm.getMaximum()) != maximum)
+ {
+ harness.check(false);
+ harness.debug("got maximum " + a + " but expected " + maximum);
+ return;
+ }
+
+ if ((b = brm.getValueIsAdjusting()) != adjusting)
+ {
+ harness.check(false);
+ harness.debug("got adjusting " + b + " but expected " + adjusting);
+ return;
+ }
+
+ harness.check(true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValue.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValue.java
new file mode 100644
index 00000000..3573549a
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValue.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+// Uses: setRangeProperties
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setValue
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setValue
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm = new DefaultBoundedRangeModel();
+
+ // Check #1: Value between min and max.
+ dbrm.setRangeProperties(1, 1, 0, 10, false);
+ dbrm.setValue(5);
+ setRangeProperties.check(harness, dbrm, 5, 1, 0, 10, false);
+
+ // Check #2: Value < min.
+ dbrm.setRangeProperties(4, 1, 3, 10, false);
+ dbrm.setValue(-5);
+ setRangeProperties.check(harness, dbrm, 3, 1, 3, 10, false);
+
+ // Check #3: Value > max.
+ dbrm.setRangeProperties(4, 0, 3, 10, false);
+ dbrm.setValue(140);
+ setRangeProperties.check(harness, dbrm, 10, 0, 3, 10, false);
+
+ // Check #4: Value + extent > max.
+ dbrm.setRangeProperties(4, 4, 3, 10, false);
+ dbrm.setValue(9);
+ setRangeProperties.check(harness, dbrm, 6, 4, 3, 10, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValueIsAdjusting.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValueIsAdjusting.java
new file mode 100644
index 00000000..c03504ae
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/setValueIsAdjusting.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.BoundedRangeModel;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.setMaximum
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class setValueIsAdjusting
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+ MyListener ml = new MyListener();
+
+ // Check #1.
+ dbrm = new DefaultBoundedRangeModel();
+ dbrm.addChangeListener(ml);
+ harness.check(!dbrm.getValueIsAdjusting());
+
+ // Check #2.
+ dbrm.setValueIsAdjusting(true);
+ harness.check(dbrm.getValueIsAdjusting());
+
+ // Check #3.
+ dbrm.setMaximum(5);
+ harness.check(ml.wasAdjusting);
+
+ // Check #4.
+ dbrm.setValueIsAdjusting(false);
+ harness.check(!dbrm.getValueIsAdjusting());
+
+ // Check #5.
+ dbrm.setValue(2);
+ harness.check(!ml.wasAdjusting);
+ }
+
+
+ static class MyListener
+ implements ChangeListener
+ {
+ public boolean wasAdjusting = false;
+
+ public void stateChanged(ChangeEvent evt)
+ {
+ wasAdjusting = ((BoundedRangeModel) evt.getSource())
+ .getValueIsAdjusting();
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultBoundedRangeModel/toString.java b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/toString.java
new file mode 100644
index 00000000..5b5ce5b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultBoundedRangeModel/toString.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.DefaultBoundedRangeModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.DefaultBoundedRangeModel;
+
+/**
+ * Checks whether the DefaultBoundedRangeModel.toString
+ * method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class toString
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel dbrm;
+
+ // Check #1.
+ dbrm = new Test();
+ dbrm.setRangeProperties(3, 2, -4, 10, true);
+ harness.check(dbrm.toString(),
+ "gnu.testlet.javax.swing.DefaultBoundedRangeModel"
+ + ".toString$Test[value=3, extent=2, min=-4, max="
+ + "10, adj=true]");
+ }
+
+ private static class Test
+ extends DefaultBoundedRangeModel
+ {
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Entries b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Entries
new file mode 100644
index 00000000..9f88c4dc
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Entries
@@ -0,0 +1,14 @@
+/MyDefaultButtonModel.java/1.1/Tue May 16 21:59:52 2006//
+/addActionListener.java/1.1/Tue May 16 21:59:52 2006//
+/constants.java/1.1/Tue May 16 21:59:52 2006//
+/constructor.java/1.1/Tue May 16 21:59:52 2006//
+/getSelectedObjects.java/1.1/Tue May 16 21:59:52 2006//
+/setActionCommand.java/1.1/Tue May 16 21:59:52 2006//
+/setArmed.java/1.2/Wed May 21 13:30:45 2008//
+/setEnabled.java/1.2/Wed May 21 13:30:45 2008//
+/setGroup.java/1.1/Tue May 16 21:59:52 2006//
+/setMnemonic.java/1.1/Tue May 16 21:59:52 2006//
+/setPressed.java/1.2/Wed May 21 13:30:45 2008//
+/setRollover.java/1.1/Tue May 16 21:59:52 2006//
+/setSelected.java/1.2/Fri Jun 16 13:49:34 2006//
+D
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Repository b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Repository
new file mode 100644
index 00000000..ae55355e
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultButtonModel
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Root b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/MyDefaultButtonModel.java b/gnu/testlet/javax/swing/DefaultButtonModel/MyDefaultButtonModel.java
new file mode 100644
index 00000000..8ac33fe0
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/MyDefaultButtonModel.java
@@ -0,0 +1,40 @@
+/* MyDefaultButtonModel.java -- subclass that provides access to protected
+ field.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import javax.swing.DefaultButtonModel;
+
+public class MyDefaultButtonModel extends DefaultButtonModel
+{
+ public MyDefaultButtonModel()
+ {
+ super();
+ }
+ public int getStateMask()
+ {
+ return this.stateMask;
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/addActionListener.java b/gnu/testlet/javax/swing/DefaultButtonModel/addActionListener.java
new file mode 100644
index 00000000..812afc6a
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/addActionListener.java
@@ -0,0 +1,51 @@
+/* addActionListener.java -- some checks for the addActionListener() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+
+public class addActionListener implements Testlet, ActionListener
+{
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ harness.check(m.getActionListeners()[0], this);
+ m.addActionListener(null);
+ harness.check(m.getActionListeners().length, 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/constants.java b/gnu/testlet/javax/swing/DefaultButtonModel/constants.java
new file mode 100644
index 00000000..da509c16
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/constants.java
@@ -0,0 +1,43 @@
+/* constants.java -- some checks for the constants in the DefaultButtonModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultButtonModel;
+
+public class constants implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.check(DefaultButtonModel.ARMED, 1);
+ harness.check(DefaultButtonModel.ENABLED, 8);
+ harness.check(DefaultButtonModel.PRESSED, 4);
+ harness.check(DefaultButtonModel.ROLLOVER, 16);
+ harness.check(DefaultButtonModel.SELECTED, 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/constructor.java b/gnu/testlet/javax/swing/DefaultButtonModel/constructor.java
new file mode 100644
index 00000000..358ab60f
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/constructor.java
@@ -0,0 +1,46 @@
+/* constructor.java -- some checks for the constructor in the
+ DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultButtonModel;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ harness.check(m.getActionCommand(), null);
+ harness.check(m.getGroup(), null);
+ harness.check(m.isArmed(), false);
+ harness.check(m.isEnabled(), true);
+ harness.check(m.isPressed(), false);
+ harness.check(m.isRollover(), false);
+ harness.check(m.isSelected(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/getSelectedObjects.java b/gnu/testlet/javax/swing/DefaultButtonModel/getSelectedObjects.java
new file mode 100644
index 00000000..eead38ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/getSelectedObjects.java
@@ -0,0 +1,40 @@
+/* getSelectedObjects.java -- some checks for the getSelectedObjects() method
+ in the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultButtonModel;
+
+public class getSelectedObjects implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ harness.check(m.getSelectedObjects(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setActionCommand.java b/gnu/testlet/javax/swing/DefaultButtonModel/setActionCommand.java
new file mode 100644
index 00000000..b7ac5802
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setActionCommand.java
@@ -0,0 +1,43 @@
+/* setActionCommand.java -- some checks for the setActionCommand() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultButtonModel;
+
+public class setActionCommand implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.setActionCommand("XYZ");
+ harness.check(m.getActionCommand(), "XYZ");
+ m.setActionCommand(null);
+ harness.check(m.getActionCommand(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java b/gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java
new file mode 100644
index 00000000..100dd492
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setArmed.java
@@ -0,0 +1,82 @@
+/* setArmed.java -- some checks for the setArmed() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyDefaultButtonModel
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setArmed implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ MyDefaultButtonModel m = new MyDefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.setArmed(true);
+ harness.check(m.isArmed(), true);
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED | DefaultButtonModel.ARMED);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ m.setArmed(true);
+ harness.check(lastChangeEvent, null);
+
+ // if we disable the model, it becomes unarmed
+ m.setEnabled(false);
+ harness.check(m.isArmed(), false);
+ harness.check(m.getStateMask(), 0);
+ m.setEnabled(true);
+ harness.check(m.isArmed(), false);
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED);
+
+ m.setEnabled(false);
+ m.setArmed(true);
+ harness.check(m.isArmed(), false);
+ harness.check(m.getStateMask(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java b/gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java
new file mode 100644
index 00000000..6996bb16
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setEnabled.java
@@ -0,0 +1,81 @@
+/* setEnabled.java -- some checks for the setEnabled() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyDefaultButtonModel
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setEnabled implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ MyDefaultButtonModel m = new MyDefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.setEnabled(false);
+ harness.check(m.isEnabled(), false);
+ harness.check(m.getStateMask(), 0);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ m.setEnabled(false);
+ harness.check(m.getStateMask(), 0);
+ harness.check(lastChangeEvent, null);
+
+ m.setEnabled(true);
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED);
+ harness.check(lastChangeEvent.getSource(), m);
+
+ // if a button is armed and enabled, setting it to disabled also disarms it
+ m.setArmed(true);
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED | DefaultButtonModel.ARMED);
+ m.setEnabled(false);
+ harness.check(m.getStateMask(), 0);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setGroup.java b/gnu/testlet/javax/swing/DefaultButtonModel/setGroup.java
new file mode 100644
index 00000000..93e0f031
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setGroup.java
@@ -0,0 +1,75 @@
+/* setGroup.java -- some checks for the setGroup() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setGroup implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ ButtonGroup bg = new ButtonGroup();
+ m.setGroup(bg);
+ harness.check(m.getGroup(), bg);
+ harness.check(lastChangeEvent, null);
+ harness.check(lastActionEvent, null);
+ harness.check(bg.getButtonCount(), 0);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ m.setGroup(bg);
+ harness.check(lastChangeEvent, null);
+
+ // try a null argument
+ m.setGroup(null);
+ harness.check(m.getGroup(), null);
+ harness.check(lastChangeEvent, null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setMnemonic.java b/gnu/testlet/javax/swing/DefaultButtonModel/setMnemonic.java
new file mode 100644
index 00000000..a08ccfee
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setMnemonic.java
@@ -0,0 +1,73 @@
+/* setMnemonic.java -- some checks for the setMnemonic() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setMnemonic implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.setMnemonic(99);
+ harness.check(m.getMnemonic(), 99);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+
+ // setting the same again causes no event - actually, the reference
+ // implementation fails this test, I filed it as a bug report to Sun and
+ // will await their assessment...
+ lastChangeEvent = null;
+ m.setMnemonic(99);
+ harness.check(lastChangeEvent, null);
+
+ // try a wild argument
+ m.setMnemonic(Integer.MIN_VALUE);
+ harness.check(m.getMnemonic(), Integer.MIN_VALUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java b/gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java
new file mode 100644
index 00000000..c1e65c2c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setPressed.java
@@ -0,0 +1,108 @@
+/* setPressed.java -- some checks for the setPressed() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyDefaultButtonModel
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setPressed implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testEvent(harness);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral");
+ MyDefaultButtonModel m = new MyDefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.setPressed(true);
+ harness.check(m.isPressed());
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED | DefaultButtonModel.PRESSED);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ m.setPressed(true);
+ harness.check(lastChangeEvent, null);
+
+ // if we disable the model, it becomes not pressed
+ m.setEnabled(false);
+ harness.check(m.isPressed(), false);
+ harness.check(m.getStateMask(), 0);
+ m.setEnabled(true);
+ harness.check(m.isPressed(), false);
+ harness.check(m.getStateMask(), DefaultButtonModel.ENABLED);
+
+ m.setEnabled(false);
+ m.setPressed(true);
+ harness.check(m.isPressed(), false);
+ harness.check(m.getStateMask(), 0);
+ }
+
+ public void testEvent(TestHarness harness)
+ {
+ harness.checkPoint("testEvent");
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ lastActionEvent = null;
+ m.setActionCommand("ABC");
+ m.setArmed(true);
+ harness.check(lastActionEvent, null);
+ m.setPressed(true);
+ lastChangeEvent = null;
+ harness.check(lastActionEvent, null);
+ m.setPressed(false);
+ harness.check(lastActionEvent.getSource(), m);
+ harness.check(lastActionEvent.getActionCommand(), "ABC");
+ harness.check(lastChangeEvent.getSource(), m);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setRollover.java b/gnu/testlet/javax/swing/DefaultButtonModel/setRollover.java
new file mode 100644
index 00000000..21dbff84
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setRollover.java
@@ -0,0 +1,75 @@
+/* setRollover.java -- some checks for the setRollover() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setRollover implements Testlet, ActionListener, ChangeListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.setRollover(true);
+ harness.check(m.isRollover(), true);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ m.setRollover(true);
+ harness.check(lastChangeEvent, null);
+
+ // are the states independent? Seems so.
+ m.setPressed(true);
+ harness.check(m.isRollover(), true);
+ m.setEnabled(false);
+ harness.check(m.isRollover(), true);
+ m.setEnabled(true);
+ harness.check(m.isRollover(), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java b/gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java
new file mode 100644
index 00000000..403a5588
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultButtonModel/setSelected.java
@@ -0,0 +1,92 @@
+/* setSelected.java -- some checks for the setSelected() method in
+ the DefaultButtonModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.DefaultButtonModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.DefaultButtonModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setSelected
+ implements Testlet, ActionListener, ChangeListener, ItemListener
+{
+ ChangeEvent lastChangeEvent;
+
+ ActionEvent lastActionEvent;
+
+ ItemEvent lastItemEvent;
+
+ public void stateChanged(ChangeEvent e) {
+ lastChangeEvent = e;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ lastActionEvent = e;
+ }
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ lastItemEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultButtonModel m = new DefaultButtonModel();
+ m.addActionListener(this);
+ m.addChangeListener(this);
+ m.addItemListener(this);
+ m.setSelected(true);
+ harness.check(m.isSelected(), true);
+ harness.check(lastChangeEvent.getSource(), m);
+ harness.check(lastActionEvent, null);
+ harness.check(lastItemEvent.getSource(), m);
+ harness.check(lastItemEvent.getItem(), m);
+
+ // setting the same again causes no event
+ lastChangeEvent = null;
+ lastItemEvent = null;
+ m.setSelected(true);
+ harness.check(lastChangeEvent, null);
+ harness.check(lastItemEvent, null);
+
+ // are the states independent? Seems so.
+ m.setPressed(true);
+ harness.check(m.isSelected(), true);
+ m.setEnabled(false);
+ harness.check(m.isSelected(), true);
+ m.setEnabled(true);
+ harness.check(m.isSelected(), true);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Entries b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Entries
new file mode 100644
index 00000000..a1047dc6
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Entries
@@ -0,0 +1,12 @@
+/addElement.java/1.2/Sat Sep 24 21:13:56 2005//
+/constructors.java/1.1/Fri Sep 23 16:18:05 2005//
+/getElementAt.java/1.1/Fri Sep 23 16:18:05 2005//
+/getIndexOf.java/1.1/Fri Sep 23 16:18:05 2005//
+/getSelectedItem.java/1.1/Fri Sep 23 16:18:05 2005//
+/getSize.java/1.1/Fri Sep 23 16:18:05 2005//
+/insertElementAt.java/1.1/Fri Sep 23 16:18:05 2005//
+/removeAllElements.java/1.1/Fri Sep 23 16:18:05 2005//
+/removeElement.java/1.2/Fri Jun 16 14:33:40 2006//
+/removeElementAt.java/1.1/Fri Sep 23 16:18:05 2005//
+/setSelectedItem.java/1.3/Fri Oct 13 05:22:23 2006//
+D
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Repository b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Repository
new file mode 100644
index 00000000..0ba2cbe9
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultComboBoxModel
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Root b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java
new file mode 100644
index 00000000..b4f9d4c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/addElement.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the addElement() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class addElement
+ implements Testlet, ListDataListener
+{
+ List events = new java.util.ArrayList();
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel();
+ m.addListDataListener(this);
+
+ m.addElement("A");
+ harness.check(m.getSize(), 1);
+ harness.check(m.getElementAt(0), "A");
+ harness.check(m.getSelectedItem(), "A");
+ harness.check(events.size(), 2);
+ ListDataEvent e = (ListDataEvent) events.get(0);
+ harness.check(e.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(e.getIndex0(), 0);
+ harness.check(e.getIndex1(), 0);
+ e = (ListDataEvent) events.get(1);
+ harness.check(e.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(e.getIndex0(), -1);
+ harness.check(e.getIndex1(), -1);
+ events.clear();
+
+ m.addElement("B");
+ harness.check(m.getSize(), 2);
+ harness.check(m.getElementAt(1), "B");
+ harness.check(m.getSelectedItem(), "A");
+ harness.check(events.size(), 1);
+ e = (ListDataEvent) events.get(0);
+ harness.check(e.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(e.getIndex0(), 1);
+ harness.check(e.getIndex1(), 1);
+ events.clear();
+
+ m.addElement(null);
+ harness.check(m.getSize(), 3);
+ harness.check(m.getElementAt(2), null);
+ harness.check(m.getSelectedItem(), "A");
+ harness.check(events.size(), 1);
+ e = (ListDataEvent) events.get(0);
+ harness.check(e.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(e.getIndex0(), 2);
+ harness.check(e.getIndex1(), 2);
+ events.clear();
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/constructors.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/constructors.java
new file mode 100644
index 00000000..500f531a
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/constructors.java
@@ -0,0 +1,103 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Some checks for the constructors in the {@link DefaultComboBoxModel} class.
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ DefaultComboBoxModel m = new DefaultComboBoxModel();
+ harness.check(m.getSelectedItem(), null);
+ harness.check(m.getSize(), 0);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object[])");
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B"});
+ harness.check(m.getSize(), 2);
+ harness.check(m.getSelectedItem(), "A");
+ harness.check(m.getElementAt(0), "A");
+ harness.check(m.getElementAt(1), "B");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ m = new DefaultComboBoxModel((Object[]) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("(Vector)");
+ Vector v = new Vector();
+ v.add("A");
+ v.add("B");
+ DefaultComboBoxModel m = new DefaultComboBoxModel(v);
+ harness.check(m.getSize(), 2);
+ harness.check(m.getSelectedItem(), "A");
+ harness.check(m.getElementAt(0), "A");
+ harness.check(m.getElementAt(1), "B");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ m = new DefaultComboBoxModel((Vector) null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/getElementAt.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/getElementAt.java
new file mode 100644
index 00000000..5780589c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/getElementAt.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Some checks for the getElementAt() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class getElementAt
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ harness.check(m.getElementAt(0), "A");
+ harness.check(m.getElementAt(1), "B");
+ harness.check(m.getElementAt(2), "C");
+
+ harness.check(m.getElementAt(-1), null);
+ harness.check(m.getElementAt(3), null);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/getIndexOf.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/getIndexOf.java
new file mode 100644
index 00000000..8c000a36
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/getIndexOf.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Some checks for the getIndexOf() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class getIndexOf
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ harness.check(m.getIndexOf("A"), 0);
+ harness.check(m.getIndexOf("B"), 1);
+ harness.check(m.getIndexOf("C"), 2);
+ harness.check(m.getIndexOf("D"), -1);
+ harness.check(m.getIndexOf(null), -1);
+
+ m.addElement(null);
+ harness.check(m.getIndexOf(null), 3);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/getSelectedItem.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/getSelectedItem.java
new file mode 100644
index 00000000..07553dbf
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/getSelectedItem.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Some checks for the getSelectedItem() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class getSelectedItem
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ harness.check(m.getSelectedItem(), "A");
+ m.setSelectedItem("C");
+ harness.check(m.getSelectedItem(), "C");
+ m.setSelectedItem(null);
+ harness.check(m.getSelectedItem(), null);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/getSize.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/getSize.java
new file mode 100644
index 00000000..1184778b
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/getSize.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+
+/**
+ * Some checks for the getSize() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class getSize
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel();
+ harness.check(m.getSize(), 0);
+ m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ harness.check(m.getSize(), 3);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/insertElementAt.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/insertElementAt.java
new file mode 100644
index 00000000..17525d23
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/insertElementAt.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the insertElementAt() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class insertElementAt
+ implements Testlet, ListDataListener
+{
+ int index0;
+ int index1;
+ int eventType;
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel();
+ m.addListDataListener(this);
+
+ m.insertElementAt("A", 0);
+ harness.check(m.getSize(), 1);
+ harness.check(m.getElementAt(0), "A");
+ harness.check(m.getSelectedItem(), null);
+ harness.check(eventType, ListDataEvent.INTERVAL_ADDED);
+ harness.check(index0, 0);
+ harness.check(index1, 0);
+
+ m.insertElementAt("B", 1);
+ harness.check(m.getSize(), 2);
+ harness.check(m.getElementAt(1), "B");
+ harness.check(m.getSelectedItem(), null);
+ harness.check(eventType, ListDataEvent.INTERVAL_ADDED);
+ harness.check(index0, 1);
+ harness.check(index1, 1);
+
+ m.insertElementAt("C", 0);
+ harness.check(m.getSize(), 3);
+ harness.check(m.getElementAt(0), "C");
+ harness.check(m.getSelectedItem(), null);
+ harness.check(eventType, ListDataEvent.INTERVAL_ADDED);
+ harness.check(index0, 0);
+ harness.check(index1, 0);
+
+ m.insertElementAt(null, 0);
+ harness.check(m.getSize(), 4);
+ harness.check(m.getElementAt(0), null);
+ harness.check(m.getSelectedItem(), null);
+ harness.check(eventType, ListDataEvent.INTERVAL_ADDED);
+ harness.check(index0, 0);
+ harness.check(index1, 0);
+
+ // try negative index
+ boolean pass = true;
+ try
+ {
+ m.insertElementAt("Z", -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try index too large
+ pass = false;
+ try
+ {
+ m.insertElementAt("Z", 5);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/removeAllElements.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeAllElements.java
new file mode 100644
index 00000000..b57c4f7e
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeAllElements.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the removeAllElements() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class removeAllElements
+ implements Testlet, ListDataListener
+{
+ int index0;
+ int index1;
+ int eventType;
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ m.addListDataListener(this);
+
+ harness.check(m.getSize(), 3);
+ harness.check(m.getSelectedItem(), "A");
+
+ m.removeAllElements();
+ harness.check(m.getSize(), 0);
+ harness.check(m.getSelectedItem(), null);
+ harness.check(eventType, ListDataEvent.INTERVAL_REMOVED);
+ harness.check(index0, 0);
+ harness.check(index1, 2);
+
+ // remove all elements from the empty list - is there an event?
+ eventType = -1;
+ index0 = -1;
+ index1 = -1;
+ m.removeAllElements();
+ harness.check(m.getSize(), 0);
+ harness.check(eventType, -1);
+ harness.check(index0, -1);
+ harness.check(index1, -1);
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java
new file mode 100644
index 00000000..4d80638a
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElement.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the removeElement() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class removeElement
+ implements Testlet, ListDataListener
+{
+ List events = new ArrayList();
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ m.addListDataListener(this);
+
+ m.removeElement("A");
+ harness.check(m.getSize(), 2);
+ harness.check(m.getElementAt(0), "B");
+ harness.check(m.getSelectedItem(), "B");
+ harness.check(events.size(), 2);
+ ListDataEvent e0 = (ListDataEvent) events.get(0);
+ harness.check(e0.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(e0.getIndex0(), -1);
+ harness.check(e0.getIndex1(), -1);
+ ListDataEvent e1 = (ListDataEvent) events.get(1);
+ harness.check(e1.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(e1.getIndex0(), 0);
+ harness.check(e1.getIndex1(), 0);
+
+ events.clear();
+ m.removeElement("C");
+ harness.check(m.getSize(), 1);
+ harness.check(m.getElementAt(0), "B");
+ harness.check(m.getSelectedItem(), "B");
+ harness.check(events.size(), 1);
+ e0 = (ListDataEvent) events.get(0);
+ harness.check(e0.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(e0.getIndex0(), 1);
+ harness.check(e0.getIndex1(), 1);
+
+
+ events.clear();
+
+ m.removeElement("Z");
+ harness.check(m.getSize(), 1);
+ harness.check(m.getSelectedItem(), "B");
+ harness.check(events.size(), 0);
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElementAt.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElementAt.java
new file mode 100644
index 00000000..9544b44e
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/removeElementAt.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the removeElementAt() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class removeElementAt
+ implements Testlet, ListDataListener
+{
+ int index0;
+ int index1;
+ int eventType;
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ eventType = event.getType();
+ index0 = event.getIndex0();
+ index1 = event.getIndex1();
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ m.addListDataListener(this);
+
+ m.removeElementAt(0);
+ harness.check(m.getSize(), 2);
+ harness.check(m.getElementAt(0), "B");
+ harness.check(m.getSelectedItem(), "B");
+ harness.check(eventType, ListDataEvent.INTERVAL_REMOVED);
+ harness.check(index0, 0);
+ harness.check(index1, 0);
+
+ m.removeElementAt(1);
+ harness.check(m.getSize(), 1);
+ harness.check(m.getElementAt(0), "B");
+ harness.check(m.getSelectedItem(), "B");
+ harness.check(eventType, ListDataEvent.INTERVAL_REMOVED);
+ harness.check(index0, 1);
+ harness.check(index1, 1);
+
+ // try negative index
+ boolean pass = false;
+ try
+ {
+ m.removeElementAt(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m.removeElementAt(1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ m = new DefaultComboBoxModel(new Object[] {"A", "B", "C"});
+ m.setSelectedItem("B");
+ m.removeElementAt(1);
+ harness.check(m.getSelectedItem(), "A");
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java b/gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java
new file mode 100644
index 00000000..332bf915
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultComboBoxModel/setSelectedItem.java
@@ -0,0 +1,110 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultComboBoxModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the setSelectedItem() method in the
+ * {@link DefaultComboBoxModel} class.
+ */
+public class setSelectedItem
+ implements Testlet, ListDataListener
+{
+ List events = new java.util.ArrayList();
+
+ public void contentsChanged(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalAdded(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ public void intervalRemoved(ListDataEvent event)
+ {
+ events.add(event);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultComboBoxModel m = new DefaultComboBoxModel(new Object[] {"A", "B",
+ "C"});
+ harness.check(m.getSelectedItem(), "A");
+
+ m.addListDataListener(this);
+
+ // first set the selected item to one of the elements in the list...
+ m.setSelectedItem("C");
+ harness.check(events.size(), 1);
+ harness.check(m.getSelectedItem(), "C");
+ ListDataEvent event = (ListDataEvent) events.get(0);
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), -1);
+ harness.check(event.getIndex1(), -1);
+ events.clear();
+
+ // now set the selected item to null...
+ m.setSelectedItem(null);
+ harness.check(m.getSelectedItem(), null);
+ harness.check(events.size(), 1);
+ event = (ListDataEvent) events.get(0);
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), -1);
+ harness.check(event.getIndex1(), -1);
+ events.clear();
+
+ // now set the selected item to something not in the list...
+ m.setSelectedItem("Z");
+ // confirm that setSelectedItem simply returned without doing
+ // anything...
+ harness.check(m.getSelectedItem(), null);
+ harness.check(m.getSize(), 3);
+ harness.check(m.getIndexOf("Z"), -1);
+ harness.check(events.size(), 0);
+
+ // now set the selected item to the same value - no event should be
+ // generated...
+ m.setSelectedItem("Z");
+ harness.check(events.size(), 0);
+
+ // make sure setting null when already null doesn't generate an event
+ m.setSelectedItem(null);
+ events.clear();
+ m.setSelectedItem(null);
+ harness.check(events.size(), 0);
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Entries b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Entries
new file mode 100644
index 00000000..19b44bfc
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Entries
@@ -0,0 +1,2 @@
+/getListCellRendererComponent.java/1.1/Sun Feb 5 21:22:36 2006//
+D
diff --git a/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Repository b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Repository
new file mode 100644
index 00000000..080bc05b
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultListCellRenderer
diff --git a/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Root b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListCellRenderer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultListCellRenderer/getListCellRendererComponent.java b/gnu/testlet/javax/swing/DefaultListCellRenderer/getListCellRendererComponent.java
new file mode 100644
index 00000000..51848eea
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListCellRenderer/getListCellRendererComponent.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Mark J. Wielaard (mark@klomp.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.DefaultListCellRenderer;
+
+import java.awt.*;
+import javax.swing.*;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getListCellRendererComponent implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Object[] data = new Object[] { "", null, new Integer(1), new Object(),
+ new int[0], new String[0], new String[1] };
+ JList list = new JList(data);
+ DefaultListCellRenderer dlcr = new DefaultListCellRenderer();
+ for (int i = 0; i < data.length; i++)
+ {
+ Component c = dlcr.getListCellRendererComponent(list, data[i],
+ i, false, false);
+ Dimension d = c.getPreferredSize();
+ harness.check(d.height >= 0);
+ harness.check(d.width >= 0);
+ }
+
+ for (int i = 0; i < data.length; i++)
+ {
+ list.setSelectedIndex(i);
+ Component c = dlcr.getListCellRendererComponent(list, data[i],
+ i, true, false);
+ Dimension d = c.getPreferredSize();
+ harness.check(d.height >= 0);
+ harness.check(d.width >= 0);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/CVS/Entries b/gnu/testlet/javax/swing/DefaultListModel/CVS/Entries
new file mode 100644
index 00000000..9fee1e3d
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/CVS/Entries
@@ -0,0 +1,32 @@
+/MyListDataListener.java/1.2/Thu Feb 10 04:44:58 2005//
+/add.java/1.2/Thu Feb 10 04:44:58 2005//
+/addElement.java/1.2/Thu Feb 10 04:44:58 2005//
+/capacity.java/1.1/Tue Jan 18 15:11:01 2005//
+/clear.java/1.2/Thu Feb 10 04:44:58 2005//
+/constructor.java/1.1/Tue Jan 18 15:11:01 2005//
+/contains.java/1.1/Tue Jan 18 15:11:01 2005//
+/copyInto.java/1.1/Tue Jan 18 15:11:01 2005//
+/elementAt.java/1.1/Tue Jan 18 15:11:01 2005//
+/elements.java/1.1/Tue Jan 18 15:11:01 2005//
+/ensureCapacity.java/1.1/Tue Jan 18 15:11:01 2005//
+/firstElement.java/1.1/Tue Jan 18 15:11:01 2005//
+/get.java/1.1/Tue Jan 18 15:11:01 2005//
+/getElementAt.java/1.1/Tue Jan 18 15:11:01 2005//
+/getSize.java/1.1/Tue Jan 18 15:11:01 2005//
+/indexOf.java/1.1/Tue Jan 18 15:11:01 2005//
+/insertElementAt.java/1.2/Thu Feb 10 04:44:58 2005//
+/isEmpty.java/1.1/Tue Jan 18 15:11:01 2005//
+/lastElement.java/1.1/Tue Jan 18 15:11:01 2005//
+/lastIndexOf.java/1.1/Tue Jan 18 15:11:01 2005//
+/remove.java/1.2/Thu Feb 10 04:44:58 2005//
+/removeAllElements.java/1.2/Thu Feb 10 05:42:27 2005//
+/removeElement.java/1.2/Thu Feb 10 04:44:58 2005//
+/removeElementAt.java/1.2/Thu Feb 10 04:44:58 2005//
+/removeRange.java/1.2/Thu Feb 10 04:44:58 2005//
+/set.java/1.2/Thu Feb 10 04:44:58 2005//
+/setElementAt.java/1.2/Thu Feb 10 04:44:58 2005//
+/setSize.java/1.2/Thu Feb 10 04:44:58 2005//
+/size.java/1.1/Tue Jan 18 15:11:01 2005//
+/toArray.java/1.1/Tue Jan 18 15:11:01 2005//
+/trimToSize.java/1.1/Tue Jan 18 15:11:01 2005//
+D
diff --git a/gnu/testlet/javax/swing/DefaultListModel/CVS/Repository b/gnu/testlet/javax/swing/DefaultListModel/CVS/Repository
new file mode 100644
index 00000000..0ba0888c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultListModel
diff --git a/gnu/testlet/javax/swing/DefaultListModel/CVS/Root b/gnu/testlet/javax/swing/DefaultListModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java b/gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java
new file mode 100644
index 00000000..d4ffd30c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/MyListDataListener.java
@@ -0,0 +1,63 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * A listener used by various tests.
+ */
+public class MyListDataListener implements ListDataListener
+{
+
+ private ListDataEvent event;
+
+ public MyListDataListener()
+ {
+ this.event = null;
+ }
+
+ public void intervalAdded(ListDataEvent e)
+ {
+ this.event = e;
+ }
+
+ public void intervalRemoved(ListDataEvent e) {
+ this.event = e;
+ }
+
+ public void contentsChanged(ListDataEvent e) {
+ this.event = e;
+ }
+
+ public ListDataEvent getEvent()
+ {
+ return this.event;
+ }
+
+ public void setListDataEvent(ListDataEvent e)
+ {
+ this.event = e;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/add.java b/gnu/testlet/javax/swing/DefaultListModel/add.java
new file mode 100644
index 00000000..6ebed305
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/add.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the add() method in the {@link DefaultListModel} class.
+ */
+public class add implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("add(int, Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ boolean pass = false;
+ try
+ {
+ m1.add(-1, "X");
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass); // 1
+
+ pass = false;
+ try
+ {
+ m1.add(1, "X");
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass); // 2
+
+ harness.check(listener.getEvent(), null); // 3
+ m1.add(0, "A");
+ harness.check(m1.getElementAt(0).equals("A")); // 4
+ ListDataEvent event = listener.getEvent();
+ System.out.println(event);
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED); // 5
+ harness.check(event.getIndex0(), 0); // 6
+ harness.check(event.getIndex1(), 0); // 7
+ listener.setListDataEvent(null);
+
+ m1.add(1, "B");
+ harness.check(m1.getElementAt(1).equals("B"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.add(2, "C");
+ harness.check(m1.getElementAt(2).equals("C"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ m1.add(0, "Z");
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(3).equals("C"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ m1.add(1, "Y");
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(1).equals("Y"));
+ harness.check(m1.getElementAt(4).equals("C"));
+
+ m1.add(2, null);
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(1).equals("Y"));
+ harness.check(m1.getElementAt(2) == null);
+ harness.check(m1.getElementAt(5).equals("C"));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/addElement.java b/gnu/testlet/javax/swing/DefaultListModel/addElement.java
new file mode 100644
index 00000000..2306b451
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/addElement.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the addElement() method in the {@link DefaultListModel} class.
+ */
+public class addElement implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("addElement(Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+
+ m1.addElement("A");
+ harness.check(m1.getElementAt(0).equals("A"));
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ m1.addElement("B");
+ harness.check(m1.getElementAt(1).equals("B"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.addElement("C");
+ harness.check(m1.getElementAt(2).equals("C"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ m1.addElement(null);
+ harness.check(m1.getElementAt(3) == null);
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 3);
+ harness.check(event.getIndex1(), 3);
+ listener.setListDataEvent(null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/capacity.java b/gnu/testlet/javax/swing/DefaultListModel/capacity.java
new file mode 100644
index 00000000..66036f83
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/capacity.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the capacity() method in the {@link DefaultListModel} class.
+ */
+public class capacity implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("capacity()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.ensureCapacity(99);
+ harness.check(m1.capacity() >= 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/clear.java b/gnu/testlet/javax/swing/DefaultListModel/clear.java
new file mode 100644
index 00000000..23d7af64
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/clear.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the clear() method in the {@link DefaultListModel} class.
+ */
+public class clear implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("clear()");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.clear();
+ harness.check(m1.isEmpty());
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.clear();
+ harness.check(m1.isEmpty());
+ harness.check(listener.getEvent(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/constructor.java b/gnu/testlet/javax/swing/DefaultListModel/constructor.java
new file mode 100644
index 00000000..2020ff33
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/constructor.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the constructors in the {@link DefaultListModel} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("DefaultListModel()");
+ DefaultListModel m1 = new DefaultListModel();
+ harness.check(m1.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/contains.java b/gnu/testlet/javax/swing/DefaultListModel/contains.java
new file mode 100644
index 00000000..a7e44f61
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/contains.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the contains() method in the {@link DefaultListModel} class.
+ */
+public class contains implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("contains(Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ harness.check(m1.contains("A"));
+ harness.check(m1.contains("B"));
+ harness.check(!m1.contains("C"));
+ harness.check(!m1.contains(null));
+
+ m1.addElement(null);
+ harness.check(m1.contains(null));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/copyInto.java b/gnu/testlet/javax/swing/DefaultListModel/copyInto.java
new file mode 100644
index 00000000..27ec9b99
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/copyInto.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the copyInto() method in the {@link DefaultListModel} class.
+ */
+public class copyInto implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("copyInto(Object[])");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement(null);
+ m1.addElement("C");
+ Object[] dest = new Object[3];
+ m1.copyInto(dest);
+ harness.check(dest[0], "A");
+ harness.check(dest[1], null);
+ harness.check(dest[2], "C");
+
+ boolean pass = false;
+ dest = new Object[2];
+ try
+ {
+ m1.copyInto(dest);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.copyInto(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ dest = new Object[4];
+ dest[3] = "X";
+ m1.copyInto(dest);
+ harness.check(dest[3], "X");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/elementAt.java b/gnu/testlet/javax/swing/DefaultListModel/elementAt.java
new file mode 100644
index 00000000..24e23276
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/elementAt.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the elementAt() method in the {@link DefaultListModel} class.
+ */
+public class elementAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("elementAt(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement(null);
+ m1.addElement("C");
+ harness.check(m1.elementAt(0), "A");
+ harness.check(m1.elementAt(1), null);
+ harness.check(m1.elementAt(2), "C");
+
+ boolean pass = false;
+ try
+ {
+ /* Object o = */ m1.elementAt(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ /* Object o = */ m1.elementAt(999);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/elements.java b/gnu/testlet/javax/swing/DefaultListModel/elements.java
new file mode 100644
index 00000000..f5d38331
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/elements.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the elements() method in the {@link DefaultListModel} class.
+ */
+public class elements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("elements()");
+ DefaultListModel m1 = new DefaultListModel();
+ Enumeration e = m1.elements();
+ harness.check(!e.hasMoreElements());
+
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+
+ e = m1.elements();
+ harness.check(e.nextElement(), "A");
+ harness.check(e.nextElement(), "B");
+ harness.check(e.nextElement(), "C");
+ harness.check(!e.hasMoreElements());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/ensureCapacity.java b/gnu/testlet/javax/swing/DefaultListModel/ensureCapacity.java
new file mode 100644
index 00000000..f3af6807
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/ensureCapacity.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the ensureCapacity() method in the {@link DefaultListModel} class.
+ */
+public class ensureCapacity implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("ensureCapacity()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.ensureCapacity(99);
+ harness.check(m1.capacity() >= 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/firstElement.java b/gnu/testlet/javax/swing/DefaultListModel/firstElement.java
new file mode 100644
index 00000000..b86c8598
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/firstElement.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the firstElement() method in the {@link DefaultListModel} class.
+ */
+public class firstElement implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("firstElement()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ harness.check(m1.firstElement(), "A");
+
+ m1.add(0, null);
+ harness.check(m1.firstElement(), null);
+
+ m1.clear();
+ boolean pass = false;
+ try
+ {
+ /* Object o = */ m1.firstElement();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/get.java b/gnu/testlet/javax/swing/DefaultListModel/get.java
new file mode 100644
index 00000000..98d80047
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/get.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the get() method in the {@link DefaultListModel} class.
+ */
+public class get implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("get(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+
+ harness.check(m1.get(0), "A");
+ harness.check(m1.get(1), "B");
+ harness.check(m1.get(2), "C");
+
+ boolean pass = false;
+ try
+ {
+ Object o = m1.get(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Object o = m1.get(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/getElementAt.java b/gnu/testlet/javax/swing/DefaultListModel/getElementAt.java
new file mode 100644
index 00000000..e5dd5de9
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/getElementAt.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the getElementAt() method in the {@link DefaultListModel} class.
+ */
+public class getElementAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getElementAt(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+
+ harness.check(m1.getElementAt(0), "A");
+ harness.check(m1.getElementAt(1), "B");
+ harness.check(m1.getElementAt(2), "C");
+
+ boolean pass = false;
+ try
+ {
+ Object o = m1.getElementAt(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ Object o = m1.getElementAt(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/getSize.java b/gnu/testlet/javax/swing/DefaultListModel/getSize.java
new file mode 100644
index 00000000..7e8722cd
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/getSize.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the getSize() method in the {@link DefaultListModel} class.
+ */
+public class getSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getSize()");
+ DefaultListModel m1 = new DefaultListModel();
+ harness.check(m1.getSize(), 0);
+ m1.addElement("A");
+ harness.check(m1.getSize(), 1);
+ m1.addElement("B");
+ harness.check(m1.getSize(), 2);
+ m1.clear();
+ harness.check(m1.getSize(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/indexOf.java b/gnu/testlet/javax/swing/DefaultListModel/indexOf.java
new file mode 100644
index 00000000..836ec9a9
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/indexOf.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the indexOf() method in the {@link DefaultListModel} class.
+ */
+public class indexOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("indexOf(Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement(null);
+ m1.addElement("C");
+ m1.addElement("B");
+ m1.addElement("A");
+ harness.check(m1.indexOf("A"), 0);
+ harness.check(m1.indexOf("B"), 1);
+ harness.check(m1.indexOf("C"), 2);
+ harness.check(m1.indexOf(null), 3);
+ harness.check(m1.indexOf("Z"), -1);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("indexOf(Object, int)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement(null);
+ m1.addElement("C");
+ m1.addElement("B");
+ m1.addElement("A");
+ harness.check(m1.indexOf("A", 0), 0);
+ harness.check(m1.indexOf("A", 1), 6);
+ harness.check(m1.indexOf("B", 0), 1);
+ harness.check(m1.indexOf("B", 1), 1);
+ harness.check(m1.indexOf("B", 2), 5);
+ harness.check(m1.indexOf(null, 0), 3);
+ harness.check(m1.indexOf(null, 3), 3);
+ harness.check(m1.indexOf(null, 4), -1);
+ harness.check(m1.indexOf("Z", 0), -1);
+ harness.check(m1.indexOf("Z", 99), -1);
+ boolean pass = false;
+ try
+ {
+ int i = m1.indexOf("Z", -1);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java b/gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java
new file mode 100644
index 00000000..7c36d44e
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/insertElementAt.java
@@ -0,0 +1,113 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the insertElementAt() method in the {@link DefaultListModel} class.
+ */
+public class insertElementAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("insertElementAt(int, Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ boolean pass = false;
+ try
+ {
+ m1.insertElementAt("X", -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.insertElementAt("X", 1);
+ }
+ catch (ArrayIndexOutOfBoundsException e) {
+ pass = true;
+ }
+ harness.check(pass);
+
+ m1.insertElementAt("A", 0);
+ harness.check(m1.getElementAt(0).equals("A"));
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ m1.insertElementAt("B", 1);
+ harness.check(m1.getElementAt(1).equals("B"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.insertElementAt("C", 2);
+ harness.check(m1.getElementAt(2).equals("C"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ m1.insertElementAt("Z", 0);
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(3).equals("C"));
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ m1.insertElementAt("Y", 1);
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(1).equals("Y"));
+ harness.check(m1.getElementAt(4).equals("C"));
+ m1.insertElementAt(null, 2);
+ harness.check(m1.getElementAt(0).equals("Z"));
+ harness.check(m1.getElementAt(1).equals("Y"));
+ harness.check(m1.getElementAt(2) == null);
+ harness.check(m1.getElementAt(5).equals("C"));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/isEmpty.java b/gnu/testlet/javax/swing/DefaultListModel/isEmpty.java
new file mode 100644
index 00000000..24dd42a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/isEmpty.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the isEmpty() method in the {@link DefaultListModel} class.
+ */
+public class isEmpty implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("isEmpty()");
+ DefaultListModel m1 = new DefaultListModel();
+ harness.check(m1.isEmpty());
+ m1.addElement("A");
+ harness.check(!m1.isEmpty());
+ m1.clear();
+ harness.check(m1.isEmpty());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/lastElement.java b/gnu/testlet/javax/swing/DefaultListModel/lastElement.java
new file mode 100644
index 00000000..b5da3eab
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/lastElement.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the lastElement() method in the {@link DefaultListModel} class.
+ */
+public class lastElement implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("lastElement()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ harness.check(m1.lastElement(), "C");
+
+ m1.addElement(null);
+ harness.check(m1.lastElement(), null);
+
+ m1.clear();
+ boolean pass = false;
+ try
+ {
+ /* Object o = */ m1.lastElement();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/lastIndexOf.java b/gnu/testlet/javax/swing/DefaultListModel/lastIndexOf.java
new file mode 100644
index 00000000..b5c718a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/lastIndexOf.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the lastIndexOf() method in the {@link DefaultListModel} class.
+ */
+public class lastIndexOf implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("lastIndexOf(Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement(null);
+ m1.addElement("C");
+ m1.addElement("B");
+ m1.addElement("A");
+ harness.check(m1.lastIndexOf("A"), 6);
+ harness.check(m1.lastIndexOf("B"), 5);
+ harness.check(m1.lastIndexOf("C"), 4);
+ harness.check(m1.lastIndexOf(null), 3);
+ harness.check(m1.lastIndexOf("Z"), -1);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("lastIndexOf(Object, int)");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement(null);
+ m1.addElement("C");
+ m1.addElement("B");
+ m1.addElement("A");
+ harness.check(m1.lastIndexOf("A", 6), 6);
+ harness.check(m1.lastIndexOf("A", 5), 0);
+ harness.check(m1.lastIndexOf("B", 6), 5);
+ harness.check(m1.lastIndexOf("B", 5), 5);
+ harness.check(m1.lastIndexOf("B", 4), 1);
+ harness.check(m1.lastIndexOf(null, 4), 3);
+ harness.check(m1.lastIndexOf(null, 3), 3);
+ harness.check(m1.lastIndexOf(null, 2), -1);
+ harness.check(m1.lastIndexOf("Z", 0), -1);
+ harness.check(m1.lastIndexOf("Z", -1), -1);
+
+ boolean pass = false;
+ try
+ {
+ int i = m1.lastIndexOf("Z", 99);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/remove.java b/gnu/testlet/javax/swing/DefaultListModel/remove.java
new file mode 100644
index 00000000..07da6765
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/remove.java
@@ -0,0 +1,95 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the remove() method in the {@link DefaultListModel} class.
+ */
+public class remove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("remove(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement("D");
+ m1.addElement("E");
+ m1.addElement("F");
+
+ Object removed = m1.remove(2);
+ harness.check(m1.get(2), "D");
+ harness.check(removed, "C");
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ removed = m1.remove(0);
+ harness.check(m1.get(0), "B");
+ harness.check(removed, "A");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+
+ boolean pass = false;
+ try
+ {
+ m1.remove(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.remove(m1.size());
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/removeAllElements.java b/gnu/testlet/javax/swing/DefaultListModel/removeAllElements.java
new file mode 100644
index 00000000..f39531ce
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/removeAllElements.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the removeAllElements() method in the {@link DefaultListModel} class.
+ */
+public class removeAllElements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("removeAllElements()");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.removeAllElements();
+ harness.check(m1.isEmpty());
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.removeAllElements();
+ harness.check(m1.isEmpty());
+ harness.check(listener.getEvent(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/removeElement.java b/gnu/testlet/javax/swing/DefaultListModel/removeElement.java
new file mode 100644
index 00000000..64b691b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/removeElement.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the removeElement() method in the {@link DefaultListModel} class.
+ */
+public class removeElement implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("removeElement(Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement("D");
+ m1.addElement("D");
+ m1.addElement("C");
+ m1.addElement("B");
+ m1.addElement("A");
+
+ boolean removed = m1.removeElement("A");
+ harness.check(m1.lastElement(), "A");
+ harness.check(m1.size(), 7);
+ harness.check(removed);
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ removed = m1.removeElement(null);
+ harness.check(m1.size(), 7);
+ harness.check(!removed);
+ harness.check(listener.getEvent(), null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java b/gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java
new file mode 100644
index 00000000..ce8ad8b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/removeElementAt.java
@@ -0,0 +1,95 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the removeElementAt() method in the {@link DefaultListModel} class.
+ */
+public class removeElementAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("removeElementAt(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement("D");
+ m1.addElement("E");
+ m1.addElement("F");
+
+ m1.removeElementAt(2);
+ harness.check(m1.get(2), "D");
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ m1.removeElementAt(0);
+ harness.check(m1.get(0), "B");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ boolean pass = false;
+ try
+ {
+ m1.removeElementAt(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.removeElementAt(99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/removeRange.java b/gnu/testlet/javax/swing/DefaultListModel/removeRange.java
new file mode 100644
index 00000000..05185c15
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/removeRange.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the removeRange() method in the {@link DefaultListModel} class.
+ */
+public class removeRange implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("removeRange(int, int)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.addElement("D");
+ m1.addElement("E");
+ m1.addElement("F");
+
+ m1.removeRange(0, 1);
+ harness.check(m1.size(), 4);
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ boolean pass = false;
+ try
+ {
+ m1.removeRange(1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.removeRange(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/set.java b/gnu/testlet/javax/swing/DefaultListModel/set.java
new file mode 100644
index 00000000..7e4ef1c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/set.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the set() method in the {@link DefaultListModel} class.
+ */
+public class set implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("set(int, Object)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+
+ Object old = m1.set(0, "X");
+ harness.check(m1.get(0), "X");
+ harness.check(old, "A");
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ old = m1.set(1, "Y");
+ harness.check(m1.get(1), "Y");
+ harness.check(old, "B");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ old = m1.set(2, "Z");
+ harness.check(m1.get(2), "Z");
+ harness.check(old, "C");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ old = m1.set(1, null);
+ harness.check(m1.get(1), null);
+ harness.check(old, "Y");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ boolean pass = false;
+ try
+ {
+ m1.set(-1, "ZZ");
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.set(3, "ZZ");
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/setElementAt.java b/gnu/testlet/javax/swing/DefaultListModel/setElementAt.java
new file mode 100644
index 00000000..4e7608cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/setElementAt.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the setElementAt() method in the {@link DefaultListModel} class.
+ */
+public class setElementAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setElementAt()");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+
+ m1.setElementAt("X", 0);
+ harness.check(m1.get(0), "X");
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 0);
+ harness.check(event.getIndex1(), 0);
+ listener.setListDataEvent(null);
+
+ m1.setElementAt("Y", 1);
+ harness.check(m1.get(1), "Y");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.setElementAt("Z", 2);
+ harness.check(m1.get(2), "Z");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 2);
+ harness.check(event.getIndex1(), 2);
+ listener.setListDataEvent(null);
+
+ m1.setElementAt("Y", 1);
+ harness.check(m1.get(1), "Y");
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ m1.setElementAt(null, 1);
+ harness.check(m1.get(1), null);
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(event.getIndex0(), 1);
+ harness.check(event.getIndex1(), 1);
+ listener.setListDataEvent(null);
+
+ boolean pass = false;
+ try
+ {
+ m1.setElementAt("ZZ", -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.setElementAt("ZZ", 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/setSize.java b/gnu/testlet/javax/swing/DefaultListModel/setSize.java
new file mode 100644
index 00000000..0d4d645f
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/setSize.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+// Uses: MyListDataListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+import javax.swing.event.ListDataEvent;
+
+/**
+ * Some tests for the setSize() method in the {@link DefaultListModel} class.
+ */
+public class setSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setSize(int)");
+ DefaultListModel m1 = new DefaultListModel();
+ MyListDataListener listener = new MyListDataListener();
+ m1.addListDataListener(listener);
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.addElement("C");
+ m1.setSize(5);
+
+ harness.check(m1.size(), 5); // 1
+ harness.check(m1.getElementAt(3), null); // 2
+ harness.check(m1.getElementAt(4), null); // 3
+ ListDataEvent event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_ADDED); // 4
+ harness.check(event.getIndex0(), 3); // 5
+ harness.check(event.getIndex1(), 4); // 6
+ listener.setListDataEvent(null);
+
+ m1.setSize(2);
+ harness.check(m1.size(), 2); // 7
+ harness.check(m1.getElementAt(0), "A"); // 8
+ harness.check(m1.getElementAt(1), "B"); // 9
+ event = listener.getEvent();
+ harness.check(event.getType(), ListDataEvent.INTERVAL_REMOVED); // 10
+ harness.check(event.getIndex0(), 2); // 11
+ harness.check(event.getIndex1(), 4); // 12
+ listener.setListDataEvent(null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/size.java b/gnu/testlet/javax/swing/DefaultListModel/size.java
new file mode 100644
index 00000000..6e220f3c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/size.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the size() method in the {@link DefaultListModel} class.
+ */
+public class size implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("size()");
+ DefaultListModel m1 = new DefaultListModel();
+ harness.check(m1.size(), 0);
+ m1.addElement("A");
+ harness.check(m1.size(), 1);
+ m1.addElement("B");
+ harness.check(m1.size(), 2);
+ m1.clear();
+ harness.check(m1.size(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/toArray.java b/gnu/testlet/javax/swing/DefaultListModel/toArray.java
new file mode 100644
index 00000000..2f2076f2
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/toArray.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the toArray() method in the {@link DefaultListModel} class.
+ */
+public class toArray implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("toArray()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ Object[] a1 = m1.toArray();
+ harness.check(a1.length, 2);
+ harness.check(a1[0], "A");
+ harness.check(a1[1], "B");
+
+ m1.clear();
+ a1 = m1.toArray();
+ harness.check(a1.length, 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListModel/trimToSize.java b/gnu/testlet/javax/swing/DefaultListModel/trimToSize.java
new file mode 100644
index 00000000..ed60e742
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListModel/trimToSize.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.DefaultListModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListModel;
+
+/**
+ * Some tests for the trimToSize() method in the {@link DefaultListModel} class.
+ */
+public class trimToSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("trimToSize()");
+ DefaultListModel m1 = new DefaultListModel();
+ m1.addElement("A");
+ m1.addElement("B");
+ m1.trimToSize();
+ harness.check(m1.capacity(), 2);
+
+ DefaultListModel m2 = new DefaultListModel();
+ m2.trimToSize();
+ harness.check(m2.capacity(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Entries b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Entries
new file mode 100644
index 00000000..e8c68a4c
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Entries
@@ -0,0 +1,29 @@
+/addListSelectionListener.java/1.1/Wed May 31 09:07:43 2006//
+/addSelectionInterval.java/1.1/Wed May 31 09:07:43 2006//
+/clearSelection.java/1.1/Wed May 31 09:07:43 2006//
+/clone.java/1.1/Wed May 31 09:07:43 2006//
+/constructor.java/1.2/Thu Jun 15 18:02:06 2006//
+/getAnchorSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/getLeadSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/getListSelectionListeners.java/1.1/Wed May 31 09:07:44 2006//
+/getListeners.java/1.2/Wed Dec 27 15:48:18 2006//
+/getMaxSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/getMinSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/getSelectionMode.java/1.1/Wed May 31 09:07:44 2006//
+/getValueIsAdjusting.java/1.1/Wed May 31 09:07:44 2006//
+/insertIndexInterval.java/1.1/Wed May 31 09:07:44 2006//
+/isLeadAnchorNotificationEnabled.java/1.1/Wed May 31 09:07:44 2006//
+/isSelectedIndex.java/1.1/Wed May 31 09:07:44 2006//
+/isSelectionEmpty.java/1.1/Wed May 31 09:07:44 2006//
+/leadSelectionIndex.java/1.1/Thu Oct 20 20:24:22 2005//
+/moveLeadSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/removeIndexInterval.java/1.1/Wed May 31 09:07:44 2006//
+/removeListSelectionListener.java/1.1/Wed May 31 09:07:44 2006//
+/removeSelectionInterval.java/1.1/Wed May 31 09:07:44 2006//
+/setAnchorSelectionIndex.java/1.1/Wed May 31 09:07:44 2006//
+/setLeadSelectionIndex.java/1.2/Wed May 31 08:08:23 2006//
+/setSelectionInterval.java/1.1/Wed May 31 09:07:44 2006//
+/setSelectionMode.java/1.1/Wed May 31 09:07:44 2006//
+/setValueIsAdjusting.java/1.1/Wed May 31 09:07:44 2006//
+/toString.java/1.1/Wed May 31 09:07:44 2006//
+D
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Repository b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Repository
new file mode 100644
index 00000000..df2a3032
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/DefaultListSelectionModel
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Root b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/addListSelectionListener.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/addListSelectionListener.java
new file mode 100644
index 00000000..e891ed93
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/addListSelectionListener.java
@@ -0,0 +1,55 @@
+/* addListSelectionListener.java -- some checks for the addSelectionListener()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class addListSelectionListener
+ implements Testlet, ListSelectionListener {
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ harness.check(m.getListSelectionListeners().length, 1);
+ harness.check(m.getListSelectionListeners()[0], this);
+
+ // try null
+ m.addListSelectionListener(null);
+ harness.check(m.getListSelectionListeners().length, 1);
+ harness.check(m.getListSelectionListeners()[0], this);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/addSelectionInterval.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/addSelectionInterval.java
new file mode 100644
index 00000000..17bc5fa6
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/addSelectionInterval.java
@@ -0,0 +1,204 @@
+/* addSelectionInterval.java -- some checks for the addSelectionInterval()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class addSelectionInterval implements Testlet, ListSelectionListener
+{
+
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingleSelection(harness);
+ testSingleIntervalSelection(harness);
+ testMultipleIntervalSelection(harness);
+ }
+
+ private void testSingleSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.addSelectionInterval(1, 3);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(m.getMaxSelectionIndex(), 3);
+ harness.check(m.getMinSelectionIndex(), 3);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 3);
+
+ m.clearSelection();
+ m.addSelectionInterval(3, 1);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getMaxSelectionIndex(), 1);
+ harness.check(m.getMinSelectionIndex(), 1);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 3);
+ }
+
+ private void testSingleIntervalSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(1, 3);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(m.getMaxSelectionIndex(), 3);
+ harness.check(m.getMinSelectionIndex(), 1);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 3);
+
+ // add a non-adjacent interval
+ m.addSelectionInterval(5, 6);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+ harness.check(m.getAnchorSelectionIndex(), 5);
+ harness.check(m.getLeadSelectionIndex(), 6);
+ harness.check(m.getMaxSelectionIndex(), 6);
+ harness.check(m.getMinSelectionIndex(), 5);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 6);
+
+ // add an adjacent interval
+ m.addSelectionInterval(7, 8);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.isSelectedIndex(8), true);
+ harness.check(m.isSelectedIndex(9), false);
+ harness.check(m.getAnchorSelectionIndex(), 7);
+ harness.check(m.getLeadSelectionIndex(), 8);
+ harness.check(m.getMaxSelectionIndex(), 8);
+ harness.check(m.getMinSelectionIndex(), 5);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 5);
+ harness.check(lastEvent.getLastIndex(), 8);
+
+ // add another adjacent interval
+ m.addSelectionInterval(3, 4);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.isSelectedIndex(8), true);
+ harness.check(m.isSelectedIndex(9), false);
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 4);
+ harness.check(m.getMaxSelectionIndex(), 8);
+ harness.check(m.getMinSelectionIndex(), 3);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 8);
+
+ m.clearSelection();
+ m.addSelectionInterval(3, 1);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getMaxSelectionIndex(), 3);
+ harness.check(m.getMinSelectionIndex(), 1);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 4); // this is 4 because that
+ // is the old lead selection
+ }
+
+ private void testMultipleIntervalSelection(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addSelectionInterval(1, 3);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+
+ m.clearSelection();
+ m.addSelectionInterval(2, 1);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), false);
+
+ // check what happens for negative indices...
+ m.clearSelection();
+ m.addSelectionInterval(-1, 1);
+ harness.check(m.isSelectedIndex(-2), false);
+ harness.check(m.isSelectedIndex(-1), false);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/clearSelection.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/clearSelection.java
new file mode 100644
index 00000000..385aadce
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/clearSelection.java
@@ -0,0 +1,133 @@
+/* clearSelection.java -- some checks for the clearSelection()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class clearSelection implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingleSelection(harness);
+ testSingleIntervalSelection(harness);
+ testMultipleIntervalSelection(harness);
+ }
+
+ private void testSingleSelection(TestHarness harness)
+ {
+ // clearing an empty selection generates no event
+ harness.checkPoint("SINGLE_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.addListSelectionListener(this);
+ m.clearSelection();
+ harness.check(lastEvent, null);
+
+ harness.checkPoint("SINGLE_SELECTION (2)");
+ m.setSelectionInterval(3, 3);
+ lastEvent = null;
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty());
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 3);
+ }
+
+ private void testSingleIntervalSelection(TestHarness harness)
+ {
+ // check 1 : clearing an empty selection generates no event
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.addListSelectionListener(this);
+ harness.check(m.isSelectionEmpty(), true);
+ lastEvent = null;
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(lastEvent, null);
+
+ // check 2 : clearing a selection generates an event with first and last
+ // indices covering the former selection
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (2)");
+ m.addSelectionInterval(10, 20);
+ lastEvent = null;
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(m.isSelectedIndex(10), false);
+ harness.check(m.getAnchorSelectionIndex(), 10);
+ harness.check(m.getLeadSelectionIndex(), 20);
+ harness.check(m.getMinSelectionIndex(), -1);
+ harness.check(m.getMaxSelectionIndex(), -1);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 10);
+ harness.check(lastEvent.getLastIndex(), 20);
+ }
+
+ private void testMultipleIntervalSelection(TestHarness harness)
+ {
+ // check 1 : clearing an empty selection generates no event
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.addListSelectionListener(this);
+ harness.check(m.isSelectionEmpty(), true);
+ lastEvent = null;
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(lastEvent, null);
+
+ // check 2 : clearing a selection generates an event with first and last
+ // indices covering the former selection
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION (2)");
+ m.addSelectionInterval(2, 3);
+ m.addSelectionInterval(12, 13);
+ lastEvent = null;
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(m.getAnchorSelectionIndex(), 12);
+ harness.check(m.getLeadSelectionIndex(), 13);
+ harness.check(m.getMinSelectionIndex(), -1);
+ harness.check(m.getMaxSelectionIndex(), -1);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 13);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/clone.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/clone.java
new file mode 100644
index 00000000..a4283dec
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/clone.java
@@ -0,0 +1,78 @@
+/* clone.java -- some checks for the clone()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class clone implements Testlet, ListSelectionListener
+{
+ public void valueChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m1 = new DefaultListSelectionModel();
+ m1.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m1.setLeadAnchorNotificationEnabled(false);
+ m1.addListSelectionListener(this);
+ m1.addSelectionInterval(5, 9);
+
+ DefaultListSelectionModel m2 = null;
+ try
+ {
+ m2 = (DefaultListSelectionModel) m1.clone();
+ }
+ catch (CloneNotSupportedException e)
+ {
+
+ }
+ harness.check(m2.getSelectionMode(),
+ ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ harness.check(m2.isLeadAnchorNotificationEnabled(), false);
+ harness.check(m2.isSelectedIndex(4), false);
+ harness.check(m2.isSelectedIndex(5), true);
+ harness.check(m2.isSelectedIndex(9), true);
+ harness.check(m2.isSelectedIndex(10), false);
+
+ // confirm that m1 and m2 are independent
+ m2.clearSelection();
+ harness.check(m2.isSelectionEmpty(), true);
+ harness.check(m1.isSelectionEmpty(), false);
+
+ // confirm that m2 doesn't have any listeners
+ ListSelectionListener[] listeners = m2.getListSelectionListeners();
+ harness.check(listeners.length, 0);
+ listeners = m1.getListSelectionListeners();
+ harness.check(listeners.length, 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/constructor.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/constructor.java
new file mode 100644
index 00000000..d621e7f6
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/constructor.java
@@ -0,0 +1,48 @@
+/* constructor.java -- some checks for the constructor in the
+ DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ harness.check(m.isLeadAnchorNotificationEnabled(), true);
+ harness.check(m.getAnchorSelectionIndex(), -1);
+ harness.check(m.getLeadSelectionIndex(), -1);
+ harness.check(m.getMaxSelectionIndex(), -1);
+ harness.check(m.getMinSelectionIndex(), -1);
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(m.getValueIsAdjusting(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getAnchorSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getAnchorSelectionIndex.java
new file mode 100644
index 00000000..6a3424d4
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getAnchorSelectionIndex.java
@@ -0,0 +1,46 @@
+/* getAnchorSelectionIndex.java -- some checks for the
+ getAnchorSelectionIndex() method in the DefaultListSelectionModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class getAnchorSelectionIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getAnchorSelectionIndex(), -1);
+ m.setAnchorSelectionIndex(99);
+ harness.check(m.getAnchorSelectionIndex(), 99);
+ m.clearSelection();
+ harness.check(m.getAnchorSelectionIndex(), 99);
+ m.addSelectionInterval(15, 11);
+ harness.check(m.getAnchorSelectionIndex(), 15);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getLeadSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getLeadSelectionIndex.java
new file mode 100644
index 00000000..863bf316
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getLeadSelectionIndex.java
@@ -0,0 +1,48 @@
+/* getLeadSelectionIndex.java -- some checks for the getLeadSelectionIndex()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class getLeadSelectionIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getLeadSelectionIndex(), -1);
+ m.setAnchorSelectionIndex(1);
+ m.setLeadSelectionIndex(3);
+ harness.check(m.getLeadSelectionIndex(), 3);
+
+ m.clearSelection();
+ harness.check(m.getLeadSelectionIndex(), 3);
+
+ m.addSelectionInterval(15, 11);
+ harness.check(m.getLeadSelectionIndex(), 11);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getListSelectionListeners.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getListSelectionListeners.java
new file mode 100644
index 00000000..784ca13b
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getListSelectionListeners.java
@@ -0,0 +1,54 @@
+/* getListSelectionListeners.java -- some checks for the
+ getSelectionListeners() method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class getListSelectionListeners
+ implements Testlet, ListSelectionListener
+{
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ ListSelectionListener[] listeners = m.getListSelectionListeners();
+ harness.check(listeners.length, 0);
+
+ m.addListSelectionListener(this);
+ listeners = m.getListSelectionListeners();
+ harness.check(listeners[0], this);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java
new file mode 100644
index 00000000..7402e519
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java
@@ -0,0 +1,68 @@
+/* getListeners.java -- some checks for the getListeners()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class getListeners implements Testlet, ListSelectionListener
+{
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ ListSelectionListener[] listeners
+ = (ListSelectionListener[]) m.getListeners(ListSelectionListener.class);
+ harness.check(listeners.length, 0);
+
+ m.addListSelectionListener(this);
+ listeners = (ListSelectionListener[])
+ m.getListeners(ListSelectionListener.class);
+ harness.check(listeners[0], this);
+
+ /* Doesn't compile with 1.5
+ boolean pass = false;
+ try
+ {
+ m.getListeners(String.class);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getMaxSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getMaxSelectionIndex.java
new file mode 100644
index 00000000..7de01c86
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getMaxSelectionIndex.java
@@ -0,0 +1,43 @@
+/* getMaxSelectionIndex.java -- some checks for the getMaxSelectionIndex()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class getMaxSelectionIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getMaxSelectionIndex(), -1);
+ m.addSelectionInterval(99, 101);
+ harness.check(m.getMaxSelectionIndex(), 101);
+ m.clearSelection();
+ harness.check(m.getMaxSelectionIndex(), -1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getMinSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getMinSelectionIndex.java
new file mode 100644
index 00000000..918eb322
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getMinSelectionIndex.java
@@ -0,0 +1,43 @@
+/* getMinSelectionIndex.java -- some checks for the getMinSelectionIndex()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class getMinSelectionIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getMinSelectionIndex(), -1);
+ m.addSelectionInterval(99, 101);
+ harness.check(m.getMinSelectionIndex(), 99);
+ m.clearSelection();
+ harness.check(m.getMinSelectionIndex(), -1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getSelectionMode.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getSelectionMode.java
new file mode 100644
index 00000000..8861c50b
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getSelectionMode.java
@@ -0,0 +1,44 @@
+/* getSelectionMode.java -- some checks for the getSelectionMode()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+
+public class getSelectionMode implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/getValueIsAdjusting.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/getValueIsAdjusting.java
new file mode 100644
index 00000000..a1e7f824
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/getValueIsAdjusting.java
@@ -0,0 +1,41 @@
+/* getValueIsAdjusting.java -- some checks for the getValueIsAdjusting()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class getValueIsAdjusting implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.getValueIsAdjusting(), false);
+ m.setValueIsAdjusting(true);
+ harness.check(m.getValueIsAdjusting(), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/insertIndexInterval.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/insertIndexInterval.java
new file mode 100644
index 00000000..d22bda34
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/insertIndexInterval.java
@@ -0,0 +1,230 @@
+/* insertIndexInterval.java -- some checks for the insertIndexInterval()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class insertIndexInterval implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingleSelection(harness);
+ testSingleInterval(harness);
+ testMultipleInterval(harness);
+ }
+
+ private void testSingleSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.addSelectionInterval(3, 3);
+ m.addListSelectionListener(this);
+ m.insertIndexInterval(3, 2, true);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.getAnchorSelectionIndex(), 5);
+ harness.check(m.getLeadSelectionIndex(), 5);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 5);
+
+ harness.checkPoint("SINGLE_SELECTION (2)");
+ lastEvent = null;
+ m.insertIndexInterval(5, 2, false); // this does nothing
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+ harness.check(lastEvent, null);
+
+ // try negative index
+ harness.checkPoint("SINGLE_SELECTION (3)");
+ boolean pass = false;
+ try
+ {
+ m.insertIndexInterval(-1, 1, true);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative count
+ harness.checkPoint("SINGLE_SELECTION (4)");
+ pass = false;
+ try
+ {
+ m.insertIndexInterval(0, -1, true);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero count
+ harness.checkPoint("SINGLE_SELECTION (5)");
+ lastEvent = null;
+ m.insertIndexInterval(0, 0, true);
+ harness.check(lastEvent.getFirstIndex(), 0);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+ private void testSingleInterval(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.setSelectionInterval(3, 3);
+ m.addListSelectionListener(this);
+
+ // here, we insert two new items in the list right before the selected item
+ // 3 (which moves up to position 5).
+ m.insertIndexInterval(3, 2, true);
+ harness.check(m.isSelectedIndex(3), true); // FIXME: surely wrong?
+ harness.check(m.isSelectedIndex(4), true); // FIXME: likewise?
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.getAnchorSelectionIndex(), 5);
+ harness.check(m.getLeadSelectionIndex(), 5);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 5);
+
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (2)");
+ m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.setSelectionInterval(3, 3);
+ m.addListSelectionListener(this);
+ lastEvent = null;
+
+ // here, we insert two new items in the list right AFTER the selected item
+ // 3
+ m.insertIndexInterval(3, 2, false);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true); // FIXME: surely wrong?
+ harness.check(m.isSelectedIndex(5), true); // FIXME: likewise?
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 4);
+ harness.check(lastEvent.getLastIndex(), 5);
+
+ // try negative index
+ boolean pass = false;
+ try
+ {
+ m.insertIndexInterval(-1, 1, true);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative count
+ pass = false;
+ try
+ {
+ m.insertIndexInterval(0, -1, true);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try zero count
+ lastEvent = null;
+ m.insertIndexInterval(0, 0, true);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 0);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+ private void testMultipleInterval(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(1, 1);
+ m.addSelectionInterval(7, 7);
+ m.addSelectionInterval(3, 5);
+ m.addListSelectionListener(this);
+ m.insertIndexInterval(2, 2, true);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.isSelectedIndex(8), false);
+ harness.check(m.isSelectedIndex(9), true);
+ harness.check(m.isSelectedIndex(10), false);
+ harness.check(m.getAnchorSelectionIndex(), 5);
+ harness.check(m.getLeadSelectionIndex(), 7);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 9);
+
+ m.insertIndexInterval(1, 2, false);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.isSelectedIndex(8), true);
+ harness.check(m.isSelectedIndex(9), true);
+ harness.check(m.isSelectedIndex(10), false);
+ harness.check(m.isSelectedIndex(11), true);
+ harness.check(m.isSelectedIndex(12), false);
+ harness.check(m.getAnchorSelectionIndex(), 7);
+ harness.check(m.getLeadSelectionIndex(), 9);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 11);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/isLeadAnchorNotificationEnabled.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/isLeadAnchorNotificationEnabled.java
new file mode 100644
index 00000000..6ac4442b
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/isLeadAnchorNotificationEnabled.java
@@ -0,0 +1,42 @@
+/* isLeadAnchorNotificationEnabled.java -- some checks for the
+ isLeadAnchorNotificationEnabled() method in the
+ DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class isLeadAnchorNotificationEnabled implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.isLeadAnchorNotificationEnabled(), true);
+ m.setLeadAnchorNotificationEnabled(false);
+ harness.check(m.isLeadAnchorNotificationEnabled(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectedIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectedIndex.java
new file mode 100644
index 00000000..d0ec0760
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectedIndex.java
@@ -0,0 +1,47 @@
+/* isSelectedIndex.java -- some checks for the isSelectedIndex()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class isSelectedIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.isSelectedIndex(99), false);
+ m.addSelectionInterval(99, 99);
+ harness.check(m.isSelectedIndex(99), true);
+ m.clearSelection();
+ harness.check(m.isSelectedIndex(99), false);
+
+ // try a negative index
+ harness.check(m.isSelectedIndex(-1), false);
+ harness.check(m.isSelectedIndex(-2), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectionEmpty.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectionEmpty.java
new file mode 100644
index 00000000..496a2296
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/isSelectionEmpty.java
@@ -0,0 +1,43 @@
+/* isSelectionEmpty.java -- some checks for the isSelectionEmpty()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class isSelectionEmpty implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.isSelectionEmpty(), true);
+ m.addSelectionInterval(99, 99);
+ harness.check(m.isSelectionEmpty(), false);
+ m.clearSelection();
+ harness.check(m.isSelectionEmpty(), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/leadSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/leadSelectionIndex.java
new file mode 100644
index 00000000..9c698942
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/leadSelectionIndex.java
@@ -0,0 +1,51 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JList;
+import javax.swing.DefaultListModel;
+import javax.swing.ListSelectionModel;
+
+/**
+ * Tests if DefaultListSelectionModel.setLeadSelectionIndex checks the selection
+ * mode to see if it should extend the selection or set the selection.
+ */
+public class leadSelectionIndex implements Testlet {
+
+ public void test(TestHarness harness) {
+ DefaultListModel v = new DefaultListModel();
+ v.addElement("0");
+ v.addElement("1");
+ v.addElement("2");
+ v.addElement("3");
+ v.addElement("4");
+ JList a = new JList(v);
+ a.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ a.setSelectedIndex(1);
+ a.getSelectionModel().setLeadSelectionIndex(3);
+ if (!(a.getSelectedIndices().length == 1 && a.getSelectedIndices()[0] == 3))
+ harness.fail("setLeadSelectionIndex should check the selection mode");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/moveLeadSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/moveLeadSelectionIndex.java
new file mode 100644
index 00000000..c2f996ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/moveLeadSelectionIndex.java
@@ -0,0 +1,57 @@
+/* moveLeadSelectionIndex.java -- some checks for the moveLeadSelectionIndex()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class moveLeadSelectionIndex implements Testlet, ListSelectionListener {
+
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addSelectionInterval(3, 5);
+ m.addListSelectionListener(this);
+ m.moveLeadSelectionIndex(7);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 5);
+ harness.check(lastEvent.getLastIndex(), 7);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/removeIndexInterval.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeIndexInterval.java
new file mode 100644
index 00000000..155d0561
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeIndexInterval.java
@@ -0,0 +1,153 @@
+/* removeIndexInterval.java -- some checks for the removeIndexInterval()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class removeIndexInterval implements Testlet, ListSelectionListener
+{
+ private ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingleSelection(harness);
+ testSingleInterval(harness);
+ testMultipleInterval(harness);
+ }
+
+ public void testSingleSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+ // check 1 - the selected item is in the removed range
+ m.addSelectionInterval(6, 7);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.getAnchorSelectionIndex(), 7);
+ harness.check(m.getLeadSelectionIndex(), 7);
+ m.addListSelectionListener(this);
+ m.removeIndexInterval(5, 7);
+ harness.check(m.isSelectionEmpty(), true);
+ harness.check(m.getAnchorSelectionIndex(), 4);
+ harness.check(m.getLeadSelectionIndex(), 4);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 4);
+ harness.check(lastEvent.getLastIndex(), 7);
+
+ // check 2 - the selected item is below the removed range
+ m.setSelectionInterval(1, 1);
+ lastEvent = null;
+ m.removeIndexInterval(2, 4);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(lastEvent, null); // no event, because nothing changed
+
+ // check 3 - the selected item is above the removed range
+ m.setSelectionInterval(5, 5);
+ lastEvent = null;
+ m.removeIndexInterval(2, 4);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.getLeadSelectionIndex(), 2);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 5);
+ }
+
+ public void testSingleInterval(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+
+ // check 1 - remove the middle of a selection interval
+ m.addSelectionInterval(2, 6);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+ m.addListSelectionListener(this);
+ m.removeIndexInterval(3, 5);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+ public void testMultipleInterval(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(2, 6);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+ m.addListSelectionListener(this);
+ m.removeIndexInterval(3, 5);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/removeListSelectionListener.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeListSelectionListener.java
new file mode 100644
index 00000000..b762a2ec
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeListSelectionListener.java
@@ -0,0 +1,56 @@
+/* removeListSelectionListener.java -- some checks for the
+ removeSelectionListener() method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class removeListSelectionListener
+ implements Testlet, ListSelectionListener
+{
+ public void valueChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ harness.check(m.getListSelectionListeners().length, 1);
+ m.removeListSelectionListener(this);
+ harness.check(m.getListSelectionListeners().length, 0);
+ // remove a listener that isn't there
+ m.removeListSelectionListener(this);
+ harness.check(m.getListSelectionListeners().length, 0);
+ // try null
+ m.removeListSelectionListener(null);
+ harness.check(m.getListSelectionListeners().length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/removeSelectionInterval.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeSelectionInterval.java
new file mode 100644
index 00000000..7db40d62
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/removeSelectionInterval.java
@@ -0,0 +1,126 @@
+/* removeSelectionInterval.java -- some checks for the
+ removeSelectionInterval() method in the DefaultListSelectionModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class removeSelectionInterval implements Testlet, ListSelectionListener
+{
+ private ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingleSelection(harness);
+ testSingleInterval(harness);
+ testMultipleInterval(harness);
+ }
+
+ public void testSingleSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.addSelectionInterval(1, 2);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), false);
+ m.addListSelectionListener(this);
+ m.removeSelectionInterval(2, 3);
+ harness.check(m.isSelectionEmpty(), true);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 3);
+ }
+
+ public void testSingleInterval(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(2, 6);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+ m.addListSelectionListener(this);
+ m.removeSelectionInterval(3, 5);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+ public void testMultipleInterval(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(2, 6);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+ m.addListSelectionListener(this);
+ m.removeSelectionInterval(3, 5);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), false);
+
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/setAnchorSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/setAnchorSelectionIndex.java
new file mode 100644
index 00000000..5343e6e2
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/setAnchorSelectionIndex.java
@@ -0,0 +1,80 @@
+/* setAnchorSelectionIndex.java -- some checks for the
+ setAnchorSelectionIndex() method in the DefaultListSelectionModel
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class setAnchorSelectionIndex
+ implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addSelectionInterval(2, 4);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.isLeadAnchorNotificationEnabled(), true);
+ m.addListSelectionListener(this);
+ m.setAnchorSelectionIndex(1);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.isSelectedIndex(1), false);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 2);
+
+ // setting the same index generates no event
+ lastEvent = null;
+ m.setAnchorSelectionIndex(1);
+ harness.check(lastEvent, null);
+
+ // try a negative value
+ m.setAnchorSelectionIndex(-2);
+ harness.check(m.getAnchorSelectionIndex(), -2);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), -2);
+ harness.check(lastEvent.getLastIndex(), 1);
+
+ // now try without notification
+ m.setLeadAnchorNotificationEnabled(false);
+ lastEvent = null;
+ m.setAnchorSelectionIndex(2);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(lastEvent, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java
new file mode 100644
index 00000000..638c5684
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/setLeadSelectionIndex.java
@@ -0,0 +1,234 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This checks some functionality of the setLeadSelection method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setLeadSelectionIndex implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ lastEvent = e;
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testSetMinusOne(harness);
+ testSetPositive(harness);
+
+ testSingleSelection(harness);
+ testSingleIntervalSelection(harness);
+ testMultipleIntervalSelection(harness);
+
+ }
+
+ /**
+ * Checks the behaviour when trying to set the lead selection index to -1.
+ * It should set the lead selection index to -1 if and only if the
+ * anchor selection index is also -1.
+ */
+ private void testSetMinusOne(TestHarness harness)
+ {
+ harness.checkPoint("setMinusOne");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ // Set to some value. (works only if anchor selection index is >= 0).
+ m.setAnchorSelectionIndex(1);
+ m.setLeadSelectionIndex(1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ // This should have no effect.
+ m.setLeadSelectionIndex(-1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ // Now set the anchor selection index to -1 and it will work with the
+ // lead selection index too.
+ m.setAnchorSelectionIndex(-1);
+ m.setLeadSelectionIndex(-1);
+ harness.check(m.getLeadSelectionIndex(), -1);
+ }
+
+ /**
+ * Checks the behaviour when trying to set the lead selection index to a
+ * positive integer.
+ * It should set the lead selection index only if the anchor selection index
+ * is also >=.
+ */
+ private void testSetPositive(TestHarness harness)
+ {
+ harness.checkPoint("setPositive");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ // The lead and anchor selection index is -1 initially.
+ harness.check(m.getLeadSelectionIndex(), -1);
+ harness.check(m.getAnchorSelectionIndex(), -1);
+ // This will not work unless the anchor selection index is != -1
+ m.setLeadSelectionIndex(0);
+ harness.check(m.getLeadSelectionIndex(), -1);
+ // Now set the anchor to 0 and it will also work for the lead.
+ m.setAnchorSelectionIndex(0);
+ m.setLeadSelectionIndex(0);
+ harness.check(m.getLeadSelectionIndex(), 0);
+ }
+
+ private void testSingleSelection(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setLeadAnchorNotificationEnabled(true);
+ m.addListSelectionListener(this);
+
+ // starting from an empty selection...
+ m.setLeadSelectionIndex(2);
+ harness.check(m.getLeadSelectionIndex(), -1);
+ harness.check(m.getAnchorSelectionIndex(), -1);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(lastEvent, null);
+
+ // starting from a selection
+ harness.checkPoint("SINGLE_SELECTION (2)");
+ m.setSelectionInterval(2, 2);
+ lastEvent = null;
+ m.setLeadSelectionIndex(1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 2);
+
+ // set the lead selection to -1 is ignored
+ harness.checkPoint("SINGLE_SELECTION (3)");
+ lastEvent = null;
+ m.setLeadSelectionIndex(-1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(lastEvent, null);
+
+ // set the lead selection to -2
+ harness.checkPoint("SINGLE_SELECTION (4)");
+ boolean pass = false;
+ try
+ {
+ m.setLeadSelectionIndex(-2);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testSingleIntervalSelection(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.addListSelectionListener(this);
+
+ // starting from an empty selection...
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (1)");
+ m.setLeadSelectionIndex(2);
+ harness.check(m.getLeadSelectionIndex(), -1);
+ harness.check(m.getAnchorSelectionIndex(), -1);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(lastEvent, null);
+
+ // starting from a selection
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (2)");
+ m.setSelectionInterval(2, 4);
+ lastEvent = null;
+ m.setLeadSelectionIndex(1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 4);
+
+ // setting the lead selection to -1 is ignored
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (3)");
+ lastEvent = null;
+ m.setLeadSelectionIndex(-1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(lastEvent, null);
+
+ // setting the lead selection to -2 fails
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (4)");
+ boolean pass = false;
+ try
+ {
+ m.setLeadSelectionIndex(-2);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+}
+
+ private void testMultipleIntervalSelection(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+
+ m.addSelectionInterval(3, 6);
+ m.addListSelectionListener(this);
+ m.setLeadSelectionIndex(1);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 6);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionInterval.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionInterval.java
new file mode 100644
index 00000000..694cf263
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionInterval.java
@@ -0,0 +1,281 @@
+/* setSelectionInterval.java -- some checks for the setSelectionInterval()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class setSelectionInterval implements Testlet, ListSelectionListener
+{
+ List events = new java.util.ArrayList();
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ testSingle(harness);
+ testSingleInterval(harness);
+ testMultipleInterval(harness);
+ testSingleX(harness);
+ }
+
+ private void testSingle(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.addListSelectionListener(this);
+
+ harness.checkPoint("SINGLE_SELECTION (1)");
+ m.setSelectionInterval(6, 7);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.getAnchorSelectionIndex(), 7);
+ harness.check(m.getLeadSelectionIndex(), 7);
+ ListSelectionEvent lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 7);
+ harness.check(lastEvent.getLastIndex(), 7);
+
+ // no event is generated if we update the same again
+ events.clear();
+ harness.checkPoint("SINGLE_SELECTION (2)");
+ m.setSelectionInterval(6, 7);
+ harness.check(events.size(), 0);
+
+ // now if we set another selection, the event range should cover the old
+ // index too
+ events.clear();
+ harness.checkPoint("SINGLE_SELECTION (3)");
+ m.setSelectionInterval(3, 3);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(7), false);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 7);
+
+ // the anchor can move around independently of the selection, is it
+ // included in the event range? YES
+ harness.checkPoint("SINGLE_SELECTION (4)");
+ m.setAnchorSelectionIndex(5);
+ events.clear();
+ m.setSelectionInterval(4, 4);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 5);
+
+ // try -2 for the initial index
+ harness.checkPoint("SINGLE_SELECTION (5)");
+ m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setSelectionInterval(2, 2);
+ m.addListSelectionListener(this);
+ events.clear();
+ m.setSelectionInterval(-2, 0);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 0);
+ harness.check(lastEvent.getLastIndex(), 2);
+ harness.check(m.getLeadSelectionIndex(), 0);
+ harness.check(m.getAnchorSelectionIndex(), 0);
+
+ // try -1 for the initial index
+ harness.checkPoint("SINGLE_SELECTION (6)");
+ m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setSelectionInterval(2, 2);
+ m.addListSelectionListener(this);
+ events.clear();
+ m.setSelectionInterval(-1, 0);
+ harness.check(events.size(), 0);
+
+ // try -2 for the second index
+ harness.checkPoint("SINGLE_SELECTION (7)");
+ m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setSelectionInterval(2, 2);
+ m.addListSelectionListener(this);
+ events.clear();
+ boolean pass = false;
+ try
+ {
+ m.setSelectionInterval(0, -2);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try -1 for the second index
+ harness.checkPoint("SINGLE_SELECTION (8)");
+ m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setSelectionInterval(2, 2);
+ m.addListSelectionListener(this);
+ events.clear();
+ m.setSelectionInterval(0, -1);
+ harness.check(events.size(), 0);
+ }
+
+ /**
+ * Some checks for a model using SINGLE_INTERVAL_SELECTION.
+ *
+ * @param harness the test harness.
+ */
+ private void testSingleInterval(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (1)");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ events.clear();
+ m.addListSelectionListener(this);
+ m.setSelectionInterval(6, 7);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), true);
+ harness.check(m.isSelectedIndex(7), true);
+ harness.check(m.isSelectedIndex(8), false);
+ harness.check(m.getAnchorSelectionIndex(), 6);
+ harness.check(m.getLeadSelectionIndex(), 7);
+ harness.check(events.size(), 1);
+ ListSelectionEvent lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 6);
+ harness.check(lastEvent.getLastIndex(), 7);
+
+ // no event is generated if we update the same again
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (2)");
+ events.clear();
+ m.setSelectionInterval(6, 7);
+ harness.check(events.size(), 0);
+
+ // now if we set another selection, the event range should cover the old
+ // index too
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (3)");
+ events.clear();
+ m.setSelectionInterval(3, 3);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.isSelectedIndex(7), false);
+ harness.check(events.size(), 1);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 7);
+
+ // the anchor can move around independently of the selection, is it
+ // included in the event range? YES
+ harness.checkPoint("SINGLE_INTERVAL_SELECTION (3)");
+ m.setAnchorSelectionIndex(5);
+ events.clear();
+ m.setSelectionInterval(4, 4);
+ harness.check(m.isSelectedIndex(3), false);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), false);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 5);
+ }
+
+ private void testMultipleInterval(TestHarness harness)
+ {
+ harness.checkPoint("MULTIPLE_INTERVAL_SELECTION");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ events.clear();
+ m.addListSelectionListener(this);
+ m.setSelectionInterval(3, 5);
+ harness.check(m.isSelectedIndex(2), false);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(m.isSelectedIndex(5), true);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.getAnchorSelectionIndex(), 3);
+ harness.check(m.getLeadSelectionIndex(), 5);
+ harness.check(m.getMinSelectionIndex(), 3);
+ harness.check(m.getMaxSelectionIndex(), 5);
+ harness.check(events.size(), 1);
+ ListSelectionEvent lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 3);
+ harness.check(lastEvent.getLastIndex(), 5);
+ events.clear();
+
+ m.setSelectionInterval(2, 3);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), false);
+ harness.check(m.isSelectedIndex(5), false);
+ harness.check(m.isSelectedIndex(6), false);
+ harness.check(m.getAnchorSelectionIndex(), 2);
+ harness.check(m.getLeadSelectionIndex(), 3);
+ harness.check(m.getMinSelectionIndex(), 2);
+ harness.check(m.getMaxSelectionIndex(), 3);
+ lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 2);
+ harness.check(lastEvent.getLastIndex(), 5);
+ }
+
+ /**
+ * A special case where the model is SINGLE_SELECTION, but this mode is set
+ * AFTER a range of items is selected.
+ *
+ * @param harness
+ */
+ private void testSingleX(TestHarness harness)
+ {
+ harness.checkPoint("SINGLE_SELECTION_X");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addSelectionInterval(2, 4);
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ events.clear();
+ m.addListSelectionListener(this);
+ m.setSelectionInterval(0, 1);
+ harness.check(m.isSelectedIndex(0), false);
+ harness.check(m.isSelectedIndex(1), true);
+ harness.check(m.getAnchorSelectionIndex(), 1);
+ harness.check(m.getLeadSelectionIndex(), 1);
+ harness.check(events.size(), 1);
+ ListSelectionEvent lastEvent = (ListSelectionEvent) events.get(0);
+ harness.check(lastEvent.getSource(), m);
+ harness.check(lastEvent.getFirstIndex(), 1);
+ harness.check(lastEvent.getLastIndex(), 4);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionMode.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionMode.java
new file mode 100644
index 00000000..2343db93
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/setSelectionMode.java
@@ -0,0 +1,88 @@
+/* setSelectionMode.java -- some checks for the setSelectionMode()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class setSelectionMode implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent event) {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testIntervalToSingle(harness);
+ }
+
+ private void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ harness.check(lastEvent, null);
+
+ // try bad value
+ boolean pass = false;
+ try
+ {
+ m.setSelectionMode(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testIntervalToSingle(TestHarness harness)
+ {
+ harness.checkPoint("testIntervalToSingle()");
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ m.addSelectionInterval(2, 4);
+ m.addListSelectionListener(this);
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ harness.check(m.getSelectionMode(), ListSelectionModel.SINGLE_SELECTION);
+ harness.check(m.isSelectedIndex(2), true);
+ harness.check(m.isSelectedIndex(3), true);
+ harness.check(m.isSelectedIndex(4), true);
+ harness.check(lastEvent, null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/setValueIsAdjusting.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/setValueIsAdjusting.java
new file mode 100644
index 00000000..82f90954
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/setValueIsAdjusting.java
@@ -0,0 +1,58 @@
+/* setValueIsAdjusting.java -- some checks for the setValueIsAdjusting()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class setValueIsAdjusting implements Testlet, ListSelectionListener
+{
+ ListSelectionEvent lastEvent;
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.addListSelectionListener(this);
+ harness.check(m.getValueIsAdjusting(), false);
+ m.setValueIsAdjusting(true);
+ harness.check(lastEvent, null);
+
+ m.addSelectionInterval(3, 5);
+ harness.check(lastEvent.getValueIsAdjusting(), true);
+
+ m.setValueIsAdjusting(false);
+ m.addSelectionInterval(1, 2);
+ harness.check(lastEvent.getValueIsAdjusting(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/DefaultListSelectionModel/toString.java b/gnu/testlet/javax/swing/DefaultListSelectionModel/toString.java
new file mode 100644
index 00000000..cddec28d
--- /dev/null
+++ b/gnu/testlet/javax/swing/DefaultListSelectionModel/toString.java
@@ -0,0 +1,43 @@
+/* toString.java -- some checks for the toString()
+ method in the DefaultListSelectionModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.DefaultListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ harness.check(m.toString().endsWith(" ={}"));
+ m.addSelectionInterval(3, 5);
+ harness.check(m.toString().endsWith(" ={3, 4, 5}"));
+ m.addSelectionInterval(7, 7);
+ harness.check(m.toString().endsWith(" ={3, 4, 5, 7}"));
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/CVS/Entries b/gnu/testlet/javax/swing/InputMap/CVS/Entries
new file mode 100644
index 00000000..003743c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/CVS/Entries
@@ -0,0 +1,12 @@
+/allKeys.java/1.1/Wed Jul 5 10:37:24 2006//
+/clear.java/1.1/Wed Jul 5 10:37:24 2006//
+/constructor.java/1.1/Wed Jul 5 10:37:24 2006//
+/get.java/1.1/Wed Jul 5 10:37:24 2006//
+/getParent.java/1.1/Wed Jul 5 10:37:24 2006//
+/keys.java/1.1/Wed Jul 5 10:37:24 2006//
+/newMapKeysNull.java/1.2/Mon Nov 14 19:56:23 2005//
+/put.java/1.1/Wed Jul 5 10:37:24 2006//
+/remove.java/1.1/Wed Jul 5 10:37:24 2006//
+/setParent.java/1.1/Wed Jul 5 10:37:24 2006//
+/size.java/1.1/Wed Jul 5 10:37:24 2006//
+D
diff --git a/gnu/testlet/javax/swing/InputMap/CVS/Repository b/gnu/testlet/javax/swing/InputMap/CVS/Repository
new file mode 100644
index 00000000..038d4cf9
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/InputMap
diff --git a/gnu/testlet/javax/swing/InputMap/CVS/Root b/gnu/testlet/javax/swing/InputMap/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/InputMap/allKeys.java b/gnu/testlet/javax/swing/InputMap/allKeys.java
new file mode 100644
index 00000000..e1e6c07e
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/allKeys.java
@@ -0,0 +1,67 @@
+/* allKeys.java -- some checks for the allKeys() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class allKeys implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ harness.check(m.allKeys(), null);
+ KeyStroke ks1 = KeyStroke.getKeyStroke('a');
+ m.put(ks1, "AAA");
+ KeyStroke[] keys = m.allKeys();
+ harness.check(keys.length, 1);
+ harness.check(keys[0], ks1);
+
+ InputMap p = new InputMap();
+ m.setParent(p);
+ keys = m.allKeys();
+ harness.check(keys.length, 1);
+ harness.check(keys[0], ks1);
+
+ KeyStroke ks2 = KeyStroke.getKeyStroke('b');
+ p.put(ks2, "BBB");
+ keys = m.allKeys();
+ harness.check(keys.length, 2);
+ harness.check(keys[0], ks2);
+ harness.check(keys[1], ks1);
+
+ // try a KeyStroke that is defined in both maps
+ KeyStroke ks3 = KeyStroke.getKeyStroke('z');
+ p.put(ks3, "ZZZ");
+ m.put(ks3, "XXX");
+ keys = m.allKeys();
+ harness.check(keys.length, 3);
+ harness.check(keys[0], ks2);
+ harness.check(keys[1], ks3);
+ harness.check(keys[2], ks1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/clear.java b/gnu/testlet/javax/swing/InputMap/clear.java
new file mode 100644
index 00000000..9014793f
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/clear.java
@@ -0,0 +1,52 @@
+/* clear.java -- some checks for the clear() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class clear implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ m.clear();
+ harness.check(m.size(), 0);
+ m.put(KeyStroke.getKeyStroke('a'), "AAA");
+ harness.check(m.size(), 1);
+ m.clear();
+ harness.check(m.size(), 0);
+
+ // confirm that this method doesn't change the parent
+ InputMap p = new InputMap();
+ p.put(KeyStroke.getKeyStroke('z'), "ZZZ");
+ harness.check(p.size(), 1);
+ m.setParent(p);
+ m.clear();
+ harness.check(p.size(), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/constructor.java b/gnu/testlet/javax/swing/InputMap/constructor.java
new file mode 100644
index 00000000..3bf371e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/constructor.java
@@ -0,0 +1,41 @@
+/* constructor.java -- some checks for the constructor in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ harness.check(m.size(), 0);
+ harness.check(m.getParent(), null);
+ harness.check(m.keys(), null);
+ harness.check(m.allKeys(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/get.java b/gnu/testlet/javax/swing/InputMap/get.java
new file mode 100644
index 00000000..9872a1f6
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/get.java
@@ -0,0 +1,51 @@
+/* get.java -- some checks for the get() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class get implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ KeyStroke ks1 = KeyStroke.getKeyStroke('a');
+ harness.check(m.get(ks1), null);
+ m.put(ks1, "ABC");
+ harness.check(m.get(ks1), "ABC");
+
+ harness.check(m.get(null), null);
+
+ // check that a binding in the parent is found
+ InputMap p = new InputMap();
+ KeyStroke ks2 = KeyStroke.getKeyStroke('b');
+ p.put(ks2, "XYZ");
+ m.setParent(p);
+ harness.check(m.get(ks2), "XYZ");
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/getParent.java b/gnu/testlet/javax/swing/InputMap/getParent.java
new file mode 100644
index 00000000..171fb4c3
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/getParent.java
@@ -0,0 +1,44 @@
+/* getParent.java -- some checks for the getParent() method in the InputMap
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+
+public class getParent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ harness.check(m.getParent(), null);
+ InputMap p = new InputMap();
+ m.setParent(p);
+ harness.check(m.getParent(), p);
+ m.setParent(null);
+ harness.check(m.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/keys.java b/gnu/testlet/javax/swing/InputMap/keys.java
new file mode 100644
index 00000000..7873a42b
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/keys.java
@@ -0,0 +1,62 @@
+/* keys.java -- some checks for the keys() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class keys implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap map = new InputMap();
+ KeyStroke[] k = map.keys();
+ harness.check(k, null);
+ map.put(KeyStroke.getKeyStroke('a'), "AAA");
+ k = map.keys();
+ harness.check(k.length, 1);
+ harness.check(k[0], KeyStroke.getKeyStroke('a'));
+ map.put(KeyStroke.getKeyStroke('b'), "BBB");
+ k = map.keys();
+ harness.check(k.length, 2);
+ harness.check(k[1], KeyStroke.getKeyStroke('b'));
+ map.put(KeyStroke.getKeyStroke('b'), null);
+ k = map.keys();
+ harness.check(k.length, 1);
+ harness.check(k[0], KeyStroke.getKeyStroke('a'));
+ map.clear();
+ k = map.keys();
+ harness.check(k.length, 0);
+
+ // check that no keys from the parent are used
+ InputMap p = new InputMap();
+ p.put(KeyStroke.getKeyStroke('z'), "ZZZ");
+ map.setParent(p);
+ k = map.keys();
+ harness.check(k.length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/newMapKeysNull.java b/gnu/testlet/javax/swing/InputMap/newMapKeysNull.java
new file mode 100644
index 00000000..6f5d43c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/newMapKeysNull.java
@@ -0,0 +1,41 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.InputMap;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.InputMap;
+
+/**
+ * This tests whether keys() and allKeys() return null for new InputMaps.
+ */
+public class newMapKeysNull implements Testlet {
+
+ public void test(TestHarness harness) {
+ InputMap map = new InputMap();
+ if (map.keys() != null)
+ harness.fail("New InputMap should return null for keys()");
+ if (map.allKeys() != null)
+ harness.fail("New ActionMap should return null for allKeys()");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/InputMap/put.java b/gnu/testlet/javax/swing/InputMap/put.java
new file mode 100644
index 00000000..7819a55e
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/put.java
@@ -0,0 +1,50 @@
+/* put.java -- some checks for the put() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class put implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ KeyStroke ks1 = KeyStroke.getKeyStroke('a');
+ m.put(ks1, "ABC");
+ harness.check(m.get(ks1), "ABC");
+ m.put(ks1, "DEF");
+ harness.check(m.get(ks1), "DEF");
+ m.put(ks1, null);
+ harness.check(m.get(ks1), null);
+ harness.check(m.size(), 0);
+
+ // try null key
+ m.put(null, "ZZZ");
+ harness.check(m.get(null), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/remove.java b/gnu/testlet/javax/swing/InputMap/remove.java
new file mode 100644
index 00000000..52839772
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/remove.java
@@ -0,0 +1,64 @@
+/* remove.java -- some checks for the remove() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class remove implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ KeyStroke ks1 = KeyStroke.getKeyStroke('a');
+
+ // try removing from an empty map
+ m.remove(ks1);
+ harness.check(m.get(ks1), null);
+
+ // add and remove
+ m.put(ks1, "ABC");
+ harness.check(m.get(ks1), "ABC");
+ m.remove(ks1);
+ harness.check(m.get(ks1), null);
+
+ // try removing null
+ m.remove(null);
+ harness.check(m.size(), 0);
+ m.put(ks1, "ABC");
+ m.remove(null);
+ harness.check(m.size(), 1);
+
+ // confirm that remove doesn't affect the parent
+ KeyStroke ks2 = KeyStroke.getKeyStroke('b');
+ InputMap p = new InputMap();
+ p.put(ks2, "ZZZ");
+ m.setParent(p);
+ m.remove(ks2);
+ harness.check(m.get(ks2), "ZZZ");
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/setParent.java b/gnu/testlet/javax/swing/InputMap/setParent.java
new file mode 100644
index 00000000..7e67aa35
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/setParent.java
@@ -0,0 +1,44 @@
+/* setParent.java -- some checks for the setParent() method in the InputMap
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+
+public class setParent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ harness.check(m.getParent(), null);
+ InputMap p = new InputMap();
+ m.setParent(p);
+ harness.check(m.getParent(), p);
+ m.setParent(null);
+ harness.check(m.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/InputMap/size.java b/gnu/testlet/javax/swing/InputMap/size.java
new file mode 100644
index 00000000..0ebd2ae0
--- /dev/null
+++ b/gnu/testlet/javax/swing/InputMap/size.java
@@ -0,0 +1,49 @@
+/* size.java -- some checks for the size() method in the InputMap class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.InputMap;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+
+public class size implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ InputMap m = new InputMap();
+ harness.check(m.size(), 0);
+ m.put(KeyStroke.getKeyStroke('a'), "ABC");
+ harness.check(m.size(), 1);
+ m.put(KeyStroke.getKeyStroke('b'), "DEF");
+ harness.check(m.size(), 2);
+ InputMap p = new InputMap();
+ p.put(KeyStroke.getKeyStroke('c'), "GHI");
+ m.setParent(p);
+ harness.check(m.size(), 2);
+ m.clear();
+ harness.check(m.size(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JApplet/CVS/Entries b/gnu/testlet/javax/swing/JApplet/CVS/Entries
new file mode 100644
index 00000000..fa5cc828
--- /dev/null
+++ b/gnu/testlet/javax/swing/JApplet/CVS/Entries
@@ -0,0 +1,2 @@
+/isRootPaneCheckingEnabled.java/1.1/Mon Nov 7 20:55:43 2005//
+D
diff --git a/gnu/testlet/javax/swing/JApplet/CVS/Repository b/gnu/testlet/javax/swing/JApplet/CVS/Repository
new file mode 100644
index 00000000..cfe6acab
--- /dev/null
+++ b/gnu/testlet/javax/swing/JApplet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JApplet
diff --git a/gnu/testlet/javax/swing/JApplet/CVS/Root b/gnu/testlet/javax/swing/JApplet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JApplet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JApplet/isRootPaneCheckingEnabled.java b/gnu/testlet/javax/swing/JApplet/isRootPaneCheckingEnabled.java
new file mode 100644
index 00000000..54b2025e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JApplet/isRootPaneCheckingEnabled.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2004 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JApplet;
+
+import java.awt.Component;
+
+import javax.swing.JApplet;
+import javax.swing.JLabel;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isRootPaneCheckingEnabled implements Testlet
+{
+
+ /**
+ * Overrides some protected methods to make them public for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestApplet extends JApplet
+ {
+ public boolean isRootPaneCheckingEnabled()
+ {
+ return super.isRootPaneCheckingEnabled();
+ }
+ public void setRootPaneCheckingEnabled(boolean b)
+ {
+ super.setRootPaneCheckingEnabled(b);
+ }
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRootPaneCheckingEnabled(harness);
+ testRootPaneCheckingDisabled(harness);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==true. Adds to the frame
+ * should go to the contentPane.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingEnabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingEnabled");
+ TestApplet f = new TestApplet();
+ f.setRootPaneCheckingEnabled(true);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now still has 1 child, the rootPane.
+ harness.check(children.length, 1);
+ harness.check(children[0] instanceof JRootPane);
+ // Instead, the add has gone to the contentPane which now also has 1 child,
+ // the label.
+ Component[] content = f.getContentPane().getComponents();
+ harness.check(content.length, 1);
+ harness.check(content[0], c);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==false. Adds to the frame
+ * should go directly to the frame.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingDisabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingDisabled");
+ TestApplet f = new TestApplet();
+ f.setRootPaneCheckingEnabled(false);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now has 2 children, the rootPane and the label.
+ harness.check(children.length, 2);
+ harness.check(children[0] instanceof JRootPane);
+ harness.check(children[1], c);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JButton/CVS/Entries b/gnu/testlet/javax/swing/JButton/CVS/Entries
new file mode 100644
index 00000000..37791581
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/CVS/Entries
@@ -0,0 +1,5 @@
+/constructors.java/1.2/Thu Jun 15 18:02:06 2006//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:29 2005//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JButton/CVS/Repository b/gnu/testlet/javax/swing/JButton/CVS/Repository
new file mode 100644
index 00000000..7f18a345
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JButton
diff --git a/gnu/testlet/javax/swing/JButton/CVS/Root b/gnu/testlet/javax/swing/JButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JButton/constructors.java b/gnu/testlet/javax/swing/JButton/constructors.java
new file mode 100644
index 00000000..e422db55
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/constructors.java
@@ -0,0 +1,244 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Tania Bento <tbento2redhat.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.JButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ButtonModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+
+/**
+ * Some checks for the constructors of the {@link JButton} class.
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // Testing button text and icons
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ testConstructor9(harness);
+ testConstructor10(harness);
+ testConstructor11(harness);
+ testConstructor12(harness);
+ // Testing default properties
+ testProperties(harness);
+ }
+
+ /**
+ * Constructor #1 No button text and icon specified.
+ */
+ public void testConstructor1(TestHarness harness)
+ {
+ JButton b = new JButton();
+ harness.check(b.getText(), "");
+ harness.check(b.getIcon(), null);
+ harness.check(b.isFocusable(), true);
+ }
+
+ /**
+ * Constructor #2 Action specified.
+ */
+ public void testConstructor2(TestHarness harness)
+ {
+ // Creating an <code>Action</code> with no properties.
+ Action myAction = new AbstractAction()
+ {
+ public void actionPerformed(ActionEvent evt)
+ {
+ System.out.println("MyAction");
+ }
+ };
+ JButton b = new JButton(myAction);
+ harness.check(b.getAction(), myAction);
+ harness.check(b.isFocusable(), true);
+ }
+
+ /**
+ * Constructor #2 Action specified as <code>null</code>.
+ */
+ public void testConstructor3(TestHarness harness)
+ {
+ Action myAction = null;
+ JButton b = new JButton(myAction);
+ harness.check(b.getAction(), null);
+ }
+
+ /**
+ * Constructor #3 Icon specified.
+ */
+ public void testConstructor4(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JButton b = new JButton(i);
+ harness.check(b.getIcon(), i);
+ harness.check(b.isFocusable(), true);
+ }
+
+ /**
+ * Constructor #3 Icon specified as <code>/null<code>.
+ */
+ public void testConstructor5(TestHarness harness)
+ {
+ ImageIcon i = null;
+ JButton b = new JButton(i);
+ harness.check(b.getIcon(), null);
+ }
+
+ /**
+ * Constructor #4 Button text specified.
+ */
+ public void testConstructor6(TestHarness harness)
+ {
+ JButton b = new JButton("Button Text");
+ harness.check(b.getText(), "Button Text");
+ harness.check(b.isFocusable(), true);
+ }
+
+ /**
+ * Constructor #4 Button text specified as empty string.
+ */
+ public void testConstructor7(TestHarness harness)
+ {
+ JButton b = new JButton("");
+ harness.check(b.getText(), "");
+ }
+
+ /**
+ * Constructor #4 Button text specified as <code>/null<code>.
+ */
+ public void testConstructor8(TestHarness harness)
+ {
+ String buttonText = null;
+ JButton b = new JButton(buttonText);
+ harness.check(b.getText(), "");
+ }
+
+ /**
+ * Constructor #5 Button text specified and icon specified.
+ */
+ public void testConstructor9(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JButton b = new JButton("Button Text", i);
+ harness.check(b.getText(), "Button Text");
+ harness.check(b.getIcon(), i);
+ harness.check(b.isFocusable(), true);
+ }
+
+ /**
+ * Constructor #5 Button text specified and icon specified as
+ * <code>null</code>.
+ */
+ public void testConstructor10(TestHarness harness)
+ {
+ JButton b = new JButton("Button Text", null);
+ harness.check(b.getText(), "Button Text");
+ harness.check(b.getIcon(), null);
+ }
+
+ /**
+ * Constructor #5 Button text specified as <code>null</code> and icon
+ * specified.
+ */
+ public void testConstructor11(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JButton b = new JButton(null, i);
+ harness.check(b.getText(), "");
+ harness.check(b.getIcon(), i);
+ }
+
+ /**
+ * Constructor #5 Button text specified as <code>null</code> and icon
+ * specified as <code>null</code>.
+ */
+ public void testConstructor12(TestHarness harness)
+ {
+ JButton b = new JButton(null, null);
+ harness.check(b.getText(), "");
+ harness.check(b.getIcon(), null);
+ }
+
+ /**
+ * Default JButton Properties Test
+ */
+ public void testProperties(TestHarness harness)
+ {
+ JButton b = new JButton();
+
+ harness.check(b.getUIClassID(), "ButtonUI");
+ harness.check(b.getModel() instanceof ButtonModel);
+ harness.check(b.getModel() != null);
+
+ harness.check(b.getActionCommand(), "");
+ harness.check(b.isBorderPainted(), true);
+ harness.check(b.isContentAreaFilled(), true);
+ harness.check(b.getDisabledIcon(), null);
+ harness.check(b.getDisabledSelectedIcon(), null);
+ harness.check(b.isEnabled(), true);
+ harness.check(b.isFocusPainted(), true);
+ harness.check(b.getHorizontalAlignment(), 0);
+ harness.check(b.getHorizontalTextPosition(), 11);
+ harness.check(b.getIcon(), null);
+ harness.check(b.getLabel(), "");
+ harness.check(b.getMnemonic(), 0);
+ harness.check(b.getMargin().top, 2);
+ harness.check(b.getMargin().left, 14);
+ harness.check(b.getMargin().bottom, 2);
+ harness.check(b.getMargin().right, 14);
+ harness.check(b.getPressedIcon(), null);
+ harness.check(b.isRolloverEnabled(), true);
+ harness.check(b.getRolloverIcon(), null);
+ harness.check(b.getRolloverSelectedIcon(), null);
+ harness.check(b.isSelected(), false);
+ harness.check(b.getSelectedIcon(), null);
+ harness.check(b.getSelectedObjects(), null);
+ harness.check(b.getText(), "");
+ harness.check(b.getVerticalAlignment(), 0);
+ harness.check(b.getVerticalTextPosition(), 0);
+
+ harness.check(b.getModel() instanceof ButtonModel);
+ harness.check(b.getModel() != null);
+
+ harness.check(b.isDefaultCapable(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JButton/getActionCommand.java b/gnu/testlet/javax/swing/JButton/getActionCommand.java
new file mode 100644
index 00000000..9f86fbec
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JButton;
+
+/** <p>Tests the <code>JButton</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JButton("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JButton/model.java b/gnu/testlet/javax/swing/JButton/model.java
new file mode 100644
index 00000000..50ef7dda
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/model.java
@@ -0,0 +1,126 @@
+/* model.java -- some checks for the initialisation of the button's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.DefaultButtonModel;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the button's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJButton extends JButton
+ {
+ public MyJButton()
+ {
+ super();
+ }
+ public MyJButton(Action action)
+ {
+ super(action);
+ }
+ public MyJButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJButton(String text)
+ {
+ super(text);
+ }
+ public MyJButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJButton b = new MyJButton();
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJButton b = new MyJButton(action);
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJButton b = new MyJButton(MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJButton b = new MyJButton("ABC");
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJButton b = new MyJButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JButton/uidelegate.java b/gnu/testlet/javax/swing/JButton/uidelegate.java
new file mode 100644
index 00000000..c3f524da
--- /dev/null
+++ b/gnu/testlet/javax/swing/JButton/uidelegate.java
@@ -0,0 +1,134 @@
+/* model.java -- some checks for the initialisation of the button's UI delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.DefaultButtonModel;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.plaf.ButtonUI;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the UI delegate's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJButton extends JButton
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJButton()
+ {
+ super();
+ }
+ public MyJButton(Action action)
+ {
+ super(action);
+ }
+ public MyJButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJButton(String text)
+ {
+ super(text);
+ }
+ public MyJButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJButton b = new MyJButton();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJButton b = new MyJButton(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJButton b = new MyJButton(MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJButton b = new MyJButton("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJButton b = new MyJButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JCheckBox/CVS/Entries b/gnu/testlet/javax/swing/JCheckBox/CVS/Entries
new file mode 100644
index 00000000..0200d7c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/CVS/Entries
@@ -0,0 +1,6 @@
+/constructor.java/1.1/Tue Oct 18 15:07:29 2005//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:28 2005//
+/isFocusable.java/1.1/Thu Jun 15 19:27:47 2006//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JCheckBox/CVS/Repository b/gnu/testlet/javax/swing/JCheckBox/CVS/Repository
new file mode 100644
index 00000000..27e84bf6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JCheckBox
diff --git a/gnu/testlet/javax/swing/JCheckBox/CVS/Root b/gnu/testlet/javax/swing/JCheckBox/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JCheckBox/constructor.java b/gnu/testlet/javax/swing/JCheckBox/constructor.java
new file mode 100644
index 00000000..5e2ac40e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/constructor.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JCheckBox;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JCheckBox;
+import javax.swing.SwingConstants;
+
+/**
+ * Tests if the constructor sets the default values for the JCheckBox's
+ * properties correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JCheckBox cb = new JCheckBox();
+ harness.check(cb.getAlignmentX(), 0.0F, "alignmentX");
+ harness.check(cb.getAlignmentY(), 0.5F, "alignmentY");
+ harness.check(cb.getHorizontalAlignment(), SwingConstants.LEADING,
+ "horizontalAlignment");
+ harness.check(cb.getVerticalAlignment(), SwingConstants.CENTER,
+ "verticalAlignment");
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JCheckBox/getActionCommand.java b/gnu/testlet/javax/swing/JCheckBox/getActionCommand.java
new file mode 100644
index 00000000..4f641ffb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JCheckBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JCheckBox;
+
+/** <p>Tests the <code>JCheckBox</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JCheckBox("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JCheckBox/isFocusable.java b/gnu/testlet/javax/swing/JCheckBox/isFocusable.java
new file mode 100644
index 00000000..e3ef0699
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/isFocusable.java
@@ -0,0 +1,46 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.JCheckBox;
+
+import javax.swing.JCheckBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JCheckBox i = new JCheckBox();
+ harness.check(i.isFocusable(), true);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JCheckBox/model.java b/gnu/testlet/javax/swing/JCheckBox/model.java
new file mode 100644
index 00000000..542876f5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/model.java
@@ -0,0 +1,164 @@
+/* model.java -- some checks for the initialisation of the button's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JCheckBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JCheckBox;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJCheckBox extends JCheckBox
+ {
+ public MyJCheckBox()
+ {
+ super();
+ }
+ public MyJCheckBox(Action action)
+ {
+ super(action);
+ }
+ public MyJCheckBox(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJCheckBox(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJCheckBox(String text)
+ {
+ super(text);
+ }
+ public MyJCheckBox(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJCheckBox(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJCheckBox(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJCheckBox b = new MyJCheckBox();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJCheckBox b = new MyJCheckBox(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJCheckBox b = new MyJCheckBox(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJCheckBox b = new MyJCheckBox(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJCheckBox b = new MyJCheckBox("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJCheckBox b = new MyJCheckBox("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJCheckBox b = new MyJCheckBox("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJCheckBox b = new MyJCheckBox("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JCheckBox/uidelegate.java b/gnu/testlet/javax/swing/JCheckBox/uidelegate.java
new file mode 100644
index 00000000..b433cbaf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBox/uidelegate.java
@@ -0,0 +1,170 @@
+/* uidelegate.java -- some checks for the initialisation of the button's UI
+ delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JCheckBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JCheckBox;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the button's UI delegate. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJCheckBox extends JCheckBox
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJCheckBox()
+ {
+ super();
+ }
+ public MyJCheckBox(Action action)
+ {
+ super(action);
+ }
+ public MyJCheckBox(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJCheckBox(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJCheckBox(String text)
+ {
+ super(text);
+ }
+ public MyJCheckBox(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJCheckBox(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJCheckBox(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJCheckBox b = new MyJCheckBox();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJCheckBox b = new MyJCheckBox(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJCheckBox b = new MyJCheckBox(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJCheckBox b = new MyJCheckBox(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJCheckBox b = new MyJCheckBox("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJCheckBox b = new MyJCheckBox("ABC", false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJCheckBox b = new MyJCheckBox("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJCheckBox b = new MyJCheckBox("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Entries b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Entries
new file mode 100644
index 00000000..9589c275
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Entries
@@ -0,0 +1,5 @@
+/constructors.java/1.2/Thu Jun 15 18:02:06 2006//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:31 2005//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Repository b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Repository
new file mode 100644
index 00000000..c5fc6f5e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JCheckBoxMenuItem
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Root b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java b/gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java
new file mode 100644
index 00000000..d66c28a8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/constructors.java
@@ -0,0 +1,276 @@
+/* constructors.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+
+package gnu.testlet.javax.swing.JCheckBoxMenuItem;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ButtonModel;
+import javax.swing.DefaultButtonModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBoxMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the constructors of the {@link javax.swing.JCheckBoxMenuItem}
+ * class.
+ */
+public class constructors
+ implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // Testing labels, icons, and states
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ testConstructor9(harness);
+ testConstructor10(harness);
+ testConstructor11(harness);
+ testConstructor12(harness);
+ testConstructor13(harness);
+ // Testing the default properties
+ testDefaultProperties(harness);
+ // testConstructor15(harness);
+ }
+
+ /**
+ * Constructor #1 Label and Icon not specified.
+ */
+ public void testConstructor1(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem();
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #2 Icon specified.
+ */
+ public void testConstructor2(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(i);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), i);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #2 Icon specified as <code>null</code>.
+ */
+ public void testConstructor3(TestHarness harness)
+ {
+ ImageIcon i = null;
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(i);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ }
+
+ /**
+ * Constructor #3 Label specified.
+ */
+ public void testConstructor4(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem("Label");
+ harness.check(m.getText(), "Label");
+ harness.check(m.getIcon(), null);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #3 Label specified as <code>null</code>.
+ */
+ public void testConstructor5(TestHarness harness)
+ {
+ String label = null;
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(label);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ }
+
+ /**
+ * Constructor #4 Action specified.
+ */
+ public void testConstructor6(TestHarness harness)
+ {
+ // Creating an <code>Action</code> with no properties.
+ Action myAction = new AbstractAction()
+ {
+ public void actionPerformed(ActionEvent evt)
+ {
+ System.out.println("MyAction");
+ }
+ };
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(myAction);
+ harness.check(m.getAction(), myAction);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #4 Action specified as <code>null</code>.
+ */
+ public void testConstructor7(TestHarness harness)
+ {
+ Action myAction = null;
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(myAction);
+ harness.check(m.getAction(), null);
+ }
+
+ /**
+ * Constructor #5 Label and Icon both specified.
+ */
+ public void testConstructor8(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem("Label", i);
+ harness.check(m.getText(), "Label");
+ harness.check(m.getIcon(), i);
+ harness.check(m.getState(), false);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #5 Label and Icon specifed as <code>null</code>.
+ */
+ public void testConstructor9(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(null, null);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ harness.check(m.getState(), false);
+ }
+
+ /**
+ * Constructor #6 Label and State both specified.
+ */
+ public void testConstructor10(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem("Label", true);
+ harness.check(m.getText(), "Label");
+ harness.check(m.getIcon(), null);
+ harness.check(m.getState(), true);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #6 Label specified as <code>null</code> and State specified
+ * as <code>false</code>.
+ */
+ public void testConstructor11(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(null, false);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ harness.check(m.getState(), false);
+ }
+
+ /**
+ * Constructor #7 Label, Icon, and State specified.
+ */
+ public void testConstructor12(TestHarness harness)
+ {
+ ImageIcon i = new ImageIcon();
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem("Label", i, true);
+ harness.check(m.getText(), "Label");
+ harness.check(m.getIcon(), i);
+ harness.check(m.getState(), true);
+ harness.check(m.isFocusable(), false);
+ }
+
+ /**
+ * Constructor #7 Label and Icon specified as <code>null</code> and State
+ * specified as <code>false</code>.
+ */
+ public void testConstructor13(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem(null, null, false);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ harness.check(m.getState(), false);
+ }
+
+ /**
+ * Testing default properties.
+ */
+ public void testDefaultProperties(TestHarness harness)
+ {
+ JCheckBoxMenuItem m = new JCheckBoxMenuItem("Label", new ImageIcon(), true);
+ // Properties set by init method in JMenuItem.java.
+ harness.check(m.isFocusPainted(), false);
+ harness.check(m.getHorizontalAlignment(), JButton.LEADING);
+ harness.check(m.getHorizontalTextPosition(), JButton.TRAILING);
+ // Additional JMenuITem.java properties
+ harness.check(m.getUIClassID(), "CheckBoxMenuItemUI");
+ harness.check(m.getAccelerator(), null);
+ harness.check(m.isArmed(), false);
+ harness.check(m.isEnabled(), true);
+ harness.check(m.isRequestFocusEnabled(), true);
+ // Properties set by AbstractButton.java's constructor.
+ harness.check(m.getHorizontalAlignment(), 10);
+ harness.check(m.getHorizontalTextPosition(), 11);
+ harness.check(m.getVerticalAlignment(), 0);
+ harness.check(m.getVerticalTextPosition(), 0);
+ harness.check(m.isBorderPainted(), true);
+ harness.check(m.isContentAreaFilled(), true);
+ harness.check(m.isFocusPainted(), false);
+ harness.check(m.isFocusable(), false);
+ harness.check(m.getAlignmentX(), 0.5f);
+ harness.check(m.getAlignmentY(), 0.5f);
+ harness.check(m.getDisplayedMnemonicIndex(), - 1);
+ harness.check(m.isOpaque(), true);
+ //Additional AbstractButton.java properties
+ harness.check(m.getActionCommand(), "Label");
+ harness.check(m.getMnemonic(), 0);
+ harness.check(m.getMargin().top, 2);
+ harness.check(m.getMargin().left, 2);
+ harness.check(m.getMargin().bottom, 2);
+ harness.check(m.getMargin().right, 2);
+ harness.check(m.getPressedIcon(), null);
+ harness.check(m.isRolloverEnabled(), false);
+ harness.check(m.getRolloverIcon(), null);
+ harness.check(m.getRolloverSelectedIcon(), null);
+ harness.check(m.isSelected(), true);
+ harness.check(m.getSelectedIcon(), null);
+ // Properties set by JCheckBoxMenuItem.java constructor itself.
+ harness.check(m.getModel() instanceof DefaultButtonModel);
+ harness.check(m.getModel() != null);
+ harness.check(m.isVisible(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/getActionCommand.java b/gnu/testlet/javax/swing/JCheckBoxMenuItem/getActionCommand.java
new file mode 100644
index 00000000..bc7a2743
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+//Uses: ../AbstractButton/getActionCommand
+
+//Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+//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.javax.swing.JCheckBoxMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JCheckBoxMenuItem;
+
+/** <p>Tests the <code>JCheckBoxMenuItem</code>'s <code>getActionCommand</code>
+* method.</p>
+*
+* <p>Please note that the interesting bits of this test reside in the superclass
+* {@link gnu.testlet.javax.swing.AbstractButton}
+*
+* @author Robert Schuster
+*
+*/
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JCheckBoxMenuItem("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/model.java b/gnu/testlet/javax/swing/JCheckBoxMenuItem/model.java
new file mode 100644
index 00000000..f30b4d11
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/model.java
@@ -0,0 +1,151 @@
+/* model.java -- some checks for the initialisation of the menu item's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JCheckBoxMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the button's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJCheckBoxMenuItem extends JCheckBoxMenuItem
+ {
+ public MyJCheckBoxMenuItem()
+ {
+ super();
+ }
+ public MyJCheckBoxMenuItem(Action action)
+ {
+ super(action);
+ }
+ public MyJCheckBoxMenuItem(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJCheckBoxMenuItem(String text)
+ {
+ super(text);
+ }
+ public MyJCheckBoxMenuItem(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJCheckBoxMenuItem(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJCheckBoxMenuItem(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JCheckBoxMenuItem/uidelegate.java b/gnu/testlet/javax/swing/JCheckBoxMenuItem/uidelegate.java
new file mode 100644
index 00000000..95cffd94
--- /dev/null
+++ b/gnu/testlet/javax/swing/JCheckBoxMenuItem/uidelegate.java
@@ -0,0 +1,159 @@
+/* uidelegate.java -- some checks for the initialisation of the menu item's
+ UI delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JCheckBoxMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu item's UI delegate. This test
+ * was written to investigate a look and feel bug that occurs because the model
+ * is null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJCheckBoxMenuItem extends JCheckBoxMenuItem
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJCheckBoxMenuItem()
+ {
+ super();
+ }
+ public MyJCheckBoxMenuItem(Action action)
+ {
+ super(action);
+ }
+ public MyJCheckBoxMenuItem(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJCheckBoxMenuItem(String text)
+ {
+ super(text);
+ }
+ public MyJCheckBoxMenuItem(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJCheckBoxMenuItem(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJCheckBoxMenuItem(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC", false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJCheckBoxMenuItem b = new MyJCheckBoxMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JComboBox/CVS/Entries b/gnu/testlet/javax/swing/JComboBox/CVS/Entries
new file mode 100644
index 00000000..d1da8b67
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/CVS/Entries
@@ -0,0 +1,20 @@
+/ComboRobot.java/1.4/Wed May 21 13:30:45 2008/-kk/
+/MutableTest1.java/1.2/Thu Apr 28 07:51:23 2005//
+/MutableTest2.java/1.2/Thu Apr 28 07:51:23 2005//
+/MyJComboBox.java/1.1/Tue Oct 18 20:47:46 2005//
+/SimpleSelectionTest.java/1.2/Thu Apr 28 07:51:23 2005//
+/TestModel1.java/1.1/Mon Dec 20 00:55:18 2004//
+/TestModel2.java/1.1/Mon Dec 20 00:55:18 2004//
+/addItem.java/1.1/Tue Oct 18 15:51:41 2005//
+/basic.java/1.2/Mon Jun 12 19:52:33 2006//
+/getEditor.java/1.3/Tue Oct 4 15:19:51 2011//
+/getPrototypeDisplayValue.java/1.1/Tue Sep 13 13:39:43 2005//
+/listenerList.java/1.1/Wed Feb 23 10:59:05 2005//
+/model.java/1.1/Mon Dec 19 12:08:36 2005//
+/removeItem.java/1.1/Tue Oct 18 15:51:41 2005//
+/setEditable.java/1.1/Tue Oct 18 15:51:41 2005//
+/setEditor.java/1.4/Wed May 21 13:30:45 2008//
+/setModel.java/1.2/Wed May 21 13:30:45 2008//
+/setPrototypeDisplayValue.java/1.1/Tue Sep 13 13:39:43 2005//
+/setSelectedIndex.java/1.2/Wed May 21 13:30:45 2008//
+D
diff --git a/gnu/testlet/javax/swing/JComboBox/CVS/Repository b/gnu/testlet/javax/swing/JComboBox/CVS/Repository
new file mode 100644
index 00000000..d5826264
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JComboBox
diff --git a/gnu/testlet/javax/swing/JComboBox/CVS/Root b/gnu/testlet/javax/swing/JComboBox/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JComboBox/ComboRobot.java b/gnu/testlet/javax/swing/JComboBox/ComboRobot.java
new file mode 100644
index 00000000..ee9efa01
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/ComboRobot.java
@@ -0,0 +1,215 @@
+/* ComboRobot.java -- ComboBox test
+ Copyright (C) 2006 Audrius Meskauskas
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.4 GUI
+// Uses: ../../../org/omg/CORBA/Asserter
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.Random;
+
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.tree.TreePath;
+
+/**
+ * The AWT robot based test for JTree.
+ */
+public class ComboRobot extends Asserter implements Testlet
+{
+ /**
+ * The tree being tested.
+ */
+ JComboBox combo = new JComboBox(new String[] {"a", "b", "c", "d", "e", "f", "a234"});
+
+ JFrame frame;
+
+ Robot r;
+
+ static Random ran = new Random();
+
+ protected void setUp() throws Exception
+ {
+
+ frame = new JFrame();
+ frame.getContentPane().add(combo);
+ frame.setSize(200, 80);
+ frame.setVisible(true);
+
+ r = new Robot();
+ r.setAutoDelay(50);
+ r.delay(500);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ frame.dispose();
+ }
+
+ /**
+ * Click the mouse on center of the given component.
+ */
+ public void click(JComponent c, int x, int y)
+ {
+ Point p = new Point();
+ p.x = x;
+ p.y = y;
+
+ SwingUtilities.convertPointToScreen(p, c);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ }
+
+ /**
+ * Click the given main databas view cell.
+ *
+ * @param row
+ * the row
+ * @param column
+ * the column
+ */
+ public void clickPath(JTree tree, TreePath path)
+ {
+ Rectangle rect = tree.getPathBounds(path);
+ Point p = new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
+ SwingUtilities.convertPointToScreen(p, tree);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ }
+
+
+ public void type(int code)
+ {
+ r.keyPress(code);
+ r.keyRelease(code);
+ }
+
+ public void testCombo(boolean editable) throws Exception
+ {
+ // Click on combo box to give it focus
+ click(combo, combo.getWidth() / 2, combo.getHeight() / 2);
+ click(combo, combo.getWidth() / 2, combo.getHeight() / 2);
+
+ // Test up/down navigation
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting first component with keyboard", "a", getFocus());
+
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting second component with keyboard", "b", getFocus());
+
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_DOWN);
+
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting forth component with keyboard", "d", getFocus());
+
+ // Reset to top & test the key selection manager (only if not editable)
+ if (!editable)
+ {
+ combo.setSelectedIndex(-1);
+
+ for (char i = 'a'; i <= 'f'; i++)
+ {
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_A + (i-'a'));
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting with letter key, " + i,
+ new String(new char[] { i }), getFocus());
+ }
+
+ // Reset to top & test duplicate letters in key selection manager
+ combo.setSelectedIndex(-1);
+
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_A);
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting with letter key (duplicate)", "a", getFocus());
+
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_A);
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Selecting with letter key (duplicate)", "a234", getFocus());
+ }
+
+ // Test the escape button too, for cancelling the popup
+ type(KeyEvent.VK_DOWN);
+ type(KeyEvent.VK_ESCAPE);
+ assertEquals("Cancelling popup with escape key", false, combo.isPopupVisible());
+
+ // Reset to top
+ combo.setSelectedIndex(0);
+
+ Thread.sleep(5000);
+ }
+
+ public Object getFocus()
+ {
+ return combo.getSelectedItem();
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ setUp();
+ try
+ {
+ // Test with regular combo box...
+ testCombo(false);
+
+ // And editable combo box
+ combo.setEditable(true);
+ testCombo(true);
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ h.fail("Exception: " + e);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/MutableTest1.java b/gnu/testlet/javax/swing/JComboBox/MutableTest1.java
new file mode 100644
index 00000000..f80d6a7b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/MutableTest1.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+// Uses: TestModel1
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+
+/** This tests the methods of JComboBox that would modify the
+ * <code>ComboBoxModel</code>. Since no
+ * <code>MutableComboBoxModel</code> is given
+ * <code>RuntimeException</code>S are expected to be
+ * thrown instead.
+ *
+ * @author Robert Schuster
+ */
+public class MutableTest1 implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JComboBox combo = new JComboBox(new TestModel1());
+
+ boolean ok = false;
+
+ try
+ {
+ combo.insertItemAt("BOGUS", 0);
+ }
+ catch (RuntimeException re)
+ {
+ ok = true;
+ }
+ harness.check(ok, "insertItemAt");
+
+ ok = false;
+ try
+ {
+ combo.removeItem("BOGUS");
+ }
+ catch (RuntimeException re)
+ {
+ ok = true;
+ }
+ harness.check(ok, "removeItem");
+
+ ok = false;
+ try
+ {
+ combo.removeItemAt(0);
+ }
+ catch (RuntimeException re)
+ {
+ ok = true;
+ }
+ harness.check(ok, "removeItemAt");
+ ok = false;
+
+ try
+ {
+ combo.removeAllItems();
+ }
+ catch (RuntimeException re)
+ {
+ ok = true;
+ }
+ harness.check(ok, "removeAllItems");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/MutableTest2.java b/gnu/testlet/javax/swing/JComboBox/MutableTest2.java
new file mode 100644
index 00000000..3a5829bd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/MutableTest2.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+// Uses: TestModel2
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+
+/** This tests the model modifying methods of JComboBox. The model
+ * being used is a valid MutableComboBoxModel. It contains 10 elements
+ * at the beginning and shifts its items because it is based on a linked
+ * list.
+ *
+ * @author Robert Schuster
+ */
+public class MutableTest2 implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JComboBox combo = new JComboBox(new TestModel2());
+
+ combo.insertItemAt("TESTVALUE", 5);
+ harness.check(combo.getItemAt(5), "TESTVALUE", "insertItemAt");
+
+ combo.removeItem("TESTVALUE");
+ harness.check(combo.getItemCount(), 10, "removeItem");
+
+ combo.removeItemAt(0);
+ harness.check(combo.getItemCount(), 9, "removeItemAt");
+
+ combo.removeAllItems();
+ harness.check(combo.getItemCount(), 0, "removeAllItems");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/MyJComboBox.java b/gnu/testlet/javax/swing/JComboBox/MyJComboBox.java
new file mode 100644
index 00000000..d31863ed
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/MyJComboBox.java
@@ -0,0 +1,38 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import javax.swing.JComboBox;
+
+/**
+ * Provides access to protected fields.
+ */
+public class MyJComboBox extends JComboBox
+{
+ public MyJComboBox(Object[] items)
+ {
+ super(items);
+ }
+
+ public Object getSelectedItemReminder()
+ {
+ return this.selectedItemReminder;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java b/gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java
new file mode 100644
index 00000000..ca9c8b27
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/SimpleSelectionTest.java
@@ -0,0 +1,120 @@
+// Tags: JDK1.2
+// Uses: TestModel1
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+
+/** Tests selection and counting methods of JComboBox with a ComboBoxModel
+ * that extends AbstractListModel and implements ComboBoxModel.
+ *
+ * <p>The order of operations is important. That means if one of the
+ * tests fails its likely that following tests fail too.</p>
+ * <p>The test were written after fixing GNU Classpath bug #11255.</p>
+ *
+ * @author Robert Schuster
+ */
+public class SimpleSelectionTest implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JComboBox combo = new JComboBox(new TestModel1());
+
+ /* Tests returning item count with a data model which is not an instance
+ * of DefaultComboBoxModel.
+ */
+ harness.check(combo.getItemCount(), 4, "get item count");
+
+ /* Tests whether the JComboBox does not change the value that
+ * the model decided to preselect.
+ */
+ harness.check(combo.getSelectedItem(), "In", "preselected item");
+
+ /* Tests selecting by value. */
+ combo.setSelectedItem("Freedom");
+ harness.check(combo.getSelectedIndex(), 3, "select by value");
+
+ /* Tests whether selecting by value with an item that is not
+ * in the model has no effect.
+ */
+ combo.setSelectedItem("BOGUS");
+ harness.check(combo.getSelectedIndex(), 3, "select by unknown value");
+
+ /* Tests returning the 2nd item via index. */
+ harness.check(combo.getItemAt(1), "As", "return via index");
+
+ /* Tests unselecting via index.
+ * Note that for unselecting to work properly the ComboBoxModel must support that.
+ */
+ combo.setSelectedIndex(-1);
+ harness.check(combo.getSelectedItem(), null, "unselect via index");
+
+ /* Tests IllegalArgumentException being thrown for an index
+ * below -1.
+ */
+ try
+ {
+ combo.setSelectedIndex(-12);
+ harness.fail("illegal index access 1: exception not thrown");
+ }
+ catch (Exception e)
+ {
+ harness.check(
+ e instanceof IllegalArgumentException,
+ "illegal index access 1");
+ }
+
+ /* Tests IllegalArgumentException being thrown for an index
+ * outside the upper bound.
+ */
+ try
+ {
+ combo.setSelectedIndex(1200);
+ harness.fail("illegal index access 2: exception not thrown");
+ }
+ catch (Exception e)
+ {
+ harness.check(
+ e instanceof IllegalArgumentException,
+ "illegal index access 2");
+ }
+
+ /* Tests selection via index. */
+ combo.setSelectedIndex(0);
+ harness.check(
+ combo.getSelectedItem(),
+ "Free",
+ "valid selection via index");
+
+ /* Tests unselecting via null.
+ * Note that for unselecting to work properly the ComboBoxModel must support that.
+ */
+ combo.setSelectedItem(null);
+ harness.check(combo.getSelectedItem(), null, "unselect via null");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/TestModel1.java b/gnu/testlet/javax/swing/JComboBox/TestModel1.java
new file mode 100644
index 00000000..b77ddea8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/TestModel1.java
@@ -0,0 +1,72 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JComboBox;
+
+import javax.swing.ComboBoxModel;
+import javax.swing.AbstractListModel;
+
+/** A non-mutable ComboBoxModel implementation for use in a simple
+ * selection test. The model supports unselection.
+ *
+ * @author Robert Schuster
+ */
+public class TestModel1 extends AbstractListModel implements ComboBoxModel {
+
+ private String[] principle = { "Free", "As", "In", "Freedom" };
+
+ /** The currently selected item. Defaults to "In". This is needed
+ * for the test.
+ */
+ private String selected = principle[2];
+
+ public void setSelectedItem(Object o) {
+ if(o == null) {
+ selected = null;
+ return;
+ }
+
+ if(!(o instanceof String))
+ return;
+
+ String str = (String) o;
+
+ for(int i=0; i < principle.length; i++) {
+ if(principle[i].equals(str)) {
+ selected = principle[i];
+ return;
+ }
+ }
+ }
+
+ public Object getSelectedItem() {
+ return selected;
+ }
+
+ public Object getElementAt(int index) {
+ return principle[index];
+ }
+
+ public int getSize() {
+ return principle.length;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/TestModel2.java b/gnu/testlet/javax/swing/JComboBox/TestModel2.java
new file mode 100644
index 00000000..01b261e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/TestModel2.java
@@ -0,0 +1,120 @@
+//Tags: not-a-test
+
+//Copyright (C) 2004 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JComboBox;
+
+import javax.swing.MutableComboBoxModel;
+import javax.swing.AbstractListModel;
+import java.util.LinkedList;
+
+/** A mutable model class for JComboBox for use in a model
+ * modification test. The model supports unselection.
+ *
+ * <p>The test is aware of the fact that this model contains 10 items
+ * when created.</p>
+ *
+ * @author Robert Schuster
+ */
+public class TestModel2
+ extends AbstractListModel
+ implements MutableComboBoxModel
+{
+
+ private LinkedList stuff = new LinkedList();
+
+ private String selected;
+
+ public TestModel2()
+ {
+
+ for (int i = 0; i < 10; i++)
+ {
+ stuff.add(String.valueOf(i));
+ }
+
+ selected = (String) stuff.get(0);
+ }
+
+ public void setSelectedItem(Object o)
+ {
+ if (o == null)
+ {
+ selected = null;
+ return;
+ }
+
+ if (!(o instanceof String))
+ return;
+
+ String str = (String) o;
+
+ int index = stuff.indexOf(o);
+ if (index != -1)
+ {
+ selected = (String) stuff.get(index);
+ }
+ }
+
+ public Object getSelectedItem()
+ {
+ return selected;
+ }
+
+ public Object getElementAt(int index)
+ {
+ return stuff.get(index);
+ }
+
+ public int getSize()
+ {
+ return stuff.size();
+ }
+
+ public void addElement(Object obj)
+ {
+ stuff.add(obj);
+ int index = stuff.size() - 1;
+ fireIntervalAdded(obj, index, index);
+ }
+
+ public void removeElement(Object obj)
+ {
+ int index = stuff.indexOf(obj);
+ if (index != -1)
+ {
+ stuff.remove(obj);
+ fireIntervalRemoved(obj, index, index);
+ }
+
+ }
+
+ public void insertElementAt(Object obj, int index)
+ {
+ stuff.add(index, obj);
+ fireIntervalAdded(obj, index, index);
+ }
+
+ public void removeElementAt(int index)
+ {
+ fireIntervalRemoved(stuff.remove(index), index, index);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/addItem.java b/gnu/testlet/javax/swing/JComboBox/addItem.java
new file mode 100644
index 00000000..5844e207
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/addItem.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+import javax.swing.UIManager;
+
+/**
+ * Some checks for the addItem() method in the {@link JComboBox} class.
+ */
+public class addItem
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem setting MetalLookAndFeel");
+ }
+
+ JComboBox c1 = new JComboBox();
+ harness.check(c1.getSelectedIndex(), -1);
+ harness.check(c1.getSelectedItem(), null);
+
+ c1.addItem("Item 1");
+ harness.check(c1.getSelectedIndex(), 0);
+ harness.check(c1.getSelectedItem(), "Item 1");
+
+ c1.addItem("Item 2");
+ harness.check(c1.getSelectedIndex(), 0);
+ harness.check(c1.getSelectedItem(), "Item 1");
+
+ // check null
+ c1.addItem(null);
+ harness.check(c1.getSelectedIndex(), 0);
+ harness.check(c1.getSelectedItem(), "Item 1");
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/basic.java b/gnu/testlet/javax/swing/JComboBox/basic.java
new file mode 100644
index 00000000..cfbbccc2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/basic.java
@@ -0,0 +1,229 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Robot;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * The the basic JComboBox features (including listeners).
+ * This test must also work when the component is not displayed.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class basic
+ implements Testlet, ActionListener, ItemListener
+{
+ static String COMMAND = "mauve";
+ static String UNASSIGNED = "<unassigned>";
+ String command = UNASSIGNED;
+ StringBuffer stateChangeEvents = new StringBuffer();
+
+ public void test(TestHarness harness)
+ {
+ JComboBox box = createBox(harness);
+ testSelectionByIndex(harness, box);
+ testSelectionByName(harness, box);
+ testItemRemoving(harness, box);
+
+ testAddingItems(harness, box);
+
+ testTogglingVisibility(harness);
+ }
+
+ private void testAddingItems(TestHarness harness, JComboBox box) {
+ harness.checkPoint("Adding items");
+ box.addItem("x");
+ box.addItem("y");
+ harness.check(box.getItemCount(), 2, "adding items");
+ harness.check(box.getItemAt(0), "x", "adding items");
+ harness.check(box.getItemAt(1), "y", "adding items");
+ }
+
+ private void testItemRemoving(TestHarness harness, JComboBox box)
+ {
+ harness.checkPoint("Removing items");
+ box.removeItem("b");
+ harness.check(box.getItemCount(), 2, "removing by name");
+ harness.check((String) box.getItemAt(0) + (String) box.getItemAt(1), "ac",
+ "removing by name"
+ );
+
+ box.removeItemAt(0);
+ harness.check(box.getItemCount(), 1, "removing by index");
+ harness.check(box.getItemAt(0), "c", "removing by index");
+
+ box.removeAllItems();
+ harness.check(box.getItemCount(), 0, "Removing all items.");
+ }
+
+ private JComboBox createBox(TestHarness harness)
+ {
+ harness.checkPoint("Creating");
+
+ String array[] = new String[] { "a", "b", "c" };
+
+ JComboBox box = new JComboBox(array);
+
+ box.addActionListener(this);
+ box.addItemListener(this);
+
+ box.setActionCommand(COMMAND);
+
+ harness.check(box.getActionCommand(), COMMAND, "action command");
+ harness.check(box.getItemCount(), 3, "item count");
+
+ testGetItemAt(harness, array, box);
+
+ return box;
+ }
+
+ private void testGetItemAt(TestHarness harness, String array[], JComboBox box)
+ {
+ harness.checkPoint("getItemAt");
+ for (int i = 0; i < array.length; i++)
+ {
+ harness.check(box.getItemAt(i).toString(), array [ i ],
+ "getItemAt(" + i + ") " + array [ i ] + "!=" +
+ box.getItemAt(i)
+ );
+ }
+ }
+
+ private void testSelectionByName(TestHarness harness, JComboBox box)
+ {
+ harness.checkPoint("s.b.n");
+ command = UNASSIGNED;
+ stateChangeEvents.setLength(0);
+
+ box.setSelectedItem("a");
+
+ harness.check(command, COMMAND);
+ harness.check(box.getSelectedIndex(), 0, "selected index in s.b.n");
+ harness.check(box.getSelectedItem(), "a", "selected item in s.b.n");
+
+ // c was previously selected by testSelectionByIndex.
+ harness.check(stateChangeEvents.toString(), " -c +a",
+ "item events in s.b.i " + stateChangeEvents
+ );
+ }
+
+ private void testSelectionByIndex(TestHarness harness, JComboBox box)
+ {
+ harness.checkPoint("s.b.i");
+ command = UNASSIGNED;
+ stateChangeEvents.setLength(0);
+
+ box.setSelectedIndex(1);
+
+ harness.check(command, COMMAND, "action listener in s.b.i");
+ harness.check(box.getSelectedIndex(), 1, "selected index in s.b.i.");
+ harness.check(box.getSelectedItem(), "b", "selected item in s.b.i.");
+
+ for (int i = 0; i < 3; i++)
+ {
+ box.setSelectedIndex(i);
+ }
+
+ String events = stateChangeEvents.toString();
+ harness.check(events.startsWith(" -a"),
+ "Missing event on deselecting the default item. " +
+ "Bug in 1.3, fixed in 1.4."
+ );
+
+ harness.check(events, " -a +b -b +a -a +b -b +c",
+ "item events in s.b.i " + stateChangeEvents
+ );
+
+ command = UNASSIGNED;
+ }
+
+ private void testTogglingVisibility(TestHarness harness)
+ {
+ JFrame frame = new JFrame();
+ frame.setSize(200, 100);
+ Container contentPane = frame.getContentPane();
+
+ JComboBox box = new JComboBox();
+ box.addItem("123");
+ box.addItem("aaa");
+ box.addItem("abc");
+
+ contentPane.add(box, BorderLayout.SOUTH);
+ frame.show();
+
+ // A new box should not be visible
+ harness.check(box.isPopupVisible() == false);
+
+ // Prepare robot to perform mouse click; position in middle of box
+ Robot r = harness.createRobot ();
+ r.waitForIdle ();
+ r.delay (100);
+ r.mouseMove(box.getLocationOnScreen().x + (box.getSize().width / 2),
+ box.getLocationOnScreen().y + (box.getSize().height / 2));
+
+ // Simulate user click on button; popup should now be visible
+ r.waitForIdle ();
+ r.delay (100);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+
+ r.waitForIdle ();
+ r.delay (100);
+ harness.check(box.isPopupVisible());
+
+ // Click it again - this should toggle the popup and make it invisible
+ r.waitForIdle ();
+ r.delay (100);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+
+ r.waitForIdle ();
+ r.delay (100);
+ harness.check(box.isPopupVisible() == false);
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ command = e.getActionCommand();
+ }
+
+ public void itemStateChanged(ItemEvent ie)
+ {
+ if (ie.getStateChange() == ie.SELECTED)
+ stateChangeEvents.append(" +" + ie.getItem());
+ else
+ stateChangeEvents.append(" -" + ie.getItem());
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/getEditor.java b/gnu/testlet/javax/swing/JComboBox/getEditor.java
new file mode 100644
index 00000000..20cdb468
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/getEditor.java
@@ -0,0 +1,138 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalComboBoxEditor;
+
+/**
+ * Some checks for the getEditor() method in the {@link JComboBox} class.
+ */
+public class getEditor
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testDefault(harness);
+ testPR30337(harness);
+ }
+
+ /**
+ * Tests the default value.
+ *
+ * @param harness the test harness to use
+ */
+ private void testDefault(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem setting MetalLookAndFeel");
+ }
+
+ JComboBox c1 = new JComboBox(new Object[] {"A", "B", "C"});
+ ComboBoxEditor editor = c1.getEditor();
+
+ // check default value
+ harness.check(editor instanceof MetalComboBoxEditor.UIResource);
+
+ c1.setEditor(new MetalComboBoxEditor());
+ harness.check(!(c1.getEditor() instanceof UIResource));
+
+ }
+
+ /**
+ * A combo box that returns null for getEditor(). This is used in the
+ * following test.
+ */
+ private class TestComboBox extends JComboBox
+ {
+ public ComboBoxEditor getEditor()
+ {
+ return null;
+ }
+ }
+
+ /**
+ * The Classpath PR30337 overrides getEditor() to return null and expects
+ * the JComboBox to not throw an NPE.
+ *
+ * @param h the test harness
+ */
+ private void testPR30337(TestHarness h)
+ {
+ // Test with default (non-editable) combo box. No NPE is thrown.
+ JComboBox cb = new TestComboBox();
+ JFrame f = new JFrame();
+ boolean pass = true;
+ try
+ {
+ f.getContentPane().add(cb);
+ f.setVisible(true);
+ }
+ catch (NullPointerException ex)
+ {
+ pass = false;
+ }
+ h.check(pass);
+
+ // remove frame from the desktop
+ f.dispose();
+
+ // Test with editable combo box (NPE is thrown).
+ cb = new TestComboBox();
+ f = new JFrame();
+ pass = false;
+ try
+ {
+ cb.setEditable(true);
+ f.getContentPane().add(cb);
+ f.setVisible(true);
+ }
+ catch (NullPointerException ex)
+ {
+ pass = true;
+ }
+ h.check(pass);
+
+ // remove frame from the desktop
+ f.dispose();
+
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/getPrototypeDisplayValue.java b/gnu/testlet/javax/swing/JComboBox/getPrototypeDisplayValue.java
new file mode 100644
index 00000000..ee5676ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/getPrototypeDisplayValue.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+
+/**
+ * Some checks for the getPrototypeDisplayValue() method in the
+ * {@link JComponent} class.
+ */
+public class getPrototypeDisplayValue
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox c = new JComboBox(new Object[] {"A", "B", "C"});
+
+ // check default value
+ harness.check(c.getPrototypeDisplayValue(), null);
+
+ // set a new value and retrieve it
+ c.setPrototypeDisplayValue("XYZ");
+ harness.check(c.getPrototypeDisplayValue(), "XYZ");
+
+ // try a null value
+ c.setPrototypeDisplayValue(null);
+ harness.check(c.getPrototypeDisplayValue(), null);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/listenerList.java b/gnu/testlet/javax/swing/JComboBox/listenerList.java
new file mode 100644
index 00000000..792a6719
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/listenerList.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ItemListener;
+
+import javax.swing.JComboBox;
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+
+/**
+ * The basic JComboBox listener array getters (feature of 1.4).
+ * This test must also work when the component is not displayed.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class listenerList
+ implements Testlet, ActionListener, ItemListener
+{
+ public void test(TestHarness harness)
+ {
+ JComboBox box = new JComboBox();
+ box.addActionListener(this);
+ box.addItemListener(this);
+ checkListenerLists(harness, box);
+ }
+
+ private void checkListenerLists(TestHarness harness, JComboBox box)
+ {
+ try
+ {
+ ActionListener a_listeners[] = box.getActionListeners();
+ boolean weAre = false;
+ for (int i = 0; i < a_listeners.length; i++)
+ {
+ if (a_listeners [ i ] == this)
+ {
+ weAre = true;
+ break;
+ }
+ }
+ harness.check(weAre, "Action listener list");
+
+ ItemListener i_listeners[] = box.getItemListeners();
+ weAre = false;
+ for (int i = 0; i < i_listeners.length; i++)
+ {
+ if (i_listeners [ i ] == this)
+ {
+ weAre = true;
+ break;
+ }
+ }
+ harness.check(weAre, "Item listener list");
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Cannot check the listerner lists, bug in 1.3, fixed in 1.4");
+ }
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ }
+
+ public void itemStateChanged(ItemEvent ie)
+ {
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComboBox/model.java b/gnu/testlet/javax/swing/JComboBox/model.java
new file mode 100644
index 00000000..e8e6e672
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/model.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+/**
+ * Some checks for the communication between the model and the JComboBox.
+ */
+public class model
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e) {
+ harness.debug(e);
+ }
+ DefaultComboBoxModel model = new DefaultComboBoxModel(new Object[] {"A",
+ "B", "C"});
+ JComboBox cb = new JComboBox(model);
+ harness.check(cb.getModel(), model);
+ harness.check(cb.getSelectedIndex(), 0);
+
+ // setting the model updates the combo box
+ model.setSelectedItem("B");
+ harness.check(cb.getSelectedItem(), "B");
+
+ // setting the combo box updates the model
+ cb.setSelectedItem("C");
+ harness.check(model.getSelectedItem(), "C");
+ }
+
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/removeItem.java b/gnu/testlet/javax/swing/JComboBox/removeItem.java
new file mode 100644
index 00000000..d2d69e61
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/removeItem.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+import javax.swing.UIManager;
+
+/**
+ * Some checks for the removeItem() method in the {@link JComboBox} class.
+ */
+public class removeItem
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem setting MetalLookAndFeel");
+ }
+
+ JComboBox c1 = new JComboBox();
+ harness.check(c1.getSelectedIndex(), -1);
+ harness.check(c1.getSelectedItem(), null);
+
+ // remove an item when it doesn't exist
+ c1.removeItem("Item 1");
+ harness.check(c1.getSelectedIndex(), -1);
+ harness.check(c1.getSelectedItem(), null);
+
+ c1.addItem("Item 1");
+ harness.check(c1.getSelectedItem(), "Item 1");
+ c1.addItem("Item 2");
+ harness.check(c1.getSelectedItem(), "Item 1");
+ c1.addItem("Item 3");
+ harness.check(c1.getSelectedItem(), "Item 1");
+ c1.setSelectedItem("Item 3");
+ harness.check(c1.getSelectedItem(), "Item 3");
+ c1.removeItem("Item 3");
+ harness.check(c1.getSelectedItem(), "Item 2");
+
+ // check null
+ c1.removeItem(null);
+ harness.check(c1.getSelectedItem(), "Item 2");
+
+ c1.removeItem("Item 2");
+ harness.check(c1.getSelectedItem(), "Item 1");
+ harness.check(c1.getSelectedIndex(), 0);
+
+ c1.addItem("Item A");
+ c1.removeItem("Item 1");
+ harness.check(c1.getSelectedItem(), "Item A");
+ harness.check(c1.getSelectedIndex(), 0);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/setEditable.java b/gnu/testlet/javax/swing/JComboBox/setEditable.java
new file mode 100644
index 00000000..f3f074c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/setEditable.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComboBox;
+
+/**
+ * Some checks for the setEditable() method in the
+ * {@link JComboBox} class.
+ */
+public class setEditable
+ implements Testlet, PropertyChangeListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox c = new JComboBox();
+ c.setEditable(false);
+ harness.check(c.isEditable(), false);
+
+ // now check property change events
+ c.addPropertyChangeListener(this);
+
+ c.setEditable(true);
+ harness.check(c.isEditable(), true);
+ harness.check(event.getPropertyName(), "editable");
+ harness.check(event.getOldValue(), Boolean.FALSE);
+ harness.check(event.getNewValue(), Boolean.TRUE);
+
+ c.setEditable(false);
+ harness.check(c.isEditable(), false);
+ harness.check(event.getPropertyName(), "editable");
+ harness.check(event.getOldValue(), Boolean.TRUE);
+ harness.check(event.getNewValue(), Boolean.FALSE);
+
+ // no change = no event
+ event = null;
+
+ c.setEditable(false);
+ harness.check(event == null);
+ }
+
+ private PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/setEditor.java b/gnu/testlet/javax/swing/JComboBox/setEditor.java
new file mode 100644
index 00000000..5f19c7af
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/setEditor.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.4
+// Uses: ../plaf/TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+import javax.swing.plaf.metal.MetalComboBoxEditor;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the setEditor() method in the {@link JComponent} class.
+ */
+public class setEditor
+ implements Testlet, PropertyChangeListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem setting MetalLookAndFeel");
+ }
+
+ JComboBox c1 = new JComboBox(new Object[] {"A", "B", "C"});
+ c1.addPropertyChangeListener(this);
+
+ ComboBoxEditor editor = new MetalComboBoxEditor();
+ c1.setEditor(editor);
+ harness.check(c1.getEditor(), editor);
+ harness.check(event.getPropertyName(), "editor");
+ harness.check(event.getNewValue(), editor);
+
+ // set a new look and feel and see if the editor (which doesn't implement
+ // UIResource) gets replaced
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem setting TestLookAndFeel");
+ }
+ c1.updateUI();
+ JComboBox c2 = new JComboBox();
+ harness.check(c1.getEditor(), editor);
+ harness.check(c2.getEditor() instanceof BasicComboBoxEditor.UIResource);
+
+ // restore MetalLookAndFeel so as not to interfere with other tests
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ harness.fail("Problem restoring MetalLookAndFeel");
+ }
+
+ // try a null setting - no exceptions are thrown
+ c1.setEditor(null);
+ harness.check(c1.getEditor(), null);
+ }
+
+ private PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/setModel.java b/gnu/testlet/javax/swing/JComboBox/setModel.java
new file mode 100644
index 00000000..8810102e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/setModel.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+// Uses: MyJComboBox
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+/**
+ * Some checks for the setModel() method in the
+ * {@link JComboBox} class.
+ */
+public class setModel
+ implements Testlet, ItemListener, ListDataListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyJComboBox c = new MyJComboBox(new Object[] {"A", "B", "C"});
+ harness.check(c.getSelectedItemReminder(), "A");
+
+ c.setModel(new DefaultComboBoxModel(new Object[] {"W", "X", "Y", "Z"}));
+ harness.check(c.getSelectedItemReminder(), "W");
+ }
+
+ private List events = new ArrayList();
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ events.add(e);
+ }
+
+ public void intervalAdded(ListDataEvent e)
+ {
+ events.add(e);
+ }
+
+ public void intervalRemoved(ListDataEvent e)
+ {
+ events.add(e);
+ }
+
+ public void contentsChanged(ListDataEvent e)
+ {
+ events.add(e);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/setPrototypeDisplayValue.java b/gnu/testlet/javax/swing/JComboBox/setPrototypeDisplayValue.java
new file mode 100644
index 00000000..16fb8343
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/setPrototypeDisplayValue.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComboBox;
+
+/**
+ * Some checks for the setPrototypeDisplayValue() method in the
+ * {@link JComboBox} class.
+ */
+public class setPrototypeDisplayValue
+ implements Testlet, PropertyChangeListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox c = new JComboBox();
+ c.addPropertyChangeListener(this);
+
+ // set a new prototype
+ c.setPrototypeDisplayValue("Test1");
+ harness.check(c.getPrototypeDisplayValue(), "Test1");
+ harness.check(name, "prototypeDisplayValue");
+ harness.check(oldValue, null);
+ harness.check(newValue, "Test1");
+
+ // overwrite the existing prototype
+ c.setPrototypeDisplayValue("Test2");
+ harness.check(c.getPrototypeDisplayValue(), "Test2");
+ harness.check(name, "prototypeDisplayValue");
+ harness.check(oldValue, "Test1");
+ harness.check(newValue, "Test2");
+
+ // clear the prototype
+ c.setPrototypeDisplayValue(null);
+ harness.check(c.getPrototypeDisplayValue(), null);
+ harness.check(name, "prototypeDisplayValue");
+ harness.check(oldValue, "Test2");
+ harness.check(newValue, null);
+ }
+
+ private String name = null;
+
+ private Object oldValue = null;
+
+ private Object newValue = null;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ name = e.getPropertyName();
+ oldValue = e.getOldValue();
+ newValue = e.getNewValue();
+ }
+
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java b/gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java
new file mode 100644
index 00000000..13691a08
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComboBox/setSelectedIndex.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.4
+// Uses: MyJComboBox
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComboBox;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JComboBox;
+
+/**
+ * Some checks for the setSelectedIndex() method in the
+ * {@link JComboBox} class.
+ */
+public class setSelectedIndex
+ implements Testlet, ItemListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyJComboBox c = new MyJComboBox(new Object[] {"A", "B", "C"});
+ harness.check(c.getSelectedItemReminder(), "A");
+
+ c.addItemListener(this);
+
+ c.setSelectedIndex(1);
+ harness.check(c.getSelectedItem(), "B");
+ harness.check(events.size(), 2);
+ ItemEvent e1 = (ItemEvent) events.get(0);
+ harness.check(e1.getStateChange(), ItemEvent.DESELECTED);
+ harness.check(e1.getItem(), "A");
+ ItemEvent e2 = (ItemEvent) events.get(1);
+ harness.check(e2.getStateChange(), ItemEvent.SELECTED);
+ harness.check(e2.getItem(), "B");
+ events.clear();
+
+ c.setSelectedIndex(-1);
+ harness.check(events.size(), 1);
+ e1 = (ItemEvent) events.get(0);
+ harness.check(e1.getStateChange(), ItemEvent.DESELECTED);
+ harness.check(e1.getItem(), "B");
+ events.clear();
+
+ // no change == no event
+ c.setSelectedIndex(-1);
+ harness.check(events.size(), 0);
+
+ c.setSelectedIndex(1);
+ events.clear();
+ c.setSelectedIndex(1);
+ harness.check(events.size(), 0);
+ }
+
+ private List events = new ArrayList();
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ events.add(e);
+ }
+
+
+}
+
diff --git a/gnu/testlet/javax/swing/JComponent/CVS/Entries b/gnu/testlet/javax/swing/JComponent/CVS/Entries
new file mode 100644
index 00000000..13e45c81
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/CVS/Entries
@@ -0,0 +1,38 @@
+/MyJLabel.java/1.1/Fri Sep 23 13:19:00 2005//
+/TestComponent.java/1.1/Tue Oct 18 14:39:25 2005//
+/TestLayout.java/1.1/Tue Nov 8 13:49:38 2005/-kk/
+/addVetoableChangeListener.java/1.1/Wed Jun 28 14:29:34 2006//
+/constructor.java/1.1/Wed Dec 7 16:34:29 2005//
+/getActionForKeyStroke.java/1.1/Thu Jun 29 16:13:37 2006//
+/getAlignmentX.java/1.1/Tue Nov 8 13:49:38 2005/-kk/
+/getAlignmentY.java/1.1/Tue Nov 8 13:49:38 2005/-kk/
+/getComponentPopupMenu.java/1.1/Wed Jun 28 13:07:40 2006//
+/getFont.java/1.2/Wed May 21 13:30:45 2008//
+/getInputMap.java/1.1/Tue Jun 6 09:30:03 2006//
+/getListeners.java/1.4/Wed Dec 27 15:48:18 2006//
+/getPreferredSize.java/1.2/Thu Dec 15 17:44:20 2005//
+/getRegisteredKeyStrokes.java/1.1/Thu Jun 29 16:13:37 2006//
+/getVerifyInputWhenFocusTarget.java/1.1/Wed Jun 28 14:56:22 2006//
+/getVetoableChangeListeners.java/1.1/Wed Jun 28 14:29:34 2006//
+/paint.java/1.1/Tue Oct 18 14:39:25 2005//
+/putClientProperty.java/1.2/Tue Nov 28 12:35:24 2006//
+/registerKeyboardAction.java/1.1/Thu Jun 29 16:13:37 2006//
+/removeVetoableChangeListener.java/1.1/Wed Jun 28 14:29:34 2006//
+/setAlignmentX.java/1.1/Tue Oct 18 14:39:25 2005//
+/setAlignmentY.java/1.1/Tue Oct 18 14:39:25 2005//
+/setBackground.java/1.1/Tue Oct 18 14:39:25 2005//
+/setBorder.java/1.1/Tue Oct 18 14:39:25 2005//
+/setComponentPopupMenu.java/1.1/Wed Jun 28 13:07:40 2006//
+/setDefaultLocale.java/1.1/Thu Jun 29 16:13:37 2006//
+/setEnabled.java/1.1/Tue Oct 18 14:39:25 2005//
+/setFont.java/1.1/Tue Oct 18 14:39:25 2005//
+/setForeground.java/1.1/Tue Oct 18 14:39:25 2005//
+/setInheritsPopupMenu.java/1.1/Wed Jun 28 13:07:40 2006//
+/setMaximumSize.java/1.2/Thu Nov 17 23:12:23 2005//
+/setMinimumSize.java/1.2/Thu Nov 17 23:44:14 2005//
+/setOpaque.java/1.1/Tue Oct 18 14:39:25 2005//
+/setPreferredSize.java/1.2/Fri Nov 18 00:17:33 2005//
+/setUI.java/1.1/Tue Oct 18 14:39:25 2005//
+/setVerifyInputWhenFocusTarget.java/1.1/Wed Jun 28 14:56:22 2006//
+/setVisible.java/1.2/Thu Mar 15 16:02:30 2012//
+D
diff --git a/gnu/testlet/javax/swing/JComponent/CVS/Repository b/gnu/testlet/javax/swing/JComponent/CVS/Repository
new file mode 100644
index 00000000..206f4a7c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JComponent
diff --git a/gnu/testlet/javax/swing/JComponent/CVS/Root b/gnu/testlet/javax/swing/JComponent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JComponent/MyJLabel.java b/gnu/testlet/javax/swing/JComponent/MyJLabel.java
new file mode 100644
index 00000000..ef52060a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/MyJLabel.java
@@ -0,0 +1,41 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.JLabel;
+
+/**
+ * A simple component that won't install a UI delegate (used to check default
+ * settings before the UI delegate is installed).
+ */
+public class MyJLabel extends JLabel {
+
+ public MyJLabel(String label)
+ {
+ super(label);
+ }
+
+ public void updateUI()
+ {
+ // ignore this - we want the raw component, not one that has been
+ // configured by a UI delegate
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/TestComponent.java b/gnu/testlet/javax/swing/JComponent/TestComponent.java
new file mode 100644
index 00000000..1d5859a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/TestComponent.java
@@ -0,0 +1,71 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.JComponent;
+import javax.swing.plaf.ComponentUI;
+
+/**
+ * A subclass of {@link javax.swing.JComponent} that enables to check if
+ * certain methods (like repaint() or revalidate()) are called correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+class TestComponent extends JComponent
+{
+ /**
+ * A flag indicating if repaint() has been called.
+ */
+ boolean repaintCalled;
+
+ /**
+ * A flag indicating if revalidate() has been called.
+ */
+ boolean revalidateCalled;
+
+ /**
+ * Performs the superclass repaint and sets the repaintCalled flag to true.
+ */
+ public void repaint()
+ {
+ repaintCalled = true;
+ super.repaint();
+ }
+
+ /**
+ * Performs the superclass revalidate and sets the revalidateCalled flag
+ * to true.
+ */
+ public void revalidate()
+ {
+ revalidateCalled = true;
+ super.revalidate();
+ }
+
+ /**
+ * Overridden to make public.
+ *
+ * @param ui the UI to set
+ */
+ public void setUI(ComponentUI ui)
+ {
+ super.setUI(ui);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/TestLayout.java b/gnu/testlet/javax/swing/JComponent/TestLayout.java
new file mode 100644
index 00000000..07f2ee73
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/TestLayout.java
@@ -0,0 +1,78 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.LayoutManager2;
+
+public class TestLayout implements LayoutManager2
+{
+
+ float alignmentX = 0.0F;
+ float alignmentY = 0.0F;
+
+ public void addLayoutComponent(Component component, Object constraints)
+ {
+ }
+
+ public Dimension maximumLayoutSize(Container target)
+ {
+ return null;
+ }
+
+ public float getLayoutAlignmentX(Container target)
+ {
+ return alignmentX;
+ }
+
+ public float getLayoutAlignmentY(Container target)
+ {
+ return alignmentY;
+ }
+
+ public void invalidateLayout(Container target)
+ {
+ }
+
+ public void addLayoutComponent(String name, Component component)
+ {
+ }
+
+ public void removeLayoutComponent(Component component)
+ {
+ }
+
+ public Dimension preferredLayoutSize(Container parent)
+ {
+ return null;
+ }
+
+ public Dimension minimumLayoutSize(Container parent)
+ {
+ return null;
+ }
+
+ public void layoutContainer(Container parent)
+ {
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/addVetoableChangeListener.java b/gnu/testlet/javax/swing/JComponent/addVetoableChangeListener.java
new file mode 100644
index 00000000..8efb749c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/addVetoableChangeListener.java
@@ -0,0 +1,54 @@
+/* addVetoableChangeListener.java -- some checks for the
+ addVetoableChangeListener() method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class addVetoableChangeListener
+ implements Testlet, VetoableChangeListener
+{
+ public void vetoableChange(PropertyChangeEvent e)
+ throws PropertyVetoException
+ {
+ }
+
+public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ c.addVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 1);
+ c.addVetoableChangeListener(null);
+ harness.check(c.getVetoableChangeListeners().length, 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/constructor.java b/gnu/testlet/javax/swing/JComponent/constructor.java
new file mode 100644
index 00000000..bfcfb134
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/constructor.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+// Uses: TestLayout
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the constructor is working correctly and the fields of the
+ * JComponent are initialized as they should.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Starts the testcase.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JComponent(){};
+ harness.check(c.getLayout(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getActionForKeyStroke.java b/gnu/testlet/javax/swing/JComponent/getActionForKeyStroke.java
new file mode 100644
index 00000000..c4072a2c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getActionForKeyStroke.java
@@ -0,0 +1,81 @@
+/* getActionForKeyStroke.java -- some checks for the getActionForKeyStroke()
+ method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JComponent;
+import javax.swing.KeyStroke;
+
+public class getActionForKeyStroke implements Testlet
+{
+ static class MyJComponent extends JComponent
+ {
+ public MyJComponent()
+ {
+ super();
+ }
+ }
+ public void test(TestHarness harness)
+ {
+ MyJComponent c = new MyJComponent();
+ KeyStroke ks = KeyStroke.getKeyStroke('a');
+ ActionListener a1 = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // ignore
+ }
+ };
+ ActionListener a2 = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // ignore
+ }
+ };
+ ActionListener a3 = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // ignore
+ }
+ };
+ harness.check(c.getActionForKeyStroke(ks), null);
+ c.registerKeyboardAction(a1, ks, JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(c.getActionForKeyStroke(ks), a1);
+ c.registerKeyboardAction(a2, ks,
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(c.getActionForKeyStroke(ks), a2);
+ c.registerKeyboardAction(a3, ks, JComponent.WHEN_FOCUSED);
+ harness.check(c.getActionForKeyStroke(ks), a3);
+
+ harness.check(c.getActionForKeyStroke(null), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getAlignmentX.java b/gnu/testlet/javax/swing/JComponent/getAlignmentX.java
new file mode 100644
index 00000000..ced41193
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getAlignmentX.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: TestLayout
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getAlignmentX implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JComponent(){};
+ TestLayout l = new TestLayout();
+ c.setLayout(l);
+ l.alignmentX = 0.3F;
+ // No alignment has been set, so the layout alignment is returned.
+ harness.check(c.getAlignmentX(), 0.3F);
+ // Now we set the alignment to a valid value and this should be returned.
+ c.setAlignmentX(0.2F);
+ harness.check(c.getAlignmentX(), 0.2F);
+ // Now we set the alignment to something great, and the component
+ // should return the nearest valid value (1.0 in this case).
+ c.setAlignmentX(100.0F);
+ harness.check(c.getAlignmentX(), 1.0F);
+ // Now we set the alignment to something negative.
+ c.setAlignmentX(-100.0F);
+ harness.check(c.getAlignmentX(), 0.0F);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getAlignmentY.java b/gnu/testlet/javax/swing/JComponent/getAlignmentY.java
new file mode 100644
index 00000000..09e48086
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getAlignmentY.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: TestLayout
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getAlignmentY implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JComponent(){};
+ TestLayout l = new TestLayout();
+ c.setLayout(l);
+ l.alignmentY = 0.3F;
+ // No alignment has been set, so the layout alignment is returned.
+ harness.check(c.getAlignmentY(), 0.3F);
+ // Now we set the alignment to a valid value and this should be returned.
+ c.setAlignmentY(0.2F);
+ harness.check(c.getAlignmentY(), 0.2F);
+ // Now we set the alignment to something great, and the component
+ // should return the nearest valid value (1.0 in this case).
+ c.setAlignmentY(100.0F);
+ harness.check(c.getAlignmentY(), 1.0F);
+ // Now we set the alignment to something negative.
+ c.setAlignmentY(-100.0F);
+ harness.check(c.getAlignmentY(), 0.0F);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getComponentPopupMenu.java b/gnu/testlet/javax/swing/JComponent/getComponentPopupMenu.java
new file mode 100644
index 00000000..a22478cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getComponentPopupMenu.java
@@ -0,0 +1,57 @@
+/* getComponentPopupMenu.java -- some checks for the getComponentPopupMenu()
+ method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.5
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+
+public class getComponentPopupMenu implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JPanel p = new JPanel();
+ JPopupMenu popup1 = new JPopupMenu();
+ JPopupMenu popup2 = new JPopupMenu();
+ JComponent c = new JButton("ABC");
+ p.add(c);
+ harness.check(c.getComponentPopupMenu(), null);
+ harness.check(c.getInheritsPopupMenu(), false);
+ c.setComponentPopupMenu(popup1);
+ harness.check(c.getComponentPopupMenu(), popup1);
+ p.setComponentPopupMenu(popup2);
+ harness.check(c.getComponentPopupMenu(), popup1);
+ c.setComponentPopupMenu(null);
+ harness.check(c.getComponentPopupMenu(), null);
+ c.setInheritsPopupMenu(true);
+ harness.check(c.getComponentPopupMenu(), popup2);
+ p.setComponentPopupMenu(null);
+ harness.check(c.getComponentPopupMenu(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getFont.java b/gnu/testlet/javax/swing/JComponent/getFont.java
new file mode 100644
index 00000000..3cc6b989
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getFont.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyJLabel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComponent;
+
+/**
+ * Some checks for the getFont() method in the {@link JComponent} class.
+ */
+public class getFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // MyJLabel is a label that by-passes installation of a UI-delegate
+ // so we can check the default font is null
+ JComponent label = new MyJLabel("Test");
+ harness.check(label.getFont(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getInputMap.java b/gnu/testlet/javax/swing/JComponent/getInputMap.java
new file mode 100644
index 00000000..67410554
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getInputMap.java
@@ -0,0 +1,90 @@
+/* getInputMap.java -- some checks for the getInputMap() methods in the
+ JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.plaf.InputMapUIResource;
+
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JButton button = new JButton("X");
+ InputMap m1 = button.getInputMap();
+ InputMap m2 = button.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JButton button = new JButton("X");
+ InputMap m1 = button.getInputMap(JComponent.WHEN_FOCUSED);
+ InputMap m2 = button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ InputMap m3 = button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ // the following are just sanity checks. Real testing for the maps should
+ // be in the JButton test code...
+ harness.check(m1.keys(), null);
+ harness.check(m1.getParent() instanceof InputMapUIResource);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ boolean pass = false;
+ try
+ {
+ m1 = button.getInputMap(3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1 = button.getInputMap(JComponent.UNDEFINED_CONDITION); // -1
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getListeners.java b/gnu/testlet/javax/swing/JComponent/getListeners.java
new file mode 100644
index 00000000..06713c48
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getListeners.java
@@ -0,0 +1,145 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.FocusListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+import java.util.EventListener;
+
+import javax.swing.JComponent;
+import javax.swing.event.AncestorEvent;
+import javax.swing.event.AncestorListener;
+
+/**
+ * Some tests for the <code>getListeners(Class)</code> method in the
+ * {@link JComponent} class.
+ */
+public class getListeners implements Testlet, AncestorListener {
+
+ class TestComponent extends JComponent
+ {
+ }
+
+ class MyPropertyChangeListener
+ implements PropertyChangeListener
+ {
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // ignore
+ }
+ }
+
+ class MyVetoableChangeListener implements VetoableChangeListener
+ {
+ public void vetoableChange(PropertyChangeEvent e)
+ throws PropertyVetoException
+ {
+ // ignore
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.addAncestorListener(this);
+ EventListener[] listeners = c.getListeners(AncestorListener.class);
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try a listener type that isn't registered
+ listeners = c.getListeners(FocusListener.class);
+ harness.check(listeners.length, 0);
+ c.removeAncestorListener(this);
+ listeners = c.getListeners(AncestorListener.class);
+ harness.check(listeners.length, 0);
+
+ // try a PropertyChangeListener
+ PropertyChangeListener pcl = new MyPropertyChangeListener();
+ c.addPropertyChangeListener(pcl);
+ listeners = c.getListeners(PropertyChangeListener.class);
+ harness.check(listeners.length, 1);
+ if (listeners.length > 0)
+ harness.check(listeners[0], pcl);
+ else
+ harness.check(false);
+
+ // try a VetoableChangeListener
+ VetoableChangeListener vcl = new MyVetoableChangeListener();
+ c.addVetoableChangeListener(vcl);
+ listeners = c.getListeners(VetoableChangeListener.class);
+ harness.check(listeners.length, 1);
+ if (listeners.length > 0)
+ harness.check(listeners[0], vcl);
+ else
+ harness.check(false);
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ listeners = c.getListeners(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ /* Doesn't compile with 1.5
+ // try a class that isn't a listener
+ pass = false;
+ try
+ {
+ listeners = c.getListeners(Integer.class);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+ public void ancestorMoved(AncestorEvent e)
+ {
+ // ignored
+ }
+
+ public void ancestorAdded(AncestorEvent e)
+ {
+ // ignored
+ }
+
+ public void ancestorRemoved(AncestorEvent e)
+ {
+ // ignored
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getPreferredSize.java b/gnu/testlet/javax/swing/JComponent/getPreferredSize.java
new file mode 100644
index 00000000..bb624775
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getPreferredSize.java
@@ -0,0 +1,282 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JComponent;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.LayoutManager;
+
+import javax.swing.JComponent;
+import javax.swing.plaf.ComponentUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some tests for JComponent.getPreferredSize().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * A JComponent to overrides setUI for test purposes.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ static class TestComponent extends JComponent
+ {
+ public void setUI(ComponentUI ui)
+ {
+ super.setUI(ui);
+ }
+ }
+
+ /**
+ * A UI class for test purposes.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ static class TestUI extends ComponentUI
+ {
+ public Dimension getPreferredSize(JComponent c)
+ {
+ return new Dimension(100, 100);
+ }
+ }
+
+ /**
+ * A layout manager for test purposes.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ static class TestLayout implements LayoutManager
+ {
+
+ public void addLayoutComponent(String name, Component component)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeLayoutComponent(Component component)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Dimension preferredLayoutSize(Container parent)
+ {
+ return new Dimension(200, 200);
+ }
+
+ public Dimension minimumLayoutSize(Container parent)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void layoutContainer(Container parent)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testPlain(harness);
+ testWithUI(harness);
+ testWithLayout(harness);
+ testWithUIAndLayout(harness);
+ testWithSet(harness);
+ testWithSetAndUI(harness);
+ testWithSetAndLayout(harness);
+ testWithAll(harness);
+
+ testSmallerThanMinSize(harness);
+ testChangeValue(harness);
+ }
+
+ /**
+ * A very basic test.
+ *
+ * @param h the test harness to use
+ */
+ private void testPlain(TestHarness h)
+ {
+ h.checkPoint("plain");
+ TestComponent c = new TestComponent();
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 0);
+ h.check(d.height, 0);
+ }
+
+ /**
+ * Tests the preferredSize with a UI installed.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithUI(TestHarness h)
+ {
+ h.checkPoint("withUI");
+ TestComponent c = new TestComponent();
+ c.setUI(new TestUI());
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 100);
+ h.check(d.height, 100);
+ }
+
+ /**
+ * Tests the preferredSize with a layout manager installed
+ *
+ * @param h the test harness to use
+ */
+ private void testWithLayout(TestHarness h)
+ {
+ h.checkPoint("withLayout");
+ TestComponent c = new TestComponent();
+ c.setLayout(new TestLayout());
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 200);
+ h.check(d.height, 200);
+ }
+
+ /**
+ * Tests the preferredSize with both a layout manager and a UI installed.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithUIAndLayout(TestHarness h)
+ {
+ h.checkPoint("withUIAndLayout");
+ TestComponent c = new TestComponent();
+ c.setUI(new TestUI());
+ c.setLayout(new TestLayout());
+ c.invalidate();
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 100);
+ h.check(d.height, 100);
+ }
+
+ /**
+ * Tests the preferredSize when explicitly set.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithSet(TestHarness h)
+ {
+ h.checkPoint("withSet");
+ TestComponent c = new TestComponent();
+ c.setPreferredSize(new Dimension(300, 300));
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 300);
+ h.check(d.height, 300);
+ }
+
+ /**
+ * Tests the preferredSize when explicitly set and with UI installed.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithSetAndUI(TestHarness h)
+ {
+ h.checkPoint("withSetAndUI");
+ TestComponent c = new TestComponent();
+ c.setPreferredSize(new Dimension(300, 300));
+ c.setUI(new TestUI());
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 300);
+ h.check(d.height, 300);
+ }
+
+ /**
+ * Tests the preferredSize when explicitly set and layout manager installed.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithSetAndLayout(TestHarness h)
+ {
+ h.checkPoint("withSetAndLayout");
+ TestComponent c = new TestComponent();
+ c.setPreferredSize(new Dimension(300, 300));
+ c.setLayout(new TestLayout());
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 300);
+ h.check(d.height, 300);
+ }
+
+ /**
+ * Tests the preferredSize when explicitly set, layout manager installed and
+ * UI installed.
+ *
+ * @param h the test harness to use
+ */
+ private void testWithAll(TestHarness h)
+ {
+ h.checkPoint("withAll");
+ TestComponent c = new TestComponent();
+ c.setUI(new TestUI());
+ c.setLayout(new TestLayout());
+ c.setPreferredSize(new Dimension(300, 300));
+ Dimension d = c.getPreferredSize();
+ h.check(d.width, 300);
+ h.check(d.height, 300);
+ }
+
+ /**
+ * Tests if the preferredSize is allowed to be smaller than the minimumSize.
+ *
+ * @param h the test harness to use
+ */
+ private void testSmallerThanMinSize(TestHarness h)
+ {
+ h.checkPoint("smallerThanMinSize");
+ TestComponent c = new TestComponent();
+ c.setMinimumSize(new Dimension(100, 100));
+ c.setPreferredSize(new Dimension(50, 50));
+ h.check(c.getPreferredSize(), new Dimension(50, 50));
+ }
+
+ /**
+ * Tests if it is possible to change to actual setting or preferredSize by
+ * changing the values of the returned Dimension object.
+ *
+ * @param h the test harness
+ */
+ private void testChangeValue(TestHarness h)
+ {
+ h.checkPoint("changeValue");
+ TestComponent c = new TestComponent();
+ c.setPreferredSize(new Dimension(100, 100));
+ Dimension d = c.getPreferredSize();
+ d.width = 200;
+ d.height = 200;
+ h.check(c.getPreferredSize(), new Dimension(100, 100));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getRegisteredKeyStrokes.java b/gnu/testlet/javax/swing/JComponent/getRegisteredKeyStrokes.java
new file mode 100644
index 00000000..a2ff066b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getRegisteredKeyStrokes.java
@@ -0,0 +1,59 @@
+/* getRegisteredKeyStrokes.java -- some checks for the getRegisteredKeyStrokes()
+ method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComponent;
+import javax.swing.KeyStroke;
+
+public class getRegisteredKeyStrokes implements Testlet
+{
+ static class MyJComponent extends JComponent
+ {
+ public MyJComponent()
+ {
+ super();
+ }
+ }
+ public void test(TestHarness harness)
+ {
+ JComponent c = new MyJComponent();
+ harness.check(c.getRegisteredKeyStrokes().length, 0);
+ KeyStroke ks0 = KeyStroke.getKeyStroke('a');
+ KeyStroke ks1 = KeyStroke.getKeyStroke('b');
+ KeyStroke ks2 = KeyStroke.getKeyStroke('c');;
+ c.getInputMap(JComponent.WHEN_FOCUSED).put(ks0, "A");
+ harness.check(c.getRegisteredKeyStrokes()[0], ks0);
+ c.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ks1, "B");
+ harness.check(c.getRegisteredKeyStrokes()[0], ks0);
+ harness.check(c.getRegisteredKeyStrokes()[1], ks1);
+ c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ks2, "C");
+ harness.check(c.getRegisteredKeyStrokes()[0], ks0);
+ harness.check(c.getRegisteredKeyStrokes()[1], ks1);
+ harness.check(c.getRegisteredKeyStrokes()[2], ks2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getVerifyInputWhenFocusTarget.java b/gnu/testlet/javax/swing/JComponent/getVerifyInputWhenFocusTarget.java
new file mode 100644
index 00000000..535aa63c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getVerifyInputWhenFocusTarget.java
@@ -0,0 +1,42 @@
+/* getVerifyInputWhenFocusTarget.java -- some checks for the
+ getVerifyInputWhenFocusTarget() method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class getVerifyInputWhenFocusTarget implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getVerifyInputWhenFocusTarget(), true);
+ c.setVerifyInputWhenFocusTarget(false);
+ harness.check(c.getVerifyInputWhenFocusTarget(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/getVetoableChangeListeners.java b/gnu/testlet/javax/swing/JComponent/getVetoableChangeListeners.java
new file mode 100644
index 00000000..5c3a8d2f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/getVetoableChangeListeners.java
@@ -0,0 +1,55 @@
+/* getVetoableChangeListeners.java -- some checks for the
+ getVetoableChangeListeners() method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class getVetoableChangeListeners
+ implements Testlet, VetoableChangeListener
+{
+ public void vetoableChange(PropertyChangeEvent e)
+ throws PropertyVetoException
+ {
+ }
+
+public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ c.addVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 1);
+ harness.check(c.getVetoableChangeListeners()[0], this);
+ c.removeVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/paint.java b/gnu/testlet/javax/swing/JComponent/paint.java
new file mode 100644
index 00000000..14029689
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/paint.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Graphics;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+
+/**
+ * Tests if the paint() method works correctly.
+ */
+public class paint implements Testlet
+{
+ StringBuffer callOrder = new StringBuffer();
+ class TestComponent extends JComponent
+ {
+ protected void paintComponent(Graphics g)
+ {
+ callOrder.append('1');
+ }
+ protected void paintBorder(Graphics g)
+ {
+ callOrder.append('2');
+ }
+ protected void paintChildren(Graphics g)
+ {
+ callOrder.append('3');
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFrame f = new JFrame();
+ JComponent c = new TestComponent();
+ f.setContentPane(c);
+ f.setSize(100, 100);
+ f.setVisible(true);
+ callOrder.delete(0, callOrder.length());
+ Graphics g = c.getGraphics();
+ c.paint(g);
+ // If the components receives multiple paint requests (like the system
+ // triggers a repaint), then we might get 123123123 or something. To avoid
+ // trouble like this, we check using startsWith().
+ harness.check(callOrder.toString().startsWith("123"));
+ f.dispose();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/putClientProperty.java b/gnu/testlet/javax/swing/JComponent/putClientProperty.java
new file mode 100644
index 00000000..32ac674d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/putClientProperty.java
@@ -0,0 +1,105 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+
+/**
+ * Some checks for the putClientProperty() method in the {@link JComponent}
+ * class.
+ */
+public class putClientProperty implements Testlet, PropertyChangeListener
+{
+
+ public String name = null;
+
+ public Object oldValue = null;
+
+ public Object newValue = null;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ name = e.getPropertyName();
+ oldValue = e.getOldValue();
+ newValue = e.getNewValue();
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComponent label = new JLabel("Test");
+ label.addPropertyChangeListener(this);
+
+ // add a new property
+ label.putClientProperty("Property1", Boolean.TRUE);
+ harness.check(label.getClientProperty("Property1"), Boolean.TRUE);
+ harness.check(name, "Property1");
+ harness.check(oldValue, null);
+ harness.check(newValue, Boolean.TRUE);
+
+ // Set testnull to null. No event is fired.
+ label.putClientProperty("testnull", null);
+ name = null;
+ oldValue = null;
+ newValue = null;
+ label.putClientProperty("testnull", null);
+ harness.check(name, null);
+ harness.check(oldValue, null);
+ harness.check(newValue, null);
+
+ // overwrite an existing property
+ label.putClientProperty("Property1", Boolean.FALSE);
+ harness.check(label.getClientProperty("Property1"), Boolean.FALSE);
+ harness.check(name, "Property1");
+ harness.check(oldValue, Boolean.TRUE);
+ harness.check(newValue, Boolean.FALSE);
+
+ // clear the property
+ label.putClientProperty("Property1", null);
+ harness.check(label.getClientProperty("Property1"), null);
+ harness.check(name, "Property1");
+ harness.check(oldValue, Boolean.FALSE);
+ harness.check(newValue, null);
+
+ // try a null key
+ boolean pass = false;
+ try
+ {
+ label.putClientProperty(null, "XYZ");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JComponent/registerKeyboardAction.java b/gnu/testlet/javax/swing/JComponent/registerKeyboardAction.java
new file mode 100644
index 00000000..114e1c61
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/registerKeyboardAction.java
@@ -0,0 +1,92 @@
+/* registerKeyboardAction.java -- some checks for the registerKeyboardAction()
+ methods in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JComponent;
+import javax.swing.KeyStroke;
+
+public class registerKeyboardAction implements Testlet
+{
+ static class MyJComponent extends JComponent
+ {
+ public MyJComponent()
+ {
+ super();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(ActionListener, String, KeyStroke, int)");
+ JComponent c = new MyJComponent();
+ ActionListener l1 = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // ignore
+ }
+ };
+ c.registerKeyboardAction(l1, "ABC", KeyStroke.getKeyStroke('a'),
+ JComponent.WHEN_FOCUSED);
+ harness.check(c.getInputMap(JComponent.WHEN_FOCUSED).keys()[0],
+ KeyStroke.getKeyStroke('a'));
+ Object link = c.getInputMap(JComponent.WHEN_FOCUSED).get(
+ KeyStroke.getKeyStroke('a'));
+ harness.check(c.getActionMap().get(link), link);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(ActionListener, KeyStroke, int)");
+ JComponent c = new MyJComponent();
+ ActionListener l1 = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ // ignore
+ }
+ };
+ c.registerKeyboardAction(l1, KeyStroke.getKeyStroke('a'),
+ JComponent.WHEN_FOCUSED);
+ harness.check(c.getInputMap(JComponent.WHEN_FOCUSED).keys()[0],
+ KeyStroke.getKeyStroke('a'));
+ Object link = c.getInputMap(JComponent.WHEN_FOCUSED).get(
+ KeyStroke.getKeyStroke('a'));
+ harness.check(c.getActionMap().get(link), link);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/removeVetoableChangeListener.java b/gnu/testlet/javax/swing/JComponent/removeVetoableChangeListener.java
new file mode 100644
index 00000000..bca50e68
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/removeVetoableChangeListener.java
@@ -0,0 +1,58 @@
+/* removeVetoableChangeListener.java -- some checks for the
+ removeVetoableChangeListener() method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class removeVetoableChangeListener
+ implements Testlet, VetoableChangeListener
+{
+ public void vetoableChange(PropertyChangeEvent e)
+ throws PropertyVetoException
+ {
+ }
+
+public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ c.addVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 1);
+ c.removeVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ c.removeVetoableChangeListener(this);
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ c.removeVetoableChangeListener(null);
+ harness.check(c.getVetoableChangeListeners().length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setAlignmentX.java b/gnu/testlet/javax/swing/JComponent/setAlignmentX.java
new file mode 100644
index 00000000..8c7740f2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setAlignmentX.java
@@ -0,0 +1,99 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setAlignmentX works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setAlignmentX implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setAlignmentX triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to 0.0, so that we know the state.
+ c.setAlignmentX(0.0F);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setAlignmentX(0.5F);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setAlignmentX(0.5F);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setAlignmentX(1.0F);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setAlignmentX(1.0F);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setAlignmentX triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to 0.0, so that we know the state.
+ c.setAlignmentX(0.0F);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setAlignmentX(0.5F);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setAlignmentX(0.5F);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setAlignmentX(1.0F);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setAlignmentX(1.0F);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setAlignmentY.java b/gnu/testlet/javax/swing/JComponent/setAlignmentY.java
new file mode 100644
index 00000000..74aba7fb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setAlignmentY.java
@@ -0,0 +1,99 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setAlignmentY works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setAlignmentY implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setAlignmentY triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to 0.0, so that we know the state.
+ c.setAlignmentY(0.0F);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setAlignmentY(0.5F);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setAlignmentY(0.5F);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setAlignmentY(1.0F);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setAlignmentY(1.0F);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setAlignmentY triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to 0.0, so that we know the state.
+ c.setAlignmentY(0.0F);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setAlignmentY(0.5F);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setAlignmentY(0.5F);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setAlignmentY(1.0F);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setAlignmentY(1.0F);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setBackground.java b/gnu/testlet/javax/swing/JComponent/setBackground.java
new file mode 100644
index 00000000..f8c152d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setBackground.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import java.awt.Color;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setBackground works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setBackground implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setBackground triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to white, so that we know the state.
+ c.setBackground(Color.WHITE);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setBackground(Color.BLACK);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setBackground(Color.BLACK);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setBackground(Color.WHITE);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setBackground(Color.WHITE);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setBackground triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.setBounds(10, 20, 30, 40);
+ // Set to white, so that we know the state.
+ c.setBackground(Color.WHITE);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setBackground(Color.BLACK);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setBackground(Color.BLACK);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setBackground(Color.WHITE);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setBackground(Color.WHITE);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setBorder.java b/gnu/testlet/javax/swing/JComponent/setBorder.java
new file mode 100644
index 00000000..95b847ef
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setBorder.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import javax.swing.border.Border;
+import javax.swing.border.EtchedBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setBorder works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setBorder implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setBorder triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ Border b1 = new EtchedBorder();
+ Border b2 = new EtchedBorder();
+ TestComponent c = new TestComponent();
+ // Set to b1, so that we know the state.
+ c.setBorder(b1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setBorder(b2);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setBorder(b2);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setBorder(b1);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setBorder(b1);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setBorder triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ Border b1 = new EtchedBorder();
+ Border b2 = new EtchedBorder();
+ TestComponent c = new TestComponent();
+ c.setBounds(10, 20, 30, 40);
+ // Set to b1, so that we know the state.
+ c.setBorder(b1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setBorder(b2);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setBorder(b2);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setBorder(b1);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setBorder(b1);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setComponentPopupMenu.java b/gnu/testlet/javax/swing/JComponent/setComponentPopupMenu.java
new file mode 100644
index 00000000..2cdd2f0f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setComponentPopupMenu.java
@@ -0,0 +1,68 @@
+/* setComponentPopupMenu.java -- some checks for the setComponentPopupMenu()
+ method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JPopupMenu;
+
+public class setComponentPopupMenu implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ JPopupMenu p = new JPopupMenu();
+ harness.check(c.getComponentPopupMenu(), null);
+ c.addPropertyChangeListener(this);
+ c.setComponentPopupMenu(p);
+ harness.check(c.getComponentPopupMenu(), p);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), c);
+ harness.check(e.getPropertyName(), "componentPopupMenu");
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), p);
+
+ // same value should generate no event
+ events.clear();
+ c.setComponentPopupMenu(p);
+ harness.check(events.size(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setDefaultLocale.java b/gnu/testlet/javax/swing/JComponent/setDefaultLocale.java
new file mode 100644
index 00000000..9c5a44ed
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setDefaultLocale.java
@@ -0,0 +1,45 @@
+/* setDefaultLocale.java -- some checks for the setDefaultLocale() method
+ in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.JComponent;
+
+public class setDefaultLocale implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ Locale saved = JComponent.getDefaultLocale();
+ JComponent.setDefaultLocale(Locale.CHINA);
+ harness.check(JComponent.getDefaultLocale(), Locale.CHINA);
+ JComponent.setDefaultLocale(null);
+ harness.check(JComponent.getDefaultLocale(), Locale.getDefault());
+ JComponent.setDefaultLocale(saved);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setEnabled.java b/gnu/testlet/javax/swing/JComponent/setEnabled.java
new file mode 100644
index 00000000..712fa3e1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setEnabled.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setEnabled works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setEnabled implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setEnabled triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.setBounds(10, 20, 30, 40);
+ // Set to false, so that we know the state.
+ c.setEnabled(false);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setEnabled(true);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setEnabled(true);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setEnabled(false);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setEnabled(false);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setEnabled triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.setBounds(10, 20, 30, 40);
+ // Set to false, so that we know the state.
+ c.setEnabled(false);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setEnabled(true);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setEnabled(true);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setEnabled(false);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setEnabled(false);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setFont.java b/gnu/testlet/javax/swing/JComponent/setFont.java
new file mode 100644
index 00000000..1676c838
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setFont.java
@@ -0,0 +1,110 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import java.awt.Color;
+import java.awt.Font;
+
+import javax.swing.BorderFactory;
+import javax.swing.border.Border;
+import javax.swing.border.EtchedBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setFont works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setFont implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setFont triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ Font f1 = new Font("Dialog", Font.PLAIN, 12);
+ Font f2 = new Font("Dialog", Font.PLAIN, 14);
+ TestComponent c = new TestComponent();
+ // Set to f1, so that we know the state.
+ c.setFont(f1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setFont(f2);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setFont(f2);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setFont(f1);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setFont(f1);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setFont triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ Font f1 = new Font("Dialog", Font.PLAIN, 12);
+ Font f2 = new Font("Dialog", Font.PLAIN, 14);
+ TestComponent c = new TestComponent();
+ // Set to f1, so that we know the state.
+ c.setFont(f1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setFont(f2);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setFont(f2);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setFont(f1);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setFont(f1);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setForeground.java b/gnu/testlet/javax/swing/JComponent/setForeground.java
new file mode 100644
index 00000000..d17945f6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setForeground.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import java.awt.Color;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setForeground works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setForeground implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setForeground triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to white, so that we know the state.
+ c.setForeground(Color.WHITE);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setForeground(Color.BLACK);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setForeground(Color.BLACK);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setForeground(Color.WHITE);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setForeground(Color.WHITE);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setForeground triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to white, so that we know the state.
+ c.setForeground(Color.WHITE);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setForeground(Color.BLACK);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setForeground(Color.BLACK);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setForeground(Color.WHITE);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setForeground(Color.WHITE);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setInheritsPopupMenu.java b/gnu/testlet/javax/swing/JComponent/setInheritsPopupMenu.java
new file mode 100644
index 00000000..666cc184
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setInheritsPopupMenu.java
@@ -0,0 +1,80 @@
+/* setInheritsPopupMenu.java -- some checks for the setInheritsPopupMenu()
+ method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+
+public class setInheritsPopupMenu implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getInheritsPopupMenu(), false);
+ c.addPropertyChangeListener(this);
+ c.setInheritsPopupMenu(true);
+ harness.check(c.getInheritsPopupMenu(), true);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), c);
+ harness.check(e.getPropertyName(), "inheritsPopupMenu");
+ harness.check(e.getOldValue(), Boolean.FALSE);
+ harness.check(e.getNewValue(), Boolean.TRUE);
+
+ // same value should generate no event
+ events.clear();
+ c.setInheritsPopupMenu(true);
+ harness.check(events.size(), 0);
+
+ // try with a JLabel
+ c = new JLabel("XYZ");
+ harness.check(c.getInheritsPopupMenu(), true);
+ c.addPropertyChangeListener(this);
+ c.setInheritsPopupMenu(false);
+ harness.check(c.getInheritsPopupMenu(), false);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), c);
+ harness.check(e.getPropertyName(), "inheritsPopupMenu");
+ harness.check(e.getOldValue(), Boolean.TRUE);
+ harness.check(e.getNewValue(), Boolean.FALSE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setMaximumSize.java b/gnu/testlet/javax/swing/JComponent/setMaximumSize.java
new file mode 100644
index 00000000..defabd52
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setMaximumSize.java
@@ -0,0 +1,151 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+/**
+ * Tests if setMaximumSize works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setMaximumSize implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent event;
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testPropertyChangeEvent(harness);
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Some general checks.
+ *
+ * @param harness the test harness.
+ */
+ private void testGeneral(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ harness.check(c.getMaximumSize(), new Dimension(32767, 32767));
+ Dimension d = new Dimension(123, 456);
+ c.setMaximumSize(d);
+ harness.check(c.getMaximumSize(), d);
+ harness.check(c.getMaximumSize() != d);
+ c.setMaximumSize(null); // restores the default
+ harness.check(c.getMaximumSize(), new Dimension(32767, 32767));
+ }
+
+ private void testPropertyChangeEvent(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ c.addPropertyChangeListener(this);
+ c.setMaximumSize(new Dimension(1, 2));
+ harness.check(this.event.getPropertyName(), "maximumSize");
+ harness.check(this.event.getOldValue(), null);
+ harness.check(this.event.getNewValue(), new Dimension(1, 2));
+ this.event = null;
+ c.setMaximumSize(null);
+ harness.check(this.event.getOldValue(), new Dimension(1, 2));
+ harness.check(this.event.getNewValue(), null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ /**
+ * Tests if setMaximumSize triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to s1, so that we know the state.
+ c.setMaximumSize(s1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setMaximumSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setMaximumSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setMaximumSize(s1);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setMaximumSize(s1);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setMaximumSize triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to false, so that we know the state.
+ c.setMaximumSize(s1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setMaximumSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setMaximumSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setMaximumSize(s1);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setMaximumSize(s1);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setMinimumSize.java b/gnu/testlet/javax/swing/JComponent/setMinimumSize.java
new file mode 100644
index 00000000..2044169b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setMinimumSize.java
@@ -0,0 +1,159 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+/**
+ * Tests if setMinimumSize works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setMinimumSize implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ this.event = event;
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testPropertyChangeEvent(harness);
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Some general checks.
+ *
+ * @param harness the test harness.
+ */
+ private void testGeneral(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ harness.check(c.getMinimumSize(), new Dimension(10, 10));
+ Dimension d = new Dimension(123, 456);
+ c.setMinimumSize(d);
+ harness.check(c.getMinimumSize(), d);
+ harness.check(c.getMinimumSize() != d);
+ c.setMinimumSize(null); // restores the default
+ harness.check(c.getMinimumSize(), new Dimension(10, 10));
+ }
+
+ private void testPropertyChangeEvent(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ c.addPropertyChangeListener(this);
+ c.setMinimumSize(new Dimension(1, 2));
+ harness.check(this.event.getPropertyName(), "minimumSize");
+ harness.check(this.event.getOldValue(), null);
+ harness.check(this.event.getNewValue(), new Dimension(1, 2));
+ this.event = null;
+ c.setMinimumSize(null);
+ harness.check(this.event.getOldValue(), new Dimension(1, 2));
+ harness.check(this.event.getNewValue(), null);
+ this.event = null;
+ c.setMinimumSize(null);
+ harness.check(this.event.getOldValue(), null);
+ harness.check(this.event.getNewValue(), null);
+ c.setMinimumSize(new Dimension(12, 34));
+ this.event = null;
+ c.setMinimumSize(new Dimension(12, 34));
+ harness.check(this.event, null);
+ }
+
+ /**
+ * Tests if setMinimumSize triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to s1, so that we know the state.
+ c.setMinimumSize(s1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setMinimumSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setMinimumSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setMinimumSize(s1);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setMinimumSize(s1);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setMinimumSize triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to false, so that we know the state.
+ c.setMinimumSize(s1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setMinimumSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setMinimumSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setMinimumSize(s1);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setMinimumSize(s1);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setOpaque.java b/gnu/testlet/javax/swing/JComponent/setOpaque.java
new file mode 100644
index 00000000..afbab874
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setOpaque.java
@@ -0,0 +1,100 @@
+//Tags: JDK1.2
+//Uses: TestComponent
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+* Tests if setOpaque works correctly.
+*
+* @author Roman Kennke (kennke@aicas.com)
+*/
+public class setOpaque implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setOpaque triggers a repaint. setOpaque should trigger a
+ * repaint() call whenever the actual value of the property changes.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to false, so that we know the state.
+ c.setOpaque(false);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setOpaque(true);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setOpaque(true);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setOpaque(false);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setOpaque(false);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setOpaque triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to false, so that we know the state.
+ c.setOpaque(false);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setOpaque(true);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setOpaque(true);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setOpaque(false);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setOpaque(false);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setPreferredSize.java b/gnu/testlet/javax/swing/JComponent/setPreferredSize.java
new file mode 100644
index 00000000..bdd06c4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setPreferredSize.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.2
+// Uses: TestComponent
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JComponent;
+
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if setPreferredSize works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setPreferredSize implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ this.event = event;
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testPropertyChangeEvent(harness);
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Some general checks.
+ *
+ * @param harness the test harness.
+ */
+ private void testGeneral(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ harness.check(c.getPreferredSize(), new Dimension(10, 10));
+ Dimension d = new Dimension(123, 456);
+ c.setPreferredSize(d);
+ harness.check(c.getPreferredSize(), d);
+ harness.check(c.getPreferredSize() != d);
+ c.setPreferredSize(null); // restores the default
+ harness.check(c.getPreferredSize(), new Dimension(10, 10));
+ }
+
+ private void testPropertyChangeEvent(TestHarness harness)
+ {
+ JComponent c = new JPanel();
+ c.addPropertyChangeListener(this);
+ c.setPreferredSize(new Dimension(1, 2));
+ harness.check(this.event.getPropertyName(), "preferredSize");
+ harness.check(this.event.getOldValue(), null);
+ harness.check(this.event.getNewValue(), new Dimension(1, 2));
+ this.event = null;
+ c.setPreferredSize(null);
+ harness.check(this.event.getOldValue(), new Dimension(1, 2));
+ harness.check(this.event.getNewValue(), null);
+ this.event = null;
+ c.setPreferredSize(null);
+ harness.check(this.event.getOldValue(), null);
+ harness.check(this.event.getNewValue(), null);
+ c.setPreferredSize(new Dimension(12, 34));
+ this.event = null;
+ c.setPreferredSize(new Dimension(12, 34));
+ harness.check(this.event, null);
+ }
+ /**
+ * Tests if setPreferredSize triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to s1, so that we know the state.
+ c.setPreferredSize(s1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setPreferredSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setPreferredSize(s2);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setPreferredSize(s1);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setPreferredSize(s1);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setPreferredSize triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ Dimension s1 = new Dimension(100, 100);
+ Dimension s2 = new Dimension(200, 200);
+ TestComponent c = new TestComponent();
+ // Set to s1, so that we know the state.
+ c.setPreferredSize(s1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setPreferredSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setPreferredSize(s2);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setPreferredSize(s1);
+ harness.check(c.revalidateCalled, false);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setPreferredSize(s1);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setUI.java b/gnu/testlet/javax/swing/JComponent/setUI.java
new file mode 100644
index 00000000..69247164
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setUI.java
@@ -0,0 +1,106 @@
+//Tags: JDK1.2
+//Uses: TestComponent
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JComponent;
+
+import javax.swing.plaf.ComponentUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+* Tests if setUI works correctly.
+*
+* @author Roman Kennke (kennke@aicas.com)
+*/
+public class setUI implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setUI triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ ComponentUI u1 = new ComponentUI(){};
+ ComponentUI u2 = new ComponentUI(){};
+ c.setBounds(10, 20, 30, 40);
+ // Set to u1, so that we know the state.
+ c.setUI(u1);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setUI(u2);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setUI(u2);
+ harness.check(c.repaintCalled, true);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setUI(u1);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setUI(u1);
+ harness.check(c.repaintCalled, true);
+ }
+
+ /**
+ * Tests if setUI triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ ComponentUI u1 = new ComponentUI(){};
+ ComponentUI u2 = new ComponentUI(){};
+ // Set to u1, so that we know the state.
+ c.setUI(u1);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setUI(u2);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setUI(u2);
+ harness.check(c.revalidateCalled, true);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setUI(u1);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setUI(u1);
+ harness.check(c.revalidateCalled, true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setVerifyInputWhenFocusTarget.java b/gnu/testlet/javax/swing/JComponent/setVerifyInputWhenFocusTarget.java
new file mode 100644
index 00000000..0d213504
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setVerifyInputWhenFocusTarget.java
@@ -0,0 +1,67 @@
+/* setVerifyInputWhenFocusTarget.java -- some checks for the
+ setVerifyInputWhenFocusTarget() method in the JComponent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+
+public class setVerifyInputWhenFocusTarget
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JComponent c = new JButton("ABC");
+ harness.check(c.getVerifyInputWhenFocusTarget(), true);
+ c.addPropertyChangeListener(this);
+ c.setVerifyInputWhenFocusTarget(false);
+ harness.check(c.getVerifyInputWhenFocusTarget(), false);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), c);
+ harness.check(e0.getPropertyName(), "verifyInputWhenFocusTarget");
+ harness.check(e0.getOldValue(), Boolean.TRUE);
+ harness.check(e0.getNewValue(), Boolean.FALSE);
+
+ // setting the same value generates no event
+ events.clear();
+ c.setVerifyInputWhenFocusTarget(false);
+ harness.check(events.size(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JComponent/setVisible.java b/gnu/testlet/javax/swing/JComponent/setVisible.java
new file mode 100644
index 00000000..a4d540ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/JComponent/setVisible.java
@@ -0,0 +1,138 @@
+//Tags: JDK1.2
+//Uses: TestComponent
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JComponent;
+
+import javax.swing.JFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+* Tests if setVisible works correctly.
+*
+* @author Roman Kennke (kennke@aicas.com)
+*/
+public class setVisible implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRepaintNotShowing(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setVisible triggers a repaint.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ JFrame f = new JFrame();
+ f.getContentPane().add(c);
+ f.setSize(200, 200);
+ f.setVisible(true);
+ c.setBounds(10, 20, 30, 40);
+ // Set to false, so that we know the state.
+ c.setVisible(false);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setVisible(true);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setVisible(true);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setVisible(false);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setVisible(false);
+ harness.check(c.repaintCalled, false);
+ // clean up the frame from desktop
+ f.dispose();
+ }
+
+ /**
+ * Tests if setVisible triggers a repaint when the component is not showing.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaintNotShowing(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ // Set to false, so that we know the state.
+ c.setVisible(false);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setVisible(true);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setVisible(true);
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setVisible(false);
+ harness.check(c.repaintCalled, false);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setVisible(false);
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setVisible triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestComponent c = new TestComponent();
+ c.setBounds(10, 20, 30, 40);
+ // Set to false, so that we know the state.
+ c.setVisible(false);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setVisible(true);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setVisible(true);
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setVisible(false);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setVisible(false);
+ harness.check(c.revalidateCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JDesktopPane/CVS/Entries b/gnu/testlet/javax/swing/JDesktopPane/CVS/Entries
new file mode 100644
index 00000000..48895134
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDesktopPane/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Tue Jan 31 11:52:15 2006//
+D
diff --git a/gnu/testlet/javax/swing/JDesktopPane/CVS/Repository b/gnu/testlet/javax/swing/JDesktopPane/CVS/Repository
new file mode 100644
index 00000000..32026a4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDesktopPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JDesktopPane
diff --git a/gnu/testlet/javax/swing/JDesktopPane/CVS/Root b/gnu/testlet/javax/swing/JDesktopPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDesktopPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JDesktopPane/constructor.java b/gnu/testlet/javax/swing/JDesktopPane/constructor.java
new file mode 100644
index 00000000..5b6f0a0e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDesktopPane/constructor.java
@@ -0,0 +1,52 @@
+/* constructor.java -- Tests the JDesktopPane constructor
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JDesktopPane;
+
+import javax.swing.JDesktopPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the JDesktopPane constructor initializes the desktop pane
+ * correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * The entry point in this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ JDesktopPane p = new JDesktopPane();
+ harness.check(p.isOpaque(), true);
+ harness.check(p.getLayout(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JDialog/CVS/Entries b/gnu/testlet/javax/swing/JDialog/CVS/Entries
new file mode 100644
index 00000000..38493b1b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDialog/CVS/Entries
@@ -0,0 +1,3 @@
+/isRootPaneCheckingEnabled.java/1.1/Mon Nov 7 20:55:43 2005//
+/setDefaultCloseOperation.java/1.1/Mon Jun 20 21:30:59 2005//
+D
diff --git a/gnu/testlet/javax/swing/JDialog/CVS/Repository b/gnu/testlet/javax/swing/JDialog/CVS/Repository
new file mode 100644
index 00000000..7f862331
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDialog/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JDialog
diff --git a/gnu/testlet/javax/swing/JDialog/CVS/Root b/gnu/testlet/javax/swing/JDialog/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDialog/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JDialog/isRootPaneCheckingEnabled.java b/gnu/testlet/javax/swing/JDialog/isRootPaneCheckingEnabled.java
new file mode 100644
index 00000000..a25fff16
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDialog/isRootPaneCheckingEnabled.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2004 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JDialog;
+
+import java.awt.Component;
+
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isRootPaneCheckingEnabled implements Testlet
+{
+
+ /**
+ * Overrides some protected methods to make them public for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestDialog extends JDialog
+ {
+ public boolean isRootPaneCheckingEnabled()
+ {
+ return super.isRootPaneCheckingEnabled();
+ }
+ public void setRootPaneCheckingEnabled(boolean b)
+ {
+ super.setRootPaneCheckingEnabled(b);
+ }
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRootPaneCheckingEnabled(harness);
+ testRootPaneCheckingDisabled(harness);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==true. Adds to the frame
+ * should go to the contentPane.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingEnabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingEnabled");
+ TestDialog f = new TestDialog();
+ f.setRootPaneCheckingEnabled(true);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now still has 1 child, the rootPane.
+ harness.check(children.length, 1);
+ harness.check(children[0] instanceof JRootPane);
+ // Instead, the add has gone to the contentPane which now also has 1 child,
+ // the label.
+ Component[] content = f.getContentPane().getComponents();
+ harness.check(content.length, 1);
+ harness.check(content[0], c);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==false. Adds to the frame
+ * should go directly to the frame.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingDisabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingDisabled");
+ TestDialog f = new TestDialog();
+ f.setRootPaneCheckingEnabled(false);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now has 2 children, the rootPane and the label.
+ harness.check(children.length, 2);
+ harness.check(children[0] instanceof JRootPane);
+ harness.check(children[1], c);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JDialog/setDefaultCloseOperation.java b/gnu/testlet/javax/swing/JDialog/setDefaultCloseOperation.java
new file mode 100644
index 00000000..e841fd12
--- /dev/null
+++ b/gnu/testlet/javax/swing/JDialog/setDefaultCloseOperation.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.2 GUI
+
+//Copyright (C) 2005 Robert Schuster <thebohemian@gmx.net>
+
+//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.javax.swing.JDialog;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JDialog;
+
+/**
+ * <p>This tests whether setDefaultCloseOperation() accepts all
+ * kinds of values whether they are senseful or not.</p>
+ *
+ * <p>This triggered GNU Classpath bug #12205.</p>
+ *
+ * <p>TODO: One could make a graphical test for this. For invalid
+ * values the behavior should be like DO_NOTHING_ON_CLOSE</p>
+ */
+public class setDefaultCloseOperation implements Testlet {
+
+ public void test(TestHarness harness) {
+ JDialog dialog = new JDialog();
+
+ harness.checkPoint("default value");
+ harness.check(dialog.getDefaultCloseOperation(), JDialog.HIDE_ON_CLOSE);
+
+ harness.checkPoint("valid values");
+
+ dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+ harness.check(dialog.getDefaultCloseOperation(),
+ JDialog.DISPOSE_ON_CLOSE);
+
+ dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
+ harness.check(dialog.getDefaultCloseOperation(),
+ JDialog.DO_NOTHING_ON_CLOSE);
+
+ dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
+ harness.check(dialog.getDefaultCloseOperation(), JDialog.HIDE_ON_CLOSE);
+
+ harness.checkPoint("invalid values");
+
+ dialog.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
+ harness.check(dialog.getDefaultCloseOperation(), JDialog.EXIT_ON_CLOSE);
+
+ // meaningless number
+ final int SOME_RANDOM = 434323423;
+
+ dialog.setDefaultCloseOperation(SOME_RANDOM);
+ harness.check(dialog.getDefaultCloseOperation(), SOME_RANDOM);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JEditorPane/CVS/Entries b/gnu/testlet/javax/swing/JEditorPane/CVS/Entries
new file mode 100644
index 00000000..b26ee2c3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/CVS/Entries
@@ -0,0 +1,6 @@
+/ConstructorsAndTypes.java/1.1/Thu Dec 8 20:29:01 2005//
+/ContentType.java/1.1/Thu Dec 8 19:53:56 2005//
+/ViewType.java/1.1/Thu Nov 17 18:58:19 2005//
+/getScrollableTracks.java/1.2/Tue Sep 27 20:05:58 2005//
+/setText.java/1.1/Sat Mar 4 09:47:34 2006//
+D
diff --git a/gnu/testlet/javax/swing/JEditorPane/CVS/Repository b/gnu/testlet/javax/swing/JEditorPane/CVS/Repository
new file mode 100644
index 00000000..7cc46fab
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JEditorPane
diff --git a/gnu/testlet/javax/swing/JEditorPane/CVS/Root b/gnu/testlet/javax/swing/JEditorPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JEditorPane/ConstructorsAndTypes.java b/gnu/testlet/javax/swing/JEditorPane/ConstructorsAndTypes.java
new file mode 100644
index 00000000..9fdf1b2d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/ConstructorsAndTypes.java
@@ -0,0 +1,63 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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, Inc., 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JEditorPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JEditorPane;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.rtf.RTFEditorKit;
+
+/**
+ * Tests whether a newly created JEditorPane has the proper EditorKits
+ * set up for different content types.
+ */
+public class ConstructorsAndTypes implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JEditorPane pane = new JEditorPane();
+ harness.check
+ (pane.getEditorKit().getClass().getName(),
+ "javax.swing.JEditorPane$PlainEditorKit");
+
+ try
+ {
+ pane = new JEditorPane("http://www.gnu.org");
+ harness.check
+ (pane.getEditorKit().getClass(), HTMLEditorKit.class);
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+
+ pane = new JEditorPane ("text/rtf", "hello");
+ harness.check
+ (pane.getEditorKit().getClass(), RTFEditorKit.class);
+
+ pane = new JEditorPane ("application/rtf", "hello");
+ harness.check
+ (pane.getEditorKit().getClass(), RTFEditorKit.class);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JEditorPane/ContentType.java b/gnu/testlet/javax/swing/JEditorPane/ContentType.java
new file mode 100644
index 00000000..f0d594ce
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/ContentType.java
@@ -0,0 +1,92 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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, Inc., 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JEditorPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JEditorPane;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.rtf.RTFEditorKit;
+
+/**
+ * Tests whether a newly created JEditorPane has the proper EditorKits
+ * set up for different content types.
+ */
+public class ContentType implements Testlet {
+
+ public void test(TestHarness harness) {
+ JEditorPane pane = new JEditorPane();
+ harness.checkPoint ("Default EditorKits for content types");
+ harness.check
+ (pane.getEditorKitForContentType
+ ("text/plain").getClass().getName(),
+ "javax.swing.JEditorPane$PlainEditorKit");
+ harness.check
+ (JEditorPane.getEditorKitClassNameForContentType("text/plain"),
+ "javax.swing.JEditorPane$PlainEditorKit");
+
+ harness.check
+ (pane.getEditorKitForContentType
+ ("text/html").getClass(), HTMLEditorKit.class);
+ harness.check
+ (pane.getEditorKitForContentType
+ ("text/rtf").getClass(), RTFEditorKit.class);
+ harness.check
+ (pane.getEditorKitForContentType
+ ("application/rtf").getClass(), RTFEditorKit.class);
+
+
+ harness.checkPoint ("Registering an EditorKit for a content type");
+ harness.check
+ (pane.getEditorKitForContentType
+ ("foobar").getClass().getName(),
+ "javax.swing.JEditorPane$PlainEditorKit");
+ harness.check (JEditorPane.getEditorKitClassNameForContentType("foobar") == null);
+ harness.check
+ (JEditorPane.createEditorKitForContentType("foobar") == null);
+ JEditorPane.registerEditorKitForContentType
+ ("foobar", "javax.swing.text.html.HTMLEditorKit");
+ harness.check
+ (pane.getEditorKitForContentType("foobar").getClass(),
+ HTMLEditorKit.class);
+ harness.check
+ (JEditorPane.createEditorKitForContentType("foobar").getClass(),
+ HTMLEditorKit.class);
+
+ // Explicitly setting the EditorKit takes precedence over the
+ // registered type
+ pane.setEditorKitForContentType ("foobar", new RTFEditorKit());
+ harness.check
+ (pane.getEditorKitForContentType("foobar").getClass(),
+ RTFEditorKit.class);
+
+ // We can set the EditorKit for content types previously unintroduced
+ pane.setEditorKitForContentType ("tony", new RTFEditorKit());
+ harness.check
+ (pane.getEditorKitForContentType("tony").getClass(),
+ RTFEditorKit.class);
+ // But this only affects the instance of JEditorPane, not the class itself
+ harness.check (JEditorPane.createEditorKitForContentType("tony") == null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JEditorPane/ViewType.java b/gnu/testlet/javax/swing/JEditorPane/ViewType.java
new file mode 100644
index 00000000..1659909c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/ViewType.java
@@ -0,0 +1,40 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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.javax.swing.JEditorPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JEditorPane;
+
+/**
+ * Tests whether a newly created JEditorPane has the proper View type.
+ */
+public class ViewType implements Testlet {
+
+ public void test(TestHarness harness) {
+ JEditorPane pane = new JEditorPane();
+ harness.check
+ (pane.getUI().getRootView(pane).getView(0).getClass() ==
+ javax.swing.text.WrappedPlainView.class);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JEditorPane/getScrollableTracks.java b/gnu/testlet/javax/swing/JEditorPane/getScrollableTracks.java
new file mode 100644
index 00000000..30c5e3c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/getScrollableTracks.java
@@ -0,0 +1,61 @@
+//Tags: JDK1.2 GUI
+
+//Copyright (C) 2005 Red Hat
+
+//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.javax.swing.JEditorPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JEditorPane;
+import javax.swing.JScrollPane;
+import javax.swing.JFrame;
+
+/**
+ * <p>This tests whether setDefaultCloseOperation() accepts all
+ * kinds of values whether they are senseful or not.</p>
+ *
+ * <p>This triggered GNU Classpath bug #12205.</p>
+ *
+ * <p>TODO: One could make a graphical test for this. For invalid
+ * values the behavior should be like DO_NOTHING_ON_CLOSE</p>
+ */
+public class getScrollableTracks implements Testlet {
+
+ public void test(TestHarness harness) {
+ JEditorPane pane = new JEditorPane();
+
+ harness.checkPoint("default value");
+ harness.check (pane.getScrollableTracksViewportWidth() == false);
+ harness.check (pane.getScrollableTracksViewportHeight() == false);
+
+ harness.checkPoint("after putting in scrollpane");
+ JScrollPane js = new JScrollPane(pane);
+ harness.check (pane.getScrollableTracksViewportWidth() == false);
+ harness.check (pane.getScrollableTracksViewportHeight() == false);
+
+ harness.checkPoint("after adding to a JFrame and packing");
+ JFrame jf = new JFrame();
+ jf.add(js);
+ jf.pack();
+ harness.check (pane.getScrollableTracksViewportWidth());
+ harness.check (pane.getScrollableTracksViewportHeight());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JEditorPane/setText.java b/gnu/testlet/javax/swing/JEditorPane/setText.java
new file mode 100644
index 00000000..916e174a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JEditorPane/setText.java
@@ -0,0 +1,49 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2006 Mark J. Wielaard (mark@klomp.org)
+
+//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, Inc., 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JEditorPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JEditorPane;
+
+public class setText implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JEditorPane pane = new JEditorPane();
+ harness.check(pane.getText(), "");
+ pane.setText(pane.getText());
+ harness.check(pane.getText(), "");
+ pane.setText("");
+ harness.check(pane.getText(), "");
+ pane.setText(null);
+ harness.check(pane.getText(), "");
+ pane.setText("GNU");
+ harness.check(pane.getText(), "GNU");
+ pane.setText(pane.getText());
+ harness.check(pane.getText(), "GNU");
+ pane.setText("");
+ harness.check(pane.getText(), "");
+ pane.setText(null);
+ harness.check(pane.getText(), "");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/CVS/Entries b/gnu/testlet/javax/swing/JFileChooser/CVS/Entries
new file mode 100644
index 00000000..2c5c4527
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/CVS/Entries
@@ -0,0 +1,40 @@
+/MyFileChooser.java/1.1/Wed Dec 7 20:16:19 2005//
+/MyFileFilter.java/1.1/Wed Oct 12 15:38:06 2005//
+/MyFileSystemView.java/1.1/Wed Oct 12 15:38:06 2005//
+/accept.java/1.1/Wed Oct 12 15:38:06 2005//
+/addChoosableFileFilter.java/1.1/Wed Oct 12 15:38:06 2005//
+/changeToParentDirectory.java/1.1/Fri Oct 28 14:35:58 2005//
+/constructors.java/1.1/Wed Oct 12 15:38:06 2005//
+/getAccessory.java/1.1/Wed Oct 12 15:38:06 2005//
+/getApproveButtonMnemonic.java/1.1/Wed Oct 12 15:38:06 2005//
+/getApproveButtonText.java/1.1/Wed Oct 12 15:38:06 2005//
+/getApproveButtonToolTipText.java/1.1/Wed Oct 12 15:38:06 2005//
+/getChoosableFileFilters.java/1.1/Wed Oct 12 15:38:06 2005//
+/getControlButtonsAreShown.java/1.1/Wed Oct 12 15:38:06 2005//
+/getDialogTitle.java/1.1/Wed Oct 12 15:38:06 2005//
+/getDialogType.java/1.1/Wed Oct 12 15:38:06 2005//
+/getFileFilter.java/1.1/Wed Oct 12 15:38:06 2005//
+/getFileSelectionMode.java/1.1/Wed Oct 12 15:38:06 2005//
+/getFileSystemView.java/1.1/Wed Oct 12 15:38:06 2005//
+/getFileView.java/1.1/Wed Oct 12 15:38:06 2005//
+/getSelectedFiles.java/1.1/Wed Oct 12 15:38:06 2005//
+/isAcceptAllFileFilterUsed.java/1.1/Wed Oct 12 15:38:06 2005//
+/isFileHidingEnabled.java/1.1/Wed Oct 12 15:38:06 2005//
+/removeChoosableFileFilter.java/1.1/Wed Oct 12 15:38:06 2005//
+/setAcceptAllFileFilterUsed.java/1.1/Wed Oct 12 15:38:06 2005//
+/setAccessory.java/1.1/Wed Oct 12 15:38:06 2005//
+/setApproveButtonMnemonic.java/1.1/Wed Oct 12 15:38:06 2005//
+/setApproveButtonText.java/1.1/Wed Oct 12 15:38:06 2005//
+/setApproveButtonToolTipText.java/1.1/Wed Oct 12 15:38:06 2005//
+/setControlButtonsAreShown.java/1.1/Wed Oct 12 15:38:06 2005//
+/setCurrentDirectory.java/1.1/Wed Oct 12 15:38:06 2005//
+/setDialogTitle.java/1.1/Wed Oct 12 15:38:06 2005//
+/setDialogType.java/1.1/Wed Oct 12 15:38:06 2005//
+/setFileFilter.java/1.1/Wed Oct 12 15:38:06 2005//
+/setFileHidingEnabled.java/1.1/Wed Oct 12 15:38:06 2005//
+/setFileSelectionMode.java/1.1/Wed Oct 12 15:38:06 2005//
+/setFileSystemView.java/1.1/Wed Oct 12 15:38:06 2005//
+/setFileView.java/1.1/Wed Oct 12 15:38:06 2005//
+/setSelectedFile.java/1.1/Wed Oct 12 15:38:06 2005//
+/setSelectedFiles.java/1.1/Wed Oct 12 15:38:06 2005//
+D
diff --git a/gnu/testlet/javax/swing/JFileChooser/CVS/Repository b/gnu/testlet/javax/swing/JFileChooser/CVS/Repository
new file mode 100644
index 00000000..2c7ed526
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JFileChooser
diff --git a/gnu/testlet/javax/swing/JFileChooser/CVS/Root b/gnu/testlet/javax/swing/JFileChooser/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JFileChooser/MyFileChooser.java b/gnu/testlet/javax/swing/JFileChooser/MyFileChooser.java
new file mode 100644
index 00000000..bdfd3607
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/MyFileChooser.java
@@ -0,0 +1,36 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.FileChooserUI;
+
+public class MyFileChooser extends JFileChooser
+{
+ public MyFileChooser()
+ {
+ }
+
+ public void setUI(FileChooserUI ui)
+ {
+ super.setUI(ui);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/MyFileFilter.java b/gnu/testlet/javax/swing/JFileChooser/MyFileFilter.java
new file mode 100644
index 00000000..4729c2c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/MyFileFilter.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileFilter;
+
+public class MyFileFilter extends FileFilter
+{
+ private boolean directories;
+
+ /**
+ * Creates a new filter for testing purposes.
+ *
+ * @param acceptDirectories if <code>true</code> accept directories
+ * only, otherwise accept non-directory files only.
+ */
+ public MyFileFilter(boolean acceptDirectories)
+ {
+ directories = acceptDirectories;
+ }
+
+ public boolean accept(File file)
+ {
+ if (file == null)
+ return false;
+ if (directories)
+ return file.isDirectory();
+ else
+ return !file.isDirectory();
+ }
+
+ public String getDescription()
+ {
+ return "Test filter";
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/MyFileSystemView.java b/gnu/testlet/javax/swing/JFileChooser/MyFileSystemView.java
new file mode 100644
index 00000000..034d8f42
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/MyFileSystemView.java
@@ -0,0 +1,20 @@
+/*
+ * Created on Oct 11, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package gnu.testlet.javax.swing.JFileChooser;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.swing.filechooser.FileSystemView;
+
+public class MyFileSystemView extends FileSystemView
+{
+ public File createNewFolder(File containingDir) throws IOException
+ {
+ return null;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/accept.java b/gnu/testlet/javax/swing/JFileChooser/accept.java
new file mode 100644
index 00000000..c5d9c762
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/accept.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the accept() method of the
+ * {@link JFileChooser} class.
+ */
+public class accept implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ File f = new File(System.getProperty("user.home"));
+ harness.check(fc.accept(f), true);
+ harness.check(fc.accept(null), true);
+
+ fc.setFileFilter(new MyFileFilter(true));
+ harness.check(fc.accept(f), true);
+
+ fc.setFileFilter(new MyFileFilter(false));
+ harness.check(fc.accept(f), false);
+
+ fc.setFileFilter(null);
+ harness.check(fc.accept(f), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/addChoosableFileFilter.java b/gnu/testlet/javax/swing/JFileChooser/addChoosableFileFilter.java
new file mode 100644
index 00000000..c76165ca
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/addChoosableFileFilter.java
@@ -0,0 +1,124 @@
+// Tags: JDK1.2
+// Uses: MyFileFilter
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the addChoosableFileFilter() method of the
+ * {@link JFileChooser} class.
+ */
+public class addChoosableFileFilter implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testNull(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+ JFileChooser fc = new JFileChooser();
+ fc.addPropertyChangeListener(this);
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 2);
+ harness.check(filters[0], fc.getAcceptAllFileFilter());
+ harness.check(filters[1], f1);
+ harness.check(events.size(), 2);
+
+ // adding the new filter should have generated two events, one for
+ // the addition of a choosable file filter, and one for making it the
+ // selected filter...
+ PropertyChangeEvent event1 = (PropertyChangeEvent) events.get(0);
+ harness.check(event1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] oldFilters = (FileFilter[]) event1.getOldValue();
+ harness.check(oldFilters.length, 1);
+ harness.check(oldFilters[0], fc.getAcceptAllFileFilter());
+ FileFilter[] newFilters = (FileFilter[]) event1.getNewValue();
+ harness.check(newFilters.length, 2);
+ harness.check(newFilters[0], fc.getAcceptAllFileFilter());
+ harness.check(newFilters[1], f1);
+ PropertyChangeEvent event2 = (PropertyChangeEvent) events.get(1);
+ harness.check(event2.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(event2.getOldValue(), fc.getAcceptAllFileFilter());
+ harness.check(event2.getNewValue(), f1);
+ events.clear();
+ }
+
+ /**
+ * In this test, a null filter is added.
+ *
+ * @param harness the test harness.
+ */
+ public void testNull(TestHarness harness)
+ {
+ harness.checkPoint("testNull()");
+ JFileChooser fc = new JFileChooser();
+ events.clear();
+ fc.addPropertyChangeListener(this);
+ fc.addChoosableFileFilter(null);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(filters[0], fc.getAcceptAllFileFilter());
+ harness.check(events.size(), 1);
+
+ // adding the new filter should have generated two events, one for
+ // the addition of a choosable file filter, and one for making it the
+ // selected filter...
+ PropertyChangeEvent event1 = (PropertyChangeEvent) events.get(0);
+ harness.check(event1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(event1.getOldValue(), fc.getAcceptAllFileFilter());
+ harness.check(event1.getNewValue(), null);
+ events.clear();
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/changeToParentDirectory.java b/gnu/testlet/javax/swing/JFileChooser/changeToParentDirectory.java
new file mode 100644
index 00000000..4aafa586
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/changeToParentDirectory.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * Some checks for the changeToParentDirectory() method of the
+ * {@link JFileChooser} class.
+ */
+public class changeToParentDirectory
+ implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // this test shows an unusual behaviour of this method - if the current
+ // directory is a root directory, changing to the parent directory
+ // makes the current directory the user's home directory...
+ JFileChooser fc = new JFileChooser();
+ FileSystemView fsv = fc.getFileSystemView();
+ File[] roots = fsv.getRoots();
+ File root = roots[0];
+ fc.setCurrentDirectory(root);
+ fc.addPropertyChangeListener(this);
+ fc.changeToParentDirectory();
+ harness.check(fc.getCurrentDirectory(),
+ new File(System.getProperty("user.home")));
+ harness.check(events.size(), 1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/constructors.java b/gnu/testlet/javax/swing/JFileChooser/constructors.java
new file mode 100644
index 00000000..b9dd0c89
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/constructors.java
@@ -0,0 +1,150 @@
+// Tags: JDK1.2
+// Uses: MyFileSystemView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * Some checks for the constructors of the {@link JFileChooser} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JFileChooser fc = new JFileChooser();
+ harness.check(fc.getCurrentDirectory(),
+ new File(System.getProperty("user.home")));
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(File)");
+ File f = new File(System.getProperty("user.home"));
+ JFileChooser fc = new JFileChooser(f);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+
+ // null is OK and defaults to home directory
+ fc = new JFileChooser((File) null);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(File, FileSystemView)");
+ FileSystemView fsv = new MyFileSystemView();
+ File f = new File(System.getProperty("user.home"));
+ JFileChooser fc = new JFileChooser(f, fsv);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), fsv);
+
+ // null file is OK and defaults to home directory
+ fc = new JFileChooser((File) null, fsv);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), fsv);
+
+ // null FileSystemView reverts to default
+ fc = new JFileChooser(f, null);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), FileSystemView.getFileSystemView());
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(FileSystemView)");
+ FileSystemView fsv = new MyFileSystemView();
+ File f = new File(System.getProperty("user.home"));
+ JFileChooser fc = new JFileChooser(fsv);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), fsv);
+
+ // null FileSystemView reverts to default
+ fc = new JFileChooser((FileSystemView) null);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), FileSystemView.getFileSystemView());
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ File f = new File(System.getProperty("user.home"));
+ JFileChooser fc = new JFileChooser(System.getProperty("user.home"));
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+
+ // null is OK and defaults to home directory
+ fc = new JFileChooser((String) null);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, FileSystemView)");
+ FileSystemView fsv = new MyFileSystemView();
+ File f = new File(System.getProperty("user.home"));
+ JFileChooser fc = new JFileChooser(System.getProperty("user.home"), fsv);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), fsv);
+
+ // null file is OK and defaults to home directory
+ fc = new JFileChooser((String) null, fsv);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), fsv);
+
+ // null FileSystemView reverts to default
+ fc = new JFileChooser(System.getProperty("user.home"), null);
+ harness.check(fc.getCurrentDirectory(), f);
+ harness.check(fc.getSelectedFile(), null);
+ harness.check(fc.getFileSystemView(), FileSystemView.getFileSystemView());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getAccessory.java b/gnu/testlet/javax/swing/JFileChooser/getAccessory.java
new file mode 100644
index 00000000..dec6c89a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getAccessory.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the getAccessory() method of the
+ * {@link JFileChooser} class.
+ */
+public class getAccessory implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getAccessory(), null);
+
+ JPanel acc1 = new JPanel();
+ jfc.setAccessory(acc1);
+ harness.check(jfc.getAccessory(), acc1);
+
+ jfc.setAccessory(null);
+ harness.check(jfc.getAccessory(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getApproveButtonMnemonic.java b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonMnemonic.java
new file mode 100644
index 00000000..1e1ba4de
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonMnemonic.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getApproveButtonMnemoic() method of the
+ * {@link JFileChooser} class.
+ */
+public class getApproveButtonMnemonic implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getApproveButtonMnemonic(), 0);
+
+ jfc.setApproveButtonMnemonic(79);
+ harness.check(jfc.getApproveButtonMnemonic(), 79);
+
+ jfc.setApproveButtonMnemonic(0);
+ harness.check(jfc.getApproveButtonMnemonic(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getApproveButtonText.java b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonText.java
new file mode 100644
index 00000000..e6a33689
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonText.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getApproveButtonText() method of the
+ * {@link JFileChooser} class.
+ */
+public class getApproveButtonText implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getApproveButtonText(), null);
+
+ jfc.setApproveButtonText("XYZ");
+ harness.check(jfc.getApproveButtonText(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getApproveButtonToolTipText.java b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonToolTipText.java
new file mode 100644
index 00000000..665233e3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getApproveButtonToolTipText.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getApproveButtonToolTipText() method of the
+ * {@link JFileChooser} class.
+ */
+public class getApproveButtonToolTipText implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getApproveButtonToolTipText(), null);
+
+ jfc.setApproveButtonToolTipText("XYZ");
+ harness.check(jfc.getApproveButtonToolTipText(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getChoosableFileFilters.java b/gnu/testlet/javax/swing/JFileChooser/getChoosableFileFilters.java
new file mode 100644
index 00000000..38e4354a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getChoosableFileFilters.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the getChoosableFileFilters() method of the
+ * {@link JFileChooser} class.
+ */
+public class getChoosableFileFilters implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ FileFilter[] ff1 = fc.getChoosableFileFilters();
+ FileFilter[] ff2 = fc.getChoosableFileFilters();
+ harness.check(ff1 != ff2);
+ harness.check(ff1[0], ff2[0]);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getControlButtonsAreShown.java b/gnu/testlet/javax/swing/JFileChooser/getControlButtonsAreShown.java
new file mode 100644
index 00000000..7945c44c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getControlButtonsAreShown.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getControlButtonsAreShown() method of the
+ * {@link JFileChooser} class.
+ */
+public class getControlButtonsAreShown implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getControlButtonsAreShown(), true);
+
+ jfc.setControlButtonsAreShown(false);
+ harness.check(jfc.getControlButtonsAreShown(), false);
+
+ jfc.setControlButtonsAreShown(true);
+ harness.check(jfc.getControlButtonsAreShown(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getDialogTitle.java b/gnu/testlet/javax/swing/JFileChooser/getDialogTitle.java
new file mode 100644
index 00000000..9f72756d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getDialogTitle.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getDialogTitle() method of the
+ * {@link JFileChooser} class.
+ */
+public class getDialogTitle implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getDialogTitle(), null);
+
+ jfc.setDialogTitle("XYZ");
+ harness.check(jfc.getDialogTitle(), "XYZ");
+
+ jfc.setDialogTitle(null);
+ harness.check(jfc.getDialogTitle(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getDialogType.java b/gnu/testlet/javax/swing/JFileChooser/getDialogType.java
new file mode 100644
index 00000000..847d5c21
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getDialogType.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getDialogType() method of the
+ * {@link JFileChooser} class.
+ */
+public class getDialogType implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getDialogType(), JFileChooser.OPEN_DIALOG);
+
+ jfc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(jfc.getDialogType(), JFileChooser.SAVE_DIALOG);
+
+ jfc.setDialogType(JFileChooser.CUSTOM_DIALOG);
+ harness.check(jfc.getDialogType(), JFileChooser.CUSTOM_DIALOG);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getFileFilter.java b/gnu/testlet/javax/swing/JFileChooser/getFileFilter.java
new file mode 100644
index 00000000..0d6b1011
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getFileFilter.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: MyFileFilter
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the getFileFilter() method of the
+ * {@link JFileChooser} class.
+ */
+public class getFileFilter implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ harness.check(fc.getFileFilter(), fc.getAcceptAllFileFilter());
+
+ FileFilter ff1 = new MyFileFilter(true);
+ fc.setFileFilter(ff1);
+ harness.check(fc.getFileFilter(), ff1);
+
+ fc.setFileFilter(null);
+ harness.check(fc.getFileFilter(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getFileSelectionMode.java b/gnu/testlet/javax/swing/JFileChooser/getFileSelectionMode.java
new file mode 100644
index 00000000..904c3640
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getFileSelectionMode.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getFileSelectionMode() method of the
+ * {@link JFileChooser} class.
+ */
+public class getFileSelectionMode implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ harness.check(fc.getFileSelectionMode(), JFileChooser.FILES_ONLY);
+
+ fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ harness.check(fc.getFileSelectionMode(), JFileChooser.DIRECTORIES_ONLY);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getFileSystemView.java b/gnu/testlet/javax/swing/JFileChooser/getFileSystemView.java
new file mode 100644
index 00000000..cfc36723
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getFileSystemView.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * Some checks for the getFileSystemView() method of the
+ * {@link JFileChooser} class.
+ */
+public class getFileSystemView implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getFileSystemView(), FileSystemView.getFileSystemView());
+
+ FileSystemView fsv1 = new MyFileSystemView();
+ jfc.setFileSystemView(fsv1);
+ harness.check(jfc.getFileSystemView(), fsv1);
+
+ jfc.setFileSystemView(null);
+ harness.check(jfc.getFileSystemView(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getFileView.java b/gnu/testlet/javax/swing/JFileChooser/getFileView.java
new file mode 100644
index 00000000..8e7941cb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getFileView.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the getFileView() method of the
+ * {@link JFileChooser} class.
+ */
+public class getFileView implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.getFileView(), null);
+
+ FileView fv1 = new FileView() {};
+ jfc.setFileView(fv1);
+ harness.check(jfc.getFileView(), fv1);
+ jfc.setFileView(null);
+ harness.check(jfc.getFileView(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/getSelectedFiles.java b/gnu/testlet/javax/swing/JFileChooser/getSelectedFiles.java
new file mode 100644
index 00000000..4555d76a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/getSelectedFiles.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the getSelectedFiles() method of the
+ * {@link JFileChooser} class.
+ */
+public class getSelectedFiles implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ File[] files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+
+ File f1 = new File("X");
+ files = new File[] { f1 };
+ fc.setSelectedFiles(files);
+ File[] ff = fc.getSelectedFiles();
+ harness.check(ff[0], f1);
+
+ // try null
+ fc.setSelectedFiles(null);
+ ff = fc.getSelectedFiles();
+ harness.check(ff.length, 0);
+
+ // try an empty array
+ fc.setSelectedFiles(new File[0]);
+ ff = fc.getSelectedFiles();
+ harness.check(ff.length, 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/isAcceptAllFileFilterUsed.java b/gnu/testlet/javax/swing/JFileChooser/isAcceptAllFileFilterUsed.java
new file mode 100644
index 00000000..0a9c63d4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/isAcceptAllFileFilterUsed.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the isAcceptAllFileFilterUsed() method of the
+ * {@link JFileChooser} class.
+ */
+public class isAcceptAllFileFilterUsed implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.isAcceptAllFileFilterUsed(), true);
+
+ jfc.setAcceptAllFileFilterUsed(false);
+ harness.check(jfc.isAcceptAllFileFilterUsed(), false);
+
+ jfc.setAcceptAllFileFilterUsed(true);
+ harness.check(jfc.isAcceptAllFileFilterUsed(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/isFileHidingEnabled.java b/gnu/testlet/javax/swing/JFileChooser/isFileHidingEnabled.java
new file mode 100644
index 00000000..81de35d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/isFileHidingEnabled.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the isFileHidingEnabled() method of the
+ * {@link JFileChooser} class.
+ */
+public class isFileHidingEnabled implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ harness.check(jfc.isFileHidingEnabled(), true);
+
+ jfc.setFileHidingEnabled(false);
+ harness.check(jfc.isFileHidingEnabled(), false);
+
+ jfc.setFileHidingEnabled(true);
+ harness.check(jfc.isFileHidingEnabled(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/removeChoosableFileFilter.java b/gnu/testlet/javax/swing/JFileChooser/removeChoosableFileFilter.java
new file mode 100644
index 00000000..a19894ae
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/removeChoosableFileFilter.java
@@ -0,0 +1,333 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.UIManager;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the removeChoosableFileFilter() method of the
+ * {@link JFileChooser} class.
+ */
+public class removeChoosableFileFilter implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ test7(harness);
+ test8(harness);
+ }
+
+ /**
+ * In this test, 'accept all' is the only filter in the list, and we try
+ * removing it.
+ *
+ * @param harness
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ fc.addPropertyChangeListener(this);
+ fc.removeChoosableFileFilter(acceptAllFilter);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), acceptAllFilter);
+ harness.check(e1.getNewValue(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e2.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e2.getNewValue();
+ harness.check(ff1.length, 1);
+ harness.check(ff2.length, 0);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is the selected filter, there is another
+ * item in the list, and we remove 'accept all'.
+ * @param harness
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ fc.setFileFilter(acceptAllFilter);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(acceptAllFilter);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), acceptAllFilter);
+ harness.check(e1.getNewValue(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e2.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e2.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), null);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is the selected filter, there is another
+ * item in the list, and we remove the other item.
+ *
+ * @param harness
+ */
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("test3");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ fc.setFileFilter(acceptAllFilter);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(f1);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e1.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e1.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), acceptAllFilter);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is in the list, there is another
+ * item selected, and we remove 'accept all'.
+ * @param harness
+ */
+ public void test4(TestHarness harness)
+ {
+ harness.checkPoint("test4");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(acceptAllFilter);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e1.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e1.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), f1);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is in the list, there is another
+ * item selected, and we remove the selected item.
+ * @param harness
+ */
+ public void test5(TestHarness harness)
+ {
+ harness.checkPoint("test5");
+ JFileChooser fc = new JFileChooser();
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(f1);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), f1);
+ harness.check(e1.getNewValue(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e2.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e2.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), null);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is not in use, there is only one item and we
+ * remove it.
+ *
+ * @param harness
+ */
+ public void test6(TestHarness harness)
+ {
+ harness.checkPoint("test6");
+ JFileChooser fc = new JFileChooser();
+ FileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ fc.setAcceptAllFileFilterUsed(false);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(f1);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), f1);
+ harness.check(e1.getNewValue(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e2.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e2.getNewValue();
+ harness.check(ff1.length, 1);
+ harness.check(ff2.length, 0);
+ harness.check(fc.getFileFilter(), null);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is not in use, there are two filters and we
+ * remove the selected filter.
+ *
+ * @param harness
+ */
+ public void test7(TestHarness harness)
+ {
+ harness.checkPoint("test7");
+ JFileChooser fc = new JFileChooser();
+ FileFilter f1 = new MyFileFilter(true);
+ FileFilter f2 = new MyFileFilter(false);
+ fc.addChoosableFileFilter(f1);
+ fc.addChoosableFileFilter(f2);
+ fc.setAcceptAllFileFilterUsed(false);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(f2);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), f2);
+ harness.check(e1.getNewValue(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e2.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e2.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), null);
+ events.clear();
+ }
+
+ /**
+ * In this test, 'accept all' is not in use, there are two filters and we
+ * remove the not-selected filter.
+ *
+ * @param harness
+ */
+ public void test8(TestHarness harness)
+ {
+ harness.checkPoint("test8");
+ JFileChooser fc = new JFileChooser();
+ FileFilter f1 = new MyFileFilter(true);
+ FileFilter f2 = new MyFileFilter(false);
+ fc.addChoosableFileFilter(f1);
+ fc.addChoosableFileFilter(f2);
+ fc.setAcceptAllFileFilterUsed(false);
+ fc.addPropertyChangeListener(this);
+ boolean removed = fc.removeChoosableFileFilter(f1);
+ harness.check(removed);
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] ff1 = (FileFilter[]) e1.getOldValue();
+ FileFilter[] ff2 = (FileFilter[]) e1.getNewValue();
+ harness.check(ff1.length, 2);
+ harness.check(ff2.length, 1);
+ harness.check(fc.getFileFilter(), f2);
+ events.clear();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setAcceptAllFileFilterUsed.java b/gnu/testlet/javax/swing/JFileChooser/setAcceptAllFileFilterUsed.java
new file mode 100644
index 00000000..18c0f4a3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setAcceptAllFileFilterUsed.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the setAcceptAllFileFilterUsed() method of the
+ * {@link JFileChooser} class.
+ */
+public class setAcceptAllFileFilterUsed implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ fc.addPropertyChangeListener(this);
+ harness.check(fc.isAcceptAllFileFilterUsed(), true);
+ MyFileFilter f1 = new MyFileFilter(true);
+ fc.addChoosableFileFilter(f1);
+ events.clear();
+
+ fc.setAcceptAllFileFilterUsed(false);
+ harness.check(fc.isAcceptAllFileFilterUsed(), false);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] oldFilters = (FileFilter[]) e1.getOldValue();
+ harness.check(oldFilters.length, 2);
+ harness.check(oldFilters[0], acceptAllFilter);
+ harness.check(oldFilters[1], f1);
+ FileFilter[] newFilters = (FileFilter[]) e1.getNewValue();
+ harness.check(newFilters.length, 1);
+ harness.check(newFilters[0], f1);
+
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY);
+
+ // also check if the 'accept all' filter is removed from the choosable
+ // filters list
+ FileFilter[] filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 1);
+ harness.check(filters[0], f1);
+ events.clear();
+
+ FileFilter ff = new MyFileFilter(false);
+ fc.addChoosableFileFilter(ff);
+ events.clear();
+ harness.check(fc.getFileFilter(), ff);
+ fc.setAcceptAllFileFilterUsed(true);
+ harness.check(fc.isAcceptAllFileFilterUsed(), true);
+ harness.check(fc.getFileFilter(), fc.getAcceptAllFileFilter());
+
+ // expect 3 events
+ harness.check(events.size(), 3);
+ e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+
+ e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+// harness.check(e1.getOldValue(), Boolean.FALSE);
+// harness.check(e1.getNewValue(), Boolean.TRUE);
+ PropertyChangeEvent e3 = (PropertyChangeEvent) events.get(2);
+ harness.check(e3.getPropertyName(),
+ JFileChooser.ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY);
+
+ filters = fc.getChoosableFileFilters();
+ harness.check(filters.length, 3);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setAccessory.java b/gnu/testlet/javax/swing/JFileChooser/setAccessory.java
new file mode 100644
index 00000000..2eaa3b5f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setAccessory.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+
+/**
+ * Some checks for the setAccessory() method of the
+ * {@link JFileChooser} class.
+ */
+public class setAccessory implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getAccessory(), null);
+
+ JPanel acc1 = new JPanel();
+ jfc.setAccessory(acc1);
+ harness.check(jfc.getAccessory(), acc1);
+ harness.check(event.getPropertyName(),
+ JFileChooser.ACCESSORY_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), acc1);
+
+ jfc.setAccessory(null);
+ harness.check(jfc.getAccessory(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.ACCESSORY_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), acc1);
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setApproveButtonMnemonic.java b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonMnemonic.java
new file mode 100644
index 00000000..041d8194
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonMnemonic.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setApproveButtonMnemoic() method of the
+ * {@link JFileChooser} class.
+ */
+public class setApproveButtonMnemonic implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getApproveButtonMnemonic(), 0);
+
+ jfc.setApproveButtonMnemonic(79);
+ harness.check(jfc.getApproveButtonMnemonic(), 79);
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), new Integer(0));
+ harness.check(event.getNewValue(), new Integer(79));
+
+ jfc.setApproveButtonMnemonic(0);
+ harness.check(jfc.getApproveButtonMnemonic(), 0);
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), new Integer(79));
+ harness.check(event.getNewValue(), new Integer(0));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setApproveButtonText.java b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonText.java
new file mode 100644
index 00000000..ae8a5882
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonText.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setApproveButtonText() method of the
+ * {@link JFileChooser} class.
+ */
+public class setApproveButtonText implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getApproveButtonText(), null);
+
+ jfc.setApproveButtonText("XYZ");
+ harness.check(jfc.getApproveButtonText(), "XYZ");
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_TEXT_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), "XYZ");
+
+ jfc.setApproveButtonText(null);
+ harness.check(jfc.getApproveButtonText(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_TEXT_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), "XYZ");
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setApproveButtonToolTipText.java b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonToolTipText.java
new file mode 100644
index 00000000..0a2fa2bc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setApproveButtonToolTipText.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setApproveButtonToolTipText() method of the
+ * {@link JFileChooser} class.
+ */
+public class setApproveButtonToolTipText
+ implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getApproveButtonToolTipText(), null);
+
+ jfc.setApproveButtonToolTipText("XYZ");
+ harness.check(jfc.getApproveButtonToolTipText(), "XYZ");
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), "XYZ");
+
+ jfc.setApproveButtonToolTipText(null);
+ harness.check(jfc.getApproveButtonToolTipText(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), "XYZ");
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setControlButtonsAreShown.java b/gnu/testlet/javax/swing/JFileChooser/setControlButtonsAreShown.java
new file mode 100644
index 00000000..594d9174
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setControlButtonsAreShown.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setControlButtonsAreShown() method of the
+ * {@link JFileChooser} class.
+ */
+public class setControlButtonsAreShown implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getControlButtonsAreShown(), true);
+
+ jfc.setControlButtonsAreShown(false);
+ harness.check(jfc.getControlButtonsAreShown(), false);
+ harness.check(event.getPropertyName(),
+ JFileChooser.CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), Boolean.TRUE);
+ harness.check(event.getNewValue(), Boolean.FALSE);
+
+ jfc.setControlButtonsAreShown(true);
+ harness.check(jfc.getControlButtonsAreShown(), true);
+ harness.check(event.getPropertyName(),
+ JFileChooser.CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), Boolean.FALSE);
+ harness.check(event.getNewValue(), Boolean.TRUE);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setCurrentDirectory.java b/gnu/testlet/javax/swing/JFileChooser/setCurrentDirectory.java
new file mode 100644
index 00000000..9f5c9dcd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setCurrentDirectory.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setCurrentDirectory() method of the
+ * {@link JFileChooser} class.
+ */
+public class setCurrentDirectory implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.addPropertyChangeListener(this);
+ harness.check(fc.getCurrentDirectory(), new File(System.getProperty("user.home")));
+
+ File d = new File(harness.getTempDirectory());
+ fc.setCurrentDirectory(d);
+ harness.check(fc.getCurrentDirectory(), d);
+ harness.check(event.getPropertyName(), JFileChooser.DIRECTORY_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), new File(System.getProperty("user.home")));
+ harness.check(event.getNewValue(), d);
+
+ fc.setCurrentDirectory(null);
+ harness.check(fc.getCurrentDirectory(), new File(System.getProperty("user.home")));
+ harness.check(event.getPropertyName(), JFileChooser.DIRECTORY_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), d);
+ harness.check(event.getNewValue(), new File(System.getProperty("user.home")));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setDialogTitle.java b/gnu/testlet/javax/swing/JFileChooser/setDialogTitle.java
new file mode 100644
index 00000000..f67d92d6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setDialogTitle.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setDialogTitle() method of the
+ * {@link JFileChooser} class.
+ */
+public class setDialogTitle implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getDialogTitle(), null);
+
+ jfc.setDialogTitle("XYZ");
+ harness.check(jfc.getDialogTitle(), "XYZ");
+ harness.check(event.getPropertyName(),
+ JFileChooser.DIALOG_TITLE_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), "XYZ");
+
+ jfc.setDialogTitle(null);
+ harness.check(jfc.getDialogTitle(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.DIALOG_TITLE_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), "XYZ");
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setDialogType.java b/gnu/testlet/javax/swing/JFileChooser/setDialogType.java
new file mode 100644
index 00000000..b71ba9c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setDialogType.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setDialogType() method of the
+ * {@link JFileChooser} class.
+ */
+public class setDialogType implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getDialogType(), JFileChooser.OPEN_DIALOG);
+
+ jfc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(jfc.getDialogType(), JFileChooser.SAVE_DIALOG);
+ harness.check(event.getPropertyName(),
+ JFileChooser.DIALOG_TYPE_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), new Integer(JFileChooser.OPEN_DIALOG));
+ harness.check(event.getNewValue(), new Integer(JFileChooser.SAVE_DIALOG));
+
+ jfc.setDialogType(JFileChooser.CUSTOM_DIALOG);
+ harness.check(jfc.getDialogType(), JFileChooser.CUSTOM_DIALOG);
+ harness.check(event.getPropertyName(),
+ JFileChooser.DIALOG_TYPE_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), new Integer(JFileChooser.SAVE_DIALOG));
+ harness.check(event.getNewValue(), new Integer(JFileChooser.CUSTOM_DIALOG));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setFileFilter.java b/gnu/testlet/javax/swing/JFileChooser/setFileFilter.java
new file mode 100644
index 00000000..7606448b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setFileFilter.java
@@ -0,0 +1,101 @@
+// Tags: JDK1.2
+// Uses: MyFileFilter
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * Some checks for the setFileFilter() method of the
+ * {@link JFileChooser} class.
+ */
+public class setFileFilter implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ fc.addPropertyChangeListener(this);
+ harness.check(fc.getFileFilter(), acceptAllFilter);
+
+ FileFilter ff1 = new MyFileFilter(true);
+ fc.setFileFilter(ff1);
+ harness.check(fc.getFileFilter(), ff1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY);
+ FileFilter[] filters1 = (FileFilter[]) e1.getOldValue();
+ harness.check(filters1.length, 1);
+ FileFilter[] filters2 = (FileFilter[]) e1.getNewValue();
+ harness.check(filters2.length, 2);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(e2.getOldValue(), acceptAllFilter);
+ harness.check(e2.getNewValue(), ff1);
+ events.clear();
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ JFileChooser fc = new JFileChooser();
+ FileFilter acceptAllFilter = fc.getAcceptAllFileFilter();
+ fc.addPropertyChangeListener(this);
+ harness.check(fc.getFileFilter(), acceptAllFilter);
+
+ fc.setFileFilter(null);
+ harness.check(fc.getFileFilter(), null);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent event = (PropertyChangeEvent) events.get(0);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_FILTER_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), acceptAllFilter);
+ harness.check(event.getNewValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setFileHidingEnabled.java b/gnu/testlet/javax/swing/JFileChooser/setFileHidingEnabled.java
new file mode 100644
index 00000000..34eff0f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setFileHidingEnabled.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setFileHidingEnabled() method of the
+ * {@link JFileChooser} class.
+ */
+public class setFileHidingEnabled implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.isFileHidingEnabled(), true);
+
+ jfc.setFileHidingEnabled(false);
+ harness.check(jfc.isFileHidingEnabled(), false);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_HIDING_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), Boolean.TRUE);
+ harness.check(event.getNewValue(), Boolean.FALSE);
+
+ jfc.setFileHidingEnabled(true);
+ harness.check(jfc.isFileHidingEnabled(), true);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_HIDING_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), Boolean.FALSE);
+ harness.check(event.getNewValue(), Boolean.TRUE);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setFileSelectionMode.java b/gnu/testlet/javax/swing/JFileChooser/setFileSelectionMode.java
new file mode 100644
index 00000000..d3366bdf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setFileSelectionMode.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setFileSelectionMode() method of the
+ * {@link JFileChooser} class.
+ */
+public class setFileSelectionMode implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getFileSelectionMode(),
+ JFileChooser.FILES_ONLY);
+
+ jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ harness.check(jfc.getFileSelectionMode(), JFileChooser.DIRECTORIES_ONLY);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_SELECTION_MODE_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(),
+ new Integer(JFileChooser.FILES_ONLY));
+ harness.check(event.getNewValue(),
+ new Integer(JFileChooser.DIRECTORIES_ONLY));
+
+ boolean pass = false;
+ try
+ {
+ jfc.setFileSelectionMode(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setFileSystemView.java b/gnu/testlet/javax/swing/JFileChooser/setFileSystemView.java
new file mode 100644
index 00000000..8869d271
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setFileSystemView.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * Some checks for the setFileSystemView() method of the
+ * {@link JFileChooser} class.
+ */
+public class setFileSystemView implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getFileSystemView(), FileSystemView.getFileSystemView());
+
+ FileSystemView fsv1 = new MyFileSystemView();
+ jfc.setFileSystemView(fsv1);
+ harness.check(jfc.getFileSystemView(), fsv1);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_SYSTEM_VIEW_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), FileSystemView.getFileSystemView());
+ harness.check(event.getNewValue(), fsv1);
+
+ jfc.setFileSystemView(null);
+ harness.check(jfc.getFileSystemView(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_SYSTEM_VIEW_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), fsv1);
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setFileView.java b/gnu/testlet/javax/swing/JFileChooser/setFileView.java
new file mode 100644
index 00000000..0ed90ae0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setFileView.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the setFileView() method of the
+ * {@link JFileChooser} class.
+ */
+public class setFileView implements Testlet, PropertyChangeListener {
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser jfc = new JFileChooser();
+ jfc.addPropertyChangeListener(this);
+ harness.check(jfc.getFileView(), null);
+
+ FileView fv1 = new FileView() {};
+ jfc.setFileView(fv1);
+ harness.check(jfc.getFileView(), fv1);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_VIEW_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), fv1);
+
+ jfc.setFileView(null);
+ harness.check(jfc.getFileView(), null);
+ harness.check(event.getPropertyName(),
+ JFileChooser.FILE_VIEW_CHANGED_PROPERTY);
+ harness.check(event.getOldValue(), fv1);
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setSelectedFile.java b/gnu/testlet/javax/swing/JFileChooser/setSelectedFile.java
new file mode 100644
index 00000000..a1c142c0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setSelectedFile.java
@@ -0,0 +1,117 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setSelectedFile() method of the
+ * {@link JFileChooser} class.
+ */
+public class setSelectedFile implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testNull(harness);
+ }
+
+ /**
+ * A general test.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+ JFileChooser fc = new JFileChooser();
+ events.clear();
+ fc.addPropertyChangeListener(this);
+ File file = fc.getSelectedFile();
+ harness.check(file, null);
+
+ File f1 = new File("X");
+ fc.setSelectedFile(f1);
+ harness.check(fc.getSelectedFile(), f1);
+ File[] files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.SELECTED_FILE_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), null);
+ harness.check(e1.getNewValue(), f1);
+ events.clear();
+
+ // repeat the same file to see if an event is generated...
+ fc.setSelectedFile(f1);
+ harness.check(fc.getSelectedFile(), f1);
+ files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+
+ harness.check(events.size(), 0);
+ }
+
+ /**
+ * Test setting the selected files to null.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testNull(TestHarness harness)
+ {
+ harness.checkPoint("testNull()");
+ JFileChooser fc = new JFileChooser();
+ events.clear();
+ fc.addPropertyChangeListener(this);
+ File file = fc.getSelectedFile();
+ harness.check(file, null);
+ fc.setSelectedFile(null);
+ harness.check(fc.getSelectedFile(), null);
+
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.SELECTED_FILE_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), null);
+ harness.check(e1.getNewValue(), null);
+ events.clear();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFileChooser/setSelectedFiles.java b/gnu/testlet/javax/swing/JFileChooser/setSelectedFiles.java
new file mode 100644
index 00000000..4b54c91d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFileChooser/setSelectedFiles.java
@@ -0,0 +1,142 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JFileChooser;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+
+/**
+ * Some checks for the setSelectedFiles() method of the
+ * {@link JFileChooser} class.
+ */
+public class setSelectedFiles implements Testlet, PropertyChangeListener {
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testNull(harness);
+ testEmptyArray(harness);
+ }
+
+ /**
+ * A general test.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+ JFileChooser fc = new JFileChooser();
+ fc.addPropertyChangeListener(this);
+ File[] files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+
+ File f1 = new File("X");
+ files = new File[] { f1 };
+ fc.setSelectedFiles(files);
+ File[] ff = fc.getSelectedFiles();
+ harness.check(ff[0], f1);
+
+ harness.check(fc.getSelectedFile(), f1);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.SELECTED_FILE_CHANGED_PROPERTY);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.SELECTED_FILES_CHANGED_PROPERTY);
+ events.clear();
+ }
+
+ /**
+ * Test setting the selected files to null.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testNull(TestHarness harness)
+ {
+ harness.checkPoint("testNull()");
+ JFileChooser fc = new JFileChooser();
+ fc.addPropertyChangeListener(this);
+ File[] files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+ harness.check(fc.getSelectedFile(), null);
+
+ // try null
+ fc.setSelectedFiles(null);
+ files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.SELECTED_FILE_CHANGED_PROPERTY);
+ harness.check(e1.getOldValue(), null);
+ harness.check(e1.getNewValue(), null);
+ harness.check(fc.getSelectedFile(), null);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.SELECTED_FILES_CHANGED_PROPERTY);
+ events.clear();
+
+ }
+
+ public void testEmptyArray(TestHarness harness)
+ {
+ harness.checkPoint("testEmptyArray()");
+ JFileChooser fc = new JFileChooser();
+ events.clear();
+ fc.addPropertyChangeListener(this);
+ File[] files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+
+ // try an empty array
+ fc.setSelectedFiles(new File[0]);
+ files = fc.getSelectedFiles();
+ harness.check(files.length, 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(),
+ JFileChooser.SELECTED_FILE_CHANGED_PROPERTY);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(),
+ JFileChooser.SELECTED_FILES_CHANGED_PROPERTY);
+ events.clear();
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFormattedTextField/CVS/Entries b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Entries
new file mode 100644
index 00000000..84b2710b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Entries
@@ -0,0 +1,2 @@
+/JFormattedTextFieldTests.java/1.3/Thu Dec 8 01:12:40 2005//
+D
diff --git a/gnu/testlet/javax/swing/JFormattedTextField/CVS/Repository b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Repository
new file mode 100644
index 00000000..7971c547
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JFormattedTextField
diff --git a/gnu/testlet/javax/swing/JFormattedTextField/CVS/Root b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFormattedTextField/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java b/gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java
new file mode 100644
index 00000000..c9554e2d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFormattedTextField/JFormattedTextFieldTests.java
@@ -0,0 +1,87 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Red Hat
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.JFormattedTextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.ParseException;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.DefaultFormatter;
+import javax.swing.text.DefaultFormatterFactory;
+import javax.swing.text.MaskFormatter;
+
+
+/**
+ * Some checks for JFormattedTextField.
+ */
+public class JFormattedTextFieldTests implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFormattedTextField field = new JFormattedTextField();
+
+ harness.checkPoint ("defaults");
+ harness.check (((AbstractDocument)field.getDocument()).getDocumentFilter() == null);
+ harness.check (field.getFormatterFactory() == null);
+ harness.check (field.getFormatter() == null);
+
+
+ harness.checkPoint ("implicit creation of formatter and factory");
+ field.setValue("aBcDeFg");
+ harness.check (((AbstractDocument)field.getDocument()).getDocumentFilter() != null);
+ harness.check (field.getFormatterFactory().getClass(),
+ DefaultFormatterFactory.class);
+ harness.check (field.getFormatter().getClass(), DefaultFormatter.class);
+
+
+ harness.checkPoint ("setting formatter changes the text");
+ MaskFormatter mask = null;
+ DefaultFormatter nullFormatter = new DefaultFormatter();
+ try
+ {
+ mask = new MaskFormatter ("UUUUUUU");
+ }
+ catch (ParseException pe)
+ {
+ }
+ DefaultFormatterFactory factory =
+ new DefaultFormatterFactory (mask, null, null, nullFormatter);
+ harness.check (field.getText().equals("aBcDeFg"));
+ field.setFormatterFactory(factory);
+ harness.check (field.getText().equals("ABCDEFG"));
+
+ harness.checkPoint ("field value going to null brings in nullFormatter");
+ field.setValue(null);
+ harness.check (field.getFormatter().getClass(), DefaultFormatter.class);
+
+ harness.checkPoint ("removing the DocumentFilter");
+ field.getFormatter().uninstall();
+ harness.check (((AbstractDocument)field.getDocument()).getDocumentFilter() == null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFrame/CVS/Entries b/gnu/testlet/javax/swing/JFrame/CVS/Entries
new file mode 100644
index 00000000..026cca73
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/CVS/Entries
@@ -0,0 +1,8 @@
+/HeavyweightComponent.java/1.2/Wed May 21 13:30:45 2008//
+/PR34577.java/1.1/Tue Dec 25 00:55:12 2007//
+/SetSize.java/1.1/Tue Jan 18 19:37:59 2005//
+/constructors.java/1.2/Tue Jun 6 20:07:39 2006//
+/glassPaneLayout.java/1.2/Tue Sep 27 20:05:58 2005//
+/isRootPaneCheckingEnabled.java/1.1/Mon Nov 7 20:55:43 2005//
+/paint5.java/1.1/Thu Feb 24 20:53:29 2005//
+D
diff --git a/gnu/testlet/javax/swing/JFrame/CVS/Repository b/gnu/testlet/javax/swing/JFrame/CVS/Repository
new file mode 100644
index 00000000..3bede993
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JFrame
diff --git a/gnu/testlet/javax/swing/JFrame/CVS/Root b/gnu/testlet/javax/swing/JFrame/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java b/gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java
new file mode 100644
index 00000000..9abb31cf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/HeavyweightComponent.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.2 GUI
+// Uses: ../../../java/awt/LocationTests
+
+// Copyright (C) 2006 Red Hat
+
+// 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.javax.swing.JFrame;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.java.awt.LocationTests;
+
+import javax.swing.JFrame;
+import javax.swing.JComponent;
+import java.awt.*;
+import java.util.Vector;
+
+/**
+ * These tests pass with the Sun JDK 1.4.2_05 on GNU/Linux IA-32.
+ */
+public class HeavyweightComponent implements Testlet {
+
+ // Tests that a heavyweight component is drawn at the correct location
+ // within a JFrame.
+ public void test(TestHarness harness) {
+ int outer_width = 100;
+ int outer_height = 100;
+ int inner_width = 0;
+ int inner_height = 0;
+
+ Robot r = harness.createRobot();
+
+ JFrame f = new JFrame();
+ f.setLayout(null);
+ Canvas c = new Canvas() {
+ public void paint(Graphics g) {
+ Rectangle r = getBounds();
+ g.setColor(Color.red);
+ // Subtract 1 from width and height since Graphics methods take
+ // *co-ordinates* as arguments, not widths and heights.
+ g.drawRect(r.x, r.y, r.width - 1, r.height - 1);
+ }
+ };
+ f.setSize(outer_width, outer_height);
+ f.add(c);
+ f.show();
+
+ // Wait for native frame to be fully displayed.
+ r.waitForIdle();
+ r.delay(1000);
+
+ Insets i = f.getInsets();
+ // Calculate area inside window frame.
+ inner_width = outer_width - i.left - i.right;
+ inner_height = outer_height - i.top - i.bottom;
+
+ c.setBounds(0, 0, inner_width, inner_height);
+
+ // bounds of red rectangle (1 pixel wide border)
+ Point loc = f.getLocationOnScreen();
+ Rectangle bounds = new Rectangle(loc.x + i.left, loc.y + i.top,
+ inner_width, inner_height);
+
+ // Wait for Canvas to paint itself.
+ r.waitForIdle();
+ r.delay(1000);
+
+ // Check that the Canvas fills the entire JFrame, within the JFrame's
+ // window frame.
+ LocationTests.checkRectangleCornerColors(harness, r, bounds, Color.red,
+ true);
+
+ // There is a delay so the tester can see the result.
+ r.delay(3000);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFrame/PR34577.java b/gnu/testlet/javax/swing/JFrame/PR34577.java
new file mode 100644
index 00000000..b739cccc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/PR34577.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2007 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.JFrame;
+
+import javax.swing.JFrame;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This checks for the bug found in PR34577, namely that
+ * an exception is thrown when a subclass attempts to change
+ * the root pane.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PR34577
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ new TestFrame(harness);
+ }
+
+ static class TestFrame
+ extends JFrame
+ {
+
+ public TestFrame(TestHarness h)
+ {
+ super("TestFrame");
+ try
+ {
+ setRootPane(new JRootPane());
+ h.check(true, "Root pane changed successfully.");
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.debug(e);
+ h.fail("Root pane could not be changed.");
+ }
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFrame/SetSize.java b/gnu/testlet/javax/swing/JFrame/SetSize.java
new file mode 100644
index 00000000..e5c06658
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/SetSize.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.2 GUI
+
+// Copyright (C) 2004 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.JFrame;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JFrame;
+import javax.swing.JComponent;
+import java.awt.*;
+import java.util.Vector;
+
+/**
+ * These tests pass with the Sun JDK 1.4.2_05 on GNU/Linux IA-32.
+ */
+public class SetSize implements Testlet {
+ public void test(TestHarness harness) {
+ JFrame f = new JFrame();
+ f.setSize(new Dimension(170, 300));
+ f.setVisible(true);
+
+ try {
+ Thread.sleep(200); // needed for Suns VM...
+ } catch(InterruptedException e) {
+ return;
+ }
+ Insets i = f.getInsets();
+ int w = f.getContentPane().getWidth();
+ int h = f.getContentPane().getHeight();
+ int x = f.getContentPane().getX();
+ int y = f.getContentPane().getY();
+ f.setVisible(false);
+ f.dispose();
+ // The request of sizing was 170x300, lets see if we managed that.
+ harness.check((w + i.left + i.right) == 170);
+ harness.check((h + i.top + i.bottom) == 300);
+
+ // The contentPane is per definition set to 0, 0
+ harness.check(x == 0);
+ harness.check(y == 0);
+
+ // Content pane Painting Size
+ f = new JFrame();
+ f.setSize(new Dimension(170, 300));
+ final Vector vars = new Vector(1);
+ JComponent child = new JComponent() {
+ public void paint(Graphics g) {
+ if(g.getClip() != null) {
+ vars.add(g.getClip());
+ synchronized(vars) {
+ vars.notifyAll();
+ }
+ }
+ }
+ };
+ f.getContentPane().add(child);
+ f.setVisible(true);// technically, this statement should be in the sync block, but that only works on the Sun JVM..
+ synchronized(vars) {
+ try {
+ vars.wait(1000); // wait until it has been painted, for max of 1 sec.
+ } catch(InterruptedException e) {
+ // fail
+ } finally {
+ w = f.getContentPane().getWidth();
+ h = f.getContentPane().getHeight();
+ f.setVisible(false);
+ f.dispose();
+ }
+ }
+ Rectangle r = (Rectangle) vars.get(0);
+ harness.check(r != null);
+ harness.check(w == r.getWidth());
+ harness.check(h == r.getHeight());
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFrame/constructors.java b/gnu/testlet/javax/swing/JFrame/constructors.java
new file mode 100644
index 00000000..2946b50e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/constructors.java
@@ -0,0 +1,169 @@
+/* constructors.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+
+package gnu.testlet.javax.swing.JFrame;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.GraphicsConfiguration;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JRootPane;
+import javax.swing.UIManager;
+
+/**
+ * Some checks for the constructors of the {@link JFrame} class.
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // Testing JFrame titles and invisibility
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ // Testing default properties
+ testFrameInit1(harness);
+ // Testing if-clause
+ testFrameInit2(harness);
+ }
+
+ /**
+ * Constructor Test #1 No JFrame title is specified.
+ */
+ public void testConstructor1(TestHarness harness)
+ {
+ JFrame f = new JFrame();
+ harness.check(f.getTitle(), "");
+ harness.check(f.isShowing(), false);
+ }
+
+ /**
+ * Constructor Test #2 JFrame title is specified, but not <code>null</code>.
+ */
+ public void testConstructor2(TestHarness harness)
+ {
+ JFrame f = new JFrame("JFrameName");
+ harness.check(f.getTitle(), "JFrameName");
+ }
+
+ /**
+ * Constructor Test #2 JFrame title is specified, but <code>null</code>.
+ */
+ public void testConstructor3(TestHarness harness)
+ {
+ JFrame f = new JFrame("");
+ harness.check(f.getTitle(), "");
+ }
+
+ /**
+ * Constructor Test #3 No JFrame title is specified and
+ * {@link GraphicsConfiguration} specified.
+ */
+ public void testConstructor5(TestHarness harness)
+ {
+ JFrame f = new JFrame((GraphicsConfiguration) null);
+ harness.check(f.getTitle(), "");
+ harness.check(f.isShowing(), false);
+ }
+
+ /**
+ * Constructor #4 JFrame title is specified and {@link GraphicsConfiguration}
+ * specified, but <code>null</code>.
+ */
+ public void testConstructor4(TestHarness harness)
+ {
+ JFrame f = new JFrame("JFrameName", null);
+ harness.check(f.getTitle(), "JFrameName");
+ }
+
+ /**
+ * Constructor #4 No JFrame title is specified and
+ * {@link GraphicsConfiguration} specified, but <code>null</code>.
+ */
+ public void testConstructor6(TestHarness harness)
+ {
+ JFrame f = new JFrame("", null);
+ harness.check(f.getTitle(), "");
+ }
+
+ /**
+ * Default JFrame Properties Test
+ */
+ public void testFrameInit1(TestHarness harness)
+ {
+ JFrame f = new JFrame();
+
+ harness.check(f.getAccessibleContext() instanceof AccessibleContext);
+ harness.check(f.getAccessibleContext() != null);
+
+ harness.check(f.getBackground(), UIManager.getColor("control"));
+
+ harness.check(f.getContentPane() instanceof Container);
+ harness.check(f.getContentPane() != null);
+
+ harness.check(f.getDefaultCloseOperation(), 1);
+
+ harness.check(f.getGlassPane() instanceof Component);
+ harness.check(f.getGlassPane() != null);
+
+ harness.check(f.getLayeredPane() instanceof JLayeredPane);
+ harness.check(f.getLayeredPane() != null);
+
+ harness.check(f.getLayout() instanceof BorderLayout);
+ harness.check(((BorderLayout) f.getLayout()).getHgap(), 0);
+ harness.check(((BorderLayout) f.getLayout()).getVgap(), 0);
+
+ harness.check(f.getJMenuBar(), null);
+
+ harness.check(f.getRootPane() instanceof JRootPane);
+ harness.check(f.getRootPane() != null);
+ }
+
+ /**
+ * If-Clause Test
+ */
+ public void testFrameInit2(TestHarness harness)
+ {
+ JFrame.setDefaultLookAndFeelDecorated(true);
+ JFrame f = new JFrame();
+ harness.check(f.isUndecorated(), true);
+ harness.check(f.getRootPane().getWindowDecorationStyle(), 1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JFrame/glassPaneLayout.java b/gnu/testlet/javax/swing/JFrame/glassPaneLayout.java
new file mode 100644
index 00000000..dd102f46
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/glassPaneLayout.java
@@ -0,0 +1,37 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Red Hat
+
+// 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.javax.swing.JFrame;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JFrame;
+import java.awt.Container;
+
+/**
+ * These tests pass with the Sun JDK 1.4.2_05 on GNU/Linux IA-32.
+ */
+public class glassPaneLayout implements Testlet {
+ public void test(TestHarness harness) {
+ JFrame f = new JFrame();
+ harness.check(((Container)f.getGlassPane()).getLayout().getClass(), java.awt.FlowLayout.class);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFrame/isRootPaneCheckingEnabled.java b/gnu/testlet/javax/swing/JFrame/isRootPaneCheckingEnabled.java
new file mode 100644
index 00000000..2f4eab63
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/isRootPaneCheckingEnabled.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2004 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JFrame;
+
+import java.awt.Component;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isRootPaneCheckingEnabled implements Testlet
+{
+
+ /**
+ * Overrides some protected methods to make them public for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestFrame extends JFrame
+ {
+ public boolean isRootPaneCheckingEnabled()
+ {
+ return super.isRootPaneCheckingEnabled();
+ }
+ public void setRootPaneCheckingEnabled(boolean b)
+ {
+ super.setRootPaneCheckingEnabled(b);
+ }
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRootPaneCheckingEnabled(harness);
+ testRootPaneCheckingDisabled(harness);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==true. Adds to the frame
+ * should go to the contentPane.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingEnabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingEnabled");
+ TestFrame f = new TestFrame();
+ f.setRootPaneCheckingEnabled(true);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now still has 1 child, the rootPane.
+ harness.check(children.length, 1);
+ harness.check(children[0] instanceof JRootPane);
+ // Instead, the add has gone to the contentPane which now also has 1 child,
+ // the label.
+ Component[] content = f.getContentPane().getComponents();
+ harness.check(content.length, 1);
+ harness.check(content[0], c);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==false. Adds to the frame
+ * should go directly to the frame.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingDisabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingDisabled");
+ TestFrame f = new TestFrame();
+ f.setRootPaneCheckingEnabled(false);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now has 2 children, the rootPane and the label.
+ harness.check(children.length, 2);
+ harness.check(children[0] instanceof JRootPane);
+ harness.check(children[1], c);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JFrame/paint5.java b/gnu/testlet/javax/swing/JFrame/paint5.java
new file mode 100644
index 00000000..084ad349
--- /dev/null
+++ b/gnu/testlet/javax/swing/JFrame/paint5.java
@@ -0,0 +1,191 @@
+// Tags: JDK1.2 GUI
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+
+/**
+ * Tests how the JFrame paints its five children, verifying
+ * the supplied boundaries and invocation of paint(Graphics).
+ * Needs GUI to run.
+ * @author Audrius Meskauskas (AudriusA@BlueWin.ch)>
+ */
+public class paint5
+ implements Testlet
+{
+ /**
+ * Width (and height) of the frame (+caption)
+ */
+ static final int FRAME_SIZE = 200;
+
+ /**
+ * The preferred width and height for all children.
+ */
+ static final int CHILD_SIZE = FRAME_SIZE / 4;
+ component north = new component("north");
+ component center = new component("center");
+ component south = new component("south");
+ component east = new component("east");
+ component west = new component("west");
+ Dimension pane;
+ int totalPainted = 0;
+ Thread thread;
+
+ public JFrame showFrame()
+ {
+ JFrame frame = new JFrame();
+ frame.getContentPane().add(north, BorderLayout.NORTH);
+ frame.getContentPane().add(south, BorderLayout.SOUTH);
+ frame.getContentPane().add(east, BorderLayout.EAST);
+ frame.getContentPane().add(west, BorderLayout.WEST);
+ frame.getContentPane().add(center, BorderLayout.CENTER);
+ frame.setSize(new Dimension(FRAME_SIZE, FRAME_SIZE));
+ frame.setVisible(true);
+
+ pane = frame.getContentPane().getSize();
+ return frame;
+ }
+
+ class component
+ extends JComponent
+ {
+ String name;
+ int painted;
+ Rectangle bounds;
+ Color color;
+
+ component(String _name)
+ {
+ name = _name;
+ setPreferredSize(new Dimension(CHILD_SIZE, CHILD_SIZE));
+ }
+
+ public void paint(Graphics g)
+ {
+ painted++;
+
+ color = g.getColor();
+ bounds = getBounds();
+
+ // The purpose of drawing and writing is to ensure that the application
+ // does not hang.
+ g.setColor(Color.white);
+ g.fillOval(0, 0, bounds.width, bounds.height);
+ g.setColor(Color.red);
+ g.drawString(name, CHILD_SIZE / 2, CHILD_SIZE / 2);
+
+ totalPainted++;
+
+ if (totalPainted >= 5)
+ thread.interrupt();
+ }
+
+ void basicCheck(TestHarness h)
+ {
+ h.check(bounds != null, name + " seems never painted");
+ h.check(color.getRed() == 0 && color.getGreen() == 0 &&
+ color.getBlue() == 0, name + ": default color must be black"
+ );
+ h.check(painted, 1, name + " must be painted exactly once");
+
+ h.checkPoint(name + " placement");
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ thread = Thread.currentThread();
+
+ JFrame frame = showFrame();
+ try
+ {
+ // Wait for 10 seconds at most, but should be interrupted much earlier.
+ Thread.sleep(10000);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ north.basicCheck(harness);
+ harness.check(north.bounds.width, pane.width, " north, width");
+ harness.check(north.bounds.height, CHILD_SIZE, "north, height");
+ harness.check(north.bounds.x, 0, "north, x");
+ harness.check(north.bounds.y, 0, "north, y");
+
+ south.basicCheck(harness);
+ harness.check(south.bounds.width, pane.width, "south, width");
+ harness.check(south.bounds.height, CHILD_SIZE, "south, height");
+ harness.check(south.bounds.x, 0, "south, x");
+ harness.check(south.bounds.y, pane.height - CHILD_SIZE, "south, y");
+
+ east.basicCheck(harness);
+ harness.check(east.bounds.width, CHILD_SIZE, "east, width");
+ harness.check(east.bounds.height, pane.height - 2 * CHILD_SIZE,
+ "east, height"
+ );
+ harness.check(east.bounds.x, pane.width - CHILD_SIZE, "east, x");
+ harness.check(east.bounds.y, CHILD_SIZE, "east, y");
+
+ west.basicCheck(harness);
+ harness.check(west.bounds.width, CHILD_SIZE, "west, width");
+ harness.check(west.bounds.height, pane.height - 2 * CHILD_SIZE,
+ "west, height"
+ );
+ harness.check(west.bounds.x, 0, "west, x");
+ harness.check(west.bounds.y, CHILD_SIZE, "west, y");
+
+ center.basicCheck(harness);
+ harness.check(center.bounds.width, pane.width - 2 * CHILD_SIZE,
+ "center, width"
+ );
+ harness.check(center.bounds.height, pane.height - 2 * CHILD_SIZE,
+ "center, height"
+ );
+ harness.check(center.bounds.x, CHILD_SIZE, "center, x");
+ harness.check(center.bounds.y, CHILD_SIZE, "center, y");
+
+ try
+ {
+ Thread.sleep(200);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ frame.setVisible(false);
+ frame.dispose();
+ frame = null;
+ thread = null;
+ pane = null;
+ north = center = south = east = null;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Entries b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Entries
new file mode 100644
index 00000000..e5d01ff4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Entries
@@ -0,0 +1,8 @@
+/getAccessibleName.java/1.1/Wed May 31 14:23:43 2006//
+/getAccessibleRole.java/1.1/Wed May 31 14:23:43 2006//
+/getAccessibleValue.java/1.1/Wed May 31 14:23:43 2006//
+/getCurrentAccessibleValue.java/1.1/Wed May 31 14:23:43 2006//
+/getMaximumAccessibleValue.java/1.1/Wed May 31 14:23:43 2006//
+/getMinimumAccessibleValue.java/1.1/Wed May 31 14:23:43 2006//
+/setCurrentAccessibleValue.java/1.1/Wed May 31 14:23:43 2006//
+D
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Repository b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Repository
new file mode 100644
index 00000000..1fdcbbc8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Root b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleName.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleName.java
new file mode 100644
index 00000000..9743226b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleName.java
@@ -0,0 +1,43 @@
+/* getAccessibleName.java -- some checks for the getAccessibleName() method
+ in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JInternalFrame;
+
+public class getAccessibleName implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), "Title");
+ f.setTitle(null);
+ harness.check(ac.getAccessibleName(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleRole.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleRole.java
new file mode 100644
index 00000000..362cff2c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleRole.java
@@ -0,0 +1,42 @@
+/* getAccessibleRole.java -- some checks for the getAccessibleRole() method
+ in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JInternalFrame;
+
+public class getAccessibleRole implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ harness.check(ac.getAccessibleRole(), AccessibleRole.INTERNAL_FRAME);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleValue.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleValue.java
new file mode 100644
index 00000000..d3c270d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getAccessibleValue.java
@@ -0,0 +1,42 @@
+/* getAccessibleValue.java -- some checks for the getAccessibleValue() method
+ in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JInternalFrame;
+
+public class getAccessibleValue implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ // the AccessibleContext implements the AccessibleValue interface
+ harness.check(ac.getAccessibleValue() == ac);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getCurrentAccessibleValue.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getCurrentAccessibleValue.java
new file mode 100644
index 00000000..145798b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getCurrentAccessibleValue.java
@@ -0,0 +1,47 @@
+/* getCurrentAccessibleValue.java -- some checks for the
+ getCurrentAccessibleValue() method in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+
+public class getCurrentAccessibleValue implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ AccessibleValue av = ac.getAccessibleValue();
+ // by trial and error I found that this is equal to the frame's layer
+ harness.check(av.getCurrentAccessibleValue(), JLayeredPane.DEFAULT_LAYER);
+ f.setLayer(JLayeredPane.PALETTE_LAYER);
+ harness.check(av.getCurrentAccessibleValue(), JLayeredPane.PALETTE_LAYER);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMaximumAccessibleValue.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMaximumAccessibleValue.java
new file mode 100644
index 00000000..b88cb5e3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMaximumAccessibleValue.java
@@ -0,0 +1,45 @@
+/* getMaximumAccessibleValue.java -- some checks for the
+ getMaximumAccessibleValue() method in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JInternalFrame;
+
+public class getMaximumAccessibleValue implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ AccessibleValue av = ac.getAccessibleValue();
+ harness.check(av.getMaximumAccessibleValue(),
+ new Integer(Integer.MAX_VALUE)); // not specified, but the ref
+ // impl returns this
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMinimumAccessibleValue.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMinimumAccessibleValue.java
new file mode 100644
index 00000000..e9825729
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/getMinimumAccessibleValue.java
@@ -0,0 +1,45 @@
+/* getMinimumAccessibleValue.java -- some checks for the
+ getMinimumAccessibleValue() method in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JInternalFrame;
+
+public class getMinimumAccessibleValue implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ AccessibleContext ac = f.getAccessibleContext();
+ AccessibleValue av = ac.getAccessibleValue();
+ harness.check(av.getMinimumAccessibleValue(),
+ new Integer(Integer.MIN_VALUE)); // not specified, but the ref
+ // impl returns this
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/setCurrentAccessibleValue.java b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/setCurrentAccessibleValue.java
new file mode 100644
index 00000000..535c4ea9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/AccessibleJInternalFrame/setCurrentAccessibleValue.java
@@ -0,0 +1,67 @@
+/* setCurrentAccessibleValue.java -- some checks for the
+ setCurrentAccessibleValue() method in the AccessibleJInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame.AccessibleJInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JInternalFrame.JDesktopIcon;
+
+public class setCurrentAccessibleValue
+ implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ JDesktopIcon icon = f.getDesktopIcon();
+ AccessibleContext ac = icon.getAccessibleContext();
+ AccessibleValue av = ac.getAccessibleValue();
+
+ // by trial and error, I determined that the "value" is the frame's layer
+ harness.check(av.getCurrentAccessibleValue(), JLayeredPane.DEFAULT_LAYER);
+ ac.addPropertyChangeListener(this);
+ av.setCurrentAccessibleValue(JLayeredPane.PALETTE_LAYER);
+ harness.check(f.getLayer(), JLayeredPane.PALETTE_LAYER.intValue());
+ harness.check(lastEvent, null); // no event is generated
+
+ boolean set = av.setCurrentAccessibleValue(null);
+ harness.check(!set);
+ harness.check(f.getLayer(), JLayeredPane.PALETTE_LAYER.intValue());
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries b/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries
new file mode 100644
index 00000000..e67c4258
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries
@@ -0,0 +1,23 @@
+/MyJInternalFrame.java/1.2/Thu Jun 1 13:37:37 2006//
+/constructors.java/1.1/Wed May 31 13:22:37 2006//
+/dispose.java/1.1/Wed May 31 13:22:37 2006//
+/getDesktopIcon.java/1.1/Wed May 31 13:22:37 2006//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/getNormalBounds.java/1.1/Wed May 31 13:22:37 2006//
+/isIconifiable.java/1.1/Wed May 31 13:22:37 2006//
+/isResizable.java/1.1/Wed May 31 13:22:37 2006//
+/isRootPaneCheckingEnabled.java/1.1/Mon Nov 7 20:55:43 2005//
+/paramString.java/1.2/Wed May 21 13:30:45 2008//
+/setClosable.java/1.2/Wed May 31 13:46:00 2006//
+/setClosed.java/1.1/Wed Mar 15 14:28:14 2006//
+/setDefaultCloseOperation.java/1.1/Wed May 31 13:22:37 2006//
+/setDesktopIcon.java/1.1/Wed May 31 13:22:37 2006//
+/setFrameIcon.java/1.1/Wed May 31 13:22:37 2006//
+/setIconifiable.java/1.2/Wed May 31 13:46:00 2006//
+/setMaximizable.java/1.1/Wed Mar 15 14:28:14 2006//
+/setNormalBounds.java/1.1/Wed May 31 13:22:37 2006//
+/setResizable.java/1.2/Wed May 31 13:46:00 2006//
+/setSelected.java/1.3/Wed May 31 14:34:14 2006//
+/setSelected2.java/1.3/Thu Mar 15 16:02:30 2012//
+/setTitle.java/1.1/Wed May 31 13:22:37 2006//
+D
diff --git a/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries.Log b/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries.Log
new file mode 100644
index 00000000..920b9aa0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJInternalFrame////
diff --git a/gnu/testlet/javax/swing/JInternalFrame/CVS/Repository b/gnu/testlet/javax/swing/JInternalFrame/CVS/Repository
new file mode 100644
index 00000000..9fc8de91
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JInternalFrame
diff --git a/gnu/testlet/javax/swing/JInternalFrame/CVS/Root b/gnu/testlet/javax/swing/JInternalFrame/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java b/gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java
new file mode 100644
index 00000000..f51f5593
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/MyJInternalFrame.java
@@ -0,0 +1,40 @@
+/* MyJInternalFrame.java -- provides access to protected stuff in
+ JInternalFrame, for testing purposes.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import javax.swing.JInternalFrame;
+
+public class MyJInternalFrame extends JInternalFrame
+{
+ public MyJInternalFrame(String title)
+ {
+ super(title);
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/constructors.java b/gnu/testlet/javax/swing/JInternalFrame/constructors.java
new file mode 100644
index 00000000..3e4a7f75
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/constructors.java
@@ -0,0 +1,155 @@
+/* constructors.java -- some checks for the constructors in the JInternalFrame
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JInternalFrame f = new JInternalFrame();
+ harness.check(f.getTitle(), "");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(!f.isResizable());
+ harness.check(!f.isClosable());
+ harness.check(!f.isMaximizable());
+ harness.check(!f.isIconifiable());
+ f.putClientProperty(JLayeredPane.LAYER_PROPERTY,
+ JLayeredPane.PALETTE_LAYER);
+ harness.check(f.getLayer(), JLayeredPane.PALETTE_LAYER.intValue());
+ harness.check(f.getClientProperty(JLayeredPane.LAYER_PROPERTY),
+ JLayeredPane.PALETTE_LAYER);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ JInternalFrame f = new JInternalFrame("Title");
+ harness.check(f.getTitle(), "Title");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(!f.isResizable());
+ harness.check(!f.isClosable());
+ harness.check(!f.isMaximizable());
+ harness.check(!f.isIconifiable());
+
+ f = new JInternalFrame(null);
+ harness.check(f.getTitle(), null);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ JInternalFrame f = new JInternalFrame("Title", true);
+ harness.check(f.getTitle(), "Title");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(f.isResizable());
+ harness.check(!f.isClosable());
+ harness.check(!f.isMaximizable());
+ harness.check(!f.isIconifiable());
+
+ f = new JInternalFrame(null, false);
+ harness.check(f.getTitle(), null);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean, boolean)");
+ JInternalFrame f = new JInternalFrame("Title", false, true);
+ harness.check(f.getTitle(), "Title");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(!f.isResizable());
+ harness.check(f.isClosable());
+ harness.check(!f.isMaximizable());
+ harness.check(!f.isIconifiable());
+
+ f = new JInternalFrame(null, false, false);
+ harness.check(f.getTitle(), null);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean, boolean, boolean)");
+ JInternalFrame f = new JInternalFrame("Title", false, false, true);
+ harness.check(f.getTitle(), "Title");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(!f.isResizable());
+ harness.check(!f.isClosable());
+ harness.check(f.isMaximizable());
+ harness.check(!f.isIconifiable());
+
+ f = new JInternalFrame(null, false, false, false);
+ harness.check(f.getTitle(), null);
+ }
+
+ private void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean, boolean, boolean, boolean)");
+ JInternalFrame f = new JInternalFrame("Title", false, false, false, true);
+ harness.check(f.getTitle(), "Title");
+ harness.check(f.getDesktopPane(), null);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ harness.check(f.getLayer(), JLayeredPane.DEFAULT_LAYER.intValue());
+ harness.check(!f.isResizable());
+ harness.check(!f.isClosable());
+ harness.check(!f.isMaximizable());
+ harness.check(f.isIconifiable());
+
+ f = new JInternalFrame(null, false, false, false, false);
+ harness.check(f.getTitle(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/dispose.java b/gnu/testlet/javax/swing/JInternalFrame/dispose.java
new file mode 100644
index 00000000..05522a39
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/dispose.java
@@ -0,0 +1,81 @@
+/* dispose.java -- some checks for the dispose() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameEvent;
+import javax.swing.event.InternalFrameListener;
+
+public class dispose implements Testlet, InternalFrameListener
+{
+ List events = new java.util.ArrayList();
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ f.addInternalFrameListener(this);
+ f.dispose();
+ harness.check(f.isClosed());
+ harness.check(!f.isSelected());
+ harness.check(!f.isVisible());
+ harness.check(events.size(), 1);
+ InternalFrameEvent event = (InternalFrameEvent) events.get(0);
+ harness.check(event.getSource(), f);
+ harness.check(event.getID(), InternalFrameEvent.INTERNAL_FRAME_CLOSED);
+ }
+
+ public void internalFrameActivated(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameClosed(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameClosing(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameDeactivated(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameDeiconified(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameIconified(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameOpened(InternalFrameEvent event) {
+ events.add(event);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/getDesktopIcon.java b/gnu/testlet/javax/swing/JInternalFrame/getDesktopIcon.java
new file mode 100644
index 00000000..f9ca8c3f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/getDesktopIcon.java
@@ -0,0 +1,45 @@
+/* getDesktopIcon.java -- some checks for the getDesktopIcon() method in
+ the JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.JInternalFrame.JDesktopIcon;
+
+public class getDesktopIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ JDesktopIcon icon = new JDesktopIcon(f);
+ f.setDesktopIcon(icon);
+ harness.check(f.getDesktopIcon(), icon);
+
+ f.setDesktopIcon(null);
+ harness.check(f.getDesktopIcon(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/getInputMap.java b/gnu/testlet/javax/swing/JInternalFrame/getInputMap.java
new file mode 100644
index 00000000..dc83e4a5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/getInputMap.java
@@ -0,0 +1,70 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JInternalFrame;
+
+/**
+ * Checks the input maps defined for a JInternalFrame - this is really testing
+ * the setup performed by BasicInternalFrameUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JInternalFrame f = new JInternalFrame();
+ InputMap m1 = f.getInputMap();
+ InputMap m2 = f.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JInternalFrame f = new JInternalFrame();
+ InputMap m1 = f.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = f.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = f.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/getNormalBounds.java b/gnu/testlet/javax/swing/JInternalFrame/getNormalBounds.java
new file mode 100644
index 00000000..2b61c93e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/getNormalBounds.java
@@ -0,0 +1,45 @@
+/* getNormalBounds.java -- some checks for the getNormalBounds() method in
+ the JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.JInternalFrame;
+
+public class getNormalBounds implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ f.setBounds(2, 4, 6, 8);
+ harness.check(f.getNormalBounds(), new Rectangle(2, 4, 6, 8));
+ f.setNormalBounds(new Rectangle(1, 2, 3, 4));
+ harness.check(f.getNormalBounds(), new Rectangle(1, 2, 3, 4));
+ harness.check(f.getBounds(), new Rectangle(2, 4, 6, 8));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/isIconifiable.java b/gnu/testlet/javax/swing/JInternalFrame/isIconifiable.java
new file mode 100644
index 00000000..2256cd43
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/isIconifiable.java
@@ -0,0 +1,42 @@
+/* isIconifiable.java -- some checks for the isIconifiable() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+
+public class isIconifiable implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isIconifiable());
+ f.setIconifiable(true);
+ harness.check(f.isIconifiable());
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/isResizable.java b/gnu/testlet/javax/swing/JInternalFrame/isResizable.java
new file mode 100644
index 00000000..fa1d787a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/isResizable.java
@@ -0,0 +1,42 @@
+/* isResizable.java -- some checks for the isResizable() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+
+public class isResizable implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isResizable());
+ f.setResizable(true);
+ harness.check(f.isResizable());
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/isRootPaneCheckingEnabled.java b/gnu/testlet/javax/swing/JInternalFrame/isRootPaneCheckingEnabled.java
new file mode 100644
index 00000000..6bbfb1b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/isRootPaneCheckingEnabled.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2004 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JInternalFrame;
+
+import java.awt.Component;
+
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isRootPaneCheckingEnabled implements Testlet
+{
+
+ /**
+ * Overrides some protected methods to make them public for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestInternalFrame extends JInternalFrame
+ {
+ public boolean isRootPaneCheckingEnabled()
+ {
+ return super.isRootPaneCheckingEnabled();
+ }
+ public void setRootPaneCheckingEnabled(boolean b)
+ {
+ super.setRootPaneCheckingEnabled(b);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testRootPaneCheckingEnabled(harness);
+ testRootPaneCheckingDisabled(harness);
+ }
+
+ private void testRootPaneCheckingEnabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingEnabled");
+ TestInternalFrame f = new TestInternalFrame();
+ f.setRootPaneCheckingEnabled(true);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now still has 2 children, the rootPane and the title pane.
+ harness.check(children.length, 2);
+ harness.check(children[0] instanceof JRootPane);
+ // Instead, the add has gone to the contentPane which now also has 1 child,
+ // the label.
+ Component[] content = f.getContentPane().getComponents();
+ harness.check(content.length, 1);
+ harness.check(content[0], c);
+ }
+
+ private void testRootPaneCheckingDisabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingDisabled");
+ TestInternalFrame f = new TestInternalFrame();
+ f.setRootPaneCheckingEnabled(false);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now has 3 children, the rootPane, the title pane and the label.
+ harness.check(children.length, 3);
+ harness.check(children[0] instanceof JRootPane);
+ harness.check(children[2], c);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/paramString.java b/gnu/testlet/javax/swing/JInternalFrame/paramString.java
new file mode 100644
index 00000000..f053f898
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/paramString.java
@@ -0,0 +1,42 @@
+/* paramString.java -- some checks for the paramString() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyJInternalFrame
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * The paramString() method is allowed to return any non-null string,
+ * but we check for a match with the reference implementation anyway.
+ */
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJInternalFrame f = new MyJInternalFrame("F1");
+ harness.check(f.paramString().endsWith(",title=F1"));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setClosable.java b/gnu/testlet/javax/swing/JInternalFrame/setClosable.java
new file mode 100644
index 00000000..5615fceb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setClosable.java
@@ -0,0 +1,56 @@
+/* setClosable.java -- Checks the setClosable method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+ and David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setClosable implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isClosable());
+ f.addPropertyChangeListener(this);
+ f.setClosable(true);
+ harness.check(f.isClosable());
+ harness.check(lastEvent.getPropertyName(), "closable");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setClosed.java b/gnu/testlet/javax/swing/JInternalFrame/setClosed.java
new file mode 100644
index 00000000..4b609844
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setClosed.java
@@ -0,0 +1,89 @@
+/* setClosed.java -- Checks the setClosed method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyVetoException;
+
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setClosed implements Testlet
+{
+
+ /**
+ * Catches property changes and stores the property name.
+ */
+ class TestPropertyChangeHandler
+ implements PropertyChangeListener
+ {
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ propertyChanged = e.getPropertyName();
+ }
+
+ }
+
+ /**
+ * Stores the name of the last changed property.
+ */
+ String propertyChanged;
+
+ /**
+ * The entry point in this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testBoundProperty(harness);
+ }
+
+ /**
+ * Tests if this is a bound property.
+ *
+ * @param h the test harness to use
+ */
+ private void testBoundProperty(TestHarness h)
+ {
+ h.checkPoint("testBoundProperty");
+ JInternalFrame t = new JInternalFrame();
+ t.addPropertyChangeListener(new TestPropertyChangeHandler());
+ try
+ {
+ t.setClosed(false);
+ propertyChanged = null;
+ t.setClosed(true);
+ h.check(propertyChanged, "closed");
+ }
+ catch (PropertyVetoException ex)
+ {
+ h.fail(ex.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setDefaultCloseOperation.java b/gnu/testlet/javax/swing/JInternalFrame/setDefaultCloseOperation.java
new file mode 100644
index 00000000..9d5300fa
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setDefaultCloseOperation.java
@@ -0,0 +1,59 @@
+/* setDefaultCloseOperation.java -- some checks for the
+ setDefaultCloseOperation() method in the JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+public class setDefaultCloseOperation
+ implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ f.addPropertyChangeListener(this);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DISPOSE_ON_CLOSE);
+ f.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE);
+ harness.check(f.getDefaultCloseOperation(),
+ JInternalFrame.DO_NOTHING_ON_CLOSE);
+ harness.check(lastEvent, null);
+ f.setDefaultCloseOperation(-999);
+ harness.check(f.getDefaultCloseOperation(), -999);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setDesktopIcon.java b/gnu/testlet/javax/swing/JInternalFrame/setDesktopIcon.java
new file mode 100644
index 00000000..bc08809e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setDesktopIcon.java
@@ -0,0 +1,70 @@
+/* setDesktopIcon.java -- some checks for the setDesktopIcon() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+import javax.swing.JInternalFrame.JDesktopIcon;
+
+public class setDesktopIcon implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ f.addPropertyChangeListener(this);
+ JDesktopIcon icon = new JDesktopIcon(f);
+ f.setDesktopIcon(icon);
+ harness.check(f.getDesktopIcon(), icon);
+ harness.check(lastEvent.getPropertyName(), "desktopIcon");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getNewValue(), icon);
+ harness.check(lastEvent.getOldValue() != null);
+
+ lastEvent = null;
+ f.setDesktopIcon(null);
+ harness.check(f.getDesktopIcon(), null);
+ harness.check(lastEvent.getPropertyName(), "desktopIcon");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getNewValue(), null);
+ harness.check(lastEvent.getOldValue(), icon);
+
+ JInternalFrame f2 = new JInternalFrame("F2");
+ JDesktopIcon icon2 = new JDesktopIcon(f2);
+ f.setDesktopIcon(icon);
+ harness.check(icon2.getInternalFrame(), f2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setFrameIcon.java b/gnu/testlet/javax/swing/JInternalFrame/setFrameIcon.java
new file mode 100644
index 00000000..c947c82d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setFrameIcon.java
@@ -0,0 +1,68 @@
+/* setFrameIcon.java -- some checks for the setFrameIcon() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.Icon;
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+public class setFrameIcon implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ f.addPropertyChangeListener(this);
+ Icon icon = MetalIconFactory.getHorizontalSliderThumbIcon();
+ f.setFrameIcon(icon);
+ harness.check(f.getFrameIcon(), icon);
+ harness.check(lastEvent.getPropertyName(),
+ JInternalFrame.FRAME_ICON_PROPERTY);
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getNewValue(), icon);
+ harness.check(lastEvent.getOldValue() != null);
+
+ lastEvent = null;
+ f.setFrameIcon(null);
+ harness.check(f.getFrameIcon(), null);
+ harness.check(lastEvent.getPropertyName(),
+ JInternalFrame.FRAME_ICON_PROPERTY);
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getNewValue(), null);
+ harness.check(lastEvent.getOldValue(), icon);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java b/gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java
new file mode 100644
index 00000000..4403fd93
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setIconifiable.java
@@ -0,0 +1,56 @@
+/* setIconifiable.java -- Checks the setIconifiable method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+ and David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setIconifiable implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isIconifiable());
+ f.addPropertyChangeListener(this);
+ f.setIconifiable(true);
+ harness.check(f.isIconifiable());
+ harness.check(lastEvent.getPropertyName(), "iconable");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setMaximizable.java b/gnu/testlet/javax/swing/JInternalFrame/setMaximizable.java
new file mode 100644
index 00000000..57f616dc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setMaximizable.java
@@ -0,0 +1,81 @@
+/* setMaximizable.java -- Checks the setMaximizable method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setMaximizable implements Testlet
+{
+
+ /**
+ * Catches property changes and stores the property name.
+ */
+ class TestPropertyChangeHandler
+ implements PropertyChangeListener
+ {
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ propertyChanged = e.getPropertyName();
+ }
+
+ }
+
+ /**
+ * Stores the name of the last changed property.
+ */
+ String propertyChanged;
+
+ /**
+ * The entry point in this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testBoundProperty(harness);
+ }
+
+ /**
+ * Tests if this is a bound property.
+ *
+ * @param h the test harness to use
+ */
+ private void testBoundProperty(TestHarness h)
+ {
+ h.checkPoint("testBoundProperty");
+ JInternalFrame t = new JInternalFrame();
+ t.addPropertyChangeListener(new TestPropertyChangeHandler());
+ t.setMaximizable(false);
+ propertyChanged = null;
+ t.setMaximizable(true);
+ h.check(propertyChanged, "maximizable");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setNormalBounds.java b/gnu/testlet/javax/swing/JInternalFrame/setNormalBounds.java
new file mode 100644
index 00000000..35f45d27
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setNormalBounds.java
@@ -0,0 +1,66 @@
+/* setNormalBounds.java -- some checks for the setNormalBounds() method
+ in the JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JDesktopPane;
+import javax.swing.JInternalFrame;
+
+public class setNormalBounds implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+ public void test(TestHarness harness)
+ {
+ JDesktopPane desktop = new JDesktopPane();
+ JInternalFrame f = new JInternalFrame("Title");
+ desktop.add(f);
+ f.addPropertyChangeListener(this);
+ harness.check(f.getNormalBounds(), new Rectangle());
+ f.setBounds(4, 3, 2, 1);
+ harness.check(f.getNormalBounds(), new Rectangle(4, 3, 2, 1));
+
+ Rectangle normalBounds = new Rectangle(1, 2, 3, 4);
+ f.setNormalBounds(normalBounds);
+ harness.check(f.getNormalBounds(), new Rectangle(1, 2, 3, 4));
+ harness.check(f.getNormalBounds() == normalBounds);
+ harness.check(f.getBounds(), new Rectangle(4, 3, 2, 1));
+ harness.check(lastEvent, null);
+
+ // after setting to null, getNormalBounds() reverts to the component bounds
+ f.setNormalBounds(null);
+ harness.check(f.getNormalBounds(), new Rectangle(4, 3, 2, 1));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setResizable.java b/gnu/testlet/javax/swing/JInternalFrame/setResizable.java
new file mode 100644
index 00000000..5b4f62c8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setResizable.java
@@ -0,0 +1,56 @@
+/* setResizable.java -- Checks the setResizable method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+ and David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setResizable implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isResizable());
+ f.addPropertyChangeListener(this);
+ f.setResizable(true);
+ harness.check(f.isResizable());
+ harness.check(lastEvent.getPropertyName(), "resizable");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setSelected.java b/gnu/testlet/javax/swing/JInternalFrame/setSelected.java
new file mode 100644
index 00000000..189284b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setSelected.java
@@ -0,0 +1,176 @@
+/* setSelected.java -- Tests the setSelected() method.
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyVetoException;
+
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the functionality of the setSelected() method in JInternalFrame.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setSelected implements Testlet
+{
+
+ boolean repainted;
+
+ /**
+ * A subclass of JInternalFrame for testing.
+ */
+ class TestInternalFrame extends JInternalFrame
+ {
+ public void repaint(long t, int x, int y, int w, int h)
+ {
+ super.repaint(t, x, y, w, h);
+ repainted = true;
+ }
+ }
+
+ /**
+ * Catches property changes and stores the property name.
+ */
+ class TestPropertyChangeHandler
+ implements PropertyChangeListener
+ {
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ propertyChanged = e.getPropertyName();
+ }
+
+ }
+
+ /**
+ * Stores the name of the last changed property.
+ */
+ String propertyChanged;
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testBoundProperty(harness);
+ }
+
+ /**
+ * Tests if setSelected should trigger a repaint.
+ *
+ * @param h the test harness to use
+ */
+ public void testRepaint(TestHarness h)
+ {
+ h.checkPoint("testRepaint");
+ JInternalFrame f = new TestInternalFrame();
+ f.setVisible(true);
+
+ JFrame fr = null;
+ try
+ {
+ // First we try with visible but not showing.
+ repainted = false;
+ f.setSelected(true);
+ h.check(repainted, false);
+ repainted = false;
+ f.setSelected(false);
+ h.check(repainted, false);
+
+ // Now we do the same with the internal frame showing.
+ fr = new JFrame();
+ fr.getContentPane().add(f);
+ fr.setSize(100, 100);
+ fr.setVisible(true);
+
+ // Check precondition (not selected).
+ h.check(f.isSelected(), false);
+ // Change state to selected.
+ repainted = false;
+ f.setSelected(true);
+ h.check(repainted, true);
+ // No state change.
+ repainted = false;
+ f.setSelected(true);
+ h.check(repainted, false);
+ // State change to false.
+ repainted = false;
+ f.setSelected(false);
+ h.check(repainted, true);
+ // No state change.
+ repainted = false;
+ f.setSelected(false);
+ h.check(repainted, false);
+ }
+ catch (PropertyVetoException ex)
+ {
+ h.fail("PropertyVetoException");
+ }
+ finally
+ {
+ if (fr != null)
+ fr.dispose();
+ }
+ }
+
+
+ /**
+ * Tests if this is a bound property.
+ *
+ * @param h the test harness to use
+ */
+ private void testBoundProperty(TestHarness h)
+ {
+ h.checkPoint("testBoundProperty");
+ JInternalFrame t = new JInternalFrame();
+ t.addPropertyChangeListener(new TestPropertyChangeHandler());
+ try
+ {
+
+ JFrame fr = new JFrame();
+ fr.getContentPane().add(t);
+ fr.setSize(100, 100);
+ fr.setVisible(true);
+ t.setVisible(true);
+
+ t.setSelected(false);
+ propertyChanged = null;
+ t.setSelected(true);
+ h.check(propertyChanged, "selected");
+ }
+ catch (PropertyVetoException ex)
+ {
+ h.fail(ex.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setSelected2.java b/gnu/testlet/javax/swing/JInternalFrame/setSelected2.java
new file mode 100644
index 00000000..952d42ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setSelected2.java
@@ -0,0 +1,151 @@
+/* setSelected2.java -- some checks for the setSelected() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyVetoException;
+import java.beans.VetoableChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameEvent;
+import javax.swing.event.InternalFrameListener;
+
+public class setSelected2
+ implements Testlet, PropertyChangeListener, VetoableChangeListener,
+ InternalFrameListener
+{
+ PropertyChangeEvent lastEvent;
+
+ PropertyChangeEvent lastVetoableEvent;
+
+ List events = new ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void vetoableChange(PropertyChangeEvent event)
+ {
+ lastVetoableEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ harness.check(!f.isSelected());
+
+ // setSelected() only has an effect if the internal frame
+ // is showing.
+ JFrame fr = new JFrame();
+ fr.getContentPane().add(f);
+ f.setVisible(true);
+ fr.pack();
+ fr.setVisible(true);
+
+ f.addVetoableChangeListener(this);
+ f.addPropertyChangeListener(this);
+ f.addInternalFrameListener(this);
+ try
+ {
+ f.setSelected(true);
+ }
+ catch (PropertyVetoException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(f.isSelected());
+
+ // check the vetoable event
+ harness.check(lastVetoableEvent.getPropertyName(),
+ JInternalFrame.IS_SELECTED_PROPERTY);
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+
+ harness.check(lastEvent.getPropertyName(),
+ JInternalFrame.IS_SELECTED_PROPERTY);
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+
+ harness.check(events.size(), 1);
+ InternalFrameEvent event = (InternalFrameEvent) events.get(0);
+ harness.check(event.getSource(), f);
+ harness.check(event.getID(), InternalFrameEvent.INTERNAL_FRAME_ACTIVATED);
+
+ // set selected to true
+ events.clear();
+ try
+ {
+ f.setSelected(true);
+ }
+ catch (PropertyVetoException e)
+ {
+ // ignore
+ }
+ harness.check(f.isSelected());
+ harness.check(events.size(), 0);
+
+ // clean up frame from desktop
+ f.dispose();
+ fr.dispose();
+ }
+
+ public void internalFrameActivated(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameClosed(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameClosing(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameDeactivated(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameDeiconified(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameIconified(InternalFrameEvent event) {
+ events.add(event);
+ }
+
+ public void internalFrameOpened(InternalFrameEvent event) {
+ events.add(event);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JInternalFrame/setTitle.java b/gnu/testlet/javax/swing/JInternalFrame/setTitle.java
new file mode 100644
index 00000000..21c0b028
--- /dev/null
+++ b/gnu/testlet/javax/swing/JInternalFrame/setTitle.java
@@ -0,0 +1,78 @@
+/* setTitle.java -- some checks for the setTitle() method in the
+ JInternalFrame class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JInternalFrame;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JInternalFrame;
+
+public class setTitle implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("F1");
+ f.addPropertyChangeListener(this);
+ f.setTitle("F2");
+ harness.check(f.getTitle(), "F2");
+ harness.check(lastEvent.getPropertyName(), "title");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), "F1");
+ harness.check(lastEvent.getNewValue(), "F2");
+
+ lastEvent = null;
+ f.setTitle(null);
+ harness.check(f.getTitle(), null);
+ harness.check(lastEvent.getPropertyName(), "title");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), "F2");
+ harness.check(lastEvent.getNewValue(), null);
+
+ // setting null again generates no event
+ lastEvent = null;
+ f.setTitle(null);
+ harness.check(lastEvent.getPropertyName(), "title");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), null);
+ harness.check(lastEvent.getNewValue(), null);
+
+ f.setTitle("F3");
+ harness.check(f.getTitle(), "F3");
+ harness.check(lastEvent.getPropertyName(), "title");
+ harness.check(lastEvent.getSource(), f);
+ harness.check(lastEvent.getOldValue(), null);
+ harness.check(lastEvent.getNewValue(), "F3");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Entries b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Entries
new file mode 100644
index 00000000..d6cf126d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Entries
@@ -0,0 +1,4 @@
+/getAccessibleName.java/1.1/Wed May 31 12:39:57 2006//
+/getCharacterBounds.java/1.1/Mon Oct 16 11:45:52 2006//
+/getIndexAtPoint.java/1.1/Mon Oct 16 11:45:52 2006//
+D
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Repository b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Repository
new file mode 100644
index 00000000..c7427745
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JLabel/AccessibleJLabel
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Root b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getAccessibleName.java b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getAccessibleName.java
new file mode 100644
index 00000000..0d41389a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getAccessibleName.java
@@ -0,0 +1,51 @@
+/* getAccessibleName.java -- some checks for the getAccessibleName() method
+ in the AccessibleJLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel.AccessibleJLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JLabel;
+
+public class getAccessibleName implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ AccessibleContext ac = label.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), "ABC");
+ JLabel label2 = new JLabel("JLabel2");
+ label2.setLabelFor(label);
+ harness.check(ac.getAccessibleName(), "ABC");
+ label.setText(null);
+ harness.check(ac.getAccessibleName(), "JLabel2");
+
+ ac.setAccessibleName("XYZ");
+ harness.check(ac.getAccessibleName(), "XYZ");
+ label.setText("ABC");
+ harness.check(ac.getAccessibleName(), "XYZ");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getCharacterBounds.java b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getCharacterBounds.java
new file mode 100644
index 00000000..4863eb36
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getCharacterBounds.java
@@ -0,0 +1,115 @@
+/* getCharacterBounds.java -- Tests AccessibleJLabel.getCharacterBounds()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JLabel.AccessibleJLabel;
+
+import java.awt.FontMetrics;
+import java.awt.Insets;
+import java.awt.Rectangle;
+
+import javax.accessibility.AccessibleText;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.SwingUtilities;
+import javax.swing.plaf.basic.BasicHTML;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Position;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the functionality of AccessibleJLabel.getCharacterBounds().
+ */
+public class getCharacterBounds implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testNoHTML(harness);
+ testHTML(harness);
+ }
+
+ /**
+ * For non-HTML labels the method returns null. Maybe this test is a little
+ * strict. Implementations could very well return something more reasonable
+ * here. However, the reference implementation does not.
+ */
+ private void testNoHTML(TestHarness h)
+ {
+ h.checkPoint("testNoHTML");
+ JLabel l = new JLabel("Hello World");
+ AccessibleText at = (AccessibleText) l.getAccessibleContext();
+ Rectangle b = at.getCharacterBounds(2);
+ h.check(b, null);
+ }
+
+ private void testHTML(TestHarness h)
+ {
+ h.checkPoint("testHTML");
+ JFrame f = new JFrame();
+ JLabel l = new JLabel("<html>Hello World</html>");
+ f.getContentPane().add(l);
+ f.pack();
+ f.setVisible(true);
+ l.setSize(100, 30);
+ AccessibleText at = (AccessibleText) l.getAccessibleContext();
+ // The HTML renderer is stored as client property.
+ View v = (View) l.getClientProperty(BasicHTML.propertyKey);
+ Rectangle r = getTextRectangle(l);
+ Rectangle expected = null;
+ try
+ {
+ expected = v.modelToView(2, r, Position.Bias.Forward).getBounds();
+ }
+ catch (BadLocationException ex)
+ {
+ h.debug(ex);
+ h.fail("Unexpected BadLocationException");
+ }
+ Rectangle b = at.getCharacterBounds(2);
+ h.check(b, expected);
+ f.dispose();
+ }
+
+ private Rectangle getTextRectangle(JLabel l)
+ {
+ Rectangle textR = new Rectangle();
+ Rectangle iconR = new Rectangle();
+ Insets i = l.getInsets();
+ int w = l.getWidth();
+ int h = l.getHeight();
+ Rectangle viewR = new Rectangle(i.left, i.top, w - i.left - i.right,
+ h - i.top - i.bottom);
+ FontMetrics fm = l.getFontMetrics(l.getFont());
+ SwingUtilities.layoutCompoundLabel(l, fm, l.getText(), l.getIcon(),
+ l.getVerticalAlignment(),
+ l.getHorizontalAlignment(),
+ l.getVerticalTextPosition(),
+ l.getHorizontalTextPosition(),
+ viewR, iconR, textR,
+ l.getIconTextGap());
+ return textR;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getIndexAtPoint.java b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getIndexAtPoint.java
new file mode 100644
index 00000000..d1a8cfb6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/AccessibleJLabel/getIndexAtPoint.java
@@ -0,0 +1,107 @@
+/* getIndexAtPointBounds.java -- Tests AccessibleJLabel.getIndexAtPoint()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JLabel.AccessibleJLabel;
+
+import java.awt.FontMetrics;
+import java.awt.Insets;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import javax.accessibility.AccessibleText;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.SwingUtilities;
+import javax.swing.plaf.basic.BasicHTML;
+import javax.swing.text.Position;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the functionality of AccessibleJLabel.getCharacterBounds().
+ */
+public class getIndexAtPoint implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testNoHTML(harness);
+ testHTML(harness);
+ }
+
+ /**
+ * For non-HTML labels the method returns -1. Maybe this test is a little
+ * strict. Implementations could very well return something more reasonable
+ * here. However, the reference implementation does not.
+ */
+ private void testNoHTML(TestHarness h)
+ {
+ h.checkPoint("testNoHTML");
+ JLabel l = new JLabel("Hello World");
+ AccessibleText at = (AccessibleText) l.getAccessibleContext();
+ int i = at.getIndexAtPoint(new Point(5, 5));
+ h.check(i, -1);
+ }
+
+ private void testHTML(TestHarness h)
+ {
+ h.checkPoint("testHTML");
+ JFrame f = new JFrame();
+ JLabel l = new JLabel("<html>Hello World</html>");
+ f.getContentPane().add(l);
+ f.pack();
+ f.setVisible(true);
+ l.setSize(100, 30);
+ AccessibleText at = (AccessibleText) l.getAccessibleContext();
+ // The HTML renderer is stored as client property.
+ View v = (View) l.getClientProperty(BasicHTML.propertyKey);
+ Rectangle r = getTextRectangle(l);
+ int expected = -1;
+ expected = v.viewToModel(5, 5, r, new Position.Bias[0]);
+ int i = at.getIndexAtPoint(new Point(5, 5));
+ h.check(i, expected);
+ f.dispose();
+ }
+
+ private Rectangle getTextRectangle(JLabel l)
+ {
+ Rectangle textR = new Rectangle();
+ Rectangle iconR = new Rectangle();
+ Insets i = l.getInsets();
+ int w = l.getWidth();
+ int h = l.getHeight();
+ Rectangle viewR = new Rectangle(i.left, i.top, w - i.left - i.right,
+ h - i.top - i.bottom);
+ FontMetrics fm = l.getFontMetrics(l.getFont());
+ SwingUtilities.layoutCompoundLabel(l, fm, l.getText(), l.getIcon(),
+ l.getVerticalAlignment(),
+ l.getHorizontalAlignment(),
+ l.getVerticalTextPosition(),
+ l.getHorizontalTextPosition(),
+ viewR, iconR, textR,
+ l.getIconTextGap());
+ return textR;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/CVS/Entries b/gnu/testlet/javax/swing/JLabel/CVS/Entries
new file mode 100644
index 00000000..5d3b2c62
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/CVS/Entries
@@ -0,0 +1,18 @@
+/Icon.java/1.2/Thu Jun 3 14:31:19 2004//
+/Mnemonic.java/1.2/Thu Jun 3 14:31:19 2004//
+/MyJLabel.java/1.2/Thu Jun 1 13:37:37 2006//
+/TestLabel.java/1.1/Tue Oct 18 15:10:05 2005//
+/constructor.java/1.3/Thu Nov 9 19:15:40 2006//
+/getAccessibleContext.java/1.1/Wed May 31 12:32:24 2006//
+/getActionMap.java/1.1/Thu Jun 22 16:08:45 2006//
+/getInputMap.java/1.2/Thu Jun 22 16:08:45 2006//
+/paramString.java/1.2/Wed May 21 13:30:45 2008//
+/setDisplayedMnemonic.java/1.3/Thu Jun 22 16:08:45 2006//
+/setDisplayedMnemonicIndex.java/1.2/Thu Jun 22 09:59:15 2006//
+/setFont.java/1.1/Thu Jun 22 16:08:45 2006//
+/setHorizontalAlignment.java/1.1/Thu Jun 22 16:08:45 2006//
+/setIconTextGap.java/1.1/Thu Jun 22 16:08:45 2006//
+/setLabelFor.java/1.1/Wed May 31 12:32:24 2006//
+/setText.java/1.2/Thu Jun 22 16:08:45 2006//
+/setVerticalAlignment.java/1.1/Thu Jun 22 16:08:45 2006//
+D
diff --git a/gnu/testlet/javax/swing/JLabel/CVS/Entries.Log b/gnu/testlet/javax/swing/JLabel/CVS/Entries.Log
new file mode 100644
index 00000000..1fd05b4c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJLabel////
diff --git a/gnu/testlet/javax/swing/JLabel/CVS/Repository b/gnu/testlet/javax/swing/JLabel/CVS/Repository
new file mode 100644
index 00000000..d77cd0a5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JLabel
diff --git a/gnu/testlet/javax/swing/JLabel/CVS/Root b/gnu/testlet/javax/swing/JLabel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JLabel/Icon.java b/gnu/testlet/javax/swing/JLabel/Icon.java
new file mode 100644
index 00000000..614aa2d7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/Icon.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.JLabel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.*;
+import javax.swing.*;
+
+/**
+ * These tests pass with the Sun JDK 1.4.1_03 on GNU/Linux IA-32.
+ */
+public class Icon implements Testlet {
+ public void test(TestHarness harness) {
+ MyIcon icon = new MyIcon();
+ JLabel l = new JLabel(icon);
+ harness.check(l.getIcon(), icon);
+ harness.check(l.getDisabledIcon(), null);
+ l.setIcon(icon);
+ harness.check(l.getIcon(), icon);
+ harness.check(l.getDisabledIcon(), null);
+
+ l = new JLabel();
+ Dimension base = l.getPreferredSize();
+ l.setIcon(icon);
+ Dimension one = l.getPreferredSize();
+ harness.check(one.width, base.width + icon.getIconWidth());
+
+ l = new JLabel("bla");
+ base = l.getPreferredSize();
+ l.setIcon(icon);
+ one = l.getPreferredSize();
+ harness.check(one.width, base.width + icon.getIconWidth() + l.getIconTextGap() );
+
+ l.setIconTextGap(100);
+ one = l.getPreferredSize();
+ harness.check(one.width, base.width + icon.getIconWidth() + 100 );
+ }
+
+ private static class MyIcon implements javax.swing.Icon {
+ private int painted = 0;
+ public int getIconHeight() {
+ return 10;
+ }
+ public int getIconWidth() {
+ return 20;
+ }
+ public void paintIcon(Component c, Graphics g, int x, int y) {
+ painted++;
+ }
+ public int getPainted() {
+ return painted;
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/Mnemonic.java b/gnu/testlet/javax/swing/JLabel/Mnemonic.java
new file mode 100644
index 00000000..662a4c40
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/Mnemonic.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.JLabel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JLabel;
+
+/**
+ * These tests pass with the Sun JDK 1.4.1_03 on GNU/Linux IA-32.
+ */
+public class Mnemonic implements Testlet {
+ public void test(TestHarness harness) {
+ JLabel l = new JLabel("lskdjnvmdsklzedfsdmnWK");
+ harness.check(l.getDisplayedMnemonic(), 0);
+ harness.check(l.getDisplayedMnemonicIndex(), -1);
+
+ l.setDisplayedMnemonic(java.awt.event.KeyEvent.VK_K);
+ harness.check(l.getDisplayedMnemonic(), java.awt.event.KeyEvent.VK_K);
+ harness.check(l.getDisplayedMnemonicIndex(), 2);
+
+ l.setDisplayedMnemonic(java.awt.event.KeyEvent.VK_Q);
+ harness.check(l.getDisplayedMnemonicIndex(), -1);
+
+ l.setDisplayedMnemonic(java.awt.event.KeyEvent.VK_W);
+ harness.check(l.getDisplayedMnemonicIndex(), 20);
+
+ l.setText("new text");
+ harness.check(l.getDisplayedMnemonicIndex(), 2);
+
+ l.setDisplayedMnemonicIndex(5);
+ // the following test is really un-intuitive... Is this a bug in Suns JVM?
+ harness.check(l.getDisplayedMnemonic(), java.awt.event.KeyEvent.VK_W); // unchanged
+ harness.check(l.getDisplayedMnemonicIndex(), 5);
+
+ l = new JLabel("new text");
+ l.setDisplayedMnemonicIndex(5);
+ harness.check(l.getDisplayedMnemonic(), 0);
+ harness.check(l.getDisplayedMnemonicIndex(), 5);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/MyJLabel.java b/gnu/testlet/javax/swing/JLabel/MyJLabel.java
new file mode 100644
index 00000000..fedb115c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/MyJLabel.java
@@ -0,0 +1,40 @@
+/* MyJLabel.java -- provides access to protected stuff in the JLabel class,
+ for testing purposes.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JLabel;
+
+import javax.swing.JLabel;
+
+public class MyJLabel extends JLabel
+{
+ public MyJLabel()
+ {
+ super();
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/TestLabel.java b/gnu/testlet/javax/swing/JLabel/TestLabel.java
new file mode 100644
index 00000000..bbdfda8f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/TestLabel.java
@@ -0,0 +1,60 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JLabel;
+
+import javax.swing.JLabel;
+
+/**
+ * A subclass of {@link javax.swing.JLabel} that enables to check if
+ * certain methods (like repaint() or revalidate()) are called correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+class TestLabel extends JLabel
+{
+ /**
+ * A flag indicating if repaint() has been called.
+ */
+ boolean repaintCalled;
+
+ /**
+ * A flag indicating if revalidate() has been called.
+ */
+ boolean revalidateCalled;
+
+ /**
+ * Performs the superclass repaint and sets the repaintCalled flag to true.
+ */
+ public void repaint()
+ {
+ repaintCalled = true;
+ super.repaint();
+ }
+
+ /**
+ * Performs the superclass revalidate and sets the revalidateCalled flag
+ * to true.
+ */
+ public void revalidate()
+ {
+ revalidateCalled = true;
+ super.revalidate();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/constructor.java b/gnu/testlet/javax/swing/JLabel/constructor.java
new file mode 100644
index 00000000..8099d676
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/constructor.java
@@ -0,0 +1,356 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+// 2006 Red Hat
+
+// 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.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.event.KeyEvent;
+import java.awt.image.BufferedImage;
+
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.SwingConstants;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Tests if the constructor sets the default values for the JLabel's properties
+ * correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testHorizontalAlignment(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // use this to check that the defaults are those for a Label
+ UIManager.put("Label.font", new Font("Dialog", Font.PLAIN, 21));
+ UIManager.put("Label.foreground", Color.green);
+ UIManager.put("Label.background", Color.yellow);
+
+ JLabel l = new JLabel();
+ harness.check(l.getFont(), new Font("Dialog", Font.PLAIN, 21));
+ harness.check(l.getForeground(), Color.green);
+ harness.check(l.getBackground(), Color.yellow);
+ harness.check(l.getAlignmentX(), 0.0F, "alignmentX");
+ harness.check(l.getAlignmentY(), 0.5F, "alignmentY");
+ harness.check(l.getVerticalAlignment(), SwingConstants.CENTER,
+ "verticalAlignment");
+ harness.check(l.getDisabledIcon(), null);
+ harness.check(l.getDisplayedMnemonic(), KeyEvent.VK_UNDEFINED);
+ harness.check(l.getDisplayedMnemonicIndex(), -1);
+ harness.check(l.getHorizontalTextPosition(), JLabel.TRAILING);
+ harness.check(l.getVerticalTextPosition(), JLabel.CENTER);
+ harness.check(l.getLabelFor(), null);
+ harness.check(l.getIconTextGap(), 4);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ JLabel label = new JLabel();
+ harness.check(label.getIcon(), null);
+ harness.check(label.getText(), "");
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ JLabel label = new JLabel(new ImageIcon());
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), null);
+
+ label = new JLabel(new ImageIcon
+ (new BufferedImage(16, 16, BufferedImage.TYPE_INT_BGR)));
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), null);
+
+ label = new JLabel((Icon) null);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), null);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ JLabel label = new JLabel(new ImageIcon(), 2);
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), null);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.LEFT);
+
+ label = new JLabel((Icon) null, 2);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), null);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.LEFT);
+
+ label = new JLabel(new ImageIcon(), 0);
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), null);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.CENTER);
+
+ boolean fail = false;
+ try
+ {
+ label = new JLabel(new ImageIcon(), -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ JLabel label = new JLabel("This is some text.");
+ harness.check(label.getIcon(), null);
+ harness.check(label.getText(), "This is some text.");
+
+ label = new JLabel("");
+ harness.check(label.getIcon(), null);
+ harness.check(label.getText(), "");
+
+ String text = null;
+ label = new JLabel(text);
+ harness.check(label.getIcon(), null);
+ harness.check(label.getText(), null);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ JLabel label = new JLabel("This is some text.", 11);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), "This is some text.");
+ harness.check(label.getHorizontalAlignment(), SwingConstants.TRAILING);
+
+ label = new JLabel("", 11);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), "");
+ harness.check(label.getHorizontalAlignment(), SwingConstants.TRAILING);
+
+ String text = null;
+ label = new JLabel(text, 0);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), null);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.CENTER);
+
+ boolean fail = false;
+ try
+ {
+ label = new JLabel("This is some text.", -2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ JLabel label = new JLabel("This is some text.", new ImageIcon(), 0);
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), "This is some text.");
+ harness.check(label.getHorizontalAlignment(), SwingConstants.CENTER);
+
+ label = new JLabel("", (Icon) null, 10);
+ harness.check(label.getIcon() == null);
+ harness.check(label.getText(), "");
+ harness.check(label.getHorizontalAlignment(), SwingConstants.LEADING);
+
+ String text = null;
+ label = new JLabel(text, new ImageIcon(), 11);
+ harness.check(label.getIcon() != null);
+ harness.check(label.getText(), null);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.TRAILING);
+
+ boolean fail = false;
+ try
+ {
+ label = new JLabel("This is some text.", new ImageIcon(), -4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ public void testHorizontalAlignment(TestHarness harness)
+ {
+ JLabel label = null;
+
+ boolean fail = false;
+ try
+ {
+ label = new JLabel("", -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ boolean pass = false;
+ try
+ {
+ label = new JLabel("", 0);
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.CENTER);
+
+ fail = false;
+ try
+ {
+ label = new JLabel("", 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ pass = false;
+ try
+ {
+ label = new JLabel("", 2);
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.LEFT);
+
+ fail = false;
+ try
+ {
+ label = new JLabel("", 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ pass = false;
+ try
+ {
+ label = new JLabel("", 4);
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.RIGHT);
+
+ fail = false;
+ try
+ {
+ label = new JLabel("", 5);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ fail = false;
+ try
+ {
+ label = new JLabel("", 7);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+
+ pass = false;
+ try
+ {
+ label = new JLabel("", 10);
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.LEADING);
+
+ pass = false;
+ try
+ {
+ label = new JLabel("", 11);
+ pass = true;
+ }
+ catch (IllegalArgumentException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ harness.check(label.getHorizontalAlignment(), SwingConstants.TRAILING);
+
+ fail = false;
+ try
+ {
+ label = new JLabel("", 13);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/getAccessibleContext.java b/gnu/testlet/javax/swing/JLabel/getAccessibleContext.java
new file mode 100644
index 00000000..b2ed97bc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/getAccessibleContext.java
@@ -0,0 +1,44 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JLabel;
+
+public class getAccessibleContext implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ AccessibleContext ac = label.getAccessibleContext();
+ harness.check(ac.getAccessibleRole(), AccessibleRole.LABEL);
+ harness.check(ac.getAccessibleName(), "ABC");
+ harness.check(ac.getAccessibleDescription(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/getActionMap.java b/gnu/testlet/javax/swing/JLabel/getActionMap.java
new file mode 100644
index 00000000..b91fdc40
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/getActionMap.java
@@ -0,0 +1,61 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ActionMap;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // this is the original version of the test - it shows no actions for
+ // a regular label...
+ JLabel label = new JLabel("XYZ");
+ ActionMap m = label.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ harness.check(mp, null);
+
+ // but then I remembered that when a label has a mnemonic and target
+ // component, you can get the focus for the target component via the
+ // keyboard
+ JLabel label2 = new JLabel("ABC");
+ JButton button = new JButton("Target");
+ label2.setLabelFor(button);
+ label2.setDisplayedMnemonic('A');
+
+ m = label2.getActionMap();
+ harness.check(m.keys(), null);
+ mp = m.getParent();
+ harness.check(mp.size(), 2);
+ harness.check(mp.get("press") != null);
+ harness.check(mp.get("release") != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/getInputMap.java b/gnu/testlet/javax/swing/JLabel/getInputMap.java
new file mode 100644
index 00000000..81adad19
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/getInputMap.java
@@ -0,0 +1,93 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JLabel - this is really testing
+ * the setup performed by BasicLabelUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JLabel label = new JLabel("Test");
+ InputMap m1 = label.getInputMap();
+ InputMap m2 = label.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JLabel label = new JLabel("Test");
+ InputMap m1 = label.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = label.getInputMap(
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+
+ // now make a label that is the label for a component
+ JLabel label2 = new JLabel("Test");
+ JButton button = new JButton("Target");
+ label2.setLabelFor(button);
+ label2.setDisplayedMnemonic('A');
+
+ m1 = label2.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ m1p = m1.getParent();
+ harness.check(m1p, null);
+ m2 = label2.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ m3 = label2.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ InputMap m3p = m3.getParent();
+ harness.check(m3p.get(KeyStroke.getKeyStroke("alt pressed A")), "press");
+ label2.setDisplayedMnemonic('B');
+ harness.check(m3p.get(KeyStroke.getKeyStroke("alt pressed B")), "press");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/paramString.java b/gnu/testlet/javax/swing/JLabel/paramString.java
new file mode 100644
index 00000000..268742e3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/paramString.java
@@ -0,0 +1,38 @@
+/* paramString.java -- some checks for the paramString() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyJLabel
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJLabel label = new MyJLabel();
+ harness.check(label.paramString().endsWith(",defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER"));
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java b/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java
new file mode 100644
index 00000000..9ff90df0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonic.java
@@ -0,0 +1,157 @@
+/* setDisplayedMnemonic.java -- some checks for the setDisplayedMnemonic()
+ methods in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.KeyEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.KeyStroke;
+
+public class setDisplayedMnemonic implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ int displayedMnemonicWhenEventFired;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ if (e.getPropertyName().equals("displayedMnemonic")
+ && e.getSource() instanceof JLabel)
+ {
+ JLabel label = (JLabel) e.getSource();
+ displayedMnemonicWhenEventFired = label.getDisplayedMnemonic();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ testKeyMap(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(char)");
+ JLabel label = new JLabel("Abc Def");
+ label.addPropertyChangeListener(this);
+ label.setDisplayedMnemonic('d');
+ harness.check(label.getDisplayedMnemonic(), 68);
+ harness.check(label.getDisplayedMnemonicIndex(), 4);
+ harness.check(events.size(), 2);
+ harness.check(displayedMnemonicWhenEventFired, 68);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "displayedMnemonic");
+ harness.check(e0.getOldValue(), new Integer(0));
+ harness.check(e0.getNewValue(), new Integer(68));
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(-1));
+ harness.check(e1.getNewValue(), new Integer(4));
+
+ // try a character that isn't in the text
+ events.clear();
+ label.setDisplayedMnemonic('z');
+ harness.check(label.getDisplayedMnemonic(), 90);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ harness.check(events.size(), 2);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "displayedMnemonic");
+ harness.check(e0.getOldValue(), new Integer(68));
+ harness.check(e0.getNewValue(), new Integer(90));
+ e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(4));
+ harness.check(e1.getNewValue(), new Integer(-1));
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ events.clear();
+ JLabel label = new JLabel("Abc Def");
+ label.addPropertyChangeListener(this);
+ label.setDisplayedMnemonic(68);
+ harness.check(label.getDisplayedMnemonic(), 68);
+ harness.check(label.getDisplayedMnemonicIndex(), 4);
+ harness.check(events.size(), 2);
+ harness.check(displayedMnemonicWhenEventFired, 68);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "displayedMnemonic");
+ harness.check(e0.getOldValue(), new Integer(0));
+ harness.check(e0.getNewValue(), new Integer(68));
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(-1));
+ harness.check(e1.getNewValue(), new Integer(4));
+
+ // try a character that isn't in the text
+ events.clear();
+ label.setDisplayedMnemonic(90);
+ harness.check(label.getDisplayedMnemonic(), 90);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ harness.check(events.size(), 2);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "displayedMnemonic");
+ harness.check(e0.getOldValue(), new Integer(68));
+ harness.check(e0.getNewValue(), new Integer(90));
+ e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(4));
+ harness.check(e1.getNewValue(), new Integer(-1));
+ }
+
+ public void testKeyMap(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ label.setDisplayedMnemonic('B');
+ InputMap m = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m.get(KeyStroke.getKeyStroke(KeyEvent.VK_B,
+ KeyEvent.ALT_DOWN_MASK)), null);
+ label.setLabelFor(new JButton());
+ m = label.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m.get(KeyStroke.getKeyStroke(KeyEvent.VK_B,
+ KeyEvent.ALT_DOWN_MASK)), "press");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java b/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java
new file mode 100644
index 00000000..a55b7663
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setDisplayedMnemonicIndex.java
@@ -0,0 +1,139 @@
+/* setDisplayedMnemonicIndex.java -- some checks for the
+ setDisplayedMnemonicIndex() method.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setDisplayedMnemonicIndex
+ implements Testlet , PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ int mnemonicIndexWhenEventFired = -1;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ if (e.getPropertyName().equals("displayedMnemonicIndex")
+ && e.getSource() instanceof JLabel)
+ {
+ JLabel l = (JLabel) e.getSource();
+ mnemonicIndexWhenEventFired = l.getDisplayedMnemonicIndex();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABCDEFG");
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ label.addPropertyChangeListener(this);
+ label.setDisplayedMnemonicIndex(3);
+ harness.check(label.getDisplayedMnemonicIndex(), 3);
+ harness.check(label.getDisplayedMnemonic(), 0);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), label);
+ harness.check(e.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e.getOldValue(), new Integer(-1));
+ harness.check(e.getNewValue(), new Integer(3));
+ harness.check(mnemonicIndexWhenEventFired, 3); // that is, value set
+ // before event is fired
+
+ // setting the same value fires no event
+ events.clear();
+ label.setDisplayedMnemonicIndex(3);
+ harness.check(events.size(), 0);
+
+ // setting the index to -1 is OK
+ events.clear();
+ label.setDisplayedMnemonicIndex(-1);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), label);
+ harness.check(e.getOldValue(), new Integer(3));
+ harness.check(e.getNewValue(), new Integer(-1));
+
+ // setting the index to -2 should generate an IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ label.setDisplayedMnemonicIndex(-2);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // setting the index to the length of the label text should generate an
+ // IllegalArgumentException
+ pass = false;
+ try
+ {
+ label.setDisplayedMnemonicIndex(label.getText().length());
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // setting the index to zero or greater when the text is null should
+ // generate an IllegalArgumentException
+ label.setText(null);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ pass = false;
+ try
+ {
+ label.setDisplayedMnemonicIndex(0);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ label.setText("");
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ pass = false;
+ try
+ {
+ label.setDisplayedMnemonicIndex(0);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setFont.java b/gnu/testlet/javax/swing/JLabel/setFont.java
new file mode 100644
index 00000000..f326e353
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setFont.java
@@ -0,0 +1,70 @@
+/* setFont.java -- some checks for the setFont() method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setFont implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ Font f = new Font("Dialog", Font.PLAIN, 15);
+ label.setFont(f);
+ harness.check(label.getFont(), f);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "font");
+ harness.check(e0.getNewValue(), f);
+
+ // try null
+ events.clear();
+ label.setFont(null);
+ harness.check(label.getFont(), null);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "font");
+ harness.check(e0.getOldValue(), f);
+ harness.check(e0.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java b/gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java
new file mode 100644
index 00000000..3e295895
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setHorizontalAlignment.java
@@ -0,0 +1,72 @@
+/* setHorizontalAlignment.java -- some checks for the setHorizontalAlignment()
+ method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setHorizontalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ harness.check(label.getHorizontalAlignment(), JLabel.LEADING);
+ label.addPropertyChangeListener(this);
+ label.setHorizontalAlignment(JLabel.RIGHT);
+ harness.check(label.getHorizontalAlignment(), JLabel.RIGHT);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "horizontalAlignment");
+ harness.check(e0.getOldValue(), new Integer(JLabel.LEADING));
+ harness.check(e0.getNewValue(), new Integer(JLabel.RIGHT));
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ label.setHorizontalAlignment(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setIconTextGap.java b/gnu/testlet/javax/swing/JLabel/setIconTextGap.java
new file mode 100644
index 00000000..d9d388a5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setIconTextGap.java
@@ -0,0 +1,64 @@
+/* setIconTextGap.java -- some checks for the setIconTextGap() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setIconTextGap implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+ int iconTextGapAtEventTime;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ JLabel label = (JLabel) e.getSource();
+ // recording the following tells us whether the event is fired before or
+ // after the field is updated
+ iconTextGapAtEventTime = label.getIconTextGap();
+ }
+
+ public void test(TestHarness harness) {
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ label.setIconTextGap(7);
+ harness.check(label.getIconTextGap(), 7);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), label);
+ harness.check(e.getPropertyName(), "iconTextGap");
+ harness.check(e.getOldValue(), new Integer(0));
+ harness.check(e.getNewValue(), new Integer(7));
+ harness.check(iconTextGapAtEventTime, 7);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setLabelFor.java b/gnu/testlet/javax/swing/JLabel/setLabelFor.java
new file mode 100644
index 00000000..4574b0e1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setLabelFor.java
@@ -0,0 +1,81 @@
+/* setLabelFor.java -- some checks for the setLabelFor() method in the
+ JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+public class setLabelFor implements Testlet, PropertyChangeListener
+{
+ List events = new ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JButton b = new JButton("ABC");
+ JLabel l = new JLabel("XYZ");
+ b.addPropertyChangeListener(this);
+ l.addPropertyChangeListener(this);
+ l.setLabelFor(b);
+ harness.check(l.getLabelFor(), b);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent pce1 = (PropertyChangeEvent) events.get(0);
+ harness.check(pce1.getSource(), l);
+ harness.check(pce1.getPropertyName(), "labelFor");
+ harness.check(pce1.getOldValue(), null);
+ harness.check(pce1.getNewValue(), b);
+
+ PropertyChangeEvent pce2 = (PropertyChangeEvent) events.get(1);
+ harness.check(pce2.getSource(), b);
+ harness.check(pce2.getPropertyName(), "labeledBy");
+ harness.check(pce2.getOldValue(), null);
+ harness.check(pce2.getNewValue(), l);
+
+ harness.check(b.getClientProperty("labeledBy"), l);
+
+ // setting the same component should generate no events
+ events.clear();
+ l.setLabelFor(b);
+ harness.check(events.size(), 0);
+
+ // try null
+ events.clear();
+ l.setLabelFor(null);
+ harness.check(events.size(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setText.java b/gnu/testlet/javax/swing/JLabel/setText.java
new file mode 100644
index 00000000..cbd9db7d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setText.java
@@ -0,0 +1,199 @@
+// Tags: JDK1.2
+// Uses: TestLabel
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setText implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testGeneralWithMnemonic(harness);
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+
+ // simple test
+ JLabel label = new JLabel("ABC");
+ label.addPropertyChangeListener(this);
+ label.setText("XYZ");
+ harness.check(label.getText(), "XYZ");
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "ABC");
+ harness.check(e0.getNewValue(), "XYZ");
+
+ // setting the same again should generate no event
+ events.clear();
+ label.setText("XYZ");
+ harness.check(events.size(), 0);
+
+ // check null
+ events.clear();
+ label.setText(null);
+ harness.check(label.getText(), null);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "XYZ");
+ harness.check(e0.getNewValue(), null);
+
+ // setting the same again should generate no event
+ events.clear();
+ label.setText(null);
+ harness.check(events.size(), 0);
+ }
+
+ public void testGeneralWithMnemonic(TestHarness harness)
+ {
+ harness.checkPoint("testGeneralWithMnemonic()");
+
+ // simple test
+ JLabel label = new JLabel("ABC");
+ label.setDisplayedMnemonic('C');
+ harness.check(label.getDisplayedMnemonicIndex(), 2);
+ events.clear();
+ label.addPropertyChangeListener(this);
+ label.setText("CAB");
+ harness.check(label.getText(), "CAB");
+ harness.check(label.getDisplayedMnemonicIndex(), 0);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "ABC");
+ harness.check(e0.getNewValue(), "CAB");
+
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ if (e1.getPropertyName().equals("html"))
+ e1 = (PropertyChangeEvent) events.get(2);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(2));
+ harness.check(e1.getNewValue(), new Integer(0));
+
+ // setting the same again should generate no event
+ events.clear();
+ label.setText("CAB");
+ harness.check(events.size(), 0);
+
+ // check null
+ events.clear();
+ label.setText(null);
+ harness.check(label.getText(), null);
+ harness.check(label.getDisplayedMnemonicIndex(), -1);
+ harness.check(events.size(), 2);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "text");
+ harness.check(e0.getOldValue(), "CAB");
+ harness.check(e0.getNewValue(), null);
+
+ e1 = (PropertyChangeEvent) events.get(1);
+ if (e1.getPropertyName().equals("html"))
+ e1 = (PropertyChangeEvent) events.get(2);
+ harness.check(e1.getSource(), label);
+ harness.check(e1.getPropertyName(), "displayedMnemonicIndex");
+ harness.check(e1.getOldValue(), new Integer(0));
+ harness.check(e1.getNewValue(), new Integer(-1));
+
+ }
+
+ /**
+ * Tests if setText triggers a repaint. setText should trigger a
+ * repaint() call whenever the actual value of the property changes.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ TestLabel c = new TestLabel();
+ // Set to null, so that we know the state.
+ c.setText(null);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setText("Test1");
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setText("Test1");
+ harness.check(c.repaintCalled, false);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setText("Text2");
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setText("Text2");
+ harness.check(c.repaintCalled, false);
+ }
+
+ /**
+ * Tests if setEnabled triggers a revalidate.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ TestLabel c = new TestLabel();
+ // Set to false, so that we know the state.
+ c.setText(null);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setText("Test1");
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setText("Test1");
+ harness.check(c.revalidateCalled, false);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setText("Test2");
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setText("Test2");
+ harness.check(c.revalidateCalled, false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java b/gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java
new file mode 100644
index 00000000..10305cc4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLabel/setVerticalAlignment.java
@@ -0,0 +1,72 @@
+/* setVerticalAlignment.java -- some checks for the setVerticalAlignment()
+ method in the JLabel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLabel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JLabel;
+
+public class setVerticalAlignment implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JLabel label = new JLabel("ABC");
+ harness.check(label.getVerticalAlignment(), JLabel.CENTER);
+ label.addPropertyChangeListener(this);
+ label.setVerticalAlignment(JLabel.TOP);
+ harness.check(label.getVerticalAlignment(), JLabel.TOP);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), label);
+ harness.check(e0.getPropertyName(), "verticalAlignment");
+ harness.check(e0.getOldValue(), new Integer(JLabel.CENTER));
+ harness.check(e0.getNewValue(), new Integer(JLabel.TOP));
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ label.setVerticalAlignment(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLayeredPane/CVS/Entries b/gnu/testlet/javax/swing/JLayeredPane/CVS/Entries
new file mode 100644
index 00000000..3dd5102b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/CVS/Entries
@@ -0,0 +1,6 @@
+/addImpl.java/1.3/Wed Feb 1 10:42:45 2006//
+/defaultLayoutManager.java/1.2/Tue Sep 27 20:16:23 2005//
+/getComponentsInLayer.java/1.1/Tue Nov 8 12:12:05 2005//
+/moveToFront.java/1.1/Sat Feb 4 10:58:56 2006//
+/setPosition.java/1.1/Sat Feb 4 10:58:56 2006//
+D
diff --git a/gnu/testlet/javax/swing/JLayeredPane/CVS/Repository b/gnu/testlet/javax/swing/JLayeredPane/CVS/Repository
new file mode 100644
index 00000000..d6f35de3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JLayeredPane
diff --git a/gnu/testlet/javax/swing/JLayeredPane/CVS/Root b/gnu/testlet/javax/swing/JLayeredPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JLayeredPane/addImpl.java b/gnu/testlet/javax/swing/JLayeredPane/addImpl.java
new file mode 100644
index 00000000..fa3f3413
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/addImpl.java
@@ -0,0 +1,112 @@
+/* addImpl.java -- Tests if addImpl in JLayeredPane works correctly
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLayeredPane;
+
+import javax.swing.JLayeredPane;
+import javax.swing.JPanel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if addImpl in JLayeredPane works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class addImpl implements Testlet
+{
+
+ /**
+ * The entry point of this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testAddSameLayer(harness);
+ testAddDifferentLayers(harness);
+ testAddZeroPosition(harness);
+ }
+
+ /**
+ * Tests the addition of components into the same layer with no position
+ * specified.
+ *
+ * @param h the test harness to use
+ */
+ private void testAddSameLayer(TestHarness h)
+ {
+ JLayeredPane l = new JLayeredPane();
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ l.add(p1, JLayeredPane.FRAME_CONTENT_LAYER);
+ l.add(p2, JLayeredPane.FRAME_CONTENT_LAYER);
+ l.add(p3, JLayeredPane.FRAME_CONTENT_LAYER);
+ h.check(l.getComponent(0), p1);
+ h.check(l.getComponent(1), p2);
+ h.check(l.getComponent(2), p3);
+ }
+
+ /**
+ * Tests the addition of 3 components into different layers with -1
+ * positions.
+ *
+ * @param h the test harness to use
+ */
+ private void testAddDifferentLayers(TestHarness h)
+ {
+ JLayeredPane l = new JLayeredPane();
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ l.add(p1, new Integer(0));
+ l.add(p2, new Integer(1));
+ l.add(p3, new Integer(2));
+ h.check(l.getComponent(0), p3);
+ h.check(l.getComponent(1), p2);
+ h.check(l.getComponent(2), p1);
+ }
+
+ /**
+ * Tests the addition of 3 components into the same layer and with a position
+ * argument of 0. This should add each component as the top component in
+ * that layer.
+ *
+ * @param h the test harness to use
+ */
+ private void testAddZeroPosition(TestHarness h)
+ {
+ JLayeredPane l = new JLayeredPane();
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ l.add(p1, JLayeredPane.FRAME_CONTENT_LAYER, 0);
+ l.add(p2, JLayeredPane.FRAME_CONTENT_LAYER, 0);
+ l.add(p3, JLayeredPane.FRAME_CONTENT_LAYER, 0);
+ h.check(l.getComponent(0), p3);
+ h.check(l.getComponent(1), p2);
+ h.check(l.getComponent(2), p1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java b/gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java
new file mode 100644
index 00000000..e19640cf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/defaultLayoutManager.java
@@ -0,0 +1,45 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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.javax.swing.JLayeredPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JLayeredPane;
+
+/**
+ * <p>This tests whether setDefaultCloseOperation() accepts all
+ * kinds of values whether they are senseful or not.</p>
+ *
+ * <p>This triggered GNU Classpath bug #12205.</p>
+ *
+ * <p>TODO: One could make a graphical test for this. For invalid
+ * values the behavior should be like DO_NOTHING_ON_CLOSE</p>
+ */
+public class defaultLayoutManager implements Testlet {
+
+ public void test(TestHarness harness) {
+ JLayeredPane lp = new JLayeredPane();
+ harness.check (lp.getLayout(), null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JLayeredPane/getComponentsInLayer.java b/gnu/testlet/javax/swing/JLayeredPane/getComponentsInLayer.java
new file mode 100644
index 00000000..ae0e4284
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/getComponentsInLayer.java
@@ -0,0 +1,74 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JLayeredPane;
+
+import javax.swing.JLabel;
+import javax.swing.JLayeredPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the method getComponentsInLayer works as expected.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getComponentsInLayer implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testUnknownLayer(harness);
+ }
+
+ /**
+ * Checks what this method returns for a layer that is not in the
+ * JLayeredPane. The method should always return an empty Component[] for
+ * all unknown layers (even with negative layer numbers).
+ *
+ * @param harness the test harness to use
+ */
+ private void testUnknownLayer(TestHarness harness)
+ {
+ harness.checkPoint("unknownLayer");
+ JLayeredPane l = new JLayeredPane();
+ // We add one component to layer 1 and one to layer 3 and check what
+ // happens when we request the components in layer -1 (negative), 0
+ // (positive and less then the minimum layer), 2 (between the layers),
+ // 4 (greater than the maximum layer).
+ JLabel l1 = new JLabel("Hello");
+ l.setLayer(l1, 1);
+ l.add(l1);
+ JLabel l2 = new JLabel("World");
+ l.setLayer(l2, 3);
+ l.add(l2);
+ harness.check(l.getComponentsInLayer(-1).length, 0);
+ harness.check(l.getComponentsInLayer(-0).length, 0);
+ harness.check(l.getComponentsInLayer(-2).length, 0);
+ harness.check(l.getComponentsInLayer(-4).length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLayeredPane/moveToFront.java b/gnu/testlet/javax/swing/JLayeredPane/moveToFront.java
new file mode 100644
index 00000000..35b31a90
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/moveToFront.java
@@ -0,0 +1,70 @@
+/* moveToFront.java -- Checks the moveToFront method in JLayeredPane
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JLayeredPane;
+
+import javax.swing.JLayeredPane;
+import javax.swing.JPanel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the moveToFront method in JLayeredPane.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class moveToFront implements Testlet
+{
+
+ /**
+ * Starts the test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testSimple(harness);
+ }
+
+ /**
+ * A rather simple test for this method.
+ *
+ * @param harness the test harness to use
+ */
+ private void testSimple(TestHarness harness)
+ {
+ harness.checkPoint("testSimple");
+ JLayeredPane l = new JLayeredPane();
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ l.add(p1);
+ l.add(p2);
+ l.add(p3);
+ l.moveToFront(p2);
+ harness.check(l.getComponent(0), p2);
+ harness.check(l.getComponent(1), p1);
+ harness.check(l.getComponent(2), p3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JLayeredPane/setPosition.java b/gnu/testlet/javax/swing/JLayeredPane/setPosition.java
new file mode 100644
index 00000000..00c401d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JLayeredPane/setPosition.java
@@ -0,0 +1,88 @@
+/* setPosition.java -- Checks the setPosition method in JLayeredPane
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// This is tagged as 1.5 because it checks behaviour that is only present
+// since JDK1.5. In previous implementations the JLayeredPane had to
+// add/remove components to the container when changing it's position. Starting
+// with JDK1.5 this is no longer necessary because of
+// Container.setComponentZOrder().
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JLayeredPane;
+
+import java.awt.Component;
+
+import javax.swing.JLayeredPane;
+import javax.swing.JPanel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setPosition implements Testlet
+{
+
+ /**
+ * Indicates if addImpl() has been called.
+ */
+ boolean addImplCalled;
+
+ /**
+ * Overridden to be able to detect if addImpl should be called.
+ */
+ class TestLayeredPane extends JLayeredPane
+ {
+ protected void addImpl(Component comp, Object constraint, int index)
+ {
+ super.addImpl(comp, constraint, index);
+ addImplCalled = true;
+ }
+ }
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testAddImpl(harness);
+ }
+
+ /**
+ * This adds some components to the layered pane, and checks if a call
+ * to setPosition is allowed to call addImpl.
+ *
+ * @param h the test harness to use
+ */
+ private void testAddImpl(TestHarness h)
+ {
+ TestLayeredPane l = new TestLayeredPane();
+ JPanel p1 = new JPanel();
+ JPanel p2 = new JPanel();
+ JPanel p3 = new JPanel();
+ l.add(p1);
+ l.add(p2);
+ l.add(p3);
+ addImplCalled = false;
+ l.setPosition(p2, 0);
+ h.check(addImplCalled, false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Entries b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Entries
new file mode 100644
index 00000000..7355e928
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Entries
@@ -0,0 +1,16 @@
+/getAccessibleRole.java/1.1/Tue Oct 18 15:16:26 2005//
+/getAccessibleStateSet.java/1.1/Tue Oct 18 15:16:26 2005//
+/getBackground.java/1.1/Tue Oct 18 15:16:26 2005//
+/getCursor.java/1.1/Tue Oct 18 15:16:26 2005//
+/getFont.java/1.2/Sat Jan 28 22:40:14 2006//
+/getForeground.java/1.1/Tue Oct 18 15:16:26 2005//
+/isEnabled.java/1.1/Tue Oct 18 15:16:26 2005//
+/isFocusTraversable.java/1.1/Tue Oct 18 15:16:26 2005//
+/isShowing.java/1.1/Tue Oct 18 15:16:26 2005//
+/isVisible.java/1.1/Tue Oct 18 15:16:26 2005//
+/setBackground.java/1.1/Tue Oct 18 15:16:26 2005//
+/setCursor.java/1.1/Tue Oct 18 15:16:26 2005//
+/setEnabled.java/1.1/Tue Oct 18 15:16:26 2005//
+/setFont.java/1.1/Tue Oct 18 15:16:26 2005//
+/setForeground.java/1.1/Tue Oct 18 15:16:26 2005//
+D
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Repository b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Repository
new file mode 100644
index 00000000..e8874c1c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Root b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleRole.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleRole.java
new file mode 100644
index 00000000..72c9f59f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleRole.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+public class getAccessibleRole implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleContext child = (AccessibleContext) al.getAccessibleChild(0);
+ harness.check(child.getAccessibleRole(), AccessibleRole.LABEL);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleStateSet.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleStateSet.java
new file mode 100644
index 00000000..333f7503
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getAccessibleStateSet.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+public class getAccessibleStateSet implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleContext child = (AccessibleContext) al.getAccessibleChild(0);
+ AccessibleComponent childC = (AccessibleComponent) child;
+ AccessibleStateSet states;
+ // We test the visible state in isVisible.
+ // We test the showing state in isShowing.
+ states = child.getAccessibleStateSet();
+ harness.check(states.contains(AccessibleState.TRANSIENT));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getBackground.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getBackground.java
new file mode 100644
index 00000000..249e3e60
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getBackground.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Color;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the method getBackground works correctly. This should return the
+ * background color of the actual list, since the background cannot be set on
+ * the list children individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getBackground implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ l.setBackground(Color.RED);
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ harness.check(child.getBackground(), Color.RED);
+ l.setBackground(Color.GREEN);
+ harness.check(child.getBackground(), Color.GREEN);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getCursor.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getCursor.java
new file mode 100644
index 00000000..cf9eef8d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getCursor.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Cursor;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the method getCursor works correctly. This should return the
+ * cursor set by setCursor, independent of the JList's cursor setting.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getCursor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ Cursor cursor1 = Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
+ Cursor cursor2 = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
+ l.setCursor(cursor1);
+ harness.check(l.getCursor(), cursor1);
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ harness.check(child.getCursor(), Cursor.getDefaultCursor());
+ l.setCursor(cursor2);
+ harness.check(child.getCursor(), Cursor.getDefaultCursor());
+
+ // Try if it reacts to setCursor().
+ child.setCursor(cursor1);
+ harness.check(child.getCursor(), cursor1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java
new file mode 100644
index 00000000..acdfd3c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getFont.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Font;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the method getFont works correctly. This should return the
+ * font of the actual list, since the background cannot be set on
+ * the list children individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getFont implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ Font font1 = new Font("Dialog", Font.PLAIN, 16);
+ Font font2 = new Font("Dialog", Font.BOLD, 12);
+ l.setFont(font1);
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ harness.check(child.getFont(), font1);
+ l.setFont(font2);
+ harness.check(child.getFont(), font2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getForeground.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getForeground.java
new file mode 100644
index 00000000..6cca0382
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/getForeground.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Color;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the method getForeground works correctly. This should return the
+ * foreground color of the actual list, since the foreground cannot be set on
+ * the list children individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getForeground implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ l.setForeground(Color.RED);
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ harness.check(child.getForeground(), Color.RED);
+ l.setForeground(Color.GREEN);
+ harness.check(child.getForeground(), Color.GREEN);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isEnabled.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isEnabled.java
new file mode 100644
index 00000000..97b5e945
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isEnabled.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the method isEnabled works correctly. This method should return
+ * the value of the enabled flag of the parent list.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class isEnabled implements Testlet
+{
+
+ /**
+ * Starts the test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ l.setEnabled(true);
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ harness.check(child.isEnabled(), true);
+ l.setEnabled(false);
+ harness.check(child.isEnabled(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isFocusTraversable.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isFocusTraversable.java
new file mode 100644
index 00000000..d0ab0ff2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isFocusTraversable.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+public class isFocusTraversable implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ l.setFocusable(true);
+ harness.check(child.isFocusTraversable(), true);
+ l.setFocusable(false);
+ harness.check(child.isFocusTraversable(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isShowing.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isShowing.java
new file mode 100644
index 00000000..cf92e394
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isShowing.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the isShowing method works correctly. A list child is
+ * showing if it is visible and if it's parent JList is showing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class isShowing implements Testlet
+{
+
+ /**
+ * Overridden to provide customized isShowing method. This is used to
+ * check if the isShowing method of AccessibleJListChild forwards to
+ * the JList or not.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class MyTestList extends TestList
+ {
+ boolean showing;
+ int first;
+ int last;
+
+ /**
+ * Creates a new instance of MyTestList.
+ *
+ * @param items some test items
+ */
+ MyTestList(Object[] items)
+ {
+ super(items);
+ }
+ public boolean isShowing()
+ {
+ return showing;
+ }
+ public int getLastVisibleIndex()
+ {
+ return last;
+ }
+ public int getFirstVisibleIndex()
+ {
+ return first;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ MyTestList l = new MyTestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ AccessibleContext ctx = (AccessibleContext) child;
+ AccessibleStateSet states;
+ l.first = 0;
+ l.last = 0;
+ l.showing = true;
+ harness.check(child.isShowing(), true);
+ states = ctx.getAccessibleStateSet();
+ harness.check(states.contains(AccessibleState.SHOWING));
+ l.showing = false;
+ harness.check(child.isShowing(), false);
+ states = ctx.getAccessibleStateSet();
+ harness.check(!states.contains(AccessibleState.SHOWING));
+
+ // Make list child invisible. Should make isShowing false in all cases.
+ l.first = 1;
+ l.last = 1;
+ l.showing = true;
+ harness.check(child.isShowing(), false);
+ states = ctx.getAccessibleStateSet();
+ harness.check(!states.contains(AccessibleState.SHOWING));
+ l.showing = false;
+ harness.check(child.isShowing(), false);
+ states = ctx.getAccessibleStateSet();
+ harness.check(!states.contains(AccessibleState.SHOWING));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isVisible.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isVisible.java
new file mode 100644
index 00000000..691cb133
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/isVisible.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the isVisible method works correctly. The value of
+ * isVisible depends on the values of JList.getFirstVisibleIndex and
+ * JList.getLastVisibleIndex.
+ *
+ * Additionally we check the accessible state set, if it reflects the visible
+ * state.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class isVisible implements Testlet
+{
+
+ /**
+ * Overridden to provide customized isVisible method. This is used to
+ * check if the isVisible method of AccessibleJListChild forwards to
+ * the JList or not.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class MyTestList extends TestList
+ {
+ boolean visible;
+ int first;
+ int last;
+
+ /**
+ * Creates a new instance of MyTestList.
+ *
+ * @param items some test items
+ */
+ MyTestList(Object[] items)
+ {
+ super(items);
+ }
+ public boolean isVisible()
+ {
+ return visible;
+ }
+ public int getLastVisibleIndex()
+ {
+ return last;
+ }
+ public int getFirstVisibleIndex()
+ {
+ return first;
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ MyTestList l = new MyTestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ l.visible = true;
+ harness.check(child.isVisible(), true);
+ l.visible = false;
+ harness.check(child.isVisible(), true);
+ harness.check(l.isVisible(), false);
+
+ // The above test show that isVisible is independent from the parent JList.
+ // Check if this reacts to child.setVisible() (It does not).
+ child.setVisible(true);
+ harness.check(child.isVisible(), true);
+ child.setVisible(false);
+ harness.check(child.isVisible(), true);
+
+ // The only thing left is that isVisible depends on the values
+ // of JList.getFirstVisibleIndex and JList.getLastVisibleIndex
+ AccessibleContext ctx = (AccessibleContext) child;
+ AccessibleStateSet states;
+ l.first = 0;
+ l.last = 0;
+ harness.check(child.isVisible(), true);
+ states = ctx.getAccessibleStateSet();
+ harness.check(states.contains(AccessibleState.VISIBLE));
+ l.first = 1;
+ l.last = 1;
+ harness.check(child.isVisible(), false);
+ states = ctx.getAccessibleStateSet();
+ harness.check(!states.contains(AccessibleState.VISIBLE));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setBackground.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setBackground.java
new file mode 100644
index 00000000..78494d97
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setBackground.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Color;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the setBackground method works correctly. This method must not have
+ * any effect, since the background color cannot be set for list children
+ * individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setBackground implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ Color listBackground = l.getBackground();
+ child.setBackground(Color.RED);
+ harness.check(l.getBackground(), listBackground);
+ child.setBackground(Color.GREEN);
+ harness.check(l.getBackground(), listBackground);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setCursor.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setCursor.java
new file mode 100644
index 00000000..e9599e7f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setCursor.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Cursor;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the setCursor method works correctly. This method should store the
+ * cursor independent of the actual JList.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setCursor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ Cursor cursor = l.getCursor();
+ child.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
+ harness.check(l.getCursor(), cursor);
+ harness.check(child.getCursor(),
+ Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
+ child.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+ harness.check(l.getCursor(), cursor);
+ harness.check(child.getCursor(),
+ Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setEnabled.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setEnabled.java
new file mode 100644
index 00000000..8fa54be9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setEnabled.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the setEnabled method works correctly. This method must not have
+ * any effect, since the enabled flag cannot be set for list children
+ * individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setEnabled implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ boolean enabled = l.isEnabled();
+ child.setEnabled(false);
+ harness.check(l.isEnabled(), enabled);
+ child.setEnabled(true);
+ harness.check(l.isEnabled(), enabled);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setFont.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setFont.java
new file mode 100644
index 00000000..33f40853
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setFont.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Font;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the setBackground method works correctly. This method must not have
+ * any effect, since the background color cannot be set for list children
+ * individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setFont implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ Font font = l.getFont();
+ child.setFont(new Font("Dialog", Font.PLAIN, 16));
+ harness.check(l.getFont(), font);
+ child.setFont(new Font("Dialog", Font.BOLD, 12));
+ harness.check(l.getFont(), font);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setForeground.java b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setForeground.java
new file mode 100644
index 00000000..dde8b1d0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/AccessibleJListChild/setForeground.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Uses: ../TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList.AccessibleJListChild;
+
+import java.awt.Color;
+
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JList.AccessibleJList.TestList;
+
+/**
+ * Checks if the setForeground method works correctly. This method must not have
+ * any effect, since the foreground color cannot be set for list children
+ * individually.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setForeground implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"item"});
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleComponent child = (AccessibleComponent) al.getAccessibleChild(0);
+ Color listForeground = l.getForeground();
+ child.setForeground(Color.RED);
+ harness.check(l.getForeground(), listForeground);
+ child.setForeground(Color.GREEN);
+ harness.check(l.getForeground(), listForeground);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries
new file mode 100644
index 00000000..c0a51d09
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries
@@ -0,0 +1,9 @@
+/TestList.java/1.1/Tue Oct 18 15:16:26 2005//
+/contentsChanged.java/1.1/Tue Oct 18 15:16:26 2005//
+/getAccessibleChild.java/1.1/Tue Oct 18 15:16:26 2005//
+/getAccessibleRole.java/1.1/Tue Oct 18 15:16:26 2005//
+/getAccessibleStateSet.java/1.1/Tue Oct 18 15:16:26 2005//
+/intervalAdded.java/1.1/Tue Oct 18 15:16:26 2005//
+/intervalRemoved.java/1.1/Tue Oct 18 15:16:26 2005//
+/valueChanged.java/1.1/Tue Oct 18 15:16:26 2005//
+D
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries.Log b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries.Log
new file mode 100644
index 00000000..9c52f565
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJListChild////
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Repository b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Repository
new file mode 100644
index 00000000..bed86fb4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JList/AccessibleJList
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Root b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/TestList.java b/gnu/testlet/javax/swing/JList/AccessibleJList/TestList.java
new file mode 100644
index 00000000..4e505372
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/TestList.java
@@ -0,0 +1,28 @@
+package gnu.testlet.javax.swing.JList.AccessibleJList;
+
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JList;
+
+/**
+ * Overrides JList in order to expose the AccssibleJList methods.
+ */
+public class TestList extends JList
+{
+ public TestList()
+ {
+ super();
+ }
+ public TestList(Object[] values)
+ {
+ super(values);
+ }
+ public class AccessibleTestList extends AccessibleJList
+ {
+ }
+ public AccessibleContext getAccessibleContext()
+ {
+ return new AccessibleTestList();
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/contentsChanged.java b/gnu/testlet/javax/swing/JList/AccessibleJList/contentsChanged.java
new file mode 100644
index 00000000..5016d259
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/contentsChanged.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Vector;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method contentsChanged in
+ * javax.swing.JList.AccessibleJList. This method fires two
+ * PropertyChangeEvents, one with
+ * AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY and one with
+ * AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class contentsChanged implements Testlet, PropertyChangeListener
+{
+ Vector receivedEvents = new Vector();
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ al.addPropertyChangeListener(this);
+
+ ListDataEvent ev = new ListDataEvent(l, ListDataEvent.INTERVAL_ADDED, 1, 2);
+ receivedEvents.clear();
+ al.contentsChanged(ev);
+ harness.check(receivedEvents.size(), 1);
+ PropertyChangeEvent ev1 = (PropertyChangeEvent) receivedEvents.get(0);
+ harness.check(ev1.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY);
+ harness.check(ev1.getSource(), al);
+ harness.check(ev1.getOldValue(), Boolean.FALSE);
+ harness.check(ev1.getNewValue(), Boolean.TRUE);
+ }
+
+ public void propertyChange(PropertyChangeEvent e) {
+ receivedEvents.add(e);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleChild.java b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleChild.java
new file mode 100644
index 00000000..689ecb01
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleChild.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if getAccessibleChild works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAccessibleChild implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList(new String[]{"child"});
+ harness.check(l.getModel().getSize(), 1);
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ Accessible child1 = al.getAccessibleChild(0);
+ harness.check(child1 != null);
+ harness.check(child1 instanceof AccessibleComponent);
+ Accessible child2 = al.getAccessibleChild(1);
+ harness.check(child2 , null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleRole.java b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleRole.java
new file mode 100644
index 00000000..7e56a2a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleRole.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import javax.accessibility.AccessibleRole;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method getAccessibleRol in
+ * javax.swing.JList.AccessibleJList. This method should return
+ * AccessibleRole.LIST.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAccessibleRole implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ AccessibleRole role = al.getAccessibleRole();
+ harness.check(role, AccessibleRole.LIST);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleStateSet.java b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleStateSet.java
new file mode 100644
index 00000000..c77196a2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/getAccessibleStateSet.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.swing.ListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method getAccessibleStateSet of
+ * javax.swing.JList.AccessibleJList.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAccessibleStateSet implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+
+ l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ AccessibleStateSet ss = al.getAccessibleStateSet();
+ harness.check(ss.contains(AccessibleState.MULTISELECTABLE));
+
+ l.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ ss = al.getAccessibleStateSet();
+ harness.check(ss.contains(AccessibleState.MULTISELECTABLE));
+
+ l.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ ss = al.getAccessibleStateSet();
+ harness.check(! ss.contains(AccessibleState.MULTISELECTABLE));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/intervalAdded.java b/gnu/testlet/javax/swing/JList/AccessibleJList/intervalAdded.java
new file mode 100644
index 00000000..464dcdac
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/intervalAdded.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Vector;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method intervalAdded in
+ * javax.swing.JList.AccessibleJList. This method fires two
+ * PropertyChangeEvents, one with
+ * AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY and one with
+ * AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class intervalAdded implements Testlet, PropertyChangeListener
+{
+ Vector receivedEvents = new Vector();
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ al.addPropertyChangeListener(this);
+
+ ListDataEvent ev = new ListDataEvent(l, ListDataEvent.INTERVAL_ADDED, 1, 2);
+ receivedEvents.clear();
+ al.intervalAdded(ev);
+ harness.check(receivedEvents.size(), 1);
+ PropertyChangeEvent ev1 = (PropertyChangeEvent) receivedEvents.get(0);
+ harness.check(ev1.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY);
+ harness.check(ev1.getSource(), al);
+ harness.check(ev1.getOldValue(), Boolean.FALSE);
+ harness.check(ev1.getNewValue(), Boolean.TRUE);
+ }
+
+ public void propertyChange(PropertyChangeEvent e) {
+ receivedEvents.add(e);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/intervalRemoved.java b/gnu/testlet/javax/swing/JList/AccessibleJList/intervalRemoved.java
new file mode 100644
index 00000000..3f4af018
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/intervalRemoved.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Vector;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method intervalRemoved in
+ * javax.swing.JList.AccessibleJList. This method fires two
+ * PropertyChangeEvents, one with
+ * AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY and one with
+ * AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class intervalRemoved implements Testlet, PropertyChangeListener
+{
+ Vector receivedEvents = new Vector();
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ al.addPropertyChangeListener(this);
+
+ ListDataEvent ev = new ListDataEvent(l, ListDataEvent.INTERVAL_ADDED, 1, 2);
+ receivedEvents.clear();
+ al.intervalRemoved(ev);
+ harness.check(receivedEvents.size(), 1);
+ PropertyChangeEvent ev1 = (PropertyChangeEvent) receivedEvents.get(0);
+ harness.check(ev1.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY);
+ harness.check(ev1.getSource(), al);
+ harness.check(ev1.getOldValue(), Boolean.FALSE);
+ harness.check(ev1.getNewValue(), Boolean.TRUE);
+ }
+
+ public void propertyChange(PropertyChangeEvent e) {
+ receivedEvents.add(e);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/AccessibleJList/valueChanged.java b/gnu/testlet/javax/swing/JList/AccessibleJList/valueChanged.java
new file mode 100644
index 00000000..b44737e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/AccessibleJList/valueChanged.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Uses: TestList
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JList.AccessibleJList;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Vector;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.event.ListSelectionEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the method valueChanged in
+ * javax.swing.JList.AccessibleJList. This method fires two
+ * PropertyChangeEvents, one with
+ * AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY and one with
+ * AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class valueChanged implements Testlet, PropertyChangeListener
+{
+
+ Vector receivedEvents = new Vector();
+
+ public void test(TestHarness harness)
+ {
+ TestList l = new TestList();
+ TestList.AccessibleTestList al =
+ (TestList.AccessibleTestList) l.getAccessibleContext();
+ al.addPropertyChangeListener(this);
+ ListSelectionEvent ev = new ListSelectionEvent(l, 1, 2, true);
+ receivedEvents.clear();
+ al.valueChanged(ev);
+ harness.check(receivedEvents.size(), 2);
+ PropertyChangeEvent ev1 = (PropertyChangeEvent) receivedEvents.get(0);
+ harness.check(ev1.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY);
+ harness.check(ev1.getSource(), al);
+ harness.check(ev1.getOldValue(), Boolean.FALSE);
+ harness.check(ev1.getNewValue(), Boolean.TRUE);
+
+ PropertyChangeEvent ev2 = (PropertyChangeEvent) receivedEvents.get(1);
+ harness.check(ev2.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY);
+ harness.check(ev2.getSource(), al);
+ harness.check(ev2.getOldValue(), Boolean.FALSE);
+ harness.check(ev2.getNewValue(), Boolean.TRUE);
+ }
+
+ public void propertyChange(PropertyChangeEvent e) {
+ receivedEvents.add(e);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/CVS/Entries b/gnu/testlet/javax/swing/JList/CVS/Entries
new file mode 100644
index 00000000..a814018d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/CVS/Entries
@@ -0,0 +1,12 @@
+/constructors.java/1.1/Wed Nov 9 10:43:15 2005//
+/getBackground.java/1.1/Wed Nov 9 10:43:15 2005//
+/getInputMap.java/1.1/Tue Jun 6 22:13:34 2006//
+/getNextMatch.java/1.1/Mon Jun 26 17:23:56 2006//
+/getSelectionBackground.java/1.1/Wed Nov 9 10:43:15 2005//
+/setBackground.java/1.1/Wed Nov 9 10:43:15 2005//
+/setLayoutOrientation.java/1.1/Mon Jun 26 13:30:00 2006//
+/setModel.java/1.1/Wed Nov 9 10:43:15 2005//
+/setSelectionBackground.java/1.1/Wed Nov 9 10:43:15 2005//
+/setValueIsAdjusting.java/1.1/Mon Jun 26 15:19:08 2006//
+/setVisibleRowCount.java/1.1/Mon Jun 26 15:19:08 2006//
+D
diff --git a/gnu/testlet/javax/swing/JList/CVS/Entries.Log b/gnu/testlet/javax/swing/JList/CVS/Entries.Log
new file mode 100644
index 00000000..b850fc9f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJList////
diff --git a/gnu/testlet/javax/swing/JList/CVS/Repository b/gnu/testlet/javax/swing/JList/CVS/Repository
new file mode 100644
index 00000000..2bba1dc7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JList
diff --git a/gnu/testlet/javax/swing/JList/CVS/Root b/gnu/testlet/javax/swing/JList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JList/constructors.java b/gnu/testlet/javax/swing/JList/constructors.java
new file mode 100644
index 00000000..5d41e8e5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/constructors.java
@@ -0,0 +1,133 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.JList;
+import javax.swing.ListModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the constructors in the
+ * {@link JList} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JList list = new JList();
+ harness.check(list.getFont(), MetalLookAndFeel.getControlTextFont());
+ harness.check(list.getForeground(), MetalLookAndFeel.getBlack());
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+ harness.check(list.getDragEnabled(), false);
+ harness.check(list.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(ListModel)");
+ JList list = new JList();
+ harness.check(list.getFont(), MetalLookAndFeel.getControlTextFont());
+ harness.check(list.getForeground(), MetalLookAndFeel.getBlack());
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+ harness.check(list.getDragEnabled(), false);
+ harness.check(list.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+
+ // check that null argument triggers a IllegalArgumentException
+ boolean pass = false;
+ try
+ {
+ /*JList list2 =*/ new JList((ListModel) null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Object[])");
+ JList list = new JList();
+ harness.check(list.getFont(), MetalLookAndFeel.getControlTextFont());
+ harness.check(list.getForeground(), MetalLookAndFeel.getBlack());
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+ harness.check(list.getDragEnabled(), false);
+ harness.check(list.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+
+ // check that null argument is OK
+ JList list2 = new JList((Object[]) null);
+ harness.check(list2.getModel() != null);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Vector)");
+ JList list = new JList();
+ harness.check(list.getFont(), MetalLookAndFeel.getControlTextFont());
+ harness.check(list.getForeground(), MetalLookAndFeel.getBlack());
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+ harness.check(list.getDragEnabled(), false);
+ harness.check(list.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+
+ // check that null argument is OK
+ JList list2 = new JList((Vector) null);
+ harness.check(list2.getModel() != null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/getBackground.java b/gnu/testlet/javax/swing/JList/getBackground.java
new file mode 100644
index 00000000..edc97556
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/getBackground.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.JList;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getBackground() method of the
+ * {@link JList} class.
+ */
+public class getBackground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JList list = new JList();
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+
+ list.setBackground(Color.yellow);
+ harness.check(list.getBackground(), Color.yellow);
+
+ list.setBackground(null);
+ harness.check(list.getBackground(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/getInputMap.java b/gnu/testlet/javax/swing/JList/getInputMap.java
new file mode 100644
index 00000000..7b91c3c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/getInputMap.java
@@ -0,0 +1,186 @@
+/* getInputMap.java -- some checks for the getInputMap() methods in the JList
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.KeyStroke;
+
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JList list = new JList();
+ InputMap m1 = list.getInputMap();
+ InputMap m2 = list.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JList list = new JList();
+ InputMap m1 = list.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed DOWN")),
+ "selectNextRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed RIGHT")),
+ "selectNextColumnChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed KP_UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed DOWN")),
+ "selectNextRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed UP")),
+ "selectPreviousRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed LEFT")),
+ "selectPreviousColumnChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed CUT")),
+ "cut");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed END")),
+ "selectLastRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed PAGE_UP")),
+ "scrollUpExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_UP")),
+ "selectPreviousRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed HOME")),
+ "selectFirstRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed END")),
+ "selectLastRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_DOWN")),
+ "scrollDownChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed LEFT")),
+ "selectPreviousColumn");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_UP")),
+ "scrollUpChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")),
+ "selectPreviousColumn");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed KP_RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed SPACE")),
+ "addToSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed SPACE")),
+ "toggleAndAnchor");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed SPACE")),
+ "extendTo");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed SPACE")),
+ "moveSelectionTo");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed BACK_SLASH")),
+ "clearSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed HOME")),
+ "selectFirstRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed RIGHT")),
+ "selectNextColumn");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed PAGE_UP")),
+ "scrollUpExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed PAGE_DOWN")),
+ "scrollDown");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed KP_UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed KP_LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed X")),
+ "cut");
+ harness.check(m1p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed PAGE_DOWN")), "scrollDownExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed SLASH")),
+ "selectAll");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed C")), "copy");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed KP_RIGHT")),
+ "selectNextColumnChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed END")),
+ "selectLastRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed KP_DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed KP_LEFT")),
+ "selectPreviousColumnChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed HOME")),
+ "selectFirstRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed V")), "paste");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")),
+ "selectNextRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed KP_DOWN")),
+ "selectNextRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed A")),
+ "selectAll");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed END")),
+ "selectLastRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed COPY")), "copy");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed KP_UP")),
+ "selectPreviousRowChangeLead");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed KP_LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed KP_DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed UP")),
+ "selectPreviousRow");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift ctrl pressed HOME")),
+ "selectFirstRowExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("shift pressed PAGE_DOWN")),
+ "scrollDownExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")),
+ "selectNextColumn");
+ harness.check(m1p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed KP_RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed PAGE_UP")),
+ "scrollUp");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed PASTE")), "paste");
+ InputMap m2 = list.getInputMap(
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = list.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/getNextMatch.java b/gnu/testlet/javax/swing/JList/getNextMatch.java
new file mode 100644
index 00000000..85aa7768
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/getNextMatch.java
@@ -0,0 +1,126 @@
+/* getNextMatch.java -- some checks for the getNextMatch() method in the JList
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JList;
+import javax.swing.text.Position;
+
+public class getNextMatch implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JList list = new JList(new Object[] {"A", "B", "C", "a1", "b1", "c1", "AA", "BB", "CC"});
+ harness.check(list.getNextMatch("A", 0, Position.Bias.Forward), 0);
+ harness.check(list.getNextMatch("A", 1, Position.Bias.Forward), 3);
+ harness.check(list.getNextMatch("A", 2, Position.Bias.Forward), 3);
+ harness.check(list.getNextMatch("A", 3, Position.Bias.Forward), 3);
+ harness.check(list.getNextMatch("A", 4, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("A", 5, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("A", 6, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("A", 7, Position.Bias.Forward), 0);
+ harness.check(list.getNextMatch("A", 8, Position.Bias.Forward), 0);
+
+ harness.check(list.getNextMatch("a", 0, Position.Bias.Backward), 0);
+ harness.check(list.getNextMatch("a", 1, Position.Bias.Backward), 0);
+ harness.check(list.getNextMatch("a", 2, Position.Bias.Backward), 0);
+ harness.check(list.getNextMatch("a", 3, Position.Bias.Backward), 3);
+ harness.check(list.getNextMatch("a", 4, Position.Bias.Backward), 3);
+ harness.check(list.getNextMatch("a", 5, Position.Bias.Backward), 3);
+ harness.check(list.getNextMatch("a", 6, Position.Bias.Backward), 6);
+ harness.check(list.getNextMatch("a", 7, Position.Bias.Backward), 6);
+ harness.check(list.getNextMatch("a", 8, Position.Bias.Backward), 6);
+
+ harness.check(list.getNextMatch("A", 0, null), 0);
+ harness.check(list.getNextMatch("A", 1, null), 0);
+ harness.check(list.getNextMatch("A", 2, null), 0);
+ harness.check(list.getNextMatch("A", 3, null), 3);
+ harness.check(list.getNextMatch("A", 4, null), 3);
+ harness.check(list.getNextMatch("A", 5, null), 3);
+ harness.check(list.getNextMatch("A", 6, null), 6);
+ harness.check(list.getNextMatch("A", 7, null), 6);
+ harness.check(list.getNextMatch("A", 8, null), 6);
+
+ harness.check(list.getNextMatch("Aa", 0, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 1, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 2, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 3, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 4, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 5, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 6, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 7, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("Aa", 8, Position.Bias.Forward), 6);
+
+ harness.check(list.getNextMatch("", 0, Position.Bias.Forward), 0);
+ harness.check(list.getNextMatch("", 1, Position.Bias.Forward), 1);
+ harness.check(list.getNextMatch("", 2, Position.Bias.Forward), 2);
+ harness.check(list.getNextMatch("", 3, Position.Bias.Forward), 3);
+ harness.check(list.getNextMatch("", 4, Position.Bias.Forward), 4);
+ harness.check(list.getNextMatch("", 5, Position.Bias.Forward), 5);
+ harness.check(list.getNextMatch("", 6, Position.Bias.Forward), 6);
+ harness.check(list.getNextMatch("", 7, Position.Bias.Forward), 7);
+
+ harness.check(list.getNextMatch("D", 0, Position.Bias.Forward), -1);
+
+ // try null string
+ boolean pass = false;
+ try
+ {
+ list.getNextMatch(null, 0, Position.Bias.Forward);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative index
+ pass = false;
+ try
+ {
+ list.getNextMatch("A", -1, Position.Bias.Forward);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try index == list size
+ pass = false;
+ try
+ {
+ list.getNextMatch("A", 9, Position.Bias.Forward);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JList/getSelectionBackground.java b/gnu/testlet/javax/swing/JList/getSelectionBackground.java
new file mode 100644
index 00000000..439d3c20
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/getSelectionBackground.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.JList;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSelectionBackground() method of the
+ * {@link JList} class.
+ */
+public class getSelectionBackground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JList list = new JList();
+ harness.check(list.getSelectionBackground(),
+ MetalLookAndFeel.getTextHighlightColor());
+
+ list.setSelectionBackground(Color.yellow);
+ harness.check(list.getSelectionBackground(), Color.yellow);
+
+ list.setSelectionBackground(null);
+ harness.check(list.getSelectionBackground(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setBackground.java b/gnu/testlet/javax/swing/JList/setBackground.java
new file mode 100644
index 00000000..244d25bc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setBackground.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JList;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the setBackground() method of the
+ * {@link JList} class.
+ */
+public class setBackground implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JList list = new JList();
+ list.addPropertyChangeListener(this);
+ harness.check(list.getBackground(),
+ MetalLookAndFeel.getWindowBackground());
+
+ list.setBackground(Color.yellow);
+ harness.check(list.getBackground(), Color.yellow);
+ harness.check(event.getPropertyName(), "background");
+ harness.check(event.getOldValue(),
+ MetalLookAndFeel.getWindowBackground());
+ harness.check(event.getNewValue(), Color.yellow);
+
+ list.setBackground(null);
+ harness.check(list.getBackground(), null);
+ harness.check(event.getPropertyName(), "background");
+ harness.check(event.getOldValue(), Color.yellow);
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setLayoutOrientation.java b/gnu/testlet/javax/swing/JList/setLayoutOrientation.java
new file mode 100644
index 00000000..3501e349
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setLayoutOrientation.java
@@ -0,0 +1,77 @@
+/* setLayoutOrientation.java -- some checks for the setLayoutOrientation()
+ method in the JList class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JList;
+
+public class setLayoutOrientation implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JList list = new JList();
+ list.addPropertyChangeListener(this);
+ harness.check(list.getLayoutOrientation(), JList.VERTICAL);
+ list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
+ harness.check(list.getLayoutOrientation(), JList.HORIZONTAL_WRAP);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), list);
+ harness.check(e0.getPropertyName(), "layoutOrientation");
+ harness.check(e0.getOldValue(), new Integer(JList.VERTICAL));
+ harness.check(e0.getNewValue(), new Integer(JList.HORIZONTAL_WRAP));
+
+ // setting the same value again generates no event
+ events.clear();
+ list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
+ harness.check(events.size(), 0);
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ list.setLayoutOrientation(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setModel.java b/gnu/testlet/javax/swing/JList/setModel.java
new file mode 100644
index 00000000..71395b8b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setModel.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JList;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the setModel() method of the
+ * {@link JList} class.
+ */
+public class setModel implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JList list = new JList();
+ list.addPropertyChangeListener(this);
+
+ DefaultListModel m = new DefaultListModel();
+ list.setModel(m);
+ harness.check(list.getModel(), m);
+ harness.check(events.size(), 1);
+
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(), "model");
+ harness.check(e0.getOldValue() != null);
+ harness.check(e0.getNewValue(), m);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ list.setModel(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setSelectionBackground.java b/gnu/testlet/javax/swing/JList/setSelectionBackground.java
new file mode 100644
index 00000000..25abf9b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setSelectionBackground.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JList;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the setSelectionBackground() method of the
+ * {@link JList} class.
+ */
+public class setSelectionBackground implements Testlet, PropertyChangeListener
+{
+
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JList list = new JList();
+ list.addPropertyChangeListener(this);
+ harness.check(list.getSelectionBackground(),
+ MetalLookAndFeel.getTextHighlightColor());
+
+ list.setSelectionBackground(Color.yellow);
+ harness.check(list.getSelectionBackground(), Color.yellow);
+ harness.check(event.getPropertyName(), "selectionBackground");
+ harness.check(event.getOldValue(),
+ MetalLookAndFeel.getTextHighlightColor());
+ harness.check(event.getNewValue(), Color.yellow);
+
+ list.setSelectionBackground(null);
+ harness.check(list.getSelectionBackground(), null);
+ harness.check(event.getPropertyName(), "selectionBackground");
+ harness.check(event.getOldValue(), Color.yellow);
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setValueIsAdjusting.java b/gnu/testlet/javax/swing/JList/setValueIsAdjusting.java
new file mode 100644
index 00000000..3d27ef58
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setValueIsAdjusting.java
@@ -0,0 +1,68 @@
+/* setValueIsAdjusting.java -- some checks for the setValueIsAdjusting() method
+ in the JList class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JList;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class setValueIsAdjusting
+ implements Testlet, PropertyChangeListener, ListSelectionListener
+{
+ List events = new java.util.ArrayList();
+
+ public void valueChanged(ListSelectionEvent e)
+ {
+ events.add(e);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JList list = new JList();
+ list.addListSelectionListener(this);
+ harness.check(list.getValueIsAdjusting(), false);
+ harness.check(list.getSelectionModel().getValueIsAdjusting(), false);
+ list.setValueIsAdjusting(true);
+ harness.check(list.getValueIsAdjusting(), true);
+ harness.check(list.getSelectionModel().getValueIsAdjusting(), true);
+ harness.check(events.size(), 0);
+
+ list.getSelectionModel().setValueIsAdjusting(false);
+ harness.check(list.getValueIsAdjusting(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JList/setVisibleRowCount.java b/gnu/testlet/javax/swing/JList/setVisibleRowCount.java
new file mode 100644
index 00000000..c4c58194
--- /dev/null
+++ b/gnu/testlet/javax/swing/JList/setVisibleRowCount.java
@@ -0,0 +1,88 @@
+/* setVisibleRowCount.java -- some checks for the setVisibleRowCount() method
+ in the JList class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JList;
+
+public class setVisibleRowCount implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JList list = new JList();
+ harness.check(list.getVisibleRowCount(), 8);
+ list.addPropertyChangeListener(this);
+ list.setVisibleRowCount(13);
+ harness.check(list.getVisibleRowCount(), 13);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), list);
+ harness.check(e0.getPropertyName(), "visibleRowCount");
+ harness.check(e0.getOldValue(), new Integer(8));
+ harness.check(e0.getNewValue(), new Integer(13));
+
+ // setting the same value generates no event
+ events.clear();
+ list.setVisibleRowCount(13);
+ harness.check(events.size(), 0);
+
+ // try zero
+ list.setVisibleRowCount(0);
+ harness.check(list.getVisibleRowCount(), 0);
+
+ // try a negative value
+ events.clear();
+ list.setVisibleRowCount(-1);
+ harness.check(list.getVisibleRowCount(), 0);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), list);
+ harness.check(e0.getPropertyName(), "visibleRowCount");
+ harness.check(e0.getOldValue(), new Integer(0));
+ harness.check(e0.getNewValue(), new Integer(-1));
+
+ events.clear();
+ list.setVisibleRowCount(-99);
+ harness.check(list.getVisibleRowCount(), 0);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getSource(), list);
+ harness.check(e0.getPropertyName(), "visibleRowCount");
+ harness.check(e0.getOldValue(), new Integer(0));
+ harness.check(e0.getNewValue(), new Integer(-99));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenu/CVS/Entries b/gnu/testlet/javax/swing/JMenu/CVS/Entries
new file mode 100644
index 00000000..fc8e30ca
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/CVS/Entries
@@ -0,0 +1,8 @@
+/constructors.java/1.1/Tue Jun 20 18:40:44 2006//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:28 2005//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/getPopUpMenu.java/1.1/Tue Jun 20 19:47:26 2006//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/remove.java/1.2/Tue Jun 20 21:21:45 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JMenu/CVS/Repository b/gnu/testlet/javax/swing/JMenu/CVS/Repository
new file mode 100644
index 00000000..496b473a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JMenu
diff --git a/gnu/testlet/javax/swing/JMenu/CVS/Root b/gnu/testlet/javax/swing/JMenu/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JMenu/constructors.java b/gnu/testlet/javax/swing/JMenu/constructors.java
new file mode 100644
index 00000000..4eb84970
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/constructors.java
@@ -0,0 +1,193 @@
+/* constructors.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.javax.swing.JMenu;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.DefaultButtonModel;
+import javax.swing.JMenu;
+import javax.swing.JPopupMenu;
+import javax.swing.MenuElement;
+import javax.swing.SwingConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ /**
+ * Constructor #1.
+ */
+ public void testConstructor1(TestHarness harness)
+ {
+ JMenu m = new JMenu();
+ harness.check(m.isOpaque(), false);
+ harness.check(m.getText(), "");
+ harness.check(m.getIcon(), null);
+ }
+
+ /**
+ * Constructor #2. JMenu text specified.
+ */
+ public void testConstructor2(TestHarness harness)
+ {
+ JMenu m = new JMenu("Menu Text");
+ harness.check(m.getText(), "Menu Text");
+ harness.check(m.getIcon(), null);
+ harness.check(m.getPopupMenu().getInvoker() instanceof JMenu);
+ harness.check(m.isOpaque(), false);
+ }
+
+ /**
+ * Constructor #2. JMenu text specified as <code>null</code>.
+ */
+ public void testConstructor3(TestHarness harness)
+ {
+ String title = null;
+ JMenu m = new JMenu(title);
+ harness.check(m.getText(), "");
+ }
+
+ /**
+ * Constructor #3. Action specified.
+ */
+ public void testConstructor4(TestHarness harness)
+ {
+ // Creating an <code>Action</code> with no properties.
+ Action myAction = new AbstractAction()
+ {
+ public void actionPerformed(ActionEvent evt)
+ {
+ System.out.println("MyAction");
+ }
+ };
+ JMenu m = new JMenu(myAction);
+ harness.check(m.getText(), null);
+ harness.check(m.getIcon(), null);
+ harness.check(m.getAction(), myAction);
+ harness.check(m.getName(), null);
+ harness.check(m.getAccelerator(), null);
+ harness.check(m.getMnemonic(), 0);
+ harness.check(m.getActionCommand(), null);
+ harness.check(m.getPopupMenu().getInvoker() instanceof JMenu);
+ harness.check(m.isOpaque(), false);
+ }
+
+ /**
+ * Constructor #3. Action specified as <code>null</code>.
+ */
+ public void testConstructor5(TestHarness harness)
+ {
+ Action myAction = null;
+ JMenu m = new JMenu(myAction);
+ harness.check(m.getAction(), null);
+ }
+
+ /**
+ * Constructor #4. JMenu text and boolean both specified. Note: This test does
+ * not check any properties related to tearOff because it has not yet been
+ * implemented, both in Sun and Classpath. It does however ensure that when
+ * evoking calls to this unimplemented method, both behave in the same manner.
+ */
+ public void testConstructor6(TestHarness harness)
+ {
+ JMenu m = new JMenu("Menu Text", true);
+ harness.check(m.getText(), "Menu Text");
+ harness.check(m.getIcon(), null);
+ boolean pass = false;
+ try
+ {
+ m.isTearOff();
+ }
+ catch (Error e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * JMenu Properties.
+ */
+ public void testConstructor7(TestHarness harness)
+ {
+ JMenu m = new JMenu();
+ // Properties set by AbstractButton
+ harness.check(m.getVerticalAlignment(), SwingConstants.CENTER);
+ harness.check(m.getVerticalTextPosition(), SwingConstants.CENTER);
+ harness.check(m.isBorderPainted(), true);
+ harness.check(m.isContentAreaFilled(), true);
+ harness.check(m.isFocusPainted(), false);
+ harness.check(m.isFocusable(), true);
+ harness.check(m.getAlignmentX(), 0.5f);
+ harness.check(m.getAlignmentY(), 0.5f);
+ harness.check(m.getDisplayedMnemonicIndex(), - 1);
+ // Properties set by JMenu's init method.
+ harness.check(m.isFocusPainted(), false);
+ harness.check(m.getHorizontalAlignment(), SwingConstants.LEADING);
+ harness.check(m.getHorizontalTextPosition(), SwingConstants.TRAILING);
+ // JMenu's default properties
+ harness.check(m.getModel() instanceof DefaultButtonModel);
+ harness.check(m.getModel() != null);
+ harness.check(m.getUIClassID(), "MenuUI");
+ harness.check(m.getComponent() instanceof Component);
+ harness.check(m.getComponent() != null);
+ harness.check(m.getDelay(), 200);
+ harness.check(m.getItem(0), null);
+ harness.check(m.getItemCount(), 0);
+ harness.check(m.getLayout(), null);
+ harness.check(m.getMenuComponent(0), null);
+ harness.check(m.getMenuComponentCount(), 0);
+ harness.check(m.getPopupMenu() instanceof JPopupMenu);
+ harness.check(m.getPopupMenu() != null);
+ harness.check(m.isPopupMenuVisible(), false);
+ harness.check(m.isSelected(), false);
+ harness.check(m.getSubElements() instanceof MenuElement[]);
+ harness.check(m.getSubElements() != null);
+ harness.check(m.isTopLevelMenu(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenu/getActionCommand.java b/gnu/testlet/javax/swing/JMenu/getActionCommand.java
new file mode 100644
index 00000000..df893bcd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JMenu;
+
+/** <p>Tests the <code>JMenu</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JMenu("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JMenu/getInputMap.java b/gnu/testlet/javax/swing/JMenu/getInputMap.java
new file mode 100644
index 00000000..d0222f4d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/getInputMap.java
@@ -0,0 +1,70 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JMenu class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JMenu;
+
+/**
+ * Checks the input maps defined for a JMenu - this is really testing
+ * the setup performed by BasicMenuUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JMenu m = new JMenu();
+ InputMap m1 = m.getInputMap();
+ InputMap m2 = m.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JMenu m = new JMenu();
+ InputMap m1 = m.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = m.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = m.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenu/getPopUpMenu.java b/gnu/testlet/javax/swing/JMenu/getPopUpMenu.java
new file mode 100644
index 00000000..24b90476
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/getPopUpMenu.java
@@ -0,0 +1,274 @@
+/* getPopUpMenu.java -- FIXME: describe
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.javax.swing.JMenu;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getPopUpMenu
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testAdd1(harness);
+ testAdd2(harness);
+ testAdd3(harness);
+ testAdd4(harness);
+ testAdd5(harness);
+ testGetMenuComponents(harness);
+ testInsert(harness);
+ testIsPopUpMenuVisible(harness);
+ testRemove1(harness);
+ testRemove2(harness);
+ testPopUpMenuVisible(harness);
+ testSetSelectedHelper(harness);
+ }
+
+ public void testAdd1(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ // Creating an <code>Action</code> with no properties.
+ Action myAction = new AbstractAction()
+ {
+ public void actionPerformed(ActionEvent evt)
+ {
+ System.out.println("MyAction");
+ }
+ };
+ boolean pass = false;
+ try
+ {
+ menu.add(myAction);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testAdd2(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ Component comp = new MyClass();
+ boolean pass = false;
+ try
+ {
+ menu.add(comp);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testAdd3(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ Component comp = new MyClass();
+ boolean pass = false;
+ try
+ {
+ menu.add(comp, 0);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testAdd4(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ JMenuItem item = new JMenuItem();
+ boolean pass = false;
+ try
+ {
+ menu.add(item);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testAdd5(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = false;
+ try
+ {
+ menu.add("String");
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testGetMenuComponents(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = true;
+ try
+ {
+ menu.getMenuComponents();
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testInsert(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ JMenuItem item = new JMenuItem();
+ boolean pass = false;
+ try
+ {
+ menu.insert(item, 0);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testIsPopUpMenuVisible(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = false;
+ try
+ {
+ menu.isPopupMenuVisible();
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testRemove1(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ Component c = new MyClass();
+ boolean pass = false;
+ try
+ {
+ menu.remove(c);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testRemove2(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ JMenuItem item = new JMenuItem();
+ boolean pass = false;
+ try
+ {
+ menu.remove(item);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testPopUpMenuVisible(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = false;
+ try
+ {
+ menu.setPopupMenuVisible(true);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void testSetSelectedHelper(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = false;
+ try
+ {
+ menu.setSelected(false);
+ pass = true;
+ }
+ catch (NullPointerException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public class MyClass
+ extends Component
+ {
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenu/model.java b/gnu/testlet/javax/swing/JMenu/model.java
new file mode 100644
index 00000000..77abed4b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/model.java
@@ -0,0 +1,112 @@
+/* model.java -- some checks for the initialisation of the menu's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.DefaultButtonModel;
+import javax.swing.Icon;
+import javax.swing.JMenu;
+
+/**
+ * This test looks at the creation of the menu's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJMenu extends JMenu
+ {
+ public MyJMenu()
+ {
+ super();
+ }
+ public MyJMenu(Action action)
+ {
+ super(action);
+ }
+ public MyJMenu(String text)
+ {
+ super(text);
+ }
+ public MyJMenu(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJMenu b = new MyJMenu();
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJMenu b = new MyJMenu(action);
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJMenu b = new MyJMenu("ABC");
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJMenu b = new MyJMenu("ABC", false);
+ harness.check(b.getModel().getClass(), DefaultButtonModel.class);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JMenu/remove.java b/gnu/testlet/javax/swing/JMenu/remove.java
new file mode 100644
index 00000000..2a09fb1c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/remove.java
@@ -0,0 +1,93 @@
+/* remove.java -- FIXME: describe
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Tags: 1.4
+
+
+package gnu.testlet.javax.swing.JMenu;
+
+import javax.swing.JMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class remove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean fail = false;
+ try
+ {
+ menu.remove(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean pass = false;
+ try
+ {
+ menu.remove(0);
+ pass = true;
+ }
+ catch (Exception e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ JMenu menu = new JMenu();
+ boolean fail = false;
+ try
+ {
+ menu.remove(1);
+ }
+ catch (Exception e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenu/uidelegate.java b/gnu/testlet/javax/swing/JMenu/uidelegate.java
new file mode 100644
index 00000000..274a75ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenu/uidelegate.java
@@ -0,0 +1,119 @@
+/* uidelegate.java -- some checks for the initialisation of the menu's UI
+ delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JMenu;
+
+/**
+ * This test looks at the creation of the menu's UI delegate. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJMenu extends JMenu
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJMenu()
+ {
+ super();
+ }
+ public MyJMenu(Action action)
+ {
+ super(action);
+ }
+ public MyJMenu(String text)
+ {
+ super(text);
+ }
+ public MyJMenu(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJMenu b = new MyJMenu();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJMenu b = new MyJMenu(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJMenu b = new MyJMenu("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJMenu b = new MyJMenu("ABC", false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JMenuBar/CVS/Entries b/gnu/testlet/javax/swing/JMenuBar/CVS/Entries
new file mode 100644
index 00000000..2ac3eeb4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/CVS/Entries
@@ -0,0 +1,11 @@
+/basic.java/1.1/Wed Jun 7 19:58:49 2006//
+/constructors.java/1.1/Wed Jun 7 19:58:49 2006//
+/getActionMap.java/1.1/Thu Jun 29 16:26:16 2006//
+/getComponentIndex.java/1.1/Wed Jun 7 19:58:49 2006//
+/getHelpMenu.java/1.1/Thu Jun 29 16:26:16 2006//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/getMenu.java/1.1/Wed Jun 7 19:58:49 2006//
+/getSubElements.java/1.1/Wed Jun 7 19:58:49 2006//
+/setHelpMenu.java/1.1/Thu Jun 29 16:26:16 2006//
+/setMargin.java/1.1/Thu Jun 29 16:26:16 2006//
+D
diff --git a/gnu/testlet/javax/swing/JMenuBar/CVS/Repository b/gnu/testlet/javax/swing/JMenuBar/CVS/Repository
new file mode 100644
index 00000000..58c16245
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JMenuBar
diff --git a/gnu/testlet/javax/swing/JMenuBar/CVS/Root b/gnu/testlet/javax/swing/JMenuBar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JMenuBar/basic.java b/gnu/testlet/javax/swing/JMenuBar/basic.java
new file mode 100644
index 00000000..f67f466f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/basic.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.4
+
+/* basic.java -- some checks for simple methods in the JMenuBar class
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.basic.BasicMenuBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalMenuBarUI;
+import javax.swing.plaf.multi.MultiMenuBarUI;
+
+/**
+ * Some checks for simple methods in the {@link JMenuBar} class.
+ */
+public class basic
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ setMargin(harness);
+
+ setUI(harness);
+
+ setBorderPainted(harness);
+
+ setSelected(harness);
+
+ }
+
+ public void setMargin(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ mb.setMargin(new Insets(5, 5, 5, 5));
+ harness.check(mb.getMargin(), new Insets(5, 5, 5, 5));
+
+ mb.setMargin(null);
+ harness.check(mb.getMargin(), new Insets(0, 0, 0, 0));
+ }
+
+ public void setUI(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ mb.setUI(new BasicMenuBarUI());
+ harness.check(mb.getUI() instanceof BasicMenuBarUI);
+
+ mb.setUI(new MultiMenuBarUI());
+ harness.check(mb.getUI() instanceof MultiMenuBarUI);
+
+ mb.updateUI();
+ harness.check(mb.getUI() instanceof MetalMenuBarUI);
+ }
+
+ public void setBorderPainted(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ mb.setBorderPainted(false);
+ harness.check(mb.isBorderPainted() == false);
+
+ mb.setBorderPainted(true);
+ harness.check(mb.isBorderPainted());
+ }
+
+ public void setSelected(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ harness.check(mb.isSelected() == false);
+
+ JMenu menu = new JMenu("menu");
+ mb.add(menu);
+ mb.setSelected(menu);
+ harness.check(mb.isSelected());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/constructors.java b/gnu/testlet/javax/swing/JMenuBar/constructors.java
new file mode 100644
index 00000000..57de1466
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/constructors.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.4
+
+/* constructors.java -- tests for the constructor of the JMenuBar class
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JMenuBar;
+import javax.swing.SingleSelectionModel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalMenuBarUI;
+
+/**
+ * Some tests for the constructors in the {@link JMenuBar} class.
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // the default (and only) constructor is pretty boring,
+ // let's just test default values
+
+ harness.checkPoint("JMenuBar(constructor)");
+
+ // make sure we're using the MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ JMenuBar mb = new JMenuBar();
+ harness.check(mb.getComponentCount(), 0);
+ harness.check(mb.getMenuCount(), 0);
+ harness.check(mb.getMargin(), new Insets(0, 0, 0, 0));
+
+ try
+ {
+ // This should throw an exception, not return null
+ mb.getMenu(0);
+ harness.check(false);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ harness.check(true);
+ }
+
+ harness.check(mb.getSelectionModel() instanceof SingleSelectionModel);
+ harness.check(mb.getSubElements().length, 0);
+ harness.check(mb.getUI() instanceof MetalMenuBarUI);
+
+ harness.check(mb.isBorderPainted());
+ harness.check(mb.isSelected() == false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getActionMap.java b/gnu/testlet/javax/swing/JMenuBar/getActionMap.java
new file mode 100644
index 00000000..8bf2c0a2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getActionMap.java
@@ -0,0 +1,48 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JMenuBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.ActionMap;
+import javax.swing.JMenuBar;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+ ActionMap m = mb.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ //Object[] keys = mp.keys();
+ //for (int i = 0; i < keys.length; i++)
+ // System.out.println(keys[i]);
+ harness.check(mp.get("takeFocus") instanceof Action);
+ harness.check(mp.keys().length, 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getComponentIndex.java b/gnu/testlet/javax/swing/JMenuBar/getComponentIndex.java
new file mode 100644
index 00000000..96f2cd2e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getComponentIndex.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.4
+
+/* getComponentIndex.java -- tests for the getComponentIndex() method
+ in the JMenuBar class
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.MenuElement;
+
+/**
+ * Some checks for the getMenu() method of the {@link JMenuBar} class.
+ */
+public class getComponentIndex
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ JMenu menu1 = new JMenu("menu1");
+ mb.add(menu1);
+
+ JMenu menu2 = new JMenu("menu2");
+ mb.add(menu2);
+
+ JLabel label = new JLabel("label");
+ mb.add(label);
+
+ JMenu menu3 = new JMenu("menu3");
+ mb.add(menu3);
+
+ harness.check(mb.getComponentIndex(menu1), 0);
+ harness.check(mb.getComponentIndex(menu2), 1);
+ harness.check(mb.getComponentIndex(label), 2);
+ harness.check(mb.getComponentIndex(menu3), 3);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getHelpMenu.java b/gnu/testlet/javax/swing/JMenuBar/getHelpMenu.java
new file mode 100644
index 00000000..a1bd71fc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getHelpMenu.java
@@ -0,0 +1,48 @@
+/* getHelpMenu.java -- some checks for the getHelpMenu() method in the
+ JMenuBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JMenuBar;
+
+public class getHelpMenu implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+ boolean pass = false;
+ try
+ {
+ mb.getHelpMenu();
+ }
+ catch (Error e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getInputMap.java b/gnu/testlet/javax/swing/JMenuBar/getInputMap.java
new file mode 100644
index 00000000..e6cc7ee3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getInputMap.java
@@ -0,0 +1,72 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JMenuBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JMenuBar;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JMenuBar - this is really testing
+ * the setup performed by BasicMenuBarUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JMenuBar mb = new JMenuBar();
+ InputMap m1 = mb.getInputMap();
+ InputMap m2 = mb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JMenuBar mb = new JMenuBar();
+ InputMap m1 = mb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = mb.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = mb.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ InputMap m3p = m3.getParent();
+ harness.check(m3p.get(KeyStroke.getKeyStroke("pressed F10")), "takeFocus");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getMenu.java b/gnu/testlet/javax/swing/JMenuBar/getMenu.java
new file mode 100644
index 00000000..129afe5a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getMenu.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.4
+
+/* getMenu.java -- tests for getMenu() method in the JMenuBar class
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+
+/**
+ * Some checks for the getMenu() method of the {@link JMenuBar} class.
+ */
+public class getMenu
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ // This doesn't seem ideal, but it's the excpected behaviour...
+ try
+ {
+ mb.add((JMenu) null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ JMenu menu1 = new JMenu("menu1");
+ mb.add(menu1);
+ harness.check(mb.getMenuCount(), 1);
+ harness.check(mb.getMenu(0), menu1);
+
+ JMenu menu2 = new JMenu("menu2");
+ mb.add(menu2);
+ harness.check(mb.getMenuCount(), 2);
+ harness.check(mb.getMenu(0), menu1);
+ harness.check(mb.getMenu(1), menu2);
+
+ JLabel label = new JLabel("label");
+ mb.add(label);
+ harness.check(mb.getMenuCount(), 3);
+ harness.check(mb.getMenu(2), null);
+
+ JMenu menu3 = new JMenu("menu3");
+ mb.add(menu3);
+ harness.check(mb.getMenuCount(), 4);
+ harness.check(mb.getMenu(0), menu1);
+ harness.check(mb.getMenu(1), menu2);
+ harness.check(mb.getMenu(2), null);
+ harness.check(mb.getMenu(3), menu3);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/getSubElements.java b/gnu/testlet/javax/swing/JMenuBar/getSubElements.java
new file mode 100644
index 00000000..aee7532b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/getSubElements.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.4
+
+/* getSubElements.java -- tests for the getSubElements() method in the
+ JMenuBar class
+ Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.MenuElement;
+
+/**
+ * Some checks for the getMenu() method of the {@link JMenuBar} class.
+ */
+public class getSubElements
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+
+ // Basic test
+ JMenu menu1 = new JMenu("menu1");
+ mb.add(menu1);
+
+ JMenu menu2 = new JMenu("menu2");
+ mb.add(menu2);
+
+ MenuElement[] elements = mb.getSubElements();
+
+ harness.check(elements.length, 2);
+ harness.check(elements[0], menu1);
+ harness.check(elements[1], menu2);
+
+ // Add a component that is *not* an element
+ JLabel label = new JLabel("label");
+ mb.add(label);
+ elements = mb.getSubElements();
+
+ harness.check(elements.length, 2);
+ harness.check(elements[0], menu1);
+ harness.check(elements[1], menu2);
+
+ // Ensure we can still add elements after that
+ JMenu menu3 = new JMenu("menu3");
+ mb.add(menu3);
+ elements = mb.getSubElements();
+
+ harness.check(elements.length, 3);
+ harness.check(elements[0], menu1);
+ harness.check(elements[1], menu2);
+ harness.check(elements[2], menu3);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/setHelpMenu.java b/gnu/testlet/javax/swing/JMenuBar/setHelpMenu.java
new file mode 100644
index 00000000..2f4fd419
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/setHelpMenu.java
@@ -0,0 +1,49 @@
+/* setHelpMenu.java -- some checks for the setHelpMenu() method in the
+ JMenuBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+
+public class setHelpMenu implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+ boolean pass = false;
+ try
+ {
+ mb.setHelpMenu(new JMenu());
+ }
+ catch (Error e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JMenuBar/setMargin.java b/gnu/testlet/javax/swing/JMenuBar/setMargin.java
new file mode 100644
index 00000000..557bf4f4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuBar/setMargin.java
@@ -0,0 +1,79 @@
+/* setMargin.java -- some checks for the setMargin() method in the JMenuBar
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JMenuBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JMenuBar;
+
+public class setMargin implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JMenuBar mb = new JMenuBar();
+ harness.check(mb.getMargin(), new Insets(0, 0, 0, 0));
+ harness.check(mb.getMargin() != mb.getMargin());
+ mb.addPropertyChangeListener(this);
+ mb.setMargin(new Insets(1, 2, 3, 4));
+ harness.check(mb.getMargin(), new Insets(1, 2, 3, 4));
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), mb);
+ harness.check(e.getPropertyName(), "margin");
+ harness.check(e.getNewValue(), new Insets(1, 2, 3, 4));
+ harness.check(e.getOldValue(), null);
+
+ // setting the same value generates no event
+ events.clear();
+ mb.setMargin(new Insets(1, 2, 3, 4));
+ harness.check(events.size(), 0);
+
+ // set to null
+ mb.setMargin(null);
+ harness.check(mb.getMargin(), new Insets(0, 0, 0, 0));
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getSource(), mb);
+ harness.check(e.getPropertyName(), "margin");
+ harness.check(e.getNewValue(), null);
+ harness.check(e.getOldValue(), new Insets(1, 2, 3, 4));
+
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuItem/CVS/Entries b/gnu/testlet/javax/swing/JMenuItem/CVS/Entries
new file mode 100644
index 00000000..cbbf114f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/CVS/Entries
@@ -0,0 +1,4 @@
+/DragSelectTest.java/1.1/Fri Oct 13 11:45:43 2006//
+/constructors.java/1.1/Mon Jul 25 08:26:12 2005//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:28 2005//
+D
diff --git a/gnu/testlet/javax/swing/JMenuItem/CVS/Repository b/gnu/testlet/javax/swing/JMenuItem/CVS/Repository
new file mode 100644
index 00000000..8f871caa
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JMenuItem
diff --git a/gnu/testlet/javax/swing/JMenuItem/CVS/Root b/gnu/testlet/javax/swing/JMenuItem/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JMenuItem/DragSelectTest.java b/gnu/testlet/javax/swing/JMenuItem/DragSelectTest.java
new file mode 100644
index 00000000..1aceeda8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/DragSelectTest.java
@@ -0,0 +1,84 @@
+/* DragSelectTest.java -- Tests if drag selection works
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2 manual
+
+package gnu.testlet.javax.swing.JMenuItem;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JLabel;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JRootPane;
+
+import gnu.testlet.VisualTestlet;
+
+public class DragSelectTest extends VisualTestlet
+{
+ public String getInstructions()
+ {
+ return "Press the mouse on the 'Menu' menu, hold the button pressed and "
+ + "drag it to one of the menu items. Then release the mouse "
+ + "button";
+ }
+
+ public String getExpectedResults()
+ {
+ return "The menu should be closed and the name of the menu item shown in "
+ + "the panel below";
+ }
+
+ public Component getTestComponent()
+ {
+ JRootPane rp = new JRootPane();
+ JMenuBar mb = new JMenuBar();
+ JMenu menu = new JMenu("Menu");
+ final JLabel label =
+ new JLabel("The selected menu item should show up here");
+ ActionListener l = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent ev)
+ {
+ JMenuItem i = (JMenuItem) ev.getSource();
+ label.setText(i.getText());
+ }
+ };
+
+ JMenuItem item1 = new JMenuItem("MenuItem 1");
+ item1.addActionListener(l);
+ JMenuItem item2 = new JMenuItem("MenuItem 2");
+ item2.addActionListener(l);
+ JMenuItem item3 = new JMenuItem("MenuItem 3");
+ item3.addActionListener(l);
+ menu.add(item1);
+ menu.add(item2);
+ menu.add(item3);
+ mb.add(menu);
+ rp.setJMenuBar(mb);
+ rp.getContentPane().add(label);
+ return rp;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuItem/constructors.java b/gnu/testlet/javax/swing/JMenuItem/constructors.java
new file mode 100644
index 00000000..ffdd1d2a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/constructors.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.AbstractAction.MyAction;
+
+import javax.swing.Action;
+import javax.swing.JMenuItem;
+import javax.swing.KeyStroke;
+
+/**
+* Some tests for the constructors in the {@link JMenuItem} class.
+*/
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ // insert other constructor tests later
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("JMenuItem(Action)");
+
+ // check for bug parade 4304129
+ MyAction a = new MyAction();
+ a.putValue(Action.NAME, "Action 1");
+ a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('A'));
+ a.putValue(Action.MNEMONIC_KEY, new Integer(50));
+ a.putValue(Action.ACTION_COMMAND_KEY, "ActionCommand");
+ JMenuItem item = new JMenuItem(a);
+ harness.check(item.getText(), "Action 1");
+ harness.check(item.getAccelerator(), KeyStroke.getKeyStroke('A'));
+ harness.check(item.getMnemonic(), 50);
+ harness.check(item.getActionCommand(), "ActionCommand");
+
+ // test null argument
+ item = new JMenuItem((Action) null);
+ harness.check(item.getText(), null);
+ harness.check(item.getAccelerator(), null);
+ harness.check(item.getMnemonic(), 0);
+ harness.check(item.getActionCommand(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JMenuItem/getActionCommand.java b/gnu/testlet/javax/swing/JMenuItem/getActionCommand.java
new file mode 100644
index 00000000..c5271dd0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JMenuItem/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JMenuItem;
+
+/** <p>Tests the <code>JMenuItem</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JMenuItem("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JOptionPane/CVS/Entries b/gnu/testlet/javax/swing/JOptionPane/CVS/Entries
new file mode 100644
index 00000000..7e81f36d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JOptionPane/CVS/Entries
@@ -0,0 +1,3 @@
+/MyJOptionPane.java/1.1/Wed Jun 7 09:45:53 2006//
+/getInputMap.java/1.2/Wed May 21 13:30:45 2008//
+D
diff --git a/gnu/testlet/javax/swing/JOptionPane/CVS/Repository b/gnu/testlet/javax/swing/JOptionPane/CVS/Repository
new file mode 100644
index 00000000..0a63651d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JOptionPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JOptionPane
diff --git a/gnu/testlet/javax/swing/JOptionPane/CVS/Root b/gnu/testlet/javax/swing/JOptionPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JOptionPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JOptionPane/MyJOptionPane.java b/gnu/testlet/javax/swing/JOptionPane/MyJOptionPane.java
new file mode 100644
index 00000000..2f99e049
--- /dev/null
+++ b/gnu/testlet/javax/swing/JOptionPane/MyJOptionPane.java
@@ -0,0 +1,34 @@
+/* MyJOptionPane.java -- for testing.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JOptionPane;
+
+import javax.swing.JOptionPane;
+
+public class MyJOptionPane extends JOptionPane
+{
+ public MyJOptionPane()
+ {
+ super();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JOptionPane/getInputMap.java b/gnu/testlet/javax/swing/JOptionPane/getInputMap.java
new file mode 100644
index 00000000..a9ed847d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JOptionPane/getInputMap.java
@@ -0,0 +1,73 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JOptionPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyJOptionPane
+
+package gnu.testlet.javax.swing.JOptionPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JOptionPane;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JOptionPane - this is really testing
+ * the setup performed by BasicOptionPaneUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JOptionPane p = new MyJOptionPane();
+ InputMap m1 = p.getInputMap();
+ InputMap m2 = p.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JOptionPane p = new MyJOptionPane();
+ InputMap m1 = p.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = p.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = p.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ InputMap m3p = m3.getParent();
+ harness.check(m3p.get(KeyStroke.getKeyStroke("pressed ESCAPE")), "close");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JPanel/CVS/Entries b/gnu/testlet/javax/swing/JPanel/CVS/Entries
new file mode 100644
index 00000000..c1a79560
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPanel/CVS/Entries
@@ -0,0 +1,3 @@
+/Layouter.java/1.1/Sun Dec 12 18:29:37 2004//
+/setBorder.java/1.1/Mon Dec 5 22:13:49 2005//
+D
diff --git a/gnu/testlet/javax/swing/JPanel/CVS/Repository b/gnu/testlet/javax/swing/JPanel/CVS/Repository
new file mode 100644
index 00000000..6e652f36
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPanel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JPanel
diff --git a/gnu/testlet/javax/swing/JPanel/CVS/Root b/gnu/testlet/javax/swing/JPanel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPanel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JPanel/Layouter.java b/gnu/testlet/javax/swing/JPanel/Layouter.java
new file mode 100644
index 00000000..52a073a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPanel/Layouter.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.JPanel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JPanel;
+import java.awt.FlowLayout;
+
+/**
+ * These tests pass with the Sun JDK 1.4.1_03 on GNU/Linux IA-32.
+ */
+public class Layouter implements Testlet {
+ public void test(TestHarness harness) {
+ JPanel panel = new JPanel(null);
+ harness.check(panel.getLayout() == null); // allow nullLayout
+
+ panel = new JPanel();
+ harness.check(panel.getLayout() instanceof FlowLayout);
+ panel.setLayout(null);
+ harness.check(panel.getLayout() == null); // allow nullLayout
+ }
+}
diff --git a/gnu/testlet/javax/swing/JPanel/setBorder.java b/gnu/testlet/javax/swing/JPanel/setBorder.java
new file mode 100644
index 00000000..46e38502
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPanel/setBorder.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.JPanel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+/**
+ * This tests whether setting the border on a JPanel affects its maximum size.
+ */
+public class setBorder implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JTextField ftf = new JTextField("HELLO WORLD");
+ JPanel borderPanel = new JPanel(new java.awt.BorderLayout());
+ borderPanel.add(ftf);
+
+ // Show that setting the border messes up the maximumSize
+ Dimension d1 = borderPanel.getMaximumSize();
+ borderPanel.setBorder(new javax.swing.border.TitledBorder("HELLO WORLD"));
+ Dimension d2 = borderPanel.getMaximumSize();
+ harness.check(d1,d2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JPopupMenu/CVS/Entries b/gnu/testlet/javax/swing/JPopupMenu/CVS/Entries
new file mode 100644
index 00000000..e68a6d7d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPopupMenu/CVS/Entries
@@ -0,0 +1,2 @@
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+D
diff --git a/gnu/testlet/javax/swing/JPopupMenu/CVS/Repository b/gnu/testlet/javax/swing/JPopupMenu/CVS/Repository
new file mode 100644
index 00000000..54f04567
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPopupMenu/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JPopupMenu
diff --git a/gnu/testlet/javax/swing/JPopupMenu/CVS/Root b/gnu/testlet/javax/swing/JPopupMenu/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPopupMenu/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JPopupMenu/getInputMap.java b/gnu/testlet/javax/swing/JPopupMenu/getInputMap.java
new file mode 100644
index 00000000..f2539bcb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JPopupMenu/getInputMap.java
@@ -0,0 +1,76 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JPopupMenu class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JPopupMenu;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JPopupMenu;
+
+/**
+ * Checks the input maps defined for a JPopupMenu - this is really testing
+ * the setup performed by BasicPopupMenuUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JPopupMenu p = new JPopupMenu();
+ InputMap m1 = p.getInputMap();
+ InputMap m2 = p.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JPopupMenu p = new JPopupMenu();
+ InputMap m1 = p.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = p.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = p.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+// InputMap m3p = m3.getParent();
+// harness.check(m3p.get(KeyStroke.getKeyStroke("pressed ESCAPE")), "close");
+// for (int i = 0; i < m3p.keys().length; i++)
+// {
+// System.out.println(m3p.keys()[i] + ", " + m3p.get(m3p.keys()[i]));
+// }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/CVS/Entries b/gnu/testlet/javax/swing/JProgressBar/CVS/Entries
new file mode 100644
index 00000000..f767a88e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/CVS/Entries
@@ -0,0 +1,14 @@
+/MyJProgressBar.java/1.1/Wed May 31 10:34:44 2006//
+/constructors.java/1.1/Thu Jul 7 11:43:09 2005//
+/getAccessibleContext.java/1.1/Wed May 31 10:34:44 2006//
+/getPercentComplete.java/1.1/Wed May 31 10:34:44 2006//
+/getString.java/1.1/Wed May 31 10:34:44 2006//
+/isStringPainted.java/1.1/Wed May 31 10:34:44 2006//
+/paramString.java/1.2/Wed May 21 13:30:45 2008//
+/setBorderPainted.java/1.1/Wed May 31 10:34:44 2006//
+/setModel.java/1.1/Wed May 31 10:34:44 2006//
+/setOrientation.java/1.1/Wed May 31 10:34:44 2006//
+/setString.java/1.1/Wed May 31 10:34:44 2006//
+/setStringPainted.java/1.1/Wed May 31 10:34:44 2006//
+/setValue.java/1.1/Wed May 31 10:34:44 2006//
+D
diff --git a/gnu/testlet/javax/swing/JProgressBar/CVS/Repository b/gnu/testlet/javax/swing/JProgressBar/CVS/Repository
new file mode 100644
index 00000000..ff421628
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JProgressBar
diff --git a/gnu/testlet/javax/swing/JProgressBar/CVS/Root b/gnu/testlet/javax/swing/JProgressBar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JProgressBar/MyJProgressBar.java b/gnu/testlet/javax/swing/JProgressBar/MyJProgressBar.java
new file mode 100644
index 00000000..fa516cc2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/MyJProgressBar.java
@@ -0,0 +1,40 @@
+/* MyJProgressBar.java -- provides access to protected stuff in the
+ JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import javax.swing.JProgressBar;
+
+public class MyJProgressBar extends JProgressBar
+{
+ public MyJProgressBar()
+ {
+ super();
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/constructors.java b/gnu/testlet/javax/swing/JProgressBar/constructors.java
new file mode 100644
index 00000000..bb58807a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/constructors.java
@@ -0,0 +1,145 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.BoundedRangeModel;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JProgressBar;
+
+/**
+ * Some checks for the constructors in the {@link JProgressBar} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ constructor1(harness);
+ constructor2(harness);
+ constructor3(harness);
+ constructor4(harness);
+ constructor5(harness);
+ }
+
+ public void constructor1(TestHarness harness)
+ {
+ harness.checkPoint("JProgressBar()");
+ JProgressBar bar = new JProgressBar();
+ harness.check(bar.getOrientation(), JProgressBar.HORIZONTAL);
+ harness.check(bar.getValue(), 0);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getString(), "0%");
+ harness.check(bar.isStringPainted(), false);
+ }
+
+ public void constructor2(TestHarness harness)
+ {
+ harness.checkPoint("JProgressBar(BoundedRangeModel)");
+ BoundedRangeModel m = new DefaultBoundedRangeModel(50, 10, 0, 100);
+ JProgressBar bar = new JProgressBar(m);
+ harness.check(bar.getOrientation(), JProgressBar.HORIZONTAL);
+ harness.check(bar.getValue(), 50);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getString(), "50%");
+ harness.check(bar.isStringPainted(), false);
+
+ boolean pass = false;
+ try
+ {
+ bar = new JProgressBar(null);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(pass);
+ }
+ }
+
+ public void constructor3(TestHarness harness)
+ {
+ harness.checkPoint("JProgressBar(int)");
+ JProgressBar bar = new JProgressBar(JProgressBar.HORIZONTAL);
+ harness.check(bar.getOrientation(), JProgressBar.HORIZONTAL);
+ harness.check(bar.getValue(), 0);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getString(), "0%");
+ harness.check(bar.isStringPainted(), false);
+
+ bar = new JProgressBar(JProgressBar.VERTICAL);
+ harness.check(bar.getOrientation(), JProgressBar.VERTICAL);
+
+ boolean pass = false;
+ try
+ {
+ bar = new JProgressBar(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor4(TestHarness harness)
+ {
+ harness.checkPoint("JProgressBar(int, int)");
+ JProgressBar bar = new JProgressBar(12, 34);
+ harness.check(bar.getOrientation(), JProgressBar.HORIZONTAL);
+ harness.check(bar.getValue(), 12);
+ harness.check(bar.getMinimum(), 12);
+ harness.check(bar.getMaximum(), 34);
+ harness.check(bar.getString(), "0%");
+ harness.check(bar.isStringPainted(), false);
+
+ boolean pass = false;
+ try
+ {
+ bar = new JProgressBar(34, 12);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor5(TestHarness harness)
+ {
+ harness.checkPoint("JProgressBar(int, int, int)");
+ JProgressBar bar = new JProgressBar(JProgressBar.VERTICAL, 12, 34);
+ harness.check(bar.getOrientation(), JProgressBar.VERTICAL);
+ harness.check(bar.getValue(), 12);
+ harness.check(bar.getMinimum(), 12);
+ harness.check(bar.getMaximum(), 34);
+ harness.check(bar.getString(), "0%");
+ harness.check(bar.isStringPainted(), false);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JProgressBar/getAccessibleContext.java b/gnu/testlet/javax/swing/JProgressBar/getAccessibleContext.java
new file mode 100644
index 00000000..65786bf8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/getAccessibleContext.java
@@ -0,0 +1,136 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JProgressBar;
+import javax.swing.JSlider;
+
+public class getAccessibleContext implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar progressBar = new JProgressBar(10, 90);
+ progressBar.setValue(50);
+ AccessibleContext ac = progressBar.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), null);
+ harness.check(ac.getAccessibleRole(), AccessibleRole.PROGRESS_BAR);
+ harness.check(ac.getAccessibleAction(), null);
+ harness.check(ac.getAccessibleComponent(), ac);
+ harness.check(ac.getAccessibleDescription(), null);
+ harness.check(ac.getAccessibleEditableText(), null);
+ harness.check(ac.getAccessibleIcon(), null);
+ harness.check(ac.getAccessibleTable(), null);
+ harness.check(ac.getAccessibleText(), null);
+
+ // the AccessibleContext is also the AccessibleValue...
+ AccessibleValue av = ac.getAccessibleValue();
+ harness.check(av, ac);
+ harness.check(av.getCurrentAccessibleValue(), new Integer(50));
+ harness.check(av.getMinimumAccessibleValue(), new Integer(10));
+ harness.check(av.getMaximumAccessibleValue(), new Integer(90));
+
+ // check that setting the accessible value updates the slider
+ ac.addPropertyChangeListener(this);
+ boolean b = av.setCurrentAccessibleValue(new Integer(55));
+ harness.check(progressBar.getValue(), 55);
+ harness.check(b);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(50));
+ harness.check(e0.getNewValue(), new Integer(55));
+
+ // set the value below the minimum
+ events.clear();
+ b = av.setCurrentAccessibleValue(new Integer(5));
+ harness.check(av.getCurrentAccessibleValue(), new Integer(10));
+ harness.check(b);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(55));
+ harness.check(e0.getNewValue(), new Integer(10));
+
+ // set the value above the maximum
+ events.clear();
+ b = av.setCurrentAccessibleValue(new Integer(105));
+ harness.check(av.getCurrentAccessibleValue(), new Integer(90));
+ harness.check(b);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(10));
+ harness.check(e0.getNewValue(), new Integer(90));
+
+ // set the value to null
+ events.clear();
+ b = av.setCurrentAccessibleValue(null);
+ harness.check(av.getCurrentAccessibleValue(), new Integer(90));
+ harness.check(events.size(), 0);
+ harness.check(!b);
+
+ // check the state settings...
+ AccessibleStateSet set = ac.getAccessibleStateSet();
+ harness.check(set.contains(AccessibleState.ENABLED));
+ harness.check(set.contains(AccessibleState.FOCUSABLE));
+ harness.check(set.contains(AccessibleState.VISIBLE));
+ harness.check(set.contains(AccessibleState.OPAQUE));
+ harness.check(set.contains(AccessibleState.HORIZONTAL));
+
+ // each call creates a new set...
+ AccessibleStateSet set2 = ac.getAccessibleStateSet();
+ harness.check(set != set2);
+
+ // check the orientation state setting...
+ progressBar.setOrientation(JSlider.VERTICAL);
+ set = ac.getAccessibleStateSet();
+ harness.check(set.contains(AccessibleState.VERTICAL));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/getPercentComplete.java b/gnu/testlet/javax/swing/JProgressBar/getPercentComplete.java
new file mode 100644
index 00000000..5de8977c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/getPercentComplete.java
@@ -0,0 +1,49 @@
+/* getPercentComplete.java -- some checks for the getPercentComplete()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JProgressBar;
+
+public class getPercentComplete implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar(0, 9);
+ harness.check(pb.getPercentComplete(), 0.0);
+ pb.setValue(3);
+ harness.check(pb.getPercentComplete(), 3.0 / 9.0);
+
+ pb = new JProgressBar(5, 10);
+ harness.check(pb.getPercentComplete(), 0.0);
+ pb.setValue(6);
+ harness.check(pb.getPercentComplete(), 0.2);
+
+ pb = new JProgressBar(10, 10);
+ harness.check(Double.isNaN(pb.getPercentComplete()));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/getString.java b/gnu/testlet/javax/swing/JProgressBar/getString.java
new file mode 100644
index 00000000..cff4b79c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/getString.java
@@ -0,0 +1,47 @@
+/* getString.java -- some checks for the getString()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JProgressBar;
+
+public class getString implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.getString(), "0%");
+
+ pb.setString("XYZ");
+ harness.check(pb.getString(), "XYZ");
+
+ pb.setString(null);
+ pb.setValue(100);
+ harness.check(pb.getString(), "100%");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/isStringPainted.java b/gnu/testlet/javax/swing/JProgressBar/isStringPainted.java
new file mode 100644
index 00000000..32f32f19
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/isStringPainted.java
@@ -0,0 +1,43 @@
+/* isStringPainted.java -- some checks for the isStringPainted()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JProgressBar;
+
+public class isStringPainted implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.isStringPainted(), false);
+
+ pb.setStringPainted(true);
+ harness.check(pb.isStringPainted(), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/paramString.java b/gnu/testlet/javax/swing/JProgressBar/paramString.java
new file mode 100644
index 00000000..cbf617f8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/paramString.java
@@ -0,0 +1,38 @@
+/* paramString.java -- some checks for the paramString()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyJProgressBar
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJProgressBar p = new MyJProgressBar();
+ harness.check(p.paramString().endsWith(",orientation=HORIZONTAL,paintBorder=true,paintString=false,progressString=,indeterminateString=false"));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setBorderPainted.java b/gnu/testlet/javax/swing/JProgressBar/setBorderPainted.java
new file mode 100644
index 00000000..5f147541
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setBorderPainted.java
@@ -0,0 +1,59 @@
+/* setBorderPainted.java -- some checks for the setBorderPainted()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JProgressBar;
+
+public class setBorderPainted implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.isBorderPainted(), true);
+
+ pb.addPropertyChangeListener(this);
+ pb.setBorderPainted(true);
+ harness.check(lastEvent, null);
+
+ pb.setBorderPainted(false);
+ harness.check(pb.isBorderPainted(), false);
+ harness.check(lastEvent.getPropertyName(), "borderPainted");
+ harness.check(lastEvent.getOldValue(), Boolean.TRUE);
+ harness.check(lastEvent.getNewValue(), Boolean.FALSE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setModel.java b/gnu/testlet/javax/swing/JProgressBar/setModel.java
new file mode 100644
index 00000000..7458c0f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setModel.java
@@ -0,0 +1,70 @@
+/* setModel.java -- some checks for the setModel()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JProgressBar;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setModel implements Testlet, ChangeListener
+{
+ ChangeEvent lastEvent;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel m1 = new DefaultBoundedRangeModel(1, 2, 0, 10);
+ JProgressBar pb = new JProgressBar(m1);
+ pb.addChangeListener(this);
+ harness.check(m1.getExtent(), 0);
+ harness.check(m1.getChangeListeners().length, 1);
+ DefaultBoundedRangeModel m2 = new DefaultBoundedRangeModel(10, 20, 0, 100);
+ pb.setModel(m2);
+ harness.check(pb.getModel(), m2);
+ harness.check(m2.getExtent(), 0);
+ harness.check(m1.getChangeListeners().length, 0);
+ harness.check(m2.getChangeListeners().length, 1);
+ harness.check(lastEvent.getSource(), pb);
+
+ boolean pass = false;
+ try
+ {
+ pb.setModel(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setOrientation.java b/gnu/testlet/javax/swing/JProgressBar/setOrientation.java
new file mode 100644
index 00000000..1f079c0a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setOrientation.java
@@ -0,0 +1,71 @@
+/* setOrientation.java -- some checks for the setOrientation()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JProgressBar;
+import javax.swing.SwingConstants;
+
+public class setOrientation implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.getOrientation(), SwingConstants.HORIZONTAL);
+
+ pb.addPropertyChangeListener(this);
+ pb.setOrientation(SwingConstants.VERTICAL);
+ harness.check(pb.getOrientation(), SwingConstants.VERTICAL);
+ harness.check(lastEvent.getPropertyName(), "orientation");
+ harness.check(lastEvent.getOldValue(),
+ new Integer(SwingConstants.HORIZONTAL));
+ harness.check(lastEvent.getNewValue(),
+ new Integer(SwingConstants.VERTICAL));
+
+ boolean pass = false;
+ try
+ {
+ pb.setOrientation(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setString.java b/gnu/testlet/javax/swing/JProgressBar/setString.java
new file mode 100644
index 00000000..a406c8bb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setString.java
@@ -0,0 +1,63 @@
+/* setString.java -- some checks for the setString()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JProgressBar;
+
+public class setString implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.getString(), "0%");
+
+ pb.addPropertyChangeListener(this);
+ pb.setString("XYZ");
+ harness.check(pb.getString(), "XYZ");
+ harness.check(lastEvent.getPropertyName(), "string");
+ harness.check(lastEvent.getOldValue(), null);
+ harness.check(lastEvent.getNewValue(), "XYZ");
+
+ pb.setString(null);
+ harness.check(pb.getString(), "0%");
+ harness.check(lastEvent.getPropertyName(), "string");
+ harness.check(lastEvent.getOldValue(), "XYZ");
+ harness.check(lastEvent.getNewValue(), null);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setStringPainted.java b/gnu/testlet/javax/swing/JProgressBar/setStringPainted.java
new file mode 100644
index 00000000..c21d7cdc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setStringPainted.java
@@ -0,0 +1,59 @@
+/* setStringPainted.java -- some checks for the setStringPainted()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.JProgressBar;
+
+public class setStringPainted implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ lastEvent = event;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JProgressBar pb = new JProgressBar();
+ harness.check(pb.isStringPainted(), false);
+
+ pb.addPropertyChangeListener(this);
+ pb.setStringPainted(false);
+ harness.check(lastEvent, null);
+
+ pb.setStringPainted(true);
+ harness.check(pb.isStringPainted(), true);
+ harness.check(lastEvent.getPropertyName(), "stringPainted");
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JProgressBar/setValue.java b/gnu/testlet/javax/swing/JProgressBar/setValue.java
new file mode 100644
index 00000000..0f278edf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JProgressBar/setValue.java
@@ -0,0 +1,78 @@
+/* setValue.java -- some checks for the setValue()
+ method in the JProgressBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JProgressBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JProgressBar;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setValue implements Testlet, ChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void stateChanged(ChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultBoundedRangeModel m = new DefaultBoundedRangeModel();
+ m.addChangeListener(this);
+ JProgressBar pb = new JProgressBar(m);
+ pb.addChangeListener(this);
+ harness.check(pb.getValue(), 0);
+ pb.setValue(55);
+ harness.check(pb.getValue(), 55);
+ harness.check(m.getValue(), 55);
+ harness.check(events.size(), 2);
+
+ // setting the same value triggers no events
+ events.clear();
+ pb.setValue(55);
+ harness.check(events.size(), 0);
+
+ // try value < minimum
+ events.clear();
+ pb.setValue(-1);
+ harness.check(pb.getValue(), 0);
+ harness.check(m.getValue(), 0);
+ harness.check(events.size(), 2);
+
+ // try value > maximum
+ events.clear();
+ pb.setValue(101);
+ harness.check(pb.getValue(), 100);
+ harness.check(m.getValue(), 100);
+ harness.check(events.size(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JRadioButton/CVS/Entries b/gnu/testlet/javax/swing/JRadioButton/CVS/Entries
new file mode 100644
index 00000000..7e1420c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/CVS/Entries
@@ -0,0 +1,5 @@
+/getActionCommand.java/1.1/Wed Jul 13 02:05:29 2005//
+/isFocusable.java/1.1/Thu Jun 15 19:32:46 2006//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JRadioButton/CVS/Repository b/gnu/testlet/javax/swing/JRadioButton/CVS/Repository
new file mode 100644
index 00000000..4afccc01
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JRadioButton
diff --git a/gnu/testlet/javax/swing/JRadioButton/CVS/Root b/gnu/testlet/javax/swing/JRadioButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JRadioButton/getActionCommand.java b/gnu/testlet/javax/swing/JRadioButton/getActionCommand.java
new file mode 100644
index 00000000..02e7da5b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JRadioButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JRadioButton;
+
+/** <p>Tests the <code>JRadioButton</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JRadioButton("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRadioButton/isFocusable.java b/gnu/testlet/javax/swing/JRadioButton/isFocusable.java
new file mode 100644
index 00000000..504f478a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/isFocusable.java
@@ -0,0 +1,47 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Tags:1.4
+
+package gnu.testlet.javax.swing.JRadioButton;
+
+import javax.swing.JRadioButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JRadioButton i = new JRadioButton();
+ harness.check(i.isFocusable(), true);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JRadioButton/model.java b/gnu/testlet/javax/swing/JRadioButton/model.java
new file mode 100644
index 00000000..ca8d7d8b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/model.java
@@ -0,0 +1,164 @@
+/* model.java -- some checks for the initialisation of the button's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JRadioButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JRadioButton;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the button's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJRadioButton extends JRadioButton
+ {
+ public MyJRadioButton()
+ {
+ super();
+ }
+ public MyJRadioButton(Action action)
+ {
+ super(action);
+ }
+ public MyJRadioButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJRadioButton(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJRadioButton(String text)
+ {
+ super(text);
+ }
+ public MyJRadioButton(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJRadioButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJRadioButton(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJRadioButton b = new MyJRadioButton();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJRadioButton b = new MyJRadioButton(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJRadioButton b = new MyJRadioButton(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJRadioButton b = new MyJRadioButton(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJRadioButton b = new MyJRadioButton("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJRadioButton b = new MyJRadioButton("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJRadioButton b = new MyJRadioButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJRadioButton b = new MyJRadioButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRadioButton/uidelegate.java b/gnu/testlet/javax/swing/JRadioButton/uidelegate.java
new file mode 100644
index 00000000..32c3df65
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButton/uidelegate.java
@@ -0,0 +1,171 @@
+/* uidelegate.java -- some checks for the initialisation of the button's UI
+ delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JRadioButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JRadioButton;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the button's UI delegate. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJRadioButton extends JRadioButton
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJRadioButton()
+ {
+ super();
+ }
+ public MyJRadioButton(Action action)
+ {
+ super(action);
+ }
+ public MyJRadioButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJRadioButton(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJRadioButton(String text)
+ {
+ super(text);
+ }
+ public MyJRadioButton(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJRadioButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJRadioButton(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJRadioButton b = new MyJRadioButton();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJRadioButton b = new MyJRadioButton(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJRadioButton b = new MyJRadioButton(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJRadioButton b = new MyJRadioButton(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJRadioButton b = new MyJRadioButton("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJRadioButton b = new MyJRadioButton("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJRadioButton b = new MyJRadioButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJRadioButton b = new MyJRadioButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Entries b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Entries
new file mode 100644
index 00000000..5fe8e2ec
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Entries
@@ -0,0 +1,5 @@
+/getActionCommand.java/1.1/Wed Jul 13 02:05:29 2005//
+/isFocusable.java/1.1/Thu Jun 15 18:22:13 2006//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Repository b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Repository
new file mode 100644
index 00000000..441c23ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JRadioButtonMenuItem
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Root b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/getActionCommand.java b/gnu/testlet/javax/swing/JRadioButtonMenuItem/getActionCommand.java
new file mode 100644
index 00000000..435a481a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+//Uses: ../AbstractButton/getActionCommand
+
+//Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+//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.javax.swing.JRadioButtonMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JRadioButtonMenuItem;
+
+/** <p>Tests the <code>JRadioButtonMenuItem</code>'s <code>getActionCommand</code>
+* method.</p>
+*
+* <p>Please note that the interesting bits of this test reside in the superclass
+* {@link gnu.testlet.javax.swing.AbstractButton}
+*
+* @author Robert Schuster
+*
+*/
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JRadioButtonMenuItem("bla"), harness);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/isFocusable.java b/gnu/testlet/javax/swing/JRadioButtonMenuItem/isFocusable.java
new file mode 100644
index 00000000..feb1f200
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/isFocusable.java
@@ -0,0 +1,46 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.JRadioButtonMenuItem;
+
+import javax.swing.JRadioButtonMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JRadioButtonMenuItem i = new JRadioButtonMenuItem();
+ harness.check(i.isFocusable(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/model.java b/gnu/testlet/javax/swing/JRadioButtonMenuItem/model.java
new file mode 100644
index 00000000..99ce3e34
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/model.java
@@ -0,0 +1,151 @@
+/* model.java -- some checks for the initialisation of the menu item's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JRadioButtonMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu item's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJRadioButtonMenuItem extends JRadioButtonMenuItem
+ {
+ public MyJRadioButtonMenuItem()
+ {
+ super();
+ }
+ public MyJRadioButtonMenuItem(Action action)
+ {
+ super(action);
+ }
+ public MyJRadioButtonMenuItem(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJRadioButtonMenuItem(String text)
+ {
+ super(text);
+ }
+ public MyJRadioButtonMenuItem(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJRadioButtonMenuItem(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJRadioButtonMenuItem(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRadioButtonMenuItem/uidelegate.java b/gnu/testlet/javax/swing/JRadioButtonMenuItem/uidelegate.java
new file mode 100644
index 00000000..9ed5961d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRadioButtonMenuItem/uidelegate.java
@@ -0,0 +1,157 @@
+/* uidelegate.java -- some checks for the initialisation of the menu item's
+ UI delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JRadioButtonMenuItem;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu item's UI delegate. This test
+ * was written to investigate a look and feel bug that occurs because the
+ * model is null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJRadioButtonMenuItem extends JRadioButtonMenuItem
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJRadioButtonMenuItem()
+ {
+ super();
+ }
+ public MyJRadioButtonMenuItem(Action action)
+ {
+ super(action);
+ }
+ public MyJRadioButtonMenuItem(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJRadioButtonMenuItem(String text)
+ {
+ super(text);
+ }
+ public MyJRadioButtonMenuItem(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJRadioButtonMenuItem(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJRadioButtonMenuItem(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC", false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJRadioButtonMenuItem b = new MyJRadioButtonMenuItem("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JRootPane/CVS/Entries b/gnu/testlet/javax/swing/JRootPane/CVS/Entries
new file mode 100644
index 00000000..1f14756a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/CVS/Entries
@@ -0,0 +1,2 @@
+/setLayeredPane.java/1.1/Wed Nov 22 20:03:37 2006//
+D
diff --git a/gnu/testlet/javax/swing/JRootPane/CVS/Entries.Log b/gnu/testlet/javax/swing/JRootPane/CVS/Entries.Log
new file mode 100644
index 00000000..fa677cca
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/RootLayout////
diff --git a/gnu/testlet/javax/swing/JRootPane/CVS/Repository b/gnu/testlet/javax/swing/JRootPane/CVS/Repository
new file mode 100644
index 00000000..20f3c535
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JRootPane
diff --git a/gnu/testlet/javax/swing/JRootPane/CVS/Root b/gnu/testlet/javax/swing/JRootPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Entries b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Entries
new file mode 100644
index 00000000..9431f44b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Entries
@@ -0,0 +1,5 @@
+/getLayoutAlignmentX.java/1.1/Tue Nov 8 13:59:39 2005//
+/getLayoutAlignmentY.java/1.1/Tue Nov 8 13:59:39 2005//
+/layoutContainer.java/1.1/Tue Nov 8 13:59:39 2005//
+/preferredLayoutSize.java/1.2/Mon Jan 30 21:21:47 2006//
+D
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Repository b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Repository
new file mode 100644
index 00000000..1308350c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JRootPane/RootLayout
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Root b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentX.java b/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentX.java
new file mode 100644
index 00000000..3341554f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentX.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JRootPane.RootLayout;
+
+import java.awt.LayoutManager2;
+
+import javax.swing.JComponent;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLayoutAlignmentX implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JRootPane rp = new JRootPane();
+ LayoutManager2 lm2 = (LayoutManager2) rp.getLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.0F);
+
+ // Setting the root pane's alignmentX doesn't change anything.
+ rp.setAlignmentX(0.5F);
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.0F);
+
+ // Setting the content pane's alignmentX doesn't change anything.
+ ((JComponent) rp.getContentPane()).setAlignmentX(0.5F);
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.0F);
+
+ // Setting the glass pane's alignmentX doesn't change anything.
+ ((JComponent) rp.getGlassPane()).setAlignmentX(0.5F);
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.0F);
+
+ // Setting the layered pane's alignmentX doesn't change anything.
+ ((JComponent) rp.getLayeredPane()).setAlignmentX(0.5F);
+ harness.check(lm2.getLayoutAlignmentX(rp), 0.0F);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentY.java b/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentY.java
new file mode 100644
index 00000000..eca7dae4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/getLayoutAlignmentY.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JRootPane.RootLayout;
+
+import java.awt.LayoutManager2;
+
+import javax.swing.JComponent;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getLayoutAlignmentY implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JRootPane rp = new JRootPane();
+ LayoutManager2 lm2 = (LayoutManager2) rp.getLayout();
+
+ // Check for the value when nothing is touched.
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.0F);
+
+ // Setting the root pane's alignmentY doesn't change anything.
+ rp.setAlignmentY(0.5F);
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.0F);
+
+ // Setting the content pane's alignmentY doesn't change anything.
+ ((JComponent) rp.getContentPane()).setAlignmentY(0.5F);
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.0F);
+
+ // Setting the glass pane's alignmentY doesn't change anything.
+ ((JComponent) rp.getGlassPane()).setAlignmentY(0.5F);
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.0F);
+
+ // Setting the layered pane's alignmentY doesn't change anything.
+ ((JComponent) rp.getLayeredPane()).setAlignmentY(0.5F);
+ harness.check(lm2.getLayoutAlignmentY(rp), 0.0F);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/layoutContainer.java b/gnu/testlet/javax/swing/JRootPane/RootLayout/layoutContainer.java
new file mode 100644
index 00000000..506f2a55
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/layoutContainer.java
@@ -0,0 +1,89 @@
+// Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+//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.javax.swing.JRootPane.RootLayout;
+
+import java.awt.Component;
+import java.awt.Insets;
+import java.awt.Rectangle;
+
+import javax.swing.BorderFactory;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the JRootPane.RootLayout.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class layoutContainer implements Testlet
+{
+
+ // TODO: Implement a test that checks the layout in case we have a menubar
+ // installed.
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithBorder(harness);
+ }
+
+ /**
+ * Tests if the RootLayout works correctly when a border is set on the
+ * rootpane.
+ *
+ * @param harness
+ */
+ private void testWithBorder(TestHarness harness)
+ {
+ harness.checkPoint("withBorder");
+ JRootPane rp = new JRootPane();
+ rp.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ rp.setSize(100, 100);
+ rp.getLayout().layoutContainer(rp);
+ Insets i = rp.getInsets();
+
+ // Check the glass pane.
+ Component gp = rp.getGlassPane();
+ harness.check(gp.getBounds(),
+ new Rectangle(i.left, i.right,
+ rp.getWidth() - i.left - i.right,
+ rp.getHeight() - i.top - i.bottom));
+ // Check the layered pane.
+ Component lp = rp.getLayeredPane();
+ harness.check(lp.getBounds(),
+ new Rectangle(i.left, i.right,
+ rp.getWidth() - i.left - i.right,
+ rp.getHeight() - i.top - i.bottom));
+
+ // Check the content pane.
+ Component cp = rp.getContentPane();
+ harness.check(cp.getBounds(),
+ new Rectangle(0, 0, rp.getWidth() - i.left - i.right,
+ rp.getHeight() - i.top - i.bottom));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java b/gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java
new file mode 100644
index 00000000..d775c057
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/RootLayout/preferredLayoutSize.java
@@ -0,0 +1,74 @@
+/* preferredLayoutSize.java -- tests the preferredLayoutSize() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JRootPane.RootLayout;
+
+import java.awt.Dimension;
+import java.awt.LayoutManager;
+
+import javax.swing.JPanel;
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the preferredLayoutSize() method in the RootLayout.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class preferredLayoutSize implements Testlet
+{
+
+ /**
+ * The entry point in the test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testInvalidLayout(harness);
+ }
+
+ /**
+ * Tests the preferredLayoutSize() method when the layout is in an invalid
+ * state. In particular this tests if the preferredSize is cached or not.
+ * This is inspired by a bug where a JRootPane is asked for it's
+ * preferredSize (thus storing a cached value of it), then the contentPane
+ * changes (and so the parameters for calculating the preferredSize) and then
+ * it is asked again and then returns the incorrect cached value.
+ *
+ * @param h the test harness to use
+ */
+ private void testInvalidLayout(TestHarness h)
+ {
+ JRootPane rp = new JRootPane();
+ LayoutManager l = rp.getLayout();
+ JPanel p = new JPanel();
+ p.setPreferredSize(new Dimension(100, 100));
+ rp.setContentPane(p);
+ h.check(l.preferredLayoutSize(rp), new Dimension(100, 100));
+ p.setPreferredSize(new Dimension(200, 200));
+ h.check(l.preferredLayoutSize(rp), new Dimension(200, 200));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JRootPane/setLayeredPane.java b/gnu/testlet/javax/swing/JRootPane/setLayeredPane.java
new file mode 100644
index 00000000..c119a56d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JRootPane/setLayeredPane.java
@@ -0,0 +1,53 @@
+/* setLayeredPane.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JRootPane;
+
+import java.awt.IllegalComponentStateException;
+
+import javax.swing.JRootPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setLayeredPane implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // This test checks that if an IllegalComponentStateException is
+ // thrown if the layered pane parameter is null.
+ JRootPane rootPane = new JRootPane();
+ boolean fail = false;
+ try
+ {
+ rootPane.setLayeredPane(null);
+ }
+ catch (IllegalComponentStateException e)
+ {
+ fail = true;
+ }
+ harness.check(fail);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JScrollBar/CVS/Entries b/gnu/testlet/javax/swing/JScrollBar/CVS/Entries
new file mode 100644
index 00000000..447bbbf1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/CVS/Entries
@@ -0,0 +1,7 @@
+/MyJScrollBar.java/1.1/Wed May 31 07:52:39 2006//
+/constructors.java/1.2/Thu Nov 24 21:07:46 2005//
+/getAccessibleContext.java/1.1/Wed May 31 07:52:39 2006//
+/getActionMap.java/1.1/Wed Jun 28 10:50:03 2006//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/paramString.java/1.2/Wed May 21 13:30:47 2008//
+D
diff --git a/gnu/testlet/javax/swing/JScrollBar/CVS/Repository b/gnu/testlet/javax/swing/JScrollBar/CVS/Repository
new file mode 100644
index 00000000..08a7cc59
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JScrollBar
diff --git a/gnu/testlet/javax/swing/JScrollBar/CVS/Root b/gnu/testlet/javax/swing/JScrollBar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JScrollBar/MyJScrollBar.java b/gnu/testlet/javax/swing/JScrollBar/MyJScrollBar.java
new file mode 100644
index 00000000..b96f2c28
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/MyJScrollBar.java
@@ -0,0 +1,40 @@
+/* MyJScrollBar.java -- provides access to protected stuff in JScrollBar
+ for testing purposes.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import javax.swing.JScrollBar;
+
+public class MyJScrollBar extends JScrollBar
+{
+ public MyJScrollBar()
+ {
+ super();
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JScrollBar/constructors.java b/gnu/testlet/javax/swing/JScrollBar/constructors.java
new file mode 100644
index 00000000..f855e025
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/constructors.java
@@ -0,0 +1,132 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JProgressBar;
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the constructors in the {@link JScrollBar} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ constructor1(harness);
+ constructor2(harness);
+ constructor3(harness);
+ }
+
+ public void constructor1(TestHarness harness)
+ {
+ harness.checkPoint("JScrollBar()");
+
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+
+ JScrollBar bar = new JScrollBar();
+ harness.check(bar.getOrientation(), JScrollBar.VERTICAL);
+ harness.check(bar.getValue(), 0);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getClientProperty("JScrollBar.isFreeStanding"), null);
+ }
+
+ public void constructor2(TestHarness harness)
+ {
+ harness.checkPoint("JScrollBar(int)");
+
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ }
+
+ JScrollBar bar = new JScrollBar(JScrollBar.HORIZONTAL);
+ harness.check(bar.getOrientation(), JProgressBar.HORIZONTAL);
+ harness.check(bar.getValue(), 0);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getClientProperty("JScrollBar.isFreeStanding"), null);
+
+ bar = new JScrollBar(JScrollBar.VERTICAL);
+ harness.check(bar.getOrientation(), JScrollBar.VERTICAL);
+
+ // check bad orientation
+ boolean pass = false;
+ try
+ {
+ bar = new JScrollBar(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor3(TestHarness harness)
+ {
+ harness.checkPoint("JScrollBar(int, int, int, int, int)");
+ JScrollBar bar = new JScrollBar(JScrollBar.VERTICAL, 50, 5, 0, 100);
+ harness.check(bar.getOrientation(), JProgressBar.VERTICAL);
+ harness.check(bar.getValue(), 50);
+ harness.check(bar.getMinimum(), 0);
+ harness.check(bar.getMaximum(), 100);
+ harness.check(bar.getClientProperty("JScrollBar.isFreeStanding"), null);
+
+ // check bad orientation
+ boolean pass = false;
+ try
+ {
+ bar = new JScrollBar(99, 50, 5, 0, 100);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // TODO: check bad ranges
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JScrollBar/getAccessibleContext.java b/gnu/testlet/javax/swing/JScrollBar/getAccessibleContext.java
new file mode 100644
index 00000000..9169c661
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/getAccessibleContext.java
@@ -0,0 +1,135 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JScrollBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleState;
+import javax.accessibility.AccessibleStateSet;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JScrollBar;
+import javax.swing.JSlider;
+
+public class getAccessibleContext implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL, 50, 5, 10, 90);
+ AccessibleContext ac = scrollBar.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), null);
+ harness.check(ac.getAccessibleRole(), AccessibleRole.SCROLL_BAR);
+ harness.check(ac.getAccessibleAction(), null);
+ harness.check(ac.getAccessibleComponent(), ac);
+ harness.check(ac.getAccessibleDescription(), null);
+ harness.check(ac.getAccessibleEditableText(), null);
+ harness.check(ac.getAccessibleIcon(), null);
+ harness.check(ac.getAccessibleTable(), null);
+ harness.check(ac.getAccessibleText(), null);
+
+ // the AccessibleContext is also the AccessibleValue...
+ AccessibleValue av = ac.getAccessibleValue();
+ harness.check(av, ac);
+ harness.check(av.getCurrentAccessibleValue(), new Integer(50));
+ harness.check(av.getMinimumAccessibleValue(), new Integer(10));
+ harness.check(av.getMaximumAccessibleValue(), new Integer(85));
+
+ // check that setting the accessible value updates the slider
+ ac.addPropertyChangeListener(this);
+ boolean b = av.setCurrentAccessibleValue(new Integer(55));
+ harness.check(scrollBar.getValue(), 55);
+ harness.check(b);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(50));
+ harness.check(e0.getNewValue(), new Integer(55));
+
+ // set the value below the minimum
+ events.clear();
+ b = av.setCurrentAccessibleValue(new Integer(5));
+ harness.check(av.getCurrentAccessibleValue(), new Integer(10));
+ harness.check(b);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(55));
+ harness.check(e0.getNewValue(), new Integer(10));
+
+ // set the value above the maximum
+ events.clear();
+ b = av.setCurrentAccessibleValue(new Integer(105));
+ harness.check(av.getCurrentAccessibleValue(), new Integer(85));
+ harness.check(b);
+ harness.check(events.size(), 1);
+ e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(),
+ AccessibleContext.ACCESSIBLE_VALUE_PROPERTY);
+ harness.check(e0.getSource(), ac);
+ harness.check(e0.getOldValue(), new Integer(10));
+ harness.check(e0.getNewValue(), new Integer(85));
+
+ // set the value to null
+ events.clear();
+ b = av.setCurrentAccessibleValue(null);
+ harness.check(av.getCurrentAccessibleValue(), new Integer(85));
+ harness.check(events.size(), 0);
+ harness.check(!b);
+
+ // check the state settings...
+ AccessibleStateSet set = ac.getAccessibleStateSet();
+ harness.check(set.contains(AccessibleState.ENABLED));
+ harness.check(set.contains(AccessibleState.FOCUSABLE));
+ harness.check(set.contains(AccessibleState.VISIBLE));
+ harness.check(set.contains(AccessibleState.OPAQUE));
+ harness.check(set.contains(AccessibleState.HORIZONTAL));
+
+ // each call creates a new set...
+ AccessibleStateSet set2 = ac.getAccessibleStateSet();
+ harness.check(set != set2);
+
+ // check the orientation state setting...
+ scrollBar.setOrientation(JSlider.VERTICAL);
+ set = ac.getAccessibleStateSet();
+ harness.check(set.contains(AccessibleState.VERTICAL));
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JScrollBar/getActionMap.java b/gnu/testlet/javax/swing/JScrollBar/getActionMap.java
new file mode 100644
index 00000000..8aa9372d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/getActionMap.java
@@ -0,0 +1,50 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JScrollPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.ActionMap;
+import javax.swing.JScrollBar;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JScrollBar sb = new JScrollBar();
+ ActionMap m = sb.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ harness.check(mp.get("positiveUnitIncrement") instanceof Action);
+ harness.check(mp.get("positiveBlockIncrement") instanceof Action);
+ harness.check(mp.get("negativeUnitIncrement") instanceof Action);
+ harness.check(mp.get("negativeBlockIncrement") instanceof Action);
+ harness.check(mp.get("minScroll") instanceof Action);
+ harness.check(mp.get("maxScroll") instanceof Action);
+ harness.check(mp.keys().length, 6);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JScrollBar/getInputMap.java b/gnu/testlet/javax/swing/JScrollBar/getInputMap.java
new file mode 100644
index 00000000..a2cf8eba
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/getInputMap.java
@@ -0,0 +1,84 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JScrollBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JScrollBar;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JScrollBar - this is really testing
+ * the setup performed by BasicScrollBarUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JScrollBar sb = new JScrollBar();
+ InputMap m1 = sb.getInputMap();
+ InputMap m2 = sb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JScrollBar sb = new JScrollBar();
+ InputMap m1 = sb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = sb.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_UP")), "negativeBlockIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_DOWN")), "positiveBlockIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed END")), "maxScroll");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed HOME")), "minScroll");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed LEFT")), "negativeUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_UP")), "negativeUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")), "positiveUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed UP")), "negativeUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed RIGHT")), "positiveUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")), "negativeUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed DOWN")), "positiveUnitIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")), "positiveUnitIncrement");
+
+ InputMap m3 = sb.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JScrollBar/paramString.java b/gnu/testlet/javax/swing/JScrollBar/paramString.java
new file mode 100644
index 00000000..e4256a48
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollBar/paramString.java
@@ -0,0 +1,44 @@
+/* paramString.java -- some checks for the paramString() method in the
+ JScrollBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyJScrollBar
+
+package gnu.testlet.javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * The return value from the paramString() method is allowed to vary by
+ * implementation, but this checks for a match against the reference
+ * implementation anyway.
+ */
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJScrollBar scrollBar = new MyJScrollBar();
+ harness.check(scrollBar.paramString().endsWith(
+ ",blockIncrement=10,orientation=VERTICAL,unitIncrement=1"));
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Entries b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Entries
new file mode 100644
index 00000000..80da8bdb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Entries
@@ -0,0 +1,2 @@
+/resetViewport.java/1.1/Tue Oct 18 14:47:41 2005//
+D
diff --git a/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Repository b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Repository
new file mode 100644
index 00000000..a1bba767
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane
diff --git a/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Root b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/resetViewport.java b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/resetViewport.java
new file mode 100644
index 00000000..78f323e0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/AccessibleJScrollPane/resetViewport.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JScrollPane.AccessibleJScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.beans.PropertyChangeEvent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JViewport;
+
+/**
+ * Tests if the resetViewport method of AccessibleJViewport works correctly.
+ */
+public class resetViewport implements Testlet
+{
+
+ static boolean resetViewPortCalled;
+
+ static class TestScrollPane extends JScrollPane
+ {
+ class TestAccessibleScrollPane extends AccessibleJScrollPane
+ {
+ public void resetViewPort()
+ {
+ resetViewPortCalled = true;
+ super.resetViewPort();
+ }
+ }
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new TestAccessibleScrollPane();
+ return accessibleContext;
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ }
+
+ /**
+ * This test shows that resetViewPort is not used to reset the viewport
+ * to the position (0, 0).
+ *
+ * @param harness the test harness to use
+ */
+ void test1(TestHarness harness)
+ {
+ JScrollPane sp = new TestScrollPane();
+ JViewport vp = sp.getViewport();
+ vp.setView(new JLabel("Hello World"));
+ TestScrollPane.TestAccessibleScrollPane asp =
+ (TestScrollPane.TestAccessibleScrollPane) sp.getAccessibleContext();
+ vp.setViewPosition(new Point(10, 10));
+ harness.check(vp.getViewPosition().equals(new Point(0, 0)), false);
+ asp.resetViewPort();
+ harness.check(vp.getViewPosition().equals(new Point(0, 0)), false);
+ }
+
+ /**
+ * This test shows that resetViewPort is not called in response to a
+ * property change of 'viewport' in the scrollpane.
+ *
+ * @param harness the test harness to use
+ */
+ void test2(TestHarness harness)
+ {
+ JScrollPane sp = new TestScrollPane();
+ TestScrollPane.TestAccessibleScrollPane asp =
+ (TestScrollPane.TestAccessibleScrollPane) sp.getAccessibleContext();
+ resetViewPortCalled = false;
+ asp.propertyChange(new PropertyChangeEvent(sp, "viewport",
+ sp.getViewport(),
+ new JViewport()));
+ harness.check(resetViewPortCalled, false);
+ }
+
+ void test3(TestHarness harness)
+ {
+ JScrollPane sp = new TestScrollPane();
+ TestScrollPane.TestAccessibleScrollPane asp =
+ (TestScrollPane.TestAccessibleScrollPane) sp.getAccessibleContext();
+ resetViewPortCalled = false;
+ sp.setViewport(new JViewport());
+ harness.check(resetViewPortCalled, true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JScrollPane/CVS/Entries b/gnu/testlet/javax/swing/JScrollPane/CVS/Entries
new file mode 100644
index 00000000..90a9b307
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/CVS/Entries
@@ -0,0 +1,5 @@
+/createHorizontalScrollBar.java/1.1/Wed Nov 23 17:07:58 2005//
+/createVerticalScrollBar.java/1.1/Wed Nov 23 17:07:58 2005//
+/getActionMap.java/1.1/Thu Jun 8 11:11:24 2006//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+D
diff --git a/gnu/testlet/javax/swing/JScrollPane/CVS/Entries.Log b/gnu/testlet/javax/swing/JScrollPane/CVS/Entries.Log
new file mode 100644
index 00000000..e6ca0326
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJScrollPane////
diff --git a/gnu/testlet/javax/swing/JScrollPane/CVS/Repository b/gnu/testlet/javax/swing/JScrollPane/CVS/Repository
new file mode 100644
index 00000000..7beaea02
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JScrollPane
diff --git a/gnu/testlet/javax/swing/JScrollPane/CVS/Root b/gnu/testlet/javax/swing/JScrollPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JScrollPane/createHorizontalScrollBar.java b/gnu/testlet/javax/swing/JScrollPane/createHorizontalScrollBar.java
new file mode 100644
index 00000000..ab0cf736
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/createHorizontalScrollBar.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
+
+/**
+ * Some checks for the createHorizontalScrollBar() method in the
+ * {@link JScrollPane} class.
+ */
+public class createHorizontalScrollBar implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JScrollPane pane = new JScrollPane();
+ JScrollBar scrollBar = pane.createHorizontalScrollBar();
+ harness.check(scrollBar.getClass().getName().endsWith("ScrollBar"));
+ harness.check(scrollBar.getOrientation(), JScrollBar.HORIZONTAL);
+ harness.check(scrollBar.getClientProperty("JScrollBar.isFreeStanding"),
+ null);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JScrollPane/createVerticalScrollBar.java b/gnu/testlet/javax/swing/JScrollPane/createVerticalScrollBar.java
new file mode 100644
index 00000000..ff5b9a8a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/createVerticalScrollBar.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
+
+/**
+ * Some checks for the createVerticalScrollBar() method in the
+ * {@link JScrollPane} class.
+ */
+public class createVerticalScrollBar implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JScrollPane pane = new JScrollPane();
+ JScrollBar scrollBar = pane.createVerticalScrollBar();
+ harness.check(scrollBar.getClass().getName().endsWith("ScrollBar"));
+ harness.check(scrollBar.getOrientation(), JScrollBar.VERTICAL);
+ harness.check(scrollBar.getClientProperty("JScrollBar.isFreeStanding"),
+ null);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JScrollPane/getActionMap.java b/gnu/testlet/javax/swing/JScrollPane/getActionMap.java
new file mode 100644
index 00000000..79baa305
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/getActionMap.java
@@ -0,0 +1,57 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JScrollPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.ActionMap;
+import javax.swing.JScrollPane;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // this is the original version of the test - it shows no actions for
+ // a regular label...
+ JScrollPane p = new JScrollPane();
+ ActionMap m = p.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ harness.check(mp.get("scrollLeft") instanceof Action);
+ harness.check(mp.get("scrollEnd") instanceof Action);
+ harness.check(mp.get("unitScrollUp") instanceof Action);
+ harness.check(mp.get("unitScrollLeft") instanceof Action);
+ harness.check(mp.get("scrollUp") instanceof Action);
+ harness.check(mp.get("scrollRight") instanceof Action);
+ harness.check(mp.get("scrollHome") instanceof Action);
+ harness.check(mp.get("scrollDown") instanceof Action);
+ harness.check(mp.get("unitScrollDown") instanceof Action);
+ harness.check(mp.get("unitScrollRight") instanceof Action);
+// for (int i = 0; i < mp.keys().length; i++)
+// System.out.println(mp.keys()[i] + ", " + mp.get(mp.keys()[i]));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JScrollPane/getInputMap.java b/gnu/testlet/javax/swing/JScrollPane/getInputMap.java
new file mode 100644
index 00000000..dd464007
--- /dev/null
+++ b/gnu/testlet/javax/swing/JScrollPane/getInputMap.java
@@ -0,0 +1,85 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JScrollPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JScrollPane;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JScrollPane - this is really testing
+ * the setup performed by BasicScrollPaneUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JScrollPane sp = new JScrollPane();
+ InputMap m1 = sp.getInputMap();
+ InputMap m2 = sp.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JScrollPane sp = new JScrollPane();
+ InputMap m1 = sp.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = sp.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_DOWN")), "scrollRight");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_DOWN")), "scrollDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_UP")), "scrollUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_UP")), "scrollLeft");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")), "unitScrollRight");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed DOWN")), "unitScrollDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")), "unitScrollLeft");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed HOME")), "scrollHome");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed RIGHT")), "unitScrollRight");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")), "unitScrollDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed UP")), "unitScrollUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_UP")), "unitScrollUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed LEFT")), "unitScrollLeft");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed END")), "scrollEnd");
+ InputMap m3 = sp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSlider/CVS/Entries b/gnu/testlet/javax/swing/JSlider/CVS/Entries
new file mode 100644
index 00000000..94effb01
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/CVS/Entries
@@ -0,0 +1,33 @@
+/MyChangeListener.java/1.1/Wed Jul 20 10:20:05 2005//
+/MyPropertyChangeListener.java/1.1/Wed Jul 20 10:20:05 2005//
+/addChangeListener.java/1.1/Wed Jul 20 10:20:05 2005//
+/constructors.java/1.1/Mon Jul 18 22:22:38 2005//
+/createStandardLabels.java/1.1/Wed Jul 20 10:20:05 2005//
+/getExtent.java/1.1/Wed Jul 20 10:20:05 2005//
+/getInverted.java/1.1/Wed Jul 20 10:20:05 2005//
+/getLabelTable.java/1.1/Wed Jul 20 10:20:05 2005//
+/getMajorTickSpacing.java/1.1/Wed Jul 20 10:20:05 2005//
+/getMaximum.java/1.1/Wed Jul 20 10:20:05 2005//
+/getMinimum.java/1.1/Wed Jul 20 10:20:05 2005//
+/getMinorTickSpacing.java/1.1/Wed Jul 20 10:20:06 2005//
+/getModel.java/1.1/Wed Jul 20 10:20:06 2005//
+/getPaintLabels.java/1.1/Wed Jul 20 10:20:06 2005//
+/getPaintTicks.java/1.1/Wed Jul 20 10:20:06 2005//
+/getPaintTrack.java/1.1/Wed Jul 20 10:20:06 2005//
+/getSnapToTicks.java/1.1/Wed Jul 20 10:20:06 2005//
+/getUIClassID.java/1.1/Wed Jul 20 10:20:06 2005//
+/setExtent.java/1.1/Wed Jul 20 10:20:06 2005//
+/setInverted.java/1.1/Wed Jul 20 10:20:06 2005//
+/setLabelTable.java/1.2/Mon Nov 20 19:53:33 2006//
+/setMajorTickSpacing.java/1.1/Wed Jul 20 10:20:06 2005//
+/setMaximum.java/1.1/Wed Jul 20 10:20:06 2005//
+/setMinimum.java/1.1/Wed Jul 20 10:20:06 2005//
+/setMinorTickSpacing.java/1.1/Wed Jul 20 10:20:06 2005//
+/setModel.java/1.1/Wed Jul 20 10:20:06 2005//
+/setOrientation.java/1.1/Wed Jul 20 10:20:06 2005//
+/setPaintLabels.java/1.1/Wed Jul 20 10:20:06 2005//
+/setPaintTicks.java/1.1/Wed Jul 20 10:20:06 2005//
+/setPaintTrack.java/1.1/Wed Jul 20 10:20:06 2005//
+/setSnapToTicks.java/1.1/Wed Jul 20 10:20:06 2005//
+/setValue.java/1.1/Wed Jul 20 10:20:06 2005//
+D
diff --git a/gnu/testlet/javax/swing/JSlider/CVS/Repository b/gnu/testlet/javax/swing/JSlider/CVS/Repository
new file mode 100644
index 00000000..d06f571c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSlider
diff --git a/gnu/testlet/javax/swing/JSlider/CVS/Root b/gnu/testlet/javax/swing/JSlider/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSlider/MyChangeListener.java b/gnu/testlet/javax/swing/JSlider/MyChangeListener.java
new file mode 100644
index 00000000..440a5ac7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/MyChangeListener.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * A change listener that simply retains a reference to the change event.
+ * This allows tests to check that a required event is generated.
+ */
+public class MyChangeListener implements ChangeListener {
+
+ public ChangeEvent event;
+
+ public MyChangeListener()
+ {
+ event = null;
+ }
+
+ public void stateChanged(ChangeEvent event)
+ {
+ this.event = event;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/MyPropertyChangeListener.java b/gnu/testlet/javax/swing/JSlider/MyPropertyChangeListener.java
new file mode 100644
index 00000000..7756a576
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/MyPropertyChangeListener.java
@@ -0,0 +1,41 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+/**
+ * A change listener that simply retains a reference to the change event.
+ * This allows tests to check that a required event is generated.
+ */
+public class MyPropertyChangeListener implements PropertyChangeListener {
+
+ public PropertyChangeEvent event;
+
+ public MyPropertyChangeListener()
+ {
+ this.event = null;
+ }
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ this.event = event;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSlider/addChangeListener.java b/gnu/testlet/javax/swing/JSlider/addChangeListener.java
new file mode 100644
index 00000000..b1e885d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/addChangeListener.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the addChangeListener() method in the {@link JSlider} class.
+ */
+public class addChangeListener implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ MyChangeListener listener = new MyChangeListener();
+ slider.addChangeListener(listener);
+ slider.setExtent(1);
+ harness.check(listener.event.getSource(), slider);
+
+ // adding a null listener is permitted
+ boolean pass = true;
+ try
+ {
+ slider.addChangeListener(null);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/constructors.java b/gnu/testlet/javax/swing/JSlider/constructors.java
new file mode 100644
index 00000000..a686fe22
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/constructors.java
@@ -0,0 +1,267 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.BoundedRangeModel;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the constructors in the {@link JSlider} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ constructor1(harness);
+ constructor2(harness);
+ constructor3(harness);
+ constructor4(harness);
+ constructor5(harness);
+ constructor6(harness);
+ }
+
+ public void constructor1(TestHarness harness)
+ {
+ harness.checkPoint("JSlider()");
+ JSlider slider = new JSlider();
+ harness.check(slider.getOrientation(), JSlider.HORIZONTAL);
+ harness.check(slider.getMinimum(), 0);
+ harness.check(slider.getMaximum(), 100);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 50);
+ harness.check(slider.getExtent(), 0);
+ }
+
+ public void constructor2(TestHarness harness)
+ {
+ harness.checkPoint("JSlider(BoundedRangeModel)");
+ BoundedRangeModel m = new DefaultBoundedRangeModel(5, 0, 2, 9);
+ JSlider slider = new JSlider(m);
+ harness.check(slider.getMinimum(), 2);
+ harness.check(slider.getMaximum(), 9);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 5);
+ harness.check(slider.getExtent(), 0);
+
+ // try null model
+ boolean pass = false;
+ try
+ {
+ /*JSlider slider =*/ new JSlider(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor3(TestHarness harness)
+ {
+ harness.checkPoint("JSlider(int)");
+ JSlider slider = new JSlider(JSlider.HORIZONTAL);
+ harness.check(slider.getOrientation(), JSlider.HORIZONTAL);
+ harness.check(slider.getMinimum(), 0);
+ harness.check(slider.getMaximum(), 100);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 50);
+ harness.check(slider.getExtent(), 0);
+
+ slider = new JSlider(JSlider.VERTICAL);
+ harness.check(slider.getOrientation(), JSlider.VERTICAL);
+ harness.check(slider.getMinimum(), 0);
+ harness.check(slider.getMaximum(), 100);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 50);
+ harness.check(slider.getExtent(), 0);
+
+ // try unrecognised constant
+ boolean pass = false;
+ try
+ {
+ slider = new JSlider(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor4(TestHarness harness)
+ {
+ harness.checkPoint("JSlider(int, int)");
+ JSlider slider = new JSlider(23, 34);
+ harness.check(slider.getOrientation(), JSlider.HORIZONTAL);
+ harness.check(slider.getMinimum(), 23);
+ harness.check(slider.getMaximum(), 34);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 28);
+ harness.check(slider.getExtent(), 0);
+
+ // what happens if min > max
+ boolean pass = false;
+ try
+ {
+ slider = new JSlider(20, 10);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor5(TestHarness harness)
+ {
+ harness.checkPoint("JSlider(int, int, int)");
+ JSlider slider = new JSlider(23, 34, 33);
+ harness.check(slider.getOrientation(), JSlider.HORIZONTAL);
+ harness.check(slider.getMinimum(), 23);
+ harness.check(slider.getMaximum(), 34);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 33);
+ harness.check(slider.getExtent(), 0);
+
+ // what happens if value > max
+ boolean pass = false;
+ try
+ {
+ slider = new JSlider(1, 2, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // what happens if value < min
+ pass = false;
+ try
+ {
+ slider = new JSlider(1, 2, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // what happens if min > max
+ pass = false;
+ try
+ {
+ slider = new JSlider(20, 10, 15);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor6(TestHarness harness)
+ {
+ harness.checkPoint("JSlider(int, int, int, int)");
+ JSlider slider = new JSlider(JSlider.VERTICAL, 23, 34, 33);
+ harness.check(slider.getOrientation(), JSlider.VERTICAL);
+ harness.check(slider.getMinimum(), 23);
+ harness.check(slider.getMaximum(), 34);
+ harness.check(slider.getMajorTickSpacing(), 0);
+ harness.check(slider.getMinorTickSpacing(), 0);
+ harness.check(slider.getPaintLabels(), false);
+ harness.check(slider.getPaintTicks(), false);
+ harness.check(slider.getSnapToTicks(), false);
+ harness.check(slider.getValue(), 33);
+ harness.check(slider.getExtent(), 0);
+
+ // what happens if value > max
+ boolean pass = false;
+ try
+ {
+ slider = new JSlider(JSlider.VERTICAL, 1, 2, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // what happens if value < min
+ pass = false;
+ try
+ {
+ slider = new JSlider(JSlider.VERTICAL, 1, 2, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // what happens if min > max
+ pass = false;
+ try
+ {
+ slider = new JSlider(JSlider.VERTICAL, 20, 10, 15);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JSlider/createStandardLabels.java b/gnu/testlet/javax/swing/JSlider/createStandardLabels.java
new file mode 100644
index 00000000..4a2823a3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/createStandardLabels.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Hashtable;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the createStandardLabels() method in the {@link JSlider}
+ * class.
+ */
+public class createStandardLabels implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("createStandardLabels(int)");
+ JSlider slider = new JSlider();
+ Hashtable table = slider.createStandardLabels(10);
+ harness.check(table.containsKey(new Integer(0)));
+ harness.check(table.containsKey(new Integer(10)));
+ harness.check(table.containsKey(new Integer(20)));
+ harness.check(table.containsKey(new Integer(30)));
+ harness.check(table.containsKey(new Integer(40)));
+ harness.check(table.containsKey(new Integer(50)));
+ harness.check(table.containsKey(new Integer(60)));
+ harness.check(table.containsKey(new Integer(70)));
+ harness.check(table.containsKey(new Integer(80)));
+ harness.check(table.containsKey(new Integer(90)));
+ harness.check(table.containsKey(new Integer(100)));
+
+ // try 0
+ boolean pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative
+ pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("createStandardLabels(int, int)");
+ JSlider slider = new JSlider();
+ Hashtable table = slider.createStandardLabels(10, 50);
+ harness.check(table.containsKey(new Integer(50)));
+ harness.check(table.containsKey(new Integer(60)));
+ harness.check(table.containsKey(new Integer(70)));
+ harness.check(table.containsKey(new Integer(80)));
+ harness.check(table.containsKey(new Integer(90)));
+ harness.check(table.containsKey(new Integer(100)));
+
+ table = slider.createStandardLabels(10, 51);
+ harness.check(table.containsKey(new Integer(51)));
+ harness.check(table.containsKey(new Integer(61)));
+ harness.check(table.containsKey(new Integer(71)));
+ harness.check(table.containsKey(new Integer(81)));
+ harness.check(table.containsKey(new Integer(91)));
+
+ table = slider.createStandardLabels(10, 100);
+ harness.check(table.containsKey(new Integer(100)));
+
+ // try 0 for increment
+ boolean pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(0, 50);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try negative increment
+ pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(-1, 50);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try initial value < minimum
+ pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(10, -50);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try initial value > maximum
+ pass = false;
+ try
+ {
+ /*Hashtable t1 =*/ slider.createStandardLabels(10, 110);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getExtent.java b/gnu/testlet/javax/swing/JSlider/getExtent.java
new file mode 100644
index 00000000..fd7b0653
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getExtent.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getExtent() method in the {@link JSlider} class.
+ */
+public class getExtent implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getExtent(), 0);
+
+ slider.setExtent(2);
+ harness.check(slider.getExtent(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getInverted.java b/gnu/testlet/javax/swing/JSlider/getInverted.java
new file mode 100644
index 00000000..f8b354dd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getInverted.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getInverted() method in the {@link JSlider} class.
+ */
+public class getInverted implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getInverted(), false);
+ slider.setInverted(true);
+ harness.check(slider.getInverted(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getLabelTable.java b/gnu/testlet/javax/swing/JSlider/getLabelTable.java
new file mode 100644
index 00000000..c2a8b4a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getLabelTable.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Hashtable;
+
+import javax.swing.JLabel;
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getLabelTable() method in the {@link JSlider} class.
+ */
+public class getLabelTable implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ Hashtable labels = new Hashtable();
+ labels.put(new Integer(1), new JLabel("Label 1"));
+ slider.setLabelTable(labels);
+ harness.check(slider.getLabelTable(), labels);
+
+ // try null table
+ slider.setLabelTable(null);
+ harness.check(slider.getLabelTable(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getMajorTickSpacing.java b/gnu/testlet/javax/swing/JSlider/getMajorTickSpacing.java
new file mode 100644
index 00000000..db77c4a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getMajorTickSpacing.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getMajorTickSpacing() method in the {@link JSlider}
+ * class.
+ */
+public class getMajorTickSpacing implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ slider.setMajorTickSpacing(10);
+ harness.check(slider.getMajorTickSpacing(), 10);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getMaximum.java b/gnu/testlet/javax/swing/JSlider/getMaximum.java
new file mode 100644
index 00000000..948c1653
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getMaximum.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getMaximum() method in the {@link JSlider} class.
+ */
+public class getMaximum implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setMaximum(99);
+ harness.check(slider.getMaximum(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getMinimum.java b/gnu/testlet/javax/swing/JSlider/getMinimum.java
new file mode 100644
index 00000000..1b55ac16
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getMinimum.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getMinimum() method in the {@link JSlider} class.
+ */
+public class getMinimum implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+
+ slider.setMinimum(-5);
+ harness.check(slider.getMinimum(), -5);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getMinorTickSpacing.java b/gnu/testlet/javax/swing/JSlider/getMinorTickSpacing.java
new file mode 100644
index 00000000..80c3d827
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getMinorTickSpacing.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getMinorTickSpacing() method in the {@link JSlider}
+ * class.
+ */
+public class getMinorTickSpacing implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ slider.setMinorTickSpacing(5);
+ harness.check(slider.getMinorTickSpacing(), 5);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getModel.java b/gnu/testlet/javax/swing/JSlider/getModel.java
new file mode 100644
index 00000000..8f7fe5a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getModel.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getModel() method in the {@link JSlider} class.
+ */
+public class getModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ DefaultBoundedRangeModel m = new DefaultBoundedRangeModel(3, 0, 1, 6);
+ slider.setModel(m);
+ harness.check(slider.getModel(), m);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getPaintLabels.java b/gnu/testlet/javax/swing/JSlider/getPaintLabels.java
new file mode 100644
index 00000000..2e2a34ce
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getPaintLabels.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getPaintLabels() method in the {@link JSlider}
+ * class.
+ */
+public class getPaintLabels implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ harness.check(slider.getPaintLabels(), false);
+ slider.setPaintLabels(true);
+ harness.check(slider.getPaintLabels(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getPaintTicks.java b/gnu/testlet/javax/swing/JSlider/getPaintTicks.java
new file mode 100644
index 00000000..9daa5444
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getPaintTicks.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getPaintTicks() method in the {@link JSlider} class.
+ */
+public class getPaintTicks implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getPaintTicks(), false);
+ slider.setPaintTicks(true);
+ harness.check(slider.getPaintTicks(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getPaintTrack.java b/gnu/testlet/javax/swing/JSlider/getPaintTrack.java
new file mode 100644
index 00000000..b2325adc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getPaintTrack.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getPaintTrack() method in the {@link JSlider} class.
+ */
+public class getPaintTrack implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getPaintTrack(), true);
+ slider.setPaintTrack(false);
+ harness.check(slider.getPaintTrack(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getSnapToTicks.java b/gnu/testlet/javax/swing/JSlider/getSnapToTicks.java
new file mode 100644
index 00000000..9c200589
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getSnapToTicks.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getSnapToTicks() method in the {@link JSlider} class.
+ */
+public class getSnapToTicks implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getSnapToTicks(), false);
+ slider.setSnapToTicks(true);
+ harness.check(slider.getSnapToTicks(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/getUIClassID.java b/gnu/testlet/javax/swing/JSlider/getUIClassID.java
new file mode 100644
index 00000000..149ef6cd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/getUIClassID.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the getUIClassID() method in the {@link JSlider} class.
+ */
+public class getUIClassID implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ harness.check(slider.getUIClassID(), "SliderUI");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setExtent.java b/gnu/testlet/javax/swing/JSlider/setExtent.java
new file mode 100644
index 00000000..a50bd6e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setExtent.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setExtent() method in the {@link JSlider} class.
+ */
+public class setExtent implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setExtent(2);
+ harness.check(slider.getExtent(), 2);
+
+ slider.setExtent(5);
+ harness.check(slider.getExtent(), 3);
+
+ // confirm that this fires a change event and not a property change event
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setExtent(0);
+ harness.check(listener1.event.getSource(), slider);
+ listener1.event = null;
+ harness.check(listener2.event, null);
+
+ // if the value doesn't change, there is no event
+ slider.setExtent(0);
+ harness.check(listener1.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setInverted.java b/gnu/testlet/javax/swing/JSlider/setInverted.java
new file mode 100644
index 00000000..4b52440c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setInverted.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setInverted() method in the {@link JSlider} class.
+ */
+public class setInverted implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ slider.setInverted(true);
+ harness.check(slider.getInverted(), true);
+
+ // confirm that this fires a PropertyChangeEvent and not a ChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setInverted(false);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), Boolean.TRUE);
+ harness.check(listener2.event.getNewValue(), Boolean.FALSE);
+ harness.check(listener2.event.getPropertyName(), "inverted");
+ harness.check(listener2.event.getPropagationId(), null);
+ listener2.event = null;
+
+ // check that no event is fired if the property doesn't change
+ slider.setInverted(false);
+ harness.check(listener2.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setLabelTable.java b/gnu/testlet/javax/swing/JSlider/setLabelTable.java
new file mode 100644
index 00000000..0d4e085c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setLabelTable.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+// 2006 Red Hat
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import javax.swing.JLabel;
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setLabelTable() method in the {@link JSlider} class.
+ */
+public class setLabelTable implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ Hashtable labels = new Hashtable();
+ labels.put(new Integer(1), new JLabel("Label 1"));
+ slider.setLabelTable(labels);
+ harness.check(slider.getLabelTable(), labels);
+
+ // confirm that this fires a PropertyChangeEvent and no ChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ Hashtable labels2 = new Hashtable();
+ labels2.put(new Integer(2), new JLabel("Label 2"));
+ slider.setLabelTable(labels2);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), labels);
+ harness.check(listener2.event.getNewValue(), labels2);
+ harness.check(listener2.event.getPropertyName(), "labelTable");
+ harness.check(listener2.event.getPropagationId(), null);
+ listener2.event = null;
+
+ // check that there is no event if the property is not changed
+ slider.setLabelTable(labels2);
+ harness.check(listener2.event, null);
+
+ // try null table
+ slider.setLabelTable(null);
+ harness.check(slider.getLabelTable(), null);
+
+ // This next test shows that it is not necessary to cast
+ // "list.nextElement()" to type JLabel.
+ // NOTE: With the casting, a ClassCastException was thrown.
+ boolean pass = false;
+ Dictionary labelTable = new Hashtable();
+ labelTable.put("a", "b");
+ try
+ {
+ slider.setLabelTable(labelTable);
+ pass = true;
+ }
+ catch (ClassCastException e)
+ {
+ // Do nothing.
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setMajorTickSpacing.java b/gnu/testlet/javax/swing/JSlider/setMajorTickSpacing.java
new file mode 100644
index 00000000..460d583a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setMajorTickSpacing.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setMajorTickSpacing() method in the {@link JSlider}
+ * class.
+ */
+public class setMajorTickSpacing implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ slider.setMajorTickSpacing(10);
+ harness.check(slider.getMajorTickSpacing(), 10);
+ harness.check(slider.getLabelTable(), null);
+
+ // confirm that this fires a PropertyChangeEvent and no ChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setMajorTickSpacing(11);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), new Integer(10));
+ harness.check(listener2.event.getNewValue(), new Integer(11));
+ harness.check(listener2.event.getPropertyName(), "majorTickSpacing");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event occurs if the property value is not different
+ listener2.event = null;
+ slider.setMajorTickSpacing(11);
+ harness.check(listener2.event, null);
+
+
+ slider.setMajorTickSpacing(10);
+ slider.setPaintLabels(true);
+ harness.check(slider.getLabelTable().size(), 6);
+ slider.setMajorTickSpacing(25);
+ harness.check(slider.getLabelTable().size(), 6); // not updated right away
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setMaximum.java b/gnu/testlet/javax/swing/JSlider/setMaximum.java
new file mode 100644
index 00000000..9caade5c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setMaximum.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setMaximum() method in the {@link JSlider} class.
+ */
+public class setMaximum implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setMaximum(99);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 99);
+ harness.check(slider.getValue(), 7);
+
+ slider.setMaximum(3);
+ harness.check(slider.getMinimum(), 3);
+ harness.check(slider.getMaximum(), 3);
+ harness.check(slider.getValue(), 3);
+
+ // confirm that this fires a ChangeEvent AND a PropertyChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setMaximum(4);
+ harness.check(listener1.event.getSource(), slider);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), new Integer(3));
+ harness.check(listener2.event.getNewValue(), new Integer(4));
+ harness.check(listener2.event.getPropertyName(), "maximum");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // if the value isn't changed, there is no event
+ listener1.event = null;
+ slider.setMaximum(4);
+ harness.check(listener1.event, null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setMinimum.java b/gnu/testlet/javax/swing/JSlider/setMinimum.java
new file mode 100644
index 00000000..de14b659
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setMinimum.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setMinimum() method in the {@link JSlider} class.
+ */
+public class setMinimum implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setMinimum(-5);
+ harness.check(slider.getMinimum(), -5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setMinimum(99);
+ harness.check(slider.getMinimum(), 99);
+ harness.check(slider.getMaximum(), 99);
+ harness.check(slider.getValue(), 99);
+
+ // confirm that this fires a ChangeEvent AND a PropertyChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setMinimum(10);
+ harness.check(listener1.event.getSource(), slider);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), new Integer(99));
+ harness.check(listener2.event.getNewValue(), new Integer(10));
+ harness.check(listener2.event.getPropertyName(), "minimum");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // if the value isn't changed, there is no event
+ listener1.event = null;
+ listener2.event = null;
+ slider.setMinimum(10);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event, null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setMinorTickSpacing.java b/gnu/testlet/javax/swing/JSlider/setMinorTickSpacing.java
new file mode 100644
index 00000000..29d022b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setMinorTickSpacing.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setMinorTickSpacing() method in the {@link JSlider}
+ * class.
+ */
+public class setMinorTickSpacing implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ slider.setMinorTickSpacing(5);
+ harness.check(slider.getMinorTickSpacing(), 5);
+
+ // confirm that this fires no change event
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setMinorTickSpacing(2);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), new Integer(5));
+ harness.check(listener2.event.getNewValue(), new Integer(2));
+ harness.check(listener2.event.getPropertyName(), "minorTickSpacing");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event occurs if the property value is not different
+ listener2.event = null;
+ slider.setMinorTickSpacing(2);
+ harness.check(listener2.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setModel.java b/gnu/testlet/javax/swing/JSlider/setModel.java
new file mode 100644
index 00000000..0b63c8df
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setModel.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.BoundedRangeModel;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setModel() method in the {@link JSlider} class.
+ */
+public class setModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ BoundedRangeModel m1 = slider.getModel();
+ MyChangeListener listener1= new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ DefaultBoundedRangeModel m2 = new DefaultBoundedRangeModel(3, 0, 1, 6);
+ slider.setModel(m2);
+ harness.check(slider.getModel(), m2);
+ harness.check(slider.getValue(), 3);
+ harness.check(slider.getExtent(), 0);
+ harness.check(slider.getMinimum(), 1);
+ harness.check(slider.getMaximum(), 6);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), m1);
+ harness.check(listener2.event.getNewValue(), m2);
+ harness.check(listener2.event.getPropertyName(), "model");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the model is not different
+ listener2.event = null;
+ slider.setModel(m2);
+ harness.check(listener2.event, null);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ slider.setModel(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setOrientation.java b/gnu/testlet/javax/swing/JSlider/setOrientation.java
new file mode 100644
index 00000000..32a42de6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setOrientation.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setOrientation() method in the {@link JSlider} class.
+ */
+public class setOrientation implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setOrientation(JSlider.VERTICAL);
+ harness.check(slider.getOrientation(), JSlider.VERTICAL);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(),
+ new Integer(JSlider.HORIZONTAL));
+ harness.check(listener2.event.getNewValue(), new Integer(JSlider.VERTICAL));
+ harness.check(listener2.event.getPropertyName(), "orientation");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the model is not different
+ listener2.event = null;
+ slider.setOrientation(JSlider.VERTICAL);
+ harness.check(listener2.event, null);
+
+ boolean pass = false;
+ try
+ {
+ slider.setOrientation(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setPaintLabels.java b/gnu/testlet/javax/swing/JSlider/setPaintLabels.java
new file mode 100644
index 00000000..df161c46
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setPaintLabels.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Dictionary;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setPaintLabels() method in the {@link JSlider}
+ * class.
+ */
+public class setPaintLabels implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testLabelTable(harness);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setMajorTickSpacing(10);
+ slider.setPaintLabels(true);
+ harness.check(slider.getPaintLabels(), true);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), Boolean.FALSE);
+ harness.check(listener2.event.getNewValue(), Boolean.TRUE);
+ harness.check(listener2.event.getPropertyName(), "paintLabels");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the flag is not different
+ listener2.event = null;
+ slider.setPaintLabels(true);
+ harness.check(listener2.event, null);
+
+ }
+
+ public void testLabelTable(TestHarness harness)
+ {
+ JSlider slider = new JSlider(50, 100);
+ slider.setMajorTickSpacing(10);
+ harness.check(slider.getLabelTable(), null);
+ slider.setPaintLabels(true);
+ harness.check(slider.getPaintLabels(), true);
+ Dictionary labels = slider.getLabelTable();
+ harness.check(labels.size(), 6);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setPaintTicks.java b/gnu/testlet/javax/swing/JSlider/setPaintTicks.java
new file mode 100644
index 00000000..1d618ca6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setPaintTicks.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setPaintTicks() method in the {@link JSlider} class.
+ */
+public class setPaintTicks implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ slider.setPaintTicks(true);
+ harness.check(slider.getPaintTicks(), true);
+
+ // confirm that this fires no change event
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setPaintTicks(false);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), Boolean.TRUE);
+ harness.check(listener2.event.getNewValue(), Boolean.FALSE);
+ harness.check(listener2.event.getPropertyName(), "paintTicks");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the flag is not different
+ listener2.event = null;
+ slider.setPaintTicks(false);
+ harness.check(listener2.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setPaintTrack.java b/gnu/testlet/javax/swing/JSlider/setPaintTrack.java
new file mode 100644
index 00000000..5ad87dd9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setPaintTrack.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setPaintTrack() method in the {@link JSlider} class.
+ */
+public class setPaintTrack implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ slider.setPaintTrack(true);
+ harness.check(slider.getPaintTrack(), true);
+
+ // confirm that this fires a PropertyChangeEvent and no ChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setPaintTrack(false);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), Boolean.TRUE);
+ harness.check(listener2.event.getNewValue(), Boolean.FALSE);
+ harness.check(listener2.event.getPropertyName(), "paintTrack");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the flag is not different
+ listener2.event = null;
+ slider.setPaintTrack(false);
+ harness.check(listener2.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setSnapToTicks.java b/gnu/testlet/javax/swing/JSlider/setSnapToTicks.java
new file mode 100644
index 00000000..6db80f4a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setSnapToTicks.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setSnapToTicks() method in the {@link JSlider} class.
+ */
+public class setSnapToTicks implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ slider.setSnapToTicks(true);
+ harness.check(slider.getSnapToTicks(), true);
+
+ // confirm that this fires a PropertyChangeEvent and no ChangeEvent
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setSnapToTicks(false);
+ harness.check(listener1.event, null);
+ harness.check(listener2.event.getSource(), slider);
+ harness.check(listener2.event.getOldValue(), Boolean.TRUE);
+ harness.check(listener2.event.getNewValue(), Boolean.FALSE);
+ harness.check(listener2.event.getPropertyName(), "snapToTicks");
+ harness.check(listener2.event.getPropagationId(), null);
+
+ // check that no event is generated if the flag is not different
+ listener2.event = null;
+ slider.setSnapToTicks(false);
+ harness.check(listener2.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSlider/setValue.java b/gnu/testlet/javax/swing/JSlider/setValue.java
new file mode 100644
index 00000000..4a2a9b31
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSlider/setValue.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+// Uses: MyChangeListener MyPropertyChangeListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JSlider;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+
+/**
+ * Some checks for the setValue() method in the {@link JSlider} class.
+ */
+public class setValue implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider(5, 10);
+ harness.check(slider.getMinimum(), 5);
+ harness.check(slider.getMaximum(), 10);
+ harness.check(slider.getValue(), 7);
+
+ slider.setValue(6);
+ harness.check(slider.getValue(), 6);
+
+ slider.setValue(4);
+ harness.check(slider.getValue(), 5);
+
+ // confirm that this fires a change event
+ MyChangeListener listener1 = new MyChangeListener();
+ slider.addChangeListener(listener1);
+ MyPropertyChangeListener listener2 = new MyPropertyChangeListener();
+ slider.addPropertyChangeListener(listener2);
+ slider.setValue(6);
+ harness.check(listener1.event.getSource(), slider);
+ harness.check(listener2.event, null);
+
+ // if the value doesn't change, there is no event
+ listener1.event = null;
+ slider.setValue(6);
+ harness.check(listener1.event, null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/CVS/Entries b/gnu/testlet/javax/swing/JSpinner/CVS/Entries
new file mode 100644
index 00000000..37b61302
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/CVS/Entries
@@ -0,0 +1,14 @@
+/MyJSpinner.java/1.1/Wed Feb 15 14:38:32 2006//
+/addChangeListener.java/1.1/Wed Feb 15 14:38:32 2006//
+/constructors.java/1.2/Mon Jul 24 22:28:58 2006//
+/createEditor.java/1.1/Wed Feb 15 14:38:32 2006//
+/getChangeListeners.java/1.1/Wed Feb 15 14:38:32 2006//
+/getEditor.java/1.1/Wed Feb 15 14:38:32 2006//
+/getModel.java/1.1/Wed Feb 15 14:38:32 2006//
+/getNextValue.java/1.1/Wed Feb 15 14:38:32 2006//
+/getPreviousValue.java/1.1/Wed Feb 15 14:38:32 2006//
+/getUIClassID.java/1.1/Wed Feb 15 14:38:32 2006//
+/removeChangeListener.java/1.1/Wed Feb 15 14:38:32 2006//
+/setEditor.java/1.1/Wed Feb 15 14:38:32 2006//
+/setModel.java/1.1/Wed Feb 15 14:38:32 2006//
+D
diff --git a/gnu/testlet/javax/swing/JSpinner/CVS/Entries.Log b/gnu/testlet/javax/swing/JSpinner/CVS/Entries.Log
new file mode 100644
index 00000000..b4afa6df
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/DateEditor////
+A D/DefaultEditor////
+A D/ListEditor////
+A D/NumberEditor////
diff --git a/gnu/testlet/javax/swing/JSpinner/CVS/Repository b/gnu/testlet/javax/swing/JSpinner/CVS/Repository
new file mode 100644
index 00000000..a522103d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSpinner
diff --git a/gnu/testlet/javax/swing/JSpinner/CVS/Root b/gnu/testlet/javax/swing/JSpinner/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Entries b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Entries
new file mode 100644
index 00000000..2c4c8221
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Entries
@@ -0,0 +1,4 @@
+/constructors.java/1.1/Wed Feb 15 14:58:43 2006//
+/getFormat.java/1.1/Wed Feb 15 14:58:43 2006//
+/getModel.java/1.1/Wed Feb 15 14:58:43 2006//
+D
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Repository b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Repository
new file mode 100644
index 00000000..1801d252
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSpinner/DateEditor
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Root b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/constructors.java b/gnu/testlet/javax/swing/JSpinner/DateEditor/constructors.java
new file mode 100644
index 00000000..f40463cd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/constructors.java
@@ -0,0 +1,117 @@
+/* constructors.java -- Checks for the constructors in the DateEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DateEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+import javax.swing.text.DateFormatter;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner)");
+ SpinnerDateModel m = new SpinnerDateModel();
+ JSpinner s = new JSpinner(m);
+ JSpinner.DateEditor e = new JSpinner.DateEditor(s);
+ harness.check(e.getFormat(), DateFormat.getInstance());
+ harness.check(e.getLayout(), e);
+ JFormattedTextField ftf = e.getTextField();
+ DateFormatter nf = (DateFormatter) ftf.getFormatter();
+ harness.check(nf.getMinimum(), null);
+ harness.check(nf.getMaximum(), null);
+
+ m = new SpinnerDateModel(new Date(50L), new Date(0L), new Date(100L),
+ Calendar.MILLISECOND);
+ s = new JSpinner(m);
+ e = new JSpinner.DateEditor(s);
+ harness.check(e.getFormat(), DateFormat.getInstance());
+ ftf = e.getTextField();
+ nf = (DateFormatter) ftf.getFormatter();
+ harness.check(nf.getMinimum(), new Date(0L));
+ harness.check(nf.getMaximum(), new Date(100L));
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ e = new JSpinner.DateEditor(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner, String)");
+ SpinnerDateModel m = new SpinnerDateModel();
+ JSpinner s = new JSpinner(m);
+ JSpinner.DateEditor e = new JSpinner.DateEditor(s, "S");
+ harness.check(e.getFormat(), new SimpleDateFormat("S"));
+ harness.check(e.getLayout(), e);
+
+ // try null spinner argument
+ boolean pass = false;
+ try
+ {
+ e = new JSpinner.DateEditor(null, "S");
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null format argument
+ pass = false;
+ try
+ {
+ e = new JSpinner.DateEditor(s, null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/getFormat.java b/gnu/testlet/javax/swing/JSpinner/DateEditor/getFormat.java
new file mode 100644
index 00000000..382a4957
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/getFormat.java
@@ -0,0 +1,49 @@
+/* getFormat.java -- Checks for the getFormat() method in the DateEditor
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DateEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DateFormat;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+import javax.swing.text.DefaultFormatterFactory;
+
+public class getFormat implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerDateModel m = new SpinnerDateModel();
+ JSpinner s = new JSpinner(m);
+ JSpinner.DateEditor e = new JSpinner.DateEditor(s);
+ harness.check(e.getTextField().getFormatterFactory()
+ instanceof DefaultFormatterFactory);
+ harness.check(e.getFormat(), DateFormat.getInstance());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DateEditor/getModel.java b/gnu/testlet/javax/swing/JSpinner/DateEditor/getModel.java
new file mode 100644
index 00000000..782a9545
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DateEditor/getModel.java
@@ -0,0 +1,48 @@
+/* getModel.java -- Checks for the getModel() method in the
+ JSpinner.DateEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DateEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+
+public class getModel implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerDateModel m = new SpinnerDateModel(new Date(50L), new Date(0L),
+ new Date(100L), Calendar.MILLISECOND);
+ JSpinner s = new JSpinner(m);
+ JSpinner.DateEditor editor = (JSpinner.DateEditor) s.getEditor();
+ harness.check(editor.getModel(), m);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Entries b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Entries
new file mode 100644
index 00000000..3b975008
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Entries
@@ -0,0 +1,7 @@
+/MyDefaultEditor.java/1.1/Wed Feb 15 14:47:55 2006//
+/constructor.java/1.1/Wed Feb 15 14:47:55 2006//
+/minimumLayoutSize.java/1.1/Wed Feb 15 14:47:55 2006//
+/preferredLayoutSize.java/1.1/Wed Feb 15 14:47:55 2006//
+/propertyChange.java/1.2/Wed May 21 13:30:47 2008//
+/stateChanged.java/1.2/Wed May 21 13:30:47 2008//
+D
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Repository b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Repository
new file mode 100644
index 00000000..5a392d18
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSpinner/DefaultEditor
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Root b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/MyDefaultEditor.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/MyDefaultEditor.java
new file mode 100644
index 00000000..c62e60a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/MyDefaultEditor.java
@@ -0,0 +1,56 @@
+/* MyDefaultEditor.java -- Exposes some methods in DefaultEditor
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import java.beans.PropertyChangeEvent;
+import java.util.List;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+
+public class MyDefaultEditor extends JSpinner.DefaultEditor
+{
+ public List stateChangeEvents = new java.util.ArrayList();
+
+ public List propertyChangeEvents = new java.util.ArrayList();
+
+ public MyDefaultEditor(JSpinner spinner)
+ {
+ super(spinner);
+ }
+
+ public void stateChanged(ChangeEvent event)
+ {
+ super.stateChanged(event);
+ if (stateChangeEvents != null)
+ stateChangeEvents.add(event);
+ }
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ super.propertyChange(event);
+ if (propertyChangeEvents != null)
+ propertyChangeEvents.add(event);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/constructor.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/constructor.java
new file mode 100644
index 00000000..22390ad2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/constructor.java
@@ -0,0 +1,56 @@
+/* constructor.java -- Checks for the constructor in the DefaultEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+import java.util.EventListener;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeListener;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner)");
+ JSpinner s = new JSpinner();
+ JSpinner.DefaultEditor e = new JSpinner.DefaultEditor(s);
+ harness.check(e.getLayout(), e);
+ harness.check(e.getTextField().getValue(), new Integer(0));
+
+ // the editor should be a listener on the spinner
+ EventListener[] sl = s.getListeners(ChangeListener.class);
+ harness.check(Arrays.asList(sl).contains(e));
+
+ // the editor should be listening to PropertyChangeEvents in the
+ // text field
+ EventListener[] tfl = e.getTextField().getListeners(
+ PropertyChangeListener.class);
+ harness.check(Arrays.asList(tfl).contains(e));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/minimumLayoutSize.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/minimumLayoutSize.java
new file mode 100644
index 00000000..931fb8b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/minimumLayoutSize.java
@@ -0,0 +1,49 @@
+/* minimumLayoutSize.java -- Checks for the minimumLayoutSize() method in the
+ JSpinner.DefaultEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Insets;
+
+import javax.swing.JSpinner;
+
+public class minimumLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(Container)");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor editor = (JSpinner.NumberEditor) s.getEditor();
+ Dimension tfSize = editor.getTextField().getMinimumSize();
+ Insets insets = editor.getInsets();
+ Dimension result = editor.minimumLayoutSize(editor);
+ harness.check(result.width, tfSize.width + insets.left + insets.right);
+ harness.check(result.height, tfSize.height + insets.top + insets.bottom);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/preferredLayoutSize.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/preferredLayoutSize.java
new file mode 100644
index 00000000..445902d1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/preferredLayoutSize.java
@@ -0,0 +1,49 @@
+/* preferredLayoutSize.java -- Checks for the preferredLayoutSize() method in
+ the JSpinner.DefaultEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Insets;
+
+import javax.swing.JSpinner;
+
+public class preferredLayoutSize implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(Container)");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor editor = (JSpinner.NumberEditor) s.getEditor();
+ Dimension tfSize = editor.getTextField().getPreferredSize();
+ Insets insets = editor.getInsets();
+ Dimension result = editor.preferredLayoutSize(editor);
+ harness.check(result.width, tfSize.width + insets.left + insets.right);
+ harness.check(result.height, tfSize.height + insets.top + insets.bottom);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java
new file mode 100644
index 00000000..4f60d1e0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/propertyChange.java
@@ -0,0 +1,52 @@
+/* propertyChange.java -- Checks for the propertyChange() method in the
+ JSpinner.DefaultEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: FIXME
+// Uses: MyDefaultEditor
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+
+import javax.swing.JSpinner;
+
+public class propertyChange implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeEvent)");
+ JSpinner s = new JSpinner();
+ MyDefaultEditor e = new MyDefaultEditor(s);
+ s.setEditor(e);
+ e.propertyChangeEvents.clear();
+ e.getTextField().setValue(new Integer(88));
+ harness.check(e.propertyChangeEvents.size(), 1);
+ PropertyChangeEvent event = (PropertyChangeEvent)
+ e.propertyChangeEvents.get(0);
+ harness.check(event.getPropertyName(), "value");
+ harness.check(e.getTextField().getText(), "88");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java
new file mode 100644
index 00000000..f7cb26b2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/DefaultEditor/stateChanged.java
@@ -0,0 +1,49 @@
+/* stateChanged.java -- Checks for the stateChanged() method in the
+ DefaultEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyDefaultEditor
+
+package gnu.testlet.javax.swing.JSpinner.DefaultEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+
+public class stateChanged implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(ChangeEvent)");
+ JSpinner s = new JSpinner();
+ MyDefaultEditor e = new MyDefaultEditor(s);
+ s.setEditor(e);
+ s.getModel().setValue(new Integer(99));
+ harness.check(e.stateChangeEvents.size(), 1);
+ ChangeEvent event = (ChangeEvent) e.stateChangeEvents.get(0);
+ harness.check(event.getSource(), s);
+ harness.check(e.getTextField().getText(), "99");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Entries b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Entries
new file mode 100644
index 00000000..af5cfc48
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Entries
@@ -0,0 +1,3 @@
+/constructor.java/1.1/Wed Feb 15 15:05:19 2006//
+/getModel.java/1.2/Tue Feb 21 09:24:44 2006//
+D
diff --git a/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Repository b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Repository
new file mode 100644
index 00000000..e14d6a26
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSpinner/ListEditor
diff --git a/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Root b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/ListEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSpinner/ListEditor/constructor.java b/gnu/testlet/javax/swing/JSpinner/ListEditor/constructor.java
new file mode 100644
index 00000000..5184a22b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/ListEditor/constructor.java
@@ -0,0 +1,58 @@
+/* constructor.java -- Checks for the constructor in the ListEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.ListEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+import java.util.EventListener;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerListModel;
+import javax.swing.event.ChangeListener;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner)");
+ SpinnerListModel m = new SpinnerListModel(new String[] {"A", "B", "C"});
+ JSpinner s = new JSpinner(m);
+ JSpinner.DefaultEditor e = new JSpinner.DefaultEditor(s);
+ harness.check(e.getLayout(), e);
+ harness.check(e.getTextField().getValue(), "A");
+
+ // the editor should be a listener on the spinner
+ EventListener[] sl = s.getListeners(ChangeListener.class);
+ harness.check(Arrays.asList(sl).contains(e));
+
+ // the editor should be listening to PropertyChangeEvents in the
+ // text field
+ EventListener[] tfl = e.getTextField().getListeners(
+ PropertyChangeListener.class);
+ harness.check(Arrays.asList(tfl).contains(e));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java b/gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java
new file mode 100644
index 00000000..04b828c8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/ListEditor/getModel.java
@@ -0,0 +1,42 @@
+/* getModel.java -- Checks for the getModel() method in the ListEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.ListEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerListModel;
+
+public class getModel implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerListModel m = new SpinnerListModel(new String[] {"A", "B", "C"});
+ JSpinner s = new JSpinner(m);
+ JSpinner.ListEditor editor = (JSpinner.ListEditor) s.getEditor();
+ harness.check(editor.getModel(), m);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/MyJSpinner.java b/gnu/testlet/javax/swing/JSpinner/MyJSpinner.java
new file mode 100644
index 00000000..7a013ebd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/MyJSpinner.java
@@ -0,0 +1,47 @@
+/* MyJSpinner.java -- Support class
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import javax.swing.JComponent;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerModel;
+
+public class MyJSpinner extends JSpinner
+{
+ public MyJSpinner()
+ {
+ super();
+ }
+
+ public MyJSpinner(SpinnerModel m)
+ {
+ super(m);
+ }
+
+ public JComponent createEditor(SpinnerModel model)
+ {
+ return super.createEditor(model);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Entries b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Entries
new file mode 100644
index 00000000..4e27df67
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Entries
@@ -0,0 +1,4 @@
+/constructors.java/1.1/Wed Feb 15 15:12:45 2006//
+/getFormat.java/1.1/Wed Feb 15 15:12:45 2006//
+/getModel.java/1.1/Wed Feb 15 15:12:45 2006//
+D
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Repository b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Repository
new file mode 100644
index 00000000..9906cd1d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSpinner/NumberEditor
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Root b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/constructors.java b/gnu/testlet/javax/swing/JSpinner/NumberEditor/constructors.java
new file mode 100644
index 00000000..c4f3e857
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/constructors.java
@@ -0,0 +1,112 @@
+/* constructors.java -- Checks for the constructors in the NumberEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.NumberEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.text.NumberFormatter;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner)");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor e = new JSpinner.NumberEditor(s);
+ harness.check(e.getLayout(), e);
+ harness.check(e.getFormat(), NumberFormat.getInstance());
+ JFormattedTextField ftf = e.getTextField();
+ NumberFormatter nf = (NumberFormatter) ftf.getFormatter();
+ harness.check(nf.getMinimum(), null);
+ harness.check(nf.getMaximum(), null);
+
+ SpinnerNumberModel m = new SpinnerNumberModel(50.0, 0.0, 100.0, 5.0);
+ s = new JSpinner(m);
+ e = new JSpinner.NumberEditor(s);
+ harness.check(e.getFormat(), NumberFormat.getInstance());
+ ftf = e.getTextField();
+ nf = (NumberFormatter) ftf.getFormatter();
+ harness.check(nf.getMinimum(), new Double(0.0));
+ harness.check(nf.getMaximum(), new Double(100.0));
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ e = new JSpinner.NumberEditor(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(JSpinner, String)");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor e = new JSpinner.NumberEditor(s, "0.00");
+ harness.check(e.getLayout(), e);
+ harness.check(e.getFormat(), new DecimalFormat("0.00"));
+
+ // try null spinner argument
+ boolean pass = false;
+ try
+ {
+ e = new JSpinner.NumberEditor(null, "0.00");
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null format argument
+ pass = false;
+ try
+ {
+ e = new JSpinner.NumberEditor(s, null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/getFormat.java b/gnu/testlet/javax/swing/JSpinner/NumberEditor/getFormat.java
new file mode 100644
index 00000000..35144991
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/getFormat.java
@@ -0,0 +1,47 @@
+/* getFormat.java -- Checks for the getFormat() method in the NumberEditor
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.NumberEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.NumberFormat;
+
+import javax.swing.JSpinner;
+import javax.swing.text.DefaultFormatterFactory;
+
+public class getFormat implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor e = new JSpinner.NumberEditor(s);
+ harness.check(e.getTextField().getFormatterFactory()
+ instanceof DefaultFormatterFactory);
+ harness.check(e.getFormat(), NumberFormat.getInstance());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/NumberEditor/getModel.java b/gnu/testlet/javax/swing/JSpinner/NumberEditor/getModel.java
new file mode 100644
index 00000000..ba6a2925
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/NumberEditor/getModel.java
@@ -0,0 +1,44 @@
+/* getModel.java -- Checks for the getModel() method in the
+ JSpinner.NumberEditor class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner.NumberEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+
+public class getModel implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerNumberModel m = new SpinnerNumberModel(50.0, 0.0, 100.0, 5.0);
+ JSpinner s = new JSpinner(m);
+ JSpinner.NumberEditor editor = (JSpinner.NumberEditor) s.getEditor();
+ harness.check(editor.getModel(), m);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/addChangeListener.java b/gnu/testlet/javax/swing/JSpinner/addChangeListener.java
new file mode 100644
index 00000000..8cffdcc2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/addChangeListener.java
@@ -0,0 +1,67 @@
+/* addChangeListener.java -- Checks for the addChangeListener() method in the
+ JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class addChangeListener implements Testlet, ChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void stateChanged(ChangeEvent event)
+ {
+ this.events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("addChangeListener()");
+ JSpinner s = new JSpinner();
+ s.addChangeListener(this);
+ s.getModel().setValue(new Integer(11));
+ harness.check(events.size(), 1);
+ ChangeEvent e = (ChangeEvent) events.get(0);
+ harness.check(e.getSource(), s);
+
+ // try null listener - it is permitted
+ boolean pass = true;
+ try
+ {
+ s.addChangeListener(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/constructors.java b/gnu/testlet/javax/swing/JSpinner/constructors.java
new file mode 100644
index 00000000..d646ceed
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/constructors.java
@@ -0,0 +1,107 @@
+/* constructors.java -- Some checks for the constructors in the JSpinner class
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.EventListener;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.event.ChangeListener;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the constructors in the {@link JSpinner} class.
+ */
+public class constructors implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ constructor1(harness);
+ constructor2(harness);
+ }
+
+ public void constructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+
+ // use a known look and feel
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ harness.fail(e.toString());
+ }
+
+ SpinnerNumberModel m = new SpinnerNumberModel();
+ JSpinner spinner = new JSpinner(m);
+ harness.check(spinner.getValue(), new Integer(0));
+ harness.check(spinner.getEditor() instanceof JSpinner.NumberEditor);
+
+ // the model has a listener, but it isn't the spinner, editor or UI
+ // some private class is listening and passing on events
+ EventListener[] mListeners = m.getListeners(ChangeListener.class);
+ harness.check(mListeners.length, 1);
+ harness.check(!Arrays.asList(mListeners).contains(spinner));
+ harness.check(!Arrays.asList(mListeners).contains(spinner.getUI()));
+ harness.check(!Arrays.asList(mListeners).contains(spinner.getEditor()));
+ }
+
+ public void constructor2(TestHarness harness)
+ {
+ harness.checkPoint("(SpinnerModel)");
+ SpinnerNumberModel m = new SpinnerNumberModel(5, 0, 10, 1);
+ JSpinner spinner = new JSpinner(m);
+ harness.check(spinner.getValue(), new Integer(5));
+ harness.check(spinner.getEditor() instanceof JSpinner.NumberEditor);
+
+ // try null model
+ boolean pass = false;
+ try
+ {
+ /*JSpinner s =*/ new JSpinner(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JSpinner/createEditor.java b/gnu/testlet/javax/swing/JSpinner/createEditor.java
new file mode 100644
index 00000000..515dbf8e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/createEditor.java
@@ -0,0 +1,74 @@
+/* createEditor.java -- Checks for the createEditor() method in the JSpinner
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyJSpinner
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EventListener;
+
+import javax.swing.JComponent;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+import javax.swing.SpinnerListModel;
+import javax.swing.SpinnerModel;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeListener;
+
+public class createEditor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(SpinnerModel)");
+ MyJSpinner s1 = new MyJSpinner();
+ SpinnerModel m1 = new SpinnerNumberModel();
+ JComponent e1 = s1.createEditor(m1);
+ harness.check(e1 instanceof JSpinner.NumberEditor);
+ // no listeners added to the editor yet
+ EventListener[] e1l = e1.getListeners(ChangeListener.class);
+ harness.check(e1l.length, 0);
+
+ SpinnerModel m2 = new SpinnerDateModel();
+ MyJSpinner s2 = new MyJSpinner(m2);
+ JComponent e2 = s2.createEditor(m2);
+ harness.check(e2 instanceof JSpinner.DateEditor);
+ // no listeners added to the editor yet
+ EventListener[] e2l = e2.getListeners(ChangeListener.class);
+ harness.check(e2l.length, 0);
+
+ SpinnerModel m3 = new SpinnerListModel();
+ MyJSpinner s3 = new MyJSpinner(m3);
+ JComponent e3 = s3.createEditor(m3);
+ harness.check(e3 instanceof JSpinner.ListEditor);
+ // no listeners added to the editor yet
+ EventListener[] e3l = e3.getListeners(ChangeListener.class);
+ harness.check(e3l.length, 0);
+
+ // try null argument
+ e3 = s3.createEditor(null);
+ harness.check(e3 instanceof JSpinner.DefaultEditor);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/getChangeListeners.java b/gnu/testlet/javax/swing/JSpinner/getChangeListeners.java
new file mode 100644
index 00000000..bd2982b2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getChangeListeners.java
@@ -0,0 +1,64 @@
+/* getChangeListeners.java -- Checks for the getChangeListeners() method in the
+ JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class getChangeListeners implements Testlet, ChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void stateChanged(ChangeEvent event)
+ {
+ this.events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JSpinner s = new JSpinner();
+ ChangeListener[] cl = s.getChangeListeners();
+ harness.check(cl.length, 1);
+ harness.check(cl[0], s.getEditor());
+
+ s.addChangeListener(this);
+ cl = s.getChangeListeners();
+ harness.check(cl.length, 2);
+ harness.check(Arrays.asList(cl).contains(this));
+
+ s.removeChangeListener(this);
+ cl = s.getChangeListeners();
+ harness.check(cl.length, 1);
+ harness.check(!Arrays.asList(cl).contains(this));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/getEditor.java b/gnu/testlet/javax/swing/JSpinner/getEditor.java
new file mode 100644
index 00000000..449e1627
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getEditor.java
@@ -0,0 +1,44 @@
+/* getEditor.java -- Checks for the getEditor() method in the JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+
+public class getEditor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JSpinner s = new JSpinner();
+ JSpinner.NumberEditor e = new JSpinner.NumberEditor(s);
+ s.setEditor(e);
+ harness.check(s.getEditor(), e);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/JSpinner/getModel.java b/gnu/testlet/javax/swing/JSpinner/getModel.java
new file mode 100644
index 00000000..79842c78
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getModel.java
@@ -0,0 +1,44 @@
+/* getModel.java -- Checks for the getModel() method in the JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+
+public class getModel implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JSpinner s = new JSpinner();
+ SpinnerDateModel m = new SpinnerDateModel();
+ s.setModel(m);
+ harness.check(s.getModel(), m);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/getNextValue.java b/gnu/testlet/javax/swing/JSpinner/getNextValue.java
new file mode 100644
index 00000000..13b2fc0f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getNextValue.java
@@ -0,0 +1,51 @@
+/* getNextValue.java -- some checks for the getNextValue() method in the
+ JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+
+public class getNextValue implements Testlet {
+
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ JSpinner s = new JSpinner(m);
+ harness.check(s.getValue(), new Double(2.0));
+ harness.check(s.getNextValue(), new Double(2.5));
+
+ // accessing the next value doesn't update the current value
+ harness.check(s.getValue(), new Double(2.0));
+ s.setValue(new Double(2.5));
+ harness.check(s.getNextValue(), new Double(3.0));
+ s.setValue(new Double(3.0));
+ harness.check(s.getNextValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/getPreviousValue.java b/gnu/testlet/javax/swing/JSpinner/getPreviousValue.java
new file mode 100644
index 00000000..18763783
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getPreviousValue.java
@@ -0,0 +1,50 @@
+/* getPreviousValue.java -- some checks for the getPreviousValue() method in the
+ JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+
+public class getPreviousValue implements Testlet {
+
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ JSpinner s = new JSpinner(m);
+ harness.check(s.getValue(), new Double(2.0));
+ harness.check(s.getPreviousValue(), new Double(1.5));
+ // accessing the previous value doesn't update the current value
+ harness.check(s.getValue(), new Double(2.0));
+ s.setValue(new Double(1.5));
+ harness.check(s.getPreviousValue(), new Double(1.0));
+ s.setValue(new Double(1.0));
+ harness.check(s.getPreviousValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/getUIClassID.java b/gnu/testlet/javax/swing/JSpinner/getUIClassID.java
new file mode 100644
index 00000000..e60b6bd8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/getUIClassID.java
@@ -0,0 +1,40 @@
+/* getUIClassID.java -- Checks for the getUIClassID() method in the JSpinner
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSpinner;
+
+public class getUIClassID implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JSpinner s = new JSpinner();
+ harness.check(s.getUIClassID(), "SpinnerUI");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/removeChangeListener.java b/gnu/testlet/javax/swing/JSpinner/removeChangeListener.java
new file mode 100644
index 00000000..5e8ba3e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/removeChangeListener.java
@@ -0,0 +1,73 @@
+/* removeChangeListener.java -- Checks for the removeChangeListener() method in
+ the JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.List;
+
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class removeChangeListener implements Testlet, ChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void stateChanged(ChangeEvent event)
+ {
+ this.events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(ChangeListener)");
+ JSpinner s = new JSpinner();
+ s.addChangeListener(this);
+ s.getModel().setValue(new Integer(11));
+ harness.check(events.size(), 1);
+ ChangeEvent e = (ChangeEvent) events.get(0);
+ harness.check(e.getSource(), s);
+
+ // now remove the listener and repeat
+ events.clear();
+ s.removeChangeListener(this);
+ s.getModel().setValue(new Integer(22));
+ harness.check(events.size(), 0);
+
+ // try null listener - it is permitted
+ boolean pass = true;
+ try
+ {
+ s.removeChangeListener(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/setEditor.java b/gnu/testlet/javax/swing/JSpinner/setEditor.java
new file mode 100644
index 00000000..e2c5536d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/setEditor.java
@@ -0,0 +1,87 @@
+/* setEditor.java -- Checks for the setEditor() method in the JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+import java.util.EventListener;
+import java.util.List;
+
+import javax.swing.JComponent;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeListener;
+
+public class setEditor implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(JComponent)");
+ JSpinner s = new JSpinner();
+ s.addPropertyChangeListener(this);
+ JComponent e = s.getEditor();
+ SpinnerNumberModel m = (SpinnerNumberModel) s.getModel();
+
+ EventListener[] l1 = s.getListeners(ChangeListener.class);
+ harness.check(Arrays.asList(l1).contains(e));
+ harness.check(!Arrays.asList(l1).contains(m));
+
+ JSpinner.NumberEditor e2 = new JSpinner.NumberEditor(s);
+ s.setEditor(e2);
+ harness.check(s.getEditor(), e2);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent pce = (PropertyChangeEvent) events.get(0);
+ harness.check(pce.getPropertyName(), "editor");
+ harness.check(pce.getOldValue(), e);
+ harness.check(pce.getNewValue(), e2);
+ l1 = s.getListeners(ChangeListener.class);
+ harness.check(Arrays.asList(l1).contains(e2));
+ harness.check(!Arrays.asList(l1).contains(e));
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ s.setEditor(null);
+ }
+ catch (IllegalArgumentException iae)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSpinner/setModel.java b/gnu/testlet/javax/swing/JSpinner/setModel.java
new file mode 100644
index 00000000..d902468b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSpinner/setModel.java
@@ -0,0 +1,85 @@
+/* setModel.java -- Checks for the setModel() method in the JSpinner class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSpinner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+import javax.swing.SpinnerNumberModel;
+
+public class setModel implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(SpinnerModel)");
+ JSpinner s = new JSpinner();
+ harness.check(s.getEditor() instanceof JSpinner.NumberEditor);
+ s.addPropertyChangeListener(this);
+ SpinnerDateModel m = new SpinnerDateModel();
+ s.setModel(m);
+ harness.check(s.getModel(), m);
+ harness.check(events.size(), 2);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(), "model");
+ harness.check(e1.getSource(), s);
+ harness.check(e1.getNewValue(), m);
+ harness.check(e1.getOldValue() instanceof SpinnerNumberModel);
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(), "editor");
+ harness.check(e2.getSource(), s);
+ harness.check(e2.getNewValue() instanceof JSpinner.DateEditor);
+ harness.check(e2.getOldValue() instanceof JSpinner.NumberEditor);
+
+ // setting the same model generates no event
+ events.clear();
+ s.setModel(m);
+ harness.check(events.size(), 0);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ s.setModel(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/CVS/Entries b/gnu/testlet/javax/swing/JSplitPane/CVS/Entries
new file mode 100644
index 00000000..18c5829b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/CVS/Entries
@@ -0,0 +1,9 @@
+/Constructor.java/1.2/Wed Nov 16 21:30:35 2005//
+/MyJSplitPane.java/1.1/Sun May 28 22:32:53 2006//
+/getActionMap.java/1.1/Wed Jun 28 10:50:03 2006//
+/getDividerLocation.java/1.1/Mon Oct 9 13:35:47 2006//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/paramString.java/1.2/Wed May 21 13:30:47 2008//
+/setComponent.java/1.2/Wed Nov 16 21:30:35 2005//
+/setResizeWeight.java/1.1/Sun May 28 22:32:53 2006//
+D
diff --git a/gnu/testlet/javax/swing/JSplitPane/CVS/Repository b/gnu/testlet/javax/swing/JSplitPane/CVS/Repository
new file mode 100644
index 00000000..726339d2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JSplitPane
diff --git a/gnu/testlet/javax/swing/JSplitPane/CVS/Root b/gnu/testlet/javax/swing/JSplitPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JSplitPane/Constructor.java b/gnu/testlet/javax/swing/JSplitPane/Constructor.java
new file mode 100644
index 00000000..488e57f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/Constructor.java
@@ -0,0 +1,87 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.JSplitPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JSplitPane;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+
+/**
+ * This tests whether the constructors for JSplitPane assign
+ * the correct Components as leftComponent and rightComponent
+ * when dealing with null arguments.
+ */
+public class Constructor implements Testlet {
+
+ public void test(TestHarness harness) {
+ JSplitPane pane = new JSplitPane();
+ harness.checkPoint ("demo constructor");
+ harness.check(pane.getLeftComponent().getClass() == JButton.class);
+ harness.check(pane.getRightComponent().getClass() == JButton.class);
+
+ harness.checkPoint ("constructor with only orientation");
+ pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+
+ harness.checkPoint ("constructor with orientation and layout");
+ pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, false);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, true);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, true);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, false);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+
+ harness.checkPoint ("constructor with orientation and 2 components");
+ pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+
+ harness.checkPoint ("most general constructor");
+ pane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, false, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT, true, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, false, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT, true, null, null);
+ harness.check(pane.getLeftComponent() == null);
+ harness.check(pane.getRightComponent() == null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/MyJSplitPane.java b/gnu/testlet/javax/swing/JSplitPane/MyJSplitPane.java
new file mode 100644
index 00000000..5ddaa48c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/MyJSplitPane.java
@@ -0,0 +1,39 @@
+/* MyJSplitPane.java -- provides access to protected methods.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import javax.swing.JSplitPane;
+
+public class MyJSplitPane extends JSplitPane
+{
+ public MyJSplitPane()
+ {
+ super();
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/getActionMap.java b/gnu/testlet/javax/swing/JSplitPane/getActionMap.java
new file mode 100644
index 00000000..91e4577e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/getActionMap.java
@@ -0,0 +1,50 @@
+/* getActionMap.java -- some checks for the getActionMap() method in the
+ JSplitPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ActionMap;
+import javax.swing.JSplitPane;
+
+public class getActionMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JSplitPane sp = new JSplitPane();
+ ActionMap m = sp.getActionMap();
+ harness.check(m.keys(), null);
+ ActionMap mp = m.getParent();
+ harness.check(mp.get("negativeIncrement") != null);
+ harness.check(mp.get("positiveIncrement") != null);
+ harness.check(mp.get("selectMin") != null);
+ harness.check(mp.get("selectMax") != null);
+ harness.check(mp.get("startResize") != null);
+ harness.check(mp.get("toggleFocus") != null);
+ harness.check(mp.get("focusOutForward") != null);
+ harness.check(mp.get("focusOutBackward") != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/getDividerLocation.java b/gnu/testlet/javax/swing/JSplitPane/getDividerLocation.java
new file mode 100644
index 00000000..8cd3f8ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/getDividerLocation.java
@@ -0,0 +1,70 @@
+/* getDividerLocation.java -- Checks JSplitPane.getDividerLocation()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import javax.swing.JSplitPane;
+import javax.swing.plaf.basic.BasicSplitPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks JSplitPane.getDividerLocation().
+ */
+public class getDividerLocation implements Testlet
+{
+
+ /**
+ * Overrides BasicSplitPaneUI.getDividerLocation() for testing.
+ */
+ private class TestSplitPaneUI extends BasicSplitPaneUI
+ {
+ public int getDividerLocation(JSplitPane sp)
+ {
+ return 9876;
+ }
+ }
+
+ /**
+ * Entry point into the test.
+ */
+ public void test(TestHarness harness)
+ {
+ testCallUI(harness);
+ }
+
+ /**
+ * Checks that getDividerLocation() does _not_ call into the UI, and
+ * rather manages its property itself.
+ *
+ * @param h the test harness
+ */
+ private void testCallUI(TestHarness h)
+ {
+ JSplitPane sp = new JSplitPane();
+ sp.setDividerLocation(1234);
+ sp.setUI(new TestSplitPaneUI());
+ h.check(sp.getDividerLocation(), 1234);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/getInputMap.java b/gnu/testlet/javax/swing/JSplitPane/getInputMap.java
new file mode 100644
index 00000000..3870ceb9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/getInputMap.java
@@ -0,0 +1,64 @@
+/* getInputMap.java -- some checks for the getInputMap() method in the
+ JSplitPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JSplitPane;
+import javax.swing.KeyStroke;
+
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JSplitPane sp = new JSplitPane();
+ InputMap m1 = sp.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ harness.check(m1.getParent(), null);
+ InputMap m2 = sp.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed TAB")), "focusOutBackward");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")), "positiveIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed DOWN")), "positiveIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")), "negativeIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed RIGHT")), "positiveIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")), "positiveIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed UP")), "negativeIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_UP")), "negativeIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed F8")), "startResize");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed TAB")), "focusOutForward");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed LEFT")), "negativeIncrement");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed HOME")), "selectMin");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed F6")), "toggleFocus");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed END")), "selectMax");
+ InputMap m3 = sp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/paramString.java b/gnu/testlet/javax/swing/JSplitPane/paramString.java
new file mode 100644
index 00000000..17f0a0c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/paramString.java
@@ -0,0 +1,42 @@
+/* paramString.java -- Checks for the paramString() method in the
+ JSplitPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+// Uses: MyJSplitPane
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSplitPane;
+
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJSplitPane s = new MyJSplitPane();
+ harness.check(s.paramString().endsWith(",continuousLayout=false,dividerSize=10,lastDividerLocation=0,oneTouchExpandable=false,orientation=HORIZONTAL_SPLIT"));
+ s.setOrientation(JSplitPane.VERTICAL_SPLIT);
+ harness.check(s.paramString().endsWith(",continuousLayout=false,dividerSize=10,lastDividerLocation=0,oneTouchExpandable=false,orientation=VERTICAL_SPLIT"));
+ }
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/setComponent.java b/gnu/testlet/javax/swing/JSplitPane/setComponent.java
new file mode 100644
index 00000000..c200499b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/setComponent.java
@@ -0,0 +1,63 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat.
+
+//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.javax.swing.JSplitPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JSplitPane;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+
+/**
+ * This tests whether the setLeftComponent and setRightComponent methods
+ * for JSplitPane work properly.
+ */
+public class setComponent implements Testlet {
+
+ public void test(TestHarness harness) {
+ JSplitPane pane = new JSplitPane();
+ JScrollPane scroll = new JScrollPane();
+ JButton button = new JButton();
+
+ harness.checkPoint ("set left");
+ // try setting to null
+ pane.setLeftComponent(null);
+ harness.check (pane.getLeftComponent() == null);
+ // now set it to a real component
+ pane.setLeftComponent(scroll);
+ harness.check (pane.getLeftComponent() == scroll);
+ // now try setting it to null again
+ pane.setLeftComponent (null);
+ harness.check (pane.getLeftComponent() == null);
+
+
+ harness.checkPoint ("set right");
+ pane.setRightComponent(null);
+ harness.check (pane.getRightComponent() == null);
+ pane.setRightComponent(button);
+ harness.check(pane.getRightComponent() == button);
+ pane.setRightComponent(null);
+ harness.check(pane.getRightComponent() == null);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JSplitPane/setResizeWeight.java b/gnu/testlet/javax/swing/JSplitPane/setResizeWeight.java
new file mode 100644
index 00000000..1c96301b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JSplitPane/setResizeWeight.java
@@ -0,0 +1,75 @@
+/* setResizeWeight.java -- Checks for the setResizeWeight() method in the
+ JSplitPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JSplitPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JSplitPane;
+
+public class setResizeWeight implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JSplitPane s = new JSplitPane();
+ s.addPropertyChangeListener(this);
+ s.setResizeWeight(0.33);
+ harness.check(s.getResizeWeight(), 0.33);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent pce = (PropertyChangeEvent) events.get(0);
+ harness.check(pce.getPropertyName(), "resizeWeight");
+ harness.check(pce.getSource(), s);
+ harness.check(pce.getOldValue(), new Double(0.0));
+ harness.check(pce.getNewValue(), new Double(0.33));
+
+ // check that setting the same value does not generate an event
+ events.clear();
+ s.setResizeWeight(0.33);
+ harness.check(events.size(), 0);
+
+ // try a bad value
+ boolean pass = false;
+ try
+ {
+ s.setResizeWeight(-0.33);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTabbedPane/CVS/Entries b/gnu/testlet/javax/swing/JTabbedPane/CVS/Entries
new file mode 100644
index 00000000..fb5d0b05
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/CVS/Entries
@@ -0,0 +1,4 @@
+/Mnemonic.java/1.1/Thu Feb 10 13:03:45 2005//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/remove.java/1.1/Wed Jul 26 15:25:52 2006//
+D
diff --git a/gnu/testlet/javax/swing/JTabbedPane/CVS/Repository b/gnu/testlet/javax/swing/JTabbedPane/CVS/Repository
new file mode 100644
index 00000000..6727e9c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTabbedPane
diff --git a/gnu/testlet/javax/swing/JTabbedPane/CVS/Root b/gnu/testlet/javax/swing/JTabbedPane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTabbedPane/Mnemonic.java b/gnu/testlet/javax/swing/JTabbedPane/Mnemonic.java
new file mode 100644
index 00000000..f8162425
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/Mnemonic.java
@@ -0,0 +1,44 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.JTabbedPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JTabbedPane;
+import javax.swing.JPanel;
+
+/**
+ * These tests pass with the Sun JDK 1.4.2_05 on GNU/Linux IA-32.
+ */
+public class Mnemonic implements Testlet {
+ public void test(TestHarness harness) {
+ JTabbedPane tabs = new JTabbedPane();
+ harness.checkPoint("emptyMnemonic");
+ tabs.addTab("foo", new JPanel());
+ try {
+ tabs.setMnemonicAt(0, 0);
+ harness.check(true);
+ } catch(Throwable t) {
+ harness.fail("value of '\\0' should be allowed");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTabbedPane/getInputMap.java b/gnu/testlet/javax/swing/JTabbedPane/getInputMap.java
new file mode 100644
index 00000000..80ede12a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/getInputMap.java
@@ -0,0 +1,97 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JTabbedPane class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JTabbedPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JTabbedPane;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JTabbedPane - this is really testing
+ * the setup performed by BasicTabbedPaneUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JTabbedPane tp = new JTabbedPane();
+ InputMap m1 = tp.getInputMap();
+ InputMap m2 = tp.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JTabbedPane tp = new JTabbedPane();
+ InputMap m1 = tp.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed DOWN")),
+ "requestFocusForVisibleComponent");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_UP")),
+ "navigateUp");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed LEFT")),
+ "navigateLeft");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("ctrl pressed KP_DOWN")),
+ "requestFocusForVisibleComponent");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed UP")), "navigateUp");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")),
+ "navigateDown");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")),
+ "navigateLeft");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed RIGHT")),
+ "navigateRight");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")),
+ "navigateRight");
+ harness.check(m1p.get(KeyStroke.getKeyStroke("pressed DOWN")),
+ "navigateDown");
+ InputMap m2 = tp.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_DOWN")),
+ "navigatePageDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_UP")),
+ "navigatePageUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed UP")),
+ "requestFocus");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed KP_UP")),
+ "requestFocus");
+ InputMap m3 = tp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTabbedPane/remove.java b/gnu/testlet/javax/swing/JTabbedPane/remove.java
new file mode 100644
index 00000000..53b613dc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTabbedPane/remove.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JTabbedPane;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.JTabbedPane;
+import javax.swing.JPanel;
+import javax.swing.plaf.UIResource;
+
+public class remove implements Testlet {
+
+ boolean touched_removeTabAt;
+ boolean touched_remove;
+
+ public void test(TestHarness harness) {
+ JTabbedPane tp = new MyTabbedPane();
+
+ harness.checkPoint("remove");
+
+ // The removal of a component which is an instance of
+ // UIResource *should not* provoke a call to
+ // JTabbedPane.remove(int) (if it is not a tab
+ // component).
+ touched_remove = false;
+ touched_removeTabAt = false;
+ JPanel p = new MyPanel();
+ tp.add(p);
+ tp.remove(p);
+ harness.check(touched_remove, false);
+ harness.check(touched_removeTabAt, false);
+
+ // The removal of a component which is an instance of
+ // UIResource *should* provoke a call to
+ // JTabbedPane.remove(int) if it *is* a tab
+ // component.
+ touched_remove = false;
+ touched_removeTabAt = false;
+ p = new MyPanel();
+ // The next line makes this UIResource implementing object a tab
+ // component although that is normally not done.
+ tp.addTab("foo", p);
+ tp.remove(p);
+ harness.check(touched_remove, false);
+ harness.check(touched_removeTabAt, true);
+
+ // The removal of a component which *is not* an instance of
+ // UIResource *should* provoke a call to JTabbedPane.remove(int).
+ touched_remove = false;
+ touched_removeTabAt = false;
+ p = new JPanel();
+ tp.add(p);
+ tp.remove(p);
+ harness.check(touched_remove, false);
+ harness.check(touched_removeTabAt, true);
+ }
+
+ static class MyPanel extends JPanel implements UIResource
+ {
+ }
+
+ class MyTabbedPane extends JTabbedPane
+ {
+
+ public void remove(int i)
+ {
+ touched_remove = true;
+ super.remove(i);
+ }
+
+ public void removeTabAt(int i)
+ {
+ touched_removeTabAt = true;
+ super.removeTabAt(i);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Entries b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Entries
new file mode 100644
index 00000000..bc344bb4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBooleanTableCellRenderer.java/1.2/Tue Jun 6 09:55:40 2006//
+/getAccessibleRole.java/1.2/Wed May 21 13:30:47 2008//
+D
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Repository b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Repository
new file mode 100644
index 00000000..7daf5f37
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Root b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java
new file mode 100644
index 00000000..37ec550a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/MyBooleanTableCellRenderer.java
@@ -0,0 +1,44 @@
+/* MyBooleanTableCellRenderer.java -- a custom renderer used for testing
+ purposes.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JTable.AccessibleJTable.AccessibleJTableCell;
+
+import java.awt.Component;
+
+import javax.swing.JCheckBox;
+import javax.swing.JTable;
+import javax.swing.table.TableCellRenderer;
+
+public class MyBooleanTableCellRenderer
+ extends JCheckBox
+ implements TableCellRenderer
+{
+
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ setSelected(isSelected);
+ return this;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java
new file mode 100644
index 00000000..c0c551ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableCell/getAccessibleRole.java
@@ -0,0 +1,64 @@
+/* getAccessibleRole.java -- some checks for the getAccessibleRole() method in
+ the AccessibleJTableCell class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyBooleanTableCellRenderer
+
+package gnu.testlet.javax.swing.JTable.AccessibleJTable.AccessibleJTableCell;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Date;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleTable;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+public class getAccessibleRole implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(1, 3);
+ tm.setValueAt("A", 0, 0);
+ tm.setValueAt(Boolean.TRUE, 0, 1);
+ tm.setValueAt(new Date(0l), 0, 2);
+ JTable table = new JTable(tm);
+ table.getColumnModel().getColumn(1).setCellRenderer(
+ new MyBooleanTableCellRenderer());
+ AccessibleContext tableac = table.getAccessibleContext();
+ harness.check(tableac.getClass().getName().endsWith("AccessibleJTable"));
+ AccessibleTable at = tableac.getAccessibleTable();
+ Accessible accessibleCell0 = at.getAccessibleAt(0, 0);
+ harness.check(accessibleCell0.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.LABEL);
+ Accessible accessibleCell1 = at.getAccessibleAt(0, 1);
+ harness.check(accessibleCell1.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.CHECK_BOX);
+ Accessible accessibleCell2 = at.getAccessibleAt(0, 2);
+ harness.check(accessibleCell2.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.LABEL);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Entries b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Entries
new file mode 100644
index 00000000..7618d1ef
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Entries
@@ -0,0 +1,2 @@
+/getAccessibleRole.java/1.2/Wed May 21 13:30:47 2008//
+D
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Repository b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Repository
new file mode 100644
index 00000000..de3ec78d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Root b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java
new file mode 100644
index 00000000..b702c992
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/AccessibleJTableHeaderCell/getAccessibleRole.java
@@ -0,0 +1,65 @@
+/* getAccessibleRole.java -- some checks for the getAccessibleRole() method in
+ the AccessibleJTableHeaderCell class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+// Uses: ../AccessibleJTableCell/MyBooleanTableCellRenderer
+
+package gnu.testlet.javax.swing.JTable.AccessibleJTable.AccessibleJTableHeaderCell;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JTable.AccessibleJTable.AccessibleJTableCell.MyBooleanTableCellRenderer;
+
+import java.util.Date;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleTable;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+public class getAccessibleRole implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(1, 3);
+ tm.setValueAt("A", 0, 0);
+ tm.setValueAt(Boolean.TRUE, 0, 1);
+ tm.setValueAt(new Date(0l), 0, 2);
+ JTable table = new JTable(tm);
+ table.getColumnModel().getColumn(2).setHeaderRenderer(
+ new MyBooleanTableCellRenderer());
+ AccessibleContext tableac = table.getAccessibleContext();
+ harness.check(tableac.getClass().getName().endsWith("AccessibleJTable"));
+ AccessibleTable at = tableac.getAccessibleTable().getAccessibleColumnHeader();
+ Accessible accessibleCell0 = at.getAccessibleAt(0, 0);
+ harness.check(accessibleCell0.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.LABEL);
+ Accessible accessibleCell1 = at.getAccessibleAt(0, 1);
+ harness.check(accessibleCell1.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.LABEL);
+ Accessible accessibleCell2 = at.getAccessibleAt(0, 2);
+ harness.check(accessibleCell2.getAccessibleContext().getAccessibleRole(),
+ AccessibleRole.CHECK_BOX);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries
new file mode 100644
index 00000000..02da6e4e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries
@@ -0,0 +1,2 @@
+/getAccessibleColumnHeader.java/1.1/Tue Jun 6 03:18:15 2006//
+D
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries.Log b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries.Log
new file mode 100644
index 00000000..aee89947
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/AccessibleJTableCell////
+A D/AccessibleJTableHeaderCell////
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Repository b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Repository
new file mode 100644
index 00000000..e0326241
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTable/AccessibleJTable
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Root b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTable/AccessibleJTable/getAccessibleColumnHeader.java b/gnu/testlet/javax/swing/JTable/AccessibleJTable/getAccessibleColumnHeader.java
new file mode 100644
index 00000000..f56eb868
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/AccessibleJTable/getAccessibleColumnHeader.java
@@ -0,0 +1,62 @@
+/* getAccessibleColumnHeader.java -- some checks for the
+ getAccessibleColumnHeader() method.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTable.AccessibleJTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JTable.AccessibleJTable.AccessibleJTableCell.MyBooleanTableCellRenderer;
+
+import java.util.Date;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.accessibility.AccessibleTable;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+public class getAccessibleColumnHeader implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(1, 3);
+ tm.setValueAt("A", 0, 0);
+ tm.setValueAt(new Date(0l), 0, 1);
+ tm.setValueAt(Boolean.TRUE, 0, 2);
+ JTable table = new JTable(tm);
+ table.getColumnModel().getColumn(2).setHeaderRenderer(
+ new MyBooleanTableCellRenderer());
+ AccessibleContext tableac = table.getAccessibleContext();
+ harness.check(tableac.getClass().getName().endsWith("AccessibleJTable"));
+ AccessibleTable ah = tableac.getAccessibleTable().getAccessibleColumnHeader();
+ testGetAccessibleRole(harness, ah);
+ }
+
+ public void testGetAccessibleRole(TestHarness harness, AccessibleTable at)
+ {
+ harness.check(at.getAccessibleAt(0, 0).getAccessibleContext().getAccessibleRole(), AccessibleRole.LABEL);
+ harness.check(at.getAccessibleAt(0, 1).getAccessibleContext().getAccessibleRole(), AccessibleRole.LABEL);
+ harness.check(at.getAccessibleAt(0, 2).getAccessibleContext().getAccessibleRole(), AccessibleRole.CHECK_BOX);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/CVS/Entries b/gnu/testlet/javax/swing/JTable/CVS/Entries
new file mode 100644
index 00000000..55846e55
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/CVS/Entries
@@ -0,0 +1,28 @@
+/MyJTable.java/1.1/Tue Jul 5 09:53:01 2005//
+/TableRobot.java/1.3/Tue Jul 4 22:04:47 2006//
+/addColumn.java/1.1/Tue Jul 5 09:53:01 2005//
+/constructors.java/1.3/Thu Sep 28 20:31:09 2006//
+/convertColumnIndexToModel.java/1.1/Fri Jul 1 16:42:21 2005//
+/convertColumnIndexToView.java/1.1/Tue Jul 5 09:53:01 2005//
+/createDefaultColumnsFromModel.java/1.1/Tue Jul 5 09:53:01 2005//
+/createDefaultDataModel.java/1.2/Thu Aug 11 18:14:08 2005//
+/createDefaultSelectionModel.java/1.2/Thu Aug 11 18:14:08 2005//
+/getAccessibleContext.java/1.1/Wed May 31 16:27:33 2006//
+/getAutoCreateColumnsFromModel.java/1.1/Tue Jul 5 09:53:01 2005//
+/getCellEditor.java/1.1/Wed May 31 16:27:33 2006//
+/getCellRect.java/1.4/Fri Sep 22 13:27:44 2006//
+/getColumn.java/1.1/Tue Jul 5 09:53:01 2005//
+/getColumnName.java/1.2/Wed Jul 6 09:30:34 2005//
+/getInputMap.java/1.1/Wed Jun 7 09:45:53 2006//
+/getModel.java/1.2/Wed Jul 6 09:30:34 2005//
+/getRowHeight.java/1.1/Fri Sep 22 11:14:29 2006//
+/initializeLocalVars.java/1.1/Mon Sep 12 12:55:22 2005//
+/isCellEditable.java/1.2/Wed Jul 6 09:30:34 2005//
+/isColumnSelected.java/1.1/Wed Oct 26 15:07:31 2005/-kk/
+/isRowSelected.java/1.1/Wed Oct 26 15:07:31 2005/-kk/
+/setAutoCreateColumnsFromModel.java/1.1/Tue Jul 5 09:53:01 2005//
+/setColumnSelectionAllowed.java/1.1/Tue Jul 11 17:03:57 2006//
+/setModel.java/1.3/Fri Oct 28 13:45:37 2005//
+/setRowHeight.java/1.1/Fri Sep 22 11:14:29 2006//
+/setRowSelectionAllowed.java/1.1/Tue Jul 11 17:03:57 2006//
+D
diff --git a/gnu/testlet/javax/swing/JTable/CVS/Entries.Log b/gnu/testlet/javax/swing/JTable/CVS/Entries.Log
new file mode 100644
index 00000000..b9b1f9d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJTable////
diff --git a/gnu/testlet/javax/swing/JTable/CVS/Repository b/gnu/testlet/javax/swing/JTable/CVS/Repository
new file mode 100644
index 00000000..fa24da6e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTable
diff --git a/gnu/testlet/javax/swing/JTable/CVS/Root b/gnu/testlet/javax/swing/JTable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTable/MyJTable.java b/gnu/testlet/javax/swing/JTable/MyJTable.java
new file mode 100644
index 00000000..bfd5bf52
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/MyJTable.java
@@ -0,0 +1,46 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.TableModel;
+
+/**
+ * Provides public access to some protected methods in the superclass, so they
+ * can be tested.
+ */
+public class MyJTable extends JTable
+{
+ public MyJTable()
+ {
+ super();
+ }
+
+ public TableModel createDefaultDataModel()
+ {
+ return super.createDefaultDataModel();
+ }
+
+ public ListSelectionModel createDefaultSelectionModel()
+ {
+ return super.createDefaultSelectionModel();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/TableRobot.java b/gnu/testlet/javax/swing/JTable/TableRobot.java
new file mode 100644
index 00000000..40992232
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/TableRobot.java
@@ -0,0 +1,447 @@
+/* TableRobot.java -- JTable test
+ Copyright (C) 2006 Audrius Meskauskas
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.4 GUI
+
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.BitSet;
+import java.util.Random;
+import java.util.TreeSet;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * The AWT robot based test for JTable.
+ */
+public class TableRobot extends Asserter implements Testlet
+{
+ /**
+ * The number of columns in the table (fixed).
+ */
+ int columns = 3;
+
+ /**
+ * The number of characters in each field (all the same).
+ */
+ int sizes = 4;
+
+ /**
+ * The table being tested.
+ */
+ JTable table = new JTable(0, 3);
+
+ JFrame frame;
+
+ /**
+ * The table row with the empty cells.
+ */
+ String[] EMPTY;
+
+ Robot r;
+
+ static Random ran = new Random();
+
+ String[][] records = new String[5][];
+
+ int rows = 0;
+
+ /**
+ * Get the record, containing the random information.
+ *
+ * @return the record, containing the random information
+ */
+ String[] getRandomRecord()
+ {
+
+ String[] r = new String[columns];
+
+ for (int i = 0; i < r.length; i++)
+ {
+ char[] c = new char[sizes];
+ for (int j = 0; j < c.length; j++)
+ {
+ // Random valid ASCII chars from 0 till 0
+ c[j] = (char) ('0' + ran.nextInt('9' - '0'));
+ }
+
+ r[i] = new String(c);
+ }
+ return r;
+ }
+
+ public String[] createRecord()
+ {
+ String[] record = getRandomRecord();
+ ((DefaultTableModel) table.getModel()).addRow(EMPTY);
+
+ for (int i = 0; i < record.length; i++)
+ {
+ // Click on the cell:
+ clickCell(table, table.getRowCount() - 1, i);
+
+ // Press F2 to start the editing session:
+ r.keyPress(KeyEvent.VK_F2);
+ r.keyRelease(KeyEvent.VK_F2);
+ for (int j = 0; j < record[i].length(); j++)
+ {
+ typeDigit(record[i].charAt(j));
+ }
+ r.keyPress(KeyEvent.VK_ENTER);
+ r.keyRelease(KeyEvent.VK_ENTER);
+ }
+
+ return record;
+ }
+
+ public void verifyTableContent(String[][] records)
+ {
+ // Verify content.
+ for (int row = 0; row < records.length; row++)
+ {
+ for (int column = 0; column < records[row].length; column++)
+ {
+ if (!table.getValueAt(row, column).equals(records[row][column]))
+ {
+ String msg = "Match failed " + row + ":" + column + ", exp "
+ + records[row][column] + " act "
+ + table.getValueAt(row, column);
+ fail(msg);
+ }
+ }
+ }
+ }
+
+ public String[][] getTableContent(int columns)
+ {
+ String[][] records = new String[table.getRowCount()][];
+
+ for (int row = 0; row < records.length; row++)
+ {
+ records[row] = new String[columns];
+ for (int col = 0; col < columns; col++)
+ {
+ records[row][col] = table.getModel().getValueAt(row, col).toString();
+ }
+ }
+ return records;
+ }
+
+ public String toString(String[] record)
+ {
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < record.length; i++)
+ {
+ b.append(record[i]);
+ b.append("#");
+ }
+ return b.toString();
+ }
+
+ public void testTable() throws Exception
+ {
+ vCreateEditing();
+ testMultipleSelection();
+ vEditing();
+ vTestArrowKeyNavigation();
+ vDeleteOneByOne();
+ }
+
+ private void vDeleteOneByOne()
+ {
+ // Delete remaining records one by one.
+ for (int i = 0; i < records.length; i++)
+ {
+
+ assertEquals("Deleting row should reduce the row count", records.length
+ - i,
+ table.getRowCount());
+ // Verify the first line.
+ for (int column = 0; column < records[i].length; column++)
+ {
+ assertEquals(i + "/" + records.length, table.getValueAt(0, column),
+ records[i][column]);
+ }
+
+ // Select the first record.
+ clickCell(table, 0, 0);
+
+ // Delete the first line.
+ ((DefaultTableModel) table.getModel()).removeRow(table.getSelectedRow());
+ }
+ }
+
+ private void vEditing()
+ {
+ // Test editing.
+ TreeSet used = new TreeSet();
+ for (int i = 0; i < 7; i++)
+ {
+
+ int row;
+ int col;
+ String img;
+ do
+ {
+ row = ran.nextInt(records.length);
+ col = ran.nextInt(3);
+ img = row + ":" + col;
+ }
+ while (used.contains(img));
+
+ used.add(img);
+
+ String nc = Integer.toString(ran.nextInt(10));
+ clickCell(table, row, col);
+
+ // Press F2 to start the editing session:
+ r.keyPress(KeyEvent.VK_F2);
+ r.keyRelease(KeyEvent.VK_F2);
+
+ String prev = table.getModel().getValueAt(row, col).toString();
+
+ int code = KeyEvent.VK_0 + (nc.charAt(0) - '0');
+
+ r.keyPress(code);
+ r.keyRelease(code);
+
+ r.keyPress(KeyEvent.VK_ENTER);
+ r.keyRelease(KeyEvent.VK_ENTER);
+
+ records[row][col] = records[row][col] + nc;
+ assertEquals("Incorrect value after editing",
+ table.getModel().getValueAt(row, col), records[row][col]);
+ }
+ }
+
+ private void testMultipleSelection()
+ {
+ // Randomly select half of the records and delete them in one action:
+ int nd = records.length / 2;
+
+ BitSet selected = new BitSet();
+
+ // Hold the ctrl down after the first click.
+ boolean ctrl = false;
+ for (int i = 0; i < nd; i++)
+ {
+ int d;
+ do
+ {
+ d = ran.nextInt(records.length);
+ }
+ while (selected.get(d));
+
+ // Select the first record.
+ clickCell(table, d, 0);
+ selected.set(d);
+ if (!ctrl)
+ {
+ r.keyPress(KeyEvent.VK_CONTROL);
+ ctrl = true;
+ }
+ }
+ // Release the ctrl key:
+ r.keyRelease(KeyEvent.VK_CONTROL);
+
+ // Verify the selected rows.
+
+ // Compare selected record count:
+ int[] srows = table.getSelectedRows();
+
+ assertEquals("New row should increase the length", nd, srows.length);
+
+ for (int i = 0; i < srows.length; i++)
+ {
+ assertEquals("Selection mismatch", table.isRowSelected(srows[i]),
+ selected.get(srows[i]));
+ }
+ }
+
+ private void vCreateEditing()
+ {
+ // Create the last several rows by editing either.
+ for (int i = 0; i < records.length; i++)
+ {
+ assertEquals("New row should increase the length", rows++,
+ table.getRowCount());
+ records[i] = createRecord();
+ }
+
+ verifyTableContent(records);
+ }
+
+ private void vTestArrowKeyNavigation()
+ {
+ clickCell(table, 0,0);
+ assertEquals("First click", table.getSelectedRow(), 0);
+
+ for (int i = 1; i < table.getRowCount(); i++)
+ {
+ r.keyPress(KeyEvent.VK_DOWN);
+ r.keyRelease(KeyEvent.VK_DOWN);
+ assertEquals("VK_DOWN", table.getSelectedRow(), i);
+ }
+
+ for (int i = table.getRowCount()-2; i >=0; i--)
+ {
+ r.keyPress(KeyEvent.VK_UP);
+ r.keyRelease(KeyEvent.VK_UP);
+ assertEquals("VK_UP", table.getSelectedRow(), i);
+ }
+
+ for (int i = 1; i < table.getColumnCount(); i++)
+ {
+ r.keyPress(KeyEvent.VK_RIGHT);
+ r.keyRelease(KeyEvent.VK_RIGHT);
+ assertEquals("VK_DOWN", table.getSelectedColumn(), i);
+ }
+
+ for (int i = table.getColumnCount()-2; i >=0; i--)
+ {
+ r.keyPress(KeyEvent.VK_LEFT);
+ r.keyRelease(KeyEvent.VK_LEFT);
+ assertEquals("VK_RIGHT", table.getSelectedColumn(), i);
+ }
+
+ // Test multiple row selection with shift.
+ r.keyPress(KeyEvent.VK_SHIFT);
+
+ for (int i = 1; i < table.getRowCount(); i++)
+ {
+ r.keyPress(KeyEvent.VK_DOWN);
+ r.keyRelease(KeyEvent.VK_DOWN);
+ assertEquals("VK_DOWN+shift", table.getSelectedRowCount(), i+1);
+ }
+
+ for (int i = table.getRowCount()-2; i >=0; i--)
+ {
+ r.keyPress(KeyEvent.VK_UP);
+ r.keyRelease(KeyEvent.VK_UP);
+ assertEquals("VK_UP+shift", table.getSelectedRowCount(), i+1);
+ }
+
+ // Test multiple row selection with shift.
+ r.keyRelease(KeyEvent.VK_SHIFT);
+ }
+
+ protected void setUp() throws Exception
+ {
+ EMPTY = new String[columns];
+ for (int i = 0; i < EMPTY.length; i++)
+ {
+ EMPTY[i] = "";
+ }
+
+ frame = new JFrame();
+ frame.getContentPane().add(table);
+ frame.setSize(400, 400);
+ frame.setVisible(true);
+
+ r = new Robot();
+ r.setAutoDelay(50);
+ r.delay(500);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ frame.dispose();
+ }
+
+ /**
+ * Click the mouse on center of the given component.
+ */
+ public void click(JComponent c)
+ {
+ Point p = new Point();
+ p.x = c.getWidth() / 2;
+ p.y = c.getHeight() / 2;
+
+ SwingUtilities.convertPointToScreen(p, c);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ }
+
+ /**
+ * Click the given main databas view cell.
+ *
+ * @param row
+ * the row
+ * @param column
+ * the column
+ */
+ public void clickCell(JTable table, int row, int column)
+ {
+ Rectangle rect = table.getCellRect(row, column, true);
+ Point p = new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
+ SwingUtilities.convertPointToScreen(p, table);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ }
+
+ public void typeDigit(char character)
+ {
+ int code = KeyEvent.VK_0 + (character - '0');
+ r.keyPress(code);
+ r.keyRelease(code);
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ setUp();
+ try
+ {
+ testTable();
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ h.fail("Exception: " + e);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTable/addColumn.java b/gnu/testlet/javax/swing/JTable/addColumn.java
new file mode 100644
index 00000000..30d42c68
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/addColumn.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the addColumn() method in the {@link JTable} class.
+ */
+public class addColumn implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JTable table = new JTable();
+ TableColumn c = new TableColumn();
+ table.addColumn(c);
+ TableColumnModel tcm = table.getColumnModel();
+ harness.check(tcm.getColumnCount(), 1);
+
+ boolean pass = false;
+ try
+ {
+ table.addColumn(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/constructors.java b/gnu/testlet/javax/swing/JTable/constructors.java
new file mode 100644
index 00000000..200454eb
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/constructors.java
@@ -0,0 +1,253 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import java.awt.Dimension;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JTable;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some checks for the constructors in the {@link JTable} class.
+ */
+public class constructors
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ constructor1(harness);
+ constructor2(harness);
+ constructor3(harness);
+ constructor4(harness);
+ constructor5(harness);
+ constructor6(harness);
+ constructor7(harness);
+ cellProperties(harness);
+ selectionProperties(harness);
+ editingProperties(harness);
+ columnModelProperties(harness);
+ selectionModelProperties(harness);
+ linesNotNeeded(harness);
+ }
+
+ public void constructor1(TestHarness harness)
+ {
+ harness.checkPoint("JTable()");
+ JTable table = new JTable();
+ harness.check(table.getAutoCreateColumnsFromModel(), true);
+ }
+
+ public void constructor2(TestHarness harness)
+ {
+ harness.checkPoint("JTable(int, int)");
+ JTable table = new JTable(1, 2);
+ harness.check(table.getAutoCreateColumnsFromModel(), true);
+
+ table = new JTable(0, 2);
+ table = new JTable(1, 0);
+
+ // negative rows
+ boolean pass = false;
+ try
+ {
+ /* JTable t = */new JTable(- 1, 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative columns
+ pass = false;
+ try
+ {
+ /* JTable t = */new JTable(1, - 2);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor3(TestHarness harness)
+ {
+ harness.checkPoint("JTable(Object[][], Object[])");
+
+ // try null data
+ boolean pass = false;
+ try
+ {
+ /* JTable t1 = */new JTable(null, new String[] { "AA", "BB" });
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null column identifiers
+ pass = false;
+ try
+ {
+ /* JTable t2 = */new JTable(new String[][] { { "AA", "BB" } }, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void constructor4(TestHarness harness)
+ {
+ harness.checkPoint("JTable(TableModel)");
+ JTable t = new JTable(new DefaultTableModel());
+ harness.check(t.getAutoCreateColumnsFromModel(), true);
+
+ // a null model is acceptable, it gets replaced with a default model
+ t = new JTable(null);
+ harness.check(t.getModel() != null);
+ }
+
+ public void constructor5(TestHarness harness)
+ {
+ harness.checkPoint("JTable(TableModel, TableColumnModel)");
+ JTable t = new JTable(new DefaultTableModel(), null);
+ harness.check(t.getAutoCreateColumnsFromModel(), true);
+
+ t = new JTable(new DefaultTableModel(), new DefaultTableColumnModel());
+ harness.check(t.getAutoCreateColumnsFromModel(), false);
+ }
+
+ public void constructor6(TestHarness harness)
+ {
+ harness.checkPoint("JTable(TableModel, TableColumnModel, ListSelectionModel)");
+ JTable t = new JTable(new DefaultTableModel(), null, null);
+ harness.check(t.getAutoCreateColumnsFromModel(), true);
+
+ t = new JTable(new DefaultTableModel(), new DefaultTableColumnModel(), null);
+ harness.check(t.getAutoCreateColumnsFromModel(), false);
+ }
+
+ public void constructor7(TestHarness harness)
+ {
+ harness.checkPoint("JTable(Vector, Vector)");
+ }
+
+ public void cellProperties(TestHarness harness)
+ {
+ harness.checkPoint("JTable row, column and cell properties.");
+ JTable t = new JTable();
+ harness.check(t.getAutoCreateColumnsFromModel());
+ harness.check(t.getAutoResizeMode(), t.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
+ harness.check(t.getColumnCount(), 0);
+ harness.check(t.getRowCount(), 0);
+ harness.check(t.getColumnCount(), 0);
+ }
+
+ public void selectionProperties(TestHarness harness)
+ {
+ harness.checkPoint("JTable selection properties.");
+ JTable t = new JTable();
+ harness.check(t.getCellSelectionEnabled(), false);
+ harness.check(t.getColumnSelectionAllowed(), false);
+ harness.check(t.getRowSelectionAllowed(), true);
+ harness.check(t.getSelectedColumn(), - 1);
+ harness.check(t.getSelectedColumnCount(), 0);
+ harness.check(t.getSelectedRow(), - 1);
+ harness.check(t.getSelectedRowCount(), 0);
+ }
+
+ public void editingProperties(TestHarness harness)
+ {
+ harness.checkPoint("JTable visual and editing properties.");
+ JTable t = new JTable();
+ harness.check(t.getCellEditor(), null);
+ harness.check(t.getDragEnabled(), false);
+ harness.check(t.getGridColor(), new ColorUIResource(122, 138, 153));
+ harness.check(t.getIntercellSpacing(), new Dimension(1, 1));
+ harness.check(t.getPreferredScrollableViewportSize(), new Dimension(450,
+ 400));
+ harness.check(t.getRowMargin(), 1);
+ harness.check(t.getScrollableTracksViewportHeight(), false);
+ harness.check(t.getScrollableTracksViewportWidth(), true);
+ harness.check(t.getShowHorizontalLines(), true);
+ harness.check(t.getShowVerticalLines(), true);
+ }
+
+ public void columnModelProperties(TestHarness harness)
+ {
+ harness.checkPoint("JTable columnModel properties");
+ JTable t = new JTable();
+ harness.check(t.getColumnModel() != null);
+ harness.check(t.getColumnModel().getColumnCount(), 0);
+ harness.check(t.getColumnModel().getColumnMargin(), 1);
+ harness.check(t.getColumnModel().getColumnSelectionAllowed(), false);
+ harness.check(t.getColumnModel().getSelectedColumnCount(), 0);
+ harness.check(t.getColumnModel().getTotalColumnWidth(), 0);
+ harness.check(t.getColumnModel().getSelectionModel() != null);
+ harness.check(t.getColumnModel().getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(t.getColumnModel().getSelectionModel().getLeadSelectionIndex(), -1);
+ }
+
+ public void selectionModelProperties(TestHarness harness)
+ {
+ harness.checkPoint("JTable selectionModel properties");
+ JTable t = new JTable();
+ harness.check(t.getSelectionModel() != null);
+ harness.check(t.getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getMaxSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getMinSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getSelectionMode(),2);
+ harness.check(t.getSelectionModel().getValueIsAdjusting(), false);
+ }
+
+ public void linesNotNeeded(TestHarness harness)
+ {
+ harness.checkPoint("4 lines not needed in constructor");
+ JTable t = new JTable();
+ harness.check(t.getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(t.getColumnModel().getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(t.getColumnModel().getSelectionModel().getLeadSelectionIndex(), -1);
+ t.getSelectionModel().setAnchorSelectionIndex(-1);
+ t.getSelectionModel().setLeadSelectionIndex(-1);
+ t.getColumnModel().getSelectionModel().setAnchorSelectionIndex(-1);
+ t.getColumnModel().getSelectionModel().setLeadSelectionIndex(-1);
+ // Same values as before.
+ harness.check(t.getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(t.getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(t.getColumnModel().getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(t.getColumnModel().getSelectionModel().getLeadSelectionIndex(), -1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/convertColumnIndexToModel.java b/gnu/testlet/javax/swing/JTable/convertColumnIndexToModel.java
new file mode 100644
index 00000000..62cd5f3d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/convertColumnIndexToModel.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the convertColumnIndexToModel() method in the {@link JTable}
+ * class.
+ */
+public class convertColumnIndexToModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("convertColumnIndexToModel()");
+ DefaultTableModel m1 = new DefaultTableModel(4, 6);
+ JTable t = new JTable(m1);
+ harness.check(t.convertColumnIndexToModel(0), 0);
+ harness.check(t.convertColumnIndexToModel(-1), -1);
+
+ // try a column index == column count
+ boolean pass = false;
+ try
+ {
+ /* int i =*/ t.convertColumnIndexToModel(6);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a column index > column count
+ pass = false;
+ try
+ {
+ /* int i =*/ t.convertColumnIndexToModel(999);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ TableColumnModel tcm = t.getColumnModel();
+ tcm.moveColumn(0, 4);
+ harness.check(t.convertColumnIndexToModel(0), 1);
+ harness.check(t.convertColumnIndexToModel(1), 2);
+ harness.check(t.convertColumnIndexToModel(2), 3);
+ harness.check(t.convertColumnIndexToModel(3), 4);
+ harness.check(t.convertColumnIndexToModel(4), 0);
+ harness.check(t.convertColumnIndexToModel(5), 5);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/convertColumnIndexToView.java b/gnu/testlet/javax/swing/JTable/convertColumnIndexToView.java
new file mode 100644
index 00000000..4d122586
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/convertColumnIndexToView.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the convertColumnIndexToView() method in the {@link JTable}
+ * class.
+ */
+public class convertColumnIndexToView implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("convertColumnIndexToView()");
+ DefaultTableModel m1 = new DefaultTableModel(4, 6);
+ JTable t = new JTable(m1);
+ harness.check(t.convertColumnIndexToView(0), 0);
+ harness.check(t.convertColumnIndexToView(-1), -1);
+ harness.check(t.convertColumnIndexToView(6), -1);
+ harness.check(t.convertColumnIndexToView(999), -1);
+
+ TableColumnModel tcm = t.getColumnModel();
+ tcm.moveColumn(0, 4);
+ harness.check(t.convertColumnIndexToView(0), 4);
+ harness.check(t.convertColumnIndexToView(1), 0);
+ harness.check(t.convertColumnIndexToView(2), 1);
+ harness.check(t.convertColumnIndexToView(3), 2);
+ harness.check(t.convertColumnIndexToView(4), 3);
+ harness.check(t.convertColumnIndexToView(5), 5);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JTable/createDefaultColumnsFromModel.java b/gnu/testlet/javax/swing/JTable/createDefaultColumnsFromModel.java
new file mode 100644
index 00000000..58c14b17
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/createDefaultColumnsFromModel.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the createDefaultColumnsFromModel() method in the
+ * {@link JTable} class.
+ */
+public class createDefaultColumnsFromModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("Test 1");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ tm.setColumnIdentifiers(new String[] {"C0", "C1", "C2"});
+ JTable table = new JTable(tm);
+
+ // configure a TableColumnModel which will then be updated
+ DefaultTableColumnModel tcm1 = new DefaultTableColumnModel();
+ tcm1.addColumn(new TableColumn(1, 50));
+ table.setColumnModel(tcm1);
+
+ table.createDefaultColumnsFromModel();
+ TableColumnModel tcm2 = table.getColumnModel();
+ harness.check(tcm1 == tcm2);
+ harness.check(tcm2.getColumnCount(), 3);
+ TableColumn c0 = tcm2.getColumn(0);
+ TableColumn c1 = tcm2.getColumn(1);
+ TableColumn c2 = tcm2.getColumn(2);
+ harness.check(c0.getIdentifier(), "C0");
+ harness.check(c0.getWidth(), 75);
+ harness.check(c0.getMinWidth(), 15);
+ harness.check(c0.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getIdentifier(), "C1");
+ harness.check(c1.getWidth(), 75);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c2.getIdentifier(), "C2");
+ harness.check(c2.getWidth(), 75);
+ harness.check(c2.getMinWidth(), 15);
+ harness.check(c2.getMaxWidth(), Integer.MAX_VALUE);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/createDefaultDataModel.java b/gnu/testlet/javax/swing/JTable/createDefaultDataModel.java
new file mode 100644
index 00000000..cdaf4bce
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/createDefaultDataModel.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Uses: MyJTable
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableModel;
+
+/**
+ * Some checks for the createDefaultDataModel() method in the {@link JTable}
+ * class.
+ */
+public class createDefaultDataModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("createDefaultDataModel()");
+ MyJTable t = new MyJTable();
+ TableModel m = t.createDefaultDataModel();
+ harness.check(m instanceof DefaultTableModel);
+ harness.check(m.getColumnCount(), 0);
+ harness.check(m.getRowCount(), 0);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java b/gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java
new file mode 100644
index 00000000..f481eeab
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/createDefaultSelectionModel.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Uses: MyJTable
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+
+/**
+ * Some checks for the createDefaultSelectionModel() method in the
+ * {@link JTable} class.
+ */
+public class createDefaultSelectionModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("createDefaultSelectionModel()");
+ MyJTable t = new MyJTable();
+ ListSelectionModel m = t.createDefaultSelectionModel();
+ harness.check(m instanceof DefaultListSelectionModel);
+ harness.check(m.isSelectionEmpty());
+ harness.check(m.getSelectionMode(),
+ ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/getAccessibleContext.java b/gnu/testlet/javax/swing/JTable/getAccessibleContext.java
new file mode 100644
index 00000000..b886fca2
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getAccessibleContext.java
@@ -0,0 +1,51 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JTable;
+
+public class getAccessibleContext implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JTable t = new JTable();
+ AccessibleContext ac = t.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), null);
+ harness.check(ac.getAccessibleRole(), AccessibleRole.TABLE);
+ harness.check(ac.getAccessibleAction(), null);
+ harness.check(ac.getAccessibleComponent(), ac);
+ harness.check(ac.getAccessibleDescription(), null);
+ harness.check(ac.getAccessibleEditableText(), null);
+ harness.check(ac.getAccessibleIcon(), null);
+ harness.check(ac.getAccessibleTable(), ac);
+ harness.check(ac.getAccessibleText(), null);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/getAutoCreateColumnsFromModel.java b/gnu/testlet/javax/swing/JTable/getAutoCreateColumnsFromModel.java
new file mode 100644
index 00000000..9fd03645
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getAutoCreateColumnsFromModel.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+
+/**
+ * Some checks for the getAutoCreateColumnsFromModel() method in the
+ * {@link JTable} class.
+ */
+public class getAutoCreateColumnsFromModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAutoCreateColumnsFromModel()");
+ JTable t = new JTable();
+ harness.check(t.getAutoCreateColumnsFromModel(), true);
+ t.setAutoCreateColumnsFromModel(false);
+ harness.check(t.getAutoCreateColumnsFromModel(), false);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/getCellEditor.java b/gnu/testlet/javax/swing/JTable/getCellEditor.java
new file mode 100644
index 00000000..3a479603
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getCellEditor.java
@@ -0,0 +1,39 @@
+/* getCellEditor.java -- some checks for the getCellEditor() method in the
+ JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+
+public class getCellEditor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JTable table = new JTable();
+ harness.check(table.getCellEditor(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/getCellRect.java b/gnu/testlet/javax/swing/JTable/getCellRect.java
new file mode 100644
index 00000000..14f85444
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getCellRect.java
@@ -0,0 +1,132 @@
+/* getCellRect.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTable;
+
+import java.awt.Rectangle;
+
+import javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getCellRect implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JTable table = new JTable(0, 0);
+ Rectangle rectangle = table.getCellRect(0, 0, false);
+ harness.check(rectangle.x, 0);
+ harness.check(rectangle.y, 0);
+ harness.check(rectangle.width, 0);
+ harness.check(rectangle.height, 0);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(1, 2, false);
+ harness.check(rectangle.x, 150);
+ harness.check(rectangle.y, 16);
+ harness.check(rectangle.width, 74);
+ harness.check(rectangle.height, 15);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(0, 2, false);
+ harness.check(rectangle.x, 150);
+ harness.check(rectangle.y, 0);
+ harness.check(rectangle.width, 74);
+ harness.check(rectangle.height, 15);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(1, 0, false);
+ harness.check(rectangle.x, 0);
+ harness.check(rectangle.y, 16);
+ harness.check(rectangle.width, 74);
+ harness.check(rectangle.height, 15);
+
+ table = new JTable(0, 1);
+ rectangle = table.getCellRect(0, 0, true);
+ harness.check(rectangle.x, 0);
+ harness.check(rectangle.y, 0);
+ harness.check(rectangle.width, 75);
+ harness.check(rectangle.height, 0);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(1, 2, true);
+ harness.check(rectangle.x, 150);
+ harness.check(rectangle.y, 16);
+ harness.check(rectangle.width, 75);
+ harness.check(rectangle.height, 16);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(0, 2, true);
+ harness.check(rectangle.x, 150);
+ harness.check(rectangle.y, 0);
+ harness.check(rectangle.width, 75);
+ harness.check(rectangle.height, 16);
+
+ table = new JTable(2, 3);
+ rectangle = table.getCellRect(1, 0, true);
+ harness.check(rectangle.x, 0);
+ harness.check(rectangle.y, 16);
+ harness.check(rectangle.width, 75);
+ harness.check(rectangle.height, 16);
+
+ // try varying the row heights
+ table = new JTable(2, 3);
+ table.setRowHeight(0, 11);
+ table.setRowHeight(1, 12);
+ harness.check(table.getCellRect(0, 2, false),
+ new Rectangle(150, 0, 74, 10));
+ harness.check(table.getCellRect(1, 2, false),
+ new Rectangle(150, 11, 74, 11));
+
+ // try varying the column widths
+ table = new JTable(2, 3);
+ table.getColumnModel().getColumn(0).setWidth(11);
+ table.getColumnModel().getColumn(1).setWidth(15);
+ table.getColumnModel().getColumn(2).setWidth(17);
+ harness.check(table.getCellRect(0, 0, false), new Rectangle(0, 0, 14, 15));
+ harness.check(table.getCellRect(1, 1, false),
+ new Rectangle(15, 16, 14, 15));
+ harness.check(table.getCellRect(0, 2, false), new Rectangle(30, 0, 16, 15));
+ harness.check(table.getCellRect(1, 0, false), new Rectangle(0, 16, 14, 15));
+ harness.check(table.getCellRect(0, 1, false), new Rectangle(15, 0, 14, 15));
+ harness.check(table.getCellRect(1, 2, false),
+ new Rectangle(30, 16, 16, 15));
+
+ // try negative row
+ table = new JTable(2, 3);
+ harness.check(table.getCellRect(-1, 0, true), new Rectangle(0, 0, 75, 0));
+
+ // try row index too large
+ table = new JTable(2, 3);
+ harness.check(table.getCellRect(99, 0, true), new Rectangle(0, 0, 75, 0));
+
+ // try negative column
+ harness.check(table.getCellRect(0, -1, true), new Rectangle(0, 0, 0, 16));
+
+ // try column index too large
+ harness.check(table.getCellRect(0, 99, true), new Rectangle(0, 0, 0, 16));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTable/getColumn.java b/gnu/testlet/javax/swing/JTable/getColumn.java
new file mode 100644
index 00000000..d5cf0b7b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getColumn.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the getColumn() method in the {@link JTable} class.
+ */
+public class getColumn implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ tm.setColumnIdentifiers(new String[] {"C1", "C2", "C3"});
+ JTable table = new JTable(tm);
+ TableColumnModel tcm = table.getColumnModel();
+ tcm.getColumn(0).setIdentifier(new Integer(0));
+ tcm.getColumn(1).setIdentifier(new Integer(1));
+ tcm.getColumn(2).setIdentifier(new Integer(2));
+ harness.check(table.getColumn(new Integer(0)).getHeaderValue(), "C1");
+ harness.check(table.getColumn(new Integer(1)).getHeaderValue(), "C2");
+ harness.check(table.getColumn(new Integer(2)).getHeaderValue(), "C3");
+
+ boolean pass = false;
+ try
+ {
+ /*TableColumn tc =*/ table.getColumn("XXX");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ /*TableColumn tc =*/ table.getColumn(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/getColumnName.java b/gnu/testlet/javax/swing/JTable/getColumnName.java
new file mode 100644
index 00000000..d34857be
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getColumnName.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the getColumnName() method in the {@link JTable} class.
+ */
+public class getColumnName implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ tm.setColumnIdentifiers(new String[] {"C1", "C2", "C3"});
+ JTable table = new JTable(tm);
+ TableColumnModel tcm = table.getColumnModel();
+ TableColumn c0 = tcm.getColumn(0);
+ TableColumn c1 = tcm.getColumn(1);
+ c0.setModelIndex(1);
+ c1.setModelIndex(0);
+ harness.check(table.getColumnName(0), "C2");
+ harness.check(table.getColumnName(1), "C1");
+ harness.check(table.getColumnName(2), "C3");
+
+ c0.setHeaderValue("XX");
+ harness.check(table.getColumnName(0), "C2");
+ c0.setIdentifier("XXX");
+ harness.check(table.getColumnName(0), "C2");
+
+ boolean pass = false;
+ try
+ {
+ /*String s =*/ table.getColumnName(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ /*String s =*/ table.getColumnName(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/getInputMap.java b/gnu/testlet/javax/swing/JTable/getInputMap.java
new file mode 100644
index 00000000..1b2b1e40
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getInputMap.java
@@ -0,0 +1,200 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JTable - this is really testing
+ * the setup performed by BasicTableUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JTable t = new JTable();
+ InputMap m1 = t.getInputMap();
+ InputMap m2 = t.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JTable t = new JTable();
+ InputMap m1 = t.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ harness.check(m1.getParent(), null);
+ InputMap m2 = t.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed DOWN")),
+ "selectNextRowChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed RIGHT")),
+ "selectNextColumnChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed KP_UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed DOWN")),
+ "selectNextRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed UP")),
+ "selectPreviousRowChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed LEFT")),
+ "selectPreviousColumnChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed CUT")), "cut");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed END")),
+ "selectLastColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed PAGE_UP")),
+ "scrollUpExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_UP")),
+ "selectPreviousRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed HOME")),
+ "selectFirstRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed END")),
+ "selectLastRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_DOWN")),
+ "scrollRightChangeSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed LEFT")),
+ "selectPreviousColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed PAGE_UP")),
+ "scrollLeftChangeSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")),
+ "selectPreviousColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed KP_RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed SPACE")),
+ "addToSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed SPACE")),
+ "toggleAndAnchor");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed SPACE")),
+ "extendTo");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed SPACE")),
+ "moveSelectionTo");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed BACK_SLASH")),
+ "clearSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed ESCAPE")),
+ "cancel");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed HOME")),
+ "selectFirstColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed ENTER")),
+ "selectNextRowCell");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed ENTER")),
+ "selectPreviousRowCell");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed RIGHT")),
+ "selectNextColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed PAGE_UP")),
+ "scrollLeftExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_DOWN")),
+ "scrollDownChangeSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed KP_UP")),
+ "selectPreviousRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed KP_LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed X")), "cut");
+ harness.check(m2p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed PAGE_DOWN")), "scrollRightExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed SLASH")),
+ "selectAll");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed C")), "copy");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed KP_RIGHT")),
+ "selectNextColumnChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed END")),
+ "selectLastColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed KP_DOWN")), "selectNextRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed TAB")),
+ "selectPreviousColumnCell");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed KP_LEFT")),
+ "selectPreviousColumnChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed HOME")),
+ "selectFirstColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed V")),
+ "paste");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")),
+ "selectNextRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed KP_DOWN")),
+ "selectNextRowChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed RIGHT")),
+ "selectNextColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed A")),
+ "selectAll");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed END")),
+ "selectLastRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed COPY")), "copy");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("ctrl pressed KP_UP")),
+ "selectPreviousRowChangeLead");
+ harness.check(m2p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed KP_LEFT")),
+ "selectPreviousColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed KP_DOWN")),
+ "selectNextRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed TAB")),
+ "selectNextColumnCell");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed UP")),
+ "selectPreviousRow");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift ctrl pressed HOME")),
+ "selectFirstRowExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("shift pressed PAGE_DOWN")),
+ "scrollDownExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")),
+ "selectNextColumn");
+ harness.check(m2p.get(KeyStroke.getKeyStroke(
+ "shift ctrl pressed KP_RIGHT")), "selectNextColumnExtendSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed F2")),
+ "startEditing");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PAGE_UP")),
+ "scrollUpChangeSelection");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed PASTE")), "paste");
+ InputMap m3 = t.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/getModel.java b/gnu/testlet/javax/swing/JTable/getModel.java
new file mode 100644
index 00000000..3ba6dd10
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getModel.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some checks for the getModel() method in the {@link JTable} class.
+ */
+public class getModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getModel()");
+ DefaultTableModel m1 = new DefaultTableModel();
+ JTable t = new JTable(m1);
+ harness.check(t.getModel() == m1);
+
+ DefaultTableModel m2 = new DefaultTableModel();
+ t.setModel(m2);
+ harness.check(t.getModel() == m2);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/getRowHeight.java b/gnu/testlet/javax/swing/JTable/getRowHeight.java
new file mode 100644
index 00000000..2dbd12cf
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/getRowHeight.java
@@ -0,0 +1,65 @@
+/* getRowHeight.java -- some checks for the getRowHeight() method in the
+ JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+
+public class getRowHeight implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JTable t = new JTable(4, 3);
+ harness.check(t.getRowHeight(), 16);
+ t.setRowHeight(99);
+ harness.check(t.getRowHeight(), 99);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JTable t = new JTable(4, 3);
+ harness.check(t.getRowHeight(0), 16);
+ t.setRowHeight(99);
+ harness.check(t.getRowHeight(0), 99);
+ t.setRowHeight(0, 12);
+ harness.check(t.getRowHeight(0), 12);
+
+ // try negative index
+ harness.check(t.getRowHeight(-1), 0);
+
+ // try index too large
+ harness.check(t.getRowHeight(4), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/initializeLocalVars.java b/gnu/testlet/javax/swing/JTable/initializeLocalVars.java
new file mode 100644
index 00000000..e7594f0b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/initializeLocalVars.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JTable;
+
+import javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the initializeLocalVars method works correctly and if the
+ * pre- and post-conditions are fullfilled.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class initializeLocalVars implements Testlet
+{
+
+ /**
+ * A subclass of JTable that overrides initializeLocalVars. This is used
+ * to check the preconditions of this method.
+ */
+ class TestTable extends JTable
+ {
+ protected void initializeLocalVars()
+ {
+ hasModel = (getModel() != null);
+ hasColumnModel = (getColumnModel() != null);
+ super.initializeLocalVars();
+ }
+ }
+
+ boolean hasModel;
+ boolean hasColumnModel;
+
+ /**
+ * Starts the test.
+ *
+ * @param harness the test harness to use.
+ */
+ public void test(TestHarness harness)
+ {
+ testPreconditions(harness);
+ }
+
+ /**
+ * Checks the preconditions of the initializeLocalVars method.
+ *
+ * @param harness the test harness to use
+ */
+ void testPreconditions(TestHarness harness)
+ {
+ TestTable table = new TestTable();
+ harness.check(hasModel, true);
+ harness.check(hasColumnModel, true);
+
+ // TODO: I only implement what I need atm. Complete this test.
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/isCellEditable.java b/gnu/testlet/javax/swing/JTable/isCellEditable.java
new file mode 100644
index 00000000..5cf481d3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/isCellEditable.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some checks for the isCellEditable() method in the {@link JTable} class.
+ */
+public class isCellEditable implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("isCellEditable()");
+ DefaultTableModel m1 = new DefaultTableModel(4, 6) {
+ public boolean isCellEditable(int row, int column)
+ {
+ return (row > 1 && column > 2);
+ }
+ };
+ JTable t = new JTable(m1);
+ harness.check(!t.isCellEditable(0, 0));
+ harness.check(t.isCellEditable(2, 3));
+
+ // try negative row
+ harness.check(!t.isCellEditable(-1, 0));
+
+ // try negative column
+ harness.check(!t.isCellEditable(0, -1));
+
+ // try row too big
+ harness.check(!t.isCellEditable(999, 0));
+
+ // try column too big
+ boolean pass = false;
+ try
+ {
+ /* boolean b =*/ t.isCellEditable(0, 999);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/isColumnSelected.java b/gnu/testlet/javax/swing/JTable/isColumnSelected.java
new file mode 100644
index 00000000..3b00f87c
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/isColumnSelected.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JTable;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the functionality of the method isColumnSelected in JTable. This test
+ * shows that isColumnSelected() returns true exactly when the requested
+ * column index is set as selected in the tableModel's selectionModel,
+ * independent of the columnSelectionAllowed property.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class isColumnSelected implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testColumnSelectionAllowed(harness);
+ testColumnSelectionNotAllowed(harness);
+ }
+
+ /**
+ * Tests the case when the columnSelectionAllowed property is true.
+ *
+ * @param harness the test harness to use
+ */
+ private void testColumnSelectionAllowed(TestHarness harness)
+ {
+ JTable table = createTestTable();
+ table.setColumnSelectionAllowed(true);
+ ListSelectionModel selModel = table.getColumnModel().getSelectionModel();
+ // Select column#1 in the selection model.
+ selModel.setSelectionInterval(1, 1);
+ harness.check(table.isColumnSelected(1), true);
+ }
+
+ /**
+ * Tests the case when the columnSelectionAllowed property is false.
+ *
+ * @param harness the test harness to use
+ */
+ private void testColumnSelectionNotAllowed(TestHarness harness)
+ {
+ JTable table = createTestTable();
+ table.setColumnSelectionAllowed(false);
+ ListSelectionModel selModel = table.getColumnModel().getSelectionModel();
+ // Select column#1 in the selection model.
+ selModel.setSelectionInterval(1, 1);
+ harness.check(table.isColumnSelected(1), true);
+ }
+
+ /**
+ * Creates a JTable used for testing.
+ *
+ * @return the test table
+ */
+ private JTable createTestTable()
+ {
+ return new JTable(new Object[][] {{"1", "2", "3"}, {"4", "5", "6"},
+ {"7", "8", "9"}},
+ new Object[] {"1", "2", "3"});
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/isRowSelected.java b/gnu/testlet/javax/swing/JTable/isRowSelected.java
new file mode 100644
index 00000000..93a20127
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/isRowSelected.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JTable;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the functionality of the method isRowSelected in JTable. This test
+ * shows that isRowSelected() returns true exactly when the requested row index
+ * is set as selected in the table's selectionModel, independent of the
+ * rowSelectionAllowed property.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class isRowSelected implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRowSelectionAllowed(harness);
+ testRowSelectionNotAllowed(harness);
+ }
+
+ /**
+ * Tests the case when the rowSelectionAllowed property is true.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRowSelectionAllowed(TestHarness harness)
+ {
+ JTable table = createTestTable();
+ table.setRowSelectionAllowed(true);
+ ListSelectionModel selModel = table.getSelectionModel();
+ // Select row#1 in the selection model.
+ selModel.setSelectionInterval(1, 1);
+ harness.check(table.isRowSelected(1), true);
+ }
+
+ /**
+ * Tests the case when the rowSelectionAllowed property is false.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRowSelectionNotAllowed(TestHarness harness)
+ {
+ JTable table = createTestTable();
+ table.setRowSelectionAllowed(false);
+ ListSelectionModel selModel = table.getSelectionModel();
+ // Select row#1 in the selection model.
+ selModel.setSelectionInterval(1, 1);
+ harness.check(table.isRowSelected(1), true);
+ }
+
+ /**
+ * Creates a JTable used for testing.
+ *
+ * @return the test table
+ */
+ private JTable createTestTable()
+ {
+ return new JTable(new Object[][] {{"1", "2", "3"}, {"4", "5", "6"},
+ {"7", "8", "9"}},
+ new Object[] {"1", "2", "3"});
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/setAutoCreateColumnsFromModel.java b/gnu/testlet/javax/swing/JTable/setAutoCreateColumnsFromModel.java
new file mode 100644
index 00000000..0440ff80
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/setAutoCreateColumnsFromModel.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the setAutoCreateColumnsFromModel() method in the
+ * {@link JTable} class.
+ */
+public class setAutoCreateColumnsFromModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ /**
+ * According to the API specification, if the autoCreateColumnsFromModel
+ * flag changes from false to true, a call is made to
+ * createDefaultColumnsFromModel(). This test checks this
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("setAutoCreateColumnsFromModel(boolean) - Test 1");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ tm.setColumnIdentifiers(new String[] {"C0", "C1", "C2"});
+ JTable table = new JTable(tm);
+ table.setAutoCreateColumnsFromModel(false);
+ DefaultTableColumnModel tcm1 = new DefaultTableColumnModel();
+ tcm1.addColumn(new TableColumn(1, 50));
+ table.setColumnModel(tcm1);
+
+ table.setAutoCreateColumnsFromModel(true);
+ TableColumnModel tcm2 = table.getColumnModel();
+ harness.check(tcm2.getColumnCount(), 3);
+ TableColumn c0 = tcm2.getColumn(0);
+ TableColumn c1 = tcm2.getColumn(1);
+ TableColumn c2 = tcm2.getColumn(2);
+ harness.check(c0.getIdentifier(), "C0");
+ harness.check(c0.getWidth(), 75);
+ harness.check(c0.getMinWidth(), 15);
+ harness.check(c0.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getIdentifier(), "C1");
+ harness.check(c1.getWidth(), 75);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c2.getIdentifier(), "C2");
+ harness.check(c2.getWidth(), 75);
+ harness.check(c2.getMinWidth(), 15);
+ harness.check(c2.getMaxWidth(), Integer.MAX_VALUE);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/setColumnSelectionAllowed.java b/gnu/testlet/javax/swing/JTable/setColumnSelectionAllowed.java
new file mode 100644
index 00000000..798c2867
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/setColumnSelectionAllowed.java
@@ -0,0 +1,65 @@
+/* setColumnSelectionAllowed.java -- some checks for the
+ setColumnSelectionAllowed() method in the JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JTable;
+
+public class setColumnSelectionAllowed
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JTable t = new JTable();
+ harness.check(t.getColumnSelectionAllowed(), false);
+ t.addPropertyChangeListener(this);
+ t.setColumnSelectionAllowed(true);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent event = (PropertyChangeEvent) events.get(0);
+ harness.check(event.getSource(), t);
+ harness.check(event.getPropertyName(), "columnSelectionAllowed");
+ harness.check(event.getOldValue(), Boolean.FALSE);
+ harness.check(event.getNewValue(), Boolean.TRUE);
+
+ // setting the same again generates no event
+ events.clear();
+ t.setRowSelectionAllowed(true);
+ harness.check(events.size(), 0);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JTable/setModel.java b/gnu/testlet/javax/swing/JTable/setModel.java
new file mode 100644
index 00000000..895e0e06
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/setModel.java
@@ -0,0 +1,236 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Arrays;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Some checks for the setModel() method in the {@link JTable} class.
+ */
+public class setModel implements Testlet {
+
+ class PropertyChangeHandler implements PropertyChangeListener
+ {
+
+ /**
+ * Receives notification when a property changes.
+ *
+ * @param e the property change event
+ */
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ propertyChangeFired = true;
+ }
+
+ }
+
+ boolean propertyChangeFired;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testLeadAnchorSelectionUpdate(harness);
+ testSelectionModel(harness);
+ testPropertyFired(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("setModel(TableModel) - test1");
+ DefaultTableModel m1 = new DefaultTableModel();
+ JTable t = new JTable(m1);
+ DefaultTableModel m2 = new DefaultTableModel();
+ t.setModel(m2);
+ TableModelListener[] listeners1 = m1.getTableModelListeners();
+ TableModelListener[] listeners2 = m2.getTableModelListeners();
+ harness.check(!Arrays.asList(listeners1).contains(t));
+ harness.check(Arrays.asList(listeners2).contains(t));
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ t.setModel(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ /**
+ * This test checks that the autoCreateColumnsFromModel flag is correctly
+ * observed.
+ *
+ * @param harness the test harness.
+ */
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("setModel(TableModel) - test2");
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ JTable t = new JTable(m1);
+ TableColumnModel tcm = t.getColumnModel();
+ tcm.getColumn(1).setModelIndex(0);
+ tcm.getColumn(0).setModelIndex(1);
+ harness.check(t.getColumnCount(), 3);
+ harness.check(t.getColumnName(0), "B");
+ harness.check(t.getColumnName(1), "A");
+ harness.check(t.getColumnName(2), "C");
+
+ DefaultTableModel m2 = new DefaultTableModel(new String[] {"AA", "BB"}, 1);
+ t.setModel(m2);
+ harness.check(t.getColumnCount(), 2);
+ harness.check(t.getColumnName(0), "AA");
+ harness.check(t.getColumnName(1), "BB");
+
+ tcm = t.getColumnModel();
+ tcm.getColumn(1).setModelIndex(0);
+ tcm.getColumn(0).setModelIndex(1);
+ t.setAutoCreateColumnsFromModel(false);
+ DefaultTableModel m3 = new DefaultTableModel(
+ new String[] {"CC", "DD", "EE"}, 1);
+ t.setModel(m3);
+ harness.check(t.getColumnCount(), 2);
+ harness.check(t.getColumnName(0), "DD");
+ harness.check(t.getColumnName(1), "CC");
+ }
+
+ /**
+ * Tests if setModel updates the lead and anchor selection indices correctly.
+ *
+ * @param the test harness to use
+ */
+ private void testLeadAnchorSelectionUpdate(TestHarness harness)
+ {
+ harness.checkPoint("leadAnchorSelectionUpdate");
+
+ JTable table = new JTable(0, 0);
+
+ // Test a model with 0 rows and 0 columns.
+ table.setModel(new DefaultTableModel(0, 0));
+ try { Thread.sleep(500); } catch (InterruptedException ex) {}
+ harness.check(table.getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(table.getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getLeadSelectionIndex(), -1);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getAnchorSelectionIndex(), -1);
+
+ // Test a model with 1 row and 0 columns.
+ table.setModel(new DefaultTableModel(1, 0));
+ try { Thread.sleep(500); } catch (InterruptedException ex) {}
+ harness.check(table.getSelectionModel().getLeadSelectionIndex(), 0);
+ harness.check(table.getSelectionModel().getAnchorSelectionIndex(), 0);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getLeadSelectionIndex(), -1);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getAnchorSelectionIndex(), -1);
+
+ // Test a model with 0 rows and 1 column.
+ table.setModel(new DefaultTableModel(0, 1));
+ try { Thread.sleep(500); } catch (InterruptedException ex) {}
+ harness.check(table.getSelectionModel().getLeadSelectionIndex(), -1);
+ harness.check(table.getSelectionModel().getAnchorSelectionIndex(), -1);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getLeadSelectionIndex(), 0);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getAnchorSelectionIndex(), 0);
+
+ // Test a model with 1 row and 1 columns.
+ table.setModel(new DefaultTableModel(1, 1));
+ try { Thread.sleep(500); } catch (InterruptedException ex) {}
+ harness.check(table.getSelectionModel().getLeadSelectionIndex(), 0);
+ harness.check(table.getSelectionModel().getAnchorSelectionIndex(), 0);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getLeadSelectionIndex(), 0);
+ harness.check(table.getColumnModel().getSelectionModel()
+ .getAnchorSelectionIndex(), 0);
+ }
+
+ /**
+ * Tests if the selectionModel is changes when the table's model
+ * changes. The test shows that the selectionModel is not replaced but the
+ * selection is cleared.
+ *
+ * @oaram harness the test harness to use
+ */
+ private void testSelectionModel(TestHarness harness)
+ {
+ harness.checkPoint("selectionModel");
+ JTable table = new JTable();
+ ListSelectionModel m1 = table.getSelectionModel();
+ m1.addSelectionInterval(1, 1);
+ harness.check(m1.isSelectedIndex(1), true);
+ table.setModel(new DefaultTableModel());
+ harness.check(table.getSelectionModel() == m1);
+ harness.check(m1.isSelectedIndex(1), false);
+ }
+
+ /**
+ * Tests if changing this property fires a property change event.
+ *
+ * @param harness the test harness to use
+ */
+ private void testPropertyFired(TestHarness harness)
+ {
+ harness.checkPoint("propertyFired");
+ JTable table = new JTable();
+ table.addPropertyChangeListener(new PropertyChangeHandler());
+ DefaultTableModel m1 = new DefaultTableModel();
+ DefaultTableModel m2 = new DefaultTableModel();
+ propertyChangeFired = false;
+ table.setModel(m1);
+ harness.check(propertyChangeFired, true);
+ propertyChangeFired = false;
+ table.setModel(m1);
+ harness.check(propertyChangeFired, false);
+ propertyChangeFired = false;
+ table.setModel(m2);
+ harness.check(propertyChangeFired, true);
+ try
+ {
+ table.setModel(null);
+ harness.fail("IllegalArgumenException must be fired");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ harness.check(true);
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/setRowHeight.java b/gnu/testlet/javax/swing/JTable/setRowHeight.java
new file mode 100644
index 00000000..e9c76e8a
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/setRowHeight.java
@@ -0,0 +1,76 @@
+/* setRowHeight.java -- some checks for the setRowHeight() method in the
+ JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JTable;
+
+import javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setRowHeight implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint(("int"));
+ JTable t = new JTable(4, 3);
+ harness.check(t.getRowHeight(0), 16);
+ t.setRowHeight(99);
+ harness.check(t.getRowHeight(0), 99);
+
+ // does this row height override individual row heights?
+ t.setRowHeight(1, 13);
+ harness.check(t.getRowHeight(1), 13);
+ t.setRowHeight(14);
+ harness.check(t.getRowHeight(1), 14);
+
+ // try zero
+ boolean pass = false;
+ try
+ {
+ t.setRowHeight(0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ JTable t = new JTable(4, 3);
+ harness.check(t.getRowHeight(0), 16);
+ t.setRowHeight(99);
+ harness.check(t.getRowHeight(0), 99);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTable/setRowSelectionAllowed.java b/gnu/testlet/javax/swing/JTable/setRowSelectionAllowed.java
new file mode 100644
index 00000000..8c003aa4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTable/setRowSelectionAllowed.java
@@ -0,0 +1,64 @@
+/* setRowSelectionAllowed.java -- some checks for the setRowSelectionAllowed()
+ method in the JTable class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JTable;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JTable;
+
+public class setRowSelectionAllowed
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JTable t = new JTable();
+ harness.check(t.getRowSelectionAllowed(), true);
+ t.addPropertyChangeListener(this);
+ t.setRowSelectionAllowed(false);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent event = (PropertyChangeEvent) events.get(0);
+ harness.check(event.getSource(), t);
+ harness.check(event.getPropertyName(), "rowSelectionAllowed");
+ harness.check(event.getOldValue(), Boolean.TRUE);
+ harness.check(event.getNewValue(), Boolean.FALSE);
+
+ // setting the same again generates no event
+ events.clear();
+ t.setRowSelectionAllowed(false);
+ harness.check(events.size(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTableHeader/CVS/Entries b/gnu/testlet/javax/swing/JTableHeader/CVS/Entries
new file mode 100644
index 00000000..81d95a7b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTableHeader/CVS/Entries
@@ -0,0 +1,2 @@
+/getInputMap.java/1.1/Wed Jun 7 09:45:54 2006//
+D
diff --git a/gnu/testlet/javax/swing/JTableHeader/CVS/Repository b/gnu/testlet/javax/swing/JTableHeader/CVS/Repository
new file mode 100644
index 00000000..4cdfae36
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTableHeader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTableHeader
diff --git a/gnu/testlet/javax/swing/JTableHeader/CVS/Root b/gnu/testlet/javax/swing/JTableHeader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTableHeader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTableHeader/getInputMap.java b/gnu/testlet/javax/swing/JTableHeader/getInputMap.java
new file mode 100644
index 00000000..869a38ad
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTableHeader/getInputMap.java
@@ -0,0 +1,69 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JTableHeader class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JTableHeader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.table.JTableHeader;
+
+/**
+ * Checks the input maps defined for a JTabbedPane - this is really testing
+ * the setup performed by BasicTabbedPaneUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JTableHeader th = new JTableHeader();
+ InputMap m1 = th.getInputMap();
+ InputMap m2 = th.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JTableHeader th = new JTableHeader();
+ InputMap m1 = th.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ harness.check(m1.getParent(), null);
+ InputMap m2 = th.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ harness.check(m2.getParent(), null);
+ InputMap m3 = th.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextArea/CVS/Entries b/gnu/testlet/javax/swing/JTextArea/CVS/Entries
new file mode 100644
index 00000000..d703cdcc
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/CVS/Entries
@@ -0,0 +1,5 @@
+/gettingText.java/1.1/Sat Feb 26 17:52:14 2005//
+/isValidChecks.java/1.2/Tue Sep 27 20:16:23 2005//
+/preferredSize.java/1.2/Mon Sep 12 13:51:21 2011//
+/text.java/1.2/Sat Feb 26 17:52:14 2005//
+D
diff --git a/gnu/testlet/javax/swing/JTextArea/CVS/Repository b/gnu/testlet/javax/swing/JTextArea/CVS/Repository
new file mode 100644
index 00000000..8093d23d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTextArea
diff --git a/gnu/testlet/javax/swing/JTextArea/CVS/Root b/gnu/testlet/javax/swing/JTextArea/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTextArea/gettingText.java b/gnu/testlet/javax/swing/JTextArea/gettingText.java
new file mode 100644
index 00000000..a1478cf1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/gettingText.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JTextArea;
+
+import javax.swing.JTextArea;
+import javax.swing.text.BadLocationException;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Test if the carret mark is always less or equal to the carret dot.
+ * Should not require GUI to run.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class gettingText
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ String content = "abcdefghijklmnopqrstuvwxyz";
+ JTextArea area = new JTextArea(content);
+
+ int l = content.length();
+
+ int mark;
+ int dot;
+
+ test:
+ for (int a = 0; a < l; a++)
+ for (int b = 0; b < l; b++)
+ {
+ area.setSelectionStart(a);
+ area.setSelectionEnd(b);
+
+ mark = area.getCaret().getMark();
+ dot = area.getCaret().getDot();
+
+ if (mark > dot)
+ {
+ harness.fail("mark, " + mark + " > dot, " + dot +
+ " when setting [" + a + ".." + b + "]"
+ );
+ break test;
+ }
+ }
+
+ String s;
+ testSt:
+ for (int a = 0; a < l; a++)
+ for (int b = a + 1; b < l; b++)
+ {
+ s = content.substring(a, b);
+ try
+ {
+ area.setSelectionStart(a);
+ area.setSelectionEnd(b);
+
+ if (!area.getSelectedText().equals(s))
+ {
+ harness.check(area.getText(a, b), s,
+ "getSelectedText [" + a + "," + b + "]"
+ );
+ break testSt;
+ }
+
+ area.select(1,2);
+ area.select(a, b);
+
+ if (!area.getSelectedText().equals(s))
+ {
+ harness.check(area.getSelectedText(), s,
+ "getSelectedText select[" + a + "," + b + "]"
+ );
+ break testSt;
+ }
+
+
+ if (!area.getText(a, b-a).equals(s))
+ {
+ harness.check(area.getText(a, b-a), s,
+ "getText [" + a + "," + (b-a) + "]");
+ }
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException in getSelectedText [" + a +
+ "," + b + "]"
+ );
+ }
+ }
+
+ // test moveCaretPosition
+ area.setSelectionStart(5);
+ area.moveCaretPosition(0);
+ harness.check(area.getSelectedText(), "abcde", "moveCaretPositio()");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextArea/isValidChecks.java b/gnu/testlet/javax/swing/JTextArea/isValidChecks.java
new file mode 100644
index 00000000..a35d25d1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/isValidChecks.java
@@ -0,0 +1,83 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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.javax.swing.JTextArea;
+
+import java.awt.Robot;
+import java.awt.AWTException;
+import javax.swing.JFrame;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isValidChecks implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JFrame jf = new JFrame();
+ JTextArea area = new JTextArea(20, 45);
+ JScrollPane scrollpane = new JScrollPane(area);
+ Robot r = null;
+ try
+ {
+ r = new Robot();
+ }
+ catch (AWTException e)
+ {
+ harness.fail("caught AWTException: "+e.getMessage());
+ }
+
+ jf.setContentPane(scrollpane);
+ for (int i=0; i<80; i++) {
+ area.append("line#" + i + "\n");
+ };
+ r.waitForIdle();
+ jf.pack();
+ r.waitForIdle();
+ harness.checkPoint("append checks");
+ area.append("");
+ r.waitForIdle();
+ harness.check(area.isValid(), true);
+ area.append("lineNEw\n");
+ r.waitForIdle();
+ harness.check(area.isValid(), false);
+ area.validate();
+
+ harness.checkPoint("setRows checks");
+ area.setRows(area.getRows());
+ r.waitForIdle();
+ harness.check(area.isValid(), true);
+ area.setRows(area.getRows()+1);
+ r.waitForIdle();
+ harness.check(area.isValid(), false);
+ area.validate();
+
+ harness.checkPoint("setColumns checks");
+ area.setColumns(area.getColumns());
+ r.waitForIdle();
+ harness.check(area.isValid(), true);
+ area.setColumns(area.getColumns()+1);
+ r.waitForIdle();
+ harness.check(area.isValid(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextArea/preferredSize.java b/gnu/testlet/javax/swing/JTextArea/preferredSize.java
new file mode 100644
index 00000000..17d9c09d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/preferredSize.java
@@ -0,0 +1,70 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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, Inc., 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JTextArea;
+
+import javax.swing.JTextArea;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class preferredSize implements Testlet
+{
+ public static String markup =
+ "Questions are <font size=\"+1\" color=\"blue\">a burden</font> to others,\n" +
+ "answers <font size=\"+2\" color=\"red\">a prison</font> for oneself.";
+ public static JTextArea ta2 = new JTextArea(markup);
+
+ public void test(TestHarness harness)
+ {
+ View view = ta2.getUI().getRootView(ta2);
+ try
+ {
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) >
+ view.getPreferredSpan(View.VERTICAL));
+ ta2.setText("");
+ harness.check (ta2.getPreferredSize().width == 0);
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) == 0);
+ ta2.setText("\n\n\n\n\n\n\n\n\n");
+ harness.check (ta2.getPreferredSize().width == 0);
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) == 0);
+
+ ta2.setLineWrap(true);
+ ta2.setWrapStyleWord(true);
+
+ harness.check (ta2.getPreferredSize().width == 0);
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) == 0);
+ ta2.setText("");
+ harness.check (ta2.getPreferredSize().width == 0);
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) == 0);
+ ta2.setText("\n\n\n\n\n\n\n\n\n");
+ harness.check (ta2.getPreferredSize().width == 0);
+ harness.check (view.getPreferredSpan(View.HORIZONTAL) == 0);
+ }
+ catch (Exception e)
+ {
+ // There shouldn't be an exception thrown. At the time of writing of
+ // this test case, GNU Classpath 0.19 + CVS does fall into this block.
+ harness.debug(e);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextArea/text.java b/gnu/testlet/javax/swing/JTextArea/text.java
new file mode 100644
index 00000000..6fbf5abd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextArea/text.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JTextArea;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTextArea;
+
+/**
+ * The basic text access functions that must also work when the
+ * component is not displayed.
+ * <p>@author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class text
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JTextArea t1 = new JTextArea();
+
+ t1.append("{a\nb\nc}");
+ harness.check(t1.getLineCount(), 3, "getLineCount");
+ harness.check(t1.getText(), "{a\nb\nc}", "simple getText");
+
+ t1.setText("0123456789");
+ t1.setSelectionStart(2);
+ t1.setSelectionEnd(5);
+ harness.check(t1.getSelectedText(),"234","getSelectedText");
+ t1.replaceRange("replacement", 3, 5);
+ harness.check(t1.getText(),"012replacement56789","replacement");
+ t1.insert("insertion", 1);
+ harness.check(t1.getText(),"0insertion12replacement56789","insertion");
+ t1.setSelectionStart(0);
+ t1.setSelectionEnd(1);
+ t1.replaceSelection("selection");
+ harness.check(t1.getText(),"selectioninsertion12replacement56789",
+ "insertion");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextField/CVS/Entries b/gnu/testlet/javax/swing/JTextField/CVS/Entries
new file mode 100644
index 00000000..f2bc9b8b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/CVS/Entries
@@ -0,0 +1,6 @@
+/CopyPaste.java/1.1/Tue Nov 8 12:57:22 2005//
+/createDefaultModel.java/1.1/Thu Oct 27 14:31:52 2005/-kk/
+/fireActionPerformed.java/1.3/Wed Nov 1 14:36:04 2006//
+/getActions.java/1.1/Sat Dec 25 18:47:08 2004//
+/setDocument.java/1.1/Thu Jan 12 19:59:19 2006//
+D
diff --git a/gnu/testlet/javax/swing/JTextField/CVS/Repository b/gnu/testlet/javax/swing/JTextField/CVS/Repository
new file mode 100644
index 00000000..49f378d6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTextField
diff --git a/gnu/testlet/javax/swing/JTextField/CVS/Root b/gnu/testlet/javax/swing/JTextField/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTextField/CopyPaste.java b/gnu/testlet/javax/swing/JTextField/CopyPaste.java
new file mode 100644
index 00000000..957fd7e3
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/CopyPaste.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JTextField;
+
+import javax.swing.JTextField;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the copy/paste functionality. Must work without GUI as well.
+ */
+public class CopyPaste implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+
+ String pasteIt = "the string to paste";
+ JTextField field = new JTextField();
+
+ field.setText(pasteIt);
+
+ harness.check(field.getText(), pasteIt, "get/setText");
+ field.selectAll();
+ field.copy();
+
+ JTextField field2 = new JTextField();
+ field2.paste();
+
+ harness.check(field2.getText(), pasteIt, "paste");
+
+ field2.paste();
+ harness.check(field2.getText(), pasteIt + pasteIt,"subsequent paste");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTextField/createDefaultModel.java b/gnu/testlet/javax/swing/JTextField/createDefaultModel.java
new file mode 100644
index 00000000..96ce09a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/createDefaultModel.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JTextField;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+import javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the method createDefaultModel in JTextField returns the correct
+ * value. It must be a document of type javax.swing.text.PlainDocument.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class createDefaultModel implements Testlet
+{
+
+ /**
+ * A testclass that overrides the protected method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ static class TestTextField extends JTextField
+ {
+ /**
+ * Overridden to make this method publicly accessible.
+ *
+ * @return the created document
+ */
+ public Document createDefaultModel()
+ {
+ return super.createDefaultModel();
+ }
+ }
+
+ /**
+ * Starts the testrun.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestTextField tf = new TestTextField();
+ Document doc = tf.createDefaultModel();
+ harness.check(doc.getClass(), PlainDocument.class);
+ harness.check(doc.getProperty("filterNewlines"), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTextField/fireActionPerformed.java b/gnu/testlet/javax/swing/JTextField/fireActionPerformed.java
new file mode 100644
index 00000000..610bda82
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/fireActionPerformed.java
@@ -0,0 +1,175 @@
+/* fireActionPerfomed.java
+ Copyright (C) 2006
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.JTextField;
+
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class fireActionPerformed implements Testlet
+{
+
+ JFrame frame;
+ JTextField text;
+ Robot robot;
+
+ protected void setUp1(final TestHarness harness) throws Exception
+ {
+ text = new JTextField();
+ text.setActionCommand(null);
+ text.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent event)
+ {
+ harness.check(event.getActionCommand() != null);
+ harness.check(event.getActionCommand(), text.getText());
+ }
+ });
+
+ frame = new JFrame();
+ frame.setSize(200, 200);
+ frame.getContentPane().add(text);
+ frame.show();
+
+ robot = new Robot();
+ robot.setAutoDelay(50);
+ robot.delay(500);
+ }
+
+ protected void setUp2(final TestHarness harness) throws Exception
+ {
+ text = new JTextField();
+ text.setActionCommand("Action Command");
+ text.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent event)
+ {
+ harness.check(event.getActionCommand() != null);
+ harness.check(event.getActionCommand() != text.getText());
+ harness.check(event.getActionCommand() == "Action Command");
+ }
+ });
+
+ frame = new JFrame();
+ frame.setSize(200, 200);
+ frame.getContentPane().add(text);
+ frame.show();
+
+ robot = new Robot();
+ robot.setAutoDelay(50);
+ robot.delay(500);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ frame.dispose();
+ }
+
+ public void click(JTextField text, int x, int y)
+ {
+ Point p = new Point();
+ p.x = x;
+ p.y = y;
+
+ SwingUtilities.convertPointToScreen(p, text);
+ robot.mouseMove(p.x, p.y);
+ robot.mousePress(InputEvent.BUTTON1_MASK);
+ robot.mouseRelease(InputEvent.BUTTON1_MASK);
+ }
+
+ public void type(int key)
+ {
+ robot.keyPress(key);
+ robot.keyRelease(key);
+ }
+
+ public void enterInput(TestHarness harness)
+ {
+ type(KeyEvent.VK_U);
+ type(KeyEvent.VK_S);
+ type(KeyEvent.VK_E);
+ type(KeyEvent.VK_R);
+ type(KeyEvent.VK_SPACE);
+ type(KeyEvent.VK_I);
+ type(KeyEvent.VK_N);
+ type(KeyEvent.VK_P);
+ type(KeyEvent.VK_U);
+ type(KeyEvent.VK_T);
+ type(KeyEvent.VK_ENTER);
+ }
+
+ public void test(TestHarness harness)
+ {
+ // This test ensures that if actionCommand == null,
+ // then the user's input is used as the actionCommand.
+ try
+ {
+ setUp1(harness);
+ try
+ {
+ click(text, text.getWidth() / 2, text.getHeight() / 2);
+ enterInput(harness);
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ harness.fail("Exception: " + e);
+ }
+
+ // This test ensures that if actionCommand != null,
+ // then the actionCommand is used.
+ try
+ {
+ setUp2(harness);
+ try
+ {
+ click(text, text.getWidth() / 2, text.getHeight() / 2);
+ enterInput(harness);
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ harness.fail("Exception: " + e);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTextField/getActions.java b/gnu/testlet/javax/swing/JTextField/getActions.java
new file mode 100644
index 00000000..07506c64
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/getActions.java
@@ -0,0 +1,111 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.JTextField;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.Action;
+import javax.swing.JTextField;
+import javax.swing.text.TextAction;
+
+public class getActions
+ implements Testlet
+{
+ private void checkForAction(TestHarness h, Action[] actions, String name)
+ {
+ boolean found = false;
+
+ for (int i = 0 ; i < actions.length; ++i)
+ if (((TextAction) actions[i]).getValue(Action.NAME).equals(name))
+ {
+ found = true;
+ break;
+ }
+
+ h.check(found, name);
+ }
+
+ public void test(TestHarness h)
+ {
+ JTextField textField = new JTextField();
+ Action[] actions = textField.getActions();
+
+ h.check(actions != null, "actions != null");
+ h.check(actions.length, 54, "number of actions");
+
+ checkForAction(h, actions, "caret-backward");
+ checkForAction(h, actions, "caret-begin-line");
+ checkForAction(h, actions, "caret-end-line");
+ checkForAction(h, actions, "caret-forward");
+ checkForAction(h, actions, "caret-next-word");
+ checkForAction(h, actions, "caret-previous-word");
+ checkForAction(h, actions, "copy-to-clipboard");
+ checkForAction(h, actions, "cut-to-clipboard");
+ checkForAction(h, actions, "delete-next");
+ checkForAction(h, actions, "delete-previous");
+ checkForAction(h, actions, "notify-field-accept");
+ checkForAction(h, actions, "paste-from-clipboard");
+ checkForAction(h, actions, "select-all");
+ checkForAction(h, actions, "selection-backward");
+ checkForAction(h, actions, "selection-begin");
+ checkForAction(h, actions, "selection-begin-line");
+ checkForAction(h, actions, "selection-begin-word");
+ checkForAction(h, actions, "selection-end");
+ checkForAction(h, actions, "selection-end-line");
+ checkForAction(h, actions, "selection-end-word");
+ checkForAction(h, actions, "selection-forward");
+ checkForAction(h, actions, "selection-next-word");
+ checkForAction(h, actions, "selection-previous-word");
+ checkForAction(h, actions, "toggle-componentOrientation");
+ checkForAction(h, actions, "unselect");
+ checkForAction(h, actions, "beep");
+ checkForAction(h, actions, "caret-begin");
+ checkForAction(h, actions, "caret-begin-paragraph");
+ checkForAction(h, actions, "caret-begin-word");
+ checkForAction(h, actions, "caret-down");
+ checkForAction(h, actions, "caret-end");
+ checkForAction(h, actions, "caret-end-paragraph");
+ checkForAction(h, actions, "caret-end-word");
+ checkForAction(h, actions, "caret-up");
+ checkForAction(h, actions, "default-typed");
+ checkForAction(h, actions, "dump-model");
+ checkForAction(h, actions, "insert-break");
+ checkForAction(h, actions, "insert-content");
+ checkForAction(h, actions, "insert-tab");
+ checkForAction(h, actions, "page-down");
+ checkForAction(h, actions, "page-up");
+ checkForAction(h, actions, "selection-begin-paragraph");
+ checkForAction(h, actions, "selection-down");
+ checkForAction(h, actions, "selection-end-paragraph");
+ checkForAction(h, actions, "selection-page-down");
+ checkForAction(h, actions, "selection-page-left");
+ checkForAction(h, actions, "selection-page-right");
+ checkForAction(h, actions, "selection-page-up");
+ checkForAction(h, actions, "selection-up");
+ checkForAction(h, actions, "select-line");
+ checkForAction(h, actions, "select-paragraph");
+ checkForAction(h, actions, "select-word");
+ checkForAction(h, actions, "set-read-only");
+ checkForAction(h, actions, "set-writable");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTextField/setDocument.java b/gnu/testlet/javax/swing/JTextField/setDocument.java
new file mode 100644
index 00000000..d4c1013b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTextField/setDocument.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.JTextField;
+
+import java.beans.PropertyChangeEvent;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+import javax.swing.plaf.basic.BasicTextFieldUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the setDocument method sets the "filterNewLines" property and if
+ * it does so through a PropertyChangeEvent.
+ */
+public class setDocument implements Testlet
+{
+ static TestHarness h2;
+
+ class TestUI extends BasicTextFieldUI
+ {
+ protected void propertyChange(PropertyChangeEvent evt)
+ {
+ Document doc = ((JTextField)getComponent()).getDocument();
+ h2.check (doc.getProperty("filterNewlines"), Boolean.TRUE);
+ super.propertyChange(evt);
+ h2.check (doc.getProperty("filterNewlines"), Boolean.TRUE);
+ }
+ }
+
+ static class TestTextField extends JTextField
+ {
+ public void setDocument(Document doc)
+ {
+ h2.check (doc.getProperty("filterNewlines") == null);
+ super.setDocument(doc);
+ h2.check (doc.getProperty("filterNewlines") != null);
+ }
+
+ public Document createDefaultModel()
+ {
+ return super.createDefaultModel();
+ }
+ }
+
+ /**
+ * Starts the testrun.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ TestTextField tf = new TestTextField();
+ tf.setUI(new TestUI());
+ Document doc = tf.createDefaultModel();
+ tf.setDocument(doc);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/CVS/Entries b/gnu/testlet/javax/swing/JToggleButton/CVS/Entries
new file mode 100644
index 00000000..ac78a9c0
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/CVS/Entries
@@ -0,0 +1,8 @@
+/actionEvent.java/1.2/Fri Jul 15 12:50:42 2005//
+/click.java/1.2/Fri Jul 15 09:46:55 2005//
+/constructor.java/1.1/Fri Jul 15 12:50:42 2005//
+/getActionCommand.java/1.1/Wed Jul 13 02:05:31 2005//
+/isFocusable.java/1.1/Thu Jun 15 19:20:08 2006//
+/model.java/1.1/Tue Sep 19 15:12:42 2006//
+/uidelegate.java/1.1/Tue Sep 19 15:12:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/JToggleButton/CVS/Repository b/gnu/testlet/javax/swing/JToggleButton/CVS/Repository
new file mode 100644
index 00000000..425d2856
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JToggleButton
diff --git a/gnu/testlet/javax/swing/JToggleButton/CVS/Root b/gnu/testlet/javax/swing/JToggleButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JToggleButton/actionEvent.java b/gnu/testlet/javax/swing/JToggleButton/actionEvent.java
new file mode 100644
index 00000000..e6690f75
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/actionEvent.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (roman@kennke.org)
+
+// 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.javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JToggleButton;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * Tests if a registered ActionListener is notfied correctly.
+ *
+ * @author Roman Kennke
+ */
+public class actionEvent
+ implements Testlet, ActionListener
+{
+ /** If the ActionListener was notified. */
+ boolean alNotified = false;
+
+ public void actionPerformed(ActionEvent e)
+ {
+ alNotified = true;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JToggleButton b = new JToggleButton();
+ b.addActionListener(this);
+
+ testProgrammaticChanges(harness, b);
+ testUserChanges(harness, b);
+ }
+
+ /**
+ * Tests if the ActionListener is correctly notfified of changes
+ * triggered by setSelected().
+ */
+ void testProgrammaticChanges(TestHarness harness, JToggleButton b)
+ {
+ b.setSelected(false);
+
+ alNotified = false;
+ b.setSelected(false);
+ harness.check(alNotified, false,
+ "Should not be notified on programmatic state change");
+
+ alNotified = false;
+ b.setSelected(true);
+ harness.check(alNotified, false,
+ "Should not be notified on programmatic state change");
+
+ alNotified = false;
+ b.setSelected(true);
+ harness.check(alNotified, false,
+ "Should not be notified on programmatic state change");
+
+ alNotified = false;
+ b.setSelected(false);
+ harness.check(alNotified, false,
+ "Should not be notified on programmatic state change");
+
+ }
+
+ /**
+ * Tests if the ActionListener is correctly notfified of changes
+ * triggered by user clicks.
+ */
+ void testUserChanges(TestHarness harness, JToggleButton b)
+ {
+ b.setSelected(false);
+
+ alNotified = false;
+ b.doClick();
+ harness.check(alNotified, true,
+ "Should be notified on user click");
+
+ alNotified = false;
+ b.doClick();
+ harness.check(alNotified, true,
+ "Should be notified on user click");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/click.java b/gnu/testlet/javax/swing/JToggleButton/click.java
new file mode 100644
index 00000000..12ba1830
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/click.java
@@ -0,0 +1,146 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JToggleButton;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * The basic functions of the toggle button
+ * that must also work when this component is not displayed.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class click
+ implements Testlet, ActionListener, ChangeListener
+{
+ static String UNASSIGNED = "<unassigned>";
+ static String LABEL = "label";
+ String command;
+ boolean ceCalled;
+
+ /** If the ActionListener has been called. */
+ boolean alCalled;
+
+ public void actionPerformed(ActionEvent e)
+ {
+ command = e.getActionCommand();
+ alCalled = true;
+ }
+
+ public void stateChanged(ChangeEvent e)
+ {
+ ceCalled = true;
+ }
+
+ public void test(TestHarness harness)
+ {
+ JToggleButton b = createToggleButton(harness);
+
+ testStateChanges(harness, b);
+ testListeners(harness, b);
+ }
+
+ private void testListeners(TestHarness harness, JToggleButton b)
+ {
+ b.setSelected(false);
+ b.addActionListener(this);
+ b.addChangeListener(this);
+ alCalled = false;
+ b.doClick();
+ harness.check(command, LABEL,
+ "Notifying action listener about the programmatic click"
+ );
+
+ harness.check(ceCalled,
+ "Notifying change listener about the programmatic click"
+ );
+
+ ceCalled = false;
+
+ command = UNASSIGNED;
+
+ b.setSelected(!b.isSelected());
+ harness.check(ceCalled,
+ "Notifying change listener after the call of setSelected(..)"
+ );
+ harness.check(command, UNASSIGNED,
+ "False message to the action listener after the call of "+
+ "setSelected(..)"
+ );
+
+ ceCalled = false;
+ command = UNASSIGNED;
+
+ b.setSelected(b.isSelected());
+ harness.check(!ceCalled,
+ "The change listener should only be notified about "+
+ "the CHANGES. Bug in 1.3, fixed in 1.4."
+ );
+
+ command = UNASSIGNED;
+ ceCalled = false;
+
+ b.removeActionListener(this);
+ b.removeChangeListener(this);
+ b.doClick();
+ harness.check(command, UNASSIGNED, "Removing action listener");
+ harness.check(!ceCalled, "Removing change listener");
+ }
+
+ private void testStateChanges(TestHarness harness, JToggleButton b)
+ {
+ b.setSelected(false);
+ b.doClick();
+ harness.check(b.isSelected(), "state must alter to true after click");
+ b.doClick();
+ harness.check(!b.isSelected(), "state must alter to false after click");
+
+ b.setSelected(true);
+ harness.check(b.isSelected(), "manual state setting");
+ }
+
+ /**
+ * Create the test object and also check its basic properties.
+ */
+ private JToggleButton createToggleButton(TestHarness harness)
+ {
+ JToggleButton b = new JToggleButton();
+ b.setText(LABEL);
+ harness.check(b.getText(), LABEL, LABEL);
+
+ b.setToolTipText("tip");
+ harness.check(b.getToolTipText(), "tip", "tooltip");
+
+ harness.check(!b.isSelected(), "initial state");
+ harness.check(b.isShowing(), false, "surely unvisible");
+ harness.check(b.isOpaque(), true, "must be opaque by default");
+ harness.check(b.getActionCommand(), LABEL, "getActionCommand");
+ return b;
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/constructor.java b/gnu/testlet/javax/swing/JToggleButton/constructor.java
new file mode 100644
index 00000000..3484359e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/constructor.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (roman@kennke.org)
+
+// 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.javax.swing.JToggleButton;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.JToggleButton;
+
+/**
+ * Checks if the AbstractButton constructor correctly initializes the
+ * properties of the AbstractButton.
+ */
+public class constructor implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ JToggleButton t1 = new JToggleButton();
+ h.check(t1.getText(), "", "Button label should default to \"\"");
+
+ t1 = new JToggleButton((String) null);
+ h.check(t1.getText(), "", "Button label should default to \"\"");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/getActionCommand.java b/gnu/testlet/javax/swing/JToggleButton/getActionCommand.java
new file mode 100644
index 00000000..ece12fc1
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/getActionCommand.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Uses: ../AbstractButton/getActionCommand
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import javax.swing.JToggleButton;
+
+/** <p>Tests the <code>JToggleButton</code>'s <code>getActionCommand</code>
+ * method.</p>
+ *
+ * <p>Please note that the interesting bits of this test reside in the superclass
+ * {@link gnu.testlet.javax.swing.AbstractButton}
+ *
+ * @author Robert Schuster
+ *
+ */
+public class getActionCommand extends
+ gnu.testlet.javax.swing.AbstractButton.getActionCommand implements
+ Testlet {
+
+ public void test(TestHarness harness) {
+ check(new JToggleButton("bla"), harness);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/isFocusable.java b/gnu/testlet/javax/swing/JToggleButton/isFocusable.java
new file mode 100644
index 00000000..cb2202b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/isFocusable.java
@@ -0,0 +1,46 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+ */
+
+// Tags:1.4
+
+package gnu.testlet.javax.swing.JToggleButton;
+
+import javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JToggleButton i = new JToggleButton();
+ harness.check(i.isFocusable(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JToggleButton/model.java b/gnu/testlet/javax/swing/JToggleButton/model.java
new file mode 100644
index 00000000..f2753b03
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/model.java
@@ -0,0 +1,164 @@
+/* model.java -- some checks for the initialisation of the button's model.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JToggleButton;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu's model. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class model implements Testlet {
+
+ static class MyJToggleButton extends JToggleButton
+ {
+ public MyJToggleButton()
+ {
+ super();
+ }
+ public MyJToggleButton(Action action)
+ {
+ super(action);
+ }
+ public MyJToggleButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJToggleButton(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJToggleButton(String text)
+ {
+ super(text);
+ }
+ public MyJToggleButton(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJToggleButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJToggleButton(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+
+ public void init(String text, Icon icon)
+ {
+ // don't call super.init(), because we want to check what happens in
+ // the constructor only...
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJToggleButton b = new MyJToggleButton();
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJToggleButton b = new MyJToggleButton(action);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJToggleButton b = new MyJToggleButton(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJToggleButton b = new MyJToggleButton(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJToggleButton b = new MyJToggleButton("ABC");
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJToggleButton b = new MyJToggleButton("ABC", false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJToggleButton b = new MyJToggleButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJToggleButton b = new MyJToggleButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JToggleButton/uidelegate.java b/gnu/testlet/javax/swing/JToggleButton/uidelegate.java
new file mode 100644
index 00000000..3ee81d45
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToggleButton/uidelegate.java
@@ -0,0 +1,171 @@
+/* uidelegate.java -- some checks for the initialisation of the button's UI
+ delegate.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.JToggleButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JToggleButton;
+import javax.swing.JToggleButton.ToggleButtonModel;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * This test looks at the creation of the menu's UI delegate. This test was
+ * written to investigate a look and feel bug that occurs because the model is
+ * null when the UI delegate is initialised.
+ */
+public class uidelegate implements Testlet {
+
+ static class MyJToggleButton extends JToggleButton
+ {
+ public boolean initCalled;
+ public boolean updateUICalledAfterInitCalled;
+ public MyJToggleButton()
+ {
+ super();
+ }
+ public MyJToggleButton(Action action)
+ {
+ super(action);
+ }
+ public MyJToggleButton(Icon icon)
+ {
+ super(icon);
+ }
+ public MyJToggleButton(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ }
+ public MyJToggleButton(String text)
+ {
+ super(text);
+ }
+ public MyJToggleButton(String text, boolean selected)
+ {
+ super(text, selected);
+ }
+ public MyJToggleButton(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+ public MyJToggleButton(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ }
+ public void init(String text, Icon icon)
+ {
+ initCalled = true;
+ super.init(text, icon);
+ }
+ public void updateUI()
+ {
+ updateUICalledAfterInitCalled = initCalled;
+ super.updateUI();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ testConstructor6(harness);
+ testConstructor7(harness);
+ testConstructor8(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyJToggleButton b = new MyJToggleButton();
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Action)");
+ Action action = new AbstractAction() {
+ public void actionPerformed(ActionEvent e)
+ {
+ // do nothing
+ }
+ };
+ MyJToggleButton b = new MyJToggleButton(action);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Icon)");
+ MyJToggleButton b = new MyJToggleButton(
+ MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(Icon, boolean)");
+ MyJToggleButton b = new MyJToggleButton(
+ MetalIconFactory.getFileChooserListViewIcon(), false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ MyJToggleButton b = new MyJToggleButton("ABC");
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor6(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean)");
+ MyJToggleButton b = new MyJToggleButton("ABC", false);
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor7(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon)");
+ MyJToggleButton b = new MyJToggleButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(b.updateUICalledAfterInitCalled, true);
+ }
+
+ public void testConstructor8(TestHarness harness)
+ {
+ harness.checkPoint("(String, Icon, boolean)");
+ MyJToggleButton b = new MyJToggleButton("ABC",
+ MetalIconFactory.getFileChooserDetailViewIcon(), false);
+ harness.check(b.getModel().getClass(), ToggleButtonModel.class);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/JToolBar/CVS/Entries b/gnu/testlet/javax/swing/JToolBar/CVS/Entries
new file mode 100644
index 00000000..e9d5afe7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolBar/CVS/Entries
@@ -0,0 +1,3 @@
+/buttonInsets.java/1.1/Mon Apr 25 20:47:08 2005//
+/getInputMap.java/1.1/Wed Jun 7 09:45:54 2006//
+D
diff --git a/gnu/testlet/javax/swing/JToolBar/CVS/Repository b/gnu/testlet/javax/swing/JToolBar/CVS/Repository
new file mode 100644
index 00000000..e57a3678
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolBar/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JToolBar
diff --git a/gnu/testlet/javax/swing/JToolBar/CVS/Root b/gnu/testlet/javax/swing/JToolBar/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolBar/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JToolBar/buttonInsets.java b/gnu/testlet/javax/swing/JToolBar/buttonInsets.java
new file mode 100644
index 00000000..448d1e3e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolBar/buttonInsets.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.JToolBar;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.JToolBar;
+import javax.swing.plaf.BorderUIResource;
+
+/**
+ * Checks if buttons that are added to a JToolBar have their insets
+ * modified correctly.
+ *
+ * @author Roman Kennke (roman@kennke.org)
+ */
+public class buttonInsets implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("JMenu");
+ JToolBar tb = new JToolBar();
+ JButton button = new JButton("test");
+
+ Insets insets = button.getInsets();
+ h.check(insets.top, 5, "insets.top: " + insets.top);
+ h.check(insets.bottom, 5, "insets.bottom: " + insets.bottom);
+ h.check(insets.left, 17, "insets.left: " + insets.left);
+ h.check(insets.right, 17, "insets.right: " + insets.right);
+
+ Insets margin = button.getMargin();
+ h.check(margin.top, 2, "insets.top: " + margin.top);
+ h.check(margin.bottom, 2, "insets.bottom: " + margin.bottom);
+ h.check(margin.left, 14, "insets.left: " + margin.left);
+ h.check(margin.right, 14, "insets.right: " + margin.right);
+
+ tb.add(button);
+
+ insets = button.getInsets();
+
+ h.check(insets.top, 6, "insets.top: " + insets.top);
+ h.check(insets.bottom, 6, "insets.bottom: " + insets.bottom);
+ h.check(insets.left, 6, "insets.left: " + insets.left);
+ h.check(insets.right, 6, "insets.right: " + insets.right);
+
+ margin = button.getMargin();
+ h.check(margin.top, 2, "insets.top: " + margin.top);
+ h.check(margin.bottom, 2, "insets.bottom: " + margin.bottom);
+ h.check(margin.left, 14, "insets.left: " + margin.left);
+ h.check(margin.right, 14, "insets.right: " + margin.right);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JToolBar/getInputMap.java b/gnu/testlet/javax/swing/JToolBar/getInputMap.java
new file mode 100644
index 00000000..ab91d7d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolBar/getInputMap.java
@@ -0,0 +1,86 @@
+/* getInputMap.java -- some checks for the getInputMap() methods inherited by
+ the JToolBar class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.JToolBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JToolBar;
+import javax.swing.KeyStroke;
+
+/**
+ * Checks the input maps defined for a JToolBar - this is really testing
+ * the setup performed by BasicToolBarUI.
+ */
+public class getInputMap implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ JToolBar tb = new JToolBar();
+ InputMap m1 = tb.getInputMap();
+ InputMap m2 = tb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1 == m2);
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ JToolBar tb = new JToolBar();
+ InputMap m1 = tb.getInputMap(JComponent.WHEN_FOCUSED);
+ harness.check(m1.keys(), null);
+ InputMap m1p = m1.getParent();
+ harness.check(m1p, null);
+ InputMap m2 = tb.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
+ harness.check(m2.keys(), null);
+ InputMap m2p = m2.getParent();
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed UP")), "navigateUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_UP")),
+ "navigateUp");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed DOWN")),
+ "navigateDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_DOWN")),
+ "navigateDown");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed LEFT")),
+ "navigateLeft");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_LEFT")),
+ "navigateLeft");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed RIGHT")),
+ "navigateRight");
+ harness.check(m2p.get(KeyStroke.getKeyStroke("pressed KP_RIGHT")),
+ "navigateRight");
+ InputMap m3 = tb.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ harness.check(m3.keys(), null);
+ harness.check(m3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/CVS/Entries b/gnu/testlet/javax/swing/JToolTip/CVS/Entries
new file mode 100644
index 00000000..07866edd
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/CVS/Entries
@@ -0,0 +1,9 @@
+/MyJToolTip.java/1.2/Thu Jun 1 13:37:37 2006//
+/getAccessibleContext.java/1.1/Wed May 31 11:07:28 2006//
+/getComponent.java/1.1/Wed May 31 11:07:28 2006//
+/getTipText.java/1.1/Wed May 31 11:07:28 2006//
+/getUIClassID.java/1.1/Wed May 31 11:07:28 2006//
+/paramString.java/1.2/Wed May 21 13:30:47 2008//
+/setComponent.java/1.1/Wed May 31 11:07:28 2006//
+/setTipText.java/1.1/Wed May 31 11:07:28 2006//
+D
diff --git a/gnu/testlet/javax/swing/JToolTip/CVS/Repository b/gnu/testlet/javax/swing/JToolTip/CVS/Repository
new file mode 100644
index 00000000..b10aea97
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JToolTip
diff --git a/gnu/testlet/javax/swing/JToolTip/CVS/Root b/gnu/testlet/javax/swing/JToolTip/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JToolTip/MyJToolTip.java b/gnu/testlet/javax/swing/JToolTip/MyJToolTip.java
new file mode 100644
index 00000000..9e47c9d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/MyJToolTip.java
@@ -0,0 +1,40 @@
+/* MyJToolTip.java -- provides access to protected stuff in the
+ JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import javax.swing.JToolTip;
+
+public class MyJToolTip extends JToolTip
+{
+ public MyJToolTip()
+ {
+ super();
+ }
+
+ public String paramString()
+ {
+ return super.paramString();
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/getAccessibleContext.java b/gnu/testlet/javax/swing/JToolTip/getAccessibleContext.java
new file mode 100644
index 00000000..e01eb538
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/getAccessibleContext.java
@@ -0,0 +1,72 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JToolTip;
+
+public class getAccessibleContext
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JToolTip tt = new JToolTip();
+ AccessibleContext att = tt.getAccessibleContext();
+
+ // check the default values
+ harness.check(att.getAccessibleName(), null);
+ harness.check(att.getAccessibleDescription(), null);
+ harness.check(att.getAccessibleComponent(), att);
+ harness.check(att.getAccessibleRole(), AccessibleRole.TOOL_TIP);
+
+ // setting the tip text on the tool tip updates the accessible description
+ tt.setTipText("XYZ");
+ harness.check(att.getAccessibleDescription(), "XYZ");
+ tt.setTipText(null);
+ harness.check(att.getAccessibleDescription(), null);
+
+ // setting the accessible description doesn't update the tip text
+ att.setAccessibleDescription("ABC");
+ harness.check(att.getAccessibleDescription(), "ABC");
+ harness.check(tt.getTipText(), null);
+
+ // ...and once an explicit description is set, it isn't changed by setting
+ // the tip text
+ tt.setTipText("DEF");
+ harness.check(att.getAccessibleDescription(), "ABC");
+
+ // TODO: the following should fire a property change event
+ att.setAccessibleName("X");
+ harness.check(att.getAccessibleName(), "X");
+
+ // does getAccessibleContext() always return the same instance?
+ AccessibleContext att2 = tt.getAccessibleContext();
+ harness.check(att == att2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/getComponent.java b/gnu/testlet/javax/swing/JToolTip/getComponent.java
new file mode 100644
index 00000000..e6b7c5a7
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/getComponent.java
@@ -0,0 +1,45 @@
+/* getComponent.java -- some checks for the getComponent()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.JToolTip;
+
+public class getComponent
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JButton component = new JButton("Button");
+ JToolTip tt = new JToolTip();
+ harness.check(tt.getComponent(), null);
+ tt.setComponent(component);
+ harness.check(tt.getComponent(), component);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/getTipText.java b/gnu/testlet/javax/swing/JToolTip/getTipText.java
new file mode 100644
index 00000000..b7dc5f15
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/getTipText.java
@@ -0,0 +1,43 @@
+/* getTipText.java -- some checks for the getTipText()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToolTip;
+
+public class getTipText
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JToolTip tt = new JToolTip();
+ harness.check(tt.getTipText(), null);
+ tt.setTipText("ABC");
+ harness.check(tt.getTipText(), "ABC");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/getUIClassID.java b/gnu/testlet/javax/swing/JToolTip/getUIClassID.java
new file mode 100644
index 00000000..f8e9f05f
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/getUIClassID.java
@@ -0,0 +1,39 @@
+/* getUIClassID.java -- some checks for the getUIClassID()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToolTip;
+
+public class getUIClassID implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JToolTip tt = new JToolTip();
+ harness.check(tt.getUIClassID(), "ToolTipUI");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/paramString.java b/gnu/testlet/javax/swing/JToolTip/paramString.java
new file mode 100644
index 00000000..116f4fd8
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/paramString.java
@@ -0,0 +1,41 @@
+/* paramString.java -- some checks for the paramString()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyJToolTip
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyJToolTip tt = new MyJToolTip();
+
+ // according to the spec, the string format is implementation
+ // dependent but cannot be null...
+ harness.check(tt.paramString() != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/setComponent.java b/gnu/testlet/javax/swing/JToolTip/setComponent.java
new file mode 100644
index 00000000..9d96ed11
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/setComponent.java
@@ -0,0 +1,73 @@
+/* setComponent.java -- some checks for the setComponent()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JToolTip;
+
+public class setComponent
+ implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JButton component = new JButton("Button");
+ JToolTip tt = new JToolTip();
+ tt.addPropertyChangeListener(this);
+ tt.setComponent(component);
+ harness.check(tt.getComponent(), component);
+
+ // check the generated event...
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "component");
+ harness.check(e.getSource(), tt);
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), component);
+
+ // check that the component can be set to null
+ events.clear();
+ tt.setComponent(null);
+ harness.check(events.size(), 1);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "component");
+ harness.check(e.getSource(), tt);
+ harness.check(e.getOldValue(), component);
+ harness.check(e.getNewValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JToolTip/setTipText.java b/gnu/testlet/javax/swing/JToolTip/setTipText.java
new file mode 100644
index 00000000..4e868646
--- /dev/null
+++ b/gnu/testlet/javax/swing/JToolTip/setTipText.java
@@ -0,0 +1,60 @@
+/* setTipText.java -- some checks for the setTipText()
+ method in the JToolTip class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JToolTip;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JToolTip;
+
+public class setTipText implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ JToolTip tt = new JToolTip();
+ tt.addPropertyChangeListener(this);
+ tt.setTipText("XYZ");
+ harness.check(tt.getTipText(), "XYZ");
+
+ // check the generated event...
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "tiptext");
+ harness.check(e.getSource(), tt);
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), "XYZ");
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTree/CVS/Entries b/gnu/testlet/javax/swing/JTree/CVS/Entries
new file mode 100644
index 00000000..f238ff85
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/CVS/Entries
@@ -0,0 +1,5 @@
+/TreeRobot.java/1.1/Tue Jul 4 17:36:51 2006/-kk/
+/getCellRenderer.java/1.1/Tue Aug 1 13:17:30 2006//
+/isRowSelected.java/1.2/Sun Oct 8 22:31:55 2006//
+/setModel.java/1.1/Thu Jul 28 15:39:27 2005//
+D
diff --git a/gnu/testlet/javax/swing/JTree/CVS/Repository b/gnu/testlet/javax/swing/JTree/CVS/Repository
new file mode 100644
index 00000000..5d50a5da
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JTree
diff --git a/gnu/testlet/javax/swing/JTree/CVS/Root b/gnu/testlet/javax/swing/JTree/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JTree/TreeRobot.java b/gnu/testlet/javax/swing/JTree/TreeRobot.java
new file mode 100644
index 00000000..2e2c058e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/TreeRobot.java
@@ -0,0 +1,337 @@
+/* TreeRobot.java -- JTree test
+ Copyright (C) 2006 Audrius Meskauskas
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+
+ */
+
+// Tags: JDK1.4 GUI
+
+
+package gnu.testlet.javax.swing.JTree;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.BitSet;
+import java.util.Random;
+import java.util.TreeSet;
+
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JTable;
+import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+
+/**
+ * The AWT robot based test for JTree.
+ */
+public class TreeRobot extends Asserter implements Testlet
+{
+ /**
+ * The tree being tested.
+ */
+ JTree tree = new JTree();
+
+ JFrame frame;
+
+ Robot r;
+
+ static Random ran = new Random();
+
+ DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
+
+ DefaultMutableTreeNode a = new DefaultMutableTreeNode("a");
+
+ DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");
+
+ DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");
+
+ DefaultMutableTreeNode aa = new DefaultMutableTreeNode("aa");
+
+ DefaultMutableTreeNode ab = new DefaultMutableTreeNode("ab");
+
+ DefaultMutableTreeNode aaa = new DefaultMutableTreeNode("aaa");
+
+ DefaultMutableTreeNode aab = new DefaultMutableTreeNode("aab");
+
+ DefaultMutableTreeNode aac = new DefaultMutableTreeNode("aac");
+
+ DefaultMutableTreeNode ba = new DefaultMutableTreeNode("ba");
+
+ DefaultMutableTreeNode ca = new DefaultMutableTreeNode("ca");
+
+ protected void setUp() throws Exception
+ {
+
+ frame = new JFrame();
+ frame.getContentPane().add(tree);
+ frame.setSize(400, 400);
+ frame.setVisible(true);
+
+ root.add(a);
+ root.add(b);
+ root.add(c);
+
+ a.add(aa);
+ a.add(ab);
+
+ b.add(ba);
+
+ c.add(ca);
+
+ aa.add(aaa);
+ aa.add(aab);
+ aa.add(aac);
+
+ DefaultTreeModel model = new DefaultTreeModel(root);
+ tree.setModel(model);
+ tree.setEditable(true);
+
+ r = new Robot();
+ r.setAutoDelay(50);
+ r.delay(500);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ frame.dispose();
+ }
+
+ /**
+ * Click the mouse on center of the given component.
+ */
+ public void click(JComponent c, int x, int y)
+ {
+ Point p = new Point();
+ p.x = x;
+ p.y = y;
+
+ SwingUtilities.convertPointToScreen(p, c);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ }
+
+ /**
+ * Click the given main databas view cell.
+ *
+ * @param row
+ * the row
+ * @param column
+ * the column
+ */
+ public void clickPath(JTree tree, TreePath path)
+ {
+ Rectangle rect = tree.getPathBounds(path);
+ Point p = new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);
+ SwingUtilities.convertPointToScreen(p, tree);
+ r.mouseMove(p.x, p.y);
+ r.mousePress(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ r.mouseRelease(InputEvent.BUTTON1_MASK);
+ r.delay(50);
+ }
+
+ public void typeDigit(char character)
+ {
+ int code = KeyEvent.VK_0 + (character - '0');
+ r.keyPress(code);
+ r.keyRelease(code);
+ }
+
+ public void type(int code)
+ {
+ r.keyPress(code);
+ r.keyRelease(code);
+ }
+
+ public void testTree() throws Exception
+ {
+ // Test editing session on a root node, initiated with F2.
+ assertEquals("Value before F2 editing", root.getUserObject(), "root");
+
+ TreePath rootPath = tree.getPathForRow(0);
+ clickPath(tree, rootPath);
+ type(KeyEvent.VK_F2);
+ type(KeyEvent.VK_END);
+
+ typeDigit('0');
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Value after F2 editing", root.getUserObject(),
+ "root0");
+
+ // Test editing session, initiated with the click-pause- click.
+ clickPath(tree, rootPath);
+ r.delay(1000);
+ clickPath(tree, rootPath);
+ r.delay(1000);
+ type(KeyEvent.VK_END);
+ typeDigit('1');
+
+ type(KeyEvent.VK_ENTER);
+ assertEquals("Value after click-pause-click", root.getUserObject(),
+ "root01");
+
+
+ tree.setRootVisible(true);
+
+
+ testNavigation();
+ }
+
+ public void testNavigation() throws Exception
+ {
+ // Test navigation with cursor keys:
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down 1", getFocus(), "a");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down 2", getFocus(), "b");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down 3", getFocus(), "c");
+
+ type(KeyEvent.VK_UP);
+ assertEquals("navigation up 1", getFocus(), "b");
+
+ type(KeyEvent.VK_UP);
+ assertEquals("navigation up 2", getFocus(), "a");
+
+ // Expand the node a
+ type(KeyEvent.VK_RIGHT);
+ assertEquals("expansion", getFocus(), "a");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 1", getFocus(), "aa");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 2", getFocus(), "ab");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 3", getFocus(), "b");
+
+ type(KeyEvent.VK_UP);
+ assertEquals("navigation up after expansion 1", getFocus(), "ab");
+
+ type(KeyEvent.VK_UP);
+ assertEquals("navigation up after expansion 2", getFocus(), "aa");
+
+ type(KeyEvent.VK_RIGHT);
+ assertEquals("expansion 2", getFocus(), "aa");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 1", getFocus(), "aaa");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 2", getFocus(), "aab");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 3", getFocus(), "aac");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation up after expansion 1", getFocus(), "ab");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation up after expansion 2", getFocus(), "b");
+
+ type(KeyEvent.VK_UP);
+ type(KeyEvent.VK_UP);
+ type(KeyEvent.VK_LEFT);
+ assertEquals("navigation 1", getFocus(), "aa");
+
+ type(KeyEvent.VK_LEFT);
+ assertEquals("navigation 1", getFocus(), "aa");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 2", getFocus(), "ab");
+
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 3", getFocus(), "b");
+
+ // Try to expand the path with mouse
+ TreePath bPath = tree.getSelectionPath();
+
+ assertTrue("b path must be collapsed", !tree.isExpanded(bPath));
+ Rectangle bounds = tree.getPathBounds(bPath);
+
+ // It must be a metal tree icon, size about 18*18
+ click(tree, bounds.x-9, bounds.y+9);
+ r.delay(200);
+
+ assertTrue("b path must be expanded", tree.isExpanded(bPath));
+
+ // Navigate down, must be "ba":
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 4", getFocus(), "ba");
+ type(KeyEvent.VK_UP);
+
+ // Click again to collapse:
+ // It must be a metal tree icon, size about 18*18
+ click(tree, bounds.x-9, bounds.y+9);
+ r.delay(200);
+
+ // Navigate down, must be "c":
+ type(KeyEvent.VK_DOWN);
+ assertEquals("navigation down after expansion 5", getFocus(), "c");
+
+ // Cleanup for the subsequent round of the test:
+ tree.setSelectionRow(0);
+
+ // Collapse the currently expanded node a.
+ type(KeyEvent.VK_LEFT);
+ }
+
+ public Object getFocus()
+ {
+ return ((DefaultMutableTreeNode)
+ tree.getSelectionPath().getLastPathComponent()).getUserObject();
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h = harness;
+ setUp();
+ try
+ {
+ testTree();
+ }
+ finally
+ {
+ tearDown();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ h.fail("Exception: " + e);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JTree/getCellRenderer.java b/gnu/testlet/javax/swing/JTree/getCellRenderer.java
new file mode 100644
index 00000000..2677c489
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/getCellRenderer.java
@@ -0,0 +1,55 @@
+/* getCellRenderer.java -- Tests getCellRenderer in JTree
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTree;
+
+import javax.swing.JTree;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests JTree.getCellRenderer().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getCellRenderer implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testDefault(harness);
+ }
+
+ /**
+ * Checks that the cell renderer of a plain JTree must not be null. The
+ * cell renderer is set up by the UI at creation time.
+ *
+ * @param h the test harness
+ */
+ private void testDefault(TestHarness h)
+ {
+ JTree t = new JTree();
+ h.check(t.getCellRenderer() != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTree/isRowSelected.java b/gnu/testlet/javax/swing/JTree/isRowSelected.java
new file mode 100644
index 00000000..714360ef
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/isRowSelected.java
@@ -0,0 +1,148 @@
+/* isRowSelected.java -- Tests JTree.isRowSelected()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.JTree;
+
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests JTree.isRowSelected().
+ */
+public class isRowSelected implements Testlet
+{
+
+ /**
+ * Indicates if JTree.getRowForPath() is called during a test.
+ */
+ boolean getPathForRowCalled;
+
+ /**
+ * Indicates if JTree.isPathSelected() is called during a test.
+ */
+ boolean isPathSelectedCalled;
+
+ /**
+ * Indicates if a tree's selection model isRowSelected() is called
+ * during a test.
+ */
+ boolean modelIsRowSelectedCalled;
+
+ /**
+ * A subclass of JTree for testing.
+ */
+ private class TestTree
+ extends JTree
+ {
+ public TestTree(Object[] data)
+ {
+ super(data);
+ }
+ public TreePath getPathForRow(int r)
+ {
+ getPathForRowCalled = true;
+ return super.getPathForRow(r);
+ }
+ public boolean isPathSelected(TreePath p)
+ {
+ isPathSelectedCalled = true;
+ return super.isPathSelected(p);
+ }
+ }
+
+ /**
+ * A subclass of DefaultTreeSelectionModel for testing.
+ */
+ private class TestTreeSelectionModel
+ extends DefaultTreeSelectionModel
+ {
+ public boolean isRowSelected(int r)
+ {
+ modelIsRowSelectedCalled = true;
+ return super.isRowSelected(r);
+ }
+ }
+
+ /**
+ * Entry point into test suite.
+ */
+ public void test(TestHarness harness)
+ {
+ testCallGetPathForRow(harness);
+ testCallIsPathSelected(harness);
+ testCallModelIsRowSelected(harness);
+ }
+
+ /**
+ * Tests if isRowSelected should call JTree.getRowForPath(), or if it
+ * should leave the row->path mapping to the selection model.
+ *
+ * @param h the test harness
+ */
+ private void testCallGetPathForRow(TestHarness h)
+ {
+ h.checkPoint("testCallGetPathForRow");
+ Object[] data = new Object[]{ "Hello", "World" };
+ TestTree t = new TestTree(data);
+ getPathForRowCalled = false;
+ t.isRowSelected(0);
+ h.check(getPathForRowCalled, false);
+ }
+
+ /**
+ * Tests if isRowSelected should call JTree.isPathSelected, or if it
+ * should leave the row->path mapping to the selection model.
+ *
+ * @param h the test harness
+ */
+ private void testCallIsPathSelected(TestHarness h)
+ {
+ h.checkPoint("testCallIsPathSelected");
+ Object[] data = new Object[]{ "Hello", "World" };
+ TestTree t = new TestTree(data);
+ isPathSelectedCalled = false;
+ t.isRowSelected(0);
+ h.check(isPathSelectedCalled, false);
+ }
+
+ /**
+ * Tests if JTree.isRowSelected() should call the model's isRowSelected()
+ * method.
+ *
+ * @param h the test harness
+ */
+ private void testCallModelIsRowSelected(TestHarness h)
+ {
+ h.checkPoint("testCallGetRowForPath");
+ Object[] data = new Object[]{ "Hello", "World" };
+ TestTree t = new TestTree(data);
+ t.setSelectionModel(new TestTreeSelectionModel());
+ modelIsRowSelectedCalled = false;
+ t.isRowSelected(0);
+ h.check(modelIsRowSelectedCalled, true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JTree/setModel.java b/gnu/testlet/javax/swing/JTree/setModel.java
new file mode 100644
index 00000000..e483d0af
--- /dev/null
+++ b/gnu/testlet/javax/swing/JTree/setModel.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.JTree;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+
+/**
+ * Some checks for the setModel() method in the {@link JTree} class.
+ */
+public class setModel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setModel(TreeModel)");
+ DefaultTreeModel m1 = new DefaultTreeModel(new DefaultMutableTreeNode());
+ JTree t = new JTree(m1);
+ harness.check(t.getModel(), m1);
+ DefaultTreeModel m2 = new DefaultTreeModel(new DefaultMutableTreeNode());
+ t.setModel(m2);
+ harness.check(t.getModel(), m2);
+
+ // try a null argument - this is allowed (e.g. JUnit UI)
+ t.setModel(null);
+ harness.check(t.getModel(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/JViewport/CVS/Entries b/gnu/testlet/javax/swing/JViewport/CVS/Entries
new file mode 100644
index 00000000..77247b10
--- /dev/null
+++ b/gnu/testlet/javax/swing/JViewport/CVS/Entries
@@ -0,0 +1,3 @@
+/TestViewport.java/1.1/Tue Oct 18 14:58:52 2005//
+/setView.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/JViewport/CVS/Repository b/gnu/testlet/javax/swing/JViewport/CVS/Repository
new file mode 100644
index 00000000..5e30e4b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/JViewport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JViewport
diff --git a/gnu/testlet/javax/swing/JViewport/CVS/Root b/gnu/testlet/javax/swing/JViewport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JViewport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JViewport/TestViewport.java b/gnu/testlet/javax/swing/JViewport/TestViewport.java
new file mode 100644
index 00000000..dafec05b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JViewport/TestViewport.java
@@ -0,0 +1,61 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JViewport;
+
+import javax.swing.JViewport;
+
+/**
+ * A subclass of {@link javax.swing.JViewport} that enables to check if
+ * certain methods (like repaint() or revalidate()) are called correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+class TestViewport extends JViewport
+{
+ /**
+ * A flag indicating if repaint() has been called.
+ */
+ boolean repaintCalled;
+
+ /**
+ * A flag indicating if revalidate() has been called.
+ */
+ boolean revalidateCalled;
+
+ /**
+ * Performs the superclass repaint and sets the repaintCalled flag to true.
+ */
+ public void repaint()
+ {
+ repaintCalled = true;
+ super.repaint();
+ }
+
+ /**
+ * Performs the superclass revalidate and sets the revalidateCalled flag
+ * to true.
+ */
+ public void revalidate()
+ {
+ revalidateCalled = true;
+ super.revalidate();
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/JViewport/setView.java b/gnu/testlet/javax/swing/JViewport/setView.java
new file mode 100644
index 00000000..ce7b293b
--- /dev/null
+++ b/gnu/testlet/javax/swing/JViewport/setView.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.2
+// Uses: TestViewport
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JViewport;
+
+import javax.swing.JComponent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if setView() calls revalidate and repaint.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class setView implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRepaint(harness);
+ testRevalidate(harness);
+ }
+
+ /**
+ * Tests if setView triggers a repaint. setView should trigger a
+ * repaint() call whenever method is called, independent of
+ * actual value change.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRepaint(TestHarness harness)
+ {
+ JComponent c1 = new JComponent(){};
+ JComponent c2 = new JComponent(){};
+ TestViewport c = new TestViewport();
+ // Set to null, so that we know the state.
+ c.setView(null);
+ c.repaintCalled = false;
+ // Change state and check if repaint is called.
+ c.setView(c1);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setView(c1);
+ harness.check(c.repaintCalled, true);
+ // Change state and check if repaint is called.
+ c.repaintCalled = false;
+ c.setView(c2);
+ harness.check(c.repaintCalled, true);
+ // Don't change state.
+ c.repaintCalled = false;
+ c.setView(c2);
+ harness.check(c.repaintCalled, true);
+ }
+
+ /**
+ * Tests if setView triggers a revalidate. setView should trigger
+ * a revalidate(), independent of actual value change.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRevalidate(TestHarness harness)
+ {
+ JComponent c1 = new JComponent(){};
+ JComponent c2 = new JComponent(){};
+ TestViewport c = new TestViewport();
+ // Set to null, so that we know the state.
+ c.setView(null);
+ c.revalidateCalled = false;
+ // Change state and check if repaint is called.
+ c.setView(c1);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setView(c1);
+ harness.check(c.revalidateCalled, true);
+ // Change state and check if repaint is called.
+ c.revalidateCalled = false;
+ c.setView(c2);
+ harness.check(c.revalidateCalled, true);
+ // Don't change state.
+ c.revalidateCalled = false;
+ c.setView(c2);
+ harness.check(c.revalidateCalled, true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/JWindow/CVS/Entries b/gnu/testlet/javax/swing/JWindow/CVS/Entries
new file mode 100644
index 00000000..9f16837e
--- /dev/null
+++ b/gnu/testlet/javax/swing/JWindow/CVS/Entries
@@ -0,0 +1,2 @@
+/isRootPaneCheckingEnabled.java/1.1/Mon Nov 7 20:55:44 2005//
+D
diff --git a/gnu/testlet/javax/swing/JWindow/CVS/Repository b/gnu/testlet/javax/swing/JWindow/CVS/Repository
new file mode 100644
index 00000000..2b9bab17
--- /dev/null
+++ b/gnu/testlet/javax/swing/JWindow/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/JWindow
diff --git a/gnu/testlet/javax/swing/JWindow/CVS/Root b/gnu/testlet/javax/swing/JWindow/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/JWindow/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/JWindow/isRootPaneCheckingEnabled.java b/gnu/testlet/javax/swing/JWindow/isRootPaneCheckingEnabled.java
new file mode 100644
index 00000000..7f1bd95d
--- /dev/null
+++ b/gnu/testlet/javax/swing/JWindow/isRootPaneCheckingEnabled.java
@@ -0,0 +1,107 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2004 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.JWindow;
+
+import java.awt.Component;
+
+import javax.swing.JLabel;
+import javax.swing.JRootPane;
+import javax.swing.JWindow;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isRootPaneCheckingEnabled implements Testlet
+{
+
+ /**
+ * Overrides some protected methods to make them public for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ class TestWindow extends JWindow
+ {
+ public boolean isRootPaneCheckingEnabled()
+ {
+ return super.isRootPaneCheckingEnabled();
+ }
+ public void setRootPaneCheckingEnabled(boolean b)
+ {
+ super.setRootPaneCheckingEnabled(b);
+ }
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testRootPaneCheckingEnabled(harness);
+ testRootPaneCheckingDisabled(harness);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==true. Adds to the frame
+ * should go to the contentPane.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingEnabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingEnabled");
+ TestWindow f = new TestWindow();
+ f.setRootPaneCheckingEnabled(true);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now still has 1 child, the rootPane.
+ harness.check(children.length, 1);
+ harness.check(children[0] instanceof JRootPane);
+ // Instead, the add has gone to the contentPane which now also has 1 child,
+ // the label.
+ Component[] content = f.getContentPane().getComponents();
+ harness.check(content.length, 1);
+ harness.check(content[0], c);
+ }
+
+ /**
+ * Checks the behaviour with rootPaneCheckingEnabled==false. Adds to the frame
+ * should go directly to the frame.
+ *
+ * @param harness the test harness to use
+ */
+ private void testRootPaneCheckingDisabled(TestHarness harness)
+ {
+ harness.checkPoint("rootPaneCheckingDisabled");
+ TestWindow f = new TestWindow();
+ f.setRootPaneCheckingEnabled(false);
+ JLabel c = new JLabel("Hello");
+ f.add(c);
+ Component[] children = f.getComponents();
+ // The frame now has 2 children, the rootPane and the label.
+ harness.check(children.length, 2);
+ harness.check(children[0] instanceof JRootPane);
+ harness.check(children[1], c);
+ }
+}
diff --git a/gnu/testlet/javax/swing/KeyStroke/CVS/Entries b/gnu/testlet/javax/swing/KeyStroke/CVS/Entries
new file mode 100644
index 00000000..bc88c89a
--- /dev/null
+++ b/gnu/testlet/javax/swing/KeyStroke/CVS/Entries
@@ -0,0 +1,2 @@
+/getKeyStroke.java/1.1/Sun Feb 13 14:34:41 2005//
+D
diff --git a/gnu/testlet/javax/swing/KeyStroke/CVS/Repository b/gnu/testlet/javax/swing/KeyStroke/CVS/Repository
new file mode 100644
index 00000000..f78ebe3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/KeyStroke/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/KeyStroke
diff --git a/gnu/testlet/javax/swing/KeyStroke/CVS/Root b/gnu/testlet/javax/swing/KeyStroke/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/KeyStroke/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/KeyStroke/getKeyStroke.java b/gnu/testlet/javax/swing/KeyStroke/getKeyStroke.java
new file mode 100644
index 00000000..d26d1ce1
--- /dev/null
+++ b/gnu/testlet/javax/swing/KeyStroke/getKeyStroke.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Thomas Zander <zander@kde.org>
+
+// 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.javax.swing.KeyStroke;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.awt.*;
+import javax.swing.*;
+
+/**
+ * These tests pass with the Sun JDK 1.4.2_05 on GNU/Linux IA-32.
+ */
+public class getKeyStroke implements Testlet {
+ public void test(TestHarness harness) {
+ harness.checkPoint("Calling with unknown string should return 'null'");
+ try {
+ KeyStroke ks = KeyStroke.getKeyStroke("bad");
+ harness.check(ks == null);
+ } catch(Throwable t) {
+ harness.check(false);
+ }
+ try {
+ KeyStroke ks = KeyStroke.getKeyStroke(null);
+ harness.check(ks == null);
+ } catch(Throwable t) {
+ harness.check(false);
+ }
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/OverlayLayout/CVS/Entries b/gnu/testlet/javax/swing/OverlayLayout/CVS/Entries
new file mode 100644
index 00000000..184a8b5c
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/CVS/Entries
@@ -0,0 +1,7 @@
+/getLayoutAlignmentX.java/1.1/Thu Sep 29 21:54:08 2005//
+/getLayoutAlignmentY.java/1.1/Thu Sep 29 21:54:08 2005//
+/layoutContainer.java/1.1/Thu Sep 29 21:54:08 2005//
+/maximumLayoutSize.java/1.1/Thu Sep 29 21:54:08 2005//
+/minimumLayoutSize.java/1.1/Thu Sep 29 21:54:08 2005//
+/preferredLayoutSize.java/1.1/Thu Sep 29 21:54:08 2005//
+D
diff --git a/gnu/testlet/javax/swing/OverlayLayout/CVS/Repository b/gnu/testlet/javax/swing/OverlayLayout/CVS/Repository
new file mode 100644
index 00000000..e25e3d48
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/OverlayLayout
diff --git a/gnu/testlet/javax/swing/OverlayLayout/CVS/Root b/gnu/testlet/javax/swing/OverlayLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentX.java b/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentX.java
new file mode 100644
index 00000000..b147e24d
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentX.java
@@ -0,0 +1,163 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.OverlayLayout;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the method getLayoutAlignmentX of OverlayLayout works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getLayoutAlignmentX implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithoutChildren(harness);
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method without any child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithoutChildren(TestHarness h)
+ {
+ h.checkPoint("withoutChildren");
+ JPanel c = new JPanel();
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentX(c), 0.0F);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChild");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentX(c), 0.5F);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentX(c), 0.5F);
+ }
+
+ /**
+ * Tests this method with 3 child components that have different alignment
+ * values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentX(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentX(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentX(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentX(c), 0.6666666865348816F);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ h.check(l.getLayoutAlignmentX(c2), 0.5F);
+ h.fail("getLayoutAlignmentX must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentY.java b/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentY.java
new file mode 100644
index 00000000..cf5504df
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/getLayoutAlignmentY.java
@@ -0,0 +1,163 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.OverlayLayout;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the method getLayoutAlignmentX of OverlayLayout works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getLayoutAlignmentY implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithoutChildren(harness);
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method without any child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithoutChildren(TestHarness h)
+ {
+ h.checkPoint("withoutChildren");
+ JPanel c = new JPanel();
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentY(c), 0.0F);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChild");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentY(c), 0.5F);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentY(c), 0.5F);
+ }
+
+ /**
+ * Tests this method with 3 child components that have different alignment
+ * values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentY(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentY(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentY(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.getLayoutAlignmentY(c), 0.6666666865348816F);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ h.check(l.getLayoutAlignmentY(c2), 0.5F);
+ h.fail("getLayoutAlignmentX must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/OverlayLayout/layoutContainer.java b/gnu/testlet/javax/swing/OverlayLayout/layoutContainer.java
new file mode 100644
index 00000000..83f29951
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/layoutContainer.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+/**
+ * Tests if the method getLayoutAlignmentX of OverlayLayout works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChild");
+ JPanel c = new JPanel();
+ c.setBounds(0, 0, 100, 100);
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ l.layoutContainer(c);
+ h.check(c1.getX(), 35);
+ h.check(c1.getY(), 35);
+ h.check(c1.getWidth(), 30);
+ h.check(c1.getHeight(), 30);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ c.setBounds(0, 0, 100, 100);
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ l.layoutContainer(c);
+ h.check(c1.getX(), 35);
+ h.check(c1.getY(), 35);
+ h.check(c1.getWidth(), 30);
+ h.check(c1.getHeight(), 30);
+ h.check(c2.getX(), 20);
+ h.check(c2.getY(), 20);
+ h.check(c2.getWidth(), 60);
+ h.check(c2.getHeight(), 60);
+ }
+
+ /**
+ * Tests this method with 3 child components that have different alignment
+ * values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ c.setBounds(0, 0, 100, 100);
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentY(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentY(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentY(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ l.layoutContainer(c);
+ h.check(c1.getX(), 35);
+ h.check(c1.getY(), 66);
+ h.check(c1.getWidth(), 30);
+ h.check(c1.getHeight(), 30);
+ h.check(c2.getX(), 20);
+ h.check(c2.getY(), 36);
+ h.check(c2.getWidth(), 60);
+ h.check(c2.getHeight(), 60);
+ h.check(c3.getX(), 20);
+ h.check(c3.getY(), 6);
+ h.check(c3.getWidth(), 60);
+ h.check(c3.getHeight(), 60);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ l.layoutContainer(c2);
+ h.fail("getLayoutAlignmentX must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/OverlayLayout/maximumLayoutSize.java b/gnu/testlet/javax/swing/OverlayLayout/maximumLayoutSize.java
new file mode 100644
index 00000000..51b4cc16
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/maximumLayoutSize.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.OverlayLayout;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the method maximumLayoutSize of OverlayLayout works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class maximumLayoutSize implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithoutChildren(harness);
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method without any child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithoutChildren(TestHarness h)
+ {
+ h.checkPoint("withoutChildren");
+ JPanel c = new JPanel();
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.maximumLayoutSize(c).width, 0);
+ h.check(l.maximumLayoutSize(c).height, 0);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChild");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.maximumLayoutSize(c).width, 30);
+ h.check(l.maximumLayoutSize(c).height, 30);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.maximumLayoutSize(c).width, 60);
+ h.check(l.maximumLayoutSize(c).height, 60);
+ }
+
+ /**
+ * Tests this method with 3 child components that have different alignment
+ * values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentX(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentX(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentX(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.maximumLayoutSize(c).width, 90);
+ h.check(l.maximumLayoutSize(c).height, 60);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ h.check(l.maximumLayoutSize(c2).width, 30);
+ h.fail("maximumLayoutSize must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/OverlayLayout/minimumLayoutSize.java b/gnu/testlet/javax/swing/OverlayLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..52f5e699
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/minimumLayoutSize.java
@@ -0,0 +1,166 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+//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.javax.swing.OverlayLayout;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+* Tests if the method minimumLayoutSize of OverlayLayout works correctly.
+*
+* @author Roman Kennke (kennke@aicas.com)
+*/
+public class minimumLayoutSize implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithoutChildren(harness);
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method without any child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithoutChildren(TestHarness h)
+ {
+ h.checkPoint("withoutChildren");
+ JPanel c = new JPanel();
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.minimumLayoutSize(c).width, 0);
+ h.check(l.minimumLayoutSize(c).height, 0);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChild");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.minimumLayoutSize(c).width, 10);
+ h.check(l.minimumLayoutSize(c).height, 10);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.minimumLayoutSize(c).width, 40);
+ h.check(l.minimumLayoutSize(c).height, 40);
+ }
+
+ /**
+ * Tests this method with 3 children with differen alignment values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentX(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentX(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentX(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.minimumLayoutSize(c).width, 60);
+ h.check(l.minimumLayoutSize(c).height, 40);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ h.check(l.minimumLayoutSize(c2).width, 30);
+ h.fail("minimumLayoutSize must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/OverlayLayout/preferredLayoutSize.java b/gnu/testlet/javax/swing/OverlayLayout/preferredLayoutSize.java
new file mode 100644
index 00000000..0ecf0bf6
--- /dev/null
+++ b/gnu/testlet/javax/swing/OverlayLayout/preferredLayoutSize.java
@@ -0,0 +1,167 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+//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.javax.swing.OverlayLayout;
+
+import java.awt.AWTError;
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+import javax.swing.OverlayLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+* Tests if the method preferredLayoutSize of OverlayLayout works correctly.
+*
+* @author Roman Kennke (kennke@aicas.com)
+*/
+public class preferredLayoutSize implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testWithoutChildren(harness);
+ testWithOneChild(harness);
+ testWithTwoChildren(harness);
+ testWithAlignment(harness);
+ testWrongContainer(harness);
+ }
+
+ /**
+ * Tests this method without any child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithoutChildren(TestHarness h)
+ {
+ h.checkPoint("withoutChildren");
+ JPanel c = new JPanel();
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.preferredLayoutSize(c).width, 0);
+ h.check(l.preferredLayoutSize(c).height, 0);
+ }
+
+ /**
+ * Tests this method with one child component.
+ *
+ * @param h the test harness to use
+ */
+ void testWithOneChild(TestHarness h)
+ {
+ h.checkPoint("withOneChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.preferredLayoutSize(c).width, 20);
+ h.check(l.preferredLayoutSize(c).height, 20);
+ }
+
+ /**
+ * Tests this method with two child components.
+ *
+ * @param h the test harness to use
+ */
+ void testWithTwoChildren(TestHarness h)
+ {
+ h.checkPoint("withTwoChildren");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c.add(c2);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.preferredLayoutSize(c).width, 50);
+ h.check(l.preferredLayoutSize(c).height, 50);
+ }
+
+ /**
+ * Tests this method with 3 child components that have different alignment
+ * values.
+ *
+ * @param h the test harness to use
+ */
+ void testWithAlignment(TestHarness h)
+ {
+ h.checkPoint("withAlignment");
+ JPanel c = new JPanel();
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(10, 10));
+ c1.setPreferredSize(new Dimension(20, 20));
+ c1.setMaximumSize(new Dimension(30, 30));
+ c1.setAlignmentX(0.0F);
+ c.add(c1);
+ JPanel c2 = new JPanel();
+ c2.setMinimumSize(new Dimension(40, 40));
+ c2.setPreferredSize(new Dimension(50, 50));
+ c2.setMaximumSize(new Dimension(60, 60));
+ c2.setAlignmentX(0.5F);
+ c.add(c2);
+ JPanel c3 = new JPanel();
+ c3.setMinimumSize(new Dimension(40, 40));
+ c3.setPreferredSize(new Dimension(50, 50));
+ c3.setMaximumSize(new Dimension(60, 60));
+ c3.setAlignmentX(1.0F);
+ c.add(c3);
+ OverlayLayout l = new OverlayLayout(c);
+ h.check(l.preferredLayoutSize(c).width, 75);
+ h.check(l.preferredLayoutSize(c).height, 50);
+ }
+
+ /**
+ * Tests this method with the wrong container.
+ *
+ * @param h the test harness to use
+ */
+ void testWrongContainer(TestHarness h)
+ {
+ h.checkPoint("wrongContainer");
+ JPanel c1 = new JPanel();
+ JPanel c2 = new JPanel();
+ OverlayLayout l = new OverlayLayout(c1);
+ try
+ {
+ h.check(l.preferredLayoutSize(c2).width, 30);
+ h.fail("minimumLayoutSize must throw AWTError when "
+ + "called with wrong container.");
+ }
+ catch (AWTError ex)
+ {
+ h.check(true);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/RepaintManager/CVS/Entries b/gnu/testlet/javax/swing/RepaintManager/CVS/Entries
new file mode 100644
index 00000000..bbb4b40d
--- /dev/null
+++ b/gnu/testlet/javax/swing/RepaintManager/CVS/Entries
@@ -0,0 +1,3 @@
+/DisabledEventQueue.java/1.1/Tue Oct 18 15:02:02 2005//
+/addDirtyRegion.java/1.1/Tue Oct 18 15:02:02 2005//
+D
diff --git a/gnu/testlet/javax/swing/RepaintManager/CVS/Repository b/gnu/testlet/javax/swing/RepaintManager/CVS/Repository
new file mode 100644
index 00000000..865b1baf
--- /dev/null
+++ b/gnu/testlet/javax/swing/RepaintManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/RepaintManager
diff --git a/gnu/testlet/javax/swing/RepaintManager/CVS/Root b/gnu/testlet/javax/swing/RepaintManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/RepaintManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/RepaintManager/DisabledEventQueue.java b/gnu/testlet/javax/swing/RepaintManager/DisabledEventQueue.java
new file mode 100644
index 00000000..b6bef91f
--- /dev/null
+++ b/gnu/testlet/javax/swing/RepaintManager/DisabledEventQueue.java
@@ -0,0 +1,49 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.RepaintManager;
+
+import java.awt.AWTEvent;
+import java.awt.EventQueue;
+
+/**
+ * A special EventQueue used for testing purposes. It completely disables
+ * dispatching of events, so the behaviour of the RepaintManager can be
+ * examined more closely.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class DisabledEventQueue extends EventQueue
+{
+ /**
+ * Overridden to do nothing.
+ */
+ protected void dispatchEvent(AWTEvent ev)
+ {
+ // Do nothing.
+ }
+
+ /**
+ * Overridden to do nothing.
+ */
+ public void postEvent(AWTEvent ev)
+ {
+ // Do nothing.
+ }
+}
diff --git a/gnu/testlet/javax/swing/RepaintManager/addDirtyRegion.java b/gnu/testlet/javax/swing/RepaintManager/addDirtyRegion.java
new file mode 100644
index 00000000..67356dc3
--- /dev/null
+++ b/gnu/testlet/javax/swing/RepaintManager/addDirtyRegion.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+// Uses: DisabledEventQueue
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.RepaintManager;
+
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.RepaintManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the addDirtyRegion method. More specifically, this checks if
+ * addDirtyRegion does any optimization or not.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class addDirtyRegion implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ /**
+ * Adds a dirty region for a component and checks if it is correctly
+ * returned by getDirtyRegion() and isCompletelyDirty().
+ *
+ * @param harness the test harness to use
+ */
+ private void test1(TestHarness harness)
+ {
+ // Disable event queue to prevent the RepaintManager from working.
+ Toolkit.getDefaultToolkit().getSystemEventQueue()
+ .push(new DisabledEventQueue());
+
+ JFrame f = new JFrame();
+ JLabel l = new JLabel("Hello");
+ f.getContentPane().add(l);
+ l.setSize(100, 100);
+ f.setSize(200, 200);
+ f.setVisible(true);
+ RepaintManager rm = RepaintManager.currentManager(l);
+ rm.addDirtyRegion(l, 0, 0, l.getWidth(), l.getHeight());
+ harness.check(rm.isCompletelyDirty(l), false);
+ Rectangle dirty = rm.getDirtyRegion(l);
+ harness.check(dirty.x, 0);
+ harness.check(dirty.y, 0);
+ harness.check(dirty.width, l.getWidth());
+ harness.check(dirty.height, l.getHeight());
+ }
+}
diff --git a/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Entries b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Entries
new file mode 100644
index 00000000..74140873
--- /dev/null
+++ b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Entries
@@ -0,0 +1,2 @@
+/minimumLayoutSize.java/1.1/Sun Jan 29 15:55:13 2006//
+D
diff --git a/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Repository b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Repository
new file mode 100644
index 00000000..4b595ed9
--- /dev/null
+++ b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/ScrollPaneLayout
diff --git a/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Root b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/ScrollPaneLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/ScrollPaneLayout/minimumLayoutSize.java b/gnu/testlet/javax/swing/ScrollPaneLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..fedd677d
--- /dev/null
+++ b/gnu/testlet/javax/swing/ScrollPaneLayout/minimumLayoutSize.java
@@ -0,0 +1,238 @@
+/* minimumLayoutSize.java -- Checks the minimumLayoutSize() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.ScrollPaneLayout;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Insets;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.ScrollPaneLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the minimumLayoutSize() method in ScrollPaneLayout under different
+ * settings. It turns out that the minimumSize is determined using the
+ * scrollpane's insets and the minimumSizes of the horizontal and vertical
+ * scrollbars, except when the (h/v) scrollbar policy is set to NEVER.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class minimumLayoutSize implements Testlet
+{
+
+ /**
+ * The entry point for the tests.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testHorizontalScrollbarAlways(harness);
+ testHorizontalScrollbarAsNeeded(harness);
+ testHorizontalScrollbarNever(harness);
+ testVerticalScrollbarAlways(harness);
+ testVerticalScrollbarAsNeeded(harness);
+ testVerticalScrollbarNever(harness);
+ }
+
+ /**
+ * Tests with HORIZONTAL_SCROLLBAR_ALWAYS.
+ *
+ * @param h the test harness to use
+ */
+ private void testHorizontalScrollbarAlways(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ sp.getViewport().add(view);
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height
+ + c[2].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height
+ + c[2].getMinimumSize().height));
+ }
+
+ /**
+ * Tests with HORIZONTAL_SCROLLBAR_AS_NEEDED.
+ *
+ * @param h the test harness to use
+ */
+ private void testHorizontalScrollbarAsNeeded(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ sp.getViewport().add(view);
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height
+ + c[2].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height
+ + c[2].getMinimumSize().height));
+ }
+
+ /**
+ * Tests with HORIZONTAL_SCROLLBAR_NEVER.
+ *
+ * @param h the test harness to use
+ */
+ private void testHorizontalScrollbarNever(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ sp.getViewport().add(view);
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ }
+
+ /**
+ * Tests with VERTICAL_SCROLLBAR_ALWAYS.
+ *
+ * @param h the test harness to use
+ */
+ private void testVerticalScrollbarAlways(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ sp.getViewport().add(view);
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width
+ + c[1].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width
+ + c[1].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ }
+
+ /**
+ * Tests with VERTICAL_SCROLLBAR_AS_NEEDED.
+ *
+ * @param h the test harness to use
+ */
+ private void testVerticalScrollbarAsNeeded(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ sp.getViewport().add(view);
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width
+ + c[1].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width
+ + c[1].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ }
+
+ /**
+ * Tests with VERTICAL_SCROLLBAR_NEVER.
+ *
+ * @param h the test harness to use
+ */
+ private void testVerticalScrollbarNever(TestHarness h)
+ {
+ JScrollPane sp = new JScrollPane();
+ ScrollPaneLayout l = (ScrollPaneLayout) sp.getLayout();
+ sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+ JPanel view = new JPanel();
+ sp.getViewport().add(view);
+ view.setMinimumSize(new Dimension(100, 100));
+ Insets i = sp.getInsets();
+ Component[] c = sp.getComponents();
+ // Check ScrollPane size < view size.
+ sp.setSize(50, 50);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ // Check ScrollPane size > view size.
+ sp.setSize(150, 150);
+ h.check(l.minimumLayoutSize(sp),
+ new Dimension(i.left + i.right + c[0].getMinimumSize().width,
+ i.top + i.bottom + c[0].getMinimumSize().height));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeRequirements/CVS/Entries b/gnu/testlet/javax/swing/SizeRequirements/CVS/Entries
new file mode 100644
index 00000000..3b63be18
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeRequirements/CVS/Entries
@@ -0,0 +1,2 @@
+/calculateAlignedPositions.java/1.1/Tue Oct 18 15:04:49 2005//
+D
diff --git a/gnu/testlet/javax/swing/SizeRequirements/CVS/Repository b/gnu/testlet/javax/swing/SizeRequirements/CVS/Repository
new file mode 100644
index 00000000..45d07971
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeRequirements/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SizeRequirements
diff --git a/gnu/testlet/javax/swing/SizeRequirements/CVS/Root b/gnu/testlet/javax/swing/SizeRequirements/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeRequirements/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SizeRequirements/calculateAlignedPositions.java b/gnu/testlet/javax/swing/SizeRequirements/calculateAlignedPositions.java
new file mode 100644
index 00000000..633bfce6
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeRequirements/calculateAlignedPositions.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.SizeRequirements;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SizeRequirements;
+
+/**
+ * Tests if the calculateAlignedPositions method works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class calculateAlignedPositions implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ /**
+ * This checks the method with two elements and values that I found in a bug
+ * with BoxLayout. Kind of a corner case.
+ *
+ * @param harness the test harness to use
+ */
+ private void test1(TestHarness harness)
+ {
+ SizeRequirements req1 = new SizeRequirements(282, 282, 282, 0.5F);
+ SizeRequirements req2 = new SizeRequirements(599, 599, 2147483647, 0.5F);
+ SizeRequirements[] els = new SizeRequirements[]{req1, req2};
+ // Only the alignment field of total is used.
+ SizeRequirements total = SizeRequirements.getAlignedSizeRequirements(els);
+ int[] offsets = new int[2];
+ int[] spans = new int[2];
+ SizeRequirements.calculateAlignedPositions(112, total, els, offsets, spans);
+ harness.check(offsets[0], 0);
+ harness.check(offsets[1], 0);
+ harness.check(spans[0], 112);
+ harness.check(spans[1], 112);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/CVS/Entries b/gnu/testlet/javax/swing/SizeSequence/CVS/Entries
new file mode 100644
index 00000000..fc03e2de
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/CVS/Entries
@@ -0,0 +1,9 @@
+/constructors.java/1.1/Tue May 16 20:32:30 2006//
+/getIndex.java/1.1/Tue May 16 20:32:30 2006//
+/getSize.java/1.2/Fri Sep 22 11:14:29 2006//
+/getSizes.java/1.1/Tue May 16 20:32:30 2006//
+/insertEntries.java/1.1/Tue May 16 20:32:30 2006//
+/removeEntries.java/1.1/Tue May 16 20:32:30 2006//
+/setSize.java/1.1/Tue May 16 20:32:30 2006//
+/setSizes.java/1.1/Tue May 16 20:32:30 2006//
+D
diff --git a/gnu/testlet/javax/swing/SizeSequence/CVS/Repository b/gnu/testlet/javax/swing/SizeSequence/CVS/Repository
new file mode 100644
index 00000000..e3babe6d
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SizeSequence
diff --git a/gnu/testlet/javax/swing/SizeSequence/CVS/Root b/gnu/testlet/javax/swing/SizeSequence/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SizeSequence/constructors.java b/gnu/testlet/javax/swing/SizeSequence/constructors.java
new file mode 100644
index 00000000..9fcb6e9f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/constructors.java
@@ -0,0 +1,114 @@
+/* constructors.java -- some checks for the constructors in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.SizeSequence;
+
+public class constructors implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SizeSequence s = new SizeSequence();
+ harness.check(Arrays.equals(s.getSizes(), new int[0]));
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+
+ SizeSequence s = new SizeSequence(3);
+ harness.check(Arrays.equals(s.getSizes(), new int[3]));
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ s = new SizeSequence(-1);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ SizeSequence s = new SizeSequence(3, 5);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {5, 5, 5}));
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ s = new SizeSequence(-1, 5);
+ }
+ catch (NegativeArraySizeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(int[])");
+ int[] sizes = new int[] {1, 2, 3};
+ SizeSequence s = new SizeSequence(sizes);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+ sizes[0] = 99;
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ s = new SizeSequence(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/getIndex.java b/gnu/testlet/javax/swing/SizeSequence/getIndex.java
new file mode 100644
index 00000000..42dda208
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/getIndex.java
@@ -0,0 +1,54 @@
+/* getIndex.java -- some checks for the getIndex() method in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SizeSequence;
+
+public class getIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence(new int[] {1, 2, 3});
+ harness.check(s.getIndex(0), 0);
+ harness.check(s.getIndex(1), 1);
+ harness.check(s.getIndex(2), 1);
+ harness.check(s.getIndex(3), 2);
+ harness.check(s.getIndex(4), 2);
+ harness.check(s.getIndex(5), 2);
+ harness.check(s.getIndex(6), 3);
+ harness.check(s.getIndex(7), 3);
+ harness.check(s.getIndex(99), 3);
+ harness.check(s.getIndex(-1), 0);
+
+ s = new SizeSequence();
+ harness.check(s.getIndex(-1), 0);
+ harness.check(s.getIndex(0), 0);
+ harness.check(s.getIndex(1), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/getSize.java b/gnu/testlet/javax/swing/SizeSequence/getSize.java
new file mode 100644
index 00000000..349b127e
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/getSize.java
@@ -0,0 +1,50 @@
+/* getSize.java -- some checks for the getSize() method in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SizeSequence;
+
+public class getSize implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence(new int[] {1, 2, 3});
+ harness.check(s.getSize(0), 1);
+ harness.check(s.getSize(1), 2);
+ harness.check(s.getSize(2), 3);
+
+ // the spec states that indices outside the valued range have no specified
+ // behaviour, but they seem to return zero...
+
+ // try negative index
+ harness.check(s.getSize(-1), 0);
+
+ // try index too large
+ harness.check(s.getSize(3), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/getSizes.java b/gnu/testlet/javax/swing/SizeSequence/getSizes.java
new file mode 100644
index 00000000..01c22aec
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/getSizes.java
@@ -0,0 +1,48 @@
+/* getSizes.java -- some checks for the getSizes() method in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.SizeSequence;
+
+public class getSizes implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ int[] sizes = new int[] {1, 2, 3};
+ SizeSequence s = new SizeSequence(sizes);
+ int[] sizes2 = s.getSizes();
+ harness.check(Arrays.equals(sizes, sizes2)); // equal, but...
+ harness.check(sizes != sizes2); // ...not the same array
+
+ s = new SizeSequence();
+ harness.check(Arrays.equals(s.getSizes(), new int[0]));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/insertEntries.java b/gnu/testlet/javax/swing/SizeSequence/insertEntries.java
new file mode 100644
index 00000000..3080bcab
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/insertEntries.java
@@ -0,0 +1,51 @@
+/* insertEntries.java -- some checks for the insertEntries() method in the
+ SizeSequence class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.SizeSequence;
+
+public class insertEntries implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence();
+ s.insertEntries(0, 1, 1);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1}));
+ s.insertEntries(1, 2, 2);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 2}));
+ s.insertEntries(0, 2, 3);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {3, 3, 1, 2, 2}));
+ s.insertEntries(0, 0, 99);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {3, 3, 1, 2, 2}));
+ s.insertEntries(4, 0, 99);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {3, 3, 1, 2, 2}));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/removeEntries.java b/gnu/testlet/javax/swing/SizeSequence/removeEntries.java
new file mode 100644
index 00000000..5eda3204
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/removeEntries.java
@@ -0,0 +1,54 @@
+/* removeEntries.java -- some checks for the removeEntries() method in the
+ SizeSequence class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.SizeSequence;
+
+public class removeEntries implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence(new int[] {1, 2, 3});
+ s.removeEntries(0, 0);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+ s.removeEntries(2, 0);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+ s.removeEntries(0, 2);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {3}));
+ s.removeEntries(0, 1);
+ harness.check(Arrays.equals(s.getSizes(), new int[0]));
+
+ s = new SizeSequence(new int[] {1, 2, 3, 4, 5});
+ s.removeEntries(3, 2);
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/setSize.java b/gnu/testlet/javax/swing/SizeSequence/setSize.java
new file mode 100644
index 00000000..994dd9c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/setSize.java
@@ -0,0 +1,47 @@
+/* setSize.java -- some checks for the setSize() method in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SizeSequence;
+
+public class setSize implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence(new int[] {1, 2, 3});
+ s.setSize(0, 3);
+ harness.check(s.getSize(0), 3);
+
+ // the spec says that the behaviour for indices outside the bounds is
+ // unspecified. The following throw no exceptions, but that can't be
+ // relied upon...
+ s.setSize(-1, 3);
+ s.setSize(3, 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SizeSequence/setSizes.java b/gnu/testlet/javax/swing/SizeSequence/setSizes.java
new file mode 100644
index 00000000..ccacf630
--- /dev/null
+++ b/gnu/testlet/javax/swing/SizeSequence/setSizes.java
@@ -0,0 +1,57 @@
+/* setSizes.java -- some checks for the setSizes() method in the SizeSequence
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SizeSequence;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.SizeSequence;
+
+public class setSizes implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SizeSequence s = new SizeSequence();
+ int[] sizes = new int[] {1, 2, 3};
+ s.setSizes(sizes);
+ harness.check(Arrays.equals(s.getSizes(), sizes));
+ sizes[0] = 99;
+ harness.check(Arrays.equals(s.getSizes(), new int[] {1, 2, 3}));
+
+ boolean pass = false;
+ try
+ {
+ s.setSizes(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Entries b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Entries
new file mode 100644
index 00000000..1ca29436
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Entries
@@ -0,0 +1,7 @@
+/constructors.java/1.1/Wed Feb 8 16:38:35 2006//
+/getNextValue.java/1.2/Wed Feb 15 11:08:52 2006//
+/getPreviousValue.java/1.2/Wed Feb 15 11:08:52 2006//
+/setEnd.java/1.1/Wed Feb 8 16:38:35 2006//
+/setStart.java/1.1/Wed Feb 8 16:38:35 2006//
+/setValue.java/1.1/Wed Feb 8 16:38:35 2006//
+D
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Repository b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Repository
new file mode 100644
index 00000000..e6a6dd7d
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SpinnerDateModel
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Root b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/constructors.java b/gnu/testlet/javax/swing/SpinnerDateModel/constructors.java
new file mode 100644
index 00000000..caf2a674
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/constructors.java
@@ -0,0 +1,191 @@
+/* constructors.java -- some checks for the constructors in the
+ SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+
+/**
+ * Some tests for the constructors in the {@link SpinnerDateModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ Date before = new Date();
+ SpinnerDateModel m = new SpinnerDateModel();
+ Date after = new Date();
+ Date date = (Date) m.getValue();
+ harness.check(date.getTime() >= before.getTime());
+ harness.check(date.getTime() <= after.getTime());
+ harness.check(m.getStart(), null);
+ harness.check(m.getEnd(), null);
+ harness.check(m.getCalendarField(), Calendar.DAY_OF_MONTH);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Date, Comparable, Comparable, int)");
+ Date now = new Date();
+ Date start = new Date(now.getTime() - 1L);
+ Date end = new Date(now.getTime() + 1L);
+ Date preStart = new Date(now.getTime() - 2L);
+ Date postEnd = new Date(now.getTime() + 2L);
+ SpinnerDateModel m = new SpinnerDateModel(now, start, end, Calendar.YEAR);
+ harness.check(m.getValue(), now);
+ harness.check(m.getStart(), start);
+ harness.check(m.getEnd(), end);
+ harness.check(m.getCalendarField(), Calendar.YEAR);
+
+ // value equal to start
+ m = new SpinnerDateModel(start, start, end, Calendar.YEAR);
+ harness.check(m.getValue(), start);
+ harness.check(m.getStart(), start);
+ harness.check(m.getEnd(), end);
+ harness.check(m.getCalendarField(), Calendar.YEAR);
+
+ // value before start
+ boolean pass = false;
+ try
+ {
+ m = new SpinnerDateModel(preStart, start, end, Calendar.YEAR);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // value equal to end
+ m = new SpinnerDateModel(end, start, end, Calendar.YEAR);
+ harness.check(m.getValue(), end);
+ harness.check(m.getStart(), start);
+ harness.check(m.getEnd(), end);
+ harness.check(m.getCalendarField(), Calendar.YEAR);
+
+ // value above maximum
+ pass = false;
+ try
+ {
+ m = new SpinnerDateModel(postEnd, start, end, Calendar.YEAR);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null value
+ pass = false;
+ try
+ {
+ m = new SpinnerDateModel(null, start, end, Calendar.YEAR);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check valid calendar fields
+ m = new SpinnerDateModel(now, start, end, Calendar.ERA);
+ harness.check(m.getCalendarField(), Calendar.ERA);
+ m = new SpinnerDateModel(now, start, end, Calendar.YEAR);
+ harness.check(m.getCalendarField(), Calendar.YEAR);
+ m = new SpinnerDateModel(now, start, end, Calendar.MONTH);
+ harness.check(m.getCalendarField(), Calendar.MONTH);
+ m = new SpinnerDateModel(now, start, end, Calendar.WEEK_OF_YEAR);
+ harness.check(m.getCalendarField(), Calendar.WEEK_OF_YEAR);
+ m = new SpinnerDateModel(now, start, end, Calendar.WEEK_OF_MONTH);
+ harness.check(m.getCalendarField(), Calendar.WEEK_OF_MONTH);
+ m = new SpinnerDateModel(now, start, end, Calendar.DAY_OF_MONTH);
+ harness.check(m.getCalendarField(), Calendar.DAY_OF_MONTH);
+ m = new SpinnerDateModel(now, start, end, Calendar.DAY_OF_YEAR);
+ harness.check(m.getCalendarField(), Calendar.DAY_OF_YEAR);
+ m = new SpinnerDateModel(now, start, end, Calendar.DAY_OF_WEEK);
+ harness.check(m.getCalendarField(), Calendar.DAY_OF_WEEK);
+ m = new SpinnerDateModel(now, start, end, Calendar.DAY_OF_WEEK_IN_MONTH);
+ harness.check(m.getCalendarField(), Calendar.DAY_OF_WEEK_IN_MONTH);
+ m = new SpinnerDateModel(now, start, end, Calendar.AM_PM);
+ harness.check(m.getCalendarField(), Calendar.AM_PM);
+ m = new SpinnerDateModel(now, start, end, Calendar.HOUR);
+ harness.check(m.getCalendarField(), Calendar.HOUR);
+ m = new SpinnerDateModel(now, start, end, Calendar.HOUR_OF_DAY);
+ harness.check(m.getCalendarField(), Calendar.HOUR_OF_DAY);
+ m = new SpinnerDateModel(now, start, end, Calendar.MINUTE);
+ harness.check(m.getCalendarField(), Calendar.MINUTE);
+ m = new SpinnerDateModel(now, start, end, Calendar.SECOND);
+ harness.check(m.getCalendarField(), Calendar.SECOND);
+ m = new SpinnerDateModel(now, start, end, Calendar.MILLISECOND);
+ harness.check(m.getCalendarField(), Calendar.MILLISECOND);
+ m = new SpinnerDateModel(now, start, end, Calendar.DATE);
+ harness.check(m.getCalendarField(), Calendar.DATE);
+
+ // check invalid calendar fields
+
+ pass = false;
+ try
+ {
+ m = new SpinnerDateModel(now, start, end, Calendar.DST_OFFSET);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m = new SpinnerDateModel(now, start, end, Calendar.ZONE_OFFSET);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java b/gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java
new file mode 100644
index 00000000..dc30cc26
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/getNextValue.java
@@ -0,0 +1,65 @@
+/* getNextValue.java -- some checks for the getNextValue() method in the
+ SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+
+public class getNextValue implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ Date now = new Date();
+ Date next = new Date(now.getTime() + 1L);
+ Date start = new Date(now.getTime() - 2L);
+ Date end = new Date(now.getTime() + 2L);
+
+ SpinnerDateModel m = new SpinnerDateModel(now, start, end,
+ Calendar.MILLISECOND);
+ harness.check(m.getValue(), now);
+ harness.check(m.getNextValue(), next);
+
+ // accessing the next value doesn't update the current value
+ harness.check(m.getValue(), now);
+ m.setValue(next);
+ harness.check(m.getNextValue(), end);
+ m.setValue(end);
+ harness.check(m.getNextValue(), null);
+
+ // repeat for model without bounds
+ m = new SpinnerDateModel(now, null, null, Calendar.MILLISECOND);
+ harness.check(m.getValue(), now);
+ harness.check(m.getNextValue(), next);
+
+ // accessing the next value doesn't update the current value
+ harness.check(m.getValue(), now);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java b/gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java
new file mode 100644
index 00000000..52f9b19b
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/getPreviousValue.java
@@ -0,0 +1,65 @@
+/* getPreviousValue.java -- some checks for the getPreviousValue() method in
+ the SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+import javax.swing.SpinnerNumberModel;
+
+public class getPreviousValue implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ Date now = new Date();
+ Date prev = new Date(now.getTime() - 1L);
+ Date start = new Date(now.getTime() - 2L);
+ Date end = new Date(now.getTime() + 2L);
+
+ SpinnerDateModel m = new SpinnerDateModel(now, start, end,
+ Calendar.MILLISECOND);
+ harness.check(m.getValue(), now);
+ harness.check(m.getPreviousValue(), prev);
+
+ // accessing the previous value doesn't update the current value
+ harness.check(m.getValue(), now);
+ m.setValue(prev);
+ harness.check(m.getPreviousValue(), start);
+ m.setValue(start);
+ harness.check(m.getPreviousValue(), null);
+
+ // repeat for model without bounds
+ m = new SpinnerDateModel(now, null, null, Calendar.MILLISECOND);
+ harness.check(m.getValue(), now);
+ harness.check(m.getPreviousValue(), prev);
+
+ // accessing the previous value doesn't update the current value
+ harness.check(m.getValue(), now);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/setEnd.java b/gnu/testlet/javax/swing/SpinnerDateModel/setEnd.java
new file mode 100644
index 00000000..41ae534a
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/setEnd.java
@@ -0,0 +1,81 @@
+/* setEnd.java -- some checks for the setEnd() method in the
+ SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setEnd implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ Date now = new Date();
+ Date start = new Date(now.getTime() - 1L);
+ Date preStart = new Date(now.getTime() - 2L);
+ Date end1 = new Date(now.getTime() + 1L);
+ Date end2 = new Date(now.getTime() + 2L);
+
+ SpinnerDateModel m = new SpinnerDateModel(now, start, end1,
+ Calendar.DAY_OF_MONTH);
+ m.addChangeListener(this);
+ m.setEnd(end2);
+ harness.check(m.getEnd(), end2);
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setEnd(end2);
+ harness.check(this.event == null);
+
+ // set null end
+ this.event = null;
+ m.setEnd(null);
+ harness.check(m.getEnd(), null);
+ harness.check(this.event.getSource(), m);
+
+ // same null value triggers no event
+ this.event = null;
+ m.setEnd(null);
+ harness.check(this.event == null);
+
+ // set end earlier than start
+ m.setEnd(preStart);
+ harness.check(m.getEnd(), preStart);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/setStart.java b/gnu/testlet/javax/swing/SpinnerDateModel/setStart.java
new file mode 100644
index 00000000..58046e1c
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/setStart.java
@@ -0,0 +1,81 @@
+/* setStart.java -- some checks for the setStart() method in the
+ SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setStart implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ Date now = new Date();
+ Date start1 = new Date(now.getTime() - 1L);
+ Date start2 = new Date(now.getTime() - 2L);
+ Date end = new Date(now.getTime() + 1L);
+ Date postEnd = new Date(now.getTime() + 2L);
+
+ SpinnerDateModel m = new SpinnerDateModel(now, start1, end,
+ Calendar.DAY_OF_MONTH);
+ m.addChangeListener(this);
+ m.setStart(start2);
+ harness.check(m.getStart(), start2);
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setStart(start2);
+ harness.check(this.event == null);
+
+ // set null start
+ this.event = null;
+ m.setStart(null);
+ harness.check(m.getStart(), null);
+ harness.check(this.event.getSource(), m);
+
+ // same null value triggers no event
+ this.event = null;
+ m.setStart(null);
+ harness.check(this.event == null);
+
+ // set start higher than end
+ m.setStart(postEnd);
+ harness.check(m.getStart(), postEnd);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerDateModel/setValue.java b/gnu/testlet/javax/swing/SpinnerDateModel/setValue.java
new file mode 100644
index 00000000..8ce19ab2
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerDateModel/setValue.java
@@ -0,0 +1,98 @@
+/* setValue.java -- some checks for the setValue() method in the
+ SpinnerDateModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerDateModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.SpinnerDateModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setValue implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ Date now = new Date();
+ Date v1 = new Date(now.getTime() - 1L);
+ Date start = new Date(now.getTime() - 2L);
+ Date preStart = new Date(now.getTime() - 3L);
+ Date end = new Date(now.getTime() + 2L);
+ Date postEnd = new Date(now.getTime() + 3L);
+ SpinnerDateModel m = new SpinnerDateModel(now, start, end,
+ Calendar.MILLISECOND);
+ m.addChangeListener(this);
+ m.setValue(v1);
+ harness.check(m.getValue(), v1);
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setValue(v1);
+ harness.check(this.event == null);
+
+ // set value less than start
+ m.setValue(preStart);
+ harness.check(m.getValue(), preStart);
+
+ // set value greater than maximum
+ m.setValue(postEnd);
+ harness.check(m.getValue(), postEnd);
+
+ // set null value
+ boolean pass = false;
+ try
+ {
+ m.setValue(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // set a non-date value
+ pass = false;
+ try
+ {
+ m.setValue("123");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/ArrayModel.java b/gnu/testlet/javax/swing/SpinnerListModel/ArrayModel.java
new file mode 100644
index 00000000..4e0ecf8b
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/ArrayModel.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.SpinnerListModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.SpinnerListModel;
+
+public class ArrayModel implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ SpinnerListModel model;
+ Object[] array;
+ boolean threwException;
+
+ /* Create array */
+ array = new Object[]{"GNU", "Classpath"};
+ /* Create model */
+ model = new SpinnerListModel(array);
+ /* Check retrieval */
+ harness.check(model.getList() != null, "Array model creation check");
+ harness.check(model.getValue(), "GNU", "Array model current value check");
+ harness.check(model.getNextValue(), "Classpath", "Array model next value check");
+ harness.check(model.getValue(), "GNU", "Array model no change of current value after next check");
+ harness.check(model.getPreviousValue(), null, "Array model previous value check");
+ /* Value change check */
+ array[0] = "GNU's Not UNIX";
+ harness.check(model.getValue(), "GNU's Not UNIX", "Array model backing list change check");
+ /* Value setting check */
+ model.setValue("Classpath");
+ harness.check(model.getValue(), "Classpath", "Array model successful set check");
+ threwException = false;
+ try
+ {
+ model.setValue("Sun");
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Array model non-existant value exception check");
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/CVS/Entries b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Entries
new file mode 100644
index 00000000..f1f2442d
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Entries
@@ -0,0 +1,6 @@
+/ArrayModel.java/1.1/Sat Oct 16 13:22:51 2004//
+/Constructors.java/1.1/Sat Oct 16 13:22:51 2004//
+/ListModel.java/1.1/Sat Oct 16 13:22:51 2004//
+/Ordering.java/1.1/Sat Oct 16 13:22:51 2004//
+/SetList.java/1.1/Sat Oct 16 13:22:51 2004//
+D
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/CVS/Repository b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Repository
new file mode 100644
index 00000000..1ee81d12
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SpinnerListModel
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/CVS/Root b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/Constructors.java b/gnu/testlet/javax/swing/SpinnerListModel/Constructors.java
new file mode 100644
index 00000000..2168cb78
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/Constructors.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.SpinnerListModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.ArrayList;
+import javax.swing.SpinnerListModel;
+
+public class Constructors implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ SpinnerListModel model;
+ boolean threwException = false;
+
+ /* Invalid values */
+ try
+ {
+ model = new SpinnerListModel((Object[]) null);
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Null array to constructor exception check");
+ threwException = false;
+ try
+ {
+ model = new SpinnerListModel(new ArrayList());
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Empty list to constructor exception check");
+ threwException = false;
+ try
+ {
+ model = new SpinnerListModel(new Object[]{});
+ harness.fail("Empty array supplied to constructor failed to throw an exception.");
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "Empty array to constructor exception check");
+ /* Test the default model */
+ model = new SpinnerListModel();
+ harness.check(model.getList() != null, "Default list construction check.");
+ harness.check(model.getValue(), "empty", "Default list current value check.");
+ harness.check(model.getNextValue(), null, "Default list next value check.");
+ harness.check(model.getPreviousValue(), null, "Default list previous value check.");
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/ListModel.java b/gnu/testlet/javax/swing/SpinnerListModel/ListModel.java
new file mode 100644
index 00000000..fe241560
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/ListModel.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.SpinnerListModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.SpinnerListModel;
+
+public class ListModel implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ SpinnerListModel model;
+ List list;
+ boolean threwException = false;
+
+ /* Create list */
+ list = new ArrayList();
+ list.add("GNU");
+ list.add("Classpath");
+ /* Create model */
+ model = new SpinnerListModel(list);
+ /* Check retrieval */
+ harness.check(model.getList() != null, "List model creation check");
+ harness.check(model.getValue(), "GNU", "List model current value check");
+ harness.check(model.getNextValue(), "Classpath", "List model next value check");
+ harness.check(model.getValue(), "GNU", "List model no change of current value after next check");
+ harness.check(model.getPreviousValue(), null, "List model previous value check");
+ /* Value change check */
+ list.set(0, "GNU's Not UNIX");
+ harness.check(model.getValue(), "GNU's Not UNIX", "List model backing list change check");
+ /* Value setting check */
+ model.setValue("Classpath");
+ harness.check(model.getValue(), "Classpath", "List model successful set check");
+ try
+ {
+ model.setValue("Sun");
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "List model non-existant value exception check.");
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/Ordering.java b/gnu/testlet/javax/swing/SpinnerListModel/Ordering.java
new file mode 100644
index 00000000..67b8fc91
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/Ordering.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.SpinnerListModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.SpinnerListModel;
+
+public class Ordering implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ SpinnerListModel model;
+ List list;
+
+ /* Create list */
+ list = new ArrayList();
+ list.add("a");
+ list.add("z");
+ list.add("a");
+ list.add("b");
+ /* Create model */
+ model = new SpinnerListModel(list);
+ /* Check retrieval */
+ harness.check(model.getList() != null, "Array model ordering creation check");
+ harness.check(model.getValue(), "a", "Array model ordering current value check");
+ harness.check(model.getNextValue(), "z", "Array model ordering next value check");
+ harness.check(model.getValue(), "a", "Array model ordering no change of current value after next check");
+ harness.check(model.getPreviousValue(), null, "Array model ordering previous value check");
+ /* Value ordering of setting check */
+ model.setValue("a");
+ harness.check(model.getValue(), "a", "Array model ordering successful set check");
+ harness.check(model.getPreviousValue(), null, "Array model ordering post-set previous value check");
+ harness.check(model.getNextValue(), "z", "Array model ordering post-set next value check");
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerListModel/SetList.java b/gnu/testlet/javax/swing/SpinnerListModel/SetList.java
new file mode 100644
index 00000000..d29137e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerListModel/SetList.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+// 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.javax.swing.SpinnerListModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.SpinnerListModel;
+
+public class SetList implements Testlet
+{
+
+public void test(TestHarness harness)
+{
+ SpinnerListModel model;
+ List list;
+ boolean threwException;
+
+ /* Create default model */
+ model = new SpinnerListModel();
+ /* Invalid values */
+ threwException = false;
+ try
+ {
+ model.setList((ArrayList) null);
+ harness.fail("Null list supplied to setList failed to throw an exception.");
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "setList null list exception check.");
+ threwException = false;
+ try
+ {
+ model.setList(new ArrayList());
+ }
+ catch (IllegalArgumentException exception)
+ {
+ threwException = true;
+ }
+ harness.check(threwException, "setList empty list exception check.");
+ /* Test a successful change */
+ list = new ArrayList();
+ list.add("GNU");
+ model.setList(list);
+ harness.check(model.getList(), list, "Model allowed successful change of list.");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Entries b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Entries
new file mode 100644
index 00000000..8242414f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Entries
@@ -0,0 +1,8 @@
+/constructors.java/1.1/Wed Feb 8 16:38:36 2006//
+/getNextValue.java/1.2/Wed Feb 15 10:49:22 2006//
+/getPreviousValue.java/1.2/Wed Feb 15 10:49:22 2006//
+/setMaximum.java/1.1/Wed Feb 8 16:38:36 2006//
+/setMinimum.java/1.1/Wed Feb 8 16:38:36 2006//
+/setStepSize.java/1.1/Wed Feb 8 16:38:36 2006//
+/setValue.java/1.1/Wed Feb 8 16:38:36 2006//
+D
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Repository b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Repository
new file mode 100644
index 00000000..a357a127
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SpinnerNumberModel
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Root b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/constructors.java b/gnu/testlet/javax/swing/SpinnerNumberModel/constructors.java
new file mode 100644
index 00000000..7187c7e1
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/constructors.java
@@ -0,0 +1,288 @@
+/* constructors.java -- some checks for the constructors in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+
+/**
+ * Some tests for the constructors in the {@link SpinnerNumberModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SpinnerNumberModel m = new SpinnerNumberModel();
+ harness.check(m.getValue(), new Integer(0));
+ harness.check(m.getMinimum(), null);
+ harness.check(m.getMaximum(), null);
+ harness.check(m.getStepSize(), new Integer(1));
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(double, double, double, double)");
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.5));
+
+ // value equal to minimum
+ m = new SpinnerNumberModel(1.0, 1.0, 3.0, 0.5);
+ harness.check(m.getValue(), new Double(1.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.5));
+
+ // value below minimum
+ boolean pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(0.9, 1.0, 3.0, 0.5);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // value equal to maximum
+ m = new SpinnerNumberModel(3.0, 1.0, 3.0, 0.5);
+ harness.check(m.getValue(), new Double(3.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.5));
+
+ // value above maximum
+ pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(3.1, 1.0, 3.0, 0.5);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // step size 0
+ m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.0);
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.0));
+
+ // step size negative
+ m = new SpinnerNumberModel(2.0, 1.0, 3.0, -0.5);
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(-0.5));
+
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int, int)");
+ SpinnerNumberModel m = new SpinnerNumberModel(20, 10, 30, 5);
+ harness.check(m.getValue(), new Integer(20));
+ harness.check(m.getMinimum(), new Integer(10));
+ harness.check(m.getMaximum(), new Integer(30));
+ harness.check(m.getStepSize(), new Integer(5));
+
+ // value equal to minimum
+ m = new SpinnerNumberModel(10, 10, 30, 5);
+ harness.check(m.getValue(), new Integer(10));
+ harness.check(m.getMinimum(), new Integer(10));
+ harness.check(m.getMaximum(), new Integer(30));
+ harness.check(m.getStepSize(), new Integer(5));
+
+ // value below minimum
+ boolean pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(9, 10, 30, 5);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // value equal to maximum
+ m = new SpinnerNumberModel(30, 10, 30, 5);
+ harness.check(m.getValue(), new Integer(30));
+ harness.check(m.getMinimum(), new Integer(10));
+ harness.check(m.getMaximum(), new Integer(30));
+ harness.check(m.getStepSize(), new Integer(5));
+
+ // value above maximum
+ pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(31, 10, 30, 5);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // step size 0
+ m = new SpinnerNumberModel(20, 10, 30, 0);
+ harness.check(m.getValue(), new Integer(20));
+ harness.check(m.getMinimum(), new Integer(10));
+ harness.check(m.getMaximum(), new Integer(30));
+ harness.check(m.getStepSize(), new Integer(0));
+
+ // step size negative
+ m = new SpinnerNumberModel(20, 10, 30, -5);
+ harness.check(m.getValue(), new Integer(20));
+ harness.check(m.getMinimum(), new Integer(10));
+ harness.check(m.getMaximum(), new Integer(30));
+ harness.check(m.getStepSize(), new Integer(-5));
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("Number, Comparable, Comparable, Number");
+ SpinnerNumberModel m = new SpinnerNumberModel(new Long(20), new Long(10),
+ new Long(30), new Long(5));
+ harness.check(m.getValue(), new Long(20));
+ harness.check(m.getMinimum(), new Long(10));
+ harness.check(m.getMaximum(), new Long(30));
+ harness.check(m.getStepSize(), new Long(5));
+
+ // value equal to minimum
+ m = new SpinnerNumberModel(new Double(1.0), new Double(1.0),
+ new Double(3.0), new Double(0.5));
+ harness.check(m.getValue(), new Double(1.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.5));
+
+ // value below minimum
+ boolean pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(new Double(0.9), new Double(1.0),
+ new Double(3.0), new Double(0.5));
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // value equal to maximum
+ m = new SpinnerNumberModel(new Double(3.0), new Double(1.0),
+ new Double(3.0), new Double(0.5));
+ harness.check(m.getValue(), new Double(3.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.5));
+
+ // value above maximum
+ pass = false;
+ try
+ {
+ m = new SpinnerNumberModel(new Double(3.1), new Double(1.0),
+ new Double(3.0), new Double(0.5));
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // step size 0
+ m = new SpinnerNumberModel(new Double(2.0), new Double(1.0),
+ new Double(3.0), new Double(0.0));
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(0.0));
+
+ // step size negative
+ m = new SpinnerNumberModel(new Double(2.0), new Double(1.0),
+ new Double(3.0), new Double(-0.5));
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getMinimum(), new Double(1.0));
+ harness.check(m.getMaximum(), new Double(3.0));
+ harness.check(m.getStepSize(), new Double(-0.5));
+
+ // check null value
+ pass = false;
+ try
+ {
+ /*SpinnerNumberModel m =*/ new SpinnerNumberModel(null, new Long(10),
+ new Long(30), new Long(5));
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null minimum
+
+ // check null maximum
+
+ // check null step size
+ pass = false;
+ try
+ {
+ /*SpinnerNumberModel m =*/ new SpinnerNumberModel(new Long(20),
+ new Long(10), new Long(30), null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java b/gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java
new file mode 100644
index 00000000..9db8e906
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/getNextValue.java
@@ -0,0 +1,63 @@
+/* getNextValue.java -- some checks for the getNextValue() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+
+public class getNextValue implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getNextValue(), new Double(2.5));
+
+ // accessing the next value doesn't update the current value
+ harness.check(m.getValue(), new Double(2.0));
+
+ m.setValue(new Double(2.5));
+ harness.check(m.getNextValue(), new Double(3.0));
+ m.setValue(new Double(3.0));
+ harness.check(m.getNextValue(), null);
+
+ // repeat for model without bounds
+ m = new SpinnerNumberModel(new Integer(0), null, null, new Integer(1));
+ harness.check(m.getValue(), new Integer(0));
+ harness.check(m.getNextValue(), new Integer(1));
+
+ // accessing the next value doesn't update the current value
+ harness.check(m.getValue(), new Integer(0));
+
+ m.setValue(new Integer(99));
+ harness.check(m.getNextValue(), new Integer(100));
+
+ // what happens for max integer
+ m.setValue(new Integer(Integer.MAX_VALUE));
+ harness.check(m.getNextValue(), new Integer(Integer.MIN_VALUE));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java b/gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java
new file mode 100644
index 00000000..e6190b1f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/getPreviousValue.java
@@ -0,0 +1,62 @@
+/* getPreviousValue.java -- some checks for the getPreviousValue() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+
+public class getPreviousValue implements Testlet {
+
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ harness.check(m.getValue(), new Double(2.0));
+ harness.check(m.getPreviousValue(), new Double(1.5));
+ // accessing the previous value doesn't update the current value
+ harness.check(m.getValue(), new Double(2.0));
+ m.setValue(new Double(1.5));
+ harness.check(m.getPreviousValue(), new Double(1.0));
+ m.setValue(new Double(1.0));
+ harness.check(m.getPreviousValue(), null);
+
+ // repeat for model without bounds
+ m = new SpinnerNumberModel(new Integer(0), null, null, new Integer(1));
+ harness.check(m.getValue(), new Integer(0));
+ harness.check(m.getPreviousValue(), new Integer(-1));
+
+ // accessing the next value doesn't update the current value
+ harness.check(m.getValue(), new Integer(0));
+
+ m.setValue(new Integer(-99));
+ harness.check(m.getPreviousValue(), new Integer(-100));
+
+ // what happens for min integer
+ m.setValue(new Integer(Integer.MIN_VALUE));
+ harness.check(m.getPreviousValue(), new Integer(Integer.MAX_VALUE));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/setMaximum.java b/gnu/testlet/javax/swing/SpinnerNumberModel/setMaximum.java
new file mode 100644
index 00000000..5aaa6291
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/setMaximum.java
@@ -0,0 +1,71 @@
+/* setMaximum.java -- some checks for the setMaximum() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setMaximum implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ m.addChangeListener(this);
+ m.setMaximum(new Double(3.7));
+ harness.check(m.getMaximum(), new Double(3.7));
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setMaximum(new Double(3.7));
+ harness.check(this.event == null);
+
+ // set null maximum
+ this.event = null;
+ m.setMaximum(null);
+ harness.check(m.getMaximum(), null);
+ harness.check(this.event.getSource(), m);
+
+ // same null value triggers no event
+ this.event = null;
+ m.setMaximum(null);
+ harness.check(this.event == null);
+
+ // set maximum lower than minimum
+ m.setMaximum(new Double(-99.0));
+ harness.check(m.getMaximum(), new Double(-99.0));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/setMinimum.java b/gnu/testlet/javax/swing/SpinnerNumberModel/setMinimum.java
new file mode 100644
index 00000000..2c5aa0ee
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/setMinimum.java
@@ -0,0 +1,71 @@
+/* setMinimum.java -- some checks for the setMinimum() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setMinimum implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ m.addChangeListener(this);
+ m.setMinimum(new Double(0.7));
+ harness.check(m.getMinimum(), new Double(0.7));
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setMinimum(new Double(0.7));
+ harness.check(this.event == null);
+
+ // set null minimum
+ this.event = null;
+ m.setMinimum(null);
+ harness.check(m.getMinimum(), null);
+ harness.check(this.event.getSource(), m);
+
+ // same null value triggers no event
+ this.event = null;
+ m.setMinimum(null);
+ harness.check(this.event == null);
+
+ // set minimum higher than maximum
+ m.setMinimum(new Double(99.0));
+ harness.check(m.getMinimum(), new Double(99.0));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/setStepSize.java b/gnu/testlet/javax/swing/SpinnerNumberModel/setStepSize.java
new file mode 100644
index 00000000..c15e97df
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/setStepSize.java
@@ -0,0 +1,68 @@
+/* setStepSize.java -- some checks for the setStepSize() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setStepSize implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ m.addChangeListener(this);
+ m.setStepSize(new Double(0.7));
+ harness.check(m.getStepSize(), new Double(0.7));
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setStepSize(new Double(0.7));
+ harness.check(this.event == null);
+
+ // set null step size
+ boolean pass = false;
+ try
+ {
+ m.setStepSize(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SpinnerNumberModel/setValue.java b/gnu/testlet/javax/swing/SpinnerNumberModel/setValue.java
new file mode 100644
index 00000000..16dafb5f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SpinnerNumberModel/setValue.java
@@ -0,0 +1,88 @@
+/* setValue.java -- some checks for the setValue() method in the
+ SpinnerNumberModel class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.SpinnerNumberModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+public class setValue implements Testlet, ChangeListener {
+
+ private ChangeEvent event;
+
+ public void stateChanged(ChangeEvent e)
+ {
+ this.event = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ SpinnerNumberModel m = new SpinnerNumberModel(2.0, 1.0, 3.0, 0.5);
+ m.addChangeListener(this);
+ m.setValue(new Double(2.2));
+ harness.check(m.getValue(), new Double(2.2));
+ harness.check(this.event.getSource(), m);
+
+ // same value triggers no event
+ this.event = null;
+ m.setValue(new Double(2.2));
+ harness.check(this.event == null);
+
+ // set value less than minimum
+ m.setValue(new Double(-99.0));
+ harness.check(m.getValue(), new Double(-99.0));
+
+ // set value greater than maximum
+ m.setValue(new Double(99.0));
+ harness.check(m.getValue(), new Double(99.0));
+
+ // set null value
+ boolean pass = false;
+ try
+ {
+ m.setValue(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // set a non-numeric value
+ pass = false;
+ try
+ {
+ m.setValue("123");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/SwingUtilities/CVS/Entries b/gnu/testlet/javax/swing/SwingUtilities/CVS/Entries
new file mode 100644
index 00000000..37ecafd5
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/CVS/Entries
@@ -0,0 +1,7 @@
+/calculateInnerArea.java/1.1/Mon Mar 13 21:23:39 2006//
+/computeIntersection.java/1.2/Mon Feb 27 13:48:33 2006//
+/computeUnion.java/1.2/Mon Feb 27 13:48:33 2006//
+/isRectangleContainingRectangle.java/1.1/Wed Nov 17 22:26:27 2004//
+/layoutCompoundLabel.java/1.2/Tue Feb 28 15:08:43 2006//
+/replaceUIActionMap.java/1.1/Wed Nov 9 15:18:21 2005//
+D
diff --git a/gnu/testlet/javax/swing/SwingUtilities/CVS/Repository b/gnu/testlet/javax/swing/SwingUtilities/CVS/Repository
new file mode 100644
index 00000000..7729ca5f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/SwingUtilities
diff --git a/gnu/testlet/javax/swing/SwingUtilities/CVS/Root b/gnu/testlet/javax/swing/SwingUtilities/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/SwingUtilities/calculateInnerArea.java b/gnu/testlet/javax/swing/SwingUtilities/calculateInnerArea.java
new file mode 100644
index 00000000..e03e5886
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/calculateInnerArea.java
@@ -0,0 +1,60 @@
+/* calculateInnerArea.java -- some checks for the calculateInnerArea() method
+ in the SwingUtilities class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import javax.swing.border.EmptyBorder;
+
+public class calculateInnerArea implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JPanel c = new JPanel();
+ c.setBorder(new EmptyBorder(1, 2, 3, 4));
+ c.setSize(new Dimension(100, 200));
+
+ // test with null r
+ Rectangle r = SwingUtilities.calculateInnerArea(c, null);
+ harness.check(r, new Rectangle(2, 1, 94, 196));
+
+ // check that passed in rectangle is returned
+ Rectangle rr = new Rectangle();
+ r = SwingUtilities.calculateInnerArea(c, rr);
+ harness.check(r == rr);
+ harness.check(r, new Rectangle(2, 1, 94, 196));
+
+ // try null component
+ rr = SwingUtilities.calculateInnerArea(null, r);
+ harness.check(rr, null);
+ harness.check(r, new Rectangle(2, 1, 94, 196));
+ }
+}
diff --git a/gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java b/gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java
new file mode 100644
index 00000000..38d19f6f
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/computeIntersection.java
@@ -0,0 +1,147 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.SwingUtilities;
+
+/**
+ * Some checks for the computeIntersection() method in the SwingUtilities
+ * class.
+ */
+public class computeIntersection implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ Rectangle dest = new Rectangle(1, 1, 3, 3);
+
+ harness.checkPoint("No intersection");
+
+ // no intersection - top left
+ SwingUtilities.computeIntersection(0, 4, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - top
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(2, 4, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - top right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(4, 4, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - bottom left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(0, 0, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - bottom
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(2, 0, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - bottom right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(4, 0, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(0, 2, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(4, 2, 1, 1, dest);
+ harness.check(dest.isEmpty());
+
+ // no intersection - empty rectangle
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(2, 2, 0, 0, dest);
+ harness.check(dest.isEmpty());
+
+ harness.checkPoint("Intersection");
+
+ // intersection - top left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(0, 3, 2, 2, dest);
+ harness.check(dest, new Rectangle(1, 3, 1, 1));
+
+ // intersection - top
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(2, 3, 1, 2, dest);
+ harness.check(dest, new Rectangle(2, 3, 1, 1));
+
+ // intersection - top right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(3, 3, 2, 2, dest);
+ harness.check(dest, new Rectangle(3, 3, 1, 1));
+
+ // intersection - bottom left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(0, 0, 2, 2, dest);
+ harness.check(dest, new Rectangle(1, 1, 1, 1));
+
+ // intersection - bottom
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(2, 0, 1, 2, dest);
+ harness.check(dest, new Rectangle(2, 1, 1, 1));
+
+ // intersection - bottom right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(3, 0, 2, 2, dest);
+ harness.check(dest, new Rectangle(3, 1, 1, 1));
+
+ // intersection - left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(0, 2, 2, 1, dest);
+ harness.check(dest, new Rectangle(1, 2, 1, 1));
+
+ // no intersection - right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeIntersection(3, 2, 2, 1, dest);
+ harness.check(dest, new Rectangle(3, 2, 1, 1));
+
+ harness.checkPoint("Null arguments");
+ // test null argument - the API spec doesn't specify what should
+ // happen, but a NullPointerException is the usual result elsewhere
+ try
+ {
+ /* Rectangle r2 = */ SwingUtilities.computeIntersection(1, 2, 3, 4, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SwingUtilities/computeUnion.java b/gnu/testlet/javax/swing/SwingUtilities/computeUnion.java
new file mode 100644
index 00000000..53e4f53e
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/computeUnion.java
@@ -0,0 +1,155 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.SwingUtilities;
+
+/**
+ * Some checks for the computeUnion() method in the SwingUtilities
+ * class.
+ */
+public class computeUnion implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ Rectangle dest = new Rectangle(1, 1, 3, 3);
+
+ harness.checkPoint("No intersection");
+
+ // no intersection - top left
+ SwingUtilities.computeUnion(0, 4, 1, 1, dest);
+ harness.check(dest, new Rectangle(0, 1, 4, 4)); // 1
+
+ // no intersection - top
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(2, 4, 1, 1, dest);
+ harness.check(dest, new Rectangle(1, 1, 3, 4)); // 2
+
+ // no intersection - top right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(4, 4, 1, 1, dest);
+ harness.check(dest, new Rectangle(1, 1, 4, 4)); // 3
+
+ // no intersection - bottom left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 0, 1, 1, dest);
+ harness.check(dest, new Rectangle(0, 0, 4, 4)); // 4
+
+ // no intersection - bottom
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(2, 0, 1, 1, dest);
+ harness.check(dest, new Rectangle(1, 0, 3, 4)); // 5
+
+ // no intersection - bottom right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(4, 0, 1, 1, dest);
+ harness.check(dest, new Rectangle(1, 0, 4, 4)); // 6
+
+ // no intersection - left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 2, 1, 1, dest);
+ harness.check(dest, new Rectangle(0, 1, 4, 3)); // 7
+
+ // no intersection - right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(4, 2, 1, 1, dest);
+ harness.check(dest, new Rectangle(1, 1, 4, 3)); // 8
+
+ // no intersection - empty rectangle
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(2, 2, 0, 0, dest);
+ harness.check(dest, new Rectangle(1, 1, 3, 3)); // 9
+
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 0, 0, 0, dest);
+ harness.check(dest, new Rectangle(0, 0, 4, 4)); // 10
+
+ harness.checkPoint("Intersection");
+
+ // intersection - top left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 3, 2, 2, dest);
+ harness.check(dest, new Rectangle(0, 1, 4, 4));
+
+ // intersection - top
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(2, 3, 1, 2, dest);
+ harness.check(dest, new Rectangle(1, 1, 3, 4));
+
+ // intersection - top right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(3, 3, 2, 2, dest);
+ harness.check(dest, new Rectangle(1, 1, 4, 4));
+
+ // intersection - bottom left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 0, 2, 2, dest);
+ harness.check(dest, new Rectangle(0, 0, 4, 4));
+
+ // intersection - bottom
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(2, 0, 1, 2, dest);
+ harness.check(dest, new Rectangle(1, 0, 3, 4));
+
+ // intersection - bottom right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(3, 0, 2, 2, dest);
+ harness.check(dest, new Rectangle(1, 0, 4, 4));
+
+ // intersection - left
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 2, 2, 1, dest);
+ harness.check(dest, new Rectangle(0, 1, 4, 3));
+
+ // no intersection - right
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(3, 2, 2, 1, dest);
+ harness.check(dest, new Rectangle(1, 1, 4, 3));
+
+ dest = new Rectangle(1, 1, 3, 3);
+ SwingUtilities.computeUnion(0, 0, 4, 4, dest);
+ harness.check(dest, new Rectangle(0, 0, 4, 4));
+
+ harness.checkPoint("Null arguments");
+ // test null argument - the API spec doesn't specify what should
+ // happen, but a NullPointerException is the usual result elsewhere
+ try
+ {
+ /* Rectangle r2 = */ SwingUtilities.computeIntersection(1, 2, 3, 4, null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SwingUtilities/isRectangleContainingRectangle.java b/gnu/testlet/javax/swing/SwingUtilities/isRectangleContainingRectangle.java
new file mode 100644
index 00000000..7d0408f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/isRectangleContainingRectangle.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.SwingUtilities;
+
+/**
+ * Some checks for the isRectangleContainingRectangle() method in the
+ * SwingUtilities class.
+ */
+public class isRectangleContainingRectangle implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+
+ Rectangle r0 = new Rectangle(0, 0, 0, 0);
+ Rectangle r1 = new Rectangle(0, 0, 1, 1);
+ Rectangle r2 = new Rectangle(1, 1, 1, 1);
+ Rectangle r3 = new Rectangle(-1, -1, 2, 2);
+
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r0, r0));
+ harness.check(!SwingUtilities.isRectangleContainingRectangle(r0, r1));
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r1, r0));
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r1, r1));
+ harness.check(!SwingUtilities.isRectangleContainingRectangle(r1, r2));
+ harness.check(!SwingUtilities.isRectangleContainingRectangle(r2, r0));
+ harness.check(!SwingUtilities.isRectangleContainingRectangle(r2, r1));
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r2, r2));
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r3, r0));
+ harness.check(SwingUtilities.isRectangleContainingRectangle(r3, r1));
+ harness.check(!SwingUtilities.isRectangleContainingRectangle(r3, r2));
+
+ harness.checkPoint("Null arguments");
+ // test null argument - the API spec doesn't specify what should
+ // happen, but a NullPointerException is the usual result elsewhere
+ try
+ {
+ /* Rectangle r2 = */ SwingUtilities.isRectangleContainingRectangle(null, new Rectangle());
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+
+ try
+ {
+ /* Rectangle r2 = */ SwingUtilities.isRectangleContainingRectangle(new Rectangle(), null);
+ harness.check(false);
+ }
+ catch (NullPointerException e)
+ {
+ harness.check(true);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java b/gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java
new file mode 100644
index 00000000..155b875b
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/layoutCompoundLabel.java
@@ -0,0 +1,411 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Rectangle;
+
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.plaf.basic.BasicIconFactory;
+
+/**
+ * Some checks for the layoutCompoundLabel() method in the SwingUtilities
+ * class.
+ */
+public class layoutCompoundLabel implements Testlet, SwingConstants
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(JComponent)");
+ test1TextOnly(harness);
+ test1IconOnly(harness);
+ test1TextAndIconCL(harness);
+ test1TextAndIconCR(harness);
+ }
+
+ /**
+ * Tests various combinations with text but no icon.
+ *
+ * @param harness the test harness.
+ */
+ public void test1TextOnly(TestHarness harness)
+ {
+ JLabel label = new JLabel("X");
+ Font font = new Font("Dialog", Font.PLAIN, 12);
+ FontMetrics fm = label.getFontMetrics(font);
+ String text = "X";
+ String displayText = "";
+ int ww = fm.stringWidth(text);
+ int hh = fm.getHeight();
+ Icon icon = null;
+ Rectangle viewR = new Rectangle(10, 20, 100, 25);
+ Rectangle iconR = new Rectangle();
+ Rectangle textR = new Rectangle();
+
+ harness.checkPoint("TL-text");
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww, 20 + hh / 2, 0, 0));
+ harness.check(textR, new Rectangle(10, 20, ww, hh));
+
+ harness.checkPoint("TC-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + (ww + 1) / 2, 20 + hh / 2, 0, 0));
+ harness.check(textR, new Rectangle(60 - ww / 2, 20, ww, hh));
+
+ harness.checkPoint("TR-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110, 20 + hh / 2, 0, 0));
+ harness.check(textR, new Rectangle(110 - ww, 20, ww, hh));
+
+ harness.checkPoint("CL-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww, 32, 0, 0));
+ harness.check(textR, new Rectangle(10, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CC-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + (ww + 1) / 2, 32, 0, 0));
+ harness.check(textR, new Rectangle(60 - ww / 2, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CR-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110, 32, 0, 0));
+ harness.check(textR, new Rectangle(110 - ww, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("BL-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww, 37, 0, 0));
+ harness.check(textR, new Rectangle(10, 45 - hh, ww, hh));
+
+ harness.checkPoint("BC-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + (ww + 1) / 2, 37, 0, 0));
+ harness.check(textR, new Rectangle(60 - ww / 2, 45 - hh, ww, hh));
+
+ harness.checkPoint("BR-text");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110, 37, 0, 0));
+ harness.check(textR, new Rectangle(110 - ww, 45 - hh, ww, hh));
+
+ }
+
+ public void test1IconOnly(TestHarness harness)
+ {
+ JLabel label = new JLabel("X");
+ Font font = new Font("Dialog", Font.PLAIN, 12);
+ FontMetrics fm = label.getFontMetrics(font);
+ String text = null;
+ String displayText = "";
+ Icon icon = BasicIconFactory.getMenuArrowIcon();
+ int ww = icon.getIconWidth();
+ int hh = icon.getIconHeight();
+ Rectangle viewR = new Rectangle(10, 20, 100, 25);
+ Rectangle iconR = new Rectangle();
+ Rectangle textR = new Rectangle();
+
+ harness.checkPoint("TL-icon");
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(10, 24, 0, 0));
+ harness.check(iconR, new Rectangle(10, 20, ww, hh));
+
+ harness.checkPoint("TC-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(60 - ww / 2, 24, 0, 0));
+ harness.check(iconR, new Rectangle(60 - ww / 2, 20, ww, hh));
+
+ harness.checkPoint("TR-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(110 - ww, 24, 0, 0));
+ harness.check(iconR, new Rectangle(110 - ww, 20, ww, hh));
+
+ harness.checkPoint("CL-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(10, 32, 0, 0));
+ harness.check(iconR, new Rectangle(10, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CC-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(60 - ww / 2, 32, 0, 0));
+ harness.check(iconR, new Rectangle(60 - ww / 2, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CR-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(110 - ww, 32, 0, 0));
+ harness.check(iconR, new Rectangle(110 - ww, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("BL-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(10, 41, 0, 0));
+ harness.check(iconR, new Rectangle(10, 45 - hh, ww, hh));
+
+ harness.checkPoint("BC-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(60 - ww / 2, 41, 0, 0));
+ harness.check(iconR, new Rectangle(60 - ww / 2, 45 - hh, ww, hh));
+
+ harness.checkPoint("BR-icon");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(textR, new Rectangle(110 - ww, 41, 0, 0));
+ harness.check(iconR, new Rectangle(110 - ww, 45 - hh, ww, hh));
+ }
+
+ public void test1TextAndIconCL(TestHarness harness)
+ {
+ JLabel label = new JLabel("X");
+ Font font = new Font("Dialog", Font.PLAIN, 12);
+ FontMetrics fm = label.getFontMetrics(font);
+ String text = "X";
+ String displayText = "";
+ int ww = fm.stringWidth(text);
+ int hh = fm.getHeight();
+ Icon icon = BasicIconFactory.getMenuArrowIcon();
+ int iconW = icon.getIconWidth();
+ int iconH = icon.getIconHeight();
+ Rectangle viewR = new Rectangle(10, 20, 100, 25);
+ Rectangle iconR = new Rectangle();
+ Rectangle textR = new Rectangle();
+
+ harness.checkPoint("TL-CL");
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww + 3, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(10, 20, ww, hh));
+
+ harness.checkPoint("TC-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + ww / 2, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(60 - (ww + 1) / 2 - 3, 20, ww, hh));
+
+ harness.checkPoint("TR-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - iconW, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww - iconW - 3, 20, ww, hh));
+
+ harness.checkPoint("CL-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww + 3, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(10, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CC-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + ww / 2, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(60 - (ww + 1) / 2 - 3, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CR-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - iconW, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww - iconW - 3, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("BL-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, LEFT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10 + ww + 3, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(10, 45 - hh, ww, hh));
+
+ harness.checkPoint("BC-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, CENTER, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 + ww / 2, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(60 - (ww + 1) / 2 - 3, 45 - hh, ww, hh));
+
+ harness.checkPoint("BR-CL");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, RIGHT, CENTER, LEFT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - iconW, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww - iconW - 3, 45 - hh, ww, hh));
+ }
+
+ public void test1TextAndIconCR(TestHarness harness)
+ {
+ JLabel label = new JLabel("X");
+ Font font = new Font("Dialog", Font.PLAIN, 12);
+ FontMetrics fm = label.getFontMetrics(font);
+ String text = "X";
+ String displayText = "";
+ int ww = fm.stringWidth(text);
+ int hh = fm.getHeight();
+ Icon icon = BasicIconFactory.getMenuArrowIcon();
+ int iconW = icon.getIconWidth();
+ int iconH = icon.getIconHeight();
+ Rectangle viewR = new Rectangle(10, 20, 100, 25);
+ Rectangle iconR = new Rectangle();
+ Rectangle textR = new Rectangle();
+
+ harness.checkPoint("TL-CR");
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, LEFT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(10 + iconW + 3, 20, ww, hh));
+
+ harness.checkPoint("TC-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, CENTER, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 - (ww + 1) / 2 - 3, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(60 + (iconW + 3 + ww + 1) / 2 - ww, 20, ww, hh));
+
+ harness.checkPoint("TR-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, TOP, RIGHT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - ww - iconW - 3, 20 + ((hh - icon.getIconHeight()) / 2), iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww, 20, ww, hh));
+
+ harness.checkPoint("CL-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, LEFT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(10 + iconW + 3, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CC-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, CENTER, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 - (ww + 1) / 2 - 3, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(60 + (iconW + 3 + ww + 1) / 2 - ww, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("CR-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, CENTER, RIGHT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - ww - iconW - 3, 32 - iconH / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww, 32 - hh / 2, ww, hh));
+
+ harness.checkPoint("BL-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, LEFT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(10, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(10 + iconW + 3, 45 - hh, ww, hh));
+
+ harness.checkPoint("BC-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, CENTER, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(60 - (ww + 1) / 2 - 3, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(60 + (iconW + 3 + ww + 1) / 2 - ww, 45 - hh, ww, hh));
+
+ harness.checkPoint("BR-CR");
+ iconR = new Rectangle();
+ textR = new Rectangle();
+ displayText = SwingUtilities.layoutCompoundLabel(fm, text, icon, BOTTOM, RIGHT, CENTER, RIGHT, viewR, iconR, textR, 3);
+ harness.check(viewR, new Rectangle(10, 20, 100, 25));
+ harness.check(iconR, new Rectangle(110 - ww - iconW - 3, 45 - hh + (hh - iconH) / 2, iconW, iconH));
+ harness.check(textR, new Rectangle(110 - ww, 45 - hh, ww, hh));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/SwingUtilities/replaceUIActionMap.java b/gnu/testlet/javax/swing/SwingUtilities/replaceUIActionMap.java
new file mode 100644
index 00000000..5dfbc9b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/SwingUtilities/replaceUIActionMap.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.SwingUtilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ActionMap;
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.plaf.ActionMapUIResource;
+
+
+/**
+ * Some checks for the layoutCompoundLabel() method in the SwingUtilities
+ * class.
+ */
+public class replaceUIActionMap implements Testlet
+{
+
+ static int howManyMaps (JComponent t)
+ {
+ ActionMap curr = t.getActionMap();
+ int num = 0;
+ while (curr != null)
+ {
+ num ++;
+ curr = curr.getParent();
+ }
+ return num;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JTable t = new JTable();
+ harness.check(howManyMaps(t) == 2);
+
+ ActionMap map1 = SwingUtilities.getUIActionMap(t);
+ map1.setParent(new ActionMap());
+
+ harness.check(howManyMaps(t) == 3);
+
+ ActionMapUIResource map2 = new ActionMapUIResource();
+ SwingUtilities.replaceUIActionMap(t, map2);
+
+ harness.check(howManyMaps(t) == 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/Timer/CVS/Entries b/gnu/testlet/javax/swing/Timer/CVS/Entries
new file mode 100644
index 00000000..cf913bd7
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/CVS/Entries
@@ -0,0 +1,6 @@
+/basic.java/1.1/Thu Feb 24 10:24:49 2005//
+/preparatory.java/1.1/Thu Feb 24 10:24:49 2005//
+/setDelay.java/1.1/Mon Jul 10 05:17:35 2006//
+/setInitialDelay.java/1.1/Mon Jul 10 05:17:35 2006//
+/test_23918.java/1.1/Fri Sep 16 18:51:47 2005//
+D
diff --git a/gnu/testlet/javax/swing/Timer/CVS/Repository b/gnu/testlet/javax/swing/Timer/CVS/Repository
new file mode 100644
index 00000000..c7ad0d85
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/Timer
diff --git a/gnu/testlet/javax/swing/Timer/CVS/Root b/gnu/testlet/javax/swing/Timer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/Timer/basic.java b/gnu/testlet/javax/swing/Timer/basic.java
new file mode 100644
index 00000000..f3264dfb
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/basic.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.Timer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.*;
+
+import javax.swing.Timer;
+
+/**
+ * THIS TEST NEEDS FIVE SECONDS TO COMPLETE!
+ * The basic test of the swing timer.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class basic
+ implements Testlet, ActionListener
+{
+ /**
+ * The acceptable timer work accuracy in %.
+ */
+ public static int ACCEPTABLE_ACCURACY = 20;
+
+ static int EXPECTED_DELAY = 800;
+ static int EXPECTED_INITIAL_DELAY = 2000;
+
+ long history[] = new long[ 200 ];
+ int p = 1;
+ long started;
+ Thread main;
+
+ public void test(TestHarness harness)
+ {
+ main = Thread.currentThread();
+
+ Timer t = new Timer(EXPECTED_DELAY, this);
+
+ t.setCoalesce(false);
+
+ t.setInitialDelay(EXPECTED_INITIAL_DELAY);
+ t.setDelay(EXPECTED_DELAY);
+
+ System.gc();
+
+ history [ 0 ] = System.currentTimeMillis();
+
+ t.start();
+
+ try
+ {
+ Thread.sleep(5000);
+ }
+ catch (InterruptedException iex)
+ {
+ }
+
+ t.stop();
+
+ double S = 0;
+ long d;
+ StringBuffer series = new StringBuffer();
+
+
+ for (int i = 1; i < p; i++)
+ {
+ d = Math.abs((history [ i ] - history [ i - 1 ]) -
+ (i == 1 ? EXPECTED_INITIAL_DELAY : EXPECTED_DELAY)
+ );
+ series.append((history [ i ] - history [ i - 1 ])+" ");
+ S += d;
+ }
+
+ S = S / (p - 1);
+
+ int percentError = (int) (100 * S / EXPECTED_DELAY);
+
+ if (percentError > ACCEPTABLE_ACCURACY)
+ harness.fail("Inaccurate work, series "+series+", "
+ +percentError+
+ " % deviation from 2000 800 ..");
+ }
+
+ public void actionPerformed(ActionEvent parm1)
+ {
+ try
+ {
+ history [ p ] = System.currentTimeMillis();
+ p++;
+ Thread.sleep( (long) Math.random()*EXPECTED_DELAY );
+ }
+ catch (ArrayIndexOutOfBoundsException ex)
+ {
+ // Should never happen during the normal work, but
+ // is catched here to prevent test from the possible hanging.
+ main.interrupt();
+ }
+ catch (InterruptedException iex)
+ {
+ main.interrupt();
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/Timer/preparatory.java b/gnu/testlet/javax/swing/Timer/preparatory.java
new file mode 100644
index 00000000..704373eb
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/preparatory.java
@@ -0,0 +1,176 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.Timer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.Timer;
+
+/**
+ * A limiting simple test that does not actually attempt to
+ * start the timer, but checks other features of this class.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class preparatory
+ implements Testlet, ActionListener
+{
+ public static class otherListener
+ implements ActionListener
+ {
+ public void actionPerformed(ActionEvent parm1)
+ {
+ }
+ }
+
+ static int DELAY = 7777;
+ static int OTHER_DELAY = 5555;
+
+ Timer object = new Timer(DELAY, null);
+
+ /* Test the InitialDelay(). */
+ public void test_InitialDelay(TestHarness harness)
+ {
+ Timer t = new Timer(DELAY, null);
+
+ harness.check(t.getInitialDelay(), DELAY,
+ "Initial delay must be be a default value from constructor, "+
+ DELAY+", not "+object.getInitialDelay());
+
+ t.setInitialDelay(1);
+ harness.check(t.getInitialDelay(), 1,
+ "Initial delay must be set to 1 by setInitialDelay(1)");
+
+ t.setDelay(DELAY);
+ harness.check(t.getInitialDelay(), 1, "If the initial delay is "+
+ "explicitly set, setDelay() must not alter it.");
+ }
+
+ /* Test getDelay(). */
+ public void test_Delay(TestHarness harness)
+ {
+ harness.check(object.getDelay(), DELAY, "getDelay()");
+ object.setDelay(5);
+ harness.check(object.getDelay(), 5);
+ }
+
+ /* Test getListeners(Class). */
+ public void test_Listeners(TestHarness harness)
+ {
+ object.addActionListener(this);
+
+ harness.checkPoint("getListeners");
+
+ java.util.EventListener result[] =
+ object.getListeners(ActionListener.class);
+ harness.check(result.length == 1);
+ harness.check(result [ 0 ] == this);
+
+ result = object.getListeners(otherListener.class);
+ harness.check(result.length == 0);
+
+ object.removeActionListener(this);
+
+ harness.check(object.getListeners(ActionListener.class).length, 0,
+ "Removing listener"
+ );
+ }
+
+ /* Test isCoalesce(). */
+ public void test_Coalesce(TestHarness harness)
+ {
+ harness.checkPoint("isCoalesce");
+ object.setCoalesce(true);
+ harness.check(object.isCoalesce());
+ object.setCoalesce(false);
+ harness.check(!object.isCoalesce());
+ }
+
+ /* Test isRepeats(). */
+ public void test_Repeats(TestHarness harness)
+ {
+ harness.checkPoint("Repeats");
+
+ harness.check(object.isRepeats(), true, "isRepeats default value is true");
+
+ object.setRepeats(true);
+ harness.check(object.isRepeats());
+ object.setRepeats(false);
+ harness.check(!object.isRepeats());
+ }
+
+ /* Test isRunning(). */
+ public void test_isRunning(TestHarness harness)
+ {
+ harness.check(!object.isRunning(), " should not be running ");
+ }
+
+ /* Test removeActionListener(java.awt.event.ActionListener). */
+ public void test_add_removeActionListener(TestHarness harness)
+ {
+ harness.checkPoint("Adding/removing listeners");
+
+ Timer t = new Timer(1, this);
+ ActionListener other = new otherListener();
+ t.addActionListener(other);
+
+ harness.check(t.getActionListeners().length, 2, "must be 2 listeners");
+ t.removeActionListener(this);
+
+ harness.check(t.getActionListeners().length, 1, "must be 1 listener");
+
+ t.removeActionListener(new otherListener());
+
+ harness.check(t.getActionListeners().length, 1, "must still be 1 listener");
+
+ t.removeActionListener(other);
+ harness.check(t.getActionListeners().length, 0, "must be no listeners");
+ }
+
+ /* Test setLogTimers(boolean). */
+ public void test_LogTimers(TestHarness harness)
+ {
+ object.setLogTimers(true);
+ harness.check(object.getLogTimers(),"log timers");
+ object.setLogTimers(false);
+ harness.check(!object.getLogTimers());
+ }
+
+ public void test(TestHarness harness)
+ {
+ test_InitialDelay(harness);
+ test_Delay(harness);
+ test_Listeners(harness);
+ test_Coalesce(harness);
+ test_Repeats(harness);
+ test_isRunning(harness);
+ test_add_removeActionListener(harness);
+ test_LogTimers(harness);
+ }
+
+ public void actionPerformed(ActionEvent parm1)
+ {
+ }
+}
diff --git a/gnu/testlet/javax/swing/Timer/setDelay.java b/gnu/testlet/javax/swing/Timer/setDelay.java
new file mode 100644
index 00000000..3a8d08ab
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/setDelay.java
@@ -0,0 +1,64 @@
+/* setDelay.java -- some checks for the setDelay() method in the Timer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.Timer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.Timer;
+
+public class setDelay implements Testlet, ActionListener
+{
+
+ public void actionPerformed(ActionEvent event)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ Timer t = new Timer(100, this);
+ t.setDelay(123);
+ harness.check(t.getDelay(), 123);
+
+ // try zero
+ t.setDelay(0);
+ harness.check(t.getDelay(), 0);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ t.setDelay(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/Timer/setInitialDelay.java b/gnu/testlet/javax/swing/Timer/setInitialDelay.java
new file mode 100644
index 00000000..149f8603
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/setInitialDelay.java
@@ -0,0 +1,65 @@
+/* setInitialDelay.java -- some checks for the setInitialDelay() method in the
+ Timer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.Timer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.Timer;
+
+public class setInitialDelay implements Testlet, ActionListener
+{
+
+ public void actionPerformed(ActionEvent event)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ Timer t = new Timer(100, this);
+ t.setInitialDelay(123);
+ harness.check(t.getInitialDelay(), 123);
+
+ // try zero
+ t.setInitialDelay(0);
+ harness.check(t.getInitialDelay(), 0);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ t.setInitialDelay(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/Timer/test_23918.java b/gnu/testlet/javax/swing/Timer/test_23918.java
new file mode 100644
index 00000000..f5bacbad
--- /dev/null
+++ b/gnu/testlet/javax/swing/Timer/test_23918.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+
+/**
+ * Tests bug 23918 (on setRepeats(false) only one event must be
+ * fired.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+package gnu.testlet.javax.swing.Timer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.Timer;
+
+public class test_23918 implements Testlet, ActionListener
+{
+ int fired;
+ public void test(TestHarness harness)
+ {
+ fired = 0;
+ Timer timer = new Timer(50, this);
+ timer.setRepeats(false);
+ timer.start();
+ try
+ {
+ Thread.sleep(400);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ harness.check(fired, 1, "Must be fired exactly once.");
+ harness.check(timer.isRunning(), false, "Must not be terminated");
+ }
+
+ public void actionPerformed(ActionEvent parm1)
+ {
+ fired++;
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/ToolTipManager/CVS/Entries b/gnu/testlet/javax/swing/ToolTipManager/CVS/Entries
new file mode 100644
index 00000000..bf199a55
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/CVS/Entries
@@ -0,0 +1,5 @@
+/DynamicToolTipTest.java/1.1/Sat Oct 14 12:55:47 2006//
+/setDismissDelay.java/1.1/Mon Jul 10 05:17:35 2006//
+/setInitialDelay.java/1.1/Mon Jul 10 05:17:35 2006//
+/setReshowDelay.java/1.1/Mon Jul 10 05:17:35 2006//
+D
diff --git a/gnu/testlet/javax/swing/ToolTipManager/CVS/Repository b/gnu/testlet/javax/swing/ToolTipManager/CVS/Repository
new file mode 100644
index 00000000..22e3ee23
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/ToolTipManager
diff --git a/gnu/testlet/javax/swing/ToolTipManager/CVS/Root b/gnu/testlet/javax/swing/ToolTipManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/ToolTipManager/DynamicToolTipTest.java b/gnu/testlet/javax/swing/ToolTipManager/DynamicToolTipTest.java
new file mode 100644
index 00000000..a5788780
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/DynamicToolTipTest.java
@@ -0,0 +1,76 @@
+/* DynamicToolTipTest.java -- Tests dynamically updated tooltips
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.ToolTipManager;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JPanel;
+import javax.swing.ToolTipManager;
+
+import gnu.testlet.VisualTestlet;
+
+/**
+ * Tests if dynamic tooltips {@link JComponent.getToolTipText(MouseEvent)}
+ * work correctly.
+ *
+ * This is a regression test for bug:
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27957
+ */
+public class DynamicToolTipTest extends VisualTestlet
+{
+
+ public String getInstructions()
+ {
+ return "Move the mouse pointer over the empty panel. Wait for 1-2 seconds"
+ + " until the tooltip appears. Moving the mouse should update "
+ + "the tooltip text with the current mouse coordinates.";
+ }
+
+ public String getExpectedResults()
+ {
+ return "A tooltip should appear after 1-2 seconds. When the mouse is moved"
+ + " further, the tooltip text is updated with the mouse coordinates"
+ + " and the tooltip location follows the mouse pointer";
+ }
+
+ public Component getTestComponent()
+ {
+ JPanel p = new JPanel()
+ {
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(200, 200);
+ }
+ public String getToolTipText(MouseEvent ev)
+ {
+ return "" + ev.getX() + ", " + ev.getY();
+ }
+ };
+ ToolTipManager.sharedInstance().registerComponent(p);
+ return p;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/ToolTipManager/setDismissDelay.java b/gnu/testlet/javax/swing/ToolTipManager/setDismissDelay.java
new file mode 100644
index 00000000..e765a013
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/setDismissDelay.java
@@ -0,0 +1,56 @@
+/* setDismissDelay.java -- some checks for the setDismissDelay() method in the
+ ToolTipManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.ToolTipManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ToolTipManager;
+
+public class setDismissDelay implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ ToolTipManager m = ToolTipManager.sharedInstance();
+ m.setDismissDelay(123);
+ harness.check(m.getDismissDelay(), 123);
+
+ // try zero
+ m.setDismissDelay(0);
+ harness.check(m.getDismissDelay(), 0);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ m.setDismissDelay(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ToolTipManager/setInitialDelay.java b/gnu/testlet/javax/swing/ToolTipManager/setInitialDelay.java
new file mode 100644
index 00000000..0f80b4a3
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/setInitialDelay.java
@@ -0,0 +1,56 @@
+/* setInitialDelay.java -- some checks for the setInitialDelay() method in the
+ ToolTipManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.ToolTipManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ToolTipManager;
+
+public class setInitialDelay implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ ToolTipManager m = ToolTipManager.sharedInstance();
+ m.setInitialDelay(123);
+ harness.check(m.getInitialDelay(), 123);
+
+ // try zero
+ m.setInitialDelay(0);
+ harness.check(m.getInitialDelay(), 0);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ m.setInitialDelay(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/ToolTipManager/setReshowDelay.java b/gnu/testlet/javax/swing/ToolTipManager/setReshowDelay.java
new file mode 100644
index 00000000..5e29db4b
--- /dev/null
+++ b/gnu/testlet/javax/swing/ToolTipManager/setReshowDelay.java
@@ -0,0 +1,58 @@
+/* setReshowDelay.java -- some checks for the setReshowDelay() method in the
+ ToolTipManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.ToolTipManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ToolTipManager;
+
+public class setReshowDelay implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ ToolTipManager m = ToolTipManager.sharedInstance();
+ m.setInitialDelay(20);
+ m.setReshowDelay(123);
+ harness.check(m.getReshowDelay(), 123);
+ harness.check(m.getInitialDelay(), 20);
+
+ // try zero
+ m.setReshowDelay(0);
+ harness.check(m.getReshowDelay(), 0);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ m.setReshowDelay(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/TransferHandler/CVS/Entries b/gnu/testlet/javax/swing/TransferHandler/CVS/Entries
new file mode 100644
index 00000000..eb1ae3e2
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/CVS/Entries
@@ -0,0 +1,6 @@
+/TransferActionConstructor.java/1.1/Thu Jan 12 20:44:14 2006//
+/canImport.java/1.1/Mon Oct 16 14:47:51 2006//
+/createTransferable.java/1.1/Tue Oct 17 15:23:12 2006//
+/exportToClipboard.java/1.1/Tue Oct 17 20:11:28 2006//
+/importData.java/1.1/Sat Oct 28 10:30:00 2006//
+D
diff --git a/gnu/testlet/javax/swing/TransferHandler/CVS/Repository b/gnu/testlet/javax/swing/TransferHandler/CVS/Repository
new file mode 100644
index 00000000..26858359
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/TransferHandler
diff --git a/gnu/testlet/javax/swing/TransferHandler/CVS/Root b/gnu/testlet/javax/swing/TransferHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/TransferHandler/TransferActionConstructor.java b/gnu/testlet/javax/swing/TransferHandler/TransferActionConstructor.java
new file mode 100644
index 00000000..70a4b22c
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/TransferActionConstructor.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.TransferHandler;
+
+import javax.swing.Action;
+import javax.swing.TransferHandler;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks that the TransferAction constructor sets the Action.NAME property.
+ */
+public class TransferActionConstructor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Action a = TransferHandler.getCopyAction();
+ harness.check (a.getValue(Action.NAME).equals("copy"));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/TransferHandler/canImport.java b/gnu/testlet/javax/swing/TransferHandler/canImport.java
new file mode 100644
index 00000000..1f7edd9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/canImport.java
@@ -0,0 +1,166 @@
+/* canImport.java -- Checks the TransferHandler.canImport() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.TransferHandler;
+
+import java.awt.datatransfer.DataFlavor;
+
+import javax.swing.JComponent;
+import javax.swing.TransferHandler;
+
+import junit.framework.TestCase;
+
+/**
+ * Checks the TransferHandler.canImport() method.
+ */
+public class canImport extends TestCase
+{
+
+ /**
+ * The component for which we transfer data.
+ */
+ private JComponent component;
+
+ private DataFlavor[] flavors;
+
+ /**
+ * The TransferHandler.
+ */
+ private TransferHandler transferHandler;
+
+ /**
+ * Sets up the test environment.
+ */
+ public void setUp()
+ {
+ component = new JComponent()
+ {
+ String value;
+ public void setTestProperty(String val)
+ {
+ value = val;
+ }
+ public String getTestProperty()
+ {
+ return value;
+ }
+ };
+ transferHandler = new TransferHandler("testProperty");
+ try
+ {
+ DataFlavor flavor =
+ new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType
+ + ";class=java.lang.String");
+ flavors = new DataFlavor[]{ flavor };
+ }
+ catch (ClassNotFoundException x)
+ {
+ fail(x.getMessage());
+ }
+ }
+
+ /**
+ * Clears the test environment.
+ */
+ public void tearDown()
+ {
+ component = null;
+ transferHandler = null;
+ flavors = null;
+ }
+
+ /**
+ * Test a component that doesn't have a property reader method.
+ */
+ public void testComponentWithoutReader()
+ {
+ component = new JComponent()
+ {
+ String value;
+ public void setTestProperty(String val)
+ {
+ value = val;
+ }
+ };
+ boolean result = transferHandler.canImport(component, flavors);
+ assertFalse(result);
+ }
+
+ /**
+ * Test a component that doesn't have a property writer method.
+ */
+ public void testComponentWithoutWriter()
+ {
+ component = new JComponent()
+ {
+ String value;
+ public String getTestProperty()
+ {
+ return value;
+ }
+ };
+ boolean result = transferHandler.canImport(component, flavors);
+ assertFalse(result);
+ }
+
+ /**
+ * Test a wrong mime type in the data flavor.
+ */
+ public void testWrongMimeType()
+ {
+ DataFlavor flavor = DataFlavor.stringFlavor;
+ flavors = new DataFlavor[]{ flavor };
+ boolean result = transferHandler.canImport(component, flavors);
+ assertFalse(result);
+ }
+
+ /**
+ * Test a wrong representation class in the data flavor.
+ */
+ public void testWrongRepresentationClass()
+ {
+ try
+ {
+ DataFlavor flavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType
+ + ";class=java.awt.Component");
+ flavors = new DataFlavor[]{ flavor };
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail(ex.getMessage());
+ }
+ boolean result = transferHandler.canImport(component, flavors);
+ assertFalse(result);
+ }
+
+ /**
+ * Tests the return value when all parameters are ok (the component has
+ * the right properties, the dataflavor is of the correct mime-type and
+ * representation class).
+ */
+ public void testAllOK()
+ {
+ boolean result = transferHandler.canImport(component, flavors);
+ assertTrue(result);
+ }
+}
diff --git a/gnu/testlet/javax/swing/TransferHandler/createTransferable.java b/gnu/testlet/javax/swing/TransferHandler/createTransferable.java
new file mode 100644
index 00000000..c2815300
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/createTransferable.java
@@ -0,0 +1,246 @@
+/* createTransferable.java -- Tests TransferHandler.createTransferable()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.TransferHandler;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import javax.swing.JComponent;
+import javax.swing.TransferHandler;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the TransferHandler.createTransferable() method.
+ */
+public class createTransferable extends TestCase
+{
+
+ /**
+ * Overridden to make createTransferable() public for testing.
+ */
+ private class TestTransferHandler extends TransferHandler
+ {
+ TestTransferHandler(String prop)
+ {
+ super(prop);
+ }
+ public Transferable createTransferable(JComponent comp)
+ {
+ return super.createTransferable(comp);
+ }
+ }
+
+ public class TestComponent
+ extends JComponent
+ {
+ private String value;
+ public void setTestProperty(String val)
+ {
+ value = val;
+ }
+ public String getTestProperty()
+ {
+ return "HelloWorld";
+ }
+ }
+
+ /**
+ * The transfer handler that we test.
+ */
+ private TestTransferHandler transferHandler;
+
+ /**
+ * The component that is passed in the createTransferable() method.
+ */
+ private JComponent component;
+
+ public void setUp()
+ {
+ component = new TestComponent();
+ transferHandler = new TestTransferHandler("testProperty");
+ }
+
+ public void tearDown()
+ {
+ component = null;
+ transferHandler = null;
+ }
+
+ /**
+ * Check what is returned when we initialize the TransferHandler with a
+ * null property.
+ */
+ public void testNullProperty()
+ {
+ transferHandler = new TestTransferHandler(null);
+ Transferable transferable = transferHandler.createTransferable(component);
+ assertNull(transferable);
+ }
+
+ public void testMissingGetter()
+ {
+ component = new JComponent()
+ {
+ String value;
+ public void setTestProperty(String val)
+ {
+ value = val;
+ }
+ };
+ Transferable transferable = transferHandler.createTransferable(component);
+ assertNull(transferable);
+ }
+
+ public void testMissingSetter()
+ {
+ component = new JComponent()
+ {
+ String value;
+ public String getTestProperty()
+ {
+ return value;
+ }
+ };
+ Transferable transferable = transferHandler.createTransferable(component);
+ assertNotNull(transferable);
+ }
+
+ public void testAllOk()
+ {
+ Transferable transferable = transferHandler.createTransferable(component);
+ assertNotNull(transferable);
+ }
+
+ /**
+ * Tests which transfer flavors are supported by the created Transferable.
+ */
+ public void testTransferableTransferFlavors()
+ {
+ Transferable transferable = transferHandler.createTransferable(component);
+ DataFlavor[] flavors = transferable.getTransferDataFlavors();
+ assertEquals(1, flavors.length);
+ assertEquals("application/x-java-jvm-local-objectref; class=java.lang.String", flavors[0].getMimeType());
+ }
+
+ public void testTransferableDataFlavorSupported()
+ {
+ Transferable transferable = transferHandler.createTransferable(component);
+ try
+ {
+ // Primary type doesn't match.
+ DataFlavor flavor = new DataFlavor("xyz/x-java-jvm-local-objectref; class=java.lang.String");
+ assertFalse(transferable.isDataFlavorSupported(flavor));
+ // Subtype type doesn't match.
+ flavor = new DataFlavor("application/x-java-remote-object; class=java.lang.String");
+ assertFalse(transferable.isDataFlavorSupported(flavor));
+ // Representation class doesn't match.
+ flavor = new DataFlavor("application/x-java-jvm-local-objectref; class=java.lang.Integer");
+ assertFalse(transferable.isDataFlavorSupported(flavor));
+
+ // Good match.
+ flavor = new DataFlavor("application/x-java-jvm-local-objectref; class=java.lang.String");
+ assertTrue(transferable.isDataFlavorSupported(flavor));
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail(ex.getMessage());
+ }
+ }
+
+ public void testTransferableTransferData()
+ {
+ Transferable transferable = transferHandler.createTransferable(component);
+ // Try invalid data flavor.
+ try
+ {
+ DataFlavor flavor = new DataFlavor("xyz/x-java-jvm-local-objectref; class=java.lang.String");
+ Object data = transferable.getTransferData(flavor);
+ fail("UnsupportedOperationException must be thrown");
+ }
+ catch (UnsupportedFlavorException ex)
+ {
+ // Ok.
+ }
+ catch (IOException ex)
+ {
+ fail("UnsupportedFlavorException must be thrown, no IOException");
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail(ex.getMessage());
+ }
+
+ // Try OK data flavor.
+ try
+ {
+ DataFlavor flavor = new DataFlavor("application/x-java-jvm-local-objectref; class=java.lang.String");
+ Object data = transferable.getTransferData(flavor);
+ assertEquals(data, "HelloWorld");
+ }
+ catch (UnsupportedFlavorException ex)
+ {
+ fail("UnsupportedFlavorException must not be thrown");
+ }
+ catch (IOException ex)
+ {
+ System.err.println(ex.getMessage());
+ fail("IOException must not be thrown");
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail(ex.getMessage());
+ }
+ // Try non-accessible component.
+ component = new JComponent()
+ {
+ public String getTestProperty()
+ {
+ return "Hello World";
+ }
+ };
+ transferable = transferHandler.createTransferable(component);
+
+ try
+ {
+ DataFlavor flavor = new DataFlavor("application/x-java-jvm-local-objectref; class=java.lang.String");
+ Object data = transferable.getTransferData(flavor);
+ fail("IOException must be thrown");
+ }
+ catch (UnsupportedFlavorException ex)
+ {
+ fail("UnsupportedFlavorException must not be thrown");
+ }
+ catch (IOException ex)
+ {
+ // Ok.
+ }
+ catch (ClassNotFoundException ex)
+ {
+ fail(ex.getMessage());
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/TransferHandler/exportToClipboard.java b/gnu/testlet/javax/swing/TransferHandler/exportToClipboard.java
new file mode 100644
index 00000000..3a28837a
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/exportToClipboard.java
@@ -0,0 +1,238 @@
+/* exportToClipboard.java -- Tests TransferHandler.exportToClipboard()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.TransferHandler;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+
+import javax.swing.JComponent;
+import javax.swing.TransferHandler;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests TransferHandler.exportToClipboard().
+ */
+public class exportToClipboard extends TestCase
+{
+
+ /**
+ * Overrides setContents() to enable us to check what is passed to
+ * setContents().
+ */
+ private class TestClipboard
+ extends Clipboard
+ {
+ TestClipboard()
+ {
+ super("DEFAULT");
+ }
+ public void setContents(Transferable t, ClipboardOwner o)
+ {
+ super.setContents(t, o);
+ clipboardOwner = o;
+ }
+ }
+
+ /**
+ * Overrides exportDone() to enable checking when this is called and what
+ * is passed to it.
+ */
+ private class TestTransferHandler
+ extends TransferHandler
+ {
+ TestTransferHandler(String prop)
+ {
+ super(prop);
+ }
+ public void exportDone(JComponent c, Transferable t, int a)
+ {
+ exportDoneSource = c;
+ exportDoneTransferable = t;
+ exportDoneAction = a;
+ }
+
+ public int getSourceActions(JComponent c)
+ {
+ return sourceActions;
+ }
+ }
+
+ /**
+ * Adds a readonly property that returns a fixed value.
+ */
+ public class TestComponent
+ extends JComponent
+ {
+ public String getTestProperty()
+ {
+ return "HelloWorld";
+ }
+ }
+
+ // The value that will be returned by getSourceActions(), for testing.
+ int sourceActions;
+
+ // The values passed into exportDone for testing.
+ JComponent exportDoneSource;
+ Transferable exportDoneTransferable;
+ int exportDoneAction;
+
+ /**
+ * The clipboard owner beeing passed to Clipboard.stContents().
+ */
+ ClipboardOwner clipboardOwner;
+
+ /**
+ * The transfer handler used in these tests.
+ */
+ private TransferHandler transferHandler;
+
+ /**
+ * The component from which we export a property.
+ */
+ private JComponent component;
+
+ /**
+ * The clipboard to use.
+ */
+ private Clipboard clipboard;
+
+ /**
+ * Sets up the testcase.
+ */
+ public void setUp()
+ {
+ transferHandler = new TestTransferHandler("testProperty");
+ component = new TestComponent();
+ clipboard = new TestClipboard();
+ exportDoneAction = -1;
+ exportDoneSource = null;
+ exportDoneTransferable = null;
+ clipboardOwner = null;
+ }
+
+ /**
+ * Tears down the testcase.
+ */
+ public void tearDown()
+ {
+ transferHandler = null;
+ component = null;
+ clipboard = null;
+ exportDoneAction = -1;
+ exportDoneSource = null;
+ exportDoneTransferable = null;
+ clipboardOwner = null;
+ }
+
+ /**
+ * Checks how 'intersecting' source actions are handled.
+ */
+ public void testIntersectingSourceActions()
+ {
+ sourceActions = TransferHandler.COPY;
+ transferHandler.exportToClipboard(component, clipboard,
+ TransferHandler.MOVE);
+ assertNull(clipboard.getContents(this));
+ assertEquals(component, exportDoneSource);
+ assertNull(exportDoneTransferable);
+ assertEquals(TransferHandler.NONE, exportDoneAction);
+ }
+
+
+ /**
+ * Tests how a missing property getter method is handled.
+ */
+ public void testMissingGetter()
+ {
+ component = new JComponent(){};
+ sourceActions = TransferHandler.COPY;
+ transferHandler.exportToClipboard(component, clipboard,
+ TransferHandler.COPY);
+ assertNull(clipboard.getContents(this));
+ assertEquals(component, exportDoneSource);
+ assertNull(exportDoneTransferable);
+ assertEquals(TransferHandler.NONE, exportDoneAction);
+ }
+
+ /**
+ * Tests how a normal transfer is performed.
+ */
+ public void testNormalTransfer()
+ {
+ sourceActions = TransferHandler.COPY;
+ transferHandler.exportToClipboard(component, clipboard,
+ TransferHandler.COPY);
+ assertEquals(component, exportDoneSource);
+ assertNotNull(exportDoneTransferable);
+ assertSame(exportDoneTransferable, clipboard.getContents(this));
+
+ try
+ {
+ DataFlavor flavor = new DataFlavor("application/x-java-jvm-local-objectref; class=java.lang.String");
+ assertEquals("HelloWorld",
+ exportDoneTransferable.getTransferData(flavor));
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ fail(ex.getMessage());
+ }
+ assertEquals(TransferHandler.COPY, exportDoneAction);
+ assertNull(clipboardOwner);
+ }
+
+ /**
+ * Tests how an IllegalStateException from the ClipBoard is handled.
+ */
+ public void testIllegalStateException()
+ {
+ sourceActions = TransferHandler.COPY;
+ clipboard = new Clipboard("DEFAULT")
+ {
+ public void setContents(Transferable t, ClipboardOwner o)
+ {
+ throw new IllegalStateException();
+ }
+ };
+ try
+ {
+ transferHandler.exportToClipboard(component, clipboard,
+ TransferHandler.COPY);
+ fail("IllegalStateException must be thrown");
+ }
+ catch (IllegalStateException ex)
+ {
+ // Ok.
+ }
+
+ assertEquals(component, exportDoneSource);
+ assertNotNull(exportDoneTransferable);
+ assertEquals(TransferHandler.NONE, exportDoneAction);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/TransferHandler/importData.java b/gnu/testlet/javax/swing/TransferHandler/importData.java
new file mode 100644
index 00000000..fa0b8619
--- /dev/null
+++ b/gnu/testlet/javax/swing/TransferHandler/importData.java
@@ -0,0 +1,221 @@
+/* importData.java -- Tests the TransferHandler importData() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.TransferHandler;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import javax.swing.JComponent;
+import javax.swing.TransferHandler;
+
+import junit.framework.TestCase;
+import gnu.testlet.TestHarness;
+
+/**
+ * Tests the TransferHandler.importData() method.
+ */
+public class importData extends TestCase
+{
+
+ /**
+ * Implements test properties in JComponent.
+ */
+ public static class TestComponent extends JComponent
+ {
+ String property = null;
+ public void setTestProperty(String prop)
+ {
+ property = prop;
+ }
+ public String getTestProperty()
+ {
+ return property;
+ }
+ }
+
+ /**
+ * A Transferable used for our tests.
+ */
+ static class TestTransferable implements Transferable
+ {
+
+ public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
+ {
+ return "Hello World";
+ }
+
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ try
+ {
+ DataFlavor flavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType
+ + "; class=java.lang.String");
+ return new DataFlavor[]{ flavor };
+ }
+ catch (ClassNotFoundException ex)
+ {
+ throw new InternalError();
+ }
+ }
+
+ public boolean isDataFlavorSupported(DataFlavor flavor)
+ {
+ return flavor.getPrimaryType().equals("application")
+ && flavor.getSubType().equals("x-java-jvm-local-objectref")
+ && flavor.getRepresentationClass().equals("java.lang.String");
+ }
+
+ }
+
+ /**
+ * The component to which we transfer.
+ */
+ private JComponent component;
+
+ /**
+ * The transfer handler that we use.
+ */
+ private TransferHandler transferHandler;
+
+ /**
+ * The transferable that gets transferred.
+ */
+ private Transferable transferable;
+
+ /**
+ * Sets up the test case.
+ */
+ public void setUp()
+ {
+ component = new TestComponent();
+ transferHandler = new TransferHandler("testProperty");
+ transferable = new TestTransferable();
+ }
+
+ /**
+ * Tears down the test case.
+ */
+ public void tearDown()
+ {
+ component = null;
+ transferHandler = null;
+ transferable = null;
+ }
+
+ /**
+ * Tests a normal transfer.
+ */
+ public void testOK()
+ {
+ boolean ok = transferHandler.importData(component, transferable);
+ assertTrue(ok);
+ assertEquals(((TestComponent) component).getTestProperty(),
+ "Hello World");
+ }
+
+ /**
+ * Tests a transfer with a transferable that does not support the correct
+ * flavor.
+ */
+ public void testWrongFlavor()
+ {
+ transferable = new TestTransferable()
+ {
+ public DataFlavor[] getTransferDataFlavors()
+ {
+ return new DataFlavor[0];
+ }
+ };
+ boolean ok = transferHandler.importData(component, transferable);
+ assertFalse(ok);
+ assertNull(((TestComponent) component).getTestProperty());
+ }
+
+ /**
+ * Tests a transfer to a component that doesn't have the correct property
+ * write method.
+ */
+ public void testInvalidWriter()
+ {
+ component = new JComponent()
+ {
+ public void setTestProperty(String prop, int i)
+ {
+
+ }
+ public String getTestProperty()
+ {
+ return "test";
+ }
+ };
+ boolean ok = transferHandler.importData(component, transferable);
+ assertFalse(ok);
+ }
+
+ /**
+ * Tests a transfer to a component without the property writer.
+ */
+ public void testMissingPropertyWriter()
+ {
+ component = new JComponent()
+ {
+ public String getTestProperty()
+ {
+ return "test";
+ }
+ };
+ boolean ok = transferHandler.importData(component, transferable);
+ assertFalse(ok);
+ }
+
+ /**
+ * Tests a transfer to a component without the property reader.
+ */
+ public void testMissingPropertyReader()
+ {
+ component = new JComponent()
+ {
+ public void setTestProperty(String prop)
+ {
+
+ }
+ };
+ boolean ok = transferHandler.importData(component, transferable);
+ assertFalse(ok);
+ }
+
+ /**
+ * Tests a transfer with a TransferHandler initialized with a null
+ * property.
+ */
+ public void testNullProperty()
+ {
+ transferHandler = new TransferHandler(null);
+ boolean ok = transferHandler.importData(component, transferable);
+ assertFalse(ok);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIDefaults/CVS/Entries b/gnu/testlet/javax/swing/UIDefaults/CVS/Entries
new file mode 100644
index 00000000..4ea9aa9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/CVS/Entries
@@ -0,0 +1,4 @@
+/getBoolean.java/1.1/Thu Oct 13 07:20:46 2005//
+/putDefaults.java/1.1/Wed Apr 6 20:40:43 2005//
+/remove.java/1.1/Sun Jan 9 19:02:22 2005//
+D
diff --git a/gnu/testlet/javax/swing/UIDefaults/CVS/Repository b/gnu/testlet/javax/swing/UIDefaults/CVS/Repository
new file mode 100644
index 00000000..de5dc629
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/UIDefaults
diff --git a/gnu/testlet/javax/swing/UIDefaults/CVS/Root b/gnu/testlet/javax/swing/UIDefaults/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/UIDefaults/getBoolean.java b/gnu/testlet/javax/swing/UIDefaults/getBoolean.java
new file mode 100644
index 00000000..54b71677
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/getBoolean.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.UIDefaults;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+
+/**
+ * Tests the getBoolean() methods in the {@link UIDefaults} class.
+ */
+public class getBoolean implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ UIDefaults defaults = new UIDefaults();
+ defaults.put("B1", Boolean.FALSE);
+ defaults.put("B2", Boolean.TRUE);
+ defaults.put("B3", "X");
+ harness.check(defaults.getBoolean("B1"), false);
+ harness.check(defaults.getBoolean("B2"), true);
+ harness.check(defaults.getBoolean("B3"), false);
+ harness.check(defaults.getBoolean("B4"), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIDefaults/putDefaults.java b/gnu/testlet/javax/swing/UIDefaults/putDefaults.java
new file mode 100644
index 00000000..69093227
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/putDefaults.java
@@ -0,0 +1,50 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Thomas Zander <zander@kde.org>
+
+//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.javax.swing.UIDefaults;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+
+/**
+ * Tests if the UIDefaults accept null values and removes the key if null
+ * values are beeing put into the Hashtable.
+ */
+public class putDefaults implements Testlet {
+
+ public void test(TestHarness harness) {
+ UIDefaults def = new UIDefaults();
+
+ def.putDefaults(new Object[]{"foo", "bar"});
+ harness.check(def.get("foo"), "bar", "simple get");
+ def.putDefaults(new Object[]{"foo", null});
+ try {
+ def.put("foo", null);
+ Object val = def.get("foo");
+ harness.check(val, (Object) null,
+ "putDefaults null equals remove");
+ } catch(NullPointerException e) {
+ harness.fail("putDefaults with null gave NullPointerException");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIDefaults/remove.java b/gnu/testlet/javax/swing/UIDefaults/remove.java
new file mode 100644
index 00000000..50b1fac0
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIDefaults/remove.java
@@ -0,0 +1,46 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Thomas Zander <zander@kde.org>
+
+//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.javax.swing.UIDefaults;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+
+public class remove implements Testlet {
+
+ public void test(TestHarness harness) {
+ UIDefaults def = new UIDefaults();
+ def.put("foo", "bar");
+ def.put("foo2", "bar2");
+ harness.check(def.get("foo"), "bar", "simple get");
+ harness.check(def.get("foo2"), "bar2");
+ try {
+ def.put("foo", null);
+ harness.check(def.get("foo"), (Object) null, "put null equals remove");
+ } catch(NullPointerException e) {
+ harness.fail("put with null gave NullPointerException");
+ }
+ harness.checkPoint("rest intact?");
+ harness.check(def.get("foo2"), "bar2");
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/CVS/Entries b/gnu/testlet/javax/swing/UIManager/CVS/Entries
new file mode 100644
index 00000000..00a92685
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/CVS/Entries
@@ -0,0 +1,22 @@
+/MyLookAndFeel.java/1.2/Tue Oct 18 15:23:24 2005//
+/TestLabelUI.java/1.1/Tue Oct 18 15:23:24 2005//
+/addAuxiliaryLookAndFeel.java/1.1/Tue Aug 23 13:53:36 2005//
+/addPropertyChangeListener.java/1.2/Sat Jan 28 22:30:10 2006//
+/getAuxiliaryLookAndFeels.java/1.1/Tue Aug 23 13:53:36 2005//
+/getBoolean.java/1.1/Wed Sep 6 15:29:40 2006//
+/getBorder.java/1.1/Wed Sep 6 15:29:40 2006//
+/getColor.java/1.1/Wed Sep 6 15:29:40 2006//
+/getCrossPlatformLookAndFeelClassName.java/1.1/Tue Aug 23 13:53:36 2005//
+/getDefaults.java/1.1/Tue Aug 23 13:53:36 2005//
+/getDimension.java/1.1/Wed Sep 6 15:29:40 2006//
+/getFont.java/1.1/Wed Sep 6 15:29:40 2006//
+/getIcon.java/1.1/Wed Sep 6 15:29:40 2006//
+/getInsets.java/1.1/Wed Sep 6 15:29:40 2006//
+/getInt.java/1.1/Wed Sep 6 15:29:40 2006//
+/getLookAndFeelDefaults.java/1.1/Tue Aug 23 13:53:36 2005//
+/getPropertyChangeListeners.java/1.2/Sat Jan 28 22:30:10 2006//
+/getString.java/1.1/Wed Sep 6 15:29:40 2006//
+/getUI.java/1.4/Wed May 21 13:30:48 2008//
+/removeAuxiliaryLookAndFeel.java/1.1/Tue Aug 23 13:53:36 2005//
+/setLookAndFeel.java/1.1/Tue Aug 23 13:53:36 2005//
+D
diff --git a/gnu/testlet/javax/swing/UIManager/CVS/Entries.Log b/gnu/testlet/javax/swing/UIManager/CVS/Entries.Log
new file mode 100644
index 00000000..0c898765
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/LookAndFeelInfo////
diff --git a/gnu/testlet/javax/swing/UIManager/CVS/Repository b/gnu/testlet/javax/swing/UIManager/CVS/Repository
new file mode 100644
index 00000000..37457df2
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/UIManager
diff --git a/gnu/testlet/javax/swing/UIManager/CVS/Root b/gnu/testlet/javax/swing/UIManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Entries b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Entries
new file mode 100644
index 00000000..7bba186d
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Tue Aug 23 14:02:38 2005//
+D
diff --git a/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Repository b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Repository
new file mode 100644
index 00000000..3403f4fd
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo
diff --git a/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Root b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/constructor.java b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/constructor.java
new file mode 100644
index 00000000..31d27391
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/LookAndFeelInfo/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager.LookAndFeelInfo;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager.LookAndFeelInfo;
+
+/**
+ * Tests the constructor for the {@link LookAndFeelInfo} class.
+ */
+public class constructor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ LookAndFeelInfo lafi = new LookAndFeelInfo("name", "class.name");
+ harness.check(lafi.getName(), "name");
+ harness.check(lafi.getClassName(), "class.name");
+
+ // try null name
+ lafi = new LookAndFeelInfo(null, "class.name");
+ harness.check(lafi.getName(), null);
+
+ // try null class
+ lafi = new LookAndFeelInfo("name", null);
+ harness.check(lafi.getClassName(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java b/gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java
new file mode 100644
index 00000000..4297d497
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/MyLookAndFeel.java
@@ -0,0 +1,53 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIDefaults;
+
+/**
+ * A minimal look and feel class for use in testing.
+ */
+public class MyLookAndFeel extends LookAndFeel {
+ public MyLookAndFeel() {
+ }
+ public String getDescription() {
+ return "MyLookAndFeel Description";
+ }
+ public String getID() {
+ return "MyLookAndFeel ID";
+ }
+ public String getName() {
+ return "MyLookAndFeel Name";
+ }
+ public boolean isNativeLookAndFeel() {
+ return false;
+ }
+ public boolean isSupportedLookAndFeel() {
+ return true;
+ }
+ public UIDefaults getDefaults()
+ {
+ UIDefaults def = new UIDefaults();
+ def.put("LabelUI", "gnu.testlet.javax.swing.UIManager.TestLabelUI");
+ return def;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/TestLabelUI.java b/gnu/testlet/javax/swing/UIManager/TestLabelUI.java
new file mode 100644
index 00000000..050b4ac5
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/TestLabelUI.java
@@ -0,0 +1,40 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.UIManager;
+
+import javax.swing.JComponent;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.LabelUI;
+
+/**
+ * A minimal UI for JLabel for testing.
+ */
+public class TestLabelUI extends LabelUI {
+ static boolean installUICalled = false;
+ public void installUI(JComponent c)
+ {
+ super.installUI(c);
+ installUICalled = true;
+ }
+ public static ComponentUI createUI(JComponent c)
+ {
+ return new TestLabelUI();
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/addAuxiliaryLookAndFeel.java b/gnu/testlet/javax/swing/UIManager/addAuxiliaryLookAndFeel.java
new file mode 100644
index 00000000..78175114
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/addAuxiliaryLookAndFeel.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+
+/**
+ * Tests the addAuxiliaryLookAndFeel() method in the {@link UIManager} class.
+ */
+public class addAuxiliaryLookAndFeel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ LookAndFeel laf = new MyLookAndFeel();
+ harness.check(UIManager.getAuxiliaryLookAndFeels(), null);
+ UIManager.addAuxiliaryLookAndFeel(laf);
+ LookAndFeel[] auxLafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(auxLafs.length, 1);
+ harness.check(auxLafs[0], laf);
+ UIManager.removeAuxiliaryLookAndFeel(laf); // clean up
+
+ // try adding a null LAF
+ boolean pass = false;
+ try
+ {
+ UIManager.addAuxiliaryLookAndFeel(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java b/gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java
new file mode 100644
index 00000000..44b602cf
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/addPropertyChangeListener.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.UIManager;
+
+/**
+ * Tests the addPropertyChangeListener() method in the {@link UIManager} class.
+ */
+public class addPropertyChangeListener
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that there are no listeners
+ PropertyChangeListener[] listeners = UIManager.getPropertyChangeListeners();
+ int count = listeners.length;
+
+ // now add a listener
+ UIManager.addPropertyChangeListener(this);
+ listeners = UIManager.getPropertyChangeListeners();;
+ harness.check(listeners.length, count + 1);
+ harness.check(listeners[count], this);
+
+ // try adding a null listener - it gets silently ignored
+ UIManager.addPropertyChangeListener(null);
+ harness.check(listeners.length, count + 1);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing - there are tests elsewhere that will verify that the event
+ // is actually called
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getAuxiliaryLookAndFeels.java b/gnu/testlet/javax/swing/UIManager/getAuxiliaryLookAndFeels.java
new file mode 100644
index 00000000..f7451dae
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getAuxiliaryLookAndFeels.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+
+/**
+ * Some checks for the getAuxiliaryLookAndFeels() method in the
+ * {@link UIManager} class.
+ */
+public class getAuxiliaryLookAndFeels implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ LookAndFeel[] lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs, null);
+
+ LookAndFeel laf = new MyLookAndFeel();
+ UIManager.addAuxiliaryLookAndFeel(laf);
+ lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs.length, 1);
+ harness.check(lafs[0], laf);
+ UIManager.removeAuxiliaryLookAndFeel(laf);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getBoolean.java b/gnu/testlet/javax/swing/UIManager/getBoolean.java
new file mode 100644
index 00000000..40c02cb3
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getBoolean.java
@@ -0,0 +1,99 @@
+/* getBoolean.java -- some checks for the getBoolean() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getBoolean implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getBoolean("ScrollBar.allowsAbsolutePositioning"),
+ true);
+ UIManager.put("ScrollBar.allowsAbsolutePositioning", Boolean.FALSE);
+ harness.check(UIManager.getBoolean("ScrollBar.allowsAbsolutePositioning"),
+ false);
+ UIManager.put("ScrollBar.allowsAbsolutePositioning", null);
+ harness.check(UIManager.getBoolean("ScrollBar.allowsAbsolutePositioning"),
+ true);
+
+ // check an item that is not a boolean - it should return false
+ harness.check(UIManager.getBoolean("ScrollBar.darkShadow"), false);
+
+ // check an item that doesn't exist - it should return false
+ harness.check(UIManager.getBoolean("XXXXXXXXXXXXXXXXX"), false);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getBoolean(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getBoolean(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getBorder.java b/gnu/testlet/javax/swing/UIManager/getBorder.java
new file mode 100644
index 00000000..0e1808b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getBorder.java
@@ -0,0 +1,98 @@
+/* getBorder.java -- some checks for the getBorder() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getBorder implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getBorder("Button.border") instanceof Border);
+ UIManager.put("Button.border", new EmptyBorder(1, 1, 1, 1));
+ harness.check(UIManager.getBorder("Button.border") instanceof EmptyBorder);
+ UIManager.put("Button.border", null);
+ harness.check(UIManager.getBorder("Button.border") instanceof Border);
+
+ // check an item that is not a border - it should return null
+ harness.check(UIManager.getBorder("ScrollBar.darkShadow"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getBorder("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getBorder(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getBorder(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getColor.java b/gnu/testlet/javax/swing/UIManager/getColor.java
new file mode 100644
index 00000000..f74d71c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getColor.java
@@ -0,0 +1,100 @@
+/* getColor.java -- some checks for the getColor() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getColor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getColor("Button.background")
+ instanceof ColorUIResource);
+ UIManager.put("Button.background", Color.red);
+ harness.check(UIManager.getColor("Button.background"), Color.red);
+ UIManager.put("Button.background", null);
+ harness.check(UIManager.getColor("Button.background")
+ instanceof ColorUIResource);
+
+ // check an item that is not a color - it should return null
+ harness.check(UIManager.getColor("Button.border"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getBorder("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getColor(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getColor(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getCrossPlatformLookAndFeelClassName.java b/gnu/testlet/javax/swing/UIManager/getCrossPlatformLookAndFeelClassName.java
new file mode 100644
index 00000000..5fe7b9da
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getCrossPlatformLookAndFeelClassName.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+
+/**
+ * Tests the getCrossPlatformLookAndFeelClassName() method in the
+ * {@link UIManager} class.
+ */
+public class getCrossPlatformLookAndFeelClassName implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(UIManager.getCrossPlatformLookAndFeelClassName(),
+ "javax.swing.plaf.metal.MetalLookAndFeel");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getDefaults.java b/gnu/testlet/javax/swing/UIManager/getDefaults.java
new file mode 100644
index 00000000..8c5d22ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getDefaults.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Tests the getDefaults() method in the {@link UIManager} class.
+ */
+public class getDefaults implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ // here I'm checking that the same object is returned from subsequent
+ // calls - because it seems obvious that the UIDefaults are cached
+ UIDefaults d1 = UIManager.getDefaults();
+ UIDefaults d2 = UIManager.getDefaults();
+ harness.check(d1 == d2);
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ harness.fail(e.toString());
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getDimension.java b/gnu/testlet/javax/swing/UIManager/getDimension.java
new file mode 100644
index 00000000..7ae4823a
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getDimension.java
@@ -0,0 +1,100 @@
+/* getDimension.java -- some checks for the getDimension() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getDimension implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getDimension("ScrollBar.minimumThumbSize"),
+ new Dimension(8, 8));
+ UIManager.put("ScrollBar.minimumThumbSize", new Dimension(1, 2));
+ harness.check(UIManager.getDimension("ScrollBar.minimumThumbSize"),
+ new Dimension(1, 2));
+ UIManager.put("ScrollBar.minimumThumbSize", null);
+ harness.check(UIManager.getDimension("ScrollBar.minimumThumbSize"),
+ new Dimension(8, 8));
+
+ // check an item that is not a dimension - it should return null
+ harness.check(UIManager.getDimension("Button.border"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getDimension("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getDimension(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getDimension(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getFont.java b/gnu/testlet/javax/swing/UIManager/getFont.java
new file mode 100644
index 00000000..5207f5be
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getFont.java
@@ -0,0 +1,99 @@
+/* getFont.java -- some checks for the getFont() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getFont implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getFont("Button.font") instanceof FontUIResource);
+ UIManager.put("Button.font", new Font("Dialog", Font.BOLD, 7));
+ harness.check(UIManager.getFont("Button.font"), new Font("Dialog",
+ Font.BOLD, 7));
+ UIManager.put("Button.font", null);
+ harness.check(UIManager.getFont("Button.font") instanceof FontUIResource);
+
+ // check an item that is not a font - it should return null
+ harness.check(UIManager.getFont("Button.border"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getFont("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getFont(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getFont(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getIcon.java b/gnu/testlet/javax/swing/UIManager/getIcon.java
new file mode 100644
index 00000000..82d7e2d3
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getIcon.java
@@ -0,0 +1,102 @@
+/* getIcon.java -- some checks for the getIcon() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.Icon;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getIcon("FileChooser.detailsViewIcon")
+ instanceof Icon);
+ Icon icon = MetalIconFactory.getHorizontalSliderThumbIcon();
+ UIManager.put("FileChooser.detailsViewIcon", icon);
+ harness.check(UIManager.getIcon("FileChooser.detailsViewIcon"), icon);
+ UIManager.put("FileChooser.detailsViewIcon", null);
+ harness.check(UIManager.getIcon("FileChooser.detailsViewIcon")
+ instanceof Icon);
+ harness.check(UIManager.getIcon("FileChooser.detailsViewIcon") != icon);
+
+ // check an item that is not a font - it should return null
+ harness.check(UIManager.getIcon("Button.border"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getIcon("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getIcon(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getIcon(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getInsets.java b/gnu/testlet/javax/swing/UIManager/getInsets.java
new file mode 100644
index 00000000..b88ac0e5
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getInsets.java
@@ -0,0 +1,100 @@
+/* getInsets.java -- some checks for the getInsets() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.InsetsUIResource;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getInsets implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getInsets("Button.margin")
+ instanceof InsetsUIResource);
+ UIManager.put("Button.margin", new Insets(1, 2, 3, 4));
+ harness.check(UIManager.getInsets("Button.margin"), new Insets(1, 2, 3, 4));
+ UIManager.put("Button.margin", null);
+ harness.check(UIManager.getInsets("Button.margin")
+ instanceof InsetsUIResource);
+
+ // check an item that is not an Insets - it should return null
+ harness.check(UIManager.getInsets("Button.border"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getInsets("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getInsets(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getInsets(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getInt.java b/gnu/testlet/javax/swing/UIManager/getInt.java
new file mode 100644
index 00000000..c4377156
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getInt.java
@@ -0,0 +1,96 @@
+/* getInt.java -- some checks for the getInt() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getInt implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getInt("Button.textIconGap"), 4);
+ UIManager.put("Button.textIconGap", new Integer(999));
+ harness.check(UIManager.getInt("Button.textIconGap"), 999);
+ UIManager.put("Button.textIconGap", null);
+ harness.check(UIManager.getInt("Button.textIconGap"), 4);
+
+ // check an item that is not a boolean - it should return false
+ harness.check(UIManager.getInt("ScrollBar.darkShadow"), 0);
+
+ // check an item that doesn't exist - it should return false
+ harness.check(UIManager.getInt("XXXXXXXXXXXXXXXXX"), 0);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getInt(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getInt(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getLookAndFeelDefaults.java b/gnu/testlet/javax/swing/UIManager/getLookAndFeelDefaults.java
new file mode 100644
index 00000000..a9604fa2
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getLookAndFeelDefaults.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Tests the getLookAndFeelDefaults() method in the
+ * {@link UIManager} class.
+ */
+public class getLookAndFeelDefaults implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ // here I'm checking that the same object is returned from subsequent
+ // calls - because it seems obvious that the UIDefaults are cached
+ UIDefaults d1 = UIManager.getLookAndFeelDefaults();
+ UIDefaults d2 = UIManager.getLookAndFeelDefaults();
+ harness.check(d1 == d2);
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ harness.fail(e.toString());
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java b/gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java
new file mode 100644
index 00000000..3ea28b8c
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getPropertyChangeListeners.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.UIManager;
+
+/**
+ * Tests the getPropertyChangeListeners() method in the {@link UIManager} class.
+ */
+public class getPropertyChangeListeners
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // check that there are no listeners
+ PropertyChangeListener[] listeners = UIManager.getPropertyChangeListeners();
+ int count = listeners.length;
+
+ // now add a listener
+ UIManager.addPropertyChangeListener(this);
+ listeners = UIManager.getPropertyChangeListeners();;
+ harness.check(listeners.length, count + 1);
+ harness.check(listeners[count], this);
+
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing - there are tests elsewhere that will verify that the event
+ // is actually called
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getString.java b/gnu/testlet/javax/swing/UIManager/getString.java
new file mode 100644
index 00000000..2446261a
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getString.java
@@ -0,0 +1,99 @@
+/* getString.java -- some checks for the getString() methods in the
+ UIManager class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class getString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ harness.check(UIManager.getString("OptionPane.errorSound"),
+ "sounds/OptionPaneError.wav");
+ UIManager.put("OptionPane.errorSound", "ABC");
+ harness.check(UIManager.getString("OptionPane.errorSound"),
+ "ABC");
+ UIManager.put("OptionPane.errorSound", null);
+ harness.check(UIManager.getString("OptionPane.errorSound"),
+ "sounds/OptionPaneError.wav");
+
+ // check an item that is not a String - it should return null
+ harness.check(UIManager.getString("ScrollBar.darkShadow"), null);
+
+ // check an item that doesn't exist - it should return null
+ harness.check(UIManager.getString("XXXXXXXXXXXXXXXXX"), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getString(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, Locale)");
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ UIManager.getString(null, Locale.getDefault());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/getUI.java b/gnu/testlet/javax/swing/UIManager/getUI.java
new file mode 100644
index 00000000..2d1d77aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/getUI.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+// Uses: MyLookAndFeel TestLabelUI
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.LabelUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getUI() method in the
+ * {@link UIManager} class.
+ */
+public class getUI implements Testlet {
+
+ class TestLabel extends JLabel
+ {
+ public void setUI(LabelUI ui)
+ {
+ // Overridden for test.
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MyLookAndFeel());
+ }
+ catch (Exception ex)
+ {
+ harness.fail(ex.getMessage());
+ }
+
+ TestLabel l = new TestLabel();
+ UIManager.getUI(l);
+ harness.check(TestLabelUI.installUICalled, false);
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/removeAuxiliaryLookAndFeel.java b/gnu/testlet/javax/swing/UIManager/removeAuxiliaryLookAndFeel.java
new file mode 100644
index 00000000..b20a2ee6
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/removeAuxiliaryLookAndFeel.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.4
+// Uses: MyLookAndFeel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+
+/**
+ * Tests the removeAuxiliaryLookAndFeel() method in the {@link UIManager} class.
+ */
+public class removeAuxiliaryLookAndFeel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ LookAndFeel laf = new MyLookAndFeel();
+ harness.check(UIManager.getAuxiliaryLookAndFeels(), null);
+ UIManager.addAuxiliaryLookAndFeel(laf);
+ LookAndFeel[] auxLafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(auxLafs.length, 1);
+ harness.check(auxLafs[0], laf);
+ boolean b = UIManager.removeAuxiliaryLookAndFeel(laf);
+ harness.check(b, true);
+ harness.check(UIManager.getAuxiliaryLookAndFeels(), null);
+
+ // try removing a null LAF
+ boolean pass = true;
+ try
+ {
+ b = UIManager.removeAuxiliaryLookAndFeel(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ harness.check(b, false);
+ }
+
+ /**
+ * Here we check that removing a LAF preserves the order of the remaining
+ * LAFs.
+ *
+ * @param harness
+ */
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ // first check that we are starting with 0 auxiliary LAFs
+ harness.check(UIManager.getAuxiliaryLookAndFeels(), null);
+
+ LookAndFeel laf1 = new MyLookAndFeel();
+ LookAndFeel laf2 = new MyLookAndFeel();
+ LookAndFeel laf3 = new MyLookAndFeel();
+ LookAndFeel laf4 = new MyLookAndFeel();
+
+ UIManager.addAuxiliaryLookAndFeel(laf1);
+ UIManager.addAuxiliaryLookAndFeel(laf2);
+ UIManager.addAuxiliaryLookAndFeel(laf3);
+ UIManager.addAuxiliaryLookAndFeel(laf4);
+
+ UIManager.removeAuxiliaryLookAndFeel(laf2);
+ LookAndFeel[] lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs[0], laf1);
+ harness.check(lafs[1], laf3);
+ harness.check(lafs[2], laf4);
+
+ UIManager.removeAuxiliaryLookAndFeel(laf1);
+ lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs[0], laf3);
+ harness.check(lafs[1], laf4);
+
+ UIManager.removeAuxiliaryLookAndFeel(laf4);
+ lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs[0], laf3);
+
+ UIManager.removeAuxiliaryLookAndFeel(laf3);
+ lafs = UIManager.getAuxiliaryLookAndFeels();
+ harness.check(lafs, null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/UIManager/setLookAndFeel.java b/gnu/testlet/javax/swing/UIManager/setLookAndFeel.java
new file mode 100644
index 00000000..f1e6d85e
--- /dev/null
+++ b/gnu/testlet/javax/swing/UIManager/setLookAndFeel.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.UIManager;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+/**
+ * Some checks for the setLookAndFeel() method in the
+ * {@link UIManager} class.
+ */
+public class setLookAndFeel
+ implements Testlet, PropertyChangeListener {
+
+ public PropertyChangeEvent lastEvent = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ LookAndFeel laf1 = new MyLookAndFeel();
+ try
+ {
+ UIManager.addPropertyChangeListener(this);
+ UIManager.setLookAndFeel(laf1);
+ harness.check(UIManager.getLookAndFeel(), laf1);
+ harness.check(this.lastEvent.getPropertyName(), "lookAndFeel");
+ harness.check(this.lastEvent.getSource(), UIManager.class);
+ harness.check(this.lastEvent.getNewValue(), laf1);
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ harness.fail(e.toString());
+ }
+
+ try
+ {
+ UIManager.setLookAndFeel((LookAndFeel) null);
+ harness.check(UIManager.getLookAndFeel(), null);
+ harness.check(this.lastEvent.getPropertyName(), "lookAndFeel");
+ harness.check(this.lastEvent.getSource(), UIManager.class);
+ harness.check(this.lastEvent.getOldValue(), laf1);
+ harness.check(this.lastEvent.getNewValue(), null);
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ harness.fail(e.toString());
+ }
+
+ UIManager.removePropertyChangeListener(this);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.lastEvent = e;
+ }
+}
diff --git a/gnu/testlet/javax/swing/ViewportLayout/CVS/Entries b/gnu/testlet/javax/swing/ViewportLayout/CVS/Entries
new file mode 100644
index 00000000..afba08ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/ViewportLayout/CVS/Entries
@@ -0,0 +1,3 @@
+/layoutContainer.java/1.3/Sat Jan 28 21:40:03 2006//
+/minimumLayoutSize.java/1.1/Mon Jan 30 13:59:38 2006//
+D
diff --git a/gnu/testlet/javax/swing/ViewportLayout/CVS/Repository b/gnu/testlet/javax/swing/ViewportLayout/CVS/Repository
new file mode 100644
index 00000000..d67ea5e8
--- /dev/null
+++ b/gnu/testlet/javax/swing/ViewportLayout/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/ViewportLayout
diff --git a/gnu/testlet/javax/swing/ViewportLayout/CVS/Root b/gnu/testlet/javax/swing/ViewportLayout/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/ViewportLayout/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java b/gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java
new file mode 100644
index 00000000..8e222aa8
--- /dev/null
+++ b/gnu/testlet/javax/swing/ViewportLayout/layoutContainer.java
@@ -0,0 +1,133 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.ViewportLayout;
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import javax.swing.JPanel;
+import javax.swing.JViewport;
+import javax.swing.ViewportLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the functionality of the LayoutManager javax.swing.ViewportLayout.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ testMinimumViewSize(harness);
+ }
+
+ /**
+ * A simple test for the layout manager.
+ *
+ * @param h the test harness to use
+ */
+ private void test1(TestHarness h)
+ {
+ JViewport vp = new JViewport();
+ ViewportLayout layout = (ViewportLayout) vp.getLayout();
+ JPanel view = new JPanel(){};
+ vp.setView(view);
+ view.setMinimumSize(new Dimension(100, 100));
+ view.setPreferredSize(new Dimension(200, 200));
+ view.setMaximumSize(new Dimension(300, 300));
+ vp.setSize(400, 400);
+ layout.layoutContainer(vp);
+ h.check(view.getSize(), new Dimension(400, 400));
+ }
+
+ /**
+ * Another simple test for the layout manager.
+ *
+ * @param h the test harness to use
+ */
+ private void test2(TestHarness h)
+ {
+ JViewport vp = new JViewport();
+ ViewportLayout layout = (ViewportLayout) vp.getLayout();
+ JPanel view = new JPanel(){};
+ vp.setView(view);
+ view.setMinimumSize(new Dimension(100, 100));
+ view.setPreferredSize(new Dimension(200, 200));
+ view.setMaximumSize(new Dimension(300, 300));
+ vp.setSize(150, 150);
+ layout.layoutContainer(vp);
+ h.check(view.getSize(), new Dimension(200, 200));
+ }
+
+ /**
+ * Another simple test for the layout manager.
+ *
+ * @param h the test harness to use
+ */
+ private void test3(TestHarness h)
+ {
+ JViewport vp = new JViewport();
+ ViewportLayout layout = (ViewportLayout) vp.getLayout();
+ JPanel view = new JPanel(){};
+ vp.setView(view);
+ view.setMinimumSize(new Dimension(100, 100));
+ view.setPreferredSize(new Dimension(10, 10));
+ view.setMaximumSize(new Dimension(300, 300));
+ vp.setSize(50, 50);
+ layout.layoutContainer(vp);
+ h.check(view.getSize(), new Dimension(50, 50));
+ }
+
+ /**
+ * There was a strange rule in Classpath's implementation that said that if
+ * the viewport is larger than the view's minimumSize, the view's location
+ * must be set to (0,0). This test proves that this is wrong.
+ *
+ * @param h the test harness to use
+ */
+ private void testMinimumViewSize(TestHarness h)
+ {
+ JViewport vp = new JViewport();
+ ViewportLayout l = (ViewportLayout) vp.getLayout();
+ JPanel view = new JPanel();
+ view.setMinimumSize(new Dimension(100, 100));
+ view.setPreferredSize(new Dimension(200, 200));
+ view.setMaximumSize(new Dimension(300, 300));
+ vp.setSize(150, 150);
+ vp.setView(view);
+ view.setBounds(50, 50, 100, 100);
+ l.layoutContainer(vp);
+ h.check(view.getLocation(), new Point(50, 50));
+ }
+}
diff --git a/gnu/testlet/javax/swing/ViewportLayout/minimumLayoutSize.java b/gnu/testlet/javax/swing/ViewportLayout/minimumLayoutSize.java
new file mode 100644
index 00000000..ee744691
--- /dev/null
+++ b/gnu/testlet/javax/swing/ViewportLayout/minimumLayoutSize.java
@@ -0,0 +1,54 @@
+/* minimumLayoutSize.java -- Tests the minimumLayoutSize of the ViewportLayout
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.ViewportLayout;
+
+
+import java.awt.Dimension;
+
+import javax.swing.ViewportLayout;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the minimumLayoutSize() method of the ViewportLayout.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class minimumLayoutSize implements Testlet
+{
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ ViewportLayout l = new ViewportLayout();
+ Dimension minSize = l.minimumLayoutSize(null);
+ harness.check(minSize, new Dimension(4, 4));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/CVS/Entries b/gnu/testlet/javax/swing/border/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/border/CVS/Entries.Log b/gnu/testlet/javax/swing/border/CVS/Entries.Log
new file mode 100644
index 00000000..5f935f56
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/CompoundBorder////
+A D/TitledBorder////
diff --git a/gnu/testlet/javax/swing/border/CVS/Repository b/gnu/testlet/javax/swing/border/CVS/Repository
new file mode 100644
index 00000000..50e71d35
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/border
diff --git a/gnu/testlet/javax/swing/border/CVS/Root b/gnu/testlet/javax/swing/border/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Entries b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Entries
new file mode 100644
index 00000000..471ae597
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/isBorderOpaque.java/1.2/Wed Dec 6 18:20:45 2006//
+D
diff --git a/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Repository b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Repository
new file mode 100644
index 00000000..a0e0d127
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/border/CompoundBorder
diff --git a/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Root b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CompoundBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/border/CompoundBorder/isBorderOpaque.java b/gnu/testlet/javax/swing/border/CompoundBorder/isBorderOpaque.java
new file mode 100644
index 00000000..abf076e9
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/CompoundBorder/isBorderOpaque.java
@@ -0,0 +1,90 @@
+/* isBorderOpaque.java
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.border.CompoundBorder;
+
+import java.awt.Color;
+
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.LineBorder;
+import javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isBorderOpaque
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ CompoundBorder border = new CompoundBorder();
+ harness.check(border.isBorderOpaque(), true);
+
+ border = new CompoundBorder(null, null);
+ harness.check(border.isBorderOpaque(), true);
+
+ border = new CompoundBorder(new TitledBorder(""), new TitledBorder(""));
+ harness.check(border.isBorderOpaque(), false);
+
+ border = new CompoundBorder(null, new TitledBorder(""));
+ harness.check(border.isBorderOpaque(), false);
+
+ border = new CompoundBorder(new TitledBorder(""), null);
+ harness.check(border.isBorderOpaque(), false);
+
+ border = new CompoundBorder(new LineBorder(Color.red, 33, false), null);
+ harness.check(border.isBorderOpaque(), true);
+ harness.check(border.getInsideBorder() == null);
+ harness.check(border.getOutsideBorder().isBorderOpaque(), true);
+
+ border = new CompoundBorder(null, new LineBorder(Color.red, 33, false));
+ harness.check(border.isBorderOpaque(), true);
+ harness.check(border.getInsideBorder().isBorderOpaque(), true);
+ harness.check(border.getOutsideBorder() == null);
+
+ border = new CompoundBorder(new LineBorder(Color.red, 33, false),
+ new LineBorder(Color.red, 33, false));
+ harness.check(border.isBorderOpaque(), true);
+ harness.check(border.getInsideBorder().isBorderOpaque(), true);
+ harness.check(border.getOutsideBorder().isBorderOpaque(), true);
+
+ border = new CompoundBorder(new LineBorder(Color.red, 33, true), null);
+ harness.check(border.isBorderOpaque(), false);
+ harness.check(border.getInsideBorder() == null);
+ harness.check(border.getOutsideBorder().isBorderOpaque(), false);
+
+ border = new CompoundBorder(null, new LineBorder(Color.red, 33, true));
+ harness.check(border.isBorderOpaque(), false);
+ harness.check(border.getInsideBorder().isBorderOpaque(), false);
+ harness.check(border.getOutsideBorder() == null);
+
+ border = new CompoundBorder(new LineBorder(Color.red, 33, true),
+ new LineBorder(Color.red, 33, true));
+ harness.check(border.isBorderOpaque(), false);
+ harness.check(border.getInsideBorder().isBorderOpaque(), false);
+ harness.check(border.getOutsideBorder().isBorderOpaque(), false);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/CVS/Entries b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Entries
new file mode 100644
index 00000000..84f1f2f3
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Entries
@@ -0,0 +1,16 @@
+/constructors.java/1.3/Wed Sep 14 11:40:47 2011//
+/getBorder.java/1.1/Mon Oct 10 08:06:08 2005//
+/getBorderInsets.java/1.2/Tue Nov 28 13:05:16 2006//
+/getTitle.java/1.1/Mon Oct 10 08:06:08 2005//
+/getTitleColor.java/1.1/Mon Oct 10 08:06:08 2005//
+/getTitleFont.java/1.1/Mon Oct 10 08:06:08 2005//
+/getTitleJustification.java/1.1/Mon Oct 10 08:06:08 2005//
+/getTitlePosition.java/1.2/Mon Sep 19 15:19:14 2011//
+/isBorderOpaque.java/1.1/Mon Oct 10 08:06:08 2005//
+/setBorder.java/1.1/Mon Oct 10 08:06:08 2005//
+/setTitle.java/1.1/Mon Oct 10 08:06:09 2005//
+/setTitleColor.java/1.1/Mon Oct 10 08:06:09 2005//
+/setTitleFont.java/1.1/Mon Oct 10 08:06:09 2005//
+/setTitleJustification.java/1.1/Mon Oct 10 08:06:09 2005//
+/setTitlePosition.java/1.2/Mon Sep 19 15:19:14 2011//
+D
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/CVS/Repository b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Repository
new file mode 100644
index 00000000..55a8c99f
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/border/TitledBorder
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/CVS/Root b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/constructors.java b/gnu/testlet/javax/swing/border/TitledBorder/constructors.java
new file mode 100644
index 00000000..5130a3ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/constructors.java
@@ -0,0 +1,211 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the constructors of the {@link TitledBorder}
+ * class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ test5(harness);
+ test6(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Border)");
+ Border b = new EmptyBorder(1, 2, 3, 4);
+ TitledBorder tb = new TitledBorder(b);
+ harness.check(tb.getBorder(), b);
+ harness.check(tb.getTitle(), "");
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(tb.getTitleColor(), c);
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.DEFAULT_POSITION);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
+
+ tb = new TitledBorder((Border) null);
+ Border bb = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), bb);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Border, String)");
+ Border b = new EmptyBorder(1, 2, 3, 4);
+ TitledBorder tb = new TitledBorder(b, "XYZ");
+ harness.check(tb.getBorder(), b);
+ harness.check(tb.getTitle(), "XYZ");
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(tb.getTitleColor(), c);
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.DEFAULT_POSITION);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
+
+ tb = new TitledBorder((Border) null, "XYZ");
+ Border bb = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), bb);
+
+ tb = new TitledBorder(new EmptyBorder(1, 2, 3, 4), null);
+ harness.check(tb.getTitle(), null);
+ }
+
+ public void test3(TestHarness harness)
+ {
+ harness.checkPoint("(Border, String, int, int)");
+ Border b = new EmptyBorder(1, 2, 3, 4);
+ TitledBorder tb = new TitledBorder(b, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM);
+ harness.check(tb.getBorder(), b);
+ harness.check(tb.getTitle(), "XYZ");
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(tb.getTitleColor(), c);
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.BELOW_BOTTOM);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEFT);
+
+ tb = new TitledBorder((Border) null, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM);
+ Border bb = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), bb);
+
+ tb = new TitledBorder(new EmptyBorder(1, 2, 3, 4), null, TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM);
+ harness.check(tb.getTitle(), null);
+ }
+
+ public void test4(TestHarness harness)
+ {
+ harness.checkPoint("(Border, String, int, int, Font)");
+ Border b = new EmptyBorder(1, 2, 3, 4);
+ Font f = new Font("Dialog", Font.BOLD, 16);
+ TitledBorder tb = new TitledBorder(b, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f);
+ harness.check(tb.getBorder(), b);
+ harness.check(tb.getTitle(), "XYZ");
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(tb.getTitleColor(), c);
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.BELOW_BOTTOM);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEFT);
+
+ tb = new TitledBorder((Border) null, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f);
+ Border bb = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), bb);
+
+ tb = new TitledBorder(new EmptyBorder(1, 2, 3, 4), null, TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f);
+ harness.check(tb.getTitle(), null);
+ }
+
+ public void test5(TestHarness harness)
+ {
+ harness.checkPoint("(Border, String, int, int, Font, Color)");
+ Border b = new EmptyBorder(1, 2, 3, 4);
+ Font f = new Font("Dialog", Font.BOLD, 16);
+ TitledBorder tb = new TitledBorder(b, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f, Color.red);
+ harness.check(tb.getBorder(), b);
+ harness.check(tb.getTitle(), "XYZ");
+ harness.check(tb.getTitleColor(), Color.red);
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.BELOW_BOTTOM);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEFT);
+
+ tb = new TitledBorder((Border) null, "XYZ", TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f, Color.red);
+ Border bb = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), bb);
+
+ tb = new TitledBorder(new EmptyBorder(1, 2, 3, 4), null, TitledBorder.LEFT,
+ TitledBorder.BELOW_BOTTOM, f, Color.red);
+ harness.check(tb.getTitle(), null);
+ }
+
+ public void test6(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ TitledBorder tb = new TitledBorder("XYZ");
+ harness.check(tb.getTitle(), "XYZ");
+ Border b = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(tb.getBorder(), b);
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(tb.getTitleColor(), c);
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(tb.getTitleFont(), f);
+ harness.check(tb.getTitlePosition(), TitledBorder.DEFAULT_POSITION);
+ harness.check(tb.getTitleJustification(), TitledBorder.LEADING);
+
+ tb = new TitledBorder((String) null);
+ harness.check(tb.getTitle(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getBorder.java b/gnu/testlet/javax/swing/border/TitledBorder/getBorder.java
new file mode 100644
index 00000000..3adf2442
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getBorder.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getBorder() method of the {@link TitledBorder} class.
+ */
+public class getBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border baseBorder = new EmptyBorder(1, 1, 1, 1);
+ TitledBorder b = new TitledBorder(baseBorder);
+ harness.check(b.getBorder(), baseBorder);
+ baseBorder = new EmptyBorder(1, 2, 3, 4);
+ b.setBorder(baseBorder);
+ harness.check(b.getBorder(), baseBorder);
+ b.setBorder(null);
+ baseBorder = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(b.getBorder(), baseBorder);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java b/gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java
new file mode 100644
index 00000000..73fc1ccf
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getBorderInsets.java
@@ -0,0 +1,103 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Insets;
+
+import javax.swing.JPanel;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getBorderInsets() methods of the {@link TitledBorder}
+ * class.
+ */
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(Component)");
+ JPanel p = new JPanel();
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 2, 3, 4));
+ p.setBorder(b);
+ p.setFont(b.getTitleFont());
+ Insets insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5, 6, 7, 8));
+
+ FontMetrics fm = p.getFontMetrics(p.getFont());
+ int fontHeight = fm.getAscent() + fm.getDescent();
+ b.setTitle("XYZ");
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5 + fontHeight, 6, 7, 8));
+
+ b.setTitleFont(new Font("Dialog", Font.PLAIN, 24));
+ p.setFont(b.getTitleFont());
+ fm = p.getFontMetrics(p.getFont());
+ fontHeight = fm.getAscent() + fm.getDescent();
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5 + fontHeight, 6, 7, 8));
+
+ b.setTitlePosition(TitledBorder.ABOVE_TOP);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5 + fontHeight + 2, 6, 7, 8));
+
+ b.setTitlePosition(TitledBorder.TOP);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5 + fontHeight, 6, 7, 8));
+
+ b.setTitlePosition(TitledBorder.BELOW_TOP);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5 + fontHeight + 2, 6, 7, 8));
+
+ b.setTitlePosition(TitledBorder.ABOVE_BOTTOM);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5, 6, 7 + fontHeight + 2, 8));
+
+ b.setTitlePosition(TitledBorder.BOTTOM);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5, 6, 7 + fontHeight, 8));
+
+ b.setTitlePosition(TitledBorder.BELOW_BOTTOM);
+ insets = b.getBorderInsets(p);
+ harness.check(insets, new Insets(5, 6, 7 + fm.getHeight(), 8));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getTitle.java b/gnu/testlet/javax/swing/border/TitledBorder/getTitle.java
new file mode 100644
index 00000000..29eb4bb7
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getTitle.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getTitle() method of the {@link TitledBorder} class.
+ */
+public class getTitle implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.getTitle(), "");
+ b.setTitle("XYZ");
+ harness.check(b.getTitle(), "XYZ");
+ b.setTitle(null);
+ harness.check(b.getTitle(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getTitleColor.java b/gnu/testlet/javax/swing/border/TitledBorder/getTitleColor.java
new file mode 100644
index 00000000..d6e0f04c
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getTitleColor.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getTitleColor() method of the {@link TitledBorder} class.
+ */
+public class getTitleColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(b.getTitleColor(), c);
+ b.setTitleColor(Color.yellow);
+ harness.check(b.getTitleColor(), Color.yellow);
+ b.setTitleColor(null);
+ harness.check(b.getTitleColor(), c);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getTitleFont.java b/gnu/testlet/javax/swing/border/TitledBorder/getTitleFont.java
new file mode 100644
index 00000000..a08a701f
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getTitleFont.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getTitleFont() method of the {@link TitledBorder} class.
+ */
+public class getTitleFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(b.getTitleFont(), f);
+ b.setTitleFont(new Font("Dialog", Font.PLAIN, 17));
+ harness.check(b.getTitleFont(), new Font("Dialog", Font.PLAIN, 17));
+ b.setTitleFont(null);
+ harness.check(b.getTitleFont(), f);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getTitleJustification.java b/gnu/testlet/javax/swing/border/TitledBorder/getTitleJustification.java
new file mode 100644
index 00000000..26c77870
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getTitleJustification.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getTitleJustification() method of the
+ * {@link TitledBorder} class.
+ */
+public class getTitleJustification implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.getTitleJustification(), TitledBorder.LEADING);
+ b.setTitleJustification(TitledBorder.LEFT);
+ harness.check(b.getTitleJustification(), TitledBorder.LEFT);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java b/gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java
new file mode 100644
index 00000000..18b60e27
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/getTitlePosition.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the getTitlePosition() method of the
+ * {@link TitledBorder} class.
+ */
+public class getTitlePosition implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.getTitlePosition(), TitledBorder.DEFAULT_POSITION);
+ b.setTitlePosition(TitledBorder.BELOW_TOP);
+ harness.check(b.getTitlePosition(), TitledBorder.BELOW_TOP);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/isBorderOpaque.java b/gnu/testlet/javax/swing/border/TitledBorder/isBorderOpaque.java
new file mode 100644
index 00000000..476e4d52
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/isBorderOpaque.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the isBorderOpaque() method of the {@link TitledBorder}
+ * class.
+ */
+public class isBorderOpaque implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.isBorderOpaque(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setBorder.java b/gnu/testlet/javax/swing/border/TitledBorder/setBorder.java
new file mode 100644
index 00000000..79ef19b1
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setBorder.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setBorder() method of the {@link TitledBorder} class.
+ */
+public class setBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border baseBorder = new EmptyBorder(1, 1, 1, 1);
+ TitledBorder b = new TitledBorder(baseBorder);
+ harness.check(b.getBorder(), baseBorder);
+ baseBorder = new EmptyBorder(1, 2, 3, 4);
+ b.setBorder(baseBorder);
+ harness.check(b.getBorder(), baseBorder);
+ b.setBorder(null);
+ baseBorder = UIManager.getLookAndFeelDefaults().getBorder(
+ "TitledBorder.border");
+ harness.check(b.getBorder(), baseBorder);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setTitle.java b/gnu/testlet/javax/swing/border/TitledBorder/setTitle.java
new file mode 100644
index 00000000..3f5d71b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setTitle.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setTitle() method of the {@link TitledBorder} class.
+ */
+public class setTitle implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ b.setTitle("XYZ");
+ harness.check(b.getTitle(), "XYZ");
+ b.setTitle(null);
+ harness.check(b.getTitle(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setTitleColor.java b/gnu/testlet/javax/swing/border/TitledBorder/setTitleColor.java
new file mode 100644
index 00000000..1d892771
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setTitleColor.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setTitleColor() method of the {@link TitledBorder} class.
+ */
+public class setTitleColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ Color c = UIManager.getLookAndFeelDefaults().getColor(
+ "TitledBorder.titleColor");
+ harness.check(b.getTitleColor(), c);
+ b.setTitleColor(Color.yellow);
+ harness.check(b.getTitleColor(), Color.yellow);
+ b.setTitleColor(null);
+ harness.check(b.getTitleColor(), c);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setTitleFont.java b/gnu/testlet/javax/swing/border/TitledBorder/setTitleFont.java
new file mode 100644
index 00000000..710ca226
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setTitleFont.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setTitleFont() method of the {@link TitledBorder} class.
+ */
+public class setTitleFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ Font f = UIManager.getLookAndFeelDefaults().getFont("TitledBorder.font");
+ harness.check(b.getTitleFont(), f);
+ b.setTitleFont(new Font("Dialog", Font.PLAIN, 17));
+ harness.check(b.getTitleFont(), new Font("Dialog", Font.PLAIN, 17));
+ b.setTitleFont(null);
+ harness.check(b.getTitleFont(), f);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setTitleJustification.java b/gnu/testlet/javax/swing/border/TitledBorder/setTitleJustification.java
new file mode 100644
index 00000000..de1b607e
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setTitleJustification.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setTitleJustification() method of the
+ * {@link TitledBorder} class.
+ */
+public class setTitleJustification implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.getTitleJustification(), TitledBorder.LEADING);
+ b.setTitleJustification(TitledBorder.LEFT);
+ harness.check(b.getTitleJustification(), TitledBorder.LEFT);
+ boolean pass = false;
+ try
+ {
+ b.setTitleJustification(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java b/gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java
new file mode 100644
index 00000000..3be624f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/border/TitledBorder/setTitlePosition.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.border.TitledBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+
+/**
+ * Some checks for the setTitlePosition() method of the
+ * {@link TitledBorder} class.
+ */
+public class setTitlePosition implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TitledBorder b = new TitledBorder(new EmptyBorder(1, 1, 1, 1));
+ harness.check(b.getTitlePosition(), TitledBorder.DEFAULT_POSITION);
+ b.setTitlePosition(TitledBorder.BELOW_BOTTOM);
+ harness.check(b.getTitlePosition(), TitledBorder.BELOW_BOTTOM);
+ boolean pass = false;
+ try
+ {
+ b.setTitlePosition(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/event/CVS/Entries b/gnu/testlet/javax/swing/event/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/event/CVS/Entries.Log b/gnu/testlet/javax/swing/event/CVS/Entries.Log
new file mode 100644
index 00000000..4c045b64
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/EventListenerList////
+A D/InternalFrameEvent////
+A D/ListDataEvent////
+A D/SwingPropertyChangeSupport////
+A D/TableModelEvent////
+A D/TreeSelectionEvent////
diff --git a/gnu/testlet/javax/swing/event/CVS/Repository b/gnu/testlet/javax/swing/event/CVS/Repository
new file mode 100644
index 00000000..47d79d78
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event
diff --git a/gnu/testlet/javax/swing/event/CVS/Root b/gnu/testlet/javax/swing/event/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/CVS/Entries b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Entries
new file mode 100644
index 00000000..d63af417
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Entries
@@ -0,0 +1,7 @@
+/add.java/1.3/Tue Jan 2 13:56:42 2007//
+/getListenerCount.java/1.2/Wed Dec 27 15:48:18 2006//
+/getListenerList.java/1.2/Wed Dec 27 15:48:18 2006//
+/getListeners.java/1.2/Wed Dec 27 15:48:18 2006//
+/remove.java/1.2/Wed Dec 27 15:48:18 2006//
+/toString.java/1.1/Tue Jan 6 14:25:55 2004//
+D
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/CVS/Repository b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Repository
new file mode 100644
index 00000000..69b6554d
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/EventListenerList
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/CVS/Root b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/add.java b/gnu/testlet/javax/swing/event/EventListenerList/add.java
new file mode 100644
index 00000000..7dfe924b
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/add.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * These tests pass with the Sun JDK 1.4.1_01 on GNU/Linux IA-32.
+ *
+ * @see Classpath bug #7104
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class add
+ implements Testlet
+{
+ private static class L
+ implements EventListener
+ {
+ };
+
+ private static class L2
+ implements EventListener
+ {
+ };
+
+
+ public void test(TestHarness harness)
+ {
+ EventListenerList ell = new EventListenerList();
+ L l1 = new L();
+ L l2 = new L();
+ Object[] list;
+
+ // Check #1.
+ ell.add(EventListener.class, l1);
+ list = ell.getListenerList();
+ harness.check(list.length, 2);
+
+ // Check #2.
+ harness.check(list[0], EventListener.class);
+
+ // Check #3.
+ harness.check(list[1] == l1);
+
+ // Check #4.
+ ell.add(L.class, l2);
+ list = ell.getListenerList();
+ harness.check(list.length, 4);
+
+ // Check #5.
+ // Classpath bug #7104.
+ harness.check(list[0], EventListener.class);
+
+ // Check #6.
+ // Classpath bug #7104.
+ harness.check(list[1] == l1);
+
+ // Check #7.
+ harness.check(list[2], L.class);
+
+ // Check #8.
+ harness.check(list[3] == l2);
+
+ // Check #9: Adding null listener.
+ ell = new EventListenerList();
+ Throwable caught = null;
+ try
+ {
+ ell.add(L.class, null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught, null);
+
+ // Check #10: Adding null listener does not change anything.
+ // Classpath bug #7104.
+ harness.check(ell.getListenerCount(), 0);
+
+ // Check #11: Registering as null class.
+ caught = null;
+ try
+ {
+ ell.add(null, new L());
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught != null);
+
+ // Check #12: Registering a null class does not actually
+ // register it.
+ // Classpath bug #7104.
+ harness.check(ell.getListenerCount(), 0);
+
+ // Check #13: Registering a non-instance.
+ // Classpath bug #7104.
+ caught = null;
+ try
+ {
+ ell.add( (Class) L.class, new L2());
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+
+ // Check #14: Registering the same listener twice.
+ // Classpath bug #7104.
+ ell.add(L.class, l1);
+ ell.add(L.class, l1);
+ harness.check(ell.getListenerCount(), 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java b/gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java
new file mode 100644
index 00000000..043a9e78
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getListenerCount
+ implements Testlet
+{
+ private static class L1 implements EventListener {};
+ private static class L2 extends L1 {};
+ private static class L3 extends L1 {};
+
+ public void test(TestHarness harness)
+ {
+ EventListenerList ell = new EventListenerList();
+ L1 l1 = new L1();
+ L2 l2 = new L2();
+ L3 l3_1 = new L3();
+ L3 l3_2 = new L3();
+
+ // Check #1.
+ harness.check(ell.getListenerCount(), 0);
+
+ // Check #2.
+ harness.check(ell.getListenerCount(L1.class), 0);
+
+ // Check #3: null argument (Classpath bug #7099).
+ harness.check(ell.getListenerCount(null), 0);
+
+ // Check #4: Class that does not implement EventListener.
+ harness.check(ell.getListenerCount(String.class), 0);
+
+ // Check #5.
+ ell.add(L1.class, l1);
+ ell.add(L2.class, l2);
+ ell.add(L1.class, l3_1);
+ ell.add(L3.class, l3_2);
+ harness.check(ell.getListenerCount(), 4);
+
+ // Check #6.
+ harness.check(ell.getListenerCount(L1.class), 2);
+
+ // Check #7.
+ harness.check(ell.getListenerCount(L2.class), 1);
+
+ // Check #8.
+ harness.check(ell.getListenerCount(L3.class), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java b/gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java
new file mode 100644
index 00000000..b1c8cace
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getListenerList
+ implements Testlet
+{
+ private static class L
+ implements EventListener
+ {
+ };
+
+
+ public void test(TestHarness harness)
+ {
+ EventListenerList ell = new EventListenerList();
+ EventListener l1 = new L();
+ L l2 = new L();
+ Object[] list;
+
+ // Check #1.
+ list = ell.getListenerList();
+ harness.check(list.length, 0);
+
+ // Check #2.
+ ell.add(EventListener.class, l1);
+ ell.add(L.class, l2);
+ list = ell.getListenerList();
+ harness.check(list.length, 4);
+
+ // Check #3.
+ harness.check(list[0] == EventListener.class);
+
+ // Check #4.
+ harness.check(list[1] == l1);
+
+ // Check #5.
+ harness.check(list[2] == L.class);
+
+ // Check #6.
+ harness.check(list[3] == l2);
+
+ // Check #7: Same array returned upon each invocation.
+ harness.check(ell.getListenerList() == list);
+
+ // Check #8.
+ ell.remove(EventListener.class, l1);
+ list = ell.getListenerList();
+ harness.check(list.length, 2);
+
+ // Check #9.
+ harness.check(list[0] == L.class);
+
+ // Check #10.
+ harness.check(list[1] == l2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/getListeners.java b/gnu/testlet/javax/swing/event/EventListenerList/getListeners.java
new file mode 100644
index 00000000..592c9a18
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/getListeners.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * These tests pass with the Sun JDK 1.4.1_01 on GNU/Linux IA-32.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getListeners
+ implements Testlet
+{
+ private static class L1
+ implements EventListener
+ {
+ };
+
+ private static class L2
+ implements EventListener
+ {
+ };
+
+ private static class L3
+ extends L2
+ {
+ };
+
+ private static class L4
+ implements EventListener
+ {
+ };
+
+ public void test(TestHarness harness)
+ {
+ EventListenerList ell = new EventListenerList();
+ L1 l1a = new L1();
+ L1 l1b = new L1();
+ L2 l2 = new L2();
+ L3 l3 = new L3();
+ EventListener[] list;
+ Throwable caught;
+
+ ell.add(EventListener.class, l1a);
+ ell.add(L2.class, l2);
+ ell.add(L3.class, l3);
+ ell.add(L1.class, l1b);
+ list = ell.getListeners(L1.class);
+
+ harness.check(list.length, 1); // #1.
+ harness.check(list[0] == l1b); // #2.
+ harness.check(list.getClass().getComponentType(), L1.class); // #3.
+
+ list = ell.getListeners(L2.class);
+ harness.check(list.length, 1); // #4.
+ harness.check(list[0] == l2); // #5.
+ harness.check(list.getClass().getComponentType(), L2.class); // #6.
+
+ list = ell.getListeners(L3.class);
+ harness.check(list.length, 1); // #7.
+ harness.check(list[0] == l3); // #8.
+ harness.check(list.getClass().getComponentType(), L3.class); // #9.
+
+ list = ell.getListeners(EventListener.class);
+ harness.check(list.length, 1); // #10.
+ harness.check(list[0] == l1a); // #11.
+ harness.check(list.getClass().getComponentType(),
+ EventListener.class); // #12.
+
+ harness.check(ell.getListeners(L4.class).length, 0); // #13.
+
+ // Check #14.
+ caught = null;
+ try
+ {
+ ell.getListeners(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof NullPointerException);
+
+ /* Doesn't compile with 1.5
+ // Check #15.
+ caught = null;
+ try
+ {
+ ell.getListeners(String.class);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof ClassCastException);
+ */
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/remove.java b/gnu/testlet/javax/swing/event/EventListenerList/remove.java
new file mode 100644
index 00000000..e3f77e49
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/remove.java
@@ -0,0 +1,139 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class remove
+ implements Testlet
+{
+ private static class L
+ implements EventListener
+ {
+ };
+
+ private static class L2
+ implements EventListener
+ {
+ };
+
+ public void test(TestHarness harness)
+ {
+ EventListenerList ell = new EventListenerList();
+ EventListener l1 = new L();
+ L l2 = new L();
+ Object[] list;
+ Throwable caught;
+
+ // Check #1.
+ ell.add(EventListener.class, l1);
+ ell.add(L.class, l2);
+ ell.remove(EventListener.class, l1);
+ list = ell.getListenerList();
+ harness.check(list.length, 2);
+
+ // Check #2.
+ // Classpath bug #7105.
+ harness.check(list[0] == L.class);
+
+ // Check #3.
+ // Classpath bug #7105.
+ harness.check(list[1] == l2);
+
+ // Check #4: Remove something not in the list.
+ ell.remove(EventListener.class, l2);
+ list = ell.getListenerList();
+ harness.check(list.length, 2);
+
+ // Check #5: remove(null, foo)
+ // Classpath bug #7105.
+ caught = null;
+ try
+ {
+ ell.remove(null, l2);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof NullPointerException);
+
+ // Check #6: remove(foo, null)
+ caught = null;
+ try
+ {
+ ell.remove(EventListener.class, null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught, null);
+
+ // Check #7: remove(null, null)
+ caught = null;
+ try
+ {
+ ell.remove(null, null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught, null);
+
+ /* Doesn't compile with 1.5
+ // Check #8: Removing non-instance.
+ // Classpath bug #7105.
+ caught = null;
+ try
+ {
+ ell.remove(L2.class, l2);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof IllegalArgumentException);
+ */
+
+ // Unsuccessful attempts should not change the list.
+ list = ell.getListenerList();
+ harness.check(list.length, 2); // Check #9.
+ harness.check(list[0], L.class); // Check #10. Classpath bug #7105.
+ harness.check(list[1] == l2); // Check #11. Classpath bug #7105.
+
+ // Check #12: Removal of doubly registered listener.
+ ell = new EventListenerList();
+ ell.add(L.class, l2);
+ ell.add(L.class, l2);
+ ell.remove(L.class, l2);
+ harness.check(ell.getListenerList().length, 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/EventListenerList/toString.java b/gnu/testlet/javax/swing/event/EventListenerList/toString.java
new file mode 100644
index 00000000..16459b32
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/EventListenerList/toString.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.event.EventListenerList;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import java.util.EventListener;
+import javax.swing.event.EventListenerList;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class toString
+ implements Testlet
+{
+ private static class L1
+ implements EventListener
+ {
+ public String toString()
+ {
+ return "l-one";
+ }
+ };
+
+ private static class L2
+ implements EventListener
+ {
+ public String toString()
+ {
+ return "l-two";
+ }
+ };
+
+ public void test(TestHarness harness)
+ {
+ // Check #1.
+ EventListenerList ell = new EventListenerList();
+ ell.add(EventListener.class, new L1());
+ ell.add(L2.class, new L2());
+ harness.check(ell.toString(), "EventListenerList: 2 listeners: "
+ + "type java.util.EventListener listener l-one "
+ + "type gnu.testlet.javax.swing.event.EventList"
+ + "enerList.toString$L2 listener l-two");
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Entries b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Entries
new file mode 100644
index 00000000..e3c0b3a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Entries
@@ -0,0 +1,4 @@
+/constructor.java/1.1/Wed Jun 7 21:45:57 2006//
+/getInternalFrame.java/1.1/Wed Jun 7 21:45:57 2006//
+/paramString.java/1.1/Wed Jun 7 21:45:57 2006//
+D
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Repository b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Repository
new file mode 100644
index 00000000..a6b2e29c
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/InternalFrameEvent
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Root b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/constructor.java b/gnu/testlet/javax/swing/event/InternalFrameEvent/constructor.java
new file mode 100644
index 00000000..cf449827
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/constructor.java
@@ -0,0 +1,59 @@
+/* constructor.java -- some checks for the constructor in the
+ InternalFrameEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.InternalFrameEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameEvent;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ InternalFrameEvent e = new InternalFrameEvent(f,
+ InternalFrameEvent.INTERNAL_FRAME_ACTIVATED);
+ harness.check(e.getID(), InternalFrameEvent.INTERNAL_FRAME_ACTIVATED);
+ harness.check(e.getInternalFrame(), f);
+
+ // null frame
+ boolean pass = false;
+ try
+ {
+ e = new InternalFrameEvent(null, InternalFrameEvent.INTERNAL_FRAME_CLOSED);
+ }
+ catch (IllegalArgumentException event)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // unrecognised id
+ e = new InternalFrameEvent(f, -999);
+ harness.check(e.getID(), -999);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/getInternalFrame.java b/gnu/testlet/javax/swing/event/InternalFrameEvent/getInternalFrame.java
new file mode 100644
index 00000000..7054e3c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/getInternalFrame.java
@@ -0,0 +1,49 @@
+/* getInternalFrame.java -- some checks for the getInternalFrame()
+ method in the InternalFrameEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.InternalFrameEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameEvent;
+
+public class getInternalFrame implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ InternalFrameEvent e = new InternalFrameEvent(f,
+ InternalFrameEvent.INTERNAL_FRAME_ACTIVATED);
+ harness.check(e.getInternalFrame(), f);
+
+ JInternalFrame f2 = new JInternalFrame("Title2");
+ e.setSource(f2);
+ harness.check(e.getInternalFrame(), f2);
+
+ e.setSource(null);
+ harness.check(e.getInternalFrame(), null);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/event/InternalFrameEvent/paramString.java b/gnu/testlet/javax/swing/event/InternalFrameEvent/paramString.java
new file mode 100644
index 00000000..83e5292f
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/InternalFrameEvent/paramString.java
@@ -0,0 +1,56 @@
+/* paramString.java -- some checks for the paramString() method in the
+ InternalFrameEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.InternalFrameEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameEvent;
+
+public class paramString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame("Title");
+ InternalFrameEvent e = new InternalFrameEvent(f,
+ InternalFrameEvent.INTERNAL_FRAME_ACTIVATED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_ACTIVATED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_CLOSED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_CLOSED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_CLOSING);
+ harness.check(e.paramString(), "INTERNAL_FRAME_CLOSING");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_DEACTIVATED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_DEICONIFIED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_DEICONIFIED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_ICONIFIED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_ICONIFIED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.INTERNAL_FRAME_OPENED);
+ harness.check(e.paramString(), "INTERNAL_FRAME_OPENED");
+ e = new InternalFrameEvent(f, InternalFrameEvent.RESERVED_ID_MAX);
+ harness.check(e.paramString(), "unknown type");
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Entries b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Entries
new file mode 100644
index 00000000..8d529dc6
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Entries
@@ -0,0 +1,7 @@
+/constructor.java/1.1/Fri Jun 16 13:22:58 2006//
+/getIndex0.java/1.1/Fri Jun 16 13:22:58 2006//
+/getIndex1.java/1.1/Fri Jun 16 13:22:58 2006//
+/getSource.java/1.1/Fri Jun 16 13:22:58 2006//
+/getType.java/1.1/Fri Jun 16 13:22:58 2006//
+/toString.java/1.1/Fri Jun 16 13:22:58 2006//
+D
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Repository b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Repository
new file mode 100644
index 00000000..66f912c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/ListDataEvent
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Root b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/constructor.java b/gnu/testlet/javax/swing/event/ListDataEvent/constructor.java
new file mode 100644
index 00000000..0598420d
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/constructor.java
@@ -0,0 +1,74 @@
+/* constructor.java -- some checks for the constructor in the ListDataEvent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED,
+ 1, 2);
+ harness.check(e.getSource(), this);
+ harness.check(e.getType(), ListDataEvent.CONTENTS_CHANGED);
+ harness.check(e.getIndex0(), 1);
+ harness.check(e.getIndex1(), 2);
+
+ // try null source
+ boolean pass = false;
+ try
+ {
+ e = new ListDataEvent(null, ListDataEvent.CONTENTS_CHANGED, 1, 2);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try first index greater than second
+ e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 99, 2);
+ harness.check(e.getIndex0(), 2);
+ harness.check(e.getIndex1(), 99);
+
+ // try bad type
+ e = new ListDataEvent(this, -99, 1, 2);
+ harness.check(e.getType(), -99);
+
+ // try negative first index
+ e = new ListDataEvent(this, -ListDataEvent.CONTENTS_CHANGED, -10, 2);
+ harness.check(e.getIndex0(), -10);
+ harness.check(e.getIndex1(), 2);
+
+ // try negative second index
+ e = new ListDataEvent(this, -ListDataEvent.CONTENTS_CHANGED, 1, -2);
+ harness.check(e.getIndex0(), -2);
+ harness.check(e.getIndex1(), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/getIndex0.java b/gnu/testlet/javax/swing/event/ListDataEvent/getIndex0.java
new file mode 100644
index 00000000..471fba4e
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/getIndex0.java
@@ -0,0 +1,42 @@
+/* getIndex0.java -- some checks for the getIndex0() method in the
+ ListDataEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class getIndex0 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED,
+ 1, 2);
+ harness.check(e.getIndex0(), 1);
+ e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, 4, 3);
+ harness.check(e.getIndex0(), 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/getIndex1.java b/gnu/testlet/javax/swing/event/ListDataEvent/getIndex1.java
new file mode 100644
index 00000000..aac5b6de
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/getIndex1.java
@@ -0,0 +1,42 @@
+/* getIndex1.java -- some checks for the getIndex1() method in the
+ ListDataEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class getIndex1 implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED,
+ 1, 2);
+ harness.check(e.getIndex1(), 2);
+ e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, 4, 3);
+ harness.check(e.getIndex1(), 4);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/getSource.java b/gnu/testlet/javax/swing/event/ListDataEvent/getSource.java
new file mode 100644
index 00000000..d7678458
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/getSource.java
@@ -0,0 +1,40 @@
+/* getSource.java -- some checks for the getSource() method in the
+ ListDataEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class getSource implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED,
+ 1, 2);
+ harness.check(e.getSource(), this);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/getType.java b/gnu/testlet/javax/swing/event/ListDataEvent/getType.java
new file mode 100644
index 00000000..bb7aeec9
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/getType.java
@@ -0,0 +1,40 @@
+/* getType.java -- some checks for the getType() method in the
+ ListDataEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class getType implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED,
+ 1, 2);
+ harness.check(e.getType(), ListDataEvent.INTERVAL_REMOVED);
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/ListDataEvent/toString.java b/gnu/testlet/javax/swing/event/ListDataEvent/toString.java
new file mode 100644
index 00000000..2cc3f91e
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/ListDataEvent/toString.java
@@ -0,0 +1,44 @@
+/* getIndex0.java -- some checks for the toString() method in the
+ ListDataEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.ListDataEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ListDataEvent;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ListDataEvent e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED,
+ 1, 2);
+ harness.check(e.toString(),
+ "javax.swing.event.ListDataEvent[type=2,index0=1,index1=2]");
+ e = new ListDataEvent(this, ListDataEvent.INTERVAL_REMOVED, 4, 3);
+ harness.check(e.toString(),
+ "javax.swing.event.ListDataEvent[type=2,index0=3,index1=4]");
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Entries b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Entries
new file mode 100644
index 00000000..a75d165e
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Entries
@@ -0,0 +1,7 @@
+/addPropertyChangeListener.java/1.1/Tue Aug 23 09:54:09 2005//
+/constructor.java/1.1/Tue Aug 23 09:54:09 2005//
+/firePropertyChange.java/1.2/Wed Oct 12 09:11:46 2005//
+/getPropertyChangeListeners.java/1.1/Tue Aug 23 09:54:09 2005//
+/hasListeners.java/1.2/Sat Jan 28 23:03:39 2006//
+/removePropertyChangeListener.java/1.2/Sat Jan 28 23:03:39 2006//
+D
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Repository b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Repository
new file mode 100644
index 00000000..b1086562
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Root b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java
new file mode 100644
index 00000000..0935b045
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/addPropertyChangeListener.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the addPropertyChangeListener() method in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class addPropertyChangeListener
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try adding a null listener - it gets silently ignored
+ s.addPropertyChangeListener(null);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try adding a null listener - it gets silently ignored
+ s.addPropertyChangeListener("X", null);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java
new file mode 100644
index 00000000..7eeaa67e
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/constructor.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the constructor in the {@link SwingPropertyChangeSupport}
+ * class.
+ */
+public class constructor implements Testlet, PropertyChangeListener {
+
+ private PropertyChangeEvent event = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", false, true);
+ harness.check(this.event.getSource(), this);
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ s = new SwingPropertyChangeSupport(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
new file mode 100644
index 00000000..18952385
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/firePropertyChange.java
@@ -0,0 +1,152 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the firePropertyChange() methods in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class firePropertyChange
+ implements Testlet, PropertyChangeListener {
+
+ private PropertyChangeEvent lastEvent = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ test3(harness);
+ test4(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeEvent)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ s.addPropertyChangeListener(this);
+ PropertyChangeEvent e = new PropertyChangeEvent("SOURCE", "X", "Y", "Z");
+ s.firePropertyChange(e);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), "Y");
+ harness.check(this.lastEvent.getNewValue(), "Z");
+
+ // if the old and new values are the same (and non-null), then no listeners
+ // are notified
+ this.lastEvent = null;
+ e = new PropertyChangeEvent("SOURCE", "X", "YY", "YY");
+ s.firePropertyChange(e);
+ harness.check(lastEvent, null);
+
+ // but if the old and new values are both null, listeners ARE notified
+ this.lastEvent = null;
+ e = new PropertyChangeEvent("SOURCE", "X", null, null);
+ s.firePropertyChange(e);
+ harness.check(lastEvent, e);
+
+ // check that a null argument throws a null pointer exception
+ this.lastEvent = null;
+ boolean pass = false;
+ try
+ {
+ s.firePropertyChange(null);
+ }
+ catch (NullPointerException npe)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, Object, Object)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", "Y", "Z");
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), "Y");
+ harness.check(this.lastEvent.getNewValue(), "Z");
+ this.lastEvent = null;
+
+ // if both Objects are equal and non-null, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", "Z", "Z");
+ harness.check(this.lastEvent, null);
+
+ // the following should not throw any exceptions
+// s.firePropertyChange(null, "Y", "Z");
+// s.firePropertyChange("X", null, "Z");
+// s.firePropertyChange("X", "Y", null);
+ }
+
+ private void test3(TestHarness harness)
+ {
+ harness.checkPoint("(String, boolean, boolean)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", false, true);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(this.lastEvent.getNewValue(), Boolean.TRUE);
+
+ // if both booleans are equal, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", true, true);
+ harness.check(this.lastEvent, null);
+ }
+
+ private void test4(TestHarness harness)
+ {
+ harness.checkPoint("(String, int, int)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport("SOURCE");
+ s.addPropertyChangeListener(this);
+ s.firePropertyChange("X", 12, 34);
+ harness.check(this.lastEvent.getSource(), "SOURCE");
+ harness.check(this.lastEvent.getPropertyName(), "X");
+ harness.check(this.lastEvent.getOldValue(), new Integer(12));
+ harness.check(this.lastEvent.getNewValue(), new Integer(34));
+
+ // if both ints are equal, no event is generated
+ this.lastEvent = null;
+ s.firePropertyChange("X", 99, 99);
+ harness.check(this.lastEvent, null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.lastEvent = e;
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java
new file mode 100644
index 00000000..6d0a31fc
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/getPropertyChangeListeners.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeListenerProxy;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the getPropertyChangeListeners() method in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class getPropertyChangeListeners
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ listeners = s.getPropertyChangeListeners();;
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // listeners for specific properties should show up in the list wrapped
+ // in PropertyChangeListenerProxy instances
+ s.addPropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 2);
+ PropertyChangeListenerProxy proxy
+ = (PropertyChangeListenerProxy) listeners[1];
+ harness.check(proxy.getPropertyName(), "X");
+ harness.check(proxy.getListener(), this);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 0);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
new file mode 100644
index 00000000..a2d04e8e
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/hasListeners.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the hasListeners() method in the {@link SwingPropertyChangeSupport}
+ * class.
+ */
+public class hasListeners implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+ harness.check(s.hasListeners("X"), false);
+
+ // add a listener for all events
+ s.addPropertyChangeListener(this);
+ harness.check(s.hasListeners("X"));
+ s.removePropertyChangeListener(this);
+ harness.check(s.hasListeners("X"), false);
+
+ // add a listener for a specific event
+ s.addPropertyChangeListener("X", this);
+ harness.check(s.hasListeners("X"), true);
+ s.removePropertyChangeListener("X", this);
+ harness.check(s.hasListeners("X"), false);
+
+ // check null argument - in 1.5.0 the spec says that this checks for
+ // listeners registered against all properties
+ harness.check(s.hasListeners(null), false);
+
+ // add a listener for all events
+ s.addPropertyChangeListener(this);
+ harness.check(s.hasListeners(null));
+ s.removePropertyChangeListener(this);
+ harness.check(s.hasListeners(null), false);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
new file mode 100644
index 00000000..efb3d78c
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/SwingPropertyChangeSupport/removePropertyChangeListener.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.event.SwingPropertyChangeSupport;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.SwingPropertyChangeSupport;
+
+/**
+ * Tests the removePropertyChangeListener() methods in the
+ * {@link SwingPropertyChangeSupport} class.
+ */
+public class removePropertyChangeListener
+ implements Testlet, PropertyChangeListener {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ private void test1(TestHarness harness)
+ {
+ harness.checkPoint("(PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener(this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // remove it again
+ s.removePropertyChangeListener(this);
+ listeners = s.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // remove a listener that doesn't exist
+ s.removePropertyChangeListener(this);
+
+ // try a null argument
+ s.removePropertyChangeListener(null);
+ }
+
+ private void test2(TestHarness harness)
+ {
+ harness.checkPoint("(String, PropertyChangeListener)");
+ SwingPropertyChangeSupport s = new SwingPropertyChangeSupport(this);
+
+ // now add a listener
+ s.addPropertyChangeListener("X", this);
+ PropertyChangeListener[] listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // remove it again
+ s.removePropertyChangeListener("X", this);
+ listeners = s.getPropertyChangeListeners("X");
+ harness.check(listeners.length, 0);
+
+ // remove a listener that doesn't exist
+ s.removePropertyChangeListener("X", this);
+
+ // according to the 1.5.0 spec, a null property name causes no action
+ // or exception
+ boolean pass = false;
+ try
+ {
+ s.removePropertyChangeListener(null, this);
+ pass = true;
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // try a null argument 2
+ s.removePropertyChangeListener("X", null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // do nothing
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Entries b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Entries
new file mode 100644
index 00000000..0135148f
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Entries
@@ -0,0 +1,2 @@
+/constructors.java/1.1/Wed Jun 29 09:52:28 2005//
+D
diff --git a/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Repository b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Repository
new file mode 100644
index 00000000..8167f057
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/TableModelEvent
diff --git a/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Root b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TableModelEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/TableModelEvent/constructors.java b/gnu/testlet/javax/swing/event/TableModelEvent/constructors.java
new file mode 100644
index 00000000..06f4586d
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TableModelEvent/constructors.java
@@ -0,0 +1,184 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.event.TableModelEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some checks for the constructors in the {@link TableModelEvent} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(TableModel)");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ TableModelEvent event = new TableModelEvent(tm);
+ harness.check(event.getSource() == tm);
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), Integer.MAX_VALUE);
+
+ // try a null argument...
+ boolean pass = false;
+ try
+ {
+ /*TableModelEvent e =*/ new TableModelEvent(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ catch (NullPointerException e) {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(TableModel, int)");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ TableModelEvent event = new TableModelEvent(tm, 1);
+ harness.check(event.getSource() == tm);
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 1);
+ harness.check(event.getLastRow(), 1);
+
+ // try a null argument...
+ boolean pass = false;
+ try
+ {
+ /*TableModelEvent e =*/ new TableModelEvent(null, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(TableModel, int, int)");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ TableModelEvent event = new TableModelEvent(tm, 0, 2);
+ harness.check(event.getSource() == tm);
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 2);
+
+ // try a null argument...
+ boolean pass = false;
+ try
+ {
+ /*TableModelEvent e =*/ new TableModelEvent(null, 1, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try first row > lastRow
+ pass = false;
+ TableModelEvent e = new TableModelEvent(tm, 2, 0);
+ harness.check(e.getFirstRow(), 2);
+ harness.check(e.getLastRow(), 0);
+ }
+
+ public void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(TableModel, int, int, int)");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ TableModelEvent event = new TableModelEvent(tm, 0, 2, 1);
+ harness.check(event.getSource() == tm);
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), 1);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 2);
+
+ // try a null argument...
+ boolean pass = false;
+ try
+ {
+ /*TableModelEvent e =*/ new TableModelEvent(null, 1, 1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("(TableModel, int, int, int, int)");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ TableModelEvent event = new TableModelEvent(tm, 0, 2, 1,
+ TableModelEvent.DELETE);
+ harness.check(event.getSource() == tm);
+ harness.check(event.getType(), TableModelEvent.DELETE);
+ harness.check(event.getColumn(), 1);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 2);
+
+ // try a null argument...
+ boolean pass = false;
+ try
+ {
+ /*TableModelEvent e =*/ new TableModelEvent(null, 1, 1, 0,
+ TableModelEvent.INSERT);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try an unknown type
+ TableModelEvent e = new TableModelEvent(tm, 0, 2, 1, 999);
+ harness.check(e.getType(), 999);
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Entries b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Entries
new file mode 100644
index 00000000..0a1099ee
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Entries
@@ -0,0 +1,4 @@
+/cloneWithSource.java/1.1/Sat Mar 11 07:01:37 2006//
+/constructors.java/1.1/Sat Mar 11 07:01:37 2006//
+/isAddedPath.java/1.1/Sat Mar 11 07:01:37 2006//
+D
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Repository b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Repository
new file mode 100644
index 00000000..d3b9747b
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/event/TreeSelectionEvent
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Root b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/cloneWithSource.java b/gnu/testlet/javax/swing/event/TreeSelectionEvent/cloneWithSource.java
new file mode 100644
index 00000000..9100ab62
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/cloneWithSource.java
@@ -0,0 +1,67 @@
+/* cloneWithSource.java -- some checks for the cloneWithSource() method in the
+ TreeSelectionEvent.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.TreeSelectionEvent;
+
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class cloneWithSource implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TreeSelectionModel m1 = new DefaultTreeSelectionModel();
+ TreeSelectionModel m2 = new DefaultTreeSelectionModel();
+ TreePath p1 = new TreePath("A");
+ TreePath p2 = new TreePath("B");
+ TreePath p3 = new TreePath("C");
+ TreeSelectionEvent tse1 = new TreeSelectionEvent(m1, p1, true, p2, p3);
+ TreeSelectionEvent tse2 = (TreeSelectionEvent) tse1.cloneWithSource(m2);
+ harness.check(tse2.getSource(), m2);
+ harness.check(tse2.getPath(), p1);
+ harness.check(tse2.getPaths().length, 1);
+ harness.check(tse2.getPaths()[0], p1);
+ harness.check(tse2.isAddedPath());
+ harness.check(tse2.getOldLeadSelectionPath(), p2);
+ harness.check(tse2.getNewLeadSelectionPath(), p3);
+
+ // try null source
+ boolean pass = false;
+ try
+ {
+ tse1.cloneWithSource(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/constructors.java b/gnu/testlet/javax/swing/event/TreeSelectionEvent/constructors.java
new file mode 100644
index 00000000..223efe4b
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/constructors.java
@@ -0,0 +1,178 @@
+/* constructors.java -- some checks for the constructors in the
+ TreeSelectionEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.event.TreeSelectionEvent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ checkConstructor1(harness);
+ checkConstructor2(harness);
+ }
+
+ public void checkConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(Object, TreePath, boolean, TreePath, TreePath)");
+ TreeSelectionModel m = new DefaultTreeSelectionModel();
+ TreePath p1 = new TreePath("A");
+ TreePath p2 = new TreePath("B");
+ TreePath p3 = new TreePath("C");
+ TreeSelectionEvent tse = new TreeSelectionEvent(m, p1, true, p2, p3);
+ harness.check(tse.getSource(), m);
+ harness.check(tse.getPath(), p1);
+ harness.check(tse.getPaths().length, 1);
+ harness.check(tse.getPaths()[0], p1);
+ harness.check(tse.isAddedPath());
+ harness.check(tse.getOldLeadSelectionPath(), p2);
+ harness.check(tse.getNewLeadSelectionPath(), p3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ tse = new TreeSelectionEvent(null, p1, true, p2, p3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null path
+ tse = new TreeSelectionEvent(m, null, true, p2, p3);
+ harness.check(tse.getPath(), null);
+ harness.check(tse.getPaths().length, 1);
+ harness.check(tse.getPaths()[0], null);
+
+ // check null old path
+ tse = new TreeSelectionEvent(m, p1, true, null, p3);
+ harness.check(tse.getOldLeadSelectionPath(), null);
+
+ // check null new path
+ tse = new TreeSelectionEvent(m, p1, true, p2, null);
+ harness.check(tse.getNewLeadSelectionPath(), null);
+ }
+
+ public void checkConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Object, TreePath[], boolean[], TreePath, TreePath)");
+ TreeSelectionModel m = new DefaultTreeSelectionModel();
+ TreePath p1A = new TreePath("A");
+ TreePath p1B = new TreePath("AA");
+ TreePath[] p1 = new TreePath[] {p1A, p1B};
+ TreePath p2 = new TreePath("B");
+ TreePath p3 = new TreePath("C");
+ boolean[] b = new boolean[] {true, false};
+ TreeSelectionEvent tse = new TreeSelectionEvent(m, p1, b, p2, p3);
+ harness.check(tse.getSource(), m);
+ harness.check(tse.getPath(), p1A);
+ harness.check(tse.getPaths().length, 2);
+ harness.check(tse.getPaths()[0], p1A);
+ harness.check(tse.getPaths()[1], p1B);
+ harness.check(tse.isAddedPath(), true);
+ harness.check(tse.isAddedPath(0), true);
+ harness.check(tse.isAddedPath(1), false);
+ harness.check(tse.getOldLeadSelectionPath(), p2);
+ harness.check(tse.getNewLeadSelectionPath(), p3);
+
+ // check null source
+ boolean pass = false;
+ try
+ {
+ tse = new TreeSelectionEvent(null, p1, b, p2, p3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null path array
+ tse = new TreeSelectionEvent(m, null, b, p2, p3);
+
+ // ...constructor allows it, but then fails at getPath()
+ pass = false;
+ try
+ {
+ tse.getPath();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ pass = false;
+ try
+ {
+ tse.getPaths();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null boolean array
+ tse = new TreeSelectionEvent(m, p1, null, p2, p3);
+ pass = false;
+ try
+ {
+ tse.isAddedPath();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ tse.isAddedPath(0);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null old path
+ tse = new TreeSelectionEvent(m, p1, b, null, p3);
+ harness.check(tse.getOldLeadSelectionPath(), null);
+
+ // check null new path
+ tse = new TreeSelectionEvent(m, p1, b, p2, null);
+ harness.check(tse.getNewLeadSelectionPath(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/event/TreeSelectionEvent/isAddedPath.java b/gnu/testlet/javax/swing/event/TreeSelectionEvent/isAddedPath.java
new file mode 100644
index 00000000..d07ffb58
--- /dev/null
+++ b/gnu/testlet/javax/swing/event/TreeSelectionEvent/isAddedPath.java
@@ -0,0 +1,103 @@
+/* isAddedPath.java -- some checks for the isAddedPath() methods in the
+ TreeSelectionEvent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.event.TreeSelectionEvent;
+
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isAddedPath implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ checkMethod1(harness);
+ checkMethod2(harness);
+ checkMethod3(harness);
+ }
+
+ public void checkMethod1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ TreeSelectionModel m = new DefaultTreeSelectionModel();
+ TreePath p1 = new TreePath("A");
+ TreeSelectionEvent tse = new TreeSelectionEvent(m, p1, false, null, null);
+ harness.check(tse.isAddedPath(), false);
+ }
+
+ public void checkMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ TreeSelectionModel m = new DefaultTreeSelectionModel();
+ TreePath p1A = new TreePath("A");
+ TreePath p1B = new TreePath("AA");
+ TreePath[] p1 = new TreePath[] {p1A, p1B};
+ boolean[] b = new boolean[] {true, false};
+ TreeSelectionEvent tse = new TreeSelectionEvent(m, p1, b, null, null);
+ harness.check(tse.isAddedPath(), true);
+ harness.check(tse.isAddedPath(0), true);
+ harness.check(tse.isAddedPath(1), false);
+ }
+
+ public void checkMethod3(TestHarness harness)
+ {
+ harness.checkPoint("(TreePath)");
+ TreeSelectionModel m = new DefaultTreeSelectionModel();
+ TreePath p1A = new TreePath("A");
+ TreePath p1B = new TreePath("AA");
+ TreePath[] p1 = new TreePath[] {p1A, p1B};
+ boolean[] b = new boolean[] {true, false};
+ TreeSelectionEvent tse = new TreeSelectionEvent(m, p1, b, null, null);
+ harness.check(tse.isAddedPath(p1A), true);
+ harness.check(tse.isAddedPath(p1B), false);
+
+ // try path not recognised
+ boolean pass = false;
+ try
+ {
+ tse.isAddedPath(new TreePath("X"));
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null path
+ pass = false;
+ try
+ {
+ tse.isAddedPath(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/filechooser/CVS/Entries b/gnu/testlet/javax/swing/filechooser/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/filechooser/CVS/Entries.Log b/gnu/testlet/javax/swing/filechooser/CVS/Entries.Log
new file mode 100644
index 00000000..d2e16e1a
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/FileSystemView////
+A D/FileView////
diff --git a/gnu/testlet/javax/swing/filechooser/CVS/Repository b/gnu/testlet/javax/swing/filechooser/CVS/Repository
new file mode 100644
index 00000000..b3e779cb
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/filechooser
diff --git a/gnu/testlet/javax/swing/filechooser/CVS/Root b/gnu/testlet/javax/swing/filechooser/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Entries b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Entries
new file mode 100644
index 00000000..9379cdcd
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Entries
@@ -0,0 +1,2 @@
+/getFileSystemView.java/1.1/Tue Oct 11 09:35:48 2005//
+D
diff --git a/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Repository b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Repository
new file mode 100644
index 00000000..55124c4d
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/filechooser/FileSystemView
diff --git a/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Root b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileSystemView/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/filechooser/FileSystemView/getFileSystemView.java b/gnu/testlet/javax/swing/filechooser/FileSystemView/getFileSystemView.java
new file mode 100644
index 00000000..29b40c43
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileSystemView/getFileSystemView.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.filechooser.FileSystemView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * Some checks for the getFileSystemView() method of the
+ * {@link FileSystemView} class.
+ */
+public class getFileSystemView implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // the method returns the same FileSystemView instance every time
+ FileSystemView fsv1 = FileSystemView.getFileSystemView();
+ FileSystemView fsv2 = FileSystemView.getFileSystemView();
+ harness.check(fsv1 == fsv2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/CVS/Entries b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Entries
new file mode 100644
index 00000000..9906b831
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Entries
@@ -0,0 +1,7 @@
+/MyFileView.java/1.1/Mon Sep 19 20:22:59 2005//
+/getDescription.java/1.2/Wed May 21 13:30:48 2008//
+/getIcon.java/1.2/Wed May 21 13:30:48 2008//
+/getName.java/1.2/Wed May 21 13:30:48 2008//
+/getTypeDescription.java/1.2/Wed May 21 13:30:48 2008//
+/isTraversable.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/CVS/Repository b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Repository
new file mode 100644
index 00000000..77474052
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/filechooser/FileView
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/CVS/Root b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/MyFileView.java b/gnu/testlet/javax/swing/filechooser/FileView/MyFileView.java
new file mode 100644
index 00000000..26463d43
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/MyFileView.java
@@ -0,0 +1,33 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * For testing the default methods in FileView.
+ */
+public class MyFileView extends FileView
+{
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/getDescription.java b/gnu/testlet/javax/swing/filechooser/FileView/getDescription.java
new file mode 100644
index 00000000..c5b19a86
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/getDescription.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyFileView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the getDescription() method in the {@link FileView} class.
+ */
+public class getDescription implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileView fv = new MyFileView();
+ File f = new File("File1.txt");
+ harness.check(fv.getDescription(f), null);
+ harness.check(fv.getDescription(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/getIcon.java b/gnu/testlet/javax/swing/filechooser/FileView/getIcon.java
new file mode 100644
index 00000000..727bb108
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/getIcon.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyFileView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the getIcon() method in the {@link FileView} class.
+ */
+public class getIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileView fv = new MyFileView();
+ File f = new File("File1.txt");
+ harness.check(fv.getIcon(f), null);
+ harness.check(fv.getIcon(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/getName.java b/gnu/testlet/javax/swing/filechooser/FileView/getName.java
new file mode 100644
index 00000000..b3ed6989
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/getName.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyFileView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the getName() method in the {@link FileView} class.
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileView fv = new MyFileView();
+ File f = new File("File1.txt");
+ harness.check(fv.getName(f), null);
+ harness.check(fv.getName(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java b/gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java
new file mode 100644
index 00000000..90485426
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/getTypeDescription.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: MyFileView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the getTypeDescription() method in the {@link FileView}
+ * class.
+ */
+public class getTypeDescription implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileView fv = new MyFileView();
+ File f = new File("File1.txt");
+ harness.check(fv.getTypeDescription(f), null);
+ harness.check(fv.getTypeDescription(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java b/gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java
new file mode 100644
index 00000000..0c5b88f2
--- /dev/null
+++ b/gnu/testlet/javax/swing/filechooser/FileView/isTraversable.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyFileView
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.filechooser.FileView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.filechooser.FileView;
+
+/**
+ * Some checks for the isTraversable() method in the {@link FileView} class.
+ */
+public class isTraversable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileView fv = new MyFileView();
+ File f = new File("File1.txt");
+ harness.check(fv.isTraversable(f), null);
+ harness.check(fv.isTraversable(null), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/CVS/Entries b/gnu/testlet/javax/swing/plaf/CVS/Entries
new file mode 100644
index 00000000..d36cf0c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/CVS/Entries
@@ -0,0 +1,2 @@
+/TestLookAndFeel.java/1.1/Fri Oct 21 09:08:16 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/CVS/Entries.Log
new file mode 100644
index 00000000..c8644bfe
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/ColorUIResource////
+A D/IconUIResource////
+A D/basic////
+A D/metal////
diff --git a/gnu/testlet/javax/swing/plaf/CVS/Repository b/gnu/testlet/javax/swing/plaf/CVS/Repository
new file mode 100644
index 00000000..6b9e5a53
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf
diff --git a/gnu/testlet/javax/swing/plaf/CVS/Root b/gnu/testlet/javax/swing/plaf/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Entries b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Entries
new file mode 100644
index 00000000..1231337d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Entries
@@ -0,0 +1,4 @@
+/constructors.java/1.1/Tue May 3 21:20:04 2005//
+/equals.java/1.1/Tue May 3 21:20:04 2005//
+/serialization.java/1.1/Tue May 3 21:20:04 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Repository b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Repository
new file mode 100644
index 00000000..d72bbe68
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/ColorUIResource
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Root b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/constructors.java b/gnu/testlet/javax/swing/plaf/ColorUIResource/constructors.java
new file mode 100644
index 00000000..c6b67ed9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/constructors.java
@@ -0,0 +1,244 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.ColorUIResource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+
+/**
+ * Some checks for the constructors in the {@link ColorUIResource} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(Color)");
+ ColorUIResource c1 = new ColorUIResource(Color.blue);
+ harness.check(c1.getRGB() == Color.blue.getRGB());
+
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ /* ColorUIResource c = */ new ColorUIResource(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(float, float, float)");
+ ColorUIResource c = new ColorUIResource(0.2f, 0.4f, 0.6f);
+ harness.check(c.getRed(), 51);
+ harness.check(c.getGreen(), 102);
+ harness.check(c.getBlue(), 153);
+ harness.check(c.getAlpha(), 255);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new ColorUIResource(-0.2f, 0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(0.2f, -0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(0.2f, 0.4f, -0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(1.2f, 0.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(0.2f, 1.4f, 0.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(0.2f, 0.4f, 1.6f);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ ColorUIResource c = new ColorUIResource(0x12345678);
+ harness.check(c.getRed(), 0x34);
+ harness.check(c.getGreen(), 0x56);
+ harness.check(c.getBlue(), 0x78);
+ harness.check(c.getAlpha(), 255);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, int)");
+ ColorUIResource c = new ColorUIResource(12, 34, 56);
+ harness.check(c.getRed(), 12);
+ harness.check(c.getGreen(), 34);
+ harness.check(c.getBlue(), 56);
+ harness.check(c.getAlpha(), 255);
+
+ // negative red
+ boolean pass = false;
+ try
+ {
+ c = new ColorUIResource(-12, 34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative green
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(12, -34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative blue
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(12, 34, -56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // red > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(512, 34, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // green > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(12, 534, 56);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // blue > 1.0
+ pass = false;
+ try
+ {
+ c = new ColorUIResource(12, 34, 556);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/equals.java b/gnu/testlet/javax/swing/plaf/ColorUIResource/equals.java
new file mode 100644
index 00000000..ae95081a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/equals.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.ColorUIResource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+
+/**
+ * Checks that the equals() method in the {@link ColorUIResource} class works
+ * correctly.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ColorUIResource c1 = new ColorUIResource(Color.blue);
+ ColorUIResource c2 = new ColorUIResource(Color.blue);
+ harness.check(c1.equals(c2));
+ harness.check(c2.equals(c1));
+
+ harness.check(c1.equals(Color.blue));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/ColorUIResource/serialization.java b/gnu/testlet/javax/swing/plaf/ColorUIResource/serialization.java
new file mode 100644
index 00000000..0047005a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/ColorUIResource/serialization.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.ColorUIResource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+import javax.swing.plaf.ColorUIResource;
+
+/**
+ * Some checks for serialization of a {@link ColorUIResource} instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ ColorUIResource c1 = new ColorUIResource(Color.red);
+ ColorUIResource c2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(c1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ c2 = (ColorUIResource) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(c1.equals(c2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Entries b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Entries
new file mode 100644
index 00000000..b6e1b4da
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Mon Jun 19 09:47:39 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Repository b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Repository
new file mode 100644
index 00000000..93861e8b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/IconUIResource
diff --git a/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Root b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/IconUIResource/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/IconUIResource/constructor.java b/gnu/testlet/javax/swing/plaf/IconUIResource/constructor.java
new file mode 100644
index 00000000..9787c1c6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/IconUIResource/constructor.java
@@ -0,0 +1,48 @@
+/* constructor.java -- some checks for the constructor in the IconUIResource
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.plaf.IconUIResource;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.IconUIResource;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // check null argument
+ boolean pass = false;
+ try
+ {
+ IconUIResource r = new IconUIResource(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/TestLookAndFeel.java b/gnu/testlet/javax/swing/plaf/TestLookAndFeel.java
new file mode 100644
index 00000000..2d5aac86
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/TestLookAndFeel.java
@@ -0,0 +1,62 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.basic.BasicLookAndFeel;
+
+/**
+ * A test look and feel based on the BasicLookAndFeel.
+ */
+public class TestLookAndFeel extends BasicLookAndFeel {
+
+ public String getID()
+ {
+ return "TestLookAndFeel";
+ }
+ public String getName()
+ {
+ return "TestLookAndFeel";
+ }
+ public String getDescription()
+ {
+ return "TestLookAndFeel";
+ }
+ public boolean isSupportedLookAndFeel()
+ {
+ return true;
+ }
+ public boolean isNativeLookAndFeel()
+ {
+ return false;
+ }
+ public void initSystemColorDefaults(UIDefaults defaults)
+ {
+ super.initSystemColorDefaults(defaults);
+ }
+ public void initComponentDefaults(UIDefaults defaults)
+ {
+ super.initComponentDefaults(defaults);
+ }
+ public void initClassDefaults(UIDefaults defaults)
+ {
+ super.initClassDefaults(defaults);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Entries
new file mode 100644
index 00000000..ac410698
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Entries
@@ -0,0 +1,6 @@
+/getMaximumSize.java/1.2/Fri Jul 7 13:38:04 2006//
+/getMinimumSize.java/1.2/Fri Jul 7 13:38:04 2006//
+/getPreferredSize.java/1.2/Fri Jul 7 13:38:04 2006//
+/isFocusTraversable.java/1.1/Fri Sep 9 04:34:53 2005//
+/isFocusable.java/1.1/Thu Jun 15 18:38:57 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Repository
new file mode 100644
index 00000000..c680db0d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java
new file mode 100644
index 00000000..e65ecf4e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMaximumSize.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicArrowButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.SwingConstants;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+/**
+ * Some checks for the getMaximumSize() method in the
+ * {@link BasicArrowButton} class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicArrowButton b = new BasicArrowButton(SwingConstants.NORTH);
+ harness.check(b.getMaximumSize(), new Dimension(Integer.MAX_VALUE,
+ Integer.MAX_VALUE));
+
+ // setting the maximum size explicitly has no effect
+ b.setMaximumSize(new Dimension(12, 34));
+ harness.check(b.getMaximumSize(), new Dimension(Integer.MAX_VALUE,
+ Integer.MAX_VALUE));
+
+ // modifying the returned value should not affect the button
+ Dimension m = b.getMaximumSize();
+ m.setSize(1, 2);
+ harness.check(b.getMaximumSize(), new Dimension(Integer.MAX_VALUE,
+ Integer.MAX_VALUE));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java
new file mode 100644
index 00000000..83770495
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getMinimumSize.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicArrowButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.SwingConstants;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+/**
+ * Some checks for the getMinimumSize() method in the
+ * {@link BasicArrowButton} class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicArrowButton b = new BasicArrowButton(SwingConstants.NORTH);
+ harness.check(b.getMinimumSize(), new Dimension(5, 5));
+
+ // setting the minimum size explicitly has no effect
+ b.setMinimumSize(new Dimension(12, 34));
+ harness.check(b.getMinimumSize(), new Dimension(5, 5));
+
+ // modifying the returned value should not affect the button
+ Dimension m = b.getMinimumSize();
+ m.setSize(1, 2);
+ harness.check(b.getMinimumSize(), new Dimension(5, 5));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java
new file mode 100644
index 00000000..287bf481
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/getPreferredSize.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicArrowButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.SwingConstants;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+/**
+ * Some checks for the getPreferredSize() method in the
+ * {@link BasicArrowButton} class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicArrowButton b = new BasicArrowButton(SwingConstants.NORTH);
+ harness.check(b.getPreferredSize(), new Dimension(16, 16));
+
+ // setting the preferred size explicitly has no effect
+ b.setPreferredSize(new Dimension(12, 34));
+ harness.check(b.getPreferredSize(), new Dimension(16, 16));
+
+ // modifying the returned value should not affect the button
+ Dimension p = b.getPreferredSize();
+ p.setSize(1, 2);
+ harness.check(b.getPreferredSize(), new Dimension(16, 16));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusTraversable.java b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusTraversable.java
new file mode 100644
index 00000000..feaa8dd1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusTraversable.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicArrowButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.SwingConstants;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+/**
+ * Some checks for the isFocusTraversable() method in the
+ * {@link BasicArrowButton} class.
+ */
+public class isFocusTraversable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicArrowButton b = new BasicArrowButton(SwingConstants.NORTH);
+ harness.check(b.isFocusTraversable(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusable.java b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusable.java
new file mode 100644
index 00000000..0bad4891
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicArrowButton/isFocusable.java
@@ -0,0 +1,47 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Tags:1.4
+
+package gnu.testlet.javax.swing.plaf.basic.BasicArrowButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.plaf.basic.BasicArrowButton;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicArrowButton b = new BasicArrowButton(0);
+ harness.check(b.isFocusable(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Entries
new file mode 100644
index 00000000..8f427329
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Entries
@@ -0,0 +1,8 @@
+/MyBasicButtonUI.java/1.2/Sun Oct 2 06:32:16 2005//
+/clearTextShiftOffset.java/1.2/Wed May 21 13:30:48 2008//
+/defaultTextIconGap.java/1.3/Wed May 21 13:30:48 2008//
+/defaultTextShiftOffset.java/1.2/Wed May 21 13:30:48 2008//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+/getTextShiftOffset.java/1.2/Wed May 21 13:30:48 2008//
+/setTextShiftOffset.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Repository
new file mode 100644
index 00000000..9db84684
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java
new file mode 100644
index 00000000..377b5bd7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/MyBasicButtonUI.java
@@ -0,0 +1,63 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import javax.swing.plaf.basic.BasicButtonUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicButtonUI extends BasicButtonUI
+{
+ public MyBasicButtonUI()
+ {
+ super();
+ }
+ public int getDefaultTextIconGapField()
+ {
+ return this.defaultTextIconGap;
+ }
+ public int getDefaultTextShiftOffsetField()
+ {
+ return this.defaultTextShiftOffset;
+ }
+ public void setDefaultTextShiftOffsetField(int offset)
+ {
+ this.defaultTextShiftOffset = offset;
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+ public int getTextShiftOffset()
+ {
+ return super.getTextShiftOffset();
+ }
+ public void setTextShiftOffset()
+ {
+ super.setTextShiftOffset();
+ }
+ public void clearTextShiftOffset()
+ {
+ super.clearTextShiftOffset();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java
new file mode 100644
index 00000000..2f6985db
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/clearTextShiftOffset.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the clearTextShiftOffset() method.
+ */
+public class clearTextShiftOffset implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getTextShiftOffset(), 0);
+ ui.setDefaultTextShiftOffsetField(99);
+ ui.setTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 99);
+ ui.clearTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java
new file mode 100644
index 00000000..d6a90c96
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextIconGap.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.5
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Checks the defaultTextIconGap field.
+ */
+public class defaultTextIconGap implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ // at first the field value is 0
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getDefaultTextIconGapField(), 0);
+
+ // the field value is updated after a call to installUI()
+ // UPDATE: in JDK1.5, it seems this update no longer happens
+ ui.installUI(new JButton());
+ harness.check(ui.getDefaultTextIconGapField(), 0 /* 4 */);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java
new file mode 100644
index 00000000..af17e4af
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/defaultTextShiftOffset.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+
+/**
+ * Checks the defaultTextShiftOffset field.
+ */
+public class defaultTextShiftOffset implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // at first the field is 0
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getDefaultTextShiftOffsetField(), 0);
+
+ // the field value is still 0 after a call to installUI()
+ ui.installUI(new JButton());
+ harness.check(ui.getDefaultTextShiftOffsetField(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java
new file mode 100644
index 00000000..5cafbf6b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getPropertyPrefix(), "Button.");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java
new file mode 100644
index 00000000..1b2632b0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/getTextShiftOffset.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getTextShiftOffset() method.
+ */
+public class getTextShiftOffset implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getTextShiftOffset(), 0);
+ ui.setTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 0);
+ ui.setDefaultTextShiftOffsetField(99);
+ ui.setTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java
new file mode 100644
index 00000000..862440b2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicButtonUI/setTextShiftOffset.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: MyBasicButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the setTextShiftOffset() method.
+ */
+public class setTextShiftOffset implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicButtonUI ui = new MyBasicButtonUI();
+ harness.check(ui.getTextShiftOffset(), 0);
+ ui.setTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 0);
+ ui.setDefaultTextShiftOffsetField(99);
+ ui.setTextShiftOffset();
+ harness.check(ui.getTextShiftOffset(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Entries
new file mode 100644
index 00000000..a2823d9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicCheckBoxMenuItemUI.java/1.1/Wed Aug 31 13:58:15 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Repository
new file mode 100644
index 00000000..69105022
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/MyBasicCheckBoxMenuItemUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/MyBasicCheckBoxMenuItemUI.java
new file mode 100644
index 00000000..a8a0b398
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/MyBasicCheckBoxMenuItemUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;
+
+import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI
+{
+ public MyBasicCheckBoxMenuItemUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java
new file mode 100644
index 00000000..c68d313c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI/getPropertyPrefix.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+// Uses: MyBasicCheckBoxMenuItemUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicCheckBoxMenuItemUI ui = new MyBasicCheckBoxMenuItemUI();
+ harness.check(ui.getPropertyPrefix(), "CheckBoxMenuItem");
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Entries
new file mode 100644
index 00000000..4e6c4d2c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicCheckBoxUI.java/1.1/Tue Sep 13 19:54:44 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Repository
new file mode 100644
index 00000000..4458576e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/MyBasicCheckBoxUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/MyBasicCheckBoxUI.java
new file mode 100644
index 00000000..1f462771
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/MyBasicCheckBoxUI.java
@@ -0,0 +1,40 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicCheckBoxUI;
+
+import javax.swing.plaf.basic.BasicCheckBoxUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicCheckBoxUI extends BasicCheckBoxUI
+{
+ public MyBasicCheckBoxUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java
new file mode 100644
index 00000000..2f1224a7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicCheckBoxUI/getPropertyPrefix.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+// Uses: MyBasicCheckBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicCheckBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicCheckBoxUI ui = new MyBasicCheckBoxUI();
+ harness.check(ui.getPropertyPrefix(), "CheckBox.");
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Entries
new file mode 100644
index 00000000..164331be
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Entries
@@ -0,0 +1,4 @@
+/addActionListener.java/1.1/Mon Nov 7 10:55:45 2005//
+/constructor.java/1.1/Mon Nov 7 10:55:45 2005//
+/removeActionListener.java/1.1/Mon Nov 7 10:55:45 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Repository
new file mode 100644
index 00000000..48551a0f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/addActionListener.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/addActionListener.java
new file mode 100644
index 00000000..57995678
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/addActionListener.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JTextField;
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+
+/**
+* Some tests for the addActionListener() method in the
+* {@link BasicComboBoxEditor} class.
+*/
+public class addActionListener implements Testlet, ActionListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicComboBoxEditor e = new BasicComboBoxEditor();
+ JTextField tf = (JTextField) e.getEditorComponent();
+ ActionListener[] listeners = tf.getActionListeners();
+ harness.check(listeners.length, 0);
+
+ e.addActionListener(this);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ // try null
+ e.addActionListener(null);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 1);
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/constructor.java
new file mode 100644
index 00000000..f8ba5b98
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/constructor.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTextField;
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+
+/**
+* Some tests for the constructor in the {@link BasicComboBoxEditor}
+* class.
+*/
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicComboBoxEditor e = new BasicComboBoxEditor();
+ JTextField f = (JTextField) e.getEditorComponent();
+ harness.check(f.getColumns(), 9);
+ harness.check(f.getBorder(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/removeActionListener.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/removeActionListener.java
new file mode 100644
index 00000000..e7d190de
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxEditor/removeActionListener.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JTextField;
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+
+/**
+* Some tests for the removeActionListener() method in the
+* {@link BasicComboBoxEditor} class.
+*/
+public class removeActionListener implements Testlet, ActionListener
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicComboBoxEditor e = new BasicComboBoxEditor();
+ JTextField tf = (JTextField) e.getEditorComponent();
+ ActionListener[] listeners = tf.getActionListeners();
+ harness.check(listeners.length, 0);
+
+ e.addActionListener(this);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 1);
+ harness.check(listeners[0], this);
+
+ e.removeActionListener(this);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 0);
+
+ // remove a listener that isn't there
+ e.removeActionListener(this);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 0);
+
+ // try null
+ e.removeActionListener(null);
+ listeners = tf.getActionListeners();
+ harness.check(listeners.length, 0);
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Entries
new file mode 100644
index 00000000..246149a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Entries
@@ -0,0 +1,13 @@
+/MyBasicComboBoxUI.java/1.2/Mon Nov 7 21:35:03 2005//
+/MyBasicComboBoxUILAF.java/1.1/Tue Oct 18 21:31:52 2005//
+/createArrowButton.java/1.4/Wed May 21 13:30:48 2008//
+/createEditor.java/1.3/Wed May 21 13:30:48 2008//
+/createRenderer.java/1.3/Wed May 21 13:30:48 2008//
+/general.java/1.2/Wed May 21 13:30:48 2008//
+/getDefaultSize.java/1.2/Wed May 21 13:30:48 2008//
+/getDisplaySize.java/1.3/Wed May 21 13:30:48 2008//
+/getMaximumSize.java/1.1/Tue Oct 18 21:31:52 2005//
+/getMinimumSize.java/1.3/Wed May 21 13:30:48 2008//
+/getPreferredSize.java/1.5/Wed May 21 13:30:48 2008//
+/layout.java/1.4/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Repository
new file mode 100644
index 00000000..278119cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java
new file mode 100644
index 00000000..9786143b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUI.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import java.awt.Dimension;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.basic.ComboPopup;
+
+/**
+ * A support class that provides access to protected methods.
+ */
+public class MyBasicComboBoxUI extends BasicComboBoxUI
+{
+ public JButton createArrowButton()
+ {
+ return super.createArrowButton();
+ }
+
+ public ComboBoxEditor createEditor()
+ {
+ return super.createEditor();
+ }
+
+ public ListCellRenderer createRenderer()
+ {
+ return super.createRenderer();
+ }
+
+ public Dimension getDefaultSize()
+ {
+ return super.getDefaultSize();
+ }
+
+ public Dimension getDisplaySize()
+ {
+ return super.getDisplaySize();
+ }
+
+ public JList getListBoxField()
+ {
+ return this.listBox;
+ }
+
+ public ComboPopup getComboPopupField()
+ {
+ return this.popup;
+ }
+
+ public JButton getArrowButton()
+ {
+ return this.arrowButton;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUILAF.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUILAF.java
new file mode 100644
index 00000000..8cfbec02
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/MyBasicComboBoxUILAF.java
@@ -0,0 +1,61 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.basic.BasicLookAndFeel;
+
+public class MyBasicComboBoxUILAF extends BasicLookAndFeel {
+
+ public String getID()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public String getName()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public String getDescription()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public boolean isSupportedLookAndFeel()
+ {
+ return true;
+ }
+ public boolean isNativeLookAndFeel()
+ {
+ return false;
+ }
+ public void initSystemColorDefaults(UIDefaults defaults)
+ {
+ super.initSystemColorDefaults(defaults);
+ }
+ public void initComponentDefaults(UIDefaults defaults)
+ {
+ super.initComponentDefaults(defaults);
+ }
+ public void initClassDefaults(UIDefaults defaults)
+ {
+ super.initClassDefaults(defaults);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java
new file mode 100644
index 00000000..73b7c798
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createArrowButton.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUILAF
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.plaf.BorderUIResource.CompoundBorderUIResource;
+import javax.swing.plaf.basic.BasicArrowButton;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the createArrowButton() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class createArrowButton implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MyBasicComboBoxUILAF());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ JButton b = ui.createArrowButton();
+ harness.check(b instanceof BasicArrowButton);
+ Border border = b.getBorder();
+ harness.check(border instanceof CompoundBorderUIResource);
+ // the insets and margin are presumably ignored when this button is
+ // drawn...
+ Insets insets = b.getInsets();
+ harness.check(insets, new Insets(4, 17, 5, 17));
+ Insets margin = b.getMargin();
+ harness.check(margin, new Insets(2, 14, 2, 14));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java
new file mode 100644
index 00000000..d87707e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createEditor.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Component;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.JTextField;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.basic.BasicComboBoxEditor.UIResource;
+
+/**
+ * Some checks for the createEditor() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class createEditor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ ComboBoxEditor editor = ui.createEditor();
+ harness.check(editor instanceof UIResource);
+ Component comp = editor.getEditorComponent();
+ harness.check(comp instanceof JTextField);
+ JTextField tf = (JTextField) comp;
+ harness.check(tf.getColumns(), 9);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java
new file mode 100644
index 00000000..ee1a1ad5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/createRenderer.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUILAF
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+
+import javax.swing.JComboBox;
+import javax.swing.ListCellRenderer;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the createRenderer() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class createRenderer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MyBasicComboBoxUILAF());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // use this to check that the defaults are just those for a JLabel
+ UIManager.put("Label.font", new Font("Dialog", Font.PLAIN, 21));
+ UIManager.put("Label.foreground", Color.green);
+ UIManager.put("Label.background", Color.yellow);
+
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ ListCellRenderer renderer = ui.createRenderer();
+ Component c = (Component) renderer;
+
+ harness.check(c.getFont(), new Font("Dialog", Font.PLAIN, 21));
+ harness.check(c.getForeground(), Color.green);
+ harness.check(c.getBackground(), Color.yellow);
+
+ // confirm that the method creates a new instance every time
+ ListCellRenderer renderer2 = ui.createRenderer();
+ harness.check(renderer != renderer2);
+
+ JComboBox cb = new JComboBox();
+ ListCellRenderer renderer3 = cb.getRenderer();
+ Component c3 = (Component) renderer3;
+ harness.check(c3.getFont(), new Font("Dialog", Font.PLAIN, 21));
+ harness.check(c3.getForeground(), Color.green);
+ harness.check(c3.getBackground(), Color.yellow);
+
+ // changing the font on the combo box doesn't update the renderer font
+ cb.setFont(new Font("Dialog", Font.BOLD, 10));
+ harness.check(c3.getFont(), new Font("Dialog", Font.PLAIN, 21));
+ ListCellRenderer renderer4 = cb.getRenderer();
+ harness.check(renderer3 == renderer4);
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java
new file mode 100644
index 00000000..7f05bca8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/general.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * Some checks for the createUI() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class general implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ JList list1 = ui.getListBoxField();
+ JList list2 = ui.getComboPopupField().getList();
+ harness.check(list1 == list2);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java
new file mode 100644
index 00000000..8a114069
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDefaultSize.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+
+import javax.swing.JComboBox;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * Some checks for the getDefaultSize() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class getDefaultSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ int additionalHeight = 2; // margin? border?
+ int additionalWidth = 2;
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getDefaultSize(), new Dimension(width, height));
+ cb.setFont(new Font("Dialog", Font.PLAIN, 32));
+ fm = cb.getFontMetrics(cb.getFont());
+ width = fm.charWidth(' ') + additionalWidth;
+ height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getDefaultSize(), new Dimension(width, height));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java
new file mode 100644
index 00000000..5f39825f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getDisplaySize.java
@@ -0,0 +1,167 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+
+import javax.swing.JComboBox;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDisplaySize() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class getDisplaySize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testNotEditable(harness);
+ testEditable(harness);
+ }
+
+ /**
+ * Run some checks for a JComboBox that is not editable.
+ *
+ * @param harness the test harness.
+ */
+ private void testNotEditable(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ int additionalHeight = 2; // margin? border?
+ int additionalWidth = 2;
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("ABC");
+ width = fm.stringWidth("ABC") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("A longer item");
+ width = fm.stringWidth("A longer item") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Prototype");
+ width = fm.stringWidth("Prototype") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ // restore MetalLookAndFeel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * Run some checks for a JComboBox that is editable.
+ *
+ * @param harness the test harness.
+ */
+ private void testEditable(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ cb.setEditable(true);
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ JTextField tf = (JTextField) cb.getEditor().getEditorComponent();
+ int columns = tf.getColumns();
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // for an editable JComboBox the display size is calculated from the
+ // preferred size of the JTextField it seems, or the prototype display
+ // value in some cases...
+ int width = fm.charWidth('m') * columns;
+ int height = fm.getHeight() + 2; // the 2 seems to be a fixed margin
+
+ // not sure why the width here needs + 1..
+ harness.check(ui.getDisplaySize(), new Dimension(width + 1, height));
+
+ cb.addItem("ABC");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("A longer item");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Prototype");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Long Prototype Display Value");
+ width = fm.stringWidth("Long Prototype Display Value") + 2;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMaximumSize.java
new file mode 100644
index 00000000..7dcb186c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMaximumSize.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JComboBox;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * Some checks for the getMaximumSize() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ BasicComboBoxUI ui = new BasicComboBoxUI();
+ cb.setUI(ui);
+ harness.check(ui.getMaximumSize(cb), new Dimension(32767, 32767));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java
new file mode 100644
index 00000000..4aa4cdcb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getMinimumSize.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * Some checks for the getMinimumSize() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ int additionalHeight = 2; // margin? border?
+ int additionalWidth = 2;
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width + height, height));
+ // the width is the display width plus the button width and
+ // the button width is equal to 'height'
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ width = fm.charWidth('X') + additionalWidth;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width + height, height));
+
+ cb.setPrototypeDisplayValue("XX");
+ width = fm.stringWidth("XX") + additionalWidth;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width + height, height));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java
new file mode 100644
index 00000000..5d6cd62d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/getPreferredSize.java
@@ -0,0 +1,110 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUI
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JTextField;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+
+/**
+ * Some checks for the getPreferredSize() method in the
+ * {@link BasicComboBoxUI} class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testNonEditable(harness);
+ testEditable(harness);
+ }
+
+ private void testNonEditable(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ BasicComboBoxUI ui = new BasicComboBoxUI();
+ cb.setUI(ui);
+ int additionalHeight = 2; // margin? border?
+ int additionalWidth = 2;
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getPreferredSize(cb),
+ new Dimension(width + height, height));
+ // the width is the display width plus the button width and
+ // the button width is equal to 'height'
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ width = fm.charWidth('X') + additionalWidth;
+ harness.check(ui.getPreferredSize(cb),
+ new Dimension(width + height, height));
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {null}));
+ harness.check(ui.getPreferredSize(cb).height, height);
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {""}));
+ harness.check(ui.getPreferredSize(cb).height, height);
+
+ cb.setPrototypeDisplayValue("XX");
+ width = fm.stringWidth("XX") + additionalWidth;
+ harness.check(ui.getPreferredSize(cb),
+ new Dimension(width + height, height));
+ }
+
+ private void testEditable(TestHarness harness)
+ {
+ harness.checkPoint("testEditable()");
+ JComboBox cb = new JComboBox();
+ BasicComboBoxUI ui = new BasicComboBoxUI();
+ cb.setUI(ui);
+ JTextField tf = (JTextField) cb.getEditor().getEditorComponent();
+ cb.setEditable(true);
+ Font font = cb.getFont();
+ FontMetrics fm = cb.getFontMetrics(font);
+ int height = fm.getHeight() + 2;
+ int width = fm.stringWidth("m") * tf.getColumns() + height;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ cb.setPrototypeDisplayValue("XX");
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java
new file mode 100644
index 00000000..d810ea6d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicComboBoxUI/layout.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+// Uses: MyBasicComboBoxUILAF
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Rectangle;
+
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the layout in the {@link BasicComboBoxUI} class.
+ */
+public class layout implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MyBasicComboBoxUILAF());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ cb.setEditable(true);
+ JFrame frame = new JFrame();
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.add(cb);
+ frame.setContentPane(panel);
+ frame.pack();
+ JTextField tf = (JTextField) cb.getEditor().getEditorComponent();
+ Font font = cb.getFont();
+ FontMetrics fm = cb.getFontMetrics(font);
+ int height = cb.getHeight();
+ int width = fm.stringWidth("m") * tf.getColumns() + 1;
+ harness.check(tf.getBounds(), new Rectangle(0, 0, width, height));
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Entries
new file mode 100644
index 00000000..466fd217
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicEditorPaneUI.java/1.1/Tue Sep 13 19:54:44 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Repository
new file mode 100644
index 00000000..efa5c116
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java
new file mode 100644
index 00000000..44c6dcf4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/MyBasicEditorPaneUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicEditorPaneUI;
+
+import javax.swing.plaf.basic.BasicEditorPaneUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicEditorPaneUI extends BasicEditorPaneUI
+{
+ public MyBasicEditorPaneUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java
new file mode 100644
index 00000000..cb5f3862
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicEditorPaneUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicEditorPaneUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicEditorPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicEditorPaneUI ui = new MyBasicEditorPaneUI();
+ harness.check(ui.getPropertyPrefix(), "EditorPane");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Entries
new file mode 100644
index 00000000..dc1d6d0e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Entries
@@ -0,0 +1,20 @@
+/MyBasicFileChooserUI.java/1.1/Thu Oct 13 08:39:46 2005//
+/constructor.java/1.1/Thu Oct 13 08:39:46 2005//
+/getApproveButton.java/1.1/Thu Oct 13 08:39:46 2005//
+/getApproveButtonMnemonic.java/1.1/Thu Oct 13 08:39:46 2005//
+/getApproveButtonText.java/1.2/Mon Dec 19 12:21:16 2005//
+/getApproveButtonToolTipText.java/1.1/Thu Oct 13 08:39:46 2005//
+/getApproveSelectionAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/getCancelSelectionAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/getChangeToParentDirectoryAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/getDialogTitle.java/1.1/Thu Oct 13 08:39:46 2005//
+/getDirectoryName.java/1.1/Thu Oct 13 08:39:46 2005//
+/getFileName.java/1.1/Thu Oct 13 08:39:46 2005//
+/getFileView.java/1.1/Thu Oct 13 08:39:46 2005//
+/getGoHomeAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/getNewFolderAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/getUpdateAction.java/1.1/Thu Oct 13 08:39:46 2005//
+/installIcons.java/1.1/Thu Oct 13 08:39:46 2005//
+/installStrings.java/1.1/Thu Oct 13 08:39:46 2005//
+/uninstallStrings.java/1.1/Thu Oct 13 08:39:46 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Repository
new file mode 100644
index 00000000..b6c632e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/MyBasicFileChooserUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/MyBasicFileChooserUI.java
new file mode 100644
index 00000000..21005335
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/MyBasicFileChooserUI.java
@@ -0,0 +1,173 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Provides access to protected fields and methods.
+ */
+public class MyBasicFileChooserUI extends BasicFileChooserUI
+{
+
+ public MyBasicFileChooserUI(JFileChooser fc)
+ {
+ super(fc);
+ }
+ public JButton getApproveButton(JFileChooser fc)
+ {
+ return super.getApproveButton(fc);
+ }
+ public int getCancelButtonMnemonic()
+ {
+ return this.cancelButtonMnemonic;
+ }
+ public String getCancelButtonText()
+ {
+ return this.cancelButtonText;
+ }
+ public String getCancelButtonToolTipText()
+ {
+ return this.cancelButtonToolTipText;
+ }
+ public int getDirectoryOpenButtonMnemonic()
+ {
+ return this.directoryOpenButtonMnemonic;
+ }
+ public String getDirectoryOpenButtonText()
+ {
+ return this.directoryOpenButtonText;
+ }
+ public String getDirectoryOpenButtonToolTipText()
+ {
+ return this.directoryOpenButtonToolTipText;
+ }
+ public int getHelpButtonMnemonic()
+ {
+ return this.helpButtonMnemonic;
+ }
+ public String getHelpButtonText()
+ {
+ return this.helpButtonText;
+ }
+ public String getHelpButtonToolTipText()
+ {
+ return this.helpButtonToolTipText;
+ }
+ public int getOpenButtonMnemonic()
+ {
+ return this.openButtonMnemonic;
+ }
+ public String getOpenButtonText()
+ {
+ return this.openButtonText;
+ }
+ public String getOpenButtonToolTipText()
+ {
+ return this.openButtonToolTipText;
+ }
+ public int getSaveButtonMnemonic()
+ {
+ return this.saveButtonMnemonic;
+ }
+ public String getSaveButtonText()
+ {
+ return this.saveButtonText;
+ }
+ public String getSaveButtonToolTipText()
+ {
+ return this.saveButtonToolTipText;
+ }
+ public int getUpdateButtonMnemonic()
+ {
+ return this.updateButtonMnemonic;
+ }
+ public String getUpdateButtonText()
+ {
+ return this.updateButtonText;
+ }
+ public String getUpdateButtonToolTipText()
+ {
+ return this.updateButtonToolTipText;
+ }
+ public void installStrings(JFileChooser fc)
+ {
+ super.installStrings(fc);
+ }
+ public void uninstallStrings(JFileChooser fc)
+ {
+ super.uninstallStrings(fc);
+ }
+ public void installIcons(JFileChooser fc)
+ {
+ super.installIcons(fc);
+ }
+ public void uninstallIcons(JFileChooser fc)
+ {
+ super.uninstallIcons(fc);
+ }
+ public Icon getComputerIcon()
+ {
+ return this.computerIcon;
+ }
+ public Icon getDetailsViewIcon()
+ {
+ return this.detailsViewIcon;
+ }
+ public Icon getDirectoryIcon()
+ {
+ return this.directoryIcon;
+ }
+ public Icon getFileIcon()
+ {
+ return this.fileIcon;
+ }
+ public Icon getFloppyDriveIcon()
+ {
+ return this.floppyDriveIcon;
+ }
+ public Icon getHardDriveIcon()
+ {
+ return this.hardDriveIcon;
+ }
+ public Icon getHomeFolderIcon()
+ {
+ return this.homeFolderIcon;
+ }
+ public Icon getListViewIcon()
+ {
+ return this.listViewIcon;
+ }
+ public Icon getNewFolderIcon()
+ {
+ return this.newFolderIcon;
+ }
+ public Icon getUpFolderIcon()
+ {
+ return this.upFolderIcon;
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/constructor.java
new file mode 100644
index 00000000..1a52349c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/constructor.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+// Uses: MyBasicFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the constructor in the {@link BasicFileChooserUI}
+ * class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MyBasicFileChooserUI ui = new MyBasicFileChooserUI(fc);
+ harness.check(ui.getFileChooser(), null);
+ harness.check(ui.getCancelButtonText(), null);
+ harness.check(ui.getCancelButtonToolTipText(), null);
+ harness.check(ui.getApproveButton(fc), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButton.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButton.java
new file mode 100644
index 00000000..3a717428
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButton.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: MyBasicFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getApproveButton() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class getApproveButton implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogType(JFileChooser.OPEN_DIALOG);
+ MyBasicFileChooserUI ui = new MyBasicFileChooserUI(fc);
+ ui.installUI(fc);
+
+ // the method just returns a reference to the button, it doesn't create
+ // a new one each time the method is called...
+ JButton b1 = ui.getApproveButton(fc);
+ JButton b2 = ui.getApproveButton(fc);
+ harness.check(b1 == b2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonMnemonic.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonMnemonic.java
new file mode 100644
index 00000000..51cff7ce
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonMnemonic.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getApproveButtonMnemonic() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class getApproveButtonMnemonic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogType(JFileChooser.OPEN_DIALOG);
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ ui.installUI(fc);
+ harness.check(ui.getApproveButtonMnemonic(fc), 79);
+ fc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(ui.getApproveButtonMnemonic(fc), 83);
+ fc.setApproveButtonMnemonic(99);
+ harness.check(ui.getApproveButtonMnemonic(fc), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java
new file mode 100644
index 00000000..d8a22313
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonText.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getApproveButtonText() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class getApproveButtonText implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogType(JFileChooser.OPEN_DIALOG);
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ ui.installUI(fc);
+ harness.check(ui.getApproveButtonText(fc), "Open");
+ fc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(ui.getApproveButtonText(fc), "Save");
+ fc.setApproveButtonText("Hello World!");
+ harness.check(ui.getApproveButtonText(fc), "Hello World!");
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ /*String t =*/ ui.getApproveButtonText(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonToolTipText.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonToolTipText.java
new file mode 100644
index 00000000..b35395d4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveButtonToolTipText.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getApproveButtonToolTipText() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class getApproveButtonToolTipText implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogType(JFileChooser.OPEN_DIALOG);
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ ui.installUI(fc);
+ harness.check(ui.getApproveButtonToolTipText(fc), "Open selected file");
+ fc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(ui.getApproveButtonToolTipText(fc), "Save selected file");
+ fc.setApproveButtonToolTipText("Hello World!");
+ harness.check(ui.getApproveButtonToolTipText(fc), "Hello World!");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveSelectionAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveSelectionAction.java
new file mode 100644
index 00000000..78dfe410
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getApproveSelectionAction.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getApproveSelectionAction.
+ */
+public class getApproveSelectionAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ Action a = ui.getApproveSelectionAction();
+ harness.check(a.getValue("Name"), "approveSelection");
+
+ Action a2 = ui.getApproveSelectionAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getCancelSelectionAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getCancelSelectionAction.java
new file mode 100644
index 00000000..70f5feb8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getCancelSelectionAction.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getCancelSelectionAction() method.
+ */
+public class getCancelSelectionAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ Action a = ui.getCancelSelectionAction();
+ harness.check(a.getValue("Name"), null);
+
+ Action a2 = ui.getCancelSelectionAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getChangeToParentDirectoryAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getChangeToParentDirectoryAction.java
new file mode 100644
index 00000000..29e285b0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getChangeToParentDirectoryAction.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getChangeToParentDirectoryAction() method.
+ */
+public class getChangeToParentDirectoryAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ Action a = ui.getChangeToParentDirectoryAction();
+ harness.check(a.getValue("Name"), "Go Up");
+
+ Action a2 = ui.getChangeToParentDirectoryAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDialogTitle.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDialogTitle.java
new file mode 100644
index 00000000..f141aece
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDialogTitle.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getDialogTitle() method.
+ */
+public class getDialogTitle implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ harness.check(ui.getDialogTitle(fc), null);
+ ui.installUI(fc);
+ harness.check(ui.getDialogTitle(fc), "Open");
+ fc.setDialogType(JFileChooser.SAVE_DIALOG);
+ harness.check(ui.getDialogTitle(fc), "Save");
+ fc.setDialogTitle("XYZ");
+ harness.check(ui.getDialogTitle(fc), "XYZ");
+ fc.setDialogTitle(null);
+ harness.check(ui.getDialogTitle(fc), "Save");
+
+ // try a null argument
+ boolean pass = false;
+ try
+ {
+ /*String t =*/ ui.getDialogTitle(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDirectoryName.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDirectoryName.java
new file mode 100644
index 00000000..ee0e66b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getDirectoryName.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getDirectoryName() method in the {@link BasicFileChooserUI}
+ * class.
+ */
+public class getDirectoryName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ harness.check(ui.getDirectoryName(), null);
+ ui.installUI(fc);
+ harness.check(ui.getDirectoryName(), null);
+ ui.setDirectoryName("XYZ");
+ harness.check(ui.getDirectoryName(), null);
+ fc.setCurrentDirectory(new File("ABC"));
+ harness.check(ui.getDirectoryName(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileName.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileName.java
new file mode 100644
index 00000000..31210cd1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileName.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getFileName() method in the {@link BasicFileChooserUI}
+ * class.
+ */
+public class getFileName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ harness.check(ui.getFileName(), null);
+ ui.installUI(fc);
+ harness.check(ui.getFileName(), null);
+ ui.setFileName("XYZ");
+ harness.check(ui.getFileName(), null);
+ fc.setCurrentDirectory(new File("ABC"));
+ harness.check(ui.getFileName(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileView.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileView.java
new file mode 100644
index 00000000..9bbc9cb8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getFileView.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileView;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getFileView() method in the {@link BasicFileChooserUI}
+ * class.
+ */
+public class getFileView implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ BasicFileChooserUI ui = new BasicFileChooserUI(fc);
+ harness.check(ui.getFileView(fc) != null);
+ ui.installUI(fc);
+ FileView fv = ui.getFileView(fc);
+ harness.check(fv != null);
+
+ // the file chooser setting is ignored
+ FileView myFV = new FileView() {};
+ fc.setFileView(myFV);
+ harness.check(ui.getFileView(fc) != myFV);
+ harness.check(ui.getFileView(null) != null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getGoHomeAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getGoHomeAction.java
new file mode 100644
index 00000000..bca95cf7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getGoHomeAction.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getGoHomeAction() method.
+ */
+public class getGoHomeAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ AbstractAction a = (AbstractAction) ui.getGoHomeAction();
+ harness.check(a.getValue("Name"), "Go Home");
+ Object[] keys = a.getKeys();
+ harness.check(keys.length, 1);
+ Action a2 = ui.getGoHomeAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getNewFolderAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getNewFolderAction.java
new file mode 100644
index 00000000..67cd0369
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getNewFolderAction.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getNewFolderAction() method.
+ */
+public class getNewFolderAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ Action a = ui.getNewFolderAction();
+ harness.check(a.getValue("Name"), "New Folder");
+
+ Action a2 = ui.getNewFolderAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getUpdateAction.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getUpdateAction.java
new file mode 100644
index 00000000..3daba558
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/getUpdateAction.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Action;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the getUpdateAction() method.
+ */
+public class getUpdateAction implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicFileChooserUI ui = new BasicFileChooserUI(new JFileChooser());
+ Action a = ui.getUpdateAction();
+ harness.check(a.getValue("Name"), null);
+
+ Action a2 = ui.getUpdateAction();
+ harness.check(a == a2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installIcons.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installIcons.java
new file mode 100644
index 00000000..f57d4f2a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installIcons.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+// Uses: MyBasicFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the installIcons() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class installIcons implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MyBasicFileChooserUI ui = new MyBasicFileChooserUI(fc);
+ harness.check(ui.getComputerIcon(), null);
+ harness.check(ui.getDetailsViewIcon(), null);
+ harness.check(ui.getDirectoryIcon(), null);
+ harness.check(ui.getFileIcon(), null);
+ harness.check(ui.getFloppyDriveIcon(), null);
+ harness.check(ui.getHardDriveIcon(), null);
+ harness.check(ui.getHomeFolderIcon(), null);
+ harness.check(ui.getListViewIcon(), null);
+ harness.check(ui.getNewFolderIcon(), null);
+ harness.check(ui.getUpFolderIcon(), null);
+
+ ui.installIcons(fc);
+ harness.check(ui.getComputerIcon(), MetalIconFactory.getTreeComputerIcon());
+ harness.check(ui.getDetailsViewIcon(), MetalIconFactory.getFileChooserDetailViewIcon());
+ harness.check(ui.getDirectoryIcon() instanceof MetalIconFactory.TreeFolderIcon);
+ harness.check(ui.getDirectoryIcon().getIconWidth(), 16);
+ harness.check(ui.getDirectoryIcon().getIconHeight(), 18);
+ harness.check(ui.getFileIcon() instanceof MetalIconFactory.TreeLeafIcon);
+ harness.check(ui.getFileIcon().getIconWidth(), 16);
+ harness.check(ui.getFileIcon().getIconHeight(), 20);
+ harness.check(ui.getFloppyDriveIcon(), MetalIconFactory.getTreeFloppyDriveIcon());
+ harness.check(ui.getHardDriveIcon(), MetalIconFactory.getTreeHardDriveIcon());
+ harness.check(ui.getHomeFolderIcon(), MetalIconFactory.getFileChooserHomeFolderIcon());
+ harness.check(ui.getListViewIcon(), MetalIconFactory.getFileChooserListViewIcon());
+ harness.check(ui.getNewFolderIcon(), MetalIconFactory.getFileChooserNewFolderIcon());
+ harness.check(ui.getUpFolderIcon(), MetalIconFactory.getFileChooserUpFolderIcon());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installStrings.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installStrings.java
new file mode 100644
index 00000000..99d2bb5f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/installStrings.java
@@ -0,0 +1,115 @@
+// Tags: JDK1.2
+// Uses: MyBasicFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the installStrings() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class installStrings implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Locale.setDefault(Locale.UK);
+ JFileChooser fc1 = new JFileChooser();
+ MyBasicFileChooserUI ui = new MyBasicFileChooserUI(fc1);
+ harness.check(ui.getCancelButtonText(), null);
+ harness.check(ui.getCancelButtonToolTipText(), null);
+ harness.check(ui.getCancelButtonMnemonic(), 0);
+ harness.check(ui.getDirectoryOpenButtonText(), null);
+ harness.check(ui.getDirectoryOpenButtonToolTipText(), null);
+ harness.check(ui.getDirectoryOpenButtonMnemonic(), 0);
+ harness.check(ui.getHelpButtonText(), null);
+ harness.check(ui.getHelpButtonToolTipText(), null);
+ harness.check(ui.getHelpButtonMnemonic(), 0);
+ harness.check(ui.getOpenButtonText(), null);
+ harness.check(ui.getOpenButtonToolTipText(), null);
+ harness.check(ui.getOpenButtonMnemonic(), 0);
+ harness.check(ui.getSaveButtonText(), null);
+ harness.check(ui.getSaveButtonToolTipText(), null);
+ harness.check(ui.getSaveButtonMnemonic(), 0);
+ harness.check(ui.getUpdateButtonText(), null);
+ harness.check(ui.getUpdateButtonToolTipText(), null);
+ harness.check(ui.getUpdateButtonMnemonic(), 0);
+
+ ui.installStrings(fc1);
+ harness.check(ui.getCancelButtonText(), "Cancel");
+ harness.check(ui.getCancelButtonToolTipText(), "Abort file chooser dialog");
+ harness.check(ui.getCancelButtonMnemonic(), 67);
+ harness.check(ui.getDirectoryOpenButtonText(), "Open");
+ harness.check(ui.getDirectoryOpenButtonToolTipText(), "Open selected directory");
+ harness.check(ui.getDirectoryOpenButtonMnemonic(), 79);
+ harness.check(ui.getHelpButtonText(), "Help");
+ harness.check(ui.getHelpButtonToolTipText(), "FileChooser help");
+ harness.check(ui.getHelpButtonMnemonic(), 72);
+ harness.check(ui.getOpenButtonText(), "Open");
+ harness.check(ui.getOpenButtonToolTipText(), "Open selected file");
+ harness.check(ui.getOpenButtonMnemonic(), 79);
+ harness.check(ui.getSaveButtonText(), "Save");
+ harness.check(ui.getSaveButtonToolTipText(), "Save selected file");
+ harness.check(ui.getSaveButtonMnemonic(), 83);
+ harness.check(ui.getUpdateButtonText(), "Update");
+ harness.check(ui.getUpdateButtonToolTipText(), "Update directory listing");
+ harness.check(ui.getUpdateButtonMnemonic(), 85);
+
+ // it appears that the default strings in the Basic look and feel are
+ // not localised...
+ Locale.setDefault(Locale.FRANCE);
+ JFileChooser fc2 = new JFileChooser();
+ MyBasicFileChooserUI ui2 = new MyBasicFileChooserUI(fc2);
+ ui2.installStrings(fc2);
+ harness.check(ui2.getCancelButtonText(), "Cancel");
+ harness.check(ui2.getCancelButtonToolTipText(), "Abort file chooser dialog");
+ harness.check(ui2.getDirectoryOpenButtonText(), "Open");
+ harness.check(ui2.getDirectoryOpenButtonToolTipText(), "Open selected directory");
+ harness.check(ui2.getDirectoryOpenButtonMnemonic(), 79);
+ harness.check(ui2.getHelpButtonText(), "Help");
+ harness.check(ui2.getHelpButtonToolTipText(), "FileChooser help");
+ harness.check(ui2.getHelpButtonMnemonic(), 72);
+ harness.check(ui2.getOpenButtonText(), "Open");
+ harness.check(ui2.getOpenButtonToolTipText(), "Open selected file");
+ harness.check(ui2.getOpenButtonMnemonic(), 79);
+ harness.check(ui2.getSaveButtonText(), "Save");
+ harness.check(ui2.getSaveButtonToolTipText(), "Save selected file");
+ harness.check(ui2.getSaveButtonMnemonic(), 83);
+ harness.check(ui2.getUpdateButtonText(), "Update");
+ harness.check(ui2.getUpdateButtonToolTipText(), "Update directory listing");
+ harness.check(ui2.getUpdateButtonMnemonic(), 85);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/uninstallStrings.java b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/uninstallStrings.java
new file mode 100644
index 00000000..aaaf23ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFileChooserUI/uninstallStrings.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.2
+// Uses: MyBasicFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.basic.BasicFileChooserUI;
+
+/**
+ * Some checks for the uninstallStrings() method in the
+ * {@link BasicFileChooserUI} class.
+ */
+public class uninstallStrings implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Locale.setDefault(Locale.UK);
+ JFileChooser fc1 = new JFileChooser();
+ MyBasicFileChooserUI ui = new MyBasicFileChooserUI(fc1);
+
+ ui.installStrings(fc1);
+ harness.check(ui.getCancelButtonText(), "Cancel");
+ harness.check(ui.getCancelButtonToolTipText(), "Abort file chooser dialog");
+ harness.check(ui.getCancelButtonMnemonic(), 67);
+ harness.check(ui.getDirectoryOpenButtonText(), "Open");
+ harness.check(ui.getDirectoryOpenButtonToolTipText(), "Open selected directory");
+ harness.check(ui.getDirectoryOpenButtonMnemonic(), 79);
+ harness.check(ui.getHelpButtonText(), "Help");
+ harness.check(ui.getHelpButtonToolTipText(), "FileChooser help");
+ harness.check(ui.getHelpButtonMnemonic(), 72);
+ harness.check(ui.getOpenButtonText(), "Open");
+ harness.check(ui.getOpenButtonToolTipText(), "Open selected file");
+ harness.check(ui.getOpenButtonMnemonic(), 79);
+ harness.check(ui.getSaveButtonText(), "Save");
+ harness.check(ui.getSaveButtonToolTipText(), "Save selected file");
+ harness.check(ui.getSaveButtonMnemonic(), 83);
+ harness.check(ui.getUpdateButtonText(), "Update");
+ harness.check(ui.getUpdateButtonToolTipText(), "Update directory listing");
+ harness.check(ui.getUpdateButtonMnemonic(), 85);
+
+ ui.uninstallStrings(fc1);
+ harness.check(ui.getCancelButtonText(), null);
+ harness.check(ui.getCancelButtonToolTipText(), null);
+ harness.check(ui.getCancelButtonMnemonic(), 67);
+ harness.check(ui.getDirectoryOpenButtonText(), null);
+ harness.check(ui.getDirectoryOpenButtonToolTipText(), null);
+ harness.check(ui.getDirectoryOpenButtonMnemonic(), 79);
+ harness.check(ui.getHelpButtonText(), null);
+ harness.check(ui.getHelpButtonToolTipText(), null);
+ harness.check(ui.getHelpButtonMnemonic(), 72);
+ harness.check(ui.getOpenButtonText(), null);
+ harness.check(ui.getOpenButtonToolTipText(), null);
+ harness.check(ui.getOpenButtonMnemonic(), 79);
+ harness.check(ui.getSaveButtonText(), null);
+ harness.check(ui.getSaveButtonToolTipText(), null);
+ harness.check(ui.getSaveButtonMnemonic(), 83);
+ harness.check(ui.getUpdateButtonText(), null);
+ harness.check(ui.getUpdateButtonToolTipText(), null);
+ harness.check(ui.getUpdateButtonMnemonic(), 85);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Entries
new file mode 100644
index 00000000..c1c5a8fa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicFormattedTextFieldUI.java/1.1/Tue Sep 13 19:54:44 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Repository
new file mode 100644
index 00000000..6772e5f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java
new file mode 100644
index 00000000..106df4a2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/MyBasicFormattedTextFieldUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFormattedTextFieldUI;
+
+import javax.swing.plaf.basic.BasicFormattedTextFieldUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicFormattedTextFieldUI extends BasicFormattedTextFieldUI
+{
+ public MyBasicFormattedTextFieldUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java
new file mode 100644
index 00000000..f9c61be7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicFormattedTextFieldUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicFormattedTextFieldUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicFormattedTextFieldUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicFormattedTextFieldUI ui = new MyBasicFormattedTextFieldUI();
+ harness.check(ui.getPropertyPrefix(), "FormattedTextField");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Entries
new file mode 100644
index 00000000..64778276
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Entries
@@ -0,0 +1,2 @@
+/isHTMLString.java/1.1/Mon Jun 26 15:11:26 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Repository
new file mode 100644
index 00000000..7670ce2f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicHTML
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicHTML/isHTMLString.java b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/isHTMLString.java
new file mode 100644
index 00000000..05a198d3
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicHTML/isHTMLString.java
@@ -0,0 +1,47 @@
+/* isHTMLString.java -- some checks for the isHTMLString() method in the
+ BasicHTML class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.plaf.basic.BasicHTML;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.basic.BasicHTML;
+
+public class isHTMLString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.check(BasicHTML.isHTMLString(""), false);
+ harness.check(BasicHTML.isHTMLString("A"), false);
+ harness.check(BasicHTML.isHTMLString("<b>A</b>"), false);
+ harness.check(BasicHTML.isHTMLString("<html>A</html>"), true);
+
+ // the following special cases are interesting:
+ harness.check(BasicHTML.isHTMLString(null), false);
+ harness.check(BasicHTML.isHTMLString(" <html>A</html> "), false);
+ harness.check(BasicHTML.isHTMLString("<html>A..."), true);
+ harness.check(BasicHTML.isHTMLString("<HtMl>"), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Entries
new file mode 100644
index 00000000..13b89582
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Entries
@@ -0,0 +1,4 @@
+/getCheckBoxIcon.java/1.1/Thu Sep 29 08:44:49 2005//
+/getCheckBoxMenuItemIcon.java/1.1/Fri Aug 26 10:56:49 2005//
+/getMenuArrowIcon.java/1.1/Thu Sep 29 08:44:49 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Repository
new file mode 100644
index 00000000..db1c0223
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxIcon.java b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxIcon.java
new file mode 100644
index 00000000..8240d345
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxIcon.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.basic.BasicIconFactory;
+
+/**
+ * Some checks for the getCheckBoxIcon() method in the
+ * {@link BasicIconFactory} class.
+ */
+public class getCheckBoxIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = BasicIconFactory.getCheckBoxIcon();
+ harness.check(icon.getIconWidth(), 13);
+ harness.check(icon.getIconHeight(), 13);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxMenuItemIcon.java b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxMenuItemIcon.java
new file mode 100644
index 00000000..58b70949
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getCheckBoxMenuItemIcon.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.basic.BasicIconFactory;
+
+/**
+ * Some checks for the getCheckBoxMenuItemIcon() method in the
+ * {@link BasicIconFactory} class.
+ */
+public class getCheckBoxMenuItemIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = BasicIconFactory.getCheckBoxMenuItemIcon();
+ harness.check(icon.getIconWidth(), 9);
+ harness.check(icon.getIconHeight(), 9);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getMenuArrowIcon.java b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getMenuArrowIcon.java
new file mode 100644
index 00000000..eb9d2841
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicIconFactory/getMenuArrowIcon.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.basic.BasicIconFactory;
+
+/**
+ * Some checks for the getMenuArrowIcon() method in the
+ * {@link BasicIconFactory} class.
+ */
+public class getMenuArrowIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = BasicIconFactory.getMenuArrowIcon();
+ harness.check(icon.getIconWidth(), 4);
+ harness.check(icon.getIconHeight(), 8);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries.Log
new file mode 100644
index 00000000..2f4770d0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/CloseAction////
+A D/IconifyAction////
+A D/MaximizeAction////
+A D/MoveAction////
+A D/RestoreAction////
+A D/SizeAction////
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Repository
new file mode 100644
index 00000000..48c2390c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Entries
new file mode 100644
index 00000000..87087ae0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:53 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Repository
new file mode 100644
index 00000000..963f147b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/constructor.java
new file mode 100644
index 00000000..77e213aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/CloseAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ CloseAction a = p.new CloseAction();
+ harness.check(a.getValue("Name"), "Close");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Entries
new file mode 100644
index 00000000..a904a25d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:54 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Repository
new file mode 100644
index 00000000..af14fa6f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/constructor.java
new file mode 100644
index 00000000..eac3c26f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/IconifyAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ IconifyAction a = p.new IconifyAction();
+ harness.check(a.getValue("Name"), "Minimize");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Entries
new file mode 100644
index 00000000..a904a25d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:54 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Repository
new file mode 100644
index 00000000..65a62941
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/constructor.java
new file mode 100644
index 00000000..d42cba47
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MaximizeAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ MaximizeAction a = p.new MaximizeAction();
+ harness.check(a.getValue("Name"), "Maximize");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Entries
new file mode 100644
index 00000000..a904a25d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:54 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Repository
new file mode 100644
index 00000000..707b3f80
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/constructor.java
new file mode 100644
index 00000000..807c5a12
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/MoveAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.MoveAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MoveAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ MoveAction a = p.new MoveAction();
+ harness.check(a.getValue("Name"), "Move");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Entries
new file mode 100644
index 00000000..a904a25d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:54 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Repository
new file mode 100644
index 00000000..2e6aac1a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/constructor.java
new file mode 100644
index 00000000..d025e9bb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/RestoreAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ RestoreAction a = p.new RestoreAction();
+ harness.check(a.getValue("Name"), "Restore");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Entries
new file mode 100644
index 00000000..a904a25d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Thu Sep 15 20:44:54 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Repository
new file mode 100644
index 00000000..a01d4cdd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/constructor.java
new file mode 100644
index 00000000..e03b9a56
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicInternalFrameTitlePane/SizeAction/constructor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicInternalFrameTitlePane.SizeAction;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JInternalFrame;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane;
+import javax.swing.plaf.basic.BasicInternalFrameTitlePane.SizeAction;
+
+/**
+ * Some checks for the constructor.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JInternalFrame f = new JInternalFrame();
+ BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(f);
+ SizeAction a = p.new SizeAction();
+ harness.check(a.getValue("Name"), "Size");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Entries
new file mode 100644
index 00000000..7e482aa4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Entries
@@ -0,0 +1,2 @@
+/updateLayoutStateNeeded.java/1.1/Mon Jan 30 13:39:16 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Repository
new file mode 100644
index 00000000..a34d2d11
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicListUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicListUI/updateLayoutStateNeeded.java b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/updateLayoutStateNeeded.java
new file mode 100644
index 00000000..05a6dd65
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicListUI/updateLayoutStateNeeded.java
@@ -0,0 +1,83 @@
+/* updateLayoutStateNeeded.java -- Checks the updateLayoutStateNeeded flag
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.plaf.basic.BasicListUI;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JList;
+import javax.swing.plaf.basic.BasicListUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks when and how the updateLayoutStateNeeded flag is modified.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class updateLayoutStateNeeded implements Testlet
+{
+
+ /**
+ * Overridden to make the updateLayoutStateNeeded field accessible.
+ */
+ private class TestListUI extends BasicListUI
+ {
+ public int getUpdateLayoutStateNeeded()
+ {
+ return updateLayoutStateNeeded;
+ }
+ public void maybeUpdateLayoutState()
+ {
+ super.maybeUpdateLayoutState();
+ }
+ }
+
+ /**
+ * The entry point of this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testModelDataChange(harness);
+ }
+
+ /**
+ * Changes the model data and checks if the flag should be updated.
+ *
+ * @param h the test harness to use
+ */
+ private void testModelDataChange(TestHarness h)
+ {
+ JList l = new JList(new DefaultListModel());
+ TestListUI ui = new TestListUI();
+ l.setUI(ui);
+ ui.maybeUpdateLayoutState();
+ // The flag should be 0 after maybeUpdateLayoutState().
+ h.check(ui.getUpdateLayoutStateNeeded(), 0);
+ ((DefaultListModel) l.getModel()).addElement("test");
+ // The flag should be 1 after the model data change.
+ h.check(ui.getUpdateLayoutStateNeeded(), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Entries
new file mode 100644
index 00000000..353d59f8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Entries
@@ -0,0 +1,4 @@
+/MyBasicLookAndFeel.java/1.1/Mon Jul 25 16:52:04 2005//
+/initComponentDefaults.java/1.11/Tue Jan 3 19:47:51 2006//
+/initSystemColorDefaults.java/1.1/Thu Aug 25 15:43:00 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Repository
new file mode 100644
index 00000000..2f3288af
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/MyBasicLookAndFeel.java b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/MyBasicLookAndFeel.java
new file mode 100644
index 00000000..033abcfa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/MyBasicLookAndFeel.java
@@ -0,0 +1,61 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicLookAndFeel;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.basic.BasicLookAndFeel;
+
+public class MyBasicLookAndFeel extends BasicLookAndFeel {
+
+ public String getID()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public String getName()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public String getDescription()
+ {
+ return "MyBasicLookAndFeel";
+ }
+ public boolean isSupportedLookAndFeel()
+ {
+ return true;
+ }
+ public boolean isNativeLookAndFeel()
+ {
+ return false;
+ }
+ public void initSystemColorDefaults(UIDefaults defaults)
+ {
+ super.initSystemColorDefaults(defaults);
+ }
+ public void initComponentDefaults(UIDefaults defaults)
+ {
+ super.initComponentDefaults(defaults);
+ }
+ public void initClassDefaults(UIDefaults defaults)
+ {
+ defaults.put("SliderUI", "gnu.testlet.javax.swing.plaf.basic.BasicLookAndFeel.MyBasicSliderUI");
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java
new file mode 100644
index 00000000..f203e28f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initComponentDefaults.java
@@ -0,0 +1,862 @@
+// Tags: JDK1.3
+// Uses: MyBasicLookAndFeel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+import javax.swing.ListCellRenderer;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.DimensionUIResource;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.InputMapUIResource;
+import javax.swing.plaf.InsetsUIResource;
+import javax.swing.plaf.BorderUIResource.CompoundBorderUIResource;
+import javax.swing.plaf.basic.BasicBorders;
+import javax.swing.plaf.basic.BasicBorders.ButtonBorder;
+import javax.swing.plaf.basic.BasicBorders.MarginBorder;
+
+/**
+ * Some checks for the initComponentDefaults() method in the
+ * {@link BasicLookAndFeel} class.
+ */
+public class initComponentDefaults implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ // TODO: there are a lot of 'instanceof' checks in here. Those are weak
+ // tests, try to strengthen them.
+
+ MyBasicLookAndFeel laf = new MyBasicLookAndFeel();
+ UIDefaults defaults = new UIDefaults();
+ laf.initComponentDefaults(defaults);
+
+ harness.checkPoint("AuditoryCues");
+ harness.check(defaults.get("AuditoryCues.allAuditoryCues") != null);
+ harness.check(defaults.get("AuditoryCues.cueList") != null);
+ harness.check(defaults.get("AuditoryCues.noAuditoryCues") != null);
+
+ harness.checkPoint("Button");
+ CompoundBorderUIResource b1 = (CompoundBorderUIResource) defaults.get("Button.border");
+ harness.check(b1.getInsideBorder() instanceof MarginBorder);
+ harness.check(b1.getOutsideBorder() instanceof ButtonBorder);
+ harness.check(defaults.get("Button.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Button.margin"), new InsetsUIResource(2, 14, 2, 14));
+ harness.check(defaults.get("Button.textIconGap"), new Integer(4));
+ harness.check(defaults.get("Button.textShiftOffset"), new Integer(0));
+ harness.check(defaults.get("Button.focusInputMap") instanceof InputMapUIResource);
+ Object b = UIManager.get("Button.focusInputMap");
+ InputMapUIResource bim = (InputMapUIResource) b;
+ KeyStroke[] kb = bim.keys();
+ harness.check(kb.length == 2);
+ harness.check(bim.get(KeyStroke.getKeyStroke("SPACE")), "pressed");
+ harness.check(bim.get(KeyStroke.getKeyStroke("released SPACE")), "released");
+
+ harness.checkPoint("CheckBox");
+ CompoundBorderUIResource b2 = (CompoundBorderUIResource) defaults.get("CheckBox.border");
+ harness.check(b2.getInsideBorder() instanceof MarginBorder);
+ harness.check(b2.getOutsideBorder() instanceof ButtonBorder);
+ harness.check(defaults.get("CheckBox.focusInputMap") instanceof InputMapUIResource);
+ Object c = UIManager.get("CheckBox.focusInputMap");
+ InputMapUIResource cim = (InputMapUIResource) c;
+ KeyStroke[] kc = cim.keys();
+ harness.check(kc.length == 2);
+ harness.check(cim.get(KeyStroke.getKeyStroke("SPACE")), "pressed");
+ harness.check(cim.get(KeyStroke.getKeyStroke("released SPACE")), "released");
+ harness.check(defaults.get("CheckBox.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("CheckBox.icon") instanceof Icon);
+ harness.check(defaults.get("CheckBox.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("CheckBox.textIconGap"), new Integer(4));
+ harness.check(defaults.get("CheckBox.textShiftOffset"), new Integer(0));
+
+ harness.checkPoint("CheckBoxMenuItem");
+ harness.check(defaults.get("CheckBoxMenuItem.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("CheckBoxMenuItem.arrowIcon") instanceof Icon);
+ harness.check(defaults.get("CheckBoxMenuItem.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("CheckBoxMenuItem.borderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("CheckBoxMenuItem.checkIcon") instanceof Icon);
+ harness.check(defaults.get("CheckBoxMenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("CheckBoxMenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+
+ harness.checkPoint("ColorChooser");
+ harness.check(defaults.get("ColorChooser.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ColorChooser.rgbBlueMnemonic"), "66");
+ harness.check(defaults.get("ColorChooser.rgbGreenMnemonic"), "78");
+ harness.check(defaults.get("ColorChooser.rgbRedMnemonic"), "68");
+ harness.check(defaults.get("ColorChooser.swatchesRecentSwatchSize"), new Dimension(10, 10));
+ harness.check(defaults.get("ColorChooser.swatchesSwatchSize"), new Dimension(10, 10));
+
+ harness.checkPoint("ComboBox");
+ harness.check(defaults.get("ComboBox.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ComboBox.font"), new FontUIResource("SansSerif", Font.PLAIN, 12));
+
+ harness.checkPoint("Desktop");
+ harness.check(defaults.get("Desktop.ancestorInputMap") instanceof InputMapUIResource);
+
+ harness.checkPoint("DesktopIcon");
+ harness.check(defaults.get("DesktopIcon.border") instanceof BorderUIResource.CompoundBorderUIResource);
+
+ harness.checkPoint("EditorPane");
+ harness.check(defaults.get("EditorPane.background"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("EditorPane.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("EditorPane.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("EditorPane.font"), new FontUIResource("Serif", Font.PLAIN, 12));
+ harness.check(defaults.get("EditorPane.margin"), new InsetsUIResource(3, 3, 3, 3));
+ Object e = UIManager.get("EditorPane.focusInputMap");
+ InputMapUIResource eim = (InputMapUIResource) e;
+ KeyStroke[] ke = eim.keys();
+ harness.check(ke.length == 55);
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift UP")), "selection-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-next-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-previous-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift KP_UP")), "selection-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("DOWN")), "caret-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl T")), "previous-link-action");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-previous-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(eim.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift PAGE_UP")), "selection-page-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("KP_UP")), "caret-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl HOME")), "caret-begin");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl END")), "caret-end");
+ harness.check(eim.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-next-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl SPACE")), "activate-link-action");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ENTER")), "insert-break");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(eim.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_UP")), "selection-page-left");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift DOWN")), "selection-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "page-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN")), "selection-page-right");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-next-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-previous-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(eim.get(KeyStroke.getKeyStroke("KP_DOWN")), "caret-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl END")), "selection-end");
+ harness.check(eim.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-previous-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("ctrl T")), "next-link-action");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift KP_DOWN")), "selection-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("TAB")), "insert-tab");
+ harness.check(eim.get(KeyStroke.getKeyStroke("UP")), "caret-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl HOME")), "selection-begin");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift PAGE_DOWN")), "selection-page-down");
+ harness.check(eim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(eim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-next-word");
+ harness.check(eim.get(KeyStroke.getKeyStroke("PAGE_UP")), "page-up");
+ harness.check(eim.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+
+ harness.checkPoint("FileChooser");
+ harness.check(defaults.get("FileChooser.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("FileChooser.cancelButtonMnemonic"), "67");
+ harness.check(defaults.get("FileChooser.directoryOpenButtonMnemonic"), "79");
+ harness.check(defaults.get("FileChooser.helpButtonMnemonic"), "72");
+ harness.check(defaults.get("FileChooser.openButtonMnemonic"), "79");
+ harness.check(defaults.get("FileChooser.saveButtonMnemonic"), "83");
+ harness.check(defaults.get("FileChooser.updateButtonMnemonic"), "85");
+
+ harness.checkPoint("FileView");
+
+ harness.checkPoint("FormattedTextField");
+ harness.check(defaults.get("FormattedTextField.border") instanceof BasicBorders.FieldBorder);
+ harness.check(defaults.get("FormattedTextField.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("FormattedTextField.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("FormattedTextField.font"), new FontUIResource("SansSerif", Font.PLAIN, 12));
+ harness.check(defaults.get("FormattedTextField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ Object f = UIManager.get("FormattedTextField.focusInputMap");
+ InputMapUIResource fim = (InputMapUIResource) f;
+ KeyStroke[] kf = fim.keys();
+ harness.check(kf.length == 38);
+ harness.check(fim.get(KeyStroke.getKeyStroke("KP_UP")), "increment");
+ harness.check(fim.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("KP_DOWN")), "decrement");
+ harness.check(fim.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(fim.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("UP")), "increment");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-next-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ESCAPE")), "reset-field-edit");
+ harness.check(fim.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-previous-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-previous-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("DOWN")), "decrement");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-next-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-next-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(fim.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-previous-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-previous-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-next-word");
+ harness.check(fim.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(fim.get(KeyStroke.getKeyStroke("ENTER")), "notify-field-accept");
+ harness.check(fim.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+
+ harness.checkPoint("InternalFrame");
+ harness.check(defaults.get("InternalFrame.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("InternalFrame.closeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.iconifyIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.maximizeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.minimizeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.titleFont"), new FontUIResource("Dialog", Font.BOLD, 12));
+ harness.check(defaults.get("InternalFrame.windowBindings") instanceof Object[]);
+
+ harness.checkPoint("Label");
+ harness.check(defaults.get("Label.disabledForeground"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("Label.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("List");
+ harness.check(defaults.get("List.cellRenderer") instanceof ListCellRenderer);
+ harness.check(defaults.get("List.focusCellHighlightBorder") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("List.focusInputMap") instanceof InputMapUIResource);
+ Object l = UIManager.get("List.focusInputMap");
+ InputMapUIResource lim = (InputMapUIResource) l;
+ KeyStroke[] kl = lim.keys();
+ harness.check(kl.length == 61);
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl DOWN")), "selectNextRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift UP")), "selectPreviousRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "selectNextColumnChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selectPreviousColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift KP_UP")), "selectPreviousRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("DOWN")), "selectNextRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl UP")), "selectPreviousRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "selectPreviousColumnChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("CUT")), "cut");
+ harness.check(lim.get(KeyStroke.getKeyStroke("END")), "selectLastRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift PAGE_UP")), "scrollUpExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("KP_UP")), "selectPreviousRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl UP")), "selectPreviousRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl HOME")), "selectFirstRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift LEFT")), "selectPreviousColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl END")), "selectLastRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl PAGE_DOWN")), "scrollDownChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selectNextColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("LEFT")), "selectPreviousColumn");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl PAGE_UP")), "scrollUpChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("KP_LEFT")), "selectPreviousColumn");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selectNextColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("SPACE")), "addToSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl SPACE")), "toggleAndAnchor");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift SPACE")), "extendTo");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl SPACE")), "moveSelectionTo");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl DOWN")), "selectNextRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "clearSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift HOME")), "selectFirstRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("RIGHT")), "selectNextColumn");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_UP")), "scrollUpExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift DOWN")), "selectNextRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "scrollDown");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl KP_UP")), "selectPreviousRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selectPreviousColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl X")), "cut");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN")), "scrollDownExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl SLASH")), "selectAll");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl C")), "copy");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "selectNextColumnChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift END")), "selectLastRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl KP_DOWN")), "selectNextRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "selectPreviousColumnChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("HOME")), "selectFirstRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl V")), "paste");
+ harness.check(lim.get(KeyStroke.getKeyStroke("KP_DOWN")), "selectNextRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl KP_DOWN")), "selectNextRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selectNextColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl A")), "selectAll");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl END")), "selectLastRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("COPY")), "copy");
+ harness.check(lim.get(KeyStroke.getKeyStroke("ctrl KP_UP")), "selectPreviousRowChangeLead");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selectPreviousColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift KP_DOWN")), "selectNextRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("UP")), "selectPreviousRow");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl HOME")), "selectFirstRowExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift PAGE_DOWN")), "scrollDownExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "selectNextColumn");
+ harness.check(lim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selectNextColumnExtendSelection");
+ harness.check(lim.get(KeyStroke.getKeyStroke("PAGE_UP")), "scrollUp");
+ harness.check(lim.get(KeyStroke.getKeyStroke("PASTE")), "paste");
+
+ harness.check(defaults.get("List.focusInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("List.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("Menu");
+ harness.check(defaults.get("Menu.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Menu.arrowIcon") instanceof Icon);
+ harness.check(defaults.get("Menu.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("Menu.borderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("Menu.checkIcon") instanceof Icon);
+ harness.check(defaults.get("Menu.crossMenuMnemonic"), Boolean.TRUE);
+ harness.check(defaults.get("Menu.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Menu.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("Menu.menuPopupOffsetX"), new Integer(0));
+ harness.check(defaults.get("Menu.menuPopupOffsetY"), new Integer(0));
+ int[] shortcuts = (int[]) defaults.get("Menu.shortcutKeys");
+ if (shortcuts == null)
+ shortcuts = new int[] { 999 }; // to prevent NullPointerException
+ harness.check(shortcuts.length, 1);
+ harness.check(shortcuts[0], 8);
+ harness.check(defaults.get("Menu.submenuPopupOffsetX"), new Integer(0));
+ harness.check(defaults.get("Menu.submenuPopupOffsetY"), new Integer(0));
+
+ harness.checkPoint("MenuBar");
+ harness.check(defaults.get("MenuBar.border") instanceof BasicBorders.MenuBarBorder);
+ harness.check(defaults.get("MenuBar.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("MenuBar.windowBindings") instanceof Object[]);
+
+ harness.checkPoint("MenuItem");
+ harness.check(defaults.get("MenuItem.acceleratorDelimiter"), "+");
+ harness.check(defaults.get("MenuItem.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("MenuItem.arrowIcon") instanceof Icon);
+ harness.check(defaults.get("MenuItem.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("MenuItem.borderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("MenuItem.checkIcon") instanceof Icon);
+ harness.check(defaults.get("MenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("MenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+
+ harness.checkPoint("OptionPane");
+ harness.check(defaults.get("OptionPane.border") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.get("OptionPane.buttonAreaBorder") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.get("OptionPane.buttonClickThreshhold"), new Integer(500));
+ harness.check(defaults.get("OptionPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("OptionPane.messageAreaBorder") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.get("OptionPane.minimumSize"), new DimensionUIResource(262, 90));
+ harness.check(defaults.get("OptionPane.windowBindings") instanceof Object[]);
+
+ harness.checkPoint("Panel");
+ harness.check(defaults.get("Panel.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("PasswordField");
+ harness.check(defaults.get("PasswordField.border") instanceof BasicBorders.FieldBorder);
+ harness.check(defaults.get("PasswordField.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("PasswordField.font"), new FontUIResource("MonoSpaced", Font.PLAIN, 12));
+ harness.check(defaults.get("PasswordField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(UIManager.get("PasswordField.focusInputMap") instanceof InputMapUIResource);
+ Object o = UIManager.get("PasswordField.focusInputMap");
+ InputMapUIResource im = (InputMapUIResource) o;
+ KeyStroke[] k = im.keys();
+ harness.check(k.length == 33);
+ harness.check(im.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(im.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(im.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(im.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(im.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-begin-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-end-line");
+ harness.check(im.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(im.get(KeyStroke.getKeyStroke("ENTER")), "notify-field-accept");
+ harness.check(im.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+
+ harness.checkPoint("PopupMenu");
+ harness.check(defaults.get("PopupMenu.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("PopupMenu.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("PopupMenu.selectedWindowInputMapBindings") instanceof Object[]);
+ harness.check(defaults.get("PopupMenu.selectedWindowInputMapBindings.RightToLeft") instanceof Object[]);
+
+ harness.checkPoint("ProgressBar");
+ harness.check(defaults.get("ProgressBar.border") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("ProgressBar.cellLength"), new Integer(1));
+ harness.check(defaults.get("ProgressBar.cellSpacing"), new Integer(0));
+ harness.check(defaults.get("ProgressBar.cycleTime"), new Integer(3000));
+ harness.check(defaults.get("ProgressBar.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ProgressBar.repaintInterval"), new Integer(50));
+
+ harness.checkPoint("RadioButton");
+ harness.check(defaults.get("RadioButton.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("RadioButton.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("RadioButton.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("RadioButton.icon") instanceof Icon);
+ harness.check(defaults.get("RadioButton.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("RadioButton.textIconGap"), new Integer(4));
+ harness.check(defaults.get("RadioButton.textShiftOffset"), new Integer(0));
+
+ harness.checkPoint("RadioButtonMenuItem");
+ harness.check(defaults.get("RadioButtonMenuItem.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("RadioButtonMenuItem.arrowIcon") instanceof Icon);
+ harness.check(defaults.get("RadioButtonMenuItem.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("RadioButtonMenuItem.borderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("RadioButtonMenuItem.checkIcon") instanceof Icon);
+ harness.check(defaults.get("RadioButtonMenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("RadioButtonMenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("RootPane.defaultButtonWindowKeyBindings") instanceof Object[]);
+
+ harness.checkPoint("ScrollBar");
+ harness.check(defaults.get("ScrollBar.background"), new ColorUIResource(224, 224, 224));
+ harness.check(defaults.get("ScrollBar.maximumThumbSize"), new DimensionUIResource(4096, 4096));
+ harness.check(defaults.get("ScrollBar.minimumThumbSize"), new DimensionUIResource(8, 8));
+ harness.check(defaults.get("ScrollBar.width"), new Integer(16));
+
+ harness.check(defaults.get("ScrollPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ScrollPane.ancestorInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("ScrollPane.border") instanceof BasicBorders.FieldBorder);
+ harness.check(defaults.get("ScrollPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("Slider");
+ InputMap map = (InputMap) defaults.get("Slider.focusInputMap");
+ KeyStroke[] keys = map.keys();
+ InputMap focusInputMap = (InputMap) defaults.get("Slider.focusInputMap");
+ List keyList = Arrays.asList(keys);
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("HOME")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("END")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("PAGE_UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("PAGE_DOWN")));
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("LEFT")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("RIGHT")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("UP")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("DOWN")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_LEFT")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_RIGHT")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_UP")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_DOWN")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("HOME")), "minScroll");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("END")), "maxScroll");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("PAGE_UP")), "positiveBlockIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "negativeBlockIncrement");
+
+ InputMap rightToLeftMap = (InputMap) defaults.get("Slider.focusInputMap.RightToLeft");
+ keys = rightToLeftMap != null ? rightToLeftMap.keys() : new KeyStroke[] {};
+ keyList = Arrays.asList(keys);
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_LEFT")));
+ if (rightToLeftMap == null)
+ {
+ rightToLeftMap = new InputMap(); // to prevent NullPointerException
+ }
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("RIGHT")), "negativeUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("KP_RIGHT")), "negativeUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("LEFT")), "positiveUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("KP_LEFT")), "positiveUnitIncrement");
+
+ harness.check(defaults.get("Slider.focusInsets"), new InsetsUIResource(2, 2, 2, 2));
+
+ harness.checkPoint("Spinner");
+ harness.check(defaults.get("Spinner.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Spinner.arrowButtonSize"), new DimensionUIResource(16, 5));
+ harness.check(defaults.get("Spinner.border") instanceof BasicBorders.FieldBorder);
+ harness.check(defaults.get("Spinner.editorBorderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("Spinner.font"), new FontUIResource("MonoSpaced", Font.PLAIN, 12));
+
+ harness.checkPoint("SplitPane");
+ harness.check(defaults.get("SplitPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("SplitPane.border") instanceof BasicBorders.SplitPaneBorder);
+ harness.check(defaults.get("SplitPane.dividerSize"), new Integer(7));
+
+ harness.checkPoint("SplitPaneDivider");
+ harness.check(defaults.get("SplitPaneDivider.border") instanceof Border);
+
+ harness.checkPoint("TabbedPane");
+ harness.check(defaults.get("TabbedPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TabbedPane.contentBorderInsets"), new InsetsUIResource(2, 2, 3, 3));
+ harness.check(defaults.get("TabbedPane.focusInputMap") instanceof InputMapUIResource);
+ Object tab = UIManager.get("TabbedPane.focusInputMap");
+ InputMapUIResource tabim = (InputMapUIResource) tab;
+ harness.check(tabim.keys().length == 10);
+ harness.check(tabim.get(KeyStroke.getKeyStroke("ctrl DOWN")),"requestFocusForVisibleComponent");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("KP_UP")),"navigateUp");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("LEFT")),"navigateLeft");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("ctrl KP_DOWN")),"requestFocusForVisibleComponent");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("UP")),"navigateUp");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("KP_DOWN")),"navigateDown");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("KP_LEFT")),"navigateLeft");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("RIGHT")),"navigateRight");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("KP_RIGHT")),"navigateRight");
+ harness.check(tabim.get(KeyStroke.getKeyStroke("DOWN")),"navigateDown");
+ harness.check(defaults.get("TabbedPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("TabbedPane.selectedTabPadInsets"), new InsetsUIResource(2, 2, 2, 1));
+ harness.check(defaults.get("TabbedPane.tabAreaInsets"), new InsetsUIResource(3, 2, 0, 2));
+ harness.check(defaults.get("TabbedPane.tabInsets"), new InsetsUIResource(0, 4, 1, 4));
+ harness.check(defaults.get("TabbedPane.tabRunOverlay"), new Integer(2));
+ harness.check(defaults.get("TabbedPane.textIconGap"), new Integer(4));
+
+ harness.checkPoint("Table");
+ harness.check(defaults.get("Table.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Table.ancestorInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("Table.focusCellHighlightBorder") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("Table.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Table.gridColor"), new ColorUIResource(128, 128, 128));
+ harness.check(defaults.get("Table.scrollPaneBorder") instanceof BorderUIResource.BevelBorderUIResource);
+
+ harness.checkPoint("TableHeader");
+ harness.check(defaults.get("TableHeader.cellBorder"), null);
+ harness.check(defaults.get("TableHeader.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("TextArea");
+ harness.check(defaults.get("TextArea.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("TextArea.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("TextArea.font"), new FontUIResource("MonoSpaced", Font.PLAIN, 12));
+ harness.check(defaults.get("TextArea.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(UIManager.get("TextArea.focusInputMap") instanceof InputMapUIResource);
+ Object ta = UIManager.get("TextArea.focusInputMap");
+ InputMapUIResource taim = (InputMapUIResource) ta;
+ harness.check(taim.keys().length == 55);
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift UP")), "selection-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-next-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-previous-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift KP_UP")), "selection-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("DOWN")), "caret-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl T")), "previous-link-action");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-previous-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(taim.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift PAGE_UP")), "selection-page-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("KP_UP")), "caret-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl HOME")), "caret-begin");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl END")), "caret-end");
+ harness.check(taim.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-next-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl SPACE")), "activate-link-action");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ENTER")), "insert-break");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(taim.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_UP")), "selection-page-left");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift DOWN")), "selection-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "page-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN")), "selection-page-right");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-next-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-previous-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(taim.get(KeyStroke.getKeyStroke("KP_DOWN")), "caret-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl END")), "selection-end");
+ harness.check(taim.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-previous-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("ctrl T")), "next-link-action");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift KP_DOWN")), "selection-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("TAB")), "insert-tab");
+ harness.check(taim.get(KeyStroke.getKeyStroke("UP")), "caret-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl HOME")), "selection-begin");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift PAGE_DOWN")), "selection-page-down");
+ harness.check(taim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(taim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-next-word");
+ harness.check(taim.get(KeyStroke.getKeyStroke("PAGE_UP")), "page-up");
+ harness.check(taim.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+
+ harness.checkPoint("TextField");
+ harness.check(defaults.get("TextField.border") instanceof BasicBorders.FieldBorder);
+ harness.check(defaults.get("TextField.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("TextField.font"), new FontUIResource("SansSerif", Font.PLAIN, 12));
+ harness.check(defaults.get("TextField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(UIManager.get("TextField.focusInputMap") instanceof InputMapUIResource);
+ Object tf = UIManager.get("TextField.focusInputMap");
+ InputMapUIResource tfim = (InputMapUIResource) tf;
+ harness.check(tfim.keys().length == 33);
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ENTER")), "notify-field-accept");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-next-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-previous-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-previous-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-next-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-next-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-previous-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-previous-word");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(tfim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-next-word");
+
+ harness.checkPoint("TextPane");
+ harness.check(defaults.get("TextPane.background"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("TextPane.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.get("TextPane.caretBlinkRate"), new Integer(500));
+ harness.check(defaults.get("TextPane.font"), new FontUIResource("Serif", Font.PLAIN, 12));
+ harness.check(defaults.get("TextPane.margin"), new InsetsUIResource(3, 3, 3, 3));
+ harness.check(UIManager.get("TextPane.focusInputMap") instanceof InputMapUIResource);
+ Object tp = UIManager.get("TextPane.focusInputMap");
+ InputMapUIResource tpim = (InputMapUIResource) tp;
+ harness.check(tpim.keys().length == 55);
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift UP")), "selection-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "caret-next-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl LEFT")), "selection-previous-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift KP_UP")), "selection-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("DOWN")), "caret-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl T")), "previous-link-action");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "caret-previous-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("CUT")), "cut-to-clipboard");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("END")), "caret-end-line");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift PAGE_UP")), "selection-page-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("KP_UP")), "caret-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("DELETE")), "delete-next");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl HOME")), "caret-begin");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift LEFT")), "selection-backward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl END")), "caret-end");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("BACK_SPACE")), "delete-previous");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl RIGHT")), "selection-next-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("LEFT")), "caret-backward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("KP_LEFT")), "caret-backward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift KP_RIGHT")), "selection-forward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl SPACE")), "activate-link-action");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl H")), "delete-previous");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "unselect");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ENTER")), "insert-break");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift HOME")), "selection-begin-line");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("RIGHT")), "caret-forward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_UP")), "selection-page-left");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift DOWN")), "selection-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "page-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift KP_LEFT")), "selection-backward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl O")), "toggle-componentOrientation");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl X")), "cut-to-clipboard");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN")), "selection-page-right");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl C")), "copy-to-clipboard");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "caret-next-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift END")), "selection-end-line");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "caret-previous-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("HOME")), "caret-begin-line");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl V")), "paste-from-clipboard");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("KP_DOWN")), "caret-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl A")), "select-all");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift RIGHT")), "selection-forward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl END")), "selection-end");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("COPY")), "copy-to-clipboard");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl KP_LEFT")), "selection-previous-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("ctrl T")), "next-link-action");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift KP_DOWN")), "selection-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("TAB")), "insert-tab");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("UP")), "caret-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl HOME")), "selection-begin");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift PAGE_DOWN")), "selection-page-down");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "caret-forward");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("shift ctrl KP_RIGHT")), "selection-next-word");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("PAGE_UP")), "page-up");
+ harness.check(tpim.get(KeyStroke.getKeyStroke("PASTE")), "paste-from-clipboard");
+
+ harness.checkPoint("TitledBorder");
+ harness.check(defaults.get("TitledBorder.border") instanceof BorderUIResource.EtchedBorderUIResource);
+ harness.check(defaults.get("TitledBorder.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ harness.checkPoint("ToggleButton");
+ harness.check(defaults.get("ToggleButton.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("ToggleButton.focusInputMap") instanceof InputMapUIResource);
+ Object to = UIManager.get("ToggleButton.focusInputMap");
+ InputMapUIResource toim = (InputMapUIResource) to;
+ harness.check(toim.keys().length == 2);
+ harness.check(toim.get(KeyStroke.getKeyStroke("SPACE")), "pressed");
+ harness.check(toim.get(KeyStroke.getKeyStroke("released SPACE")), "released");
+ harness.check(defaults.get("ToggleButton.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ToggleButton.margin"), new InsetsUIResource(2, 14, 2, 14));
+ harness.check(defaults.get("ToggleButton.textIconGap"), new Integer(4));
+ harness.check(defaults.get("ToggleButton.textShiftOffset"), new Integer(0));
+
+ harness.checkPoint("ToolBar");
+ harness.check(defaults.get("ToolBar.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ToolBar.border") instanceof BorderUIResource.EtchedBorderUIResource);
+ harness.check(defaults.get("ToolBar.dockingForeground"), new ColorUIResource(255, 0, 0));
+ harness.check(defaults.get("ToolBar.floatingForeground"), new ColorUIResource(64, 64, 64));
+ harness.check(defaults.get("ToolBar.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ToolBar.separatorSize"), new DimensionUIResource(10, 10));
+
+ harness.checkPoint("ToolTip");
+ harness.check(defaults.get("ToolTip.border") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("ToolTip.font"), new FontUIResource("SansSerif", Font.PLAIN, 12));
+
+ harness.checkPoint("Tree");
+ harness.check(defaults.get("Tree.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Tree.changeSelectionWithFocus"), Boolean.TRUE);
+ harness.check(defaults.get("Tree.drawsFocusBorderAroundIcon"), Boolean.FALSE);
+ harness.check(defaults.get("Tree.editorBorder") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("Tree.focusInputMap") instanceof InputMapUIResource);
+ Object tr = UIManager.get("Tree.focusInputMap");
+ InputMapUIResource trim = (InputMapUIResource) tr;
+ harness.check(trim.keys().length == 56);
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl DOWN")), "selectNextChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift UP")), "selectPreviousExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl RIGHT")), "scrollRight");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift KP_UP")), "selectPreviousExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("DOWN")), "selectNext");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl UP")), "selectPreviousChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl LEFT")), "scrollLeft");
+ harness.check(trim.get(KeyStroke.getKeyStroke("CUT")), "cut");
+ harness.check(trim.get(KeyStroke.getKeyStroke("END")), "selectLast");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift PAGE_UP")), "scrollUpExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("KP_UP")), "selectPrevious");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl UP")), "selectPreviousExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl HOME")), "selectFirstChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl END")), "selectLastChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl PAGE_DOWN")), "scrollDownChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("LEFT")), "selectParent");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl PAGE_UP")), "scrollUpChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("KP_LEFT")), "selectParent");
+ harness.check(trim.get(KeyStroke.getKeyStroke("SPACE")), "addToSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl SPACE")), "toggleAndAnchor");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift SPACE")), "extendTo");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl SPACE")), "moveSelectionTo");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ADD")), "expand");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl BACK_SLASH")), "clearSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl DOWN")), "selectNextExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift HOME")), "selectFirstExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("RIGHT")), "selectChild");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_UP")), "scrollUpExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift DOWN")), "selectNextExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "scrollDownChangeSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl KP_UP")), "selectPreviousExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("SUBTRACT")), "collapse");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl X")), "cut");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl PAGE_DOWN")), "scrollDownExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl SLASH")), "selectAll");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl C")), "copy");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl KP_RIGHT")), "scrollRight");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift END")), "selectLastExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl KP_DOWN")), "selectNextExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl KP_LEFT")), "scrollLeft");
+ harness.check(trim.get(KeyStroke.getKeyStroke("HOME")), "selectFirst");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl V")), "paste");
+ harness.check(trim.get(KeyStroke.getKeyStroke("KP_DOWN")), "selectNext");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl A")), "selectAll");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl KP_DOWN")), "selectNextChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl END")), "selectLastExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("COPY")), "copy");
+ harness.check(trim.get(KeyStroke.getKeyStroke("ctrl KP_UP")), "selectPreviousChangeLead");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift KP_DOWN")), "selectNextExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("UP")), "selectPrevious");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift ctrl HOME")), "selectFirstExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("shift PAGE_DOWN")), "scrollDownExtendSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("KP_RIGHT")), "selectChild");
+ harness.check(trim.get(KeyStroke.getKeyStroke("F2")), "startEditing");
+ harness.check(trim.get(KeyStroke.getKeyStroke("PAGE_UP")), "scrollUpChangeSelection");
+ harness.check(trim.get(KeyStroke.getKeyStroke("PASTE")), "paste");
+ harness.check(defaults.get("Tree.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Tree.hash"), new ColorUIResource(128, 128, 128));
+ harness.check(defaults.get("Tree.leftChildIndent"), new Integer(7));
+ harness.check(defaults.get("Tree.rightChildIndent"), new Integer(13));
+ harness.check(defaults.get("Tree.rowHeight"), new Integer(16));
+ harness.check(defaults.get("Tree.scrollsOnExpand"), Boolean.TRUE);
+ harness.check(defaults.get("Tree.selectionBorderColor"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("Tree.focusInputMap.RightToLeft") instanceof InputMapUIResource);
+
+ harness.checkPoint("Viewport");
+ harness.check(defaults.get("Viewport.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initSystemColorDefaults.java b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initSystemColorDefaults.java
new file mode 100644
index 00000000..a0ddc3ba
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicLookAndFeel/initSystemColorDefaults.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.basic.BasicLookAndFeel;
+
+/**
+ * Some checks for the initSystemColorDefaults() method in the
+ * {@link BasicLookAndFeel} class.
+ */
+public class initSystemColorDefaults implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicLookAndFeel laf = new MyBasicLookAndFeel();
+ UIDefaults defaults = new UIDefaults();
+ laf.initSystemColorDefaults(defaults);
+ harness.check(defaults.get("activeCaption"), new ColorUIResource(0, 0, 128));
+ harness.check(defaults.get("activeCaptionBorder"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("activeCaptionText"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("control"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("controlDkShadow"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("controlHighlight"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("controlLtHighlight"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("controlShadow"), new ColorUIResource(128, 128, 128));
+ harness.check(defaults.get("controlText"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("desktop"), new ColorUIResource(0, 92, 92));
+ harness.check(defaults.get("inactiveCaption"), new ColorUIResource(128, 128, 128));
+ harness.check(defaults.get("inactiveCaptionBorder"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("inactiveCaptionText"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("info"), new ColorUIResource(255, 255, 225));
+ harness.check(defaults.get("infoText"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("menu"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("menuText"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("scrollbar"), new ColorUIResource(224, 224, 224));
+ harness.check(defaults.get("text"), new ColorUIResource(192, 192, 192));
+ harness.check(defaults.get("textHighlight"), new ColorUIResource(0, 0, 128));
+ harness.check(defaults.get("textHighlightText"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("textInactiveText"), new ColorUIResource(128, 128, 128));
+ harness.check(defaults.get("textText"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("window"), new ColorUIResource(255, 255, 255));
+ harness.check(defaults.get("windowBorder"), new ColorUIResource(0, 0, 0));
+ harness.check(defaults.get("windowText"), new ColorUIResource(0, 0, 0));
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Entries
new file mode 100644
index 00000000..b27d3ee4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicMenuItemUI.java/1.1/Wed Aug 31 13:58:15 2005//
+/getPropertyPrefix.java/1.3/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Repository
new file mode 100644
index 00000000..4c09d514
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/MyBasicMenuItemUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/MyBasicMenuItemUI.java
new file mode 100644
index 00000000..f9cf781e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/MyBasicMenuItemUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicMenuItemUI;
+
+import javax.swing.plaf.basic.BasicMenuItemUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicMenuItemUI extends BasicMenuItemUI
+{
+ public MyBasicMenuItemUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java
new file mode 100644
index 00000000..41b585c4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuItemUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicMenuItemUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicMenuItemUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicMenuItemUI ui = new MyBasicMenuItemUI();
+ harness.check(ui.getPropertyPrefix(), "MenuItem");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Entries
new file mode 100644
index 00000000..1a2d4ddd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicMenuUI.java/1.1/Wed Aug 31 13:58:15 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Repository
new file mode 100644
index 00000000..0f929b8d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/MyBasicMenuUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/MyBasicMenuUI.java
new file mode 100644
index 00000000..ba558238
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/MyBasicMenuUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicMenuUI;
+
+import javax.swing.plaf.basic.BasicMenuUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicMenuUI extends BasicMenuUI
+{
+ public MyBasicMenuUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java
new file mode 100644
index 00000000..f4b322bf
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicMenuUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicMenuUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicMenuUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicMenuUI ui = new MyBasicMenuUI();
+ harness.check(ui.getPropertyPrefix(), "Menu");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries.Log
new file mode 100644
index 00000000..36b4227f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/PropertyChangeHandler////
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Repository
new file mode 100644
index 00000000..38a5cfec
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Entries
new file mode 100644
index 00000000..e58e43d1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Entries
@@ -0,0 +1,2 @@
+/propertyChange.java/1.1/Tue Aug 1 20:50:14 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Repository
new file mode 100644
index 00000000..2c765c17
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/propertyChange.java b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/propertyChange.java
new file mode 100644
index 00000000..c14e6b45
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicOptionPaneUI/PropertyChangeHandler/propertyChange.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicOptionPaneUI.PropertyChangeHandler;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+import javax.swing.plaf.basic.BasicOptionPaneUI;
+
+public class propertyChange
+ implements Testlet
+{
+
+ class TestOptionPaneUI
+ extends BasicOptionPaneUI
+ {
+ protected void installComponents()
+ {
+ super.installComponents();
+ // Uncomment to see that the call originates in propertyChange().
+ //Thread.dumpStack();
+ installComponentsCalled = true;
+ }
+
+ protected void uninstallComponents()
+ {
+ super.uninstallComponents();
+ // Uncomment to see that the call originates in propertyChange().
+ // Thread.dumpStack();
+ uninstallComponentsCalled = true;
+ }
+ }
+
+ boolean installComponentsCalled;
+ boolean uninstallComponentsCalled;
+
+ /**
+ * The entry point.
+ *
+ * @param h the test harness
+ */
+ public void test(TestHarness h)
+ {
+ testVisualProperties(h);
+ }
+
+ /**
+ * This tests if the BasicOptionPaneUI correctly uninstalls and reinstalls
+ * the components on the JOptionPane. That is, it should call
+ * uninstallComponents() and installComponents() when any of the
+ * visual properties changes.
+ *
+ * @param h the test harness
+ */
+ private void testVisualProperties(TestHarness h)
+ {
+ JOptionPane p = new JOptionPane();
+ TestOptionPaneUI ui = new TestOptionPaneUI();
+ p.setUI(ui);
+
+ installComponentsCalled = false;
+ uninstallComponentsCalled = false;
+
+ p.setIcon(new ImageIcon());
+ checkReinstalled(h);
+
+ p.setInitialSelectionValue("Hello World");
+ checkReinstalled(h);
+
+ p.setInitialValue(new Object());
+ checkReinstalled(h);
+
+ p.setMessage(new Object());
+ checkReinstalled(h);
+
+ p.setMessageType(JOptionPane.ERROR_MESSAGE);
+ checkReinstalled(h);
+
+ p.setOptions(new Object[0]);
+ checkReinstalled(h);
+
+ p.setOptionType(JOptionPane.NO_OPTION);
+ checkReinstalled(h);
+
+ p.setWantsInput(false);
+ p.setWantsInput(true);
+ checkReinstalled(h);
+ }
+
+ private void checkReinstalled(TestHarness h)
+ {
+ h.check(installComponentsCalled, true);
+ h.check(uninstallComponentsCalled, true);
+ installComponentsCalled = false;
+ uninstallComponentsCalled = false;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Entries
new file mode 100644
index 00000000..a238b4ed
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicPasswordFieldUI.java/1.1/Tue Sep 13 19:54:44 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Repository
new file mode 100644
index 00000000..bcb95029
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java
new file mode 100644
index 00000000..8fbcfd5b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/MyBasicPasswordFieldUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicPasswordFieldUI;
+
+import javax.swing.plaf.basic.BasicPasswordFieldUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicPasswordFieldUI extends BasicPasswordFieldUI
+{
+ public MyBasicPasswordFieldUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java
new file mode 100644
index 00000000..01d889ec
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicPasswordFieldUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicPasswordFieldUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicPasswordFieldUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicPasswordFieldUI ui = new MyBasicPasswordFieldUI();
+ harness.check(ui.getPropertyPrefix(), "PasswordField");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Entries
new file mode 100644
index 00000000..a832d222
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicRadioButtonMenuItemUI.java/1.1/Wed Aug 31 13:58:15 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Repository
new file mode 100644
index 00000000..bfc7df25
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/MyBasicRadioButtonMenuItemUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/MyBasicRadioButtonMenuItemUI.java
new file mode 100644
index 00000000..24155e60
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/MyBasicRadioButtonMenuItemUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicRadioButtonMenuItemUI;
+
+import javax.swing.plaf.basic.BasicRadioButtonMenuItemUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicRadioButtonMenuItemUI extends BasicRadioButtonMenuItemUI
+{
+ public MyBasicRadioButtonMenuItemUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java
new file mode 100644
index 00000000..aa743fc6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicRadioButtonMenuItemUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicRadioButtonMenuItemUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicRadioButtonMenuItemUI ui = new MyBasicRadioButtonMenuItemUI();
+ harness.check(ui.getPropertyPrefix(), "RadioButtonMenuItem");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Entries
new file mode 100644
index 00000000..6b5ef499
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicRadioButtonUI.java/1.1/Tue Aug 30 21:31:59 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Repository
new file mode 100644
index 00000000..822c299f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/MyBasicRadioButtonUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/MyBasicRadioButtonUI.java
new file mode 100644
index 00000000..a80a92aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/MyBasicRadioButtonUI.java
@@ -0,0 +1,36 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicRadioButtonUI;
+
+import javax.swing.plaf.basic.BasicRadioButtonUI;
+
+public class MyBasicRadioButtonUI extends BasicRadioButtonUI
+{
+ public MyBasicRadioButtonUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java
new file mode 100644
index 00000000..494427c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRadioButtonUI/getPropertyPrefix.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+// Uses: MyBasicRadioButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicRadioButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicRadioButtonUI ui = new MyBasicRadioButtonUI();
+ harness.check(ui.getPropertyPrefix(), "RadioButton.");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Entries
new file mode 100644
index 00000000..47d67c4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Entries
@@ -0,0 +1,2 @@
+/installDefaults.java/1.1/Tue Jan 31 20:21:51 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Repository
new file mode 100644
index 00000000..1690b926
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/installDefaults.java b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/installDefaults.java
new file mode 100644
index 00000000..becf7c2d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicRootPaneUI/installDefaults.java
@@ -0,0 +1,80 @@
+/* installDefaults.java -- Tests BasicRootPane.installDefaults
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.plaf.basic.BasicRootPaneUI;
+
+import java.awt.Color;
+
+import javax.swing.JRootPane;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicRootPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the BasicRootPaneUI.installDefaults method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class installDefaults implements Testlet
+{
+
+ /**
+ * Overridden to make installDefaults visible.
+ */
+ class TestRootUI extends BasicRootPaneUI
+ {
+ public void installDefaults(JRootPane rp)
+ {
+ super.installDefaults(rp);
+ }
+ }
+
+ /**
+ * The entry point for this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testBackground(harness);
+ }
+
+ /**
+ * Checks if the installDefaults() method should touch the background
+ * of the JRootPane.
+ *
+ * @param h the test harness to use
+ */
+ private void testBackground(TestHarness h)
+ {
+ // We even give it a potential value to set.
+ UIManager.put("RootPane.background", Color.RED);
+ TestRootUI ui = new TestRootUI();
+ JRootPane rp = new JRootPane();
+ rp.setBackground(null);
+ ui.installDefaults(rp);
+ h.check(rp.getBackground(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Entries
new file mode 100644
index 00000000..3711213e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Entries
@@ -0,0 +1,13 @@
+/MyBasicScrollBarUI.java/1.3/Wed Feb 1 11:17:11 2006//
+/constructor.java/1.3/Wed May 21 13:30:48 2008//
+/createDecreaseButton.java/1.2/Wed May 21 13:30:48 2008/-kk/
+/createIncreaseButton.java/1.2/Wed May 21 13:30:48 2008/-kk/
+/getMaximumSize.java/1.3/Wed May 21 13:30:48 2008//
+/getMaximumThumbSize.java/1.3/Wed May 21 13:30:48 2008//
+/getMinimumSize.java/1.3/Wed May 21 13:30:48 2008//
+/getMinimumThumbSize.java/1.3/Wed May 21 13:30:48 2008//
+/getPreferredSize.java/1.3/Wed May 21 13:30:48 2008//
+/installComponents.java/1.2/Wed May 21 13:30:48 2008//
+/installDefaults.java/1.3/Wed May 21 13:30:48 2008/-kk/
+/layoutContainer.java/1.3/Wed May 21 13:30:48 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Repository
new file mode 100644
index 00000000..cd720220
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java
new file mode 100644
index 00000000..367d86a7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/MyBasicScrollBarUI.java
@@ -0,0 +1,141 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.JButton;
+import javax.swing.JScrollBar;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+
+/**
+ * Provides access to protected fields and methods.
+ */
+public class MyBasicScrollBarUI extends BasicScrollBarUI
+{
+ public Dimension getMinimumThumbSize()
+ {
+ return super.getMinimumThumbSize();
+ }
+
+ public Dimension getMaximumThumbSize()
+ {
+ return super.getMaximumThumbSize();
+ }
+
+ public Rectangle getTrackBounds()
+ {
+ return super.getTrackBounds();
+ }
+
+ public Rectangle getThumbBounds()
+ {
+ return super.getThumbBounds();
+ }
+
+ /**
+ * Overrides createIncreaseButton() to enable public access in tests.
+ *
+ * @param o the orientation
+ */
+ public JButton createIncreaseButton(int o)
+ {
+ return super.createIncreaseButton(o);
+ }
+
+ /**
+ * Overrides createDecreaseButton() to enable public access in tests.
+ *
+ * @param o the orientation
+ */
+ public JButton createDecreaseButton(int o)
+ {
+ return super.createDecreaseButton(o);
+ }
+
+ /**
+ * Overrides installDefaults() to enable public access in tests.
+ */
+ public void installDefaults()
+ {
+ super.installDefaults();
+ }
+
+ /**
+ * Overrides installComponents() to enable public access in tests.
+ */
+ public void installComponents()
+ {
+ super.installComponents();
+ }
+
+ /**
+ * Returns the value of the (otherwise protected) field incrButton.
+ *
+ * @return the value of the incrButton field
+ */
+ public JButton getIncrButton()
+ {
+ return incrButton;
+ }
+
+ /**
+ * Sets the value of the (otherwise protected) field incrButton.
+ *
+ * @param b the button to set
+ */
+ public void setIncrButton(JButton b)
+ {
+ incrButton = b;
+ }
+
+ /**
+ * Returns the value of the (otherwise protected) field decrButton.
+ *
+ * @return the value of the decrButton field
+ */
+ public JButton getDecrButton()
+ {
+ return decrButton;
+ }
+
+ /**
+ * Sets the value of the (otherwise protected) field decrButton.
+ *
+ * @param b the button to set
+ */
+ public void setDecrButton(JButton b)
+ {
+ decrButton = b;
+ }
+
+ /**
+ * Sets the value of the (otherwise protected) field scrollbar.
+ *
+ * @param sb the scrollbar to set
+ */
+ public void setScrollbar(JScrollBar sb)
+ {
+ scrollbar = sb;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java
new file mode 100644
index 00000000..494d73d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/constructor.java
@@ -0,0 +1,96 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.BorderLayout;
+import java.awt.Rectangle;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the constructor in the {@link BasicScrollBarUI} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ harness.check(ui.getTrackBounds(), null);
+ harness.check(ui.getThumbBounds(), null);
+
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ scrollBar.setBounds(0, 0, 100, 20);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.setSize(100, 20);
+ panel.add(scrollBar);
+ panel.doLayout();
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(16, 0, 68, 20));
+ harness.check(ui.getThumbBounds(), new Rectangle(16, 0, 8, 20));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java
new file mode 100644
index 00000000..a5ba03ce
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createDecreaseButton.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This tests the functionality of the createDecreaseButton method. This
+ * test shows that this method does not change the decrButton field and
+ * delivers a new button on each call.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class createDecreaseButton implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ harness.check(ui.getDecrButton(), null);
+ JButton b1 = ui.createDecreaseButton(SwingConstants.NORTH);
+ // The method call must not touch the decrButton field.
+ harness.check(ui.getDecrButton(), null);
+ // The method delivers a new instance on each call.
+ JButton b2 = ui.createDecreaseButton(SwingConstants.NORTH);
+ harness.check(b1 != b2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java
new file mode 100644
index 00000000..eb937e07
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/createIncreaseButton.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This tests the functionality of the createIncreaseButton method. This
+ * test shows that this method does not change the incrButton field and
+ * delivers a new button on each call.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class createIncreaseButton implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ harness.check(ui.getIncrButton(), null);
+ JButton b1 = ui.createIncreaseButton(SwingConstants.NORTH);
+ // The method call must not touch the incrButton field.
+ harness.check(ui.getIncrButton(), null);
+ ui.setIncrButton(b1);
+ // The method delivers a new instance on each call.
+ JButton b2 = ui.createIncreaseButton(SwingConstants.NORTH);
+ harness.check(b1 != b2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java
new file mode 100644
index 00000000..66cb441a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumSize.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMaximumSize() method in the {@link BasicScrollBarUI}
+ * class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getMaximumSize(scrollBar),
+ new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+
+ // test vertical scroll bar
+ MyBasicScrollBarUI ui2 = new MyBasicScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getMaximumSize(scrollBar2),
+ new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java
new file mode 100644
index 00000000..4af2bb78
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMaximumThumbSize.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMaximumThumbSize() method in the
+ * {@link BasicScrollBarUI} class.
+ */
+public class getMaximumThumbSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getMaximumThumbSize(), new Dimension(4096, 4096));
+
+ // test vertical scroll bar
+ MyBasicScrollBarUI ui2 = new MyBasicScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getMaximumThumbSize(), new Dimension(4096, 4096));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java
new file mode 100644
index 00000000..267c5210
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumSize.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMinimumSize() method in the {@link BasicScrollBarUI}
+ * class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getMinimumSize(scrollBar), new Dimension(48, 16));
+
+ // test vertical scroll bar
+ MyBasicScrollBarUI ui2 = new MyBasicScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getMinimumSize(scrollBar2), new Dimension(16, 48));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java
new file mode 100644
index 00000000..1d22efeb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getMinimumThumbSize.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMinimumThumbSize() method in the
+ * {@link BasicScrollBarUI} class.
+ */
+public class getMinimumThumbSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getMinimumThumbSize(), new Dimension(8, 8));
+
+ // test vertical scroll bar
+ MyBasicScrollBarUI ui2 = new MyBasicScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getMinimumThumbSize(), new Dimension(8, 8));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java
new file mode 100644
index 00000000..b4e8023f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/getPreferredSize.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPreferredSize() method in the {@link BasicScrollBarUI}
+ * class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getPreferredSize(scrollBar), new Dimension(48, 16));
+
+ // test vertical scroll bar
+ MyBasicScrollBarUI ui2 = new MyBasicScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getPreferredSize(scrollBar2), new Dimension(16, 48));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java
new file mode 100644
index 00000000..c395837c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installComponents.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.5
+// Uses: MyBasicScrollBarUI
+
+// Copyright (C) 2006 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if installComponents() works correctly. ATM we check if the fields
+ * incrButton and decrButton are initialized within this method, since we had
+ * a bug with this. There is certainly more that could be checked here.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class installComponents implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testIncrButton(harness);
+ testDecrButton(harness);
+ }
+
+ /**
+ * Tests if the incrButton field is initialized in this method.
+ *
+ * @param harness the test harness to use
+ */
+ private void testIncrButton(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ ui.setScrollbar(new JScrollBar());
+ harness.check(ui.getIncrButton(), null);
+ ui.installComponents();
+ harness.check(ui.getIncrButton() != null);
+ }
+
+ /**
+ * Tests if the decrButton field is initialized in this method.
+ *
+ * @param harness the test harness to use
+ */
+ private void testDecrButton(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ ui.setScrollbar(new JScrollBar());
+ harness.check(ui.getDecrButton(), null);
+ ui.installComponents();
+ harness.check(ui.getDecrButton() != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java
new file mode 100644
index 00000000..735e044f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/installDefaults.java
@@ -0,0 +1,78 @@
+// Tags: JDK1.5
+// Uses: MyBasicScrollBarUI
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import javax.swing.JScrollBar;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if installDefaults() works correctly. ATM we check if the fields
+ * incrButton and decrButton are initialized within this method, since we had
+ * a bug with this. There is certainly more that could be checked here.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class installDefaults implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testIncrButton(harness);
+ testDecrButton(harness);
+ }
+
+ /**
+ * Tests if the incrButton field is initialized in this method.
+ *
+ * @param harness the test harness to use
+ */
+ private void testIncrButton(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ ui.setScrollbar(new JScrollBar());
+ harness.check(ui.getIncrButton(), null);
+ ui.installDefaults();
+ harness.check(ui.getIncrButton(), null);
+ }
+
+ /**
+ * Tests if the decrButton field is initialized in this method.
+ *
+ * @param harness the test harness to use
+ */
+ private void testDecrButton(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ ui.setScrollbar(new JScrollBar());
+ harness.check(ui.getDecrButton(), null);
+ ui.installDefaults();
+ harness.check(ui.getDecrButton(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java
new file mode 100644
index 00000000..2113997a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicScrollBarUI/layoutContainer.java
@@ -0,0 +1,106 @@
+// Tags: JDK1.2
+// Uses: MyBasicScrollBarUI ../../TestLookAndFeel
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+
+import java.awt.Rectangle;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.basic.BasicScrollBarUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the layoutContainer() method in the
+ * {@link BasicScrollBarUI} class.
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ testHorizontal(harness);
+ testVertical(harness);
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void testHorizontal(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 100, 20);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(16, 0, 68, 20));
+ harness.check(ui.getThumbBounds(), new Rectangle(16, 0, 8, 20));
+
+ scrollBar.setBounds(40, 50, 250, 37);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(16, 0, 218, 37));
+ harness.check(ui.getThumbBounds(), new Rectangle(16, 0, 21, 37));
+ }
+
+ public void testVertical(TestHarness harness)
+ {
+ MyBasicScrollBarUI ui = new MyBasicScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 20, 100);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 16, 20, 68));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 16, 20, 8));
+
+ scrollBar.setBounds(40, 50, 37, 250);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 16, 37, 218));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 16, 37, 21));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Entries
new file mode 100644
index 00000000..d6adda32
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Entries
@@ -0,0 +1,4 @@
+/getMaximumSize.java/1.1/Thu Oct 13 09:11:37 2005//
+/getMinimumSize.java/1.1/Thu Oct 13 09:11:37 2005//
+/getPreferredSize.java/1.1/Thu Oct 13 09:11:37 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Repository
new file mode 100644
index 00000000..b0757dcf
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMaximumSize.java
new file mode 100644
index 00000000..b9442b47
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMaximumSize.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicSeparatorUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSeparator;
+import javax.swing.plaf.basic.BasicSeparatorUI;
+
+/**
+ * Some checks for the getMaximumSize() method.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicSeparatorUI ui = new BasicSeparatorUI();
+ JSeparator h = new JSeparator(JSeparator.HORIZONTAL);
+ harness.check(ui.getMaximumSize(h), null);
+ JSeparator v = new JSeparator(JSeparator.VERTICAL);
+ harness.check(ui.getMaximumSize(v), null);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMinimumSize.java
new file mode 100644
index 00000000..5a2e16e3
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getMinimumSize.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicSeparatorUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSeparator;
+import javax.swing.plaf.basic.BasicSeparatorUI;
+
+/**
+ * Some checks for the getMinimumSize() method.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicSeparatorUI ui = new BasicSeparatorUI();
+ JSeparator h = new JSeparator(JSeparator.HORIZONTAL);
+ harness.check(ui.getMinimumSize(h), null);
+ JSeparator v = new JSeparator(JSeparator.VERTICAL);
+ harness.check(ui.getMinimumSize(v), null);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getPreferredSize.java
new file mode 100644
index 00000000..4a62905d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSeparatorUI/getPreferredSize.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicSeparatorUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JSeparator;
+import javax.swing.plaf.basic.BasicSeparatorUI;
+
+/**
+ * Some checks for the getPreferredSize() method.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ BasicSeparatorUI ui = new BasicSeparatorUI();
+ JSeparator h = new JSeparator(JSeparator.HORIZONTAL);
+ harness.check(ui.getPreferredSize(h), new Dimension(0, 2));
+ JSeparator v = new JSeparator(JSeparator.VERTICAL);
+ harness.check(ui.getPreferredSize(v), new Dimension(2, 0));
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Entries
new file mode 100644
index 00000000..9d721181
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Entries
@@ -0,0 +1,13 @@
+/MyBasicSliderUI.java/1.1/Mon Jul 25 08:54:22 2005//
+/calculateGeometry.java/1.2/Mon Jul 25 17:02:55 2005//
+/constructors.java/1.2/Mon Jul 25 17:02:55 2005//
+/getMaximumSize.java/1.1/Mon Jul 25 08:54:22 2005//
+/getMinimumSize.java/1.1/Mon Jul 25 08:54:22 2005//
+/getPreferredSize.java/1.1/Mon Jul 25 08:54:22 2005//
+/getThumbSize.java/1.2/Mon Jul 25 17:02:55 2005//
+/installUI.java/1.2/Mon Jul 25 17:02:55 2005//
+/valueForXPosition.java/1.1/Mon Jul 25 08:54:22 2005//
+/valueForYPosition.java/1.1/Mon Jul 25 08:54:22 2005//
+/xPositionForValue.java/1.1/Mon Jul 25 08:54:22 2005//
+/yPositionForValue.java/1.1/Mon Jul 25 08:54:22 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Repository
new file mode 100644
index 00000000..9197d73b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/MyBasicSliderUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/MyBasicSliderUI.java
new file mode 100644
index 00000000..23877295
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/MyBasicSliderUI.java
@@ -0,0 +1,112 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * A utility class to provide access to protected attributes and methods.
+ */
+public class MyBasicSliderUI extends BasicSliderUI {
+
+ public MyBasicSliderUI(JSlider slider)
+ {
+ super(slider);
+ }
+
+ public JSlider getSlider()
+ {
+ return this.slider;
+ }
+
+ public Color getFocusColor()
+ {
+ return super.getFocusColor();
+ }
+
+ public Color getHighlightColor()
+ {
+ return super.getHighlightColor();
+ }
+
+ public Color getShadowColor()
+ {
+ return super.getShadowColor();
+ }
+
+ public int getTrackBuffer()
+ {
+ return super.trackBuffer;
+ }
+
+ public int getTickLength()
+ {
+ return super.getTickLength();
+ }
+
+ public Dimension getThumbSize() {
+ return super.getThumbSize();
+ }
+
+ public Rectangle getFocusRect()
+ {
+ return this.focusRect;
+ }
+
+ public Rectangle getContentRect()
+ {
+ return this.contentRect;
+ }
+
+ public Rectangle getTrackRect()
+ {
+ return this.trackRect;
+ }
+
+ public Rectangle getThumbRect()
+ {
+ return this.thumbRect;
+ }
+
+ public Rectangle getTickRect()
+ {
+ return this.tickRect;
+ }
+
+ public void calculateGeometry()
+ {
+ super.calculateGeometry();
+ }
+
+ public int xPositionForValue(int v)
+ {
+ return super.xPositionForValue(v);
+ }
+
+ public int yPositionForValue(int v)
+ {
+ return super.yPositionForValue(v);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java
new file mode 100644
index 00000000..14aaeb96
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/calculateGeometry.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+// Uses: MyBasicSliderUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the calculateGeometry() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class calculateGeometry implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ slider.setBounds(10, 20, 300, 40);
+ MyBasicSliderUI ui = new MyBasicSliderUI(slider);
+ ui.installUI(slider);
+ ui.calculateGeometry();
+ harness.check(ui.getContentRect(), new Rectangle(0, 0, 300, 40));
+ harness.check(ui.getTrackBuffer(), 5);
+ harness.check(ui.getFocusRect(), new Rectangle(0, 0, 300, 40));
+ harness.check(ui.getTrackRect(), new Rectangle(5, 9, 290, 20));
+ harness.check(ui.getThumbRect(), new Rectangle(145, 9, 11, 20));
+ harness.check(ui.getTickRect(), new Rectangle(5, 28, 290, 0));
+
+ slider.setPaintTicks(true);
+ slider.setMajorTickSpacing(10);
+ ui.calculateGeometry();
+ harness.check(ui.getContentRect(), new Rectangle(0, 0, 300, 40));
+ harness.check(ui.getTrackBuffer(), 5);
+ harness.check(ui.getFocusRect(), new Rectangle(0, 0, 300, 40));
+ harness.check(ui.getTrackRect(), new Rectangle(5, 5, 290, 20));
+ harness.check(ui.getThumbRect(), new Rectangle(145, 5, 11, 20));
+ harness.check(ui.getTickRect(), new Rectangle(5, 25, 290, 8));
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java
new file mode 100644
index 00000000..4a7bc0f1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/constructors.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+// Uses: MyBasicSliderUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the constructors in the {@link BasicSliderUI} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ MyBasicSliderUI b = new MyBasicSliderUI(slider);
+
+ // the constructor doesn't initialise anything
+ harness.check(b.getSlider(), null);
+ harness.check(b.getFocusColor(), null);
+ harness.check(b.getHighlightColor(), null);
+ harness.check(b.getShadowColor(), null);
+
+ harness.check(b.getTrackBuffer(), 0);
+ harness.check(b.getTickLength(), 8);
+
+ // accessing the thumb size at this point throws a NullPointerException
+ boolean pass = false;
+ try
+ {
+ /* Dimension d =*/ b.getThumbSize();
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check null slider
+ pass = true;
+ try
+ {
+ /* MyBasicSliderUI b2 =*/ new MyBasicSliderUI(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMaximumSize.java
new file mode 100644
index 00000000..128299e1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMaximumSize.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the getMaximumSize() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.HORIZONTAL);
+ BasicSliderUI ui1 = new BasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ Dimension d1 = ui1.getMaximumSize(slider1);
+ harness.check(d1, new Dimension(32767, 20));
+
+ slider1.setPaintTicks(true);
+ slider1.setMajorTickSpacing(10);
+ d1 = ui1.getMaximumSize(slider1);
+ harness.check(d1, new Dimension(32767, 28));
+
+ JSlider slider2 = new JSlider(JSlider.VERTICAL);
+ BasicSliderUI ui2 = new BasicSliderUI(slider2);
+ slider2.setUI(ui2);
+ Dimension d2 = ui2.getMaximumSize(slider2);
+ harness.check(d2, new Dimension(20, 32767));
+
+ slider2.setPaintTicks(true);
+ slider2.setMajorTickSpacing(10);
+ d2 = ui2.getMaximumSize(slider2);
+ harness.check(d2, new Dimension(28, 32767));
+
+ // try null argument - the argument is ignored, probably the implementation
+ // uses the internal slider reference
+ d2 = ui2.getMaximumSize(null);
+ harness.check(d2, new Dimension(28, 32767));
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMinimumSize.java
new file mode 100644
index 00000000..6ccd45bd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getMinimumSize.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the getMinimumSize() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.HORIZONTAL);
+ BasicSliderUI ui1 = new BasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ Dimension d1 = ui1.getMinimumSize(slider1);
+ harness.check(d1, new Dimension(36, 20));
+
+ slider1.setPaintTicks(true);
+ slider1.setMajorTickSpacing(10);
+ d1 = ui1.getMinimumSize(slider1);
+ harness.check(d1, new Dimension(36, 28));
+
+ JSlider slider2 = new JSlider(JSlider.VERTICAL);
+ BasicSliderUI ui2 = new BasicSliderUI(slider2);
+ slider2.setUI(ui2);
+ Dimension d2 = ui2.getMinimumSize(slider2);
+ harness.check(d2, new Dimension(20, 36));
+
+ slider2.setPaintTicks(true);
+ slider2.setMajorTickSpacing(10);
+ d2 = ui2.getMinimumSize(slider2);
+ harness.check(d2, new Dimension(28, 36));
+
+ // try null argument - the argument is ignored, probably the implementation
+ // uses the internal slider reference
+ d2 = ui2.getMinimumSize(null);
+ harness.check(d2, new Dimension(28, 36));
+
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getPreferredSize.java
new file mode 100644
index 00000000..9524f922
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getPreferredSize.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the getPreferredSize() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.HORIZONTAL);
+ BasicSliderUI ui1 = new BasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ Dimension d1 = ui1.getPreferredSize(slider1);
+ harness.check(d1, new Dimension(200, 20));
+
+ slider1.setPaintTicks(true);
+ slider1.setMajorTickSpacing(10);
+ d1 = ui1.getPreferredSize(slider1);
+ harness.check(d1, new Dimension(200, 28));
+
+ JSlider slider2 = new JSlider(JSlider.VERTICAL);
+ BasicSliderUI ui2 = new BasicSliderUI(slider2);
+ slider2.setUI(ui2);
+ Dimension d2 = ui2.getPreferredSize(slider2);
+ harness.check(d2, new Dimension(20, 200));
+
+ slider2.setPaintTicks(true);
+ slider2.setMajorTickSpacing(10);
+ d2 = ui2.getPreferredSize(slider2);
+ harness.check(d2, new Dimension(28, 200));
+
+ // try null argument - the argument is ignored, probably the implementation
+ // uses the internal slider reference
+ d2 = ui2.getPreferredSize(null);
+ harness.check(d2, new Dimension(28, 200));
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java
new file mode 100644
index 00000000..9c319ffa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/getThumbSize.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyBasicSliderUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the getThumbSize method in the {@link BasicSliderUI} class.
+ */
+public class getThumbSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ slider.setUI(new MyBasicSliderUI(slider));
+ MyBasicSliderUI b = (MyBasicSliderUI) slider.getUI();
+ harness.check(b.getThumbSize(), new Dimension(11, 20));
+ slider.setOrientation(JSlider.VERTICAL);
+ harness.check(b.getThumbSize(), new Dimension(20, 11));
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java
new file mode 100644
index 00000000..b5cbdfef
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/installUI.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+// Uses: MyBasicSliderUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the installUI() method in the {@link BasicSliderUI} class.
+ */
+public class installUI implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JSlider slider = new JSlider();
+ slider.setBounds(10, 20, 300, 40);
+ MyBasicSliderUI ui = new MyBasicSliderUI(slider);
+ ui.installUI(slider);
+ harness.check(ui.getContentRect(), new Rectangle(0, 0, 300, 40));
+ harness.check(ui.getTrackBuffer(), 5);
+ harness.check(ui.getTrackRect(), new Rectangle(5, 9, 290, 20));
+ harness.check(ui.getThumbRect(), new Rectangle(145, 9, 11, 20));
+ harness.check(ui.getTickRect(), new Rectangle(5, 28, 290, 0));
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForXPosition.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForXPosition.java
new file mode 100644
index 00000000..008adefd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForXPosition.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the valueForXPosition() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class valueForXPosition implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.HORIZONTAL);
+ slider1.setBounds(10, 20, 400, 40);
+ BasicSliderUI ui1 = new BasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ harness.check(ui1.valueForXPosition(0), 0);
+ harness.check(ui1.valueForXPosition(200), 50);
+ harness.check(ui1.valueForXPosition(400), 100);
+ harness.check(ui1.valueForXPosition(-50), 0);
+ harness.check(ui1.valueForXPosition(450), 100);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForYPosition.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForYPosition.java
new file mode 100644
index 00000000..67dc9614
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/valueForYPosition.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the valueForYPosition() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class valueForYPosition implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.VERTICAL);
+ slider1.setBounds(10, 20, 40, 400);
+ BasicSliderUI ui1 = new BasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ harness.check(ui1.valueForYPosition(0), 100);
+ harness.check(ui1.valueForYPosition(200), 50);
+ harness.check(ui1.valueForYPosition(400), 0);
+ harness.check(ui1.valueForYPosition(-50), 100);
+ harness.check(ui1.valueForYPosition(450), 0);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/xPositionForValue.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/xPositionForValue.java
new file mode 100644
index 00000000..d8c9ac88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/xPositionForValue.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the xPositionForValue() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class xPositionForValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.HORIZONTAL);
+ slider1.setBounds(10, 20, 400, 40);
+ MyBasicSliderUI ui1 = new MyBasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ harness.check(ui1.xPositionForValue(0), 5);
+ harness.check(ui1.xPositionForValue(50), 200);
+ harness.check(ui1.xPositionForValue(100), 394);
+ harness.check(ui1.xPositionForValue(150), 394);
+ harness.check(ui1.xPositionForValue(-50), 5);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/yPositionForValue.java b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/yPositionForValue.java
new file mode 100644
index 00000000..39310e5a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSliderUI/yPositionForValue.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.basic.BasicSliderUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JSlider;
+import javax.swing.plaf.basic.BasicSliderUI;
+
+/**
+ * Some checks for the yPositionForValue() method in the {@link BasicSliderUI}
+ * class.
+ */
+public class yPositionForValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JSlider slider1 = new JSlider(JSlider.VERTICAL);
+ slider1.setBounds(10, 20, 40, 400);
+ MyBasicSliderUI ui1 = new MyBasicSliderUI(slider1);
+ slider1.setUI(ui1);
+ harness.check(ui1.yPositionForValue(0), 394);
+ harness.check(ui1.yPositionForValue(50), 200);
+ harness.check(ui1.yPositionForValue(100), 5);
+ harness.check(ui1.yPositionForValue(150), 5);
+ harness.check(ui1.yPositionForValue(-50), 394);
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Entries
new file mode 100644
index 00000000..49ee2ff7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Entries
@@ -0,0 +1,2 @@
+/layoutContainer.java/1.1/Mon Oct 9 13:35:47 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Repository
new file mode 100644
index 00000000..ac9b13a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/layoutContainer.java b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/layoutContainer.java
new file mode 100644
index 00000000..bdf0a3b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/BasicHorizontalLayoutManager/layoutContainer.java
@@ -0,0 +1,75 @@
+/* layoutContainer.java -- Checks the layout manager layoutContainer()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.plaf.basic.BasicSplitPaneUI.BasicHorizontalLayoutManager;
+
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.plaf.basic.BasicSplitPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class layoutContainer implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testMinimumSize(harness);
+ }
+
+ /**
+ * Tests that the layout manager honors the minimum size of the
+ * components.
+ *
+ * @param h the test harness
+ */
+ private void testMinimumSize(TestHarness h)
+ {
+ // Check without calling setDividerLocation().
+ JPanel c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(100, 100));
+ JPanel c2 = new JPanel();
+ JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, c1, c2);
+ sp.setSize(200, 200);
+ h.check(sp.getLayout()
+ instanceof BasicSplitPaneUI.BasicHorizontalLayoutManager);
+ sp.getLayout().layoutContainer(sp);
+ h.check(c1.getWidth(), 100);
+
+ // Check with calling setDividerLocation().
+ c1 = new JPanel();
+ c1.setMinimumSize(new Dimension(100, 100));
+ c2 = new JPanel();
+ sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, c1, c2);
+ sp.setDividerLocation(0);
+ sp.setSize(200, 200);
+ h.check(sp.getLayout()
+ instanceof BasicSplitPaneUI.BasicHorizontalLayoutManager);
+ sp.getLayout().layoutContainer(sp);
+ h.check(c1.getWidth(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries
new file mode 100644
index 00000000..bf636df7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries
@@ -0,0 +1,2 @@
+/getDividerLocation.java/1.1/Mon Oct 9 13:35:47 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries.Log
new file mode 100644
index 00000000..d069d803
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/BasicHorizontalLayoutManager////
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Repository
new file mode 100644
index 00000000..aca06cbd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/getDividerLocation.java b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/getDividerLocation.java
new file mode 100644
index 00000000..f2b1fbcf
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicSplitPaneUI/getDividerLocation.java
@@ -0,0 +1,65 @@
+/* getDividerLocation.java -- Checks BasicSplitPaneUI.getDividerLocation()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.plaf.basic.BasicSplitPaneUI;
+
+import java.awt.Component;
+
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.plaf.basic.BasicSplitPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks BasicSplitPaneUI.getDividerLocation().
+ */
+public class getDividerLocation implements Testlet
+{
+
+ /**
+ * Checks that BasicSplitPaneUI.getDividerLocation() simply
+ * returns the real location of the divider component, regardless
+ * of the JSplitPaneUI setting.
+ */
+ public void test(TestHarness harness)
+ {
+ // Check horizontal.
+ JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
+ new JPanel(), new JPanel());
+ BasicSplitPaneUI ui = (BasicSplitPaneUI) sp.getUI();
+ Component divider = sp.getComponent(2);
+ divider.setLocation(1234, 5678);
+ harness.check(ui.getDividerLocation(sp), 1234);
+
+ // Check vertical.
+ sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
+ new JPanel(), new JPanel());
+ ui = (BasicSplitPaneUI) sp.getUI();
+ divider = sp.getComponent(2);
+ divider.setLocation(1234, 5678);
+ harness.check(ui.getDividerLocation(sp), 5678);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Entries
new file mode 100644
index 00000000..8ef0fbc4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicTextAreaUI.java/1.1/Fri Sep 9 05:52:28 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Repository
new file mode 100644
index 00000000..40557989
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/MyBasicTextAreaUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/MyBasicTextAreaUI.java
new file mode 100644
index 00000000..c1c02ab4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/MyBasicTextAreaUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextAreaUI;
+
+import javax.swing.plaf.basic.BasicTextAreaUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicTextAreaUI extends BasicTextAreaUI
+{
+ public MyBasicTextAreaUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java
new file mode 100644
index 00000000..3d18f63c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextAreaUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicTextAreaUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextAreaUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicTextAreaUI ui = new MyBasicTextAreaUI();
+ harness.check(ui.getPropertyPrefix(), "TextArea");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Entries
new file mode 100644
index 00000000..96be1b43
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicTextFieldUI.java/1.1/Fri Sep 9 05:52:28 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Repository
new file mode 100644
index 00000000..1b1b2eb3
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/MyBasicTextFieldUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/MyBasicTextFieldUI.java
new file mode 100644
index 00000000..2be1bd3c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/MyBasicTextFieldUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextFieldUI;
+
+import javax.swing.plaf.basic.BasicTextFieldUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicTextFieldUI extends BasicTextFieldUI
+{
+ public MyBasicTextFieldUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java
new file mode 100644
index 00000000..6887464c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextFieldUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicTextFieldUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextFieldUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicTextFieldUI ui = new MyBasicTextFieldUI();
+ harness.check(ui.getPropertyPrefix(), "TextField");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Entries
new file mode 100644
index 00000000..aa75315c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicTextPaneUI.java/1.1/Fri Sep 9 05:52:28 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Repository
new file mode 100644
index 00000000..91fdd6bd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/MyBasicTextPaneUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/MyBasicTextPaneUI.java
new file mode 100644
index 00000000..0f9c1ade
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/MyBasicTextPaneUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextPaneUI;
+
+import javax.swing.plaf.basic.BasicTextPaneUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicTextPaneUI extends BasicTextPaneUI
+{
+ public MyBasicTextPaneUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java
new file mode 100644
index 00000000..ed67daf9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicTextPaneUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+// Uses: MyBasicTextPaneUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicTextPaneUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicTextPaneUI ui = new MyBasicTextPaneUI();
+ harness.check(ui.getPropertyPrefix(), "TextPane");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Entries
new file mode 100644
index 00000000..eb57b2e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Entries
@@ -0,0 +1,3 @@
+/MyBasicToggleButtonUI.java/1.1/Tue Aug 30 21:31:59 2005//
+/getPropertyPrefix.java/1.2/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Repository
new file mode 100644
index 00000000..a5c79f9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/MyBasicToggleButtonUI.java b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/MyBasicToggleButtonUI.java
new file mode 100644
index 00000000..93d3a012
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/MyBasicToggleButtonUI.java
@@ -0,0 +1,39 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.basic.BasicToggleButtonUI;
+
+import javax.swing.plaf.basic.BasicToggleButtonUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyBasicToggleButtonUI extends BasicToggleButtonUI
+{
+ public MyBasicToggleButtonUI()
+ {
+ super();
+ }
+ public String getPropertyPrefix()
+ {
+ return super.getPropertyPrefix();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java
new file mode 100644
index 00000000..981058d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/BasicToggleButtonUI/getPropertyPrefix.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+// Uses: MyBasicToggleButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.basic.BasicToggleButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyBasicToggleButtonUI ui = new MyBasicToggleButtonUI();
+ harness.check(ui.getPropertyPrefix(), "ToggleButton.");
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/basic/CVS/Entries b/gnu/testlet/javax/swing/plaf/basic/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/plaf/basic/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/basic/CVS/Entries.Log
new file mode 100644
index 00000000..939e1b67
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/CVS/Entries.Log
@@ -0,0 +1,29 @@
+A D/BasicArrowButton////
+A D/BasicButtonUI////
+A D/BasicCheckBoxMenuItemUI////
+A D/BasicCheckBoxUI////
+A D/BasicComboBoxEditor////
+A D/BasicComboBoxUI////
+A D/BasicEditorPaneUI////
+A D/BasicFileChooserUI////
+A D/BasicFormattedTextFieldUI////
+A D/BasicHTML////
+A D/BasicIconFactory////
+A D/BasicInternalFrameTitlePane////
+A D/BasicListUI////
+A D/BasicLookAndFeel////
+A D/BasicMenuItemUI////
+A D/BasicMenuUI////
+A D/BasicOptionPaneUI////
+A D/BasicPasswordFieldUI////
+A D/BasicRadioButtonMenuItemUI////
+A D/BasicRadioButtonUI////
+A D/BasicRootPaneUI////
+A D/BasicScrollBarUI////
+A D/BasicSeparatorUI////
+A D/BasicSliderUI////
+A D/BasicSplitPaneUI////
+A D/BasicTextAreaUI////
+A D/BasicTextFieldUI////
+A D/BasicTextPaneUI////
+A D/BasicToggleButtonUI////
diff --git a/gnu/testlet/javax/swing/plaf/basic/CVS/Repository b/gnu/testlet/javax/swing/plaf/basic/CVS/Repository
new file mode 100644
index 00000000..c556f52d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/basic
diff --git a/gnu/testlet/javax/swing/plaf/basic/CVS/Root b/gnu/testlet/javax/swing/plaf/basic/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/basic/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/metal/CVS/Entries.Log
new file mode 100644
index 00000000..0bcf941c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/CVS/Entries.Log
@@ -0,0 +1,18 @@
+A D/DefaultMetalTheme////
+A D/MetalBorders////
+A D/MetalButtonUI////
+A D/MetalCheckBoxUI////
+A D/MetalComboBoxButton////
+A D/MetalComboBoxEditor////
+A D/MetalComboBoxIcon////
+A D/MetalComboBoxUI////
+A D/MetalFileChooserUI////
+A D/MetalIconFactory////
+A D/MetalLookAndFeel////
+A D/MetalRadioButtonUI////
+A D/MetalScrollBarUI////
+A D/MetalScrollButton////
+A D/MetalTheme////
+A D/MetalToggleButtonUI////
+A D/MetalToolTipUI////
+A D/OceanTheme////
diff --git a/gnu/testlet/javax/swing/plaf/metal/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/CVS/Repository
new file mode 100644
index 00000000..3f886f3f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal
diff --git a/gnu/testlet/javax/swing/plaf/metal/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Entries
new file mode 100644
index 00000000..6cfb5cad
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Entries
@@ -0,0 +1,9 @@
+/DefaultMetalThemeTest.java/1.1/Sat Dec 25 15:13:37 2004//
+/getControlTextFont.java/1.2/Tue Sep 12 14:07:44 2006//
+/getMenuTextFont.java/1.2/Tue Sep 12 14:07:44 2006//
+/getName.java/1.1/Fri Jul 1 09:14:15 2005//
+/getSubTextFont.java/1.2/Tue Sep 12 14:07:44 2006//
+/getSystemTextFont.java/1.2/Tue Sep 12 14:07:44 2006//
+/getUserTextFont.java/1.2/Tue Sep 12 14:07:44 2006//
+/getWindowTitleFont.java/1.2/Tue Sep 12 14:07:44 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Repository
new file mode 100644
index 00000000..21044a46
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/DefaultMetalThemeTest.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/DefaultMetalThemeTest.java
new file mode 100644
index 00000000..1828cf7b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/DefaultMetalThemeTest.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.plaf.*;
+import javax.swing.plaf.metal.*;
+
+public class DefaultMetalThemeTest extends DefaultMetalTheme implements Testlet
+{
+ private void check(TestHarness h, ColorUIResource color, int r, int g, int b)
+ {
+ h.check(color.getRed(), r, "red color component");
+ h.check(color.getGreen(), g, "green color component");
+ h.check(color.getBlue(), b, "blue color component");
+ }
+
+ public void test(TestHarness h)
+ {
+ h.check(getName(), "Steel", "name of theme");
+
+ check(h, getPrimary1(), 102, 102, 153);
+ check(h, getPrimary2(), 153, 153, 204);
+ check(h, getPrimary3(), 204, 204, 255);
+ check(h, getSecondary1(), 102, 102, 102);
+ check(h, getSecondary2(), 153, 153, 153);
+ check(h, getSecondary3(), 204, 204, 204);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java
new file mode 100644
index 00000000..8c209ee4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getControlTextFont.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getControlTextFont() method.
+ */
+public class getControlTextFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ FontUIResource f2 = t.getControlTextFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect already created themes...
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ f = t.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // set it to true
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java
new file mode 100644
index 00000000..4d1e20ca
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getMenuTextFont.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getMenuTextFont() method.
+ */
+public class getMenuTextFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ FontUIResource f2 = t.getMenuTextFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect already created themes...
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ f = t.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // set it to true
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getName.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getName.java
new file mode 100644
index 00000000..57706c25
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getName.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getName() method.
+ */
+public class getName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ harness.check(t.getName(), "Steel");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java
new file mode 100644
index 00000000..1d382421
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSubTextFont.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getSubTextFont() method.
+ */
+public class getSubTextFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+ FontUIResource f2 = t.getSubTextFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect this font...
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ f = t.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+
+ // set it to false
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java
new file mode 100644
index 00000000..b86ff638
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getSystemTextFont.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getSystemTextFont() method.
+ */
+public class getSystemTextFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ FontUIResource f2 = t.getSystemTextFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect this font...
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ f = t.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // set it to false
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java
new file mode 100644
index 00000000..d2f7540d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getUserTextFont.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getUserTextFont() method.
+ */
+public class getUserTextFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ FontUIResource f2 = t.getUserTextFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect this font...
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ f = t.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // set it to false
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java
new file mode 100644
index 00000000..a10f0d77
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/DefaultMetalTheme/getWindowTitleFont.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.DefaultMetalTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+
+/**
+ * Some checks for the getWindowTitleFont() method.
+ */
+public class getWindowTitleFont implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultMetalTheme t = new DefaultMetalTheme();
+ FontUIResource f = t.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ FontUIResource f2 = t.getWindowTitleFont();
+ harness.check(f == f2);
+
+ // setting defaults property doesn't affect this font...
+ UIManager.put("swing.boldMetal", Boolean.TRUE);
+ f = t.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ // ...but is picked up by new themes
+ DefaultMetalTheme t2 = new DefaultMetalTheme();
+ f = t2.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ // set it to false
+ UIManager.put("swing.boldMetal", Boolean.FALSE);
+ DefaultMetalTheme t3 = new DefaultMetalTheme();
+ f = t3.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ // clear it again
+ UIManager.put("swing.boldMetal", null);
+ DefaultMetalTheme t4 = new DefaultMetalTheme();
+ f = t4.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Entries
new file mode 100644
index 00000000..d73206b9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/getBorderInsets.java/1.2/Mon Feb 13 13:41:06 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Repository
new file mode 100644
index 00000000..e1a9c766
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java
new file mode 100644
index 00000000..9908eabd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ButtonBorder/getBorderInsets.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.ButtonBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalBorders.ButtonBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link ButtonBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ ButtonBorder b = new ButtonBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(3, 3, 3, 3));
+
+ // the method always returns the same instance
+ Insets insets2 = b.getBorderInsets(null);
+ harness.check(insets == insets2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ ButtonBorder b = new ButtonBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(3, 3, 3, 3));
+
+ // check null insets
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(new JButton("Test"), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries
new file mode 100644
index 00000000..3c400f0c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries
@@ -0,0 +1,6 @@
+/getButtonBorder.java/1.1/Tue Sep 20 10:55:22 2005//
+/getDesktopIconBorder.java/1.2/Tue Sep 20 10:55:22 2005//
+/getTextBorder.java/1.1/Tue Sep 20 10:55:22 2005//
+/getTextFieldBorder.java/1.1/Tue Sep 20 10:55:22 2005//
+/getToggleButtonBorder.java/1.1/Tue Sep 20 10:55:22 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries.Log
new file mode 100644
index 00000000..6de89fe6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Entries.Log
@@ -0,0 +1,7 @@
+A D/ButtonBorder////
+A D/Flush3DBorder////
+A D/InternalFrameBorder////
+A D/MenuBarBorder////
+A D/MenuItemBorder////
+A D/PaletteBorder////
+A D/ToolBarBorder////
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Repository
new file mode 100644
index 00000000..b7e69520
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Entries
new file mode 100644
index 00000000..d73206b9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/getBorderInsets.java/1.2/Mon Feb 13 13:41:06 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Repository
new file mode 100644
index 00000000..ba4a6cc8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java
new file mode 100644
index 00000000..9d426bef
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/Flush3DBorder/getBorderInsets.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.Flush3DBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalBorders.Flush3DBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link Flush3DBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ Flush3DBorder b = new Flush3DBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(2, 2, 2, 2));
+
+ // the method always returns the same instance
+ Insets insets2 = b.getBorderInsets(null);
+ harness.check(insets == insets2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ Flush3DBorder b = new Flush3DBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(2, 2, 2, 2));
+
+ // check null insets
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(new JButton("Test"), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Entries
new file mode 100644
index 00000000..d73206b9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/getBorderInsets.java/1.2/Mon Feb 13 13:41:06 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Repository
new file mode 100644
index 00000000..8b751ba5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java
new file mode 100644
index 00000000..b8a5f442
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/InternalFrameBorder/getBorderInsets.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.InternalFrameBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalBorders.InternalFrameBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link InternalFrameBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ InternalFrameBorder b = new InternalFrameBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(5, 5, 5, 5));
+
+ // the method always returns the same instance
+ Insets insets2 = b.getBorderInsets(null);
+ harness.check(insets == insets2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ InternalFrameBorder b = new InternalFrameBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(5, 5, 5, 5));
+
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(new JButton("Test"), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Entries
new file mode 100644
index 00000000..467d0d30
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Entries
@@ -0,0 +1,4 @@
+/MyMenuBarBorder.java/1.2/Thu Oct 13 16:01:30 2005//
+/borderInsets.java/1.2/Wed May 21 13:30:49 2008//
+/getBorderInsets.java/1.2/Wed Feb 1 10:27:52 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Repository
new file mode 100644
index 00000000..e05c5d53
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java
new file mode 100644
index 00000000..cdeac6b6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/MyMenuBarBorder.java
@@ -0,0 +1,46 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalBorders.MenuBarBorder;
+
+import java.awt.Insets;
+
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+ * A subclass to provide access to protected attributes.
+ */
+public class MyMenuBarBorder extends MetalBorders.MenuBarBorder
+{
+ public MyMenuBarBorder()
+ {
+ }
+
+ /**
+ * Provides access to the border insets.
+ *
+ * @return The border insets.
+ */
+ public static Insets getBorderInsets()
+ {
+ return MetalBorders.MenuBarBorder.borderInsets;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java
new file mode 100644
index 00000000..417d1761
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/borderInsets.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.4
+// Uses: MyMenuBarBorder
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalBorders.MenuBarBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.plaf.metal.MetalBorders.MenuBarBorder;
+
+/**
+* Some tests for the borderInsets in the {@link MenuBarBorder} class.
+*/
+public class borderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(MyMenuBarBorder.getBorderInsets(), new Insets(1, 0, 1, 0));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java
new file mode 100644
index 00000000..ac258929
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuBarBorder/getBorderInsets.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.MenuBarBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalBorders.MenuBarBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link MenuBarBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ MenuBarBorder b = new MenuBarBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(1, 0, 1, 0));
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ MenuBarBorder b = new MenuBarBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(1, 0, 1, 0));
+
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Entries
new file mode 100644
index 00000000..c83ad5fd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Entries
@@ -0,0 +1,4 @@
+/MyMenuItemBorder.java/1.1/Tue Sep 13 19:37:54 2005//
+/borderInsets.java/1.1/Tue Sep 13 19:37:54 2005//
+/getBorderInsets.java/1.2/Mon Feb 13 13:41:06 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Repository
new file mode 100644
index 00000000..f00f4fb2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/MyMenuItemBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/MyMenuItemBorder.java
new file mode 100644
index 00000000..0b23bee8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/MyMenuItemBorder.java
@@ -0,0 +1,31 @@
+/*
+ * Created on Jul 26, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.MenuItemBorder;
+
+import java.awt.Insets;
+
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+ *
+ */
+public class MyMenuItemBorder extends MetalBorders.MenuItemBorder
+{
+ public MyMenuItemBorder()
+ {
+ }
+
+ /**
+ * Provides access to the border insets.
+ *
+ * @return The border insets.
+ */
+ public static Insets getBorderInsets()
+ {
+ return MetalBorders.MenuItemBorder.borderInsets;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/borderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/borderInsets.java
new file mode 100644
index 00000000..28e653cf
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/borderInsets.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalBorders.MenuItemBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.plaf.metal.MetalBorders.MenuItemBorder;
+
+/**
+* Some tests for the borderInsets in the {@link MenuItemBorder} class.
+*/
+public class borderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(MyMenuItemBorder.getBorderInsets(), new Insets(2, 2, 2, 2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java
new file mode 100644
index 00000000..ae3826ee
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/MenuItemBorder/getBorderInsets.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.MenuItemBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalBorders.MenuItemBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link MenuItemBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ MenuItemBorder b = new MenuItemBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(2, 2, 2, 2));
+
+ // the method always returns the same instance
+ Insets insets2 = b.getBorderInsets(null);
+ harness.check(insets == insets2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ MenuItemBorder b = new MenuItemBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(2, 2, 2, 2));
+
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(new JButton("Test"), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Entries
new file mode 100644
index 00000000..d73206b9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/getBorderInsets.java/1.2/Mon Feb 13 13:41:06 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Repository
new file mode 100644
index 00000000..c383a643
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java
new file mode 100644
index 00000000..63c3a508
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/PaletteBorder/getBorderInsets.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalBorders.PaletteBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalBorders.PaletteBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link PaletteBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ PaletteBorder b = new PaletteBorder();
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(1, 1, 1, 1));
+
+ // the method always returns the same instance
+ Insets insets2 = b.getBorderInsets(null);
+ harness.check(insets == insets2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ PaletteBorder b = new PaletteBorder();
+ Insets insets = b.getBorderInsets(null, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(1, 1, 1, 1));
+
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(new JButton("Test"), null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Entries
new file mode 100644
index 00000000..55d1eec9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Entries
@@ -0,0 +1,2 @@
+/getBorderInsets.java/1.2/Wed Feb 1 10:27:52 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Repository
new file mode 100644
index 00000000..ac27bb17
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java
new file mode 100644
index 00000000..e3bf7bce
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/ToolBarBorder/getBorderInsets.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders.ToolBarBorder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JToolBar;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalBorders.ToolBarBorder;
+
+/**
+* Some tests for the getBorderInsets() method in the {@link ToolBarBorder}
+* class.
+*/
+public class getBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component)");
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ ToolBarBorder b = new ToolBarBorder();
+ JToolBar tb = new JToolBar(JToolBar.HORIZONTAL);
+ Insets insets1 = b.getBorderInsets(tb);
+ harness.check(insets1, new Insets(2, 16, 2, 2));
+ tb.setOrientation(JToolBar.VERTICAL);
+ Insets insets2 = b.getBorderInsets(tb);
+ harness.check(insets2, new Insets(16, 2, 2, 2));
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("getBorderInsets(Component, Insets)");
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JToolBar tb = new JToolBar(JToolBar.HORIZONTAL);
+ ToolBarBorder b = new ToolBarBorder();
+ Insets insets = b.getBorderInsets(tb, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(2, 16, 2, 2));
+ tb.setOrientation(JToolBar.VERTICAL);
+ insets = b.getBorderInsets(tb, new Insets(1, 2, 3, 4));
+ harness.check(insets, new Insets(16, 2, 2, 2));
+
+ boolean pass = false;
+ try
+ {
+ b.getBorderInsets(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getButtonBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getButtonBorder.java
new file mode 100644
index 00000000..b6ae63e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getButtonBorder.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+* Some tests for the MetalBorders.getButtonBorder() method.
+*/
+public class getButtonBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border b = MetalBorders.getButtonBorder();
+ harness.check(b instanceof UIResource);
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(3, 3, 3, 3));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java
new file mode 100644
index 00000000..2c0e859c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getDesktopIconBorder.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+* Some tests for the MetalBorders.getDesktopIconBorder() method.
+*/
+public class getDesktopIconBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border b = MetalBorders.getDesktopIconBorder();
+ harness.check(b instanceof UIResource);
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(3, 3, 2, 3));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextBorder.java
new file mode 100644
index 00000000..c78e31c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextBorder.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+* Some tests for the MetalBorders.getTextBorder() method.
+*/
+public class getTextBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border b = MetalBorders.getTextBorder();
+ harness.check(b instanceof UIResource);
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(2, 2, 2, 2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextFieldBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextFieldBorder.java
new file mode 100644
index 00000000..18ff47cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getTextFieldBorder.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+* Some tests for the MetalBorders.getTextFieldBorder() method.
+*/
+public class getTextFieldBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border b = MetalBorders.getTextFieldBorder();
+ harness.check(b instanceof UIResource);
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(2, 2, 2, 2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getToggleButtonBorder.java b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getToggleButtonBorder.java
new file mode 100644
index 00000000..3e11265d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalBorders/getToggleButtonBorder.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalBorders;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalBorders;
+
+/**
+* Some tests for the MetalBorders.getToggleButtonBorder() method.
+*/
+public class getToggleButtonBorder implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Border b = MetalBorders.getToggleButtonBorder();
+ harness.check(b instanceof UIResource);
+ Insets insets = b.getBorderInsets(null);
+ harness.check(insets, new Insets(3, 3, 3, 3));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Entries
new file mode 100644
index 00000000..f7770452
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Entries
@@ -0,0 +1,5 @@
+/MyMetalButtonUI.java/1.1/Fri Sep 30 21:13:44 2005//
+/getDisabledTextColor.java/1.2/Wed May 21 13:30:49 2008//
+/getFocusColor.java/1.2/Wed May 21 13:30:49 2008//
+/getSelectColor.java/1.2/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Repository
new file mode 100644
index 00000000..522103e1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/MyMetalButtonUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/MyMetalButtonUI.java
new file mode 100644
index 00000000..07029a0d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/MyMetalButtonUI.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalButtonUI;
+
+import java.awt.Color;
+
+import javax.swing.AbstractButton;
+import javax.swing.plaf.basic.BasicButtonListener;
+import javax.swing.plaf.metal.MetalButtonUI;
+
+/**
+ * Provides access to protected methods.
+ */
+public class MyMetalButtonUI extends MetalButtonUI
+{
+ public MyMetalButtonUI()
+ {
+ super();
+ }
+ public Color getDisabledTextColor()
+ {
+ return super.getDisabledTextColor();
+ }
+ public Color getFocusColor()
+ {
+ return super.getFocusColor();
+ }
+ public Color getSelectColor()
+ {
+ return super.getSelectColor();
+ }
+ public BasicButtonListener createButtonListener(AbstractButton b)
+ {
+ return super.createButtonListener(b);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java
new file mode 100644
index 00000000..298fccec
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getDisabledTextColor.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyMetalButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalButtonUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDisabledTextColor() method in the
+ * {@link MetalButtonUI} class.
+ */
+public class getDisabledTextColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalButtonUI ui = new MyMetalButtonUI();
+ harness.check(ui.getDisabledTextColor(),
+ MetalLookAndFeel.getInactiveControlTextColor());
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java
new file mode 100644
index 00000000..2837d570
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getFocusColor.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: MyMetalButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalButtonUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getFocusColor() method in the {@link MetalButtonUI}
+ * class.
+ */
+public class getFocusColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalButtonUI ui = new MyMetalButtonUI();
+ harness.check(ui.getFocusColor(), MetalLookAndFeel.getFocusColor());
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java
new file mode 100644
index 00000000..69857bdb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalButtonUI/getSelectColor.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyMetalButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.plaf.basic.BasicButtonListener;
+import javax.swing.plaf.metal.MetalButtonUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSelectColor() method in the {@link MetalButtonUI}
+ * class.
+ */
+public class getSelectColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalButtonUI ui = new MyMetalButtonUI();
+ harness.check(ui.getSelectColor(), MetalLookAndFeel.getControlShadow());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Entries
new file mode 100644
index 00000000..1bdc326e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Entries
@@ -0,0 +1,2 @@
+/getPropertyPrefix.java/1.1/Tue Aug 30 21:45:52 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Repository
new file mode 100644
index 00000000..c46efab7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/getPropertyPrefix.java b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/getPropertyPrefix.java
new file mode 100644
index 00000000..df209791
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalCheckBoxUI/getPropertyPrefix.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalCheckBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalCheckBoxUI;
+
+/**
+ * Some checks for the getPropertyPrefix() method.
+ */
+public class getPropertyPrefix implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalCheckBoxUI ui = new MetalCheckBoxUI();
+ harness.check(ui.getPropertyPrefix(), "CheckBox.");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Entries
new file mode 100644
index 00000000..823d9821
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Entries
@@ -0,0 +1,10 @@
+/constructors.java/1.3/Tue Jan 3 18:36:33 2006//
+/getComboBox.java/1.1/Thu Oct 13 07:43:31 2005//
+/getComboIcon.java/1.1/Thu Oct 13 07:43:31 2005//
+/isFocusTraversable.java/1.1/Thu Oct 13 07:43:31 2005//
+/isIconOnly.java/1.1/Thu Oct 13 07:43:31 2005//
+/setComboBox.java/1.1/Thu Oct 13 07:43:31 2005//
+/setComboIcon.java/1.1/Thu Oct 13 07:43:31 2005//
+/setEnabled.java/1.1/Thu Oct 13 07:43:31 2005//
+/setIconOnly.java/1.1/Thu Oct 13 07:43:31 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Repository
new file mode 100644
index 00000000..f0733ad8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java
new file mode 100644
index 00000000..63e0910f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/constructors.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the constructors in the {@link MetalComboBoxButton} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("MetalComboBoxButton(JComboBox, Icon, CellRendererPane, JList)");
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboBox() == jcb);
+ harness.check(b.getComboIcon() == icon);
+ harness.check(!b.isIconOnly());
+ Insets margin = b.getMargin();
+ harness.check(margin, new Insets(2, 14, 2, 14));
+ harness.check(margin instanceof UIResource);
+ Insets insets = b.getInsets();
+ harness.check(insets, new Insets(5, 17, 5, 17));
+
+ boolean pass = false;
+ try
+ {
+ b = new MetalComboBoxButton(null, icon, new CellRendererPane(),
+ new JList());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b = new MetalComboBoxButton(jcb, null, new CellRendererPane(), new JList());
+ harness.check(b.getComboIcon() == null);
+ b = new MetalComboBoxButton(jcb, icon, null, new JList());
+ b = new MetalComboBoxButton(jcb, icon, new CellRendererPane(), null);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("MetalComboBoxButton(JComboBox, Icon, boolean, CellRendererPane, JList)");
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon, true,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboBox() == jcb);
+ harness.check(b.getComboIcon() == icon);
+ harness.check(b.isIconOnly());
+
+ boolean pass = false;
+ try
+ {
+ b = new MetalComboBoxButton(null, icon, true, new CellRendererPane(),
+ new JList());
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ b = new MetalComboBoxButton(jcb, null, true, new CellRendererPane(),
+ new JList());
+ harness.check(b.getComboIcon() == null);
+
+ b = new MetalComboBoxButton(jcb, icon, true, null, new JList());
+ b = new MetalComboBoxButton(jcb, icon, true, new CellRendererPane(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboBox.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboBox.java
new file mode 100644
index 00000000..2e673068
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboBox.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the getComboBox() method in the {@link MetalComboBoxButton}
+ * class.
+ */
+public class getComboBox implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboBox() == jcb);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboIcon.java
new file mode 100644
index 00000000..98803108
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/getComboIcon.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the getComboIcon() method in the {@link MetalComboBoxButton}
+ * class.
+ */
+public class getComboIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboIcon() == icon);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isFocusTraversable.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isFocusTraversable.java
new file mode 100644
index 00000000..4782c03d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isFocusTraversable.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the isFocusTraversable() method in the
+ * {@link MetalComboBoxButton} class.
+ */
+public class isFocusTraversable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon,
+ new CellRendererPane(), new JList());
+ harness.check(!b.isFocusTraversable());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isIconOnly.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isIconOnly.java
new file mode 100644
index 00000000..61a19fd7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/isIconOnly.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the isIconOnly() method in the {@link MetalComboBoxButton}
+ * class.
+ */
+public class isIconOnly implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon,
+ new CellRendererPane(), new JList());
+ harness.check(!b.isIconOnly());
+ b.setIconOnly(true);
+ harness.check(b.isIconOnly());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboBox.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboBox.java
new file mode 100644
index 00000000..b4cdd12a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboBox.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the setComboBox() method in the
+ * {@link MetalComboBoxButton} class.
+ */
+public class setComboBox implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb1 = new JComboBox(new Object[] {"A", "B", "C"});
+ JComboBox jcb2 = new JComboBox(new Object[] {"X", "Y", "Z"});
+ Icon icon = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb1, icon,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboBox() == jcb1);
+
+ b.setComboBox(jcb2);
+ harness.check(b.getComboBox() == jcb2);
+
+ b.setComboBox(null);
+ harness.check(b.getComboBox() == null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboIcon.java
new file mode 100644
index 00000000..9c4c5bd6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setComboIcon.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some tests for the setComboIcon() method in the
+ * {@link MetalComboBoxButton} class.
+ */
+public class setComboIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon1 = new MetalComboBoxIcon();
+ Icon icon2 = MetalIconFactory.getHorizontalSliderThumbIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon1,
+ new CellRendererPane(), new JList());
+ harness.check(b.getComboIcon() == icon1);
+
+ b.setComboIcon(icon2);
+ harness.check(b.getComboIcon() == icon2);
+
+ b.setComboIcon(null);
+ harness.check(b.getComboIcon() == null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setEnabled.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setEnabled.java
new file mode 100644
index 00000000..4b450513
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setEnabled.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the setEnabled() method in the
+ * {@link MetalComboBoxButton} class.
+ */
+public class setEnabled implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon1 = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon1,
+ new CellRendererPane(), new JList());
+ harness.check(b.isEnabled());
+
+ b.setEnabled(false);
+ harness.check(!b.isEnabled());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setIconOnly.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setIconOnly.java
new file mode 100644
index 00000000..a92eba9a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxButton/setIconOnly.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.CellRendererPane;
+import javax.swing.Icon;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the setIconOnly() method in the
+ * {@link MetalComboBoxButton} class.
+ */
+public class setIconOnly implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JComboBox jcb = new JComboBox(new Object[] {"A", "B", "C"});
+ Icon icon1 = new MetalComboBoxIcon();
+ MetalComboBoxButton b = new MetalComboBoxButton(jcb, icon1,
+ new CellRendererPane(), new JList());
+ harness.check(!b.isIconOnly());
+
+ b.setIconOnly(true);
+ harness.check(b.isIconOnly());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Entries
new file mode 100644
index 00000000..cf9549e2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Entries
@@ -0,0 +1,4 @@
+/MyMetalComboBoxEditor.java/1.1/Mon Nov 7 21:15:51 2005//
+/constructor.java/1.3/Wed Feb 1 11:00:12 2006//
+/editorBorderInsets.java/1.2/Wed Feb 1 11:00:13 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Repository
new file mode 100644
index 00000000..052f7398
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/MyMetalComboBoxEditor.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/MyMetalComboBoxEditor.java
new file mode 100644
index 00000000..e51016c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/MyMetalComboBoxEditor.java
@@ -0,0 +1,37 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxEditor;
+
+import java.awt.Insets;
+
+import javax.swing.plaf.metal.MetalComboBoxEditor;
+
+/**
+ * Provides access to a protected field.
+ */
+public class MyMetalComboBoxEditor extends MetalComboBoxEditor
+{
+ public static Insets getEditorBorderInsetsField()
+ {
+ return editorBorderInsets;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java
new file mode 100644
index 00000000..15ea28b3
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/constructor.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalComboBoxEditor;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+* Some tests for the constructor() in the {@link MetalComboBoxEditor}
+* class.
+*/
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ MetalComboBoxEditor editor = new MetalComboBoxEditor();
+ JTextField tf = (JTextField) editor.getEditorComponent();
+ harness.check(tf.getColumns(), 9);
+ harness.check(tf.getInsets(), new Insets(2, 2, 2, 0));
+ harness.check(tf.getMargin(), new Insets(0, 0, 0, 0));
+ harness.check(!(tf.getInsets() instanceof UIResource));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java
new file mode 100644
index 00000000..097214fb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxEditor/editorBorderInsets.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.5
+// Uses: MyMetalComboBoxEditor
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxEditor;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Checks the value of the editorBorderInsets field.
+ */
+public class editorBorderInsets implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(MyMetalComboBoxEditor.getEditorBorderInsetsField(),
+ new Insets(2, 2, 2, 0));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Entries
new file mode 100644
index 00000000..fcd20543
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Entries
@@ -0,0 +1,3 @@
+/getIconHeight.java/1.1/Fri Sep 30 21:01:38 2005//
+/getIconWidth.java/1.1/Fri Sep 30 21:01:38 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Repository
new file mode 100644
index 00000000..490e2395
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconHeight.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconHeight.java
new file mode 100644
index 00000000..2df78e56
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconHeight.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalComboBoxIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the getIconHeight() method in the
+ * {@link MetalComboBoxIcon} class.
+ */
+public class getIconHeight implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalComboBoxIcon icon = new MetalComboBoxIcon();
+ harness.check(icon.getIconHeight(), 5);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconWidth.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconWidth.java
new file mode 100644
index 00000000..8e072196
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxIcon/getIconWidth.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalComboBoxIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+
+/**
+ * Some tests for the getIconWidth() method in the
+ * {@link MetalComboBoxIcon} class.
+ */
+public class getIconWidth implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalComboBoxIcon icon = new MetalComboBoxIcon();
+ harness.check(icon.getIconWidth(), 10);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Entries
new file mode 100644
index 00000000..6d1ee878
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Entries
@@ -0,0 +1,6 @@
+/MyMetalComboBoxUI.java/1.2/Mon Dec 19 13:43:41 2005//
+/createArrowButton.java/1.2/Wed May 21 13:30:49 2008//
+/getDisplaySize.java/1.3/Wed May 21 13:30:49 2008//
+/getMinimumSize.java/1.4/Wed May 21 13:30:49 2008//
+/getPreferredSize.java/1.4/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Repository
new file mode 100644
index 00000000..56163086
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java
new file mode 100644
index 00000000..81212901
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/MyMetalComboBoxUI.java
@@ -0,0 +1,46 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxUI;
+
+import java.awt.Dimension;
+
+import javax.swing.JButton;
+import javax.swing.plaf.metal.MetalComboBoxUI;
+
+/**
+ * Provides access to protected info.
+ */
+public class MyMetalComboBoxUI extends MetalComboBoxUI
+{
+ public JButton createArrowButton()
+ {
+ return super.createArrowButton();
+ }
+ public JButton getArrowButton()
+ {
+ return this.arrowButton;
+ }
+ public Dimension getDisplaySize()
+ {
+ return super.getDisplaySize();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java
new file mode 100644
index 00000000..a9a26389
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/createArrowButton.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: MyMetalComboBoxUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Insets;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.UIManager;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the createArrowButton() method in the
+ * {@link MetalComboBoxUI} class.
+ */
+public class createArrowButton implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ JButton b = ui.createArrowButton();
+ harness.check(b instanceof MetalComboBoxButton);
+ Insets insets = b.getInsets();
+ harness.check(insets, new Insets(3, 4, 4, 6));
+ Insets margin = b.getMargin();
+ harness.check(margin, new Insets(0, 1, 1, 3));
+ harness.check(!(margin instanceof UIResource));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java
new file mode 100644
index 00000000..02353839
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getDisplaySize.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.2
+// Uses: MyMetalComboBoxUI ../../basic/BasicComboBoxUI/MyBasicComboBoxUI
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.plaf.TestLookAndFeel;
+import gnu.testlet.javax.swing.plaf.basic.BasicComboBoxUI.MyBasicComboBoxUI;
+
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+
+import javax.swing.JComboBox;
+import javax.swing.JTextField;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDisplaySize() method in the
+ * {@link MetalComboBoxUI} class. This is an inherited method.
+ */
+public class getDisplaySize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testNotEditable(harness);
+ testEditable(harness);
+ }
+
+ /**
+ * Run some checks for a JComboBox that is not editable.
+ *
+ * @param harness the test harness.
+ */
+ private void testNotEditable(TestHarness harness)
+ {
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ int additionalHeight = 2; // margin? border?
+ int additionalWidth = 2;
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("ABC");
+ width = fm.stringWidth("ABC") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("A longer item");
+ width = fm.stringWidth("A longer item") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Prototype");
+ width = fm.stringWidth("Prototype") + additionalWidth;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+ }
+
+ /**
+ * Run some checks for a JComboBox that is editable.
+ *
+ * @param harness the test harness.
+ */
+ private void testEditable(TestHarness harness)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(new TestLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JComboBox cb = new JComboBox();
+ cb.setEditable(true);
+ MyBasicComboBoxUI ui = new MyBasicComboBoxUI();
+ cb.setUI(ui);
+ JTextField tf = (JTextField) cb.getEditor().getEditorComponent();
+ int columns = tf.getColumns();
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // for an editable JComboBox the display size is calculated from the
+ // preferred size of the JTextField it seems, or the prototype display
+ // value in some cases...
+ int width = fm.charWidth('m') * columns;
+ int height = fm.getHeight() + 2; // the 2 seems to be a fixed margin
+
+ // not sure why the width here needs + 1..
+ harness.check(ui.getDisplaySize(), new Dimension(width + 1, height));
+
+ cb.addItem("ABC");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.addItem("A longer item");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Prototype");
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("Long Prototype Display Value");
+ width = fm.stringWidth("Long Prototype Display Value") + 2;
+ harness.check(ui.getDisplaySize(), new Dimension(width, height));
+
+ // restore a sane look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java
new file mode 100644
index 00000000..c1300f62
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getMinimumSize.java
@@ -0,0 +1,239 @@
+// Tags: JDK1.5
+// Uses: MyMetalComboBoxUI
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Insets;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxIcon;
+import javax.swing.plaf.metal.MetalComboBoxUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMinimumSize() method in the
+ * {@link MetalComboBoxUI} class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with a known LAF/theme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ test1(harness);
+ test2(harness);
+ testEditable(harness);
+ testEditableWithCustomFont(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ Insets insets = ui.getArrowButton().getInsets();
+ Insets comboInsets = cb.getInsets();
+ MetalComboBoxButton b = (MetalComboBoxButton) ui.getArrowButton();
+ Dimension displaySize = ui.getDisplaySize();
+ int width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ int height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+ // the width is the display width plus the button width and
+ // the button width is equal to 'height'
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ displaySize = ui.getDisplaySize();
+ width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("XX");
+ displaySize = ui.getDisplaySize();
+ width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+ }
+
+ /**
+ * Checks the minimum size for a non-editable JComboBox with a custom font.
+ *
+ * @param harness
+ */
+ public void test2(TestHarness harness)
+ {
+ JComboBox cb = new JComboBox();
+ cb.setFont(new Font("Dialog", Font.PLAIN, 24));
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ MetalComboBoxButton button = (MetalComboBoxButton) ui.getArrowButton();
+ MetalComboBoxIcon icon = (MetalComboBoxIcon) button.getComboIcon();
+ Insets insets = button.getInsets();
+ int additionalWidth = insets.left + insets.right + 2;
+ int additionalHeight = insets.top + insets.bottom + 2;
+ int iconWidth = icon.getIconWidth() + 6; // a margin = 6 by trial and
+ // error
+ FontMetrics fm = cb.getFontMetrics(cb.getFont());
+
+ // the following width calculation is a guess. We know the value
+ // depends on the font size, and that it is relatively small, so after
+ // trying out a few candidates this one seems to give the right result
+ int width = fm.charWidth(' ') + additionalWidth + iconWidth;
+ int height = fm.getHeight() + additionalHeight;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+ // the width is the display width plus the button width and
+ // the button width is equal to 'height'
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ width = fm.charWidth('X') + additionalWidth + iconWidth;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("XX");
+ width = fm.stringWidth("XX") + additionalWidth + iconWidth;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+
+ }
+
+ private void testEditable(TestHarness harness)
+ {
+ harness.checkPoint("testEditable()");
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ cb.setEditable(true);
+
+ // Check empty ComboBox.
+ Dimension dSize = ui.getDisplaySize();
+ Insets i = cb.getInsets();
+ Insets arrowMargin = ui.getArrowButton().getMargin();
+ int width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ int height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+
+ // Check ComboBox with one element.
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+ cb.setPrototypeDisplayValue("XX");
+ harness.check(ui.getMinimumSize(cb), new Dimension(width, height));
+
+ // repeat the tests with a different font
+ JComboBox cb2 = new JComboBox();
+ MyMetalComboBoxUI ui2 = new MyMetalComboBoxUI();
+ cb2.setUI(ui2);
+ cb2.setEditable(true);
+ cb2.setFont(new Font("Dialog", Font.PLAIN, 24));
+ dSize = ui2.getDisplaySize();
+ i = cb2.getInsets();
+ arrowMargin = ui2.getArrowButton().getMargin();
+ width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui2.getMinimumSize(cb2), new Dimension(width, height));
+ cb2.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui2.getMinimumSize(cb2), new Dimension(width, height));
+ cb2.setPrototypeDisplayValue("XX");
+ harness.check(ui2.getMinimumSize(cb2), new Dimension(width, height));
+ }
+
+ /**
+ * Checks the minimum size for an editable JComboBox with a custom font.
+ *
+ * @param harness
+ */
+ public void testEditableWithCustomFont(TestHarness harness)
+ {
+ harness.checkPoint("testEditableWithCustomFont()");
+ JComboBox cb = new JComboBox();
+ cb.setFont(new Font("Dialog", Font.PLAIN, 24));
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ cb.setEditable(true);
+ Dimension dSize = ui.getDisplaySize();
+ Insets i = cb.getInsets();
+ Insets arrowMargin = ui.getArrowButton().getMargin();
+ int width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ int height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ cb.setPrototypeDisplayValue("XX");
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+
+ // repeat the tests with a different font
+ JComboBox cb2 = new JComboBox();
+ MyMetalComboBoxUI ui2 = new MyMetalComboBoxUI();
+ cb2.setUI(ui2);
+ cb2.setEditable(true);
+ cb2.setFont(new Font("Dialog", Font.PLAIN, 24));
+ dSize = ui2.getDisplaySize();
+ i = cb2.getInsets();
+ arrowMargin = ui2.getArrowButton().getMargin();
+ width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ cb2.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ cb2.setPrototypeDisplayValue("XX");
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java
new file mode 100644
index 00000000..378db6a0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalComboBoxUI/getPreferredSize.java
@@ -0,0 +1,137 @@
+// Tags: JDK1.5
+// Uses: MyMetalComboBoxUI
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalComboBoxUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Insets;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.plaf.metal.MetalComboBoxButton;
+import javax.swing.plaf.metal.MetalComboBoxUI;
+
+/**
+ * Some checks for the getPreferredSize() method in the
+ * {@link MetalComboBoxUI} class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testNonEditable(harness);
+ testEditable(harness);
+ }
+
+ private void testNonEditable(TestHarness harness)
+ {
+ harness.checkPoint("testNonEditable()");
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ Insets insets = ui.getArrowButton().getInsets();
+ Insets comboInsets = cb.getInsets();
+ MetalComboBoxButton b = (MetalComboBoxButton) ui.getArrowButton();
+ Dimension displaySize = ui.getDisplaySize();
+ int width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ int height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ // the width is the display width plus the button width and
+ // the button width is equal to 'height'
+
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ displaySize = ui.getDisplaySize();
+ width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+
+ cb.setPrototypeDisplayValue("XX");
+ displaySize = ui.getDisplaySize();
+ width = displaySize.width + insets.left + 2 * insets.right
+ + comboInsets.left + comboInsets.right
+ + b.getComboIcon().getIconWidth();
+ height = displaySize.height + comboInsets.top + comboInsets.bottom
+ + insets.top + insets.bottom;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+
+ }
+
+ private void testEditable(TestHarness harness)
+ {
+ harness.checkPoint("testEditable()");
+ JComboBox cb = new JComboBox();
+ MyMetalComboBoxUI ui = new MyMetalComboBoxUI();
+ cb.setUI(ui);
+ cb.setEditable(true);
+ // Check empty ComboBox.
+ Dimension dSize = ui.getDisplaySize();
+ Insets i = cb.getInsets();
+ Insets arrowMargin = ui.getArrowButton().getMargin();
+ int width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ int height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+
+ // Check ComboBox with one element.
+ cb.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+ cb.setPrototypeDisplayValue("XX");
+ harness.check(ui.getPreferredSize(cb), new Dimension(width, height));
+
+ // repeat the tests with a different font
+ JComboBox cb2 = new JComboBox();
+ MyMetalComboBoxUI ui2 = new MyMetalComboBoxUI();
+ cb2.setUI(ui2);
+ cb2.setEditable(true);
+ cb2.setFont(new Font("Dialog", Font.PLAIN, 24));
+ dSize = ui2.getDisplaySize();
+ i = cb2.getInsets();
+ arrowMargin = ui2.getArrowButton().getMargin();
+ width = dSize.width + i.left + i.right
+ + dSize.height + arrowMargin.left + arrowMargin.right;
+ height = dSize.height + i.top + i.bottom
+ + arrowMargin.top + arrowMargin.bottom;
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ cb2.setModel(new DefaultComboBoxModel(new Object[] {"X"}));
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ cb2.setPrototypeDisplayValue("XX");
+ harness.check(ui2.getPreferredSize(cb2), new Dimension(width, height));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Entries
new file mode 100644
index 00000000..0ab5fcf8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Entries
@@ -0,0 +1,11 @@
+/MyMetalFileChooserUI.java/1.1/Tue Dec 6 14:04:24 2005//
+/createFilterComboBoxModel.java/1.2/Wed May 21 13:30:49 2008//
+/getApproveButton.java/1.2/Wed May 21 13:30:49 2008//
+/getBottomPanel.java/1.2/Wed May 21 13:30:49 2008//
+/getButtonPanel.java/1.2/Wed May 21 13:30:49 2008//
+/getFileName.java/1.1/Tue Dec 6 14:04:24 2005//
+/getMaximumSize.java/1.1/Tue Dec 6 14:04:24 2005//
+/getMinimumSize.java/1.2/Wed Feb 1 13:51:24 2006//
+/getPreferredSize.java/1.3/Wed Feb 1 15:28:45 2006//
+/setFileName.java/1.1/Tue Dec 6 14:04:24 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Repository
new file mode 100644
index 00000000..838cbdc0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/MyMetalFileChooserUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/MyMetalFileChooserUI.java
new file mode 100644
index 00000000..b0306fa2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/MyMetalFileChooserUI.java
@@ -0,0 +1,75 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import javax.swing.ActionMap;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+public class MyMetalFileChooserUI extends MetalFileChooserUI
+{
+ public class MyFilterComboBoxModel extends FilterComboBoxModel
+ {
+ public MyFilterComboBoxModel()
+ {
+
+ }
+ }
+
+ public MyMetalFileChooserUI(JFileChooser fc)
+ {
+ super(fc);
+ }
+
+ /**
+ * Provides access to this protected method in the super class.
+ */
+ public JPanel getButtonPanel()
+ {
+ return super.getButtonPanel();
+ }
+
+ /**
+ * Provides access to this protected method in the super class.
+ */
+ public JPanel getBottomPanel()
+ {
+ return super.getBottomPanel();
+ }
+
+ public ActionMap createActionMap()
+ {
+ return super.createActionMap();
+ }
+
+ public FilterComboBoxModel createFilterComboBoxModel()
+ {
+ return super.createFilterComboBoxModel();
+ }
+
+ public JButton getApproveButton(JFileChooser fc)
+ {
+ return super.getApproveButton(fc);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java
new file mode 100644
index 00000000..7359c042
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/createFilterComboBoxModel.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: MyMetalFileChooserUI ../../../JFileChooser/MyFileChooser
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.JFileChooser.MyFileChooser;
+
+import javax.swing.ComboBoxModel;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the createActionMap() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class createFilterComboBoxModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyFileChooser fc = new MyFileChooser();
+ MyMetalFileChooserUI ui = new MyMetalFileChooserUI(fc);
+ fc.setUI(ui);
+ ComboBoxModel m = ui.createFilterComboBoxModel();
+ harness.check(m.getSize(), 1);
+ harness.check(m.getElementAt(0), fc.getFileFilter());
+
+ ComboBoxModel m2 = ui.createFilterComboBoxModel();
+ harness.check(m != m2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java
new file mode 100644
index 00000000..9245fcfd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getApproveButton.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: MyMetalFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the getApproveButton() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getApproveButton implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ fc.setDialogType(JFileChooser.OPEN_DIALOG);
+ MyMetalFileChooserUI ui = new MyMetalFileChooserUI(fc);
+ ui.installUI(fc);
+
+ // the method just returns a reference to the button, it doesn't create
+ // a new one each time the method is called...
+ JButton b1 = ui.getApproveButton(fc);
+ JButton b2 = ui.getApproveButton(fc);
+ harness.check(b1 == b2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java
new file mode 100644
index 00000000..3722d81d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getBottomPanel.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: MyMetalFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the getBottomPanel() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getBottomPanel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MyMetalFileChooserUI ui = new MyMetalFileChooserUI(fc);
+
+ // some 'get' methods actually create a new instance every time, but not
+ // this one...
+ JPanel p1 = ui.getBottomPanel();
+ JPanel p2 = ui.getBottomPanel();
+ harness.check(p1 == p2);
+
+ ui.installUI(fc);
+ p2 = ui.getBottomPanel();
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java
new file mode 100644
index 00000000..2ed25972
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getButtonPanel.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+// Uses: MyMetalFileChooserUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the getButtonPanel() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getButtonPanel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MyMetalFileChooserUI ui = new MyMetalFileChooserUI(fc);
+
+ // some 'get' methods actually create a new instance every time, but not
+ // this one...
+ JPanel p1 = ui.getButtonPanel();
+ JPanel p2 = ui.getButtonPanel();
+ harness.check(p1 == p2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getFileName.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getFileName.java
new file mode 100644
index 00000000..4cab1bc1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getFileName.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the getFileName() method in the {@link MetalFileChooserUI}
+ * class.
+ */
+public class getFileName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MetalFileChooserUI ui = new MetalFileChooserUI(fc);
+ harness.check(ui.getFileName(), null);
+ ui.installUI(fc);
+ harness.check(ui.getFileName(), "");
+ ui.setFileName("XYZ");
+ harness.check(ui.getFileName(), "XYZ");
+ fc.setCurrentDirectory(new File("ABC"));
+ harness.check(ui.getFileName(), "XYZ");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMaximumSize.java
new file mode 100644
index 00000000..1ebbeaed
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMaximumSize.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the getMaximumSize() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MetalFileChooserUI ui = new MetalFileChooserUI(fc);
+ Dimension expected = new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
+ Dimension d1 = ui.getMaximumSize(fc);
+ harness.check(d1, expected);
+
+ // check that the method returns a new instance every time?
+ Dimension d2 = ui.getMaximumSize(fc);
+ harness.check(d1 != d2);
+
+ // does the method look at the filechooser passed in?
+ Dimension d3 = ui.getMaximumSize(null);
+ harness.check(d3, expected);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java
new file mode 100644
index 00000000..a022fb79
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getMinimumSize.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import java.awt.Dimension;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMinimumSize() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JFileChooser fc = new JFileChooser();
+ MetalFileChooserUI ui = new MetalFileChooserUI(fc);
+
+ // check that the method returns a new instance every time?
+ Dimension d1 = ui.getPreferredSize(fc);
+ Dimension d2 = ui.getPreferredSize(fc);
+ harness.check(d1 != d2);
+
+ // does the method look at the filechooser passed in?
+ boolean pass = false;
+ try
+ {
+ /*Dimension d3 =*/ ui.getPreferredSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java
new file mode 100644
index 00000000..4399b086
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/getPreferredSize.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JFileChooser;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPreferredSize() method in the
+ * {@link MetalFileChooserUI} class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with DefaultMetalTheme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ JFileChooser fc = new JFileChooser();
+ MetalFileChooserUI ui = new MetalFileChooserUI(fc);
+
+ // check that the method returns a new instance every time?
+ Dimension d1 = ui.getPreferredSize(fc);
+ Dimension d2 = ui.getPreferredSize(fc);
+ harness.check(d1 != d2);
+
+ // does the method look at the filechooser passed in?
+ boolean pass = false;
+ try
+ {
+ /*Dimension d3 =*/ ui.getPreferredSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/setFileName.java b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/setFileName.java
new file mode 100644
index 00000000..d80ea110
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalFileChooserUI/setFileName.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalFileChooserUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JFileChooser;
+import javax.swing.plaf.metal.MetalFileChooserUI;
+
+/**
+ * Some checks for the setFileName() method in the {@link MetalFileChooserUI}
+ * class.
+ */
+public class setFileName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JFileChooser fc = new JFileChooser();
+ MetalFileChooserUI ui = new MetalFileChooserUI(fc);
+ harness.check(ui.getFileName(), null);
+ ui.installUI(fc);
+ harness.check(ui.getFileName(), "");
+ ui.setFileName("XYZ");
+ harness.check(ui.getFileName(), "XYZ");
+ ui.setFileName(null);
+ harness.check(ui.getFileName(), "");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries
new file mode 100644
index 00000000..d9cb8b13
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries
@@ -0,0 +1,26 @@
+/getCheckBoxIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getCheckBoxMenuItemIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getFileChooserDetailViewIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getFileChooserHomeFolderIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getFileChooserListViewIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getFileChooserNewFolderIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getFileChooserUpFolderIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getHorizontalSliderThumbIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getInternalFrameAltMaximizeIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getInternalFrameCloseIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getInternalFrameDefaultMenuIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getInternalFrameMaximizeIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getInternalFrameMinimizeIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getMenuArrowIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getMenuItemArrowIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getMenuItemCheckIcon.java/1.1/Wed Nov 23 20:26:18 2005//
+/getRadioButtonIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getRadioButtonMenuItemIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getTreeComputerIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getTreeControlIcon.java/1.3/Fri Jul 7 11:56:47 2006//
+/getTreeFloppyDriveIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getTreeFolderIcon.java/1.3/Fri Jul 7 11:56:47 2006//
+/getTreeHardDriveIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+/getTreeLeafIcon.java/1.3/Fri Jul 7 11:56:47 2006//
+/getVerticalSliderThumbIcon.java/1.2/Fri Jul 7 11:56:47 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries.Log b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries.Log
new file mode 100644
index 00000000..85b85dae
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/PaletteCloseIcon////
+A D/TreeFolderIcon////
+A D/TreeLeafIcon////
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Repository
new file mode 100644
index 00000000..eb33bdc6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Entries
new file mode 100644
index 00000000..306e4ff9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Entries
@@ -0,0 +1,3 @@
+/getIconHeight.java/1.2/Wed Feb 1 10:15:33 2006//
+/getIconWidth.java/1.2/Wed Feb 1 10:15:33 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Repository
new file mode 100644
index 00000000..457cf111
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java
new file mode 100644
index 00000000..6f9e2a3f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconHeight.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon;
+
+/**
+ * Some tests for the getIconHeight() method in the
+ * {@link PaletteCloseIcon} class.
+ */
+public class getIconHeight implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ PaletteCloseIcon icon = new PaletteCloseIcon();
+ harness.check(icon.getIconHeight(), 7);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java
new file mode 100644
index 00000000..a2c6aa35
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/PaletteCloseIcon/getIconWidth.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.5
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.PaletteCloseIcon;
+
+/**
+ * Some tests for the getIconWidth() method in the
+ * {@link PaletteCloseIcon} class.
+ */
+public class getIconWidth implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ PaletteCloseIcon icon = new PaletteCloseIcon();
+ harness.check(icon.getIconWidth(), 7);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Entries
new file mode 100644
index 00000000..cdd583fd
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Entries
@@ -0,0 +1,3 @@
+/getAdditionalHeight.java/1.1/Fri Jul 8 15:51:22 2005//
+/getShift.java/1.1/Fri Jul 8 15:51:22 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Repository
new file mode 100644
index 00000000..5c7f031d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getAdditionalHeight.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getAdditionalHeight.java
new file mode 100644
index 00000000..0d222a59
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getAdditionalHeight.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon;
+
+/**
+ * Some checks for the getAdditionalHeight() method.
+ */
+public class getAdditionalHeight implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreeFolderIcon icon = new TreeFolderIcon();
+ harness.check(icon.getAdditionalHeight(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getShift.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getShift.java
new file mode 100644
index 00000000..e2d06590
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeFolderIcon/getShift.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.TreeFolderIcon;
+
+/**
+ * Some checks for the getShift() method.
+ */
+public class getShift implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreeFolderIcon icon = new TreeFolderIcon();
+ harness.check(icon.getShift(), -1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Entries
new file mode 100644
index 00000000..72305e4d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Entries
@@ -0,0 +1,3 @@
+/getAdditionalHeight.java/1.1/Fri Jul 8 15:54:59 2005//
+/getShift.java/1.1/Fri Jul 8 15:54:59 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Repository
new file mode 100644
index 00000000..354e17e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getAdditionalHeight.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getAdditionalHeight.java
new file mode 100644
index 00000000..c347ddf8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getAdditionalHeight.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon;
+
+/**
+ * Some checks for the getAdditionalHeight() method.
+ */
+public class getAdditionalHeight implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreeLeafIcon icon = new TreeLeafIcon();
+ harness.check(icon.getAdditionalHeight(), 4);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getShift.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getShift.java
new file mode 100644
index 00000000..3b1dbb3c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/TreeLeafIcon/getShift.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalIconFactory.TreeLeafIcon;
+
+/**
+ * Some checks for the getShift() method.
+ */
+public class getShift implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreeLeafIcon icon = new TreeLeafIcon();
+ harness.check(icon.getShift(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java
new file mode 100644
index 00000000..5c38fcb2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getCheckBoxIcon() method.
+ */
+public class getCheckBoxIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getCheckBoxIcon();
+ harness.check(icon.getIconWidth(), 13);
+ harness.check(icon.getIconHeight(), 13);
+ harness.check(icon instanceof UIResource);
+
+ // check that a shared instance is returned
+ Icon icon2 = MetalIconFactory.getCheckBoxIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java
new file mode 100644
index 00000000..d43de80d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getCheckBoxMenuItemIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getCheckBoxMenuItemIcon() method.
+ */
+public class getCheckBoxMenuItemIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getCheckBoxMenuItemIcon();
+ harness.check(icon.getIconWidth(), 10);
+ harness.check(icon.getIconHeight(), 10);
+ harness.check(icon instanceof UIResource);
+
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getCheckBoxMenuItemIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java
new file mode 100644
index 00000000..6f818d09
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserDetailViewIcon.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getFileChooserDetailViewIcon() method.
+ */
+public class getFileChooserDetailViewIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getFileChooserDetailViewIcon();
+ harness.check(icon.getIconWidth(), 18);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(icon instanceof UIResource);
+
+ // check that the method returns a shared instance
+ Icon icon2 = MetalIconFactory.getFileChooserDetailViewIcon();
+ harness.check(icon == icon2);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java
new file mode 100644
index 00000000..7a6eae30
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserHomeFolderIcon.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getFileChooserHomeFolderIcon() method.
+ */
+public class getFileChooserHomeFolderIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getFileChooserHomeFolderIcon();
+ harness.check(icon.getIconWidth(), 18);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(icon instanceof UIResource);
+ Icon icon2 = MetalIconFactory.getFileChooserHomeFolderIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java
new file mode 100644
index 00000000..f158512f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserListViewIcon.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getFileChooserListViewIcon() method.
+ */
+public class getFileChooserListViewIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getFileChooserListViewIcon();
+ harness.check(icon.getIconWidth(), 18);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(icon instanceof UIResource);
+ Icon icon2 = MetalIconFactory.getFileChooserListViewIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java
new file mode 100644
index 00000000..fdda5734
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserNewFolderIcon.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getFileChooserNewFolderIcon() method.
+ */
+public class getFileChooserNewFolderIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getFileChooserNewFolderIcon();
+ harness.check(icon.getIconWidth(), 18);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(icon instanceof UIResource);
+ Icon icon2 = MetalIconFactory.getFileChooserNewFolderIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java
new file mode 100644
index 00000000..87882016
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getFileChooserUpFolderIcon.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getFileChooserUpFolderIcon() method.
+ */
+public class getFileChooserUpFolderIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getFileChooserUpFolderIcon();
+ harness.check(icon.getIconWidth(), 18);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(icon instanceof UIResource);
+ Icon icon2 = MetalIconFactory.getFileChooserUpFolderIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java
new file mode 100644
index 00000000..0323e9f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getHorizontalSliderThumbIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getHorizontalSliderThumbIcon() method.
+ */
+public class getHorizontalSliderThumbIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getHorizontalSliderThumbIcon();
+ harness.check(icon.getIconWidth(), 15);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+
+ // check that the same instance is returned each time
+ Icon icon2 = MetalIconFactory.getHorizontalSliderThumbIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java
new file mode 100644
index 00000000..95c6c711
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameAltMaximizeIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getInternalFrameAltMaximizeIcon() method.
+ */
+public class getInternalFrameAltMaximizeIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getInternalFrameAltMaximizeIcon(12);
+ harness.check(icon.getIconWidth(), 12);
+ harness.check(icon.getIconHeight(), 12);
+ harness.check(icon instanceof UIResource);
+ // check that a new instance is returned each time
+ Icon icon2 = MetalIconFactory.getInternalFrameAltMaximizeIcon(12);
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java
new file mode 100644
index 00000000..8a5788e9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameCloseIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getInternalFrameCloseIcon() method.
+ */
+public class getInternalFrameCloseIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getInternalFrameCloseIcon(8);
+ harness.check(icon.getIconWidth(), 8);
+ harness.check(icon.getIconHeight(), 8);
+ harness.check(icon instanceof UIResource);
+
+ // check that a new instance is returned each time
+ Icon icon2 = MetalIconFactory.getInternalFrameCloseIcon(8);
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java
new file mode 100644
index 00000000..891a184f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameDefaultMenuIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getInternalFrameDefaultMenuIcon() method.
+ */
+public class getInternalFrameDefaultMenuIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getInternalFrameDefaultMenuIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getInternalFrameDefaultMenuIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java
new file mode 100644
index 00000000..baa42f1e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMaximizeIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getInternalFrameMaximizeIcon() method.
+ */
+public class getInternalFrameMaximizeIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getInternalFrameMaximizeIcon(16);
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+ // check that a new instance is returned each time
+ Icon icon2 = MetalIconFactory.getInternalFrameMaximizeIcon(16);
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java
new file mode 100644
index 00000000..fd57cebf
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getInternalFrameMinimizeIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getInternalFrameMinimizeIcon() method.
+ */
+public class getInternalFrameMinimizeIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getInternalFrameMinimizeIcon(16);
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+ // check that a new instance is returned each time
+ Icon icon2 = MetalIconFactory.getInternalFrameMinimizeIcon(16);
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java
new file mode 100644
index 00000000..bbedacd6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuArrowIcon.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuArrowIcon() method in the {@link MetalIconFactory}
+ * class.
+ */
+public class getMenuArrowIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getMenuArrowIcon();
+ harness.check(icon.getIconWidth(), 4);
+ harness.check(icon.getIconHeight(), 8);
+ harness.check(icon instanceof UIResource);
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getMenuArrowIcon();
+ harness.check(icon == icon2);
+
+ // set the MetalLookAndFeel and confirm that this icon is used
+ // for 'Menu.arrowIcon'
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(icon, UIManager.getIcon("Menu.arrowIcon"));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java
new file mode 100644
index 00000000..12a3995a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemArrowIcon.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuItemArrowIcon() method in the
+ * {@link MetalIconFactory} class.
+ */
+public class getMenuItemArrowIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getMenuItemArrowIcon();
+ harness.check(icon.getIconWidth(), 4);
+ harness.check(icon.getIconHeight(), 8);
+ harness.check(icon instanceof UIResource);
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getMenuItemArrowIcon();
+ harness.check(icon == icon2);
+
+ // check that this is a different instance (at least) to getMenuArrowIcon()
+ harness.check(icon != MetalIconFactory.getMenuArrowIcon());
+
+ // set the MetalLookAndFeel and confirm that this icon is used
+ // for 'MenuItem.arrowIcon'
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(icon, UIManager.getIcon("MenuItem.arrowIcon"));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemCheckIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemCheckIcon.java
new file mode 100644
index 00000000..dd8bbd36
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getMenuItemCheckIcon.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuItemCheckBoxIcon() method in the
+ * {@link MetalIconFactory} class.
+ */
+public class getMenuItemCheckIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // this method returns null
+ Icon icon = MetalIconFactory.getMenuItemCheckIcon();
+ harness.check(icon, null);
+
+ // set the MetalLookAndFeel and confirm that this icon is used
+ // for 'Menu.checkIcon'
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ harness.check(icon, UIManager.getIcon("Menu.checkIcon"));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java
new file mode 100644
index 00000000..9715ee37
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getRadioButtonIcon() method.
+ */
+public class getRadioButtonIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getRadioButtonIcon();
+ harness.check(icon.getIconWidth(), 13);
+ harness.check(icon.getIconHeight(), 13);
+ harness.check(icon instanceof UIResource);
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getRadioButtonIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java
new file mode 100644
index 00000000..c3e14f28
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getRadioButtonMenuItemIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getRadioButtonMenuItemIcon() method.
+ */
+public class getRadioButtonMenuItemIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getRadioButtonMenuItemIcon();
+ harness.check(icon.getIconWidth(), 10);
+ harness.check(icon.getIconHeight(), 10);
+ harness.check(icon instanceof UIResource);
+ // check that a shared instance is returned each time
+ Icon icon2 = MetalIconFactory.getRadioButtonMenuItemIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java
new file mode 100644
index 00000000..5bbbada2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeComputerIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeComputerIcon() method.
+ */
+public class getTreeComputerIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getTreeComputerIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+
+ // check that the method returns a shared instance...
+ Icon icon2 = MetalIconFactory.getTreeComputerIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java
new file mode 100644
index 00000000..dd5100e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeControlIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeControlIcon() method.
+ */
+public class getTreeControlIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon1 = MetalIconFactory.getTreeControlIcon(false);
+ harness.check(icon1.getIconWidth(), 18);
+ harness.check(icon1.getIconHeight(), 18);
+ harness.check(!(icon1 instanceof UIResource));
+ Icon icon2 = MetalIconFactory.getTreeControlIcon(true);
+ harness.check(icon2.getIconWidth(), 18);
+ harness.check(icon2.getIconHeight(), 18);
+ harness.check(!(icon2 instanceof UIResource));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java
new file mode 100644
index 00000000..9af481a5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFloppyDriveIcon.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeFloppyDriveIcon() method.
+ */
+public class getTreeFloppyDriveIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getTreeFloppyDriveIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+
+ Icon icon2 = MetalIconFactory.getTreeFloppyDriveIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java
new file mode 100644
index 00000000..73477fc0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeFolderIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeFolderIcon() method.
+ */
+public class getTreeFolderIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getTreeFolderIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 18);
+ harness.check(!(icon instanceof UIResource));
+
+ // check that the method returns a new instance each time
+ Icon icon2 = MetalIconFactory.getTreeFolderIcon();
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java
new file mode 100644
index 00000000..76ef0c86
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeHardDriveIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeHardDriveIcon() method.
+ */
+public class getTreeHardDriveIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getTreeHardDriveIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 16);
+ harness.check(icon instanceof UIResource);
+
+ Icon icon2 = MetalIconFactory.getTreeHardDriveIcon();
+ harness.check(icon == icon2);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java
new file mode 100644
index 00000000..66cb2d64
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getTreeLeafIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getTreeLeafIcon() method.
+ */
+public class getTreeLeafIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getTreeLeafIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 20);
+ harness.check(!(icon instanceof UIResource));
+
+ // check that a new instance is returned each time
+ Icon icon2 = MetalIconFactory.getTreeLeafIcon();
+ harness.check(icon != icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java
new file mode 100644
index 00000000..b5339e68
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalIconFactory/getVerticalSliderThumbIcon.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalIconFactory;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.metal.MetalIconFactory;
+
+/**
+ * Some checks for the getVerticalSliderThumbIcon() method.
+ */
+public class getVerticalSliderThumbIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Icon icon = MetalIconFactory.getVerticalSliderThumbIcon();
+ harness.check(icon.getIconWidth(), 16);
+ harness.check(icon.getIconHeight(), 15);
+ harness.check(icon instanceof UIResource);
+
+ // check that the same instance is returned each time
+ Icon icon2 = MetalIconFactory.getVerticalSliderThumbIcon();
+ harness.check(icon == icon2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Entries
new file mode 100644
index 00000000..62fa7680
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Entries
@@ -0,0 +1,51 @@
+/MyMetalLookAndFeel.java/1.1/Mon Jul 25 16:58:26 2005//
+/getAcceleratorForeground.java/1.5/Wed Feb 1 16:40:56 2006//
+/getAcceleratorSelectedForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getBlack.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControl.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlDarkShadow.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlDisabled.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlHighlight.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlInfo.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlShadow.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getControlTextFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getDefaults.java/1.8/Wed Sep 6 11:19:00 2006/-kk/
+/getDescription.java/1.1/Fri Jul 1 09:35:48 2005//
+/getDesktopColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getFocusColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getHighlightedTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getID.java/1.1/Fri Jul 1 09:35:48 2005//
+/getInactiveControlTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getInactiveSystemTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuDisabledForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuSelectedBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuSelectedForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getMenuTextFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getName.java/1.1/Fri Jul 1 09:35:48 2005//
+/getPrimaryControl.java/1.3/Tue Jan 3 21:21:22 2006//
+/getPrimaryControlDarkShadow.java/1.3/Tue Jan 3 21:21:22 2006//
+/getPrimaryControlHighlight.java/1.3/Tue Jan 3 21:21:22 2006//
+/getPrimaryControlInfo.java/1.3/Tue Jan 3 21:21:22 2006//
+/getPrimaryControlShadow.java/1.3/Tue Jan 3 21:21:22 2006//
+/getSeparatorBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getSeparatorForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getSubTextFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getSystemTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getSystemTextFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getTextHighlightColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getUserTextColor.java/1.3/Tue Jan 3 21:21:22 2006//
+/getUserTextFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWhite.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowTitleBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowTitleFont.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowTitleForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowTitleInactiveBackground.java/1.3/Tue Jan 3 21:21:22 2006//
+/getWindowTitleInactiveForeground.java/1.3/Tue Jan 3 21:21:22 2006//
+/isNativeLookAndFeel.java/1.1/Fri Jul 1 09:35:48 2005//
+/isSupportedLookAndFeel.java/1.1/Fri Jul 1 09:35:48 2005//
+/setCurrentTheme.java/1.5/Wed Feb 1 16:40:56 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Repository
new file mode 100644
index 00000000..3c24cc19
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/MyMetalLookAndFeel.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/MyMetalLookAndFeel.java
new file mode 100644
index 00000000..e4236c31
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/MyMetalLookAndFeel.java
@@ -0,0 +1,60 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+public class MyMetalLookAndFeel extends MetalLookAndFeel {
+ public String getID()
+ {
+ return "MyMetalLookAndFeel";
+ }
+ public String getName()
+ {
+ return "MyMetalLookAndFeel";
+ }
+ public String getDescription()
+ {
+ return "MyMetalLookAndFeel";
+ }
+ public boolean isSupportedLookAndFeel()
+ {
+ return true;
+ }
+ public boolean isNativeLookAndFeel()
+ {
+ return false;
+ }
+ public void initSystemColorDefaults(UIDefaults defaults)
+ {
+ super.initSystemColorDefaults(defaults);
+ }
+ public void initComponentDefaults(UIDefaults defaults)
+ {
+ super.initComponentDefaults(defaults);
+ }
+ public void initClassDefaults(UIDefaults defaults)
+ {
+ super.initClassDefaults(defaults);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java
new file mode 100644
index 00000000..585e77bc
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getAcceleratorForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getAcceleratorForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ DefaultMetalTheme theme = new DefaultMetalTheme();
+ MetalLookAndFeel.setCurrentTheme(theme);
+ ColorUIResource c = MetalLookAndFeel.getAcceleratorForeground();
+ harness.check(c, theme.getAcceleratorForeground());
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getAcceleratorForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getAcceleratorForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java
new file mode 100644
index 00000000..e9f400d8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getAcceleratorSelectedForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getAcceleratorSelectedForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getAcceleratorSelectedForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getAcceleratorSelectedForeground();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getAcceleratorSelectedForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getAcceleratorSelectedForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java
new file mode 100644
index 00000000..a34f8e83
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getBlack.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getBlack() method in the MetalLookAndFeel class.
+ */
+public class getBlack implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource black = MetalLookAndFeel.getBlack();
+ harness.check(black, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getBlack() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ black = MetalLookAndFeel.getBlack();
+ harness.check(black, new ColorUIResource(Color.red));
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java
new file mode 100644
index 00000000..48f627ef
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControl.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControl() method in the MetalLookAndFeel class.
+ */
+public class getControl implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControl();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControl() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControl();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java
new file mode 100644
index 00000000..de40b30d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDarkShadow.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlDarkShadow() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlDarkShadow implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlDarkShadow();
+ harness.check(c, new ColorUIResource(new Color(102, 102, 102)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlDarkShadow() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlDarkShadow();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java
new file mode 100644
index 00000000..94c8961e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlDisabled.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlDisabled() method in the MetalLookAndFeel class.
+ */
+public class getControlDisabled implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlDisabled();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlDisabled() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlDisabled();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java
new file mode 100644
index 00000000..ae39c2c6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlHighlight.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlHighlight() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlHighlight implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlHighlight();
+ harness.check(c, new ColorUIResource(Color.white));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlHighlight() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlHighlight();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java
new file mode 100644
index 00000000..4d0098f5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlInfo.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlInfo() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlInfo implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlInfo();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlInfo() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlInfo();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java
new file mode 100644
index 00000000..0c68bd5b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlShadow.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlShadow() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlShadow implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlShadow();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlShadow() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlShadow();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java
new file mode 100644
index 00000000..aefdd3d0
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlTextColor() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getControlTextColor();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getControlTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getControlTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java
new file mode 100644
index 00000000..9817d98c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getControlTextFont.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getControlTextFont() method in the MetalLookAndFeel
+ * class.
+ */
+public class getControlTextFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getControlTextFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getControlTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
new file mode 100644
index 00000000..06d0f4c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDefaults.java
@@ -0,0 +1,910 @@
+// Tags: JDK1.3
+// Uses: MyMetalLookAndFeel
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Insets;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+import javax.swing.InputMap;
+import javax.swing.KeyStroke;
+import javax.swing.ListCellRenderer;
+import javax.swing.UIDefaults;
+import javax.swing.border.Border;
+import javax.swing.border.LineBorder;
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.DimensionUIResource;
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.InputMapUIResource;
+import javax.swing.plaf.InsetsUIResource;
+import javax.swing.plaf.UIResource;
+import javax.swing.plaf.IconUIResource;
+import javax.swing.plaf.BorderUIResource.LineBorderUIResource;
+import javax.swing.plaf.basic.BasicBorders;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalBorders;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the initComponentDefaults() method in the
+ * {@link MetalLookAndFeel} class.
+ */
+public class getDefaults implements Testlet
+{
+ /**
+ * This extends the default theme, so that each theme color gets a
+ * unique value. This allows to check the color values of the UIDefaults
+ * against the theme colors.
+ */
+ static class TestTheme extends DefaultMetalTheme
+ {
+ public ColorUIResource getAcceleratorForeground()
+ {
+ return new ColorUIResource(0, 0, 1);
+ }
+ public ColorUIResource getAcceleratorSelectedForeground()
+ {
+ return new ColorUIResource(0, 0, 2);
+ }
+ public ColorUIResource getBlack()
+ {
+ return new ColorUIResource(0, 0, 3);
+ }
+ public ColorUIResource getControl()
+ {
+ return new ColorUIResource(0, 0, 4);
+ }
+ public ColorUIResource getControlDarkShadow()
+ {
+ return new ColorUIResource(0, 0, 5);
+ }
+ public ColorUIResource getControlDisabled()
+ {
+ return new ColorUIResource(0, 0, 6);
+ }
+ public ColorUIResource getControlHighlight()
+ {
+ return new ColorUIResource(0, 0, 7);
+ }
+ public ColorUIResource getControlInfo()
+ {
+ return new ColorUIResource(0, 0, 8);
+ }
+ public ColorUIResource getControlShadow()
+ {
+ return new ColorUIResource(0, 0, 9);
+ }
+ public ColorUIResource getControlTextColor()
+ {
+ return new ColorUIResource(0, 0, 10);
+ }
+ public ColorUIResource getDesktopColor()
+ {
+ return new ColorUIResource(0, 0, 11);
+ }
+ public ColorUIResource getFocusColor()
+ {
+ return new ColorUIResource(0, 0, 12);
+ }
+ public ColorUIResource getHighlightedTextColor()
+ {
+ return new ColorUIResource(0, 0, 13);
+ }
+ public ColorUIResource getInactiveSystemTextColor()
+ {
+ return new ColorUIResource(0, 0, 14);
+ }
+ public ColorUIResource getMenuBackground()
+ {
+ return new ColorUIResource(0, 0, 15);
+ }
+ public ColorUIResource getMenuDisabledForeground()
+ {
+ return new ColorUIResource(0, 0, 16);
+ }
+ public ColorUIResource getMenuForeground()
+ {
+ return new ColorUIResource(0, 0, 17);
+ }
+ public ColorUIResource getMenuSelectedBackground()
+ {
+ return new ColorUIResource(0, 0, 18);
+ }
+ public ColorUIResource getMenuSelectedForeground()
+ {
+ return new ColorUIResource(0, 0, 19);
+ }
+ public ColorUIResource getPrimaryControl()
+ {
+ return new ColorUIResource(0, 0, 20);
+ }
+ public ColorUIResource getPrimaryControlDarkShadow()
+ {
+ return new ColorUIResource(0, 0, 21);
+ }
+ public ColorUIResource getPrimaryControlHighlight()
+ {
+ return new ColorUIResource(0, 0, 22);
+ }
+ public ColorUIResource getPrimaryControlInfo()
+ {
+ return new ColorUIResource(0, 0, 23);
+ }
+ public ColorUIResource getPrimaryControlShadow()
+ {
+ return new ColorUIResource(0, 0, 24);
+ }
+ public ColorUIResource getSeparatorBackground()
+ {
+ return new ColorUIResource(0, 0, 25);
+ }
+ public ColorUIResource getSeparatorForeground()
+ {
+ return new ColorUIResource(0, 0, 26);
+ }
+ public ColorUIResource getSystemTextColor()
+ {
+ return new ColorUIResource(0, 0, 27);
+ }
+ public ColorUIResource getTextHighlightColor()
+ {
+ return new ColorUIResource(0, 0, 28);
+ }
+ public ColorUIResource getUserTextColor()
+ {
+ return new ColorUIResource(0, 0, 29);
+ }
+ public ColorUIResource getWindowBackground()
+ {
+ return new ColorUIResource(0, 0, 30);
+ }
+ public ColorUIResource getWindowTitleBackground()
+ {
+ return new ColorUIResource(0, 0, 31);
+ }
+ public ColorUIResource getWindowTitleForeground()
+ {
+ return new ColorUIResource(0, 0, 32);
+ }
+ public ColorUIResource getWindowTitleInactiveBackground()
+ {
+ return new ColorUIResource(0, 0, 33);
+ }
+ public ColorUIResource getWindowTitleInactiveForeground()
+ {
+ return new ColorUIResource(0, 0, 34);
+ }
+ public ColorUIResource getInactiveControlTextColor()
+ {
+ return new ColorUIResource(0, 0, 35);
+ }
+ public FontUIResource getControlTextFont()
+ {
+ return new FontUIResource("Dialog", Font.PLAIN, 13);
+ }
+ public FontUIResource getMenuTextFont()
+ {
+ return new FontUIResource("Dialog", Font.PLAIN, 15);
+ }
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not allowed).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalLookAndFeel.setCurrentTheme(new TestTheme());
+ MyMetalLookAndFeel laf = new MyMetalLookAndFeel();
+
+ // The following does not work, at least not with JDK1.5. Maybe
+ // don't use the 'defaults' parameter anymore...
+ // UIDefaults defaults = new UIDefaults();
+ // laf.initComponentDefaults(defaults);
+ UIDefaults defaults = laf.getDefaults();
+
+ // TODO: in the following code, there are many 'instanceof' checks - these
+ // are typically very weak tests. Maybe they can be strengthened...
+ // The color tests do not test for the real color values. This is
+ // not possible. It merely tests which of the MetalTheme colors
+ // is use here. See the TestTheme class above.
+ harness.checkPoint("AuditoryCues");
+ harness.check(defaults.get("AuditoryCues.allAuditoryCues") != null);
+ harness.check(defaults.get("AuditoryCues.cueList") != null);
+ harness.check(defaults.get("AuditoryCues.defaultCueList") != null);
+ harness.check(defaults.get("AuditoryCues.noAuditoryCues") != null);
+
+ harness.checkPoint("Button");
+ harness.check(defaults.get("Button.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Button.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("Button.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("Button.disabledText"), new ColorUIResource(0, 0, 35));
+ harness.check(defaults.get("Button.disabledToolBarBorderBackground"), null);
+ harness.check(defaults.get("Button.focus"), new ColorUIResource(0, 0, 12));
+ harness.check(defaults.get("Button.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Button.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("Button.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("Button.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("Button.light"), new ColorUIResource(0, 0, 7));
+ Insets buttonMargin = defaults.getInsets("Button.margin");
+ harness.check(buttonMargin instanceof UIResource);
+ harness.check(buttonMargin, new InsetsUIResource(2, 14, 2, 14));
+ harness.check(defaults.get("Button.select"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("Button.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("Button.textIconGap"), new Integer(4));
+ harness.check(defaults.get("Button.textShiftOffset"), new Integer(0));
+ harness.check(defaults.get("Button.toolBarBorderBackground"), null);
+
+ harness.checkPoint("CheckBox");
+ harness.check(defaults.get("CheckBox.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("CheckBox.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("CheckBox.disabledText"), new ColorUIResource(0, 0, 35));
+ harness.check(defaults.get("CheckBox.focus"), new ColorUIResource(0, 0, 12));
+ harness.check(defaults.get("CheckBox.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("CheckBox.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("CheckBox.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("CheckBox.icon") instanceof Icon);
+ harness.check(defaults.get("CheckBox.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("Checkbox.select"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("CheckBox.textIconGap"), new Integer(4));
+ harness.check(defaults.get("CheckBox.textShiftOffset"), new Integer(0));
+
+ harness.checkPoint("CheckBoxMenuItem");
+ harness.check(defaults.get("CheckBoxMenuItem.acceleratorFont"), new Font("Dialog", Font.PLAIN, 10));
+ harness.check(defaults.get("CheckBoxMenuItem.acceleratorForeground"), new ColorUIResource(0, 0, 1));
+ harness.check(defaults.get("CheckBoxMenuItem.acceleratorSelectionForeground"), new ColorUIResource(0, 0, 2));
+ harness.check(defaults.get("CheckBoxMenuItem.arrowIcon") instanceof Icon);
+ harness.check(defaults.get("CheckBoxMenuItem.background"), new ColorUIResource(0, 0, 15));
+// harness.check(defaults.get("CheckBoxMenuItem.border") instanceof MetalBorders.MenuItemBorder);
+ harness.check(defaults.get("CheckBoxMenuItem.borderPainted"), Boolean.TRUE);
+ harness.check(defaults.get("CheckBoxMenuItem.checkIcon") instanceof Icon);
+ harness.check(defaults.get("CheckBoxMenuItem.commandSound"), "sounds/MenuItemCommand.wav");
+ harness.check(defaults.get("CheckBoxMenuItem.disabledForeground"), new ColorUIResource(0, 0, 16));
+ harness.check(defaults.get("CheckBoxMenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("CheckBoxMenuItem.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("CheckBoxMenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("CheckBoxMenuItem.selectionBackground"), new ColorUIResource(0, 0, 18));
+ harness.check(defaults.get("CheckBoxMenuItem.selectionForeground"), new ColorUIResource(0, 0, 19));
+ harness.check(defaults.get("CheckBoxMenuItem.select"), null);
+
+ harness.checkPoint("ColorChooser");
+ harness.check(defaults.get("ColorChooser.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ColorChooser.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ColorChooser.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.getInt("ColorChooser.rgbBlueMnemonic"), 0);
+ harness.check(defaults.getInt("ColorChooser.rgbGreenMnemonic"), 0);
+ harness.check(defaults.getInt("ColorChooser.rgbRedMnemonic"), 0);
+ harness.check(defaults.get("ColorChooser.swatchesDefaultRecentColor"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ColorChooser.swatchesRecentSwatchSize"), new Dimension(10, 10));
+ harness.check(defaults.get("ColorChooser.swatchesSwatchSize"), new Dimension(10, 10));
+
+ harness.checkPoint("ComboBox");
+ harness.check(defaults.get("ComboBox.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ComboBox.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ComboBox.buttonBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ComboBox.buttonDarkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ComboBox.buttonHighlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ComboBox.buttonShadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("ComboBox.disabledBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ComboBox.disabledForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("ComboBox.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("ComboBox.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("ComboBox.selectionBackground"), new ColorUIResource(0, 0, 24));
+ harness.check(defaults.get("ComboBox.selectionForeground"), new ColorUIResource(0, 0, 10));
+
+ harness.checkPoint("Desktop");
+ harness.check(defaults.get("Desktop.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Desktop.background"), new ColorUIResource(0, 0, 11));
+
+ harness.checkPoint("DesktopIcon");
+ harness.check(defaults.get("DesktopIcon.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("DesktopIcon.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("DesktopIcon.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("DesktopIcon.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.getInt("DesktopIcon.width"), 160);
+
+ harness.checkPoint("EditorPane");
+ harness.check(defaults.get("EditorPane.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("EditorPane.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.getInt("EditorPane.caretBlinkRate"), 500);
+ harness.check(defaults.get("EditorPane.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("EditorPane.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("EditorPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("EditorPane.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("EditorPane.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("EditorPane.margin"), new InsetsUIResource(3, 3, 3, 3));
+ harness.check(defaults.get("EditorPane.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("EditorPane.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("FileChooser");
+ harness.check(defaults.get("FileChooser.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.getInt("FileChooser.cancelButtonMnemonic"), 0);
+ harness.check(defaults.get("FileChooser.detailsViewIcon") instanceof Icon);
+ harness.check(defaults.getInt("FileChooser.directoryOpenButtonMnemonic"), 0);
+ harness.check(defaults.getInt("FileChooser.fileNameLabelMnemonic"), 78);
+ harness.check(defaults.getInt("FileChooser.filesOfTypeLabelMnemonic"), 84);
+ harness.check(defaults.getInt("FileChooser.helpButtonMnemonic"), 0);
+ harness.check(defaults.get("FileChooser.homeFolderIcon") instanceof Icon);
+ harness.check(defaults.get("FileChooser.listViewIcon") instanceof Icon);
+ harness.check(defaults.getInt("FileChooser.lookInLabelMnemonic"), 73);
+ harness.check(defaults.get("FileChooser.newFolderIcon") instanceof Icon);
+ harness.check(defaults.getInt("FileChooser.openButtonMnemonic"), 0);
+ harness.check(defaults.getInt("FileChooser.saveButtonMnemonic"), 0);
+ harness.check(defaults.getInt("FileChooser.updateButtonMnemonic"), 0);
+ harness.check(defaults.get("FileChooser.upFolderIcon") instanceof Icon);
+
+ harness.checkPoint("FileView");
+ harness.check(defaults.get("FileView.computerIcon"), MetalIconFactory.getTreeComputerIcon());
+ harness.check(defaults.get("FileView.directoryIcon") instanceof MetalIconFactory.TreeFolderIcon);
+ harness.check(defaults.get("FileView.fileIcon") instanceof MetalIconFactory.TreeLeafIcon);
+ harness.check(defaults.get("FileView.floppyDriveIcon"), MetalIconFactory.getTreeFloppyDriveIcon());
+ harness.check(defaults.get("FileView.hardDriveIcon"), MetalIconFactory.getTreeHardDriveIcon());
+
+ harness.checkPoint("FormattedTextField");
+ harness.check(defaults.get("FormattedTextField.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("FormattedTextField.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.getInt("FormattedTextField.caretBlinkRate"), 500);
+ harness.check(defaults.get("FormattedTextField.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("FormattedTextField.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("FormattedTextField.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("FormattedTextField.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("FormattedTextField.inactiveBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("FormattedTextField.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("FormattedTextField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("FormattedTextField.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("FormattedTextField.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("InternalFrame");
+// harness.check(defaults.get("InternalFrame.border") instanceof MetalBorders.InternalFrameBorder);
+ harness.check(defaults.get("InternalFrame.activeTitleBackground"), new ColorUIResource(0, 0, 31));
+ harness.check(defaults.get("InternalFrame.activeTitleForeground"), new ColorUIResource(0, 0, 32));
+ harness.check(defaults.get("InternalFrame.borderColor"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("InternalFrame.borderDarkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("InternalFrame.borderHighlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("InternalFrame.borderLight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("InternalFrame.borderShadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("InternalFrame.closeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.closeSound"), "sounds/FrameClose.wav");
+ harness.check(defaults.get("InternalFrame.icon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.iconifyIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.inactiveTitleBackground"), new ColorUIResource(0, 0, 33));
+ harness.check(defaults.get("InternalFrame.inactiveTitleForeground"), new ColorUIResource(0, 0, 34));
+ harness.check(defaults.get("InternalFrame.maximizeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.maximizeSound"), "sounds/FrameMaximize.wav");
+ harness.check(defaults.get("InternalFrame.minimizeIcon") instanceof Icon);
+ harness.check(defaults.get("InternalFrame.minimizeSound"), "sounds/FrameMinimize.wav");
+// harness.check(defaults.get("InternalFrame.optionDialogBorder") instanceof MetalBorders.OptionDialogBorder);
+// harness.check(defaults.get("InternalFrame.paletteBorder") instanceof MetalBorders.PaletteBorder);
+ harness.check(defaults.get("InternalFrame.paletteCloseIcon") instanceof Icon);
+ harness.check(defaults.getInt("InternalFrame.paletteTitleHeight"), 11);
+ harness.check(defaults.get("InternalFrame.restoreDownSound"), "sounds/FrameRestoreDown.wav");
+ harness.check(defaults.get("InternalFrame.restoreUpSound"), "sounds/FrameRestoreUp.wav");
+ harness.check(defaults.get("InternalFrame.titleFont"), new FontUIResource("Dialog", Font.BOLD, 12));
+
+ harness.checkPoint("Label");
+ harness.check(defaults.get("Label.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Label.disabledForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("Label.disabledShadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("Label.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("Label.foreground"), new ColorUIResource(0, 0, 27));
+
+ harness.checkPoint("List");
+ harness.check(defaults.get("List.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("List.cellRenderer") instanceof ListCellRenderer);
+ LineBorder lb = (LineBorder) defaults.getBorder("List.focusCellHighlightBorder");
+ harness.check(lb instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(lb.getThickness(), 1);
+ harness.check(lb.getLineColor(), MetalLookAndFeel.getFocusColor());
+ harness.check(defaults.get("List.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("List.focusInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("List.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("List.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("List.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("List.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("Menu");
+ harness.check(defaults.get("Menu.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 10));
+ harness.check(defaults.get("Menu.acceleratorForeground"), new ColorUIResource(0, 0, 1));
+ harness.check(defaults.get("Menu.acceleratorSelectionForeground"), new ColorUIResource(0, 0, 2));
+ harness.check(defaults.get("Menu.arrowIcon") instanceof Icon);
+// harness.check(defaults.get("Menu.border") instanceof MetalBorders.MenuItemBorder);
+ harness.check(defaults.get("Menu.background"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("Menu.borderPainted"), Boolean.TRUE);
+ harness.check(defaults.get("Menu.checkIcon"), null);
+ harness.check(defaults.get("Menu.crossMenuMnemonic"), Boolean.TRUE);
+ harness.check(defaults.get("Menu.disabledForeground"), new ColorUIResource(0, 0, 16));
+ harness.check(defaults.get("Menu.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("Menu.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("Menu.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.getInt("Menu.menuPopupOffsetX"), 0);
+ harness.check(defaults.getInt("Menu.menuPopupOffsetY"), 0);
+ harness.check(defaults.get("Menu.selectionBackground"), new ColorUIResource(0, 0, 18));
+ harness.check(defaults.get("Menu.selectionForeground"), new ColorUIResource(0, 0, 19));
+ int[] value = (int[]) defaults.get("Menu.shortcutKeys");
+ harness.check(value != null ? value.length : 0, 1);
+ harness.check(value != null ? value[0] : 0, 8);
+ harness.check(defaults.getInt("Menu.submenuPopupOffsetX"), -4);
+ harness.check(defaults.getInt("Menu.submenuPopupOffsetY"), -3);
+
+ harness.checkPoint("MenuBar");
+// harness.check(defaults.get("MenuBar.border") instanceof MetalBorders.MenuBarBorder);
+ harness.check(defaults.get("MenuBar.background"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("MenuBar.borderColor"), null);
+ harness.check(defaults.get("MenuBar.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("MenuBar.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("MenuBar.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("MenuBar.shadow"), new ColorUIResource(0, 0, 9));
+ Object[] bindings = (Object[]) defaults.get("MenuBar.windowBindings");
+ harness.check(bindings.length, 2);
+ harness.check(bindings[0], "F10");
+ harness.check(bindings[1], "takeFocus");
+
+ harness.checkPoint("MenuItem");
+ harness.check(defaults.get("MenuItem.acceleratorDelimiter"), "-");
+ harness.check(defaults.get("MenuItem.acceleratorFont"), new FontUIResource("Dialog", Font.PLAIN, 10));
+ harness.check(defaults.get("MenuItem.acceleratorForeground"), new ColorUIResource(0, 0, 1));
+ harness.check(defaults.get("MenuItem.acceleratorSelectionForeground"), new ColorUIResource(0, 0, 2));
+ harness.check(defaults.get("MenuItem.arrowIcon") instanceof Icon);
+// harness.check(defaults.get("MenuItem.border") instanceof MetalBorders.MenuItemBorder);
+ harness.check(defaults.get("MenuItem.background"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("MenuItem.borderPainted"), Boolean.TRUE);
+ harness.check(defaults.get("MenuItem.checkIcon"), null);
+ harness.check(defaults.get("MenuItem.commandSound"), "sounds/MenuItemCommand.wav");
+ harness.check(defaults.get("MenuItem.disabledForeground"), new ColorUIResource(0, 0, 16));
+ harness.check(defaults.get("MenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("MenuItem.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("MenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("MenuItem.selectionBackground"), new ColorUIResource(0, 0, 18));
+ harness.check(defaults.get("MenuItem.selectionForeground"), new ColorUIResource(0, 0, 19));
+
+ harness.checkPoint("OptionPane");
+ harness.check(defaults.get("OptionPane.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("OptionPane.border") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.get("OptionPane.buttonAreaBorder") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.getInt("OptionPane.buttonClickThreshhold"), 500);
+ harness.check(defaults.get("OptionPane.errorDialog.border.background"), new ColorUIResource(153, 51, 51));
+ harness.check(defaults.get("OptionPane.errorDialog.titlePane.background"), new ColorUIResource(255, 153, 153));
+ harness.check(defaults.get("OptionPane.errorDialog.titlePane.foreground"), new ColorUIResource(51, 0, 0));
+ harness.check(defaults.get("OptionPane.errorDialog.titlePane.shadow"), new ColorUIResource(204, 102, 102));
+ harness.check(defaults.get("OptionPane.errorIcon") instanceof IconUIResource);
+ harness.check(defaults.get("OptionPane.errorSound"), "sounds/OptionPaneError.wav");
+ harness.check(defaults.get("OptionPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("OptionPane.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("OptionPane.informationIcon") instanceof IconUIResource);
+ harness.check(defaults.get("OptionPane.informationSound"), "sounds/OptionPaneInformation.wav");
+ harness.check(defaults.get("OptionPane.messageAreaBorder") instanceof BorderUIResource.EmptyBorderUIResource);
+ harness.check(defaults.get("OptionPane.messageForeground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("OptionPane.minimumSize"), new DimensionUIResource(262, 90));
+ harness.check(defaults.get("OptionPane.questionDialog.border.background"), new ColorUIResource(51, 102, 51));
+ harness.check(defaults.get("OptionPane.questionDialog.titlePane.background"), new ColorUIResource(153, 204, 153));
+ harness.check(defaults.get("OptionPane.questionDialog.titlePane.foreground"), new ColorUIResource(0, 51, 0));
+ harness.check(defaults.get("OptionPane.questionDialog.titlePane.shadow"), new ColorUIResource(102, 153, 102));
+ harness.check(defaults.get("OptionPane.questionIcon") instanceof IconUIResource);
+ harness.check(defaults.get("OptionPane.questionSound"), "sounds/OptionPaneQuestion.wav");
+ harness.check(defaults.get("OptionPane.warningDialog.border.background"), new ColorUIResource(153, 102, 51));
+ harness.check(defaults.get("OptionPane.warningDialog.titlePane.background"), new ColorUIResource(255, 204, 153));
+ harness.check(defaults.get("OptionPane.warningDialog.titlePane.foreground"), new ColorUIResource(102, 51, 0));
+ harness.check(defaults.get("OptionPane.warningDialog.titlePane.shadow"), new ColorUIResource(204, 153, 102));
+ harness.check(defaults.get("OptionPane.warningIcon") instanceof IconUIResource);
+ harness.check(defaults.get("OptionPane.warningSound"), "sounds/OptionPaneWarning.wav");
+ bindings = (Object[]) defaults.get("OptionPane.windowBindings");
+ harness.check(bindings.length, 2);
+ harness.check(bindings[0], "ESCAPE");
+ harness.check(bindings[1], "close");
+
+ harness.checkPoint("Panel");
+ harness.check(defaults.get("Panel.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Panel.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Panel.foreground"), new ColorUIResource(0, 0, 29));
+
+ harness.checkPoint("PasswordField");
+ harness.check(defaults.get("PasswordField.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("PasswordField.border"), MetalBorders.getTextBorder());
+ harness.check(defaults.getInt("PasswordField.caretBlinkRate"), 500);
+ harness.check(defaults.get("PasswordField.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("PasswordField.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("PasswordField.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("PasswordField.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("PasswordField.inactiveBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("PasswordField.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("PasswordField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("PasswordField.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("PasswordField.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("PopupMenu");
+ harness.check(defaults.get("PopupMenu.background"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("PopupMenu.border") instanceof MetalBorders.PopupMenuBorder);
+ harness.check(defaults.get("PopupMenu.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("PopupMenu.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("PopupMenu.popupSound"), "sounds/PopupMenuPopup.wav");
+ harness.check(defaults.get("PopupMenu.selectedWindowInputMapBindings") instanceof Object[]);
+ harness.check(defaults.get("PopupMenu.selectedWindowInputMapBindings.RightToLeft") instanceof Object[]);
+
+ harness.checkPoint("ProgressBar");
+ harness.check(defaults.get("ProgressBar.background"), new ColorUIResource(0, 0, 4));
+ LineBorderUIResource b = (LineBorderUIResource) defaults.get("ProgressBar.border");
+ harness.check(b.getThickness(), 1);
+ harness.check(b.getLineColor(), new Color(0, 0, 5));
+ harness.check(defaults.getInt("ProgressBar.cellLength"), 1);
+ harness.check(defaults.getInt("ProgressBar.cellSpacing"), 0);
+ harness.check(defaults.getInt("ProgressBar.cycleTime"), 3000);
+ harness.check(defaults.get("ProgressBar.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("ProgressBar.foreground"), new ColorUIResource(0, 0, 24));
+ harness.check(defaults.getInt("ProgressBar.repaintInterval"), 50);
+ harness.check(defaults.get("ProgressBar.selectionBackground"), new ColorUIResource(0, 0, 21));
+ harness.check(defaults.get("ProgressBar.selectionForeground"), new ColorUIResource(0, 0, 4));
+
+ harness.checkPoint("RadioButton");
+ harness.check(defaults.get("RadioButton.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("RadioButton.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("RadioButton.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("RadioButton.disabledText"), new ColorUIResource(0, 0, 35));
+ harness.check(defaults.get("RadioButton.focus"), new ColorUIResource(0, 0, 12));
+ harness.check(defaults.get("RadioButton.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("RadioButton.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("RadioButton.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("RadioButton.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("RadioButton.icon") instanceof Icon);
+ harness.check(defaults.get("RadioButton.light"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("RadioButton.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("RadioButton.select"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("RadioButton.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.getInt("RadioButton.textIconGap"), 4);
+ harness.check(defaults.getInt("RadioButton.textShiftOffset"), 0);
+
+ harness.checkPoint("RadioButtonMenuItem");
+ harness.check(defaults.get("RadioButtonMenuItem.acceleratorFont"), new Font("Dialog", Font.PLAIN, 10));
+ harness.check(defaults.get("RadioButtonMenuItem.acceleratorForeground"), new ColorUIResource(0, 0, 1));
+ harness.check(defaults.get("RadioButtonMenuItem.acceleratorSelectionForeground"), new ColorUIResource(0, 0, 2));
+ harness.check(defaults.get("RadioButtonMenuItem.arrowIcon") instanceof Icon);
+// harness.check(defaults.get("RadioButtonMenuItem.border") instanceof MetalBorders.MenuItemBorder);
+ harness.check(defaults.get("RadioButtonMenuItem.background"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("RadioButtonMenuItem.borderPainted"), Boolean.TRUE);
+ harness.check(defaults.get("RadioButtonMenuItem.checkIcon") instanceof Icon);
+ harness.check(defaults.get("RadioButtonMenuItem.commandSound"), "sounds/MenuItemCommand.wav");
+ harness.check(defaults.get("RadioButtonMenuItem.disabledForeground"), new ColorUIResource(0, 0, 16));
+ harness.check(defaults.get("RadioButtonMenuItem.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("RadioButtonMenuItem.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("RadioButtonMenuItem.margin"), new InsetsUIResource(2, 2, 2, 2));
+ harness.check(defaults.get("RadioButtonMenuItem.selectionBackground"), new ColorUIResource(0, 0, 18));
+ harness.check(defaults.get("RadioButtonMenuItem.selectionForeground"), new ColorUIResource(0, 0, 19));
+
+ harness.checkPoint("RootPane");
+ harness.check(defaults.get("RootPane.colorChooserDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.defaultButtonWindowKeyBindings") instanceof Object[]);
+ harness.check(defaults.get("RootPane.errorDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.fileChooserDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.frameBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.informationDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.plainDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.questionDialogBorder") instanceof Border);
+ harness.check(defaults.get("RootPane.warningDialogBorder") instanceof Border);
+
+ harness.checkPoint("ScrollBar");
+ harness.check(defaults.get("ScrollBar.allowsAbsolutePositioning"), Boolean.TRUE);
+ harness.check(defaults.get("ScrollBar.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ScrollBar.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ScrollBar.focusInputMap"), null);
+ harness.check(defaults.get("ScrollBar.focusInputMap.RightToLeft"), null);
+ harness.check(defaults.get("ScrollBar.foreground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ScrollBar.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ScrollBar.maximumThumbSize"), new DimensionUIResource(4096, 4096));
+ harness.check(defaults.get("ScrollBar.minimumThumbSize"), new DimensionUIResource(8, 8));
+ harness.check(defaults.get("ScrollBar.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("ScrollBar.thumb"), new ColorUIResource(0, 0, 24));
+ harness.check(defaults.get("ScrollBar.thumbDarkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ScrollBar.thumbHighlight"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.get("ScrollBar.thumbShadow"), new ColorUIResource(0, 0, 21));
+ harness.check(defaults.get("ScrollBar.track"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ScrollBar.trackHighlight"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.getInt("ScrollBar.width"), 17);
+
+ harness.checkPoint("ScrollPane");
+ harness.check(defaults.get("ScrollPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ScrollPane.ancestorInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("ScrollPane.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ScrollPane.border") instanceof MetalBorders.ScrollPaneBorder);
+ harness.check(defaults.get("ScrollPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ScrollPane.foreground"), new ColorUIResource(0, 0, 10));
+
+ harness.checkPoint("Separator");
+ harness.check(defaults.get("Separator.background"), new ColorUIResource(0, 0, 25));
+ harness.check(defaults.get("Separator.foreground"), new ColorUIResource(0, 0, 26));
+ harness.check(defaults.get("Separator.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("Separator.shadow"), new ColorUIResource(0, 0, 9));
+
+ harness.checkPoint("Slider");
+ harness.check(defaults.get("Slider.altTrackColor"), null);
+ harness.check(defaults.get("Slider.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Slider.focus"), new ColorUIResource(0, 0, 12));
+ InputMap focusInputMap = (InputMap) defaults.get("Slider.focusInputMap");
+ KeyStroke[] keys = focusInputMap.keys();
+// for (int i = 0; i < keys.length; i++) {
+// System.out.println(keys[i] + " --> " + focusInputMap.get(keys[i]));
+// }
+ List keyList = Arrays.asList(keys);
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("HOME")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("END")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("PAGE_UP")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("PAGE_DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("ctrl PAGE_DOWN")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("ctrl PAGE_UP")));
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("LEFT")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("RIGHT")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("UP")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("DOWN")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_LEFT")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_RIGHT")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_UP")), "positiveUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("KP_DOWN")), "negativeUnitIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("HOME")), "minScroll");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("END")), "maxScroll");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("PAGE_UP")), "positiveBlockIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("PAGE_DOWN")), "negativeBlockIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("ctrl PAGE_DOWN")), "negativeBlockIncrement");
+ harness.check(focusInputMap.get(KeyStroke.getKeyStroke("ctrl PAGE_UP")), "positiveBlockIncrement");
+
+ InputMap rightToLeftMap = (InputMap) defaults.get("Slider.focusInputMap.RightToLeft");
+ keys = rightToLeftMap != null ? rightToLeftMap.keys() : new KeyStroke[] {};
+ keyList = Arrays.asList(keys);
+// for (int i = 0; i < keys.length; i++) {
+// System.out.println(keys[i] + " --> " + focusInputMap.get(keys[i]));
+// }
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_RIGHT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("LEFT")));
+ harness.check(keyList.contains(KeyStroke.getKeyStroke("KP_LEFT")));
+ if (rightToLeftMap == null)
+ {
+ rightToLeftMap = new InputMap(); // to prevent NullPointerException
+ }
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("RIGHT")), "negativeUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("KP_RIGHT")), "negativeUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("LEFT")), "positiveUnitIncrement");
+ harness.check(rightToLeftMap.get(KeyStroke.getKeyStroke("KP_LEFT")), "positiveUnitIncrement");
+
+ harness.check(defaults.get("Slider.focusInsets"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("Slider.foreground"), new ColorUIResource(0, 0, 24));
+ harness.check(defaults.get("Slider.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("Slider.horizontalThumbIcon") != null);
+ harness.check(defaults.getInt("Slider.majorTickLength"), 6);
+ harness.check(defaults.get("Slider.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.getInt("Slider.trackWidth"), 7);
+ harness.check(defaults.get("Slider.verticalThumbIcon") != null);
+
+ harness.checkPoint("Spinner");
+ harness.check(defaults.get("Spinner.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Spinner.arrowButtonBorder") instanceof Border);
+ harness.check(defaults.get("Spinner.arrowButtonInsets"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("Spinner.arrowButtonSize"), new Dimension(16, 5));
+ harness.check(defaults.get("Spinner.border") instanceof Border);
+ harness.check(defaults.get("Spinner.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Spinner.editorBorderPainted"), Boolean.FALSE);
+ harness.check(defaults.get("Spinner.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("Spinner.foreground"), new ColorUIResource(0, 0, 4));
+
+ harness.checkPoint("SplitPane");
+ harness.check(defaults.get("SplitPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("SplitPane.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("SplitPane.border") instanceof Border);
+ harness.check(defaults.get("SplitPane.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("SplitPane.dividerFocusColor"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.getInt("SplitPane.dividerSize"), 10);
+ harness.check(defaults.get("SplitPane.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("SplitPane.shadow"), new ColorUIResource(0, 0, 9));
+
+ harness.checkPoint("SplitPaneDivider");
+ harness.check(defaults.get("SplitPaneDivider.draggingColor"), new ColorUIResource(64, 64, 64));
+ harness.check(defaults.get("SplitPaneDivider.border") instanceof Border);
+
+ harness.checkPoint("TabbedPane");
+ harness.check(defaults.get("TabbedPane.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TabbedPane.background"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("TabbedPane.borderHighlightColor"), null);
+ harness.check(defaults.get("TabbedPane.contentAreaColor"), null);
+ harness.check(defaults.get("TabbedPane.contentBorderInsets"), new InsetsUIResource(2, 2, 3, 3));
+ harness.check(defaults.get("TabbedPane.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("TabbedPane.focus"), new ColorUIResource(0, 0, 21));
+ harness.check(defaults.get("TabbedPane.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TabbedPane.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("TabbedPane.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("TabbedPane.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("TabbedPane.light"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("TabbedPane.selected"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("TabbedPane.selectedTabPadInsets"), new InsetsUIResource(2, 2, 2, 1));
+ harness.check(defaults.get("TabbedPane.selectHighlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("TabbedPane.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("TabbedPane.tabAreaBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("TabbedPane.tabAreaInsets"), new InsetsUIResource(4, 2, 0, 6));
+ harness.check(defaults.get("TabbedPane.tabInsets"), new InsetsUIResource(0, 9, 1, 9));
+ harness.check(defaults.getInt("TabbedPane.tabRunOverlay"), 2);
+ harness.check(defaults.getInt("TabbedPane.textIconGap"), 4);
+ harness.check(defaults.get("TabbedPane.unselectedBackground"), null);
+
+ harness.checkPoint("Table");
+ harness.check(defaults.get("Table.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Table.ancestorInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("Table.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("Table.focusCellBackground"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("Table.focusCellForeground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("Table.focusCellHighlightBorder") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("Table.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Table.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("Table.gridColor"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("Table.scrollPaneBorder") instanceof MetalBorders.ScrollPaneBorder);
+ harness.check(defaults.get("Table.focusCellBackground"), new ColorUIResource(0, 0, 30));
+
+ harness.checkPoint("TableHeader");
+// harness.check(defaults.get("TableHeader.cellBorder") instanceof MetalBorders.TableHeaderBorder);
+ harness.check(defaults.get("TableHeader.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("TableHeader.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("TableHeader.foreground"), new ColorUIResource(0, 0, 10));
+
+ harness.checkPoint("TextArea");
+ harness.check(defaults.get("TextArea.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("TextArea.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.getInt("TextArea.caretBlinkRate"), 500);
+ harness.check(defaults.get("TextArea.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextArea.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TextArea.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("TextArea.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextArea.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("TextArea.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("TextArea.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("TextArea.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("TextField");
+ harness.check(defaults.get("TextField.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("TextField.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.getInt("TextField.caretBlinkRate"), 500);
+ harness.check(defaults.get("TextField.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextField.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("TextField.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TextField.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("TextField.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextField.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("TextField.inactiveBackground"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("TextField.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("TextField.light"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("TextField.margin"), new InsetsUIResource(0, 0, 0, 0));
+ harness.check(defaults.get("TextField.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("TextField.selectionForeground"), new ColorUIResource(0, 0, 13));
+ harness.check(defaults.get("TextField.shadow"), new ColorUIResource(0, 0, 9));
+
+ harness.checkPoint("TextPane");
+ harness.check(defaults.get("TextPane.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("TextPane.border") instanceof BasicBorders.MarginBorder);
+ harness.check(defaults.getInt("TextPane.caretBlinkRate"), 500);
+ harness.check(defaults.get("TextPane.caretForeground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextPane.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("TextPane.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("TextPane.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("TextPane.inactiveForeground"), new ColorUIResource(0, 0, 14));
+ harness.check(defaults.get("TextPane.margin"), new InsetsUIResource(3, 3, 3, 3));
+ harness.check(defaults.get("TextPane.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("TextPane.selectionForeground"), new ColorUIResource(0, 0, 13));
+
+ harness.checkPoint("TitledBorder");
+ harness.check(defaults.get("TitledBorder.border") instanceof LineBorderUIResource);
+ harness.check(defaults.get("TitledBorder.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("TitledBorder.titleColor"), new ColorUIResource(0, 0, 27));
+
+ harness.checkPoint("ToggleButton");
+ harness.check(defaults.get("ToggleButton.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("ToggleButton.border") instanceof BorderUIResource.CompoundBorderUIResource);
+ harness.check(defaults.get("ToggleButton.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ToggleButton.disabledText"), new ColorUIResource(0, 0, 35));
+ harness.check(defaults.get("ToggleButton.focus"), new ColorUIResource(0, 0, 12));
+ harness.check(defaults.get("ToggleButton.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ToggleButton.font"), new FontUIResource("Dialog", Font.PLAIN, 13));
+ harness.check(defaults.get("ToggleButton.foreground"), new ColorUIResource(0, 0, 10));
+ harness.check(defaults.get("ToggleButton.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ToggleButton.light"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ToggleButton.margin"), new InsetsUIResource(2, 14, 2, 14));
+ harness.check(defaults.get("ToggleButton.select"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.get("ToggleButton.shadow"), new ColorUIResource(0, 0, 9));
+ harness.check(defaults.getInt("ToggleButton.textIconGap"), 4);
+ harness.check(defaults.getInt("ToggleButton.textShiftOffset"), 0);
+
+ harness.checkPoint("ToolBar");
+ harness.check(defaults.get("ToolBar.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("ToolBar.background"), new ColorUIResource(0, 0, 15));
+// harness.check(defaults.get("ToolBar.border") instanceof MetalBorders.ToolBarBorder);
+ harness.check(defaults.get("ToolBar.borderColor"), null);
+ harness.check(defaults.get("ToolBar.darkShadow"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ToolBar.dockingBackground"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("ToolBar.dockingForeground"), new ColorUIResource(0, 0, 21));
+ harness.check(defaults.get("ToolBar.floatingBackground"), new ColorUIResource(0, 0, 15));
+ harness.check(defaults.get("ToolBar.floatingForeground"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.get("ToolBar.font"), new FontUIResource("Dialog", Font.PLAIN, 15));
+ harness.check(defaults.get("ToolBar.foreground"), new ColorUIResource(0, 0, 17));
+ harness.check(defaults.get("ToolBar.highlight"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ToolBar.light"), new ColorUIResource(0, 0, 7));
+ harness.check(defaults.get("ToolBar.separatorSize"), new DimensionUIResource(10, 10));
+ harness.check(defaults.get("ToolBar.shadow"), new ColorUIResource(0, 0, 9));
+
+ harness.checkPoint("ToolTip");
+ harness.check(defaults.get("ToolTip.background"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.get("ToolTip.backgroundInactive"), new ColorUIResource(0, 0, 4));
+ LineBorderUIResource b2 = (LineBorderUIResource) defaults.get("ToolTip.border");
+ harness.check(b2.getThickness(), 1);
+ harness.check(b2.getLineColor(), new Color(0, 0, 21));
+ b2 = (LineBorderUIResource) defaults.get("ToolTip.borderInactive");
+ harness.check(b2 != null ? b2.getThickness() : 0, 1);
+ harness.check(b2 != null ? b2.getLineColor() : null, new Color(0, 0, 5));
+ harness.check(defaults.get("ToolTip.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("ToolTip.foreground"), new ColorUIResource(0, 0, 23));
+ harness.check(defaults.get("ToolTip.foregroundInactive"), new ColorUIResource(0, 0, 5));
+ harness.check(defaults.get("ToolTip.hideAccelerator"), Boolean.FALSE);
+
+ harness.checkPoint("Tree");
+ harness.check(defaults.get("Tree.background"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("Tree.ancestorInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Tree.changeSelectionWithFocus"), Boolean.TRUE);
+ harness.check(defaults.get("Tree.closedIcon") instanceof MetalIconFactory.TreeFolderIcon);
+ harness.check(defaults.get("Tree.collapsedIcon") instanceof MetalIconFactory.TreeControlIcon);
+ harness.check(defaults.get("Tree.drawsFocusBorderAroundIcon"), Boolean.FALSE);
+ harness.check(defaults.get("Tree.editorBorder") instanceof BorderUIResource.LineBorderUIResource);
+ harness.check(defaults.get("Tree.expandedIcon") instanceof MetalIconFactory.TreeControlIcon);
+ harness.check(defaults.get("Tree.focusInputMap") instanceof InputMapUIResource);
+ harness.check(defaults.get("Tree.focusInputMap.RightToLeft") instanceof InputMapUIResource);
+ harness.check(defaults.get("Tree.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Tree.foreground"), new ColorUIResource(0, 0, 29));
+ harness.check(defaults.get("Tree.hash"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.get("Tree.leafIcon") instanceof MetalIconFactory.TreeLeafIcon);
+ harness.check(defaults.getInt("Tree.leftChildIndent"), 7);
+ harness.check(defaults.get("Tree.line"), new ColorUIResource(0, 0, 20));
+ harness.check(defaults.get("Tree.openIcon") instanceof MetalIconFactory.TreeFolderIcon);
+ harness.check(defaults.getInt("Tree.rightChildIndent"), 13);
+ harness.check(defaults.getInt("Tree.rowHeight"), 0);
+ harness.check(defaults.get("Tree.scrollsOnExpand"), Boolean.TRUE);
+ harness.check(defaults.get("Tree.selectionBackground"), new ColorUIResource(0, 0, 28));
+ harness.check(defaults.get("Tree.selectionBorderColor"), new ColorUIResource(0, 0, 12));
+ harness.check(defaults.get("Tree.selectionForeground"), new ColorUIResource(0, 0, 13));
+ harness.check(defaults.get("Tree.textBackground"), new ColorUIResource(0, 0, 30));
+ harness.check(defaults.get("Tree.textForeground"), new ColorUIResource(0, 0, 29));
+
+ harness.checkPoint("Viewport");
+ harness.check(defaults.get("Viewport.background"), new ColorUIResource(0, 0, 4));
+ harness.check(defaults.get("Viewport.font"), new FontUIResource("Dialog", Font.PLAIN, 12));
+ harness.check(defaults.get("Viewport.foreground"), new ColorUIResource(0, 0, 29));
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDescription.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDescription.java
new file mode 100644
index 00000000..1523a60b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDescription.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDescription() method in the MetalLookAndFeel
+ * class.
+ */
+public class getDescription implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ harness.check(new MetalLookAndFeel().getDescription(),
+ "The Java(tm) Look and Feel");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java
new file mode 100644
index 00000000..ee232882
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getDesktopColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDesktopColor() method in the MetalLookAndFeel
+ * class.
+ */
+public class getDesktopColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getDesktopColor();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getDesktopColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getDesktopColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java
new file mode 100644
index 00000000..99a821ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getFocusColor.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getFocusColor() method in the MetalLookAndFeel
+ * class.
+ */
+public class getFocusColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getFocusColor();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getFocusColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getFocusColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java
new file mode 100644
index 00000000..543f12f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getHighlightedTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getHighlightedTextColor() method in the MetalLookAndFeel
+ * class.
+ */
+public class getHighlightedTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getHighlightedTextColor();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getHighlightedTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getHighlightedTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getID.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getID.java
new file mode 100644
index 00000000..83234fc7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getID.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getID() method in the MetalLookAndFeel class.
+ */
+public class getID implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ harness.check(new MetalLookAndFeel().getID(), "Metal");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java
new file mode 100644
index 00000000..4a40f49d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveControlTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getInactiveControlTextColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getInactiveControlTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getInactiveControlTextColor();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getInactiveControlTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getInactiveControlTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java
new file mode 100644
index 00000000..b63476c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getInactiveSystemTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getInactiveSystemTextColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getInactiveSystemTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getInactiveSystemTextColor();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getInactiveSystemTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getInactiveSystemTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java
new file mode 100644
index 00000000..194ce26c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuBackground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getInactiveSystemTextColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getMenuBackground();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getMenuBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getMenuBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java
new file mode 100644
index 00000000..ba24b530
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuDisabledForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuDisabledForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuDisabledForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getMenuDisabledForeground();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getMenuDisabledForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getMenuDisabledForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java
new file mode 100644
index 00000000..9020e41a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getMenuForeground();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getMenuForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getMenuForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java
new file mode 100644
index 00000000..60f26241
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedBackground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuSelectedBackground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuSelectedBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getMenuSelectedBackground();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getMenuSelectedBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getMenuSelectedBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java
new file mode 100644
index 00000000..7eddaa9a
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuSelectedForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getMenuSelectedForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuSelectedForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getMenuSelectedForeground();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getMenuSelectedForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getMenuSelectedForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java
new file mode 100644
index 00000000..df29e465
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getMenuTextFont.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+ /**
+ * Some checks for the getMenuTextFont() method in the
+ * MetalLookAndFeel class.
+ */
+public class getMenuTextFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getMenuTextFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getMenuTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getName.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getName.java
new file mode 100644
index 00000000..5fea57b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getName.java
@@ -0,0 +1,41 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getName() method in the MetalLookAndFeel class.
+ */
+public class getName implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ harness.check(new MetalLookAndFeel().getName(), "Metal");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java
new file mode 100644
index 00000000..c6b575b6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControl.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+* Some checks for the getPrimaryControl() method in the
+* MetalLookAndFeel class.
+*/
+public class getPrimaryControl implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getPrimaryControl();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 255)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getPrimaryControl() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getPrimaryControl();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java
new file mode 100644
index 00000000..242a2305
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlDarkShadow.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPrimaryControlDarkShadow() method in the
+ * MetalLookAndFeel class.
+ */
+public class getPrimaryControlDarkShadow implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getPrimaryControlDarkShadow();
+ harness.check(c, new ColorUIResource(new Color(102, 102, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getPrimaryControlDarkShadow() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getPrimaryControlDarkShadow();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java
new file mode 100644
index 00000000..3ae30a19
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlHighlight.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPrimaryControlHighlight() method in the
+ * MetalLookAndFeel class.
+ */
+public class getPrimaryControlHighlight implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getPrimaryControlHighlight();
+ harness.check(c, new ColorUIResource(Color.white));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getPrimaryControlHighlight() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getPrimaryControlHighlight();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java
new file mode 100644
index 00000000..14236e63
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlInfo.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPrimaryControlInfo() method in the
+ * MetalLookAndFeel class.
+ */
+public class getPrimaryControlInfo implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getPrimaryControlInfo();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getPrimaryControlInfo() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getPrimaryControlInfo();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java
new file mode 100644
index 00000000..411aa806
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getPrimaryControlShadow.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getPrimaryControlShadow() method in the
+ * MetalLookAndFeel class.
+ */
+public class getPrimaryControlShadow implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getPrimaryControlShadow();
+ harness.check(c, new ColorUIResource(new Color(153, 153, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getPrimaryControlShadow() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getPrimaryControlShadow();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java
new file mode 100644
index 00000000..c4dfa96d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorBackground.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSeparatorBackground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getSeparatorBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getSeparatorBackground();
+ harness.check(c, new ColorUIResource(Color.white));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getSeparatorBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getSeparatorBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java
new file mode 100644
index 00000000..7456784f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSeparatorForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSeparatorForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getSeparatorForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getSeparatorForeground();
+ harness.check(c, new ColorUIResource(new Color(102, 102, 153)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getSeparatorForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getSeparatorForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java
new file mode 100644
index 00000000..abdc41e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSubTextFont.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSubTextFont() method in the MetalLookAndFeel
+ * class.
+ */
+public class getSubTextFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 10));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getSubTextFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getSubTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java
new file mode 100644
index 00000000..ab58fd72
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSystemTextColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getSystemTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getSystemTextColor();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getSystemTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getSystemTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java
new file mode 100644
index 00000000..81ce58b7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getSystemTextFont.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSystemTextFont() method in the MetalLookAndFeel
+ * class.
+ */
+public class getSystemTextFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getSystemTextFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getSystemTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java
new file mode 100644
index 00000000..68ac3783
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getTextHighlightColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getTextHighlightColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getTextHighlightColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getTextHighlightColor();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 255)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getTextHighlightColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getTextHighlightColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java
new file mode 100644
index 00000000..0ce9fda2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextColor.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getUserTextColor() method in the
+ * MetalLookAndFeel class.
+ */
+public class getUserTextColor implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getUserTextColor();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getUserTextColor() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getUserTextColor();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java
new file mode 100644
index 00000000..8368bcc4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getUserTextFont.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getUserTextFont() method in the MetalLookAndFeel
+ * class.
+ */
+public class getUserTextFont implements Testlet {
+
+/**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 12));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getUserTextFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getUserTextFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java
new file mode 100644
index 00000000..b9ca5fc3
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWhite.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWhite() method in the MetalLookAndFeel class.
+ */
+public class getWhite implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource white = MetalLookAndFeel.getWhite();
+ harness.check(white, new ColorUIResource(Color.white));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWhite() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ white = MetalLookAndFeel.getWhite();
+ harness.check(white, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java
new file mode 100644
index 00000000..676bc070
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowBackground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowBackground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getWindowBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getWindowBackground();
+ harness.check(c, new ColorUIResource(Color.white));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWindowBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getWindowBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java
new file mode 100644
index 00000000..7d2a5a22
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleBackground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowTitleBackground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getWindowTitleBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getWindowTitleBackground();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 255)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWindowTitleBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getWindowTitleBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java
new file mode 100644
index 00000000..14011625
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleFont.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.swing.plaf.FontUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowTitleFont() method in the MetalLookAndFeel
+ * class.
+ */
+public class getWindowTitleFont implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ FontUIResource f = MetalLookAndFeel.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.BOLD, 12));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public FontUIResource getWindowTitleFont() {
+ return new FontUIResource("Dialog", Font.PLAIN, 99);
+ }
+ });
+
+ f = MetalLookAndFeel.getWindowTitleFont();
+ harness.check(f, new FontUIResource("Dialog", Font.PLAIN, 99));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java
new file mode 100644
index 00000000..9920e2d6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowTitleForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getWindowTitleForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getWindowTitleForeground();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWindowTitleForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getWindowTitleForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java
new file mode 100644
index 00000000..f442a9aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveBackground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowTitleInactiveBackground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getWindowTitleInactiveBackground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getWindowTitleInactiveBackground();
+ harness.check(c, new ColorUIResource(new Color(204, 204, 204)));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWindowTitleInactiveBackground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getWindowTitleInactiveBackground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java
new file mode 100644
index 00000000..12550f40
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/getWindowTitleInactiveForeground.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getWindowTitleInactiveForeground() method in the
+ * MetalLookAndFeel class.
+ */
+public class getWindowTitleInactiveForeground implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ ColorUIResource c = MetalLookAndFeel.getWindowTitleInactiveForeground();
+ harness.check(c, new ColorUIResource(Color.black));
+
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme() {
+ public ColorUIResource getWindowTitleInactiveForeground() {
+ return new ColorUIResource(Color.red);
+ }
+ });
+
+ c = MetalLookAndFeel.getWindowTitleInactiveForeground();
+ harness.check(c, new ColorUIResource(Color.red));
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isNativeLookAndFeel.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isNativeLookAndFeel.java
new file mode 100644
index 00000000..0345e9f5
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isNativeLookAndFeel.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the isNativeLookAndFeel() method in the
+ * MetalLookAndFeel class.
+ */
+public class isNativeLookAndFeel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ harness.check(!(new MetalLookAndFeel().isNativeLookAndFeel()));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isSupportedLookAndFeel.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isSupportedLookAndFeel.java
new file mode 100644
index 00000000..4f926adb
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/isSupportedLookAndFeel.java
@@ -0,0 +1,42 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the isSupportedLookAndFeel() method in the
+ * MetalLookAndFeel class.
+ */
+public class isSupportedLookAndFeel implements Testlet {
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness) {
+ harness.check((new MetalLookAndFeel().isSupportedLookAndFeel()));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java
new file mode 100644
index 00000000..cd6f5317
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalLookAndFeel/setCurrentTheme.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 Roman Kennke <roman@kennke.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalLookAndFeel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Checks if MetalLookAndFeel.setCurrentTheme works correctly.
+ *
+ * @author Roman Kennke
+ */
+public class setCurrentTheme implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DefaultMetalTheme theme = new DefaultMetalTheme();
+ MetalLookAndFeel.setCurrentTheme(theme);
+ MetalLookAndFeel laf = new MetalLookAndFeel();
+ Color c1 = laf.getDefaults().getColor("Button.background");
+ h.check(c1, theme.getControl());
+ MetalLookAndFeel.setCurrentTheme(new TestTheme());
+ c1 = laf.getDefaults().getColor("Button.background");
+ h.check(c1, Color.red);
+
+ // reset the theme so that other tests won't be affected
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ }
+
+ class TestTheme extends DefaultMetalTheme
+ {
+ protected ColorUIResource getSecondary3()
+ {
+ return new ColorUIResource(Color.red);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Entries
new file mode 100644
index 00000000..ab96d30d
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Entries
@@ -0,0 +1,5 @@
+/MyMetalRadioButtonUI.java/1.1/Tue Sep 6 20:43:10 2005//
+/getDisabledTextColor.java/1.3/Wed May 21 13:30:49 2008//
+/getFocusColor.java/1.3/Wed May 21 13:30:49 2008//
+/getSelectColor.java/1.3/Wed May 21 13:30:49 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Repository
new file mode 100644
index 00000000..c3f774d9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/MyMetalRadioButtonUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/MyMetalRadioButtonUI.java
new file mode 100644
index 00000000..1ee0052f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/MyMetalRadioButtonUI.java
@@ -0,0 +1,47 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalRadioButtonUI;
+
+import java.awt.Color;
+
+import javax.swing.plaf.metal.MetalRadioButtonUI;
+
+public class MyMetalRadioButtonUI extends MetalRadioButtonUI
+{
+ public MyMetalRadioButtonUI()
+ {
+ super();
+ }
+ public Color getDisabledTextColor()
+ {
+ return this.disabledTextColor;
+ }
+ public Color getFocusColor()
+ {
+ return this.focusColor;
+ }
+ public Color getSelectColor()
+ {
+ return this.selectColor;
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java
new file mode 100644
index 00000000..1f95d554
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getDisabledTextColor.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+// Uses: MyMetalRadioButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalRadioButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JRadioButton;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDisabledTextColor() method.
+ */
+public class getDisabledTextColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with a known theme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+ // a new instance has no select color yet
+ MyMetalRadioButtonUI ui = new MyMetalRadioButtonUI();
+ harness.check(ui.getDisabledTextColor(), null);
+
+ // check the setting after a call to installDefaults
+ JRadioButton b = new JRadioButton("Test");
+ ui.installDefaults(b);
+ harness.check(ui.getDisabledTextColor(), new ColorUIResource(153, 153, 153));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java
new file mode 100644
index 00000000..b99d4832
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getFocusColor.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+// Uses: MyMetalRadioButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalRadioButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JRadioButton;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getFocusColor() method.
+ */
+public class getFocusColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with a known theme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ // a new instance has no select color yet
+ MyMetalRadioButtonUI ui = new MyMetalRadioButtonUI();
+ harness.check(ui.getFocusColor(), null);
+
+ // check the setting after a call to installDefaults
+ JRadioButton b = new JRadioButton("Test");
+ ui.installDefaults(b);
+ harness.check(ui.getFocusColor(), new ColorUIResource(153, 153, 204));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java
new file mode 100644
index 00000000..5b4e00c6
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalRadioButtonUI/getSelectColor.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+// Uses: MyMetalRadioButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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 GNU Classpath; see the file COPYING. If not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalRadioButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JRadioButton;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSelectColor() method.
+ */
+public class getSelectColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // test with a known theme
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (UnsupportedLookAndFeelException e)
+ {
+ e.printStackTrace();
+ }
+
+ // a new instance has no select color yet
+ MyMetalRadioButtonUI ui = new MyMetalRadioButtonUI();
+ harness.check(ui.getSelectColor(), null);
+
+ // check the setting after a call to installDefaults
+ JRadioButton b = new JRadioButton("Test");
+ ui.installDefaults(b);
+ harness.check(ui.getSelectColor(), new ColorUIResource(153, 153, 153));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Entries
new file mode 100644
index 00000000..76a08d6b
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Entries
@@ -0,0 +1,7 @@
+/MyMetalScrollBarUI.java/1.2/Thu Sep 7 09:23:13 2006//
+/constructor.java/1.3/Wed May 21 13:30:49 2008//
+/getMinimumThumbSize.java/1.2/Wed May 21 13:30:49 2008//
+/getPreferredSize.java/1.2/Wed May 21 13:30:49 2008//
+/installDefaults.java/1.2/Wed May 21 13:30:49 2008//
+/layoutContainer.java/1.2/Wed May 21 13:30:50 2008//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Repository
new file mode 100644
index 00000000..7d49d94c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java
new file mode 100644
index 00000000..2c96dda7
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/MyMetalScrollBarUI.java
@@ -0,0 +1,77 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import java.awt.Dimension;
+import java.awt.Rectangle;
+
+import javax.swing.JScrollBar;
+import javax.swing.plaf.metal.MetalScrollBarUI;
+
+/**
+ * Provides access to protected methods for testing purposes.
+ */
+public class MyMetalScrollBarUI extends MetalScrollBarUI {
+
+ public MyMetalScrollBarUI()
+ {
+ super();
+ }
+
+ /**
+ * Overrides installDefaults() to enable public access in tests.
+ */
+ public void installDefaults()
+ {
+ super.installDefaults();
+ }
+
+ /**
+ * Sets the value of the (otherwise protected) field scrollbar.
+ *
+ * @param sb the scrollbar to set
+ */
+ public void setScrollbar(JScrollBar sb)
+ {
+ scrollbar = sb;
+ }
+
+ public int getScrollBarWidthField()
+ {
+ return this.scrollBarWidth;
+ }
+
+ public Dimension getMinimumThumbSize()
+ {
+ return super.getMinimumThumbSize();
+ }
+
+ public Rectangle getTrackBounds()
+ {
+ return super.getTrackBounds();
+ }
+
+ public Rectangle getThumbBounds()
+ {
+ return super.getThumbBounds();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java
new file mode 100644
index 00000000..0e9aeb78
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/constructor.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+// Uses: MyMetalScrollBarUI
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.BorderLayout;
+import java.awt.Rectangle;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalScrollBarUI;
+
+/**
+ * Some checks for the constructor in the {@link MetalScrollBarUI} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ harness.check(ui.getTrackBounds(), null);
+ harness.check(ui.getThumbBounds(), null);
+ harness.check(ui.getScrollBarWidthField(), 0);
+
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ scrollBar.setBounds(0, 0, 100, 20);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.setSize(100, 20);
+ panel.add(scrollBar);
+ panel.doLayout();
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 0, 0, 0));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 0, 0, 0));
+
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(15, 0, 69, 20));
+ harness.check(ui.getThumbBounds(), new Rectangle(15, 0, 17, 20));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java
new file mode 100644
index 00000000..48437985
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getMinimumThumbSize.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: MyMetalScrollBarUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.plaf.metal.MetalScrollBarUI;
+
+/**
+ * Some checks for the getMinimumThumbSize() method in the
+ * {@link MetalScrollBarUI} class.
+ */
+public class getMinimumThumbSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ harness.check(ui.getMinimumThumbSize(), new Dimension(0, 0));
+ JScrollBar sb = new JScrollBar(JScrollBar.HORIZONTAL);
+ sb.setUI(ui);
+ sb.putClientProperty("JScrollBar.isFreeStanding", Boolean.FALSE);
+ harness.check(ui.getMinimumThumbSize(), new Dimension(15, 15));
+ sb.putClientProperty("JScrollBar.isFreeStanding", Boolean.TRUE);
+ harness.check(ui.getMinimumThumbSize(), new Dimension(17, 17));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java
new file mode 100644
index 00000000..3c1bc99c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/getPreferredSize.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: MyMetalScrollBarUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalScrollBarUI;
+
+/**
+ * Some checks for the getPreferredSize() method in the {@link MetalScrollBarUI}
+ * class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // test horizontal scroll bar
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.setUI(ui);
+ harness.check(ui.getPreferredSize(scrollBar), new Dimension(61, 17));
+
+ // test vertical scroll bar
+ MyMetalScrollBarUI ui2 = new MyMetalScrollBarUI();
+ JScrollBar scrollBar2 = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar2.setUI(ui2);
+ harness.check(ui2.getPreferredSize(scrollBar2), new Dimension(17, 61));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java
new file mode 100644
index 00000000..54ea393c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/installDefaults.java
@@ -0,0 +1,61 @@
+/* installDefaults.java -- some checks for the installDefaults() method in the
+ MetalScrollBarUI class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+// Uses: MyMetalScrollBarUI
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some tests for the initialisation performed in the installDefaults() method.
+ */
+public class installDefaults implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ harness.check(ui.getScrollBarWidthField(), 0);
+ ui.setScrollbar(new JScrollBar());
+ ui.installDefaults();
+
+ // the scrollBarWidth field must be initialised, the JGoodies Plastic
+ // look and feel relies on this...
+ harness.check(ui.getScrollBarWidthField(), 17);
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java
new file mode 100644
index 00000000..5b0c5d0c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollBarUI/layoutContainer.java
@@ -0,0 +1,156 @@
+// Tags: JDK1.2
+// Uses: MyMetalScrollBarUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollBarUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Rectangle;
+
+import javax.swing.JScrollBar;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.metal.MetalScrollBarUI;
+
+/**
+ * Some checks for the layoutContainer() method in the
+ * {@link MetalScrollBarUI} class.
+ */
+public class layoutContainer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // use a known look and feel
+ try
+ {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ testHorizontal(harness);
+ testHorizontalFreeStanding(harness);
+ testVertical(harness);
+ testVerticalFreeStanding(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testHorizontal(TestHarness harness)
+ {
+ harness.checkPoint("testHorizontal()");
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.putClientProperty("JScrollBar.isFreeStanding", Boolean.FALSE);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 100, 20);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(15, 0, 70, 20));
+ harness.check(ui.getThumbBounds(), new Rectangle(15, 0, 15, 20));
+
+ scrollBar.setBounds(40, 50, 250, 37);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(15, 0, 220, 37));
+ harness.check(ui.getThumbBounds(), new Rectangle(15, 0, 22, 37));
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testHorizontalFreeStanding(TestHarness harness)
+ {
+ harness.checkPoint("testHorizontalFreeStanding()");
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
+ scrollBar.putClientProperty("JScrollBar.isFreeStanding", Boolean.TRUE);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 100, 20);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(15, 0, 69, 20));
+ harness.check(ui.getThumbBounds(), new Rectangle(15, 0, 17, 20));
+
+ scrollBar.setBounds(40, 50, 250, 37);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(15, 0, 219, 37));
+ harness.check(ui.getThumbBounds(), new Rectangle(15, 0, 21, 37));
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testVertical(TestHarness harness)
+ {
+ harness.checkPoint("testVertical()");
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar.putClientProperty("JScrollBar.isFreeStanding", Boolean.FALSE);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 20, 100);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 15, 20, 70));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 15, 20, 15));
+
+ scrollBar.setBounds(40, 50, 37, 250);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 15, 37, 220));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 15, 37, 22));
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testVerticalFreeStanding(TestHarness harness)
+ {
+ harness.checkPoint("testVerticalFreeStanding()");
+ MyMetalScrollBarUI ui = new MyMetalScrollBarUI();
+ JScrollBar scrollBar = new JScrollBar(JScrollBar.VERTICAL);
+ scrollBar.putClientProperty("JScrollBar.isFreeStanding", Boolean.TRUE);
+ scrollBar.setUI(ui);
+ scrollBar.setBounds(0, 0, 20, 100);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 15, 20, 69));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 15, 20, 17));
+
+ scrollBar.setBounds(40, 50, 37, 250);
+ ui.layoutContainer(scrollBar);
+ harness.check(ui.getTrackBounds(), new Rectangle(0, 15, 37, 219));
+ harness.check(ui.getThumbBounds(), new Rectangle(0, 15, 37, 21));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Entries
new file mode 100644
index 00000000..d849a09f
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Entries
@@ -0,0 +1,7 @@
+/constructor.java/1.1/Thu Oct 13 08:11:45 2005//
+/getButtonWidth.java/1.1/Thu Oct 13 08:11:45 2005//
+/getMaximumSize.java/1.1/Thu Oct 13 08:11:45 2005//
+/getMinimumSize.java/1.1/Thu Oct 13 08:11:45 2005//
+/getPreferredSize.java/1.1/Thu Oct 13 08:11:45 2005//
+/isFocusable.java/1.1/Thu Jun 15 19:10:46 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Repository
new file mode 100644
index 00000000..54f48f78
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/constructor.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/constructor.java
new file mode 100644
index 00000000..947a3703
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/constructor.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+/**
+ * Some checks for the constructor in the
+ * {@link MetalScrollButton} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(MetalScrollButton.NORTH, 27, true);
+ harness.check(b.getDirection(), MetalScrollButton.NORTH);
+ harness.check(b.getButtonWidth(), 27);
+
+ // try a bad direction
+ b = new MetalScrollButton(999, 21, false);
+ harness.check(b.getDirection(), 999);
+
+ // try a negative width
+ b = new MetalScrollButton(MetalScrollButton.NORTH, -21, false);
+ harness.check(b.getButtonWidth(), -21);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getButtonWidth.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getButtonWidth.java
new file mode 100644
index 00000000..3158f881
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getButtonWidth.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+/**
+ * Some checks for the getButtonWidth() method in the
+ * {@link MetalScrollButton} class.
+ */
+public class getButtonWidth implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(MetalScrollButton.NORTH, 27, true);
+ harness.check(b.getButtonWidth(), 27);
+ b = new MetalScrollButton(MetalScrollButton.EAST, 21, false);
+ harness.check(b.getButtonWidth(), 21);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMaximumSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMaximumSize.java
new file mode 100644
index 00000000..8da09458
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMaximumSize.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+/**
+ * Some checks for the getMaximumSize() method in the
+ * {@link MetalScrollButton} class.
+ */
+public class getMaximumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(MetalScrollButton.NORTH, 27, true);
+ harness.check(b.getMaximumSize(), new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMinimumSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMinimumSize.java
new file mode 100644
index 00000000..e6bbff47
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getMinimumSize.java
@@ -0,0 +1,95 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+/**
+ * Some checks for the getMinimumSize() method in the
+ * {@link MetalScrollButton} class.
+ */
+public class getMinimumSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(MetalScrollButton.NORTH, 27, true);
+ harness.check(b.getMinimumSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 27, false);
+ harness.check(b.getMinimumSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 15, true);
+ harness.check(b.getMinimumSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 15, false);
+ harness.check(b.getMinimumSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 27, true);
+ harness.check(b.getMinimumSize(), new Dimension(26, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 27, false);
+ harness.check(b.getMinimumSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 15, true);
+ harness.check(b.getMinimumSize(), new Dimension(14, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 15, false);
+ harness.check(b.getMinimumSize(), new Dimension(13, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 27, true);
+ harness.check(b.getMinimumSize(), new Dimension(27, 26));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 27, false);
+ harness.check(b.getMinimumSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 15, true);
+ harness.check(b.getMinimumSize(), new Dimension(15, 14));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 15, false);
+ harness.check(b.getMinimumSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 27, true);
+ harness.check(b.getMinimumSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 27, false);
+ harness.check(b.getMinimumSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 15, true);
+ harness.check(b.getMinimumSize(), new Dimension(13, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 15, false);
+ harness.check(b.getMinimumSize(), new Dimension(13, 15));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getPreferredSize.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getPreferredSize.java
new file mode 100644
index 00000000..41c0e593
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/getPreferredSize.java
@@ -0,0 +1,95 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+/**
+ * Some checks for the getPreferredSize() method in the
+ * {@link MetalScrollButton} class.
+ */
+public class getPreferredSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(MetalScrollButton.NORTH, 27, true);
+ harness.check(b.getPreferredSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 27, false);
+ harness.check(b.getPreferredSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 15, true);
+ harness.check(b.getPreferredSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.NORTH, 15, false);
+ harness.check(b.getPreferredSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 27, true);
+ harness.check(b.getPreferredSize(), new Dimension(26, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 27, false);
+ harness.check(b.getPreferredSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 15, true);
+ harness.check(b.getPreferredSize(), new Dimension(14, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.EAST, 15, false);
+ harness.check(b.getPreferredSize(), new Dimension(13, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 27, true);
+ harness.check(b.getPreferredSize(), new Dimension(27, 26));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 27, false);
+ harness.check(b.getPreferredSize(), new Dimension(27, 25));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 15, true);
+ harness.check(b.getPreferredSize(), new Dimension(15, 14));
+
+ b = new MetalScrollButton(MetalScrollButton.SOUTH, 15, false);
+ harness.check(b.getPreferredSize(), new Dimension(15, 13));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 27, true);
+ harness.check(b.getPreferredSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 27, false);
+ harness.check(b.getPreferredSize(), new Dimension(25, 27));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 15, true);
+ harness.check(b.getPreferredSize(), new Dimension(13, 15));
+
+ b = new MetalScrollButton(MetalScrollButton.WEST, 15, false);
+ harness.check(b.getPreferredSize(), new Dimension(13, 15));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/isFocusable.java b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/isFocusable.java
new file mode 100644
index 00000000..1fe05e70
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalScrollButton/isFocusable.java
@@ -0,0 +1,47 @@
+/* isFocusable.java
+ Copyright (C) 2006 Red Hat, Tania Bento <tbento@redhat.com>
+
+ 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301 USA.
+*/
+
+// Tags:1.4
+
+package gnu.testlet.javax.swing.plaf.metal.MetalScrollButton;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalScrollButton;
+
+public class isFocusable
+ implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MetalScrollButton b = new MetalScrollButton(0, 0, false);
+ harness.check(b.isFocusable(), false);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Entries
new file mode 100644
index 00000000..f9682ad2
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Entries
@@ -0,0 +1,2 @@
+/MetalThemeTest.java/1.1/Sat Dec 25 15:13:38 2004//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Repository
new file mode 100644
index 00000000..39834115
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalTheme
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalTheme/MetalThemeTest.java b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/MetalThemeTest.java
new file mode 100644
index 00000000..2a98ad0c
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalTheme/MetalThemeTest.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Free Software Foundation, Inc.
+// Written by Michael Koch (konqueror@gmx.de)
+
+// 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.javax.swing.plaf.metal.MetalTheme;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.plaf.*;
+import javax.swing.plaf.metal.*;
+
+public class MetalThemeTest extends MetalTheme implements Testlet
+{
+ ColorUIResource primary1 = new ColorUIResource(1, 0, 0);
+ ColorUIResource primary2 = new ColorUIResource(2, 0, 0);
+ ColorUIResource primary3 = new ColorUIResource(3, 0, 0);
+ ColorUIResource secondary1 = new ColorUIResource(4, 0, 0);
+ ColorUIResource secondary2 = new ColorUIResource(5, 0, 0);
+ ColorUIResource secondary3 = new ColorUIResource(6, 0, 0);
+
+ private void check(TestHarness h, ColorUIResource color, int index)
+ {
+ h.check(color.getRed(), index, "wrong color returned");
+ }
+
+ public void test(TestHarness h)
+ {
+ check(h, getAcceleratorForeground(), 1);
+ check(h, getAcceleratorSelectedForeground(), 0);
+ check(h, getBlack(), 0);
+ check(h, getControl(), 6);
+ check(h, getControlDarkShadow(), 4);
+ check(h, getControlDisabled(), 5);
+ check(h, getControlHighlight(), 255);
+ check(h, getControlInfo(), 0);
+ check(h, getControlShadow(), 5);
+ check(h, getControlTextColor(), 0);
+ check(h, getDesktopColor(), 2);
+ check(h, getFocusColor(), 2);
+ check(h, getHighlightedTextColor(), 0);
+ check(h, getInactiveControlTextColor(), 5);
+ check(h, getInactiveSystemTextColor(), 5);
+ check(h, getMenuBackground(), 6);
+ check(h, getMenuDisabledForeground() , 5);
+ check(h, getMenuForeground(), 0);
+ check(h, getMenuSelectedBackground(), 2);
+ check(h, getMenuSelectedForeground(), 0);
+ check(h, getPrimaryControl(), 3);
+ check(h, getPrimaryControlDarkShadow(), 1);
+ check(h, getPrimaryControlHighlight(), 255);
+ check(h, getPrimaryControlInfo(), 0);
+ check(h, getPrimaryControlShadow(), 2);
+ check(h, getSeparatorBackground(), 255);
+ check(h, getSeparatorForeground(), 1);
+ check(h, getSystemTextColor(), 0);
+ check(h, getTextHighlightColor(), 3);
+ check(h, getUserTextColor(), 0);
+ check(h, getWhite(), 255);
+ check(h, getWindowBackground(), 255);
+ check(h, getWindowTitleBackground(), 3);
+ check(h, getWindowTitleForeground(), 0);
+ check(h, getWindowTitleInactiveBackground(), 6);
+ check(h, getWindowTitleInactiveForeground(), 0);
+ }
+
+ public ColorUIResource getPrimary1() { return primary1; }
+ public ColorUIResource getPrimary2() { return primary2; }
+ public ColorUIResource getPrimary3() { return primary3; }
+ public ColorUIResource getSecondary1() { return secondary1; }
+ public ColorUIResource getSecondary2() { return secondary2; }
+ public ColorUIResource getSecondary3() { return secondary3; }
+
+ public String getName() { return "mauve testcase"; }
+
+ public FontUIResource getControlTextFont() { return null; }
+ public FontUIResource getMenuTextFont() { return null; }
+ public FontUIResource getSubTextFont() { return null; }
+ public FontUIResource getSystemTextFont() { return null; }
+ public FontUIResource getUserTextFont() { return null; }
+ public FontUIResource getWindowTitleFont() { return null; }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Entries
new file mode 100644
index 00000000..047d4c02
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Entries
@@ -0,0 +1,5 @@
+/MyMetalToggleButtonUI.java/1.1/Thu Oct 13 08:03:59 2005//
+/getDisabledTextColor.java/1.1/Thu Oct 13 08:03:59 2005//
+/getFocusColor.java/1.1/Thu Oct 13 08:03:59 2005//
+/getSelectColor.java/1.1/Thu Oct 13 08:03:59 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Repository
new file mode 100644
index 00000000..f41c81f1
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/MyMetalToggleButtonUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/MyMetalToggleButtonUI.java
new file mode 100644
index 00000000..ce5a9946
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/MyMetalToggleButtonUI.java
@@ -0,0 +1,49 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToggleButtonUI;
+
+import java.awt.Color;
+
+import javax.swing.plaf.metal.MetalToggleButtonUI;
+
+/**
+ * Provides access to protected fields and methods
+ */
+public class MyMetalToggleButtonUI extends MetalToggleButtonUI
+{
+ public MyMetalToggleButtonUI()
+ {
+ }
+ public Color getDisabledTextColor()
+ {
+ return super.getDisabledTextColor();
+ }
+ public Color getFocusColor()
+ {
+ return super.getFocusColor();
+ }
+ public Color getSelectColor()
+ {
+ return super.getSelectColor();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getDisabledTextColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getDisabledTextColor.java
new file mode 100644
index 00000000..e1c8f4d4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getDisabledTextColor.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: MyMetalToggleButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToggleButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToggleButton;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getDisabledTextColor() method.
+ */
+public class getDisabledTextColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalToggleButtonUI ui = new MyMetalToggleButtonUI();
+ harness.check(ui.getDisabledTextColor(), null);
+
+ ui.installDefaults(new JToggleButton("Test"));
+ harness.check(ui.getDisabledTextColor(), MetalLookAndFeel.getInactiveControlTextColor());
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getFocusColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getFocusColor.java
new file mode 100644
index 00000000..be849af9
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getFocusColor.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: MyMetalToggleButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToggleButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToggleButton;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getFocusColor() method.
+ */
+public class getFocusColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalToggleButtonUI ui = new MyMetalToggleButtonUI();
+ harness.check(ui.getFocusColor(), null);
+
+ ui.installDefaults(new JToggleButton("Test"));
+ harness.check(ui.getFocusColor(), MetalLookAndFeel.getFocusColor());
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getSelectColor.java b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getSelectColor.java
new file mode 100644
index 00000000..8449fdf8
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToggleButtonUI/getSelectColor.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyMetalToggleButtonUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToggleButtonUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToggleButton;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * Some checks for the getSelectColor() method.
+ */
+public class getSelectColor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalToggleButtonUI ui = new MyMetalToggleButtonUI();
+ harness.check(ui.getSelectColor(), null);
+
+ ui.installDefaults(new JToggleButton("Test"));
+ harness.check(ui.getSelectColor(), MetalLookAndFeel.getControlShadow());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Entries
new file mode 100644
index 00000000..a7a17178
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Entries
@@ -0,0 +1,5 @@
+/MyMetalToolTipUI.java/1.1/Thu Oct 13 07:55:34 2005//
+/constructor.java/1.1/Thu Oct 13 07:55:34 2005//
+/createUI.java/1.1/Thu Oct 13 07:55:34 2005//
+/getAcceleratorString.java/1.1/Thu Oct 13 07:55:34 2005//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Repository
new file mode 100644
index 00000000..fa035657
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/MyMetalToolTipUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/MyMetalToolTipUI.java
new file mode 100644
index 00000000..15dfb45e
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/MyMetalToolTipUI.java
@@ -0,0 +1,36 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToolTipUI;
+
+import javax.swing.plaf.metal.MetalToolTipUI;
+
+/**
+ * A utility class that provides access to the protected methods
+ * of the {@link MetalToolTipUI} class.
+ */
+public class MyMetalToolTipUI extends MetalToolTipUI
+{
+ public boolean isAcceleratorHidden()
+ {
+ return super.isAcceleratorHidden();
+ }
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/constructor.java b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/constructor.java
new file mode 100644
index 00000000..eb73dd38
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/constructor.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+// Uses: MyMetalToolTipUI
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToolTipUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.metal.MetalToolTipUI;
+
+/**
+ * Some checks for the constructor in the {@link MetalToolTipUI} class.
+ */
+public class constructor implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyMetalToolTipUI ui = new MyMetalToolTipUI();
+ harness.check(ui.isAcceleratorHidden(), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/createUI.java b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/createUI.java
new file mode 100644
index 00000000..43d455a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/createUI.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToolTipUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JToolTip;
+import javax.swing.plaf.metal.MetalToolTipUI;
+
+/**
+ * Some checks for the createUI() method in the MetalToolTipUI class.
+ */
+public class createUI implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JToolTip t1 = new JToolTip();
+ MetalToolTipUI ui1 = (MetalToolTipUI) MetalToolTipUI.createUI(t1);
+ JToolTip t2 = new JToolTip();
+ MetalToolTipUI ui2 = (MetalToolTipUI) MetalToolTipUI.createUI(t2);
+ harness.check(ui1 == ui2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/getAcceleratorString.java b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/getAcceleratorString.java
new file mode 100644
index 00000000..14a67617
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/MetalToolTipUI/getAcceleratorString.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.plaf.metal.MetalToolTipUI;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.event.KeyEvent;
+
+import javax.swing.JButton;
+import javax.swing.JToolTip;
+import javax.swing.plaf.metal.MetalToolTipUI;
+
+/**
+ * Some checks for the getAcceleratorString() method in the
+ * MetalToolTipUI class.
+ */
+public class getAcceleratorString implements Testlet
+{
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ JButton button1 = new JButton("Test 1");
+ button1.setMnemonic(KeyEvent.VK_B);
+ JToolTip t1 = button1.createToolTip();
+ MetalToolTipUI ui1 = (MetalToolTipUI) t1.getUI();
+ harness.check(ui1.getAcceleratorString(), "Alt-B");
+
+ JButton button2 = new JButton("Test 2");
+ button2.setMnemonic(KeyEvent.VK_C);
+ JToolTip t2 = button2.createToolTip();
+ MetalToolTipUI ui2 = (MetalToolTipUI) t2.getUI();
+ harness.check(ui2.getAcceleratorString(), "Alt-C");
+ harness.check(ui1.getAcceleratorString(), "Alt-C");
+ harness.check(ui1 == ui2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Entries b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Entries
new file mode 100644
index 00000000..b102a264
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Entries
@@ -0,0 +1,3 @@
+/OceanThemeTest.java/1.1/Mon Sep 12 12:55:23 2005//
+/addCustomEntriesToTable.java/1.1/Tue Sep 12 11:10:27 2006//
+D
diff --git a/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Repository b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Repository
new file mode 100644
index 00000000..41584941
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/plaf/metal/OceanTheme
diff --git a/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Root b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/plaf/metal/OceanTheme/OceanThemeTest.java b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/OceanThemeTest.java
new file mode 100644
index 00000000..6acc1853
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/OceanThemeTest.java
@@ -0,0 +1,90 @@
+// Tags: JDK1.5
+
+// Copyright (C) Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.plaf.metal.OceanTheme;
+
+import java.awt.Color;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.metal.OceanTheme;
+
+/**
+ * Checks if the values of the OceanTheme are correct.
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class OceanThemeTest implements Testlet
+{
+ /**
+ * Extends OceanTheme to make protected methods public.
+ */
+ class TestOceanTheme extends OceanTheme
+ {
+ public ColorUIResource getPrimary1()
+ {
+ return super.getPrimary1();
+ }
+ public ColorUIResource getPrimary2()
+ {
+ return super.getPrimary2();
+ }
+ public ColorUIResource getPrimary3()
+ {
+ return super.getPrimary3();
+ }
+ public ColorUIResource getSecondary1()
+ {
+ return super.getSecondary1();
+ }
+ public ColorUIResource getSecondary2()
+ {
+ return super.getSecondary2();
+ }
+ public ColorUIResource getSecondary3()
+ {
+ return super.getSecondary3();
+ }
+ public ColorUIResource getBlack()
+ {
+ return super.getBlack();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TestOceanTheme theme = new TestOceanTheme();
+ harness.check(theme.getBlack(), new Color(51, 51, 51));
+ harness.check(theme.getControlTextColor(), new Color(51, 51, 51));
+ harness.check(theme.getDesktopColor(), Color.WHITE);
+ harness.check(theme.getInactiveControlTextColor(), new Color(153, 153, 153));
+ harness.check(theme.getMenuDisabledForeground(), new Color(153, 153, 153));
+ harness.check(theme.getName(), "Ocean");
+ harness.check(theme.getPrimary1(), new Color(99, 130, 191));
+ harness.check(theme.getPrimary2(), new Color(163, 184, 204));
+ harness.check(theme.getPrimary3(), new Color(184, 207, 229));
+ harness.check(theme.getSecondary1(), new Color(122, 138, 153));
+ harness.check(theme.getSecondary2(), new Color(184, 207, 229));
+ harness.check(theme.getSecondary3(), new Color(238, 238, 238));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/plaf/metal/OceanTheme/addCustomEntriesToTable.java b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/addCustomEntriesToTable.java
new file mode 100644
index 00000000..bd18b466
--- /dev/null
+++ b/gnu/testlet/javax/swing/plaf/metal/OceanTheme/addCustomEntriesToTable.java
@@ -0,0 +1,161 @@
+/* addCustomEntriesToTable.java -- some checks for the
+ addCustomEntriesToTable() method in the OceanTheme class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.plaf.metal.OceanTheme;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.awt.Insets;
+import java.util.Arrays;
+
+import javax.swing.UIDefaults;
+import javax.swing.plaf.ColorUIResource;
+import javax.swing.plaf.BorderUIResource.LineBorderUIResource;
+import javax.swing.plaf.metal.OceanTheme;
+
+public class addCustomEntriesToTable implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ UIDefaults defaults = new UIDefaults();
+ OceanTheme theme = new OceanTheme();
+ theme.addCustomEntriesToTable(defaults);
+
+ harness.check(defaults.get("Button.disabledToolBarBorderBackground"),
+ new ColorUIResource(204, 204, 204));
+ harness.check(defaults.get("Button.gradient"), Arrays.asList(new Object[]
+ {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
+ new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("Button.rollover"), Boolean.TRUE);
+ harness.check(defaults.get("Button.rolloverIconType"), "ocean");
+ harness.check(defaults.get("Button.toolBarBorderBackground"),
+ new ColorUIResource(153, 153, 153));
+ harness.check(defaults.get("CheckBox.gradient"), Arrays.asList(new Object[]
+ {new Float(0.3), new Float(0.0), new ColorUIResource(221, 232, 243),
+ new ColorUIResource(Color.WHITE), new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("CheckBox.rollover"), Boolean.TRUE); // -> true
+ harness.check(defaults.get("CheckBoxMenuItem.gradient"), Arrays.asList(
+ new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ //harness.check(defaults.get("FileChooser.homeFolderIcon"), null); // -> javax.swing.plaf.IconUIResource@5210f6d3
+ //harness.check(defaults.get("FileChooser.newFolderIcon"), null); // -> javax.swing.plaf.IconUIResource@99b5393
+ //harness.check(defaults.get("FileChooser.upFolderIcon"), null); // -> javax.swing.plaf.IconUIResource@732b3d53
+ //harness.check(defaults.get("FileView.computerIcon"), null); // -> javax.swing.plaf.IconUIResource@73d6776d
+ //harness.check(defaults.get("FileView.directoryIcon"), null); // -> javax.swing.plaf.IconUIResource@65faba46
+ //harness.check(defaults.get("FileView.fileIcon"), null); // -> javax.swing.plaf.IconUIResource@77d80e6d
+ //harness.check(defaults.get("FileView.floppyDriveIcon"), null); // -> javax.swing.plaf.IconUIResource@7e5a9de6
+ //harness.check(defaults.get("FileView.hardDriveIcon"), null); // -> javax.swing.plaf.IconUIResource@6686fe26
+ harness.check(defaults.get("InternalFrame.activeTitleGradient"),
+ Arrays.asList(new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ //harness.check(defaults.get("InternalFrame.closeIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$IFIcon@2fdb7df8
+ //harness.check(defaults.get("InternalFrame.icon"), null); // -> javax.swing.plaf.IconUIResource@69f78ef1
+ //harness.check(defaults.get("InternalFrame.iconifyIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$IFIcon@7bc9a690
+ //harness.check(defaults.get("InternalFrame.maximizeIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$IFIcon@5f7a8a02
+ //harness.check(defaults.get("InternalFrame.minimizeIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$IFIcon@74b2002f
+ //harness.check(defaults.get("InternalFrame.paletteCloseIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$IFIcon@432a0f6c
+ harness.check(defaults.get("Label.disabledForeground"),
+ new ColorUIResource(153, 153, 153));
+ LineBorderUIResource border = (LineBorderUIResource) defaults.get(
+ "List.focusCellHighlightBorder");
+ harness.check(border.getThickness(), 1);
+ harness.check(border.getLineColor(), new ColorUIResource(99, 130, 191));
+ harness.check(defaults.get("MenuBar.borderColor"),
+ new ColorUIResource(204, 204, 204));
+ harness.check(defaults.get("MenuBar.gradient"), Arrays.asList(new Object[]
+ {new Float(1.0), new Float(0.0), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(218, 218, 218),
+ new ColorUIResource(218, 218, 218)}));
+ harness.check(defaults.get("MenuBarUI"),
+ "javax.swing.plaf.metal.MetalMenuBarUI");
+ harness.check(defaults.get("Menu.opaque"), Boolean.FALSE);
+ //harness.check(defaults.get("OptionPane.errorIcon"), null); // -> javax.swing.plaf.IconUIResource@151a64ed
+ //harness.check(defaults.get("OptionPane.informationIcon"), null); // -> javax.swing.plaf.IconUIResource@53ad085
+ //harness.check(defaults.get("OptionPane.questionIcon"), null); // -> javax.swing.plaf.IconUIResource@4ba33d48
+ //harness.check(defaults.get("OptionPane.warningIcon"), null); // -> javax.swing.plaf.IconUIResource@392d263f
+ harness.check(defaults.get("RadioButton.gradient"), Arrays.asList(
+ new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("RadioButton.rollover"), Boolean.TRUE);
+ harness.check(defaults.get("RadioButtonMenuItem.gradient"), Arrays.asList(
+ new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("ScrollBar.gradient"), Arrays.asList(
+ new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("Slider.altTrackColor"),
+ new ColorUIResource(210, 226, 239));
+ harness.check(defaults.get("Slider.focusGradient"), Arrays.asList(
+ new Object[] {new Float(0.3), new Float(0.2),
+ new ColorUIResource(200, 221, 242), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("Slider.gradient"), Arrays.asList(new Object[]
+ {new Float(0.3), new Float(0.2), new ColorUIResource(200, 221, 242),
+ new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("SplitPane.dividerFocusColor"),
+ new ColorUIResource(200, 221, 242));
+ harness.check(defaults.get("SplitPane.oneTouchButtonsOpaque"),
+ Boolean.FALSE);
+ harness.check(defaults.get("TabbedPane.borderHightlightColor"),
+ new ColorUIResource(99, 130, 191));
+ harness.check(defaults.get("TabbedPane.contentAreaColor"),
+ new ColorUIResource(200, 221, 242));
+ harness.check(defaults.get("TabbedPane.contentBorderInsets"),
+ new Insets(4, 2, 3, 3));
+ harness.check(defaults.get("TabbedPane.tabAreaBackground"),
+ new ColorUIResource(218, 218, 218));
+ harness.check(defaults.get("TabbedPane.tabAreaInsets"),
+ new Insets(2, 2, 0, 6));
+ harness.check(defaults.get("TabbedPane.selected"),
+ new ColorUIResource(200, 221, 242));
+ harness.check(defaults.get("TabbedPane.unselectedBackground"),
+ new ColorUIResource(238, 238, 238));
+ harness.check(defaults.get("Table.focusCellHighlightBorder")
+ instanceof LineBorderUIResource);
+ harness.check(defaults.get("Table.gridColor"),
+ new ColorUIResource(122, 138, 153));
+ harness.check(defaults.get("ToggleButton.gradient"),
+ Arrays.asList(new Object[] {new Float(0.3), new Float(0.0),
+ new ColorUIResource(221, 232, 243), new ColorUIResource(Color.WHITE),
+ new ColorUIResource(184, 207, 229)}));
+ harness.check(defaults.get("ToolBar.borderColor"),
+ new ColorUIResource(204, 204, 204));
+ harness.check(defaults.get("ToolBar.isRollover"), Boolean.TRUE);
+ //harness.check(defaults.get("Tree.expandedIcon"), null); // -> javax.swing.plaf.IconUIResource@2911a3a4
+ //harness.check(defaults.get("Tree.leafIcon"), null); // -> javax.swing.plaf.IconUIResource@5ca352a5
+ //harness.check(defaults.get("Tree.closedIcon"), null); // -> javax.swing.plaf.IconUIResource@584fce71
+ //harness.check(defaults.get("Tree.collapsedIcon"), null); // -> javax.swing.plaf.metal.OceanTheme$COIcon@56406199
+ //harness.check(defaults.get("Tree.openIcon"), null); // -> javax.swing.plaf.IconUIResource@57bcc0bc
+ harness.check(defaults.get("Tree.selectionBorderColor"),
+ new ColorUIResource(99, 130, 191));
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Entries b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Entries
new file mode 100644
index 00000000..fdffe270
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Entries
@@ -0,0 +1,13 @@
+/MyTableModel.java/1.1/Sun Jun 19 20:10:52 2005//
+/findColumn.java/1.1/Sun Jun 19 20:10:52 2005//
+/fireTableCellUpdated.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableChanged.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableDataChanged.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableRowsDeleted.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableRowsInserted.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableRowsUpdated.java/1.2/Mon Jul 25 17:02:56 2005//
+/fireTableStructureChanged.java/1.2/Mon Jul 25 17:02:56 2005//
+/getColumnClass.java/1.1/Sun Jun 19 20:10:52 2005//
+/getColumnName.java/1.2/Fri Jun 24 16:13:52 2005//
+/isCellEditable.java/1.1/Sun Jun 19 20:10:52 2005//
+D
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Repository b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Repository
new file mode 100644
index 00000000..53687da9
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/AbstractTableModel
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Root b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/MyTableModel.java b/gnu/testlet/javax/swing/table/AbstractTableModel/MyTableModel.java
new file mode 100644
index 00000000..2500dad4
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/MyTableModel.java
@@ -0,0 +1,47 @@
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * This class provides a default implementation that can be used to test
+ * the methods in AbstractTableModel.
+ */
+public class MyTableModel extends AbstractTableModel {
+
+ public MyTableModel()
+ {
+ }
+
+ public int getRowCount()
+ {
+ return 1;
+ }
+
+ public int getColumnCount()
+ {
+ return 3;
+ }
+
+ public Object getValueAt(int row, int column)
+ {
+ return new Integer(column);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/findColumn.java b/gnu/testlet/javax/swing/table/AbstractTableModel/findColumn.java
new file mode 100644
index 00000000..8203342e
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/findColumn.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the findColumn() method in the {@link AbstractTableModel}
+ * class.
+ */
+public class findColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(new Object[] {"C1", "C2",
+ "C3"}, 1);
+ harness.check(m1.findColumn("C1"), 0);
+ harness.check(m1.findColumn("C2"), 1);
+ harness.check(m1.findColumn("C3"), 2);
+ harness.check(m1.findColumn("C4"), -1);
+
+ boolean pass = false;
+ try
+ {
+ /* int index = */ m1.findColumn(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java
new file mode 100644
index 00000000..e6c8bbbd
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableCellUpdated.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableCellUpdated() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableCellUpdated implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableCellUpdated(2, 3);
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), 2);
+ harness.check(e.getLastRow(), 2);
+ harness.check(e.getColumn(), 3);
+ harness.check(e.getSource(), m);
+ harness.check(e.getType(), TableModelEvent.UPDATE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java
new file mode 100644
index 00000000..f22091dc
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableChanged.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableChanged() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableChanged implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ TableModelEvent e1 = new TableModelEvent(m);
+ m.fireTableChanged(e1);
+ TableModelEvent e2 = listener.getEvent();
+ harness.check(e1 == e2);
+
+ m.fireTableChanged(null);
+ harness.check(listener.getEvent() == null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java
new file mode 100644
index 00000000..c824a221
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableDataChanged.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableDataChanged() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableDataChanged implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableDataChanged();
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), 0);
+ harness.check(e.getLastRow(), Integer.MAX_VALUE);
+ harness.check(e.getColumn(), -1);
+ harness.check(e.getType(), TableModelEvent.UPDATE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java
new file mode 100644
index 00000000..4f465998
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsDeleted.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableRowsDeleted() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableRowsDeleted implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableRowsDeleted(3, 7);
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), 3);
+ harness.check(e.getLastRow(), 7);
+ harness.check(e.getColumn(), -1);
+ harness.check(e.getType(), TableModelEvent.DELETE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java
new file mode 100644
index 00000000..73e4f967
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsInserted.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableRowsInserted() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableRowsInserted implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableRowsInserted(3, 7);
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), 3);
+ harness.check(e.getLastRow(), 7);
+ harness.check(e.getColumn(), -1);
+ harness.check(e.getType(), TableModelEvent.INSERT);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java
new file mode 100644
index 00000000..e7099d3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableRowsUpdated.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableRowsUpdated() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableRowsUpdated implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableRowsUpdated(3, 7);
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), 3);
+ harness.check(e.getLastRow(), 7);
+ harness.check(e.getColumn(), -1);
+ harness.check(e.getType(), TableModelEvent.UPDATE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java
new file mode 100644
index 00000000..2e0186a8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/fireTableStructureChanged.java
@@ -0,0 +1,55 @@
+// Tags: JDK1.2
+// Uses: MyTableModel ../DefaultTableModel/MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.table.DefaultTableModel.MyTableModelListener;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the fireTableStructureChanged() method in the
+ * {@link AbstractTableModel} class.
+ */
+public class fireTableStructureChanged implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModelListener listener = new MyTableModelListener();
+ MyTableModel m = new MyTableModel();
+ m.addTableModelListener(listener);
+ m.fireTableStructureChanged();
+ TableModelEvent e = listener.getEvent();
+ harness.check(e.getFirstRow(), -1);
+ harness.check(e.getLastRow(), -1);
+ harness.check(e.getColumn(), -1);
+ harness.check(e.getType(), TableModelEvent.UPDATE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnClass.java b/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnClass.java
new file mode 100644
index 00000000..6c1dbd34
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnClass.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+// Uses: MyTableModel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the getColumnClass() method in the {@link AbstractTableModel}
+ * class.
+ */
+public class getColumnClass implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModel m1 = new MyTableModel();
+ harness.check(m1.getColumnClass(0), Object.class);
+ harness.check(m1.getColumnClass(Integer.MIN_VALUE), Object.class);
+ harness.check(m1.getColumnClass(Integer.MAX_VALUE), Object.class);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java b/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java
new file mode 100644
index 00000000..85728a21
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/getColumnName.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: MyTableModel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the getColumnName() method in the {@link AbstractTableModel}
+ * class.
+ */
+public class getColumnName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModel m1 = new MyTableModel();
+ harness.check(m1.getColumnName(0), "A");
+ harness.check(m1.getColumnName(1), "B");
+ harness.check(m1.getColumnName(26), "AA");
+ harness.check(m1.getColumnName(27), "AB");
+ harness.check(m1.getColumnName(-1), "");
+ harness.check(m1.getColumnName(Integer.MIN_VALUE), "");
+ harness.check(m1.getColumnName(Integer.MAX_VALUE - 1), "FXSHRXW");
+ harness.check(m1.getColumnName(Integer.MAX_VALUE), "FXSHRXX");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/AbstractTableModel/isCellEditable.java b/gnu/testlet/javax/swing/table/AbstractTableModel/isCellEditable.java
new file mode 100644
index 00000000..c1eb4eb7
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/AbstractTableModel/isCellEditable.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: MyTableModel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.AbstractTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Some tests for the isCellEditable() method in the {@link AbstractTableModel}
+ * class.
+ */
+public class isCellEditable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ MyTableModel m1 = new MyTableModel();
+ harness.check(m1.isCellEditable(0, 0), false);
+ harness.check(m1.isCellEditable(Integer.MIN_VALUE, 0), false);
+ harness.check(m1.isCellEditable(Integer.MAX_VALUE, 0), false);
+ harness.check(m1.isCellEditable(Integer.MIN_VALUE, Integer.MIN_VALUE), false);
+ harness.check(m1.isCellEditable(Integer.MAX_VALUE, Integer.MIN_VALUE), false);
+ harness.check(m1.isCellEditable(Integer.MIN_VALUE, Integer.MAX_VALUE), false);
+ harness.check(m1.isCellEditable(Integer.MAX_VALUE, Integer.MAX_VALUE), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/CVS/Entries b/gnu/testlet/javax/swing/table/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/table/CVS/Entries.Log b/gnu/testlet/javax/swing/table/CVS/Entries.Log
new file mode 100644
index 00000000..891ac76a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/AbstractTableModel////
+A D/DefaultTableCellRenderer////
+A D/DefaultTableColumnModel////
+A D/DefaultTableModel////
+A D/JTableHeader////
+A D/TableColumn////
diff --git a/gnu/testlet/javax/swing/table/CVS/Repository b/gnu/testlet/javax/swing/table/CVS/Repository
new file mode 100644
index 00000000..30f13184
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table
diff --git a/gnu/testlet/javax/swing/table/CVS/Root b/gnu/testlet/javax/swing/table/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Entries b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Entries
new file mode 100644
index 00000000..c6b1a441
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Entries
@@ -0,0 +1,2 @@
+/getTableCellRendererComponent.java/1.1/Wed Feb 1 13:52:33 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Repository b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Repository
new file mode 100644
index 00000000..acbe56f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/DefaultTableCellRenderer
diff --git a/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Root b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/getTableCellRendererComponent.java b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/getTableCellRendererComponent.java
new file mode 100644
index 00000000..666e8212
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableCellRenderer/getTableCellRendererComponent.java
@@ -0,0 +1,100 @@
+/* getTableCellRendererComponent.java -- Tests the getTableCellRenderer() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.DefaultTableCellRenderer;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests various aspects of the getTableCellRendererComponent() method in
+ * DefaultTableCellRenderer.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getTableCellRendererComponent implements Testlet
+{
+
+ Object value;
+
+ /**
+ * Overridden to test if setValue should be called.
+ */
+ class TestCellRenderer extends DefaultTableCellRenderer
+ {
+ protected void setValue(Object v)
+ {
+ super.setValue(v);
+ value = v;
+ }
+ }
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testSetValue(harness);
+ testTextField(harness);
+ }
+
+ /**
+ * Checks if getTableCellRendererComponent() should call setValue()
+ * in order to set the value.
+ *
+ * @param h the test harness to use
+ */
+ private void testSetValue(TestHarness h)
+ {
+ TestCellRenderer r = new TestCellRenderer();
+ value = null;
+ JTable t = new JTable();
+ Object v = "Hello";
+ r.getTableCellRendererComponent(t, v, false, false, 0, 0);
+ h.check(value == v);
+ }
+
+ /**
+ * Checks how values of type JTextFields should be handled. This test
+ * is here due to a programming mistake in Classpath's implementation
+ * of DefaultTableCellRenderer.
+ *
+ * @param h the test harness to use
+ */
+ private void testTextField(TestHarness h)
+ {
+ TestCellRenderer r = new TestCellRenderer();
+ JTable t = new JTable();
+ Object v = new JTextField("Hello");
+ Component c = r.getTableCellRendererComponent(t, v, false, false, 0, 0);
+ h.check(c == r);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Entries b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Entries
new file mode 100644
index 00000000..136d4254
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Entries
@@ -0,0 +1,23 @@
+/MyDefaultTableColumnModel.java/1.1/Wed Jun 28 10:06:19 2006//
+/MyListener.java/1.1/Sun Apr 24 21:14:08 2005//
+/addColumn.java/1.3/Wed Jun 28 10:06:19 2006//
+/addColumnModelListener.java/1.2/Thu Apr 28 07:37:35 2005//
+/constructor.java/1.3/Wed May 21 13:30:50 2008//
+/getColumn.java/1.2/Wed Jun 28 10:06:19 2006//
+/getColumnCount.java/1.1/Sun Apr 24 21:14:08 2005//
+/getColumnIndex.java/1.1/Sun Apr 24 21:14:08 2005//
+/getColumnIndexAtX.java/1.1/Sun Apr 24 21:14:08 2005//
+/getColumnMargin.java/1.2/Mon Jul 25 09:01:06 2005//
+/getColumnModelListeners.java/1.2/Thu Apr 28 07:37:36 2005//
+/getColumnSelectionAllowed.java/1.2/Wed Jun 28 10:06:19 2006//
+/getColumns.java/1.1/Sun Apr 24 21:14:08 2005//
+/getListeners.java/1.3/Wed Dec 27 15:48:18 2006//
+/getSelectedColumnCount.java/1.1/Sun Apr 24 21:14:08 2005//
+/getSelectionModel.java/1.1/Sun Apr 24 21:14:08 2005//
+/getTotalColumnWidth.java/1.1/Wed Jun 28 10:06:19 2006//
+/moveColumn.java/1.3/Fri Jul 1 16:49:33 2005//
+/removeColumn.java/1.2/Wed Jun 28 10:06:19 2006//
+/setColumnMargin.java/1.2/Thu Apr 28 07:37:36 2005//
+/setColumnSelectionAllowed.java/1.1/Sun Apr 24 21:14:08 2005//
+/setSelectionModel.java/1.2/Wed Jun 28 10:06:19 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Repository b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Repository
new file mode 100644
index 00000000..e02b8bba
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/DefaultTableColumnModel
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Root b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyDefaultTableColumnModel.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyDefaultTableColumnModel.java
new file mode 100644
index 00000000..d3c79267
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyDefaultTableColumnModel.java
@@ -0,0 +1,40 @@
+/* MyDefaultTableColumnModel.java -- a subclass of DefaultTableColumn mode
+ Copyright (C) 2006 FIXME: your info here
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.table.DefaultTableColumnModel;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.DefaultTableColumnModel;
+
+public class MyDefaultTableColumnModel extends DefaultTableColumnModel
+{
+ public MyDefaultTableColumnModel()
+ {
+ super();
+ }
+
+ public ChangeEvent getChangeEventField()
+ {
+ return changeEvent;
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyListener.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyListener.java
new file mode 100644
index 00000000..3945f446
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/MyListener.java
@@ -0,0 +1,101 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.TableColumnModelEvent;
+import javax.swing.event.TableColumnModelListener;
+
+/**
+ * A support class for testing.
+ */
+public class MyListener implements TableColumnModelListener,
+ PropertyChangeListener
+{
+
+ // references to events received
+ private TableColumnModelEvent event;
+ private ChangeEvent changeEvent;
+ private ListSelectionEvent selectionEvent;
+
+ public MyListener()
+ {
+ clearEvents();
+ }
+
+ /**
+ * Clear event references ready for new test.
+ */
+ public void clearEvents()
+ {
+ this.event = null;
+ this.changeEvent = null;
+ this.selectionEvent = null;
+ }
+
+ public TableColumnModelEvent getEvent()
+ {
+ return this.event;
+ }
+
+ public ChangeEvent getChangeEvent()
+ {
+ return this.changeEvent;
+ }
+
+ public ListSelectionEvent getSelectionEvent()
+ {
+ return this.selectionEvent;
+ }
+
+ public void columnAdded(TableColumnModelEvent event)
+ {
+ this.event = event;
+ }
+
+ public void columnMarginChanged(ChangeEvent event)
+ {
+ this.changeEvent = event;
+ }
+
+ public void columnMoved(TableColumnModelEvent event)
+ {
+ this.event = event;
+ }
+
+ public void columnRemoved(TableColumnModelEvent event)
+ {
+ this.event = event;
+ }
+
+ public void columnSelectionChanged(ListSelectionEvent event)
+ {
+ this.selectionEvent = event;
+ }
+
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ System.out.println(evt.toString());
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java
new file mode 100644
index 00000000..849d0466
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumn.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the addColumn() method in the {@link DefaultTableColumnModel}
+ * class.
+ */
+public class addColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumn c1 = new TableColumn(1, 23);
+ m1.addColumn(c1);
+ harness.check(m1.getColumnCount(), 1);
+ PropertyChangeListener[] listeners = c1.getPropertyChangeListeners();
+ harness.check(listeners[0], m1);
+
+ TableColumn c = m1.getColumn(0);
+ harness.check(c.getWidth(), 23);
+
+ boolean pass = false;
+ try
+ {
+ m1.addColumn(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check that adding a column sends the correct event
+ MyListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ m1.addColumn(new TableColumn(2, 45));
+ harness.check(listener.getEvent() != null);
+ harness.check(listener.getEvent().getFromIndex(), 0);
+ harness.check(listener.getEvent().getToIndex(), 1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumnModelListener.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumnModelListener.java
new file mode 100644
index 00000000..fafa1280
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/addColumnModelListener.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the addColumnModelListener() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class addColumnModelListener implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // just do very basic checks - a listener is used in other tests
+ // for this class, so it gets tested again and again...
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumnModelListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ TableColumnModelListener[] listeners = m1.getColumnModelListeners();
+ harness.check(listeners[0], listener);
+
+ // a null listener is ignored
+ m1.addColumnModelListener(null);
+ listeners = m1.getColumnModelListeners();
+ harness.check(listeners.length, 1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java
new file mode 100644
index 00000000..364e8862
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/constructor.java
@@ -0,0 +1,105 @@
+// Tags: JDK1.2
+// Uses: MyDefaultTableColumnModel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.TableColumnModelEvent;
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the constructor in the {@link DefaultTableColumnModel} class.
+ */
+public class constructor implements Testlet, TableColumnModelListener
+{
+
+ public void columnAdded(TableColumnModelEvent e)
+ {
+ // ignore
+ }
+
+ public void columnMarginChanged(ChangeEvent e)
+ {
+ // ignore
+ }
+
+ public void columnMoved(TableColumnModelEvent e)
+ {
+ // ignore
+ }
+
+ public void columnRemoved(TableColumnModelEvent e)
+ {
+ // ignore
+ }
+
+ public void columnSelectionChanged(ListSelectionEvent e)
+ {
+ // ignore
+ }
+
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testChangeEventInitialization(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableColumnModel()");
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ harness.check(m1.getColumnCount(), 0);
+ harness.check(m1.getColumnMargin(), 1);
+ harness.check(m1.getColumnSelectionAllowed(), false);
+ harness.check(m1.getSelectedColumnCount(), 0);
+ }
+
+ /**
+ * This test confirms that the change event is created lazily.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ private void testChangeEventInitialization(TestHarness harness)
+ {
+ harness.checkPoint("testChangeEventInitialization()");
+ MyDefaultTableColumnModel m = new MyDefaultTableColumnModel();
+ harness.check(m.getChangeEventField(), null);
+
+ // no listeners, no need to create shared ChangeEvent
+ m.setColumnMargin(99);
+ harness.check(m.getChangeEventField(), null);
+
+ // add a listener, and the event is generated
+ m.addColumnModelListener(this);
+ m.setColumnMargin(100);
+ harness.check(m.getChangeEventField() != null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java
new file mode 100644
index 00000000..ca5bb57a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumn.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getColumn() method in the {@link DefaultTableColumnModel}
+ * class.
+ */
+public class getColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumn column = new TableColumn(1, 23);
+ m1.addColumn(column);
+ TableColumn c = m1.getColumn(0);
+ harness.check(c, column);
+
+ boolean pass = false;
+ try
+ {
+ c = m1.getColumn(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ c = m1.getColumn(1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnCount.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnCount.java
new file mode 100644
index 00000000..83b38c33
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnCount.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+* Some tests for the getColumnCount() method in the
+* {@link DefaultTableColumnModel} class.
+*/
+public class getColumnCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ m1.addColumn(new TableColumn());
+ m1.addColumn(new TableColumn());
+ m1.addColumn(new TableColumn());
+ harness.check(m1.getColumnCount(), 3);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndex.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndex.java
new file mode 100644
index 00000000..87debf06
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndex.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getColumnIndex(Object) method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getColumnIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumn c0 = new TableColumn(0);
+ TableColumn c1 = new TableColumn(1);
+ TableColumn c2 = new TableColumn(2);
+ c0.setIdentifier("A");
+ c1.setIdentifier("B");
+ c2.setIdentifier("C");
+ m1.addColumn(c0);
+ m1.addColumn(c1);
+ m1.addColumn(c2);
+ harness.check(m1.getColumnIndex("A"), 0);
+ harness.check(m1.getColumnIndex("B"), 1);
+ harness.check(m1.getColumnIndex("C"), 2);
+
+ boolean pass = false;
+ try
+ {
+ /* int i = */ m1.getColumnIndex("D");
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ /* int i = */ m1.getColumnIndex(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndexAtX.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndexAtX.java
new file mode 100644
index 00000000..1d11166d
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnIndexAtX.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getColumnIndexAtX(int) method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getColumnIndexAtX implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumn c0 = new TableColumn(0, 5);
+ TableColumn c1 = new TableColumn(1, 7);
+ TableColumn c2 = new TableColumn(2, 11);
+ m1.addColumn(c0);
+ m1.addColumn(c1);
+ m1.addColumn(c2);
+ harness.check(m1.getColumnIndexAtX(-1), -1);
+ harness.check(m1.getColumnIndexAtX(0), 0);
+ harness.check(m1.getColumnIndexAtX(5), 1);
+ harness.check(m1.getColumnIndexAtX(11), 1);
+ harness.check(m1.getColumnIndexAtX(12), 2);
+ harness.check(m1.getColumnIndexAtX(22), 2);
+ harness.check(m1.getColumnIndexAtX(23), -1);
+
+ // now repeat with a different margin - it is ignored
+ m1.setColumnMargin(3);
+ harness.check(m1.getColumnIndexAtX(-1), -1);
+ harness.check(m1.getColumnIndexAtX(0), 0);
+ harness.check(m1.getColumnIndexAtX(5), 1);
+ harness.check(m1.getColumnIndexAtX(11), 1);
+ harness.check(m1.getColumnIndexAtX(12), 2);
+ harness.check(m1.getColumnIndexAtX(22), 2);
+ harness.check(m1.getColumnIndexAtX(23), -1);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnMargin.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnMargin.java
new file mode 100644
index 00000000..86cb06ee
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnMargin.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the getColumnMargin() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getColumnMargin implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+
+ // the default is 1
+ harness.check(m1.getColumnMargin(), 1);
+
+ // try another setting
+ m1.setColumnMargin(123);
+ harness.check(m1.getColumnMargin(), 123);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnModelListeners.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnModelListeners.java
new file mode 100644
index 00000000..7e7ddc01
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnModelListeners.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.4
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+* Some tests for the getColumnModelListeners() method in the
+* {@link DefaultTableColumnModel} class.
+*/
+public class getColumnModelListeners implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumnModelListener[] listeners = m1.getColumnModelListeners();
+ harness.check(listeners.length, 0);
+
+ TableColumnModelListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ listeners = m1.getColumnModelListeners();
+ harness.check(listeners[0], listener);
+
+ TableColumnModelListener listener2 = new MyListener();
+ m1.addColumnModelListener(listener2);
+ listeners = m1.getColumnModelListeners();
+ // convert to a list, because the spec doesn't say anything about the
+ // order of the listeners
+ List list = Arrays.asList(listeners);
+ harness.check(list.contains(listener));
+ harness.check(list.contains(listener2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnSelectionAllowed.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnSelectionAllowed.java
new file mode 100644
index 00000000..edcece02
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumnSelectionAllowed.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the getColumnSelectionAllowed() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getColumnSelectionAllowed implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ harness.check(m1.getColumnSelectionAllowed(), false);
+ m1.setColumnSelectionAllowed(true);
+ harness.check(m1.getColumnSelectionAllowed(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumns.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumns.java
new file mode 100644
index 00000000..60ef3dd5
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getColumns.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getColumns() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getColumns implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ Enumeration e = m1.getColumns();
+ harness.check(!e.hasMoreElements());
+
+ TableColumn c0 = new TableColumn(0);
+ TableColumn c1 = new TableColumn(1);
+ TableColumn c2 = new TableColumn(2);
+ c0.setIdentifier("A");
+ c1.setIdentifier("B");
+ c2.setIdentifier("C");
+ m1.addColumn(c0);
+ m1.addColumn(c1);
+ m1.addColumn(c2);
+ e = m1.getColumns();
+ TableColumn c = (TableColumn) e.nextElement();
+ harness.check(c.getIdentifier(), "A");
+ c = (TableColumn) e.nextElement();
+ harness.check(c.getIdentifier(), "B");
+ c = (TableColumn) e.nextElement();
+ harness.check(c.getIdentifier(), "C");
+ harness.check(!e.hasMoreElements());
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java
new file mode 100644
index 00000000..0391bf32
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java
@@ -0,0 +1,79 @@
+// Tags: JDK1.3
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.EventListener;
+
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the getListeners(Class) method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getListeners implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ EventListener[] listeners = m1.getListeners(TableColumnModelListener.class);
+ harness.check(listeners.length, 0);
+
+ TableColumnModelListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ listeners = m1.getListeners(TableColumnModelListener.class);
+ harness.check(listeners[0], listener);
+
+ boolean pass = false;
+ try
+ {
+ listeners = m1.getListeners(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ /* Doesn't compile with 1.5.
+ pass = false;
+ try
+ {
+ listeners = m1.getListeners(String.class);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ */
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectedColumnCount.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectedColumnCount.java
new file mode 100644
index 00000000..82daf08f
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectedColumnCount.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getSelectedColumnCount() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getSelectedColumnCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ harness.check(m1.getSelectedColumnCount(), 0);
+ m1.addColumn(new TableColumn());
+ m1.addColumn(new TableColumn());
+ m1.addColumn(new TableColumn());
+
+ m1.getSelectionModel().setSelectionInterval(1, 2);
+ harness.check(m1.getSelectedColumnCount(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectionModel.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectionModel.java
new file mode 100644
index 00000000..eb011e6e
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getSelectionModel.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the getSelectionModel() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class getSelectionModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness. #
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ ListSelectionModel lsm = new DefaultListSelectionModel();
+ m1.setSelectionModel(lsm);
+ harness.check(m1.getSelectionModel(), lsm);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getTotalColumnWidth.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getTotalColumnWidth.java
new file mode 100644
index 00000000..f46f33ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getTotalColumnWidth.java
@@ -0,0 +1,53 @@
+/* getTotalColumnWidth.java -- some checks for the getTotalColumnWidth() method
+ in the DefaultTableColumnModel class.
+ Copyright (C) 2006 by David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+public class getTotalColumnWidth implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m = new DefaultTableColumnModel();
+ harness.check(m.getTotalColumnWidth(), 0);
+ TableColumn c1 = new TableColumn(0, 9);
+ m.addColumn(c1);
+ harness.check(m.getTotalColumnWidth(), 9);
+ TableColumn c2 = new TableColumn(1, 12);
+ m.addColumn(c2);
+ harness.check(m.getTotalColumnWidth(), 21);
+
+ // column margin is not included
+ m.setColumnMargin(5);
+ harness.check(m.getTotalColumnWidth(), 21);
+
+ c1.setWidth(99);
+ harness.check(m.getTotalColumnWidth(), 111);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java
new file mode 100644
index 00000000..8e7769c8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/moveColumn.java
@@ -0,0 +1,158 @@
+// Tags: JDK1.2
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the moveColumn() method in the {@link DefaultTableColumnModel}
+ * class.
+ */
+public class moveColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testSpecial(harness);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("moveColumn(int, int) - General");
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ m1.addColumn(new TableColumn(1, 23));
+ m1.addColumn(new TableColumn(2, 34));
+ m1.addColumn(new TableColumn(3, 45));
+ m1.addColumn(new TableColumn(4, 56));
+
+ m1.moveColumn(1, 3);
+ TableColumn tc0 = m1.getColumn(0);
+ TableColumn tc1 = m1.getColumn(1);
+ TableColumn tc2 = m1.getColumn(2);
+ TableColumn tc3 = m1.getColumn(3);
+ harness.check(tc0.getWidth(), 23);
+ harness.check(tc1.getWidth(), 45);
+ harness.check(tc2.getWidth(), 56);
+ harness.check(tc3.getWidth(), 34);
+
+ // check that moving a column sends the correct event
+ MyListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ m1.moveColumn(0, 1);
+ harness.check(listener.getEvent() != null);
+ harness.check(listener.getEvent().getFromIndex(), 0);
+ harness.check(listener.getEvent().getToIndex(), 1);
+
+ }
+
+ public void testSpecial(TestHarness harness)
+ {
+ harness.checkPoint("moveColumn(int, int) - Special");
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ m1.addColumn(new TableColumn(1, 23));
+ m1.addColumn(new TableColumn(2, 34));
+ m1.addColumn(new TableColumn(3, 45));
+ m1.addColumn(new TableColumn(4, 56));
+
+ // check from index == to index
+ MyListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ m1.moveColumn(1, 1);
+ TableColumn tc0 = m1.getColumn(0);
+ TableColumn tc1 = m1.getColumn(1);
+ TableColumn tc2 = m1.getColumn(2);
+ TableColumn tc3 = m1.getColumn(3);
+ harness.check(tc0.getWidth(), 23);
+ harness.check(tc1.getWidth(), 34);
+ harness.check(tc2.getWidth(), 45);
+ harness.check(tc3.getWidth(), 56);
+ harness.check(listener.getEvent() != null);
+ harness.check(listener.getEvent().getFromIndex(), 1);
+ harness.check(listener.getEvent().getToIndex(), 1);
+
+ // check negative from index
+ boolean pass = false;
+ try
+ {
+ m1.moveColumn(-1, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check negative to index
+ pass = false;
+ try
+ {
+ m1.moveColumn(0, -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check from index too large
+ pass = false;
+ try
+ {
+ m1.moveColumn(4, 3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check to index too large
+ pass = false;
+ try
+ {
+ m1.moveColumn(3, 4);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // check too index == last position
+ m1.moveColumn(0, 3);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java
new file mode 100644
index 00000000..63fc837a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/removeColumn.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+// Uses: MyListener
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the removeColumn() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class removeColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ TableColumn c0 = new TableColumn(0, 23);
+ TableColumn c1 = new TableColumn(1, 34);
+ TableColumn c2 = new TableColumn(2, 45);
+ m1.addColumn(c0);
+ m1.addColumn(c1);
+ m1.addColumn(c2);
+
+ m1.removeColumn(c1);
+ harness.check(m1.getColumnCount(), 2);
+ harness.check(c1.getPropertyChangeListeners().length, 0);
+
+ // remove a column that isn't there
+ TableColumn c3 = new TableColumn(3, 99);
+ m1.removeColumn(c3);
+ harness.check(m1.getColumnCount(), 2);
+
+ // remove a null column
+ m1.removeColumn(null);
+ harness.check(m1.getColumnCount(), 2);
+
+ // check that removing a column sends the correct event
+ MyListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ m1.removeColumn(c0);
+ harness.check(listener.getEvent() != null);
+ harness.check(listener.getEvent().getFromIndex(), 0);
+ harness.check(listener.getEvent().getToIndex(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnMargin.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnMargin.java
new file mode 100644
index 00000000..1cd7c122
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnMargin.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: MyListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the setColumnMargin(int) method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class setColumnMargin implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ MyListener listener = new MyListener();
+ m1.addColumnModelListener(listener);
+ m1.setColumnMargin(123);
+ harness.check(m1.getColumnMargin(), 123);
+ ChangeEvent e = listener.getChangeEvent();
+ harness.check(e != null);
+ harness.check(e.getSource(), m1);
+
+ // try a negative value
+ m1.setColumnMargin(-99);
+ harness.check(m1.getColumnMargin(), -99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnSelectionAllowed.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnSelectionAllowed.java
new file mode 100644
index 00000000..f3a1b163
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setColumnSelectionAllowed.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the setColumnSelectionAllowed(boolean) method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class setColumnSelectionAllowed implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ m1.setColumnSelectionAllowed(true);
+ harness.check(m1.getColumnSelectionAllowed(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setSelectionModel.java b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setSelectionModel.java
new file mode 100644
index 00000000..baf0189f
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableColumnModel/setSelectionModel.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableColumnModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+/**
+ * Some tests for the setSelectionModel() method in the
+ * {@link DefaultTableColumnModel} class.
+ */
+public class setSelectionModel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableColumnModel m1 = new DefaultTableColumnModel();
+ DefaultListSelectionModel lsm = new DefaultListSelectionModel();
+ m1.setSelectionModel(lsm);
+ harness.check(m1.getSelectionModel(), lsm);
+ ListSelectionListener[] listeners = lsm.getListSelectionListeners();
+ harness.check(listeners[0], m1);
+
+ DefaultListSelectionModel lsm2 = new DefaultListSelectionModel();
+ m1.setSelectionModel(lsm2);
+ harness.check(m1.getSelectionModel(), lsm2);
+ listeners = lsm.getListSelectionListeners();
+ harness.check(listeners.length, 0);
+
+ boolean pass = false;
+ try
+ {
+ m1.setSelectionModel(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Entries b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Entries
new file mode 100644
index 00000000..344c3267
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Entries
@@ -0,0 +1,23 @@
+/MyDefaultTableModel.java/1.1/Tue Jan 4 22:18:09 2005//
+/MyTableModelListener.java/1.1/Tue Jan 4 22:18:09 2005//
+/addColumn.java/1.3/Fri Jun 24 16:13:52 2005//
+/addRow.java/1.2/Fri Jun 24 16:13:52 2005//
+/constructors.java/1.2/Sun Jun 19 20:45:08 2005//
+/convertToVector.java/1.2/Thu Apr 28 07:39:49 2005//
+/getColumnCount.java/1.1/Tue Jan 4 22:18:09 2005//
+/getColumnName.java/1.2/Sun Jun 19 20:45:08 2005//
+/getDataVector.java/1.1/Tue Jan 4 22:18:09 2005//
+/getRowCount.java/1.1/Tue Jan 4 22:18:09 2005//
+/getValueAt.java/1.1/Tue Jan 4 22:18:09 2005//
+/insertRow.java/1.2/Fri Jun 24 16:13:52 2005//
+/isCellEditable.java/1.1/Tue Jan 4 22:18:09 2005//
+/moveRow.java/1.2/Fri Jun 24 16:13:52 2005//
+/newDataAvailable.java/1.1/Tue Jan 4 22:18:09 2005//
+/removeRow.java/1.1/Tue Jan 4 22:18:09 2005//
+/rowsRemoved.java/1.1/Tue Jan 4 22:18:09 2005//
+/setColumnCount.java/1.3/Fri Jun 24 16:13:52 2005//
+/setColumnIdentifiers.java/1.3/Fri Jun 24 16:13:52 2005//
+/setDataVector.java/1.3/Fri Jun 24 16:13:52 2005//
+/setRowCount.java/1.2/Fri Jun 24 16:13:52 2005//
+/setValueAt.java/1.1/Tue Jan 4 22:18:09 2005//
+D
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Repository b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Repository
new file mode 100644
index 00000000..83c081cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/DefaultTableModel
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Root b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/MyDefaultTableModel.java b/gnu/testlet/javax/swing/table/DefaultTableModel/MyDefaultTableModel.java
new file mode 100644
index 00000000..7dd9a8e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/MyDefaultTableModel.java
@@ -0,0 +1,43 @@
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import java.util.Vector;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * This class provides access to protected methods for testing.
+ */
+public class MyDefaultTableModel extends DefaultTableModel {
+
+ public MyDefaultTableModel()
+ {
+ }
+
+ public static Vector convertToVector(Object[] anArray)
+ {
+ return DefaultTableModel.convertToVector(anArray);
+ }
+
+ public static Vector convertToVector(Object[][] anArray)
+ {
+ return DefaultTableModel.convertToVector(anArray);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/MyTableModelListener.java b/gnu/testlet/javax/swing/table/DefaultTableModel/MyTableModelListener.java
new file mode 100644
index 00000000..80c38170
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/MyTableModelListener.java
@@ -0,0 +1,49 @@
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+
+/**
+ * A listener that captures a TableModelEvent for testing purposes.
+ */
+public class MyTableModelListener implements TableModelListener
+{
+ private TableModelEvent event;
+
+ public MyTableModelListener()
+ {
+ this.event = null;
+ }
+
+ public TableModelEvent getEvent()
+ {
+ return this.event;
+ }
+
+ public void setEvent(TableModelEvent event)
+ {
+ this.event = event;
+ }
+
+ public void tableChanged(TableModelEvent event)
+ {
+ this.event = event;
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java b/gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java
new file mode 100644
index 00000000..92d53453
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/addColumn.java
@@ -0,0 +1,213 @@
+// Tags: JDK1.2
+// Uses: MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the addColumn() methods in the {@link DefaultTableModel}
+ * class.
+ */
+public class addColumn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testAddColumn1(harness);
+ testAddColumn2(harness);
+ testAddColumn3(harness);
+ }
+
+ private void testAddColumn1(TestHarness harness)
+ {
+ harness.checkPoint("addColumn(Object)");
+ DefaultTableModel m1 = new DefaultTableModel();
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.addColumn("C1");
+ harness.check(m1.getColumnCount(), 1); // 1
+ harness.check(m1.getColumnName(0), "C1"); // 2
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE); // 3
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+
+ // null argument is permitted in JDK 1.4 (see bug report 4474094)
+ boolean pass = true;
+ try
+ {
+ m1.addColumn(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ }
+
+ private void testAddColumn2(TestHarness harness)
+ {
+ harness.checkPoint("addColumn(Object, Vector)");
+
+ // correct number of data values
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ Vector columnData1 = new Vector();
+ columnData1.add("V1");
+ columnData1.add("V2");
+ m1.addColumn("C4", columnData1);
+ harness.check(m1.getColumnCount(), 4); // 1
+ harness.check(m1.getColumnName(3), "C4"); // 2
+ harness.check(m1.getValueAt(0, 3), "V1"); // 3
+ harness.check(m1.getValueAt(1, 3), "V2"); // 4
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE); // 5
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS); // 6
+ harness.check(event.getFirstRow(), -1); // 7
+ harness.check(event.getLastRow(), -1); // 8
+
+ // too few data values
+ DefaultTableModel m2 = new DefaultTableModel(2, 3);
+ MyTableModelListener listener2 = new MyTableModelListener();
+ m2.addTableModelListener(listener2);
+ Vector columnData2 = new Vector();
+ columnData2.add("V1");
+ m2.addColumn("C4", columnData2);
+ harness.check(m2.getColumnCount(), 4); // 9
+ harness.check(m2.getColumnName(3), "C4"); // 10
+ harness.check(m2.getValueAt(0, 3), "V1"); // 11
+ harness.check(m2.getValueAt(1, 3), null); // 12
+ event = listener2.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+
+ // too many data values
+ DefaultTableModel m3 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 2);
+ Vector columnData3 = new Vector();
+ columnData3.add("V1");
+ columnData3.add("V2");
+ columnData3.add("V3");
+ m3.addColumn("C4", columnData3);
+ harness.check(m3.getColumnCount(), 4); // 13
+ harness.check(m3.getColumnName(3), "C4"); // 14
+ harness.check(m3.getValueAt(0, 3), "V1"); // 15
+ harness.check(m3.getValueAt(1, 3), "V2"); // 16
+
+ harness.check(m3.getValueAt(2, 3), "V3"); // 17
+ harness.check(m3.getValueAt(2, 2), null); // 18
+
+ // null column name argument is permitted in JDK 1.4
+ // (see bug report 4474094)
+ boolean pass = true;
+ try
+ {
+ m1.addColumn(null, new Vector());
+ }
+ catch (RuntimeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // null data values
+ DefaultTableModel m4 = new DefaultTableModel();
+ m4.addColumn("C1", (Vector) null);
+ harness.check(m4.getColumnName(0), "C1");
+ harness.check(m4.getRowCount(), 0);
+ }
+
+ private void testAddColumn3(TestHarness harness)
+ {
+ harness.checkPoint("addColumn(Object, Object[])");
+
+ // correct number of data values
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ Object[] columnData1 = new Object[2];
+ columnData1[0] = "V1";
+ columnData1[1] = "V2";
+ m1.addColumn("C4", columnData1);
+ harness.check(m1.getColumnCount(), 4); // 1
+ harness.check(m1.getColumnName(3), "C4"); // 2
+ harness.check(m1.getValueAt(0, 3), "V1"); // 3
+ harness.check(m1.getValueAt(1, 3), "V2"); // 4
+
+ // too few data values
+ DefaultTableModel m2 = new DefaultTableModel(2, 3);
+ Object[] columnData2 = new Object[1];
+ columnData2[0] = "V1";
+ m2.addColumn("C4", columnData2);
+ harness.check(m2.getColumnCount(), 4); // 5
+ harness.check(m2.getColumnName(3), "C4"); // 6
+ harness.check(m2.getValueAt(0, 3), "V1"); // 7
+ harness.check(m2.getValueAt(1, 3), null); // 8
+
+ // too many data values
+ DefaultTableModel m3 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 2);
+ Object[] columnData3 = new Object[3];
+ columnData3[0] = "V1";
+ columnData3[1] = "V2";
+ columnData3[2] = "V3";
+ m3.addColumn("C4", columnData3);
+ harness.check(m3.getColumnCount(), 4); // 9
+ harness.check(m3.getColumnName(3), "C4"); // 10
+ harness.check(m3.getValueAt(0, 3), "V1"); // 11
+ harness.check(m3.getValueAt(1, 3), "V2"); // 12
+ harness.check(m3.getValueAt(2, 3), "V3"); // 13
+ harness.check(m3.getValueAt(2, 2), null); // 14
+
+ // null column name argument is permitted in JDK 1.4
+ // (see bug report 4474094)
+ boolean pass = true;
+ try
+ {
+ m1.addColumn(null, new Vector());
+ }
+ catch (RuntimeException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // null data values
+ DefaultTableModel m4 = new DefaultTableModel();
+ m4.addColumn("C1", (Object[]) null);
+ harness.check(m4.getColumnName(0), "C1");
+ harness.check(m4.getRowCount(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java b/gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java
new file mode 100644
index 00000000..feed94f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/addRow.java
@@ -0,0 +1,117 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the addRow() methods in the {@link DefaultTableModel} class.
+ */
+public class addRow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testAddRow1(harness);
+ testAddRow2(harness);
+ }
+
+ private void testAddRow1(TestHarness harness)
+ {
+ harness.checkPoint("addRow(Object[])");
+
+ // check case where number of data items matches number of columns
+ DefaultTableModel m1 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 0);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.addRow(new Object[] {"V1", "V2", "V3"});
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getRowCount(), 1);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 0);
+ listener1.setEvent(null);
+
+ // check case where number of data items < number of columns
+ // check case where number of data items > number of columns
+
+ // test null data
+ m1.addRow((Object[]) null);
+ harness.check(m1.getRowCount(), 2);
+ event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 1);
+ harness.check(event.getLastRow(), 1);
+ listener1.setEvent(null);
+ }
+
+ private void testAddRow2(TestHarness harness)
+ {
+ harness.checkPoint("addRow(Vector)");
+
+ // check case where number of data items matches number of columns
+ DefaultTableModel m1 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 0);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ Vector row = new Vector();
+ row.add("V1");
+ row.add("V2");
+ row.add("V3");
+ m1.addRow(row);
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getRowCount(), 1);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 0);
+ listener1.setEvent(null);
+
+ // check case where number of data items < number of columns
+ // check case where number of data items > number of columns
+
+ // test null data
+ m1.addRow((Vector) null);
+ harness.check(m1.getRowCount(), 2);
+ event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 1);
+ harness.check(event.getLastRow(), 1);
+ listener1.setEvent(null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java b/gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java
new file mode 100644
index 00000000..4f445c29
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/constructors.java
@@ -0,0 +1,246 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the constructors in the {@link DefaultTableModel} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableModel()");
+ DefaultTableModel m1 = new DefaultTableModel();
+ harness.check(m1.getRowCount(), 0);
+ harness.check(m1.getColumnCount(), 0);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableModel(int, int)");
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ harness.check(m1.getRowCount(), 2);
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getValueAt(0, 0), null);
+ harness.check(m1.getValueAt(1, 2), null);
+
+ DefaultTableModel m2 = new DefaultTableModel(0, 0);
+ harness.check(m2.getRowCount(), 0);
+ harness.check(m2.getColumnCount(), 0);
+
+ // check negative arguments - the spec doesn't state what should
+ // happen, but an IllegalArgumentException would be most likely.
+ boolean pass = false;
+ try
+ {
+ DefaultTableModel m3 = new DefaultTableModel(-1, 1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ DefaultTableModel m3 = new DefaultTableModel(1, -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableModel(Object[][], Object[])");
+ Object[][] data1 = new Object[2][3];
+ Object[] columns1 = new Object[] { "C1", "C2", "C3" };
+
+ // simple case
+ DefaultTableModel m1 = new DefaultTableModel(data1, columns1);
+ harness.check(m1.getRowCount(), 2); // 1
+ harness.check(m1.getColumnCount(), 3); // 2
+ harness.check(m1.getColumnName(0), "C1"); // 3
+ harness.check(m1.getColumnName(1), "C2"); // 4
+ harness.check(m1.getColumnName(2), "C3"); // 5
+
+ // less column names than required
+ Object[] columns2 = new Object[] { "C1" };
+ DefaultTableModel m2 = new DefaultTableModel(data1, columns2);
+ harness.check(m2.getColumnName(0), "C1"); // 6
+ harness.check(m2.getColumnCount(), 1); // 7
+
+ // more column names than required
+ Object[] columns3 = new Object[] { "C1", "C2", "C3", "C4" };
+ DefaultTableModel m3 = new DefaultTableModel(data1, columns3);
+ harness.check(m3.getColumnCount(), 4);
+ harness.check(m3.getColumnName(0), "C1"); // 8
+ harness.check(m3.getColumnName(1), "C2"); // 9
+ harness.check(m3.getColumnName(2), "C3"); // 10
+ harness.check(m3.getColumnName(3), "C4"); // 11
+
+ // null values for column names
+ Object[] columns4 = new Object[] { null, null, null };
+ DefaultTableModel m4 = new DefaultTableModel(data1, columns4);
+ harness.check(m4.getColumnCount(), 3);
+ harness.check(m4.getColumnName(0), "A"); // 12
+ harness.check(m4.getColumnName(1), "B"); // 13
+ harness.check(m4.getColumnName(2), "C"); // 14
+
+ // null data array - behaviour not specified
+ DefaultTableModel m5 = new DefaultTableModel(null, columns1);
+ harness.check(m5.getDataVector().size(), 0);
+ harness.check(m5.getColumnCount(), 3);
+
+ // null column names array - behaviour not specified
+ DefaultTableModel m6 = new DefaultTableModel(data1, null);
+ harness.check(m6.getColumnCount(), 0);
+
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableModel(Object[], int)");
+ Object[] columns1 = new Object[] { "C1", "C2", "C3" };
+ DefaultTableModel m1 = new DefaultTableModel(columns1, 2);
+ harness.check(m1.getRowCount(), 2); // check 1
+ harness.check(m1.getColumnCount(), 3); // check 2
+ harness.check(m1.getColumnName(0), "C1"); // check 3
+ harness.check(m1.getColumnName(1), "C2"); // check 4
+ harness.check(m1.getColumnName(2), "C3"); // check 5
+
+ // empty column names
+ Object[] columns2 = new Object[] { };
+ DefaultTableModel m2 = new DefaultTableModel(columns2, 2);
+ harness.check(m2.getRowCount(), 2); // check 6
+ harness.check(m2.getColumnCount(), 0); // check 7
+
+ // null column names
+ Object[] columns3 = new Object[] { "C1", null, "C3" };
+ DefaultTableModel m3 = new DefaultTableModel(columns3, 2);
+ harness.check(m3.getRowCount(), 2); // check 8
+ harness.check(m3.getColumnCount(), 3); // check 9
+ harness.check(m3.getColumnName(0), "C1"); // check 10
+ harness.check(m3.getColumnName(1), "B"); // check 11
+ harness.check(m3.getColumnName(2), "C3"); // check 12
+
+ // null array
+ Object[] columns4 = null;
+ DefaultTableModel m4 = new DefaultTableModel(columns4, 2);
+ harness.check(m4.getColumnCount(), 0);
+ harness.check(m4.getRowCount(), 2);
+
+ // negative row count
+ boolean pass = false;
+ try
+ {
+ /*DefaultTableModel m5 =*/ new DefaultTableModel(columns1, -1);
+ }
+ catch (RuntimeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("DefaultTableModel(Vector, int)");
+ Vector columns1 = new Vector();
+ columns1.add("C1");
+ columns1.add("C2");
+ columns1.add("C3");
+ DefaultTableModel m1 = new DefaultTableModel(columns1, 2);
+ harness.check(m1.getRowCount(), 2);
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getColumnName(0), "C1");
+ harness.check(m1.getColumnName(1), "C2");
+ harness.check(m1.getColumnName(2), "C3");
+
+ // empty column names
+ Vector columns2 = new Vector();
+ DefaultTableModel m2 = new DefaultTableModel(columns2, 2);
+ harness.check(m2.getRowCount(), 2);
+ harness.check(m2.getColumnCount(), 0);
+
+ // null column names
+ Vector columns3 = new Vector();
+ columns3.add("C1");
+ columns3.add(null);
+ columns3.add("C3");
+
+ DefaultTableModel m3 = new DefaultTableModel(columns3, 2);
+ harness.check(m3.getRowCount(), 2);
+ harness.check(m3.getColumnCount(), 3);
+ harness.check(m3.getColumnName(0), "C1");
+ harness.check(m3.getColumnName(1), "B");
+ harness.check(m3.getColumnName(2), "C3");
+
+ // null vector
+ Vector columns4 = null;
+ boolean pass = false;
+ try
+ {
+ DefaultTableModel m4 = new DefaultTableModel(columns4, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+
+ // negative row count
+ pass = false;
+ try
+ {
+ DefaultTableModel m5 = new DefaultTableModel(columns1, -1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java b/gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java
new file mode 100644
index 00000000..76b81d9d
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/convertToVector.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.2
+// Uses: MyDefaultTableModel
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the convertToVector() methods in the {@link DefaultTableModel} class.
+ */
+public class convertToVector implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ Object[] data = new Object[] {"X", "Y", null, "Z"};
+ Vector v1 = MyDefaultTableModel.convertToVector(data);
+ harness.check(v1.get(0), "X");
+ harness.check(v1.get(1), "Y");
+ harness.check(v1.get(2), null);
+ harness.check(v1.get(3), "Z");
+
+ Object[] data2 = new Object[] {};
+ Vector v2 = MyDefaultTableModel.convertToVector(data2);
+ harness.check(v2.isEmpty());
+
+ Vector v3 = MyDefaultTableModel.convertToVector((Object[]) null);
+ harness.check(v3 == null);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ Object[] data1 = new Object[] {"X", "Y", null, "Z"};
+ Object[] data2 = new Object[] {"A", "B" };
+ Object[][] data = new Object[2][];
+ data[0] = data1;
+ data[1] = data2;
+ Vector vector = MyDefaultTableModel.convertToVector(data);
+ Vector v1 = (Vector) vector.get(0);
+ harness.check(v1.get(0), "X");
+ harness.check(v1.get(1), "Y");
+ harness.check(v1.get(2), null);
+ harness.check(v1.get(3), "Z");
+ harness.check(v1.size(), 4);
+
+ Vector v2 = (Vector) vector.get(1);
+ harness.check(v2.get(0), "A");
+ harness.check(v2.get(1), "B");
+ harness.check(v2.size(), 2);
+
+ Object[][] data3 = new Object[][] {};
+ Vector v3 = MyDefaultTableModel.convertToVector(data3);
+ harness.check(v3.isEmpty());
+
+ Vector v4 = MyDefaultTableModel.convertToVector((Object[][]) null);
+ harness.check(v4 == null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnCount.java b/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnCount.java
new file mode 100644
index 00000000..a2b90cb0
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnCount.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the getColumnCount() method in the {@link DefaultTableModel} class.
+ */
+public class getColumnCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ harness.check(m1.getColumnCount(), 3);
+ m1.setColumnCount(99);
+ harness.check(m1.getColumnCount(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java b/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java
new file mode 100644
index 00000000..7994e073
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/getColumnName.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the getColumnName() method in the {@link DefaultTableModel}
+ * class.
+ */
+public class getColumnName implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 53);
+ harness.check(m1.getColumnName(0), "A");
+ harness.check(m1.getColumnName(26), "AA");
+ harness.check(m1.getColumnName(52), "BA");
+
+ // negative column index - spec doesn't say what exception is thrown,
+ // so we'll just check for a runtime exception
+ boolean pass = false;
+ try
+ {
+ /*String n =*/ m1.getColumnName(-1);
+ }
+ catch (RuntimeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // column index too large - this should fetch a default column name
+ harness.check(m1.getColumnName(99), "CV");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/getDataVector.java b/gnu/testlet/javax/swing/table/DefaultTableModel/getDataVector.java
new file mode 100644
index 00000000..eaf702f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/getDataVector.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the getDataVector() method in the {@link DefaultTableModel} class.
+ */
+public class getDataVector implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel();
+ Vector v1 = m1.getDataVector();
+ harness.check(v1.isEmpty());
+
+ Object[][] data2 = new Object[2][3];
+ data2[0][0] = "V1";
+ data2[0][1] = "V2";
+ data2[0][2] = "V3";
+ data2[1][0] = "V4";
+ data2[1][1] = "V5";
+ data2[1][2] = "V6";
+ Object[] columns2 = new Object[] { "C1", "C2", "C3" };
+ DefaultTableModel m2 = new DefaultTableModel(data2, columns2);
+ Vector v2 = m2.getDataVector();
+ harness.check(v2.size(), 2);
+ Vector v2a = (Vector) v2.get(0);
+ Vector v2b = (Vector) v2.get(1);
+ harness.check(v2a.get(0), "V1");
+ harness.check(v2a.get(1), "V2");
+ harness.check(v2a.get(2), "V3");
+ harness.check(v2b.get(0), "V4");
+ harness.check(v2b.get(1), "V5");
+ harness.check(v2b.get(2), "V6");
+}
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/getRowCount.java b/gnu/testlet/javax/swing/table/DefaultTableModel/getRowCount.java
new file mode 100644
index 00000000..7b2acc94
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/getRowCount.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the getRowCount() method in the {@link DefaultTableModel} class.
+ */
+public class getRowCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ harness.check(m1.getRowCount(), 2);
+ m1.setRowCount(99);
+ harness.check(m1.getRowCount(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/getValueAt.java b/gnu/testlet/javax/swing/table/DefaultTableModel/getValueAt.java
new file mode 100644
index 00000000..cbdd9171
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/getValueAt.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the getValueAt() method in the {@link DefaultTableModel} class.
+ */
+public class getValueAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 0, 1);
+ m1.setValueAt("V3", 0, 2);
+ m1.setValueAt("V4", 1, 0);
+ m1.setValueAt("V5", 1, 1);
+ m1.setValueAt("V6", 1, 2);
+ harness.check(m1.getValueAt(0, 0), "V1");
+ harness.check(m1.getValueAt(0, 1), "V2");
+ harness.check(m1.getValueAt(0, 2), "V3");
+ harness.check(m1.getValueAt(1, 0), "V4");
+ harness.check(m1.getValueAt(1, 1), "V5");
+ harness.check(m1.getValueAt(1, 2), "V6");
+
+ boolean pass = false;
+ try
+ {
+ m1.getValueAt(-1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.getValueAt(99, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.getValueAt(0, -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.getValueAt(0, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java b/gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java
new file mode 100644
index 00000000..91af6570
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/insertRow.java
@@ -0,0 +1,151 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the insertRow() methods in the {@link DefaultTableModel}
+ * class.
+ */
+public class insertRow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testInsertRow1(harness);
+ testInsertRow2(harness);
+ }
+
+ private void testInsertRow1(TestHarness harness)
+ {
+ harness.checkPoint("insertRow(int, Object[])");
+ DefaultTableModel m1 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 0);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.insertRow(0, new Object[] {"V1", "V2", "V3"});
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getRowCount(), 1);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ listener1.setEvent(null);
+
+ m1.insertRow(0, (Object[]) null);
+ harness.check(m1.getRowCount(), 2);
+ event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 0);
+ listener1.setEvent(null);
+
+ // negative row index
+ boolean pass = false;
+ try
+ {
+ m1.insertRow(-1, (Object[]) null);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // row index too large
+ pass = false;
+ try
+ {
+ m1.insertRow(999, (Object[]) null);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+}
+
+ private void testInsertRow2(TestHarness harness)
+ {
+ harness.checkPoint("insertRow(int, Vector)");
+ Vector v1 = new Vector();
+ v1.add("V1");
+ v1.add("V2");
+ v1.add("V3");
+ DefaultTableModel m1 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 0);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.insertRow(0, v1);
+ harness.check(m1.getColumnCount(), 3);
+ harness.check(m1.getRowCount(), 1);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 0);
+ listener1.setEvent(null);
+
+ m1.insertRow(0, (Vector) null);
+ harness.check(m1.getRowCount(), 2);
+ event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 0);
+ harness.check(event.getLastRow(), 0);
+ listener1.setEvent(null);
+
+ // negative row index
+ boolean pass = false;
+ try
+ {
+ m1.insertRow(-1, (Vector) null);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // row index too large
+ pass = false;
+ try
+ {
+ m1.insertRow(999, (Vector) null);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/isCellEditable.java b/gnu/testlet/javax/swing/table/DefaultTableModel/isCellEditable.java
new file mode 100644
index 00000000..a0c7e6f8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/isCellEditable.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the isCellEditable() method in the {@link DefaultTableModel} class.
+ */
+public class isCellEditable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ harness.check(m1.isCellEditable(-1, -1));
+ harness.check(m1.isCellEditable(0, 0));
+ harness.check(m1.isCellEditable(1, 1));
+ harness.check(m1.isCellEditable(99, 99));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java b/gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java
new file mode 100644
index 00000000..85dc75a7
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/moveRow.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the moveRow() methods in the {@link DefaultTableModel} class.
+ */
+public class moveRow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Object[][] data = new Object[][] {{"A"}, {"B"}, {"C"}, {"D"}, {"E"}, {"F"},
+ {"G"}, {"H"}, {"I"}, {"J"}, {"K"}};
+ DefaultTableModel m1 = new DefaultTableModel(data, new Object[] {"C1"});
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.moveRow(1, 3, 5);
+ harness.check(m1.getValueAt(0, 0), "A");
+ harness.check(m1.getValueAt(1, 0), "E");
+ harness.check(m1.getValueAt(2, 0), "F");
+ harness.check(m1.getValueAt(3, 0), "G");
+ harness.check(m1.getValueAt(4, 0), "H");
+ harness.check(m1.getValueAt(5, 0), "B");
+ harness.check(m1.getValueAt(6, 0), "C");
+ harness.check(m1.getValueAt(7, 0), "D");
+ harness.check(m1.getValueAt(8, 0), "I");
+ harness.check(m1.getValueAt(9, 0), "J");
+ harness.check(m1.getValueAt(10, 0), "K");
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 1);
+ harness.check(event.getLastRow(), 7);
+ listener1.setEvent(null);
+
+ DefaultTableModel m2 = new DefaultTableModel(data, new Object[] {"C1"});
+ m2.moveRow(6, 7, 1);
+ harness.check(m2.getValueAt(0, 0), "A");
+ harness.check(m2.getValueAt(1, 0), "G");
+ harness.check(m2.getValueAt(2, 0), "H");
+ harness.check(m2.getValueAt(3, 0), "B");
+ harness.check(m2.getValueAt(4, 0), "C");
+ harness.check(m2.getValueAt(5, 0), "D");
+ harness.check(m2.getValueAt(6, 0), "E");
+ harness.check(m2.getValueAt(7, 0), "F");
+ harness.check(m2.getValueAt(8, 0), "I");
+ harness.check(m2.getValueAt(9, 0), "J");
+ harness.check(m2.getValueAt(10, 0), "K");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/newDataAvailable.java b/gnu/testlet/javax/swing/table/DefaultTableModel/newDataAvailable.java
new file mode 100644
index 00000000..9ab92623
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/newDataAvailable.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the newDataAvailable() method in the {@link DefaultTableModel} class.
+ */
+public class newDataAvailable implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Object[][] data = new Object[][] {{"A"}, {"B"}, {"C"}};
+ DefaultTableModel m1 = new DefaultTableModel(data, new Object[] {"C1"});
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ TableModelEvent event = new TableModelEvent(m1);
+ m1.newDataAvailable(event);
+ TableModelEvent received = listener1.getEvent();
+ harness.check(received == event);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/removeRow.java b/gnu/testlet/javax/swing/table/DefaultTableModel/removeRow.java
new file mode 100644
index 00000000..48c62310
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/removeRow.java
@@ -0,0 +1,95 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the removeRow() method in the {@link DefaultTableModel} class.
+ */
+public class removeRow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasics(harness);
+ testEvents(harness);
+ }
+
+ public void testBasics(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(3, 1);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 1, 0);
+ m1.setValueAt("V3", 2, 0);
+ m1.removeRow(1);
+ harness.check(m1.getRowCount(), 2); // 1
+ harness.check(m1.getValueAt(0, 0), "V1"); // 2
+ harness.check(m1.getValueAt(1, 0), "V3"); // 3
+
+ boolean pass = false;
+ try
+ {
+ m1.removeRow(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // 4
+
+ pass = false;
+ try
+ {
+ m1.removeRow(99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass); // 5
+ }
+
+ public void testEvents(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(3, 1);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 1, 0);
+ m1.setValueAt("V3", 2, 0);
+ m1.removeRow(2);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getColumn(), -1); // 6
+ harness.check(event.getFirstRow(), 2); // 7
+ harness.check(event.getLastRow(), 2); // 8
+ harness.check(event.getType(), TableModelEvent.DELETE); // 9
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/rowsRemoved.java b/gnu/testlet/javax/swing/table/DefaultTableModel/rowsRemoved.java
new file mode 100644
index 00000000..1b15b92d
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/rowsRemoved.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the rowsRemoved() method in the {@link DefaultTableModel} class.
+ */
+public class rowsRemoved implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ Object[][] data = new Object[][] {{"A"}, {"B"}, {"C"}};
+ DefaultTableModel m1 = new DefaultTableModel(data, new Object[] {"C1"});
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ TableModelEvent event = new TableModelEvent(m1);
+ m1.rowsRemoved(event);
+ TableModelEvent received = listener1.getEvent();
+ harness.check(received == event);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java b/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java
new file mode 100644
index 00000000..5f45e4c5
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnCount.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the setColumnCount() method in the {@link DefaultTableModel}
+ * class.
+ */
+public class setColumnCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasics(harness);
+ testEvents(harness);
+ }
+
+ public void testBasics(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 0, 1);
+ m1.setValueAt("V3", 0, 2);
+ m1.setColumnCount(4);
+ harness.check(m1.getColumnCount(), 4);
+ harness.check(m1.getValueAt(0, 3), null);
+
+ DefaultTableModel m2 = new DefaultTableModel(1, 3);
+ m2.setValueAt("V1", 0, 0);
+ m2.setValueAt("V2", 0, 1);
+ m2.setValueAt("V3", 0, 2);
+ m2.setColumnCount(1);
+ harness.check(m2.getColumnCount(), 1);
+ harness.check(m2.getValueAt(0, 0), "V1");
+
+ // check zero column count - this is permitted
+ m2.setColumnCount(0);
+ harness.check(m2.getColumnCount(), 0);
+
+ // negative column count - the spec doesn't say what exception this should
+ // throw, so we'll just check for a runtime exception
+ DefaultTableModel m3 = new DefaultTableModel();
+ boolean pass = false;
+ try
+ {
+ m3.setColumnCount(-1);
+ }
+ catch (RuntimeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testEvents(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 0, 1);
+ m1.setValueAt("V3", 0, 2);
+ m1.setColumnCount(4);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+
+ DefaultTableModel m2 = new DefaultTableModel(1, 3);
+ MyTableModelListener listener2 = new MyTableModelListener();
+ m2.addTableModelListener(listener2);
+ m2.setValueAt("V1", 0, 0);
+ m2.setValueAt("V2", 0, 1);
+ m2.setValueAt("V3", 0, 2);
+ m2.setColumnCount(1);
+ TableModelEvent event2 = listener2.getEvent();
+ harness.check(event2.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java b/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java
new file mode 100644
index 00000000..3f02f328
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/setColumnIdentifiers.java
@@ -0,0 +1,138 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the setColumnIdentifiers() method in the
+ * {@link DefaultTableModel} class.
+ */
+public class setColumnIdentifiers implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasics1(harness);
+ testBasics2(harness);
+ testEvents1(harness);
+ testEvents2(harness);
+ }
+
+ public void testBasics1(TestHarness harness)
+ {
+ harness.checkPoint("setColumnIdentifiers(Object[])");
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ m1.setColumnIdentifiers(new Object[] {"C1", "C2", "C3"});
+ harness.check(m1.getColumnName(0), "C1"); // 1
+ harness.check(m1.getColumnName(1), "C2"); // 2
+ harness.check(m1.getColumnName(2), "C3"); // 3
+ Vector v1 = m1.getDataVector();
+ Vector v1a = (Vector) v1.get(0);
+ harness.check(v1a.size(), 3); // 4
+
+ m1.setColumnIdentifiers(new Object[] {"SINGLE COLUMN"});
+ harness.check(m1.getColumnCount(), 1); // 5
+ harness.check(m1.getColumnName(0), "SINGLE COLUMN"); // 6
+ Vector v2 = m1.getDataVector();
+ Vector v2a = (Vector) v2.get(0);
+ harness.check(v2a.size(), 1); // 7
+
+ m1.setColumnIdentifiers((Object[]) null);
+ harness.check(m1.getColumnCount(), 0); // 8
+ Vector v3 = m1.getDataVector();
+ Vector v3a = (Vector) v3.get(0);
+ harness.check(v3a.size(), 0);
+ }
+
+ public void testBasics2(TestHarness harness)
+ {
+ harness.checkPoint("setColumnIdentifiers(Vector)");
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ Vector v = new Vector();
+ v.add("C1");
+ v.add("C2");
+ v.add("C3");
+ m1.setColumnIdentifiers(v);
+ harness.check(m1.getColumnName(0), "C1"); // 1
+ harness.check(m1.getColumnName(1), "C2"); // 2
+ harness.check(m1.getColumnName(2), "C3"); // 3
+ Vector v1 = m1.getDataVector();
+ Vector v1a = (Vector) v1.get(0);
+ harness.check(v1a.size(), 3); // 4
+
+ Vector cols2 = new Vector();
+ cols2.add("SINGLE COLUMN");
+ m1.setColumnIdentifiers(cols2);
+ harness.check(m1.getColumnCount(), 1); // 5
+ harness.check(m1.getColumnName(0), "SINGLE COLUMN"); // 6
+ Vector v2 = m1.getDataVector();
+ Vector v2a = (Vector) v2.get(0);
+ harness.check(v2a.size(), 1); // 7
+
+ m1.setColumnIdentifiers((Vector) null);
+ harness.check(m1.getColumnCount(), 0); // 8
+ Vector v3 = m1.getDataVector();
+ Vector v3a = (Vector) v3.get(0);
+ harness.check(v3a.size(), 0);
+ }
+
+ public void testEvents1(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.setColumnIdentifiers(new Object[] {"C1", "C2", "C3"});
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+ }
+
+ public void testEvents2(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(1, 3);
+ Vector v = new Vector();
+ v.add("C1");
+ v.add("C2");
+ v.add("C3");
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.setColumnIdentifiers(v);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java b/gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java
new file mode 100644
index 00000000..3a50a11d
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/setDataVector.java
@@ -0,0 +1,213 @@
+// Tags: JDK1.2
+// Uses: MyTableModelListener
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the setDataVector() methods in the {@link DefaultTableModel}
+ * class.
+ */
+public class setDataVector implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ testEvent(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("setDataVector(Object[][], Object[])");
+ DefaultTableModel m1 = new DefaultTableModel();
+ Object[][] data = new Object[2][3];
+ data[0][0] = "V1";
+ data[0][1] = "V2";
+ data[0][2] = "V3";
+ data[1][0] = "V4";
+ data[1][1] = "V5";
+ data[1][2] = "V6";
+ Object[] columns = new Object[] {"C1", "C2", "C3"};
+ m1.setDataVector(data, columns);
+ harness.check(m1.getValueAt(0, 0), "V1");
+ harness.check(m1.getValueAt(0, 1), "V2");
+ harness.check(m1.getValueAt(0, 2), "V3");
+ harness.check(m1.getValueAt(1, 0), "V4");
+ harness.check(m1.getValueAt(1, 1), "V5");
+ harness.check(m1.getValueAt(1, 2), "V6");
+ harness.check(m1.getColumnName(0), "C1");
+ harness.check(m1.getColumnName(1), "C2");
+ harness.check(m1.getColumnName(2), "C3");
+
+ // do a check for uneven row lengths
+ DefaultTableModel m2 = new DefaultTableModel();
+ Object[][] data2 = new Object[2][];
+ Object[] row1 = new Object[2];
+ row1[0] = "V1";
+ row1[1] = "V2";
+ Object[] row2 = new Object[4];
+ row2[0] = "V3";
+ row2[1] = "V4";
+ row2[2] = "V5";
+ row2[3] = "V6";
+ data2[0] = row1;
+ data2[1] = row2;
+ Object[] columns2 = new Object[] {"C1", "C2", "C3"};
+ m2.setDataVector(data2, columns2);
+ harness.check(m2.getValueAt(0, 0), "V1");
+ harness.check(m2.getValueAt(0, 1), "V2");
+ harness.check(m2.getValueAt(0, 2), null);
+ harness.check(m2.getValueAt(1, 0), "V3");
+ harness.check(m2.getValueAt(1, 1), "V4");
+ harness.check(m2.getValueAt(1, 2), "V5");
+ harness.check(m2.getColumnName(0), "C1");
+ harness.check(m2.getColumnName(1), "C2");
+ harness.check(m2.getColumnName(2), "C3");
+ harness.check(m2.getColumnCount(), 3);
+ harness.check(m2.getRowCount(), 2);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("setDataVector(Vector, Vector)");
+ DefaultTableModel m1 = new DefaultTableModel();
+ Vector v1 = new Vector();
+ v1.add("V1");
+ v1.add("V2");
+ v1.add("V3");
+ Vector v2 = new Vector();
+ v2.add("V4");
+ v2.add("V5");
+ v2.add("V6");
+ Vector v = new Vector();
+ v.add(v1);
+ v.add(v2);
+ Vector columns = new Vector();
+ columns.add("C1");
+ columns.add("C2");
+ columns.add("C3");
+ m1.setDataVector(v, columns);
+ harness.check(m1.getValueAt(0, 0), "V1"); // 1
+ harness.check(m1.getValueAt(0, 1), "V2"); // 2
+ harness.check(m1.getValueAt(0, 2), "V3"); // 3
+ harness.check(m1.getValueAt(1, 0), "V4"); // 4
+ harness.check(m1.getValueAt(1, 1), "V5"); // 5
+ harness.check(m1.getValueAt(1, 2), "V6"); // 6
+ harness.check(m1.getColumnName(0), "C1"); // 7
+ harness.check(m1.getColumnName(1), "C2"); // 8
+ harness.check(m1.getColumnName(2), "C3"); // 9
+
+ // do a check with uneven row lengths
+ DefaultTableModel m2 = new DefaultTableModel();
+ Vector vv1 = new Vector();
+ vv1.add("V1");
+ vv1.add("V2");
+
+ Vector vv2 = new Vector();
+ vv2.add("V3");
+ vv2.add("V4");
+ vv2.add("V5");
+ vv2.add("V6");
+ Vector vv = new Vector();
+ vv.add(vv1);
+ vv.add(vv2);
+ Vector columns2 = new Vector();
+ columns2.add("C1");
+ columns2.add("C2");
+ columns2.add("C3");
+ m2.setDataVector(vv, columns2);
+ harness.check(m2.getValueAt(0, 0), "V1"); // 10
+ harness.check(m2.getValueAt(0, 1), "V2"); // 11
+ harness.check(m2.getValueAt(0, 2), null); // 12
+ harness.check(m2.getValueAt(1, 0), "V3"); // 13
+ harness.check(m2.getValueAt(1, 1), "V4"); // 14
+ harness.check(m2.getValueAt(1, 2), "V5"); // 15
+ harness.check(m2.getColumnName(0), "C1"); // 16
+ harness.check(m2.getColumnName(1), "C2"); // 17
+ harness.check(m2.getColumnName(2), "C3"); // 18
+ Vector data = m2.getDataVector();
+ Vector r1 = (Vector) data.get(0);
+ harness.check(r1.size(), 3); // 19
+ Vector r2 = (Vector) data.get(1);
+ harness.check(r2.size(), 3); // 20
+
+ // test null data vector - spec says
+ // "unspecified behavior, an possibly an exception."
+ // According to bug 4348070, JDK 1.3 throws an IllegalArgumentException
+ // and JDK 1.4 doesn't throw any exception.
+ // we check for column count matching the supplied column names which would
+ // be the result of just calling setColumnIdentifiers...
+ DefaultTableModel m3 = new DefaultTableModel();
+ m3.setDataVector((Vector) null, columns2);
+ harness.check(m3.getColumnCount(), 3); // 21
+ harness.check(m3.getDataVector().size(), 0);
+
+ // test null column names - it is not specified what should happen here,
+ // but we can probably assume the same behaviour as in setColumnIdentifiers,
+ // which is to set a zero-column model
+ DefaultTableModel m4 = new DefaultTableModel(2, 3);
+ m4.setDataVector(vv, null);
+ harness.check(m4.getColumnCount(), 0); // 22
+ }
+
+ public void testEvent(TestHarness harness)
+ {
+ harness.checkPoint("Check TableModelEvent");
+ DefaultTableModel m = new DefaultTableModel();
+ MyTableModelListener listener = new MyTableModelListener();
+ m.addTableModelListener(listener);
+ Vector v1 = new Vector();
+ v1.add("V1");
+ v1.add("V2");
+ v1.add("V3");
+ Vector v2 = new Vector();
+ v2.add("V4");
+ v2.add("V5");
+ v2.add("V6");
+ Vector v = new Vector();
+ v.add(v1);
+ v.add(v2);
+ Vector columns = new Vector();
+ columns.add("C1");
+ columns.add("C2");
+ columns.add("C3");
+ m.setDataVector(v, columns);
+ TableModelEvent event = listener.getEvent();
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), -1);
+ harness.check(event.getLastRow(), -1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java b/gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java
new file mode 100644
index 00000000..c86b029b
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/setRowCount.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the setRowCount() method in the {@link DefaultTableModel}
+ * class.
+ */
+public class setRowCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasics(harness);
+ testEvents(harness);
+ }
+
+ public void testBasics(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(
+ new Object[] {"C1", "C2", "C3"}, 3);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 1, 0);
+ m1.setValueAt("V3", 2, 0);
+ m1.setRowCount(4);
+ harness.check(m1.getRowCount(), 4);
+ harness.check(m1.getValueAt(3, 0), null);
+
+ DefaultTableModel m2 = new DefaultTableModel(3, 1);
+ m2.setValueAt("V1", 0, 0);
+ m2.setValueAt("V2", 1, 0);
+ m2.setValueAt("V3", 2, 0);
+ m2.setRowCount(4);
+ harness.check(m2.getRowCount(), 4);
+ harness.check(m2.getValueAt(0, 0), "V1");
+
+ // negative row count - the spec doesn't say what exception this should
+ // throw, so we'll just check for a runtime exception
+ DefaultTableModel m3 = new DefaultTableModel();
+ boolean pass = false;
+ try
+ {
+ m3.setRowCount(-1);
+ }
+ catch (RuntimeException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testEvents(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(3, 1);
+ MyTableModelListener listener1 = new MyTableModelListener();
+ m1.addTableModelListener(listener1);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 1, 0);
+ m1.setValueAt("V3", 2, 0);
+ m1.setRowCount(5);
+ TableModelEvent event = listener1.getEvent();
+ harness.check(event.getType(), TableModelEvent.INSERT);
+ harness.check(event.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event.getFirstRow(), 3);
+ harness.check(event.getLastRow(), 4);
+
+ DefaultTableModel m2 = new DefaultTableModel(3, 1);
+ MyTableModelListener listener2 = new MyTableModelListener();
+ m2.addTableModelListener(listener2);
+ m2.setValueAt("V1", 0, 0);
+ m2.setValueAt("V2", 1, 0);
+ m2.setValueAt("V3", 2, 0);
+ m2.setRowCount(1);
+ TableModelEvent event2 = listener2.getEvent();
+ harness.check(event2.getType(), TableModelEvent.DELETE);
+ harness.check(event2.getColumn(), TableModelEvent.ALL_COLUMNS);
+ harness.check(event2.getFirstRow(), 1);
+ harness.check(event2.getLastRow(), 2);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/DefaultTableModel/setValueAt.java b/gnu/testlet/javax/swing/table/DefaultTableModel/setValueAt.java
new file mode 100644
index 00000000..4a210607
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/DefaultTableModel/setValueAt.java
@@ -0,0 +1,119 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.DefaultTableModel;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.DefaultTableModel;
+
+/**
+ * Some tests for the setValueAt() method in the {@link DefaultTableModel} class.
+ */
+public class setValueAt implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testBasics(harness);
+ testEvents(harness);
+ }
+
+ public void testBasics(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ m1.setValueAt("V1", 0, 0);
+ m1.setValueAt("V2", 0, 1);
+ m1.setValueAt("V3", 0, 2);
+ m1.setValueAt(null, 1, 0);
+ m1.setValueAt("V5", 1, 1);
+ m1.setValueAt("V6", 1, 2);
+ harness.check(m1.getValueAt(0, 0), "V1");
+ harness.check(m1.getValueAt(0, 1), "V2");
+ harness.check(m1.getValueAt(0, 2), "V3");
+ harness.check(m1.getValueAt(1, 0), null);
+ harness.check(m1.getValueAt(1, 1), "V5");
+ harness.check(m1.getValueAt(1, 2), "V6");
+
+ boolean pass = false;
+ try
+ {
+ m1.setValueAt("X", -1, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.setValueAt("X", 99, 0);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.setValueAt("X", 0, -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ m1.setValueAt("X", 0, 99);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testEvents(TestHarness harness)
+ {
+ DefaultTableModel m1 = new DefaultTableModel(2, 3);
+ MyTableModelListener listener = new MyTableModelListener();
+ m1.addTableModelListener(listener);
+ m1.setValueAt("V1", 1, 0);
+ TableModelEvent event = listener.getEvent();
+ harness.check(event.getColumn(), 0);
+ harness.check(event.getFirstRow(), 1);
+ harness.check(event.getLastRow(), 1);
+ harness.check(event.getType(), TableModelEvent.UPDATE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Entries b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Entries
new file mode 100644
index 00000000..cc8350e9
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Entries
@@ -0,0 +1,18 @@
+/MyTableCellRenderer.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleChild.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleChildrenCount.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleComponent.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleContext.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleDescription.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleIndexInParent.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleName.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleRole.java/1.2/Wed May 21 13:30:50 2008//
+/getAccessibleValue.java/1.2/Wed May 21 13:30:50 2008//
+/getBackground.java/1.2/Wed May 21 13:30:50 2008//
+/getFont.java/1.2/Wed May 21 13:30:50 2008//
+/getForeground.java/1.2/Wed May 21 13:30:50 2008//
+/getLocale.java/1.2/Wed May 21 13:30:50 2008//
+/isFocusTraversable.java/1.2/Wed May 21 13:30:50 2008//
+/isVisible.java/1.2/Wed May 21 13:30:50 2008//
+/setAccessibleName.java/1.1/Wed Jun 7 22:51:54 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Repository b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Repository
new file mode 100644
index 00000000..57b12a7f
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Root b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/MyTableCellRenderer.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/MyTableCellRenderer.java
new file mode 100644
index 00000000..052cc8c3
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/MyTableCellRenderer.java
@@ -0,0 +1,57 @@
+/* MyTableCellRenderer.java -- test helper class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import java.awt.Color;
+import java.awt.Component;
+
+import javax.swing.JButton;
+import javax.swing.JTable;
+import javax.swing.table.TableCellRenderer;
+
+public class MyTableCellRenderer
+ extends JButton
+ implements TableCellRenderer
+{
+
+ private Color bgColor;
+
+ public void setBGColor(Color c)
+ {
+ bgColor = c;
+ }
+
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
+ {
+ if (bgColor != null)
+ setBackground(bgColor);
+ return this;
+ }
+
+ public boolean isFocusTraversable()
+ {
+ return false;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChild.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChild.java
new file mode 100644
index 00000000..75760338
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChild.java
@@ -0,0 +1,52 @@
+/* getAccessibleChild.java -- some checks for the getAccessibleChild() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleChild(0), null);
+ harness.check(ac0ac.getAccessibleChild(-1), null);
+ harness.check(ac0ac.getAccessibleChild(99), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChildrenCount.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChildrenCount.java
new file mode 100644
index 00000000..339c19c8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleChildrenCount.java
@@ -0,0 +1,51 @@
+/* getAccessibleChildrenCount.java -- some checks for the
+ getAccessibleChildrenCount() method in the AccessibleJTableHeaderEntry
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleChildrenCount implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleChildrenCount(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleComponent.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleComponent.java
new file mode 100644
index 00000000..760f6d93
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleComponent.java
@@ -0,0 +1,51 @@
+/* getAccessibleComponent.java -- some checks for the getAccessibleComponent()
+ method in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleComponent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac0, ac0ac);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleContext.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleContext.java
new file mode 100644
index 00000000..b05a5a49
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleContext.java
@@ -0,0 +1,50 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleContext implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0, ac0ac);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleDescription.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleDescription.java
new file mode 100644
index 00000000..5b130d88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleDescription.java
@@ -0,0 +1,53 @@
+/* getAccessibleDescription.java -- some checks for the
+ getAccessibleDescription() method in the AccessibleJTableHeaderEntry
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleDescription implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleDescription(), null);
+ ac0ac.setAccessibleDescription("AAx");
+ harness.check(ac0ac.getAccessibleDescription(), "AAx");
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleIndexInParent.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleIndexInParent.java
new file mode 100644
index 00000000..303ad807
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleIndexInParent.java
@@ -0,0 +1,56 @@
+/* getAccessibleIndexInParent.java -- some checks for the
+ getAccessibleIndexInParent() method in the AccessibleJTableHeaderEntry
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleIndexInParent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleIndexInParent(), 0);
+
+ Accessible ac2 = ac.getAccessibleChild(2);
+ harness.check(ac2.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac2ac = ac2.getAccessibleContext();
+ harness.check(ac2ac.getAccessibleIndexInParent(), 2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleName.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleName.java
new file mode 100644
index 00000000..436a962a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleName.java
@@ -0,0 +1,52 @@
+/* getAccessibleName.java -- some checks for the getAccessibleName() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleName implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleName(), "AA");
+ ac0ac.setAccessibleName("AAx");
+ harness.check(ac0ac.getAccessibleName(), "AAx");
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java
new file mode 100644
index 00000000..0d4a494b
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleRole.java
@@ -0,0 +1,58 @@
+/* getAccessibleRole.java -- some checks for the getAccessibleRole() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleRole implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleRole(), AccessibleRole.LABEL);
+
+ t.getColumnModel().getColumn(1).setHeaderRenderer(new MyTableCellRenderer());
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac1ac = ac1.getAccessibleContext();
+ harness.check(ac1ac.getAccessibleRole(), AccessibleRole.PUSH_BUTTON);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java
new file mode 100644
index 00000000..96cda06c
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getAccessibleValue.java
@@ -0,0 +1,59 @@
+/* getAccessibleValue.java -- some checks for the getAccessibleValue() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleValue;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getAccessibleValue implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleValue ac0av = ac0.getAccessibleContext().getAccessibleValue();
+ harness.check(ac0av, null);
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleValue ac1av = ac1.getAccessibleContext().getAccessibleValue();
+ harness.check(ac1av, r.getAccessibleContext().getAccessibleValue());
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java
new file mode 100644
index 00000000..2524e595
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getBackground.java
@@ -0,0 +1,64 @@
+/* getBackground.java -- some checks for the getBackground() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getBackground implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ JLabel label = new JLabel("Just to get the background");
+ harness.check(ac0ac.getBackground(), label.getBackground());
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ r.setBackground(Color.yellow);
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac1ac = ac1.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac1ac.getBackground(), Color.yellow);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java
new file mode 100644
index 00000000..4940e676
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getFont.java
@@ -0,0 +1,64 @@
+/* getFont.java -- some checks for the getFont() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getFont implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ DefaultTableCellRenderer r0 = new DefaultTableCellRenderer();
+ harness.check(ac0ac.getFont(), r0.getFont());
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ r.setFont(new Font("Dialog", Font.BOLD, 15));
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac1ac = ac1.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac1ac.getFont(), new Font("Dialog", Font.BOLD, 15));
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java
new file mode 100644
index 00000000..4418a5a8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getForeground.java
@@ -0,0 +1,64 @@
+/* getForeground.java -- some checks for the getForeground() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getForeground implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ JLabel label = new JLabel("Just to get the foreground");
+ harness.check(ac0ac.getForeground(), label.getForeground());
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ r.setForeground(Color.yellow);
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac1ac = ac1.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac1ac.getForeground(), Color.yellow);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java
new file mode 100644
index 00000000..1d782de5
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/getLocale.java
@@ -0,0 +1,63 @@
+/* getLocale.java -- some checks for the getLocale() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Locale;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+
+public class getLocale implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ JLabel label = new JLabel("Just to get the locale");
+ harness.check(ac0ac.getLocale(), label.getLocale());
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ r.setLocale(Locale.CHINA);
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac1ac = ac1.getAccessibleContext();
+ harness.check(ac1ac.getLocale(), Locale.CHINA);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java
new file mode 100644
index 00000000..96a5df7a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isFocusTraversable.java
@@ -0,0 +1,58 @@
+/* isFocusTraversable.java -- some checks for the isFocusTraversable() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class isFocusTraversable implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac0ac.isFocusTraversable(), true);
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac1ac = ac1.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac1ac.isFocusTraversable(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java
new file mode 100644
index 00000000..e48286f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/isVisible.java
@@ -0,0 +1,59 @@
+/* isVisible.java -- some checks for the isVisible() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: MyTableCellRenderer
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class isVisible implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac0ac = ac0.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac0ac.isVisible(), true);
+
+ MyTableCellRenderer r = new MyTableCellRenderer();
+ r.setVisible(false);
+ t.getColumnModel().getColumn(1).setHeaderRenderer(r);
+ Accessible ac1 = ac.getAccessibleChild(1);
+ harness.check(ac1.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleComponent ac1ac = ac1.getAccessibleContext().getAccessibleComponent();
+ harness.check(ac1ac.isVisible(), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/setAccessibleName.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/setAccessibleName.java
new file mode 100644
index 00000000..55d957de
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/AccessibleJTableHeaderEntry/setAccessibleName.java
@@ -0,0 +1,70 @@
+/* setAccessibleName.java -- some checks for the setAccessibleName() method
+ in the AccessibleJTableHeaderEntry class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader.AccessibleJTableHeaderEntry;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class setAccessibleName implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB",
+ "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ AccessibleContext ac0ac = ac0.getAccessibleContext();
+ harness.check(ac0ac.getAccessibleName(), "AA");
+ ac0ac.addPropertyChangeListener(this);
+ ac0ac.setAccessibleName("AAx");
+ harness.check(ac0ac.getAccessibleName(), "AAx");
+ harness.check(events.size(), 1);
+ PropertyChangeEvent pce = (PropertyChangeEvent) events.get(0);
+ harness.check(pce.getPropertyName(), AccessibleContext.ACCESSIBLE_NAME_PROPERTY);
+ harness.check(pce.getOldValue(), null);
+ harness.check(pce.getNewValue(), "AAx");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries
new file mode 100644
index 00000000..f33b799d
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries
@@ -0,0 +1,4 @@
+/getAccessibleChild.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleChildrenCount.java/1.1/Wed Jun 7 22:51:54 2006//
+/getAccessibleRole.java/1.1/Wed Jun 7 22:51:54 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries.Log b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries.Log
new file mode 100644
index 00000000..554e0d98
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJTableHeaderEntry////
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Repository b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Repository
new file mode 100644
index 00000000..d0542534
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Root b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChild.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChild.java
new file mode 100644
index 00000000..fba2b3ab
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChild.java
@@ -0,0 +1,49 @@
+/* getAccessibleChild.java -- some checks for the getAccessibleChild()
+ method in the AccessibleJTableHeader class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class getAccessibleChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ Accessible ac0 = ac.getAccessibleChild(0);
+ harness.check(ac0.getClass().getName().endsWith("AccessibleJTableHeaderEntry"));
+ Accessible ac0B = ac.getAccessibleChild(0);
+ harness.check(ac0 != ac0B); // creates new instance every time
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChildrenCount.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChildrenCount.java
new file mode 100644
index 00000000..6dab08ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleChildrenCount.java
@@ -0,0 +1,45 @@
+/* getAccessibleChildrenCount.java -- some checks for the
+ getAccessibleChildrenCount() method in the AccessibleJTableHeader class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class getAccessibleChildrenCount implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ harness.check(ac.getAccessibleChildrenCount(), 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleRole.java b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleRole.java
new file mode 100644
index 00000000..d3acae4a
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/AccessibleJTableHeader/getAccessibleRole.java
@@ -0,0 +1,46 @@
+/* getAccessibleRole.java -- some checks for the getAccessibleRole() method
+ in the AccessibleJTableHeader class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader.AccessibleJTableHeader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+
+public class getAccessibleRole implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTableModel tm = new DefaultTableModel(new String[] {"AA", "BB", "CC"}, 3);
+ JTable t = new JTable(tm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ harness.check(ac.getAccessibleRole(), AccessibleRole.PANEL);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries
new file mode 100644
index 00000000..5f974940
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries
@@ -0,0 +1,2 @@
+/getAccessibleContext.java/1.1/Wed Jun 7 22:51:54 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries.Log b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries.Log
new file mode 100644
index 00000000..821fa760
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/AccessibleJTableHeader////
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/CVS/Repository b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Repository
new file mode 100644
index 00000000..8d1c54aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/JTableHeader
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/CVS/Root b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/JTableHeader/getAccessibleContext.java b/gnu/testlet/javax/swing/table/JTableHeader/getAccessibleContext.java
new file mode 100644
index 00000000..79e5abce
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/JTableHeader/getAccessibleContext.java
@@ -0,0 +1,83 @@
+/* getAccessibleContext.java -- some checks for the getAccessibleContext()
+ method in the JTableHeader class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.JTableHeader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.accessibility.AccessibleComponent;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableColumn;
+
+public class getAccessibleContext implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ JTableHeader th = new JTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), null);
+ harness.check(ac.getAccessibleRole(), AccessibleRole.PANEL);
+ harness.check(ac.getAccessibleChildrenCount(), 0);
+ harness.check(ac.getAccessibleChild(0), null);
+
+ AccessibleComponent acomp = ac.getAccessibleComponent();
+ harness.check(acomp.getBackground(), th.getBackground());
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ DefaultTableModel tm = new DefaultTableModel(2, 3);
+ DefaultTableColumnModel tcm = new DefaultTableColumnModel();
+ TableColumn tc0 = new TableColumn(0, 10);
+ tc0.setHeaderValue("XYZ0");
+ tcm.addColumn(tc0);
+ tcm.addColumn(new TableColumn(1, 20));
+ tcm.addColumn(new TableColumn(2, 30));
+ JTable t = new JTable(tm, tcm);
+ JTableHeader th = t.getTableHeader();
+ AccessibleContext ac = th.getAccessibleContext();
+ harness.check(ac.getAccessibleName(), null);
+ harness.check(ac.getAccessibleRole(), AccessibleRole.PANEL);
+ harness.check(ac.getAccessibleChildrenCount(), 3);
+
+ AccessibleContext he0 = ac.getAccessibleChild(0).getAccessibleContext();
+ harness.check(he0.getAccessibleName(), "XYZ0");
+ harness.check(he0.getAccessibleRole(), AccessibleRole.LABEL);
+ harness.check(he0.getAccessibleComponent(), he0);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/CVS/Entries b/gnu/testlet/javax/swing/table/TableColumn/CVS/Entries
new file mode 100644
index 00000000..63c45355
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/CVS/Entries
@@ -0,0 +1,23 @@
+/addPropertyChangeListener.java/1.1/Wed Mar 15 11:32:59 2006//
+/constants.java/1.1/Sun Jan 9 23:06:43 2005//
+/constructors.java/1.2/Mon Jul 25 08:39:50 2005//
+/getCellRenderer.java/1.1/Sun Jan 9 23:06:43 2005//
+/getHeaderRenderer.java/1.1/Sun Jan 9 23:06:43 2005//
+/getHeaderValue.java/1.1/Sun Jan 9 23:06:43 2005//
+/getIdentifier.java/1.1/Sun Jan 9 23:06:43 2005//
+/getModelIndex.java/1.1/Sun Jan 9 23:06:43 2005//
+/properties.java/1.1/Mon Sep 12 12:55:23 2005//
+/removePropertyChangeListener.java/1.1/Wed Mar 15 11:32:59 2006//
+/setCellEditor.java/1.1/Wed Mar 15 11:32:59 2006//
+/setCellRenderer.java/1.2/Wed Mar 15 11:32:59 2006//
+/setHeaderRenderer.java/1.2/Wed Mar 15 11:32:59 2006//
+/setHeaderValue.java/1.3/Wed Mar 15 11:32:59 2006//
+/setIdentifier.java/1.3/Wed Mar 15 11:32:59 2006//
+/setMaxWidth.java/1.2/Tue Mar 14 21:05:19 2006//
+/setMinWidth.java/1.3/Tue Mar 14 17:18:36 2006//
+/setModelIndex.java/1.1/Sun Jan 9 23:06:43 2005//
+/setPreferredWidth.java/1.2/Tue Mar 14 17:18:36 2006//
+/setResizable.java/1.2/Tue Mar 14 15:46:08 2006//
+/setWidth.java/1.2/Tue Mar 14 17:18:36 2006//
+/sizeWidthToFit.java/1.1/Wed Mar 15 13:57:41 2006//
+D
diff --git a/gnu/testlet/javax/swing/table/TableColumn/CVS/Repository b/gnu/testlet/javax/swing/table/TableColumn/CVS/Repository
new file mode 100644
index 00000000..2e366787
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/table/TableColumn
diff --git a/gnu/testlet/javax/swing/table/TableColumn/CVS/Root b/gnu/testlet/javax/swing/table/TableColumn/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/table/TableColumn/addPropertyChangeListener.java b/gnu/testlet/javax/swing/table/TableColumn/addPropertyChangeListener.java
new file mode 100644
index 00000000..93c6ff78
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/addPropertyChangeListener.java
@@ -0,0 +1,69 @@
+/* addPropertyChangeListener.java -- some checks for the
+ addPropertyChangeListener() method in the TableColumn class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+public class addPropertyChangeListener implements Testlet
+{
+ static class Listener implements PropertyChangeListener
+ {
+ public List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+
+ // add a listener, make sure it receives an event
+ Listener l1 = new Listener();
+ c.addPropertyChangeListener(l1);
+ c.setWidth(60);
+ harness.check(l1.events.size(), 1);
+ c.removePropertyChangeListener(l1);
+ l1.events.clear();
+ c.setWidth(61);
+ harness.check(l1.events.size(), 0);
+ PropertyChangeListener[] listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // add a null listener
+ c.addPropertyChangeListener(null);
+ listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/constants.java b/gnu/testlet/javax/swing/table/TableColumn/constants.java
new file mode 100644
index 00000000..af876da8
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/constants.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the constants in the {@link TableColumn} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(TableColumn.CELL_RENDERER_PROPERTY, "cellRenderer");
+ harness.check(TableColumn.COLUMN_WIDTH_PROPERTY, "columWidth"); // note the typo!
+ harness.check(TableColumn.HEADER_RENDERER_PROPERTY, "headerRenderer");
+ harness.check(TableColumn.HEADER_VALUE_PROPERTY, "headerValue");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/constructors.java b/gnu/testlet/javax/swing/table/TableColumn/constructors.java
new file mode 100644
index 00000000..b5f96ba1
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/constructors.java
@@ -0,0 +1,116 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.DefaultCellEditor;
+import javax.swing.JCheckBox;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the constructors in the {@link TableColumn} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("TableColumn()");
+ TableColumn c1 = new TableColumn();
+ harness.check(c1.getModelIndex(), 0);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getWidth(), 75);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getCellRenderer(), null);
+ harness.check(c1.getCellEditor(), null);
+ harness.check(c1.getHeaderValue(), null);
+ harness.check(c1.getResizable(), true);
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("TableColumn(int)");
+ TableColumn c1 = new TableColumn(1);
+ harness.check(c1.getModelIndex(), 1);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getWidth(), 75);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getCellRenderer(), null);
+ harness.check(c1.getCellEditor(), null);
+ harness.check(c1.getHeaderValue(), null);
+ harness.check(c1.getResizable(), true);
+
+ TableColumn c2 = new TableColumn(-1);
+ harness.check(c2.getModelIndex(), -1);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("TableColumn(int, int)");
+ TableColumn c1 = new TableColumn(1, 33);
+ harness.check(c1.getModelIndex(), 1);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getWidth(), 33);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getCellRenderer(), null);
+ harness.check(c1.getCellEditor(), null);
+ harness.check(c1.getHeaderValue(), null);
+ harness.check(c1.getResizable(), true);
+
+ // negative width
+ TableColumn c2 = new TableColumn(1, -1);
+ harness.check(c2.getWidth(), -1);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("TableColumn(int, int, TableCellRenderer, TableCellEditor)");
+ TableCellRenderer renderer = new DefaultTableCellRenderer();
+ TableCellEditor editor = new DefaultCellEditor(new JCheckBox());
+ TableColumn c1 = new TableColumn(1, 33, renderer, editor);
+ harness.check(c1.getModelIndex(), 1);
+ harness.check(c1.getMinWidth(), 15);
+ harness.check(c1.getWidth(), 33);
+ harness.check(c1.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c1.getCellRenderer(), renderer);
+ harness.check(c1.getCellEditor(), editor);
+ harness.check(c1.getHeaderValue(), null);
+ harness.check(c1.getResizable(), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/getCellRenderer.java b/gnu/testlet/javax/swing/table/TableColumn/getCellRenderer.java
new file mode 100644
index 00000000..94513268
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/getCellRenderer.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getCellRenderer() method in the {@link TableColumn} class.
+ */
+public class getCellRenderer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ TableCellRenderer r = new DefaultTableCellRenderer();
+ c.setCellRenderer(r);
+ harness.check(c.getCellRenderer(), r);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/getHeaderRenderer.java b/gnu/testlet/javax/swing/table/TableColumn/getHeaderRenderer.java
new file mode 100644
index 00000000..d454690e
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/getHeaderRenderer.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getHeaderRenderer() method in the {@link TableColumn} class.
+ */
+public class getHeaderRenderer implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ TableCellRenderer r = new DefaultTableCellRenderer();
+ c.setHeaderRenderer(r);
+ harness.check(c.getHeaderRenderer(), r);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/getHeaderValue.java b/gnu/testlet/javax/swing/table/TableColumn/getHeaderValue.java
new file mode 100644
index 00000000..d9fd9f91
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/getHeaderValue.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getHeaderValue() method in the {@link TableColumn} class.
+ */
+public class getHeaderValue implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ c.setHeaderValue(new Integer(99));
+ harness.check(c.getHeaderValue(), new Integer(99));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/getIdentifier.java b/gnu/testlet/javax/swing/table/TableColumn/getIdentifier.java
new file mode 100644
index 00000000..691e0e32
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/getIdentifier.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the getIdentifier() method in the {@link TableColumn} class.
+ */
+public class getIdentifier implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ c.setIdentifier(new Integer(99));
+ harness.check(c.getIdentifier(), new Integer(99));
+
+ //
+ c.setIdentifier(null);
+ c.setHeaderValue("Test");
+ harness.check(c.getIdentifier(), "Test");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/getModelIndex.java b/gnu/testlet/javax/swing/table/TableColumn/getModelIndex.java
new file mode 100644
index 00000000..a212efad
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/getModelIndex.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setModelIndex() method in the {@link TableColumn} class.
+ */
+public class getModelIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ c.setModelIndex(99);
+ harness.check(c.getModelIndex(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/properties.java b/gnu/testlet/javax/swing/table/TableColumn/properties.java
new file mode 100644
index 00000000..8ec036c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/properties.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the properties of the class TableColumn are correctly firing
+ * events.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class properties implements Testlet
+{
+
+ Object changedProperty;
+
+ class TestPropertyListener implements PropertyChangeListener
+ {
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ changedProperty = e.getPropertyName();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TableColumn tc = new TableColumn();
+ tc.addPropertyChangeListener(new TestPropertyListener());
+
+ tc.setPreferredWidth(100);
+ changedProperty = null;
+ tc.setPreferredWidth(200);
+ harness.check(changedProperty, "preferredWidth", "preferredWidth");
+
+ tc.setWidth(100);
+ changedProperty = null;
+ tc.setWidth(200);
+ harness.check(changedProperty, "width", "width");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/removePropertyChangeListener.java b/gnu/testlet/javax/swing/table/TableColumn/removePropertyChangeListener.java
new file mode 100644
index 00000000..3cd5b8f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/removePropertyChangeListener.java
@@ -0,0 +1,81 @@
+/* removePropertyChangeListener.java -- some checks for the
+ removePropertyChangeListener() method in the TableColumn class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+public class removePropertyChangeListener implements Testlet
+{
+ static class Listener implements PropertyChangeListener
+ {
+ public List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+
+ // add a listener, make sure it receives an event
+ Listener l1 = new Listener();
+ c.addPropertyChangeListener(l1);
+ c.setWidth(60);
+ harness.check(l1.events.size(), 1);
+
+ // then remove it to make sure it doesn't get events anymore
+ c.removePropertyChangeListener(l1);
+ l1.events.clear();
+ c.setWidth(61);
+ harness.check(l1.events.size(), 0);
+ PropertyChangeListener[] listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ // remove a listener that was never added
+ c.addPropertyChangeListener(l1);
+ c.removePropertyChangeListener(new Listener());
+ listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+
+ // remove a null listener
+ c.removePropertyChangeListener(null);
+ listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 1);
+ c.removePropertyChangeListener(l1);
+ listeners = c.getPropertyChangeListeners();
+ harness.check(listeners.length, 0);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setCellEditor.java b/gnu/testlet/javax/swing/table/TableColumn/setCellEditor.java
new file mode 100644
index 00000000..2aa8868b
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setCellEditor.java
@@ -0,0 +1,69 @@
+/* setCellEditor.java -- some checks for the setCellEditor() method in the
+ TableColumn class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.DefaultCellEditor;
+import javax.swing.JTextField;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableColumn;
+
+public class setCellEditor implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getCellEditor(), null);
+ c.addPropertyChangeListener(this);
+ TableCellEditor editor = new DefaultCellEditor(new JTextField());
+ c.setCellEditor(editor);
+ harness.check(c.getCellEditor(), editor);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "cellEditor");
+ harness.check(e.getOldValue(), null);
+ harness.check(e.getNewValue(), editor);
+
+ // set to null
+ events.clear();
+ c.setCellEditor(null);
+ e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "cellEditor");
+ harness.check(e.getOldValue(), editor);
+ harness.check(e.getNewValue(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java b/gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java
new file mode 100644
index 00000000..4cbae220
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setCellRenderer.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setCellRenderer() method in the {@link TableColumn} class.
+ */
+public class setCellRenderer implements Testlet, PropertyChangeListener
+{
+
+ private PropertyChangeEvent event = null;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ TableCellRenderer r1 = new DefaultTableCellRenderer();
+ c.setCellRenderer(r1);
+ harness.check(c.getCellRenderer(), r1);
+
+ // O'Reilly's "Java Swing" (first edition) lists this as a "bound" property
+ c.addPropertyChangeListener(this);
+ TableCellRenderer r2 = new DefaultTableCellRenderer();
+ c.setCellRenderer(r2);
+ harness.check(event.getPropertyName(), "cellRenderer");
+ harness.check(event.getOldValue(), r1);
+ harness.check(event.getNewValue(), r2);
+
+ // set renderer to null
+ c.setCellRenderer(null);
+ harness.check(c.getCellRenderer(), null);
+ harness.check(event.getPropertyName(), "cellRenderer");
+ harness.check(event.getOldValue(), r2);
+ harness.check(event.getNewValue(), null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java b/gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java
new file mode 100644
index 00000000..579d6b99
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setHeaderRenderer.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setHeaderRenderer() method in the {@link TableColumn}
+ * class.
+ */
+public class setHeaderRenderer implements Testlet, PropertyChangeListener
+{
+ private PropertyChangeEvent event;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ TableCellRenderer r = new DefaultTableCellRenderer();
+ c.setHeaderRenderer(r);
+ harness.check(c.getHeaderRenderer(), r);
+
+ // O'Reilly's "Java Swing" (first edition) lists this as a "bound" property
+ c.addPropertyChangeListener(this);
+ TableCellRenderer r2 = new DefaultTableCellRenderer();
+ c.setHeaderRenderer(r2);
+ harness.check(event.getPropertyName(), "headerRenderer");
+ harness.check(event.getOldValue(), r);
+ harness.check(event.getNewValue(), r2);
+
+ // try null
+ c.setHeaderRenderer(null);
+ harness.check(event.getPropertyName(), "headerRenderer");
+ harness.check(event.getOldValue(), r2);
+ harness.check(event.getNewValue(), null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java b/gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java
new file mode 100644
index 00000000..ef2b81c2
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setHeaderValue.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setHeaderValue() method in the {@link TableColumn} class.
+ */
+public class setHeaderValue implements Testlet, PropertyChangeListener
+{
+
+ private PropertyChangeEvent event;
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ c.setHeaderValue(new Integer(99));
+ harness.check(c.getHeaderValue(), new Integer(99));
+
+ // O'Reilly's "Java Swing" (first edition) lists this as a "bound" property
+ c.addPropertyChangeListener(this);
+ c.setHeaderValue("Value");
+ harness.check(event.getPropertyName(), "headerValue");
+ harness.check(event.getOldValue(), new Integer(99));
+ harness.check(event.getNewValue(), "Value");
+
+ c.setHeaderValue(null);
+ harness.check(c.getHeaderValue(), null);
+ harness.check(event.getPropertyName(), "headerValue");
+ harness.check(event.getOldValue(), "Value");
+ harness.check(event.getNewValue(), null);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.event = e;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java b/gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java
new file mode 100644
index 00000000..fbb89375
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setIdentifier.java
@@ -0,0 +1,67 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setIdentifier() method in the {@link TableColumn} class.
+ */
+public class setIdentifier implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent event;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ event = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getIdentifier(), null);
+
+ c.addPropertyChangeListener(this);
+ c.setIdentifier(new Integer(99));
+ harness.check(c.getIdentifier(), new Integer(99));
+ harness.check(event.getPropertyName(), "identifier");
+ harness.check(event.getOldValue(), null);
+ harness.check(event.getNewValue(), new Integer(99));
+
+ // try null
+ c.setIdentifier(null);
+ harness.check(c.getIdentifier(), null);
+ harness.check(event.getPropertyName(), "identifier");
+ harness.check(event.getOldValue(), new Integer(99));
+ harness.check(event.getNewValue(), null);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java b/gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java
new file mode 100644
index 00000000..5631934e
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setMaxWidth.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setMaxWidth() method in the {@link TableColumn} class.
+ */
+public class setMaxWidth implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getMaxWidth(), Integer.MAX_VALUE);
+
+ c.addPropertyChangeListener(this);
+ c.setMaxWidth(99);
+ harness.check(c.getMaxWidth(), 99);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "maxWidth");
+ harness.check(e.getOldValue(), new Integer(Integer.MAX_VALUE));
+ harness.check(e.getNewValue(), new Integer(99));
+
+ // now set the max width less than the current width and preferred width
+ events.clear();
+ harness.check(c.getWidth(), 75);
+ harness.check(c.getPreferredWidth(), 75);
+ c.setMaxWidth(50);
+ harness.check(c.getWidth(), 50);
+ harness.check(c.getMaxWidth(), 50);
+ harness.check(c.getPreferredWidth(), 50);
+ harness.check(events.size(), 3);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(), "width");
+ harness.check(e1.getOldValue(), new Integer(75));
+ harness.check(e1.getNewValue(), new Integer(50));
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(), "preferredWidth");
+ harness.check(e2.getOldValue(), new Integer(75));
+ harness.check(e2.getNewValue(), new Integer(50));
+ PropertyChangeEvent e3 = (PropertyChangeEvent) events.get(2);
+ harness.check(e3.getPropertyName(), "maxWidth");
+ harness.check(e3.getOldValue(), new Integer(99));
+ harness.check(e3.getNewValue(), new Integer(50));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java b/gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java
new file mode 100644
index 00000000..68bb369b
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setMinWidth.java
@@ -0,0 +1,94 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setMinWidth() method in the {@link TableColumn} class.
+ */
+public class setMinWidth implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getMinWidth(), 15);
+ c.addPropertyChangeListener(this);
+
+ c.setMinWidth(11);
+ harness.check(c.getMinWidth(), 11);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "minWidth");
+ harness.check(e.getOldValue(), new Integer(15));
+ harness.check(e.getNewValue(), new Integer(11));
+
+ // spec says that current and preferred width will be updated if they are
+ // less than the min width
+ events.clear();
+ harness.check(c.getWidth(), 75);
+ harness.check(c.getPreferredWidth(), 75);
+ c.setMinWidth(88);
+ harness.check(c.getMinWidth(), 88);
+ harness.check(c.getWidth(), 88);
+ harness.check(c.getPreferredWidth(), 88);
+
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(0);
+ harness.check(e1.getPropertyName(), "width");
+ harness.check(e1.getOldValue(), new Integer(75));
+ harness.check(e1.getNewValue(), new Integer(88));
+
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(1);
+ harness.check(e2.getPropertyName(), "preferredWidth");
+ harness.check(e2.getOldValue(), new Integer(75));
+ harness.check(e2.getNewValue(), new Integer(88));
+
+ PropertyChangeEvent e3 = (PropertyChangeEvent) events.get(2);
+ harness.check(e3.getPropertyName(), "minWidth");
+ harness.check(e3.getOldValue(), new Integer(11));
+ harness.check(e3.getNewValue(), new Integer(88));
+
+ // the spec doesn't say anything about the max value, unfortunately
+
+ // try a negative value
+ c.setMinWidth(-1);
+ harness.check(c.getMinWidth(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setModelIndex.java b/gnu/testlet/javax/swing/table/TableColumn/setModelIndex.java
new file mode 100644
index 00000000..74f773cd
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setModelIndex.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setModel() method in the {@link TableColumn} class.
+ */
+public class setModelIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ c.setModelIndex(99);
+ harness.check(c.getModelIndex(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java b/gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java
new file mode 100644
index 00000000..a7fdfc5e
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setPreferredWidth.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setPreferredWidth() method in the {@link TableColumn}
+ * class.
+ */
+public class setPreferredWidth implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ events.add(e);
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getPreferredWidth(), 75);
+ c.addPropertyChangeListener(this);
+ c.setPreferredWidth(55);
+ harness.check(c.getPreferredWidth(), 55);
+
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "preferredWidth");
+ harness.check(e.getOldValue(), new Integer(75));
+ harness.check(e.getNewValue(), new Integer(55));
+
+ // set the preferred width to less than the min width...
+ c.setPreferredWidth(10);
+ harness.check(c.getPreferredWidth(), 15); // default min width
+
+ c.setMaxWidth(123);
+ harness.check(c.getMaxWidth(), 123);
+ c.setPreferredWidth(234);
+ harness.check(c.getPreferredWidth(), 123);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setResizable.java b/gnu/testlet/javax/swing/table/TableColumn/setResizable.java
new file mode 100644
index 00000000..87d722f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setResizable.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setResizable() method in the {@link TableColumn} class.
+ */
+public class setResizable implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.lastEvent = e;
+ }
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getResizable(), true);
+
+ c.addPropertyChangeListener(this);
+ c.setResizable(false);
+ harness.check(c.getResizable(), false);
+ harness.check(lastEvent.getPropertyName(), "isResizable");
+ harness.check(lastEvent.getOldValue(), Boolean.TRUE);
+ harness.check(lastEvent.getNewValue(), Boolean.FALSE);
+
+ // check that setting to the same value doesn't generate an event
+ lastEvent = null;
+ c.setResizable(false);
+ harness.check(lastEvent == null);
+
+ // now flip to true
+ c.setResizable(true);
+ harness.check(c.getResizable(), true);
+ harness.check(lastEvent.getPropertyName(), "isResizable");
+ harness.check(lastEvent.getOldValue(), Boolean.FALSE);
+ harness.check(lastEvent.getNewValue(), Boolean.TRUE);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/table/TableColumn/setWidth.java b/gnu/testlet/javax/swing/table/TableColumn/setWidth.java
new file mode 100644
index 00000000..1c9b27e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/setWidth.java
@@ -0,0 +1,71 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006, David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.table.TableColumn;
+
+/**
+ * Some tests for the setWidth() method in the {@link TableColumn} class.
+ */
+public class setWidth implements Testlet, PropertyChangeListener
+{
+
+ List events = new java.util.ArrayList();
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getWidth(), 75);
+ c.addPropertyChangeListener(this);
+
+ c.setWidth(19);
+ harness.check(c.getWidth(), 19);
+ harness.check(events.size(), 1);
+ PropertyChangeEvent e = (PropertyChangeEvent) events.get(0);
+ harness.check(e.getPropertyName(), "width");
+ harness.check(e.getOldValue(), new Integer(75));
+ harness.check(e.getNewValue(), new Integer(19));
+
+ c.setWidth(10);
+ harness.check(c.getWidth(), 15);
+
+ c.setMaxWidth(100);
+ c.setWidth(110);
+ harness.check(c.getWidth(), 100);
+ }
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ this.events.add(e);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/table/TableColumn/sizeWidthToFit.java b/gnu/testlet/javax/swing/table/TableColumn/sizeWidthToFit.java
new file mode 100644
index 00000000..cb3d4518
--- /dev/null
+++ b/gnu/testlet/javax/swing/table/TableColumn/sizeWidthToFit.java
@@ -0,0 +1,101 @@
+/* sizeWidthToFit.java -- Some checks for the sizeWidthToFit() method in the
+ TableColumn class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.table.TableColumn;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Dimension;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+
+public class sizeWidthToFit implements Testlet, PropertyChangeListener
+{
+ List events = new java.util.ArrayList();
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ events.add(event);
+ }
+
+ public void test(TestHarness harness)
+ {
+ TableColumn c = new TableColumn();
+ harness.check(c.getHeaderRenderer(), null);
+ c.addPropertyChangeListener(this);
+
+ // with no header renderer, the method should do nothing
+ c.sizeWidthToFit();
+ harness.check(c.getMinWidth(), 15);
+ harness.check(c.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c.getPreferredWidth(), 75);
+ harness.check(c.getWidth(), 75);
+
+ JTable t = new JTable();
+ JTableHeader h = t.getTableHeader();
+ JComponent r = (JComponent) h.getDefaultRenderer();
+ r.setMinimumSize(new Dimension(13, 5));
+ r.setMaximumSize(new Dimension(999, 99));
+ r.setPreferredSize(new Dimension(34, 21));
+ c.setHeaderRenderer((TableCellRenderer) r);
+ harness.check(c.getMinWidth(), 15);
+ harness.check(c.getMaxWidth(), Integer.MAX_VALUE);
+ harness.check(c.getPreferredWidth(), 75);
+ harness.check(c.getWidth(), 75);
+ c.sizeWidthToFit();
+ harness.check(c.getMinWidth(), 13);
+ harness.check(c.getMaxWidth(), 999);
+ harness.check(c.getPreferredWidth(), 34);
+ harness.check(c.getWidth(), 34);
+
+ PropertyChangeEvent e0 = (PropertyChangeEvent) events.get(0);
+ harness.check(e0.getPropertyName(), "headerRenderer");
+ harness.check(e0.getOldValue(), null);
+ harness.check(e0.getNewValue(), r);
+ PropertyChangeEvent e1 = (PropertyChangeEvent) events.get(1);
+ harness.check(e1.getPropertyName(), "minWidth");
+ harness.check(e1.getOldValue(), new Integer(15));
+ harness.check(e1.getNewValue(), new Integer(13));
+ PropertyChangeEvent e2 = (PropertyChangeEvent) events.get(2);
+ harness.check(e2.getPropertyName(), "maxWidth");
+ harness.check(e2.getOldValue(), new Integer(Integer.MAX_VALUE));
+ harness.check(e2.getNewValue(), new Integer(999));
+ PropertyChangeEvent e3 = (PropertyChangeEvent) events.get(3);
+ harness.check(e3.getPropertyName(), "preferredWidth");
+ harness.check(e3.getOldValue(), new Integer(75));
+ harness.check(e3.getNewValue(), new Integer(34));
+ PropertyChangeEvent e4 = (PropertyChangeEvent) events.get(4);
+ harness.check(e4.getPropertyName(), "width");
+ harness.check(e4.getOldValue(), new Integer(75));
+ harness.check(e4.getNewValue(), new Integer(34));
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java b/gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java
new file mode 100644
index 00000000..1f6484ed
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/AbstractDocumentTest.java
@@ -0,0 +1,141 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.AbstractDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+public class AbstractDocumentTest
+ implements Testlet
+{
+ public class DocumentImpl extends AbstractDocument
+ {
+ public DocumentImpl()
+ {
+ super(new GapContent());
+ }
+
+ public Element getDefaultRootElement()
+ {
+ return null;
+ }
+
+ public Element getParagraphElement(int index)
+ {
+ return getDefaultRootElement();
+ }
+
+ // Override it from protected to public
+ public Element createBranchElement(Element parent, AttributeSet attributes)
+ {
+ return super.createBranchElement(parent, attributes);
+ }
+
+ // Override it from protected to public
+ public Element createLeafElement(Element parent, AttributeSet attributes,
+ int p0, int p1)
+ {
+ return super.createLeafElement(parent, attributes, p0, p1);
+ }
+ }
+
+ private void testContentHandling(TestHarness harness)
+ {
+ DocumentImpl doc = new DocumentImpl();
+
+ harness.checkPoint("testContentHandling");
+
+ try
+ {
+ harness.check(doc.getText(0, doc.getLength()).equals(""));
+
+ doc.insertString(0, "This is a test", null);
+ harness.check(doc.getText(0, doc.getLength()).equals("This is a test"));
+
+ doc.insertString(10, "little ", null);
+ harness.check(doc.getText(0, doc.getLength()).equals("This is a little test"));
+
+ doc.insertString(21, "case", null);
+ harness.check(doc.getText(0, doc.getLength()).equals("This is a little testcase"));
+ }
+ catch (Exception e)
+ {
+ harness.fail("unexpected exception");
+ }
+ }
+
+ private void checkElement(TestHarness harness, Element elem,
+ AttributeSet attributes, int children,
+ Element parent)
+ {
+ //harness.check(elem.getAttributes() == null, "unexpected value for Element.getAttributes()");
+ harness.check(elem.getElementCount() == children, "unexpected number of children: " + elem.getElementCount());
+ harness.check(elem.getParentElement() == parent, "Wrong parent");
+ }
+
+ private void testCreateLeafElement(TestHarness harness)
+ {
+ DocumentImpl doc = new DocumentImpl();
+
+ harness.checkPoint("testCreateLeafElement");
+
+ Element elem = doc.createLeafElement(null, null, 0, 1);
+ checkElement(harness, elem, null, 0, null);
+ }
+
+ private void testCreateBranchElement(TestHarness harness)
+ {
+ DocumentImpl doc = new DocumentImpl();
+
+ harness.checkPoint("testCreateBranchElement 1");
+
+ Element elem;
+ elem = doc.createBranchElement(null, null);
+ checkElement(harness, elem, null, 0, null);
+
+ harness.checkPoint("testCreateBranchElement 2");
+
+ Element parent = elem;
+ elem = doc.createBranchElement(parent, null);
+ //checkElement(harness, parent, null, 1, null);
+ checkElement(harness, parent, null, 0, null);
+ checkElement(harness, elem, null, 0, parent);
+
+ harness.checkPoint("testCreateBranchElement 3");
+
+ Element elem2;
+ elem2 = doc.createBranchElement(parent, null);
+ //checkElement(harness, parent, null, 2, null);
+ checkElement(harness, parent, null, 0, null);
+ checkElement(harness, elem2, null, 0, parent);
+ }
+
+ public void test(TestHarness harness)
+ {
+ testCreateBranchElement(harness);
+ testCreateLeafElement(harness);
+
+ testContentHandling(harness);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java
new file mode 100644
index 00000000..9c54e310
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/BranchElementTest.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.AbstractDocument.BranchElement;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.Element;
+import javax.swing.text.GapContent;
+
+public class BranchElementTest extends AbstractDocument
+ implements Testlet
+{
+ public BranchElementTest()
+ {
+ super(new GapContent());
+ }
+
+ public Element getDefaultRootElement()
+ {
+ return null;
+ }
+
+ public Element getParagraphElement(int pos)
+ {
+ return null;
+ }
+
+ public void test(TestHarness h)
+ {
+ AbstractDocument.BranchElement root = new AbstractDocument.BranchElement(null, null);
+ AbstractDocument.BranchElement leaf1, leaf2, leaf3;
+ Element[] array1 = new Element[1];
+ Element[] array2 = new Element[2];
+
+ h.check(root.getElementCount(), 0, "number of children");
+
+ leaf1 = new AbstractDocument.BranchElement(root, null);
+ array1[0] = leaf1;
+ root.replace(0, 0, array1);
+
+ h.check(root.getElementCount(), 1, "number of children");
+
+ leaf2 = new AbstractDocument.BranchElement(root, null);
+ array2[0] = leaf1;
+ array2[1] = leaf2;
+ root.replace(0, 1, array2);
+
+ h.check(root.getElementCount(), 2, "number of children");
+
+ leaf3 = new AbstractDocument.BranchElement(leaf1, null);
+ array1[0] = leaf3;
+ leaf1.replace(0, 0, array1);
+
+ h.check(root.getElementCount(), 2, "number of children");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Entries b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Entries
new file mode 100644
index 00000000..80983ffc
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Entries
@@ -0,0 +1,5 @@
+/BranchElementTest.java/1.1/Thu Jan 6 13:40:23 2005//
+/getElementIndex.java/1.1/Fri Jul 28 11:03:22 2006//
+/getElementIndexNullPointer.java/1.1/Wed Sep 28 19:29:15 2005//
+/getStartOffset.java/1.1/Tue Feb 28 16:07:16 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Repository b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Repository
new file mode 100644
index 00000000..70bc8071
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Root b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndex.java b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndex.java
new file mode 100644
index 00000000..b07e6cad
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndex.java
@@ -0,0 +1,73 @@
+/* getElementIndex.java -- Checks the getElementIndex method in BranchElement
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.AbstractDocument.BranchElement;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.AbstractDocument.BranchElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks various aspects of the getElementIndex() method in BranchElement.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getElementIndex implements Testlet
+{
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testBeyondBoundary(harness);
+ }
+
+ /**
+ * Checks how getElementIndex should behave when the requested index is
+ * beyond the document boundary.
+ *
+ * @param h
+ */
+ private void testBeyondBoundary(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "hello\n", null);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail(ex.getMessage());
+ }
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementIndex(6), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java
new file mode 100644
index 00000000..9cecf11e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getElementIndexNullPointer.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.text.AbstractDocument.BranchElement;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.PlainDocument;
+
+/**
+ * Checks if AbstractDocument.Branch Element throws a NPE
+ * when it has no children and getElementIndex is called.
+ */
+public class getElementIndexNullPointer implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ AbstractDocument.BranchElement b =
+ doc.new BranchElement(null, null);
+ try
+ {
+ b.getElementIndex(0);
+ h.fail("AbstractDocument.BranchElement.getElementIndex should throw NPE when it has no children");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getStartOffset.java b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getStartOffset.java
new file mode 100644
index 00000000..5b20254b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/BranchElement/getStartOffset.java
@@ -0,0 +1,107 @@
+/* getStartOffset.java -- Checks the getStartOffset method in BranchElement
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.AbstractDocument.BranchElement;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getStartOffset implements Testlet
+{
+
+ /**
+ * The entry point in this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testEmptyBranchElement(harness);
+ testOneLeafElement(harness);
+ testCachedValue(harness);
+ }
+
+ /**
+ * Creates an empty BranchElement and checks if the getStartOffset() method
+ * call triggers an NPE.
+ *
+ * @param h the test harness to use
+ */
+ private void testEmptyBranchElement(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ AbstractDocument.BranchElement b =
+ doc.new BranchElement(null, null);
+ try
+ {
+ b.getStartOffset();
+ h.fail("emptyBranchElement");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+ /**
+ * Creates a BranchElement with one LeafElement child and checks if the
+ * getStartOffset() method call returns the correct start offset.
+ *
+ * @param h the test harness to use
+ */
+ private void testOneLeafElement(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ AbstractDocument.BranchElement b =
+ doc.new BranchElement(null, null);
+ AbstractDocument.LeafElement l = doc.new LeafElement(b, null, 10, 20);
+ b.replace(0, 0, new Element[] { l });
+ h.check(b.getStartOffset(), 10);
+ }
+
+ /**
+ * This first creates a BranchElement with one child and calls
+ * getStartOffset(). Then it removes the child and calls startOffset() again
+ * and checks if the BranchElement still returns a valid value. The
+ * BranchElement should remember the value and don't throw an NPE here.
+ *
+ * @param h the test harness to use
+ */
+ private void testCachedValue(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ AbstractDocument.BranchElement b =
+ doc.new BranchElement(null, null);
+ AbstractDocument.LeafElement l = doc.new LeafElement(b, null, 10, 20);
+ b.replace(0, 0, new Element[] { l });
+ h.check(b.getStartOffset(), 10);
+
+ b.replace(0, 1, new Element[0]);
+ h.check(b.getElementCount(), 0);
+ h.check(b.getStartOffset(), 10);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries
new file mode 100644
index 00000000..382b3cba
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries
@@ -0,0 +1,7 @@
+/AbstractDocumentTest.java/1.1/Wed Jun 23 11:39:29 2004//
+/ElementChange.java/1.1/Wed Oct 5 16:09:23 2005//
+/ElementChange2.java/1.1/Wed Oct 12 18:21:10 2005//
+/TestAbstractDocument.java/1.1/Thu Jun 22 12:41:27 2006//
+/filterTest.java/1.2/Mon Jul 24 22:28:58 2006//
+/getDocumentProperties.java/1.4/Wed May 21 13:30:50 2008//
+D
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries.Log b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries.Log
new file mode 100644
index 00000000..b9d2240f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/BranchElement////
+A D/LeafElement////
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Repository b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Repository
new file mode 100644
index 00000000..8376959e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/AbstractDocument
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Root b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java b/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java
new file mode 100644
index 00000000..7a61969e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange.java
@@ -0,0 +1,99 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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.javax.swing.text.AbstractDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+import javax.swing.*;
+import javax.swing.event.*;
+
+/**
+ * Tests if adding and removing content fires DocumentEvents with the proper ElementChange.
+ */
+public class ElementChange
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JTextArea textArea = new JTextArea ();
+ final TestHarness harness2 = harness;
+
+ ((AbstractDocument)textArea.getDocument()).addDocumentListener(new DocumentListener(){
+ public void changedUpdate (DocumentEvent e)
+ {
+ }
+
+ public void insertUpdate (DocumentEvent e)
+ {
+ Element root = e.getDocument().getDefaultRootElement();
+ DocumentEvent.ElementChange ec = e.getChange(root);
+ Element[] childrenAdded = ec.getChildrenAdded();
+ Element[] childrenRemoved = ec.getChildrenRemoved();
+ harness2.checkPoint("insert update children added");
+ harness2.check(childrenAdded.length == 4);
+ harness2.check(childrenAdded[0].getStartOffset() == 0);
+ harness2.check(childrenAdded[0].getEndOffset() == 36);
+ harness2.check(childrenAdded[1].getStartOffset() == 36);
+ harness2.check(childrenAdded[1].getEndOffset() == 97);
+ harness2.check(childrenAdded[2].getStartOffset() == 97);
+ harness2.check(childrenAdded[2].getEndOffset() == 134);
+ harness2.check(childrenAdded[3].getStartOffset() == 134);
+ harness2.check(childrenAdded[3].getEndOffset() == 176);
+
+ harness2.checkPoint("insert update children removed");
+ harness2.check(childrenRemoved.length == 1);
+ harness2.check(childrenRemoved[0].getStartOffset() == 0);
+ harness2.check(childrenRemoved[0].getEndOffset() == 176);
+ }
+
+ public void removeUpdate (DocumentEvent e)
+ {
+ Element root = e.getDocument().getDefaultRootElement();
+ DocumentEvent.ElementChange ec = e.getChange(root);
+ Element[] childrenAdded = ec.getChildrenAdded();
+ Element[] childrenRemoved = ec.getChildrenRemoved();
+ harness2.checkPoint("remove update children added");
+ harness2.check(childrenAdded.length == 1);
+ harness2.check(childrenAdded[0].getStartOffset() == 0);
+ harness2.check(childrenAdded[0].getEndOffset() == 57);
+
+ harness2.checkPoint("remove udpate childrem removed");
+ harness2.check(childrenRemoved.length == 2);
+ harness2.check(childrenRemoved[0].getStartOffset() == 0);
+ harness2.check(childrenRemoved[0].getEndOffset() == 5);
+ harness2.check(childrenRemoved[1].getStartOffset() == 5);
+ harness2.check(childrenRemoved[1].getEndOffset() == 57);
+ }
+ });
+ textArea.setText("This is the text that we are adding\nIt has several lines, which should be several children added\nWhile only one child will be removed\nThat is, if the implementation is correct");
+ try
+ {
+ textArea.getDocument().remove(5, 40);
+ }
+ catch (BadLocationException ble)
+ {
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java b/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java
new file mode 100644
index 00000000..4f7bb042
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/ElementChange2.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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.javax.swing.text.AbstractDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+import javax.swing.*;
+import javax.swing.event.*;
+
+/**
+ * Tests if adding and removing content fires DocumentEvents with the proper ElementChange.
+ */
+public class ElementChange2
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ JTextArea textArea = new JTextArea ();
+ final TestHarness harness2 = harness;
+ textArea.setText("0123456");
+ ((AbstractDocument)textArea.getDocument()).addDocumentListener(new DocumentListener(){
+ public void changedUpdate (DocumentEvent e)
+ {
+ }
+
+ public void insertUpdate (DocumentEvent e)
+ {
+ Element root = e.getDocument().getDefaultRootElement();
+ DocumentEvent.ElementChange ec = e.getChange(root);
+ harness2.checkPoint ("insertUpdate without adding children");
+ if (ec != null)
+ harness2.fail("Element Change should be null");
+ }
+
+ public void removeUpdate (DocumentEvent e)
+ {
+ Element root = e.getDocument().getDefaultRootElement();
+ DocumentEvent.ElementChange ec = e.getChange(root);
+ harness2.checkPoint ("removeUpdate without removing children");
+ if (ec != null)
+ harness2.fail("ElementChange should be null");
+ }
+ });
+
+ textArea.append("7");
+ try
+ {
+ textArea.getDocument().remove(3, 1);
+ }
+ catch (BadLocationException ble)
+ {
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Entries b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Entries
new file mode 100644
index 00000000..26107c0d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Entries
@@ -0,0 +1,2 @@
+/getStartOffset.java/1.1/Tue Feb 28 16:07:16 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Repository b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Repository
new file mode 100644
index 00000000..91eb9e49
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Root b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/getStartOffset.java b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/getStartOffset.java
new file mode 100644
index 00000000..e32ee9f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/LeafElement/getStartOffset.java
@@ -0,0 +1,93 @@
+/* getStartOffset.java -- Checks getStartOffset in LeafElement
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.AbstractDocument.LeafElement;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.AbstractDocument.BranchElement;
+import javax.swing.text.AbstractDocument.LeafElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the getStartOffset method in LeafElement.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ *
+ */
+public class getStartOffset implements Testlet
+{
+
+ /**
+ * The entry point in this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testIllegalDocumentLocation(harness);
+ testContentChange(harness);
+ }
+
+ /**
+ * Creates a LeafElement outside the document range and checks the
+ * getStartOffset() behaviour.
+ *
+ * @param h the test harness to use
+ */
+ private void testIllegalDocumentLocation(TestHarness h)
+ {
+ h.checkPoint("illegalDocumentLocation");
+ PlainDocument doc = new PlainDocument();
+ AbstractDocument.LeafElement l = doc.new LeafElement(null, null, 10, 20);
+ h.check(doc.getLength(), 0);
+ h.check(l.getStartOffset(), 10);
+ }
+
+ /**
+ * Creates a LeafElement and then changes something in the document. Tests
+ * if the getStartOffset() automatically adapts to the insertion or not.
+ *
+ * @param h the test harness to use
+ */
+ private void testContentChange(TestHarness h)
+ {
+ h.checkPoint("contentChange");
+ try
+ {
+ PlainDocument doc = new PlainDocument();
+ doc.insertString(0, "hallo", null);
+ AbstractDocument.LeafElement l = doc.new LeafElement(null, null, 20, 5);
+ h.check(l.getStartOffset(), 20);
+ doc.insertString(0, "hiyo", null);
+ h.check(l.getStartOffset(), 24);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail("BadLocationException");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/TestAbstractDocument.java b/gnu/testlet/javax/swing/text/AbstractDocument/TestAbstractDocument.java
new file mode 100644
index 00000000..f3f0de5f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/TestAbstractDocument.java
@@ -0,0 +1,55 @@
+/* TestAbstractDocument.java -- A concrete AbstractDocument subclass
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.AbstractDocument;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.Element;
+import javax.swing.text.GapContent;
+
+/**
+ * A concrete AbstractDocument subclass used for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class TestAbstractDocument extends AbstractDocument
+{
+
+ public TestAbstractDocument()
+ {
+ super(new GapContent());
+ }
+
+ public Element getParagraphElement(int pos)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Element getDefaultRootElement()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java b/gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java
new file mode 100644
index 00000000..8c3ad4ba
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/filterTest.java
@@ -0,0 +1,378 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Robert Schuster (robertschuster@fsfe.org)
+
+// 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.javax.swing.text.AbstractDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.undo.*;
+
+/**
+ * Tests if AbstractDocument methods properly call the DocumentFilter and
+ * GapContent (or not when the arguments have certain values).
+ */
+public class filterTest
+ implements Testlet
+{
+
+ int DEFAULT_INT = -1234;
+ String DEFAULT_STRING = "A specific value for this test";
+ AttributeSet DEFAULT_ATTRIBUTESET = new SimpleAttributeSet();
+
+ int testOffset;
+ int testLength;
+ String testString;
+ AttributeSet testAttr;
+ Exception testException;
+ int testWhere, testInsertWhere;
+ int testNitems;
+
+ public void test(TestHarness harness)
+ {
+ // The behavior we want to test is in AbstractDocument
+ // of which we just use PlainDocument as its simplest
+ // concrete implementation.
+ AbstractDocument doc = new PlainDocument();
+
+ // Put some example text into the document.
+ try
+ {
+ doc.insertString(0, "GNU Classpath\nGNU Classpath\nGNU Classpath\n", null);
+ }
+ catch (BadLocationException ble)
+ {
+ harness.verbose("Setting up the test failed. Something is seriously "
+ + "wrong with your AbstractDocument implementation.");
+ harness.fail("test setup");
+ return;
+ }
+
+ // Install the documen filter which copies the argument values.
+ doc.setDocumentFilter(new TestDocFilter());
+
+ harness.checkPoint("remove");
+
+ // Removal check 1: Although this would have no effect on the document
+ // the DocumentListener is called. However the GapContent should not be
+ // called.
+ reset();
+ try
+ {
+ doc.remove(0, 0);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, 0);
+ harness.check(testLength, 0);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Removal check 2: A negative length value is carried to the
+ // DocumentFilter but not to the GapContent.
+ reset();
+ try
+ {
+ doc.remove(0, -100);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, 0);
+ harness.check(testLength, -100);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Removal check 3: A negative offset and length value is carried to
+ // the DocumentFilter but not to the GapContent.
+ reset();
+ try
+ {
+ doc.remove(-222, -111);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, -222);
+ harness.check(testLength, -111);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Removal check 4: A negative offset value is carried to the
+ // DocumentFilter but not to the GapContent.
+ reset();
+ try
+ {
+ doc.remove(-100, 0);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, -100);
+ harness.check(testLength, 0);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ harness.checkPoint("insertString");
+
+ // Insertion check 1: When text is null the call has no effect.
+ reset();
+ try
+ {
+ doc.insertString(8888, null, SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, DEFAULT_INT);
+ harness.check(testAttr, DEFAULT_ATTRIBUTESET);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Insertion check 2: When text is "" the call has no effect.
+ reset();
+ try
+ {
+ doc.insertString(8888, "", SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, DEFAULT_INT);
+ harness.check(testAttr, DEFAULT_ATTRIBUTESET);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ harness.checkPoint("replace");
+
+ // Replacement check 1: When length is zero and text is null the
+ // call has no effect.
+ reset();
+ try
+ {
+ doc.replace(8888, 0, null, SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, DEFAULT_INT);
+ harness.check(testLength, DEFAULT_INT);
+ harness.check(testAttr, DEFAULT_ATTRIBUTESET);
+ harness.check(testString, DEFAULT_STRING);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Replacement check 2: When length is zero and text is "" the
+ // call has no effect.
+ reset();
+ try
+ {
+ doc.replace(8888, 0, "", SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, DEFAULT_INT);
+ harness.check(testLength, DEFAULT_INT);
+ harness.check(testAttr, DEFAULT_ATTRIBUTESET);
+ harness.check(testString, DEFAULT_STRING);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Replacement check 4: When length is non-zero (even negative)
+ // and text is null the call has is forwarded to the DocumentFilter
+ // but not to the GapContent.
+ reset();
+ try
+ {
+ doc.replace(0, -1, null, SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, 0);
+ harness.check(testLength, -1);
+ harness.check(testAttr, SimpleAttributeSet.EMPTY);
+ harness.check(testString, null);
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Replacement check 5: When length is non-zero (even negative)
+ // and text is "" the call has is forwarded to the DocumentFilter
+ // but not to the GapContent.
+ reset();
+ try
+ {
+ doc.replace(0, -1, "", SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, 0);
+ harness.check(testLength, -1);
+ harness.check(testAttr, SimpleAttributeSet.EMPTY);
+ harness.check(testString, "");
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Replacement check 6: When length is zero and text has a length > 0
+ // the call has is forwarded to the DocumentFilter and the GapContent.
+ reset();
+ try
+ {
+ doc.replace(10, 0, "FOO!", SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException ble)
+ {
+ testException = ble;
+ harness.debug(ble);
+ }
+
+ harness.check(testException, null);
+ harness.check(testOffset, 10);
+ harness.check(testLength, 0);
+ harness.check(testAttr, SimpleAttributeSet.EMPTY);
+ harness.check(testString, "FOO!");
+ harness.check(testWhere, DEFAULT_INT);
+ harness.check(testNitems, DEFAULT_INT);
+
+ // Note: It was expected that the call to replace() would result
+ // in a call to GapContent.insertString() but that could not be
+ // observed.
+ // The test therefore looks whether the string has been properly
+ // inserted.
+ try
+ {
+ harness.check(doc.getText(10, 4), "FOO!");
+ }
+ catch(BadLocationException ble)
+ {
+ harness.debug(ble);
+ harness.fail("replace6");
+ }
+
+ }
+
+ void reset()
+ {
+ testOffset = DEFAULT_INT;
+ testLength = DEFAULT_INT;
+ testString = DEFAULT_STRING;
+ testAttr = DEFAULT_ATTRIBUTESET;
+ testException = null;
+
+ testWhere = DEFAULT_INT;
+ testNitems = DEFAULT_INT;
+ testInsertWhere = DEFAULT_INT;
+ }
+
+ // An inner class which simply copies the argument values to fields of the outer class
+ // for later inspection.
+ class TestDocFilter extends DocumentFilter
+ {
+
+ public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException
+ {
+ testOffset = offset;
+ testString = string;
+ testAttr = attr;
+ super.insertString(fb, offset, string, attr);
+ }
+
+ public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException
+ {
+ testOffset = offset;
+ testLength = length;
+ super.remove(fb, offset, length);
+ }
+
+ public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException
+ {
+ testOffset = offset;
+ testLength = length;
+ testString = string;
+ testAttr = attr;
+ super.replace(fb, offset, length, string, attr);
+ }
+
+ }
+
+ class TestGapContent extends GapContent
+ {
+
+ public UndoableEdit insertString(int where, String str) throws BadLocationException
+ {
+ testInsertWhere = where;
+
+ return super.insertString(where, str);
+ }
+
+ public UndoableEdit remove(int where, int nitems) throws BadLocationException
+ {
+ testWhere = where;
+ testNitems = nitems;
+
+ return super.remove(where, nitems);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java b/gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java
new file mode 100644
index 00000000..be6964be
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AbstractDocument/getDocumentProperties.java
@@ -0,0 +1,57 @@
+/* getDocumentProperties.java -- Tests AbstractDocument.getDocumentProperties()
+ Copyright (C) 2006 Roman Kennke <roman@kennke.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestAbstractDocument
+
+package gnu.testlet.javax.swing.text.AbstractDocument;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+
+import javax.swing.text.AbstractDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getDocumentProperties implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testDefault(harness);
+
+ }
+
+ private void testDefault(TestHarness h)
+ {
+ AbstractDocument doc = new TestAbstractDocument();
+ Dictionary props = doc.getDocumentProperties();
+ Enumeration keys = props.keys();
+ while (keys.hasMoreElements())
+ {
+ Object key = keys.nextElement();
+ }
+ h.check(props.size(), 1);
+ h.check(props.get("i18n"), Boolean.FALSE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/AttributeSet/CVS/Entries b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Entries
new file mode 100644
index 00000000..9a40ebdc
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Entries
@@ -0,0 +1,2 @@
+/isEqual.java/1.1/Wed Dec 21 20:15:36 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/AttributeSet/CVS/Repository b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Repository
new file mode 100644
index 00000000..4f0e8b47
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/AttributeSet
diff --git a/gnu/testlet/javax/swing/text/AttributeSet/CVS/Root b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AttributeSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/AttributeSet/isEqual.java b/gnu/testlet/javax/swing/text/AttributeSet/isEqual.java
new file mode 100644
index 00000000..66c758f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/AttributeSet/isEqual.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.AttributeSet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleContext;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isEqual extends StyleContext implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ boolean caught = false;
+ SimpleAttributeSet set1 = new SimpleAttributeSet();
+ StyleContext.SmallAttributeSet set2 = createSmallAttributeSet(set1);
+
+ try
+ {
+ set1.isEqual(null);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+
+ harness.check(caught);
+ caught = false;
+
+ try
+ {
+ set2.isEqual(null);
+ }
+ catch (NullPointerException npe)
+ {
+ caught = true;
+ }
+ harness.check (caught);
+
+ harness.check (set2.isEqual(set1));
+ harness.check (set1.isEqual(set2));
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/BoxView/CVS/Entries b/gnu/testlet/javax/swing/text/BoxView/CVS/Entries
new file mode 100644
index 00000000..2a6656a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/BoxView/CVS/Entries
@@ -0,0 +1,2 @@
+/spans.java/1.1/Wed Dec 7 22:45:09 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/BoxView/CVS/Repository b/gnu/testlet/javax/swing/text/BoxView/CVS/Repository
new file mode 100644
index 00000000..a5dc35ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/BoxView/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/BoxView
diff --git a/gnu/testlet/javax/swing/text/BoxView/CVS/Root b/gnu/testlet/javax/swing/text/BoxView/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/BoxView/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/BoxView/spans.java b/gnu/testlet/javax/swing/text/BoxView/spans.java
new file mode 100644
index 00000000..53720615
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/BoxView/spans.java
@@ -0,0 +1,75 @@
+//Tags: JDK1.2
+
+//Copyright (C) 2005 Red Hat
+
+//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, Inc., 51 Franklin Street, Fifth Floor,
+//Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.BoxView;
+
+import java.awt.Dimension;
+
+import javax.swing.JTextArea;
+import javax.swing.plaf.TextUI;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class spans implements Testlet
+{
+ public static String markup =
+ "Questions are <font size=\"+1\" color=\"blue\">a burden</font> to others,\n" +
+ "answers <font size=\"+2\" color=\"red\">a prison</font> for oneself.";
+ public static JTextArea ta3 = new JTextArea(markup);
+
+ public void test(TestHarness harness)
+ {
+ ta3.setLineWrap(true);
+ TextUI ui = ta3.getUI();
+ View rootView = ui.getRootView(ta3);
+ View view = rootView.getView(0);
+
+ Dimension min = ta3.getMinimumSize();
+ harness.check (min.width, view.getMinimumSpan(View.X_AXIS));
+ harness.check (min.height, view.getMinimumSpan(View.Y_AXIS));
+ Dimension pref = ta3.getPreferredSize();
+ harness.check (pref.width, view.getPreferredSpan(View.X_AXIS));
+ harness.check (pref.height, view.getPreferredSpan(View.Y_AXIS));
+
+ // Asking for minimum size before asking for the preferred
+ // size results in minimum and pref being different
+ harness.check (!min.equals(pref));
+
+ // Asking for the minimum size after asking for the preferred
+ // size uses the cached preferred size
+ Dimension min3 = ta3.getMinimumSize();
+ harness.check (!min3.equals(min));
+ harness.check (min3, pref);
+
+ // Check that room has been allocated for the rows
+ // and that the width doesn't change based on the text.
+ int width = pref.width;
+ harness.check (width > 0);
+ ta3.setText("");
+ harness.check (width, ta3.getPreferredSize().width);
+ ta3.setText("\n\n\n\n\n\n\n");
+ harness.check (width, ta3.getPreferredSize().width);
+
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/CVS/Entries b/gnu/testlet/javax/swing/text/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/text/CVS/Entries.Log b/gnu/testlet/javax/swing/text/CVS/Entries.Log
new file mode 100644
index 00000000..5931db21
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/CVS/Entries.Log
@@ -0,0 +1,25 @@
+A D/AbstractDocument////
+A D/AttributeSet////
+A D/BoxView////
+A D/DefaultEditorKit////
+A D/DefaultFormatter////
+A D/DefaultStyledDocument////
+A D/ElementIterator////
+A D/FlowView////
+A D/GapContent////
+A D/InternationalFormatter////
+A D/MaskFormatter////
+A D/PlainDocument////
+A D/Segment////
+A D/SimpleAttributeSet////
+A D/StringContent////
+A D/StyleConstants////
+A D/StyleContext////
+A D/StyledEditorKit////
+A D/TabSet////
+A D/TabStop////
+A D/TextAction////
+A D/Utilities////
+A D/View////
+A D/ZoneView////
+A D/html////
diff --git a/gnu/testlet/javax/swing/text/CVS/Repository b/gnu/testlet/javax/swing/text/CVS/Repository
new file mode 100644
index 00000000..0ddc0e1e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text
diff --git a/gnu/testlet/javax/swing/text/CVS/Root b/gnu/testlet/javax/swing/text/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Entries b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Entries
new file mode 100644
index 00000000..974a4dc1
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Entries
@@ -0,0 +1,2 @@
+/getActions.java/1.3/Mon Jul 24 22:28:58 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Repository b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Repository
new file mode 100644
index 00000000..3fa37c94
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/DefaultEditorKit
diff --git a/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Root b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultEditorKit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java b/gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java
new file mode 100644
index 00000000..87f6a3e0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultEditorKit/getActions.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004, 2006 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.DefaultEditorKit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.Action;
+import javax.swing.text.DefaultEditorKit;
+import javax.swing.text.TextAction;
+
+public class getActions
+ implements Testlet
+{
+ private void checkForAction(TestHarness h, Action[] actions, String name)
+ {
+ boolean found = false;
+
+ for (int i = 0 ; i < actions.length; ++i)
+ if (((TextAction) actions[i]).getValue(Action.NAME).equals(name))
+ {
+ found = true;
+ break;
+ }
+
+ if (found) {
+ h.check(found, name);
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ DefaultEditorKit editorKit = new DefaultEditorKit();
+ Action[] actions = editorKit.getActions();
+
+ h.check(actions != null, "actions != null");
+ h.check(actions.length, 53, "number of actions");
+
+ checkForAction(h, actions, "caret-backward");
+ checkForAction(h, actions, "caret-begin-line");
+ checkForAction(h, actions, "caret-end-line");
+ checkForAction(h, actions, "caret-forward");
+ checkForAction(h, actions, "caret-next-word");
+ checkForAction(h, actions, "caret-previous-word");
+ checkForAction(h, actions, "copy-to-clipboard");
+ checkForAction(h, actions, "cut-to-clipboard");
+ checkForAction(h, actions, "delete-next");
+ checkForAction(h, actions, "delete-previous");
+ checkForAction(h, actions, "paste-from-clipboard");
+ checkForAction(h, actions, "select-all");
+ checkForAction(h, actions, "selection-backward");
+ checkForAction(h, actions, "selection-begin");
+ checkForAction(h, actions, "selection-begin-line");
+ checkForAction(h, actions, "selection-begin-word");
+ checkForAction(h, actions, "selection-end");
+ checkForAction(h, actions, "selection-end-line");
+ checkForAction(h, actions, "selection-end-word");
+ checkForAction(h, actions, "selection-forward");
+ checkForAction(h, actions, "selection-next-word");
+ checkForAction(h, actions, "selection-previous-word");
+ checkForAction(h, actions, "toggle-componentOrientation");
+ checkForAction(h, actions, "unselect");
+ checkForAction(h, actions, "beep");
+ checkForAction(h, actions, "caret-begin");
+ checkForAction(h, actions, "caret-begin-paragraph");
+ checkForAction(h, actions, "caret-begin-word");
+ checkForAction(h, actions, "caret-down");
+ checkForAction(h, actions, "caret-end");
+ checkForAction(h, actions, "caret-end-paragraph");
+ checkForAction(h, actions, "caret-end-word");
+ checkForAction(h, actions, "caret-up");
+ checkForAction(h, actions, "default-typed");
+ checkForAction(h, actions, "dump-model");
+ checkForAction(h, actions, "insert-break");
+ checkForAction(h, actions, "insert-content");
+ checkForAction(h, actions, "insert-tab");
+ checkForAction(h, actions, "page-down");
+ checkForAction(h, actions, "page-up");
+ checkForAction(h, actions, "selection-begin-paragraph");
+ checkForAction(h, actions, "selection-down");
+ checkForAction(h, actions, "selection-end-paragraph");
+ checkForAction(h, actions, "selection-page-down");
+ checkForAction(h, actions, "selection-page-left");
+ checkForAction(h, actions, "selection-page-right");
+ checkForAction(h, actions, "selection-page-up");
+ checkForAction(h, actions, "selection-up");
+ checkForAction(h, actions, "select-line");
+ checkForAction(h, actions, "select-paragraph");
+ checkForAction(h, actions, "select-word");
+ checkForAction(h, actions, "set-read-only");
+ checkForAction(h, actions, "set-writable");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Entries b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Entries
new file mode 100644
index 00000000..081f0b51
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Entries
@@ -0,0 +1,2 @@
+/getValueClass.java/1.1/Fri Jan 20 11:53:57 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Repository b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Repository
new file mode 100644
index 00000000..12d51a86
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/DefaultFormatter
diff --git a/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Root b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultFormatter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java b/gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java
new file mode 100644
index 00000000..4458c59f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultFormatter/getValueClass.java
@@ -0,0 +1,55 @@
+/* getValueClass.java -- Tests the getValueClass() method of DefaultFormatter
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.DefaultFormatter;
+
+import javax.swing.text.DefaultFormatter;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if the getValueClass() method works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getValueClass implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testDefaultValue(harness);
+ }
+
+ /**
+ * Tests the default value for this property, which should be null.
+ *
+ * @param h the test harness to use
+ */
+ private void testDefaultValue(TestHarness h)
+ {
+ h.checkPoint("defaultValue");
+ DefaultFormatter f = new DefaultFormatter();
+ h.check(f.getValueClass(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries
new file mode 100644
index 00000000..9a3ee90f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries
@@ -0,0 +1,4 @@
+/Create.java/1.1/Thu Jul 13 16:37:19 2006/-kk/
+/Insert.java/1.1/Thu Jul 13 16:20:56 2006/-kk/
+/insertString.java/1.1/Tue Sep 13 10:18:56 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries.Log b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries.Log
new file mode 100644
index 00000000..20b94266
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/ElementBuffer////
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Repository b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Repository
new file mode 100644
index 00000000..82d3fcff
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/DefaultStyledDocument
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Root b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/Create.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/Create.java
new file mode 100644
index 00000000..b2777f37
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/Create.java
@@ -0,0 +1,116 @@
+/* Insert.java -- Test bulk element insertion
+ Copyright (C) 2006 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.DefaultStyledDocument.ElementSpec;
+
+/**
+ * Tests the protected method to insert the elements. This method is
+ * important when modifying content of the derived HTMLDocument.
+ */
+public class Create extends Insert implements Testlet
+{
+ /**
+ * Override the package private method, exposing it here.
+ */
+ class OpenDocument extends DefaultStyledDocument
+ {
+ public void create(ElementSpec[] data)
+ {
+ super.create(data);
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ MutableAttributeSet a1 = new SimpleAttributeSet();
+ MutableAttributeSet a2 = new SimpleAttributeSet();
+ MutableAttributeSet a3 = new SimpleAttributeSet();
+
+ a1.addAttribute(StyleConstants.NameAttribute, "MY_FIRST");
+ a2.addAttribute(StyleConstants.NameAttribute, "MY_SECOND");
+ a3.addAttribute(StyleConstants.NameAttribute, "MY_MIDDLE");
+
+ ElementSpec s1 = new ElementSpec(a1, ElementSpec.ContentType,
+ "1".toCharArray(), 0, 1);
+ ElementSpec s2 = new ElementSpec(a2, ElementSpec.ContentType,
+ "2".toCharArray(), 0, 1);
+
+ ElementSpec sm = new ElementSpec(a3, ElementSpec.ContentType,
+ "m".toCharArray(), 0, 1);
+
+ OpenDocument d = new OpenDocument();
+
+ d.create(new ElementSpec[] { s1, sm, s2 });
+
+ harness.check(d.getLength(), 3, "Length");
+ try
+ {
+ harness.check(d.getText(0, d.getLength()), "1m2");
+ }
+ catch (BadLocationException e1)
+ {
+ throw new RuntimeException(e1);
+ }
+
+ Element[] e = d.getRootElements();
+
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ String r = b.toString();
+
+ // Sun 1.5.0_06-b05 swallows the first element.
+ // harness.check(r.indexOf("MY_FIRST") >= 0, r);
+ harness.check(r.indexOf("MY_MIDDLE") >= 0, r);
+ harness.check(r.indexOf("MY_SECOND") >= 0, r);
+ }
+
+ void dump(StringBuffer b, Element x)
+ {
+ Object name = x.getAttributes().getAttribute(StyleConstants.NameAttribute);
+ b.append("( ");
+ b.append(name+":"+x.getStartOffset()+"-"+x.getEndOffset());
+ b.append(" ch ");
+ for (int i = 0; i < x.getElementCount(); i++)
+ {
+ dump(b, x.getElement(i));
+ }
+ b.append(") ");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Entries b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Entries
new file mode 100644
index 00000000..2d4d0ba0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Entries
@@ -0,0 +1,16 @@
+/ElementStructure1.java/1.3/Mon Feb 6 15:24:54 2006//
+/ElementStructure2.java/1.1/Wed Dec 21 18:31:54 2005//
+/ElementStructure3.java/1.5/Mon Feb 6 15:24:54 2006//
+/ElementStructure4.java/1.5/Fri Jul 28 11:03:22 2006//
+/ElementStructure5.java/1.3/Mon Feb 6 15:24:54 2006//
+/ElementStructure6.java/1.3/Mon Feb 6 15:24:54 2006//
+/ElementStructure7.java/1.5/Mon Feb 6 15:24:54 2006//
+/ElementStructure8.java/1.11/Fri Jul 28 11:03:22 2006//
+/StyledDocument1.java/1.3/Mon Feb 6 15:24:54 2006//
+/StyledDocument2.java/1.3/Fri Jul 28 11:03:22 2006//
+/StyledDocument3.java/1.2/Mon Jan 23 18:31:58 2006//
+/StyledDocument4.java/1.3/Mon Feb 6 15:24:54 2006//
+/StyledDocument5.java/1.3/Mon Feb 6 15:24:54 2006//
+/StyledDocument6.java/1.3/Mon Feb 6 15:24:54 2006//
+/insert.java/1.5/Fri Jul 28 11:03:22 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Repository b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Repository
new file mode 100644
index 00000000..9c7b2bab
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Root b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java
new file mode 100644
index 00000000..e22bf8a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure1.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class ElementStructure1 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness
+ * the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ ElementStructure1 doc = new ElementStructure1();
+ Element root = doc.getDefaultRootElement();
+ try
+ {
+ // In this test no new LeafElements or BranchElements should be
+ // created. We're able to add everything to the original Element
+ // that was created when the document was constructed.
+ harness.checkPoint ("initial setup");
+ harness.check (root.getElementCount() == 1);
+ harness.check (root.getElement(0).getElementCount() == 1);
+ harness.check
+ (root.getElement(0).getElement(0).getElementCount() == 0);
+ doc.insertString(0, "the quick brown fox", null);
+
+ harness.checkPoint("after first insertion");
+ harness.check (root.getElementCount() == 1);
+ harness.check (root.getElement(0).getElementCount() == 1);
+ harness.check
+ (root.getElement(0).getElement(0).getElementCount() == 0);
+ harness.check (root.getEndOffset() == 20);
+ doc.insertString(6, "MIDDLE", null);
+
+ harness.checkPoint("after second insertion");
+ harness.check (root.getElementCount() == 1);
+ harness.check (root.getElement(0).getElementCount() == 1);
+ harness.check
+ (root.getElement(0).getElement(0).getElementCount() == 0);
+ harness.check (root.getEndOffset() == 26);
+ doc.insertString(0, "START", null);
+
+ harness.checkPoint("after third insertion");
+ harness.check (root.getElementCount() == 1);
+ harness.check (root.getElement(0).getElementCount() == 1);
+ harness.check
+ (root.getElement(0).getElement(0).getElementCount() == 0);
+ harness.check (root.getEndOffset() == 31);
+ doc.insertString(30, "END", null);
+
+ harness.checkPoint("after fourth insertion");
+ harness.check(root.getEndOffset() == 34);
+
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+ catch (BadLocationException ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java
new file mode 100644
index 00000000..8fbabbe0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure2.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.DefaultStyledDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class ElementStructure2 extends DefaultStyledDocument implements Testlet
+{
+
+ static TestHarness h2;
+
+ // Creates a new StyledDocument2 using an ElementBuffer2 as the buffer
+ public ElementStructure2()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ // Check that ElementSpecs were created with JoinPreviousDirection
+ for (int i = 0; i < data.length; i ++)
+ h2.check (data[i].getDirection() == ElementSpec.JoinPreviousDirection);
+ super.insertUpdate(data);
+ }
+ }
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ DefaultStyledDocument doc = new ElementStructure2();
+ Element root = doc.getDefaultRootElement();
+ try
+ {
+ // Add some regular text
+ doc.insertString(0, "the quick brown fox", null);
+ doc.insertString(6, "MIDDLE", null);
+ doc.insertString(0, "START", null);
+ doc.insertString(30, "END", null);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.debug(ex);
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java
new file mode 100644
index 00000000..eeac850b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure3.java
@@ -0,0 +1,154 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.Segment;
+
+public class ElementStructure3 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness
+ * the test harness to use
+ */
+public void test(TestHarness harness)
+ {
+ h2 = harness;
+ try
+ {
+ ElementStructure3 doc = new ElementStructure3();
+ doc.insertString(0, "Questions are <font size=\"+1\" color=\"blue\">a "
+ + "burden</font> to others,\n"
+ + "answers <font size=\"+2\" color=\"red\">a "
+ + "prison</font> for oneself.", null);
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+ catch (Exception t)
+ {
+ // t.printStackTrace();
+ harness.debug(t);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ }
+
+ static TestHarness h2;
+ static int numInserts = 0;
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure3()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int newLines = 0;
+ h2.check (ev.getLength() == 134);
+ h2.check (ev.getOffset() == 0);
+ Segment txt = new Segment();
+ try
+ {
+ getText(ev.getOffset(), ev.getLength() + 1, txt);
+ }
+ catch (BadLocationException ble)
+ {
+ }
+
+ int i = txt.offset;
+ for (; i < txt.offset + txt.count - 1; i ++)
+ {
+ if (txt.array[i] == '\n')
+ newLines ++;
+ }
+ h2.check (newLines == 1);
+ h2.check (txt.array[i] == '\n');
+ super.insertUpdate(ev, attr);
+ }
+
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check (data.length == 4);
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 70);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 64);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java
new file mode 100644
index 00000000..465690da
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure4.java
@@ -0,0 +1,199 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+public class ElementStructure4 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h2 = harness;
+ ElementStructure4 doc = new ElementStructure4();
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ Element root = doc.getDefaultRootElement();
+
+ // Add strike trough text.
+ atts.addAttribute(StyleConstants.StrikeThrough, Boolean.TRUE);
+ doc.insertString(0, "Strike through text.\n", atts);
+ atts.removeAttributes(atts);
+ harness.checkPoint("after first insertion");
+ harness.check(root.getElementCount(), 2);
+ harness.check(root.getElement(0).getStartOffset(), 0);
+ harness.check(root.getElement(0).getEndOffset(), 21);
+ harness.check(root.getElement(1).getStartOffset(), 21);
+ harness.check(root.getElement(1).getEndOffset(), 22);
+
+ // Add plain text in front.
+ doc.insertString(0, "a", null);
+ harness.checkPoint("after second insertion");
+ harness.check(root.getElement(0).getElementCount() == 2);
+ harness.check(root.getElement(1).getElementCount() == 1);
+
+ doc.insertString(1, "b", null);
+ harness.checkPoint("after second insertion");
+ harness.check(root.getElement(0).getElementCount() == 2);
+ harness.check(root.getElement(1).getElementCount() == 1);
+
+ harness.checkPoint("final structure");
+ Element first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 2);
+
+ Element second = root.getElement(0).getElement(1);
+ harness.check(second.getStartOffset() == 2);
+ harness.check(second.getEndOffset() == 23);
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+ catch (Exception t)
+ {
+ // t.printStackTrace();
+ harness.debug(t);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ }
+
+ static TestHarness h2;
+
+ static int numInserts = 0;
+
+ static int numLeaves = 0;
+
+ static int numBranches = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure4()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 0);
+ h2.check(l == 1);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("third doc event");
+ h2.check(o == 1);
+ h2.check(l == 1);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check (data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: third insertion");
+ h2.check (data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java
new file mode 100644
index 00000000..8efc9a89
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure5.java
@@ -0,0 +1,211 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class ElementStructure5 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ h2 = harness;
+ ElementStructure5 doc = new ElementStructure5();
+ Element root = doc.getDefaultRootElement();
+
+ // Add a first line of text.
+ doc.insertString(0, "first line of text. \n", null);
+ harness.check(root.getElementCount() == 2);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 21);
+ harness.check(root.getElement(1).getStartOffset() == 21);
+ harness.check(root.getElement(1).getEndOffset() == 22);
+
+
+ // Add another line of text.
+ doc.insertString(21, "second line of text. \n", null);
+ harness.check(root.getElementCount() == 3);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+ harness.check(root.getElement(2).getElementCount() == 1);
+
+
+ Element first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 21);
+
+ Element second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 21);
+ harness.check(second.getEndOffset() == 43);
+
+ Element third = root.getElement(2).getElement(0);
+ harness.check(third.getStartOffset() == 43);
+ harness.check(third.getEndOffset() == 44);
+
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+ catch (Exception t)
+ {
+ // t.printStackTrace();
+ harness.debug(t);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ }
+
+ static TestHarness h2;
+
+ static int numInserts = 0;
+
+ static int numLeaves = 0;
+
+ static int numBranches = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure5()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 21);
+ h2.check(l == 22);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check (data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 5);
+ h2.check(data[0].getType() == ElementSpec.EndTagType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 0);
+
+ h2.check(data[1].getType() == ElementSpec.StartTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.ContentType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 22);
+
+ h2.check(data[3].getType() == ElementSpec.EndTagType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 0);
+
+ h2.check(data[4].getType() == ElementSpec.StartTagType);
+ h2.check(data[4].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: third insertion");
+ h2.check (data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java
new file mode 100755
index 00000000..89cbc011
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure6.java
@@ -0,0 +1,189 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class ElementStructure6 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ ElementStructure6 doc = new ElementStructure6();
+ try
+ {
+ h2 = harness;
+ doc.insertString(0, "First line of text. \n", null);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ h2.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ //printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ static TestHarness h2;
+
+ static AbstractDocument.DefaultDocumentEvent docEvent = null;
+
+ static int numInserts = 0;
+
+ static int numLeaves = 0;
+
+ static int numBranches = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure6()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ docEvent = ev;
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ super.insertUpdate (ev, attr);
+ h2.check(docEvent.getChange(getDefaultRootElement()) != null);
+
+ }
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check (data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 5);
+ h2.check(data[0].getType() == ElementSpec.EndTagType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 0);
+
+ h2.check(data[1].getType() == ElementSpec.StartTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.ContentType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 22);
+
+ h2.check(data[3].getType() == ElementSpec.EndTagType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 0);
+
+ h2.check(data[4].getType() == ElementSpec.StartTagType);
+ h2.check(data[4].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: third insertion");
+ h2.check (data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ super.insertUpdate(data);
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ }
+
+ public void insert(int offset,
+ int length,
+ DefaultStyledDocument.ElementSpec[] data,
+ AbstractDocument.DefaultDocumentEvent de)
+ {
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ super.insert(offset, length, data, de);
+ h2.check(docEvent.getChange(getDefaultRootElement()) != null);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java
new file mode 100644
index 00000000..a51a9880
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure7.java
@@ -0,0 +1,197 @@
+/* ElementStructure7.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Vector;
+
+import javax.swing.event.DocumentEvent;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class ElementStructure7 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness
+ * the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ ElementStructure7 doc = new ElementStructure7();
+ h2 = harness;
+ try
+ {
+ doc.insertString(0, "aaaaaaaaa\nbbbbbbbbb", null);
+ doc.insertString(5, "\nN", null);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ h2.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ static TestHarness h2;
+
+ static DefaultDocumentEvent docEvent = null;
+
+ static int numInserts = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure7()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 5);
+ h2.check(l == 2);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate (ev, attr);
+ }
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check (data.length == 4);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 10);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+
+ h2.check(data[3].getType() == ElementSpec.ContentType);
+ h2.check(data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 9);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 4);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+
+ h2.check(data[3].getType() == ElementSpec.ContentType);
+ h2.check(data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 1);
+
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ super.insertUpdate(data);
+ h2.check(docEvent.getChange(getDefaultRootElement()) == null);
+ }
+
+ public void insert(int offset, int length, ElementSpec[] data,
+ DefaultDocumentEvent ev)
+ {
+ docEvent = new DefaultDocumentEvent(ev.getOffset(), ev.getLength(),
+ ev.getType());
+ super.insert(offset, length, data, docEvent);
+ h2.check(data.length == 4);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check(data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check(data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[3].getType() == ElementSpec.ContentType);
+ h2.check(data[3].getDirection() == ElementSpec.JoinNextDirection);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java
new file mode 100644
index 00000000..c96cda6d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/ElementStructure8.java
@@ -0,0 +1,679 @@
+/* ElementStructure8.java --
+ Copyright (C) 2006 Red Hat
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class ElementStructure8 extends DefaultStyledDocument implements Testlet
+{
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ try
+ {
+ /* TEST 0 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 0");
+ ElementStructure8 doc = new ElementStructure8();
+ Element root = doc.getDefaultRootElement();
+ doc.insertString(0, "first line of text. \n", null);
+ harness.check(root.getElementCount() == 2);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 21);
+ harness.check(root.getElement(1).getStartOffset() == 21);
+ harness.check(root.getElement(1).getEndOffset() == 22);
+ doc.insertString
+ (21, "second line of text. \n third line of text. \n", null);
+ harness.check(root.getElementCount() == 4);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+ harness.check(root.getElement(2).getElementCount() == 1);
+
+ Element first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 21);
+
+ Element second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 21);
+ harness.check(second.getEndOffset() == 43);
+
+ Element third = root.getElement(2).getElement(0);
+ harness.check(third.getStartOffset() == 43);
+ harness.check(third.getEndOffset() == 65);
+
+ Element fourth = root.getElement(3).getElement(0);
+ harness.check(fourth.getStartOffset() == 65);
+ harness.check(fourth.getEndOffset() == 66);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+
+ /* TEST 1 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 1");
+ doc = new ElementStructure8();
+ root = doc.getDefaultRootElement();
+ doc.insertString(0, "first line of text. \n", null);
+ harness.check(root.getElementCount() == 2);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 21);
+ harness.check(root.getElement(1).getStartOffset() == 21);
+ harness.check(root.getElement(1).getEndOffset() == 22);
+ doc.insertString(21, "second line of text. \n ", null);
+ harness.check(root.getElementCount() == 3);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+ harness.check(root.getElement(2).getElementCount() == 2);
+
+ first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 21);
+
+ second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 21);
+ harness.check(second.getEndOffset() == 43);
+
+ third = root.getElement(2).getElement(0);
+ harness.check(third.getStartOffset() == 43);
+ harness.check(third.getEndOffset() == 44);
+
+ fourth = root.getElement(2).getElement(1);
+ harness.check(fourth.getStartOffset() == 44);
+ harness.check(fourth.getEndOffset() == 45);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+
+ /* TEST 2 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 2");
+ doc = new ElementStructure8();
+ root = doc.getDefaultRootElement();
+ doc.insertString(0, "first line of text.", null);
+ harness.check(root.getElementCount() == 1);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 20);
+ doc.insertString(5, "second line \n of text.", null);
+ harness.check(root.getElementCount() == 2);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+
+ first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 18);
+
+ second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 18);
+ harness.check(second.getEndOffset() == 42);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+
+ /* TEST 3 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 3");
+ doc = new ElementStructure8();
+ root = doc.getDefaultRootElement();
+ doc.insertString(0, "first line of text. \n", null);
+ harness.check(root.getElementCount() == 2);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 21);
+ harness.check(root.getElement(1).getStartOffset() == 21);
+ harness.check(root.getElement(1).getEndOffset() == 22);
+ doc.insertString
+ (21, "\n second line of text. \n third line of text. \n", null);
+ harness.check(root.getElementCount() == 5);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+ harness.check(root.getElement(2).getElementCount() == 1);
+ harness.check(root.getElement(3).getElementCount() == 1);
+
+ first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 21);
+
+ second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 21);
+ harness.check(second.getEndOffset() == 22);
+
+ third = root.getElement(2).getElement(0);
+ harness.check(third.getStartOffset() == 22);
+ harness.check(third.getEndOffset() == 45);
+
+ fourth = root.getElement(3).getElement(0);
+ harness.check(fourth.getStartOffset() == 45);
+ harness.check(fourth.getEndOffset() == 67);
+
+ Element fifth = root.getElement(4).getElement(0);
+ harness.check(fifth.getStartOffset() == 67);
+ harness.check(fifth.getEndOffset() == 68);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+
+ /* TEST 4 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 4");
+ doc = new ElementStructure8();
+ root = doc.getDefaultRootElement();
+ doc.insertString
+ (0, "\n second line of text. \n third line of text. \n", null);
+ harness.check(root.getElementCount() == 4);
+ harness.check(root.getElement(0).getElementCount() == 1);
+ harness.check(root.getElement(1).getElementCount() == 1);
+ harness.check(root.getElement(2).getElementCount() == 1);
+ harness.check(root.getElement(3).getElementCount() == 1);
+
+ first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset() == 0);
+ harness.check(first.getEndOffset() == 1);
+
+ second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset() == 1);
+ harness.check(second.getEndOffset() == 24);
+
+ third = root.getElement(2).getElement(0);
+ harness.check(third.getStartOffset() == 24);
+ harness.check(third.getEndOffset() == 46);
+
+ fourth = root.getElement(3).getElement(0);
+ harness.check(fourth.getStartOffset() == 46);
+ harness.check(fourth.getEndOffset() == 47);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+
+ /* TEST 5 *////////////////////////////////////////////////////////////
+ harness.checkPoint("Test 5");
+ doc = new ElementStructure8();
+ root = doc.getDefaultRootElement();
+ doc.insertString(0, "first line of text.", null);
+ harness.check(root.getElementCount() == 1);
+ harness.check(root.getElement(0).getStartOffset() == 0);
+ harness.check(root.getElement(0).getEndOffset() == 20);
+ doc.insertString(19, "\n third line of text.", null);
+ harness.check(root.getElementCount(), 2);
+ harness.check(root.getElement(0).getElementCount(), 1);
+ harness.check(root.getElement(1).getElementCount(), 1);
+
+ first = root.getElement(0).getElement(0);
+ harness.check(first.getStartOffset(), 0);
+ harness.check(first.getEndOffset(), 20);
+
+ second = root.getElement(1).getElement(0);
+ harness.check(second.getStartOffset(), 20);
+ harness.check(second.getEndOffset(), 41);
+
+ //printElements(doc.getDefaultRootElement(), 0);
+ }
+ catch (Exception t)
+ {
+ t.printStackTrace();
+ harness.debug(t);
+ }
+ catch (AssertionError e)
+ {
+ e.printStackTrace();
+ harness.debug(e);
+ }
+ }
+
+ static TestHarness h2;
+
+ static int numInserts = 0;
+
+ // We override the constructor so we can explicitly set the type of the
+ // buffer to be our ElementBuffer2, allowing us to test some internals.
+ public ElementStructure8()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 21);
+ h2.check(l == 44);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("third doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("fourth doc event");
+ h2.check(o == 21);
+ h2.check(l == 23);
+ }
+ else if (numInserts == 4)
+ {
+ h2.checkPoint("fifth doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 5)
+ {
+ h2.checkPoint("sixth doc event");
+ h2.check(o == 5);
+ h2.check(l == 22);
+ }
+ else if (numInserts == 6)
+ {
+ h2.checkPoint("seventh doc event");
+ h2.check(o == 0);
+ h2.check(l == 21);
+ }
+ else if (numInserts == 7)
+ {
+ h2.checkPoint("eighth doc event");
+ h2.check(o == 21);
+ h2.check(l == 46);
+ }
+ else if (numInserts == 8)
+ {
+ h2.checkPoint("ninth doc event");
+ h2.check(o == 0);
+ h2.check(l == 46);
+ }
+ else if (numInserts == 9)
+ {
+ h2.checkPoint("tenth doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 10)
+ {
+ h2.checkPoint("eleventh doc event");
+ h2.check(o, 19);
+ h2.check(l, 21);
+ }
+
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document.
+ // This allows us to check that some values are correct internally within
+ // the ElementBuffer.
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ // This method allows us to check that the ElementSpecs generated by
+ // DefaultStyledDocument.insertUpdate are correct.
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts++;
+ if (numInserts == 1)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: first insertion");
+ h2.check(data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 8);
+ h2.check(data[0].getType() == ElementSpec.EndTagType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 0);
+
+ h2.check(data[1].getType() == ElementSpec.StartTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.ContentType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 22);
+
+ h2.check(data[3].getType() == ElementSpec.EndTagType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 0);
+
+ h2.check(data[4].getType() == ElementSpec.StartTagType);
+ h2.check(data[4].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+
+ h2.check(data[5].getType() == ElementSpec.ContentType);
+ h2.check(data[5].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[5].getOffset() == 0);
+ h2.check(data[5].getLength() == 22);
+
+ h2.check(data[6].getType() == ElementSpec.EndTagType);
+ h2.check(data[6].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[6].getOffset() == 0);
+ h2.check(data[6].getLength() == 0);
+
+ h2.check(data[7].getType() == ElementSpec.StartTagType);
+ h2.check(data[7].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[7].getOffset() == 0);
+ h2.check(data[7].getLength() == 0);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: third insertion");
+ h2.check(data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 4)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: fourth insertion");
+ h2.check (data.length == 6);
+ h2.check(data[0].getType() == ElementSpec.EndTagType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 0);
+
+ h2.check(data[1].getType() == ElementSpec.StartTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.ContentType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 22);
+
+ h2.check(data[3].getType() == ElementSpec.EndTagType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 0);
+
+ h2.check(data[4].getType() == ElementSpec.StartTagType);
+ h2.check(data[4].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+
+ h2.check(data[5].getType() == ElementSpec.ContentType);
+ h2.check(data[5].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[5].getOffset() == 0);
+ h2.check(data[5].getLength() == 1);
+ }
+ else if (numInserts == 5)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: fifth insertion");
+ h2.check(data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 19);
+ }
+ else if (numInserts == 6)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: sixth insertion");
+ h2.check(data.length == 4);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 13);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+
+ h2.check(data[3].getType() == ElementSpec.ContentType);
+ h2.check(data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 9);
+ }
+ else if (numInserts == 7)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: seventh insertion");
+ h2.check(data.length == 3);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 21);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+ }
+ else if (numInserts == 8)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 11);
+ h2.check(data[0].getType() == ElementSpec.EndTagType);
+ h2.check(data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 0);
+
+ h2.check(data[1].getType() == ElementSpec.StartTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.ContentType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 1);
+
+ h2.check(data[3].getType() == ElementSpec.EndTagType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 0);
+
+ h2.check(data[4].getType() == ElementSpec.StartTagType);
+ h2.check(data[4].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+
+ h2.check(data[5].getType() == ElementSpec.ContentType);
+ h2.check(data[5].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[5].getOffset() == 0);
+ h2.check(data[5].getLength() == 23);
+
+ h2.check(data[6].getType() == ElementSpec.EndTagType);
+ h2.check(data[6].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[6].getOffset() == 0);
+ h2.check(data[6].getLength() == 0);
+
+ h2.check(data[7].getType() == ElementSpec.StartTagType);
+ h2.check(data[7].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[7].getOffset() == 0);
+ h2.check(data[7].getLength() == 0);
+
+ h2.check(data[8].getType() == ElementSpec.ContentType);
+ h2.check(data[8].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[8].getOffset() == 0);
+ h2.check(data[8].getLength() == 22);
+
+ h2.check(data[9].getType() == ElementSpec.EndTagType);
+ h2.check(data[9].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[9].getOffset() == 0);
+ h2.check(data[9].getLength() == 0);
+
+ h2.check(data[10].getType() == ElementSpec.StartTagType);
+ h2.check(data[10].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check(data[10].getOffset() == 0);
+ h2.check(data[10].getLength() == 0);
+ }
+ else if (numInserts == 9)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: second insertion");
+ h2.check (data.length == 9);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 1);
+
+ h2.check(data[1].getType() == ElementSpec.EndTagType);
+ h2.check(data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset() == 0);
+ h2.check(data[1].getLength() == 0);
+
+ h2.check(data[2].getType() == ElementSpec.StartTagType);
+ h2.check(data[2].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[2].getOffset() == 0);
+ h2.check(data[2].getLength() == 0);
+
+ h2.check(data[3].getType() == ElementSpec.ContentType);
+ h2.check(data[3].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[3].getOffset() == 0);
+ h2.check(data[3].getLength() == 23);
+
+ h2.check(data[4].getType() == ElementSpec.EndTagType);
+ h2.check(data[4].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[4].getOffset() == 0);
+ h2.check(data[4].getLength() == 0);
+
+ h2.check(data[5].getType() == ElementSpec.StartTagType);
+ h2.check(data[5].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[5].getOffset() == 0);
+ h2.check(data[5].getLength() == 0);
+
+ h2.check(data[6].getType() == ElementSpec.ContentType);
+ h2.check(data[6].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[6].getOffset() == 0);
+ h2.check(data[6].getLength() == 22);
+
+ h2.check(data[7].getType() == ElementSpec.EndTagType);
+ h2.check(data[7].getDirection() == ElementSpec.OriginateDirection);
+ h2.check(data[7].getOffset() == 0);
+ h2.check(data[7].getLength() == 0);
+
+ h2.check(data[8].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[8].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check(data[8].getOffset() == 0);
+ h2.check(data[8].getLength() == 0);
+ }
+ else if (numInserts == 10)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: tenth insertion");
+ h2.check(data.length == 1);
+ h2.check(data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset() == 0);
+ h2.check(data[0].getLength() == 19);
+ }
+ else if (numInserts == 11)
+ {
+ h2.checkPoint("ElementBuffer insertUpdate: eleventh insertion");
+ h2.check (data.length, 4);
+ h2.check(data[0].getType(), ElementSpec.ContentType);
+ h2.check(data[0].getDirection(), ElementSpec.JoinPreviousDirection);
+ h2.check(data[0].getOffset(), 0);
+ h2.check(data[0].getLength(), 1);
+
+ h2.check(data[1].getType(), ElementSpec.EndTagType);
+ h2.check(data[1].getDirection(), ElementSpec.OriginateDirection);
+ h2.check(data[1].getOffset(), 0);
+ h2.check(data[1].getLength(), 0);
+
+ h2.check(data[2].getType(), ElementSpec.StartTagType);
+ h2.check(data[2].getDirection(), ElementSpec.JoinFractureDirection);
+ h2.check(data[2].getOffset(), 0);
+ h2.check(data[2].getLength(), 0);
+
+ h2.check(data[3].getType(), ElementSpec.ContentType);
+ h2.check(data[3].getDirection(), ElementSpec.JoinNextDirection);
+ h2.check(data[3].getOffset(), 0);
+ h2.check(data[3].getLength(), 20);
+
+ }
+
+ else
+ h2.fail("too many ElementSpecs created");
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java
new file mode 100644
index 00000000..0bb2bb32
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument1.java
@@ -0,0 +1,156 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+
+public class StyledDocument1 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument1 doc = new StyledDocument1();
+ try
+ {
+ doc.insertString(0, "aaaaaaaaa\nbbbbbbbbb", null);
+ doc.insertString(10, "N", null);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+
+ // Creates a new StyledDocument1 using an ElementBuffer2 as the buffer
+ public StyledDocument1()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 10);
+ h2.check(l == 1);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 10);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 9);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.EndTagType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 0);
+
+ h2.check (data[1].getType() == ElementSpec.StartTagType);
+ h2.check (data[1].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.ContentType);
+ h2.check (data[2].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 1);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java
new file mode 100644
index 00000000..614a50de
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument2.java
@@ -0,0 +1,275 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+public class StyledDocument2 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument2 doc = new StyledDocument2();
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ try
+ {
+ atts.addAttribute(StyleConstants.StrikeThrough, Boolean.TRUE);
+ doc.insertString(0, "bbbbb", atts);
+ doc.insertString(5, "aaaaa", null);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+
+ // Creates a new StyledDocument2 using an ElementBuffer2 as the buffer
+ public StyledDocument2()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 5);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 5);
+ h2.check(l == 5);
+ }
+ else
+ h2.fail ("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ h2.check
+ (getDefaultRootElement().getElement(0).getElementCount() ==
+ (numInserts + 1));
+ }
+
+ // Overriding this method allows us to check that the proper LeafElements
+ // are being created.
+ protected Element createLeafElement(Element parent,
+ AttributeSet a, int p0, int p1)
+ {
+ numLeaves++;
+ if (numLeaves== 1)
+ {
+ h2.checkPoint ("create first leaf element");
+ h2.check (p0, 0);
+ h2.check (p1, 5);
+ try
+ {
+ h2.check (parent.getStartOffset(), 0);
+ h2.check (parent.getEndOffset(), 6);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("parent Element should have children, but has none.");
+ h2.fail ("parent Element should have children, but has none.");
+ }
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ }
+ else if (numLeaves == 2)
+ {
+ h2.checkPoint ("create second leaf element");
+ h2.check (p0 == 5);
+ h2.check (p1 == 6);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 6);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("parent Element should have children, but has none.");
+ h2.fail ("parent Element should have children, but has none.");
+ }
+
+ h2.check (a.getAttributeCount() == 0);
+ }
+ else if (numLeaves == 3)
+ {
+ h2.checkPoint ("create third leaf element");
+ h2.check (p0 == 0);
+ h2.check (p1 == 5);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 11);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ }
+ else if (numLeaves == 4)
+ {
+ h2.checkPoint ("create fourth leaf element");
+ h2.check (p0 == 5);
+ h2.check (p1 == 10);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 11);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check (a.getAttributeCount() == 0);
+ }
+ else
+ h2.fail ("too many leaf elements created");
+ return super.createLeafElement(parent, a, p0, p1);
+ }
+
+ // Overriding this method allows us to check that the proper BranchElements
+ // are being created.
+ protected Element createBranchElement(Element parent,
+ AttributeSet a)
+ {
+ numBranches ++;
+ h2.fail ("too many branch elements created");
+ return super.createBranchElement(parent, a);
+ }
+
+ // Prints some spaces.
+ public static void pad(int pad)
+ {
+ for (int i = 0; i < pad; i++)
+ System.out.print(" ");
+ }
+
+ // Displays the Element hierarchy starting with <code>start</code>.
+ // This is just debugging code.
+ public static void printElements (Element start, int pad)
+ {
+ pad(pad);
+ if (pad == 0)
+ System.out.println ("ROOT ELEMENT ("+start.getStartOffset()+", "
+ + start.getEndOffset()+")");
+ else if (start instanceof AbstractDocument.BranchElement)
+ System.out.println ("BranchElement ("+start.getStartOffset()+", "
+ + start.getEndOffset()+")");
+ else
+ {
+ try
+ {
+ System.out.println ("LeafElement ("+start.getStartOffset()+", "
+ + start.getEndOffset()+"): "
+ + start.getAttributes().getAttributeCount()
+ + ": "
+ + start.getDocument().
+ getText(start.getStartOffset(),
+ start.getEndOffset() -
+ start.getStartOffset()));
+ }
+ catch (BadLocationException ble)
+ {
+ }
+ }
+ for (int i = 0; i < start.getElementCount(); i ++)
+ printElements (start.getElement(i), pad+3);
+ }
+
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 5);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 5);
+ }
+ else
+ h2.fail("too many ElementSpecs created");
+
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java
new file mode 100644
index 00000000..bf61d4e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument3.java
@@ -0,0 +1,347 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
+
+public class StyledDocument3 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument doc = new StyledDocument3();
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ try
+ {
+ atts.addAttribute(StyleConstants.StrikeThrough, Boolean.TRUE);
+ doc.insertString(0, "bbbbb", atts);
+ doc.insertString(5, "aaaaa", null);
+ doc.insertString(5, "N", atts);
+ atts.addAttribute(StyleConstants.Bold, Boolean.TRUE);
+ doc.insertString(6, "M", atts);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+ // Creates a new StyledDocument3 using an ElementBuffer2 as the buffer
+ public StyledDocument3()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 5);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 5);
+ h2.check(l == 5);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("third doc event");
+ h2.check(o == 5);
+ h2.check(l == 1);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("fourth doc event");
+ h2.check(o == 6);
+ h2.check(l == 1);
+ }
+ else
+ h2.fail("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // Overriding this method allows us to check that the proper LeafElements
+ // are being created.
+ protected Element createLeafElement(Element parent,
+ AttributeSet a, int p0, int p1)
+ {
+ numLeaves++;
+ if (numLeaves== 1)
+ {
+ h2.checkPoint ("create first leaf element");
+ h2.check (p0 == 0);
+ h2.check (p1 == 5);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 6);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("parent Element should have children, but has none.");
+ h2.fail ("parent Element should have children, but has none.");
+ }
+ h2.check (a.getAttributeCount() == 1);
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ }
+ else if (numLeaves == 2)
+ {
+ h2.checkPoint ("create second leaf element");
+ h2.check (p0 == 5);
+ h2.check (p1 == 6);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 6);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("parent Element should have children, but has none.");
+ h2.fail ("parent Element should have children, but has none.");
+ }
+ h2.check (a.getAttributeCount() == 0);
+ }
+ else if (numLeaves == 3)
+ {
+ h2.checkPoint ("create third leaf element");
+ h2.check (p0 == 0);
+ h2.check (p1 == 5);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 11);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check (a.getAttributeCount() == 1);
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ }
+ else if (numLeaves == 4)
+ {
+ h2.checkPoint ("create fourth leaf element");
+ h2.check (p0 == 5);
+ h2.check (p1 == 10);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 11);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check (a.getAttributeCount() == 0);
+ }
+ else if (numLeaves == 5)
+ {
+ h2.checkPoint ("create fifth leaf element");
+ h2.check (p0 == 0);
+ h2.check (p1 == 6);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 13);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check (a.getAttributeCount() == 1);
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ }
+ else if (numLeaves == 6)
+ {
+ h2.checkPoint ("create sixth leaf element");
+ h2.check (p0 == 6);
+ h2.check (p1 == 7);
+ try
+ {
+ h2.check (parent.getStartOffset() == 0);
+ h2.check (parent.getEndOffset() == 13);
+ }
+ catch (Exception e)
+ {
+ // I put 2 fails here so that the total number of tests will remain
+ // the same whether we pass or fail these tests.
+ h2.fail ("branch element should have children, but has none");
+ h2.fail ("branch element should have children, but has none");
+ }
+ h2.check (a.getAttributeCount() == 2);
+ h2.check
+ (a.getAttribute(StyleConstants.StrikeThrough) == Boolean.TRUE);
+ h2.check (a.getAttribute(StyleConstants.Bold) == Boolean.TRUE);
+ }
+ else
+ h2.fail ("too many leaf elements created");
+ return super.createLeafElement(parent, a, p0, p1);
+ }
+
+ // Overriding this method allows us to check that the proper BranchElements
+ // are being created.
+ protected Element createBranchElement(Element parent,
+ AttributeSet a)
+ {
+ numBranches ++;
+ h2.fail ("too many branch elements created");
+ return super.createBranchElement(parent, a);
+ }
+
+ // Prints some spaces.
+ public static void pad(int pad)
+ {
+ for (int i = 0; i < pad; i++)
+ System.out.print(" ");
+ }
+
+ // Displays the Element hierarchy starting with <code>start</code>.
+ // This is just debugging code.
+ public static void printElements (Element start, int pad)
+ {
+ pad(pad);
+ if (pad == 0)
+ System.out.println ("ROOT ELEMENT ("+start.getStartOffset()+", "
+ + start.getEndOffset()+")");
+ else if (start instanceof AbstractDocument.BranchElement)
+ System.out.println ("BranchElement ("+start.getStartOffset()+", "
+ + start.getEndOffset()+")");
+ else
+ {
+ try
+ {
+ System.out.println ("LeafElement ("+start.getStartOffset()+", "
+ + start.getEndOffset()+"): "
+ + start.getAttributes().getAttributeCount()
+ + ": "
+ + start.getDocument().
+ getText(start.getStartOffset(),
+ start.getEndOffset() -
+ start.getStartOffset()));
+ }
+ catch (BadLocationException ble)
+ {
+ }
+ }
+ for (int i = 0; i < start.getElementCount(); i ++)
+ printElements (start.getElement(i), pad+3);
+ }
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 5);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 5);
+ }
+ else if (numInserts == 3)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 1);
+ }
+ else if (numInserts == 4)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 1);
+ }
+
+ super.insertUpdate(data);
+ }
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java
new file mode 100644
index 00000000..f3ff516d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument4.java
@@ -0,0 +1,164 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.StyledDocument;
+
+public class StyledDocument4 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument doc = new StyledDocument4();
+ try
+ {
+ doc.insertString(0, "aaaaaaaaa\nbbbbbbbbb", null);
+ doc.insertString(5, "\nN", null);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+ // Creates a new StyledDocument4 using an ElementBuffer2 as the buffer
+ public StyledDocument4()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 5);
+ h2.check(l == 2);
+ }
+ else
+ h2.fail("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 10);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 9);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 1);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 1);
+ }
+ super.insertUpdate(data);
+ }
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java
new file mode 100644
index 00000000..89597e75
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument5.java
@@ -0,0 +1,186 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.StyledDocument;
+
+public class StyledDocument5 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument doc = new StyledDocument5();
+ try
+ {
+ doc.insertString(0, "aaaaaaaaa\nbbbbbbbbb", null);
+ doc.insertString(10, "N", null);
+ doc.insertString(5, "\nhellooooo", null);
+ }
+ catch (Exception ex)
+ {
+ //ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+ // Creates a new StyledDocument5 using an ElementBuffer2 as the buffer
+ public StyledDocument5()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 19);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 10);
+ h2.check(l == 1);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("third doc event");
+ h2.check(o == 5);
+ h2.check(l == 10);
+ }
+ else
+ h2.fail("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 10);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 9);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.EndTagType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 0);
+
+ h2.check (data[1].getType() == ElementSpec.StartTagType);
+ h2.check (data[1].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.ContentType);
+ h2.check (data[2].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 1);
+ }
+ else if (numInserts == 3)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 1);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 9);
+ }
+
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java
new file mode 100644
index 00000000..38a22ede
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/StyledDocument6.java
@@ -0,0 +1,182 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
+
+public class StyledDocument6 extends DefaultStyledDocument implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h2 = harness;
+ StyledDocument doc = new StyledDocument6();
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ try
+ {
+ doc.insertString(0, "aaa", null);
+ atts.addAttribute(StyleConstants.Underline, Boolean.TRUE);
+ doc.insertString(3, "bbb", atts);
+ atts.removeAttributes(atts);
+ atts.addAttribute(StyleConstants.StrikeThrough, Boolean.TRUE);
+ doc.insertString(6, "ccc", atts);
+ atts.removeAttributes(atts);
+ atts.addAttribute(StyleConstants.Underline, Boolean.TRUE);
+ doc.insertString(5, "\nB", atts);
+ }
+ catch (Exception ex)
+ {
+ // ex.printStackTrace();
+ harness.debug(ex);
+ }
+ catch (AssertionError e)
+ {
+ // e.printStackTrace();
+ harness.debug(e);
+ }
+ // printElements(doc.getDefaultRootElement(), 0);
+ }
+
+ // A variable to keep track of the number of times text has been inserted
+ static int numInserts = 0;
+
+ static TestHarness h2;
+
+ static int numLeaves = 0;
+ static int numBranches = 0;
+
+
+ // Creates a new StyledDocument6 using an ElementBuffer2 as the buffer
+ public StyledDocument6()
+ {
+ super();
+ buffer = new ElementBuffer2(createDefaultRoot());
+ }
+
+ // Overriding this method allows us to check that the right number
+ // of newLines was encountered and that the event has the proper
+ // offset and length.
+ protected void insertUpdate(DefaultDocumentEvent ev, AttributeSet attr)
+ {
+ int l = ev.getLength();
+ int o = ev.getOffset();
+ if (numInserts == 0)
+ {
+ h2.checkPoint("first doc event");
+ h2.check(o == 0);
+ h2.check(l == 3);
+ }
+ else if (numInserts == 1)
+ {
+ h2.checkPoint("second doc event");
+ h2.check(o == 3);
+ h2.check(l == 3);
+ }
+ else if (numInserts == 2)
+ {
+ h2.checkPoint("third doc event");
+ h2.check(o == 6);
+ h2.check(l == 3);
+ }
+ else if (numInserts == 3)
+ {
+ h2.checkPoint("fourth doc event");
+ h2.check(o == 5);
+ h2.check(l == 2);
+ }
+ else
+ h2.fail("too many calls to DefaultStyledDocument.insertUpdate");
+
+ super.insertUpdate(ev, attr);
+ }
+
+ // A class to be the buffer of the styled document that also prints out some
+ // debugging info and checks that internal structure is correct
+ public class ElementBuffer2 extends ElementBuffer
+ {
+ public ElementBuffer2(Element root)
+ {
+ super(root);
+ }
+
+ protected void insertUpdate(ElementSpec[] data)
+ {
+ numInserts ++;
+ if (numInserts == 1)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 3);
+ }
+ else if (numInserts == 2)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 3);
+ }
+ else if (numInserts == 3)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check (data[0].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 3);
+ }
+ else if (numInserts == 4)
+ {
+ h2.check (data[0].getType() == ElementSpec.ContentType);
+ h2.check
+ (data[0].getDirection() == ElementSpec.JoinPreviousDirection);
+ h2.check (data[0].getOffset() == 0);
+ h2.check (data[0].getLength() == 1);
+
+ h2.check (data[1].getType() == ElementSpec.EndTagType);
+ h2.check (data[1].getDirection() == ElementSpec.OriginateDirection);
+ h2.check (data[1].getOffset() == 0);
+ h2.check (data[1].getLength() == 0);
+
+ h2.check (data[2].getType() == ElementSpec.StartTagType);
+ h2.check
+ (data[2].getDirection() == ElementSpec.JoinFractureDirection);
+ h2.check (data[2].getOffset() == 0);
+ h2.check (data[2].getLength() == 0);
+
+ h2.check (data[3].getType() == ElementSpec.ContentType);
+ h2.check (data[3].getDirection() == ElementSpec.JoinNextDirection);
+ h2.check (data[3].getOffset() == 0);
+ h2.check (data[3].getLength() == 1);
+ }
+ super.insertUpdate(data);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java
new file mode 100644
index 00000000..d854a772
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/ElementBuffer/insert.java
@@ -0,0 +1,1167 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.text.DefaultStyledDocument.ElementBuffer;
+
+import java.util.EmptyStackException;
+
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Extensive tests for the ElementBuffer.insert() method. In order to check
+ * this method, we make use of the DefaultStyledDocument.insert() method, which
+ * passes an array of ElementSpecs to the element buffer. We then check for
+ * different scenarios the resulting document structure and the document event
+ * that is fired.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+// TODO: Add more tests for EndTagType and StartTagType.
+public class insert implements Testlet, DocumentListener
+{
+
+ /**
+ * The document event that is fired in response to an element change. We
+ * want to check that to see if the correct event is fired.
+ */
+ private DocumentEvent documentEvent;
+
+ /**
+ * A document for testing. It overrides some protected method for public
+ * access.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+ static class TestDocument extends DefaultStyledDocument
+ {
+ /**
+ * Overridden to provide public access.
+ *
+ * @param offset the offset at which to insert the data
+ * @param data the data spec to insert
+ */
+ public void insert(int offset, ElementSpec[] data)
+ {
+ try
+ {
+ super.insert(offset, data);
+ }
+ catch (BadLocationException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testOriginate1(harness);
+ testOriginate2(harness);
+ testOriginate3(harness);
+ testJoinPrevious1(harness);
+ testJoinPrevious2(harness);
+ testJoinPrevious3(harness);
+ testJoinNext1(harness);
+ testJoinNext2(harness);
+ testJoinNext3(harness);
+ testEndTag1(harness);
+ testEndTag2(harness);
+ testEndTag3(harness);
+ testEndTag4(harness);
+ testEndTag5(harness);
+
+ testNewlines(harness);
+ testNewlines2(harness);
+ }
+
+ /**
+ * Tests content insertion with OriginateDirection. This test inserts
+ * a content element between two existing elements.
+ *
+ * @param h the test harness to use
+ */
+ private void testOriginate1(TestHarness h)
+ {
+ h.checkPoint("testOriginate1");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Check precondition. (3 child elements).
+ Element root = doc.getDefaultRootElement();
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+
+ // Now check what comes out when we insert one element at 5.
+ doc.insert(5, specs);
+
+ // We have one paragraph in the root element.
+ root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 4 children in the paragraph.
+ par = root.getElement(0);
+ h.check(par.getElementCount(), 4);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 10);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 10);
+ h.check(el3.getEndOffset(), 15);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // Two removals and one add for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getChildrenRemoved().length, 1);
+ h.check(ec.getIndex(), 0);
+ }
+
+ /**
+ * Tests content insertion with OriginateDirection. This test inserts
+ * a content element in between the first existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testOriginate2(TestHarness h)
+ {
+ h.checkPoint("testOriginate2");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 2.
+ doc.insert(2, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 5 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 5);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 2);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 2);
+ h.check(el2.getEndOffset(), 7);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 7);
+ h.check(el3.getEndOffset(), 10);
+ Element el4 = par.getElement(3);
+ h.check(el4.getStartOffset(), 10);
+ h.check(el4.getEndOffset(), 15);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // Two removals and one add for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 3);
+ h.check(ec.getChildrenRemoved().length, 1);
+ h.check(ec.getIndex(), 0);
+ }
+
+ /**
+ * Tests content insertion with OriginateDirection. This test inserts
+ * a content element in between the second existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testOriginate3(TestHarness h)
+ {
+ h.checkPoint("testOriginate3");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 5 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 5);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 7);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 7);
+ h.check(el3.getEndOffset(), 12);
+ Element el4 = par.getElement(3);
+ h.check(el4.getStartOffset(), 12);
+ h.check(el4.getEndOffset(), 15);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // Two removals and one add for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 3);
+ h.check(ec.getChildrenRemoved().length, 1);
+ h.check(ec.getIndex(), 1);
+ }
+
+ /**
+ * Tests content insertion with JoinPreviousDirection. This test inserts
+ * a content element between two existing elements.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinPrevious1(TestHarness h)
+ {
+ h.checkPoint("testJoinPrevious1");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 5.
+ spec.setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ documentEvent = null;
+ doc.insert(5, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 10);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 10);
+ h.check(el2.getEndOffset(), 15);
+
+ // No changes for the document.
+ // TODO: The document event here is an InsertUndo from GapContent.
+ // We currently don't have such thing and return null.
+ // h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests content insertion with JoinPreviousDirection. This test inserts
+ * a content element in between the first existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinPrevious2(TestHarness h)
+ {
+ h.checkPoint("testJoinPrevious2");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 2.
+ spec.setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ documentEvent = null;
+ doc.insert(2, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 10);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 10);
+ h.check(el2.getEndOffset(), 15);
+
+ // No changes for the document.
+ // TODO: The document event here is an InsertUndo from GapContent.
+ // We currently don't have such thing and return null.
+ // h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests content insertion with JoinPreviousDirection. This test inserts
+ * a content element in between the second existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinPrevious3(TestHarness h)
+ {
+ h.checkPoint("testJoinPrevious3");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ spec.setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ documentEvent = null;
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 5 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 15);
+
+ // No changes for the document.
+ // TODO: The document event here is an InsertUndo from GapContent.
+ // We currently don't have such thing and return null.
+ // h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests content insertion with JoinNextDirection. This test inserts
+ * a content element between two existing elements.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinNext1(TestHarness h)
+ {
+ h.checkPoint("testJoinNext1");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 5.
+ spec.setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ doc.insert(5, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 15);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // No structural change for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getChildrenRemoved().length, 2);
+ h.check(ec.getIndex(), 0);
+ }
+
+ /**
+ * Tests content insertion with JoinPreviousDirection. This test inserts
+ * a content element in between the first existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinNext2(TestHarness h)
+ {
+ h.checkPoint("testJoinNext2");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 2.
+ spec.setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ doc.insert(2, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 2);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 2);
+ h.check(el2.getEndOffset(), 15);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // No structural change for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getChildrenRemoved().length, 2);
+ h.check(ec.getIndex(), 0);
+ }
+
+ /**
+ * Tests content insertion with JoinPreviousDirection. This test inserts
+ * a content element in between the second existing element.
+ *
+ * @param h the test harness to use
+ */
+ private void testJoinNext3(TestHarness h)
+ {
+ h.checkPoint("testJoinNext3");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ spec.setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 7);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 7);
+ h.check(el3.getEndOffset(), 16);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec, null);
+ // No structural change for the paragraph.
+ ec = documentEvent.getChange(par);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getChildrenRemoved().length, 2);
+ h.check(ec.getIndex(), 1);
+ }
+
+ /**
+ * Tests insertion of some simple EndTags. This test inserts 3
+ * EndTag elements in between the second existing element. This is more
+ * then the element stack has to offer. Still, this action alone does
+ * nothing. Obviously the real insertion is only performed when it is
+ * followed by a content insertion. For this case, see the other EndTag
+ * tests.
+ *
+ * @param h the test harness to use
+ */
+ private void testEndTag1(TestHarness h)
+ {
+ h.checkPoint("testEndTag1");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ spec = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.EndTagType);
+ specs = new TestDocument.ElementSpec[]{ spec, spec, spec };
+ documentEvent = null;
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 10);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 10);
+ h.check(el3.getEndOffset(), 11);
+
+ // Now check the document event that was fired.
+ // No changes for the root.
+ h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests insertion of some simple EndTags. This test inserts 3
+ * EndTag elements in between the second existing element. This is more
+ * then the element stack has to offer. Still, this action alone does
+ * nothing. Therefore this insertion is followed by a StartTag insertion.
+ * Obviously the real insertion is only performed when it is
+ * followed by a content insertion. For this case, see the other EndTag
+ * tests.
+ *
+ * @param h the test harness to use
+ */
+ private void testEndTag2(TestHarness h)
+ {
+ h.checkPoint("testEndTag2");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ TestDocument.ElementSpec spec1 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.EndTagType);
+ TestDocument.ElementSpec spec2 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.StartTagType);
+ specs = new TestDocument.ElementSpec[]{ spec1, spec1, spec1, spec2};
+ documentEvent = null;
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 10);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 10);
+ h.check(el3.getEndOffset(), 11);
+
+ // No structural change for the paragraph.
+ h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests insertion of some simple EndTags. This test inserts 3
+ * EndTag elements in between the second existing element. This is more
+ * then the element stack has to offer. Still, this action alone does
+ * nothing. Therefore this insertion is followed by a content insertion.
+ * This triggers the insertion of the end tags and since we have inserted
+ * more end tags than the stack has to offer, this throws an
+ * EmptyStackException.
+ *
+ * @param h the test harness to use
+ */
+ private void testEndTag3(TestHarness h)
+ {
+ h.checkPoint("testEndTag3");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ TestDocument.ElementSpec spec1 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.EndTagType);
+ specs = new TestDocument.ElementSpec[]{ spec1, spec1, spec};
+ documentEvent = null;
+ try
+ {
+ doc.insert(7, specs);
+ h.fail("EmptyStackException must be thrown");
+ }
+ catch (EmptyStackException ex)
+ {
+ h.check(true);
+ }
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 1);
+
+ // We should now have 3 children in the paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 3);
+ Element el1 = par.getElement(0);
+ h.check(el1.getStartOffset(), 0);
+ h.check(el1.getEndOffset(), 5);
+ Element el2 = par.getElement(1);
+ h.check(el2.getStartOffset(), 5);
+ h.check(el2.getEndOffset(), 15);
+ Element el3 = par.getElement(2);
+ h.check(el3.getStartOffset(), 15);
+ h.check(el3.getEndOffset(), 16);
+
+ // No structural change for the paragraph.
+ h.check(documentEvent, null);
+ }
+
+ /**
+ * Tests insertion of some simple EndTags. This test inserts 3
+ * EndTag elements in between the second existing element. This is more
+ * then the element stack has to offer. Still, this action alone does
+ * nothing. Therefore this insertion is followed by a content insertion.
+ *
+ * @param h the test harness to use
+ */
+ private void testEndTag4(TestHarness h)
+ {
+ h.checkPoint("testEndTag4");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 7.
+ TestDocument.ElementSpec spec1 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.EndTagType);
+ specs = new TestDocument.ElementSpec[]{ spec1, spec};
+ documentEvent = null;
+ doc.insert(7, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 3);
+
+ // We should now have 2 children in the first paragraph.
+ Element par1 = root.getElement(0);
+ h.check(par1.getElementCount(), 2);
+ Element el = par1.getElement(0);
+ h.check(el.getStartOffset(), 0);
+ h.check(el.getEndOffset(), 5);
+ el = par1.getElement(1);
+ h.check(el.getStartOffset(), 5);
+ h.check(el.getEndOffset(), 7);
+
+ // We should now have 1 leaf element between the first and second
+ // paragraph.
+ el = root.getElement(1);
+ h.check(el.getElementCount(), 0);
+ h.check(el.getStartOffset(), 7);
+ h.check(el.getEndOffset(), 12);
+
+ // We should now have 2 children in the first paragraph.
+ Element par2 = root.getElement(2);
+ h.check(par2.getElementCount(), 2);
+ el = par2.getElement(0);
+ h.check(el.getStartOffset(), 12);
+ h.check(el.getEndOffset(), 15);
+ el = par2.getElement(1);
+ h.check(el.getStartOffset(), 15);
+ h.check(el.getEndOffset(), 16);
+
+ // Some structural changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec.getChildrenRemoved().length, 0);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getIndex(), 1);
+
+ // Check changes for paragraph 1
+ ec = documentEvent.getChange(par1);
+ h.check(ec.getChildrenRemoved().length, 2);
+ h.check(ec.getChildrenAdded().length, 1);
+ h.check(ec.getIndex(), 1);
+
+ // Check changes for paragraph 2
+ ec = documentEvent.getChange(par2);
+ h.check(ec, null);
+ }
+
+ /**
+ * Tests insertion of some simple EndTags. This test inserts 3
+ * EndTag elements in between the second existing element. This is more
+ * then the element stack has to offer. Still, this action alone does
+ * nothing. Therefore this insertion is followed by a content insertion.
+ *
+ * @param h the test harness to use
+ */
+ private void testEndTag5(TestHarness h)
+ {
+ h.checkPoint("testEndTag5");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+ char[] text = new char[] {'H', 'e', 'l', 'l', 'o'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec spec =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 5);
+ spec.setDirection(TestDocument.ElementSpec.OriginateDirection);
+
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[]{ spec };
+
+ // Create the precondition, two elements [Hello], one at 0 and one at 5.
+ doc.insert(0, specs);
+ doc.insert(5, specs);
+
+ // Now check what comes out when we insert one element at 5.
+ TestDocument.ElementSpec spec1 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.EndTagType);
+ TestDocument.ElementSpec spec2 = new TestDocument.ElementSpec(atts,
+ TestDocument.ElementSpec.StartTagType);
+ specs = new TestDocument.ElementSpec[]{ spec, spec1, spec2};
+ documentEvent = null;
+ doc.insert(5, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 2);
+
+ // We should now have 2 children in the first paragraph.
+ Element par1 = root.getElement(0);
+ h.check(par1.getElementCount(), 2);
+ Element el = par1.getElement(0);
+ h.check(el.getStartOffset(), 0);
+ h.check(el.getEndOffset(), 5);
+ el = par1.getElement(1);
+ h.check(el.getStartOffset(), 5);
+ h.check(el.getEndOffset(), 10);
+
+ // We should now have 2 children in the first paragraph.
+ Element par2 = root.getElement(1);
+ h.check(par2.getElementCount(), 2);
+ el = par2.getElement(0);
+ h.check(el.getStartOffset(), 10);
+ h.check(el.getEndOffset(), 15);
+ el = par2.getElement(1);
+ h.check(el.getStartOffset(), 15);
+ h.check(el.getEndOffset(), 16);
+
+ // Some structural changes for the root.
+ DocumentEvent.ElementChange ec = documentEvent.getChange(root);
+ h.check(ec.getChildrenRemoved().length, 0);
+ h.check(ec.getChildrenAdded().length, 1);
+ h.check(ec.getIndex(), 1);
+
+ // Check changes for paragraph 1
+ ec = documentEvent.getChange(par1);
+ h.check(ec.getChildrenRemoved().length, 3);
+ h.check(ec.getChildrenAdded().length, 2);
+ h.check(ec.getIndex(), 0);
+
+ // Check changes for paragraph 2
+ ec = documentEvent.getChange(par2);
+ h.check(ec, null);
+ }
+
+ /**
+ * Inserts 'a\na\n' and checks the results. The characters are inserted
+ * one by one, as if somebody typed it in by keyboard.
+ *
+ * @param h the test harness to use
+ */
+ private void testNewlines(TestHarness h)
+ {
+ h.checkPoint("testNewlines");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+
+ // The first 'a'
+ char[] text = new char[] {'a'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[1];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ doc.insert(0, specs);
+
+ // The first '\n'
+ text = new char[] {'\n'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[2].setDirection(TestDocument.ElementSpec.JoinFractureDirection);
+ doc.insert(1, specs);
+
+ // The second 'a'
+ text = new char[] {'a'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[0].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[2].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ doc.insert(2, specs);
+
+ // The second '\n'
+ text = new char[] {'\n'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[2].setDirection(TestDocument.ElementSpec.JoinFractureDirection);
+ doc.insert(3, specs);
+
+ // We have one paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 3);
+
+ // We should now have 1 child in the 1st paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 1);
+ Element el = par.getElement(0);
+ h.check(el.getStartOffset(), 0);
+ h.check(el.getEndOffset(), 2);
+
+ // We should now have 1 child in the 2nd paragraph.
+ par = root.getElement(1);
+ h.check(par.getElementCount(), 1);
+ el = par.getElement(0);
+ h.check(el.getStartOffset(), 2);
+ h.check(el.getEndOffset(), 4);
+
+ // We should now have 1 child in the 3rd paragraph.
+ par = root.getElement(2);
+ h.check(par.getElementCount(), 1);
+ el = par.getElement(0);
+ h.check(el.getStartOffset(), 4);
+ h.check(el.getEndOffset(), 5);
+
+ }
+
+
+ /**
+ * Inserts 'a\na\na' and checks the results. The characters are inserted
+ * one by one, as if somebody typed it in by keyboard.
+ *
+ * @param h the test harness to use
+ */
+ private void testNewlines2(TestHarness h)
+ {
+ h.checkPoint("testNewlines2");
+ TestDocument doc = new TestDocument();
+ doc.addDocumentListener(this);
+
+ // The first 'a'
+ char[] text = new char[] {'a'};
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ TestDocument.ElementSpec[] specs = new TestDocument.ElementSpec[1];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ doc.insert(0, specs);
+
+ // The first '\n'
+ text = new char[] {'\n'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[2].setDirection(TestDocument.ElementSpec.JoinFractureDirection);
+ doc.insert(1, specs);
+
+ // The second 'a'
+ text = new char[] {'a'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[0].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[2].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ doc.insert(2, specs);
+
+ // The second '\n'
+ text = new char[] {'\n'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[0].setDirection(TestDocument.ElementSpec.JoinPreviousDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[2].setDirection(TestDocument.ElementSpec.JoinFractureDirection);
+ doc.insert(3, specs);
+
+ // The 3rd 'a'
+ text = new char[] {'a'};
+ specs = new TestDocument.ElementSpec[3];
+ specs[0] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.EndTagType);
+ specs[0].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ specs[1] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.StartTagType);
+ specs[1].setDirection(TestDocument.ElementSpec.JoinNextDirection);
+ specs[2] =
+ new TestDocument.ElementSpec(atts, TestDocument.ElementSpec.ContentType,
+ text, 0, 1);
+ specs[2].setDirection(TestDocument.ElementSpec.OriginateDirection);
+ doc.insert(4, specs);
+
+ // We have 3 paragraph in the root element.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 3);
+
+ // We should now have 1 child in the 1st paragraph.
+ Element par = root.getElement(0);
+ h.check(par.getElementCount(), 1);
+ Element el = par.getElement(0);
+ h.check(el.getStartOffset(), 0);
+ h.check(el.getEndOffset(), 2);
+
+ // We should now have 1 child in the 2nd paragraph.
+ par = root.getElement(1);
+ h.check(par.getElementCount(), 1);
+ el = par.getElement(0);
+ h.check(el.getStartOffset(), 2);
+ h.check(el.getEndOffset(), 4);
+
+ // We should now have 2 children in the 3rd paragraph.
+ par = root.getElement(2);
+ h.check(par.getElementCount(), 2);
+ el = par.getElement(0);
+ h.check(el.getStartOffset(), 4);
+ h.check(el.getEndOffset(), 5);
+ el = par.getElement(1);
+ h.check(el.getStartOffset(), 5);
+ h.check(el.getEndOffset(), 6);
+
+ }
+
+ /**
+ * Receives notification when some text attributes have changed.
+ *
+ * @param event the document event
+ */
+ public void changedUpdate(DocumentEvent event)
+ {
+ // Do nothing here.
+ }
+
+ /**
+ * Receives notification when some text has been inserted into the document.
+ *
+ * @param event the document event
+ */
+ public void insertUpdate(DocumentEvent event)
+ {
+ documentEvent = event;
+ }
+
+ /**
+ * Receives notification when some text has been removed from the document.
+ *
+ * @param event the document event
+ */
+ public void removeUpdate(DocumentEvent event)
+ {
+ // Do nothing here.
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/Insert.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/Insert.java
new file mode 100644
index 00000000..2c1b2928
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/Insert.java
@@ -0,0 +1,186 @@
+/* Insert.java -- Test bulk element insertion
+ Copyright (C) 2006 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.text.DefaultStyledDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.DefaultStyledDocument.ElementSpec;
+
+/**
+ * Tests the protected method to insert the elements. This method is
+ * important when modifying content of the derived HTMLDocument.
+ */
+public class Insert implements Testlet
+{
+ /**
+ * Override the package private method, exposing it here.
+ */
+ class OpenDocument extends DefaultStyledDocument
+ {
+ public void insert(int offset, ElementSpec[] data)
+ throws BadLocationException
+ {
+ super.insert(offset, data);
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ MutableAttributeSet a1 = new SimpleAttributeSet();
+ MutableAttributeSet a2 = new SimpleAttributeSet();
+
+ a1.addAttribute(StyleConstants.NameAttribute, "MY_FIRST");
+ a2.addAttribute(StyleConstants.NameAttribute, "MY_SECOND");
+
+ ElementSpec s1 = new ElementSpec(a1, ElementSpec.ContentType,
+ "1".toCharArray(), 0, 1);
+ ElementSpec s2 = new ElementSpec(a2, ElementSpec.ContentType,
+ "2".toCharArray(), 0, 1);
+
+ OpenDocument d = new OpenDocument();
+
+ try
+ {
+ d.insert(0, new ElementSpec[] { s1, s2 });
+
+ harness.check(d.getLength(), 2, "Length");
+ harness.check("12", d.getText(0, d.getLength()));
+ Element[] e = d.getRootElements();
+
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ String r = b.toString();
+
+ // Both elements must be included somewhere. They positions must match.
+ harness.check(r.indexOf("MY_FIRST:0-1") >=0);
+ harness.check(r.indexOf("MY_SECOND:1-2") >=0);
+
+ // Insert the third element in between.
+ MutableAttributeSet a3 = new SimpleAttributeSet();
+ a1.addAttribute(StyleConstants.NameAttribute, "MY_MIDDLE");
+ ElementSpec sm = new ElementSpec(a1, ElementSpec.ContentType,
+ "m".toCharArray(), 0, 1);
+
+ d.insert(1, new ElementSpec[] { sm });
+ harness.check(d.getLength(), 3, "Length");
+ harness.check("1m2", d.getText(0, d.getLength()));
+
+
+ b.setLength(0);
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ r = b.toString();
+
+ harness.check(r.indexOf("MY_FIRST:0-1") >=0);
+ harness.check(r.indexOf("MY_MIDDLE:1-2") >= 0);
+ harness.check(r.indexOf("MY_SECOND:2-3") >=0);
+
+ // Remove the first element.
+ d.remove(0, 1);
+ harness.check("m2", d.getText(0, d.getLength()));
+
+ b.setLength(0);
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ r = b.toString();
+
+ // This one must no longer be present
+ harness.check(r.indexOf("MY_FIRST") < 0, r);
+ harness.check(r.indexOf("MY_MIDDLE:0-1") >= 0, r);
+ harness.check(r.indexOf("MY_SECOND:1-2") >=0, r);
+
+ // Remove the second element which is now the last.
+ d.remove(1, 1);
+ harness.check("m", d.getText(0, d.getLength()));
+
+ b.setLength(0);
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ r = b.toString();
+
+ // This one must no longer be present
+ harness.check(r.indexOf("MY_FIRST") < 0, r);
+ harness.check(r.indexOf("MY_MIDDLE:0-1") >= 0, r);
+ harness.check(r.indexOf("MY_SECOND") < 0, r);
+
+ harness.check(d.getLength(), 1, "Length");
+
+ // Remove the last remaining element.
+ d.remove(0, d.getLength());
+
+ b.setLength(0);
+
+ for (int i = 0; i < e.length; i++)
+ {
+ dump(b, e[i]);
+ }
+
+ r = b.toString();
+
+ // This one must no longer be present
+ harness.check(r.indexOf("MY_FIRST") < 0, r);
+ harness.check(r.indexOf("MY_MIDDLE") < 0, r);
+ harness.check(r.indexOf("MY_SECOND") < 0, r);
+ }
+ catch (BadLocationException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ void dump(StringBuffer b, Element x)
+ {
+ Object name = x.getAttributes().getAttribute(StyleConstants.NameAttribute);
+ b.append("( ");
+ b.append(name+":"+x.getStartOffset()+"-"+x.getEndOffset());
+ b.append(" ch ");
+ for (int i = 0; i < x.getElementCount(); i++)
+ {
+ dump(b, x.getElement(i));
+ }
+ b.append(") ");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java b/gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java
new file mode 100644
index 00000000..97958c3f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/DefaultStyledDocument/insertString.java
@@ -0,0 +1,208 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.text.DefaultStyledDocument;
+
+import java.awt.Color;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if content is inserted correctly into the document.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class insertString implements Testlet
+{
+ /**
+ * Entry point. This calls the single tests.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testInsertEqualAttributes(harness);
+ testInsertModifiedAttributes(harness);
+ testInsertNewline(harness);
+ }
+
+ /**
+ * Inserting content with equal attributes should not create
+ * new elements. In this test we start a single child elemen (0, 16)
+ * and insert 5 characters at position 5. This should result in
+ * a single child element (0, 21).
+ */
+ void testInsertEqualAttributes(TestHarness harness)
+ {
+ harness.checkPoint("insertEqualAttributes");
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ prepareDocument(doc);
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+
+ // Insert 5 characters at pos 5.
+ try
+ {
+ doc.insertString(5, "12345", atts);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.debug(ex);
+ }
+
+ // Now we should have the following child elements below the single
+ // root and single paragraph: (0, 5) (5, 10) (10, 21)
+ Element root = doc.getDefaultRootElement();
+ harness.check(root.getStartOffset(), 0);
+ harness.check(root.getEndOffset(), 21);
+ harness.check(root.getElementCount(), 1);
+
+ Element par = root.getElement(0);
+ harness.check(par.getStartOffset(), 0);
+ harness.check(par.getEndOffset(), 21);
+ harness.check(par.getElementCount(), 1);
+
+ Element child1 = par.getElement(0);
+ harness.check(child1.getStartOffset(), 0);
+ harness.check(child1.getEndOffset(), 21);
+ }
+
+ /**
+ * If a chunk of content is inserted with modified attributes, then
+ * the resulting element structure should reflect that. In this test
+ * we start with a single child element (0, 16) and insert 5 characters
+ * (with different attributes) at position 5. This should lead
+ * to a structure of (0, 5)(5, 10)(10, 21).
+ *
+ * @param harness the test harness to use
+ */
+ void testInsertModifiedAttributes(TestHarness harness)
+ {
+ harness.checkPoint("insertModifiedAttributes");
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ prepareDocument(doc);
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+
+ // Insert 5 (different from the rest) characters at pos 5.
+ StyleConstants.setForeground(atts, Color.RED);
+ try
+ {
+ doc.insertString(5, "12345", atts);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.debug(ex);
+ }
+
+ // Now we should have the following child elements below the single
+ // root and single paragraph: (0, 5) (5, 10) (10, 21)
+ Element root = doc.getDefaultRootElement();
+ harness.check(root.getStartOffset(), 0);
+ harness.check(root.getEndOffset(), 21);
+ harness.check(root.getElementCount(), 1);
+
+ Element par = root.getElement(0);
+ harness.check(par.getStartOffset(), 0);
+ harness.check(par.getEndOffset(), 21);
+ harness.check(par.getElementCount(), 3);
+
+ Element child1 = par.getElement(0);
+ harness.check(child1.getStartOffset(), 0);
+ harness.check(child1.getEndOffset(), 5);
+
+ Element child2 = par.getElement(1);
+ harness.check(child2.getStartOffset(), 5);
+ harness.check(child2.getEndOffset(), 10);
+
+ Element child3 = par.getElement(2);
+ harness.check(child3.getStartOffset(), 10);
+ harness.check(child3.getEndOffset(), 21);
+ }
+
+ /**
+ * Here we try to insert content with a line break in it. This should
+ * break up the paragraph.
+ *
+ * We start with one single paragraph which has a single child element
+ * (0, 16). Then we insert "abcde\nfghij" at position 5. This should
+ * lead to two paragraphs: one that spans from 0 .. 11 and one that
+ * spans from 11 .. 27. Each of the paragraphs should have one child
+ * element that has the same spans.
+ */
+ void testInsertNewline(TestHarness harness)
+ {
+ harness.checkPoint("insertNewline");
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ prepareDocument(doc);
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+
+ // Insert 5 (different from the rest) characters at pos 5.
+ try
+ {
+ doc.insertString(5, "abcde\nfghij", atts);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.debug(ex);
+ }
+
+ // Now we should have two paragraphs (0, 11)(11, 27)
+ Element root = doc.getDefaultRootElement();
+ harness.check(root.getStartOffset(), 0);
+ harness.check(root.getEndOffset(), 27);
+ harness.check(root.getElementCount(), 2);
+
+ Element par1 = root.getElement(0);
+ harness.check(par1.getStartOffset(), 0);
+ harness.check(par1.getEndOffset(), 11);
+ harness.check(par1.getElementCount(), 1);
+
+ Element par2 = root.getElement(1);
+ harness.check(par2.getStartOffset(), 11);
+ harness.check(par2.getEndOffset(), 27);
+ harness.check(par2.getElementCount(), 1);
+ }
+
+ /**
+ * Inserts some content into the document. This content has exactly
+ * 15 characters, which make 16 at all. The last one doesn't really
+ * count though, but we have to take care of details.
+ *
+ * @param doc the document to prepare
+ */
+ void prepareDocument(DefaultStyledDocument doc)
+ {
+ try
+ {
+ doc.insertString(0, "abcdefghijklmno", new SimpleAttributeSet());
+ }
+ catch (BadLocationException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ElementIterator/CVS/Entries b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Entries
new file mode 100644
index 00000000..393c6ee2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Entries
@@ -0,0 +1,2 @@
+/ElementIteratorTest.java/1.2/Fri Aug 19 21:28:43 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/ElementIterator/CVS/Repository b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Repository
new file mode 100644
index 00000000..18184ff3
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/ElementIterator
diff --git a/gnu/testlet/javax/swing/text/ElementIterator/CVS/Root b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ElementIterator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java b/gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java
new file mode 100644
index 00000000..1ea1e925
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ElementIterator/ElementIteratorTest.java
@@ -0,0 +1,108 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+// Copyright (C) 2005 Red Hat, Inc.
+
+// 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.javax.swing.text.ElementIterator;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+public class ElementIteratorTest
+ implements Testlet
+{
+ public class DocumentImpl extends AbstractDocument
+ {
+ private Element root;
+
+ public DocumentImpl()
+ {
+ super(new GapContent());
+ root = createBranchElement(null, null);
+ }
+
+ public Element getDefaultRootElement()
+ {
+ return root;
+ }
+
+ public Element getParagraphElement(int index)
+ {
+ return getDefaultRootElement();
+ }
+
+ // Override it from protected to public
+ public Element createBranchElement(Element parent, AttributeSet attributes)
+ {
+ return super.createBranchElement(parent, attributes);
+ }
+
+ // Override it from protected to public
+ public Element createLeafElement(Element parent, AttributeSet attributes,
+ int p0, int p1)
+ {
+ return super.createLeafElement(parent, attributes, p0, p1);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ DocumentImpl doc = new DocumentImpl();
+
+ String str = ( "Two households, both alike in dignity,\n"
+ + "In fair Verona, where we lay our scene,\n"
+ + "From ancient grudge break to new mutiny,\n"
+ + "Where civil blood makes civil hands unclean.");
+
+ try
+ {
+ doc.insertString(0, str, null);
+
+ AbstractDocument.BranchElement br
+ = (AbstractDocument.BranchElement) doc.getDefaultRootElement();
+
+ Element leaf1 = doc.createLeafElement(br, null, 0, 38);
+ Element leaf2 = doc.createLeafElement(br, null, 39, 78);
+ br.replace(0, 0, new Element[] { leaf1, leaf2 });
+
+ ElementIterator iter = new ElementIterator(doc);
+
+ harness.check(iter.first(), br, "checking first() 1");
+ harness.check(iter.next(), leaf1, "checking next() 1");
+ harness.check(iter.next(), leaf2, "checking next() 2");
+ harness.check(iter.previous(), leaf1, "checking previous() 1");
+ // Note that previous() doesn't move the iterator.
+ harness.check(iter.previous(), leaf1, "checking previous() 2");
+ harness.check(iter.next(), null, "checking next() 3");
+ harness.check(iter.previous(), null, "checking previous() 3");
+
+ harness.check(iter.first(), br, "checking first() 2");
+ harness.check(iter.next(), leaf1,
+ "checking next() after second first");
+ }
+ catch (BadLocationException _)
+ {
+ // insertString shouldn't fail...
+ harness.check(false);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/FlowView/CVS/Entries b/gnu/testlet/javax/swing/text/FlowView/CVS/Entries
new file mode 100644
index 00000000..726de0d3
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/CVS/Entries
@@ -0,0 +1,3 @@
+/TestFlowView.java/1.2/Fri Jul 28 11:03:22 2006//
+/getFlowAxis.java/1.2/Wed May 21 13:30:50 2008//
+D
diff --git a/gnu/testlet/javax/swing/text/FlowView/CVS/Entries.Log b/gnu/testlet/javax/swing/text/FlowView/CVS/Entries.Log
new file mode 100644
index 00000000..2a019386
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/FlowStrategy////
diff --git a/gnu/testlet/javax/swing/text/FlowView/CVS/Repository b/gnu/testlet/javax/swing/text/FlowView/CVS/Repository
new file mode 100644
index 00000000..14f6bfd6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/FlowView
diff --git a/gnu/testlet/javax/swing/text/FlowView/CVS/Root b/gnu/testlet/javax/swing/text/FlowView/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Entries b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Entries
new file mode 100644
index 00000000..83dbba34
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Entries
@@ -0,0 +1,3 @@
+/TestView.java/1.1/Fri Jul 28 11:03:22 2006//
+/adjustRow.java/1.2/Wed May 21 13:30:50 2008//
+D
diff --git a/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Repository b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Repository
new file mode 100644
index 00000000..085bdb45
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/FlowView/FlowStrategy
diff --git a/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Root b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/TestView.java b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/TestView.java
new file mode 100644
index 00000000..43f03113
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/TestView.java
@@ -0,0 +1,102 @@
+/* TestView.java -- A mock view for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.FlowView.FlowStrategy;
+
+import java.awt.Graphics;
+import java.awt.Shape;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.View;
+import javax.swing.text.Position.Bias;
+
+
+public class TestView extends View
+{
+
+ public int preferred = 100;
+
+ public int breakWeight = View.BadBreakWeight;
+
+ public TestView break1;
+ public TestView break2;
+
+ public TestView(Element el)
+ {
+ super(el);
+ }
+
+ public void paint(Graphics g, Shape s)
+ {
+ // Not needed in testing.
+ }
+
+ public float getMinimumSpan(int axis)
+ {
+ return getPreferredSpan(axis);
+ }
+ public float getPreferredSpan(int axis)
+ {
+ return preferred;
+ }
+
+ public Shape modelToView(int pos, Shape a, Bias b)
+ throws BadLocationException
+ {
+ // Not needed in testing.
+ return null;
+ }
+
+ public int viewToModel(float x, float y, Shape a, Bias[] b)
+ {
+ // Not needed in testing.
+ return 0;
+ }
+
+ /**
+ * This is implemented to return <code>breakWeight</code> when pos + len >
+ * <code>preferred / 2</code>, that means it returns the break weight
+ * specified by the testing code when the desired break location is beyond
+ * the middle of the view.
+ */
+ public int getBreakWeight(int axis, float pos, float len)
+ {
+ if (pos + len > preferred)
+ return breakWeight;
+ else
+ return View.BadBreakWeight;
+ }
+
+ public View breakView(int axis, int offset, float pos, float len)
+ {
+ break1 = new TestView(getElement());
+ break1.preferred = preferred / 2;
+ break2 = new TestView(getElement());
+ break2.preferred = preferred / 2;
+ if (offset < preferred / 2)
+ return break1;
+ else
+ return break2;
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java
new file mode 100644
index 00000000..eaf96f58
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/FlowStrategy/adjustRow.java
@@ -0,0 +1,140 @@
+/* adjustRow.java -- Tests the FlowStrategy.adjustRow() method
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestView ../TestFlowView
+
+package gnu.testlet.javax.swing.text.FlowView.FlowStrategy;
+
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.View;
+import javax.swing.text.AbstractDocument.BranchElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.javax.swing.text.FlowView.TestFlowView;
+
+/**
+ * Tests the FlowStrategy.adjustRow() method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class adjustRow implements Testlet
+{
+
+ /**
+ * The entry point into this test.
+ *
+ * @param the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testUnbreakable(harness);
+ testGoodBreakable(harness);
+ testExcellentBreakable(harness);
+ testForceBreakable(harness);
+ }
+
+ /**
+ * This places one row into the FlowView and one view into that row that
+ * is bigger than the desired span. However, since it is not breakable, this
+ * will not be touched.
+ *
+ * @param h
+ */
+ private void testUnbreakable(TestHarness h)
+ {
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ Element el = doc.new BranchElement(null, null);
+ TestFlowView fv = new TestFlowView(el, View.Y_AXIS);
+ // Create one row and fill it with one oversized testview.
+ TestFlowView.TestRow row = (TestFlowView.TestRow) fv.createRow();
+ fv.replace(0, 0, new View[]{row});
+ row.preferred = 200;
+
+ fv.getFlowStragy().adjustRow(fv, 0, 150, 0);
+ h.check(fv.getView(0), row);
+ }
+
+ /**
+ * This places one row into the FlowView and one view into that row that
+ * is bigger than the desired span. However, since it is not breakable, this
+ * will not be touched.
+ *
+ * @param h
+ */
+ private void testGoodBreakable(TestHarness h)
+ {
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ Element el = doc.new BranchElement(null, null);
+ TestFlowView fv = new TestFlowView(el, View.Y_AXIS);
+ // Create one row and fill it with one oversized testview.
+ TestFlowView.TestRow row = (TestFlowView.TestRow) fv.createRow();
+ fv.replace(0, 0, new View[]{row});
+ row.breakWeight = View.GoodBreakWeight;
+ row.preferred = 200;
+ fv.getFlowStragy().adjustRow(fv, 0, 150, 0);
+ h.check(fv.getView(0), row);
+ }
+
+ /**
+ * This places one row into the FlowView and one view into that row that
+ * is bigger than the desired span. However, since it is not breakable, this
+ * will not be touched.
+ *
+ * @param h
+ */
+ private void testExcellentBreakable(TestHarness h)
+ {
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ Element el = doc.new BranchElement(null, null);
+ TestFlowView fv = new TestFlowView(el, View.Y_AXIS);
+ // Create one row and fill it with one oversized testview.
+ TestFlowView.TestRow row = (TestFlowView.TestRow) fv.createRow();
+ fv.replace(0, 0, new View[]{row});
+ row.breakWeight = View.ExcellentBreakWeight;
+ row.preferred = 200;
+ fv.getFlowStragy().adjustRow(fv, 0, 150, 0);
+ h.check(fv.getView(0), row);
+ }
+
+ /**
+ * This places one row into the FlowView and one view into that row that
+ * is bigger than the desired span. However, since it is not breakable, this
+ * will not be touched.
+ *
+ * @param h
+ */
+ private void testForceBreakable(TestHarness h)
+ {
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ Element el = doc.new BranchElement(null, null);
+ TestFlowView fv = new TestFlowView(el, View.Y_AXIS);
+ // Create one row and fill it with one oversized testview.
+ TestFlowView.TestRow row = (TestFlowView.TestRow) fv.createRow();
+ fv.replace(0, 0, new View[]{row});
+ row.breakWeight = View.ForcedBreakWeight;
+ row.preferred = 200;
+ fv.getFlowStragy().adjustRow(fv, 0, 150, 0);
+ h.check(fv.getView(0), row);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/FlowView/TestFlowView.java b/gnu/testlet/javax/swing/text/FlowView/TestFlowView.java
new file mode 100644
index 00000000..fc663018
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/TestFlowView.java
@@ -0,0 +1,133 @@
+/* TestFlowView.java -- A concrete FlowView for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.FlowView;
+
+import gnu.testlet.javax.swing.text.FlowView.FlowStrategy.TestView;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+import java.awt.Shape;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.BoxView;
+import javax.swing.text.Element;
+import javax.swing.text.FlowView;
+import javax.swing.text.View;
+import javax.swing.text.Position.Bias;
+
+/**
+ * A concrete subclass of FlowView that can be used to test the FlowView.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class TestFlowView extends FlowView
+{
+
+ public class TestFlowStrategy extends FlowStrategy
+ {
+ public void adjustRow(FlowView fv, int rowIndex, int desiredSpan, int x)
+ {
+ super.adjustRow(fv, rowIndex, desiredSpan, x);
+ }
+ }
+
+ public class TestRow extends BoxView
+ {
+ public int preferred = 200;
+ public TestRow break1;
+ public TestRow break2;
+ public int breakWeight = View.BadBreakWeight;
+
+ public TestRow(Element el)
+ {
+ super(el, View.X_AXIS);
+ }
+
+ public float getPreferredSpan(int axis)
+ {
+ System.err.println("preferredSpan called");
+ return preferred;
+ }
+
+ public float getMinimumSpan(int axis)
+ {
+ System.err.println("minimumSpan called");
+ return preferred;
+ }
+
+ /**
+ * This is implemented to return <code>breakWeight</code> when pos + len >
+ * <code>preferred / 2</code>, that means it returns the break weight
+ * specified by the testing code when the desired break location is beyond
+ * the middle of the view.
+ */
+ public int getBreakWeight(int axis, float pos, float len)
+ {System.err.println("getBreakWeight called");
+ if (pos + len > preferred)
+ return breakWeight;
+ else
+ return View.BadBreakWeight;
+ }
+
+ public View breakView(int axis, int offset, float pos, float len)
+ {System.err.println("breakView called");
+ break1 = new TestRow(getElement());
+ break1.preferred = preferred / 2;
+ break2 = new TestRow(getElement());
+ break2.preferred = preferred / 2;
+ if (offset < preferred / 2)
+ return break1;
+ else
+ return break2;
+ }
+
+ }
+
+ /**
+ * Constructs a new TestFlowView by calling super.
+ *
+ * @param element the element
+ * @param axis the axis
+ */
+ public TestFlowView(Element element, int axis)
+ {
+ super(element, axis);
+ strategy = new TestFlowStrategy();
+ }
+
+ /**
+ * Creates a row.
+ *
+ * @return a view for one row
+ */
+ public View createRow()
+ {
+ return new TestRow(getElement());
+ }
+
+ public TestFlowStrategy getFlowStragy()
+ {
+ return (TestFlowStrategy) strategy;
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java b/gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java
new file mode 100644
index 00000000..b7671636
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/FlowView/getFlowAxis.java
@@ -0,0 +1,56 @@
+/* getFlowAxis.java -- Tests FlowView.getFlowAxis()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestFlowView FlowStrategy/TestView
+
+package gnu.testlet.javax.swing.text.FlowView;
+
+import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the FlowView.getFlowAxis() method.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getFlowAxis implements Testlet
+{
+
+ /**
+ * The entry point into the test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ DefaultStyledDocument doc = new DefaultStyledDocument();
+ Element el = doc.new BranchElement(null, null);
+ TestFlowView v = new TestFlowView(el, View.X_AXIS);
+ harness.check(v.getFlowAxis(), View.Y_AXIS);
+ v = new TestFlowView(el, View.Y_AXIS);
+ harness.check(v.getFlowAxis(), View.X_AXIS);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/GapContent/CVS/Entries b/gnu/testlet/javax/swing/text/GapContent/CVS/Entries
new file mode 100644
index 00000000..d632cdeb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/CVS/Entries
@@ -0,0 +1,11 @@
+/GapContentTest.java/1.2/Sun Jan 2 11:47:49 2005//
+/MyGapContent.java/1.1/Tue Jan 24 16:31:34 2006//
+/PositionTest.java/1.4/Thu Jan 5 20:05:58 2006//
+/constructors.java/1.3/Wed May 21 13:30:50 2008//
+/createPosition.java/1.1/Tue Jan 24 16:31:34 2006//
+/getChars.java/1.1/Tue Jan 24 16:31:34 2006//
+/getString.java/1.1/Tue Jan 24 16:31:34 2006//
+/insertString.java/1.6/Wed May 3 00:13:37 2006//
+/length.java/1.1/Tue Jan 24 16:31:34 2006//
+/remove.java/1.2/Mon Feb 20 11:26:53 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/GapContent/CVS/Repository b/gnu/testlet/javax/swing/text/GapContent/CVS/Repository
new file mode 100644
index 00000000..2559a0f3
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/GapContent
diff --git a/gnu/testlet/javax/swing/text/GapContent/CVS/Root b/gnu/testlet/javax/swing/text/GapContent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/GapContent/GapContentTest.java b/gnu/testlet/javax/swing/text/GapContent/GapContentTest.java
new file mode 100644
index 00000000..2f497cd5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/GapContentTest.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.GapContent;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+public class GapContentTest
+ implements Testlet
+{
+ private void testContent(TestHarness harness, GapContent content)
+ {
+ boolean ok;
+
+ harness.check(content.length(), 1, "content length");
+
+ ok = false;
+ try
+ {
+ String text = content.getString(0, 1);
+
+ if (text.equals("\n"))
+ ok = true;
+ }
+ catch (BadLocationException e)
+ {
+ }
+
+ harness.check(ok, "default content");
+
+ ok = false;
+ try
+ {
+ content.insertString(0, "This is a testcase");
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ harness.check(ok, "insertString");
+
+ harness.check(content.length(), 19, "content length");
+
+ ok = false;
+ try
+ {
+ content.insertString(10, "little ");
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ harness.check(ok, "insertString");
+
+ harness.check(content.length(), 26, "content length");
+ }
+
+ public void test(TestHarness harness)
+ {
+ testContent(harness, new GapContent());
+ testContent(harness, new GapContent(100));
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/GapContent/MyGapContent.java b/gnu/testlet/javax/swing/text/GapContent/MyGapContent.java
new file mode 100644
index 00000000..777ac1d2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/MyGapContent.java
@@ -0,0 +1,45 @@
+/* MyGapContent.java -- provides access to protected methods.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import javax.swing.text.GapContent;
+
+public class MyGapContent extends GapContent
+{
+ public MyGapContent()
+ {
+ super();
+ }
+
+ public MyGapContent(int count)
+ {
+ super(count);
+ }
+
+ public int getArrayLength()
+ {
+ return super.getArrayLength();
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/GapContent/PositionTest.java b/gnu/testlet/javax/swing/text/GapContent/PositionTest.java
new file mode 100644
index 00000000..c6cb6340
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/PositionTest.java
@@ -0,0 +1,150 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.text.GapContent;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Position;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests for correct behaviour of the GapContent Positions.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class PositionTest implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness
+ */
+ public void test(TestHarness harness)
+ {
+ testSimple(harness);
+ testComplex(harness);
+ testBorderCase(harness);
+ }
+
+ /**
+ * This creates two positions in an empty GapContent, one at
+ * 0 and one at 1 (start and end respectivly). Then it inserts
+ * content and checks if the positions adapt correctly. After
+ * that the content is removed again and the positions are checked.
+ *
+ * @param harness the test harness
+ */
+ void testSimple(TestHarness harness)
+ {
+ harness.checkPoint("testSimple");
+ GapContent c = new GapContent();
+ try
+ {
+ Position p1 = c.createPosition(0);
+ Position p2 = c.createPosition(1);
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 1);
+
+ c.insertString(0, "hello");
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 6);
+
+ c.remove(0, 5);
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 1);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException");
+ harness.debug(ex);
+ }
+ }
+
+ /**
+ * Tests a more complex situation.
+ */
+ void testComplex(TestHarness harness)
+ {
+ harness.checkPoint("testComplex");
+ GapContent c = new GapContent();
+ try
+ {
+ Position p1 = c.createPosition(0);
+ Position p2 = c.createPosition(1);
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 1);
+
+ c.insertString(0, "abcdefghijklmno");
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 16);
+
+ c.insertString(5, "12345");
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 21);
+
+ PlainDocument doc = new PlainDocument();
+ doc.insertString(0, "cdefgh", null);
+ Position s = doc.createPosition(1);
+ harness.check(s.getOffset(), 1);
+
+ doc.insertString(0, "a", null);
+ harness.check(s.getOffset(), 2);
+ Position a = doc.createPosition(1);
+ harness.check(a.getOffset(), 1);
+
+ doc.insertString(1, "b", null);
+ harness.check(s.getOffset(), 3);
+ harness.check(a.getOffset(), 2);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException");
+ harness.debug(ex);
+ }
+ }
+
+ /**
+ * This testcase checks bug reported in:
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24105
+ *
+ * @param h the test harness to use
+ */
+ void testBorderCase(TestHarness h)
+ {
+ h.checkPoint("border case");
+ try
+ {
+ PlainDocument doc = new PlainDocument();
+ doc.insertString(0, "One Three Four", null);
+ Position pos = doc.createPosition(4);
+ doc.insertString(4, "Two ", null);
+ h.check(pos.getOffset(), 8);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail("BadLocationException thrown");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/GapContent/constructors.java b/gnu/testlet/javax/swing/text/GapContent/constructors.java
new file mode 100644
index 00000000..fb1de5f2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/constructors.java
@@ -0,0 +1,122 @@
+/* constructors.java -- Some checks for the constructors in the GapContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+// Uses: MyGapContent
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ MyGapContent gc = new MyGapContent();
+ harness.check(gc.length(), 1);
+
+ boolean pass = false;
+ try
+ {
+ pass = gc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ harness.check(pass);
+ harness.check(gc.getArrayLength(), 10);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ MyGapContent gc = new MyGapContent(10);
+ harness.check(gc.length(), 1);
+ boolean pass = false;
+ try
+ {
+ pass = gc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ harness.check(pass);
+ harness.check(gc.getArrayLength(), 10);
+
+ // try unusual initial sizes
+ int length = -1;
+ int arrayLength = -1;
+ MyGapContent gc2 = null;
+
+ try
+ {
+ gc2 = new MyGapContent(0);
+ length = gc2.length();
+ arrayLength = gc2.getArrayLength();
+ }
+ catch (Exception e)
+ {
+ // Can be ignored.
+ }
+ harness.check(length, 1);
+ harness.check(arrayLength, 2);
+
+ length = -1;
+ arrayLength = -1;
+ gc2 = null;
+ try
+ {
+ gc2 = new MyGapContent(0);
+ length = gc2.length();
+ arrayLength = gc2.getArrayLength();
+ }
+ catch (Exception e)
+ {
+ // Can be ignored.
+ }
+ harness.check(length, 1);
+ harness.check(arrayLength, 2);
+
+
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/GapContent/createPosition.java b/gnu/testlet/javax/swing/text/GapContent/createPosition.java
new file mode 100644
index 00000000..66073c36
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/createPosition.java
@@ -0,0 +1,103 @@
+/* createPosition.java -- Some checks for the createPosition() method in the
+ GapContent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+import javax.swing.text.Position;
+
+public class createPosition implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GapContent gc = new GapContent();
+ harness.check(gc.length(), 1);
+ try
+ {
+ gc.insertString(0, "ABC");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+
+ // negative index
+ boolean pass = false;
+ try
+ {
+ gc.createPosition(-1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // index of last char
+ Position p = null;
+ try
+ {
+ p = gc.createPosition(3);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(p.getOffset(), 3);
+
+ // index of last char + 1
+ try
+ {
+ p = gc.createPosition(4);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(p.getOffset(), 4);
+
+ // index of last char + 2
+ pass = false;
+ try
+ {
+ p = gc.createPosition(5);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/GapContent/getChars.java b/gnu/testlet/javax/swing/text/GapContent/getChars.java
new file mode 100644
index 00000000..3588f530
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/getChars.java
@@ -0,0 +1,165 @@
+/* getChars.java -- Some checks for the getChars() method in the GapContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+import javax.swing.text.Segment;
+
+public class getChars implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GapContent gc = new GapContent();
+ Segment seg = new Segment();
+
+ // check default result
+ try
+ {
+ gc.getChars(0, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - tests below will fail if this happens
+ }
+ harness.check(seg.offset, 0);
+ harness.check(seg.count, 1);
+ harness.check(seg.array[0], '\n');
+
+ // if len goes past end of range, should get BadLocationException
+ boolean pass = false;
+ try
+ {
+ gc.getChars(0, 2, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add some more text
+ try
+ {
+ gc.insertString(0, "ABCDEFG");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(gc.length(), 8);
+
+ // if index < 0 should get BadLocationException
+ pass = false;
+ try
+ {
+ gc.getChars(-1, 3, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ gc.getChars(99, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ gc.getChars(0, 99, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ try
+ {
+ gc.getChars(1, 0, seg);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(seg.offset, 1);
+ harness.check(seg.count, 0);
+
+ // what happens for null Segment
+ pass = false;
+ try
+ {
+ gc.getChars(0, 1, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(pass);
+
+ // what happens if we update the Segment array, does that change the
+ // StringContent
+ Segment seg2 = new Segment();
+ Segment seg3 = new Segment();
+ GapContent gc2 = new GapContent();
+ try
+ {
+ gc2.insertString(0, "XYZ");
+ gc2.getChars(0, 3, seg2);
+ seg2.array[1] = '5';
+ gc2.getChars(0, 3, seg3);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(seg2.array[1], '5');
+ harness.check(seg3.array[1], '5');
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/GapContent/getString.java b/gnu/testlet/javax/swing/text/GapContent/getString.java
new file mode 100644
index 00000000..bb27f185
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/getString.java
@@ -0,0 +1,132 @@
+/* getString.java -- Some checks for the getString() method in the GapContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+
+public class getString implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GapContent gc = new GapContent();
+
+ // check default result
+ boolean pass = false;
+ try
+ {
+ pass = gc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ gc.getString(0, 2);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add some more text
+ try
+ {
+ gc.insertString(0, "ABCDEFG");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(gc.length(), 8);
+
+ // if index < 0 should get BadLocationException
+ pass = false;
+ try
+ {
+ /*String s =*/ gc.getString(-1, 3);
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ pass = false; // JDK does this, API docs say it should be a
+ // BadLocationException
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ /*String s =*/ gc.getString(99, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ /* String s =*/ gc.getString(0, 99);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ pass = false;
+ try
+ {
+ pass = gc.getString(1, 0).equals("");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/GapContent/insertString.java b/gnu/testlet/javax/swing/text/GapContent/insertString.java
new file mode 100644
index 00000000..9aaface2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/insertString.java
@@ -0,0 +1,308 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+// Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+import javax.swing.text.Position;
+
+/**
+ * Tests if GapContent.insertString works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class insertString implements Testlet
+{
+
+ /**
+ * A subclass of GapContent that provides access to the protected methods.
+ */
+ class TestGapContent extends GapContent
+ {
+ public int getArrayLength()
+ {
+ return super.getArrayLength();
+ }
+ public int getTestGapStart()
+ {
+ return super.getGapStart();
+ }
+ public int getTestGapEnd()
+ {
+ return super.getGapEnd();
+ }
+ }
+
+ /**
+ * Start the test run.
+ *
+ * @see gnu.testlet.Testlet#test(gnu.testlet.TestHarness)
+ */
+ public void test(TestHarness harness)
+ {
+ testSmallInsert(harness);
+ testBiggerInsert(harness);
+ testBigInsert(harness);
+ testComplexInsert(harness);
+ testGeneral(harness);
+
+ testSpecialInsert(harness);
+ }
+
+ /**
+ * Tests the insertion of a small (< gapsize) chunk of text.
+ *
+ * @param harness the test harness to use
+ */
+ void testSmallInsert(TestHarness harness)
+ {
+ harness.checkPoint("smallInsert");
+ try
+ {
+ TestGapContent c = new TestGapContent();
+ checkBuffer(harness, c, 10, 1, 10);
+ c.insertString(0, "abcdefgh");
+ checkBuffer(harness, c, 10, 8, 9);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException thrown.");
+ }
+ }
+
+ /**
+ * Tests the insertion of a bigger (= gapsize) chunk of text.
+ *
+ * @param harness the test harness to use
+ */
+ void testBiggerInsert(TestHarness harness)
+ {
+ harness.checkPoint("biggerInsert");
+ try
+ {
+ TestGapContent c = new TestGapContent();
+ checkBuffer(harness, c, 10, 1, 10);
+ c.insertString(0, "abcdefghi");
+ checkBuffer(harness, c, 22, 9, 21);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException thrown.");
+ }
+ }
+
+ /**
+ * Tests the insertion of a bigger (= gapsize) chunk of text.
+ *
+ * @param harness the test harness to use
+ */
+ void testBigInsert(TestHarness harness)
+ {
+ harness.checkPoint("bigInsert");
+ try
+ {
+ TestGapContent c = new TestGapContent();
+ checkBuffer(harness, c, 10, 1, 10);
+ c.insertString(0, "abcdefghijkl");
+ checkBuffer(harness, c, 28, 12, 27);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException thrown.");
+ }
+ }
+
+ /**
+ * Tests a more complex insertion.
+ *
+ * @param harness the test harness to use
+ */
+ void testComplexInsert(TestHarness harness)
+ {
+ harness.checkPoint("complexInsert");
+ try
+ {
+ TestGapContent c = new TestGapContent();
+ checkBuffer(harness, c, 10, 1, 10);
+ c.insertString(0, "abcdefghijklmno");
+ checkBuffer(harness, c, 34, 15, 33);
+ c.insertString(5, "12345");
+ checkBuffer(harness, c, 34, 10, 23);
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException thrown.");
+ }
+ }
+
+ /**
+ * Checks the state of the GapContent's buffer array.
+ *
+ * @param harness the test harness to use
+ * @param c the gap content to check
+ * @param arrayLength the expected array length
+ * @param gapStart the expected gap start
+ * @param gapEnd the expected gap end
+ */
+ void checkBuffer(TestHarness harness, TestGapContent c, int arrayLength,
+ int gapStart, int gapEnd)
+ {
+ harness.check(c.getArrayLength(), arrayLength);
+ harness.check(c.getTestGapStart(), gapStart);
+ harness.check(c.getTestGapEnd(), gapEnd);
+ }
+
+ /**
+ * The same tests that I added for StringContent.java.
+ */
+ public void testGeneral(TestHarness harness)
+ {
+ harness.checkPoint("testGeneral()");
+
+ GapContent gc = new GapContent();
+ // regular insert
+ try
+ {
+ gc.insertString(0, "ABC");
+ // ignoring undo/redo here - see insertUndo.java
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks below will fail if this happens
+ }
+ harness.check(gc.length(), 4);
+
+ // insert at location before start
+ boolean pass = false;
+ try
+ {
+ gc.insertString(-1, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ catch (Exception _)
+ {
+ pass = false;
+ }
+
+ harness.check(pass);
+
+ // insert at index of last character - this is OK
+ try
+ {
+ gc.insertString(3, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(gc.length(), 7);
+
+ // Insert at index of last character + 1. This appends the new string to
+ // the existing string. (This works since 1.5 of the RI)
+ try
+ {
+ gc.insertString(7, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ pass = false;
+ }
+ harness.check(gc.length(), 10);
+
+ // insert at index of last character + 2
+ pass = false;
+ try
+ {
+ gc.insertString(gc.length() + 1, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // insert empty string
+ int length = gc.length();
+ try
+ {
+ gc.insertString(0, "");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(gc.length(), length);
+
+ // insert null string
+ pass = false;
+ try
+ {
+ gc.insertString(0, null);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void testSpecialInsert(TestHarness harness)
+ {
+ harness.checkPoint("specialInsert");
+ int posValue = -1;
+
+ try
+ {
+ GapContent gc = new GapContent();
+ gc.insertString(0, "foo\nbar\n");
+ gc.remove(0, 4);
+
+ // Gap starts at 0 now and the following Position
+ // instance is created at the end of the gap.
+ Position pos = gc.createPosition(0);
+
+ // This insertion should not move the offset
+ // of the Position object.
+ gc.insertString(0, "z");
+
+ posValue = pos.getOffset();
+ }
+ catch(BadLocationException ble)
+ {
+ }
+ harness.check(posValue, 0);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/text/GapContent/length.java b/gnu/testlet/javax/swing/text/GapContent/length.java
new file mode 100644
index 00000000..50dc8ff5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/length.java
@@ -0,0 +1,62 @@
+/* length.java -- Some checks for the length() method in the GapContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+
+public class length implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ GapContent gc = new GapContent();
+ harness.check(gc.length(), 1);
+ try
+ {
+ gc.insertString(0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ harness.check(gc.length(), 27);
+ gc.remove(0, 3);
+ harness.check(gc.length(), 24);
+ gc.insertString(4, "123");
+ harness.check(gc.length(), 27);
+ gc.remove(20, 5);
+ harness.check(gc.length(), 22);
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/GapContent/remove.java b/gnu/testlet/javax/swing/text/GapContent/remove.java
new file mode 100644
index 00000000..6099656a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/GapContent/remove.java
@@ -0,0 +1,170 @@
+/* remove.java -- Some checks for the remove() method in the
+ StringContent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.GapContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.GapContent;
+import javax.swing.text.Position;
+
+public class remove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testRemoveLast(harness);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ GapContent gc = new GapContent();
+ // regular insert
+ try
+ {
+ gc.insertString(0, "ABCDEFG");
+ // ignoring undo/redo here
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks below will fail if this happens
+ }
+ harness.check(gc.length(), 8);
+
+ // remove from location before start
+ boolean pass = false;
+ try
+ {
+ gc.remove(-1, 3);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true; // Classpath does this
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ pass = false; // JDK does this - it is a bug given the API spec
+ }
+ harness.check(pass);
+
+ // remove from location after end
+ pass = false;
+ try
+ {
+ gc.remove(99, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // doesn't allow removal of last char
+ pass = false;
+ try
+ {
+ gc.remove(7, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ harness.check(gc.length(), 8);
+
+ // remove 0 chars
+ pass = true;
+ try
+ {
+ gc.remove(0, 0);
+ }
+ catch (BadLocationException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ harness.check(gc.length(), 8);
+
+
+ int offset = 0;
+ try
+ {
+ gc = new GapContent();
+ gc.insertString(0, "abc\ndef\n");
+
+ // create position on the 'd'.
+ Position pos = gc.createPosition(4);
+
+ // remove the 'd'
+ gc.remove(4, 1);
+
+ offset = pos.getOffset();
+ }
+ catch(BadLocationException ble)
+ {
+ // If that happens something is pretty odd
+ offset = -1;
+ }
+ finally
+ {
+ // offset of our position should *NOT* have changed
+ harness.check(offset, 4);
+ }
+
+ }
+
+ /**
+ * The API spec says that the last character cannot be removed
+ * (where + nitems < length()).
+ *
+ * @param harness
+ */
+ public void testRemoveLast(TestHarness harness)
+ {
+ harness.checkPoint("testRemoveLast");
+ GapContent gc = new GapContent();
+ harness.check(gc.length(), 1);
+
+ boolean pass = false;
+ try
+ {
+ gc.remove(0, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Entries b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Entries
new file mode 100644
index 00000000..55e76c4a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Entries
@@ -0,0 +1,2 @@
+/InternationalFormatterTest.java/1.2/Thu Nov 23 12:13:11 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Repository b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Repository
new file mode 100644
index 00000000..1d8b5d70
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/InternationalFormatter
diff --git a/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Root b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/InternationalFormatter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java b/gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java
new file mode 100644
index 00000000..061c868a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/InternationalFormatter/InternationalFormatterTest.java
@@ -0,0 +1,43 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2005 Red Hat.
+
+// 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.javax.swing.text.InternationalFormatter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.InternationalFormatter;
+
+/**
+ * Several tests related to InternationalFormatter.
+ */
+public class InternationalFormatterTest
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ InternationalFormatter formatter = new InternationalFormatter();
+ harness.check (!formatter.getCommitsOnValidEdit());
+ harness.check (formatter.getAllowsInvalid());
+ harness.check (!formatter.getOverwriteMode());
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Entries b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Entries
new file mode 100644
index 00000000..b900e0c7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Entries
@@ -0,0 +1,2 @@
+/MaskFormatterTest.java/1.2/Tue Nov 22 20:13:33 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Repository b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Repository
new file mode 100644
index 00000000..7117fea2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/MaskFormatter
diff --git a/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Root b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/MaskFormatter/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTest.java b/gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTest.java
new file mode 100644
index 00000000..5c795b4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/MaskFormatter/MaskFormatterTest.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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.javax.swing.text.MaskFormatter;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.ParseException;
+import javax.swing.text.MaskFormatter;
+
+/**
+ * Several tests related to MaskFormatter.
+ */
+public class MaskFormatterTest
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ MaskFormatter formatter = null;
+ try
+ {
+ formatter = new MaskFormatter("RE'*B**KS");
+ // Default value checks
+ harness.checkPoint("defaults");
+ harness.check (formatter.getValueContainsLiteralCharacters());
+ harness.check (!formatter.getAllowsInvalid());
+ harness.check (formatter.getPlaceholder() == null);
+ harness.check (formatter.getPlaceholderCharacter() == ' ');
+ harness.check (formatter.getValidCharacters() == null);
+ harness.check (formatter.getInvalidCharacters() == null);
+
+
+ // Checks to see whether the appropriate characters are being used to pad
+ harness.checkPoint("padding");
+ formatter.setPlaceholder("MMMMMMMMM");
+ formatter.setPlaceholderCharacter('$');
+ harness.check (formatter.valueToString("RE"),"RE*BMMKS");
+ formatter.setPlaceholder("8");
+ harness.check (formatter.valueToString("RE"),"RE*B$$KS");
+ formatter.setPlaceholder("12345");
+ harness.check (formatter.valueToString("RE"),"RE*B5$KS");
+
+
+ // Checks to see if valid output is produced
+ harness.checkPoint("valid output");
+ formatter.setMask("(###) ###-####");
+ harness.check (formatter.valueToString("(555) 807-9090"),"(555) 807-9090");
+ harness.check (formatter.stringToValue("(555) 807-9090"),"(555) 807-9090");
+ formatter.setValueContainsLiteralCharacters(false);
+ harness.check (formatter.stringToValue("(555) 807-9090"),"5558079090");
+ boolean exception = false;
+ try
+ {
+ harness.check (formatter.valueToString("(555) 807-9090"),"(555) 807-9090");
+ }
+ catch (ParseException pe)
+ {
+ exception = true;
+ }
+ harness.check (exception);
+
+ // Checks to see if valid/invalid character sets work
+ formatter = new MaskFormatter("T##'FA");
+ formatter.setInvalidCharacters("T");
+ formatter.setValidCharacters("4");
+ harness.check(formatter.valueToString("T44F4"), "T44F4");
+ harness.check(formatter.stringToValue("T44F4"), "T44F4");
+ exception = false;
+ try
+ {
+ formatter.valueToString("T33F3");
+ }
+ catch (ParseException pe2)
+ {
+ exception = true;
+ }
+ harness.check(exception);
+ }
+ catch (java.text.ParseException ex)
+ {
+ harness.fail ("an exception was thrown that shouldn't have been");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/CVS/Entries b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Entries
new file mode 100644
index 00000000..774adbe2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Entries
@@ -0,0 +1,12 @@
+/PlainDocumentTest.java/1.2/Thu Jan 6 13:36:48 2005//
+/createPosition.java/1.1/Wed Jan 25 18:15:10 2006//
+/getDocumentProperties.java/1.1/Thu Jun 22 12:41:27 2006//
+/getLength.java/1.1/Wed Jan 25 18:15:10 2006//
+/getRootElements.java/1.2/Fri Jul 28 11:03:22 2006//
+/getText.java/1.1/Wed Jan 25 18:15:10 2006//
+/insertString.java/1.4/Mon Mar 6 01:04:13 2006/-kk/
+/insertUpdate.java/1.2/Thu Jun 22 13:32:57 2006//
+/multipleLeafs.java/1.1/Thu Jan 20 21:33:16 2005//
+/remove.java/1.2/Mon Feb 20 11:30:23 2006//
+/removeJoinesLines.java/1.2/Fri Sep 30 17:52:47 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/CVS/Repository b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Repository
new file mode 100644
index 00000000..b4fbd6fe
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/PlainDocument
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/CVS/Root b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java b/gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java
new file mode 100644
index 00000000..ce85a718
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/PlainDocumentTest.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.PlainDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+public class PlainDocumentTest
+ implements Testlet
+{
+ private void checkElement(TestHarness harness, Element elem,
+ AttributeSet attributes, int children,
+ Element parent, int p0, int p1,
+ boolean leaf, String name)
+ {
+ if (elem == null)
+ {
+ harness.debug("element is null");
+ return;
+ }
+ harness.check(elem.getAttributes() != attributes, "unexpected value for Element.getAttributes()");
+ if (elem.getAttributes() != null)
+ harness.check(elem.getAttributes().getAttributeCount(), 0, "number of attributes");
+ harness.check(elem.getElementCount(), children, "number of children");
+ harness.check(elem.getParentElement() == parent, "wrong parent");
+ harness.check(elem.getStartOffset(), p0, "start offset");
+ harness.check(elem.getEndOffset(), p1, "end offset");
+ harness.check(elem.isLeaf(), leaf, "element is leaf element");
+ harness.check(elem.getName(), name, "element name");
+ }
+
+ public void test(TestHarness harness)
+ {
+ Element root, elem;
+ PlainDocument doc = new PlainDocument();
+
+ // Check Element tree.
+ root = doc.getDefaultRootElement();
+ checkElement(harness, root, null, 1, null, 0, doc.getLength() + 1, false, "paragraph");
+
+ elem = root.getElement(0);
+ checkElement(harness, elem, null, 0, root, 0, doc.getLength() + 1, true, "content");
+
+ try
+ {
+ doc.insertString(0, "This is a test", null);
+ harness.check(doc.getText(0, doc.getLength()), "This is a test", "insertString");
+ harness.check(doc.getDefaultRootElement().getStartOffset(), 0, "start offset");
+ harness.check(doc.getDefaultRootElement().getEndOffset(), 15, "end offset (insertString)");
+
+ doc.insertString(14, "case", null);
+ harness.check(doc.getText(0, doc.getLength()), "This is a testcase", "insertString");
+ harness.check(doc.getDefaultRootElement().getStartOffset(), 0, "start offset");
+ harness.check(doc.getDefaultRootElement().getEndOffset(), 19, "end offset (insertString)");
+
+ doc.insertString(10, "little ", null);
+ harness.check(doc.getText(0, doc.getLength()), "This is a little testcase", "insertString");
+ harness.check(doc.getDefaultRootElement().getStartOffset(), 0, "start offset");
+ harness.check(doc.getDefaultRootElement().getEndOffset(), 26, "end offset (insertString)");
+ }
+ catch (Exception e)
+ {
+ harness.debug(e);
+ harness.fail("unexpected exception");
+ }
+
+ // Check build Element tree.
+ root = doc.getDefaultRootElement();
+ checkElement(harness, root, null, 1, null, 0, doc.getLength() + 1, false, "paragraph");
+
+ elem = root.getElement(0);
+ checkElement(harness, elem, null, 0, root, 0, doc.getLength() + 1, true, "content");
+
+ elem = doc.getParagraphElement(0);
+ checkElement(harness, elem, null, 0, root, 0, doc.getLength() + 1, true, "content");
+
+ harness.check(elem.getElement(0) == null, "element is null");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/createPosition.java b/gnu/testlet/javax/swing/text/PlainDocument/createPosition.java
new file mode 100644
index 00000000..ffa9e301
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/createPosition.java
@@ -0,0 +1,100 @@
+/* createPosition.java -- Some checks for the createPosition() method in the
+ PlainDocument class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Position;
+
+public class createPosition implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("test1");
+ PlainDocument d = new PlainDocument();
+ try
+ {
+ Position p0 = d.createPosition(0);
+ harness.check(p0.getOffset(), 0);
+ Position p1 = d.createPosition(1);
+ harness.check(p1.getOffset(), 1);
+ d.insertString(0, "ABC", null);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 4);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("test2");
+ PlainDocument d = new PlainDocument();
+ try
+ {
+ d.insertString(0, "ABC", null);
+ Position p0 = d.createPosition(0);
+ harness.check(p0.getOffset(), 0);
+ Position p1 = d.createPosition(1);
+ harness.check(p1.getOffset(), 1);
+ Position p2 = d.createPosition(3);
+ harness.check(p2.getOffset(), 3);
+ Position p3 = d.createPosition(4);
+ harness.check(p3.getOffset(), 4);
+
+ d.insertString(1, "XYZ", null);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 4);
+ harness.check(p2.getOffset(), 6);
+ harness.check(p3.getOffset(), 7);
+
+ d.remove(2, 3);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 2);
+ harness.check(p2.getOffset(), 3);
+ harness.check(p3.getOffset(), 4);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/getDocumentProperties.java b/gnu/testlet/javax/swing/text/PlainDocument/getDocumentProperties.java
new file mode 100644
index 00000000..af3b00de
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/getDocumentProperties.java
@@ -0,0 +1,56 @@
+/* getDocumentProperties.java -- Tests getDocumentProperties()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import java.util.Dictionary;
+
+import javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests getDocumentProperties().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getDocumentProperties implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testDefault(harness);
+
+ }
+
+ private void testDefault(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ Dictionary props = doc.getDocumentProperties();
+ h.check(props.size(), 2);
+ // This property is inherited from AbstractDocument.
+ h.check(props.get("i18n"), Boolean.FALSE);
+ h.check(props.get("tabSize"), new Integer(8));
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/getLength.java b/gnu/testlet/javax/swing/text/PlainDocument/getLength.java
new file mode 100644
index 00000000..20bb841d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/getLength.java
@@ -0,0 +1,68 @@
+/* getLength.java -- Some checks for the getLength() method in the
+ PlainDocument class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.PlainDocument;
+
+public class getLength implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ PlainDocument d = new PlainDocument();
+
+ harness.check(d.getLength(), 0);
+ try
+ {
+ d.insertString(0, "ABC", null);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks will fail if this happens
+ }
+ harness.check(d.getLength(), 3);
+
+ // try adding a string with a '\n'
+ try
+ {
+ d.insertString(0, "ABC\n", null);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks will fail if this happens
+ }
+ harness.check(d.getLength(), 7);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java b/gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java
new file mode 100644
index 00000000..763e9c42
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/getRootElements.java
@@ -0,0 +1,49 @@
+/* getRootElements.java -- Some checks for the getRootElements() method in the
+ PlainDocument class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+
+public class getRootElements implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ PlainDocument d = new PlainDocument();
+ Element[] e = d.getRootElements();
+ harness.check(e.length, 2);
+ harness.check(e[0], d.getDefaultRootElement());
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/getText.java b/gnu/testlet/javax/swing/text/PlainDocument/getText.java
new file mode 100644
index 00000000..9d60616f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/getText.java
@@ -0,0 +1,265 @@
+/* getText.java -- Some checks for the getText() method in the PlainDocument
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Segment;
+
+public class getText implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testMethod1(harness);
+ testMethod2(harness);
+ }
+
+ public void testMethod1(TestHarness harness)
+ {
+ harness.checkPoint("(int, int)");
+ PlainDocument d = new PlainDocument();
+
+ // check default result
+ try
+ {
+ d.insertString(0, "XYZ", null);
+ harness.check(d.getText(0, 3).equals("XYZ"));
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+
+ // get the implicit newline
+ try
+ {
+ harness.check(d.getText(0, 4).equals("XYZ\n"));
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+
+ // fail on next char
+ try
+ {
+ d.getText(0, 5);
+ harness.check(false);
+ }
+ catch (BadLocationException e)
+ {
+ harness.check(true);
+ }
+
+ // add some more text
+ try
+ {
+ d.insertString(0, "ABCDEFG", null);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(d.getLength(), 10);
+
+ // if index < 0 should get BadLocationException
+ boolean pass = false;
+ try
+ {
+ d.getText(-1, 3);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ d.getText(99, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ d.getText(0, 99);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ try
+ {
+ harness.check(d.getText(1, 0).equals(""));
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ }
+
+ public void testMethod2(TestHarness harness)
+ {
+ harness.checkPoint("(int, int, Segment)");
+ PlainDocument d = new PlainDocument();
+ Segment seg = new Segment();
+
+ // check default result
+ try
+ {
+ d.getText(0, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - tests below will fail if this happens
+ }
+ harness.check(seg.offset, 0);
+ harness.check(seg.count, 1);
+ harness.check(seg.array[0], '\n');
+
+ // if len goes past end of range, should get BadLocationException
+ boolean pass = false;
+ try
+ {
+ d.getText(0, 2, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add some more text
+ try
+ {
+ d.insertString(0, "ABCDEFG", null);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(d.getLength(), 7);
+
+ // if index < 0 should get BadLocationException
+ pass = false;
+ try
+ {
+ d.getText(-1, 3, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ d.getText(99, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ d.getText(0, 99, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ try
+ {
+ d.getText(1, 0, seg);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(seg.offset, 1);
+ harness.check(seg.count, 0);
+
+ // what happens for null Segment
+ pass = false;
+ try
+ {
+ d.getText(0, 1, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(pass);
+
+ // what happens if we update the Segment array, does that change the
+ // StringContent
+ Segment seg2 = new Segment();
+ Segment seg3 = new Segment();
+ PlainDocument d2 = new PlainDocument();
+ try
+ {
+ d2.insertString(0, "XYZ", null);
+ d2.getText(0, 3, seg2);
+ seg2.array[1] = '5';
+ d2.getText(0, 3, seg3);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(seg2.array[1], '5');
+ harness.check(seg3.array[1], '5');
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/insertString.java b/gnu/testlet/javax/swing/text/PlainDocument/insertString.java
new file mode 100644
index 00000000..2313978f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/insertString.java
@@ -0,0 +1,372 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <kennke@aicas.com>
+// Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Position;
+import javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests if insertString in PlainDocument works correctly.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class insertString implements Testlet
+{
+
+ /**
+ * Starts the test run.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testNewline(harness);
+ testFilterNewline(harness);
+ testArguments(harness);
+ testPositions(harness);
+
+ testModifications(harness);
+ }
+
+ /**
+ * Tests inserting a string with a newline. This should lead to a document
+ * structure with one BranchElement as root, and two LeafElement as children.
+ *
+ * @param harness the test harness to use
+ */
+ private void testNewline(TestHarness harness)
+ {
+ harness.checkPoint("testNewline");
+
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "Hello\nWorld", new SimpleAttributeSet());
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException");
+ }
+ Element root = doc.getRootElements()[0];
+ harness.check(root instanceof AbstractDocument.BranchElement);
+ harness.check(root.getElementCount(), 2);
+ Element el1 = root.getElement(0);
+ harness.check(el1 instanceof AbstractDocument.LeafElement);
+ harness.check(el1.getStartOffset(), 0);
+ harness.check(el1.getEndOffset(), 6);
+ Element el2 = root.getElement(1);
+ harness.check(el2 instanceof AbstractDocument.LeafElement);
+ harness.check(el2.getStartOffset(), 6);
+ harness.check(el2.getEndOffset(), 12);
+ }
+
+ /**
+ * Tests inserting a string with a newline with the filterNewLine property
+ * set to Boolean.TRUE. This should lead to a document
+ * structure with one BranchElement as root, and one LeafElement as child,
+ * spanning the whole content.
+ *
+ * @param harness the test harness to use
+ */
+ private void testFilterNewline(TestHarness harness)
+ {
+ harness.checkPoint("testFilterNewline");
+
+ PlainDocument doc = new PlainDocument();
+ doc.putProperty("filterNewlines", Boolean.TRUE);
+ try
+ {
+ doc.insertString(0, "Hello\nWorld", new SimpleAttributeSet());
+ }
+ catch (BadLocationException ex)
+ {
+ harness.fail("BadLocationException");
+ }
+ Element root = doc.getRootElements()[0];
+ harness.check(root instanceof AbstractDocument.BranchElement);
+ harness.check(root.getElementCount(), 1);
+ Element el1 = root.getElement(0);
+ harness.check(el1 instanceof AbstractDocument.LeafElement);
+ harness.check(el1.getStartOffset(), 0);
+ harness.check(el1.getEndOffset(), 12);
+ }
+
+ public void testArguments(TestHarness harness)
+ {
+ harness.checkPoint("testArguments");
+ PlainDocument d = new PlainDocument();
+
+ // negative index
+ boolean pass = false;
+ try
+ {
+ d.insertString(-1, "XYZ", SimpleAttributeSet.EMPTY);
+ }
+ catch (Exception e)
+ {
+ pass = e instanceof BadLocationException;
+ }
+ harness.check(pass);
+
+ // index > length
+ pass = false;
+ try
+ {
+ d.insertString(2, "XYZ", SimpleAttributeSet.EMPTY);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // null string is OK (ignored)
+ pass = true;
+ try
+ {
+ d.insertString(0, null, SimpleAttributeSet.EMPTY);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ // null attribute set is OK
+ pass = true;
+ try
+ {
+ d.insertString(0, "ABC", null);
+ }
+ catch (Exception e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+
+ }
+
+ public void testPositions(TestHarness harness)
+ {
+ harness.checkPoint("testPositions");
+ PlainDocument d = new PlainDocument();
+ try
+ {
+ d.insertString(0, "ABC", null);
+ Position p0 = d.createPosition(0);
+ harness.check(p0.getOffset(), 0);
+ Position p1 = d.createPosition(1);
+ harness.check(p1.getOffset(), 1);
+ Position p2 = d.createPosition(3);
+ harness.check(p2.getOffset(), 3);
+ Position p3 = d.createPosition(4);
+ harness.check(p3.getOffset(), 4);
+
+ d.insertString(1, "XYZ", null);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 4);
+ harness.check(p2.getOffset(), 6);
+ harness.check(p3.getOffset(), 7);
+
+ d.remove(2, 3);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 2);
+ harness.check(p2.getOffset(), 3);
+ harness.check(p3.getOffset(), 4);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ }
+
+ // Helper for testModifications.
+ PlainDocument prepare(String initialContent)
+ {
+ PlainDocument pd = new PlainDocument();
+
+ try
+ {
+ pd.insertString(0, initialContent, null);
+
+ return pd;
+ }
+ catch (BadLocationException ble)
+ {
+ return pd;
+ }
+ }
+
+ // Helper for testModifications.
+ void checkElement(TestHarness harness,
+ PlainDocument doc,
+ int elementIndex,
+ int startOffset,
+ int endOffset,
+ String text)
+ {
+ Element e = doc.getDefaultRootElement();
+ Element child = e.getElement(elementIndex);
+
+ harness.check(child.getStartOffset(), startOffset);
+ harness.check(child.getEndOffset(), endOffset);
+
+ String retrievedText = null;
+ try
+ {
+ retrievedText = doc.getText(startOffset, endOffset-startOffset);
+ }
+ catch (BadLocationException ble)
+ {
+ }
+ harness.check(retrievedText, text);
+ }
+
+ // Helper for testModifications.
+ void insert(PlainDocument doc, int index, String text)
+ {
+ try
+ {
+ doc.insertString(index, text, null);
+ }
+ catch(BadLocationException ble)
+ {
+ }
+ }
+
+ void testModifications(TestHarness h)
+ {
+ // Test 1: Insert an "a" into before a "\n".
+ h.checkPoint("modifications-insert char 1-pre");
+ PlainDocument doc = new PlainDocument();;
+
+ // Checks whether there is an Element at index 0 which has the
+ // starting offset 0, end offset 1 and contains the text "\n".
+ checkElement(h, doc, 0, 0, 1, "\n");
+
+ h.checkPoint("modifications-insert char 1-post");
+ insert(doc, 0, "a");
+ checkElement(h, doc, 0, 0, 2, "a\n");
+
+ // Test 2: Insert a newline after the first a in "abc\nbla\n".
+ h.checkPoint("modifications-insert newline 1-pre");
+ doc = prepare("abc\nbla\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "bla\n");
+
+ h.checkPoint("modifications-insert newline 1-post");
+ insert(doc, 1, "\n");
+ checkElement(h, doc, 0, 0, 2, "a\n");
+ checkElement(h, doc, 1, 2, 5, "bc\n");
+ checkElement(h, doc, 2, 5, 9, "bla\n");
+
+ // Test 3: Insert a newline after the c in "abc\n".
+ h.checkPoint("modifications-insert newline 2-pre");
+ doc = prepare("abc\nbla\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+
+ h.checkPoint("modifications-insert newline 2-post");
+ insert(doc, 3, "\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 5, "\n");
+
+ // Test 4: Type a char after "abc\n".
+ h.checkPoint("modifications-insert char 2-pre");
+ doc = prepare("abc\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+
+ h.checkPoint("modifications-insert char 2-post");
+ insert(doc, 4, "d");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 6, "d\n");
+
+ // Test 5: Insert "foo\nbaz\nbar" after "ab" in "abc\ndef\n".
+ h.checkPoint("modifications-insert multi-line string 1-pre");
+ doc = prepare("abc\ndef\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "def\n");
+
+ h.checkPoint("modifications-insert multi-line string 1-post");
+ insert(doc, 2, "foo\nbaz\nbar");
+ checkElement(h, doc, 0, 0, 6, "abfoo\n");
+ checkElement(h, doc, 1, 6, 10, "baz\n");
+ checkElement(h, doc, 2, 10, 15, "barc\n");
+ checkElement(h, doc, 3, 15, 19, "def\n");
+
+ // Test 6: Insert "foo" after first newline in "abc\ndef\n"
+ h.checkPoint("modifications-insert single-line string-pre");
+ doc = prepare("abc\ndef\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "def\n");
+
+ h.checkPoint("modifications-insert single-line string-post");
+ insert(doc, 4, "foo");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 11, "foodef\n");
+
+ // Test 7: Insert "foo\nbaz\nbar" after first newline in "abc\ndef\n".
+ h.checkPoint("modifications-insert multi-line string 2-pre");
+ doc = prepare("abc\ndef\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "def\n");
+
+ h.checkPoint("modifications-insert multi-line string 2-post");
+ insert(doc, 4, "foo\nbaz\nbar");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "foo\n");
+ checkElement(h, doc, 2, 8, 12, "baz\n");
+ checkElement(h, doc, 3, 12, 19, "bardef\n");
+
+ // Test 8: Type char after a in "ac\n".
+ h.checkPoint("modifications-insert char 3-pre");
+ doc = prepare("ac\n");
+ checkElement(h, doc, 0, 0, 3, "ac\n");
+
+ h.checkPoint("modifications-insert char 3-post");
+ insert(doc, 1, "b");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+
+ // Test 9: Multiple text insertions
+ h.checkPoint("modifications-multi-insert-1");
+ doc = prepare("abc\ndef\n");
+ checkElement(h, doc, 0, 0, 4, "abc\n");
+ checkElement(h, doc, 1, 4, 8, "def\n");
+
+ h.checkPoint("modifications-multi-insert-2");
+ insert(doc, 3, "---");
+ checkElement(h, doc, 0, 0, 7, "abc---\n");
+ checkElement(h, doc, 1, 7, 11, "def\n");
+
+ h.checkPoint("modifications-multi-insert-3");
+ insert(doc, 7, "---");
+ checkElement(h, doc, 0, 0, 7, "abc---\n");
+ checkElement(h, doc, 1, 7, 14, "---def\n");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java b/gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
new file mode 100644
index 00000000..f9b183b4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/insertUpdate.java
@@ -0,0 +1,177 @@
+/* insertUpdate.java -- Tests PlainDocument.insertUpdate()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests PlainDocument.insertUpdate().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class insertUpdate implements Testlet
+{
+
+ private class TestListener
+ implements DocumentListener
+ {
+ public void changedUpdate(DocumentEvent e)
+ {
+ ev = e;
+ }
+ public void insertUpdate(DocumentEvent e)
+ {
+ ev = e;
+ }
+ public void removeUpdate(DocumentEvent e)
+ {
+ ev = e;
+ }
+
+ }
+
+ DocumentEvent ev;
+
+ public void test(TestHarness harness)
+ {
+ test01(harness);
+ test02(harness);
+ test03(harness);
+ }
+
+ private void test01(TestHarness h)
+ {
+ h.checkPoint("test01");
+ PlainDocument doc = new PlainDocument();
+ doc.addDocumentListener(new TestListener());
+
+ try
+ {
+ doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
+ doc.insertString(15, "abcdefghijklmn\n", null);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail("Unexpected BadLocationException");
+ }
+
+ DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
+
+ h.check(change.getIndex(), 2);
+
+ Element[] added = change.getChildrenAdded();
+ h.check(added.length, 2);
+ h.check(added[0].getStartOffset(), 13);
+ h.check(added[0].getEndOffset(), 30);
+ h.check(added[1].getStartOffset(), 30);
+ h.check(added[1].getEndOffset(), 34);
+
+ Element[] removed = change.getChildrenRemoved();
+ h.check(removed.length, 1);
+ h.check(removed[0].getStartOffset(), 13);
+ h.check(removed[0].getEndOffset(), 34);
+ }
+
+ private void test02(TestHarness h)
+ {
+ h.checkPoint("test02");
+ PlainDocument doc = new PlainDocument();
+ doc.addDocumentListener(new TestListener());
+
+ try
+ {
+ doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
+ doc.insertString(13, "\nabc", null);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail("Unexpected BadLocationException");
+ }
+
+ DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
+
+ h.check(change.getIndex(), 1);
+
+ Element[] added = change.getChildrenAdded();
+ h.check(added.length, 3);
+ h.check(added[0].getStartOffset(), 6);
+ h.check(added[0].getEndOffset(), 13);
+ h.check(added[1].getStartOffset(), 13);
+ h.check(added[1].getEndOffset(), 14);
+ h.check(added[2].getStartOffset(), 14);
+ h.check(added[2].getEndOffset(), 23);
+
+ Element[] removed = change.getChildrenRemoved();
+ h.check(removed.length, 2);
+ h.check(removed[0].getStartOffset(), 6);
+ h.check(removed[0].getEndOffset(), 17);
+ h.check(removed[1].getStartOffset(), 17);
+ h.check(removed[1].getEndOffset(), 23);
+ }
+
+ private void test03(TestHarness h)
+ {
+ h.checkPoint("test03");
+ PlainDocument doc = new PlainDocument();
+ doc.addDocumentListener(new TestListener());
+
+ try
+ {
+ doc.insertString(0, "abcd", null);
+ doc.insertString(0, "abcde\nabcdef\nabcde\n", null);
+ }
+ catch (BadLocationException ex)
+ {
+ h.fail("Unexpected BadLocationException");
+ }
+
+ DocumentEvent.ElementChange change = ev.getChange(doc.getDefaultRootElement());
+
+ h.check(change.getIndex(), 0);
+
+ Element[] added = change.getChildrenAdded();
+ h.check(added.length, 4);
+ h.check(added[0].getStartOffset(), 0);
+ h.check(added[0].getEndOffset(), 6);
+ h.check(added[1].getStartOffset(), 6);
+ h.check(added[1].getEndOffset(), 13);
+ h.check(added[2].getStartOffset(), 13);
+ h.check(added[2].getEndOffset(), 19);
+ h.check(added[3].getStartOffset(), 19);
+ h.check(added[3].getEndOffset(), 24);
+
+ Element[] removed = change.getChildrenRemoved();
+ h.check(removed.length, 1);
+ h.check(removed[0].getStartOffset(), 0);
+ h.check(removed[0].getEndOffset(), 24);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java b/gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java
new file mode 100644
index 00000000..c2f8881e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/multipleLeafs.java
@@ -0,0 +1,137 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.text.PlainDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+public class multipleLeafs
+ implements Testlet
+{
+ private void checkElement(TestHarness harness, Element elem,
+ AttributeSet attributes, int children,
+ Element parent, int p0, int p1,
+ boolean leaf, String name)
+ {
+ if (elem == null)
+ {
+ harness.debug("element is null");
+ return;
+ }
+ harness.check(elem.getAttributes() != attributes, "unexpected value for Element.getAttributes()");
+ if (elem.getAttributes() != null)
+ harness.check(elem.getAttributes().getAttributeCount(), 0, "number of attributes");
+ harness.check(elem.getElementCount(), children, "number of children");
+ harness.check(elem.getParentElement() == parent, "wrong parent");
+ harness.check(elem.getStartOffset(), p0, "start offset");
+ harness.check(elem.getEndOffset(), p1, "end offset");
+ harness.check(elem.isLeaf(), leaf, "element is leaf element");
+ harness.check(elem.getName(), name, "element name");
+ }
+
+ public void test(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+
+ try
+ {
+ doc.insertString(doc.getLength(), "Two households, both alike in dignity,\n", null);
+ doc.insertString(doc.getLength(), "In fair Verona, where we lay our scene,\n", null);
+ doc.insertString(doc.getLength(), "From ancient grudge break to new mutiny,\n", null);
+ doc.insertString(doc.getLength(), "Where civil blood makes civil hands unclean.\n", null);
+ doc.insertString(doc.getLength(), "From forth the fatal loins of these two foes\n", null);
+ doc.insertString(doc.getLength(), "A pair of star-cross'd lovers take their life;\n", null);
+ doc.insertString(doc.getLength(), "Whole misadventured piteous overthrows\n", null);
+ doc.insertString(doc.getLength(), "Do with their death bury their parents' strife.\n", null);
+ doc.insertString(doc.getLength(), "The fearful passage of their death-mark'd love,\n", null);
+ doc.insertString(doc.getLength(), "And the continuance of their parents' rage,\n", null);
+ doc.insertString(doc.getLength(), "Which, but their children's end, nought could remove,\n", null);
+ doc.insertString(doc.getLength(), "Is now the two hours' traffic of our stage;\n", null);
+ doc.insertString(doc.getLength(), "The which if you with patient ears attend,\n", null);
+ doc.insertString(doc.getLength(), "What here shall miss, our toil shall strive to mend.\n", null);
+ }
+ catch (Exception e)
+ {
+ h.debug(e);
+ h.fail("unexpected exception");
+ }
+
+ h.checkPoint("leafs");
+
+
+ // Check for multiple leafs.
+ Element root = doc.getDefaultRootElement();
+ h.check(root.getElementCount(), 15);
+ h.check(root.getStartOffset(), 0);
+ h.check(root.getEndOffset(), 631);
+
+ Element leaf = root.getElement(0);
+ h.check(leaf.getStartOffset(), 0);
+ h.check(leaf.getEndOffset(), 39);
+
+ leaf = root.getElement(1);
+ h.check(leaf.getStartOffset(), 39);
+ h.check(leaf.getEndOffset(), 79);
+
+ leaf = root.getElement(2);
+ h.check(leaf.getStartOffset(), 79);
+ h.check(leaf.getEndOffset(), 120);
+
+ leaf = root.getElement(3);
+ h.check(leaf.getStartOffset(), 120);
+ h.check(leaf.getEndOffset(), 165);
+
+ leaf = root.getElement(4);
+ h.check(leaf.getStartOffset(), 165);
+ h.check(leaf.getEndOffset(), 210);
+
+ leaf = root.getElement(5);
+ h.check(leaf.getStartOffset(), 210);
+ h.check(leaf.getEndOffset(), 257);
+
+ leaf = root.getElement(6);
+ h.check(leaf.getStartOffset(), 257);
+ h.check(leaf.getEndOffset(), 296);
+
+ leaf = root.getElement(7);
+ h.check(leaf.getStartOffset(), 296);
+ h.check(leaf.getEndOffset(), 344);
+
+ leaf = root.getElement(8);
+ h.check(leaf.getStartOffset(), 344);
+ h.check(leaf.getEndOffset(), 392);
+
+ leaf = root.getElement(9);
+ h.check(leaf.getStartOffset(), 392);
+ h.check(leaf.getEndOffset(), 436);
+
+ leaf = root.getElement(10);
+ h.check(leaf.getStartOffset(), 436);
+ h.check(leaf.getEndOffset(), 490);
+
+ leaf = root.getElement(11);
+ h.check(leaf.getStartOffset(), 490);
+ h.check(leaf.getEndOffset(), 534);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/remove.java b/gnu/testlet/javax/swing/text/PlainDocument/remove.java
new file mode 100644
index 00000000..e3cd6f84
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/remove.java
@@ -0,0 +1,195 @@
+/* remove.java -- Some checks for the remove() method in the PlainDocument
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+ Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.PlainDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.Position;
+
+public class remove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testArguments(harness);
+ testPositions(harness);
+
+ testBehavior(harness);
+ }
+
+ public void testArguments(TestHarness harness)
+ {
+ harness.checkPoint("testArguments");
+ PlainDocument d = new PlainDocument();
+ try
+ {
+ d.insertString(0, "ABC", null);
+ }
+ catch (BadLocationException e)
+ {
+ }
+
+ // negative index
+ boolean pass = false;
+ try
+ {
+ d.remove(-1, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // index too high
+ pass = false;
+ try
+ {
+ d.remove(4, 0);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // index + length to high
+ pass = false;
+ try
+ {
+ d.remove(2, 99);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative length
+ pass = false;
+ try
+ {
+ d.remove(2, -1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+ public void testPositions(TestHarness harness)
+ {
+ harness.checkPoint("testPositions");
+ PlainDocument d = new PlainDocument();
+ try
+ {
+ d.insertString(0, "ABCDEF", null);
+ Position p0 = d.createPosition(0);
+ harness.check(p0.getOffset(), 0);
+ Position p1 = d.createPosition(1);
+ harness.check(p1.getOffset(), 1);
+ Position p2 = d.createPosition(2);
+ harness.check(p2.getOffset(), 2);
+ Position p3 = d.createPosition(3);
+ harness.check(p3.getOffset(), 3);
+ Position p4 = d.createPosition(4);
+ harness.check(p4.getOffset(), 4);
+ Position p5 = d.createPosition(5);
+ harness.check(p5.getOffset(), 5);
+ Position p6 = d.createPosition(6);
+ harness.check(p6.getOffset(), 6);
+
+ d.remove(2, 2);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 1);
+ harness.check(p2.getOffset(), 2);
+ harness.check(p3.getOffset(), 2);
+ harness.check(p4.getOffset(), 2);
+ harness.check(p5.getOffset(), 3);
+ harness.check(p6.getOffset(), 4);
+
+ d.remove(0, 1);
+ harness.check(p0.getOffset(), 0);
+ harness.check(p1.getOffset(), 0);
+ harness.check(p2.getOffset(), 1);
+ harness.check(p3.getOffset(), 1);
+ harness.check(p4.getOffset(), 1);
+ harness.check(p5.getOffset(), 2);
+ harness.check(p6.getOffset(), 3);
+
+ }
+ catch (BadLocationException e)
+ {
+ }
+ }
+
+ private void testBehavior(TestHarness harness)
+ {
+ harness.checkPoint("testArguments");
+
+ PlainDocument pd = new PlainDocument();
+ int index0 = -1;
+ int index1 = -1;
+
+ try
+ {
+ pd.insertString(0, "abc\ndef\n", null);
+
+ // Delete the 'c'.
+ pd.remove(2, 1);
+
+ Element re = pd.getDefaultRootElement();
+
+ // There should still be two separate lines
+ // (no Element merge should have taken place).
+ index0 = re.getElementIndex(2);
+ index1 = re.getElementIndex(3);
+ }
+ catch (BadLocationException ble)
+ {
+ // Very odd. This should not happen.
+ index0 = -1;
+ index1 = -1;
+ }
+ finally
+ {
+ harness.check(index0, 0);
+ harness.check(index1, 1);
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java b/gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java
new file mode 100644
index 00000000..65516785
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/PlainDocument/removeJoinesLines.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat.
+
+// 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.javax.swing.text.PlainDocument;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+
+// Checks whether a remove operation on a PlainDocument that spans multiple
+// lines causes the surrounding lines to be joined together.
+public class removeJoinesLines
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ Element root;
+ PlainDocument doc = new PlainDocument();
+ root = doc.getDefaultRootElement();
+
+ try
+ {
+ doc.insertString(0, "Line One\n", null);
+ doc.insertString(doc.getLength(), "Line Two\n", null);
+ doc.insertString(doc.getLength(), "Line Three", null);
+ doc.remove(5, 18);
+ harness.check(root.getElementCount() == 1);
+ }
+ catch (Exception e)
+ {
+ }
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/Segment/CVS/Entries b/gnu/testlet/javax/swing/text/Segment/CVS/Entries
new file mode 100644
index 00000000..cfb365fd
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/CVS/Entries
@@ -0,0 +1,15 @@
+/clone.java/1.1/Mon Jan 23 17:08:13 2006//
+/constructors.java/1.1/Mon Jan 23 17:08:13 2006//
+/current.java/1.1/Mon Jan 23 17:08:13 2006//
+/first.java/1.1/Mon Jan 23 17:08:13 2006//
+/getBeginIndex.java/1.1/Mon Jan 23 17:08:13 2006//
+/getEndIndex.java/1.1/Mon Jan 23 17:08:13 2006//
+/getIndex.java/1.1/Mon Jan 23 17:08:13 2006//
+/isPartialReturn.java/1.1/Mon Jan 23 17:08:13 2006//
+/last.java/1.1/Mon Jan 23 17:08:13 2006//
+/next.java/1.1/Mon Jan 23 17:08:13 2006//
+/previous.java/1.1/Mon Jan 23 17:08:13 2006//
+/setIndex.java/1.1/Mon Jan 23 17:08:13 2006//
+/setPartialReturn.java/1.1/Mon Jan 23 17:08:13 2006//
+/toString.java/1.1/Mon Jan 23 17:08:13 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/Segment/CVS/Repository b/gnu/testlet/javax/swing/text/Segment/CVS/Repository
new file mode 100644
index 00000000..e80cf40c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/Segment
diff --git a/gnu/testlet/javax/swing/text/Segment/CVS/Root b/gnu/testlet/javax/swing/text/Segment/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/Segment/clone.java b/gnu/testlet/javax/swing/text/Segment/clone.java
new file mode 100644
index 00000000..8f0c5b35
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/clone.java
@@ -0,0 +1,72 @@
+/* clone.java -- Some checks for the clone() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C'};
+ Segment s1 = new Segment(ch, 0, 3);
+ Segment s2 = (Segment) s1.clone();
+ harness.check(!s1.equals(s2));
+ harness.check(s2.offset, 0);
+ harness.check(s2.count, 3);
+ harness.check(s2.array, ch);
+
+ // offset is independent
+ s1.offset = 1;
+ harness.check(s2.offset, 0);
+ s2.offset = 1;
+ harness.check(s2.offset, 1);
+
+ // count is independent
+ s1.count = 2;
+ harness.check(s2.count, 3);
+ s2.count = 2;
+ harness.check(s2.count, 2);
+
+ // array is a shallow copy and not independent
+ s1.array[1] = 'X';
+ harness.check(s2.array[1], 'X');
+
+ char[] ch2 = new char[] {'X', 'Y', 'Z'};
+ s1.array = ch2;
+
+ // s2 still points to ch
+ harness.check(s2.array, ch);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/constructors.java b/gnu/testlet/javax/swing/text/Segment/constructors.java
new file mode 100644
index 00000000..af0fc6cb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/constructors.java
@@ -0,0 +1,89 @@
+/* constructors.java -- Some checks for the constructors in the Segment
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ Segment s = new Segment();
+ harness.check(s.offset, 0);
+ harness.check(s.count, 0);
+ harness.check(s.array, null);
+ harness.check(s.toString(), "");
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(char[], int, int)");
+ char[] ch = new char[] {'A', 'B', 'C'};
+ Segment s = new Segment(ch, 1, 2);
+ harness.check(s.offset, 1);
+ harness.check(s.count, 2);
+ harness.check(s.array, ch);
+ harness.check(s.toString(), "BC");
+ harness.check(s.getIndex(), 0);
+ harness.check(s.getBeginIndex(), 1);
+ harness.check(s.getEndIndex(), 3);
+
+ // try offset out of range - this creates an instance with a bad state
+ s = new Segment(ch, 4, 1);
+ harness.check(s.offset, 4);
+ harness.check(s.count, 1);
+ harness.check(s.array, ch);
+
+ // null array
+ s = new Segment(null, 0, 1);
+ harness.check(s.offset, 0);
+ harness.check(s.count, 1);
+ harness.check(s.array, null);
+
+ // negative offsets
+ s = new Segment(ch, -4, 1);
+ harness.check(s.offset, -4);
+ harness.check(s.count, 1);
+ harness.check(s.array, ch);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/current.java b/gnu/testlet/javax/swing/text/Segment/current.java
new file mode 100644
index 00000000..a2457658
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/current.java
@@ -0,0 +1,68 @@
+/* current.java -- Some checks for the current() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.CharacterIterator;
+
+import javax.swing.text.Segment;
+
+public class current implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.current(), 'A');
+ s.last();
+ harness.check(s.current(), 'G');
+ s.next();
+ harness.check(s.current(), CharacterIterator.DONE);
+ s.first();
+ harness.check(s.current(), 'A');
+ s.previous();
+ harness.check(s.current(), 'A');
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.current(), 'A');
+ s.last();
+ harness.check(s.current(), 'F');
+ s.next();
+ harness.check(s.current(), CharacterIterator.DONE);
+ s.first();
+ harness.check(s.current(), 'D');
+ s.previous();
+ harness.check(s.current(), 'D');
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/first.java b/gnu/testlet/javax/swing/text/Segment/first.java
new file mode 100644
index 00000000..2fffd75f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/first.java
@@ -0,0 +1,60 @@
+/* first.java -- Some checks for the first() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class first implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.first(), 'A');
+ harness.check(s.getIndex(), 0);
+ s.last();
+ harness.check(s.getIndex(), 6);
+ harness.check(s.first(), 'A');
+ harness.check(s.getIndex(), 0);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.first(), 'D');
+ harness.check(s.getIndex(), 3);
+ s.last();
+ harness.check(s.getIndex(), 5);
+ harness.check(s.first(), 'D');
+ harness.check(s.getIndex(), 3);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/getBeginIndex.java b/gnu/testlet/javax/swing/text/Segment/getBeginIndex.java
new file mode 100644
index 00000000..3a1b6aed
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/getBeginIndex.java
@@ -0,0 +1,51 @@
+/* getBeginIndex.java -- Some checks for the getBeginIndex() method in the
+ Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class getBeginIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.getBeginIndex(), 0);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.getBeginIndex(), 3);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/getEndIndex.java b/gnu/testlet/javax/swing/text/Segment/getEndIndex.java
new file mode 100644
index 00000000..62eaafb0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/getEndIndex.java
@@ -0,0 +1,51 @@
+/* getEndIndex.java -- Some checks for the getEndIndex() method in the
+ Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class getEndIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.getEndIndex(), 7);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.getEndIndex(), 6);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/getIndex.java b/gnu/testlet/javax/swing/text/Segment/getIndex.java
new file mode 100644
index 00000000..d4b77097
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/getIndex.java
@@ -0,0 +1,68 @@
+/* getIndex.java -- Some checks for the getIndex() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class getIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.getIndex(), 0);
+ s.next();
+ harness.check(s.getIndex(), 1);
+ s.last();
+ harness.check(s.getIndex(), 6);
+ s.next();
+ harness.check(s.getIndex(), 7);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.getIndex(), 0);
+ s.first();
+ harness.check(s.getIndex(), 3);
+ s.next();
+ harness.check(s.getIndex(), 4);
+ s.last();
+ harness.check(s.getIndex(), 5);
+ s.next();
+ harness.check(s.getIndex(), 6);
+ s.first();
+ harness.check(s.getIndex(), 3);
+ s.previous();
+ harness.check(s.getIndex(), 3);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/isPartialReturn.java b/gnu/testlet/javax/swing/text/Segment/isPartialReturn.java
new file mode 100644
index 00000000..3ab5ff7c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/isPartialReturn.java
@@ -0,0 +1,49 @@
+/* isPartialReturn.java -- Some checks for the isPartialReturn() method in the
+ Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class isPartialReturn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C'};
+ Segment s1 = new Segment(ch, 0, 3);
+ harness.check(s1.isPartialReturn(), false);
+ s1.setPartialReturn(true);
+ harness.check(s1.isPartialReturn(), true);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/last.java b/gnu/testlet/javax/swing/text/Segment/last.java
new file mode 100644
index 00000000..97ece8a0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/last.java
@@ -0,0 +1,52 @@
+/* last.java -- Some checks for the last() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class last implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ harness.check(s.last(), 'G');
+ harness.check(s.getIndex(), 6);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ harness.check(s.last(), 'F');
+ harness.check(s.getIndex(), 5);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/next.java b/gnu/testlet/javax/swing/text/Segment/next.java
new file mode 100644
index 00000000..d6ca86ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/next.java
@@ -0,0 +1,64 @@
+/* next.java -- Some checks for the next() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.CharacterIterator;
+
+import javax.swing.text.Segment;
+
+public class next implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ s.first();
+ harness.check(s.next(), 'B');
+ harness.check(s.next(), 'C');
+ harness.check(s.next(), 'D');
+ harness.check(s.next(), 'E');
+ harness.check(s.next(), 'F');
+ harness.check(s.next(), 'G');
+ harness.check(s.next(), CharacterIterator.DONE);
+ harness.check(s.next(), CharacterIterator.DONE);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ s.first();
+ harness.check(s.next(), 'E');
+ harness.check(s.next(), 'F');
+ harness.check(s.next(), CharacterIterator.DONE);
+ harness.check(s.next(), CharacterIterator.DONE);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/previous.java b/gnu/testlet/javax/swing/text/Segment/previous.java
new file mode 100644
index 00000000..e702e364
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/previous.java
@@ -0,0 +1,64 @@
+/* previous.java -- Some checks for the previous() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.text.CharacterIterator;
+
+import javax.swing.text.Segment;
+
+public class previous implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ s.last();
+ harness.check(s.previous(), 'F');
+ harness.check(s.previous(), 'E');
+ harness.check(s.previous(), 'D');
+ harness.check(s.previous(), 'C');
+ harness.check(s.previous(), 'B');
+ harness.check(s.previous(), 'A');
+ harness.check(s.previous(), CharacterIterator.DONE);
+ harness.check(s.previous(), CharacterIterator.DONE);
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ s.last();
+ harness.check(s.previous(), 'E');
+ harness.check(s.previous(), 'D');
+ harness.check(s.previous(), CharacterIterator.DONE);
+ harness.check(s.previous(), CharacterIterator.DONE);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/setIndex.java b/gnu/testlet/javax/swing/text/Segment/setIndex.java
new file mode 100644
index 00000000..0549ac11
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/setIndex.java
@@ -0,0 +1,124 @@
+/* setIndex.java -- Some checks for the setIndex() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class setIndex implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
+ Segment s = new Segment(ch, 0, 7);
+ s.setIndex(2);
+ harness.check(s.current(), 'C');
+ s.setIndex(6);
+ harness.check(s.current(), 'G');
+
+ // try bad indices
+ boolean pass = false;
+ try
+ {
+ s.setIndex(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ s.setIndex(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+
+ // try results for a subset of the characters
+ s = new Segment(ch, 3, 3);
+ s.setIndex(4);
+ harness.check(s.current(), 'E');
+ s.setIndex(5);
+ harness.check(s.current(), 'F');
+
+ pass = false;
+ try
+ {
+ s.setIndex(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ s.setIndex(1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ s.setIndex(7);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ s.setIndex(99);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/setPartialReturn.java b/gnu/testlet/javax/swing/text/Segment/setPartialReturn.java
new file mode 100644
index 00000000..6d961746
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/setPartialReturn.java
@@ -0,0 +1,49 @@
+/* setPartialReturn.java -- Some checks for the setPartialReturn() method in the
+ Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class setPartialReturn implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C'};
+ Segment s1 = new Segment(ch, 0, 3);
+ harness.check(s1.isPartialReturn(), false);
+ s1.setPartialReturn(true);
+ harness.check(s1.isPartialReturn(), true);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/Segment/toString.java b/gnu/testlet/javax/swing/text/Segment/toString.java
new file mode 100644
index 00000000..22a498e6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Segment/toString.java
@@ -0,0 +1,52 @@
+/* toString.java -- Some checks for the toString() method in the Segment class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Segment;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.Segment;
+
+public class toString implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ char[] ch = new char[] {'A', 'B', 'C'};
+ Segment s1 = new Segment(ch, 0, 3);
+ harness.check(s1.toString(), "ABC");
+ Segment s2 = new Segment(ch, 1, 1);
+ harness.check(s2.toString(), "B");
+ Segment s3 = new Segment(ch, 2, 0);
+ harness.check(s3.toString(), "");
+ Segment s4 = new Segment(null, 0, 0);
+ harness.check(s4.toString(), "");
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Entries b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Entries
new file mode 100644
index 00000000..3c81df75
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Entries
@@ -0,0 +1,23 @@
+/EMPTY.java/1.1/Fri Jan 13 14:58:22 2006//
+/addAttribute.java/1.1/Fri Jan 13 14:58:22 2006//
+/addAttributes.java/1.1/Fri Jan 13 14:58:22 2006//
+/clone.java/1.1/Fri Jan 13 14:58:22 2006//
+/constructors.java/1.1/Fri Jan 13 14:58:22 2006//
+/containsAttribute.java/1.2/Wed Feb 1 16:46:33 2006//
+/containsAttributes.java/1.1/Fri Jan 13 14:58:22 2006//
+/containsChecksParent.java/1.1/Tue Sep 27 21:43:17 2005//
+/copyAttributes.java/1.1/Fri Jan 13 14:58:22 2006//
+/equals.java/1.1/Fri Jan 13 14:58:22 2006//
+/getAttribute.java/1.1/Fri Jan 13 14:58:22 2006//
+/getAttributeCount.java/1.1/Fri Jan 13 14:58:22 2006//
+/getAttributeNames.java/1.1/Fri Jan 13 14:58:22 2006//
+/getResolveParent.java/1.1/Fri Jan 13 14:58:22 2006//
+/isDefined.java/1.1/Fri Jan 13 14:58:22 2006//
+/isEmpty.java/1.1/Fri Jan 13 14:58:22 2006//
+/isEqual.java/1.1/Fri Jan 13 14:58:22 2006//
+/nullValue.java/1.1/Mon Apr 25 20:47:10 2005//
+/removeAttribute.java/1.1/Fri Jan 13 14:58:22 2006//
+/removeAttributes.java/1.1/Fri Jan 13 14:58:23 2006//
+/removeAttributesOnlyIfMatch.java/1.2/Tue Sep 27 20:05:58 2005//
+/setResolveParent.java/1.1/Fri Jan 13 14:58:23 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Repository b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Repository
new file mode 100644
index 00000000..05cc0f65
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/SimpleAttributeSet
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Root b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/EMPTY.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/EMPTY.java
new file mode 100644
index 00000000..47a6c014
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/EMPTY.java
@@ -0,0 +1,59 @@
+/* EMPTY.java -- Tests for the EMPTY field
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the {@link EMPTY} field in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class EMPTY implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("EMPTY");
+
+ // check that it is empty
+ harness.check(SimpleAttributeSet.EMPTY.getAttributeCount(), 0);
+ harness.check(SimpleAttributeSet.EMPTY.getResolveParent(), null);
+
+ // EMPTY should not be an instance of SimpleAttributeSet, since then
+ // you could cast it and add attributes to it...
+ harness.check(SimpleAttributeSet.EMPTY instanceof SimpleAttributeSet,
+ false);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttribute.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttribute.java
new file mode 100644
index 00000000..6d9c9bc4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttribute.java
@@ -0,0 +1,108 @@
+/* addAttribute.java -- Tests for the addAttribute() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the addAttribute() method in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class addAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("addAttribute()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // add an attribute, check that you can retrieve it
+ s.addAttribute("X1", "Y1");
+ harness.check(s.getAttribute("X1"), "Y1");
+
+ // add an attribute that already exists, same value
+ s.addAttribute("X1", "Y1");
+ harness.check(s.getAttributeCount(), 1);
+
+ // add an attribute that already exists, different value
+ s.addAttribute("X1", "YY1");
+ harness.check(s.getAttribute("X1"), "YY1");
+ harness.check(s.getAttributeCount(), 1);
+
+ // add an attribute that exists in the resolve parent, same value
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ sParent.addAttribute("X2", "Y2");
+ s.setResolveParent(sParent);
+ harness.check(s.getAttributeCount(), 2);
+
+ // this adds to s, not sParent
+ s.addAttribute("X2", "Y2");
+ harness.check(s.getAttribute("X2"), "Y2");
+ harness.check(s.getAttributeCount(), 3);
+
+ // add an attribute that exists in the resolve parent, different value
+ s.addAttribute("X2", "Z2");
+ harness.check(s.getAttribute("X2"), "Z2");
+ harness.check(s.getAttributeCount(), 3);
+ harness.check(sParent.getAttribute("X2"), "Y2");
+ harness.check(sParent.getAttributeCount(), 1);
+
+ // try null attribute key
+ boolean pass = false;
+ try
+ {
+ s.addAttribute(null, "XX");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null value
+ pass = false;
+ try
+ {
+ s.addAttribute("X2", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttributes.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttributes.java
new file mode 100644
index 00000000..2330795c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/addAttributes.java
@@ -0,0 +1,90 @@
+/* addAttributes.java -- Tests for the addAttributes() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the addAttributes() method in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class addAttributes implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("addAttributes()");
+
+ // try an empty set
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ s.addAttributes(SimpleAttributeSet.EMPTY);
+ harness.check(s.isEmpty());
+
+ // try a set with no resolve parent and a couple of attributes
+ SimpleAttributeSet atts1 = new SimpleAttributeSet();
+ atts1.addAttribute("A1", "B1");
+ atts1.addAttribute("A2", "B2");
+ s.addAttributes(atts1);
+ harness.check(s.getAttributeCount(), 2);
+ harness.check(s.containsAttribute("A1", "B1"));
+ harness.check(s.containsAttribute("A2", "B2"));
+
+ // try a set with a resolve parent
+ SimpleAttributeSet atts2 = new SimpleAttributeSet();
+ atts2.addAttribute("C1", "D1");
+ atts1.addAttribute("A1", "BB1");
+ atts1.addAttribute("A2", "BB2");
+ atts1.setResolveParent(atts2);
+ s.addAttributes(atts1);
+ harness.check(s.getResolveParent(), atts2);
+ harness.check(s.getAttributeCount(), 3);
+ harness.check(s.containsAttribute("A1", "BB1"));
+ harness.check(s.containsAttribute("A2", "BB2"));
+ harness.check(s.containsAttribute("C1", "D1"));
+
+ // try a null set
+ boolean pass = false;
+ try
+ {
+ s.addAttributes(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/clone.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/clone.java
new file mode 100644
index 00000000..02e87582
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/clone.java
@@ -0,0 +1,74 @@
+/* clone.java -- Tests for the clone() method in the SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the clone() method in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class clone implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("clone()");
+
+ // clone an empty set
+ SimpleAttributeSet s1 = new SimpleAttributeSet();
+ SimpleAttributeSet s2 = (SimpleAttributeSet) s1.clone();
+ harness.check(s1.equals(s2));
+ s1.addAttribute("X1", "Y1");
+ harness.check(!s1.equals(s2));
+
+ // clone a set with no resolve parent
+ s2 = (SimpleAttributeSet) s1.clone();
+ harness.check(s1.equals(s2));
+ s1.addAttribute("X2", "Y2");
+ harness.check(!s1.equals(s2));
+
+ // clone a set with a resolve parent
+ SimpleAttributeSet s3 = new SimpleAttributeSet();
+ s3.addAttribute("A1", "B1");
+ s1.setResolveParent(s3);
+ s2 = (SimpleAttributeSet) s1.clone();
+ harness.check(s1.equals(s2));
+ s3.addAttribute("A1", "BB");
+ harness.check(s1.equals(s2));
+ s1.addAttribute("Y1", "-");
+ harness.check(!s1.equals(s2));
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/constructors.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/constructors.java
new file mode 100644
index 00000000..9b1ea776
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/constructors.java
@@ -0,0 +1,99 @@
+/* constructors.java -- Tests for the constructors
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the constructors in the {@link SimpleAttributeSet} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("SimpleAttributeSet()");
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.isEmpty(), true);
+ harness.check(s.getResolveParent(), null);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("SimpleAttributeSet(AttributeSet)");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ SimpleAttributeSet s1 = new SimpleAttributeSet(s);
+ harness.check(s1.isEmpty(), true);
+ harness.check(s1.getResolveParent(), null);
+
+ // adding to original set doesn't update new set
+ s.addAttribute("X1", "Y1");
+ harness.check(s1.isEmpty());
+ harness.check(s1.getResolveParent(), null);
+
+ SimpleAttributeSet s2 = new SimpleAttributeSet(s);
+ harness.check(s2.isEmpty(), false);
+ harness.check(s2.getResolveParent(), null);
+ harness.check(s2.getAttribute("X1"), "Y1");
+
+ SimpleAttributeSet ss = new SimpleAttributeSet();
+ ss.setResolveParent(s);
+ ss.addAttribute("X2", "Y2");
+
+ SimpleAttributeSet s3 = new SimpleAttributeSet(ss);
+ harness.check(s3.isEmpty(), false);
+ harness.check(s3.getResolveParent(), s);
+ harness.check(s3.getAttribute("X1"), "Y1");
+ harness.check(s3.getAttribute("X2"), "Y2");
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ /*SimpleAttributeSet ss =*/ new SimpleAttributeSet(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java
new file mode 100644
index 00000000..59cba47d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttribute.java
@@ -0,0 +1,104 @@
+/* containsAttribute.java -- Tests for the containsAttribute() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the containsAttribute() method in the
+ * {@link SimpleAttributeSet} class.
+ */
+public class containsAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("containsAttribute()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.containsAttribute("X1", "Y1"), false);
+ s.addAttribute("X1", "Y1");
+ harness.check(s.containsAttribute("X1", "Y1"), true);
+ harness.check(s.containsAttribute("X1", "Y2"), false);
+ harness.check(s.containsAttribute("X2", "Y1"), false);
+
+ // check with resolve parent
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ sParent.addAttribute("X2", "Y2");
+ s.setResolveParent(sParent);
+ harness.check(s.containsAttribute("X1", "Y1"), true);
+ harness.check(s.containsAttribute("X2", "Y2"), true);
+ s.addAttribute("X2", "ZZ");
+ harness.check(s.containsAttribute("X2", "ZZ"), true);
+ harness.check(s.containsAttribute("X2", "Y2"), false);
+
+ // try null attribute key
+ boolean pass = false;
+ try
+ {
+ s.containsAttribute(null, "XX");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null value for existing key
+ pass = false;
+ try
+ {
+ s.containsAttribute("X2", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null value for non-existent key
+ pass = false;
+ try
+ {
+ s.containsAttribute("XXX", null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttributes.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttributes.java
new file mode 100644
index 00000000..2b986707
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsAttributes.java
@@ -0,0 +1,106 @@
+/* containsAttributes.java -- Tests for the containsAttributes() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the containsAttributes() method in the
+ * {@link SimpleAttributeSet} class.
+ */
+public class containsAttributes implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("containsAttributes()");
+
+ // start with an empty set
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ SimpleAttributeSet atts = new SimpleAttributeSet();
+ harness.check(s.containsAttributes(atts), true);
+
+ atts.addAttribute("E", "5");
+ harness.check(s.containsAttributes(atts), false);
+
+ // now populate the set and run some more tests
+ s.addAttribute("A", "1");
+ s.addAttribute("B", "2");
+ s.addAttribute("C", "3");
+ s.addAttribute("D", "4");
+ s.addAttribute("E", "5");
+ s.addAttribute("F", "6");
+
+ harness.check(s.containsAttributes(atts), true);
+ atts.addAttribute("E", "XXX");
+ harness.check(s.containsAttributes(atts), false);
+ atts.removeAttribute("E"); // atts is now empty
+ harness.check(s.containsAttributes(atts), true);
+
+ atts.addAttribute("A", "1");
+ atts.addAttribute("D", "4");
+ atts.addAttribute("E", "5");
+ harness.check(s.containsAttributes(atts), true);
+ atts.addAttribute("D", "XXX");
+ harness.check(s.containsAttributes(atts), false);
+
+ // now do some checks on the resolving parent
+ s = new SimpleAttributeSet();
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+
+ atts = new SimpleAttributeSet();
+ harness.check(s.containsAttributes(atts), true);
+ atts.setResolveParent(sParent);
+ harness.check(s.containsAttributes(atts), true);
+
+ sParent.addAttribute("X", "1");
+ atts.addAttribute("X", "1");
+ harness.check(s.containsAttributes(atts));
+
+ // try null attributes
+ boolean pass = false;
+ try
+ {
+ s.containsAttributes(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsChecksParent.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsChecksParent.java
new file mode 100644
index 00000000..94e04f08
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/containsChecksParent.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Checks if SimpleAttributeSet's containsAttribute method
+ * checks its resolve parent's map if the attribute is not
+ * found locally.
+ */
+public class containsChecksParent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet set1 = new SimpleAttributeSet();
+ SimpleAttributeSet set2 = new SimpleAttributeSet();
+
+ set1.addAttribute("hello", "hello");
+ set2.setResolveParent(set1);
+
+ harness.check(set2.containsAttribute("hello", "hello"));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/copyAttributes.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/copyAttributes.java
new file mode 100644
index 00000000..a605cfad
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/copyAttributes.java
@@ -0,0 +1,75 @@
+/* copyAttributes.java -- Tests for the copyAttributes() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the copyAttributes() method in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class copyAttributes implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("copyAttributes()");
+
+ // copy an empty set
+ SimpleAttributeSet s1 = new SimpleAttributeSet();
+ SimpleAttributeSet s2 = (SimpleAttributeSet) s1.copyAttributes();
+ harness.check(s1.equals(s2));
+ s1.addAttribute("X1", "Y1");
+ harness.check(!s1.equals(s2));
+
+ // copy a set with no resolve parent
+ s2 = (SimpleAttributeSet) s1.copyAttributes();
+ harness.check(s1.equals(s2));
+ s1.addAttribute("X2", "Y2");
+ harness.check(!s1.equals(s2));
+
+ // copy a set with a resolve parent
+ SimpleAttributeSet s3 = new SimpleAttributeSet();
+ s3.addAttribute("A1", "B1");
+ s1.setResolveParent(s3);
+ s2 = (SimpleAttributeSet) s1.copyAttributes();
+ harness.check(s1.equals(s2));
+ s3.addAttribute("A1", "BB");
+ harness.check(s1.equals(s2));
+ s1.addAttribute("Y1", "-");
+ harness.check(!s1.equals(s2));
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/equals.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/equals.java
new file mode 100644
index 00000000..5d0d5309
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/equals.java
@@ -0,0 +1,55 @@
+/* equals.java -- some checks for the equals() method in the SimpleAttributeSet
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the equals() field in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("equals()");
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.equals(SimpleAttributeSet.EMPTY), true);
+ harness.check(SimpleAttributeSet.EMPTY.equals(s), true);
+ harness.check(s.equals(null), false);
+ harness.check(s.equals("XYZ"), false);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttribute.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttribute.java
new file mode 100644
index 00000000..4deef0a1
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttribute.java
@@ -0,0 +1,72 @@
+/* getAttribute.java -- Some checks for the getAttribute() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+public class getAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAttribute()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.getAttribute("X1"), null);
+ s.addAttribute("X1", "Y1");
+ harness.check(s.getAttribute("X1"), "Y1");
+
+ // add an attribute that exists in the resolve parent, same value
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ sParent.addAttribute("X2", "Y2");
+ s.setResolveParent(sParent);
+ harness.check(s.getAttribute("X2"), "Y2");
+
+ // this adds to s, not sParent
+ s.addAttribute("X2", "YY2");
+ harness.check(s.getAttribute("X2"), "YY2");
+
+ // try null attribute key
+ boolean pass = false;
+ try
+ {
+ s.getAttribute(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeCount.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeCount.java
new file mode 100644
index 00000000..33dee32a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeCount.java
@@ -0,0 +1,63 @@
+/* getAttributeCount.java -- Some checks for the getAttributeCount() method in
+ the SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+public class getAttributeCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAttributeCount()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.getAttributeCount(), 0);
+
+ s.addAttribute("X1", "Y1");
+ harness.check(s.getAttributeCount(), 1);
+
+ // add an attribute that exists in the resolve parent, same value
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+ harness.check(s.getAttributeCount(), 2);
+
+ sParent.addAttribute("X2", "Y2");
+ harness.check(s.getAttributeCount(), 2);
+ sParent.addAttribute("X3", "Y3");
+ harness.check(s.getAttributeCount(), 2);
+
+ s.addAttribute("X2", "YY2");
+ harness.check(s.getAttributeCount(), 3);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeNames.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeNames.java
new file mode 100644
index 00000000..2b3b37b5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getAttributeNames.java
@@ -0,0 +1,66 @@
+/* getAttributeNames.java -- Some checks for the getAttributeNames() method in
+ the SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+
+public class getAttributeNames implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAttributeNames()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ Enumeration e = s.getAttributeNames();
+ harness.check(e.hasMoreElements(), false);
+
+ s.addAttribute("X1", "Y1");
+ e = s.getAttributeNames();
+ harness.check(e.hasMoreElements(), true);
+ harness.check(e.nextElement(), "X1");
+ harness.check(e.hasMoreElements(), false);
+
+ // add an attribute that exists in the resolve parent, same value
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+ s.removeAttribute("X1");
+ e = s.getAttributeNames();
+ harness.check(e.hasMoreElements(), true);
+ harness.check(e.nextElement(), AttributeSet.ResolveAttribute);
+ harness.check(e.hasMoreElements(), false);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/getResolveParent.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getResolveParent.java
new file mode 100644
index 00000000..7ef22ad7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/getResolveParent.java
@@ -0,0 +1,56 @@
+/* getResolveParent.java -- Some checks for the getResolveParent() method in
+ the SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+
+public class getResolveParent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getResolveParent()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.getResolveParent(), null);
+
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+ harness.check(s.getResolveParent(), sParent);
+
+ s.removeAttribute(AttributeSet.ResolveAttribute);
+ harness.check(s.getResolveParent(), null);
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/isDefined.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isDefined.java
new file mode 100644
index 00000000..15145225
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isDefined.java
@@ -0,0 +1,71 @@
+/* isDefined.java -- Some checks for the isDefined() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+
+public class isDefined implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("isDefined()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.isDefined("X1"), false);
+ s.addAttribute("X1", "Y1");
+ harness.check(s.isDefined("X1"), true);
+ s.removeAttribute("X1");
+ harness.check(s.isDefined("X1"), false);
+
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ sParent.addAttribute("X2", "Y2");
+ s.setResolveParent(sParent);
+ harness.check(s.isDefined("X2"), false);
+ harness.check(s.isDefined(AttributeSet.ResolveAttribute), true);
+
+ // try null attribute key
+ boolean pass = false;
+ try
+ {
+ s.isDefined(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEmpty.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEmpty.java
new file mode 100644
index 00000000..976163eb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEmpty.java
@@ -0,0 +1,61 @@
+/* isEmpty.java -- Some checks for the isEmpty() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+public class isEmpty implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getAttributeCount()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.isEmpty(), true);
+
+ s.addAttribute("X1", "Y1");
+ harness.check(s.isEmpty(), false);
+
+ s.removeAttribute("X1");
+ harness.check(s.isEmpty(), true);
+
+ // add an attribute that exists in the resolve parent, same value
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+ harness.check(s.isEmpty(), false);
+
+ sParent.addAttribute("X2", "Y2");
+ harness.check(s.isEmpty(), false);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEqual.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEqual.java
new file mode 100644
index 00000000..c7bc705d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/isEqual.java
@@ -0,0 +1,69 @@
+/* isEqual.java -- some checks for the isEqual() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the isEqual() field in the {@link SimpleAttributeSet}
+ * class.
+ */
+public class isEqual implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("isEqual()");
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.isEqual(SimpleAttributeSet.EMPTY), true);
+ harness.check(SimpleAttributeSet.EMPTY.isEqual(s), true);
+
+ SimpleAttributeSet s2 = new SimpleAttributeSet();
+ s2.addAttribute("XX", "YY");
+
+ harness.check(s.isEqual(s2), false);
+
+ boolean pass = false;
+ try
+ {
+ s.isEqual(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/nullValue.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/nullValue.java
new file mode 100644
index 00000000..735af4c1
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/nullValue.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Checks if SimpleAttributeSet handles nullvalues correctly.
+ */
+public class nullValue implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("SimpleAttributeSet");
+ SimpleAttributeSet sas = new SimpleAttributeSet();
+ try
+ {
+ sas.addAttribute("key", null);
+ h.fail("SimpleAttributeSet must not accept null value");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttribute.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttribute.java
new file mode 100644
index 00000000..bc2598eb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttribute.java
@@ -0,0 +1,81 @@
+/* removeAttribute.java -- Tests for the removeAttribute() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the removeAttribute() method in the
+ * {@link SimpleAttributeSet} class.
+ */
+public class removeAttribute implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("removeAttribute()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ // remove an attribute that doesn't exist
+ s.removeAttribute("X1");
+ s.addAttribute("X1", "Y1");
+ harness.check(s.getAttribute("X1"), "Y1");
+ // remove another attribute that doesn't exist
+ s.removeAttribute("X2");
+ harness.check(s.getAttributeCount(), 1);
+ // remove an existing attribute
+ s.removeAttribute("X1");
+ harness.check(s.getAttribute("X1"), null);
+
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ sParent.addAttribute("XX", "YY");
+ s.setResolveParent(sParent);
+ harness.check(sParent.getAttributeCount(), 1);
+ s.removeAttribute("XX");
+ harness.check(sParent.getAttribute("XX"), "YY");
+
+ // try null attribute key
+ boolean pass = false;
+ try
+ {
+ s.removeAttribute(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributes.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributes.java
new file mode 100644
index 00000000..65f9ab34
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributes.java
@@ -0,0 +1,160 @@
+/* removeAttributes.java -- Tests for the removeAttributes() method in the
+ SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Some checks for the removeAttributes() method in the
+ * {@link SimpleAttributeSet} class.
+ */
+public class removeAttributes implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(AttributeSet)");
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ s.addAttribute("A", "1");
+ s.addAttribute("B", "2");
+ s.addAttribute("C", "3");
+ s.addAttribute("D", "4");
+ s.addAttribute("E", "5");
+ s.addAttribute("F", "6");
+ harness.check(s.getAttributeCount(), 6);
+
+ SimpleAttributeSet ss = new SimpleAttributeSet();
+ ss.addAttribute("A", "1");
+ ss.addAttribute("C", "3");
+ ss.addAttribute("E", "5");
+
+ s.removeAttributes(ss);
+ harness.check(s.getAttributeCount(), 3);
+ harness.check(s.getAttribute("B"), "2");
+ harness.check(s.getAttribute("D"), "4");
+ harness.check(s.getAttribute("F"), "6");
+
+ SimpleAttributeSet sss = new SimpleAttributeSet();
+ ss.addAttribute("B", "XXX");
+ s.removeAttributes(sss);
+ harness.check(s.getAttributeCount(), 3);
+ harness.check(s.getAttribute("B"), "2");
+ harness.check(s.getAttribute("D"), "4");
+ harness.check(s.getAttribute("F"), "6");
+
+ // check for remove of the resolve parent
+ SimpleAttributeSet s2 = new SimpleAttributeSet();
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s2.setResolveParent(sParent);
+ harness.check(s2.getResolveParent(), sParent);
+ SimpleAttributeSet s3 = new SimpleAttributeSet();
+ s3.setResolveParent(sParent);
+ s2.removeAttributes(s3);
+ harness.check(s2.getResolveParent(), null);
+
+ // try null
+ boolean pass = false;
+ try
+ {
+ s.removeAttributes((AttributeSet) null);
+ }
+ catch (NullPointerException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(Enumeration)");
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ s.addAttribute("A", "1");
+ s.addAttribute("B", "2");
+ s.addAttribute("C", "3");
+ s.addAttribute("D", "4");
+ s.addAttribute("E", "5");
+ s.addAttribute("F", "6");
+ harness.check(s.getAttributeCount(), 6);
+
+ Vector v = new Vector();
+ v.add("B");
+ v.add("D");
+ v.add("F");
+ Enumeration e = v.elements();
+ s.removeAttributes(e);
+ harness.check(s.getAttributeCount(), 3);
+ harness.check(s.getAttribute("A"), "1");
+ harness.check(s.getAttribute("C"), "3");
+ harness.check(s.getAttribute("E"), "5");
+
+ // try an enumeration with null in it
+ boolean pass = false;
+ try
+ {
+ v.clear();
+ v.add(null);
+ e = v.elements();
+ s.removeAttributes(e);
+ }
+ catch (NullPointerException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a null enumeration
+ pass = false;
+ try
+ {
+ s.removeAttributes((Enumeration) null);
+ }
+ catch (NullPointerException ex)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch.java
new file mode 100644
index 00000000..6efdfa56
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/removeAttributesOnlyIfMatch.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.SimpleAttributeSet;
+
+/**
+ * Checks if SimpleAttributeSet's removeAttributes(AttributeSet) method
+ * properly ignores attributes whose keys and values don't match with
+ * the given set.
+ */
+public class removeAttributesOnlyIfMatch implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet set1 = new SimpleAttributeSet();
+ SimpleAttributeSet set2 = new SimpleAttributeSet();
+
+ set1.addAttribute("hello", "hello");
+ set2.addAttribute("hello", "goodbye");
+
+ //attempt to remove a set that doesn't match
+ set1.removeAttributes(set2);
+
+ harness.check(set1.containsAttribute("hello", "hello"));
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/SimpleAttributeSet/setResolveParent.java b/gnu/testlet/javax/swing/text/SimpleAttributeSet/setResolveParent.java
new file mode 100644
index 00000000..17753165
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/SimpleAttributeSet/setResolveParent.java
@@ -0,0 +1,62 @@
+/* setResolveParent.java -- Some checks for the setResolveParent() method in
+ the SimpleAttributeSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.SimpleAttributeSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+
+public class setResolveParent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("setResolveParent()");
+
+ SimpleAttributeSet s = new SimpleAttributeSet();
+ harness.check(s.getResolveParent(), null);
+
+ SimpleAttributeSet sParent = new SimpleAttributeSet();
+ s.setResolveParent(sParent);
+ harness.check(s.getResolveParent(), sParent);
+
+ boolean pass = false;
+ try
+ {
+ s.setResolveParent(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java b/gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java
new file mode 100644
index 00000000..8060ab0b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/BadLocationExceptionTest.java
@@ -0,0 +1,92 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Arnaud Vandyck <avdyk@gnu.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class BadLocationExceptionTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("BadLocationTest");
+ java.util.Locale.setDefault(java.util.Locale.US);
+ StringContent sc = new StringContent();
+ try
+ {
+ sc.insertString(-1, "path");
+ h.fail("badlocation");
+ }
+ catch (BadLocationException ble)
+ {
+ h.check("Invalid location", ble.getMessage(), "BadLocation message should be 'Invalid location' and is: " + ble.getMessage());
+ h.check(1, ble.offsetRequested(), "OffsetRequested() should be 1 and is: " + ble.offsetRequested());
+ }
+ try
+ {
+ sc.insertString(1, "path");
+ h.fail("badlocation");
+ }
+ catch (BadLocationException ble)
+ {
+ h.check("Invalid location", ble.getMessage(), "BadLocation message should be 'Invalid location' and is: " + ble.getMessage());
+ h.check(1, ble.offsetRequested(), "OffsetRequested() should be 1 and is: " + ble.offsetRequested());
+ }
+ try
+ {
+ sc.insertString(4, "path");
+ h.fail("badlocation");
+ }
+ catch (BadLocationException ble)
+ {
+ h.check("Invalid location", ble.getMessage(), "BadLocation message should be 'Invalid location' and is: " + ble.getMessage());
+ h.check(1, ble.offsetRequested(), "OffsetRequested() should be 1 and is: " + ble.offsetRequested());
+ }
+ try
+ {
+ sc.insertString(0, "path");
+ sc.getString(1, sc.length());
+ h.fail("badlocation");
+ }
+ catch (BadLocationException ble)
+ {
+ h.check("Invalid range", ble.getMessage(), "BadLocation message should be 'Invalid range' and is: " + ble.getMessage());
+ h.check(5, ble.offsetRequested(), "OffsetRequested() should be 5 and is: " + ble.offsetRequested());
+ }
+ try
+ {
+ sc.insertString(0, "path");
+ sc.getString(0, sc.length()+1);
+ h.fail("badlocation");
+ }
+ catch (BadLocationException ble)
+ {
+ h.check("Invalid range", ble.getMessage(), "BadLocation message should be 'Invalid range' and is: " + ble.getMessage());
+ h.check(9, ble.offsetRequested(), "OffsetRequested() should be 9 and is: " + ble.offsetRequested());
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/StringContent/CVS/Entries b/gnu/testlet/javax/swing/text/StringContent/CVS/Entries
new file mode 100644
index 00000000..abe745fa
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/CVS/Entries
@@ -0,0 +1,13 @@
+/BadLocationExceptionTest.java/1.3/Tue Jan 24 13:44:46 2006//
+/StringContentTest.java/1.6/Tue Jan 24 13:44:46 2006//
+/constructors.java/1.1/Tue Jan 24 13:44:46 2006//
+/createPosition.java/1.1/Tue Jan 24 13:44:46 2006//
+/getChars.java/1.1/Tue Jan 24 13:44:46 2006//
+/getString.java/1.1/Tue Jan 24 13:44:46 2006//
+/insertString.java/1.1/Tue Jan 24 13:44:46 2006//
+/insertUndo.java/1.4/Tue Jan 24 13:44:46 2006//
+/length.java/1.1/Tue Jan 24 13:44:46 2006//
+/remove.java/1.2/Wed Feb 1 16:51:40 2006//
+/removeUndo.java/1.4/Tue Jan 24 13:44:46 2006//
+/stickyPosition.java/1.5/Tue Jan 24 13:44:46 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/StringContent/CVS/Repository b/gnu/testlet/javax/swing/text/StringContent/CVS/Repository
new file mode 100644
index 00000000..d6a64cbd
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/StringContent
diff --git a/gnu/testlet/javax/swing/text/StringContent/CVS/Root b/gnu/testlet/javax/swing/text/StringContent/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/StringContent/StringContentTest.java b/gnu/testlet/javax/swing/text/StringContent/StringContentTest.java
new file mode 100644
index 00000000..6c9eb6bb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/StringContentTest.java
@@ -0,0 +1,97 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Arnaud Vandyck <avdyk@gnu.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Segment;
+import javax.swing.text.StringContent;
+
+public class StringContentTest implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StringContent");
+
+ StringContent sc = new StringContent();
+ try
+ {
+ h.checkPoint("StringContent -- insertString()");
+ sc.insertString(0, "path");
+ h.check("path\n", sc.getString(0, sc.length()),
+ "StringContent.insertString(): insert 'path' at 0 getString() is: " + sc.getString(0, sc.length()));
+ h.checkPoint("StringContent -- length()");
+ h.check(5, sc.length(),
+ "StringContent.length(): should be 5, is: " + sc.length());
+ h.checkPoint("StringContent -- insertString() part2");
+ sc.insertString(0, "class");
+ h.checkPoint("StringContent -- getString()");
+ h.check("classpath\n", sc.getString(0, sc.length()),
+ "StringContent.insertString(): put 'class' at 0 should be 'classpath' and is: " + sc.getString(0, sc.length()));
+ h.checkPoint("StringContent -- length() part2");
+ h.check(10, sc.length(),
+ "StringContent.length(): should be 10, is: " + sc.length());
+ h.checkPoint("StringContent -- remove()");
+ sc.remove(1, 4);
+ h.checkPoint("StringContent -- getString() part2");
+ h.check("cpath\n", sc.getString(0, sc.length()),
+ "StringContent.remove(): should be 'cpath' is '"
+ + sc.getString(0, sc.length()) + "'");
+ h.checkPoint("StringContent -- remove() part2");
+ sc.remove(2, 3);
+ h.checkPoint("StringContent -- getString() part3");
+ h.check("cp\n", sc.getString(0, sc.length()),
+ "StringContent.remove(): should be 'cp' is '"
+ + sc.getString(0, sc.length()) + "'");
+ h.checkPoint("StringContent -- getChars()");
+ char[] ctab = { 'c', 'p' , '\n'};
+ Segment s = new Segment(ctab, 0, 3);
+ Segment s2 = new Segment();
+ sc.getChars(0, sc.length(), s2);
+ h.check(s.toString(), s2.toString(),
+ "StringContent.getChars(): "
+ + "compare to javax.swing.text.Segment "
+ + "(first Segment: " + s + "; second Segment: " + s2 + ")");
+ h.checkPoint("StringContent -- StringContent()");
+ sc = new StringContent(100);
+ h.check("\n", sc.getString(0, sc.length()), "StringContent(100): getString(0, lenght) should be '\\n'");
+ h.check(1, sc.length(), "StringContent(100): length() should be 1 and is : " + sc.length());
+ h.checkPoint("StringContent -- StringContent() part2");
+ sc = new StringContent(1);
+ h.check(1, sc.length(), "StringContent(1): length() should be 1 and is : " + sc.length());
+ h.checkPoint("StringContent -- StringContent() part3");
+ sc = new StringContent(0);
+ h.check(1, sc.length(), "StringContent(0): length() should be 1 and is : " + sc.length());
+ h.checkPoint("StringContent -- StringContent() part4");
+ sc = new StringContent();
+ h.check(1, sc.length(), "StringContent(): length() should be 1 and is : " + sc.length());
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/StringContent/constructors.java b/gnu/testlet/javax/swing/text/StringContent/constructors.java
new file mode 100644
index 00000000..0626079f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/constructors.java
@@ -0,0 +1,82 @@
+/* constructors.java -- Some checks for the constructors in the StringContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ StringContent sc = new StringContent();
+ harness.check(sc.length(), 1);
+
+ boolean pass = false;
+ try
+ {
+ pass = sc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ harness.check(pass);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ StringContent sc = new StringContent(10);
+ harness.check(sc.length(), 1);
+ boolean pass = false;
+ try
+ {
+ pass = sc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/createPosition.java b/gnu/testlet/javax/swing/text/StringContent/createPosition.java
new file mode 100644
index 00000000..2be7000e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/createPosition.java
@@ -0,0 +1,103 @@
+/* createPosition.java -- Some checks for the createPosition() method in the
+ StringContent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Position;
+import javax.swing.text.StringContent;
+
+public class createPosition implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+ harness.check(sc.length(), 1);
+ try
+ {
+ sc.insertString(0, "ABC");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+
+ // negative index
+ boolean pass = false;
+ try
+ {
+ sc.createPosition(-1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // index of last char
+ Position p = null;
+ try
+ {
+ p = sc.createPosition(3);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(p.getOffset(), 3);
+
+ // index of last char + 1
+ try
+ {
+ p = sc.createPosition(4);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(p.getOffset(), 4);
+
+ // index of last char + 2
+ pass = false;
+ try
+ {
+ p = sc.createPosition(5);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/getChars.java b/gnu/testlet/javax/swing/text/StringContent/getChars.java
new file mode 100644
index 00000000..6713677c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/getChars.java
@@ -0,0 +1,167 @@
+/* getChars.java -- Some checks for the getChars() method in the StringContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Segment;
+import javax.swing.text.StringContent;
+
+public class getChars implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+ char[] ch = new char[] { 'A', 'B', 'C' };
+ Segment seg = new Segment(ch, 0, 3);
+
+ // check default result
+ try
+ {
+ sc.getChars(0, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - tests below will fail if this happens
+ }
+ harness.check(seg.offset, 0);
+ harness.check(seg.count, 1);
+ harness.check(seg.array != ch);
+ harness.check(seg.array[0], '\n');
+
+ // if len goes past end of range, should get BadLocationException
+ boolean pass = false;
+ try
+ {
+ sc.getChars(0, 2, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add some more text
+ try
+ {
+ sc.insertString(0, "ABCDEFG");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(sc.length(), 8);
+
+ // if index < 0 should get BadLocationException
+ pass = false;
+ try
+ {
+ sc.getChars(-1, 3, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ sc.getChars(99, 1, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ sc.getChars(0, 99, seg);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ try
+ {
+ sc.getChars(1, 0, seg);
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(seg.offset, 1);
+ harness.check(seg.count, 0);
+
+ // what happens for null Segment
+ pass = false;
+ try
+ {
+ sc.getChars(0, 1, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(pass);
+
+ // what happens if we update the Segment array, does that change the
+ // StringContent
+ Segment seg2 = new Segment();
+ Segment seg3 = new Segment();
+ StringContent sc2 = new StringContent();
+ try
+ {
+ sc2.insertString(0, "XYZ");
+ sc2.getChars(0, 3, seg2);
+ seg2.array[1] = '5';
+ sc2.getChars(0, 3, seg3);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(seg2.array[1], '5');
+ harness.check(seg3.array[1], '5');
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/getString.java b/gnu/testlet/javax/swing/text/StringContent/getString.java
new file mode 100644
index 00000000..4df9537d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/getString.java
@@ -0,0 +1,132 @@
+/* getString.java -- Some checks for the getString() method in the StringContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class getString implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+
+ // check default result
+ boolean pass = false;
+ try
+ {
+ pass = sc.getString(0, 1).equals("\n");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ sc.getString(0, 2);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // add some more text
+ try
+ {
+ sc.insertString(0, "ABCDEFG");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(sc.length(), 8);
+
+ // if index < 0 should get BadLocationException
+ pass = false;
+ try
+ {
+ /*String s =*/ sc.getString(-1, 3);
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ pass = false; // JDK does this, API docs say it should be a
+ // BadLocationException
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if index > end of text should get BadLocationException
+ pass = false;
+ try
+ {
+ /*String s =*/ sc.getString(99, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // if len goes past end of range, should get BadLocationException
+ pass = false;
+ try
+ {
+ /* String s =*/ sc.getString(0, 99);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try a zero length string
+ pass = false;
+ try
+ {
+ pass = sc.getString(1, 0).equals("");
+ }
+ catch (BadLocationException e)
+ {
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/insertString.java b/gnu/testlet/javax/swing/text/StringContent/insertString.java
new file mode 100644
index 00000000..a2807dc7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/insertString.java
@@ -0,0 +1,120 @@
+/* insertString.java -- Some checks for the insertString() method in the
+ StringContent class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class insertString implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+ // regular insert
+ try
+ {
+ sc.insertString(0, "ABC");
+ // ignoring undo/redo here - see insertUndo.java
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks below will fail if this happens
+ }
+ harness.check(sc.length(), 4);
+
+ // insert at location before start
+ boolean pass = false;
+ try
+ {
+ sc.insertString(-1, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // insert at index of last character - this is OK
+ try
+ {
+ sc.insertString(3, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(sc.length(), 7);
+
+ // insert at index of last character + 1 - this raises BadLocationException
+ pass = false;
+ try
+ {
+ sc.insertString(7, "XYZ");
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // insert empty string
+ try
+ {
+ sc.insertString(0, "");
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ harness.check(sc.length(), 7);
+
+ // insert null string
+ pass = false;
+ try
+ {
+ sc.insertString(0, null);
+ }
+ catch (BadLocationException e)
+ {
+ // ignore
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/insertUndo.java b/gnu/testlet/javax/swing/text/StringContent/insertUndo.java
new file mode 100644
index 00000000..e5bc9346
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/insertUndo.java
@@ -0,0 +1,122 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Arnaud Vandyck <avdyk@gnu.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.UndoableEdit;
+
+public class insertUndo implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StringContent -- InsertUndo");
+
+ StringContent sc = new StringContent();
+ UndoableEdit ue = null;
+ UndoableEdit ue2 = null;
+ UndoableEdit ue3 = null;
+ try
+ {
+ h.checkPoint("StringContent -- insertString()");
+ ue = sc.insertString(0, "path");
+ h.check("path\n", sc.getString(0, sc.length()),
+ "StringContent.insertString(): insert 'path' at 0");
+ java.util.Locale.setDefault(java.util.Locale.US);
+ String presentationName = ue.getPresentationName();
+ h.check("", presentationName, "PresentationName should be '' and is: " + presentationName);
+ String redoPresentationName = ue.getRedoPresentationName();
+ h.check("Redo", redoPresentationName, "RedoPresentationName should be Redo and is: " + redoPresentationName);
+ String undoPresentationName = ue.getUndoPresentationName();
+ h.check("Undo", undoPresentationName, "UndoPresentationName should be Undo and is: " + undoPresentationName);
+ h.check(false, ue.canRedo(), "canRedo? () (" + ue.canRedo() + ")");
+ h.check(true, ue.canUndo(), "canUndo? () (" + ue.canUndo() + ")");
+ ue.undo();
+ h.check("\n", sc.getString(0, sc.length()),
+ "Undo: should be '\\n' and is: " + sc.getString(0, sc.length()));
+ h.check(true, ue.canRedo(), "canRedo? () (" + ue.canRedo() + ")");
+ h.check(false, ue.canUndo(), "canUndo? () (" + ue.canUndo() + ")");
+ ue.redo();
+ h.check("path\n", sc.getString(0, sc.length()),
+ "Redo: should be '\\n' and is: " + sc.getString(0, sc.length()));
+ ue.die();
+ h.debug("UndoableEdit.die() no more undo/redo");
+ h.check(false, ue.canUndo(), "die, no more undo");
+ h.check(false, ue.canRedo(), "die, no more redo");
+ sc = new StringContent();
+ ue = sc.insertString(0, "path");
+ ue2 = sc.insertString(0, "class");
+ h.check("classpath\n", sc.getString(0, sc.length()), "should be classpath and is: " + sc.getString(0, sc.length()));
+ h.check(true, ue.canUndo(), "double undo can undo?");
+ ue.undo();
+ h.check("spath\n", sc.getString(0, sc.length()), "double undo: should be 'spath\\n' and is: " + sc.getString(0, sc.length()));
+ ue2.undo();
+ h.check("\n", sc.getString(0, sc.length()), "double undo: should be '\\n' and is: " + sc.getString(0, sc.length()));
+ ue.redo();
+ h.check("clas\n", sc.getString(0, sc.length()), "double undo: should be 'clas\\n' and is: " + sc.getString(0, sc.length()));
+ ue2.redo();
+ h.check("spathclas\n", sc.getString(0, sc.length()), "double undo: should be 'spathclas\\n' and is: " + sc.getString(0, sc.length()));
+ ue3 = sc.insertString(9, "X");
+ h.check("spathclasX\n", sc.getString(0, sc.length()), "add an X: should be 'spathclasX\\n' and is: " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.check("hclasX\n", sc.getString(0, sc.length()), "undo first position: should be 'hclasX\\n' and is: " + sc.getString(0, sc.length()));
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ try{
+ ue3.undo();
+ h.fail("should not be able to undo!");
+ }
+ catch (CannotUndoException cannot)
+ {
+ h.checkPoint("cannot undo");
+ }
+ try
+ {
+ sc = new StringContent();
+ ue = sc.insertString(0, "class");
+ ue2 = sc.insertString(0, "super ");
+ ue3 = sc.insertString(11, "path");
+ h.check("super classpath\n", sc.getString(0, sc.length()), "insert 'super classpath': " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.check(" classpath\n", sc.getString(0, sc.length()), "undo ' classpath': " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.fail("should not be able to undo two times");
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ catch (CannotUndoException cannot)
+ {
+ h.checkPoint("cannot undo several times");
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/StringContent/length.java b/gnu/testlet/javax/swing/text/StringContent/length.java
new file mode 100644
index 00000000..1f330c33
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/length.java
@@ -0,0 +1,62 @@
+/* length.java -- Some checks for the length() method in the StringContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class length implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+ harness.check(sc.length(), 1);
+ try
+ {
+ sc.insertString(0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ harness.check(sc.length(), 27);
+ sc.remove(0, 3);
+ harness.check(sc.length(), 24);
+ sc.insertString(4, "123");
+ harness.check(sc.length(), 27);
+ sc.remove(20, 5);
+ harness.check(sc.length(), 22);
+ }
+ catch (BadLocationException e)
+ {
+ harness.fail(e.toString());
+ }
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/remove.java b/gnu/testlet/javax/swing/text/StringContent/remove.java
new file mode 100644
index 00000000..c9978761
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/remove.java
@@ -0,0 +1,142 @@
+/* remove.java -- Some checks for the remove() method in the StringContent
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+
+public class remove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testGeneral(harness);
+ testRemoveLast(harness);
+ }
+
+ public void testGeneral(TestHarness harness)
+ {
+ StringContent sc = new StringContent();
+ // regular insert
+ try
+ {
+ sc.insertString(0, "ABCDEFG");
+ // ignoring undo/redo here - see insertUndo.java
+ }
+ catch (BadLocationException e)
+ {
+ // ignore - checks below will fail if this happens
+ }
+ harness.check(sc.length(), 8);
+
+ // remove from location before start
+ boolean pass = false;
+ try
+ {
+ sc.remove(-1, 3);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true; // Classpath does this
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ pass = false; // JDK does this - it is a bug given the API spec
+ }
+ harness.check(pass);
+
+ // remove from location after end
+ pass = false;
+ try
+ {
+ sc.remove(99, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // doesn't allow removal of last char
+ pass = false;
+ try
+ {
+ sc.remove(7, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ harness.check(sc.length(), 8);
+
+ // remove 0 chars
+ pass = true;
+ try
+ {
+ sc.remove(0, 0);
+ }
+ catch (BadLocationException e)
+ {
+ pass = false;
+ }
+ harness.check(pass);
+ harness.check(sc.length(), 8);
+
+ }
+
+ /**
+ * The API spec says that the last character cannot be removed
+ * (where + nitems < length()).
+ *
+ * @param harness
+ */
+ public void testRemoveLast(TestHarness harness)
+ {
+ harness.checkPoint("testRemoveLast");
+ StringContent sc = new StringContent();
+ harness.check(sc.length(), 1);
+
+ boolean pass = false;
+ try
+ {
+ sc.remove(0, 1);
+ }
+ catch (BadLocationException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StringContent/removeUndo.java b/gnu/testlet/javax/swing/text/StringContent/removeUndo.java
new file mode 100644
index 00000000..41d36af2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/removeUndo.java
@@ -0,0 +1,130 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Arnaud Vandyck <avdyk@gnu.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.StringContent;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.UndoableEdit;
+
+public class removeUndo implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StringContent");
+
+ StringContent sc = new StringContent();
+ UndoableEdit ue = null;
+ UndoableEdit ue2 = null;
+ UndoableEdit ue3 = null;
+ try
+ {
+ h.checkPoint("StringContent -- insertString()");
+ sc.insertString(0, "path");
+ h.check("path\n", sc.getString(0, sc.length()),
+ "StringContent.insertString(): insert 'path' at 0");
+ sc.insertString(0, "class");
+ ue = sc.remove(1, 4);
+ java.util.Locale.setDefault(java.util.Locale.US);
+ String presentationName = ue.getPresentationName();
+ h.check("", presentationName, "PresentationName should be '' and is: " + presentationName);
+ String redoPresentationName = ue.getRedoPresentationName();
+ h.check("Redo", redoPresentationName, "RedoPresentationName should be Redo and is: " + redoPresentationName);
+ String undoPresentationName = ue.getUndoPresentationName();
+ h.check("Undo", undoPresentationName, "UndoPresentationName should be Undo and is: " + undoPresentationName);
+ h.check(false, ue.canRedo(), "canRedo? () (" + ue.canRedo() + ")");
+ h.check(true, ue.canUndo(), "canUndo? () (" + ue.canUndo() + ")");
+ h.check("cpath\n", sc.getString(0, sc.length()),
+ "Remove path: getString should be class\\n and is: " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.check("classpath\n", sc.getString(0, sc.length()),
+ "Undo: getString should be classpath\\n and is: " + sc.getString(0, sc.length()));
+ h.check(true, ue.canRedo(), "canRedo? () (" + ue.canRedo() + ")");
+ h.check(false, ue.canUndo(), "canUndo? () (" + ue.canUndo() + ")");
+ ue.redo();
+ h.check("cpath\n", sc.getString(0, sc.length()),
+ "Redo: getString should be cpath\\n and is : " + sc.getString(0, sc.length()));
+ ue.die();
+ h.debug("UndoableEdit.die() no more undo/redo");
+ h.check(false, ue.canUndo(), "die, no more undo");
+ h.check(false, ue.canRedo(), "die, no more redo");
+ sc = new StringContent();
+ sc.insertString(0, "classpathX");
+ h.check("classpathX\n", sc.getString(0, sc.length()), "should be 'classpathX' and is: " + sc.getString(0, sc.length()));
+ ue = sc.remove(3, 2);
+ h.check("clapathX\n", sc.getString(0, sc.length()),
+ "double undo: should be 'clapathX\\n' and is: " + sc.getString(0, sc.length()));
+ ue2 = sc.remove(4, 2);
+ h.check("claphX\n", sc.getString(0, sc.length()),
+ "double undo: should be 'claphX\\n' and is: " + sc.getString(0, sc.length()));
+ ue3 = sc.remove(0, 3);
+ h.check(true, ue.canUndo(), "double undo can undo?");
+ h.check("phX\n", sc.getString(0, sc.length()), "check remove: should be 'phX\\n' and is: " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.check("phXss\n", sc.getString(0, sc.length()),
+ "double undo: should be 'phXss\\n' and is: " + sc.getString(0, sc.length()));
+ ue2.undo();
+ h.check("phXsats\n", sc.getString(0, sc.length()), "should be 'phXsats\\n' and is: " + sc.getString(0, sc.length()));
+ ue.redo();
+ h.check("phXts\n", sc.getString(0, sc.length()), "double undo: should be 'phXts\\n' and is: " + sc.getString(0, sc.length()));
+ ue3.undo();
+ h.check("claphXts\n", sc.getString(0, sc.length()), "add an X: should be 'claphXts\\n' and is: " + sc.getString(0, sc.length()));
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ try{
+ ue3.undo();
+ h.fail("should not be able to undo!");
+ }
+ catch (CannotUndoException cannot)
+ {
+ h.checkPoint("cannot undo");
+ }
+ try
+ {
+ sc = new StringContent();
+ sc.insertString(0, "super classpath");
+ h.check("super classpath\n", sc.getString(0, sc.length()), "insert 'super classpath': " + sc.getString(0, sc.length()));
+ ue = sc.remove(0, 6);
+ h.check("classpath\n", sc.getString(0, sc.length()), "insert 'super classpath': " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.check("super classpath\n", sc.getString(0, sc.length()), "undo 'classpath': " + sc.getString(0, sc.length()));
+ ue.undo();
+ h.fail("should not be able to undo two times");
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ catch (CannotUndoException cannot)
+ {
+ h.checkPoint("cannot undo several times");
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/StringContent/stickyPosition.java b/gnu/testlet/javax/swing/text/StringContent/stickyPosition.java
new file mode 100644
index 00000000..2de17f70
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StringContent/stickyPosition.java
@@ -0,0 +1,77 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2005 Arnaud Vandyck <avdyk@gnu.org>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.StringContent;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Position;
+import javax.swing.text.StringContent;
+
+public class stickyPosition implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StringContent");
+
+ StringContent sc = new StringContent();
+ try
+ {
+ sc.insertString(0, "classpath");
+ Position position = sc.createPosition(1);
+ Position position2 = sc.createPosition(4);
+ Position position3 = sc.createPosition(sc.length());
+ h.check(1, position.getOffset(), "createPosition(1): Position.getOffset() should be 1 and is: " + position.getOffset());
+ h.check(4, position2.getOffset(), "createPosition(4): Position2.getOffset() should be 4 and is: " + position2.getOffset());
+ h.check(10, position3.getOffset(), "createPosition(10): Position3.getOffset() should be 10 and is: " + position3.getOffset());
+ sc.insertString(2, "-");
+ h.check(1, position.getOffset(), "Position.getOffset() should be 1 and is: " + position.getOffset());
+ h.check(5, position2.getOffset(), "Position2.getOffset() should be 5 and is: " + position2.getOffset());
+ h.check(11, position3.getOffset(), "Position3.getOffset() should be 11 and is: " + position3.getOffset());
+ sc.insertString(1, "-");
+ h.check(2, position.getOffset(), "Position.getOffset() should be 2 and is: " + position.getOffset());
+ h.check(6, position2.getOffset(), "Position2.getOffset() should be 6 and is: " + position2.getOffset());
+ h.check(12, position3.getOffset(), "Position3.getOffset() should be 12 and is: " + position3.getOffset());
+ sc.remove(0, 2);
+ h.check(0, position.getOffset(), "Position.getOffset() should be 0 and is: " + position.getOffset());
+ h.check(4, position2.getOffset(), "Position2.getOffset() should be 4 and is: " + position2.getOffset());
+ h.check(10, position3.getOffset(), "Position3.getOffset() should be 10 and is: " + position3.getOffset());
+ sc.remove(0, 5);
+ h.check(0, position.getOffset(), "Position.getOffset() should be 0 and is: " + position.getOffset());
+ h.check("path\n", sc.getString(0, sc.length()), "getString(0, length()) should be 'path\\n' and is: " + sc.getString(0, sc.length()));
+ h.check(0, position2.getOffset(), "Position.getOffset() should be 0 and is: " + position2.getOffset());
+ h.check(5, position3.getOffset(), "Position3.getOffset() should be 5 and is: " + position3.getOffset());
+ sc.insertString(0, "class");
+ h.check(0, position.getOffset(), "Position.getOffset() should be 0 and is: " + position.getOffset());
+ h.check("classpath\n", sc.getString(0, sc.length()), "getString(0, length()) should be 'classpath\\n' and is: " + sc.getString(0, sc.length()));
+ h.check(0, position2.getOffset(), "Position.getOffset() should be 0 and is: " + position2.getOffset());
+ h.check(sc.length(), position3.getOffset(), "Position3 should be 10 and is: " + position3.getOffset());
+ }
+ catch (BadLocationException ble)
+ {
+ h.fail("BadLocation! " + ble.getMessage());
+ }
+ }
+
+}
+
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/CVS/Entries b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Entries
new file mode 100644
index 00000000..deb7e95e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Entries
@@ -0,0 +1,44 @@
+/constants.java/1.1/Tue Jan 17 10:23:14 2006//
+/getAlignment.java/1.1/Tue Jan 17 10:23:14 2006//
+/getBackground.java/1.1/Tue Jan 17 10:23:14 2006//
+/getBidiLevel.java/1.1/Tue Jan 17 10:23:14 2006//
+/getComponent.java/1.1/Tue Jan 17 10:23:14 2006//
+/getFirstLineIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/getFontFamily.java/1.1/Tue Jan 17 10:23:14 2006//
+/getFontSize.java/1.1/Tue Jan 17 10:23:14 2006//
+/getForeground.java/1.1/Tue Jan 17 10:23:14 2006//
+/getIcon.java/1.1/Tue Jan 17 10:23:14 2006//
+/getLeftIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/getLineSpacing.java/1.1/Tue Jan 17 10:23:14 2006//
+/getRightIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/getSpaceAbove.java/1.1/Tue Jan 17 10:23:14 2006//
+/getSpaceBelow.java/1.1/Tue Jan 17 10:23:14 2006//
+/getTabSet.java/1.1/Tue Jan 17 10:23:14 2006//
+/isBold.java/1.1/Tue Jan 17 10:23:14 2006//
+/isItalic.java/1.1/Tue Jan 17 10:23:14 2006//
+/isStrikeThrough.java/1.1/Tue Jan 17 10:23:14 2006//
+/isSubscript.java/1.1/Tue Jan 17 10:23:14 2006//
+/isSuperscript.java/1.1/Tue Jan 17 10:23:14 2006//
+/isUnderline.java/1.1/Tue Jan 17 10:23:14 2006//
+/setAlignment.java/1.1/Tue Jan 17 10:23:14 2006//
+/setBackground.java/1.1/Tue Jan 17 10:23:14 2006//
+/setBidiLevel.java/1.1/Tue Jan 17 10:23:14 2006//
+/setBold.java/1.1/Tue Jan 17 10:23:14 2006//
+/setComponent.java/1.1/Tue Jan 17 10:23:14 2006//
+/setFirstLineIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/setFontFamily.java/1.1/Tue Jan 17 10:23:14 2006//
+/setFontSize.java/1.1/Tue Jan 17 10:23:14 2006//
+/setForeground.java/1.1/Tue Jan 17 10:23:14 2006//
+/setIcon.java/1.1/Tue Jan 17 10:23:14 2006//
+/setItalic.java/1.1/Tue Jan 17 10:23:14 2006//
+/setLeftIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/setLineSpacing.java/1.1/Tue Jan 17 10:23:14 2006//
+/setRightIndent.java/1.1/Tue Jan 17 10:23:14 2006//
+/setSpaceAbove.java/1.1/Tue Jan 17 10:23:14 2006//
+/setSpaceBelow.java/1.1/Tue Jan 17 10:23:14 2006//
+/setStrikeThrough.java/1.1/Tue Jan 17 10:23:14 2006//
+/setSubscript.java/1.1/Tue Jan 17 10:23:14 2006//
+/setSuperscript.java/1.1/Tue Jan 17 10:23:14 2006//
+/setTabSet.java/1.1/Tue Jan 17 10:23:14 2006//
+/setUnderline.java/1.1/Tue Jan 17 10:23:14 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/CVS/Repository b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Repository
new file mode 100644
index 00000000..9e4a83bd
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/StyleConstants
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/CVS/Root b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/constants.java b/gnu/testlet/javax/swing/text/StyleConstants/constants.java
new file mode 100644
index 00000000..ab6e8a95
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/constants.java
@@ -0,0 +1,105 @@
+/* constants.java -- Tests for the constants in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyleConstants.CharacterConstants;
+import javax.swing.text.StyleConstants.ColorConstants;
+import javax.swing.text.StyleConstants.FontConstants;
+import javax.swing.text.StyleConstants.ParagraphConstants;
+
+/**
+ * Some checks for the constants in the {@link StyleConstants} class.
+ */
+public class constants implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ harness.check(StyleConstants.ComponentElementName.equals("component"));
+ harness.check(StyleConstants.IconElementName.equals("icon"));
+ harness.check(StyleConstants.ModelAttribute.toString(), "model");
+ harness.check(StyleConstants.NameAttribute.toString(), "name");
+ harness.check(StyleConstants.ResolveAttribute.toString(), "resolver");
+
+ harness.check(StyleConstants.Background.equals(
+ CharacterConstants.Background));
+ harness.check(StyleConstants.BidiLevel.equals(
+ CharacterConstants.BidiLevel));
+ harness.check(StyleConstants.Bold.equals(CharacterConstants.Bold));
+ harness.check(StyleConstants.ComponentAttribute.equals(
+ CharacterConstants.ComponentAttribute));
+ harness.check(StyleConstants.Family.equals(CharacterConstants.Family));
+ harness.check(StyleConstants.Foreground.equals(
+ CharacterConstants.Foreground));
+ harness.check(StyleConstants.IconAttribute.equals(
+ CharacterConstants.IconAttribute));
+ harness.check(StyleConstants.Italic.equals(CharacterConstants.Italic));
+ harness.check(StyleConstants.Size.equals(CharacterConstants.Size));
+ harness.check(StyleConstants.StrikeThrough.equals(
+ CharacterConstants.StrikeThrough));
+ harness.check(StyleConstants.Subscript.equals(
+ CharacterConstants.Subscript));
+ harness.check(StyleConstants.Superscript.equals(
+ CharacterConstants.Superscript));
+ harness.check(StyleConstants.Underline.equals(
+ CharacterConstants.Underline));
+
+ harness.check(StyleConstants.Background.equals(ColorConstants.Background));
+ harness.check(StyleConstants.Foreground.equals(ColorConstants.Foreground));
+
+ harness.check(StyleConstants.Bold.equals(FontConstants.Bold));
+ harness.check(StyleConstants.Family.equals(FontConstants.Family));
+ harness.check(StyleConstants.Italic.equals(FontConstants.Italic));
+ harness.check(StyleConstants.Size.equals(FontConstants.Size));
+
+ harness.check(StyleConstants.Alignment.equals(
+ ParagraphConstants.Alignment));
+ harness.check(StyleConstants.FirstLineIndent.equals(
+ ParagraphConstants.FirstLineIndent));
+ harness.check(StyleConstants.LeftIndent.equals(
+ ParagraphConstants.LeftIndent));
+ harness.check(StyleConstants.LineSpacing.equals(
+ ParagraphConstants.LineSpacing));
+ harness.check(StyleConstants.Orientation.equals(
+ ParagraphConstants.Orientation));
+ harness.check(StyleConstants.RightIndent.equals(
+ ParagraphConstants.RightIndent));
+ harness.check(StyleConstants.SpaceAbove.equals(
+ ParagraphConstants.SpaceAbove));
+ harness.check(StyleConstants.SpaceBelow.equals(
+ ParagraphConstants.SpaceBelow));
+ harness.check(StyleConstants.TabSet.equals(ParagraphConstants.TabSet));
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java b/gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java
new file mode 100644
index 00000000..bb42b9b0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getAlignment.java
@@ -0,0 +1,79 @@
+/* getAlignment.java -- Tests for the getAlignment() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getAlignment() method in the {@link StyleConstants}
+ * class.
+ */
+public class getAlignment implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getAlignment(s), StyleConstants.ALIGN_LEFT);
+
+ // check local setting
+ StyleConstants.setAlignment(s, StyleConstants.ALIGN_JUSTIFIED);
+ harness.check(StyleConstants.getAlignment(s),
+ StyleConstants.ALIGN_JUSTIFIED);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Alignment);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setAlignment(parent, StyleConstants.ALIGN_JUSTIFIED);
+ harness.check(StyleConstants.getAlignment(s),
+ StyleConstants.ALIGN_JUSTIFIED);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getAlignment(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getBackground.java b/gnu/testlet/javax/swing/text/StyleConstants/getBackground.java
new file mode 100644
index 00000000..4d35f9c6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getBackground.java
@@ -0,0 +1,79 @@
+/* getBackground.java -- Tests for the getBackground() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getBackground() method in the {@link StyleConstants}
+ * class.
+ */
+public class getBackground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getBackground(s), Color.black);
+
+ // check local setting
+ StyleConstants.setBackground(s, Color.red);
+ harness.check(StyleConstants.getBackground(s), Color.red);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Background);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setBackground(parent, Color.yellow);
+ harness.check(StyleConstants.getBackground(s), Color.yellow);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getBackground(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java b/gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java
new file mode 100644
index 00000000..89884039
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getBidiLevel.java
@@ -0,0 +1,77 @@
+/* getBidiLevel.java -- Tests for the getBidiLevel() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getBidiLevel() method in the {@link StyleConstants}
+ * class.
+ */
+public class getBidiLevel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getBidiLevel(s), 0);
+
+ // check local setting
+ StyleConstants.setBidiLevel(s, 1);
+ harness.check(StyleConstants.getBidiLevel(s), 1);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.BidiLevel);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setBidiLevel(parent, 2);
+ harness.check(StyleConstants.getBidiLevel(s), 2);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getBidiLevel(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getComponent.java b/gnu/testlet/javax/swing/text/StyleConstants/getComponent.java
new file mode 100644
index 00000000..a6f984de
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getComponent.java
@@ -0,0 +1,80 @@
+/* getComponent.java -- Tests for the getComponent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getComponent() method in the {@link StyleConstants}
+ * class.
+ */
+public class getComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getComponent(s), null);
+
+ // check local setting
+ JLabel comp = new JLabel("Label1");
+ StyleConstants.setComponent(s, comp);
+ harness.check(StyleConstants.getComponent(s), comp);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.ComponentAttribute);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ JLabel comp2 = new JLabel("Label2");
+ StyleConstants.setComponent(parent, comp2);
+ harness.check(StyleConstants.getComponent(s), comp2);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getComponent(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java
new file mode 100644
index 00000000..76117b43
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getFirstLineIndent.java
@@ -0,0 +1,77 @@
+/* getFirstLineIndent.java -- Tests for the getFirstLineIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getFirstLineIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class getFirstLineIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getFirstLineIndent(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setFirstLineIndent(s, 1.0f);
+ harness.check(StyleConstants.getFirstLineIndent(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.FirstLineIndent);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setFirstLineIndent(parent, 2.0f);
+ harness.check(StyleConstants.getFirstLineIndent(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getFirstLineIndent(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java b/gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java
new file mode 100644
index 00000000..0ab2c564
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getFontFamily.java
@@ -0,0 +1,77 @@
+/* getFontFamily.java -- Tests for the getFontFamily() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getFontFamily() method in the {@link StyleConstants}
+ * class.
+ */
+public class getFontFamily implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getFontFamily(s), "Monospaced");
+
+ // check local setting
+ StyleConstants.setFontFamily(s, "XYZ");
+ harness.check(StyleConstants.getFontFamily(s), "XYZ");
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.FontFamily);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setFontFamily(parent, "ABC");
+ harness.check(StyleConstants.getFontFamily(s), "ABC");
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getFontFamily(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java b/gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java
new file mode 100644
index 00000000..942078a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getFontSize.java
@@ -0,0 +1,77 @@
+/* getFontSize.java -- Tests for the getFontSize() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getFontSize() method in the {@link StyleConstants}
+ * class.
+ */
+public class getFontSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getFontSize(s), 12);
+
+ // check local setting
+ StyleConstants.setFontSize(s, 14);
+ harness.check(StyleConstants.getFontSize(s), 14);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.FontSize);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setFontSize(parent, 16);
+ harness.check(StyleConstants.getFontSize(s), 16);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getFontSize(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getForeground.java b/gnu/testlet/javax/swing/text/StyleConstants/getForeground.java
new file mode 100644
index 00000000..68fb8fb2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getForeground.java
@@ -0,0 +1,79 @@
+/* getForeground.java -- Tests for the getForeground() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getForeground() method in the {@link StyleConstants}
+ * class.
+ */
+public class getForeground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getForeground(s), Color.black);
+
+ // check local setting
+ StyleConstants.setForeground(s, Color.red);
+ harness.check(StyleConstants.getForeground(s), Color.red);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Foreground);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setForeground(parent, Color.yellow);
+ harness.check(StyleConstants.getForeground(s), Color.yellow);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getForeground(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getIcon.java b/gnu/testlet/javax/swing/text/StyleConstants/getIcon.java
new file mode 100644
index 00000000..af16d0aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getIcon.java
@@ -0,0 +1,79 @@
+/* getIcon.java -- Tests for the getIcon() method in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getIcon() method in the {@link StyleConstants} class.
+ */
+public class getIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getIcon(s), null);
+
+ // check local setting
+ Icon icon1 = MetalIconFactory.getFileChooserHomeFolderIcon();
+ StyleConstants.setIcon(s, icon1);
+ harness.check(StyleConstants.getIcon(s), icon1);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.IconAttribute);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ Icon icon2 = MetalIconFactory.getFileChooserNewFolderIcon();
+ StyleConstants.setIcon(parent, icon2);
+ harness.check(StyleConstants.getIcon(s), icon2);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getIcon(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java
new file mode 100644
index 00000000..7d20f7c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getLeftIndent.java
@@ -0,0 +1,77 @@
+/* getLeftIndent.java -- Tests for the getLeftIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getLeftIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class getLeftIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getLeftIndent(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setLeftIndent(s, 1.0f);
+ harness.check(StyleConstants.getLeftIndent(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.LeftIndent);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setLeftIndent(parent, 2.0f);
+ harness.check(StyleConstants.getLeftIndent(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getLeftIndent(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java b/gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java
new file mode 100644
index 00000000..9c4b51df
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getLineSpacing.java
@@ -0,0 +1,77 @@
+/* getLineSpacing.java -- Tests for the getLineSpacing() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getLineSpacing() method in the {@link StyleConstants}
+ * class.
+ */
+public class getLineSpacing implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getLineSpacing(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setLineSpacing(s, 1.0f);
+ harness.check(StyleConstants.getLineSpacing(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.LineSpacing);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setLineSpacing(parent, 2.0f);
+ harness.check(StyleConstants.getLineSpacing(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getLineSpacing(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java
new file mode 100644
index 00000000..68bef5db
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getRightIndent.java
@@ -0,0 +1,77 @@
+/* getRightIndent.java -- Tests for the getRightIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getRightIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class getRightIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getRightIndent(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setRightIndent(s, 1.0f);
+ harness.check(StyleConstants.getRightIndent(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.RightIndent);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setRightIndent(parent, 2.0f);
+ harness.check(StyleConstants.getRightIndent(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getRightIndent(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java b/gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java
new file mode 100644
index 00000000..c060910c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getSpaceAbove.java
@@ -0,0 +1,77 @@
+/* getSpaceAbove.java -- Tests for the getSpaceAbove() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getSpaceAbove() method in the {@link StyleConstants}
+ * class.
+ */
+public class getSpaceAbove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getSpaceAbove(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setSpaceAbove(s, 1.0f);
+ harness.check(StyleConstants.getSpaceAbove(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.SpaceAbove);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setSpaceAbove(parent, 2.0f);
+ harness.check(StyleConstants.getSpaceAbove(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getSpaceAbove(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java b/gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java
new file mode 100644
index 00000000..6236bc0b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getSpaceBelow.java
@@ -0,0 +1,77 @@
+/* getSpaceBelow.java -- Tests for the getSpaceBelow() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the getSpaceBelow() method in the {@link StyleConstants}
+ * class.
+ */
+public class getSpaceBelow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getSpaceBelow(s), 0.0f);
+
+ // check local setting
+ StyleConstants.setSpaceBelow(s, 1.0f);
+ harness.check(StyleConstants.getSpaceBelow(s), 1.0f);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.SpaceBelow);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setSpaceBelow(parent, 2.0f);
+ harness.check(StyleConstants.getSpaceBelow(s), 2.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getSpaceBelow(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java b/gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java
new file mode 100644
index 00000000..ef0a9ca2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/getTabSet.java
@@ -0,0 +1,83 @@
+/* getTabSet.java -- Tests for the getTabSet() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+/**
+ * Some checks for the getTabSet() method in the {@link StyleConstants}
+ * class.
+ */
+public class getTabSet implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.getTabSet(s), null);
+
+ // check local setting
+ TabStop[] tabs1 = new TabStop[] {new TabStop(8.0f)};
+ TabSet ts1 = new TabSet(tabs1);
+ StyleConstants.setTabSet(s, ts1);
+ harness.check(StyleConstants.getTabSet(s), ts1);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.TabSet);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ TabStop[] tabs2 = new TabStop[] {new TabStop(10.0f)};
+ TabSet ts2 = new TabSet(tabs2);
+ StyleConstants.setTabSet(parent, ts2);
+ harness.check(StyleConstants.getTabSet(s), ts2);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.getTabSet(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isBold.java b/gnu/testlet/javax/swing/text/StyleConstants/isBold.java
new file mode 100644
index 00000000..f4d37000
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isBold.java
@@ -0,0 +1,75 @@
+/* isBold.java -- Tests for the isBold() method in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isBold() method in the {@link StyleConstants} class.
+ */
+public class isBold implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isBold(s), false);
+
+ // check local setting
+ StyleConstants.setBold(s, true);
+ harness.check(StyleConstants.isBold(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Bold);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setBold(parent, true);
+ harness.check(StyleConstants.isBold(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isBold(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isItalic.java b/gnu/testlet/javax/swing/text/StyleConstants/isItalic.java
new file mode 100644
index 00000000..6421bdf0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isItalic.java
@@ -0,0 +1,75 @@
+/* isItalic.java -- Tests for the isItalic() method in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isItalic() method in the {@link StyleConstants} class.
+ */
+public class isItalic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isItalic(s), false);
+
+ // check local setting
+ StyleConstants.setItalic(s, true);
+ harness.check(StyleConstants.isItalic(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Italic);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setItalic(parent, true);
+ harness.check(StyleConstants.isItalic(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isItalic(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java b/gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java
new file mode 100644
index 00000000..805684c9
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isStrikeThrough.java
@@ -0,0 +1,77 @@
+/* isStrikeThrough.java -- Tests for the isStrikeThrough() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isStrikeThrough() method in the {@link StyleConstants}
+ * class.
+ */
+public class isStrikeThrough implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isStrikeThrough(s), false);
+
+ // check local setting
+ StyleConstants.setStrikeThrough(s, true);
+ harness.check(StyleConstants.isStrikeThrough(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.StrikeThrough);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setStrikeThrough(parent, true);
+ harness.check(StyleConstants.isStrikeThrough(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isStrikeThrough(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java b/gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java
new file mode 100644
index 00000000..275a0bde
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isSubscript.java
@@ -0,0 +1,76 @@
+/* isSubscript.java -- Tests for the isSubscript() method in the StyleConstants
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isSubscript() method in the {@link StyleConstants} class.
+ */
+public class isSubscript implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isSubscript(s), false);
+
+ // check local setting
+ StyleConstants.setSubscript(s, true);
+ harness.check(StyleConstants.isSubscript(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Subscript);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setSubscript(parent, true);
+ harness.check(StyleConstants.isSubscript(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isSubscript(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java b/gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java
new file mode 100644
index 00000000..21e08a29
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isSuperscript.java
@@ -0,0 +1,77 @@
+/* isSuperscript.java -- Tests for the isSuperscript() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isSuperscript() method in the {@link StyleConstants}
+ * class.
+ */
+public class isSuperscript implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isSuperscript(s), false);
+
+ // check local setting
+ StyleConstants.setSuperscript(s, true);
+ harness.check(StyleConstants.isSuperscript(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Superscript);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setSuperscript(parent, true);
+ harness.check(StyleConstants.isSuperscript(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isSuperscript(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java b/gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java
new file mode 100644
index 00000000..b211e154
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/isUnderline.java
@@ -0,0 +1,76 @@
+/* isUnderline.java -- Tests for the isUnderline() method in the StyleConstants
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the isUnderline() method in the {@link StyleConstants} class.
+ */
+public class isUnderline implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check default
+ harness.check(StyleConstants.isUnderline(s), false);
+
+ // check local setting
+ StyleConstants.setUnderline(s, true);
+ harness.check(StyleConstants.isUnderline(s), true);
+
+ // check resolving parent setting
+ s.removeAttribute(StyleConstants.Underline);
+ SimpleAttributeSet parent = new SimpleAttributeSet();
+ s.setResolveParent(parent);
+ StyleConstants.setUnderline(parent, true);
+ harness.check(StyleConstants.isUnderline(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.isUnderline(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java b/gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java
new file mode 100644
index 00000000..206629a6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setAlignment.java
@@ -0,0 +1,72 @@
+/* setAlignment.java -- Tests for the setAlignment() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setAlignment() method in the {@link StyleConstants}
+ * class.
+ */
+public class setAlignment implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setAlignment(s, StyleConstants.ALIGN_JUSTIFIED);
+ harness.check(StyleConstants.getAlignment(s),
+ StyleConstants.ALIGN_JUSTIFIED);
+
+ // check unknown value
+ StyleConstants.setAlignment(s, 99);
+ harness.check(StyleConstants.getAlignment(s), 99);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setAlignment(null, StyleConstants.ALIGN_JUSTIFIED);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setBackground.java b/gnu/testlet/javax/swing/text/StyleConstants/setBackground.java
new file mode 100644
index 00000000..ee1e2cef
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setBackground.java
@@ -0,0 +1,81 @@
+/* setBackground.java -- Tests for the setBackground() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setBackground() method in the {@link StyleConstants}
+ * class.
+ */
+public class setBackground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setBackground(s, Color.blue);
+ harness.check(StyleConstants.getBackground(s), Color.blue);
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setBackground(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setBackground(null, Color.red);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java b/gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java
new file mode 100644
index 00000000..01da9b2c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setBidiLevel.java
@@ -0,0 +1,67 @@
+/* setBidiLevel.java -- Tests for the setBidiLevel() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setBidiLevel() method in the {@link StyleConstants}
+ * class.
+ */
+public class setBidiLevel implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setBidiLevel(s, 1);
+ harness.check(StyleConstants.getBidiLevel(s), 1);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setBidiLevel(null, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setBold.java b/gnu/testlet/javax/swing/text/StyleConstants/setBold.java
new file mode 100644
index 00000000..9293daae
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setBold.java
@@ -0,0 +1,66 @@
+/* setBold.java -- Tests for the setBold() method in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setBold() method in the {@link StyleConstants}
+ * class.
+ */
+public class setBold implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setBold(s, true);
+ harness.check(StyleConstants.isBold(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setBold(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setComponent.java b/gnu/testlet/javax/swing/text/StyleConstants/setComponent.java
new file mode 100644
index 00000000..ba377fbe
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setComponent.java
@@ -0,0 +1,81 @@
+/* setComponent.java -- Tests for the setComponent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JLabel;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setComponent() method in the {@link StyleConstants}
+ * class.
+ */
+public class setComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ JLabel comp1 = new JLabel("XYZ");
+ StyleConstants.setComponent(s, comp1);
+ harness.check(StyleConstants.getComponent(s), comp1);
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setComponent(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setComponent(null, comp1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java
new file mode 100644
index 00000000..66de9985
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setFirstLineIndent.java
@@ -0,0 +1,67 @@
+/* setFirstLineIndent.java -- Tests for the setFirstLineIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setFirstLineIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class setFirstLineIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setFirstLineIndent(s, 4.0f);
+ harness.check(StyleConstants.getFirstLineIndent(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setFirstLineIndent(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java b/gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java
new file mode 100644
index 00000000..86a9d6b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setFontFamily.java
@@ -0,0 +1,79 @@
+/* setFontFamily.java -- Tests for the setFontFamily() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setFontFamily() method in the {@link StyleConstants}
+ * class.
+ */
+public class setFontFamily implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setFontFamily(s, "F1");
+ harness.check(StyleConstants.getFontFamily(s), "F1");
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setFontFamily(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setFontFamily(null, "XYZ");
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java b/gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java
new file mode 100644
index 00000000..a31ccef5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setFontSize.java
@@ -0,0 +1,67 @@
+/* setFontSize.java -- Tests for the setFontSize() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setFontSize() method in the {@link StyleConstants}
+ * class.
+ */
+public class setFontSize implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setFontSize(s, 14);
+ harness.check(StyleConstants.getFontSize(s), 14);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setFontSize(null, 2);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setForeground.java b/gnu/testlet/javax/swing/text/StyleConstants/setForeground.java
new file mode 100644
index 00000000..77c93ab2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setForeground.java
@@ -0,0 +1,81 @@
+/* setForeground.java -- Tests for the setForeground() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setForeground() method in the {@link StyleConstants}
+ * class.
+ */
+public class setForeground implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setForeground(s, Color.blue);
+ harness.check(StyleConstants.getForeground(s), Color.blue);
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setForeground(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setForeground(null, Color.red);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setIcon.java b/gnu/testlet/javax/swing/text/StyleConstants/setIcon.java
new file mode 100644
index 00000000..9ccf62f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setIcon.java
@@ -0,0 +1,81 @@
+/* setIcon.java -- Tests for the setIcon() method in the StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.Icon;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setIcon() method in the {@link StyleConstants}
+ * class.
+ */
+public class setIcon implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ Icon icon1 = MetalIconFactory.getTreeComputerIcon();
+ StyleConstants.setIcon(s, icon1);
+ harness.check(StyleConstants.getIcon(s), icon1);
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setIcon(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setIcon(null, icon1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setItalic.java b/gnu/testlet/javax/swing/text/StyleConstants/setItalic.java
new file mode 100644
index 00000000..bf7546af
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setItalic.java
@@ -0,0 +1,67 @@
+/* setItalic.java -- Tests for the setItalic() method in the StyleConstants
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setItalic() method in the {@link StyleConstants}
+ * class.
+ */
+public class setItalic implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setItalic(s, true);
+ harness.check(StyleConstants.isItalic(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setItalic(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java
new file mode 100644
index 00000000..b0708604
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setLeftIndent.java
@@ -0,0 +1,67 @@
+/* setLeftIndent.java -- Tests for the setLeftIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setLeftIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class setLeftIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setLeftIndent(s, 4.0f);
+ harness.check(StyleConstants.getLeftIndent(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setLeftIndent(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java b/gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java
new file mode 100644
index 00000000..e97250f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setLineSpacing.java
@@ -0,0 +1,67 @@
+/* setLineSpacing.java -- Tests for the setLineSpacing() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setLineSpacing() method in the {@link StyleConstants}
+ * class.
+ */
+public class setLineSpacing implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setLineSpacing(s, 4.0f);
+ harness.check(StyleConstants.getLineSpacing(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setLineSpacing(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java b/gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java
new file mode 100644
index 00000000..ee06a86c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setRightIndent.java
@@ -0,0 +1,67 @@
+/* setRightIndent.java -- Tests for the setRightIndent() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setRightIndent() method in the {@link StyleConstants}
+ * class.
+ */
+public class setRightIndent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setRightIndent(s, 4.0f);
+ harness.check(StyleConstants.getRightIndent(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setRightIndent(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java b/gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java
new file mode 100644
index 00000000..2d03a4d2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setSpaceAbove.java
@@ -0,0 +1,67 @@
+/* setLineSpacing.java -- Tests for the setLineSpacing() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setSpaceAbove() method in the {@link StyleConstants}
+ * class.
+ */
+public class setSpaceAbove implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setSpaceAbove(s, 4.0f);
+ harness.check(StyleConstants.getSpaceAbove(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setSpaceAbove(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java b/gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java
new file mode 100644
index 00000000..cc8930e8
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setSpaceBelow.java
@@ -0,0 +1,67 @@
+/* setSpaceBelow.java -- Tests for the setSpaceBelow() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setSpaceBelow() method in the {@link StyleConstants}
+ * class.
+ */
+public class setSpaceBelow implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setSpaceBelow(s, 4.0f);
+ harness.check(StyleConstants.getSpaceBelow(s), 4.0f);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setSpaceBelow(null, 2.0f);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java b/gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java
new file mode 100644
index 00000000..f6411be5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setStrikeThrough.java
@@ -0,0 +1,67 @@
+/* setStrikeThrough.java -- Tests for the setStrikeThrough() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setStrikeThrough() method in the {@link StyleConstants}
+ * class.
+ */
+public class setStrikeThrough implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setStrikeThrough(s, true);
+ harness.check(StyleConstants.isStrikeThrough(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setStrikeThrough(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java b/gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java
new file mode 100644
index 00000000..5b2ad10d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setSubscript.java
@@ -0,0 +1,67 @@
+/* setSubscript.java -- Tests for the setSubscript() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setSubscript() method in the {@link StyleConstants}
+ * class.
+ */
+public class setSubscript implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setSubscript(s, true);
+ harness.check(StyleConstants.isSubscript(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setSubscript(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java b/gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java
new file mode 100644
index 00000000..09e333bc
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setSuperscript.java
@@ -0,0 +1,67 @@
+/* setSuperscript.java -- Tests for the setSuperscript() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setSuperscript() method in the {@link StyleConstants}
+ * class.
+ */
+public class setSuperscript implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setSuperscript(s, true);
+ harness.check(StyleConstants.isSuperscript(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setSuperscript(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java b/gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java
new file mode 100644
index 00000000..4db681fa
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setTabSet.java
@@ -0,0 +1,83 @@
+/* setTabSet.java -- Tests for the setTabSet() method in the StyleConstants
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+/**
+ * Some checks for the setTabSet() method in the {@link StyleConstants}
+ * class.
+ */
+public class setTabSet implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ TabStop[] tabs1 = new TabStop[] {new TabStop(8.0f)};
+ TabSet ts1 = new TabSet(tabs1);
+ StyleConstants.setTabSet(s, ts1);
+ harness.check(StyleConstants.getTabSet(s), ts1);
+
+ // try null value
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setTabSet(s, null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try null key
+ pass = false;
+ try
+ {
+ StyleConstants.setTabSet(null, ts1);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java b/gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java
new file mode 100644
index 00000000..7d808512
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleConstants/setUnderline.java
@@ -0,0 +1,67 @@
+/* setUnderline.java -- Tests for the setUnderline() method in the
+ StyleConstants class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.StyleConstants;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+
+/**
+ * Some checks for the setUnderline() method in the {@link StyleConstants}
+ * class.
+ */
+public class setUnderline implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ SimpleAttributeSet s = new SimpleAttributeSet();
+
+ // check local setting
+ StyleConstants.setUnderline(s, true);
+ harness.check(StyleConstants.isUnderline(s), true);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ StyleConstants.setUnderline(null, true);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/text/StyleContext/CVS/Entries b/gnu/testlet/javax/swing/text/StyleContext/CVS/Entries
new file mode 100644
index 00000000..9347f456
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/CVS/Entries
@@ -0,0 +1,5 @@
+/NamedStyleInit.java/1.1/Sun Apr 17 21:19:57 2005//
+/NamedStyleSetResolveParent.java/1.1/Sun Apr 17 21:19:57 2005//
+/addAttribute.java/1.1/Sun Apr 17 21:19:57 2005//
+/addStyle.java/1.1/Sun Apr 17 21:19:57 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/StyleContext/CVS/Repository b/gnu/testlet/javax/swing/text/StyleContext/CVS/Repository
new file mode 100644
index 00000000..16685dff
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/StyleContext
diff --git a/gnu/testlet/javax/swing/text/StyleContext/CVS/Root b/gnu/testlet/javax/swing/text/StyleContext/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/StyleContext/NamedStyleInit.java b/gnu/testlet/javax/swing/text/StyleContext/NamedStyleInit.java
new file mode 100644
index 00000000..e7157d3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/NamedStyleInit.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.text.StyleContext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.StyleContext;
+import javax.swing.text.SimpleAttributeSet;
+
+public class NamedStyleInit implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StyleContext.NamedStyle");
+ StyleContext sc = new StyleContext();
+
+ try
+ {
+ StyleContext.NamedStyle ns = sc.new NamedStyle("key", null);
+ h.check(true);
+ }
+ catch (NullPointerException ex)
+ {
+ h.fail("StyledContext.NamedValue(String, AttributeSet) must accept null values");
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/StyleContext/NamedStyleSetResolveParent.java b/gnu/testlet/javax/swing/text/StyleContext/NamedStyleSetResolveParent.java
new file mode 100644
index 00000000..00652c70
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/NamedStyleSetResolveParent.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.text.StyleContext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.StyleContext;
+import javax.swing.text.SimpleAttributeSet;
+
+public class NamedStyleSetResolveParent implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StyleContext.NamedStyle");
+ StyleContext sc = new StyleContext();
+
+ try
+ {
+ StyleContext.NamedStyle ns = sc.new NamedStyle("key", null);
+ ns.setResolveParent(null);
+ h.check(true);
+ }
+ catch (NullPointerException ex)
+ {
+ h.fail("StyledContext.NamedValue.setResolveParent() must accept null values");
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/StyleContext/addAttribute.java b/gnu/testlet/javax/swing/text/StyleContext/addAttribute.java
new file mode 100644
index 00000000..de9f43cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/addAttribute.java
@@ -0,0 +1,49 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.text.StyleContext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.StyleContext;
+import javax.swing.text.SimpleAttributeSet;
+
+public class addAttribute implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StyleContext");
+ StyleContext sc = new StyleContext();
+ SimpleAttributeSet as = new SimpleAttributeSet();
+
+ try
+ {
+ sc.addAttribute(as, "key", null);
+ h.fail("StyleContext.addAttribute must not accept null value");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/StyleContext/addStyle.java b/gnu/testlet/javax/swing/text/StyleContext/addStyle.java
new file mode 100644
index 00000000..029e617c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyleContext/addStyle.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.text.StyleContext;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.StyleContext;
+import javax.swing.text.SimpleAttributeSet;
+
+public class addStyle implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("StyleContext.addStyle");
+ StyleContext sc = new StyleContext();
+
+ try
+ {
+ sc.addStyle("key", null);
+ h.check(true);
+ }
+ catch (NullPointerException ex)
+ {
+ h.fail("StyleContext.addStyle must accept null value");
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Entries b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Entries
new file mode 100644
index 00000000..2d997e0b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Entries
@@ -0,0 +1,2 @@
+/createInputAttributesTest.java/1.1/Mon Dec 19 17:22:25 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Repository b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Repository
new file mode 100644
index 00000000..d75470a0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/StyledEditorKit
diff --git a/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Root b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyledEditorKit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java b/gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java
new file mode 100644
index 00000000..9edfa138
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/StyledEditorKit/createInputAttributesTest.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.text.StyledEditorKit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.*;
+import javax.swing.text.html.*;
+
+/**
+ * Checks if createInputAttributes clears the set
+ * before adding the new Attributes.
+ */
+public class createInputAttributesTest extends StyledEditorKit implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MutableAttributeSet mas = new SimpleAttributeSet();
+ mas.addAttribute("A", "B");
+ HTMLDocument h = new HTMLDocument();
+ Element e = h.getDefaultRootElement();
+ createInputAttributes(e, mas);
+ harness.check(mas.getAttribute("A") == null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/CVS/Entries b/gnu/testlet/javax/swing/text/TabSet/CVS/Entries
new file mode 100644
index 00000000..7a3dff4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/CVS/Entries
@@ -0,0 +1,8 @@
+/constructor.java/1.1/Tue Jul 25 09:23:22 2006//
+/equals.java/1.1/Tue Jul 25 09:23:22 2006//
+/getTab.java/1.1/Tue Jul 25 09:23:22 2006//
+/getTabCount.java/1.1/Tue Jul 25 09:23:22 2006//
+/getTabIndex.java/1.1/Tue Jul 25 09:23:22 2006//
+/getTabIndexAfter.java/1.1/Tue Jul 25 09:23:22 2006//
+/toString.java/1.1/Tue Jul 25 09:23:22 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/TabSet/CVS/Repository b/gnu/testlet/javax/swing/text/TabSet/CVS/Repository
new file mode 100644
index 00000000..38dbcf7c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/TabSet
diff --git a/gnu/testlet/javax/swing/text/TabSet/CVS/Root b/gnu/testlet/javax/swing/text/TabSet/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/TabSet/constructor.java b/gnu/testlet/javax/swing/text/TabSet/constructor.java
new file mode 100644
index 00000000..6d207ec7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/constructor.java
@@ -0,0 +1,63 @@
+/* constructor.java -- some checks for the constructor in the TabSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDk1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ TabStop ts2 = new TabStop(2.0f);
+ TabStop ts3 = new TabStop(3.0f);
+ TabStop[] tabs = new TabStop[] {ts1, ts2, ts3};
+ TabSet s = new TabSet(tabs);
+ harness.check(s.getTabCount(), 3);
+ harness.check(s.getTab(0), ts1);
+ harness.check(s.getTab(1), ts2);
+ harness.check(s.getTab(2), ts3);
+
+ // try modifying the original tab array
+ TabStop ts4 = new TabStop(4.0f);
+ tabs[1] = ts4;
+ harness.check(s.getTab(1), ts2);
+
+ // what if the original array is not ordered?
+ TabStop[] tabs2 = new TabStop[] {ts1, ts3, ts2};
+ TabSet s2 = new TabSet(tabs2);
+ harness.check(s2.getTabCount(), 3);
+ harness.check(s2.getTab(0), ts1);
+ harness.check(s2.getTab(1), ts3);
+ harness.check(s2.getTab(2), ts2);
+
+ // try null
+ s2 = new TabSet(null);
+ harness.check(s2.getTabCount(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/equals.java b/gnu/testlet/javax/swing/text/TabSet/equals.java
new file mode 100644
index 00000000..6d9b9cc0
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/equals.java
@@ -0,0 +1,58 @@
+/* equals.java -- some checks for the equals() method in the TabSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.5
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+public class equals implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabSet tsA = new TabSet(null);
+ TabSet tsB = new TabSet(null);
+ harness.check(tsA.equals(tsB));
+
+ tsA = new TabSet(new TabStop[] {});
+ tsB = new TabSet(new TabStop[] {});
+ harness.check(tsA.equals(tsB));
+
+ tsA = new TabSet(new TabStop[] {new TabStop(1.0f)});
+ tsB = new TabSet(new TabStop[] {new TabStop(1.0f)});
+ harness.check(tsA.equals(tsB));
+
+ tsA = new TabSet(new TabStop[] {new TabStop(1.1f, TabStop.ALIGN_CENTER,
+ TabStop.LEAD_DOTS)});
+ harness.check(!tsA.equals(tsB));
+ tsB = new TabSet(new TabStop[] {new TabStop(1.1f, TabStop.ALIGN_CENTER,
+ TabStop.LEAD_DOTS)});
+ harness.check(tsA.equals(tsB));
+
+ harness.check(!tsA.equals(null));
+ harness.check(!tsA.equals("a string"));
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/getTab.java b/gnu/testlet/javax/swing/text/TabSet/getTab.java
new file mode 100644
index 00000000..286b329f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/getTab.java
@@ -0,0 +1,71 @@
+/* getTab.java -- some checks for the getTab() method in the TabSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+public class getTab implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ TabStop ts2 = new TabStop(2.0f);
+ TabStop ts3 = new TabStop(3.0f);
+ TabStop[] tabs = new TabStop[] {ts1, ts2, ts3};
+ TabSet s = new TabSet(tabs);
+ harness.check(s.getTabCount(), 3);
+ harness.check(s.getTab(0), ts1);
+ harness.check(s.getTab(1), ts2);
+ harness.check(s.getTab(2), ts3);
+
+ // try negative
+ boolean pass = false;
+ try
+ {
+ s.getTab(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // try too large
+ pass = false;
+ try
+ {
+ s.getTab(3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/getTabCount.java b/gnu/testlet/javax/swing/text/TabSet/getTabCount.java
new file mode 100644
index 00000000..993c90d5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/getTabCount.java
@@ -0,0 +1,47 @@
+/* getTabCount.java -- some checks for the getTabCount() method in the TabSet
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+public class getTabCount implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ TabStop ts2 = new TabStop(2.0f);
+ TabStop ts3 = new TabStop(3.0f);
+ TabStop[] tabs = new TabStop[] {ts1, ts2, ts3};
+ TabSet s = new TabSet(tabs);
+ harness.check(s.getTabCount(), 3);
+
+ harness.check(new TabSet(null).getTabCount(), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/getTabIndex.java b/gnu/testlet/javax/swing/text/TabSet/getTabIndex.java
new file mode 100644
index 00000000..a0f48e15
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/getTabIndex.java
@@ -0,0 +1,50 @@
+/* getTabIndex.java -- some checks for the getTabIndex() method in the TabSet
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getTabIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ TabStop ts2 = new TabStop(2.0f);
+ TabStop ts3 = new TabStop(3.0f);
+ TabStop[] tabs = new TabStop[] {ts1, ts2, ts3};
+ TabSet s = new TabSet(tabs);
+ harness.check(s.getTabIndex(ts1), 0);
+ harness.check(s.getTabIndex(ts2), 1);
+ harness.check(s.getTabIndex(ts3), 2);
+
+ harness.check(s.getTabIndex(new TabStop(2.0f)), -1);
+
+ harness.check(s.getTabIndex(null), -1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/getTabIndexAfter.java b/gnu/testlet/javax/swing/text/TabSet/getTabIndexAfter.java
new file mode 100644
index 00000000..aeea4ca1
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/getTabIndexAfter.java
@@ -0,0 +1,52 @@
+/* getTabIndexAfter.java -- some checks for the getTabIndexAfter() method in
+ the TabSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getTabIndexAfter implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ TabStop ts2 = new TabStop(2.0f);
+ TabStop ts3 = new TabStop(3.0f);
+ TabStop[] tabs = new TabStop[] {ts1, ts2, ts3};
+ TabSet s = new TabSet(tabs);
+ harness.check(s.getTabIndexAfter(-1.0f), 0);
+ harness.check(s.getTabIndexAfter(0.0f), 0);
+ harness.check(s.getTabIndexAfter(0.5f), 0);
+ harness.check(s.getTabIndexAfter(1.0f), 0);
+ harness.check(s.getTabIndexAfter(1.5f), 1);
+ harness.check(s.getTabIndexAfter(2.0f), 1);
+ harness.check(s.getTabIndexAfter(2.5f), 2);
+ harness.check(s.getTabIndexAfter(3.0f), 2);
+ harness.check(s.getTabIndexAfter(3.5f), -1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabSet/toString.java b/gnu/testlet/javax/swing/text/TabSet/toString.java
new file mode 100644
index 00000000..fbff4529
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabSet/toString.java
@@ -0,0 +1,48 @@
+/* toString.java -- some checks for the toString() method in the TabSet class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabSet;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabSet;
+import javax.swing.text.TabStop;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabSet s = new TabSet(null);
+ harness.check(s.toString(), "[ ]");
+
+ s = new TabSet(new TabStop[] {});
+ harness.check(s.toString(), "[ ]");
+
+ s = new TabSet(new TabStop[] {new TabStop(1.0f)});
+ harness.check(s.toString(), "[ tab @1.0 ]");
+
+ s = new TabSet(new TabStop[] {new TabStop(1.0f), new TabStop(2.0f)});
+ harness.check(s.toString(), "[ tab @1.0 - tab @2.0 ]");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TabStop/CVS/Entries b/gnu/testlet/javax/swing/text/TabStop/CVS/Entries
new file mode 100644
index 00000000..7f5e9937
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabStop/CVS/Entries
@@ -0,0 +1,3 @@
+/constructors.java/1.1/Tue Jul 25 09:23:23 2006//
+/toString.java/1.1/Tue Jul 25 09:23:23 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/TabStop/CVS/Repository b/gnu/testlet/javax/swing/text/TabStop/CVS/Repository
new file mode 100644
index 00000000..5cceff8e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabStop/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/TabStop
diff --git a/gnu/testlet/javax/swing/text/TabStop/CVS/Root b/gnu/testlet/javax/swing/text/TabStop/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabStop/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/TabStop/constructors.java b/gnu/testlet/javax/swing/text/TabStop/constructors.java
new file mode 100644
index 00000000..a2a2642f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabStop/constructors.java
@@ -0,0 +1,73 @@
+/* constructors.java -- some checks for the constructors in the TabStop class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabStop;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabStop;
+
+public class constructors implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("(float)");
+ TabStop ts1 = new TabStop(1.0f);
+ harness.check(ts1.getPosition(), 1.0f);
+ harness.check(ts1.getAlignment(), TabStop.ALIGN_LEFT);
+ harness.check(ts1.getLeader(), TabStop.LEAD_NONE);
+
+ // try negative
+ ts1 = new TabStop(-1.0f);
+ harness.check(ts1.getPosition(), -1.0f);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(float, int, int)");
+ TabStop ts1 = new TabStop(1.0f, TabStop.ALIGN_DECIMAL, TabStop.LEAD_DOTS);
+ harness.check(ts1.getPosition(), 1.0f);
+ harness.check(ts1.getAlignment(), TabStop.ALIGN_DECIMAL);
+ harness.check(ts1.getLeader(), TabStop.LEAD_DOTS);
+
+ // try bad alignment
+ ts1 = new TabStop(1.0f, 99, TabStop.LEAD_DOTS);
+ harness.check(ts1.getPosition(), 1.0f);
+ harness.check(ts1.getAlignment(), 99);
+ harness.check(ts1.getLeader(), TabStop.LEAD_DOTS);
+
+ // try bad lead
+ ts1 = new TabStop(1.0f, TabStop.ALIGN_DECIMAL, 99);
+ harness.check(ts1.getPosition(), 1.0f);
+ harness.check(ts1.getAlignment(), TabStop.ALIGN_DECIMAL);
+ harness.check(ts1.getLeader(), 99);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/TabStop/toString.java b/gnu/testlet/javax/swing/text/TabStop/toString.java
new file mode 100644
index 00000000..925e39df
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TabStop/toString.java
@@ -0,0 +1,48 @@
+/* toString.java -- some checks for the toString() method in the TabStop class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.javax.swing.text.TabStop;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.TabStop;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TabStop ts1 = new TabStop(1.0f);
+ harness.check(ts1.toString(), "tab @1.0");
+ ts1 = new TabStop(2.0f, TabStop.ALIGN_RIGHT, TabStop.LEAD_EQUALS);
+ harness.check(ts1.toString(), "right tab @2.0 (w/leaders)");
+ ts1 = new TabStop(10.999f, TabStop.ALIGN_CENTER, TabStop.LEAD_HYPHENS);
+ harness.check(ts1.toString(), "center tab @10.999 (w/leaders)");
+ ts1 = new TabStop(3.3f, TabStop.ALIGN_BAR, TabStop.LEAD_NONE);
+ harness.check(ts1.toString(), "bar tab @3.3");
+ ts1 = new TabStop(3.3f, TabStop.ALIGN_DECIMAL, TabStop.LEAD_UNDERLINE);
+ harness.check(ts1.toString(), "decimal tab @3.3 (w/leaders)");
+ ts1 = new TabStop(3.3f, 99, 666);
+ harness.check(ts1.toString(), "tab @3.3 (w/leaders)");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/TextAction/CVS/Entries b/gnu/testlet/javax/swing/text/TextAction/CVS/Entries
new file mode 100644
index 00000000..6669e590
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TextAction/CVS/Entries
@@ -0,0 +1,2 @@
+/augmentList.java/1.2/Sun Feb 12 13:34:17 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/TextAction/CVS/Repository b/gnu/testlet/javax/swing/text/TextAction/CVS/Repository
new file mode 100644
index 00000000..23cc000b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TextAction/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/TextAction
diff --git a/gnu/testlet/javax/swing/text/TextAction/CVS/Root b/gnu/testlet/javax/swing/text/TextAction/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TextAction/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/TextAction/augmentList.java b/gnu/testlet/javax/swing/text/TextAction/augmentList.java
new file mode 100644
index 00000000..a41dcdd4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/TextAction/augmentList.java
@@ -0,0 +1,140 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+// Copyright (C) 2006 Mark Wielaard <mark@klomp.org>
+
+// 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.javax.swing.text.TextAction;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.awt.event.ActionEvent;
+import javax.swing.Action;
+import javax.swing.text.TextAction;
+
+public class augmentList
+ implements Testlet
+{
+ private class TestAction extends TextAction
+ {
+ public TestAction(String name)
+ {
+ super(name);
+ }
+
+ public void actionPerformed(ActionEvent event)
+ {
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ boolean ok;
+ Action[] result = null;
+ TextAction[] empty = new TextAction[0];
+ TextAction[] nullArray = new TextAction[2];
+ nullArray[0] = null;
+ nullArray[1] = null;
+ TextAction[] data = new TextAction[2];
+ data[0] = new TestAction("test 1");
+ data[1] = new TestAction("test 2");
+
+ ok = false;
+
+ try
+ {
+ result = TextAction.augmentList(null, null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ h.check(ok, "invalid arguments");
+
+ ok = false;
+
+ try
+ {
+ result = TextAction.augmentList(empty, null);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ h.check(ok, "invalid arguments");
+
+ ok = false;
+
+ try
+ {
+ result = TextAction.augmentList(null, empty);
+ }
+ catch (NullPointerException e)
+ {
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ h.check(ok, "invalid arguments");
+
+ ok = false;
+
+ try
+ {
+ result = TextAction.augmentList(empty, empty);
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ h.check(ok, "invalid arguments");
+ h.check(result.length, 0, "invalid array length");
+
+ ok = false;
+
+ try
+ {
+ result = TextAction.augmentList(data, data);
+ ok = true;
+ }
+ catch (Exception e)
+ {
+ }
+
+ // The length is guaranteed, and so is the content, but not the order.
+ h.check(ok, "arguments");
+ h.check(result.length, 2, "array length");
+
+ h.check(result[0] == data[0] || result[0] == data[1], "content");
+ h.check(result[1] == data[0] || result[1] == data[1], "content");
+ h.check(result[0] != result[1], "content");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/Utilities/CVS/Entries b/gnu/testlet/javax/swing/text/Utilities/CVS/Entries
new file mode 100644
index 00000000..e2309f21
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/CVS/Entries
@@ -0,0 +1,5 @@
+/getNextWord.java/1.2/Sat May 13 11:00:14 2006//
+/getPreviousWord.java/1.2/Sat May 13 11:00:14 2006//
+/getTabbedTextOffset.java/1.2/Thu Apr 27 16:28:53 2006//
+/getWordStart.java/1.1/Sat May 13 11:00:14 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/Utilities/CVS/Repository b/gnu/testlet/javax/swing/text/Utilities/CVS/Repository
new file mode 100644
index 00000000..9ff96625
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/Utilities
diff --git a/gnu/testlet/javax/swing/text/Utilities/CVS/Root b/gnu/testlet/javax/swing/text/Utilities/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/Utilities/getNextWord.java b/gnu/testlet/javax/swing/text/Utilities/getNextWord.java
new file mode 100644
index 00000000..08242f35
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/getNextWord.java
@@ -0,0 +1,127 @@
+/* getNextWord.java
+ Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Utilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTextField;
+
+import javax.swing.text.Utilities;
+import javax.swing.text.BadLocationException;
+
+public class getNextWord implements Testlet
+{
+ String text1 = "GNU Classpath, Essential Libraries for Java, " +
+ "is a GNU project to create free core class " +
+ "libraries for use with virtual machines and " +
+ "compilers for the java programming language.";
+
+ JTextField tf = new JTextField(text1);
+
+ int[] expected1 = new int[] { 0, 4, 13, 15, 25, 35, 39, 43, 45, 48, 50, 54,
+ 62, 65, 72, 77, 82, 88, 98, 102, 106, 111, 119,
+ 128, 132, 142, 146, 150, 155, 167, 175 };
+
+ String text2 = "foo 333 . **777.1)/&";
+
+ int[] expected2 = new int[] { 0, 4, 8, 10, 11, 12, 17, 18, 19 };
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ int pos = 0;
+
+ // At first Utilities.getNextWord() has to return the correct offsets
+ // for the given text.
+ harness.checkPoint("indices");
+ try
+ {
+ for ( int i=0; i < expected1.length - 1; i++)
+ harness.check(Utilities.getNextWord(tf, expected1[i]), expected1[i+1]);
+ }
+ catch (BadLocationException ble)
+ {
+ ble.printStackTrace();
+ harness.verbose("index: " + ble.offsetRequested());
+ harness.fail("BadLocationException occurred!");
+ }
+
+ // Given an offset >= 175 the method should throw a BadLocationException
+ // as there are no more words.
+ harness.checkPoint("exception");
+ boolean correctException = false;
+ try
+ {
+ Utilities.getNextWord(tf, 175);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ correctException = false;
+ try
+ {
+ Utilities.getNextWord(tf, 176);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ correctException = false;
+ try
+ {
+ Utilities.getNextWord(tf, 177);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ tf.setText(text2);
+ harness.checkPoint("indices-tricky");
+ try
+ {
+ for ( int i=0; i < expected2.length - 1; i++)
+ harness.check(Utilities.getNextWord(tf, expected2[i]), expected2[i+1]);
+ }
+ catch (BadLocationException ble)
+ {
+ ble.printStackTrace();
+ harness.verbose("index: " + ble.offsetRequested());
+ harness.fail("BadLocationException occurred!");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java b/gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java
new file mode 100644
index 00000000..837bdcbb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/getPreviousWord.java
@@ -0,0 +1,128 @@
+/* getPreviousWord.java
+ Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Utilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTextField;
+
+import javax.swing.text.Utilities;
+import javax.swing.text.BadLocationException;
+
+public class getPreviousWord implements Testlet
+{
+ String text1 = "GNU Classpath, Essential Libraries for Java, " +
+ "is a GNU project to create free core class " +
+ "libraries for use with virtual machines and " +
+ "compilers for the java programming language.";
+
+ JTextField tf = new JTextField(text1);
+
+ int[] expected1 = new int[] { 176, 175, 167, 155, 150, 146, 142, 132, 128,
+ 119, 111, 106, 102, 98, 88, 82, 77, 72, 65, 62,
+ 54, 50, 48, 45, 43, 39, 35, 25, 15, 13, 4, 0
+ };
+
+ String text2 = "foo 333 . **777.1)/&";
+
+ int[] expected2 = new int[] { 19, 18, 17, 12, 11, 10, 8, 4, 0 };
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // At first Utilities.getNextWord() has to return the correct offsets
+ // for the given text.
+ harness.checkPoint("indices-normal");
+ try
+ {
+ for ( int i=0; i < expected1.length - 1; i++)
+ harness.check(Utilities.getPreviousWord(tf, expected1[i]), expected1[i+1]);
+ }
+ catch (BadLocationException ble)
+ {
+ ble.printStackTrace();
+ harness.verbose("index: " + ble.offsetRequested());
+ harness.fail("BadLocationException occurred!");
+ }
+
+ // Given an offset > text.length() the method should throw a
+ // BadLocationException.
+ harness.checkPoint("exception");
+ boolean correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, 180);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ // Given an offset <= 0 the method should throw a
+ // BadLocationException..
+ correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, 0);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, -1);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ // Do the index check again with a more complicated text.
+ tf.setText(text2);
+ harness.checkPoint("indices-tricky");
+ try
+ {
+ for ( int i=0; i < expected2.length - 1; i++)
+ harness.check(Utilities.getPreviousWord(tf, expected2[i]), expected2[i+1]);
+ }
+ catch (BadLocationException ble)
+ {
+ ble.printStackTrace();
+ harness.verbose("index: " + ble.offsetRequested());
+ harness.fail("BadLocationException occurred!");
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java b/gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java
new file mode 100644
index 00000000..7390d427
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/getTabbedTextOffset.java
@@ -0,0 +1,139 @@
+/* getTabbedTextOffset.java
+ Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Utilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Font;
+import java.awt.FontMetrics;
+
+import javax.swing.text.Segment;
+import javax.swing.text.Utilities;
+
+public class getTabbedTextOffset implements Testlet
+{
+
+
+ static FontMetrics fm = new TestFontMetrics();
+
+ // Since every character in the TestFontMetrics has the same width it does
+ // not matter which text we use. We only need lots of characters.
+ static Segment s = createSegment("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ + "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ + "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // The x value that has to be reached before getTabbedTextOffset stops.
+ int endX = 50;
+
+ harness.checkPoint("without rounding");
+ for (int i=0; i <= endX; i++)
+ harness.check(calculate(i, false), expectWithoutRounding(i));
+
+ harness.checkPoint("with rounding");
+ for (int i=0; i <= endX; i++)
+ harness.check(calculate(i, true), expectWithRounding(i));
+
+ harness.checkPoint("with rounding (implicit)");
+ for (int i=0; i <= endX; i++)
+ harness.check(calculate(i), expectWithRounding(i));
+
+ }
+
+ static int calculate(int index)
+ {
+ // This just checks that the variant of the method without the rounding
+ // parameter calls the other one with round=true.
+ return Utilities.getTabbedTextOffset(s, fm, 0, index, null, 0);
+ }
+
+
+ static int calculate(int index, boolean round)
+ {
+ // The test does not care about the start offset or an x value != 0
+ // as they should only shift the results.
+ return Utilities.getTabbedTextOffset(s, fm, 0, index, null, 0, round);
+ }
+
+ /** Returns the expected value when rounding is not active. */
+ static int expectWithoutRounding(int index)
+ {
+ return index / 10;
+ }
+
+ /** Returns the expected value when rounding is active. */
+ static int expectWithRounding(int index)
+ {
+ return (index + 5)/10;
+ }
+
+ static Segment createSegment(String foo)
+ {
+ return new Segment(foo.toCharArray(), 0, foo.length());
+ }
+
+ // A very simple FontMetrics implementation for use with the test.
+ static class TestFontMetrics extends FontMetrics
+ {
+
+ public TestFontMetrics()
+ {
+ super(new Font(null, 0, 10));
+ }
+
+ public int getAscent()
+ {
+ return 10;
+ }
+
+ public int getLeading()
+ {
+ return 10;
+ }
+
+ public int getMaxAdvance()
+ {
+ return 10;
+ }
+
+ public int charWidth(char ch)
+ {
+ return 10;
+ }
+
+ public int charsWidth(char[] a, int offs, int len)
+ {
+ return len*10;
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/Utilities/getWordStart.java b/gnu/testlet/javax/swing/text/Utilities/getWordStart.java
new file mode 100644
index 00000000..9b57179a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/Utilities/getWordStart.java
@@ -0,0 +1,123 @@
+/* getPreviousWord.java
+ Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.2
+
+package gnu.testlet.javax.swing.text.Utilities;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.JTextField;
+
+import javax.swing.text.Utilities;
+import javax.swing.text.BadLocationException;
+
+public class getWordStart implements Testlet
+{
+ String text = "GNU Classpath, Essential Libraries for Java, " +
+ "is a GNU project to create free core class " +
+ "libraries for use with virtual machines and " +
+ "compilers for the java programming language.";
+
+ JTextField tf = new JTextField(text);
+
+ int[] expected = new int[] { 0, 0, 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 14,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 24, 25, 25,
+ 25, 25, 25, 25, 25, 25, 25, 34, 35, 35, 35, 38,
+ 39, 39, 39, 39, 43, 44, 45, 45, 47, 48, 49, 50,
+ 50, 50, 53, 54, 54, 54, 54, 54, 54, 54, 61, 62,
+ 62, 64, 65, 65, 65, 65, 65, 65, 71, 72, 72, 72,
+ 72, 76, 77, 77, 77, 77, 81, 82, 82, 82, 82, 82,
+ 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 97, 98,
+ 98, 98, 101, 102, 102, 102, 105, 106, 106, 106,
+ 106, 110, 111, 111, 111, 111, 111, 111, 111,
+ 118, 119, 119, 119, 119, 119, 119, 119, 119,
+ 127, 128, 128, 128, 131, 132, 132, 132, 132,
+ 132, 132, 132, 132, 132, 141, 142, 142, 142,
+ 145, 146, 146, 146, 149, 150, 150, 150, 150,
+ 154, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 166, 167, 167, 167, 167, 167,
+ 167, 167, 167, 175, 175
+ };
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ // At first Utilities.getNextWord() has to return the correct offsets
+ // for the given text.
+ harness.checkPoint("indices");
+ try
+ {
+ for ( int i=0; i <= text.length(); i++)
+ harness.check(Utilities.getWordStart(tf, i), expected[i]);
+ }
+ catch (BadLocationException ble)
+ {
+ ble.printStackTrace();
+ harness.verbose("index: " + ble.offsetRequested());
+ harness.fail("BadLocationException occurred!");
+ }
+
+ // Given an offset > text.length() the method should throw a
+ // BadLocationException.
+ harness.checkPoint("exception");
+ boolean correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, 180);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ // Given an offset <= 0 the method should throw a
+ // BadLocationException..
+ correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, 0);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+
+ correctException = false;
+ try
+ {
+ Utilities.getPreviousWord(tf, -1);
+ }
+ catch (Exception e)
+ {
+ correctException = e instanceof BadLocationException;
+ }
+ harness.check(correctException);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/View/CVS/Entries b/gnu/testlet/javax/swing/text/View/CVS/Entries
new file mode 100644
index 00000000..9ef05a12
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/CVS/Entries
@@ -0,0 +1,6 @@
+/TestView.java/1.1/Thu Feb 9 11:58:15 2006//
+/getAlignment.java/1.1/Thu Feb 9 11:58:15 2006//
+/getMaximumSpan.java/1.2/Fri Jul 28 11:03:23 2006//
+/getMinimumSpan.java/1.1/Thu Feb 9 11:58:15 2006//
+/getResizeWeight.java/1.1/Thu Feb 9 11:58:15 2006//
+D
diff --git a/gnu/testlet/javax/swing/text/View/CVS/Repository b/gnu/testlet/javax/swing/text/View/CVS/Repository
new file mode 100644
index 00000000..6f8112ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/View
diff --git a/gnu/testlet/javax/swing/text/View/CVS/Root b/gnu/testlet/javax/swing/text/View/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/View/TestView.java b/gnu/testlet/javax/swing/text/View/TestView.java
new file mode 100644
index 00000000..f105bd47
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/TestView.java
@@ -0,0 +1,93 @@
+/* TestView.java -- A concrete View implementation for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.View;
+
+import java.awt.Graphics;
+import java.awt.Shape;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+import javax.swing.text.Position.Bias;
+
+/**
+ * A concrete View implementation for testing.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class TestView extends View
+{
+
+ /**
+ * This will be returned by getPreferredSpan for X_AXIS or Y_AXIS.
+ */
+ public float preferred[] = new float[]{ 100F, 100F };
+
+ /**
+ * Creates a new test view by fetching an element from PlainView.
+ */
+ public TestView()
+ {
+ super(createDummyElement());
+ }
+
+ /**
+ * Creates a dummy element for testing.
+ *
+ * @return a dummy element for testing
+ */
+ static Element createDummyElement()
+ {
+ PlainDocument doc = new PlainDocument();
+ return doc.getDefaultRootElement();
+ }
+
+ public void paint(Graphics g, Shape s)
+ {
+ // Not needed in testing.
+ }
+
+ /**
+ * Implemented to return the values in above array.
+ */
+ public float getPreferredSpan(int axis)
+ {
+ return preferred[axis];
+ }
+
+ public Shape modelToView(int pos, Shape a, Bias b)
+ throws BadLocationException
+ {
+ // Not used in testing.
+ return null;
+ }
+
+ public int viewToModel(float x, float y, Shape a, Bias[] b)
+ {
+ // Not used in testing.
+ return 0;
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/View/getAlignment.java b/gnu/testlet/javax/swing/text/View/getAlignment.java
new file mode 100644
index 00000000..0c509b81
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/getAlignment.java
@@ -0,0 +1,55 @@
+/* getAlignment.java -- Tests the default getAlignment() implementation
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestView
+
+package gnu.testlet.javax.swing.text.View;
+
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the default getAlignment() implementation in View.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getAlignment implements Testlet
+{
+
+ /**
+ * The entry point for this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestView v = new TestView();
+ harness.check(v.getAlignment(View.X_AXIS), 0.5F);
+ harness.check(v.getAlignment(View.Y_AXIS), 0.5F);
+ // Try two illegal values.
+ harness.check(v.getAlignment(-1), 0.5F);
+ harness.check(v.getAlignment(123), 0.5F);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/View/getMaximumSpan.java b/gnu/testlet/javax/swing/text/View/getMaximumSpan.java
new file mode 100644
index 00000000..48fb0d8c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/getMaximumSpan.java
@@ -0,0 +1,109 @@
+/* getMaxnimumSpan.java -- Tests the maximumSpan default implementation
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestView
+
+package gnu.testlet.javax.swing.text.View;
+
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the getMaximumSpan() default implementation.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getMaximumSpan implements Testlet
+{
+
+ /**
+ * A subclass of TestView that allows to customize the resizeWeight.
+ */
+ private class PositiveResizeWeightView extends TestView {
+
+ int resizeWeight = 0;
+
+ /**
+ * Overridden to return a custom resize weight.
+ *
+ * @return resizeWeight
+ */
+ public int getResizeWeight(int axis) {
+ return resizeWeight;
+ }
+ }
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testXAxis(harness);
+ testYAxis(harness);
+ testPositiveResizeWeight(harness);
+ }
+
+ /**
+ * Tests the default impl for the X_AXIS. This will forward to
+ * getPreferredSpan().
+ *
+ * @param harness the test harness to use
+ */
+ private void testXAxis(TestHarness harness)
+ {
+ TestView v = new TestView();
+ v.preferred[View.X_AXIS] = 123F;
+ harness.check(v.getMaximumSpan(View.X_AXIS), 123F);
+ }
+
+ /**
+ * Tests the default impl for the Y_AXIS. This will forward to
+ * getPreferredSpan().
+ *
+ * @param harness the test harness to use
+ */
+ private void testYAxis(TestHarness harness)
+ {
+ TestView v = new TestView();
+ v.preferred[View.Y_AXIS] = 123F;
+ harness.check(v.getMaximumSpan(View.Y_AXIS), 123F);
+ }
+
+ /**
+ * Tests the maximumSpan with a positive resizeWeight.
+ *
+ * @param harness the test harness to use
+ */
+ private void testPositiveResizeWeight(TestHarness harness)
+ {
+ PositiveResizeWeightView v = new PositiveResizeWeightView();
+ v.resizeWeight = 100;
+ v.preferred[View.X_AXIS] = 123F;
+ v.preferred[View.Y_AXIS] = 123F;
+ harness.check((int) v.getMaximumSpan(View.X_AXIS), Integer.MAX_VALUE);
+ harness.check((int) v.getMaximumSpan(View.Y_AXIS), Integer.MAX_VALUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/View/getMinimumSpan.java b/gnu/testlet/javax/swing/text/View/getMinimumSpan.java
new file mode 100644
index 00000000..b57d233e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/getMinimumSpan.java
@@ -0,0 +1,110 @@
+/* getMinimumSpan.java -- Tests the minimumSpan default implementation
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestView
+
+package gnu.testlet.javax.swing.text.View;
+
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the getMinimumSpan() default implementation.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getMinimumSpan implements Testlet
+{
+
+ /**
+ * A subclass of TestView that allows to customize the resizeWeight.
+ */
+ private class PositiveResizeWeightView extends TestView {
+
+ int resizeWeight = 0;
+
+ /**
+ * Overridden to return a custom resize weight.
+ *
+ * @return resizeWeight
+ */
+ public int getResizeWeight(int axis) {
+ return resizeWeight;
+ }
+ }
+
+ /**
+ * The entry point into this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testXAxis(harness);
+ testYAxis(harness);
+ testPositiveResizeWeight(harness);
+ }
+
+ /**
+ * Tests the default impl for the X_AXIS. This will forward to
+ * getPreferredSpan().
+ *
+ * @param harness the test harness to use
+ */
+ private void testXAxis(TestHarness harness)
+ {
+ TestView v = new TestView();
+ v.preferred[View.X_AXIS] = 123F;
+ harness.check(v.getMinimumSpan(View.X_AXIS), 123F);
+ }
+
+ /**
+ * Tests the default impl for the Y_AXIS. This will forward to
+ * getPreferredSpan().
+ *
+ * @param harness the test harness to use
+ */
+ private void testYAxis(TestHarness harness)
+ {
+ TestView v = new TestView();
+ v.preferred[View.Y_AXIS] = 123F;
+ harness.check(v.getMinimumSpan(View.Y_AXIS), 123F);
+ }
+
+ /**
+ * Tests the minimumSpan with a positive resizeWeight.
+ *
+ * @param harness the test harness to use
+ */
+ private void testPositiveResizeWeight(TestHarness harness)
+ {
+ PositiveResizeWeightView v = new PositiveResizeWeightView();
+ v.resizeWeight = 100;
+ v.preferred[View.X_AXIS] = 123F;
+ v.preferred[View.Y_AXIS] = 123F;
+ harness.check((int) v.getMinimumSpan(View.X_AXIS), 0);
+ harness.check((int) v.getMinimumSpan(View.Y_AXIS), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/View/getResizeWeight.java b/gnu/testlet/javax/swing/text/View/getResizeWeight.java
new file mode 100644
index 00000000..a29002a7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/View/getResizeWeight.java
@@ -0,0 +1,55 @@
+/* getResizeWeight.java -- Tests the default implementation of getResizeWeight
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+// Uses: TestView
+
+package gnu.testlet.javax.swing.text.View;
+
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the default implementation of getResizeWeight().
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class getResizeWeight implements Testlet
+{
+
+ /**
+ * The entry point for this test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ TestView v = new TestView();
+ harness.check(v.getResizeWeight(View.X_AXIS), 0);
+ harness.check(v.getResizeWeight(View.Y_AXIS), 0);
+ // Try two illegal values.
+ harness.check(v.getResizeWeight(-1), 0);
+ harness.check(v.getResizeWeight(123), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/CVS/Entries b/gnu/testlet/javax/swing/text/ZoneView/CVS/Entries
new file mode 100644
index 00000000..ca373841
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/CVS/Entries
@@ -0,0 +1,14 @@
+/TestView.java/1.1/Wed Aug 30 15:22:33 2006//
+/TestZoneView.java/1.2/Wed Aug 30 20:03:33 2006//
+/constructor.java/1.1/Wed Aug 30 15:22:33 2006//
+/createZone.java/1.2/Wed May 21 13:30:50 2008//
+/getMaxZonesLoaded.java/1.1/Wed Aug 30 15:22:33 2006//
+/getMaximumZoneSize.java/1.2/Wed May 21 13:30:50 2008//
+/getViewIndexAtPosition.java/1.2/Wed May 21 13:30:50 2008//
+/isZoneLoaded.java/1.2/Wed May 21 13:30:50 2008//
+/loadChildren.java/1.2/Wed May 21 13:30:50 2008//
+/setMaxZonesLoaded.java/1.2/Wed May 21 13:30:50 2008//
+/setMaximumZoneSize.java/1.2/Wed May 21 13:30:50 2008//
+/unloadZone.java/1.2/Wed May 21 13:30:50 2008//
+/zoneWasLoaded.java/1.2/Wed May 21 13:30:50 2008//
+D
diff --git a/gnu/testlet/javax/swing/text/ZoneView/CVS/Repository b/gnu/testlet/javax/swing/text/ZoneView/CVS/Repository
new file mode 100644
index 00000000..bb128c75
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/ZoneView
diff --git a/gnu/testlet/javax/swing/text/ZoneView/CVS/Root b/gnu/testlet/javax/swing/text/ZoneView/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/ZoneView/TestView.java b/gnu/testlet/javax/swing/text/ZoneView/TestView.java
new file mode 100644
index 00000000..f642ab4d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/TestView.java
@@ -0,0 +1,63 @@
+/* TestView.java -- A view for testing zones
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.BoxView;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+
+public class TestView extends BoxView
+{
+
+ private static final Element DEFAULT_ELEMENT;
+ static
+ {
+ PlainDocument doc = new PlainDocument();
+ Element el = doc.getDefaultRootElement();
+ DEFAULT_ELEMENT = el;
+ }
+
+ boolean removeAllCalled;
+
+ TestView()
+ {
+ this(X_AXIS);
+ }
+
+ TestView(int axis)
+ {
+ this(DEFAULT_ELEMENT, axis);
+ }
+
+ TestView(Element el, int axis)
+ {
+ super(el, axis);
+ }
+
+ public void removeAll()
+ {
+ super.removeAll();
+ removeAllCalled = true;
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java b/gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java
new file mode 100644
index 00000000..798a16f4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/TestZoneView.java
@@ -0,0 +1,109 @@
+/* TestZoneView.java -- A ZoneView subclass for testing
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import java.util.ArrayList;
+
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+import javax.swing.text.ViewFactory;
+import javax.swing.text.ZoneView;
+
+public class TestZoneView extends ZoneView
+{
+
+ private static final Element DEFAULT_ELEMENT;
+ static
+ {
+ PlainDocument doc = new PlainDocument();
+ Element el = doc.getDefaultRootElement();
+ DEFAULT_ELEMENT = el;
+ }
+
+ ArrayList lastUnloadedZones;
+
+ TestZoneView()
+ {
+ this(X_AXIS);
+ }
+
+ TestZoneView(int axis)
+ {
+ this(DEFAULT_ELEMENT, axis);
+ }
+
+ TestZoneView(Element el, int axis)
+ {
+ super(el, axis);
+ lastUnloadedZones = new ArrayList();
+ }
+
+ /**
+ * Overridden to make method publicly accessible.
+ */
+ public void zoneWasLoaded(View zone)
+ {
+ super.zoneWasLoaded(zone);
+ }
+
+ public void unloadZone(View zone)
+ {
+ super.unloadZone(zone);
+ lastUnloadedZones.add(zone);
+ }
+
+ public boolean isZoneLoaded(View z)
+ {
+ return super.isZoneLoaded(z);
+ }
+
+ public View createZone(int p0, int p1)
+ {
+ return super.createZone(p0, p1);
+ }
+
+ public int getViewIndexAtPosition(int pos)
+ {
+ return super.getViewIndexAtPosition(pos);
+ }
+
+ public void loadChildren(ViewFactory vf)
+ {
+ super.loadChildren(vf);
+ }
+
+ public ViewFactory getViewFactory()
+ {
+ return new ViewFactory()
+ {
+
+ public View create(Element elem)
+ {
+ return new TestView(elem, View.X_AXIS);
+ }
+
+ };
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/constructor.java b/gnu/testlet/javax/swing/text/ZoneView/constructor.java
new file mode 100644
index 00000000..f1d39430
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/constructor.java
@@ -0,0 +1,68 @@
+/* constructor.java -- Tests the constructor of ZoneView
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+import javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class constructor implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testSimple(harness);
+ testDefaultValues(harness);
+ }
+
+ /**
+ * Some very simple tests.
+ *
+ * @param h the test harness
+ */
+ private void testSimple(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ Element el = doc.getDefaultRootElement();
+ ZoneView zv = new ZoneView(el, View.X_AXIS);
+ h.check(zv.getAxis(), View.X_AXIS);
+ h.check(zv.getElement(), el);
+ zv = new ZoneView(el, View.Y_AXIS);
+ h.check(zv.getAxis(), View.Y_AXIS);
+ h.check(zv.getElement(), el);
+ }
+
+ private void testDefaultValues(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ Element el = doc.getDefaultRootElement();
+ ZoneView zv = new ZoneView(el, View.X_AXIS);
+ h.check(zv.getMaximumZoneSize(), 8192);
+ h.check(zv.getMaxZonesLoaded(), 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/createZone.java b/gnu/testlet/javax/swing/text/ZoneView/createZone.java
new file mode 100644
index 00000000..6d6d6ce2
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/createZone.java
@@ -0,0 +1,81 @@
+/* createZone.java -- Tests ZoneView.createZone()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.AsyncBoxView;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class createZone implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "123456789", null);
+ }
+ catch (BadLocationException ex)
+ {
+ RuntimeException rte = new RuntimeException();
+ rte.initCause(ex);
+ throw rte;
+ }
+ Element el = doc.getDefaultRootElement();
+ TestZoneView zv = new TestZoneView(el, View.X_AXIS);
+
+ // Try valid zone.
+ View zone = zv.createZone(0, 9);
+ h.check(zone instanceof AsyncBoxView);
+ h.check(zone.getStartOffset(), 0);
+ h.check(zone.getEndOffset(), 9);
+ // Check if the zone follows document insertions (via Positions).
+ try
+ {
+ doc.insertString(5, "abcde", null);
+ }
+ catch (BadLocationException ex)
+ {
+ RuntimeException rte = new RuntimeException();
+ rte.initCause(ex);
+ throw rte;
+ }
+ h.check(zone.getStartOffset(), 0);
+ h.check(zone.getEndOffset(), 14);
+
+ // Try invalid zone. No error is thrown and the zone tracks some more
+ // or less random positions. This is probably due to a bug in the Content
+ // implementation of Sun, but anyway. We don't check the exact positions
+ // here as it doesn't really matter anyway. This is unspecified!
+ zone = zv.createZone(-10, 23);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/getMaxZonesLoaded.java b/gnu/testlet/javax/swing/text/ZoneView/getMaxZonesLoaded.java
new file mode 100644
index 00000000..990404f4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/getMaxZonesLoaded.java
@@ -0,0 +1,62 @@
+/* getMaxZonesLoaded.java -- Checks ZoneView.getMaxZonesLoaded()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+
+import javax.swing.text.ZoneView;
+
+public class getMaxZonesLoaded
+{
+ public void test(TestHarness h)
+ {
+ ZoneView zv = new TestZoneView();
+ // Test legal values.
+ zv.setMaxZonesLoaded(1);
+ h.check(zv.getMaxZonesLoaded(), 1);
+ zv.setMaxZonesLoaded(Integer.MAX_VALUE);
+ h.check(zv.getMaxZonesLoaded(), Integer.MAX_VALUE);
+ // Test illegal values.
+ try
+ {
+ zv.setMaxZonesLoaded(0);
+ h.fail("Should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ h.check(true);
+ }
+ h.check(zv.getMaxZonesLoaded(), Integer.MAX_VALUE);
+ try
+ {
+ zv.setMaxZonesLoaded(Integer.MIN_VALUE);
+ h.fail("Should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ h.check(true);
+ }
+ h.check(zv.getMaxZonesLoaded(), Integer.MAX_VALUE);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java b/gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java
new file mode 100644
index 00000000..946bc040
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/getMaximumZoneSize.java
@@ -0,0 +1,49 @@
+/* getMaximumZoneSize.java -- Tests ZoneView.getMaximumZoneSize()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getMaximumZoneSize implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ZoneView zv = new TestZoneView();
+ h.check(zv.getMaximumZoneSize(), 8192);
+ zv.setMaximumZoneSize(0);
+ h.check(zv.getMaximumZoneSize(), 0);
+ zv.setMaximumZoneSize(1);
+ h.check(zv.getMaximumZoneSize(), 1);
+ zv.setMaximumZoneSize(Integer.MAX_VALUE);
+ h.check(zv.getMaximumZoneSize(), Integer.MAX_VALUE);
+ zv.setMaximumZoneSize(Integer.MIN_VALUE);
+ h.check(zv.getMaximumZoneSize(), Integer.MIN_VALUE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java b/gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java
new file mode 100644
index 00000000..7d332682
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/getViewIndexAtPosition.java
@@ -0,0 +1,76 @@
+/* getViewIndexAtPosition.java -- Checks ZoneViewgetViewIndexAtPosition()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getViewIndexAtPosition implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "0123456789", null);
+ }
+ catch (BadLocationException ex)
+ {
+ RuntimeException rte = new RuntimeException();
+ rte.initCause(ex);
+ throw rte;
+ }
+ Element el = doc.getDefaultRootElement();
+ TestZoneView zv = new TestZoneView(el, View.X_AXIS);
+ zv.append(zv.createZone(0, 3));
+ zv.append(zv.createZone(3, 7));
+ zv.append(zv.createZone(7, 10));
+
+ h.check(zv.getViewIndexAtPosition(-100), -1);
+ h.check(zv.getViewIndexAtPosition(-1), -1);
+ h.check(zv.getViewIndexAtPosition(0), 0);
+ h.check(zv.getViewIndexAtPosition(2), 0);
+ h.check(zv.getViewIndexAtPosition(3), 1);
+ h.check(zv.getViewIndexAtPosition(6), 1);
+ h.check(zv.getViewIndexAtPosition(7), 2);
+ h.check(zv.getViewIndexAtPosition(9), 2);
+ // This is a noteworthy detail: The offset 10 isn't actually covered
+ // by any child view, but the endOffset of the view (11) yields the index
+ // of the last view in the RI. I think this is a bug in Sun's impl as the
+ // method should return -1 if the offset isn't covered by any child view.
+ h.check(zv.getViewIndexAtPosition(10), -1);
+ // The RI does the following:
+ //h.check(zv.getViewIndexAtPosition(11), 2);
+ h.check(zv.getViewIndexAtPosition(11), -1);
+ h.check(zv.getViewIndexAtPosition(100), -1);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java b/gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java
new file mode 100644
index 00000000..fd43ce28
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/isZoneLoaded.java
@@ -0,0 +1,46 @@
+/* isZoneLoaded.java -- Checks ZoneView.isZoneLoaded()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isZoneLoaded implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ // Note that we don't add the view to the ZoneView. The ZoneView
+ // only checks if the view has children.
+ TestZoneView zv = new TestZoneView();
+ // Create a view without children.
+ TestView v = new TestView();
+ h.check(zv.isZoneLoaded(v), false);
+ TestView child = new TestView();
+ v.append(child);
+ h.check(zv.isZoneLoaded(v), true);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/loadChildren.java b/gnu/testlet/javax/swing/text/ZoneView/loadChildren.java
new file mode 100644
index 00000000..b9331b93
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/loadChildren.java
@@ -0,0 +1,106 @@
+/* loadChildren.java -- Tests ZoneView.loadChildren().
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.PlainDocument;
+import javax.swing.text.View;
+import javax.swing.text.AbstractDocument.BranchElement;
+import javax.swing.text.AbstractDocument.LeafElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class loadChildren implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testSimple(harness);
+ testOversize(harness);
+ }
+
+ private void testSimple(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "0123456789", null);
+ }
+ catch (BadLocationException ex)
+ {
+ RuntimeException rte = new RuntimeException();
+ rte.initCause(ex);
+ throw rte;
+ }
+ Element el = doc.getDefaultRootElement();
+ TestZoneView zv = new TestZoneView(el, View.Y_AXIS);
+ zv.loadChildren(zv.getViewFactory());
+ h.check(zv.getViewCount(), 1);
+ View child = zv.getView(0);
+ h.check(child.getStartOffset(), 0);
+ h.check(child.getEndOffset(), el.getEndOffset());
+ }
+
+ private void testOversize(TestHarness h)
+ {
+ PlainDocument doc = new PlainDocument();
+ try
+ {
+ doc.insertString(0, "0123456789", null);
+ }
+ catch (BadLocationException ex)
+ {
+ RuntimeException rte = new RuntimeException();
+ rte.initCause(ex);
+ throw rte;
+ }
+
+ BranchElement el = (BranchElement) doc.getDefaultRootElement();
+ // Modify the element structure a little and seen how the initial
+ // elements are created then.
+ LeafElement el1 = doc.new LeafElement(el, null, 0, 3);
+ LeafElement el2 = doc.new LeafElement(el, null, 3, 7);
+ LeafElement el3 = doc.new LeafElement(el, null, 7, 11);
+ el.replace(0, 1, new Element[]{el1, el2, el3});
+
+
+ TestZoneView zv = new TestZoneView(el, View.Y_AXIS);
+ // Set the maximum zone size somewhere inside the second element.
+ zv.setMaximumZoneSize(5);
+ zv.loadChildren(zv.getViewFactory());
+ h.check(zv.getViewCount(), 3);
+ View child = zv.getView(0);
+ h.check(child.getStartOffset(), 0);
+ h.check(child.getEndOffset(), 3);
+ child = zv.getView(1);
+ h.check(child.getStartOffset(), 3);
+ h.check(child.getEndOffset(), 7);
+ child = zv.getView(2);
+ h.check(child.getStartOffset(), 7);
+ h.check(child.getEndOffset(), 11);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java b/gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java
new file mode 100644
index 00000000..c724b506
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/setMaxZonesLoaded.java
@@ -0,0 +1,98 @@
+/* setMaxZonesLoaded.java -- Tests ZoneView.setMaxZonesLoaded()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setMaxZonesLoaded implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ testSimple(h);
+ testUnloading(h);
+ }
+
+ private void testSimple(TestHarness h)
+ {
+ ZoneView zv = new TestZoneView();
+ // Test legal values.
+ zv.setMaxZonesLoaded(1);
+ h.check(zv.getMaxZonesLoaded(), 1);
+ zv.setMaxZonesLoaded(Integer.MAX_VALUE);
+ h.check(zv.getMaxZonesLoaded(), Integer.MAX_VALUE);
+ // Test illegal values.
+ try
+ {
+ zv.setMaxZonesLoaded(0);
+ h.fail("Should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ h.check(true);
+ }
+ try
+ {
+ zv.setMaxZonesLoaded(Integer.MIN_VALUE);
+ h.fail("Should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ h.check(true);
+ }
+ }
+
+ private void testUnloading(TestHarness h)
+ {
+ TestZoneView zv = new TestZoneView();
+ // Add 4 zones, which are the number of allowed zones.
+ zv.setMaxZonesLoaded(4);
+ TestView v1 = new TestView();
+ zv.zoneWasLoaded(v1);
+ TestView v2 = new TestView();
+ zv.zoneWasLoaded(v2);
+ TestView v3 = new TestView();
+ zv.zoneWasLoaded(v3);
+ TestView v4 = new TestView();
+ zv.zoneWasLoaded(v4);
+ // Zero zones unloaded so far.
+ h.check(zv.lastUnloadedZones.size(), 0);
+ zv.setMaxZonesLoaded(2);
+ // The first two zones are unloaded.
+ h.check(zv.lastUnloadedZones.size(), 2);
+ h.check(zv.lastUnloadedZones.remove(0), v1);
+ h.check(zv.lastUnloadedZones.remove(0), v2);
+ // No zones get unloaded when growing the allowed range.
+ zv.setMaxZonesLoaded(4);
+ h.check(zv.lastUnloadedZones.size(), 0);
+ // The v3 gets unloaded when shrinking to 1.
+ zv.setMaxZonesLoaded(1);
+ h.check(zv.lastUnloadedZones.size(), 1);
+ h.check(zv.lastUnloadedZones.remove(0), v3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java b/gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java
new file mode 100644
index 00000000..a4cd075b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/setMaximumZoneSize.java
@@ -0,0 +1,48 @@
+/* setMaximumZoneSize.java -- Tests ZoneView.setMaximumZoneSize()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class setMaximumZoneSize implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ ZoneView zv = new TestZoneView();
+ zv.setMaximumZoneSize(0);
+ h.check(zv.getMaximumZoneSize(), 0);
+ zv.setMaximumZoneSize(1);
+ h.check(zv.getMaximumZoneSize(), 1);
+ zv.setMaximumZoneSize(Integer.MAX_VALUE);
+ h.check(zv.getMaximumZoneSize(), Integer.MAX_VALUE);
+ zv.setMaximumZoneSize(Integer.MIN_VALUE);
+ h.check(zv.getMaximumZoneSize(), Integer.MIN_VALUE);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/unloadZone.java b/gnu/testlet/javax/swing/text/ZoneView/unloadZone.java
new file mode 100644
index 00000000..0bde6650
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/unloadZone.java
@@ -0,0 +1,54 @@
+/* unloadZone.java -- Tests ZoneView.unloadZone()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestView TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class unloadZone implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ // This method should simply call removeAll() on the zone view.
+ // So we test this.
+ TestZoneView zv = new TestZoneView();
+ TestView v = new TestView();
+ v.removeAllCalled = false;
+ zv.unloadZone(v);
+ h.check(v.removeAllCalled, true);
+ // Also check for null argument.
+ try
+ {
+ zv.unloadZone(null);
+ h.fail("NullPointerException should be thrown");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java b/gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java
new file mode 100644
index 00000000..1967a2ad
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/ZoneView/zoneWasLoaded.java
@@ -0,0 +1,91 @@
+/* zoneWasLoaded.java -- Checks ZoneView.zoneWasLoaded()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.3
+// Uses: TestView TestZoneView
+
+package gnu.testlet.javax.swing.text.ZoneView;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class zoneWasLoaded implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ TestZoneView zv = new TestZoneView();
+ zv.setMaxZonesLoaded(3);
+ TestView v1 = new TestView();
+ zv.lastUnloadedZones.clear();
+ // 3 Zones are allowed to be loaded. So load them and check that none
+ // is unloaded.
+ zv.zoneWasLoaded(v1);
+ h.check(zv.lastUnloadedZones.size(), 0);
+ TestView v2 = new TestView();
+ zv.zoneWasLoaded(v2);
+ h.check(zv.lastUnloadedZones.size(), 0);
+ TestView v3 = new TestView();
+ zv.zoneWasLoaded(v3);
+ h.check(zv.lastUnloadedZones.size(), 0);
+ // After loading this zone, the first one must get unloaded.
+ TestView v4 = new TestView();
+ zv.zoneWasLoaded(v4);
+ h.check(zv.lastUnloadedZones.size(), 1);
+ h.check(zv.lastUnloadedZones.remove(0), v1);
+ // Then the second.
+ TestView v5 = new TestView();
+ zv.zoneWasLoaded(v5);
+ h.check(zv.lastUnloadedZones.size(), 1);
+ h.check(zv.lastUnloadedZones.remove(0), v2);
+ // And then the third.
+ TestView v6 = new TestView();
+ zv.zoneWasLoaded(v6);
+ h.check(zv.lastUnloadedZones.size(), 1);
+ h.check(zv.lastUnloadedZones.remove(0), v3);
+
+ // Also check for null argument.
+ try
+ {
+ // Push out v4, v5 and v6 and see if we get to unload(null) after this.
+ zv.zoneWasLoaded(null);
+ zv.zoneWasLoaded(null);
+ zv.zoneWasLoaded(null);
+ h.check(true);
+ }
+ catch (NullPointerException ex)
+ {
+ h.fail("No NullPointerException should be thrown");
+ }
+ try
+ {
+ // The above statements pushed 3 nulls in there, which get pulled now
+ // and trigger an NPE.
+ zv.zoneWasLoaded(v1);
+ h.fail("NullPointerException should be thrown");
+ }
+ catch (NullPointerException ex)
+ {
+ h.check(true);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/CSS/Attribute.java b/gnu/testlet/javax/swing/text/html/CSS/Attribute.java
new file mode 100644
index 00000000..e9e13b3b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CSS/Attribute.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke (kennke@aicas.com)
+
+// 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.javax.swing.text.html.CSS;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.CSS;
+
+/**
+ * Tests the values of the constants in the inner class Attribute
+ * of javax.swing.text.html.CSS.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class Attribute implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ testAttribute(harness, CSS.Attribute.BACKGROUND, "background", false, null);
+ testAttribute(harness, CSS.Attribute.BACKGROUND_ATTACHMENT, "background-attachment", false, "scroll");
+ testAttribute(harness, CSS.Attribute.BACKGROUND_COLOR, "background-color", false, "transparent");
+ testAttribute(harness, CSS.Attribute.BACKGROUND_IMAGE, "background-image", false, "none");
+ testAttribute(harness, CSS.Attribute.BACKGROUND_POSITION, "background-position", false, null);
+ testAttribute(harness, CSS.Attribute.BACKGROUND_REPEAT, "background-repeat", false, "repeat");
+ testAttribute(harness, CSS.Attribute.BORDER, "border", false, null);
+ testAttribute(harness, CSS.Attribute.BORDER_BOTTOM, "border-bottom", false, null);
+ testAttribute(harness, CSS.Attribute.BORDER_BOTTOM_WIDTH, "border-bottom-width", false, "medium");
+ testAttribute(harness, CSS.Attribute.BORDER_COLOR, "border-color", false, "black");
+ testAttribute(harness, CSS.Attribute.BORDER_LEFT, "border-left", false, null);
+ testAttribute(harness, CSS.Attribute.BORDER_LEFT_WIDTH, "border-left-width", false, "medium");
+ testAttribute(harness, CSS.Attribute.BORDER_RIGHT, "border-right", false, null);
+ testAttribute(harness, CSS.Attribute.BORDER_RIGHT_WIDTH, "border-right-width", false, "medium");
+ testAttribute(harness, CSS.Attribute.BORDER_STYLE, "border-style", false, "none");
+ testAttribute(harness, CSS.Attribute.BORDER_TOP, "border-top", false, null);
+ testAttribute(harness, CSS.Attribute.BORDER_TOP_WIDTH, "border-top-width", false, "medium");
+ testAttribute(harness, CSS.Attribute.BORDER_WIDTH, "border-width", false, "medium");
+ testAttribute(harness, CSS.Attribute.CLEAR, "clear", false, "none");
+ testAttribute(harness, CSS.Attribute.COLOR, "color", true, "black");
+ testAttribute(harness, CSS.Attribute.DISPLAY, "display", false, "block");
+ testAttribute(harness, CSS.Attribute.FLOAT, "float", false, "none");
+ testAttribute(harness, CSS.Attribute.FONT, "font", true, null);
+ testAttribute(harness, CSS.Attribute.FONT_FAMILY, "font-family", true, null);
+ testAttribute(harness, CSS.Attribute.FONT_SIZE, "font-size", true, "medium");
+ testAttribute(harness, CSS.Attribute.FONT_STYLE, "font-style", true, "normal");
+ testAttribute(harness, CSS.Attribute.FONT_VARIANT, "font-variant", true, "normal");
+ testAttribute(harness, CSS.Attribute.FONT_WEIGHT, "font-weight", true, "normal");
+ testAttribute(harness, CSS.Attribute.HEIGHT, "height", false, "auto");
+ testAttribute(harness, CSS.Attribute.LETTER_SPACING, "letter-spacing", true, "normal");
+ testAttribute(harness, CSS.Attribute.LINE_HEIGHT, "line-height", true, "normal");
+ testAttribute(harness, CSS.Attribute.LIST_STYLE, "list-style", true, null);
+ testAttribute(harness, CSS.Attribute.LIST_STYLE_IMAGE, "list-style-image", true, "none");
+ testAttribute(harness, CSS.Attribute.LIST_STYLE_POSITION, "list-style-position", true, "outside");
+ testAttribute(harness, CSS.Attribute.LIST_STYLE_TYPE, "list-style-type", true, "disc");
+ testAttribute(harness, CSS.Attribute.MARGIN, "margin", false, null);
+ testAttribute(harness, CSS.Attribute.MARGIN_BOTTOM, "margin-bottom", false, "0");
+ testAttribute(harness, CSS.Attribute.MARGIN_LEFT, "margin-left", false, "0");
+ testAttribute(harness, CSS.Attribute.MARGIN_RIGHT, "margin-right", false, "0");
+ testAttribute(harness, CSS.Attribute.MARGIN_TOP, "margin-top", false, "0");
+ testAttribute(harness, CSS.Attribute.PADDING, "padding", false, null);
+ testAttribute(harness, CSS.Attribute.PADDING_BOTTOM, "padding-bottom", false, "0");
+ testAttribute(harness, CSS.Attribute.PADDING_LEFT, "padding-left", false, "0");
+ testAttribute(harness, CSS.Attribute.PADDING_RIGHT, "padding-right", false, "0");
+ testAttribute(harness, CSS.Attribute.PADDING_TOP, "padding-top", false, "0");
+ testAttribute(harness, CSS.Attribute.TEXT_ALIGN, "text-align", true, null);
+ testAttribute(harness, CSS.Attribute.TEXT_DECORATION, "text-decoration", true, "none");
+ testAttribute(harness, CSS.Attribute.TEXT_INDENT, "text-indent", true, "0");
+ testAttribute(harness, CSS.Attribute.TEXT_TRANSFORM, "text-transform", true, "none");
+ testAttribute(harness, CSS.Attribute.VERTICAL_ALIGN, "vertical-align", false, "baseline");
+ testAttribute(harness, CSS.Attribute.WHITE_SPACE, "white-space", true, "normal");
+ testAttribute(harness, CSS.Attribute.WIDTH, "width", false, "auto");
+ testAttribute(harness, CSS.Attribute.WORD_SPACING, "word-spacing", true, "normal");
+ }
+
+ void testAttribute(TestHarness harness, CSS.Attribute att, String attStr,
+ boolean inherited, String defaultValue)
+ {
+ harness.check(att.toString(), attStr);
+ harness.check(att.isInherited(), inherited);
+ harness.check(att.getDefaultValue(), defaultValue);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/CSS/CVS/Entries b/gnu/testlet/javax/swing/text/html/CSS/CVS/Entries
new file mode 100644
index 00000000..7695f323
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CSS/CVS/Entries
@@ -0,0 +1,2 @@
+/Attribute.java/1.1/Fri Sep 9 20:11:14 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/CSS/CVS/Repository b/gnu/testlet/javax/swing/text/html/CSS/CVS/Repository
new file mode 100644
index 00000000..8b4859ec
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CSS/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/CSS
diff --git a/gnu/testlet/javax/swing/text/html/CSS/CVS/Root b/gnu/testlet/javax/swing/text/html/CSS/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CSS/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/CVS/Entries b/gnu/testlet/javax/swing/text/html/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/text/html/CVS/Entries.Log b/gnu/testlet/javax/swing/text/html/CVS/Entries.Log
new file mode 100644
index 00000000..3705348c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CVS/Entries.Log
@@ -0,0 +1,4 @@
+A D/CSS////
+A D/HTML////
+A D/HTMLDocument////
+A D/parser////
diff --git a/gnu/testlet/javax/swing/text/html/CVS/Repository b/gnu/testlet/javax/swing/text/html/CVS/Repository
new file mode 100644
index 00000000..287f7c75
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html
diff --git a/gnu/testlet/javax/swing/text/html/CVS/Root b/gnu/testlet/javax/swing/text/html/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/HTML/CVS/Entries b/gnu/testlet/javax/swing/text/html/HTML/CVS/Entries
new file mode 100644
index 00000000..359c5fcd
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTML/CVS/Entries
@@ -0,0 +1,3 @@
+/ElementTagAttributeTest.java/1.1/Fri Dec 9 17:47:36 2005//
+/HTML_Test.java/1.3/Sun Feb 6 12:49:31 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/HTML/CVS/Repository b/gnu/testlet/javax/swing/text/html/HTML/CVS/Repository
new file mode 100644
index 00000000..84752b80
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTML/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/HTML
diff --git a/gnu/testlet/javax/swing/text/html/HTML/CVS/Root b/gnu/testlet/javax/swing/text/html/HTML/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTML/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/HTML/ElementTagAttributeTest.java b/gnu/testlet/javax/swing/text/html/HTML/ElementTagAttributeTest.java
new file mode 100644
index 00000000..f9dd72ac
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTML/ElementTagAttributeTest.java
@@ -0,0 +1,88 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Red Hat
+
+// 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.javax.swing.text.html.HTML;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.Element;
+import javax.swing.text.ElementIterator;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+
+/**
+ * Test that the HTML.Tags are stored as StyleConstants.NameAttribute
+ * in the Elements attributes
+ * @author Lillian Angel (langel@redhat.com)
+ */
+public class ElementTagAttributeTest implements Testlet
+{
+ TestHarness h;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testAttrs();
+ }
+ catch (Exception e)
+ {
+ h.fail("Exception caught");
+ }
+ }
+
+ public void testAttrs() throws Exception
+ {
+ URL url = new URL("http://www.redhat.com");
+ URLConnection connection = url.openConnection();
+ InputStream is = connection.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ HTMLEditorKit htmlKit = new HTMLEditorKit();
+ HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
+ HTMLEditorKit.Parser parser = new ParserDelegator();
+ HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);
+ parser.parse(br, callback, true);
+
+ ElementIterator iterator = new ElementIterator(htmlDoc);
+ Element element;
+ while ((element = iterator.next()) != null)
+ {
+ AttributeSet attributes = element.getAttributes();
+ Object name = attributes.getAttribute(StyleConstants.NameAttribute);
+ h.check((name instanceof HTML.Tag),
+ true,
+ "HTML.Tag is not"
+ + " stored as StyleConstants.NameAttribute in the elements attributes");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java b/gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java
new file mode 100644
index 00000000..e41c6357
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTML/HTML_Test.java
@@ -0,0 +1,121 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.javax.swing.text.html.HTML;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+
+/**
+ * Test the javax.swing.text.html.HTML public methods.
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class HTML_Test
+ implements Testlet
+{
+ TestHarness harness;
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testConstructor();
+ testGetAttributeKey();
+ testGetTag();
+ testGetIntegerAttributeValue();
+ }
+
+ void assertNotNull(String about, Object notNull)
+ {
+ if (notNull == null)
+ harness.fail(about);
+ }
+
+
+ void testConstructor()
+ {
+ harness.checkPoint("constructor");
+ new HTML();
+ }
+
+ void testGetAttributeKey()
+ {
+ harness.checkPoint("getAttributeKey");
+
+ // Test the known tags.
+ String mine[] = toStrings(HTML.getAllAttributeKeys());
+
+ for (int i = 0; i < mine.length; i++)
+ assertNotNull(HTML.getAttributeKey(mine [ i ]) + " must be found",
+ mine [ i ]
+ );
+
+ // Test the unknown attribute.
+ harness.check(HTML.getTag("audrius"), null, "surely unknown HTML attribute");
+ }
+
+ void testGetIntegerAttributeValue()
+ {
+ harness.checkPoint("getIntegerAttributeValue");
+
+ SimpleAttributeSet ase = new SimpleAttributeSet();
+ ase.addAttribute(HTML.getAttributeKey("size"), "222");
+ harness.check(222,
+ HTML.getIntegerAttributeValue(ase,
+ HTML.getAttributeKey("size"),
+ 333
+ ), "attribute must be found"
+ );
+
+ harness.check(333,
+ HTML.getIntegerAttributeValue(ase,
+ HTML.getAttributeKey("href"),
+ 333
+ ),
+ "the default value must be returned"
+ );
+ }
+
+ void testGetTag()
+ {
+ harness.checkPoint("getTag");
+
+ /* Testing the known tags: */
+ String mine[] = toStrings(HTML.getAllTags());
+
+ for (int i = 0; i < mine.length; i++)
+ assertNotNull(mine [ i ]+" tag must be found", HTML.getTag(mine [ i ]));
+
+ /* Testing the unknown tag: */
+ harness.check(HTML.getTag("audrius"), null, "surely unknown HTML tag");
+ }
+
+ private String[] toStrings(Object objs[])
+ {
+ String a[] = new String[ objs.length ];
+
+ for (int i = 0; i < a.length; i++)
+ a [ i ] = objs [ i ].toString();
+
+ return a;
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Entries b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Entries
new file mode 100644
index 00000000..4076deb6
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Entries
@@ -0,0 +1,2 @@
+/FindById.java/1.1/Thu Jul 13 13:12:25 2006/-kk/
+D
diff --git a/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Repository b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Repository
new file mode 100644
index 00000000..afad929a
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/HTMLDocument
diff --git a/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Root b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTMLDocument/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/HTMLDocument/FindById.java b/gnu/testlet/javax/swing/text/html/HTMLDocument/FindById.java
new file mode 100644
index 00000000..b553250b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/HTMLDocument/FindById.java
@@ -0,0 +1,60 @@
+/* FindById.java -- Test getElement(String)
+ Copyright (C) 2006 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: 1.4
+
+package gnu.testlet.javax.swing.text.html.HTMLDocument;
+
+import javax.swing.JTextPane;
+import javax.swing.text.Element;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLDocument;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class FindById implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ JTextPane html = new JTextPane();
+ html.setContentType("text/html");
+
+ html.setText("<p id = myOne>my text<i><b id = myTwo>myBold</b></i>xxx");
+
+ HTMLDocument doc = (HTMLDocument) html.getDocument();
+
+ Element el = doc.getElement("myOne");
+
+ harness.check(true, el != null, "p with id must be found");
+ harness.check(
+ el.getAttributes().getAttribute(StyleConstants.NameAttribute),
+ HTML.Tag.P, "Type must match");
+ harness.check(!el.isLeaf());
+
+ el = doc.getElement("myNone");
+ harness.check(el == null, "should not be found");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeListTest2.java b/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeListTest2.java
new file mode 100644
index 00000000..d52d4598
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeListTest2.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+// Uses: ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.swing.text.html.parser.AttributeList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import javax.swing.text.html.parser.AttributeList;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class AttributeListTest2
+ extends TestCase
+ implements Testlet
+{
+ private AttributeList attributeList = null;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testSame();
+ }
+
+ public void testSame()
+ {
+ for (int i = 0; i < 100; i++)
+ {
+ String t = AttributeList.type2name(i);
+ if (t != null)
+ assertEquals(i, AttributeList.name2type(t));
+ }
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ attributeList = new AttributeList("ku");
+ assertEquals(attributeList.toString(), "ku");
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java b/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java
new file mode 100644
index 00000000..1216dffe
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/AttributeList/AttributeList_test.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+// // 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.javax.swing.text.html.parser.AttributeList;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.DTDConstants;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class AttributeList_test
+ implements Testlet, DTDConstants
+{
+
+ public void test(TestHarness a_harness)
+ {
+ String type;
+ for (int i = 0; i < 20; i++)
+ {
+ type = AttributeList.type2name(i);
+ if (type != null)
+ a_harness.check(i, AttributeList.name2type(type));
+ };
+
+ a_harness.check(AttributeList.type2name(CDATA), "CDATA");
+ a_harness.check(AttributeList.name2type("CDATA"), CDATA);
+
+ a_harness.check(AttributeList.type2name(ENTITY), "ENTITY");
+ a_harness.check(AttributeList.name2type("ENTITY"), ENTITY);
+
+ a_harness.check(AttributeList.type2name(NAME), "NAME");
+ a_harness.check(AttributeList.name2type("NAME"), NAME);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Entries
new file mode 100644
index 00000000..51791267
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Entries
@@ -0,0 +1,3 @@
+/AttributeListTest2.java/1.2/Wed May 21 13:30:50 2008/-kk/
+/AttributeList_test.java/1.3/Sun Feb 6 13:02:37 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Repository
new file mode 100644
index 00000000..1b6d18ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/AttributeList
diff --git a/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/AttributeList/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/CVS/Entries.Log b/gnu/testlet/javax/swing/text/html/parser/CVS/Entries.Log
new file mode 100644
index 00000000..65be691c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/AttributeList////
+A D/DTD////
+A D/Element////
+A D/Entity////
+A D/ParserDelegator////
+A D/TagElement////
diff --git a/gnu/testlet/javax/swing/text/html/parser/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/CVS/Repository
new file mode 100644
index 00000000..3960038c
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser
diff --git a/gnu/testlet/javax/swing/text/html/parser/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Entries
new file mode 100644
index 00000000..7cb5d906
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Entries
@@ -0,0 +1,3 @@
+/DTD_test.java/1.3/Sun Feb 6 13:02:38 2005//
+/DtdTest2.java/1.2/Wed May 21 13:30:50 2008/-kk/
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Repository
new file mode 100644
index 00000000..e22f1f13
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/DTD
diff --git a/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/DTD/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java b/gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java
new file mode 100644
index 00000000..b4634f90
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/DTD/DTD_test.java
@@ -0,0 +1,84 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.DTD;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.*;
+
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class DTD_test
+ implements Testlet
+{
+ static class D
+ extends DTD
+ {
+ public D()
+ {
+ super("test");
+ }
+
+ public Element createElement(String n)
+ {
+ return getElement(n);
+ }
+ }
+
+ TestHarness harness;
+
+ public DTD_test()
+ {
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ D d = new D();
+ HTML.Tag tags[] = HTML.getAllTags();
+
+ Element prehead = d.createElement("head");
+
+ for (int i = 0; i < tags.length; i++)
+ {
+ Element e = d.createElement(tags [ i ].toString());
+ String name = tags [ i ].toString();
+ harness.check(e != null, "Element creation");
+ harness.check(e.getName().equalsIgnoreCase(name), "Element name");
+ }
+
+ // Test upper/lowercase
+ Element e = d.createElement("head");
+
+ harness.check((e != null), "Element creation");
+ harness.check(e.getName().equalsIgnoreCase("head"), "Element name");
+ harness.check(HTML.Tag.HEAD, HTML.getTag(e.name));
+ harness.check(d.head, e, "Field assignment");
+
+ harness.check(prehead, e);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java b/gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java
new file mode 100644
index 00000000..8073da57
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/DTD/DtdTest2.java
@@ -0,0 +1,98 @@
+// Tags: JDK1.2
+// Uses: ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.text.html.parser.DTD;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.Element;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class DtdTest2
+ extends TestCase
+ implements Testlet
+{
+ static class D
+ extends DTD
+ {
+ public D()
+ {
+ super("audrius");
+ }
+
+ public Element createElement(String n)
+ {
+ return getElement(n);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testGetElement();
+ }
+
+ public void testGetElement()
+ {
+ D d = new D();
+ HTML.Tag[] tags = HTML.getAllTags();
+
+ Element prehead = d.createElement("head");
+
+ for (int i = 0; i < tags.length; i++)
+ {
+ Element e = d.createElement(tags [ i ].toString());
+ String name = tags [ i ].toString();
+ assertNotNull("Element creation", e);
+ assertTrue("Element name", e.getName().equalsIgnoreCase(name));
+ }
+
+ // Test upper/lowercase
+ Element e = d.createElement("head");
+
+ assertNotNull("Element creation", e);
+ assertTrue("Element name", e.getName().equalsIgnoreCase("head"));
+ assertEquals(HTML.Tag.HEAD, HTML.getTag(e.name));
+ assertEquals("Field assignment", d.head, e);
+
+ assertEquals(prehead, e);
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ protected void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Entries
new file mode 100644
index 00000000..8d8c358e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Entries
@@ -0,0 +1,2 @@
+/Element_Test.java/1.3/Sun Feb 6 13:02:38 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Repository
new file mode 100644
index 00000000..f9836e12
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/Element
diff --git a/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Element/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java b/gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java
new file mode 100644
index 00000000..4aea7afb
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Element/Element_Test.java
@@ -0,0 +1,109 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.Element;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.parser.*;
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.DTDConstants;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class Element_Test
+ implements Testlet
+{
+ TestHarness harness;
+
+ public Element_Test()
+ {
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ try
+ {
+ testName2type();
+ testAttributeGetter();
+ }
+ catch (Throwable exc)
+ {
+ exc.printStackTrace();
+ if (exc != null)
+ harness.fail(exc.getClass().getName() + ":" + exc.getMessage());
+ else
+ harness.fail("exception");
+ }
+ }
+
+ public void testAttributeGetter()
+ throws Exception
+ {
+ // Create a chain of 24 attributes:
+ AttributeList list = new AttributeList("heading");
+ AttributeList head = list;
+ list.value = null;
+ for (int i = 0; i < 24; i++)
+ {
+ AttributeList a = new AttributeList("a" + i);
+ a.value = "v" + i;
+ list.next = a;
+ list = a;
+ }
+
+ Element e =
+ DTD.getDTD("test").defineElement("e", 0, false, false, null, null, null,
+ null
+ );
+ e.atts = head;
+
+ for (int i = 0; i < 24; i++)
+ {
+ // Check if the name is found.
+ harness.check(e.getAttribute("a" + i).toString(), "a" + i);
+
+ // Check if the attribute value is correct.
+ harness.check(e.getAttribute("a" + i).value, "v" + i);
+ }
+
+ // Check for unknown attribute
+ harness.check(e.getAttribute("audrius"), null);
+
+ // Check for unknown value
+ harness.check(e.getAttributeByValue("audrius"), null);
+ }
+
+ public void testName2type()
+ {
+ harness.check(Element.name2type("CDATA"), DTDConstants.CDATA);
+ harness.check(Element.name2type("RCDATA"), DTDConstants.RCDATA);
+ harness.check(Element.name2type("EMPTY"), DTDConstants.EMPTY);
+ harness.check(Element.name2type("ANY"), DTDConstants.ANY);
+
+ harness.check(Element.name2type("audrius"), 0);
+ harness.check(Element.name2type("rcdata"), 0);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Entries
new file mode 100644
index 00000000..87944662
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Entries
@@ -0,0 +1,2 @@
+/Entity_Test.java/1.3/Sun Feb 6 13:02:38 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Repository
new file mode 100644
index 00000000..153302b7
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/Entity
diff --git a/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Entity/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java b/gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java
new file mode 100644
index 00000000..9aa8060d
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/Entity/Entity_Test.java
@@ -0,0 +1,118 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.Entity;
+
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.Entity;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.parser.DTDConstants;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class Entity_Test
+ implements Testlet
+{
+ private Element element;
+ TestHarness harness;
+
+ public Entity_Test()
+ {
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ try
+ {
+ testName2type();
+ testPublicSystemGeneralParameter();
+ element = null;
+ }
+ catch (Throwable exc)
+ {
+ exc.printStackTrace();
+ if (exc != null)
+ harness.fail(exc.getClass().getName() + ":" + exc.getMessage());
+ else
+ harness.fail("exception");
+ }
+ }
+
+ public void testName2type()
+ {
+ harness.check(Entity.name2type("PUBLIC"), DTDConstants.PUBLIC, "PUBLIC");
+ harness.check(Entity.name2type("SDATA"), DTDConstants.SDATA, "SDATA");
+ harness.check(Entity.name2type("PI"), DTDConstants.PI, "PI");
+ harness.check(Entity.name2type("STARTTAG"), DTDConstants.STARTTAG,
+ "STARTTAG"
+ );
+ harness.check(Entity.name2type("ENDTAG"), DTDConstants.ENDTAG, "ENDTAG");
+ harness.check(Entity.name2type("MS"), DTDConstants.MS, "MS");
+ harness.check(Entity.name2type("MD"), DTDConstants.MD, "MD");
+ harness.check(Entity.name2type("SYSTEM"), DTDConstants.SYSTEM, "SYSTEM");
+
+ harness.check(Entity.name2type("audrius"), DTDConstants.CDATA,
+ "surely unknown "
+ );
+ }
+
+ public void testPublicSystemGeneralParameter()
+ {
+ int pu_sy[] = new int[] { DTDConstants.PUBLIC, DTDConstants.SYSTEM, 0 };
+
+ int gen_par[] =
+ new int[] { DTDConstants.GENERAL, DTDConstants.PARAMETER, 0 };
+
+ for (int ps = 0; ps < pu_sy.length; ps++)
+ {
+ for (int gp = 0; gp < gen_par.length; gp++)
+ {
+ Entity e = new Entity(null, 0, null);
+ e.type = pu_sy [ ps ] | gen_par [ gp ];
+
+ harness.check(e.isGeneral(), gen_par [ gp ] == DTDConstants.GENERAL);
+ harness.check(e.isParameter(), gen_par [ gp ] == DTDConstants.PARAMETER);
+
+ harness.check((e.type & DTDConstants.SYSTEM) != 0,
+ pu_sy [ ps ] == DTDConstants.SYSTEM
+ );
+
+ harness.check((e.type & DTDConstants.PUBLIC) != 0,
+ pu_sy [ ps ] == DTDConstants.PUBLIC
+ );
+
+ harness.check((e.type & DTDConstants.GENERAL) != 0,
+ gen_par [ gp ] == DTDConstants.GENERAL
+ );
+
+ harness.check((e.type & DTDConstants.PARAMETER) != 0,
+ gen_par [ gp ] == DTDConstants.PARAMETER
+ );
+ }
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Entries
new file mode 100644
index 00000000..3930c955
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Entries
@@ -0,0 +1,12 @@
+/Entities.java/1.1/Mon Jan 1 18:05:14 2007/-kk/
+/Entities2.java/1.2/Wed May 21 13:30:50 2008/-kk/
+/SimpleParsing.java/1.1/Fri Nov 3 19:40:33 2006/-kk/
+/Text.java/1.2/Thu Apr 28 07:39:49 2005//
+/Text2.java/1.2/Wed May 21 13:30:50 2008/-kk/
+/Text3.java/1.1/Tue Jan 2 14:55:28 2007/-kk/
+/Text4.java/1.1/Tue Jan 2 14:55:28 2007/-kk/
+/eolnNorification.java/1.1/Mon Feb 14 15:40:49 2005//
+/parsingTester.java/1.6/Fri Jul 28 11:03:23 2006//
+/randomTables.java/1.1/Mon Feb 14 15:40:49 2005//
+/tokenLocations.java/1.2/Mon Feb 14 15:41:10 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Repository
new file mode 100644
index 00000000..5ed4daac
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/ParserDelegator
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities.java
new file mode 100644
index 00000000..6a8d5a56
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * This entity test is known and must pass as early as since jdk 1.2, but it
+ * fails with the older releases.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Entities extends SimpleParsing
+ implements Testlet
+{
+
+ public void test(TestHarness harness)
+ {
+ super.test(harness);
+ }
+
+ public void verify(String html, String trace)
+ {
+ verify(html, trace, html);
+ }
+
+ public void testHTMLParsing()
+ {
+ // Test entities.
+ verify("hex: &#x55; eqdec: &#61; ampnamed: &amp;",
+ "<html _implied_='true'><head _implied_='true'></head><body _implied_='true'>'hex: U eqdec: = ampnamed: &'</body></html>",
+ "Entities"
+ );
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities2.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities2.java
new file mode 100644
index 00000000..441f4cba
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Entities2.java
@@ -0,0 +1,114 @@
+// Tags: JDK1.2
+// Uses: ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import javax.swing.text.html.parser.DTDConstants;
+import javax.swing.text.html.parser.Entity;
+
+/**
+ * Entity test, with Sun passes since 1.5.0
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Entities2
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testPublicSystemGeneralParameter();
+ testName2type();
+ }
+
+ public void testName2type()
+ {
+ assertEquals("PUBLIC", Entity.name2type("PUBLIC"), DTDConstants.PUBLIC);
+ assertEquals("SDATA", Entity.name2type("SDATA"), DTDConstants.SDATA);
+ assertEquals("PI", Entity.name2type("PI"), DTDConstants.PI);
+ assertEquals("STARTTAG", Entity.name2type("STARTTAG"), DTDConstants.STARTTAG);
+ assertEquals("ENDTAG", Entity.name2type("ENDTAG"), DTDConstants.ENDTAG);
+ assertEquals("MS", Entity.name2type("MS"), DTDConstants.MS);
+ assertEquals("MD", Entity.name2type("MD"), DTDConstants.MD);
+ assertEquals("SYSTEM", Entity.name2type("SYSTEM"), DTDConstants.SYSTEM);
+
+ assertEquals("surely unknown ", Entity.name2type("audrius"),
+ DTDConstants.CDATA
+ );
+ }
+
+ public void testPublicSystemGeneralParameter()
+ {
+ int[] pu_sy = new int[] { DTDConstants.PUBLIC, DTDConstants.SYSTEM, 0 };
+
+ int[] gen_par =
+ new int[] { DTDConstants.GENERAL, DTDConstants.PARAMETER, 0 };
+
+ for (int ps = 0; ps < pu_sy.length; ps++)
+ {
+ for (int gp = 0; gp < gen_par.length; gp++)
+ {
+ Entity e = new Entity(null, 0, null);
+ e.type = pu_sy [ ps ] | gen_par [ gp ];
+
+ assertEquals(e.isGeneral(), gen_par [ gp ] == DTDConstants.GENERAL);
+ assertEquals(e.isParameter(),
+ gen_par [ gp ] == DTDConstants.PARAMETER
+ );
+
+ assertEquals((e.type & DTDConstants.SYSTEM) != 0,
+ pu_sy [ ps ] == DTDConstants.SYSTEM
+ );
+
+ assertEquals((e.type & DTDConstants.PUBLIC) != 0,
+ pu_sy [ ps ] == DTDConstants.PUBLIC
+ );
+
+ assertEquals((e.type & DTDConstants.GENERAL) != 0,
+ gen_par [ gp ] == DTDConstants.GENERAL
+ );
+
+ assertEquals((e.type & DTDConstants.PARAMETER) != 0,
+ gen_par [ gp ] == DTDConstants.PARAMETER
+ );
+ }
+ }
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ protected void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/SimpleParsing.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/SimpleParsing.java
new file mode 100644
index 00000000..be36dbd8
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/SimpleParsing.java
@@ -0,0 +1,362 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Audrius Meskauskas, Audrius.Meskauskas@Spectraseis.org
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.HTMLEditorKit.ParserCallback;
+import javax.swing.text.html.parser.ParserDelegator;
+
+
+/**
+ * Sample HTML parsing. This test may fail on some 1.3 implementations,
+ * revealing bugs that were later fixed in 1.4.
+ *
+ * @author Audrius Meskauskas (Audrius.Meskauskas@Spectraseis.org)
+ */
+public class SimpleParsing
+ extends HTMLEditorKit.ParserCallback
+ implements Testlet
+{
+ StringBuffer out = new StringBuffer();
+ AttributeSet atts = new SimpleAttributeSet();
+ TestHarness harness;
+
+ public void handleComment(char parm1[], int position)
+ {
+ out.append("{" + new String(parm1) + "}");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ if (tag.toString().equals("tbody"))
+ return;
+ out.append("</" + tag + ">");
+ }
+
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("tbody"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char chars[], int position)
+ {
+ out.append("'" + new String(chars) + "'");
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testHTMLParsing();
+ }
+
+ public void testHTMLParsing()
+ {
+ // Test entities.
+ verify("eqdec: &#61; ampnamed: &amp;",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'>'eqdec: = ampnamed: &'</body></html>",
+ "Named and numeric entities"
+ );
+
+ // Test unclosed tags.
+ verify("<hr id = 1 class = c<hr id=2>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><hr class='c' id='1'/><hr id='2'/>" +
+ "</body></html>", "Error tolerance (unclosed tags)"
+ );
+
+ // Test valid attributes.
+ verify("<hr id='i' TITLE=\"tit\" clAss=cl><hr><hr id = 2>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><hr class='cl' id='i' title='tit'/>" +
+ "<hr/><hr id='2'/></body></html>", "Attributes"
+ );
+
+ // Test unknown attribute without value.
+ verify("<hr audrius title=\"tit\">",
+ "<html _implied_='true'><head _implied_='true'>"+
+ "</head><body _implied_='true'><hr audrius='#DEFAULT' "+
+ "title='tit'/></body></html>",
+ "surely unknown attribute 'audrius' without value"
+ );
+
+ // Table tests:
+ verify("<table><tr><td>a</td><tr><td>a</td>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr><td>'a'</td></tr><tr>" +
+ "<td>'a'</td></tr></table></body></html>",
+ "Table with implied row closing tags 1"
+ );
+
+ verify("<table><tr><td>a<td>b<tr><td>a<td>b<td>c",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr><td>'a'</td><td>'b'</td>" +
+ "</tr><tr><td>'a'</td><td>'b'</td><td>'c'</td></tr></table>" +
+ "</body></html>", "Table with implied row closing tags 2"
+ );
+
+ verify("<table><tr><td>a<td>b<td>c</tr>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><tr><td>'a'</td>" +
+ "<td>'b'</td><td>'c'</td></tr></table></body></html>",
+ "Table with implied row and column closing tags"
+ );
+
+ // Test table content model.
+ verify("<table>a</table>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr _implied_='true'>" +
+ "<td _implied_='true'>'a'</td></tr></table></body></html>",
+ "Table with implied tags"
+ );
+
+ // Test table content model.
+ verify("<table><caption>cap</caption>a</table>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><caption>'cap'" +
+ "</caption><tr _implied_='true'><td _implied_='true'>'a'</td>" +
+ "</tr></table></body></html>", "Table with caption"
+ );
+
+ // Test typical table.
+ verify("<TABLE><tr><td>x</td><td>y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><tr><td>'x'</td>" +
+ "<td>'y'</td><td>'z'</td></tr></table></body></html>", "Simple table"
+ );
+
+ // Test nested table.
+ verify("<table><tr><td><table>nested</table>x</td><td>"+
+ "y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'></head>"+
+ "<body _implied_='true'><table>"+
+ "<tr><td><table><tr _implied_='true'>"+
+ "<td _implied_='true'>'nested'</td></tr></table>'x'"+
+ "</td><td>'y'</td><td>'z'</td></tr></table></body></html>",
+ "nested table"
+ );
+
+ // Test simple nested list.
+ verify("<ul><li>a</li><ul><li>na</li><li>nb</li></ul><li>b</li></ul>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><ul><li>'a'</li><ul><li>'na'</li>" +
+ "<li>'nb'</li></ul><li>'b'</li></ul></body></html>", "Nested list"
+ );
+
+ // Test simple non-nested list.
+ verify("<ul><li>a</li><lI>na</li><li>nb</li><li>b</li></Ul>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><ul><li>'a'</li><li>'na'</li>" +
+ "<li>'nb'</li><li>'b'</li></ul></body></html>", "Simple list"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ verify("<ul><li>a<li>na<li>nb<li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><ul><li>'a'</li><li>'na'</li><li>'nb'</li>" +
+ "<li>'b'</li></ul></body></html>", "List with implied closing tags"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ verify("<ul><li>a<ul><li>na<li>nb</ul><li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><ul><li>'a'<ul><li>'na'</li><li>'nb'</li>" +
+ "</ul></li><li>'b'</li></ul></body></html>",
+ "List with implied closing tags"
+ );
+
+ // Test html no head no body.
+ verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 1"
+ );
+
+ // Test head only.
+ verify("<head></head>text",
+ "<html _implied_='true'><head></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 2"
+ );
+
+ // Test head and body.
+ verify("<head><title>ti</title></head><body>text",
+ "<html _implied_='true'><head><title>'ti'</title></head><body>" +
+ "'text'</body></html>", "Global document content model 3"
+ );
+
+ // Test title and text.
+ verify("<title>title</title>text",
+ "<html _implied_='true'><head _implied_='true'><title>'title'" +
+ "</title></head><body _implied_='true'>'text'</body></html>",
+ "Global document content model 4"
+ );
+
+ // Test html only.
+ verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 5"
+ );
+
+ // Test body only.
+ verify("<body>text</body>",
+ "<html _implied_='true'><head _implied_='true'></head><body>" +
+ "'text'</body></html>", "Global document content model 6"
+ );
+
+ // Test definition list, obsolete.
+ verify("<dl><dt>ha<dd>a<dt>hb<dd>b",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><dl><dt>'ha'</dt><dd>'a'</dd><dt>" +
+ "'hb'</dt><dd>'b'</dd></dl></body></html>",
+ "Definition list without closing tags"
+ );
+
+ // Test definition list.
+ verify("<html><head></head><body><dl><dt>'ha'</dt><dd>'a'</dd>" +
+ "<dt>'hb'</dt><dd>'b'</dd></dl></body></html>",
+ "<html><head></head><body><dl><dt>''ha''</dt><dd>''a''</dd><dt>" +
+ "''hb''</dt><dd>''b''</dd></dl></body></html>", "Definition list"
+ );
+
+ // Test paragraphs.
+ verify("<p>b<p>c<p>d",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><p>'b'</p><p>'c'</p><p>'d'</p>" +
+ "</body></html>", "Paragraphs without closing tags"
+ );
+
+ // Test paragraphs.
+ verify("<p>'b'</p><p>'c'</p><p>'d'</p>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><p>''b''</p><p>''c''</p><p>''d''" +
+ "</p></body></html>", "Paragraphs"
+ );
+
+ // Test select obsolete.
+ verify("<form><select><option value='hi'>a<option selected>b" +
+ "<option>normal",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><form><select><option value='hi'>" +
+ "'a'</option><option selected='selected'>'b'</option>" +
+ "<option>'normal'</option></select></form></body></html>",
+ "Forms, options without closing tags, bug in 1.3, fixed in 1.4"
+ );
+
+ // Test select current.
+ verify("<form><select><option>'a'</option><option " +
+ "SeLeCtEd='selected'>'b'</option></select></form>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><form><select><option>" +
+ "''a''</option><option selected='selected'>''b''</option>" +
+ "</select></form></body></html>", "Forms, bug in 1.3, fixed in 1.4"
+ );
+ }
+
+ public String verify(String html, String expected, String about)
+ {
+ out.setLength(0);
+
+ HTMLEditorKit.ParserCallback callback = this;
+ ParserDelegator delegator = new ParserDelegator();
+ try
+ {
+ delegator.parse(new StringReader(html), callback, true);
+ }
+ catch (IOException ex)
+ {
+ harness.fail("Unexpected exception " + ex.getMessage() +
+ " while parsing " + html
+ );
+ }
+
+ String result = out.toString();
+
+ harness.check(result, expected, about);
+ return result;
+ }
+
+ public boolean hideImplied = false;
+
+ protected void dumpAttributes(AttributeSet atts)
+ {
+ Enumeration enumeration = atts.getAttributeNames();
+
+ // Sort them to ensure the same order every time:
+ TreeSet t =
+ new TreeSet(new Comparator()
+ {
+ public int compare(Object a, Object b)
+ {
+ return a.toString().compareTo(b.toString());
+ }
+ }
+ );
+ while (enumeration.hasMoreElements())
+ t.add(enumeration.nextElement());
+
+ Iterator iter = t.iterator();
+
+ while (iter.hasNext())
+ {
+ Object a = iter.next();
+ Object av = atts.getAttribute(a);
+ if (hideImplied &&
+ a.toString().equalsIgnoreCase(ParserCallback.IMPLIED.toString())
+ )
+ continue;
+
+ String v = av != null ? av.toString() : "~null";
+ out.append(" " + a + "='" + v + "'");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java
new file mode 100644
index 00000000..e5a12fe4
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text.java
@@ -0,0 +1,152 @@
+// Tags: JDK1.2
+// Uses: parsingTester
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+
+/**
+ * Verifies if the \r, \n , \r\n and \t are handled correctly in normal
+ * and pre-formatted text sections.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class Text
+ extends parsingTester
+ implements Testlet
+{
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ out.append("<" + tag + ">");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ out.append("<" + tag + ">");
+ }
+
+ public void handleText(char chars[], int position)
+ {
+ for (int i = 0; i < chars.length; i++)
+ {
+ out.append(Integer.toHexString(chars [ i ]));
+ if (chars [ i ] > ' ')
+ out.append("'" + chars [ i ]);
+ out.append(" ");
+ }
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ out.append("</" + tag + ">");
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ hideImplied = true;
+
+ /*
+ Non-preformatted text.
+ \t, \r and \n mutate into spaces, then multiple spaces mutate
+ into single one, all whitespace around tags is consumed.
+ */
+ verify("\r \n \t {abc r\rn\nt}\t \r\n \r \t",
+ "<html><head></head><body>7b'{ 61'a 62'b 63'c 20 72'r 20" +
+ " 6e'n 20 74't 7d'} </body></html>", "normal"
+ );
+
+ verify(" abba ",
+ "<html><head></head><body>61'a 62'b 62'b 61'a </body></html>",
+ "single word"
+ );
+
+ verify(" \r ab \t \r \n ba ",
+ "<html><head></head><body>61'a 62'b 20 62'b 61'a </body></html>",
+ "line breaks"
+ );
+
+ /*
+ Pre-formatted text.
+ Heading/closing spaces and tabs preserved.
+ ONE bounding \r, \n or \r\n is removed.
+ \r or \r\n mutate into \n. Tabs are
+ preserved.
+ */
+ verify("<pre>\n\n\n\n abba \r\t \r\n</pre>",
+ "<html><head></head><body><pre>a a a 20 20 20 61'a 62'b 62'b" +
+ " 61'a 20 20 20 a 9 20 </pre></body></html>", "pre"
+ );
+
+ verify("<pre> abba </pre>",
+ "<html><head></head><body><pre>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </pre></body></html>", "pre"
+ );
+
+ verify("<pre>\r\n abba </pre>",
+ "<html><head></head><body><pre>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </pre></body></html>", "pre, single word"
+ );
+
+ verify("<pre>\r\n\r\n abba \r\n</pre>",
+ "<html><head></head><body><pre>a 20 20 20 61'a 62'b 62'b 61'a 20 20" +
+ " 20 </pre></body></html>",
+ "pre, single word with line breaks around"
+ );
+
+ verify("<pre> \r ab \t \r \n ba </pre>",
+ "<html><head></head><body><pre>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </pre></body></html>",
+ "pre, line breaks"
+ );
+
+ verify("<pre> \r\n ab \t \r\n \n ba </pre>",
+ "<html><head></head><body><pre>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </pre></body></html>", "pre"
+ );
+
+ // In TEXTAREA tag, same.
+ verify("<textarea>\n\n\n\n abba \r\n</textarea>",
+ "<html><head></head><body><textarea>a a a 20 20 20 61'a " +
+ "62'b 62'b 61'a 20 </textarea></body></html>",
+ "textarea, single word with line breaks around"
+ );
+
+ verify("<textarea> abba </textarea>",
+ "<html><head></head><body><textarea>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </textarea></body></html>", "textarea, singe word"
+ );
+
+ verify("<textarea> \r ab \t \r \n ba </textarea>",
+ "<html><head></head><body><textarea>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </textarea></body></html>",
+ " textarea"
+ );
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java
new file mode 100644
index 00000000..d0de1584
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text2.java
@@ -0,0 +1,159 @@
+// Tags: JDK1.2
+// Uses: ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/Parser_Test ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/TestCase
+
+// Copyright (C) 2005, 2006 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.Parser_Test;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Text2
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testTextParsing();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ public void testTextParsing()
+ throws Exception
+ {
+ Parser_Test v =
+ new Parser_Test()
+ {
+ public void handleSimpleTag(HTML.Tag tag,
+ MutableAttributeSet attributes, int position
+ )
+ {
+ if (!tag.toString().equalsIgnoreCase("#pcdata"))
+ out.append("<" + tag + ">");
+ }
+
+ public void handleStartTag(HTML.Tag tag,
+ MutableAttributeSet attributes, int position
+ )
+ {
+ out.append("<" + tag + ">");
+ }
+
+ public void handleText(char[] chars, int position)
+ {
+ for (int i = 0; i < chars.length; i++)
+ {
+ out.append(Integer.toHexString(chars [ i ]));
+ if (chars [ i ] > ' ')
+ out.append("'" + chars [ i ]);
+ out.append(" ");
+ }
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ out.append("</" + tag + ">");
+ }
+ };
+
+ v.hideImplied = true;
+
+ // NON - preformatted mode:
+ // Everything mutates into spaces, multiple spaces mustates
+ // into single one, all whitespace around tags is consumed.
+ v.verify("\r \n \t {abc r\rn\nt}\t \r\n \r \t",
+ "<html><head></head><body>7b'{ 61'a 62'b 63'c 20 72'r 20" +
+ " 6e'n 20 74't 7d'} </body></html>"
+ );
+
+ v.verify(" abba ",
+ "<html><head></head><body>61'a 62'b 62'b 61'a </body></html>"
+ );
+
+ v.verify(" \r ab \t \r \n ba ",
+ "<html><head></head><body>61'a 62'b 20 62'b 61'a </body></html>"
+ );
+
+ // Preformatted mode (in PRE tag):
+ // Heading/closing spaces and tabs preserve. ONE \r, \n or \r\n is removed.
+ // /r mutates into \n
+ v.verify("<pre>\n\n\n\n abba \r\t \r\n</pre>",
+ "<html><head></head><body><pre>a a a 20 20 20 61'a 62'b 62'b" +
+ " 61'a 20 20 20 a 9 20 </pre></body></html>"
+ );
+
+ v.verify("<pre> abba </pre>",
+ "<html><head></head><body><pre>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </pre></body></html>"
+ );
+
+ v.verify("<pre>\r\n abba </pre>",
+ "<html><head></head><body><pre>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </pre></body></html>"
+ );
+
+ v.verify("<pre>\r\n\r\n abba \r\n</pre>",
+ "<html><head></head><body><pre>a 20 20 20 61'a 62'b 62'b 61'a 20 20" +
+ " 20 </pre></body></html>"
+ );
+
+ v.verify("<pre> \r ab \t \r \n ba </pre>",
+ "<html><head></head><body><pre>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </pre></body></html>"
+ );
+
+ v.verify("<pre> \r\n ab \t \r\n \n ba </pre>",
+ "<html><head></head><body><pre>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </pre></body></html>"
+ );
+
+ // In TEXTAREA tag, same.
+ v.verify("<textarea>\n\n\n\n abba \r\n</textarea>",
+ "<html><head></head><body><textarea>a a a 20 20 20 61'a " +
+ "62'b 62'b 61'a 20 </textarea></body></html>"
+ );
+
+ v.verify("<textarea> abba </textarea>",
+ "<html><head></head><body><textarea>20 20 20 61'a 62'b 62'b 61'a 20 " +
+ "20 20 </textarea></body></html>"
+ );
+
+ v.verify("<textarea> \r ab \t \r \n ba </textarea>",
+ "<html><head></head><body><textarea>20 a 20 61'a 62'b 20 20 9 20 a" +
+ " 20 a 20 20 62'b 61'a 20 20 20 </textarea></body></html>"
+ );
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text3.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text3.java
new file mode 100644
index 00000000..1ab9fe02
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text3.java
@@ -0,0 +1,96 @@
+/* Text3.java -- Whitespace handling tests
+ Copyright (C) 2007 Copyright (C) 2005 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks if the whitespace is correctly consumed aroung the B (bold)
+ * tag.
+ */
+public class Text3 extends Text implements Testlet
+{
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ hideImplied = true;
+
+ // No whitespace.
+ verify("abc<b>def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>","no ws"
+ );
+
+ // Onse space before b must be preserved
+ verify("abc <b>def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c 20 <b>64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>","ws before b"
+ );
+
+ // Two spaces must mutate into 1
+ verify("abc <b>def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c 20 <b>64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>","ws before b 2"
+ );
+
+
+ verify("abc<b> def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>20 64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>","ws after b"
+ );
+
+ verify("abc<b> def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>20 64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>","ws after b 2"
+ );
+
+
+ verify("abc<b>def </b>ghi","<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f 20 </b>67'g 68'h 69'i </body></html>","ws before end of b"
+ );
+
+ verify("abc<b>def </b>ghi","<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f 20 </b>67'g 68'h 69'i </body></html>","ws before end of b 2"
+ );
+
+ verify("abc<b>def</b> ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f </b>20 67'g 68'h 69'i </body></html>","ws after end of b"
+ );
+
+ verify("abc<b>def</b> ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f </b>20 67'g 68'h 69'i </body></html>","ws after end of b 2"
+ );
+
+ // Two spaces, one before and one after, must mutate into the single one.
+ verify("abc<b>def </b> ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f 20 </b>67'g 68'h 69'i </body></html>",
+ "whitespace clash 1"
+ );
+
+ verify("abc <b> def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c 20 <b>64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>",
+ "whitespace clash 1"
+ );
+
+
+
+
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text4.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text4.java
new file mode 100644
index 00000000..0d37a16b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/Text4.java
@@ -0,0 +1,53 @@
+/* Text4.java -- Whitespace handling tests
+ Copyright (C) 2007 Copyright (C) 2005 Audrius Meskauskas
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests the "whitespace clash" - two spaces, one before and one after
+ * the B tag, must mutate into the single space. Tailored to pass JDK 1.6
+ * and 1.7.
+ */
+public class Text4 extends Text implements Testlet
+{
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ hideImplied = true;
+
+ // Two spaces, one before and one after, must mutate into the single one.
+ verify("abc<b>def </b> ghi",
+ "<html><head></head><body>61'a 62'b 63'c <b>64'd 65'e 66'f 20 </b>67'g 68'h 69'i </body></html>",
+ "whitespace clash 1"
+ );
+
+ verify("abc <b> def</b>ghi",
+ "<html><head></head><body>61'a 62'b 63'c 20 <b>64'd 65'e 66'f </b>67'g 68'h 69'i </body></html>",
+ "whitespace clash 1"
+ );
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/eolnNorification.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/eolnNorification.java
new file mode 100644
index 00000000..0bf6559b
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/eolnNorification.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.StringReader;
+
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * Verifies if handleEndOfLineString(..) is correctly called, providing
+ * the line separator, used in the document.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class eolnNorification
+ extends HTMLEditorKit.ParserCallback
+ implements Testlet
+{
+ String eoln = null;
+ int flushed = 0;
+
+ public void handleEndOfLineString(String end_of_line)
+ {
+ eoln = end_of_line;
+ }
+
+ public void parse(String html)
+ throws Exception
+ {
+ ParserDelegator delegator = new ParserDelegator();
+ delegator.parse(new StringReader(html), this, true);
+ }
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ parse("a \n b");
+ harness.check(eoln, "\n", "bug in 1.2, fixed in 1.3");
+ parse("a \r b");
+ harness.check(eoln, "\r", "bug in 1.2, fixed in 1.3");
+ parse("a \r\n b");
+ harness.check(eoln, "\r\n", "bug in 1.2, fixed in 1.3");
+ }
+ catch (Exception ex)
+ {
+ harness.fail("Unexpected exception "+ex);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java
new file mode 100644
index 00000000..51fbfec9
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/parsingTester.java
@@ -0,0 +1,386 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.HTMLEditorKit.ParserCallback;
+import javax.swing.text.html.parser.ParserDelegator;
+
+
+/**
+ * Sample HTML parsing. This test may fail on some 1.3 implementations,
+ * revealing bugs that were later fixed in 1.4.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class parsingTester
+ extends HTMLEditorKit.ParserCallback
+ implements Testlet
+{
+ StringBuffer out = new StringBuffer();
+ AttributeSet atts = new SimpleAttributeSet();
+ TestHarness harness;
+
+ public void handleComment(char parm1[], int position)
+ {
+ out.append("{" + new String(parm1) + "}");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ if (tag.toString().equals("tbody"))
+ return;
+ out.append("</" + tag + ">");
+ }
+
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("tbody"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char chars[], int position)
+ {
+ out.append("'" + new String(chars) + "'");
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testHTMLParsing();
+ }
+
+ public void testHTMLParsing()
+ {
+
+ // Test subsequent tags.
+ verify("<b><i><u>text</b><i></u>",
+ "<html _implied_='true'><head _implied_='true'></head>"+
+ "<body _implied_='true'><b><i><u>'text'</u></i></b><i>"+
+ "</i></body></html>", "subseqent tags");
+
+
+ // Test entities.
+ verify("eqdec: &#61; ampnamed: &amp;",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'>'eqdec: = ampnamed: &'</body></html>",
+ "Named and numeric entities"
+ );
+
+ // Test entities in attributes.
+ verify("<hr id='id_&#41;&#90' class= \"&#89;_&amp;\" >",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><hr class='y_&' id='id_)Z'/></body></html>",
+ "Numeric and named entities in attributes"
+ );
+
+ // Test unclosed tags.
+ verify("<hr id = 1 class = c<hr id=2>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><hr class='c' id='1'/><hr id='2'/>" +
+ "</body></html>", "Error tolerance (unclosed tags)"
+ );
+
+ // Test valid attributes.
+ verify("<hr id='i' TITLE=\"tit\" clAss=cl><hr><hr id = 2>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><hr class='cl' id='i' title='tit'/>" +
+ "<hr/><hr id='2'/></body></html>", "Attributes"
+ );
+
+ // Test attributes witout value.
+ verify("<option id=a selected><option id=b selected = " +
+ "selected class=cC><input checked>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><option id='a' selected='selected'>" +
+ "</option><option class='cc' id='b' selected='selected'></option>" +
+ "<input checked='checked'/></body></html>",
+ "Attributes without value"
+ );
+
+ // Test unknown attribute without value.
+ verify("<hr audrius title=\"tit\">",
+ "<html _implied_='true'><head _implied_='true'>"+
+ "</head><body _implied_='true'><hr audrius='#DEFAULT' "+
+ "title='tit'/></body></html>",
+ "surely unknown attribute 'audrius' without value"
+ );
+
+ // Table tests:
+ verify("<table><tr><td>a</td><tr><td>a</td>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr><td>'a'</td></tr><tr>" +
+ "<td>'a'</td></tr></table></body></html>",
+ "Table with implied row closing tags 1"
+ );
+
+ verify("<table><tr><td>a<td>b<tr><td>a<td>b<td>c",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr><td>'a'</td><td>'b'</td>" +
+ "</tr><tr><td>'a'</td><td>'b'</td><td>'c'</td></tr></table>" +
+ "</body></html>", "Table with implied row closing tags 2"
+ );
+
+ verify("<table><tr><td>a<td>b<td>c</tr>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><tr><td>'a'</td>" +
+ "<td>'b'</td><td>'c'</td></tr></table></body></html>",
+ "Table with implied row and column closing tags"
+ );
+
+ // Test table content model.
+ verify("<table>a</table>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><table><tr _implied_='true'>" +
+ "<td _implied_='true'>'a'</td></tr></table></body></html>",
+ "Table with implied tags"
+ );
+
+ // Test table content model.
+ verify("<table><caption>cap</caption>a</table>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><caption>'cap'" +
+ "</caption><tr _implied_='true'><td _implied_='true'>'a'</td>" +
+ "</tr></table></body></html>", "Table with caption"
+ );
+
+ // Test typical table.
+ verify("<TABLE><tr><td>x</td><td>y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><table><tr><td>'x'</td>" +
+ "<td>'y'</td><td>'z'</td></tr></table></body></html>", "Simple table"
+ );
+
+ // Test nested table.
+ verify("<table><tr><td><table>nested</table>x</td><td>"+
+ "y</td><td>z</td></table>",
+ "<html _implied_='true'><head _implied_='true'></head>"+
+ "<body _implied_='true'><table>"+
+ "<tr><td><table><tr _implied_='true'>"+
+ "<td _implied_='true'>'nested'</td></tr></table>'x'"+
+ "</td><td>'y'</td><td>'z'</td></tr></table></body></html>",
+ "nested table"
+ );
+
+ // Test simple nested list.
+ verify("<ul><li>a</li><ul><li>na</li><li>nb</li></ul><li>b</li></ul>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><ul><li>'a'</li><ul><li>'na'</li>" +
+ "<li>'nb'</li></ul><li>'b'</li></ul></body></html>", "Nested list"
+ );
+
+ // Test simple non-nested list.
+ verify("<ul><li>a</li><lI>na</li><li>nb</li><li>b</li></Ul>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><ul><li>'a'</li><li>'na'</li>" +
+ "<li>'nb'</li><li>'b'</li></ul></body></html>", "Simple list"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ verify("<ul><li>a<li>na<li>nb<li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><ul><li>'a'</li><li>'na'</li><li>'nb'</li>" +
+ "<li>'b'</li></ul></body></html>", "List with implied closing tags"
+ );
+
+ // Test list without closing tags (obsolete list form).
+ verify("<ul><li>a<ul><li>na<li>nb</ul><li>b</ul>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><ul><li>'a'<ul><li>'na'</li><li>'nb'</li>" +
+ "</ul></li><li>'b'</li></ul></body></html>",
+ "List with implied closing tags"
+ );
+
+ // Test html no head no body.
+ verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 1"
+ );
+
+ // Test head only.
+ verify("<head></head>text",
+ "<html _implied_='true'><head></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 2"
+ );
+
+ // Test head and body.
+ verify("<head><title>ti</title></head><body>text",
+ "<html _implied_='true'><head><title>'ti'</title></head><body>" +
+ "'text'</body></html>", "Global document content model 3"
+ );
+
+ // Test title and text.
+ verify("<title>title</title>text",
+ "<html _implied_='true'><head _implied_='true'><title>'title'" +
+ "</title></head><body _implied_='true'>'text'</body></html>",
+ "Global document content model 4"
+ );
+
+ // Test html only.
+ verify("<html>text</html>",
+ "<html><head _implied_='true'></head><body _implied_='true'>" +
+ "'text'</body></html>", "Global document content model 5"
+ );
+
+ // Test body only.
+ verify("<body>text</body>",
+ "<html _implied_='true'><head _implied_='true'></head><body>" +
+ "'text'</body></html>", "Global document content model 6"
+ );
+
+ // Test definition list, obsolete.
+ verify("<dl><dt>ha<dd>a<dt>hb<dd>b",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><dl><dt>'ha'</dt><dd>'a'</dd><dt>" +
+ "'hb'</dt><dd>'b'</dd></dl></body></html>",
+ "Definition list without closing tags"
+ );
+
+ // Test definition list.
+ verify("<html><head></head><body><dl><dt>'ha'</dt><dd>'a'</dd>" +
+ "<dt>'hb'</dt><dd>'b'</dd></dl></body></html>",
+ "<html><head></head><body><dl><dt>''ha''</dt><dd>''a''</dd><dt>" +
+ "''hb''</dt><dd>''b''</dd></dl></body></html>", "Definition list"
+ );
+
+ // Test paragraphs.
+ verify("<p>b<p>c<p>d",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><p>'b'</p><p>'c'</p><p>'d'</p>" +
+ "</body></html>", "Paragraphs without closing tags"
+ );
+
+ // Test paragraphs.
+ verify("<p>'b'</p><p>'c'</p><p>'d'</p>",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><p>''b''</p><p>''c''</p><p>''d''" +
+ "</p></body></html>", "Paragraphs"
+ );
+
+ // Test select obsolete.
+ verify("<form><select><option value='hi'>a<option selected>b" +
+ "<option>normal",
+ "<html _implied_='true'><head _implied_='true'></head>" +
+ "<body _implied_='true'><form><select><option value='hi'>" +
+ "'a'</option><option selected='selected'>'b'</option>" +
+ "<option>'normal'</option></select></form></body></html>",
+ "Forms, options without closing tags, bug in 1.3, fixed in 1.4"
+ );
+
+ // Test select current.
+ verify("<form><select><option>'a'</option><option " +
+ "SeLeCtEd='selected'>'b'</option></select></form>",
+ "<html _implied_='true'><head _implied_='true'>" +
+ "</head><body _implied_='true'><form><select><option>" +
+ "''a''</option><option selected='selected'>''b''</option>" +
+ "</select></form></body></html>", "Forms, bug in 1.3, fixed in 1.4"
+ );
+ }
+
+ public String verify(String html, String expected, String about)
+ {
+ out.setLength(0);
+
+ HTMLEditorKit.ParserCallback callback = this;
+ ParserDelegator delegator = new ParserDelegator();
+ try
+ {
+ delegator.parse(new StringReader(html), callback, true);
+ }
+ catch (IOException ex)
+ {
+ harness.fail("Unexpected exception " + ex.getMessage() +
+ " while parsing " + html
+ );
+ }
+
+ String result = out.toString();
+
+ harness.check(result, expected, about);
+ return result;
+ }
+
+ public boolean hideImplied = false;
+
+ protected void dumpAttributes(AttributeSet atts)
+ {
+ Enumeration enumeration = atts.getAttributeNames();
+
+ // Sort them to ensure the same order every time:
+ TreeSet t =
+ new TreeSet(new Comparator()
+ {
+ public int compare(Object a, Object b)
+ {
+ return a.toString().compareTo(b.toString());
+ }
+ }
+ );
+ while (enumeration.hasMoreElements())
+ t.add(enumeration.nextElement());
+
+ Iterator iter = t.iterator();
+
+ while (iter.hasNext())
+ {
+ Object a = iter.next();
+ Object av = atts.getAttribute(a);
+ if (hideImplied &&
+ a.toString().equalsIgnoreCase(ParserCallback.IMPLIED.toString())
+ )
+ continue;
+
+ String v = av != null ? av.toString() : "~null";
+ out.append(" " + a + "='" + v + "'");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/randomTables.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/randomTables.java
new file mode 100644
index 00000000..5af7a56f
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/randomTables.java
@@ -0,0 +1,147 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import java.util.Random;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Tests parsing of randomly generated HTML tables, with and without
+ * caption, random presence of the table/row closing tags, randomly
+ * inserted spaces where witespace should not matter and
+ * randomly varying number of rows and columns in the certain interval.
+ */
+public class randomTables
+ extends parsingTester
+ implements Testlet
+{
+ /**
+ * Number of randomly generated tables to test.
+ */
+ static int TABLES_TO_TEST = 101;
+
+ Random r = new Random();
+
+ public String s()
+ {
+ if (r.nextBoolean())
+ return "";
+
+ StringBuffer b = new StringBuffer();
+ int spc = r.nextInt(4);
+ for (int i = 0; i < spc; i++)
+ {
+ b.append(' ');
+ }
+ return b.toString();
+ }
+
+ /**
+ * Try variable randomly generated table.
+ */
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+
+ hideImplied = true;
+ for (int i = 0; i < TABLES_TO_TEST; i++)
+ {
+ try {
+ new table().test();
+ }
+ catch (Exception ex) {
+ harness.fail(ex.toString());
+ }
+ }
+ }
+
+ class table
+ {
+ final String [][] rows;
+ final boolean caption = r.nextBoolean();
+
+ table()
+ {
+ int nrows = r.nextInt(5) + 1;
+ rows = new String[ nrows ][];
+ for (int i = 0; i < rows.length; i++)
+ {
+ int ncol = r.nextInt(5) + 1;
+ rows [ i ] = new String[ ncol ];
+ for (int j = 0; j < rows [ i ].length; j++)
+ {
+ rows [ i ] [ j ] = "C_" + i + "_" + j;
+ }
+ }
+ }
+
+ public String getHtml()
+ {
+ StringBuffer b = new StringBuffer("<html><head></head><body><table>");
+ if (caption) b.append("<caption>capt</caption>");
+
+ for (int row = 0; row < rows.length; row++)
+ {
+ b.append("<tr" + s() + ">");
+ for (int col = 0; col < rows [ row ].length; col++)
+ {
+ b.append("<td" + s() + ">");
+ b.append( rows [ row ] [ col ] );
+ if (r.nextBoolean())
+ b.append("</td" + s() + ">");
+ }
+ if (r.nextBoolean())
+ b.append("</tr" + s() + ">");
+ }
+ b.append("</table></body></html>");
+ return b.toString();
+ }
+
+ public String getTrace()
+ {
+ StringBuffer b =
+ new StringBuffer("<html><head></head><body><table>");
+ if (caption) b.append("<caption>'capt'</caption>");
+ for (int row = 0; row < rows.length; row++)
+ {
+ b.append("<tr>");
+ for (int col = 0; col < rows [ row ].length; col++)
+ {
+ b.append("<td>'" + rows [ row ] [ col ] + "'</td>");
+ }
+ b.append("</tr>");
+ }
+ b.append("</table></body></html>");
+ return b.toString();
+ }
+
+ void test() throws Exception
+ {
+ String trace = getTrace();
+ String html = getHtml();
+ verify(html, trace, html+":"+trace);
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java
new file mode 100644
index 00000000..e2ccc17e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/ParserDelegator/tokenLocations.java
@@ -0,0 +1,112 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.ParserDelegator;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+
+
+/**
+ * Checking the token positons that must be available for the callback.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class tokenLocations
+ extends parsingTester
+ implements Testlet
+{
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag + "[" + position + "]");
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equalsIgnoreCase("tbody"))
+ return;
+ out.append("<" + tag + "[" + position + "]");
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char chars[], int position)
+ {
+ out.append("'" + new String(chars) + "[" + position + "]'");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ if (tag.toString().equalsIgnoreCase("tbody"))
+ return;
+ out.append("</" + tag + ">");
+ }
+
+ public void handleComment(char parm1[], int position)
+ {
+ out.append("{" + new String(parm1) + "[" + position + "]}");
+ }
+
+ public void testHTMLParsing()
+ {
+ hideImplied = true;
+
+ // 0123456789012345678901234567890
+ verify("a<!-- comment -->b<!-- comment2 -->",
+ "<html[0]><head[0]></head><body[0]>'a[0]'{ comment [1]}'b[17]'" +
+ "{ comment2 [18]}</body></html>", "comment"
+ );
+
+ // 0123456789012345678901234567890
+ verify("<table><tr><td>a<td>b<td></tr>",
+ "<html[0]><head[0]></head><body[0]><table[0]>" +
+ "<tr[7]><td[11]>'a[15]'</td><td[16]>'b[20]'</td>" +
+ "<td[21]></td></tr></table></body>" + "</html>", "table"
+ );
+
+ // 012345678901234567
+ verify("<p>b<p>c<p>d",
+ "<html[0]><head[0]></head><body[0]><p[0]>'b[3]'</p><p[4]>'c[7]'" +
+ "</p><p[8]>'d[11]'</p></body></html>", "paragraphs"
+ );
+
+ // Test SGML insertion
+ verify("<! the sgml construct >sgml",
+ "<html[23]><head[23]></head><body[23]>"+
+ "'sgml[23]'</body></html>","SGML insertion");
+
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ super.test(a_harness);
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Entries b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Entries
new file mode 100644
index 00000000..f04fac98
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Entries
@@ -0,0 +1,3 @@
+/TagElementTest2.java/1.2/Wed May 21 13:30:50 2008/-kk/
+/TagElement_Test.java/1.3/Sun Feb 6 13:02:38 2005//
+D
diff --git a/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Repository b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Repository
new file mode 100644
index 00000000..748a4c4e
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/text/html/parser/TagElement
diff --git a/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Root b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/TagElement/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElementTest2.java b/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElementTest2.java
new file mode 100644
index 00000000..e2a7e3d5
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElementTest2.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+// Uses: ../../../../../../gnu/javax/swing/text/html/parser/support/Parser/TestCase
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.javax.swing.text.html.parser.TagElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser.TestCase;
+
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.TagElement;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class TagElementTest2
+ extends TestCase
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ try
+ {
+ testTagElement();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail("Exception: " + ex);
+ }
+ }
+
+ public void testTagElement()
+ throws Exception
+ {
+ HTML.Tag[] tags = HTML.getAllTags();
+
+ for (int i = 0; i < tags.length; i++)
+ {
+ HTML.Tag t = tags [ i ];
+ String tn = t.toString();
+ Element e = DTD.getDTD("test").getElement("e");
+ e.name = tn;
+
+ TagElement te = new TagElement(e, true);
+ assertTrue(" must be fictional", te.fictional());
+
+ te = new TagElement(e);
+ assertFalse("must be non fictional", te.fictional());
+
+ assertEquals(te.getHTMLTag().toString(), t.toString());
+ assertEquals(t.breaksFlow(), te.breaksFlow());
+ assertEquals(t.isPreformatted(), te.isPreformatted());
+ }
+ }
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ protected void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ }
+}
diff --git a/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java b/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java
new file mode 100644
index 00000000..914b1827
--- /dev/null
+++ b/gnu/testlet/javax/swing/text/html/parser/TagElement/TagElement_Test.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas, AudriusA@Bluewin.ch
+
+// // 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.javax.swing.text.html.parser.TagElement;
+
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.TagElement;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.*;
+import java.io.*;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class TagElement_Test
+ implements Testlet
+{
+ TestHarness harness;
+
+ public TagElement_Test()
+ {
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ try {
+ HTML.Tag tags[] = HTML.getAllTags();
+
+ for (int i = 0; i < tags.length; i++) {
+ HTML.Tag t = tags[i];
+ String tn = t.toString();
+ Element e = DTD.getDTD("test").getElement("e");
+ e.name = tn;
+
+ TagElement te = new TagElement(e, true);
+ harness.check(te.fictional());
+
+ te = new TagElement(e);
+ harness.check(! (te.fictional()));
+
+ harness.check(te.getHTMLTag().toString(), t.toString());
+ harness.check(t.breaksFlow(), te.breaksFlow());
+ harness.check(t.isPreformatted(), te.isPreformatted());
+ }
+ }
+ catch (IOException ex) {
+ harness.fail(ex.getMessage());
+ }
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/CVS/Entries b/gnu/testlet/javax/swing/tree/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/tree/CVS/Entries.Log b/gnu/testlet/javax/swing/tree/CVS/Entries.Log
new file mode 100644
index 00000000..08e5f4aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/DefaultMutableTreeNode////
+A D/DefaultTreeCellRenderer////
+A D/DefaultTreeSelectionModel////
+A D/TreePath////
+A D/VariableHeightLayoutCache////
diff --git a/gnu/testlet/javax/swing/tree/CVS/Repository b/gnu/testlet/javax/swing/tree/CVS/Repository
new file mode 100644
index 00000000..537504bf
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree
diff --git a/gnu/testlet/javax/swing/tree/CVS/Root b/gnu/testlet/javax/swing/tree/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Entries b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Entries
new file mode 100644
index 00000000..c8def4a2
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Entries
@@ -0,0 +1,40 @@
+/DefaultMutableTreeNodeTest.java/1.2/Tue Mar 7 15:40:35 2006//
+/add.java/1.2/Tue Mar 7 11:14:44 2006//
+/breadthFirstEnumeration.java/1.2/Fri Jul 15 12:00:00 2005//
+/children.java/1.1/Tue Nov 30 16:03:27 2004//
+/clone.java/1.1/Tue Mar 7 11:14:44 2006//
+/constructors.java/1.2/Tue Mar 7 11:14:44 2006//
+/depthFirstEnumeration.java/1.1/Fri Jul 15 12:01:23 2005//
+/getAllowsChildren.java/1.1/Tue Nov 30 16:03:27 2004//
+/getChildAfter.java/1.2/Tue Mar 7 15:40:35 2006//
+/getChildAt.java/1.1/Tue Nov 30 16:03:27 2004//
+/getChildBefore.java/1.2/Tue Mar 7 15:40:35 2006//
+/getChildCount.java/1.1/Tue Nov 30 16:03:27 2004//
+/getFirstChild.java/1.1/Tue Mar 7 15:40:35 2006//
+/getFirstLeaf.java/1.1/Tue Mar 7 15:40:35 2006//
+/getIndex.java/1.1/Tue Mar 7 11:14:44 2006//
+/getLastChild.java/1.1/Tue Mar 7 15:40:35 2006//
+/getLastLeaf.java/1.1/Tue Mar 7 15:40:35 2006//
+/getNextLeaf.java/1.1/Tue Mar 7 15:40:35 2006//
+/getNextPreviousNode.java/1.1/Tue Nov 30 19:24:40 2004//
+/getNextSibling.java/1.1/Tue Mar 7 15:40:35 2006//
+/getParent.java/1.1/Tue Mar 7 11:14:44 2006//
+/getPath.java/1.1/Tue Nov 30 17:32:49 2004//
+/getPreviousLeaf.java/1.1/Tue Mar 7 15:40:35 2006//
+/getPreviousSibling.java/1.1/Tue Mar 7 15:40:35 2006//
+/getSiblingCount.java/1.1/Tue Mar 7 15:40:35 2006//
+/insert.java/1.1/Tue Mar 7 11:14:44 2006//
+/isLeaf.java/1.1/Tue Mar 7 15:40:35 2006//
+/isNodeAncestor.java/1.1/Tue Mar 7 11:14:44 2006//
+/isNodeChild.java/1.1/Tue Mar 7 11:14:44 2006//
+/isNodeDescendant.java/1.1/Tue Mar 7 11:14:44 2006//
+/isNodeRelated.java/1.1/Tue Nov 30 16:03:27 2004//
+/isNodeSibling.java/1.1/Tue Mar 7 15:40:35 2006//
+/pathFromAncestorEnumeration.java/1.1/Tue Nov 30 16:54:50 2004//
+/postorderEnumeration.java/1.2/Fri Jul 15 12:00:00 2005//
+/preorderEnumeration.java/1.2/Fri Jul 15 12:00:00 2005//
+/remove.java/1.1/Tue Mar 7 11:14:44 2006//
+/removeAllChildren.java/1.1/Tue Mar 7 11:14:44 2006//
+/setAllowsChildren.java/1.1/Tue Mar 7 11:14:44 2006//
+/toString.java/1.1/Tue Mar 7 11:14:44 2006//
+D
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Repository b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Repository
new file mode 100644
index 00000000..a6e6491a
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Root b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java
new file mode 100644
index 00000000..199b0110
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/DefaultMutableTreeNodeTest.java
@@ -0,0 +1,214 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.*;
+
+import javax.swing.tree.*;
+
+public class DefaultMutableTreeNodeTest implements Testlet
+{
+ public static DefaultMutableTreeNode A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;
+ public static Vector nodes = new Vector();
+
+ static
+ {
+ A = new DefaultMutableTreeNode("A");
+ B = new DefaultMutableTreeNode("B");
+ C = new DefaultMutableTreeNode("C");
+ D = new DefaultMutableTreeNode("D");
+ E = new DefaultMutableTreeNode("E");
+ F = new DefaultMutableTreeNode("F");
+ G = new DefaultMutableTreeNode("G");
+ H = new DefaultMutableTreeNode("H");
+ I = new DefaultMutableTreeNode("I");
+ J = new DefaultMutableTreeNode("J");
+ K = new DefaultMutableTreeNode("K", false);
+ L = new DefaultMutableTreeNode("L");
+ M = new DefaultMutableTreeNode("M");
+ N = new DefaultMutableTreeNode("N");
+ O = new DefaultMutableTreeNode("O");
+ P = new DefaultMutableTreeNode("P", false);
+ Q = new DefaultMutableTreeNode("Q");
+ R = new DefaultMutableTreeNode("R");
+ S = new DefaultMutableTreeNode("S");
+ T = new DefaultMutableTreeNode("T", false);
+ U = new DefaultMutableTreeNode("U");
+ V = new DefaultMutableTreeNode("V");
+ W = new DefaultMutableTreeNode("W");
+ X = new DefaultMutableTreeNode("X", false);
+ Y = new DefaultMutableTreeNode("Y");
+ Z = new DefaultMutableTreeNode("Z");
+
+ A.add(B);
+ A.add(C);
+ A.add(D);
+ B.add(E);
+ B.add(F);
+ C.add(G);
+ D.add(H);
+ D.add(I);
+ E.add(J);
+ F.add(K);
+ G.add(L);
+ G.add(M);
+ H.add(N);
+ I.add(O);
+ I.add(P);
+ J.add(Q);
+ J.add(R);
+ L.add(S);
+ M.add(T);
+ O.add(U);
+ O.add(V);
+ S.add(W);
+ S.add(X);
+ U.add(Y);
+ Y.add(Z);
+
+ nodes.add(A);
+ nodes.add(B);
+ nodes.add(C);
+ nodes.add(D);
+ nodes.add(E);
+ nodes.add(F);
+ nodes.add(G);
+ nodes.add(H);
+ nodes.add(I);
+ nodes.add(J);
+ nodes.add(K);
+ nodes.add(L);
+ nodes.add(M);
+ nodes.add(N);
+ nodes.add(O);
+ nodes.add(P);
+ nodes.add(Q);
+ nodes.add(R);
+ nodes.add(S);
+ nodes.add(T);
+ nodes.add(U);
+ nodes.add(V);
+ nodes.add(W);
+ nodes.add(X);
+ nodes.add(Y);
+ nodes.add(Z);
+ }
+
+ public static void checkEnumeration(TestHarness h, Enumeration e, DefaultMutableTreeNode node)
+ {
+ if (node == null)
+ {
+ h.check(! e.hasMoreElements(), "enumeration has more elements");
+
+ boolean ok = false;
+
+ try
+ {
+ e.nextElement();
+ }
+ catch (NoSuchElementException ex)
+ {
+ ok = true;
+ }
+
+ h.check(ok, "throws NoSuchElementException");
+ }
+ else
+ {
+ h.check(e.hasMoreElements(), "enumeration has more elements");
+
+ DefaultMutableTreeNode enode = (DefaultMutableTreeNode) e.nextElement();
+
+ h.check(enode, node, "correct node as next element");
+ h.debug("expected: " + ((String) node.getUserObject()));
+ h.debug("got : " + ((String) enode.getUserObject()));
+ }
+ }
+
+ private void checkRoot(TestHarness h, DefaultMutableTreeNode node, boolean isRoot)
+ {
+ h.check(node.isRoot() == isRoot, "node is root");
+ }
+
+ private void checkIsLeaf(TestHarness h, DefaultMutableTreeNode node, boolean isLeaf)
+ {
+ h.check(node.isLeaf() == isLeaf, "isLeaf");
+ }
+
+ public void test(TestHarness h)
+ {
+ checkRoot(h, A, true);
+ checkRoot(h, B, false);
+ checkRoot(h, C, false);
+ checkRoot(h, D, false);
+ checkRoot(h, E, false);
+ checkRoot(h, F, false);
+ checkRoot(h, G, false);
+ checkRoot(h, H, false);
+ checkRoot(h, I, false);
+ checkRoot(h, J, false);
+ checkRoot(h, K, false);
+ checkRoot(h, L, false);
+ checkRoot(h, M, false);
+ checkRoot(h, N, false);
+ checkRoot(h, O, false);
+ checkRoot(h, P, false);
+ checkRoot(h, Q, false);
+ checkRoot(h, R, false);
+ checkRoot(h, S, false);
+ checkRoot(h, T, false);
+ checkRoot(h, U, false);
+ checkRoot(h, V, false);
+ checkRoot(h, W, false);
+ checkRoot(h, X, false);
+ checkRoot(h, Y, false);
+ checkRoot(h, Z, false);
+
+ checkIsLeaf(h, A, false);
+ checkIsLeaf(h, B, false);
+ checkIsLeaf(h, C, false);
+ checkIsLeaf(h, D, false);
+ checkIsLeaf(h, E, false);
+ checkIsLeaf(h, F, false);
+ checkIsLeaf(h, G, false);
+ checkIsLeaf(h, H, false);
+ checkIsLeaf(h, I, false);
+ checkIsLeaf(h, J, false);
+ checkIsLeaf(h, K, true);
+ checkIsLeaf(h, L, false);
+ checkIsLeaf(h, M, false);
+ checkIsLeaf(h, N, true);
+ checkIsLeaf(h, O, false);
+ checkIsLeaf(h, P, true);
+ checkIsLeaf(h, Q, true);
+ checkIsLeaf(h, R, true);
+ checkIsLeaf(h, S, false);
+ checkIsLeaf(h, T, true);
+ checkIsLeaf(h, U, false);
+ checkIsLeaf(h, V, true);
+ checkIsLeaf(h, W, true);
+ checkIsLeaf(h, X, true);
+ checkIsLeaf(h, Y, false);
+ checkIsLeaf(h, Z, true);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java
new file mode 100644
index 00000000..a6a0213c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/add.java
@@ -0,0 +1,103 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2006, Michael Koch <konqueror@gmx.de>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class add implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.checkPoint("(MutableTreeNode)");
+ DefaultMutableTreeNode a, b, c;
+
+ a = new DefaultMutableTreeNode();
+ b = new DefaultMutableTreeNode();
+ c = new DefaultMutableTreeNode(null, false);
+
+ // try adding null
+ boolean ok = false;
+ try
+ {
+ a.add(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+
+ // try adding to a node that doesn't allow children
+ ok = false;
+ try
+ {
+ c.add(a);
+ }
+ catch (IllegalStateException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+
+ a.add(b);
+ a.add(c);
+
+ h.check(a.isNodeChild(b));
+ h.check(b.getParent(), a);
+ h.check(a.isNodeChild(c));
+ h.check(c.getParent(), a);
+ h.check(!b.isNodeChild(c));
+
+ b.add(c);
+
+ h.check(a.isNodeChild(b));
+ h.check(!a.isNodeChild(c));
+ h.check(b.isNodeChild(c));
+
+ // can we add a node to itself? no because a node is considered its own
+ // ancestor
+ boolean pass = false;
+ try
+ {
+ a.add(a);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ h.check(pass);
+
+ // same goes for adding a as a child of c
+ pass = false;
+ try
+ {
+ b.add(a);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ h.check(pass);
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java
new file mode 100644
index 00000000..4da24a3c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/breadthFirstEnumeration.java
@@ -0,0 +1,74 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+public class breadthFirstEnumeration implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.G.breadthFirstEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.A.breadthFirstEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.B);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.D);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.E);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.F);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.H);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.I);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.J);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.K);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.N);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.O);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.P);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Q);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.R);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.U);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.V);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Y);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Z);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/children.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/children.java
new file mode 100644
index 00000000..1088e64f
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/children.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.tree.*;
+
+public class children implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.A.children();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.B);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.D);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.G.children();
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.K.children();
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.L.children();
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.Z.children();
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/clone.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/clone.java
new file mode 100644
index 00000000..b5d3775c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/clone.java
@@ -0,0 +1,51 @@
+/* clone.java -- Some checks for the clone() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class clone implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("clone()");
+ Integer i1 = new Integer(100);
+ Integer i2 = new Integer(200);
+ Integer i3 = new Integer(300);
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode(i1);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode(i2);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode(i3);
+ n1.add(n2);
+ n2.add(n3);
+ DefaultMutableTreeNode c = (DefaultMutableTreeNode) n2.clone();
+ harness.check(c.getUserObject() == i2);
+ harness.check(c.getChildCount(), 0);
+ harness.check(c.getDepth(), 0);
+ harness.check(c.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java
new file mode 100644
index 00000000..d3773a3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/constructors.java
@@ -0,0 +1,82 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004, 2006, Michael Koch <konqueror@gmx.de>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class constructors implements Testlet
+{
+
+ public void test(TestHarness h)
+ {
+ testConstructor1(h);
+ testConstructor2(h);
+ testConstructor3(h);
+ }
+
+ public void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ DefaultMutableTreeNode n = new DefaultMutableTreeNode();
+ harness.check(n.getUserObject(), null);
+ harness.check(n.getAllowsChildren(), true);
+ harness.check(n.getLevel(), 0);
+ harness.check(n.getChildCount(), 0);
+ harness.check(n.children(), DefaultMutableTreeNode.EMPTY_ENUMERATION);
+ harness.check(n.getDepth(), 0);
+ }
+
+ public void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("(Object)");
+ DefaultMutableTreeNode n = new DefaultMutableTreeNode("ABC");
+ harness.check(n.getUserObject(), "ABC");
+ harness.check(n.getAllowsChildren(), true);
+ harness.check(n.getLevel(), 0);
+ harness.check(n.getChildCount(), 0);
+ harness.check(n.children(), DefaultMutableTreeNode.EMPTY_ENUMERATION);
+ harness.check(n.getDepth(), 0);
+
+ // try null argument
+ n = new DefaultMutableTreeNode(null);
+ harness.check(n.getUserObject(), null);
+ }
+
+ public void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("(Object, boolean)");
+ DefaultMutableTreeNode n = new DefaultMutableTreeNode("ABC", false);
+ harness.check(n.getUserObject(), "ABC");
+ harness.check(n.getAllowsChildren(), false);
+ harness.check(n.getLevel(), 0);
+ harness.check(n.getChildCount(), 0);
+ harness.check(n.children(), DefaultMutableTreeNode.EMPTY_ENUMERATION);
+ harness.check(n.getDepth(), 0);
+
+ // try null argument
+ n = new DefaultMutableTreeNode(null, true);
+ harness.check(n.getUserObject(), null);
+ harness.check(n.getAllowsChildren(), true);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/depthFirstEnumeration.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/depthFirstEnumeration.java
new file mode 100644
index 00000000..aa0b5d82
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/depthFirstEnumeration.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2005 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+/** This tests the same behavior as postorderEnumeration (postorder and depth-first
+ * is the same traversal order). However the class library has to support this
+ * functionality using two different names.
+ */
+public class depthFirstEnumeration implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.G.depthFirstEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.A.depthFirstEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Q);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.R);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.J);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.E);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.K);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.F);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.B);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.N);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.H);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Z);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Y);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.U);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.V);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.O);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.P);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.I);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.D);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getAllowsChildren.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getAllowsChildren.java
new file mode 100644
index 00000000..6b261dfd
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getAllowsChildren.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+public class getAllowsChildren implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.check(DefaultMutableTreeNodeTest.A.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.B.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.C.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.D.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.E.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.F.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.G.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.H.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.I.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.J.getAllowsChildren());
+ h.check(! DefaultMutableTreeNodeTest.K.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.L.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.M.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.N.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.O.getAllowsChildren());
+ h.check(! DefaultMutableTreeNodeTest.P.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.Q.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.R.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.S.getAllowsChildren());
+ h.check(! DefaultMutableTreeNodeTest.T.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.U.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.V.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.W.getAllowsChildren());
+ h.check(! DefaultMutableTreeNodeTest.X.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.Y.getAllowsChildren());
+ h.check(DefaultMutableTreeNodeTest.Z.getAllowsChildren());
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java
new file mode 100644
index 00000000..3d2b9642
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAfter.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004, 2006, Michael Koch <konqueror@gmx.de>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getChildAfter implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.add(n2);
+ n1.add(n3);
+
+ h.check(n1.getChildAfter(n2), n3);
+ h.check(n1.getChildAfter(n3), null);
+
+ // check null argument
+ boolean ok = false;
+ try
+ {
+ n1.getChildAfter(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+
+ // check with an invalid child
+ ok = false;
+ try
+ {
+ n4.getChildAfter(n1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAt.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAt.java
new file mode 100644
index 00000000..4fa8745c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildAt.java
@@ -0,0 +1,86 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+public class getChildAt implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ boolean ok = false;
+
+ try
+ {
+ DefaultMutableTreeNodeTest.A.getChildAt(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ ok = true;
+ }
+
+ h.check(ok, "rejects invalid index");
+
+ ok = false;
+
+ try
+ {
+ DefaultMutableTreeNodeTest.A.getChildAt(3);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ ok = true;
+ }
+
+ h.check(ok, "rejects invalid index");
+
+ h.checkPoint("child at position");
+
+ h.check(DefaultMutableTreeNodeTest.A.getChildAt(0), DefaultMutableTreeNodeTest.B);
+ h.check(DefaultMutableTreeNodeTest.A.getChildAt(1), DefaultMutableTreeNodeTest.C);
+ h.check(DefaultMutableTreeNodeTest.A.getChildAt(2), DefaultMutableTreeNodeTest.D);
+ h.check(DefaultMutableTreeNodeTest.B.getChildAt(0), DefaultMutableTreeNodeTest.E);
+ h.check(DefaultMutableTreeNodeTest.B.getChildAt(1), DefaultMutableTreeNodeTest.F);
+ h.check(DefaultMutableTreeNodeTest.C.getChildAt(0), DefaultMutableTreeNodeTest.G);
+ h.check(DefaultMutableTreeNodeTest.D.getChildAt(0), DefaultMutableTreeNodeTest.H);
+ h.check(DefaultMutableTreeNodeTest.D.getChildAt(1), DefaultMutableTreeNodeTest.I);
+ h.check(DefaultMutableTreeNodeTest.E.getChildAt(0), DefaultMutableTreeNodeTest.J);
+ h.check(DefaultMutableTreeNodeTest.F.getChildAt(0), DefaultMutableTreeNodeTest.K);
+ h.check(DefaultMutableTreeNodeTest.G.getChildAt(0), DefaultMutableTreeNodeTest.L);
+ h.check(DefaultMutableTreeNodeTest.G.getChildAt(1), DefaultMutableTreeNodeTest.M);
+ h.check(DefaultMutableTreeNodeTest.H.getChildAt(0), DefaultMutableTreeNodeTest.N);
+ h.check(DefaultMutableTreeNodeTest.I.getChildAt(0), DefaultMutableTreeNodeTest.O);
+ h.check(DefaultMutableTreeNodeTest.I.getChildAt(1), DefaultMutableTreeNodeTest.P);
+ h.check(DefaultMutableTreeNodeTest.J.getChildAt(0), DefaultMutableTreeNodeTest.Q);
+ h.check(DefaultMutableTreeNodeTest.J.getChildAt(1), DefaultMutableTreeNodeTest.R);
+ h.check(DefaultMutableTreeNodeTest.L.getChildAt(0), DefaultMutableTreeNodeTest.S);
+ h.check(DefaultMutableTreeNodeTest.M.getChildAt(0), DefaultMutableTreeNodeTest.T);
+ h.check(DefaultMutableTreeNodeTest.O.getChildAt(0), DefaultMutableTreeNodeTest.U);
+ h.check(DefaultMutableTreeNodeTest.O.getChildAt(1), DefaultMutableTreeNodeTest.V);
+ h.check(DefaultMutableTreeNodeTest.S.getChildAt(0), DefaultMutableTreeNodeTest.W);
+ h.check(DefaultMutableTreeNodeTest.S.getChildAt(1), DefaultMutableTreeNodeTest.X);
+ h.check(DefaultMutableTreeNodeTest.U.getChildAt(0), DefaultMutableTreeNodeTest.Y);
+ h.check(DefaultMutableTreeNodeTest.Y.getChildAt(0), DefaultMutableTreeNodeTest.Z);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java
new file mode 100644
index 00000000..61463660
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildBefore.java
@@ -0,0 +1,66 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004, 2006, Michael Koch <konqueror@gmx.de>
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class getChildBefore implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.add(n2);
+ n1.add(n3);
+
+ h.check(n1.getChildBefore(n2), null);
+ h.check(n1.getChildBefore(n3), n2);
+
+ // check null argument
+ boolean ok = false;
+ try
+ {
+ n1.getChildBefore(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+
+ // check with an invalid child
+ ok = false;
+ try
+ {
+ n4.getChildBefore(n1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ ok = true;
+ }
+ h.check(ok);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildCount.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildCount.java
new file mode 100644
index 00000000..9041f6c8
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getChildCount.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+public class getChildCount implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.check(DefaultMutableTreeNodeTest.A.getChildCount(), 3);
+ h.check(DefaultMutableTreeNodeTest.B.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.C.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.D.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.E.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.F.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.G.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.H.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.I.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.J.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.K.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.L.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.M.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.N.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.O.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.P.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.Q.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.R.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.S.getChildCount(), 2);
+ h.check(DefaultMutableTreeNodeTest.T.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.U.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.V.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.W.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.X.getChildCount(), 0);
+ h.check(DefaultMutableTreeNodeTest.Y.getChildCount(), 1);
+ h.check(DefaultMutableTreeNodeTest.Z.getChildCount(), 0);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstChild.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstChild.java
new file mode 100644
index 00000000..e84d9892
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstChild.java
@@ -0,0 +1,58 @@
+/* getFirstChild.java -- some checks for the getFirstChild() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getFirstChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ boolean pass = false;
+ try
+ {
+ n1.getFirstChild();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getFirstChild(), n2);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n1.getFirstChild(), n2);
+ n1.remove(0);
+ harness.check(n1.getFirstChild(), n3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstLeaf.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstLeaf.java
new file mode 100644
index 00000000..998fc938
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getFirstLeaf.java
@@ -0,0 +1,48 @@
+/* getFirstLeaf.java -- some checks for the getFirstLeaf() method in the
+ DefaultMutableTreeNode class
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getFirstLeaf implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getFirstLeaf(), n1);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getFirstLeaf(), n2);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n1.getFirstLeaf(), n2);
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n2.add(n4);
+ harness.check(n1.getFirstLeaf(), n4);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getIndex.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getIndex.java
new file mode 100644
index 00000000..bb279fac
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getIndex.java
@@ -0,0 +1,61 @@
+/* getIndex.java -- some checks for the getIndex() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getIndex implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ DefaultMutableTreeNode n5 = new DefaultMutableTreeNode("E");
+ n1.add(n2);
+ n1.add(n3);
+ n1.add(n4);
+ harness.check(n1.getIndex(n2), 0);
+ harness.check(n1.getIndex(n3), 1);
+ harness.check(n1.getIndex(n4), 2);
+ harness.check(n1.getIndex(n5), -1);
+
+ // try null argument
+ boolean pass = false;
+ try
+ {
+ n1.getIndex(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastChild.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastChild.java
new file mode 100644
index 00000000..3c325efb
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastChild.java
@@ -0,0 +1,58 @@
+/* getLastChild.java -- some checks for the getLastChild() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.NoSuchElementException;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getLastChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ boolean pass = false;
+ try
+ {
+ n1.getLastChild();
+ }
+ catch (NoSuchElementException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getLastChild(), n2);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n1.getLastChild(), n3);
+ n1.remove(1);
+ harness.check(n1.getLastChild(), n2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastLeaf.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastLeaf.java
new file mode 100644
index 00000000..44c4a004
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getLastLeaf.java
@@ -0,0 +1,48 @@
+/* getLastLeaf.java -- some checks for the getLastLeaf() method in the
+ DefaultMutableTreeNode class
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getLastLeaf implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getLastLeaf(), n1);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getLastLeaf(), n2);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n1.getLastLeaf(), n3);
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n2.add(n4);
+ harness.check(n1.getLastLeaf(), n3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextLeaf.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextLeaf.java
new file mode 100644
index 00000000..fa3ba8ef
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextLeaf.java
@@ -0,0 +1,53 @@
+/* getNextLeaf.java -- some checks for the getNextLeaf() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getNextLeaf implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getNextLeaf(), null);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getNextLeaf(), null);
+ harness.check(n2.getNextLeaf(), null);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n2.getNextLeaf(), n3);
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ DefaultMutableTreeNode n5 = new DefaultMutableTreeNode("E");
+ n2.add(n4);
+ n2.add(n5);
+ harness.check(n4.getNextLeaf(), n5);
+ harness.check(n5.getNextLeaf(), n3);
+ harness.check(n2.getNextLeaf(), n3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextPreviousNode.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextPreviousNode.java
new file mode 100644
index 00000000..186846da
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextPreviousNode.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+public class getNextPreviousNode implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ h.check(DefaultMutableTreeNodeTest.A.getPreviousNode(), null);
+ h.check(DefaultMutableTreeNodeTest.A.getNextNode(), DefaultMutableTreeNodeTest.B);
+
+ h.check(DefaultMutableTreeNodeTest.Q.getPreviousNode(), DefaultMutableTreeNodeTest.J);
+ h.check(DefaultMutableTreeNodeTest.Q.getNextNode(), DefaultMutableTreeNodeTest.R);
+
+ h.check(DefaultMutableTreeNodeTest.P.getPreviousNode(), DefaultMutableTreeNodeTest.V);
+ h.check(DefaultMutableTreeNodeTest.P.getNextNode(), null);
+
+ h.check(DefaultMutableTreeNodeTest.Z.getPreviousNode(), DefaultMutableTreeNodeTest.Y);
+ h.check(DefaultMutableTreeNodeTest.Z.getNextNode(), DefaultMutableTreeNodeTest.V);
+
+ h.check(DefaultMutableTreeNodeTest.X.getPreviousNode(), DefaultMutableTreeNodeTest.W);
+ h.check(DefaultMutableTreeNodeTest.X.getNextNode(), DefaultMutableTreeNodeTest.M);
+
+ h.check(DefaultMutableTreeNodeTest.G.getPreviousNode(), DefaultMutableTreeNodeTest.C);
+ h.check(DefaultMutableTreeNodeTest.G.getNextNode(), DefaultMutableTreeNodeTest.L);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextSibling.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextSibling.java
new file mode 100644
index 00000000..43107b7f
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getNextSibling.java
@@ -0,0 +1,45 @@
+/* getNextSibling.java -- some checks for the getNextSibling() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getNextSibling implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getNextSibling(), null);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ n1.add(n3);
+ harness.check(n2.getNextSibling(), n3);
+ harness.check(n3.getNextSibling(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getParent.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getParent.java
new file mode 100644
index 00000000..90097f48
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getParent.java
@@ -0,0 +1,46 @@
+/* getParent.java -- Some checks for the parent() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getParent implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getParent(), null);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n2.getParent(), n1);
+ n2.setParent(null);
+ harness.check(n2.getParent(), null);
+ harness.check(n1.getChildCount(), 1);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPath.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPath.java
new file mode 100644
index 00000000..1f1f79f9
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPath.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+public class getPath implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ TreeNode[] path;
+
+ path = DefaultMutableTreeNodeTest.A.getPath();
+
+ h.check(path.length, 1, "array length 1");
+ h.check(path[0], DefaultMutableTreeNodeTest.A, "correct tree node 1");
+
+ path = DefaultMutableTreeNodeTest.U.getPath();
+
+ h.check(path.length, 5, "array length 2");
+ h.check(path[0], DefaultMutableTreeNodeTest.A, "correct tree node 2");
+ h.check(path[1], DefaultMutableTreeNodeTest.D, "correct tree node 3");
+ h.check(path[2], DefaultMutableTreeNodeTest.I, "correct tree node 4");
+ h.check(path[3], DefaultMutableTreeNodeTest.O, "correct tree node 5");
+ h.check(path[4], DefaultMutableTreeNodeTest.U, "correct tree node 6");
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousLeaf.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousLeaf.java
new file mode 100644
index 00000000..b80d4505
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousLeaf.java
@@ -0,0 +1,54 @@
+/* getPreviousLeaf.java -- some checks for the getPreviousLeaf() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getPreviousLeaf implements Testlet {
+
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getPreviousLeaf(), null);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n1.getPreviousLeaf(), null);
+ harness.check(n2.getPreviousLeaf(), null);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n3.getPreviousLeaf(), n2);
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ DefaultMutableTreeNode n5 = new DefaultMutableTreeNode("E");
+ n2.add(n4);
+ n2.add(n5);
+ harness.check(n4.getPreviousLeaf(), null);
+ harness.check(n5.getPreviousLeaf(), n4);
+ harness.check(n2.getPreviousLeaf(), null);
+ harness.check(n3.getPreviousLeaf(), n5);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousSibling.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousSibling.java
new file mode 100644
index 00000000..fee6e005
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getPreviousSibling.java
@@ -0,0 +1,45 @@
+/* getPreviousSibling.java -- some checks for the getPreviousSibling() method
+ in the DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getPreviousSibling implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getPreviousSibling(), null);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ n1.add(n3);
+ harness.check(n2.getPreviousSibling(), null);
+ harness.check(n3.getPreviousSibling(), n2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getSiblingCount.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getSiblingCount.java
new file mode 100644
index 00000000..9f1ed354
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/getSiblingCount.java
@@ -0,0 +1,51 @@
+/* getSiblingCount.java -- some checks for the getSiblingCount() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class getSiblingCount implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.getSiblingCount(), 1);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n2.getSiblingCount(), 1);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n2.getSiblingCount(), 2);
+ harness.check(n3.getSiblingCount(), 2);
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.add(n4);
+ harness.check(n2.getSiblingCount(), 3);
+ harness.check(n3.getSiblingCount(), 3);
+ harness.check(n4.getSiblingCount(), 3);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/insert.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/insert.java
new file mode 100644
index 00000000..12359890
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/insert.java
@@ -0,0 +1,119 @@
+/* insert.java -- Some checks for the insert() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class insert implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(MutableTreeNode, int)");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.insert(n2, 0);
+ harness.check(n1.getChildAt(0), n2);
+ n1.insert(n3, 0);
+ harness.check(n1.getChildAt(0), n3);
+ harness.check(n1.getChildAt(1), n2);
+ n1.insert(n4, 2);
+ harness.check(n1.getChildAt(0), n3);
+ harness.check(n1.getChildAt(1), n2);
+ harness.check(n1.getChildAt(2), n4);
+
+ // null
+ boolean pass = false;
+ try
+ {
+ n1.insert(null, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // negative
+ pass = false;
+ DefaultMutableTreeNode n5 = new DefaultMutableTreeNode("E");
+ try
+ {
+ n1.insert(n5, -1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // count + 1
+ pass = false;
+ try
+ {
+ n1.insert(n5, 4);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // node that doesn't allow children
+ DefaultMutableTreeNode n6 = new DefaultMutableTreeNode("F", false);
+ DefaultMutableTreeNode n7 = new DefaultMutableTreeNode("G");
+ pass = false;
+ try
+ {
+ n6.insert(n7, 0);
+ }
+ catch (IllegalStateException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // node that is an ancestor
+ DefaultMutableTreeNode n8 = new DefaultMutableTreeNode("H");
+ DefaultMutableTreeNode n9 = new DefaultMutableTreeNode("I");
+ DefaultMutableTreeNode n10 = new DefaultMutableTreeNode("J");
+ n8.add(n9);
+ n9.add(n10);
+ pass = false;
+ try
+ {
+ n10.insert(n8, 0);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isLeaf.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isLeaf.java
new file mode 100644
index 00000000..98997869
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isLeaf.java
@@ -0,0 +1,45 @@
+/* isLeaf.java -- some checks for the isLeaf() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class isLeaf implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.isLeaf(), true);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B", false);
+ n1.add(n2);
+ harness.check(n1.isLeaf(), false);
+ harness.check(n2.isLeaf(), true);
+ n1.remove(n2);
+ harness.check(n1.isLeaf(), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeAncestor.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeAncestor.java
new file mode 100644
index 00000000..cdce5c71
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeAncestor.java
@@ -0,0 +1,52 @@
+/* isNodeAncestor.java -- Some checks for the isNodeAncestor() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class isNodeAncestor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(MutableTreeNode)");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ n2.add(n3);
+ harness.check(n2.isNodeAncestor(n1), true);
+ harness.check(n2.isNodeAncestor(n2), true);
+ harness.check(n3.isNodeAncestor(n1), true);
+ harness.check(n3.isNodeAncestor(n2), true);
+ harness.check(n3.isNodeAncestor(n3), true);
+
+ harness.check(n1.isNodeAncestor(n2), false);
+ harness.check(n1.isNodeAncestor(n3), false);
+ harness.check(n1.isNodeAncestor(null), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeChild.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeChild.java
new file mode 100644
index 00000000..ea57a7e5
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeChild.java
@@ -0,0 +1,46 @@
+/* isNodeChild.java -- Some checks for the isNodeChild() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class isNodeChild implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(MutableTreeNode)");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ harness.check(n1.isNodeChild(n2), true);
+ harness.check(n1.isNodeChild(n3), false);
+ harness.check(n1.isNodeChild(null), false);
+ harness.check(n1.isNodeChild(n1), false);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeDescendant.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeDescendant.java
new file mode 100644
index 00000000..ba72f319
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeDescendant.java
@@ -0,0 +1,53 @@
+/* isNodeDescendant.java -- some checks for the isNodeDescendant() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class isNodeDescendant implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("(MutableTreeNode)");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ n2.add(n3);
+ harness.check(n1.isNodeDescendant(n1), true);
+ harness.check(n1.isNodeDescendant(n2), true);
+ harness.check(n1.isNodeDescendant(n3), true);
+ harness.check(n1.isNodeDescendant(null), false);
+ harness.check(n2.isNodeDescendant(n1), false);
+ harness.check(n2.isNodeDescendant(n2), true);
+ harness.check(n2.isNodeDescendant(n3), true);
+ harness.check(n3.isNodeDescendant(n1), false);
+ harness.check(n3.isNodeDescendant(n2), false);
+ harness.check(n3.isNodeDescendant(n3), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeRelated.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeRelated.java
new file mode 100644
index 00000000..f4ed3b37
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeRelated.java
@@ -0,0 +1,52 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.tree.*;
+
+public class isNodeRelated implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DefaultMutableTreeNode node = new DefaultMutableTreeNode();
+
+ h.check(! node.isNodeRelated(null));
+ h.check(! node.isNodeRelated(DefaultMutableTreeNodeTest.A));
+
+ Vector nodes = DefaultMutableTreeNodeTest.nodes;
+
+ for (int i = 0; i < nodes.size(); ++i)
+ for (int j = 0; j < nodes.size(); ++j)
+ {
+ DefaultMutableTreeNode node1 = (DefaultMutableTreeNode) nodes.get(i);
+ DefaultMutableTreeNode node2 = (DefaultMutableTreeNode) nodes.get(j);
+
+ h.check(node1.isNodeRelated(node2), "isNodeRelated");
+ }
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeSibling.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeSibling.java
new file mode 100644
index 00000000..beac34dd
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/isNodeSibling.java
@@ -0,0 +1,46 @@
+/* isNodeSibling.java -- some checks for the isNodeSibling() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class isNodeSibling implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ harness.check(n1.isNodeSibling(n1), true);
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ harness.check(n2.isNodeSibling(n1), false);
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n3);
+ harness.check(n2.isNodeSibling(n3), true);
+ harness.check(n3.isNodeSibling(n2), true);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/pathFromAncestorEnumeration.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/pathFromAncestorEnumeration.java
new file mode 100644
index 00000000..3b243301
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/pathFromAncestorEnumeration.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+import javax.swing.tree.*;
+
+public class pathFromAncestorEnumeration implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ boolean ok = false;
+
+ try
+ {
+ DefaultMutableTreeNodeTest.M.pathFromAncestorEnumeration(DefaultMutableTreeNodeTest.K);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ ok = true;
+ }
+
+ h.check(ok, "rejects invalid arguments");
+
+ ok = false;
+
+ try
+ {
+ DefaultMutableTreeNodeTest.A.pathFromAncestorEnumeration(null);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ ok = true;
+ }
+
+ h.check(ok, "rejects invalid arguments (null)");
+
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.A.pathFromAncestorEnumeration(DefaultMutableTreeNodeTest.A);
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.S.pathFromAncestorEnumeration(DefaultMutableTreeNodeTest.A);
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java
new file mode 100644
index 00000000..f9b06799
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/postorderEnumeration.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+public class postorderEnumeration implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.G.postorderEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.A.postorderEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Q);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.R);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.J);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.E);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.K);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.F);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.B);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.N);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.H);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Z);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Y);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.U);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.V);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.O);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.P);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.I);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.D);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java
new file mode 100644
index 00000000..a432a58a
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/preorderEnumeration.java
@@ -0,0 +1,75 @@
+// Tags: JDK1.2
+// Uses: DefaultMutableTreeNodeTest
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Enumeration;
+
+public class preorderEnumeration implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ Enumeration e;
+
+ e = DefaultMutableTreeNodeTest.G.preorderEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+
+ e = DefaultMutableTreeNodeTest.A.preorderEnumeration();
+
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.A);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.B);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.E);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.J);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Q);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.R);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.F);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.K);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.C);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.G);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.L);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.S);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.W);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.X);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.M);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.T);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.D);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.H);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.N);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.I);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.O);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.U);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Y);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.Z);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.V);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, DefaultMutableTreeNodeTest.P);
+ DefaultMutableTreeNodeTest.checkEnumeration(h, e, null);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/remove.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/remove.java
new file mode 100644
index 00000000..7c2082fc
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/remove.java
@@ -0,0 +1,123 @@
+/* remove.java -- Some checks for the remove() methods in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class remove implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ test1(harness);
+ test2(harness);
+ }
+
+ public void test1(TestHarness harness)
+ {
+ harness.checkPoint("(int)");
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.add(n2);
+ n1.add(n3);
+ n1.add(n4);
+
+ // remove valid item
+ n1.remove(2);
+ harness.check(n1.getChildCount(), 2);
+ harness.check(n1.isNodeChild(n4), false);
+ harness.check(n4.getParent(), null);
+
+ // remove negative index
+ boolean pass = false;
+ try
+ {
+ n1.remove(-1);
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // remove index = childCount
+ pass = false;
+ try
+ {
+ n1.remove(n1.getChildCount());
+ }
+ catch (ArrayIndexOutOfBoundsException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ public void test2(TestHarness harness)
+ {
+ harness.checkPoint("(MutableTreeNode)");
+
+ // remove known item
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ DefaultMutableTreeNode n4 = new DefaultMutableTreeNode("D");
+ n1.add(n2);
+ n1.add(n3);
+ n1.add(n4);
+ n1.remove(n4);
+ harness.check(n1.getChildCount(), 2);
+ harness.check(n1.isNodeChild(n4), false);
+ harness.check(n4.getParent(), null);
+
+ // remove unknown item
+ boolean pass = false;
+ try
+ {
+ n1.remove(new DefaultMutableTreeNode("Z"));
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ // remove null
+ pass = false;
+ try
+ {
+ n1.remove(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/removeAllChildren.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/removeAllChildren.java
new file mode 100644
index 00000000..a8a1126e
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/removeAllChildren.java
@@ -0,0 +1,50 @@
+/* removeAllChildren.java -- some checks for the removeAllChildren() method in
+ the DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class removeAllChildren implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ // calling when there are no children should do nothing
+ n1.removeAllChildren();
+ harness.check(n1.getChildCount(), 0);
+
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ DefaultMutableTreeNode n3 = new DefaultMutableTreeNode("C");
+ n1.add(n2);
+ n1.add(n3);
+ n1.removeAllChildren();
+ harness.check(n1.getChildCount(), 0);
+ harness.check(n2.getParent(), null);
+ harness.check(n3.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/setAllowsChildren.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/setAllowsChildren.java
new file mode 100644
index 00000000..493a5b9a
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/setAllowsChildren.java
@@ -0,0 +1,49 @@
+/* setAllowsChildren.java -- some checks for the setAllowsChildren() method in
+ the DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class setAllowsChildren implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode("A");
+ n1.setAllowsChildren(false);
+ harness.check(n1.getAllowsChildren(), false);
+ n1.setAllowsChildren(true);
+ harness.check(n1.getAllowsChildren(), true);
+
+ DefaultMutableTreeNode n2 = new DefaultMutableTreeNode("B");
+ n1.add(n2);
+ n1.setAllowsChildren(false);
+ harness.check(n1.getAllowsChildren(), false);
+ harness.check(n1.getChildCount(), 0);
+ harness.check(n2.getParent(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/toString.java b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/toString.java
new file mode 100644
index 00000000..ae6db9a4
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultMutableTreeNode/toString.java
@@ -0,0 +1,42 @@
+/* toString.java -- Some checks for the toString() method in the
+ DefaultMutableTreeNode class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultMutableTreeNode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+public class toString implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("()");
+ DefaultMutableTreeNode n0 = new DefaultMutableTreeNode(null);
+ harness.check(n0.toString(), null);
+ DefaultMutableTreeNode n1 = new DefaultMutableTreeNode(new Integer(100));
+ harness.check(n1.toString(), "100");
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Entries b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Entries
new file mode 100644
index 00000000..bf12ee22
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Entries
@@ -0,0 +1,17 @@
+/constructor.java/1.1/Sun May 28 21:25:19 2006//
+/getBackgroundNonSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/getBackgroundSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/getBorderSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/getClosedIcon.java/1.1/Sun May 28 21:25:19 2006//
+/getDefaultClosedIcon.java/1.1/Sun May 28 21:25:19 2006//
+/getDefaultLeafIcon.java/1.1/Sun May 28 21:25:19 2006//
+/getDefaultOpenIcon.java/1.1/Sun May 28 21:25:19 2006//
+/getLeafIcon.java/1.1/Sun May 28 21:25:19 2006//
+/getOpenIcon.java/1.1/Sun May 28 21:25:19 2006//
+/setBackgroundNonSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/setBackgroundSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/setBorderSelectionColor.java/1.1/Sun May 28 21:25:19 2006//
+/setClosedIcon.java/1.1/Sun May 28 21:25:19 2006//
+/setLeafIcon.java/1.1/Sun May 28 21:25:19 2006//
+/setOpenIcon.java/1.1/Sun May 28 21:25:19 2006//
+D
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Repository b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Repository
new file mode 100644
index 00000000..7a58313c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Root b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/constructor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/constructor.java
new file mode 100644
index 00000000..d0b49196
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/constructor.java
@@ -0,0 +1,40 @@
+/* constructor.java -- some checks for the constructor in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class constructor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getLeafIcon(), r.getDefaultLeafIcon());
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundNonSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundNonSelectionColor.java
new file mode 100644
index 00000000..d473f5ea
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundNonSelectionColor.java
@@ -0,0 +1,51 @@
+/* getBackgroundNonSelectionColor.java -- some checks for the
+ getBackgroundNonSelectionColor() method in the DefaultTreeCellRenderer
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getBackgroundNonSelectionColor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getBackgroundNonSelectionColor(), UIManager.getColor(
+ "Tree.textBackground"));
+ r.setBackgroundNonSelectionColor(null);
+ harness.check(r.getBackgroundNonSelectionColor(), null);
+
+ UIManager.put("Tree.textBackground", Color.red);
+ DefaultTreeCellRenderer r2 = new DefaultTreeCellRenderer();
+ harness.check(r2.getBackgroundNonSelectionColor(), Color.red);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundSelectionColor.java
new file mode 100644
index 00000000..efc580e0
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBackgroundSelectionColor.java
@@ -0,0 +1,45 @@
+/* getBackgroundSelectionColor.java -- some checks for the
+ getBackgroundSelectionColor() method in the DefaultTreeCellRenderer
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getBackgroundSelectionColor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getBackgroundSelectionColor(), UIManager.getColor(
+ "Tree.selectionBackground"));
+ r.setBackgroundSelectionColor(null);
+ harness.check(r.getBackgroundSelectionColor(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBorderSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBorderSelectionColor.java
new file mode 100644
index 00000000..73aac7cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getBorderSelectionColor.java
@@ -0,0 +1,44 @@
+/* getBorderSelectionColor.java -- some checks for the
+ getBorderSelectionColor() method in the DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getBorderSelectionColor implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getBorderSelectionColor(), UIManager.getColor(
+ "Tree.selectionBorderColor"));
+ r.setBorderSelectionColor(null);
+ harness.check(r.getBorderSelectionColor(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getClosedIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getClosedIcon.java
new file mode 100644
index 00000000..8ace722c
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getClosedIcon.java
@@ -0,0 +1,42 @@
+/* getClosedIcon.java -- some checks for the getClosedIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getClosedIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getClosedIcon(), r.getDefaultClosedIcon());
+ r.setClosedIcon(null);
+ harness.check(r.getClosedIcon(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultClosedIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultClosedIcon.java
new file mode 100644
index 00000000..99ecb372
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultClosedIcon.java
@@ -0,0 +1,44 @@
+/* getDefaultClosedIcon.java -- some checks for the getDefaultClosedIcon()
+ method in the DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getDefaultClosedIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getDefaultClosedIcon(), UIManager.get("Tree.closedIcon"));
+ UIManager.put("Tree.closedIcon", MetalIconFactory.getCheckBoxIcon());
+ harness.check(r.getDefaultClosedIcon(), MetalIconFactory.getCheckBoxIcon());
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultLeafIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultLeafIcon.java
new file mode 100644
index 00000000..a5a8794d
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultLeafIcon.java
@@ -0,0 +1,44 @@
+/* getDefaultLeafIcon.java -- some checks for the getDefaultLeafIcon() method
+ in the DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getDefaultLeafIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getDefaultLeafIcon(), UIManager.get("Tree.leafIcon"));
+ UIManager.put("Tree.leafIcon", MetalIconFactory.getCheckBoxIcon());
+ harness.check(r.getDefaultLeafIcon(), MetalIconFactory.getCheckBoxIcon());
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultOpenIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultOpenIcon.java
new file mode 100644
index 00000000..e3222fad
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getDefaultOpenIcon.java
@@ -0,0 +1,44 @@
+/* getDefaultOpenIcon.java -- some checks for the getDefaultOpenIcon() method
+ in the DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getDefaultOpenIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getDefaultOpenIcon(), UIManager.get("Tree.openIcon"));
+ UIManager.put("Tree.openIcon", MetalIconFactory.getCheckBoxIcon());
+ harness.check(r.getDefaultOpenIcon(), MetalIconFactory.getCheckBoxIcon());
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getLeafIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getLeafIcon.java
new file mode 100644
index 00000000..ab7b78e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getLeafIcon.java
@@ -0,0 +1,42 @@
+/* getLeafIcon.java -- some checks for the getLeafIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getLeafIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getLeafIcon(), r.getDefaultLeafIcon());
+ r.setLeafIcon(null);
+ harness.check(r.getLeafIcon(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getOpenIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getOpenIcon.java
new file mode 100644
index 00000000..2a034383
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/getOpenIcon.java
@@ -0,0 +1,42 @@
+/* getOpenIcon.java -- some checks for the getOpenIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class getOpenIcon implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ harness.check(r.getOpenIcon(), r.getDefaultOpenIcon());
+ r.setOpenIcon(null);
+ harness.check(r.getOpenIcon(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundNonSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundNonSelectionColor.java
new file mode 100644
index 00000000..0d22e311
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundNonSelectionColor.java
@@ -0,0 +1,63 @@
+/* setBackgroundNonSelectionColor.java -- some checks for the
+ setBackgroundNonSelectionColor() method in the DefaultTreeCellRenderer
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setBackgroundNonSelectionColor implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getBackgroundNonSelectionColor(), UIManager.getColor(
+ "Tree.textBackground"));
+ r.setBackgroundNonSelectionColor(Color.yellow);
+ harness.check(r.getBackgroundNonSelectionColor(), Color.yellow);
+ harness.check(lastEvent, null);
+ r.setBackgroundNonSelectionColor(null);
+ harness.check(r.getBackgroundNonSelectionColor(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundSelectionColor.java
new file mode 100644
index 00000000..7ee62018
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBackgroundSelectionColor.java
@@ -0,0 +1,63 @@
+/* setBackgroundSelectionColor.java -- some checks for the
+ setBackgroundSelectionColor() method in the DefaultTreeCellRenderer
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setBackgroundSelectionColor implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getBackgroundSelectionColor(), UIManager.getColor(
+ "Tree.selectionBackground"));
+ r.setBackgroundSelectionColor(Color.yellow);
+ harness.check(r.getBackgroundSelectionColor(), Color.yellow);
+ harness.check(lastEvent, null);
+ r.setBackgroundSelectionColor(null);
+ harness.check(r.getBackgroundSelectionColor(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBorderSelectionColor.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBorderSelectionColor.java
new file mode 100644
index 00000000..166e8f4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setBorderSelectionColor.java
@@ -0,0 +1,63 @@
+/* setBorderSelectionColor.java -- some checks for the
+ setBorderSelectionColor() method in the DefaultTreeCellRenderer
+ class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Color;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.UIManager;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setBorderSelectionColor implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getBorderSelectionColor(), UIManager.getColor(
+ "Tree.selectionBorderColor"));
+ r.setBorderSelectionColor(Color.yellow);
+ harness.check(r.getBorderSelectionColor(), Color.yellow);
+ harness.check(lastEvent, null);
+ r.setBorderSelectionColor(null);
+ harness.check(r.getBorderSelectionColor(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setClosedIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setClosedIcon.java
new file mode 100644
index 00000000..0621f245
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setClosedIcon.java
@@ -0,0 +1,60 @@
+/* setClosedIcon.java -- some checks for the setClosedIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setClosedIcon implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getClosedIcon(), r.getDefaultClosedIcon());
+ r.setClosedIcon(MetalIconFactory.getRadioButtonIcon());
+ harness.check(r.getClosedIcon(), MetalIconFactory.getRadioButtonIcon());
+ harness.check(lastEvent, null);
+ r.setClosedIcon(null);
+ harness.check(r.getClosedIcon(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setLeafIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setLeafIcon.java
new file mode 100644
index 00000000..d0a881b8
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setLeafIcon.java
@@ -0,0 +1,60 @@
+/* setLeafIcon.java -- some checks for the setLeafIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setLeafIcon implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getLeafIcon(), r.getDefaultLeafIcon());
+ r.setLeafIcon(MetalIconFactory.getRadioButtonIcon());
+ harness.check(r.getLeafIcon(), MetalIconFactory.getRadioButtonIcon());
+ harness.check(lastEvent, null);
+ r.setLeafIcon(null);
+ harness.check(r.getLeafIcon(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setOpenIcon.java b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setOpenIcon.java
new file mode 100644
index 00000000..7e660672
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeCellRenderer/setOpenIcon.java
@@ -0,0 +1,60 @@
+/* setOpenIcon.java -- some checks for the setOpenIcon() method in the
+ DefaultTreeCellRenderer class.
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.DefaultTreeCellRenderer;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.plaf.metal.MetalIconFactory;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+public class setOpenIcon implements Testlet, PropertyChangeListener
+{
+ PropertyChangeEvent lastEvent;
+
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ lastEvent = e;
+ }
+
+ public void test(TestHarness harness)
+ {
+ DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();
+ r.addPropertyChangeListener(this);
+ harness.check(r.getOpenIcon(), r.getDefaultOpenIcon());
+ r.setOpenIcon(MetalIconFactory.getRadioButtonIcon());
+ harness.check(r.getOpenIcon(), MetalIconFactory.getRadioButtonIcon());
+ harness.check(lastEvent, null);
+ r.setOpenIcon(null);
+ harness.check(r.getOpenIcon(), null);
+ harness.check(lastEvent, null);
+ }
+
+
+}
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Entries b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Entries
new file mode 100644
index 00000000..191212d3
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Entries
@@ -0,0 +1,2 @@
+/constructor.java/1.1/Mon Apr 25 20:47:10 2005//
+D
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Repository b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Repository
new file mode 100644
index 00000000..2e0c02b0
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Root b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/constructor.java b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/constructor.java
new file mode 100644
index 00000000..3517f6aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/DefaultTreeSelectionModel/constructor.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Roman Kennke <roman@kennke.org>
+
+// 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.javax.swing.tree.DefaultTreeSelectionModel;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreePath;
+
+/**
+ * Checks if the constructor of DefaultTreeSelectionModel initializes
+ * the object correctly.
+ *
+ * @author Roman Kennke
+ */
+public class constructor implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ DefaultTreeSelectionModel m = new DefaultTreeSelectionModel();
+ h.check(m.getLeadSelectionPath(), null, "getLeadSelectionPath()");
+ h.check(m.getLeadSelectionRow(), -1, "getLeadSelectionRow()");
+ h.check(m.getMaxSelectionRow(), -1, "getMaxSelectionRow()");
+ h.check(m.getMinSelectionRow(), -1, "getMinSelectionRow()");
+ h.check(m.getRowMapper(), null, "getRowMapper()");
+ h.check(m.getSelectionCount(), 0, "getSelectionCount()");
+ h.check(m.getSelectionMode(),
+ DefaultTreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION,
+ "getSelectionMode()");
+ h.check(m.getSelectionPath(), null, "getSelectionPath()");
+ h.check(m.getSelectionPaths(), null, "getSelectionPaths()");
+ h.check(m.getSelectionRows(), null, "getSelectionRows()");
+ h.check(m.isSelectionEmpty(), true, "isSelectionEmpty()");
+
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/CVS/Entries b/gnu/testlet/javax/swing/tree/TreePath/CVS/Entries
new file mode 100644
index 00000000..9eac411e
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/CVS/Entries
@@ -0,0 +1,12 @@
+/PR27651.java/1.1/Thu May 18 09:42:19 2006//
+/constructors.java/1.1/Wed Jul 13 16:56:00 2005//
+/equals.java/1.1/Wed Jul 13 16:56:00 2005//
+/getLastPathComponent.java/1.1/Wed Jul 13 16:56:00 2005//
+/getParentPath.java/1.2/Wed Jul 13 16:56:00 2005//
+/getPath.java/1.1/Wed Jul 13 16:56:00 2005//
+/getPathComponent.java/1.1/Wed Jul 13 16:56:00 2005//
+/getPathCount.java/1.1/Wed Jul 13 16:56:00 2005//
+/isDescendant.java/1.1/Wed Jul 13 16:56:00 2005//
+/pathByAddingChild.java/1.1/Wed Jul 13 16:56:00 2005//
+/serialization.java/1.1/Wed Jul 13 16:56:00 2005//
+D
diff --git a/gnu/testlet/javax/swing/tree/TreePath/CVS/Repository b/gnu/testlet/javax/swing/tree/TreePath/CVS/Repository
new file mode 100644
index 00000000..4da3c6f4
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree/TreePath
diff --git a/gnu/testlet/javax/swing/tree/TreePath/CVS/Root b/gnu/testlet/javax/swing/tree/TreePath/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/TreePath/PR27651.java b/gnu/testlet/javax/swing/tree/TreePath/PR27651.java
new file mode 100644
index 00000000..bef99297
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/PR27651.java
@@ -0,0 +1,121 @@
+/* PR27651.java -- a check related to PR27651
+ Copyright (C) 2006 David Gilbert <david.gilbert@object-refinery.com>
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+public class PR27651 implements Testlet
+{
+ static class A
+ {
+ String id;
+
+ public A(String id)
+ {
+ if (id == null)
+ id = "";
+ this.id = id;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (obj instanceof A)
+ {
+ A that = (A) obj;
+ return this.id.equals(that.id);
+ }
+ return false;
+ }
+ }
+
+ static class B extends A
+ {
+ int index;
+
+ public B(String id, int index)
+ {
+ super(id);
+ this.index = index;
+ }
+
+ /**
+ * Throws a ClassCastException if obj is not an instanceof B.
+ */
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ return true;
+ if (! super.equals(obj))
+ return false;
+ B that = (B) obj;
+ return (this.index == that.index);
+ }
+
+ }
+
+ /**
+ * This checks an implementation detail - that the reference implementation
+ * calls objA.equals(objB) within the TreePath.isDescendant() method, and
+ * not the reverse.
+ */
+ public void test(TestHarness harness)
+ {
+ A objA = new A("ABC");
+ B objB = new B("ABC", 99);
+
+ // confirm that objA.equals(objB) is true, but the reverse throws a
+ // ClassCastException...
+ harness.check(objA.equals(objB));
+ boolean pass = false;
+ try
+ {
+ objB.equals(objA);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ TreePath p1 = new TreePath(objA);
+ TreePath p2 = new TreePath(objB);
+ harness.check(p1.isDescendant(p2));
+
+ pass = false;
+ try
+ {
+ p2.isDescendant(p1);
+ }
+ catch (ClassCastException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/constructors.java b/gnu/testlet/javax/swing/tree/TreePath/constructors.java
new file mode 100644
index 00000000..c71644e7
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/constructors.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the constructors in the {@link TreePath} class.
+ */
+public class constructors implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ testConstructor1(harness);
+ testConstructor2(harness);
+ testConstructor3(harness);
+ testConstructor4(harness);
+ testConstructor5(harness);
+ }
+
+ private void testConstructor1(TestHarness harness)
+ {
+ harness.checkPoint("TreePath()");
+ // this constructor is protected, so need to subclass to access it
+ }
+
+ private void testConstructor2(TestHarness harness)
+ {
+ harness.checkPoint("TreePath(Object)");
+ TreePath p = new TreePath("XYZ");
+ harness.check(p.getPathCount(), 1);
+ harness.check(p.getLastPathComponent(), "XYZ");
+ harness.check(p.getParentPath(), null);
+ harness.check(Arrays.equals(p.getPath(), new String[] { "XYZ" }));
+
+ // null argument
+ boolean pass = false;
+ try
+ {
+ /*TreePath p2 =*/ new TreePath(null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor3(TestHarness harness)
+ {
+ harness.checkPoint("TreePath(Object[])");
+
+ // null argument
+ boolean pass = false;
+ try
+ {
+ /*TreePath p2 =*/ new TreePath((Object[]) null);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+ private void testConstructor4(TestHarness harness)
+ {
+ harness.checkPoint("TreePath(Object[], int)");
+ }
+
+ private void testConstructor5(TestHarness harness)
+ {
+ harness.checkPoint("TreePath(TreePath, Object)");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/equals.java b/gnu/testlet/javax/swing/tree/TreePath/equals.java
new file mode 100644
index 00000000..d49de7db
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/equals.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the equals() method in the {@link TreePath} class.
+ */
+public class equals implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath(new Integer(123));
+ TreePath p2 = new TreePath(new Integer(123));
+ harness.check(p1.equals(p2));
+ harness.check(p2.equals(p1));
+
+ p1 = new TreePath("Y");
+ harness.check(!p1.equals(p2));
+ p2 = new TreePath("Y");
+ harness.check(p1.equals(p2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/getLastPathComponent.java b/gnu/testlet/javax/swing/tree/TreePath/getLastPathComponent.java
new file mode 100644
index 00000000..f86f36ff
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/getLastPathComponent.java
@@ -0,0 +1,45 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the getLastPathCompoent() method in the {@link TreePath}
+ * class.
+ */
+public class getLastPathComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath(new Object[] {"A", "B", "C"});
+ harness.check(p1.getLastPathComponent(), "C");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/getParentPath.java b/gnu/testlet/javax/swing/tree/TreePath/getParentPath.java
new file mode 100644
index 00000000..5ecb2b26
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/getParentPath.java
@@ -0,0 +1,46 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Michael Koch <konqueror@gmx.de>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.*;
+
+/**
+ * Tests if getParentPath correctly returns null if the current TreePath only
+ * contains one element.
+ */
+public class getParentPath implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ TreePath test = new TreePath("Test");
+ h.check(test.getParentPath(), null);
+
+ TreePath p = new TreePath(new Object[] {"A", "B"});
+ TreePath parent = p.getParentPath();
+ h.check(parent, new TreePath("A"));
+
+ p = new TreePath(new Object[] {"A", "B", "C", "D"});
+ parent = p.getParentPath();
+ h.check(parent, new TreePath(new Object[] {"A", "B", "C"}));
+ }
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/getPath.java b/gnu/testlet/javax/swing/tree/TreePath/getPath.java
new file mode 100644
index 00000000..40de5966
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/getPath.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.util.Arrays;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the getPath() method in the {@link TreePath} class.
+ */
+public class getPath implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath("X");
+ Object[] o1 = p1.getPath();
+ harness.check(Arrays.equals(o1, new Object[] { "X" }));
+
+ // if we update the returned array, does the original path change?
+ o1[0] = "Y";
+ harness.check(p1.getLastPathComponent(), "X");
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/getPathComponent.java b/gnu/testlet/javax/swing/tree/TreePath/getPathComponent.java
new file mode 100644
index 00000000..e206fee0
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/getPathComponent.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the getPathComponent() method in the {@link TreePath} class.
+ */
+public class getPathComponent implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath(new Object[] {"X", "Y", "Z"});
+ harness.check(p1.getPathComponent(0), "X");
+ harness.check(p1.getPathComponent(1), "Y");
+ harness.check(p1.getPathComponent(2), "Z");
+
+ boolean pass = false;
+ try
+ {
+ p1.getPathComponent(3);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+
+ pass = false;
+ try
+ {
+ p1.getPathComponent(-1);
+ }
+ catch (IllegalArgumentException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/getPathCount.java b/gnu/testlet/javax/swing/tree/TreePath/getPathCount.java
new file mode 100644
index 00000000..09fa0b34
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/getPathCount.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the getPathCount() method in the {@link TreePath} class.
+ */
+public class getPathCount implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath("X");
+ harness.check(p1.getPathCount(), 1);
+
+ TreePath p2 = new TreePath(new Object[] {"A", "B", "C", "D", "E", "F"});
+ harness.check(p2.getPathCount(), 6);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/isDescendant.java b/gnu/testlet/javax/swing/tree/TreePath/isDescendant.java
new file mode 100644
index 00000000..367d3773
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/isDescendant.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the isDescendant() method in the {@link TreePath} class.
+ */
+public class isDescendant implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath(new Object[] {new Integer(1), new Integer(2),
+ new Integer(3)});
+ TreePath p2 = new TreePath(new Integer(1));
+ TreePath p3 = new TreePath(new Integer(2));
+ TreePath p4 = new TreePath(new Integer(3));
+ TreePath p5 = new TreePath(new Object[] {new Integer(1), new Integer(2)});
+ TreePath p6 = new TreePath(new Object[] {new Integer(2), new Integer(3)});
+ TreePath p7 = new TreePath(new Object[] {new Integer(1), new Integer(2),
+ new Integer(3)});
+ TreePath p8 = new TreePath(new Object[] {new Integer(1), new Integer(2),
+ new Integer(3), new Integer(4)});
+ TreePath p9 = new TreePath(new Object[] {new Integer(2), new Integer(3),
+ new Integer(4)});
+
+ harness.check(p1.isDescendant(p2), false);
+ harness.check(p1.isDescendant(p3), false);
+ harness.check(p1.isDescendant(p4), false);
+ harness.check(p1.isDescendant(p5), false);
+ harness.check(p1.isDescendant(p6), false);
+ harness.check(p1.isDescendant(p7), true);
+ harness.check(p1.isDescendant(p8), true);
+ harness.check(p1.isDescendant(p9), false);
+ harness.check(p1.isDescendant(null), false);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/pathByAddingChild.java b/gnu/testlet/javax/swing/tree/TreePath/pathByAddingChild.java
new file mode 100644
index 00000000..0f49c9f7
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/pathByAddingChild.java
@@ -0,0 +1,56 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some tests for the pathByAddingChild() method in the {@link TreePath} class.
+ */
+public class pathByAddingChild implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath("X");
+ TreePath p2 = p1.pathByAddingChild("Y");
+ harness.check(p2, new TreePath(new Object[] {"X", "Y"}));
+
+ boolean pass = false;
+ try
+ {
+ /*TreePath p3 =*/ p1.pathByAddingChild(null);
+ }
+ catch (NullPointerException e)
+ {
+ pass = true;
+ }
+ harness.check(pass);
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/TreePath/serialization.java b/gnu/testlet/javax/swing/tree/TreePath/serialization.java
new file mode 100644
index 00000000..eb537da5
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/TreePath/serialization.java
@@ -0,0 +1,69 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 David Gilbert <david.gilbert@object-refinery.com>
+
+// 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.javax.swing.tree.TreePath;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+import javax.swing.tree.TreePath;
+
+/**
+ * Some checks for serialization of a {@link TreePath} instance.
+ */
+public class serialization implements Testlet
+{
+
+ /**
+ * Runs the test using the specified harness.
+ *
+ * @param harness the test harness (<code>null</code> not permitted).
+ */
+ public void test(TestHarness harness)
+ {
+ TreePath p1 = new TreePath(new Object[] {new Integer(1), new Integer(2)});
+ TreePath p2 = null;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(buffer);
+ out.writeObject(p1);
+ out.close();
+
+ ObjectInput in = new ObjectInputStream(
+ new ByteArrayInputStream(buffer.toByteArray())
+ );
+ p2 = (TreePath) in.readObject();
+ in.close();
+ }
+ catch (Exception e) {
+ harness.debug(e);
+ }
+ harness.check(p1.equals(p2));
+ }
+
+}
diff --git a/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Entries b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Entries
new file mode 100644
index 00000000..e90fbdd6
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Entries
@@ -0,0 +1,2 @@
+/getBounds.java/1.1/Wed Oct 4 15:32:42 2006//
+D
diff --git a/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Repository b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Repository
new file mode 100644
index 00000000..06bfe442
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache
diff --git a/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Root b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/getBounds.java b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/getBounds.java
new file mode 100644
index 00000000..31c45ab5
--- /dev/null
+++ b/gnu/testlet/javax/swing/tree/VariableHeightLayoutCache/getBounds.java
@@ -0,0 +1,74 @@
+/* getBounds.java -- Tests VariableHeightLayoutCache.getBounds()
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.2
+
+package gnu.testlet.javax.swing.tree.VariableHeightLayoutCache;
+
+import java.awt.Rectangle;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.VariableHeightLayoutCache;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * Checks the VariableHeightLayoutCache.getBounds() method.
+ *
+ */
+public class getBounds implements Testlet
+{
+
+ /**
+ * The entry point for the test.
+ *
+ * @param harness the test harness to use
+ */
+ public void test(TestHarness harness)
+ {
+ testNullRect(harness);
+ }
+
+ /**
+ * Checks how null arguments for the rectangle is handle.
+ *
+ * @param h the test harness to use
+ */
+ private void testNullRect(TestHarness h)
+ {
+ VariableHeightLayoutCache c = new VariableHeightLayoutCache();
+ DefaultMutableTreeNode n = new DefaultMutableTreeNode();
+ TreePath p = new TreePath(n);
+ DefaultTreeModel m = new DefaultTreeModel(n);
+ c.setModel(m);
+ Rectangle r = new Rectangle();
+ // Check if the supplied rectangle is reused.
+ Rectangle s = c.getBounds(p, r);
+ h.check(r == s);
+ // Check if a new rectangle is created when supplying null.
+ s = c.getBounds(p, null);
+ h.check(s != null);
+ h.check(s != r);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Entries b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Entries
new file mode 100644
index 00000000..8147cb89
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Entries
@@ -0,0 +1,11 @@
+/addEdit.java/1.1/Fri Nov 14 16:46:01 2003//
+/canRedo.java/1.1/Fri Nov 14 16:46:01 2003//
+/canUndo.java/1.1/Fri Nov 14 16:46:01 2003//
+/getPresentationName.java/1.1/Fri Nov 14 16:46:01 2003//
+/getRedoPresentationName.java/1.1/Fri Nov 14 16:46:01 2003//
+/getUndoPresentationName.java/1.1/Fri Nov 14 16:46:01 2003//
+/isSignificant.java/1.1/Fri Nov 14 16:46:01 2003//
+/redo.java/1.1/Fri Nov 14 16:46:01 2003//
+/replaceEdit.java/1.1/Fri Nov 14 16:46:01 2003//
+/undo.java/1.1/Fri Nov 14 16:46:01 2003//
+D
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Repository b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Repository
new file mode 100644
index 00000000..12503a3a
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo/AbstractUndoableEdit
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Root b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/addEdit.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/addEdit.java
new file mode 100644
index 00000000..d10833da
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/addEdit.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.addEdit method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class addEdit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(!edit.addEdit(edit));
+
+ // Check #2.
+ harness.check(!edit.addEdit(null));
+
+ // Check #3.
+ harness.check(!edit.addEdit(new AbstractUndoableEdit()));
+
+ // Check #4.
+ edit.die();
+ harness.check(!edit.addEdit(edit));
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canRedo.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canRedo.java
new file mode 100644
index 00000000..5fb7ebe0
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canRedo.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.canRedo method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class canRedo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(!edit.canRedo());
+
+ // Check #2.
+ edit.undo();
+ harness.check(edit.canRedo());
+
+ // Check #3.
+ edit.redo();
+ harness.check(!edit.canRedo());
+
+ // Check #4.
+ edit.undo();
+ harness.check(edit.canRedo());
+
+ // Check #5.
+ edit.die();
+ harness.check(!edit.canRedo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canUndo.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canUndo.java
new file mode 100644
index 00000000..a2afd0f5
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/canUndo.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.canUndo method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class canUndo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(edit.canUndo());
+
+ // Check #2.
+ edit.undo();
+ harness.check(!edit.canUndo());
+
+ // Check #3.
+ edit.redo();
+ harness.check(edit.canUndo());
+
+ // Check #4.
+ edit.die();
+ harness.check(!edit.canUndo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getPresentationName.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getPresentationName.java
new file mode 100644
index 00000000..0f7be410
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getPresentationName.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.getPresentationName method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(edit.getPresentationName(), "");
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getRedoPresentationName.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getRedoPresentationName.java
new file mode 100644
index 00000000..aaeafdfd
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getRedoPresentationName.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.UIManager;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.getRedoPresentationName method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getRedoPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+ String oldValue;
+ edit = new AbstractUndoableEdit()
+ {
+ public String getPresentationName()
+ {
+ return "Action";
+ }
+ };
+
+ // Check #1.
+ oldValue = UIManager.getString("AbstractUndoableEdit.undoText");
+ UIManager.put("AbstractUndoableEdit.redoText", "RedoBar");
+ harness.check(edit.getRedoPresentationName(), "RedoBar Action");
+
+ // Check #2.
+ edit = new AbstractUndoableEdit();
+ harness.check(edit.getRedoPresentationName(), "RedoBar");
+
+ UIManager.put("AbstractUndoableEdit.redoText", oldValue);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getUndoPresentationName.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getUndoPresentationName.java
new file mode 100644
index 00000000..2829c5b3
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/getUndoPresentationName.java
@@ -0,0 +1,63 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.UIManager;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.getUndoPresentationName method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getUndoPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+ String oldValue;
+ edit = new AbstractUndoableEdit()
+ {
+ public String getPresentationName()
+ {
+ return "Action";
+ }
+ };
+
+ // Check #1.
+ oldValue = UIManager.getString("AbstractUndoableEdit.undoText");
+ UIManager.put("AbstractUndoableEdit.undoText", "UndoFoo");
+ harness.check(edit.getUndoPresentationName(), "UndoFoo Action");
+
+ // Check #2.
+ edit = new AbstractUndoableEdit();
+ harness.check(edit.getUndoPresentationName(), "UndoFoo");
+
+ UIManager.put("AbstractUndoableEdit.undoText", oldValue);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/isSignificant.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/isSignificant.java
new file mode 100644
index 00000000..c04b35bf
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/isSignificant.java
@@ -0,0 +1,48 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.isSignificant method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class isSignificant
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(edit.isSignificant());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/redo.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/redo.java
new file mode 100644
index 00000000..428de452
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/redo.java
@@ -0,0 +1,93 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CannotRedoException;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.redo method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class redo
+ implements Testlet
+{
+ private class MyEdit
+ extends AbstractUndoableEdit
+ {
+ public boolean redoable;
+
+ public boolean canRedo()
+ {
+ return redoable;
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ MyEdit edit;
+ Throwable caught;
+
+ // Check #1: No exception for redoable = true.
+ edit = new MyEdit();
+ edit.redoable = true;
+ edit.undo();
+ edit.redo();
+ harness.check(true);
+
+ // Check #2: Exception for redoable = false;
+ edit.redoable = false;
+ try
+ {
+ edit.undo();
+ edit.redo();
+ caught = null;
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof CannotRedoException);
+
+ // Check #3: Exception for dead edit.
+ AbstractUndoableEdit aue = new AbstractUndoableEdit();
+ aue.undo();
+ aue.die();
+ try
+ {
+ aue.redo();
+ caught = null;
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof CannotRedoException);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/replaceEdit.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/replaceEdit.java
new file mode 100644
index 00000000..4b5753c4
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/replaceEdit.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.replaceEdit method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class replaceEdit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ AbstractUndoableEdit edit;
+
+ edit = new AbstractUndoableEdit();
+
+ // Check #1.
+ harness.check(!edit.replaceEdit(edit));
+
+ // Check #2.
+ harness.check(!edit.replaceEdit(null));
+
+ // Check #3.
+ harness.check(!edit.replaceEdit(new AbstractUndoableEdit()));
+
+ // Check #4.
+ edit.die();
+ harness.check(!edit.replaceEdit(edit));
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/undo.java b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/undo.java
new file mode 100644
index 00000000..b9db3ef8
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/AbstractUndoableEdit/undo.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.AbstractUndoableEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CannotUndoException;
+
+
+/**
+ * Checks whether the AbstractUndoableEdit.undo method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class undo
+ implements Testlet
+{
+ private class MyEdit
+ extends AbstractUndoableEdit
+ {
+ public boolean undoable;
+
+ public boolean canUndo()
+ {
+ return undoable;
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ MyEdit edit;
+ Throwable caught;
+
+ // Check #1: No exception for undoable = true.
+ edit = new MyEdit();
+ edit.undoable = true;
+ edit.undo();
+ edit.redo();
+ harness.check(true);
+
+ // Check #2: Exception for undoable = false;
+ edit.undoable = false;
+ try
+ {
+ edit.undo();
+ caught = null;
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof CannotUndoException);
+
+ // Check #3: Exception for dead edit.
+ AbstractUndoableEdit aue = new AbstractUndoableEdit();
+ aue.die();
+ try
+ {
+ aue.undo();
+ caught = null;
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught instanceof CannotUndoException);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/CVS/Entries b/gnu/testlet/javax/swing/undo/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/swing/undo/CVS/Entries.Log b/gnu/testlet/javax/swing/undo/CVS/Entries.Log
new file mode 100644
index 00000000..a0e882e4
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/AbstractUndoableEdit////
+A D/CompoundEdit////
+A D/StateEdit////
+A D/UndoManager////
+A D/UndoableEditSupport////
diff --git a/gnu/testlet/javax/swing/undo/CVS/Repository b/gnu/testlet/javax/swing/undo/CVS/Repository
new file mode 100644
index 00000000..67682dff
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo
diff --git a/gnu/testlet/javax/swing/undo/CVS/Root b/gnu/testlet/javax/swing/undo/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Entries b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Entries
new file mode 100644
index 00000000..1998390c
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Entries
@@ -0,0 +1,6 @@
+/addEdit.java/1.1/Wed Jan 7 08:48:32 2004//
+/canRedo.java/1.2/Thu Jun 3 14:31:19 2004//
+/canUndo.java/1.2/Thu Jun 3 14:31:19 2004//
+/isInProgress.java/1.1/Wed Jan 7 08:48:32 2004//
+/lastEdit.java/1.1/Wed Jan 7 08:48:32 2004//
+D
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Repository b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Repository
new file mode 100644
index 00000000..9de36cab
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo/CompoundEdit
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Root b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/addEdit.java b/gnu/testlet/javax/swing/undo/CompoundEdit/addEdit.java
new file mode 100644
index 00000000..f3c6c41c
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/addEdit.java
@@ -0,0 +1,128 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.CompoundEdit;
+
+import java.util.Vector;
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.*;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class addEdit
+ implements Testlet
+{
+ private class E1
+ extends AbstractUndoableEdit
+ {
+ }
+
+ private class E2
+ extends AbstractUndoableEdit
+ {
+ public boolean addEdit(UndoableEdit edit)
+ {
+ return edit instanceof E1;
+ }
+ }
+
+ private class E3
+ extends AbstractUndoableEdit
+ {
+ public boolean replaceEdit(UndoableEdit edit)
+ {
+ return edit instanceof E2;
+ }
+ }
+
+ /**
+ * A special subclass of CompoundEdit that allows retrieving the
+ * protected list of UndoableEdits. This makes testing easier.
+ */
+ private class MyCompoundEdit
+ extends CompoundEdit
+ {
+ public Vector getEdits()
+ {
+ return edits;
+ }
+
+ public UndoableEdit getLast()
+ {
+ return (UndoableEdit) lastEdit();
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ MyCompoundEdit edit = new MyCompoundEdit();
+ Throwable caught;
+
+ // Check #1.
+ harness.check(edit.addEdit(new E1())
+ && (edit.getEdits().size() == 1));
+
+ // Check #2.
+ harness.check(edit.addEdit(new E2())
+ && (edit.getEdits().size() == 2));
+
+ // Check #3. E2 should absorb E1.
+ harness.check(edit.addEdit(new E1())
+ && (edit.getEdits().size() == 2)
+ && (edit.getLast() instanceof E2));
+
+ // Check #4. E3 should replace E2.
+ harness.check(edit.addEdit(new E3())
+ && (edit.getEdits().size() == 2)
+ && (edit.getLast() instanceof E3));
+
+ // Check #5. E1 should not replace E3.
+ harness.check(edit.addEdit(new E1())
+ && (edit.getEdits().size() == 3)
+ && (edit.getLast() instanceof E1));
+
+ // Check #6. E3 should not replace E1.
+ harness.check(edit.addEdit(new E3())
+ && (edit.getEdits().size() == 4)
+ && (edit.getLast() instanceof E3));
+
+ // Check #7. Null does not taste good.
+ caught = null;
+ try
+ {
+ edit.addEdit(null);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught != null);
+
+ // Check #8. No further additions after calling end().
+ edit.end();
+ harness.check((edit.addEdit(new E1()) == false)
+ && (edit.getEdits().size() == 4));
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/canRedo.java b/gnu/testlet/javax/swing/undo/CompoundEdit/canRedo.java
new file mode 100644
index 00000000..1fd9083f
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/canRedo.java
@@ -0,0 +1,62 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.CompoundEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CompoundEdit;
+
+
+/**
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class canRedo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CompoundEdit edit;
+
+ // Check #1.
+ edit = new CompoundEdit();
+ edit.addEdit(new AbstractUndoableEdit());
+ harness.check(!edit.canRedo());
+
+ // Check #2.
+ edit.end();
+ harness.check(!edit.canRedo());
+
+ // Check #3.
+ edit.undo();
+ harness.check(edit.canRedo());
+
+ // Check #4.
+ edit.redo();
+ harness.check(!edit.canRedo());
+
+ // Check #5.
+ edit.die();
+ harness.check(!edit.canRedo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/canUndo.java b/gnu/testlet/javax/swing/undo/CompoundEdit/canUndo.java
new file mode 100644
index 00000000..f9c25be0
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/canUndo.java
@@ -0,0 +1,65 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.CompoundEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CompoundEdit;
+
+
+/**
+ * Checks whether the CompoundEdit.canUndo method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class canUndo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CompoundEdit edit;
+
+ // Check #1.
+ edit = new CompoundEdit();
+ edit.addEdit(new AbstractUndoableEdit());
+ harness.check(!edit.canUndo());
+
+ // Check #2.
+ edit.end();
+ harness.check(edit.canUndo());
+
+ // Check #3.
+ edit.undo();
+ harness.check(!edit.canUndo());
+
+ // Check #4.
+ edit.redo();
+ harness.check(edit.canUndo());
+
+ // Check #5.
+ edit.die();
+ harness.check(!edit.canUndo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/isInProgress.java b/gnu/testlet/javax/swing/undo/CompoundEdit/isInProgress.java
new file mode 100644
index 00000000..56523953
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/isInProgress.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.CompoundEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.CompoundEdit;
+
+
+/**
+ * Checks whether the CompoundEdit.isInProgress method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class isInProgress
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ CompoundEdit edit;
+
+ // Check #1.
+ edit = new CompoundEdit();
+ harness.check(edit.isInProgress());
+
+ // Check #2.
+ edit.end();
+ harness.check(!edit.isInProgress());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/CompoundEdit/lastEdit.java b/gnu/testlet/javax/swing/undo/CompoundEdit/lastEdit.java
new file mode 100644
index 00000000..3cbdefc6
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/CompoundEdit/lastEdit.java
@@ -0,0 +1,68 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.CompoundEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CompoundEdit;
+import javax.swing.undo.UndoableEdit;
+
+
+/**
+ * Checks whether the CompoundEdit.lastEdit method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class lastEdit
+ implements Testlet
+{
+ private static class MyCompoundEdit
+ extends CompoundEdit
+ {
+ public UndoableEdit getLast()
+ {
+ return lastEdit();
+ }
+ }
+
+
+ public void test(TestHarness harness)
+ {
+ MyCompoundEdit edit;
+ AbstractUndoableEdit e1, e2;
+
+ // Check #1.
+ edit = new MyCompoundEdit();
+ harness.check(edit.getLast() == null);
+
+ // Check #2.
+ edit.addEdit(e1 = new AbstractUndoableEdit());
+ harness.check(edit.getLast() == e1);
+
+ // Check #3.
+ edit.addEdit(e2 = new AbstractUndoableEdit());
+ harness.check(edit.getLast() == e2);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/StateEdit/CVS/Entries b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Entries
new file mode 100644
index 00000000..5521604f
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Entries
@@ -0,0 +1,3 @@
+/getPresentationName.java/1.1/Fri Nov 14 16:46:01 2003//
+/undo.java/1.1/Fri Nov 14 16:46:01 2003//
+D
diff --git a/gnu/testlet/javax/swing/undo/StateEdit/CVS/Repository b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Repository
new file mode 100644
index 00000000..599f78f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo/StateEdit
diff --git a/gnu/testlet/javax/swing/undo/StateEdit/CVS/Root b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/StateEdit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/StateEdit/getPresentationName.java b/gnu/testlet/javax/swing/undo/StateEdit/getPresentationName.java
new file mode 100644
index 00000000..d53763cc
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/StateEdit/getPresentationName.java
@@ -0,0 +1,58 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.StateEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Hashtable;
+import javax.swing.undo.StateEdit;
+import javax.swing.undo.StateEditable;
+
+
+/**
+ * Checks whether the StateEdit.getPresentationName method
+ * works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class getPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ StateEdit edit;
+ StateEditable edited = new StateEditable()
+ {
+ public void storeState(Hashtable state) { }
+ public void restoreState(Hashtable state) { }
+ };
+
+ // Check #1.
+ edit = new StateEdit(edited, "Ostracize");
+ harness.check(edit.getPresentationName(), "Ostracize");
+
+ // Check #2.
+ edit = new StateEdit(edited);
+ harness.check(edit.getPresentationName() == null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/StateEdit/undo.java b/gnu/testlet/javax/swing/undo/StateEdit/undo.java
new file mode 100644
index 00000000..04a7ac56
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/StateEdit/undo.java
@@ -0,0 +1,91 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.StateEdit;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Hashtable;
+import javax.swing.undo.StateEdit;
+import javax.swing.undo.StateEditable;
+
+
+/**
+ * Checks whether the StateEdit.undo method works correctly.
+ *
+ * @author Sascha Brawer (brawer@dandelis.ch)
+ */
+public class undo
+ implements Testlet
+{
+ private static class Person
+ implements StateEditable
+ {
+ private String name;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public void restoreState(Hashtable h)
+ {
+ if (h.containsKey("name"))
+ setName((String) h.get("name"));
+ }
+
+ public void storeState(Hashtable h)
+ {
+ h.put("name", name);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ StateEdit edit;
+ Person p;
+
+ // Check #1.
+ p = new Person();
+ p.setName("Daniel Dandelion");
+ edit = new StateEdit(p, "Name Change");
+ harness.check(p.getName(), "Daniel Dandelion");
+
+ // Check #2.
+ p.setName("Rose Rosenholz");
+ edit.end();
+ harness.check(p.getName(), "Rose Rosenholz");
+
+ // Check #3.
+ edit.undo();
+ harness.check(p.getName(), "Daniel Dandelion");
+
+ // Check #4.
+ edit.redo();
+ harness.check(p.getName(), "Rose Rosenholz");
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/CVS/Entries b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Entries
new file mode 100644
index 00000000..e6cbfa10
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Entries
@@ -0,0 +1,20 @@
+/TestUndoManager.java/1.2/Mon Jan 17 21:40:07 2005//
+/addEdit.java/1.1/Wed Feb 11 12:15:32 2004//
+/canRedo.java/1.1/Wed Feb 11 12:15:32 2004//
+/canUndo.java/1.1/Wed Feb 11 12:15:32 2004//
+/canUndoOrRedo.java/1.1/Wed Feb 11 12:15:32 2004//
+/discardAllEdits.java/1.1/Wed Feb 11 12:15:32 2004//
+/editToBeRedone.java/1.2/Thu Jun 3 14:31:19 2004//
+/editToBeUndone.java/1.2/Thu Jun 3 14:31:19 2004//
+/end.java/1.1/Wed Feb 11 12:15:32 2004//
+/getLimit.java/1.1/Wed Feb 11 12:15:32 2004//
+/getRedoPresentationName.java/1.1/Wed Feb 11 12:15:32 2004//
+/getUndoOrRedoPresentationName.java/1.1/Wed Feb 11 12:15:32 2004//
+/getUndoPresentationName.java/1.1/Wed Feb 11 12:15:32 2004//
+/redoTo.java/1.1/Wed Feb 11 12:15:32 2004//
+/setLimit.java/1.1/Wed Feb 11 12:15:32 2004//
+/toString.java/1.1/Wed Feb 11 12:15:32 2004//
+/trimEdits.java/1.2/Thu Jun 3 14:31:19 2004//
+/undoTo.java/1.1/Wed Feb 11 12:15:32 2004//
+/undoableEditHappened.java/1.1/Wed Feb 11 12:15:32 2004//
+D
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/CVS/Repository b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Repository
new file mode 100644
index 00000000..9e6c5b1a
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo/UndoManager
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/CVS/Root b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java b/gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java
new file mode 100644
index 00000000..efdcceb8
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/TestUndoManager.java
@@ -0,0 +1,176 @@
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import java.util.Vector;
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.UndoableEdit;
+import javax.swing.undo.UndoManager;
+
+
+/**
+ * An UndoManager that exposes various protected data structures,
+ * which makes it easier to ensure that the internal state is
+ * correct after calling public methods.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class TestUndoManager
+ extends UndoManager
+{
+ public int numTrimForLimitCalls;
+
+ protected void trimForLimit()
+ {
+ ++numTrimForLimitCalls;
+ super.trimForLimit();
+ }
+
+ public Vector getEdits()
+ {
+ return edits;
+ }
+
+ public void invokeTrimEdits(int from, int to)
+ {
+ // UndoManager.trimEdits is protected
+ trimEdits(from, to);
+ }
+
+ public void invokeRedoTo(UndoableEdit edit)
+ {
+ // UndoManager.redoTo is protected
+ redoTo(edit);
+ }
+
+ public void invokeUndoTo(UndoableEdit edit)
+ {
+ // UndoManager.undoTo is protected
+ undoTo(edit);
+ }
+
+ public UndoableEdit getEditToBeRedone()
+ {
+ // UndoManager.editToBeRedone is protected
+ return editToBeRedone();
+ }
+
+ public UndoableEdit getEditToBeUndone()
+ {
+ // UndoManager.editToBeUndone is protected
+ return editToBeUndone();
+ }
+
+ public TestEdit[] addTestEdits(int firstID, int count)
+ {
+ TestEdit[] result = new TestEdit[count];
+ for (int i = 0; i < count; i++)
+ {
+ result[i] = new TestEdit(firstID + i);
+ addEdit(result[i]);
+ }
+ return result;
+ }
+
+
+ public boolean checkIDs(int[] expected)
+ {
+ if (expected.length != edits.size())
+ return false;
+
+ for (int i = 0; i < expected.length; i++)
+ if (expected[i] != ((TestEdit) edits.get(i)).id)
+ return false;
+
+ return true;
+ }
+
+
+ public static class TestEdit
+ extends AbstractUndoableEdit
+ {
+ public final int id;
+ private boolean significant = true;
+ private boolean inhibitCanRedo = false;
+ private boolean inhibitCanUndo = false;
+
+ public TestEdit(int id)
+ {
+ this.id = id;
+ }
+
+ public boolean isAlive()
+ {
+ return canRedo() || canUndo();
+ }
+
+ public boolean isSignificant()
+ {
+ return significant;
+ }
+
+
+ public void setSignificant(boolean significant)
+ {
+ this.significant = significant;
+ }
+
+ public void inhibitCanUndo()
+ {
+ inhibitCanUndo = true;
+ }
+
+ public void inhibitCanRedo()
+ {
+ inhibitCanRedo = true;
+ }
+
+ public String toString()
+ {
+ return super.toString() + " id: " + id;
+ }
+
+ public boolean canRedo()
+ {
+ if (inhibitCanRedo)
+ return false;
+ else
+ return super.canRedo();
+ }
+
+ public boolean canUndo()
+ {
+ if (inhibitCanUndo)
+ return false;
+ else
+ return super.canUndo();
+ }
+
+ public String getUndoPresentationName()
+ {
+ return "UndoPres" + id;
+ }
+
+ public String getRedoPresentationName()
+ {
+ return "RedoPres" + id;
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/addEdit.java b/gnu/testlet/javax/swing/undo/UndoManager/addEdit.java
new file mode 100644
index 00000000..0737b4e0
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/addEdit.java
@@ -0,0 +1,73 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class addEdit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+
+ // Check #1: Limit does not interfere.
+ mgr = new TestUndoManager();
+ mgr.setLimit(3);
+ mgr.addTestEdits(10, 3);
+ harness.check(mgr.checkIDs(new int[] { 10, 11, 12 }));
+
+ // Check #2: Limit to two edits, but add three edits.
+ mgr = new TestUndoManager();
+ mgr.setLimit(2);
+ mgr.addTestEdits(10, 3);
+ harness.check(mgr.checkIDs(new int[] { 11, 12 }));
+
+ // Check #3.
+ mgr = new TestUndoManager();
+ mgr.setLimit(3);
+ mgr.addTestEdits(10, 4);
+ mgr.undo();
+ mgr.addTestEdits(100, 1);
+ harness.check(mgr.checkIDs(new int[] { 11, 12, 100 }));
+
+ // Check #4.
+ mgr.undo();
+ mgr.redo();
+ mgr.undo();
+ mgr.undo();
+ mgr.addTestEdits(200, 1);
+ harness.check(mgr.checkIDs(new int[] { 11, 200 }));
+
+ // Check #5.
+ mgr.undo();
+ mgr.undo();
+ mgr.addTestEdits(300, 1);
+ harness.check(mgr.checkIDs(new int[] {300 }));
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/canRedo.java b/gnu/testlet/javax/swing/undo/UndoManager/canRedo.java
new file mode 100644
index 00000000..3e9c1564
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/canRedo.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class canRedo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ mgr = new TestUndoManager();
+ harness.check(!mgr.canRedo());
+
+ // Check #2.
+ edits = mgr.addTestEdits(3, 3);
+ harness.check(!mgr.canRedo());
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.canRedo());
+
+ // Check #4.
+ edits[2].inhibitCanRedo();
+ harness.check(!mgr.canRedo());
+
+ // Check #5.
+ mgr.end();
+ harness.check(!mgr.canRedo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/canUndo.java b/gnu/testlet/javax/swing/undo/UndoManager/canUndo.java
new file mode 100644
index 00000000..4f06fa28
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/canUndo.java
@@ -0,0 +1,60 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class canUndo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ mgr = new TestUndoManager();
+ harness.check(!mgr.canUndo());
+
+ // Check #2.
+ edits = mgr.addTestEdits(3, 3);
+ harness.check(mgr.canUndo());
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.canUndo());
+
+ // Check #4.
+ edits[2].inhibitCanUndo();
+ harness.check(mgr.canUndo());
+
+ // Check #5.
+ mgr.end();
+ harness.check(mgr.canUndo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/canUndoOrRedo.java b/gnu/testlet/javax/swing/undo/UndoManager/canUndoOrRedo.java
new file mode 100644
index 00000000..676c6774
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/canUndoOrRedo.java
@@ -0,0 +1,61 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class canUndoOrRedo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ mgr = new TestUndoManager();
+ mgr.setLimit(1);
+ harness.check(!mgr.canUndoOrRedo());
+
+ // Check #2.
+ edits = mgr.addTestEdits(1, 1);
+ harness.check(mgr.canUndoOrRedo());
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.canUndoOrRedo());
+
+ // Check #4.
+ edits[0].inhibitCanRedo();
+ harness.check(!mgr.canUndoOrRedo());
+
+ // Check #5.
+ mgr.end();
+ harness.check(mgr.canUndoOrRedo());
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/discardAllEdits.java b/gnu/testlet/javax/swing/undo/UndoManager/discardAllEdits.java
new file mode 100644
index 00000000..8490a73d
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/discardAllEdits.java
@@ -0,0 +1,59 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class discardAllEdits
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(10, 3);
+ mgr.discardAllEdits();
+
+ // Check #1.
+ harness.check(mgr.getEdits().size(), 0);
+
+ // Check #2.
+ harness.check(mgr.getEditToBeUndone(), null);
+
+ // Check #3.
+ harness.check(mgr.getEditToBeRedone(), null);
+
+ // Check #4.
+ boolean foundLive = false;
+ for (int i = 0; i < edits.length; i++)
+ foundLive |= edits[i].isAlive();
+ harness.check(!foundLive);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java b/gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java
new file mode 100644
index 00000000..aa5c9ec3
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/editToBeRedone.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class editToBeRedone
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ harness.check(mgr.getEditToBeRedone(), null);
+
+ // Check #2.
+ edits = mgr.addTestEdits(47, 4);
+ edits[2].setSignificant(false);
+ edits[1].setSignificant(false);
+ harness.check(mgr.getEditToBeRedone(), null);
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.getEditToBeRedone(), edits[3]);
+
+ // Check #4.
+ mgr.undo();
+ harness.check(mgr.getEditToBeRedone(), edits[0]);
+
+ // Check #5.
+ mgr.redo();
+ harness.check(mgr.getEditToBeRedone(), edits[3]);
+
+ // Check #6.
+ mgr.redo();
+ harness.check(mgr.getEditToBeRedone(), null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java b/gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java
new file mode 100644
index 00000000..52a491f0
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/editToBeUndone.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class editToBeUndone
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ harness.check(mgr.getEditToBeUndone(), null);
+
+ // Check #2.
+ edits = mgr.addTestEdits(47, 4);
+ edits[2].setSignificant(false);
+ edits[1].setSignificant(false);
+ harness.check(mgr.getEditToBeUndone() == edits[3]);
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.getEditToBeUndone() == edits[0]);
+
+ // Check #4.
+ mgr.undo();
+ harness.check(mgr.getEditToBeUndone(), null);
+
+ // Check #5.
+ mgr.redo();
+ harness.check(mgr.getEditToBeUndone() == edits[0]);
+
+ // Check #6.
+ mgr.redo();
+ harness.check(mgr.getEditToBeUndone() == edits[3]);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/end.java b/gnu/testlet/javax/swing/undo/UndoManager/end.java
new file mode 100644
index 00000000..f292648b
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/end.java
@@ -0,0 +1,57 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class end
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(0, 4);
+ mgr.undo();
+ mgr.undo();
+
+ harness.check(edits[0].isAlive()); // Check #1.
+ harness.check(edits[1].isAlive()); // Check #2.
+ harness.check(edits[2].isAlive()); // Check #3.
+ harness.check(edits[3].isAlive()); // Check #4.
+
+ mgr.end();
+
+ harness.check(edits[0].isAlive()); // Check #5.
+ harness.check(edits[1].isAlive()); // Check #6.
+ harness.check(!edits[2].isAlive()); // Check #7.
+ harness.check(!edits[3].isAlive()); // Check #8.
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/getLimit.java b/gnu/testlet/javax/swing/undo/UndoManager/getLimit.java
new file mode 100644
index 00000000..b5f8a5aa
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/getLimit.java
@@ -0,0 +1,47 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.UndoManager;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getLimit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ UndoManager mgr = new UndoManager();
+
+ // Check #1.
+ harness.check(mgr.getLimit(), 100);
+
+ // Check #2.
+ mgr.setLimit(20);
+ harness.check(mgr.getLimit(), 20);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/getRedoPresentationName.java b/gnu/testlet/javax/swing/undo/UndoManager/getRedoPresentationName.java
new file mode 100644
index 00000000..df2cbcbc
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/getRedoPresentationName.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.UIManager;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getRedoPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+ Object oldText;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(1, 2);
+
+ // Check #1.
+ oldText = UIManager.get("AbstractUndoableEdit.redoText");
+ try
+ {
+ UIManager.put("AbstractUndoableEdit.redoText", "Fooredo");
+ harness.check(mgr.getRedoPresentationName(), "Fooredo");
+ }
+ finally
+ {
+ UIManager.put("AbstractUndoableEdit.redoText", oldText);
+ }
+
+ // Check #2.
+ mgr.undo();
+ harness.check(mgr.getRedoPresentationName(), "RedoPres2");
+
+ // Check #3.
+ mgr.undo();
+ harness.check(mgr.getRedoPresentationName(), "RedoPres1");
+
+ // Check #4.
+ mgr.redo();
+ harness.check(mgr.getRedoPresentationName(), "RedoPres2");
+
+ // Check #5.
+ mgr.end();
+ harness.check(mgr.getRedoPresentationName(), "RedoPres1");
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/getUndoOrRedoPresentationName.java b/gnu/testlet/javax/swing/undo/UndoManager/getUndoOrRedoPresentationName.java
new file mode 100644
index 00000000..ece33ffd
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/getUndoOrRedoPresentationName.java
@@ -0,0 +1,76 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.UIManager;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getUndoOrRedoPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+ Object oldText;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(1, 2);
+
+ // Check #1.
+ harness.check(mgr.getUndoOrRedoPresentationName(), "UndoPres2");
+
+ // Check #2.
+ mgr.undo();
+ harness.check(mgr.getUndoOrRedoPresentationName(), "RedoPres2");
+
+ // Check #3.
+ mgr.redo();
+ harness.check(mgr.getUndoOrRedoPresentationName(), "UndoPres2");
+
+ // Check #4.
+ mgr.undo();
+ harness.check(mgr.getUndoOrRedoPresentationName(), "RedoPres2");
+
+ // Check #5.
+ mgr.end();
+ harness.check(mgr.getUndoOrRedoPresentationName(), "UndoPres1");
+
+ // Check #6.
+ mgr.discardAllEdits();
+ oldText = UIManager.get("AbstractUndoableEdit.undoText");
+ try
+ {
+ UIManager.put("AbstractUndoableEdit.undoText", "Foondo");
+ harness.check(mgr.getUndoOrRedoPresentationName(), "Foondo");
+ }
+ finally
+ {
+ UIManager.put("AbstractUndoableEdit.undoText", oldText);
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/getUndoPresentationName.java b/gnu/testlet/javax/swing/undo/UndoManager/getUndoPresentationName.java
new file mode 100644
index 00000000..0e0c6937
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/getUndoPresentationName.java
@@ -0,0 +1,72 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.UIManager;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getUndoPresentationName
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+ Object oldText;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(1, 2);
+
+ // Check #1.
+ harness.check(mgr.getUndoPresentationName(), "UndoPres2");
+
+ // Check #2.
+ mgr.undo();
+ harness.check(mgr.getUndoPresentationName(), "UndoPres1");
+
+ // Check #3.
+ mgr.undo();
+ oldText = UIManager.get("AbstractUndoableEdit.undoText");
+ try
+ {
+ UIManager.put("AbstractUndoableEdit.undoText", "Foondo");
+ harness.check(mgr.getUndoPresentationName(), "Foondo");
+ }
+ finally
+ {
+ UIManager.put("AbstractUndoableEdit.undoText", oldText);
+ }
+
+ // Check #4.
+ mgr.redo();
+ harness.check(mgr.getUndoPresentationName(), "UndoPres1");
+
+ // Check #5.
+ mgr.end();
+ harness.check(mgr.getUndoPresentationName(), "UndoPres1");
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/redoTo.java b/gnu/testlet/javax/swing/undo/UndoManager/redoTo.java
new file mode 100644
index 00000000..2a082c4f
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/redoTo.java
@@ -0,0 +1,54 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class redoTo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ harness.check(mgr.getEditToBeUndone(), null);
+
+ // Check #2 and #3.
+ edits = mgr.addTestEdits(943, 4);
+ harness.check(mgr.checkIDs(new int[] { 943, 944, 945, 946 }));
+ harness.check(mgr.getEditToBeUndone() == edits[3]);
+
+ // Check #4 and #5.
+ mgr.invokeUndoTo(edits[1]);
+ mgr.invokeRedoTo(edits[2]);
+ harness.check(mgr.checkIDs(new int[] { 943, 944, 945, 946 }));
+ harness.check(mgr.getEditToBeUndone(), edits[2]);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/setLimit.java b/gnu/testlet/javax/swing/undo/UndoManager/setLimit.java
new file mode 100644
index 00000000..6ceea37b
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/setLimit.java
@@ -0,0 +1,83 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class setLimit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ Throwable caught;
+
+ // Check #1.
+ mgr.setLimit(25);
+ harness.check(mgr.getLimit(), 25);
+
+ // Check #2.
+ // Sun JDK 1.4.1_01 accepts zero values, although this
+ // does not really make much sense.
+ mgr.setLimit(0);
+ harness.check(mgr.getLimit(), 0);
+
+ // Check #3.
+ // Sun JDK 1.4.1_01 accepts negative values, although this
+ // does not really make any sense.
+ mgr.setLimit(-10);
+ harness.check(mgr.getLimit(), -10);
+
+ // Check #4.
+ harness.check(mgr.numTrimForLimitCalls, 3);
+
+ // Check #5.
+ mgr.setLimit(20);
+ mgr.addTestEdits(10, 5);
+ harness.check(mgr.checkIDs(new int[] { 10, 11, 12, 13, 14 }));
+
+ // Check #6.
+ mgr.undo();
+ mgr.undo();
+ mgr.setLimit(2);
+ harness.check(mgr.checkIDs(new int[] { 12, 13 }));
+
+ // Check #7.
+ mgr.end();
+ caught = null;
+ try
+ {
+ mgr.setLimit(2);
+ }
+ catch (Exception ex)
+ {
+ caught = ex;
+ }
+ harness.check(caught != null);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/toString.java b/gnu/testlet/javax/swing/undo/UndoManager/toString.java
new file mode 100644
index 00000000..1cd85739
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/toString.java
@@ -0,0 +1,51 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class toString
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ TestUndoManager.TestEdit[] edits;
+
+ mgr = new TestUndoManager();
+ edits = mgr.addTestEdits(10, 1);
+
+ // Check #1.
+ harness.check(mgr.toString(),
+ "gnu.testlet.javax.swing.undo.UndoManager.TestUndoManager@"
+ + Integer.toHexString(mgr.hashCode())
+ + " hasBeenDone: true alive: true inProgress: true "
+ + "edits: [" + edits[0] + "] limit: 100 "
+ + "indexOfNextAdd: 1");
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java b/gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java
new file mode 100644
index 00000000..b6bc1a4e
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/trimEdits.java
@@ -0,0 +1,102 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.AbstractUndoableEdit;
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class trimEdits
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ TestEdit[] e;
+
+ e = new TestEdit[6];
+ for (int i = 0; i < e.length; i++)
+ {
+ e[i] = new TestEdit();
+ mgr.addEdit(e[i]);
+ }
+
+ harness.check(mgr.getEdits().size(), 6); // Check #1.
+ mgr.invokeTrimEdits(2, 3);
+ harness.check(mgr.getEdits().size(), 4); // Check #2.
+ harness.check(mgr.getEdits().get(0) == e[0]); // Check #3.
+ harness.check(mgr.getEdits().get(1) == e[1]); // Check #4.
+ harness.check(mgr.getEdits().get(2) == e[4]); // Check #5.
+ harness.check(mgr.getEdits().get(3) == e[5]); // Check #6.
+ harness.check(e[0].isAlive()); // Check #7.
+ harness.check(e[1].isAlive()); // Check #8.
+ harness.check(!e[2].isAlive()); // Check #9.
+ harness.check(!e[3].isAlive()); // Check #10.
+ harness.check(e[4].isAlive()); // Check #11.
+ harness.check(e[5].isAlive()); // Check #12.
+ harness.check(mgr.getEditToBeUndone() == e[5]); // Check #13.
+
+ // Check #14 .. #24: from == to.
+ mgr.invokeTrimEdits(0, 0);
+ harness.check(mgr.getEdits().size(), 3); // Check #14.
+ harness.check(mgr.getEdits().get(0) == e[1]); // Check #15.
+ harness.check(mgr.getEdits().get(1) == e[4]); // Check #16.
+ harness.check(mgr.getEdits().get(2) == e[5]); // Check #17.
+ harness.check(!e[0].isAlive()); // Check #18.
+ harness.check(e[1].isAlive()); // Check #19.
+ harness.check(!e[2].isAlive()); // Check #20.
+ harness.check(!e[3].isAlive()); // Check #21.
+ harness.check(e[4].isAlive()); // Check #22.
+ harness.check(e[5].isAlive()); // Check #23.
+ harness.check(mgr.getEditToBeUndone() == e[5]); // Check #24.
+
+ // Check #25 .. #29: Nothing happens if from > to.
+ mgr.invokeTrimEdits(1, 0);
+ mgr.invokeTrimEdits(2222, -100);
+ harness.check(mgr.getEdits().size(), 3); // Check #25.
+ harness.check(mgr.getEdits().get(0) == e[1]); // Check #26.
+ harness.check(mgr.getEdits().get(1) == e[4]); // Check #27.
+ harness.check(mgr.getEdits().get(2) == e[5]); // Check #28.
+ harness.check(mgr.getEditToBeUndone() == e[5]); // Check #29.
+
+ mgr.undo();
+ mgr.invokeTrimEdits(0, 1);
+ harness.check(mgr.getEdits().size(), 1); // Check #30.
+ harness.check(mgr.getEdits().get(0) == e[5]); // Check #31.
+ harness.check(mgr.getEditToBeUndone() == null); // Check #32.
+ }
+
+
+ private static class TestEdit
+ extends AbstractUndoableEdit
+ {
+ public boolean isAlive()
+ {
+ return canUndo() || canRedo();
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/undoTo.java b/gnu/testlet/javax/swing/undo/UndoManager/undoTo.java
new file mode 100644
index 00000000..d525e475
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/undoTo.java
@@ -0,0 +1,53 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class undoTo
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr = new TestUndoManager();
+ TestUndoManager.TestEdit[] edits;
+
+ // Check #1.
+ harness.check(mgr.getEditToBeUndone(), null);
+
+ // Check #2 and #3.
+ edits = mgr.addTestEdits(943, 4);
+ harness.check(mgr.checkIDs(new int[] { 943, 944, 945, 946 }));
+ harness.check(mgr.getEditToBeUndone() == edits[3]);
+
+ // Check #4 and #5.
+ mgr.invokeUndoTo(edits[1]);
+ harness.check(mgr.checkIDs(new int[] { 943, 944, 945, 946 }));
+ harness.check(mgr.getEditToBeUndone(), edits[0]);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoManager/undoableEditHappened.java b/gnu/testlet/javax/swing/undo/UndoManager/undoableEditHappened.java
new file mode 100644
index 00000000..678ff372
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoManager/undoableEditHappened.java
@@ -0,0 +1,50 @@
+// Tags: JDK1.2
+// Uses: TestUndoManager
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoManager;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.UndoableEdit;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class undoableEditHappened
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ TestUndoManager mgr;
+ UndoableEdit edit;
+
+ // Check #1.
+ mgr = new TestUndoManager();
+ edit = new AbstractUndoableEdit();
+ mgr.undoableEditHappened(new UndoableEditEvent(this, edit));
+ harness.check(mgr.getEditToBeUndone() == edit);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Entries b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Entries
new file mode 100644
index 00000000..f6edcb17
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Entries
@@ -0,0 +1,7 @@
+/UndoableEditSupport.java/1.1/Wed Jan 7 08:48:32 2004//
+/beginUpdate.java/1.2/Thu Jun 3 14:31:19 2004//
+/createCompoundEdit.java/1.2/Thu Jun 3 14:31:19 2004//
+/getUndoableEditListeners.java/1.1/Wed Jan 7 08:48:32 2004//
+/getUpdateLevel.java/1.2/Thu Jun 3 14:31:19 2004//
+/toString.java/1.1/Wed Jan 7 08:48:32 2004//
+D
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Repository b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Repository
new file mode 100644
index 00000000..68f1027b
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/swing/undo/UndoableEditSupport
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Root b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/UndoableEditSupport.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/UndoableEditSupport.java
new file mode 100644
index 00000000..34d7d01a
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/UndoableEditSupport.java
@@ -0,0 +1,81 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.undo.CompoundEdit;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class UndoableEditSupport
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MySupport ms;
+ Object foo = "foo";
+
+ ms = new MySupport();
+ harness.check(ms.getRealSource() == ms); // #1
+ harness.check(ms.getUpdateLevel(), 0); // #2
+ harness.check(ms.getCompoundEdit(), null); // #3
+
+ ms = new MySupport(null);
+ harness.check(ms.getRealSource() == ms); // #4
+ harness.check(ms.getUpdateLevel(), 0); // #5
+ harness.check(ms.getCompoundEdit(), null); // #6
+
+ ms = new MySupport(foo);
+ harness.check(ms.getRealSource() == foo); // #7
+ harness.check(ms.getUpdateLevel(), 0); // #8
+ harness.check(ms.getCompoundEdit(), null); // #9
+ }
+
+
+ private static class MySupport
+ extends javax.swing.undo.UndoableEditSupport
+ {
+ public MySupport()
+ {
+ super();
+ }
+
+ public MySupport(Object realSource)
+ {
+ super(realSource);
+ }
+
+ public Object getRealSource()
+ {
+ return realSource;
+ }
+
+ public CompoundEdit getCompoundEdit()
+ {
+ return compoundEdit;
+ }
+ }
+}
+
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java
new file mode 100644
index 00000000..9d9f6f71
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/beginUpdate.java
@@ -0,0 +1,126 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.CompoundEdit;
+import javax.swing.undo.UndoableEditSupport;
+
+
+/**
+ * @see Classpath bug #7109.
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class beginUpdate
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyUES ues;
+ CompoundEdit cedit;
+
+ ues = new MyUES();
+
+ // Check #1 and #2: Pre-requisites.
+ harness.check(ues.getCompoundEdit(), null);
+ harness.check(ues.getUpdateLevel(), 0);
+
+ // Check #3.
+ ues.beginUpdate();
+ cedit = ues.getCompoundEdit();
+ harness.check(ues.getCompoundEdit() instanceof MyCompoundEdit);
+
+ // Check #4.
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #5.
+ ues.beginUpdate();
+ harness.check(ues.getCompoundEdit() == cedit);
+
+ // Check #6.
+ harness.check(ues.getUpdateLevel(), 2);
+
+ // Check #7.
+ ues.beginUpdate();
+ harness.check(ues.getCompoundEdit() == cedit);
+
+ // Check #8.
+ harness.check(ues.getUpdateLevel(), 3);
+
+ // Check #9.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 2);
+
+ // Check #10.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #11.
+ ues.beginUpdate();
+ harness.check(ues.getCompoundEdit() == cedit);
+
+ // Check #12.
+ harness.check(ues.getUpdateLevel(), 2);
+
+ // Check #13.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #14.
+ ues.endUpdate();
+ harness.check(ues.getCompoundEdit(), null);
+
+ // Check #15.
+ harness.check(ues.getUpdateLevel(), 0);
+
+ // Check #16.
+ ues.beginUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #17: Use a fresh CompoundEdit when transitioning
+ // undo level from 0 to 1.
+ harness.check(ues.getCompoundEdit() != cedit);
+ }
+
+
+ private static class MyUES
+ extends UndoableEditSupport
+ {
+ protected CompoundEdit createCompoundEdit()
+ {
+ return new MyCompoundEdit();
+ }
+
+ public CompoundEdit getCompoundEdit()
+ {
+ return compoundEdit;
+ }
+ }
+
+
+ private static class MyCompoundEdit
+ extends CompoundEdit
+ {
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/createCompoundEdit.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/createCompoundEdit.java
new file mode 100644
index 00000000..1d35efa3
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/createCompoundEdit.java
@@ -0,0 +1,64 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.CompoundEdit;
+import javax.swing.undo.UndoableEditSupport;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class createCompoundEdit
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ MyUES ues;
+ CompoundEdit c1, c2;
+
+ ues = new MyUES();
+ c1 = ues.cce();
+ c2 = ues.cce();
+
+ // Check #1.
+ harness.check(c1 != null);
+
+ // Check #1.
+ harness.check(c2 != null);
+
+ // Check #3: Is it a shared instance? No.
+ harness.check(c1 != c2);
+ }
+
+ private static class MyUES
+ extends UndoableEditSupport
+ {
+ public CompoundEdit cce()
+ {
+ return createCompoundEdit();
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUndoableEditListeners.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUndoableEditListeners.java
new file mode 100644
index 00000000..cfa9f131
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUndoableEditListeners.java
@@ -0,0 +1,80 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.undo.UndoableEditSupport;
+
+/**
+ * Checks whether the UndoableEditSupport.getUndoableEditListeners
+ * method works correctly. That method has been added in JDK1.4.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getUndoableEditListeners
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ UndoableEditSupport ues;
+ TestListener t1, t2;
+ UndoableEditListener[] l;
+
+ ues = new UndoableEditSupport();
+ t1 = new TestListener();
+ t2 = new TestListener();
+
+ // Check #1.
+ l = ues.getUndoableEditListeners();
+ harness.check((l != null) && (l.length == 0));
+
+ // Check #2.
+ ues.addUndoableEditListener(t1);
+ l = ues.getUndoableEditListeners();
+ harness.check((l != null) && (l.length == 1) && (l[0] == t1));
+
+ // Check #3.
+ ues.addUndoableEditListener(t2);
+ l = ues.getUndoableEditListeners();
+ harness.check(l != null && l.length == 2
+ && l[0] == t1 && l[1] == t2);
+
+ // Check #4.
+ ues.removeUndoableEditListener(t1);
+ l = ues.getUndoableEditListeners();
+ harness.check(l != null && l.length == 1
+ && l[0] == t2);
+ }
+
+
+ private static class TestListener
+ implements UndoableEditListener
+ {
+ public void undoableEditHappened(UndoableEditEvent evt)
+ {
+ }
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUpdateLevel.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUpdateLevel.java
new file mode 100644
index 00000000..f1d04169
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/getUpdateLevel.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2003, 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import javax.swing.undo.UndoableEditSupport;
+
+/**
+ * Checks whether the UndoableEditSupport.getUpdateLevel
+ * method works correctly.
+ *
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class getUpdateLevel
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ UndoableEditSupport ues;
+
+ // Check #1.
+ ues = new UndoableEditSupport();
+ harness.check(ues.getUpdateLevel(), 0);
+
+ // Check #2.
+ ues.beginUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #3.
+ ues.beginUpdate();
+ harness.check(ues.getUpdateLevel(), 2);
+
+ // Check #4.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #5.
+ ues.beginUpdate();
+ harness.check(ues.getUpdateLevel(), 2);
+
+ // Check #6.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 1);
+
+ // Check #7.
+ ues.endUpdate();
+ harness.check(ues.getUpdateLevel(), 0);
+ }
+}
diff --git a/gnu/testlet/javax/swing/undo/UndoableEditSupport/toString.java b/gnu/testlet/javax/swing/undo/UndoableEditSupport/toString.java
new file mode 100644
index 00000000..49abdf12
--- /dev/null
+++ b/gnu/testlet/javax/swing/undo/UndoableEditSupport/toString.java
@@ -0,0 +1,104 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2004 Sascha Brawer <brawer@dandelis.ch>
+
+// 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.javax.swing.undo.UndoableEditSupport;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.undo.CompoundEdit;
+import javax.swing.undo.UndoableEditSupport;
+
+
+/**
+ * @author <a href="mailto:brawer@dandelis.ch">Sascha Brawer</a>
+ */
+public class toString
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ UndoableEditSupport u;
+
+ // Check #1.
+ u = new MyUndoableEditSupport("realSource");
+ harness.check(u.toString(),
+ u.getClass().getName() + "@"
+ + Integer.toHexString(u.hashCode())
+ + " updateLevel: 0 listeners: []"
+ + " compoundEdit: null");
+
+ // Check #2.
+ u.beginUpdate();
+ u.beginUpdate();
+ u.addUndoableEditListener(new MyListener());
+ u.addUndoableEditListener(new MyListener());
+ harness.check(u.toString(),
+ u.getClass().getName() + "@"
+ + Integer.toHexString(u.hashCode())
+ + " updateLevel: 2 listeners: [lily, lily]"
+ + " compoundEdit: rose");
+
+ // Check #3: u.realSource == u.
+ // Classpath bug #7119.
+ u = new MyUndoableEditSupport(null);
+ harness.check(u.toString(),
+ u.getClass().getName() + "@"
+ + Integer.toHexString(u.hashCode())
+ + " updateLevel: 0 listeners: []"
+ + " compoundEdit: null");
+ }
+
+
+ private static class MyUndoableEditSupport
+ extends UndoableEditSupport
+ {
+ public MyUndoableEditSupport(Object realSource)
+ {
+ super(realSource);
+ }
+
+ public CompoundEdit createCompoundEdit()
+ {
+ return new CompoundEdit()
+ {
+ public String toString()
+ {
+ return "rose";
+ }
+ };
+ }
+ }
+
+ private static class MyListener
+ implements javax.swing.event.UndoableEditListener
+ {
+ public String toString()
+ {
+ return "lily";
+ }
+
+ public void undoableEditHappened(UndoableEditEvent x)
+ {
+ }
+ }
+}
+
diff --git a/gnu/testlet/javax/xml/CVS/Entries b/gnu/testlet/javax/xml/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/xml/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/xml/CVS/Entries.Log b/gnu/testlet/javax/xml/CVS/Entries.Log
new file mode 100644
index 00000000..69ef845b
--- /dev/null
+++ b/gnu/testlet/javax/xml/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/parsers////
+A D/xpath////
diff --git a/gnu/testlet/javax/xml/CVS/Repository b/gnu/testlet/javax/xml/CVS/Repository
new file mode 100644
index 00000000..c4a5c505
--- /dev/null
+++ b/gnu/testlet/javax/xml/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/xml
diff --git a/gnu/testlet/javax/xml/CVS/Root b/gnu/testlet/javax/xml/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/xml/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/xml/parsers/CVS/Entries b/gnu/testlet/javax/xml/parsers/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/javax/xml/parsers/CVS/Entries.Log b/gnu/testlet/javax/xml/parsers/CVS/Entries.Log
new file mode 100644
index 00000000..f596991d
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/DocumentBuilder////
diff --git a/gnu/testlet/javax/xml/parsers/CVS/Repository b/gnu/testlet/javax/xml/parsers/CVS/Repository
new file mode 100644
index 00000000..e44fa2fd
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/xml/parsers
diff --git a/gnu/testlet/javax/xml/parsers/CVS/Root b/gnu/testlet/javax/xml/parsers/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Entries b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Entries
new file mode 100644
index 00000000..0bffca24
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Entries
@@ -0,0 +1,4 @@
+/PR27864.java/1.1/Thu Jun 1 16:56:29 2006//
+/Verifyer.java/1.2/Mon Jun 26 14:18:50 2006//
+/parseSimpleXML.java/1.2/Sat Apr 2 00:52:29 2005//
+D
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Repository b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Repository
new file mode 100644
index 00000000..81b0263e
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/xml/parsers/DocumentBuilder
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Root b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/PR27864.java b/gnu/testlet/javax/xml/parsers/DocumentBuilder/PR27864.java
new file mode 100644
index 00000000..6d8f8099
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/PR27864.java
@@ -0,0 +1,100 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2006 Robert Schuster <robertschuster@fsfe.org>
+
+// 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.javax.xml.parsers.DocumentBuilder;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.DOMException;
+
+import org.xml.sax.SAXException;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+/**
+ * A helper class to print the contents of the DOM HTML tree.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class PR27864 implements Testlet
+{
+
+ String xml = " <main>"
+ + " <element>"
+ + " <alwaysThere/>"
+ + " </element>"
+ + " <element>"
+ + " <alwaysThere>"
+ + " <sometimesThere>foo</sometimesThere>"
+ + " </alwaysThere>"
+ + " </element>"
+ + " <element>"
+ + " <alwaysThere>"
+ + " <sometimesThere>bar</sometimesThere>"
+ + " </alwaysThere>"
+ + " </element>"
+ + "</main>";
+
+ public void test(TestHarness harness)
+ {
+ harness.checkPoint("getElementsByTagName");
+ try
+ {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ DocumentBuilder b = dbf.newDocumentBuilder();
+
+ Document d = b.parse((new ByteArrayInputStream(xml.getBytes())));
+
+ Element element0 = (Element) d.getElementsByTagName("element").item(0);
+ Element always = (Element) element0.getElementsByTagName("alwaysThere").item(0);
+ NodeList st_nl = always.getElementsByTagName("sometimesThere");
+
+ harness.check(st_nl.getLength(), 0);
+ }
+ catch (IOException ioe)
+ {
+ harness.fail("IOException occured");
+ }
+ catch (DOMException de)
+ {
+ harness.fail("DOMException occured");
+ }
+ catch (SAXException saxe)
+ {
+ harness.fail("SAXException occured");
+ }
+ catch (ParserConfigurationException pce)
+ {
+ harness.fail("ParserConfigurationException occured");
+ }
+
+ }
+
+}
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/Verifyer.java b/gnu/testlet/javax/xml/parsers/DocumentBuilder/Verifyer.java
new file mode 100644
index 00000000..baeac9cc
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/Verifyer.java
@@ -0,0 +1,149 @@
+// Tags: not-a-test
+// Copyright (C) 2004 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.xml.parsers.DocumentBuilder;
+
+import gnu.testlet.TestHarness;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.io.ByteArrayInputStream;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+/**
+ * A helper class to print the contents of the DOM HTML tree.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+class Verifyer
+{
+ // Change these parameters for getting more human-readable output.
+ String EOLN = " ";
+ TestHarness harness;
+ boolean IDENTATION = false;
+
+ String getImage(Node node)
+ {
+ StringBuffer b = new StringBuffer();
+ print(b, node, 0);
+ return b.toString().trim();
+ }
+
+ void print(StringBuffer stream, Node node, int ident)
+ {
+ StringBuffer tab = new StringBuffer();
+ stream.append(EOLN);
+ if (IDENTATION)
+ for (int i = 0; i < ident; i++)
+ {
+ tab.append(' ');
+ }
+
+ if (node == null)
+ {
+ stream.append(tab + " null node");
+ return;
+ }
+
+ String nn = node.getNodeName();
+
+ if (node.getNamespaceURI() != null)
+ nn = node.getNamespaceURI() + ":" + nn;
+
+ stream.append(tab + nn);
+ if (node.getNodeValue() != null)
+ {
+ stream.append(EOLN);
+ stream.append(tab + " = '" + node.getNodeValue() + "'");
+ }
+
+ NamedNodeMap attributes = node.getAttributes();
+ if (attributes != null && attributes.getLength() != 0)
+ {
+ stream.append(' ');
+ for (int i = 0; i < attributes.getLength(); i++)
+ {
+ Node a = attributes.item(i);
+ stream.append(a.getNodeName() + "='" + a.getNodeValue() + "'");
+ }
+ }
+
+ ident += 4;
+
+ NodeList childs = node.getChildNodes();
+ if (childs != null)
+ for (int i = 0; i < childs.getLength(); i++)
+ {
+ print(stream, childs.item(i), ident);
+ }
+ }
+
+ void verify(String xml, String image, String message)
+ {
+ harness.checkPoint(message);
+ try
+ {
+ boolean validation = false;
+ boolean ignoreWhitespace = false; // false throws exception with saxon
+ boolean ignoreComments = false;
+ boolean putCDATAIntoText = false;
+ boolean createEntityRefs = false;
+ boolean namespaces = true;
+
+ // Step 1: create a DocumentBuilderFactory and configure it
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ // Optional: set various configuration options
+ dbf.setValidating(validation);
+ dbf.setIgnoringComments(ignoreComments);
+ dbf.setIgnoringElementContentWhitespace(ignoreWhitespace);
+ dbf.setCoalescing(putCDATAIntoText);
+ dbf.setNamespaceAware(namespaces);
+
+ // The opposite of creating entity ref nodes is expanding them inline
+ dbf.setExpandEntityReferences(!createEntityRefs);
+
+ DocumentBuilder b = dbf.newDocumentBuilder();
+
+ Document d = b.parse((new ByteArrayInputStream(xml.getBytes())));
+
+ String result = getImage(d);
+
+ if (!result.equals(image))
+ {
+ System.out.println("Exp: " + image);
+ System.out.println("Rez: " + result);
+ harness.check(result, image, message);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (ex != null)
+ harness.fail(message + ":" + ex.getClass().getName() + ":" +
+ ex.getMessage()
+ );
+ else
+ harness.fail(message + ": null exception");
+ }
+ }
+}
diff --git a/gnu/testlet/javax/xml/parsers/DocumentBuilder/parseSimpleXML.java b/gnu/testlet/javax/xml/parsers/DocumentBuilder/parseSimpleXML.java
new file mode 100644
index 00000000..4afefd13
--- /dev/null
+++ b/gnu/testlet/javax/xml/parsers/DocumentBuilder/parseSimpleXML.java
@@ -0,0 +1,85 @@
+// Tags: JDK1.2
+// Uses: Verifyer
+
+// Copyright (C) 2004, 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.javax.xml.parsers.DocumentBuilder;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+/**
+ * A simple XML parsing test.
+ * @author Audrius Meskauskas (AudriusA@Bluewin.ch)
+ */
+public class parseSimpleXML
+ extends Verifyer
+ implements Testlet
+{
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+
+ String head = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+ verify(head +
+ "<xa ap1=\"apv1\" ap2=\"apv2\"><b/><c><a ap1=\"n\"></a></c></xa>",
+ "#document xa ap1='apv1'ap2='apv2' b c a ap1='n'", "simple xml"
+ );
+
+ verify(head + "<xa ap1=\"apv1\" ap2=\"apv2\">t0<b/>t1<c><a ap1=\"n\">" +
+ "</a></c>te</xa>",
+ "#document xa ap1='apv1'ap2='apv2' #text = 't0' b #text = 't1' c" +
+ " a ap1='n' #text = 'te'", "simple xml with text nodes"
+ );
+
+ verify(head + "<a><!--explain--></a>", "#document a #comment = 'explain'",
+ "comment"
+ );
+
+ verify(head + "<a><!--e1--><!--e2--></a>",
+ "#document a #comment = 'e1' #comment = 'e2'",
+ "subsequent comments"
+ );
+
+ verify(head + "<a xmlns:ans=\"www.lithuania.lt\"><ans:b></ans:b></a>",
+ "#document a xmlns:ans='www.lithuania.lt' www.lithuania.lt:ans:b",
+ "explicit namespace"
+ );
+
+ verify(head + "<a xmlns=\"www.lithuania.lt\"><b></b></a>",
+ "#document www.lithuania.lt:a xmlns='www.lithuania.lt' www.lithuania.lt:b",
+ "default namespace"
+ );
+
+ verify(head +
+ "<a xmlns=\"www.lithuania.lt\" xmlns:ans=\"www.gnu.org\"><b><ans:c>" +
+ "</ans:c></b></a>",
+ "#document www.lithuania.lt:a " +
+ "xmlns='www.lithuania.lt'xmlns:ans='www.gnu.org' " +
+ "www.lithuania.lt:b www.gnu.org:ans:c", "mixed namespaces"
+ );
+
+ verify("<xa ap1=\"apv1\" ap2=\"apv2\"><b/><c><a ap1=\"n\"></a></c></xa>",
+ "#document xa ap1='apv1'ap2='apv2' b c a ap1='n'",
+ "missing xml header"
+ );
+ }
+}
diff --git a/gnu/testlet/javax/xml/xpath/CVS/Entries b/gnu/testlet/javax/xml/xpath/CVS/Entries
new file mode 100644
index 00000000..f7bd2804
--- /dev/null
+++ b/gnu/testlet/javax/xml/xpath/CVS/Entries
@@ -0,0 +1,2 @@
+/XPath.java/1.1/Wed Aug 30 00:05:10 2006/-kk/
+D
diff --git a/gnu/testlet/javax/xml/xpath/CVS/Repository b/gnu/testlet/javax/xml/xpath/CVS/Repository
new file mode 100644
index 00000000..3a452606
--- /dev/null
+++ b/gnu/testlet/javax/xml/xpath/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/javax/xml/xpath
diff --git a/gnu/testlet/javax/xml/xpath/CVS/Root b/gnu/testlet/javax/xml/xpath/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/javax/xml/xpath/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/javax/xml/xpath/XPath.java b/gnu/testlet/javax/xml/xpath/XPath.java
new file mode 100644
index 00000000..057ba9d6
--- /dev/null
+++ b/gnu/testlet/javax/xml/xpath/XPath.java
@@ -0,0 +1,70 @@
+// Tags: JDK1.5
+//
+// Copyright (C) 2006 Stephane Mikay <stephane@mikaty.net>
+//
+// 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+// 02110-1301 USA.
+
+package gnu.testlet.javax.xml.xpath;
+
+import java.io.StringReader;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import javax.xml.namespace.QName;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+/**
+ * JSR 206 (JAXP 1.3) XPath Tests
+ */
+public class XPath implements Testlet {
+
+ public void test( TestHarness harness ) {
+ try {
+ // According to the JAXP 1.3 spec Chapter 13 Section 2.2.4
+ // The XPath 1.0 NodeSet data type Maps to Java org.w3c.dom.NodeList
+ harness.checkPoint( "jaxp-1.3-ch13s2.2.4" );
+ harness.check( nodeset( "//*", "<o/>" ) instanceof NodeList );
+ } catch ( XPathExpressionException e ) {
+ harness.debug( e );
+ harness.check( false );
+ }
+ }
+
+ private Object nodeset( String expr, String document )
+ throws XPathExpressionException {
+ return eval( expr, document, XPathConstants.NODESET );
+ }
+
+ private Object eval( String expr, String document, QName returnType )
+ throws XPathExpressionException {
+ final XPathFactory factory = XPathFactory.newInstance();
+ final javax.xml.xpath.XPath xpath = factory.newXPath();
+ return xpath.evaluate( expr, source( document ), returnType );
+ }
+
+ private InputSource source( String xml ) {
+ return new InputSource( new StringReader( xml ) );
+ }
+
+}
diff --git a/gnu/testlet/locales/CVS/Entries b/gnu/testlet/locales/CVS/Entries
new file mode 100644
index 00000000..ebfab1d2
--- /dev/null
+++ b/gnu/testlet/locales/CVS/Entries
@@ -0,0 +1,2 @@
+/LocaleTest.java/1.10/Thu Sep 24 12:36:18 2009//
+D
diff --git a/gnu/testlet/locales/CVS/Repository b/gnu/testlet/locales/CVS/Repository
new file mode 100644
index 00000000..cc2b7418
--- /dev/null
+++ b/gnu/testlet/locales/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/locales
diff --git a/gnu/testlet/locales/CVS/Root b/gnu/testlet/locales/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/locales/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/locales/LocaleTest.java b/gnu/testlet/locales/LocaleTest.java
new file mode 100755
index 00000000..088887a0
--- /dev/null
+++ b/gnu/testlet/locales/LocaleTest.java
@@ -0,0 +1,481 @@
+// Tags: JDK1.0
+
+// Copyright (C) 2004, 2005 Michael Koch <konqueror@gmx.de>
+
+// 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.locales;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.text.*;
+import java.util.*;
+
+public class LocaleTest
+ implements Testlet
+{
+ public class ExpectedValues
+ {
+ String language;
+ String country;
+ String variant;
+ String localeStr;
+ String iso3language;
+ String iso3country;
+ String displayLanguage;
+ String displayCountry;
+ String displayVariant;
+ String displayName;
+ String currencyCode;
+ int currencyFractionDigits;
+ String currencySymbol;
+
+ public ExpectedValues(String language, String country, String variant, String localeStr,
+ String iso3language, String iso3country,
+ String displayLanguage, String displayCountry,
+ String displayVariant, String displayName,
+ String currencyCode, int currencyFractionDigits,
+ String currencySymbol)
+ {
+ this.language = language;
+ this.country = country;
+ this.variant = variant;
+ this.localeStr = localeStr;
+ this.iso3language = iso3language;
+ this.iso3country = iso3country;
+ this.displayLanguage = displayLanguage;
+ this.displayCountry = displayCountry;
+ this.displayVariant = displayVariant;
+ this.displayName = displayName;
+ this.currencyCode = currencyCode;
+ this.currencyFractionDigits = currencyFractionDigits;
+ this.currencySymbol = currencySymbol;
+ }
+ }
+
+ public class ExpectedDateValues
+ {
+ String a, b, c, d, e, f, g, h;
+
+ public ExpectedDateValues(String a, String b, String c, String d, String e, String f, String g, String h)
+ {
+ this.a = a;
+ this.b = b;
+ this.c = c;
+ this.d = d;
+ this.e = e;
+ this.f = f;
+ this.g = g;
+ this.h = h;
+ }
+ }
+
+ public class ExpectedNumberValues
+ {
+ String a, b, c, d, e;
+
+ public ExpectedNumberValues(String a, String b, String c, String d, String e)
+ {
+ this.a = a;
+ this.b = b;
+ this.c = c;
+ this.d = d;
+ this.e = e;
+ }
+ }
+
+ private void checkLocale(TestHarness h, Locale locale,
+ ExpectedValues expected,
+ ExpectedDateValues expectedDate,
+ ExpectedNumberValues expectedNumber1,
+ ExpectedNumberValues expectedNumberCurrency1,
+ ExpectedNumberValues expectedNumberCurrency2,
+ ExpectedNumberValues expectedNumber3,
+ ExpectedNumberValues expectedNumber4,
+ ExpectedNumberValues expectedNumberProcent)
+ {
+ h.checkPoint("Locale " + locale);
+
+ // Force GERMAN as default locale.
+ Locale.setDefault(Locale.GERMAN);
+ TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+
+ // Locale
+
+ if (expected != null)
+ {
+ h.check(locale.getLanguage(), expected.language);
+ h.check(locale.getCountry(), expected.country);
+ h.check(locale.getVariant(), expected.variant);
+ h.check(locale.toString(), expected.localeStr);
+ h.check(locale.getISO3Language(), expected.iso3language);
+ h.check(locale.getISO3Country(), expected.iso3country);
+ h.check(locale.getDisplayLanguage(), expected.displayLanguage);
+ h.check(locale.getDisplayCountry(), expected.displayCountry);
+ h.check(locale.getDisplayVariant(), expected.displayVariant);
+ h.check(locale.getDisplayName(), expected.displayName);
+ }
+
+ // Date and time formats
+ h.debug("Locale " + locale + " date/time formats");
+
+ if (expectedDate != null)
+ {
+ DateFormat df;
+
+ Date date1 = new Date(74, 2, 18, 17, 20, 30);
+
+ // Date instance.
+
+ df = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
+ h.check(df.format(date1), expectedDate.a, "DateFormat.DEFAULT "+ locale);
+
+ df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
+ h.check(df.format(date1), expectedDate.b, "DateFormat.SHORT "+ locale);
+
+ df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
+ h.check(df.format(date1), expectedDate.c, "DateFormat.MEDIUM "+ locale);
+
+ df = DateFormat.getDateInstance(DateFormat.LONG, locale);
+ h.check(df.format(date1), expectedDate.d, "DateFormat.LONG "+ locale);
+
+ // Assume DEFAULT == MEDIUM
+ df = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
+ h.check(df.format(date1), expectedDate.c, "DateFormat.DEFAULT == DateFormat.MEDIUM "+ locale);
+
+ // Time instance.
+
+ df = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
+ h.check(df.format(date1), expectedDate.e, "DateFormat.DEFAULT "+ locale);
+
+ df = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
+ h.check(df.format(date1), expectedDate.f, "DateFormat.SHORT "+ locale);
+
+ df = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);
+ h.check(df.format(date1), expectedDate.g, "DateFormat.MEDIUM "+ locale);
+
+ df = DateFormat.getTimeInstance(DateFormat.LONG, locale);
+ h.check(df.format(date1), expectedDate.h, "DateFormat.LONG "+ locale);
+
+ // Assume DEFAULT == MEDIUM
+ df = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
+ h.check(df.format(date1), expectedDate.g, "DateFormat.DEFAULT == DateFormat.MEDIUM "+ locale);
+ }
+
+ h.checkPoint("numberformats locale: "+ locale);
+ // Number formats
+
+ NumberFormat nf;
+
+ if (expectedNumber1 != null)
+ {
+ nf = NumberFormat.getInstance(locale);
+
+ h.check(nf.format(1000L), expectedNumber1.a);
+ h.check(nf.format(1000000L), expectedNumber1.b);
+ h.check(nf.format(100d), expectedNumber1.c);
+ h.check(nf.format(100.1234d), expectedNumber1.d);
+ h.check(nf.format(10000000.1234d), expectedNumber1.e);
+ }
+
+ if (expectedNumberCurrency1 != null)
+ {
+ nf = NumberFormat.getCurrencyInstance(locale);
+
+ h.check(nf.format(1000L), expectedNumberCurrency1.a);
+ h.check(nf.format(1000000L), expectedNumberCurrency1.b);
+ h.check(nf.format(100d), expectedNumberCurrency1.c);
+ h.check(nf.format(100.1234d), expectedNumberCurrency1.d);
+ h.check(nf.format(10000000.1234d), expectedNumberCurrency1.e);
+ }
+
+ if (expectedNumberCurrency2 != null)
+ {
+ nf = NumberFormat.getCurrencyInstance(locale);
+
+ h.check(nf.format(-1000L), expectedNumberCurrency2.a);
+ h.check(nf.format(-1000000L), expectedNumberCurrency2.b);
+ h.check(nf.format(-100d), expectedNumberCurrency2.c);
+ h.check(nf.format(-100.1234d), expectedNumberCurrency2.d);
+ h.check(nf.format(-10000000.1234d), expectedNumberCurrency2.e);
+ }
+
+ if (expectedNumber3 != null)
+ {
+ nf = NumberFormat.getIntegerInstance(locale);
+
+ h.check(nf.format(1000L), expectedNumber3.a);
+ h.check(nf.format(1000000L), expectedNumber3.b);
+ h.check(nf.format(100d), expectedNumber3.c);
+ h.check(nf.format(100.1234d), expectedNumber3.d);
+ h.check(nf.format(10000000.1234d), expectedNumber3.e);
+ }
+
+ if (expectedNumber4 != null)
+ {
+ nf = NumberFormat.getNumberInstance(locale);
+
+ h.check(nf.format(1000L), expectedNumber4.a);
+ h.check(nf.format(1000000L), expectedNumber4.b);
+ h.check(nf.format(100d), expectedNumber4.c);
+ h.check(nf.format(100.1234d), expectedNumber4.d);
+ h.check(nf.format(10000000.1234d), expectedNumber4.e);
+ }
+
+ if (expectedNumberProcent != null)
+ {
+ nf = NumberFormat.getPercentInstance(locale);
+
+ h.check(nf.format(1000L), expectedNumberProcent.a);
+ h.check(nf.format(1000000L), expectedNumberProcent.b);
+ h.check(nf.format(100d), expectedNumberProcent.c);
+ h.check(nf.format(100.1234d), expectedNumberProcent.d);
+ h.check(nf.format(10000000.1234d), expectedNumberProcent.e);
+ }
+
+ // Currencies
+ h.checkPoint("Currencies locale: "+ locale);
+
+ if (expected != null)
+ {
+ Currency currency = Currency.getInstance(locale);
+
+ h.check(currency.getCurrencyCode(), expected.currencyCode);
+ h.check(currency.getDefaultFractionDigits(), expected.currencyFractionDigits);
+ h.check(currency.getSymbol(), expected.currencySymbol);
+
+ try
+ {
+ Currency byCode = Currency.getInstance(currency.getCurrencyCode());
+
+ h.check(currency.getCurrencyCode(), byCode.getCurrencyCode());
+ h.check(currency.getDefaultFractionDigits(), byCode.getDefaultFractionDigits());
+ h.check(currency.getSymbol(), byCode.getSymbol());
+ }
+ catch (IllegalArgumentException e)
+ {
+ h.fail("Currency code not supported: " + currency.getCurrencyCode());
+ }
+ }
+ }
+
+ public void test(TestHarness h)
+ {
+ // Check all supported locales.
+
+ // FIXME: Add all EURO countries.
+
+ // Locale: Germany
+ checkLocale(h, new Locale("de", "DE"),
+ new ExpectedValues("de", "DE", "", "de_DE", "deu", "DEU",
+ "Deutsch", "Deutschland", "", "Deutsch (Deutschland)",
+ "EUR", 2, "EUR"),
+ new ExpectedDateValues("18.03.1974", "18.03.74", "18.03.1974", "18. M\u00e4rz 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("1.000,00 \u20ac", "1.000.000,00 \u20ac", "100,00 \u20ac", "100,12 \u20ac", "10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("-1.000,00 \u20ac", "-1.000.000,00 \u20ac", "-100,00 \u20ac", "-100,12 \u20ac", "-10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100", "10.000.000"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("100.000%", "100.000.000%", "10.000%", "10.012%", "1.000.000.012%"));
+ // Locale: Belgium
+ checkLocale(h, new Locale("fr", "BE"),
+ new ExpectedValues("fr", "BE", "", "fr_BE", "fra", "BEL",
+ "Franz\u00f6sisch", "Belgien", "", "Franz\u00f6sisch (Belgien)",
+ "EUR", 2, "EUR"),
+ new ExpectedDateValues("18-mars-1974", "18/03/74", "18-mars-1974", "18 mars 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("1.000,00 \u20ac", "1.000.000,00 \u20ac", "100,00 \u20ac", "100,12 \u20ac", "10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("-1.000,00 \u20ac", "-1.000.000,00 \u20ac", "-100,00 \u20ac", "-100,12 \u20ac", "-10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100", "10.000.000"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("100.000 %", "100.000.000 %", "10.000 %", "10.012 %", "1.000.000.012 %"));
+ // Locale: Greece
+ // FIXME: Disabled for now due to pattern problems.
+ /*
+ checkLocale(h, new Locale("el", "GR"),
+ new ExpectedValues("el", "GR", "", "el_GR", "ell", "GRC",
+ "Griechisch", "Griechenland", "", "Griechisch (Griechenland)",
+ "EUR", 2, "\u20ac"),
+ new ExpectedDateValues("18.03.1974", "18.03.74", "18.03.1974", "18. M\u00e4rz 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("1.000,00 \u20ac", "1.000.000,00 \u20ac", "100,00 \u20ac", "100,12 \u20ac", "10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("-1.000,00 \u20ac", "-1.000.000,00 \u20ac", "-100,00 \u20ac", "-100,12 \u20ac", "-10.000.000,12 \u20ac"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100", "10.000.000"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("100.000%", "100.000.000%", "10.000%", "10.012%", "1.000.000.012%"));
+ */
+ // Locale: Ireland
+ checkLocale(h, new Locale("en", "IE"),
+ new ExpectedValues("en", "IE", "", "en_IE", "eng", "IRL",
+ "Englisch", "Irland", "", "Englisch (Irland)",
+ "EUR", 2, "EUR"),
+ new ExpectedDateValues("18-Mar-1974", "18/03/74", "18-Mar-1974", "18 March 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("\u20ac1,000.00", "\u20ac1,000,000.00", "\u20ac100.00", "\u20ac100.12", "\u20ac10,000,000.12"),
+ new ExpectedNumberValues("-\u20ac1,000.00", "-\u20ac1,000,000.00", "-\u20ac100.00", "-\u20ac100.12", "-\u20ac10,000,000.12"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100", "10,000,000"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("100,000%", "100,000,000%", "10,000%", "10,012%", "1,000,000,012%"));
+ // Locale: France
+ checkLocale(h, new Locale("fr", "FR"),
+ new ExpectedValues("fr", "FR", "", "fr_FR", "fra", "FRA",
+ "Franz\u00f6sisch", "Frankreich", "", "Franz\u00f6sisch (Frankreich)",
+ "EUR", 2, "EUR"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: Spain
+ checkLocale(h, new Locale("es", "ES"),
+ new ExpectedValues("es", "ES", "", "es_ES", "spa", "ESP",
+ "Spanisch", "Spanien", "", "Spanisch (Spanien)",
+ "EUR", 2, "EUR"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: Portugal
+ checkLocale(h, new Locale("pt", "PT"),
+ new ExpectedValues("pt", "PT", "", "pt_PT", "por", "PRT",
+ "Portugiesisch", "Portugal", "", "Portugiesisch (Portugal)",
+ "EUR", 2, "EUR"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: Italy
+ checkLocale(h, new Locale("it", "IT"),
+ new ExpectedValues("it", "IT", "", "it_IT", "ita", "ITA",
+ "Italienisch", "Italien", "", "Italienisch (Italien)",
+ "EUR", 2, "EUR"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: The Netherlands
+ checkLocale(h, new Locale("nl", "NL"),
+ new ExpectedValues("nl", "NL", "", "nl_NL", "nld", "NLD",
+ "Niederl\u00e4ndisch", "Niederlande", "", "Niederl\u00e4ndisch (Niederlande)",
+ "EUR", 2, "EUR"),
+ new ExpectedDateValues("18-mrt-1974", "18-3-74", "18-mrt-1974", "18 maart 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("\u20ac 1.000,00", "\u20ac 1.000.000,00", "\u20ac 100,00", "\u20ac 100,12", "\u20ac 10.000.000,12"),
+ new ExpectedNumberValues("\u20ac 1.000,00-", "\u20ac 1.000.000,00-", "\u20ac 100,00-", "\u20ac 100,12-", "\u20ac 10.000.000,12-"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100", "10.000.000"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("100.000%", "100.000.000%", "10.000%", "10.012%", "1.000.000.012%"));
+ // Locale: Luxemborg
+ checkLocale(h, new Locale("fr", "LU"),
+ new ExpectedValues("fr", "LU", "", "fr_LU", "fra", "LUX",
+ "Franz\u00f6sisch", "Luxemburg", "", "Franz\u00f6sisch (Luxemburg)",
+ "EUR", 2, "EUR"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: United Kingdom
+ checkLocale(h, Locale.UK,
+ new ExpectedValues("en", "GB", "", "en_GB", "eng", "GBR",
+ "Englisch", "Vereinigtes K\u00f6nigreich", "", "Englisch (Vereinigtes K\u00f6nigreich)",
+ "GBP", 2, "GBP"),
+ new ExpectedDateValues("18-Mar-1974", "18/03/74", "18-Mar-1974", "18 March 1974", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("\u00a31,000.00", "\u00a31,000,000.00", "\u00a3100.00", "\u00a3100.12", "\u00a310,000,000.12"),
+ new ExpectedNumberValues("-\u00a31,000.00", "-\u00a31,000,000.00", "-\u00a3100.00", "-\u00a3100.12", "-\u00a310,000,000.12"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100", "10,000,000"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("100,000%", "100,000,000%", "10,000%", "10,012%", "1,000,000,012%"));
+ // Locale: United States
+ checkLocale(h, Locale.US,
+ new ExpectedValues("en", "US", "", "en_US", "eng", "USA",
+ "Englisch", "Vereinigte Staaten von Amerika", "", "Englisch (Vereinigte Staaten von Amerika)",
+ "USD", 2, "USD"),
+ new ExpectedDateValues("Mar 18, 1974", "3/18/74", "Mar 18, 1974", "March 18, 1974", "5:20:30 PM", "5:20 PM", "5:20:30 PM", "5:20:30 PM GMT"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("$1,000.00", "$1,000,000.00", "$100.00", "$100.12", "$10,000,000.12"),
+ new ExpectedNumberValues("($1,000.00)", "($1,000,000.00)", "($100.00)", "($100.12)", "($10,000,000.12)"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100", "10,000,000"),
+ new ExpectedNumberValues("1,000", "1,000,000", "100", "100.123", "10,000,000.123"),
+ new ExpectedNumberValues("100,000%", "100,000,000%", "10,000%", "10,012%", "1,000,000,012%"));
+ // Locale: Finland
+ checkLocale(h, new Locale("fi", "FI"),
+ new ExpectedValues("fi", "FI", "", "fi_FI", "fin", "FIN",
+ "Finnisch", "Finnland", "", "Finnisch (Finnland)",
+ "EUR", 2, "EUR"),
+ new ExpectedDateValues("18.3.1974", "18.3.1974", "18.3.1974", "18. maaliskuuta 1974", "17:20:30", "17:20", "17:20:30", "klo 17.20.30"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100,123", "10\u00a0000\u00a0000,123"),
+ new ExpectedNumberValues("1\u00a0000,00 \u20ac", "1\u00a0000\u00a0000,00 \u20ac", "100,00 \u20ac", "100,12 \u20ac", "10\u00a0000\u00a0000,12 \u20ac"),
+ new ExpectedNumberValues("-1\u00a0000,00 \u20ac", "-1\u00a0000\u00a0000,00 \u20ac", "-100,00 \u20ac", "-100,12 \u20ac", "-10\u00a0000\u00a0000,12 \u20ac"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100", "10\u00a0000\u00a0000"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100,123", "10\u00a0000\u00a0000,123"),
+ new ExpectedNumberValues("100\u00a0000%", "100\u00a0000\u00a0000%", "10\u00a0000%", "10\u00a0012%", "1\u00a0000\u00a0000\u00a0012%"));
+ // Locale: Turkey
+ checkLocale(h, new Locale("tr", "TR"),
+ new ExpectedValues("tr", "TR", "", "tr_TR", "tur", "TUR",
+ "T\u00fcrkisch", "T\u00fcrkei", "", "T\u00fcrkisch (T\u00fcrkei)",
+ "TRY", 2, "TRY"),
+ new ExpectedDateValues("18.Mar.1974", "18.03.1974", "18.Mar.1974", "18 Mart 1974 Pazartesi", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("1.000,00 YTL", "1.000.000,00 YTL", "100,00 YTL", "100,12 YTL", "10.000.000,12 YTL"),
+ new ExpectedNumberValues("-1.000,00 YTL", "-1.000.000,00 YTL", "-100,00 YTL", "-100,12 YTL", "-10.000.000,12 YTL"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100", "10.000.000"),
+ new ExpectedNumberValues("1.000", "1.000.000", "100", "100,123", "10.000.000,123"),
+ new ExpectedNumberValues("% 100.000", "% 100.000.000", "% 10.000", "% 10.012", "% 1.000.000.012"));
+ // Locale: Kazakstan
+ checkLocale(h, new Locale("kk", "KZ"),
+ new ExpectedValues("kk", "KZ", "", "kk_KZ", "kaz", "KAZ",
+ "Kasachisch", "Kasachstan", "", "Kasachisch (Kasachstan)",
+ "KZT", 2, "KZT"),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null);
+ // Locale: Estonia
+ checkLocale(h, new Locale("et", "EE"),
+ new ExpectedValues("et", "EE", "", "et_EE", "est", "EST",
+ "Estnisch", "Estland", "", "Estnisch (Estland)",
+ "EEK", 2, "EEK"),
+ new ExpectedDateValues("18.03.1974", "18.03.74", "18.03.1974", "esmasp\u00e4ev, 18. M\u00e4rts 1974. a", "17:20:30", "17:20", "17:20:30", "17:20:30 GMT"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100,123", "10\u00a0000\u00a0000,123"),
+ new ExpectedNumberValues("1\u00a0000 kr", "1\u00a0000\u00a0000 kr", "100 kr", "100,12 kr", "10\u00a0000\u00a0000,12 kr"),
+ new ExpectedNumberValues("-1\u00a0000 kr", "-1\u00a0000\u00a0000 kr", "-100 kr", "-100,12 kr", "-10\u00a0000\u00a0000,12 kr"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100", "10\u00a0000\u00a0000"),
+ new ExpectedNumberValues("1\u00a0000", "1\u00a0000\u00a0000", "100", "100,123", "10\u00a0000\u00a0000,123"),
+ new ExpectedNumberValues("100\u00a0000%", "100\u00a0000\u00a0000%", "10\u00a0000%", "10\u00a0012%", "1\u00a0000\u00a0000\u00a0012%"));
+ }
+}
+
diff --git a/gnu/testlet/org/CVS/Entries b/gnu/testlet/org/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/CVS/Entries.Log b/gnu/testlet/org/CVS/Entries.Log
new file mode 100644
index 00000000..3a1da6df
--- /dev/null
+++ b/gnu/testlet/org/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/omg////
+A D/w3c////
diff --git a/gnu/testlet/org/CVS/Repository b/gnu/testlet/org/CVS/Repository
new file mode 100644
index 00000000..e020d877
--- /dev/null
+++ b/gnu/testlet/org/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org
diff --git a/gnu/testlet/org/CVS/Root b/gnu/testlet/org/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/Any/CVS/Entries b/gnu/testlet/org/omg/CORBA/Any/CVS/Entries
new file mode 100644
index 00000000..7d894daf
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/Any/CVS/Entries
@@ -0,0 +1,2 @@
+/testAny.java/1.2/Wed Jun 25 08:01:02 2008//
+D
diff --git a/gnu/testlet/org/omg/CORBA/Any/CVS/Repository b/gnu/testlet/org/omg/CORBA/Any/CVS/Repository
new file mode 100644
index 00000000..c18ae7b5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/Any/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/Any
diff --git a/gnu/testlet/org/omg/CORBA/Any/CVS/Root b/gnu/testlet/org/omg/CORBA/Any/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/Any/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/Any/testAny.java b/gnu/testlet/org/omg/CORBA/Any/testAny.java
new file mode 100644
index 00000000..defd521a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/Any/testAny.java
@@ -0,0 +1,294 @@
+// Tags: JDK1.2
+// Uses: ../Asserter
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.Any;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_INV_ORDER;
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.ShortSeqHolder;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.Streamable;
+
+import java.math.BigDecimal;
+
+import java.util.Random;
+
+/**
+ * Test the CORBA Any. The actual class being tested is obtained from
+ * the ORB and depends from the implementation; in GNU Classpath it is
+ * gnu.CORBA.gnuAny.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class testAny
+ extends Asserter
+ implements Testlet
+{
+ private Any any;
+ private ORB orb;
+ private Random r = new Random();
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+
+ orb = ORB.init();
+ any = orb.create_any();
+
+ testEquals();
+ testExtract_any();
+ testExtract_boolean();
+ testExtract_char();
+ testExtract_double();
+ testExtract_fixed();
+ testExtract_float();
+ testExtract_long();
+ testExtract_longlong();
+ testExtract_octet();
+ testExtract_short();
+ testExtract_Streamable();
+ testExtract_string();
+ testExtract_TypeCode();
+ testExtract_ulong();
+ testExtract_ulonglong();
+ testExtract_ushort();
+ testExtract_wchar();
+ testExtract_wstring();
+ }
+
+ public void testEquals()
+ {
+ Any other = orb.create_any();
+ other.insert_string("other");
+ any.insert_string("this");
+
+ assertFalse("eq1", any.equal(other));
+
+ any.insert_string("other");
+ assertTrue("eq2", any.equal(other));
+
+ any.insert_long(1);
+ assertFalse("eq3", any.equal(other));
+ }
+
+ public void testExtract_Streamable()
+ throws BAD_INV_ORDER
+ {
+ Streamable expectedReturn =
+ new ShortHolder((short) r.nextInt(Short.MAX_VALUE));
+ any.insert_Streamable(expectedReturn);
+
+ Streamable actualReturn = any.extract_Streamable();
+ assertEquals("Streamable", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_TypeCode()
+ throws BAD_OPERATION
+ {
+ TypeCode expectedReturn = new ShortSeqHolder(new short[ 0 ])._type();
+ any.insert_TypeCode(expectedReturn);
+
+ TypeCode actualReturn = any.extract_TypeCode();
+ assertEquals("typecode", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_any()
+ throws BAD_OPERATION
+ {
+ Any expectedReturn = orb.create_any();
+ expectedReturn.insert_longlong(r.nextLong());
+
+ any.insert_any(expectedReturn);
+
+ Any actualReturn = any.extract_any();
+ assertEquals("Any inside Any", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_boolean()
+ throws BAD_OPERATION
+ {
+ boolean expectedReturn = false;
+ any.insert_boolean(expectedReturn);
+
+ boolean actualReturn = any.extract_boolean();
+ assertEquals("boolean", expectedReturn, actualReturn);
+
+ expectedReturn = true;
+ any.insert_boolean(expectedReturn);
+ actualReturn = any.extract_boolean();
+ assertEquals("boolean", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_char()
+ throws BAD_OPERATION
+ {
+ char expectedReturn = 'z';
+ any.insert_char(expectedReturn);
+
+ char actualReturn = any.extract_char();
+ assertEquals("char", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_double()
+ throws BAD_OPERATION
+ {
+ double expectedReturn = r.nextDouble();
+ any.insert_double(expectedReturn);
+
+ double actualReturn = any.extract_double();
+ assertEquals("double", expectedReturn, actualReturn, Double.MIN_VALUE);
+ }
+
+ public void testExtract_fixed()
+ throws BAD_OPERATION
+ {
+ BigDecimal expectedReturn = new BigDecimal("123.456");
+ any.insert_fixed(expectedReturn,
+ orb.create_fixed_tc((short) 6,
+ (short) expectedReturn.scale()
+ )
+ );
+
+ BigDecimal actualReturn = any.extract_fixed();
+ assertEquals("fixed", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_float()
+ throws BAD_OPERATION
+ {
+ float expectedReturn = r.nextFloat();
+ any.insert_float(expectedReturn);
+
+ float actualReturn = any.extract_float();
+ assertEquals("float", expectedReturn, actualReturn, Float.MIN_VALUE);
+ }
+
+ public void testExtract_long()
+ throws BAD_OPERATION
+ {
+ int expectedReturn = r.nextInt() - Integer.MAX_VALUE / 2;
+ any.insert_long(expectedReturn);
+
+ int actualReturn = any.extract_long();
+ assertEquals("long", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_longlong()
+ throws BAD_OPERATION
+ {
+ long expectedReturn = r.nextLong() - (Long.MAX_VALUE / 2);
+ any.insert_longlong(expectedReturn);
+
+ long actualReturn = any.extract_longlong();
+ assertEquals("long", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_octet()
+ throws BAD_OPERATION
+ {
+ byte expectedReturn = (byte) r.nextInt(Byte.MAX_VALUE);
+ any.insert_octet(expectedReturn);
+
+ byte actualReturn = any.extract_octet();
+ assertEquals("byte (octet)", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_short()
+ throws BAD_OPERATION
+ {
+ short expectedReturn =
+ (short) (r.nextInt(Short.MAX_VALUE) - Short.MAX_VALUE / 2);
+
+ any.insert_short(expectedReturn);
+
+ short actualReturn = any.extract_short();
+ assertEquals("short", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_string()
+ throws BAD_OPERATION
+ {
+ String expectedReturn = "http://www.lithuania.lt";
+ any.insert_string(expectedReturn);
+
+ String actualReturn = any.extract_string();
+ assertEquals("string", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_ulong()
+ throws BAD_OPERATION
+ {
+ int expectedReturn = r.nextInt(Integer.MAX_VALUE);
+ any.insert_ulong(expectedReturn);
+
+ int actualReturn = any.extract_ulong();
+ assertEquals("unsigned long", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_ulonglong()
+ throws BAD_OPERATION
+ {
+ long expectedReturn = Math.abs(r.nextLong());
+ any.insert_ulonglong(expectedReturn);
+
+ long actualReturn = any.extract_ulonglong();
+ assertEquals("unsigned long long", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_ushort()
+ throws BAD_OPERATION
+ {
+ short expectedReturn = (short) r.nextInt(Short.MAX_VALUE);
+ any.insert_ushort(expectedReturn);
+
+ short actualReturn = any.extract_ushort();
+ assertEquals("unsigned short", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_wchar()
+ throws BAD_OPERATION
+ {
+ char expectedReturn = '\u017E';
+ any.insert_wchar(expectedReturn);
+
+ char actualReturn = any.extract_wchar();
+ assertEquals("wchar", expectedReturn, actualReturn);
+ }
+
+ public void testExtract_wstring()
+ throws BAD_OPERATION
+ {
+ String expectedReturn =
+ "http://www.lithuania.lt and \u0105\u010D\u0119\u0117" +
+ "\u012F\u0161\u0173\u016B\u017E\u0104\u0118.";
+ any.insert_wstring(expectedReturn);
+
+ String actualReturn = any.extract_wstring();
+ assertEquals("wstring", expectedReturn, actualReturn);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/Asserter.java b/gnu/testlet/org/omg/CORBA/Asserter.java
new file mode 100644
index 00000000..446f17b0
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/Asserter.java
@@ -0,0 +1,49 @@
+package gnu.testlet.org.omg.CORBA;
+
+import gnu.testlet.TestHarness;
+
+
+public class Asserter {
+
+ protected TestHarness h;
+
+ public void assertTrue(String why, boolean a)
+ {
+ h.check(a, why);
+ }
+
+ public void assertEquals(String why, Object a, Object b)
+ {
+ if (a==null && b==null) return;
+ h.check(a, b, why);
+ }
+
+ public void assertEquals(String why, long a, long b)
+ {
+ h.check(a, b, why);
+ }
+
+ public void assertEquals(String why, boolean a, boolean b)
+ {
+ h.check(a, b, why);
+ }
+
+
+ public void assertEquals(String why, double a, double b, double delta)
+ {
+ if (Math.abs(a-b)>delta)
+ h.fail(a+" and "+b+", "+why);
+ }
+
+
+ public void fail(String why)
+ {
+ h.fail(why);
+ }
+
+ public void assertFalse(String why, boolean x_false)
+ {
+ h.check(!x_false, why);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/CVS/Entries b/gnu/testlet/org/omg/CORBA/CVS/Entries
new file mode 100644
index 00000000..3e436d6c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/CVS/Entries
@@ -0,0 +1,2 @@
+/Asserter.java/1.1/Wed May 18 21:56:36 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/CVS/Entries.Log b/gnu/testlet/org/omg/CORBA/CVS/Entries.Log
new file mode 100644
index 00000000..cff2e424
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/CVS/Entries.Log
@@ -0,0 +1,5 @@
+A D/Any////
+A D/ORB////
+A D/ServiceInformationHelper////
+A D/TypeCode////
+A D/portable////
diff --git a/gnu/testlet/org/omg/CORBA/CVS/Repository b/gnu/testlet/org/omg/CORBA/CVS/Repository
new file mode 100644
index 00000000..ca513334
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA
diff --git a/gnu/testlet/org/omg/CORBA/CVS/Root b/gnu/testlet/org/omg/CORBA/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Entries b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Entries
new file mode 100644
index 00000000..950cf972
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Entries
@@ -0,0 +1,6 @@
+/_asyncImplBase.java/1.2/Mon Jun 26 14:18:50 2006//
+/_asyncStub.java/1.2/Mon Jun 26 14:18:50 2006//
+/assServant.java/1.2/Mon Jun 26 14:18:50 2006//
+/assServer.java/1.1/Wed May 25 11:17:58 2005//
+/async.java/1.2/Mon Jun 26 14:18:50 2006//
+D
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Repository b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Repository
new file mode 100644
index 00000000..e7449cc6
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/ORB/Asynchron
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Root b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java
new file mode 100644
index 00000000..2841dbd5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncImplBase.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB.Asynchron;
+
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * The parallel submission handler implementation base (server side).
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+abstract class _asyncImplBase
+ extends ObjectImpl
+ implements async, InvokeHandler
+{
+ public OutputStream _invoke(String method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler rh
+ )
+ {
+ // Simplified case (only one method - no need for switch).
+ org.omg.CORBA.portable.OutputStream out = null;
+ int duration = in.read_long();
+ int result = sleep_and_return(duration);
+ out = rh.createReply();
+ out.write_long(result);
+ return out;
+ }
+
+ private static String[] __ids =
+ { "IDL:test/org/omg/CORBA/Asynchron/async:1.0" };
+
+ public String[] _ids()
+ {
+ return __ids;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java
new file mode 100644
index 00000000..f7e8b40f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/_asyncStub.java
@@ -0,0 +1,81 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB.Asynchron;
+
+import org.omg.CORBA.MARSHAL;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+/**
+ * The parallel submission handler implementation stub (client side).
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+class _asyncStub
+ extends ObjectImpl
+ implements async
+{
+ public _asyncStub(Delegate delegate)
+ {
+ super();
+ _set_delegate(delegate);
+ }
+
+ /**
+ * Sleep for the given duration, when return.
+ */
+ public int sleep_and_return(int duration)
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("sleep_and_return", true);
+ out.write_long(duration);
+ in = _invoke(out);
+ return in.read_long();
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new MARSHAL(_id);
+ }
+ catch (RemarshalException _rm)
+ {
+ return sleep_and_return(duration);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ private static String[] __ids =
+ { "IDL:test/org/omg/CORBA/Asynchron/async:1.0" };
+
+ public String[] _ids()
+ {
+ return (String[]) __ids.clone();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java
new file mode 100644
index 00000000..ae5b4a1a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServant.java
@@ -0,0 +1,41 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB.Asynchron;
+
+/**
+ * The parallel submission handler implementation (server side).
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+class assServant
+ extends _asyncImplBase
+{
+ public int sleep_and_return(int duration)
+ {
+ try
+ {
+ Thread.sleep(duration);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ return duration;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServer.java b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServer.java
new file mode 100644
index 00000000..66a1417e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/assServer.java
@@ -0,0 +1,64 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB.Asynchron;
+
+import org.omg.CORBA.ORB;
+
+/**
+ * The server for handling parallel submissions.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class assServer
+{
+ public static String[] start_server(int n)
+ {
+ try
+ {
+ // Create and initialize the ORB.
+ final ORB orb = ORB.init(new String[0], null);
+
+ String[] iors = new String[ n ];
+
+ for (int i = 0; i < iors.length; i++)
+ {
+ // Create the servant and register it with the ORB.
+ assServant tester = new assServant();
+ orb.connect(tester);
+ iors [ i ] = orb.object_to_string(tester);
+ }
+
+ new Thread()
+ {
+ public void run()
+ {
+ // Start the thread, serving the invocations from clients.
+ orb.run();
+ }
+ }.start();
+
+ return iors;
+ }
+ catch (Exception e)
+ {
+ System.err.println("ERROR: " + e);
+ e.printStackTrace(System.out);
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java
new file mode 100644
index 00000000..5ae0117e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/Asynchron/async.java
@@ -0,0 +1,33 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB.Asynchron;
+
+/**
+ * The parallel submission handler implementation interface.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+interface async
+{
+
+ /**
+ * Sleep for the given duration, when return.
+ */
+ int sleep_and_return (int duration);
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries b/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries
new file mode 100644
index 00000000..68c05ad2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries
@@ -0,0 +1,6 @@
+/DirectTest.java/1.5/Wed Jun 25 08:01:02 2008//
+/NEC_Corporation_RF11.java/1.1/Sat Jun 4 12:00:33 2005//
+/RequestTest.java/1.2/Sat Jun 11 17:32:42 2005//
+/comServer.java/1.3/Wed Jun 25 08:01:02 2008//
+/parallelRunTest.java/1.1/Wed May 25 11:17:58 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries.Log b/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries.Log
new file mode 100644
index 00000000..2f9edcac
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/Asynchron////
+A D/RF11////
+A D/communication////
diff --git a/gnu/testlet/org/omg/CORBA/ORB/CVS/Repository b/gnu/testlet/org/omg/CORBA/ORB/CVS/Repository
new file mode 100644
index 00000000..27421625
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/ORB
diff --git a/gnu/testlet/org/omg/CORBA/ORB/CVS/Root b/gnu/testlet/org/omg/CORBA/ORB/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ORB/DirectTest.java b/gnu/testlet/org/omg/CORBA/ORB/DirectTest.java
new file mode 100644
index 00000000..09a3b380
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/DirectTest.java
@@ -0,0 +1,255 @@
+// Tags: JDK1.2
+// Uses: ../Asserter
+
+/* DirectTest.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+import org.omg.CORBA.UserException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.org.omg.CORBA.ORB.communication.comTester;
+import gnu.testlet.org.omg.CORBA.ORB.communication.node;
+import gnu.testlet.org.omg.CORBA.ORB.communication.nodeHolder;
+import gnu.testlet.org.omg.CORBA.ORB.communication.ourUserException;
+import gnu.testlet.org.omg.CORBA.ORB.communication.passThis;
+import gnu.testlet.org.omg.CORBA.ORB.communication.returnThis;
+
+/**
+ * Test the invocations by direct call after casting to an interface. Warning:
+ * this test start CORBA server on port 1126. Be sure your security restrictions
+ * allow that server to start. This Classpath example was modified, converting
+ * it into the test.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class DirectTest
+ extends Asserter
+ implements Testlet
+{
+ ORB orb;
+ ORB server;
+ comTester object;
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ setUp();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ harness.fail(ex.getClass().getName() + " in setup.");
+ }
+
+ h = harness;
+
+ testField();
+ testParameters();
+ testStringArray();
+ testStructure();
+ testSystemException();
+ testTree();
+ testUserException();
+ testWideNarrowStrings();
+ }
+
+ /**
+ * Test the field getter/setter.
+ */
+ public void testField()
+ {
+ int def = object.theField();
+
+ assertEquals("Initial value", def, 17);
+
+ object.theField(55);
+
+ int changed = object.theField();
+
+ assertEquals("Changed value", changed, 55);
+
+ // Put the old value back, allowing to re-run the test.
+ object.theField(17);
+ }
+
+ public void testParameters()
+ {
+ ByteHolder a_byte = new ByteHolder((byte) 0);
+ ShortHolder a_short = new ShortHolder((short) 3);
+ StringHolder a_string = new StringHolder("[string 4]");
+
+ // This is an 'out' parameter; the value must not be passed to servant.
+ DoubleHolder a_double = new DoubleHolder(56.789);
+
+ int returned = object.passSimple(a_byte, 2, a_short, a_string, a_double);
+
+ assertEquals("Returned value", returned, 452572);
+
+ assertEquals("octet", a_byte.value, 1);
+ assertEquals("short", a_short.value, 4);
+ assertEquals("string", a_string.value, "[string 4] [return]");
+ assertEquals("double", a_double.value, 1.0, Double.MIN_VALUE);
+ }
+
+ public void testStringArray()
+ {
+ String[] x = new String[] { "one", "two" };
+ String[] y = object.passStrings(x);
+
+ for (int i = 0; i < y.length; i++)
+ {
+ assertEquals("string[]", y [ i ], x [ i ] + ":" + x [ i ]);
+ }
+ }
+
+ public void testStructure()
+ {
+ passThis arg = new passThis();
+ arg.a = "A";
+ arg.b = "B";
+
+ returnThis r = object.passStructure(arg);
+
+ assertEquals("struct, string field", r.c, "AB");
+ assertEquals("struct, int field", r.n, 555);
+
+ assertEquals("array", r.arra [ 0 ], 11);
+ assertEquals("array", r.arra [ 1 ], 22);
+ assertEquals("array", r.arra [ 2 ], 33);
+ }
+
+ public void testSystemException()
+ {
+ try
+ {
+ object.throwException(-55);
+ fail("The BAD_OPERATION is not thrown");
+ }
+ catch (BAD_OPERATION ex)
+ {
+ assertEquals("Minor code", ex.minor, 456);
+ }
+ catch (UserException uex)
+ {
+ fail("User exception must not be thrown");
+ }
+ }
+
+ public void testTree()
+ {
+ node n = nod("Root");
+
+ n.children = new node[] { nod("a"), nod("b") };
+ n.children [ 1 ].children = new node[] { nod("ba"), nod("bb") };
+ n.children [ 1 ].children [ 0 ].children = new node[] { nod("bac") };
+
+ nodeHolder nh = new nodeHolder(n);
+
+ object.passTree(nh);
+
+ // Convert the returned tree to some strig representation.
+ StringBuffer img = new StringBuffer();
+ getImage(img, nh.value);
+
+ assertEquals("Tree image",
+ "Root++: (a++: () b++: (ba++: (bac++: () ) bb++: () ) ) ",
+ img.toString()
+ );
+ }
+
+ public void testUserException()
+ {
+ try
+ {
+ object.throwException(123);
+ fail("The user exception is not thrown");
+ }
+ catch (ourUserException uex)
+ {
+ assertEquals("User exception arg", uex.ourField, 123);
+ }
+ }
+
+ public void testWideNarrowStrings()
+ throws BAD_OPERATION
+ {
+ String r = object.passCharacters("wide string", "narrow string");
+ assertEquals("Returned value", r, "return 'narrow string' and 'wide string'");
+ }
+
+ protected void setUp()
+ throws java.lang.Exception
+ {
+ String ior = comServer.start_server(new String[ 0 ])[0];
+
+ orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+ object = (comTester) orb.string_to_object(ior);
+ }
+
+ private void getImage(StringBuffer b, node n)
+ {
+ b.append(n.name);
+ b.append(": (");
+
+ for (int i = 0; i < n.children.length; i++)
+ {
+ getImage(b, n.children [ i ]);
+ b.append(' ');
+ }
+ b.append(") ");
+ }
+
+ private node nod(String hdr)
+ {
+ node n = new node();
+ n.children = new node[ 0 ];
+ n.name = hdr;
+
+ return n;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/NEC_Corporation_RF11.java b/gnu/testlet/org/omg/CORBA/ORB/NEC_Corporation_RF11.java
new file mode 100644
index 00000000..1b2c9b45
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/NEC_Corporation_RF11.java
@@ -0,0 +1,110 @@
+// Tags: JDK1.2
+
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.ORB.RF11.NEC_RF11;
+import gnu.testlet.org.omg.CORBA.ORB.RF11.rf11Caller;
+import gnu.testlet.org.omg.CORBA.ORB.RF11.rf11Helper;
+import gnu.testlet.org.omg.CORBA.ORB.RF11.rf11Servant;
+
+import org.omg.CORBA.ORB;
+
+import java.util.Iterator;
+
+/**
+ * This is a main test class for the RF11 test. It uses classes in the
+ * underlying package RF11.
+ */
+public class NEC_Corporation_RF11
+ implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // Start the server.
+ // Initializing ORB/POA and server object
+ final ORB server_orb = ORB.init(new String[ 0 ], null);
+
+ rf11Servant servant = new rf11Servant();
+
+ server_orb.connect(servant);
+
+ // Writing stringified IOR to file specified by IORfilename
+ String ior = server_orb.object_to_string(servant);
+
+ new Thread()
+ {
+ public void run()
+ {
+ server_orb.run();
+ }
+ }.start();
+
+ // Wait for 3 seconds for the server to start.
+ try
+ {
+ Thread.sleep(3000);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ // Start the client.
+ ORB client_orb = ORB.init(new String[ 0 ], null);
+ NEC_RF11 obj = rf11Helper.narrow(client_orb.string_to_object(ior));
+ rf11Caller ccall = new rf11Caller();
+
+ ccall.init(client_orb, obj);
+ ccall.run_all(harness);
+
+ // Test for the server messages
+ Iterator iter = servant.error_messages.iterator();
+ while (iter.hasNext())
+ {
+ harness.fail("Server side error: " + iter.next());
+ }
+
+ // Shutdown bot ORBs.
+ server_orb.shutdown(false);
+ client_orb.shutdown(false);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1.java
new file mode 100644
index 00000000..8bc21eff
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1.java
@@ -0,0 +1,73 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class A_except1
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public short v1 = (short) 0;
+ public short v2 = (short) 0;
+ public int v3 = (int) 0;
+ public int v4 = (int) 0;
+ public float v5 = (float) 0;
+ public double v6 = (double) 0;
+ public char v7 = (char) 0;
+ public boolean v8 = false;
+ public byte v9 = (byte) 0;
+
+ public A_except1()
+ {
+ } // ctor
+
+ public A_except1(short _v1, short _v2, int _v3, int _v4, float _v5,
+ double _v6, char _v7, boolean _v8, byte _v9
+ )
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ v5 = _v5;
+ v6 = _v6;
+ v7 = _v7;
+ v8 = _v8;
+ v9 = _v9;
+ } // ctor
+} // class A_except1
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java
new file mode 100644
index 00000000..f071463a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Helper.java
@@ -0,0 +1,165 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class A_except1Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, A_except1 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static A_except1 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 9 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("v5", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("v6", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("v7", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _members0 [ 7 ] =
+ new org.omg.CORBA.StructMember("v8", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _members0 [ 8 ] =
+ new org.omg.CORBA.StructMember("v9", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(A_except1Helper.id(),
+ "A_except1",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static A_except1 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ A_except1 value = new A_except1();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = istream.read_short();
+ value.v2 = istream.read_ushort();
+ value.v3 = istream.read_long();
+ value.v4 = istream.read_ulong();
+ value.v5 = istream.read_float();
+ value.v6 = istream.read_double();
+ value.v7 = istream.read_char();
+ value.v8 = istream.read_boolean();
+ value.v9 = istream.read_octet();
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ A_except1 value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ ostream.write_short(value.v1);
+ ostream.write_ushort(value.v2);
+ ostream.write_long(value.v3);
+ ostream.write_ulong(value.v4);
+ ostream.write_float(value.v5);
+ ostream.write_double(value.v6);
+ ostream.write_char(value.v7);
+ ostream.write_boolean(value.v8);
+ ostream.write_octet(value.v9);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Holder.java
new file mode 100644
index 00000000..1b8f5e5e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1Holder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class A_except1Holder implements org.omg.CORBA.portable.Streamable
+{
+ public A_except1 value = null;
+
+ public A_except1Holder ()
+ {
+ }
+
+ public A_except1Holder (A_except1 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = A_except1Helper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ A_except1Helper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return A_except1Helper.type ();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2.java
new file mode 100644
index 00000000..95895d69
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class A_except2
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public org.omg.CORBA.Any v10 = null;
+ public String v11 = null;
+ public org.omg.CORBA.Object v12 = null;
+
+ public A_except2()
+ {
+ } // ctor
+
+ public A_except2(org.omg.CORBA.Any _v10, String _v11,
+ org.omg.CORBA.Object _v12
+ )
+ {
+ v10 = _v10;
+ v11 = _v11;
+ v12 = _v12;
+ } // ctor
+} // class A_except2
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java
new file mode 100644
index 00000000..aa0b9b78
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Helper.java
@@ -0,0 +1,128 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class A_except2Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, A_except2 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static A_except2 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 3 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v10", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v11", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v12", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(A_except2Helper.id(),
+ "A_except2",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static A_except2 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ A_except2 value = new A_except2();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v10 = istream.read_any();
+ value.v11 = istream.read_string();
+ value.v12 = org.omg.CORBA.ObjectHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ A_except2 value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ ostream.write_any(value.v10);
+ ostream.write_string(value.v11);
+ org.omg.CORBA.ObjectHelper.write(ostream, value.v12);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Holder.java
new file mode 100644
index 00000000..95cb3737
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2Holder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class A_except2Holder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public A_except2 value = null;
+
+ public A_except2Holder()
+ {
+ }
+
+ public A_except2Holder(A_except2 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = A_except2Helper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ A_except2Helper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return A_except2Helper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/B.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/B.java
new file mode 100644
index 00000000..dec562f9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/B.java
@@ -0,0 +1,73 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public class B
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int __value;
+ private static int __size = 3;
+ private static B[] __array = new B[ __size ];
+ public static final int _b1 = 0;
+ public static final B b1 = new B(_b1);
+ public static final int _b2 = 1;
+ public static final B b2 = new B(_b2);
+ public static final int _b3 = 2;
+ public static final B b3 = new B(_b3);
+
+ public int value()
+ {
+ return __value;
+ }
+
+ public static B from_int(int value)
+ {
+ if (value >= 0 && value < __size)
+ return __array [ value ];
+ else
+ throw new org.omg.CORBA.BAD_PARAM();
+ }
+
+ protected B(int value)
+ {
+ __value = value;
+ __array [ __value ] = this;
+ }
+} // class B
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java
new file mode 100644
index 00000000..d2c37a1e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/BHelper.java
@@ -0,0 +1,88 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// B
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class BHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/B:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, B that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static B extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_enum_tc(BHelper.id(), "B",
+ new String[] { "b1", "b2", "b3" }
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static B read(org.omg.CORBA.portable.InputStream istream)
+ {
+ return B.from_int(istream.read_long());
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream, B value)
+ {
+ ostream.write_long(value.value());
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/BHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/BHolder.java
new file mode 100644
index 00000000..e08d69bc
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/BHolder.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// B
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class BHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public B value = null;
+
+ public BHolder()
+ {
+ }
+
+ public BHolder(B initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = BHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ BHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return BHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/B_except.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_except.java
new file mode 100644
index 00000000..3bb5712f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_except.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class B_except
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public B v = null;
+
+ public B_except()
+ {
+ } // ctor
+
+ public B_except(B _v)
+ {
+ v = _v;
+ } // ctor
+} // class B_except
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java
new file mode 100644
index 00000000..2e667379
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHelper.java
@@ -0,0 +1,117 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class B_exceptHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/B_except:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, B_except that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static B_except extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 1 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = BHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(B_exceptHelper.id(),
+ "B_except",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static B_except read(org.omg.CORBA.portable.InputStream istream)
+ {
+ B_except value = new B_except();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v = BHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ B_except value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ BHelper.write(ostream, value.v);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHolder.java
new file mode 100644
index 00000000..1605d3ba
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/B_exceptHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class B_exceptHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public B_except value = null;
+
+ public B_exceptHolder()
+ {
+ }
+
+ public B_exceptHolder(B_except initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = B_exceptHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ B_exceptHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return B_exceptHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Entries b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Entries
new file mode 100644
index 00000000..582d328a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Entries
@@ -0,0 +1,155 @@
+/A_except1.java/1.1/Sat Jun 4 12:00:33 2005//
+/A_except1Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/A_except1Holder.java/1.1/Sat Jun 4 12:00:33 2005//
+/A_except2.java/1.1/Sat Jun 4 12:00:34 2005//
+/A_except2Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/A_except2Holder.java/1.1/Sat Jun 4 12:00:34 2005//
+/B.java/1.2/Mon Jun 26 14:18:50 2006//
+/BHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/BHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/B_except.java/1.1/Sat Jun 4 12:00:34 2005//
+/B_exceptHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/B_exceptHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_ObjectHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_ObjectHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_anyHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_anyHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_booleanHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_booleanHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_charHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_charHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_doubleHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_doubleHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_floatHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_floatHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_longHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_longHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_octetHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_octetHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_shortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_shortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_stringHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_stringHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_ulongHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_ulongHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_array_e_ushortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_array_e_ushortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_except.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_exceptHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_exceptHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_ObjectHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_ObjectHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_anyHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_anyHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_booleanHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_booleanHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_charHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_charHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_doubleHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_doubleHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_floatHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_floatHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_longHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_longHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_octetHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_octetHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_shortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_shortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_stringHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_stringHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_ulongHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_ulongHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_sequence_e_ushortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_sequence_e_ushortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_struct.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_union.java/1.1/Sat Jun 4 12:00:34 2005//
+/C_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/C_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_B.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_BHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_BHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_boolean.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_booleanHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_booleanHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_char.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_charHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_charHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_long.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_longHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_longHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_short.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_shortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_shortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_ulong.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_ulongHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_ulongHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_ushort.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_d_ushortHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_d_ushortHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_except.java/1.1/Sat Jun 4 12:00:34 2005//
+/D_exceptHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/D_exceptHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_arrayHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/E_arrayHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_except.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_exceptHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/E_exceptHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_sequenceHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/E_sequenceHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_struct.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/E_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_union.java/1.1/Sat Jun 4 12:00:34 2005//
+/E_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/E_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_array_e_c_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_array_e_c_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_array_e_c_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_array_e_c_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except1.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except1Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_except1Holder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except2.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except2Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_except2Holder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except3.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_except3Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_except3Holder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_sequence_e_c_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_sequence_e_c_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_sequence_e_c_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_sequence_e_c_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_struct.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_union.java/1.1/Sat Jun 4 12:00:34 2005//
+/F_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/F_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_array_e_e_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_array_e_e_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_array_e_e_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_array_e_e_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_except.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_exceptHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_exceptHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_sequence_e_e_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_sequence_e_e_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_sequence_e_e_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_sequence_e_e_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_struct.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_structHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_structHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_union.java/1.1/Sat Jun 4 12:00:34 2005//
+/G_unionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/G_unionHolder.java/1.1/Sat Jun 4 12:00:34 2005//
+/NEC_RF11.java/1.2/Mon Jun 26 14:18:50 2006//
+/_rf11ImplBase.java/1.2/Thu Jun 29 18:27:09 2006//
+/_rf11Stub.java/1.1/Sat Jun 4 12:00:34 2005//
+/rf11Caller.java/1.2/Wed Jun 25 08:01:02 2008//
+/rf11Helper.java/1.2/Thu Jun 29 18:27:09 2006//
+/rf11Holder.java/1.1/Sat Jun 4 12:00:34 2005//
+/rf11Operations.java/1.2/Mon Jun 26 14:18:50 2006//
+/rf11Servant.java/1.1/Sat Jun 4 12:00:34 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Repository b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Repository
new file mode 100644
index 00000000..2152a935
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/ORB/RF11
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Root b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java
new file mode 100644
index 00000000..43795f8e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_ObjectHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_Object:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, org.omg.CORBA.Object[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static org.omg.CORBA.Object[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ObjectHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ObjectHelper.id(),
+ "C_array_e_Object",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static org.omg.CORBA.Object[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ org.omg.CORBA.Object[] value = null;
+ value = new org.omg.CORBA.Object[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_Object();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ org.omg.CORBA.Object[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_Object(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHolder.java
new file mode 100644
index 00000000..5f2c4e48
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ObjectHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_ObjectHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public org.omg.CORBA.Object[] value = null;
+
+ public C_array_e_ObjectHolder()
+ {
+ }
+
+ public C_array_e_ObjectHolder(org.omg.CORBA.Object[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_ObjectHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_ObjectHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_ObjectHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java
new file mode 100644
index 00000000..fb006f09
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_anyHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_any:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, org.omg.CORBA.Any[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static org.omg.CORBA.Any[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_anyHelper.id(),
+ "C_array_e_any", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static org.omg.CORBA.Any[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ org.omg.CORBA.Any[] value = null;
+ value = new org.omg.CORBA.Any[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_any();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ org.omg.CORBA.Any[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_any(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHolder.java
new file mode 100644
index 00000000..bf35e3fe
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_anyHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_anyHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.omg.CORBA.Any value[] = null;
+
+ public C_array_e_anyHolder ()
+ {
+ }
+
+ public C_array_e_anyHolder (org.omg.CORBA.Any[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_anyHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_anyHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return C_array_e_anyHelper.type ();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java
new file mode 100644
index 00000000..ff32af8b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHelper.java
@@ -0,0 +1,105 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_booleanHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_boolean:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, boolean[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static boolean[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_booleanHelper.id(),
+ "C_array_e_boolean",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static boolean[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ boolean[] value = null;
+ value = new boolean[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_boolean();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ boolean[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_boolean(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHolder.java
new file mode 100644
index 00000000..8050275e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_booleanHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_booleanHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public boolean[] value = null;
+
+ public C_array_e_booleanHolder()
+ {
+ }
+
+ public C_array_e_booleanHolder(boolean[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_booleanHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_booleanHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_booleanHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java
new file mode 100644
index 00000000..bfaa3605
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_charHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_char:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, char[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static char[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_charHelper.id(),
+ "C_array_e_char", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static char[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ char[] value = null;
+ value = new char[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_char();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ char[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_char(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHolder.java
new file mode 100644
index 00000000..ec7480cb
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_charHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_charHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public char[] value = null;
+
+ public C_array_e_charHolder()
+ {
+ }
+
+ public C_array_e_charHolder(char[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_charHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_charHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_charHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java
new file mode 100644
index 00000000..5f97e367
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHelper.java
@@ -0,0 +1,105 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_doubleHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_double:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, double[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static double[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_doubleHelper.id(),
+ "C_array_e_double",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static double[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ double[] value = null;
+ value = new double[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_double();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ double[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_double(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHolder.java
new file mode 100644
index 00000000..bb6ce34a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_doubleHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_doubleHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public double[] value = null;
+
+ public C_array_e_doubleHolder()
+ {
+ }
+
+ public C_array_e_doubleHolder(double[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_doubleHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_doubleHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_doubleHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java
new file mode 100644
index 00000000..6a127f76
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_floatHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_float:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, float[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static float[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_floatHelper.id(),
+ "C_array_e_float", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static float[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ float[] value = null;
+ value = new float[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_float();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ float[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_float(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHolder.java
new file mode 100644
index 00000000..448a172c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_floatHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_floatHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public float[] value = null;
+
+ public C_array_e_floatHolder()
+ {
+ }
+
+ public C_array_e_floatHolder(float[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_floatHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_floatHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_floatHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java
new file mode 100644
index 00000000..ca841534
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_longHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_long:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, int[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static int[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_longHelper.id(),
+ "C_array_e_long", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static int[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ int[] value = null;
+ value = new int[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_long();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ int[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_long(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHolder.java
new file mode 100644
index 00000000..66199075
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_longHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_longHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public int[] value = null;
+
+ public C_array_e_longHolder()
+ {
+ }
+
+ public C_array_e_longHolder(int[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_longHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_longHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_longHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java
new file mode 100644
index 00000000..c4908331
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_octetHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octet:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, byte[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static byte[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_octetHelper.id(),
+ "C_array_e_octet", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static byte[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ byte[] value = null;
+ value = new byte[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_octet();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ byte[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_octet(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHolder.java
new file mode 100644
index 00000000..a6ce93aa
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_octetHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_octetHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public byte[] value = null;
+
+ public C_array_e_octetHolder()
+ {
+ }
+
+ public C_array_e_octetHolder(byte[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_octetHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_octetHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_octetHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java
new file mode 100644
index 00000000..98fd1b8e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_shortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_short:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, short[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static short[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_shortHelper.id(),
+ "C_array_e_short", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static short[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ short[] value = null;
+ value = new short[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_short();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ short[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_short(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHolder.java
new file mode 100644
index 00000000..1ec349a8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_shortHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_shortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public short[] value = null;
+
+ public C_array_e_shortHolder()
+ {
+ }
+
+ public C_array_e_shortHolder(short[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_shortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_shortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_shortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java
new file mode 100644
index 00000000..c2e4a351
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_stringHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_string:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, String[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static String[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init().create_string_tc(0);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_stringHelper.id(),
+ "C_array_e_string",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static String[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ String[] value = null;
+ value = new String[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_string();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ String[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_string(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHolder.java
new file mode 100644
index 00000000..8774a15b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_stringHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_stringHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public String[] value = null;
+
+ public C_array_e_stringHolder()
+ {
+ }
+
+ public C_array_e_stringHolder(String[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_stringHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_stringHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_stringHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java
new file mode 100644
index 00000000..de6800e6
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_ulongHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulong:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, int[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static int[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ulongHelper.id(),
+ "C_array_e_ulong", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static int[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ int[] value = null;
+ value = new int[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_ulong();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ int[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_ulong(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHolder.java
new file mode 100644
index 00000000..4526a32d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ulongHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_ulongHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public int[] value = null;
+
+ public C_array_e_ulongHolder()
+ {
+ }
+
+ public C_array_e_ulongHolder(int[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_ulongHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_ulongHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_ulongHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java
new file mode 100644
index 00000000..6ad384b1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHelper.java
@@ -0,0 +1,105 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_array_e_ushortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushort:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, short[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static short[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ushortHelper.id(),
+ "C_array_e_ushort",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static short[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ short[] value = null;
+ value = new short[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = istream.read_ushort();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ short[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ ostream.write_ushort(value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHolder.java
new file mode 100644
index 00000000..89ad4aac
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_array_e_ushortHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_array_e_ushortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public short[] value = null;
+
+ public C_array_e_ushortHolder()
+ {
+ }
+
+ public C_array_e_ushortHolder(short[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_array_e_ushortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_array_e_ushortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_array_e_ushortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_except.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_except.java
new file mode 100644
index 00000000..74d285a2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_except.java
@@ -0,0 +1,161 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_except
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public C_struct v1 = null;
+ public C_union v2 = null;
+
+ // short
+ public C_union v3 = null;
+
+ // ushort
+ public C_union v4 = null;
+
+ // long
+ public C_union v5 = null;
+
+ // ulong
+ public C_union v6 = null;
+
+ // float
+ public C_union v7 = null;
+
+ // double
+ public C_union v8 = null;
+
+ // char
+ public C_union v9 = null;
+
+ // boolean
+ public C_union v10 = null;
+
+ // octet
+ public C_union v11 = null;
+
+ // any
+ public C_union v12 = null;
+
+ // string
+ public C_union v13 = null;
+
+ // Object
+ public short[] v16 = null;
+ public short[] v17 = null;
+ public int[] v18 = null;
+ public int[] v19 = null;
+ public float[] v20 = null;
+ public double[] v21 = null;
+ public char[] v22 = null;
+ public boolean[] v23 = null;
+ public byte[] v24 = null;
+ public org.omg.CORBA.Any[] v25 = null;
+ public String[] v26 = null;
+ public org.omg.CORBA.Object[] v27 = null;
+ public short[] v30 = null;
+ public short[] v31 = null;
+ public int[] v32 = null;
+ public int[] v33 = null;
+ public float[] v34 = null;
+ public double[] v35 = null;
+ public char[] v36 = null;
+ public boolean[] v37 = null;
+ public byte[] v38 = null;
+ public org.omg.CORBA.Any[] v39 = null;
+ public String[] v40 = null;
+ public org.omg.CORBA.Object[] v41 = null;
+
+ public C_except()
+ {
+ } // ctor
+
+ public C_except(C_struct _v1, C_union _v2, C_union _v3, C_union _v4,
+ C_union _v5, C_union _v6, C_union _v7, C_union _v8,
+ C_union _v9, C_union _v10, C_union _v11, C_union _v12,
+ C_union _v13, short[] _v16, short[] _v17, int[] _v18,
+ int[] _v19, float[] _v20, double[] _v21, char[] _v22,
+ boolean[] _v23, byte[] _v24, org.omg.CORBA.Any[] _v25,
+ String[] _v26, org.omg.CORBA.Object[] _v27, short[] _v30,
+ short[] _v31, int[] _v32, int[] _v33, float[] _v34,
+ double[] _v35, char[] _v36, boolean[] _v37, byte[] _v38,
+ org.omg.CORBA.Any[] _v39, String[] _v40,
+ org.omg.CORBA.Object[] _v41
+ )
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ v5 = _v5;
+ v6 = _v6;
+ v7 = _v7;
+ v8 = _v8;
+ v9 = _v9;
+ v10 = _v10;
+ v11 = _v11;
+ v12 = _v12;
+ v13 = _v13;
+ v16 = _v16;
+ v17 = _v17;
+ v18 = _v18;
+ v19 = _v19;
+ v20 = _v20;
+ v21 = _v21;
+ v22 = _v22;
+ v23 = _v23;
+ v24 = _v24;
+ v25 = _v25;
+ v26 = _v26;
+ v27 = _v27;
+ v30 = _v30;
+ v31 = _v31;
+ v32 = _v32;
+ v33 = _v33;
+ v34 = _v34;
+ v35 = _v35;
+ v36 = _v36;
+ v37 = _v37;
+ v38 = _v38;
+ v39 = _v39;
+ v40 = _v40;
+ v41 = _v41;
+ } // ctor
+} // class C_except
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java
new file mode 100644
index 00000000..057b8e23
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHelper.java
@@ -0,0 +1,484 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_exceptHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_except:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_except that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_except extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 37 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = C_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("v5", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("v6", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("v7", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 7 ] =
+ new org.omg.CORBA.StructMember("v8", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 8 ] =
+ new org.omg.CORBA.StructMember("v9", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 9 ] =
+ new org.omg.CORBA.StructMember("v10", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 10 ] =
+ new org.omg.CORBA.StructMember("v11", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 11 ] =
+ new org.omg.CORBA.StructMember("v12", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 12 ] =
+ new org.omg.CORBA.StructMember("v13", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_shortHelper.id(),
+ "C_sequence_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 13 ] =
+ new org.omg.CORBA.StructMember("v16", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ushortHelper.id(),
+ "C_sequence_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 14 ] =
+ new org.omg.CORBA.StructMember("v17", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_longHelper.id(),
+ "C_sequence_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 15 ] =
+ new org.omg.CORBA.StructMember("v18", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ulongHelper.id(),
+ "C_sequence_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 16 ] =
+ new org.omg.CORBA.StructMember("v19", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_floatHelper.id(),
+ "C_sequence_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 17 ] =
+ new org.omg.CORBA.StructMember("v20", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_doubleHelper.id(),
+ "C_sequence_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 18 ] =
+ new org.omg.CORBA.StructMember("v21", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_charHelper.id(),
+ "C_sequence_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 19 ] =
+ new org.omg.CORBA.StructMember("v22", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_booleanHelper.id(),
+ "C_sequence_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 20 ] =
+ new org.omg.CORBA.StructMember("v23", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_octetHelper.id(),
+ "C_sequence_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 21 ] =
+ new org.omg.CORBA.StructMember("v24", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_anyHelper.id(),
+ "C_sequence_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 22 ] =
+ new org.omg.CORBA.StructMember("v25", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_stringHelper.id(),
+ "C_sequence_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 23 ] =
+ new org.omg.CORBA.StructMember("v26", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ObjectHelper.id(),
+ "C_sequence_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 24 ] =
+ new org.omg.CORBA.StructMember("v27", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_shortHelper.id(),
+ "C_array_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 25 ] =
+ new org.omg.CORBA.StructMember("v30", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ushortHelper.id(),
+ "C_array_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 26 ] =
+ new org.omg.CORBA.StructMember("v31", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_longHelper.id(),
+ "C_array_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 27 ] =
+ new org.omg.CORBA.StructMember("v32", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ulongHelper.id(),
+ "C_array_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 28 ] =
+ new org.omg.CORBA.StructMember("v33", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_floatHelper.id(),
+ "C_array_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 29 ] =
+ new org.omg.CORBA.StructMember("v34", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_doubleHelper.id(),
+ "C_array_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 30 ] =
+ new org.omg.CORBA.StructMember("v35", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_charHelper.id(),
+ "C_array_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 31 ] =
+ new org.omg.CORBA.StructMember("v36", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_booleanHelper.id(),
+ "C_array_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 32 ] =
+ new org.omg.CORBA.StructMember("v37", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_octetHelper.id(),
+ "C_array_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 33 ] =
+ new org.omg.CORBA.StructMember("v38", _tcOf_members0, null);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_anyHelper.id(),
+ "C_array_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 34 ] =
+ new org.omg.CORBA.StructMember("v39", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_stringHelper.id(),
+ "C_array_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 35 ] =
+ new org.omg.CORBA.StructMember("v40", _tcOf_members0, null);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ObjectHelper.id(),
+ "C_array_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 36 ] =
+ new org.omg.CORBA.StructMember("v41", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(C_exceptHelper.id(),
+ "C_except",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_except read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_except value = new C_except();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = C_structHelper.read(istream);
+ value.v2 = C_unionHelper.read(istream);
+ value.v3 = C_unionHelper.read(istream);
+ value.v4 = C_unionHelper.read(istream);
+ value.v5 = C_unionHelper.read(istream);
+ value.v6 = C_unionHelper.read(istream);
+ value.v7 = C_unionHelper.read(istream);
+ value.v8 = C_unionHelper.read(istream);
+ value.v9 = C_unionHelper.read(istream);
+ value.v10 = C_unionHelper.read(istream);
+ value.v11 = C_unionHelper.read(istream);
+ value.v12 = C_unionHelper.read(istream);
+ value.v13 = C_unionHelper.read(istream);
+ value.v16 = C_sequence_e_shortHelper.read(istream);
+ value.v17 = C_sequence_e_ushortHelper.read(istream);
+ value.v18 = C_sequence_e_longHelper.read(istream);
+ value.v19 = C_sequence_e_ulongHelper.read(istream);
+ value.v20 = C_sequence_e_floatHelper.read(istream);
+ value.v21 = C_sequence_e_doubleHelper.read(istream);
+ value.v22 = C_sequence_e_charHelper.read(istream);
+ value.v23 = C_sequence_e_booleanHelper.read(istream);
+ value.v24 = C_sequence_e_octetHelper.read(istream);
+ value.v25 = C_sequence_e_anyHelper.read(istream);
+ value.v26 = C_sequence_e_stringHelper.read(istream);
+ value.v27 = C_sequence_e_ObjectHelper.read(istream);
+ value.v30 = C_array_e_shortHelper.read(istream);
+ value.v31 = C_array_e_ushortHelper.read(istream);
+ value.v32 = C_array_e_longHelper.read(istream);
+ value.v33 = C_array_e_ulongHelper.read(istream);
+ value.v34 = C_array_e_floatHelper.read(istream);
+ value.v35 = C_array_e_doubleHelper.read(istream);
+ value.v36 = C_array_e_charHelper.read(istream);
+ value.v37 = C_array_e_booleanHelper.read(istream);
+ value.v38 = C_array_e_octetHelper.read(istream);
+ value.v39 = C_array_e_anyHelper.read(istream);
+ value.v40 = C_array_e_stringHelper.read(istream);
+ value.v41 = C_array_e_ObjectHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_except value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ C_structHelper.write(ostream, value.v1);
+ C_unionHelper.write(ostream, value.v2);
+ C_unionHelper.write(ostream, value.v3);
+ C_unionHelper.write(ostream, value.v4);
+ C_unionHelper.write(ostream, value.v5);
+ C_unionHelper.write(ostream, value.v6);
+ C_unionHelper.write(ostream, value.v7);
+ C_unionHelper.write(ostream, value.v8);
+ C_unionHelper.write(ostream, value.v9);
+ C_unionHelper.write(ostream, value.v10);
+ C_unionHelper.write(ostream, value.v11);
+ C_unionHelper.write(ostream, value.v12);
+ C_unionHelper.write(ostream, value.v13);
+ C_sequence_e_shortHelper.write(ostream, value.v16);
+ C_sequence_e_ushortHelper.write(ostream, value.v17);
+ C_sequence_e_longHelper.write(ostream, value.v18);
+ C_sequence_e_ulongHelper.write(ostream, value.v19);
+ C_sequence_e_floatHelper.write(ostream, value.v20);
+ C_sequence_e_doubleHelper.write(ostream, value.v21);
+ C_sequence_e_charHelper.write(ostream, value.v22);
+ C_sequence_e_booleanHelper.write(ostream, value.v23);
+ C_sequence_e_octetHelper.write(ostream, value.v24);
+ C_sequence_e_anyHelper.write(ostream, value.v25);
+ C_sequence_e_stringHelper.write(ostream, value.v26);
+ C_sequence_e_ObjectHelper.write(ostream, value.v27);
+ C_array_e_shortHelper.write(ostream, value.v30);
+ C_array_e_ushortHelper.write(ostream, value.v31);
+ C_array_e_longHelper.write(ostream, value.v32);
+ C_array_e_ulongHelper.write(ostream, value.v33);
+ C_array_e_floatHelper.write(ostream, value.v34);
+ C_array_e_doubleHelper.write(ostream, value.v35);
+ C_array_e_charHelper.write(ostream, value.v36);
+ C_array_e_booleanHelper.write(ostream, value.v37);
+ C_array_e_octetHelper.write(ostream, value.v38);
+ C_array_e_anyHelper.write(ostream, value.v39);
+ C_array_e_stringHelper.write(ostream, value.v40);
+ C_array_e_ObjectHelper.write(ostream, value.v41);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHolder.java
new file mode 100644
index 00000000..2e0517c6
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_exceptHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_exceptHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_except value = null;
+
+ public C_exceptHolder()
+ {
+ }
+
+ public C_exceptHolder(C_except initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_exceptHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_exceptHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_exceptHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java
new file mode 100644
index 00000000..81b66345
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_ObjectHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_Object:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, org.omg.CORBA.Object[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static org.omg.CORBA.Object[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ObjectHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ObjectHelper.id(),
+ "C_sequence_e_Object",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static org.omg.CORBA.Object[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ org.omg.CORBA.Object[] value = null;
+ int _len0 = istream.read_long();
+ value = new org.omg.CORBA.Object[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = org.omg.CORBA.ObjectHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ org.omg.CORBA.Object[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ org.omg.CORBA.ObjectHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHolder.java
new file mode 100644
index 00000000..52d2bbc0
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ObjectHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_ObjectHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public org.omg.CORBA.Object[] value = null;
+
+ public C_sequence_e_ObjectHolder()
+ {
+ }
+
+ public C_sequence_e_ObjectHolder(org.omg.CORBA.Object[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_ObjectHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_ObjectHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_ObjectHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java
new file mode 100644
index 00000000..9deffa7d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHelper.java
@@ -0,0 +1,99 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_anyHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_any:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, org.omg.CORBA.Any[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static org.omg.CORBA.Any[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_anyHelper.id(),
+ "C_sequence_e_any",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static org.omg.CORBA.Any[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ org.omg.CORBA.Any[] value = null;
+ int _len0 = istream.read_long();
+ value = new org.omg.CORBA.Any[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = istream.read_any();
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ org.omg.CORBA.Any[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ ostream.write_any(value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHolder.java
new file mode 100644
index 00000000..2cd0782f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_anyHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_anyHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public org.omg.CORBA.Any[] value = null;
+
+ public C_sequence_e_anyHolder()
+ {
+ }
+
+ public C_sequence_e_anyHolder(org.omg.CORBA.Any[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_anyHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_anyHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_anyHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java
new file mode 100644
index 00000000..e6e46117
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_booleanHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_boolean:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, boolean[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static boolean[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_booleanHelper.id(),
+ "C_sequence_e_boolean",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static boolean[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ boolean[] value = null;
+ int _len0 = istream.read_long();
+ value = new boolean[ _len0 ];
+ istream.read_boolean_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ boolean[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_boolean_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHolder.java
new file mode 100644
index 00000000..729e4613
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_booleanHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_booleanHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public boolean[] value = null;
+
+ public C_sequence_e_booleanHolder()
+ {
+ }
+
+ public C_sequence_e_booleanHolder(boolean[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_booleanHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_booleanHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_booleanHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java
new file mode 100644
index 00000000..eb4e2057
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_charHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_char:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, char[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static char[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_charHelper.id(),
+ "C_sequence_e_char",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static char[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ char[] value = null;
+ int _len0 = istream.read_long();
+ value = new char[ _len0 ];
+ istream.read_char_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ char[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_char_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHolder.java
new file mode 100644
index 00000000..3a1b9e01
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_charHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_charHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public char[] value = null;
+
+ public C_sequence_e_charHolder()
+ {
+ }
+
+ public C_sequence_e_charHolder(char[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_charHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_charHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_charHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java
new file mode 100644
index 00000000..709390bb
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_doubleHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_double:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, double[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static double[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_doubleHelper.id(),
+ "C_sequence_e_double",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static double[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ double[] value = null;
+ int _len0 = istream.read_long();
+ value = new double[ _len0 ];
+ istream.read_double_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ double[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_double_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHolder.java
new file mode 100644
index 00000000..15788d5a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_doubleHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_doubleHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public double[] value = null;
+
+ public C_sequence_e_doubleHolder()
+ {
+ }
+
+ public C_sequence_e_doubleHolder(double[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_doubleHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_doubleHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_doubleHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java
new file mode 100644
index 00000000..3c4c273c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_floatHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_float:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, float[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static float[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_floatHelper.id(),
+ "C_sequence_e_float",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static float[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ float[] value = null;
+ int _len0 = istream.read_long();
+ value = new float[ _len0 ];
+ istream.read_float_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ float[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_float_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHolder.java
new file mode 100644
index 00000000..2909a302
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_floatHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_floatHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public float[] value = null;
+
+ public C_sequence_e_floatHolder()
+ {
+ }
+
+ public C_sequence_e_floatHolder(float[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_floatHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_floatHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_floatHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java
new file mode 100644
index 00000000..0ce44488
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_longHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_long:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, int[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static int[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_longHelper.id(),
+ "C_sequence_e_long",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static int[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ int[] value = null;
+ int _len0 = istream.read_long();
+ value = new int[ _len0 ];
+ istream.read_long_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ int[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_long_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHolder.java
new file mode 100644
index 00000000..c2e36555
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_longHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_longHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public int[] value = null;
+
+ public C_sequence_e_longHolder()
+ {
+ }
+
+ public C_sequence_e_longHolder(int[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_longHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_longHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_longHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java
new file mode 100644
index 00000000..e8f15242
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_octetHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octet:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, byte[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static byte[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_octetHelper.id(),
+ "C_sequence_e_octet",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static byte[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ byte[] value = null;
+ int _len0 = istream.read_long();
+ value = new byte[ _len0 ];
+ istream.read_octet_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ byte[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_octet_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHolder.java
new file mode 100644
index 00000000..22e35265
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_octetHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_octetHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public byte[] value = null;
+
+ public C_sequence_e_octetHolder()
+ {
+ }
+
+ public C_sequence_e_octetHolder(byte[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_octetHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_octetHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_octetHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java
new file mode 100644
index 00000000..cc782b3f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_shortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_short:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, short[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static short[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_shortHelper.id(),
+ "C_sequence_e_short",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static short[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ short[] value = null;
+ int _len0 = istream.read_long();
+ value = new short[ _len0 ];
+ istream.read_short_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ short[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_short_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHolder.java
new file mode 100644
index 00000000..b747fd4d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_shortHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_shortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public short[] value = null;
+
+ public C_sequence_e_shortHolder()
+ {
+ }
+
+ public C_sequence_e_shortHolder(short[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_shortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_shortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_shortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java
new file mode 100644
index 00000000..8de84662
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_stringHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_string:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, String[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static String[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init().create_string_tc(0);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_stringHelper.id(),
+ "C_sequence_e_string",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static String[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ String[] value = null;
+ int _len0 = istream.read_long();
+ value = new String[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = istream.read_string();
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ String[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ ostream.write_string(value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHolder.java
new file mode 100644
index 00000000..e5321e01
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_stringHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_stringHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public String[] value = null;
+
+ public C_sequence_e_stringHolder()
+ {
+ }
+
+ public C_sequence_e_stringHolder(String[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_stringHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_stringHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_stringHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java
new file mode 100644
index 00000000..7e6a25c7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_ulongHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulong:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, int[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static int[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ulongHelper.id(),
+ "C_sequence_e_ulong",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static int[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ int[] value = null;
+ int _len0 = istream.read_long();
+ value = new int[ _len0 ];
+ istream.read_ulong_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ int[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_ulong_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHolder.java
new file mode 100644
index 00000000..869ca4ed
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ulongHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_ulongHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public int[] value = null;
+
+ public C_sequence_e_ulongHolder()
+ {
+ }
+
+ public C_sequence_e_ulongHolder(int[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_ulongHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_ulongHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_ulongHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java
new file mode 100644
index 00000000..f580d563
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHelper.java
@@ -0,0 +1,97 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_sequence_e_ushortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushort:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, short[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static short[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ushortHelper.id(),
+ "C_sequence_e_ushort",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static short[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ short[] value = null;
+ int _len0 = istream.read_long();
+ value = new short[ _len0 ];
+ istream.read_ushort_array(value, 0, _len0);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ short[] value
+ )
+ {
+ ostream.write_long(value.length);
+ ostream.write_ushort_array(value, 0, value.length);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHolder.java
new file mode 100644
index 00000000..4bd69ee5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_sequence_e_ushortHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_sequence_e_ushortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public short[] value = null;
+
+ public C_sequence_e_ushortHolder()
+ {
+ }
+
+ public C_sequence_e_ushortHolder(short[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_sequence_e_ushortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_sequence_e_ushortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_sequence_e_ushortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct.java
new file mode 100644
index 00000000..5fb46429
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct.java
@@ -0,0 +1,80 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// C
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_struct
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public short e_short = (short) 0;
+ public short e_ushort = (short) 0;
+ public int e_long = (int) 0;
+ public int e_ulong = (int) 0;
+ public float e_float = (float) 0;
+ public double e_double = (double) 0;
+ public char e_char = (char) 0;
+ public boolean e_boolean = false;
+ public byte e_octet = (byte) 0;
+ public org.omg.CORBA.Any e_any = null;
+ public String e_string = null;
+ public org.omg.CORBA.Object e_Object = null;
+
+ public C_struct()
+ {
+ } // ctor
+
+ public C_struct(short _e_short, short _e_ushort, int _e_long, int _e_ulong,
+ float _e_float, double _e_double, char _e_char,
+ boolean _e_boolean, byte _e_octet, org.omg.CORBA.Any _e_any,
+ String _e_string, org.omg.CORBA.Object _e_Object
+ )
+ {
+ e_short = _e_short;
+ e_ushort = _e_ushort;
+ e_long = _e_long;
+ e_ulong = _e_ulong;
+ e_float = _e_float;
+ e_double = _e_double;
+ e_char = _e_char;
+ e_boolean = _e_boolean;
+ e_octet = _e_octet;
+ e_any = _e_any;
+ e_string = _e_string;
+ e_Object = _e_Object;
+ } // ctor
+} // class C_struct
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java
new file mode 100644
index 00000000..0f75a19a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHelper.java
@@ -0,0 +1,183 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// C
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+abstract public class C_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_struct:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, C_struct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static C_struct extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [12];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_short);
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "e_short",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_ushort);
+ _members0[1] = new org.omg.CORBA.StructMember (
+ "e_ushort",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[2] = new org.omg.CORBA.StructMember (
+ "e_long",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_ulong);
+ _members0[3] = new org.omg.CORBA.StructMember (
+ "e_ulong",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_float);
+ _members0[4] = new org.omg.CORBA.StructMember (
+ "e_float",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_double);
+ _members0[5] = new org.omg.CORBA.StructMember (
+ "e_double",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_char);
+ _members0[6] = new org.omg.CORBA.StructMember (
+ "e_char",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
+ _members0[7] = new org.omg.CORBA.StructMember (
+ "e_boolean",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_octet);
+ _members0[8] = new org.omg.CORBA.StructMember (
+ "e_octet",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_any);
+ _members0[9] = new org.omg.CORBA.StructMember (
+ "e_any",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _members0[10] = new org.omg.CORBA.StructMember (
+ "e_string",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type ();
+ _members0[11] = new org.omg.CORBA.StructMember (
+ "e_Object",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (C_structHelper.id (), "C_struct", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static C_struct read (org.omg.CORBA.portable.InputStream istream)
+ {
+ C_struct value = new C_struct ();
+ value.e_short = istream.read_short ();
+ value.e_ushort = istream.read_ushort ();
+ value.e_long = istream.read_long ();
+ value.e_ulong = istream.read_ulong ();
+ value.e_float = istream.read_float ();
+ value.e_double = istream.read_double ();
+ value.e_char = istream.read_char ();
+ value.e_boolean = istream.read_boolean ();
+ value.e_octet = istream.read_octet ();
+ value.e_any = istream.read_any ();
+ value.e_string = istream.read_string ();
+ value.e_Object = org.omg.CORBA.ObjectHelper.read (istream);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, C_struct value)
+ {
+ ostream.write_short (value.e_short);
+ ostream.write_ushort (value.e_ushort);
+ ostream.write_long (value.e_long);
+ ostream.write_ulong (value.e_ulong);
+ ostream.write_float (value.e_float);
+ ostream.write_double (value.e_double);
+ ostream.write_char (value.e_char);
+ ostream.write_boolean (value.e_boolean);
+ ostream.write_octet (value.e_octet);
+ ostream.write_any (value.e_any);
+ ostream.write_string (value.e_string);
+ org.omg.CORBA.ObjectHelper.write (ostream, value.e_Object);
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHolder.java
new file mode 100644
index 00000000..6333d0f1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_structHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// C
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_structHolder implements org.omg.CORBA.portable.Streamable
+{
+ public C_struct value = null;
+
+ public C_structHolder ()
+ {
+ }
+
+ public C_structHolder (C_struct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_structHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ C_structHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return C_structHelper.type ();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_union.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_union.java
new file mode 100644
index 00000000..14b60ac9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_union.java
@@ -0,0 +1,326 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_union
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private short ___e_short;
+ private short ___e_ushort;
+ private int ___e_long;
+ private int ___e_ulong;
+ private float ___e_float;
+ private double ___e_double;
+ private char ___e_char;
+ private boolean ___e_boolean;
+ private byte ___e_octet;
+ private org.omg.CORBA.Any ___e_any;
+ private String ___e_string;
+ private org.omg.CORBA.Object ___e_Object;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public C_union()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public short e_short()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_short(__discriminator);
+ return ___e_short;
+ }
+
+ public void e_short(short value)
+ {
+ __discriminator = 1;
+ ___e_short = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_short(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public short e_ushort()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_ushort(__discriminator);
+ return ___e_ushort;
+ }
+
+ public void e_ushort(short value)
+ {
+ __discriminator = 2;
+ ___e_ushort = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_ushort(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int e_long()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_long(__discriminator);
+ return ___e_long;
+ }
+
+ public void e_long(int value)
+ {
+ __discriminator = 3;
+ ___e_long = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_long(int discriminator)
+ {
+ if (discriminator != 3)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int e_ulong()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_ulong(__discriminator);
+ return ___e_ulong;
+ }
+
+ public void e_ulong(int value)
+ {
+ __discriminator = 4;
+ ___e_ulong = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_ulong(int discriminator)
+ {
+ if (discriminator != 4)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public float e_float()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_float(__discriminator);
+ return ___e_float;
+ }
+
+ public void e_float(float value)
+ {
+ __discriminator = 5;
+ ___e_float = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_float(int discriminator)
+ {
+ if (discriminator != 5)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public double e_double()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_double(__discriminator);
+ return ___e_double;
+ }
+
+ public void e_double(double value)
+ {
+ __discriminator = 6;
+ ___e_double = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_double(int discriminator)
+ {
+ if (discriminator != 6)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public char e_char()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_char(__discriminator);
+ return ___e_char;
+ }
+
+ public void e_char(char value)
+ {
+ __discriminator = 7;
+ ___e_char = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_char(int discriminator)
+ {
+ if (discriminator != 7)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public boolean e_boolean()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_boolean(__discriminator);
+ return ___e_boolean;
+ }
+
+ public void e_boolean(boolean value)
+ {
+ __discriminator = 8;
+ ___e_boolean = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_boolean(int discriminator)
+ {
+ if (discriminator != 8)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public byte e_octet()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_octet(__discriminator);
+ return ___e_octet;
+ }
+
+ public void e_octet(byte value)
+ {
+ __discriminator = 9;
+ ___e_octet = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_octet(int discriminator)
+ {
+ if (discriminator != 9)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Any e_any()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_any(__discriminator);
+ return ___e_any;
+ }
+
+ public void e_any(org.omg.CORBA.Any value)
+ {
+ __discriminator = 10;
+ ___e_any = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_any(int discriminator)
+ {
+ if (discriminator != 10)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public String e_string()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_string(__discriminator);
+ return ___e_string;
+ }
+
+ public void e_string(String value)
+ {
+ __discriminator = 11;
+ ___e_string = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_string(int discriminator)
+ {
+ if (discriminator != 11)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Object e_Object()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_Object(__discriminator);
+ return ___e_Object;
+ }
+
+ public void e_Object(org.omg.CORBA.Object value)
+ {
+ __discriminator = 12;
+ ___e_Object = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_Object(int discriminator)
+ {
+ if (discriminator != 12)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+} // class C_union
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java
new file mode 100644
index 00000000..7582bb35
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHelper.java
@@ -0,0 +1,360 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class C_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_union that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_union extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 12 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for e_short
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("e_short", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_ushort
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("e_ushort", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_long
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 3);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 2 ] =
+ new org.omg.CORBA.UnionMember("e_long", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_ulong
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 4);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _members0 [ 3 ] =
+ new org.omg.CORBA.UnionMember("e_ulong", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_float
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 5);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _members0 [ 4 ] =
+ new org.omg.CORBA.UnionMember("e_float", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_double
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 6);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _members0 [ 5 ] =
+ new org.omg.CORBA.UnionMember("e_double", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_char
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 7);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _members0 [ 6 ] =
+ new org.omg.CORBA.UnionMember("e_char", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_boolean
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 8);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _members0 [ 7 ] =
+ new org.omg.CORBA.UnionMember("e_boolean", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_octet
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 9);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _members0 [ 8 ] =
+ new org.omg.CORBA.UnionMember("e_octet", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_any
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 10);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _members0 [ 9 ] =
+ new org.omg.CORBA.UnionMember("e_any", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_string
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 11);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _members0 [ 10 ] =
+ new org.omg.CORBA.UnionMember("e_string", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_Object
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 12);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _members0 [ 11 ] =
+ new org.omg.CORBA.UnionMember("e_Object", _anyOf_members0,
+ _tcOf_members0, null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(C_unionHelper.id(),
+ "C_union", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_union read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_union value = new C_union();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_long();
+ switch (_dis0)
+ {
+ case 1 :
+
+ short _e_short = (short) 0;
+ _e_short = istream.read_short();
+ value.e_short(_e_short);
+ break;
+
+ case 2 :
+
+ short _e_ushort = (short) 0;
+ _e_ushort = istream.read_ushort();
+ value.e_ushort(_e_ushort);
+ break;
+
+ case 3 :
+
+ int _e_long = (int) 0;
+ _e_long = istream.read_long();
+ value.e_long(_e_long);
+ break;
+
+ case 4 :
+
+ int _e_ulong = (int) 0;
+ _e_ulong = istream.read_ulong();
+ value.e_ulong(_e_ulong);
+ break;
+
+ case 5 :
+
+ float _e_float = (float) 0;
+ _e_float = istream.read_float();
+ value.e_float(_e_float);
+ break;
+
+ case 6 :
+
+ double _e_double = (double) 0;
+ _e_double = istream.read_double();
+ value.e_double(_e_double);
+ break;
+
+ case 7 :
+
+ char _e_char = (char) 0;
+ _e_char = istream.read_char();
+ value.e_char(_e_char);
+ break;
+
+ case 8 :
+
+ boolean _e_boolean = false;
+ _e_boolean = istream.read_boolean();
+ value.e_boolean(_e_boolean);
+ break;
+
+ case 9 :
+
+ byte _e_octet = (byte) 0;
+ _e_octet = istream.read_octet();
+ value.e_octet(_e_octet);
+ break;
+
+ case 10 :
+
+ org.omg.CORBA.Any _e_any = null;
+ _e_any = istream.read_any();
+ value.e_any(_e_any);
+ break;
+
+ case 11 :
+
+ String _e_string = null;
+ _e_string = istream.read_string();
+ value.e_string(_e_string);
+ break;
+
+ case 12 :
+
+ org.omg.CORBA.Object _e_Object = null;
+ _e_Object = org.omg.CORBA.ObjectHelper.read(istream);
+ value.e_Object(_e_Object);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_union value
+ )
+ {
+ ostream.write_long(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ ostream.write_short(value.e_short());
+ break;
+
+ case 2 :
+ ostream.write_ushort(value.e_ushort());
+ break;
+
+ case 3 :
+ ostream.write_long(value.e_long());
+ break;
+
+ case 4 :
+ ostream.write_ulong(value.e_ulong());
+ break;
+
+ case 5 :
+ ostream.write_float(value.e_float());
+ break;
+
+ case 6 :
+ ostream.write_double(value.e_double());
+ break;
+
+ case 7 :
+ ostream.write_char(value.e_char());
+ break;
+
+ case 8 :
+ ostream.write_boolean(value.e_boolean());
+ break;
+
+ case 9 :
+ ostream.write_octet(value.e_octet());
+ break;
+
+ case 10 :
+ ostream.write_any(value.e_any());
+ break;
+
+ case 11 :
+ ostream.write_string(value.e_string());
+ break;
+
+ case 12 :
+ org.omg.CORBA.ObjectHelper.write(ostream, value.e_Object());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHolder.java
new file mode 100644
index 00000000..c98b4705
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/C_unionHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class C_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_union value = null;
+
+ public C_unionHolder()
+ {
+ }
+
+ public C_unionHolder(C_union initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = C_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ C_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return C_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B.java
new file mode 100644
index 00000000..06abe552
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B.java
@@ -0,0 +1,122 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_B
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private int ___l3;
+ private B __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_B()
+ {
+ }
+
+ public B discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = B.b1;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(B discriminator)
+ {
+ if (discriminator != B.b1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = B.b2;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(B discriminator)
+ {
+ if (discriminator != B.b2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l3()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl3(__discriminator);
+ return ___l3;
+ }
+
+ public void l3(int value)
+ {
+ __discriminator = B.b3;
+ ___l3 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl3(B discriminator)
+ {
+ if (discriminator != B.b3)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+} // class D_d_B
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java
new file mode 100644
index 00000000..d6415dee
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHelper.java
@@ -0,0 +1,171 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_BHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_B:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_B that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_B extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 = BHelper.type();
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 3 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ BHelper.insert(_anyOf_members0, B.b1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ BHelper.insert(_anyOf_members0, B.b2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l3
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ BHelper.insert(_anyOf_members0, B.b3);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 2 ] =
+ new org.omg.CORBA.UnionMember("l3", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_BHelper.id(), "D_d_B",
+ _disTypeCode0, _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_B read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_B value = new D_d_B();
+ B _dis0 = null;
+ _dis0 = BHelper.read(istream);
+ switch (_dis0.value())
+ {
+ case B._b1 :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case B._b2 :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ case B._b3 :
+
+ int _l3 = (int) 0;
+ _l3 = istream.read_long();
+ value.l3(_l3);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_B value
+ )
+ {
+ BHelper.write(ostream, value.discriminator());
+ switch (value.discriminator().value())
+ {
+ case B._b1 :
+ ostream.write_long(value.l1());
+ break;
+
+ case B._b2 :
+ ostream.write_long(value.l2());
+ break;
+
+ case B._b3 :
+ ostream.write_long(value.l3());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHolder.java
new file mode 100644
index 00000000..d55b0748
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_BHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_BHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_B value = null;
+
+ public D_d_BHolder()
+ {
+ }
+
+ public D_d_BHolder(D_d_B initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_BHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_BHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_BHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean.java
new file mode 100644
index 00000000..6e43855c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean.java
@@ -0,0 +1,100 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_boolean
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private boolean __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_boolean()
+ {
+ }
+
+ public boolean discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = true;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(boolean discriminator)
+ {
+ if (discriminator != true)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = false;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(boolean discriminator)
+ {
+ if (discriminator != false)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+} // class D_d_boolean
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java
new file mode 100644
index 00000000..12d2e997
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHelper.java
@@ -0,0 +1,140 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_booleanHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_boolean:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_boolean that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_boolean extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_boolean((boolean) true);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_boolean((boolean) false);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_booleanHelper.id(),
+ "D_d_boolean",
+ _disTypeCode0, _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_boolean read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_boolean value = new D_d_boolean();
+ boolean _dis0 = false;
+ _dis0 = istream.read_boolean();
+ if (_dis0)
+ {
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ }
+ else
+ {
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_boolean value
+ )
+ {
+ ostream.write_boolean(value.discriminator());
+ if (value.discriminator())
+ {
+ ostream.write_long(value.l1());
+ }
+ else
+ {
+ ostream.write_long(value.l2());
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHolder.java
new file mode 100644
index 00000000..2244900b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_booleanHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_booleanHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_boolean value = null;
+
+ public D_d_booleanHolder()
+ {
+ }
+
+ public D_d_booleanHolder(D_d_boolean initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_booleanHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_booleanHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_booleanHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char.java
new file mode 100644
index 00000000..7e4f4b3b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_char
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private char __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_char()
+ {
+ }
+
+ public char discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = 'a';
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(char discriminator)
+ {
+ if (discriminator != 'a')
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = 'b';
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(char discriminator)
+ {
+ if (discriminator != 'b')
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = '\u0000';
+ __uninitialized = false;
+ }
+} // class D_d_char
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java
new file mode 100644
index 00000000..688b952b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHelper.java
@@ -0,0 +1,152 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_charHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_char:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_char that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_char extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_char((char) 'a');
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_char((char) 'b');
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_charHelper.id(),
+ "D_d_char", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_char read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_char value = new D_d_char();
+ char _dis0 = (char) 0;
+ _dis0 = istream.read_char();
+ switch (_dis0)
+ {
+ case 'a' :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case 'b' :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_char value
+ )
+ {
+ ostream.write_char(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 'a' :
+ ostream.write_long(value.l1());
+ break;
+
+ case 'b' :
+ ostream.write_long(value.l2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHolder.java
new file mode 100644
index 00000000..9ee21d87
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_charHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_charHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_char value = null;
+
+ public D_d_charHolder()
+ {
+ }
+
+ public D_d_charHolder(D_d_char initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_charHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_charHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_charHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long.java
new file mode 100644
index 00000000..c6a20da9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_long
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_long()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = 1;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = 2;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+} // class D_d_long
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java
new file mode 100644
index 00000000..02ecc5c5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHelper.java
@@ -0,0 +1,152 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_longHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_long:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_long that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_long extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_longHelper.id(),
+ "D_d_long", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_long read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_long value = new D_d_long();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_long();
+ switch (_dis0)
+ {
+ case 1 :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case 2 :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_long value
+ )
+ {
+ ostream.write_long(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ ostream.write_long(value.l1());
+ break;
+
+ case 2 :
+ ostream.write_long(value.l2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHolder.java
new file mode 100644
index 00000000..cc053987
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_longHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_longHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_long value = null;
+
+ public D_d_longHolder()
+ {
+ }
+
+ public D_d_longHolder(D_d_long initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_longHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_longHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_longHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short.java
new file mode 100644
index 00000000..82776cb8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_short
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private short __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_short()
+ {
+ }
+
+ public short discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = 1;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(short discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = 2;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(short discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -32768;
+ __uninitialized = false;
+ }
+} // class D_d_short
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java
new file mode 100644
index 00000000..aadf4a36
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHelper.java
@@ -0,0 +1,153 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// D
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_shortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_short:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_short that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_short extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_short((short) 1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_short((short) 2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_shortHelper.id(),
+ "D_d_short", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_short read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_short value = new D_d_short();
+ short _dis0 = (short) 0;
+ _dis0 = istream.read_short();
+ switch (_dis0)
+ {
+ case 1 :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case 2 :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_short value
+ )
+ {
+ ostream.write_short(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ ostream.write_long(value.l1());
+ break;
+
+ case 2 :
+ ostream.write_long(value.l2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHolder.java
new file mode 100644
index 00000000..82ca9c80
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_shortHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// D
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_shortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_short value = null;
+
+ public D_d_shortHolder()
+ {
+ }
+
+ public D_d_shortHolder(D_d_short initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_shortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_shortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_shortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong.java
new file mode 100644
index 00000000..9b67e050
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_ulong
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_ulong()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = 1;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = 2;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = 0;
+ __uninitialized = false;
+ }
+} // class D_d_ulong
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java
new file mode 100644
index 00000000..2663cbba
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHelper.java
@@ -0,0 +1,152 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_ulongHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulong:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_ulong that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_ulong extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_ulong((int) 1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_ulong((int) 2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_ulongHelper.id(),
+ "D_d_ulong", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_ulong read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_ulong value = new D_d_ulong();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_ulong();
+ switch (_dis0)
+ {
+ case 1 :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case 2 :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_ulong value
+ )
+ {
+ ostream.write_ulong(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ ostream.write_long(value.l1());
+ break;
+
+ case 2 :
+ ostream.write_long(value.l2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHolder.java
new file mode 100644
index 00000000..b0c7e832
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ulongHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_ulongHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_ulong value = null;
+
+ public D_d_ulongHolder()
+ {
+ }
+
+ public D_d_ulongHolder(D_d_ulong initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_ulongHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_ulongHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_ulongHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort.java
new file mode 100644
index 00000000..64ebcf07
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort.java
@@ -0,0 +1,107 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_ushort
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___l1;
+ private int ___l2;
+ private short __discriminator;
+ private boolean __uninitialized = true;
+
+ public D_d_ushort()
+ {
+ }
+
+ public short discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public int l1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl1(__discriminator);
+ return ___l1;
+ }
+
+ public void l1(int value)
+ {
+ __discriminator = 1;
+ ___l1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl1(short discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int l2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifyl2(__discriminator);
+ return ___l2;
+ }
+
+ public void l2(int value)
+ {
+ __discriminator = 2;
+ ___l2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifyl2(short discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = 0;
+ __uninitialized = false;
+ }
+} // class D_d_ushort
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java
new file mode 100644
index 00000000..7c3b5617
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHelper.java
@@ -0,0 +1,152 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_d_ushortHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushort:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_d_ushort that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_d_ushort extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for l1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_ushort((short) 1);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("l1", _anyOf_members0, _tcOf_members0,
+ null
+ );
+
+ // Branch for l2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_ushort((short) 2);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("l2", _anyOf_members0, _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(D_d_ushortHelper.id(),
+ "D_d_ushort", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_d_ushort read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_d_ushort value = new D_d_ushort();
+ short _dis0 = (short) 0;
+ _dis0 = istream.read_ushort();
+ switch (_dis0)
+ {
+ case 1 :
+
+ int _l1 = (int) 0;
+ _l1 = istream.read_long();
+ value.l1(_l1);
+ break;
+
+ case 2 :
+
+ int _l2 = (int) 0;
+ _l2 = istream.read_long();
+ value.l2(_l2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_d_ushort value
+ )
+ {
+ ostream.write_ushort(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ ostream.write_long(value.l1());
+ break;
+
+ case 2 :
+ ostream.write_long(value.l2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHolder.java
new file mode 100644
index 00000000..95d49c7d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_d_ushortHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_d_ushortHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_d_ushort value = null;
+
+ public D_d_ushortHolder()
+ {
+ }
+
+ public D_d_ushortHolder(D_d_ushort initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_d_ushortHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_d_ushortHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_d_ushortHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_except.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_except.java
new file mode 100644
index 00000000..93117b5b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_except.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_except
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public D_d_short v1 = null;
+ public D_d_ushort v2 = null;
+ public D_d_long v3 = null;
+ public D_d_ulong v4 = null;
+ public D_d_char v5 = null;
+ public D_d_boolean v6 = null;
+ public D_d_B v7 = null;
+
+ public D_except()
+ {
+ } // ctor
+
+ public D_except(D_d_short _v1, D_d_ushort _v2, D_d_long _v3, D_d_ulong _v4,
+ D_d_char _v5, D_d_boolean _v6, D_d_B _v7
+ )
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ v5 = _v5;
+ v6 = _v6;
+ v7 = _v7;
+ } // ctor
+} // class D_except
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java
new file mode 100644
index 00000000..0782e41a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHelper.java
@@ -0,0 +1,146 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class D_exceptHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_except:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, D_except that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static D_except extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 7 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = D_d_shortHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 = D_d_ushortHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 = D_d_longHelper.type();
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 = D_d_ulongHelper.type();
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ _tcOf_members0 = D_d_charHelper.type();
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("v5", _tcOf_members0, null);
+ _tcOf_members0 = D_d_booleanHelper.type();
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("v6", _tcOf_members0, null);
+ _tcOf_members0 = D_d_BHelper.type();
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("v7", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(D_exceptHelper.id(),
+ "D_except",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static D_except read(org.omg.CORBA.portable.InputStream istream)
+ {
+ D_except value = new D_except();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = D_d_shortHelper.read(istream);
+ value.v2 = D_d_ushortHelper.read(istream);
+ value.v3 = D_d_longHelper.read(istream);
+ value.v4 = D_d_ulongHelper.read(istream);
+ value.v5 = D_d_charHelper.read(istream);
+ value.v6 = D_d_booleanHelper.read(istream);
+ value.v7 = D_d_BHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ D_except value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ D_d_shortHelper.write(ostream, value.v1);
+ D_d_ushortHelper.write(ostream, value.v2);
+ D_d_longHelper.write(ostream, value.v3);
+ D_d_ulongHelper.write(ostream, value.v4);
+ D_d_charHelper.write(ostream, value.v5);
+ D_d_booleanHelper.write(ostream, value.v6);
+ D_d_BHelper.write(ostream, value.v7);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHolder.java
new file mode 100644
index 00000000..600ea1d3
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/D_exceptHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class D_exceptHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public D_except value = null;
+
+ public D_exceptHolder()
+ {
+ }
+
+ public D_exceptHolder(D_except initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = D_exceptHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ D_exceptHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return D_exceptHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java
new file mode 100644
index 00000000..d87d9fac
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHelper.java
@@ -0,0 +1,103 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class E_arrayHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_array:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, B[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static B[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = BHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_arrayHelper.id(),
+ "E_array", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static B[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ B[] value = null;
+ value = new B[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = BHelper.read(istream);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ B[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ BHelper.write(ostream, value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHolder.java
new file mode 100644
index 00000000..5c3a2acf
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_arrayHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_arrayHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public B[] value = null;
+
+ public E_arrayHolder()
+ {
+ }
+
+ public E_arrayHolder(B[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = E_arrayHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ E_arrayHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return E_arrayHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_except.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_except.java
new file mode 100644
index 00000000..858d65e2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_except.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_except
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public E_struct v1 = null;
+ public E_union v2 = null;
+ public B[] v3 = null;
+ public B[] v4 = null;
+
+ public E_except()
+ {
+ } // ctor
+
+ public E_except(E_struct _v1, E_union _v2, B[] _v3, B[] _v4)
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ } // ctor
+} // class E_except
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java
new file mode 100644
index 00000000..b2aa0fe7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHelper.java
@@ -0,0 +1,145 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class E_exceptHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_except:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_except that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_except extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 4 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = E_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 = E_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_sequenceHelper.id(),
+ "E_sequence",
+ _tcOf_members0
+ );
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_arrayHelper.id(),
+ "E_array",
+ _tcOf_members0
+ );
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(E_exceptHelper.id(),
+ "E_except",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_except read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_except value = new E_except();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = E_structHelper.read(istream);
+ value.v2 = E_unionHelper.read(istream);
+ value.v3 = E_sequenceHelper.read(istream);
+ value.v4 = E_arrayHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_except value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ E_structHelper.write(ostream, value.v1);
+ E_unionHelper.write(ostream, value.v2);
+ E_sequenceHelper.write(ostream, value.v3);
+ E_arrayHelper.write(ostream, value.v4);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHolder.java
new file mode 100644
index 00000000..a71c934d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_exceptHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_exceptHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_except value = null;
+
+ public E_exceptHolder()
+ {
+ }
+
+ public E_exceptHolder(E_except initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = E_exceptHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ E_exceptHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return E_exceptHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java
new file mode 100644
index 00000000..39588e67
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class E_sequenceHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequence:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, B[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static B[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = BHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_sequenceHelper.id(),
+ "E_sequence", __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static B[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ B[] value = null;
+ int _len0 = istream.read_long();
+ value = new B[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = BHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ B[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ BHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHolder.java
new file mode 100644
index 00000000..dd6ad02f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_sequenceHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_sequenceHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public B[] value = null;
+
+ public E_sequenceHolder()
+ {
+ }
+
+ public E_sequenceHolder(B[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = E_sequenceHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ E_sequenceHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return E_sequenceHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct.java
new file mode 100644
index 00000000..a29cb744
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// E
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_struct
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public B e_b1 = null;
+ public B e_b2 = null;
+
+ public E_struct()
+ {
+ } // ctor
+
+ public E_struct(B _e_b1, B _e_b2)
+ {
+ e_b1 = _e_b1;
+ e_b2 = _e_b2;
+ } // ctor
+} // class E_struct
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java
new file mode 100644
index 00000000..4b009f90
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHelper.java
@@ -0,0 +1,117 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// E
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class E_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_struct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_struct extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = BHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("e_b1", _tcOf_members0, null);
+ _tcOf_members0 = BHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("e_b2", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(E_structHelper.id(),
+ "E_struct",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_struct read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_struct value = new E_struct();
+ value.e_b1 = BHelper.read(istream);
+ value.e_b2 = BHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_struct value
+ )
+ {
+ BHelper.write(ostream, value.e_b1);
+ BHelper.write(ostream, value.e_b2);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHolder.java
new file mode 100644
index 00000000..b6bed52b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_structHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// E
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_struct value = null;
+
+ public E_structHolder()
+ {
+ }
+
+ public E_structHolder(E_struct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = E_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ E_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return E_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_union.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_union.java
new file mode 100644
index 00000000..07b0bccc
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_union.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_union
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private B ___e_b1;
+ private B ___e_b2;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public E_union()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public B e_b1()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_b1(__discriminator);
+ return ___e_b1;
+ }
+
+ public void e_b1(B value)
+ {
+ __discriminator = 1;
+ ___e_b1 = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_b1(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public B e_b2()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_b2(__discriminator);
+ return ___e_b2;
+ }
+
+ public void e_b2(B value)
+ {
+ __discriminator = 2;
+ ___e_b2 = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_b2(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+} // class E_union
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java
new file mode 100644
index 00000000..60c482bc
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHelper.java
@@ -0,0 +1,150 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class E_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_union that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_union extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for e_b1
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 1);
+ _tcOf_members0 = BHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("e_b1", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_b2
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 2);
+ _tcOf_members0 = BHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("e_b2", _anyOf_members0,
+ _tcOf_members0, null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(E_unionHelper.id(),
+ "E_union", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_union read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_union value = new E_union();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_long();
+ switch (_dis0)
+ {
+ case 1 :
+
+ B _e_b1 = null;
+ _e_b1 = BHelper.read(istream);
+ value.e_b1(_e_b1);
+ break;
+
+ case 2 :
+
+ B _e_b2 = null;
+ _e_b2 = BHelper.read(istream);
+ value.e_b2(_e_b2);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_union value
+ )
+ {
+ ostream.write_long(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ BHelper.write(ostream, value.e_b1());
+ break;
+
+ case 2 :
+ BHelper.write(ostream, value.e_b2());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHolder.java
new file mode 100644
index 00000000..453dd786
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/E_unionHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class E_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_union value = null;
+
+ public E_unionHolder()
+ {
+ }
+
+ public E_unionHolder(E_union initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = E_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ E_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return E_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java
new file mode 100644
index 00000000..e79fd288
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_array_e_c_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_struct[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_struct[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = C_structHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_array_e_c_structHelper.id(),
+ "F_array_e_c_struct",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_struct[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_struct[] value = null;
+ value = new C_struct[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = C_structHelper.read(istream);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_struct[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ C_structHelper.write(ostream, value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHolder.java
new file mode 100644
index 00000000..e9f6df2a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_structHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_array_e_c_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_struct[] value = null;
+
+ public F_array_e_c_structHolder()
+ {
+ }
+
+ public F_array_e_c_structHolder(C_struct[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_array_e_c_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_array_e_c_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_array_e_c_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java
new file mode 100644
index 00000000..d8539c88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHelper.java
@@ -0,0 +1,105 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_array_e_c_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_union[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_union[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = C_unionHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_array_e_c_unionHelper.id(),
+ "F_array_e_c_union",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_union[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_union[] value = null;
+ value = new C_union[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = C_unionHelper.read(istream);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_union[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ C_unionHelper.write(ostream, value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHolder.java
new file mode 100644
index 00000000..c2efe330
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_array_e_c_unionHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_array_e_c_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_union[] value = null;
+
+ public F_array_e_c_unionHolder()
+ {
+ }
+
+ public F_array_e_c_unionHolder(C_union[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_array_e_c_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_array_e_c_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_array_e_c_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1.java
new file mode 100644
index 00000000..d1b25e7e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1.java
@@ -0,0 +1,164 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except1
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public F_struct v1 = null;
+ public F_union v2 = null;
+
+ // C_struct
+ public F_union v3 = null;
+
+ // C_union
+ public F_union v4 = null;
+
+ // C_sequence_e_short
+ public F_union v5 = null;
+
+ // C_sequence_e_ushort
+ public F_union v6 = null;
+
+ // C_sequence_e_long
+ public F_union v7 = null;
+
+ // C_sequence_e_ulong
+ public F_union v8 = null;
+
+ // C_sequence e_float
+ public F_union v9 = null;
+
+ // C_sequence_e_double
+ public F_union v10 = null;
+
+ // C_sequence_e_char
+ public F_union v11 = null;
+
+ // C_sequence_e_boolean
+ public F_union v12 = null;
+
+ // C_sequence_e_octet
+ public F_union v13 = null;
+
+ // C_sequence_e_any
+ public F_union v14 = null;
+
+ // C_sequence_e_string
+ public F_union v15 = null;
+
+ // C_sequence_e_Object
+ public F_union v18 = null;
+
+ // C_array_e_short
+ public F_union v19 = null;
+
+ // C_array_e_ushort
+ public F_union v20 = null;
+
+ // C_array_e_long
+ public F_union v21 = null;
+
+ // C_array_e_ulong
+ public F_union v22 = null;
+
+ // C_array e_float
+ public F_union v23 = null;
+
+ // C_array_e_double
+ public F_union v24 = null;
+
+ // C_array_e_char
+ public F_union v25 = null;
+
+ // C_array_e_boolean
+ public F_union v26 = null;
+
+ // C_array_e_octet
+ public F_union v27 = null;
+
+ // C_array_e_any
+ public F_union v28 = null;
+
+ // C_array_e_string
+ public F_union v29 = null;
+
+ public F_except1()
+ {
+ } // ctor
+
+ public F_except1(F_struct _v1, F_union _v2, F_union _v3, F_union _v4,
+ F_union _v5, F_union _v6, F_union _v7, F_union _v8,
+ F_union _v9, F_union _v10, F_union _v11, F_union _v12,
+ F_union _v13, F_union _v14, F_union _v15, F_union _v18,
+ F_union _v19, F_union _v20, F_union _v21, F_union _v22,
+ F_union _v23, F_union _v24, F_union _v25, F_union _v26,
+ F_union _v27, F_union _v28, F_union _v29
+ )
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ v5 = _v5;
+ v6 = _v6;
+ v7 = _v7;
+ v8 = _v8;
+ v9 = _v9;
+ v10 = _v10;
+ v11 = _v11;
+ v12 = _v12;
+ v13 = _v13;
+ v14 = _v14;
+ v15 = _v15;
+ v18 = _v18;
+ v19 = _v19;
+ v20 = _v20;
+ v21 = _v21;
+ v22 = _v22;
+ v23 = _v23;
+ v24 = _v24;
+ v25 = _v25;
+ v26 = _v26;
+ v27 = _v27;
+ v28 = _v28;
+ v29 = _v29;
+ } // ctor
+} // class F_except1
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java
new file mode 100644
index 00000000..4fdc24b5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Helper.java
@@ -0,0 +1,246 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_except1Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, F_except1 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static F_except1 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 27 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = F_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("v5", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("v6", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("v7", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 7 ] =
+ new org.omg.CORBA.StructMember("v8", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 8 ] =
+ new org.omg.CORBA.StructMember("v9", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 9 ] =
+ new org.omg.CORBA.StructMember("v10", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 10 ] =
+ new org.omg.CORBA.StructMember("v11", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 11 ] =
+ new org.omg.CORBA.StructMember("v12", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 12 ] =
+ new org.omg.CORBA.StructMember("v13", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 13 ] =
+ new org.omg.CORBA.StructMember("v14", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 14 ] =
+ new org.omg.CORBA.StructMember("v15", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 15 ] =
+ new org.omg.CORBA.StructMember("v18", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 16 ] =
+ new org.omg.CORBA.StructMember("v19", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 17 ] =
+ new org.omg.CORBA.StructMember("v20", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 18 ] =
+ new org.omg.CORBA.StructMember("v21", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 19 ] =
+ new org.omg.CORBA.StructMember("v22", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 20 ] =
+ new org.omg.CORBA.StructMember("v23", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 21 ] =
+ new org.omg.CORBA.StructMember("v24", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 22 ] =
+ new org.omg.CORBA.StructMember("v25", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 23 ] =
+ new org.omg.CORBA.StructMember("v26", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 24 ] =
+ new org.omg.CORBA.StructMember("v27", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 25 ] =
+ new org.omg.CORBA.StructMember("v28", _tcOf_members0, null);
+ _tcOf_members0 = F_unionHelper.type();
+ _members0 [ 26 ] =
+ new org.omg.CORBA.StructMember("v29", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(F_except1Helper.id(),
+ "F_except1",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static F_except1 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ F_except1 value = new F_except1();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = F_structHelper.read(istream);
+ value.v2 = F_unionHelper.read(istream);
+ value.v3 = F_unionHelper.read(istream);
+ value.v4 = F_unionHelper.read(istream);
+ value.v5 = F_unionHelper.read(istream);
+ value.v6 = F_unionHelper.read(istream);
+ value.v7 = F_unionHelper.read(istream);
+ value.v8 = F_unionHelper.read(istream);
+ value.v9 = F_unionHelper.read(istream);
+ value.v10 = F_unionHelper.read(istream);
+ value.v11 = F_unionHelper.read(istream);
+ value.v12 = F_unionHelper.read(istream);
+ value.v13 = F_unionHelper.read(istream);
+ value.v14 = F_unionHelper.read(istream);
+ value.v15 = F_unionHelper.read(istream);
+ value.v18 = F_unionHelper.read(istream);
+ value.v19 = F_unionHelper.read(istream);
+ value.v20 = F_unionHelper.read(istream);
+ value.v21 = F_unionHelper.read(istream);
+ value.v22 = F_unionHelper.read(istream);
+ value.v23 = F_unionHelper.read(istream);
+ value.v24 = F_unionHelper.read(istream);
+ value.v25 = F_unionHelper.read(istream);
+ value.v26 = F_unionHelper.read(istream);
+ value.v27 = F_unionHelper.read(istream);
+ value.v28 = F_unionHelper.read(istream);
+ value.v29 = F_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ F_except1 value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ F_structHelper.write(ostream, value.v1);
+ F_unionHelper.write(ostream, value.v2);
+ F_unionHelper.write(ostream, value.v3);
+ F_unionHelper.write(ostream, value.v4);
+ F_unionHelper.write(ostream, value.v5);
+ F_unionHelper.write(ostream, value.v6);
+ F_unionHelper.write(ostream, value.v7);
+ F_unionHelper.write(ostream, value.v8);
+ F_unionHelper.write(ostream, value.v9);
+ F_unionHelper.write(ostream, value.v10);
+ F_unionHelper.write(ostream, value.v11);
+ F_unionHelper.write(ostream, value.v12);
+ F_unionHelper.write(ostream, value.v13);
+ F_unionHelper.write(ostream, value.v14);
+ F_unionHelper.write(ostream, value.v15);
+ F_unionHelper.write(ostream, value.v18);
+ F_unionHelper.write(ostream, value.v19);
+ F_unionHelper.write(ostream, value.v20);
+ F_unionHelper.write(ostream, value.v21);
+ F_unionHelper.write(ostream, value.v22);
+ F_unionHelper.write(ostream, value.v23);
+ F_unionHelper.write(ostream, value.v24);
+ F_unionHelper.write(ostream, value.v25);
+ F_unionHelper.write(ostream, value.v26);
+ F_unionHelper.write(ostream, value.v27);
+ F_unionHelper.write(ostream, value.v28);
+ F_unionHelper.write(ostream, value.v29);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Holder.java
new file mode 100644
index 00000000..aa1a834c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1Holder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except1Holder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public F_except1 value = null;
+
+ public F_except1Holder()
+ {
+ }
+
+ public F_except1Holder(F_except1 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_except1Helper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_except1Helper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_except1Helper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2.java
new file mode 100644
index 00000000..7f9ce799
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except2
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public C_struct[] v32 = null;
+ public C_union[] v33 = null;
+
+ public F_except2()
+ {
+ } // ctor
+
+ public F_except2(C_struct[] _v32, C_union[] _v33)
+ {
+ v32 = _v32;
+ v33 = _v33;
+ } // ctor
+} // class F_except2
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java
new file mode 100644
index 00000000..d3639347
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Helper.java
@@ -0,0 +1,136 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_except2Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, F_except2 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static F_except2 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = C_structHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_sequence_e_c_structHelper.id(),
+ "F_sequence_e_c_struct",
+ _tcOf_members0
+ );
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v32", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_sequence_e_c_unionHelper.id(),
+ "F_sequence_e_c_union",
+ _tcOf_members0
+ );
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v33", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(F_except2Helper.id(),
+ "F_except2",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static F_except2 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ F_except2 value = new F_except2();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v32 = F_sequence_e_c_structHelper.read(istream);
+ value.v33 = F_sequence_e_c_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ F_except2 value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ F_sequence_e_c_structHelper.write(ostream, value.v32);
+ F_sequence_e_c_unionHelper.write(ostream, value.v33);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Holder.java
new file mode 100644
index 00000000..e2465c8d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2Holder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except2Holder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public F_except2 value = null;
+
+ public F_except2Holder()
+ {
+ }
+
+ public F_except2Holder(F_except2 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_except2Helper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_except2Helper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_except2Helper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3.java
new file mode 100644
index 00000000..28002fb7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except3
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public C_struct[] v62 = null;
+ public C_union[] v63 = null;
+
+ public F_except3()
+ {
+ } // ctor
+
+ public F_except3(C_struct[] _v62, C_union[] _v63)
+ {
+ v62 = _v62;
+ v63 = _v63;
+ } // ctor
+} // class F_except3
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java
new file mode 100644
index 00000000..4fedc879
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Helper.java
@@ -0,0 +1,136 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_except3Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, F_except3 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static F_except3 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 2 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = C_structHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_array_e_c_structHelper.id(),
+ "F_array_e_c_struct",
+ _tcOf_members0
+ );
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v62", _tcOf_members0, null);
+ _tcOf_members0 = C_unionHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_array_e_c_unionHelper.id(),
+ "F_array_e_c_union",
+ _tcOf_members0
+ );
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v63", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(F_except3Helper.id(),
+ "F_except3",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static F_except3 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ F_except3 value = new F_except3();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v62 = F_array_e_c_structHelper.read(istream);
+ value.v63 = F_array_e_c_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ F_except3 value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ F_array_e_c_structHelper.write(ostream, value.v62);
+ F_array_e_c_unionHelper.write(ostream, value.v63);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Holder.java
new file mode 100644
index 00000000..3c6debad
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3Holder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_except3Holder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public F_except3 value = null;
+
+ public F_except3Holder()
+ {
+ }
+
+ public F_except3Holder(F_except3 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_except3Helper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_except3Helper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_except3Helper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java
new file mode 100644
index 00000000..1f9617b8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHelper.java
@@ -0,0 +1,99 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_sequence_e_c_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_struct[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_struct[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = C_structHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_sequence_e_c_structHelper.id(),
+ "F_sequence_e_c_struct",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_struct[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_struct[] value = null;
+ int _len0 = istream.read_long();
+ value = new C_struct[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = C_structHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_struct[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ C_structHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHolder.java
new file mode 100644
index 00000000..fc6207b7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_structHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_sequence_e_c_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_struct[] value = null;
+
+ public F_sequence_e_c_structHolder()
+ {
+ }
+
+ public F_sequence_e_c_structHolder(C_struct[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_sequence_e_c_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_sequence_e_c_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_sequence_e_c_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java
new file mode 100644
index 00000000..37c47596
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_sequence_e_c_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, C_union[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static C_union[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = C_unionHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(F_sequence_e_c_unionHelper.id(),
+ "F_sequence_e_c_union",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static C_union[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ C_union[] value = null;
+ int _len0 = istream.read_long();
+ value = new C_union[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = C_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ C_union[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ C_unionHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHolder.java
new file mode 100644
index 00000000..427d0f64
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_sequence_e_c_unionHolder.java
@@ -0,0 +1,69 @@
+
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_sequence_e_c_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public C_union[] value = null;
+
+ public F_sequence_e_c_unionHolder()
+ {
+ }
+
+ public F_sequence_e_c_unionHolder(C_union[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_sequence_e_c_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_sequence_e_c_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_sequence_e_c_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct.java
new file mode 100644
index 00000000..d90e00f5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct.java
@@ -0,0 +1,123 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// F
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_struct
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public C_struct e_c_struct = null;
+ public C_union e_c_union = null;
+ public short[] e_c_sequence_e_short = null;
+ public short[] e_c_sequence_e_ushort = null;
+ public int[] e_c_sequence_e_long = null;
+ public int[] e_c_sequence_e_ulong = null;
+ public float[] e_c_sequence_e_float = null;
+ public double[] e_c_sequence_e_double = null;
+ public char[] e_c_sequence_e_char = null;
+ public boolean[] e_c_sequence_e_boolean = null;
+ public byte[] e_c_sequence_e_octet = null;
+ public org.omg.CORBA.Any[] e_c_sequence_e_any = null;
+ public String[] e_c_sequence_e_string = null;
+ public org.omg.CORBA.Object[] e_c_sequence_e_Object = null;
+ public short[] e_c_array_e_short = null;
+ public short[] e_c_array_e_ushort = null;
+ public int[] e_c_array_e_long = null;
+ public int[] e_c_array_e_ulong = null;
+ public float[] e_c_array_e_float = null;
+ public double[] e_c_array_e_double = null;
+ public char[] e_c_array_e_char = null;
+ public boolean[] e_c_array_e_boolean = null;
+ public byte[] e_c_array_e_octet = null;
+ public org.omg.CORBA.Any[] e_c_array_e_any = null;
+ public String[] e_c_array_e_string = null;
+ public org.omg.CORBA.Object[] e_c_array_e_Object = null;
+
+ public F_struct()
+ {
+ } // ctor
+
+ public F_struct(C_struct _e_c_struct, C_union _e_c_union,
+ short[] _e_c_sequence_e_short,
+ short[] _e_c_sequence_e_ushort, int[] _e_c_sequence_e_long,
+ int[] _e_c_sequence_e_ulong, float[] _e_c_sequence_e_float,
+ double[] _e_c_sequence_e_double, char[] _e_c_sequence_e_char,
+ boolean[] _e_c_sequence_e_boolean,
+ byte[] _e_c_sequence_e_octet,
+ org.omg.CORBA.Any[] _e_c_sequence_e_any,
+ String[] _e_c_sequence_e_string,
+ org.omg.CORBA.Object[] _e_c_sequence_e_Object,
+ short[] _e_c_array_e_short, short[] _e_c_array_e_ushort,
+ int[] _e_c_array_e_long, int[] _e_c_array_e_ulong,
+ float[] _e_c_array_e_float, double[] _e_c_array_e_double,
+ char[] _e_c_array_e_char, boolean[] _e_c_array_e_boolean,
+ byte[] _e_c_array_e_octet,
+ org.omg.CORBA.Any[] _e_c_array_e_any,
+ String[] _e_c_array_e_string,
+ org.omg.CORBA.Object[] _e_c_array_e_Object
+ )
+ {
+ e_c_struct = _e_c_struct;
+ e_c_union = _e_c_union;
+ e_c_sequence_e_short = _e_c_sequence_e_short;
+ e_c_sequence_e_ushort = _e_c_sequence_e_ushort;
+ e_c_sequence_e_long = _e_c_sequence_e_long;
+ e_c_sequence_e_ulong = _e_c_sequence_e_ulong;
+ e_c_sequence_e_float = _e_c_sequence_e_float;
+ e_c_sequence_e_double = _e_c_sequence_e_double;
+ e_c_sequence_e_char = _e_c_sequence_e_char;
+ e_c_sequence_e_boolean = _e_c_sequence_e_boolean;
+ e_c_sequence_e_octet = _e_c_sequence_e_octet;
+ e_c_sequence_e_any = _e_c_sequence_e_any;
+ e_c_sequence_e_string = _e_c_sequence_e_string;
+ e_c_sequence_e_Object = _e_c_sequence_e_Object;
+ e_c_array_e_short = _e_c_array_e_short;
+ e_c_array_e_ushort = _e_c_array_e_ushort;
+ e_c_array_e_long = _e_c_array_e_long;
+ e_c_array_e_ulong = _e_c_array_e_ulong;
+ e_c_array_e_float = _e_c_array_e_float;
+ e_c_array_e_double = _e_c_array_e_double;
+ e_c_array_e_char = _e_c_array_e_char;
+ e_c_array_e_boolean = _e_c_array_e_boolean;
+ e_c_array_e_octet = _e_c_array_e_octet;
+ e_c_array_e_any = _e_c_array_e_any;
+ e_c_array_e_string = _e_c_array_e_string;
+ e_c_array_e_Object = _e_c_array_e_Object;
+ } // ctor
+} // class F_struct
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java
new file mode 100644
index 00000000..9f4596d7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHelper.java
@@ -0,0 +1,478 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// F
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, F_struct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static F_struct extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 26 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = C_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("e_c_struct", _tcOf_members0,
+ null
+ );
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("e_c_union", _tcOf_members0,
+ null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_shortHelper.id(),
+ "C_sequence_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_short",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ushortHelper.id(),
+ "C_sequence_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_ushort",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_longHelper.id(),
+ "C_sequence_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_long",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ulongHelper.id(),
+ "C_sequence_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_ulong",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_floatHelper.id(),
+ "C_sequence_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_float",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_doubleHelper.id(),
+ "C_sequence_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 7 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_double",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_charHelper.id(),
+ "C_sequence_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 8 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_char",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_booleanHelper.id(),
+ "C_sequence_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 9 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_boolean",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_octetHelper.id(),
+ "C_sequence_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 10 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_octet",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_anyHelper.id(),
+ "C_sequence_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 11 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_any",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_stringHelper.id(),
+ "C_sequence_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 12 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_string",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ObjectHelper.id(),
+ "C_sequence_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 13 ] =
+ new org.omg.CORBA.StructMember("e_c_sequence_e_Object",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_shortHelper.id(),
+ "C_array_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 14 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_short",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ushortHelper.id(),
+ "C_array_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 15 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_ushort",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_longHelper.id(),
+ "C_array_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 16 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_long",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ulongHelper.id(),
+ "C_array_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 17 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_ulong",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_floatHelper.id(),
+ "C_array_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 18 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_float",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_doubleHelper.id(),
+ "C_array_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 19 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_double",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_charHelper.id(),
+ "C_array_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 20 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_char",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_booleanHelper.id(),
+ "C_array_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 21 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_boolean",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_octetHelper.id(),
+ "C_array_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 22 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_octet",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_anyHelper.id(),
+ "C_array_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 23 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_any",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_stringHelper.id(),
+ "C_array_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 24 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_string",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ObjectHelper.id(),
+ "C_array_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 25 ] =
+ new org.omg.CORBA.StructMember("e_c_array_e_Object",
+ _tcOf_members0, null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(F_structHelper.id(),
+ "F_struct",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static F_struct read(org.omg.CORBA.portable.InputStream istream)
+ {
+ F_struct value = new F_struct();
+ value.e_c_struct = C_structHelper.read(istream);
+ value.e_c_union = C_unionHelper.read(istream);
+ value.e_c_sequence_e_short = C_sequence_e_shortHelper.read(istream);
+ value.e_c_sequence_e_ushort = C_sequence_e_ushortHelper.read(istream);
+ value.e_c_sequence_e_long = C_sequence_e_longHelper.read(istream);
+ value.e_c_sequence_e_ulong = C_sequence_e_ulongHelper.read(istream);
+ value.e_c_sequence_e_float = C_sequence_e_floatHelper.read(istream);
+ value.e_c_sequence_e_double = C_sequence_e_doubleHelper.read(istream);
+ value.e_c_sequence_e_char = C_sequence_e_charHelper.read(istream);
+ value.e_c_sequence_e_boolean = C_sequence_e_booleanHelper.read(istream);
+ value.e_c_sequence_e_octet = C_sequence_e_octetHelper.read(istream);
+ value.e_c_sequence_e_any = C_sequence_e_anyHelper.read(istream);
+ value.e_c_sequence_e_string = C_sequence_e_stringHelper.read(istream);
+ value.e_c_sequence_e_Object = C_sequence_e_ObjectHelper.read(istream);
+ value.e_c_array_e_short = C_array_e_shortHelper.read(istream);
+ value.e_c_array_e_ushort = C_array_e_ushortHelper.read(istream);
+ value.e_c_array_e_long = C_array_e_longHelper.read(istream);
+ value.e_c_array_e_ulong = C_array_e_ulongHelper.read(istream);
+ value.e_c_array_e_float = C_array_e_floatHelper.read(istream);
+ value.e_c_array_e_double = C_array_e_doubleHelper.read(istream);
+ value.e_c_array_e_char = C_array_e_charHelper.read(istream);
+ value.e_c_array_e_boolean = C_array_e_booleanHelper.read(istream);
+ value.e_c_array_e_octet = C_array_e_octetHelper.read(istream);
+ value.e_c_array_e_any = C_array_e_anyHelper.read(istream);
+ value.e_c_array_e_string = C_array_e_stringHelper.read(istream);
+ value.e_c_array_e_Object = C_array_e_ObjectHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ F_struct value
+ )
+ {
+ C_structHelper.write(ostream, value.e_c_struct);
+ C_unionHelper.write(ostream, value.e_c_union);
+ C_sequence_e_shortHelper.write(ostream, value.e_c_sequence_e_short);
+ C_sequence_e_ushortHelper.write(ostream, value.e_c_sequence_e_ushort);
+ C_sequence_e_longHelper.write(ostream, value.e_c_sequence_e_long);
+ C_sequence_e_ulongHelper.write(ostream, value.e_c_sequence_e_ulong);
+ C_sequence_e_floatHelper.write(ostream, value.e_c_sequence_e_float);
+ C_sequence_e_doubleHelper.write(ostream, value.e_c_sequence_e_double);
+ C_sequence_e_charHelper.write(ostream, value.e_c_sequence_e_char);
+ C_sequence_e_booleanHelper.write(ostream, value.e_c_sequence_e_boolean);
+ C_sequence_e_octetHelper.write(ostream, value.e_c_sequence_e_octet);
+ C_sequence_e_anyHelper.write(ostream, value.e_c_sequence_e_any);
+ C_sequence_e_stringHelper.write(ostream, value.e_c_sequence_e_string);
+ C_sequence_e_ObjectHelper.write(ostream, value.e_c_sequence_e_Object);
+ C_array_e_shortHelper.write(ostream, value.e_c_array_e_short);
+ C_array_e_ushortHelper.write(ostream, value.e_c_array_e_ushort);
+ C_array_e_longHelper.write(ostream, value.e_c_array_e_long);
+ C_array_e_ulongHelper.write(ostream, value.e_c_array_e_ulong);
+ C_array_e_floatHelper.write(ostream, value.e_c_array_e_float);
+ C_array_e_doubleHelper.write(ostream, value.e_c_array_e_double);
+ C_array_e_charHelper.write(ostream, value.e_c_array_e_char);
+ C_array_e_booleanHelper.write(ostream, value.e_c_array_e_boolean);
+ C_array_e_octetHelper.write(ostream, value.e_c_array_e_octet);
+ C_array_e_anyHelper.write(ostream, value.e_c_array_e_any);
+ C_array_e_stringHelper.write(ostream, value.e_c_array_e_string);
+ C_array_e_ObjectHelper.write(ostream, value.e_c_array_e_Object);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHolder.java
new file mode 100644
index 00000000..14bbc4b0
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_structHolder.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// F
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public F_struct value = null;
+
+ public F_structHolder()
+ {
+ }
+
+ public F_structHolder(F_struct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_union.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_union.java
new file mode 100644
index 00000000..fe5b48cd
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_union.java
@@ -0,0 +1,635 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_union
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private C_struct ___e_c_struct;
+ private C_union ___e_c_union;
+ private short[] ___e_c_sequence_e_short;
+ private short[] ___e_c_sequence_e_ushort;
+ private int[] ___e_c_sequence_e_long;
+ private int[] ___e_c_sequence_e_ulong;
+ private float[] ___e_c_sequence_e_float;
+ private double[] ___e_c_sequence_e_double;
+ private char[] ___e_c_sequence_e_char;
+ private boolean[] ___e_c_sequence_e_boolean;
+ private byte[] ___e_c_sequence_e_octet;
+ private org.omg.CORBA.Any[] ___e_c_sequence_e_any;
+ private String[] ___e_c_sequence_e_string;
+ private org.omg.CORBA.Object[] ___e_c_sequence_e_Object;
+ private short[] ___e_c_array_e_short;
+ private short[] ___e_c_array_e_ushort;
+ private int[] ___e_c_array_e_long;
+ private int[] ___e_c_array_e_ulong;
+ private float[] ___e_c_array_e_float;
+ private double[] ___e_c_array_e_double;
+ private char[] ___e_c_array_e_char;
+ private boolean[] ___e_c_array_e_boolean;
+ private byte[] ___e_c_array_e_octet;
+ private org.omg.CORBA.Any[] ___e_c_array_e_any;
+ private String[] ___e_c_array_e_string;
+ private org.omg.CORBA.Object[] ___e_c_array_e_Object;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public F_union()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public C_struct e_c_struct()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_struct(__discriminator);
+ return ___e_c_struct;
+ }
+
+ public void e_c_struct(C_struct value)
+ {
+ __discriminator = 1;
+ ___e_c_struct = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_struct(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public C_union e_c_union()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_union(__discriminator);
+ return ___e_c_union;
+ }
+
+ public void e_c_union(C_union value)
+ {
+ __discriminator = 2;
+ ___e_c_union = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_union(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public short[] e_c_sequence_e_short()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_short(__discriminator);
+ return ___e_c_sequence_e_short;
+ }
+
+ public void e_c_sequence_e_short(short[] value)
+ {
+ __discriminator = 3;
+ ___e_c_sequence_e_short = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_short(int discriminator)
+ {
+ if (discriminator != 3)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public short[] e_c_sequence_e_ushort()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_ushort(__discriminator);
+ return ___e_c_sequence_e_ushort;
+ }
+
+ public void e_c_sequence_e_ushort(short[] value)
+ {
+ __discriminator = 4;
+ ___e_c_sequence_e_ushort = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_ushort(int discriminator)
+ {
+ if (discriminator != 4)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int[] e_c_sequence_e_long()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_long(__discriminator);
+ return ___e_c_sequence_e_long;
+ }
+
+ public void e_c_sequence_e_long(int[] value)
+ {
+ __discriminator = 5;
+ ___e_c_sequence_e_long = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_long(int discriminator)
+ {
+ if (discriminator != 5)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int[] e_c_sequence_e_ulong()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_ulong(__discriminator);
+ return ___e_c_sequence_e_ulong;
+ }
+
+ public void e_c_sequence_e_ulong(int[] value)
+ {
+ __discriminator = 6;
+ ___e_c_sequence_e_ulong = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_ulong(int discriminator)
+ {
+ if (discriminator != 6)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public float[] e_c_sequence_e_float()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_float(__discriminator);
+ return ___e_c_sequence_e_float;
+ }
+
+ public void e_c_sequence_e_float(float[] value)
+ {
+ __discriminator = 7;
+ ___e_c_sequence_e_float = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_float(int discriminator)
+ {
+ if (discriminator != 7)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public double[] e_c_sequence_e_double()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_double(__discriminator);
+ return ___e_c_sequence_e_double;
+ }
+
+ public void e_c_sequence_e_double(double[] value)
+ {
+ __discriminator = 8;
+ ___e_c_sequence_e_double = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_double(int discriminator)
+ {
+ if (discriminator != 8)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public char[] e_c_sequence_e_char()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_char(__discriminator);
+ return ___e_c_sequence_e_char;
+ }
+
+ public void e_c_sequence_e_char(char[] value)
+ {
+ __discriminator = 9;
+ ___e_c_sequence_e_char = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_char(int discriminator)
+ {
+ if (discriminator != 9)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public boolean[] e_c_sequence_e_boolean()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_boolean(__discriminator);
+ return ___e_c_sequence_e_boolean;
+ }
+
+ public void e_c_sequence_e_boolean(boolean[] value)
+ {
+ __discriminator = 10;
+ ___e_c_sequence_e_boolean = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_boolean(int discriminator)
+ {
+ if (discriminator != 10)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public byte[] e_c_sequence_e_octet()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_octet(__discriminator);
+ return ___e_c_sequence_e_octet;
+ }
+
+ public void e_c_sequence_e_octet(byte[] value)
+ {
+ __discriminator = 11;
+ ___e_c_sequence_e_octet = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_octet(int discriminator)
+ {
+ if (discriminator != 11)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Any[] e_c_sequence_e_any()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_any(__discriminator);
+ return ___e_c_sequence_e_any;
+ }
+
+ public void e_c_sequence_e_any(org.omg.CORBA.Any[] value)
+ {
+ __discriminator = 12;
+ ___e_c_sequence_e_any = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_any(int discriminator)
+ {
+ if (discriminator != 12)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public String[] e_c_sequence_e_string()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_string(__discriminator);
+ return ___e_c_sequence_e_string;
+ }
+
+ public void e_c_sequence_e_string(String[] value)
+ {
+ __discriminator = 13;
+ ___e_c_sequence_e_string = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_string(int discriminator)
+ {
+ if (discriminator != 13)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Object[] e_c_sequence_e_Object()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_sequence_e_Object(__discriminator);
+ return ___e_c_sequence_e_Object;
+ }
+
+ public void e_c_sequence_e_Object(org.omg.CORBA.Object[] value)
+ {
+ __discriminator = 14;
+ ___e_c_sequence_e_Object = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_sequence_e_Object(int discriminator)
+ {
+ if (discriminator != 14)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public short[] e_c_array_e_short()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_short(__discriminator);
+ return ___e_c_array_e_short;
+ }
+
+ public void e_c_array_e_short(short[] value)
+ {
+ __discriminator = 17;
+ ___e_c_array_e_short = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_short(int discriminator)
+ {
+ if (discriminator != 17)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public short[] e_c_array_e_ushort()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_ushort(__discriminator);
+ return ___e_c_array_e_ushort;
+ }
+
+ public void e_c_array_e_ushort(short[] value)
+ {
+ __discriminator = 18;
+ ___e_c_array_e_ushort = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_ushort(int discriminator)
+ {
+ if (discriminator != 18)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int[] e_c_array_e_long()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_long(__discriminator);
+ return ___e_c_array_e_long;
+ }
+
+ public void e_c_array_e_long(int[] value)
+ {
+ __discriminator = 19;
+ ___e_c_array_e_long = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_long(int discriminator)
+ {
+ if (discriminator != 19)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public int[] e_c_array_e_ulong()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_ulong(__discriminator);
+ return ___e_c_array_e_ulong;
+ }
+
+ public void e_c_array_e_ulong(int[] value)
+ {
+ __discriminator = 20;
+ ___e_c_array_e_ulong = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_ulong(int discriminator)
+ {
+ if (discriminator != 20)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public float[] e_c_array_e_float()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_float(__discriminator);
+ return ___e_c_array_e_float;
+ }
+
+ public void e_c_array_e_float(float[] value)
+ {
+ __discriminator = 21;
+ ___e_c_array_e_float = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_float(int discriminator)
+ {
+ if (discriminator != 21)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public double[] e_c_array_e_double()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_double(__discriminator);
+ return ___e_c_array_e_double;
+ }
+
+ public void e_c_array_e_double(double[] value)
+ {
+ __discriminator = 22;
+ ___e_c_array_e_double = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_double(int discriminator)
+ {
+ if (discriminator != 22)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public char[] e_c_array_e_char()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_char(__discriminator);
+ return ___e_c_array_e_char;
+ }
+
+ public void e_c_array_e_char(char[] value)
+ {
+ __discriminator = 23;
+ ___e_c_array_e_char = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_char(int discriminator)
+ {
+ if (discriminator != 23)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public boolean[] e_c_array_e_boolean()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_boolean(__discriminator);
+ return ___e_c_array_e_boolean;
+ }
+
+ public void e_c_array_e_boolean(boolean[] value)
+ {
+ __discriminator = 24;
+ ___e_c_array_e_boolean = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_boolean(int discriminator)
+ {
+ if (discriminator != 24)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public byte[] e_c_array_e_octet()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_octet(__discriminator);
+ return ___e_c_array_e_octet;
+ }
+
+ public void e_c_array_e_octet(byte[] value)
+ {
+ __discriminator = 25;
+ ___e_c_array_e_octet = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_octet(int discriminator)
+ {
+ if (discriminator != 25)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Any[] e_c_array_e_any()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_any(__discriminator);
+ return ___e_c_array_e_any;
+ }
+
+ public void e_c_array_e_any(org.omg.CORBA.Any[] value)
+ {
+ __discriminator = 26;
+ ___e_c_array_e_any = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_any(int discriminator)
+ {
+ if (discriminator != 26)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public String[] e_c_array_e_string()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_string(__discriminator);
+ return ___e_c_array_e_string;
+ }
+
+ public void e_c_array_e_string(String[] value)
+ {
+ __discriminator = 27;
+ ___e_c_array_e_string = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_string(int discriminator)
+ {
+ if (discriminator != 27)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public org.omg.CORBA.Object[] e_c_array_e_Object()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_c_array_e_Object(__discriminator);
+ return ___e_c_array_e_Object;
+ }
+
+ public void e_c_array_e_Object(org.omg.CORBA.Object[] value)
+ {
+ __discriminator = 28;
+ ___e_c_array_e_Object = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_c_array_e_Object(int discriminator)
+ {
+ if (discriminator != 28)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+} // class F_union
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java
new file mode 100644
index 00000000..69fd02f8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHelper.java
@@ -0,0 +1,820 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class F_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, F_union that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static F_union extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 26 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for e_c_struct
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 1);
+ _tcOf_members0 = C_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("e_c_struct", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_union
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 2);
+ _tcOf_members0 = C_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("e_c_union", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_short
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 3);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_shortHelper.id(),
+ "C_sequence_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 2 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_short",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_ushort
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 4);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ushortHelper.id(),
+ "C_sequence_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 3 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_ushort",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_long
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 5);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_longHelper.id(),
+ "C_sequence_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 4 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_long", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_ulong
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 6);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ulongHelper.id(),
+ "C_sequence_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 5 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_ulong",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_float
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 7);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_floatHelper.id(),
+ "C_sequence_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 6 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_float",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_double
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 8);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_doubleHelper.id(),
+ "C_sequence_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 7 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_double",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_char
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 9);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_charHelper.id(),
+ "C_sequence_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 8 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_char", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_boolean
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 10);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_booleanHelper.id(),
+ "C_sequence_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 9 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_boolean",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_octet
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 11);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_octetHelper.id(),
+ "C_sequence_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 10 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_octet",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_any
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 12);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_anyHelper.id(),
+ "C_sequence_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 11 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_any", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_string
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 13);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_stringHelper.id(),
+ "C_sequence_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 12 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_string",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_sequence_e_Object
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 14);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_sequence_e_ObjectHelper.id(),
+ "C_sequence_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 13 ] =
+ new org.omg.CORBA.UnionMember("e_c_sequence_e_Object",
+ _anyOf_members0, _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_short
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 17);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_short);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_shortHelper.id(),
+ "C_array_e_short",
+ _tcOf_members0
+ );
+ _members0 [ 14 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_short", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_ushort
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 18);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ushort);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ushortHelper.id(),
+ "C_array_e_ushort",
+ _tcOf_members0
+ );
+ _members0 [ 15 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_ushort", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_long
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 19);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_longHelper.id(),
+ "C_array_e_long",
+ _tcOf_members0
+ );
+ _members0 [ 16 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_long", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_ulong
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 20);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_ulong);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ulongHelper.id(),
+ "C_array_e_ulong",
+ _tcOf_members0
+ );
+ _members0 [ 17 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_ulong", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_float
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 21);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_float);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_floatHelper.id(),
+ "C_array_e_float",
+ _tcOf_members0
+ );
+ _members0 [ 18 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_float", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_double
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 22);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_double);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_doubleHelper.id(),
+ "C_array_e_double",
+ _tcOf_members0
+ );
+ _members0 [ 19 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_double", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_char
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 23);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_char);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_charHelper.id(),
+ "C_array_e_char",
+ _tcOf_members0
+ );
+ _members0 [ 20 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_char", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_boolean
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 24);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_boolean);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_booleanHelper.id(),
+ "C_array_e_boolean",
+ _tcOf_members0
+ );
+ _members0 [ 21 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_boolean", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_octet
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 25);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_octet);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_octetHelper.id(),
+ "C_array_e_octet",
+ _tcOf_members0
+ );
+ _members0 [ 22 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_octet", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_any
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 26);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_any);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_anyHelper.id(),
+ "C_array_e_any",
+ _tcOf_members0
+ );
+ _members0 [ 23 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_any", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_string
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 27);
+ _tcOf_members0 = org.omg.CORBA.ORB.init().create_string_tc(0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_stringHelper.id(),
+ "C_array_e_string",
+ _tcOf_members0
+ );
+ _members0 [ 24 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_string", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_c_array_e_Object
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 28);
+ _tcOf_members0 = org.omg.CORBA.ObjectHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(C_array_e_ObjectHelper.id(),
+ "C_array_e_Object",
+ _tcOf_members0
+ );
+ _members0 [ 25 ] =
+ new org.omg.CORBA.UnionMember("e_c_array_e_Object", _anyOf_members0,
+ _tcOf_members0, null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(F_unionHelper.id(),
+ "F_union", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static F_union read(org.omg.CORBA.portable.InputStream istream)
+ {
+ F_union value = new F_union();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_long();
+ switch (_dis0)
+ {
+ case 1 :
+
+ C_struct _e_c_struct = null;
+ _e_c_struct = C_structHelper.read(istream);
+ value.e_c_struct(_e_c_struct);
+ break;
+
+ case 2 :
+
+ C_union _e_c_union = null;
+ _e_c_union = C_unionHelper.read(istream);
+ value.e_c_union(_e_c_union);
+ break;
+
+ case 3 :
+
+ short[] _e_c_sequence_e_short = null;
+ _e_c_sequence_e_short = C_sequence_e_shortHelper.read(istream);
+ value.e_c_sequence_e_short(_e_c_sequence_e_short);
+ break;
+
+ case 4 :
+
+ short[] _e_c_sequence_e_ushort = null;
+ _e_c_sequence_e_ushort = C_sequence_e_ushortHelper.read(istream);
+ value.e_c_sequence_e_ushort(_e_c_sequence_e_ushort);
+ break;
+
+ case 5 :
+
+ int[] _e_c_sequence_e_long = null;
+ _e_c_sequence_e_long = C_sequence_e_longHelper.read(istream);
+ value.e_c_sequence_e_long(_e_c_sequence_e_long);
+ break;
+
+ case 6 :
+
+ int[] _e_c_sequence_e_ulong = null;
+ _e_c_sequence_e_ulong = C_sequence_e_ulongHelper.read(istream);
+ value.e_c_sequence_e_ulong(_e_c_sequence_e_ulong);
+ break;
+
+ case 7 :
+
+ float[] _e_c_sequence_e_float = null;
+ _e_c_sequence_e_float = C_sequence_e_floatHelper.read(istream);
+ value.e_c_sequence_e_float(_e_c_sequence_e_float);
+ break;
+
+ case 8 :
+
+ double[] _e_c_sequence_e_double = null;
+ _e_c_sequence_e_double = C_sequence_e_doubleHelper.read(istream);
+ value.e_c_sequence_e_double(_e_c_sequence_e_double);
+ break;
+
+ case 9 :
+
+ char[] _e_c_sequence_e_char = null;
+ _e_c_sequence_e_char = C_sequence_e_charHelper.read(istream);
+ value.e_c_sequence_e_char(_e_c_sequence_e_char);
+ break;
+
+ case 10 :
+
+ boolean[] _e_c_sequence_e_boolean = null;
+ _e_c_sequence_e_boolean = C_sequence_e_booleanHelper.read(istream);
+ value.e_c_sequence_e_boolean(_e_c_sequence_e_boolean);
+ break;
+
+ case 11 :
+
+ byte[] _e_c_sequence_e_octet = null;
+ _e_c_sequence_e_octet = C_sequence_e_octetHelper.read(istream);
+ value.e_c_sequence_e_octet(_e_c_sequence_e_octet);
+ break;
+
+ case 12 :
+
+ org.omg.CORBA.Any[] _e_c_sequence_e_any = null;
+ _e_c_sequence_e_any = C_sequence_e_anyHelper.read(istream);
+ value.e_c_sequence_e_any(_e_c_sequence_e_any);
+ break;
+
+ case 13 :
+
+ String[] _e_c_sequence_e_string = null;
+ _e_c_sequence_e_string = C_sequence_e_stringHelper.read(istream);
+ value.e_c_sequence_e_string(_e_c_sequence_e_string);
+ break;
+
+ case 14 :
+
+ org.omg.CORBA.Object[] _e_c_sequence_e_Object = null;
+ _e_c_sequence_e_Object = C_sequence_e_ObjectHelper.read(istream);
+ value.e_c_sequence_e_Object(_e_c_sequence_e_Object);
+ break;
+
+ case 17 :
+
+ short[] _e_c_array_e_short = null;
+ _e_c_array_e_short = C_array_e_shortHelper.read(istream);
+ value.e_c_array_e_short(_e_c_array_e_short);
+ break;
+
+ case 18 :
+
+ short[] _e_c_array_e_ushort = null;
+ _e_c_array_e_ushort = C_array_e_ushortHelper.read(istream);
+ value.e_c_array_e_ushort(_e_c_array_e_ushort);
+ break;
+
+ case 19 :
+
+ int[] _e_c_array_e_long = null;
+ _e_c_array_e_long = C_array_e_longHelper.read(istream);
+ value.e_c_array_e_long(_e_c_array_e_long);
+ break;
+
+ case 20 :
+
+ int[] _e_c_array_e_ulong = null;
+ _e_c_array_e_ulong = C_array_e_ulongHelper.read(istream);
+ value.e_c_array_e_ulong(_e_c_array_e_ulong);
+ break;
+
+ case 21 :
+
+ float[] _e_c_array_e_float = null;
+ _e_c_array_e_float = C_array_e_floatHelper.read(istream);
+ value.e_c_array_e_float(_e_c_array_e_float);
+ break;
+
+ case 22 :
+
+ double[] _e_c_array_e_double = null;
+ _e_c_array_e_double = C_array_e_doubleHelper.read(istream);
+ value.e_c_array_e_double(_e_c_array_e_double);
+ break;
+
+ case 23 :
+
+ char[] _e_c_array_e_char = null;
+ _e_c_array_e_char = C_array_e_charHelper.read(istream);
+ value.e_c_array_e_char(_e_c_array_e_char);
+ break;
+
+ case 24 :
+
+ boolean[] _e_c_array_e_boolean = null;
+ _e_c_array_e_boolean = C_array_e_booleanHelper.read(istream);
+ value.e_c_array_e_boolean(_e_c_array_e_boolean);
+ break;
+
+ case 25 :
+
+ byte[] _e_c_array_e_octet = null;
+ _e_c_array_e_octet = C_array_e_octetHelper.read(istream);
+ value.e_c_array_e_octet(_e_c_array_e_octet);
+ break;
+
+ case 26 :
+
+ org.omg.CORBA.Any[] _e_c_array_e_any = null;
+ _e_c_array_e_any = C_array_e_anyHelper.read(istream);
+ value.e_c_array_e_any(_e_c_array_e_any);
+ break;
+
+ case 27 :
+
+ String[] _e_c_array_e_string = null;
+ _e_c_array_e_string = C_array_e_stringHelper.read(istream);
+ value.e_c_array_e_string(_e_c_array_e_string);
+ break;
+
+ case 28 :
+
+ org.omg.CORBA.Object[] _e_c_array_e_Object = null;
+ _e_c_array_e_Object = C_array_e_ObjectHelper.read(istream);
+ value.e_c_array_e_Object(_e_c_array_e_Object);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ F_union value
+ )
+ {
+ ostream.write_long(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ C_structHelper.write(ostream, value.e_c_struct());
+ break;
+
+ case 2 :
+ C_unionHelper.write(ostream, value.e_c_union());
+ break;
+
+ case 3 :
+ C_sequence_e_shortHelper.write(ostream, value.e_c_sequence_e_short());
+ break;
+
+ case 4 :
+ C_sequence_e_ushortHelper.write(ostream, value.e_c_sequence_e_ushort());
+ break;
+
+ case 5 :
+ C_sequence_e_longHelper.write(ostream, value.e_c_sequence_e_long());
+ break;
+
+ case 6 :
+ C_sequence_e_ulongHelper.write(ostream, value.e_c_sequence_e_ulong());
+ break;
+
+ case 7 :
+ C_sequence_e_floatHelper.write(ostream, value.e_c_sequence_e_float());
+ break;
+
+ case 8 :
+ C_sequence_e_doubleHelper.write(ostream, value.e_c_sequence_e_double());
+ break;
+
+ case 9 :
+ C_sequence_e_charHelper.write(ostream, value.e_c_sequence_e_char());
+ break;
+
+ case 10 :
+ C_sequence_e_booleanHelper.write(ostream,
+ value.e_c_sequence_e_boolean()
+ );
+ break;
+
+ case 11 :
+ C_sequence_e_octetHelper.write(ostream, value.e_c_sequence_e_octet());
+ break;
+
+ case 12 :
+ C_sequence_e_anyHelper.write(ostream, value.e_c_sequence_e_any());
+ break;
+
+ case 13 :
+ C_sequence_e_stringHelper.write(ostream, value.e_c_sequence_e_string());
+ break;
+
+ case 14 :
+ C_sequence_e_ObjectHelper.write(ostream, value.e_c_sequence_e_Object());
+ break;
+
+ case 17 :
+ C_array_e_shortHelper.write(ostream, value.e_c_array_e_short());
+ break;
+
+ case 18 :
+ C_array_e_ushortHelper.write(ostream, value.e_c_array_e_ushort());
+ break;
+
+ case 19 :
+ C_array_e_longHelper.write(ostream, value.e_c_array_e_long());
+ break;
+
+ case 20 :
+ C_array_e_ulongHelper.write(ostream, value.e_c_array_e_ulong());
+ break;
+
+ case 21 :
+ C_array_e_floatHelper.write(ostream, value.e_c_array_e_float());
+ break;
+
+ case 22 :
+ C_array_e_doubleHelper.write(ostream, value.e_c_array_e_double());
+ break;
+
+ case 23 :
+ C_array_e_charHelper.write(ostream, value.e_c_array_e_char());
+ break;
+
+ case 24 :
+ C_array_e_booleanHelper.write(ostream, value.e_c_array_e_boolean());
+ break;
+
+ case 25 :
+ C_array_e_octetHelper.write(ostream, value.e_c_array_e_octet());
+ break;
+
+ case 26 :
+ C_array_e_anyHelper.write(ostream, value.e_c_array_e_any());
+ break;
+
+ case 27 :
+ C_array_e_stringHelper.write(ostream, value.e_c_array_e_string());
+ break;
+
+ case 28 :
+ C_array_e_ObjectHelper.write(ostream, value.e_c_array_e_Object());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHolder.java
new file mode 100644
index 00000000..6c70113d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/F_unionHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class F_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public F_union value = null;
+
+ public F_unionHolder()
+ {
+ }
+
+ public F_unionHolder(F_union initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = F_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ F_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return F_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java
new file mode 100644
index 00000000..813c9b2e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHelper.java
@@ -0,0 +1,105 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_array_e_e_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_struct[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_struct[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = E_structHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_array_e_e_structHelper.id(),
+ "G_array_e_e_struct",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_struct[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_struct[] value = null;
+ value = new E_struct[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = E_structHelper.read(istream);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_struct[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ E_structHelper.write(ostream, value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHolder.java
new file mode 100644
index 00000000..644ebd3c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_structHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_array_e_e_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_struct[] value = null;
+
+ public G_array_e_e_structHolder()
+ {
+ }
+
+ public G_array_e_e_structHolder(E_struct[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_array_e_e_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_array_e_e_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_array_e_e_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java
new file mode 100644
index 00000000..7b95250d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_array_e_e_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_union[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_union[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = E_unionHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_array_tc(2, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_array_e_e_unionHelper.id(),
+ "G_array_e_e_union",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_union[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_union[] value = null;
+ value = new E_union[ 2 ];
+ for (int _o0 = 0; _o0 < (2); ++_o0)
+ {
+ value [ _o0 ] = E_unionHelper.read(istream);
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_union[] value
+ )
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ for (int _i0 = 0; _i0 < (2); ++_i0)
+ {
+ E_unionHelper.write(ostream, value [ _i0 ]);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHolder.java
new file mode 100644
index 00000000..983590e2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_array_e_e_unionHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_array_e_e_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_union[] value = null;
+
+ public G_array_e_e_unionHolder()
+ {
+ }
+
+ public G_array_e_e_unionHolder(E_union[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_array_e_e_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_array_e_e_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_array_e_e_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_except.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_except.java
new file mode 100644
index 00000000..c19b6d9d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_except.java
@@ -0,0 +1,81 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_except
+ extends org.omg.CORBA.UserException
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public G_struct v1 = null;
+ public G_union v2 = null;
+
+ // E_struct
+ public G_union v3 = null;
+
+ // E_union
+ public G_union v4 = null;
+
+ // E_sequence
+ public G_union v5 = null;
+
+ // E_array
+ public E_struct[] v6 = null;
+ public E_union[] v7 = null;
+ public E_struct[] v10 = null;
+ public E_union[] v11 = null;
+
+ public G_except()
+ {
+ } // ctor
+
+ public G_except(G_struct _v1, G_union _v2, G_union _v3, G_union _v4,
+ G_union _v5, E_struct[] _v6, E_union[] _v7, E_struct[] _v10,
+ E_union[] _v11
+ )
+ {
+ v1 = _v1;
+ v2 = _v2;
+ v3 = _v3;
+ v4 = _v4;
+ v5 = _v5;
+ v6 = _v6;
+ v7 = _v7;
+ v10 = _v10;
+ v11 = _v11;
+ } // ctor
+} // class G_except
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java
new file mode 100644
index 00000000..bb453daa
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHelper.java
@@ -0,0 +1,184 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_exceptHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_except:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, G_except that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static G_except extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 9 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = G_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("v1", _tcOf_members0, null);
+ _tcOf_members0 = G_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("v2", _tcOf_members0, null);
+ _tcOf_members0 = G_unionHelper.type();
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("v3", _tcOf_members0, null);
+ _tcOf_members0 = G_unionHelper.type();
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("v4", _tcOf_members0, null);
+ _tcOf_members0 = G_unionHelper.type();
+ _members0 [ 4 ] =
+ new org.omg.CORBA.StructMember("v5", _tcOf_members0, null);
+ _tcOf_members0 = E_structHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_sequence_e_e_structHelper.id(),
+ "G_sequence_e_e_struct",
+ _tcOf_members0
+ );
+ _members0 [ 5 ] =
+ new org.omg.CORBA.StructMember("v6", _tcOf_members0, null);
+ _tcOf_members0 = E_unionHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_sequence_e_e_unionHelper.id(),
+ "G_sequence_e_e_union",
+ _tcOf_members0
+ );
+ _members0 [ 6 ] =
+ new org.omg.CORBA.StructMember("v7", _tcOf_members0, null);
+ _tcOf_members0 = E_structHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_array_e_e_structHelper.id(),
+ "G_array_e_e_struct",
+ _tcOf_members0
+ );
+ _members0 [ 7 ] =
+ new org.omg.CORBA.StructMember("v10", _tcOf_members0, null);
+ _tcOf_members0 = E_unionHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_array_e_e_unionHelper.id(),
+ "G_array_e_e_union",
+ _tcOf_members0
+ );
+ _members0 [ 8 ] =
+ new org.omg.CORBA.StructMember("v11", _tcOf_members0, null);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(G_exceptHelper.id(),
+ "G_except",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static G_except read(org.omg.CORBA.portable.InputStream istream)
+ {
+ G_except value = new G_except();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.v1 = G_structHelper.read(istream);
+ value.v2 = G_unionHelper.read(istream);
+ value.v3 = G_unionHelper.read(istream);
+ value.v4 = G_unionHelper.read(istream);
+ value.v5 = G_unionHelper.read(istream);
+ value.v6 = G_sequence_e_e_structHelper.read(istream);
+ value.v7 = G_sequence_e_e_unionHelper.read(istream);
+ value.v10 = G_array_e_e_structHelper.read(istream);
+ value.v11 = G_array_e_e_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ G_except value
+ )
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ G_structHelper.write(ostream, value.v1);
+ G_unionHelper.write(ostream, value.v2);
+ G_unionHelper.write(ostream, value.v3);
+ G_unionHelper.write(ostream, value.v4);
+ G_unionHelper.write(ostream, value.v5);
+ G_sequence_e_e_structHelper.write(ostream, value.v6);
+ G_sequence_e_e_unionHelper.write(ostream, value.v7);
+ G_array_e_e_structHelper.write(ostream, value.v10);
+ G_array_e_e_unionHelper.write(ostream, value.v11);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHolder.java
new file mode 100644
index 00000000..9239e247
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_exceptHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_exceptHolder implements org.omg.CORBA.portable.Streamable
+{
+ public G_except value = null;
+
+ public G_exceptHolder ()
+ {
+ }
+
+ public G_exceptHolder (G_except initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_exceptHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ G_exceptHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return G_exceptHelper.type ();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java
new file mode 100644
index 00000000..44a6025c
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_sequence_e_e_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_struct[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_struct[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = E_structHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_sequence_e_e_structHelper.id(),
+ "G_sequence_e_e_struct",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_struct[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_struct[] value = null;
+ int _len0 = istream.read_long();
+ value = new E_struct[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = E_structHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_struct[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ E_structHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHolder.java
new file mode 100644
index 00000000..f5bd0ae9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_structHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_sequence_e_e_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_struct[] value = null;
+
+ public G_sequence_e_e_structHolder()
+ {
+ }
+
+ public G_sequence_e_e_structHolder(E_struct[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_sequence_e_e_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_sequence_e_e_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_sequence_e_e_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java
new file mode 100644
index 00000000..ec254d4a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHelper.java
@@ -0,0 +1,98 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_sequence_e_e_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, E_union[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static E_union[] extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = E_unionHelper.type();
+ __typeCode = org.omg.CORBA.ORB.init().create_sequence_tc(0, __typeCode);
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_alias_tc(G_sequence_e_e_unionHelper.id(),
+ "G_sequence_e_e_union",
+ __typeCode
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static E_union[] read(org.omg.CORBA.portable.InputStream istream)
+ {
+ E_union[] value = null;
+ int _len0 = istream.read_long();
+ value = new E_union[ _len0 ];
+ for (int _o1 = 0; _o1 < value.length; ++_o1)
+ value [ _o1 ] = E_unionHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ E_union[] value
+ )
+ {
+ ostream.write_long(value.length);
+ for (int _i0 = 0; _i0 < value.length; ++_i0)
+ E_unionHelper.write(ostream, value [ _i0 ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHolder.java
new file mode 100644
index 00000000..711b4624
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_sequence_e_e_unionHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_sequence_e_e_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public E_union[] value = null;
+
+ public G_sequence_e_e_unionHolder()
+ {
+ }
+
+ public G_sequence_e_e_unionHolder(E_union[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_sequence_e_e_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_sequence_e_e_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_sequence_e_e_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct.java
new file mode 100644
index 00000000..5e57bc52
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct.java
@@ -0,0 +1,62 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// G
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_struct
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public E_struct e_e_struct = null;
+ public E_union e_e_union = null;
+ public B[] e_e_sequence = null;
+ public B[] e_e_array = null;
+
+ public G_struct()
+ {
+ } // ctor
+
+ public G_struct(E_struct _e_e_struct, E_union _e_e_union, B[] _e_e_sequence,
+ B[] _e_e_array
+ )
+ {
+ e_e_struct = _e_e_struct;
+ e_e_union = _e_e_union;
+ e_e_sequence = _e_e_sequence;
+ e_e_array = _e_e_array;
+ } // ctor
+} // class G_struct
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java
new file mode 100644
index 00000000..e610ac34
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHelper.java
@@ -0,0 +1,149 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// G
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_structHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_struct:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, G_struct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static G_struct extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc(_id);
+ }
+ __active = true;
+
+ org.omg.CORBA.StructMember[] _members0 =
+ new org.omg.CORBA.StructMember[ 4 ];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = E_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.StructMember("e_e_struct", _tcOf_members0,
+ null
+ );
+ _tcOf_members0 = E_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.StructMember("e_e_union", _tcOf_members0,
+ null
+ );
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_sequenceHelper.id(),
+ "E_sequence",
+ _tcOf_members0
+ );
+ _members0 [ 2 ] =
+ new org.omg.CORBA.StructMember("e_e_sequence",
+ _tcOf_members0, null
+ );
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_arrayHelper.id(),
+ "E_array",
+ _tcOf_members0
+ );
+ _members0 [ 3 ] =
+ new org.omg.CORBA.StructMember("e_e_array", _tcOf_members0,
+ null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_struct_tc(G_structHelper.id(),
+ "G_struct",
+ _members0
+ );
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static G_struct read(org.omg.CORBA.portable.InputStream istream)
+ {
+ G_struct value = new G_struct();
+ value.e_e_struct = E_structHelper.read(istream);
+ value.e_e_union = E_unionHelper.read(istream);
+ value.e_e_sequence = E_sequenceHelper.read(istream);
+ value.e_e_array = E_arrayHelper.read(istream);
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ G_struct value
+ )
+ {
+ E_structHelper.write(ostream, value.e_e_struct);
+ E_unionHelper.write(ostream, value.e_e_union);
+ E_sequenceHelper.write(ostream, value.e_e_sequence);
+ E_arrayHelper.write(ostream, value.e_e_array);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHolder.java
new file mode 100644
index 00000000..75f15994
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_structHolder.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// G
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_structHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public G_struct value = null;
+
+ public G_structHolder()
+ {
+ }
+
+ public G_structHolder(G_struct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_structHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_structHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_structHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_union.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_union.java
new file mode 100644
index 00000000..e3adb26a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_union.java
@@ -0,0 +1,150 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_union
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ private E_struct ___e_e_struct;
+ private E_union ___e_e_union;
+ private B[] ___e_e_sequence;
+ private B[] ___e_e_array;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public G_union()
+ {
+ }
+
+ public int discriminator()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ return __discriminator;
+ }
+
+ public E_struct e_e_struct()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_e_struct(__discriminator);
+ return ___e_e_struct;
+ }
+
+ public void e_e_struct(E_struct value)
+ {
+ __discriminator = 1;
+ ___e_e_struct = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_e_struct(int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public E_union e_e_union()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_e_union(__discriminator);
+ return ___e_e_union;
+ }
+
+ public void e_e_union(E_union value)
+ {
+ __discriminator = 2;
+ ___e_e_union = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_e_union(int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public B[] e_e_sequence()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_e_sequence(__discriminator);
+ return ___e_e_sequence;
+ }
+
+ public void e_e_sequence(B[] value)
+ {
+ __discriminator = 3;
+ ___e_e_sequence = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_e_sequence(int discriminator)
+ {
+ if (discriminator != 3)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public B[] e_e_array()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ verifye_e_array(__discriminator);
+ return ___e_e_array;
+ }
+
+ public void e_e_array(B[] value)
+ {
+ __discriminator = 4;
+ ___e_e_array = value;
+ __uninitialized = false;
+ }
+
+ private void verifye_e_array(int discriminator)
+ {
+ if (discriminator != 4)
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+
+ public void _default()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+} // class G_union
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java
new file mode 100644
index 00000000..5bb8a51d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHelper.java
@@ -0,0 +1,202 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class G_unionHelper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_union:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, G_union that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static G_union extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 =
+ org.omg.CORBA.ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.tk_long);
+
+ org.omg.CORBA.UnionMember[] _members0 =
+ new org.omg.CORBA.UnionMember[ 4 ];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for e_e_struct
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 1);
+ _tcOf_members0 = E_structHelper.type();
+ _members0 [ 0 ] =
+ new org.omg.CORBA.UnionMember("e_e_struct", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_e_union
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 2);
+ _tcOf_members0 = E_unionHelper.type();
+ _members0 [ 1 ] =
+ new org.omg.CORBA.UnionMember("e_e_union", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_e_sequence
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 3);
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_sequence_tc(0, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_sequenceHelper.id(),
+ "E_sequence", _tcOf_members0
+ );
+ _members0 [ 2 ] =
+ new org.omg.CORBA.UnionMember("e_e_sequence", _anyOf_members0,
+ _tcOf_members0, null
+ );
+
+ // Branch for e_e_array
+ _anyOf_members0 = org.omg.CORBA.ORB.init().create_any();
+ _anyOf_members0.insert_long((int) 4);
+ _tcOf_members0 = BHelper.type();
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_array_tc(2, _tcOf_members0);
+ _tcOf_members0 =
+ org.omg.CORBA.ORB.init().create_alias_tc(E_arrayHelper.id(),
+ "E_array", _tcOf_members0
+ );
+ _members0 [ 3 ] =
+ new org.omg.CORBA.UnionMember("e_e_array", _anyOf_members0,
+ _tcOf_members0, null
+ );
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_union_tc(G_unionHelper.id(),
+ "G_union", _disTypeCode0,
+ _members0
+ );
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static G_union read(org.omg.CORBA.portable.InputStream istream)
+ {
+ G_union value = new G_union();
+ int _dis0 = (int) 0;
+ _dis0 = istream.read_long();
+ switch (_dis0)
+ {
+ case 1 :
+
+ E_struct _e_e_struct = null;
+ _e_e_struct = E_structHelper.read(istream);
+ value.e_e_struct(_e_e_struct);
+ break;
+
+ case 2 :
+
+ E_union _e_e_union = null;
+ _e_e_union = E_unionHelper.read(istream);
+ value.e_e_union(_e_e_union);
+ break;
+
+ case 3 :
+
+ B[] _e_e_sequence = null;
+ _e_e_sequence = E_sequenceHelper.read(istream);
+ value.e_e_sequence(_e_e_sequence);
+ break;
+
+ case 4 :
+
+ B[] _e_e_array = null;
+ _e_e_array = E_arrayHelper.read(istream);
+ value.e_e_array(_e_e_array);
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ return value;
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ G_union value
+ )
+ {
+ ostream.write_long(value.discriminator());
+ switch (value.discriminator())
+ {
+ case 1 :
+ E_structHelper.write(ostream, value.e_e_struct());
+ break;
+
+ case 2 :
+ E_unionHelper.write(ostream, value.e_e_union());
+ break;
+
+ case 3 :
+ E_sequenceHelper.write(ostream, value.e_e_sequence());
+ break;
+
+ case 4 :
+ E_arrayHelper.write(ostream, value.e_e_array());
+ break;
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHolder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHolder.java
new file mode 100644
index 00000000..5bfcca10
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/G_unionHolder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class G_unionHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public G_union value = null;
+
+ public G_unionHolder()
+ {
+ }
+
+ public G_unionHolder(G_union initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = G_unionHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ G_unionHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return G_unionHelper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java
new file mode 100644
index 00000000..70f40c9f
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/NEC_RF11.java
@@ -0,0 +1,45 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+
+public interface NEC_RF11 extends rf11Operations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
+{
+} // interface rf11
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java
new file mode 100644
index 00000000..52fe8b87
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11ImplBase.java
@@ -0,0 +1,1382 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class _rf11ImplBase
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements NEC_RF11, org.omg.CORBA.portable.InvokeHandler
+{
+ // Constructors
+ public _rf11ImplBase()
+ {
+ }
+
+ private static java.util.Hashtable _methods = new java.util.Hashtable();
+
+ static
+ {
+ _methods.put("op1", new java.lang.Integer(0));
+ _methods.put("op2", new java.lang.Integer(1));
+ _methods.put("op3", new java.lang.Integer(2));
+ _methods.put("op4", new java.lang.Integer(3));
+ _methods.put("op5", new java.lang.Integer(4));
+ _methods.put("op6", new java.lang.Integer(5));
+ _methods.put("op7", new java.lang.Integer(6));
+ _methods.put("op8", new java.lang.Integer(7));
+ _methods.put("op9", new java.lang.Integer(8));
+ _methods.put("op10", new java.lang.Integer(9));
+ _methods.put("op11", new java.lang.Integer(10));
+ _methods.put("op12", new java.lang.Integer(11));
+ _methods.put("op15", new java.lang.Integer(12));
+ _methods.put("op16", new java.lang.Integer(13));
+ _methods.put("op17", new java.lang.Integer(14));
+ _methods.put("op18", new java.lang.Integer(15));
+ _methods.put("op19", new java.lang.Integer(16));
+ _methods.put("op20", new java.lang.Integer(17));
+ _methods.put("op21", new java.lang.Integer(18));
+ _methods.put("op22", new java.lang.Integer(19));
+ _methods.put("op23", new java.lang.Integer(20));
+ _methods.put("op24", new java.lang.Integer(21));
+ _methods.put("op25", new java.lang.Integer(22));
+ _methods.put("op26", new java.lang.Integer(23));
+ _methods.put("op27", new java.lang.Integer(24));
+ _methods.put("op28", new java.lang.Integer(25));
+ _methods.put("op29", new java.lang.Integer(26));
+ _methods.put("op32", new java.lang.Integer(27));
+ _methods.put("op33", new java.lang.Integer(28));
+ _methods.put("op34", new java.lang.Integer(29));
+ _methods.put("op35", new java.lang.Integer(30));
+ _methods.put("op36", new java.lang.Integer(31));
+ _methods.put("op37", new java.lang.Integer(32));
+ _methods.put("op38", new java.lang.Integer(33));
+ _methods.put("op39", new java.lang.Integer(34));
+ _methods.put("op40", new java.lang.Integer(35));
+ _methods.put("op41", new java.lang.Integer(36));
+ _methods.put("op42", new java.lang.Integer(37));
+ _methods.put("op43", new java.lang.Integer(38));
+ _methods.put("op46", new java.lang.Integer(39));
+ _methods.put("op47", new java.lang.Integer(40));
+ _methods.put("op48", new java.lang.Integer(41));
+ _methods.put("op49", new java.lang.Integer(42));
+ _methods.put("op50", new java.lang.Integer(43));
+ _methods.put("op51", new java.lang.Integer(44));
+ _methods.put("op52", new java.lang.Integer(45));
+ _methods.put("op53", new java.lang.Integer(46));
+ _methods.put("op54", new java.lang.Integer(47));
+ _methods.put("op55", new java.lang.Integer(48));
+ _methods.put("op56", new java.lang.Integer(49));
+ _methods.put("op57", new java.lang.Integer(50));
+ _methods.put("op58", new java.lang.Integer(51));
+ _methods.put("op59", new java.lang.Integer(52));
+ _methods.put("op60", new java.lang.Integer(53));
+ _methods.put("op89", new java.lang.Integer(54));
+ _methods.put("op90", new java.lang.Integer(55));
+ _methods.put("op119", new java.lang.Integer(56));
+ _methods.put("op120", new java.lang.Integer(57));
+ _methods.put("op121", new java.lang.Integer(58));
+ _methods.put("op122", new java.lang.Integer(59));
+ _methods.put("op125", new java.lang.Integer(60));
+ _methods.put("op126", new java.lang.Integer(61));
+ _methods.put("op129", new java.lang.Integer(62));
+ _methods.put("op130", new java.lang.Integer(63));
+ _methods.put("op131", new java.lang.Integer(64));
+ _methods.put("excop1", new java.lang.Integer(65));
+ _methods.put("excop2", new java.lang.Integer(66));
+ _methods.put("excop3", new java.lang.Integer(67));
+ _methods.put("excop4", new java.lang.Integer(68));
+ _methods.put("excop5", new java.lang.Integer(69));
+ _methods.put("excop6", new java.lang.Integer(70));
+ _methods.put("excop7", new java.lang.Integer(71));
+ _methods.put("excop8", new java.lang.Integer(72));
+ _methods.put("excop9", new java.lang.Integer(73));
+ _methods.put("excop10", new java.lang.Integer(74));
+ }
+
+ public org.omg.CORBA.portable.OutputStream _invoke(String method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler rh
+ )
+ {
+ org.omg.CORBA.portable.OutputStream out = null;
+ java.lang.Integer __method = (java.lang.Integer) _methods.get(method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+
+ switch (__method.intValue())
+ {
+ // A
+ case 0 : // rf11/op1
+ {
+ short argin = in.read_short();
+ org.omg.CORBA.ShortHolder argout = new org.omg.CORBA.ShortHolder();
+ org.omg.CORBA.ShortHolder arginout = new org.omg.CORBA.ShortHolder();
+ arginout.value = in.read_short();
+
+ short __result = (short) 0;
+ __result = this.op1(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_short(__result);
+ out.write_short(argout.value);
+ out.write_short(arginout.value);
+ break;
+ }
+
+ case 1 : // rf11/op2
+ {
+ short argin = in.read_ushort();
+ org.omg.CORBA.ShortHolder argout = new org.omg.CORBA.ShortHolder();
+ org.omg.CORBA.ShortHolder arginout = new org.omg.CORBA.ShortHolder();
+ arginout.value = in.read_ushort();
+
+ short __result = (short) 0;
+ __result = this.op2(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_ushort(__result);
+ out.write_ushort(argout.value);
+ out.write_ushort(arginout.value);
+ break;
+ }
+
+ case 2 : // rf11/op3
+ {
+ int argin = in.read_long();
+ org.omg.CORBA.IntHolder argout = new org.omg.CORBA.IntHolder();
+ org.omg.CORBA.IntHolder arginout = new org.omg.CORBA.IntHolder();
+ arginout.value = in.read_long();
+
+ int __result = (int) 0;
+ __result = this.op3(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_long(__result);
+ out.write_long(argout.value);
+ out.write_long(arginout.value);
+ break;
+ }
+
+ case 3 : // rf11/op4
+ {
+ int argin = in.read_ulong();
+ org.omg.CORBA.IntHolder argout = new org.omg.CORBA.IntHolder();
+ org.omg.CORBA.IntHolder arginout = new org.omg.CORBA.IntHolder();
+ arginout.value = in.read_ulong();
+
+ int __result = (int) 0;
+ __result = this.op4(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_ulong(__result);
+ out.write_ulong(argout.value);
+ out.write_ulong(arginout.value);
+ break;
+ }
+
+ case 4 : // rf11/op5
+ {
+ float argin = in.read_float();
+ org.omg.CORBA.FloatHolder argout = new org.omg.CORBA.FloatHolder();
+ org.omg.CORBA.FloatHolder arginout = new org.omg.CORBA.FloatHolder();
+ arginout.value = in.read_float();
+
+ float __result = (float) 0;
+ __result = this.op5(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_float(__result);
+ out.write_float(argout.value);
+ out.write_float(arginout.value);
+ break;
+ }
+
+ case 5 : // rf11/op6
+ {
+ double argin = in.read_double();
+ org.omg.CORBA.DoubleHolder argout = new org.omg.CORBA.DoubleHolder();
+ org.omg.CORBA.DoubleHolder arginout =
+ new org.omg.CORBA.DoubleHolder();
+ arginout.value = in.read_double();
+
+ double __result = (double) 0;
+ __result = this.op6(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_double(__result);
+ out.write_double(argout.value);
+ out.write_double(arginout.value);
+ break;
+ }
+
+ case 6 : // rf11/op7
+ {
+ char argin = in.read_char();
+ org.omg.CORBA.CharHolder argout = new org.omg.CORBA.CharHolder();
+ org.omg.CORBA.CharHolder arginout = new org.omg.CORBA.CharHolder();
+ arginout.value = in.read_char();
+
+ char __result = (char) 0;
+ __result = this.op7(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_char(__result);
+ out.write_char(argout.value);
+ out.write_char(arginout.value);
+ break;
+ }
+
+ case 7 : // rf11/op8
+ {
+ boolean argin = in.read_boolean();
+ org.omg.CORBA.BooleanHolder argout =
+ new org.omg.CORBA.BooleanHolder();
+ org.omg.CORBA.BooleanHolder arginout =
+ new org.omg.CORBA.BooleanHolder();
+ arginout.value = in.read_boolean();
+
+ boolean __result = false;
+ __result = this.op8(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_boolean(__result);
+ out.write_boolean(argout.value);
+ out.write_boolean(arginout.value);
+ break;
+ }
+
+ case 8 : // rf11/op9
+ {
+ byte argin = in.read_octet();
+ org.omg.CORBA.ByteHolder argout = new org.omg.CORBA.ByteHolder();
+ org.omg.CORBA.ByteHolder arginout = new org.omg.CORBA.ByteHolder();
+ arginout.value = in.read_octet();
+
+ byte __result = (byte) 0;
+ __result = this.op9(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_octet(__result);
+ out.write_octet(argout.value);
+ out.write_octet(arginout.value);
+ break;
+ }
+
+ case 9 : // rf11/op10
+ {
+ org.omg.CORBA.Any argin = in.read_any();
+ org.omg.CORBA.AnyHolder argout = new org.omg.CORBA.AnyHolder();
+ org.omg.CORBA.AnyHolder arginout = new org.omg.CORBA.AnyHolder();
+ arginout.value = in.read_any();
+
+ org.omg.CORBA.Any __result = null;
+ __result = this.op10(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_any(__result);
+ out.write_any(argout.value);
+ out.write_any(arginout.value);
+ break;
+ }
+
+ case 10 : // rf11/op11
+ {
+ String argin = in.read_string();
+ org.omg.CORBA.StringHolder argout = new org.omg.CORBA.StringHolder();
+ org.omg.CORBA.StringHolder arginout =
+ new org.omg.CORBA.StringHolder();
+ arginout.value = in.read_string();
+
+ String __result = null;
+ __result = this.op11(argin, argout, arginout);
+ out = rh.createReply();
+ out.write_string(__result);
+ out.write_string(argout.value);
+ out.write_string(arginout.value);
+ break;
+ }
+
+ case 11 : // rf11/op12
+ {
+ org.omg.CORBA.Object argin = org.omg.CORBA.ObjectHelper.read(in);
+ org.omg.CORBA.ObjectHolder argout = new org.omg.CORBA.ObjectHolder();
+ org.omg.CORBA.ObjectHolder arginout =
+ new org.omg.CORBA.ObjectHolder();
+ arginout.value = org.omg.CORBA.ObjectHelper.read(in);
+
+ org.omg.CORBA.Object __result = null;
+ __result = this.op12(argin, argout, arginout);
+ out = rh.createReply();
+ org.omg.CORBA.ObjectHelper.write(out, __result);
+ org.omg.CORBA.ObjectHelper.write(out, argout.value);
+ org.omg.CORBA.ObjectHelper.write(out, arginout.value);
+ break;
+ }
+
+ // B
+ case 12 : // rf11/op15
+ {
+ B argin = BHelper.read(in);
+ BHolder argout = new BHolder();
+ BHolder arginout = new BHolder();
+ arginout.value = BHelper.read(in);
+
+ B __result = null;
+ __result = this.op15(argin, argout, arginout);
+ out = rh.createReply();
+ BHelper.write(out, __result);
+ BHelper.write(out, argout.value);
+ BHelper.write(out, arginout.value);
+ break;
+ }
+
+ // C
+ case 13 : // rf11/op16
+ {
+ C_struct argin = C_structHelper.read(in);
+ C_structHolder argout = new C_structHolder();
+ C_structHolder arginout = new C_structHolder();
+ arginout.value = C_structHelper.read(in);
+
+ C_struct __result = null;
+ __result = this.op16(argin, argout, arginout);
+ out = rh.createReply();
+ C_structHelper.write(out, __result);
+ C_structHelper.write(out, argout.value);
+ C_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 14 : // rf11/op17
+ {
+ C_union argin = C_unionHelper.read(in);
+ C_unionHolder argout = new C_unionHolder();
+ C_unionHolder arginout = new C_unionHolder();
+ arginout.value = C_unionHelper.read(in);
+
+ C_union __result = null;
+ __result = this.op17(argin, argout, arginout);
+ out = rh.createReply();
+ C_unionHelper.write(out, __result);
+ C_unionHelper.write(out, argout.value);
+ C_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 15 : // rf11/op18
+ {
+ short[] argin = C_sequence_e_shortHelper.read(in);
+ C_sequence_e_shortHolder argout = new C_sequence_e_shortHolder();
+ C_sequence_e_shortHolder arginout = new C_sequence_e_shortHolder();
+ arginout.value = C_sequence_e_shortHelper.read(in);
+
+ short[] __result = null;
+ __result = this.op18(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_shortHelper.write(out, __result);
+ C_sequence_e_shortHelper.write(out, argout.value);
+ C_sequence_e_shortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 16 : // rf11/op19
+ {
+ short[] argin = C_sequence_e_ushortHelper.read(in);
+ C_sequence_e_ushortHolder argout = new C_sequence_e_ushortHolder();
+ C_sequence_e_ushortHolder arginout = new C_sequence_e_ushortHolder();
+ arginout.value = C_sequence_e_ushortHelper.read(in);
+
+ short[] __result = null;
+ __result = this.op19(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_ushortHelper.write(out, __result);
+ C_sequence_e_ushortHelper.write(out, argout.value);
+ C_sequence_e_ushortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 17 : // rf11/op20
+ {
+ int[] argin = C_sequence_e_longHelper.read(in);
+ C_sequence_e_longHolder argout = new C_sequence_e_longHolder();
+ C_sequence_e_longHolder arginout = new C_sequence_e_longHolder();
+ arginout.value = C_sequence_e_longHelper.read(in);
+
+ int[] __result = null;
+ __result = this.op20(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_longHelper.write(out, __result);
+ C_sequence_e_longHelper.write(out, argout.value);
+ C_sequence_e_longHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 18 : // rf11/op21
+ {
+ int[] argin = C_sequence_e_ulongHelper.read(in);
+ C_sequence_e_ulongHolder argout = new C_sequence_e_ulongHolder();
+ C_sequence_e_ulongHolder arginout = new C_sequence_e_ulongHolder();
+ arginout.value = C_sequence_e_ulongHelper.read(in);
+
+ int[] __result = null;
+ __result = this.op21(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_ulongHelper.write(out, __result);
+ C_sequence_e_ulongHelper.write(out, argout.value);
+ C_sequence_e_ulongHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 19 : // rf11/op22
+ {
+ float[] argin = C_sequence_e_floatHelper.read(in);
+ C_sequence_e_floatHolder argout = new C_sequence_e_floatHolder();
+ C_sequence_e_floatHolder arginout = new C_sequence_e_floatHolder();
+ arginout.value = C_sequence_e_floatHelper.read(in);
+
+ float[] __result = null;
+ __result = this.op22(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_floatHelper.write(out, __result);
+ C_sequence_e_floatHelper.write(out, argout.value);
+ C_sequence_e_floatHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 20 : // rf11/op23
+ {
+ double[] argin = C_sequence_e_doubleHelper.read(in);
+ C_sequence_e_doubleHolder argout = new C_sequence_e_doubleHolder();
+ C_sequence_e_doubleHolder arginout = new C_sequence_e_doubleHolder();
+ arginout.value = C_sequence_e_doubleHelper.read(in);
+
+ double[] __result = null;
+ __result = this.op23(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_doubleHelper.write(out, __result);
+ C_sequence_e_doubleHelper.write(out, argout.value);
+ C_sequence_e_doubleHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 21 : // rf11/op24
+ {
+ char[] argin = C_sequence_e_charHelper.read(in);
+ C_sequence_e_charHolder argout = new C_sequence_e_charHolder();
+ C_sequence_e_charHolder arginout = new C_sequence_e_charHolder();
+ arginout.value = C_sequence_e_charHelper.read(in);
+
+ char[] __result = null;
+ __result = this.op24(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_charHelper.write(out, __result);
+ C_sequence_e_charHelper.write(out, argout.value);
+ C_sequence_e_charHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 22 : // rf11/op25
+ {
+ boolean[] argin = C_sequence_e_booleanHelper.read(in);
+ C_sequence_e_booleanHolder argout = new C_sequence_e_booleanHolder();
+ C_sequence_e_booleanHolder arginout =
+ new C_sequence_e_booleanHolder();
+ arginout.value = C_sequence_e_booleanHelper.read(in);
+
+ boolean[] __result = null;
+ __result = this.op25(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_booleanHelper.write(out, __result);
+ C_sequence_e_booleanHelper.write(out, argout.value);
+ C_sequence_e_booleanHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 23 : // rf11/op26
+ {
+ byte[] argin = C_sequence_e_octetHelper.read(in);
+ C_sequence_e_octetHolder argout = new C_sequence_e_octetHolder();
+ C_sequence_e_octetHolder arginout = new C_sequence_e_octetHolder();
+ arginout.value = C_sequence_e_octetHelper.read(in);
+
+ byte[] __result = null;
+ __result = this.op26(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_octetHelper.write(out, __result);
+ C_sequence_e_octetHelper.write(out, argout.value);
+ C_sequence_e_octetHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 24 : // rf11/op27
+ {
+ org.omg.CORBA.Any[] argin = C_sequence_e_anyHelper.read(in);
+ C_sequence_e_anyHolder argout = new C_sequence_e_anyHolder();
+ C_sequence_e_anyHolder arginout = new C_sequence_e_anyHolder();
+ arginout.value = C_sequence_e_anyHelper.read(in);
+
+ org.omg.CORBA.Any[] __result = null;
+ __result = this.op27(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_anyHelper.write(out, __result);
+ C_sequence_e_anyHelper.write(out, argout.value);
+ C_sequence_e_anyHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 25 : // rf11/op28
+ {
+ String[] argin = C_sequence_e_stringHelper.read(in);
+ C_sequence_e_stringHolder argout = new C_sequence_e_stringHolder();
+ C_sequence_e_stringHolder arginout = new C_sequence_e_stringHolder();
+ arginout.value = C_sequence_e_stringHelper.read(in);
+
+ String[] __result = null;
+ __result = this.op28(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_stringHelper.write(out, __result);
+ C_sequence_e_stringHelper.write(out, argout.value);
+ C_sequence_e_stringHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 26 : // rf11/op29
+ {
+ org.omg.CORBA.Object[] argin = C_sequence_e_ObjectHelper.read(in);
+ C_sequence_e_ObjectHolder argout = new C_sequence_e_ObjectHolder();
+ C_sequence_e_ObjectHolder arginout = new C_sequence_e_ObjectHolder();
+ arginout.value = C_sequence_e_ObjectHelper.read(in);
+
+ org.omg.CORBA.Object[] __result = null;
+ __result = this.op29(argin, argout, arginout);
+ out = rh.createReply();
+ C_sequence_e_ObjectHelper.write(out, __result);
+ C_sequence_e_ObjectHelper.write(out, argout.value);
+ C_sequence_e_ObjectHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 27 : // rf11/op32
+ {
+ short[] argin = C_array_e_shortHelper.read(in);
+ C_array_e_shortHolder argout = new C_array_e_shortHolder();
+ C_array_e_shortHolder arginout = new C_array_e_shortHolder();
+ arginout.value = C_array_e_shortHelper.read(in);
+
+ short[] __result = null;
+ __result = this.op32(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_shortHelper.write(out, __result);
+ C_array_e_shortHelper.write(out, argout.value);
+ C_array_e_shortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 28 : // rf11/op33
+ {
+ short[] argin = C_array_e_ushortHelper.read(in);
+ C_array_e_ushortHolder argout = new C_array_e_ushortHolder();
+ C_array_e_ushortHolder arginout = new C_array_e_ushortHolder();
+ arginout.value = C_array_e_ushortHelper.read(in);
+
+ short[] __result = null;
+ __result = this.op33(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_ushortHelper.write(out, __result);
+ C_array_e_ushortHelper.write(out, argout.value);
+ C_array_e_ushortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 29 : // rf11/op34
+ {
+ int[] argin = C_array_e_longHelper.read(in);
+ C_array_e_longHolder argout = new C_array_e_longHolder();
+ C_array_e_longHolder arginout = new C_array_e_longHolder();
+ arginout.value = C_array_e_longHelper.read(in);
+
+ int[] __result = null;
+ __result = this.op34(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_longHelper.write(out, __result);
+ C_array_e_longHelper.write(out, argout.value);
+ C_array_e_longHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 30 : // rf11/op35
+ {
+ int[] argin = C_array_e_ulongHelper.read(in);
+ C_array_e_ulongHolder argout = new C_array_e_ulongHolder();
+ C_array_e_ulongHolder arginout = new C_array_e_ulongHolder();
+ arginout.value = C_array_e_ulongHelper.read(in);
+
+ int[] __result = null;
+ __result = this.op35(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_ulongHelper.write(out, __result);
+ C_array_e_ulongHelper.write(out, argout.value);
+ C_array_e_ulongHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 31 : // rf11/op36
+ {
+ float[] argin = C_array_e_floatHelper.read(in);
+ C_array_e_floatHolder argout = new C_array_e_floatHolder();
+ C_array_e_floatHolder arginout = new C_array_e_floatHolder();
+ arginout.value = C_array_e_floatHelper.read(in);
+
+ float[] __result = null;
+ __result = this.op36(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_floatHelper.write(out, __result);
+ C_array_e_floatHelper.write(out, argout.value);
+ C_array_e_floatHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 32 : // rf11/op37
+ {
+ double[] argin = C_array_e_doubleHelper.read(in);
+ C_array_e_doubleHolder argout = new C_array_e_doubleHolder();
+ C_array_e_doubleHolder arginout = new C_array_e_doubleHolder();
+ arginout.value = C_array_e_doubleHelper.read(in);
+
+ double[] __result = null;
+ __result = this.op37(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_doubleHelper.write(out, __result);
+ C_array_e_doubleHelper.write(out, argout.value);
+ C_array_e_doubleHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 33 : // rf11/op38
+ {
+ char[] argin = C_array_e_charHelper.read(in);
+ C_array_e_charHolder argout = new C_array_e_charHolder();
+ C_array_e_charHolder arginout = new C_array_e_charHolder();
+ arginout.value = C_array_e_charHelper.read(in);
+
+ char[] __result = null;
+ __result = this.op38(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_charHelper.write(out, __result);
+ C_array_e_charHelper.write(out, argout.value);
+ C_array_e_charHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 34 : // rf11/op39
+ {
+ boolean[] argin = C_array_e_booleanHelper.read(in);
+ C_array_e_booleanHolder argout = new C_array_e_booleanHolder();
+ C_array_e_booleanHolder arginout = new C_array_e_booleanHolder();
+ arginout.value = C_array_e_booleanHelper.read(in);
+
+ boolean[] __result = null;
+ __result = this.op39(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_booleanHelper.write(out, __result);
+ C_array_e_booleanHelper.write(out, argout.value);
+ C_array_e_booleanHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 35 : // rf11/op40
+ {
+ byte[] argin = C_array_e_octetHelper.read(in);
+ C_array_e_octetHolder argout = new C_array_e_octetHolder();
+ C_array_e_octetHolder arginout = new C_array_e_octetHolder();
+ arginout.value = C_array_e_octetHelper.read(in);
+
+ byte[] __result = null;
+ __result = this.op40(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_octetHelper.write(out, __result);
+ C_array_e_octetHelper.write(out, argout.value);
+ C_array_e_octetHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 36 : // rf11/op41
+ {
+ org.omg.CORBA.Any[] argin = C_array_e_anyHelper.read(in);
+ C_array_e_anyHolder argout = new C_array_e_anyHolder();
+ C_array_e_anyHolder arginout = new C_array_e_anyHolder();
+ arginout.value = C_array_e_anyHelper.read(in);
+
+ org.omg.CORBA.Any[] __result = null;
+ __result = this.op41(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_anyHelper.write(out, __result);
+ C_array_e_anyHelper.write(out, argout.value);
+ C_array_e_anyHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 37 : // rf11/op42
+ {
+ String[] argin = C_array_e_stringHelper.read(in);
+ C_array_e_stringHolder argout = new C_array_e_stringHolder();
+ C_array_e_stringHolder arginout = new C_array_e_stringHolder();
+ arginout.value = C_array_e_stringHelper.read(in);
+
+ String[] __result = null;
+ __result = this.op42(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_stringHelper.write(out, __result);
+ C_array_e_stringHelper.write(out, argout.value);
+ C_array_e_stringHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 38 : // rf11/op43
+ {
+ org.omg.CORBA.Object[] argin = C_array_e_ObjectHelper.read(in);
+ C_array_e_ObjectHolder argout = new C_array_e_ObjectHolder();
+ C_array_e_ObjectHolder arginout = new C_array_e_ObjectHolder();
+ arginout.value = C_array_e_ObjectHelper.read(in);
+
+ org.omg.CORBA.Object[] __result = null;
+ __result = this.op43(argin, argout, arginout);
+ out = rh.createReply();
+ C_array_e_ObjectHelper.write(out, __result);
+ C_array_e_ObjectHelper.write(out, argout.value);
+ C_array_e_ObjectHelper.write(out, arginout.value);
+ break;
+ }
+
+ // D
+ case 39 : // rf11/op46
+ {
+ D_d_short argin = D_d_shortHelper.read(in);
+ D_d_shortHolder argout = new D_d_shortHolder();
+ D_d_shortHolder arginout = new D_d_shortHolder();
+ arginout.value = D_d_shortHelper.read(in);
+
+ D_d_short __result = null;
+ __result = this.op46(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_shortHelper.write(out, __result);
+ D_d_shortHelper.write(out, argout.value);
+ D_d_shortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 40 : // rf11/op47
+ {
+ D_d_ushort argin = D_d_ushortHelper.read(in);
+ D_d_ushortHolder argout = new D_d_ushortHolder();
+ D_d_ushortHolder arginout = new D_d_ushortHolder();
+ arginout.value = D_d_ushortHelper.read(in);
+
+ D_d_ushort __result = null;
+ __result = this.op47(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_ushortHelper.write(out, __result);
+ D_d_ushortHelper.write(out, argout.value);
+ D_d_ushortHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 41 : // rf11/op48
+ {
+ D_d_long argin = D_d_longHelper.read(in);
+ D_d_longHolder argout = new D_d_longHolder();
+ D_d_longHolder arginout = new D_d_longHolder();
+ arginout.value = D_d_longHelper.read(in);
+
+ D_d_long __result = null;
+ __result = this.op48(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_longHelper.write(out, __result);
+ D_d_longHelper.write(out, argout.value);
+ D_d_longHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 42 : // rf11/op49
+ {
+ D_d_ulong argin = D_d_ulongHelper.read(in);
+ D_d_ulongHolder argout = new D_d_ulongHolder();
+ D_d_ulongHolder arginout = new D_d_ulongHolder();
+ arginout.value = D_d_ulongHelper.read(in);
+
+ D_d_ulong __result = null;
+ __result = this.op49(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_ulongHelper.write(out, __result);
+ D_d_ulongHelper.write(out, argout.value);
+ D_d_ulongHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 43 : // rf11/op50
+ {
+ D_d_char argin = D_d_charHelper.read(in);
+ D_d_charHolder argout = new D_d_charHolder();
+ D_d_charHolder arginout = new D_d_charHolder();
+ arginout.value = D_d_charHelper.read(in);
+
+ D_d_char __result = null;
+ __result = this.op50(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_charHelper.write(out, __result);
+ D_d_charHelper.write(out, argout.value);
+ D_d_charHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 44 : // rf11/op51
+ {
+ D_d_boolean argin = D_d_booleanHelper.read(in);
+ D_d_booleanHolder argout = new D_d_booleanHolder();
+ D_d_booleanHolder arginout = new D_d_booleanHolder();
+ arginout.value = D_d_booleanHelper.read(in);
+
+ D_d_boolean __result = null;
+ __result = this.op51(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_booleanHelper.write(out, __result);
+ D_d_booleanHelper.write(out, argout.value);
+ D_d_booleanHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 45 : // rf11/op52
+ {
+ D_d_B argin = D_d_BHelper.read(in);
+ D_d_BHolder argout = new D_d_BHolder();
+ D_d_BHolder arginout = new D_d_BHolder();
+ arginout.value = D_d_BHelper.read(in);
+
+ D_d_B __result = null;
+ __result = this.op52(argin, argout, arginout);
+ out = rh.createReply();
+ D_d_BHelper.write(out, __result);
+ D_d_BHelper.write(out, argout.value);
+ D_d_BHelper.write(out, arginout.value);
+ break;
+ }
+
+ // E
+ case 46 : // rf11/op53
+ {
+ E_struct argin = E_structHelper.read(in);
+ E_structHolder argout = new E_structHolder();
+ E_structHolder arginout = new E_structHolder();
+ arginout.value = E_structHelper.read(in);
+
+ E_struct __result = null;
+ __result = this.op53(argin, argout, arginout);
+ out = rh.createReply();
+ E_structHelper.write(out, __result);
+ E_structHelper.write(out, argout.value);
+ E_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 47 : // rf11/op54
+ {
+ E_union argin = E_unionHelper.read(in);
+ E_unionHolder argout = new E_unionHolder();
+ E_unionHolder arginout = new E_unionHolder();
+ arginout.value = E_unionHelper.read(in);
+
+ E_union __result = null;
+ __result = this.op54(argin, argout, arginout);
+ out = rh.createReply();
+ E_unionHelper.write(out, __result);
+ E_unionHelper.write(out, argout.value);
+ E_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 48 : // rf11/op55
+ {
+ B[] argin = E_sequenceHelper.read(in);
+ E_sequenceHolder argout = new E_sequenceHolder();
+ E_sequenceHolder arginout = new E_sequenceHolder();
+ arginout.value = E_sequenceHelper.read(in);
+
+ B[] __result = null;
+ __result = this.op55(argin, argout, arginout);
+ out = rh.createReply();
+ E_sequenceHelper.write(out, __result);
+ E_sequenceHelper.write(out, argout.value);
+ E_sequenceHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 49 : // rf11/op56
+ {
+ B[] argin = E_arrayHelper.read(in);
+ E_arrayHolder argout = new E_arrayHolder();
+ E_arrayHolder arginout = new E_arrayHolder();
+ arginout.value = E_arrayHelper.read(in);
+
+ B[] __result = null;
+ __result = this.op56(argin, argout, arginout);
+ out = rh.createReply();
+ E_arrayHelper.write(out, __result);
+ E_arrayHelper.write(out, argout.value);
+ E_arrayHelper.write(out, arginout.value);
+ break;
+ }
+
+ // F
+ case 50 : // rf11/op57
+ {
+ F_struct argin = F_structHelper.read(in);
+ F_structHolder argout = new F_structHolder();
+ F_structHolder arginout = new F_structHolder();
+ arginout.value = F_structHelper.read(in);
+
+ F_struct __result = null;
+ __result = this.op57(argin, argout, arginout);
+ out = rh.createReply();
+ F_structHelper.write(out, __result);
+ F_structHelper.write(out, argout.value);
+ F_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 51 : // rf11/op58
+ {
+ F_union argin = F_unionHelper.read(in);
+ F_unionHolder argout = new F_unionHolder();
+ F_unionHolder arginout = new F_unionHolder();
+ arginout.value = F_unionHelper.read(in);
+
+ F_union __result = null;
+ __result = this.op58(argin, argout, arginout);
+ out = rh.createReply();
+ F_unionHelper.write(out, __result);
+ F_unionHelper.write(out, argout.value);
+ F_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 52 : // rf11/op59
+ {
+ C_struct[] argin = F_sequence_e_c_structHelper.read(in);
+ F_sequence_e_c_structHolder argout =
+ new F_sequence_e_c_structHolder();
+ F_sequence_e_c_structHolder arginout =
+ new F_sequence_e_c_structHolder();
+ arginout.value = F_sequence_e_c_structHelper.read(in);
+
+ C_struct[] __result = null;
+ __result = this.op59(argin, argout, arginout);
+ out = rh.createReply();
+ F_sequence_e_c_structHelper.write(out, __result);
+ F_sequence_e_c_structHelper.write(out, argout.value);
+ F_sequence_e_c_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 53 : // rf11/op60
+ {
+ C_union[] argin = F_sequence_e_c_unionHelper.read(in);
+ F_sequence_e_c_unionHolder argout = new F_sequence_e_c_unionHolder();
+ F_sequence_e_c_unionHolder arginout =
+ new F_sequence_e_c_unionHolder();
+ arginout.value = F_sequence_e_c_unionHelper.read(in);
+
+ C_union[] __result = null;
+ __result = this.op60(argin, argout, arginout);
+ out = rh.createReply();
+ F_sequence_e_c_unionHelper.write(out, __result);
+ F_sequence_e_c_unionHelper.write(out, argout.value);
+ F_sequence_e_c_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 54 : // rf11/op89
+ {
+ C_struct[] argin = F_array_e_c_structHelper.read(in);
+ F_array_e_c_structHolder argout = new F_array_e_c_structHolder();
+ F_array_e_c_structHolder arginout = new F_array_e_c_structHolder();
+ arginout.value = F_array_e_c_structHelper.read(in);
+
+ C_struct[] __result = null;
+ __result = this.op89(argin, argout, arginout);
+ out = rh.createReply();
+ F_array_e_c_structHelper.write(out, __result);
+ F_array_e_c_structHelper.write(out, argout.value);
+ F_array_e_c_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 55 : // rf11/op90
+ {
+ C_union[] argin = F_array_e_c_unionHelper.read(in);
+ F_array_e_c_unionHolder argout = new F_array_e_c_unionHolder();
+ F_array_e_c_unionHolder arginout = new F_array_e_c_unionHolder();
+ arginout.value = F_array_e_c_unionHelper.read(in);
+
+ C_union[] __result = null;
+ __result = this.op90(argin, argout, arginout);
+ out = rh.createReply();
+ F_array_e_c_unionHelper.write(out, __result);
+ F_array_e_c_unionHelper.write(out, argout.value);
+ F_array_e_c_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ // G
+ case 56 : // rf11/op119
+ {
+ G_struct argin = G_structHelper.read(in);
+ G_structHolder argout = new G_structHolder();
+ G_structHolder arginout = new G_structHolder();
+ arginout.value = G_structHelper.read(in);
+
+ G_struct __result = null;
+ __result = this.op119(argin, argout, arginout);
+ out = rh.createReply();
+ G_structHelper.write(out, __result);
+ G_structHelper.write(out, argout.value);
+ G_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 57 : // rf11/op120
+ {
+ G_union argin = G_unionHelper.read(in);
+ G_unionHolder argout = new G_unionHolder();
+ G_unionHolder arginout = new G_unionHolder();
+ arginout.value = G_unionHelper.read(in);
+
+ G_union __result = null;
+ __result = this.op120(argin, argout, arginout);
+ out = rh.createReply();
+ G_unionHelper.write(out, __result);
+ G_unionHelper.write(out, argout.value);
+ G_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 58 : // rf11/op121
+ {
+ E_struct[] argin = G_sequence_e_e_structHelper.read(in);
+ G_sequence_e_e_structHolder argout =
+ new G_sequence_e_e_structHolder();
+ G_sequence_e_e_structHolder arginout =
+ new G_sequence_e_e_structHolder();
+ arginout.value = G_sequence_e_e_structHelper.read(in);
+
+ E_struct[] __result = null;
+ __result = this.op121(argin, argout, arginout);
+ out = rh.createReply();
+ G_sequence_e_e_structHelper.write(out, __result);
+ G_sequence_e_e_structHelper.write(out, argout.value);
+ G_sequence_e_e_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 59 : // rf11/op122
+ {
+ E_union[] argin = G_sequence_e_e_unionHelper.read(in);
+ G_sequence_e_e_unionHolder argout = new G_sequence_e_e_unionHolder();
+ G_sequence_e_e_unionHolder arginout =
+ new G_sequence_e_e_unionHolder();
+ arginout.value = G_sequence_e_e_unionHelper.read(in);
+
+ E_union[] __result = null;
+ __result = this.op122(argin, argout, arginout);
+ out = rh.createReply();
+ G_sequence_e_e_unionHelper.write(out, __result);
+ G_sequence_e_e_unionHelper.write(out, argout.value);
+ G_sequence_e_e_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 60 : // rf11/op125
+ {
+ E_struct[] argin = G_array_e_e_structHelper.read(in);
+ G_array_e_e_structHolder argout = new G_array_e_e_structHolder();
+ G_array_e_e_structHolder arginout = new G_array_e_e_structHolder();
+ arginout.value = G_array_e_e_structHelper.read(in);
+
+ E_struct[] __result = null;
+ __result = this.op125(argin, argout, arginout);
+ out = rh.createReply();
+ G_array_e_e_structHelper.write(out, __result);
+ G_array_e_e_structHelper.write(out, argout.value);
+ G_array_e_e_structHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 61 : // rf11/op126
+ {
+ E_union[] argin = G_array_e_e_unionHelper.read(in);
+ G_array_e_e_unionHolder argout = new G_array_e_e_unionHolder();
+ G_array_e_e_unionHolder arginout = new G_array_e_e_unionHolder();
+ arginout.value = G_array_e_e_unionHelper.read(in);
+
+ E_union[] __result = null;
+ __result = this.op126(argin, argout, arginout);
+ out = rh.createReply();
+ G_array_e_e_unionHelper.write(out, __result);
+ G_array_e_e_unionHelper.write(out, argout.value);
+ G_array_e_e_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ // rest of F
+ case 62 : // rf11/op129
+ {
+ F_union argin = F_unionHelper.read(in);
+ F_unionHolder argout = new F_unionHolder();
+ F_unionHolder arginout = new F_unionHolder();
+ arginout.value = F_unionHelper.read(in);
+
+ F_union __result = null;
+ __result = this.op129(argin, argout, arginout);
+ out = rh.createReply();
+ F_unionHelper.write(out, __result);
+ F_unionHelper.write(out, argout.value);
+ F_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 63 : // rf11/op130
+ {
+ F_union argin = F_unionHelper.read(in);
+ F_unionHolder argout = new F_unionHolder();
+ F_unionHolder arginout = new F_unionHolder();
+ arginout.value = F_unionHelper.read(in);
+
+ F_union __result = null;
+ __result = this.op130(argin, argout, arginout);
+ out = rh.createReply();
+ F_unionHelper.write(out, __result);
+ F_unionHelper.write(out, argout.value);
+ F_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ case 64 : // rf11/op131
+ {
+ F_union argin = F_unionHelper.read(in);
+ F_unionHolder argout = new F_unionHolder();
+ F_unionHolder arginout = new F_unionHolder();
+ arginout.value = F_unionHelper.read(in);
+
+ F_union __result = null;
+ __result = this.op131(argin, argout, arginout);
+ out = rh.createReply();
+ F_unionHelper.write(out, __result);
+ F_unionHelper.write(out, argout.value);
+ F_unionHelper.write(out, arginout.value);
+ break;
+ }
+
+ // pragma: exception=A_except1
+ case 65 : // rf11/excop1
+ {
+ try
+ {
+ this.excop1();
+ out = rh.createReply();
+ }
+ catch (A_except1 __ex)
+ {
+ out = rh.createExceptionReply();
+ A_except1Helper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=A_except2
+ case 66 : // rf11/excop2
+ {
+ try
+ {
+ this.excop2();
+ out = rh.createReply();
+ }
+ catch (A_except2 __ex)
+ {
+ out = rh.createExceptionReply();
+ A_except2Helper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=B_except
+ case 67 : // rf11/excop3
+ {
+ try
+ {
+ this.excop3();
+ out = rh.createReply();
+ }
+ catch (B_except __ex)
+ {
+ out = rh.createExceptionReply();
+ B_exceptHelper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=C_except
+ case 68 : // rf11/excop4
+ {
+ try
+ {
+ this.excop4();
+ out = rh.createReply();
+ }
+ catch (C_except __ex)
+ {
+ out = rh.createExceptionReply();
+ C_exceptHelper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=D_except
+ case 69 : // rf11/excop5
+ {
+ try
+ {
+ this.excop5();
+ out = rh.createReply();
+ }
+ catch (D_except __ex)
+ {
+ out = rh.createExceptionReply();
+ D_exceptHelper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=E_except
+ case 70 : // rf11/excop6
+ {
+ try
+ {
+ this.excop6();
+ out = rh.createReply();
+ }
+ catch (E_except __ex)
+ {
+ out = rh.createExceptionReply();
+ E_exceptHelper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=F_except1
+ case 71 : // rf11/excop7
+ {
+ try
+ {
+ this.excop7();
+ out = rh.createReply();
+ }
+ catch (F_except1 __ex)
+ {
+ out = rh.createExceptionReply();
+ F_except1Helper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=F_except2
+ case 72 : // rf11/excop8
+ {
+ try
+ {
+ this.excop8();
+ out = rh.createReply();
+ }
+ catch (F_except2 __ex)
+ {
+ out = rh.createExceptionReply();
+ F_except2Helper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=F_except3
+ case 73 : // rf11/excop9
+ {
+ try
+ {
+ this.excop9();
+ out = rh.createReply();
+ }
+ catch (F_except3 __ex)
+ {
+ out = rh.createExceptionReply();
+ F_except3Helper.write(out, __ex);
+ }
+ break;
+ }
+
+ // pragma: exception=G_except
+ case 74 : // rf11/excop10
+ {
+ try
+ {
+ this.excop10();
+ out = rh.createReply();
+ }
+ catch (G_except __ex)
+ {
+ out = rh.createExceptionReply();
+ G_exceptHelper.write(out, __ex);
+ }
+ break;
+ }
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = { "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/rf11:1.0" };
+
+ public String[] _ids()
+ {
+ return __ids;
+ }
+} // class _rf11ImplBase
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11Stub.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11Stub.java
new file mode 100644
index 00000000..c2a3dbc4
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/_rf11Stub.java
@@ -0,0 +1,2610 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public class _rf11Stub
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements NEC_RF11
+{
+ // Constructors
+ // NOTE: If the default constructor is used, the
+ // object is useless until _set_delegate (...)
+ // is called.
+ public _rf11Stub()
+ {
+ super();
+ }
+
+ public _rf11Stub(org.omg.CORBA.portable.Delegate delegate)
+ {
+ super();
+ _set_delegate(delegate);
+ }
+
+ // A
+ public short op1(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op1", true);
+ _out.write_short(argin);
+ _out.write_short(arginout.value);
+ _in = _invoke(_out);
+
+ short __result = _in.read_short();
+ argout.value = _in.read_short();
+ arginout.value = _in.read_short();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op1(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op1
+
+ public short op2(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op2", true);
+ _out.write_ushort(argin);
+ _out.write_ushort(arginout.value);
+ _in = _invoke(_out);
+
+ short __result = _in.read_ushort();
+ argout.value = _in.read_ushort();
+ arginout.value = _in.read_ushort();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op2(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op2
+
+ public int op3(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op3", true);
+ _out.write_long(argin);
+ _out.write_long(arginout.value);
+ _in = _invoke(_out);
+
+ int __result = _in.read_long();
+ argout.value = _in.read_long();
+ arginout.value = _in.read_long();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op3(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op3
+
+ public int op4(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op4", true);
+ _out.write_ulong(argin);
+ _out.write_ulong(arginout.value);
+ _in = _invoke(_out);
+
+ int __result = _in.read_ulong();
+ argout.value = _in.read_ulong();
+ arginout.value = _in.read_ulong();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op4(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op4
+
+ public float op5(float argin, org.omg.CORBA.FloatHolder argout,
+ org.omg.CORBA.FloatHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op5", true);
+ _out.write_float(argin);
+ _out.write_float(arginout.value);
+ _in = _invoke(_out);
+
+ float __result = _in.read_float();
+ argout.value = _in.read_float();
+ arginout.value = _in.read_float();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op5(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op5
+
+ public double op6(double argin, org.omg.CORBA.DoubleHolder argout,
+ org.omg.CORBA.DoubleHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op6", true);
+ _out.write_double(argin);
+ _out.write_double(arginout.value);
+ _in = _invoke(_out);
+
+ double __result = _in.read_double();
+ argout.value = _in.read_double();
+ arginout.value = _in.read_double();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op6(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op6
+
+ public char op7(char argin, org.omg.CORBA.CharHolder argout,
+ org.omg.CORBA.CharHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op7", true);
+ _out.write_char(argin);
+ _out.write_char(arginout.value);
+ _in = _invoke(_out);
+
+ char __result = _in.read_char();
+ argout.value = _in.read_char();
+ arginout.value = _in.read_char();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op7(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op7
+
+ public boolean op8(boolean argin, org.omg.CORBA.BooleanHolder argout,
+ org.omg.CORBA.BooleanHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op8", true);
+ _out.write_boolean(argin);
+ _out.write_boolean(arginout.value);
+ _in = _invoke(_out);
+
+ boolean __result = _in.read_boolean();
+ argout.value = _in.read_boolean();
+ arginout.value = _in.read_boolean();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op8(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op8
+
+ public byte op9(byte argin, org.omg.CORBA.ByteHolder argout,
+ org.omg.CORBA.ByteHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op9", true);
+ _out.write_octet(argin);
+ _out.write_octet(arginout.value);
+ _in = _invoke(_out);
+
+ byte __result = _in.read_octet();
+ argout.value = _in.read_octet();
+ arginout.value = _in.read_octet();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op9(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op9
+
+ public org.omg.CORBA.Any op10(org.omg.CORBA.Any argin,
+ org.omg.CORBA.AnyHolder argout,
+ org.omg.CORBA.AnyHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op10", true);
+ _out.write_any(argin);
+ _out.write_any(arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Any __result = _in.read_any();
+ argout.value = _in.read_any();
+ arginout.value = _in.read_any();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op10(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op10
+
+ public String op11(String argin, org.omg.CORBA.StringHolder argout,
+ org.omg.CORBA.StringHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op11", true);
+ _out.write_string(argin);
+ _out.write_string(arginout.value);
+ _in = _invoke(_out);
+
+ String __result = _in.read_string();
+ argout.value = _in.read_string();
+ arginout.value = _in.read_string();
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op11(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op11
+
+ public org.omg.CORBA.Object op12(org.omg.CORBA.Object argin,
+ org.omg.CORBA.ObjectHolder argout,
+ org.omg.CORBA.ObjectHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op12", true);
+ org.omg.CORBA.ObjectHelper.write(_out, argin);
+ org.omg.CORBA.ObjectHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Object __result = org.omg.CORBA.ObjectHelper.read(_in);
+ argout.value = org.omg.CORBA.ObjectHelper.read(_in);
+ arginout.value = org.omg.CORBA.ObjectHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op12(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op12
+
+ // B
+ public B op15(B argin, BHolder argout, BHolder arginout)
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op15", true);
+ BHelper.write(_out, argin);
+ BHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ B __result = BHelper.read(_in);
+ argout.value = BHelper.read(_in);
+ arginout.value = BHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op15(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op15
+
+ // C
+ public C_struct op16(C_struct argin, C_structHolder argout,
+ C_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op16", true);
+ C_structHelper.write(_out, argin);
+ C_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_struct __result = C_structHelper.read(_in);
+ argout.value = C_structHelper.read(_in);
+ arginout.value = C_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op16(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op16
+
+ public C_union op17(C_union argin, C_unionHolder argout,
+ C_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op17", true);
+ C_unionHelper.write(_out, argin);
+ C_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_union __result = C_unionHelper.read(_in);
+ argout.value = C_unionHelper.read(_in);
+ arginout.value = C_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op17(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op17
+
+ public short[] op18(short[] argin, C_sequence_e_shortHolder argout,
+ C_sequence_e_shortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op18", true);
+ C_sequence_e_shortHelper.write(_out, argin);
+ C_sequence_e_shortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ short[] __result = C_sequence_e_shortHelper.read(_in);
+ argout.value = C_sequence_e_shortHelper.read(_in);
+ arginout.value = C_sequence_e_shortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op18(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op18
+
+ public short[] op19(short[] argin, C_sequence_e_ushortHolder argout,
+ C_sequence_e_ushortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op19", true);
+ C_sequence_e_ushortHelper.write(_out, argin);
+ C_sequence_e_ushortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ short[] __result = C_sequence_e_ushortHelper.read(_in);
+ argout.value = C_sequence_e_ushortHelper.read(_in);
+ arginout.value = C_sequence_e_ushortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op19(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op19
+
+ public int[] op20(int[] argin, C_sequence_e_longHolder argout,
+ C_sequence_e_longHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op20", true);
+ C_sequence_e_longHelper.write(_out, argin);
+ C_sequence_e_longHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ int[] __result = C_sequence_e_longHelper.read(_in);
+ argout.value = C_sequence_e_longHelper.read(_in);
+ arginout.value = C_sequence_e_longHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op20(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op20
+
+ public int[] op21(int[] argin, C_sequence_e_ulongHolder argout,
+ C_sequence_e_ulongHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op21", true);
+ C_sequence_e_ulongHelper.write(_out, argin);
+ C_sequence_e_ulongHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ int[] __result = C_sequence_e_ulongHelper.read(_in);
+ argout.value = C_sequence_e_ulongHelper.read(_in);
+ arginout.value = C_sequence_e_ulongHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op21(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op21
+
+ public float[] op22(float[] argin, C_sequence_e_floatHolder argout,
+ C_sequence_e_floatHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op22", true);
+ C_sequence_e_floatHelper.write(_out, argin);
+ C_sequence_e_floatHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ float[] __result = C_sequence_e_floatHelper.read(_in);
+ argout.value = C_sequence_e_floatHelper.read(_in);
+ arginout.value = C_sequence_e_floatHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op22(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op22
+
+ public double[] op23(double[] argin, C_sequence_e_doubleHolder argout,
+ C_sequence_e_doubleHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op23", true);
+ C_sequence_e_doubleHelper.write(_out, argin);
+ C_sequence_e_doubleHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ double[] __result = C_sequence_e_doubleHelper.read(_in);
+ argout.value = C_sequence_e_doubleHelper.read(_in);
+ arginout.value = C_sequence_e_doubleHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op23(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op23
+
+ public char[] op24(char[] argin, C_sequence_e_charHolder argout,
+ C_sequence_e_charHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op24", true);
+ C_sequence_e_charHelper.write(_out, argin);
+ C_sequence_e_charHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ char[] __result = C_sequence_e_charHelper.read(_in);
+ argout.value = C_sequence_e_charHelper.read(_in);
+ arginout.value = C_sequence_e_charHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op24(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op24
+
+ public boolean[] op25(boolean[] argin, C_sequence_e_booleanHolder argout,
+ C_sequence_e_booleanHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op25", true);
+ C_sequence_e_booleanHelper.write(_out, argin);
+ C_sequence_e_booleanHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ boolean[] __result = C_sequence_e_booleanHelper.read(_in);
+ argout.value = C_sequence_e_booleanHelper.read(_in);
+ arginout.value = C_sequence_e_booleanHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op25(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op25
+
+ public byte[] op26(byte[] argin, C_sequence_e_octetHolder argout,
+ C_sequence_e_octetHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op26", true);
+ C_sequence_e_octetHelper.write(_out, argin);
+ C_sequence_e_octetHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ byte[] __result = C_sequence_e_octetHelper.read(_in);
+ argout.value = C_sequence_e_octetHelper.read(_in);
+ arginout.value = C_sequence_e_octetHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op26(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op26
+
+ public org.omg.CORBA.Any[] op27(org.omg.CORBA.Any[] argin,
+ C_sequence_e_anyHolder argout,
+ C_sequence_e_anyHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op27", true);
+ C_sequence_e_anyHelper.write(_out, argin);
+ C_sequence_e_anyHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Any[] __result = C_sequence_e_anyHelper.read(_in);
+ argout.value = C_sequence_e_anyHelper.read(_in);
+ arginout.value = C_sequence_e_anyHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op27(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op27
+
+ public String[] op28(String[] argin, C_sequence_e_stringHolder argout,
+ C_sequence_e_stringHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op28", true);
+ C_sequence_e_stringHelper.write(_out, argin);
+ C_sequence_e_stringHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ String[] __result = C_sequence_e_stringHelper.read(_in);
+ argout.value = C_sequence_e_stringHelper.read(_in);
+ arginout.value = C_sequence_e_stringHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op28(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op28
+
+ public org.omg.CORBA.Object[] op29(org.omg.CORBA.Object[] argin,
+ C_sequence_e_ObjectHolder argout,
+ C_sequence_e_ObjectHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op29", true);
+ C_sequence_e_ObjectHelper.write(_out, argin);
+ C_sequence_e_ObjectHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Object[] __result = C_sequence_e_ObjectHelper.read(_in);
+ argout.value = C_sequence_e_ObjectHelper.read(_in);
+ arginout.value = C_sequence_e_ObjectHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op29(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op29
+
+ public short[] op32(short[] argin, C_array_e_shortHolder argout,
+ C_array_e_shortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op32", true);
+ C_array_e_shortHelper.write(_out, argin);
+ C_array_e_shortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ short[] __result = C_array_e_shortHelper.read(_in);
+ argout.value = C_array_e_shortHelper.read(_in);
+ arginout.value = C_array_e_shortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op32(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op32
+
+ public short[] op33(short[] argin, C_array_e_ushortHolder argout,
+ C_array_e_ushortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op33", true);
+ C_array_e_ushortHelper.write(_out, argin);
+ C_array_e_ushortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ short[] __result = C_array_e_ushortHelper.read(_in);
+ argout.value = C_array_e_ushortHelper.read(_in);
+ arginout.value = C_array_e_ushortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op33(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op33
+
+ public int[] op34(int[] argin, C_array_e_longHolder argout,
+ C_array_e_longHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op34", true);
+ C_array_e_longHelper.write(_out, argin);
+ C_array_e_longHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ int[] __result = C_array_e_longHelper.read(_in);
+ argout.value = C_array_e_longHelper.read(_in);
+ arginout.value = C_array_e_longHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op34(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op34
+
+ public int[] op35(int[] argin, C_array_e_ulongHolder argout,
+ C_array_e_ulongHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op35", true);
+ C_array_e_ulongHelper.write(_out, argin);
+ C_array_e_ulongHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ int[] __result = C_array_e_ulongHelper.read(_in);
+ argout.value = C_array_e_ulongHelper.read(_in);
+ arginout.value = C_array_e_ulongHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op35(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op35
+
+ public float[] op36(float[] argin, C_array_e_floatHolder argout,
+ C_array_e_floatHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op36", true);
+ C_array_e_floatHelper.write(_out, argin);
+ C_array_e_floatHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ float[] __result = C_array_e_floatHelper.read(_in);
+ argout.value = C_array_e_floatHelper.read(_in);
+ arginout.value = C_array_e_floatHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op36(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op36
+
+ public double[] op37(double[] argin, C_array_e_doubleHolder argout,
+ C_array_e_doubleHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op37", true);
+ C_array_e_doubleHelper.write(_out, argin);
+ C_array_e_doubleHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ double[] __result = C_array_e_doubleHelper.read(_in);
+ argout.value = C_array_e_doubleHelper.read(_in);
+ arginout.value = C_array_e_doubleHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op37(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op37
+
+ public char[] op38(char[] argin, C_array_e_charHolder argout,
+ C_array_e_charHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op38", true);
+ C_array_e_charHelper.write(_out, argin);
+ C_array_e_charHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ char[] __result = C_array_e_charHelper.read(_in);
+ argout.value = C_array_e_charHelper.read(_in);
+ arginout.value = C_array_e_charHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op38(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op38
+
+ public boolean[] op39(boolean[] argin, C_array_e_booleanHolder argout,
+ C_array_e_booleanHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op39", true);
+ C_array_e_booleanHelper.write(_out, argin);
+ C_array_e_booleanHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ boolean[] __result = C_array_e_booleanHelper.read(_in);
+ argout.value = C_array_e_booleanHelper.read(_in);
+ arginout.value = C_array_e_booleanHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op39(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op39
+
+ public byte[] op40(byte[] argin, C_array_e_octetHolder argout,
+ C_array_e_octetHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op40", true);
+ C_array_e_octetHelper.write(_out, argin);
+ C_array_e_octetHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ byte[] __result = C_array_e_octetHelper.read(_in);
+ argout.value = C_array_e_octetHelper.read(_in);
+ arginout.value = C_array_e_octetHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op40(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op40
+
+ public org.omg.CORBA.Any[] op41(org.omg.CORBA.Any[] argin,
+ C_array_e_anyHolder argout,
+ C_array_e_anyHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op41", true);
+ C_array_e_anyHelper.write(_out, argin);
+ C_array_e_anyHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Any[] __result = C_array_e_anyHelper.read(_in);
+ argout.value = C_array_e_anyHelper.read(_in);
+ arginout.value = C_array_e_anyHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op41(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op41
+
+ public String[] op42(String[] argin, C_array_e_stringHolder argout,
+ C_array_e_stringHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op42", true);
+ C_array_e_stringHelper.write(_out, argin);
+ C_array_e_stringHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ String[] __result = C_array_e_stringHelper.read(_in);
+ argout.value = C_array_e_stringHelper.read(_in);
+ arginout.value = C_array_e_stringHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op42(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op42
+
+ public org.omg.CORBA.Object[] op43(org.omg.CORBA.Object[] argin,
+ C_array_e_ObjectHolder argout,
+ C_array_e_ObjectHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op43", true);
+ C_array_e_ObjectHelper.write(_out, argin);
+ C_array_e_ObjectHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ org.omg.CORBA.Object[] __result = C_array_e_ObjectHelper.read(_in);
+ argout.value = C_array_e_ObjectHelper.read(_in);
+ arginout.value = C_array_e_ObjectHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op43(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op43
+
+ // D
+ public D_d_short op46(D_d_short argin, D_d_shortHolder argout,
+ D_d_shortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op46", true);
+ D_d_shortHelper.write(_out, argin);
+ D_d_shortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_short __result = D_d_shortHelper.read(_in);
+ argout.value = D_d_shortHelper.read(_in);
+ arginout.value = D_d_shortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op46(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op46
+
+ public D_d_ushort op47(D_d_ushort argin, D_d_ushortHolder argout,
+ D_d_ushortHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op47", true);
+ D_d_ushortHelper.write(_out, argin);
+ D_d_ushortHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_ushort __result = D_d_ushortHelper.read(_in);
+ argout.value = D_d_ushortHelper.read(_in);
+ arginout.value = D_d_ushortHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op47(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op47
+
+ public D_d_long op48(D_d_long argin, D_d_longHolder argout,
+ D_d_longHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op48", true);
+ D_d_longHelper.write(_out, argin);
+ D_d_longHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_long __result = D_d_longHelper.read(_in);
+ argout.value = D_d_longHelper.read(_in);
+ arginout.value = D_d_longHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op48(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op48
+
+ public D_d_ulong op49(D_d_ulong argin, D_d_ulongHolder argout,
+ D_d_ulongHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op49", true);
+ D_d_ulongHelper.write(_out, argin);
+ D_d_ulongHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_ulong __result = D_d_ulongHelper.read(_in);
+ argout.value = D_d_ulongHelper.read(_in);
+ arginout.value = D_d_ulongHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op49(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op49
+
+ public D_d_char op50(D_d_char argin, D_d_charHolder argout,
+ D_d_charHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op50", true);
+ D_d_charHelper.write(_out, argin);
+ D_d_charHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_char __result = D_d_charHelper.read(_in);
+ argout.value = D_d_charHelper.read(_in);
+ arginout.value = D_d_charHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op50(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op50
+
+ public D_d_boolean op51(D_d_boolean argin, D_d_booleanHolder argout,
+ D_d_booleanHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op51", true);
+ D_d_booleanHelper.write(_out, argin);
+ D_d_booleanHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_boolean __result = D_d_booleanHelper.read(_in);
+ argout.value = D_d_booleanHelper.read(_in);
+ arginout.value = D_d_booleanHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op51(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op51
+
+ public D_d_B op52(D_d_B argin, D_d_BHolder argout, D_d_BHolder arginout)
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op52", true);
+ D_d_BHelper.write(_out, argin);
+ D_d_BHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ D_d_B __result = D_d_BHelper.read(_in);
+ argout.value = D_d_BHelper.read(_in);
+ arginout.value = D_d_BHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op52(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op52
+
+ // E
+ public E_struct op53(E_struct argin, E_structHolder argout,
+ E_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op53", true);
+ E_structHelper.write(_out, argin);
+ E_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_struct __result = E_structHelper.read(_in);
+ argout.value = E_structHelper.read(_in);
+ arginout.value = E_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op53(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op53
+
+ public E_union op54(E_union argin, E_unionHolder argout,
+ E_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op54", true);
+ E_unionHelper.write(_out, argin);
+ E_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_union __result = E_unionHelper.read(_in);
+ argout.value = E_unionHelper.read(_in);
+ arginout.value = E_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op54(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op54
+
+ public B[] op55(B[] argin, E_sequenceHolder argout, E_sequenceHolder arginout)
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op55", true);
+ E_sequenceHelper.write(_out, argin);
+ E_sequenceHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ B[] __result = E_sequenceHelper.read(_in);
+ argout.value = E_sequenceHelper.read(_in);
+ arginout.value = E_sequenceHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op55(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op55
+
+ public B[] op56(B[] argin, E_arrayHolder argout, E_arrayHolder arginout)
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op56", true);
+ E_arrayHelper.write(_out, argin);
+ E_arrayHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ B[] __result = E_arrayHelper.read(_in);
+ argout.value = E_arrayHelper.read(_in);
+ arginout.value = E_arrayHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op56(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op56
+
+ // F
+ public F_struct op57(F_struct argin, F_structHolder argout,
+ F_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op57", true);
+ F_structHelper.write(_out, argin);
+ F_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ F_struct __result = F_structHelper.read(_in);
+ argout.value = F_structHelper.read(_in);
+ arginout.value = F_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op57(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op57
+
+ public F_union op58(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op58", true);
+ F_unionHelper.write(_out, argin);
+ F_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ F_union __result = F_unionHelper.read(_in);
+ argout.value = F_unionHelper.read(_in);
+ arginout.value = F_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op58(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op58
+
+ public C_struct[] op59(C_struct[] argin, F_sequence_e_c_structHolder argout,
+ F_sequence_e_c_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op59", true);
+ F_sequence_e_c_structHelper.write(_out, argin);
+ F_sequence_e_c_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_struct[] __result = F_sequence_e_c_structHelper.read(_in);
+ argout.value = F_sequence_e_c_structHelper.read(_in);
+ arginout.value = F_sequence_e_c_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op59(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op59
+
+ public C_union[] op60(C_union[] argin, F_sequence_e_c_unionHolder argout,
+ F_sequence_e_c_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op60", true);
+ F_sequence_e_c_unionHelper.write(_out, argin);
+ F_sequence_e_c_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_union[] __result = F_sequence_e_c_unionHelper.read(_in);
+ argout.value = F_sequence_e_c_unionHelper.read(_in);
+ arginout.value = F_sequence_e_c_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op60(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op60
+
+ public C_struct[] op89(C_struct[] argin, F_array_e_c_structHolder argout,
+ F_array_e_c_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op89", true);
+ F_array_e_c_structHelper.write(_out, argin);
+ F_array_e_c_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_struct[] __result = F_array_e_c_structHelper.read(_in);
+ argout.value = F_array_e_c_structHelper.read(_in);
+ arginout.value = F_array_e_c_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op89(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op89
+
+ public C_union[] op90(C_union[] argin, F_array_e_c_unionHolder argout,
+ F_array_e_c_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op90", true);
+ F_array_e_c_unionHelper.write(_out, argin);
+ F_array_e_c_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ C_union[] __result = F_array_e_c_unionHelper.read(_in);
+ argout.value = F_array_e_c_unionHelper.read(_in);
+ arginout.value = F_array_e_c_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op90(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op90
+
+ // G
+ public G_struct op119(G_struct argin, G_structHolder argout,
+ G_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op119", true);
+ G_structHelper.write(_out, argin);
+ G_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ G_struct __result = G_structHelper.read(_in);
+ argout.value = G_structHelper.read(_in);
+ arginout.value = G_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op119(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op119
+
+ public G_union op120(G_union argin, G_unionHolder argout,
+ G_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op120", true);
+ G_unionHelper.write(_out, argin);
+ G_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ G_union __result = G_unionHelper.read(_in);
+ argout.value = G_unionHelper.read(_in);
+ arginout.value = G_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op120(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op120
+
+ public E_struct[] op121(E_struct[] argin, G_sequence_e_e_structHolder argout,
+ G_sequence_e_e_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op121", true);
+ G_sequence_e_e_structHelper.write(_out, argin);
+ G_sequence_e_e_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_struct[] __result = G_sequence_e_e_structHelper.read(_in);
+ argout.value = G_sequence_e_e_structHelper.read(_in);
+ arginout.value = G_sequence_e_e_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op121(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op121
+
+ public E_union[] op122(E_union[] argin, G_sequence_e_e_unionHolder argout,
+ G_sequence_e_e_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op122", true);
+ G_sequence_e_e_unionHelper.write(_out, argin);
+ G_sequence_e_e_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_union[] __result = G_sequence_e_e_unionHelper.read(_in);
+ argout.value = G_sequence_e_e_unionHelper.read(_in);
+ arginout.value = G_sequence_e_e_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op122(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op122
+
+ public E_struct[] op125(E_struct[] argin, G_array_e_e_structHolder argout,
+ G_array_e_e_structHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op125", true);
+ G_array_e_e_structHelper.write(_out, argin);
+ G_array_e_e_structHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_struct[] __result = G_array_e_e_structHelper.read(_in);
+ argout.value = G_array_e_e_structHelper.read(_in);
+ arginout.value = G_array_e_e_structHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op125(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op125
+
+ public E_union[] op126(E_union[] argin, G_array_e_e_unionHolder argout,
+ G_array_e_e_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op126", true);
+ G_array_e_e_unionHelper.write(_out, argin);
+ G_array_e_e_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ E_union[] __result = G_array_e_e_unionHelper.read(_in);
+ argout.value = G_array_e_e_unionHelper.read(_in);
+ arginout.value = G_array_e_e_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op126(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op126
+
+ // rest of F
+ public F_union op129(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op129", true);
+ F_unionHelper.write(_out, argin);
+ F_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ F_union __result = F_unionHelper.read(_in);
+ argout.value = F_unionHelper.read(_in);
+ arginout.value = F_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op129(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op129
+
+ public F_union op130(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op130", true);
+ F_unionHelper.write(_out, argin);
+ F_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ F_union __result = F_unionHelper.read(_in);
+ argout.value = F_unionHelper.read(_in);
+ arginout.value = F_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op130(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op130
+
+ public F_union op131(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("op131", true);
+ F_unionHelper.write(_out, argin);
+ F_unionHelper.write(_out, arginout.value);
+ _in = _invoke(_out);
+
+ F_union __result = F_unionHelper.read(_in);
+ argout.value = F_unionHelper.read(_in);
+ arginout.value = F_unionHelper.read(_in);
+ return __result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ return op131(argin, argout, arginout);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // op131
+
+ // pragma: exception=A_except1
+ public void excop1()
+ throws A_except1
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop1", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/A_except1:1.0"))
+ throw A_except1Helper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop1();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop1
+
+ // pragma: exception=A_except2
+ public void excop2()
+ throws A_except2
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop2", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/A_except2:1.0"))
+ throw A_except2Helper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop2();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop2
+
+ // pragma: exception=B_except
+ public void excop3()
+ throws B_except
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop3", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/B_except:1.0"))
+ throw B_exceptHelper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop3();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop3
+
+ // pragma: exception=C_except
+ public void excop4()
+ throws C_except
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop4", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/C_except:1.0"))
+ throw C_exceptHelper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop4();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop4
+
+ // pragma: exception=D_except
+ public void excop5()
+ throws D_except
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop5", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/D_except:1.0"))
+ throw D_exceptHelper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop5();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop5
+
+ // pragma: exception=E_except
+ public void excop6()
+ throws E_except
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop6", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/E_except:1.0"))
+ throw E_exceptHelper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop6();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop6
+
+ // pragma: exception=F_except1
+ public void excop7()
+ throws F_except1
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop7", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except1:1.0"))
+ throw F_except1Helper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop7();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop7
+
+ // pragma: exception=F_except2
+ public void excop8()
+ throws F_except2
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop8", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except2:1.0"))
+ throw F_except2Helper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop8();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop8
+
+ // pragma: exception=F_except3
+ public void excop9()
+ throws F_except3
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop9", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/F_except3:1.0"))
+ throw F_except3Helper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop9();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop9
+
+ // pragma: exception=G_except
+ public void excop10()
+ throws G_except
+ {
+ org.omg.CORBA.portable.InputStream _in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream _out = _request("excop10", true);
+ _in = _invoke(_out);
+ }
+ catch (org.omg.CORBA.portable.ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ if (_id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/G_except:1.0"))
+ throw G_exceptHelper.read(_in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException _rm)
+ {
+ excop10();
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ } // excop10
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = { "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/rf11:1.0" };
+
+ public String[] _ids()
+ {
+ return (String[]) __ids.clone();
+ }
+
+ private void readObject(java.io.ObjectInputStream s)
+ {
+ try
+ {
+ String str = s.readUTF();
+ org.omg.CORBA.Object obj =
+ org.omg.CORBA.ORB.init().string_to_object(str);
+ org.omg.CORBA.portable.Delegate delegate =
+ ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate();
+ _set_delegate(delegate);
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ private void writeObject(java.io.ObjectOutputStream s)
+ {
+ try
+ {
+ String str = org.omg.CORBA.ORB.init().object_to_string(this);
+ s.writeUTF(str);
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+} // class _rf11Stub
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java
new file mode 100644
index 00000000..5d52d0c1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Caller.java
@@ -0,0 +1,3714 @@
+// Tags: not-a-test
+// Uses: ../../Asserter
+
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// Copyright (c) 2000, 2001 NEC Corporation. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. The functionality to test the interoperability specified by the
+// Object Management Group's CORBA/IIOP specification version two (or
+// later versions) must be preserved.
+//
+// 2. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer as the
+// first lines of this file unmodified.
+//
+// 3. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY NEC CORPORATION ``AS IS'' AND ANY EXPRESS
+// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// CVS
+// $Id: rf11Caller.java,v 1.2 2008/06/25 08:01:02 twisti Exp $
+//
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+import org.omg.CORBA.ORB;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.TestHarness;
+
+public class rf11Caller extends Asserter
+{
+ ORB orb;
+ NEC_RF11 target;
+
+ public void init(ORB _orb, NEC_RF11 _target)
+ {
+ orb = _orb;
+ target = _target;
+ }
+
+ //runtime routines
+ boolean comp_0000(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ C_struct cons_0000()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0002(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0001(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0002(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_union cons_0001()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = -100;
+ _v1.e_short(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0003(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0004(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0005(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ D_d_short cons_0002()
+ {
+ D_d_short _v1;
+ _v1 = new D_d_short();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0006(D_d_short _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ D_d_ushort cons_0003()
+ {
+ D_d_ushort _v1;
+ _v1 = new D_d_ushort();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0007(D_d_ushort _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ D_d_long cons_0004()
+ {
+ D_d_long _v1;
+ _v1 = new D_d_long();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0008(D_d_long _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ D_d_ulong cons_0005()
+ {
+ D_d_ulong _v1;
+ _v1 = new D_d_ulong();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0009(D_d_ulong _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ D_d_char cons_0006()
+ {
+ D_d_char _v1;
+ _v1 = new D_d_char();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0010(D_d_char _v1)
+ {
+ if (_v1.discriminator() != 'b')
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ D_d_boolean cons_0007()
+ {
+ D_d_boolean _v1;
+ _v1 = new D_d_boolean();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0011(D_d_boolean _v1)
+ {
+ if (_v1.discriminator() != true)
+ return false;
+ return (_v1.l1() == -200000);
+ }
+
+ D_d_B cons_0008()
+ {
+ D_d_B _v1;
+ _v1 = new D_d_B();
+
+ int _v2;
+ _v2 = -100000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0012(D_d_B _v1)
+ {
+ if (_v1.discriminator() != B.b2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ E_struct cons_0009()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b1;
+ _v1.e_b2 = B.b1;
+ return (_v1);
+ }
+
+ boolean comp_0013(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ E_union cons_0010()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b1;
+ _v1.e_b1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0014(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ C_struct cons_0012()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0013()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = -100;
+ _v1.e_short(_v2);
+ return (_v1);
+ }
+
+ F_struct cons_0011()
+ {
+ F_struct _v1;
+ _v1 = new F_struct();
+ _v1.e_c_struct = cons_0012();
+ _v1.e_c_union = cons_0013();
+ _v1.e_c_sequence_e_short = new short[ 2 ];
+ _v1.e_c_sequence_e_short [ 0 ] = -100;
+ _v1.e_c_sequence_e_short [ 1 ] = -100;
+ _v1.e_c_sequence_e_ushort = new short[ 2 ];
+ _v1.e_c_sequence_e_ushort [ 0 ] = 100;
+ _v1.e_c_sequence_e_ushort [ 1 ] = 100;
+ _v1.e_c_sequence_e_long = new int[ 2 ];
+ _v1.e_c_sequence_e_long [ 0 ] = -100000;
+ _v1.e_c_sequence_e_long [ 1 ] = -100000;
+ _v1.e_c_sequence_e_ulong = new int[ 2 ];
+ _v1.e_c_sequence_e_ulong [ 0 ] = 100000;
+ _v1.e_c_sequence_e_ulong [ 1 ] = 100000;
+ _v1.e_c_sequence_e_float = new float[ 2 ];
+ _v1.e_c_sequence_e_float [ 0 ] = 0.123f;
+ _v1.e_c_sequence_e_float [ 1 ] = 0.123f;
+ _v1.e_c_sequence_e_double = new double[ 2 ];
+ _v1.e_c_sequence_e_double [ 0 ] = 0.12e3;
+ _v1.e_c_sequence_e_double [ 1 ] = 0.12e3;
+ _v1.e_c_sequence_e_char = new char[ 2 ];
+ _v1.e_c_sequence_e_char [ 0 ] = 'a';
+ _v1.e_c_sequence_e_char [ 1 ] = 'a';
+ _v1.e_c_sequence_e_boolean = new boolean[ 2 ];
+ _v1.e_c_sequence_e_boolean [ 0 ] = false;
+ _v1.e_c_sequence_e_boolean [ 1 ] = false;
+ _v1.e_c_sequence_e_octet = new byte[ 2 ];
+ _v1.e_c_sequence_e_octet [ 0 ] = 10;
+ _v1.e_c_sequence_e_octet [ 1 ] = 10;
+ _v1.e_c_sequence_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_sequence_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 0 ].insert_string("abc");
+ _v1.e_c_sequence_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 1 ].insert_string("abc");
+ _v1.e_c_sequence_e_string = new String[ 2 ];
+ _v1.e_c_sequence_e_string [ 0 ] = "abc";
+ _v1.e_c_sequence_e_string [ 1 ] = "abc";
+ _v1.e_c_sequence_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_sequence_e_Object [ 0 ] = target;
+ _v1.e_c_sequence_e_Object [ 1 ] = target;
+ _v1.e_c_array_e_short = new short[ 2 ];
+ _v1.e_c_array_e_short [ 0 ] = -100;
+ _v1.e_c_array_e_short [ 1 ] = -100;
+ _v1.e_c_array_e_ushort = new short[ 2 ];
+ _v1.e_c_array_e_ushort [ 0 ] = 100;
+ _v1.e_c_array_e_ushort [ 1 ] = 100;
+ _v1.e_c_array_e_long = new int[ 2 ];
+ _v1.e_c_array_e_long [ 0 ] = -100000;
+ _v1.e_c_array_e_long [ 1 ] = -100000;
+ _v1.e_c_array_e_ulong = new int[ 2 ];
+ _v1.e_c_array_e_ulong [ 0 ] = 100000;
+ _v1.e_c_array_e_ulong [ 1 ] = 100000;
+ _v1.e_c_array_e_float = new float[ 2 ];
+ _v1.e_c_array_e_float [ 0 ] = 0.123f;
+ _v1.e_c_array_e_float [ 1 ] = 0.123f;
+ _v1.e_c_array_e_double = new double[ 2 ];
+ _v1.e_c_array_e_double [ 0 ] = 0.12e3;
+ _v1.e_c_array_e_double [ 1 ] = 0.12e3;
+ _v1.e_c_array_e_char = new char[ 2 ];
+ _v1.e_c_array_e_char [ 0 ] = 'a';
+ _v1.e_c_array_e_char [ 1 ] = 'a';
+ _v1.e_c_array_e_boolean = new boolean[ 2 ];
+ _v1.e_c_array_e_boolean [ 0 ] = false;
+ _v1.e_c_array_e_boolean [ 1 ] = false;
+ _v1.e_c_array_e_octet = new byte[ 2 ];
+ _v1.e_c_array_e_octet [ 0 ] = 10;
+ _v1.e_c_array_e_octet [ 1 ] = 10;
+ _v1.e_c_array_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_array_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 0 ].insert_string("abc");
+ _v1.e_c_array_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 1 ].insert_string("abc");
+ _v1.e_c_array_e_string = new String[ 2 ];
+ _v1.e_c_array_e_string [ 0 ] = "abc";
+ _v1.e_c_array_e_string [ 1 ] = "abc";
+ _v1.e_c_array_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_array_e_Object [ 0 ] = target;
+ _v1.e_c_array_e_Object [ 1 ] = target;
+ return (_v1);
+ }
+
+ boolean comp_0017(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0016(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0017(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0018(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0015(F_struct _v1)
+ {
+ return (true && comp_0016(_v1.e_c_struct) && comp_0018(_v1.e_c_union) &&
+ (
+ true && (_v1.e_c_sequence_e_short [ 0 ] == -200) &&
+ (_v1.e_c_sequence_e_short [ 1 ] == -200)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ushort [ 0 ] == 200) &&
+ (_v1.e_c_sequence_e_ushort [ 1 ] == 200)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_long [ 0 ] == -200000) &&
+ (_v1.e_c_sequence_e_long [ 1 ] == -200000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ulong [ 0 ] == 200000) &&
+ (_v1.e_c_sequence_e_ulong [ 1 ] == 200000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_float [ 0 ] == 1.234f) &&
+ (_v1.e_c_sequence_e_float [ 1 ] == 1.234f)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_double [ 0 ] == 1.23e4) &&
+ (_v1.e_c_sequence_e_double [ 1 ] == 1.23e4)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_char [ 0 ] == 'b') &&
+ (_v1.e_c_sequence_e_char [ 1 ] == 'b')
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_boolean [ 0 ] == true) &&
+ (_v1.e_c_sequence_e_boolean [ 1 ] == true)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_octet [ 0 ] == 20) &&
+ (_v1.e_c_sequence_e_octet [ 1 ] == 20)
+ ) &&
+ (
+ true && comp_0017(_v1.e_c_sequence_e_any [ 0 ]) &&
+ comp_0017(_v1.e_c_sequence_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_string [ 0 ].equals("def")) &&
+ (_v1.e_c_sequence_e_string [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_sequence_e_Object [ 1 ]._is_equivalent(target))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_short [ 0 ] == -200) &&
+ (_v1.e_c_array_e_short [ 1 ] == -200)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ushort [ 0 ] == 200) &&
+ (_v1.e_c_array_e_ushort [ 1 ] == 200)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_long [ 0 ] == -200000) &&
+ (_v1.e_c_array_e_long [ 1 ] == -200000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ulong [ 0 ] == 200000) &&
+ (_v1.e_c_array_e_ulong [ 1 ] == 200000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_float [ 0 ] == 1.234f) &&
+ (_v1.e_c_array_e_float [ 1 ] == 1.234f)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_double [ 0 ] == 1.23e4) &&
+ (_v1.e_c_array_e_double [ 1 ] == 1.23e4)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_char [ 0 ] == 'b') &&
+ (_v1.e_c_array_e_char [ 1 ] == 'b')
+ ) &&
+ (
+ true && (_v1.e_c_array_e_boolean [ 0 ] == true) &&
+ (_v1.e_c_array_e_boolean [ 1 ] == true)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_octet [ 0 ] == 20) &&
+ (_v1.e_c_array_e_octet [ 1 ] == 20)
+ ) &&
+ (
+ true && comp_0017(_v1.e_c_array_e_any [ 0 ]) &&
+ comp_0017(_v1.e_c_array_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_array_e_string [ 0 ].equals("def")) &&
+ (_v1.e_c_array_e_string [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_array_e_Object [ 1 ]._is_equivalent(target))
+ ));
+ }
+
+ C_struct cons_0015()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ F_union cons_0014()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_struct _v2;
+ _v2 = cons_0015();
+ _v1.e_c_struct(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0020(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0019(F_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0020(_v1.e_c_union());
+ }
+
+ C_struct cons_0016()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0022(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0021(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0022(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_union cons_0017()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = -100;
+ _v1.e_short(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0023(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ C_struct cons_0018()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0025(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0024(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0025(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_union cons_0019()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = -100;
+ _v1.e_short(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0026(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ E_struct cons_0021()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b1;
+ _v1.e_b2 = B.b1;
+ return (_v1);
+ }
+
+ E_union cons_0022()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b1;
+ _v1.e_b1(_v2);
+ return (_v1);
+ }
+
+ G_struct cons_0020()
+ {
+ G_struct _v1;
+ _v1 = new G_struct();
+ _v1.e_e_struct = cons_0021();
+ _v1.e_e_union = cons_0022();
+ _v1.e_e_sequence = new B[ 2 ];
+ _v1.e_e_sequence [ 0 ] = B.b1;
+ _v1.e_e_sequence [ 1 ] = B.b1;
+ _v1.e_e_array = new B[ 2 ];
+ _v1.e_e_array [ 0 ] = B.b1;
+ _v1.e_e_array [ 1 ] = B.b1;
+ return (_v1);
+ }
+
+ boolean comp_0028(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ boolean comp_0029(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ boolean comp_0027(G_struct _v1)
+ {
+ return (true && comp_0028(_v1.e_e_struct) && comp_0029(_v1.e_e_union) &&
+ (
+ true && (_v1.e_e_sequence [ 0 ] == B.b2) &&
+ (_v1.e_e_sequence [ 1 ] == B.b2)
+ ) &&
+ (
+ true && (_v1.e_e_array [ 0 ] == B.b2) &&
+ (_v1.e_e_array [ 1 ] == B.b2)
+ ));
+ }
+
+ E_struct cons_0024()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b1;
+ _v1.e_b2 = B.b1;
+ return (_v1);
+ }
+
+ G_union cons_0023()
+ {
+ G_union _v1;
+ _v1 = new G_union();
+
+ E_struct _v2;
+ _v2 = cons_0024();
+ _v1.e_e_struct(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0031(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ boolean comp_0030(G_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0031(_v1.e_e_union());
+ }
+
+ E_struct cons_0025()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b1;
+ _v1.e_b2 = B.b1;
+ return (_v1);
+ }
+
+ boolean comp_0032(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ E_union cons_0026()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b1;
+ _v1.e_b1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0033(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ E_struct cons_0027()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b1;
+ _v1.e_b2 = B.b1;
+ return (_v1);
+ }
+
+ boolean comp_0034(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ E_union cons_0028()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b1;
+ _v1.e_b1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0035(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ C_struct cons_0030()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ F_union cons_0029()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_struct _v2;
+ _v2 = cons_0030();
+ _v1.e_c_struct(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0037(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0036(F_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0037(_v1.e_c_union());
+ }
+
+ C_struct cons_0032()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ F_union cons_0031()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_struct _v2;
+ _v2 = cons_0032();
+ _v1.e_c_struct(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0039(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0038(F_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0039(_v1.e_c_union());
+ }
+
+ C_struct cons_0034()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -100;
+ _v1.e_ushort = 100;
+ _v1.e_long = -100000;
+ _v1.e_ulong = 100000;
+ _v1.e_float = 0.123f;
+ _v1.e_double = 0.12e3;
+ _v1.e_char = 'a';
+ _v1.e_boolean = false;
+ _v1.e_octet = 10;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_string("abc");
+ _v1.e_string = "abc";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ F_union cons_0033()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_struct _v2;
+ _v2 = cons_0034();
+ _v1.e_c_struct(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0041(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0040(F_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0041(_v1.e_c_union());
+ }
+
+ boolean comp_0042(A_except1 _v1)
+ {
+ return (true && (_v1.v1 == -200) && (_v1.v2 == 200) && (_v1.v3 == -200000) &&
+ (_v1.v4 == 200000) && (_v1.v5 == 1.234f) && (_v1.v6 == 1.23e4) &&
+ (_v1.v7 == 'b') && (_v1.v8 == true) && (_v1.v9 == 20));
+ }
+
+ boolean comp_0044(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0043(A_except2 _v1)
+ {
+ return (true && comp_0044(_v1.v10) && (_v1.v11.equals("def")) &&
+ (_v1.v12._is_equivalent(target)));
+ }
+
+ boolean comp_0045(B_except _v1)
+ {
+ return (true && (_v1.v == B.b2));
+ }
+
+ boolean comp_0048(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0047(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0048(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0049(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0046(C_except _v1)
+ {
+ return (true && comp_0047(_v1.v1) && comp_0049(_v1.v2) &&
+ comp_0049(_v1.v3) && comp_0049(_v1.v4) && comp_0049(_v1.v5) &&
+ comp_0049(_v1.v6) && comp_0049(_v1.v7) && comp_0049(_v1.v8) &&
+ comp_0049(_v1.v9) && comp_0049(_v1.v10) && comp_0049(_v1.v11) &&
+ comp_0049(_v1.v12) && comp_0049(_v1.v13) &&
+ (true && (_v1.v16 [ 0 ] == -200) && (_v1.v16 [ 1 ] == -200)) &&
+ (true && (_v1.v17 [ 0 ] == 200) && (_v1.v17 [ 1 ] == 200)) &&
+ (true && (_v1.v18 [ 0 ] == -200000) && (_v1.v18 [ 1 ] == -200000)) &&
+ (true && (_v1.v19 [ 0 ] == 200000) && (_v1.v19 [ 1 ] == 200000)) &&
+ (true && (_v1.v20 [ 0 ] == 1.234f) && (_v1.v20 [ 1 ] == 1.234f)) &&
+ (true && (_v1.v21 [ 0 ] == 1.23e4) && (_v1.v21 [ 1 ] == 1.23e4)) &&
+ (true && (_v1.v22 [ 0 ] == 'b') && (_v1.v22 [ 1 ] == 'b')) &&
+ (true && (_v1.v23 [ 0 ] == true) && (_v1.v23 [ 1 ] == true)) &&
+ (true && (_v1.v24 [ 0 ] == 20) && (_v1.v24 [ 1 ] == 20)) &&
+ (true && comp_0048(_v1.v25 [ 0 ]) && comp_0048(_v1.v25 [ 1 ])) &&
+ (
+ true && (_v1.v26 [ 0 ].equals("def")) &&
+ (_v1.v26 [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.v27 [ 0 ]._is_equivalent(target)) &&
+ (_v1.v27 [ 1 ]._is_equivalent(target))
+ ) && (true && (_v1.v30 [ 0 ] == -200) && (_v1.v30 [ 1 ] == -200)) &&
+ (true && (_v1.v31 [ 0 ] == 200) && (_v1.v31 [ 1 ] == 200)) &&
+ (true && (_v1.v32 [ 0 ] == -200000) && (_v1.v32 [ 1 ] == -200000)) &&
+ (true && (_v1.v33 [ 0 ] == 200000) && (_v1.v33 [ 1 ] == 200000)) &&
+ (true && (_v1.v34 [ 0 ] == 1.234f) && (_v1.v34 [ 1 ] == 1.234f)) &&
+ (true && (_v1.v35 [ 0 ] == 1.23e4) && (_v1.v35 [ 1 ] == 1.23e4)) &&
+ (true && (_v1.v36 [ 0 ] == 'b') && (_v1.v36 [ 1 ] == 'b')) &&
+ (true && (_v1.v37 [ 0 ] == true) && (_v1.v37 [ 1 ] == true)) &&
+ (true && (_v1.v38 [ 0 ] == 20) && (_v1.v38 [ 1 ] == 20)) &&
+ (true && comp_0048(_v1.v39 [ 0 ]) && comp_0048(_v1.v39 [ 1 ])) &&
+ (
+ true && (_v1.v40 [ 0 ].equals("def")) &&
+ (_v1.v40 [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.v41 [ 0 ]._is_equivalent(target)) &&
+ (_v1.v41 [ 1 ]._is_equivalent(target))
+ ));
+ }
+
+ boolean comp_0051(D_d_short _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0052(D_d_ushort _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0053(D_d_long _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0054(D_d_ulong _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0055(D_d_char _v1)
+ {
+ if (_v1.discriminator() != 'b')
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0056(D_d_boolean _v1)
+ {
+ if (_v1.discriminator() != true)
+ return false;
+ return (_v1.l1() == -200000);
+ }
+
+ boolean comp_0057(D_d_B _v1)
+ {
+ if (_v1.discriminator() != B.b2)
+ return false;
+ return (_v1.l2() == -200000);
+ }
+
+ boolean comp_0050(D_except _v1)
+ {
+ return (true && comp_0051(_v1.v1) && comp_0052(_v1.v2) &&
+ comp_0053(_v1.v3) && comp_0054(_v1.v4) && comp_0055(_v1.v5) &&
+ comp_0056(_v1.v6) && comp_0057(_v1.v7));
+ }
+
+ boolean comp_0059(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ boolean comp_0060(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ boolean comp_0058(E_except _v1)
+ {
+ return (true && comp_0059(_v1.v1) && comp_0060(_v1.v2) &&
+ (true && (_v1.v3 [ 0 ] == B.b2) && (_v1.v3 [ 1 ] == B.b2)) &&
+ (true && (_v1.v4 [ 0 ] == B.b2) && (_v1.v4 [ 1 ] == B.b2)));
+ }
+
+ boolean comp_0064(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0063(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0064(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0065(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0062(F_struct _v1)
+ {
+ return (true && comp_0063(_v1.e_c_struct) && comp_0065(_v1.e_c_union) &&
+ (
+ true && (_v1.e_c_sequence_e_short [ 0 ] == -200) &&
+ (_v1.e_c_sequence_e_short [ 1 ] == -200)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ushort [ 0 ] == 200) &&
+ (_v1.e_c_sequence_e_ushort [ 1 ] == 200)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_long [ 0 ] == -200000) &&
+ (_v1.e_c_sequence_e_long [ 1 ] == -200000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ulong [ 0 ] == 200000) &&
+ (_v1.e_c_sequence_e_ulong [ 1 ] == 200000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_float [ 0 ] == 1.234f) &&
+ (_v1.e_c_sequence_e_float [ 1 ] == 1.234f)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_double [ 0 ] == 1.23e4) &&
+ (_v1.e_c_sequence_e_double [ 1 ] == 1.23e4)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_char [ 0 ] == 'b') &&
+ (_v1.e_c_sequence_e_char [ 1 ] == 'b')
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_boolean [ 0 ] == true) &&
+ (_v1.e_c_sequence_e_boolean [ 1 ] == true)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_octet [ 0 ] == 20) &&
+ (_v1.e_c_sequence_e_octet [ 1 ] == 20)
+ ) &&
+ (
+ true && comp_0064(_v1.e_c_sequence_e_any [ 0 ]) &&
+ comp_0064(_v1.e_c_sequence_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_string [ 0 ].equals("def")) &&
+ (_v1.e_c_sequence_e_string [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_sequence_e_Object [ 1 ]._is_equivalent(target))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_short [ 0 ] == -200) &&
+ (_v1.e_c_array_e_short [ 1 ] == -200)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ushort [ 0 ] == 200) &&
+ (_v1.e_c_array_e_ushort [ 1 ] == 200)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_long [ 0 ] == -200000) &&
+ (_v1.e_c_array_e_long [ 1 ] == -200000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ulong [ 0 ] == 200000) &&
+ (_v1.e_c_array_e_ulong [ 1 ] == 200000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_float [ 0 ] == 1.234f) &&
+ (_v1.e_c_array_e_float [ 1 ] == 1.234f)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_double [ 0 ] == 1.23e4) &&
+ (_v1.e_c_array_e_double [ 1 ] == 1.23e4)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_char [ 0 ] == 'b') &&
+ (_v1.e_c_array_e_char [ 1 ] == 'b')
+ ) &&
+ (
+ true && (_v1.e_c_array_e_boolean [ 0 ] == true) &&
+ (_v1.e_c_array_e_boolean [ 1 ] == true)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_octet [ 0 ] == 20) &&
+ (_v1.e_c_array_e_octet [ 1 ] == 20)
+ ) &&
+ (
+ true && comp_0064(_v1.e_c_array_e_any [ 0 ]) &&
+ comp_0064(_v1.e_c_array_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_array_e_string [ 0 ].equals("def")) &&
+ (_v1.e_c_array_e_string [ 1 ].equals("def"))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_array_e_Object [ 1 ]._is_equivalent(target))
+ ));
+ }
+
+ boolean comp_0066(F_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0065(_v1.e_c_union());
+ }
+
+ boolean comp_0061(F_except1 _v1)
+ {
+ return (true && comp_0062(_v1.v1) && comp_0066(_v1.v2) &&
+ comp_0066(_v1.v3) && comp_0066(_v1.v4) && comp_0066(_v1.v5) &&
+ comp_0066(_v1.v6) && comp_0066(_v1.v7) && comp_0066(_v1.v8) &&
+ comp_0066(_v1.v9) && comp_0066(_v1.v10) && comp_0066(_v1.v11) &&
+ comp_0066(_v1.v12) && comp_0066(_v1.v13) && comp_0066(_v1.v14) &&
+ comp_0066(_v1.v15) && comp_0066(_v1.v18) && comp_0066(_v1.v19) &&
+ comp_0066(_v1.v20) && comp_0066(_v1.v21) && comp_0066(_v1.v22) &&
+ comp_0066(_v1.v23) && comp_0066(_v1.v24) && comp_0066(_v1.v25) &&
+ comp_0066(_v1.v26) && comp_0066(_v1.v27) && comp_0066(_v1.v28) &&
+ comp_0066(_v1.v29));
+ }
+
+ boolean comp_0069(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0068(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0069(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0070(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0067(F_except2 _v1)
+ {
+ return (true &&
+ (true && comp_0068(_v1.v32 [ 0 ]) && comp_0068(_v1.v32 [ 1 ])) &&
+ (true && comp_0070(_v1.v33 [ 0 ]) && comp_0070(_v1.v33 [ 1 ])));
+ }
+
+ boolean comp_0073(org.omg.CORBA.Any _v1)
+ {
+ int _v2;
+ _v2 = _v1.extract_long();
+ return (_v2 == -200000);
+ }
+
+ boolean comp_0072(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -200) && (_v1.e_ushort == 200) &&
+ (_v1.e_long == -200000) && (_v1.e_ulong == 200000) &&
+ (_v1.e_float == 1.234f) && (_v1.e_double == 1.23e4) &&
+ (_v1.e_char == 'b') && (_v1.e_boolean == true) &&
+ (_v1.e_octet == 20) && comp_0073(_v1.e_any) &&
+ (_v1.e_string.equals("def")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0074(C_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_ushort() == 200);
+ }
+
+ boolean comp_0071(F_except3 _v1)
+ {
+ return (true &&
+ (true && comp_0072(_v1.v62 [ 0 ]) && comp_0072(_v1.v62 [ 1 ])) &&
+ (true && comp_0074(_v1.v63 [ 0 ]) && comp_0074(_v1.v63 [ 1 ])));
+ }
+
+ boolean comp_0077(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b2) && (_v1.e_b2 == B.b2));
+ }
+
+ boolean comp_0078(E_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return (_v1.e_b2() == B.b2);
+ }
+
+ boolean comp_0076(G_struct _v1)
+ {
+ return (true && comp_0077(_v1.e_e_struct) && comp_0078(_v1.e_e_union) &&
+ (
+ true && (_v1.e_e_sequence [ 0 ] == B.b2) &&
+ (_v1.e_e_sequence [ 1 ] == B.b2)
+ ) &&
+ (
+ true && (_v1.e_e_array [ 0 ] == B.b2) &&
+ (_v1.e_e_array [ 1 ] == B.b2)
+ ));
+ }
+
+ boolean comp_0079(G_union _v1)
+ {
+ if (_v1.discriminator() != 2)
+ return false;
+ return comp_0078(_v1.e_e_union());
+ }
+
+ boolean comp_0075(G_except _v1)
+ {
+ return (true && comp_0076(_v1.v1) && comp_0079(_v1.v2) &&
+ comp_0079(_v1.v3) && comp_0079(_v1.v4) && comp_0079(_v1.v5) &&
+ (true && comp_0077(_v1.v6 [ 0 ]) && comp_0077(_v1.v6 [ 1 ])) &&
+ (true && comp_0078(_v1.v7 [ 0 ]) && comp_0078(_v1.v7 [ 1 ])) &&
+ (true && comp_0077(_v1.v10 [ 0 ]) && comp_0077(_v1.v10 [ 1 ])) &&
+ (true && comp_0078(_v1.v11 [ 0 ]) && comp_0078(_v1.v11 [ 1 ])));
+ }
+
+ //operator definitions
+ void call_op1()
+ {
+ short argin;
+ org.omg.CORBA.ShortHolder argout;
+ argout = new org.omg.CORBA.ShortHolder();
+
+ org.omg.CORBA.ShortHolder arginout;
+ arginout = new org.omg.CORBA.ShortHolder();
+
+ short _ret;
+ argin = -100;
+ arginout.value = -100;
+ try
+ {
+ _ret = target.op1(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op1");
+ return;
+ }
+ if (!(_ret == -200))
+ {
+ fail("_ret value error in op1");
+ }
+ if (!(argout.value == -200))
+ {
+ fail("argout value error in op1");
+ }
+ if (!(arginout.value == -200))
+ {
+ fail("arginout value error in op1");
+ }
+ }
+
+ void call_op2()
+ {
+ short argin;
+ org.omg.CORBA.ShortHolder argout;
+ argout = new org.omg.CORBA.ShortHolder();
+
+ org.omg.CORBA.ShortHolder arginout;
+ arginout = new org.omg.CORBA.ShortHolder();
+
+ short _ret;
+ argin = 100;
+ arginout.value = 100;
+ try
+ {
+ _ret = target.op2(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op2");
+ return;
+ }
+ if (!(_ret == 200))
+ {
+ fail("_ret value error in op2");
+ }
+ if (!(argout.value == 200))
+ {
+ fail("argout value error in op2");
+ }
+ if (!(arginout.value == 200))
+ {
+ fail("arginout value error in op2");
+ }
+ }
+
+ void call_op3()
+ {
+ int argin;
+ org.omg.CORBA.IntHolder argout;
+ argout = new org.omg.CORBA.IntHolder();
+
+ org.omg.CORBA.IntHolder arginout;
+ arginout = new org.omg.CORBA.IntHolder();
+
+ int _ret;
+ argin = -100000;
+ arginout.value = -100000;
+ try
+ {
+ _ret = target.op3(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op3");
+ return;
+ }
+ if (!(_ret == -200000))
+ {
+ fail("_ret value error in op3");
+ }
+ if (!(argout.value == -200000))
+ {
+ fail("argout value error in op3");
+ }
+ if (!(arginout.value == -200000))
+ {
+ fail("arginout value error in op3");
+ }
+ }
+
+ void call_op4()
+ {
+ int argin;
+ org.omg.CORBA.IntHolder argout;
+ argout = new org.omg.CORBA.IntHolder();
+
+ org.omg.CORBA.IntHolder arginout;
+ arginout = new org.omg.CORBA.IntHolder();
+
+ int _ret;
+ argin = 100000;
+ arginout.value = 100000;
+ try
+ {
+ _ret = target.op4(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op4");
+ return;
+ }
+ if (!(_ret == 200000))
+ {
+ fail("_ret value error in op4");
+ }
+ if (!(argout.value == 200000))
+ {
+ fail("argout value error in op4");
+ }
+ if (!(arginout.value == 200000))
+ {
+ fail("arginout value error in op4");
+ }
+ }
+
+ void call_op5()
+ {
+ float argin;
+ org.omg.CORBA.FloatHolder argout;
+ argout = new org.omg.CORBA.FloatHolder();
+
+ org.omg.CORBA.FloatHolder arginout;
+ arginout = new org.omg.CORBA.FloatHolder();
+
+ float _ret;
+ argin = 0.123f;
+ arginout.value = 0.123f;
+ try
+ {
+ _ret = target.op5(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op5");
+ return;
+ }
+ if (!(_ret == 1.234f))
+ {
+ fail("_ret value error in op5");
+ }
+ if (!(argout.value == 1.234f))
+ {
+ fail("argout value error in op5");
+ }
+ if (!(arginout.value == 1.234f))
+ {
+ fail("arginout value error in op5");
+ }
+ }
+
+ void call_op6()
+ {
+ double argin;
+ org.omg.CORBA.DoubleHolder argout;
+ argout = new org.omg.CORBA.DoubleHolder();
+
+ org.omg.CORBA.DoubleHolder arginout;
+ arginout = new org.omg.CORBA.DoubleHolder();
+
+ double _ret;
+ argin = 0.12e3;
+ arginout.value = 0.12e3;
+ try
+ {
+ _ret = target.op6(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op6");
+ return;
+ }
+ if (!(_ret == 1.23e4))
+ {
+ fail("_ret value error in op6");
+ }
+ if (!(argout.value == 1.23e4))
+ {
+ fail("argout value error in op6");
+ }
+ if (!(arginout.value == 1.23e4))
+ {
+ fail("arginout value error in op6");
+ }
+ }
+
+ void call_op7()
+ {
+ char argin;
+ org.omg.CORBA.CharHolder argout;
+ argout = new org.omg.CORBA.CharHolder();
+
+ org.omg.CORBA.CharHolder arginout;
+ arginout = new org.omg.CORBA.CharHolder();
+
+ char _ret;
+ argin = 'a';
+ arginout.value = 'a';
+ try
+ {
+ _ret = target.op7(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op7");
+ return;
+ }
+ if (!(_ret == 'b'))
+ {
+ fail("_ret value error in op7");
+ }
+ if (!(argout.value == 'b'))
+ {
+ fail("argout value error in op7");
+ }
+ if (!(arginout.value == 'b'))
+ {
+ fail("arginout value error in op7");
+ }
+ }
+
+ void call_op8()
+ {
+ boolean argin;
+ org.omg.CORBA.BooleanHolder argout;
+ argout = new org.omg.CORBA.BooleanHolder();
+
+ org.omg.CORBA.BooleanHolder arginout;
+ arginout = new org.omg.CORBA.BooleanHolder();
+
+ boolean _ret;
+ argin = false;
+ arginout.value = false;
+ try
+ {
+ _ret = target.op8(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op8");
+ return;
+ }
+ if (!(_ret == true))
+ {
+ fail("_ret value error in op8");
+ }
+ if (!(argout.value == true))
+ {
+ fail("argout value error in op8");
+ }
+ if (!(arginout.value == true))
+ {
+ fail("arginout value error in op8");
+ }
+ }
+
+ void call_op9()
+ {
+ byte argin;
+ org.omg.CORBA.ByteHolder argout;
+ argout = new org.omg.CORBA.ByteHolder();
+
+ org.omg.CORBA.ByteHolder arginout;
+ arginout = new org.omg.CORBA.ByteHolder();
+
+ byte _ret;
+ argin = 10;
+ arginout.value = 10;
+ try
+ {
+ _ret = target.op9(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op9");
+ return;
+ }
+ if (!(_ret == 20))
+ {
+ fail("_ret value error in op9");
+ }
+ if (!(argout.value == 20))
+ {
+ fail("argout value error in op9");
+ }
+ if (!(arginout.value == 20))
+ {
+ fail("arginout value error in op9");
+ }
+ }
+
+ void call_op15()
+ {
+ B argin;
+ BHolder argout;
+ argout = new BHolder();
+
+ BHolder arginout;
+ arginout = new BHolder();
+
+ B _ret;
+ argin = B.b1;
+ arginout.value = B.b1;
+ try
+ {
+ _ret = target.op15(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op15");
+ return;
+ }
+ if (!(_ret == B.b2))
+ {
+ fail("_ret value error in op15");
+ }
+ if (!(argout.value == B.b2))
+ {
+ fail("argout value error in op15");
+ }
+ if (!(arginout.value == B.b2))
+ {
+ fail("arginout value error in op15");
+ }
+ }
+
+ void call_op17()
+ {
+ C_union argin;
+ C_unionHolder argout;
+ argout = new C_unionHolder();
+
+ C_unionHolder arginout;
+ arginout = new C_unionHolder();
+
+ C_union _ret;
+ argin = cons_0001();
+ arginout.value = cons_0001();
+ try
+ {
+ _ret = target.op17(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op17");
+ return;
+ }
+ if (!comp_0003(_ret))
+ {
+ fail("_ret value error in op17");
+ }
+ if (!comp_0003(argout.value))
+ {
+ fail("argout value error in op17");
+ }
+ if (!comp_0003(arginout.value))
+ {
+ fail("arginout value error in op17");
+ }
+ }
+
+ void call_op18()
+ {
+ short[] argin;
+ C_sequence_e_shortHolder argout;
+ argout = new C_sequence_e_shortHolder();
+
+ C_sequence_e_shortHolder arginout;
+ arginout = new C_sequence_e_shortHolder();
+
+ short[] _ret;
+ argin = new short[ 2 ];
+ argin [ 0 ] = -100;
+ argin [ 1 ] = -100;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = -100;
+ arginout.value [ 1 ] = -100;
+ try
+ {
+ _ret = target.op18(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op18");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == -200) && (_ret [ 1 ] == -200)))
+ {
+ fail("_ret value error in op18");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == -200) && (argout.value [ 1 ] == -200)
+ ))
+ {
+ fail("argout value error in op18");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -200) &&
+ (arginout.value [ 1 ] == -200)
+ )
+ )
+ {
+ fail("arginout value error in op18");
+ }
+ }
+
+ void call_op19()
+ {
+ short[] argin;
+ C_sequence_e_ushortHolder argout;
+ argout = new C_sequence_e_ushortHolder();
+
+ C_sequence_e_ushortHolder arginout;
+ arginout = new C_sequence_e_ushortHolder();
+
+ short[] _ret;
+ argin = new short[ 2 ];
+ argin [ 0 ] = 100;
+ argin [ 1 ] = 100;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = 100;
+ arginout.value [ 1 ] = 100;
+ try
+ {
+ _ret = target.op19(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op19");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 200) && (_ret [ 1 ] == 200)))
+ {
+ fail("_ret value error in op19");
+ }
+ if (!(true && (argout.value [ 0 ] == 200) && (argout.value [ 1 ] == 200)))
+ {
+ fail("argout value error in op19");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 200) &&
+ (arginout.value [ 1 ] == 200)
+ )
+ )
+ {
+ fail("arginout value error in op19");
+ }
+ }
+
+ void call_op20()
+ {
+ int[] argin;
+ C_sequence_e_longHolder argout;
+ argout = new C_sequence_e_longHolder();
+
+ C_sequence_e_longHolder arginout;
+ arginout = new C_sequence_e_longHolder();
+
+ int[] _ret;
+ argin = new int[ 2 ];
+ argin [ 0 ] = -100000;
+ argin [ 1 ] = -100000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = -100000;
+ arginout.value [ 1 ] = -100000;
+ try
+ {
+ _ret = target.op20(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op20");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == -200000) && (_ret [ 1 ] == -200000)))
+ {
+ fail("_ret value error in op20");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == -200000) &&
+ (argout.value [ 1 ] == -200000)
+ )
+ )
+ {
+ fail("argout value error in op20");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -200000) &&
+ (arginout.value [ 1 ] == -200000)
+ )
+ )
+ {
+ fail("arginout value error in op20");
+ }
+ }
+
+ void call_op21()
+ {
+ int[] argin;
+ C_sequence_e_ulongHolder argout;
+ argout = new C_sequence_e_ulongHolder();
+
+ C_sequence_e_ulongHolder arginout;
+ arginout = new C_sequence_e_ulongHolder();
+
+ int[] _ret;
+ argin = new int[ 2 ];
+ argin [ 0 ] = 100000;
+ argin [ 1 ] = 100000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = 100000;
+ arginout.value [ 1 ] = 100000;
+ try
+ {
+ _ret = target.op21(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op21");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 200000) && (_ret [ 1 ] == 200000)))
+ {
+ fail("_ret value error in op21");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 200000) &&
+ (argout.value [ 1 ] == 200000)
+ )
+ )
+ {
+ fail("argout value error in op21");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 200000) &&
+ (arginout.value [ 1 ] == 200000)
+ )
+ )
+ {
+ fail("arginout value error in op21");
+ }
+ }
+
+ void call_op22()
+ {
+ float[] argin;
+ C_sequence_e_floatHolder argout;
+ argout = new C_sequence_e_floatHolder();
+
+ C_sequence_e_floatHolder arginout;
+ arginout = new C_sequence_e_floatHolder();
+
+ float[] _ret;
+ argin = new float[ 2 ];
+ argin [ 0 ] = 0.123f;
+ argin [ 1 ] = 0.123f;
+ arginout.value = new float[ 2 ];
+ arginout.value [ 0 ] = 0.123f;
+ arginout.value [ 1 ] = 0.123f;
+ try
+ {
+ _ret = target.op22(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op22");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 1.234f) && (_ret [ 1 ] == 1.234f)))
+ {
+ fail("_ret value error in op22");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 1.234f) &&
+ (argout.value [ 1 ] == 1.234f)
+ )
+ )
+ {
+ fail("argout value error in op22");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 1.234f) &&
+ (arginout.value [ 1 ] == 1.234f)
+ )
+ )
+ {
+ fail("arginout value error in op22");
+ }
+ }
+
+ void call_op23()
+ {
+ double[] argin;
+ C_sequence_e_doubleHolder argout;
+ argout = new C_sequence_e_doubleHolder();
+
+ C_sequence_e_doubleHolder arginout;
+ arginout = new C_sequence_e_doubleHolder();
+
+ double[] _ret;
+ argin = new double[ 2 ];
+ argin [ 0 ] = 0.12e3;
+ argin [ 1 ] = 0.12e3;
+ arginout.value = new double[ 2 ];
+ arginout.value [ 0 ] = 0.12e3;
+ arginout.value [ 1 ] = 0.12e3;
+ try
+ {
+ _ret = target.op23(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op23");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 1.23e4) && (_ret [ 1 ] == 1.23e4)))
+ {
+ fail("_ret value error in op23");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 1.23e4) &&
+ (argout.value [ 1 ] == 1.23e4)
+ )
+ )
+ {
+ fail("argout value error in op23");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 1.23e4) &&
+ (arginout.value [ 1 ] == 1.23e4)
+ )
+ )
+ {
+ fail("arginout value error in op23");
+ }
+ }
+
+ void call_op24()
+ {
+ char[] argin;
+ C_sequence_e_charHolder argout;
+ argout = new C_sequence_e_charHolder();
+
+ C_sequence_e_charHolder arginout;
+ arginout = new C_sequence_e_charHolder();
+
+ char[] _ret;
+ argin = new char[ 2 ];
+ argin [ 0 ] = 'a';
+ argin [ 1 ] = 'a';
+ arginout.value = new char[ 2 ];
+ arginout.value [ 0 ] = 'a';
+ arginout.value [ 1 ] = 'a';
+ try
+ {
+ _ret = target.op24(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op24");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 'b') && (_ret [ 1 ] == 'b')))
+ {
+ fail("_ret value error in op24");
+ }
+ if (!(true && (argout.value [ 0 ] == 'b') && (argout.value [ 1 ] == 'b')))
+ {
+ fail("argout value error in op24");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 'b') &&
+ (arginout.value [ 1 ] == 'b')
+ )
+ )
+ {
+ fail("arginout value error in op24");
+ }
+ }
+
+ void call_op25()
+ {
+ boolean[] argin;
+ C_sequence_e_booleanHolder argout;
+ argout = new C_sequence_e_booleanHolder();
+
+ C_sequence_e_booleanHolder arginout;
+ arginout = new C_sequence_e_booleanHolder();
+
+ boolean[] _ret;
+ argin = new boolean[ 2 ];
+ argin [ 0 ] = false;
+ argin [ 1 ] = false;
+ arginout.value = new boolean[ 2 ];
+ arginout.value [ 0 ] = false;
+ arginout.value [ 1 ] = false;
+ try
+ {
+ _ret = target.op25(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op25");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == true) && (_ret [ 1 ] == true)))
+ {
+ fail("_ret value error in op25");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == true) && (argout.value [ 1 ] == true)
+ ))
+ {
+ fail("argout value error in op25");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == true) &&
+ (arginout.value [ 1 ] == true)
+ )
+ )
+ {
+ fail("arginout value error in op25");
+ }
+ }
+
+ void call_op26()
+ {
+ byte[] argin;
+ C_sequence_e_octetHolder argout;
+ argout = new C_sequence_e_octetHolder();
+
+ C_sequence_e_octetHolder arginout;
+ arginout = new C_sequence_e_octetHolder();
+
+ byte[] _ret;
+ argin = new byte[ 2 ];
+ argin [ 0 ] = 10;
+ argin [ 1 ] = 10;
+ arginout.value = new byte[ 2 ];
+ arginout.value [ 0 ] = 10;
+ arginout.value [ 1 ] = 10;
+ try
+ {
+ _ret = target.op26(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op26");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 20) && (_ret [ 1 ] == 20)))
+ {
+ fail("_ret value error in op26");
+ }
+ if (!(true && (argout.value [ 0 ] == 20) && (argout.value [ 1 ] == 20)))
+ {
+ fail("argout value error in op26");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 20) && (arginout.value [ 1 ] == 20)
+ ))
+ {
+ fail("arginout value error in op26");
+ }
+ }
+
+ void call_op28()
+ {
+ String[] argin;
+ C_sequence_e_stringHolder argout;
+ argout = new C_sequence_e_stringHolder();
+
+ C_sequence_e_stringHolder arginout;
+ arginout = new C_sequence_e_stringHolder();
+
+ String[] _ret;
+ argin = new String[ 2 ];
+ argin [ 0 ] = "abc";
+ argin [ 1 ] = "abc";
+ arginout.value = new String[ 2 ];
+ arginout.value [ 0 ] = "abc";
+ arginout.value [ 1 ] = "abc";
+ try
+ {
+ _ret = target.op28(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op28");
+ return;
+ }
+ if (!(true && (_ret [ 0 ].equals("def")) && (_ret [ 1 ].equals("def"))))
+ {
+ fail("_ret value error in op28");
+ }
+ if (!(
+ true && (argout.value [ 0 ].equals("def")) &&
+ (argout.value [ 1 ].equals("def"))
+ )
+ )
+ {
+ fail("argout value error in op28");
+ }
+ if (!(
+ true && (arginout.value [ 0 ].equals("def")) &&
+ (arginout.value [ 1 ].equals("def"))
+ )
+ )
+ {
+ fail("arginout value error in op28");
+ }
+ }
+
+ void call_op32()
+ {
+ short[] argin;
+ C_array_e_shortHolder argout;
+ argout = new C_array_e_shortHolder();
+
+ C_array_e_shortHolder arginout;
+ arginout = new C_array_e_shortHolder();
+
+ short[] _ret;
+ argin = new short[ 2 ];
+ argin [ 0 ] = -100;
+ argin [ 1 ] = -100;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = -100;
+ arginout.value [ 1 ] = -100;
+ try
+ {
+ _ret = target.op32(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op32");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == -200) && (_ret [ 1 ] == -200)))
+ {
+ fail("_ret value error in op32");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == -200) && (argout.value [ 1 ] == -200)
+ ))
+ {
+ fail("argout value error in op32");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -200) &&
+ (arginout.value [ 1 ] == -200)
+ )
+ )
+ {
+ fail("arginout value error in op32");
+ }
+ }
+
+ void call_op33()
+ {
+ short[] argin;
+ C_array_e_ushortHolder argout;
+ argout = new C_array_e_ushortHolder();
+
+ C_array_e_ushortHolder arginout;
+ arginout = new C_array_e_ushortHolder();
+
+ short[] _ret;
+ argin = new short[ 2 ];
+ argin [ 0 ] = 100;
+ argin [ 1 ] = 100;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = 100;
+ arginout.value [ 1 ] = 100;
+ try
+ {
+ _ret = target.op33(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op33");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 200) && (_ret [ 1 ] == 200)))
+ {
+ fail("_ret value error in op33");
+ }
+ if (!(true && (argout.value [ 0 ] == 200) && (argout.value [ 1 ] == 200)))
+ {
+ fail("argout value error in op33");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 200) &&
+ (arginout.value [ 1 ] == 200)
+ )
+ )
+ {
+ fail("arginout value error in op33");
+ }
+ }
+
+ void call_op34()
+ {
+ int[] argin;
+ C_array_e_longHolder argout;
+ argout = new C_array_e_longHolder();
+
+ C_array_e_longHolder arginout;
+ arginout = new C_array_e_longHolder();
+
+ int[] _ret;
+ argin = new int[ 2 ];
+ argin [ 0 ] = -100000;
+ argin [ 1 ] = -100000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = -100000;
+ arginout.value [ 1 ] = -100000;
+ try
+ {
+ _ret = target.op34(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op34");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == -200000) && (_ret [ 1 ] == -200000)))
+ {
+ fail("_ret value error in op34");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == -200000) &&
+ (argout.value [ 1 ] == -200000)
+ )
+ )
+ {
+ fail("argout value error in op34");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -200000) &&
+ (arginout.value [ 1 ] == -200000)
+ )
+ )
+ {
+ fail("arginout value error in op34");
+ }
+ }
+
+ void call_op35()
+ {
+ int[] argin;
+ C_array_e_ulongHolder argout;
+ argout = new C_array_e_ulongHolder();
+
+ C_array_e_ulongHolder arginout;
+ arginout = new C_array_e_ulongHolder();
+
+ int[] _ret;
+ argin = new int[ 2 ];
+ argin [ 0 ] = 100000;
+ argin [ 1 ] = 100000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = 100000;
+ arginout.value [ 1 ] = 100000;
+ try
+ {
+ _ret = target.op35(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op35");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 200000) && (_ret [ 1 ] == 200000)))
+ {
+ fail("_ret value error in op35");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 200000) &&
+ (argout.value [ 1 ] == 200000)
+ )
+ )
+ {
+ fail("argout value error in op35");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 200000) &&
+ (arginout.value [ 1 ] == 200000)
+ )
+ )
+ {
+ fail("arginout value error in op35");
+ }
+ }
+
+ void call_op36()
+ {
+ float[] argin;
+ C_array_e_floatHolder argout;
+ argout = new C_array_e_floatHolder();
+
+ C_array_e_floatHolder arginout;
+ arginout = new C_array_e_floatHolder();
+
+ float[] _ret;
+ argin = new float[ 2 ];
+ argin [ 0 ] = 0.123f;
+ argin [ 1 ] = 0.123f;
+ arginout.value = new float[ 2 ];
+ arginout.value [ 0 ] = 0.123f;
+ arginout.value [ 1 ] = 0.123f;
+ try
+ {
+ _ret = target.op36(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op36");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 1.234f) && (_ret [ 1 ] == 1.234f)))
+ {
+ fail("_ret value error in op36");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 1.234f) &&
+ (argout.value [ 1 ] == 1.234f)
+ )
+ )
+ {
+ fail("argout value error in op36");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 1.234f) &&
+ (arginout.value [ 1 ] == 1.234f)
+ )
+ )
+ {
+ fail("arginout value error in op36");
+ }
+ }
+
+ void call_op37()
+ {
+ double[] argin;
+ C_array_e_doubleHolder argout;
+ argout = new C_array_e_doubleHolder();
+
+ C_array_e_doubleHolder arginout;
+ arginout = new C_array_e_doubleHolder();
+
+ double[] _ret;
+ argin = new double[ 2 ];
+ argin [ 0 ] = 0.12e3;
+ argin [ 1 ] = 0.12e3;
+ arginout.value = new double[ 2 ];
+ arginout.value [ 0 ] = 0.12e3;
+ arginout.value [ 1 ] = 0.12e3;
+ try
+ {
+ _ret = target.op37(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op37");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 1.23e4) && (_ret [ 1 ] == 1.23e4)))
+ {
+ fail("_ret value error in op37");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == 1.23e4) &&
+ (argout.value [ 1 ] == 1.23e4)
+ )
+ )
+ {
+ fail("argout value error in op37");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 1.23e4) &&
+ (arginout.value [ 1 ] == 1.23e4)
+ )
+ )
+ {
+ fail("arginout value error in op37");
+ }
+ }
+
+ void call_op38()
+ {
+ char[] argin;
+ C_array_e_charHolder argout;
+ argout = new C_array_e_charHolder();
+
+ C_array_e_charHolder arginout;
+ arginout = new C_array_e_charHolder();
+
+ char[] _ret;
+ argin = new char[ 2 ];
+ argin [ 0 ] = 'a';
+ argin [ 1 ] = 'a';
+ arginout.value = new char[ 2 ];
+ arginout.value [ 0 ] = 'a';
+ arginout.value [ 1 ] = 'a';
+ try
+ {
+ _ret = target.op38(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op38");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 'b') && (_ret [ 1 ] == 'b')))
+ {
+ fail("_ret value error in op38");
+ }
+ if (!(true && (argout.value [ 0 ] == 'b') && (argout.value [ 1 ] == 'b')))
+ {
+ fail("argout value error in op38");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 'b') &&
+ (arginout.value [ 1 ] == 'b')
+ )
+ )
+ {
+ fail("arginout value error in op38");
+ }
+ }
+
+ void call_op39()
+ {
+ boolean[] argin;
+ C_array_e_booleanHolder argout;
+ argout = new C_array_e_booleanHolder();
+
+ C_array_e_booleanHolder arginout;
+ arginout = new C_array_e_booleanHolder();
+
+ boolean[] _ret;
+ argin = new boolean[ 2 ];
+ argin [ 0 ] = false;
+ argin [ 1 ] = false;
+ arginout.value = new boolean[ 2 ];
+ arginout.value [ 0 ] = false;
+ arginout.value [ 1 ] = false;
+ try
+ {
+ _ret = target.op39(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op39");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == true) && (_ret [ 1 ] == true)))
+ {
+ fail("_ret value error in op39");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == true) && (argout.value [ 1 ] == true)
+ ))
+ {
+ fail("argout value error in op39");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == true) &&
+ (arginout.value [ 1 ] == true)
+ )
+ )
+ {
+ fail("arginout value error in op39");
+ }
+ }
+
+ void call_op40()
+ {
+ byte[] argin;
+ C_array_e_octetHolder argout;
+ argout = new C_array_e_octetHolder();
+
+ C_array_e_octetHolder arginout;
+ arginout = new C_array_e_octetHolder();
+
+ byte[] _ret;
+ argin = new byte[ 2 ];
+ argin [ 0 ] = 10;
+ argin [ 1 ] = 10;
+ arginout.value = new byte[ 2 ];
+ arginout.value [ 0 ] = 10;
+ arginout.value [ 1 ] = 10;
+ try
+ {
+ _ret = target.op40(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op40");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == 20) && (_ret [ 1 ] == 20)))
+ {
+ fail("_ret value error in op40");
+ }
+ if (!(true && (argout.value [ 0 ] == 20) && (argout.value [ 1 ] == 20)))
+ {
+ fail("argout value error in op40");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 20) && (arginout.value [ 1 ] == 20)
+ ))
+ {
+ fail("arginout value error in op40");
+ }
+ }
+
+ void call_op42()
+ {
+ String[] argin;
+ C_array_e_stringHolder argout;
+ argout = new C_array_e_stringHolder();
+
+ C_array_e_stringHolder arginout;
+ arginout = new C_array_e_stringHolder();
+
+ String[] _ret;
+ argin = new String[ 2 ];
+ argin [ 0 ] = "abc";
+ argin [ 1 ] = "abc";
+ arginout.value = new String[ 2 ];
+ arginout.value [ 0 ] = "abc";
+ arginout.value [ 1 ] = "abc";
+ try
+ {
+ _ret = target.op42(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op42");
+ return;
+ }
+ if (!(true && (_ret [ 0 ].equals("def")) && (_ret [ 1 ].equals("def"))))
+ {
+ fail("_ret value error in op42");
+ }
+ if (!(
+ true && (argout.value [ 0 ].equals("def")) &&
+ (argout.value [ 1 ].equals("def"))
+ )
+ )
+ {
+ fail("argout value error in op42");
+ }
+ if (!(
+ true && (arginout.value [ 0 ].equals("def")) &&
+ (arginout.value [ 1 ].equals("def"))
+ )
+ )
+ {
+ fail("arginout value error in op42");
+ }
+ }
+
+ void call_op46()
+ {
+ D_d_short argin;
+ D_d_shortHolder argout;
+ argout = new D_d_shortHolder();
+
+ D_d_shortHolder arginout;
+ arginout = new D_d_shortHolder();
+
+ D_d_short _ret;
+ argin = cons_0002();
+ arginout.value = cons_0002();
+ try
+ {
+ _ret = target.op46(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op46");
+ return;
+ }
+ if (!comp_0006(_ret))
+ {
+ fail("_ret value error in op46");
+ }
+ if (!comp_0006(argout.value))
+ {
+ fail("argout value error in op46");
+ }
+ if (!comp_0006(arginout.value))
+ {
+ fail("arginout value error in op46");
+ }
+ }
+
+ void call_op47()
+ {
+ D_d_ushort argin;
+ D_d_ushortHolder argout;
+ argout = new D_d_ushortHolder();
+
+ D_d_ushortHolder arginout;
+ arginout = new D_d_ushortHolder();
+
+ D_d_ushort _ret;
+ argin = cons_0003();
+ arginout.value = cons_0003();
+ try
+ {
+ _ret = target.op47(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op47");
+ return;
+ }
+ if (!comp_0007(_ret))
+ {
+ fail("_ret value error in op47");
+ }
+ if (!comp_0007(argout.value))
+ {
+ fail("argout value error in op47");
+ }
+ if (!comp_0007(arginout.value))
+ {
+ fail("arginout value error in op47");
+ }
+ }
+
+ void call_op48()
+ {
+ D_d_long argin;
+ D_d_longHolder argout;
+ argout = new D_d_longHolder();
+
+ D_d_longHolder arginout;
+ arginout = new D_d_longHolder();
+
+ D_d_long _ret;
+ argin = cons_0004();
+ arginout.value = cons_0004();
+ try
+ {
+ _ret = target.op48(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op48");
+ return;
+ }
+ if (!comp_0008(_ret))
+ {
+ fail("_ret value error in op48");
+ }
+ if (!comp_0008(argout.value))
+ {
+ fail("argout value error in op48");
+ }
+ if (!comp_0008(arginout.value))
+ {
+ fail("arginout value error in op48");
+ }
+ }
+
+ void call_op49()
+ {
+ D_d_ulong argin;
+ D_d_ulongHolder argout;
+ argout = new D_d_ulongHolder();
+
+ D_d_ulongHolder arginout;
+ arginout = new D_d_ulongHolder();
+
+ D_d_ulong _ret;
+ argin = cons_0005();
+ arginout.value = cons_0005();
+ try
+ {
+ _ret = target.op49(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op49");
+ return;
+ }
+ if (!comp_0009(_ret))
+ {
+ fail("_ret value error in op49");
+ }
+ if (!comp_0009(argout.value))
+ {
+ fail("argout value error in op49");
+ }
+ if (!comp_0009(arginout.value))
+ {
+ fail("arginout value error in op49");
+ }
+ }
+
+ void call_op50()
+ {
+ D_d_char argin;
+ D_d_charHolder argout;
+ argout = new D_d_charHolder();
+
+ D_d_charHolder arginout;
+ arginout = new D_d_charHolder();
+
+ D_d_char _ret;
+ argin = cons_0006();
+ arginout.value = cons_0006();
+ try
+ {
+ _ret = target.op50(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op50");
+ return;
+ }
+ if (!comp_0010(_ret))
+ {
+ fail("_ret value error in op50");
+ }
+ if (!comp_0010(argout.value))
+ {
+ fail("argout value error in op50");
+ }
+ if (!comp_0010(arginout.value))
+ {
+ fail("arginout value error in op50");
+ }
+ }
+
+ void call_op51()
+ {
+ D_d_boolean argin;
+ D_d_booleanHolder argout;
+ argout = new D_d_booleanHolder();
+
+ D_d_booleanHolder arginout;
+ arginout = new D_d_booleanHolder();
+
+ D_d_boolean _ret;
+ argin = cons_0007();
+ arginout.value = cons_0007();
+ try
+ {
+ _ret = target.op51(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op51");
+ return;
+ }
+ if (!comp_0011(_ret))
+ {
+ fail("_ret value error in op51");
+ }
+ if (!comp_0011(argout.value))
+ {
+ fail("argout value error in op51");
+ }
+ if (!comp_0011(arginout.value))
+ {
+ fail("arginout value error in op51");
+ }
+ }
+
+ void call_op52()
+ {
+ D_d_B argin;
+ D_d_BHolder argout;
+ argout = new D_d_BHolder();
+
+ D_d_BHolder arginout;
+ arginout = new D_d_BHolder();
+
+ D_d_B _ret;
+ argin = cons_0008();
+ arginout.value = cons_0008();
+ try
+ {
+ _ret = target.op52(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op52");
+ return;
+ }
+ if (!comp_0012(_ret))
+ {
+ fail("_ret value error in op52");
+ }
+ if (!comp_0012(argout.value))
+ {
+ fail("argout value error in op52");
+ }
+ if (!comp_0012(arginout.value))
+ {
+ fail("arginout value error in op52");
+ }
+ }
+
+ void call_op53()
+ {
+ E_struct argin;
+ E_structHolder argout;
+ argout = new E_structHolder();
+
+ E_structHolder arginout;
+ arginout = new E_structHolder();
+
+ E_struct _ret;
+ argin = cons_0009();
+ arginout.value = cons_0009();
+ try
+ {
+ _ret = target.op53(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op53");
+ return;
+ }
+ if (!comp_0013(_ret))
+ {
+ fail("_ret value error in op53");
+ }
+ if (!comp_0013(argout.value))
+ {
+ fail("argout value error in op53");
+ }
+ if (!comp_0013(arginout.value))
+ {
+ fail("arginout value error in op53");
+ }
+ }
+
+ void call_op54()
+ {
+ E_union argin;
+ E_unionHolder argout;
+ argout = new E_unionHolder();
+
+ E_unionHolder arginout;
+ arginout = new E_unionHolder();
+
+ E_union _ret;
+ argin = cons_0010();
+ arginout.value = cons_0010();
+ try
+ {
+ _ret = target.op54(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op54");
+ return;
+ }
+ if (!comp_0014(_ret))
+ {
+ fail("_ret value error in op54");
+ }
+ if (!comp_0014(argout.value))
+ {
+ fail("argout value error in op54");
+ }
+ if (!comp_0014(arginout.value))
+ {
+ fail("arginout value error in op54");
+ }
+ }
+
+ void call_op55()
+ {
+ B[] argin;
+ E_sequenceHolder argout;
+ argout = new E_sequenceHolder();
+
+ E_sequenceHolder arginout;
+ arginout = new E_sequenceHolder();
+
+ B[] _ret;
+ argin = new B[ 2 ];
+ argin [ 0 ] = B.b1;
+ argin [ 1 ] = B.b1;
+ arginout.value = new B[ 2 ];
+ arginout.value [ 0 ] = B.b1;
+ arginout.value [ 1 ] = B.b1;
+ try
+ {
+ _ret = target.op55(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op55");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == B.b2) && (_ret [ 1 ] == B.b2)))
+ {
+ fail("_ret value error in op55");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == B.b2) && (argout.value [ 1 ] == B.b2)
+ ))
+ {
+ fail("argout value error in op55");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == B.b2) &&
+ (arginout.value [ 1 ] == B.b2)
+ )
+ )
+ {
+ fail("arginout value error in op55");
+ }
+ }
+
+ void call_op56()
+ {
+ B[] argin;
+ E_arrayHolder argout;
+ argout = new E_arrayHolder();
+
+ E_arrayHolder arginout;
+ arginout = new E_arrayHolder();
+
+ B[] _ret;
+ argin = new B[ 2 ];
+ argin [ 0 ] = B.b1;
+ argin [ 1 ] = B.b1;
+ arginout.value = new B[ 2 ];
+ arginout.value [ 0 ] = B.b1;
+ arginout.value [ 1 ] = B.b1;
+ try
+ {
+ _ret = target.op56(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op56");
+ return;
+ }
+ if (!(true && (_ret [ 0 ] == B.b2) && (_ret [ 1 ] == B.b2)))
+ {
+ fail("_ret value error in op56");
+ }
+ if (!(
+ true && (argout.value [ 0 ] == B.b2) && (argout.value [ 1 ] == B.b2)
+ ))
+ {
+ fail("argout value error in op56");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == B.b2) &&
+ (arginout.value [ 1 ] == B.b2)
+ )
+ )
+ {
+ fail("arginout value error in op56");
+ }
+ }
+
+ void call_op60()
+ {
+ C_union[] argin;
+ F_sequence_e_c_unionHolder argout;
+ argout = new F_sequence_e_c_unionHolder();
+
+ F_sequence_e_c_unionHolder arginout;
+ arginout = new F_sequence_e_c_unionHolder();
+
+ C_union[] _ret;
+ argin = new C_union[ 2 ];
+ argin [ 0 ] = cons_0017();
+ argin [ 1 ] = cons_0017();
+ arginout.value = new C_union[ 2 ];
+ arginout.value [ 0 ] = cons_0017();
+ arginout.value [ 1 ] = cons_0017();
+ try
+ {
+ _ret = target.op60(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op60");
+ return;
+ }
+ if (!(true && comp_0023(_ret [ 0 ]) && comp_0023(_ret [ 1 ])))
+ {
+ fail("_ret value error in op60");
+ }
+ if (!(
+ true && comp_0023(argout.value [ 0 ]) &&
+ comp_0023(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op60");
+ }
+ if (!(
+ true && comp_0023(arginout.value [ 0 ]) &&
+ comp_0023(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op60");
+ }
+ }
+
+ void call_op90()
+ {
+ C_union[] argin;
+ F_array_e_c_unionHolder argout;
+ argout = new F_array_e_c_unionHolder();
+
+ F_array_e_c_unionHolder arginout;
+ arginout = new F_array_e_c_unionHolder();
+
+ C_union[] _ret;
+ argin = new C_union[ 2 ];
+ argin [ 0 ] = cons_0019();
+ argin [ 1 ] = cons_0019();
+ arginout.value = new C_union[ 2 ];
+ arginout.value [ 0 ] = cons_0019();
+ arginout.value [ 1 ] = cons_0019();
+ try
+ {
+ _ret = target.op90(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op90");
+ return;
+ }
+ if (!(true && comp_0026(_ret [ 0 ]) && comp_0026(_ret [ 1 ])))
+ {
+ fail("_ret value error in op90");
+ }
+ if (!(
+ true && comp_0026(argout.value [ 0 ]) &&
+ comp_0026(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op90");
+ }
+ if (!(
+ true && comp_0026(arginout.value [ 0 ]) &&
+ comp_0026(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op90");
+ }
+ }
+
+ void call_op119()
+ {
+ G_struct argin;
+ G_structHolder argout;
+ argout = new G_structHolder();
+
+ G_structHolder arginout;
+ arginout = new G_structHolder();
+
+ G_struct _ret;
+ argin = cons_0020();
+ arginout.value = cons_0020();
+ try
+ {
+ _ret = target.op119(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op119");
+ return;
+ }
+ if (!comp_0027(_ret))
+ {
+ fail("_ret value error in op119");
+ }
+ if (!comp_0027(argout.value))
+ {
+ fail("argout value error in op119");
+ }
+ if (!comp_0027(arginout.value))
+ {
+ fail("arginout value error in op119");
+ }
+ }
+
+ void call_op120()
+ {
+ G_union argin;
+ G_unionHolder argout;
+ argout = new G_unionHolder();
+
+ G_unionHolder arginout;
+ arginout = new G_unionHolder();
+
+ G_union _ret;
+ argin = cons_0023();
+ arginout.value = cons_0023();
+ try
+ {
+ _ret = target.op120(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op120");
+ return;
+ }
+ if (!comp_0030(_ret))
+ {
+ fail("_ret value error in op120");
+ }
+ if (!comp_0030(argout.value))
+ {
+ fail("argout value error in op120");
+ }
+ if (!comp_0030(arginout.value))
+ {
+ fail("arginout value error in op120");
+ }
+ }
+
+ void call_op121()
+ {
+ E_struct[] argin;
+ G_sequence_e_e_structHolder argout;
+ argout = new G_sequence_e_e_structHolder();
+
+ G_sequence_e_e_structHolder arginout;
+ arginout = new G_sequence_e_e_structHolder();
+
+ E_struct[] _ret;
+ argin = new E_struct[ 2 ];
+ argin [ 0 ] = cons_0025();
+ argin [ 1 ] = cons_0025();
+ arginout.value = new E_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0025();
+ arginout.value [ 1 ] = cons_0025();
+ try
+ {
+ _ret = target.op121(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op121");
+ return;
+ }
+ if (!(true && comp_0032(_ret [ 0 ]) && comp_0032(_ret [ 1 ])))
+ {
+ fail("_ret value error in op121");
+ }
+ if (!(
+ true && comp_0032(argout.value [ 0 ]) &&
+ comp_0032(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op121");
+ }
+ if (!(
+ true && comp_0032(arginout.value [ 0 ]) &&
+ comp_0032(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op121");
+ }
+ }
+
+ void call_op122()
+ {
+ E_union[] argin;
+ G_sequence_e_e_unionHolder argout;
+ argout = new G_sequence_e_e_unionHolder();
+
+ G_sequence_e_e_unionHolder arginout;
+ arginout = new G_sequence_e_e_unionHolder();
+
+ E_union[] _ret;
+ argin = new E_union[ 2 ];
+ argin [ 0 ] = cons_0026();
+ argin [ 1 ] = cons_0026();
+ arginout.value = new E_union[ 2 ];
+ arginout.value [ 0 ] = cons_0026();
+ arginout.value [ 1 ] = cons_0026();
+ try
+ {
+ _ret = target.op122(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op122");
+ return;
+ }
+ if (!(true && comp_0033(_ret [ 0 ]) && comp_0033(_ret [ 1 ])))
+ {
+ fail("_ret value error in op122");
+ }
+ if (!(
+ true && comp_0033(argout.value [ 0 ]) &&
+ comp_0033(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op122");
+ }
+ if (!(
+ true && comp_0033(arginout.value [ 0 ]) &&
+ comp_0033(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op122");
+ }
+ }
+
+ void call_op125()
+ {
+ E_struct[] argin;
+ G_array_e_e_structHolder argout;
+ argout = new G_array_e_e_structHolder();
+
+ G_array_e_e_structHolder arginout;
+ arginout = new G_array_e_e_structHolder();
+
+ E_struct[] _ret;
+ argin = new E_struct[ 2 ];
+ argin [ 0 ] = cons_0027();
+ argin [ 1 ] = cons_0027();
+ arginout.value = new E_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0027();
+ arginout.value [ 1 ] = cons_0027();
+ try
+ {
+ _ret = target.op125(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op125");
+ return;
+ }
+ if (!(true && comp_0034(_ret [ 0 ]) && comp_0034(_ret [ 1 ])))
+ {
+ fail("_ret value error in op125");
+ }
+ if (!(
+ true && comp_0034(argout.value [ 0 ]) &&
+ comp_0034(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op125");
+ }
+ if (!(
+ true && comp_0034(arginout.value [ 0 ]) &&
+ comp_0034(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op125");
+ }
+ }
+
+ void call_op126()
+ {
+ E_union[] argin;
+ G_array_e_e_unionHolder argout;
+ argout = new G_array_e_e_unionHolder();
+
+ G_array_e_e_unionHolder arginout;
+ arginout = new G_array_e_e_unionHolder();
+
+ E_union[] _ret;
+ argin = new E_union[ 2 ];
+ argin [ 0 ] = cons_0028();
+ argin [ 1 ] = cons_0028();
+ arginout.value = new E_union[ 2 ];
+ arginout.value [ 0 ] = cons_0028();
+ arginout.value [ 1 ] = cons_0028();
+ try
+ {
+ _ret = target.op126(argin, argout, arginout);
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in op126");
+ return;
+ }
+ if (!(true && comp_0035(_ret [ 0 ]) && comp_0035(_ret [ 1 ])))
+ {
+ fail("_ret value error in op126");
+ }
+ if (!(
+ true && comp_0035(argout.value [ 0 ]) &&
+ comp_0035(argout.value [ 1 ])
+ )
+ )
+ {
+ fail("argout value error in op126");
+ }
+ if (!(
+ true && comp_0035(arginout.value [ 0 ]) &&
+ comp_0035(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op126");
+ }
+ }
+
+ void call_excop1()
+ {
+ try
+ {
+ target.excop1();
+ }
+ catch (A_except1 _exc)
+ {
+ if (!comp_0042(_exc))
+ {
+ fail("_exc value error in excop1");
+ }
+ return;
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in excop1");
+ return;
+ }
+ fail("no exception raised in excop1");
+ }
+
+ void call_excop3()
+ {
+ try
+ {
+ target.excop3();
+ }
+ catch (B_except _exc)
+ {
+ if (!comp_0045(_exc))
+ {
+ fail("_exc value error in excop3");
+ }
+ return;
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in excop3");
+ return;
+ }
+ fail("no exception raised in excop3");
+ }
+
+ void call_excop5()
+ {
+ try
+ {
+ target.excop5();
+ }
+ catch (D_except _exc)
+ {
+ if (!comp_0050(_exc))
+ {
+ fail("_exc value error in excop5");
+ }
+ return;
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in excop5");
+ return;
+ }
+ fail("no exception raised in excop5");
+ }
+
+ void call_excop6()
+ {
+ try
+ {
+ target.excop6();
+ }
+ catch (E_except _exc)
+ {
+ if (!comp_0058(_exc))
+ {
+ fail("_exc value error in excop6");
+ }
+ return;
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in excop6");
+ return;
+ }
+ fail("no exception raised in excop6");
+ }
+
+ void call_excop10()
+ {
+ try
+ {
+ target.excop10();
+ }
+ catch (G_except _exc)
+ {
+ if (!comp_0075(_exc))
+ {
+ fail("_exc value error in excop10");
+ }
+ return;
+ }
+ catch (Exception _exc)
+ {
+ _exc.printStackTrace(System.out);
+ fail("unexpected exception in excop10");
+ return;
+ }
+ fail("no exception raised in excop10");
+ }
+
+ public void run_all(TestHarness harness)
+ {
+ h = harness;
+
+ call_op1();
+ call_op2();
+ call_op3();
+ call_op4();
+ call_op5();
+ call_op6();
+ call_op7();
+ call_op8();
+ call_op9();
+ call_op15();
+ call_op17();
+ call_op18();
+ call_op19();
+ call_op20();
+ call_op21();
+ call_op22();
+ call_op23();
+ call_op24();
+ call_op25();
+ call_op26();
+ call_op28();
+ call_op32();
+ call_op33();
+ call_op34();
+ call_op35();
+ call_op36();
+ call_op37();
+ call_op38();
+ call_op39();
+ call_op40();
+ call_op42();
+ call_op46();
+ call_op47();
+ call_op48();
+ call_op49();
+ call_op50();
+ call_op51();
+ call_op52();
+ call_op53();
+ call_op54();
+ call_op55();
+ call_op56();
+ call_op60();
+ call_op90();
+ call_op119();
+ call_op120();
+ call_op121();
+ call_op122();
+ call_op125();
+ call_op126();
+ call_excop1();
+ call_excop3();
+ call_excop5();
+ call_excop6();
+ call_excop10();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java
new file mode 100644
index 00000000..0dce1f75
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Helper.java
@@ -0,0 +1,102 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public abstract class rf11Helper
+{
+ private static String _id = "IDL:gnu/testlet/org/omg/CORBA/ORB/RF11/rf11:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, NEC_RF11 that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static NEC_RF11 extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode =
+ org.omg.CORBA.ORB.init().create_interface_tc(rf11Helper.id(), "rf11");
+ }
+ return __typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static NEC_RF11 read(org.omg.CORBA.portable.InputStream istream)
+ {
+ return narrow(istream.read_Object(_rf11Stub.class));
+ }
+
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ NEC_RF11 value
+ )
+ {
+ ostream.write_Object((org.omg.CORBA.Object) value);
+ }
+
+ public static NEC_RF11 narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof NEC_RF11)
+ return (NEC_RF11) obj;
+ else if (!obj._is_a(id()))
+ throw new org.omg.CORBA.BAD_PARAM();
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate =
+ ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate();
+ return new _rf11Stub(delegate);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Holder.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Holder.java
new file mode 100644
index 00000000..989642a4
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Holder.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public final class rf11Holder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public NEC_RF11 value = null;
+
+ public rf11Holder()
+ {
+ }
+
+ public rf11Holder(NEC_RF11 initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = rf11Helper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ rf11Helper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return rf11Helper.type();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java
new file mode 100644
index 00000000..f0975c57
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Operations.java
@@ -0,0 +1,322 @@
+// Tags: not-a-test
+// Copyright (c) 2000, 2001 NEC Corporation.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+public interface rf11Operations
+{
+ // A
+ short op1(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ );
+
+ short op2(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ );
+
+ int op3(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ );
+
+ int op4(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ );
+
+ float op5(float argin, org.omg.CORBA.FloatHolder argout,
+ org.omg.CORBA.FloatHolder arginout
+ );
+
+ double op6(double argin, org.omg.CORBA.DoubleHolder argout,
+ org.omg.CORBA.DoubleHolder arginout
+ );
+
+ char op7(char argin, org.omg.CORBA.CharHolder argout,
+ org.omg.CORBA.CharHolder arginout
+ );
+
+ boolean op8(boolean argin, org.omg.CORBA.BooleanHolder argout,
+ org.omg.CORBA.BooleanHolder arginout
+ );
+
+ byte op9(byte argin, org.omg.CORBA.ByteHolder argout,
+ org.omg.CORBA.ByteHolder arginout
+ );
+
+ org.omg.CORBA.Any op10(org.omg.CORBA.Any argin,
+ org.omg.CORBA.AnyHolder argout,
+ org.omg.CORBA.AnyHolder arginout
+ );
+
+ String op11(String argin, org.omg.CORBA.StringHolder argout,
+ org.omg.CORBA.StringHolder arginout
+ );
+
+ org.omg.CORBA.Object op12(org.omg.CORBA.Object argin,
+ org.omg.CORBA.ObjectHolder argout,
+ org.omg.CORBA.ObjectHolder arginout
+ );
+
+ // B
+ B op15(B argin, BHolder argout, BHolder arginout);
+
+ // C
+ C_struct op16(C_struct argin, C_structHolder argout, C_structHolder arginout);
+
+ C_union op17(C_union argin, C_unionHolder argout, C_unionHolder arginout);
+
+ short[] op18(short[] argin, C_sequence_e_shortHolder argout,
+ C_sequence_e_shortHolder arginout
+ );
+
+ short[] op19(short[] argin, C_sequence_e_ushortHolder argout,
+ C_sequence_e_ushortHolder arginout
+ );
+
+ int[] op20(int[] argin, C_sequence_e_longHolder argout,
+ C_sequence_e_longHolder arginout
+ );
+
+ int[] op21(int[] argin, C_sequence_e_ulongHolder argout,
+ C_sequence_e_ulongHolder arginout
+ );
+
+ float[] op22(float[] argin, C_sequence_e_floatHolder argout,
+ C_sequence_e_floatHolder arginout
+ );
+
+ double[] op23(double[] argin, C_sequence_e_doubleHolder argout,
+ C_sequence_e_doubleHolder arginout
+ );
+
+ char[] op24(char[] argin, C_sequence_e_charHolder argout,
+ C_sequence_e_charHolder arginout
+ );
+
+ boolean[] op25(boolean[] argin, C_sequence_e_booleanHolder argout,
+ C_sequence_e_booleanHolder arginout
+ );
+
+ byte[] op26(byte[] argin, C_sequence_e_octetHolder argout,
+ C_sequence_e_octetHolder arginout
+ );
+
+ org.omg.CORBA.Any[] op27(org.omg.CORBA.Any[] argin,
+ C_sequence_e_anyHolder argout,
+ C_sequence_e_anyHolder arginout
+ );
+
+ String[] op28(String[] argin, C_sequence_e_stringHolder argout,
+ C_sequence_e_stringHolder arginout
+ );
+
+ org.omg.CORBA.Object[] op29(org.omg.CORBA.Object[] argin,
+ C_sequence_e_ObjectHolder argout,
+ C_sequence_e_ObjectHolder arginout
+ );
+
+ short[] op32(short[] argin, C_array_e_shortHolder argout,
+ C_array_e_shortHolder arginout
+ );
+
+ short[] op33(short[] argin, C_array_e_ushortHolder argout,
+ C_array_e_ushortHolder arginout
+ );
+
+ int[] op34(int[] argin, C_array_e_longHolder argout,
+ C_array_e_longHolder arginout
+ );
+
+ int[] op35(int[] argin, C_array_e_ulongHolder argout,
+ C_array_e_ulongHolder arginout
+ );
+
+ float[] op36(float[] argin, C_array_e_floatHolder argout,
+ C_array_e_floatHolder arginout
+ );
+
+ double[] op37(double[] argin, C_array_e_doubleHolder argout,
+ C_array_e_doubleHolder arginout
+ );
+
+ char[] op38(char[] argin, C_array_e_charHolder argout,
+ C_array_e_charHolder arginout
+ );
+
+ boolean[] op39(boolean[] argin, C_array_e_booleanHolder argout,
+ C_array_e_booleanHolder arginout
+ );
+
+ byte[] op40(byte[] argin, C_array_e_octetHolder argout,
+ C_array_e_octetHolder arginout
+ );
+
+ org.omg.CORBA.Any[] op41(org.omg.CORBA.Any[] argin,
+ C_array_e_anyHolder argout,
+ C_array_e_anyHolder arginout
+ );
+
+ String[] op42(String[] argin, C_array_e_stringHolder argout,
+ C_array_e_stringHolder arginout
+ );
+
+ org.omg.CORBA.Object[] op43(org.omg.CORBA.Object[] argin,
+ C_array_e_ObjectHolder argout,
+ C_array_e_ObjectHolder arginout
+ );
+
+ // D
+ D_d_short op46(D_d_short argin, D_d_shortHolder argout,
+ D_d_shortHolder arginout
+ );
+
+ D_d_ushort op47(D_d_ushort argin, D_d_ushortHolder argout,
+ D_d_ushortHolder arginout
+ );
+
+ D_d_long op48(D_d_long argin, D_d_longHolder argout, D_d_longHolder arginout);
+
+ D_d_ulong op49(D_d_ulong argin, D_d_ulongHolder argout,
+ D_d_ulongHolder arginout
+ );
+
+ D_d_char op50(D_d_char argin, D_d_charHolder argout, D_d_charHolder arginout);
+
+ D_d_boolean op51(D_d_boolean argin, D_d_booleanHolder argout,
+ D_d_booleanHolder arginout
+ );
+
+ D_d_B op52(D_d_B argin, D_d_BHolder argout, D_d_BHolder arginout);
+
+ // E
+ E_struct op53(E_struct argin, E_structHolder argout, E_structHolder arginout);
+
+ E_union op54(E_union argin, E_unionHolder argout, E_unionHolder arginout);
+
+ B[] op55(B[] argin, E_sequenceHolder argout, E_sequenceHolder arginout);
+
+ B[] op56(B[] argin, E_arrayHolder argout, E_arrayHolder arginout);
+
+ // F
+ F_struct op57(F_struct argin, F_structHolder argout, F_structHolder arginout);
+
+ F_union op58(F_union argin, F_unionHolder argout, F_unionHolder arginout);
+
+ C_struct[] op59(C_struct[] argin, F_sequence_e_c_structHolder argout,
+ F_sequence_e_c_structHolder arginout
+ );
+
+ C_union[] op60(C_union[] argin, F_sequence_e_c_unionHolder argout,
+ F_sequence_e_c_unionHolder arginout
+ );
+
+ C_struct[] op89(C_struct[] argin, F_array_e_c_structHolder argout,
+ F_array_e_c_structHolder arginout
+ );
+
+ C_union[] op90(C_union[] argin, F_array_e_c_unionHolder argout,
+ F_array_e_c_unionHolder arginout
+ );
+
+ // G
+ G_struct op119(G_struct argin, G_structHolder argout, G_structHolder arginout);
+
+ G_union op120(G_union argin, G_unionHolder argout, G_unionHolder arginout);
+
+ E_struct[] op121(E_struct[] argin, G_sequence_e_e_structHolder argout,
+ G_sequence_e_e_structHolder arginout
+ );
+
+ E_union[] op122(E_union[] argin, G_sequence_e_e_unionHolder argout,
+ G_sequence_e_e_unionHolder arginout
+ );
+
+ E_struct[] op125(E_struct[] argin, G_array_e_e_structHolder argout,
+ G_array_e_e_structHolder arginout
+ );
+
+ E_union[] op126(E_union[] argin, G_array_e_e_unionHolder argout,
+ G_array_e_e_unionHolder arginout
+ );
+
+ // rest of F
+ F_union op129(F_union argin, F_unionHolder argout, F_unionHolder arginout);
+
+ F_union op130(F_union argin, F_unionHolder argout, F_unionHolder arginout);
+
+ F_union op131(F_union argin, F_unionHolder argout, F_unionHolder arginout);
+
+ // pragma: exception=A_except1
+ void excop1()
+ throws A_except1;
+
+ // pragma: exception=A_except2
+ void excop2()
+ throws A_except2;
+
+ // pragma: exception=B_except
+ void excop3()
+ throws B_except;
+
+ // pragma: exception=C_except
+ void excop4()
+ throws C_except;
+
+ // pragma: exception=D_except
+ void excop5()
+ throws D_except;
+
+ // pragma: exception=E_except
+ void excop6()
+ throws E_except;
+
+ // pragma: exception=F_except1
+ void excop7()
+ throws F_except1;
+
+ // pragma: exception=F_except2
+ void excop8()
+ throws F_except2;
+
+ // pragma: exception=F_except3
+ void excop9()
+ throws F_except3;
+
+ // pragma: exception=G_except
+ void excop10()
+ throws G_except;
+} // interface rf11Operations
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Servant.java b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Servant.java
new file mode 100644
index 00000000..c410f046
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RF11/rf11Servant.java
@@ -0,0 +1,3377 @@
+// Copyright (c) 2000, 2001 NEC Corporation. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. The functionality to test the interoperability specified by the
+// Object Management Group's CORBA/IIOP specification version two (or
+// later versions) must be preserved.
+//
+// 2. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer as the
+// first lines of this file unmodified.
+//
+// 3. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY NEC CORPORATION ``AS IS'' AND ANY EXPRESS
+// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// CVS
+// $Id: rf11Servant.java,v 1.1 2005/06/04 12:00:34 audriusa Exp $
+//
+// common headers
+// ****************************
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+*/
+
+package gnu.testlet.org.omg.CORBA.ORB.RF11;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TCKind;
+
+import java.util.ArrayList;
+
+public class rf11Servant
+ extends _rf11ImplBase
+{
+ /**
+ * The server side error messages are logged into this array.
+ * If both client and server runs in the same virtual machine,
+ * this static field can be later accessed for checking for the
+ * possible server side errors.
+ */
+ public static ArrayList error_messages = new ArrayList();
+ ORB orb;
+ rf11Servant targetobj;
+ NEC_RF11 target;
+
+ public void fail(String why)
+ {
+ error_messages.add(why);
+ }
+
+ //runtime routines
+ boolean comp_0080(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0082(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0081(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0082(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_struct cons_0035()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0083(C_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_short() == -100);
+ }
+
+ C_union cons_0036()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0084(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0085(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0086(D_d_short _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_short cons_0037()
+ {
+ D_d_short _v1;
+ _v1 = new D_d_short();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0087(D_d_ushort _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_ushort cons_0038()
+ {
+ D_d_ushort _v1;
+ _v1 = new D_d_ushort();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0088(D_d_long _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_long cons_0039()
+ {
+ D_d_long _v1;
+ _v1 = new D_d_long();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0089(D_d_ulong _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_ulong cons_0040()
+ {
+ D_d_ulong _v1;
+ _v1 = new D_d_ulong();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0090(D_d_char _v1)
+ {
+ if (_v1.discriminator() != 'a')
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_char cons_0041()
+ {
+ D_d_char _v1;
+ _v1 = new D_d_char();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0091(D_d_boolean _v1)
+ {
+ if (_v1.discriminator() != false)
+ return false;
+ return (_v1.l2() == -100000);
+ }
+
+ D_d_boolean cons_0042()
+ {
+ D_d_boolean _v1;
+ _v1 = new D_d_boolean();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0092(D_d_B _v1)
+ {
+ if (_v1.discriminator() != B.b1)
+ return false;
+ return (_v1.l1() == -100000);
+ }
+
+ D_d_B cons_0043()
+ {
+ D_d_B _v1;
+ _v1 = new D_d_B();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0093(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b1) && (_v1.e_b2 == B.b1));
+ }
+
+ E_struct cons_0044()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ boolean comp_0094(E_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_b1() == B.b1);
+ }
+
+ E_union cons_0045()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0097(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0096(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0097(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0098(C_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_short() == -100);
+ }
+
+ boolean comp_0095(F_struct _v1)
+ {
+ return (true && comp_0096(_v1.e_c_struct) && comp_0098(_v1.e_c_union) &&
+ (
+ true && (_v1.e_c_sequence_e_short [ 0 ] == -100) &&
+ (_v1.e_c_sequence_e_short [ 1 ] == -100)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ushort [ 0 ] == 100) &&
+ (_v1.e_c_sequence_e_ushort [ 1 ] == 100)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_long [ 0 ] == -100000) &&
+ (_v1.e_c_sequence_e_long [ 1 ] == -100000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_ulong [ 0 ] == 100000) &&
+ (_v1.e_c_sequence_e_ulong [ 1 ] == 100000)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_float [ 0 ] == 0.123f) &&
+ (_v1.e_c_sequence_e_float [ 1 ] == 0.123f)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_double [ 0 ] == 0.12e3) &&
+ (_v1.e_c_sequence_e_double [ 1 ] == 0.12e3)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_char [ 0 ] == 'a') &&
+ (_v1.e_c_sequence_e_char [ 1 ] == 'a')
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_boolean [ 0 ] == false) &&
+ (_v1.e_c_sequence_e_boolean [ 1 ] == false)
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_octet [ 0 ] == 10) &&
+ (_v1.e_c_sequence_e_octet [ 1 ] == 10)
+ ) &&
+ (
+ true && comp_0097(_v1.e_c_sequence_e_any [ 0 ]) &&
+ comp_0097(_v1.e_c_sequence_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_string [ 0 ].equals("abc")) &&
+ (_v1.e_c_sequence_e_string [ 1 ].equals("abc"))
+ ) &&
+ (
+ true && (_v1.e_c_sequence_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_sequence_e_Object [ 1 ]._is_equivalent(target))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_short [ 0 ] == -100) &&
+ (_v1.e_c_array_e_short [ 1 ] == -100)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ushort [ 0 ] == 100) &&
+ (_v1.e_c_array_e_ushort [ 1 ] == 100)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_long [ 0 ] == -100000) &&
+ (_v1.e_c_array_e_long [ 1 ] == -100000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_ulong [ 0 ] == 100000) &&
+ (_v1.e_c_array_e_ulong [ 1 ] == 100000)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_float [ 0 ] == 0.123f) &&
+ (_v1.e_c_array_e_float [ 1 ] == 0.123f)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_double [ 0 ] == 0.12e3) &&
+ (_v1.e_c_array_e_double [ 1 ] == 0.12e3)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_char [ 0 ] == 'a') &&
+ (_v1.e_c_array_e_char [ 1 ] == 'a')
+ ) &&
+ (
+ true && (_v1.e_c_array_e_boolean [ 0 ] == false) &&
+ (_v1.e_c_array_e_boolean [ 1 ] == false)
+ ) &&
+ (
+ true && (_v1.e_c_array_e_octet [ 0 ] == 10) &&
+ (_v1.e_c_array_e_octet [ 1 ] == 10)
+ ) &&
+ (
+ true && comp_0097(_v1.e_c_array_e_any [ 0 ]) &&
+ comp_0097(_v1.e_c_array_e_any [ 1 ])
+ ) &&
+ (
+ true && (_v1.e_c_array_e_string [ 0 ].equals("abc")) &&
+ (_v1.e_c_array_e_string [ 1 ].equals("abc"))
+ ) &&
+ (
+ true && (_v1.e_c_array_e_Object [ 0 ]._is_equivalent(target)) &&
+ (_v1.e_c_array_e_Object [ 1 ]._is_equivalent(target))
+ ));
+ }
+
+ C_struct cons_0047()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0048()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_struct cons_0046()
+ {
+ F_struct _v1;
+ _v1 = new F_struct();
+ _v1.e_c_struct = cons_0047();
+ _v1.e_c_union = cons_0048();
+ _v1.e_c_sequence_e_short = new short[ 2 ];
+ _v1.e_c_sequence_e_short [ 0 ] = -200;
+ _v1.e_c_sequence_e_short [ 1 ] = -200;
+ _v1.e_c_sequence_e_ushort = new short[ 2 ];
+ _v1.e_c_sequence_e_ushort [ 0 ] = 200;
+ _v1.e_c_sequence_e_ushort [ 1 ] = 200;
+ _v1.e_c_sequence_e_long = new int[ 2 ];
+ _v1.e_c_sequence_e_long [ 0 ] = -200000;
+ _v1.e_c_sequence_e_long [ 1 ] = -200000;
+ _v1.e_c_sequence_e_ulong = new int[ 2 ];
+ _v1.e_c_sequence_e_ulong [ 0 ] = 200000;
+ _v1.e_c_sequence_e_ulong [ 1 ] = 200000;
+ _v1.e_c_sequence_e_float = new float[ 2 ];
+ _v1.e_c_sequence_e_float [ 0 ] = 1.234f;
+ _v1.e_c_sequence_e_float [ 1 ] = 1.234f;
+ _v1.e_c_sequence_e_double = new double[ 2 ];
+ _v1.e_c_sequence_e_double [ 0 ] = 1.23e4;
+ _v1.e_c_sequence_e_double [ 1 ] = 1.23e4;
+ _v1.e_c_sequence_e_char = new char[ 2 ];
+ _v1.e_c_sequence_e_char [ 0 ] = 'b';
+ _v1.e_c_sequence_e_char [ 1 ] = 'b';
+ _v1.e_c_sequence_e_boolean = new boolean[ 2 ];
+ _v1.e_c_sequence_e_boolean [ 0 ] = true;
+ _v1.e_c_sequence_e_boolean [ 1 ] = true;
+ _v1.e_c_sequence_e_octet = new byte[ 2 ];
+ _v1.e_c_sequence_e_octet [ 0 ] = 20;
+ _v1.e_c_sequence_e_octet [ 1 ] = 20;
+ _v1.e_c_sequence_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_sequence_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 0 ].insert_long(-200000);
+ _v1.e_c_sequence_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 1 ].insert_long(-200000);
+ _v1.e_c_sequence_e_string = new String[ 2 ];
+ _v1.e_c_sequence_e_string [ 0 ] = "def";
+ _v1.e_c_sequence_e_string [ 1 ] = "def";
+ _v1.e_c_sequence_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_sequence_e_Object [ 0 ] = target;
+ _v1.e_c_sequence_e_Object [ 1 ] = target;
+ _v1.e_c_array_e_short = new short[ 2 ];
+ _v1.e_c_array_e_short [ 0 ] = -200;
+ _v1.e_c_array_e_short [ 1 ] = -200;
+ _v1.e_c_array_e_ushort = new short[ 2 ];
+ _v1.e_c_array_e_ushort [ 0 ] = 200;
+ _v1.e_c_array_e_ushort [ 1 ] = 200;
+ _v1.e_c_array_e_long = new int[ 2 ];
+ _v1.e_c_array_e_long [ 0 ] = -200000;
+ _v1.e_c_array_e_long [ 1 ] = -200000;
+ _v1.e_c_array_e_ulong = new int[ 2 ];
+ _v1.e_c_array_e_ulong [ 0 ] = 200000;
+ _v1.e_c_array_e_ulong [ 1 ] = 200000;
+ _v1.e_c_array_e_float = new float[ 2 ];
+ _v1.e_c_array_e_float [ 0 ] = 1.234f;
+ _v1.e_c_array_e_float [ 1 ] = 1.234f;
+ _v1.e_c_array_e_double = new double[ 2 ];
+ _v1.e_c_array_e_double [ 0 ] = 1.23e4;
+ _v1.e_c_array_e_double [ 1 ] = 1.23e4;
+ _v1.e_c_array_e_char = new char[ 2 ];
+ _v1.e_c_array_e_char [ 0 ] = 'b';
+ _v1.e_c_array_e_char [ 1 ] = 'b';
+ _v1.e_c_array_e_boolean = new boolean[ 2 ];
+ _v1.e_c_array_e_boolean [ 0 ] = true;
+ _v1.e_c_array_e_boolean [ 1 ] = true;
+ _v1.e_c_array_e_octet = new byte[ 2 ];
+ _v1.e_c_array_e_octet [ 0 ] = 20;
+ _v1.e_c_array_e_octet [ 1 ] = 20;
+ _v1.e_c_array_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_array_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 0 ].insert_long(-200000);
+ _v1.e_c_array_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 1 ].insert_long(-200000);
+ _v1.e_c_array_e_string = new String[ 2 ];
+ _v1.e_c_array_e_string [ 0 ] = "def";
+ _v1.e_c_array_e_string [ 1 ] = "def";
+ _v1.e_c_array_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_array_e_Object [ 0 ] = target;
+ _v1.e_c_array_e_Object [ 1 ] = target;
+ return (_v1);
+ }
+
+ boolean comp_0101(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0100(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0101(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0099(F_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return comp_0100(_v1.e_c_struct());
+ }
+
+ C_union cons_0050()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_union cons_0049()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_union _v2;
+ _v2 = cons_0050();
+ _v1.e_c_union(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0103(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0102(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0103(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_struct cons_0051()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0104(C_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_short() == -100);
+ }
+
+ C_union cons_0052()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0106(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0105(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0106(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ C_struct cons_0053()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ boolean comp_0107(C_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_short() == -100);
+ }
+
+ C_union cons_0054()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0109(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b1) && (_v1.e_b2 == B.b1));
+ }
+
+ boolean comp_0110(E_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_b1() == B.b1);
+ }
+
+ boolean comp_0108(G_struct _v1)
+ {
+ return (true && comp_0109(_v1.e_e_struct) && comp_0110(_v1.e_e_union) &&
+ (
+ true && (_v1.e_e_sequence [ 0 ] == B.b1) &&
+ (_v1.e_e_sequence [ 1 ] == B.b1)
+ ) &&
+ (
+ true && (_v1.e_e_array [ 0 ] == B.b1) &&
+ (_v1.e_e_array [ 1 ] == B.b1)
+ ));
+ }
+
+ E_struct cons_0056()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ E_union cons_0057()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ G_struct cons_0055()
+ {
+ G_struct _v1;
+ _v1 = new G_struct();
+ _v1.e_e_struct = cons_0056();
+ _v1.e_e_union = cons_0057();
+ _v1.e_e_sequence = new B[ 2 ];
+ _v1.e_e_sequence [ 0 ] = B.b2;
+ _v1.e_e_sequence [ 1 ] = B.b2;
+ _v1.e_e_array = new B[ 2 ];
+ _v1.e_e_array [ 0 ] = B.b2;
+ _v1.e_e_array [ 1 ] = B.b2;
+ return (_v1);
+ }
+
+ boolean comp_0112(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b1) && (_v1.e_b2 == B.b1));
+ }
+
+ boolean comp_0111(G_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return comp_0112(_v1.e_e_struct());
+ }
+
+ E_union cons_0059()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ G_union cons_0058()
+ {
+ G_union _v1;
+ _v1 = new G_union();
+
+ E_union _v2;
+ _v2 = cons_0059();
+ _v1.e_e_union(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0113(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b1) && (_v1.e_b2 == B.b1));
+ }
+
+ E_struct cons_0060()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ boolean comp_0114(E_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_b1() == B.b1);
+ }
+
+ E_union cons_0061()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0115(E_struct _v1)
+ {
+ return (true && (_v1.e_b1 == B.b1) && (_v1.e_b2 == B.b1));
+ }
+
+ E_struct cons_0062()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ boolean comp_0116(E_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return (_v1.e_b1() == B.b1);
+ }
+
+ E_union cons_0063()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0119(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0118(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0119(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0117(F_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return comp_0118(_v1.e_c_struct());
+ }
+
+ C_union cons_0065()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_union cons_0064()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_union _v2;
+ _v2 = cons_0065();
+ _v1.e_c_union(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0122(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0121(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0122(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0120(F_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return comp_0121(_v1.e_c_struct());
+ }
+
+ C_union cons_0067()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_union cons_0066()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_union _v2;
+ _v2 = cons_0067();
+ _v1.e_c_union(_v2);
+ return (_v1);
+ }
+
+ boolean comp_0125(org.omg.CORBA.Any _v1)
+ {
+ String _v2;
+ _v2 = _v1.extract_string();
+ return (_v2.equals("abc"));
+ }
+
+ boolean comp_0124(C_struct _v1)
+ {
+ return (true && (_v1.e_short == -100) && (_v1.e_ushort == 100) &&
+ (_v1.e_long == -100000) && (_v1.e_ulong == 100000) &&
+ (_v1.e_float == 0.123f) && (_v1.e_double == 0.12e3) &&
+ (_v1.e_char == 'a') && (_v1.e_boolean == false) &&
+ (_v1.e_octet == 10) && comp_0125(_v1.e_any) &&
+ (_v1.e_string.equals("abc")) &&
+ (_v1.e_Object._is_equivalent(target)));
+ }
+
+ boolean comp_0123(F_union _v1)
+ {
+ if (_v1.discriminator() != 1)
+ return false;
+ return comp_0124(_v1.e_c_struct());
+ }
+
+ C_union cons_0069()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_union cons_0068()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_union _v2;
+ _v2 = cons_0069();
+ _v1.e_c_union(_v2);
+ return (_v1);
+ }
+
+ A_except1 cons_0070()
+ {
+ A_except1 _v1;
+ _v1 = new A_except1();
+ _v1.v1 = -200;
+ _v1.v2 = 200;
+ _v1.v3 = -200000;
+ _v1.v4 = 200000;
+ _v1.v5 = 1.234f;
+ _v1.v6 = 1.23e4;
+ _v1.v7 = 'b';
+ _v1.v8 = true;
+ _v1.v9 = 20;
+ return (_v1);
+ }
+
+ A_except2 cons_0071()
+ {
+ A_except2 _v1;
+ _v1 = new A_except2();
+ _v1.v10 = orb.create_any();
+ _v1.v10.insert_long(-200000);
+ _v1.v11 = "def";
+ _v1.v12 = target;
+ return (_v1);
+ }
+
+ B_except cons_0072()
+ {
+ B_except _v1;
+ _v1 = new B_except();
+ _v1.v = B.b2;
+ return (_v1);
+ }
+
+ C_struct cons_0074()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0075()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ C_except cons_0073()
+ {
+ C_except _v1;
+ _v1 = new C_except();
+ _v1.v1 = cons_0074();
+ _v1.v2 = cons_0075();
+ _v1.v3 = cons_0075();
+ _v1.v4 = cons_0075();
+ _v1.v5 = cons_0075();
+ _v1.v6 = cons_0075();
+ _v1.v7 = cons_0075();
+ _v1.v8 = cons_0075();
+ _v1.v9 = cons_0075();
+ _v1.v10 = cons_0075();
+ _v1.v11 = cons_0075();
+ _v1.v12 = cons_0075();
+ _v1.v13 = cons_0075();
+ _v1.v16 = new short[ 2 ];
+ _v1.v16 [ 0 ] = -200;
+ _v1.v16 [ 1 ] = -200;
+ _v1.v17 = new short[ 2 ];
+ _v1.v17 [ 0 ] = 200;
+ _v1.v17 [ 1 ] = 200;
+ _v1.v18 = new int[ 2 ];
+ _v1.v18 [ 0 ] = -200000;
+ _v1.v18 [ 1 ] = -200000;
+ _v1.v19 = new int[ 2 ];
+ _v1.v19 [ 0 ] = 200000;
+ _v1.v19 [ 1 ] = 200000;
+ _v1.v20 = new float[ 2 ];
+ _v1.v20 [ 0 ] = 1.234f;
+ _v1.v20 [ 1 ] = 1.234f;
+ _v1.v21 = new double[ 2 ];
+ _v1.v21 [ 0 ] = 1.23e4;
+ _v1.v21 [ 1 ] = 1.23e4;
+ _v1.v22 = new char[ 2 ];
+ _v1.v22 [ 0 ] = 'b';
+ _v1.v22 [ 1 ] = 'b';
+ _v1.v23 = new boolean[ 2 ];
+ _v1.v23 [ 0 ] = true;
+ _v1.v23 [ 1 ] = true;
+ _v1.v24 = new byte[ 2 ];
+ _v1.v24 [ 0 ] = 20;
+ _v1.v24 [ 1 ] = 20;
+ _v1.v25 = new org.omg.CORBA.Any[ 2 ];
+ _v1.v25 [ 0 ] = orb.create_any();
+ _v1.v25 [ 0 ].insert_long(-200000);
+ _v1.v25 [ 1 ] = orb.create_any();
+ _v1.v25 [ 1 ].insert_long(-200000);
+ _v1.v26 = new String[ 2 ];
+ _v1.v26 [ 0 ] = "def";
+ _v1.v26 [ 1 ] = "def";
+ _v1.v27 = new org.omg.CORBA.Object[ 2 ];
+ _v1.v27 [ 0 ] = target;
+ _v1.v27 [ 1 ] = target;
+ _v1.v30 = new short[ 2 ];
+ _v1.v30 [ 0 ] = -200;
+ _v1.v30 [ 1 ] = -200;
+ _v1.v31 = new short[ 2 ];
+ _v1.v31 [ 0 ] = 200;
+ _v1.v31 [ 1 ] = 200;
+ _v1.v32 = new int[ 2 ];
+ _v1.v32 [ 0 ] = -200000;
+ _v1.v32 [ 1 ] = -200000;
+ _v1.v33 = new int[ 2 ];
+ _v1.v33 [ 0 ] = 200000;
+ _v1.v33 [ 1 ] = 200000;
+ _v1.v34 = new float[ 2 ];
+ _v1.v34 [ 0 ] = 1.234f;
+ _v1.v34 [ 1 ] = 1.234f;
+ _v1.v35 = new double[ 2 ];
+ _v1.v35 [ 0 ] = 1.23e4;
+ _v1.v35 [ 1 ] = 1.23e4;
+ _v1.v36 = new char[ 2 ];
+ _v1.v36 [ 0 ] = 'b';
+ _v1.v36 [ 1 ] = 'b';
+ _v1.v37 = new boolean[ 2 ];
+ _v1.v37 [ 0 ] = true;
+ _v1.v37 [ 1 ] = true;
+ _v1.v38 = new byte[ 2 ];
+ _v1.v38 [ 0 ] = 20;
+ _v1.v38 [ 1 ] = 20;
+ _v1.v39 = new org.omg.CORBA.Any[ 2 ];
+ _v1.v39 [ 0 ] = orb.create_any();
+ _v1.v39 [ 0 ].insert_long(-200000);
+ _v1.v39 [ 1 ] = orb.create_any();
+ _v1.v39 [ 1 ].insert_long(-200000);
+ _v1.v40 = new String[ 2 ];
+ _v1.v40 [ 0 ] = "def";
+ _v1.v40 [ 1 ] = "def";
+ _v1.v41 = new org.omg.CORBA.Object[ 2 ];
+ _v1.v41 [ 0 ] = target;
+ _v1.v41 [ 1 ] = target;
+ return (_v1);
+ }
+
+ D_d_short cons_0077()
+ {
+ D_d_short _v1;
+ _v1 = new D_d_short();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_d_ushort cons_0078()
+ {
+ D_d_ushort _v1;
+ _v1 = new D_d_ushort();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_d_long cons_0079()
+ {
+ D_d_long _v1;
+ _v1 = new D_d_long();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_d_ulong cons_0080()
+ {
+ D_d_ulong _v1;
+ _v1 = new D_d_ulong();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_d_char cons_0081()
+ {
+ D_d_char _v1;
+ _v1 = new D_d_char();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_d_boolean cons_0082()
+ {
+ D_d_boolean _v1;
+ _v1 = new D_d_boolean();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l1(_v2);
+ return (_v1);
+ }
+
+ D_d_B cons_0083()
+ {
+ D_d_B _v1;
+ _v1 = new D_d_B();
+
+ int _v2;
+ _v2 = -200000;
+ _v1.l2(_v2);
+ return (_v1);
+ }
+
+ D_except cons_0076()
+ {
+ D_except _v1;
+ _v1 = new D_except();
+ _v1.v1 = cons_0077();
+ _v1.v2 = cons_0078();
+ _v1.v3 = cons_0079();
+ _v1.v4 = cons_0080();
+ _v1.v5 = cons_0081();
+ _v1.v6 = cons_0082();
+ _v1.v7 = cons_0083();
+ return (_v1);
+ }
+
+ E_struct cons_0085()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ E_union cons_0086()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ E_except cons_0084()
+ {
+ E_except _v1;
+ _v1 = new E_except();
+ _v1.v1 = cons_0085();
+ _v1.v2 = cons_0086();
+ _v1.v3 = new B[ 2 ];
+ _v1.v3 [ 0 ] = B.b2;
+ _v1.v3 [ 1 ] = B.b2;
+ _v1.v4 = new B[ 2 ];
+ _v1.v4 [ 0 ] = B.b2;
+ _v1.v4 [ 1 ] = B.b2;
+ return (_v1);
+ }
+
+ C_struct cons_0089()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0090()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_struct cons_0088()
+ {
+ F_struct _v1;
+ _v1 = new F_struct();
+ _v1.e_c_struct = cons_0089();
+ _v1.e_c_union = cons_0090();
+ _v1.e_c_sequence_e_short = new short[ 2 ];
+ _v1.e_c_sequence_e_short [ 0 ] = -200;
+ _v1.e_c_sequence_e_short [ 1 ] = -200;
+ _v1.e_c_sequence_e_ushort = new short[ 2 ];
+ _v1.e_c_sequence_e_ushort [ 0 ] = 200;
+ _v1.e_c_sequence_e_ushort [ 1 ] = 200;
+ _v1.e_c_sequence_e_long = new int[ 2 ];
+ _v1.e_c_sequence_e_long [ 0 ] = -200000;
+ _v1.e_c_sequence_e_long [ 1 ] = -200000;
+ _v1.e_c_sequence_e_ulong = new int[ 2 ];
+ _v1.e_c_sequence_e_ulong [ 0 ] = 200000;
+ _v1.e_c_sequence_e_ulong [ 1 ] = 200000;
+ _v1.e_c_sequence_e_float = new float[ 2 ];
+ _v1.e_c_sequence_e_float [ 0 ] = 1.234f;
+ _v1.e_c_sequence_e_float [ 1 ] = 1.234f;
+ _v1.e_c_sequence_e_double = new double[ 2 ];
+ _v1.e_c_sequence_e_double [ 0 ] = 1.23e4;
+ _v1.e_c_sequence_e_double [ 1 ] = 1.23e4;
+ _v1.e_c_sequence_e_char = new char[ 2 ];
+ _v1.e_c_sequence_e_char [ 0 ] = 'b';
+ _v1.e_c_sequence_e_char [ 1 ] = 'b';
+ _v1.e_c_sequence_e_boolean = new boolean[ 2 ];
+ _v1.e_c_sequence_e_boolean [ 0 ] = true;
+ _v1.e_c_sequence_e_boolean [ 1 ] = true;
+ _v1.e_c_sequence_e_octet = new byte[ 2 ];
+ _v1.e_c_sequence_e_octet [ 0 ] = 20;
+ _v1.e_c_sequence_e_octet [ 1 ] = 20;
+ _v1.e_c_sequence_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_sequence_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 0 ].insert_long(-200000);
+ _v1.e_c_sequence_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_sequence_e_any [ 1 ].insert_long(-200000);
+ _v1.e_c_sequence_e_string = new String[ 2 ];
+ _v1.e_c_sequence_e_string [ 0 ] = "def";
+ _v1.e_c_sequence_e_string [ 1 ] = "def";
+ _v1.e_c_sequence_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_sequence_e_Object [ 0 ] = target;
+ _v1.e_c_sequence_e_Object [ 1 ] = target;
+ _v1.e_c_array_e_short = new short[ 2 ];
+ _v1.e_c_array_e_short [ 0 ] = -200;
+ _v1.e_c_array_e_short [ 1 ] = -200;
+ _v1.e_c_array_e_ushort = new short[ 2 ];
+ _v1.e_c_array_e_ushort [ 0 ] = 200;
+ _v1.e_c_array_e_ushort [ 1 ] = 200;
+ _v1.e_c_array_e_long = new int[ 2 ];
+ _v1.e_c_array_e_long [ 0 ] = -200000;
+ _v1.e_c_array_e_long [ 1 ] = -200000;
+ _v1.e_c_array_e_ulong = new int[ 2 ];
+ _v1.e_c_array_e_ulong [ 0 ] = 200000;
+ _v1.e_c_array_e_ulong [ 1 ] = 200000;
+ _v1.e_c_array_e_float = new float[ 2 ];
+ _v1.e_c_array_e_float [ 0 ] = 1.234f;
+ _v1.e_c_array_e_float [ 1 ] = 1.234f;
+ _v1.e_c_array_e_double = new double[ 2 ];
+ _v1.e_c_array_e_double [ 0 ] = 1.23e4;
+ _v1.e_c_array_e_double [ 1 ] = 1.23e4;
+ _v1.e_c_array_e_char = new char[ 2 ];
+ _v1.e_c_array_e_char [ 0 ] = 'b';
+ _v1.e_c_array_e_char [ 1 ] = 'b';
+ _v1.e_c_array_e_boolean = new boolean[ 2 ];
+ _v1.e_c_array_e_boolean [ 0 ] = true;
+ _v1.e_c_array_e_boolean [ 1 ] = true;
+ _v1.e_c_array_e_octet = new byte[ 2 ];
+ _v1.e_c_array_e_octet [ 0 ] = 20;
+ _v1.e_c_array_e_octet [ 1 ] = 20;
+ _v1.e_c_array_e_any = new org.omg.CORBA.Any[ 2 ];
+ _v1.e_c_array_e_any [ 0 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 0 ].insert_long(-200000);
+ _v1.e_c_array_e_any [ 1 ] = orb.create_any();
+ _v1.e_c_array_e_any [ 1 ].insert_long(-200000);
+ _v1.e_c_array_e_string = new String[ 2 ];
+ _v1.e_c_array_e_string [ 0 ] = "def";
+ _v1.e_c_array_e_string [ 1 ] = "def";
+ _v1.e_c_array_e_Object = new org.omg.CORBA.Object[ 2 ];
+ _v1.e_c_array_e_Object [ 0 ] = target;
+ _v1.e_c_array_e_Object [ 1 ] = target;
+ return (_v1);
+ }
+
+ F_union cons_0091()
+ {
+ F_union _v1;
+ _v1 = new F_union();
+
+ C_union _v2;
+ _v2 = cons_0090();
+ _v1.e_c_union(_v2);
+ return (_v1);
+ }
+
+ F_except1 cons_0087()
+ {
+ F_except1 _v1;
+ _v1 = new F_except1();
+ _v1.v1 = cons_0088();
+ _v1.v2 = cons_0091();
+ _v1.v3 = cons_0091();
+ _v1.v4 = cons_0091();
+ _v1.v5 = cons_0091();
+ _v1.v6 = cons_0091();
+ _v1.v7 = cons_0091();
+ _v1.v8 = cons_0091();
+ _v1.v9 = cons_0091();
+ _v1.v10 = cons_0091();
+ _v1.v11 = cons_0091();
+ _v1.v12 = cons_0091();
+ _v1.v13 = cons_0091();
+ _v1.v14 = cons_0091();
+ _v1.v15 = cons_0091();
+ _v1.v18 = cons_0091();
+ _v1.v19 = cons_0091();
+ _v1.v20 = cons_0091();
+ _v1.v21 = cons_0091();
+ _v1.v22 = cons_0091();
+ _v1.v23 = cons_0091();
+ _v1.v24 = cons_0091();
+ _v1.v25 = cons_0091();
+ _v1.v26 = cons_0091();
+ _v1.v27 = cons_0091();
+ _v1.v28 = cons_0091();
+ _v1.v29 = cons_0091();
+ return (_v1);
+ }
+
+ C_struct cons_0093()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0094()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_except2 cons_0092()
+ {
+ F_except2 _v1;
+ _v1 = new F_except2();
+ _v1.v32 = new C_struct[ 2 ];
+ _v1.v32 [ 0 ] = cons_0093();
+ _v1.v32 [ 1 ] = cons_0093();
+ _v1.v33 = new C_union[ 2 ];
+ _v1.v33 [ 0 ] = cons_0094();
+ _v1.v33 [ 1 ] = cons_0094();
+ return (_v1);
+ }
+
+ C_struct cons_0096()
+ {
+ C_struct _v1;
+ _v1 = new C_struct();
+ _v1.e_short = -200;
+ _v1.e_ushort = 200;
+ _v1.e_long = -200000;
+ _v1.e_ulong = 200000;
+ _v1.e_float = 1.234f;
+ _v1.e_double = 1.23e4;
+ _v1.e_char = 'b';
+ _v1.e_boolean = true;
+ _v1.e_octet = 20;
+ _v1.e_any = orb.create_any();
+ _v1.e_any.insert_long(-200000);
+ _v1.e_string = "def";
+ _v1.e_Object = target;
+ return (_v1);
+ }
+
+ C_union cons_0097()
+ {
+ C_union _v1;
+ _v1 = new C_union();
+
+ short _v2;
+ _v2 = 200;
+ _v1.e_ushort(_v2);
+ return (_v1);
+ }
+
+ F_except3 cons_0095()
+ {
+ F_except3 _v1;
+ _v1 = new F_except3();
+ _v1.v62 = new C_struct[ 2 ];
+ _v1.v62 [ 0 ] = cons_0096();
+ _v1.v62 [ 1 ] = cons_0096();
+ _v1.v63 = new C_union[ 2 ];
+ _v1.v63 [ 0 ] = cons_0097();
+ _v1.v63 [ 1 ] = cons_0097();
+ return (_v1);
+ }
+
+ E_struct cons_0100()
+ {
+ E_struct _v1;
+ _v1 = new E_struct();
+ _v1.e_b1 = B.b2;
+ _v1.e_b2 = B.b2;
+ return (_v1);
+ }
+
+ E_union cons_0101()
+ {
+ E_union _v1;
+ _v1 = new E_union();
+
+ B _v2;
+ _v2 = B.b2;
+ _v1.e_b2(_v2);
+ return (_v1);
+ }
+
+ G_struct cons_0099()
+ {
+ G_struct _v1;
+ _v1 = new G_struct();
+ _v1.e_e_struct = cons_0100();
+ _v1.e_e_union = cons_0101();
+ _v1.e_e_sequence = new B[ 2 ];
+ _v1.e_e_sequence [ 0 ] = B.b2;
+ _v1.e_e_sequence [ 1 ] = B.b2;
+ _v1.e_e_array = new B[ 2 ];
+ _v1.e_e_array [ 0 ] = B.b2;
+ _v1.e_e_array [ 1 ] = B.b2;
+ return (_v1);
+ }
+
+ G_union cons_0102()
+ {
+ G_union _v1;
+ _v1 = new G_union();
+
+ E_union _v2;
+ _v2 = cons_0101();
+ _v1.e_e_union(_v2);
+ return (_v1);
+ }
+
+ G_except cons_0098()
+ {
+ G_except _v1;
+ _v1 = new G_except();
+ _v1.v1 = cons_0099();
+ _v1.v2 = cons_0102();
+ _v1.v3 = cons_0102();
+ _v1.v4 = cons_0102();
+ _v1.v5 = cons_0102();
+ _v1.v6 = new E_struct[ 2 ];
+ _v1.v6 [ 0 ] = cons_0100();
+ _v1.v6 [ 1 ] = cons_0100();
+ _v1.v7 = new E_union[ 2 ];
+ _v1.v7 [ 0 ] = cons_0101();
+ _v1.v7 [ 1 ] = cons_0101();
+ _v1.v10 = new E_struct[ 2 ];
+ _v1.v10 [ 0 ] = cons_0100();
+ _v1.v10 [ 1 ] = cons_0100();
+ _v1.v11 = new E_union[ 2 ];
+ _v1.v11 [ 0 ] = cons_0101();
+ _v1.v11 [ 1 ] = cons_0101();
+ return (_v1);
+ }
+
+ //operator definitions
+ public short op1(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ )
+ {
+ if (!(argin == -100))
+ {
+ fail("argin value error in op1");
+ }
+ if (!(arginout.value == -100))
+ {
+ fail("arginout value error in op1");
+ }
+ argout.value = -200;
+ arginout.value = -200;
+
+ short _ret;
+ _ret = -200;
+ return (_ret);
+ }
+
+ public short op2(short argin, org.omg.CORBA.ShortHolder argout,
+ org.omg.CORBA.ShortHolder arginout
+ )
+ {
+ if (!(argin == 100))
+ {
+ fail("argin value error in op2");
+ }
+ if (!(arginout.value == 100))
+ {
+ fail("arginout value error in op2");
+ }
+ argout.value = 200;
+ arginout.value = 200;
+
+ short _ret;
+ _ret = 200;
+ return (_ret);
+ }
+
+ public int op3(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ )
+ {
+ if (!(argin == -100000))
+ {
+ fail("argin value error in op3");
+ }
+ if (!(arginout.value == -100000))
+ {
+ fail("arginout value error in op3");
+ }
+ argout.value = -200000;
+ arginout.value = -200000;
+
+ int _ret;
+ _ret = -200000;
+ return (_ret);
+ }
+
+ public int op4(int argin, org.omg.CORBA.IntHolder argout,
+ org.omg.CORBA.IntHolder arginout
+ )
+ {
+ if (!(argin == 100000))
+ {
+ fail("argin value error in op4");
+ }
+ if (!(arginout.value == 100000))
+ {
+ fail("arginout value error in op4");
+ }
+ argout.value = 200000;
+ arginout.value = 200000;
+
+ int _ret;
+ _ret = 200000;
+ return (_ret);
+ }
+
+ public float op5(float argin, org.omg.CORBA.FloatHolder argout,
+ org.omg.CORBA.FloatHolder arginout
+ )
+ {
+ if (!(argin == 0.123f))
+ {
+ fail("argin value error in op5");
+ }
+ if (!(arginout.value == 0.123f))
+ {
+ fail("arginout value error in op5");
+ }
+ argout.value = 1.234f;
+ arginout.value = 1.234f;
+
+ float _ret;
+ _ret = 1.234f;
+ return (_ret);
+ }
+
+ public double op6(double argin, org.omg.CORBA.DoubleHolder argout,
+ org.omg.CORBA.DoubleHolder arginout
+ )
+ {
+ if (!(argin == 0.12e3))
+ {
+ fail("argin value error in op6");
+ }
+ if (!(arginout.value == 0.12e3))
+ {
+ fail("arginout value error in op6");
+ }
+ argout.value = 1.23e4;
+ arginout.value = 1.23e4;
+
+ double _ret;
+ _ret = 1.23e4;
+ return (_ret);
+ }
+
+ public char op7(char argin, org.omg.CORBA.CharHolder argout,
+ org.omg.CORBA.CharHolder arginout
+ )
+ {
+ if (!(argin == 'a'))
+ {
+ fail("argin value error in op7");
+ }
+ if (!(arginout.value == 'a'))
+ {
+ fail("arginout value error in op7");
+ }
+ argout.value = 'b';
+ arginout.value = 'b';
+
+ char _ret;
+ _ret = 'b';
+ return (_ret);
+ }
+
+ public boolean op8(boolean argin, org.omg.CORBA.BooleanHolder argout,
+ org.omg.CORBA.BooleanHolder arginout
+ )
+ {
+ if (!(argin == false))
+ {
+ fail("argin value error in op8");
+ }
+ if (!(arginout.value == false))
+ {
+ fail("arginout value error in op8");
+ }
+ argout.value = true;
+ arginout.value = true;
+
+ boolean _ret;
+ _ret = true;
+ return (_ret);
+ }
+
+ public byte op9(byte argin, org.omg.CORBA.ByteHolder argout,
+ org.omg.CORBA.ByteHolder arginout
+ )
+ {
+ if (!(argin == 10))
+ {
+ fail("argin value error in op9");
+ }
+ if (!(arginout.value == 10))
+ {
+ fail("arginout value error in op9");
+ }
+ argout.value = 20;
+ arginout.value = 20;
+
+ byte _ret;
+ _ret = 20;
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Any op10(org.omg.CORBA.Any argin,
+ org.omg.CORBA.AnyHolder argout,
+ org.omg.CORBA.AnyHolder arginout
+ )
+ {
+ if (!comp_0080(argin))
+ {
+ fail("argin value error in op10");
+ }
+ if (!comp_0080(arginout.value))
+ {
+ fail("arginout value error in op10");
+ }
+ argout.value = orb.create_any();
+ argout.value.insert_long(-200000);
+ arginout.value = orb.create_any();
+ arginout.value.insert_long(-200000);
+
+ org.omg.CORBA.Any _ret;
+ _ret = orb.create_any();
+ _ret.insert_long(-200000);
+ return (_ret);
+ }
+
+ public String op11(String argin, org.omg.CORBA.StringHolder argout,
+ org.omg.CORBA.StringHolder arginout
+ )
+ {
+ if (!(argin.equals("abc")))
+ {
+ fail("argin value error in op11");
+ }
+ if (!(arginout.value.equals("abc")))
+ {
+ fail("arginout value error in op11");
+ }
+ argout.value = "def";
+ arginout.value = "def";
+
+ String _ret;
+ _ret = "def";
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Object op12(org.omg.CORBA.Object argin,
+ org.omg.CORBA.ObjectHolder argout,
+ org.omg.CORBA.ObjectHolder arginout
+ )
+ {
+ if (!(argin._is_equivalent(target)))
+ {
+ fail("argin value error in op12");
+ }
+ if (!(arginout.value._is_equivalent(target)))
+ {
+ fail("arginout value error in op12");
+ }
+ argout.value = target;
+ arginout.value = target;
+
+ org.omg.CORBA.Object _ret;
+ _ret = target;
+ return (_ret);
+ }
+
+ public org.omg.CORBA.TypeCode op13(org.omg.CORBA.TypeCode argin,
+ org.omg.CORBA.TypeCodeHolder argout,
+ org.omg.CORBA.TypeCodeHolder arginout
+ )
+ {
+ if (!(orb.get_primitive_tc(TCKind.tk_string).equal(argin)))
+ {
+ fail("argin value error in op13");
+ }
+ if (!(orb.get_primitive_tc(TCKind.tk_string).equal(arginout.value)))
+ {
+ fail("arginout value error in op13");
+ }
+ argout.value = orb.get_primitive_tc(TCKind.tk_long);
+ arginout.value = orb.get_primitive_tc(TCKind.tk_long);
+
+ org.omg.CORBA.TypeCode _ret;
+ _ret = orb.get_primitive_tc(TCKind.tk_long);
+ return (_ret);
+ }
+
+ public B op15(B argin, BHolder argout, BHolder arginout)
+ {
+ if (!(argin == B.b1))
+ {
+ fail("argin value error in op15");
+ }
+ if (!(arginout.value == B.b1))
+ {
+ fail("arginout value error in op15");
+ }
+ argout.value = B.b2;
+ arginout.value = B.b2;
+
+ B _ret;
+ _ret = B.b2;
+ return (_ret);
+ }
+
+ public C_struct op16(C_struct argin, C_structHolder argout,
+ C_structHolder arginout
+ )
+ {
+ if (!comp_0081(argin))
+ {
+ fail("argin value error in op16");
+ }
+ if (!comp_0081(arginout.value))
+ {
+ fail("arginout value error in op16");
+ }
+ argout.value = cons_0035();
+ arginout.value = cons_0035();
+
+ C_struct _ret;
+ _ret = cons_0035();
+ return (_ret);
+ }
+
+ public C_union op17(C_union argin, C_unionHolder argout,
+ C_unionHolder arginout
+ )
+ {
+ if (!comp_0083(argin))
+ {
+ fail("argin value error in op17");
+ }
+ if (!comp_0083(arginout.value))
+ {
+ fail("arginout value error in op17");
+ }
+ argout.value = cons_0036();
+ arginout.value = cons_0036();
+
+ C_union _ret;
+ _ret = cons_0036();
+ return (_ret);
+ }
+
+ public short[] op18(short[] argin, C_sequence_e_shortHolder argout,
+ C_sequence_e_shortHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == -100) && (argin [ 1 ] == -100)))
+ {
+ fail("argin value error in op18");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -100) &&
+ (arginout.value [ 1 ] == -100)
+ )
+ )
+ {
+ fail("arginout value error in op18");
+ }
+ argout.value = new short[ 2 ];
+ argout.value [ 0 ] = -200;
+ argout.value [ 1 ] = -200;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = -200;
+ arginout.value [ 1 ] = -200;
+
+ short[] _ret;
+ _ret = new short[ 2 ];
+ _ret [ 0 ] = -200;
+ _ret [ 1 ] = -200;
+ return (_ret);
+ }
+
+ public short[] op19(short[] argin, C_sequence_e_ushortHolder argout,
+ C_sequence_e_ushortHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 100) && (argin [ 1 ] == 100)))
+ {
+ fail("argin value error in op19");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 100) &&
+ (arginout.value [ 1 ] == 100)
+ )
+ )
+ {
+ fail("arginout value error in op19");
+ }
+ argout.value = new short[ 2 ];
+ argout.value [ 0 ] = 200;
+ argout.value [ 1 ] = 200;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = 200;
+ arginout.value [ 1 ] = 200;
+
+ short[] _ret;
+ _ret = new short[ 2 ];
+ _ret [ 0 ] = 200;
+ _ret [ 1 ] = 200;
+ return (_ret);
+ }
+
+ public int[] op20(int[] argin, C_sequence_e_longHolder argout,
+ C_sequence_e_longHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == -100000) && (argin [ 1 ] == -100000)))
+ {
+ fail("argin value error in op20");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -100000) &&
+ (arginout.value [ 1 ] == -100000)
+ )
+ )
+ {
+ fail("arginout value error in op20");
+ }
+ argout.value = new int[ 2 ];
+ argout.value [ 0 ] = -200000;
+ argout.value [ 1 ] = -200000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = -200000;
+ arginout.value [ 1 ] = -200000;
+
+ int[] _ret;
+ _ret = new int[ 2 ];
+ _ret [ 0 ] = -200000;
+ _ret [ 1 ] = -200000;
+ return (_ret);
+ }
+
+ public int[] op21(int[] argin, C_sequence_e_ulongHolder argout,
+ C_sequence_e_ulongHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 100000) && (argin [ 1 ] == 100000)))
+ {
+ fail("argin value error in op21");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 100000) &&
+ (arginout.value [ 1 ] == 100000)
+ )
+ )
+ {
+ fail("arginout value error in op21");
+ }
+ argout.value = new int[ 2 ];
+ argout.value [ 0 ] = 200000;
+ argout.value [ 1 ] = 200000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = 200000;
+ arginout.value [ 1 ] = 200000;
+
+ int[] _ret;
+ _ret = new int[ 2 ];
+ _ret [ 0 ] = 200000;
+ _ret [ 1 ] = 200000;
+ return (_ret);
+ }
+
+ public float[] op22(float[] argin, C_sequence_e_floatHolder argout,
+ C_sequence_e_floatHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 0.123f) && (argin [ 1 ] == 0.123f)))
+ {
+ fail("argin value error in op22");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 0.123f) &&
+ (arginout.value [ 1 ] == 0.123f)
+ )
+ )
+ {
+ fail("arginout value error in op22");
+ }
+ argout.value = new float[ 2 ];
+ argout.value [ 0 ] = 1.234f;
+ argout.value [ 1 ] = 1.234f;
+ arginout.value = new float[ 2 ];
+ arginout.value [ 0 ] = 1.234f;
+ arginout.value [ 1 ] = 1.234f;
+
+ float[] _ret;
+ _ret = new float[ 2 ];
+ _ret [ 0 ] = 1.234f;
+ _ret [ 1 ] = 1.234f;
+ return (_ret);
+ }
+
+ public double[] op23(double[] argin, C_sequence_e_doubleHolder argout,
+ C_sequence_e_doubleHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 0.12e3) && (argin [ 1 ] == 0.12e3)))
+ {
+ fail("argin value error in op23");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 0.12e3) &&
+ (arginout.value [ 1 ] == 0.12e3)
+ )
+ )
+ {
+ fail("arginout value error in op23");
+ }
+ argout.value = new double[ 2 ];
+ argout.value [ 0 ] = 1.23e4;
+ argout.value [ 1 ] = 1.23e4;
+ arginout.value = new double[ 2 ];
+ arginout.value [ 0 ] = 1.23e4;
+ arginout.value [ 1 ] = 1.23e4;
+
+ double[] _ret;
+ _ret = new double[ 2 ];
+ _ret [ 0 ] = 1.23e4;
+ _ret [ 1 ] = 1.23e4;
+ return (_ret);
+ }
+
+ public char[] op24(char[] argin, C_sequence_e_charHolder argout,
+ C_sequence_e_charHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 'a') && (argin [ 1 ] == 'a')))
+ {
+ fail("argin value error in op24");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 'a') &&
+ (arginout.value [ 1 ] == 'a')
+ )
+ )
+ {
+ fail("arginout value error in op24");
+ }
+ argout.value = new char[ 2 ];
+ argout.value [ 0 ] = 'b';
+ argout.value [ 1 ] = 'b';
+ arginout.value = new char[ 2 ];
+ arginout.value [ 0 ] = 'b';
+ arginout.value [ 1 ] = 'b';
+
+ char[] _ret;
+ _ret = new char[ 2 ];
+ _ret [ 0 ] = 'b';
+ _ret [ 1 ] = 'b';
+ return (_ret);
+ }
+
+ public boolean[] op25(boolean[] argin, C_sequence_e_booleanHolder argout,
+ C_sequence_e_booleanHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == false) && (argin [ 1 ] == false)))
+ {
+ fail("argin value error in op25");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == false) &&
+ (arginout.value [ 1 ] == false)
+ )
+ )
+ {
+ fail("arginout value error in op25");
+ }
+ argout.value = new boolean[ 2 ];
+ argout.value [ 0 ] = true;
+ argout.value [ 1 ] = true;
+ arginout.value = new boolean[ 2 ];
+ arginout.value [ 0 ] = true;
+ arginout.value [ 1 ] = true;
+
+ boolean[] _ret;
+ _ret = new boolean[ 2 ];
+ _ret [ 0 ] = true;
+ _ret [ 1 ] = true;
+ return (_ret);
+ }
+
+ public byte[] op26(byte[] argin, C_sequence_e_octetHolder argout,
+ C_sequence_e_octetHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 10) && (argin [ 1 ] == 10)))
+ {
+ fail("argin value error in op26");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 10) && (arginout.value [ 1 ] == 10)
+ ))
+ {
+ fail("arginout value error in op26");
+ }
+ argout.value = new byte[ 2 ];
+ argout.value [ 0 ] = 20;
+ argout.value [ 1 ] = 20;
+ arginout.value = new byte[ 2 ];
+ arginout.value [ 0 ] = 20;
+ arginout.value [ 1 ] = 20;
+
+ byte[] _ret;
+ _ret = new byte[ 2 ];
+ _ret [ 0 ] = 20;
+ _ret [ 1 ] = 20;
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Any[] op27(org.omg.CORBA.Any[] argin,
+ C_sequence_e_anyHolder argout,
+ C_sequence_e_anyHolder arginout
+ )
+ {
+ if (!(true && comp_0084(argin [ 0 ]) && comp_0084(argin [ 1 ])))
+ {
+ fail("argin value error in op27");
+ }
+ if (!(
+ true && comp_0084(arginout.value [ 0 ]) &&
+ comp_0084(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op27");
+ }
+ argout.value = new org.omg.CORBA.Any[ 2 ];
+ argout.value [ 0 ] = orb.create_any();
+ argout.value [ 0 ].insert_long(-200000);
+ argout.value [ 1 ] = orb.create_any();
+ argout.value [ 1 ].insert_long(-200000);
+ arginout.value = new org.omg.CORBA.Any[ 2 ];
+ arginout.value [ 0 ] = orb.create_any();
+ arginout.value [ 0 ].insert_long(-200000);
+ arginout.value [ 1 ] = orb.create_any();
+ arginout.value [ 1 ].insert_long(-200000);
+
+ org.omg.CORBA.Any[] _ret;
+ _ret = new org.omg.CORBA.Any[ 2 ];
+ _ret [ 0 ] = orb.create_any();
+ _ret [ 0 ].insert_long(-200000);
+ _ret [ 1 ] = orb.create_any();
+ _ret [ 1 ].insert_long(-200000);
+ return (_ret);
+ }
+
+ public String[] op28(String[] argin, C_sequence_e_stringHolder argout,
+ C_sequence_e_stringHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ].equals("abc")) && (argin [ 1 ].equals("abc"))))
+ {
+ fail("argin value error in op28");
+ }
+ if (!(
+ true && (arginout.value [ 0 ].equals("abc")) &&
+ (arginout.value [ 1 ].equals("abc"))
+ )
+ )
+ {
+ fail("arginout value error in op28");
+ }
+ argout.value = new String[ 2 ];
+ argout.value [ 0 ] = "def";
+ argout.value [ 1 ] = "def";
+ arginout.value = new String[ 2 ];
+ arginout.value [ 0 ] = "def";
+ arginout.value [ 1 ] = "def";
+
+ String[] _ret;
+ _ret = new String[ 2 ];
+ _ret [ 0 ] = "def";
+ _ret [ 1 ] = "def";
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Object[] op29(org.omg.CORBA.Object[] argin,
+ C_sequence_e_ObjectHolder argout,
+ C_sequence_e_ObjectHolder arginout
+ )
+ {
+ if (!(
+ true && (argin [ 0 ]._is_equivalent(target)) &&
+ (argin [ 1 ]._is_equivalent(target))
+ )
+ )
+ {
+ fail("argin value error in op29");
+ }
+ if (!(
+ true && (arginout.value [ 0 ]._is_equivalent(target)) &&
+ (arginout.value [ 1 ]._is_equivalent(target))
+ )
+ )
+ {
+ fail("arginout value error in op29");
+ }
+ argout.value = new org.omg.CORBA.Object[ 2 ];
+ argout.value [ 0 ] = target;
+ argout.value [ 1 ] = target;
+ arginout.value = new org.omg.CORBA.Object[ 2 ];
+ arginout.value [ 0 ] = target;
+ arginout.value [ 1 ] = target;
+
+ org.omg.CORBA.Object[] _ret;
+ _ret = new org.omg.CORBA.Object[ 2 ];
+ _ret [ 0 ] = target;
+ _ret [ 1 ] = target;
+ return (_ret);
+ }
+
+ public short[] op32(short[] argin, C_array_e_shortHolder argout,
+ C_array_e_shortHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == -100) && (argin [ 1 ] == -100)))
+ {
+ fail("argin value error in op32");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -100) &&
+ (arginout.value [ 1 ] == -100)
+ )
+ )
+ {
+ fail("arginout value error in op32");
+ }
+ argout.value = new short[ 2 ];
+ argout.value [ 0 ] = -200;
+ argout.value [ 1 ] = -200;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = -200;
+ arginout.value [ 1 ] = -200;
+
+ short[] _ret;
+ _ret = new short[ 2 ];
+ _ret [ 0 ] = -200;
+ _ret [ 1 ] = -200;
+ return (_ret);
+ }
+
+ public short[] op33(short[] argin, C_array_e_ushortHolder argout,
+ C_array_e_ushortHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 100) && (argin [ 1 ] == 100)))
+ {
+ fail("argin value error in op33");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 100) &&
+ (arginout.value [ 1 ] == 100)
+ )
+ )
+ {
+ fail("arginout value error in op33");
+ }
+ argout.value = new short[ 2 ];
+ argout.value [ 0 ] = 200;
+ argout.value [ 1 ] = 200;
+ arginout.value = new short[ 2 ];
+ arginout.value [ 0 ] = 200;
+ arginout.value [ 1 ] = 200;
+
+ short[] _ret;
+ _ret = new short[ 2 ];
+ _ret [ 0 ] = 200;
+ _ret [ 1 ] = 200;
+ return (_ret);
+ }
+
+ public int[] op34(int[] argin, C_array_e_longHolder argout,
+ C_array_e_longHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == -100000) && (argin [ 1 ] == -100000)))
+ {
+ fail("argin value error in op34");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == -100000) &&
+ (arginout.value [ 1 ] == -100000)
+ )
+ )
+ {
+ fail("arginout value error in op34");
+ }
+ argout.value = new int[ 2 ];
+ argout.value [ 0 ] = -200000;
+ argout.value [ 1 ] = -200000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = -200000;
+ arginout.value [ 1 ] = -200000;
+
+ int[] _ret;
+ _ret = new int[ 2 ];
+ _ret [ 0 ] = -200000;
+ _ret [ 1 ] = -200000;
+ return (_ret);
+ }
+
+ public int[] op35(int[] argin, C_array_e_ulongHolder argout,
+ C_array_e_ulongHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 100000) && (argin [ 1 ] == 100000)))
+ {
+ fail("argin value error in op35");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 100000) &&
+ (arginout.value [ 1 ] == 100000)
+ )
+ )
+ {
+ fail("arginout value error in op35");
+ }
+ argout.value = new int[ 2 ];
+ argout.value [ 0 ] = 200000;
+ argout.value [ 1 ] = 200000;
+ arginout.value = new int[ 2 ];
+ arginout.value [ 0 ] = 200000;
+ arginout.value [ 1 ] = 200000;
+
+ int[] _ret;
+ _ret = new int[ 2 ];
+ _ret [ 0 ] = 200000;
+ _ret [ 1 ] = 200000;
+ return (_ret);
+ }
+
+ public float[] op36(float[] argin, C_array_e_floatHolder argout,
+ C_array_e_floatHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 0.123f) && (argin [ 1 ] == 0.123f)))
+ {
+ fail("argin value error in op36");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 0.123f) &&
+ (arginout.value [ 1 ] == 0.123f)
+ )
+ )
+ {
+ fail("arginout value error in op36");
+ }
+ argout.value = new float[ 2 ];
+ argout.value [ 0 ] = 1.234f;
+ argout.value [ 1 ] = 1.234f;
+ arginout.value = new float[ 2 ];
+ arginout.value [ 0 ] = 1.234f;
+ arginout.value [ 1 ] = 1.234f;
+
+ float[] _ret;
+ _ret = new float[ 2 ];
+ _ret [ 0 ] = 1.234f;
+ _ret [ 1 ] = 1.234f;
+ return (_ret);
+ }
+
+ public double[] op37(double[] argin, C_array_e_doubleHolder argout,
+ C_array_e_doubleHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 0.12e3) && (argin [ 1 ] == 0.12e3)))
+ {
+ fail("argin value error in op37");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 0.12e3) &&
+ (arginout.value [ 1 ] == 0.12e3)
+ )
+ )
+ {
+ fail("arginout value error in op37");
+ }
+ argout.value = new double[ 2 ];
+ argout.value [ 0 ] = 1.23e4;
+ argout.value [ 1 ] = 1.23e4;
+ arginout.value = new double[ 2 ];
+ arginout.value [ 0 ] = 1.23e4;
+ arginout.value [ 1 ] = 1.23e4;
+
+ double[] _ret;
+ _ret = new double[ 2 ];
+ _ret [ 0 ] = 1.23e4;
+ _ret [ 1 ] = 1.23e4;
+ return (_ret);
+ }
+
+ public char[] op38(char[] argin, C_array_e_charHolder argout,
+ C_array_e_charHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 'a') && (argin [ 1 ] == 'a')))
+ {
+ fail("argin value error in op38");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 'a') &&
+ (arginout.value [ 1 ] == 'a')
+ )
+ )
+ {
+ fail("arginout value error in op38");
+ }
+ argout.value = new char[ 2 ];
+ argout.value [ 0 ] = 'b';
+ argout.value [ 1 ] = 'b';
+ arginout.value = new char[ 2 ];
+ arginout.value [ 0 ] = 'b';
+ arginout.value [ 1 ] = 'b';
+
+ char[] _ret;
+ _ret = new char[ 2 ];
+ _ret [ 0 ] = 'b';
+ _ret [ 1 ] = 'b';
+ return (_ret);
+ }
+
+ public boolean[] op39(boolean[] argin, C_array_e_booleanHolder argout,
+ C_array_e_booleanHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == false) && (argin [ 1 ] == false)))
+ {
+ fail("argin value error in op39");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == false) &&
+ (arginout.value [ 1 ] == false)
+ )
+ )
+ {
+ fail("arginout value error in op39");
+ }
+ argout.value = new boolean[ 2 ];
+ argout.value [ 0 ] = true;
+ argout.value [ 1 ] = true;
+ arginout.value = new boolean[ 2 ];
+ arginout.value [ 0 ] = true;
+ arginout.value [ 1 ] = true;
+
+ boolean[] _ret;
+ _ret = new boolean[ 2 ];
+ _ret [ 0 ] = true;
+ _ret [ 1 ] = true;
+ return (_ret);
+ }
+
+ public byte[] op40(byte[] argin, C_array_e_octetHolder argout,
+ C_array_e_octetHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ] == 10) && (argin [ 1 ] == 10)))
+ {
+ fail("argin value error in op40");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == 10) && (arginout.value [ 1 ] == 10)
+ ))
+ {
+ fail("arginout value error in op40");
+ }
+ argout.value = new byte[ 2 ];
+ argout.value [ 0 ] = 20;
+ argout.value [ 1 ] = 20;
+ arginout.value = new byte[ 2 ];
+ arginout.value [ 0 ] = 20;
+ arginout.value [ 1 ] = 20;
+
+ byte[] _ret;
+ _ret = new byte[ 2 ];
+ _ret [ 0 ] = 20;
+ _ret [ 1 ] = 20;
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Any[] op41(org.omg.CORBA.Any[] argin,
+ C_array_e_anyHolder argout,
+ C_array_e_anyHolder arginout
+ )
+ {
+ if (!(true && comp_0085(argin [ 0 ]) && comp_0085(argin [ 1 ])))
+ {
+ fail("argin value error in op41");
+ }
+ if (!(
+ true && comp_0085(arginout.value [ 0 ]) &&
+ comp_0085(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op41");
+ }
+ argout.value = new org.omg.CORBA.Any[ 2 ];
+ argout.value [ 0 ] = orb.create_any();
+ argout.value [ 0 ].insert_long(-200000);
+ argout.value [ 1 ] = orb.create_any();
+ argout.value [ 1 ].insert_long(-200000);
+ arginout.value = new org.omg.CORBA.Any[ 2 ];
+ arginout.value [ 0 ] = orb.create_any();
+ arginout.value [ 0 ].insert_long(-200000);
+ arginout.value [ 1 ] = orb.create_any();
+ arginout.value [ 1 ].insert_long(-200000);
+
+ org.omg.CORBA.Any[] _ret;
+ _ret = new org.omg.CORBA.Any[ 2 ];
+ _ret [ 0 ] = orb.create_any();
+ _ret [ 0 ].insert_long(-200000);
+ _ret [ 1 ] = orb.create_any();
+ _ret [ 1 ].insert_long(-200000);
+ return (_ret);
+ }
+
+ public String[] op42(String[] argin, C_array_e_stringHolder argout,
+ C_array_e_stringHolder arginout
+ )
+ {
+ if (!(true && (argin [ 0 ].equals("abc")) && (argin [ 1 ].equals("abc"))))
+ {
+ fail("argin value error in op42");
+ }
+ if (!(
+ true && (arginout.value [ 0 ].equals("abc")) &&
+ (arginout.value [ 1 ].equals("abc"))
+ )
+ )
+ {
+ fail("arginout value error in op42");
+ }
+ argout.value = new String[ 2 ];
+ argout.value [ 0 ] = "def";
+ argout.value [ 1 ] = "def";
+ arginout.value = new String[ 2 ];
+ arginout.value [ 0 ] = "def";
+ arginout.value [ 1 ] = "def";
+
+ String[] _ret;
+ _ret = new String[ 2 ];
+ _ret [ 0 ] = "def";
+ _ret [ 1 ] = "def";
+ return (_ret);
+ }
+
+ public org.omg.CORBA.Object[] op43(org.omg.CORBA.Object[] argin,
+ C_array_e_ObjectHolder argout,
+ C_array_e_ObjectHolder arginout
+ )
+ {
+ if (!(
+ true && (argin [ 0 ]._is_equivalent(target)) &&
+ (argin [ 1 ]._is_equivalent(target))
+ )
+ )
+ {
+ fail("argin value error in op43");
+ }
+ if (!(
+ true && (arginout.value [ 0 ]._is_equivalent(target)) &&
+ (arginout.value [ 1 ]._is_equivalent(target))
+ )
+ )
+ {
+ fail("arginout value error in op43");
+ }
+ argout.value = new org.omg.CORBA.Object[ 2 ];
+ argout.value [ 0 ] = target;
+ argout.value [ 1 ] = target;
+ arginout.value = new org.omg.CORBA.Object[ 2 ];
+ arginout.value [ 0 ] = target;
+ arginout.value [ 1 ] = target;
+
+ org.omg.CORBA.Object[] _ret;
+ _ret = new org.omg.CORBA.Object[ 2 ];
+ _ret [ 0 ] = target;
+ _ret [ 1 ] = target;
+ return (_ret);
+ }
+
+ public D_d_short op46(D_d_short argin, D_d_shortHolder argout,
+ D_d_shortHolder arginout
+ )
+ {
+ if (!comp_0086(argin))
+ {
+ fail("argin value error in op46");
+ }
+ if (!comp_0086(arginout.value))
+ {
+ fail("arginout value error in op46");
+ }
+ argout.value = cons_0037();
+ arginout.value = cons_0037();
+
+ D_d_short _ret;
+ _ret = cons_0037();
+ return (_ret);
+ }
+
+ public D_d_ushort op47(D_d_ushort argin, D_d_ushortHolder argout,
+ D_d_ushortHolder arginout
+ )
+ {
+ if (!comp_0087(argin))
+ {
+ fail("argin value error in op47");
+ }
+ if (!comp_0087(arginout.value))
+ {
+ fail("arginout value error in op47");
+ }
+ argout.value = cons_0038();
+ arginout.value = cons_0038();
+
+ D_d_ushort _ret;
+ _ret = cons_0038();
+ return (_ret);
+ }
+
+ public D_d_long op48(D_d_long argin, D_d_longHolder argout,
+ D_d_longHolder arginout
+ )
+ {
+ if (!comp_0088(argin))
+ {
+ fail("argin value error in op48");
+ }
+ if (!comp_0088(arginout.value))
+ {
+ fail("arginout value error in op48");
+ }
+ argout.value = cons_0039();
+ arginout.value = cons_0039();
+
+ D_d_long _ret;
+ _ret = cons_0039();
+ return (_ret);
+ }
+
+ public D_d_ulong op49(D_d_ulong argin, D_d_ulongHolder argout,
+ D_d_ulongHolder arginout
+ )
+ {
+ if (!comp_0089(argin))
+ {
+ fail("argin value error in op49");
+ }
+ if (!comp_0089(arginout.value))
+ {
+ fail("arginout value error in op49");
+ }
+ argout.value = cons_0040();
+ arginout.value = cons_0040();
+
+ D_d_ulong _ret;
+ _ret = cons_0040();
+ return (_ret);
+ }
+
+ public D_d_char op50(D_d_char argin, D_d_charHolder argout,
+ D_d_charHolder arginout
+ )
+ {
+ if (!comp_0090(argin))
+ {
+ fail("argin value error in op50");
+ }
+ if (!comp_0090(arginout.value))
+ {
+ fail("arginout value error in op50");
+ }
+ argout.value = cons_0041();
+ arginout.value = cons_0041();
+
+ D_d_char _ret;
+ _ret = cons_0041();
+ return (_ret);
+ }
+
+ public D_d_boolean op51(D_d_boolean argin, D_d_booleanHolder argout,
+ D_d_booleanHolder arginout
+ )
+ {
+ if (!comp_0091(argin))
+ {
+ fail("argin value error in op51");
+ }
+ if (!comp_0091(arginout.value))
+ {
+ fail("arginout value error in op51");
+ }
+ argout.value = cons_0042();
+ arginout.value = cons_0042();
+
+ D_d_boolean _ret;
+ _ret = cons_0042();
+ return (_ret);
+ }
+
+ public D_d_B op52(D_d_B argin, D_d_BHolder argout, D_d_BHolder arginout)
+ {
+ if (!comp_0092(argin))
+ {
+ fail("argin value error in op52");
+ }
+ if (!comp_0092(arginout.value))
+ {
+ fail("arginout value error in op52");
+ }
+ argout.value = cons_0043();
+ arginout.value = cons_0043();
+
+ D_d_B _ret;
+ _ret = cons_0043();
+ return (_ret);
+ }
+
+ public E_struct op53(E_struct argin, E_structHolder argout,
+ E_structHolder arginout
+ )
+ {
+ if (!comp_0093(argin))
+ {
+ fail("argin value error in op53");
+ }
+ if (!comp_0093(arginout.value))
+ {
+ fail("arginout value error in op53");
+ }
+ argout.value = cons_0044();
+ arginout.value = cons_0044();
+
+ E_struct _ret;
+ _ret = cons_0044();
+ return (_ret);
+ }
+
+ public E_union op54(E_union argin, E_unionHolder argout,
+ E_unionHolder arginout
+ )
+ {
+ if (!comp_0094(argin))
+ {
+ fail("argin value error in op54");
+ }
+ if (!comp_0094(arginout.value))
+ {
+ fail("arginout value error in op54");
+ }
+ argout.value = cons_0045();
+ arginout.value = cons_0045();
+
+ E_union _ret;
+ _ret = cons_0045();
+ return (_ret);
+ }
+
+ public B[] op55(B[] argin, E_sequenceHolder argout, E_sequenceHolder arginout)
+ {
+ if (!(true && (argin [ 0 ] == B.b1) && (argin [ 1 ] == B.b1)))
+ {
+ fail("argin value error in op55");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == B.b1) &&
+ (arginout.value [ 1 ] == B.b1)
+ )
+ )
+ {
+ fail("arginout value error in op55");
+ }
+ argout.value = new B[ 2 ];
+ argout.value [ 0 ] = B.b2;
+ argout.value [ 1 ] = B.b2;
+ arginout.value = new B[ 2 ];
+ arginout.value [ 0 ] = B.b2;
+ arginout.value [ 1 ] = B.b2;
+
+ B[] _ret;
+ _ret = new B[ 2 ];
+ _ret [ 0 ] = B.b2;
+ _ret [ 1 ] = B.b2;
+ return (_ret);
+ }
+
+ public B[] op56(B[] argin, E_arrayHolder argout, E_arrayHolder arginout)
+ {
+ if (!(true && (argin [ 0 ] == B.b1) && (argin [ 1 ] == B.b1)))
+ {
+ fail("argin value error in op56");
+ }
+ if (!(
+ true && (arginout.value [ 0 ] == B.b1) &&
+ (arginout.value [ 1 ] == B.b1)
+ )
+ )
+ {
+ fail("arginout value error in op56");
+ }
+ argout.value = new B[ 2 ];
+ argout.value [ 0 ] = B.b2;
+ argout.value [ 1 ] = B.b2;
+ arginout.value = new B[ 2 ];
+ arginout.value [ 0 ] = B.b2;
+ arginout.value [ 1 ] = B.b2;
+
+ B[] _ret;
+ _ret = new B[ 2 ];
+ _ret [ 0 ] = B.b2;
+ _ret [ 1 ] = B.b2;
+ return (_ret);
+ }
+
+ public F_struct op57(F_struct argin, F_structHolder argout,
+ F_structHolder arginout
+ )
+ {
+ if (!comp_0095(argin))
+ {
+ fail("argin value error in op57");
+ }
+ if (!comp_0095(arginout.value))
+ {
+ fail("arginout value error in op57");
+ }
+ argout.value = cons_0046();
+ arginout.value = cons_0046();
+
+ F_struct _ret;
+ _ret = cons_0046();
+ return (_ret);
+ }
+
+ public F_union op58(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ if (!comp_0099(argin))
+ {
+ fail("argin value error in op58");
+ }
+ if (!comp_0099(arginout.value))
+ {
+ fail("arginout value error in op58");
+ }
+ argout.value = cons_0049();
+ arginout.value = cons_0049();
+
+ F_union _ret;
+ _ret = cons_0049();
+ return (_ret);
+ }
+
+ public C_struct[] op59(C_struct[] argin, F_sequence_e_c_structHolder argout,
+ F_sequence_e_c_structHolder arginout
+ )
+ {
+ if (!(true && comp_0102(argin [ 0 ]) && comp_0102(argin [ 1 ])))
+ {
+ fail("argin value error in op59");
+ }
+ if (!(
+ true && comp_0102(arginout.value [ 0 ]) &&
+ comp_0102(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op59");
+ }
+ argout.value = new C_struct[ 2 ];
+ argout.value [ 0 ] = cons_0051();
+ argout.value [ 1 ] = cons_0051();
+ arginout.value = new C_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0051();
+ arginout.value [ 1 ] = cons_0051();
+
+ C_struct[] _ret;
+ _ret = new C_struct[ 2 ];
+ _ret [ 0 ] = cons_0051();
+ _ret [ 1 ] = cons_0051();
+ return (_ret);
+ }
+
+ public C_union[] op60(C_union[] argin, F_sequence_e_c_unionHolder argout,
+ F_sequence_e_c_unionHolder arginout
+ )
+ {
+ if (!(true && comp_0104(argin [ 0 ]) && comp_0104(argin [ 1 ])))
+ {
+ fail("argin value error in op60");
+ }
+ if (!(
+ true && comp_0104(arginout.value [ 0 ]) &&
+ comp_0104(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op60");
+ }
+ argout.value = new C_union[ 2 ];
+ argout.value [ 0 ] = cons_0052();
+ argout.value [ 1 ] = cons_0052();
+ arginout.value = new C_union[ 2 ];
+ arginout.value [ 0 ] = cons_0052();
+ arginout.value [ 1 ] = cons_0052();
+
+ C_union[] _ret;
+ _ret = new C_union[ 2 ];
+ _ret [ 0 ] = cons_0052();
+ _ret [ 1 ] = cons_0052();
+ return (_ret);
+ }
+
+ public C_struct[] op89(C_struct[] argin, F_array_e_c_structHolder argout,
+ F_array_e_c_structHolder arginout
+ )
+ {
+ if (!(true && comp_0105(argin [ 0 ]) && comp_0105(argin [ 1 ])))
+ {
+ fail("argin value error in op89");
+ }
+ if (!(
+ true && comp_0105(arginout.value [ 0 ]) &&
+ comp_0105(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op89");
+ }
+ argout.value = new C_struct[ 2 ];
+ argout.value [ 0 ] = cons_0053();
+ argout.value [ 1 ] = cons_0053();
+ arginout.value = new C_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0053();
+ arginout.value [ 1 ] = cons_0053();
+
+ C_struct[] _ret;
+ _ret = new C_struct[ 2 ];
+ _ret [ 0 ] = cons_0053();
+ _ret [ 1 ] = cons_0053();
+ return (_ret);
+ }
+
+ public C_union[] op90(C_union[] argin, F_array_e_c_unionHolder argout,
+ F_array_e_c_unionHolder arginout
+ )
+ {
+ if (!(true && comp_0107(argin [ 0 ]) && comp_0107(argin [ 1 ])))
+ {
+ fail("argin value error in op90");
+ }
+ if (!(
+ true && comp_0107(arginout.value [ 0 ]) &&
+ comp_0107(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op90");
+ }
+ argout.value = new C_union[ 2 ];
+ argout.value [ 0 ] = cons_0054();
+ argout.value [ 1 ] = cons_0054();
+ arginout.value = new C_union[ 2 ];
+ arginout.value [ 0 ] = cons_0054();
+ arginout.value [ 1 ] = cons_0054();
+
+ C_union[] _ret;
+ _ret = new C_union[ 2 ];
+ _ret [ 0 ] = cons_0054();
+ _ret [ 1 ] = cons_0054();
+ return (_ret);
+ }
+
+ public G_struct op119(G_struct argin, G_structHolder argout,
+ G_structHolder arginout
+ )
+ {
+ if (!comp_0108(argin))
+ {
+ fail("argin value error in op119");
+ }
+ if (!comp_0108(arginout.value))
+ {
+ fail("arginout value error in op119");
+ }
+ argout.value = cons_0055();
+ arginout.value = cons_0055();
+
+ G_struct _ret;
+ _ret = cons_0055();
+ return (_ret);
+ }
+
+ public G_union op120(G_union argin, G_unionHolder argout,
+ G_unionHolder arginout
+ )
+ {
+ if (!comp_0111(argin))
+ {
+ fail("argin value error in op120");
+ }
+ if (!comp_0111(arginout.value))
+ {
+ fail("arginout value error in op120");
+ }
+ argout.value = cons_0058();
+ arginout.value = cons_0058();
+
+ G_union _ret;
+ _ret = cons_0058();
+ return (_ret);
+ }
+
+ public E_struct[] op121(E_struct[] argin, G_sequence_e_e_structHolder argout,
+ G_sequence_e_e_structHolder arginout
+ )
+ {
+ if (!(true && comp_0113(argin [ 0 ]) && comp_0113(argin [ 1 ])))
+ {
+ fail("argin value error in op121");
+ }
+ if (!(
+ true && comp_0113(arginout.value [ 0 ]) &&
+ comp_0113(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op121");
+ }
+ argout.value = new E_struct[ 2 ];
+ argout.value [ 0 ] = cons_0060();
+ argout.value [ 1 ] = cons_0060();
+ arginout.value = new E_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0060();
+ arginout.value [ 1 ] = cons_0060();
+
+ E_struct[] _ret;
+ _ret = new E_struct[ 2 ];
+ _ret [ 0 ] = cons_0060();
+ _ret [ 1 ] = cons_0060();
+ return (_ret);
+ }
+
+ public E_union[] op122(E_union[] argin, G_sequence_e_e_unionHolder argout,
+ G_sequence_e_e_unionHolder arginout
+ )
+ {
+ if (!(true && comp_0114(argin [ 0 ]) && comp_0114(argin [ 1 ])))
+ {
+ fail("argin value error in op122");
+ }
+ if (!(
+ true && comp_0114(arginout.value [ 0 ]) &&
+ comp_0114(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op122");
+ }
+ argout.value = new E_union[ 2 ];
+ argout.value [ 0 ] = cons_0061();
+ argout.value [ 1 ] = cons_0061();
+ arginout.value = new E_union[ 2 ];
+ arginout.value [ 0 ] = cons_0061();
+ arginout.value [ 1 ] = cons_0061();
+
+ E_union[] _ret;
+ _ret = new E_union[ 2 ];
+ _ret [ 0 ] = cons_0061();
+ _ret [ 1 ] = cons_0061();
+ return (_ret);
+ }
+
+ public E_struct[] op125(E_struct[] argin, G_array_e_e_structHolder argout,
+ G_array_e_e_structHolder arginout
+ )
+ {
+ if (!(true && comp_0115(argin [ 0 ]) && comp_0115(argin [ 1 ])))
+ {
+ fail("argin value error in op125");
+ }
+ if (!(
+ true && comp_0115(arginout.value [ 0 ]) &&
+ comp_0115(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op125");
+ }
+ argout.value = new E_struct[ 2 ];
+ argout.value [ 0 ] = cons_0062();
+ argout.value [ 1 ] = cons_0062();
+ arginout.value = new E_struct[ 2 ];
+ arginout.value [ 0 ] = cons_0062();
+ arginout.value [ 1 ] = cons_0062();
+
+ E_struct[] _ret;
+ _ret = new E_struct[ 2 ];
+ _ret [ 0 ] = cons_0062();
+ _ret [ 1 ] = cons_0062();
+ return (_ret);
+ }
+
+ public E_union[] op126(E_union[] argin, G_array_e_e_unionHolder argout,
+ G_array_e_e_unionHolder arginout
+ )
+ {
+ if (!(true && comp_0116(argin [ 0 ]) && comp_0116(argin [ 1 ])))
+ {
+ fail("argin value error in op126");
+ }
+ if (!(
+ true && comp_0116(arginout.value [ 0 ]) &&
+ comp_0116(arginout.value [ 1 ])
+ )
+ )
+ {
+ fail("arginout value error in op126");
+ }
+ argout.value = new E_union[ 2 ];
+ argout.value [ 0 ] = cons_0063();
+ argout.value [ 1 ] = cons_0063();
+ arginout.value = new E_union[ 2 ];
+ arginout.value [ 0 ] = cons_0063();
+ arginout.value [ 1 ] = cons_0063();
+
+ E_union[] _ret;
+ _ret = new E_union[ 2 ];
+ _ret [ 0 ] = cons_0063();
+ _ret [ 1 ] = cons_0063();
+ return (_ret);
+ }
+
+ public F_union op129(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ if (!comp_0117(argin))
+ {
+ fail("argin value error in op129");
+ }
+ if (!comp_0117(arginout.value))
+ {
+ fail("arginout value error in op129");
+ }
+ argout.value = cons_0064();
+ arginout.value = cons_0064();
+
+ F_union _ret;
+ _ret = cons_0064();
+ return (_ret);
+ }
+
+ public F_union op130(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ if (!comp_0120(argin))
+ {
+ fail("argin value error in op130");
+ }
+ if (!comp_0120(arginout.value))
+ {
+ fail("arginout value error in op130");
+ }
+ argout.value = cons_0066();
+ arginout.value = cons_0066();
+
+ F_union _ret;
+ _ret = cons_0066();
+ return (_ret);
+ }
+
+ public F_union op131(F_union argin, F_unionHolder argout,
+ F_unionHolder arginout
+ )
+ {
+ if (!comp_0123(argin))
+ {
+ fail("argin value error in op131");
+ }
+ if (!comp_0123(arginout.value))
+ {
+ fail("arginout value error in op131");
+ }
+ argout.value = cons_0068();
+ arginout.value = cons_0068();
+
+ F_union _ret;
+ _ret = cons_0068();
+ return (_ret);
+ }
+
+ public void excop1()
+ throws A_except1
+ {
+ A_except1 _exc;
+ _exc = cons_0070();
+ throw (_exc);
+ }
+
+ public void excop2()
+ throws A_except2
+ {
+ A_except2 _exc;
+ _exc = cons_0071();
+ throw (_exc);
+ }
+
+ public void excop3()
+ throws B_except
+ {
+ B_except _exc;
+ _exc = cons_0072();
+ throw (_exc);
+ }
+
+ public void excop4()
+ throws C_except
+ {
+ C_except _exc;
+ _exc = cons_0073();
+ throw (_exc);
+ }
+
+ public void excop5()
+ throws D_except
+ {
+ D_except _exc;
+ _exc = cons_0076();
+ throw (_exc);
+ }
+
+ public void excop6()
+ throws E_except
+ {
+ E_except _exc;
+ _exc = cons_0084();
+ throw (_exc);
+ }
+
+ public void excop7()
+ throws F_except1
+ {
+ F_except1 _exc;
+ _exc = cons_0087();
+ throw (_exc);
+ }
+
+ public void excop8()
+ throws F_except2
+ {
+ F_except2 _exc;
+ _exc = cons_0092();
+ throw (_exc);
+ }
+
+ public void excop9()
+ throws F_except3
+ {
+ F_except3 _exc;
+ _exc = cons_0095();
+ throw (_exc);
+ }
+
+ public void excop10()
+ throws G_except
+ {
+ G_except _exc;
+ _exc = cons_0098();
+ throw (_exc);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/RequestTest.java b/gnu/testlet/org/omg/CORBA/ORB/RequestTest.java
new file mode 100644
index 00000000..c8f8983a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/RequestTest.java
@@ -0,0 +1,232 @@
+// Tags: JDK1.2
+/* RequestTest.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.ExceptionList;
+import org.omg.CORBA.NVList;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Request;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+import org.omg.CORBA.TCKind;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.org.omg.CORBA.ORB.communication.node;
+import gnu.testlet.org.omg.CORBA.ORB.communication.ourUserExceptionHelper;
+
+/**
+ * Test invocations using org.omg.Request.
+ *
+ * Warning: this test start CORBA server on port 1126. Be sure your
+ * security restrictions allow that server to start.
+ *
+ * This Classpath example was modified, converting it into the test.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class RequestTest
+ extends Asserter
+ implements Testlet
+{
+ ORB orb;
+ org.omg.CORBA.Object object;
+
+ public void test(TestHarness harness)
+ {
+ try
+ {
+ setUp();
+ }
+ catch (Exception ex)
+ {
+ harness.fail("Unexpected " + ex.getClass().getName() + ":" +
+ ex.getMessage() + " at setup."
+ );
+ }
+
+ h = harness;
+
+ testParameters();
+ testSystemException();
+ testWideNarrowStrings();
+ }
+
+ public void testParameters()
+ {
+ Request r =
+ object._create_request(null, "passSimple", orb.create_list(0), null);
+
+ ByteHolder a_byte = new ByteHolder((byte) 0);
+ ShortHolder a_short = new ShortHolder((short) 3);
+ StringHolder a_string = new StringHolder("[string 4]");
+
+ // This is an 'out' parameter; the value must not be passed to servant.
+ DoubleHolder a_double = new DoubleHolder(56.789);
+
+ r.add_inout_arg().insert_octet((byte) 0);
+ r.add_in_arg().insert_long(2);
+ r.add_inout_arg().insert_short((short) 3);
+ r.add_inout_arg().insert_string("[string 4]");
+ r.add_out_arg().type(orb.get_primitive_tc(TCKind.tk_double));
+
+ NVList para = r.arguments();
+
+ try
+ {
+ assertEquals("octet", para.item(0).value().extract_octet(), 0);
+ assertEquals("long (in parameter)",
+ para.item(1).value().extract_long(), 2
+ );
+ assertEquals("short", para.item(2).value().extract_short(), 3);
+ assertEquals("string", para.item(3).value().extract_string(),
+ "[string 4]"
+ );
+ }
+ catch (Exception ex)
+ {
+ fail("Unexpected " + ex.getClass().getName() + ":" + ex.getMessage());
+ }
+
+ // For the last parameter, the value is not set.
+ r.set_return_type(orb.get_primitive_tc(TCKind.tk_long));
+
+ r.invoke();
+
+ assertEquals("Returned value", r.result().value().extract_long(), 452572);
+
+ para = r.arguments();
+
+ try
+ {
+ assertEquals("octet", para.item(0).value().extract_octet(), 1);
+ assertEquals("long (in parameter)",
+ para.item(1).value().extract_long(), 2
+ );
+ assertEquals("short", para.item(2).value().extract_short(), 4);
+ assertEquals("string", para.item(3).value().extract_string(),
+ "[string 4] [return]"
+ );
+ assertEquals("double", para.item(4).value().extract_double(), 1.0,
+ Double.MIN_VALUE
+ );
+ }
+ catch (Exception ex)
+ {
+ fail("Unexpected " + ex.getClass().getName() + ":" + ex.getMessage());
+ }
+ }
+
+ public void testSystemException()
+ {
+ try
+ {
+ ExceptionList exList = orb.create_exception_list();
+ exList.add(ourUserExceptionHelper.type());
+
+ Request rq =
+ object._create_request(null, "throwException", orb.create_list(1),
+ null, exList, null
+ );
+
+ rq.add_in_arg().insert_long(-55);
+
+ rq.invoke();
+
+ fail("The BAD_OPERATION is not thrown");
+ }
+ catch (BAD_OPERATION ex)
+ {
+ assertEquals("Minor code", ex.minor, 456);
+ }
+ }
+
+ public void testWideNarrowStrings()
+ throws BAD_OPERATION
+ {
+ Request rq =
+ object._create_request(null, "passCharacters", orb.create_list(0), null);
+
+ rq.add_in_arg().insert_wstring("wide string");
+ rq.add_in_arg().insert_string("narrow string");
+
+ rq.set_return_type(orb.get_primitive_tc(TCKind.tk_wstring));
+
+ rq.invoke();
+
+ assertEquals("Returned value", rq.result().value().extract_wstring(),
+ "return 'narrow string' and 'wide string'"
+ );
+ }
+
+ protected void setUp()
+ throws java.lang.Exception
+ {
+ String ior = comServer.start_server(new String[ 0 ])[0];
+
+ orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+ object = orb.string_to_object(ior);
+ }
+
+ private void getImage(StringBuffer b, node n)
+ {
+ b.append(n.name);
+ b.append(": (");
+
+ for (int i = 0; i < n.children.length; i++)
+ {
+ getImage(b, n.children [ i ]);
+ b.append(' ');
+ }
+ b.append(") ");
+ }
+
+ private node nod(String hdr)
+ {
+ node n = new node();
+ n.children = new node[ 0 ];
+ n.name = hdr;
+
+ return n;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/comServer.java b/gnu/testlet/org/omg/CORBA/ORB/comServer.java
new file mode 100644
index 00000000..d684a20d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/comServer.java
@@ -0,0 +1,125 @@
+// Tags: not-a-test
+// Uses: ../../CORBA_2_3/ORB/Valtype/GreetingsServant
+
+/* comServer.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB;
+
+import gnu.testlet.org.omg.CORBA.ORB.communication.comServant;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.GreetingsServant;
+
+import org.omg.CORBA.ORB;
+
+/**
+ * The ORB server class, used for test communication.
+ * To avoid pausing for each test, all CORBA tests, related to the
+ * client - server communication, are connected to this server.
+ *
+ * Warning: this server starts on ports 1126 and up.
+ *
+ * Modified, converting Classpath example into test.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class comServer
+{
+ public static String[] IORs;
+ public static ORB orb;
+
+ public static void main(String[] args)
+ {
+ start_server(args);
+ }
+
+ /**
+ * Start the ORB server and return the servant IOR reference. In this
+ * test, both server and client are started on the same virtual machine,
+ * just in the different threads.
+ */
+ public static synchronized String[] start_server(String[] args)
+ {
+ // Check maybe is already running.
+ if (IORs != null)
+ return IORs;
+ try
+ {
+ IORs = new String[ 2 ];
+
+ // Create and initialize the ORB.
+ orb = org.omg.CORBA.ORB.init(args, null);
+
+ // Create the test 1 servant and register it with the ORB.
+ comServant tester = new comServant();
+ orb.connect(tester);
+
+ // Create the test 2 servant and register it with the ORB.
+ GreetingsServant tester2 = new GreetingsServant();
+ orb.connect(tester2);
+
+ // Storing the IOR references.
+ IORs [ 0 ] = orb.object_to_string(tester);
+ IORs [ 1 ] = orb.object_to_string(tester2);
+
+ new Thread()
+ {
+ public void run()
+ {
+ // wait for invocations from clients
+ orb.run();
+ }
+ }.start();
+
+ // Sleep for 3 seconds, allowing the server to start.
+ try
+ {
+ Thread.sleep(3000);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ return IORs;
+ }
+ catch (Exception e)
+ {
+ IORs = null;
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Entries b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Entries
new file mode 100644
index 00000000..0ce9ade6
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Entries
@@ -0,0 +1,15 @@
+/_comTesterImplBase.java/1.2/Thu Jun 29 18:27:09 2006//
+/_comTesterStub.java/1.1/Wed May 18 21:56:36 2005//
+/comServant.java/1.1/Wed May 18 21:56:36 2005//
+/comTester.java/1.2/Mon Jun 26 14:18:51 2006//
+/node.java/1.1/Wed May 18 21:56:36 2005//
+/nodeHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/nodeHolder.java/1.1/Wed May 18 21:56:36 2005//
+/ourUserException.java/1.2/Mon Jun 26 14:18:51 2006//
+/ourUserExceptionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/passThis.java/1.1/Wed May 18 21:56:36 2005//
+/passThisHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/returnThis.java/1.1/Wed May 18 21:56:36 2005//
+/returnThisHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/returnThisHolder.java/1.1/Wed May 18 21:56:36 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Repository b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Repository
new file mode 100644
index 00000000..33f0ab15
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/ORB/communication
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Root b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java b/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java
new file mode 100644
index 00000000..771fc824
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterImplBase.java
@@ -0,0 +1,201 @@
+// Tags: not-a-test
+/* _comTesterImplBase.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+import org.omg.CORBA.StringSeqHelper;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+
+/**
+ * The base for the class that is actually implementing the functionality
+ * of the object on the server side ({@link comServant} of our case).
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public abstract class _comTesterImplBase
+ extends ObjectImpl
+ implements comTester, InvokeHandler
+{
+/**
+ * When the server receives the request message from client, it
+ * calls this method.
+ *
+ * @param a_method the method name.
+ * @param in the CDR stream, from where the implementing code must
+ * read the method parameters.
+ * @param rh the response handler, used to get the stream where
+ * the returned values must be written.
+ *
+ * @return the stream, obtained from the response handler.
+ */
+ public OutputStream _invoke(String a_method, InputStream in,
+ ResponseHandler rh
+ )
+ {
+ OutputStream out;
+
+ /* Get the field value. */
+ if (a_method.equals("_get_theField"))
+ {
+ int result = (int) 0;
+ result = theField();
+ out = rh.createReply();
+ out.write_long(result);
+ }
+ else
+ /* Set the field value. */
+ if (a_method.equals("_set_theField"))
+ {
+ int newTheField = in.read_long();
+ theField(newTheField);
+ out = rh.createReply();
+ }
+ else
+ /* Passes various parameters in both directions. */
+ if (a_method.equals("passSimple"))
+ {
+ ByteHolder an_octet = new ByteHolder();
+ an_octet.value = in.read_octet();
+
+ int a_long = in.read_long();
+ ShortHolder a_short = new ShortHolder();
+ a_short.value = in.read_short();
+
+ StringHolder a_string = new StringHolder();
+ a_string.value = in.read_string();
+
+ DoubleHolder a_double = new DoubleHolder();
+ int result = passSimple(an_octet, a_long, a_short, a_string, a_double);
+ out = rh.createReply();
+ out.write_long(result);
+ out.write_octet(an_octet.value);
+ out.write_short(a_short.value);
+ out.write_string(a_string.value);
+ out.write_double(a_double.value);
+ }
+ else
+ /* Passes the 'wide' (usually Unicode) string and the ordinary string. */
+ if (a_method.equals("passCharacters"))
+ {
+ String wide = in.read_wstring();
+ String narrow = in.read_string();
+ String result = null;
+ result = passCharacters(wide, narrow);
+ out = rh.createReply();
+ out.write_wstring(result);
+ }
+ else
+ /*
+ Throws either 'ourUserException' with the 'ourField' field
+ initialised to the passed positive value
+ or system exception (if the parameter is zero or negative).
+ */
+ if (a_method.equals("throwException"))
+ {
+ try
+ {
+ int parameter = in.read_long();
+ throwException(parameter);
+ out = rh.createReply();
+ }
+ catch (ourUserException exception)
+ {
+ out = rh.createExceptionReply();
+ ourUserExceptionHelper.write(out, exception);
+ }
+ }
+ else
+ /* Passes and returns the structures. */
+ if (a_method.equals("passStructure"))
+ {
+ passThis in_structure = passThisHelper.read(in);
+ returnThis result = null;
+ result = passStructure(in_structure);
+ out = rh.createReply();
+ returnThisHelper.write(out, result);
+ }
+ else
+ /* Passes and returns the string sequence. */
+ if (a_method.equals("passStrings"))
+ {
+ String[] arg = StringSeqHelper.read(in);
+ String[] result = null;
+ result = passStrings(arg);
+ out = rh.createReply();
+ StringSeqHelper.write(out, result);
+ }
+ else
+ /** Pass and return the tree structure */
+ if (a_method.equals("passTree"))
+ {
+ nodeHolder tree = new nodeHolder();
+ tree.value = nodeHelper.read(in);
+ passTree(tree);
+ out = rh.createReply();
+ nodeHelper.write(out, tree.value);
+ }
+
+ else
+ throw new BAD_OPERATION("No method: " + a_method, 0,
+ CompletionStatus.COMPLETED_MAYBE
+ );
+
+ return out;
+ }
+
+ /**
+ * Return an array of this object repository ids.
+ */
+ public String[] _ids()
+ {
+ // They are the same as for the stub.
+ return _comTesterStub._ids;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterStub.java b/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterStub.java
new file mode 100644
index 00000000..b11c8539
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/_comTesterStub.java
@@ -0,0 +1,427 @@
+/* _comTesterStub.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.MARSHAL;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+import org.omg.CORBA.StringSeqHelper;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+/**
+ * The stub (proxy) class, representing the remote object on the client
+ * side. It has all the same methods as the actual implementation
+ * on the server side. These methods contain the code for remote
+ * invocation.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class _comTesterStub
+ extends ObjectImpl
+ implements comTester
+{
+ /**
+ * A string array of comTester repository ids.
+ */
+ public static String[] _ids =
+ {
+ "IDL:gnu/testlet/org/omg/CORBA/ORB/communication/comTester:1.0"
+ };
+
+ /**
+ * Return an array of comTester repository ids.
+ */
+ public String[] _ids()
+ {
+ return _ids;
+ }
+
+ /**
+ * Passes wide (UTF-16) string and narrow (ISO8859_1) string.
+ * @see gnu.CORBA.GIOP.CharSets_OSF for supported and default
+ * encodings.
+ */
+ public String passCharacters(String wide, String narrow)
+ {
+ InputStream in = null;
+ try
+ {
+ // Get the output stream.
+ OutputStream out = _request("passCharacters", true);
+
+ // Write the parameters.
+
+ // The first string is passed as "wide"
+ // (usually 16 bit UTF-16) string.
+ out.write_wstring(wide);
+
+ // The second string is passed as "narrow"
+ // (usually 8 bit ISO8859_1) string.
+ out.write_string(narrow);
+
+ // Do the invocation.
+ in = _invoke(out);
+
+ // Read the method return value.
+ String result = in.read_wstring();
+ return result;
+ }
+ catch (ApplicationException ex)
+ {
+ // The exception has been throws on remote side, but we
+ // do not expect any. Throw the MARSHAL exception.
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ // This exception means that the parameters must be re-written.
+ return passCharacters(wide, narrow);
+ }
+ finally
+ {
+ // Release the resources, associated with the reply stream.
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Passes various parameters in both directions. The parameters that
+ * shoud also return the values are wrapped into holders.
+ */
+ public int passSimple(ByteHolder an_octet, int a_long, ShortHolder a_short,
+ StringHolder a_string, DoubleHolder a_double
+ )
+ {
+ InputStream in = null;
+ try
+ {
+ // Get the stream where the parameters must be written:
+ OutputStream out = _request("passSimple", true);
+
+ // Write the parameters.
+ out.write_octet(an_octet.value);
+ out.write_long(a_long);
+ out.write_short(a_short.value);
+ out.write_string(a_string.value);
+
+ // Invoke the method.
+ in = _invoke(out);
+
+ // Read the returned values.
+ int result = in.read_long();
+
+ // Read the inout and out parameters.
+ an_octet.value = in.read_octet();
+ a_short.value = in.read_short();
+ a_string.value = in.read_string();
+ a_double.value = in.read_double();
+ return result;
+ }
+ catch (ApplicationException ex)
+ {
+ // Handle excepion on remote side.
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ // Handle instruction to resend the parameters.
+ return passSimple(an_octet, a_long, a_short, a_string, a_double);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ Passes and returns the string sequence.
+ */
+ public String[] passStrings(String[] arg)
+ {
+ InputStream in = null;
+ try
+ {
+ // Get the stream where the parameters must be written:
+ OutputStream out = _request("passStrings", true);
+
+ // Wrap the string array using the string sequence helper.
+ StringSeqHelper.write(out, arg);
+
+ // Invoke the method.
+ in = _invoke(out);
+
+ // Read the returned result using the string sequence helper.
+ String[] result = StringSeqHelper.read(in);
+ return result;
+ }
+ catch (ApplicationException ex)
+ {
+ // Handle the exception, thrown on remote side.
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ return passStrings(arg);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ Passes and returns the structures.
+ */
+ public returnThis passStructure(passThis in_structure)
+ {
+ InputStream in = null;
+ try
+ {
+ // Get the stream where the parameters must be written.
+ OutputStream out = _request("passStructure", true);
+
+ // Write the structure, using its helper.
+ passThisHelper.write(out, in_structure);
+
+ // Invoke the method.
+ in = _invoke(out);
+
+ // Read the returned structer, using another helper.
+ returnThis result = returnThisHelper.read(in);
+ return result;
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ return passStructure(in_structure);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Pass and return the tree structure
+ */
+ public void passTree(nodeHolder tree)
+ {
+ InputStream in = null;
+ try
+ {
+ // Get the stream where the parameters must be written.
+ OutputStream out = _request("passTree", true);
+
+ // Write the tree (node with its chilred, grandchildren and so on),
+ // using the appropriate helper.
+ nodeHelper.write(out, tree.value);
+
+ // Call the method.
+ in = _invoke(out);
+
+ // Read the returned tree.
+ tree.value = nodeHelper.read(in);
+ }
+ catch (ApplicationException ex)
+ {
+ // Handle eception on remote side.
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ passTree(tree);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * One way call of the remote method.
+ */
+ public void sayHello()
+ {
+ InputStream in = null;
+ try
+ {
+ // As we do not expect any response, the second
+ // parameter is 'false'.
+ OutputStream out = _request("sayHello", false);
+ in = _invoke(out);
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ sayHello();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Get the field value.
+ */
+ public int theField()
+ {
+ InputStream in = null;
+ try
+ {
+ // The special name of operation instructs just to get
+ // the field value rather than calling the method.
+ OutputStream out = _request("_get_theField", true);
+ in = _invoke(out);
+
+ int result = in.read_long();
+ return result;
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ return theField();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Set the field value.
+ */
+ public void theField(int newTheField)
+ {
+ InputStream in = null;
+ try
+ {
+ // The special name of operation instructs just to set
+ // the field value rather than calling the method.
+ OutputStream out = _request("_set_theField", true);
+ out.write_long(newTheField);
+ in = _invoke(out);
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException _rm)
+ {
+ theField(newTheField);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * The server side exception tests.
+ *
+ * @param parameter the server throws the user exception in the case
+ * of the positive value of this argument, and system
+ * exception otherwise.
+ *
+ * @throws ourUserException
+ */
+ public void throwException(int parameter)
+ throws ourUserException
+ {
+ InputStream in = null;
+ try
+ {
+ // Get stream.
+ OutputStream out = _request("throwException", true);
+
+ // Write parameter.
+ out.write_long(parameter);
+
+ // Call method.
+ in = _invoke(out);
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ // Get the exception id.
+ String id = ex.getId();
+
+ // If this is the user exception we expect to catch, read and throw
+ // it here. The system exception, if thrown, is handled by _invoke.
+ if (id.equals("IDL:gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException:1.0")
+ )
+ throw ourUserExceptionHelper.read(in);
+ else
+ throw new MARSHAL(id);
+ }
+ catch (RemarshalException _rm)
+ {
+ throwException(parameter);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/comServant.java b/gnu/testlet/org/omg/CORBA/ORB/communication/comServant.java
new file mode 100644
index 00000000..0e253fa1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/comServant.java
@@ -0,0 +1,200 @@
+/* comServant.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.PrintStream;
+
+/**
+ * This class handles the actual server functionality in this test
+ * application. When the client calls the remote method, this
+ * finally results calling the method of this class.
+ *
+ * The parameters, passed to the server only, are just parameters of the
+ * java methods. The parameters that shuld be returned to client
+ * are wrapped into holder classes.
+ *
+ * This servant was modified, removing all messages that the original
+ * Classpath example prints to console.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class comServant
+ extends _comTesterImplBase
+{
+ /**
+ * The field, that can be set and checked by remote client.
+ */
+ private int m_theField = 17;
+
+ /**
+ * Passes wide (UTF-16) string and narrow (ISO8859_1) string.
+ * @see gnu.CORBA.GIOP.CharSets_OSF for supported and default
+ * encodings. Returs they generalization as a wide string.
+ */
+ public String passCharacters(String wide, String narrow)
+ {
+ return "return '" + narrow + "' and '" + wide + "'";
+ }
+
+ /**
+ * Accept and return parameters, having various types.
+ */
+ public int passSimple(ByteHolder an_octet, int a_long, ShortHolder a_short,
+ StringHolder a_string, DoubleHolder a_double
+ )
+ {
+ // Returning incremented values.
+ an_octet.value++;
+ a_short.value++;
+
+ // OUT parameter, return only.
+ a_double.value = 1;
+ a_string.value += " [return]";
+ return 452572;
+ }
+
+ /**
+ * Accept and return the string arrays.
+ */
+ public String[] passStrings(String[] args)
+ {
+ String[] rt = new String[ args.length ];
+ for (int i = 0; i < args.length; i++)
+ {
+ // Returning the changed content.
+ rt [ i ] = args [ i ] + ":" + args [ i ];
+ }
+ return rt;
+ }
+
+ /**
+ * Accept and return the structures.
+ */
+ public returnThis passStructure(passThis in_structure)
+ {
+ // Create and send back the returned structure.
+ returnThis r = new returnThis();
+ r.c = in_structure.a + in_structure.b;
+ r.n = 555;
+ r.arra = new int[] { 11, 22, 33 };
+ return r;
+ }
+
+ /**
+ * Pass and return the tree structure
+ */
+ public void passTree(nodeHolder tree)
+ {
+ StringBuffer b = new StringBuffer();
+
+ // This both creates the tree string representation
+ // and changes the node names.
+ getImage(b, tree.value);
+ }
+
+ /**
+ * Get the value of our field.
+ */
+ public int theField()
+ {
+ return m_theField;
+ }
+
+ /**
+ * Set the value of our field.
+ */
+ public void theField(int a_field)
+ {
+ m_theField = a_field;
+ }
+
+ /**
+ * Throw an exception.
+ *
+ * @param parameter specifies which exception will be thrown.
+ *
+ * @throws ourUserException for the non negative parameter.
+ * @throws BAD_OPERATION for the negative parameter.
+ */
+ public void throwException(int parameter)
+ throws ourUserException
+ {
+ if (parameter > 0)
+ {
+ throw new ourUserException(parameter);
+ }
+ else
+ {
+ throw new BAD_OPERATION(456, CompletionStatus.COMPLETED_YES);
+ }
+ }
+
+ /**
+ * Visit all tree nodes, getting the string representation
+ * and adding '++' to the node names.
+ *
+ * @param b the buffer to collect the string representation.
+ * @param n the rott tree node.
+ */
+ private void getImage(StringBuffer b, node n)
+ {
+ b.append(n.name);
+ n.name = n.name + "++";
+ b.append(": (");
+
+ for (int i = 0; i < n.children.length; i++)
+ {
+ getImage(b, n.children [ i ]);
+ b.append(' ');
+ }
+ b.append(") ");
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java b/gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java
new file mode 100644
index 00000000..ba1bf935
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/comTester.java
@@ -0,0 +1,107 @@
+// Tags: not-a-test
+/* comTester.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.ByteHolder;
+import org.omg.CORBA.DoubleHolder;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StringHolder;
+
+/**
+ * The interface of our remote object. Some IDL compiles split it
+ * into "comTester" and "comTesterOperations", but we do not see
+ * much sense in doing this here.
+ *
+ * @author Audrius Meskauskas(AudriusA@Bioinformatics.org)
+ */
+public interface comTester
+{
+ /**
+ * Passes wide (UTF-16) string and narrow (ISO8859_1) string.
+ * Both types are mapped into java String.
+ *
+ * @see gnu.CORBA.GIOP.CharSets_OSF for supported and default
+ * encodings.
+ */
+ String passCharacters(String wide, String narrow);
+
+ /**
+ * Passes various parameters in both directions.
+ * The parameters that must return the value are wrapped in holders.
+ */
+ int passSimple(ByteHolder an_octet, int a_long, ShortHolder a_short,
+ StringHolder a_string, DoubleHolder a_double
+ );
+
+ /**
+ * Passes and returns the string sequence (flexible length).
+ */
+ String[] passStrings(String[] arg);
+
+ /**
+ * Passes and returns the structures.
+ */
+ returnThis passStructure(passThis in_structure);
+
+ /**
+ * Pass and return the tree structure
+ *
+ * @param tree the root node of the tree.
+ */
+ void passTree(nodeHolder tree);
+
+ /**
+ * Gets the value of the field in our object.
+ */
+ int theField();
+
+ /**
+ * Sets the value for the field in our object.
+ */
+ void theField(int newTheField);
+
+ /**
+ * Throws either 'ourUserException' with the 'ourField' field
+ * initialised to the passed positive value
+ * or system exception (if the parameter is zero or negative).
+ */
+ void throwException(int parameter)
+ throws ourUserException;
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/node.java b/gnu/testlet/org/omg/CORBA/ORB/communication/node.java
new file mode 100644
index 00000000..cece4b6b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/node.java
@@ -0,0 +1,56 @@
+/* node.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+/**
+ * The support for the tree structure, used in the test of
+ * ability to pass and return the tree structure.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class node
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ /** The node name */
+ public String name = null;
+
+ /** The node children. */
+ public node[] children = null;
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java b/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java
new file mode 100644
index 00000000..fe8ddcef
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHelper.java
@@ -0,0 +1,162 @@
+// Tags: not-a-test
+/* nodeHelper.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * This class is used for various helper operations around the
+ * tree {@link} structure.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public abstract class nodeHelper
+{
+ /**
+ * The node repository id, used to identify the structure.
+ */
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/CORBA/ORB/communication/node:1.0";
+
+ /**
+ * Caches the typecode, allowing to compute it only once.
+ */
+ private static TypeCode typeCode;
+
+ /**
+ * This is used to handle the recursive object references in
+ * CORBA - supported way. The tree node definition is recursive,
+ * as the node contains the sequence of the nodes as its field.
+ */
+ private static boolean active;
+
+ /**
+ * Extract the tree node from the unversal CORBA wrapper, Any.
+ */
+ public static node extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ /**
+ * Get the node string identifer.
+ */
+ public static String id()
+ {
+ return _id;
+ }
+
+ /**
+ * Insert the node into the universal CORBA wrapper, Any.
+ */
+ public static void insert(Any a, node that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ /**
+ * Read the node from the common data reprentation (CDR) stream.
+ */
+ public static node read(InputStream istream)
+ {
+ node value = new node();
+ value.name = istream.read_string();
+
+ int _len0 = istream.read_long();
+ value.children = new node[ _len0 ];
+ for (int i = 0; i < value.children.length; ++i)
+ value.children [ i ] = nodeHelper.read(istream);
+ return value;
+ }
+
+ /**
+ * Get the node type code definition.
+ */
+ public static synchronized TypeCode type()
+ {
+ // Compute the type code only once.
+ if (typeCode == null)
+ {
+ synchronized (TypeCode.class)
+ {
+ if (typeCode == null)
+ {
+ // To avoid the infinite recursion loop, the
+ // recursive reference is handled in specific way.
+ if (active)
+ return ORB.init().create_recursive_tc(_id);
+ active = true;
+
+ // List all memebers of the node structure.
+ StructMember[] members = new StructMember[ 2 ];
+ TypeCode memberType;
+ memberType = ORB.init().create_string_tc(0);
+ members [ 0 ] = new StructMember("name", memberType, null);
+ memberType = ORB.init().create_recursive_tc("");
+ members [ 1 ] = new StructMember("children", memberType, null);
+ typeCode =
+ ORB.init().create_struct_tc(nodeHelper.id(), "node", members);
+ active = false;
+ }
+ }
+ }
+ return typeCode;
+ }
+
+ /**
+ * Write the node into the common data reprentation (CDR) stream.
+ */
+ public static void write(OutputStream ostream, node value)
+ {
+ ostream.write_string(value.name);
+ ostream.write_long(value.children.length);
+ for (int i = 0; i < value.children.length; ++i)
+ nodeHelper.write(ostream, value.children [ i ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHolder.java b/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHolder.java
new file mode 100644
index 00000000..a9cf5ff5
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/nodeHolder.java
@@ -0,0 +1,99 @@
+/* nodeHolder.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.Streamable;
+
+/**
+ * The node holder is a wrapper about the node data structure. It
+ * can be used where the node must be passed both to and from
+ * the method being called. The same structure holds the tree,
+ * as it can be represented as a root node with children.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class nodeHolder
+ implements Streamable
+{
+ /**
+ * Stores the node value.
+ */
+ public node value;
+
+ /**
+ * Creates the node holder with the null initial value.
+ */
+ public nodeHolder()
+ {
+ }
+
+ /**
+ * Creates the node holder with the given initial value.
+ */
+ public nodeHolder(node initialValue)
+ {
+ value = initialValue;
+ }
+
+ /**
+ * Reads the node value from the common data representation (CDR)
+ * stream.
+ */
+ public void _read(InputStream in)
+ {
+ value = nodeHelper.read(in);
+ }
+
+ /**
+ * Writes the node value into common data representation (CDR)
+ * stream.
+ * @return
+ */
+ public TypeCode _type()
+ {
+ return nodeHelper.type();
+ }
+
+ public void _write(OutputStream out)
+ {
+ nodeHelper.write(out, value);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java b/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java
new file mode 100644
index 00000000..f4028c0a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException.java
@@ -0,0 +1,72 @@
+// Tags: not-a-test
+/* ourUserException.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.UserException;
+import org.omg.CORBA.portable.IDLEntity;
+
+/**
+ * Our user exception, thrown in the tests of handling the exceptions,
+ * thrown on remote side. The exception contains the user - defined
+ * data field that is transferred from client to the server when the
+ * exception is thrown.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class ourUserException
+ extends UserException
+ implements IDLEntity
+{
+ /**
+ * Our specific field, transferred to client.
+ */
+ public int ourField;
+
+ /**
+ * Create the exception.
+ *
+ * @param _ourField the value of our specific field.
+ */
+ public ourUserException(int _ourField)
+ {
+ ourField = _ourField;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java b/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java
new file mode 100644
index 00000000..dd121297
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/ourUserExceptionHelper.java
@@ -0,0 +1,109 @@
+// Tags: not-a-test
+/* ourUserExceptionHelper.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+
+/**
+ * The class, providing various helper operations with our user
+ * exception.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public abstract class ourUserExceptionHelper
+{
+ /**
+ * The exception repository id. This name is also used to find the
+ * mapping local CORBA class.
+ */
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/CORBA/ORB/communication/ourUserException:1.0";
+
+ /**
+ * Get the exception repository id.
+ */
+ public static String id()
+ {
+ return _id;
+ }
+
+ /**
+ * Read the exception from the CDR stream.
+ */
+ public static ourUserException read(org.omg.CORBA.portable.InputStream istream)
+ {
+ ourUserException value = new ourUserException(0);
+
+ // The repository ID is not used
+ istream.read_string();
+ value.ourField = istream.read_long();
+ return value;
+ }
+
+ /**
+ * Create the type code of this exception.
+ */
+ public static synchronized TypeCode type()
+ {
+ StructMember[] members = new StructMember[ 1 ];
+ TypeCode member = null;
+ member = ORB.init().get_primitive_tc(TCKind.tk_long);
+ members [ 0 ] = new StructMember("ourField", member, null);
+ return ORB.init().create_struct_tc(ourUserExceptionHelper.id(),
+ "ourUserException", members
+ );
+ }
+
+ /**
+ * Write the exception into the CDR stream.
+ */
+ public static void write(org.omg.CORBA.portable.OutputStream ostream,
+ ourUserException value
+ )
+ {
+ ostream.write_string(id());
+ ostream.write_long(value.ourField);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/passThis.java b/gnu/testlet/org/omg/CORBA/ORB/communication/passThis.java
new file mode 100644
index 00000000..41f58e26
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/passThis.java
@@ -0,0 +1,62 @@
+/* passThis.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+
+/**
+ * The data structure, passed from to the server from client in our tests.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class passThis
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ /**
+ * The first string, stored in this structure (defined as
+ * "narrow string").
+ */
+ public String a;
+
+ /**
+ * The second string, stored in this structure (define as
+ * "wide" (usually Unicode) string.
+ */
+ public String b;
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java b/gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java
new file mode 100644
index 00000000..c6829fd1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/passThisHelper.java
@@ -0,0 +1,104 @@
+// Tags: not-a-test
+/* passThisHelper.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * The helper operations for the {@link passThis}.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public abstract class passThisHelper
+{
+ /**
+ * The repository ID of the {@link passThis}.
+ */
+ private static String id =
+ "IDL:gnu/testlet/org/omg/CORBA/ORB/communication/passThis:1.0";
+
+ /**
+ * Get the repository id.
+ */
+ public static String id()
+ {
+ return id;
+ }
+
+ /**
+ * Read the structure from the CDR stram.
+ */
+ public static passThis read(InputStream istream)
+ {
+ passThis value = new passThis();
+ value.a = istream.read_string();
+ value.b = istream.read_wstring();
+ return value;
+ }
+
+ /**
+ * Get the type code of this structure.
+ */
+ public static synchronized TypeCode type()
+ {
+ StructMember[] members = new StructMember[ 2 ];
+ TypeCode member = null;
+ member = ORB.init().create_string_tc(0);
+ members [ 0 ] = new StructMember("a", member, null);
+ member = ORB.init().create_string_tc(0);
+ members [ 1 ] = new StructMember("b", member, null);
+ return ORB.init().create_struct_tc(passThisHelper.id(), "passThis", members);
+ }
+
+ /**
+ * Write the structure into the CDR stream.
+ */
+ public static void write(OutputStream ostream, passThis value)
+ {
+ ostream.write_string(value.a);
+ ostream.write_wstring(value.b);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/returnThis.java b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThis.java
new file mode 100644
index 00000000..d31abe69
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThis.java
@@ -0,0 +1,67 @@
+/* returnThis.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.portable.IDLEntity;
+
+/**
+ * This data structure is returned from the server to client in our tests.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class returnThis
+ implements IDLEntity
+{
+ /**
+ * The string field.
+ */
+ public String c;
+
+ /**
+ * The CORBA array field. This field is handled as the fixed
+ * size CORBA array, but structures can also have the variable
+ * size CORBA sequences.
+ */
+ public int[] arra = new int[3];
+
+ /**
+ * The int (CORBA long) field.
+ */
+ public int n;
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java
new file mode 100644
index 00000000..7d5929b8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHelper.java
@@ -0,0 +1,117 @@
+// Tags: not-a-test
+/* returnThisHelper.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * This class defines the helper operations for {@link returnThis}.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public abstract class returnThisHelper
+{
+ /**
+ * The repository id.
+ */
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/CORBA/ORB/communication/returnThis:1.0";
+
+ /**
+ * Return the repository id.
+ */
+ public static String id()
+ {
+ return _id;
+ }
+
+ /**
+ * Read the structure from the CDR stream.
+ */
+ public static returnThis read(InputStream istream)
+ {
+ returnThis value = new returnThis();
+ value.n = istream.read_long();
+ value.c = istream.read_wstring();
+ value.arra = new int[ 3 ];
+
+ // Read the fixed size array.
+ for (int i = 0; i < 3; i++)
+ value.arra [ i ] = istream.read_long();
+ return value;
+ }
+
+ /**
+ * Create the typecode.
+ */
+ public static synchronized TypeCode type()
+ {
+ StructMember[] members = new StructMember[ 3 ];
+ TypeCode member = ORB.init().get_primitive_tc(TCKind.tk_long);
+ members [ 0 ] = new StructMember("n", member, null);
+ member = ORB.init().create_string_tc(0);
+ members [ 1 ] = new StructMember("c", member, null);
+ member = ORB.init().get_primitive_tc(TCKind.tk_long);
+ member = ORB.init().create_array_tc(3, member);
+ members [ 2 ] = new StructMember("arra", member, null);
+ return ORB.init().create_struct_tc(returnThisHelper.id(), "returnThis",
+ members
+ );
+ }
+
+ /**
+ * Write the structure to the CDR stream.
+ */
+ public static void write(OutputStream ostream, returnThis value)
+ {
+ ostream.write_long(value.n);
+ ostream.write_wstring(value.c);
+
+ // Write the fixed size array.
+ for (int i = 0; i < 3; i++)
+ ostream.write_long(value.arra [ i ]);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHolder.java b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHolder.java
new file mode 100644
index 00000000..9f408cd9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/communication/returnThisHolder.java
@@ -0,0 +1,97 @@
+/* returnThisHolder.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.testlet.org.omg.CORBA.ORB.communication;
+
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.Streamable;
+
+/**
+ * The holder for the structure, returned from the server.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public final class returnThisHolder
+ implements Streamable
+{
+ /**
+ * The enclosed structure.
+ */
+ public returnThis value = null;
+
+ /**
+ * Create the empty holder.
+ */
+ public returnThisHolder()
+ {
+ }
+
+ /**
+ * Crate the holder with the defined initial value.
+ */
+ public returnThisHolder(returnThis initialValue)
+ {
+ value = initialValue;
+ }
+
+ /**
+ * Read the value from the CDR stream.
+ */
+ public void _read(InputStream in)
+ {
+ value = returnThisHelper.read(in);
+ }
+
+ /**
+ * Get the typecode of this structure.
+ */
+ public TypeCode _type()
+ {
+ return returnThisHelper.type();
+ }
+
+ /**
+ * Write the value from the CDR stream.
+ * @param out
+ */
+ public void _write(OutputStream out)
+ {
+ returnThisHelper.write(out, value);
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/ORB/parallelRunTest.java b/gnu/testlet/org/omg/CORBA/ORB/parallelRunTest.java
new file mode 100644
index 00000000..0f65960a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ORB/parallelRunTest.java
@@ -0,0 +1,204 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ORB;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.ORB.Asynchron.assServer;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Request;
+import org.omg.CORBA.TCKind;
+
+import java.util.BitSet;
+import java.util.Random;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+/**
+ * This test checks if the server is able to handle parallel
+ * submissions that are sent by
+ * orb.send_multiple_requests_deferred. The server should handle
+ * requests to the different objects in parallel threads.
+ *
+ * As the "task" is just to wait for the given duration,
+ * it is possible to simulate a "distributed computing" on a single
+ * processor machine and get the "acceleration factor". This
+ * accelerator factor is checked for the minimal allowed value.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class parallelRunTest
+ extends Asserter implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ h = harness;
+
+ // 1. Testing the ORB methods.
+ // Number of serving objects.
+ int servers = 20;
+
+ // Number of tasks to serve.
+ int requests = 30;
+
+ // Max tasks per object.
+ int max_tasks = 2;
+
+ String[] iors = assServer.start_server(servers);
+
+ BitSet served = new BitSet();
+
+ ORB orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+
+ // Make pause for the processes to start.
+ try
+ {
+ Thread.sleep(500);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ org.omg.CORBA.Object[] objects = new org.omg.CORBA.Object[ servers ];
+
+ for (int i = 0; i < iors.length; i++)
+ {
+ objects [ i ] = orb.string_to_object(iors [ i ]);
+ }
+
+ int[] times = new int[ requests ];
+ Random r = new Random();
+
+ for (int i = 0; i < times.length; i++)
+ {
+ times [ i ] = r.nextInt(200) + 200;
+ served.set(times [ i ]);
+ }
+
+ Request[] reqs = new Request[ requests ];
+
+ // The server may limit number of the queued requests per
+ // socket. We allow no more than 10 tasks per socket.
+ int[] tasks = new int[ servers ];
+ int rn;
+
+ for (int i = 0; i < reqs.length; i++)
+ {
+ do
+ {
+ rn = r.nextInt(objects.length);
+ }
+ while (tasks [ rn ] > max_tasks);
+ tasks [ rn ]++;
+
+ // The object to handle the requrest is selected randomly.
+ // The acceleration factor will be lower than the number
+ // of the "parallelized objects". This is sufficient
+ // as this is just a test, not a real distribute computing task.
+ Request rq =
+ objects [ rn ]._create_request(null, "sleep_and_return",
+ orb.create_list(1), null
+ );
+
+ rq.set_return_type(orb.get_primitive_tc(TCKind.tk_long));
+ rq.add_in_arg().insert_long(times [ i ]);
+ reqs [ i ] = rq;
+ }
+
+ long started = System.currentTimeMillis();
+
+ orb.send_multiple_requests_deferred(reqs);
+
+ // Be sure the execution has returned correctly.
+ assertTrue("Hangs on orb.send_multiple_requests_defferred",
+ System.currentTimeMillis() < started + 199
+ );
+ assertTrue("orb.send_multiple_requests_defferred:"+
+ "Cannot be ready immediately",
+ !orb.poll_next_response());
+
+ for (int i = 0; i < reqs.length; i++)
+ {
+ try
+ {
+ Request a = orb.get_next_response();
+ served.clear(a.result().value().extract_long());
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ // Check the acceleration factor.
+ long done_in = System.currentTimeMillis() - started;
+
+ long required = 0;
+ for (int i = 0; i < times.length; i++)
+ {
+ required += times [ i ];
+ }
+
+ // Compute the acceleration factor * 100 %.
+ int acceleration = (int) ((100 * required) / done_in);
+
+ // With 20 virtual servers and the used algorithm, we should
+ // expect at least five-fold acceleration.
+ assertTrue("Parallel work is broken :" + acceleration, acceleration > 500);
+
+ assertEquals("Not all tasks served", served.cardinality(), 0);
+
+ // 2. Testing the Request methods.
+ Request rq =
+ objects [ 0 ]._create_request(null, "sleep_and_return",
+ orb.create_list(1), null
+ );
+
+ rq.set_return_type(orb.get_primitive_tc(TCKind.tk_long));
+
+ rq.add_in_arg().insert_long(200);
+
+ long t = System.currentTimeMillis();
+ rq.send_deferred();
+
+ // Be sure the execution has returned correctly.
+ assertTrue("Hangs on Request.send_defferred",
+ System.currentTimeMillis() < t + 199
+ );
+ assertTrue("Request.send_defferred:cannot be ready immediately",
+ !rq.poll_response());
+
+ try
+ {
+ Thread.sleep(300);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ assertTrue("Request.send_defferred:Must be ready now",
+ rq.poll_response());
+ assertEquals("Request.send_defferred:Result must be ready",
+ rq.result().value().extract_long(), 200);
+
+ orb.shutdown(true);
+ }
+
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Entries b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Entries
new file mode 100644
index 00000000..d2987a6a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Entries
@@ -0,0 +1,2 @@
+/basicHelperOperations.java/1.1/Sun May 22 15:38:52 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Repository b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Repository
new file mode 100644
index 00000000..a67829c3
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/ServiceInformationHelper
diff --git a/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Root b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/basicHelperOperations.java b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/basicHelperOperations.java
new file mode 100644
index 00000000..1b1896fa
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/ServiceInformationHelper/basicHelperOperations.java
@@ -0,0 +1,153 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.ServiceInformationHelper;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ServiceDetail;
+import org.omg.CORBA.ServiceInformation;
+import org.omg.CORBA.ServiceInformationHelper;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * This class tests the ServiceInformationHelper, but as important
+ * side effect if also verifies the CORBA implementation part, used
+ * by the numerous other Helpers.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class basicHelperOperations
+ extends Asserter implements Testlet
+{
+ private ORB orb;
+
+ public void testCDR_Read_Write()
+ {
+ OutputStream out = orb.create_output_stream();
+ ServiceInformationHelper.write(out, createInstance());
+
+ ServiceInformation r =
+ ServiceInformationHelper.read(out.create_input_stream());
+
+ verifyInstance(r);
+ }
+
+ public void testHelper_Insert_Extract()
+ {
+ Any a = orb.create_any();
+ ServiceInformationHelper.insert(a, createInstance());
+
+ ServiceInformation extracted = ServiceInformationHelper.extract(a);
+
+ verifyInstance(extracted);
+ }
+
+ /**
+ * Test the support of the typical constructs, generated by some IDL
+ * compilers to insert into Any/exctract from Any.
+ */
+ public void testAny_read_write()
+ {
+ Any a = orb.create_any();
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream();
+ a.type(ServiceInformationHelper.type());
+ ServiceInformationHelper.write(out, createInstance());
+ a.read_value(out.create_input_stream(), ServiceInformationHelper.type());
+
+ verifyInstance(ServiceInformationHelper.read(a.create_input_stream()));
+ }
+
+ /**
+ * Verify the verifyer.
+ */
+ public void testSelf()
+ {
+ ServiceInformation s = createInstance();
+ verifyInstance(s);
+ }
+
+ protected ServiceInformation createInstance()
+ {
+ ServiceInformation s = new ServiceInformation();
+
+ s.service_options = new int[] { 9, 8, 7, 4, 5 };
+
+ s.service_details =
+ new ServiceDetail[]
+ {
+ new ServiceDetail(5, new byte[] { 1, 2, 3 }),
+ new ServiceDetail(7, new byte[] { 9, 8, 7 })
+ };
+
+ return s;
+ }
+
+ protected void verifyInstance(ServiceInformation x)
+ {
+ ServiceInformation s = createInstance();
+
+ assertEquals("service_options.length", s.service_options.length,
+ x.service_options.length
+ );
+ for (int i = 0; i < s.service_options.length; i++)
+ {
+ assertEquals("service_options[" + i + "]", s.service_options [ i ],
+ x.service_options [ i ]
+ );
+ }
+
+ assertEquals("service_details.length", s.service_details.length,
+ x.service_details.length
+ );
+
+ for (int k = 0; k < s.service_details.length; k++)
+ {
+ ServiceDetail e = s.service_details [ k ];
+ ServiceDetail a = x.service_details [ k ];
+ assertEquals("s_d[" + k + "].service_detail_type",
+ e.service_detail_type, a.service_detail_type
+ );
+ assertEquals("s_d[" + k + "].length", e.service_detail.length,
+ a.service_detail.length
+ );
+ for (int i = 0; i < e.service_detail.length; i++)
+ {
+ assertEquals("s_d[" + k + "].service_detail[" + i + "]",
+ e.service_detail [ i ], a.service_detail [ i ]
+ );
+ }
+ }
+ }
+
+ public void test(TestHarness harness) {
+ h = harness;
+ orb = ORB.init();
+ testSelf();
+ testCDR_Read_Write();
+ testAny_read_write();
+ testHelper_Insert_Extract();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Entries b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Entries
new file mode 100644
index 00000000..f22b77e1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Entries
@@ -0,0 +1,2 @@
+/orbTypecodes.java/1.1/Wed May 18 21:56:36 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Repository b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Repository
new file mode 100644
index 00000000..b0807253
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/TypeCode
diff --git a/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Root b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/TypeCode/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/TypeCode/orbTypecodes.java b/gnu/testlet/org/omg/CORBA/TypeCode/orbTypecodes.java
new file mode 100644
index 00000000..b6e8369a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/TypeCode/orbTypecodes.java
@@ -0,0 +1,204 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.TypeCode;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ShortHolder;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.TypeCodePackage.BadKind;
+import org.omg.CORBA.UnionMember;
+import org.omg.CORBA.ValueMember;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class orbTypecodes
+ extends Asserter
+ implements Testlet
+{
+ ORB orb = ORB.init();
+ String id = "gnu";
+ String name = "classpath";
+ TypeCode type = new ShortHolder()._type();
+ int length = 17;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ test_create_alias_tc();
+ test_create_array_tc();
+ test_create_enum_tc();
+ test_create_exception_tc();
+ test_create_fixed_tc();
+ test_create_sequence_tc();
+ test_create_struct_tc();
+ test_create_union_tc();
+ test_create_value_box_tc();
+ test_create_value_tc();
+ test_create_wstring_tc();
+ test_get_primitive_tc();
+ }
+
+ public void test_create_alias_tc()
+ {
+ TypeCode t = orb.create_alias_tc(id, name, type);
+ assertEquals("create_alias_tc", t.kind().value(), TCKind._tk_alias);
+ idname(t);
+ }
+
+ public void test_create_array_tc()
+ {
+ TypeCode t = orb.create_array_tc(length, type);
+ assertEquals("create_array_tc", t.kind().value(), TCKind._tk_array);
+ length(t);
+ component(t);
+ }
+
+ public void test_create_enum_tc()
+ {
+ TypeCode t = orb.create_enum_tc(id, name, new String[ 0 ]);
+ assertEquals("create_enum_tc", t.kind().value(), TCKind._tk_enum);
+ idname(t);
+ }
+
+ public void test_create_exception_tc()
+ {
+ TypeCode t = orb.create_exception_tc(id, name, new StructMember[ 0 ]);
+ assertEquals("create_exception_tc", t.kind().value(), TCKind._tk_except);
+ idname(t);
+ }
+
+ public void test_create_fixed_tc()
+ {
+ try
+ {
+ TypeCode t = orb.create_fixed_tc((short) 15, (short) 6);
+ assertEquals("fixed digits", t.fixed_digits(), (short) 15);
+ assertEquals("fixed scale", t.fixed_scale(), (short) 6);
+ assertEquals("create_fixed_tc", t.kind().value(), TCKind._tk_fixed);
+ }
+ catch (BadKind ex)
+ {
+ fail("BadKind exception when testing fixed tc");
+ }
+ }
+
+ public void test_create_sequence_tc()
+ {
+ TypeCode t = orb.create_sequence_tc(length, type);
+ assertEquals("create_sequence_tc", t.kind().value(), TCKind._tk_sequence);
+ length(t);
+ component(t);
+ }
+
+ public void test_create_string_tc()
+ {
+ TypeCode t = orb.create_string_tc(length);
+ assertEquals("create_string_tc", t.kind().value(), TCKind._tk_string);
+ length(t);
+ }
+
+ public void test_create_struct_tc()
+ {
+ TypeCode t = orb.create_struct_tc(id, name, new StructMember[ 0 ]);
+ assertEquals("create_struct_tc", t.kind().value(), TCKind._tk_struct);
+ idname(t);
+ }
+
+ public void test_create_union_tc()
+ {
+ TypeCode t = orb.create_union_tc(id, name, type, new UnionMember[ 0 ]);
+ assertEquals("create_union_tc", t.kind().value(), TCKind._tk_union);
+ idname(t);
+ }
+
+ public void test_create_value_box_tc()
+ {
+ TypeCode t = orb.create_value_box_tc(id, name, type);
+ assertEquals("create_value_box_tc", t.kind().value(), TCKind._tk_value_box);
+ idname(t);
+ }
+
+ public void test_create_value_tc()
+ {
+ TypeCode t =
+ orb.create_value_tc(id, name, (short) 0, type, new ValueMember[ 0 ]);
+ assertEquals("create_value_tc", t.kind().value(), TCKind._tk_value);
+ idname(t);
+ }
+
+ public void test_create_wstring_tc()
+ {
+ TypeCode t = orb.create_wstring_tc(length);
+ assertEquals("create_wstring_tc", t.kind().value(), TCKind._tk_wstring);
+ length(t);
+ }
+
+ public void test_get_primitive_tc()
+ {
+ TypeCode t = orb.get_primitive_tc(TCKind.tk_short);
+ assertEquals("get_primitive_tc", t.kind().value(), TCKind._tk_short);
+ }
+
+ void component(TypeCode t)
+ {
+ try
+ {
+ assertEquals("sequence or array component type",
+ t.content_type().kind().value(), type.kind().value()
+ );
+ }
+ catch (BadKind ex)
+ {
+ fail("Unexpected bad kind for content type");
+ }
+ }
+
+ void idname(TypeCode t)
+ {
+ try
+ {
+ assertEquals("id", t.id(), id);
+ assertEquals("name", t.name(), name);
+ }
+ catch (BadKind ex)
+ {
+ fail("Unexpected bad kind for id or name");
+ }
+ }
+
+ void length(TypeCode t)
+ {
+ try
+ {
+ assertEquals("content type", t.length(), length);
+ }
+ catch (BadKind ex)
+ {
+ fail("Unexpected bad kind for length");
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/portable/CVS/Entries b/gnu/testlet/org/omg/CORBA/portable/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/CORBA/portable/CVS/Entries.Log b/gnu/testlet/org/omg/CORBA/portable/CVS/Entries.Log
new file mode 100644
index 00000000..ea225d57
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/InputStream////
+A D/OutputStream////
diff --git a/gnu/testlet/org/omg/CORBA/portable/CVS/Repository b/gnu/testlet/org/omg/CORBA/portable/CVS/Repository
new file mode 100644
index 00000000..75c2b143
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/portable
diff --git a/gnu/testlet/org/omg/CORBA/portable/CVS/Root b/gnu/testlet/org/omg/CORBA/portable/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Entries b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Entries
new file mode 100644
index 00000000..4cba25d7
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Entries
@@ -0,0 +1,2 @@
+/cdrIO.java/1.1/Wed May 18 21:56:37 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Repository b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Repository
new file mode 100644
index 00000000..c5dbaa0b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/portable/InputStream
diff --git a/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Root b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/InputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/portable/InputStream/cdrIO.java b/gnu/testlet/org/omg/CORBA/portable/InputStream/cdrIO.java
new file mode 100644
index 00000000..7580d6e1
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/InputStream/cdrIO.java
@@ -0,0 +1,610 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.portable.InputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+import java.math.BigDecimal;
+
+import java.util.Random;
+
+/**
+ * This test checks the correctness of the CDR (comon data representation)
+ * streams.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class cdrIO
+ extends Asserter
+ implements Testlet
+{
+ ORB orb = ORB.init();
+ Random r = new Random();
+ private org.omg.CORBA.portable.OutputStream out;
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ testRead_any();
+ testRead_boolean();
+ testRead_boolean_array();
+ testRead_char();
+ testRead_char_array();
+ testRead_double();
+ testRead_double_array();
+ testRead_fixed();
+ testRead_float();
+ testRead_float_array();
+ testRead_long();
+ testRead_longlong();
+ testRead_longlong_array();
+ testRead_long_array();
+ testRead_octet();
+ testRead_octet_array();
+ testRead_short();
+ testRead_short_array();
+ testRead_string();
+ testRead_TypeCode();
+ testRead_ulong();
+ testRead_ulonglong();
+ testRead_ulonglong_array();
+ testRead_ulong_array();
+ testRead_ushort();
+ testRead_ushort_array();
+ testRead_wchar();
+ testRead_wchar_array();
+ testRead_wstring();
+ }
+
+ public void testRead_TypeCode()
+ {
+ TypeCode expectedReturn = orb.create_fixed_tc((short) 12, (short) 5);
+
+ out = out();
+ out.write_TypeCode(expectedReturn);
+
+ TypeCode actualReturn = out.create_input_stream().read_TypeCode();
+ assertTrue("typecode", expectedReturn.equal(actualReturn));
+ }
+
+ public void testRead_any()
+ {
+ Any expectedReturn = orb.create_any();
+ expectedReturn.insert_long(r.nextInt());
+
+ out = out();
+ out.write_any(expectedReturn);
+
+ Any actualReturn = out.create_input_stream().read_any();
+
+ assertEquals("Any enclosed value", expectedReturn.extract_long(),
+ actualReturn.extract_long()
+ );
+
+ assertTrue("Any, types", expectedReturn.type().equal(actualReturn.type()));
+
+ expectedReturn = orb.create_any();
+ expectedReturn.insert_string("http://www.akl.lt/remejai");
+
+ out = out();
+ out.write_any(expectedReturn);
+
+ actualReturn = out.create_input_stream().read_any();
+
+ assertEquals("Any enclosed value", expectedReturn.extract_string(),
+ actualReturn.extract_string()
+ );
+ assertTrue("Any, types", expectedReturn.type().equal(actualReturn.type()));
+ }
+
+ public void testRead_boolean()
+ {
+ out = out();
+ out.write_boolean(true);
+ assertTrue("boolean, true", out.create_input_stream().read_boolean());
+
+ out = out();
+ out.write_boolean(false);
+ assertTrue("boolean, false", !(out.create_input_stream().read_boolean()));
+ }
+
+ public void testRead_boolean_array()
+ {
+ boolean[] x = new boolean[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextBoolean();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_boolean_array(x, offs, len);
+
+ boolean[] r = new boolean[ x.length ];
+
+ out.create_input_stream().read_boolean_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ {
+ System.out.println(x [ i ] + "!=" + r [ i ] + " at " + i);
+ eq = false;
+ }
+ }
+ assertTrue("boolean array", eq);
+ }
+
+ public void testRead_char()
+ {
+ out = out();
+ out.write_char('x');
+ assertEquals("narrow char", out.create_input_stream().read_char(), 'x');
+ }
+
+ public void testRead_char_array()
+ {
+ char[] x = new char[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextBoolean() ? 'a' : 'b';
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_char_array(x, offs, len);
+
+ char[] r = new char[ x.length ];
+
+ out.create_input_stream().read_char_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("char array", eq);
+ }
+
+ public void testRead_double()
+ {
+ double expectedReturn = r.nextDouble();
+ out = out();
+ out.write_double(expectedReturn);
+
+ assertEquals("double", out.create_input_stream().read_double(),
+ expectedReturn, Double.MIN_VALUE
+ );
+ }
+
+ public void testRead_double_array()
+ {
+ double[] x = new double[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextDouble();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_double_array(x, offs, len);
+
+ double[] r = new double[ x.length ];
+
+ out.create_input_stream().read_double_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("double array", eq);
+ }
+
+ public void testRead_fixed()
+ {
+ BigDecimal expectedReturn = new BigDecimal(r.nextInt());
+
+ out = out();
+ out.write_fixed(expectedReturn);
+
+ BigDecimal actualReturn = out.create_input_stream().read_fixed();
+ assertEquals("fixed " + expectedReturn + "!=" + actualReturn.toString(),
+ expectedReturn.toString(), actualReturn.toString()
+ );
+ }
+
+ public void testRead_float()
+ {
+ float expectedReturn = r.nextFloat();
+ out = out();
+ out.write_float(expectedReturn);
+
+ assertEquals("float", out.create_input_stream().read_float(),
+ expectedReturn, Float.MIN_VALUE
+ );
+ }
+
+ public void testRead_float_array()
+ {
+ float[] x = new float[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextFloat();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_float_array(x, offs, len);
+
+ float[] r = new float[ x.length ];
+
+ out.create_input_stream().read_float_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("float array", eq);
+ }
+
+ public void testRead_long()
+ {
+ int expectedReturn = r.nextInt();
+ out = out();
+ out.write_long(expectedReturn);
+
+ assertEquals("long", out.create_input_stream().read_long(), expectedReturn);
+ }
+
+ public void testRead_long_array()
+ {
+ int[] x = new int[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextInt();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_long_array(x, offs, len);
+
+ int[] r = new int[ x.length ];
+
+ out.create_input_stream().read_long_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ {
+ eq = false;
+ System.out.println(x [ i ] + "!=" + r [ i ] + " at " + i);
+ }
+ }
+ assertTrue("long array", eq);
+ }
+
+ public void testRead_longlong()
+ {
+ long expectedReturn = r.nextLong();
+ out = out();
+ out.write_longlong(expectedReturn);
+
+ assertEquals("long long", out.create_input_stream().read_longlong(),
+ expectedReturn
+ );
+ }
+
+ public void testRead_longlong_array()
+ {
+ long[] x = new long[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextLong();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_longlong_array(x, offs, len);
+
+ long[] r = new long[ x.length ];
+
+ out.create_input_stream().read_longlong_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("long long array", eq);
+ }
+
+ public void testRead_octet()
+ {
+ byte expectedReturn =
+ (byte) (r.nextInt(Byte.MAX_VALUE) - Byte.MAX_VALUE / 2);
+ out = out();
+ out.write_octet(expectedReturn);
+
+ assertEquals("byte", out.create_input_stream().read_octet(), expectedReturn);
+ }
+
+ public void testRead_octet_array()
+ {
+ byte[] x = new byte[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = (byte) (r.nextInt(Byte.MAX_VALUE) - Byte.MAX_VALUE / 2);
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_octet_array(x, offs, len);
+
+ byte[] r = new byte[ x.length ];
+
+ out.create_input_stream().read_octet_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("octet array", eq);
+ }
+
+ public void testRead_short()
+ {
+ short expectedReturn = (short) r.nextInt(Short.MAX_VALUE);
+ out = out();
+ out.write_short(expectedReturn);
+
+ assertEquals("short", out.create_input_stream().read_short(), expectedReturn);
+ }
+
+ public void testRead_short_array()
+ {
+ short[] x = new short[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = (short) r.nextInt(Short.MAX_VALUE);
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_short_array(x, offs, len);
+
+ short[] r = new short[ x.length ];
+
+ out.create_input_stream().read_short_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("short array", eq);
+ }
+
+ public void testRead_string()
+ {
+ String expectedReturn = "http://wwww.gnu.org";
+
+ out = out();
+ out.write_string(expectedReturn);
+
+ String actualReturn = out.create_input_stream().read_string();
+ assertEquals("string", expectedReturn, actualReturn);
+ }
+
+ public void testRead_ulong()
+ {
+ int expectedReturn = r.nextInt();
+ out = out();
+ out.write_ulong(expectedReturn);
+
+ assertEquals("ulong", out.create_input_stream().read_ulong(), expectedReturn);
+ }
+
+ public void testRead_ulong_array()
+ {
+ int[] x = new int[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextInt();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_ulong_array(x, offs, len);
+
+ int[] r = new int[ x.length ];
+
+ out.create_input_stream().read_ulong_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("ulong array", eq);
+ }
+
+ public void testRead_ulonglong()
+ {
+ long expectedReturn = r.nextLong();
+ out = out();
+ out.write_ulonglong(expectedReturn);
+
+ assertEquals("u long long", out.create_input_stream().read_ulonglong(),
+ expectedReturn
+ );
+ }
+
+ public void testRead_ulonglong_array()
+ {
+ long[] x = new long[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextLong();
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_ulonglong_array(x, offs, len);
+
+ long[] r = new long[ x.length ];
+
+ out.create_input_stream().read_ulonglong_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("u long long array", eq);
+ }
+
+ public void testRead_ushort()
+ {
+ short expectedReturn = (short) r.nextInt(Short.MAX_VALUE);
+ out = out();
+ out.write_ushort(expectedReturn);
+
+ assertEquals("ushort", out.create_input_stream().read_ushort(),
+ expectedReturn
+ );
+ }
+
+ public void testRead_ushort_array()
+ {
+ short[] x = new short[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = (short) r.nextInt(Short.MAX_VALUE);
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_ushort_array(x, offs, len);
+
+ short[] r = new short[ x.length ];
+
+ out.create_input_stream().read_ushort_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("u short array", eq);
+ }
+
+ public void testRead_wchar()
+ {
+ out = out();
+ out.write_wchar('\u017E');
+
+ assertEquals("wide char", out.create_input_stream().read_wchar(), '\u017E');
+ }
+
+ public void testRead_wchar_array()
+ {
+ char[] x = new char[ 24 ];
+ for (int i = 0; i < x.length; i++)
+ {
+ x [ i ] = r.nextBoolean() ? '\u0105' : '\u010D';
+ }
+
+ int offs = r.nextInt(5);
+ int len = r.nextInt(10) + 1;
+
+ out = out();
+ out.write_wchar_array(x, offs, len);
+
+ char[] r = new char[ x.length ];
+
+ out.create_input_stream().read_wchar_array(r, offs, len);
+
+ boolean eq = true;
+ for (int i = offs; i < offs + len; i++)
+ {
+ if (x [ i ] != r [ i ])
+ eq = false;
+ }
+ assertTrue("wide char array", eq);
+ }
+
+ public void testRead_wstring()
+ {
+ String expectedReturn = "Audrius Me\u0161kauskas";
+
+ out = out();
+ out.write_wstring(expectedReturn);
+
+ String actualReturn = out.create_input_stream().read_wstring();
+ assertEquals("wide string", expectedReturn, actualReturn);
+ }
+
+ org.omg.CORBA.portable.OutputStream out()
+ {
+ return orb.create_any().create_output_stream();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA/portable/OutputStream/BinaryAlignment.java b/gnu/testlet/org/omg/CORBA/portable/OutputStream/BinaryAlignment.java
new file mode 100644
index 00000000..3e31c5ac
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/OutputStream/BinaryAlignment.java
@@ -0,0 +1,136 @@
+// Tags: JDK1.2
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.portable.OutputStream;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.OctetSeqHelper;
+import org.omg.CORBA.Request;
+import org.omg.CORBA.TCKind;
+
+/**
+ * This tests uses a non standard CORBA object that accepts the
+ * passed parameters and then returns all passed data as a
+ * plain byte array, exactly how they were sent. The returned
+ * sequence can be byte to byte compared with the sequence,
+ * expected from the OMG CORBA specification. The test is against
+ * loss of interoperability by modifications that may affect
+ * both input and output CDR streams, leaving the implementation
+ * working with self, but interoperable.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class BinaryAlignment
+ extends Asserter
+ implements Testlet
+{
+ // The correct data sequence, excluding the message header and request
+ // header, as it should be deciding from CORBA spefication for GIOP 1.2
+ static final int[] expected =
+ new int[]
+ {
+ 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0x5b, 0x73, 0x74, 0x72, 0x69,
+ 0x6e, 0x67, 0x20, 0x34, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x46,
+ 0xd8, 0x31, 0x26, 0xe9, 0x78, 0xd5, 0xfe, 0xff
+ };
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+
+ String[] args = new String[ 0 ];
+
+ final ORB server_orb = ORB.init(args, null);
+
+ mirror reflector = new mirror();
+ server_orb.connect(reflector);
+
+ new Thread()
+ {
+ public void run()
+ {
+ server_orb.run();
+ }
+ }.start();
+
+ // Wait for 500 ms for the orb to start.
+ try
+ {
+ Thread.sleep(500);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ String ior = server_orb.object_to_string(reflector);
+
+ // Instantiate another orb where this reflector will be a stub:
+ ORB client_orb = ORB.init(args, null);
+
+ org.omg.CORBA.Object object =
+ (org.omg.CORBA.Object) client_orb.string_to_object(ior);
+
+ Request r =
+ object._create_request(null, "pass", server_orb.create_list(0), null);
+
+ // Write the test values.
+ r.add_in_arg().insert_octet((byte) 0x77);
+ r.add_in_arg().insert_long(1);
+ r.add_in_arg().insert_longlong(2);
+ r.add_in_arg().insert_short((short) 3);
+ r.add_in_arg().insert_string("[string 4]");
+ r.add_in_arg().insert_double(45.689);
+ r.add_in_arg().insert_octet((byte) 0xFE);
+
+ // This will serve as EOF marker.
+ r.add_in_arg().insert_octet((byte) 0xFF);
+
+ // For the last parameter, the value is not set.
+ r.set_return_type(server_orb.create_sequence_tc(0,
+ server_orb.get_primitive_tc(TCKind.tk_octet)
+ )
+ );
+
+ r.invoke();
+
+ byte[] reflection = OctetSeqHelper.extract(r.result().value());
+
+ assertEquals("length", expected.length, reflection.length);
+
+ for (int i = 0; i < reflection.length; i++)
+ {
+ if ((reflection [ i ] & 0xFF) != expected [ i ])
+ fail("Mismatch [" + i + "] expected " +
+ Integer.toHexString(expected [ i ]) + " actual " +
+ Integer.toHexString(0xFF & reflection [ i ])
+ );
+ }
+
+ client_orb.shutdown(false);
+ server_orb.shutdown(false);
+
+ client_orb.destroy();
+ server_orb.destroy();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Entries b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Entries
new file mode 100644
index 00000000..6a0775df
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Entries
@@ -0,0 +1,3 @@
+/BinaryAlignment.java/1.1/Wed May 25 19:45:26 2005//
+/mirror.java/1.2/Mon Jun 26 14:18:51 2006//
+D
diff --git a/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Repository b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Repository
new file mode 100644
index 00000000..f9a84ecd
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA/portable/OutputStream
diff --git a/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Root b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/OutputStream/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java b/gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java
new file mode 100644
index 00000000..05623331
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA/portable/OutputStream/mirror.java
@@ -0,0 +1,67 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA.portable.OutputStream;
+
+import org.omg.CORBA.OctetSeqHelper;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+
+import java.io.ByteArrayOutputStream;
+
+/**
+ * A reflector is a non standard CORBA object that accepts the
+ * passed parameter and then returns all passed data as a
+ * plain byte array, exactly how they were sent. Not a test,
+ * needed by BinaryAlignment.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+class mirror
+ extends ObjectImpl
+ implements InvokeHandler
+{
+ /**
+ * Return the passed parameters as the plain binary array.
+ */
+ public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
+ {
+ ByteArrayOutputStream data = new ByteArrayOutputStream();
+
+ byte b;
+ do
+ {
+ b = in.read_octet();
+ data.write(b);
+ }
+ while ((b & 0xFF) != 0xFF);
+
+ OutputStream out = rh.createReply();
+ OctetSeqHelper.write(out, data.toByteArray());
+
+ return out;
+ }
+
+ public String[] _ids()
+ {
+ return new String[] { getClass().getName() };
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries b/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries.Log b/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries.Log
new file mode 100644
index 00000000..5ce57307
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/ORB////
diff --git a/gnu/testlet/org/omg/CORBA_2_3/CVS/Repository b/gnu/testlet/org/omg/CORBA_2_3/CVS/Repository
new file mode 100644
index 00000000..6b353934
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA_2_3
diff --git a/gnu/testlet/org/omg/CORBA_2_3/CVS/Root b/gnu/testlet/org/omg/CORBA_2_3/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries
new file mode 100644
index 00000000..94436c3a
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries
@@ -0,0 +1,2 @@
+/ValueTypeTest.java/1.2/Thu Oct 13 08:46:29 2005//
+D
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries.Log b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries.Log
new file mode 100644
index 00000000..d587c30d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Valtype////
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Repository b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Repository
new file mode 100644
index 00000000..8a745625
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA_2_3/ORB
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Root b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Entries b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Entries
new file mode 100644
index 00000000..c9cd6bf9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Entries
@@ -0,0 +1,18 @@
+/Greetings.java/1.2/Mon Jun 26 14:18:51 2006//
+/GreetingsHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/GreetingsServant.java/1.2/Wed Jun 25 08:01:02 2008//
+/Info.java/1.3/Wed Jun 25 08:01:02 2008//
+/InfoDefaultFactory.java/1.1/Sat Jun 11 17:32:42 2005//
+/InfoHelper.java/1.4/Wed Jun 25 08:01:02 2008//
+/InfoHolder.java/1.2/Wed Jun 25 08:01:02 2008//
+/InfoImpl.java/1.1/Sat Jun 11 17:32:42 2005//
+/InfoValueFactory.java/1.2/Mon Jun 26 14:18:51 2006//
+/_GreetingsImplBase.java/1.3/Wed Jun 25 08:01:02 2008//
+/_GreetingsStub.java/1.2/Wed Jun 25 08:01:02 2008//
+/cmInfo.java/1.2/Thu Jun 29 18:27:09 2006//
+/cmInfoDefaultFactory.java/1.1/Sat Jun 11 17:32:42 2005//
+/cmInfoHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/cmInfoHolder.java/1.2/Wed Jun 25 08:01:02 2008//
+/cmInfoImpl.java/1.1/Sat Jun 11 17:32:42 2005//
+/cmInfoValueFactory.java/1.2/Mon Jun 26 14:18:51 2006//
+D
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Repository b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Repository
new file mode 100644
index 00000000..f3d821ec
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Root b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java
new file mode 100644
index 00000000..bc6df1d8
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings.java
@@ -0,0 +1,21 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.portable.IDLEntity;
+
+public interface Greetings
+ extends org.omg.CORBA.Object, IDLEntity
+{
+ void hello(cmInfoHolder w1,
+ InfoHolder w2
+ );
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java
new file mode 100644
index 00000000..f0f68f55
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsHelper.java
@@ -0,0 +1,42 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.ObjectImpl;
+
+public abstract class GreetingsHelper
+{
+ public static String id()
+ {
+ return "IDL:gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings:1.0";
+ }
+
+ /**
+ * We only need a narrow() method from this helper.
+ */
+ public static Greetings narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof Greetings)
+ return (Greetings) obj;
+ else if (!obj._is_a(id()))
+ throw new BAD_PARAM();
+ else
+ {
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ return new _GreetingsStub(delegate);
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java
new file mode 100644
index 00000000..893aee5d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/GreetingsServant.java
@@ -0,0 +1,31 @@
+// Tags: not-a-test
+// Uses: _GreetingsImplBase Greetings cmInfoHolder InfoHolder
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public class GreetingsServant
+ extends _GreetingsImplBase
+ implements Greetings
+{
+ /**
+ * Make manipulations ensuring the values were received.
+ */
+ public void hello(cmInfoHolder w1, InfoHolder w2)
+ {
+ w1.value.message = "Names: " + w1.value.name + "+" + w2.value._name;
+ w2.value._message =
+ "Messages: " + w2.value._message + "+" + w1.value.message;
+
+ w1.value.name += "+";
+ w2.value._name += "+";
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java
new file mode 100644
index 00000000..b89f8a25
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info.java
@@ -0,0 +1,60 @@
+// Tags: not-a-test
+// Uses: InfoHelper
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.portable.StreamableValue;
+
+/**
+ * This value type object has the default methods for reading
+ * and writing. These methods are normally generated by the
+ * IDL compiler.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public abstract class Info
+ implements StreamableValue
+{
+ public String _name;
+ public String _message;
+ private static String[] _truncatable_ids = { InfoHelper.id() };
+
+ public String[] _truncatable_ids()
+ {
+ return _truncatable_ids;
+ }
+
+ public abstract String _toString();
+
+ public void _read(org.omg.CORBA.portable.InputStream istream)
+ {
+ this._name = istream.read_string();
+ this._message = istream.read_string();
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream ostream)
+ {
+ ostream.write_string(this._name);
+ ostream.write_string(this._message);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return InfoHelper.type();
+ }
+
+ public String toString()
+ {
+ return _toString();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoDefaultFactory.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoDefaultFactory.java
new file mode 100644
index 00000000..b35a45dc
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoDefaultFactory.java
@@ -0,0 +1,24 @@
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public class InfoDefaultFactory
+ implements InfoValueFactory
+{
+ public Info create(String name, String message)
+ {
+ return new InfoImpl(name, message);
+ }
+
+ public java.io.Serializable read_value(org.omg.CORBA_2_3.portable.InputStream is)
+ {
+ return is.read_value(new InfoImpl());
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java
new file mode 100644
index 00000000..9d5c4593
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHelper.java
@@ -0,0 +1,106 @@
+// Tags: not-a-test
+// Uses: InfoImpl InfoValueFactory
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class InfoHelper
+{
+ public static int testMode = 4;
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Info:1.0";
+
+ public static void insert(org.omg.CORBA.Any a, Info that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static Info extract(org.omg.CORBA.Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static org.omg.CORBA.TypeCode typeCode = null;
+
+ public static org.omg.CORBA.TypeCode type()
+ {
+ if (typeCode == null)
+ {
+ org.omg.CORBA.ValueMember[] members =
+ new org.omg.CORBA.ValueMember[ 2 ];
+
+ org.omg.CORBA.TypeCode member;
+
+ // ValueMember instance for _name
+ member = org.omg.CORBA.ORB.init().create_string_tc(0);
+ members [ 0 ] =
+ new org.omg.CORBA.ValueMember("_name", "", _id, "", member, null,
+ org.omg.CORBA.PRIVATE_MEMBER.value
+ );
+
+ // ValueMember instance for _message
+ member = org.omg.CORBA.ORB.init().create_string_tc(0);
+ members [ 1 ] =
+ new org.omg.CORBA.ValueMember("_message", "", _id, "", member, null,
+ org.omg.CORBA.PRIVATE_MEMBER.value
+ );
+ typeCode =
+ org.omg.CORBA.ORB.init().create_value_tc(_id, "Info",
+ org.omg.CORBA.VM_NONE.value,
+ null, members
+ );
+ }
+ return typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static Info read(InputStream istream)
+ {
+ // This method is a real disaster, but the most of the IDL compilers
+ // generate like that:
+ if (testMode == 0)
+ return (Info) ((org.omg.CORBA_2_3.portable.InputStream) istream).read_value(id());
+ else if (testMode == 1)
+ return (Info) ((org.omg.CORBA_2_3.portable.InputStream) istream).read_value(new InfoImpl());
+ else
+ return (Info) ((org.omg.CORBA_2_3.portable.InputStream) istream).read_value(InfoImpl.class);
+ }
+
+ public static void write(OutputStream ostream, Info value)
+ {
+ ((org.omg.CORBA_2_3.portable.OutputStream) ostream).write_value(value, id());
+ }
+
+ public static Info create(org.omg.CORBA.ORB orb, String name, String message)
+ {
+ try
+ {
+ InfoValueFactory factory =
+ (InfoValueFactory) ((org.omg.CORBA_2_3.ORB) orb).lookup_value_factory(id());
+ return factory.create(name, message);
+ }
+ catch (ClassCastException ex)
+ {
+ throw new org.omg.CORBA.BAD_PARAM();
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java
new file mode 100644
index 00000000..a845b4ab
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoHolder.java
@@ -0,0 +1,59 @@
+// Tags: not-a-test
+// Uses: Info InfoImpl InfoHelper
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public final class InfoHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public static int testMode;
+ public Info value;
+
+ public InfoHolder()
+ {
+ }
+
+ public InfoHolder(Info initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ // Some IDL compilers generate the line below, forcing to search
+ // the implementing class via classloader.
+ if (testMode == 0)
+ value = InfoHelper.read(i);
+ else if (testMode == 1)
+
+ // Despite it would be a lot faster to call:
+ value =
+ (Info) ((org.omg.CORBA_2_3.portable.InputStream) i).read_value(new InfoImpl());
+
+ // And also should work:
+ else
+ value =
+ (Info) ((org.omg.CORBA_2_3.portable.InputStream) i).read_value(InfoImpl.class);
+
+ // The test checks the correct work of both cases.
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ InfoHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return InfoHelper.type();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoImpl.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoImpl.java
new file mode 100644
index 00000000..3cebf26b
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoImpl.java
@@ -0,0 +1,30 @@
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public class InfoImpl
+ extends Info
+{
+ public InfoImpl()
+ {
+ _name = _message = "Unitialised";
+ }
+
+ public InfoImpl(String a, String b)
+ {
+ _name = a;
+ _message = b;
+ }
+
+ public String _toString()
+ {
+ return _name + "--" + _message;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java
new file mode 100644
index 00000000..439f66f2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/InfoValueFactory.java
@@ -0,0 +1,17 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public interface InfoValueFactory
+ extends org.omg.CORBA.portable.ValueFactory
+{
+ Info create(String name, String message);
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java
new file mode 100644
index 00000000..8f615040
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsImplBase.java
@@ -0,0 +1,54 @@
+// Tags: not-a-test
+// Uses: cmInfoHolder _GreetingsStub
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+
+public abstract class _GreetingsImplBase
+ extends ObjectImpl
+ implements Greetings, InvokeHandler
+{
+ public _GreetingsImplBase()
+ {
+ }
+
+ /**
+ * As there is only one method supported, we can use the simplified
+ * layout without switch between methods.
+ */
+ public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
+ {
+ cmInfoHolder w1 = new cmInfoHolder();
+ w1.value = cmInfoHelper.read(in);
+
+ InfoHolder w2 = new InfoHolder();
+ w2.value = InfoHelper.read(in);
+
+ this.hello(w1, w2);
+
+ OutputStream out = rh.createReply();
+
+ cmInfoHelper.write(out, w1.value);
+ InfoHelper.write(out, w2.value);
+
+ return out;
+ }
+
+ public String[] _ids()
+ {
+ return _GreetingsStub.__ids;
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java
new file mode 100644
index 00000000..a80942e9
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/_GreetingsStub.java
@@ -0,0 +1,72 @@
+// Tags: not-a-test
+// Uses: cmInfoHelper InfoHolder
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+public class _GreetingsStub
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements Greetings
+{
+ public static final String[] __ids =
+ { "IDL:gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/Greetings:1.0" };
+
+ public _GreetingsStub()
+ {
+ }
+
+ public _GreetingsStub(Delegate delegate)
+ {
+ super();
+ _set_delegate(delegate);
+ }
+
+ public void hello(cmInfoHolder w1, InfoHolder w2)
+ {
+ InputStream _in = null;
+ try
+ {
+ OutputStream _out = _request("hello", true);
+ cmInfoHelper.write(_out, w1.value);
+ InfoHelper.write(_out, w2.value);
+ _in = _invoke(_out);
+ w1.value = cmInfoHelper.read(_in);
+ w2.value = InfoHelper.read(_in);
+ }
+ catch (ApplicationException _ex)
+ {
+ _in = _ex.getInputStream();
+
+ String _id = _ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (RemarshalException _rm)
+ {
+ hello(w1, w2);
+ }
+ finally
+ {
+ _releaseReply(_in);
+ }
+ }
+
+ public String[] _ids()
+ {
+ return (String[]) __ids.clone();
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java
new file mode 100644
index 00000000..5eec0f8d
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo.java
@@ -0,0 +1,58 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import java.util.StringTokenizer;
+
+import org.omg.CORBA.DataInputStream;
+import org.omg.CORBA.DataOutputStream;
+import org.omg.CORBA.portable.CustomValue;
+
+/**
+ * This value type object has the user defined methods for reading
+ * and writing. To make something different, we write two components
+ * as a single string, separating them by '#'.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public abstract class cmInfo
+ implements CustomValue
+{
+ public String name;
+ public String message;
+ private static String[] _truncatable_ids = { cmInfoHelper.id() };
+
+ public String[] _truncatable_ids()
+ {
+ return _truncatable_ids;
+ }
+
+ public abstract String _toString();
+
+ public void unmarshal(DataInputStream istream)
+ {
+ String s = istream.read_string();
+ StringTokenizer st = new StringTokenizer(s, "#");
+ name = st.nextToken();
+ message = st.nextToken();
+ }
+
+ public void marshal(DataOutputStream ostream)
+ {
+ ostream.write_string(name+"#"+message);
+ }
+
+ public String toString()
+ {
+ return _toString();
+ }
+
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoDefaultFactory.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoDefaultFactory.java
new file mode 100644
index 00000000..fc2fb2c2
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoDefaultFactory.java
@@ -0,0 +1,26 @@
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import java.io.Serializable;
+
+public class cmInfoDefaultFactory
+ implements cmInfoValueFactory
+{
+ public cmInfo create(String name, String message)
+ {
+ return new cmInfoImpl(name, message);
+ }
+
+ public Serializable read_value(org.omg.CORBA_2_3.portable.InputStream is)
+ {
+ return is.read_value(new cmInfoImpl());
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java
new file mode 100644
index 00000000..0366f319
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHelper.java
@@ -0,0 +1,84 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.PRIVATE_MEMBER;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.VM_NONE;
+import org.omg.CORBA.ValueMember;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class cmInfoHelper
+{
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfo:1.0";
+
+ public static void insert(Any a, cmInfo that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static cmInfo extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static TypeCode typeCode = null;
+
+ public static TypeCode type()
+ {
+ if (typeCode == null)
+ {
+ ValueMember[] members = new ValueMember[ 2 ];
+
+ TypeCode member;
+
+ // ValueMember instance for _name
+ member = ORB.init().create_string_tc(0);
+ members [ 0 ] =
+ new ValueMember("_name", "", _id, "", member, null,
+ PRIVATE_MEMBER.value
+ );
+
+ // ValueMember instance for _message
+ member = ORB.init().create_string_tc(0);
+ members [ 1 ] =
+ new ValueMember("_message", "", _id, "", member, null,
+ PRIVATE_MEMBER.value
+ );
+ typeCode =
+ ORB.init().create_value_tc(_id, "cmInfo", VM_NONE.value, null, members);
+ }
+ return typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static cmInfo read(InputStream istream)
+ {
+ return (cmInfo) ((org.omg.CORBA_2_3.portable.InputStream) istream).read_value(id());
+ }
+
+ public static void write(OutputStream ostream, cmInfo value)
+ {
+ ((org.omg.CORBA_2_3.portable.OutputStream) ostream).write_value(value, id());
+ }
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java
new file mode 100644
index 00000000..7379d5f6
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoHolder.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+// Uses: cmInfo cmInfoHelper
+
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public final class cmInfoHolder
+ implements org.omg.CORBA.portable.Streamable
+{
+ public cmInfo value = null;
+
+ public cmInfoHolder()
+ {
+ }
+
+ public cmInfoHolder(cmInfo initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read(org.omg.CORBA.portable.InputStream i)
+ {
+ value = cmInfoHelper.read(i);
+ }
+
+ public void _write(org.omg.CORBA.portable.OutputStream o)
+ {
+ cmInfoHelper.write(o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type()
+ {
+ return cmInfoHelper.type();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl.java
new file mode 100644
index 00000000..8240cdfb
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoImpl.java
@@ -0,0 +1,30 @@
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public class cmInfoImpl
+ extends cmInfo
+{
+ public cmInfoImpl()
+ {
+ name = message = "Unitialised";
+ }
+
+ public cmInfoImpl(String a, String b)
+ {
+ name = a;
+ message = b;
+ }
+
+ public String _toString()
+ {
+ return name+";"+message;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java
new file mode 100644
index 00000000..24601f0e
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/Valtype/cmInfoValueFactory.java
@@ -0,0 +1,17 @@
+// Tags: not-a-test
+/*
+* This file is part of the CORBA 2_3 tests, the test executable
+* class being gnu.testlet.org.omg.CORBA_2_3.ORB.ValueTypeTest.
+* Due large number of the required classes, they are moved into
+* a separate package, Valuetype.
+*
+* @author Audrius Meskauskas (AudriusA@bluewin.ch)
+*/
+
+package gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype;
+
+public interface cmInfoValueFactory
+ extends org.omg.CORBA.portable.ValueFactory
+{
+
+}
diff --git a/gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java b/gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java
new file mode 100644
index 00000000..af1bff23
--- /dev/null
+++ b/gnu/testlet/org/omg/CORBA_2_3/ORB/ValueTypeTest.java
@@ -0,0 +1,208 @@
+// Tags: JDK1.3
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.CORBA_2_3.ORB;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.org.omg.CORBA.ORB.comServer;
+import gnu.testlet.org.omg.CORBA_2_3.ORB.Valtype.*;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+import java.io.InputStream;
+
+/**
+ * Tests the CORBA 2_3 features, related to the Value type,
+ * introduced since 1.3.
+ *
+ * The test is formally possible since v 1.3. However some Sun
+ * bugs are only fixed since 1.4.2_08_b03 inclusive, so the it
+ * will not succeed with the earlier releases.
+
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class ValueTypeTest
+ extends Asserter
+ implements Testlet
+{
+ ORB orb;
+ Greetings object;
+
+ public void testCustomValue()
+ {
+ h.checkPoint("Custom value");
+
+ ORB orb = ORB.init(new String[ 0 ], null);
+
+ Any sc = orb.create_any();
+
+ org.omg.CORBA_2_3.portable.OutputStream out =
+ (org.omg.CORBA_2_3.portable.OutputStream) sc.create_output_stream();
+
+ cmInfoImpl orig = new cmInfoImpl("first", "second");
+
+ out.write_value(orig);
+
+ Any b = orb.create_any();
+
+ InputStream ou = out.create_input_stream();
+
+ b.read_value((org.omg.CORBA_2_3.portable.InputStream) ou,
+ cmInfoHelper.type()
+ );
+
+ cmInfo s = (cmInfo) b.extract_Value();
+
+ assertEquals("After Any, cv ", s.message, orig.message);
+ assertEquals("After Any, cv ", s.name, orig.name);
+
+ cmInfo a =
+ (cmInfo) ((org.omg.CORBA_2_3.portable.InputStream) out.create_input_stream()).read_value();
+
+ assertEquals("After stream, cv ", a.message, orig.message);
+ assertEquals("After stream, cv ", a.name, orig.name);
+ }
+
+ public void testStreamableValue()
+ {
+ h.checkPoint("Streamable value");
+
+ try
+ {
+ ORB orb = ORB.init(new String[ 0 ], null);
+
+ for (int holder_mode = 0; holder_mode < 3; holder_mode++)
+ {
+ for (int helper_mode = 0; helper_mode < 4; helper_mode++)
+ {
+ InfoHolder.testMode = holder_mode;
+ InfoHelper.testMode = helper_mode;
+
+ String mode = holder_mode + ":" + helper_mode;
+
+ Any sc = orb.create_any();
+
+ org.omg.CORBA_2_3.portable.OutputStream out =
+ (org.omg.CORBA_2_3.portable.OutputStream) sc.create_output_stream();
+
+ InfoImpl orig = new InfoImpl("first", "second");
+
+ out.write_value(orig);
+
+ Any b = orb.create_any();
+
+ InputStream ou = out.create_input_stream();
+ TypeCode type = orig._type();
+
+ b.read_value((org.omg.CORBA_2_3.portable.InputStream) ou, type);
+
+ Info s = (Info) b.extract_Value();
+
+ assertEquals("After Any, sv " + mode, s._message, orig._message);
+ assertEquals("After Any, sv " + mode, s._name, orig._name);
+
+ Info a =
+ (Info) ((org.omg.CORBA_2_3.portable.InputStream) out.create_input_stream()).read_value();
+
+ assertEquals("After stream, sv " + mode, a._message,
+ orig._message
+ );
+ assertEquals("After stream, sv " + mode, a._name, orig._name);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ fail(ex + ", Sun fixed this in 1.4.2 only.");
+ }
+ }
+
+ public void testDirectComunication()
+ {
+ try
+ {
+ h.checkPoint("Value type transfer");
+
+ InfoImpl info =
+ new InfoImpl("http://www.gnu.org/software/classpath/classpath.html",
+ "http://www.lietuva.lt/"
+ );
+ cmInfoImpl cinfo =
+ new cmInfoImpl("http://www.akl.lt/en", "http://www.ffii.org/");
+
+ InfoHolder h = new InfoHolder(info);
+ cmInfoHolder ch = new cmInfoHolder(cinfo);
+
+ object.hello(ch, h);
+
+ assertEquals("Custom marshal ",
+ "http://www.akl.lt/en+;Names: " +
+ "http://www.akl.lt/en+http://www.gnu.org/software/" +
+ "classpath/classpath.html", ch.value.toString()
+ );
+
+ assertEquals("Stramable value ",
+ "http://www.gnu.org/software/classpath/classpath.html" +
+ "+--Messages: http://www.lietuva.lt/+Names: " +
+ "http://www.akl.lt/en+http://www.gnu.org/software/" +
+ "classpath/classpath.html", h.value.toString()
+ );
+ }
+ catch (Exception ex)
+ {
+ fail(ex + ", Sun fixed this in 1.4.2 only.");
+ }
+ }
+
+ protected void setUp()
+ {
+ String ior = comServer.start_server(new String[ 0 ]) [ 1 ];
+ orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+ object = (Greetings) orb.string_to_object(ior);
+ }
+
+ public void test(TestHarness harness)
+ {
+ h = harness;
+ // Set the loader of this class as a context class loader, ensuring that the
+ // CORBA implementation will be able to locate the stub classes.
+ ClassLoader previous = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ try
+ {
+ setUp();
+ testCustomValue();
+ testStreamableValue();
+ testDirectComunication();
+ }
+ catch (Throwable ex)
+ {
+ h.fail("Exception " + ex);
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(previous);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/CVS/Entries b/gnu/testlet/org/omg/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/CVS/Entries.Log b/gnu/testlet/org/omg/CVS/Entries.Log
new file mode 100644
index 00000000..275a2d61
--- /dev/null
+++ b/gnu/testlet/org/omg/CVS/Entries.Log
@@ -0,0 +1,6 @@
+A D/CORBA////
+A D/CORBA_2_3////
+A D/DynamicAny////
+A D/IOP////
+A D/PortableInterceptor////
+A D/PortableServer////
diff --git a/gnu/testlet/org/omg/CVS/Repository b/gnu/testlet/org/omg/CVS/Repository
new file mode 100644
index 00000000..85b2920a
--- /dev/null
+++ b/gnu/testlet/org/omg/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg
diff --git a/gnu/testlet/org/omg/CVS/Root b/gnu/testlet/org/omg/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/DynamicAny/CVS/Entries b/gnu/testlet/org/omg/DynamicAny/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/DynamicAny/CVS/Entries.Log b/gnu/testlet/org/omg/DynamicAny/CVS/Entries.Log
new file mode 100644
index 00000000..9e6c4d20
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/DynAny////
diff --git a/gnu/testlet/org/omg/DynamicAny/CVS/Repository b/gnu/testlet/org/omg/DynamicAny/CVS/Repository
new file mode 100644
index 00000000..b48bb2cc
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/DynamicAny
diff --git a/gnu/testlet/org/omg/DynamicAny/CVS/Root b/gnu/testlet/org/omg/DynamicAny/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java b/gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java
new file mode 100644
index 00000000..5a668988
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/BasicTest.java
@@ -0,0 +1,1237 @@
+// Tags: JDK1.4
+// Uses: ../../PortableServer/POA/TestBase
+
+// Copyright (c) IONA Technologies, 2001.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// IONA Technologies, Inc.
+// Waltham, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.DynamicAny.DynAny;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.DynamicAny.DynAny.Iona.TestEnum;
+import gnu.testlet.org.omg.DynamicAny.DynAny.Iona.TestEnumHelper;
+import gnu.testlet.org.omg.DynamicAny.DynAny.Iona.TestStruct;
+import gnu.testlet.org.omg.DynamicAny.DynAny.Iona.TestStructHelper;
+import gnu.testlet.org.omg.PortableServer.POA.TestBase;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Object;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.DynamicAny.DynAny;
+import org.omg.DynamicAny.DynAnyFactory;
+import org.omg.DynamicAny.DynAnyFactoryHelper;
+import org.omg.DynamicAny.DynEnum;
+import org.omg.DynamicAny.DynEnumHelper;
+import org.omg.DynamicAny.DynFixed;
+import org.omg.DynamicAny.DynFixedHelper;
+import org.omg.DynamicAny.DynStruct;
+import org.omg.DynamicAny.DynStructHelper;
+import org.omg.DynamicAny.NameDynAnyPair;
+import org.omg.DynamicAny.NameValuePair;
+
+import java.math.BigDecimal;
+
+public class BasicTest
+ extends TestBase
+ implements Testlet
+{
+ final String ANY_VALUE = "This is a string in an any";
+ final String STRING_VALUE = "This is a string";
+ final String WSTRING_VALUE = "This is a wstring";
+ final boolean BOOLEAN_VALUE = true;
+ final byte OCTET_VALUE = (byte) 155;
+ final char CHAR_VALUE = 'Y';
+ final double DOUBLE_VALUE = 7.31e29;
+ final float FLOAT_VALUE = (float) 1.9183;
+ final int LONG_VALUE = -300000;
+ final int ULONG_VALUE = 500000;
+ final short SHORT_VALUE = (short) -10000;
+ final short USHORT_VALUE = (short) 40000;
+
+ //
+ // Can't do this, because it causes a failure under JDK 1.2.2.
+ // The problem is that ORB.init() is called before main() has
+ // a chance to set the ORB properties, so the JDK ORB's
+ // singleton implementation is used instead. This will result
+ // in a NullPointerException due to a bug in that ORB.
+ //
+ // final TypeCode TYPECODE_VALUE =
+ // ORB.init().get_primitive_tc(TCKind.tk_float);
+ TypeCode TYPECODE_VALUE;
+ final char WCHAR_VALUE = 'Z';
+ final long LONGLONG_VALUE = -1234567890L;
+ final long ULONGLONG_VALUE = 9876543210L;
+ DynAnyFactory factory;
+ ORB orb;
+
+ public void setUp()
+ {
+ orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+ TYPECODE_VALUE = orb.get_primitive_tc(TCKind.tk_float);
+
+ org.omg.CORBA.Object obj = null;
+
+ try
+ {
+ obj = orb.resolve_initial_references("DynAnyFactory");
+ TEST(obj != null);
+ factory = DynAnyFactoryHelper.narrow(obj);
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ TEST(false, ex.getMessage());
+ }
+ }
+
+ public void allTests(ORB orb, Object o)
+ {
+ DynAnyFactory factory = DynAnyFactoryHelper.narrow(o);
+
+ testBasic();
+ testFixed();
+ testEnum();
+ testStruct();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ setUp();
+ allTests(orb, factory);
+ tearDown();
+ }
+
+ public void testBasic()
+ {
+ try
+ {
+ org.omg.CORBA.Object obj;
+ Any any = orb.create_any();
+ Any av;
+ DynAny d1 = null;
+ DynAny d2 = null;
+ DynAny copy = null;
+ TypeCode type;
+ TypeCode tc;
+
+ //
+ // Test: short
+ //
+ type = orb.get_primitive_tc(TCKind.tk_short);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_short() == (short) 0);
+ d1.insert_short((short) -53);
+ TEST(d1.get_short() == (short) -53);
+ d1.insert_short((short) 32000);
+ TEST(d1.get_short() == (short) 32000);
+
+ av = d1.to_any();
+
+ short shortVal = av.extract_short();
+ TEST(shortVal == (short) 32000);
+
+ any.insert_short((short) 32000);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_short() == (short) 32000);
+
+ any.insert_short((short) -99);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: unsigned short
+ //
+ type = orb.get_primitive_tc(TCKind.tk_ushort);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_ushort() == (short) 0);
+ d1.insert_ushort((short) 199);
+ TEST(d1.get_ushort() == (short) 199);
+ d1.insert_ushort((short) 65001);
+ TEST(d1.get_ushort() == (short) 65001);
+
+ av = d1.to_any();
+
+ short ushortVal = av.extract_ushort();
+ TEST(ushortVal == (short) 65001);
+
+ any.insert_ushort((short) 65001);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_ushort() == (short) 65001);
+
+ any.insert_ushort((short) 501);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: long
+ //
+ type = orb.get_primitive_tc(TCKind.tk_long);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_long() == 0);
+ d1.insert_long(-530000);
+ TEST(d1.get_long() == -530000);
+ d1.insert_long(3200000);
+ TEST(d1.get_long() == 3200000);
+
+ av = d1.to_any();
+
+ int longVal = av.extract_long();
+ TEST(longVal == 3200000);
+
+ any.insert_long(3200000);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_long() == 3200000);
+
+ any.insert_long(-99000);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: unsigned long
+ //
+ type = orb.get_primitive_tc(TCKind.tk_ulong);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_ulong() == 0);
+ d1.insert_ulong(199000);
+ TEST(d1.get_ulong() == 199000);
+ d1.insert_ulong(65001000);
+ TEST(d1.get_ulong() == 65001000);
+
+ av = d1.to_any();
+
+ int ulongVal = av.extract_ulong();
+ TEST(ulongVal == 65001000);
+
+ any.insert_ulong(65001000);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_ulong() == 65001000);
+
+ any.insert_ulong(501000);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: float
+ //
+ type = orb.get_primitive_tc(TCKind.tk_float);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_float() == 0.0f);
+ d1.insert_float(199.001f);
+ TEST(d1.get_float() > 199.0f && d1.get_float() < 199.1f);
+ d1.insert_float(6500.10001f);
+ TEST(d1.get_float() > 6500.0f && d1.get_float() < 6501.0f);
+
+ av = d1.to_any();
+
+ float floatVal = av.extract_float();
+ TEST(floatVal > 6500.1 && floatVal < 6500.2);
+
+ any.insert_float((float) 6500.10001);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_float() > 6500.1 && copy.get_float() < 6500.2);
+
+ any.insert_float((float) 501.001);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: double
+ //
+ type = orb.get_primitive_tc(TCKind.tk_double);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_double() == 0.0);
+ d1.insert_double(199000.001);
+ TEST(d1.get_double() > 199000.0 && d1.get_double() < 199000.1);
+ d1.insert_double(6500000.10001);
+ TEST(d1.get_double() > 6500000.1 && d1.get_double() < 6500000.2);
+
+ av = d1.to_any();
+
+ double doubleVal = av.extract_double();
+ TEST(doubleVal > 6500000.1 && doubleVal < 6500000.2);
+
+ any.insert_double(6500000.10001);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_double() > 6500000.1 && copy.get_double() < 6500000.2);
+
+ any.insert_double(501000.001);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: boolean
+ //
+ type = orb.get_primitive_tc(TCKind.tk_boolean);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_boolean() == false);
+ d1.insert_boolean(false);
+ TEST(d1.get_boolean() == false);
+ d1.insert_boolean(true);
+ TEST(d1.get_boolean() == true);
+
+ av = d1.to_any();
+
+ boolean boolVal = av.extract_boolean();
+ TEST(boolVal == true);
+
+ any.insert_boolean(true);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_boolean() == true);
+
+ any.insert_boolean(false);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: char
+ //
+ type = orb.get_primitive_tc(TCKind.tk_char);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_char() == 0);
+ d1.insert_char('A');
+ TEST(d1.get_char() == 'A');
+ d1.insert_char('z');
+ TEST(d1.get_char() == 'z');
+
+ av = d1.to_any();
+
+ char charVal = av.extract_char();
+ TEST(charVal == 'z');
+
+ any.insert_char('z');
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_char() == 'z');
+
+ any.insert_char('@');
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: octet
+ //
+ type = orb.get_primitive_tc(TCKind.tk_octet);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ TEST(d1.get_octet() == 0);
+ d1.insert_octet((byte) 255);
+ TEST(d1.get_octet() == (byte) 255);
+ d1.insert_octet((byte) 1);
+ TEST(d1.get_octet() == (byte) 1);
+
+ av = d1.to_any();
+
+ byte octetVal = av.extract_octet();
+ TEST(octetVal == (byte) 1);
+
+ any.insert_octet((byte) 1);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+ TEST(copy.get_octet() == (byte) 1);
+
+ any.insert_octet((byte) 127);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+
+ //
+ // Test: any
+ //
+ type = orb.get_primitive_tc(TCKind.tk_any);
+ d1 = factory.create_dyn_any_from_type_code(type);
+ any.insert_long(345678);
+ d1.insert_any(any);
+ av = d1.get_any();
+ longVal = av.extract_long();
+ TEST(longVal == 345678);
+
+ any = orb.create_any();
+
+ Any anyVal = orb.create_any();
+ anyVal.insert_long(345678);
+ any.insert_any(anyVal);
+ d2 = factory.create_dyn_any(any);
+ TEST(d1.equal(d2));
+
+ av = d1.to_any();
+
+ Any cap = av.extract_any();
+ longVal = cap.extract_long();
+ TEST(longVal == 345678);
+
+ anyVal.insert_string("anyValue");
+ any.insert_any(anyVal);
+ d2.from_any(any);
+ d1.assign(d2);
+ TEST(d1.equal(d2));
+
+ copy = d1.copy();
+ TEST(d1.equal(copy));
+
+ d1.destroy();
+ d2.destroy();
+ copy.destroy();
+
+ testOps(orb, factory, type, false);
+ }
+ catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode ex)
+ {
+ TEST(false);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ ex.printStackTrace();
+ TEST(false, ex.getMessage());
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ TEST(false);
+ }
+ }
+
+ public void testEnum()
+ {
+ try
+ {
+ Any any = orb.create_any();
+ Any av;
+ DynAny d1 = null;
+ DynAny d2 = null;
+ DynAny copy = null;
+ String str;
+ DynEnum e1;
+ DynEnum e2;
+ TestEnum e;
+ TypeCode type = TestEnumHelper.type();
+
+ //
+ // Test: initial value
+ //
+ d1 = factory.create_dyn_any_from_type_code(type);
+ e1 = DynEnumHelper.narrow(d1);
+ TEST(e1.get_as_ulong() == 0);
+ str = e1.get_as_string();
+ TEST(str.equals("red"));
+
+ //
+ // Test: set_as_string()
+ //
+ e1.set_as_string("green");
+ TEST(e1.get_as_ulong() == 1);
+ str = e1.get_as_string();
+ TEST(str.equals("green"));
+ e1.set_as_string("blue");
+ TEST(e1.get_as_ulong() == 2);
+ str = e1.get_as_string();
+ TEST(str.equals("blue"));
+
+ //
+ // Test: set_as_ulong()
+ //
+ e1.set_as_ulong(1);
+ TEST(e1.get_as_ulong() == 1);
+ str = e1.get_as_string();
+ TEST(str.equals("green"));
+ e1.set_as_ulong(2);
+ TEST(e1.get_as_ulong() == 2);
+ str = e1.get_as_string();
+ TEST(str.equals("blue"));
+
+ //
+ // Test: from_any()
+ //
+ TestEnumHelper.insert(any, TestEnum.green);
+ e1.from_any(any);
+
+ //
+ // Test: to_any()
+ //
+ av = e1.to_any();
+ e = TestEnumHelper.extract(av);
+ TEST(e == TestEnum.green);
+
+ //
+ // Test: copy
+ //
+ copy = e1.copy();
+ TEST(e1.equal(copy));
+
+ e1.destroy();
+ copy.destroy();
+
+ //
+ // Test: set_as_ulong() InvalidValue exception
+ //
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(type);
+ e1 = DynEnumHelper.narrow(d1);
+ e1.set_as_ulong(3);
+ TEST("set_as_ulong() should not have succeeded" == null);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ // expected
+ d1.destroy();
+ }
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(type);
+ e1 = DynEnumHelper.narrow(d1);
+
+ //
+ // In Java there is no *unsigned* int, so we need an
+ // additional test case not required for C++.
+ //
+ e1.set_as_ulong(-1);
+ TEST("set_as_ulong() should not have succeeded" == null);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ // expected
+ d1.destroy();
+ }
+
+ //
+ // Test: set_as_string() InvalidValue exception
+ //
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(type);
+ e1 = DynEnumHelper.narrow(d1);
+ e1.set_as_string("alizarin");
+ TEST("set_as_string() should not have succeeded" == null);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ // expected
+ d1.destroy();
+ }
+
+ testOps(orb, factory, TestEnumHelper.type(), false);
+ }
+ catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode ex)
+ {
+ TEST(false);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ TEST(false);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ TEST(false);
+ }
+ }
+
+ public void testFixed()
+ {
+ try
+ {
+ Any any = orb.create_any();
+ Any av;
+ DynAny d1 = null;
+ DynAny d2 = null;
+ DynAny copy = null;
+ TypeCode tc;
+ String str;
+ DynFixed f1;
+ DynFixed f2;
+ BigDecimal f;
+
+ //
+ // Create TypeCode
+ //
+ tc = orb.create_fixed_tc((short) 5, (short) 2);
+
+ //
+ // Test: get_value()
+ //
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ f1 = DynFixedHelper.narrow(d1);
+ str = f1.get_value();
+ f = new BigDecimal(str);
+ TEST(Math.abs(f.floatValue() - 0.0) < Float.MIN_VALUE);
+
+ //
+ // Test: set_value()
+ //
+ TEST(f1.set_value("1.1"));
+ TEST(f1.set_value("123.1"));
+ TEST(f1.set_value("123.12"));
+ TEST(!f1.set_value("123.123"));
+
+ //
+ // Test: from_any()
+ //
+ f = new BigDecimal("98");
+ any.insert_fixed(f, tc);
+ f1.from_any(any);
+
+ //
+ // Test: to_any()
+ //
+ av = f1.to_any();
+ f = av.extract_fixed();
+ TEST(f.equals(new BigDecimal("98")));
+
+ //
+ // Test: copy
+ //
+ copy = f1.copy();
+ TEST(f1.equal(copy));
+
+ f1.destroy();
+ copy.destroy();
+
+ //
+ // Test: set_value() InvalidValue exception (part 1)
+ //
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ f1 = DynFixedHelper.narrow(d1);
+ f1.set_value("");
+ harness.fail("set_value() should not have succeeded");
+ }
+ catch (Exception ex)
+ {
+ // expected
+ d1.destroy();
+ }
+
+ //
+ // Test: assign() TypeMismatch exception
+ //
+ try
+ {
+ f = new BigDecimal("99");
+ any.insert_fixed(f, orb.create_fixed_tc((short) 4, (short) 2));
+ d1 = factory.create_dyn_any(any);
+ d2 = factory.create_dyn_any_from_type_code(tc);
+ d2.assign(d1);
+ harness.fail("assign() should not have succeeded");
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ // expected
+ d1.destroy();
+ d2.destroy();
+ }
+
+ //
+ // Test: from_any() TypeMismatch exception
+ //
+ try
+ {
+ f = new BigDecimal("99");
+ any.insert_fixed(f, orb.create_fixed_tc((short) 4, (short) 2));
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ d1.from_any(any);
+ harness.fail("from_any() should not have succeeded");
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ // expected
+ d1.destroy();
+ }
+
+ testOps(orb, factory, tc, false);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ fail(ex);
+ }
+ }
+
+ public void testStruct()
+ {
+ try
+ {
+ int i;
+ Any any = orb.create_any();
+ Any av;
+ DynAny d1;
+ DynAny d2;
+ DynAny copy;
+ String str;
+ String wstr;
+ DynStruct s1;
+ DynStruct s2;
+ String cp;
+ TypeCode type;
+ TypeCode tc;
+ TestStruct ts = new TestStruct();
+ TestStruct pts;
+ NameValuePair[] nvpseq;
+ NameDynAnyPair[] ndpseq;
+
+ type = TestStructHelper.type();
+ d1 = factory.create_dyn_any_from_type_code(type);
+ s1 = DynStructHelper.narrow(d1);
+
+ //
+ // Test: current_member_name, current_member_kind
+ //
+ str = s1.current_member_name();
+ TEST(str.equals("shortVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_short);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("ushortVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_ushort);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("longVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_long);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("ulongVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_ulong);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("floatVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_float);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("doubleVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_double);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("boolVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_boolean);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("charVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_char);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("octetVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_octet);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("anyVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_any);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("tcVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_TypeCode);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("objectVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_objref);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("stringVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_string);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("longlongVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_longlong);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("ulonglongVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_ulonglong);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("wcharVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_wchar);
+ s1.next();
+ str = s1.current_member_name();
+ TEST(str.equals("wstringVal"));
+ TEST(s1.current_member_kind() == TCKind.tk_wstring);
+
+ //
+ // Test: insert values into members
+ //
+ s1.rewind();
+ s1.insert_short(SHORT_VALUE);
+ s1.next();
+ s1.insert_ushort(USHORT_VALUE);
+ s1.next();
+ s1.insert_long(LONG_VALUE);
+ s1.next();
+ s1.insert_ulong(ULONG_VALUE);
+ s1.next();
+ s1.insert_float(FLOAT_VALUE);
+ s1.next();
+ s1.insert_double(DOUBLE_VALUE);
+ s1.next();
+ s1.insert_boolean(BOOLEAN_VALUE);
+ s1.next();
+ s1.insert_char(CHAR_VALUE);
+ s1.next();
+ s1.insert_octet(OCTET_VALUE);
+ s1.next();
+
+ DynAny d1c = d1.current_component();
+
+ any.insert_string(ANY_VALUE);
+ s1.insert_any(any);
+ s1.next();
+ s1.insert_typecode(TYPECODE_VALUE);
+ s1.next();
+ s1.insert_reference(null);
+ s1.next();
+ s1.insert_string(STRING_VALUE);
+ s1.next();
+ s1.insert_longlong(LONGLONG_VALUE);
+ s1.next();
+ s1.insert_ulonglong(ULONGLONG_VALUE);
+ s1.next();
+ s1.insert_wchar(WCHAR_VALUE);
+ s1.next();
+ s1.insert_wstring(WSTRING_VALUE);
+ s1.next();
+
+ //
+ // Test: get values from members
+ //
+ s1.rewind();
+ TEST(s1.get_short() == SHORT_VALUE);
+ s1.next();
+ TEST(s1.get_ushort() == USHORT_VALUE);
+ s1.next();
+ TEST(s1.get_long() == LONG_VALUE);
+ s1.next();
+ TEST(s1.get_ulong() == ULONG_VALUE);
+ s1.next();
+ TEST(s1.get_float() == FLOAT_VALUE);
+ s1.next();
+ TEST(s1.get_double() == DOUBLE_VALUE);
+ s1.next();
+ TEST(s1.get_boolean() == BOOLEAN_VALUE);
+ s1.next();
+ TEST(s1.get_char() == CHAR_VALUE);
+ s1.next();
+ TEST(s1.get_octet() == OCTET_VALUE);
+ s1.next();
+ av = s1.get_any();
+
+ TEST(av.extract_string().equals(ANY_VALUE));
+ s1.next();
+ tc = s1.get_typecode();
+ s1.next();
+ TEST(tc.equal(TYPECODE_VALUE));
+ TEST(s1.get_reference() == null);
+ s1.next();
+ str = s1.get_string();
+ s1.next();
+ TEST(str.equals(STRING_VALUE));
+ TEST(s1.get_longlong() == LONGLONG_VALUE);
+ s1.next();
+ TEST(s1.get_ulonglong() == ULONGLONG_VALUE);
+ s1.next();
+ TEST(s1.get_wchar() == WCHAR_VALUE);
+ s1.next();
+ wstr = s1.get_wstring();
+ s1.next();
+ TEST(wstr.equals(WSTRING_VALUE));
+
+ //
+ // Test: get_members
+ //
+ nvpseq = s1.get_members();
+ s1.rewind();
+ for (i = 0; i < 11; i++)
+ {
+ str = s1.current_member_name();
+ TEST(str.equals(nvpseq [ i ].id));
+
+ DynAny dv = factory.create_dyn_any(nvpseq [ i ].value);
+ DynAny comp = s1.current_component();
+ TEST(dv.equal(comp));
+ dv.destroy();
+ s1.next();
+ }
+
+ //
+ // Test: get_members_as_dyn_any
+ //
+ ndpseq = s1.get_members_as_dyn_any();
+ s1.rewind();
+ for (i = 0; i < 11; i++)
+ {
+ str = s1.current_member_name();
+ TEST(str.equals(ndpseq [ i ].id));
+ s1.next();
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ fail(ex);
+ }
+ }
+
+ protected void tearDown()
+ {
+ orb.destroy();
+ }
+
+ void checkStruct(final TestStruct ts)
+ {
+ TEST(ts.shortVal == SHORT_VALUE);
+ TEST(ts.ushortVal == USHORT_VALUE);
+ TEST(ts.longVal == LONG_VALUE);
+ TEST(ts.ulongVal == ULONG_VALUE);
+ TEST(ts.floatVal == FLOAT_VALUE);
+ TEST(ts.doubleVal == DOUBLE_VALUE);
+ TEST(ts.boolVal == BOOLEAN_VALUE);
+ TEST(ts.charVal == CHAR_VALUE);
+ TEST(ts.octetVal == OCTET_VALUE);
+ TEST(ts.anyVal.extract_string().equals(ANY_VALUE));
+ TEST(ts.tcVal.equal(TYPECODE_VALUE));
+ TEST(ts.objectVal == null);
+ TEST(ts.stringVal.equals(STRING_VALUE));
+ TEST(ts.longlongVal == LONGLONG_VALUE);
+ TEST(ts.ulonglongVal == ULONGLONG_VALUE);
+ TEST(ts.wcharVal == WCHAR_VALUE);
+ TEST(ts.wstringVal.equals(WSTRING_VALUE));
+ }
+
+ void loadStruct(ORB orb, TestStruct ts)
+ {
+ ts.shortVal = SHORT_VALUE;
+ ts.ushortVal = USHORT_VALUE;
+ ts.longVal = LONG_VALUE;
+ ts.ulongVal = ULONG_VALUE;
+ ts.floatVal = FLOAT_VALUE;
+ ts.doubleVal = DOUBLE_VALUE;
+ ts.boolVal = BOOLEAN_VALUE;
+ ts.charVal = CHAR_VALUE;
+ ts.octetVal = OCTET_VALUE;
+ ts.anyVal = orb.create_any();
+ ts.anyVal.insert_string(ANY_VALUE);
+ ts.tcVal = TYPECODE_VALUE;
+ ts.objectVal = null;
+ ts.stringVal = STRING_VALUE;
+ ts.longlongVal = LONGLONG_VALUE;
+ ts.ulonglongVal = ULONGLONG_VALUE;
+ ts.wcharVal = WCHAR_VALUE;
+ ts.wstringVal = WSTRING_VALUE;
+ }
+
+ //
+ // Test generic operations
+ //
+ void testOps(ORB orb, DynAnyFactory factory, TypeCode tc,
+ boolean hasComponents
+ )
+ {
+ try
+ {
+ Any badAny = orb.create_any();
+ DynAny d1 = null;
+ DynAny d2 = null;
+ DynAny d3 = null;
+ DynAny copy = null;
+ TypeCode origTC = getOrigType(tc);
+
+ //
+ // Create an any having a TypeCode that will not match tc
+ //
+ if (tc.kind() != TCKind.tk_short)
+ badAny.insert_short((short) 0);
+ else
+ badAny.insert_ushort((short) 0);
+
+ //
+ // Test: type()
+ //
+ d1 = factory.create_dyn_any_from_type_code(tc);
+
+ TypeCode tcv = d1.type();
+ TEST(tc.equal(tcv));
+ d1.destroy();
+
+ //
+ // Test: assign() TypeMismatch exception
+ //
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ d2 = factory.create_dyn_any(badAny);
+ d1.assign(d2);
+ TEST("assign() should not have succeeded" == null);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ // expected
+ d1.destroy();
+ d2.destroy();
+ }
+
+ //
+ // Test: from_any() TypeMismatch exception
+ //
+ try
+ {
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ d1.from_any(badAny);
+ TEST("from_any() should not have succeeded" == null);
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.TypeMismatch ex)
+ {
+ // expected
+ d1.destroy();
+ }
+
+ //
+ // Test: from_any() InvalidValue exception
+ //
+ switch (origTC.kind().value())
+ {
+ case TCKind._tk_null :
+ case TCKind._tk_void :
+ case TCKind._tk_TypeCode :
+ case TCKind._tk_Principal :
+ case TCKind._tk_objref :
+ case TCKind._tk_value :
+ case TCKind._tk_value_box :
+
+ // nothing to do
+ break;
+
+ default :
+ try
+ {
+ Any a = orb.create_any();
+ a.type(tc);
+ d1 = factory.create_dyn_any_from_type_code(tc);
+ d1.from_any(a);
+ harness.fail("from_any() should not have succeeded");
+ }
+ catch (org.omg.DynamicAny.DynAnyPackage.InvalidValue ex)
+ {
+ // expected
+ d1.destroy();
+ }
+ }
+
+ if (hasComponents)
+ {
+ int count;
+
+ d1 = factory.create_dyn_any_from_type_code(tc);
+
+ if (origTC.kind() == TCKind.tk_union)
+ count = d1.component_count();
+ else
+ count = origTC.member_count();
+ TEST(count > 0);
+
+ //
+ // Test: seek
+ //
+ TEST(d1.seek(0) == true);
+ TEST(d1.seek(-1) == false);
+ TEST(d1.seek(count) == false);
+ TEST(d1.seek(count - 1) == true);
+
+ //
+ // Test: next
+ //
+ d1.seek(-1);
+ TEST(d1.next() == true);
+ d1.seek(count - 1);
+ TEST(d1.next() == false);
+
+ //
+ // Test: component_count()
+ //
+ TEST(d1.component_count() == count);
+
+ //
+ // Test: current_component
+ //
+ d1.rewind();
+ d2 = d1.current_component();
+ TEST(d2 != null);
+
+ //
+ // Test: destroy
+ //
+ d2.destroy(); // should do nothing because it's a child
+ d2.destroy(); // ditto
+
+ //
+ // Test: current_component
+ //
+ d1.seek(-9);
+ d3 = d1.current_component();
+ TEST(d3 == null);
+
+ d1.destroy();
+ }
+ else
+ {
+ d1 = factory.create_dyn_any_from_type_code(tc);
+
+ //
+ // Test: seek
+ //
+ TEST(d1.seek(0) == false);
+ TEST(d1.seek(-1) == false);
+
+ //
+ // Test: next
+ //
+ TEST(d1.next() == false);
+
+ //
+ // Test: component_count()
+ //
+ TEST(d1.component_count() == 0);
+ }
+ }
+ catch (Exception ex)
+ {
+ fail(ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries
new file mode 100644
index 00000000..6e84452b
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries
@@ -0,0 +1,2 @@
+/BasicTest.java/1.2/Wed Jun 25 08:01:02 2008//
+D
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries.Log b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries.Log
new file mode 100644
index 00000000..b61b4070
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Iona////
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Repository b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Repository
new file mode 100644
index 00000000..841e0eb3
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/DynamicAny/DynAny
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Root b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Entries b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Entries
new file mode 100644
index 00000000..0c0acfd3
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Entries
@@ -0,0 +1,5 @@
+/TestEnum.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestEnumHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestStruct.java/1.1/Sun Aug 7 17:28:22 2005//
+/TestStructHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+D
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Repository b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Repository
new file mode 100644
index 00000000..3dd7476c
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/DynamicAny/DynAny/Iona
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Root b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum.java b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum.java
new file mode 100644
index 00000000..bca2c843
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum.java
@@ -0,0 +1,79 @@
+// Tags: not-a-test
+// Copyright (c) IONA Technologies, 2001.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.DynamicAny.DynAny.Iona;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.portable.IDLEntity;
+
+public class TestEnum
+ implements IDLEntity
+{
+ static int m_size = 3;
+ static TestEnum[] m_array = new TestEnum[ m_size ];
+ static int m_red = 0;
+ static int m_blue = 2;
+ static int m_green = 1;
+ public static TestEnum red = new TestEnum(m_red);
+ public static TestEnum green = new TestEnum(m_green);
+ public static TestEnum blue = new TestEnum(m_blue);
+ int m_value;
+
+ protected TestEnum(int value)
+ {
+ m_value = value;
+ m_array [ m_value ] = this;
+ }
+
+ public static TestEnum from_int(int value)
+ {
+ if (value >= 0 && value < m_size)
+ {
+ return m_array [ value ];
+ }
+ else
+ {
+ throw new BAD_PARAM();
+ }
+ }
+
+ public int value()
+ {
+ return m_value;
+ }
+}
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnumHelper.java b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnumHelper.java
new file mode 100644
index 00000000..3aef24d2
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnumHelper.java
@@ -0,0 +1,86 @@
+// Tags: not-a-test
+// Copyright (c) IONA Technologies, 2001.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.DynamicAny.DynAny.Iona;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class TestEnumHelper
+{
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestEnum:1.0";
+
+ public static TestEnum extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static void insert(Any a, TestEnum that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static TestEnum read(InputStream istream)
+ {
+ return TestEnum.from_int(istream.read_long());
+ }
+
+ public static TypeCode type()
+ {
+ return ORB.init().create_enum_tc(TestEnumHelper.id(), "TestEnum",
+ new String[] { "red", "green", "blue" }
+ );
+ }
+
+ public static void write(OutputStream ostream, TestEnum value)
+ {
+ ostream.write_long(value.value());
+ }
+}
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStruct.java b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStruct.java
new file mode 100644
index 00000000..2ceef45b
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStruct.java
@@ -0,0 +1,60 @@
+// Copyright (c) IONA Technologies, 2001.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.DynamicAny.DynAny.Iona;
+
+public final class TestStruct
+ implements org.omg.CORBA.portable.IDLEntity
+{
+ public org.omg.CORBA.Any anyVal;
+ public org.omg.CORBA.Object objectVal;
+ public String stringVal;
+ public String wstringVal;
+ public org.omg.CORBA.TypeCode tcVal;
+ public boolean boolVal;
+ public byte octetVal;
+ public char charVal;
+ public char wcharVal;
+ public double doubleVal;
+ public float floatVal;
+ public int longVal;
+ public int ulongVal;
+ public long longlongVal;
+ public long ulonglongVal;
+ public short shortVal;
+ public short ushortVal;
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java
new file mode 100644
index 00000000..85209df2
--- /dev/null
+++ b/gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStructHelper.java
@@ -0,0 +1,167 @@
+// Tags: not-a-test
+// Copyright (c) IONA Technologies, 2001.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.DynamicAny.DynAny.Iona;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ObjectHelper;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class TestStructHelper
+{
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/DynamicAny/DynAny/Iona/TestStruct:1.0";
+
+ public static void insert(Any a, TestStruct that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static TestStruct extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ private static TypeCode typeCode = null;
+
+ public static TypeCode type()
+ {
+ if (typeCode == null)
+ {
+ StructMember[] members = new StructMember[ 17 ];
+
+ ORB orb = ORB.init();
+
+ TypeCode t_member;
+ t_member = orb.get_primitive_tc(TCKind.tk_short);
+ members [ 0 ] = new StructMember("shortVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_ushort);
+ members [ 1 ] = new StructMember("ushortVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_long);
+ members [ 2 ] = new StructMember("longVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_ulong);
+ members [ 3 ] = new StructMember("ulongVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_float);
+ members [ 4 ] = new StructMember("floatVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_double);
+ members [ 5 ] = new StructMember("doubleVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_boolean);
+ members [ 6 ] = new StructMember("boolVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_char);
+ members [ 7 ] = new StructMember("charVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_octet);
+ members [ 8 ] = new StructMember("octetVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_any);
+ members [ 9 ] = new StructMember("anyVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_TypeCode);
+ members [ 10 ] = new StructMember("tcVal", t_member, null);
+ t_member = ObjectHelper.type();
+ members [ 11 ] = new StructMember("objectVal", t_member, null);
+ t_member = orb.create_string_tc(0);
+ members [ 12 ] = new StructMember("stringVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_longlong);
+ members [ 13 ] = new StructMember("longlongVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_ulonglong);
+ members [ 14 ] = new StructMember("ulonglongVal", t_member, null);
+ t_member = orb.get_primitive_tc(TCKind.tk_wchar);
+ members [ 15 ] = new StructMember("wcharVal", t_member, null);
+ t_member = orb.create_wstring_tc(0);
+ members [ 16 ] = new StructMember("wstringVal", t_member, null);
+ typeCode =
+ orb.create_struct_tc(TestStructHelper.id(), "TestStruct", members);
+ }
+ return typeCode;
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static TestStruct read(InputStream istream)
+ {
+ TestStruct value = new TestStruct();
+ value.shortVal = istream.read_short();
+ value.ushortVal = istream.read_ushort();
+ value.longVal = istream.read_long();
+ value.ulongVal = istream.read_ulong();
+ value.floatVal = istream.read_float();
+ value.doubleVal = istream.read_double();
+ value.boolVal = istream.read_boolean();
+ value.charVal = istream.read_char();
+ value.octetVal = istream.read_octet();
+ value.anyVal = istream.read_any();
+ value.tcVal = istream.read_TypeCode();
+ value.objectVal = ObjectHelper.read(istream);
+ value.stringVal = istream.read_string();
+ value.longlongVal = istream.read_longlong();
+ value.ulonglongVal = istream.read_ulonglong();
+ value.wcharVal = istream.read_wchar();
+ value.wstringVal = istream.read_wstring();
+ return value;
+ }
+
+ public static void write(OutputStream ostream, TestStruct value)
+ {
+ ostream.write_short(value.shortVal);
+ ostream.write_ushort(value.ushortVal);
+ ostream.write_long(value.longVal);
+ ostream.write_ulong(value.ulongVal);
+ ostream.write_float(value.floatVal);
+ ostream.write_double(value.doubleVal);
+ ostream.write_boolean(value.boolVal);
+ ostream.write_char(value.charVal);
+ ostream.write_octet(value.octetVal);
+ ostream.write_any(value.anyVal);
+ ostream.write_TypeCode(value.tcVal);
+ ObjectHelper.write(ostream, value.objectVal);
+ ostream.write_string(value.stringVal);
+ ostream.write_longlong(value.longlongVal);
+ ostream.write_ulonglong(value.ulonglongVal);
+ ostream.write_wchar(value.wcharVal);
+ ostream.write_wstring(value.wstringVal);
+ }
+}
diff --git a/gnu/testlet/org/omg/IOP/CVS/Entries b/gnu/testlet/org/omg/IOP/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/IOP/CVS/Entries.Log b/gnu/testlet/org/omg/IOP/CVS/Entries.Log
new file mode 100644
index 00000000..32da5de2
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/IOR////
diff --git a/gnu/testlet/org/omg/IOP/CVS/Repository b/gnu/testlet/org/omg/IOP/CVS/Repository
new file mode 100644
index 00000000..c5f016e5
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/IOP
diff --git a/gnu/testlet/org/omg/IOP/CVS/Root b/gnu/testlet/org/omg/IOP/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/IOP/IOR/CVS/Entries b/gnu/testlet/org/omg/IOP/IOR/CVS/Entries
new file mode 100644
index 00000000..0606f7ef
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/IOR/CVS/Entries
@@ -0,0 +1,2 @@
+/Streams.java/1.1/Tue Jun 21 15:37:17 2005//
+D
diff --git a/gnu/testlet/org/omg/IOP/IOR/CVS/Repository b/gnu/testlet/org/omg/IOP/IOR/CVS/Repository
new file mode 100644
index 00000000..73a2d1c6
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/IOR/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/IOP/IOR
diff --git a/gnu/testlet/org/omg/IOP/IOR/CVS/Root b/gnu/testlet/org/omg/IOP/IOR/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/IOR/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/IOP/IOR/Streams.java b/gnu/testlet/org/omg/IOP/IOR/Streams.java
new file mode 100644
index 00000000..6c04c20f
--- /dev/null
+++ b/gnu/testlet/org/omg/IOP/IOR/Streams.java
@@ -0,0 +1,105 @@
+// Tags: JDK1.4
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+// 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.org.omg.IOP.IOR;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.ORB.communication.comServant;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.IOP.*;
+import org.omg.IOP.IOR;
+import org.omg.IOP.IORHelper;
+
+/**
+ * The IOR profiles are used to transfer the object reference between
+ * two ORBs (over network and so on). That is written by IORHelper,
+ * must be understood by portable.InputStream, that is written by
+ * portable.OutputStream must be understood by IORHelper. The test
+ * verifies this. As a sample of the object with IOR reference it uses
+ * comServant from another test.
+ *
+ * Error message notation:
+ * HW - IORHelper writes, InputStream reads.
+ * HR - IORHelper reads, InputStream writes.
+ *
+ * @author Audrius Meskauskas (AudriusA@bluewin.ch)
+ */
+public class Streams
+ implements Testlet
+{
+ public void test(TestHarness h)
+ {
+ ORB orb = ORB.init(new String[ 0 ], null);
+ Any an = orb.create_any();
+
+ OutputStream out = an.create_output_stream();
+
+ comServant object = new comServant();
+ orb.connect(object);
+
+ out.write_Object(object);
+
+ IOR ior = IORHelper.read(out.create_input_stream());
+
+ boolean ip = false;
+
+ for (int i = 0; i < ior.profiles.length; i++)
+ {
+ if (ior.profiles [ i ].tag == TAG_INTERNET_IOP.value)
+ {
+ if (ip)
+ h.fail("HR:One internet profile expected");
+ ip = true;
+ h.check(ior.profiles [ i ].profile_data.length > 0,
+ "HR:Internet profile data"
+ );
+ }
+ }
+ h.check(ip, "HR:Internet profile present");
+
+ h.check(object._is_a(ior.type_id), "HR id");
+ h.check(ior.profiles.length > 0, "HR profiles");
+
+ out = orb.create_any().create_output_stream();
+
+ IORHelper.write(out, ior);
+
+ org.omg.CORBA.Object obj = out.create_input_stream().read_Object();
+
+ h.check(obj._is_a(ior.type_id), " HW id");
+ h.check(ior.profiles.length > 0, "HW profiles");
+
+ ip = false;
+
+ for (int i = 0; i < ior.profiles.length; i++)
+ {
+ if (ior.profiles [ i ].tag == TAG_INTERNET_IOP.value)
+ {
+ if (ip)
+ h.fail("HW:One internet profile expected");
+ ip = true;
+ h.check(ior.profiles [ i ].profile_data.length > 0,
+ "HW:Internet profile data"
+ );
+ }
+ }
+
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries b/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries.Log b/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries.Log
new file mode 100644
index 00000000..aac445cc
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/Interceptor////
diff --git a/gnu/testlet/org/omg/PortableInterceptor/CVS/Repository b/gnu/testlet/org/omg/PortableInterceptor/CVS/Repository
new file mode 100644
index 00000000..402cce66
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableInterceptor
diff --git a/gnu/testlet/org/omg/PortableInterceptor/CVS/Root b/gnu/testlet/org/omg/PortableInterceptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Entries b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Entries
new file mode 100644
index 00000000..128f6fe5
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Entries
@@ -0,0 +1,6 @@
+/testInterceptors.java/1.4/Thu Sep 24 12:52:19 2009//
+/ucClientRequestInterceptor.java/1.1/Sat Sep 3 14:55:44 2005//
+/ucInitialiser.java/1.1/Sat Sep 3 14:55:44 2005//
+/ucIorInterceptor.java/1.1/Sat Sep 3 14:55:44 2005//
+/ucServerRequestInterceptor.java/1.1/Sat Sep 3 14:55:44 2005//
+D
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Repository b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Repository
new file mode 100644
index 00000000..76f2451f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableInterceptor/Interceptor
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Root b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java
new file mode 100644
index 00000000..7e58f9c7
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/testInterceptors.java
@@ -0,0 +1,314 @@
+// Tags: JDK1.4
+// Uses: ../../CORBA/Asserter ../../PortableServer/POAOperations/communication/ourUserException ../../PortableServer/POAOperations/communication/poa_Servant ../../PortableServer/POAOperations/communication/poa_comTester ../../PortableServer/POAOperations/communication/poa_comTesterHelper
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.org.omg.PortableInterceptor.Interceptor;
+
+import java.util.Properties;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.INV_FLAG;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Object;
+import org.omg.CORBA.Request;
+import org.omg.CORBA.TCKind;
+import org.omg.PortableInterceptor.Current;
+import org.omg.PortableInterceptor.CurrentHelper;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAHelper;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.ourUserException;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_Servant;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_comTester;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_comTesterHelper;
+
+/**
+ * Test the basic work of the portable interceptor system.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class testInterceptors extends Asserter implements Testlet
+{
+ public static Object fior;
+
+ public void test()
+ {
+ try
+ {
+ Properties initialisers = new Properties();
+ initialisers.setProperty(
+ "org.omg.PortableInterceptor.ORBInitializerClass." +
+ ucInitialiser.class.getName(),
+ ucInitialiser.class.getName()
+ );
+
+ // Create and initialize the ORB
+ final ORB orb = org.omg.CORBA.ORB.init(new String[ 0 ], initialisers);
+
+ assertTrue("PreInit", ucInitialiser.preInit);
+ assertTrue("PostInit", ucInitialiser.postInit);
+
+ // Create the general communication servant and register it
+ // with the ORB
+ poa_Servant tester = new poa_Servant();
+
+ POA rootPOA =
+ POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
+ Object object = rootPOA.servant_to_reference(tester);
+
+ // IOR must contain custom fragment, inserted by interceptor.
+ // Sun 1.4 had a bug that was fixed in 1.5.
+ String ior = orb.object_to_string(object);
+
+ assertTrue("IOR custom component (bug in 1.4, fixed in 1.5)",
+ ior.indexOf(
+ "45257200000020000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"
+ ) > 0
+ );
+
+ // Create the forwarding target and register it
+ // with the ORB
+ poa_Servant forw = new poa_Servant();
+
+ tester.theField(15);
+ forw.theField(16);
+
+ // Another orb without interceptors.
+ final ORB orbf = ORB.init(new String[ 0 ], null);
+
+ POA rootPOA2 =
+ POAHelper.narrow(orbf.resolve_initial_references("RootPOA"));
+
+ Object fobject = rootPOA2.servant_to_reference(forw);
+
+ // Storing the IOR reference for general communication.
+ fior = fobject;
+
+ rootPOA.the_POAManager().activate();
+ rootPOA2.the_POAManager().activate();
+
+ // Intercepting server ready and waiting ...
+ new Thread()
+ {
+ public void run()
+ {
+ // wait for invocations from clients
+ orb.run();
+ }
+ }.start();
+
+ new Thread()
+ {
+ public void run()
+ {
+ // wait for invocations from clients
+ orbf.run();
+ }
+ }.start();
+
+ // Make pause and do a local call.
+ Thread.sleep(1000);
+
+ // Saying local hello.
+ poa_comTester Tester = poa_comTesterHelper.narrow(object);
+
+ Any a0 = orb.create_any();
+ a0.insert_string("Initial value for slot 0");
+
+ Any a1 = orb.create_any();
+ a1.insert_string("Initial value for slot 1");
+
+ ORB orb2 = ORB.init(new String[ 0 ], initialisers);
+
+ try
+ {
+ // Set the initial slot values.
+ Current current =
+ CurrentHelper.narrow(orb.resolve_initial_references("PICurrent"));
+ Current current2 =
+ CurrentHelper.narrow(orb2.resolve_initial_references("PICurrent"));
+
+ current.set_slot(ucInitialiser.slot_0, a0);
+ current.set_slot(ucInitialiser.slot_1, a1);
+
+ current2.set_slot(ucInitialiser.slot_0, a0);
+ current2.set_slot(ucInitialiser.slot_1, a1);
+ }
+ catch (Exception e)
+ {
+ fail("Exception " + e + " while setting slots.");
+ e.printStackTrace();
+ }
+
+ String lHello = Tester.sayHello();
+
+ // Saying remote hello.
+ Object object2 = orb2.string_to_object(ior);
+
+ poa_comTester Tester2 = poa_comTesterHelper.narrow(object2);
+
+ String hello = Tester2.sayHello();
+
+ assertEquals("Local and remote must return the same", lHello, hello);
+
+ // Saying remote hello via DII.
+ Request rq =
+ Tester2._create_request(null, "sayHello", orb2.create_list(0),
+ orb2.create_named_value("", orb.create_any(), 0)
+ );
+ rq.set_return_type(orb2.get_primitive_tc(TCKind.tk_string));
+
+ rq.invoke();
+
+ assertEquals("Remote Stub and DII call must return the same", hello,
+ rq.return_value().extract_string()
+ );
+
+ // Saying local hello via DII.
+ rq =
+ Tester._create_request(null, "sayHello", orb2.create_list(0),
+ orb2.create_named_value("", orb.create_any(), 0)
+ );
+ rq.set_return_type(orb2.get_primitive_tc(TCKind.tk_string));
+
+ rq.invoke();
+
+ assertEquals("Local Stub and DII call must return the same", hello,
+ rq.return_value().extract_string()
+ );
+
+ // Throw remote system exception
+ try
+ {
+ Tester2.throwException(-1);
+ fail("BAD_OPERATION should be thrown");
+ }
+ catch (BAD_OPERATION ex)
+ {
+ assertEquals("Minor code", ex.minor, 456);
+ assertEquals("Completion status", CompletionStatus.COMPLETED_YES,
+ ex.completed
+ );
+ }
+
+ // Throw remote user exception
+ try
+ {
+ Tester2.throwException(24);
+ fail("UserException should be thrown");
+ }
+ catch (ourUserException ex)
+ {
+ assertEquals("Custom field", ex.ourField, 24);
+ }
+
+ // Throw local system exception
+ try
+ {
+ Tester.throwException(-1);
+ fail("BAD_OPERATION should be thrown");
+ }
+ catch (BAD_OPERATION ex)
+ {
+ assertEquals("Minor code", ex.minor, 456);
+ assertEquals("Completion status", CompletionStatus.COMPLETED_YES,
+ ex.completed
+ );
+ }
+
+ // Throw local user exception
+ try
+ {
+ Tester.throwException(24);
+ fail("UserException should be thrown");
+ }
+ catch (ourUserException ex)
+ {
+ assertEquals("Custom field", ex.ourField, 24);
+ }
+
+ // Remote server side interceptor throws an exception
+ try
+ {
+ Tester2.passCharacters("", "");
+ fail("INV_FLAG should be thrown");
+ }
+ catch (INV_FLAG ex)
+ {
+ assertEquals("Minor", 52, ex.minor);
+ assertEquals("Completion status",
+ CompletionStatus.COMPLETED_MAYBE, ex.completed
+ );
+ }
+
+ // Local server side interceptor throws an exception
+ try
+ {
+ Tester.passCharacters("", "");
+ fail("INV_FLAG should be thrown");
+ }
+ catch (INV_FLAG ex)
+ {
+ assertEquals("Minor", 52, ex.minor);
+ assertEquals("Completion status",
+ CompletionStatus.COMPLETED_MAYBE, ex.completed
+ );
+ }
+
+ assertEquals("Forwarding test, remote", 16, Tester2.theField());
+ assertEquals("Forwarding test, local", 16, Tester.theField());
+
+ assertEquals("Forwarding test, remote", 16, Tester2.theField());
+ assertEquals("Forwarding test, local", 16, Tester.theField());
+
+ // Destroy orbs:
+ orb.destroy();
+ orb2.destroy();
+ orbf.destroy();
+
+ assertTrue("Destroyed", ucClientRequestInterceptor.destroyed);
+ assertTrue("Destroyed", ucIorInterceptor.destroyed);
+ assertTrue("Destroyed", ucServerRequestInterceptor.destroyed);
+ }
+ catch (Exception e)
+ {
+ fail("Exception " + e);
+ }
+ }
+
+ public void test(TestHarness harness)
+ {
+ // Set the loader of this class as a context class loader, ensuring that the
+ // CORBA implementation will be able to locate the interceptor classes.
+ ClassLoader previous = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+
+ try
+ {
+ h = harness;
+ test();
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(previous);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucClientRequestInterceptor.java b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucClientRequestInterceptor.java
new file mode 100644
index 00000000..83f8a63e
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucClientRequestInterceptor.java
@@ -0,0 +1,226 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.org.omg.PortableInterceptor.Interceptor;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.ORB;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ForwardRequest;
+
+/**
+ * A sample client request interceptor.
+ */
+public class ucClientRequestInterceptor extends LocalObject
+ implements org.omg.PortableInterceptor.ClientRequestInterceptor
+{
+ StringBuffer callPattern = new StringBuffer();
+ public static boolean destroyed;
+
+ /**
+ * Get class name as name of this test interceptor.
+ */
+ public String name()
+ {
+ return getClass().getName();
+ }
+
+ public void destroy()
+ {
+ destroyed = true;
+ }
+
+ public void receive_exception(ClientRequestInfo info)
+ throws ForwardRequest
+ {
+ callPattern.append("Ex");
+
+ // _get_theField is handled in the forwarded target without interceptors.
+ if (!info.operation().equals("_get_theField"))
+ {
+ ServiceContext s = info.get_reply_service_context(6000);
+ String ps = new String(s.context_data);
+ if (s.context_id != 6000)
+ {
+ throw new RuntimeException(
+ "C ERROR Returned context 6000 id mismatch"
+ );
+ }
+
+ String p = callPattern.toString();
+
+ if (!(
+ "SRq[throwException]Ex".equals(p) ||
+ "SRq[passCharacters]Ex".equals(p)
+ )
+ )
+ {
+ throw new RuntimeException("Invalid client pattern " + p);
+ }
+
+ if (!(
+ "InRq[throwException]Ex".equals(ps) ||
+ "InRq[passCharacters]Ex".equals(ps)
+ )
+ )
+ {
+ throw new RuntimeException("Invalid server pattern " + ps);
+ }
+ }
+ }
+
+ public void receive_other(ClientRequestInfo info) throws ForwardRequest
+ {
+ callPattern.append("Fx");
+ }
+
+ public void receive_reply(ClientRequestInfo info)
+ {
+ callPattern.append("Rr");
+ checkServerCtx(info);
+
+ // Check if the two server side service contexts are present.
+ // _get_theField is handled in the forwarded target without interceptors.
+ if (!info.operation().equals("_get_theField"))
+ {
+ ServiceContext s = info.get_reply_service_context(6000);
+ String ps = new String(s.context_data);
+ if (s.context_id != 6000)
+ {
+ throw new RuntimeException(
+ "C ERROR Returned context 6000 id mismatch"
+ );
+ }
+
+ if (!"SRq[sayHello]Rr".equals(callPattern.toString()))
+ {
+ throw new RuntimeException("Invalid client pattern " +
+ callPattern
+ );
+ }
+
+ if (!"InRq[sayHello]Rp".equals(ps))
+ {
+ throw new RuntimeException("Invalid server pattern " + ps);
+ }
+ }
+ }
+
+ private void checkServerCtx(ClientRequestInfo info)
+ {
+ // _get_theField is handled in the forwarded target without interceptors.
+ if (!info.operation().equals("_get_theField"))
+ {
+ ServiceContext se = info.get_reply_service_context(6001);
+ if (se.context_data.length != 0)
+ {
+ throw new RuntimeException(
+ "C ERROR Server side context 6001 is not present in reply."
+ );
+ }
+
+ ServiceContext sx = info.get_reply_service_context(6002);
+ if (sx.context_data.length != 0)
+ {
+ throw new RuntimeException(
+ "C ERROR Server side context 6001 is not present in reply."
+ );
+ }
+
+ if (se.context_id != 6001)
+ {
+ throw new RuntimeException(
+ "C ERROR Returned context 6001 id mismatch"
+ );
+ }
+ }
+ else
+ {
+ // Handled by the forwarded target without interceptors. No context
+ // should
+ // be added.
+ try
+ {
+ info.get_reply_service_context(6000);
+ throw new RuntimeException(
+ "C ERROR context 6000 present where it should not be"
+ );
+ }
+ catch (BAD_PARAM e)
+ {
+ // Excepected.
+ }
+ }
+ }
+
+ public void send_poll(ClientRequestInfo info)
+ {
+ callPattern.append("Sp");
+ }
+
+ /**
+ * Add a sample service context.
+ */
+ public void send_request(ClientRequestInfo info) throws ForwardRequest
+ {
+ try
+ {
+ Any is0 = info.get_slot(ucInitialiser.slot_0);
+
+ if (!is0.extract_string().equals("Initial value for slot 0"))
+ {
+ throw new RuntimeException("Wrong initial slot 0 value");
+ }
+
+ Any is1 = info.get_slot(ucInitialiser.slot_1);
+ if (!is1.extract_string().equals("Initial value for slot 1"))
+ {
+ throw new RuntimeException("Wrong initial slot 1 value");
+ }
+
+ Any s0 = ORB.init().create_any();
+ Any s1 = ORB.init().create_any();
+
+ s0.insert_string("Client slot zero");
+ s1.insert_string("Client slot one");
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Client Slot problem", e);
+ }
+
+ callPattern.setLength(0);
+ callPattern.append("SRq[" + info.operation() + "]");
+
+ // One with content.
+ ServiceContext c = new ServiceContext();
+ c.context_id = 5000;
+ c.context_data = "my_request_context_1".getBytes();
+
+ info.add_request_service_context(c, false);
+
+ // Another empty.
+ ServiceContext ce = new ServiceContext();
+ ce.context_id = 5001;
+ ce.context_data = new byte[ 0 ];
+
+ info.add_request_service_context(ce, false);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucInitialiser.java b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucInitialiser.java
new file mode 100644
index 00000000..20ee943b
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucInitialiser.java
@@ -0,0 +1,60 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.org.omg.PortableInterceptor.Interceptor;
+
+import org.omg.CORBA.LocalObject;
+import org.omg.PortableInterceptor.ORBInitInfo;
+import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName;
+import org.omg.PortableInterceptor.ORBInitializer;
+
+/**
+ * Registers our interceptors.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class ucInitialiser extends LocalObject implements ORBInitializer
+{
+ public static boolean preInit;
+ public static boolean postInit;
+ public static int slot_0;
+ public static int slot_1;
+
+ public void pre_init(ORBInitInfo info)
+ {
+ try
+ {
+ preInit = true;
+ info.add_ior_interceptor(new ucIorInterceptor());
+ info.add_server_request_interceptor(new ucServerRequestInterceptor());
+ info.add_client_request_interceptor(new ucClientRequestInterceptor());
+
+ slot_0 = info.allocate_slot_id();
+ slot_1 = info.allocate_slot_id();
+ }
+ catch (DuplicateName ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void post_init(ORBInitInfo info)
+ {
+ postInit = true;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucIorInterceptor.java b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucIorInterceptor.java
new file mode 100644
index 00000000..aacd0616
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucIorInterceptor.java
@@ -0,0 +1,77 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.org.omg.PortableInterceptor.Interceptor;
+
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.Policy;
+import org.omg.IOP.TaggedComponent;
+import org.omg.PortableInterceptor.IORInfo;
+import org.omg.PortableInterceptor.IORInterceptor;
+import org.omg.PortableServer.SERVANT_RETENTION_POLICY_ID;
+import org.omg.PortableServer.ServantRetentionPolicy;
+import org.omg.PortableServer.ServantRetentionPolicyValue;
+
+/**
+ * Our IOR interceptor.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class ucIorInterceptor extends LocalObject implements IORInterceptor
+{
+ public static boolean destroyed;
+ public static boolean policyOK;
+
+ /**
+ * Get class name as name of this test interceptor.
+ */
+ public String name()
+ {
+ return getClass().getName();
+ }
+
+ /**
+ * Print message.
+ */
+ public void destroy()
+ {
+ destroyed = true;
+ }
+
+ public void establish_components(IORInfo info)
+ {
+ TaggedComponent component = new TaggedComponent();
+
+ component.tag = 0x452572;
+
+ byte[] data = new byte[ 0x20 ];
+ for (byte i = 0; i < data.length; i++)
+ {
+ data [ i ] = i;
+ }
+ component.component_data = data;
+
+ info.add_ior_component(component);
+ info.add_ior_component_to_profile(component, 0);
+
+ Policy p = info.get_effective_policy(SERVANT_RETENTION_POLICY_ID.value);
+
+ policyOK =
+ ((ServantRetentionPolicy) p).value() == ServantRetentionPolicyValue.RETAIN;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucServerRequestInterceptor.java b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucServerRequestInterceptor.java
new file mode 100644
index 00000000..36c7b661
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableInterceptor/Interceptor/ucServerRequestInterceptor.java
@@ -0,0 +1,194 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.org.omg.PortableInterceptor.Interceptor;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.DATA_CONVERSION;
+import org.omg.CORBA.INV_FLAG;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCodePackage.BadKind;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ForwardRequest;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
+
+/**
+ * Our server request interceptor.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class ucServerRequestInterceptor extends LocalObject
+ implements ServerRequestInterceptor
+{
+ StringBuffer callPattern = new StringBuffer();
+ public static boolean destroyed;
+
+ /**
+ * Get class name as name of this test interceptor.
+ */
+ public String name()
+ {
+ return getClass().getName();
+ }
+
+ public void destroy()
+ {
+ destroyed = true;
+ }
+
+ public void receive_request_service_contexts(ServerRequestInfo info)
+ throws ForwardRequest
+ {
+ try
+ {
+ Any s0 = ORB.init().create_any();
+ Any s1 = ORB.init().create_any();
+
+ s0.insert_string("Slot zero");
+ s1.insert_string("Slot one");
+
+ info.set_slot(ucInitialiser.slot_0, s0);
+ info.set_slot(ucInitialiser.slot_1, s1);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Server Slot problem", e);
+ }
+
+ callPattern.setLength(0);
+ callPattern.append("In");
+
+ checkClientCtx(info);
+
+ // Add one context to reply.
+ ServiceContext ce = new ServiceContext();
+ ce.context_id = 6002;
+ ce.context_data = new byte[ 0 ];
+
+ info.add_reply_service_context(ce, true);
+ }
+
+ public void receive_request(ServerRequestInfo info) throws ForwardRequest
+ {
+ callPattern.append("Rq[" + info.operation() + "]");
+
+ // Add one context to reply.
+ ServiceContext ce = new ServiceContext();
+ ce.context_id = 6001;
+ ce.context_data = new byte[ 0 ];
+
+ info.add_reply_service_context(ce, false);
+
+ checkClientCtx(info);
+
+ // Throw an exception on "passCharacters"
+ if (info.operation().equals("passCharacters"))
+ {
+ throw new DATA_CONVERSION(87652, CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ // Forward on the attempt to get the field.
+ // The forwarding target is connected to another ORB without this
+ // interceptor.
+ if (info.operation().equals("_get_theField"))
+ {
+ throw new ForwardRequest(testInterceptors.fior);
+ }
+ }
+
+ private void checkClientCtx(ServerRequestInfo info)
+ {
+ // Check if the two client side service contexts are present.
+ ServiceContext s = info.get_request_service_context(5000);
+
+ ServiceContext se = info.get_request_service_context(5001);
+
+ if (s.context_id != 5000)
+ {
+ throw new RuntimeException("S ERROR Returned context 5000 id mismatch");
+ }
+
+ if (se.context_id != 5001)
+ {
+ throw new RuntimeException("S ERROR Returned context 5001 id mismatch");
+ }
+ }
+
+ public void send_exception(ServerRequestInfo info) throws ForwardRequest
+ {
+ callPattern.append("Ex");
+ addCallPattern(info);
+ try
+ {
+ // Throw another exception, expecting replacement.
+ if (info.sending_exception().type().id().equals("IDL:omg.org/CORBA/DATA_CONVERSION:1.0")
+ )
+ {
+ throw new INV_FLAG(52, CompletionStatus.COMPLETED_MAYBE);
+ }
+ }
+ catch (BadKind e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public void send_other(ServerRequestInfo info)
+ {
+ callPattern.append("Fw");
+ addCallPattern(info);
+ }
+
+ public void send_reply(ServerRequestInfo info)
+ {
+ callPattern.append("Rp");
+ addCallPattern(info);
+
+ try
+ {
+ Any s0 = info.get_slot(ucInitialiser.slot_0);
+ if (!s0.extract_string().equals("Slot zero"))
+ {
+ throw new RuntimeException("Slot 0 value mismatch");
+ }
+
+ Any s1 = info.get_slot(ucInitialiser.slot_1);
+ if (!s1.extract_string().equals("Slot one"))
+ {
+ throw new RuntimeException("Slot 1 value mismatch");
+ }
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Server slot problem", e);
+ }
+ }
+
+ void addCallPattern(ServerRequestInfo info)
+ {
+ // Add one context.
+ ServiceContext c = new ServiceContext();
+ c.context_id = 6000;
+ c.context_data = callPattern.toString().getBytes();
+
+ info.add_reply_service_context(c, false);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/CVS/Entries b/gnu/testlet/org/omg/PortableServer/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/omg/PortableServer/CVS/Entries.Log b/gnu/testlet/org/omg/PortableServer/CVS/Entries.Log
new file mode 100644
index 00000000..5ad7b943
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/CVS/Entries.Log
@@ -0,0 +1,2 @@
+A D/POA////
+A D/POAOperations////
diff --git a/gnu/testlet/org/omg/PortableServer/CVS/Repository b/gnu/testlet/org/omg/PortableServer/CVS/Repository
new file mode 100644
index 00000000..8312fb55
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableServer
diff --git a/gnu/testlet/org/omg/PortableServer/CVS/Root b/gnu/testlet/org/omg/PortableServer/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableServer/POA/BAD_OPERATIONHolder.java b/gnu/testlet/org/omg/PortableServer/POA/BAD_OPERATIONHolder.java
new file mode 100644
index 00000000..7f9566d9
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/BAD_OPERATIONHolder.java
@@ -0,0 +1,92 @@
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.CompletionStatusHelper;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.Streamable;
+
+public class BAD_OPERATIONHolder
+ implements Streamable
+{
+ public BAD_OPERATION value;
+ String id = "IDL:omg.org/CORBA/BAD_OPERATION:1.0";
+
+ public BAD_OPERATIONHolder(BAD_OPERATION v)
+ {
+ value = v;
+ }
+
+ public BAD_OPERATIONHolder()
+ {
+ }
+ ;
+ public TypeCode _type()
+ {
+ return ORB.init().create_exception_tc(id, "BAD_OPERATION",
+ new StructMember[ 0 ]
+ );
+ }
+
+ public void _write(OutputStream output)
+ {
+ output.write_string(id);
+ output.write_long(value.minor);
+ CompletionStatusHelper.write(output, value.completed);
+ }
+
+ public void _read(InputStream input)
+ {
+ String ri = input.read_string();
+ int minor = input.read_long();
+
+ if (!ri.equals(id))
+ throw new RuntimeException("Id value mismath: '" + ri + "' expected '" +
+ id + "'"
+ );
+
+ CompletionStatus status = CompletionStatusHelper.read(input);
+ value = new BAD_OPERATION(minor, status);
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/CVS/Entries b/gnu/testlet/org/omg/PortableServer/POA/CVS/Entries
new file mode 100644
index 00000000..33d5e1f7
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/CVS/Entries
@@ -0,0 +1,36 @@
+/BAD_OPERATIONHolder.java/1.1/Fri Jul 22 17:29:10 2005//
+/Test.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestActivate.java/1.2/Thu Sep 24 12:42:19 2009//
+/TestBase.java/1.1/Fri Jul 22 17:29:10 2005//
+/TestCollocated.java/1.1/Fri Jul 22 17:29:10 2005//
+/TestCreate.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestDSIRef_impl.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestDSI_impl.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestDeactivate.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestDestroy.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestException.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestFind.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestLocationForward.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestLocationForwardActivator_impl.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestLocationForwardClient.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestLocationForwardHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestLocationForwardOperations.java/1.2/Mon Jun 26 14:18:51 2006//
+/TestLocationForwardPOA.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestLocationForwardServer.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestLocationForwardServerHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestLocationForwardServerMain.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestLocationForwardServerOperations.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestLocationForwardServerPOA.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestLocationForward_impl.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestMisc.java/1.1/Fri Jul 22 17:29:11 2005//
+/TestOperations.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestPOA.java/1.2/Thu Jun 29 18:27:09 2006//
+/TestUtil.java/1.2/Mon Jun 26 14:18:52 2006//
+/Test_impl.java/1.2/Mon Jun 26 14:18:52 2006//
+/Util.java/1.1/Fri Jul 22 17:29:11 2005//
+/_TestLocationForwardServerStub.java/1.1/Fri Jul 22 17:29:11 2005//
+/_TestLocationForwardStub.java/1.1/Fri Jul 22 17:29:11 2005//
+/_TestStub.java/1.1/Fri Jul 22 17:29:11 2005//
+/testForwarding.java/1.2/Thu Oct 13 08:46:29 2005//
+D
diff --git a/gnu/testlet/org/omg/PortableServer/POA/CVS/Repository b/gnu/testlet/org/omg/PortableServer/POA/CVS/Repository
new file mode 100644
index 00000000..34d46cce
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableServer/POA
diff --git a/gnu/testlet/org/omg/PortableServer/POA/CVS/Root b/gnu/testlet/org/omg/PortableServer/POA/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableServer/POA/Test.java b/gnu/testlet/org/omg/PortableServer/POA/Test.java
new file mode 100644
index 00000000..46cb1ff9
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/Test.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface Test extends TestOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestActivate.java b/gnu/testlet/org/omg/PortableServer/POA/TestActivate.java
new file mode 100644
index 00000000..07fabe4c
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestActivate.java
@@ -0,0 +1,704 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.*;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.ForwardRequest;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+import org.omg.PortableServer.POAPackage.ObjectAlreadyActive;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.ServantAlreadyActive;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+import org.omg.PortableServer.Servant;
+import org.omg.PortableServer.ServantActivator;
+import org.omg.PortableServer.ServantActivatorPOA;
+
+/**
+ * This test passes with Suns JDK 1.4.08_b_03 but fails with
+ * Suns JDK 1.5.0._4 (regression). It should pass with
+ * Gnu Classpath.
+ */
+public final class TestActivate
+ extends TestBase
+ implements Testlet
+{
+ public static final String regression_note =
+ "This is known regression 1.4.08_b_03 -> 1.5.0._4";
+
+ final class TestActivator_impl
+ extends ServantActivatorPOA
+ {
+ private byte[] oid_;
+ private POA poa_;
+ private Servant servant_;
+ private boolean valid_;
+
+ void expect(byte[] oid, POA poa, Servant servant)
+ {
+ oid_ = oid;
+ poa_ = poa;
+ servant_ = servant;
+ valid_ = false;
+ }
+
+ boolean isValid()
+ {
+ return valid_;
+ }
+
+ public Servant incarnate(byte[] oid, POA poa)
+ throws ForwardRequest
+ {
+ return null;
+ }
+
+ public void etherealize(byte[] oid, POA poa, Servant servant,
+ boolean cleanup, boolean remaining
+ )
+ {
+ TEST(TestUtil.Compare(oid_, oid));
+ TEST(poa_._is_equivalent(poa));
+ TEST(servant_ == servant);
+ valid_ = true;
+ }
+ }
+
+ private void run(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA system;
+ POA nonretain;
+ POA multiple;
+ POA ether;
+ byte[] id1;
+ byte[] id2;
+ byte[] id3;
+ Policy[] policies;
+ Test_impl servant1;
+ Test_impl servant2;
+ Servant tmpserv;
+
+ POAManager manager = root.the_POAManager();
+
+ try
+ {
+ manager.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POAs
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.SYSTEM_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ try
+ {
+ system = root.create_POA("system_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ policies = new Policy[ 5 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN);
+ policies [ 3 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_DEFAULT_SERVANT);
+ policies [ 4 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ try
+ {
+ nonretain = root.create_POA("nonretain", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.SYSTEM_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ try
+ {
+ multiple = root.create_POA("multiple_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.SYSTEM_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 2 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_SERVANT_MANAGER);
+ try
+ {
+ ether = root.create_POA("ether", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ TestActivator_impl activatorImpl = new TestActivator_impl();
+ ServantActivator activator = activatorImpl._this(orb);
+
+ //
+ // Start tests
+ //
+ try
+ {
+ ether.set_servant_manager(activator);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "obj1", false);
+ servant2 = new Test_impl(orb, "obj2", false);
+
+ //
+ // Test: activate_object w/ SYSTEM_ID POA
+ //
+ try
+ {
+ id1 = system.activate_object(servant1);
+ id2 = system.activate_object(servant2);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(id1, id2));
+ try
+ {
+ tmpserv = system.id_to_servant(id1);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ TEST(tmpserv == servant1);
+ try
+ {
+ tmpserv = system.id_to_servant(id2);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(tmpserv == servant2);
+
+ //
+ // Test: ServantAlreadyActive exception
+ //
+ try
+ {
+ system.activate_object(servant1);
+ TEST(false); // activate_object should not have succeeded
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ system.activate_object(servant2);
+ TEST(false); // activate_object should not have succeeded
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: deactivate_object
+ //
+ try
+ {
+ system.deactivate_object(id2);
+ system.deactivate_object(id1);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: ObjectNotActive exception
+ //
+ try
+ {
+ system.deactivate_object(id1);
+ TEST(false); // deactivate_object should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ system.deactivate_object(id2);
+ TEST(false); // deactivate_object should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: WrongPolicy exception
+ //
+ try
+ {
+ nonretain.activate_object(servant1);
+ TEST(false); // activate_object should not have succeeded
+ }
+ catch (WrongPolicy ex)
+ {
+ // expected
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ byte[] id = ("XXX").getBytes();
+ nonretain.activate_object_with_id(id, servant1);
+ TEST(false); // activate_object_with_id should not have succeeded
+ }
+ catch (WrongPolicy ex)
+ {
+ // expected
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ byte[] id = ("XXX").getBytes();
+ nonretain.deactivate_object(id);
+ TEST(false); // deactivate_object should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ // expected
+ }
+
+ //
+ // Test: activate_object w/ MULTIPLE_ID POA
+ //
+ try
+ {
+ id1 = multiple.activate_object(servant1);
+ id2 = multiple.activate_object(servant1);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(id1, id2));
+ try
+ {
+ tmpserv = multiple.id_to_servant(id1);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(tmpserv == servant1);
+ try
+ {
+ tmpserv = multiple.id_to_servant(id2);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(tmpserv == servant1);
+
+ //
+ // Test: confirm servant1 is no longer active
+ //
+ try
+ {
+ multiple.deactivate_object(id1);
+ multiple.deactivate_object(id2);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ multiple.id_to_servant(id1);
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ multiple.id_to_servant(id2);
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: confirm ServantActivator::etherealize is invoked on
+ // deactivate
+ //
+ try
+ {
+ id1 = ether.activate_object(servant1);
+ id2 = ether.activate_object(servant1);
+ id3 = ether.activate_object(servant2);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ activatorImpl.expect(id1, ether, servant1);
+ try
+ {
+ ether.deactivate_object(id1);
+ Thread.sleep(2000);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InterruptedException ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(activatorImpl.isValid(), regression_note);
+ activatorImpl.expect(id2, ether, servant1);
+ try
+ {
+ ether.deactivate_object(id2);
+ Thread.sleep(2000);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InterruptedException ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(activatorImpl.isValid(), regression_note);
+ activatorImpl.expect(id3, ether, servant2);
+ try
+ {
+ ether.deactivate_object(id3);
+ Thread.sleep(2000);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InterruptedException ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(activatorImpl.isValid(), "Regression in 1.5");
+
+ system.destroy(true, true);
+ nonretain.destroy(true, true);
+ multiple.destroy(true, true);
+ ether.destroy(true, true);
+
+ //
+ // Since activatorImpl is a stack-based servant, we need to deactivate
+ // it before it goes out of scope
+ //
+ byte[] id = null;
+ try
+ {
+ id = root.servant_to_id(activatorImpl);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ root.deactivate_object(id);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ tmpserv = null;
+ servant1 = null;
+ servant2 = null;
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ run(orb, root);
+
+ if (orb != null)
+ {
+ orb.destroy();
+ }
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestBase.java b/gnu/testlet/org/omg/PortableServer/POA/TestBase.java
new file mode 100644
index 00000000..33992fcc
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestBase.java
@@ -0,0 +1,88 @@
+// Copyright (c) IONA Technologies, Inc. Waltham, MA, USA.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// IONA Technologies, Inc.
+// Waltham, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+
+public class TestBase
+{
+ public TestHarness harness;
+
+ public void TEST(boolean expr, String why)
+ {
+ harness.check(expr, why);
+ }
+
+ public void TEST(boolean expr)
+ {
+ harness.check(expr);
+ }
+
+ public void fail(Throwable ex)
+ {
+ harness.fail("Failed due " + ex + ":" + ex.getCause());
+ }
+
+ public org.omg.CORBA.TypeCode getOrigType(org.omg.CORBA.TypeCode tc)
+ {
+ org.omg.CORBA.TypeCode result = tc;
+
+ try
+ {
+ while (result.kind() == org.omg.CORBA.TCKind.tk_alias)
+ result = result.content_type();
+ }
+ catch (org.omg.CORBA.TypeCodePackage.BadKind ex)
+ {
+ harness.fail("Unexpected " + ex);
+ }
+
+ return result;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestCollocated.java b/gnu/testlet/org/omg/PortableServer/POA/TestCollocated.java
new file mode 100644
index 00000000..605b410e
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestCollocated.java
@@ -0,0 +1,537 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.*;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.CORBA.Request;
+import org.omg.PortableServer.ForwardRequest;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+import org.omg.PortableServer.Servant;
+import org.omg.PortableServer.ServantActivator;
+import org.omg.PortableServer.ServantActivatorPOA;
+import org.omg.PortableServer.ServantLocator;
+import org.omg.PortableServer.ServantLocatorPOA;
+import org.omg.PortableServer.ServantLocatorPackage.CookieHolder;
+
+public final class TestCollocated
+ extends TestBase
+ implements Testlet
+{
+ static final class TestLocator_impl
+ extends ServantLocatorPOA
+ {
+ private ORB orb_;
+ private Test_impl test_;
+ private TestDSIRef_impl testDSI_;
+
+ TestLocator_impl(ORB orb)
+ {
+ orb_ = orb;
+
+ test_ = new Test_impl(orb, "locator_SSI", false);
+ testDSI_ = new TestDSIRef_impl(orb, "locator_DSI", false);
+ }
+
+ public Servant preinvoke(byte[] oid, POA poa, String operation,
+ CookieHolder the_cookie
+ )
+ throws ForwardRequest
+ {
+ String oidString = new String(oid);
+
+ if (oidString.equals("test"))
+ return test_;
+ else if (oidString.equals("testDSI"))
+ return testDSI_;
+ return null;
+ }
+
+ public void postinvoke(byte[] oid, POA poa, String operation,
+ java.lang.Object the_cookie, Servant the_servant
+ )
+ {
+ }
+ }
+
+ static final class TestActivator_impl
+ extends ServantActivatorPOA
+ {
+ private ORB orb_;
+ private Test_impl test_;
+ private TestDSIRef_impl testDSI_;
+
+ TestActivator_impl(ORB orb)
+ {
+ orb_ = orb;
+
+ test_ = new Test_impl(orb, "locator_SSI", false);
+ testDSI_ = new TestDSIRef_impl(orb, "locator_DSI", false);
+ }
+
+ public Servant incarnate(byte[] oid, POA poa)
+ throws ForwardRequest
+ {
+ String oidString = new String(oid);
+
+ if (oidString.equals("test"))
+ return test_;
+ else if (oidString.equals("testDSI"))
+ return testDSI_;
+
+ //
+ // Fail
+ //
+ return null;
+ }
+
+ public void etherealize(byte[] oid, POA poa, Servant servant,
+ boolean cleanup, boolean remaining
+ )
+ {
+ String oidString = new String(oid);
+
+ if (!remaining)
+ {
+ if (oidString.equals("test"))
+ {
+ servant = null;
+ test_ = null;
+ }
+ else if (oidString.equals("testDSI"))
+ {
+ testDSI_ = null;
+ }
+ }
+ }
+ }
+
+ void uTestPOA(POA poa)
+ {
+ byte[] id;
+ org.omg.CORBA.Object obj;
+ Request request;
+ Test test;
+
+ //
+ // Invoke twice on each object - statically & DII
+ //
+ id = ("test").getBytes();
+ obj = poa.create_reference_with_id(id, "IDL:test/poa/Test:1.0");
+ test = TestHelper.narrow(obj);
+ test.aMethod();
+ request = obj._request("aMethod");
+ request.invoke();
+ TEST(request.env().exception() == null);
+
+ id = ("testDSI").getBytes();
+ obj = poa.create_reference_with_id(id, "IDL:test/poa/Test:1.0");
+ test = TestHelper.narrow(obj);
+ test.aMethod();
+ request = obj._request("aMethod");
+ request.invoke();
+ TEST(request.env().exception() == null);
+ }
+
+ void uTestDefaultServant(ORB orb, POA root, POAManager manager)
+ {
+ POA poa;
+ Servant servant;
+ Policy[] policies;
+
+ //
+ // Setup policies for default servant
+ //
+ policies = new Policy[ 6 ];
+ policies [ 0 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 1 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN);
+ policies [ 3 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ policies [ 4 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 5 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_DEFAULT_SERVANT);
+
+ //
+ // Create POA w/ static Default Servant
+ //
+ try
+ {
+ poa = root.create_POA("defaultSSI", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ Test_impl staticServant = new Test_impl(orb, "defaultStaticServant", false);
+ try
+ {
+ poa.set_servant(staticServant);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ uTestPOA(poa);
+ poa.destroy(true, true);
+
+ //
+ // Since staticServant is a stack-based servant, we need to deactivate
+ // it before it goes out of scope
+ //
+ byte[] id = null;
+ try
+ {
+ id = root.servant_to_id(staticServant);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ root.deactivate_object(id);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ DSI Default Servant
+ //
+ try
+ {
+ poa = root.create_POA("defaultDSI", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ servant = new TestDSIRef_impl(orb, "defaultDSIServant", false);
+ try
+ {
+ poa.set_servant(servant);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ uTestPOA(poa);
+ poa.destroy(true, true);
+ servant = null;
+
+ //
+ // Clean up policies
+ //
+ for (int i = 0; i < policies.length; i++)
+ policies [ i ].destroy();
+ }
+
+ void uTestServantLocator(ORB orb, POA root, POAManager manager)
+ {
+ POA poa;
+ Servant servant;
+ Policy[] policies;
+
+ //
+ // Setup policies for servant locator
+ //
+ policies = new Policy[ 6 ];
+ policies [ 0 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 1 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN);
+ policies [ 3 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ policies [ 4 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 5 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_SERVANT_MANAGER);
+
+ //
+ // Create POA w/ Servant Locator
+ //
+ try
+ {
+ poa = root.create_POA("servloc", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ TestLocator_impl locatorImpl = new TestLocator_impl(orb);
+ ServantLocator locator = locatorImpl._this(orb);
+ try
+ {
+ poa.set_servant_manager(locator);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ uTestPOA(poa);
+ poa.destroy(true, true);
+
+ //
+ // Clean up policies
+ //
+ for (int i = 0; i < policies.length; i++)
+ policies [ i ].destroy();
+
+ //
+ // Since locatorImpl is a stack-based servant, we need to deactivate
+ // it before it goes out of scope
+ //
+ byte[] id = null;
+ try
+ {
+ id = root.servant_to_id(locatorImpl);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ root.deactivate_object(id);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ }
+
+ void uTestServantActivator(ORB orb, POA root, POAManager manager)
+ {
+ POA poa;
+ Servant servant;
+ Policy[] policies;
+
+ //
+ // Setup policies for servant activator
+ //
+ policies = new Policy[ 4 ];
+ policies [ 0 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+ policies [ 3 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_SERVANT_MANAGER);
+
+ //
+ // Create POA w/ Servant Activator
+ //
+ try
+ {
+ poa = root.create_POA("servant", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ TestActivator_impl activatorImpl = new TestActivator_impl(orb);
+ ServantActivator activator = activatorImpl._this(orb);
+ try
+ {
+ poa.set_servant_manager(activator);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ uTestPOA(poa);
+ poa.destroy(true, true);
+
+ //
+ // Clean up policies
+ //
+ for (int i = 0; i < policies.length; i++)
+ policies [ i ].destroy();
+
+ //
+ // Since activatorImpl is a stack-based servant, we need to deactivate
+ // it before it goes out of scope
+ //
+ byte[] id = null;
+ try
+ {
+ id = root.servant_to_id(activatorImpl);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ root.deactivate_object(id);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+ POAManager manager = root.the_POAManager();
+ try
+ {
+ manager.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ uTestDefaultServant(orb, root, manager);
+ uTestServantLocator(orb, root, manager);
+ uTestServantActivator(orb, root, manager);
+
+ orb.destroy();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestCreate.java b/gnu/testlet/org/omg/PortableServer/POA/TestCreate.java
new file mode 100644
index 00000000..be00297f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestCreate.java
@@ -0,0 +1,235 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAManagerPackage.State;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+
+public final class TestCreate
+ extends TestBase
+ implements Testlet
+{
+ void run(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ Policy[] policies = new Policy[ 0 ];
+ POA poa;
+ POA parent;
+ POA poa2;
+ POA poa3;
+ POAManager mgr;
+ String str;
+
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ //
+ // Test: POAManager should be in HOLDING state
+ //
+ TEST(rootMgr.get_state() == State.HOLDING);
+
+ //
+ // Create child POA
+ //
+ try
+ {
+ poa = root.create_POA("poa1", null, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: POAManager should NOT be the same as the root's manager
+ //
+ mgr = poa.the_POAManager();
+ TEST(!mgr._is_equivalent(rootMgr));
+
+ //
+ // Test: POAManager should be in HOLDING state
+ //
+ TEST(mgr.get_state() == State.HOLDING);
+
+ //
+ // Test: Confirm name
+ //
+ str = poa.the_name();
+ TEST(str.equals("poa1"));
+
+ //
+ // Test: Confirm parent
+ //
+ parent = poa.the_parent();
+ TEST(parent._is_equivalent(root));
+
+ //
+ // Test: AdapterAlreadyExists exception
+ //
+ try
+ {
+ poa2 = root.create_POA("poa1", null, policies);
+ TEST(false); // create_POA should not have succeeded
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ // expected
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: InvalidPolicy exception
+ //
+ Policy[] invalidpolicies = new Policy[ 1 ];
+ invalidpolicies [ 0 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN);
+
+ //
+ // Create another child of root POA
+ //
+ try
+ {
+ poa2 = root.create_POA("poa2", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: POAManager should be the same as the root's manager
+ //
+ mgr = poa2.the_POAManager();
+ TEST(mgr._is_equivalent(rootMgr));
+
+ //
+ // Create child of child POA
+ //
+ try
+ {
+ poa3 = poa2.create_POA("child", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Confirm parent
+ //
+ parent = poa3.the_parent();
+ TEST(parent._is_equivalent(poa2));
+
+ poa.destroy(true, true);
+ poa2.destroy(true, true);
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ //
+ // Run the test
+ //
+ run(orb, root);
+
+ if (orb != null)
+ {
+ orb.destroy();
+ }
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestDSIRef_impl.java b/gnu/testlet/org/omg/PortableServer/POA/TestDSIRef_impl.java
new file mode 100644
index 00000000..334006a6
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestDSIRef_impl.java
@@ -0,0 +1,193 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.NVList;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ServerRequest;
+import org.omg.CORBA.UserException;
+import org.omg.PortableServer.DynamicImplementation;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+
+final class TestDSIRef_impl
+ extends org.omg.PortableServer.DynamicImplementation
+{
+ private ORB orb_;
+ private String name_;
+ private boolean compare_;
+ private boolean defaultServant_;
+
+ //
+ // From TestBase (no multiple inheritance)
+ //
+ public static void TEST(boolean expr)
+ {
+ if (!expr)
+ throw new TestException();
+ }
+
+ TestDSIRef_impl(ORB orb, String name, boolean compare)
+ {
+ orb_ = orb;
+ name_ = name;
+ compare_ = compare;
+ }
+
+ void setDefaultServant(boolean b)
+ {
+ defaultServant_ = b;
+ }
+
+ //
+ // Standard IDL to Java Mapping
+ //
+ public void invoke(ServerRequest request)
+ {
+ String name = request.operation();
+
+ if (!name.equals("aMethod"))
+ {
+ throw new BAD_OPERATION();
+ }
+
+ //
+ // 8.3.1: "Unless it calls set_exception, the DIR must call arguments
+ // exactly once, even if the operation signature contains no
+ // parameters."
+ //
+ NVList list = orb_.create_list(0);
+ request.arguments(list);
+
+ org.omg.CORBA.Object currentObj = null;
+ try
+ {
+ currentObj = orb_.resolve_initial_references("POACurrent");
+ }
+ catch (UserException ex)
+ {
+ }
+
+ org.omg.PortableServer.Current current = null;
+ if (currentObj != null)
+ current = org.omg.PortableServer.CurrentHelper.narrow(currentObj);
+ TEST(current != null);
+
+ byte[] oid = null;
+ try
+ {
+ oid = current.get_object_id();
+ }
+ catch (org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException();
+ }
+
+ String oidString = new String(oid);
+
+ if (compare_)
+ TEST(oidString.equals(name_));
+
+ //
+ // Disabled since it is CORBA 2.4
+ //
+
+ /*
+ org.omg.PortableServer.Servant servant = null;
+ try
+ {
+ servant = current.get_servant();
+ }
+ catch(org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException();
+ }
+ TEST(servant == this);
+ */
+ if (defaultServant_)
+ {
+ POA poa = null;
+ try
+ {
+ poa = current.get_POA();
+ }
+ catch (org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException();
+ }
+
+ byte[] servantId = null;
+ try
+ {
+ servantId = poa.servant_to_id(this);
+ }
+ catch (ServantNotActive ex)
+ {
+ throw new RuntimeException();
+ }
+ catch (WrongPolicy ex)
+ {
+ throw new RuntimeException();
+ }
+ TEST(servantId.length == oid.length);
+ TEST(servantId.equals(oid));
+ }
+ }
+
+ static final String[] interfaces_ = { "IDL:Test:1.0" };
+
+ public String[] _all_interfaces(POA poa, byte[] oid)
+ {
+ return interfaces_;
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestDSI_impl.java b/gnu/testlet/org/omg/PortableServer/POA/TestDSI_impl.java
new file mode 100644
index 00000000..e4d31b2c
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestDSI_impl.java
@@ -0,0 +1,179 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.NVList;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ServerRequest;
+import org.omg.PortableServer.DynamicImplementation;
+import org.omg.PortableServer.POA;
+
+class TestDSI_impl
+ extends org.omg.PortableServer.DynamicImplementation
+{
+ //
+ // From TestBase (no multiple inheritance)
+ //
+ public static void TEST(boolean expr)
+ {
+ if (!expr)
+ throw new TestException();
+ }
+
+ protected ORB orb_;
+ protected POA poa_;
+ protected org.omg.PortableServer.Current current_;
+ protected String name_;
+ protected boolean compare_;
+
+ TestDSI_impl(ORB orb, String name, boolean compare)
+ {
+ org.omg.CORBA.Object currentObj = null;
+
+ try
+ {
+ currentObj = orb.resolve_initial_references("POACurrent");
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ }
+
+ TEST(currentObj != null);
+ current_ = org.omg.PortableServer.CurrentHelper.narrow(currentObj);
+ TEST(current_ != null);
+ }
+
+ TestDSI_impl(ORB orb, POA poa)
+ {
+ orb_ = orb;
+ poa_ = poa;
+ name_ = "";
+
+ org.omg.CORBA.Object currentObj = null;
+
+ try
+ {
+ currentObj = orb.resolve_initial_references("POACurrent");
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ }
+
+ TEST(currentObj != null);
+ current_ = org.omg.PortableServer.CurrentHelper.narrow(currentObj);
+ TEST(current_ != null);
+ }
+
+ static final String[] interfaces_ = { "IDL:Test:1.0" };
+
+ public String[] _all_interfaces(POA poa, byte[] oid)
+ {
+ return interfaces_;
+ }
+
+ public boolean _is_a(String id)
+ {
+ if (id.equals("IDL:Test:1:0"))
+ return true;
+ return super._is_a(id);
+ }
+
+ public void invoke(ServerRequest request)
+ {
+ String name = request.operation();
+
+ if (name.equals("aMethod"))
+ {
+ NVList list = orb_.create_list(0);
+ request.arguments(list);
+
+ if (compare_)
+ {
+ byte[] oid = null;
+ try
+ {
+ oid = current_.get_object_id();
+ }
+ catch (org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException();
+ }
+
+ String oidString = new String(oid);
+
+ TEST(oidString.equals(name_));
+ }
+
+ return;
+ }
+
+ System.err.println("DSI implementation: unknown operation: " + name);
+
+ NVList list = orb_.create_list(0);
+ request.arguments(list);
+
+ Any exAny = orb_.create_any();
+ exAny.insert_Streamable(new BAD_OPERATIONHolder(new BAD_OPERATION()));
+
+ // BAD_OPERATIONHelper.insert(any, new BAD_OPERATION());
+ // Modified by Audrius Meskauskas
+ request.set_exception(exAny);
+ }
+
+ public POA _default_POA()
+ {
+ if (poa_ != null)
+ return poa_;
+ return super._default_POA();
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestDeactivate.java b/gnu/testlet/org/omg/PortableServer/POA/TestDeactivate.java
new file mode 100644
index 00000000..21f1f55d
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestDeactivate.java
@@ -0,0 +1,333 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import org.omg.CORBA.OBJECT_NOT_EXIST;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.SystemException;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.ObjectAlreadyActive;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.ServantAlreadyActive;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+
+public final class TestDeactivate
+ extends TestBase
+ implements Testlet
+{
+ static final class Test_impl2
+ extends TestPOA
+ {
+ private POA poa_;
+ private boolean called_ = false;
+ private boolean finished_ = false;
+
+ Test_impl2(POA poa)
+ {
+ poa_ = poa;
+ }
+
+ public synchronized void aMethod()
+ {
+ called_ = true;
+ notify();
+
+ try
+ {
+ wait(1000);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ finished_ = true;
+ }
+
+ public POA _default_POA()
+ {
+ return poa_;
+ }
+
+ synchronized void blockUntilCalled()
+ {
+ while (!called_)
+ {
+ try
+ {
+ wait();
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ }
+ }
+
+ synchronized boolean callComplete()
+ {
+ return finished_;
+ }
+ }
+
+ static final class LongCaller
+ extends Thread
+ {
+ private Test t_;
+
+ LongCaller(Test t)
+ {
+ t_ = t;
+ }
+
+ public void run()
+ {
+ try
+ {
+ t_.aMethod();
+ }
+ catch (SystemException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ //
+ // In this test we want to spawn a thread to call a method on the Test
+ // interface. This method call should take some time. While the thread
+ // is calling the method we attempt to deactivate the object. This
+ // should not complete for some time, since it should wait for all
+ // outstanding method calls to complete.
+ //
+ void mTestDeactivateThreaded(ORB orb, POA root)
+ {
+ Test_impl2 impl = new Test_impl2(root);
+
+ Test t = impl._this(orb);
+
+ byte[] oid = null;
+ try
+ {
+ oid = root.servant_to_id(impl);
+ }
+ catch (ServantNotActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+
+ Thread thr = new LongCaller(t);
+
+ thr.start();
+ impl.blockUntilCalled();
+
+ //
+ // Test: deactivate_object while method call is active
+ //
+ try
+ {
+ root.deactivate_object(oid);
+ }
+ catch (ObjectNotActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+
+ //
+ // Once we've deactivated the object the re-activation shouldn't
+ // complete until the method call completes
+ //
+ try
+ {
+ root.activate_object_with_id(oid, impl);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ TEST(false);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+
+ //
+ // Wait for the thread to terminate
+ //
+ while (thr.isAlive())
+ {
+ try
+ {
+ thr.join();
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ }
+
+ try
+ {
+ root.deactivate_object(oid);
+ }
+ catch (ObjectNotActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+ }
+
+ void mTestDeactivateBlocking(ORB orb, POA root)
+ {
+ Test_impl impl = new Test_impl(orb, "", false);
+
+ Test t = impl._this(orb);
+
+ t.aMethod();
+
+ byte[] oid = null;
+ try
+ {
+ oid = root.servant_to_id(impl);
+ }
+ catch (ServantNotActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+
+ try
+ {
+ root.deactivate_object(oid);
+ }
+ catch (ObjectNotActive ex)
+ {
+ TEST(false);
+ }
+ catch (WrongPolicy ex)
+ {
+ TEST(false);
+ }
+
+ try
+ {
+ t.aMethod();
+ TEST(false); // expected OBJECT_NOT_EXIST
+ }
+ catch (OBJECT_NOT_EXIST ex)
+ {
+ // Expected
+ }
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ //
+ // Activate the RootPOA manager
+ //
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ try
+ {
+ rootMgr.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ TEST(false);
+ }
+
+ //
+ // Run the tests using the root POA
+ //
+ mTestDeactivateBlocking(orb, root);
+ mTestDeactivateThreaded(orb, root);
+
+ if (orb != null)
+ orb.destroy();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestDestroy.java b/gnu/testlet/org/omg/PortableServer/POA/TestDestroy.java
new file mode 100644
index 00000000..0aa56412
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestDestroy.java
@@ -0,0 +1,357 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.CORBA.SystemException;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.AdapterNonExistent;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+
+public final class TestDestroy
+ extends TestBase
+ implements Testlet
+{
+ static final class Test_impl2
+ extends TestPOA
+ {
+ private POA poa_;
+ private boolean called_ = false;
+ private boolean finished_ = false;
+
+ Test_impl2(POA poa)
+ {
+ poa_ = poa;
+ }
+
+ public synchronized void aMethod()
+ {
+ called_ = true;
+ notify();
+
+ try
+ {
+ wait(1000);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ finished_ = true;
+ }
+
+ public POA _default_POA()
+ {
+ return poa_;
+ }
+
+ synchronized void blockUntilCalled()
+ {
+ while (!called_)
+ {
+ try
+ {
+ wait();
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ }
+ }
+
+ synchronized boolean callComplete()
+ {
+ return finished_;
+ }
+ }
+
+ static final class LongCaller
+ extends Thread
+ {
+ private Test t_;
+
+ LongCaller(Test t)
+ {
+ t_ = t;
+ }
+
+ public void run()
+ {
+ try
+ {
+ t_.aMethod();
+ }
+ catch (SystemException se)
+ {
+ System.err.println(se.getMessage());
+ se.printStackTrace();
+ }
+ }
+ }
+
+ //
+ // This is a more rigorous test of POA::destroy. We want to ensure
+ // that the POA isn't destroyed during a method call.
+ //
+ void uTestDestroyThreaded(ORB orb, POA root)
+ {
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ Policy[] policies = new Policy[ 1 ];
+ policies [ 0 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+
+ //
+ // Create child POA
+ //
+ POA poa = null;
+ try
+ {
+ poa = root.create_POA("poa1", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ Test_impl2 impl = new Test_impl2(poa);
+
+ Test t = impl._this(orb);
+
+ Thread thr = new LongCaller(t);
+
+ thr.start();
+ impl.blockUntilCalled();
+
+ //
+ // Test: Destroy the POA while a method call is active
+ //
+ poa.destroy(true, true);
+
+ //
+ // The destroy call shouldn't return until the aMethod call is
+ // complete
+ //
+ TEST(impl.callComplete());
+
+ while (thr.isAlive())
+ {
+ try
+ {
+ thr.join();
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ }
+ }
+
+ void uTestDestroyBlocking(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ Policy[] policies = new Policy[ 0 ];
+ POA poa;
+ POA parent;
+ POA poa2;
+ POA poa3;
+ POAManager mgr;
+ String str;
+
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ //
+ // Create child POA
+ //
+ try
+ {
+ poa = root.create_POA("poa1", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: destroy
+ //
+ poa.destroy(true, true);
+
+ //
+ // Ensure parent no longer knows about child
+ //
+ try
+ {
+ root.find_POA("poa1", false);
+ TEST(false); // find_POA should not have succeeded
+ }
+ catch (AdapterNonExistent ex)
+ {
+ // expected
+ }
+
+ //
+ // Create child POA
+ //
+ try
+ {
+ poa = root.create_POA("poa1", rootMgr, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create child of child POA
+ //
+ try
+ {
+ poa2 = poa.create_POA("child1", rootMgr, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: destroy - should destroy poa1 and poa1/child1
+ //
+ poa.destroy(true, true);
+
+ //
+ // Ensure parent no longer knows about child
+ //
+ try
+ {
+ root.find_POA("poa1", false);
+ TEST(false); // find_POA should not have succeeded
+ }
+ catch (AdapterNonExistent ex)
+ {
+ // expected
+ }
+
+ //
+ // XXX Test: etherealize w/ servant manager
+ //
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ try
+ {
+ rootMgr.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ uTestDestroyBlocking(orb, root);
+ uTestDestroyThreaded(orb, root);
+
+ if (orb != null)
+ orb.destroy();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestException.java b/gnu/testlet/org/omg/PortableServer/POA/TestException.java
new file mode 100644
index 00000000..4d1daccd
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestException.java
@@ -0,0 +1,52 @@
+// Copyright (c) IONA Technologies, Inc. Waltham, MA, USA.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// IONA Technologies, Inc.
+// Waltham, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public class TestException extends RuntimeException
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestFind.java b/gnu/testlet/org/omg/PortableServer/POA/TestFind.java
new file mode 100644
index 00000000..17669699
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestFind.java
@@ -0,0 +1,192 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.AdapterNonExistent;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+
+public final class TestFind
+ extends TestBase
+ implements Testlet
+{
+ void run(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ Policy[] policies = new Policy[ 0 ];
+ POA poa;
+ POA parent;
+ POA poa2;
+ POA poa3;
+ POAManager mgr;
+ String str;
+
+ POAManager rootMgr = root.the_POAManager();
+ TEST(rootMgr != null);
+
+ //
+ // Create child POA
+ //
+ try
+ {
+ poa = root.create_POA("poa1", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: find_POA
+ //
+ try
+ {
+ poa2 = root.find_POA("poa1", false);
+ }
+ catch (AdapterNonExistent ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(poa2 != null);
+ TEST(poa2._is_equivalent(poa));
+
+ //
+ // Test: AdapterNonExistent exception
+ //
+ try
+ {
+ poa2 = root.find_POA("poaX", false);
+ TEST(false); // find_POA should not have succeeded
+ }
+ catch (AdapterNonExistent ex)
+ {
+ // expected
+ }
+
+ //
+ // Create child POA
+ //
+ try
+ {
+ poa2 = root.create_POA("poa2", rootMgr, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Confirm parent knows about child
+ //
+ try
+ {
+ poa3 = root.find_POA("poa2", false);
+ }
+ catch (AdapterNonExistent ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ TEST(poa3 != null);
+ TEST(poa3._is_equivalent(poa2));
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ int status = 0;
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ //
+ // Run the test
+ //
+ run(orb, root);
+
+ if (orb != null)
+ orb.destroy();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestHelper.java b/gnu/testlet/org/omg/PortableServer/POA/TestHelper.java
new file mode 100644
index 00000000..f3ede6be
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestHelper.java
@@ -0,0 +1,72 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public abstract class TestHelper
+{
+ private static String _id = "IDL:test/poa/Test:1.0";
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ return org.omg.CORBA.ORB.init().create_interface_tc(TestHelper.id(), "Test");
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static Test narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof Test)
+ return (Test) obj;
+ else if (!obj._is_a(id()))
+ throw new org.omg.CORBA.BAD_PARAM();
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate =
+ ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate();
+ _TestStub stub = new _TestStub();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward.java
new file mode 100644
index 00000000..684f6ffa
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward.java
@@ -0,0 +1,43 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface TestLocationForward extends TestLocationForwardOperations, Test, org.omg.CORBA.portable.IDLEntity
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardActivator_impl.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardActivator_impl.java
new file mode 100644
index 00000000..264c78ad
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardActivator_impl.java
@@ -0,0 +1,94 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.PortableServer.ForwardRequest;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.Servant;
+import org.omg.PortableServer.ServantActivatorPOA;
+
+final class TestLocationForwardActivator_impl
+ extends org.omg.PortableServer.ServantActivatorPOA
+{
+ private boolean activate_;
+ private Servant servant_;
+ private org.omg.CORBA.Object forward_;
+
+ TestLocationForwardActivator_impl()
+ {
+ activate_ = false;
+ }
+
+ public void setActivatedServant(Servant servant)
+ {
+ servant_ = servant;
+ }
+
+ public void setForwardRequest(org.omg.CORBA.Object forward)
+ {
+ forward_ = forward;
+ }
+
+ public Servant incarnate(byte[] oid, POA poa)
+ throws ForwardRequest
+ {
+ activate_ = !activate_;
+ if (!activate_)
+ throw new ForwardRequest(forward_);
+ return servant_;
+ }
+
+ public void etherealize(byte[] oid, POA poa, Servant servant,
+ boolean cleanup, boolean remaining
+ )
+ {
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardClient.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardClient.java
new file mode 100644
index 00000000..fb040c98
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardClient.java
@@ -0,0 +1,212 @@
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+import org.omg.PortableServer.ServantActivator;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import java.util.Properties;
+
+public final class TestLocationForwardClient
+ extends TestBase
+{
+ static boolean orb_thread_terminated;
+
+ public static void main(String[] args)
+ {
+ Properties props = System.getProperties();
+
+ final ORB orb;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(args, props);
+
+ // Start the ORB in separate thread.
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ POA poa;
+ Policy[] policies;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA
+ //
+ policies = new Policy[ 4 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 3 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_SERVANT_MANAGER);
+
+ try
+ {
+ poa = root.create_POA("poa", manager, policies);
+ }
+ catch (InvalidPolicy ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ TestLocationForwardActivator_impl activatorImpl =
+ new TestLocationForwardActivator_impl();
+ ServantActivator activator = activatorImpl._this(orb);
+ try
+ {
+ poa.set_servant_manager(activator);
+ }
+ catch (WrongPolicy ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ byte[] oid = ("test").getBytes();
+ final org.omg.CORBA.Object reference =
+ poa.create_reference_with_id(oid, TestLocationForwardHelper.id());
+
+ //"IDL:Test:1.0");
+ String impl = null;
+
+ //
+ // Read all object references from file
+ //
+ try
+ {
+ String refFile = "Test.ref";
+ FileInputStream file = new FileInputStream(refFile);
+ BufferedReader in = new BufferedReader(new InputStreamReader(file));
+ impl = in.readLine();
+ file.close();
+ }
+ catch (IOException ex)
+ {
+ System.err.println("Can't read from `" + ex.getMessage() + "'");
+ System.exit(1);
+ }
+
+ org.omg.CORBA.Object obj = orb.string_to_object(impl);
+ TestLocationForwardServer server =
+ TestLocationForwardServerHelper.narrow(obj);
+
+ if (server == null)
+ throw new RuntimeException("Server is null");
+
+ org.omg.CORBA.Object servant = server.get_servant();
+
+ activatorImpl.setForwardRequest(servant);
+
+ TestLocationForward_impl testImpl = new TestLocationForward_impl(orb);
+ activatorImpl.setActivatedServant(testImpl);
+
+ try
+ {
+ manager.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ server.setForwardRequest(reference);
+
+ //
+ // Run some calls
+ //
+ TestLocationForward local = TestLocationForwardHelper.narrow(reference);
+
+ //
+ // First should be local
+ //
+ local.aMethod();
+ local.deactivate_servant();
+
+ //
+ // Second, should be remote
+ //
+ local.aMethod();
+ local.deactivate_servant();
+
+ //
+ // Third should be local again
+ //
+ local.aMethod();
+ local.deactivate_servant();
+
+ //
+ // Clean up
+ //
+ poa.destroy(true, true);
+
+ server.deactivate();
+
+ orb.destroy();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardHelper.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardHelper.java
new file mode 100644
index 00000000..e54dcc29
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardHelper.java
@@ -0,0 +1,79 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.ObjectImpl;
+
+public abstract class TestLocationForwardHelper
+{
+ private static String _id = "IDL:test/poa/TestLocationForward:1.0";
+
+ public static TypeCode type()
+ {
+ return ORB.init().create_interface_tc(TestLocationForwardHelper.id(),
+ "TestLocationForward"
+ );
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static TestLocationForward narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof TestLocationForward)
+ return (TestLocationForward) obj;
+ else if (!obj._is_a(id()))
+ throw new BAD_PARAM();
+ else
+ {
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ _TestLocationForwardStub stub = new _TestLocationForwardStub();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardOperations.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardOperations.java
new file mode 100644
index 00000000..fc16ff3d
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardOperations.java
@@ -0,0 +1,45 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface TestLocationForwardOperations
+ extends TestOperations
+{
+ void deactivate_servant();
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardPOA.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardPOA.java
new file mode 100644
index 00000000..70d20051
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardPOA.java
@@ -0,0 +1,113 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.PortableServer.Servant;
+
+public abstract class TestLocationForwardPOA
+ extends org.omg.PortableServer.Servant
+ implements TestLocationForwardOperations, InvokeHandler
+{
+ // Constructors
+ private static java.util.Hashtable _methods = new java.util.Hashtable();
+
+ static
+ {
+ _methods.put("deactivate_servant", new Integer(0));
+ _methods.put("aMethod", new Integer(1));
+ }
+
+ public OutputStream _invoke(String $method, InputStream in, ResponseHandler rh)
+ {
+ OutputStream out = null;
+ Integer __method = (Integer) _methods.get($method);
+ if (__method == null)
+ throw new BAD_OPERATION(0, CompletionStatus.COMPLETED_MAYBE);
+
+ switch (__method.intValue())
+ {
+ case 0 : // test/poa/TestLocationForward/deactivate_servant
+ {
+ this.deactivate_servant();
+ out = rh.createReply();
+ break;
+ }
+
+ case 1 : // test/poa/Test/aMethod
+ {
+ this.aMethod();
+ out = rh.createReply();
+ break;
+ }
+
+ default :
+ throw new BAD_OPERATION(0, CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids =
+ { "IDL:test/poa/TestLocationForward:1.0", "IDL:test/poa/Test:1.0" };
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId
+ )
+ {
+ return __ids;
+ }
+
+ public TestLocationForward _this()
+ {
+ return TestLocationForwardHelper.narrow(super._this_object());
+ }
+
+ public TestLocationForward _this(ORB orb)
+ {
+ return TestLocationForwardHelper.narrow(super._this_object(orb));
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServer.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServer.java
new file mode 100644
index 00000000..ee9e43c5
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServer.java
@@ -0,0 +1,45 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface TestLocationForwardServer
+ extends TestLocationForwardServerOperations, org.omg.CORBA.Object,
+ org.omg.CORBA.portable.IDLEntity
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerHelper.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerHelper.java
new file mode 100644
index 00000000..b27a0205
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerHelper.java
@@ -0,0 +1,106 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class TestLocationForwardServerHelper
+{
+ private static String _id = "IDL:test/poa/TestLocationForwardServer:1.0";
+
+ public static void insert(Any a, TestLocationForwardServer that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static TestLocationForwardServer extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ public static TypeCode type()
+ {
+ return ORB.init().create_interface_tc(TestLocationForwardServerHelper.id(),
+ "TestLocationForwardServer"
+ );
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static TestLocationForwardServer read(InputStream istream)
+ {
+ return narrow(istream.read_Object(_TestLocationForwardServerStub.class));
+ }
+
+ public static void write(OutputStream ostream, TestLocationForwardServer value)
+ {
+ ostream.write_Object((org.omg.CORBA.Object) value);
+ }
+
+ public static TestLocationForwardServer narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof TestLocationForwardServer)
+ return (TestLocationForwardServer) obj;
+ else if (!obj._is_a(id()))
+ throw new BAD_PARAM();
+ else
+ {
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ _TestLocationForwardServerStub stub =
+ new _TestLocationForwardServerStub();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerMain.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerMain.java
new file mode 100644
index 00000000..b8194652
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerMain.java
@@ -0,0 +1,207 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+final class TestLocationForwardServerMain
+{
+ static String ior = null;
+
+ static final class Server_impl
+ extends TestLocationForwardServerPOA
+ {
+ private ORB orb_;
+ private TestLocationForwardActivator_impl activator_;
+ private org.omg.CORBA.Object servant_;
+
+ Server_impl(ORB orb, TestLocationForwardActivator_impl activator,
+ org.omg.CORBA.Object servant
+ )
+ {
+ orb_ = orb;
+ activator_ = activator;
+ servant_ = servant;
+ }
+
+ public void setForwardRequest(org.omg.CORBA.Object obj)
+ {
+ activator_.setForwardRequest(obj);
+ }
+
+ public org.omg.CORBA.Object get_servant()
+ {
+ return servant_;
+ }
+
+ public void deactivate()
+ {
+ orb_.shutdown(false);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(args, props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ POA poa;
+ Policy[] policies;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POAs
+ //
+ policies = new Policy[ 4 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 1 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 3 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_SERVANT_MANAGER);
+
+ try
+ {
+ poa = root.create_POA("poa", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ TestLocationForwardActivator_impl activatorImpl =
+ new TestLocationForwardActivator_impl();
+ org.omg.PortableServer.ServantActivator activator =
+ activatorImpl._this(orb);
+
+ try
+ {
+ poa.set_servant_manager(activator);
+ }
+ catch (WrongPolicy ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ byte[] oid = "test".getBytes();
+ org.omg.CORBA.Object obj =
+ poa.create_reference_with_id(oid, "IDL:Test:1.0");
+
+ TestLocationForward_impl testImpl = new TestLocationForward_impl(orb);
+
+ activatorImpl.setActivatedServant(testImpl);
+
+ Server_impl serverImpl = new Server_impl(orb, activatorImpl, obj);
+ TestLocationForwardServer server = serverImpl._this(orb);
+
+ //
+ // Save reference
+ //
+ String refFile = "Test.ref";
+ try
+ {
+ FileOutputStream file = new FileOutputStream(refFile);
+ PrintWriter out = new PrintWriter(file);
+ out.println(ior = orb.object_to_string(server));
+ out.flush();
+ file.close();
+ }
+ catch (IOException ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Run implementation
+ //
+ try
+ {
+ manager.activate();
+ }
+ catch (org.omg.PortableServer.POAManagerPackage.AdapterInactive ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ orb.run();
+
+ File file = new File(refFile);
+ file.delete();
+
+ orb.destroy();
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerOperations.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerOperations.java
new file mode 100644
index 00000000..efe4a1b1
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerOperations.java
@@ -0,0 +1,48 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface TestLocationForwardServerOperations
+{
+ void setForwardRequest(org.omg.CORBA.Object obj);
+
+ org.omg.CORBA.Object get_servant();
+
+ void deactivate();
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerPOA.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerPOA.java
new file mode 100644
index 00000000..78798e1f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForwardServerPOA.java
@@ -0,0 +1,127 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.PortableServer.Servant;
+
+import java.util.Hashtable;
+
+public abstract class TestLocationForwardServerPOA
+ extends org.omg.PortableServer.Servant
+ implements TestLocationForwardServerOperations, InvokeHandler
+{
+ // Constructors
+ private static Hashtable _methods = new Hashtable();
+
+ static
+ {
+ _methods.put("setForwardRequest", new java.lang.Integer(0));
+ _methods.put("get_servant", new java.lang.Integer(1));
+ _methods.put("deactivate", new java.lang.Integer(2));
+ }
+
+ public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
+ {
+ OutputStream out = null;
+ Integer __method = (Integer) _methods.get(method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+
+ switch (__method.intValue())
+ {
+ case 0 : // test/poa/TestLocationForwardServer/setForwardRequest
+ {
+ org.omg.CORBA.Object obj = org.omg.CORBA.ObjectHelper.read(in);
+ this.setForwardRequest(obj);
+ out = rh.createReply();
+ break;
+ }
+
+ case 1 : // test/poa/TestLocationForwardServer/get_servant
+ {
+ org.omg.CORBA.Object result = null;
+ result = this.get_servant();
+ out = rh.createReply();
+ org.omg.CORBA.ObjectHelper.write(out, result);
+ break;
+ }
+
+ case 2 : // test/poa/TestLocationForwardServer/deactivate
+ {
+ this.deactivate();
+ out = rh.createReply();
+ break;
+ }
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids =
+ { "IDL:test/poa/TestLocationForwardServer:1.0" };
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId
+ )
+ {
+ return __ids;
+ }
+
+ public TestLocationForwardServer _this()
+ {
+ return TestLocationForwardServerHelper.narrow(super._this_object());
+ }
+
+ public TestLocationForwardServer _this(org.omg.CORBA.ORB orb)
+ {
+ return TestLocationForwardServerHelper.narrow(super._this_object(orb));
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward_impl.java b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward_impl.java
new file mode 100644
index 00000000..dfcd72ef
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestLocationForward_impl.java
@@ -0,0 +1,101 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.ORB;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+
+final class TestLocationForward_impl
+ extends TestLocationForwardPOA
+{
+ private Test_impl delegate_;
+
+ TestLocationForward_impl(ORB orb)
+ {
+ delegate_ = new Test_impl(orb, "", false);
+ }
+
+ public void deactivate_servant()
+ {
+ byte[] oid = null;
+ POA poa = null;
+
+ try
+ {
+ oid = delegate_.current_.get_object_id();
+ poa = delegate_.current_.get_POA();
+ }
+ catch (org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException(ex);
+ }
+
+ try
+ {
+ poa.deactivate_object(oid);
+ }
+ catch (WrongPolicy ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public void aMethod()
+ {
+ delegate_.aMethod();
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestMisc.java b/gnu/testlet/org/omg/PortableServer/POA/TestMisc.java
new file mode 100644
index 00000000..ffcd951b
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestMisc.java
@@ -0,0 +1,1568 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAPackage.AdapterAlreadyExists;
+import org.omg.PortableServer.POAPackage.InvalidPolicy;
+import org.omg.PortableServer.POAPackage.ObjectAlreadyActive;
+import org.omg.PortableServer.POAPackage.ObjectNotActive;
+import org.omg.PortableServer.POAPackage.ServantAlreadyActive;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongAdapter;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
+import org.omg.PortableServer.Servant;
+
+public final class TestMisc
+ extends TestBase
+ implements Testlet
+{
+ void uTestCreateReference(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA user;
+ POA system;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+
+ POAManager manager = root.the_POAManager();
+
+ policies = new Policy[ 1 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ try
+ {
+ user = root.create_POA("user_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ policies = new Policy[ 1 ];
+ policies [ 0 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.SYSTEM_ID);
+ try
+ {
+ system = root.create_POA("system_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: create_reference with wrong POA policies
+ //
+ try
+ {
+ obj = user.create_reference("IDL:Test:1.0");
+ TEST(false); // create_reference should not have succeeded
+ }
+ catch (WrongPolicy ex)
+ {
+ // expected
+ }
+
+ //
+ // Test: create_reference - should get a new ID for each invocation
+ // on POA w/ SYSTEM_ID policy
+ //
+ try
+ {
+ obj = system.create_reference("IDL:Test:1.0");
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ id1 = system.reference_to_id(obj);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ obj = system.create_reference("IDL:Test:1.0");
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ id2 = system.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(id1, id2));
+
+ //
+ // Test: create_reference_with_id using a system-generated ID
+ //
+ try
+ {
+ obj = system.create_reference_with_id(id1, "IDL:Test:1.0");
+ }
+ catch (BAD_PARAM ex)
+ {
+ TEST(false); // create_reference_with_id should have succeeded
+ }
+
+ id1 = ("id1").getBytes();
+
+ //
+ // Test: create_reference_with_id
+ //
+ obj = user.create_reference_with_id(id1, "IDL:Test:1.0");
+ TEST(obj != null);
+ try
+ {
+ tmpid = user.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id1, tmpid));
+ id2 = ("id2").getBytes();
+ obj = user.create_reference_with_id(id2, "IDL:Test:1.0");
+ TEST(obj != null);
+ try
+ {
+ tmpid = user.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id2, tmpid));
+
+ user.destroy(true, true);
+ system.destroy(true, true);
+ }
+
+ void uTestServantToId(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA unique;
+ POA implicit;
+ POA multiple;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+ Test_impl servant1;
+ Test_impl servant2;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA w/ UNIQUE_ID, NO_IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 4 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 1 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 3 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ try
+ {
+ unique = root.create_POA("unique_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ UNIQUE_ID, IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+ try
+ {
+ implicit = root.create_POA("implicit", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ MULTIPLE_ID, IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+ try
+ {
+ multiple = root.create_POA("multiple", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "test1", false);
+ servant2 = new Test_impl(orb, "test2", false);
+
+ //
+ // Test: ServantNotActive exception
+ //
+ try
+ {
+ unique.servant_to_id(servant1);
+ TEST(false); // servant_to_id should not have succeeded
+ }
+ catch (ServantNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ try
+ {
+ unique.activate_object_with_id(id1, servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: servant_to_id (UNIQUE_ID policy)
+ //
+ try
+ {
+ tmpid = unique.servant_to_id(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id1, tmpid));
+
+ //
+ // Test: servant_to_id (IMPLICIT_ACTIVATION) - servant1 should
+ // be automatically activated
+ //
+ try
+ {
+ id1 = implicit.servant_to_id(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Now that servant1 is activated, and since we have UNIQUE_ID,
+ // we should get the same ID back
+ //
+ try
+ {
+ tmpid = implicit.servant_to_id(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id1, tmpid));
+
+ //
+ // Test: Implicitly activating servant2 should produce a new ID
+ //
+ try
+ {
+ id2 = implicit.servant_to_id(servant2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(id1, id2));
+
+ //
+ // Test: servant_to_id (IMPLICIT_ACTIVATION, MULTIPLE_ID) - servant1
+ // should be automatically activated
+ //
+ try
+ {
+ id1 = multiple.servant_to_id(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ ex.printStackTrace();
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Since we have MULTIPLE_ID, we should get a new ID
+ //
+ try
+ {
+ tmpid = multiple.servant_to_id(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(id1, tmpid));
+
+ unique.destroy(true, true);
+ implicit.destroy(true, true);
+ multiple.destroy(true, true);
+ }
+
+ void uTestIdToServant(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA retain;
+ POA defaultPOA;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+ Test_impl def;
+ Test_impl servant1;
+ Test_impl servant2;
+ Servant tmpservant;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA w/ RETAIN
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 1 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 2 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ try
+ {
+ retain = root.create_POA("retain", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ USE_DEFAULT_SERVANT
+ //
+ policies = new Policy[ 5 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_DEFAULT_SERVANT);
+ policies [ 3 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 4 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+
+ try
+ {
+ defaultPOA = root.create_POA("default", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ def = new Test_impl(orb, "default", false);
+ try
+ {
+ defaultPOA.set_servant(def);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "test1", false);
+ servant2 = new Test_impl(orb, "test2", false);
+
+ //
+ // Test: ObjectNotActive exception
+ //
+ try
+ {
+ tmpid = ("bad_id").getBytes();
+ retain.id_to_servant(tmpid);
+ TEST(false); // id_to_servant should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ id2 = ("test2").getBytes();
+ try
+ {
+ retain.activate_object_with_id(id1, servant1);
+ retain.activate_object_with_id(id2, servant2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ ex.printStackTrace();
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: servant_to_id (RETAIN policy)
+ //
+ try
+ {
+ tmpservant = retain.id_to_servant(id1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(servant1 == tmpservant);
+ try
+ {
+ tmpservant = retain.id_to_servant(id2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(servant2 == tmpservant);
+
+ //
+ // Test: id_to_servant (USE_DEFAULT_SERVANT)
+ //
+ try
+ {
+ defaultPOA.activate_object_with_id(id1, servant1);
+ defaultPOA.activate_object_with_id(id2, servant2);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ try
+ {
+ tmpservant = defaultPOA.id_to_servant(id1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(servant1 == tmpservant);
+ try
+ {
+ tmpservant = defaultPOA.id_to_servant(id2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(servant2 == tmpservant);
+
+ retain.destroy(true, true);
+ defaultPOA.destroy(true, true);
+ }
+
+ void uTestServantToReference(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA unique;
+ POA implicit;
+ POA multiple;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid1;
+ byte[] tmpid2;
+ Policy[] policies;
+ Test_impl servant1;
+ Test_impl servant2;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA w/ UNIQUE_ID, NO_IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 4 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 1 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ policies [ 2 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 3 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ try
+ {
+ unique = root.create_POA("unique_id", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ UNIQUE_ID, IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+ try
+ {
+ implicit = root.create_POA("implicit", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ MULTIPLE_ID, IMPLICIT_ACTIVATION
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_implicit_activation_policy(org.omg.PortableServer.ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
+ try
+ {
+ multiple = root.create_POA("multiple", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "test1", false);
+ servant2 = new Test_impl(orb, "test2", false);
+
+ //
+ // Test: ServantNotActive exception
+ //
+ try
+ {
+ unique.servant_to_reference(servant1);
+ TEST(false); // servant_to_reference should not have succeeded
+ }
+ catch (ServantNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ try
+ {
+ unique.activate_object_with_id(id1, servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: servant_to_reference (UNIQUE_ID policy)
+ //
+ try
+ {
+ obj = unique.servant_to_reference(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid1 = unique.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id1, tmpid1));
+
+ //
+ // Test: servant_to_reference (IMPLICIT_ACTIVATION) - servant1 should
+ // be automatically activated
+ //
+ try
+ {
+ obj = implicit.servant_to_reference(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid1 = implicit.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Now that servant1 is activated, and since we have UNIQUE_ID,
+ // we should get the same ID back
+ //
+ try
+ {
+ obj = implicit.servant_to_reference(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid2 = implicit.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(tmpid1, tmpid2));
+
+ //
+ // Test: Implicitly activating servant2 should produce a new ID
+ //
+ try
+ {
+ obj = implicit.servant_to_reference(servant2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid2 = implicit.reference_to_id(obj);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(tmpid1, tmpid2));
+
+ //
+ // Test: servant_to_reference (IMPLICIT_ACTIVATION, MULTIPLE_ID) -
+ // servant1 should be automatically activated
+ //
+ try
+ {
+ obj = multiple.servant_to_reference(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid1 = multiple.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: Since we have MULTIPLE_ID, we should get a new ID
+ //
+ try
+ {
+ obj = multiple.servant_to_reference(servant1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid2 = multiple.reference_to_id(obj);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(!TestUtil.Compare(tmpid1, tmpid2));
+
+ unique.destroy(true, true);
+ implicit.destroy(true, true);
+ multiple.destroy(true, true);
+ }
+
+ void uTestIdToReference(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA retain;
+ POA defaultPOA;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+ Test_impl servant1;
+ Test_impl servant2;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA w/ RETAIN
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 1 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 2 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ try
+ {
+ retain = root.create_POA("retain", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "test1", false);
+ servant2 = new Test_impl(orb, "test2", false);
+
+ //
+ // Test: ObjectNotActive exception
+ //
+ try
+ {
+ tmpid = ("bad_id").getBytes();
+ retain.id_to_reference(tmpid);
+ TEST(false); // id_to_reference should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ id2 = ("test2").getBytes();
+ try
+ {
+ retain.activate_object_with_id(id1, servant1);
+ retain.activate_object_with_id(id2, servant2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: servant_to_reference
+ //
+ try
+ {
+ obj = retain.id_to_reference(id1);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid = retain.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id1, tmpid));
+
+ //
+ // Test: servant_to_reference
+ //
+ try
+ {
+ obj = retain.id_to_reference(id2);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(obj != null);
+ try
+ {
+ tmpid = retain.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(id2, tmpid));
+
+ retain.destroy(true, true);
+ }
+
+ void uTestReferenceToServant(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA retain;
+ POA defaultPOA;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+ Test_impl def;
+ Test_impl servant1;
+ Test_impl servant2;
+ Servant tmpservant;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA w/ RETAIN
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 1 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 2 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ try
+ {
+ retain = root.create_POA("retain", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Create POA w/ USE_DEFAULT_SERVANT
+ //
+ policies = new Policy[ 5 ];
+ policies [ 0 ] =
+ root.create_id_uniqueness_policy(org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID);
+ policies [ 1 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 2 ] =
+ root.create_request_processing_policy(org.omg.PortableServer.RequestProcessingPolicyValue.USE_DEFAULT_SERVANT);
+ policies [ 3 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 4 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+
+ try
+ {
+ defaultPOA = root.create_POA("default", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ def = new Test_impl(orb, "default", false);
+ try
+ {
+ defaultPOA.set_servant(def);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ servant1 = new Test_impl(orb, "test1", false);
+ servant2 = new Test_impl(orb, "test2", false);
+
+ //
+ // Test: ObjectNotActive exception
+ //
+ try
+ {
+ tmpid = ("bad_id").getBytes();
+ obj = retain.create_reference_with_id(tmpid, "IDL:Test:1.0");
+ retain.reference_to_servant(obj);
+ TEST(false); // reference_to_servant should not have succeeded
+ }
+ catch (ObjectNotActive ex)
+ {
+ // expected
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ id2 = ("test2").getBytes();
+ try
+ {
+ retain.activate_object_with_id(id1, servant1);
+ retain.activate_object_with_id(id2, servant2);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: reference_to_servant (USE_DEFAULT_SERVANT)
+ //
+ try
+ {
+ defaultPOA.activate_object_with_id(id1, servant1);
+ defaultPOA.activate_object_with_id(id2, servant2);
+ }
+ catch (ObjectAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ServantAlreadyActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ //
+ // Test: reference_to_servant (USE_DEFAULT_SERVANT) - should return
+ // default servant for all unknown IDs
+ //
+ tmpid = ("test99").getBytes();
+ obj = defaultPOA.create_reference_with_id(tmpid, "IDL:Test:1.0");
+ try
+ {
+ tmpservant = defaultPOA.reference_to_servant(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (ObjectNotActive ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(tmpservant == def);
+ tmpservant = null;
+
+ retain.destroy(true, true);
+ defaultPOA.destroy(true, true);
+ }
+
+ void uTestReferenceToId(ORB orb, POA root)
+ {
+ org.omg.CORBA.Object obj;
+ POA poa;
+ byte[] id1;
+ byte[] id2;
+ byte[] tmpid;
+ Policy[] policies;
+
+ POAManager manager = root.the_POAManager();
+
+ //
+ // Create POA
+ //
+ policies = new Policy[ 3 ];
+ policies [ 0 ] =
+ root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.RETAIN);
+ policies [ 1 ] =
+ root.create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.TRANSIENT);
+ policies [ 2 ] =
+ root.create_id_assignment_policy(org.omg.PortableServer.IdAssignmentPolicyValue.USER_ID);
+ try
+ {
+ poa = root.create_POA("poa", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ id1 = ("test1").getBytes();
+ id2 = ("test2").getBytes();
+
+ //
+ // Test: reference_to_id
+ //
+ obj = poa.create_reference_with_id(id1, "IDL:Test:1.0");
+ try
+ {
+ tmpid = poa.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(tmpid, id1));
+ obj = poa.create_reference_with_id(id2, "IDL:Test:1.0");
+ try
+ {
+ tmpid = poa.reference_to_id(obj);
+ }
+ catch (WrongAdapter ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ TEST(TestUtil.Compare(tmpid, id2));
+
+ //
+ // Test: WrongAdapter exception
+ //
+ try
+ {
+ obj = poa.create_reference_with_id(id1, "IDL:Test:1.0");
+ root.reference_to_id(obj);
+ TEST(false); // reference_to_id should not have succeeded
+ }
+ catch (WrongAdapter ex)
+ {
+ // expected
+ }
+ catch (WrongPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+
+ poa.destroy(true, true);
+ }
+
+ void runtests(ORB orb, POA root)
+ {
+ uTestCreateReference(orb, root);
+ uTestServantToId(orb, root);
+ uTestIdToServant(orb, root);
+ uTestServantToReference(orb, root);
+ uTestIdToReference(orb, root);
+ uTestReferenceToServant(orb, root);
+ uTestReferenceToId(orb, root);
+ }
+
+ public void testIt()
+ {
+ java.util.Properties props = System.getProperties();
+
+ ORB orb = null;
+
+ //
+ // Create ORB
+ //
+ orb = ORB.init(new String[ 0 ], props);
+
+ POA root = TestUtil.GetRootPOA(orb);
+
+ //
+ // Run the tests using the root POA
+ //
+ runtests(orb, root);
+
+ //
+ // Create a child POA and run the tests again using the
+ // child as the root
+ //
+ Policy[] policies = new Policy[ 0 ];
+ POAManager manager = root.the_POAManager();
+ POA child = null;
+ try
+ {
+ child = root.create_POA("child", manager, policies);
+ }
+ catch (AdapterAlreadyExists ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ catch (InvalidPolicy ex)
+ {
+ fail(ex);
+ throw new RuntimeException(ex);
+ }
+ runtests(orb, child);
+
+ if (orb != null)
+ orb.destroy();
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testIt();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestOperations.java b/gnu/testlet/org/omg/PortableServer/POA/TestOperations.java
new file mode 100644
index 00000000..68e66004
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestOperations.java
@@ -0,0 +1,44 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public interface TestOperations
+{
+ void aMethod ();
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestPOA.java b/gnu/testlet/org/omg/PortableServer/POA/TestPOA.java
new file mode 100644
index 00000000..663e64a2
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestPOA.java
@@ -0,0 +1,107 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.PortableServer.Servant;
+
+import java.util.Hashtable;
+
+public abstract class TestPOA
+ extends org.omg.PortableServer.Servant
+ implements TestOperations, InvokeHandler
+{
+ // Constructors
+ private static Hashtable _methods = new Hashtable();
+
+ static
+ {
+ _methods.put("aMethod", new java.lang.Integer(0));
+ }
+
+ public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
+ {
+ OutputStream out = null;
+ Integer __method = (Integer) _methods.get(method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+
+ switch (__method.intValue())
+ {
+ case 0 : // test/poa/Test/aMethod
+ {
+ this.aMethod();
+ out = rh.createReply();
+ break;
+ }
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = { "IDL:test/poa/Test:1.0" };
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId
+ )
+ {
+ return __ids;
+ }
+
+ public Test _this()
+ {
+ return TestHelper.narrow(super._this_object());
+ }
+
+ public Test _this(org.omg.CORBA.ORB orb)
+ {
+ return TestHelper.narrow(super._this_object(orb));
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/TestUtil.java b/gnu/testlet/org/omg/PortableServer/POA/TestUtil.java
new file mode 100644
index 00000000..c0a70efa
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/TestUtil.java
@@ -0,0 +1,106 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.ORB;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAHelper;
+
+final class TestUtil
+{
+ static POA GetRootPOA(ORB orb)
+ {
+ org.omg.CORBA.Object obj = null;
+
+ try
+ {
+ obj = orb.resolve_initial_references("RootPOA");
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ ex.printStackTrace();
+ System.err.println("Error: can't resolve `RootPOA'");
+ }
+
+ if (obj == null)
+ {
+ System.err.println("Error: `RootPOA' is a nil object reference");
+ }
+
+ POA root = null;
+ try
+ {
+ root = POAHelper.narrow(obj);
+ }
+ catch (BAD_PARAM ex)
+ {
+ System.err.println("Error: `RootPOA' is not a POA object reference");
+ }
+
+ return root;
+ }
+
+ static boolean Compare(byte[] id1, byte[] id2)
+ {
+ //
+ // TODO: efficient method to doing this?
+ //
+ if (id1.length != id2.length)
+ return false;
+ for (int i = 0; i < id1.length; i++)
+ if (id1 [ i ] != id2 [ i ])
+ return false;
+ return true;
+
+ //return id1.equals(id2);
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/Test_impl.java b/gnu/testlet/org/omg/PortableServer/POA/Test_impl.java
new file mode 100644
index 00000000..27bad751
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/Test_impl.java
@@ -0,0 +1,139 @@
+// Tags: not-a-test
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// **********************************************************************
+//
+// Copyright (c) 2000
+// Object Oriented Concepts, Inc.
+// Billerica, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.ORB;
+import org.omg.PortableServer.POA;
+
+final class Test_impl
+ extends TestPOA
+{
+ //
+ // From TestBase (no multiple inheritance)
+ //
+ public static void TEST(boolean expr)
+ {
+ if (!expr)
+ throw new TestException();
+ }
+
+ private POA poa_;
+ org.omg.PortableServer.Current current_;
+ private String name_;
+ private boolean compare_;
+
+ Test_impl(ORB orb, String name, boolean compare)
+ {
+ name_ = name;
+ compare_ = compare;
+
+ org.omg.CORBA.Object currentObj = null;
+
+ try
+ {
+ currentObj = orb.resolve_initial_references("POACurrent");
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ }
+
+ TEST(currentObj != null);
+ current_ = org.omg.PortableServer.CurrentHelper.narrow(currentObj);
+ TEST(current_ != null);
+ }
+
+ Test_impl(ORB orb, POA poa)
+ {
+ poa_ = poa;
+ name_ = "";
+ compare_ = false;
+
+ org.omg.CORBA.Object currentObj = null;
+
+ try
+ {
+ currentObj = orb.resolve_initial_references("POACurrent");
+ }
+ catch (org.omg.CORBA.ORBPackage.InvalidName ex)
+ {
+ }
+
+ TEST(currentObj != null);
+ current_ = org.omg.PortableServer.CurrentHelper.narrow(currentObj);
+ TEST(current_ != null);
+ }
+
+ public void aMethod()
+ {
+ if (compare_)
+ {
+ byte[] oid = null;
+ try
+ {
+ oid = current_.get_object_id();
+ }
+ catch (org.omg.PortableServer.CurrentPackage.NoContext ex)
+ {
+ throw new RuntimeException();
+ }
+
+ String oidString = new String(oid);
+
+ TEST(oidString.equals(name_));
+ }
+ }
+
+ public POA _default_POA()
+ {
+ if (poa_ != null)
+ return poa_;
+ return super._default_POA();
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POA/Util.java b/gnu/testlet/org/omg/PortableServer/POA/Util.java
new file mode 100644
index 00000000..cf2679c3
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/Util.java
@@ -0,0 +1,349 @@
+// Copyright (c) IONA Technologies, Inc. Waltham, MA, USA.
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+// **********************************************************************
+//
+// Copyright (c) 2001
+// IONA Technologies, Inc.
+// Waltham, MA, USA
+//
+// All Rights Reserved
+//
+// **********************************************************************
+
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public final class Util
+{
+ //
+ // Unmarshal a system exception
+ //
+ public static org.omg.CORBA.SystemException unmarshalSystemException(org.omg.CORBA.portable.InputStream in)
+ {
+ String id = in.read_string();
+ int minor = in.read_ulong();
+ org.omg.CORBA.CompletionStatus status =
+ org.omg.CORBA.CompletionStatus.from_int(in.read_ulong());
+
+ if (id.equals("IDL:omg.org/CORBA/BAD_PARAM:1.0"))
+ {
+ return new org.omg.CORBA.BAD_PARAM(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/NO_MEMORY:1.0"))
+ {
+ return new org.omg.CORBA.NO_MEMORY(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/IMP_LIMIT:1.0"))
+ {
+ return new org.omg.CORBA.IMP_LIMIT(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/COMM_FAILURE:1.0"))
+ {
+ return new org.omg.CORBA.COMM_FAILURE(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INV_OBJREF:1.0"))
+ {
+ return new org.omg.CORBA.INV_OBJREF(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/NO_PERMISSION:1.0"))
+ {
+ return new org.omg.CORBA.NO_PERMISSION(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INTERNAL:1.0"))
+ {
+ return new org.omg.CORBA.INTERNAL(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/MARSHAL:1.0"))
+ {
+ return new org.omg.CORBA.MARSHAL(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INITIALIZE:1.0"))
+ {
+ return new org.omg.CORBA.INITIALIZE(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/NO_IMPLEMENT:1.0"))
+ {
+ return new org.omg.CORBA.NO_IMPLEMENT(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/BAD_TYPECODE:1.0"))
+ {
+ return new org.omg.CORBA.BAD_TYPECODE(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/BAD_OPERATION:1.0"))
+ {
+ return new org.omg.CORBA.BAD_OPERATION(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/NO_RESOURCES:1.0"))
+ {
+ return new org.omg.CORBA.NO_RESOURCES(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/NO_RESPONSE:1.0"))
+ {
+ return new org.omg.CORBA.NO_RESPONSE(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/PERSIST_STORE:1.0"))
+ {
+ return new org.omg.CORBA.PERSIST_STORE(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/BAD_INV_ORDER:1.0"))
+ {
+ return new org.omg.CORBA.BAD_INV_ORDER(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/TRANSIENT:1.0"))
+ {
+ return new org.omg.CORBA.TRANSIENT(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/FREE_MEM:1.0"))
+ {
+ return new org.omg.CORBA.FREE_MEM(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INV_IDENT:1.0"))
+ {
+ return new org.omg.CORBA.INV_IDENT(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INV_FLAG:1.0"))
+ {
+ return new org.omg.CORBA.INV_FLAG(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INTF_REPOS:1.0"))
+ {
+ return new org.omg.CORBA.INTF_REPOS(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/BAD_CONTEXT:1.0"))
+ {
+ return new org.omg.CORBA.BAD_CONTEXT(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/OBJ_ADAPTER:1.0"))
+ {
+ return new org.omg.CORBA.OBJ_ADAPTER(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/DATA_CONVERSION:1.0"))
+ {
+ return new org.omg.CORBA.DATA_CONVERSION(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/OBJECT_NOT_EXIST:1.0"))
+ {
+ return new org.omg.CORBA.OBJECT_NOT_EXIST(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/TRANSACTION_REQUIRED:1.0"))
+ {
+ return new org.omg.CORBA.TRANSACTION_REQUIRED(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/TRANSACTION_ROLLEDBACK:1.0"))
+ {
+ return new org.omg.CORBA.TRANSACTION_ROLLEDBACK(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INVALID_TRANSACTION:1.0"))
+ {
+ return new org.omg.CORBA.INVALID_TRANSACTION(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/INV_POLICY:1.0"))
+ {
+ return new org.omg.CORBA.INV_POLICY(minor, status);
+ }
+ else if (id.equals("IDL:omg.org/CORBA/CODESET_INCOMPATIBLE:1.0"))
+ {
+ return new org.omg.CORBA.BAD_OPERATION(minor, status);
+ }
+
+ // Disabled since these are only supported by CORBA 2.4
+
+ /*
+ else if(id.equals("IDL:omg.org/CORBA/REBIND:1.0"))
+ {
+ return new org.omg.CORBA.REBIND(minor, status);
+ }
+ else if(id.equals("IDL:omg.org/CORBA/TIMEOUT:1.0"))
+ {
+ return new org.omg.CORBA.TIMEOUT(minor, status);
+ }
+ else if(id.equals("IDL:omg.org/CORBA/TRANSACTION_UNAVAILABLE:1.0"))
+ {
+ return new org.omg.CORBA.TRANSACTION_UNAVAILABLE(minor, status);
+ }
+ else if(id.equals("IDL:omg.org/CORBA/TRANSACTION_MODE:1.0"))
+ {
+ return new org.omg.CORBA.TRANSACTION_MODE(minor, status);
+ }
+ else if(id.equals("IDL:omg.org/CORBA/BAD_QOS:1.0"))
+ {
+ return new org.omg.CORBA.BAD_QOS(minor, status);
+ }
+ */
+
+ //
+ // Unknown exception
+ //
+ return new org.omg.CORBA.UNKNOWN(minor, status);
+ }
+
+ private static String[] sysExClassNames_ =
+ {
+ "org.omg.CORBA.BAD_CONTEXT", "org.omg.CORBA.BAD_INV_ORDER",
+ "org.omg.CORBA.BAD_OPERATION", "org.omg.CORBA.BAD_PARAM",
+ "org.omg.CORBA.BAD_QOS", "org.omg.CORBA.BAD_TYPECODE",
+ "org.omg.CORBA.CODESET_INCOMPATIBLE", "org.omg.CORBA.COMM_FAILURE",
+ "org.omg.CORBA.DATA_CONVERSION", "org.omg.CORBA.FREE_MEM",
+ "org.omg.CORBA.IMP_LIMIT", "org.omg.CORBA.INITIALIZE",
+ "org.omg.CORBA.INTERNAL", "org.omg.CORBA.INTF_REPOS",
+ "org.omg.CORBA.INVALID_TRANSACTION", "org.omg.CORBA.INV_FLAG",
+ "org.omg.CORBA.INV_IDENT", "org.omg.CORBA.INV_OBJREF",
+ "org.omg.CORBA.INV_POLICY", "org.omg.CORBA.MARSHAL",
+ "org.omg.CORBA.NO_IMPLEMENT", "org.omg.CORBA.NO_MEMORY",
+ "org.omg.CORBA.NO_PERMISSION", "org.omg.CORBA.NO_RESOURCES",
+ "org.omg.CORBA.NO_RESPONSE", "org.omg.CORBA.OBJECT_NOT_EXIST",
+ "org.omg.CORBA.OBJ_ADAPTER", "org.omg.CORBA.PERSIST_STORE",
+ "org.omg.CORBA.REBIND", "org.omg.CORBA.TIMEOUT",
+ "org.omg.CORBA.TRANSACTION_MODE", "org.omg.CORBA.TRANSACTION_REQUIRED",
+ "org.omg.CORBA.TRANSACTION_ROLLEDBACK",
+ "org.omg.CORBA.TRANSACTION_UNAVAILABLE", "org.omg.CORBA.TRANSIENT",
+ "org.omg.CORBA.UNKNOWN"
+ };
+ private static String[] sysExIds_ =
+ {
+ "IDL:omg.org/CORBA/BAD_CONTEXT:1.0", "IDL:omg.org/CORBA/BAD_INV_ORDER:1.0",
+ "IDL:omg.org/CORBA/BAD_OPERATION:1.0", "IDL:omg.org/CORBA/BAD_PARAM:1.0",
+ "IDL:omg.org/CORBA/BAD_QOS:1.0", "IDL:omg.org/CORBA/BAD_TYPECODE:1.0",
+ "IDL:omg.org/CORBA/CODESET_INCOMPATIBLE:1.0",
+ "IDL:omg.org/CORBA/COMM_FAILURE:1.0",
+ "IDL:omg.org/CORBA/DATA_CONVERSION:1.0", "IDL:omg.org/CORBA/FREE_MEM:1.0",
+ "IDL:omg.org/CORBA/IMP_LIMIT:1.0", "IDL:omg.org/CORBA/INITIALIZE:1.0",
+ "IDL:omg.org/CORBA/INTERNAL:1.0", "IDL:omg.org/CORBA/INTF_REPOS:1.0",
+ "IDL:omg.org/CORBA/INVALID_TRANSACTION:1.0",
+ "IDL:omg.org/CORBA/INV_FLAG:1.0", "IDL:omg.org/CORBA/INV_IDENT:1.0",
+ "IDL:omg.org/CORBA/INV_OBJREF:1.0", "IDL:omg.org/CORBA/INV_POLICY:1.0",
+ "IDL:omg.org/CORBA/MARSHAL:1.0", "IDL:omg.org/CORBA/NO_IMPLEMENT:1.0",
+ "IDL:omg.org/CORBA/NO_MEMORY:1.0", "IDL:omg.org/CORBA/NO_PERMISSION:1.0",
+ "IDL:omg.org/CORBA/NO_RESOURCES:1.0", "IDL:omg.org/CORBA/NO_RESPONSE:1.0",
+ "IDL:omg.org/CORBA/OBJECT_NOT_EXIST:1.0",
+ "IDL:omg.org/CORBA/OBJ_ADAPTER:1.0", "IDL:omg.org/CORBA/PERSIST_STORE:1.0",
+ "IDL:omg.org/CORBA/REBIND:1.0", "IDL:omg.org/CORBA/TIMEOUT:1.0",
+ "IDL:omg.org/CORBA/TRANSACTION_MODE:1.0",
+ "IDL:omg.org/CORBA/TRANSACTION_REQUIRED:1.0",
+ "IDL:omg.org/CORBA/TRANSACTION_ROLLEDBACK:1.0",
+ "IDL:omg.org/CORBA/TRANSACTION_UNAVAILABLE:1.0",
+ "IDL:omg.org/CORBA/TRANSIENT:1.0", "IDL:omg.org/CORBA/UNKNOWN:1.0"
+ };
+
+ private static int binarySearch(String[] arr, String value)
+ {
+ int left = 0;
+ int right = arr.length;
+ int index = -1;
+
+ while (left < right)
+ {
+ int m = (left + right) / 2;
+ int res = arr [ m ].compareTo(value);
+ if (res == 0)
+ {
+ index = m;
+ break;
+ }
+ else if (res > 0)
+ right = m;
+ else
+ left = m + 1;
+ }
+
+ return index;
+ }
+
+ //
+ // Determine the repository ID of an exception
+ //
+ public static String getExceptionId(Exception ex)
+ {
+ if (ex instanceof org.omg.CORBA.SystemException)
+ {
+ String className = ex.getClass().getName();
+ int index = binarySearch(sysExClassNames_, className);
+
+ if (index == -1)
+ return "IDL:omg.org/CORBA/UNKNOWN:1.0";
+ else
+ return sysExIds_ [ index ];
+ }
+ else if (ex instanceof org.omg.CORBA.UserException)
+ {
+ Class exClass = ex.getClass();
+ String className = exClass.getName();
+ String id = null;
+ try
+ {
+ Class c = Class.forName(className + "Helper");
+ java.lang.reflect.Method m = c.getMethod("id", null);
+ id = (String) m.invoke(null, null);
+ }
+ catch (ClassNotFoundException e)
+ {
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (java.lang.reflect.InvocationTargetException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (SecurityException e)
+ {
+ }
+
+ //
+ // TODO: Is this correct?
+ //
+ if (id == null)
+ return "IDL:omg.org/CORBA/UserException:1.0";
+ else
+ return id;
+ }
+ else
+ {
+ throw new RuntimeException();
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardServerStub.java b/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardServerStub.java
new file mode 100644
index 00000000..324bc3c3
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardServerStub.java
@@ -0,0 +1,162 @@
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.MARSHAL;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ObjectHelper;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+public class _TestLocationForwardServerStub
+ extends ObjectImpl
+ implements TestLocationForwardServer
+{
+ public void setForwardRequest(org.omg.CORBA.Object obj)
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("setForwardRequest", true);
+ ObjectHelper.write(out, obj);
+ in = _invoke(out);
+ return;
+ }
+ catch (ApplicationException $ex)
+ {
+ in = $ex.getInputStream();
+
+ String _id = $ex.getId();
+ throw new MARSHAL(_id);
+ }
+ catch (RemarshalException $rm)
+ {
+ setForwardRequest(obj);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // setForwardRequest
+
+ public org.omg.CORBA.Object get_servant()
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("get_servant", true);
+ in = _invoke(out);
+
+ return ObjectHelper.read(in);
+ }
+ catch (ApplicationException $ex)
+ {
+ in = $ex.getInputStream();
+
+ String _id = $ex.getId();
+ throw new MARSHAL(_id);
+ }
+ catch (RemarshalException $rm)
+ {
+ return get_servant();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // get_servant
+
+ public void deactivate()
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("deactivate", true);
+ in = _invoke(out);
+ return;
+ }
+ catch (ApplicationException $ex)
+ {
+ in = $ex.getInputStream();
+
+ String _id = $ex.getId();
+ throw new MARSHAL(_id);
+ }
+ catch (RemarshalException $rm)
+ {
+ deactivate();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // deactivate
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids =
+ { "IDL:test/poa/TestLocationForwardServer:1.0" };
+
+ public String[] _ids()
+ {
+ return __ids;
+ }
+
+ private void readObject(java.io.ObjectInputStream s)
+ throws java.io.IOException
+ {
+ String str = s.readUTF();
+ String[] args = null;
+ java.util.Properties props = null;
+ org.omg.CORBA.Object obj = ORB.init(args, props).string_to_object(str);
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ _set_delegate(delegate);
+ }
+
+ private void writeObject(java.io.ObjectOutputStream s)
+ throws java.io.IOException
+ {
+ String[] args = null;
+ java.util.Properties props = null;
+ String str = ORB.init(args, props).object_to_string(this);
+ s.writeUTF(str);
+ }
+} // class _TestLocationForwardServerStub
diff --git a/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardStub.java b/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardStub.java
new file mode 100644
index 00000000..d5c2b67e
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/_TestLocationForwardStub.java
@@ -0,0 +1,105 @@
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+public class _TestLocationForwardStub
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements TestLocationForward
+{
+ public void deactivate_servant()
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out =
+ _request("deactivate_servant", true);
+ in = _invoke(out);
+ return;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException $rm)
+ {
+ deactivate_servant();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // deactivate_servant
+
+ public void aMethod()
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out = _request("aMethod", true);
+ in = _invoke(out);
+ return;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException $rm)
+ {
+ aMethod();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // aMethod
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids =
+ { "IDL:test/poa/TestLocationForward:1.0", "IDL:test/poa/Test:1.0" };
+
+ public String[] _ids()
+ {
+ return __ids;
+ }
+} // class _TestLocationForwardStub
diff --git a/gnu/testlet/org/omg/PortableServer/POA/_TestStub.java b/gnu/testlet/org/omg/PortableServer/POA/_TestStub.java
new file mode 100644
index 00000000..7bdbf86b
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/_TestStub.java
@@ -0,0 +1,84 @@
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import org.omg.CORBA.MARSHAL;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+public class _TestStub
+ extends ObjectImpl
+ implements Test
+{
+ public void aMethod()
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("aMethod", true);
+ in = _invoke(out);
+ return;
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new MARSHAL(_id);
+ }
+ catch (RemarshalException rm)
+ {
+ aMethod();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // aMethod
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = { "IDL:test/poa/Test:1.0" };
+
+ public String[] _ids()
+ {
+ return __ids;
+ }
+} // class _TestStub
diff --git a/gnu/testlet/org/omg/PortableServer/POA/testForwarding.java b/gnu/testlet/org/omg/PortableServer/POA/testForwarding.java
new file mode 100644
index 00000000..dda2ee9f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POA/testForwarding.java
@@ -0,0 +1,108 @@
+// Tags: JDK1.4
+
+// Copyright (c) Object Oriented Concepts, Inc. Billerica, MA, USA
+
+// Adapted for Mauve by Audrius Meskauskas <audriusa@bluewin.ch>
+
+// 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.
+
+/*
+This code originally came from the OMG's CORBA Open Source Testing project,
+which lived at cost.omg.org. That site no longer exists.
+
+All the contributing companies agreed to release their tests under the
+terms of the GNU Lesser General Public License, available in the file
+COPYING.LIB.
+
+The code has been modified integrating into Mauve test environment and
+removing tests that are not yet supported by Suns jre 1.4. Hence the license
+is now GPL.
+
+We downloaded the code from http://sourceforge.net/projects/corba-cost/,
+administrated by Duncan Grisby.
+*/
+
+package gnu.testlet.org.omg.PortableServer.POA;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+public class testForwarding
+ extends TestBase
+ implements Testlet
+{
+ boolean fs_terminated;
+
+ // This test demands write access to the folder where the program
+ // is running.
+ public void testForward()
+ {
+ try
+ {
+ new Thread()
+ {
+ public void run()
+ {
+ fs_terminated = false;
+ TestLocationForwardServerMain.main(new String[ 0 ]);
+ fs_terminated = true;
+ }
+ }.start();
+
+ while (TestLocationForwardServerMain.ior == null)
+ {
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ }
+ try
+ {
+ Thread.sleep(200);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+
+ TestLocationForwardClient.main(new String[ 0 ]);
+
+ // Wait at most 2 seconds for the termination of the server thread.
+ long from = System.currentTimeMillis();
+ do
+ {
+ Thread.sleep(100);
+ }
+ while (System.currentTimeMillis() - from < 2000 && !fs_terminated);
+
+ harness.check(fs_terminated, "Server thread must exit");
+ }
+ catch (Exception ex)
+ {
+ fail(ex);
+ }
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ harness = a_harness;
+ testForward();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries
new file mode 100644
index 00000000..5ea6f7a0
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries
@@ -0,0 +1,2 @@
+/poa_POA_test.java/1.3/Wed Jun 25 08:01:02 2008//
+D
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries.Log b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries.Log
new file mode 100644
index 00000000..128c57e7
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/communication////
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Repository b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Repository
new file mode 100644
index 00000000..64195b07
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableServer/POAOperations
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Root b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Entries b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Entries
new file mode 100644
index 00000000..c2394ea3
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Entries
@@ -0,0 +1,17 @@
+/gnuAdapterActivator.java/1.1/Fri Jul 22 17:29:10 2005//
+/ourUserException.java/1.1/Fri Jul 22 17:29:10 2005//
+/ourUserExceptionHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/poa_Servant.java/1.2/Wed Jun 25 08:01:02 2008//
+/poa_Server.java/1.2/Wed Jun 25 08:01:02 2008//
+/poa_comTester.java/1.2/Mon Jun 26 14:18:52 2006//
+/poa_comTesterHelper.java/1.3/Wed Jun 25 08:01:02 2008//
+/poa_comTesterOperations.java/1.2/Mon Jun 26 14:18:52 2006//
+/poa_comTesterPOA.java/1.3/Wed Jun 25 08:01:02 2008//
+/poa_comTesterStub.java/1.1/Fri Jul 22 17:29:10 2005//
+/poa_remotePoaControlStub.java/1.1/Fri Jul 22 17:29:10 2005//
+/remotePoaControl.java/1.2/Mon Jun 26 14:18:52 2006//
+/remotePoaControlHelper.java/1.2/Thu Jun 29 18:27:09 2006//
+/remotePoaControlOperations.java/1.2/Mon Jun 26 14:18:52 2006//
+/remotePoaControlPOA.java/1.2/Thu Jun 29 18:27:09 2006//
+/remotePoaControlServant.java/1.1/Fri Jul 22 17:29:10 2005//
+D
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Repository b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Repository
new file mode 100644
index 00000000..4374f96b
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/omg/PortableServer/POAOperations/communication
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Root b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/gnuAdapterActivator.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/gnuAdapterActivator.java
new file mode 100644
index 00000000..93fb9c30
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/gnuAdapterActivator.java
@@ -0,0 +1,62 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.Policy;
+import org.omg.PortableServer.AdapterActivator;
+import org.omg.PortableServer.POA;
+
+/**
+ * Defines a simple adapter activator.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class gnuAdapterActivator
+ extends LocalObject
+ implements AdapterActivator
+{
+ /**
+ * Create a new POA on the parent, using the parent policy set
+ * from the suitable parent of grandparend and with independent
+ * POA manager (passing null to the createPOA).
+ *
+ * @param parent a parent. Either this parent or one of its
+ * grandparents must be gnuAbstractPOA, able to provide a
+ * policy set.
+ *
+ * @param child_name the name of the child being created.
+ *
+ * @return true on success or false if no gnuAbstractPOA
+ * found till the root poa.
+ */
+ public boolean unknown_adapter(POA parent, String child_name)
+ {
+ try
+ {
+ POA n = parent.create_POA(child_name, null, new Policy[ 0 ]);
+ n.the_POAManager().activate();
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ return true;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserException.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserException.java
new file mode 100644
index 00000000..4ba50965
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserException.java
@@ -0,0 +1,41 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+public final class ourUserException
+ extends org.omg.CORBA.UserException
+{
+ public int ourField = (int) 0;
+
+ public ourUserException()
+ {
+ super(ourUserExceptionHelper.id());
+ }
+
+ public ourUserException(int _ourField)
+ {
+ super(ourUserExceptionHelper.id());
+ ourField = _ourField;
+ }
+
+ public ourUserException(String reason, int _ourField)
+ {
+ super(ourUserExceptionHelper.id() + " " + reason);
+ ourField = _ourField;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserExceptionHelper.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserExceptionHelper.java
new file mode 100644
index 00000000..383c2d88
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserExceptionHelper.java
@@ -0,0 +1,79 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public abstract class ourUserExceptionHelper
+{
+ private static String the_id =
+ "IDL:gnu/testlet/org/omg/PortableServer/POAOperations/communication/ourUserException:1.0";
+
+ public static void insert(Any a, ourUserException that)
+ {
+ OutputStream out = a.create_output_stream();
+ a.type(type());
+ write(out, that);
+ a.read_value(out.create_input_stream(), type());
+ }
+
+ public static ourUserException extract(Any a)
+ {
+ return read(a.create_input_stream());
+ }
+
+ public static synchronized TypeCode type()
+ {
+ StructMember[] members = new StructMember[ 1 ];
+ TypeCode member = ORB.init().get_primitive_tc(TCKind.tk_long);
+ members [ 0 ] = new StructMember("ourField", member, null);
+ return ORB.init().create_exception_tc(ourUserExceptionHelper.id(),
+ "ourUserException", members
+ );
+ }
+
+ public static String id()
+ {
+ return the_id;
+ }
+
+ public static ourUserException read(InputStream istream)
+ {
+ ourUserException value = new ourUserException();
+
+ // read and discard the repository ID
+ istream.read_string();
+ value.ourField = istream.read_long();
+ return value;
+ }
+
+ public static void write(OutputStream ostream, ourUserException value)
+ {
+ // write the repository ID
+ ostream.write_string(id());
+ ostream.write_long(value.ourField);
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Servant.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Servant.java
new file mode 100644
index 00000000..e1b7fe73
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Servant.java
@@ -0,0 +1,106 @@
+// Tags: not-a-test
+// Uses: poa_comTesterPOA
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.CompletionStatus;
+
+/**
+ * This class handles the actual server functionality in this test
+ * application. When the client calls the remote method, this
+ * finally results calling the method of this class.
+ *
+ * The parameters, passed to the server only, are just parameters of the
+ * java methods. The parameters that shuld be returned to client
+ * are wrapped into holder classes.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class poa_Servant
+ extends poa_comTesterPOA
+{
+ /**
+ * The field, that can be set and checked by remote client.
+ */
+ private int m_theField = 17;
+
+ /**
+ * Passes wide (UTF-16) string and narrow (ISO8859_1) string.
+ * @see gnu.CORBA.GIOP.CharSets_OSF for supported and default
+ * encodings. Returs they generalization as a wide string.
+ */
+ public String passCharacters(String wide, String narrow)
+ {
+ return "return '" + narrow + "' and '" + wide + "'";
+ }
+
+ /**
+ * Just prints the hello message.
+ */
+ public String sayHello()
+ {
+ byte[] id = _get_delegate().object_id(this);
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < id.length; i++)
+ {
+ b.append(Integer.toHexString(id [ i ]));
+ b.append(' ');
+ }
+ return b + ":" + hashCode();
+ }
+
+ /**
+ * Get the value of our field.
+ */
+ public int theField()
+ {
+ return m_theField;
+ }
+
+ /**
+ * Set the value of our field.
+ */
+ public void theField(int a_field)
+ {
+ m_theField = a_field;
+ }
+
+ /**
+ * Throw an exception.
+ *
+ * @param parameter specifies which exception will be thrown.
+ *
+ * @throws ourUserException for the non negative parameter.
+ * @throws BAD_OPERATION for the negative parameter.
+ */
+ public void throwException(int parameter)
+ throws ourUserException
+ {
+ if (parameter > 0)
+ {
+ throw new ourUserException(parameter);
+ }
+ else
+ {
+ throw new BAD_OPERATION(456, CompletionStatus.COMPLETED_YES);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Server.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Server.java
new file mode 100644
index 00000000..fdb48e5e
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_Server.java
@@ -0,0 +1,429 @@
+// Tags: not-a-test
+// Uses: ../poa_POA_test
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.TreeMap;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.Policy;
+import org.omg.CORBA.Request;
+import org.omg.CORBA.TCKind;
+import org.omg.PortableServer.ForwardRequest;
+import org.omg.PortableServer.IdUniquenessPolicyValue;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAHelper;
+import org.omg.PortableServer.RequestProcessingPolicyValue;
+import org.omg.PortableServer.Servant;
+import org.omg.PortableServer.ServantActivator;
+import org.omg.PortableServer.ServantLocator;
+import org.omg.PortableServer.ServantRetentionPolicyValue;
+import org.omg.PortableServer.ServantLocatorPackage.CookieHolder;
+import gnu.testlet.TestHarness;
+import gnu.testlet.org.omg.PortableServer.POAOperations.*;
+
+public class poa_Server
+ extends LocalObject
+ implements ServantActivator, ServantLocator
+{
+ TestHarness t;
+ public poa_Servant s2a;
+ public poa_Server m575;
+ public poa_Server once_activated;
+ public ArrayList incarnations = new ArrayList();
+ public ArrayList etherializations = new ArrayList();
+ public ArrayList preinvokes = new ArrayList();
+ public ArrayList postinvokes = new ArrayList();
+ String poaName;
+ public boolean started;
+ public static TreeMap references = new TreeMap();
+
+ public poa_Server()
+ {
+ poaName = "???";
+ }
+
+ public poa_Server(String n)
+ {
+ poaName = n;
+ }
+
+ public ORB start_server(TestHarness a_t)
+ {
+ poaName = "main";
+ t = a_t;
+ try
+ {
+ // Create and initialize the ORB.
+ final ORB orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+
+ // Create the servant and register it with the ORBs root POA.
+ POA root_poa =
+ POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
+
+ POA poa = root_poa.create_POA("1", null, policies_1(root_poa));
+
+ poa.the_activator(new gnuAdapterActivator());
+
+ POA npoa = poa.find_POA("xactivated", true);
+
+ npoa.activate_object_with_id(new byte[] { 7, 5 }, new poa_Servant());
+ write_reference(orb, npoa.id_to_reference(new byte[] { 7, 5 }),
+ "xactivated"
+ );
+
+ root_poa.the_POAManager().activate();
+ poa.the_POAManager().activate();
+
+ poa_Servant once_activated_servant = new poa_Servant();
+
+ org.omg.CORBA.Object servantObject =
+ poa.create_reference_with_id(new byte[] { 4, 5, 2, 5, 7, 2 },
+ poa_comTesterHelper.id()
+ );
+
+ org.omg.CORBA.Object localTestServant =
+ poa.create_reference_with_id(new byte[] { 1, 2, 3, 4 },
+ poa_comTesterHelper.id()
+ );
+
+ once_activated = new poa_Server(poa.the_name());
+ poa.set_servant_manager(once_activated);
+
+ write_reference(orb, servantObject, "IOR.txt");
+
+ // Add a single servant POA.
+ POA sspoa = root_poa.create_POA("2", null, policies_2(root_poa));
+
+ poa_Servant always_same_servant = new poa_Servant();
+ sspoa.set_servant(always_same_servant);
+
+ org.omg.CORBA.Object sservantObject1 =
+ sspoa.create_reference_with_id(new byte[] { 5, 4, 3, 2, 1 },
+ poa_comTesterHelper.id()
+ );
+
+ write_reference(orb, sservantObject1, "ssIOR1.txt");
+
+ org.omg.CORBA.Object sservantObject2 =
+ sspoa.create_reference_with_id(new byte[] { 1, 2, 3, 4, 5 },
+ poa_comTesterHelper.id()
+ );
+
+ write_reference(orb, sservantObject2, "ssIOR2.txt");
+
+ sspoa.the_POAManager().activate();
+
+ // Add a single servant POA that also allows to introduce the
+ // explicitly activated alternative servant.
+ POA sspoa_a = root_poa.create_POA("2a", null, policies_2a(root_poa));
+
+ s2a = new poa_Servant();
+ sspoa_a.set_servant(s2a);
+
+ org.omg.CORBA.Object sservantObject1adefault1 =
+ sspoa_a.create_reference_with_id(new byte[] { 4, 4, 4, 1 },
+ poa_comTesterHelper.id()
+ );
+
+ org.omg.CORBA.Object sservantObject1adefault2 =
+ sspoa_a.create_reference_with_id(new byte[] { 4, 4, 4, 2 },
+ poa_comTesterHelper.id()
+ );
+
+ sspoa_a.activate_object_with_id(new byte[] { 4, 4, 4, 5, 5, 5, 5 },
+ new poa_Servant()
+ );
+
+ org.omg.CORBA.Object sservantObject1aother =
+ sspoa_a.id_to_reference(new byte[] { 4, 4, 4, 5, 5, 5, 5 });
+
+ sspoa_a.the_POAManager().activate();
+
+ // Activate the servant that would handle the redirections.
+ poa_Servant redirection_handler =
+ new poa_Servant()
+ {
+ /**
+ * Just prints the hello message.
+ */
+ public String sayHello()
+ {
+ return "{redirection handler} " + array(super._object_id());
+ }
+ };
+ poa.activate_object_with_id(new byte[] { 7, 7, 7 }, redirection_handler);
+ write_reference(orb, poa.servant_to_reference(redirection_handler),
+ "redirector"
+ );
+
+ org.omg.CORBA.Object o1;
+ org.omg.CORBA.Object o2;
+ org.omg.CORBA.Object o3;
+
+ poa_comTester t1 =
+ poa_comTesterHelper.narrow(o1 = sservantObject1adefault1);
+ poa_comTester t2 =
+ poa_comTesterHelper.narrow(o2 = sservantObject1adefault2);
+ poa_comTester tx =
+ poa_comTesterHelper.narrow(o3 = sservantObject1aother);
+
+ String s1 = t1.sayHello();
+ String s2 = t2.sayHello();
+ String sx = tx.sayHello();
+
+ String h1 = s1.substring(s1.lastIndexOf(":"));
+ String h2 = s2.substring(s2.lastIndexOf(":"));
+ String hx = sx.substring(sx.lastIndexOf(":"));
+
+ t.check(h1, h2, "Must be same default servant");
+ t.check(!h1.equals(hx), "Must be different servant");
+ t.check(!h2.equals(hx), "Must be different servant");
+
+ // Save them.
+ write_reference(orb, t1, "T1");
+ write_reference(orb, t2, "T2");
+ write_reference(orb, tx, "TX");
+
+ remotePoaControlServant control = new remotePoaControlServant();
+
+ control.target_object_id = poa.reference_to_id(servantObject);
+
+ org.omg.CORBA.Object controlObject =
+ root_poa.servant_to_reference(control);
+
+ write_reference(orb, controlObject, "Control.txt");
+
+ POA subpoa = sspoa.create_POA("sub", null, policies_3(sspoa));
+
+ m575 = new poa_Server(subpoa.the_name());
+ subpoa.set_servant_manager(m575);
+
+ org.omg.CORBA.Object sub =
+ subpoa.create_reference_with_id(new byte[] { 5, 7, 5 },
+ poa_comTesterHelper.id()
+ );
+ subpoa.the_POAManager().activate();
+ write_reference(orb, sub, "ssIOR3.txt");
+
+ poa_comTester s = poa_comTesterHelper.narrow(localTestServant);
+
+ try
+ {
+ s.throwException(64);
+ t.fail("LOCAL:User exception is not thrown");
+ }
+ catch (ourUserException ex)
+ {
+ t.check(64, ex.ourField, "LOCAL: user exception field value");
+ }
+
+ Request rq =
+ s._create_request(null, "passCharacters", orb.create_list(2), null);
+ rq.add_in_arg().insert_wstring("wide string");
+ rq.add_in_arg().insert_string("narrow string");
+
+ rq.set_return_type(orb.get_primitive_tc(TCKind.tk_wstring));
+
+ rq.invoke();
+
+ String rt = rq.result().value().extract_wstring();
+ t.check("return 'narrow string' and 'wide string'", rt, "LOCAL:DII:");
+
+ poa_comTesterHelper.narrow(sub).sayHello();
+
+ s.theField(55);
+ t.check(55, s.theField(), "LOCAL: field accessing");
+ s.theField(17);
+
+ String r = s.passCharacters("abba", "baba");
+ t.check("return 'baba' and 'abba'", r);
+
+ // The objects with such key will receive redirection exceptions.
+ // We force the redirection exception the be throw by activator...
+ org.omg.CORBA.Object willBeRedirected =
+ poa.create_reference_with_id(new byte[] { 0x7F, 0, 0, 0, 8 },
+ poa_comTesterHelper.id()
+ );
+
+ write_reference(orb, willBeRedirected, "willRedirActivator.txt");
+
+ // ..and by locator.
+ willBeRedirected =
+ subpoa.create_reference_with_id(new byte[] { 0x7F, 0, 0, 0, 9 },
+ poa_comTesterHelper.id()
+ );
+
+ write_reference(orb, willBeRedirected, "willRedirLocator.txt");
+
+ new Thread()
+ {
+ public void run()
+ {
+ // Start the thread, serving the invocations from clients.
+ orb.run();
+ }
+ }.start();
+
+ started = true;
+
+ return orb;
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Pass the IOR reference. As all test run on the same jre, we can
+ * just use the map, stored in the static field.
+ */
+ private static void write_reference(ORB orb, org.omg.CORBA.Object object,
+ String file
+ )
+ throws FileNotFoundException, BAD_PARAM
+ {
+ references.put(file, orb.object_to_string(object));
+ }
+
+ /**
+ * The "standard" policy set, identical to the policies of the root
+ * poa apart that the servant manager is used to locate the servant
+ * and activate an object.
+ */
+ static Policy[] policies_1(POA poa)
+ {
+ return new Policy[]
+ {
+ poa.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER)
+ };
+ }
+
+ /**
+ * The policy set, defining that it will be a single servant per all
+ * objects in this POA.
+ */
+ static Policy[] policies_2(POA poa)
+ {
+ return new Policy[]
+ {
+ poa.create_id_uniqueness_policy(IdUniquenessPolicyValue.MULTIPLE_ID),
+ poa.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
+ poa.create_request_processing_policy(RequestProcessingPolicyValue.USE_DEFAULT_SERVANT),
+ };
+ }
+
+ /**
+ * The policy set, defining that it will be a single servant per all
+ * objects in this POA, but due RETAIN it is also possible to activate
+ * an object, explicitly indicating the alternative servant.
+ */
+ static Policy[] policies_2a(POA poa)
+ {
+ return new Policy[]
+ {
+ poa.create_id_uniqueness_policy(IdUniquenessPolicyValue.MULTIPLE_ID),
+ poa.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
+ poa.create_request_processing_policy(RequestProcessingPolicyValue.USE_DEFAULT_SERVANT),
+ };
+ }
+
+ /**
+ * The policy set, defining that the servant must each time incarnated
+ * by the servant manager.
+ */
+ static Policy[] policies_3(POA poa)
+ {
+ return new Policy[]
+ {
+ poa.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
+ poa.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
+ };
+ }
+
+ public Servant incarnate(byte[] key, POA poa)
+ throws org.omg.PortableServer.ForwardRequest
+ {
+ // Handle "hello" on redirector for all objects with key starting 0xFF.
+ if (key [ 0 ] == 0x7F)
+ {
+ ORB orb = ORB.init(new String[ 0 ], null);
+ org.omg.CORBA.Object redir = poa_POA_test.readIOR("redirector", orb);
+ throw new ForwardRequest("redirecting", redir);
+ }
+
+ String s = array(key) + "/" + poa.the_name();
+ incarnations.add(s);
+ return new poa_Servant();
+ }
+
+ public void etherealize(byte[] key, POA poa, Servant servant, boolean b1,
+ boolean b2
+ )
+ {
+ String s = array(key) + "/" + poa.the_name();
+ etherializations.add(s);
+ }
+
+ public static String array(byte[] a)
+ {
+ StringBuffer b = new StringBuffer();
+ for (int i = 0; i < a.length; i++)
+ {
+ b.append(Integer.toHexString(a [ i ] & 0xFF));
+ b.append(' ');
+ }
+ return b.toString();
+ }
+
+ public void postinvoke(byte[] key, POA poa, String method,
+ java.lang.Object cookie, Servant servant
+ )
+ {
+ String s =
+ array(key) + method + "/" + poa.the_name() + "/" + cookie + ":" +
+ (servant == null ? 0 : servant.hashCode());
+ postinvokes.add(s);
+ }
+
+ public Servant preinvoke(byte[] key, POA poa, String method,
+ CookieHolder cholder
+ )
+ throws org.omg.PortableServer.ForwardRequest
+ {
+ // Handle "hello" on redirector for all objects with key starting 0xFF.
+ if (key [ 0 ] == 0x7F)
+ {
+ ORB orb = ORB.init(new String[ 0 ], null);
+ org.omg.CORBA.Object redir = poa_POA_test.readIOR("redirector", orb);
+ throw new ForwardRequest("redirecting", redir);
+ }
+
+ String s = array(key) + method + "/" + poa.the_name();
+ cholder.value = "cook";
+ preinvokes.add(s);
+ return new poa_Servant();
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTester.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTester.java
new file mode 100644
index 00000000..201a5028
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTester.java
@@ -0,0 +1,29 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+
+/**
+ * The tester interface.
+ */
+public interface poa_comTester
+ extends poa_comTesterOperations, org.omg.CORBA.Object,
+ org.omg.CORBA.portable.IDLEntity
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java
new file mode 100644
index 00000000..602e2753
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterHelper.java
@@ -0,0 +1,62 @@
+// Tags: not-a-test
+// Uses: poa_comTesterStub
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.ObjectImpl;
+
+/**
+ * The tester interface.
+ */
+public abstract class poa_comTesterHelper
+{
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/PortableServer/POAOperations/communication/comTester:1.0";
+
+ public static synchronized org.omg.CORBA.TypeCode type()
+ {
+ return org.omg.CORBA.ORB.init().create_interface_tc(poa_comTesterHelper.id(),
+ "comTester"
+ );
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static poa_comTester narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof poa_comTester)
+ return (poa_comTester) obj;
+ else if (!obj._is_a(id()))
+ throw new org.omg.CORBA.BAD_PARAM();
+ else
+ {
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ poa_comTesterStub stub = new poa_comTesterStub();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterOperations.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterOperations.java
new file mode 100644
index 00000000..0a24624f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterOperations.java
@@ -0,0 +1,55 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+
+/**
+ * The tester interface.
+ */
+public interface poa_comTesterOperations
+{
+ /**
+ * The field that can be either set of checked.
+ */
+ int theField();
+
+ /**
+ * The field that can be either set of checked.
+ */
+ void theField(int newTheField);
+
+ /**
+ * Handles a simple message, returns string info about calling
+ * circumstances.
+ */
+ String sayHello();
+
+ /**
+ * Passes wide string.
+ */
+ String passCharacters(String wide, String narrow);
+
+ /**
+ * Throws either 'ourUserException' with the 'ourField' field
+ * initialised to the passed positive value
+ * or system exception (if the parameter is zero or negative).
+ */
+ void throwException(int parameter)
+ throws ourUserException;
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java
new file mode 100644
index 00000000..effa847f
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterPOA.java
@@ -0,0 +1,152 @@
+// Tags: not-a-test
+// Uses: poa_comTesterOperations ourUserExceptionHelper
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+
+/**
+* The tester interface.
+*/
+public abstract class poa_comTesterPOA
+ extends org.omg.PortableServer.Servant
+ implements poa_comTesterOperations, org.omg.CORBA.portable.InvokeHandler
+{
+ // Constructors
+ private static java.util.Hashtable methods = new java.util.Hashtable();
+
+ static
+ {
+ methods.put("_get_theField", new Integer(0));
+ methods.put("_set_theField", new Integer(1));
+ methods.put("sayHello", new Integer(2));
+ methods.put("throwException", new Integer(5));
+ methods.put("passCharacters", new Integer(4));
+ }
+
+ public org.omg.CORBA.portable.OutputStream _invoke(String a_method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler handler
+ )
+ {
+ org.omg.CORBA.portable.OutputStream out = null;
+ Integer method = (Integer) methods.get(a_method);
+ if (method == null)
+ throw new org.omg.CORBA.BAD_OPERATION(0,
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+
+ switch (method.intValue())
+ {
+ /**
+ * The field that can be either set of checked.
+ */
+ case 0 :
+ {
+ int result = this.theField();
+ out = handler.createReply();
+ out.write_long(result);
+ break;
+ }
+
+ /**
+ * The field that can be either set of checked.
+ */
+ case 1 :
+ {
+ int newTheField = in.read_long();
+ this.theField(newTheField);
+ out = handler.createReply();
+ break;
+ }
+
+ /**
+ * Handles a simple message.
+ */
+ case 2 :
+ {
+ String r = sayHello();
+ out = handler.createReply();
+ out.write_string(r);
+ break;
+ }
+
+ /**
+ * Passes wide string.
+ */
+ case 4 :
+ {
+ String wide = in.read_wstring();
+ String narrow = in.read_string();
+ String result = null;
+ result = this.passCharacters(wide, narrow);
+ out = handler.createReply();
+ out.write_wstring(result);
+ break;
+ }
+
+ /**
+ * Throws either 'ourUserException' with the 'ourField' field
+ * initialised to the passed positive value
+ * or system exception (if the parameter is zero or negative).
+ */
+ case 5 :
+ {
+ try
+ {
+ int parameter = in.read_long();
+ this.throwException(parameter);
+ out = handler.createReply();
+ }
+ catch (ourUserException ex)
+ {
+ out = handler.createExceptionReply();
+ ourUserExceptionHelper.write(out, ex);
+ }
+ break;
+ }
+
+ default :
+ throw new org.omg.CORBA.BAD_OPERATION(10000 + method.intValue(),
+ org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE
+ );
+ }
+
+ return out;
+ }
+
+ private static String[] ids = { poa_comTesterHelper.id() };
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId
+ )
+ {
+ return ids;
+ }
+
+ public poa_comTester _this()
+ {
+ return poa_comTesterHelper.narrow(super._this_object());
+ }
+
+ public poa_comTester _this(org.omg.CORBA.ORB orb)
+ {
+ return poa_comTesterHelper.narrow(super._this_object(orb));
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterStub.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterStub.java
new file mode 100644
index 00000000..409bcc64
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_comTesterStub.java
@@ -0,0 +1,203 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.TRANSIENT;
+import org.omg.CORBA.portable.ObjectImpl;
+
+/**
+ * The tester interface.
+ */
+public class poa_comTesterStub
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements poa_comTester
+{
+ /**
+ * The field that can be either set of checked.
+ */
+ public int theField()
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out =
+ _request("_get_theField", true);
+ in = _invoke(out);
+
+ int result = in.read_long();
+ return result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException remarsh)
+ {
+ return theField();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * The field that can be either set of checked.
+ */
+ public void theField(int newTheField)
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out =
+ _request("_set_theField", true);
+ out.write_long(newTheField);
+ in = _invoke(out);
+ return;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException remarsh)
+ {
+ theField(newTheField);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Handles a simple message.
+ */
+ public String sayHello()
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out = _request("sayHello", true);
+ in = _invoke(out);
+ return in.read_string();
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException remarsh)
+ {
+ return sayHello();
+ }
+ catch (TRANSIENT ex)
+ {
+ throw ex;
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ /**
+ * Passes wide string.
+ */
+ public String passCharacters(String wide, String narrow)
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out =
+ _request("passCharacters", true);
+ out.write_wstring(wide);
+ out.write_string(narrow);
+ in = _invoke(out);
+
+ String result = in.read_wstring();
+ return result;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException remarsh)
+ {
+ return passCharacters(wide, narrow);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // passCharacters
+
+ /**
+ * Throws either 'ourUserException' with the 'ourField' field
+ * initialised to the passed positive value
+ * or system exception (if the parameter is zero or negative).
+ */
+ public void throwException(int parameter)
+ throws ourUserException
+ {
+ org.omg.CORBA.portable.InputStream in = null;
+ try
+ {
+ org.omg.CORBA.portable.OutputStream out =
+ _request("throwException", true);
+ out.write_long(parameter);
+ in = _invoke(out);
+ return;
+ }
+ catch (org.omg.CORBA.portable.ApplicationException ex)
+ {
+ in = ex.getInputStream();
+
+ String _id = ex.getId();
+ if (_id.equals(ourUserExceptionHelper.id()))
+ throw ourUserExceptionHelper.read(in);
+ else
+ throw new org.omg.CORBA.MARSHAL(_id);
+ }
+ catch (org.omg.CORBA.portable.RemarshalException remarsh)
+ {
+ throwException(parameter);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ }
+
+ private static String[] ids = { poa_comTesterHelper.id() };
+
+ public String[] _ids()
+ {
+ return ids;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_remotePoaControlStub.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_remotePoaControlStub.java
new file mode 100644
index 00000000..b63d8f90
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/poa_remotePoaControlStub.java
@@ -0,0 +1,126 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.MARSHAL;
+import org.omg.CORBA.portable.ApplicationException;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.RemarshalException;
+
+/**
+ * The remote POA control interface.
+ */
+public class poa_remotePoaControlStub
+ extends org.omg.CORBA.portable.ObjectImpl
+ implements remotePoaControl
+{
+ /**
+ * Set the name of POA to that subsequent operations
+ * will apply. This POA must be the child of the POA
+ * to that this remotePoaControl servant is connected.
+ */
+ public void setControlTarget(String child_poa_name)
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("setControlTarget", true);
+ out.write_string(child_poa_name);
+ in = _invoke(out);
+ return;
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException remarsh)
+ {
+ setControlTarget(child_poa_name);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // setControlTarget
+
+ /**
+ * Set the mode of the POA being controlled (active,
+ * holding, discarding, deactivated).
+ */
+ public void setPoaMode(int mode)
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("setPoaMode", true);
+ out.write_long(mode);
+ in = _invoke(out);
+ return;
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException remarsh)
+ {
+ setPoaMode(mode);
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // setPoaMode
+
+ /**
+ * Get the mode of POA being controlled.
+ */
+ public int getPoaMode()
+ {
+ InputStream in = null;
+ try
+ {
+ OutputStream out = _request("getPoaMode", true);
+ in = _invoke(out);
+ return in.read_long();
+ }
+ catch (ApplicationException ex)
+ {
+ in = ex.getInputStream();
+ throw new MARSHAL(ex.getId());
+ }
+ catch (RemarshalException remarsh)
+ {
+ return getPoaMode();
+ }
+ finally
+ {
+ _releaseReply(in);
+ }
+ } // getPoaMode
+
+ private static String[] ids = { remotePoaControlHelper.id() };
+
+ public String[] _ids()
+ {
+ return ids;
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl.java
new file mode 100644
index 00000000..b1745048
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl.java
@@ -0,0 +1,29 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+
+/**
+ * The remote POA control interface.
+ */
+public interface remotePoaControl
+ extends remotePoaControlOperations, org.omg.CORBA.Object,
+ org.omg.CORBA.portable.IDLEntity
+{
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlHelper.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlHelper.java
new file mode 100644
index 00000000..c6d09594
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlHelper.java
@@ -0,0 +1,63 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.Delegate;
+import org.omg.CORBA.portable.ObjectImpl;
+
+/**
+ * The remote POA control interface.
+ */
+public abstract class remotePoaControlHelper
+{
+ private static String _id =
+ "IDL:gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControl:1.0";
+
+ public static synchronized TypeCode type()
+ {
+ return ORB.init().create_interface_tc(remotePoaControlHelper.id(),
+ "remotePoaControl"
+ );
+ }
+
+ public static String id()
+ {
+ return _id;
+ }
+
+ public static remotePoaControl narrow(org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof remotePoaControl)
+ return (remotePoaControl) obj;
+ else if (!obj._is_a(id()))
+ throw new BAD_PARAM();
+ else
+ {
+ Delegate delegate = ((ObjectImpl) obj)._get_delegate();
+ poa_remotePoaControlStub stub = new poa_remotePoaControlStub();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlOperations.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlOperations.java
new file mode 100644
index 00000000..4f0cc001
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlOperations.java
@@ -0,0 +1,44 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+
+/**
+ * The remote POA control interface.
+ */
+public interface remotePoaControlOperations
+{
+ /**
+ * Set the name of POA to that subsequent operations
+ * will apply. This POA must be the child of the POA
+ * to that this remotePoaControl servant is connected.
+ */
+ void setControlTarget(String child_poa_name);
+
+ /**
+ * Set the mode of the POA being controlled (active,
+ * holding, discarding, deactivated).
+ */
+ void setPoaMode(int mode);
+
+ /**
+ * Get the mode of POA being controlled.
+ */
+ int getPoaMode();
+}
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlPOA.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlPOA.java
new file mode 100644
index 00000000..bfb5e138
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlPOA.java
@@ -0,0 +1,118 @@
+// Tags: not-a-test
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.InvokeHandler;
+import org.omg.CORBA.portable.OutputStream;
+import org.omg.CORBA.portable.ResponseHandler;
+import org.omg.PortableServer.Servant;
+
+import java.util.*;
+
+/**
+ * The remote POA control interface.
+ */
+public abstract class remotePoaControlPOA
+ extends org.omg.PortableServer.Servant
+ implements remotePoaControlOperations, InvokeHandler
+{
+ private static Hashtable _methods = new Hashtable();
+
+ static
+ {
+ _methods.put("setControlTarget", new Integer(0));
+ _methods.put("setPoaMode", new Integer(1));
+ _methods.put("getPoaMode", new Integer(2));
+ }
+
+ public OutputStream _invoke(String method, InputStream in, ResponseHandler rh)
+ {
+ OutputStream out = null;
+ Integer __method = (Integer) _methods.get(method);
+ if (__method == null)
+ throw new BAD_OPERATION(method, 0, CompletionStatus.COMPLETED_MAYBE);
+
+ switch (__method.intValue())
+ {
+ /**
+ * Set the name of POA to that subsequent operations
+ * will apply. This POA must be the child of the POA
+ * to that this remotePoaControl servant is connected.
+ */
+ case 0 : // gnu/classpath/examples/CORBA/SimpleCommunication/communication/remotePoaControl/setControlTarget
+ {
+ String child_poa_name = in.read_string();
+ this.setControlTarget(child_poa_name);
+ out = rh.createReply();
+ break;
+ }
+
+ /**
+ * Set the mode of the POA being controlled (active,
+ * holding, discarding, deactivated).
+ */
+ case 1 : // gnu/classpath/examples/CORBA/SimpleCommunication/communication/remotePoaControl/setPoaMode
+ {
+ int mode = in.read_long();
+ this.setPoaMode(mode);
+ out = rh.createReply();
+ break;
+ }
+
+ /**
+ * Get the mode of POA being controlled.
+ */
+ case 2 : // gnu/classpath/examples/CORBA/SimpleCommunication/communication/remotePoaControl/getPoaMode
+ {
+ int result = getPoaMode();
+ out = rh.createReply();
+ out.write_long(result);
+ break;
+ }
+
+ default :
+ throw new BAD_OPERATION(0, CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ return out;
+ } // _invoke
+
+ private static String[] ids = { remotePoaControlHelper.id() };
+
+ public String[] _all_interfaces(org.omg.PortableServer.POA poa,
+ byte[] objectId
+ )
+ {
+ return ids;
+ }
+
+ public remotePoaControl _this()
+ {
+ return remotePoaControlHelper.narrow(super._this_object());
+ }
+
+ public remotePoaControl _this(ORB orb)
+ {
+ return remotePoaControlHelper.narrow(super._this_object(orb));
+ }
+} // class remotePoaControlPOA
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java
new file mode 100644
index 00000000..e46b785d
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/communication/remotePoaControlServant.java
@@ -0,0 +1,133 @@
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations.communication;
+
+import org.omg.CORBA.BAD_INV_ORDER;
+import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.CompletionStatus;
+import org.omg.CORBA.OBJ_ADAPTER;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
+import org.omg.PortableServer.POAManagerPackage.State;
+import org.omg.PortableServer.POAPackage.AdapterNonExistent;
+
+/**
+ * Implements the remote POA control servant.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class remotePoaControlServant
+ extends remotePoaControlPOA
+{
+ POA target;
+ public byte[] target_object_id;
+
+ /**
+ * Finds the child target POA to control, by name.
+ */
+ public void setControlTarget(String child_poa_name)
+ {
+ try
+ {
+ target = _poa().find_POA(child_poa_name, false);
+ }
+ catch (AdapterNonExistent ex)
+ {
+ ex.printStackTrace();
+ throw new BAD_PARAM();
+ }
+ }
+
+ /**
+ * Get the state of the target POA that must be previously set.
+ */
+ public int getPoaMode()
+ {
+ if (target == null)
+ throw new BAD_INV_ORDER();
+ return target.the_POAManager().get_state().value();
+ }
+
+ /**
+ * Set the state of the target POA that must be previously set.
+ *
+ * @param mode the required POA mode plus:
+ * 100 = deactivate default associated object.
+ * 200 = activate default associated object.
+ */
+ public void setPoaMode(int mode)
+ {
+ if (target == null)
+ throw new BAD_INV_ORDER();
+
+ POAManager manager = target.the_POAManager();
+
+ try
+ {
+ switch (mode)
+ {
+ case State._ACTIVE :
+ manager.activate();
+ break;
+
+ case State._HOLDING :
+ manager.hold_requests(false);
+ break;
+
+ case State._DISCARDING :
+ manager.discard_requests(false);
+ break;
+
+ case State._INACTIVE :
+ manager.deactivate(false, false);
+ break;
+
+ case 100 :
+ try
+ {
+ target.deactivate_object(target_object_id);
+ }
+ catch (Exception ex)
+ {
+ System.err.println("Unable to deactivate");
+ ex.printStackTrace();
+ }
+ break;
+
+ case 200 :
+ try
+ {
+ target.activate_object_with_id(target_object_id, null);
+ }
+ catch (Exception ex)
+ {
+ throw new RuntimeException("Unable to activate", ex);
+ }
+ break;
+
+ default :
+ throw new BAD_PARAM();
+ }
+ }
+ catch (AdapterInactive ex)
+ {
+ throw new OBJ_ADAPTER("Inactive", 0x5001, CompletionStatus.COMPLETED_YES);
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java b/gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java
new file mode 100644
index 00000000..a4ce6d5b
--- /dev/null
+++ b/gnu/testlet/org/omg/PortableServer/POAOperations/poa_POA_test.java
@@ -0,0 +1,485 @@
+// Tags: JDK1.4
+// Uses: ../../CORBA/Asserter
+
+// Copyright (C) 2005 Audrius Meskauskas (AudriusA@Bioinformatics.org)
+
+// 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.org.omg.PortableServer.POAOperations;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+import gnu.testlet.org.omg.CORBA.Asserter;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.ourUserException;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_Server;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_comTester;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.poa_comTesterHelper;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.remotePoaControl;
+import gnu.testlet.org.omg.PortableServer.POAOperations.communication.remotePoaControlHelper;
+
+import org.omg.CORBA.BAD_OPERATION;
+import org.omg.CORBA.OBJECT_NOT_EXIST;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TRANSIENT;
+import org.omg.PortableServer.POAManagerPackage.State;
+
+import java.util.HashSet;
+import java.util.Iterator;
+
+/**
+ * This code controls the remote poa by turining it into various modes.
+ * It operates two objects, one being the remote POA control servant
+ * (connected to the root poa on a server side) and another the
+ * test servant, connected to the poa being controlled. The poa being
+ * controlled is a child for the root poa.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class poa_POA_test
+ extends Asserter
+ implements Testlet
+{
+ /*
+ * The IOR.txt file, used to find the server and the object on the server. is written when starting the accompanying
+ */
+ public static final String ssTARGET_IOR_FILE0 = "IOR.txt";
+
+ /**
+ * The IOR for the object, connected to POA with the single servant policy.
+ */
+ public static final String ssTARGET_IOR_FILE1 = "ssIOR1.txt";
+ public static final String ssTARGET_IOR_FILE2 = "ssIOR2.txt";
+ public static final String ssTARGET_IOR_FILE3 = "ssIOR3.txt";
+ public static final String[] allServants =
+ new String[]
+ {
+ ssTARGET_IOR_FILE0, ssTARGET_IOR_FILE1, ssTARGET_IOR_FILE2,
+ ssTARGET_IOR_FILE3
+ };
+
+ /*
+ * The Control.txt file, used to find the server and the object on the server. is written when starting the accompanying
+ */
+ public static final String CONTROL_IOR_FILE = "Control.txt";
+ ORB orb;
+
+ /**
+ * The control panel, managing the poa where
+ * the main invocation target is connected.
+ * The panel itself is connected to the target
+ * parent POA.
+ */
+ remotePoaControl control;
+ int holdPassed;
+ int discarded;
+ poa_Server server;
+ poa_POA_test THIS = this;
+
+ /**
+ * THIS MUST BE THE FIRST TEST TO RUN after setUp!!!"
+ * Test how many times various servants were activated when handling
+ * a simple task 3 times.
+ */
+ public void test_RETAIN_Activation()
+ {
+ server.once_activated.incarnations.clear();
+ server.once_activated.etherializations.clear();
+
+ poa_comTester uobject =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE0, orb));
+ uobject.sayHello();
+
+ for (int j = 0; j < 3; j++)
+ for (int i = 0; i < allServants.length; i++)
+ {
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(allServants [ i ], orb));
+ String r = object.passCharacters("abba", "baba");
+ assertEquals("wide/narrow strings", "return 'baba' and 'abba'", r);
+ }
+
+ Iterator iter = server.once_activated.incarnations.iterator();
+
+ assertEquals("Must be activated once", 1,
+ server.once_activated.incarnations.size()
+ );
+ assertEquals("Must not be deactivated", 0,
+ server.once_activated.etherializations.size()
+ );
+ assertEquals("Activated object", "4 5 2 5 7 2 /1",
+ server.once_activated.incarnations.get(0)
+ );
+
+ // Ensure that all requests are served by the same servant.
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE0, orb));
+
+ String s = object.sayHello();
+ assertTrue("Object key", s.startsWith("4 5 2 5 7 2 :"));
+
+ String n;
+
+ for (int i = 0; i < 10; i++)
+ {
+ n = object.sayHello();
+ assertEquals("Must be same servant", s, n);
+ }
+ }
+
+ public void testActivatedPoaAccess()
+ {
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR("xactivated", orb));
+ }
+
+ /**
+ * Get the object reference.
+ */
+ public void testPOA()
+ {
+ poa_comTester object;
+
+ try
+ {
+ ORB orb = org.omg.CORBA.ORB.init(new String[ 0 ], null);
+
+ object = poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE0, orb));
+ control = remotePoaControlHelper.narrow(readIOR(CONTROL_IOR_FILE, orb));
+
+ object = poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE1, orb));
+
+ assertEquals("testPOA", 17, object.theField());
+
+ object.sayHello();
+ object = poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE2, orb));
+ object.sayHello();
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ fail("" + t);
+ }
+ }
+
+ public void test_NO_RETAIN()
+ {
+ // The POA of this object uses NO_RETAIN with servant locator.
+ // That locator must be requested to find each time a new servant.
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE3, orb));
+
+ server.m575.preinvokes.clear();
+ server.m575.postinvokes.clear();
+
+ String s1 = object.sayHello();
+ String s2 = object.sayHello();
+ String s3 = object.sayHello();
+
+ assertTrue("NO_RETAIN key", s1.startsWith("5 7 5 :"));
+ assertTrue("NO_RETAIN key", s2.startsWith("5 7 5 :"));
+ assertTrue("NO_RETAIN key", s3.startsWith("5 7 5 :"));
+
+ assertEquals("NO_RETAIN, pre", 3, server.m575.preinvokes.size());
+ assertEquals("NO_RETAIN, post", 3, server.m575.postinvokes.size());
+
+ Iterator iter = server.m575.preinvokes.iterator();
+ while (iter.hasNext())
+ {
+ String item = (String) iter.next();
+ assertTrue("NO_RETAIN pre method/object",
+ item.startsWith("5 7 5 sayHello/sub")
+ );
+ }
+
+ iter = server.m575.postinvokes.iterator();
+
+ // The sevant hash codes, from the sever side.
+ HashSet servants = new HashSet();
+
+ // The servant hash codes, from the client side (must be the same)
+ HashSet servants2 = new HashSet();
+
+ String hash;
+
+ hash = s1.substring(s1.lastIndexOf(":"));
+ servants2.add(hash);
+ hash = s2.substring(s2.lastIndexOf(":"));
+ servants2.add(hash);
+ hash = s3.substring(s1.lastIndexOf(":"));
+ servants2.add(hash);
+
+ while (iter.hasNext())
+ {
+ String item = (String) iter.next();
+ assertTrue("NO_RETAIN post method/object/cookie",
+ item.startsWith("5 7 5 sayHello/sub/cook")
+ );
+ hash = item.substring(item.lastIndexOf(":"));
+ servants.add(hash);
+ assertTrue("NO_RETAIN servant hash", servants2.contains(hash));
+ }
+ assertEquals("NO_RETAIN all servants should differ", 3, servants.size());
+ }
+
+ /**
+ * As all tests run on the same jre, the IORs are passed via static field.
+ */
+ public static org.omg.CORBA.Object readIOR(String file, ORB orb)
+ {
+ String ior = (String) poa_Server.references.get(file);
+ return orb.string_to_object(ior);
+ }
+
+ public void testFieldAccess()
+ {
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE0, orb));
+
+ object.theField(222);
+ assertEquals("fieldAccess:1", 222, object.theField());
+ object.theField(17);
+ assertEquals("fieldAccess:2", 17, object.theField());
+ }
+
+ /**
+ * This test works with POA that has both default servant and
+ * retain policy. One object is activated with a separate servant.
+ * The others two use the default servant.
+ */
+ public void testCombinedActivation()
+ {
+ poa_comTester t1 = poa_comTesterHelper.narrow(readIOR("T1", orb));
+ poa_comTester t2 = poa_comTesterHelper.narrow(readIOR("T2", orb));
+ poa_comTester tx = poa_comTesterHelper.narrow(readIOR("TX", orb));
+
+ String s1 = t1.sayHello();
+ String s2 = t2.sayHello();
+ String sx = tx.sayHello();
+
+ String h1 = s1.substring(s1.lastIndexOf(":"));
+ String h2 = s2.substring(s2.lastIndexOf(":"));
+ String hx = sx.substring(sx.lastIndexOf(":"));
+
+ assertEquals("Must be same default servant", h1, h2);
+ assertFalse("Must be different servant", h1.equals(hx));
+ assertFalse("Must be different servant", h2.equals(hx));
+
+ // Verify keys also.
+ assertTrue("combinedActivation:1", s1.startsWith("4 4 4 1 :"));
+ assertTrue("combinedActivation:2", s2.startsWith("4 4 4 2 :"));
+ assertTrue("combinedActivation:3", sx.startsWith("4 4 4 5 5 5 5 :"));
+ }
+
+ public void testPOAControl()
+ {
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE0, orb));
+
+ poa_comTester other_poa =
+ poa_comTesterHelper.narrow(readIOR(ssTARGET_IOR_FILE1, orb));
+
+ control = remotePoaControlHelper.narrow(readIOR(CONTROL_IOR_FILE, orb));
+
+ try
+ {
+ object.sayHello();
+ }
+ catch (Exception ex)
+ {
+ fail("First invocation " + ex);
+ }
+
+ server.once_activated.incarnations.clear();
+ server.once_activated.etherializations.clear();
+
+ control.setControlTarget("1");
+ control.setPoaMode(State._DISCARDING);
+
+ try
+ {
+ object.sayHello();
+ fail("Expected throwing TRANSIENT, minor 1");
+ }
+ catch (TRANSIENT ex)
+ {
+ // OK.
+ }
+ catch (Exception other)
+ {
+ fail("Expected TRANSIENT, not " + other);
+ }
+
+ try
+ {
+ other_poa.sayHello();
+ try
+ {
+ other_poa.throwException(555);
+ fail("Must throw exception");
+ }
+ catch (ourUserException ex)
+ {
+ assertEquals("Exception code", 555, ex.ourField);
+ }
+
+ // This must completely pass.
+ test_NO_RETAIN();
+ }
+ catch (Exception ex)
+ {
+ fail("Other POA must still work. " + ex);
+ }
+
+ // Activate it again.
+ control.setPoaMode(State._ACTIVE);
+
+ try
+ {
+ // Now active again and must work.
+ object.sayHello();
+ }
+ catch (Exception ex)
+ {
+ fail("Reactivation from Discarding " + ex);
+ }
+
+ // Activate POA
+ control.setPoaMode(State._ACTIVE);
+
+ // Deactivate an object.
+ control.setPoaMode(100);
+ try
+ {
+ object.sayHello();
+ }
+ catch (OBJECT_NOT_EXIST ex)
+ {
+ fail("Must be implicitly activated ");
+ }
+
+ // Check for etherializations and incarnations.
+ assertEquals("One incarnation", server.once_activated.incarnations.size(), 1);
+ assertEquals("One etherialization",
+ server.once_activated.etherializations.size(), 1
+ );
+
+ assertEquals("Incarnation", "4 5 2 5 7 2 /1",
+ server.once_activated.incarnations.get(0)
+ );
+ assertEquals("Etherialization", "4 5 2 5 7 2 /1",
+ server.once_activated.etherializations.get(0)
+ );
+ }
+
+ public void testExceptions()
+ {
+ for (int i = 0; i < allServants.length; i++)
+ {
+ poa_comTester object =
+ poa_comTesterHelper.narrow(readIOR(allServants [ i ], orb));
+ try
+ {
+ object.throwException(64);
+ fail("User exception is not thrown");
+ }
+ catch (ourUserException ex)
+ {
+ assertEquals("Wrong field in user exception.", 64, ex.ourField);
+ }
+
+ try
+ {
+ object.throwException(-1);
+ fail("System exception is not thrown");
+ }
+ catch (BAD_OPERATION ex)
+ {
+ assertEquals("SysEx minor code", 456, ex.minor);
+ }
+ catch (Exception ex)
+ {
+ fail("Throwing incorrect exception " + ex);
+ }
+ }
+ }
+
+ public void testRedirectionWithActivator()
+ {
+ poa_comTester r =
+ poa_comTesterHelper.narrow(readIOR("willRedirActivator.txt", orb));
+
+ // Ensure the repetetive calls are also redirected.
+ for (int i = 0; i < 5; i++)
+ {
+ String s = r.sayHello();
+ assertEquals("Redir with activator", "{redirection handler} 7 7 7 ", s);
+ }
+ }
+
+ public void testRedirectionWithLocator()
+ {
+ poa_comTester r =
+ poa_comTesterHelper.narrow(readIOR("willRedirLocator.txt", orb));
+
+ // Ensure the repetetive calls are also redirected.
+ for (int i = 0; i < 5; i++)
+ {
+ String s = r.sayHello();
+ assertEquals("Redir with locator", "{redirection handler} 7 7 7 ", s);
+ }
+ }
+
+ protected void setUp() throws java.lang.Exception
+ {
+ server = new poa_Server();
+ server.start_server(THIS.h);
+
+ try
+ {
+ // Give 500 ms for the server thread to start.
+ Thread.sleep(500);
+ }
+ catch (InterruptedException ex)
+ {
+ }
+ orb = org.omg.CORBA.ORB.init(new String[0], null);
+ }
+
+ public void test(TestHarness a_harness)
+ {
+ h = a_harness;
+ try
+ {
+ setUp();
+ test_NO_RETAIN();
+ test_RETAIN_Activation();
+ testActivatedPoaAccess();
+ testCombinedActivation();
+ testExceptions();
+ testFieldAccess();
+ testPOA();
+ testPOAControl();
+ testRedirectionWithActivator();
+ testRedirectionWithLocator();
+ orb.destroy();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ h.fail("Exc:" + ex + ":" + ex.getCause());
+ }
+ }
+} \ No newline at end of file
diff --git a/gnu/testlet/org/w3c/CVS/Entries b/gnu/testlet/org/w3c/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/gnu/testlet/org/w3c/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/gnu/testlet/org/w3c/CVS/Entries.Log b/gnu/testlet/org/w3c/CVS/Entries.Log
new file mode 100644
index 00000000..7509f684
--- /dev/null
+++ b/gnu/testlet/org/w3c/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/dom////
diff --git a/gnu/testlet/org/w3c/CVS/Repository b/gnu/testlet/org/w3c/CVS/Repository
new file mode 100644
index 00000000..2fbd3f81
--- /dev/null
+++ b/gnu/testlet/org/w3c/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/w3c
diff --git a/gnu/testlet/org/w3c/CVS/Root b/gnu/testlet/org/w3c/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/w3c/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/w3c/dom/CVS/Entries b/gnu/testlet/org/w3c/dom/CVS/Entries
new file mode 100644
index 00000000..28d5746f
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/CVS/Entries
@@ -0,0 +1,3 @@
+/childNodesLength.java/1.2/Tue Jan 17 08:09:13 2006//
+/test.xml/1.1/Mon Jan 16 15:15:45 2006//
+D
diff --git a/gnu/testlet/org/w3c/dom/CVS/Repository b/gnu/testlet/org/w3c/dom/CVS/Repository
new file mode 100644
index 00000000..7a90014c
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/org/w3c/dom
diff --git a/gnu/testlet/org/w3c/dom/CVS/Root b/gnu/testlet/org/w3c/dom/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/org/w3c/dom/childNodesLength.java b/gnu/testlet/org/w3c/dom/childNodesLength.java
new file mode 100644
index 00000000..1b9b3510
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/childNodesLength.java
@@ -0,0 +1,131 @@
+// Tags: JDK1.4
+
+// Tests some Node kinds if method .getChildNodes().getLength() return correctly.
+// By: Pedro Izecksohn & Mark Wielaard
+
+// Part of the Mauve project.
+
+// 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, Inc., 51 Franklin Street, Fifth Floor
+// Boston, MA 02110-1301, USA.
+
+package gnu.testlet.org.w3c.dom;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+import gnu.testlet.ResourceNotFoundException;
+import java.io.InputStream;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.*;
+
+public class childNodesLength implements Testlet
+{
+
+ TestHarness harness;
+
+ private void checkNode (Node node)
+ {
+ int nChilds = node.getChildNodes().getLength();
+
+ if (
+ (node instanceof CDATASection)||
+ (node instanceof Comment)||
+ (node instanceof DocumentType)||
+ (node instanceof Notation)||
+ (node instanceof ProcessingInstruction)||
+ (node instanceof Text)
+ )
+ {
+ harness.check (nChilds==0, node.getClass().getName());
+ }
+ }
+
+ private void recurse (NodeList nl)
+ {
+ for (int i=0; i<nl.getLength(); i++)
+ {
+
+ Node node = nl.item (i);
+ if (node==null) {continue;}
+
+ checkNode (node);
+
+ if (node instanceof DocumentType)
+ {
+ DocumentType dt = (DocumentType) node;
+ NamedNodeMap nnm = dt.getNotations();
+
+ for (int j=0; j<nnm.getLength(); j++)
+ {
+ checkNode((Notation)nnm.item(j));
+ }
+ }
+
+ NodeList nl2 = node.getChildNodes();
+ int nChilds = nl2.getLength();
+ if (nChilds>0) {recurse (nl2);}
+ }
+ }
+
+ public void test (TestHarness harness)
+ {
+
+ this.harness=harness;
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ DocumentBuilder db = null;
+ try
+ {
+ db = dbf.newDocumentBuilder();
+ }
+ catch (javax.xml.parsers.ParserConfigurationException pce)
+ {
+ harness.debug (pce);
+ harness.check(false);
+ return;
+ }
+
+ // I need a xml file to parse.
+ InputStream input = null;
+
+ try
+ {
+ input = harness.getResourceStream ("gnu#testlet#org#w3c#dom#test.xml");
+ }
+ catch (ResourceNotFoundException rnfe)
+ {
+ harness.debug (rnfe);
+ harness.check(false);
+ return;
+ }
+
+ Document document = null;
+ try
+ {
+ document = db.parse(input);
+ }
+ catch (Exception e)
+ {
+ harness.debug (e);
+ harness.check(false);
+ return;
+ }
+
+ recurse (document.getChildNodes());
+
+ }
+
+}
diff --git a/gnu/testlet/org/w3c/dom/test.xml b/gnu/testlet/org/w3c/dom/test.xml
new file mode 100644
index 00000000..2de568cb
--- /dev/null
+++ b/gnu/testlet/org/w3c/dom/test.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE a [
+<!ELEMENT a (b, kedit)>
+<!ELEMENT b (#PCDATA)>
+<!NOTATION kedit SYSTEM "kedit">
+]>
+<a>
+ <!--This is a Comment.-->
+ <b>This is a Text Node.</b>
+ <?kedit This is a Processing Instruction. ?>
+ <![CDATA[This is a CDATA section.]]>
+</a>
diff --git a/gnu/testlet/runner/CVS/Entries b/gnu/testlet/runner/CVS/Entries
new file mode 100644
index 00000000..26eeb8f0
--- /dev/null
+++ b/gnu/testlet/runner/CVS/Entries
@@ -0,0 +1,18 @@
+/CheckResult.java/1.4/Fri May 8 22:09:25 2009//
+/ClassResult.java/1.3/Fri Nov 14 19:51:41 2008//
+/CreateTags.java/1.2/Tue Oct 11 18:06:09 2005//
+/Filter.java/1.2/Mon Nov 17 20:11:51 2008//
+/HTMLGenerator.java/1.3/Sun May 17 09:54:32 2009//
+/Mauve.java/1.6/Sun May 17 09:54:32 2009//
+/MauveTests.java/1.2/Sun May 17 09:54:32 2009//
+/PackageResult.java/1.4/Fri May 8 22:09:25 2009//
+/Result.java/1.1/Fri Nov 14 19:51:41 2008//
+/RunResult.java/1.5/Sun May 17 09:54:32 2009//
+/Tags.java/1.2/Mon Jun 26 14:18:52 2006//
+/TestResult.java/1.3/Fri Nov 14 19:51:41 2008//
+/TestletToAPI.java/1.1/Sun Oct 16 17:53:20 2005/-kk/
+/XMLGenerator.java/1.2/Mon Jun 26 14:18:52 2006//
+/XMLReportConstants.java/1.2/Sun May 17 09:54:32 2009//
+/XMLReportParser.java/1.3/Sun May 17 09:54:32 2009//
+/XMLReportWriter.java/1.2/Sun May 17 09:54:32 2009//
+D
diff --git a/gnu/testlet/runner/CVS/Entries.Log b/gnu/testlet/runner/CVS/Entries.Log
new file mode 100644
index 00000000..866b2fb6
--- /dev/null
+++ b/gnu/testlet/runner/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/compare////
diff --git a/gnu/testlet/runner/CVS/Repository b/gnu/testlet/runner/CVS/Repository
new file mode 100644
index 00000000..f48f2f2d
--- /dev/null
+++ b/gnu/testlet/runner/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/runner
diff --git a/gnu/testlet/runner/CVS/Root b/gnu/testlet/runner/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/runner/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/runner/CheckResult.java b/gnu/testlet/runner/CheckResult.java
new file mode 100644
index 00000000..90133b8d
--- /dev/null
+++ b/gnu/testlet/runner/CheckResult.java
@@ -0,0 +1,177 @@
+// Tags: not-a-test
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+/**
+ * Records the details of a check that is performed by Mauve.
+ */
+public class CheckResult implements Result {
+
+ /** The check number. */
+ private int number;
+
+ /** The check point string. */
+ private String checkPoint;
+
+ /** A flag that indicates whether or not the check passed. */
+ private boolean passed;
+
+ /** The expected result (converted to a string). */
+ private String expected;
+
+ /** The actual result (converted to a string). */
+ private String actual;
+
+ /** The log output for the check. */
+ private StringBuffer log;
+
+ /**
+ * Creates a new check.
+ *
+ * @param number the check number.
+ * @param passed a flag that indicates whether or not the check passed.
+ */
+ public CheckResult(int number, boolean passed) {
+ this.number = number;
+ this.passed = passed;
+ }
+
+ /**
+ * Returns the check number.
+ *
+ * @return The check number.
+ */
+ public int getNumber() {
+ return this.number;
+ }
+
+ /**
+ * Sets the check number.
+ *
+ * @param number the number.
+ */
+ void setNumber(int number) {
+ this.number = number;
+ }
+
+ /**
+ * Returns a flag that indicates whether or not the check passed.
+ *
+ * @return A boolean.
+ */
+ public boolean getPassed() {
+ return passed;
+ }
+
+ /**
+ * Sets the flag that indicates whether or not the check passed.
+ *
+ * @param passed the flag.
+ */
+ void setPassed(boolean passed) {
+ this.passed = passed;
+ }
+
+ /**
+ * Returns the check point string.
+ *
+ * @return The check point string.
+ */
+ public String getCheckPoint() {
+ return checkPoint;
+ }
+
+ /**
+ * Sets the check point string.
+ *
+ * @param checkPoint the check point string.
+ */
+ void setCheckPoint(String checkPoint) {
+ this.checkPoint = checkPoint;
+ }
+
+ /**
+ * Returns a string representing the actual value.
+ *
+ * @return The actual value.
+ */
+ public String getActual() {
+ if(actual == null)
+ return "n/a";
+ return actual;
+ }
+
+ /**
+ * Sets the actual value.
+ *
+ * @param actual the actual value.
+ */
+ void setActual(String actual) {
+ this.actual = actual;
+ }
+
+ /**
+ * Returns the expected value.
+ *
+ * @return The expected value.
+ */
+ public String getExpected() {
+ if(expected == null)
+ return "n/a";
+ return expected;
+ }
+
+ /**
+ * Sets the expected value.
+ *
+ * @param expected the expected value.
+ */
+ void setExpected(String expected) {
+ this.expected = expected;
+ }
+
+ /**
+ * Returns the log.
+ *
+ * @return The log.
+ */
+ public String getLog() {
+ if(log == null)
+ return "";
+ return log.toString();
+ }
+
+ /**
+ * Appends the specified message to the log.
+ *
+ * @param message the message to append.
+ */
+ void appendToLog(String message) {
+ if(log == null)
+ log = new StringBuffer();
+ log.append(message);
+ }
+
+ //@Override
+ public String getName() {
+ return Integer.toString(number);
+ }
+}
diff --git a/gnu/testlet/runner/ClassResult.java b/gnu/testlet/runner/ClassResult.java
new file mode 100644
index 00000000..0832f8b5
--- /dev/null
+++ b/gnu/testlet/runner/ClassResult.java
@@ -0,0 +1,131 @@
+// Tags: not-a-test
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Represents the result of running all the tests for a particular class.
+ */
+public class ClassResult implements Comparable, Result {
+
+ /** The name of the test (usually the class name). */
+ private String name;
+
+ /** A list containing results for each test applied for the class. */
+ private List testResults;
+ private boolean sorted = true;
+
+ /**
+ * Creates a new result, initially empty.
+ *
+ * @param name the class name.
+ */
+ ClassResult(String name) {
+ this.name = name;
+ testResults = new ArrayList();
+ }
+
+ /**
+ * Returns the test name (this is most often the name of the method
+ * being tested).
+ *
+ * @return The test name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the test name.
+ *
+ * @param name the name.
+ */
+ void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Adds a test result.
+ *
+ * @param result the test result.
+ */
+ public void add(TestResult result) {
+ testResults.add(result);
+ sorted = false;
+ }
+
+ /**
+ * Returns an iterator that provides access to all the tests for
+ * this class.
+ *
+ * @return An iterator.
+ */
+ public Iterator getTestIterator() {
+ if(!sorted) {
+ Collections.sort(testResults);
+ sorted = true;
+ }
+ return testResults.iterator();
+ }
+
+ /**
+ * Returns the total number of checks performed for this class.
+ *
+ * @return The check count.
+ */
+ public int getCheckCount() {
+ int result = 0;
+ Iterator iterator = testResults.iterator();
+ while (iterator.hasNext())
+ {
+ TestResult test = (TestResult) iterator.next();
+ result = result + test.getCheckCount();
+ }
+ return result;
+ }
+
+ /**
+ * Returns the number of checks with the specified status.
+ *
+ * @param passed the check status.
+ *
+ * @return The number of checks passed or failed.
+ */
+ public int getCheckCount(boolean passed) {
+ int result = 0;
+ Iterator iterator = testResults.iterator();
+ while (iterator.hasNext())
+ {
+ TestResult test = (TestResult) iterator.next();
+ result = result + test.getCheckCount(passed);
+ }
+ return result;
+ }
+
+ public int compareTo(Object obj) {
+ ClassResult that = (ClassResult) obj;
+ return getName().compareTo(that.getName());
+ }
+}
diff --git a/gnu/testlet/runner/CreateTags.java b/gnu/testlet/runner/CreateTags.java
new file mode 100644
index 00000000..a96fb94f
--- /dev/null
+++ b/gnu/testlet/runner/CreateTags.java
@@ -0,0 +1,166 @@
+/*
+Copyright (c) 2005 Thomas Zander <zander@kde.org>
+
+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.runner;
+
+import java.util.*;
+import java.io.*;
+
+public class CreateTags {
+ private File base, output;
+ private List classes = new ArrayList();
+
+ public CreateTags(File base, File output) {
+ if(!base.exists())
+ throw new IllegalArgumentException("base dir does not exist");
+ if(!base.isDirectory())
+ throw new IllegalArgumentException("base dir is not a directory");
+ if(output.exists())
+ output.delete();
+ this.base = base;
+ this.output = output;
+ }
+
+ public void create() throws IOException {
+ append(base);
+
+ FileWriter writer = new FileWriter(output);
+
+ // JDK
+ String start = "1.0";
+ String next;
+ boolean first;
+ do {
+ first = true;
+ next = "9.9";
+ Iterator iter = classes.iterator();
+ while(iter.hasNext()) {
+ TestCase testCase = (TestCase) iter.next();
+ int from = testCase.tags.fromJDK.compareTo(start);
+ if(from < 0) {
+ if(testCase.tags.toJDK.compareTo(start) == 0) { // write tests not to be used
+ if(first) {
+ writer.write("[JDK"+ start +"]\n");
+ first = false;
+ }
+ writer.write("-");
+ writer.write(testCase.className);
+ writer.write("\n");
+ }
+ }
+ else if(from == 0) {
+ if(first) {
+ writer.write("[JDK"+ start +"]\n");
+ first = false;
+ }
+ writer.write(testCase.className);
+ writer.write("\n");
+ }
+ else if(from > 0) { // can't use, too old.
+ if(testCase.tags.fromJDK.compareTo(next) < 0)
+ next = testCase.tags.fromJDK;
+ }
+ }
+ start = next;
+ writer.write("\n");
+ } while(!first);
+
+ first=true;
+ Iterator iter = classes.iterator();
+ while(iter.hasNext()) {
+ TestCase testCase = (TestCase) iter.next();
+ if(testCase.tags.gui) {
+ if(first) {
+ writer.write("\n[GUI]\n");
+ first = false;
+ }
+ writer.write(testCase.className);
+ writer.write("\n");
+ }
+ }
+
+ writer.close();
+ }
+
+ private void append(File dir) {
+ File[] children = dir.listFiles();
+ testCase: for(int i=0; i < children.length; i++) {
+ File file = children[i];
+ if(file.isDirectory()) {
+ append(file);
+ continue;
+ }
+ if(! file.getName().endsWith(".java"))
+ continue;
+
+ String tags = null, pckage = null;
+ try {
+ Reader reader = new FileReader(file);
+ StringBuffer buf = new StringBuffer();
+ int maxLines=30;
+ line: while(maxLines > 0 && (tags == null || pckage == null)) {
+ int character = reader.read();
+ if(character == -1)
+ break;
+ if(character == '\n') {
+ int index = buf.indexOf("Tags:") + 5; // 5 == length of string
+ if(index > 5 && buf.length() > index) {
+ String line = buf.substring(index).trim().toLowerCase();
+ if("not-a-test".equals(line))
+ continue testCase;
+ if(tags != null)
+ tags += " "+ line;
+ else
+ tags = line;
+ }
+ else if(buf.indexOf("package ") == 0)
+ {
+ int idx = buf.lastIndexOf(";");
+ pckage = buf.substring(8, idx);
+ }
+ buf = new StringBuffer();
+ maxLines--;
+ }
+ else
+ buf.append((char) character);
+ }
+ if(pckage != null && tags != null) {
+ String className = pckage +"."+ file.getName().substring(0,
+ file.getName().length()-5);
+ classes.add(new TestCase(className, tags));
+ }
+ } catch(IOException e) {
+ e.printStackTrace(); // TODO nicer??
+ }
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+ new CreateTags(new File(args[0]), new File(args[1])).create();
+ }
+
+ private static class TestCase {
+ public final String className;
+ public final Tags tags;
+ public TestCase(String className, String tags) {
+ this.className = className;
+ this.tags = new Tags(tags);
+ }
+ }
+}
diff --git a/gnu/testlet/runner/Filter.java b/gnu/testlet/runner/Filter.java
new file mode 100644
index 00000000..99698edb
--- /dev/null
+++ b/gnu/testlet/runner/Filter.java
@@ -0,0 +1,155 @@
+/*
+Copyright (c) 2005 Thomas Zander <zander@kde.org>
+
+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.runner;
+
+import java.util.*;
+import java.io.*;
+
+public class Filter {
+ public static void main(String[] args) throws IOException {
+ System.out.println("Please specify which tests you want to run based on the JVM version");
+ System.out.println("you want to test compatibility with.");
+ System.out.println("After you select a file called 'tests' will be written and you then");
+ System.out.println("have to type:");
+ System.out.println(" export CLASSPATH=alltests.jar:$CLASSPATH");
+ System.out.println(" myJava gnu.testlet.runner.Mauve tests");
+ System.out.println("");
+ //System.out.println("parsing classlist");
+
+ final Vector options = new Vector();
+ final TreeSet sorted = new TreeSet();
+
+ readTestList(new LineProcessor() {
+ public void processLine(StringBuffer buf) {
+ if(buf.indexOf("[") == 0 && buf.charAt(buf.length()-1) == ']') {
+ String token = buf.substring(1, buf.length()-1);
+ if(token.startsWith("JDK"))
+ sorted.add(token);
+ else
+ options.add(token);
+ }
+ }
+ });
+
+ //System.out.println("done");
+ System.out.println("Please pick one:");
+ final StringBuffer buf = new StringBuffer();
+ int i=1;
+ Iterator iter = sorted.iterator();
+ while(iter.hasNext()) {
+ buf.append(String.valueOf(i++));
+ buf.append(": ");
+ buf.append(iter.next().toString());
+ if(iter.hasNext())
+ buf.append(", ");
+ else
+ buf.append("? ");
+ }
+ String answer = ask(buf.toString());
+ final String which;
+ try {
+ int index = Integer.parseInt(answer);
+ which = (String) new ArrayList(sorted).get(index-1);
+ } catch(NumberFormatException e) {
+ System.out.println("No parsable answer found");
+ System.exit(-1);
+ return;
+ } catch(Exception e) {
+ System.out.println("Sorry; I'm not sure I understand you, bailing out");
+ System.exit(-1);
+ return;
+ }
+
+ Iterator opsIter = new Vector(options).iterator();
+ final List choosedOptions = new Vector();
+ while(opsIter.hasNext()) {
+ String option = (String) opsIter.next();
+ answer = ask("Use classes with option: "+ option +"? [yN] ");
+ if("y".equalsIgnoreCase(answer))
+ choosedOptions.add(option);
+ }
+
+ System.out.println("Writing all tests for "+ which +" to 'tests'");
+
+ final Set tests = new TreeSet();
+
+ readTestList(new LineProcessor() {
+ private boolean valid=true;
+
+ public void processLine(StringBuffer buf) {
+ if(buf.charAt(0) == '[') {
+ String newVer = buf.substring(1, buf.length()-1);
+ if(newVer.startsWith("JDK")) {
+ if(which.compareTo(newVer) < 0)
+ valid=false;
+ } else
+ valid= choosedOptions.contains(newVer);
+ }
+ else if(valid && buf.charAt(0) == '-')
+ tests.remove(buf.substring(1));
+ else if (valid)
+ tests.add(buf.toString());
+ else
+ tests.remove(buf.toString());
+ }
+ });
+
+ PrintWriter writer = new PrintWriter(new FileOutputStream(new File("tests")));
+ iter = tests.iterator();
+ while(iter.hasNext())
+ writer.println(iter.next().toString());
+ writer.close();
+ }
+
+ public static interface LineProcessor {
+ void processLine(StringBuffer buf);
+ }
+
+ public static void readTestList(LineProcessor processor) throws IOException {
+ InputStream in = Filter.class.getResourceAsStream("/testslists");
+ StringBuffer buf = new StringBuffer();
+ while(true) {
+ int character = in.read();
+ if(character == -1)
+ break;
+ if(character == '\n') {
+ if(buf.length() == 0)
+ continue;
+ processor.processLine(buf);
+ buf.setLength(0); // clear buffer
+ }
+ else
+ buf.append((char) character);
+ }
+ }
+
+ private static String ask(String question) throws IOException {
+ System.out.write(question.getBytes());
+
+ StringBuffer answer = new StringBuffer();
+ while(true) {
+ int ch = System.in.read();
+ if (ch < 0 || ch == '\n')
+ return answer.toString().trim();
+ if (ch == '\r') continue;
+ answer.append((char) ch);
+ }
+ }
+}
diff --git a/gnu/testlet/runner/HTMLGenerator.java b/gnu/testlet/runner/HTMLGenerator.java
new file mode 100644
index 00000000..da67e1b2
--- /dev/null
+++ b/gnu/testlet/runner/HTMLGenerator.java
@@ -0,0 +1,420 @@
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Peter Barth (peda@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Iterator;
+
+/**
+ * Generates a collection of HTML files that summarise the results
+ * of a Mauve run. This is a quick-and-dirty implementation!!
+ */
+public class HTMLGenerator {
+
+ /**
+ * Creates an HTML report in the specified directory.
+ *
+ * @param run the Mauve run results.
+ * @param rootDirectory the root directory.
+ */
+ public static void createReport(RunResult run, File rootDirectory) throws IOException {
+ // write basic HTML with info about package
+ File summaryFile = new File(rootDirectory, "index.html");
+ Writer out = new OutputStreamWriter(new FileOutputStream(summaryFile), "UTF-8");
+ PrintWriter writer = new PrintWriter(out);
+ writer.println("<HTML>");
+ writer.println("<HEAD><TITLE>Mauve Run: " + run.getName() + "</TITLE>");
+ writer.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></HEAD>");
+ writer.println("<BODY>");
+ writer.println("<h1>Mauve Run</h1>");
+ writer.println("<h2>Summary:</h2>");
+ int checkCount = run.getCheckCount();
+ int passed = run.getCheckCount(true);
+ int failed = checkCount - passed;
+ writer.println("Run Date: " + DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(new Date()) + "<br>");
+ writer.println("Passed: " + passed + "<br>");
+ writer.println("Failed: " + failed + "<p>");
+
+ writer.println("<h2>Environment:</h2>");
+
+ writer.println("<table BORDER=\"0\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">Property:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Value:</td>");
+ writer.println("</tr>");
+
+ String[] propertyNames = run.getSystemPropertyNames();
+ for (int i = 0; i < propertyNames.length; i++) {
+ String name = propertyNames[i];
+ writePropertyRow(name, run.getSystemProperty(name), writer);
+ }
+
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table><p>");
+
+ writer.println("<h2>Results:</h2>");
+
+ writer.println("<table BORDER=\"0\" width=\"100%\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">Package:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Passed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Failed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Total:</td>");
+ writer.println("</tr>");
+
+ // loop through tests writing test results
+ String top = null;
+ Iterator iterator = run.getPackageIterator();
+ while (iterator.hasNext()) {
+ PackageResult packageResult = (PackageResult) iterator.next();
+ String packageName = packageResult.getName().replace('.', '/');
+ String name;
+ System.out.println("Generating " + packageName);
+ if(top != null && packageName.startsWith(top))
+ name = "&nbsp;&nbsp;&nbsp;+&nbsp;"+ packageName.substring(top.length()+1);
+ else {
+ top = packageName;
+ name = packageName;
+ }
+ // (1) write the summary line for the class HTML file
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"white\"><a href=\"" + packageName + "/package_index.html\"" + ">" + name + "</a></td>");
+ writer.println("<td bgcolor=\"white\">" + packageResult.getCheckCount(true) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + packageResult.getCheckCount(false) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + packageResult.getCheckCount() + "</td>");
+ writer.println("</tr>");
+ // (2) generate an HTML page for the test and subfiles
+ // for the tests
+ try {
+ HTMLGenerator.createPackageReport(packageResult, rootDirectory);
+ } catch (Exception e) {
+ String temp = packageResult.getName().replace('.', '/');
+ System.err.println("Couldn't create package report for " + temp);
+ File tempDir = new File(rootDirectory, packageName);
+ tempDir.mkdirs();
+ File tempFile = new File(tempDir, "package_index.html");
+ tempFile.createNewFile();
+ }
+ }
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table>");
+ writer.println("<p>");
+ Iterator missing = run.getMissingTestsIterator();
+ Iterator failures = run.getFaultyTestsIterator();
+ if(missing.hasNext() || failures.hasNext()) {
+ writer.println("<h2>Unrunnable tests:</h2>");
+
+ writer.println("<table BORDER=\"0\" width=\"100%\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">name:</td>");
+ writer.println("<td bgcolor=\"lightGray\">problem:</td>");
+ writer.println("</tr>");
+ while(missing.hasNext())
+ writer.println("<tr><td bgcolor=\"white\">"+ (String) missing.next()+
+ "</td><td bgcolor=\"white\">Class not found</td></tr>");
+ while(failures.hasNext()) {
+ String[] fail = (String[]) failures.next();
+ writer.println("<tr><td bgcolor=\"white\">"+ fail[0] +"</td><td bgcolor=\"white\">"+
+ fail[1] +"</td></tr>");
+ }
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table>");
+ }
+
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ writer.close();
+ }
+
+ /**
+ * Writes a row in a table for a pair of strings.
+ *
+ * @param property the property key.
+ * @param value the property value.
+ * @param writer the output stream.
+ */
+ private static void writePropertyRow(String property, String value, PrintWriter writer) {
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"white\">" + property + "</td>");
+ writer.println("<td bgcolor=\"white\">" + value + "</td>");
+ writer.println("</tr>");
+ }
+
+ /**
+ * Returns the number of directory levels in the specified package name.
+ *
+ * @param name the name.
+ *
+ * @return The number of directory levels.
+ */
+ private static int countLevels(String name) {
+ int result = 1;
+ for (int i = 0; i < name.length(); i++) {
+ if (name.charAt(i) == '/') result++;
+ }
+ return result;
+ }
+
+ /**
+ * Creates an HTML page that summaries a package, and processes all the classes within
+ * the package.
+ *
+ * @param packageResult the package result.
+ * @param rootDirectory the root directory.
+ */
+ public static void createPackageReport(PackageResult packageResult, File rootDirectory) throws IOException {
+ // create directory for package
+ String packageName = packageResult.getName().replace('.', '/');
+ String prefix = "";
+ int levels = countLevels(packageName);
+ for (int i = 0; i < levels; i++)
+ prefix += "../";
+ File packageDirectory = new File(rootDirectory, packageName);
+ packageDirectory.mkdirs();
+
+ // write basic HTML with info about package
+ File summaryFile = new File(packageDirectory, "package_index.html");
+ OutputStream out = new BufferedOutputStream(new FileOutputStream(summaryFile));
+ PrintWriter writer = new PrintWriter(out);
+ writer.println("<HTML>");
+ writer.println("<HEAD><TITLE>Package Summary: " + packageResult.getName() + "</TITLE></HEAD>");
+ writer.println("<BODY>");
+ writer.println("<h2>Package: " + packageResult.getName() + "</h2>");
+ writer.println("<a href=\"" + prefix + "index.html\">Summary page</a><p>");
+ int checkCount = packageResult.getCheckCount();
+ int passed = packageResult.getCheckCount(true);
+ int failed = checkCount - passed;
+ writer.println("Passed: " + passed + "<br>");
+ writer.println("Failed: " + failed + "<p>");
+ writer.println("<table BORDER=\"0\" width=\"100%\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">Class:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Passed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Failed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Total:</td>");
+ writer.println("</tr>");
+
+ // loop through tests writing test results
+ Iterator iterator = packageResult.getClassIterator();
+ while (iterator.hasNext()) {
+ ClassResult classResult = (ClassResult) iterator.next();
+ // (1) write the summary line for the class HTML file
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"white\"><a href=\"" + classResult.getName() + "/class_index.html\"" + ">" + classResult.getName() + "</a></td>");
+ writer.println("<td bgcolor=\"white\">" + classResult.getCheckCount(true) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + classResult.getCheckCount(false) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + classResult.getCheckCount() + "</td>");
+ writer.println("</tr>");
+ // (2) generate an HTML page for the test and subfiles
+ // for the tests
+ HTMLGenerator.createClassReport(classResult, packageResult.getName(), packageDirectory);
+ }
+ // close the class file
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table>");
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ writer.close();
+ }
+
+ /**
+ * Creates an HTML page summarising the results for a class, and processes all the tests for
+ * the class.
+ *
+ * @param classResult the class results.
+ * @param packageName the package name.
+ * @param packageDirectory the package directory.
+ */
+ public static void createClassReport(ClassResult classResult, String packageName, File packageDirectory) throws IOException {
+ // create directory for class
+ File classDirectory = new File(packageDirectory, classResult.getName());
+ classDirectory.mkdirs();
+
+ // write basic HTML with info about class
+ File testFile = new File(classDirectory, "class_index.html");
+ OutputStream out = new BufferedOutputStream(new FileOutputStream(testFile));
+ PrintWriter writer = new PrintWriter(out);
+ writer.println("<HTML>");
+ writer.println("<HEAD><TITLE>Class Summary: " + packageName + "." + classResult.getName() + "</TITLE></HEAD>");
+ writer.println("<BODY>");
+ writer.println("<h2>Class: " + "<a href=\"../package_index.html\">" + packageName +"</a>." + classResult.getName() + "</h2>");
+ int checkCount = classResult.getCheckCount();
+ int passed = classResult.getCheckCount(true);
+ int failed = checkCount - passed;
+ writer.println("Passed: " + passed + "<br>");
+ writer.println("Failed: " + failed + "<p>");
+ writer.println("<table BORDER=\"0\" width=\"100%\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">Test:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Passed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Failed:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Total:</td>");
+ writer.println("</tr>");
+
+ // loop through tests writing test results
+ Iterator iterator = classResult.getTestIterator();
+ while (iterator.hasNext()) {
+ TestResult testResult = (TestResult) iterator.next();
+ // (1) write the summary line for the class HTML file
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"white\"><a href=\"" + testResult.getName() + ".html\"" + ">" + testResult.getName() + "</a></td>");
+ writer.println("<td bgcolor=\"white\">" + testResult.getCheckCount(true) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + testResult.getCheckCount(false) + "</td>");
+ writer.println("<td bgcolor=\"white\">" + testResult.getCheckCount() + "</td>");
+ writer.println("</tr>");
+ // (2) generate an HTML page for the test and subfiles
+ // for the tests
+ HTMLGenerator.createTestReport(testResult, classResult.getName(), classDirectory);
+ }
+ // close the class file
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table>");
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ writer.close();
+ }
+
+ /**
+ * Creates an HTML page that summarises a test.
+ *
+ * @param testResult the test result.
+ * @param className the class name.
+ * @param classDirectory the class directory.
+ */
+ public static void createTestReport(TestResult testResult, String className, File classDirectory) throws IOException {
+
+ // write basic HTML for test
+ File testFile = new File(classDirectory, testResult.getName() + ".html");
+ Writer out = new OutputStreamWriter(new FileOutputStream(testFile), "UTF-8");
+ PrintWriter writer = new PrintWriter(out);
+ writer.println("<HTML>");
+ writer.println("<HEAD><TITLE>Test Summary: " + className + "." + testResult.getName() + "</TITLE>\n");
+ writer.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></HEAD>");
+ writer.println("<BODY>");
+ writer.println("<h2>Test: <a href=\"class_index.html\">" + className + "</a>." + testResult.getName() + "</h2>");
+ int checkCount = testResult.getCheckCount();
+ int passed = testResult.getCheckCount(true);
+ int failed = checkCount - passed;
+ writer.println("Passed: " + passed + "<br>");
+ writer.println("Failed: " + failed + "<p>");
+ writer.println("<table BORDER=\"0\" width=\"100%\" CELLPADDING=\"0\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"black\" VALIGN=\"TOP\">");
+ writer.println("<table BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"1\" CELLPADDING=\"3\">");
+ writer.println("<tr>");
+ writer.println("<td bgcolor=\"lightGray\">Check Number:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Check Point:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Passed?:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Expected:</td>");
+ writer.println("<td bgcolor=\"lightGray\">Actual:</td>");
+ writer.println("</tr>");
+
+ // loop through checks adding a summary line for each check
+ Iterator iterator = testResult.getCheckIterator();
+ while (iterator.hasNext()) {
+ CheckResult check = (CheckResult) iterator.next();
+ // write a summary line (ID, pass/fail, actual, expected);
+ writer.println("<tr><td bgcolor=\"white\">" + check.getNumber() +
+ "</td><td bgcolor=\"white\">" + check.getCheckPoint() +
+ "</td><td bgcolor=\"" + (check.getPassed() ? "white" : "red") + "\">" +
+ check.getPassed() + "</td><td bgcolor=\"white\">" + check.getExpected() +
+ "</td><td bgcolor=\"white\">" + check.getActual() + "</td>");
+ if (!check.getPassed()) {
+ try {
+ createLogReport(check, className, testResult.getName(), classDirectory);
+ } catch (Exception e) {
+ System.err.println("Couldn't write report for class " + className);
+ File temp = new File(classDirectory, testResult.getName() + "_log.html");
+ temp.createNewFile();
+ }
+ }
+ writer.println("</td>");
+ writer.println("</tr>");
+ }
+ writer.println("</table>");
+ writer.println("</td>");
+ writer.println("</tr>");
+ writer.println("</table>");
+ if(testResult.isFailed()) {
+ writer.println("<h2>Run aborted due to exception</h2>");
+ writer.println("<pre>"+ testResult.getFailedMessage() +"</pre>");
+ }
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ writer.close();
+ }
+
+ /**
+ * Creates an HTML page that summarises the log for a check.
+ *
+ * @param checkResult the test result.
+ * @param className the class name.
+ * @param testName the test name.
+ * @param classDirectory the class directory.
+ */
+ public static void createLogReport(CheckResult checkResult, String className, String testName, File classDirectory) throws IOException {
+ // write basic HTML for test
+ File logFile = new File(classDirectory, testName + "_log.html");
+ OutputStream out = new BufferedOutputStream(new FileOutputStream(logFile));
+ PrintWriter writer = new PrintWriter(out);
+ writer.println("<HTML>");
+ writer.println("<HEAD><TITLE>Log: " + testName + "</TITLE>");
+ writer.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></HEAD>");
+ writer.println("<BODY>");
+ writer.println(checkResult.getLog());
+ writer.println("</BODY>");
+ writer.println("</HTML>");
+ writer.close();
+ }
+}
diff --git a/gnu/testlet/runner/Mauve.java b/gnu/testlet/runner/Mauve.java
new file mode 100644
index 00000000..a3c48042
--- /dev/null
+++ b/gnu/testlet/runner/Mauve.java
@@ -0,0 +1,620 @@
+// Copyright (C) 2004, 2005 by Object Refinery Limited
+// Copyright (C) 2005 by <zander@kde.org>
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Written by Thomas Zander <zander@kde.org>
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// 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, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.runner;
+
+import gnu.testlet.ResourceNotFoundException;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.util.Locale;
+
+/**
+ * An application that runs a collection of Mauve tests and creates a report
+ * summarizing the results.
+ */
+public class Mauve extends TestHarness
+{
+ protected String lastCheckPoint;
+ protected int checksSinceLastCheckPoint;
+ protected ClassResult classResult;
+ protected TestResult currentTest;
+ protected CheckResult currentCheck;
+ protected RunResult result;
+
+ /**
+ * runs tests
+ *
+ * @param file the text file containing test class names.
+ * @param prefix the prefix for each test class (usually 'gnu.testlet').
+ * @param output the name of the directory for writing output.
+ */
+ public synchronized void execute(String file, String prefix, String output)
+ {
+ // save the default locale, some tests change the default and we want
+ // to restore it before generating the HTML report...
+ Locale savedLocale = Locale.getDefault();
+ File out = new File(output);
+ if (out.exists() && !out.isDirectory())
+ throw new IllegalArgumentException("Output should be a directory");
+ if (!out.exists())
+ out.mkdirs();
+
+ result = new RunResult("Mauve Test Run");
+ addSystemProperties(result);
+ currentCheck = new CheckResult(0, false);
+ // initialize
+ // run tests and collect results
+ File f = new File(file);
+ try
+ {
+ FileReader testsToRun = new FileReader(f);
+ LineNumberReader r = new LineNumberReader(testsToRun);
+ while (r.ready())
+ {
+ String line = r.readLine();
+ executeLine(prefix, line);
+ }
+ }
+ catch (FileNotFoundException e)
+ {
+ throw new IllegalArgumentException(e.getMessage());
+ }
+ catch (IOException e) {
+ e.printStackTrace(System.out);
+ }
+
+ // tests are complete so restore the default locale
+ Locale.setDefault(savedLocale);
+
+ writeHTMLReport(out);
+ writeXMLReport(out);
+ System.out.println("DONE!");
+ }
+
+ /**
+ * Add the most interesting system properties to describe the virtual machine
+ * being tested. Developers using Mauve APIs can also add their own (specific)
+ * properties by calling {@link RunResult#setSystemProperty(String, String)}.
+ * @param runResult The RunResult to which add system properties.
+ */
+ protected void addSystemProperties(RunResult runResult) {
+ runResult.setSystemProperty("java.version", System.getProperty("java.version"));
+ runResult.setSystemProperty("java.vendor", System.getProperty("java.vendor"));
+ runResult.setSystemProperty("java.vendor.url", System.getProperty("java.vendor.url"));
+ runResult.setSystemProperty("os.name", System.getProperty("os.name"));
+ runResult.setSystemProperty("os.arch", System.getProperty("os.arch"));
+ runResult.setSystemProperty("os.version", System.getProperty("os.version"));
+
+ runResult.setSystemProperty("java.vm.specification.version", System.getProperty("java.vm.specification.version"));
+ runResult.setSystemProperty("java.vm.specification.vendor", System.getProperty("java.vm.specification.vendor"));
+ runResult.setSystemProperty("java.vm.specification.name", System.getProperty("java.vm.specification.name"));
+ runResult.setSystemProperty("java.vm.version", System.getProperty("java.vm.version"));
+ runResult.setSystemProperty("java.vm.vendor", System.getProperty("java.vm.vendor"));
+ runResult.setSystemProperty("java.vm.name", System.getProperty("java.vm.name"));
+ runResult.setSystemProperty("java.specification.version", System.getProperty("java.specification.version"));
+ runResult.setSystemProperty("java.specification.vendor", System.getProperty("java.specification.vendor"));
+ runResult.setSystemProperty("java.specification.name", System.getProperty("java.specification.name"));
+ runResult.setSystemProperty("java.class.version", System.getProperty("java.class.version"));
+ }
+
+ /**
+ * Execute a single line of a stream, which might or might not be the name of
+ * a mauve test (testlet).
+ * @param prefix
+ * @param line The line to execute.
+ */
+ protected void executeLine(String prefix, String line) {
+ if ((line == null) || (line.trim().length() == 0)) {
+ return;
+ }
+
+ System.out.println(line);
+ // check the line is not commented
+ // load the listed class
+ try
+ {
+ Class c = Class.forName(line);
+ // strip prefix ('gnu.testlet.') from front of name
+ String temp = line.substring(prefix.length());
+ // suffix is the name for the TestResult
+ String testName = temp.substring(temp.lastIndexOf('.') + 1);
+
+ temp = temp.substring(0, temp.lastIndexOf('.'));
+ String className = temp.substring(temp.lastIndexOf('.') + 1);
+ if (className.equals("Double") || className.equals("Float")
+ || className.equals("Key"))
+ {
+ if (!temp.startsWith("java.lang."))
+ {
+ temp = temp.substring(0, temp.lastIndexOf('.'));
+ className = temp.substring(temp.lastIndexOf('.') + 1)
+ + '.' + className;
+ }
+ }
+
+ String packageName = "default package";
+ int index = temp.lastIndexOf('.');
+ if (index >= 0)
+ packageName = temp.substring(0, temp.lastIndexOf('.'));
+ // remaining suffix is name for ClassResult
+ // rest of text is name for PackageResult
+ PackageResult pr = result.getPackageResult(packageName);
+ if (pr == null)
+ pr = new PackageResult(packageName);
+ classResult = pr.getClassResult(className);
+ if (classResult == null)
+ classResult = new ClassResult(className);
+
+ Testlet testlet = createTestlet(c, line);
+ if (testlet != null) {
+ runTestlet(testlet, pr, testName);
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ System.err.println("Could not load test: "+ line);
+ result.addMissingTest(line);
+ }
+ }
+
+ /**
+ * Execute a testlet.
+ * @param testlet The {@link Testlet} to execute.
+ * @param pr The name of the {@link PackageResult} to which the testlet belong.
+ * @param testName The name used to describe the associated {@link TestResult}.
+ */
+ protected void runTestlet(Testlet testlet, PackageResult pr, String testName) {
+ currentTest = new TestResult(testName);
+ checksSinceLastCheckPoint = 0;
+ lastCheckPoint = "-";
+ try
+ {
+ testlet.test(this);
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace(System.out);
+ currentTest.failed(t);
+ }
+ classResult.add(currentTest);
+ if (pr.indexOf(classResult) < 0)
+ pr.add(classResult);
+ if (result.indexOf(pr) == -1)
+ result.add(pr);
+ }
+
+ /**
+ * Get the result of a mauve run.
+ * @return The {@RunResult} describing the results of a mauve run.
+ */
+ protected RunResult getResult() {
+ return result;
+ }
+
+ /**
+ * Creates a new testlet instancen given by its class name.
+ * @param c The class to instanciate, which should be a child class
+ * of {@link Testlet}.
+ * @param line The line giving the name of the testlet (used for error reporting).
+ * @return an instance of the given testlet.
+ */
+ protected Testlet createTestlet(Class c, String line) {
+ Testlet testlet = null;
+ try
+ {
+ testlet = (Testlet) c.newInstance();
+ }
+ catch (ClassCastException e)
+ {
+ System.err.println("Not a test (does not implement Testlet): "
+ + line);
+ result.addFaultyTest(line, "Does not implement Testlet");
+ // not a test
+ }
+ catch (Throwable t)
+ { // instanciation errors etc..
+ t.printStackTrace(System.out);
+ result.addFaultyTest(line, t.getMessage());
+ }
+ return testlet;
+ }
+
+ /**
+ * Write the results to an HTML report in the given output directory.
+ * @param outputDir The output directory used to put the HTML report.
+ */
+ protected void writeHTMLReport(File outputDir) {
+ // write results to HTML
+ System.out.println("Creating HTML report...");
+ try
+ {
+ HTMLGenerator.createReport(result, outputDir);
+ }
+ catch (IOException e)
+ {
+ System.out.println("failed to write HTML due to following error:");
+ e.printStackTrace(System.out);
+ }
+ }
+
+ /**
+ * Write the results to an XML report in the given output directory.
+ * @param outputDir The output directory used to put the XML report.
+ */
+ protected void writeXMLReport(File outputDir) {
+ System.out.println("Creating XML report...");
+ try
+ {
+ File fx = new File(outputDir, "results.xml");
+ new XMLReportWriter(true).write(result, fx);
+ System.out.println("XML file written to " + fx.getAbsolutePath());
+ }
+ catch (IOException e)
+ {
+ System.out.println("failed to write XML due to following error:");
+ e.printStackTrace(System.out);
+ }
+ }
+
+ /**
+ * Records the result of a boolean check.
+ *
+ * @param result the result.
+ */
+ public void check(boolean result)
+ {
+ currentCheck.setPassed(result);
+ checkDone();
+ }
+
+ /**
+ * Checks the two objects for equality and records the result of
+ * the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(Object result, Object expected)
+ {
+ currentCheck.setPassed( (result != null) ? result.equals(expected)
+ : (expected == null));
+ currentCheck.setActual((result != null) ? result.toString() : "null");
+ currentCheck.setExpected((expected != null) ? expected.toString() : "null");
+ checkDone();
+ }
+
+ /**
+ * Checks two booleans for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(boolean result, boolean expected)
+ {
+ currentCheck.setPassed(result == expected);
+ currentCheck.setActual(String.valueOf(result));
+ currentCheck.setExpected(String.valueOf(expected));
+ checkDone();
+ }
+
+ /**
+ * Checks two ints for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(int result, int expected)
+ {
+ currentCheck.setPassed(result == expected);
+ currentCheck.setActual(String.valueOf(result));
+ currentCheck.setExpected(String.valueOf(expected));
+ checkDone();
+ }
+
+ /**
+ * Checks two longs for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(long result, long expected)
+ {
+ currentCheck.setPassed(result == expected);
+ currentCheck.setActual(String.valueOf(result));
+ currentCheck.setExpected(String.valueOf(expected));
+ checkDone();
+ }
+
+ /**
+ * Checks two doubles for equality and records the result of the check.
+ *
+ * @param result the actual result.
+ * @param expected the expected result.
+ */
+ public void check(double result, double expected)
+ {
+ currentCheck.setPassed((result == expected
+ ? (result != 0) || (1/result == 1/expected)
+ : (result != result) && (expected != expected)));
+ currentCheck.setActual(String.valueOf(result));
+ currentCheck.setExpected(String.valueOf(expected));
+ checkDone();
+ }
+
+ /**
+ * Records a check point. This can be used to mark a known place in a
+ * testlet. It is useful if you have a large number of tests -- it makes
+ * it easier to find a failing test in the source code.
+ *
+ * @param name the check point name.
+ */
+ public void checkPoint(String name)
+ {
+ lastCheckPoint = name;
+ checksSinceLastCheckPoint = 0;
+ }
+
+ /**
+ * Method called when a checkpoint has been reached.
+ */
+ private void checkDone()
+ {
+ currentCheck.setNumber(++checksSinceLastCheckPoint);
+ currentCheck.setCheckPoint(lastCheckPoint);
+ currentTest.add(currentCheck);
+ currentCheck = new CheckResult(0, false);
+ currentCheck.setCheckPoint(lastCheckPoint);
+ }
+
+ /**
+ * Writes a message to the debug log along with a newline.
+ *
+ * @param message the message.
+ */
+ public void debug(String message)
+ {
+ debug(message, true);
+ }
+
+ /**
+ * Writes a message to the debug log with or without a newline.
+ *
+ * @param message the message.
+ * @param newline a flag to control whether or not a newline is added.
+ */
+ public void debug(String message, boolean newline)
+ {
+ currentCheck.appendToLog(message);
+ if (newline)
+ currentCheck.appendToLog("\n");
+ }
+
+ /**
+ * Writes the contents of an array to the log.
+ *
+ * @param o the array of objects.
+ * @param desc the description.
+ */
+ public void debug(Object[] o, String desc)
+ {
+ StringBuffer logMessage = new StringBuffer();
+ logMessage.append("Object array: ");
+ logMessage.append(desc);
+ if (o == null)
+ logMessage.append("null");
+ else
+ expand(o, logMessage);
+ currentCheck.appendToLog(logMessage.toString());
+ currentCheck.appendToLog("\n");
+ }
+
+ /**
+ * recursive helper method for debug(Object[], String)
+ * @param array
+ * @param buf
+ */
+ private void expand(Object[] array, StringBuffer buf)
+ {
+ for (int i = 0; i < array.length; i++)
+ {
+ buf.append("obj["+ i +"]: ");
+ if (array[i] instanceof Object[])
+ expand((Object[]) array[i], buf);
+ else if (array[i] != null)
+ buf.append(array[i].toString());
+ else
+ buf.append("null");
+ if (i < array.length)
+ buf.append(", ");
+ }
+ }
+
+ /**
+ * Writes a stack trace for the specified exception to the log for the
+ * current check.
+ *
+ * @param ex the exception.
+ */
+ public void debug(Throwable ex)
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ PrintWriter w = new PrintWriter(out, false);
+ ex.printStackTrace(w);
+ w.close();
+ try
+ {
+ out.close();
+ debug(out.toString(), true);
+ }
+ catch (IOException e)
+ {
+ /* this should never happen..*/
+ }
+ }
+
+ /**
+ * This will print a message when in verbose mode.
+ *
+ * @param message the message.
+ */
+ public void verbose(String message)
+ {
+ debug(message, true);
+ }
+
+ public Reader getResourceReader(String name) throws ResourceNotFoundException
+ {
+ return new BufferedReader(new InputStreamReader(getResourceStream(name)));
+ }
+
+ public InputStream getResourceStream(String name)
+ throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length() > 1)
+ throw new Error ("File.separator length is greater than 1");
+ String realName = name.replace('#', File.separator.charAt(0));
+ try
+ {
+ return new FileInputStream(getSourceDirectory() + File.separator
+ + realName);
+ }
+ catch (FileNotFoundException ex) {
+ throw new ResourceNotFoundException(ex.getLocalizedMessage() +
+ ": " + getSourceDirectory() + File.separator + realName);
+ }
+ }
+
+ public String getSourceDirectory ()
+ {
+ return null; // TODO
+ }
+
+ public File getResourceFile (String name) throws ResourceNotFoundException
+ {
+ // The following code assumes File.separator is a single character.
+ if (File.separator.length () > 1)
+ throw new Error ("File.separator length is greater than 1");
+ String realName = name.replace ('#', File.separator.charAt (0));
+ File f = new File(getSourceDirectory() + File.separator + realName);
+ if (!f.exists())
+ {
+ throw new ResourceNotFoundException("cannot find mauve resource file" +
+ ": " + getSourceDirectory() + File.separator + realName);
+ }
+ return f;
+ }
+
+ /**
+ * Provide a directory name for writing temporary files.
+ *
+ * @return The temporary directory name.
+ */
+ public String getTempDirectory()
+ {
+ // TODO
+ return "/tmp";
+ }
+
+ /**
+ * Runs the application to generate an HTML report for a collection
+ * of Mauve tests.
+ *
+ * @param args the command line arguments.
+ */
+ public static void main(String[] args)
+ {
+ // -prefix <package-prefix>
+ // -output <root-directory-for-HTML-output>
+ String file = "tests";
+ String prefix = "gnu.testlet.";
+ String output = "results";
+ for (int i = 0; i < args.length; i++)
+ {
+ String a = args[i];
+ if (a.equals("--prefix") || a.equals("-p"))
+ {
+ if (i < args.length)
+ {
+ prefix = args[i+1];
+ i++;
+ }
+ else
+ {
+ System.err.println("prefix: value missing");
+ return;
+ }
+ }
+ else if (a.equals("--output") || a.equals("-o"))
+ {
+ if (i < args.length)
+ {
+ output = args[i+1];
+ i++;
+ }
+ else
+ {
+ System.err.println("output: value missing");
+ return;
+ }
+ }
+ else if (a.equals("--help") || a.equals("-h"))
+ {
+ System.out.println("Usage: Mauve [options] [inputfile]");
+ System.out.println("reads test-class names from inputfile and executes them;");
+ System.out.println("If no inputfile is passed, then tests.txt will be used");
+ System.out.println(" options:");
+ System.out.println(" --help -h this help");
+ System.out.println(" --output -o the output directory [results]");
+ System.out.println(" --prefix -p package prefix [gnu.testlet]");
+ return;
+ }
+ else
+ file = a;
+ }
+ try
+ {
+ new Mauve().execute(file, prefix, output);
+ }
+ catch (IllegalArgumentException e)
+ {
+ System.err.println(e.getMessage());
+ System.err.println("Try --help for more info");
+ }
+ System.exit(0);
+ }
+}
diff --git a/gnu/testlet/runner/MauveTests.java b/gnu/testlet/runner/MauveTests.java
new file mode 100644
index 00000000..c8f5a6e5
--- /dev/null
+++ b/gnu/testlet/runner/MauveTests.java
@@ -0,0 +1,123 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner;
+
+import gnu.testlet.runner.compare.HTMLComparisonWriter;
+import gnu.testlet.runner.compare.ReportComparator;
+import gnu.testlet.runner.compare.RunComparison;
+import gnu.testlet.runner.compare.TextComparisonWriter;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * Contains a test program for various functions like xml import/export of mauve results,
+ * comparison of 2 mauve results with results saved in xml or html format.
+ *
+ * @author fabien
+ *
+ */
+public class MauveTests {
+
+ public static void main(String[] args) throws IOException {
+ RunResult runResult = createRunResult(1, 2, 0, 3, 1);
+ System.out.println("=========================");
+
+ System.out.println("\n--- writing XML file ---");
+ File f = File.createTempFile("XMLReport", ".xml");
+ f.deleteOnExit();
+ new XMLReportWriter().write(runResult, f);
+ System.out.println("\n--- COMPACT MODE:");
+ new XMLReportWriter(true).write(runResult, new PrintWriter(System.out));
+ System.out.println("\n--- NORMAL MODE:");
+ new XMLReportWriter(false).write(runResult, new PrintWriter(System.out));
+ HTMLGenerator.createReport(runResult, f.getParentFile());
+ System.out.println("========================");
+
+ System.out.println("\n--- parsing XML file ---");
+ RunResult rr = new XMLReportParser().parse(f);
+ System.out.println("rr = " + rr);
+ System.out.println("========================");
+
+ RunResult runResult2 = createRunResult(2, 2, 1, 3, 0);
+ System.out.println("========================\n");
+
+ ReportComparator c = new ReportComparator(runResult, runResult2);
+ RunComparison comp = c.compare();
+
+ System.out.println("\n--- comparison result in text ---");
+ new TextComparisonWriter().write(comp, new PrintWriter(System.out));
+ System.out.println("========================\n");
+
+ System.out.println("\n--- comparison result in html ---");
+ new HTMLComparisonWriter().write(comp, new PrintWriter(System.out));
+ //new HTMLComparisonWriter().write(comp, new File("/tmp/HTMLComparison.html"));
+ System.out.println("========================\n");
+ }
+
+ private static RunResult createRunResult(int runNumber, int nbTestsClass1, int nbPassed1,
+ int nbTestsClass2, int nbPassed2) {
+ String runName = "run" + runNumber;
+ System.out.println("\n--- creating '" + runName + "' ---");
+ RunResult runResult = new RunResult(runName);
+
+ runResult.setSystemProperty("name1", "value1");
+ runResult.setSystemProperty("name2", "value2");
+
+ PackageResult pkg = new PackageResult("package");
+ runResult.add(pkg);
+
+ ClassResult cls = new ClassResult("class1");
+ pkg.add(cls);
+ addTests(cls, "testA", nbTestsClass1, nbPassed1);
+
+ cls = new ClassResult("class2");
+ pkg.add(cls);
+ addTests(cls, "testB", nbTestsClass2, nbPassed2);
+
+ return runResult;
+ }
+
+ private static void addTests(ClassResult cls, String testPrefix, int nbTests, int nbPassed) {
+ TestResult test;
+ for (int i = 0; i < nbTests; i++) {
+ test = new TestResult(testPrefix + i);
+
+ CheckResult check;
+ if (i < nbPassed) {
+ check = new CheckResult(1, true);
+ check.appendToLog("a log with\nmultiple lines");
+
+ test.add(check);
+ } else {
+ check = new CheckResult(1, false);
+ test.add(check);
+ test.failed(new Exception("error" + i, new Exception("nested error")));
+ }
+
+ cls.add(test);
+
+ System.out.print("Added " + test.getName());
+ System.out.print("\t\t" + test.getCheckCount(true));
+ System.out.println("\t\t" + check.getCheckPoint());
+ }
+ }
+}
diff --git a/gnu/testlet/runner/PackageResult.java b/gnu/testlet/runner/PackageResult.java
new file mode 100644
index 00000000..8e05cc39
--- /dev/null
+++ b/gnu/testlet/runner/PackageResult.java
@@ -0,0 +1,162 @@
+// Tags: not-a-test
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Represents the result of running all the tests for a particular package.
+ */
+public class PackageResult implements Comparable, Result {
+
+ /** The name of the package. */
+ private String name;
+
+ /** A list containing results for each class in the package. */
+ private List classResults;
+ private boolean sorted=true;
+
+ /**
+ * Creates a new result, initially empty.
+ *
+ * @param name the class name.
+ */
+ PackageResult(String name) {
+ this.name = name;
+ classResults = new ArrayList();
+ }
+
+ /**
+ * Returns the package name.
+ *
+ * @return The package name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the package name.
+ *
+ * @param name the name.
+ */
+ void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Adds a class result.
+ *
+ * @param result the test result.
+ */
+ public void add(ClassResult result) {
+ classResults.add(result);
+ sorted = false;
+ }
+
+ /**
+ * Returns an iterator that provides access to the class results.
+ *
+ * @return An iterator.
+ */
+ public Iterator getClassIterator() {
+ sortClasses();
+ return classResults.iterator();
+ }
+
+ /**
+ * Returns the class result for the named class.
+ *
+ * @param name the class name.
+ *
+ * @return A class result.
+ */
+ public ClassResult getClassResult(String name) {
+ sortClasses();
+ for (int i = 0; i < classResults.size(); i++) {
+ ClassResult cr = (ClassResult) classResults.get(i);
+ if (cr.getName().equals(name))
+ return cr;
+ }
+ return null;
+ }
+
+ /**
+ * Returns the total number of checks performed for this package.
+ *
+ * @return The check count.
+ */
+ public int getCheckCount() {
+ int result = 0;
+ Iterator iterator = getClassIterator();
+ while (iterator.hasNext()) {
+ ClassResult cr = (ClassResult) iterator.next();
+ result = result + cr.getCheckCount();
+ }
+ return result;
+ }
+
+ /**
+ * Returns the number of checks with the specified status.
+ *
+ * @param passed the check status.
+ *
+ * @return The number of checks passed or failed.
+ */
+ public int getCheckCount(boolean passed) {
+ int result = 0;
+ Iterator iterator = getClassIterator();
+ while (iterator.hasNext()) {
+ ClassResult cr = (ClassResult) iterator.next();
+ result = result + cr.getCheckCount(passed);
+ }
+ return result;
+ }
+
+ /**
+ * Returns the index of the specified result.
+ *
+ * @param result the class result.
+ *
+ * @return The index.
+ */
+ public int indexOf(ClassResult result) {
+ sortClasses();
+ return classResults.indexOf(result);
+ }
+
+ public int compareTo(Object obj) {
+ PackageResult that = (PackageResult) obj;
+ return getName().compareTo(that.getName());
+ }
+
+ /**
+ * Sorts the class results.
+ */
+ private void sortClasses() {
+ if(sorted) return;
+ Collections.sort(classResults);
+ sorted = true;
+ }
+}
diff --git a/gnu/testlet/runner/Result.java b/gnu/testlet/runner/Result.java
new file mode 100644
index 00000000..878ba3cb
--- /dev/null
+++ b/gnu/testlet/runner/Result.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner;
+
+/**
+ * Base interface for a mauve result
+ *
+ * @author fabien
+ *
+ */
+public interface Result {
+ String getName();
+}
diff --git a/gnu/testlet/runner/RunResult.java b/gnu/testlet/runner/RunResult.java
new file mode 100644
index 00000000..9de4afa1
--- /dev/null
+++ b/gnu/testlet/runner/RunResult.java
@@ -0,0 +1,239 @@
+// Tags: not-a-test
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Represents the result of running a collection of Mauve tests.
+ */
+public class RunResult implements Result {
+
+ /** The name of the run. */
+ private String name;
+
+ /** A list containing results for each class in the package. */
+ private List packageResults;
+
+ /** A list containing unfound test-names */
+ private List missingTests = new ArrayList();
+ private List faultyTests = new ArrayList();
+ private boolean sorted=true;
+
+ /**
+ * System properties in which mauve tests are run.
+ * The list is actually of list of couples(name, value), which make it a
+ * kind of order Map.
+ * Example of list content : "name1", "value1", "name2", "value2"
+ */
+ private final List systemProperties;
+
+ /**
+ * Creates a new result, initially empty.
+ *
+ * @param name the class name.
+ */
+ public RunResult(String name) {
+ this.name = name;
+ packageResults = new ArrayList();
+ systemProperties = new ArrayList();
+ }
+
+ /**
+ * Set a system property.
+ * @param name Name of the system property.
+ * @param value Value of the system property.
+ */
+ public void setSystemProperty(String name, String value) {
+ boolean found = false;
+ for (int i = 0; i < systemProperties.size(); i += 2) {
+ if (name.equals((String) systemProperties.get(i))) {
+ systemProperties.set(i + 1, value);
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ systemProperties.add(name);
+ systemProperties.add(value);
+ }
+ }
+
+ /**
+ * Get a system property.
+ * @param name Name of the system property.
+ * @return value Value of the system property.
+ */
+ public String getSystemProperty(String name) {
+ String value = "";
+ for (int i = 0; i < systemProperties.size(); i += 2) {
+ if (name.equals((String) systemProperties.get(i))) {
+ value = (String) systemProperties.get(i + 1);
+ break;
+ }
+ }
+ return value;
+ }
+
+ /**
+ * Get a system property names.
+ * @return array of system property names.
+ */
+ public String[] getSystemPropertyNames() {
+ String[] names = new String[systemProperties.size() / 2];
+ int j = 0;
+ for (int i = 0; i < systemProperties.size(); i += 2) {
+ names[j++] = (String) systemProperties.get(i);
+ }
+ return names;
+ }
+
+ /**
+ * Returns the run name.
+ *
+ * @return The run name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the run name.
+ *
+ * @param name the name.
+ */
+ void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Adds a package result.
+ *
+ * @param result the package result.
+ */
+ public void add(PackageResult result) {
+ packageResults.add(result);
+ sorted =false;
+ }
+
+ /**
+ * Returns an iterator that provides access to the package results.
+ *
+ * @return An iterator.
+ */
+ public Iterator getPackageIterator() {
+ sortPackages();
+ return packageResults.iterator();
+ }
+
+ public Iterator getMissingTestsIterator() {
+ return missingTests.iterator();
+ }
+
+ public Iterator getFaultyTestsIterator() {
+ return faultyTests.iterator();
+ }
+
+ /**
+ * Returns the total number of checks performed for this run.
+ *
+ * @return The check count.
+ */
+ public int getCheckCount() {
+ int result = 0;
+ Iterator iterator = getPackageIterator();
+ while (iterator.hasNext()) {
+ PackageResult pr = (PackageResult) iterator.next();
+ result = result + pr.getCheckCount();
+ }
+ return result;
+ }
+
+ /**
+ * Returns the number of checks with the specified status.
+ *
+ * @param passed the check status.
+ *
+ * @return The number of checks passed or failed.
+ */
+ public int getCheckCount(boolean passed) {
+ int result = 0;
+ Iterator iterator = getPackageIterator();
+ while (iterator.hasNext()) {
+ PackageResult pr = (PackageResult) iterator.next();
+ result = result + pr.getCheckCount(passed);
+ }
+ return result;
+ }
+
+ /**
+ * Returns the index of the specified result, or -1.
+ *
+ * @param pr the package result.
+ *
+ * @return The index.
+ */
+ public int indexOf(PackageResult pr) {
+ sortPackages();
+ return packageResults.indexOf(pr);
+ }
+
+ /**
+ * Returns the package result with the specified name.
+ *
+ * @param name the package name.
+ *
+ * @return The package result, or null when not found.
+ */
+ public PackageResult getPackageResult(String name) {
+ sortPackages();
+ for (int i = 0; i < packageResults.size(); i++) {
+ PackageResult rr = (PackageResult) packageResults.get(i);
+ if (rr.getName().equals(name))
+ return rr;
+ }
+ return null;
+ }
+
+ void addMissingTest(String line) {
+ missingTests.add(line);
+ }
+
+ void addFaultyTest(String line, String failure) {
+ faultyTests.add(new String[] {line, failure});
+ }
+
+ /**
+ * Sorts the package results.
+ */
+ private void sortPackages() {
+ if(sorted) return;
+ Collections.sort(packageResults);
+ sorted = true;
+ }
+}
diff --git a/gnu/testlet/runner/Tags.java b/gnu/testlet/runner/Tags.java
new file mode 100644
index 00000000..6423f471
--- /dev/null
+++ b/gnu/testlet/runner/Tags.java
@@ -0,0 +1,76 @@
+// Tags: not-a-test
+/*
+Copyright (c) 2004, 2005 Thomas Zander <zander@kde.org>
+
+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.runner;
+
+class Tags {
+ boolean gui = false;
+ String fromJDK="1.0", toJDK="99.0";
+ String fromJDBC="1.0", toJDBC="99.0";
+ public Tags(String line) {
+ int start=0;
+ for(int i=0; i <= line.length();i++) {
+ if(i == line.length() || line.charAt(i) == ' ') {
+ if(start < i)
+ process(line.substring(start, i));
+ start = i+1;
+ }
+ }
+
+ }
+ public void process(String token) {
+//System.out.println(" +-- '"+ token +"'");
+ boolean end = token.startsWith("!");
+ if(end)
+ token = token.substring(1);
+ if(token.startsWith("jls") || token.startsWith("jdk")) {
+ String value = token.substring(3);
+ if(end)
+ toJDK = value;
+ else
+ fromJDK = value;
+ }
+ else if(token.startsWith("jdbc")) {
+ String value = token.substring(4);
+ if(end)
+ toJDBC = value;
+ else
+ fromJDBC = value;
+ }
+ else if(token.startsWith("gui"))
+ gui = true;
+ }
+ public boolean isValid(double javaVersion, double JDBCVersion) throws NumberFormatException {
+ if(javaVersion != 0d) {
+ double from = Double.parseDouble(fromJDK);
+ if(from > javaVersion) return false;
+ double end = Double.parseDouble(toJDK);
+ if(end < javaVersion) return false;
+ }
+ if(JDBCVersion != 0d) {
+ double from = Double.parseDouble(fromJDBC);
+ if(from < JDBCVersion) return false;
+ double end = Double.parseDouble(toJDBC);
+ if(end > JDBCVersion) return false;
+ }
+ return true;
+ }
+}
diff --git a/gnu/testlet/runner/TestResult.java b/gnu/testlet/runner/TestResult.java
new file mode 100644
index 00000000..9de5e0e7
--- /dev/null
+++ b/gnu/testlet/runner/TestResult.java
@@ -0,0 +1,144 @@
+// Tags: not-a-test
+// Copyright (C) 2004 by Object Refinery Limited
+// Written by David Gilbert (david.gilbert@object-refinery.com)
+// Modified by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * Represents the result of running one test. A test usually contains multiple
+ * checks and corresponds to a single method in the API being tested. There
+ * are exceptions of course.
+ */
+public class TestResult implements Comparable, Result {
+
+ /** The name of the test (usually the method name). */
+ private String name;
+
+ /** A list containing results for each of the checks applied by the test. */
+ private List checkResults;
+
+ private String error = null;
+
+ /**
+ * Creates a new result, initially empty.
+ * @param name
+ */
+ TestResult(String name) {
+ this.name = name;
+ checkResults = new ArrayList();
+ }
+
+ /**
+ * Returns the test name (this is most often the name of the method
+ * being tested).
+ *
+ * @return The test name.
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the test name.
+ *
+ * @param name the name.
+ */
+ void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Adds a check result.
+ *
+ * @param result the check result.
+ */
+ void add(CheckResult result) {
+ checkResults.add(result);
+ }
+
+ /**
+ * Returns an iterator that provides access to all the check results.
+ *
+ * @return An iterator.
+ */
+ public Iterator getCheckIterator() {
+ return checkResults.iterator();
+ }
+
+ /**
+ * Returns the total number of checks performed by this test.
+ *
+ * @return The check count.
+ */
+ public int getCheckCount() {
+ return checkResults.size();
+ }
+
+ /**
+ * Returns the number of checks with the specified status.
+ *
+ * @param passed the check status.
+ *
+ * @return The number of checks passed or failed.
+ */
+ public int getCheckCount(boolean passed) {
+ int result = 0;
+ Iterator iterator = checkResults.iterator();
+ while (iterator.hasNext()) {
+ CheckResult check = (CheckResult) iterator.next();
+ if (check.getPassed() == passed)
+ result++;
+ }
+ if(!passed && error != null)
+ result++; // count stacktrace as a failure
+ return result;
+ }
+
+ public int compareTo(Object obj) {
+ TestResult that = (TestResult) obj;
+ return getName().compareTo(that.getName());
+ }
+
+ void failed(Throwable t) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ PrintWriter w = new PrintWriter(out, false);
+ t.printStackTrace(w);
+ w.close();
+ try {
+ out.close();
+ error = out.toString();
+ } catch(IOException e) { // this should never happen..
+ }
+ }
+
+ public boolean isFailed() {
+ return error != null;
+ }
+
+ public String getFailedMessage() {
+ return error;
+ }
+
+ public void setFailedMessage(String error) {
+ this.error = error;
+ }
+}
diff --git a/gnu/testlet/runner/TestletToAPI.java b/gnu/testlet/runner/TestletToAPI.java
new file mode 100644
index 00000000..e7aa9682
--- /dev/null
+++ b/gnu/testlet/runner/TestletToAPI.java
@@ -0,0 +1,583 @@
+// Copyright (C) 2005 by <fduminy@jnode.org>
+// Written by Fabien DUMINY (fduminy@jnode.org)
+
+// This file is part of Mauve Reporter.
+
+// Mauve Reporter 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 of the License, or
+// (at your option) any later version.
+
+// Mauve Reporter 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 Reporter; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+package gnu.testlet.runner;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Generate 2 japi files that can be used to show the coverage
+ * (in term of methods, not of lines of code) of mauve testlets
+ */
+public class TestletToAPI
+{
+ private static final String TESTLET_SERIALIZATION = "serialization";
+ private static final String TESTLET_CONSTRUCTORS = "constructors";
+ private static final String TESTLET_CONSTANTS = "constants";
+ private static final String TESTLET_CLASS_SUFFIX = "Class!"; // don't remove the "!" at the end !
+
+ public static void main(String[] args) throws IOException
+ {
+ if(args.length < 4)
+ {
+ usage();
+ return;
+ }
+
+ final String inTestletsFile = args[0];
+ final String inTestedFile = args[1];
+ final String outTestletsFile = args[2];
+ final String outTestedFile = args[3];
+
+ // just insure that all files are differents
+ // that's especially usefull to avoid erasing input files !
+ for(int i = 0 ; i < 4 ; i++)
+ {
+ for(int j = 0 ; j < 4 ; j++)
+ {
+ if((j != i) && args[i].equals(args[j]))
+ throw new IllegalArgumentException("argument #"+i+" and argument #"+j+" are the same");
+ }
+ }
+
+ final Reader inTestlets = new FileReader(inTestletsFile);
+ final Reader inTested = new FileReader(inTestedFile);
+ final Writer outTestlets = new FileWriter(outTestletsFile);
+ final Writer outTested = new FileWriter(outTestedFile);
+ convert(inTestlets, inTested, outTestlets, outTested);
+ }
+
+ public static void usage()
+ {
+ System.out.println("usage: TestletToAPI inTestlets.japi inTested.japi outTestlets.japi outTested.japi");
+ System.out.println(" inTestlets.japi: the output of japize on mauve testlets");
+ System.out.println(" inTested.japi: the output of japize on tested api (Classpath, jdk, ...)");
+ System.out.println(" outTestlets.japi, outTested.japi: 2 japi files to be used as input of japicompat");
+ }
+
+ public static void convert(Reader inTestlets, Reader inTested, Writer outTestlets, Writer outTested) throws IOException
+ {
+ final Stats stats = new Stats();
+ final Map methodToFullLine = processTestedAPI(inTested, outTested, stats);
+ processMauveAPI(inTestlets, outTestlets, methodToFullLine, stats);
+
+ System.out.println("=== Statistics ===");
+ System.out.println("NbTestlets:"+stats.getNbTestlets());
+ System.out.println("NbMethods:"+stats.getNbMethods());
+ System.out.println("NbMethodsNotFound:"+stats.getNbMethodsNotFound());
+
+ if(stats.getNbMethods() == 0)
+ System.out.println("Estimated coverage : #ERROR#");
+ else
+ {
+ double ratio = (double) stats.getNbTestlets() / (double) stats.getNbMethods();
+ double percent = ((int)(10000 * ratio)) / 100.0d;
+ System.out.println("Estimated coverage : "+percent+" %");
+ }
+ }
+
+ public static void processMauveAPI(Reader in, Writer out, Map methodToFullLine,
+ Stats stats) throws IOException
+ {
+ BufferedReader reader = null;
+ BufferedWriter writer = null;
+ try
+ {
+ reader = new BufferedReader(in);
+ writer = new BufferedWriter(out);
+ String l;
+ StringBuffer line = new StringBuffer(128);
+ Set testedMethods = new HashSet();
+ boolean firstLine = true;
+ while((l = reader.readLine()) != null)
+ {
+ line.setLength(0); // clear the buffer
+ line.append(l);
+
+ if(firstLine)
+ {
+ writer.write(l);
+ writer.write('\n');
+ firstLine = false;
+ continue;
+ }
+
+ if(!acceptAPILine(line.toString())) continue;
+
+ Line mauveAPI = parseMauveAPILine(line);
+
+ final String methodName = mauveAPI.getMethodName();
+ if(testedMethods.contains(methodName)) continue;
+ testedMethods.add(methodName);
+
+ Line testedAPI = (Line) methodToFullLine.get(methodName);
+ if((testedAPI == null) || (testedAPI == Line.NULL))
+ {
+ System.err.println("method not found in API : "+methodName);
+ stats.incNbMethodsNotFound();
+ continue;
+ }
+
+ String className = testedAPI.getClassName();
+ if(!testedMethods.contains(className))
+ {
+ // first method of the class, add the class declaration line
+ testedMethods.add(className);
+
+ Line classDecl = (Line) methodToFullLine.get(className);
+ if((classDecl == null) || (classDecl == Line.NULL))
+ throw new IllegalStateException(className + " has no declaration");
+
+ writer.write(classDecl.getContent());
+ writer.write('\n');
+ }
+
+ // write the method (or constructors, or constants, or ...) declaration
+ writer.write(testedAPI.getContent());
+ writer.write('\n');
+ stats.inNbTestlets();
+ }
+ }
+ finally
+ {
+ if(reader != null)
+ {
+ reader.close();
+ }
+ if(writer != null)
+ {
+ writer.close();
+ }
+
+ in.close();
+ out.close();
+ }
+ }
+
+ public static Map processTestedAPI(Reader inTested, Writer outTested,
+ Stats stats) throws IOException
+ {
+ Map methodToFullLine = new HashMap();
+ BufferedReader reader = null;
+ BufferedWriter writer = null;
+ try
+ {
+ reader = new BufferedReader(inTested);
+ writer = new BufferedWriter(outTested);
+ String l;
+ StringBuffer line = new StringBuffer(128);
+ boolean firstLine = true;
+ while((l = reader.readLine()) != null)
+ {
+ line.setLength(0); // clear the buffer
+ line.append(l);
+
+ if(firstLine)
+ {
+ firstLine = false;
+ }
+ else if(acceptAPILine(l))
+ {
+ Line parsedLine = parseTestedAPILine(line);
+ String methodName = parsedLine.getMethodName();
+
+ switch(parsedLine.getType())
+ {
+ case Line.CONSTANTS:
+ case Line.CONSTRUCTORS:
+ Line constLine = (Line) methodToFullLine.get(methodName);
+ if((constLine == Line.NULL) || (constLine == null))
+ {
+ methodToFullLine.put(methodName, parsedLine);
+ }
+ else
+ {
+ constLine.append(parsedLine.getContent());
+ }
+ break;
+
+ case Line.CLASS_DECL:
+ if(!methodToFullLine.containsKey(methodName))
+ {
+ methodToFullLine.put(parsedLine.getClassName(), parsedLine);
+
+ if(parsedLine.isSerializable())
+ {
+ // this a serializable class, add a pseudo method
+ String serialMethod = parsedLine.getClassName()+'!'+TESTLET_SERIALIZATION;
+ String serialLine = serialMethod + "() Pcifu V";
+ Line sl = new Line(Line.SERIALIZATION, serialMethod, serialLine, true);
+ methodToFullLine.put(serialMethod, sl);
+
+ // will write 2 lines on output :
+ // 1 for the declaration and 1 for the pseudo method
+ l += "\n" ;
+ if(l.charAt(0) == '+')
+ {
+ if(l.charAt(1) == '+')
+ l += "++";
+ else
+ l += "+";
+ }
+ l += serialLine;
+ stats.incNbMethods(); // 1 extra method (a pseudo method)
+ }
+ }
+ break;
+
+ case Line.SERIALIZATION:
+ throw new IllegalStateException("type SERIALIZATION unexpected here");
+
+ case Line.METHOD:
+ if(!methodToFullLine.containsKey(methodName))
+ {
+ methodToFullLine.put(methodName, parsedLine);
+ }
+ break;
+
+ default:
+ if(parsedLine != Line.NULL)
+ {
+ throw new IllegalStateException("unknown type of line");
+ }
+ } // switch
+ } // if
+
+ writer.write(l);
+ writer.write('\n');
+ stats.incNbMethods();
+ } // while
+ }
+ finally
+ {
+ if(reader != null)
+ {
+ reader.close();
+ }
+ inTested.close();
+
+ if(writer != null)
+ {
+ writer.close();
+ }
+ outTested.close();
+ }
+
+ return methodToFullLine;
+ }
+
+ public static Line parseTestedAPILine(StringBuffer japizeLine)
+ {
+ final String line = japizeLine.toString();
+ boolean isClassDecl = preprocessAPILine(japizeLine);
+ boolean isSerialClassDecl = false;
+ // tested API (Classpath, jdk or something compatible)
+
+ if(!isClassDecl && (japizeLine.indexOf("(") < 0))
+ {
+ // class declared as Serializable ?
+ isSerialClassDecl = (japizeLine.indexOf("class#") >= 0) &&
+ (japizeLine.lastIndexOf("java.io.Serializable") >= 0);
+
+ boolean isNonSerialClassDecl = (japizeLine.indexOf("class:") >= 0);
+ boolean isInterfaceDecl = (japizeLine.indexOf("interface") >= 0);
+ isClassDecl = (isNonSerialClassDecl || isSerialClassDecl || isInterfaceDecl);
+ }
+ if(isClassDecl)
+ {
+ // special case for class declaration (Serializable or not) and
+ // interface declarations
+ int idx = japizeLine.indexOf("!");
+ if(idx < 0) return Line.NULL;
+
+ japizeLine.setLength(idx+1);
+ return new Line(Line.CLASS_DECL, japizeLine.toString(), line, isSerialClassDecl);
+ }
+
+ int idx = japizeLine.indexOf("(");
+ if(idx < 0)
+ {
+ // constant ?
+ idx = japizeLine.indexOf("!#");
+ if(idx < 0) return Line.NULL;
+
+ // special case for constants
+ japizeLine.setLength(idx+1);
+ japizeLine.append(TESTLET_CONSTANTS);
+ return new Line(Line.CONSTANTS, japizeLine.toString(), line);
+ }
+
+ boolean isConstructor = (japizeLine.indexOf("constructor") >= 0);
+ if(isConstructor)
+ {
+ // special case for constructors
+ japizeLine.setLength(idx);
+ japizeLine.append(TESTLET_CONSTRUCTORS);
+ return new Line(Line.CONSTRUCTORS, japizeLine.toString(), line);
+ }
+
+ if(idx >= 0)
+ {
+ // simple method
+ japizeLine.setLength(idx);
+ return new Line(Line.METHOD, japizeLine.toString(), line);
+ }
+
+ return Line.NULL;
+ }
+
+ public static Line parseMauveAPILine(StringBuffer japizeLine)
+ {
+ int type;
+ final String line = japizeLine.toString();
+ preprocessAPILine(japizeLine);
+
+ // mauve test API
+
+ japizeLine.delete(0, "gnu.testlet.".length());
+
+ int idx = japizeLine.indexOf("!");
+ if(idx < 0) return Line.NULL;
+ japizeLine.setLength(idx);
+
+ idx = japizeLine.indexOf(",");
+ if(idx < 0) return Line.NULL;
+ japizeLine.setCharAt(idx, '!');
+
+ idx = japizeLine.lastIndexOf(".");
+ if(idx < 0) return Line.NULL;
+ japizeLine.setCharAt(idx, ',');
+
+ // special case for some classes
+ // (due to case conflicts in filenames under Windows)
+ // example : ColorClass->Color, ...
+ idx = japizeLine.indexOf(TESTLET_CLASS_SUFFIX);
+ if(idx >= 0)
+ {
+ japizeLine.delete(idx, idx+TESTLET_CLASS_SUFFIX.length()-1);
+ }
+
+ if(japizeLine.indexOf(TESTLET_CONSTANTS) >= 0)
+ type = Line.CONSTANTS;
+ else if(japizeLine.indexOf(TESTLET_CONSTRUCTORS) >= 0)
+ type = Line.CONSTRUCTORS;
+ else if(japizeLine.indexOf(TESTLET_SERIALIZATION) >= 0)
+ type = Line.SERIALIZATION;
+ else
+ type = Line.METHOD;
+
+ return new Line(type, japizeLine.toString(), line);
+ }
+
+ public static boolean acceptAPILine(String line)
+ {
+// final String filter = "java.awt.AWTKeyStroke";
+// return line.startsWith("gnu.testlet."+filter) ||
+// line.startsWith(filter);
+
+ boolean isMauveFramework = line.toString().startsWith("gnu.testlet,");
+// return !isMauveFramework &&
+// (line.contains("java.awt.BasicStroke") ||
+// line.contains("java.awt,BasicStroke") );
+ return !isMauveFramework;
+ }
+
+ public static class Stats
+ {
+ private int nbTestlets;
+ private int nbMethods; // include special methods (serialization, constructors, constants, ...)
+ private int nbMethodsNotFound;
+
+ public Stats()
+ {
+ this.nbTestlets = 0;
+ this.nbMethods = 0;
+ this.nbMethodsNotFound = 0;
+ }
+
+ /**
+ * @return Returns the nbMethods.
+ */
+ final int getNbMethods()
+ {
+ return nbMethods;
+ }
+
+ final void incNbMethods()
+ {
+ this.nbMethods++;
+ }
+
+ /**
+ * @return Returns the nbTestlets.
+ */
+ final int getNbTestlets()
+ {
+ return nbTestlets;
+ }
+
+ final void inNbTestlets()
+ {
+ this.nbTestlets++;
+ }
+
+ /**
+ * @return Returns the nbMethodsNotFound.
+ */
+ final int getNbMethodsNotFound()
+ {
+ return nbMethodsNotFound;
+ }
+
+ /**
+ * @param nbMethodsNotFound The nbMethodsNotFound to set.
+ */
+ final void incNbMethodsNotFound()
+ {
+ this.nbMethodsNotFound++;
+ }
+
+
+ }
+
+ public static class Line
+ {
+ public static final Line NULL = new Line();
+
+ private static final int METHOD = 0;
+ private static final int CONSTRUCTORS = 1;
+ private static final int CONSTANTS = 2;
+ private static final int SERIALIZATION = 3;
+ private static final int CLASS_DECL = 4;
+
+ final private int type;
+ final private String className;
+ final private String methodName; // in fact: classname + '!' + methodName
+ final private StringBuffer lines;
+ final private boolean serializable;
+
+ public Line(int type, String methodName, String line)
+ {
+ this(type, methodName, line, false);
+ }
+
+ public Line(int type, String methodName, String line, boolean serializable)
+ {
+ this.type = type;
+ this.methodName = methodName;
+ this.lines = new StringBuffer(line);
+ this.serializable = serializable;
+
+ int idx = methodName.indexOf('!');
+ if(idx < 0) throw new IllegalArgumentException("methodName must contains the '!' character");
+ this.className = methodName.substring(0, idx);
+ }
+
+ public int getType()
+ {
+ return type;
+ }
+
+ public boolean isSerializable()
+ {
+ return serializable;
+ }
+
+ public String getContent()
+ {
+ return lines.toString();
+ }
+
+ private Line()
+ {
+ this.type = -1;
+ this.className = "";
+ this.methodName = "";
+ this.lines = null;
+ this.serializable = false;
+ }
+
+ public void append(String nextLine)
+ {
+ if(!isConstructor() && !isConstant())
+ throw new UnsupportedOperationException("reserved to constructor and constant lines");
+
+ lines.append('\n');
+ lines.append(nextLine);
+ }
+
+ public boolean isConstructor()
+ {
+ return type == CONSTRUCTORS;
+ }
+
+ public boolean isConstant()
+ {
+ return type == CONSTANTS;
+ }
+
+ /**
+ * @return Returns the methodName.
+ */
+ final public String getMethodName()
+ {
+ return methodName;
+ }
+
+ public String getClassName()
+ {
+ return className;
+ }
+
+ public String toString()
+ {
+ return "["+methodName+"]->"+lines.toString();
+ }
+ }
+
+ public static boolean preprocessAPILine(StringBuffer japizeLine)
+ {
+ boolean isClassDecl = false;
+ if(japizeLine.charAt(0) == '+')
+ {
+ if(japizeLine.charAt(1) == '+')
+ {
+ japizeLine.delete(0, 2);
+
+ // declaration of java.lang.Object ?
+ isClassDecl = (japizeLine.toString().endsWith("class"));
+ }
+ else
+ {
+ japizeLine.delete(0, 1);
+ }
+ }
+
+ return isClassDecl;
+ }
+}
diff --git a/gnu/testlet/runner/XMLGenerator.java b/gnu/testlet/runner/XMLGenerator.java
new file mode 100644
index 00000000..79278455
--- /dev/null
+++ b/gnu/testlet/runner/XMLGenerator.java
@@ -0,0 +1,32 @@
+// Tags: not-a-test
+// Copyright (C) 2004 Thomas Zander <zander@kde.org>
+
+// 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.runner;
+
+import java.io.*;
+
+public class XMLGenerator {
+ private RunResult results;
+ public XMLGenerator(RunResult results) {
+ this.results = results;
+ }
+
+ public void generate(File output) throws IOException {
+ }
+}
diff --git a/gnu/testlet/runner/XMLReportConstants.java b/gnu/testlet/runner/XMLReportConstants.java
new file mode 100644
index 00000000..9a1776b4
--- /dev/null
+++ b/gnu/testlet/runner/XMLReportConstants.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner;
+
+
+/**
+ * Constants for tags used by {@link XMLReportParser} and {@link XMLReportWriter}.
+ *
+ * @author fabien
+ *
+ */
+public interface XMLReportConstants {
+ public static final String RUN_RESULT = "run";
+ public static final String RUN_NAME = "name";
+
+ public static final String PROPERTY = "property";
+ public static final String PROPERTY_NAME = "name";
+ public static final String PROPERTY_VALUE = "value";
+
+ public static final String PACKAGE_RESULT = "package";
+ public static final String PACKAGE_NAME = "name";
+
+ public static final String CLASS_RESULT = "class";
+ public static final String CLASS_NAME = "name";
+
+ public static final String TEST_RESULT = "test";
+ public static final String TEST_NAME = "name";
+ public static final String TEST_ERROR = "error";
+
+ public static final String CHECK_RESULT = "check";
+ public static final String CHECK_NUMBER = "number";
+ public static final String CHECK_POINT = "check-point";
+ public static final String CHECK_PASSED = "passed";
+ public static final String CHECK_EXPECTED = "expected";
+ public static final String CHECK_ACTUAL = "actual";
+ public static final String CHECK_LOG = "log";
+}
diff --git a/gnu/testlet/runner/XMLReportParser.java b/gnu/testlet/runner/XMLReportParser.java
new file mode 100644
index 00000000..22dbceab
--- /dev/null
+++ b/gnu/testlet/runner/XMLReportParser.java
@@ -0,0 +1,215 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+// Modified by Levente S\u00e1ntha (lsantha@jnode.org)
+
+// 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.runner;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Enumeration;
+
+import net.sourceforge.nanoxml.XMLElement;
+import net.sourceforge.nanoxml.XMLParseException;
+
+/**
+ * XML parser for mauve reports.
+ *
+ * @author fabien
+ *
+ */
+public class XMLReportParser implements XMLReportConstants {
+ /**
+ * Parse the given file and return the corresponding mauve result.
+ *
+ * @param input
+ * @return
+ * @throws XMLParseException
+ * @throws IOException
+ */
+ public RunResult parse(File input) throws XMLParseException, IOException {
+ return parse(new FileReader(input));
+ }
+
+ /**
+ * Parse the given reader and return the corresponding mauve result.
+ *
+ * @param r
+ * @return
+ * @throws XMLParseException
+ * @throws IOException
+ */
+ public RunResult parse(Reader r) throws XMLParseException, IOException {
+ XMLElement xmlRun = new XMLElement();
+ BufferedReader reader = null;
+
+ try {
+ reader = new BufferedReader(r);
+ xmlRun.parseFromReader(reader);
+
+ checkTag(xmlRun, RUN_RESULT);
+
+ String attr;
+ RunResult run = new RunResult(getValue(xmlRun, RUN_NAME, ""));
+
+ for (Enumeration enumPkg = xmlRun.enumerateChildren(); enumPkg.hasMoreElements(); ) {
+ XMLElement xmlPkg = (XMLElement) enumPkg.nextElement();
+ int indexTag = checkTag(xmlPkg, new String[]{PACKAGE_RESULT, PROPERTY});
+
+ if (indexTag == 1) {
+ String name = getValue(xmlPkg, PROPERTY_NAME, "");
+ String value = getValue(xmlPkg, PROPERTY_VALUE, "");
+ run.setSystemProperty(name, value);
+ continue;
+ }
+
+ attr = getValue(xmlPkg, PACKAGE_NAME, "");
+ PackageResult pkg = new PackageResult(attr);
+ run.add(pkg);
+
+ for (Enumeration enumCls = xmlPkg.enumerateChildren(); enumCls.hasMoreElements(); ) {
+ XMLElement xmlCls = (XMLElement) enumCls.nextElement();
+ checkTag(xmlCls, CLASS_RESULT);
+
+ attr = getValue(xmlCls, CLASS_NAME, "");
+ ClassResult cls = new ClassResult(attr);
+ pkg.add(cls);
+
+ for (Enumeration enumTest = xmlCls.enumerateChildren(); enumTest.hasMoreElements(); ) {
+ XMLElement xmlTest = (XMLElement) enumTest.nextElement();
+ checkTag(xmlTest, TEST_RESULT);
+
+ attr = getValue(xmlTest, TEST_NAME, "");
+ TestResult test = new TestResult(attr);
+ cls.add(test);
+
+ for (Enumeration enumCheck = xmlTest.enumerateChildren(); enumCheck.hasMoreElements(); ) {
+ XMLElement xmlCheck = (XMLElement) enumCheck.nextElement();
+ if (TEST_ERROR.equals(xmlCheck.getName())) {
+ test.setFailedMessage(xmlCheck.getContent());
+ } else {
+ checkTag(xmlCheck, CHECK_RESULT);
+
+ test.add(createCheck(xmlCheck));
+ }
+ }
+ }
+ }
+ }
+
+ return run;
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ }
+ }
+
+ private CheckResult createCheck(XMLElement xmlCheck) {
+ String attr = getValue(xmlCheck, CHECK_NUMBER, "-1");
+ int number = Integer.valueOf(attr).intValue();
+
+ attr = getValue(xmlCheck, CHECK_PASSED, "false");
+ boolean passed = Boolean.valueOf(attr).booleanValue();
+
+ CheckResult check = new CheckResult(number, passed);
+
+ attr = getValue(xmlCheck, CHECK_POINT, "");
+ check.setCheckPoint(attr);
+
+ attr = getValue(xmlCheck, CHECK_EXPECTED, "");
+ check.setExpected(attr);
+
+ attr = getValue(xmlCheck, CHECK_ACTUAL, "");
+ check.setActual(attr);
+
+ // get the log if any
+ if (xmlCheck.countChildren() > 0) {
+ XMLElement firstChild = (XMLElement) xmlCheck.enumerateChildren().nextElement();
+ checkTag(firstChild, CHECK_LOG);
+
+ String content = firstChild.getContent();
+ if (content != null) {
+ check.appendToLog(attr);
+ }
+ }
+
+ return check;
+ }
+
+ /**
+ * Get the value of an xml element's attribute and return the given default
+ * value if the attribute is not defined.
+ * @param xml The xml element for which we want an attribute.
+ * @param attributeName The name of the attribute.
+ * @param defaultValue The default value to return if the attribute is not defined.
+ * @return The value of the xml element's attribute or, if not defined, the given
+ * <code>defaultValue</code> parameter.
+ */
+ private String getValue(XMLElement xml, String attributeName, String defaultValue) {
+ Object attr = xml.getAttribute(attributeName);
+ return (attr == null) ? defaultValue : String.valueOf(attr);
+ }
+
+ /**
+ * Checks that the xml element represents the given tag.
+ * @param xml The xml element to check.
+ * @param tag The tag which is expected.
+ * @throws XMLParseException if the xml element doesn't represent the given tag.
+ */
+ private void checkTag(XMLElement xml, String tag) {
+ final String actualTag = xml.getName();
+ if (!tag.equals(actualTag)) {
+ throw new XMLParseException("", "tag is not '" + tag + "' (actual: '" + actualTag + "')");
+ }
+ }
+
+ /**
+ * Checks that the xml element represents one of the given tags.
+ * @param xml The xml element to check.
+ * @param tag The tags which are expected.
+ * @throws XMLParseException if the xml element doesn't represent one of the given tags.
+ */
+ private int checkTag(XMLElement xml, String[] tags) {
+ final String actualTag = xml.getName();
+ int indexTag = -1;
+ for (int i = 0; i < tags.length; i++) {
+ if (tags[i].equals(actualTag)) {
+ indexTag = i;
+ break;
+ }
+ }
+
+ if (indexTag < 0) {
+ StringBuffer sb = new StringBuffer('(');
+ for (int i = 0; i < tags.length; i++) {
+ if (i > 0) {
+ sb.append(',');
+ }
+ sb.append(tags[i]);
+ }
+ sb.append(')');
+ throw new XMLParseException("", "tag is not one of " + sb.toString() + " (actual: '" + actualTag + "')");
+ }
+
+ return indexTag;
+ }
+}
diff --git a/gnu/testlet/runner/XMLReportWriter.java b/gnu/testlet/runner/XMLReportWriter.java
new file mode 100644
index 00000000..38e159de
--- /dev/null
+++ b/gnu/testlet/runner/XMLReportWriter.java
@@ -0,0 +1,380 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+// Modified by Levente S\u00e1ntha (lsantha@jnode.org)
+
+// 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.runner;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.Iterator;
+
+/**
+ * XML Writer for mauve reports.
+ *
+ * @author fabien
+ *
+ */
+public class XMLReportWriter implements XMLReportConstants {
+ private static final String INDENT = " ";
+ private static final String NOT_APPLIABLE = "n/a";
+
+ /**
+ * Do we write the xml report in compact mode ?
+ * The compact mode is producing unformatted xml, which means that there
+ * is no indentations nor carriage returns (except in <code>log</code>
+ * attributes because they can contain stacktraces).
+ */
+ private final boolean compactMode;
+
+ /**
+ * Constructor to write a formatted xml report.
+ */
+ public XMLReportWriter() {
+ // by default, not in compact mode
+ this(false);
+ }
+
+ /**
+ * Constructor to write an xml report.
+ * @param compactMode true to write the xml report in compact mode.
+ */
+ public XMLReportWriter(boolean compactMode) {
+ this.compactMode = compactMode;
+ }
+
+ /**
+ * Write the given result in xml format.
+ *
+ * @param result
+ * @param output
+ * @throws FileNotFoundException
+ */
+ public void write(RunResult result, File output) throws FileNotFoundException {
+ PrintWriter ps = null;
+
+ try {
+ ps = new PrintWriter(new FileOutputStream(output));
+ write(result, ps);
+ } finally {
+ if (ps != null) {
+ ps.close();
+ }
+ }
+ }
+
+ /**
+ * Write the given result in xml format.
+ *
+ * @param result
+ * @param ps
+ */
+ public void write(RunResult result, PrintWriter ps) {
+ int level = 0;
+ runResult(ps, level, result);
+ level++;
+ for (Iterator itPackage = result.getPackageIterator(); itPackage.hasNext(); ) {
+ PackageResult pkg = (PackageResult) itPackage.next();
+
+ packageResult(ps, level, pkg);
+ level++;
+ for (Iterator itClass = pkg.getClassIterator(); itClass.hasNext(); ) {
+ ClassResult cls = (ClassResult) itClass.next();
+
+ classResult(ps, level, cls);
+ level++;
+ for (Iterator itTest = cls.getTestIterator(); itTest.hasNext(); ) {
+ TestResult test = (TestResult) itTest.next();
+
+ test(ps, level, test);
+ level++;
+ for (Iterator itCheck = test.getCheckIterator(); itCheck.hasNext(); ) {
+ CheckResult check = (CheckResult) itCheck.next();
+
+ check(ps, level, check);
+ }
+ level--;
+ endTag(ps, level, TEST_RESULT);
+
+ }
+ level--;
+ endTag(ps, level, CLASS_RESULT);
+ }
+ level--;
+ endTag(ps, level, PACKAGE_RESULT);
+
+ }
+ level--;
+ endTag(ps, level, RUN_RESULT);
+
+ ps.flush();
+ }
+
+ /**
+ * Write a check tag.
+ * @param ps
+ * @param level
+ * @param check
+ */
+ private void check(PrintWriter ps, int level, CheckResult check) {
+ String log = getNullIfBlank(check.getLog());
+ boolean closeTag = (log == null);
+
+ beginTag(ps, level, CHECK_RESULT, closeTag, new Object[]{CHECK_NUMBER, Integer.valueOf(check.getNumber()),
+ CHECK_POINT, check.getCheckPoint(),
+ CHECK_PASSED, Boolean.valueOf(check.getPassed()),
+ CHECK_EXPECTED, check.getExpected(),
+ CHECK_ACTUAL, check.getActual()});
+
+ if (!closeTag) {
+ text(ps, level + 1, CHECK_LOG, log);
+
+ endTag(ps, level, CHECK_RESULT);
+ }
+ }
+
+ /**
+ * Write a test tag.
+ * @param ps
+ * @param level
+ * @param test
+ */
+ private void test(PrintWriter ps, int level, TestResult test) {
+ beginTag(ps, level, TEST_RESULT, false, new Object[]{TEST_NAME, test.getName()});
+ text(ps, level + 1, TEST_ERROR, test.getFailedMessage());
+ }
+
+ /**
+ * Write a classresult tag.
+ * @param ps
+ * @param level
+ * @param cr
+ */
+ private void classResult(PrintWriter ps, int level, ClassResult cr) {
+ beginTag(ps, level, CLASS_RESULT, false, new Object[]{CLASS_NAME, cr.getName()});
+ }
+
+ /**
+ * Write a package result tag.
+ * @param ps
+ * @param level
+ * @param pr
+ */
+ private void packageResult(PrintWriter ps, int level, PackageResult pr) {
+ beginTag(ps, level, PACKAGE_RESULT, false, new Object[]{PACKAGE_NAME, pr.getName()});
+ }
+
+ /**
+ * Write a run result tag.
+ * @param ps
+ * @param level
+ * @param rr
+ */
+ private void runResult(PrintWriter ps, int level, RunResult rr) {
+ beginTag(ps, level, RUN_RESULT, false, new Object[]{RUN_NAME, rr.getName()});
+
+ String[] propertyNames = rr.getSystemPropertyNames();
+ int subLevel = level + 1;
+ for (int i = 0; i < propertyNames.length; i++) {
+ String name = propertyNames[i];
+ String value = rr.getSystemProperty(name);
+ beginTag(ps, subLevel, PROPERTY, true, new Object[]{PROPERTY_NAME, name, PROPERTY_VALUE, value});
+ }
+ }
+
+ /**
+ * Write a tag with the provided content (text parameter), if any.
+ * @param ps
+ * @param level
+ * @param tag
+ * @param text
+ * @return
+ */
+ private PrintWriter text(PrintWriter ps, int level, String tag, String text) {
+ text = getNullIfBlank(text);
+ if (text != null) {
+ beginTag(ps, level, tag, false, new Object[0]);
+ ps.append(protect(text));
+ appendCarriageReturn(ps);
+ endTag(ps, level, tag);
+ }
+
+ return ps;
+ }
+
+ /**
+ * Write the begin of a tag with the given attributes and optionally close the tag.
+ * @param ps
+ * @param level The level of indentation of the tag (ignored if {@link XMLReportWriter#compactMode} is true).
+ * @param tag The name of the tag.
+ * @param closeTag true to also close the tag.
+ * @param attributes The attributes of the tag.
+ * @return
+ */
+ private PrintWriter beginTag(PrintWriter ps, int level, String tag, boolean closeTag, Object[] attributes) {
+ tag(ps, level, tag, true);
+ for (int i = 0; i < attributes.length; i += 2) {
+ String value = getNullIfBlank(attributes[i + 1]);
+
+ if (value != null) {
+ ps.append(' ').append(String.valueOf(attributes[i]));
+
+ ps.append("=\"").append(protect(value)).append('\"');
+ }
+ }
+
+ ps.append(closeTag ? "/>" : ">");
+
+ appendCarriageReturn(ps);
+ return ps;
+ }
+
+ /**
+ * Replace all characters with the appropriate xml escape sequences when needed.
+ * @param text
+ * @return
+ */
+ public static String protect(String text) {
+ if (text == null) {
+ return text;
+ }
+
+ final int size = text.length();
+ final StringBuilder sb = new StringBuilder(size);
+ boolean changed = false;
+ for (int i = 0; i < size; i++) {
+ final char c = text.charAt(i);
+ switch (c) {
+ case '&' :
+ sb.append("&amp;");
+ changed = true;
+ break;
+
+ case '<' :
+ sb.append("&lt;");
+ changed = true;
+ break;
+
+ case '>' :
+ sb.append("&gt;");
+ changed = true;
+ break;
+
+ case '\'' :
+ sb.append("&apos;");
+ changed = true;
+ break;
+
+ case '"' :
+ sb.append("&quot;");
+ changed = true;
+ break;
+
+ default:
+ sb.append(c);
+ }
+ }
+
+ return changed ? sb.toString() : text;
+ }
+
+ /**
+ * Write the end of a tag.
+ * @param ps
+ * @param level
+ * @param tag
+ * @return
+ */
+ private PrintWriter endTag(PrintWriter ps, int level, String tag) {
+ return tag(ps, level, tag, false);
+ }
+
+ /**
+ * Write the end or the begin of a tag.
+ * @param ps
+ * @param level
+ * @param tag
+ * @param begin
+ * @return
+ */
+ private PrintWriter tag(PrintWriter ps, int level, String tag, boolean begin) {
+ indent(ps, level).append(begin ? "<" : "</").append(tag);
+ if (!begin) {
+ ps.append('>');
+ appendCarriageReturn(ps);
+ }
+
+ return ps;
+ }
+
+ /**
+ * Write a carriage return if {@link XMLReportWriter#compactMode} is false.
+ * @param pw
+ * @return
+ */
+ private PrintWriter appendCarriageReturn(PrintWriter pw) {
+ if (!compactMode) {
+ pw.append('\n');
+ }
+
+ return pw;
+ }
+
+ /**
+ * Write an indentation if {@link XMLReportWriter#compactMode} is false.
+ * @param ps
+ * @param level
+ * @return
+ */
+ private PrintWriter indent(PrintWriter ps, int level) {
+ if (!compactMode) {
+ for (int i = 0; i < level; i++) {
+ ps.print(INDENT);
+ }
+ }
+
+ return ps;
+ }
+
+ /**
+ * Return null if the given string is blank.
+ * @param text
+ * @return
+ */
+ private String getNullIfBlank(Object text) {
+ String result = null;
+
+ if (text != null) {
+ result = text.toString().trim();
+
+ // We assume here that the corresponding attribute
+ // is defaulted to NOT_APPLIABLE when it's null.
+ //
+ // It's the case for CheckResult.getExpected() and
+ // CheckResult.getActual())
+ if (result.isEmpty() || NOT_APPLIABLE.equals(result)) {
+ result = null;
+ }
+ }
+
+ return result;
+ }
+
+}
diff --git a/gnu/testlet/runner/compare/CVS/Entries b/gnu/testlet/runner/compare/CVS/Entries
new file mode 100644
index 00000000..56ecb598
--- /dev/null
+++ b/gnu/testlet/runner/compare/CVS/Entries
@@ -0,0 +1,13 @@
+/ClassComparison.java/1.1/Fri Nov 14 19:51:40 2008//
+/Comparison.java/1.1/Fri Nov 14 19:51:40 2008//
+/ComparisonVisitor.java/1.1/Fri Nov 14 19:51:40 2008//
+/ComparisonWriter.java/1.2/Sun May 17 09:54:32 2009//
+/EvolutionType.java/1.1/Fri Nov 14 19:51:40 2008//
+/EvolutionTypeVisitor.java/1.1/Fri Nov 14 19:51:40 2008//
+/HTMLComparisonWriter.java/1.2/Sun May 17 09:54:32 2009//
+/PackageComparison.java/1.1/Fri Nov 14 19:51:40 2008//
+/ReportComparator.java/1.2/Sun May 17 09:54:32 2009//
+/RunComparison.java/1.2/Sun May 17 09:54:32 2009//
+/TestComparison.java/1.1/Fri Nov 14 19:51:40 2008//
+/TextComparisonWriter.java/1.2/Sun May 17 09:54:32 2009//
+D
diff --git a/gnu/testlet/runner/compare/CVS/Repository b/gnu/testlet/runner/compare/CVS/Repository
new file mode 100644
index 00000000..caa9b457
--- /dev/null
+++ b/gnu/testlet/runner/compare/CVS/Repository
@@ -0,0 +1 @@
+mauve/gnu/testlet/runner/compare
diff --git a/gnu/testlet/runner/compare/CVS/Root b/gnu/testlet/runner/compare/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/gnu/testlet/runner/compare/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/gnu/testlet/runner/compare/ClassComparison.java b/gnu/testlet/runner/compare/ClassComparison.java
new file mode 100644
index 00000000..04586494
--- /dev/null
+++ b/gnu/testlet/runner/compare/ClassComparison.java
@@ -0,0 +1,39 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.ClassResult;
+
+/**
+ * Result of the comparison of 2 {@link ClassResult}s
+ * @author fabien
+ *
+ */
+public class ClassComparison extends Comparison {
+
+ ClassComparison(ClassResult result) {
+ super(result);
+ }
+
+ public void accept(ComparisonVisitor visitor) {
+ visitor.visit(this);
+ acceptChildren(visitor);
+ }
+}
diff --git a/gnu/testlet/runner/compare/Comparison.java b/gnu/testlet/runner/compare/Comparison.java
new file mode 100644
index 00000000..daf607db
--- /dev/null
+++ b/gnu/testlet/runner/compare/Comparison.java
@@ -0,0 +1,100 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.Result;
+
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * Abstract class for the result of the comparison of 2 {@link Result}s
+ *
+ * @author fabien
+ *
+ */
+public abstract class Comparison implements Comparable {
+ private final String name;
+ private final Set children = new TreeSet();
+
+ Comparison(Result result) {
+ this.name = result.getName();
+ }
+
+ public final String getName() {
+ return name;
+ }
+
+ public final Comparison get(String name) {
+ Comparison result = null;
+
+ for (Iterator it = children.iterator(); it.hasNext(); ) {
+ Comparison r = (Comparison) it.next();
+ if (r.getName().equals(name)) {
+ result = r;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ public abstract void accept(ComparisonVisitor visitor);
+
+ public int getProgression() {
+ int progression = 0;
+
+ for (Iterator it = children.iterator(); it.hasNext(); ) {
+ Comparison r = (Comparison) it.next();
+ progression += r.getProgression();
+ }
+
+ return progression;
+ }
+
+ public final void add(Comparison child) {
+ children.add(child);
+ }
+
+ /**
+ * @param comparison an instance of Comparison
+ */
+ public final int compareTo(Object comparison) {
+ Comparison c = (Comparison) comparison;
+
+ // regressions have negative progression
+ // we sort from bigger regression to bigger progression
+ int result = getProgression() - c.getProgression();
+
+ if (result == 0) {
+ result = getName().compareTo(c.getName());
+ }
+
+ return result;
+ }
+
+ protected final void acceptChildren(ComparisonVisitor visitor) {
+ for (Iterator it = children.iterator(); it.hasNext(); ) {
+ Comparison cmp = (Comparison) it.next();
+ cmp.accept(visitor);
+ }
+ }
+}
diff --git a/gnu/testlet/runner/compare/ComparisonVisitor.java b/gnu/testlet/runner/compare/ComparisonVisitor.java
new file mode 100644
index 00000000..59d4728d
--- /dev/null
+++ b/gnu/testlet/runner/compare/ComparisonVisitor.java
@@ -0,0 +1,37 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+/**
+ * Interface for a {@link Comparison} visitor
+ *
+ * @author fabien
+ *
+ */
+public interface ComparisonVisitor {
+
+ void visit(RunComparison run);
+
+ void visit(PackageComparison pkg);
+
+ void visit(ClassComparison cls);
+
+ void visit(TestComparison test);
+}
diff --git a/gnu/testlet/runner/compare/ComparisonWriter.java b/gnu/testlet/runner/compare/ComparisonWriter.java
new file mode 100644
index 00000000..f318ddd2
--- /dev/null
+++ b/gnu/testlet/runner/compare/ComparisonWriter.java
@@ -0,0 +1,231 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.CheckResult;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.List;
+
+/**
+ * Abstract class for writing a {@link Comparison}
+ *
+ * @author fabien
+ *
+ */
+public abstract class ComparisonWriter {
+
+ /**
+ * Write the given comparison
+ *
+ * @param comp
+ * @param output
+ * @throws FileNotFoundException
+ */
+ public final void write(RunComparison comp, File output) throws FileNotFoundException {
+ PrintWriter ps = null;
+
+ try {
+ ps = new PrintWriter(new FileOutputStream(output));
+ write(comp, ps);
+ } finally {
+ if (ps != null) {
+ ps.close();
+ }
+ }
+ }
+
+ /**
+ * Write the given comparison
+ *
+ * @param run
+ * @param pw
+ */
+ public final void write(RunComparison run, PrintWriter pw) {
+ final Visitor v = createVisitor(pw);
+
+ v.writeBegin();
+ v.writeSummary(run);
+
+ write(run, pw, v, EvolutionType.REGRESSION, "Regressions");
+ write(run, pw, v, EvolutionType.PROGRESSION, "Progressions");
+ write(run, pw, v, EvolutionType.STAGNATION, "Stagnations");
+
+ v.writeEnd();
+
+ pw.flush();
+ }
+
+ private void write(RunComparison run, PrintWriter pw, Visitor v, EvolutionType type, String typeLabel) {
+ v.setType(type);
+ v.setEvolutionLabel(typeLabel);
+
+ v.writeBeginTable();
+ run.accept(v);
+ v.writeEndTable();
+ }
+
+ protected abstract Visitor createVisitor(PrintWriter pw);
+
+ protected static class Level {
+ public static final Level RUN = new Level(0);
+ public static final Level PACKAGE = new Level(1);
+ public static final Level CLASS = new Level(2);
+ public static final Level TEST = new Level(3);
+
+ private static final Level[] VALUES = {RUN, PACKAGE, CLASS, TEST};
+
+ public static final Level[] values() {
+ return VALUES;
+ }
+
+ public static final Level MAX = VALUES[VALUES.length - 1];
+
+ private final int level;
+
+ private Level(final int level) {
+ this.level = level;
+ }
+
+ public int getValue() {
+ return level;
+ }
+ }
+
+ protected abstract static class Visitor implements ComparisonVisitor {
+ protected final PrintWriter pw;
+ protected EvolutionType type;
+ protected String evolutionLabel;
+
+ protected Visitor(PrintWriter pw) {
+ this.pw = pw;
+ }
+
+ public void setType(EvolutionType type) {
+ this.type = type;
+ }
+
+ public void setEvolutionLabel(String label) {
+ this.evolutionLabel = label;
+ }
+
+ protected abstract void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations);
+ protected abstract void writeSystemProperties(List systemProperties, String result1Name, String result2Name);
+
+ private void writeSummary(RunComparison run) {
+ EvolutionTypeVisitor evolTypeVisitor = new EvolutionTypeVisitor();
+ run.accept(evolTypeVisitor);
+
+ writeSummary(evolTypeVisitor.getCounter(EvolutionType.REGRESSION),
+ evolTypeVisitor.getCounter(EvolutionType.PROGRESSION),
+ evolTypeVisitor.getCounter(EvolutionType.STAGNATION));
+ writeSystemProperties(run.getSystemProperties(), run.getResult1Name(), run.getResult2Name());
+ }
+
+ public void writeBegin() {
+ }
+
+ public void writeEnd() {
+ }
+
+ public void writeBeginTable() {
+ }
+
+ public void writeEndTable() {
+ }
+
+ //@Override
+ public final void visit(RunComparison run) {
+ if (shouldWrite(run)) {
+ write(Level.RUN, run, true);
+ }
+ }
+
+ //@Override
+ public final void visit(PackageComparison pkg) {
+ if (shouldWrite(pkg)) {
+ write(Level.PACKAGE, pkg, true);
+ }
+ }
+
+ //@Override
+ public final void visit(ClassComparison cls) {
+ if (shouldWrite(cls)) {
+ write(Level.CLASS, cls, true);
+ }
+ }
+
+ //@Override
+ public final void visit(TestComparison test) {
+ if (shouldWrite(test)) {
+ write(Level.TEST, test, false);
+
+ CheckResult cr = test.getCheckResult();
+ String result;
+ if (cr == null) {
+ result = "<no checkpoint>";
+ } else {
+ result = Integer.toString(cr.getNumber()) + ':';
+
+ if (cr.getCheckPoint() == null) {
+ result += "<no name>";
+ } else {
+ result += cr.getCheckPoint();
+ }
+ }
+ writeCheckResult(result);
+
+ writeEndLine();
+ }
+ }
+
+ protected abstract void writeBeginLine(Level level);
+ protected abstract void writeName(Level level, String name);
+ protected abstract void writeEndLine();
+
+ protected abstract void writeCheckResult(String result);
+
+ protected final void writeIndent(Level level) {
+ final int indent = level.getValue() * 4;
+ for (int i = 0; i < indent; i++) {
+ pw.append(' ');
+ }
+ }
+
+ private boolean shouldWrite(Comparison comp) {
+ EvolutionTypeVisitor v = new EvolutionTypeVisitor();
+ comp.accept(v);
+ return (v.getCounter(type) > 0);
+ }
+
+ private void write(Level level, Comparison comp, boolean endLine) {
+ writeBeginLine(level);
+
+ writeName(level, comp.getName());
+
+ if (endLine) {
+ writeEndLine();
+ }
+ }
+ };
+}
diff --git a/gnu/testlet/runner/compare/EvolutionType.java b/gnu/testlet/runner/compare/EvolutionType.java
new file mode 100644
index 00000000..134873f9
--- /dev/null
+++ b/gnu/testlet/runner/compare/EvolutionType.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+class EvolutionType {
+ public static final EvolutionType REGRESSION = new EvolutionType("REGRESSION", 0);
+ public static final EvolutionType PROGRESSION = new EvolutionType("PROGRESSION", 1);
+ public static final EvolutionType STAGNATION = new EvolutionType("STAGNATION", 2);
+
+ private static final EvolutionType[] VALUES = new EvolutionType[]{REGRESSION, PROGRESSION, STAGNATION};
+
+ public static final EvolutionType[] values() {
+ return VALUES;
+ }
+
+ private final int ordinal;
+ private final String name;
+
+ private EvolutionType(final String name, final int ordinal) {
+ this.name = name;
+ this.ordinal = ordinal;
+ }
+
+ public final int ordinal() {
+ return ordinal;
+ }
+
+ public String toString() {
+ return name;
+ }
+}
diff --git a/gnu/testlet/runner/compare/EvolutionTypeVisitor.java b/gnu/testlet/runner/compare/EvolutionTypeVisitor.java
new file mode 100644
index 00000000..1b4f3cff
--- /dev/null
+++ b/gnu/testlet/runner/compare/EvolutionTypeVisitor.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+
+public class EvolutionTypeVisitor implements ComparisonVisitor {
+ private final int[] counters = new int[EvolutionType.values().length];
+
+ public int getCounter(EvolutionType type) {
+ return counters[type.ordinal()];
+ }
+
+ //@Override
+ public void visit(RunComparison run) {
+ // nothing
+ }
+
+ //@Override
+ public void visit(PackageComparison pkg) {
+ // nothing
+ }
+
+ //@Override
+ public void visit(ClassComparison cls) {
+ // nothing
+ }
+
+ //@Override
+ public void visit(TestComparison test) {
+ counters[test.getEvolutionType().ordinal()]++;
+ }
+
+}
diff --git a/gnu/testlet/runner/compare/HTMLComparisonWriter.java b/gnu/testlet/runner/compare/HTMLComparisonWriter.java
new file mode 100644
index 00000000..7703ea69
--- /dev/null
+++ b/gnu/testlet/runner/compare/HTMLComparisonWriter.java
@@ -0,0 +1,153 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.XMLReportWriter;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+/**
+ * Writer in HTML format for a {@link Comparison}
+ * @author fabien
+ *
+ */
+public class HTMLComparisonWriter extends ComparisonWriter {
+ //@Override
+ protected Visitor createVisitor(PrintWriter pw) {
+ return new HTMLVisitor(pw);
+ }
+
+ protected static class HTMLVisitor extends Visitor {
+ private HTMLVisitor(PrintWriter pw) {
+ super(pw);
+ }
+
+ //@Override
+ protected void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations) {
+ pw.append("<h2>Summary</h2>");
+ appendLink(nbRegressions, EvolutionType.REGRESSION, " regressions. ");
+ appendLink(nbProgressions, EvolutionType.PROGRESSION, " progressions. ");
+ appendLink(nbStagnations, EvolutionType.STAGNATION, " stagnations. ");
+ }
+
+ protected void writeSystemProperties(List systemProperties, String result1Name, String result2Name) {
+ pw.append("<br/><h2>System properties</h2><br/>");
+ pw.append("<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"><tr>");
+
+ writeCell("th", 0, 1, "Name");
+ writeCell("th", 0, 1, result1Name);
+ writeCell("th", 0, 1, result2Name);
+
+ pw.append("</tr>\n");
+ for (int i = 0; i < systemProperties.size(); ) {
+ pw.append("<tr>");
+ writeCell("td", 0, 1, (String) systemProperties.get(i++));
+ writeCell("td", 0, 1, (String) systemProperties.get(i++));
+ writeCell("td", 0, 1, (String) systemProperties.get(i++));
+ pw.append("</tr>");
+ }
+ pw.append("</table><br/>");
+ }
+
+ private void appendLink(int value, EvolutionType type, String label) {
+ pw.append("<a href=\"#").append(type.toString()).append("\">");
+ pw.append(Integer.toString(value)).append(label);
+ pw.append("</a>").append("&nbsp;&nbsp;&nbsp;");
+ }
+
+ public void writeBegin() {
+ pw.append("<html><head></head><body>");
+ }
+
+ public void writeEnd() {
+ pw.append("</body></html>\n");
+ }
+
+ public void writeBeginTable() {
+ pw.append("<br/><h2 id=\"").append(type.toString()).append("\">");
+ pw.append(evolutionLabel);
+ pw.append("</h2><br/>");
+
+ pw.append("<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"><tr>");
+
+ writeCell("th", 0, Level.values().length, "Name");
+ writeCell("th", 0, 1, "Last reached checkpoint");
+
+ pw.append("</tr>\n");
+ }
+
+ public void writeEndTable() {
+ pw.append("\n</table>");
+ }
+
+ //@Override
+ protected void writeBeginLine(Level level) {
+ writeIndent(level);
+ pw.write("<tr>");
+ }
+
+ //@Override
+ protected void writeName(Level level, String name) {
+ writeCell("td", level.getValue(), 1 + Level.MAX.getValue() - level.getValue(), name);
+ }
+
+ //@Override
+ protected void writeEndLine() {
+ pw.write("</tr>\n");
+ }
+
+ //@Override
+ protected void writeCheckResult(String result) {
+ writeCell("td", 0, 1, result);
+ }
+
+ private void writeCell(String tag, int nbColumnsBefore, int columnSpan, String value) {
+ writeCell(tag, nbColumnsBefore, columnSpan, value, null);
+ }
+
+ private void writeCell(String tag, int nbColumnsBefore, int columnSpan, String value, String style) {
+ writeCell(tag, nbColumnsBefore, columnSpan, value, style, null);
+ }
+
+ private void writeCell(String tag, int nbColumnsBefore, int columnSpan, String value,
+ String style, String bgColor) {
+ for (int i = 0; i < nbColumnsBefore; i++) {
+ pw.append("<").append(tag).append(" width=\"30px\"></").append(tag).append(">");
+ }
+
+ pw.append("<").append(tag);
+ if (style != null) {
+ pw.append(" style=\"").append(style).append('\"');
+ }
+ if (columnSpan > 1) {
+ pw.append(" colspan=\"").append(Integer.toString(columnSpan)).append('\"');
+ }
+ if (bgColor != null) {
+ pw.append(" bgcolor=\"").append(bgColor).append('\"');
+ }
+
+ pw.append('>');
+
+ pw.append(XMLReportWriter.protect(value));
+ pw.append("</").append(tag).append(">");
+ }
+ };
+}
diff --git a/gnu/testlet/runner/compare/PackageComparison.java b/gnu/testlet/runner/compare/PackageComparison.java
new file mode 100644
index 00000000..ae6060f2
--- /dev/null
+++ b/gnu/testlet/runner/compare/PackageComparison.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.PackageResult;
+
+/**
+ * Result of the comparison of 2 {@link PackageResult}s
+ * @author fabien
+ *
+ */
+public class PackageComparison extends Comparison {
+
+ PackageComparison(PackageResult result) {
+ super(result);
+ }
+
+ //@Override
+ public void accept(ComparisonVisitor visitor) {
+ visitor.visit(this);
+ acceptChildren(visitor);
+ }
+}
diff --git a/gnu/testlet/runner/compare/ReportComparator.java b/gnu/testlet/runner/compare/ReportComparator.java
new file mode 100644
index 00000000..94a9686c
--- /dev/null
+++ b/gnu/testlet/runner/compare/ReportComparator.java
@@ -0,0 +1,205 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.CheckResult;
+import gnu.testlet.runner.ClassResult;
+import gnu.testlet.runner.PackageResult;
+import gnu.testlet.runner.Result;
+import gnu.testlet.runner.RunResult;
+import gnu.testlet.runner.TestResult;
+import gnu.testlet.runner.XMLReportParser;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import net.sourceforge.nanoxml.XMLParseException;
+
+/**
+ * Comparator of 2 {@link RunResult}s
+ *
+ * @author fabien
+ *
+ */
+public class ReportComparator {
+
+ private final RunResult result1;
+ private final RunResult result2;
+
+ public static void main(String[] args) throws XMLParseException, IOException {
+ if (args.length < 3) {
+ System.out.println("usage : java " + ReportComparator.class.getName() +
+ " <report1.xml> <report2.xml> [html|text]");
+ } else {
+ File report1 = new File(args[0]);
+ File report2 = new File(args[1]);
+ String format = args[2];
+ compare(report1, report2, format);
+ }
+ }
+
+ public static File compare(File report1, File report2, String format) throws XMLParseException, IOException {
+ XMLReportParser parser = new XMLReportParser();
+ RunResult result1 = parser.parse(report1);
+ RunResult result2 = parser.parse(report2);
+
+ ReportComparator comparator = new ReportComparator(result1, result2);
+ RunComparison comparison = comparator.compare();
+
+ final ComparisonWriter writer;
+ final String extension;
+ if ("text".equals(format)) {
+ writer = new TextComparisonWriter();
+ extension = "txt";
+ } else if ("html".equals(format)) {
+ writer = new HTMLComparisonWriter();
+ extension = "html";
+ } else {
+ extension = "txt";
+ writer = new TextComparisonWriter();
+ }
+
+ int i = 0;
+ File output = new File(report2.getParent(), "comp_" + i + "." + extension);
+ while (output.exists()) {
+ i++;
+ output = new File(report2.getParent(), "comp_" + i + "." + extension);
+ }
+ writer.write(comparison, output);
+ System.out.println("Comparison wrote to " + output.getAbsolutePath());
+
+ return output;
+ }
+
+ public ReportComparator(RunResult result1, RunResult result2) {
+ this.result1 = result1;
+ this.result2 = result2;
+ }
+
+ /**
+ * TODO handle case of added/removed package/class/test/check results ?
+ *
+ * @return
+ */
+ public RunComparison compare() {
+ RunComparison cr = new RunComparison(result1, result2);
+
+ addSystemProperties(cr);
+
+ for (Iterator itPackage1 = result1.getPackageIterator(); itPackage1.hasNext(); ) {
+ PackageResult pkg1 = (PackageResult) itPackage1.next();
+ PackageResult pkg2 = (PackageResult) getResult(pkg1, result2.getPackageIterator());
+
+ if (pkg2 == null) {
+ continue;
+ }
+
+ for (Iterator itClass1 = pkg1.getClassIterator(); itClass1.hasNext(); ) {
+ ClassResult cls1 = (ClassResult) itClass1.next();
+ ClassResult cls2 = (ClassResult) getResult(cls1, pkg2.getClassIterator());
+
+ if (cls2 == null) {
+ continue;
+ }
+
+ for (Iterator itTest1 = cls1.getTestIterator(); itTest1.hasNext(); ) {
+ TestResult test1 = (TestResult) itTest1.next();
+ TestResult test2 = (TestResult) getResult(test1, cls2.getTestIterator());
+
+ compare(test1, pkg2, cls2, test2, cr);
+ }
+ }
+ }
+
+ return cr;
+ }
+
+ private void addSystemProperties(RunComparison runComparison) {
+ List names1 = Arrays.asList(result1.getSystemPropertyNames());
+ for (int i = 0; i < names1.size(); i++) {
+ String name = (String) names1.get(i);
+ runComparison.addSystemProperty(name, result1.getSystemProperty(name),
+ result2.getSystemProperty(name));
+ }
+
+ String[] names2 = result2.getSystemPropertyNames();
+ for (int i = 0; i < names2.length; i++) {
+ String name = names2[i];
+ if (!names1.contains(name)) {
+ runComparison.addSystemProperty(name, result1.getSystemProperty(name),
+ result2.getSystemProperty(name));
+ }
+ }
+ }
+
+ private void compare(TestResult test1, PackageResult pkg2, ClassResult cls2, TestResult test2,
+ RunComparison cr) {
+ if ((test2 == null) || (test1.getCheckCount() != test2.getCheckCount())) {
+ return;
+ }
+
+ List reachedCheckResults1 = getReachedCheckResults(test1);
+ List reachedCheckResults2 = getReachedCheckResults(test2);
+
+ final int size1 = reachedCheckResults1.size();
+ final int size2 = reachedCheckResults2.size();
+
+ CheckResult check2 = null;
+ if (!reachedCheckResults2.isEmpty()) {
+ check2 = (CheckResult) reachedCheckResults2.get(reachedCheckResults2.size() - 1);
+ }
+
+ cr.setProgression(pkg2, cls2, test2, check2, size2 - size1);
+ }
+
+ private List getReachedCheckResults(TestResult test) {
+ List checkResults = new ArrayList();
+
+ for (Iterator itCheck = test.getCheckIterator(); itCheck.hasNext(); ) {
+ CheckResult check = (CheckResult) itCheck.next();
+ if (!check.getPassed()) {
+ break;
+ }
+
+ checkResults.add(check);
+ }
+
+ return checkResults;
+ }
+
+ private Result getResult(Result result1, Iterator results2) {
+ final String name1 = result1.getName();
+ Result result2 = null;
+
+ while (results2.hasNext()) {
+ Result res2 = (Result) results2.next();
+ if (name1.equals(res2.getName())) {
+ result2 = res2;
+ break;
+ }
+ }
+
+ return result2;
+ }
+}
diff --git a/gnu/testlet/runner/compare/RunComparison.java b/gnu/testlet/runner/compare/RunComparison.java
new file mode 100644
index 00000000..06a3f4e8
--- /dev/null
+++ b/gnu/testlet/runner/compare/RunComparison.java
@@ -0,0 +1,104 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.CheckResult;
+import gnu.testlet.runner.ClassResult;
+import gnu.testlet.runner.PackageResult;
+import gnu.testlet.runner.RunResult;
+import gnu.testlet.runner.TestResult;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Result of the comparison of 2 {@link RunResult}s
+ * @author fabien
+ *
+ */
+public class RunComparison extends Comparison {
+ private final List systemProperties = new ArrayList();
+ private final String result1Name;
+ private final String result2Name;
+
+ RunComparison(RunResult result1, RunResult result2) {
+ super(new RunResult("Comparison of '" + result1.getName() + "' and '" + result2.getName() + "'"));
+ result1Name = result1.getName();
+ result2Name = result2.getName();
+ }
+
+ /**
+ *
+ * @param pkg
+ * @param cls
+ * @param test
+ * @param check, might be null
+ * @param nbProgressedCheck, might be < 0 for regressions in the test
+ */
+ public void setProgression(PackageResult pkg, ClassResult cls, TestResult test,
+ CheckResult check, int nbProgressedChecks) {
+ // package
+ Comparison pc = get(pkg.getName());
+ if (pc == null) {
+ pc = new PackageComparison(pkg);
+ add(pc);
+ }
+
+ // class
+ Comparison classComp = pc.get(cls.getName());
+ if (classComp == null) {
+ classComp = new ClassComparison(cls);
+ pc.add(classComp);
+ }
+
+ // test
+ classComp.add(new TestComparison(test, check, nbProgressedChecks));
+ }
+
+
+ //@Override
+ public void accept(ComparisonVisitor visitor) {
+ visitor.visit(this);
+ acceptChildren(visitor);
+ }
+
+ /**
+ * @param name
+ * @param value1
+ * @param value2
+ */
+ public void addSystemProperty(String name, String value1, String value2) {
+ systemProperties.add(name);
+ systemProperties.add(value1);
+ systemProperties.add(value2);
+ }
+
+ public List getSystemProperties() {
+ return systemProperties;
+ }
+
+ public String getResult1Name() {
+ return result1Name;
+ }
+
+ public String getResult2Name() {
+ return result2Name;
+ }
+}
diff --git a/gnu/testlet/runner/compare/TestComparison.java b/gnu/testlet/runner/compare/TestComparison.java
new file mode 100644
index 00000000..31c14537
--- /dev/null
+++ b/gnu/testlet/runner/compare/TestComparison.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import gnu.testlet.runner.CheckResult;
+import gnu.testlet.runner.TestResult;
+
+/**
+ * Result of the comparison of 2 {@link TestResult}s
+ * @author fabien
+ *
+ */
+public class TestComparison extends Comparison {
+ private final int progression;
+ private final CheckResult check;
+ /**
+ *
+ * @param test
+ * @param check, might be null
+ * @param nbProgressedChecks
+ */
+ public TestComparison(TestResult test, CheckResult check, int nbProgressedChecks) {
+ super(test);
+ this.progression = nbProgressedChecks;
+ this.check = check;
+ }
+
+ public CheckResult getCheckResult() {
+ return check;
+ }
+
+ //@Override
+ public int getProgression() {
+ return progression;
+ }
+
+ public EvolutionType getEvolutionType() {
+ EvolutionType type = EvolutionType.STAGNATION;
+ if (getProgression() > 0) {
+ type = EvolutionType.PROGRESSION;
+ } else if (getProgression() < 0) {
+ type = EvolutionType.REGRESSION;
+ }
+ return type;
+ }
+
+ //@Override
+ public void accept(ComparisonVisitor visitor) {
+ visitor.visit(this);
+ }
+}
diff --git a/gnu/testlet/runner/compare/TextComparisonWriter.java b/gnu/testlet/runner/compare/TextComparisonWriter.java
new file mode 100644
index 00000000..258c5872
--- /dev/null
+++ b/gnu/testlet/runner/compare/TextComparisonWriter.java
@@ -0,0 +1,82 @@
+// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
+
+// 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.runner.compare;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+/**
+ * Writer in Text format for a {@link Comparison}
+ * @author fabien
+ *
+ */
+public class TextComparisonWriter extends ComparisonWriter {
+ //@Override
+ protected Visitor createVisitor(PrintWriter pw) {
+ return new TextVisitor(pw);
+ }
+
+ protected static class TextVisitor extends Visitor {
+ private TextVisitor(PrintWriter pw) {
+ super(pw);
+ }
+
+ //@Override
+ protected void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations) {
+ pw.append(Integer.toString(nbRegressions)).append(" regressions. ");
+ pw.append(Integer.toString(nbProgressions)).append(" progressions. ");
+ pw.append(Integer.toString(nbStagnations)).append(" stagnations.\n");
+ }
+
+ protected void writeSystemProperties(List systemProperties, String result1Name, String result2Name) {
+ pw.append("\nSystem properties\n");
+ pw.append("Name\t").append(result1Name).append('\t').append(result2Name).append('\n');
+ for (int i = 0; i < systemProperties.size(); ) {
+ pw.append((String) systemProperties.get(i++)).append('\t');
+ pw.append((String) systemProperties.get(i++)).append('\t');
+ pw.append((String) systemProperties.get(i++)).append('\n');
+ }
+ }
+
+ public void writeBeginTable() {
+ pw.append("\n").append(evolutionLabel).append("\n");
+ }
+
+ //@Override
+ protected void writeBeginLine(Level level) {
+ writeIndent(level);
+ }
+
+ //@Override
+ protected void writeName(Level level, String name) {
+ pw.append(name).append('\t');
+ }
+
+ //@Override
+ protected void writeEndLine() {
+ pw.append('\n');
+ }
+
+ //@Override
+ protected void writeCheckResult(String result) {
+ pw.append('\t').append(result);
+ }
+ };
+}
diff --git a/install-sh b/install-sh
new file mode 100755
index 00000000..70d2704c
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,246 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission. M.I.T. makes no representations about the
+# suitability of this software for any purpose. It is provided "as is"
+# without express or implied warranty.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+#
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd="$cpprog"
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd="$stripprog"
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "install: no input file specified"
+ exit 1
+else
+ true
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d $dst ]; then
+ instcmd=:
+ else
+ instcmd=mkdir
+ fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+ if [ -f $src -o -d $src ]
+ then
+ true
+ else
+ echo "install: $src does not exist"
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "install: no destination specified"
+ exit 1
+ else
+ true
+ fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+ if [ -d $dst ]
+ then
+ dst="$dst"/`basename $src`
+ else
+ true
+ fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+# this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp="${pathcomp}${1}"
+ shift
+
+ if [ ! -d "${pathcomp}" ] ;
+ then
+ $mkdirprog "${pathcomp}"
+ else
+ true
+ fi
+
+ pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd $dst &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+ if [ x"$transformarg" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ dstfile=`basename $dst $transformbasename |
+ sed $transformarg`$transformbasename
+ fi
+
+# don't allow the sed command to completely eliminate the filename
+
+ if [ x"$dstfile" = x ]
+ then
+ dstfile=`basename $dst`
+ else
+ true
+ fi
+
+# Make a temp file name in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd $src $dsttmp &&
+
+ trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing. If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+ $doit $rmcmd -f $dstdir/$dstfile &&
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
+
+fi &&
+
+
+exit 0
diff --git a/java-nio.log b/java-nio.log
new file mode 100644
index 00000000..fee6ee00
--- /dev/null
+++ b/java-nio.log
@@ -0,0 +1,152 @@
+FAIL: java.nio.charset.Charset.forName2
+ line 44: Charset 'ibm-1208' supported [1] -- boolean passed to check was false
+ line 44: Charset 'ibm-1209' supported [1] -- boolean passed to check was false
+ line 44: Charset 'ibm-5304' supported [1] -- boolean passed to check was false
+ line 44: Charset 'ibm-5305' supported [1] -- boolean passed to check was false
+ line 44: Charset 'windows-65001' supported [1] -- boolean passed to check was false
+ line 44: Charset 'cp1208' supported [1] -- boolean passed to check was false
+FAIL: java.nio.charset.Charset.encode
+ line 36: Wrong capacity in byte buffer [1] -- got 153 but expected 152
+PASS: java.nio.charset.Charset.utf16
+PASS: java.nio.charset.Charset.forName
+PASS: java.nio.charset.Charset.canEncode
+PASS: java.nio.charset.Charset.UTF8Charset
+PASS: java.nio.LongBuffer.compact
+PASS: java.nio.ShortBuffer.compact
+FAIL: java.nio.channels.Channels.ChannelsTest
+ line 70: [1] -- uncaught exception:
+ java.lang.UnsatisfiedLinkError: no javanet in java.library.path
+ at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
+ at java.lang.Runtime.loadLibrary0(Runtime.java:845)
+ at java.lang.System.loadLibrary(System.java:1086)
+ at sun.nio.ch.Util$5.run(Util.java:418)
+ at sun.nio.ch.Util$5.run(Util.java:416)
+ at java.security.AccessController.doPrivileged(Native Method)
+ at sun.nio.ch.Util.load(Util.java:415)
+ at sun.nio.ch.IOUtil.<clinit>(IOUtil.java:354)
+ at sun.nio.ch.Util.<clinit>(Util.java:48)
+ at sun.nio.ch.FileChannelImpl.<clinit>(FileChannelImpl.java:1143)
+ at java.io.RandomAccessFile.getChannel(RandomAccessFile.java:272)
+ at gnu.testlet.java.nio.channels.Channels.ChannelsTest.test(ChannelsTest.java:70)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.Selector.testEmptySelect
+ line 51: openSelector [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.Util
+ at sun.nio.ch.EPollSelectorImpl.<clinit>(EPollSelectorImpl.java:201)
+ at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36)
+ at gnu.testlet.java.nio.channels.Selector.testEmptySelect.test(testEmptySelect.java:51)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.offsetSingleBuffer
+ line 65: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.offsetSingleBuffer.test(offsetSingleBuffer.java:65)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.multidirectbufferIO
+ line 76: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.multidirectbufferIO.test(multidirectbufferIO.java:76)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.lock
+ line 86: mauve.vmexec system property NOT SET! [1] -- boolean passed to check was false
+ line 117: cleanup /tmp/mauvelock [2] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.lock.test(lock.java:117)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.map
+ line 42: [2] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.map.test(map.java:42)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.offsetSingleDirectBuffer
+ line 65: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.offsetSingleDirectBuffer.test(offsetSingleDirectBuffer.java:65)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.singlebufferIO
+ line 60: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.singlebufferIO.test(singlebufferIO.java:60)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.copyIO
+ line 56: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileInputStream.getChannel(FileInputStream.java:342)
+ at gnu.testlet.java.nio.channels.FileChannel.copyIO.test(copyIO.java:56)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+PASS: java.nio.channels.FileChannel.manyopen
+FAIL: java.nio.channels.FileChannel.truncate
+ line 43: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.RandomAccessFile.getChannel(RandomAccessFile.java:272)
+ at gnu.testlet.java.nio.channels.FileChannel.truncate.test(truncate.java:43)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.FileChannel.multibufferIO
+ line -1: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
+ at java.io.FileOutputStream.getChannel(FileOutputStream.java:376)
+ at gnu.testlet.java.nio.channels.FileChannel.multidirectbufferIO.test(multidirectbufferIO.java:76)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+FAIL: java.nio.channels.SocketChannel.select
+ line 60: [1] -- uncaught exception:
+ java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.Util
+ at sun.nio.ch.ServerSocketChannelImpl.<clinit>(ServerSocketChannelImpl.java:403)
+ at sun.nio.ch.SelectorProviderImpl.openServerSocketChannel(SelectorProviderImpl.java:56)
+ at java.nio.channels.ServerSocketChannel.open(ServerSocketChannel.java:105)
+ at gnu.testlet.java.nio.channels.SocketChannel.select.test(select.java:60)
+ at RunnerProcess.runtest(RunnerProcess.java:425)
+ at RunnerProcess.runAndReport(RunnerProcess.java:480)
+ at RunnerProcess.main(RunnerProcess.java:273)
+PASS: java.nio.FloatBuffer.compact
+PASS: java.nio.FloatBuffer.compareTo
+true
+PASS: java.nio.ByteBuffer.putDouble
+PASS: java.nio.ByteBuffer.TestAllocateDirect
+PASS: java.nio.ByteBuffer.Order
+PASS: java.nio.ByteBuffer.direct
+PASS: java.nio.ByteBuffer.GetPut
+PASS: java.nio.ByteBuffer.Allocating
+PASS: java.nio.ByteBuffer.compact
+PASS: java.nio.DoubleBuffer.compact
+PASS: java.nio.DoubleBuffer.compareTo
+PASS: java.nio.IntBuffer.compact
+PASS: java.nio.IntBuffer.compareTo
+PASS: java.nio.CharBuffer.CharSequenceWrapper
+PASS: java.nio.CharBuffer.compact
+PASS: java.nio.Buffer.ByteBufferTest
+PASS: java.nio.Buffer.CharBufferTest
+PASS: java.nio.Buffer.FloatBufferTest
+PASS: java.nio.Buffer.ShortBufferTest
+PASS: java.nio.Buffer.IntBufferTest
+PASS: java.nio.Buffer.LongBufferTest
+PASS: java.nio.Buffer.DoubleBufferTest
+
+TEST RESULTS:
+14 of 43 tests failed. 7 total calls to harness.check() failed.
diff --git a/javax.swing.test-results b/javax.swing.test-results
new file mode 100644
index 00000000..be57b3f3
--- /dev/null
+++ b/javax.swing.test-results
@@ -0,0 +1,2 @@
+TEST RESULTS:
+72 of 1321 tests failed. 180 total calls to harness.check() failed.
diff --git a/junit/CVS/Entries b/junit/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/junit/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/junit/CVS/Entries.Log b/junit/CVS/Entries.Log
new file mode 100644
index 00000000..51d8168c
--- /dev/null
+++ b/junit/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/framework////
+A D/runner////
+A D/textui////
diff --git a/junit/CVS/Repository b/junit/CVS/Repository
new file mode 100644
index 00000000..e7aa090b
--- /dev/null
+++ b/junit/CVS/Repository
@@ -0,0 +1 @@
+mauve/junit
diff --git a/junit/CVS/Root b/junit/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/junit/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/junit/framework/Assert.java b/junit/framework/Assert.java
new file mode 100644
index 00000000..57b8dc59
--- /dev/null
+++ b/junit/framework/Assert.java
@@ -0,0 +1,571 @@
+/* Assert.java -- Assertions to be used by tests
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import gnu.testlet.TestHarness;
+
+/**
+ * Test assertions to be used by test cases.
+ */
+public class Assert
+{
+
+ /**
+ * The mauve test harness. The assertions are delegated to the harness
+ * if this is not null. Otherwise the normal JUnit behaviour is implemented,
+ * which is to throw an AssertionFailedError.
+ */
+ static TestHarness harness;
+
+ /**
+ * Creates a new Assert object.
+ */
+ protected Assert()
+ {
+ // Nothing to do here.
+ }
+
+ /**
+ * Checks if <code>value</code> is <code>true</code>.
+ *
+ * @param message the error message in the case this assertion fails
+ * @param value the value to check.
+ */
+ public static void assertTrue(String message, boolean value)
+ {
+ if (harness != null)
+ harness.check(value);
+ else if (! value)
+ fail(message);
+ }
+
+ /**
+ * Checks if <code>value</code> is <code>true</code>.
+ *
+ * @param value the value to check.
+ */
+ public static void assertTrue(boolean value)
+ {
+ assertTrue(null, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is <code>true</code>.
+ *
+ * @param message the error message in the case this assertion fails
+ * @param value the value to check.
+ */
+ public static void assertFalse(String message, boolean value)
+ {
+ assertTrue(message, ! value);
+ }
+
+ /**
+ * Checks if <code>value</code> is <code>false</code>.
+ *
+ * @param value the value to check.
+ */
+ public static void assertFalse(boolean value)
+ {
+ assertFalse(null, value);
+ }
+
+ /**
+ * Unconditionally fails with the specified message.
+ *
+ * @param message
+ */
+ public static void fail(String message)
+ {
+ if (harness != null)
+ harness.check(false);
+ else
+ throw new AssertionFailedError(message);
+ }
+
+ /**
+ * Unconditionally fails without message.
+ */
+ public static void fail()
+ {
+ fail(null);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expexted</code> in the
+ * sense of <code>Object.equals()</code>.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String message, Object expected,
+ Object value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ {
+ if ((expected != null || value != null)
+ && (expected == null || ! expected.equals(value)))
+ failNotEquals(message, expected, value);
+ }
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expexted</code> in the
+ * sense of <code>Object.equals()</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(Object expected, Object value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expexted</code> in the
+ * sense of <code>Object.equals()</code>.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String message, String expected,
+ String value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ {
+ if ((expected != null || value != null)
+ && (expected == null || ! expected.equals(value)))
+ throw new ComparisonFailure(message, expected, value);
+ }
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expexted</code> in the
+ * sense of <code>Object.equals()</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertEquals(String expected, String value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>, taking
+ * a rounding delta <code>delta</code> into account.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(String message, double expected,
+ double value, double delta)
+ {
+ if (harness != null)
+ harness.check(expected, value, delta);
+ else
+ {
+ if (Double.isInfinite(expected))
+ {
+ if (value != expected)
+ failNotEquals(message, new Double(expected), new Double(value));
+ }
+ else if (! (Math.abs(expected - value) <= delta))
+ failNotEquals(message, new Double(expected), new Double(value));
+ }
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>, taking
+ * a rounding delta <code>delta</code> into account.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(double expected, double value, double delta)
+ {
+ assertEquals(null, expected, value, delta);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>, taking
+ * a rounding delta <code>delta</code> into account.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(String message, float expected, float value,
+ float delta)
+ {
+ if (harness != null)
+ harness.check(expected, value, delta);
+ else
+ {
+ if (Float.isInfinite(expected))
+ {
+ if (value != expected)
+ failNotEquals(message, new Float(expected), new Float(value));
+ }
+ else if (! (Math.abs(expected - value) <= delta))
+ failNotEquals(message, new Float(expected), new Float(value));
+ }
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>, taking
+ * a rounding delta <code>delta</code> into account.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ * @param delta the rounding delta
+ */
+ public static void assertEquals(float expected, float value, float delta)
+ {
+ assertEquals(null, expected, value, delta);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, long expected, long value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Long(expected), new Long(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(long expected, long value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, boolean expected,
+ boolean value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Boolean(expected), new Boolean(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(boolean expected, boolean value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, byte expected, byte value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Byte(expected), new Byte(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(byte expected, byte value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, char expected, char value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Character(expected), new Character(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(char expected, char value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, short expected, short value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Short(expected), new Short(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(short expected, short value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param message the error message in the case of failure
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(String message, int expected, int value)
+ {
+ if (harness != null)
+ harness.check(expected, value);
+ else
+ failNotEquals(message, new Integer(expected), new Integer(value));
+ }
+
+ /**
+ * Checks if <code>value</code> is equal to <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ public static void assertEquals(int expected, int value)
+ {
+ assertEquals(null, expected, value);
+ }
+
+ /**
+ * Checks that the <code>value</code> is not null.
+ *
+ * @param message the error message in the case of failure
+ * @param value the value to check
+ */
+ public static void assertNotNull(String message, Object value)
+ {
+ assertTrue(message, value != null);
+ }
+
+ /**
+ * Checks that the <code>value</code> is not null.
+ *
+ * @param value the value to check
+ */
+ public static void assertNotNull(Object value)
+ {
+ assertNotNull(null, value);
+ }
+
+ /**
+ * Checks that the <code>value</code> is null.
+ *
+ * @param message the error message in the case of failure
+ * @param value the value to check
+ */
+ public static void assertNull(String message, Object value)
+ {
+ assertTrue(message, value == null);
+ }
+
+ /**
+ * Checks that the <code>value</code> is null.
+ *
+ * @param value the value to check
+ */
+ public static void assertNull(Object value)
+ {
+ assertNull(null, value);
+ }
+
+ /**
+ * Checks that the <code>value</code> is the same object instance as
+ * <code>expected</code>.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertSame(String message, Object expected, Object value)
+ {
+ if (harness != null)
+ harness.check(expected == value);
+ else if (value != expected)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ str.append("expected to be same");
+ }
+ fail(format(str, expected, value));
+ }
+ }
+
+ /**
+ * Checks that the <code>value</code> is the same object instance as
+ * <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertSame(Object expected, Object value)
+ {
+ assertSame(null, expected, value);
+ }
+
+ /**
+ * Checks that the <code>value</code> is not the same object instance as
+ * <code>expected</code>.
+ *
+ * @param message the error message in case of failure
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertNotSame(String message, Object expected,
+ Object value)
+ {
+ if (harness != null)
+ harness.check(expected != value);
+ else if (value == expected)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ str.append("expected to be not the same");
+ }
+ fail(format(str, expected, value));
+ }
+ }
+
+ /**
+ * Checks that the <code>value</code> is not the same object instance as
+ * <code>expected</code>.
+ *
+ * @param expected the expected value
+ * @param value the actual value to check
+ */
+ public static void assertNotSame(Object expected, Object value)
+ {
+ assertNotSame(null, expected, value);
+ }
+
+ /**
+ * Called when a test failed because two objects are not equal.
+ *
+ * @param message the error message
+ * @param expected the expected value
+ * @param value the actual value
+ */
+ private static void failNotEquals(String message, Object expected,
+ Object value)
+ {
+ StringBuffer str = new StringBuffer();
+ if (message != null)
+ {
+ str.append(message);
+ str.append(' ');
+ }
+ fail(format(str, expected, value));
+ }
+
+ /**
+ * Formats the error message.
+ *
+ * @param str the string buffer to append to, with the start of the error
+ * message
+ * @param expected the expected value
+ * @param value the actual value
+ *
+ * @return the formatted message
+ */
+ private static String format(StringBuffer str, Object expected,
+ Object value)
+ {
+ str.append(' ');
+ str.append(" expected value: ");
+ str.append(expected);
+ str.append(" actual value: " + value);
+ return str.toString();
+ }
+}
diff --git a/junit/framework/AssertionFailedError.java b/junit/framework/AssertionFailedError.java
new file mode 100644
index 00000000..e1c95c70
--- /dev/null
+++ b/junit/framework/AssertionFailedError.java
@@ -0,0 +1,52 @@
+/* AssertionFailedError.java -- Thrown when a test failed
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Indicates that a test assertion failed.
+ */
+public class AssertionFailedError
+ extends Error
+{
+
+ private static final long serialVersionUID = -6907951573723054750L;
+
+ /**
+ * Creates an AssertionFailedError without message.
+ */
+ public AssertionFailedError()
+ {
+ // Nothing to do here.
+ }
+
+ /**
+ * Creates an AssertionFailedError with the specified error message.
+ *
+ * @param message the error message.
+ */
+ public AssertionFailedError(String message)
+ {
+ super(message);
+ }
+}
diff --git a/junit/framework/CVS/Entries b/junit/framework/CVS/Entries
new file mode 100644
index 00000000..a60d59c5
--- /dev/null
+++ b/junit/framework/CVS/Entries
@@ -0,0 +1,12 @@
+/Assert.java/1.1/Fri Oct 6 10:38:29 2006//
+/AssertionFailedError.java/1.2/Tue Apr 24 00:45:01 2012//
+/ComparisonFailure.java/1.2/Tue Apr 24 00:45:01 2012//
+/Protectable.java/1.1/Fri Oct 6 10:38:29 2006//
+/Test.java/1.1/Fri Oct 6 10:38:29 2006//
+/TestCase.java/1.2/Tue Apr 24 00:45:01 2012//
+/TestFailure.java/1.1/Fri Oct 6 10:38:29 2006//
+/TestListener.java/1.1/Fri Oct 6 10:38:29 2006//
+/TestResult.java/1.2/Tue Apr 24 00:45:01 2012//
+/TestSuite.java/1.2/Tue Apr 24 00:45:01 2012//
+/package.html/1.1/Fri Oct 6 10:38:29 2006//
+D
diff --git a/junit/framework/CVS/Repository b/junit/framework/CVS/Repository
new file mode 100644
index 00000000..c64427e3
--- /dev/null
+++ b/junit/framework/CVS/Repository
@@ -0,0 +1 @@
+mauve/junit/framework
diff --git a/junit/framework/CVS/Root b/junit/framework/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/junit/framework/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/junit/framework/ComparisonFailure.java b/junit/framework/ComparisonFailure.java
new file mode 100644
index 00000000..9d433e98
--- /dev/null
+++ b/junit/framework/ComparisonFailure.java
@@ -0,0 +1,49 @@
+/* ComparisonFailure.java -- Thrown when a string comparison failed
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Thrown when a string comparison failed.
+ *
+ * @see Assert#assertEquals(String, String, String)
+ * @see Assert#assertEquals(String, String)
+ */
+public class ComparisonFailure extends AssertionFailedError
+{
+
+ private static final long serialVersionUID = 2747813684729318422L;
+
+ /**
+ * Creates a new ComparisonFailure with an error message.
+ *
+ * @param message the error message
+ * @param expected the expected string
+ * @param the actual string value
+ */
+ public ComparisonFailure(String message, String expected, String value)
+ {
+ super(message);
+ }
+
+}
diff --git a/junit/framework/Protectable.java b/junit/framework/Protectable.java
new file mode 100644
index 00000000..cb2fe55c
--- /dev/null
+++ b/junit/framework/Protectable.java
@@ -0,0 +1,38 @@
+/* Protectable.java -- The Protectable interface from the JUnit API
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Runs tests inside a protected environmant. The code to be run is put
+ * in the protect() method.
+ */
+public interface Protectable
+{
+
+ /**
+ * Runs tests inside a protected environmant.
+ */
+ void protect()
+ throws Throwable;
+}
diff --git a/junit/framework/Test.java b/junit/framework/Test.java
new file mode 100644
index 00000000..8245ff5d
--- /dev/null
+++ b/junit/framework/Test.java
@@ -0,0 +1,45 @@
+/* Test.java -- The basic interface for a JUnit test
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * The basic interface for a JUnit test.
+ */
+public interface Test
+{
+
+ /**
+ * Returns the number of test cases that will be run by this test.
+ *
+ * @return the number of test cases that will be run by this test
+ */
+ int countTestCases();
+
+ /**
+ * Runs the test and store the results in <code>result</code>
+ *
+ * @param result the test result object for storing the results into
+ */
+ void run(TestResult result);
+}
diff --git a/junit/framework/TestCase.java b/junit/framework/TestCase.java
new file mode 100644
index 00000000..60cefffe
--- /dev/null
+++ b/junit/framework/TestCase.java
@@ -0,0 +1,313 @@
+/* TestCase.java -- A JUnit test case
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * A JUnit test case.
+ */
+public abstract class TestCase
+ extends Assert
+ implements Test, Testlet
+
+{
+
+ /**
+ * The name of the test case.
+ */
+ private String fName;
+
+ /**
+ * Creates a new TestCase.
+ */
+ public TestCase()
+ {
+ fName = null;
+ }
+
+ /**
+ * Creates a test case with a name.
+ *
+ * @param name the name of the test case
+ */
+ public TestCase(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns the number of test cases executed by this test.
+ *
+ * @return the number of test cases executed by this test
+ */
+ public int countTestCases()
+ {
+ return 1;
+ }
+
+ /**
+ * Creates a default TestResult object.
+ *
+ * @return a default TestResult object
+ */
+ protected TestResult createResult()
+ {
+ return new TestResult();
+ }
+
+ /**
+ * Creates a TestResult and runs a test by calling
+ * {@link #run(TestResult)}.
+ *
+ * @return the test results after running the test
+ */
+ public TestResult run()
+ {
+ TestResult result = createResult();
+ run(result);
+ return result;
+ }
+
+ /**
+ * Runs the test and collects the result in the specified TestResult
+ * object.
+ *
+ * @param result the TestResult object to collect the results in
+ */
+ public void run(TestResult result)
+ {
+ result.run(this);
+ }
+
+ /**
+ * Runs the bare test sequence. This calls {@link #setUp()}, executes
+ * the test by calling {@link #runTest}, and finally finishes with
+ * {@link #tearDown()}.
+ *
+ * @throws Throwable if a failure or error occured
+ */
+ public void runBare()
+ throws Throwable
+ {
+ Throwable t = null;
+ setUp();
+ try
+ {
+ runTest();
+ }
+ catch (Throwable ex)
+ {
+ t = ex;
+ }
+ finally
+ {
+ try
+ {
+ tearDown();
+ }
+ catch (Throwable ex2)
+ {
+ if (t == null)
+ t = ex2;
+ }
+ }
+ if (t != null)
+ throw t;
+ }
+
+ /**
+ * Actually runs the test. The default implementation tries to find
+ * a method with the name specified in the constructor of this class.
+ * If such a method is found, it is invoked.
+ *
+ * @throws Throwable for test errors or failures
+ */
+ protected void runTest()
+ throws Throwable
+ {
+ Method method = null;
+ try
+ {
+ method = getClass().getMethod(fName, (Class[]) null);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ fail("Method " + fName + " not found");
+ }
+ if (! Modifier.isPublic(method.getModifiers()))
+ fail("Method " + fName + " must be public");
+ try
+ {
+ method.invoke(this, new Object[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ ex.fillInStackTrace();
+ throw ex.getTargetException();
+ }
+ catch (IllegalAccessException ex)
+ {
+ ex.fillInStackTrace();
+ throw ex;
+ }
+ }
+
+ /**
+ * Prepares the test. This is called before {@link #runTest()}.
+ *
+ * @throws Exception if anything goes wrong
+ */
+ protected void setUp()
+ throws Exception
+ {
+ // This is a hook with nothing to do itself.
+ }
+
+ /**
+ * Finishes the test. This is called after {@link #runTest()}.
+ *
+ * @throws Exception if anything goes wrong
+ */
+ protected void tearDown()
+ throws Exception
+ {
+ // This is a hook with nothing to do itself.
+ }
+
+ /**
+ * Returns the name of the test case.
+ *
+ * @return the name of the test case
+ */
+ public String getName()
+ {
+ return fName;
+ }
+
+ /**
+ * Sets the name of the test case.
+ *
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns a string representation of this test case.
+ *
+ * @return a string representation of this TestCase
+ */
+ public String toString()
+ {
+ StringBuffer str = new StringBuffer();
+ str.append(getName());
+ str.append('(');
+ str.append(getClass().getName());
+ str.append(')');
+ return str.toString();
+ }
+
+ /**
+ * Implementation of Mauve's Testlet interface. This makes JUnit TestCases
+ * automatically executable by the Mauve test harness.
+ */
+ public void test(TestHarness harness)
+ {
+ // Fetch the actual JUnit testsuite.
+ Test test = getTest();
+ // This is normally an instance of TestSuite.
+ if (test instanceof TestSuite)
+ {
+ TestSuite suite = (TestSuite) test;
+ suite.test(harness);
+ }
+ }
+
+ /**
+ * Performs a single test.
+ *
+ * @param harness the test harness to use
+ */
+ void testSingle(TestHarness harness)
+ {
+ TestCase.harness = harness;
+ try
+ {
+ runBare();
+ }
+ catch (Throwable ex)
+ {
+ harness.fail(ex.getMessage());
+ harness.debug(ex);
+ }
+ TestCase.harness = null;
+ }
+
+ /**
+ * Fetches the test suite to be run. This tries to call a static
+ * suite() method on this class, and, if that fails, create a new TestSuite
+ * with this class as parameter, which will collect all test*() methods.
+ *
+ * @return the testsuite for this class or null, if no test suite could be
+ * created
+ */
+ private Test getTest()
+ {
+ Class<?> clazz = getClass();
+ Method suiteMethod = null;
+ Test test = null;
+ try
+ {
+ suiteMethod = clazz.getMethod("suite");
+ }
+ catch (Exception ex)
+ {
+ test = new TestSuite(clazz);
+ }
+ if (test == null && suiteMethod != null) // suite() method found.
+ {
+ try
+ {
+ test = (Test) suiteMethod.invoke(null, (Object[]) new Class[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ test = null;
+ }
+ catch (IllegalAccessException ex)
+ {
+ test = null;
+ }
+ }
+ return test;
+ }
+}
diff --git a/junit/framework/TestFailure.java b/junit/framework/TestFailure.java
new file mode 100644
index 00000000..a3f0fe41
--- /dev/null
+++ b/junit/framework/TestFailure.java
@@ -0,0 +1,116 @@
+/* TestFailure.java -- Wraps a test failure
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * Wraps a failed test together with the failure.
+ */
+public class TestFailure
+{
+
+ /**
+ * The test that failed.
+ */
+ protected Test fFailedTest;
+
+ /**
+ * The exception that has been thrown.
+ */
+ protected Throwable fThrownException;
+
+ /**
+ * Creates a new TestFailure.
+ *
+ * @param failedTest the failed test
+ * @param thrownException the thrown exception
+ */
+ public TestFailure(Test failedTest, Throwable thrownException)
+ {
+ fFailedTest = failedTest;
+ fThrownException = thrownException;
+ }
+
+ /**
+ * Returns the message of the thrown exception.
+ *
+ * @return the message of the thrown exception
+ */
+ public String exceptionMessage()
+ {
+ return fThrownException.getMessage();
+ }
+
+ /**
+ * Returns the failed test.
+ *
+ * @return the failed test
+ */
+ public Test failedTest()
+ {
+ return fFailedTest;
+ }
+
+ /**
+ * Returns <code>true</code>, if this is a failure (that is, the exception is
+ * an instance of {@link AssertionFailedError}, <code>false</code>
+ * otherwise (in case of error for instance).
+ *
+ * @return <code>true</code>, if this is a failure, <code>false</code>
+ * otherwise
+ */
+ public boolean isFailure()
+ {
+ return fThrownException instanceof AssertionFailedError;
+ }
+
+ /**
+ * Returns a string representation of this TestFailure object.
+ *
+ * @return a string representation of this TestFailure object
+ */
+ public String toString()
+ {
+ StringBuffer str = new StringBuffer();
+ str.append(fFailedTest);
+ str.append(": ");
+ str.append(fThrownException.getMessage());
+ return str.toString();
+ }
+
+ /**
+ * Returns the stacktrace of the exception as string.
+ *
+ * @return the stacktrace of the exception as string
+ */
+ public String trace()
+ {
+ StringWriter w = new StringWriter();
+ PrintWriter p = new PrintWriter(w);
+ fThrownException.printStackTrace(p);
+ return w.getBuffer().toString();
+ }
+}
diff --git a/junit/framework/TestListener.java b/junit/framework/TestListener.java
new file mode 100644
index 00000000..987a8b65
--- /dev/null
+++ b/junit/framework/TestListener.java
@@ -0,0 +1,60 @@
+/* TestListener.java -- Listens for test progress
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+/**
+ * Listens for progress on a test.
+ */
+public interface TestListener
+{
+ /**
+ * Notifies that a test error has occured.
+ *
+ * @param test the test
+ * @param t the error that was thrown
+ */
+ void addError(Test test, Throwable t);
+
+ /**
+ * Notifies that a test failure has occured.
+ *
+ * @param test the test
+ * @param t the failure
+ */
+ void addFailure(Test test, AssertionFailedError t);
+
+ /**
+ * Notifies that a new test has started.
+ *
+ * @param test the test
+ */
+ void startTest(Test test);
+
+ /**
+ * Notifies that a new test has been finished.
+ *
+ * @param test the test
+ */
+ void endTest(Test test);
+}
diff --git a/junit/framework/TestResult.java b/junit/framework/TestResult.java
new file mode 100644
index 00000000..65e20732
--- /dev/null
+++ b/junit/framework/TestResult.java
@@ -0,0 +1,300 @@
+/* TestResult.java -- Collects test results
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Collects the results of a test run.
+ */
+public class TestResult
+{
+
+ /**
+ * The errors from the test run.
+ */
+ protected List<TestFailure> fErrors;
+
+ /**
+ * The failures from the test run.
+ */
+ protected List<TestFailure> fFailures;
+
+ /**
+ * The test listeners.
+ */
+ protected List<TestListener> fListeners;
+
+ /**
+ * The number of tests that have been run.
+ */
+ protected int fRunTests;
+
+ /**
+ * Indicates if the test run should stop.
+ */
+ private boolean fStop;
+
+ /**
+ * Creates a new TestResult object.
+ */
+ public TestResult()
+ {
+ fErrors = new ArrayList<TestFailure>();
+ fFailures = new ArrayList<TestFailure>();
+ fListeners = new ArrayList<TestListener>();
+ fRunTests = 0;
+ fStop = false;
+ }
+
+ /**
+ * Runs the specified TestCase.
+ *
+ * @param test the test case to run
+ */
+ protected void run(final TestCase test)
+ {
+ startTest(test);
+ Protectable protectable = new Protectable()
+ {
+ public void protect()
+ throws Throwable
+ {
+ test.runBare();
+ }
+ };
+ runProtected(test, protectable);
+ endTest(test);
+ }
+
+ /**
+ * Runs a test in a protected environment.
+ *
+ * @param test the test to run
+ * @param p the protectable
+ */
+ public void runProtected(final TestCase test, Protectable p)
+ {
+ try
+ {
+ p.protect();
+ }
+ catch (AssertionFailedError e)
+ {
+ addFailure(test, e);
+ }
+ catch (ThreadDeath e)
+ {
+ throw e;
+ }
+ catch (Throwable e)
+ {
+ addError(test, e);
+ }
+ }
+
+ /**
+ * Starts the specified test. This counts the tests and informs
+ * interested listeners.
+ *
+ * @param test the test to start
+ */
+ public void startTest(Test test)
+ {
+ final int count = test.countTestCases();
+ synchronized (this)
+ {
+ fRunTests += count;
+ }
+ for (Iterator<TestListener> i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = i.next();
+ l.startTest(test);
+ }
+ }
+
+ /**
+ * Ends the specified test. This informs interested listeners.
+ *
+ * @param test the test to end
+ */
+ public void endTest(Test test)
+ {
+ for (Iterator<TestListener> i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = i.next();
+ l.endTest(test);
+ }
+ }
+
+ /**
+ * Adds a failure to the test result.
+ *
+ * @param test the failed test
+ * @param failure the test failure
+ */
+ public synchronized void addFailure(Test test, AssertionFailedError failure)
+ {
+ fFailures.add(new TestFailure(test, failure));
+ for (Iterator<TestListener> i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = i.next();
+ l.addFailure(test, failure);
+ }
+ }
+
+ /**
+ * Adds an error to the test result.
+ *
+ * @param test the err'ed test
+ * @param failure the test error
+ */
+ public synchronized void addError(Test test, Throwable failure)
+ {
+ fErrors.add(new TestFailure(test, failure));
+ for (Iterator<TestListener> i = cloneListeners().iterator(); i.hasNext();)
+ {
+ TestListener l = i.next();
+ l.addError(test, failure);
+ }
+ }
+
+ /**
+ * Adds a test listener.
+ *
+ * @param l the listener to add
+ */
+ public synchronized void addListener(TestListener l)
+ {
+ fListeners.add(l);
+ }
+
+ /**
+ * Removes a test listener.
+ *
+ * @param l the listener to be removed
+ */
+ public synchronized void removeListener(TestListener l)
+ {
+ fListeners.remove(l);
+ }
+
+ /**
+ * Returns the number of errors.
+ *
+ * @return the number of errors
+ */
+ public synchronized int errorCount()
+ {
+ return fErrors.size();
+ }
+
+ /**
+ * Returns the errors in this test result.
+ *
+ * @return the errors in this test result
+ */
+ public synchronized Enumeration<TestFailure> errors()
+ {
+ return Collections.enumeration(fErrors);
+ }
+
+ /**
+ * Returns the number of failures.
+ *
+ * @return the number of failures
+ */
+ public synchronized int failureCount()
+ {
+ return fFailures.size();
+ }
+
+ /**
+ * Returns the failures in this test result.
+ *
+ * @return the failures in this test result
+ */
+ public synchronized Enumeration<TestFailure> failures()
+ {
+ return Collections.enumeration(fFailures);
+ }
+
+ /**
+ * Returns the number of tests that have been run.
+ *
+ * @return the number of tests that have been run
+ */
+ public synchronized int runCount()
+ {
+ return fRunTests;
+ }
+
+ /**
+ * Returns <code>true</code> when the test should stop, <code>false</code>
+ * otherwise.
+ *
+ * @return <code>true</code> when the test should stop, <code>false</code>
+ * otherwise
+ */
+ public synchronized boolean shouldStop()
+ {
+ return fStop;
+ }
+
+ /**
+ * Stops the test.
+ */
+ public synchronized void stop()
+ {
+ fStop = true;
+ }
+
+ /**
+ * Returns <code>true</code> when the test had no errors and no failures,
+ * <code>false</code> otherwise.
+ *
+ * @return <code>true</code> when the test had no errors and no failures,
+ * <code>false</code> otherwise
+ */
+ public synchronized boolean wasSuccessful()
+ {
+ return failureCount() == 0 && errorCount() == 0;
+ }
+
+ /**
+ * Returns a cloned listener list.
+ *
+ * @return a cloned listener list
+ */
+ private synchronized List<TestListener> cloneListeners()
+ {
+ List<TestListener> copy = new ArrayList<TestListener>();
+ copy.addAll(fListeners);
+ return copy;
+ }
+}
diff --git a/junit/framework/TestSuite.java b/junit/framework/TestSuite.java
new file mode 100644
index 00000000..365cec58
--- /dev/null
+++ b/junit/framework/TestSuite.java
@@ -0,0 +1,337 @@
+/* TestSuite.java -- JUnit test suite
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.framework;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+/**
+ * A collection of JUnit tests.
+ */
+public class TestSuite
+ implements Test, Testlet
+{
+
+ /**
+ * The name of the test.
+ */
+ private String fName;
+
+ /**
+ * The tests in this test suite.
+ */
+ private Vector<Test> fTests;
+
+ /**
+ * Creates a new test suite.
+ */
+ public TestSuite()
+ {
+ fTests = new Vector<Test>();
+ }
+
+ /**
+ * Creates a new test suite that loads its tests from the specified class.
+ *
+ * @param theClass the class to load the tests from
+ */
+ public TestSuite(Class<?> theClass)
+ {
+ this();
+ fName = theClass.getName();
+ Class<?> clazz = theClass;
+ List<String> names = new ArrayList<String>();
+ while (Test.class.isAssignableFrom(clazz))
+ {
+ Method[] methods = clazz.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++)
+ {
+ addTestMethod(methods[i], names, theClass);
+ }
+ clazz = clazz.getSuperclass();
+ }
+ }
+
+ /**
+ * Creates a new TestSuite with the specified name.
+ *
+ * @param name the name of the test suite
+ */
+ public TestSuite(String name)
+ {
+ setName(name);
+ }
+
+ /**
+ * Creates a new TestSuite with the specified name that loads the tests from
+ * the specified class.
+ *
+ * @param theClass the class to load the tests from
+ * @param name the name of the test suite
+ */
+ public TestSuite(Class<?> theClass, String name)
+ {
+ this(theClass);
+ setName(name);
+ }
+
+ /**
+ * Adds the specified method to the test suite if appropriate.
+ *
+ * @param method the method to check
+ * @param names the list of names of already added methods
+ * @param theClass the test class
+ */
+ private void addTestMethod(Method method, List<String> names, Class<?> theClass)
+ {
+ String name = method.getName();
+ if (! names.contains(name))
+ {
+ if (isPublicTestMethod(method))
+ {
+ names.add(name);
+ addTest(createTest(theClass, name));
+ }
+ }
+ }
+
+ /**
+ * Checks if the specified method is a test method and is public.
+ *
+ * @param method the method to check
+ *
+ * @return <code>true</code> if the method is a public test method,
+ * <code>false</code> otherwise
+ */
+ private boolean isPublicTestMethod(Method method)
+ {
+ return isTestMethod(method) && Modifier.isPublic(method.getModifiers());
+ }
+
+ /**
+ * Checks if the specified method is a test method.
+ *
+ * @param method the method to check
+ *
+ * @return <code>true</code> if the method is a test method,
+ * <code>false</code> otherwise
+ */
+ private boolean isTestMethod(Method method)
+ {
+ String name = method.getName();
+ Class<?>[] params = method.getParameterTypes();
+ Class<?> ret = method.getReturnType();
+ return params.length == 0 && name.startsWith("test")
+ && ret.equals(Void.TYPE);
+ }
+
+ /**
+ * Creates a test for the specified test class and with the specified
+ * name.
+ *
+ * @param theClass the test class
+ * @param name the test name
+ *
+ * @return the test instance
+ */
+ public static Test createTest(Class<?> theClass, String name)
+ {
+ Constructor<?> constructor = null;
+ Test test = null;
+ try
+ {
+ constructor = getTestConstructor(theClass);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ test = null;
+ }
+ if (constructor != null)
+ {
+ Object o = null;
+ try
+ {
+ if (constructor.getParameterTypes().length == 0)
+ {
+ o = constructor.newInstance(new Object[0]);
+ if (o instanceof TestCase)
+ ((TestCase) o).setName(name);
+ }
+ else
+ {
+ o = constructor.newInstance(new Object[]{ name });
+ }
+ }
+ catch (InstantiationException ex)
+ {
+ test = null;
+ }
+ catch (InvocationTargetException ex)
+ {
+ test = null;
+ }
+ catch (IllegalAccessException ex)
+ {
+ test = null;
+ }
+ test = (Test) o;
+ }
+ return test;
+ }
+
+ /**
+ * Returns the constructor for the specified test class.
+ *
+ * @param theClass the test class
+ *
+ * @return the constructor for the specified test class
+ *
+ * @throws NoSuchMethodException if no suitable constructor exists
+ */
+ public static Constructor<?> getTestConstructor(Class<?> theClass)
+ throws NoSuchMethodException
+ {
+ try
+ {
+ return theClass.getConstructor(String.class);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ // Search for a no-arg constructor below.
+ }
+ return theClass.getConstructor();
+ }
+
+ /**
+ * Returns the number of tests in this test suite.
+ *
+ * @return the number of tests in this test suite
+ */
+ public int countTestCases()
+ {
+ int count = 0;
+ for (Iterator<Test> i = fTests.iterator(); i.hasNext();)
+ {
+ Test test = i.next();
+ count += test.countTestCases();
+ }
+ return count;
+ }
+
+ /**
+ * Runs the test cases from this test suite.
+ *
+ * @param result the test results
+ */
+ public void run(TestResult result)
+ {
+ for (Iterator<Test> i = fTests.iterator(); i.hasNext();)
+ {
+ if (! result.shouldStop())
+ {
+ Test test = i.next();
+ runTest(test, result);
+ }
+ }
+ }
+
+ /**
+ * Runs a single test.
+ *
+ * @param test the test to run
+ * @param result the test results
+ */
+ public void runTest(Test test, TestResult result)
+ {
+ test.run(result);
+ }
+
+ /**
+ * Adds a single test to the test suite.
+ *
+ * @param test the test to add
+ */
+ public void addTest(Test test)
+ {
+ fTests.add(test);
+ }
+
+ /**
+ * Adds tests from the specified class to the test suite.
+ *
+ * @param testClass the class from which to load tests to add
+ */
+ public void addTestSuite(Class<?> testClass)
+ {
+ fTests.add(new TestSuite(testClass));
+ }
+
+ /**
+ * Sets the name for this test.
+ *
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ fName = name;
+ }
+
+ /**
+ * Returns the name of this test.
+ *
+ * @return the name of this test
+ */
+ public String getName()
+ {
+ return fName;
+ }
+
+ /**
+ * This implements the Mauve Testlet interface. This implementation
+ * runs all tests in this testsuite that are runnable by Mauve.
+ *
+ * @param harness the Mauve test harness
+ */
+ public void test(TestHarness harness)
+ {
+ for (Iterator<Test> i = fTests.iterator(); i.hasNext();)
+ {
+ Test test = i.next();
+ if (test instanceof TestCase)
+ ((TestCase) test).testSingle(harness);
+ else if (test instanceof Testlet)
+ ((Testlet) test).test(harness);
+ }
+ }
+
+}
diff --git a/junit/framework/package.html b/junit/framework/package.html
new file mode 100644
index 00000000..be471c48
--- /dev/null
+++ b/junit/framework/package.html
@@ -0,0 +1,36 @@
+<!--
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+-->
+<html>
+ <head>
+ <title>Mauve JUnit bridge</title>
+ <body>
+ <h1>Mauve JUnit bridge</h1>
+ <p>Allows JUnit tests to be run inside the Mauve Harness. This is a
+ complete implementation of the JUnit core API, with the additional
+ functionality to make every JUnit test case automatically runnable
+ inside Mauve. To achieve this, two changes to the API have been applied:
+ Both the TestCase and TestSuite class implement gnu.testlet.Testlet,
+ which makes them a Mauve Testlet. The methods Assert have been prepared
+ so that they call into the TestHarness check() methods when beeing
+ run inside a Mauve TestHarness. Otherwise they throw AssertionFailedErrors
+ like the standard JUnit implementation.</p>
+ </body>
+</html>
diff --git a/junit/runner/BaseTestRunner.java b/junit/runner/BaseTestRunner.java
new file mode 100644
index 00000000..b447e37a
--- /dev/null
+++ b/junit/runner/BaseTestRunner.java
@@ -0,0 +1,30 @@
+/* BaseRunner.java -- Base class for test runners
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.runner;
+
+// TODO: Implement.
+public class BaseTestRunner
+{
+
+}
diff --git a/junit/runner/CVS/Entries b/junit/runner/CVS/Entries
new file mode 100644
index 00000000..7954b241
--- /dev/null
+++ b/junit/runner/CVS/Entries
@@ -0,0 +1,2 @@
+/BaseTestRunner.java/1.1/Fri Oct 6 10:38:29 2006//
+D
diff --git a/junit/runner/CVS/Repository b/junit/runner/CVS/Repository
new file mode 100644
index 00000000..95108c97
--- /dev/null
+++ b/junit/runner/CVS/Repository
@@ -0,0 +1 @@
+mauve/junit/runner
diff --git a/junit/runner/CVS/Root b/junit/runner/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/junit/runner/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/junit/textui/CVS/Entries b/junit/textui/CVS/Entries
new file mode 100644
index 00000000..424ba242
--- /dev/null
+++ b/junit/textui/CVS/Entries
@@ -0,0 +1,2 @@
+/TestRunner.java/1.2/Tue Apr 24 00:45:01 2012//
+D
diff --git a/junit/textui/CVS/Repository b/junit/textui/CVS/Repository
new file mode 100644
index 00000000..ee9fceed
--- /dev/null
+++ b/junit/textui/CVS/Repository
@@ -0,0 +1 @@
+mauve/junit/textui
diff --git a/junit/textui/CVS/Root b/junit/textui/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/junit/textui/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/junit/textui/TestRunner.java b/junit/textui/TestRunner.java
new file mode 100644
index 00000000..06d1d474
--- /dev/null
+++ b/junit/textui/TestRunner.java
@@ -0,0 +1,44 @@
+/* TestRunner.java -- A text output test runner
+ Copyright (C) 2006 Roman Kennke (kennke@aicas.com)
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: not-a-test
+
+package junit.textui;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.runner.BaseTestRunner;
+
+// TODO: Implement.
+public class TestRunner
+ extends BaseTestRunner
+{
+
+ public static void run(Class<?> testClass)
+ {
+ run(new TestSuite(testClass));
+ }
+
+ public static void run(Test test)
+ {
+
+ }
+}
diff --git a/lang-tests b/lang-tests
new file mode 100644
index 00000000..777fa1fd
--- /dev/null
+++ b/lang-tests
@@ -0,0 +1,1614 @@
+gnu.testlet.java.lang.InterruptedException.constructor
+gnu.testlet.java.lang.InterruptedException.classInfo.getSuperclass
+gnu.testlet.java.lang.InterruptedException.classInfo.isPrimitive
+gnu.testlet.java.lang.InterruptedException.classInfo.getModifiers
+gnu.testlet.java.lang.InterruptedException.classInfo.isInterface
+gnu.testlet.java.lang.InterruptedException.classInfo.getSimpleName
+gnu.testlet.java.lang.InterruptedException.classInfo.isLocalClass
+gnu.testlet.java.lang.InterruptedException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.InterruptedException.classInfo.isMemberClass
+gnu.testlet.java.lang.InterruptedException.classInfo.isInstance
+gnu.testlet.java.lang.InterruptedException.classInfo.InstanceOf
+gnu.testlet.java.lang.InterruptedException.classInfo.getPackage
+gnu.testlet.java.lang.InterruptedException.classInfo.getInterfaces
+gnu.testlet.java.lang.InterruptedException.classInfo.isSynthetic
+gnu.testlet.java.lang.InterruptedException.classInfo.getName
+gnu.testlet.java.lang.InterruptedException.TryCatch
+gnu.testlet.java.lang.Float.compareTo
+gnu.testlet.java.lang.Float.valueOf
+gnu.testlet.java.lang.Float.classInfo.getSuperclass
+gnu.testlet.java.lang.Float.classInfo.isArray
+gnu.testlet.java.lang.Float.classInfo.isPrimitive
+gnu.testlet.java.lang.Float.classInfo.getModifiers
+gnu.testlet.java.lang.Float.classInfo.isInterface
+gnu.testlet.java.lang.Float.classInfo.getSimpleName
+gnu.testlet.java.lang.Float.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Float.classInfo.isLocalClass
+gnu.testlet.java.lang.Float.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Float.classInfo.isMemberClass
+gnu.testlet.java.lang.Float.classInfo.isAnnotation
+gnu.testlet.java.lang.Float.classInfo.isEnum
+gnu.testlet.java.lang.Float.classInfo.isInstance
+gnu.testlet.java.lang.Float.classInfo.InstanceOf
+gnu.testlet.java.lang.Float.classInfo.getPackage
+gnu.testlet.java.lang.Float.classInfo.getInterfaces
+gnu.testlet.java.lang.Float.classInfo.isSynthetic
+gnu.testlet.java.lang.Float.classInfo.getName
+gnu.testlet.java.lang.Float.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Float.toHexString
+gnu.testlet.java.lang.Float.new_Float
+gnu.testlet.java.lang.Float.floatToInt
+gnu.testlet.java.lang.Float.FloatTest
+gnu.testlet.java.lang.Float.compare
+gnu.testlet.java.lang.Float.parseFloat
+gnu.testlet.java.lang.Float.floatToLong
+gnu.testlet.java.lang.Short.classInfo.getSuperclass
+gnu.testlet.java.lang.Short.classInfo.isArray
+gnu.testlet.java.lang.Short.classInfo.isPrimitive
+gnu.testlet.java.lang.Short.classInfo.getModifiers
+gnu.testlet.java.lang.Short.classInfo.isInterface
+gnu.testlet.java.lang.Short.classInfo.getSimpleName
+gnu.testlet.java.lang.Short.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Short.classInfo.isLocalClass
+gnu.testlet.java.lang.Short.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Short.classInfo.isMemberClass
+gnu.testlet.java.lang.Short.classInfo.isAnnotation
+gnu.testlet.java.lang.Short.classInfo.isEnum
+gnu.testlet.java.lang.Short.classInfo.isInstance
+gnu.testlet.java.lang.Short.classInfo.InstanceOf
+gnu.testlet.java.lang.Short.classInfo.getPackage
+gnu.testlet.java.lang.Short.classInfo.getInterfaces
+gnu.testlet.java.lang.Short.classInfo.isSynthetic
+gnu.testlet.java.lang.Short.classInfo.getName
+gnu.testlet.java.lang.Short.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Short.ShortTest
+gnu.testlet.java.lang.Short.hash
+gnu.testlet.java.lang.Short.toString
+gnu.testlet.java.lang.String.surrogate
+gnu.testlet.java.lang.String.compareTo
+gnu.testlet.java.lang.String.substring
+gnu.testlet.java.lang.String.new_String
+gnu.testlet.java.lang.String.equals
+gnu.testlet.java.lang.String.indexOf
+gnu.testlet.java.lang.String.PR35482
+gnu.testlet.java.lang.String.ConsCharset
+gnu.testlet.java.lang.String.getBytes14
+gnu.testlet.java.lang.String.classInfo.getSuperclass
+gnu.testlet.java.lang.String.classInfo.isPrimitive
+gnu.testlet.java.lang.String.classInfo.getModifiers
+gnu.testlet.java.lang.String.classInfo.isInterface
+gnu.testlet.java.lang.String.classInfo.getSimpleName
+gnu.testlet.java.lang.String.classInfo.isLocalClass
+gnu.testlet.java.lang.String.classInfo.isAssignableFrom
+gnu.testlet.java.lang.String.classInfo.isMemberClass
+gnu.testlet.java.lang.String.classInfo.isInstance
+gnu.testlet.java.lang.String.classInfo.InstanceOf
+gnu.testlet.java.lang.String.classInfo.getPackage
+gnu.testlet.java.lang.String.classInfo.getInterfaces
+gnu.testlet.java.lang.String.classInfo.isSynthetic
+gnu.testlet.java.lang.String.classInfo.getName
+gnu.testlet.java.lang.String.charAt
+gnu.testlet.java.lang.String.getBytes13
+gnu.testlet.java.lang.String.hash
+gnu.testlet.java.lang.String.replaceAll
+gnu.testlet.java.lang.String.StringTest
+gnu.testlet.java.lang.String.decode
+gnu.testlet.java.lang.String.getBytes
+gnu.testlet.java.lang.String.split
+gnu.testlet.java.lang.String.to
+gnu.testlet.java.lang.String.CASE_INSENSITIVE_ORDER
+gnu.testlet.java.lang.String.startsWith
+gnu.testlet.java.lang.Class.rf2_help
+gnu.testlet.java.lang.Class.rf2_help$inner_interface_3
+gnu.testlet.java.lang.Class.init$C2
+gnu.testlet.java.lang.Class.newInstance$test6
+gnu.testlet.java.lang.Class.rf2_help$inner_class_3
+gnu.testlet.java.lang.Class.isArray
+gnu.testlet.java.lang.Class.rf2_help$inner_class_2
+gnu.testlet.java.lang.Class.init$C1
+gnu.testlet.java.lang.Class.newInstance$test2
+gnu.testlet.java.lang.Class.security
+gnu.testlet.java.lang.Class.isPrimitive
+gnu.testlet.java.lang.Class.newInstance$test1
+gnu.testlet.java.lang.Class.newInstance$test5
+gnu.testlet.java.lang.Class.reflect2
+gnu.testlet.java.lang.Class.rf2_help$inner_class_1
+gnu.testlet.java.lang.Class.IsAnonymousClass
+gnu.testlet.java.lang.Class.IsAnonymousClass$InnerClass
+gnu.testlet.java.lang.Class.rf_help
+gnu.testlet.java.lang.Class.rf2_help$inner_class_4
+gnu.testlet.java.lang.Class.isAnnotationPresent
+gnu.testlet.java.lang.Class.ClassTest$PrivateType
+gnu.testlet.java.lang.Class.serialization
+gnu.testlet.java.lang.Class.classInfo.getSuperclass
+gnu.testlet.java.lang.Class.classInfo.isPrimitive
+gnu.testlet.java.lang.Class.classInfo.getModifiers
+gnu.testlet.java.lang.Class.classInfo.isInterface
+gnu.testlet.java.lang.Class.classInfo.getSimpleName
+gnu.testlet.java.lang.Class.classInfo.isLocalClass
+gnu.testlet.java.lang.Class.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Class.classInfo.isMemberClass
+gnu.testlet.java.lang.Class.classInfo.isInstance
+gnu.testlet.java.lang.Class.classInfo.InstanceOf
+gnu.testlet.java.lang.Class.classInfo.getPackage
+gnu.testlet.java.lang.Class.classInfo.getInterfaces
+gnu.testlet.java.lang.Class.classInfo.isSynthetic
+gnu.testlet.java.lang.Class.classInfo.getName
+gnu.testlet.java.lang.Class.ClassTest
+gnu.testlet.java.lang.Class.GetSimpleName$InnerClass
+gnu.testlet.java.lang.Class.init
+gnu.testlet.java.lang.Class.rf2_help$inner_interface_2
+gnu.testlet.java.lang.Class.rf2_help$inner_class_1$inner_inner_class_1
+gnu.testlet.java.lang.Class.rf2_help$inner_interface_1
+gnu.testlet.java.lang.Class.init$I
+gnu.testlet.java.lang.Class.newInstance$test4
+gnu.testlet.java.lang.Class.GetSimpleName
+gnu.testlet.java.lang.Class.isAnnotation
+gnu.testlet.java.lang.Class.reflect
+gnu.testlet.java.lang.Class.init$C3
+gnu.testlet.java.lang.Class.init$C4
+gnu.testlet.java.lang.Class.newInstance
+gnu.testlet.java.lang.Class.init$C5
+gnu.testlet.java.lang.Class.newInstance$test3
+gnu.testlet.java.lang.Class.newInstance$test1$inner
+gnu.testlet.java.lang.Class.rf2_help$inner_interface_4
+gnu.testlet.java.lang.Class.security$TestSecurityManager3
+gnu.testlet.java.lang.Class.rf_help$inner
+gnu.testlet.java.lang.Class.pkg.test3
+gnu.testlet.java.lang.Class.pkg.test4
+gnu.testlet.java.lang.Class.pkg.test2
+gnu.testlet.java.lang.Class.pkg.test1
+gnu.testlet.java.lang.InternalError.constructor
+gnu.testlet.java.lang.InternalError.TryCatch
+gnu.testlet.java.lang.Long.compareTo
+gnu.testlet.java.lang.Long.new_Long
+gnu.testlet.java.lang.Long.classInfo.getSuperclass
+gnu.testlet.java.lang.Long.classInfo.isArray
+gnu.testlet.java.lang.Long.classInfo.isPrimitive
+gnu.testlet.java.lang.Long.classInfo.getModifiers
+gnu.testlet.java.lang.Long.classInfo.isInterface
+gnu.testlet.java.lang.Long.classInfo.getSimpleName
+gnu.testlet.java.lang.Long.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Long.classInfo.isLocalClass
+gnu.testlet.java.lang.Long.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Long.classInfo.isMemberClass
+gnu.testlet.java.lang.Long.classInfo.isAnnotation
+gnu.testlet.java.lang.Long.classInfo.isEnum
+gnu.testlet.java.lang.Long.classInfo.isInstance
+gnu.testlet.java.lang.Long.classInfo.InstanceOf
+gnu.testlet.java.lang.Long.classInfo.getPackage
+gnu.testlet.java.lang.Long.classInfo.getInterfaces
+gnu.testlet.java.lang.Long.classInfo.isSynthetic
+gnu.testlet.java.lang.Long.classInfo.getName
+gnu.testlet.java.lang.Long.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Long.Tests15
+gnu.testlet.java.lang.Long.compareToObject
+gnu.testlet.java.lang.Long.getLong
+gnu.testlet.java.lang.Long.toString
+gnu.testlet.java.lang.Long.LongTest
+gnu.testlet.java.lang.Long.decode
+gnu.testlet.java.lang.Long.parseLongRadix
+gnu.testlet.java.lang.Long.longModulo
+gnu.testlet.java.lang.Long.longDivide
+gnu.testlet.java.lang.Package.classInfo.getSuperclass
+gnu.testlet.java.lang.Package.classInfo.isPrimitive
+gnu.testlet.java.lang.Package.classInfo.getModifiers
+gnu.testlet.java.lang.Package.classInfo.isInterface
+gnu.testlet.java.lang.Package.classInfo.getSimpleName
+gnu.testlet.java.lang.Package.classInfo.isLocalClass
+gnu.testlet.java.lang.Package.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Package.classInfo.isMemberClass
+gnu.testlet.java.lang.Package.classInfo.isInstance
+gnu.testlet.java.lang.Package.classInfo.InstanceOf
+gnu.testlet.java.lang.Package.classInfo.getPackage
+gnu.testlet.java.lang.Package.classInfo.getInterfaces
+gnu.testlet.java.lang.Package.classInfo.isSynthetic
+gnu.testlet.java.lang.Package.classInfo.getName
+gnu.testlet.java.lang.Package.getPackage
+gnu.testlet.java.lang.StrictMath.tanh_strictfp
+gnu.testlet.java.lang.StrictMath.sin_strictfp
+gnu.testlet.java.lang.StrictMath.acos
+gnu.testlet.java.lang.StrictMath.sinh
+gnu.testlet.java.lang.StrictMath.tan_strictfp
+gnu.testlet.java.lang.StrictMath.cbrt_strictfp
+gnu.testlet.java.lang.StrictMath.cos
+gnu.testlet.java.lang.StrictMath.expm1
+gnu.testlet.java.lang.StrictMath.cosh
+gnu.testlet.java.lang.StrictMath.tan
+gnu.testlet.java.lang.StrictMath.cbrt
+gnu.testlet.java.lang.StrictMath.sin
+gnu.testlet.java.lang.StrictMath.asin
+gnu.testlet.java.lang.StrictMath.acos_strictfp
+gnu.testlet.java.lang.StrictMath.asin_strictfp
+gnu.testlet.java.lang.StrictMath.tanh
+gnu.testlet.java.lang.StrictMath.sinh_strictfp
+gnu.testlet.java.lang.StrictMath.expm1_strictfp
+gnu.testlet.java.lang.StrictMath.cos_strictfp
+gnu.testlet.java.lang.StrictMath.atan
+gnu.testlet.java.lang.StrictMath.cosh_strictfp
+gnu.testlet.java.lang.StrictMath.atan_strictfp
+gnu.testlet.java.lang.SecurityManager.thread
+gnu.testlet.java.lang.NegativeArraySizeException.constructor
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getSuperclass
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isPrimitive
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getModifiers
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isInterface
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getSimpleName
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isLocalClass
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isMemberClass
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isInstance
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.InstanceOf
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getPackage
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getInterfaces
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.isSynthetic
+gnu.testlet.java.lang.NegativeArraySizeException.classInfo.getName
+gnu.testlet.java.lang.NegativeArraySizeException.TryCatch
+gnu.testlet.java.lang.NoSuchFieldError.constructor
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getSuperclass
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isPrimitive
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getModifiers
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isInterface
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getSimpleName
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isLocalClass
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isMemberClass
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isInstance
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.InstanceOf
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getPackage
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getInterfaces
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.isSynthetic
+gnu.testlet.java.lang.NoSuchFieldError.classInfo.getName
+gnu.testlet.java.lang.NoSuchFieldError.TryCatch
+gnu.testlet.java.lang.IllegalStateException.constructor
+gnu.testlet.java.lang.IllegalStateException.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalStateException.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalStateException.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalStateException.classInfo.isInterface
+gnu.testlet.java.lang.IllegalStateException.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalStateException.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalStateException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalStateException.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalStateException.classInfo.isInstance
+gnu.testlet.java.lang.IllegalStateException.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalStateException.classInfo.getPackage
+gnu.testlet.java.lang.IllegalStateException.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalStateException.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalStateException.classInfo.getName
+gnu.testlet.java.lang.IllegalStateException.TryCatch
+gnu.testlet.java.lang.ExceptionInInitializerError.constructor
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getSuperclass
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isPrimitive
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getModifiers
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isInterface
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getSimpleName
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isLocalClass
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isMemberClass
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isInstance
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.InstanceOf
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getPackage
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getInterfaces
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.isSynthetic
+gnu.testlet.java.lang.ExceptionInInitializerError.classInfo.getName
+gnu.testlet.java.lang.ExceptionInInitializerError.TryCatch
+gnu.testlet.java.lang.NoSuchMethodError.constructor
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getSuperclass
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isPrimitive
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getModifiers
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isInterface
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getSimpleName
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isLocalClass
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isMemberClass
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isInstance
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.InstanceOf
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getPackage
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getInterfaces
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.isSynthetic
+gnu.testlet.java.lang.NoSuchMethodError.classInfo.getName
+gnu.testlet.java.lang.NoSuchMethodError.TryCatch
+gnu.testlet.java.lang.Runtime.security
+gnu.testlet.java.lang.IllegalMonitorStateException.constructor
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isInterface
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isInstance
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getPackage
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalMonitorStateException.classInfo.getName
+gnu.testlet.java.lang.IllegalMonitorStateException.TryCatch
+gnu.testlet.java.lang.Double.compareTo
+gnu.testlet.java.lang.Double.new_Double
+gnu.testlet.java.lang.Double.DoubleSetterTest
+gnu.testlet.java.lang.Double.valueOf
+gnu.testlet.java.lang.Double.classInfo.getSuperclass
+gnu.testlet.java.lang.Double.classInfo.isArray
+gnu.testlet.java.lang.Double.classInfo.isPrimitive
+gnu.testlet.java.lang.Double.classInfo.getModifiers
+gnu.testlet.java.lang.Double.classInfo.isInterface
+gnu.testlet.java.lang.Double.classInfo.getSimpleName
+gnu.testlet.java.lang.Double.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Double.classInfo.isLocalClass
+gnu.testlet.java.lang.Double.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Double.classInfo.isMemberClass
+gnu.testlet.java.lang.Double.classInfo.isAnnotation
+gnu.testlet.java.lang.Double.classInfo.isEnum
+gnu.testlet.java.lang.Double.classInfo.isInstance
+gnu.testlet.java.lang.Double.classInfo.InstanceOf
+gnu.testlet.java.lang.Double.classInfo.getPackage
+gnu.testlet.java.lang.Double.classInfo.getInterfaces
+gnu.testlet.java.lang.Double.classInfo.isSynthetic
+gnu.testlet.java.lang.Double.classInfo.getName
+gnu.testlet.java.lang.Double.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Double.doubleToLong
+gnu.testlet.java.lang.Double.toHexString
+gnu.testlet.java.lang.Double.doubleToLongBits
+gnu.testlet.java.lang.Double.valueOfDouble
+gnu.testlet.java.lang.Double.DoubleSetterTest$DoubleHolder
+gnu.testlet.java.lang.Double.DoubleTest
+gnu.testlet.java.lang.Double.compareToObject
+gnu.testlet.java.lang.Double.compare
+gnu.testlet.java.lang.Double.parseDouble
+gnu.testlet.java.lang.Double.doubleToInt
+gnu.testlet.java.lang.Double.doubleToRawLongBits
+gnu.testlet.java.lang.NoSuchFieldException.constructor
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getSuperclass
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isPrimitive
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getModifiers
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isInterface
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getSimpleName
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isLocalClass
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isMemberClass
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isInstance
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.InstanceOf
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getPackage
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getInterfaces
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.isSynthetic
+gnu.testlet.java.lang.NoSuchFieldException.classInfo.getName
+gnu.testlet.java.lang.NoSuchFieldException.TryCatch
+gnu.testlet.java.lang.Object.wait
+gnu.testlet.java.lang.Object.constructor
+gnu.testlet.java.lang.Object.classInfo.getSuperclass
+gnu.testlet.java.lang.Object.classInfo.isArray
+gnu.testlet.java.lang.Object.classInfo.isPrimitive
+gnu.testlet.java.lang.Object.classInfo.getModifiers
+gnu.testlet.java.lang.Object.classInfo.isInterface
+gnu.testlet.java.lang.Object.classInfo.getSimpleName
+gnu.testlet.java.lang.Object.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Object.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.Object.classInfo.getConstructors
+gnu.testlet.java.lang.Object.classInfo.isLocalClass
+gnu.testlet.java.lang.Object.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Object.classInfo.isMemberClass
+gnu.testlet.java.lang.Object.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.Object.classInfo.isAnnotation
+gnu.testlet.java.lang.Object.classInfo.isEnum
+gnu.testlet.java.lang.Object.classInfo.isInstance
+gnu.testlet.java.lang.Object.classInfo.getDeclaredFields
+gnu.testlet.java.lang.Object.classInfo.InstanceOf
+gnu.testlet.java.lang.Object.classInfo.getPackage
+gnu.testlet.java.lang.Object.classInfo.getInterfaces
+gnu.testlet.java.lang.Object.classInfo.isSynthetic
+gnu.testlet.java.lang.Object.classInfo.getName
+gnu.testlet.java.lang.Object.classInfo.getMethods
+gnu.testlet.java.lang.Object.classInfo.getFields
+gnu.testlet.java.lang.Object.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Object.clone
+gnu.testlet.java.lang.Object.ObjectTest
+gnu.testlet.java.lang.Object.oom
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.constructor
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getSuperclass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isArray
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getComponentType
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isPrimitive
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getConstructor
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getModifiers
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isInterface
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getAnnotations
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getSimpleName
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getField
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getConstructors
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isLocalClass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isMemberClass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getCanonicalName
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isAnnotation
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getAnnotation
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isEnum
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getClasses
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isInstance
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.InstanceOf
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getPackage
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getInterfaces
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isSynthetic
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getName
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getMethod
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getMethods
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getDeclaredField
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.getFields
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ArrayIndexOutOfBoundsException.TryCatch
+gnu.testlet.java.lang.Cloneable.CloneableTest
+gnu.testlet.java.lang.StringBuffer.PR34840
+gnu.testlet.java.lang.StringBuffer.classInfo.getSuperclass
+gnu.testlet.java.lang.StringBuffer.classInfo.isPrimitive
+gnu.testlet.java.lang.StringBuffer.classInfo.getModifiers
+gnu.testlet.java.lang.StringBuffer.classInfo.isInterface
+gnu.testlet.java.lang.StringBuffer.classInfo.getSimpleName
+gnu.testlet.java.lang.StringBuffer.classInfo.isLocalClass
+gnu.testlet.java.lang.StringBuffer.classInfo.isAssignableFrom
+gnu.testlet.java.lang.StringBuffer.classInfo.isMemberClass
+gnu.testlet.java.lang.StringBuffer.classInfo.isInstance
+gnu.testlet.java.lang.StringBuffer.classInfo.InstanceOf
+gnu.testlet.java.lang.StringBuffer.classInfo.getPackage
+gnu.testlet.java.lang.StringBuffer.classInfo.getInterfaces
+gnu.testlet.java.lang.StringBuffer.classInfo.isSynthetic
+gnu.testlet.java.lang.StringBuffer.classInfo.getName
+gnu.testlet.java.lang.StringBuffer.plus
+gnu.testlet.java.lang.StringBuffer.StringBufferTest
+gnu.testlet.java.lang.UnsatisfiedLinkError.constructor
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getSuperclass
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isArray
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isPrimitive
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getModifiers
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isInterface
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getSimpleName
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getConstructors
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isLocalClass
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isMemberClass
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isAnnotation
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isEnum
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isInstance
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.InstanceOf
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getPackage
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getInterfaces
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isSynthetic
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getName
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getMethods
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.getFields
+gnu.testlet.java.lang.UnsatisfiedLinkError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.UnsatisfiedLinkError.TryCatch
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.constructor
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getSuperclass
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isArray
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isPrimitive
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getModifiers
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isInterface
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getSimpleName
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getConstructors
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isLocalClass
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isMemberClass
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isAnnotation
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isEnum
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isInstance
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.InstanceOf
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getPackage
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getInterfaces
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isSynthetic
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getName
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getMethods
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.getFields
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.StringIndexOutOfBoundsException.TryCatch
+gnu.testlet.java.lang.NumberFormatException.constructor
+gnu.testlet.java.lang.NumberFormatException.classInfo.getSuperclass
+gnu.testlet.java.lang.NumberFormatException.classInfo.isPrimitive
+gnu.testlet.java.lang.NumberFormatException.classInfo.getModifiers
+gnu.testlet.java.lang.NumberFormatException.classInfo.isInterface
+gnu.testlet.java.lang.NumberFormatException.classInfo.getSimpleName
+gnu.testlet.java.lang.NumberFormatException.classInfo.isLocalClass
+gnu.testlet.java.lang.NumberFormatException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NumberFormatException.classInfo.isMemberClass
+gnu.testlet.java.lang.NumberFormatException.classInfo.isInstance
+gnu.testlet.java.lang.NumberFormatException.classInfo.InstanceOf
+gnu.testlet.java.lang.NumberFormatException.classInfo.getPackage
+gnu.testlet.java.lang.NumberFormatException.classInfo.getInterfaces
+gnu.testlet.java.lang.NumberFormatException.classInfo.isSynthetic
+gnu.testlet.java.lang.NumberFormatException.classInfo.getName
+gnu.testlet.java.lang.NumberFormatException.TryCatch
+gnu.testlet.java.lang.IllegalAccessException.constructor
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isInterface
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isInstance
+gnu.testlet.java.lang.IllegalAccessException.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getPackage
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalAccessException.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalAccessException.classInfo.getName
+gnu.testlet.java.lang.IllegalAccessException.TryCatch
+gnu.testlet.java.lang.Number.NumberTest
+gnu.testlet.java.lang.Number.NewNumber
+gnu.testlet.java.lang.OutOfMemoryError.constructor
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getSuperclass
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isPrimitive
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getModifiers
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isInterface
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getSimpleName
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isLocalClass
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isMemberClass
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isInstance
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.InstanceOf
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getPackage
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getInterfaces
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.isSynthetic
+gnu.testlet.java.lang.OutOfMemoryError.classInfo.getName
+gnu.testlet.java.lang.OutOfMemoryError.TryCatch
+gnu.testlet.java.lang.UnknownError.constructor
+gnu.testlet.java.lang.UnknownError.classInfo.getSuperclass
+gnu.testlet.java.lang.UnknownError.classInfo.isArray
+gnu.testlet.java.lang.UnknownError.classInfo.isPrimitive
+gnu.testlet.java.lang.UnknownError.classInfo.getModifiers
+gnu.testlet.java.lang.UnknownError.classInfo.isInterface
+gnu.testlet.java.lang.UnknownError.classInfo.getSimpleName
+gnu.testlet.java.lang.UnknownError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.UnknownError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.UnknownError.classInfo.getConstructors
+gnu.testlet.java.lang.UnknownError.classInfo.isLocalClass
+gnu.testlet.java.lang.UnknownError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.UnknownError.classInfo.isMemberClass
+gnu.testlet.java.lang.UnknownError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.UnknownError.classInfo.isAnnotation
+gnu.testlet.java.lang.UnknownError.classInfo.isEnum
+gnu.testlet.java.lang.UnknownError.classInfo.isInstance
+gnu.testlet.java.lang.UnknownError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.UnknownError.classInfo.InstanceOf
+gnu.testlet.java.lang.UnknownError.classInfo.getPackage
+gnu.testlet.java.lang.UnknownError.classInfo.getInterfaces
+gnu.testlet.java.lang.UnknownError.classInfo.isSynthetic
+gnu.testlet.java.lang.UnknownError.classInfo.getName
+gnu.testlet.java.lang.UnknownError.classInfo.getMethods
+gnu.testlet.java.lang.UnknownError.classInfo.getFields
+gnu.testlet.java.lang.UnknownError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.UnknownError.TryCatch
+gnu.testlet.java.lang.CloneNotSupportedException.constructor
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getSuperclass
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isPrimitive
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getModifiers
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isInterface
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getSimpleName
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getConstructors
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isLocalClass
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isMemberClass
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isInstance
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.InstanceOf
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getPackage
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getInterfaces
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.isSynthetic
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getName
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getMethods
+gnu.testlet.java.lang.CloneNotSupportedException.classInfo.getFields
+gnu.testlet.java.lang.CloneNotSupportedException.TryCatch
+gnu.testlet.java.lang.StackOverflowError.constructor
+gnu.testlet.java.lang.StackOverflowError.classInfo.getSuperclass
+gnu.testlet.java.lang.StackOverflowError.classInfo.isArray
+gnu.testlet.java.lang.StackOverflowError.classInfo.isPrimitive
+gnu.testlet.java.lang.StackOverflowError.classInfo.getModifiers
+gnu.testlet.java.lang.StackOverflowError.classInfo.isInterface
+gnu.testlet.java.lang.StackOverflowError.classInfo.getSimpleName
+gnu.testlet.java.lang.StackOverflowError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.StackOverflowError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.StackOverflowError.classInfo.getConstructors
+gnu.testlet.java.lang.StackOverflowError.classInfo.isLocalClass
+gnu.testlet.java.lang.StackOverflowError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.StackOverflowError.classInfo.isMemberClass
+gnu.testlet.java.lang.StackOverflowError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.StackOverflowError.classInfo.isAnnotation
+gnu.testlet.java.lang.StackOverflowError.classInfo.isEnum
+gnu.testlet.java.lang.StackOverflowError.classInfo.isInstance
+gnu.testlet.java.lang.StackOverflowError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.StackOverflowError.classInfo.InstanceOf
+gnu.testlet.java.lang.StackOverflowError.classInfo.getPackage
+gnu.testlet.java.lang.StackOverflowError.classInfo.getInterfaces
+gnu.testlet.java.lang.StackOverflowError.classInfo.isSynthetic
+gnu.testlet.java.lang.StackOverflowError.classInfo.getName
+gnu.testlet.java.lang.StackOverflowError.classInfo.getMethods
+gnu.testlet.java.lang.StackOverflowError.classInfo.getFields
+gnu.testlet.java.lang.StackOverflowError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.StackOverflowError.TryCatch
+gnu.testlet.java.lang.ClassCircularityError.constructor
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getSuperclass
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isArray
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getComponentType
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isPrimitive
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getConstructor
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getModifiers
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isInterface
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getAnnotations
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getSimpleName
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getField
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getConstructors
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isLocalClass
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isMemberClass
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getCanonicalName
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isAnnotation
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getAnnotation
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isEnum
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getClasses
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isInstance
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ClassCircularityError.classInfo.InstanceOf
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getPackage
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getInterfaces
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isSynthetic
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getName
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getMethod
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getMethods
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getDeclaredField
+gnu.testlet.java.lang.ClassCircularityError.classInfo.getFields
+gnu.testlet.java.lang.ClassCircularityError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ClassCircularityError.TryCatch
+gnu.testlet.java.lang.ProcessBuilder.simple
+gnu.testlet.java.lang.IllegalAccessError.constructor
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isInterface
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isInstance
+gnu.testlet.java.lang.IllegalAccessError.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getPackage
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalAccessError.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalAccessError.classInfo.getName
+gnu.testlet.java.lang.IllegalAccessError.TryCatch
+gnu.testlet.java.lang.System.security
+gnu.testlet.java.lang.System.identityHashCode
+gnu.testlet.java.lang.System.getProperty
+gnu.testlet.java.lang.System.arraycopy
+gnu.testlet.java.lang.EnumConstantNotPresentException.constructor
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getSuperclass
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isPrimitive
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getModifiers
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isInterface
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getSimpleName
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isLocalClass
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isMemberClass
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isInstance
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.InstanceOf
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getPackage
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getInterfaces
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.isSynthetic
+gnu.testlet.java.lang.EnumConstantNotPresentException.classInfo.getName
+gnu.testlet.java.lang.EnumConstantNotPresentException.TryCatch
+gnu.testlet.java.lang.ArithmeticException.constructor
+gnu.testlet.java.lang.ArithmeticException.classInfo.getSuperclass
+gnu.testlet.java.lang.ArithmeticException.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ArithmeticException.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ArithmeticException.classInfo.isArray
+gnu.testlet.java.lang.ArithmeticException.classInfo.getComponentType
+gnu.testlet.java.lang.ArithmeticException.classInfo.isPrimitive
+gnu.testlet.java.lang.ArithmeticException.classInfo.getConstructor
+gnu.testlet.java.lang.ArithmeticException.classInfo.getModifiers
+gnu.testlet.java.lang.ArithmeticException.classInfo.isInterface
+gnu.testlet.java.lang.ArithmeticException.classInfo.getAnnotations
+gnu.testlet.java.lang.ArithmeticException.classInfo.getSimpleName
+gnu.testlet.java.lang.ArithmeticException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ArithmeticException.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ArithmeticException.classInfo.getField
+gnu.testlet.java.lang.ArithmeticException.classInfo.getConstructors
+gnu.testlet.java.lang.ArithmeticException.classInfo.isLocalClass
+gnu.testlet.java.lang.ArithmeticException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ArithmeticException.classInfo.isMemberClass
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ArithmeticException.classInfo.getCanonicalName
+gnu.testlet.java.lang.ArithmeticException.classInfo.isAnnotation
+gnu.testlet.java.lang.ArithmeticException.classInfo.getAnnotation
+gnu.testlet.java.lang.ArithmeticException.classInfo.isEnum
+gnu.testlet.java.lang.ArithmeticException.classInfo.getClasses
+gnu.testlet.java.lang.ArithmeticException.classInfo.isInstance
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ArithmeticException.classInfo.InstanceOf
+gnu.testlet.java.lang.ArithmeticException.classInfo.getPackage
+gnu.testlet.java.lang.ArithmeticException.classInfo.getInterfaces
+gnu.testlet.java.lang.ArithmeticException.classInfo.isSynthetic
+gnu.testlet.java.lang.ArithmeticException.classInfo.getName
+gnu.testlet.java.lang.ArithmeticException.classInfo.getMethod
+gnu.testlet.java.lang.ArithmeticException.classInfo.getMethods
+gnu.testlet.java.lang.ArithmeticException.classInfo.getDeclaredField
+gnu.testlet.java.lang.ArithmeticException.classInfo.getFields
+gnu.testlet.java.lang.ArithmeticException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ArithmeticException.TryCatch
+gnu.testlet.java.lang.VerifyError.constructor
+gnu.testlet.java.lang.VerifyError.classInfo.getSuperclass
+gnu.testlet.java.lang.VerifyError.classInfo.isArray
+gnu.testlet.java.lang.VerifyError.classInfo.isPrimitive
+gnu.testlet.java.lang.VerifyError.classInfo.getModifiers
+gnu.testlet.java.lang.VerifyError.classInfo.isInterface
+gnu.testlet.java.lang.VerifyError.classInfo.getSimpleName
+gnu.testlet.java.lang.VerifyError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.VerifyError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.VerifyError.classInfo.getConstructors
+gnu.testlet.java.lang.VerifyError.classInfo.isLocalClass
+gnu.testlet.java.lang.VerifyError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.VerifyError.classInfo.isMemberClass
+gnu.testlet.java.lang.VerifyError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.VerifyError.classInfo.isAnnotation
+gnu.testlet.java.lang.VerifyError.classInfo.isEnum
+gnu.testlet.java.lang.VerifyError.classInfo.isInstance
+gnu.testlet.java.lang.VerifyError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.VerifyError.classInfo.InstanceOf
+gnu.testlet.java.lang.VerifyError.classInfo.getPackage
+gnu.testlet.java.lang.VerifyError.classInfo.getInterfaces
+gnu.testlet.java.lang.VerifyError.classInfo.isSynthetic
+gnu.testlet.java.lang.VerifyError.classInfo.getName
+gnu.testlet.java.lang.VerifyError.classInfo.getMethods
+gnu.testlet.java.lang.VerifyError.classInfo.getFields
+gnu.testlet.java.lang.VerifyError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.VerifyError.TryCatch
+gnu.testlet.java.lang.StringBuilder.classInfo.getSuperclass
+gnu.testlet.java.lang.StringBuilder.classInfo.isPrimitive
+gnu.testlet.java.lang.StringBuilder.classInfo.getModifiers
+gnu.testlet.java.lang.StringBuilder.classInfo.isInterface
+gnu.testlet.java.lang.StringBuilder.classInfo.getSimpleName
+gnu.testlet.java.lang.StringBuilder.classInfo.isLocalClass
+gnu.testlet.java.lang.StringBuilder.classInfo.isAssignableFrom
+gnu.testlet.java.lang.StringBuilder.classInfo.isMemberClass
+gnu.testlet.java.lang.StringBuilder.classInfo.isInstance
+gnu.testlet.java.lang.StringBuilder.classInfo.InstanceOf
+gnu.testlet.java.lang.StringBuilder.classInfo.getPackage
+gnu.testlet.java.lang.StringBuilder.classInfo.getInterfaces
+gnu.testlet.java.lang.StringBuilder.classInfo.isSynthetic
+gnu.testlet.java.lang.StringBuilder.classInfo.getName
+gnu.testlet.java.lang.NoSuchMethodException.constructor
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getSuperclass
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isPrimitive
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getModifiers
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isInterface
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getSimpleName
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isLocalClass
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isMemberClass
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isInstance
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.InstanceOf
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getPackage
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getInterfaces
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.isSynthetic
+gnu.testlet.java.lang.NoSuchMethodException.classInfo.getName
+gnu.testlet.java.lang.NoSuchMethodException.TryCatch
+gnu.testlet.java.lang.ref.PhantomReference.phantom$Reffer
+gnu.testlet.java.lang.ref.PhantomReference.phantom
+gnu.testlet.java.lang.ref.WeakReference.weakref
+gnu.testlet.java.lang.ref.WeakReference.weakref$Reffer
+gnu.testlet.java.lang.Thread.interrupt
+gnu.testlet.java.lang.Thread.security
+gnu.testlet.java.lang.Thread.name
+gnu.testlet.java.lang.Thread.security$1
+gnu.testlet.java.lang.Thread.security10
+gnu.testlet.java.lang.Thread.security$SysTestRunner
+gnu.testlet.java.lang.Thread.insecurity$SysTestRunner
+gnu.testlet.java.lang.Thread.insecurity
+gnu.testlet.java.lang.Thread.getThreadGroup
+gnu.testlet.java.lang.Thread.priority
+gnu.testlet.java.lang.Thread.sleep
+gnu.testlet.java.lang.Thread.stop
+gnu.testlet.java.lang.Thread.security10$1
+gnu.testlet.java.lang.Thread.insecurity$SysTestRunner$1
+gnu.testlet.java.lang.Thread.security$SysTestRunner$1
+gnu.testlet.java.lang.Thread.insecurity$1
+gnu.testlet.java.lang.Thread.daemon
+gnu.testlet.java.lang.Thread.contextClassLoader
+gnu.testlet.java.lang.Thread.join
+gnu.testlet.java.lang.Thread.isAlive
+gnu.testlet.java.lang.Thread.security10$MySecurityManager
+gnu.testlet.java.lang.IndexOutOfBoundsException.constructor
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getSuperclass
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isPrimitive
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getModifiers
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isInterface
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getSimpleName
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isLocalClass
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isMemberClass
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isInstance
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.InstanceOf
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getPackage
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getInterfaces
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.isSynthetic
+gnu.testlet.java.lang.IndexOutOfBoundsException.classInfo.getName
+gnu.testlet.java.lang.IndexOutOfBoundsException.TryCatch
+gnu.testlet.java.lang.SecurityException.constructor
+gnu.testlet.java.lang.SecurityException.classInfo.getSuperclass
+gnu.testlet.java.lang.SecurityException.classInfo.isArray
+gnu.testlet.java.lang.SecurityException.classInfo.isPrimitive
+gnu.testlet.java.lang.SecurityException.classInfo.getModifiers
+gnu.testlet.java.lang.SecurityException.classInfo.isInterface
+gnu.testlet.java.lang.SecurityException.classInfo.getSimpleName
+gnu.testlet.java.lang.SecurityException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.SecurityException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.SecurityException.classInfo.getConstructors
+gnu.testlet.java.lang.SecurityException.classInfo.isLocalClass
+gnu.testlet.java.lang.SecurityException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.SecurityException.classInfo.isMemberClass
+gnu.testlet.java.lang.SecurityException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.SecurityException.classInfo.isAnnotation
+gnu.testlet.java.lang.SecurityException.classInfo.isEnum
+gnu.testlet.java.lang.SecurityException.classInfo.isInstance
+gnu.testlet.java.lang.SecurityException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.SecurityException.classInfo.InstanceOf
+gnu.testlet.java.lang.SecurityException.classInfo.getPackage
+gnu.testlet.java.lang.SecurityException.classInfo.getInterfaces
+gnu.testlet.java.lang.SecurityException.classInfo.isSynthetic
+gnu.testlet.java.lang.SecurityException.classInfo.getName
+gnu.testlet.java.lang.SecurityException.classInfo.getMethods
+gnu.testlet.java.lang.SecurityException.classInfo.getFields
+gnu.testlet.java.lang.SecurityException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.SecurityException.TryCatch
+gnu.testlet.java.lang.Enum.PR33183
+gnu.testlet.java.lang.InstantiationError.constructor
+gnu.testlet.java.lang.InstantiationError.TryCatch
+gnu.testlet.java.lang.Error.constructor
+gnu.testlet.java.lang.Error.classInfo.getSuperclass
+gnu.testlet.java.lang.Error.classInfo.isPrimitive
+gnu.testlet.java.lang.Error.classInfo.getModifiers
+gnu.testlet.java.lang.Error.classInfo.isInterface
+gnu.testlet.java.lang.Error.classInfo.getSimpleName
+gnu.testlet.java.lang.Error.classInfo.isLocalClass
+gnu.testlet.java.lang.Error.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Error.classInfo.isMemberClass
+gnu.testlet.java.lang.Error.classInfo.isInstance
+gnu.testlet.java.lang.Error.classInfo.InstanceOf
+gnu.testlet.java.lang.Error.classInfo.getPackage
+gnu.testlet.java.lang.Error.classInfo.getInterfaces
+gnu.testlet.java.lang.Error.classInfo.isSynthetic
+gnu.testlet.java.lang.Error.classInfo.getName
+gnu.testlet.java.lang.Error.TryCatch
+gnu.testlet.java.lang.NullPointerException.constructor
+gnu.testlet.java.lang.NullPointerException.classInfo.getSuperclass
+gnu.testlet.java.lang.NullPointerException.classInfo.isPrimitive
+gnu.testlet.java.lang.NullPointerException.classInfo.getModifiers
+gnu.testlet.java.lang.NullPointerException.classInfo.isInterface
+gnu.testlet.java.lang.NullPointerException.classInfo.getSimpleName
+gnu.testlet.java.lang.NullPointerException.classInfo.isLocalClass
+gnu.testlet.java.lang.NullPointerException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.NullPointerException.classInfo.isMemberClass
+gnu.testlet.java.lang.NullPointerException.classInfo.isInstance
+gnu.testlet.java.lang.NullPointerException.classInfo.InstanceOf
+gnu.testlet.java.lang.NullPointerException.classInfo.getPackage
+gnu.testlet.java.lang.NullPointerException.classInfo.getInterfaces
+gnu.testlet.java.lang.NullPointerException.classInfo.isSynthetic
+gnu.testlet.java.lang.NullPointerException.classInfo.getName
+gnu.testlet.java.lang.NullPointerException.TryCatch
+gnu.testlet.java.lang.UnsupportedClassVersionError.constructor
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getSuperclass
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isArray
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isPrimitive
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getModifiers
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isInterface
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getSimpleName
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getConstructors
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isLocalClass
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isMemberClass
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isAnnotation
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isEnum
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isInstance
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.InstanceOf
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getPackage
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getInterfaces
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isSynthetic
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getName
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getMethods
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.getFields
+gnu.testlet.java.lang.UnsupportedClassVersionError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.UnsupportedClassVersionError.TryCatch
+gnu.testlet.java.lang.ThreadLocal.simple
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getSuperclass
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isArray
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isPrimitive
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getModifiers
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isInterface
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getSimpleName
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getConstructors
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isLocalClass
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isMemberClass
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isAnnotation
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isEnum
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isInstance
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.InstanceOf
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getPackage
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getInterfaces
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isSynthetic
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getName
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getMethods
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.getFields
+gnu.testlet.java.lang.TypeNotPresentException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.TypeNotPresentException.TryCatch
+gnu.testlet.java.lang.Boolean.hashcode_Boolean
+gnu.testlet.java.lang.Boolean.get
+gnu.testlet.java.lang.Boolean.valueOfString
+gnu.testlet.java.lang.Boolean.parseBoolean
+gnu.testlet.java.lang.Boolean.classInfo.getSuperclass
+gnu.testlet.java.lang.Boolean.classInfo.isArray
+gnu.testlet.java.lang.Boolean.classInfo.isPrimitive
+gnu.testlet.java.lang.Boolean.classInfo.getModifiers
+gnu.testlet.java.lang.Boolean.classInfo.isInterface
+gnu.testlet.java.lang.Boolean.classInfo.getSimpleName
+gnu.testlet.java.lang.Boolean.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Boolean.classInfo.isLocalClass
+gnu.testlet.java.lang.Boolean.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Boolean.classInfo.isMemberClass
+gnu.testlet.java.lang.Boolean.classInfo.isAnnotation
+gnu.testlet.java.lang.Boolean.classInfo.isEnum
+gnu.testlet.java.lang.Boolean.classInfo.isInstance
+gnu.testlet.java.lang.Boolean.classInfo.InstanceOf
+gnu.testlet.java.lang.Boolean.classInfo.getPackage
+gnu.testlet.java.lang.Boolean.classInfo.getInterfaces
+gnu.testlet.java.lang.Boolean.classInfo.isSynthetic
+gnu.testlet.java.lang.Boolean.classInfo.getName
+gnu.testlet.java.lang.Boolean.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Boolean.valueOfBoolean
+gnu.testlet.java.lang.Boolean.value
+gnu.testlet.java.lang.Boolean.compareToObject
+gnu.testlet.java.lang.Boolean.toString
+gnu.testlet.java.lang.Boolean.BooleanTest
+gnu.testlet.java.lang.Boolean.equals_Boolean
+gnu.testlet.java.lang.Boolean.compareToBoolean
+gnu.testlet.java.lang.Boolean.new_Boolean
+gnu.testlet.java.lang.InstantiationException.constructor
+gnu.testlet.java.lang.InstantiationException.classInfo.getSuperclass
+gnu.testlet.java.lang.InstantiationException.classInfo.isPrimitive
+gnu.testlet.java.lang.InstantiationException.classInfo.getModifiers
+gnu.testlet.java.lang.InstantiationException.classInfo.isInterface
+gnu.testlet.java.lang.InstantiationException.classInfo.getSimpleName
+gnu.testlet.java.lang.InstantiationException.classInfo.isLocalClass
+gnu.testlet.java.lang.InstantiationException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.InstantiationException.classInfo.isMemberClass
+gnu.testlet.java.lang.InstantiationException.classInfo.isInstance
+gnu.testlet.java.lang.InstantiationException.classInfo.InstanceOf
+gnu.testlet.java.lang.InstantiationException.classInfo.getPackage
+gnu.testlet.java.lang.InstantiationException.classInfo.getInterfaces
+gnu.testlet.java.lang.InstantiationException.classInfo.isSynthetic
+gnu.testlet.java.lang.InstantiationException.classInfo.getName
+gnu.testlet.java.lang.InstantiationException.TryCatch
+gnu.testlet.java.lang.InheritableThreadLocal.simple$TestInheritableThreadLocal
+gnu.testlet.java.lang.InheritableThreadLocal.simple
+gnu.testlet.java.lang.Process.destroy_child
+gnu.testlet.java.lang.Process.destroy
+gnu.testlet.java.lang.Character.digit
+gnu.testlet.java.lang.Character.classify12
+gnu.testlet.java.lang.Character.classInfo.getSuperclass
+gnu.testlet.java.lang.Character.classInfo.isPrimitive
+gnu.testlet.java.lang.Character.classInfo.getModifiers
+gnu.testlet.java.lang.Character.classInfo.isInterface
+gnu.testlet.java.lang.Character.classInfo.getSimpleName
+gnu.testlet.java.lang.Character.classInfo.isLocalClass
+gnu.testlet.java.lang.Character.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Character.classInfo.isMemberClass
+gnu.testlet.java.lang.Character.classInfo.isInstance
+gnu.testlet.java.lang.Character.classInfo.InstanceOf
+gnu.testlet.java.lang.Character.classInfo.getPackage
+gnu.testlet.java.lang.Character.classInfo.getInterfaces
+gnu.testlet.java.lang.Character.classInfo.isSynthetic
+gnu.testlet.java.lang.Character.classInfo.getName
+gnu.testlet.java.lang.Character.equals_Character
+gnu.testlet.java.lang.Character.Blocks15
+gnu.testlet.java.lang.Character.CharInfo
+gnu.testlet.java.lang.Character.getNumericValue
+gnu.testlet.java.lang.Character.consts
+gnu.testlet.java.lang.Character.Blocks
+gnu.testlet.java.lang.Character.unicode
+gnu.testlet.java.lang.Character.getType12
+gnu.testlet.java.lang.Character.hash
+gnu.testlet.java.lang.Character.getType
+gnu.testlet.java.lang.Character.forDigit
+gnu.testlet.java.lang.Character.to
+gnu.testlet.java.lang.Character.UnicodeBase
+gnu.testlet.java.lang.Character.CharacterTest
+gnu.testlet.java.lang.Character.classify
+gnu.testlet.java.lang.reflect.AccessibleObject.security
+gnu.testlet.java.lang.reflect.AccessibleObject.accessible
+gnu.testlet.java.lang.reflect.Array.set
+gnu.testlet.java.lang.reflect.Array.newInstance
+gnu.testlet.java.lang.reflect.Constructor.toString
+gnu.testlet.java.lang.reflect.Constructor.newInstance
+gnu.testlet.java.lang.reflect.ReflectAccess
+gnu.testlet.java.lang.reflect.Modifier.toString12
+gnu.testlet.java.lang.reflect.Modifier.toString
+gnu.testlet.java.lang.reflect.Proxy.ExceptionRaising$NullInvocationHandler
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass$Base
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass$WithObjectOverrides
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass$ExpectObjectDeclaringClassIfPossibleHandler
+gnu.testlet.java.lang.reflect.Proxy.check13
+gnu.testlet.java.lang.reflect.Proxy.ProxyUtils
+gnu.testlet.java.lang.reflect.Proxy.ExceptionRaising
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass$Derived
+gnu.testlet.java.lang.reflect.Proxy.ToString$FacadeInvocationHandler
+gnu.testlet.java.lang.reflect.Proxy.ExceptionRaising$ExceptionInvocationHandler
+gnu.testlet.java.lang.reflect.Proxy.DeclaringClass$WithoutObjectOverrides
+gnu.testlet.java.lang.reflect.Proxy.ToString$Foo
+gnu.testlet.java.lang.reflect.Proxy.ToString
+gnu.testlet.java.lang.reflect.Proxy.ExceptionRaising$ThisInvocationHandler
+gnu.testlet.java.lang.reflect.Other
+gnu.testlet.java.lang.reflect.Field.access
+gnu.testlet.java.lang.reflect.Field.toString
+gnu.testlet.java.lang.reflect.Field.promotion
+gnu.testlet.java.lang.reflect.sub.OtherPkg
+gnu.testlet.java.lang.reflect.sub.InvokeHelper
+gnu.testlet.java.lang.reflect.sub.Super
+gnu.testlet.java.lang.reflect.Method.equals
+gnu.testlet.java.lang.reflect.Method.invoke
+gnu.testlet.java.lang.reflect.Method.iface
+gnu.testlet.java.lang.reflect.Method.toString
+gnu.testlet.java.lang.reflect.InvocationTargetException.Chain
+gnu.testlet.java.lang.LinkageError.constructor
+gnu.testlet.java.lang.LinkageError.TryCatch
+gnu.testlet.java.lang.ClassCastException.constructor
+gnu.testlet.java.lang.ClassCastException.classInfo.getSuperclass
+gnu.testlet.java.lang.ClassCastException.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ClassCastException.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ClassCastException.classInfo.isArray
+gnu.testlet.java.lang.ClassCastException.classInfo.getComponentType
+gnu.testlet.java.lang.ClassCastException.classInfo.isPrimitive
+gnu.testlet.java.lang.ClassCastException.classInfo.getConstructor
+gnu.testlet.java.lang.ClassCastException.classInfo.getModifiers
+gnu.testlet.java.lang.ClassCastException.classInfo.isInterface
+gnu.testlet.java.lang.ClassCastException.classInfo.getAnnotations
+gnu.testlet.java.lang.ClassCastException.classInfo.getSimpleName
+gnu.testlet.java.lang.ClassCastException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ClassCastException.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ClassCastException.classInfo.getField
+gnu.testlet.java.lang.ClassCastException.classInfo.getConstructors
+gnu.testlet.java.lang.ClassCastException.classInfo.isLocalClass
+gnu.testlet.java.lang.ClassCastException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ClassCastException.classInfo.isMemberClass
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ClassCastException.classInfo.getCanonicalName
+gnu.testlet.java.lang.ClassCastException.classInfo.isAnnotation
+gnu.testlet.java.lang.ClassCastException.classInfo.getAnnotation
+gnu.testlet.java.lang.ClassCastException.classInfo.isEnum
+gnu.testlet.java.lang.ClassCastException.classInfo.getClasses
+gnu.testlet.java.lang.ClassCastException.classInfo.isInstance
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ClassCastException.classInfo.InstanceOf
+gnu.testlet.java.lang.ClassCastException.classInfo.getPackage
+gnu.testlet.java.lang.ClassCastException.classInfo.getInterfaces
+gnu.testlet.java.lang.ClassCastException.classInfo.isSynthetic
+gnu.testlet.java.lang.ClassCastException.classInfo.getName
+gnu.testlet.java.lang.ClassCastException.classInfo.getMethod
+gnu.testlet.java.lang.ClassCastException.classInfo.getMethods
+gnu.testlet.java.lang.ClassCastException.classInfo.getDeclaredField
+gnu.testlet.java.lang.ClassCastException.classInfo.getFields
+gnu.testlet.java.lang.ClassCastException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ClassCastException.TryCatch
+gnu.testlet.java.lang.ArrayStoreException.constructor
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getSuperclass
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isArray
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getComponentType
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isPrimitive
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getConstructor
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getModifiers
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isInterface
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getAnnotations
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getSimpleName
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getField
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getConstructors
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isLocalClass
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isMemberClass
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getCanonicalName
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isAnnotation
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getAnnotation
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isEnum
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getClasses
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isInstance
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ArrayStoreException.classInfo.InstanceOf
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getPackage
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getInterfaces
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isSynthetic
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getName
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getMethod
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getMethods
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getDeclaredField
+gnu.testlet.java.lang.ArrayStoreException.classInfo.getFields
+gnu.testlet.java.lang.ArrayStoreException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ArrayStoreException.TryCatch
+gnu.testlet.java.lang.AbstractMethodError.constructor
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getSuperclass
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getEnclosingClass
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isArray
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getComponentType
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isPrimitive
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getConstructor
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getModifiers
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isInterface
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getAnnotations
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getSimpleName
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getField
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getConstructors
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isLocalClass
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isMemberClass
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaringClass
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getCanonicalName
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isAnnotation
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getAnnotation
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isEnum
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getClasses
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isInstance
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.AbstractMethodError.classInfo.InstanceOf
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getPackage
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getInterfaces
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isSynthetic
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getName
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getMethod
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getMethods
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getDeclaredField
+gnu.testlet.java.lang.AbstractMethodError.classInfo.getFields
+gnu.testlet.java.lang.AbstractMethodError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.AbstractMethodError.TryCatch
+gnu.testlet.java.lang.IncompatibleClassChangeError.constructor
+gnu.testlet.java.lang.IncompatibleClassChangeError.TryCatch
+gnu.testlet.java.lang.ClassLoader.redefine$Inner
+gnu.testlet.java.lang.ClassLoader.security
+gnu.testlet.java.lang.ClassLoader.initialize
+gnu.testlet.java.lang.ClassLoader.security$TestClassLoader
+gnu.testlet.java.lang.ClassLoader.initialize$TestLoader
+gnu.testlet.java.lang.ClassLoader.loadClass
+gnu.testlet.java.lang.ClassLoader.Resources
+gnu.testlet.java.lang.ClassLoader.BootDefinedPackages$TestLoader
+gnu.testlet.java.lang.ClassLoader.findLoadedClass
+gnu.testlet.java.lang.ClassLoader.BootDefinedPackages
+gnu.testlet.java.lang.ClassLoader.redefine
+gnu.testlet.java.lang.ClassNotFoundException.constructor
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getSuperclass
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isArray
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getComponentType
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isPrimitive
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getConstructor
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getModifiers
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isInterface
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getAnnotations
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getSimpleName
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getField
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getConstructors
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isLocalClass
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isMemberClass
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getCanonicalName
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isAnnotation
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getAnnotation
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isEnum
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getClasses
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isInstance
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.InstanceOf
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getPackage
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getInterfaces
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isSynthetic
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getName
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getMethod
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getMethods
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getDeclaredField
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.getFields
+gnu.testlet.java.lang.ClassNotFoundException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ClassNotFoundException.getException
+gnu.testlet.java.lang.ClassNotFoundException.getCause
+gnu.testlet.java.lang.ClassNotFoundException.TryCatch
+gnu.testlet.java.lang.RuntimeException.constructor
+gnu.testlet.java.lang.RuntimeException.classInfo.getSuperclass
+gnu.testlet.java.lang.RuntimeException.classInfo.isArray
+gnu.testlet.java.lang.RuntimeException.classInfo.isPrimitive
+gnu.testlet.java.lang.RuntimeException.classInfo.getModifiers
+gnu.testlet.java.lang.RuntimeException.classInfo.isInterface
+gnu.testlet.java.lang.RuntimeException.classInfo.getSimpleName
+gnu.testlet.java.lang.RuntimeException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.RuntimeException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.RuntimeException.classInfo.getConstructors
+gnu.testlet.java.lang.RuntimeException.classInfo.isLocalClass
+gnu.testlet.java.lang.RuntimeException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.RuntimeException.classInfo.isMemberClass
+gnu.testlet.java.lang.RuntimeException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.RuntimeException.classInfo.isAnnotation
+gnu.testlet.java.lang.RuntimeException.classInfo.isEnum
+gnu.testlet.java.lang.RuntimeException.classInfo.isInstance
+gnu.testlet.java.lang.RuntimeException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.RuntimeException.classInfo.InstanceOf
+gnu.testlet.java.lang.RuntimeException.classInfo.getPackage
+gnu.testlet.java.lang.RuntimeException.classInfo.getInterfaces
+gnu.testlet.java.lang.RuntimeException.classInfo.isSynthetic
+gnu.testlet.java.lang.RuntimeException.classInfo.getName
+gnu.testlet.java.lang.RuntimeException.classInfo.getMethods
+gnu.testlet.java.lang.RuntimeException.classInfo.getFields
+gnu.testlet.java.lang.RuntimeException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.RuntimeException.TryCatch
+gnu.testlet.java.lang.Integer.integerDivide
+gnu.testlet.java.lang.Integer.compareTo
+gnu.testlet.java.lang.Integer.parseInt
+gnu.testlet.java.lang.Integer.parseIntRadix
+gnu.testlet.java.lang.Integer.classInfo.getSuperclass
+gnu.testlet.java.lang.Integer.classInfo.isArray
+gnu.testlet.java.lang.Integer.classInfo.isPrimitive
+gnu.testlet.java.lang.Integer.classInfo.getModifiers
+gnu.testlet.java.lang.Integer.classInfo.isInterface
+gnu.testlet.java.lang.Integer.classInfo.getSimpleName
+gnu.testlet.java.lang.Integer.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Integer.classInfo.isLocalClass
+gnu.testlet.java.lang.Integer.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Integer.classInfo.isMemberClass
+gnu.testlet.java.lang.Integer.classInfo.isAnnotation
+gnu.testlet.java.lang.Integer.classInfo.isEnum
+gnu.testlet.java.lang.Integer.classInfo.isInstance
+gnu.testlet.java.lang.Integer.classInfo.InstanceOf
+gnu.testlet.java.lang.Integer.classInfo.getPackage
+gnu.testlet.java.lang.Integer.classInfo.getInterfaces
+gnu.testlet.java.lang.Integer.classInfo.isSynthetic
+gnu.testlet.java.lang.Integer.classInfo.getName
+gnu.testlet.java.lang.Integer.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Integer.Tests15
+gnu.testlet.java.lang.Integer.integerModulo
+gnu.testlet.java.lang.Integer.new_Integer
+gnu.testlet.java.lang.Integer.IntegerTest
+gnu.testlet.java.lang.Integer.compareToObject
+gnu.testlet.java.lang.Integer.toString
+gnu.testlet.java.lang.Integer.decode
+gnu.testlet.java.lang.Integer.getInteger
+gnu.testlet.java.lang.ClassFormatError.constructor
+gnu.testlet.java.lang.ClassFormatError.classInfo.getSuperclass
+gnu.testlet.java.lang.ClassFormatError.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.ClassFormatError.classInfo.getEnclosingClass
+gnu.testlet.java.lang.ClassFormatError.classInfo.isArray
+gnu.testlet.java.lang.ClassFormatError.classInfo.getComponentType
+gnu.testlet.java.lang.ClassFormatError.classInfo.isPrimitive
+gnu.testlet.java.lang.ClassFormatError.classInfo.getConstructor
+gnu.testlet.java.lang.ClassFormatError.classInfo.getModifiers
+gnu.testlet.java.lang.ClassFormatError.classInfo.isInterface
+gnu.testlet.java.lang.ClassFormatError.classInfo.getAnnotations
+gnu.testlet.java.lang.ClassFormatError.classInfo.getSimpleName
+gnu.testlet.java.lang.ClassFormatError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ClassFormatError.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ClassFormatError.classInfo.getField
+gnu.testlet.java.lang.ClassFormatError.classInfo.getConstructors
+gnu.testlet.java.lang.ClassFormatError.classInfo.isLocalClass
+gnu.testlet.java.lang.ClassFormatError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ClassFormatError.classInfo.isMemberClass
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaringClass
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.ClassFormatError.classInfo.getCanonicalName
+gnu.testlet.java.lang.ClassFormatError.classInfo.isAnnotation
+gnu.testlet.java.lang.ClassFormatError.classInfo.getAnnotation
+gnu.testlet.java.lang.ClassFormatError.classInfo.isEnum
+gnu.testlet.java.lang.ClassFormatError.classInfo.getClasses
+gnu.testlet.java.lang.ClassFormatError.classInfo.isInstance
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.ClassFormatError.classInfo.InstanceOf
+gnu.testlet.java.lang.ClassFormatError.classInfo.getPackage
+gnu.testlet.java.lang.ClassFormatError.classInfo.getInterfaces
+gnu.testlet.java.lang.ClassFormatError.classInfo.isSynthetic
+gnu.testlet.java.lang.ClassFormatError.classInfo.getName
+gnu.testlet.java.lang.ClassFormatError.classInfo.getMethod
+gnu.testlet.java.lang.ClassFormatError.classInfo.getMethods
+gnu.testlet.java.lang.ClassFormatError.classInfo.getDeclaredField
+gnu.testlet.java.lang.ClassFormatError.classInfo.getFields
+gnu.testlet.java.lang.ClassFormatError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ClassFormatError.TryCatch
+gnu.testlet.java.lang.Byte.parseByteRadix
+gnu.testlet.java.lang.Byte.valueOfString
+gnu.testlet.java.lang.Byte.classInfo.getSuperclass
+gnu.testlet.java.lang.Byte.classInfo.isArray
+gnu.testlet.java.lang.Byte.classInfo.isPrimitive
+gnu.testlet.java.lang.Byte.classInfo.getModifiers
+gnu.testlet.java.lang.Byte.classInfo.isInterface
+gnu.testlet.java.lang.Byte.classInfo.getSimpleName
+gnu.testlet.java.lang.Byte.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.Byte.classInfo.isLocalClass
+gnu.testlet.java.lang.Byte.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Byte.classInfo.isMemberClass
+gnu.testlet.java.lang.Byte.classInfo.isAnnotation
+gnu.testlet.java.lang.Byte.classInfo.isEnum
+gnu.testlet.java.lang.Byte.classInfo.isInstance
+gnu.testlet.java.lang.Byte.classInfo.InstanceOf
+gnu.testlet.java.lang.Byte.classInfo.getPackage
+gnu.testlet.java.lang.Byte.classInfo.getInterfaces
+gnu.testlet.java.lang.Byte.classInfo.isSynthetic
+gnu.testlet.java.lang.Byte.classInfo.getName
+gnu.testlet.java.lang.Byte.classInfo.isAnonymousClass
+gnu.testlet.java.lang.Byte.valueOfStringRadix
+gnu.testlet.java.lang.Byte.compareToObject
+gnu.testlet.java.lang.Byte.toString
+gnu.testlet.java.lang.Byte.ByteTest
+gnu.testlet.java.lang.Byte.parseByte
+gnu.testlet.java.lang.Byte.valueOfByte
+gnu.testlet.java.lang.Byte.new_Byte
+gnu.testlet.java.lang.Byte.byteDivide
+gnu.testlet.java.lang.ThreadDeath.classInfo.getSuperclass
+gnu.testlet.java.lang.ThreadDeath.classInfo.isArray
+gnu.testlet.java.lang.ThreadDeath.classInfo.isPrimitive
+gnu.testlet.java.lang.ThreadDeath.classInfo.getModifiers
+gnu.testlet.java.lang.ThreadDeath.classInfo.isInterface
+gnu.testlet.java.lang.ThreadDeath.classInfo.getSimpleName
+gnu.testlet.java.lang.ThreadDeath.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.ThreadDeath.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.ThreadDeath.classInfo.getConstructors
+gnu.testlet.java.lang.ThreadDeath.classInfo.isLocalClass
+gnu.testlet.java.lang.ThreadDeath.classInfo.isAssignableFrom
+gnu.testlet.java.lang.ThreadDeath.classInfo.isMemberClass
+gnu.testlet.java.lang.ThreadDeath.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.ThreadDeath.classInfo.isAnnotation
+gnu.testlet.java.lang.ThreadDeath.classInfo.isEnum
+gnu.testlet.java.lang.ThreadDeath.classInfo.isInstance
+gnu.testlet.java.lang.ThreadDeath.classInfo.getDeclaredFields
+gnu.testlet.java.lang.ThreadDeath.classInfo.InstanceOf
+gnu.testlet.java.lang.ThreadDeath.classInfo.getPackage
+gnu.testlet.java.lang.ThreadDeath.classInfo.getInterfaces
+gnu.testlet.java.lang.ThreadDeath.classInfo.isSynthetic
+gnu.testlet.java.lang.ThreadDeath.classInfo.getName
+gnu.testlet.java.lang.ThreadDeath.classInfo.getMethods
+gnu.testlet.java.lang.ThreadDeath.classInfo.getFields
+gnu.testlet.java.lang.ThreadDeath.classInfo.isAnonymousClass
+gnu.testlet.java.lang.ThreadDeath.TryCatch
+gnu.testlet.java.lang.UnsupportedOperationException.constructor
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getSuperclass
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isArray
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isPrimitive
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getModifiers
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isInterface
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getSimpleName
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getConstructors
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isLocalClass
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isMemberClass
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isAnnotation
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isEnum
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isInstance
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getDeclaredFields
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.InstanceOf
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getPackage
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getInterfaces
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isSynthetic
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getName
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getMethods
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.getFields
+gnu.testlet.java.lang.UnsupportedOperationException.classInfo.isAnonymousClass
+gnu.testlet.java.lang.UnsupportedOperationException.TryCatch
+gnu.testlet.java.lang.Exception.constructor
+gnu.testlet.java.lang.Exception.classInfo.getSuperclass
+gnu.testlet.java.lang.Exception.classInfo.isPrimitive
+gnu.testlet.java.lang.Exception.classInfo.getModifiers
+gnu.testlet.java.lang.Exception.classInfo.isInterface
+gnu.testlet.java.lang.Exception.classInfo.getSimpleName
+gnu.testlet.java.lang.Exception.classInfo.isLocalClass
+gnu.testlet.java.lang.Exception.classInfo.isAssignableFrom
+gnu.testlet.java.lang.Exception.classInfo.isMemberClass
+gnu.testlet.java.lang.Exception.classInfo.isInstance
+gnu.testlet.java.lang.Exception.classInfo.InstanceOf
+gnu.testlet.java.lang.Exception.classInfo.getPackage
+gnu.testlet.java.lang.Exception.classInfo.getInterfaces
+gnu.testlet.java.lang.Exception.classInfo.isSynthetic
+gnu.testlet.java.lang.Exception.classInfo.getName
+gnu.testlet.java.lang.Exception.TryCatch
+gnu.testlet.java.lang.AssertionError.constructor
+gnu.testlet.java.lang.AssertionError.classInfo.getSuperclass
+gnu.testlet.java.lang.AssertionError.classInfo.getEnclosingMethod
+gnu.testlet.java.lang.AssertionError.classInfo.getEnclosingClass
+gnu.testlet.java.lang.AssertionError.classInfo.isArray
+gnu.testlet.java.lang.AssertionError.classInfo.getComponentType
+gnu.testlet.java.lang.AssertionError.classInfo.isPrimitive
+gnu.testlet.java.lang.AssertionError.classInfo.getConstructor
+gnu.testlet.java.lang.AssertionError.classInfo.getModifiers
+gnu.testlet.java.lang.AssertionError.classInfo.isInterface
+gnu.testlet.java.lang.AssertionError.classInfo.getAnnotations
+gnu.testlet.java.lang.AssertionError.classInfo.getSimpleName
+gnu.testlet.java.lang.AssertionError.classInfo.isAnnotationPresent
+gnu.testlet.java.lang.AssertionError.classInfo.getEnclosingConstructor
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredConstructors
+gnu.testlet.java.lang.AssertionError.classInfo.getField
+gnu.testlet.java.lang.AssertionError.classInfo.getConstructors
+gnu.testlet.java.lang.AssertionError.classInfo.isLocalClass
+gnu.testlet.java.lang.AssertionError.classInfo.isAssignableFrom
+gnu.testlet.java.lang.AssertionError.classInfo.isMemberClass
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredMethods
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredMethod
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaringClass
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredAnnotations
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredConstructor
+gnu.testlet.java.lang.AssertionError.classInfo.getCanonicalName
+gnu.testlet.java.lang.AssertionError.classInfo.isAnnotation
+gnu.testlet.java.lang.AssertionError.classInfo.getAnnotation
+gnu.testlet.java.lang.AssertionError.classInfo.isEnum
+gnu.testlet.java.lang.AssertionError.classInfo.getClasses
+gnu.testlet.java.lang.AssertionError.classInfo.isInstance
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredFields
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredClasses
+gnu.testlet.java.lang.AssertionError.classInfo.InstanceOf
+gnu.testlet.java.lang.AssertionError.classInfo.getPackage
+gnu.testlet.java.lang.AssertionError.classInfo.getInterfaces
+gnu.testlet.java.lang.AssertionError.classInfo.isSynthetic
+gnu.testlet.java.lang.AssertionError.classInfo.getName
+gnu.testlet.java.lang.AssertionError.classInfo.getMethod
+gnu.testlet.java.lang.AssertionError.classInfo.getMethods
+gnu.testlet.java.lang.AssertionError.classInfo.getDeclaredField
+gnu.testlet.java.lang.AssertionError.classInfo.getFields
+gnu.testlet.java.lang.AssertionError.classInfo.isAnonymousClass
+gnu.testlet.java.lang.AssertionError.TryCatch
+gnu.testlet.java.lang.Math.ulp
+gnu.testlet.java.lang.Math.min
+gnu.testlet.java.lang.Math.acos
+gnu.testlet.java.lang.Math.sinh
+gnu.testlet.java.lang.Math.rint
+gnu.testlet.java.lang.Math.cos
+gnu.testlet.java.lang.Math.expm1
+gnu.testlet.java.lang.Math.cosh
+gnu.testlet.java.lang.Math.tan
+gnu.testlet.java.lang.Math.strictfp_modifier.acos
+gnu.testlet.java.lang.Math.strictfp_modifier.sinh
+gnu.testlet.java.lang.Math.strictfp_modifier.cos
+gnu.testlet.java.lang.Math.strictfp_modifier.expm1
+gnu.testlet.java.lang.Math.strictfp_modifier.cosh
+gnu.testlet.java.lang.Math.strictfp_modifier.tan
+gnu.testlet.java.lang.Math.strictfp_modifier.cbrt
+gnu.testlet.java.lang.Math.strictfp_modifier.sin
+gnu.testlet.java.lang.Math.strictfp_modifier.asin
+gnu.testlet.java.lang.Math.strictfp_modifier.tanh
+gnu.testlet.java.lang.Math.strictfp_modifier.atan
+gnu.testlet.java.lang.Math.cbrt
+gnu.testlet.java.lang.Math.sin
+gnu.testlet.java.lang.Math.asin
+gnu.testlet.java.lang.Math.tanh
+gnu.testlet.java.lang.Math.MathTest
+gnu.testlet.java.lang.Math.max
+gnu.testlet.java.lang.Math.atan
+gnu.testlet.java.lang.NoClassDefFoundError.constructor
+gnu.testlet.java.lang.NoClassDefFoundError.TryCatch
+gnu.testlet.java.lang.IllegalThreadStateException.constructor
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isInterface
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isInstance
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getPackage
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalThreadStateException.classInfo.getName
+gnu.testlet.java.lang.IllegalThreadStateException.TryCatch
+gnu.testlet.java.lang.management.RuntimeMXBeanTest
+gnu.testlet.java.lang.management.BadGuy
+gnu.testlet.java.lang.management.ClassLoadingMXBeanTest
+gnu.testlet.java.lang.management.OperatingSystemMXBeanTest
+gnu.testlet.java.lang.IllegalArgumentException.constructor
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getSuperclass
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isPrimitive
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getModifiers
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isInterface
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getSimpleName
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isLocalClass
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isAssignableFrom
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isMemberClass
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isInstance
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.InstanceOf
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getPackage
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getInterfaces
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.isSynthetic
+gnu.testlet.java.lang.IllegalArgumentException.classInfo.getName
+gnu.testlet.java.lang.IllegalArgumentException.TryCatch
+gnu.testlet.java.lang.ThreadGroup.security
+gnu.testlet.java.lang.ThreadGroup.enumerate
+gnu.testlet.java.lang.ThreadGroup.insecurity$TestRunner
+gnu.testlet.java.lang.ThreadGroup.insecurity
+gnu.testlet.java.lang.ThreadGroup.security$SpecialSecurityManager
+gnu.testlet.java.lang.ThreadGroup.security$TestRunner
diff --git a/missing b/missing
new file mode 100755
index 00000000..3199d495
--- /dev/null
+++ b/missing
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program 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.
+
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing 0.4 - GNU automake"
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+ aclocal)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+ # We have makeinfo, but it failed.
+ exit 1
+ fi
+
+ echo 1>&2 "\
+WARNING: \`$1' is missing on your system. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ tar)
+ shift
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ fi
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar ${1+"$@"} && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar ${1+"$@"} && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" ${1+"$@"} && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" ${1+"$@"} && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+ system. You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequirements for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 00000000..cd1fe0a7
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,32 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+
+for file
+do
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+
+ pathcomp=
+ for d in ${1+"$@"} ; do
+ pathcomp="$pathcomp$d"
+ case "$pathcomp" in
+ -* ) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp" 1>&2
+ mkdir "$pathcomp" || errstatus=$?
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here
diff --git a/net/CVS/Entries b/net/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/net/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/net/CVS/Entries.Log b/net/CVS/Entries.Log
new file mode 100644
index 00000000..00a089be
--- /dev/null
+++ b/net/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/sourceforge////
diff --git a/net/CVS/Repository b/net/CVS/Repository
new file mode 100644
index 00000000..00176551
--- /dev/null
+++ b/net/CVS/Repository
@@ -0,0 +1 @@
+mauve/net
diff --git a/net/CVS/Root b/net/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/net/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/net/sourceforge/CVS/Entries b/net/sourceforge/CVS/Entries
new file mode 100644
index 00000000..17848105
--- /dev/null
+++ b/net/sourceforge/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/net/sourceforge/CVS/Entries.Log b/net/sourceforge/CVS/Entries.Log
new file mode 100644
index 00000000..7bace3b2
--- /dev/null
+++ b/net/sourceforge/CVS/Entries.Log
@@ -0,0 +1 @@
+A D/nanoxml////
diff --git a/net/sourceforge/CVS/Repository b/net/sourceforge/CVS/Repository
new file mode 100644
index 00000000..742a1708
--- /dev/null
+++ b/net/sourceforge/CVS/Repository
@@ -0,0 +1 @@
+mauve/net/sourceforge
diff --git a/net/sourceforge/CVS/Root b/net/sourceforge/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/net/sourceforge/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/net/sourceforge/nanoxml/CVS/Entries b/net/sourceforge/nanoxml/CVS/Entries
new file mode 100644
index 00000000..16aa3f32
--- /dev/null
+++ b/net/sourceforge/nanoxml/CVS/Entries
@@ -0,0 +1,3 @@
+/XMLElement.java/1.1/Fri Nov 14 19:51:41 2008//
+/XMLParseException.java/1.1/Fri Nov 14 19:51:41 2008//
+D
diff --git a/net/sourceforge/nanoxml/CVS/Repository b/net/sourceforge/nanoxml/CVS/Repository
new file mode 100644
index 00000000..a292a035
--- /dev/null
+++ b/net/sourceforge/nanoxml/CVS/Repository
@@ -0,0 +1 @@
+mauve/net/sourceforge/nanoxml
diff --git a/net/sourceforge/nanoxml/CVS/Root b/net/sourceforge/nanoxml/CVS/Root
new file mode 100644
index 00000000..8118bb88
--- /dev/null
+++ b/net/sourceforge/nanoxml/CVS/Root
@@ -0,0 +1 @@
+:pserver:anoncvs@sourceware.org:/cvs/mauve
diff --git a/net/sourceforge/nanoxml/XMLElement.java b/net/sourceforge/nanoxml/XMLElement.java
new file mode 100644
index 00000000..b40e82cd
--- /dev/null
+++ b/net/sourceforge/nanoxml/XMLElement.java
@@ -0,0 +1,1318 @@
+/* XMLElement.java
+
+ *
+ * $Revision: 1.1 $
+ * $Date: 2008/11/14 19:51:41 $
+ * $Name: $
+ *
+ * This file is part of NanoXML 2 Lite.
+ * Copyright (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied warranty.
+ * In no event will the authors be held liable for any damages arising from the
+ * use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software in
+ * a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source distribution.
+ *****************************************************************************/
+
+/* JAM: hacked the source to remove unneeded methods and comments.
+ * Note : this is a copy of nanoxml-lite sources from icedtea6-1.3.1.tar.gz, under the directory rt/net/sourceforge/nanoxml
+ */
+
+package net.sourceforge.nanoxml;
+
+import java.io.*;
+import java.util.*;
+
+
+
+/**
+ * XMLElement is a representation of an XML object. The object is able to parse
+ * XML code.
+ * <P><DL>
+ * <DT><B>Parsing XML Data</B></DT>
+ * <DD>
+ * You can parse XML data using the following code:
+ * <UL><CODE>
+ * XMLElement xml = new XMLElement();<BR>
+ * FileReader reader = new FileReader("filename.xml");<BR>
+ * xml.parseFromReader(reader);
+ * </CODE></UL></DD></DL>
+ * <DL><DT><B>Retrieving Attributes</B></DT>
+ * <DD>
+ * You can enumerate the attributes of an element using the method
+ * {@link #enumerateAttributeNames() enumerateAttributeNames}.
+ * The attribute values can be retrieved using the method
+ * {@link #getStringAttribute(java.lang.String) getStringAttribute}.
+ * The following example shows how to list the attributes of an element:
+ * <UL><CODE>
+ * XMLElement element = ...;<BR>
+ * Enumeration enum = element.getAttributeNames();<BR>
+ * while (enum.hasMoreElements()) {<BR>
+ * &nbsp;&nbsp;&nbsp;&nbsp;String key = (String) enum.nextElement();<BR>
+ * &nbsp;&nbsp;&nbsp;&nbsp;String value = element.getStringAttribute(key);<BR>
+ * &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(key + " = " + value);<BR>
+ * }
+ * </CODE></UL></DD></DL>
+ * <DL><DT><B>Retrieving Child Elements</B></DT>
+ * <DD>
+ * You can enumerate the children of an element using
+ * {@link #enumerateChildren() enumerateChildren}.
+ * The number of child elements can be retrieved using
+ * {@link #countChildren() countChildren}.
+ * </DD></DL>
+ * <DL><DT><B>Elements Containing Character Data</B></DT>
+ * <DD>
+ * If an elements contains character data, like in the following example:
+ * <UL><CODE>
+ * &lt;title&gt;The Title&lt;/title&gt;
+ * </CODE></UL>
+ * you can retrieve that data using the method
+ * {@link #getContent() getContent}.
+ * </DD></DL>
+ * <DL><DT><B>Subclassing XMLElement</B></DT>
+ * <DD>
+ * When subclassing XMLElement, you need to override the method
+ * {@link #createAnotherElement() createAnotherElement}
+ * which has to return a new copy of the receiver.
+ * </DD></DL>
+ * <P>
+ *
+ * @see net.sourceforge.nanoxml.XMLParseException
+ *
+ * @author Marc De Scheemaecker
+ * &lt;<A href="mailto:cyberelf@mac.com">cyberelf@mac.com</A>&gt;
+ * @version $Name: $, $Revision: 1.1 $
+ */
+public class XMLElement
+{
+
+ /**
+ * The attributes given to the element.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field can be empty.
+ * <li>The field is never <code>null</code>.
+ * <li>The keys and the values are strings.
+ * </ul></dd></dl>
+ */
+ private Hashtable attributes;
+
+
+ /**
+ * Child elements of the element.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field can be empty.
+ * <li>The field is never <code>null</code>.
+ * <li>The elements are instances of <code>XMLElement</code>
+ * or a subclass of <code>XMLElement</code>.
+ * </ul></dd></dl>
+ */
+ private Vector children;
+
+
+ /**
+ * The name of the element.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field is <code>null</code> iff the element is not
+ * initialized by either parse or setName.
+ * <li>If the field is not <code>null</code>, it's not empty.
+ * <li>If the field is not <code>null</code>, it contains a valid
+ * XML identifier.
+ * </ul></dd></dl>
+ */
+ private String name;
+
+
+ /**
+ * The #PCDATA content of the object.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field is <code>null</code> iff the element is not a
+ * #PCDATA element.
+ * <li>The field can be any string, including the empty string.
+ * </ul></dd></dl>
+ */
+ private String contents;
+
+
+ /**
+ * Conversion table for &amp;...; entities. The keys are the entity names
+ * without the &amp; and ; delimiters.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field is never <code>null</code>.
+ * <li>The field always contains the following associations:
+ * "lt"&nbsp;=&gt;&nbsp;"&lt;", "gt"&nbsp;=&gt;&nbsp;"&gt;",
+ * "quot"&nbsp;=&gt;&nbsp;"\"", "apos"&nbsp;=&gt;&nbsp;"'",
+ * "amp"&nbsp;=&gt;&nbsp;"&amp;"
+ * <li>The keys are strings
+ * <li>The values are char arrays
+ * </ul></dd></dl>
+ */
+ private Hashtable entities;
+
+
+ /**
+ * The line number where the element starts.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li><code>lineNr &gt= 0</code>
+ * </ul></dd></dl>
+ */
+ private int lineNr;
+
+
+ /**
+ * <code>true</code> if the case of the element and attribute names
+ * are case insensitive.
+ */
+ private boolean ignoreCase;
+
+
+ /**
+ * <code>true</code> if the leading and trailing whitespace of #PCDATA
+ * sections have to be ignored.
+ */
+ private boolean ignoreWhitespace;
+
+
+ /**
+ * Character read too much.
+ * This character provides push-back functionality to the input reader
+ * without having to use a PushbackReader.
+ * If there is no such character, this field is '\0'.
+ */
+ private char charReadTooMuch;
+
+ /**
+ * Character read too much for the comment remover.
+ */
+ private char sanitizeCharReadTooMuch;
+
+ /**
+ * The reader provided by the caller of the parse method.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>The field is not <code>null</code> while the parse method
+ * is running.
+ * </ul></dd></dl>
+ */
+ private Reader reader;
+
+
+ /**
+ * The current line number in the source content.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li>parserLineNr &gt; 0 while the parse method is running.
+ * </ul></dd></dl>
+ */
+ private int parserLineNr;
+
+
+ /**
+ * Creates and initializes a new XML element.
+ * Calling the construction is equivalent to:
+ * <ul><code>new XMLElement(new Hashtable(), false, true)
+ * </code></ul>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>countChildren() => 0
+ * <li>enumerateChildren() => empty enumeration
+ * <li>enumeratePropertyNames() => empty enumeration
+ * <li>getChildren() => empty vector
+ * <li>getContent() => ""
+ * <li>getLineNr() => 0
+ * <li>getName() => null
+ * </ul></dd></dl>
+ *
+ */
+ public XMLElement()
+ {
+ this(new Hashtable(), false, true, true);
+ }
+
+
+ /**
+ * Creates and initializes a new XML element.
+ * <P>
+ * This constructor should <I>only</I> be called from
+ * {@link #createAnotherElement() createAnotherElement}
+ * to create child elements.
+ *
+ * @param entities
+ * The entity conversion table.
+ * @param skipLeadingWhitespace
+ * <code>true</code> if leading and trailing whitespace in PCDATA
+ * content has to be removed.
+ * @param fillBasicConversionTable
+ * <code>true</code> if the basic entities need to be added to
+ * the entity list (client code calling this constructor).
+ * @param ignoreCase
+ * <code>true</code> if the case of element and attribute names have
+ * to be ignored.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>entities != null</code>
+ * <li>if <code>fillBasicConversionTable == false</code>
+ * then <code>entities</code> contains at least the following
+ * entries: <code>amp</code>, <code>lt</code>, <code>gt</code>,
+ * <code>apos</code> and <code>quot</code>
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>countChildren() => 0
+ * <li>enumerateChildren() => empty enumeration
+ * <li>enumeratePropertyNames() => empty enumeration
+ * <li>getChildren() => empty vector
+ * <li>getContent() => ""
+ * <li>getLineNr() => 0
+ * <li>getName() => null
+ * </ul></dd></dl><dl>
+ *
+ */
+ protected XMLElement(Hashtable entities,
+ boolean skipLeadingWhitespace,
+ boolean fillBasicConversionTable,
+ boolean ignoreCase)
+ {
+ this.ignoreWhitespace = skipLeadingWhitespace;
+ this.ignoreCase = ignoreCase;
+ this.name = null;
+ this.contents = "";
+ this.attributes = new Hashtable();
+ this.children = new Vector();
+ this.entities = entities;
+ this.lineNr = 0;
+ Enumeration e = this.entities.keys();
+ while (e.hasMoreElements()) {
+ Object key = e.nextElement();
+ Object value = this.entities.get(key);
+ if (value instanceof String) {
+ value = ((String) value).toCharArray();
+ this.entities.put(key, value);
+ }
+ }
+ if (fillBasicConversionTable) {
+ this.entities.put("amp", new char[] { '&' });
+ this.entities.put("quot", new char[] { '"' });
+ this.entities.put("apos", new char[] { '\'' });
+ this.entities.put("lt", new char[] { '<' });
+ this.entities.put("gt", new char[] { '>' });
+ }
+ }
+
+
+ /**
+ * Adds a child element.
+ *
+ * @param child
+ * The child element to add.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>child != null</code>
+ * <li><code>child.getName() != null</code>
+ * <li><code>child</code> does not have a parent element
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>countChildren() => old.countChildren() + 1
+ * <li>enumerateChildren() => old.enumerateChildren() + child
+ * <li>getChildren() => old.enumerateChildren() + child
+ * </ul></dd></dl><dl>
+ *
+ */
+ public void addChild(XMLElement child)
+ {
+ this.children.addElement(child);
+ }
+
+
+ /**
+ * Adds or modifies an attribute.
+ *
+ * @param name
+ * The name of the attribute.
+ * @param value
+ * The value of the attribute.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * <li><code>name</code> is a valid XML identifier
+ * <li><code>value != null</code>
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>enumerateAttributeNames()
+ * => old.enumerateAttributeNames() + name
+ * <li>getAttribute(name) => value
+ * </ul></dd></dl><dl>
+ *
+ */
+ public void setAttribute(String name,
+ Object value)
+ {
+ if (this.ignoreCase) {
+ name = name.toUpperCase();
+ }
+ this.attributes.put(name, value.toString());
+ }
+
+
+ /**
+ * Returns the number of child elements of the element.
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li><code>result >= 0</code>
+ * </ul></dd></dl>
+ *
+ */
+ public int countChildren()
+ {
+ return this.children.size();
+ }
+
+
+ /**
+ * Enumerates the attribute names.
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li><code>result != null</code>
+ * </ul></dd></dl>
+ *
+ */
+ public Enumeration enumerateAttributeNames()
+ {
+ return this.attributes.keys();
+ }
+
+
+ /**
+ * Enumerates the child elements.
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li><code>result != null</code>
+ * </ul></dd></dl>
+ *
+ */
+ public Enumeration enumerateChildren()
+ {
+ return this.children.elements();
+ }
+
+
+ /**
+ * Returns the PCDATA content of the object. If there is no such content,
+ * <CODE>null</CODE> is returned.
+ *
+ */
+ public String getContent()
+ {
+ return this.contents;
+ }
+
+
+ /**
+ * Returns the line nr in the source data on which the element is found.
+ * This method returns <code>0</code> there is no associated source data.
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li><code>result >= 0</code>
+ * </ul></dd></dl>
+ */
+ public int getLineNr()
+ {
+ return this.lineNr;
+ }
+
+
+ /**
+ * Returns an attribute of the element.
+ * If the attribute doesn't exist, <code>null</code> is returned.
+ *
+ * @param name The name of the attribute.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * <li><code>name</code> is a valid XML identifier
+ * </ul></dd></dl><dl>
+ *
+ */
+ public Object getAttribute(String name)
+ {
+ if (this.ignoreCase) {
+ name = name.toUpperCase();
+ }
+ Object value = this.attributes.get(name);
+ return value;
+ }
+
+
+ /**
+ * Returns the name of the element.
+ *
+ */
+ public String getName()
+ {
+ return this.name;
+ }
+
+
+ /**
+ * Reads one XML element from a java.io.Reader and parses it.
+ *
+ * @param reader
+ * The reader from which to retrieve the XML data.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>reader != null</code>
+ * <li><code>reader</code> is not closed
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>the state of the receiver is updated to reflect the XML element
+ * parsed from the reader
+ * <li>the reader points to the first character following the last
+ * '&gt;' character of the XML element
+ * </ul></dd></dl><dl>
+ *
+ * @throws java.io.IOException
+ * If an error occured while reading the input.
+ * @throws net.sourceforge.nanoxml.XMLParseException
+ * If an error occured while parsing the read data.
+ */
+ public void parseFromReader(Reader reader)
+ throws IOException, XMLParseException
+ {
+ this.parseFromReader(reader, /*startingLineNr*/ 1);
+ }
+
+
+ /**
+ * Reads one XML element from a java.io.Reader and parses it.
+ *
+ * @param reader
+ * The reader from which to retrieve the XML data.
+ * @param startingLineNr
+ * The line number of the first line in the data.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>reader != null</code>
+ * <li><code>reader</code> is not closed
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>the state of the receiver is updated to reflect the XML element
+ * parsed from the reader
+ * <li>the reader points to the first character following the last
+ * '&gt;' character of the XML element
+ * </ul></dd></dl><dl>
+ *
+ * @throws java.io.IOException
+ * If an error occured while reading the input.
+ * @throws net.sourceforge.nanoxml.XMLParseException
+ * If an error occured while parsing the read data.
+ */
+ public void parseFromReader(Reader reader,
+ int startingLineNr)
+ throws IOException, XMLParseException
+ {
+ this.charReadTooMuch = '\0';
+ this.reader = reader;
+ this.parserLineNr = startingLineNr;
+
+ for (;;) {
+ char ch = this.scanWhitespace();
+
+ if (ch != '<') {
+ throw this.expectedInput("<", ch);
+ }
+
+ ch = this.readChar();
+
+ if ((ch == '!') || (ch == '?')) {
+ this.skipSpecialTag(0);
+ } else {
+ this.unreadChar(ch);
+ this.scanElement(this);
+ return;
+ }
+ }
+ }
+
+
+ /**
+ * Creates a new similar XML element.
+ * <P>
+ * You should override this method when subclassing XMLElement.
+ */
+ protected XMLElement createAnotherElement()
+ {
+ return new XMLElement(this.entities,
+ this.ignoreWhitespace,
+ false,
+ this.ignoreCase);
+ }
+
+
+ /**
+ * Changes the content string.
+ *
+ * @param content
+ * The new content string.
+ */
+ public void setContent(String content)
+ {
+ this.contents = content;
+ }
+
+
+ /**
+ * Changes the name of the element.
+ *
+ * @param name
+ * The new name.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * <li><code>name</code> is a valid XML identifier
+ * </ul></dd></dl>
+ *
+ */
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+
+ /**
+ * Scans an identifier from the current reader.
+ * The scanned identifier is appended to <code>result</code>.
+ *
+ * @param result
+ * The buffer in which the scanned identifier will be put.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>result != null</code>
+ * <li>The next character read from the reader is a valid first
+ * character of an XML identifier.
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>The next character read from the reader won't be an identifier
+ * character.
+ * </ul></dd></dl><dl>
+ */
+ protected void scanIdentifier(StringBuffer result)
+ throws IOException
+ {
+ for (;;) {
+ char ch = this.readChar();
+ if (((ch < 'A') || (ch > 'Z')) && ((ch < 'a') || (ch > 'z'))
+ && ((ch < '0') || (ch > '9')) && (ch != '_') && (ch != '.')
+ && (ch != ':') && (ch != '-') && (ch <= '\u007E')) {
+ this.unreadChar(ch);
+ return;
+ }
+ result.append(ch);
+ }
+ }
+
+
+ /**
+ * This method scans an identifier from the current reader.
+ *
+ * @return the next character following the whitespace.
+ */
+ protected char scanWhitespace()
+ throws IOException
+ {
+ for (;;) {
+ char ch = this.readChar();
+ switch (ch) {
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\r':
+ break;
+ default:
+ return ch;
+ }
+ }
+ }
+
+
+ /**
+ * This method scans an identifier from the current reader.
+ * The scanned whitespace is appended to <code>result</code>.
+ *
+ * @return the next character following the whitespace.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>result != null</code>
+ * </ul></dd></dl>
+ */
+ protected char scanWhitespace(StringBuffer result)
+ throws IOException
+ {
+ for (;;) {
+ char ch = this.readChar();
+ switch (ch) {
+ case ' ':
+ case '\t':
+ case '\n':
+ result.append(ch);
+ case '\r':
+ break;
+ default:
+ return ch;
+ }
+ }
+ }
+
+
+ /**
+ * This method scans a delimited string from the current reader.
+ * The scanned string without delimiters is appended to
+ * <code>string</code>.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>string != null</code>
+ * <li>the next char read is the string delimiter
+ * </ul></dd></dl>
+ */
+ protected void scanString(StringBuffer string)
+ throws IOException
+ {
+ char delimiter = this.readChar();
+ if ((delimiter != '\'') && (delimiter != '"')) {
+ throw this.expectedInput("' or \"");
+ }
+ for (;;) {
+ char ch = this.readChar();
+ if (ch == delimiter) {
+ return;
+ } else if (ch == '&') {
+ this.resolveEntity(string);
+ } else {
+ string.append(ch);
+ }
+ }
+ }
+
+
+ /**
+ * Scans a #PCDATA element. CDATA sections and entities are resolved.
+ * The next &lt; char is skipped.
+ * The scanned data is appended to <code>data</code>.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>data != null</code>
+ * </ul></dd></dl>
+ */
+ protected void scanPCData(StringBuffer data)
+ throws IOException
+ {
+ for (;;) {
+ char ch = this.readChar();
+ if (ch == '<') {
+ ch = this.readChar();
+ if (ch == '!') {
+ this.checkCDATA(data);
+ } else {
+ this.unreadChar(ch);
+ return;
+ }
+ } else if (ch == '&') {
+ this.resolveEntity(data);
+ } else {
+ data.append(ch);
+ }
+ }
+ }
+
+
+ /**
+ * Scans a special tag and if the tag is a CDATA section, append its
+ * content to <code>buf</code>.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>buf != null</code>
+ * <li>The first &lt; has already been read.
+ * </ul></dd></dl>
+ */
+ protected boolean checkCDATA(StringBuffer buf)
+ throws IOException
+ {
+ char ch = this.readChar();
+ if (ch != '[') {
+ this.unreadChar(ch);
+ this.skipSpecialTag(0);
+ return false;
+ } else if (! this.checkLiteral("CDATA[")) {
+ this.skipSpecialTag(1); // one [ has already been read
+ return false;
+ } else {
+ int delimiterCharsSkipped = 0;
+ while (delimiterCharsSkipped < 3) {
+ ch = this.readChar();
+ switch (ch) {
+ case ']':
+ if (delimiterCharsSkipped < 2) {
+ delimiterCharsSkipped += 1;
+ } else {
+ buf.append(']');
+ buf.append(']');
+ delimiterCharsSkipped = 0;
+ }
+ break;
+ case '>':
+ if (delimiterCharsSkipped < 2) {
+ for (int i = 0; i < delimiterCharsSkipped; i++) {
+ buf.append(']');
+ }
+ delimiterCharsSkipped = 0;
+ buf.append('>');
+ } else {
+ delimiterCharsSkipped = 3;
+ }
+ break;
+ default:
+ for (int i = 0; i < delimiterCharsSkipped; i += 1) {
+ buf.append(']');
+ }
+ buf.append(ch);
+ delimiterCharsSkipped = 0;
+ }
+ }
+ return true;
+ }
+ }
+
+
+ /**
+ * Skips a comment.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li>The first &lt;!-- has already been read.
+ * </ul></dd></dl>
+ */
+ protected void skipComment()
+ throws IOException
+ {
+ int dashesToRead = 2;
+ while (dashesToRead > 0) {
+ char ch = this.readChar();
+ if (ch == '-') {
+ dashesToRead -= 1;
+ } else {
+ dashesToRead = 2;
+ }
+
+ // Be more tolerant of extra -- (double dashes)
+ // in comments.
+ if (dashesToRead == 0) {
+ ch = this.readChar();
+ if (ch == '>') {
+ return;
+ } else {
+ dashesToRead = 2;
+ this.unreadChar(ch);
+ }
+ }
+ }
+ /*
+ if (this.readChar() != '>') {
+ throw this.expectedInput(">");
+ }
+ */
+ }
+
+
+ /**
+ * Skips a special tag or comment.
+ *
+ * @param bracketLevel The number of open square brackets ([) that have
+ * already been read.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li>The first &lt;! has already been read.
+ * <li><code>bracketLevel >= 0</code>
+ * </ul></dd></dl>
+ */
+ protected void skipSpecialTag(int bracketLevel)
+ throws IOException
+ {
+ int tagLevel = 1; // <
+ char stringDelimiter = '\0';
+ if (bracketLevel == 0) {
+ char ch = this.readChar();
+ if (ch == '[') {
+ bracketLevel += 1;
+ } else if (ch == '-') {
+ ch = this.readChar();
+ if (ch == '[') {
+ bracketLevel += 1;
+ } else if (ch == ']') {
+ bracketLevel -= 1;
+ } else if (ch == '-') {
+ this.skipComment();
+ return;
+ }
+ }
+ }
+ while (tagLevel > 0) {
+ char ch = this.readChar();
+ if (stringDelimiter == '\0') {
+ if ((ch == '"') || (ch == '\'')) {
+ stringDelimiter = ch;
+ } else if (bracketLevel <= 0) {
+ if (ch == '<') {
+ tagLevel += 1;
+ } else if (ch == '>') {
+ tagLevel -= 1;
+ }
+ }
+ if (ch == '[') {
+ bracketLevel += 1;
+ } else if (ch == ']') {
+ bracketLevel -= 1;
+ }
+ } else {
+ if (ch == stringDelimiter) {
+ stringDelimiter = '\0';
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Scans the data for literal text.
+ * Scanning stops when a character does not match or after the complete
+ * text has been checked, whichever comes first.
+ *
+ * @param literal the literal to check.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>literal != null</code>
+ * </ul></dd></dl>
+ */
+ protected boolean checkLiteral(String literal)
+ throws IOException
+ {
+ int length = literal.length();
+ for (int i = 0; i < length; i += 1) {
+ if (this.readChar() != literal.charAt(i)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ /**
+ * Reads a character from a reader.
+ */
+ protected char readChar()
+ throws IOException
+ {
+ if (this.charReadTooMuch != '\0') {
+ char ch = this.charReadTooMuch;
+ this.charReadTooMuch = '\0';
+ return ch;
+ } else {
+ int i = this.reader.read();
+ if (i < 0) {
+ throw this.unexpectedEndOfData();
+ } else if (i == 10) {
+ this.parserLineNr += 1;
+ return '\n';
+ } else {
+ return (char) i;
+ }
+ }
+ }
+
+
+ /**
+ * Scans an XML element.
+ *
+ * @param elt The element that will contain the result.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li>The first &lt; has already been read.
+ * <li><code>elt != null</code>
+ * </ul></dd></dl>
+ */
+ protected void scanElement(XMLElement elt)
+ throws IOException
+ {
+ StringBuffer buf = new StringBuffer();
+ this.scanIdentifier(buf);
+ String name = buf.toString();
+ elt.setName(name);
+ char ch = this.scanWhitespace();
+ while ((ch != '>') && (ch != '/')) {
+ buf.setLength(0);
+ this.unreadChar(ch);
+ this.scanIdentifier(buf);
+ String key = buf.toString();
+ ch = this.scanWhitespace();
+ if (ch != '=') {
+ throw this.expectedInput("=");
+ }
+ this.unreadChar(this.scanWhitespace());
+ buf.setLength(0);
+ this.scanString(buf);
+ elt.setAttribute(key, buf);
+ ch = this.scanWhitespace();
+ }
+ if (ch == '/') {
+ ch = this.readChar();
+ if (ch != '>') {
+ throw this.expectedInput(">");
+ }
+ return;
+ }
+ buf.setLength(0);
+ ch = this.scanWhitespace(buf);
+ if (ch != '<') {
+ this.unreadChar(ch);
+ this.scanPCData(buf);
+ } else {
+ for (;;) {
+ ch = this.readChar();
+ if (ch == '!') {
+ if (this.checkCDATA(buf)) {
+ this.scanPCData(buf);
+ break;
+ } else {
+ ch = this.scanWhitespace(buf);
+ if (ch != '<') {
+ this.unreadChar(ch);
+ this.scanPCData(buf);
+ break;
+ }
+ }
+ } else {
+ buf.setLength(0);
+ break;
+ }
+ }
+ }
+ if (buf.length() == 0) {
+ while (ch != '/') {
+ if (ch == '!') {
+ ch = this.readChar();
+ if (ch != '-') {
+ throw this.expectedInput("Comment or Element");
+ }
+ ch = this.readChar();
+ if (ch != '-') {
+ throw this.expectedInput("Comment or Element");
+ }
+ this.skipComment();
+ } else {
+ this.unreadChar(ch);
+ XMLElement child = this.createAnotherElement();
+ this.scanElement(child);
+ elt.addChild(child);
+ }
+ ch = this.scanWhitespace();
+ if (ch != '<') {
+ throw this.expectedInput("<");
+ }
+ ch = this.readChar();
+ }
+ this.unreadChar(ch);
+ } else {
+ if (this.ignoreWhitespace) {
+ elt.setContent(buf.toString().trim());
+ } else {
+ elt.setContent(buf.toString());
+ }
+ }
+ ch = this.readChar();
+ if (ch != '/') {
+ throw this.expectedInput("/");
+ }
+ this.unreadChar(this.scanWhitespace());
+ if (! this.checkLiteral(name)) {
+ throw this.expectedInput(name);
+ }
+ if (this.scanWhitespace() != '>') {
+ throw this.expectedInput(">");
+ }
+ }
+
+
+ /**
+ * Resolves an entity. The name of the entity is read from the reader.
+ * The value of the entity is appended to <code>buf</code>.
+ *
+ * @param buf Where to put the entity value.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li>The first &amp; has already been read.
+ * <li><code>buf != null</code>
+ * </ul></dd></dl>
+ */
+ protected void resolveEntity(StringBuffer buf)
+ throws IOException
+ {
+ char ch = '\0';
+ StringBuffer keyBuf = new StringBuffer();
+ for (;;) {
+ ch = this.readChar();
+ if (ch == ';') {
+ break;
+ }
+ keyBuf.append(ch);
+ }
+ String key = keyBuf.toString();
+ if (key.charAt(0) == '#') {
+ try {
+ if (key.charAt(1) == 'x') {
+ ch = (char) Integer.parseInt(key.substring(2), 16);
+ } else {
+ ch = (char) Integer.parseInt(key.substring(1), 10);
+ }
+ } catch (NumberFormatException e) {
+ throw this.unknownEntity(key);
+ }
+ buf.append(ch);
+ } else {
+ char[] value = (char[]) this.entities.get(key);
+ if (value == null) {
+ throw this.unknownEntity(key);
+ }
+ buf.append(value);
+ }
+ }
+
+
+ /**
+ * Pushes a character back to the read-back buffer.
+ *
+ * @param ch The character to push back.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li>The read-back buffer is empty.
+ * <li><code>ch != '\0'</code>
+ * </ul></dd></dl>
+ */
+ protected void unreadChar(char ch)
+ {
+ this.charReadTooMuch = ch;
+ }
+
+
+ /**
+ * Creates a parse exception for when an invalid valueset is given to
+ * a method.
+ *
+ * @param name The name of the entity.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException invalidValueSet(String name)
+ {
+ String msg = "Invalid value set (entity name = \"" + name + "\")";
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+
+ /**
+ * Creates a parse exception for when an invalid value is given to a
+ * method.
+ *
+ * @param name The name of the entity.
+ * @param value The value of the entity.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * <li><code>value != null</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException invalidValue(String name,
+ String value)
+ {
+ String msg = "Attribute \"" + name + "\" does not contain a valid "
+ + "value (\"" + value + "\")";
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+
+ /**
+ * Creates a parse exception for when the end of the data input has been
+ * reached.
+ */
+ protected XMLParseException unexpectedEndOfData()
+ {
+ String msg = "Unexpected end of data reached";
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+
+ /**
+ * Creates a parse exception for when a syntax error occured.
+ *
+ * @param context The context in which the error occured.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>context != null</code>
+ * <li><code>context.length() &gt; 0</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException syntaxError(String context)
+ {
+ String msg = "Syntax error while parsing " + context;
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+
+ /**
+ * Creates a parse exception for when the next character read is not
+ * the character that was expected.
+ *
+ * @param charSet The set of characters (in human readable form) that was
+ * expected.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>charSet != null</code>
+ * <li><code>charSet.length() &gt; 0</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException expectedInput(String charSet)
+ {
+ String msg = "Expected: " + charSet;
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+ /**
+ * Creates a parse exception for when the next character read is not
+ * the character that was expected.
+ *
+ * @param charSet The set of characters (in human readable form) that was
+ * expected.
+ * @param ch The character that was received instead.
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>charSet != null</code>
+ * <li><code>charSet.length() &gt; 0</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException expectedInput(String charSet, char ch)
+ {
+ String msg = "Expected: '" + charSet +"'" + " but got: '" + ch + "'";
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+ /**
+ * Creates a parse exception for when an entity could not be resolved.
+ *
+ * @param name The name of the entity.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>name != null</code>
+ * <li><code>name.length() &gt; 0</code>
+ * </ul></dd></dl>
+ */
+ protected XMLParseException unknownEntity(String name)
+ {
+ String msg = "Unknown or invalid entity: &" + name + ";";
+ return new XMLParseException(this.getName(), this.parserLineNr, msg);
+ }
+
+ /**
+ * Reads an xml file and removes the comments, leaving only relevant
+ * xml code.
+ *
+ * @param isr The reader of the InputStream containing the xml.
+ * @param pout The PipedOutputStream that will be receiving the filtered
+ * xml file.
+ */
+ public void sanitizeInput(InputStreamReader isr, PipedOutputStream pout) {
+ try {
+ PrintStream out = new PrintStream(pout);
+
+ this.sanitizeCharReadTooMuch = '\0';
+ this.reader = isr;
+ this.parserLineNr = 0;
+ int newline = 2;
+ char prev = ' ';
+
+ while(true) {
+ char ch;
+ if (this.sanitizeCharReadTooMuch != '\0') {
+ ch = this.sanitizeCharReadTooMuch;
+ this.sanitizeCharReadTooMuch = '\0';
+ } else {
+
+ int i = this.reader.read();
+ if (i == -1) {
+ // no character in buffer, and nothing read
+ out.flush();
+ break;
+ } else if (i == 10) {
+ ch = '\n';
+ } else {
+ ch = (char) i;
+ }
+ }
+
+ char next;
+ int i = this.reader.read();
+ if (i == -1) {
+ // character in buffer and nothing read. write out
+ // what's in the buffer
+ out.print(ch);
+ out.flush();
+ break;
+ } else if (i == 10) {
+ next = '\n';
+ } else {
+ next = (char) i;
+ }
+
+ this.sanitizeCharReadTooMuch = next;
+
+ // If the next char is a ? or !, then we've hit a special tag,
+ // and should skip it.
+ if (prev == '<' && (next == '!' || next == '?')) {
+ this.skipSpecialTag(0);
+ this.sanitizeCharReadTooMuch = '\0';
+ }
+ // Otherwise we haven't hit a comment, and we should write ch.
+ else {
+ out.print(ch);
+ }
+ prev = next;
+ }
+
+ out.close();
+ isr.close();
+ } catch (Exception e) {
+ // Print the stack trace here -- xml.parseFromReader() will
+ // throw the ParseException if something goes wrong.
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/net/sourceforge/nanoxml/XMLParseException.java b/net/sourceforge/nanoxml/XMLParseException.java
new file mode 100644
index 00000000..2ab3b964
--- /dev/null
+++ b/net/sourceforge/nanoxml/XMLParseException.java
@@ -0,0 +1,134 @@
+
+/* XMLParseException.java
+ *
+ * $Revision: 1.1 $
+ * $Date: 2008/11/14 19:51:41 $
+ * $Name: $
+ *
+ * This file is part of NanoXML 2 Lite.
+ * Copyright (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied warranty.
+ * In no event will the authors be held liable for any damages arising from the
+ * use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software in
+ * a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source distribution.
+ *****************************************************************************/
+
+/*
+ * Note : this is a copy of nanoxml-lite sources from icedtea6-1.3.1.tar.gz, under the directory rt/net/sourceforge/nanoxml
+ */
+
+package net.sourceforge.nanoxml;
+
+
+/**
+ * An XMLParseException is thrown when an error occures while parsing an XML
+ * string.
+ * <P>
+ * $Revision: 1.1 $<BR>
+ * $Date: 2008/11/14 19:51:41 $<P>
+ *
+ * @see net.sourceforge.nanoxml.XMLElement
+ *
+ * @author Marc De Scheemaecker
+ * @version $Name: $, $Revision: 1.1 $
+ */
+public class XMLParseException
+ extends RuntimeException
+{
+
+ /**
+ * Indicates that no line number has been associated with this exception.
+ */
+ public static final int NO_LINE = -1;
+
+
+ /**
+ * The line number in the source code where the error occurred, or
+ * <code>NO_LINE</code> if the line number is unknown.
+ *
+ * <dl><dt><b>Invariants:</b></dt><dd>
+ * <ul><li><code>lineNr &gt 0 || lineNr == NO_LINE</code>
+ * </ul></dd></dl>
+ */
+ private int lineNr;
+
+
+ /**
+ * Creates an exception.
+ *
+ * @param name The name of the element where the error is located.
+ * @param message A message describing what went wrong.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>message != null</code>
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>getLineNr() => NO_LINE
+ * </ul></dd></dl><dl>
+ */
+ public XMLParseException(String name,
+ String message)
+ {
+ super("XML Parse Exception during parsing of "
+ + ((name == null) ? "the XML definition"
+ : ("a " + name + " element"))
+ + ": " + message);
+ this.lineNr = XMLParseException.NO_LINE;
+ }
+
+
+ /**
+ * Creates an exception.
+ *
+ * @param name The name of the element where the error is located.
+ * @param lineNr The number of the line in the input.
+ * @param message A message describing what went wrong.
+ *
+ * </dl><dl><dt><b>Preconditions:</b></dt><dd>
+ * <ul><li><code>message != null</code>
+ * <li><code>lineNr &gt; 0</code>
+ * </ul></dd></dl>
+ *
+ * <dl><dt><b>Postconditions:</b></dt><dd>
+ * <ul><li>getLineNr() => lineNr
+ * </ul></dd></dl><dl>
+ */
+ public XMLParseException(String name,
+ int lineNr,
+ String message)
+ {
+ super("XML Parse Exception during parsing of "
+ + ((name == null) ? "the XML definition"
+ : ("a " + name + " element"))
+ + " at line " + lineNr + ": " + message);
+ this.lineNr = lineNr;
+ }
+
+
+ /**
+ * Where the error occurred, or <code>NO_LINE</code> if the line number is
+ * unknown.
+ *
+ * @see net.sourceforge.nanoxml.XMLParseException#NO_LINE
+ */
+ public int getLineNr()
+ {
+ return this.lineNr;
+ }
+
+}
diff --git a/num-class b/num-class
new file mode 100644
index 00000000..fdc64912
--- /dev/null
+++ b/num-class
@@ -0,0 +1 @@
+2186
diff --git a/num-java b/num-java
new file mode 100644
index 00000000..e41f31b3
--- /dev/null
+++ b/num-java
@@ -0,0 +1 @@
+5907
diff --git a/raftmpfile b/raftmpfile
new file mode 100644
index 00000000..fb413f93
--- /dev/null
+++ b/raftmpfile
Binary files differ
diff --git a/tmpfile b/tmpfile
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tmpfile
diff --git a/utf8test.out b/utf8test.out
new file mode 100644
index 00000000..0e8ea1fd
--- /dev/null
+++ b/utf8test.out
@@ -0,0 +1,2 @@
+This is the first line of text
+This has some ǿꀀ晦Ȁ weird characters